From f4ebdb294fab49a4c6b6ad2cf171489a368aa2e1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Jan 2023 09:17:40 -0500 Subject: [PATCH 01/73] Megatron positional encoding alibi fix (#5808) (#5863) * 1. Debugging. * 1. Debugging. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * 1. Debugging. * 1. Debugging. * 1. Fixed initialization. Signed-off-by: Micha Livne * 1. Debugging. * 1. Debugging. * 1. Debugging. * 1. Debugging. * 1. Debugging. * 1. Debugging. * 1. Debugging. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * 1. Debugging. * 1. Removed scale from ALiBi. Signed-off-by: Micha Livne * 1. Updated yaml and added support to control number of alibi heads. Signed-off-by: Micha Livne * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * 1. Removed num_attention_heads_alibi from configs. Signed-off-by: Micha Livne Signed-off-by: Micha Livne Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Micha Livne Signed-off-by: Micha Livne Co-authored-by: Micha Livne Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Micha Livne Signed-off-by: Jason --- .../conf/megatron_model_base_config.yaml | 2 +- .../alibi_relative_position_embedding.py | 26 +++++++++++-------- .../megatron/token_level_encoder_decoder.py | 4 +-- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/examples/nlp/language_modeling/conf/megatron_model_base_config.yaml b/examples/nlp/language_modeling/conf/megatron_model_base_config.yaml index 712571f3222f..a1dd20c5c468 100644 --- a/examples/nlp/language_modeling/conf/megatron_model_base_config.yaml +++ b/examples/nlp/language_modeling/conf/megatron_model_base_config.yaml @@ -6,7 +6,7 @@ init_method_std: 0.02 # Standard deviation of the zero mean normal distribution hidden_dropout: 0.1 # Dropout probability for hidden state transformer. attention_dropout: 0.1 # Dropout probability in the attention layer. ffn_dropout: 0.0 # Dropout probability in the feed-forward layer. -position_embedding_type: 'learned_absolute' # Position embedding type. Options ['learned_absolute', 'relative'] +position_embedding_type: 'learned_absolute' # Position embedding type. Options ['learned_absolute', 'relative', 'alibi'] relative_attention_num_buckets: 32 # Relative position number of buckets for computing the bias relative_attention_max_distance: 128 # max_distance to keep relative distance in the attention_num_buckets. relative_position_bias_self_attention_only: True # whether to only use relative position bias for self attention only. diff --git a/nemo/collections/nlp/modules/common/megatron/alibi_relative_position_embedding.py b/nemo/collections/nlp/modules/common/megatron/alibi_relative_position_embedding.py index 6b16e0e6d921..4f5abd96743b 100644 --- a/nemo/collections/nlp/modules/common/megatron/alibi_relative_position_embedding.py +++ b/nemo/collections/nlp/modules/common/megatron/alibi_relative_position_embedding.py @@ -38,11 +38,13 @@ def get_slopes_power_of_2(n): return slopes -def build_slopes(num_attention_heads, alibi_num_heads): +def build_slopes(num_attention_heads, num_attention_heads_alibi): """ Builds a slopes tensor. """ - slopes = torch.Tensor(get_slopes(alibi_num_heads) + [0] * (num_attention_heads - alibi_num_heads)).cuda() + slopes = torch.Tensor( + get_slopes(num_attention_heads_alibi) + [0] * (num_attention_heads - num_attention_heads_alibi) + ).cuda() return slopes.unsqueeze(-1).unsqueeze(-1) @@ -65,23 +67,25 @@ class ALiBiRelativePositionEmbedding(torch.nn.Module): Based on https://arxiv.org/bas/2108.12409 """ - def __init__(self, bidirectional, num_attention_heads, layer_type, alibi_num_heads=None, max_seq_len=512): + def __init__( + self, bidirectional, num_attention_heads, layer_type, num_attention_heads_alibi=None, max_seq_len=512 + ): """ Args: bidirectional: Whether to use bidirectional relative position embedding num_attention_heads: Number of attention heads layer_type: Layer type. Can be one of [LayerType.encoder or LayerType.decoder]. Willdetermine the bias construction - alibi_num_heads: Number of attention heads for which alibi bias will be used + num_attention_heads_alibi: Number of attention heads for which alibi bias will be used max_seq_len: Maximum sequence length for precomputed relative positions. Larger sizes will result in more memory usage by computing alibi mask on-the-fly. """ super().__init__() - if alibi_num_heads is None: - alibi_num_heads = num_attention_heads + if (num_attention_heads_alibi is None) or (num_attention_heads_alibi <= 0): + num_attention_heads_alibi = num_attention_heads - if alibi_num_heads > num_attention_heads: + if num_attention_heads_alibi > num_attention_heads: raise ValueError( - f"alibi_num_heads ({alibi_num_heads}) cannot be larger than num_attention_heads ({num_attention_heads})" + f"num_attention_heads_alibi ({num_attention_heads_alibi}) cannot be larger than num_attention_heads ({num_attention_heads})" ) self.bidirectional = bidirectional @@ -90,12 +94,12 @@ def __init__(self, bidirectional, num_attention_heads, layer_type, alibi_num_hea self.layer_type = layer_type # define the size of pre-computed relative position slopes. # define the number of attention heads for which alibi mask will be pre-computed (the rest are disabled). - self.alibi_num_heads = alibi_num_heads + self.num_attention_heads_alibi = num_attention_heads_alibi # Larger sizes will result in more memory usage by computing alibi mask on-the-fly. self.max_seq_len = max_seq_len # cache the slopes - self.slopes = build_slopes(num_attention_heads, alibi_num_heads) + self.slopes = build_slopes(num_attention_heads, num_attention_heads_alibi) # cache the relative position bias. shape (num_attention_heads, max_seq_len, max_seq_len) self.relative_position = build_relative_position(max_seq_len, max_seq_len, num_attention_heads) @@ -113,4 +117,4 @@ def forward(self, query_seq_length, key_seq_length): relative_position = torch.tril(relative_position) # shape (1, num_heads, query_length, key_length) - return relative_position.unsqueeze(0) * self.slopes + return -relative_position.unsqueeze(0) * self.slopes diff --git a/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py b/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py index 2fc06952e7d8..68ca6460a4c0 100644 --- a/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py +++ b/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py @@ -162,7 +162,7 @@ def __init__( bidirectional=True, num_attention_heads=encoder_cfg.num_attention_heads, layer_type=LayerType.encoder, - alibi_num_heads=None, + num_attention_heads_alibi=None, max_seq_len=max_position_embeddings, ) self._encoder_relative_position_embedding_key = "encoder_relative_position_embedding" @@ -282,7 +282,7 @@ def __init__( bidirectional=False, num_attention_heads=decoder_cfg.num_attention_heads, layer_type=LayerType.decoder, - alibi_num_heads=None, + num_attention_heads_alibi=None, max_seq_len=max_position_embeddings, ) self._decoder_relative_position_embedding_key = "decoder_relative_position_embedding" From c8b9efb8b5fa4411917645bb226987460a79bf21 Mon Sep 17 00:00:00 2001 From: Matvei Novikov Date: Thu, 26 Jan 2023 22:06:34 +0400 Subject: [PATCH 02/73] Fix segmenting for pcla inference (#5849) * Fix segmenting for pcla inference Signed-off-by: Matvei Novikov * Fix segmenting for pcla inference Signed-off-by: Matvei Novikov * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Signed-off-by: Matvei Novikov Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- .../nlp/token_classification/punctuate_capitalize_infer.py | 4 ++-- .../punctuation_capitalization_infer_dataset.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/examples/nlp/token_classification/punctuate_capitalize_infer.py b/examples/nlp/token_classification/punctuate_capitalize_infer.py index 3ead57a8ddb4..8fdb3ab5a1ed 100644 --- a/examples/nlp/token_classification/punctuate_capitalize_infer.py +++ b/examples/nlp/token_classification/punctuate_capitalize_infer.py @@ -36,7 +36,7 @@ --input_manifest \ --output_manifest \ --use_audio - + is a path to NeMo ASR manifest. Usually it is an output of NeMo/examples/asr/transcribe_speech.py but can be a manifest with 'text' key. Alternatively you can use @@ -55,7 +55,7 @@ def get_args() -> argparse.Namespace: formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="The script is for restoring punctuation and capitalization in text or text and audio. To use text and audio use '--use_audio'. Long strings are split into " "segments of length `--max_seq_length`. `--max_seq_length` is the length which includes [CLS] and [SEP] " - "tokens. Long audios are split into segments of length 4000*`--max_seq_length`. Parameter `--step` controls segments overlapping. `--step` is a distance between beginnings of " + "tokens. If `--use_audio` is set, samples with texts longer than `--max_seq_length` will be ignored. Parameter `--step` controls segments overlapping. `--step` is a distance between beginnings of " "consequent segments. Model outputs for tokens near the borders of tensors are less accurate and can be " "discarded before final predictions computation. Parameter `--margin` is number of discarded outputs near " "segments borders. Probabilities of tokens in overlapping parts of segments multiplied before selecting the " diff --git a/nemo/collections/nlp/data/token_classification/punctuation_capitalization_infer_dataset.py b/nemo/collections/nlp/data/token_classification/punctuation_capitalization_infer_dataset.py index ab95f02c0c24..570c672f405e 100644 --- a/nemo/collections/nlp/data/token_classification/punctuation_capitalization_infer_dataset.py +++ b/nemo/collections/nlp/data/token_classification/punctuation_capitalization_infer_dataset.py @@ -132,6 +132,9 @@ def get_features_infer( for q_i, (query_st, query_audio) in enumerate(zip(st, audios)): q_inp_ids, q_segment_ids, q_subtokens_mask, q_inp_mask, q_quantities_of_preceding_words = [], [], [], [], [] q_audio_queries, q_audio_lengths = [], [] + if query_audio and length < len(query_st): + logging.info(f'Ignoring query with id {q_i}') + continue for i in range(0, max(len(query_st), length) - length + step, step): subtokens = [tokenizer.cls_token] + query_st[i : i + length] + [tokenizer.sep_token] q_inp_ids.append(tokenizer.tokens_to_ids(subtokens)) @@ -140,7 +143,7 @@ def get_features_infer( q_inp_mask.append([True] * len(subtokens)) q_quantities_of_preceding_words.append(np.count_nonzero(stm[q_i][:i])) if query_audio: - samples = query_audio.samples[i * 4000 : (i + length) * 4000] + samples = query_audio.samples q_audio_queries.append(samples) q_audio_lengths.append(len(samples)) all_input_ids.append(q_inp_ids) From e4c108537b55d1fdfaa2e92fc48cdda6b7bfaf02 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Jan 2023 11:48:19 -0800 Subject: [PATCH 03/73] indentation fix (#5861) (#5862) Signed-off-by: nithinraok Signed-off-by: nithinraok Signed-off-by: nithinraok Co-authored-by: Nithin Rao Signed-off-by: Jason --- tutorials/asr/Voice_Activity_Detection.ipynb | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/asr/Voice_Activity_Detection.ipynb b/tutorials/asr/Voice_Activity_Detection.ipynb index 64ec9e5b3d96..3813152e5d5f 100644 --- a/tutorials/asr/Voice_Activity_Detection.ipynb +++ b/tutorials/asr/Voice_Activity_Detection.ipynb @@ -1097,6 +1097,7 @@ "pred = pred.squeeze()\n", "metric = ConfusionMatrix(num_classes=2, task='binary')\n", "metric(pred, labels)\n", + "# confusion_matrix(preds=pred, target=labels)" ] }, { From f5ea3b4f7e9e433b2df01b771bc0f58f495de517 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Jan 2023 16:51:16 -0800 Subject: [PATCH 04/73] add ambernet to readme (#5872) (#5873) Signed-off-by: fayejf <36722593+fayejf@users.noreply.github.com> Signed-off-by: fayejf <36722593+fayejf@users.noreply.github.com> Signed-off-by: fayejf <36722593+fayejf@users.noreply.github.com> Co-authored-by: fayejf <36722593+fayejf@users.noreply.github.com> Signed-off-by: Jason --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 0c603a62cf6a..381d6a4e6030 100644 --- a/README.rst +++ b/README.rst @@ -70,7 +70,7 @@ Key Features * `Language Modelling for ASR `_: N-gram LM in fusion with Beam Search decoding, Neural Rescoring with Transformer * Streaming and Buffered ASR (CTC/Transducer) - `Chunked Inference Examples `_ * `Support of long audios for Conformer with memory efficient local attention `_ - * `Speech Classification and Speech Command Recognition `_: MatchboxNet (Command Recognition) + * `Speech Classification, Speech Command Recognition and Language Identification `_: MatchboxNet (Command Recognition), AmberNet (LangID) * `Voice activity Detection (VAD) `_: MarbleNet * ASR with VAD Inference - `Example `_ * `Speaker Recognition `_: TitaNet, ECAPA_TDNN, SpeakerNet From 99de963cddf154fd40f97736f2e13821f47c7514 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:32:58 -0800 Subject: [PATCH 05/73] Fix wrong label mapping in batch_inference for label_model (#5767) (#5870) * fix batch inference * add test for batch * fix device Signed-off-by: fayejf Co-authored-by: fayejf <36722593+fayejf@users.noreply.github.com> Signed-off-by: Jason --- nemo/collections/asr/models/label_models.py | 4 +++- .../asr/test_speaker_label_models.py | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/nemo/collections/asr/models/label_models.py b/nemo/collections/asr/models/label_models.py index 000c9a976c2d..0191fbd0ba00 100644 --- a/nemo/collections/asr/models/label_models.py +++ b/nemo/collections/asr/models/label_models.py @@ -558,7 +558,9 @@ def batch_inference(self, manifest_filepath, batch_size=32, sample_rate=16000, d mapped_labels = list(mapped_labels) featurizer = WaveformFeaturizer(sample_rate=sample_rate) - dataset = AudioToSpeechLabelDataset(manifest_filepath=manifest_filepath, labels=None, featurizer=featurizer) + dataset = AudioToSpeechLabelDataset( + manifest_filepath=manifest_filepath, labels=mapped_labels, featurizer=featurizer + ) dataloader = torch.utils.data.DataLoader( dataset=dataset, batch_size=batch_size, collate_fn=dataset.fixed_seq_collate_fn, diff --git a/tests/collections/asr/test_speaker_label_models.py b/tests/collections/asr/test_speaker_label_models.py index 92c0d3a53e90..8de3c5bc0813 100644 --- a/tests/collections/asr/test_speaker_label_models.py +++ b/tests/collections/asr/test_speaker_label_models.py @@ -12,10 +12,13 @@ # See the License for the specific language governing permissions and # limitations under the License. +import json import os +import tempfile from unittest import TestCase import pytest +import torch from omegaconf import DictConfig from nemo.collections.asr.models import EncDecSpeakerLabelModel @@ -170,3 +173,22 @@ def test_pretrained_ambernet_logits(self, test_data_dir): label = lang_model.get_label(filename) assert label == "en" + + @pytest.mark.unit + def test_pretrained_ambernet_logits_batched(self, test_data_dir): + model_name = 'langid_ambernet' + lang_model = EncDecSpeakerLabelModel.from_pretrained(model_name) + relative_filepath = "an4_speaker/an4/wav/an4_clstk/fash/an255-fash-b.wav" + filename = os.path.join(test_data_dir, relative_filepath) + device = 'cuda' if torch.cuda.is_available() else 'cpu' + + with tempfile.TemporaryDirectory() as tmpdir: + temp_manifest = os.path.join(tmpdir, 'manifest.json') + with open(temp_manifest, 'w', encoding='utf-8') as fp: + entry = {"audio_filepath": filename, "duration": 4.5, "label": 'en'} + fp.write(json.dumps(entry) + '\n') + + embs, logits, gt_labels, mapped_labels = lang_model.batch_inference(temp_manifest, device=device) + pred_label = mapped_labels[logits.argmax(axis=-1)[0]] + true_label = mapped_labels[gt_labels[0]] + assert pred_label == true_label From 2b2064d26f553cb74d7a08fdf985bbbb46e1e5b5 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Fri, 27 Jan 2023 19:30:55 -0800 Subject: [PATCH 06/73] WAR for https://github.com/pytorch/pytorch/pull/91526 Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/models/radtts.py | 4 +- nemo/collections/tts/modules/common.py | 55 ++++++++++--------- nemo/collections/tts/modules/radtts.py | 10 +++- tests/collections/tts/test_tts_exportables.py | 6 +- 4 files changed, 45 insertions(+), 30 deletions(-) diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index e303c924f4b2..95202316c01f 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -448,7 +448,7 @@ def input_example(self, max_batch=1, max_dim=400): pitch = torch.randn(sz, device=par.device, dtype=torch.float32) * 0.5 pace = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.01) volume = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.01) - # batch_lengths = torch.zeros((max_batch + 1), device=par.device, dtype=torch.int32) + # batch_lengths = torch.zeros((max_batch + 1), device=par.device, dtype=torch.int64) # left_over_size = sz[0] # batch_lengths[0] = 0 # for i in range(1, max_batch): @@ -471,7 +471,7 @@ def input_example(self, max_batch=1, max_dim=400): len_i = random.randint(3, max_dim) lens.append(len_i) inp[i, len_i:] = pad_id - lens = torch.tensor(lens, device=par.device, dtype=torch.int) + lens = torch.tensor(lens, device=par.device, dtype=torch.int64) inputs = { 'text': inp, diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 0c3dbed24e84..317f41f08bad 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -82,35 +82,34 @@ def __init__(self, input_size, hidden_size, num_layers=1, lstm_norm_fn="spectral self.bilstm.flatten_parameters() - def lstm_tensor(self, context: Tensor, lens: Tensor, enforce_sorted: bool = False) -> Tuple[Tensor, Tensor]: - seq = nn.utils.rnn.pack_padded_sequence( - context, lens.long().cpu(), batch_first=True, enforce_sorted=enforce_sorted - ) - return self.lstm_sequence(seq) + def lstm_sequence(self, context: Tensor, lens: Tensor) -> Tensor: + self.bilstm.flatten_parameters() + context, lens, unsort_ids = sort_tensor(context, lens) + seq = nn.utils.rnn.pack_padded_sequence(context, lens.long().cpu(), batch_first=True, enforce_sorted=True) + ret, _ = self.bilstm(seq) + return nn.utils.rnn.pad_packed_sequence(ret, batch_first=True)[0][unsort_ids] - def lstm_sequence(self, seq: PackedSequence) -> Tuple[Tensor, Tensor]: - if not (torch.jit.is_scripting() or torch.jit.is_tracing()): - self.bilstm.flatten_parameters() - ret, _ = self.bilstm(seq) - else: + def lstm_tensor(self, context: Tensor) -> Tensor: + dtype = context.dtype + # this is only needed for Torchscript to run in Triton + # (https://github.com/pytorch/pytorch/issues/89241) + with torch.cuda.amp.autocast(enabled=False): # Calculate sizes and prepare views to our zero buffer to pass as hx - max_batch_size = seq.batch_sizes[0] + context = context.to(dtype=torch.float32) + max_batch_size = context.shape[0] common_shape = (self.bilstm.num_layers * 2, max_batch_size) hx = ( - seq.data.new_zeros(*common_shape, self.real_hidden_size), - seq.data.new_zeros(*common_shape, self.bilstm.hidden_size), + context.new_zeros(*common_shape, self.real_hidden_size), + context.new_zeros(*common_shape, self.bilstm.hidden_size), ) - ret, _ = self.bilstm(seq, hx) - return nn.utils.rnn.pad_packed_sequence(ret, batch_first=True) + ret, _ = self.bilstm(context, hx=hx) + return ret.to(dtype=dtype) - def forward(self, context: Tensor, lens: Tensor) -> Tensor: - context, lens, unsort_ids = sort_tensor(context, lens) - dtype = context.dtype - # this is only needed for Torchscript to run in Triton - # (https://github.com/pytorch/pytorch/issues/89241) - with torch.cuda.amp.autocast(enabled=False): - ret = self.lstm_tensor(context.to(dtype=torch.float32), lens, enforce_sorted=True) - return ret[0].to(dtype=dtype)[unsort_ids] + def forward(self, context: Tensor, lens: Optional[Tensor] = None) -> Tensor: + if lens is None: + return self.lstm_tensor(context) + else: + return self.lstm_sequence(context, lens) class ConvLSTMLinear(nn.Module): @@ -158,13 +157,17 @@ def __init__( self.dense = nn.Linear(n_channels, out_dim) def forward(self, context: Tensor, lens: Tensor) -> Tensor: - mask = get_mask_from_lengths(lens, context) + mask = get_mask_from_lengths(lens) mask = mask.to(dtype=context.dtype).unsqueeze(1) + context = context[:, :, : mask.shape[-1]] for conv in self.convolutions: context = self.dropout(F.relu(conv(context, mask))) - context = context.transpose(1, 2) # Apply Bidirectional LSTM - context = self.bilstm(context, lens) + # borisf : WAR for https://github.com/pytorch/pytorch/pull/91526 + if torch.jit.is_scripting() or torch.jit.is_tracing(): + context = self.bilstm((context * mask).transpose(1, 2)) + else: + context = self.bilstm(context.transpose(1, 2), lens=lens) if self.dense is not None: context = self.dense(context).permute(0, 2, 1) return context diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 8638d84ce84d..c571f77ed7e9 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -342,6 +342,12 @@ def preprocess_context(self, context, speaker_vecs, out_lens, f0, energy_avg, as context_w_spkvec = torch.cat((context_w_spkvec, energy_avg), 1) unfolded_out_lens = out_lens // self.n_group_size + # borisf : WAR for https://github.com/pytorch/pytorch/pull/91526 + if torch.jit.is_scripting() or torch.jit.is_tracing(): + mask = get_mask_from_lengths(unfolded_out_lens).unsqueeze(1) + context_w_spkvec = context_w_spkvec * mask + unfolded_out_lens = None + context_lstm_padded_output = self.context_lstm(context_w_spkvec.transpose(1, 2), unfolded_out_lens) context_w_spkvec = context_lstm_padded_output.transpose(1, 2) @@ -602,7 +608,9 @@ def infer( batch_size = text.shape[0] n_tokens = text.shape[1] if in_lens is None: - in_lens = text.new_ones((batch_size,), dtype=torch.int) * n_tokens + in_lens = text.new_ones((batch_size,), dtype=torch.int64) * n_tokens + else: + in_lens = in_lens.to(dtype=torch.int64) spk_vec = self.encode_speaker(speaker_id) if speaker_id_text is None: speaker_id_text = speaker_id diff --git a/tests/collections/tts/test_tts_exportables.py b/tests/collections/tts/test_tts_exportables.py index 023f542551ca..bcad28a90fd9 100644 --- a/tests/collections/tts/test_tts_exportables.py +++ b/tests/collections/tts/test_tts_exportables.py @@ -96,5 +96,9 @@ def test_RadTTSModel_export_to_onnx(self, radtts_model): input_example1 = model.input_module.input_example(max_batch=3, max_dim=776) input_example2 = model.input_module.input_example(max_batch=16, max_dim=998) model.export( - output=filename, input_example=input_example1, verbose=True, check_trace=[input_example2], + output=filename, + input_example=input_example1, + verbose=True, + check_trace=[input_example2], + onnx_opset_version=14, ) From 6fdd9f351435123e7c86693609323d8eeb522deb Mon Sep 17 00:00:00 2001 From: "He Huang (Steve)" <105218074+stevehuang52@users.noreply.github.com> Date: Fri, 27 Jan 2023 17:29:04 -0500 Subject: [PATCH 07/73] Fix memory allocation of NeMo Multi-speaker Data Simulator (#5864) * fix data simulator Signed-off-by: stevehuang52 * update Signed-off-by: stevehuang52 * update Signed-off-by: stevehuang52 * Adding noise_manifest handling for faster speed Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added multi-gpu feature Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added a parameter for noise source file number Signed-off-by: Taejin Park * Fixed noise_manifest error bug Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: stevehuang52 Signed-off-by: Taejin Park Co-authored-by: Taejin Park Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- nemo/collections/asr/data/data_simulation.py | 311 +++++++++++++----- .../conf/data_simulator.yaml | 1 + .../multispeaker_simulator.py | 26 +- 3 files changed, 247 insertions(+), 91 deletions(-) diff --git a/nemo/collections/asr/data/data_simulation.py b/nemo/collections/asr/data/data_simulation.py index a6bee3e4efca..324f609f37f1 100644 --- a/nemo/collections/asr/data/data_simulation.py +++ b/nemo/collections/asr/data/data_simulation.py @@ -17,6 +17,7 @@ import os import shutil import warnings +from collections import defaultdict from typing import Dict, Iterable, List, Optional, Tuple, Union import h5py @@ -163,6 +164,8 @@ def __init__(self, cfg): self._params = cfg # internal params self._manifest = read_manifest(self._params.data_simulator.manifest_filepath) + self._speaker_samples = self._build_speaker_samples_map() + self._noise_samples = [] self._sentence = None self._text = "" self._words = [] @@ -270,6 +273,14 @@ def _check_args(self): if len(self._manifest) == 0: raise Exception("Manifest file is empty. Check that the source path is correct.") + def clean_up(self): + self._sentence = None + self._words = [] + self._alignments = [] + self._audio_read_buffer_dict = {} + self._noise_read_buffer_dict = {} + torch.cuda.empty_cache() + def _get_speaker_ids(self) -> List[str]: """ Randomly select speaker IDs from the loaded manifest file. @@ -277,50 +288,104 @@ def _get_speaker_ids(self) -> List[str]: Returns: speaker_ids (list): Speaker IDs """ - speaker_ids = [] - s = 0 - while s < self._params.data_simulator.session_config.num_speakers: - file = self._manifest[np.random.randint(0, len(self._manifest) - 1)] - speaker_id = file['speaker_id'] - if speaker_id not in speaker_ids: # ensure speaker IDs are not duplicated - speaker_ids.append(speaker_id) - s += 1 + all_speaker_ids = list(self._speaker_samples.keys()) + idx_list = np.random.permutation(len(all_speaker_ids))[ + : self._params.data_simulator.session_config.num_speakers + ] + speaker_ids = [all_speaker_ids[i] for i in idx_list] return speaker_ids + def _build_speaker_samples_map(self) -> Dict: + """ + Build a dictionary for mapping speaker ID to their list of samples + + Returns: + speaker_samples (Dict[list]): + Dictionary mapping speaker ID to their list of samples + """ + speaker_samples = defaultdict(list) + logging.info("Building speaker to samples map...") + for sample in tqdm(self._manifest, total=len(self._manifest)): + speaker_id = sample['speaker_id'] + speaker_samples[speaker_id].append(sample) + return speaker_samples + + def _sample_noise_manifest(self, noise_manifest) -> list: + """ + Sample noise manifest to a specified count `num_noise_files` for the current simulated audio session. + + Args: + noise_manifest (list): + List of noise source samples to be sampled from. + + Returns: + sampled_noise_manifest (list): + List of noise samples to be used for the current session. + """ + num_noise_files = min(len(noise_manifest), self._params.data_simulator.background_noise.num_noise_files) + sampled_noise_manifest = [] + if num_noise_files > 0: + selected_noise_ids = np.random.choice(range(len(noise_manifest)), num_noise_files, replace=False) + for k in selected_noise_ids: + sampled_noise_manifest.append(noise_manifest[k]) + return sampled_noise_manifest + + def _read_noise_manifest(self): + """ + Read the noise manifest file and sample the noise manifest. + + Returns: + noise_manifest (list): + List of the entire noise source samples. + """ + noise_manifest = [] + if self._params.data_simulator.background_noise.add_bg is True: + if self._params.data_simulator.background_noise.background_manifest is not None: + if os.path.exists(self._params.data_simulator.background_noise.background_manifest): + noise_manifest = read_manifest(self._params.data_simulator.background_noise.background_manifest) + else: + raise FileNotFoundError( + f"Noise manifest file: {self._params.data_simulator.background_noise.background_manifest} file not found." + ) + else: + raise FileNotFoundError( + f"Noise manifest file is null. Please provide a valid noise manifest file if add_bg=True." + ) + return noise_manifest + def _get_speaker_samples(self, speaker_ids: List[str]) -> Dict[str, list]: """ Get a list of the samples for each of the specified speakers. Args: speaker_ids (list): LibriSpeech speaker IDs for each speaker in the current session. + Returns: - speaker_lists (dict): Dictionary of manifest lines per speaker + speaker_wav_align_map (dict): Dictionary containing speaker IDs and their corresponding wav filepath and alignments. """ - speaker_lists = {} - for i in range(self._params.data_simulator.session_config.num_speakers): - speaker_lists[str(speaker_ids[i])] = [] - # loop over manifest and add files corresponding to each speaker to each sublist - for file in self._manifest: - new_speaker_id = file['speaker_id'] - if new_speaker_id in speaker_ids: - speaker_lists[str(new_speaker_id)].append(file) - return speaker_lists + speaker_wav_align_map = defaultdict(list) + for sid in speaker_ids: + speaker_wav_align_map[sid] = self._speaker_samples[sid] + return speaker_wav_align_map - def _load_speaker_sample(self, speaker_lists: List[dict], speaker_ids: List[str], speaker_turn: int) -> str: + def _load_speaker_sample( + self, speaker_wav_align_map: List[dict], speaker_ids: List[str], speaker_turn: int + ) -> str: """ Load a sample for the selected speaker ID. The first alignment and word must be silence that determines the start of the alignments. Args: - speaker_lists (list): List of samples for each speaker in the session. + speaker_wav_align_map (dict): Dictionary containing speaker IDs and their corresponding wav filepath and alignments. speaker_ids (list): LibriSpeech speaker IDs for each speaker in the current session. speaker_turn (int): Current speaker turn. + Returns: file_path (str): Path to the desired audio file """ speaker_id = speaker_ids[speaker_turn] - file_id = np.random.randint(0, max(len(speaker_lists[str(speaker_id)]) - 1, 1)) - file_dict = speaker_lists[str(speaker_id)][file_id] + file_id = np.random.randint(0, max(len(speaker_wav_align_map[str(speaker_id)]) - 1, 1)) + file_dict = speaker_wav_align_map[str(speaker_id)][file_id] # Check whether the first word is silence and insert a silence token if the first token is not silence. if file_dict['words'][0] != "": @@ -348,7 +413,7 @@ def _get_speaker_dominance(self) -> List[float]: total = np.sum(dominance) if total == 0: for i in range(len(dominance)): - dominance[i] += min_dominance + dominance[i] += self._params.data_simulator.session_params.min_dominance # scale accounting for min_dominance which has to be added after dominance = (dominance / total) * ( 1 @@ -531,8 +596,8 @@ def _get_end_buffer_and_window( def _add_file( self, - file: dict, - audio_file: torch.Tensor, + audio_manifest: dict, + audio_file, sentence_word_count: int, max_word_count_in_sentence: int, max_samples_in_sentence: int, @@ -542,7 +607,7 @@ def _add_file( Uses the alignments to segment the audio file. Args: - file (dict): Line from manifest file for current audio file + audio_manifest (dict): Line from manifest file for current audio file audio_file (tensor): Current loaded audio file sentence_word_count (int): Running count for number of words in sentence max_word_count_in_sentence (int): Maximum count for number of words in sentence @@ -551,12 +616,12 @@ def _add_file( sentence_word_count+current_word_count (int): Running word count len(self._sentence) (tensor): Current length of the audio file """ - if len(file['alignments']) <= 1: - raise ValueError(f"Alignment file has inappropriate length of {len(file['alignments'])}") + if len(audio_manifest['alignments']) <= 1: + raise ValueError(f"Alignment file has inappropriate length of {len(audio_manifest['alignments'])}") - offset_idx = np.random.randint(low=1, high=len(file['words'])) + offset_idx = np.random.randint(low=1, high=len(audio_manifest['words'])) - first_alignment = int(file['alignments'][offset_idx - 1] * self._params.data_simulator.sr) + first_alignment = int(audio_manifest['alignments'][offset_idx - 1] * self._params.data_simulator.sr) start_cutoff, start_window_amount = self._get_start_buffer_and_window(first_alignment) if not self._params.data_simulator.session_params.start_window: # cut off the start of the sentence start_window_amount = 0 @@ -573,16 +638,18 @@ def _add_file( while ( current_word_count < remaining_duration and dur_sample_count < remaining_dur_sample_count - and word_idx < len(file['words']) + and word_idx < len(audio_manifest['words']) ): - dur_sample_count = int(file['alignments'][word_idx] * self._params.data_simulator.sr) - start_cutoff + dur_sample_count = ( + int(audio_manifest['alignments'][word_idx] * self._params.data_simulator.sr) - start_cutoff + ) # check the length of the generated sentence in terms of sample count (int). if curr_dur_sample_count + dur_sample_count > remaining_dur_sample_count: # if the upcoming loop will exceed the remaining sample count, break out of the loop. break - word = file['words'][word_idx] + word = audio_manifest['words'][word_idx] if silence_count > 0 and word == "": break @@ -591,7 +658,7 @@ def _add_file( self._alignments.append( float(sentence_sample_count * 1.0 / self._params.data_simulator.sr) - float(start_cutoff * 1.0 / self._params.data_simulator.sr) - + file['alignments'][word_idx] + + audio_manifest['alignments'][word_idx] ) if word == "": @@ -620,24 +687,23 @@ def _add_file( ), 0, ) - self._sentence = self._sentence.to(self._device) self._sentence = torch.cat( ( self._sentence, audio_file[start_cutoff + start_window_amount : start_cutoff + prev_dur_sample_count], ), 0, - ) - self._sentence = self._sentence.to(self._device) + ).to(self._device) else: self._sentence = torch.cat( (self._sentence, audio_file[start_cutoff : start_cutoff + prev_dur_sample_count]), 0 - ) - self._sentence = self._sentence.to(self._device) + ).to(self._device) # windowing at the end of the sentence - if (word_idx < len(file['words'])) and self._params.data_simulator.session_params.window_type is not None: + if ( + word_idx < len(audio_manifest['words']) + ) and self._params.data_simulator.session_params.window_type is not None: release_buffer, end_window_amount = self._get_end_buffer_and_window( prev_dur_sample_count, remaining_dur_sample_count, @@ -651,8 +717,7 @@ def _add_file( ], ), 0, - ) - self._sentence = self._sentence.to(self._device) + ).to(self._device) if end_window_amount > 0: # include window window = self._get_window(end_window_amount, start=False) @@ -672,13 +737,17 @@ def _add_file( ), ), 0, - ) - self._sentence = self._sentence.to(self._device) + ).to(self._device) + del audio_file return sentence_word_count + current_word_count, len(self._sentence) def _build_sentence( - self, speaker_turn: int, speaker_ids: List[str], speaker_lists: List[dict], max_samples_in_sentence: int + self, + speaker_turn: int, + speaker_ids: List[str], + speaker_wav_align_map: Dict[str, list], + max_samples_in_sentence: int, ): """ Build a new sentence by attaching utterance samples together until the sentence has reached a desired length. @@ -687,7 +756,7 @@ def _build_sentence( Args: speaker_turn (int): Current speaker turn. speaker_ids (list): LibriSpeech speaker IDs for each speaker in the current session. - speaker_lists (list): List of samples for each speaker in the session. + speaker_wav_align_map (dict): Dictionary containing speaker IDs and their corresponding wav filepath and alignments. max_samples_in_sentence (int): Maximum length for sentence in terms of samples """ # select speaker length @@ -704,22 +773,23 @@ def _build_sentence( self._text = "" self._words = [] self._alignments = [] - sentence_word_count = sentence_sample_count = 0 + sentence_word_count = 0 + sentence_sample_count = 0 # build sentence while sentence_word_count < sl and sentence_sample_count < max_samples_in_sentence: - file = self._load_speaker_sample(speaker_lists, speaker_ids, speaker_turn) - if file['audio_filepath'] in self._audio_read_buffer_dict: - audio_file, sr = self._audio_read_buffer_dict[file['audio_filepath']] + audio_manifest = self._load_speaker_sample(speaker_wav_align_map, speaker_ids, speaker_turn) + if audio_manifest['audio_filepath'] in self._audio_read_buffer_dict: + audio_file, sr = self._audio_read_buffer_dict[audio_manifest['audio_filepath']] else: - audio_file, sr = sf.read(file['audio_filepath']) + audio_file, sr = sf.read(audio_manifest['audio_filepath']) audio_file = torch.from_numpy(audio_file).to(self._device) if audio_file.ndim > 1: - audio_file = torch.mean(audio_file, 1, False) - self._audio_read_buffer_dict[file['audio_filepath']] = (audio_file, sr) + audio_file = torch.mean(audio_file, 1, False).to(self._device) + self._audio_read_buffer_dict[audio_manifest['audio_filepath']] = (audio_file, sr) sentence_word_count, sentence_sample_count = self._add_file( - file, audio_file, sentence_word_count, sl, max_samples_in_sentence + audio_manifest, audio_file, sentence_word_count, sl, max_samples_in_sentence ) # look for split locations @@ -745,7 +815,8 @@ def _build_sentence( # per-speaker normalization (accounting for active speaker time) if self._params.data_simulator.session_params.normalize: if torch.max(torch.abs(self._sentence)) > 0: - split_length = split_sum = torch.tensor(0).to(self._device).double() + split_length = torch.tensor(0).to(self._device).double() + split_sum = torch.tensor(0).to(self._device).double() for split in splits: split_length += len(self._sentence[split[0] : split[1]]) split_sum += torch.sum(self._sentence[split[0] : split[1]] ** 2) @@ -852,34 +923,34 @@ def _add_silence_or_overlap( return new_start - def _get_background(self, len_array: int, power_array: float) -> torch.Tensor: + def _get_background(self, len_array: int, power_array: float): """ Augment with background noise (inserting ambient background noise up to the desired SNR for the full clip). Args: len_array (int): Length of background noise required. avg_power_array (float): Average power of the audio file. + Returns: bg_array (tensor): Tensor containing background noise """ - - manifest = read_manifest(self._params.data_simulator.background_noise.background_manifest) bg_array = torch.zeros(len_array).to(self._device) desired_snr = self._params.data_simulator.background_noise.snr ratio = 10 ** (desired_snr / 20) desired_avg_power_noise = (power_array / ratio).to(self._device) - running_len = 0 + running_len, file_id = 0, 0 while running_len < len_array: # build background audio stream (the same length as the full file) - file_id = np.random.randint(0, len(manifest) - 1) - file = manifest[file_id] - if file['audio_filepath'] in self._audio_read_buffer_dict: - audio_file, sr = self._noise_read_buffer_dict[file['audio_filepath']] + audio_manifest = self._noise_samples[file_id % len(self._noise_samples)] + file_id += 1 + + if audio_manifest['audio_filepath'] in self._noise_read_buffer_dict: + audio_file, sr = self._noise_read_buffer_dict[audio_manifest['audio_filepath']] else: - audio_file, sr = sf.read(file['audio_filepath']) + audio_file, sr = sf.read(audio_manifest['audio_filepath']) audio_file = torch.from_numpy(audio_file).to(self._device) if audio_file.ndim > 1: audio_file = torch.mean(audio_file, 1, False) - self._noise_read_buffer_dict[file['audio_filepath']] = (audio_file, sr) + self._noise_read_buffer_dict[audio_manifest['audio_filepath']] = (audio_file, sr) if running_len + len(audio_file) < len_array: end_audio_file = running_len + len(audio_file) @@ -904,6 +975,7 @@ def _create_new_rttm_entry(self, start: int, end: int, speaker_id: int) -> List[ start (int): Current start of the audio file being inserted. end (int): End of the audio file being inserted. speaker_id (int): LibriSpeech speaker ID for the current entry. + Returns: rttm_list (list): List of rttm entries """ @@ -940,6 +1012,7 @@ def _create_new_json_entry( speaker_id (int): LibriSpeech speaker ID for the current entry. rttm_filepath (str): Output rttm filepath. ctm_filepath (str): Output ctm filepath. + Returns: dict (dict): JSON entry """ @@ -1031,7 +1104,17 @@ def create_segment_manifest_ds(self) -> str: self.segment_manifest_filepath = output_manifest_filepath return self.segment_manifest_filepath - def _generate_session(self, idx: int, basepath: str, filename: str, enforce_counter: int = 2): + def _generate_session( + self, + idx: int, + basepath: str, + filename: str, + speaker_ids: List[str], + speaker_wav_align_map: Dict[str, list], + noise_samples: list, + device: torch.device, + enforce_counter: int = 2, + ): """ _generate_session function without RIR simulation. Generate a multispeaker audio session and corresponding label files. @@ -1040,17 +1123,21 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun idx (int): Index for current session (out of total number of sessions). basepath (str): Path to output directory. filename (str): Filename for output files. + speaker_ids (list): List of speaker IDs that will be used in this session. + speaker_wav_align_map (dict): Dictionary containing speaker IDs and their corresponding wav filepath and alignments. + noise_samples (list): List of randomly sampled noise source files that will be used for generating this session. + device (torch.device): Device to use for generating this session. enforce_counter (int): In enforcement mode, dominance is increased by a factor of enforce_counter for unrepresented speakers """ - speaker_ids = self._get_speaker_ids() # randomly select speaker IDs + self._device = device speaker_dominance = self._get_speaker_dominance() # randomly determine speaker dominance base_speaker_dominance = np.copy(speaker_dominance) - speaker_lists = self._get_speaker_samples(speaker_ids) # get list of samples per speaker self._set_speaker_volume() running_len_sample_count, prev_len_sample_count = 0, 0 prev_speaker = None rttm_list, json_list, ctm_list = [], [], [] + self._noise_samples = noise_samples self._furthest_sample = [0 for n in range(self._params.data_simulator.session_config.num_speakers)] self._missing_overlap = 0 @@ -1087,7 +1174,7 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun ): break - self._build_sentence(speaker_turn, speaker_ids, speaker_lists, max_samples_in_sentence) + self._build_sentence(speaker_turn, speaker_ids, speaker_wav_align_map, max_samples_in_sentence) length = len(self._sentence) start = self._add_silence_or_overlap( @@ -1134,9 +1221,12 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun # background noise augmentation if self._params.data_simulator.background_noise.add_bg: - avg_power_array = torch.mean(array[is_speech == 1] ** 2) - bg = self._get_background(len(array), avg_power_array) - array += bg + if len(self._noise_samples) > 0: + avg_power_array = torch.mean(array[is_speech == 1] ** 2) + bg = self._get_background(len(array), avg_power_array) + array += bg + else: + raise ValueError('No background noise samples found in self._noise_samples.') array = array / (1.0 * torch.max(torch.abs(array))) # normalize wav file to avoid clipping if torch.is_tensor(array): @@ -1147,6 +1237,10 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun write_ctm(os.path.join(basepath, filename + '.ctm'), ctm_list) write_text(os.path.join(basepath, filename + '.txt'), ctm_list) + del array + self.clean_up() + return basepath, filename + def generate_sessions(self, random_seed: int = None): """ Generate several multispeaker audio sessions and corresponding list files. @@ -1184,29 +1278,54 @@ def generate_sessions(self, random_seed: int = None): tp = concurrent.futures.ProcessPoolExecutor(max_workers=self._params.get("num_workers", 1)) futures = [] - for i in range(self._params.data_simulator.session_config.num_sessions): + num_sessions = self._params.data_simulator.session_config.num_sessions + source_noise_manifest = self._read_noise_manifest() + queue = [] + # add radomly sampled arguments to a list(queue) for multiprocessing + for sess_idx in range(num_sessions): + filename = self._params.data_simulator.outputs.output_filename + f"_{sess_idx}" + speaker_ids = self._get_speaker_ids() + speaker_wav_align_map = self._get_speaker_samples(speaker_ids) + noise_samples = self._sample_noise_manifest(source_noise_manifest) + if torch.cuda.is_available(): + device = torch.device(f"cuda:{sess_idx % torch.cuda.device_count()}") + else: + device = self._device + queue.append((sess_idx, basepath, filename, speaker_ids, speaker_wav_align_map, noise_samples, device)) + + # for multiprocessing speed, we avoid loading potentially huge manifest list and speaker sample files into each process. + if num_workers > 1: + self._manifest = None + self._speaker_samples = None + + for sess_idx in range(num_sessions): self._furthest_sample = [0 for n in range(self._params.data_simulator.session_config.num_speakers)] self._missing_overlap = 0 self._audio_read_buffer_dict = {} - filename = self._params.data_simulator.outputs.output_filename + f"_{i}" if num_workers > 1: - futures.append([tp.submit(self._generate_session, i, basepath, filename), (basepath, filename)]) + futures.append(tp.submit(self._generate_session, *queue[sess_idx])) else: - futures.append([None, (basepath, filename)]) + futures.append(queue[sess_idx]) - for future in tqdm(futures, desc="Waiting for generators to finish", unit="jobs"): - basepath, filename = future[1] + if num_workers > 1: + generator = concurrent.futures.as_completed(futures) + else: + generator = futures + + for future in tqdm(generator, desc="Waiting for generators to finish", unit="jobs", total=len(futures)): if num_workers > 1: - future[0].result() + basepath, filename = future.result() else: - self._generate_session(i, basepath, filename) + self._noise_samples = self._sample_noise_manifest(source_noise_manifest) + basepath, filename = self._generate_session(*future) + wavlist.write(os.path.join(basepath, filename + '.wav\n')) rttmlist.write(os.path.join(basepath, filename + '.rttm\n')) jsonlist.write(os.path.join(basepath, filename + '.json\n')) ctmlist.write(os.path.join(basepath, filename + '.ctm\n')) textlist.write(os.path.join(basepath, filename + '.txt\n')) - # throw error if number of speakers is less than requested + # throw warning if number of speakers is less than requested num_missing = 0 for k in range(len(self._furthest_sample)): if self._furthest_sample[k] == 0: @@ -1215,6 +1334,7 @@ def generate_sessions(self, random_seed: int = None): warnings.warn( f"{self._params.data_simulator.session_config.num_speakers-num_missing} speakers were included in the clip instead of the requested amount of {self._params.data_simulator.session_config.num_speakers}" ) + tp.shutdown() wavlist.close() @@ -1223,6 +1343,8 @@ def generate_sessions(self, random_seed: int = None): ctmlist.close() textlist.close() + logging.info(f"Data simulation has been completed, results saved at: {basepath}") + class RIRMultiSpeakerSimulator(MultiSpeakerSimulator): """ @@ -1312,7 +1434,7 @@ def _check_args_rir(self): if len(sublist) != 3: raise Exception("Three coordinates must be provided for orientations") - def _generate_rir_gpuRIR(self) -> Tuple[torch.Tensor, int]: + def _generate_rir_gpuRIR(self): """ Create simulated RIR using the gpuRIR library @@ -1457,7 +1579,17 @@ def _convolve_rir(self, input, speaker_turn: int, RIR: torch.Tensor) -> Tuple[li output_sound.append(torch.tensor(out_channel)) return output_sound, length - def _generate_session(self, idx: int, basepath: str, filename: str, enforce_counter: int = 2): + def _generate_session( + self, + idx: int, + basepath: str, + filename: str, + speaker_ids: list, + speaker_wav_align_map: dict, + noise_samples: list, + device: torch.device, + enforce_counter: int = 2, + ): """ Generate a multispeaker audio session and corresponding label files. @@ -1465,17 +1597,21 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun idx (int): Index for current session (out of total number of sessions). basepath (str): Path to output directory. filename (str): Filename for output files. + speaker_ids (list): List of speaker IDs that will be used in this session. + speaker_wav_align_map (dict): Dictionary containing speaker IDs and their corresponding wav filepath and alignments. + noise_samples (list): List of randomly sampled noise source files that will be used for generating this session. + device (torch.device): Device to use for generating this session. enforce_counter (int): In enforcement mode, dominance is increased by a factor of enforce_counter for unrepresented speakers """ - speaker_ids = self._get_speaker_ids() # randomly select speaker IDs + self._device = device speaker_dominance = self._get_speaker_dominance() # randomly determine speaker dominance base_speaker_dominance = np.copy(speaker_dominance) - speaker_lists = self._get_speaker_samples(speaker_ids) # get list of samples per speaker self._set_speaker_volume() running_len_sample_count, prev_len_sample_count = 0, 0 # starting point for each sentence prev_speaker = None rttm_list, json_list, ctm_list = [], [], [] + self._noise_samples = noise_samples self._furthest_sample = [0 for n in range(self._params.data_simulator.session_config.num_speakers)] self._missing_overlap = 0 @@ -1523,7 +1659,7 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun < self._params.data_simulator.session_params.end_buffer * self._params.data_simulator.sr ): break - self._build_sentence(speaker_turn, speaker_ids, speaker_lists, max_samples_in_sentence) + self._build_sentence(speaker_turn, speaker_ids, speaker_wav_align_map, max_samples_in_sentence) augmented_sentence, length = self._convolve_rir(self._sentence, speaker_turn, RIR) start = self._add_silence_or_overlap( @@ -1587,6 +1723,9 @@ def _generate_session(self, idx: int, basepath: str, filename: str, enforce_coun write_manifest(os.path.join(basepath, filename + '.json'), json_list) write_ctm(os.path.join(basepath, filename + '.ctm'), ctm_list) write_text(os.path.join(basepath, filename + '.txt'), ctm_list) + del array + self.clean_up() + return basepath, filename def check_angle(key: str, val: Union[float, Iterable[float]]) -> bool: diff --git a/tools/speech_data_simulator/conf/data_simulator.yaml b/tools/speech_data_simulator/conf/data_simulator.yaml index e0fb0c8b7588..ff13580493be 100644 --- a/tools/speech_data_simulator/conf/data_simulator.yaml +++ b/tools/speech_data_simulator/conf/data_simulator.yaml @@ -42,6 +42,7 @@ data_simulator: background_noise: # If bg noise is used, a noise source position must be passed for RIR mode add_bg: false # Add ambient background noise if true background_manifest: null # Path to background noise manifest file + num_noise_files: 10 # Number of randomly chosen noise source files to be potentially included in one session snr: 60 # SNR for background noise (using average speaker power) speaker_enforcement: diff --git a/tools/speech_data_simulator/multispeaker_simulator.py b/tools/speech_data_simulator/multispeaker_simulator.py index 9fc725e972c4..1f5d84b335d0 100644 --- a/tools/speech_data_simulator/multispeaker_simulator.py +++ b/tools/speech_data_simulator/multispeaker_simulator.py @@ -12,14 +12,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +from multiprocessing import set_start_method + from nemo.collections.asr.data.data_simulation import MultiSpeakerSimulator, RIRMultiSpeakerSimulator from nemo.core.config import hydra_runner """ -This script creates a synthetic diarization session using the LibriSpeech dataset. +This script creates a synthetic diarization session using the provided audio dataset with ctm files. Usage: - python create_diarization_dataset_librispeech.py + python /tools/speech_data_simulator/multispeaker_simulator.py \ + num_workers=10 \ + data_simulator.random_seed=42 \ + data_simulator.manifest_filepath=manifest_with_alignment_file.json \ + data_simulator.outputs.output_dir=./simulated_data \ + data_simulator.outputs.output_filename=sim_spk2_sess20 \ + data_simulator.session_config.num_sessions=1000 \ + data_simulator.session_config.num_speakers=2 \ + data_simulator.session_config.session_length=20 \ + data_simulator.background_noise.add_bg=False \ + data_simulator.background_noise.background_manifest=background_noise.json \ + data_simulator.background_noise.snr=40 \ + Check out parameters in ./conf/data_simulator.yaml. """ @@ -27,10 +41,12 @@ @hydra_runner(config_path="conf", config_name="data_simulator.yaml") def main(cfg): if cfg.data_simulator.rir_generation.use_rir: - lg = RIRMultiSpeakerSimulator(cfg=cfg) + simulator = RIRMultiSpeakerSimulator(cfg=cfg) else: - lg = MultiSpeakerSimulator(cfg=cfg) - lg.generate_sessions() + simulator = MultiSpeakerSimulator(cfg=cfg) + + set_start_method('spawn', force=True) + simulator.generate_sessions() if __name__ == "__main__": From 19d30f905cd72d0a234ccd68e8fc0345bfbc157a Mon Sep 17 00:00:00 2001 From: Yi Dong <43824965+yidong72@users.noreply.github.com> Date: Sat, 28 Jan 2023 09:45:44 -0500 Subject: [PATCH 08/73] RETRO model finetuning (#5800) * add save and load dynmaic index Signed-off-by: Yi Dong * add chunk stride feature Signed-off-by: Yi Dong * add chunk stride feature Signed-off-by: Yi Dong * add no pq index Signed-off-by: Yi Dong * added megatron lm compatible mode Signed-off-by: Yi Dong * addd config Signed-off-by: Yi Dong * fix position embedding Signed-off-by: Yi Dong * added index factory Signed-off-by: Yi Dong * share neighbors and weights amoung strategies Signed-off-by: Yi Dong * fix bug Signed-off-by: Yi Dong * added metric tto faiss index Signed-off-by: Yi Dong * set default to inner product Signed-off-by: Yi Dong * added qa fine tuen dataset Signed-off-by: Yi Dong * added fine tuning code Signed-off-by: Yi Dong * trim it Signed-off-by: Yi Dong * fix data issue Signed-off-by: Yi Dong * fix style Signed-off-by: Yi Dong * added version Signed-off-by: Yi Dong * fix key error Signed-off-by: Yi Dong * make sure to overwrite the cfg Signed-off-by: Yi Dong * make multiple sentence bert available Signed-off-by: Yi Dong * fix the document Signed-off-by: Yi Dong * fix the table Signed-off-by: Yi Dong * fix transformer Signed-off-by: Yi Dong * make sure to turn off the rope in chunked cross attention layer Signed-off-by: Yi Dong * fix the security issue Signed-off-by: Yi Dong * style fix Signed-off-by: Yi Dong * fix codeql issues Signed-off-by: Yi Dong * fix Signed-off-by: Yi Dong * use -1 Signed-off-by: Yi Dong * fix empty index Signed-off-by: Yi Dong * clean up Signed-off-by: Yi Dong * fix the lower bound for repetition penalty Signed-off-by: Yi Dong * add retro qa inference strategy Signed-off-by: Yi Dong * added new inference logic Signed-off-by: Yi Dong * working inference Signed-off-by: Yi Dong * fix TP inference Signed-off-by: Yi Dong * revert requirement Signed-off-by: Yi Dong * added file inference Signed-off-by: Yi Dong * use string to prevent collison Signed-off-by: Yi Dong * use NQ test Signed-off-by: Yi Dong * fix prompt Signed-off-by: Yi Dong * fix inference Signed-off-by: Yi Dong * set good defaults for demo Signed-off-by: Yi Dong * replicate adlr Signed-off-by: Yi Dong * make sure to turn off attention reset for megatron lm compatible model Signed-off-by: Yi Dong * style fix Signed-off-by: Yi Dong * fix typo Signed-off-by: Yi Dong * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix inference error Signed-off-by: Yi Dong * fix logging Signed-off-by: Yi Dong * address comments Signed-off-by: Yi Dong --------- Signed-off-by: Yi Dong Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- .../nlp/nemo_megatron/retro/retro_model.rst | 16 +- .../conf/megatron_retro_config.yaml | 4 + .../conf/megatron_retro_finetune_config.yaml | 105 ++++ .../conf/megatron_retro_inference.yaml | 24 +- .../conf/megatron_retro_mutransfer.yaml | 3 + .../language_modeling/megatron_retro_eval.py | 3 + .../megatron_retro_fine_tune.py | 143 ++++++ .../megatron_retro_pretraining.py | 26 +- .../megatron/indexed_dataset.py | 3 +- .../megatron/indexed_retrieval_dataset.py | 41 +- .../megatron/retro_fine_tune_dataset.py | 236 +++++++++ .../megatron_retrieval_model.py | 34 +- .../megatron_retro_fine_tune_model.py | 146 ++++++ .../nlp/modules/common/lm_utils.py | 13 +- .../nlp/modules/common/megatron/attention.py | 27 +- .../modules/common/megatron/bert_service.py | 145 ++++++ .../common/megatron/megatron_decoders.py | 4 + .../common/megatron/megatron_encoders.py | 4 + .../common/megatron/retrieval_service.py | 248 ++++----- .../retrieval_token_level_encoder_decoder.py | 26 +- .../common/megatron/retrieval_transformer.py | 64 ++- .../nlp/modules/common/megatron_web_server.py | 14 +- .../common/retro_inference_strategies.py | 469 ++++++++++++++++++ .../modules/common/text_generation_server.py | 15 +- .../common/text_generation_strategy.py | 243 +-------- .../modules/common/text_generation_utils.py | 1 + .../build_retrieval_index.py | 14 +- .../preprocess_data_for_megatron.py | 4 + .../nlp/test_indexed_retrieval_dataset.py | 346 ++++++++++++- 29 files changed, 1996 insertions(+), 425 deletions(-) create mode 100644 examples/nlp/language_modeling/conf/megatron_retro_finetune_config.yaml create mode 100644 examples/nlp/language_modeling/megatron_retro_fine_tune.py create mode 100644 nemo/collections/nlp/data/language_modeling/megatron/retro_fine_tune_dataset.py create mode 100644 nemo/collections/nlp/models/language_modeling/megatron_retro_fine_tune_model.py create mode 100644 nemo/collections/nlp/modules/common/megatron/bert_service.py create mode 100644 nemo/collections/nlp/modules/common/retro_inference_strategies.py diff --git a/docs/source/nlp/nemo_megatron/retro/retro_model.rst b/docs/source/nlp/nemo_megatron/retro/retro_model.rst index b463a8ce08f8..8f0865d9f51f 100644 --- a/docs/source/nlp/nemo_megatron/retro/retro_model.rst +++ b/docs/source/nlp/nemo_megatron/retro/retro_model.rst @@ -65,22 +65,25 @@ An example script to prepare data for RETRO training is: --append-eod \ --retrieval-db \ --chunk_size=64 \ + --chunk_stride_size=64 \ --workers=48 -The RETRO model processes chunked documents using 64 tokens as the default chunk size. The RETRO memory map dataset will add padding -tokens to the end of each document to make it a multiple of 64. The ``--need-pad-id`` argument adds a padding token to the tokenizer +The RETRO model processes chunked documents using 64 tokens as the default chunk size. The ``--chunk_stride_size`` argument argument +determines the distance between consecutive chunks. To ensure the documents are a multiple of ``--chunk_size``` tokens, the RETRO memory map dataset +adds padding tokens to the end of each document. The ``--need-pad-id`` argument adds a padding token to the tokenizer if it doesn't already have one. The ``--append-eod`` argument controls whether to add ``end-of-document`` tokens to the preprocessed data, and the ``--retrieval-db`` argument indicates whether to create a retrieval database for the preprocessed data. If ``--retrieval-db`` -is used, it will add an additional 64 padding tokens at the end of the document. The ``--chunk_size`` and ``--workers`` arguments +is used, it will add an additional ``--chunk_size``` padding tokens at the end of the document. The ``--chunk_size`` and ``--workers`` arguments control the size of the data chunks to be processed and the number of worker processes to use, respectively. Following is the retro memory map index data format: .. list-table:: - :widths: 25 25 25 25 25 25 + :widths: 25 25 25 25 25 25 25 * - 'MMIDRET\x00\x00' (header 9 bytes) - - 1 (version 8 byte) + - 1 (version 4 byte) + - 64 (stride 4 byte) - dtype code :sup:`1` (1 byte) - sentence count (8 byte) - chunk size (8 byte) @@ -91,6 +94,7 @@ Following is the retro memory map index data format: - start of chunk id (int64 array) - chunk id address in byte (int64 array) - + - :sup:`1` 1: np.uint8, 2: np.int8, 3: np.int16, 4: np.int32, 5: np.int64, 6: np.float, 7: np.double, 8: np.uint16 @@ -443,7 +447,7 @@ We have built a simple web client that makes it easy for users to play around wi retro_model_file=megatron_retro.nemo \ tensor_model_parallel_size=8 \ pipeline_model_parallel_size=1 \ - retrieval_service.sentence_bert.devices=\'0,1,2,3,4,5,6,7\' \ + retrieval_service.sentence_bert.default.devices=\'0,1,2,3,4,5,6,7\' \ retrieval_service.services.0.faiss_devices=\'0,1,2,3,4,5,6,7\' \ retrieval_service.services.1.faiss_devices=\'0,1,2,3,4,5,6,7\' \ retrieval_service.services.0.faiss_index=/result/pubmed_faiss_final.index \ diff --git a/examples/nlp/language_modeling/conf/megatron_retro_config.yaml b/examples/nlp/language_modeling/conf/megatron_retro_config.yaml index 8121bef5451b..e14e1e512dd5 100644 --- a/examples/nlp/language_modeling/conf/megatron_retro_config.yaml +++ b/examples/nlp/language_modeling/conf/megatron_retro_config.yaml @@ -42,6 +42,8 @@ exp_manager: model: + version: 1 # indicate the retro model version + # model parallelism micro_batch_size: 4 tensor_model_parallel_size: 1 @@ -72,6 +74,8 @@ model: megatron_amp_O2: False # use AMP with O2 style mixed precision instead of native amp on-the-fly weight autocasting. grad_allreduce_chunk_size_mb: 125 + megatron_lm_compatible: False # a flag to indicate whether the model is compatible with Megatron LM + tokenizer: library: 'megatron' type: 'GPT2BPETokenizer' diff --git a/examples/nlp/language_modeling/conf/megatron_retro_finetune_config.yaml b/examples/nlp/language_modeling/conf/megatron_retro_finetune_config.yaml new file mode 100644 index 000000000000..612101b3a98d --- /dev/null +++ b/examples/nlp/language_modeling/conf/megatron_retro_finetune_config.yaml @@ -0,0 +1,105 @@ +name: fine_tune_retro + +trainer: + devices: 2 + num_nodes: 1 + accelerator: gpu + precision: 16 + logger: False # logger provided by exp_manager + enable_checkpointing: False + replace_sampler_ddp: False + max_epochs: -1 # PTL default. In practice we don't usually train for more than 1 epoch. + max_steps: 100000 # consumed_samples = global_step * micro_batch_size * data_parallel_size * accumulate_grad_batches + log_every_n_steps: 10 + val_check_interval: 100 + limit_val_batches: null + limit_test_batches: null + accumulate_grad_batches: 1 + gradient_clip_val: 1.0 + +exp_manager: + explicit_log_dir: null + exp_dir: null + name: megatron_retro + create_wandb_logger: False + wandb_logger_kwargs: + project: null + name: null + resume_if_exists: True + resume_ignore_no_checkpoint: True + create_checkpoint_callback: True + checkpoint_callback_params: + monitor: val_loss + save_top_k: 10 + mode: min + always_save_nemo: False # saves nemo file during validation, not implemented for model parallel + filename: 'megatron_retro--{val_loss:.2f}-{step}-{consumed_samples}' + model_parallel_size: ${multiply:${model.tensor_model_parallel_size}, ${model.pipeline_model_parallel_size}} + + +model: + # model parallelism + tensor_model_parallel_size: 1 + pipeline_model_parallel_size: 1 # has to be one. not supporting pipeline parallel yet + + micro_batch_size: 4 + megatron_amp_O2: False # use AMP with O2 style mixed precision instead of native amp on-the-fly weight autocasting. + + tokenizer: + library: 'megatron' + type: 'GPT2BPETokenizer' + model: null + vocab_file: null + merge_file: null + delimiter: null # only used for tabular tokenizer + + gradient_as_bucket_view: True # Allocate gradients in a contiguous bucket to save memory (less fragmentation and buffer memory) + # precision + native_amp_init_scale: 4294967296 # 2 ** 32 + native_amp_growth_interval: 1000 + fp16_lm_cross_entropy: False # Move the cross entropy unreduced loss calculation for lm head to fp16 + + # miscellaneous + seed: 1234 + + restore_path: null # the retro model restore path + + data: + train_ds: + file_name: ??? # train data file path + answer_only_loss: True # whether use answer only loss + seq_length: 128 # must be multiple of the chunk_size in your dataset + add_bos: True # whether to add bos at the beginning + add_eos: True # whether to add eos at the end + seed: 1234 + neighbors: 20 # number of retrieved neighbors + val_ds: + file_name: ??? # train data file path + answer_only_loss: True # whether use answer only loss + seq_length: 128 # must be multiple of the chunk_size in your dataset + add_bos: True # whether to add bos at the beginning + add_eos: True # whether to add eos at the end + seed: 1234 + neighbors: 20 # number of retrieved neighbors + test_ds: + file_name: ??? # train data file path + answer_only_loss: True # whether use answer only loss + seq_length: 128 # must be multiple of the chunk_size in your dataset + add_bos: True # whether to add bos at the beginning + add_eos: True # whether to add eos at the end + seed: 1234 + neighbors: 20 # number of retrieved neighbors + + + optim: + name: fused_adam + lr: 1e-4 + weight_decay: 0.01 + betas: + - 0.9 + - 0.98 + sched: + name: CosineAnnealing + warmup_steps: 500 + constant_steps: 50000 + min_lr: 1e-5 diff --git a/examples/nlp/language_modeling/conf/megatron_retro_inference.yaml b/examples/nlp/language_modeling/conf/megatron_retro_inference.yaml index e3d8b08ba3c0..29fb11623b1f 100644 --- a/examples/nlp/language_modeling/conf/megatron_retro_inference.yaml +++ b/examples/nlp/language_modeling/conf/megatron_retro_inference.yaml @@ -34,25 +34,41 @@ prompts: # prompts for RETRO model inference ########### Faiss service parameters ######## retrieval_service: + strategy: RetroModelTextGenerationStrategy # choose customized inference strategy neighbors: 4 frequent_query: False # for the current token generation, frequently update the retrieval context. If false, update it every 64 tokens pad_tokens: True # pad the tokens at the beginning to make it minimum of 64 tokens for retrieving at least once store_retrieved: False # whether store the retrieved documents, so it can be checked weights: [0.5, 0.5] # weight for different retrieval services - sentence_bert: - devices: '0,1,2' - sentence_bert: 'all-mpnet-base-v2' - sentence_bert_batch: 4 + sentence_bert: # define a few sentence bert models for different retrieval services to use + default: + devices: '0,1,2' + sentence_bert: 'all-mpnet-base-v2' + sentence_bert_batch: 4 + qa_ctx: + devices: '0,1,2' + sentence_bert: 'facebook-dpr-ctx_encoder-multiset-base' + sentence_bert_batch: 4 + qa_question: + devices: '0,1,2' + sentence_bert: 'facebook-dpr-question_encoder-multiset-base' + sentence_bert_batch: 4 services: - type: FaissRetrievalService faiss_devices: '0,1,2' faiss_index: null # the faiss index file that is used to find KNN nprobe: 100 retrieval_index: null + query_bert: 'default' # the bert model to encode the query str - type: DynamicFaissRetrievalService faiss_devices: '0,1,2' + faiss_index: null # the faiss index to load from file, if null, start from scratch + store_file: null # the retrieval service storage to load from file, if null, start from scratch chunk_size: 64 stride: 32 + ctx_bert: 'qa_ctx' # the bert model to encode the ctx that is used to construct the dynamic retrieval index + query_bert: 'qa_question' # the bert model to encode the query str + output_filename: 'dynamic_db' # the filename of serialized dynamic retrieval service, used for both Faiss index and data storage server: False # whether launch the API server port: 5555 # the port number for the inference server web_server: False # whether launch the web inference server diff --git a/examples/nlp/language_modeling/conf/megatron_retro_mutransfer.yaml b/examples/nlp/language_modeling/conf/megatron_retro_mutransfer.yaml index 3ad90722ddc8..10dc512cb112 100644 --- a/examples/nlp/language_modeling/conf/megatron_retro_mutransfer.yaml +++ b/examples/nlp/language_modeling/conf/megatron_retro_mutransfer.yaml @@ -43,6 +43,7 @@ exp_manager: model_parallel_size: ${multiply:${model.tensor_model_parallel_size}, ${model.pipeline_model_parallel_size}} base_model: + version: 1 # indicate the retro model version # model parallelism micro_batch_size: 4 tensor_model_parallel_size: 1 @@ -87,6 +88,7 @@ base_model: seed: 1234 delta_model: + version: 1 # indicate the retro model version # model parallelism micro_batch_size: 4 tensor_model_parallel_size: 1 @@ -130,6 +132,7 @@ delta_model: seed: 1234 model: + version: 1 # indicate the retro model version shape_file: null # the path to the shape file # model parallelism micro_batch_size: 4 diff --git a/examples/nlp/language_modeling/megatron_retro_eval.py b/examples/nlp/language_modeling/megatron_retro_eval.py index 788a5bfffb1b..2f1be7537b3a 100644 --- a/examples/nlp/language_modeling/megatron_retro_eval.py +++ b/examples/nlp/language_modeling/megatron_retro_eval.py @@ -76,6 +76,9 @@ def main(cfg) -> None: with open_dict(model_cfg): model_cfg.precision = trainer.precision + model_cfg.sequence_parallel = False + model_cfg.activations_checkpoint_granularity = None + model_cfg.activations_checkpoint_method = None model = MegatronRetrievalModel.restore_from( model_path, trainer=trainer, save_restore_connector=save_restore_connector, override_config_path=model_cfg, diff --git a/examples/nlp/language_modeling/megatron_retro_fine_tune.py b/examples/nlp/language_modeling/megatron_retro_fine_tune.py new file mode 100644 index 000000000000..60f0a58b97fd --- /dev/null +++ b/examples/nlp/language_modeling/megatron_retro_fine_tune.py @@ -0,0 +1,143 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import datetime +import os + +from omegaconf.omegaconf import OmegaConf, open_dict +from pytorch_lightning import Trainer +from pytorch_lightning.callbacks.timer import Timer +from pytorch_lightning.plugins.environments import TorchElasticEnvironment +from pytorch_lightning.plugins.precision.native_amp import NativeMixedPrecisionPlugin +from pytorch_lightning.trainer.connectors.checkpoint_connector import CheckpointConnector + +from nemo.collections.nlp.models.language_modeling.megatron_retro_fine_tune_model import MegatronRetroFinetuneModel +from nemo.collections.nlp.parts.nlp_overrides import ( + GradScaler, + MegatronHalfPrecisionPlugin, + NLPDDPStrategy, + NLPSaveRestoreConnector, +) +from nemo.core.config import hydra_runner +from nemo.utils import logging +from nemo.utils.exp_manager import StatelessTimer, exp_manager + + +def _modify_config(retro_cfg, cfg, add_cfg_to_tree=False): + """ + This function modifies the original retro pre-training config with attributes from the finetuning config (cfg). + The `add_cfg_to_tree` arg adds `cfg` to the top of the yaml tree which is needed for all `hparams.yaml` files when passed as an arg to `load_from_checkpoint()`. + """ + OmegaConf.set_struct(retro_cfg, True) + with open_dict(retro_cfg): + retro_cfg.megatron_amp_O2 = cfg.model.get('megatron_amp_O2', False) + retro_cfg.data = cfg.model.data + retro_cfg.precision = cfg.trainer.precision + retro_cfg.optim = cfg.model.optim + retro_cfg.micro_batch_size = cfg.model.micro_batch_size + # This is needed when modifying a hparam file directly to load `.ckpt` files. + # This is not needed to modify the cfg in `.nemo` files. + if add_cfg_to_tree: + OmegaConf.resolve(retro_cfg) + retro_cfg.cfg = retro_cfg + return retro_cfg + + +def load_from_nemo(cls, cfg, trainer, retro_cfg, modify_confg_fn, save_restore_connector): + retro_cfg = modify_confg_fn(retro_cfg, cfg, add_cfg_to_tree=False) + model = cls.restore_from( + restore_path=cfg.model.restore_path, + trainer=trainer, + override_config_path=retro_cfg, + save_restore_connector=save_restore_connector, + ) + return model + + +@hydra_runner(config_path="conf", config_name="megatron_retro_finetune_config") +def main(cfg) -> None: + logging.info("\n\n************** Experiment configuration ***********") + logging.info(f'\n{OmegaConf.to_yaml(cfg)}') + ###### following is the workaround for num_workers=0 issue ##### + # import torch.multiprocessing as mp + # mp.set_start_method("spawn", force=True) + ##################################################### + megatron_amp_o2 = cfg.model.get('megatron_amp_O2', False) + plugins = [] + strategy = NLPDDPStrategy( + no_ddp_communication_hook=True if megatron_amp_o2 else False, + gradient_as_bucket_view=cfg.model.gradient_as_bucket_view, + find_unused_parameters=False, + timeout=datetime.timedelta(seconds=18000), + ) + + if cfg.trainer.precision in [16, 'bf16']: + scaler = None + if cfg.trainer.precision == 16: + scaler = GradScaler( + init_scale=cfg.model.get('native_amp_init_scale', 2 ** 32), + growth_interval=cfg.model.get('native_amp_growth_interval', 1000), + hysteresis=cfg.model.get('hysteresis', 2), + ) + if megatron_amp_o2: + plugins.append(MegatronHalfPrecisionPlugin(precision=cfg.trainer.precision, device='cuda', scaler=scaler)) + else: + plugins.append(NativeMixedPrecisionPlugin(precision=cfg.trainer.precision, device='cuda', scaler=scaler)) + + if cfg.get('cluster_type', None) == 'BCP': + plugins.append(TorchElasticEnvironment()) + + trainer = Trainer(plugins=plugins, strategy=strategy, **cfg.trainer) + exp_manager(trainer, cfg.exp_manager) + + # update resume from checkpoint found by exp_manager + resume_from_checkpoint = trainer._checkpoint_connector.resume_from_checkpoint_fit_path + logging.info(f'Resuming training from checkpoint: {resume_from_checkpoint}') + + trainer._checkpoint_connector = CheckpointConnector(trainer, resume_from_checkpoint=resume_from_checkpoint) + + # Override timer callback to a stateless one + for idx, callback in enumerate(trainer.callbacks): + if isinstance(callback, Timer): + trainer.callbacks[idx] = StatelessTimer(cfg.trainer.max_time,) + + # load existing or init new soft prompt GPT model + if cfg.model.get("restore_path", None): + save_restore_connector = NLPSaveRestoreConnector() + if os.path.isdir(cfg.model.restore_path): + save_restore_connector.model_extracted_dir = cfg.model.restore_path + + model_cfg = MegatronRetroFinetuneModel.restore_from( + restore_path=cfg.model.restore_path, + trainer=trainer, + return_config=True, + save_restore_connector=save_restore_connector, + ) + # hydra interpolation does not work here as the interpolation key is lost when PTL saves hparams + model = load_from_nemo( + MegatronRetroFinetuneModel, + cfg, + trainer, + model_cfg, + modify_confg_fn=_modify_config, + save_restore_connector=save_restore_connector, + ) + else: + model = MegatronRetroFinetuneModel(cfg.model, trainer=trainer) + + trainer.fit(model) + + +if __name__ == '__main__': + main() diff --git a/examples/nlp/language_modeling/megatron_retro_pretraining.py b/examples/nlp/language_modeling/megatron_retro_pretraining.py index 6c899f4b99ea..4ab0aa9e63e1 100644 --- a/examples/nlp/language_modeling/megatron_retro_pretraining.py +++ b/examples/nlp/language_modeling/megatron_retro_pretraining.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os + from omegaconf.omegaconf import OmegaConf, open_dict from pytorch_lightning import Trainer from pytorch_lightning.plugins.environments import TorchElasticEnvironment @@ -19,7 +21,13 @@ from pytorch_lightning.trainer.connectors.checkpoint_connector import CheckpointConnector from nemo.collections.nlp.models.language_modeling.megatron_retrieval_model import MegatronRetrievalModel -from nemo.collections.nlp.parts.nlp_overrides import GradScaler, MegatronHalfPrecisionPlugin, NLPDDPStrategy +from nemo.collections.nlp.modules.common.megatron.megatron_init import initialize_model_parallel_for_nemo +from nemo.collections.nlp.parts.nlp_overrides import ( + GradScaler, + MegatronHalfPrecisionPlugin, + NLPDDPStrategy, + NLPSaveRestoreConnector, +) from nemo.core.config import hydra_runner from nemo.utils import logging from nemo.utils.exp_manager import exp_manager @@ -68,8 +76,20 @@ def main(cfg) -> None: # hydra interpolation does not work here as the interpolation key is lost when PTL saves hparams with open_dict(cfg): cfg.model.precision = cfg.trainer.precision - - model = MegatronRetrievalModel(cfg.model, trainer) + # load existing nemo retro model + if cfg.get("restore_from_path", None) is not None: + save_restore_connector = NLPSaveRestoreConnector() + if os.path.isdir(cfg.restore_from_path): + save_restore_connector.model_extracted_dir = cfg.restore_from_path + model = MegatronRetrievalModel.restore_from( + restore_path=cfg.restore_from_path, + trainer=trainer, + override_config_path=cfg.model, + save_restore_connector=save_restore_connector, + strict=False, + ) + else: + model = MegatronRetrievalModel(cfg.model, trainer) trainer.fit(model) diff --git a/nemo/collections/nlp/data/language_modeling/megatron/indexed_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/indexed_dataset.py index 3719a2565f9e..f45d9b7155a8 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/indexed_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/indexed_dataset.py @@ -73,7 +73,7 @@ def infer_dataset_impl(path): return None -def make_builder(out_file, impl, vocab_size=None, chunk_size=64, pad_id=0, retrieval_db=False): +def make_builder(out_file, impl, vocab_size=None, chunk_size=64, pad_id=0, retrieval_db=False, stride=64): if impl == 'mmap': return MMapIndexedDatasetBuilder(out_file, dtype=__best_fitting_dtype(vocab_size)) elif impl == 'retmmap': @@ -83,6 +83,7 @@ def make_builder(out_file, impl, vocab_size=None, chunk_size=64, pad_id=0, retri pad_id=pad_id, retrieval_db=retrieval_db, dtype=__best_fitting_dtype(vocab_size), + stride=stride, ) else: return IndexedDatasetBuilder(out_file) diff --git a/nemo/collections/nlp/data/language_modeling/megatron/indexed_retrieval_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/indexed_retrieval_dataset.py index 014d430a0202..803f8a1c9716 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/indexed_retrieval_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/indexed_retrieval_dataset.py @@ -198,9 +198,8 @@ def __enter__(self): self._file = open(path, 'wb') self._file.write(cls._HDR_MAGIC) - self._file.write(struct.pack('= size: + if chunk_offset * self.stride >= size: raise ValueError('offset is too large') return (self._chunk_id_start[sentence_id] + chunk_offset).item() @@ -522,13 +534,14 @@ def exists(path): class MMapRetrievalIndexedDatasetBuilder(object): - def __init__(self, out_file, chunk_size, pad_id, retrieval_db=False, dtype=np.int64): + def __init__(self, out_file, chunk_size, pad_id, retrieval_db=False, dtype=np.int64, stride=64): self._data_file = open(out_file, 'wb') self._dtype = dtype self.chunk_size = chunk_size self._sizes = [] self.retrieval_db = retrieval_db self.pad_id = pad_id + self.stride = stride def add_item(self, tensor): """ @@ -573,4 +586,4 @@ def finalize(self, index_file): self._data_file.close() with MMapRetrievalIndexedDataset.Index.writer(index_file, self._dtype, self.retrieval_db) as index: - index.write(self._sizes, self.chunk_size) + index.write(self._sizes, self.chunk_size, stride=self.stride) diff --git a/nemo/collections/nlp/data/language_modeling/megatron/retro_fine_tune_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/retro_fine_tune_dataset.py new file mode 100644 index 000000000000..502bb0c09a76 --- /dev/null +++ b/nemo/collections/nlp/data/language_modeling/megatron/retro_fine_tune_dataset.py @@ -0,0 +1,236 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from random import sample + +import numpy as np +import torch + +from nemo.collections.nlp.data.language_modeling.megatron.dataset_utils import get_samples_mapping +from nemo.collections.nlp.data.language_modeling.text_memmap_dataset import JSONLMemMapDataset +from nemo.core import Dataset +from nemo.utils import logging + +__all__ = ['RetroQAFineTuneDataset'] + + +class RetroQAFineTuneDataset(Dataset): + """ + The dataset class for fine tune RETRO models. + + Args: + data (list[strings], list[dicts]): (1) paths to .jsonl or .json files, (2) dict objects corresponding to each input example + tokenizer (tokenizer): Tokenizer from frozen language model + task_templates (dict): Dictionary containing all task template information needed to format prompts. Created in the GPTPromptLearningModel class. + pad_token_id (int): ID of pad token from tokenizer + max_seq_length (int): maximum sequence length for each dataset examples. Examples will either be truncated to fit this length or dropped if they cannot be truncated. + min_seq_length (int): min length of each data example in the dataset. Data examples will be dropped if they do not meet the min length requirements. + add_bos (bool): Whether to add a beginning of sentence token to each data example + add_eos (bool): Whether to add an end of sentence token to each data example + for_train (bool): Whether you're creating a dataset for training or inference + tokens_to_generate (int): (inference only) Number of tokens to generate during inference + """ + + def __init__( + self, + data, + tokenizer, + answer_only_loss: bool, + pad_token_id: int, + max_seq_length: int, + add_bos: bool = False, + add_eos: bool = True, + max_num_samples: int = None, + seed: int = 1234, + neighbors: int = 20, + ): + self.tokenizer = tokenizer + self.pad_token_id = pad_token_id + self.max_seq_length = max_seq_length + self.add_bos = add_bos + self.add_eos = add_eos + self.answer_only_loss = answer_only_loss + self.max_num_samples = max_num_samples + self.seed = seed + self.neighbors = neighbors + + assert self.max_seq_length > 0, "Max sequence length should be greater than 0" + + logging.info("Loading and tokenizing dataset ... ") + + self.indexed_dataset = JSONLMemMapDataset(dataset_paths=[data], tokenizer=None, header_lines=0, workers=12) + # Will be None after this call if `max_num_samples` is None + self._build_samples_mapping(data) + + def _build_samples_mapping(self, file_path): + if self.max_num_samples is not None: + self.samples_mapping = get_samples_mapping( + indexed_dataset=self.indexed_dataset, + data_prefix=file_path, + num_epochs=None, + max_num_samples=self.max_num_samples, + max_seq_length=self.max_seq_length - 2, + short_seq_prob=0, + seed=self.seed, + name=file_path.split('/')[-1], + binary_head=False, + ) + else: + self.samples_mapping = None + + def __len__(self): + if self.max_num_samples is None: + return len(self.indexed_dataset) + else: + return len(self.samples_mapping) + + def __getitem__(self, idx): + if isinstance(idx, np.int64): + idx = idx.item() + + if self.samples_mapping is not None: + assert idx < len(self.samples_mapping) + idx, _, _ = self.samples_mapping[idx] + if isinstance(idx, np.uint32): + idx = idx.item() + + assert idx < len(self.indexed_dataset) + example = self.indexed_dataset[idx] + return self._process_example(example) + + def _process_example(self, example): + """ + Process a single example from the dataset into IDs and other T0-related metadata. + """ + question = example['question'].strip() + tokenized_input = self.tokenizer.text_to_ids(f"question: {question}\n") + # add a space between input and output + if 'answers' in example: + # sample one answer from answers + answer = sample(example['answers'], 1)[0].strip() + tokenized_output = self.tokenizer.text_to_ids(f"answer: {answer}") + else: + tokenized_output = self.tokenizer.text_to_ids('answer: ') + + bos_id = self.tokenizer.bos_id + if self.add_bos: + tokenized_input = [bos_id] + tokenized_input + if self.add_eos: + target = tokenized_output + [self.tokenizer.eos_id] + else: + target = tokenized_output + + # pad the question so 'answer:' coincides with the end of the first chunk of 64 + if len(tokenized_input) < 64: + padding_length = 64 - len(tokenized_input) + tokenized_input = [self.pad_token_id] * padding_length + tokenized_input + + if len(tokenized_input) + len(target) > self.max_seq_length: + cut_tokens = len(tokenized_input) + len(target) - self.max_seq_length + if len(tokenized_input) - cut_tokens > 0: + # cut the input by default + tokenized_input = tokenized_input[: len(tokenized_input) - cut_tokens] + elif len(target) - cut_tokens > 0: + # cut the output + target = target[: len(target) - cut_tokens] + else: + # cut both the input and output + cut_input_tokens = len(tokenized_input) - 1 # retain at least one token + cut_output_tokens = cut_tokens - cut_input_tokens + tokenized_input = tokenized_input[: len(tokenized_input) - cut_input_tokens] + target = target[: len(target) - cut_output_tokens] + + chunks = [] + contexts = example['ctxs'] + assert self.neighbors <= len( + contexts + ), f"specify {self.neighbors}, but only provide {len(contexts)} neighbors in the dataset" + for neighbor in contexts[: self.neighbors]: + tokens = self.tokenizer.text_to_ids(neighbor) + tokens = tokens[:128] + if len(tokens) < 128: + tokens = tokens + [self.pad_token_id] * (128 - len(tokens)) + chunks.append(tokens) + + answer_start_idx = len(tokenized_input) + input_ids = tokenized_input + target + assert len(input_ids) <= 128, "cannot handle more than two chunks yet" + chunks = np.array(chunks).reshape(1, self.neighbors, -1).astype(np.int64) + results = (input_ids, answer_start_idx, chunks) + return results + + def collate_fn(self, batch, tp_workers=0): + """ Prepares input_ids, labels, loss mask, attention_mask, and position ids for global batch """ + input_ids, answer_starts, chunks = zip(*batch) + # convert chunks into torch tensors + chunks = torch.tensor(chunks) + + # Get max sequence length of batch + batch_max = max(len(ids) for ids in input_ids) + + if tp_workers > 1: + # make sure the sequence length is multiply of number of tp_workers, needed for sequence parallel. + resi_padding = (tp_workers - (batch_max - 1) % tp_workers) % tp_workers + else: + resi_padding = 0 + batch_max += resi_padding + input_ids, loss_mask = self.pad_batch_and_build_loss_mask(input_ids, batch_max, answer_starts) + # Should be a label for every token in batch, label is the next token + labels = input_ids[:, 1:].contiguous() + input_ids = input_ids[:, :-1].contiguous() + batch_max -= 1 + + # Loss mask should align with labels + loss_mask = loss_mask[:, 1:].contiguous() + + hidden_mask = input_ids != self.pad_token_id + context_mask = chunks != self.pad_token_id + + # Using causal attention mask for whole input + + return { + 'tokens': input_ids, + 'labels': labels, + 'tokens_mask': hidden_mask, + 'loss_mask': loss_mask, + 'retrieved_emb_mask': context_mask, + 'retrieved_ids': chunks, + } + + def pad_batch_and_build_loss_mask(self, input_ids, batch_max, answer_starts): + """ Pad input_ids in batch to max batch length while building loss mask """ + batch_loss_masks = [] + padded_input_ids = [] + for ids, answer_start_idx in zip(input_ids, answer_starts): + if self.answer_only_loss and answer_start_idx is not None: + # Loss mask where answer tokens are 1.0 and all other tokens are 0.0 + loss_mask = [float(idx >= answer_start_idx) for idx in range(len(ids))] + else: + # Loss mask where virtual tokens are 0.0 and all other tokens are 1.0 + loss_mask = [1.0] * len(ids) + # Pad to max length + input_length = len(ids) + padding_length = batch_max - input_length + ids = ids + [self.pad_token_id] * padding_length + padded_input_ids.append(ids) + + # Account for padding in loss mask + loss_mask.extend([0.0] * padding_length) + batch_loss_masks.append(torch.tensor(loss_mask, dtype=torch.float)) + + # Make into torch tensors + padded_input_ids = torch.tensor(padded_input_ids, dtype=torch.long) + batch_loss_masks = torch.stack(batch_loss_masks) + + return padded_input_ids, batch_loss_masks diff --git a/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py b/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py index 7d6f043c79a8..ddb52c2ab9ba 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py @@ -38,6 +38,7 @@ from nemo.collections.nlp.modules.common.megatron.utils import ( ApexGuardDefaults, average_losses_across_data_parallel_group, + build_position_ids, get_params_for_weight_decay_optimization, ) from nemo.collections.nlp.modules.common.text_generation_strategy import model_inference_strategy_dispatcher @@ -212,6 +213,8 @@ def model_provider_func(self, pre_process, post_process, add_encoder, add_decode ), # whether use the absolute postion encoding tokenizer=self.tokenizer, activations_checkpoint_granularity=self.cfg.get('activations_checkpoint_granularity', None), + megatron_lm_compatible=self.cfg.get('megatron_lm_compatible', False), + version=self.cfg.get('version', 1), ) return model @@ -224,6 +227,7 @@ def forward( token_type_ids=None, labels=None, input_emb=None, + position_ids=None, ): output_tensor = self.model( input_ids=input_ids, @@ -233,6 +237,7 @@ def forward( token_type_ids=token_type_ids, labels=labels, input_emb=input_emb, + position_ids=position_ids, ) return output_tensor @@ -243,8 +248,18 @@ def training_step(self, batch, batch_idx): retrieved_ids = batch['retrieved_ids'] retrieved_attn_mask = batch['retrieved_emb_mask'] labels = batch['labels'] - - loss = self(input_tokens_id, input_attn_mask, retrieved_ids, retrieved_attn_mask, labels=labels) + if self.cfg.get('add_position_embedding', False): + input_position_ids = build_position_ids(input_tokens_id) + else: + input_position_ids = None + loss = self( + input_tokens_id, + input_attn_mask, + retrieved_ids, + retrieved_attn_mask, + labels=labels, + position_ids=input_position_ids, + ) loss_mask = loss_mask.float() lm_loss = torch.sum(loss.view(-1) * loss_mask.reshape(-1)) / loss_mask.sum() reduced_loss = average_losses_across_data_parallel_group([lm_loss]) @@ -333,7 +348,18 @@ def validation_step(self, batch, batch_idx): retrieved_ids = batch['retrieved_ids'] retrieved_attn_mask = batch['retrieved_emb_mask'] labels = batch['labels'] - loss = self(input_tokens_id, input_attn_mask, retrieved_ids, retrieved_attn_mask, labels=labels) + if self.cfg.get('add_position_embedding', False): + input_position_ids = build_position_ids(input_tokens_id) + else: + input_position_ids = None + loss = self( + input_tokens_id, + input_attn_mask, + retrieved_ids, + retrieved_attn_mask, + labels=labels, + position_ids=input_position_ids, + ) loss_mask = loss_mask.float() lm_loss = torch.sum(loss.view(-1) * loss_mask.reshape(-1)) / loss_mask.sum() reduced_loss = average_losses_across_data_parallel_group([lm_loss]) @@ -529,6 +555,7 @@ def fwd_output_only_func(batch, model): set_inference_key_value_memory, inference_max_sequence_len, neighbors, + position_ids, ) = batch if len(retrieved.shape) == 1: @@ -541,6 +568,7 @@ def fwd_output_only_func(batch, model): extra_arg['set_inference_key_value_memory'] = set_inference_key_value_memory[0].item() extra_arg['inference_max_sequence_len'] = inference_max_sequence_len[0].item() extra_arg['neighbors'] = neighbors[0].item() + extra_arg['position_ids'] = position_ids output_tensor = model(tokens, attention_mask, retrieved, retrieved_mask, **extra_arg) diff --git a/nemo/collections/nlp/models/language_modeling/megatron_retro_fine_tune_model.py b/nemo/collections/nlp/models/language_modeling/megatron_retro_fine_tune_model.py new file mode 100644 index 000000000000..89aa13bb55d5 --- /dev/null +++ b/nemo/collections/nlp/models/language_modeling/megatron_retro_fine_tune_model.py @@ -0,0 +1,146 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import json +from functools import partial + +import torch +from omegaconf import DictConfig, ListConfig +from pytorch_lightning.trainer.trainer import Trainer + +from nemo.collections.common.data import ConcatMapDataset +from nemo.collections.common.metrics import MetricStringToTorchMetric +from nemo.collections.common.metrics.classification_accuracy import ExactStringPerCategoryMatchMetric +from nemo.collections.nlp.data.common.sequence_to_sequence_dataset import SequenceToSequenceDataset +from nemo.collections.nlp.data.language_modeling.megatron.base_dataset_utils import ( + get_datasets_weights_and_num_samples, + get_train_valid_test_split_, +) +from nemo.collections.nlp.data.language_modeling.megatron.blendable_dataset import BlendableDataset +from nemo.collections.nlp.data.language_modeling.megatron.megatron_batch_samplers import ( + MegatronPretrainingBatchSampler, +) +from nemo.collections.nlp.data.language_modeling.megatron.retro_fine_tune_dataset import RetroQAFineTuneDataset +from nemo.collections.nlp.models.language_modeling.megatron_retrieval_model import MegatronRetrievalModel +from nemo.collections.nlp.models.language_modeling.megatron_t5_model import MegatronT5Model, T5Sentinel +from nemo.collections.nlp.parts.nlp_overrides import GlobalBatchDataFetcher +from nemo.utils import AppState, logging + +try: + from apex.transformer import parallel_state + from apex.transformer.pipeline_parallel.utils import _reconfigure_microbatch_calculator, get_num_microbatches + + HAVE_APEX = True +except (ImportError, ModuleNotFoundError): + HAVE_APEX = False + + +__all__ = ['MegatronRetroFinetuneModel'] + + +def build_all_datasets( + cfg, tokenizer, train_valid_test_num_samples, +): + """Build train, valid, and test RETRO datasets. + There is one to one mapping between data_prefix and knn_map_path. + Currently only supports one retrieval dataset. + """ + train_dataset = RetroQAFineTuneDataset( + cfg.train_ds.get('file_name'), + tokenizer, + cfg.train_ds.get('answer_only_loss'), + tokenizer.pad_id, + cfg.train_ds.get('seq_length'), + cfg.train_ds.get('add_bos'), + cfg.train_ds.get('add_eos'), + train_valid_test_num_samples[0], + cfg.train_ds.get('seed'), + cfg.train_ds.get('neighbors'), + ) + val_dataset = RetroQAFineTuneDataset( + cfg.val_ds.get('file_name'), + tokenizer, + cfg.val_ds.get('answer_only_loss'), + tokenizer.pad_id, + cfg.val_ds.get('seq_length'), + cfg.val_ds.get('add_bos'), + cfg.val_ds.get('add_eos'), + train_valid_test_num_samples[1], + cfg.val_ds.get('seed'), + cfg.val_ds.get('neighbors'), + ) + test_dataset = RetroQAFineTuneDataset( + cfg.test_ds.get('file_name'), + tokenizer, + cfg.test_ds.get('answer_only_loss'), + tokenizer.pad_id, + cfg.test_ds.get('seq_length'), + cfg.test_ds.get('add_bos'), + cfg.test_ds.get('add_eos'), + train_valid_test_num_samples[2], + cfg.test_ds.get('seed'), + cfg.test_ds.get('neighbors'), + ) + + return train_dataset, val_dataset, test_dataset + + +class MegatronRetroFinetuneModel(MegatronRetrievalModel): + """Finetune RETRO Model """ + + def build_train_valid_test_datasets(self): + logging.info('Building RETRO datasets.') + global_batch_size = self.trainer.world_size * self.cfg.micro_batch_size // self.cfg.tensor_model_parallel_size + # Compute trianing micro-batch steps: total_global_batch_steps x grad_acumms_per_global_batch + max_train_steps = self.trainer.max_steps * self.trainer.accumulate_grad_batches + eval_iters = (max_train_steps // self.trainer.val_check_interval + 1) * self.trainer.limit_val_batches + test_iters = int(self.trainer.limit_test_batches) + + train_valid_test_num_samples = [ + max_train_steps * global_batch_size, + eval_iters * global_batch_size, + test_iters * global_batch_size, + ] + + self._train_ds, self._validation_ds, self._test_ds = build_all_datasets( + cfg=self.cfg.data, tokenizer=self.tokenizer, train_valid_test_num_samples=train_valid_test_num_samples, + ) + if self._train_ds is not None: + logging.info(f'Length of train dataset: {len(self._train_ds)}') + if self._validation_ds is not None: + logging.info(f'Length of val dataset: {len(self._validation_ds)}') + if self._test_ds is not None: + logging.info(f'Length of test dataset: {len(self._test_ds)}') + logging.info(f'Finished building RETRO datasets.') + return self._train_ds, self._validation_ds, self._test_ds + + def build_pretraining_data_loader(self, dataset, consumed_samples): + if isinstance(dataset, BlendableDataset): + collate_fun = dataset.datasets[0].collate_fn + else: + collate_fun = dataset.collate_fn + + collate_fn = partial(collate_fun, tp_workers=0) + global_batch_size = self.trainer.world_size * self.cfg.micro_batch_size // self.cfg.tensor_model_parallel_size + batch_sampler = MegatronPretrainingBatchSampler( + total_samples=len(dataset), + consumed_samples=consumed_samples, + micro_batch_size=self.cfg.micro_batch_size, + global_batch_size=global_batch_size, + data_parallel_rank=parallel_state.get_data_parallel_rank(), + data_parallel_size=parallel_state.get_data_parallel_world_size(), + drop_last=True, + ) + return torch.utils.data.DataLoader( + dataset, batch_sampler=batch_sampler, collate_fn=collate_fn, num_workers=0, pin_memory=True, + ) diff --git a/nemo/collections/nlp/modules/common/lm_utils.py b/nemo/collections/nlp/modules/common/lm_utils.py index 485c30ee9072..a6a5fd57892e 100644 --- a/nemo/collections/nlp/modules/common/lm_utils.py +++ b/nemo/collections/nlp/modules/common/lm_utils.py @@ -35,7 +35,18 @@ ) from nemo.utils import AppState, logging -__all__ = ['get_pretrained_lm_models_list', 'get_lm_model'] +__all__ = ['get_pretrained_lm_models_list', 'get_lm_model', 'pad_batch'] + + +def pad_batch(batch, pad_id, max_len): + context_lengths = [] + max_context_length = max([len(tokens) for tokens in batch]) + for tokens in batch: + context_length = len(tokens) + if context_length < max_context_length + max_len: + tokens.extend([pad_id] * (max_context_length + max_len - context_length)) + context_lengths.append(context_length) + return batch, context_lengths def get_pretrained_lm_models_list(include_external: bool = False) -> List[str]: diff --git a/nemo/collections/nlp/modules/common/megatron/attention.py b/nemo/collections/nlp/modules/common/megatron/attention.py index 522fd80372e0..acc20499bc04 100644 --- a/nemo/collections/nlp/modules/common/megatron/attention.py +++ b/nemo/collections/nlp/modules/common/megatron/attention.py @@ -552,7 +552,6 @@ def forward( # only handles single token increment assert n == 1 self.current_len += n - token_pos = (self.current_len - 1) % chunk_size chunk_id = self.current_len // chunk_size if chunk_id <= 0: # if sequence length less than chunk size, do an early return @@ -594,19 +593,21 @@ def forward( # take care of rotary positional embedding # make sure queries positions are properly shifted to the future - q_pos_emb, k_pos_emb = rotary_pos_emb - # currently implementation is broken - # q need to extend to causal_padding, and just do - # q_pos_emb = F.pad(q_pos_emb, (0, 0, -causal_padding, 0), value = 0.) - if inference_max_sequence_len is not None and not set_inference_key_value_memory: - q_pos_emb = F.pad( - q_pos_emb, (0, 0, 0, 0, 0, 0, -causal_padding - token_pos, -causal_padding + token_pos), value=0.0 - ) - else: - q_pos_emb = F.pad(q_pos_emb, (0, 0, 0, 0, 0, 0, -causal_padding, 0), value=0.0) + if rotary_pos_emb is not None: + q_pos_emb, k_pos_emb = rotary_pos_emb + # currently implementation is broken + # q need to extend to causal_padding, and just do + # q_pos_emb = F.pad(q_pos_emb, (0, 0, -causal_padding, 0), value = 0.) + if inference_max_sequence_len is not None and not set_inference_key_value_memory: + token_pos = (self.current_len - 1) % chunk_size + q_pos_emb = F.pad( + q_pos_emb, (0, 0, 0, 0, 0, 0, -causal_padding - token_pos, -causal_padding + token_pos), value=0.0 + ) + else: + q_pos_emb = F.pad(q_pos_emb, (0, 0, 0, 0, 0, 0, -causal_padding, 0), value=0.0) - k_pos_emb = repeat(k_pos_emb, 'n b h d -> (r n) b h d', r=num_retrieved) - rotary_pos_emb = (q_pos_emb, k_pos_emb) + k_pos_emb = repeat(k_pos_emb, 'n b h d -> (r n) b h d', r=num_retrieved) + rotary_pos_emb = (q_pos_emb, k_pos_emb) # make sure number context chunks is enough assert x.shape[0] // chunk_size == num_chunks diff --git a/nemo/collections/nlp/modules/common/megatron/bert_service.py b/nemo/collections/nlp/modules/common/megatron/bert_service.py new file mode 100644 index 000000000000..658aab825194 --- /dev/null +++ b/nemo/collections/nlp/modules/common/megatron/bert_service.py @@ -0,0 +1,145 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import base64 +import pickle +import threading +import time +from collections import OrderedDict +from typing import List, Union + +import torch +from flask import Flask, jsonify, request +from flask_restful import Api, Resource +from sentence_transformers import SentenceTransformer + +from nemo.collections.common.tokenizers.tokenizer_spec import TokenizerSpec + +PORT_NUM_START = 17190 +# a global dict, map bert name to port number +BERT_MODEL_MAP = OrderedDict() + + +def get_available_port_num(): + output = PORT_NUM_START + return output + len(BERT_MODEL_MAP) + + +class SentenceBertResource(Resource): + """ + SentenceBERT Flask resource. + The PUT method is to get token/str embedding. + """ + + def __init__( + self, bert_model, tokenizer, pool, sentence_bert_batch, + ): + # server + self.bert_model = bert_model + self.tokenizer = tokenizer + self.pool = pool + self.sentence_bert_batch = sentence_bert_batch + self.embedding_dim = self.bert_model.get_sentence_embedding_dimension() + + def put(self): + data = request.get_json() + if isinstance(data, dict): + return jsonify({'dim': self.embedding_dim}) + sentences = data + emb = self.get_emb(sentences) + str_emb = base64.b64encode(pickle.dumps(emb)) + return str_emb.decode('ascii') + + def get_emb(self, query: Union[List[str], str, torch.Tensor]): + if isinstance(query, str): + query = [query] + elif isinstance(query, torch.Tensor): + sentence_list = [] + for q in query: + text = self.tokenizer.ids_to_text(q) + sentence_list.append(text) + query = sentence_list + emb = self.bert_model.encode_multi_process( + sentences=query, pool=self.pool, batch_size=self.sentence_bert_batch + ) + return emb + + +class SentenceBertServer(object): + """ + Flask SentenceBERT server, which helps to calculate str/token embeddings + """ + + def __init__( + self, + name: str, + devices: str, + tokenizer: TokenizerSpec, + sentence_bert: str = 'all-mpnet-base-v2', + sentence_bert_batch: int = 4, + ): + self.app = Flask(__name__, static_url_path='') + + if devices is None or not torch.cuda.is_available(): + device_list = None + else: + device_list = ['cuda:' + str(device) for device in devices.split(',')] + + self.bert_model = SentenceTransformer(sentence_bert) + self.name = name + self.tokenizer = tokenizer + self.pool = self.bert_model.start_multi_process_pool(device_list) + self.sentence_bert_batch = sentence_bert_batch + api = Api(self.app) + api.add_resource( + SentenceBertResource, + '/knn', + resource_class_args=[self.bert_model, self.tokenizer, self.pool, self.sentence_bert_batch,], + ) + + def run(self, url): + port = BERT_MODEL_MAP[self.name] + threading.Thread(target=lambda: self.app.run(host=url, threaded=True, port=port)).start() + + +def start_sentence_bert_server( + name: str, + devices: str, + tokenizer: TokenizerSpec, + sentence_bert: str = 'all-mpnet-base-v2', + sentence_bert_batch: int = 4, +): + """ + Start the sentence bert server method. + It only starts the server at rank 0 worker. + Doesn't support multiple nodes yet. + """ + # register the bert model port number + port_num = get_available_port_num() + BERT_MODEL_MAP[name] = port_num + + if torch.distributed.is_initialized(): + # doesn't handle multiple nodes yet. + # need to set ip address properly for it to work in multiple nodes environment + if torch.distributed.get_rank() == 0: + server = SentenceBertServer(name, devices, tokenizer, sentence_bert, sentence_bert_batch,) + server.run("0.0.0.0") + # sleep to make sure the sentence bert server is full started. + time.sleep(2) + torch.distributed.barrier() + else: + server = SentenceBertServer(name, devices, tokenizer, sentence_bert, sentence_bert_batch,) + server.run("0.0.0.0") + # sleep to make sure the sentence bert server is full started. + time.sleep(2) diff --git a/nemo/collections/nlp/modules/common/megatron/megatron_decoders.py b/nemo/collections/nlp/modules/common/megatron/megatron_decoders.py index 601369887336..3e82537b6b71 100644 --- a/nemo/collections/nlp/modules/common/megatron/megatron_decoders.py +++ b/nemo/collections/nlp/modules/common/megatron/megatron_decoders.py @@ -85,6 +85,8 @@ def get_decoder_model( num_moe_experts=1, moe_frequency=1, moe_dropout=0.0, + turn_off_rop=False, # turn off the RoP positional embedding + version=1, ): """Build language model and return along with the key to save.""" @@ -181,6 +183,8 @@ def get_decoder_model( normalize_attention_scores=normalize_attention_scores, sequence_parallel=sequence_parallel, gradient_accumulation_fusion=gradient_accumulation_fusion, + turn_off_rop=turn_off_rop, + version=version, ) else: raise ValueError(f"Unknown decoder arch = {arch}. Available decoder arch = {AVAILABLE_DECODERS}") diff --git a/nemo/collections/nlp/modules/common/megatron/megatron_encoders.py b/nemo/collections/nlp/modules/common/megatron/megatron_encoders.py index 37e656548ea4..998b16240347 100644 --- a/nemo/collections/nlp/modules/common/megatron/megatron_encoders.py +++ b/nemo/collections/nlp/modules/common/megatron/megatron_encoders.py @@ -87,6 +87,8 @@ def get_encoder_model( num_moe_experts=1, moe_frequency=1, moe_dropout=0.0, + turn_off_rop=False, # turn off the RoP positional embedding + version=1, # model version ): """Build language model and return along with the key to save.""" @@ -183,6 +185,8 @@ def get_encoder_model( normalize_attention_scores=normalize_attention_scores, sequence_parallel=sequence_parallel, gradient_accumulation_fusion=gradient_accumulation_fusion, + turn_off_rop=turn_off_rop, + version=version, ) elif arch == "perceiver": encoder = MegatronPerceiverEncoderModule( diff --git a/nemo/collections/nlp/modules/common/megatron/retrieval_service.py b/nemo/collections/nlp/modules/common/megatron/retrieval_service.py index c599cb1b2bff..1b439a94f85e 100644 --- a/nemo/collections/nlp/modules/common/megatron/retrieval_service.py +++ b/nemo/collections/nlp/modules/common/megatron/retrieval_service.py @@ -27,10 +27,10 @@ import torch from flask import Flask, jsonify, request from flask_restful import Api, Resource -from sentence_transformers import SentenceTransformer from nemo.collections.common.tokenizers.tokenizer_spec import TokenizerSpec from nemo.collections.nlp.data.language_modeling.megatron.indexed_retrieval_dataset import MMapRetrievalIndexedDataset +from nemo.collections.nlp.modules.common.megatron.bert_service import BERT_MODEL_MAP log = logging.getLogger('werkzeug') log.setLevel(logging.ERROR) @@ -40,7 +40,6 @@ PORT_NUM = 17179 PORT_NUM_DYN = 17180 -PORT_NUM_BERT = 17181 def request_data(data, port=PORT_NUM): @@ -92,95 +91,6 @@ def reset(self): self.store[-1] = self.no_retrieval -class SentenceBertResource(Resource): - """ - SentenceBERT Flask resource. - The PUT method is to get token/str embedding. - """ - - def __init__( - self, bert_model, tokenizer, pool, sentence_bert_batch, - ): - # server - self.bert_model = bert_model - self.tokenizer = tokenizer - self.pool = pool - self.sentence_bert_batch = sentence_bert_batch - self.embedding_dim = self.bert_model.get_sentence_embedding_dimension() - - def put(self): - data = request.get_json() - if isinstance(data, dict): - return jsonify({'dim': self.embedding_dim}) - sentences = data - emb = self.get_emb(sentences) - str_emb = base64.b64encode(pickle.dumps(emb)) - return str_emb.decode('ascii') - - def get_emb(self, query: Union[List[str], str, torch.Tensor]): - if isinstance(query, str): - query = [query] - elif isinstance(query, torch.Tensor): - sentence_list = [] - for q in query: - text = self.tokenizer.ids_to_text(q) - sentence_list.append(text) - query = sentence_list - emb = self.bert_model.encode_multi_process( - sentences=query, pool=self.pool, batch_size=self.sentence_bert_batch - ) - return emb - - -class SentenceBertServer(object): - """ - Flask SentenceBERT server, which helps to calculate str/token embeddings - """ - - def __init__( - self, - devices: str, - tokenizer: TokenizerSpec, - sentence_bert: str = 'all-mpnet-base-v2', - sentence_bert_batch: int = 4, - ): - self.app = Flask(__name__, static_url_path='') - - if devices is None or not torch.cuda.is_available(): - device_list = None - else: - device_list = ['cuda:' + str(device) for device in devices.split(',')] - - self.bert_model = SentenceTransformer(sentence_bert) - self.tokenizer = tokenizer - self.pool = self.bert_model.start_multi_process_pool(device_list) - self.sentence_bert_batch = sentence_bert_batch - api = Api(self.app) - api.add_resource( - SentenceBertResource, - '/knn', - resource_class_args=[self.bert_model, self.tokenizer, self.pool, self.sentence_bert_batch,], - ) - - def run(self, url, port=PORT_NUM_BERT): - threading.Thread(target=lambda: self.app.run(host=url, threaded=True, port=port)).start() - - -def start_sentence_bert_server( - devices: str, tokenizer: TokenizerSpec, sentence_bert: str = 'all-mpnet-base-v2', sentence_bert_batch: int = 4 -): - """ - Start the sentence bert server method. - It only starts the server at rank 0 worker. - Doesn't support multiple nodes yet. - """ - - if torch.distributed.get_rank() == 0: - server = SentenceBertServer(devices, tokenizer, sentence_bert, sentence_bert_batch,) - server.run("0.0.0.0") - torch.distributed.barrier() - - class FaissRetrievalResource(Resource): """ Static Faiss Retrieval Flask resource. @@ -188,12 +98,13 @@ class FaissRetrievalResource(Resource): """ def __init__( - self, index, tokenizer, ds, + self, index, tokenizer, ds, query_bert_port, ): # server self.index = index self.tokenizer = tokenizer self.ds = ds + self.query_bert_port = query_bert_port def put(self): data = request.get_json() @@ -215,10 +126,14 @@ def get_knn(self, query: Union[List[str], str, torch.Tensor], neighbors: int): text = self.tokenizer.ids_to_text(q) sentence_list.append(text) query = sentence_list - emb = request_data(query, PORT_NUM_BERT) + emb = request_data(query, self.query_bert_port) emb_data = base64.b64decode(emb.encode()) emb = pickle.loads(emb_data) - D, knn = self.index.search(emb, neighbors) + if self.index.ntotal == 0: + # A workaround to fix searching an empty Faiss index + knn = [[-1] * neighbors for i in range(len(emb))] + else: + _, knn = self.index.search(emb, neighbors) results = [] for sentence_neighbors in knn: chunks = [] @@ -239,7 +154,13 @@ class RetrievalServer(object): """ def __init__( - self, faiss_index: str, faiss_devices: str, nprobe: int, retrieval_index: str, tokenizer: TokenizerSpec, + self, + faiss_index: str, + faiss_devices: str, + nprobe: int, + retrieval_index: str, + tokenizer: TokenizerSpec, + query_bert_port: int, ): self.app = Flask(__name__, static_url_path='') # server @@ -259,13 +180,13 @@ def __init__( co.shard = True self.index = faiss.index_cpu_to_all_gpus(self.index, co, ngpu=len(device_list)) end = time.time() - logging.info('convert Faiss db to GPU takes', end - beg) + logging.info(f'convert Faiss db to GPU takes {end - beg} s') self.index.nprobe = nprobe self.tokenizer = tokenizer self.ds = MMapRetrievalIndexedDataset(retrieval_index) api = Api(self.app) api.add_resource( - FaissRetrievalResource, '/knn', resource_class_args=[self.index, self.tokenizer, self.ds,], + FaissRetrievalResource, '/knn', resource_class_args=[self.index, self.tokenizer, self.ds, query_bert_port], ) def run(self, url, port=PORT_NUM): @@ -278,15 +199,16 @@ class DynamicRetrievalResource(FaissRetrievalResource): The PUT method is to get KNN tokens, add new chunks, reset index. """ - def __init__( - self, index, tokenizer, chunk_size, stride, store, - ): + def __init__(self, index, tokenizer, chunk_size, stride, store, ctx_bert_port, query_bert_port, output_filename): self.index = index self.tokenizer = tokenizer self.chunk_size = chunk_size self.stride = stride self.pad_id = self.tokenizer.pad_id self.ds = store + self.ctx_bert_port = ctx_bert_port + self.query_bert_port = query_bert_port + self.output_filename = output_filename def put(self): data = request.get_json() @@ -301,6 +223,16 @@ def put(self): with lock: # Need to get lock to keep multiple threads from hitting code self.reset() return "success" + elif 'index_name' in data: + with lock: + # serialize the index + index = self.index + if hasattr(faiss, 'index_gpu_to_cpu'): + index = faiss.index_gpu_to_cpu(index) + faiss.write_index(index, data['index_name'] + '_' + self.output_filename + '.index') + # save the data + with open(self.output_filename + '.pkl', 'bw') as f: + pickle.dump(self.ds, f) else: sentences = data['sentences'] add_eos = data['add_eos'] @@ -336,7 +268,7 @@ def add_docs_to_index(self, docs: List[str], add_eos: bool = True): chunk = np_array[i : i + 2 * self.chunk_size] self.ds.add(chunk) chunk_texts.append(self.tokenizer.ids_to_text(chunk)) - emb = request_data(chunk_texts, PORT_NUM_BERT) + emb = request_data(chunk_texts, self.ctx_bert_port) emb_data = base64.b64decode(emb.encode()) emb = pickle.loads(emb_data) self.index.add(emb) # add vectors to the index @@ -348,16 +280,33 @@ class DynamicRetrievalServer(object): """ def __init__( - self, faiss_devices: str, tokenizer: TokenizerSpec, chunk_size: int = 64, stride: int = 32, + self, + faiss_devices: str, + tokenizer: TokenizerSpec, + chunk_size: int = 64, + stride: int = 32, + faiss_index: str = None, + store_file: str = None, + ctx_bert_port: int = 0, + query_bert_port: int = 0, + output_filename: str = 'dynamic_db', ): self.app = Flask(__name__, static_url_path='') has_gpu = torch.cuda.is_available() and hasattr(faiss, "index_gpu_to_cpu") - embedding_dim = request_data({}, PORT_NUM_BERT)['dim'] - self.index = faiss.IndexFlatL2(embedding_dim) # build the index + embedding_dim = request_data({}, ctx_bert_port)['dim'] + + if faiss_index is not None: + self.index = faiss.read_index(faiss_index) + else: + self.index = faiss.IndexFlatL2(embedding_dim) # build the index self.pad_id = tokenizer.pad_id self.chunk_size = chunk_size self.stride = stride - self.store = ChunkStore(chunk_size, self.pad_id) + if store_file is not None: + with open(store_file, 'rb') as f: + self.store = pickle.load(f) + else: + self.store = ChunkStore(chunk_size, self.pad_id) if faiss_devices is None or not torch.cuda.is_available(): device_list = None @@ -372,7 +321,7 @@ def __init__( co.shard = True self.index = faiss.index_cpu_to_all_gpus(self.index, co, ngpu=len(device_list)) end = time.time() - logging.info('convert Faiss db to GPU takes', end - beg) + logging.info(f'convert Faiss db to GPU takes {end - beg} s') self.tokenizer = tokenizer @@ -380,7 +329,16 @@ def __init__( api.add_resource( DynamicRetrievalResource, '/knn', - resource_class_args=[self.index, self.tokenizer, self.chunk_size, self.stride, self.store,], + resource_class_args=[ + self.index, + self.tokenizer, + self.chunk_size, + self.stride, + self.store, + ctx_bert_port, + query_bert_port, + output_filename, + ], ) def run(self, url, port=PORT_NUM_DYN): @@ -395,19 +353,32 @@ class FaissRetrievalService(RetrievalService): """ def __init__( - self, faiss_index: str, faiss_devices: str, nprobe: int, retrieval_index: str, tokenizer: TokenizerSpec, + self, + faiss_index: str, + faiss_devices: str, + nprobe: int, + retrieval_index: str, + tokenizer: TokenizerSpec, + query_bert: str = None, ): self.updatable = False self.tokenizer = tokenizer ds = MMapRetrievalIndexedDataset(retrieval_index) self.chunk_size = ds.chunk_size pad_id = self.tokenizer.pad_id + query_bert_port = BERT_MODEL_MAP[query_bert] # batch, neighbors, 2*chunk_size self.no_retrieval = np.ones((1, 1, 2 * self.chunk_size), dtype=ds._index.dtype) * pad_id - if torch.distributed.get_rank() == 0: - server = RetrievalServer(faiss_index, faiss_devices, nprobe, retrieval_index, tokenizer) + if torch.distributed.is_initialized(): + if torch.distributed.get_rank() == 0: + server = RetrievalServer( + faiss_index, faiss_devices, nprobe, retrieval_index, tokenizer, query_bert_port + ) + server.run("0.0.0.0") + torch.distributed.barrier() + else: + server = RetrievalServer(faiss_index, faiss_devices, nprobe, retrieval_index, tokenizer, query_bert_port) server.run("0.0.0.0") - torch.distributed.barrier() def get_knn(self, query: Union[List[str], str, torch.Tensor], neighbors): if isinstance(query, torch.Tensor): @@ -435,18 +406,53 @@ class DynamicFaissRetrievalService(RetrievalService): """ def __init__( - self, faiss_devices: str, tokenizer: TokenizerSpec, chunk_size: int, stride: int, + self, + faiss_devices: str, + tokenizer: TokenizerSpec, + chunk_size: int, + stride: int, + faiss_index: str = None, + store_file: str = None, + ctx_bert: str = None, + query_bert: str = None, + output_filename: str = 'dynamic_db', ): self.updatable = True self.tokenizer = tokenizer self.chunk_size = chunk_size pad_id = self.tokenizer.pad_id + ctx_bert_port = BERT_MODEL_MAP[ctx_bert] + query_bert_port = BERT_MODEL_MAP[query_bert] # batch, neighbors, 2*chunk_size self.no_retrieval = np.ones((1, 1, 2 * self.chunk_size), dtype=np.int64) * pad_id - if torch.distributed.get_rank() == 0: - server = DynamicRetrievalServer(faiss_devices, tokenizer, chunk_size, stride) + if torch.distributed.is_initialized(): + if torch.distributed.get_rank() == 0: + server = DynamicRetrievalServer( + faiss_devices, + tokenizer, + chunk_size, + stride, + faiss_index, + store_file, + ctx_bert_port, + query_bert_port, + output_filename, + ) + server.run("0.0.0.0") + torch.distributed.barrier() + else: + server = DynamicRetrievalServer( + faiss_devices, + tokenizer, + chunk_size, + stride, + faiss_index, + store_file, + ctx_bert_port, + query_bert_port, + output_filename, + ) server.run("0.0.0.0") - torch.distributed.barrier() def get_knn(self, query: Union[List[str], str, torch.Tensor], neighbors): if isinstance(query, torch.Tensor): @@ -488,26 +494,30 @@ class ComboRetrievalService(RetrievalService): It uses `weights` to determine the number of neighbors for each of the retrieval service members. """ - def __init__(self, retrieval_services, weights): + def __init__(self, retrieval_services, weights, store): self.retrieval_services = retrieval_services self.updatable = any([service.updatable for service in retrieval_services]) + self.store = store weights = np.array(weights) # normalize the weights - self.weights = weights / weights.sum() + weights = weights / weights.sum() + store.set('weights', pickle.dumps(weights)) self.chunk_size = self.retrieval_services[0].chunk_size def update_weights(self, weights): weights = np.array(weights) # normalize the weights - self.weights = weights / weights.sum() + weights = weights / weights.sum() + self.store.set('weights', pickle.dumps(weights)) def get_knn(self, query: Union[List[str], str, torch.Tensor], neighbors): + weights = pickle.loads(self.store.get('weights')) if neighbors == 0: return self.retrieval_services[0].get_knn(query, 0) total_neighbors = 0 results = [] for i, service in enumerate(self.retrieval_services): - k = int(neighbors * self.weights[i]) + k = int(neighbors * weights[i]) if i == len(self.retrieval_services) - 1: k = neighbors - total_neighbors total_neighbors += k diff --git a/nemo/collections/nlp/modules/common/megatron/retrieval_token_level_encoder_decoder.py b/nemo/collections/nlp/modules/common/megatron/retrieval_token_level_encoder_decoder.py index dc15597acbfc..138361b9c958 100644 --- a/nemo/collections/nlp/modules/common/megatron/retrieval_token_level_encoder_decoder.py +++ b/nemo/collections/nlp/modules/common/megatron/retrieval_token_level_encoder_decoder.py @@ -23,7 +23,6 @@ from nemo.collections.nlp.modules.common.megatron.mup.layer import MuReadout from nemo.collections.nlp.modules.common.megatron.utils import ( ApexGuardDefaults, - build_position_ids, init_method_normal, scaled_init_method_normal, ) @@ -92,9 +91,15 @@ def __init__( tokenizer=None, # tokenizer normalize_attention_scores=True, activations_checkpoint_granularity=None, + megatron_lm_compatible=False, + version=1, ): super(MegatronRetrievalTokenLevelEncoderDecoderModule, self).__init__() - + if megatron_lm_compatible: + assert ( + apply_query_key_layer_scaling + ), "megatron lm compatible model has to set apply_query_key_layer_scaling" + assert add_position_embedding, "megatron lm compatible model has to set add_position_embedding" self.parallel_output = parallel_output self.pre_process = pre_process self.post_process = post_process @@ -107,6 +112,7 @@ def __init__( self.eod_id = tokenizer.eos_id self.transformer_block_type = transformer_block_type self.num_chunked_cross_attention = len(dec_cross_attention) + self.megatron_lm_compatible = megatron_lm_compatible if kv_channels is None: assert ( @@ -154,7 +160,9 @@ def __init__( init_method=encoder_init, scaled_init_method=encoder_scaled_init, pre_process=pre_process, - post_process=post_process, + post_process=False + if megatron_lm_compatible + else post_process, # megatron lm model has no final layer_norm init_method_std=init_method_std, use_cpu_initialization=use_cpu_initialization, hidden_dropout=hidden_dropout, @@ -182,6 +190,8 @@ def __init__( chunk_size=chunk_size, layer_number_offset=0, normalize_attention_scores=normalize_attention_scores, + turn_off_rop=megatron_lm_compatible, + version=version, ) self._encoder_key = "encoder" @@ -244,6 +254,8 @@ def __init__( chunk_size=chunk_size, layer_number_offset=0, normalize_attention_scores=normalize_attention_scores, + turn_off_rop=megatron_lm_compatible, + version=version, ) # it is where the chunked cross attention happens @@ -286,6 +298,8 @@ def __init__( chunk_size=chunk_size, layer_number_offset=pre_decoder_num_layers + 1, normalize_attention_scores=normalize_attention_scores, + turn_off_rop=megatron_lm_compatible, + version=version, ) self._pre_decoder_key = "pre_decoder" self._post_decoder_key = "post_decoder" @@ -320,20 +334,22 @@ def forward( set_inference_key_value_memory=False, inference_max_sequence_len=None, neighbors=None, + position_ids=None, ): """ Return value is per token / per dimension (i.e., non collapsed loss value) """ eod_positions = None retrieved_emb = None - if input_ids is not None and self.eod_id is not None: + if input_ids is not None and self.eod_id is not None and not self.megatron_lm_compatible: + # do not reset attention for megatron lm compatible model eod_positions = torch.where(input_ids == self.eod_id) if input_emb is None: if self.pre_process and self.add_encoder: # encoder embeddings if self.add_abs_position_embedding: - input_position_ids = build_position_ids(input_ids) + input_position_ids = position_ids else: input_position_ids = None input_emb = self.encoder_embedding(input_ids, input_position_ids, token_type_ids=token_type_ids) diff --git a/nemo/collections/nlp/modules/common/megatron/retrieval_transformer.py b/nemo/collections/nlp/modules/common/megatron/retrieval_transformer.py index a22a84e41267..76d171eb55da 100644 --- a/nemo/collections/nlp/modules/common/megatron/retrieval_transformer.py +++ b/nemo/collections/nlp/modules/common/megatron/retrieval_transformer.py @@ -79,6 +79,8 @@ def __init__( gradient_accumulation_fusion=False, normalize_attention_scores=True, megatron_legacy=False, + turn_off_rop=False, + version=1, # model version ): super(MegatronRetrievalTransformerEncoderModule, self).__init__() @@ -91,6 +93,8 @@ def __init__( self.hidden_dropout = hidden_dropout self.output_layer_init_method = output_layer_init_method self.parent_model_type = parent_model_type + self.turn_off_rop = turn_off_rop + self.version = version if kv_channels is None: @@ -143,7 +147,8 @@ def __init__( rot_dim = hidden_size // num_attention_heads if kv_channels is None else kv_channels # partial rotary embeddings, which is better than full rotary # Wang and Komatsuzaki et al https://github.com/kingoflolz/mesh-transformer-jax/ - self.rotary_pos_emb = RotaryEmbedding(min(rot_dim, MIN_DIM_HEAD)) + if not turn_off_rop: + self.rotary_pos_emb = RotaryEmbedding(min(rot_dim, MIN_DIM_HEAD)) self.chunk_size = chunk_size self._model_key = 'model' @@ -244,10 +249,7 @@ def forward( # embed_as_context = repeat(encoder_output[:, :seq_index], 'b (k n) d -> (b k r) n d', n=self.chunk_size, r=r) # context_attn_mask = repeat(context_attn_mask[:, :seq_index], 'b (k n) -> (b k r) n', n=self.chunk_size, r=r) - cross_attn_q_pos_emb = self.rotary_pos_emb(rn, offset=0) - if inference_max_sequence_len is not None and not set_inference_key_value_memory: - cross_attn_k_pos_emb = self.rotary_pos_emb(n % self.chunk_size, offset=pos_beg) embed_as_context = repeat(encoder_output[:, :seq_index], 'b (k n) d -> n (b k r) d', n=pos_beg + 1, r=r) context_attn_mask = repeat(context_attn_mask[:, :seq_index], 'b (k n) -> (b k r) n', n=pos_beg + 1, r=r) else: @@ -257,9 +259,16 @@ def forward( context_attn_mask = repeat( context_attn_mask[:, :seq_index], 'b (k n) -> (b k r) n', n=self.chunk_size, r=r ) - cross_attn_k_pos_emb = self.rotary_pos_emb(self.chunk_size, offset=0) - attn_pos_emb = (cross_attn_q_pos_emb, cross_attn_q_pos_emb, cross_attn_k_pos_emb) + if not self.turn_off_rop: + if inference_max_sequence_len is not None and not set_inference_key_value_memory: + cross_attn_k_pos_emb = self.rotary_pos_emb(n % self.chunk_size, offset=pos_beg) + else: + cross_attn_k_pos_emb = self.rotary_pos_emb(self.chunk_size, offset=0) + cross_attn_q_pos_emb = self.rotary_pos_emb(rn, offset=0) + attn_pos_emb = (cross_attn_q_pos_emb, cross_attn_q_pos_emb, cross_attn_k_pos_emb) + else: + attn_pos_emb = None # # convert to Megatron mask enc_attn_mask_3d = build_attention_mask_3d( @@ -353,6 +362,8 @@ def __init__( gradient_accumulation_fusion=False, normalize_attention_scores=True, megatron_legacy=False, + turn_off_rop=False, + version=1, # model version ): super(MegatronRetrievalTransformerDecoderModule, self).__init__() @@ -364,6 +375,8 @@ def __init__( self.hidden_dropout = hidden_dropout self.output_layer_init_method = output_layer_init_method self.parent_model_type = parent_model_type + self.turn_off_rop = turn_off_rop + self.version = version if kv_channels is None: @@ -416,7 +429,8 @@ def __init__( rot_dim = hidden_size // num_attention_heads if kv_channels is None else kv_channels # partial rotary embeddings, which is better than full rotary # Wang and Komatsuzaki et al https://github.com/kingoflolz/mesh-transformer-jax/ - self.rotary_pos_emb = RotaryEmbedding(min(rot_dim, MIN_DIM_HEAD)) + if not turn_off_rop: + self.rotary_pos_emb = RotaryEmbedding(min(rot_dim, MIN_DIM_HEAD)) self.chunk_size = chunk_size self._model_key = 'model' @@ -472,21 +486,18 @@ def forward( else: _, n, _ = dec_input.shape - if set_inference_key_value_memory == True: + if set_inference_key_value_memory: # seq_index = (n // chunk_size) * chunk_size self.current_len = n num_seq_chunks = self.current_len // self.chunk_size - self_attn_emb = self.rotary_pos_emb(self.current_len) elif inference_max_sequence_len is not None: # only handles single token increment assert n == 1 self.current_len += n - self_attn_emb = self.rotary_pos_emb(self.current_len) num_seq_chunks = self.current_len // self.chunk_size else: # this is normal forward without inference num_seq_chunks = n // self.chunk_size - self_attn_emb = self.rotary_pos_emb(n) if retrieved_emb is not None: b, k, r, rn, dim = retrieved_emb.shape @@ -494,16 +505,29 @@ def forward( k == num_seq_chunks ), f'sequence requires {num_seq_chunks} retrieved chunks, but only {k} passed in' # need to add extra chunk size, since it will be shifted - if retrieved_emb is not None: - # -63, -62, ... 63 will be cut into -> [0, ... 63] in the chunk cross attention layer - cross_attn_q_pos_emb = self.rotary_pos_emb(self.chunk_size * 2 - 1, offset=-self.chunk_size + 1) - cross_attn_k_pos_emb = self.rotary_pos_emb(rn, offset=0) - # TODO, the first 64 tokens in retrieved is from the last chunk, align the continuation part with the query tokens - # use the following in the future. [-63, -62, ..., 63, 64] - # cross_attn_k_pos_emb = self.rotary_pos_emb(rn, offset=-self.chunk_size + 1) - attn_pos_emb = (self_attn_emb, cross_attn_q_pos_emb, cross_attn_k_pos_emb) + if not self.turn_off_rop: + if set_inference_key_value_memory: + self_attn_emb = self.rotary_pos_emb(self.current_len) + elif inference_max_sequence_len is not None: + self_attn_emb = self.rotary_pos_emb(self.current_len) + else: + self_attn_emb = self.rotary_pos_emb(n) + if retrieved_emb is not None: + # -63, -62, ... 63 will be cut into -> [0, ... 63] in the chunk cross attention layer + cross_attn_q_pos_emb = self.rotary_pos_emb(self.chunk_size * 2 - 1, offset=-self.chunk_size + 1) + if self.version == 1: + cross_attn_k_pos_emb = self.rotary_pos_emb(rn, offset=0) + elif self.version > 1: + # the first 64 tokens in retrieved is from the last chunk, align the continuation part with the query tokens + # use the following in the future. [-63, -62, ..., 63, 64] + cross_attn_k_pos_emb = self.rotary_pos_emb(rn, offset=-self.chunk_size + 1) + else: + raise ValueError(f'incorrect version number {self.version}') + attn_pos_emb = (self_attn_emb, cross_attn_q_pos_emb, cross_attn_k_pos_emb) + else: + attn_pos_emb = (self_attn_emb, None, None) else: - attn_pos_emb = (self_attn_emb, None, None) + attn_pos_emb = None dec_attn_mask_3d = self._calculate_dec_att_mask(dec_attn_mask, eod_positions) diff --git a/nemo/collections/nlp/modules/common/megatron_web_server.py b/nemo/collections/nlp/modules/common/megatron_web_server.py index d969c532231f..8df5a502a974 100644 --- a/nemo/collections/nlp/modules/common/megatron_web_server.py +++ b/nemo/collections/nlp/modules/common/megatron_web_server.py @@ -115,7 +115,7 @@ def get_demo(share, username, password): top_p = gr.Slider(minimum=0.0, maximum=1.0, step=0.02, value=0.9, label='Top P') top_k = gr.Slider(minimum=0, maximum=10000, step=2, value=0, label='Top K') repetition_penality = gr.Slider( - minimum=0.0, maximum=5.0, step=0.02, value=1.2, label='Repetition penalty' + minimum=1.0, maximum=5.0, step=0.02, value=1.2, label='Repetition penalty' ) with gr.Column(scale=1, min_width=800): input_prompt = gr.Textbox( @@ -147,22 +147,22 @@ def get_retro_demo(share, username, password): with gr.Blocks(css="table, th, td { border: 1px solid blue; table-layout: fixed; width: 100%; }") as demo: with gr.Row(): with gr.Column(scale=2, width=200): - greedy_flag = gr.Checkbox(label="Greedy") + greedy_flag = gr.Checkbox(label="Greedy", value=True) add_BOS = gr.Checkbox(label="Add BOS token", value=False) - token_to_gen = gr.Number(label='Number of Tokens to generate', value=300, type=int) + token_to_gen = gr.Number(label='Number of Tokens to generate', value=30, type=int) min_token_to_gen = gr.Number(label='Min number of Tokens to generate', value=1, type=int) temperature = gr.Slider(minimum=0.0, maximum=10.0, value=1.0, label='Temperature', step=0.1) top_p = gr.Slider(minimum=0.0, maximum=1.0, step=0.02, value=0.9, label='Top P') top_k = gr.Slider(minimum=0, maximum=10000, step=2, value=0, label='Top K') repetition_penality = gr.Slider( - minimum=0.0, maximum=5.0, step=0.02, value=1.2, label='Repetition penalty' + minimum=1.0, maximum=5.0, step=0.02, value=1.2, label='Repetition penalty' ) k_neighbors = gr.Slider(minimum=0, maximum=50, step=1, value=2, label='Retrieved Documents') weights = gr.Slider( - minimum=0.0, maximum=1.0, value=0.5, label='Weight for the first Retrieval', step=0.02 + minimum=0.0, maximum=1.0, value=1.0, label='Weight for the first Retrieval', step=0.02 ) add_retrival_doc = gr.Textbox(label="Add New Retrieval Doc", value="", lines=5,) - add_EOS = gr.Checkbox(label="Add EOS token to Retrieval Doc", value=True) + add_EOS = gr.Checkbox(label="Add EOS token to Retrieval Doc", value=False) with gr.Row(): add_btn = gr.Button(value="Add") reset_btn = gr.Button(value="Reset Index") @@ -177,8 +177,8 @@ def get_retro_demo(share, username, password): lines=5, ) output_box = gr.Textbox(value="", label="Output") - output_retrieval = gr.HTML() btn = gr.Button(value="Submit") + output_retrieval = gr.HTML() btn.click( get_retro_generation, inputs=[ diff --git a/nemo/collections/nlp/modules/common/retro_inference_strategies.py b/nemo/collections/nlp/modules/common/retro_inference_strategies.py new file mode 100644 index 000000000000..0f86d88b16e2 --- /dev/null +++ b/nemo/collections/nlp/modules/common/retro_inference_strategies.py @@ -0,0 +1,469 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import pickle +from typing import List, Tuple + +import numpy as np +import torch +import torch.distributed as dist + +from nemo.collections.nlp.modules.common.lm_utils import pad_batch +from nemo.collections.nlp.modules.common.megatron.bert_service import start_sentence_bert_server +from nemo.collections.nlp.modules.common.megatron.retrieval_service import ( + ComboRetrievalService, + DynamicFaissRetrievalService, + FaissRetrievalService, +) +from nemo.collections.nlp.modules.common.text_generation_strategy import TextGenerationStrategy + + +class RetroModelTextGenerationStrategy(TextGenerationStrategy): + def __init__(self, model, **args): + super().__init__(model) + self.forward_model = self.model.model + self.frequent_query = args['frequent_query'] + self.pad_token_for_retrieval = args['pad_tokens'] + self.store_retrieved = args['store_retrieved'] + weights = args['weights'] + self.store = dist.FileStore('/tmp/filestore_eval', -1) + self.store.set('neighbors', str(args['neighbors'])) + self.megatron_lm_compatible = args['megatron_lm_compatible'] + # start the sentence bert server + for name in args['sentence_bert']: + conf = args['sentence_bert'][name] + start_sentence_bert_server(tokenizer=self.model.tokenizer, name=name, **conf) + services = [] + for service_conf in args['services']: + if service_conf['type'] == 'FaissRetrievalService': + del service_conf['type'] + service = FaissRetrievalService(tokenizer=self.model.tokenizer, **service_conf) + services.append(service) + elif service_conf['type'] == 'DynamicFaissRetrievalService': + del service_conf['type'] + service = DynamicFaissRetrievalService(tokenizer=self.model.tokenizer, **service_conf) + services.append(service) + else: + raise ValueError(f'no such service {service_conf["type"]} implemented') + self.service = ComboRetrievalService(retrieval_services=services, weights=weights, store=self.store) + self.retrieved = [] + self.retrieved_text = [] + self.chunk_size = self.service.chunk_size + + def update_neighbors(self, neighbors): + # dynamically change the number of neighbors during the query + self.store.set('neighbors', str(neighbors)) + + @property + def neighbors(self): + return int(self.store.get('neighbors')) + + def update_weights(self, weights): + # dynamically change the weights between different retrieval services + self.service.update_weights(weights) + + def tokenize_batch(self, sentences, max_len, add_BOS): + """ + convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed + Args: + sentences (List[str]): list of input sentences in str format. + max_len (int): max number of tokens to generate. + add_BOS (bool): whether to add the BOS token at the beginning + Returns: + Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. + """ + tokenizer = self.model.tokenizer + if add_BOS: + context_tokens = [[tokenizer.bos_id] + tokenizer.text_to_ids(s) for s in sentences] + else: + context_tokens = [tokenizer.text_to_ids(s) for s in sentences] + if self.pad_token_for_retrieval: + padded = [] + for line in context_tokens: + if len(line) < self.chunk_size: + pad_len = self.chunk_size - len(line) + if self.megatron_lm_compatible: + # megatron lm use eos to pad + padded.append([tokenizer.eos_id] * pad_len + line) + else: + padded.append([tokenizer.pad_id] * pad_len + line) + else: + padded.append(line) + context_tokens = padded + context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) + context_tokens_tensor = torch.cuda.LongTensor(context_tokens) + context_length_tensor = torch.cuda.LongTensor(context_lengths) + return context_tokens_tensor, context_length_tensor + + def tokenize_batch_with_context_and_completion(self, sentences, max_len, add_BOS): + """ + convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed + Args: + sentences (List[str]): list of input sentences in str format. + max_len (int): max number of tokens to generate. + add_BOS (bool): whether to add the BOS token at the beginning + Returns: + Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. + """ + tokenizer = self.model.tokenizer + if add_BOS: + context_tokens = [ + [[tokenizer.bos_id] + tokenizer.text_to_ids(s[0]), tokenizer.text_to_ids(s[1])] for s in sentences + ] + else: + context_tokens = [[tokenizer.text_to_ids(s[0]), tokenizer.text_to_ids(s[1])] for s in sentences] + if self.pad_token_for_retrieval: + padded = [] + for line in context_tokens: + if len(line[0]) < self.chunk_size: + pad_len = self.chunk_size - len(line[0]) + if self.megatron_lm_compatible: + # megatron lm use eos to pad + padded.append([tokenizer.eos_id] * pad_len + line[0] + line[1]) + else: + padded.append([tokenizer.pad_id] * pad_len + line[0] + line[1]) + else: + padded.append(line[0] + line[1]) + context_tokens = padded + context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) + context_tokens_tensor = torch.cuda.LongTensor(context_tokens) + context_length_tensor = torch.cuda.LongTensor(context_lengths) + return context_tokens_tensor, context_length_tensor + + def clip_max_len(self, maxlen: int) -> int: + """ clip the max len based on the LM model max sequence length""" + if maxlen > self.model.cfg.encoder_seq_length + 1: + maxlen = self.model.cfg.encoder_seq_length + 1 + return maxlen + + def _store_retrieved(self, tokens, neighbors): + tokenizer = self.model.tokenizer + for batch_id in range(len(tokens)): + item = {} + query_text = tokenizer.ids_to_text(tokens[batch_id]) + item['query'] = query_text + item['neighbors'] = [] + for context_id in range(len(neighbors[batch_id])): + neighbor_text = tokenizer.ids_to_text(neighbors[batch_id][context_id]) + item['neighbors'].append(neighbor_text) + self.retrieved_text.append(item) + + def init_batch(self, context_tokens: torch.Tensor, context_length: int): + self.retrieved = [] + self.retrieved_text = [] + """initialize the batch data before the inference steps.""" + # Move to GPU. + tokenizer = self.model.tokenizer + tokens = context_tokens.contiguous().cuda() + micro_batch_size, seq_length = tokens.size() + position_ids = torch.arange(seq_length, dtype=torch.long, device=tokens.device) + self.position_ids = position_ids.unsqueeze(0).repeat(micro_batch_size, 1) + if self.megatron_lm_compatible: + # all TRUE for megatron lm, there is no attention mask + self.attention_mask = torch.ones_like(tokens, dtype=torch.bool) + else: + self.attention_mask = tokens != tokenizer.pad_id + for i in range(0, context_length, 64): + if i > 0: + tokens = context_tokens[:, i - 64 : i] + chunks = self.service.get_knn(tokens, self.neighbors) + if self.store_retrieved: + self._store_retrieved(tokens, chunks) + self.retrieved.append(chunks) + + def prepare_batch_at_step( + self, tokens: torch.Tensor, maxlen: int, micro_batch_size: int, step: int, context_length: int + ) -> Tuple[List[torch.Tensor], List[int]]: + tokenizer = self.model.tokenizer + + if context_length % 64 == 0: + # added a new retrieval context + token_context = tokens[:, context_length - 64 : context_length] + chunks = self.service.get_knn(token_context, self.neighbors) + if self.store_retrieved: + self._store_retrieved(token_context, chunks) + self.retrieved.append(chunks) + elif self.frequent_query and len(self.retrieved) > 0: + token_context = tokens[:, context_length - 64 : context_length] + chunks = self.service.get_knn(token_context, self.neighbors) + if self.store_retrieved: + self._store_retrieved(token_context, chunks) + self.retrieved[-1] = chunks + + # types2use = None + if step == 0: + # Allocate memory for the entire context. + set_inference_key_value_memory = True + tokens2use = tokens[:, :context_length] + positions2use = self.position_ids[:, :context_length] + # not using type2use. uncomment it if it is used + # if type_ids is not None: + # types2use = type_ids[:, :context_length] + else: + # Set this to false so the memory is not reallocated. + set_inference_key_value_memory = False + tokens2use = tokens[:, context_length - 1].view(micro_batch_size, -1) + positions2use = self.position_ids[:, context_length - 1].view(micro_batch_size, -1) + # not using type2use. uncomment it if it is used + # if type_ids is not None: + # types2use = type_ids[:, context_length - 1].view(batch_size, -1) + retrieved = torch.tensor(np.array(self.retrieved), device=torch.cuda.current_device()) + if retrieved.numel() != 0: + retrieved = retrieved.transpose(0, 1).contiguous() + if self.megatron_lm_compatible: + # all TRUE for megatron lm, there is no attention mask + retrieved_mask = torch.ones_like(retrieved, dtype=torch.bool) + else: + retrieved_mask = retrieved != tokenizer.pad_id + if len(retrieved) == 0: + retrieved = torch.tensor([-1] * micro_batch_size) + retrieved_mask = torch.tensor([-1] * micro_batch_size) + + """Prepare batch for each of the inference steps""" + # attention_mask_repeat = torch.concat([self.attention_mask for _ in range(micro_batch_size)]) + setkey_value_array = torch.tensor( + [set_inference_key_value_memory] * micro_batch_size, device=torch.cuda.current_device() + ) + len_array = torch.tensor([maxlen] * micro_batch_size, device=torch.cuda.current_device()) + if self.neighbors == 0: + # no retrieval, use 1 padding + neighbors_array = torch.tensor([1] * micro_batch_size, device=torch.cuda.current_device()) + else: + neighbors_array = torch.tensor([self.neighbors] * micro_batch_size, device=torch.cuda.current_device()) + + batch = [ + tokens2use, + self.attention_mask[:, :context_length], + retrieved, + retrieved_mask, + setkey_value_array, + len_array, + neighbors_array, + positions2use, + ] + tensor_shape = [tokens2use.shape[1], micro_batch_size, self.model.cfg.hidden_size] + return batch, tensor_shape + + +class RetroQAModelTextGenerationStrategy(RetroModelTextGenerationStrategy): + def tokenize_batch(self, questions, max_len, add_BOS): + """ + convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed + Args: + questions (List[str]): list of input questions in str format. + max_len (int): max number of tokens to generate. + add_BOS (bool): whether to add the BOS token at the beginning + Returns: + Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. + """ + tokenizer = self.model.tokenizer + all_lookups = self.service.get_knn(questions, 1 + self.neighbors) + # hack to add "source: " tag + prepend_ids = np.array(tokenizer.text_to_ids('source: ')) + all_lookups = np.pad(all_lookups, ((0, 0), (0, 0), (len(prepend_ids), 0))) + all_lookups[:, :, : len(prepend_ids)] = prepend_ids + all_lookups = all_lookups[:, :, : -len(prepend_ids)] + reuse_neighbors = all_lookups[:, 1:] + self.store.set('reuse_neighbors', pickle.dumps(reuse_neighbors)) + neighbor_tokens = [neighbors[0].tolist() for neighbors in all_lookups] + + # combine question and context + context_tokens = [ + n + tokenizer.text_to_ids('\nquestion: ' + q + ' \nanswer:') for n, q in zip(neighbor_tokens, questions) + ] + + if add_BOS: + context_tokens = [[tokenizer.bos_id] + s for s in context_tokens] + if self.pad_token_for_retrieval: + padded = [] + for line in context_tokens: + pad_len = (self.chunk_size - len(line) % self.chunk_size) % self.chunk_size + if self.megatron_lm_compatible: + padded.append([tokenizer.eos_id] * pad_len + line) + else: + padded.append([tokenizer.pad_id] * pad_len + line) + context_tokens = padded + context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) + context_tokens_tensor = torch.cuda.LongTensor(context_tokens) + context_length_tensor = torch.cuda.LongTensor(context_lengths) + return context_tokens_tensor, context_length_tensor + + def init_batch(self, context_tokens: torch.Tensor, context_length: int): + self.retrieved = [] + self.retrieved_text = [] + self.reuse_neighbors = pickle.loads(self.store.get('reuse_neighbors')) + """initialize the batch data before the inference steps.""" + # Move to GPU. + tokenizer = self.model.tokenizer + tokens = context_tokens.contiguous().cuda() + micro_batch_size, seq_length = tokens.size() + position_ids = torch.arange(seq_length, dtype=torch.long, device=tokens.device) + self.position_ids = position_ids.unsqueeze(0).repeat(micro_batch_size, 1) + if self.megatron_lm_compatible: + # all TRUE for megatron lm, there is no attention mask + self.attention_mask = torch.ones_like(tokens, dtype=torch.bool) + else: + self.attention_mask = tokens != tokenizer.pad_id + for i in range(0, context_length, 64): + if i > 0: + tokens = context_tokens[:, i - 64 : i] + chunks = self.reuse_neighbors + if self.store_retrieved: + self._store_retrieved(tokens, chunks) + self.retrieved.append(chunks) + + def prepare_batch_at_step( + self, tokens: torch.Tensor, maxlen: int, micro_batch_size: int, step: int, context_length: int + ) -> Tuple[List[torch.Tensor], List[int]]: + tokenizer = self.model.tokenizer + + if context_length % 64 == 0: + # added a new retrieval context + token_context = tokens[:, context_length - 64 : context_length] + chunks = self.reuse_neighbors + if self.store_retrieved: + self._store_retrieved(token_context, chunks) + self.retrieved.append(chunks) + elif self.frequent_query and len(self.retrieved) > 0: + token_context = tokens[:, context_length - 64 : context_length] + chunks = self.reuse_neighbors + if self.store_retrieved: + self._store_retrieved(token_context, chunks) + self.retrieved[-1] = chunks + + # types2use = None + if step == 0: + # Allocate memory for the entire context. + set_inference_key_value_memory = True + tokens2use = tokens[:, :context_length] + positions2use = self.position_ids[:, :context_length] + # not using type2use. uncomment it if it is used + # if type_ids is not None: + # types2use = type_ids[:, :context_length] + else: + # Set this to false so the memory is not reallocated. + set_inference_key_value_memory = False + tokens2use = tokens[:, context_length - 1].view(micro_batch_size, -1) + positions2use = self.position_ids[:, context_length - 1].view(micro_batch_size, -1) + # not using type2use. uncomment it if it is used + # if type_ids is not None: + # types2use = type_ids[:, context_length - 1].view(batch_size, -1) + retrieved = torch.tensor(np.array(self.retrieved), device=torch.cuda.current_device()) + if retrieved.numel() != 0: + retrieved = retrieved.transpose(0, 1).contiguous() + if self.megatron_lm_compatible: + # all TRUE for megatron lm, there is no attention mask + retrieved_mask = torch.ones_like(retrieved, dtype=torch.bool) + else: + retrieved_mask = retrieved != tokenizer.pad_id + if len(retrieved) == 0: + retrieved = torch.tensor([-1] * micro_batch_size) + retrieved_mask = torch.tensor([-1] * micro_batch_size) + + """Prepare batch for each of the inference steps""" + # attention_mask_repeat = torch.concat([self.attention_mask for _ in range(micro_batch_size)]) + setkey_value_array = torch.tensor( + [set_inference_key_value_memory] * micro_batch_size, device=torch.cuda.current_device() + ) + len_array = torch.tensor([maxlen] * micro_batch_size, device=torch.cuda.current_device()) + if self.neighbors == 0: + # no retrieval, use 1 padding + neighbors_array = torch.tensor([1] * micro_batch_size, device=torch.cuda.current_device()) + else: + neighbors_array = torch.tensor([self.neighbors] * micro_batch_size, device=torch.cuda.current_device()) + + batch = [ + tokens2use, + self.attention_mask[:, :context_length], + retrieved, + retrieved_mask, + setkey_value_array, + len_array, + neighbors_array, + positions2use, + ] + tensor_shape = [tokens2use.shape[1], micro_batch_size, self.model.cfg.hidden_size] + return batch, tensor_shape + + def post_generation_process(self, output): + sentences = output['sentences'] + modified = [] + for sentence in sentences: + sentence = 'answer:' + sentence.split(' \nanswer:')[1] + modified.append(sentence) + output['sentences'] = modified + return output + + +class RetroFileQAModelTextGenerationStrategy(RetroQAModelTextGenerationStrategy): + def __init__(self, model, **args): + super().__init__(model, **args) + # load the DPR to memory + self.context_db = {} + with open('/dataset/FiD/test.jsonl_title', 'r') as f: + for line in f: + obj = json.loads(line) + self.context_db[obj['question']] = obj + + def tokenize_batch(self, questions, max_len, add_BOS): + """ + convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed + Args: + questions (List[str]): list of input questions in str format. + max_len (int): max number of tokens to generate. + add_BOS (bool): whether to add the BOS token at the beginning + Returns: + Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. + """ + + tokenizer = self.model.tokenizer + + # get context from memory + chunks = [] + first_context = [] + for question in questions: + hash_code = question + if hash_code not in self.context_db: + raise ValueError(f"wrong question is fed: {question}") + contexts = self.context_db[hash_code]['ctxs'] + for i, neighbor in enumerate(contexts[: self.neighbors + 1]): + text = "title: " + neighbor["title"] + ", source: " + neighbor["text"] + if i == 0: + first_context.append(text) + tokens = tokenizer.text_to_ids(text) + tokens = tokens[:128] + if len(tokens) < 128: + tokens = tokens + [tokenizer.eos_id] * (128 - len(tokens)) + chunks.append(tokens) + all_lookups = np.array(chunks).reshape(1, self.neighbors + 1, -1).astype(np.int64) + reuse_neighbors = all_lookups[:, 1:] + self.store.set('reuse_neighbors', pickle.dumps(reuse_neighbors)) + # combine question and context + context_tokens = [ + tokenizer.text_to_ids(n + '\nquestion: ' + q + ' \nanswer:') for n, q in zip(first_context, questions) + ] + + if add_BOS: + context_tokens = [[tokenizer.bos_id] + s for s in context_tokens] + if self.pad_token_for_retrieval: + padded = [] + for line in context_tokens: + pad_len = (self.chunk_size - len(line) % self.chunk_size) % self.chunk_size + padded.append([tokenizer.eos_id] * pad_len + line) + context_tokens = padded + context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) + context_tokens_tensor = torch.cuda.LongTensor(context_tokens) + context_length_tensor = torch.cuda.LongTensor(context_lengths) + return context_tokens_tensor, context_length_tensor diff --git a/nemo/collections/nlp/modules/common/text_generation_server.py b/nemo/collections/nlp/modules/common/text_generation_server.py index b2b98b2361d8..530042fa595b 100644 --- a/nemo/collections/nlp/modules/common/text_generation_server.py +++ b/nemo/collections/nlp/modules/common/text_generation_server.py @@ -20,7 +20,10 @@ from flask import Flask, jsonify, request from flask_restful import Api, Resource -from nemo.collections.nlp.modules.common.text_generation_strategy import RetroModelTextGenerationStrategy +from nemo.collections.nlp.modules.common.retro_inference_strategies import ( + RetroModelTextGenerationStrategy, + RetroQAModelTextGenerationStrategy, +) from nemo.collections.nlp.modules.common.text_generation_utils import generate from nemo.utils import logging @@ -38,6 +41,8 @@ "greedy", "top_k", "top_p", + "neighbors", + "weights", "repetition_penalty", "min_tokens_to_generate", ] @@ -168,7 +173,9 @@ def put(self): if self.inference_strategy is not None: extra['strategy'] = self.inference_strategy # RETRO specific arguments - if isinstance(self.inference_strategy, RetroModelTextGenerationStrategy): + if isinstance( + self.inference_strategy, (RetroModelTextGenerationStrategy, RetroQAModelTextGenerationStrategy) + ): if neighbors is not None: self.inference_strategy.update_neighbors(neighbors) if weights is not None: @@ -195,7 +202,9 @@ def put(self): del output['full_logprob'] if self.inference_strategy is not None: - if isinstance(self.inference_strategy, RetroModelTextGenerationStrategy): + if isinstance( + self.inference_strategy, (RetroModelTextGenerationStrategy, RetroQAModelTextGenerationStrategy) + ): retrieved_doc = self.inference_strategy.retrieved_text output['retrieved'] = retrieved_doc return jsonify(output) diff --git a/nemo/collections/nlp/modules/common/text_generation_strategy.py b/nemo/collections/nlp/modules/common/text_generation_strategy.py index 061e5b56316b..e124a5803079 100644 --- a/nemo/collections/nlp/modules/common/text_generation_strategy.py +++ b/nemo/collections/nlp/modules/common/text_generation_strategy.py @@ -17,12 +17,7 @@ import torch -from nemo.collections.nlp.modules.common.megatron.retrieval_service import ( - ComboRetrievalService, - DynamicFaissRetrievalService, - FaissRetrievalService, - start_sentence_bert_server, -) +from nemo.collections.nlp.modules.common.lm_utils import pad_batch from nemo.collections.nlp.modules.common.megatron.utils import get_ltor_masks_and_position_ids try: @@ -36,17 +31,6 @@ HAVE_APEX = False -def pad_batch(batch, pad_id, max_len): - context_lengths = [] - max_context_length = max([len(tokens) for tokens in batch]) - for tokens in batch: - context_length = len(tokens) - if context_length < max_context_length + max_len: - tokens.extend([pad_id] * (max_context_length + max_len - context_length)) - context_lengths.append(context_length) - return batch, context_lengths - - class TextGenerationStrategy: """ Base class for TextGeneration Strategy @@ -140,7 +124,7 @@ def prepare_batch_at_step( @abc.abstractclassmethod def post_process(self, tokens: torch.Tensor, new_tokens: torch.Tensor, context_length: int): """ - At the end of the inference, post process the inference results + At the end of the single step inference, post process the inference results Args: tokens (torch.Tensor): the context tokens new_token (torch.Tensor): sampled new token id @@ -148,6 +132,14 @@ def post_process(self, tokens: torch.Tensor, new_tokens: torch.Tensor, context_l """ pass + def post_generation_process(self, output): + """ + At the end of the text generation, post process the results + Args: + output (dict): the text generation output dictionary + """ + return output + class GPTModelTextGenerationStrategy(TextGenerationStrategy): def __init__(self, model): @@ -282,216 +274,35 @@ def post_process(self, tokens: torch.Tensor, new_tokens: torch.Tensor, context_l tokens[:, :context_length][(tokens[:, :context_length] >= pseudo_token_ids_start)] = tokenizer.unk_id -class RetroModelTextGenerationStrategy(TextGenerationStrategy): - def __init__(self, model, **args): - super().__init__(model) - self.forward_model = self.model.model - self.frequent_query = args['frequent_query'] - self.pad_token_for_retrieval = args['pad_tokens'] - self.neighbors = args['neighbors'] - self.store_retrieved = args['store_retrieved'] - weights = args['weights'] - # start the sentence bert server - start_sentence_bert_server(tokenizer=self.model.tokenizer, **args['sentence_bert']) - services = [] - for service_conf in args['services']: - if service_conf['type'] == 'FaissRetrievalService': - del service_conf['type'] - service = FaissRetrievalService(tokenizer=self.model.tokenizer, **service_conf) - services.append(service) - elif service_conf['type'] == 'DynamicFaissRetrievalService': - del service_conf['type'] - service = DynamicFaissRetrievalService(tokenizer=self.model.tokenizer, **service_conf) - services.append(service) - else: - raise ValueError(f'no such service {service_conf["type"]} implemented') - self.service = ComboRetrievalService(retrieval_services=services, weights=weights) - self.retrieved = [] - self.retrieved_text = [] - self.chunk_size = self.service.chunk_size - - def update_neighbors(self, neighbors): - # dynamically change the number of neighbors during the query - self.neighbors = neighbors - - def update_weights(self, weights): - # dynamically change the weights between different retrieval services - self.service.update_weights(weights) - - def tokenize_batch(self, sentences, max_len, add_BOS): - """ - convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed - Args: - sentences (List[str]): list of input sentences in str format. - max_len (int): max number of tokens to generate. - add_BOS (bool): whether to add the BOS token at the beginning - Returns: - Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. - """ - tokenizer = self.model.tokenizer - if add_BOS: - context_tokens = [[tokenizer.bos_id] + tokenizer.text_to_ids(s) for s in sentences] - else: - context_tokens = [tokenizer.text_to_ids(s) for s in sentences] - if self.pad_token_for_retrieval: - padded = [] - for line in context_tokens: - if len(line) < self.chunk_size: - pad_len = self.chunk_size - len(line) - padded.append([tokenizer.pad_id] * pad_len + line) - else: - padded.append(line) - context_tokens = padded - context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) - context_tokens_tensor = torch.cuda.LongTensor(context_tokens) - context_length_tensor = torch.cuda.LongTensor(context_lengths) - return context_tokens_tensor, context_length_tensor - - def tokenize_batch_with_context_and_completion(self, sentences, max_len, add_BOS): - """ - convert the sentences into lists of tokens, pad them to the same length, add bos tokens if it is needed - Args: - sentences (List[str]): list of input sentences in str format. - max_len (int): max number of tokens to generate. - add_BOS (bool): whether to add the BOS token at the beginning - Returns: - Tuple[torch.Tensor], the tokenized and padded torch tensor and the token context length tensor. - """ - tokenizer = self.model.tokenizer - if add_BOS: - context_tokens = [ - [[tokenizer.bos_id] + tokenizer.text_to_ids(s[0]), tokenizer.text_to_ids(s[1])] for s in sentences - ] - else: - context_tokens = [[tokenizer.text_to_ids(s[0]), tokenizer.text_to_ids(s[1])] for s in sentences] - if self.pad_token_for_retrieval: - padded = [] - for line in context_tokens: - if len(line[0]) < self.chunk_size: - pad_len = self.chunk_size - len(line[0]) - padded.append([tokenizer.pad_id] * pad_len + line[0] + line[1]) - else: - padded.append(line[0] + line[1]) - context_tokens = padded - context_tokens, context_lengths = pad_batch(context_tokens, tokenizer.eos_id, max_len) - context_tokens_tensor = torch.cuda.LongTensor(context_tokens) - context_length_tensor = torch.cuda.LongTensor(context_lengths) - return context_tokens_tensor, context_length_tensor - - def clip_max_len(self, maxlen: int) -> int: - """ clip the max len based on the LM model max sequence length""" - if maxlen > self.model.cfg.encoder_seq_length + 1: - maxlen = self.model.cfg.encoder_seq_length + 1 - return maxlen - - def _store_retrieved(self, tokens, neighbors): - tokenizer = self.model.tokenizer - for batch_id in range(len(tokens)): - item = {} - query_text = tokenizer.ids_to_text(tokens[batch_id]) - item['query'] = query_text - item['neighbors'] = [] - for context_id in range(len(neighbors[batch_id])): - neighbor_text = tokenizer.ids_to_text(neighbors[batch_id][context_id]) - item['neighbors'].append(neighbor_text) - self.retrieved_text.append(item) - - def init_batch(self, context_tokens: torch.Tensor, context_length: int): - self.retrieved = [] - self.retrieved_text = [] - """initialize the batch data before the inference steps.""" - # Move to GPU. - tokenizer = self.model.tokenizer - tokens = context_tokens.contiguous().cuda() - self.attention_mask = tokens != tokenizer.pad_id - for i in range(0, context_length, 64): - if i > 0: - tokens = context_tokens[:, i - 64 : i] - chunks = self.service.get_knn(tokens, self.neighbors) - if self.store_retrieved: - self._store_retrieved(tokens, chunks) - self.retrieved.append(chunks) - - def prepare_batch_at_step( - self, tokens: torch.Tensor, maxlen: int, micro_batch_size: int, step: int, context_length: int - ) -> Tuple[List[torch.Tensor], List[int]]: - tokenizer = self.model.tokenizer - - if context_length % 64 == 0: - # added a new retrieval context - token_context = tokens[:, context_length - 64 : context_length] - chunks = self.service.get_knn(token_context, self.neighbors) - if self.store_retrieved: - self._store_retrieved(token_context, chunks) - self.retrieved.append(chunks) - elif self.frequent_query and len(self.retrieved) > 0: - token_context = tokens[:, context_length - 64 : context_length] - chunks = self.service.get_knn(token_context, self.neighbors) - if self.store_retrieved: - self._store_retrieved(token_context, chunks) - self.retrieved[-1] = chunks - - # types2use = None - if step == 0: - # Allocate memory for the entire context. - set_inference_key_value_memory = True - tokens2use = tokens[:, :context_length] - # not using type2use. uncomment it if it is used - # if type_ids is not None: - # types2use = type_ids[:, :context_length] - else: - # Set this to false so the memory is not reallocated. - set_inference_key_value_memory = False - tokens2use = tokens[:, context_length - 1].view(micro_batch_size, -1) - # not using type2use. uncomment it if it is used - # if type_ids is not None: - # types2use = type_ids[:, context_length - 1].view(batch_size, -1) - retrieved = torch.tensor(self.retrieved, device=torch.cuda.current_device()) - if retrieved.numel() != 0: - retrieved = retrieved.transpose(0, 1).contiguous() - retrieved_mask = retrieved != tokenizer.pad_id - if len(retrieved) == 0: - retrieved = torch.tensor([-1] * micro_batch_size) - retrieved_mask = torch.tensor([-1] * micro_batch_size) - - """Prepare batch for each of the inference steps""" - # attention_mask_repeat = torch.concat([self.attention_mask for _ in range(micro_batch_size)]) - setkey_value_array = torch.tensor( - [set_inference_key_value_memory] * micro_batch_size, device=torch.cuda.current_device() - ) - len_array = torch.tensor([maxlen] * micro_batch_size, device=torch.cuda.current_device()) - if self.neighbors == 0: - # no retrieval, use 1 padding - neighbors_array = torch.tensor([1] * micro_batch_size, device=torch.cuda.current_device()) - else: - neighbors_array = torch.tensor([self.neighbors] * micro_batch_size, device=torch.cuda.current_device()) - - batch = [ - tokens2use, - self.attention_mask[:, :context_length], - retrieved, - retrieved_mask, - setkey_value_array, - len_array, - neighbors_array, - ] - tensor_shape = [tokens2use.shape[1], micro_batch_size, self.model.cfg.hidden_size] - return batch, tensor_shape - - def model_inference_strategy_dispatcher(model, **args): from nemo.collections.nlp.models.language_modeling.megatron_gpt_prompt_learning_model import ( MegatronGPTPromptLearningModel, ) from nemo.collections.nlp.models.language_modeling.megatron_gpt_model import MegatronGPTModel from nemo.collections.nlp.models.language_modeling.megatron_retrieval_model import MegatronRetrievalModel + from nemo.collections.nlp.modules.common.retro_inference_strategies import ( + RetroModelTextGenerationStrategy, + RetroQAModelTextGenerationStrategy, + RetroFileQAModelTextGenerationStrategy, + ) if isinstance(model, MegatronGPTPromptLearningModel): return PromptLearningModelTextGenerationStrategy(model, **args) elif isinstance(model, MegatronGPTModel): return GPTModelTextGenerationStrategy(model) elif isinstance(model, MegatronRetrievalModel): - return RetroModelTextGenerationStrategy(model, **args) + strategy_name = args['strategy'] + del args['strategy'] + megatron_lm_compatible = model.model.megatron_lm_compatible + args['megatron_lm_compatible'] = megatron_lm_compatible + if strategy_name == 'RetroModelTextGenerationStrategy': + return RetroModelTextGenerationStrategy(model, **args) + elif strategy_name == 'RetroQAModelTextGenerationStrategy': + return RetroQAModelTextGenerationStrategy(model, **args) + elif strategy_name == 'RetroFileQAModelTextGenerationStrategy': + return RetroFileQAModelTextGenerationStrategy(model, **args) + else: + raise ValueError(f'{strategy_name} is not supported for inference') else: raise ValueError(f'{model} is not supported for inference') diff --git a/nemo/collections/nlp/modules/common/text_generation_utils.py b/nemo/collections/nlp/modules/common/text_generation_utils.py index 983203c51965..293f9b4b6de1 100644 --- a/nemo/collections/nlp/modules/common/text_generation_utils.py +++ b/nemo/collections/nlp/modules/common/text_generation_utils.py @@ -535,6 +535,7 @@ def generate( output['full_logprob'] = full_logits output['token_ids'] = decode_tokens output['offsets'] = all_offsets + output = inference_strategy.post_generation_process(output) return output diff --git a/scripts/nlp_language_modeling/build_retrieval_index.py b/scripts/nlp_language_modeling/build_retrieval_index.py index 30dfacf77a08..a0aba86b21bc 100644 --- a/scripts/nlp_language_modeling/build_retrieval_index.py +++ b/scripts/nlp_language_modeling/build_retrieval_index.py @@ -264,6 +264,7 @@ def get_emb(): group.add_argument( '--tokenizer-model', type=str, default=None, help='Path to tokenizer model.', ) + group.add_argument('--no_pq', action='store_true', help="don't use the Product Quantizer") group.add_argument('--vocab-file', type=str, default=None, help='Path to the vocab file') group.add_argument('--workers', type=int, default=None, help='number of workers to run tokenizer') group.add_argument( @@ -273,6 +274,8 @@ def get_emb(): help='used for building the large index in multiple stages', choices=[0, 1, 2], ) + group.add_argument('--faiss_factory', type=str, default=None, help="faiss index factory str") + group.add_argument('--faiss_factory_metric', type=str, default='IP', help="faiss index factory metric, l2 or IP") group.add_argument('--shard_id', type=int, default=None, help='run the job to create the shard_id index') group.add_argument('--total_shards', type=int, default=None, help='total number of faiss index shards') group.add_argument( @@ -377,7 +380,16 @@ def get_emb(): k = 4 # num_nearest neighbors to get quantizer = faiss.IndexFlatIP(emb.shape[1]) # 8 specifies that each sub-vector is encoded as 8 bits - index = faiss.IndexIVFPQ(quantizer, emb.shape[1], nlist, m, 8) + if args.no_pq: + index = faiss.IndexIVFFlat(quantizer, emb.shape[1], nlist) + elif args.faiss_factory is not None: + if args.faiss_factory_metric == 'IP': + metric = faiss.METRIC_INNER_PRODUCT + else: + metric = faiss.METRIC_L2 + index = faiss.index_factory(emb.shape[1], args.faiss_factory, metric) + else: + index = faiss.IndexIVFPQ(quantizer, emb.shape[1], nlist, m, 8) if has_gpu: co = faiss.GpuMultipleClonerOptions() co.useFloat16 = True diff --git a/scripts/nlp_language_modeling/preprocess_data_for_megatron.py b/scripts/nlp_language_modeling/preprocess_data_for_megatron.py index 8f2f3ed595bb..d347febd55d6 100644 --- a/scripts/nlp_language_modeling/preprocess_data_for_megatron.py +++ b/scripts/nlp_language_modeling/preprocess_data_for_megatron.py @@ -240,6 +240,9 @@ def get_args(): group = parser.add_argument_group(title='runtime') group.add_argument('--workers', type=int, default=1, help='Number of worker processes to launch') group.add_argument('--chunk_size', type=int, default=64, help='chunk size used for retrieval') + group.add_argument( + '--chunk_stride_size', type=int, default=64, help='the stride size for neighbor chunks used for retrieval' + ) group.add_argument('--log-interval', type=int, default=100, help='Interval between progress updates') group.add_argument( @@ -309,6 +312,7 @@ def main(): pad_id=tokenizer.pad_id if hasattr(tokenizer, "pad_id") else 0, retrieval_db=args.retrieval_db, vocab_size=tokenizer.vocab_size, + stride=args.chunk_stride_size, ) startup_end = time.time() diff --git a/tests/collections/nlp/test_indexed_retrieval_dataset.py b/tests/collections/nlp/test_indexed_retrieval_dataset.py index 71fd9ebfeea7..ab2b18d390a5 100644 --- a/tests/collections/nlp/test_indexed_retrieval_dataset.py +++ b/tests/collections/nlp/test_indexed_retrieval_dataset.py @@ -41,30 +41,135 @@ @pytest.mark.run_only_on('GPU') @pytest.mark.skipif(not HAVE_APEX, reason="apex is not installed") class TestRetrievalIndexFiles: + @classmethod + def setup_class(cls): + init_method = 'tcp://' + master_ip = 'localhost' + master_port = '6000' + init_method += master_ip + ':' + master_port + torch.distributed.init_process_group(backend='gloo', world_size=1, rank=0, init_method=init_method) + parallel_state.initialize_model_parallel(1, 1) + @pytest.mark.unit def test_index(self): chunk_size = 64 + stride = 32 sizes = np.array([128, 256], dtype=np.int32) dtype = np.int64 itemsize = dtype().itemsize index_file = '/tmp/test.idx' try: with MMapRetrievalIndexedDataset.Index.writer(index_file, dtype, False) as index: - index.write(sizes, chunk_size) + index.write(sizes, chunk_size, stride=stride) index_load = MMapRetrievalIndexedDataset.Index(index_file) assert index_load.chunk_size == chunk_size assert not index_load.retrieval_db assert np.array_equal(index_load.sizes, sizes) - assert np.array_equal(index_load._chunk_id_start, np.array([0, sizes[0] / chunk_size], dtype=np.int64)) assert np.array_equal( - index_load._chunk_address, np.arange(0, sizes.sum() * itemsize, chunk_size * itemsize, dtype=np.int64) + index_load._chunk_id_start, + np.array([0, len(range(0, sizes[0] - chunk_size + 1, stride))], dtype=np.int64), ) + add1 = [i * itemsize for i in list(range(0, sizes[0] - chunk_size + 1, stride))] + start = max(add1) + chunk_size * itemsize + add2 = [i * itemsize + start for i in list(range(0, sizes[1] - chunk_size + 1, stride))] + addr = add1 + add2 + assert np.array_equal(index_load._chunk_address, np.array(addr, dtype=np.int64)) + assert np.array_equal(index_load._pointers, np.array([0, sizes[0] * itemsize], dtype=np.int64)) + assert len(index_load._chunk_address) == index_load.num_chunks + finally: + os.remove(index_file) + + chunk_size = 64 + stride = 64 + sizes = np.array([128, 256], dtype=np.int32) + dtype = np.int64 + itemsize = dtype().itemsize + index_file = '/tmp/test.idx' + try: + with MMapRetrievalIndexedDataset.Index.writer(index_file, dtype, False) as index: + index.write(sizes, chunk_size, stride=stride) + + index_load = MMapRetrievalIndexedDataset.Index(index_file) + assert index_load.chunk_size == chunk_size + assert not index_load.retrieval_db + assert np.array_equal(index_load.sizes, sizes) + assert np.array_equal( + index_load._chunk_id_start, + np.array([0, len(range(0, sizes[0] - chunk_size + 1, stride))], dtype=np.int64), + ) + add1 = [i * itemsize for i in list(range(0, sizes[0] - chunk_size + 1, stride))] + start = max(add1) + chunk_size * itemsize + add2 = [i * itemsize + start for i in list(range(0, sizes[1] - chunk_size + 1, stride))] + addr = add1 + add2 + assert np.array_equal(index_load._chunk_address, np.array(addr, dtype=np.int64)) assert np.array_equal(index_load._pointers, np.array([0, sizes[0] * itemsize], dtype=np.int64)) assert len(index_load._chunk_address) == index_load.num_chunks finally: os.remove(index_file) + @pytest.mark.unit + def test_create_data_index_stride32(self): + chunk_size = 64 + pad_id = 0 + stride = 32 + sentence1 = torch.arange(0, 200, 2, dtype=torch.int64) + padded_size = chunk_size - (len(sentence1) % chunk_size) + gt1 = np.pad(sentence1, (0, padded_size), 'constant', constant_values=pad_id) + + sentence2 = torch.arange(1, 500, 2, dtype=torch.int64) + padded_size = chunk_size - (len(sentence2) % chunk_size) + gt2 = np.pad(sentence2, (0, padded_size), 'constant', constant_values=pad_id) + + data_file = '/tmp/test' + index_file = data_file + '.idx' + bin_file = data_file + '.bin' + try: + builder = MMapRetrievalIndexedDatasetBuilder( + bin_file, chunk_size, pad_id, False, dtype=np.int64, stride=stride + ) + builder.add_item(sentence1) + builder.add_item(sentence2) + builder.finalize(index_file) + # load the data + ds = MMapRetrievalIndexedDataset(data_file) + assert np.array_equal(ds.get(0), gt1) + assert np.array_equal(ds.get(1), gt2) + fetch1, fetch2 = ds[0:2] + assert np.array_equal(fetch1, gt1) + assert np.array_equal(fetch2, gt2) + chunk_id = ds.get_chunk_id(0, 64) + assert chunk_id == 2 + assert ds.from_chunk_id_to_doc_id(0) == 0 + assert ds.from_chunk_id_to_doc_id(1) == 0 + assert ds.from_chunk_id_to_doc_id(2) == 0 + with pytest.raises(ValueError): + ds.get_chunk_id(0, 128) + assert np.array_equal(ds.get_chunk(chunk_id), gt1[64 : 64 + 64]) + chunk_id = ds.get_chunk_id(1, 0) + assert chunk_id == 3 + assert ds.from_chunk_id_to_doc_id(3) == 1 + assert ds.from_chunk_id_to_doc_id(4) == 1 + assert ds.from_chunk_id_to_doc_id(5) == 1 + assert ds.from_chunk_id_to_doc_id(6) == 1 + assert ds.from_chunk_id_to_doc_id(7) == 1 + assert ds.from_chunk_id_to_doc_id(8) == 1 + assert ds.from_chunk_id_to_doc_id(9) == 1 + with pytest.raises(ValueError): + ds.from_chunk_id_to_doc_id(10) + assert np.array_equal(ds.get_chunk(chunk_id), gt2[0:64]) + assert np.array_equal(ds.get_chunk(chunk_id + 1), gt2[stride : stride + chunk_size]) + assert np.array_equal(ds.get_chunk(chunk_id + 2), gt2[stride * 2 : stride * 2 + chunk_size]) + assert np.array_equal(ds.get_chunk(chunk_id + 3), gt2[stride * 3 : stride * 3 + chunk_size]) + assert ds.get_chunk_id(1, 64) == 5 + assert ds.get_chunk_id(1, 128) == 7 + assert ds.get_chunk_id(1, 192) == 9 + with pytest.raises(ValueError): + ds.get_chunk_id(0, 256) + finally: + os.remove(index_file) + os.remove(bin_file) + @pytest.mark.unit def test_create_data_index(self): chunk_size = 64 @@ -120,6 +225,81 @@ def test_create_data_index(self): os.remove(index_file) os.remove(bin_file) + @pytest.mark.unit + def test_create_retrieval_data_index_stride32(self): + stride = 32 + chunk_size = 64 + pad_id = 0 + sentence1 = torch.arange(0, 200, 2, dtype=torch.int64) + padded_size = chunk_size - (len(sentence1) % chunk_size) + gt1 = np.pad(sentence1, (0, padded_size), 'constant', constant_values=pad_id) + padded_gt1 = np.pad(sentence1, (0, padded_size + chunk_size), 'constant', constant_values=pad_id) + + sentence2 = torch.arange(1, 500, 2, dtype=torch.int64) + padded_size = chunk_size - (len(sentence2) % chunk_size) + gt2 = np.pad(sentence2, (0, padded_size), 'constant', constant_values=pad_id) + padded_gt2 = np.pad(sentence2, (0, padded_size + chunk_size), 'constant', constant_values=pad_id) + + data_file = '/tmp/test' + index_file = data_file + '.idx' + bin_file = data_file + '.bin' + try: + builder = MMapRetrievalIndexedDatasetBuilder(bin_file, chunk_size, pad_id, True, stride=stride) + builder.add_item(sentence1) + builder.add_item(sentence2) + builder.finalize(index_file) + # load the data + ds = MMapRetrievalIndexedDataset(data_file) + assert np.array_equal(ds.get(0), gt1) + assert np.array_equal(ds.get(1), gt2) + fetch1, fetch2 = ds[0:2] + assert np.array_equal(fetch1, gt1) + assert np.array_equal(fetch2, gt2) + chunk_id = ds.get_chunk_id(0, 64) + assert chunk_id == 2 + assert ds.from_chunk_id_to_doc_id(0) == 0 + assert ds.from_chunk_id_to_doc_id(1) == 0 + assert ds.from_chunk_id_to_doc_id(2) == 0 + with pytest.raises(ValueError): + ds.get_chunk_id(0, 128) + assert np.array_equal(ds.get_chunk(chunk_id), padded_gt1[64 : 64 + 64 * 2]) + chunk_id = ds.get_chunk_id(1, 0) + assert chunk_id == 3 + assert ds.from_chunk_id_to_doc_id(3) == 1 + assert ds.from_chunk_id_to_doc_id(4) == 1 + assert ds.from_chunk_id_to_doc_id(5) == 1 + assert ds.from_chunk_id_to_doc_id(6) == 1 + assert ds.from_chunk_id_to_doc_id(7) == 1 + assert ds.from_chunk_id_to_doc_id(8) == 1 + assert ds.from_chunk_id_to_doc_id(9) == 1 + with pytest.raises(ValueError): + ds.from_chunk_id_to_doc_id(10) + assert np.array_equal(ds.get_chunk(chunk_id), padded_gt2[0 : chunk_size * 2]) + assert np.array_equal(ds.get_chunk(chunk_id + 1), gt2[stride : stride + chunk_size * 2]) + assert np.array_equal(ds.get_chunk(chunk_id + 2), gt2[stride * 2 : stride * 2 + chunk_size * 2]) + assert np.array_equal(ds.get_chunk(chunk_id + 3), gt2[stride * 3 : stride * 3 + chunk_size * 2]) + assert ds.get_chunk_id(1, 64) == 5 + assert ds.get_chunk_id(1, 128) == 7 + assert ds.get_chunk_id(1, 192) == 9 + with pytest.raises(ValueError): + ds.get_chunk_id(0, 256) + chunk_id = ds.get_chunk_id(1, 64) + assert np.array_equal(ds.get_chunk(chunk_id), padded_gt2[64:192]) + multi_chunks = ds.get_chunk(slice(0, ds.chunks)) + assert np.array_equal(multi_chunks[0], padded_gt1[0 : chunk_size * 2]) + assert np.array_equal(multi_chunks[1], padded_gt1[stride : stride + chunk_size * 2]) + assert np.array_equal(multi_chunks[2], padded_gt1[stride * 2 : stride * 2 + chunk_size * 2]) + assert np.array_equal(multi_chunks[3], padded_gt2[0 : chunk_size * 2]) + assert np.array_equal(multi_chunks[4], padded_gt2[stride : stride + chunk_size * 2]) + assert np.array_equal(multi_chunks[5], padded_gt2[stride * 2 : stride * 2 + chunk_size * 2]) + assert np.array_equal(multi_chunks[6], padded_gt2[stride * 3 : stride * 3 + chunk_size * 2]) + assert np.array_equal(multi_chunks[7], padded_gt2[stride * 4 : stride * 4 + chunk_size * 2]) + assert np.array_equal(multi_chunks[8], padded_gt2[stride * 5 : stride * 5 + chunk_size * 2]) + assert np.array_equal(multi_chunks[9], padded_gt2[stride * 6 : stride * 6 + chunk_size * 2]) + finally: + os.remove(index_file) + os.remove(bin_file) + @pytest.mark.unit def test_create_retrieval_data_index(self): @@ -262,12 +442,6 @@ def test_knn_index(self): @pytest.mark.skipif(not HAVE_APEX, reason="apex is not installed") def test_retro_dataset(self): - init_method = 'tcp://' - master_ip = 'localhost' - master_port = '6000' - init_method += master_ip + ':' + master_port - torch.distributed.init_process_group(backend='gloo', world_size=1, rank=0, init_method=init_method) - parallel_state.initialize_model_parallel(1, 1) chunk_size = 64 pad_id = 0 sentence1 = torch.arange(0, 200, 2, dtype=torch.int64) @@ -418,6 +592,160 @@ class Tokenizer: os.remove(sample_idx_filename) os.remove(shuffle_idx_filename) + @pytest.mark.unit + @pytest.mark.skipif(not HAVE_APEX, reason="apex is not installed") + def test_retro_dataset_stride32(self): + chunk_size = 64 + pad_id = 0 + sentence1 = torch.arange(0, 200, 2, dtype=torch.int64) + sentence2 = torch.arange(1, 500, 2, dtype=torch.int64) + sentence3 = torch.arange(0, 300, 2, dtype=torch.int64) + sentence4 = torch.arange(1, 400, 2, dtype=torch.int64) + + # test the case that + # training data and retrieval data are different + + data_file = '/tmp/test_data' + data_index_file = data_file + '.idx' + data_bin_file = data_file + '.bin' + db_file = '/tmp/test_db_data' + db_index_file = db_file + '.idx' + db_bin_file = db_file + '.bin' + K = 8 + map_index_file = '/tmp/test_map.idx' + index_path = '/tmp' + + cfg = OmegaConf.create({'data': {"index_mapping_dir": index_path}}) + + # dummy tokenizer + class Tokenizer: + eos_id = 1 + pad_id = 0 + + tokenizer = Tokenizer() + + num_samples = 100 + stride = 32 + seq_len = 192 + name = 'test' + data_prefix = 'pref' + seed = 1 + _filename = index_path + '/' + data_prefix + _filename += '_{}_indexmap'.format(name) + _filename += '_{}ns'.format(num_samples) + _filename += '_{}sl'.format(seq_len) + _filename += '_{}s'.format(seed) + doc_idx_filename = _filename + '_doc_idx.npy' + sample_idx_filename = _filename + '_sample_idx.npy' + shuffle_idx_filename = _filename + '_shuffle_idx.npy' + + try: + builder = MMapRetrievalIndexedDatasetBuilder(data_bin_file, chunk_size, pad_id, False, stride=32) + builder.add_item(sentence1) + builder.add_item(sentence2) + builder.finalize(data_index_file) + + builder = MMapRetrievalIndexedDatasetBuilder(db_bin_file, chunk_size, pad_id, True, stride=32) + builder.add_item(sentence3) + builder.add_item(sentence4) + builder.finalize(db_index_file) + + # load the data + data_index = MMapRetrievalIndexedDataset(data_file) + db_index = MMapRetrievalIndexedDataset(db_file) + + with KNNIndex.writer(map_index_file, K) as w: + map_np = np.random.randint(-3, db_index.chunks, (data_index.chunks, K)) + w.write(map_np) + map_index = KNNIndex(map_index_file) + + documents = np.arange(0, data_index.sizes.shape[0]) + d = RETRODataset( + cfg, + None, + tokenizer, + name, + data_prefix, + documents, + data_index, + num_samples, + seq_len, + seed, + map_index, + db_index, + ) + for i in range(len(d)): + record = d[i] + assert record['tokens'].shape[0] == seq_len + assert record['labels'].shape[0] == seq_len + assert record['retrieved_ids'].shape[0] == seq_len // chunk_size + assert record['retrieved_ids'].shape[1] == K + assert record['retrieved_ids'].shape[2] == chunk_size * 2 + assert record['tokens_mask'].shape[0] == seq_len + + finally: + os.remove(data_bin_file) + os.remove(data_index_file) + os.remove(db_bin_file) + os.remove(db_index_file) + os.remove(map_index_file) + os.remove(doc_idx_filename) + os.remove(sample_idx_filename) + os.remove(shuffle_idx_filename) + + # test the case that + # training data and retrieval data are the same + + try: + + builder = MMapRetrievalIndexedDatasetBuilder(db_bin_file, chunk_size, pad_id, True, stride=32) + builder.add_item(sentence1) + builder.add_item(sentence2) + builder.add_item(sentence3) + builder.add_item(sentence4) + builder.finalize(db_index_file) + + # load the data + data_index = MMapRetrievalIndexedDataset(db_file) + db_index = MMapRetrievalIndexedDataset(db_file) + + with KNNIndex.writer(map_index_file, K) as w: + map_np = np.random.randint(-3, db_index.chunks, (data_index.chunks, K)) + w.write(map_np) + map_index = KNNIndex(map_index_file) + + documents = np.arange(0, data_index.sizes.shape[0]) + d = RETRODataset( + cfg, + None, + tokenizer, + name, + data_prefix, + documents, + data_index, + num_samples, + seq_len, + seed, + map_index, + db_index, + ) + for i in range(len(d)): + record = d[i] + assert record['tokens'].shape[0] == seq_len + assert record['labels'].shape[0] == seq_len + assert record['retrieved_ids'].shape[0] == seq_len // chunk_size + assert record['retrieved_ids'].shape[1] == K + assert record['retrieved_ids'].shape[2] == chunk_size * 2 + assert record['tokens_mask'].shape[0] == seq_len + + finally: + os.remove(db_bin_file) + os.remove(db_index_file) + os.remove(map_index_file) + os.remove(doc_idx_filename) + os.remove(sample_idx_filename) + os.remove(shuffle_idx_filename) + @pytest.mark.unit @pytest.mark.skipif(not HAVE_APEX, reason="apex is not installed") def test_dedup(self): From 255d8048c8b0d1dce0d97b311e41dc813cc31d98 Mon Sep 17 00:00:00 2001 From: Roman Korostik Date: Mon, 30 Jan 2023 22:41:27 +0400 Subject: [PATCH 09/73] [TTS] GAN-based spectrogram enhancer (#5565) * [TTS] add SpectrogramEnhancer based on StyleGAN 2 Signed-off-by: Roman Korostik * [TTS] some tests for spectrogram enhancer Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: a tiny clean up Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: log images during training Signed-off-by: Roman Korostik * exp_manager: pass save_on_train_epoch_end to checkpointing callback Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: add training script and config examples Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix comments Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: don't assume FastPitch Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: better input shapes handling Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix porting error Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix logging and .nemo saving Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: clean up scaling Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: formatting Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: update examples Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: shape handling Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove LoggerCollection handling Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: copyright notice for tests Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: use process_batch helper Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: return empty list of available models Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: some docs Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: style --fix Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: chan_last -> channel_last Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove unused imports Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove unused return value Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: losses are nn.Modules now Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: init optimizers from config Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: formatting Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: unused imports Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: typechecking Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: more tests Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix logging images Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: unclutter prepare_batch Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: init generator and discriminator from the config for consistency with other NeMo models Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: update spectrogram range in the example config Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: comment on loss weights in the example config Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: rename Conv2DMod to Conv2DModulated Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove unused imports Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix CodeQL import warnings Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: type_as_recursive -> to_device_recursive Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: move to_device_recursive to helpers Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: move losses to a separate module, add comments Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: add optimizers' entries to config Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix test configs Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: support length masking for 3-dim tensors Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: add masking to spectrogram normalization Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix tests Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: add spectrogram normalization tests Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix imports and formatting in tests Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix docstring typo Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: rename G and D to generator and discriminator Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: better argument naming in interfaces (condition -> input_spectograms, target -> target_spectrograms) Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: formatting Signed-off-by: Roman Korostik * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * [TTS] SpectrogramEnhancer: fix import warnings in modules Signed-off-by: Roman Korostik * [TTS] add resynthesize_dataset.py script Signed-off-by: Roman Korostik * [TTS] add PairedRealFakeSpectrogramsDataset Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: update example config to reflect new data setup Signed-off-by: Roman Korostik * [TTS] resynthesize_dataset.py: remove unused imports Signed-off-by: Roman Korostik * [TTS] resynthesize_dataset.py: use nemo manifest handling Signed-off-by: Roman Korostik * [TTS] resynthesize_dataset.py: remove unused import Signed-off-by: Roman Korostik * [TTS] resynthesize_dataset.py: underscores for .npy names Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove return value from a test Signed-off-by: Roman Korostik * [TTS] add length masking helper Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: use common tts length mask function Signed-off-by: Roman Korostik * [TTS] unused imports in tts helpers Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: fix an import Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: introduce computed upsample_factor to generator Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: clean up and clarify validation data setup Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: remove a hardcoded path in the example config Signed-off-by: Roman Korostik * [TTS] SpectrogramEnhancer: configurize max_spectrogram_length in generator Signed-off-by: Roman Korostik * [TTS] resynthesize_dataset.py: consistent dashes and underscores in CLI args Signed-off-by: Roman Korostik * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: Roman Korostik Signed-off-by: Roman Korostik Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- examples/tts/conf/spectrogram-enhancer.yaml | 88 +++++ examples/tts/spectrogram_enhancer.py | 33 ++ nemo/collections/tts/helpers/helpers.py | 42 +- .../tts/losses/spectrogram_enhancer_losses.py | 102 +++++ nemo/collections/tts/models/__init__.py | 2 + .../tts/models/spectrogram_enhancer.py | 315 +++++++++++++++ .../tts/modules/spectrogram_enhancer.py | 371 ++++++++++++++++++ nemo/collections/tts/torch/data.py | 37 ++ nemo/utils/exp_manager.py | 1 + requirements/requirements_tts.txt | 1 + .../tts/resynthesize_dataset.py | 232 +++++++++++ .../tts/test_spectrogram_enhancer.py | 161 ++++++++ 12 files changed, 1384 insertions(+), 1 deletion(-) create mode 100644 examples/tts/conf/spectrogram-enhancer.yaml create mode 100644 examples/tts/spectrogram_enhancer.py create mode 100644 nemo/collections/tts/losses/spectrogram_enhancer_losses.py create mode 100644 nemo/collections/tts/models/spectrogram_enhancer.py create mode 100644 nemo/collections/tts/modules/spectrogram_enhancer.py create mode 100644 scripts/dataset_processing/tts/resynthesize_dataset.py create mode 100644 tests/collections/tts/test_spectrogram_enhancer.py diff --git a/examples/tts/conf/spectrogram-enhancer.yaml b/examples/tts/conf/spectrogram-enhancer.yaml new file mode 100644 index 000000000000..6e254a797f0a --- /dev/null +++ b/examples/tts/conf/spectrogram-enhancer.yaml @@ -0,0 +1,88 @@ +name: "spectrogram-enhancer" + +model: + n_bands: 80 + latent_dim: 192 + style_depth: 4 + network_capacity: 16 + mixed_prob: 0.9 + fmap_max: 192 + max_spectrogram_length: 2000 # in frames, upper bound + + generator: + _target_: "nemo.collections.tts.modules.spectrogram_enhancer.Generator" + n_bands: ${model.n_bands} + latent_dim: ${model.latent_dim} + network_capacity: ${model.network_capacity} + style_depth: ${model.style_depth} + fmap_max: ${model.fmap_max} + max_spectrogram_length: ${model.max_spectrogram_length} + + discriminator: + _target_: "nemo.collections.tts.modules.spectrogram_enhancer.Discriminator" + n_bands: ${model.n_bands} + network_capacity: ${model.network_capacity} + fmap_max: ${model.fmap_max} + + consistency_loss_weight: 10.0 # somewhere in [1., 100.], less for clean datasets, higher for noisier + gradient_penalty_loss_weight: 10.0 # read stylegan papers before changing + gradient_penalty_loss_every_n_steps: 4 + + # Spectrogram values range, calculated over your dataset with matching STFT parameters. + # Needed for treating spectrograms as images with pixel values around [0, 1]. + # For LibriTTS, you can try [-13.18, 4.78] + spectrogram_min_value: ??? + spectrogram_max_value: ??? + + train_ds: + dataset: + _target_: "nemo.collections.tts.torch.data.PairedRealFakeSpectrogramsDataset" + manifest_filepath: ??? + dataloader_params: + drop_last: true + shuffle: true + batch_size: 8 + num_workers: 2 + + generator_opt: + _target_: torch.optim.Adam + lr: 2e-4 + betas: [0.5, 0.9] + + discriminator_opt: + _target_: torch.optim.Adam + lr: 2e-4 + betas: [0.5, 0.9] + +trainer: + num_nodes: 1 + devices: 1 + accelerator: gpu + strategy: ddp + precision: 32 + max_epochs: 4 + accumulate_grad_batches: 1 + gradient_clip_val: 1000.0 + log_every_n_steps: 1000 + # we don't really need validation + check_val_every_n_epoch: null + limit_val_batches: 0.0 + benchmark: false + # provided by exp_manager + enable_checkpointing: False + logger: false + +exp_manager: + exp_dir: "" + name: ${name} + create_tensorboard_logger: true + create_checkpoint_callback: true + # no good stopping rule, keep every checkpoint + # tune n_epochs for size of your dataset to avoid wasting space + checkpoint_callback_params: + every_n_epochs: 1 + save_on_train_epoch_end: true + save_top_k: -1 + monitor: "g_loss" + resume_if_exists: false + resume_ignore_no_checkpoint: false diff --git a/examples/tts/spectrogram_enhancer.py b/examples/tts/spectrogram_enhancer.py new file mode 100644 index 000000000000..336729236d74 --- /dev/null +++ b/examples/tts/spectrogram_enhancer.py @@ -0,0 +1,33 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytorch_lightning as pl + +from nemo.collections.tts.models import SpectrogramEnhancerModel +from nemo.core.config import hydra_runner +from nemo.utils.exp_manager import exp_manager + + +@hydra_runner(config_path="conf", config_name="spectrogram-enhancer") +def main(cfg): + trainer = pl.Trainer(**cfg.trainer) + exp_manager(trainer, cfg=cfg.get("exp_manager", None)) + model = SpectrogramEnhancerModel(cfg=cfg.model, trainer=trainer) + lr_logger = pl.callbacks.LearningRateMonitor() + trainer.callbacks.extend([lr_logger]) + trainer.fit(model) + + +if __name__ == '__main__': + main() # noqa pylint: disable=no-value-for-parameter diff --git a/nemo/collections/tts/helpers/helpers.py b/nemo/collections/tts/helpers/helpers.py index 561a9e0564c6..535a33cf92e9 100644 --- a/nemo/collections/tts/helpers/helpers.py +++ b/nemo/collections/tts/helpers/helpers.py @@ -49,8 +49,8 @@ import matplotlib.pylab as plt import numpy as np import torch +from einops import rearrange from numba import jit, prange -from numpy import ndarray from nemo.collections.tts.torch.tts_data_types import DATA_STR2DATA_CLASS, MAIN_DATA_TYPES, WithLens from nemo.utils import logging @@ -671,3 +671,43 @@ def process_batch(batch_data, sup_data_types_set): batch_dict[name + "_lens"] = batch_data[batch_index] batch_index = batch_index + 1 return batch_dict + + +def to_device_recursive(e, device: torch.device): + """ + Use .to(device) on all tensors within nested lists, tuples, values ofdicts + Returns a new structure with tensors moved to target device, leaving other data intact. + + The intended use is to move collections of tensors to a device while: + - avoiding calling specific movers like .cpu() or .cuda() + - avoiding stuff like .to(torch.device("cuda:{some_variable}")) + """ + if isinstance(e, (list, tuple)): + return [to_device_recursive(elem, device) for elem in e] + elif isinstance(e, dict): + return {key: to_device_recursive(value, device) for key, value in e.items()} + elif isinstance(e, torch.Tensor): + return e.to(device) + else: + return e + + +def mask_sequence_tensor(tensor: torch.Tensor, lengths: torch.Tensor): + """ + For tensors containing sequences, zero out out-of-bound elements given lengths of every element in the batch. + + tensor: tensor of shape (B, D, L) or (B, D1, D2, L), + lengths: LongTensor of shape (B,) + """ + batch_size, *_, max_lengths = tensor.shape + + if len(tensor.shape) == 3: + mask = torch.ones(batch_size, 1, max_lengths).cumsum(dim=-1).type_as(lengths) + mask = mask <= rearrange(lengths, "b -> b 1 1") + elif len(tensor.shape) == 4: + mask = torch.ones(batch_size, 1, 1, max_lengths).cumsum(dim=-1).type_as(lengths) + mask = mask <= rearrange(lengths, "b -> b 1 1 1") + else: + raise ValueError("Can only mask tensors of shape B x D x L and B x D1 x D2 x L") + + return tensor * mask diff --git a/nemo/collections/tts/losses/spectrogram_enhancer_losses.py b/nemo/collections/tts/losses/spectrogram_enhancer_losses.py new file mode 100644 index 000000000000..6e29dcb2ad49 --- /dev/null +++ b/nemo/collections/tts/losses/spectrogram_enhancer_losses.py @@ -0,0 +1,102 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# MIT License +# +# Copyright (c) 2020 Phil Wang +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# The following is largely based on code from https://github.com/lucidrains/stylegan2-pytorch + +import torch +import torch.nn.functional as F +from einops import rearrange +from torch.autograd import grad as torch_grad + +from nemo.collections.tts.helpers.helpers import mask_sequence_tensor + + +class GradientPenaltyLoss(torch.nn.Module): + """ + R1 loss from [1], used following [2] + [1] Mescheder et. al. - Which Training Methods for GANs do actually Converge? 2018, https://arxiv.org/abs/1801.04406 + [2] Karras et. al. - A Style-Based Generator Architecture for Generative Adversarial Networks, 2018 (https://arxiv.org/abs/1812.04948) + """ + + def __init__(self, weight: float = 10.0): + super().__init__() + self.weight = weight + + def __call__(self, images, output): + batch_size, *_ = images.shape + gradients = torch_grad( + outputs=output, + inputs=images, + grad_outputs=torch.ones(output.size(), device=images.device), + create_graph=True, + retain_graph=True, + only_inputs=True, + )[0] + + gradients = gradients.reshape(batch_size, -1) + return self.weight * ((gradients.norm(2, dim=1) - 1) ** 2).mean() + + +class GeneratorLoss(torch.nn.Module): + def __call__(self, fake_logits): + return fake_logits.mean() + + +class HingeLoss(torch.nn.Module): + def __call__(self, real_logits, fake_logits): + return (F.relu(1 + real_logits) + F.relu(1 - fake_logits)).mean() + + +class ConsistencyLoss(torch.nn.Module): + """ + Loss to keep SpectrogramEnhancer from generating extra sounds. + L1 distance on x0.25 Mel scale (20 bins for typical 80-bin scale) + """ + + def __init__(self, weight: float = 10): + super().__init__() + self.weight = weight + + def __call__(self, condition, output, lengths): + *_, w, h = condition.shape + w, h = w // 4, h + + condition = F.interpolate(condition, size=(w, h), mode="bilinear", antialias=True) + output = F.interpolate(output, size=(w, h), mode="bilinear", antialias=True) + + dist = (condition - output).abs() + dist = mask_sequence_tensor(dist, lengths) + return (dist / rearrange(lengths, "b -> b 1 1 1")).sum(dim=-1).mean() * self.weight diff --git a/nemo/collections/tts/models/__init__.py b/nemo/collections/tts/models/__init__.py index adb93b65e61a..9b279f4eccb4 100644 --- a/nemo/collections/tts/models/__init__.py +++ b/nemo/collections/tts/models/__init__.py @@ -17,6 +17,7 @@ from nemo.collections.tts.models.hifigan import HifiGanModel from nemo.collections.tts.models.mixer_tts import MixerTTSModel from nemo.collections.tts.models.radtts import RadTTSModel +from nemo.collections.tts.models.spectrogram_enhancer import SpectrogramEnhancerModel from nemo.collections.tts.models.tacotron2 import Tacotron2Model from nemo.collections.tts.models.two_stages import GriffinLimModel, MelPsuedoInverseModel, TwoStagesModel from nemo.collections.tts.models.univnet import UnivNetModel @@ -36,4 +37,5 @@ "UnivNetModel", "VitsModel", "WaveGlowModel", + "SpectrogramEnhancerModel", ] diff --git a/nemo/collections/tts/models/spectrogram_enhancer.py b/nemo/collections/tts/models/spectrogram_enhancer.py new file mode 100644 index 000000000000..d7625e1b51d6 --- /dev/null +++ b/nemo/collections/tts/models/spectrogram_enhancer.py @@ -0,0 +1,315 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# MIT License +# +# Copyright (c) 2020 Phil Wang +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# The following is largely based on code from https://github.com/lucidrains/stylegan2-pytorch + +from random import random, randrange +from typing import List, Optional + +import torch +import torch.nn.functional as F +import torchvision +from einops import rearrange +from hydra.utils import instantiate +from omegaconf import DictConfig +from pytorch_lightning import Trainer +from pytorch_lightning.loggers import TensorBoardLogger, WandbLogger +from torch.utils.tensorboard.writer import SummaryWriter + +from nemo.collections.tts.helpers.helpers import mask_sequence_tensor, to_device_recursive +from nemo.collections.tts.losses.spectrogram_enhancer_losses import ( + ConsistencyLoss, + GeneratorLoss, + GradientPenaltyLoss, + HingeLoss, +) +from nemo.core import Exportable, ModelPT, typecheck +from nemo.core.neural_types import LengthsType, MelSpectrogramType, NeuralType +from nemo.core.neural_types.elements import BoolType +from nemo.utils import logging + + +class SpectrogramEnhancerModel(ModelPT, Exportable): + """ + GAN-based model to add details to blurry spectrograms from TTS models like Tacotron or FastPitch. Based on StyleGAN 2 [1] + [1] Karras et. al. - Analyzing and Improving the Image Quality of StyleGAN (https://arxiv.org/abs/1912.04958) + """ + + def __init__(self, cfg: DictConfig, trainer: Trainer = None) -> None: + self.spectrogram_model = None + super().__init__(cfg=cfg, trainer=trainer) + + self.generator = instantiate(cfg.generator) + self.discriminator = instantiate(cfg.discriminator) + + self.generator_loss = GeneratorLoss() + self.discriminator_loss = HingeLoss() + self.consistency_loss = ConsistencyLoss(cfg.consistency_loss_weight) + self.gradient_penalty_loss = GradientPenaltyLoss(cfg.gradient_penalty_loss_weight) + + def move_to_correct_device(self, e): + return to_device_recursive(e, next(iter(self.generator.parameters())).device) + + def normalize_spectrograms(self, spectrogram: torch.Tensor, lengths: torch.Tensor) -> torch.Tensor: + spectrogram = spectrogram - self._cfg.spectrogram_min_value + spectrogram = spectrogram / (self._cfg.spectrogram_max_value - self._cfg.spectrogram_min_value) + return mask_sequence_tensor(spectrogram, lengths) + + def unnormalize_spectrograms(self, spectrogram: torch.Tensor, lengths: torch.Tensor) -> torch.Tensor: + spectrogram = spectrogram * (self._cfg.spectrogram_max_value - self._cfg.spectrogram_min_value) + spectrogram = spectrogram + self._cfg.spectrogram_min_value + return mask_sequence_tensor(spectrogram, lengths) + + def generate_zs(self, batch_size: int = 1, mixing: bool = False): + if mixing and self._cfg.mixed_prob < random(): + mixing_point = randrange(1, self.generator.num_layers) + first_part = [torch.randn(batch_size, self._cfg.latent_dim)] * mixing_point + second_part = [torch.randn(batch_size, self._cfg.latent_dim)] * (self.generator.num_layers - mixing_point) + zs = [*first_part, *second_part] + else: + zs = [torch.randn(batch_size, self._cfg.latent_dim)] * self.generator.num_layers + + return self.move_to_correct_device(zs) + + def generate_noise(self, batch_size: int = 1) -> torch.Tensor: + noise = torch.rand(batch_size, self._cfg.n_bands, 4096, 1) + return self.move_to_correct_device(noise) + + def pad_spectrograms(self, spectrograms): + multiplier = self.generator.upsample_factor + *_, max_length = spectrograms.shape + return F.pad(spectrograms, (0, multiplier - max_length % multiplier)) + + @typecheck( + input_types={ + "input_spectrograms": NeuralType(("B", "D", "T_spec"), MelSpectrogramType()), + "lengths": NeuralType(("B"), LengthsType()), + "mixing": NeuralType(None, BoolType(), optional=True), + "normalize": NeuralType(None, BoolType(), optional=True), + } + ) + def forward( + self, *, input_spectrograms: torch.Tensor, lengths: torch.Tensor, mixing: bool = False, normalize: bool = True, + ): + """ + Generator forward pass. Noise inputs will be generated. + + input_spectrograms: batch of spectrograms, typically synthetic + lengths: length for every spectrogam in the batch + mixing: style mixing, usually True during training + normalize: normalize spectrogram range to ~[0, 1], True for normal use + + returns: batch of enhanced spectrograms + + For explanation of style mixing refer to [1] + [1] Karras et. al. - A Style-Based Generator Architecture for Generative Adversarial Networks, 2018 (https://arxiv.org/abs/1812.04948) + """ + + return self.forward_with_custom_noise( + input_spectrograms=input_spectrograms, + lengths=lengths, + mixing=mixing, + normalize=normalize, + zs=None, + ws=None, + noise=None, + ) + + def forward_with_custom_noise( + self, + input_spectrograms: torch.Tensor, + lengths: torch.Tensor, + zs: Optional[List[torch.Tensor]] = None, + ws: Optional[List[torch.Tensor]] = None, + noise: Optional[torch.Tensor] = None, + mixing: bool = False, + normalize: bool = True, + ): + """ + Generator forward pass. Noise inputs will be generated if None. + + input_spectrograms: batch of spectrograms, typically synthetic + lenghts: length for every spectrogam in the batch + zs: latent noise inputs on the unit sphere (either this or ws or neither) + ws: latent noise inputs in the style space (either this or zs or neither) + noise: per-pixel indepentent gaussian noise + mixing: style mixing, usually True during training + normalize: normalize spectrogram range to ~[0, 1], True for normal use + + returns: batch of enhanced spectrograms + + For explanation of style mixing refer to [1] + For definititions of z, w [2] + [1] Karras et. al. - A Style-Based Generator Architecture for Generative Adversarial Networks, 2018 (https://arxiv.org/abs/1812.04948) + [2] Karras et. al. - Analyzing and Improving the Image Quality of StyleGAN, 2019 (https://arxiv.org/abs/1912.04958) + """ + batch_size, *_, max_length = input_spectrograms.shape + + # generate noise + if zs is not None and ws is not None: + raise ValueError( + "Please specify either zs or ws or neither, but not both. It is not clear which one to use." + ) + + if zs is None: + zs = self.generate_zs(batch_size, mixing) + if ws is None: + ws = [self.generator.style_mapping(z) for z in zs] + if noise is None: + noise = self.generate_noise(batch_size) + + input_spectrograms = rearrange(input_spectrograms, "b c l -> b 1 c l") + # normalize if needed, mask and pad appropriately + if normalize: + input_spectrograms = self.normalize_spectrograms(input_spectrograms, lengths) + input_spectrograms = self.pad_spectrograms(input_spectrograms) + + # the main call + enhanced_spectrograms = self.generator(input_spectrograms, lengths, ws, noise) + + # denormalize if needed, mask and remove padding + if normalize: + enhanced_spectrograms = self.unnormalize_spectrograms(enhanced_spectrograms, lengths) + enhanced_spectrograms = enhanced_spectrograms[:, :, :, :max_length] + enhanced_spectrograms = rearrange(enhanced_spectrograms, "b 1 c l -> b c l") + + return enhanced_spectrograms + + def training_step(self, batch, batch_idx, optimizer_idx): + input_spectrograms, target_spectrograms, lengths = batch + + with torch.no_grad(): + input_spectrograms = self.normalize_spectrograms(input_spectrograms, lengths) + target_spectrograms = self.normalize_spectrograms(target_spectrograms, lengths) + + # train discriminator + if optimizer_idx == 0: + enhanced_spectrograms = self.forward( + input_spectrograms=input_spectrograms, lengths=lengths, mixing=True, normalize=False + ) + enhanced_spectrograms = rearrange(enhanced_spectrograms, "b c l -> b 1 c l") + fake_logits = self.discriminator(enhanced_spectrograms, input_spectrograms, lengths) + + target_spectrograms_ = rearrange(target_spectrograms, "b c l -> b 1 c l").requires_grad_() + real_logits = self.discriminator(target_spectrograms_, input_spectrograms, lengths) + d_loss = self.discriminator_loss(real_logits, fake_logits) + self.log("d_loss", d_loss, prog_bar=True) + + if batch_idx % self._cfg.gradient_penalty_loss_every_n_steps == 0: + gp_loss = self.gradient_penalty_loss(target_spectrograms_, real_logits) + self.log("d_loss_gp", gp_loss, prog_bar=True) + return d_loss + gp_loss + + return d_loss + + # train generator + if optimizer_idx == 1: + enhanced_spectrograms = self.forward( + input_spectrograms=input_spectrograms, lengths=lengths, mixing=True, normalize=False + ) + + input_spectrograms = rearrange(input_spectrograms, "b c l -> b 1 c l") + enhanced_spectrograms = rearrange(enhanced_spectrograms, "b c l -> b 1 c l") + + fake_logits = self.discriminator(enhanced_spectrograms, input_spectrograms, lengths) + g_loss = self.generator_loss(fake_logits) + c_loss = self.consistency_loss(input_spectrograms, enhanced_spectrograms, lengths) + + self.log("g_loss", g_loss, prog_bar=True) + self.log("c_loss", c_loss, prog_bar=True) + + with torch.no_grad(): + target_spectrograms = rearrange(target_spectrograms, "b c l -> b 1 c l") + self.log_illustration(target_spectrograms, input_spectrograms, enhanced_spectrograms, lengths) + return g_loss + c_loss + + def configure_optimizers(self): + generator_opt = instantiate(self._cfg.generator_opt, params=self.generator.parameters(),) + discriminator_opt = instantiate(self._cfg.discriminator_opt, params=self.discriminator.parameters()) + return [discriminator_opt, generator_opt], [] + + def setup_training_data(self, train_data_config): + dataset = instantiate(train_data_config.dataset) + self._train_dl = torch.utils.data.DataLoader( + dataset, collate_fn=dataset.collate_fn, **train_data_config.dataloader_params + ) + + def setup_validation_data(self, val_data_config): + """ + There is no validation step for this model. + It is not clear whether any of used losses is a sensible metric for choosing between two models. + This might change in the future. + """ + pass + + @classmethod + def list_available_models(cls): + return [] + + def log_illustration(self, target_spectrograms, input_spectrograms, enhanced_spectrograms, lengths): + if self.global_rank != 0: + return + + if not self.loggers: + return + + step = self.trainer.global_step // 2 # because of G/D training + if step % self.trainer.log_every_n_steps != 0: + return + + idx = 0 + length = int(lengths.flatten()[idx].item()) + tensor = torch.stack( + [ + enhanced_spectrograms - input_spectrograms, + input_spectrograms, + enhanced_spectrograms, + target_spectrograms, + ], + dim=0, + ).cpu()[:, idx, :, :, :length] + + grid = torchvision.utils.make_grid(tensor, nrow=1).clamp(0.0, 1.0) + + for logger in self.loggers: + if isinstance(logger, TensorBoardLogger): + writer: SummaryWriter = logger.experiment + writer.add_image("spectrograms", grid, global_step=step) + writer.flush() + elif isinstance(logger, WandbLogger): + logger.log_image("spectrograms", [grid], caption=["residual, input, output, ground truth"], step=step) + else: + logging.warning("Unsupported logger type: %s", str(type(logger))) diff --git a/nemo/collections/tts/modules/spectrogram_enhancer.py b/nemo/collections/tts/modules/spectrogram_enhancer.py new file mode 100644 index 000000000000..b60acdc7f06e --- /dev/null +++ b/nemo/collections/tts/modules/spectrogram_enhancer.py @@ -0,0 +1,371 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# MIT License +# +# Copyright (c) 2020 Phil Wang +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# The following is largely based on code from https://github.com/lucidrains/stylegan2-pytorch + +import math +from functools import partial +from math import log2 +from typing import List + +import torch +import torch.nn.functional as F +from einops import rearrange +from kornia.filters import filter2d + +from nemo.collections.tts.helpers.helpers import mask_sequence_tensor + + +class Blur(torch.nn.Module): + def __init__(self): + super().__init__() + f = torch.Tensor([1, 2, 1]) + self.register_buffer("f", f) + + def forward(self, x): + f = self.f + f = f[None, None, :] * f[None, :, None] + return filter2d(x, f, normalized=True) + + +class EqualLinear(torch.nn.Module): + def __init__(self, in_dim, out_dim, lr_mul=1, bias=True): + super().__init__() + self.weight = torch.nn.Parameter(torch.randn(out_dim, in_dim)) + if bias: + self.bias = torch.nn.Parameter(torch.zeros(out_dim)) + + self.lr_mul = lr_mul + + def forward(self, input): + return F.linear(input, self.weight * self.lr_mul, bias=self.bias * self.lr_mul) + + +class StyleMapping(torch.nn.Module): + def __init__(self, emb, depth, lr_mul=0.1): + super().__init__() + + layers = [] + for _ in range(depth): + layers.extend([EqualLinear(emb, emb, lr_mul), torch.nn.LeakyReLU(0.2, inplace=True)]) + + self.net = torch.nn.Sequential(*layers) + + def forward(self, x): + x = F.normalize(x, dim=1) + return self.net(x) + + +class RGBBlock(torch.nn.Module): + def __init__(self, latent_dim, input_channel, upsample, channels=3): + super().__init__() + self.input_channel = input_channel + self.to_style = torch.nn.Linear(latent_dim, input_channel) + + out_filters = channels + self.conv = Conv2DModulated(input_channel, out_filters, 1, demod=False) + + self.upsample = ( + torch.nn.Sequential(torch.nn.Upsample(scale_factor=2, mode="bilinear", align_corners=False), Blur(),) + if upsample + else None + ) + + def forward(self, x, prev_rgb, istyle): + style = self.to_style(istyle) + x = self.conv(x, style) + + if prev_rgb is not None: + x = x + prev_rgb + + if self.upsample is not None: + x = self.upsample(x) + + return x + + +class Conv2DModulated(torch.nn.Module): + """ + Modulated convolution. + For details refer to [1] + [1] Karras et. al. - Analyzing and Improving the Image Quality of StyleGAN (https://arxiv.org/abs/1912.04958) + """ + + def __init__( + self, in_chan, out_chan, kernel, demod=True, stride=1, dilation=1, eps=1e-8, **kwargs, + ): + super().__init__() + self.filters = out_chan + self.demod = demod + self.kernel = kernel + self.stride = stride + self.dilation = dilation + self.weight = torch.nn.Parameter(torch.randn((out_chan, in_chan, kernel, kernel))) + self.eps = eps + torch.nn.init.kaiming_normal_(self.weight, a=0, mode="fan_in", nonlinearity="leaky_relu") + + def _get_same_padding(self, size, kernel, dilation, stride): + return ((size - 1) * (stride - 1) + dilation * (kernel - 1)) // 2 + + def forward(self, x, y): + b, c, h, w = x.shape + + w1 = y[:, None, :, None, None] + w2 = self.weight[None, :, :, :, :] + weights = w2 * (w1 + 1) + + if self.demod: + d = torch.rsqrt((weights ** 2).sum(dim=(2, 3, 4), keepdim=True) + self.eps) + weights = weights * d + + x = x.reshape(1, -1, h, w) + + _, _, *ws = weights.shape + weights = weights.reshape(b * self.filters, *ws) + + padding = self._get_same_padding(h, self.kernel, self.dilation, self.stride) + x = F.conv2d(x, weights, padding=padding, groups=b) + + x = x.reshape(-1, self.filters, h, w) + return x + + +class GeneratorBlock(torch.nn.Module): + def __init__( + self, latent_dim, input_channels, filters, upsample=True, upsample_rgb=True, channels=1, + ): + super().__init__() + self.upsample = torch.nn.Upsample(scale_factor=2, mode="bilinear", align_corners=False) if upsample else None + + self.to_style1 = torch.nn.Linear(latent_dim, input_channels) + self.to_noise1 = torch.nn.Linear(1, filters) + self.conv1 = Conv2DModulated(input_channels, filters, 3) + + self.to_style2 = torch.nn.Linear(latent_dim, filters) + self.to_noise2 = torch.nn.Linear(1, filters) + self.conv2 = Conv2DModulated(filters, filters, 3) + + self.activation = torch.nn.LeakyReLU(0.2, inplace=True) + self.to_rgb = RGBBlock(latent_dim, filters, upsample_rgb, channels) + + def forward(self, x, prev_rgb, istyle, inoise): + if self.upsample is not None: + x = self.upsample(x) + + inoise = inoise[:, : x.shape[2], : x.shape[3], :] + noise1 = self.to_noise1(inoise).permute((0, 3, 1, 2)) + noise2 = self.to_noise2(inoise).permute((0, 3, 1, 2)) + + style1 = self.to_style1(istyle) + x = self.conv1(x, style1) + x = self.activation(x + noise1) + + style2 = self.to_style2(istyle) + x = self.conv2(x, style2) + x = self.activation(x + noise2) + + rgb = self.to_rgb(x, prev_rgb, istyle) + return x, rgb + + +class DiscriminatorBlock(torch.nn.Module): + def __init__(self, input_channels, filters, downsample=True): + super().__init__() + self.conv_res = torch.nn.Conv2d(input_channels, filters, 1, stride=(2 if downsample else 1)) + + self.net = torch.nn.Sequential( + torch.nn.Conv2d(input_channels, filters, 3, padding=1), + torch.nn.LeakyReLU(0.2, inplace=True), + torch.nn.Conv2d(filters, filters, 3, padding=1), + torch.nn.LeakyReLU(0.2, inplace=True), + ) + + self.downsample = ( + torch.nn.Sequential(Blur(), torch.nn.Conv2d(filters, filters, 3, padding=1, stride=2)) + if downsample + else None + ) + + def forward(self, x): + res = self.conv_res(x) + x = self.net(x) + if self.downsample is not None: + x = self.downsample(x) + x = (x + res) * (1 / math.sqrt(2)) + return x + + +class Generator(torch.nn.Module): + def __init__( + self, + n_bands, + latent_dim, + style_depth, + network_capacity=16, + channels=1, + fmap_max=512, + max_spectrogram_length=2000, + ): + super().__init__() + self.image_size = n_bands + self.latent_dim = latent_dim + self.num_layers = int(log2(n_bands) - 1) + self.style_depth = style_depth + + self.style_mapping = StyleMapping(self.latent_dim, self.style_depth, lr_mul=0.1) + + filters = [network_capacity * (2 ** (i + 1)) for i in range(self.num_layers)][::-1] + + set_fmap_max = partial(min, fmap_max) + filters = list(map(set_fmap_max, filters)) + init_channels = filters[0] + filters = [init_channels, *filters] + + in_out_pairs = zip(filters[:-1], filters[1:]) + + self.initial_conv = torch.nn.Conv2d(filters[0], filters[0], 3, padding=1) + self.blocks = torch.nn.ModuleList([]) + + for ind, (in_chan, out_chan) in enumerate(in_out_pairs): + not_first = ind != 0 + not_last = ind != (self.num_layers - 1) + + block = GeneratorBlock( + latent_dim, in_chan, out_chan, upsample=not_first, upsample_rgb=not_last, channels=channels, + ) + self.blocks.append(block) + + for m in self.modules(): + if isinstance(m, (torch.nn.Conv2d, torch.nn.Linear)): + torch.nn.init.kaiming_normal_(m.weight, a=0, mode="fan_in", nonlinearity="leaky_relu") + for block in self.blocks: + torch.nn.init.zeros_(block.to_noise1.weight) + torch.nn.init.zeros_(block.to_noise1.bias) + torch.nn.init.zeros_(block.to_noise2.weight) + torch.nn.init.zeros_(block.to_noise2.bias) + + initial_block_size = n_bands // self.upsample_factor, math.ceil(max_spectrogram_length / self.upsample_factor) + self.initial_block = torch.nn.Parameter( + torch.randn((1, init_channels, *initial_block_size)), requires_grad=False + ) + + def add_scaled_condition(self, target: torch.Tensor, condition: torch.Tensor, condition_lengths: torch.Tensor): + *_, target_height, _ = target.shape + *_, height, _ = condition.shape + + scale = height // target_height + + # scale appropriately + condition = F.interpolate(condition, size=target.shape[-2:], mode="bilinear") + + # add and mask + result = (target + condition) / 2 + result = mask_sequence_tensor(result, (condition_lengths / scale).ceil().long()) + + return result + + @property + def upsample_factor(self): + return 2 ** sum(1 for block in self.blocks if block.upsample) + + def forward(self, condition: torch.Tensor, lengths: torch.Tensor, ws: List[torch.Tensor], noise: torch.Tensor): + batch_size, _, _, max_length = condition.shape + + x = self.initial_block.expand(batch_size, -1, -1, -1) + x = x[:, :, :, : max_length // self.upsample_factor] + + rgb = None + x = self.initial_conv(x) + + for style, block in zip(ws, self.blocks): + x, rgb = block(x, rgb, style, noise) + + x = self.add_scaled_condition(x, condition, lengths) + rgb = self.add_scaled_condition(rgb, condition, lengths) + + return rgb + + +class Discriminator(torch.nn.Module): + def __init__( + self, n_bands, network_capacity=16, channels=1, fmap_max=512, + ): + super().__init__() + num_layers = int(log2(n_bands) - 1) + num_init_filters = channels + + blocks = [] + filters = [num_init_filters] + [(network_capacity * 4) * (2 ** i) for i in range(num_layers + 1)] + + set_fmap_max = partial(min, fmap_max) + filters = list(map(set_fmap_max, filters)) + chan_in_out = list(zip(filters[:-1], filters[1:])) + + blocks = [] + + for ind, (in_chan, out_chan) in enumerate(chan_in_out): + is_not_last = ind != (len(chan_in_out) - 1) + + block = DiscriminatorBlock(in_chan, out_chan, downsample=is_not_last) + blocks.append(block) + + self.blocks = torch.nn.ModuleList(blocks) + + channel_last = filters[-1] + latent_dim = channel_last + + self.final_conv = torch.nn.Conv2d(channel_last, channel_last, 3, padding=1) + self.to_logit = torch.nn.Linear(latent_dim, 1) + + for m in self.modules(): + if isinstance(m, (torch.nn.Conv2d, torch.nn.Linear)): + torch.nn.init.kaiming_normal_(m.weight, a=0, mode="fan_in", nonlinearity="leaky_relu") + + def forward(self, x, condition: torch.Tensor, lengths: torch.Tensor): + for block in self.blocks: + x = block(x) + scale = condition.shape[-1] // x.shape[-1] + x = mask_sequence_tensor(x, (lengths / scale).ceil().long()) + + x = self.final_conv(x) + + scale = condition.shape[-1] // x.shape[-1] + x = mask_sequence_tensor(x, (lengths / scale).ceil().long()) + + x = x.mean(axis=-2) + x = (x / rearrange(lengths / scale, "b -> b 1 1")).sum(axis=-1) + x = self.to_logit(x) + return x.squeeze() diff --git a/nemo/collections/tts/torch/data.py b/nemo/collections/tts/torch/data.py index 113826af8cef..a5e0e01f3a41 100644 --- a/nemo/collections/tts/torch/data.py +++ b/nemo/collections/tts/torch/data.py @@ -24,6 +24,7 @@ import librosa import numpy as np import torch +from einops import rearrange from tqdm import tqdm from nemo.collections.asr.parts.preprocessing.features import WaveformFeaturizer @@ -1106,6 +1107,42 @@ def __len__(self): return len(self.data) +class PairedRealFakeSpectrogramsDataset(Dataset): + def __init__( + self, manifest_filepath: Union[str, Path], + ): + manifest_filepath = Path(manifest_filepath) + with Path(manifest_filepath).open() as f: + logging.info(f"Loading paired spectrogram dataset from {manifest_filepath}") + self.manifest = [] + for line in f: + entry = json.loads(line.strip()) + assert "mel_filepath" in entry + assert "mel_gt_filepath" in entry + self.manifest.append(entry) + + logging.info(f"Manifest describes {len(self)} spectrogram pairs") + + def __len__(self): + return len(self.manifest) + + def __getitem__(self, index): + entry = self.manifest[index] + pred_spec = np.load(entry["mel_filepath"]) + true_spec = np.load(entry["mel_gt_filepath"]) + return torch.from_numpy(pred_spec.T), torch.from_numpy(true_spec.T) + + def _collate_fn(self, batch): + pred_specs, true_specs = zip(*batch) + lengths = [spec.shape[-1] for spec in true_specs] + + pred_specs = torch.nn.utils.rnn.pad_sequence(pred_specs, batch_first=True) + true_specs = torch.nn.utils.rnn.pad_sequence(true_specs, batch_first=True) + lengths = torch.LongTensor(lengths) + + return rearrange(pred_specs, "b l c -> b c l"), rearrange(true_specs, "b l c -> b c l"), lengths + + class FastPitchSSLDataset(Dataset): def __init__( self, diff --git a/nemo/utils/exp_manager.py b/nemo/utils/exp_manager.py index 807c6370bf75..4b1668fc319d 100644 --- a/nemo/utils/exp_manager.py +++ b/nemo/utils/exp_manager.py @@ -87,6 +87,7 @@ class CallbackParams: always_save_nemo: bool = False save_nemo_on_train_end: Optional[bool] = True # Whether to automatically save .nemo file durin on_train_end hook model_parallel_size: Optional[int] = None # tensor parallel size * pipeline parallel size + save_on_train_epoch_end: Optional[bool] = False # Save after training, not after validation @dataclass diff --git a/requirements/requirements_tts.txt b/requirements/requirements_tts.txt index 6d77ba71bd6e..d4604a044191 100644 --- a/requirements/requirements_tts.txt +++ b/requirements/requirements_tts.txt @@ -2,6 +2,7 @@ attrdict einops inflect jieba +kornia librosa matplotlib nltk diff --git a/scripts/dataset_processing/tts/resynthesize_dataset.py b/scripts/dataset_processing/tts/resynthesize_dataset.py new file mode 100644 index 000000000000..57150b63eb90 --- /dev/null +++ b/scripts/dataset_processing/tts/resynthesize_dataset.py @@ -0,0 +1,232 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +This script is a helper for resynthesizing TTS dataset using a pretrained text-to-spectrogram model. +Goal of resynthesis (as opposed to text-to-speech) is to use the largest amount of ground-truth features from existing speech data. +For example, for resynthesis we want to have the same pitch and durations instead of ones predicted by the model. +The results are to be used for some other task: vocoder finetuning, spectrogram enhancer training, etc. + +Let's say we have the following toy dataset: +/dataset/manifest.json +/dataset/1/foo.wav +/dataset/2/bar.wav +/dataset/sup_data/pitch/1_foo.pt +/dataset/sup_data/pitch/2_bar.pt + +manifest.json has two entries for "/dataset/1/foo.wav" and "/dataset/2/bar.wav" +(sup_data folder contains pitch files precomputed during training a FastPitch model on this dataset.) +(If you lost your sup_data - don't worry, we use TTSDataset class so they would be created on-the-fly) + +Our script call is +$ python scripts/dataset_processing/tts/resynthesize_dataset.py \ + --model-path ./models/fastpitch/multi_spk/FastPitch--val_loss\=1.4473-epoch\=209.ckpt \ + --input-json-manifest "/dataset/manifest.json" \ + --input-sup-data-path "/dataset/sup_data/" \ + --output-folder "/output/" \ + --device "cuda:0" \ + --batch-size 1 \ + --num-workers 1 + +Then we get output dataset with following directory structure: +/output/manifest_mel.json +/output/mels/foo.npy +/output/mels/foo_gt.npy +/output/mels/bar.npy +/output/mels/bar_gt.npy + +/output/manifest_mel.json has the same entries as /dataset/manifest.json but with new fields for spectrograms. +"mel_filepath" is path to the resynthesized spectrogram .npy, "mel_gt_filepath" is path to ground-truth spectrogram .npy + +The output structure is similar to generate_mels.py script for compatibility reasons. +""" + +import argparse +import itertools +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Dict, Iterable, Iterator, List + +import numpy as np +import torch +from omegaconf import DictConfig, OmegaConf +from tqdm import tqdm + +from nemo.collections.tts.data.data_utils import read_manifest, write_manifest +from nemo.collections.tts.helpers.helpers import process_batch, to_device_recursive +from nemo.collections.tts.models import FastPitchModel +from nemo.collections.tts.models.base import SpectrogramGenerator + + +def chunks(iterable: Iterable, size: int) -> Iterator[List]: + # chunks([1, 2, 3, 4, 5], size=2) -> [[1, 2], [3, 4], [5]] + # assumes iterable does not have any `None`s + args = [iter(iterable)] * size + for chunk in itertools.zip_longest(*args, fillvalue=None): + chunk = list(item for item in chunk if item is not None) + if chunk: + yield chunk + + +def load_model(path: Path, device: torch.device) -> SpectrogramGenerator: + model = None + if path.suffix == ".nemo": + model = SpectrogramGenerator.restore_from(path, map_location=device) + elif path.suffix == ".ckpt": + model = SpectrogramGenerator.load_from_checkpoint(path, map_location=device) + else: + raise ValueError(f"Unknown checkpoint type {path.suffix} ({path})") + + return model.eval().to(device) + + +@dataclass +class TTSDatasetResynthesizer: + """ + Reuses internals of a SpectrogramGenerator to resynthesize dataset using ground truth features. + Default setup is FastPitch with learned alignment. + If your use case requires different setup, you can either contribute to this script or subclass this class. + """ + + model: SpectrogramGenerator + device: torch.device + + @torch.no_grad() + def resynthesize_batch(self, batch: Dict[str, Any]) -> Dict[str, Any]: + """ + Resynthesizes a single batch. + Takes a dict with main data and sup data. + Outputs a dict with model outputs. + """ + if not isinstance(self.model, FastPitchModel): + raise NotImplementedError( + "This script supports only FastPitch. Please implement resynthesizing routine for your desired model." + ) + + batch = to_device_recursive(batch, self.device) + + mels, mel_lens = self.model.preprocessor(input_signal=batch["audio"], length=batch["audio_lens"]) + outputs_tuple = self.model.forward( + text=batch["text"], + durs=None, + pitch=batch["pitch"], + speaker=batch.get("speaker"), + pace=1.0, + spec=mels, + attn_prior=batch.get("attn_prior"), + mel_lens=mel_lens, + input_lens=batch["text_lens"], + ) + names = self.model.fastpitch.output_types.keys() + return {"spec": mels, "mel_lens": mel_lens, **dict(zip(names, outputs_tuple))} + + def resynthesized_batches(self) -> Iterator[Dict[str, Any]]: + """ + Returns a generator of resynthesized batches. + Each returned batch is a dict containing main data, sup data, and model output + """ + self.model.setup_training_data(self.model._cfg["train_ds"]) + + for batch_tuple in iter(self.model._train_dl): + batch = process_batch(batch_tuple, sup_data_types_set=self.model._train_dl.dataset.sup_data_types) + yield self.resynthesize_batch(batch) + + +def prepare_paired_mel_spectrograms( + model_path: Path, + input_json_manifest: Path, + input_sup_data_path: Path, + output_folder: Path, + device: torch.device, + batch_size: int, + num_workers: int, +): + model = load_model(model_path, device) + + dataset_config_overrides = { + "dataset": { + "manifest_filepath": str(input_json_manifest.absolute()), + "sup_data_path": str(input_sup_data_path.absolute()), + }, + "dataloader_params": {"batch_size": batch_size, "num_workers": num_workers, "shuffle": False}, + } + model._cfg.train_ds = OmegaConf.merge(model._cfg.train_ds, DictConfig(dataset_config_overrides)) + resynthesizer = TTSDatasetResynthesizer(model, device) + + input_manifest = read_manifest(input_json_manifest) + + output_manifest = [] + output_json_manifest = output_folder / f"{input_json_manifest.stem}_mel{input_json_manifest.suffix}" + output_mels_folder = output_folder / "mels" + output_mels_folder.mkdir(exist_ok=True, parents=True) + for batch, batch_manifest in tqdm( + zip(resynthesizer.resynthesized_batches(), chunks(input_manifest, size=batch_size)), desc="Batch #" + ): + pred_mels = batch["spect"].cpu() # key from fastpitch.output_types + true_mels = batch["spec"].cpu() # key from code above + mel_lens = batch["mel_lens"].cpu().flatten() # key from code above + + for i, (manifest_entry, length) in enumerate(zip(batch_manifest, mel_lens.tolist())): + print(manifest_entry["audio_filepath"]) + filename = Path(manifest_entry["audio_filepath"]).stem + + # note that lengths match + pred_mel = pred_mels[i, :, :length].clone().numpy() + true_mel = true_mels[i, :, :length].clone().numpy() + + pred_mel_path = output_mels_folder / f"{filename}.npy" + true_mel_path = output_mels_folder / f"{filename}_gt.npy" + + np.save(pred_mel_path, pred_mel) + np.save(true_mel_path, true_mel) + + new_manifest_entry = { + **manifest_entry, + "mel_filepath": str(pred_mel_path), + "mel_gt_filepath": str(true_mel_path), + } + output_manifest.append(new_manifest_entry) + + write_manifest(output_json_manifest, output_manifest) + + +def argument_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + description="Resynthesize TTS dataset using a pretrained text-to-spectrogram model", + ) + parser.add_argument( + "--model-path", required=True, type=Path, help="Path to a checkpoint (either .nemo or .ckpt)", + ) + parser.add_argument( + "--input-json-manifest", required=True, type=Path, help="Path to the input JSON manifest", + ) + parser.add_argument( + "--input-sup-data-path", required=True, type=Path, help="sup_data_path for the JSON manifest", + ) + parser.add_argument( + "--output-folder", + required=True, + type=Path, + help="Path to the output folder. Will contain updated manifest and mels/ folder with spectrograms in .npy files", + ) + parser.add_argument("--device", required=True, type=torch.device, help="Device ('cpu', 'cuda:0', ...)") + parser.add_argument("--batch-size", required=True, type=int, help="Batch size in the DataLoader") + parser.add_argument("--num-workers", required=True, type=int, help="Num workers in the DataLoader") + return parser + + +if __name__ == "__main__": + arguments = argument_parser().parse_args() + prepare_paired_mel_spectrograms(**vars(arguments)) diff --git a/tests/collections/tts/test_spectrogram_enhancer.py b/tests/collections/tts/test_spectrogram_enhancer.py new file mode 100644 index 000000000000..4836ebf01962 --- /dev/null +++ b/tests/collections/tts/test_spectrogram_enhancer.py @@ -0,0 +1,161 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch +from einops import rearrange +from omegaconf import DictConfig + +from nemo.collections.tts.helpers.helpers import mask_sequence_tensor +from nemo.collections.tts.models import SpectrogramEnhancerModel + + +@pytest.fixture +def enhancer_config(): + n_bands = 80 + latent_dim = 192 + style_depth = 4 + network_capacity = 16 + fmap_max = 192 + + config = { + "model": { + "n_bands": n_bands, + "latent_dim": latent_dim, + "style_depth": style_depth, + "network_capacity": network_capacity, + "mixed_prob": 0.9, + "fmap_max": fmap_max, + "max_spectrogram_length": 2000, + "generator": { + "_target_": "nemo.collections.tts.modules.spectrogram_enhancer.Generator", + "n_bands": n_bands, + "latent_dim": latent_dim, + "network_capacity": network_capacity, + "style_depth": style_depth, + "fmap_max": fmap_max, + "max_spectrogram_length": 2000, + }, + "discriminator": { + "_target_": "nemo.collections.tts.modules.spectrogram_enhancer.Discriminator", + "n_bands": n_bands, + "network_capacity": network_capacity, + "fmap_max": fmap_max, + }, + "spectrogram_min_value": -13.18, + "spectrogram_max_value": 4.78, + "consistency_loss_weight": 10.0, + "gradient_penalty_loss_weight": 10.0, + "gradient_penalty_loss_every_n_steps": 4, + "spectrogram_predictor_path": None, + }, + "generator_opt": {"_target_": "torch.optim.Adam", "lr": 2e-4, "betas": [0.5, 0.9]}, + "discriminator_opt": {"_target_": "torch.optim.Adam", "lr": 2e-4, "betas": [0.5, 0.9]}, + } + + return DictConfig(config) + + +@pytest.fixture +def enhancer(enhancer_config): + return SpectrogramEnhancerModel(cfg=enhancer_config.model) + + +@pytest.fixture +def enhancer_with_fastpitch(enhancer_config_with_fastpitch): + return SpectrogramEnhancerModel(cfg=enhancer_config_with_fastpitch.model) + + +@pytest.fixture +def sample_input(batch_size=15, max_length=1000): + generator = torch.Generator() + generator.manual_seed(0) + + lengths = torch.randint(max_length // 4, max_length - 7, (batch_size,), generator=generator) + input_spectrograms = torch.randn((batch_size, 80, 1000), generator=generator) + + input_spectrograms = mask_sequence_tensor(input_spectrograms, lengths) + + return input_spectrograms, lengths + + +@pytest.mark.unit +def test_pad_spectrograms(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + output = enhancer.pad_spectrograms(input_spectrograms) + + assert output.size(-1) >= input_spectrograms.size(-1) + + +@pytest.mark.unit +def test_spectrogram_norm_unnorm(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + same_input_spectrograms = enhancer.unnormalize_spectrograms( + enhancer.normalize_spectrograms(input_spectrograms, lengths), lengths + ) + assert torch.allclose(input_spectrograms, same_input_spectrograms, atol=1e-5) + + +@pytest.mark.unit +def test_spectrogram_unnorm_norm(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + same_input_spectrograms = enhancer.normalize_spectrograms( + enhancer.unnormalize_spectrograms(input_spectrograms, lengths), lengths + ) + assert torch.allclose(input_spectrograms, same_input_spectrograms, atol=1e-5) + + +@pytest.mark.unit +def test_spectrogram_norm_unnorm_dont_look_at_padding(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + same_input_spectrograms = enhancer.unnormalize_spectrograms( + enhancer.normalize_spectrograms(input_spectrograms, lengths), lengths + ) + for i, length in enumerate(lengths.tolist()): + assert torch.allclose(input_spectrograms[i, :, :length], same_input_spectrograms[i, :, :length], atol=1e-5) + + +@pytest.mark.unit +def test_spectrogram_unnorm_norm_dont_look_at_padding(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + same_input_spectrograms = enhancer.normalize_spectrograms( + enhancer.unnormalize_spectrograms(input_spectrograms, lengths), lengths + ) + for i, length in enumerate(lengths.tolist()): + assert torch.allclose(input_spectrograms[i, :, :length], same_input_spectrograms[i, :, :length], atol=1e-5) + + +@pytest.mark.unit +def test_generator_pass_keeps_size(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + output = enhancer.forward(input_spectrograms=input_spectrograms, lengths=lengths) + + assert output.shape == input_spectrograms.shape + + +@pytest.mark.unit +def test_discriminator_pass(enhancer: SpectrogramEnhancerModel, sample_input): + input_spectrograms, lengths = sample_input + input_spectrograms = rearrange(input_spectrograms, "b c l -> b 1 c l") + logits = enhancer.discriminator(x=input_spectrograms, condition=input_spectrograms, lengths=lengths) + + assert logits.shape == lengths.shape + + +@pytest.mark.unit +def test_nemo_save_load(enhancer: SpectrogramEnhancerModel, tmp_path): + path = tmp_path / "test-enhancer-save-load.nemo" + + enhancer.save_to(path) + SpectrogramEnhancerModel.restore_from(path) From 0ffad21e64887207545dea47fe5b7cd46e97c71a Mon Sep 17 00:00:00 2001 From: Tim Moon <4406448+timmoon10@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:06:58 -0800 Subject: [PATCH 10/73] Optimizing distributed Adam when running with one work queue (#5560) * Dist Adam constructs a single param bucket for each GPT layer Signed-off-by: Tim Moon * Synchronize dist Adam reduce-scatters before launching model-parallel all-reduces Signed-off-by: Tim Moon * Configure per-layer dist Adam buckets for BERT and T5 Signed-off-by: Tim Moon * Remove unused variables Signed-off-by: Tim Moon * Configure GPT with one dist Adam bucket per virtual pipeline stage Signed-off-by: Tim Moon * Configure BERT with one dist Adam bucket per virtual pipeline stage Signed-off-by: Tim Moon * Update Apex commit in Dockerfile Need recent updates to Apex distributed Adam optimizer. Signed-off-by: Tim Moon * Remove logic for per-virtual-pipeline distopt buckets from T5 Signed-off-by: Tim Moon --------- Signed-off-by: Tim Moon Signed-off-by: Jason --- Dockerfile | 7 ++++ .../language_modeling/megatron_base_model.py | 24 +++++++++---- .../language_modeling/megatron_bert_model.py | 36 +++++++++++++++++-- .../language_modeling/megatron_gpt_model.py | 36 +++++++++++++++++-- .../megatron_lm_encoder_decoder_model.py | 6 ++-- 5 files changed, 97 insertions(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index ddcdf4e6d84a..64fb1177c082 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,6 +34,13 @@ RUN apt-get update && \ WORKDIR /tmp/ +# TODO: Remove once this Apex commit (1/19/23) is included in PyTorch +# container +RUN git clone https://github.com/NVIDIA/apex.git && \ + cd apex && \ + git checkout 75f401e088ef88e7c85a57ecf70fb232235f0334 && \ + pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" --global-option="--fast_layer_norm" --global-option="--distributed_adam" --global-option="--deprecated_fused_adam" ./ + # uninstall stuff from base container RUN pip3 uninstall -y sacrebleu torchtext diff --git a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py index 46d836e524e6..8a55eb40a059 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py @@ -398,12 +398,24 @@ def configure_optimizers(self): # Configure distributed optimizer if self.with_distributed_adam: - # Initialize params so that main grads are available + # Initialize param buckets if explicitly provided + if hasattr(self, 'distributed_adam_buckets'): + for bucket in self.distributed_adam_buckets: + self._optimizer.init_params_bucket(bucket) + del self.distributed_adam_buckets + + # Make sure all params are initialized so main grads are + # available # Note: Consolidate grads without overlap - self._optimizer.init_params( - p for p in self.parameters() if getattr(p, '_disable_overlap_grad_sync', False) - ) - self._optimizer.init_params(self.parameters()) + overlap_params = [] + no_overlap_params = [] + for p in self.parameters(): + if getattr(p, '_disable_overlap_grad_sync', False): + no_overlap_params.append(p) + else: + overlap_params.append(p) + self._optimizer.init_params(reversed(overlap_params)) + self._optimizer.init_params(reversed(no_overlap_params)) if self._scheduler is None: return self._optimizer @@ -428,7 +440,7 @@ def _extract_consumed_samples_from_ckpt(self, ckpt_path): return init_consumed_samples def _validate_and_override_config(self): - """ Certain configurations might be incompatible or discouraged. + """ Certain configurations might be incompatible or discouraged. We can check for them here and override if necessary. """ app_state = AppState() diff --git a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py index 8ec442b58050..babcc7c4b26c 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py @@ -319,8 +319,10 @@ def training_step(self, batch, batch_idx): self.allreduce_sequence_parallel_gradients() if self.with_distributed_adam: - # gradients are reduced internally in distributed optimizer - pass + # synchronize asynchronous grad reductions + # note: not necessary, but reduces performance degradation + # from multiple simultaneous NCCL calls + self._optimizer._finish_bucket_grad_sync() elif self.megatron_amp_o2: if self.cfg.get('pipeline_model_parallel_size', 1) > 1 or self.cfg.get('sequence_parallel', False): # when using pipeline parallelism grads must be all-reduced after the pipeline (not asynchronously) @@ -765,6 +767,36 @@ def configure_optimizers(self): param._disable_greedy_grad_copy = not self.megatron_amp_o2 param._disable_overlap_grad_sync = True + # Initialize parameter buckets for overlapped grad and param syncs + buckets = [] + if self.cfg.get('virtual_pipeline_model_parallel_size', None) is not None: + # Initialize a bucket for each virtual pipeline stage + for module in self.model: + if isinstance(module, Float16Module): + module = module.module + stage_bucket = [] + for layer in module.language_model.encoder.layers: + stage_bucket.extend( + p for p in layer.parameters() if not getattr(p, '_disable_overlap_grad_sync', False) + ) + buckets.append(stage_bucket) + else: + # Initialize a bucket for each Transformer layer + modules = self.model if isinstance(self.model, list) else [self.model] + for module in modules: + if isinstance(module, Float16Module): + module = module.module + for layer in module.language_model.encoder.layers: + buckets.append( + [p for p in layer.parameters() if not getattr(p, '_disable_overlap_grad_sync', False)] + ) + buckets.reverse() + used_params = set() + for bucket in buckets: + used_params.update(bucket) + buckets.append([p for p in self.parameters() if p not in used_params]) + self.distributed_adam_buckets = buckets + return super().configure_optimizers() # Required for ONNX export diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py index f7725410d804..442086e19ad3 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py @@ -241,6 +241,36 @@ def configure_optimizers(self): param._disable_greedy_grad_copy = not self.megatron_amp_o2 param._disable_overlap_grad_sync = True + # Initialize parameter buckets for overlapped grad and param syncs + buckets = [] + if self.cfg.get('virtual_pipeline_model_parallel_size', None) is not None: + # Initialize a bucket for each virtual pipeline stage + for module in self.model: + if isinstance(module, Float16Module): + module = module.module + stage_bucket = [] + for layer in module.language_model.encoder.layers: + stage_bucket.extend( + p for p in layer.parameters() if not getattr(p, '_disable_overlap_grad_sync', False) + ) + buckets.append(stage_bucket) + else: + # Initialize a bucket for each Transformer layer + modules = self.model if isinstance(self.model, list) else [self.model] + for module in modules: + if isinstance(module, Float16Module): + module = module.module + for layer in module.language_model.encoder.layers: + buckets.append( + [p for p in layer.parameters() if not getattr(p, '_disable_overlap_grad_sync', False)] + ) + buckets.reverse() + used_params = set() + for bucket in buckets: + used_params.update(bucket) + buckets.append([p for p in self.parameters() if p not in used_params]) + self.distributed_adam_buckets = buckets + return super().configure_optimizers() def forward(self, tokens, text_position_ids, attention_mask, labels): @@ -336,8 +366,10 @@ def training_step(self, batch, batch_idx): self.allreduce_sequence_parallel_gradients() if self.with_distributed_adam: - # gradients are reduced internally in distributed optimizer - pass + # synchronize asynchronous grad reductions + # note: not necessary, but reduces performance degradation + # from multiple simultaneous NCCL calls + self._optimizer._finish_bucket_grad_sync() elif self.megatron_amp_o2: # when using pipeline parallelism grads must be all-reduced after the pipeline (not asynchronously) if self.cfg.get('pipeline_model_parallel_size', 1) > 1 or self.cfg.get('sequence_parallel', False): diff --git a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py index eedb4cd8ecdf..b57d42bdcdc2 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py @@ -369,8 +369,10 @@ def training_step(self, batch, batch_idx): loss_mean = torch.tensor(0.0).cuda() if self.with_distributed_adam: - # gradients are reduced internally in distributed optimizer - pass + # synchronize asynchronous grad reductions + # note: not necessary, but reduces performance degradation + # from multiple simultaneous NCCL calls + self._optimizer._finish_bucket_grad_sync() elif self.megatron_amp_o2: # when using pipeline parallelism grads must be reduced after the pipeline (not asynchronously) if self.cfg.get('pipeline_model_parallel_size', 1) > 1: From 3b8b6a59dae016e163894880f17b65dca1253b72 Mon Sep 17 00:00:00 2001 From: Jean-Louis Queguiner Date: Tue, 31 Jan 2023 05:33:26 +0100 Subject: [PATCH 11/73] fix(readme): fix typo (#5883) Signed-off-by: Jean-Louis Queguiner Signed-off-by: Jason --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 381d6a4e6030..594c7fc160b2 100644 --- a/README.rst +++ b/README.rst @@ -61,7 +61,7 @@ Key Features ------------ * Speech processing - * `HuggingFace Space for Audio Transcription (File, Micriphone and YouTube) `_ + * `HuggingFace Space for Audio Transcription (File, Microphone and YouTube) `_ * `Automatic Speech Recognition (ASR) `_ * Supported models: Jasper, QuartzNet, CitriNet, Conformer-CTC, Conformer-Transducer, Squeezeformer-CTC, Squeezeformer-Transducer, ContextNet, LSTM-Transducer (RNNT), LSTM-CTC, ... * Supports CTC and Transducer/RNNT losses/decoders From 5eafd2fa18410b72ab6865daf5f35e2069df853a Mon Sep 17 00:00:00 2001 From: Evelina <10428420+ekmb@users.noreply.github.com> Date: Mon, 30 Jan 2023 21:08:58 -0800 Subject: [PATCH 12/73] TTS inference with Heteronym classification model, hc model inference refactoring (#5768) * refactor inference, fix span detection Signed-off-by: ekmb * fix merge conflicts Signed-off-by: ekmb * fix merge conflicts Signed-off-by: ekmb * remove unused var Signed-off-by: ekmb * clean up, test update Signed-off-by: ekmb * arg name update Signed-off-by: ekmb * merge wip Signed-off-by: ekmb * revert changes Signed-off-by: ekmb * update docs, move heteronym to baseg2p Signed-off-by: ekmb * change wordid file defaults to none Signed-off-by: ekmb * add manifest check Signed-off-by: ekmb * replace homograph with heteronym, upper case wordid for riva, review feedback Signed-off-by: ekmb * add log message, update comment Signed-off-by: ekmb * rename test manifest field Signed-off-by: ekmb --------- Signed-off-by: ekmb Signed-off-by: Jason --- Jenkinsfile | 10 +- docs/source/tts/g2p.rst | 29 +- .../g2p/conf/heteronym_classification.yaml | 4 +- .../g2p/heteronym_classification_inference.py | 132 ++++--- ...ronym_classification_train_and_evaluate.py | 34 +- nemo_text_processing/g2p/data/data_utils.py | 95 ++++- .../g2p/data/heteronym_classification_data.py | 285 ++++++++------- .../g2p/models/heteronym_classification.py | 258 ++++++++++---- nemo_text_processing/g2p/models/t5_g2p.py | 1 + nemo_text_processing/g2p/modules.py | 33 ++ .../export_wikihomograph_data_to_manifest.py | 34 +- .../tts_dataset_files/wordid_to_nemo_cmu.tsv | 327 ------------------ .../g2p/data/test_data_utils.py | 36 +- 13 files changed, 667 insertions(+), 611 deletions(-) delete mode 100644 scripts/tts_dataset_files/wordid_to_nemo_cmu.tsv diff --git a/Jenkinsfile b/Jenkinsfile index 8c50f0de997e..91f402e774ac 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1122,9 +1122,9 @@ pipeline { sh 'cd examples/text_processing/g2p && \ TIME=`date +"%Y-%m-%d-%T"` && OUTPUT_DIR=output_${TIME} && \ python heteronym_classification_train_and_evaluate.py \ - train_manifest=/home/TestData/g2p/heteronym_classification.json \ - validation_manifest=/home/TestData/g2p/heteronym_classification.json \ - test_manifest=/home/TestData/g2p/heteronym_classification.json \ + train_manifest=/home/TestData/g2p/manifest.json \ + validation_manifest=/home/TestData/g2p/manifest.json \ + test_manifest=/home/TestData/g2p/manifest.json \ model.wordids=/home/TestData/g2p/wordids.tsv \ trainer.max_epochs=1 \ model.max_seq_length=64 \ @@ -1134,9 +1134,9 @@ pipeline { +exp_manager.use_datetime_version=False\ +exp_manager.version=test && \ python heteronym_classification_inference.py \ - manifest=/home/TestData/g2p/heteronym_classification.json \ + manifest=/home/TestData/g2p/manifest.json \ pretrained_model=${OUTPUT_DIR}/HeteronymClassification/test/checkpoints/HeteronymClassification.nemo \ - output_file=preds.json' + output_manifest=preds.json' } } } diff --git a/docs/source/tts/g2p.rst b/docs/source/tts/g2p.rst index 36a717d3184f..5b04db59d7da 100644 --- a/docs/source/tts/g2p.rst +++ b/docs/source/tts/g2p.rst @@ -75,7 +75,6 @@ To train G2P-Conformer model and evaluate it after at the end of the training, r model.tokenizer_grapheme.do_lower=False \ model.tokenizer_grapheme.add_punctuation=True \ trainer.devices=1 \ - do_training=True \ do_testing=True @@ -165,18 +164,38 @@ To convert the WikipediaHomographData to `.json` format suitable for the Heteron --data_folder=/WikipediaHomographData-master/data/train/ --output=train.json -To train and evaluate the model, run: +To train the model, run: .. code-block:: python heteronym_classification_train_and_evaluate.py \ - train_manifest=" \ - validation_manifest=" \ - model.encoder.pretrained="" \ + train_manifest=" \ + validation_manifest=" \ model.wordids= \ do_training=True \ + do_testing=False + +To train the model and evaluate it when the training is complete, run: + +.. code-block:: + + python heteronym_classification_train_and_evaluate.py \ + train_manifest=" \ + validation_manifest=" \ + model.test_ds.dataset.manifest=" \ + model.wordids="" \ + do_training=True \ do_testing=True +To evaluate pretrained model, run: + +.. code-block:: + + python heteronym_classification_train_and_evaluate.py \ + do_training=False \ + do_testing=True \ + model.test_ds.dataset.manifest=" \ + pretrained_model= To run inference with a pretrained HeteronymClassificationModel, run: diff --git a/examples/text_processing/g2p/conf/heteronym_classification.yaml b/examples/text_processing/g2p/conf/heteronym_classification.yaml index 89ac10ea1b08..ef6b65a69cf0 100644 --- a/examples/text_processing/g2p/conf/heteronym_classification.yaml +++ b/examples/text_processing/g2p/conf/heteronym_classification.yaml @@ -10,8 +10,10 @@ pretrained_model: null # path to .nemo file or model name from list_available_mo model: wordids: ??? # path to wordids in WikiHomograph dataset format - target_ipa_label_to_id: null # will be filled during training max_seq_length: 256 # the maximum length BERT supports is 512 + label_ids: null # will be filled during training + class_labels: + class_labels_file: null # will be generated during training and saved in .nemo file language_model: pretrained_model_name: bert-base-uncased # currently supports BERT or Distill BERT diff --git a/examples/text_processing/g2p/heteronym_classification_inference.py b/examples/text_processing/g2p/heteronym_classification_inference.py index 5e9afbb08fd1..f587a12c3317 100644 --- a/examples/text_processing/g2p/heteronym_classification_inference.py +++ b/examples/text_processing/g2p/heteronym_classification_inference.py @@ -33,10 +33,20 @@ To prepare dataset, see NeMo/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py +Inference form manifest: + python heteronym_classification_inference.py \ manifest="" \ pretrained_model="" \ - output_file="" + output_manifest="" \ + wordid_to_phonemes_file="" + +Interactive inference: + +python heteronym_classification_inference.py \ + pretrained_model="" \ + wordid_to_phonemes_file="" # Optional + """ @@ -44,10 +54,18 @@ class TranscriptionConfig: # Required configs pretrained_model: str # Path to a .nemo file or Name of a pretrained model - output_file: str # Path to .json manifest to save prediction, will be saved in "pred_text" field - manifest: str # Path to .json manifest + + # path to .json manifest inference, if not provided, interactive mode will be enabled + manifest: Optional[str] = None # Path to .json manifest + output_manifest: Optional[ + str + ] = "predictions.json" # Path to .json manifest to save prediction, will be saved in "pred_text" field grapheme_field: str = "text_graphemes" # name of the field in .json manifest for input grapheme text + # mapping from wordid predicted by the model to phonemes, e.g., + # "../../../scripts/tts_dataset_files/wordid_to_ipa-0.7b_nv22.10.tsv" + wordid_to_phonemes_file: Optional[str] = None + # if "word_id" targets are present in the manifest, evaluation will be performed and errors will be saved in errors_file errors_file: Optional[str] = None # path to a file to save prediction errors batch_size: int = 32 @@ -96,54 +114,70 @@ def main(cfg): logging.info(f'Config Params: {model._cfg}') - if not os.path.exists(cfg.manifest): - raise ValueError(f"{cfg.manifest} is not found") - - with torch.no_grad(): - preds = model.disambiguate( - manifest=cfg.manifest, - grapheme_field=cfg.grapheme_field, - batch_size=cfg.batch_size, - num_workers=cfg.num_workers, - ) - - # save predictions to a file - if cfg.errors_file is None: - cfg.errors_file = cfg.output_file.replace(".json", "_errors.txt") - - save_errors = True - correct = 0 - with open(cfg.manifest, "r", encoding="utf-8") as f_in, open( - cfg.output_file, "w", encoding="utf-8" - ) as f_preds, open(cfg.errors_file, "w", encoding="utf-8") as f_errors: - for idx, line in enumerate(f_in): - line = json.loads(line) - current_pred = preds[idx] - line["pred_text"] = current_pred - f_preds.write(json.dumps(line, ensure_ascii=False) + '\n') - - # run evaluation if target word_id is available in the input manifest - if "word_id" in line: - target = line["word_id"] - if target != current_pred: - f_errors.write(f"INPUT: {line[cfg.grapheme_field]}\n") - f_errors.write(f"PRED : {current_pred} -- GT: {target}\n") - f_errors.write("===========================\n") + if cfg.manifest is not None: + if not os.path.exists(cfg.manifest): + raise ValueError(f"{cfg.manifest} not found.") + with torch.no_grad(): + model.disambiguate_manifest( + manifest=cfg.manifest, + output_manifest=cfg.output_manifest, + grapheme_field=cfg.grapheme_field, + batch_size=cfg.batch_size, + num_workers=cfg.num_workers, + ) + + # save predictions to a file + if cfg.errors_file is None: + cfg.errors_file = cfg.output_manifest.replace(".json", "_errors.txt") + + save_errors = True + correct = 0 + total = 0 + with open(cfg.output_manifest, "r", encoding="utf-8") as f_preds, open( + cfg.errors_file, "w", encoding="utf-8" + ) as f_errors: + for line in f_preds: + line = json.loads(line) + predictions = line["pred_wordid"] + # run evaluation if target word_id is available in the input manifest + if "word_id" in line: + targets = line["word_id"] + if isinstance(targets, str): + targets = [targets] + for idx, target_ in enumerate(targets): + total += 1 + if idx >= len(predictions) or target_ != predictions[idx]: + f_errors.write(f"INPUT: {line[cfg.grapheme_field]}\n") + f_errors.write(f"PRED : {predictions[idx]} -- GT: {target_}\n") + f_errors.write("===========================\n") + else: + correct += 1 else: - correct += 1 - else: - save_errors = False - if save_errors: - logging.info( - f"Accuracy: {round(correct / len(preds) * 100, 2)}% ({len(preds) - correct} errors out of {len(preds)})" - ) - logging.info(f"Errors saved at {cfg.errors_file}") + save_errors = False + if save_errors: + logging.info(f"Accuracy: {round(correct / total * 100, 2)}% ({total - correct} errors out of {total})") + logging.info(f"Errors saved at {cfg.errors_file}") + else: + logging.info("No 'word_id' values found, skipping evaluation.") + if os.path.exists(cfg.errors_file): + os.remove(cfg.errors_file) else: - logging.info("No 'word_id' values found, skipping evaluation.") - if os.path.exists(cfg.errors_file): - os.remove(cfg.errors_file) - - logging.info(f"Predictions saved at {cfg.output_file}") + print('Entering interactive mode.') + done = False + while not done: + print('Type "STOP" to exit.') + test_input = input('Input a test input:') + if test_input == "STOP": + done = True + if not done: + with torch.no_grad(): + _, sentences = model.disambiguate( + sentences=[test_input], + batch_size=1, + num_workers=cfg.num_workers, + wordid_to_phonemes_file=cfg.wordid_to_phonemes_file, + ) + print(sentences[0]) if __name__ == '__main__': diff --git a/examples/text_processing/g2p/heteronym_classification_train_and_evaluate.py b/examples/text_processing/g2p/heteronym_classification_train_and_evaluate.py index 456d5ed32d5c..e6a3cd17ade6 100644 --- a/examples/text_processing/g2p/heteronym_classification_train_and_evaluate.py +++ b/examples/text_processing/g2p/heteronym_classification_train_and_evaluate.py @@ -29,14 +29,35 @@ To prepare dataset, see NeMo/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py -To run training and testing: +To run training: python heteronym_classification_train_and_evaluate.py \ - train_manifest=" \ - validation_manifest=" \ - model.encoder.pretrained="" \ - model.wordids= \ + train_manifest=" \ + validation_manifest=" \ + model.wordids="" \ + do_training=True + +To run training and testing (once the training is complete): +python heteronym_classification_train_and_evaluate.py \ + train_manifest=" \ + validation_manifest=" \ + model.test_ds.dataset.manifest=" \ + model.wordids="" \ do_training=True \ do_testing=True + +To run testing: +python heteronym_classification_train_and_evaluate.py \ + do_training=False \ + do_testing=True \ + model.test_ds.dataset.manifest=" \ + pretrained_model= + + +See https://github.com/google-research-datasets/WikipediaHomographData/blob/master/data/wordids.tsv for wordids file +format example + +See https://github.com/NVIDIA/NeMo/blob/main/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py +on how to convert WikiHomograph data for HeteronymClassificationModel training/evaluation """ @@ -52,6 +73,7 @@ def main(cfg): epoch_time_logger = LogEpochTimeCallback() trainer.callbacks.extend([lr_logger, epoch_time_logger]) trainer.fit(model) + logging.info("Training is complete") if cfg.do_testing: logging.info( @@ -84,6 +106,8 @@ def main(cfg): if hasattr(cfg.model, "test_ds") and cfg.model.test_ds.dataset.manifest is not None: model.setup_test_data(cfg.model.test_ds) trainer.test(model) + else: + logging.info("test_ds not found, skipping evaluation") if __name__ == '__main__': diff --git a/nemo_text_processing/g2p/data/data_utils.py b/nemo_text_processing/g2p/data/data_utils.py index ab88a10e6012..d695ec9ba391 100644 --- a/nemo_text_processing/g2p/data/data_utils.py +++ b/nemo_text_processing/g2p/data/data_utils.py @@ -14,11 +14,12 @@ import csv +import os import re import string import unicodedata from builtins import str as unicode -from typing import List, Tuple +from typing import Dict, List, Tuple, Union __all__ = [ "read_wordids", @@ -76,10 +77,13 @@ def read_wordids(wordid_map: str): Args: wordid_map: path to wordids.tsv Returns: - homograph_dict: a dictionary of graphemes with corresponding word_id - ipa_form pairs + data_dict: a dictionary of graphemes with corresponding word_id - ipa_form pairs wordid_to_idx: word id to label id mapping """ - homograph_dict = {} + if not os.path.exists(wordid_map): + raise ValueError(f"{wordid_map} not found") + + data_dict = {} wordid_to_idx = {} with open(wordid_map, "r", encoding="utf-8") as f: @@ -88,41 +92,67 @@ def read_wordids(wordid_map: str): for i, line in enumerate(tsv_file): if i == 0: continue - grapheme = line[0] word_id = line[1] + ipa_form = line[3] wordid_to_idx[word_id] = len(wordid_to_idx) - if grapheme not in homograph_dict: - homograph_dict[grapheme] = {} - homograph_dict[grapheme][word_id] = ipa_form - return homograph_dict, wordid_to_idx + if grapheme not in data_dict: + data_dict[grapheme] = {} + data_dict[grapheme][word_id] = ipa_form + return data_dict, wordid_to_idx -def get_wordid_to_nemo(wordid_to_nemo_cmu_file: str = "../../../scripts/tts_dataset_files/wordid_to_nemo_cmu.tsv"): +def get_wordid_to_phonemes(wordid_to_phonemes_file: str, to_lower: bool = True): """ WikiHomograph and NeMo use slightly different phoneme sets, this function reads WikiHomograph word_ids to NeMo - IPA heteronyms mapping + IPA heteronyms mapping. + + Args: + wordid_to_phonemes_file: Path to a file with mapping from wordid predicted by the model to phonemes, e.g., + NeMo/scripts/tts_dataset_files/wordid_to_ipa-0.7b_nv22.10.tsv + to_lower: set to True to lower case wordid """ + if not os.path.exists(wordid_to_phonemes_file): + raise ValueError(f"{wordid_to_phonemes_file} not found") + wordid_to_nemo_cmu = {} - with open(wordid_to_nemo_cmu_file, "r", encoding="utf-8") as f: + with open(wordid_to_phonemes_file, "r", encoding="utf-8") as f: for i, line in enumerate(f): - if i == 0: - continue - line = line.strip().split("\t") + if to_lower: + line = line.lower() + line = line.strip().split(" ") wordid_to_nemo_cmu[line[0]] = line[1] return wordid_to_nemo_cmu -def remove_punctuation(text: str, exclude: List[str] = None): +def remove_punctuation(text: str, remove_spaces: bool = False, do_lower: bool = False, exclude: List[str] = None): + """ + Remove punctuation marks form text + + Args: + text: input text + remove_spaces: set to True to remove spaces + do_lower: set to True to lower case the text + exclude: specify list of punctuation marks keep in the output, e.g., exclude=["'", "."] + + Return: + processed text with punctuation marks removed + """ all_punct_marks = string.punctuation if exclude is not None: for p in exclude: all_punct_marks = all_punct_marks.replace(p, "") + text = re.sub("[" + all_punct_marks + "]", " ", text) text = re.sub(r" +", " ", text) + if remove_spaces: + text = text.replace(" ", "").replace("\u00A0", "").strip() + + if do_lower: + text = text.lower() return text.strip() @@ -260,6 +290,41 @@ def chinese_text_preprocessing(text): return text.lower() +def get_heteronym_spans(sentences: List[str], supported_heteronyms: Union[Dict, List]): + """ + Find heteronyms in sentences and returns span indices + + Args: + sentences: sentences to find heteronyms in + supported_heteronyms: heteronyms to look for + + Return: + start_end: List[Tuple[int]] - start-end indices that indicate location of found heteronym in the sentence + heteronyms: List[List[str]] - heteronyms found in sentences, each sentence can contain more than one heteronym + """ + start_end = [] + heteronyms = [] + for sent in sentences: + cur_start_end = [] + cur_heteronyms = [] + start_idx = 0 + for word in sent.lower().split(): + word_by_hyphen = word.split("-") + for sub_word in word_by_hyphen: + no_punct_word = remove_punctuation(sub_word, do_lower=True, remove_spaces=False) + if no_punct_word in supported_heteronyms: + start_idx = sent.lower().index(no_punct_word, start_idx) + end_idx = start_idx + len(no_punct_word) + cur_start_end.append((start_idx, end_idx)) + cur_heteronyms.append(no_punct_word) + start_idx = end_idx + else: + start_idx += len(sub_word) + 1 + heteronyms.append(cur_heteronyms) + start_end.append(cur_start_end) + return start_end, heteronyms + + def set_grapheme_case(text: str, case: str = "upper") -> str: if case == "upper": text_new = text.upper() diff --git a/nemo_text_processing/g2p/data/heteronym_classification_data.py b/nemo_text_processing/g2p/data/heteronym_classification_data.py index f25b4d2f2b93..cd06136e10e0 100644 --- a/nemo_text_processing/g2p/data/heteronym_classification_data.py +++ b/nemo_text_processing/g2p/data/heteronym_classification_data.py @@ -15,8 +15,10 @@ import json import os -from typing import Dict, List +import re +from typing import Dict, List, Optional, Tuple +import numpy as np import torch from nemo.collections.common.tokenizers.tokenizer_spec import TokenizerSpec @@ -31,7 +33,7 @@ def __init__( self, manifest: str, tokenizer: TokenizerSpec, - wiki_homograph_dict: Dict[str, Dict[str, str]], + heteronym_dict: Dict[str, Dict[str, str]], wordid_to_idx: Dict[str, int], max_seq_len: int = 512, grapheme_field: str = "text_graphemes", @@ -43,10 +45,10 @@ def __init__( https://github.com/google-research-datasets/WikipediaHomographData/tree/master/data Args: - manifest: path to manifest with "homograph_span", "start_end", "text_graphemes" + manifest: path to manifest with "heteronym_span", "start_end", "text_graphemes" and (optional) "word_id" fields. "word_id" is required for model training. tokenizer: pretrained tokenizer - wiki_homograph_dict: a dictionary where each grapheme contains word_id to ipa_form mappings, e.g., + heteronym_dict: a dictionary where each grapheme contains word_id to ipa_form mappings, e.g., {'use': {'use_nou': "'juːs", 'use_vrb': "'juːz"}} wordid_to_idx: mapping from word id to index max_seq_len: maximum input sequence length @@ -63,100 +65,144 @@ def __init__( self.data = [] self.pad_token = 0 self.with_labels = with_labels - self.wiki_homograph_dict = wiki_homograph_dict + self.heteronym_dict = heteronym_dict self.wordid_to_idx = wordid_to_idx + self.LOSS_PAD_TOKEN = -100 + self.PAD_TOKEN = 0 - sentences, start_end_indices, homographs, word_ids = [], [], [], [] num_skipped = 0 with open(manifest, "r") as f: for line in f: line = json.loads(line) - cur_start_end, cur_homographs, cur_word_ids = ( - line["start_end"], - line["homograph_span"], - line["word_id"], - ) - if isinstance(cur_homographs, str): - cur_start_end, cur_homographs, cur_word_ids = [cur_start_end], [cur_homographs], [cur_word_ids] - - for se, h, w in zip(cur_start_end, cur_homographs, cur_word_ids): - grapheme_sent = line[grapheme_field] - - # +2 for bos and eos tokens - if ( - grapheme_sent[se[0] : se[1]] != h - or len(self.tokenizer.text_to_tokens(grapheme_sent)) + 2 > max_seq_len - ): - num_skipped += 1 + cur_start_end, cur_heteronyms = (line["start_end"], line["heteronym_span"]) + + # during inference word_id is not present in the manifest + if "word_id" in line: + cur_word_ids = line["word_id"] + else: + if isinstance(cur_heteronyms, str): + cur_word_ids = None else: - sentences.append(grapheme_sent) - start_end_indices.append(se) - homographs.append(h) - word_ids.append(w) - - for sentence, start_end_index, homograph, word_id in zip(sentences, start_end_indices, homographs, word_ids): - start, end = start_end_index - if self.with_labels: - target_and_negatives, subword_mask, target = self._prepare_sample( - sentence, start, end, homograph, word_id - ) - self.data.append( - { - "input": sentence, - "target": target, - "target_and_negatives": target_and_negatives, - "subword_mask": subword_mask, + cur_word_ids = [None] * len(cur_heteronyms) + + if isinstance(cur_heteronyms, str): + cur_start_end, cur_heteronyms, cur_word_ids = [cur_start_end], [cur_heteronyms], [cur_word_ids] + + example = self._prepare_sample(line[grapheme_field], cur_start_end, cur_heteronyms, cur_word_ids) + if example is None: + num_skipped += 1 + else: + example_dict = { + "input_ids": example[0], + "subtokens_mask": example[1], + "target": example[2], # None if self.with_labels is False } - ) - else: - target_and_negatives, subword_mask = self._prepare_sample(sentence, start, end, homograph) - self.data.append( - {"input": sentence, "subword_mask": subword_mask, "target_and_negatives": target_and_negatives} - ) + self.data.append(example_dict) logging.info(f"Number of samples in {manifest}: {len(self.data)}, remove {num_skipped} lines") - def _prepare_sample(self, sentence: str, start: int, end: int, homograph: str, word_id=None): + def _prepare_sample( + self, + sentence: str, + start_end: List[Tuple[int, int]], + heteronyms: List[str], + word_ids: Optional[List[str]] = None, + ): """ Prepares a single training sample Args: sentence: input sentence in grapheme form - start: start of the homograph span - end: end of the homograph span - homograph: homograph - word_id: [Optional] target word_id, use None for inference + start_end: start and end indices of the heteronym spans, start_end indices should be in increasing order + heteronyms: heteronyms present in the sentence + word_ids: [Optional] target word_ids, use None for inference, e.g. ['diffuse_adj'] """ - l_context = self.tokenizer.text_to_ids(sentence[:start]) - r_context = self.tokenizer.text_to_ids(sentence[end:]) - l_context_len = len(l_context) - r_context_len = len(r_context) - sentence_tokenized = self.tokenizer.text_to_ids(sentence) - - grapheme_ipa_forms = self.wiki_homograph_dict[homograph.lower()] - homograph_len = len(sentence_tokenized[l_context_len : len(sentence_tokenized) - r_context_len]) - # use prediction of the first subword of the homograph - homograph_mask = [1] + [0] * (homograph_len - 1) - subword_mask = [0] * (l_context_len + 1) + homograph_mask + [0] * (r_context_len + 1) - target_and_negatives = [self.wordid_to_idx[wordid_] for wordid_ in grapheme_ipa_forms] - output = [target_and_negatives, subword_mask] + # drop example where sequence length exceeds max sequence length, +2 for special tokens + length = len(self.tokenizer.text_to_tokens(sentence)) + 2 + if length > self.max_seq_len: + logging.debug(f"Sequence length exceeds max sequence length ({self.max_seq_len}): {sentence}.") + return None + + # check the correctness on start-end indices + for heteronym_, start_end_ in zip(heteronyms, start_end): + if heteronym_.lower() != sentence[start_end_[0] : start_end_[1]].lower(): + logging.debug(f"Span for {heteronym_} is incorrect. Skipping example.") + return None + + input_ids, subtokens_mask, target_word_ids = [], [], [] + # add bos token + if hasattr(self.tokenizer, "bos_id"): + input_ids.append(self.tokenizer.bos_id) + subtokens_mask.append( + self.PAD_TOKEN + ) # the first tokens of heteronym spans are 1s, the rest of the tokens are 0s - if self.with_labels: - if word_id is None: - raise ValueError(f"word_id must be provided when self.with_labels==True, i.e., training mode") - - target_word_id = self.wordid_to_idx[word_id] - # add extra -100 tokens at the begging and end for [CLS] and [SEP] bert tokens - target_word_id = ( - [-100] * (l_context_len + 1) - + [target_word_id] - + [-100] * (homograph_len - 1) - + [-100] * (r_context_len + 1) - ) - assert len(target_word_id) == len(self.tokenizer.tokenizer([sentence])["input_ids"][0]) - output.append(target_word_id) - - return output # [target_and_negatives, subword_mask] and (optional) target + if self.with_labels: + target_word_ids.append(self.LOSS_PAD_TOKEN) # -100 to pad plain tokens + else: + target_word_ids = None # for inference when labels are not available + + heteronym_span_idx = 0 + # split sentence by space and keep track of word boundaries + # we assume heteronym is a standalone word + matches = [(m.group(0), (m.start(), m.end() - 1)) for m in re.finditer(r'\S+', sentence)] + for match in matches: + word, word_start_end = match + # check if the start of the next heteronym span is within the word indices + if ( + heteronym_span_idx < len(start_end) + and word_start_end[0] <= start_end[heteronym_span_idx][0] < word_start_end[1] + ): + heteronym_start_end = start_end[heteronym_span_idx] + prefix = "" + prefix_ids = [] + # for cases when word also includes punctuation marks at the beginning or a prefix, + # e.g. "diffuse" vs. diffuse vs. pre-diffuse for heteronym {diffuse} + if word_start_end[0] < heteronym_start_end[0]: + prefix = sentence[word_start_end[0] : heteronym_start_end[0]] + prefix_ids = self.tokenizer.text_to_ids(prefix) + subtokens_mask.extend([self.PAD_TOKEN] * len(prefix_ids)) + + word = word[word.index(prefix) + len(prefix) :] + word_input_ids = self.tokenizer.text_to_ids(word) + input_ids.extend(prefix_ids + word_input_ids) + + subtokens_mask.extend([1] + [self.PAD_TOKEN] * (len(word_input_ids) - 1)) + + if self.with_labels: + cur_target_word_id = self.wordid_to_idx[word_ids[heteronym_span_idx]] + target_word_ids.extend( + [self.LOSS_PAD_TOKEN] * len(prefix_ids) + + [cur_target_word_id] + + [self.LOSS_PAD_TOKEN] * (len(word_input_ids) - 1) + ) + + heteronym = sentence.lower()[heteronym_start_end[0] : heteronym_start_end[1]] + if heteronym not in self.heteronym_dict: + logging.debug(f"{heteronym} is not supported. Skipping example.") + return None + + heteronym_span_idx += 1 + else: + ids = self.tokenizer.text_to_ids(word) + input_ids.extend(ids) + subtokens_mask.extend([self.PAD_TOKEN] * len(ids)) + if self.with_labels: + target_word_ids.extend([self.LOSS_PAD_TOKEN] * len(ids)) + + if heteronym_span_idx < len(start_end): + logging.info("Not all heteronym spans were processed. Skipping example.") + return None + + # add eos token + if hasattr(self.tokenizer, "eos_id"): + input_ids.append(self.tokenizer.eos_id) + subtokens_mask.append(self.PAD_TOKEN) + if self.with_labels: + target_word_ids.append(self.LOSS_PAD_TOKEN) + + # target_word_ids are None for inference when labels are not available + return input_ids, subtokens_mask, target_word_ids def __len__(self): return len(self.data) @@ -164,47 +210,46 @@ def __len__(self): def __getitem__(self, index): return self.data[index] - def map(self, text: str) -> List[int]: - """ Creates a mapping from target labels to ids.""" - tokens = [] - for word_id, word in enumerate(text.split()): - tokens.append(self.labels_tkn2id[word]) - return tokens - def _collate_fn(self, batch): - # Encode inputs (graphemes) - input_batch = [entry["input"] for entry in batch] - input_encoding = self.tokenizer.tokenizer( - input_batch, padding='longest', max_length=self.max_seq_len, truncation=True, return_tensors='pt', - ) - - input_ids, attention_mask = input_encoding.input_ids, input_encoding.attention_mask - # create a mask 1 for target_and_negatives and 0 for the rest of the entries since they're not relevant to the target word - target_and_negatives = [entry["target_and_negatives"] for entry in batch] - batch_size = input_ids.shape[0] - num_classes = len(self.wordid_to_idx) - target_and_negatives_mask = torch.zeros(batch_size, num_classes) - for i, values in enumerate(target_and_negatives): - for v in values: - target_and_negatives_mask[i][v] = 1 - - # pad prediction mask (masks out irrelevant subwords) - subword_mask = [entry["subword_mask"] for entry in batch] - pred_mask_len = [len(entry) for entry in subword_mask] - max_pred_mask_len = max(pred_mask_len) - subword_mask = [ - entry + [0] * (max_pred_mask_len - entry_len) for entry, entry_len in zip(subword_mask, pred_mask_len) - ] - subword_mask = torch.tensor(subword_mask) - output = [input_ids, attention_mask, target_and_negatives_mask, subword_mask] + """ + Args: + batch: A list of tuples of (input_ids, subtokens_mask, [Optional] target_word_ids). + """ + max_length = max([len(entry["input_ids"]) for entry in batch]) + + padded_input_ids = [] + padded_subtokens_mask = [] + padded_attention_mask = [] + + if self.with_labels: + padded_targets = [] + + for item in batch: + input_ids = item["input_ids"] + if len(input_ids) < max_length: + pad_width = max_length - len(input_ids) + padded_attention_mask.append([1] * len(input_ids) + [0] * pad_width) + padded_input_ids.append(np.pad(input_ids, pad_width=[0, pad_width], constant_values=self.PAD_TOKEN)) + padded_subtokens_mask.append( + np.pad(item["subtokens_mask"], pad_width=[0, pad_width], constant_values=self.PAD_TOKEN) + ) + if self.with_labels: + padded_targets.append( + np.pad(item["target"], pad_width=[0, pad_width], constant_values=self.LOSS_PAD_TOKEN) + ) + else: + padded_attention_mask.append([1] * len(input_ids)) + padded_input_ids.append(input_ids) + padded_subtokens_mask.append(item["subtokens_mask"]) + if self.with_labels: + padded_targets.append(item["target"]) + + output = { + "input_ids": torch.LongTensor(np.array(padded_input_ids)), + "attention_mask": torch.LongTensor(np.array(padded_attention_mask)), + "subtokens_mask": torch.LongTensor(np.array(padded_subtokens_mask)), + } if self.with_labels: - # Encode targets - targets = [entry["target"] for entry in batch] - targets_len = [len(entry) for entry in targets] - max_target_len = max(targets_len) - targets = [entry + [-100] * (max_target_len - entry_len) for entry, entry_len in zip(targets, targets_len)] - targets = torch.tensor(targets) - assert input_ids.shape == targets.shape - output.append(targets) + output["targets"] = torch.LongTensor(padded_targets) return output diff --git a/nemo_text_processing/g2p/models/heteronym_classification.py b/nemo_text_processing/g2p/models/heteronym_classification.py index 82e2d6a274b2..2cb19ac8bd6e 100644 --- a/nemo_text_processing/g2p/models/heteronym_classification.py +++ b/nemo_text_processing/g2p/models/heteronym_classification.py @@ -13,15 +13,16 @@ # limitations under the License. -from typing import Optional +import json +import os +from typing import List, Optional import torch from hydra.utils import instantiate -from nemo_text_processing.g2p.data.data_utils import read_wordids +from nemo_text_processing.g2p.data.data_utils import get_heteronym_spans, get_wordid_to_phonemes, read_wordids from nemo_text_processing.g2p.data.heteronym_classification_data import HeteronymClassificationDataset from omegaconf import DictConfig from pytorch_lightning import Trainer -from tqdm import tqdm from nemo.collections.common.losses import CrossEntropyLoss from nemo.collections.nlp.metrics.classification_report import ClassificationReport @@ -48,12 +49,20 @@ class HeteronymClassificationModel(NLPModel): def __init__(self, cfg: DictConfig, trainer: Trainer = None): self.max_seq_length = cfg.max_seq_length - self.wordids = cfg.wordids - self.register_artifact("cfg.wordids", self.wordids) - self.homograph_dict, self.wordid_to_idx = read_wordids(cfg.wordids) + self.wordids = self.register_artifact("wordids", cfg.wordids) + self.heteronym_dict, self.wordid_to_idx = read_wordids(self.wordids) + self.idx_to_wordid = {v: k for k, v in self.wordid_to_idx.items()} + self.supported_heteronyms = list(self.heteronym_dict.keys()) + + if cfg.class_labels.class_labels_file is None: + label_ids_file = "/tmp/label_ids.csv" + with open(label_ids_file, 'w') as f: + for idx in range(len(self.idx_to_wordid)): + f.write(self.idx_to_wordid[idx] + "\n") + self.register_artifact("class_labels.class_labels_file", label_ids_file) super().__init__(cfg=cfg, trainer=trainer) - + self.lang = self._cfg.get('lang', None) num_classes = len(self.wordid_to_idx) self.classifier = TokenClassifier( hidden_size=self.hidden_size, @@ -70,36 +79,45 @@ def __init__(self, cfg: DictConfig, trainer: Trainer = None): # setup to track metrics self.classification_report = ClassificationReport( - num_classes=num_classes, mode='micro', dist_sync_on_step=True, label_ids=self.wordid_to_idx + num_classes=num_classes, mode='macro', dist_sync_on_step=True, label_ids=self.wordid_to_idx ) - # Language - self.lang = cfg.get('lang', None) + # used for inference to convert predicted wordids to phonemes + self.wordid_to_phonemes_file = None + self.wordid_to_phonemes = None - # @typecheck() - def forward(self, input_ids, attention_mask, target_and_negatives_mask): - hidden_states = self.bert_model(input_ids=input_ids, attention_mask=attention_mask) + def forward(self, input_ids, attention_mask, token_type_ids): + hidden_states = self.bert_model( + input_ids=input_ids, attention_mask=attention_mask, token_type_ids=token_type_ids + ) if isinstance(hidden_states, tuple): hidden_states = hidden_states[0] logits = self.classifier(hidden_states=hidden_states) - - # apply mask to mask out irrelevant options (elementwise) - logits = logits * target_and_negatives_mask.unsqueeze(1) return logits - # Training - def training_step(self, batch, batch_idx): - """ - Lightning calls this inside the training loop with the data from the training dataloader - passed in as `batch`. - """ - input_ids, attention_mask, target_and_negatives_mask, subword_mask, targets = batch - + def make_step(self, batch): logits = self.forward( - input_ids=input_ids, attention_mask=attention_mask, target_and_negatives_mask=target_and_negatives_mask + input_ids=batch["input_ids"], + attention_mask=batch["attention_mask"], + token_type_ids=torch.zeros_like(batch["input_ids"]), ) - loss = self.loss(logits=logits, labels=targets) + if "targets" in batch: + loss = self.loss(logits=logits, labels=batch["targets"]) + else: + # skip loss calculation for inference + loss = None + return loss, logits + + # Training + + def training_step(self, batch, batch_idx): + """ + Lightning calls this inside the training loop with the data from the training dataloader + passed in as `batch`. + """ + + loss, logits = self.make_step(batch) self.log('train_loss', loss) return loss @@ -112,16 +130,13 @@ def validation_step(self, batch, batch_idx, split="val"): Lightning calls this inside the validation loop with the data from the validation dataloader passed in as `batch`. """ - input_ids, attention_mask, target_and_negatives_mask, subword_mask, targets = batch - logits = self.forward( - input_ids=input_ids, attention_mask=attention_mask, target_and_negatives_mask=target_and_negatives_mask - ) - val_loss = self.loss(logits=logits, labels=targets) - self.log(f"{split}_loss", val_loss) - - tag_preds = torch.argmax(logits, axis=-1)[subword_mask > 0] + val_loss, logits = self.make_step(batch) + subtokens_mask = batch["subtokens_mask"] + targets = batch["targets"] targets = targets[targets != -100] + self.log(f"{split}_loss", val_loss) + tag_preds = torch.argmax(logits, axis=-1)[subtokens_mask > 0] tp, fn, fp, _ = self.classification_report(tag_preds, targets) return {f'{split}_loss': val_loss, 'tp': tp, 'fn': fn, 'fp': fp} @@ -145,12 +160,17 @@ def validation_epoch_end(self, outputs, split="val"): ] ) logging.info(f"{split}_report: {report}") - logging.info(f"{split}_ACCURACY: {f1:.2f}%") + logging.info(f"{split}_f1: {f1:.2f}%") self.log(f"{split}_loss", avg_loss, prog_bar=True) self.log(f"{split}_precision", precision) self.log(f"{split}_f1", f1) self.log(f"{split}_recall", recall) + f1_macro = report[report.index("macro") :].split("\n")[0].replace("macro avg", "").strip().split()[-2] + f1_micro = report[report.index("micro") :].split("\n")[0].replace("micro avg", "").strip().split()[-2] + self.log(f"{split}_f1_macro", torch.Tensor([float(f1_macro)])) + self.log(f"{split}_f1_micro", torch.Tensor([float(f1_micro)])) + self.classification_report.reset() def test_step(self, batch, batch_idx): @@ -168,9 +188,91 @@ def test_epoch_end(self, outputs): """ return self.validation_epoch_end(outputs, "test") + def set_wordid_to_phonemes(self, wordid_to_phonemes_file: str): + if wordid_to_phonemes_file is None or not os.path.exists(wordid_to_phonemes_file): + logging.warning(f"{wordid_to_phonemes_file} not found, skip setting wordid_to_phonemes.") + else: + self.wordid_to_phonemes_file = wordid_to_phonemes_file + self.wordid_to_phonemes = get_wordid_to_phonemes(self.wordid_to_phonemes_file) + logging.info(f"Wordid to phonemes file is set to {wordid_to_phonemes_file}") + # Functions for inference + def _process_sentence(self, text: str, start_end: List[List[int]], predictions: List[str]): + text_with_heteronym_replaced = "" + last_idx = 0 + for heteronym_idx, cur_start_end in enumerate(start_end): + cur_start, cur_end = cur_start_end + cur_pred = predictions[heteronym_idx] + + if self.wordid_to_phonemes is None or cur_pred not in self.wordid_to_phonemes: + cur_pred = f"[{cur_pred}]" + else: + cur_pred = self.wordid_to_phonemes[cur_pred] + # to use mixed grapheme format as an input for a TTS model, we need to have vertical bars around phonemes + cur_pred = "".join([f"|{p}|" for p in cur_pred]) + + text_with_heteronym_replaced += text[last_idx:cur_start] + cur_pred + last_idx = cur_end + if last_idx < len(text): + text_with_heteronym_replaced += text[last_idx:] + return text_with_heteronym_replaced + @torch.no_grad() - def disambiguate(self, manifest, grapheme_field, batch_size: int, num_workers: int = 0): + def disambiguate( + self, + sentences: List[str], + batch_size: int = 4, + num_workers: int = 0, + wordid_to_phonemes_file: Optional[str] = None, + ): + """ + Replaces heteronyms, supported by the model, with the phoneme form (if wordid_to_phonemes_file) + or with predicted wordids. + + Args: + sentences: Sentences to use for inference + batch_size: batch size to use during inference. + Bigger will result in better throughput performance but would use more memory. + num_workers: number of workers for DataLoader + wordid_to_phonemes_file: (Optional) file with mapping between wordid predicted by the model to phonemes + + Returns: + preds: model predictions + output: sentences with heteronym replaced with phonemes (if wordid_to_phonemes_file specified) + """ + if isinstance(sentences, str): + sentences = [sentences] + batch_size = min(batch_size, len(sentences)) + + start_end, heteronyms = get_heteronym_spans(sentences, self.heteronym_dict) + if len(sentences) != len(start_end) != len(heteronyms): + raise ValueError( + f"Number of sentences should match the lengths of provided start-end indices, {len(sentences)} != {len(start_end)}" + ) + + tmp_manifest = "/tmp/manifest.json" + with open(tmp_manifest, "w") as f: + for cur_sentence, cur_start_ends, cur_heteronyms in zip(sentences, start_end, heteronyms): + item = {"text_graphemes": cur_sentence, "start_end": cur_start_ends, "heteronym_span": cur_heteronyms} + f.write(json.dumps(item, ensure_ascii=False) + '\n') + + all_preds = self._disambiguate(manifest=tmp_manifest, batch_size=batch_size, num_workers=num_workers,) + + if wordid_to_phonemes_file is not None: + self.set_wordid_to_phonemes(wordid_to_phonemes_file) + + output = [] + for sent_idx, sent_start_end in enumerate(start_end): + output.append( + self._process_sentence( + text=sentences[sent_idx], start_end=sent_start_end, predictions=all_preds[sent_idx] + ), + ) + + return all_preds, output + + @torch.no_grad() + def _disambiguate(self, manifest: str, batch_size: int, num_workers: int = 0, grapheme_field="text_graphemes"): # store predictions for all queries in a single list all_preds = [] mode = self.training @@ -180,27 +282,64 @@ def disambiguate(self, manifest, grapheme_field, batch_size: int, num_workers: i self.eval() self.to(device) infer_datalayer = self._setup_infer_dataloader( - manifest, grapheme_field, batch_size=batch_size, num_workers=num_workers + manifest, grapheme_field=grapheme_field, batch_size=batch_size, num_workers=num_workers ) - for batch in tqdm(infer_datalayer): - input_ids, attention_mask, target_and_negatives_mask, subword_mask = batch - logits = self.forward( - input_ids=input_ids.to(device), - attention_mask=attention_mask.to(device), - target_and_negatives_mask=target_and_negatives_mask.to(device), - ) - - preds = torch.argmax(logits, axis=-1)[subword_mask > 0] - preds = tensor2list(preds) - all_preds.extend(preds) + for batch in infer_datalayer: + subtokens_mask = batch["subtokens_mask"] + batch = { + "input_ids": batch["input_ids"].to(device), + "attention_mask": batch["attention_mask"].to(device), + } + _, logits = self.make_step(batch) + + preds = tensor2list(torch.argmax(logits, axis=-1)[subtokens_mask > 0]) + # preds are flatten for all the samples, we need to separate predictions per sample + preds_num = [len([p_ for p_ in p if p_ == 1]) for p in tensor2list(subtokens_mask)] + + last_idx = 0 + for num in preds_num: + preds_ = preds[last_idx : last_idx + num] + preds_ = [self.idx_to_wordid[p] for p in preds_] + all_preds.append(preds_) + last_idx += num finally: # set mode back to its original value self.train(mode=mode) + return all_preds - # convert indices to wordids - idx_to_wordid = {v: k for k, v in self.wordid_to_idx.items()} - all_preds = [idx_to_wordid[p] for p in all_preds] + @torch.no_grad() + def disambiguate_manifest( + self, + manifest, + output_manifest: str, + grapheme_field: str = "text_graphemes", + batch_size: int = 4, + num_workers: int = 0, + wordid_to_phonemes_file: Optional[str] = None, + ): + all_preds = self._disambiguate( + manifest=manifest, batch_size=batch_size, num_workers=num_workers, grapheme_field=grapheme_field + ) + + self.set_wordid_to_phonemes(wordid_to_phonemes_file) + + with open(manifest, "r", encoding="utf-8") as f_in, open(output_manifest, "w", encoding="utf-8") as f_preds: + for idx, line in enumerate(f_in): + line = json.loads(line) + start_end = line["start_end"] + if len(start_end) > 0 and isinstance(start_end[0], int): + start_end = [start_end] + + text_with_heteronym_replaced = self._process_sentence( + text=line[grapheme_field], start_end=start_end, predictions=all_preds[idx] + ) + + line["pred_text"] = text_with_heteronym_replaced + line["pred_wordid"] = all_preds[idx] + f_preds.write(json.dumps(line, ensure_ascii=False) + '\n') + + logging.info(f"Predictions save at {output_manifest}") return all_preds # Functions for processing data @@ -243,7 +382,7 @@ def _setup_dataloader_from_config(self, cfg: DictConfig, data_split: str): grapheme_field=cfg.dataset.grapheme_field, tokenizer=self.tokenizer, wordid_to_idx=self.wordid_to_idx, - wiki_homograph_dict=self.homograph_dict, + heteronym_dict=self.heteronym_dict, max_seq_len=self.max_seq_length, with_labels=True, ) @@ -251,7 +390,7 @@ def _setup_dataloader_from_config(self, cfg: DictConfig, data_split: str): return torch.utils.data.DataLoader(dataset, collate_fn=dataset.collate_fn, **cfg.dataloader_params) def _setup_infer_dataloader( - self, manifest, grapheme_field, batch_size: int, num_workers: int + self, manifest: str, grapheme_field: str, batch_size: int, num_workers: int ) -> 'torch.utils.data.DataLoader': dataset = HeteronymClassificationDataset( @@ -259,7 +398,7 @@ def _setup_infer_dataloader( grapheme_field=grapheme_field, tokenizer=self.tokenizer, wordid_to_idx=self.wordid_to_idx, - wiki_homograph_dict=self.homograph_dict, + heteronym_dict=self.heteronym_dict, max_seq_len=self.tokenizer.tokenizer.model_max_length, with_labels=False, ) @@ -273,17 +412,6 @@ def _setup_infer_dataloader( drop_last=False, ) - def input_example(self): - """ - Generates input examples for tracing etc. - Returns: - A tuple of input examples. - """ - sample = next(self.parameters()) - input_ids = torch.randint(low=0, high=2048, size=(2, 16), device=sample.device) - attention_mask = torch.randint(low=0, high=1, size=(2, 16), device=sample.device) - return tuple([input_ids, attention_mask]) - @classmethod def list_available_models(cls) -> Optional[PretrainedModelInfo]: """ diff --git a/nemo_text_processing/g2p/models/t5_g2p.py b/nemo_text_processing/g2p/models/t5_g2p.py index 18c797b321f4..ee919ffa6643 100644 --- a/nemo_text_processing/g2p/models/t5_g2p.py +++ b/nemo_text_processing/g2p/models/t5_g2p.py @@ -147,6 +147,7 @@ def _infer(self, config: DictConfig,) -> List[int]: for batch in infer_datalayer: input_ids, _ = batch generated_str, _, _ = self._generate_predictions(input_ids=input_ids.to(device)) + all_preds.extend(generated_str) del batch finally: diff --git a/nemo_text_processing/g2p/modules.py b/nemo_text_processing/g2p/modules.py index fdd106ed9a87..ceac30147572 100644 --- a/nemo_text_processing/g2p/modules.py +++ b/nemo_text_processing/g2p/modules.py @@ -58,11 +58,37 @@ def __init__( self.word_tokenize_func = word_tokenize_func self.apply_to_oov_word = apply_to_oov_word self.mapping_file = mapping_file + self.heteronym_model = None # heteronym classification model @abstractmethod def __call__(self, text: str) -> str: pass + def setup_heteronym_model( + self, + heteronym_model, + wordid_to_phonemes_file: str = "../../../scripts/tts_dataset_files/wordid_to_ipa-0.7b_nv22.10.tsv", + ): + """ + Add heteronym classification model to TTS preprocessing pipeline to disambiguate heteronyms. + Heteronym model has a list of supported heteronyms but only heteronyms specified in + wordid_to_phonemes_file will be converted to phoneme form during heteronym model inference; + the rest will be left in grapheme form. + + Args: + heteronym_model: Initialized HeteronymClassificationModel + wordid_to_phonemes_file: Path to a file with mapping from wordid predicted by heteronym model to phonemes + """ + + try: + from nemo_text_processing.g2p.models.heteronym_classification import HeteronymClassificationModel + + self.heteronym_model = heteronym_model + self.heteronym_model.set_wordid_to_phonemes(wordid_to_phonemes_file) + except ImportError as e: + logging.warning("Heteronym model setup will be skipped") + logging.error(e) + class EnglishG2p(BaseG2p): def __init__( @@ -617,6 +643,13 @@ def parse_one_word(self, word: str) -> Tuple[List[str], bool]: def __call__(self, text: str) -> List[str]: text = normalize_unicode_text(text) + + if self.heteronym_model is not None: + try: + text = self.heteronym_model.disambiguate(sentences=[text])[1][0] + except Exception as e: + logging.warning(f"Heteronym model failed {e}, skipping") + words_list_of_tuple = self.word_tokenize_func(text) prons = [] diff --git a/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py b/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py index 64523c5c8daa..0819dc8384ce 100644 --- a/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py +++ b/scripts/dataset_processing/g2p/export_wikihomograph_data_to_manifest.py @@ -46,40 +46,40 @@ def read_wikihomograph_file(file: str) -> Tuple[List[str], List[List[int]], List Returns: sentences: Text. start_end_indices: Start and end indices of the homograph in the sentence. - homographs: Target homographs for each sentence - word_ids: Word_ids corresponding to each homograph, i.e. label. + heteronyms: Target heteronyms for each sentence + word_ids: Word_ids corresponding to each heteronym, i.e. label. """ excluded_sentences = 0 sentences = [] start_end_indices = [] - homographs = [] + heteronyms = [] word_ids = [] with open(file, "r", encoding="utf-8") as f: tsv_file = csv.reader(f, delimiter="\t") for i, line in enumerate(tsv_file): if i == 0: continue - homograph, wordid, sentence, start, end = line + heteronym, wordid, sentence, start, end = line start, end = int(start), int(end) sentence, start, end = correct_wikihomograph_data(sentence, start, end) - homograph_span = sentence[start:end] - if homograph_span.lower() != homograph: - if sentence.lower().count(homograph) == 1: - start = sentence.lower().index(homograph) - end = start + len(homograph) - homograph_span = sentence[start:end].lower() - assert homograph == homograph_span.lower() + heteronym_span = sentence[start:end] + if heteronym_span.lower() != heteronym: + if sentence.lower().count(heteronym) == 1: + start = sentence.lower().index(heteronym) + end = start + len(heteronym) + heteronym_span = sentence[start:end].lower() + assert heteronym == heteronym_span.lower() else: excluded_sentences += 1 - raise ValueError(f"homograph {homograph} != homograph_span {homograph_span} in {sentence}") + raise ValueError(f"heteronym {heteronym} != heteronym_span {heteronym_span} in {sentence}") - homographs.append(homograph) + heteronyms.append(heteronym) start_end_indices.append([start, end]) sentences.append(sentence) word_ids.append(wordid) - return sentences, start_end_indices, homographs, word_ids + return sentences, start_end_indices, heteronyms, word_ids def correct_wikihomograph_data(sentence: str, start: int = None, end: int = None): @@ -141,14 +141,14 @@ def convert_wikihomograph_data_to_manifest(data_folder: str, output_manifest: st """ with open(output_manifest, "w") as f_out: for file in tqdm(glob(f"{data_folder}/*.tsv")): - sentences, start_end_indices, homographs, word_ids = read_wikihomograph_file(file) + sentences, start_end_indices, heteronyms, word_ids = read_wikihomograph_file(file) for i, sent in enumerate(sentences): start, end = start_end_indices[i] - homograph_span = sent[start:end] + heteronym_span = sent[start:end] entry = { "text_graphemes": sent, "start_end": [start, end], - "homograph_span": homograph_span, + "heteronym_span": heteronym_span, "word_id": word_ids[i], } f_out.write(json.dumps(entry, ensure_ascii=False) + "\n") diff --git a/scripts/tts_dataset_files/wordid_to_nemo_cmu.tsv b/scripts/tts_dataset_files/wordid_to_nemo_cmu.tsv deleted file mode 100644 index 82ee176b1251..000000000000 --- a/scripts/tts_dataset_files/wordid_to_nemo_cmu.tsv +++ /dev/null @@ -1,327 +0,0 @@ -word_id nemo_ipa_cmu -abstract_adj-nou ˈæbˌstɹækt -abstract_vrb æbˈstɹækt -abuse_nou əbˈjus -abuse_vrb əbˈjuz -abuses_nou əbˈjusɪz -abuses_vrb əbˈjuzɪz -addict_nou ˈæˌdɪkt -addict_vrb əˈdɪkt -advocate_nou ˈædvəkət -advocate_vrb ˈædvəˌkeɪt -affect_nou-psy ˈæˌfɛkt -affect əˈfɛkt -affiliate_nou əˈfɪliət -affiliate_vrb əˈfɪliˌeɪt -aged_adj ˈeɪdʒɪd -aged ˈeɪdʒd -aggregate_adj-nou ˈæɡɹəɡət -aggregate_vrb ˈæɡɹəɡeɪt -alternate_adj-nou ˈɔltɚnət -alternate_vrb ˈɔltɚˌneɪt -analyses_nou æˈnælɪˌsiz -analyses_vrb ænəˈlaɪˌzɪz -animate_adj-nou ˈænəmət -animate_vrb ˈænəˌmeɪt -appropriate_adj əˈpɹoʊpɹiət -appropriate_vrb əˈpɹoʊpɹiˌeɪt -approximate_adj-nou əˈpɹɑksəmət -approximate_vrb əˈpɹɑksəˌmeɪt -articulate_adj ɑɹˈtɪkjələt -articulate_vrb ɑɹˈtɪkjəˌleɪt -associate_adj-nou əˈsoʊsiət -associate_vrb əˈsoʊsiˌeɪt -attribute_nou ˈætɹəbˌjut -attribute_vrb əˈtɹɪbˌjut -august_adj ˌɑˈɡəst -august ˈɑɡəst -august_nam ˈaʊˌɡʊst -axes_nou ˈækˌsiz -axes_nou-vrb ˈækˌsɪz -bass ˈbeɪs -bass_corp ˈbæs -blessed_adj ˈblɛsəd -blessed_vrb ˈblɛst -bologna_geo bəˈloʊˌŋɑ -bologna bəˈloʊni -bow_nou-knot ˈboʊ -bow_nou-ship ˈbaʊ -buffet_nou bəˈfeɪ -buffet_vrb ˈbʌfət -celtic_adj-nou-sports ˈsɛltɪk -celtic ˈkɛltɪk -close_adj-nou ˈkloʊs -close_vrb ˈkloʊz -combine_nou ˈkɑmbaɪn -combine_vrb kəmˈbaɪn -compact_adj-nou ˈkɑmpækt -compact_vrb kəmˈpækt -compound_nou ˈkɑmpaʊnd -compound_vrb kəmˈpaʊnd -compress_nou ˈkɑmpɹɛs -compress kəmˈpɹɛs -conduct_nou ˈkɑndəkt -conduct_vrb kɑnˈdʌkt -confines_nou ˈkɑnˌfaɪnz -confines_vrb kənˈfaɪnz -conflict_nou ˈkɑnflɪkt -conflict_vrb kənˈflɪkt -conglomerate_adj-nou kənˈɡlɑmɚət -conglomerate_vrb kənˈɡlɑmɝˌeɪt -conjugate_adj-nou ˈkɑndʒəˌɡeɪt -conjugate_vrb ˈkɑndʒəˌɡeɪt -conscript_nou ˈkɑnsˌkɹɪpt -conscript_vrb kənsˈkɹɪpt -console_nou ˈkɑnsoʊl -console_vrb kənˈsoʊl -consort_nou ˈkɑnˌsɔɹt -consort_vrb kənˈsɔɹt -construct_nou ˈkɑnstɹəkt -construct_vrb kənˈstɹʌkt -consummate_adj ˈkɑnsəmət -consummate_vrb ˈkɑnsəˌmeɪt -content_adj-nou-vrb kənˈtɛnt -content_nou ˈkɑntɛnt -contest_nou ˈkɑntɛst -contest_vrb kənˈtɛst -contract_nou ˈkɑnˌtɹækt -contract_vrb kənˈtɹækt -contrast_nou ˈkɑntɹæst -contrast_vrb kənˈtɹæst -converse_adj-nou ˈkɑnvɚs -converse_vrb kənˈvɝs -convert_nou ˈkɑnvɚt -convert_vrb kənˈvɝt -convict_nou ˈkɑnvɪkt -convict_vrb kənˈvɪkt -coordinate_adj-nou koʊˈɔɹdənət -coordinate_vrb koʊˈɔɹdəˌneɪt -correlate_nou ˈkɔɹələt -correlate_nou-vrb ˈkɔɹəˌleɪt -decrease_nou ˈdiˌkɹis -decrease_vrb dɪˈkɹis -defect_nou ˈdifɛkt -defect_vrb dɪˈfɛkt -degenerate_adj-nou dɪˈdʒɛnɚət -degenerate_vrb dɪˈdʒɛnɚˌeɪt -delegate_nou ˈdɛləɡət -delegate_vrb ˈdɛləˌɡeɪt -deliberate_adj dɪˈlɪbɚət -deliberate_vrb dɪˈlɪbɚˌeɪt -desert_nou ˈdɛzɚt -desert_vrb dɪˈzɝt -deviate_nou ˈdiˌviət -deviate_vrb ˈdiviˌeɪt -diagnoses_nou ˌdaɪəɡˈnoʊsiz -diagnoses_vrb ˌdaɪəɡˈnoʊsəz -diffuse_adj dɪfˈjus -diffuse_vrb dɪfˈjuz -discard_nou ˈdɪsˌkɑɹd -discard_vrb dəsˈkɑɹd -discharge_nou ˈdɪsˌtʃɑɹdʒ -discharge_vrb dɪsˈtʃɑɹdʒ -discount_nou ˈdɪskaʊnt -discount_vrb dɪˈskaʊnt -document_nou ˈdɑkjumɛnt -document_vrb ˈdɑkjəmɛnt -dove ˈdʌv -dove_vrb ˈdoʊv -duplicate_adj-nou ˈdupləkət -duplicate_vrb ˈdupləˌkeɪt -elaborate_adj ɪˈlæbɹət -elaborate_vrb ɪˈlæbɚˌeɪt -entrance_nou ˈɛntɹəns -entrance_vrb əˈntɹæns -escort_nou ˈɛskɔɹt -escort_vrb ɛˈskɔɹt -estimate_nou ˈɛstəmət -estimate_vrb ˈɛstəˌmeɪt -excuse_nou ɪkˈskjus -excuse_vrb ɪkˈskjuz -expatriate_nou ɛkˈspeɪtɹiət -expatriate_vrb ɛkˈspeɪtɹiˌeɪt -exploit_nou ˈɛksˌplɔɪt -exploit_vrb ˌɛksˈplɔɪt -export_nou ˈɛkspɔɹt -export_vrb əkˈspɔɹt -expose_nou ˌɛkˌspoʊˈzeɪ -expose_vrb ɪkˈspoʊz -extract_nou ˈɛkˌstɹækt -extract_vrb ɪkˈstɹækt -fragment_nou ˈfɹæɡmənt -fragment_vrb ˌfɹæɡˈmɛnt -frequent_adj ˈfɹikwənt -frequent_vrb ˌfɹiˈkwɛnt -graduate_adj-nou ˈɡɹædʒuwət -graduate_vrb ˈɡɹædʒuˌeɪt -house_nou ˈhaʊs -house_vrb ˈhaʊz -impact_nou ˈɪmpækt -impact_vrb ˌɪmˈpækt -implant_nou ˈɪmˌplænt -implant_vrb ˌɪmˈplænt -implement_nou ˈɪmpləmənt -implement_vrb ˈɪmpləˌmɛnt -import_nou ˈɪmˌpɔɹt -import_vrb ˌɪmˈpɔɹt -incense_nou ˈɪnˌsɛns -incense_vrb ˌɪnˈsɛns -incline_nou ˈɪnklaɪn -incline_vrb ˌɪnˈklaɪn -increase_nou ˈɪnˌkɹis -increase_vrb ˌɪnˈkɹis -increment_nou ˈɪnkɹəmənt -increment_vrb ˈɪnkɹəˌmɛnt -initiate_nou əˈnɪˌʃiət -initiate_vrb ˌɪˈnɪʃiˌeɪt -insert_nou ˈɪnˌsɝt -insert_vrb ˌɪnˈsɝt -instrument_nou ˈɪnstɹəmənt -instrument_vrb ˈɪnstɹəˌmɛnt -insult_nou ˈɪnˌsʌlt -insult_vrb ˌɪnˈsʌlt -interchange_nou ˈɪntɚˌtʃeɪndʒ -interchange_vrb ˌɪntɚˈtʃeɪndʒ -intimate_adj ˈɪntəmət -intimate_vrb ˈɪntɪˌmeɪt -intrigue_nou ˈɪntɹiɡ -intrigue_nou-vrb ˌɪnˈtɹiɡ -invalid_adj ˌɪnˈvæləd -invalid_nou ˈɪnvələd -invert_adj-nou ˈɪnvɝt -invert_vrb ˌɪnˈvɝt -invite_nou ˈɪnˌvaɪt -invite_vrb ˌɪnˈvaɪt -isolate_nou ˈaɪsələt -isolate ˈaɪsəˌleɪt -jesus ˈdʒizəs -jesus_es ˌheɪˈsus -job_bible ˈdʒoʊb -job ˈdʒɑb -laminate_nou ˈlæmənət -laminate_vrb ˈlæməˌneɪt -lead_nou ˈlɛd -lead_nou-vrb ˈlid -learned_adj ˈlɝnɪd -learned_vrb ˈlɝnd -live_adj ˈlaɪv -live_vrb ˈlɪv -lives_nou ˈlaɪvz -lives_vrb ˈlɪvz -mate_nou ˈmɑˌteɪ -mate ˈmeɪt -minute_adj maɪˈnut -minute ˈmɪnət -misuse_nou mɪsˈjus -misuse_vrb mɪsˈjuz -mobile ˈmoʊbəl -mobile_geo ˌmoʊˈbil -mobile_nou-art ˈmoʊˌbil -moderate_adj-nou ˈmɑdɚət -moderate_vrb ˈmɑdɚˌeɪt -moped_nou ˈmoʊpɛd -moped_vrb ˈmoʊpt -mouth_nou ˈmaʊθ -mouth_vrb ˈmaʊð -nestle_nam ˈnɛsˈli -nestle_vrb ˈnɛsəl -object_nou ˈɑbdʒɛkt -object_vrb əbˈdʒɛkt -ornament_nou ˈɔɹnəmənt -ornament_vrb ˌɔɹnəˈmɛnt -overthrow_nou ˈoʊvɚˌθɹoʊ -overthrow_vrb ˌoʊvɚˈθɹoʊ -pasty_adj ˈpeɪˌsti -pasty_nou ˈpæsˌti -perfect_adj ˈpɝˌfɪkt -perfect_vrb pɚˈfɛkt -perfume_nou ˈpɝˌfjum -perfume_vrb pɚˈfjum -permit_nou ˈpɝˌmɪt -permit_vrb pɚˈmɪt -pervert_nou ˈpɝvɚt -pervert_vrb pɚˈvɝt -pigment_nou ˈpɪɡmɛnt -pigment_vrb pəɡˈmɛnt -polish_geo ˈpoʊlɪʃ -polish ˈpɑlɪʃ -postulate_nou ˈpɑstʃələt -postulate_vrb ˈpɑstʃəˌleɪt -precipitate_adj-nou pɹəˈsɪpətət -precipitate_vrb pɹɪˈsɪpɪˌteɪt -predicate_nou ˈpɹɛdɪkət -predicate_vrb ˈpɹɛdəˌkeɪt -present_adj-nou ˈpɹɛzənt -present_vrb pɹiˈzɛnt -produce_nou ˈpɹoʊdus -produce_vrb pɹəˈdus -progress_nou ˈpɹɑˌɡɹɛs -progress_vrb pɹəˈɡɹɛs -project_nou ˈpɹɑdʒɛkt -project_vrb pɹɑˈdʒɛkt -protest_nou ˈpɹoʊˌtɛst -protest_vrb pɹəˈtɛst -ravel_nam ɹəˈvɛl -ravel_nou ˈɹævəl -reading_en ˈɹidɪŋ -reading_geo ˈɹɛdɪŋ -read_past ˈɹɛd -read_present ˈɹid -rebel_nou ˈɹɛbəl -rebel_vrb ɹɪˈbɛl -record_nou ˈɹɛkɚd -record_vrb ɹəˈkɔɹd -recount_nou ˈɹiˌkaʊnt -recount_vrb ˌɹiˈkaʊnt -refund_nou ˈɹiˌfʌnd -refund_vrb ɹɪˈfʌnd -refuse_nou ˈɹɛfˌjuz -refuse_vrb ɹəfˈjuz -reject_nou ˈɹidʒɛkt -reject_vrb ɹɪˈdʒɛkt -rerelease ˈɹiɹəˌlis -rerelease_vrb ˌɹiɹəˈlis -resume_nou ˈɹɛzəˌmeɪ -resume_vrb ɹiˈzum -retard_nou ˈɹitɑɹd -retard_vrb ɹɪˈtɑɹd -rodeo_geo ˌɹoʊˈdeɪˌoʊ -rodeo ˈɹoʊdiˌoʊ -row_1 ˈɹoʊ -row_2 ˈɹaʊ -sake_jp ˈsɑˌkeɪ -sake ˈseɪk -separate_adj ˈsɛpɚɪt -separate_vrb ˈsɛpɚˌeɪt -sow_nou ˈsaʊ -sow ˈsoʊ -subject_adj-nou ˈsʌbdʒɪkt -subject_vrb səbˈdʒɛkt -subordinate_adj-nou səˈbɔɹdənət -subordinate_vrb səˈbɔɹdəˌneɪt -supplement_nou ˈsʌpləmənt -supplement_vrb ˈsʌpləmənt -suspect_adj-nou ˈsʌsˌpɛkt -suspect_vrb səˈspɛkt -syndicate_nou ˈsɪndɪkət -syndicate_vrb ˈsɪndəˌkeɪt -tear_nou ˈtɪɹ -tear_vrb ˈtɛɹ -transform_nou ˈtɹænsfɔɹm -transform tɹænsˈfɔɹm -transplant_nou ˈtɹænsˌplænt -transplant_vrb tɹænsˈplænt -transport_nou ˈtɹænspɔɹt -transport_vrb tɹænˈspɔɹt -upset_nou ˈʌpˌsɛt -upset_vrb əpˈsɛt -uses_nou ˈjusəz -uses_vrb ˈjuzəz -use_nou ˈjus -use_vrb ˈjuz -wind_nou ˈwɪnd -wind_vrb ˈwaɪnd -winds_nou ˈwɪndz -winds_vrb ˈwaɪndz -wound_nou-vrb ˈwund -wound_vrb ˈwaʊnd diff --git a/tests/nemo_text_processing/g2p/data/test_data_utils.py b/tests/nemo_text_processing/g2p/data/test_data_utils.py index d7c829cf361f..c04a4d0f0e13 100644 --- a/tests/nemo_text_processing/g2p/data/test_data_utils.py +++ b/tests/nemo_text_processing/g2p/data/test_data_utils.py @@ -1,4 +1,4 @@ -# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,11 @@ # limitations under the License. import pytest -from nemo_text_processing.g2p.data.data_utils import any_locale_word_tokenize, english_word_tokenize +from nemo_text_processing.g2p.data.data_utils import ( + any_locale_word_tokenize, + english_word_tokenize, + get_homograph_spans, +) class TestDataUtils: @@ -117,3 +121,31 @@ def test_any_locale_word_tokenize_with_numbers(self): output = any_locale_word_tokenize(input_text) assert output == expected_output + + @pytest.mark.run_only_on('CPU') + @pytest.mark.unit + def test_get_homograph_spans(self): + supported_homographs = ["live", "read", "protest", "diffuse", "desert"] + sentences = [ + "I live in California. I READ a book. Only people who have already gained something are willing to protest. He reads a book!", + "Yesterday, I read a book.", + "He read a book last night and pre-diffuse and LivE-post and pre-desert-post.", + "the soldier deserted the desert in desert.", + ] + + expected_start_end = [ + [(2, 6), (24, 28), (98, 105)], + [(13, 17)], + [(3, 7), (34, 41), (46, 50), (64, 70)], + [(25, 31), (35, 41)], + ] + expected_homographs = [ + ["live", "read", "protest"], + ['read'], + ['read', 'diffuse', 'live', 'desert'], + ['desert', 'desert'], + ] + + out_start_end, out_homographs = get_homograph_spans(sentences, supported_homographs) + assert out_start_end == expected_start_end, "start-end spans do not match" + assert out_homographs == expected_homographs, "homograph spans do not match" From df6b8af4a0225d9a430bf5d7f3558ff2db22b90d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 31 Jan 2023 11:44:53 -0500 Subject: [PATCH 13/73] take out retro doc (#5885) (#5886) Signed-off-by: Yi Dong Co-authored-by: Yi Dong <43824965+yidong72@users.noreply.github.com> Signed-off-by: Jason --- .../nlp/nemo_megatron/retro/retro_model.rst | 476 +----------------- 1 file changed, 2 insertions(+), 474 deletions(-) diff --git a/docs/source/nlp/nemo_megatron/retro/retro_model.rst b/docs/source/nlp/nemo_megatron/retro/retro_model.rst index 8f0865d9f51f..edbec3d1c2ca 100644 --- a/docs/source/nlp/nemo_megatron/retro/retro_model.rst +++ b/docs/source/nlp/nemo_megatron/retro/retro_model.rst @@ -1,474 +1,2 @@ -NeMo RETRO Model -================ - -The Retrieval-Enhanced Transformer (RETRO) model is an autoregressive language model that takes into account document chunks retrieved from a large -corpus when making predictions. The RETRO model has a similar architecture to the GPT model, but it includes an encoder that encodes the retrieved -context and cross-attention layers that integrate the context to improve the model's output. Below is a simple diagram of the RETRO model architecture. - -.. image:: images/arch.png - :align: center - :width: 800px - :alt: RETRO model architecture - -For more detailed information on the model, please refer to the `RETRO paper `_ :cite:`nlp-retro-borgeaud2021improving` by Deepmind. -The NeMo RETRO Model is an open-source implementation of the paper, and it has the following differences/features compared to Deepmind's proposed implementation: - -1. The NeMo RETRO Model is built on top of NeMo Megatron code, allowing for efficient training of large language models in a cluster environment. -2. The NeMo RETRO Model uses `Faiss `_ :cite:`nlp-retro-jegou2022faiss` as the K$N search library, which can be accelerated by GPUs. -3. The NeMo RETRO uses `RoPe relative positional encoding `_ :cite:`nlp-retro-su2021roformer`. -4. The NeMo RETRO uses `SentenceTransformers `_ :cite:`nlp-retro-reimers2019sentence` as the retriever encoder. -5. The NeMo RETRO supports `mu-Transfer `_ :cite:`nlp-retro-yang2022tensor`, allowing for scalable training of the RETRO model via Zero-Shot Hyperparameter Transfer. - -Quick start -************ -Steps below demonstrate training and evaluating a NeMo RETRO model - -Data pre-processing -------------------- - -Step 1: Collect training data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The RETRO model uses two types of data: training data, which typically consists of 64-token chunks, and retrieval data, which typically consists of 128-token chunks. -The training data is used to train the model, while the retrieval data is used to supplement the language model. -It's possible to use the same data for both training and retrieval, as long as duplicates are removed properly, as described below. -Both types of data are stored in a loose JSON format, with each line containing a single text sample. For example: - -.. code-block:: json - - {"src": "www.nvidia.com", "text": "The quick brown fox", "type": "Eng", "id": "0", "title": "First Part"} - {"src": "The Internet", "text": "jumps over the lazy dog", "type": "Eng", "id": "42", "title": "Second Part"} - -The name of the text field of the json can be changed by using the ``--json-key`` flag in ``preprocess_data_for_megatron.py``. The other metadata are optional and are not used in training. - -Step 2: Convert training data into memory map format -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -The loose json is then processed into a binary format for training and retrieval. To convert the json into mmap, cached index file. -Set the ``--dataset-impl`` flag to `retmmap`, which is the memory map format dedicated for RETRO model. - -An example script to prepare data for RETRO training is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/preprocess_data_for_megatron.py \ - --input=/dataset/pubmed_train.jsonl \ - --json-keys=text \ - --tokenizer-library=megatron \ - --apply-ftfy \ - --dataset-impl=retmmap \ - --merge-file=/dataset/gpt2-merges.txt \ - --vocab-file=/dataset/gpt2-vocab.json \ - --tokenizer-type=GPT2BPETokenizer \ - --output-prefix=/result/pubmed_train \ - --need-pad-id \ - --append-eod \ - --retrieval-db \ - --chunk_size=64 \ - --chunk_stride_size=64 \ - --workers=48 - -The RETRO model processes chunked documents using 64 tokens as the default chunk size. The ``--chunk_stride_size`` argument argument -determines the distance between consecutive chunks. To ensure the documents are a multiple of ``--chunk_size``` tokens, the RETRO memory map dataset -adds padding tokens to the end of each document. The ``--need-pad-id`` argument adds a padding token to the tokenizer -if it doesn't already have one. The ``--append-eod`` argument controls whether to add ``end-of-document`` tokens to the preprocessed -data, and the ``--retrieval-db`` argument indicates whether to create a retrieval database for the preprocessed data. If ``--retrieval-db`` -is used, it will add an additional ``--chunk_size``` padding tokens at the end of the document. The ``--chunk_size`` and ``--workers`` arguments -control the size of the data chunks to be processed and the number of worker processes to use, respectively. - -Following is the retro memory map index data format: - -.. list-table:: - :widths: 25 25 25 25 25 25 25 - - * - 'MMIDRET\x00\x00' (header 9 bytes) - - 1 (version 4 byte) - - 64 (stride 4 byte) - - dtype code :sup:`1` (1 byte) - - sentence count (8 byte) - - chunk size (8 byte) - - chunk count (8 byte) - * - retrieved db :sup:`2` (1 byte) - - number of tokens for each of sentences ( int32 array) - - start of sentence address in byte (int64 array) - - start of chunk id (int64 array) - - chunk id address in byte (int64 array) - - - - - -:sup:`1` 1: np.uint8, 2: np.int8, 3: np.int16, 4: np.int32, 5: np.int64, 6: np.float, 7: np.double, 8: np.uint16 - -:sup:`2` When building the indexed dataset, we pad each sentence to be a multiple of ``chunk_size`` with ``pad_id`` from the tokenizer. -The number of tokens for each sentence includes the padded token ids. For retrieval data, there is an extra ``chunk_size`` padding at -the end of each sentence, and the ``retrieved_db`` flag is set to True. However, the number of tokens for each sentence excludes this extra ``chunk_size`` padding. - -Following is the retro memory map binary data format: - -.. list-table:: - :widths: 65 - - * - token id array for sentence 0,1, 2 ... (dtype :sup:`3` array) - -:sup:`3` np.uint16 vocab_size < 65500 else np.int32 - -Step 3: Create Faiss index for retrieval data -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -After creating the memory map retrieval data binary file and index files, we can build a Faiss index that can quickly find the K-nearest neighbors of a given -chunk ID based on a query embedding vector. Because the retrieval data is typically very large, we break this process down into three steps. - -Step 3.1: Train the Faiss index structure -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -In this step, it uses a subset of the retrieval data to train a empty Faiss index. An example script is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/build_retrieval_index.py \ - --input_file=/result/pubmed_train_text_document \ - --tokenizer-library=megatron \ - --tokenizer-type=GPT2BPETokenizer \ - --merge-file=/dataset/gpt2-merges.txt \ - --vocab-file=/dataset/gpt2-vocab.json \ - --percent=1.0 \ - --sentence_transformer_model=all-mpnet-base-v2 \ - --batch_size=1024 \ - --train_index_size=2000000 \ - --workers=2 \ - --devices=0,1,2,3,4,5,6,7 \ - --stage=0 \ - --output_file=/result/pubmed_faiss_learn.index - -This command is used to build an empty Faiss index using the 2000000 training data in ``pubmed_train_text_document``. -The ``all-mpnet-base-v2`` sentence transformer model is used to encode the chunk tokens into an embedding vector. -The index will be saved in the result directory as ``pubmed_faiss_learn.index``. This command specifies using 8 GPUs to train the Faiss index. - -Step 3.2: Add retrieval data into sharding index -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This step adds all the retrieval data to the empty Faiss index created in the previous step. An example script is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/build_retrieval_index.py \ - --input_file=/result/pubmed_train_text_document \ - --tokenizer-library=megatron \ - --tokenizer-type=GPT2BPETokenizer \ - --merge-file=/dataset/gpt2-merges.txt \ - --vocab-file=/dataset/gpt2-vocab.json \ - --percent=1.0 \ - --sentence_transformer_model=all-mpnet-base-v2 \ - --batch_size=1024 \ - --shard_id=0 \ - --total_shards=10 \ - --workers=2 \ - --devices=0,1,2,3,4,5,6,7 \ - --stage=1 \ - --learned_index=/result/pubmed_faiss_learn.index \ - --output_file=/result/pubmed_faiss_shard0.save - -This command breaks the retrieval data into ``total_shards`` shards and adds the data in the shard specified by ``shard_id``. -The result is saved to a file specified by ``output_file``. In the example above, 10 sharding indexes are created. - -Step 3.3: Merge the sharding indexes into final Faiss index -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This step merges all the sharding indexes created in the previous step into the final Faiss index. An example script is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/build_retrieval_index.py \ - --stage=2 \ - --devices=0,1,2,3,4,5,6,7 \ - --learned_index=/result/pubmed_faiss_learn.index \ - --shard_index_input=/result/pubmed_faiss_shard \ - --output_file=/result/pubmed_faiss_final.index - -Step 4: Build KNN index -^^^^^^^^^^^^^^^^^^^^^^^ - -During training, it is inefficient to run a query to find the K-nearest neighbor chunk IDs for each training data point. -This can be pre-calculated by building a KNN index before training. The KNN index maps the training data chunk IDs to the K-nearest neighbor chunk IDs -in the retrieval data. As with building the Faiss index, this process is divided into two steps. - -Following is the KNN index data format: - -.. list-table:: - :widths: 25 25 25 25 45 - - * - 'KNNRETM\x00\x00' (header 9 bytes) - - 1 (version 8 byte) - - K number of neighbors (8 byte) - - Number chunks (8 byte) - - Map to K retrieval data chunk IDs, shape (number_chunks, K) ( int64 array) - -Step 4.1: Build KNN sharding index -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The KNN index is built using the memory-mapped training data created by the ``preprocess_data_for_megatron.py`` script and the Faiss index -file for the retrieval data built by the ``build_retrieval_index.py`` script. - -An example script is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/build_knn_map_index.py \ - --input_file=/result/pubmed_eval_text_document \ - --tokenizer-library=megatron \ - --tokenizer-type=GPT2BPETokenizer \ - --merge-file=/dataset/gpt2-merges.txt \ - --vocab-file=/dataset/gpt2-vocab.json \ - --process_chunk_size=10000 \ - --sentence_transformer_model=all-mpnet-base-v2 \ - --batch_size=1024 \ - --K_neighbors=50 \ - --workers=2 \ - --devices=0,1,2,3,4,5,6,7 \ - --remove_duplicate \ - --dedup_margin=70 \ - --nprobe=100 \ - --shard_id=0 \ - --total_shards=10 \ - --stage=1 \ - --output_file=/dataset/pubmed_knn_shard0.save \ - --faiss_index=/result/pubmed_faiss_final.index - -In this example, the training data is broken into ``total_shards`` shards, and the KNN index is calculated for the shard specified by ``shard_id``. -The result is saved to a file specified by ``output_file``. In the example above, 10 KNN sharding indexes are created. - -Use the ``remove_duplicate`` flag if the training data and retrieval data are the same to remove neighbors from the same document. - -Step 4.2: Merge KNN sharding index into final KNN index -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -An example script is: - -.. code-block:: bash - - python scripts/nlp_language_modeling/build_knn_map_index.py \ - --stage=2 \ - --output_file=pubmed_knn_final.save \ - --shard_index_input=pubmed_knn_shard - -Train NeMo RETRO Model ------------------------ - -Once the training data, retrieval data, KNN index, and Faiss index are prepared, we are ready to train the RETRO model. In the NeMo implementation, -the RETRO model can be pre-trained with or without the `mu-Transfer `_ :cite:`nlp-retro-yang2022tensor` feature. We will introduce both ways. - - -The table below lists some of the common parameters that can be configured for model pre-training. - -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| **Parameter** | **Default** | **Description** | -+==================================+=============+========================================================================================+ -| model.micro_batch_size | 4 | the micro batch size used for training | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.tensor_model_parallel_size | 1 | tensor model parallel size | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.encoder_seq_length | 2048 | token sequence length | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.chunk_size | 64 | the chunk size used to retrieve | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.enc_num_layers | 4 | total number of encoder layers | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.dec_num_layers | 6 | total number of decoder layers | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.enc_cross_attention | [3] | layer numbers for cross attention in encoder | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.dec_cross_attention | [3,4,5] | layer numbers for chunked cross attention in decoder | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.add_position_embedding | FALSE | whether to add the absolute position encoding | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.hidden_size | 768 | model hidden size | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.ffn_hidden_size | 3072 | model FFN hidden size. Usually 4 * hidden_size | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.num_attention_heads | 12 | number of attention heads | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.init_method_std | 0.02 | standard deviation of the zero mean normal distribution used for weight initialization | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.hidden_dropout | 0.1 | dropout probability for hidden state transformer | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.attention_dropout | 0.1 | dropout probability in the attention layer | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ -| model.ffn_dropout | 0 | dropout probability in the feed-forward layer | -+----------------------------------+-------------+----------------------------------------------------------------------------------------+ - - -Option 1: Train the NeMo RETRO model *without* mu-Transfer -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -An example RETRO pre-training script is: - -.. code-block:: bash - - python examples/nlp/language_modeling/megatron_retro_pretraining.py \ - trainer.devices=8 \ - trainer.num_nodes=2 \ - trainer.accelerator=gpu \ - trainer.max_steps=800000 \ - trainer.precision=16 \ - exp_manager.exp_dir=/result/retro_model \ - model.apply_query_key_layer_scaling=False \ - model.tensor_model_parallel_size=8 \ - model.optim.name=adamw \ - model.enc_num_layers=2 \ - model.dec_num_layers=32 \ - model.enc_cross_attention=[0] \ - model.dec_cross_attention=[8,11,14,17,20,23,26,29,31] \ - model.hidden_size=4096 \ - model.ffn_hidden_size=16384 \ - model.num_attention_heads=32 \ - model.tokenizer.merge_file=/dataset/gpt2-merges.txt \ - model.tokenizer.vocab_file=/dataset/gpt2-vocab.json \ - model.data.data_prefix=[/result/pubmed_eval_text_document] \ - model.data.knn_index=[dataset/pubmed_knn_final.save] \ - model.data.retrieval_prefix=/result/pubmed_eval_text_document \ - model.micro_batch_size=8 - - -During the training, launch Tensorboard to monitor training like so: - -.. code-block:: bash - - tensorboard --logdir /result/retro_model --bind_all - -.. note:: Weights and Biases (WandB) is supported too. Add ``exp_manager.create_wandb_logger=True`` to the model training arguments to enable it. - -After the training, the model nemo file can be found at the result checkpoint directory. - -Option 2: Train the NeMo RETRO model *with* mu-Transfer -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -`mu-Transfer `_ :cite:`nlp-retro-yang2022tensor` paper proposed a method to zero-shot transfer hyperparameter to train a larger model. -This can be done in 3 steps in NeMo RETRO implementation. - - -Step 1. find optimal hyper parameter for a small base model -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Use the pre-training code in Option 1, either manually or automatically ind a set of optimal hyperparameter for a small base RETRO -model. This is can be done cheaply ans fast due to the small model size. - -Step 2. calculate the shape file that can be used to run mu-Transfer -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The shape file determines which hyperparameters will be scaled up, allowing the model to adjust the learning rate, weight scaling factor, etc. - -Here is an example shape file calculation script: - - -.. code-block:: bash - - python examples/nlp/language_modeling/megatron_retro_cal_shape.py \ - trainer.devices=8 \ - trainer.num_nodes=1 \ - trainer.accelerator=gpu \ - exp_manager.exp_dir=/result/retro_model \ - base_model.enc_num_layers=2 \ - delta_model.enc_num_layers=2 \ - base_model.dec_num_layers=32 \ - delta_model.dec_num_layers=32 \ - base_model.tensor_model_parallel_size=8 \ - delta_model.tensor_model_parallel_size=8 \ - base_model.dec_cross_attention=[8,11,14,17,20,23,26,29,31] \ - delta_model.dec_cross_attention=[8,11,14,17,20,23,26,29,31] \ - base_model.enc_cross_attention=[0] \ - delta_model.enc_cross_attention=[0] \ - base_model.hidden_size=768 \ - base_model.ffn_hidden_size=3072 \ - delta_model.hidden_size=96 \ - delta_model.ffn_hidden_size=384 \ - base_model.num_attention_heads=16 \ - delta_model.num_attention_heads=16 \ - model.shape_file=tp8_32depth_o1_rel_shape_info.yaml - -In this example, the ``base_model`` refers to the small base model for which an optimal set of hyperparameters has been determined. -The ``delta_model`` refers to a model with certain hyperparameters that have been scaled up or down. In this case, -the ``hidden_size`` and ``ffn_hidden_size`` have been changed in the ``delta_model``, allowing these two parameters to be scaled freely later. - -Step 3. Pretrain mu-Transfer RETRO model -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Once the shape file is created, we can start training a RETRO model. The model training can be scale up freely using the hyperparameters -specified by the delta model and the shape file. - -An example mu-Transfer pre-training script is: - -.. code-block:: bash - - python examples/nlp/language_modeling/megatron_retro_mutransfer_pretrain.py \ - trainer.devices=8 \ - trainer.num_nodes=2 \ - trainer.accelerator=gpu \ - trainer.max_steps=500000 \ - trainer.precision=16 \ - exp_manager.exp_dir=/result/retro_model \ - model.apply_query_key_layer_scaling=False \ - model.tensor_model_parallel_size=8 \ - model.optim.name=muadamw \ - model.enc_num_layers=2 \ - model.dec_num_layers=32 \ - model.enc_cross_attention=[0] \ - model.dec_cross_attention=[8,11,14,17,20,23,26,29,31] \ - model.hidden_size=4096 \ - model.ffn_hidden_size=16384 \ - model.num_attention_heads=32 \ - model.tokenizer.merge_file=/dataset/gpt2-merges.txt \ - model.tokenizer.vocab_file=/dataset/gpt2-vocab.json \ - model.data.data_prefix=[/result/pubmed_eval_text_document] \ - model.data.knn_index=[dataset/pubmed_knn_final.save] \ - model.data.retrieval_prefix=/result/pubmed_eval_text_document \ - model.micro_batch_size=8 \ - model.shape_file=tp8_32depth_o1_rel_shape_info.yaml - -.. note:: We have chosen to use ``muadamw`` as the optimizer for use with the mu-transfer method. Currently, only ``muadam`` and ``muadamw`` are supported. - -Similarly to the pre-training in Option 1, the model nemo file can be found at the result checkpoint directory after training is complete. - -Run NeMo RETRO Model Inference -------------------------------- - -Once the NeMo RETRO model has been trained, we can put it into inference mode and experiment with it. -During inference, we are not limited to the static Faiss index that we built earlier for KNN queries. -We can feed any external data to the model as retrieval context. NeMo RETRO implementation supports dynamic retrieval service, -allowing users to add, reset, and query new documents on the fly. - -We have built a simple web client that makes it easy for users to play around with the model. Here is an example script to launch the server: - -.. code-block:: bash - - python examples/nlp/language_modeling/megatron_retro_eval.py \ - trainer.devices=8 \ - trainer.num_nodes=1 \ - trainer.accelerator=gpu \ - trainer.precision=16 \ - retro_model_file=megatron_retro.nemo \ - tensor_model_parallel_size=8 \ - pipeline_model_parallel_size=1 \ - retrieval_service.sentence_bert.default.devices=\'0,1,2,3,4,5,6,7\' \ - retrieval_service.services.0.faiss_devices=\'0,1,2,3,4,5,6,7\' \ - retrieval_service.services.1.faiss_devices=\'0,1,2,3,4,5,6,7\' \ - retrieval_service.services.0.faiss_index=/result/pubmed_faiss_final.index \ - retrieval_service.services.0.retrieval_index=/result/pubmed_eval_text_document \ - retrieval_service.neighbors=2 \ - retrieval_service.pad_tokens=True \ - retrieval_service.store_retrieved=True \ - server=True \ - web_server=True \ - share=True \ - username=test \ - password=test123 - -Set the retro_model_file to use the nemo file generated in the pre-training step. After launching the server, copy-paste the URL from -the terminal into your browser. Use the specified username and password to log in and have fun experimenting with the RETRO model. - -References -************ - -.. bibliography:: ../../nlp_all.bib - :style: plain - :labelprefix: nlp-retro - :keyprefix: nlp-retro- - +Coming Soon ... +================ \ No newline at end of file From 3c02a0e3d7439336d3816ba1456731fc01681fa2 Mon Sep 17 00:00:00 2001 From: Tim Moon <4406448+timmoon10@users.noreply.github.com> Date: Tue, 31 Jan 2023 10:22:34 -0800 Subject: [PATCH 14/73] Add option to disable distributed parameters in distributed Adam optimizer (#5685) * Add option to run dist Adam without distributed params Similar to DDP, but leverages dist Adam's support for overlapping communication with backward compute Signed-off-by: Tim Moon * Fix bug in grad clipping when dist Adam has redundant params Signed-off-by: Tim Moon --------- Signed-off-by: Tim Moon Co-authored-by: Oleksii Kuchaiev Signed-off-by: Jason --- .../nlp/modules/common/megatron/clip_grads.py | 2 ++ nemo/core/optim/distributed_adam.py | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/nemo/collections/nlp/modules/common/megatron/clip_grads.py b/nemo/collections/nlp/modules/common/megatron/clip_grads.py index b647659a230c..cdcb8b03e810 100644 --- a/nemo/collections/nlp/modules/common/megatron/clip_grads.py +++ b/nemo/collections/nlp/modules/common/megatron/clip_grads.py @@ -190,6 +190,8 @@ def clip_grad_norm_distributed_optimizer(optimizer, max_norm, norm_type=2): # Compute grad norm # Note: Compute norm of local grads and sum over all procs grad_norm_sq = optimizer._local_grad_norm(parameters=params_for_norm, norm_type=norm_type) + if optimizer.redundant_size > 1: + grad_norm_sq /= optimizer.redundant_size torch.distributed.all_reduce( grad_norm_sq, op=torch.distributed.ReduceOp.SUM, ) diff --git a/nemo/core/optim/distributed_adam.py b/nemo/core/optim/distributed_adam.py index cba3985c6fcb..981d73462ced 100644 --- a/nemo/core/optim/distributed_adam.py +++ b/nemo/core/optim/distributed_adam.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import torch from apex.contrib.optimizers.distributed_fused_adam import DistributedFusedAdam from apex.transformer import parallel_state @@ -19,9 +20,15 @@ # Wrapper class that supports main_grad buffer # Note: main_grad buffer is used for O2-style optimizations class MegatronDistributedFusedAdam(DistributedFusedAdam): - def __init__(self, *args, **kwargs): + def __init__(self, *args, disable_distributed_parameters=False, **kwargs): if 'process_group' not in kwargs and not parallel_state.is_unitialized(): kwargs['process_group'] = parallel_state.get_data_parallel_group() + if disable_distributed_parameters: + world_size = torch.distributed.get_world_size() + rank = torch.distributed.get_rank() + self_groups = [torch.distributed.new_group(ranks=[i]) for i in range(world_size)] + kwargs['distributed_process_group'] = self_groups[rank] + kwargs['redundant_process_group'] = kwargs['process_group'] super().__init__(*args, **kwargs) def _make_post_backward_hook(self, param, param_group_id, param_id): From 0f82b5b51d0f7d6a41b1b68ca9e636320351032c Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Tue, 31 Jan 2023 22:42:19 +0400 Subject: [PATCH 15/73] [ASR] Separate Audio-to-Text (BPE, Char) dataset construction (#5774) * Separate full BPE dataset construction Signed-off-by: Vladimir Bataev * Fix the case when the dataset is None Signed-off-by: Vladimir Bataev * Fix comment Signed-off-by: Vladimir Bataev * Fix typos Signed-off-by: Vladimir Bataev * Separate char dataset construction. Fix DALI dataset usage. Signed-off-by: Vladimir Bataev --------- Signed-off-by: Vladimir Bataev Signed-off-by: Jason --- .../asr/data/audio_to_text_dataset.py | 197 ++++++++++++++++++ nemo/collections/asr/models/ctc_bpe_models.py | 96 ++------- nemo/collections/asr/models/ctc_models.py | 89 ++------ .../collections/asr/models/rnnt_bpe_models.py | 86 ++------ nemo/collections/asr/models/rnnt_models.py | 88 ++------ 5 files changed, 256 insertions(+), 300 deletions(-) diff --git a/nemo/collections/asr/data/audio_to_text_dataset.py b/nemo/collections/asr/data/audio_to_text_dataset.py index 9e38ede7cda3..cc8660ee56eb 100644 --- a/nemo/collections/asr/data/audio_to_text_dataset.py +++ b/nemo/collections/asr/data/audio_to_text_dataset.py @@ -15,6 +15,7 @@ import copy import json import random +from math import isclose from typing import Any, List, Optional, Union import torch @@ -24,6 +25,7 @@ from torch.utils.data import ChainDataset from nemo.collections.asr.data import audio_to_text, audio_to_text_dali +from nemo.collections.asr.parts.preprocessing.perturb import process_augmentations from nemo.collections.common.data.dataset import ConcatDataset from nemo.utils import logging @@ -462,6 +464,201 @@ def get_dali_bpe_dataset( return dataset +def get_audio_to_text_char_dataset_from_config( + config, local_rank: int, global_rank: int, world_size: int, preprocessor_cfg: Optional[DictConfig] = None +): + """ + Construct Audio-To-Text Char dataset from a config. + Args: + config: dataset config + local_rank: model local rank + global_rank: model global rand + world_size: world size + preprocessor_cfg: preprocessor config, for DALI dataset + + Returns: + constructed dataset or None if dataset config is invalid or nothing to load + """ + if 'augmentor' in config: + augmentor = process_augmentations(config['augmentor']) + else: + augmentor = None + + is_concat = config.get('is_concat', False) + if is_concat: + if 'concat_sampling' in config and config['concat_sampling'] is None: + logging.warning(f"Concat dataset requires `concat_sampling` but it was not provided. Config: {config}") + return None + + if not 'concat_probabilities' in config: + logging.warning( + f"Concat dataset requires `concat_probabilities` list but it was not provided. Config: {config}" + ) + return None + else: + if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): + logging.warning(f"`concat_probabilities` need to sum to 1. Config: {config}") + return None + + shuffle = config['shuffle'] + device = 'gpu' if torch.cuda.is_available() else 'cpu' + if config.get('use_dali', False): + device_id = local_rank if device == 'gpu' else None + dataset = get_dali_char_dataset( + config=config, + shuffle=shuffle, + device_id=device_id, + global_rank=global_rank, + world_size=world_size, + preprocessor_cfg=preprocessor_cfg, + ) + return dataset + + # Instantiate tarred dataset loader or normal dataset loader + if config.get('is_tarred', False): + if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( + 'manifest_filepath' in config and config['manifest_filepath'] is None + ): + logging.warning( + "Could not load dataset as `manifest_filepath` was None or " + f"`tarred_audio_filepaths` is None. Provided config : {config}" + ) + return None + + shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 + if is_concat: + dataset = get_concat_tarred_dataset( + config=config, + shuffle_n=shuffle_n, + global_rank=global_rank, + world_size=world_size, + augmentor=augmentor, + ) + else: + dataset = get_tarred_dataset( + config=config, + shuffle_n=shuffle_n, + global_rank=global_rank, + world_size=world_size, + augmentor=augmentor, + ) + else: + if 'manifest_filepath' in config and config['manifest_filepath'] is None: + logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") + return None + if is_concat: + dataset = get_concat_char_dataset( + config=config, global_rank=global_rank, world_size=world_size, augmentor=augmentor + ) + else: + dataset = get_char_dataset(config=config, augmentor=augmentor) + return dataset + + +def get_audio_to_text_bpe_dataset_from_config( + config, + local_rank: int, + global_rank: int, + world_size: int, + tokenizer, + preprocessor_cfg: Optional[DictConfig] = None, +): + """ + Construct Audio-To-Text BPE dataset from a config. + Args: + config: BPE dataset config + local_rank: model local rank + global_rank: model global rand + world_size: world size + tokenizer: BPE tokenizer + preprocessor_cfg: preprocessor config, for DALI BPE dataset + + Returns: + constructed dataset or None if dataset config is invalid or nothing to load + """ + if 'augmentor' in config: + augmentor = process_augmentations(config['augmentor']) + else: + augmentor = None + + is_concat = config.get('is_concat', False) + if is_concat: + if 'concat_sampling' in config and config['concat_sampling'] is None: + logging.warning(f"Concat dataset requires `concat_sampling` but it was not provided. Config: {config}") + return None + + if not 'concat_probabilities' in config: + logging.warning( + f"Concat dataset requires `concat_probabilities` list but it was not provided. Config: {config}" + ) + return None + else: + if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): + logging.warning(f"`concat_probabilities` need to sum to 1. Config: {config}") + return None + + shuffle = config['shuffle'] + device = 'gpu' if torch.cuda.is_available() else 'cpu' + if config.get('use_dali', False): + device_id = local_rank if device == 'gpu' else None + dataset = get_dali_bpe_dataset( + config=config, + tokenizer=tokenizer, + shuffle=shuffle, + device_id=device_id, + global_rank=global_rank, + world_size=world_size, + preprocessor_cfg=preprocessor_cfg, + ) + return dataset + + # Instantiate tarred dataset loader or normal dataset loader + if config.get('is_tarred', False): + if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( + 'manifest_filepath' in config and config['manifest_filepath'] is None + ): + logging.warning( + "Could not load dataset as `manifest_filepath` was None or " + f"`tarred_audio_filepaths` is None. Provided config : {config}" + ) + return None + + shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 + if is_concat: + dataset = get_concat_tarred_dataset( + config=config, + tokenizer=tokenizer, + shuffle_n=shuffle_n, + global_rank=global_rank, + world_size=world_size, + augmentor=augmentor, + ) + else: + dataset = get_tarred_dataset( + config=config, + tokenizer=tokenizer, + shuffle_n=shuffle_n, + global_rank=global_rank, + world_size=world_size, + augmentor=augmentor, + ) + else: + if 'manifest_filepath' in config and config['manifest_filepath'] is None: + logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") + return None + if is_concat: + dataset = get_concat_bpe_dataset( + config=config, + global_rank=global_rank, + world_size=world_size, + tokenizer=tokenizer, + augmentor=augmentor, + ) + else: + dataset = get_bpe_dataset(config=config, tokenizer=tokenizer, augmentor=augmentor) + return dataset + + class ASRPredictionWriter(BasePredictionWriter): def __init__(self, dataset, output_file: str): super().__init__(write_interval="batch") diff --git a/nemo/collections/asr/models/ctc_bpe_models.py b/nemo/collections/asr/models/ctc_bpe_models.py index 47b1b805e9d3..f330e9555630 100644 --- a/nemo/collections/asr/models/ctc_bpe_models.py +++ b/nemo/collections/asr/models/ctc_bpe_models.py @@ -14,18 +14,17 @@ import copy import os -from math import isclose from typing import Dict, List, Optional, Union import torch from omegaconf import DictConfig, ListConfig, OmegaConf, open_dict from nemo.collections.asr.data import audio_to_text_dataset +from nemo.collections.asr.data.audio_to_text_dali import AudioToBPEDALIDataset from nemo.collections.asr.losses.ctc import CTCLoss from nemo.collections.asr.metrics.wer_bpe import WERBPE, CTCBPEDecoding, CTCBPEDecodingConfig from nemo.collections.asr.models.ctc_models import EncDecCTCModel from nemo.collections.asr.parts.mixins import ASRBPEMixin -from nemo.collections.asr.parts.preprocessing.perturb import process_augmentations from nemo.core.classes.common import PretrainedModelInfo from nemo.utils import logging, model_utils @@ -90,91 +89,26 @@ def __init__(self, cfg: DictConfig, trainer=None): ) def _setup_dataloader_from_config(self, config: Optional[Dict]): - if 'augmentor' in config: - augmentor = process_augmentations(config['augmentor']) - else: - augmentor = None + dataset = audio_to_text_dataset.get_audio_to_text_bpe_dataset_from_config( + config=config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + tokenizer=self.tokenizer, + preprocessor_cfg=self.cfg.get("preprocessor", None), + ) - is_concat = config.get('is_concat', False) - if is_concat: - if 'concat_sampling' in config and config['concat_sampling'] is None: - logging.warning( - f"Concat dataset requires `contact_sampling` but it was not provided. Config: {config}" - ) - return None + if dataset is None: + return None - if not 'concat_probabilities' in config: - logging.warning( - f"Concat dataset requires `contact_probabilities` list but it was not provided. Config: {config}" - ) - return None - else: - if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): - logging.warning(f"`contact_probabilities` need to sum to 1. Config: {config}") - return None - - shuffle = config['shuffle'] - device = 'gpu' if torch.cuda.is_available() else 'cpu' - if config.get('use_dali', False): - device_id = self.local_rank if device == 'gpu' else None - dataset = audio_to_text_dataset.get_dali_bpe_dataset( - config=config, - tokenizer=self.tokenizer, - shuffle=shuffle, - device_id=device_id, - global_rank=self.global_rank, - world_size=self.world_size, - preprocessor_cfg=self._cfg.preprocessor, - ) + if isinstance(dataset, AudioToBPEDALIDataset): + # DALI Dataset implements dataloader interface return dataset - # Instantiate tarred dataset loader or normal dataset loader + shuffle = config['shuffle'] if config.get('is_tarred', False): - if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( - 'manifest_filepath' in config and config['manifest_filepath'] is None - ): - logging.warning( - "Could not load dataset as `manifest_filepath` was None or " - f"`tarred_audio_filepaths` is None. Provided config : {config}" - ) - return None - - shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 - if is_concat: - dataset = audio_to_text_dataset.get_concat_tarred_dataset( - config=config, - tokenizer=self.tokenizer, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_tarred_dataset( - config=config, - tokenizer=self.tokenizer, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) shuffle = False - else: - if 'manifest_filepath' in config and config['manifest_filepath'] is None: - logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") - return None - if is_concat: - dataset = audio_to_text_dataset.get_concat_bpe_dataset( - config=config, - global_rank=self.global_rank, - world_size=self.world_size, - tokenizer=self.tokenizer, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_bpe_dataset( - config=config, tokenizer=self.tokenizer, augmentor=augmentor - ) + if hasattr(dataset, 'collate_fn'): collate_fn = dataset.collate_fn else: diff --git a/nemo/collections/asr/models/ctc_models.py b/nemo/collections/asr/models/ctc_models.py index 86180ff2caa9..8eecb1a527d9 100644 --- a/nemo/collections/asr/models/ctc_models.py +++ b/nemo/collections/asr/models/ctc_models.py @@ -15,7 +15,7 @@ import json import os import tempfile -from math import ceil, isclose +from math import ceil from typing import Dict, List, Optional, Union import torch @@ -24,12 +24,11 @@ from tqdm.auto import tqdm from nemo.collections.asr.data import audio_to_text_dataset -from nemo.collections.asr.data.audio_to_text_dali import DALIOutputs +from nemo.collections.asr.data.audio_to_text_dali import AudioToCharDALIDataset, DALIOutputs from nemo.collections.asr.losses.ctc import CTCLoss from nemo.collections.asr.metrics.wer import WER, CTCDecoding, CTCDecodingConfig from nemo.collections.asr.models.asr_model import ASRModel, ExportableEncDecModel from nemo.collections.asr.parts.mixins import ASRModuleMixin -from nemo.collections.asr.parts.preprocessing.perturb import process_augmentations from nemo.collections.asr.parts.utils.audio_utils import ChannelSelectorType from nemo.core.classes.common import PretrainedModelInfo, typecheck from nemo.core.classes.mixins import AccessMixin @@ -334,85 +333,27 @@ def change_decoding_strategy(self, decoding_cfg: DictConfig): logging.info(f"Changed decoding strategy to \n{OmegaConf.to_yaml(self.cfg.decoding)}") def _setup_dataloader_from_config(self, config: Optional[Dict]): - if 'augmentor' in config: - augmentor = process_augmentations(config['augmentor']) - else: - augmentor = None - - is_concat = config.get('is_concat', False) - if is_concat: - if 'concat_sampling' in config and config['concat_sampling'] is None: - logging.warning( - f"Concat dataset requires `contact_sampling` but it was not provided. Config: {config}" - ) - return None - if not 'concat_probabilities' in config: - logging.warning( - f"Concat dataset requires `contact_probabilities` list but it was not provided. Config: {config}" - ) - return None - else: - if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): - logging.warning(f"`contact_probabilities` need to sum to 1. Config: {config}") - return None - # Automatically inject args from model config to dataloader config audio_to_text_dataset.inject_dataloader_value_from_model_config(self.cfg, config, key='sample_rate') audio_to_text_dataset.inject_dataloader_value_from_model_config(self.cfg, config, key='labels') + dataset = audio_to_text_dataset.get_audio_to_text_char_dataset_from_config( + config=config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + preprocessor_cfg=self._cfg.get("preprocessor", None), + ) - shuffle = config['shuffle'] - device = 'gpu' if torch.cuda.is_available() else 'cpu' - if config.get('use_dali', False): - device_id = self.local_rank if device == 'gpu' else None - dataset = audio_to_text_dataset.get_dali_char_dataset( - config=config, - shuffle=shuffle, - device_id=device_id, - global_rank=self.global_rank, - world_size=self.world_size, - preprocessor_cfg=self._cfg.preprocessor, - ) + if dataset is None: + return None + + if isinstance(dataset, AudioToCharDALIDataset): + # DALI Dataset implements dataloader interface return dataset - # Instantiate tarred dataset loader or normal dataset loader + shuffle = config['shuffle'] if config.get('is_tarred', False): - if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( - 'manifest_filepath' in config and config['manifest_filepath'] is None - ): - logging.warning( - "Could not load dataset as `manifest_filepath` was None or " - f"`tarred_audio_filepaths` is None. Provided config : {config}" - ) - return None - - shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 - if is_concat: - dataset = audio_to_text_dataset.get_concat_tarred_dataset( - config=config, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_tarred_dataset( - config=config, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) shuffle = False - else: - if 'manifest_filepath' in config and config['manifest_filepath'] is None: - logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") - return None - if is_concat: - dataset = audio_to_text_dataset.get_concat_char_dataset( - config=config, global_rank=self.global_rank, world_size=self.world_size, augmentor=augmentor - ) - else: - dataset = audio_to_text_dataset.get_char_dataset(config=config, augmentor=augmentor) if hasattr(dataset, 'collate_fn'): collate_fn = dataset.collate_fn diff --git a/nemo/collections/asr/models/rnnt_bpe_models.py b/nemo/collections/asr/models/rnnt_bpe_models.py index 6b7e9cf72c80..8e2a92a44e06 100644 --- a/nemo/collections/asr/models/rnnt_bpe_models.py +++ b/nemo/collections/asr/models/rnnt_bpe_models.py @@ -14,7 +14,6 @@ import copy import os -from math import isclose from typing import Dict, List, Optional, Union import torch @@ -22,11 +21,11 @@ from pytorch_lightning import Trainer from nemo.collections.asr.data import audio_to_text_dataset +from nemo.collections.asr.data.audio_to_text_dali import AudioToBPEDALIDataset from nemo.collections.asr.losses.rnnt import RNNTLoss from nemo.collections.asr.metrics.rnnt_wer_bpe import RNNTBPEWER, RNNTBPEDecoding, RNNTBPEDecodingConfig from nemo.collections.asr.models.rnnt_models import EncDecRNNTModel from nemo.collections.asr.parts.mixins import ASRBPEMixin -from nemo.collections.asr.parts.preprocessing.perturb import process_augmentations from nemo.core.classes.common import PretrainedModelInfo from nemo.utils import logging, model_utils @@ -455,80 +454,25 @@ def change_decoding_strategy(self, decoding_cfg: DictConfig): logging.info(f"Changed decoding strategy to \n{OmegaConf.to_yaml(self.cfg.decoding)}") def _setup_dataloader_from_config(self, config: Optional[Dict]): - if 'augmentor' in config: - augmentor = process_augmentations(config['augmentor']) - else: - augmentor = None - - shuffle = config['shuffle'] + dataset = audio_to_text_dataset.get_audio_to_text_bpe_dataset_from_config( + config=config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + tokenizer=self.tokenizer, + preprocessor_cfg=self.cfg.get("preprocessor", None), + ) - is_concat = config.get('is_concat', False) - if is_concat: - if 'concat_sampling' in config and config['concat_sampling'] is None: - logging.warning( - f"Concat dataset requires `contact_sampling` but it was not provided. Config: {config}" - ) - return None + if dataset is None: + return None - if not 'concat_probabilities' in config: - logging.warning( - f"Concat dataset requires `contact_probabilities` list but it was not provided. Config: {config}" - ) - return None - else: - if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): - logging.warning(f"`contact_probabilities` need to sum to 1. Config: {config}") - return None + if isinstance(dataset, AudioToBPEDALIDataset): + # DALI Dataset implements dataloader interface + return dataset - # Instantiate tarred dataset loader or normal dataset loader + shuffle = config['shuffle'] if config.get('is_tarred', False): - if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( - 'manifest_filepath' in config and config['manifest_filepath'] is None - ): - logging.warning( - "Could not load dataset as `manifest_filepath` was None or " - f"`tarred_audio_filepaths` is None. Provided config : {config}" - ) - return None - - shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 - - if is_concat: - dataset = audio_to_text_dataset.get_concat_tarred_dataset( - config=config, - tokenizer=self.tokenizer, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_tarred_dataset( - config=config, - tokenizer=self.tokenizer, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) shuffle = False - else: - if 'manifest_filepath' in config and config['manifest_filepath'] is None: - logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") - return None - - if is_concat: - dataset = audio_to_text_dataset.get_concat_bpe_dataset( - config=config, - tokenizer=self.tokenizer, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_bpe_dataset( - config=config, tokenizer=self.tokenizer, augmentor=augmentor - ) if hasattr(dataset, 'collate_fn'): collate_fn = dataset.collate_fn diff --git a/nemo/collections/asr/models/rnnt_models.py b/nemo/collections/asr/models/rnnt_models.py index 459e5ecab989..31fc2f26d6a4 100644 --- a/nemo/collections/asr/models/rnnt_models.py +++ b/nemo/collections/asr/models/rnnt_models.py @@ -25,13 +25,12 @@ from tqdm.auto import tqdm from nemo.collections.asr.data import audio_to_text_dataset -from nemo.collections.asr.data.audio_to_text_dali import DALIOutputs +from nemo.collections.asr.data.audio_to_text_dali import AudioToCharDALIDataset, DALIOutputs from nemo.collections.asr.losses.rnnt import RNNTLoss, resolve_rnnt_default_loss_name from nemo.collections.asr.metrics.rnnt_wer import RNNTWER, RNNTDecoding, RNNTDecodingConfig from nemo.collections.asr.models.asr_model import ASRModel from nemo.collections.asr.modules.rnnt import RNNTDecoderJoint from nemo.collections.asr.parts.mixins import ASRModuleMixin -from nemo.collections.asr.parts.preprocessing.perturb import process_augmentations from nemo.collections.asr.parts.utils.audio_utils import ChannelSelectorType from nemo.core.classes import Exportable from nemo.core.classes.common import PretrainedModelInfo, typecheck @@ -445,86 +444,27 @@ def change_decoding_strategy(self, decoding_cfg: DictConfig): logging.info(f"Changed decoding strategy to \n{OmegaConf.to_yaml(self.cfg.decoding)}") def _setup_dataloader_from_config(self, config: Optional[Dict]): - if 'augmentor' in config: - augmentor = process_augmentations(config['augmentor']) - else: - augmentor = None - - is_concat = config.get('is_concat', False) - if is_concat: - if 'concat_sampling' in config and config['concat_sampling'] is None: - logging.warning( - f"Concat dataset requires `contact_sampling` but it was not provided. Config: {config}" - ) - return None - - if not 'concat_probabilities' in config: - logging.warning( - f"Concat dataset requires `contact_probabilities` list but it was not provided. Config: {config}" - ) - return None - else: - if not isclose(sum(config['concat_probabilities']), 1, abs_tol=1e-6): - logging.warning(f"`contact_probabilities` need to sum to 1. Config: {config}") - return None - # Automatically inject args from model config to dataloader config audio_to_text_dataset.inject_dataloader_value_from_model_config(self.cfg, config, key='sample_rate') audio_to_text_dataset.inject_dataloader_value_from_model_config(self.cfg, config, key='labels') + dataset = audio_to_text_dataset.get_audio_to_text_char_dataset_from_config( + config=config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + preprocessor_cfg=self._cfg.get("preprocessor", None), + ) - shuffle = config['shuffle'] - device = 'gpu' if torch.cuda.is_available() else 'cpu' - if config.get('use_dali', False): - device_id = self.local_rank if device == 'gpu' else None - dataset = audio_to_text_dataset.get_dali_char_dataset( - config=config, - shuffle=shuffle, - device_id=device_id, - global_rank=self.global_rank, - world_size=self.world_size, - preprocessor_cfg=self._cfg.preprocessor, - ) + if dataset is None: + return None + + if isinstance(dataset, AudioToCharDALIDataset): + # DALI Dataset implements dataloader interface return dataset - # Instantiate tarred dataset loader or normal dataset loader + shuffle = config['shuffle'] if config.get('is_tarred', False): - if ('tarred_audio_filepaths' in config and config['tarred_audio_filepaths'] is None) or ( - 'manifest_filepath' in config and config['manifest_filepath'] is None - ): - logging.warning( - "Could not load dataset as `manifest_filepath` was None or " - f"`tarred_audio_filepaths` is None. Provided config : {config}" - ) - return None - - shuffle_n = config.get('shuffle_n', 4 * config['batch_size']) if shuffle else 0 - if is_concat: - dataset = audio_to_text_dataset.get_concat_tarred_dataset( - config=config, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) - else: - dataset = audio_to_text_dataset.get_tarred_dataset( - config=config, - shuffle_n=shuffle_n, - global_rank=self.global_rank, - world_size=self.world_size, - augmentor=augmentor, - ) shuffle = False - else: - if 'manifest_filepath' in config and config['manifest_filepath'] is None: - logging.warning(f"Could not load dataset as `manifest_filepath` was None. Provided config : {config}") - return None - if is_concat: - dataset = audio_to_text_dataset.get_concat_char_dataset( - config=config, global_rank=self.global_rank, world_size=self.world_size, augmentor=augmentor - ) - else: - dataset = audio_to_text_dataset.get_char_dataset(config=config, augmentor=augmentor) if hasattr(dataset, 'collate_fn'): collate_fn = dataset.collate_fn From 1492174b37fc026ae1d345e35630f6ea247f92f0 Mon Sep 17 00:00:00 2001 From: Mikyas Desta Date: Wed, 18 Jan 2023 09:38:49 -0800 Subject: [PATCH 16/73] transformer duration added and IPA config files added Signed-off-by: Jason --- examples/tts/conf/rad-tts_dec_ipa.yaml | 275 ++++++++++++++ .../tts/conf/rad-tts_feature_pred_ipa.yaml | 341 ++++++++++++++++++ .../tts/modules/attribute_prediction_model.py | 8 +- nemo/collections/tts/modules/transformer.py | 50 +++ 4 files changed, 672 insertions(+), 2 deletions(-) create mode 100644 examples/tts/conf/rad-tts_dec_ipa.yaml create mode 100644 examples/tts/conf/rad-tts_feature_pred_ipa.yaml diff --git a/examples/tts/conf/rad-tts_dec_ipa.yaml b/examples/tts/conf/rad-tts_dec_ipa.yaml new file mode 100644 index 000000000000..b251537daad8 --- /dev/null +++ b/examples/tts/conf/rad-tts_dec_ipa.yaml @@ -0,0 +1,275 @@ +name: RadTTS +sample_rate: 22050 + +train_dataset: ??? +validation_datasets: ??? +ckpt_path: None +export_dir: ??? +sup_data_path: ??? +sup_data_types: ["log_mel", "align_prior_matrix", "pitch", "voiced_mask", "p_voiced", "energy"] + + + +# these frame-wise values depend on pitch_fmin and pitch_fmax, you can get values +# by running `scripts/dataset_processing/tts/extract_sup_data.py` +pitch_mean: ??? # e.g. 212.35873413085938 for LJSpeech +pitch_std: ??? # e.g. 68.52806091308594 for LJSpeech + +# default values from librosa.pyin +pitch_fmin: 65.40639132514966 +pitch_fmax: 2093.004522404789 + +# default values for sample_rate=22050 +n_mels: 80 +n_window_size: 1024 +n_window_stride: 256 +n_fft: 1024 +lowfreq: 0 +highfreq: 8000 +window: "hann" + + +phoneme_dict_path: "scripts/tts_dataset_files/ipa_cmudict-0.7b_nv22.10.txt" +heteronyms_path: "scripts/tts_dataset_files/heteronyms-052722" +whitelist_path: "nemo_text_processing/text_normalization/en/data/whitelist/lj_speech.tsv" +mapping_file_path: "" + +model: + target: nemo.collections.tts.models.RadTTSModel + bin_loss_start_ratio: 0.2 + bin_loss_warmup_epochs: 100 + + symbols_embedding_dim: 384 + n_mel_channels: ${n_mels} + + pitch_mean: ${pitch_mean} + pitch_std: ${pitch_std} + + text_normalizer: + _target_: nemo_text_processing.text_normalization.normalize.Normalizer + lang: en + input_case: cased + whitelist: ${whitelist_path} + + text_normalizer_call_kwargs: + verbose: false + punct_pre_process: true + punct_post_process: true + + text_tokenizer: + _target_: nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.IPATokenizer + punct: true + apostrophe: true + pad_with_space: true + g2p: + _target_: nemo_text_processing.g2p.modules.IPAG2P + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + # Relies on the heteronyms list for anything that needs to be disambiguated + ignore_ambiguous_words: true + use_chars: true + use_stresses: true + + train_ds: + dataset: + _target_: "nemo.collections.tts.torch.data.TTSDataset" + manifest_filepath: ${train_dataset} + sample_rate: ${sample_rate} + sup_data_path: ${sup_data_path} + sup_data_types: ${sup_data_types} + n_fft: ${n_fft} + win_length: ${n_window_size} + hop_length: ${n_window_stride} + window: ${window} + n_mels: ${n_mels} + lowfreq: ${lowfreq} + highfreq: ${highfreq} + max_duration: null + min_duration: 0.1 + ignore_file: null + trim: False + pitch_fmin: ${pitch_fmin} + pitch_fmax: ${pitch_fmax} + + + + text_tokenizer: + _target_: "nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.EnglishPhonemesTokenizer" + punct: True + stresses: True + chars: True + space: ' ' + silence: null + apostrophe: True + sep: '|' + add_blank_at: null + pad_with_space: True + g2p: + _target_: "nemo_text_processing.g2p.modules.EnglishG2p" + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + dataloader_params: + drop_last: false + shuffle: true + batch_size: 8 + num_workers: 8 + pin_memory: false + + validation_ds: + dataset: + _target_: "nemo.collections.tts.torch.data.TTSDataset" + manifest_filepath: ${validation_datasets} + sample_rate: ${sample_rate} + sup_data_path: ${sup_data_path} + sup_data_types: ${sup_data_types} + n_fft: ${n_fft} + win_length: ${n_window_size} + hop_length: ${n_window_stride} + window: ${window} + n_mels: ${n_mels} + lowfreq: ${lowfreq} + highfreq: ${highfreq} + max_duration: null + min_duration: 0.1 + ignore_file: null + trim: False + pitch_fmin: ${pitch_fmin} + pitch_fmax: ${pitch_fmax} + + text_tokenizer: + _target_: "nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.EnglishPhonemesTokenizer" + punct: True + stresses: True + chars: True + space: ' ' + silence: null + apostrophe: True + sep: '|' + add_blank_at: null + pad_with_space: True + g2p: + _target_: "nemo_text_processing.g2p.modules.EnglishG2p" + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + dataloader_params: + drop_last: false + shuffle: false + batch_size: 8 + num_workers: 8 + pin_memory: false + + optim: + name: RAdam + lr: 0.0001 + betas: [0.9, 0.98] + weight_decay: 0.000001 + + sched: + name: exp_decay + warmup_steps: 40000 + last_epoch: -1 + d_model: 1 # Disable scaling based on model dim + trainerConfig: + sigma: 1 + iters_per_checkpoint: 3000 + seed: null + ignore_layers: [] + finetune_layers: [] + include_layers: [] + with_tensorboard: true + dur_loss_weight: 1 + ctc_loss_weight: 1 + mask_unvoiced_f0: false + log_step: 1 + binarization_start_iter: 6000 + kl_loss_start_iter: 18000 + loss_weights: + ctc_loss_weight: 0.1 + dur_loss_weight: 1.0 + f0_loss_weight: 1.0 + energy_loss_weight: 1.0 + vpred_loss_weight: 1.0 + unfreeze_modules: "all" + + load_from_checkpoint: False + init_from_ptl_ckpt: ${ckpt_path} + modelConfig: + _target_: "nemo.collections.tts.modules.radtts.RadTTSModule" + n_speakers: 1 + n_speaker_dim: 16 + n_text: 384 #185 + n_text_dim: 512 + n_flows: 8 + n_conv_layers_per_step: 4 + n_mel_channels: 80 + n_hidden: 1024 + mel_encoder_n_hidden: 512 + dummy_speaker_embedding: false + n_early_size: 2 + n_early_every: 2 + n_group_size: 2 + affine_model: wavenet + include_modules: "decatnvpred" + scaling_fn: tanh + matrix_decomposition: LUS + learn_alignments: true + use_context_lstm: true + context_lstm_norm: spectral + context_lstm_w_f0_and_energy: true + text_encoder_lstm_norm: spectral + n_f0_dims: 1 + n_energy_avg_dims: 1 + use_first_order_features: false + unvoiced_bias_activation: "relu" + decoder_use_partial_padding: false + decoder_use_unvoiced_bias: true + ap_pred_log_f0: true + ap_use_unvoiced_bias: true + ap_use_voiced_embeddings: true + dur_model_config: null + f0_model_config: null + energy_model_config: null + v_model_config : + name : dap + hparams : + n_speaker_dim : 16 + take_log_of_input: false + bottleneck_hparams: + in_dim: 512 + reduction_factor: 16 + norm: weightnorm + non_linearity: relu + arch_hparams: + out_dim: 1 + n_layers: 2 + n_channels: 256 + kernel_size: 3 + p_dropout: 0.5 + +trainer: + devices: 8 + precision: 16 + max_epochs: 1000 + num_nodes: 1 + accelerator: gpu + strategy: ddp + accumulate_grad_batches: 1 + enable_checkpointing: False + logger: False + gradient_clip_val: 1 + log_every_n_steps: 100 + check_val_every_n_epoch: 5 + +exp_manager: + exp_dir: ${export_dir} + name: ${name} + create_tensorboard_logger: True + create_checkpoint_callback: True + checkpoint_callback_params: + monitor: val/loss_ctc + mode: min + filepath: ${export_dir} + filename: model_checkpoint diff --git a/examples/tts/conf/rad-tts_feature_pred_ipa.yaml b/examples/tts/conf/rad-tts_feature_pred_ipa.yaml new file mode 100644 index 000000000000..cf36d7ad9506 --- /dev/null +++ b/examples/tts/conf/rad-tts_feature_pred_ipa.yaml @@ -0,0 +1,341 @@ +name: RadTTS +sample_rate: 22050 + +train_dataset: ??? +validation_datasets: ??? +ckpt_path: ??? +export_dir: ??? +sup_data_path: ??? +sup_data_types: ["log_mel", "align_prior_matrix", "pitch", "voiced_mask", "p_voiced", "energy"] + + +# these frame-wise values depend on pitch_fmin and pitch_fmax, you can get values +# by running `scripts/dataset_processing/tts/extract_sup_data.py` +pitch_mean: ??? # e.g. 212.35873413085938 for LJSpeech +pitch_std: ??? # e.g. 68.52806091308594 for LJSpeech + +# default values from librosa.pyin +pitch_fmin: 65.40639132514966 +pitch_fmax: 2093.004522404789 + +# default values for sample_rate=22050 +n_mels: 80 +n_window_size: 1024 +n_window_stride: 256 +n_fft: 1024 +lowfreq: 0 +highfreq: 8000 +window: "hann" + +phoneme_dict_path: "scripts/tts_dataset_files/ipa_cmudict-0.7b_nv22.10.txt" +heteronyms_path: "scripts/tts_dataset_files/heteronyms-052722" +whitelist_path: "nemo_text_processing/text_normalization/en/data/whitelist/lj_speech.tsv" +mapping_file_path: "" + +model: + target: nemo.collections.tts.models.RadTTSModel + bin_loss_start_ratio: 0.2 + bin_loss_warmup_epochs: 100 + + symbols_embedding_dim: 384 + n_mel_channels: ${n_mels} + + pitch_mean: ${pitch_mean} + pitch_std: ${pitch_std} + + text_normalizer: + _target_: nemo_text_processing.text_normalization.normalize.Normalizer + lang: en + input_case: cased + whitelist: ${whitelist_path} + + text_normalizer_call_kwargs: + verbose: false + punct_pre_process: true + punct_post_process: true + + text_tokenizer: + _target_: nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.IPATokenizer + punct: true + apostrophe: true + pad_with_space: true + g2p: + _target_: nemo_text_processing.g2p.modules.IPAG2P + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + # Relies on the heteronyms list for anything that needs to be disambiguated + ignore_ambiguous_words: true + use_chars: true + use_stresses: true + + train_ds: + dataset: + _target_: "nemo.collections.tts.torch.data.TTSDataset" + manifest_filepath: ${train_dataset} + sample_rate: ${sample_rate} + sup_data_path: ${sup_data_path} + sup_data_types: ${sup_data_types} + n_fft: ${n_fft} + win_length: ${n_window_size} + hop_length: ${n_window_stride} + window: ${window} + n_mels: ${n_mels} + lowfreq: ${lowfreq} + highfreq: ${highfreq} + max_duration: null + min_duration: 0.1 + ignore_file: null + trim: False + pitch_fmin: ${pitch_fmin} + pitch_fmax: ${pitch_fmax} + + + + text_tokenizer: + _target_: "nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.EnglishPhonemesTokenizer" + punct: True + stresses: True + chars: True + space: ' ' + silence: null + apostrophe: True + sep: '|' + add_blank_at: null + pad_with_space: True + g2p: + _target_: "nemo_text_processing.g2p.modules.EnglishG2p" + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + dataloader_params: + drop_last: false + shuffle: true + batch_size: 32 + num_workers: 8 + pin_memory: True + + validation_ds: + dataset: + _target_: "nemo.collections.tts.torch.data.TTSDataset" + manifest_filepath: ${validation_datasets} + sample_rate: ${sample_rate} + sup_data_path: ${sup_data_path} + sup_data_types: ${sup_data_types} + n_fft: ${n_fft} + win_length: ${n_window_size} + hop_length: ${n_window_stride} + window: ${window} + n_mels: ${n_mels} + lowfreq: ${lowfreq} + highfreq: ${highfreq} + max_duration: null + min_duration: 0.1 + ignore_file: null + trim: False + pitch_fmin: ${pitch_fmin} + pitch_fmax: ${pitch_fmax} + + text_tokenizer: + _target_: "nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.EnglishPhonemesTokenizer" + punct: True + stresses: True + chars: True + space: ' ' + silence: null + apostrophe: True + sep: '|' + add_blank_at: null + pad_with_space: True + g2p: + _target_: "nemo_text_processing.g2p.modules.EnglishG2p" + phoneme_dict: ${phoneme_dict_path} + heteronyms: ${heteronyms_path} + phoneme_probability: 0.5 + dataloader_params: + drop_last: false + shuffle: false + batch_size: 32 + num_workers: 8 + pin_memory: True + + optim: + name: RAdam + lr: 0.001 + betas: [0.9, 0.98] + weight_decay: 0.000001 + + sched: + name: exp_decay + warmup_steps: 40000 + last_epoch: -1 + d_model: 1 # Disable scaling based on model dim + trainerConfig: + sigma: 1 + iters_per_checkpoint: 3000 + seed: null + ignore_layers: [] + finetune_layers: [] + include_layers: [] + with_tensorboard: true + dur_loss_weight: 1 + ctc_loss_weight: 1 + mask_unvoiced_f0: false + log_step: 1 + binarization_start_iter: 1000000 + kl_loss_start_iter: 1000000 + loss_weights: + ctc_loss_weight: 0.1 + dur_loss_weight: 1.0 + f0_loss_weight: 1.0 + energy_loss_weight: 1.0 + vpred_loss_weight: 1.0 + unfreeze_modules: "durf0energyvpred" + + load_from_checkpoint: True + init_from_ptl_ckpt: ${ckpt_path} + modelConfig: + _target_: "nemo.collections.tts.modules.radtts.RadTTSModule" + n_speakers: 1 + n_speaker_dim: 16 + n_text: 384 #185 + n_text_dim: 512 + n_flows: 8 + n_conv_layers_per_step: 4 + n_mel_channels: 80 + n_hidden: 1024 + mel_encoder_n_hidden: 512 + n_components: 0 + mean_scale: 0 + fixed_gaussian: true + dummy_speaker_embedding: false + use_positional_embedding: false + n_early_size: 2 + n_early_every: 2 + n_group_size: 2 + use_feature_gating: false + affine_model: wavenet + include_modules: "decatnunvbiasdpmvpredapm" + what_to_train: decatnunvbias + scaling_fn: tanh + reduction_norm: "" + matrix_decomposition: LUS + learn_alignments: true + use_query_proj: true + align_query_enc_type: 3xconv + lstm_applicable_steps: [] + use_context_lstm: true + context_lstm_norm: spectral + context_lstm_w_f0_and_energy: true + text_encoder_lstm_norm: spectral + use_text_conditional_priors: false + zero_out_context: false + n_aug_dims: 6 + n_f0_dims: 1 + n_energy_avg_dims: 1 + use_first_order_features: false + unvoiced_bias_activation: "relu" + decoder_use_partial_padding: false + decoder_use_unvoiced_bias: true + ap_pred_log_f0: true + ap_use_unvoiced_bias: true + ap_use_voiced_embeddings: true + p_dropout: 0.1 + noise_to_unvoiced_in_f0: 0 + noise_to_pvoiced: 0 + dur_model_config: + name: dap + hparams: + n_speaker_dim: 16 + bottleneck_hparams: + in_dim: 512 + reduction_factor: 16 + norm: weightnorm + non_linearity: relu + take_log_of_input: true + use_transformer: true + arch_hparams: + out_dim: 1 + n_layers: 3 + n_head: 1 + d_head: 64 + d_inner: 1024 + kernel_size: 3 + dropout: 0.1 + dropatt: 0.1 + dropemb: 0 + in_dim: 48 + f0_model_config: + name: dap + hparams: + n_speaker_dim: 16 + bottleneck_hparams: + in_dim: 512 + reduction_factor: 16 + norm: weightnorm + non_linearity: relu + take_log_of_input: false + arch_hparams: + out_dim: 1 + n_layers: 2 + n_channels: 256 + kernel_size: 11 + p_dropout: 0.5 + + energy_model_config: + name: dap + hparams: + n_speaker_dim: 16 + bottleneck_hparams: + in_dim: 512 + reduction_factor: 16 + norm: weightnorm + non_linearity: relu + take_log_of_input: false + arch_hparams: + out_dim: 1 + n_layers: 2 + n_channels: 256 + kernel_size: 3 + p_dropout: 0.5 + v_model_config : + name: dap + hparams: + n_speaker_dim: 16 + take_log_of_input: false + bottleneck_hparams: + in_dim: 512 + reduction_factor: 16 + norm: weightnorm + non_linearity: relu + arch_hparams: + out_dim: 1 + n_layers: 2 + n_channels: 256 + kernel_size: 3 + p_dropout: 0.5 + +trainer: + devices: 8 + precision: 16 + max_epochs: 1000 + num_nodes: 1 + accelerator: gpu + strategy: ddp + accumulate_grad_batches: 1 + enable_checkpointing: False + logger: False + gradient_clip_val: 1 + log_every_n_steps: 100 + check_val_every_n_epoch: 2 + +exp_manager: + exp_dir: ${export_dir} + name: ${name} + create_tensorboard_logger: True + create_checkpoint_callback: True + checkpoint_callback_params: + monitor: val/loss_energy + mode: min + filepath: ${export_dir} + filename: model_checkpoint diff --git a/nemo/collections/tts/modules/attribute_prediction_model.py b/nemo/collections/tts/modules/attribute_prediction_model.py index d6595c94efea..178b47bac601 100644 --- a/nemo/collections/tts/modules/attribute_prediction_model.py +++ b/nemo/collections/tts/modules/attribute_prediction_model.py @@ -19,6 +19,7 @@ from nemo.collections.tts.helpers.helpers import get_mask_from_lengths from nemo.collections.tts.modules.common import ConvLSTMLinear from nemo.collections.tts.modules.submodules import ConvNorm, MaskedInstanceNorm1d +from nemo.collections.tts.modules.transformer import FFTransformer def get_attribute_prediction_model(config): @@ -78,11 +79,14 @@ def forward(self, x, lens): class DAP(AttributeProcessing): - def __init__(self, n_speaker_dim, bottleneck_hparams, take_log_of_input, arch_hparams): + def __init__(self, n_speaker_dim, bottleneck_hparams, take_log_of_input, arch_hparams, use_transformer=False): super(DAP, self).__init__(take_log_of_input) self.bottleneck_layer = BottleneckLayerLayer(**bottleneck_hparams) arch_hparams['in_dim'] = self.bottleneck_layer.out_dim + n_speaker_dim - self.feat_pred_fn = ConvLSTMLinear(**arch_hparams) + if use_transformer: + self.feat_pred_fn = FFTransformer(**arch_hparams) + else: + self.feat_pred_fn = ConvLSTMLinear(**arch_hparams) def forward(self, txt_enc, spk_emb, x, lens): if x is not None: diff --git a/nemo/collections/tts/modules/transformer.py b/nemo/collections/tts/modules/transformer.py index 25b3767e2df1..8073a24484fe 100644 --- a/nemo/collections/tts/modules/transformer.py +++ b/nemo/collections/tts/modules/transformer.py @@ -17,6 +17,8 @@ import torch.nn as nn import torch.nn.functional as F +from nemo.collections.tts.helpers.helpers import get_mask_from_lengths +from nemo.collections.tts.modules.submodules import LinearNorm from nemo.core.classes import NeuralModule, typecheck from nemo.core.neural_types.elements import EncodedRepresentation, LengthsType, MaskType, TokenIndex from nemo.core.neural_types.neural_type import NeuralType @@ -260,3 +262,51 @@ def input_types(self): def forward(self, input, conditioning=0): return self._forward(self.word_emb(input), (input != self.padding_idx).unsqueeze(2), conditioning) # (B, L, 1) + + +class FFTransformer(nn.Module): + def __init__( + self, + in_dim, + out_dim=1, + n_layers=6, + n_head=1, + d_head=64, + d_inner=1024, + kernel_size=3, + dropout=0.1, + dropatt=0.1, + dropemb=0.0, + ): + super(FFTransformer, self).__init__() + self.in_dim = in_dim + self.out_dim = out_dim + self.n_head = n_head + self.d_head = d_head + + self.pos_emb = PositionalEmbedding(self.in_dim) + self.drop = nn.Dropout(dropemb) + self.layers = nn.ModuleList() + + for _ in range(n_layers): + self.layers.append( + TransformerLayer(n_head, in_dim, d_head, d_inner, kernel_size, dropout, dropatt=dropatt) + ) + + self.dense = LinearNorm(in_dim, out_dim) + + def forward(self, dec_inp, in_lens): + # B, C, T --> B, T, C + inp = dec_inp.transpose(1, 2) + mask = get_mask_from_lengths(in_lens)[..., None] + + pos_seq = torch.arange(inp.size(1), device=inp.device).to(inp.dtype) + pos_emb = self.pos_emb(pos_seq) * mask + + out = self.drop(inp + pos_emb) + + for layer in self.layers: + out = layer(out, mask=mask) + + out = self.dense(out).transpose(1, 2) + return out From 68aacb8e7124ee757769f2ced29aa477b3d651ce Mon Sep 17 00:00:00 2001 From: MikyasDesta Date: Wed, 18 Jan 2023 13:30:31 -0800 Subject: [PATCH 17/73] inference issue for pace resolved Signed-off-by: Jason --- nemo/collections/tts/modules/radtts.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index c571f77ed7e9..f6fa10a56ea3 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -593,7 +593,7 @@ def infer( sigma_energy=0.8, speaker_id_text=None, speaker_id_attributes=None, - pace=1.0, + pace=None, token_duration_max=100, in_lens=None, dur=None, @@ -612,6 +612,7 @@ def infer( else: in_lens = in_lens.to(dtype=torch.int64) spk_vec = self.encode_speaker(speaker_id) + if speaker_id_text is None: speaker_id_text = speaker_id if speaker_id_attributes is None: @@ -629,8 +630,10 @@ def infer( # text encoded removes padding tokens so shape of text_enc is changed # need to adjust pace, pitch_shift to account for this txt_len_pad_removed = torch.max(in_lens) - pace = pace[:, :txt_len_pad_removed] - pitch_shift = pitch_shift[:, :txt_len_pad_removed].unsqueeze(-1) + if pace is None: + pace = 1.0 + else: + pace = pace[:, :txt_len_pad_removed] txt_enc_time_expanded, out_lens = regulate_len( dur, From 53a4c9cf12ac52a65c5c9fe716c2756c1d4e8acf Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Thu, 2 Feb 2023 14:52:02 -0800 Subject: [PATCH 18/73] Latest ONNX develpoments Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/helpers/helpers.py | 8 ++++- nemo/collections/tts/models/radtts.py | 14 ++++----- nemo/collections/tts/modules/common.py | 36 +++++++++++----------- nemo/collections/tts/modules/radtts.py | 41 +++++++++---------------- 4 files changed, 47 insertions(+), 52 deletions(-) diff --git a/nemo/collections/tts/helpers/helpers.py b/nemo/collections/tts/helpers/helpers.py index 535a33cf92e9..3ca77334f2a4 100644 --- a/nemo/collections/tts/helpers/helpers.py +++ b/nemo/collections/tts/helpers/helpers.py @@ -547,12 +547,18 @@ def regulate_len( reps = durations.float() / pace reps = (reps + 0.5).floor().long() dec_lens = reps.sum(dim=1) - if replicate_to_nearest_multiple: to_pad = group_size * (torch.div(dec_lens, group_size, rounding_mode='floor') + 1) - dec_lens to_pad = to_pad.unsqueeze(-1).repeat(1, reps.shape[1]) to_pad_expanded = torch.zeros_like(reps).scatter_(1, in_lens.unsqueeze(-1).long() - 1, to_pad) reps = reps + to_pad_expanded + + # to_pad = group_size * (torch.div(dec_lens+1, group_size, rounding_mode='floor')) - dec_lens + # reps.index_put_( + # indices = [torch.arange(in_lens.shape[0], dtype=torch.int), in_lens - 1], + # values = to_pad, + # accumulate = True + # ) dec_lens = reps.sum(dim=1) max_len = dec_lens.max() diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index 95202316c01f..342fee903131 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -424,7 +424,6 @@ def _prepare_for_export(self, **kwargs): self._input_types = { "text": NeuralType(('B', 'T'), TokenIndex()), "lens": NeuralType(('B')), - # "batch_lengths": NeuralType(('B'), LengthsType(), optional=True), "speaker_id": NeuralType(('B'), Index()), "speaker_id_text": NeuralType(('B'), Index()), "speaker_id_attributes": NeuralType(('B'), Index()), @@ -471,7 +470,7 @@ def input_example(self, max_batch=1, max_dim=400): len_i = random.randint(3, max_dim) lens.append(len_i) inp[i, len_i:] = pad_id - lens = torch.tensor(lens, device=par.device, dtype=torch.int64) + lens = torch.tensor(lens, device=par.device, dtype=torch.int32) inputs = { 'text': inp, @@ -489,17 +488,18 @@ def input_example(self, max_batch=1, max_dim=400): def forward_for_export( self, text, lens, speaker_id, speaker_id_text, speaker_id_attributes, pitch, pace, volume, ): + lens = lens.to(dtype=torch.int64) (mel, n_frames, dur, _, _) = self.model.infer( speaker_id, text, speaker_id_text=speaker_id_text, speaker_id_attributes=speaker_id_attributes, - sigma=0.0, - sigma_txt=0.0, + sigma=0.7, + sigma_txt=0.7, sigma_f0=1.0, sigma_energy=1.0, - f0_mean=0.0, - f0_std=0.0, + f0_mean=145.0, + f0_std=30.0, in_lens=lens, pitch_shift=pitch, pace=pace, @@ -515,5 +515,5 @@ def forward_for_export( group_size=self.model.n_group_size, in_lens=lens, ) - volume_extended = volume_extended.squeeze(-1).float() + volume_extended = volume_extended.squeeze(2).float() return mel.float(), n_frames, dur.float(), volume_extended diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 317f41f08bad..1da49d26971d 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -82,19 +82,23 @@ def __init__(self, input_size, hidden_size, num_layers=1, lstm_norm_fn="spectral self.bilstm.flatten_parameters() - def lstm_sequence(self, context: Tensor, lens: Tensor) -> Tensor: - self.bilstm.flatten_parameters() - context, lens, unsort_ids = sort_tensor(context, lens) + def lstm_sorted(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, Tensor]] = None) -> Tensor: seq = nn.utils.rnn.pack_padded_sequence(context, lens.long().cpu(), batch_first=True, enforce_sorted=True) - ret, _ = self.bilstm(seq) - return nn.utils.rnn.pad_packed_sequence(ret, batch_first=True)[0][unsort_ids] + ret, _ = self.bilstm(seq, hx) + return nn.utils.rnn.pad_packed_sequence(ret, batch_first=True)[0] + + def lstm(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, Tensor]] = None) -> Tensor: + context, lens, unsort_ids = sort_tensor(context, lens) + ret = self.lstm_sorted(context, lens, hx=hx) + return ret[unsort_ids] - def lstm_tensor(self, context: Tensor) -> Tensor: + def lstm_torchscript(self, context: Tensor, lens: Tensor) -> Tensor: dtype = context.dtype - # this is only needed for Torchscript to run in Triton + # autocast guard is only needed for Torchscript to run in Triton # (https://github.com/pytorch/pytorch/issues/89241) with torch.cuda.amp.autocast(enabled=False): # Calculate sizes and prepare views to our zero buffer to pass as hx + # borisf : this hx WAR is only needed until https://github.com/pytorch/pytorch/issues/91526 gets merged context = context.to(dtype=torch.float32) max_batch_size = context.shape[0] common_shape = (self.bilstm.num_layers * 2, max_batch_size) @@ -102,14 +106,14 @@ def lstm_tensor(self, context: Tensor) -> Tensor: context.new_zeros(*common_shape, self.real_hidden_size), context.new_zeros(*common_shape, self.bilstm.hidden_size), ) - ret, _ = self.bilstm(context, hx=hx) + ret = self.lstm(context, lens, hx=hx) return ret.to(dtype=dtype) - def forward(self, context: Tensor, lens: Optional[Tensor] = None) -> Tensor: - if lens is None: - return self.lstm_tensor(context) - else: - return self.lstm_sequence(context, lens) + def forward(self, context: Tensor, lens: Tensor) -> Tensor: + self.bilstm.flatten_parameters() + if torch.jit.is_tracing() and not torch.onnx.is_in_onnx_export(): + return self.lstm_torchscript(context, lens) + return self.lstm(context, lens) class ConvLSTMLinear(nn.Module): @@ -163,11 +167,7 @@ def forward(self, context: Tensor, lens: Tensor) -> Tensor: for conv in self.convolutions: context = self.dropout(F.relu(conv(context, mask))) # Apply Bidirectional LSTM - # borisf : WAR for https://github.com/pytorch/pytorch/pull/91526 - if torch.jit.is_scripting() or torch.jit.is_tracing(): - context = self.bilstm((context * mask).transpose(1, 2)) - else: - context = self.bilstm(context.transpose(1, 2), lens=lens) + context = self.bilstm(context.transpose(1, 2), lens=lens) if self.dense is not None: context = self.dense(context).permute(0, 2, 1) return context diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index f6fa10a56ea3..862931638a0d 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -342,12 +342,6 @@ def preprocess_context(self, context, speaker_vecs, out_lens, f0, energy_avg, as context_w_spkvec = torch.cat((context_w_spkvec, energy_avg), 1) unfolded_out_lens = out_lens // self.n_group_size - # borisf : WAR for https://github.com/pytorch/pytorch/pull/91526 - if torch.jit.is_scripting() or torch.jit.is_tracing(): - mask = get_mask_from_lengths(unfolded_out_lens).unsqueeze(1) - context_w_spkvec = context_w_spkvec * mask - unfolded_out_lens = None - context_lstm_padded_output = self.context_lstm(context_w_spkvec.transpose(1, 2), unfolded_out_lens) context_w_spkvec = context_lstm_padded_output.transpose(1, 2) @@ -606,11 +600,8 @@ def infer( ): batch_size = text.shape[0] - n_tokens = text.shape[1] if in_lens is None: - in_lens = text.new_ones((batch_size,), dtype=torch.int64) * n_tokens - else: - in_lens = in_lens.to(dtype=torch.int64) + in_lens = text.new_ones((batch_size,), dtype=torch.int64) * text.shape[1] spk_vec = self.encode_speaker(speaker_id) if speaker_id_text is None: @@ -627,14 +618,16 @@ def infer( dur = pad_dur(dur, txt_enc) dur = dur[:, 0] dur = dur.clamp(0, token_duration_max) - # text encoded removes padding tokens so shape of text_enc is changed - # need to adjust pace, pitch_shift to account for this - txt_len_pad_removed = torch.max(in_lens) + + txt_len_pad_removed = txt_enc.shape[2] if pace is None: - pace = 1.0 + pace = txt_enc.new_ones((batch_size, txt_len_pad_removed)) else: pace = pace[:, :txt_len_pad_removed] + if pitch_shift is not None: + pitch_shift = pitch_shift[:, :txt_len_pad_removed].unsqueeze(-1) + txt_enc_time_expanded, out_lens = regulate_len( dur, txt_enc.transpose(1, 2), @@ -682,7 +675,6 @@ def infer( # FIXME: use replication pad (energy_avg, f0) = pad_energy_avg_and_f0(energy_avg, f0, max_out_len) - pitch_shift_spec_len = 0 if pitch_shift is not None: pitch_shift_spec_len, _ = regulate_len( dur, @@ -692,15 +684,10 @@ def infer( group_size=self.n_group_size, in_lens=in_lens, ) - pitch_shift_spec_len = pitch_shift_spec_len.squeeze(-1) + f0_bias = pitch_shift_spec_len.squeeze(-1) + f0_bias context_w_spkvec = self.preprocess_context( - txt_enc_time_expanded, - spk_vec, - out_lens, - (f0 + f0_bias + pitch_shift_spec_len) * voiced_mask, - energy_avg, - assume_padded=True, + txt_enc_time_expanded, spk_vec, out_lens, (f0 + f0_bias) * voiced_mask, energy_avg, assume_padded=True, ) residual = txt_enc.new_zeros(batch_size, 80 * self.n_group_size, torch.max(n_groups)) @@ -709,7 +696,9 @@ def infer( # map from z sample to data num_steps_to_exit = len(self.exit_steps) - remaining_residual, mel = torch.tensor_split(residual, [num_steps_to_exit * self.n_early_size,], dim=1) + split = num_steps_to_exit * self.n_early_size + mel = residual[:, split:] + residual = residual[:, :split] for i, flow_step in enumerate(reversed(self.flows)): curr_step = self.n_flows - i - 1 @@ -717,9 +706,9 @@ def infer( if num_steps_to_exit > 0 and curr_step == self.exit_steps[num_steps_to_exit - 1]: # concatenate the next chunk of z num_steps_to_exit = num_steps_to_exit - 1 - remaining_residual, residual_to_add = torch.tensor_split( - remaining_residual, [num_steps_to_exit * self.n_early_size,], dim=1 - ) + split = num_steps_to_exit * self.n_early_size + residual_to_add = residual[:, split:] + residual = residual[:, :split] mel = torch.cat((residual_to_add, mel), 1) if self.n_group_size > 1: From 41b96791c0319728ca24769f4c36410573a7d563 Mon Sep 17 00:00:00 2001 From: Jocelyn Date: Tue, 31 Jan 2023 14:37:08 -0800 Subject: [PATCH 19/73] Remove MCD_DTW tarball (#5889) Signed-off-by: Jocelyn Huang Signed-off-by: Jason --- .../tts/audio_samples/MCD_DTW_examples.tar | Bin 6901760 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tutorials/tts/audio_samples/MCD_DTW_examples.tar diff --git a/tutorials/tts/audio_samples/MCD_DTW_examples.tar b/tutorials/tts/audio_samples/MCD_DTW_examples.tar deleted file mode 100644 index 2d4dfc5fbc99225b179a7eb101145fa0f7894b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6901760 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

3`Vn#W)jg6$@<_JSquEMK{RHBcw8 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ƅF&C=B=rs{zF#5!ECGTk!l(iSU5 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 z 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℘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


dc)b?S0`c=8o_(2(_e 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

v6{CM8F>*4*;ciN((p^nzY5l8^iGaR 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%0ArrFfQlO*Q~a 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

4a~6g^MGdc|OEo}iyY;aQs|#eoc7NquuY`5x=l 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

E!0jP^Vb!5iL+pXi{l0sBQ+<(Gh&cAA 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

sF@zchQ( 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 $?x6ZdV;5g>BH<~o`NaxE&Yr7 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

-F6UibbCv>V8+sKyPsd-MTzb$H; zoXki|Tprb1CgDz|a(pAL+PbCH*0LL=Xt||KQJz#eSJgn1qxI;X8acK;j>~qQt;TZH zT3~Bzf9+`Fp$9q#$I?o%8G_uf!7+CdyQTMPAkT6%$jo4*O-x)IohZA`$)w%zwX%-V z=Bu0)^0EOXaV3(n?8>_;S>00Ob6bh4z4wrB5O}5A09*PA(1z-HuDa?uyE<37273s551%C+E?mU*Vt;6JgPgzw z*Lv%5<0}10U704WrbIPNHD9&1`fHU;)uuK{J4ip@m~Vb&AMf_~evw^})l3O5PFN}_ z4!apy8WSEbNH~^&D-Xs|qdSK`mF^ZiVpAFQLsxuP?7d7IbR`<3_LF*`I<01K?JrF$ zU5?RZiFHJ|R=RP|18)czEsK0p{C+Uvl|NmBs{YwekomVsl=gO+^#a&3aft;((TS6!)k zSJk>|UDXGbsn)F38-AK|ZM~giJT^ZPI!JHETE`n9%8)G%ZyB8opPZB^POMOt#O{h5 zEnh6mXTM;8pDR${w3+MlbnRNr$68CRPt#L-Lbud#))cffupe=RyZo+7_Y8NrtH6c2 z=Xs`kyZCPUSK|hv1Jo)afqL{1X+cM^IPO&88d*#jD?B;+PTYiqZpjal?xsvhWhWyE z*Q1vzrb{~WTQD0VZ^<&xd26*kQ}d>#jrws_*Q(U2f~w2ay{mUtpHVN@^wI4wj<(>o zLg!vjLckmI8qH_=}dPsC%mm(V(DC$g`vmGhou zs4+`V)veZ=w5xQz^|6NL#x17T=A)LG)}FTc_EwJVj@yo2&O@$;p0@shxSa$ZJ+(1? zBtr`%hWT_8lEg@1t>mAU43ozxUPP{qO-yhm;YpoSuE9F;NJ4IOk$jD)f}=obwAG~9 zd)Gd~xU-J0Iat$FHN1LB)yt|8)nw)5%8yk6)gH||eSx{Yqmw7oZzG1&S~3NEhNP{W z2%jB&BeqZcr1+h24`S=ZT#js`C=(ZQ6_|^9pIqg~U3+bpO-uESwS}5wjk$J;rhi?e zuD`)<3^RW+*I54AT#k3H>+W1nsrQwC9kCbshWRuVy$E$<7OV-@nc=5hqb@~Ouyzan zlTj6IBj&_-lfRd25v zQ6;K=QgyPju(Dot-qG*=UQhYi%_)iyd`6 zbYtGLUcK*4pqN+@{1ECxt)?}m-=;68|Dt`MWRO4b4#5qKdHjL$E#aof$1#KB3llCS z^j4lzUQ_Ok>mI#Qt`~YZ7qAG%Z2Di?vCu!?S6jZJr8cQHQFW)XtU^+ytfp1RR?kpz zUZtI6lad5#LkR<7wJ?mq^o%S(f*V% zM8g2#{pNn)Ty8&Y?QgzisMbBx-qN1Y4K!36ADT{^W|$tDpV{i1%RTSC3w@XUmmtY? z5pWfmp?wrcn4_HrkNMZ20W=&<=#l)(@|96@qaVf$jq4JR$A6F88~023Rhgw+9z!VV zqz*wA*TH&(S&&D>8b_ACQ4PJiUgi9X-xbZPC#sWRSKUE9qNcBAwC<2;f$fp=y6cBa z=zWIg(YmoEq7z|FqyNOUQVxmV8ha*M6?rtGarg`Q0r4}g5ECFHD1Cxm@JR1%huXYR zU$1Uh?bKR}W~J_>vCwkdHpgbLG_+VO6}IILhEwg>@0{aW;WQ~R86a65#9m(crM9fWS zmOMBiHU53v-}oc(IdQw=b|`NroKt>^{Q}3(R?%D%!_%P$NsVnm?dggw6`!k5s^_W0 z)vr|<)q5%ymFdfpE1A`e)wea13@xnnooa7l$cQZ!T$i|{{iPcvhb4)!d_|L}gVFy* zkBpK>K2S80E)_62{V)mgnmpv|;!3h_0B+w$d$MzvJ<0r0_oQxL-RruGbun5@-`Qw3 zb+L4{J#ZX!NBR_j6U0|?8#uH|z&)FfsOj&K0ia>MNuMD+8+A6}ZNjSPhmozKBVv7V zC*l~&&xvOeWlBoSgvgzW1Q{-raURi2{ch8}T2@U*?Q?@#S6(|?^{=XV<%@D-nW~&y z)wG(fzNLvVbhUb&3I2bO-*<%-&3OWPw$;M_q|X%GsEbkOB59HPBKkxK6=Niq__gdk zSPH!@#ZFuZT=FgR{B=!n^6g*EiH1A66Z*A=3_}yWL1!~8Ff*)4ww89TGUdMb)CftWAtox}bW$Vbn)t;Dl?m$-{=`+p z?v9CyIv^j;TSxoMF+c_y%4sw;^BKzWH zzVV(;&N?e*GU%J?6ZA*)Ji}x|g<+e)r(bVaVx*YgS~S+5cB|{K*Bhu$?k2kiUqNqi zRY*l{430+>qFvDvB_8`nb|Xv_Hzlbuxm#RRG)uWY`D1eL1fg=MGDG<{3KzCVA*sui z;_T+U>&P)j)lRH>uS(O#)J?05_}8d#XK~ZAi1OtX4%K2qrp@Ab>z?ng3ObNJ=w&Rx z+{O_K7s{GMMnwywM@7yHKM+1#@j=!}e1qSc+mqdpIgwknN9npU^(3SeYFCGiF$7WX8bMmdX{%1u2G8gnzaFHLYN5XMcRDQE_#DR&lssAPWF zitvA7*JRnS=g5-n6R+bZb7yh)^AdQynB$Oh(4BryFubvj&bGO>W7aFCV*LXBa3jxj z+hEbpH{3VPvEnwHJr^pU-@Pq-V}Q@Q7t*dDdNYX^R3_|zpFlnJk?>K()fjg;5w=}X z7n_x0Qhte+$M}+Zraw%`RGi^c1W6(RXE8DqXrNh?L&Q4IW%~l_TT3rPSk2CgA7!?R zUDX5CHR>+4_q6W}pUfXDvn)2Nz%kb~(o^EQOvq?_*x@MI%Q+Xg5BW#=_qe^eE4j0H zJNdo%gLs`GHM}Rs&b&--O67zO0|QGL=;7_`S?8JSE%a=1XS=$(Ujfx=nroBuhP$8l zGq5(_xbMPKv%#I}bNIt4t5M+iqZ-CU=1M^ox017qKSQug_FA@7a#U8Mm=g6b;)pC< zyhGGn(o)oeGla#*ngQ#!E7aCd$o8?53w;BeHv4beMMy&lGp{riK}GGaCD(GvoM-k} zo?8}L&RFS=SMGPdLa1I+V6T&oj6jxyCVLj7kIz8+1JQOla~PA!oPAWeEHIgpGcw~$?c!pQ~I@DortUITynPH+*83F=5as8`*=^U%$?4C<86;CFva z%R*Gh93UeJ!2w@QJAmv4)>A$*kp7;&l-`Bjp1uv3ML{~kU@+D(mZA+Y18}mlux{vd zV2K__7SINRZqGvL1j$q}w06MA>P@52^gzuT2)*C!;BpoQn~}eOqnHCU&kSNVJ~Qyy zU*DhaJK!4!{GvF>e_sMAZ>e}o{3+gt*hU;7CKE>d1O5sq>wO_Fxjne8E`m>K5F`)h zlih*~;ANu^cpvnUKhG5_~^4&>D+Eje@($JjgBo9y|r^uCCyaS_tac5^7Ic zF6dyN(Apv8$P~I2l0jky6+(nR+tPJVEJ0uBez#G*Ch_5YxO*jzLURLnMr3Md@eaM3Z4ft8nKw!Iy zvx&n*4A~Dz)nCXfpp|Y;z99|~H;5c^1MpPmQ>c)LJrne^si(DA$< zx*TjDoC}$D9|$S1R%`L&cwb@JlxVNo9+3*MW@W-iYNE$jtn@(FmGeMHM2FC3N;7|l9>!_!w9AI{=26jgd@{T40 zs_$0nR_bBeBAOEUgWN@?(&>yCxWC63YZ%iRUl|)1kV(r(VcdXp^gHyYNCI64uA*(! zJJ40G4z?#xl3H>Zxi|P0*c3Uys7L^Y$3CEUXAnz?=Y*0lKn9YTNDLl_4DN(rS4h1c zMs~wj0!7z?LoNoKfdew127r^|Y;ZE!nz#-frwYjG`bkVDBZA@3vAY7?&{?1_KLCB_ z2GGqeA)`V4yAtT(v!Ey0id;`Lgw%>o{z4z!mk)KO-((^MRH>ouv^5M1P|ELNSD34~ zdj4R3C*E}a6H&f&ovgPcO=Jb%P_&T2x3YV%Td+?ssaQIFF*qxGQ0ycd|Lp1K{Ae$* zt+aKp^|g++zOWVB7dUo;pC-#S&9l>6=COE|d+YmAq8I3iFHj?)o>j~^g%apRteRQH zn$0FyO5@sQKnqEm;LH!v@gfokQ1fsqE4c_SVjooiix+_9bxUZeM!PZ-b!T9b63+5Lu5Uk*y$%3$9hjWQT5WPj&MxdYjk_Hx={*pH0ouZAR72wJHF4)S8;FhunG7r#~g;oV#ds}$QT`q^tnr(I(hZ-jsImTE+ zOG8s*j%lCyxaE!2VQ=Ej^S<@h$LHhUh!2oYzKoU%wBr>>J^FVf0~rGPhYI8>d#yks zu>r|GR#YuHBg5pek}lF)it!Om!Y|2J%GQMSiu@LlChsch!?}z-K)caD&{j}b#9yG3 zW_Uh1Pg&a;YxTc%jJkX3?p4PsMe5U2k7?atDc>{~Vo-&FMCuC+a zsK3zR+&bYa;Za_MV7@p{S}seG=12mvZDBF;JV|%4P2591Fzlzaz34Ef0i-i^rR@Mc z$OdAW@1m!xJHZv_cw-rA9$n4_m1c8u)tE12>qt@ zVpL=0>=j%iZ;vofERdaqiZ@Rtl|B$-;(x*!{0p2T%sq^i2&Df6WzYay=DzQA+0L4o z#z#7@HcpqPZKR{=ry4TM9c?Ea+g#Odt4Hh~gLi;@k%rV#*h8;p2+{lKG@w>~MSDOG z?jfx*v=Q9QO=$605s-^DEG?|!)S{5&q-2_Oxx7PIfB8r0Xvt$qo@}eUr@T~pR%qsQ zXSQavrN5!Q4N~xccdxsntJ0ol8D<`6I%0fon5K)Z)7KuWB{l1GyA8PUgn6X3pW~iq zVc-^Nr_2C)8I$#rJ(ug_2?RHV7EwEKNAW9>T6kVKRhTUp!P~~3k0}{E#6`If{DixF zTRjrjLHi=>Rr4>{H#9RJG#8pR=Ia)>b%lMVvx)n;r@il)zaefRqC;lNLU7J)fIN{W zkU*MCTSt8k^UkQ?NMbek>H^g7=xFu{_EFAM-YLNX@hJ&Unj_1RUy~1)ua?Egp2?=m zN62k5y=1)bDz_Ue9dj~rkoO@WvB!7E&2(z5XU#KA>y2Lxd-XrH-|FOb8FlBix%zI# zp{5ekCv$>rg)_rj5NI5nO5ILZp}(0z&Pd*6!9LLuafBpBa!l+L%@)Oo{tBtW27Du@ zKkEZJk$#{0Ggyc(^{sIKbZoFmtP;x&b2kg$dJcA~Ok1|i3>e`t&hxJ0?tISz-@w2m zVo2~IC{j1kGLbvLzZ{G_0fNyo(BgCpz9z&Z5kzTms0gwWZ?MjD&hp=jSdxE|PBOln zly#B)kR(fw<{!+)*oaJ~{2@x=x#{jS+QO{6%v()T<6`}5 z-7K9*A7M;_x?dll`v0`QbbfZX_k9dh5c1GSAf^vt?7$YXrg6IRX7PIqRtReN_4(_e zJ3W_sh~r_UFbPIJQVvSU(If@(0@iu*Tuq&bLtsB@D+U&OXNTRf$=Sv=!JX%Ed#imp z{_ckiWc!x4R3y~MEIc+<4boMp+dcC+7gZgY3^R`@Oj-VvLFpnL@uUt9V|#%FXh zmH_IJbX zzV{vmcY8DcPQTHAEHD(-JEMX6x|OUXE5L(sjP%2bcMoLB4u!qSOxzo|hC`lSZ~*KM z)>G5zOw7kx#J$hoB2r2h$qHq6Wrt)HvUjqx(r8IDk%5o$Rzs5VRn|)8cC?P(8PP-D zEg6g@U*VEKhA-rv;Ot^ISpYG6nPlNY)@EE_9yP*J#jkz0BFo%f%L!@xGFM8 zgxN&ENQV4!8siyui#?aOPrwpoiDM;8C9Nb~#o?kf;Q+x%eq){oc;?$#R8U#mqYp;n zVI5osu0&yQ4lwKo6Iy&3UJd+)&i+-tAKrNH5YIlh-*v-v+V$Gi(oOYHya~Q^KN_e8 za{e}A2JGg`z>#?#^o`rV6*vd(AGqz{ey#wI&;w8<4g~#pZ_xi8h1K|a@MgRQ4H^)~ zU>EltR_tw{KG2ppP6UX0kUx+@dcc)CfiMH@eHOkH-w&*XwRlII3(2l1{y&Kt)1)AmQpk-VKTHEu$RB?iiaSmt=$AQLw0XVD{gHG@m z*%`81nvsz4N%CNe%ZDeCN&beN+bY=2Jce{14={y?k(0<&$g4~xE<$Qq6wqa-!3b{* z3AMc;i}?<<5AudS2yM({L49czHvzIvuk-5*8VU^jOZ?;f4SWZ$4zdz++0$6PnF8zw z@ND-$veyUjWwZkF{mI}h@-}f0-wLbj*T6Q$y^p=Sy*s=&ye@A?-(g?4|BwF&kUC!B zEeRd*80hq2uzUQUUY!ecp9{cj=>!^I8zf$T1MOgbPzz683}~R=LLH_WCK9>CY#6gmA+w+lkmv^za&Tc^hdX-(?&oRz4W3No z5qro!Kz|m1zV|LIk-nXQqg$Ev*}pj5cscz3f(k*HkS@F@$QJD9zkzJgqnyEPHtQ1B z5#=&)pj>yQjikc0_U(4+@`~54G<;0HDf*c9jb^FwvqjTvxO_*_29MOp}c$C#@y4K zDz=>6h1H9hfc;`@rgwo1X&0#6OM@htP398!aTH$$MB)?vc7D=Vwva!J0w)ryx z69d-+Y}oG~!N1~6aAdzFSTG`2K_y2X><9kP3E(`;0b)%#jA{fb1_F2sO@s404jSCs zP%AqOisXL4gp7wTDfm4w!Mndp8B3T57GplB8%xAz`f7L3bF0X`mB$v ze(Y=PQuZJA4fY~7gT0vbj;X`EkZIzjS0le@U%+)q1GWE7$O21-q&7(Fg;}vx;D>(! zWVJo_&4PR~#E1E0zBayHkV-ZLDBfe>D&*lCi45SrM*ugn0@Se+fxlA*s^tu*WA*|~ za9414B!RZu0dBeDp!MGZPxm;`%_?C0zXx(q&!9Ny0@be{XhbQ&k-&5JLNd>CP%}RV z)pe0||$* z!1P%b=n-ff$OxnbvID&XIf2J;rXwKbpb!t?EntklCQxz^BnGQUCHS$o!Rp{9WV4mS z703gp`TsII^WZIRg}der`hk_22S0rQckwwq@3lczs3YjH-@?;55}1CUfeFNenL7@g z^ImZ9oB@(yPoQU2z}c>cs%RUi6IKUr!wBgNgh?JGmNbBI@)}$X*P!lm797TZ!4KOM zvU?xXH!%95^)MIqoH?K6VvS)Rf*r$L$e_Cn%G+G#Lre{+>~V}lx)2Fc>wslthmqEd zoI;$!ZBYHu0cF3FpW^@Ndkm!Z^S*mPZ>Ir|fJQs3C5H zRbN~1O4kKbfNr`NyjE+00J#)K`f0dBPhqw;gSxyO=-{`&T=fIoIz}K}z6HnT0#JfC z2JJW%6!7_>7yqwY-wGtADWKhN1H?}ScnjR%5=7v=*cRr5OW+o03s;6q-3ZBdn`m*! z2P78=BR?2x(Il)4JHTuVtfp-CYW6Y686N?WKZ{u(nL#WGOG8r`ayo+ep^o<}bOCaq z#zXyl0as@E4duKfpb37DoJX z826V!{qGDVf`ecaJg0Xlk3hqJ4l1ORK`oDgQ(->5CB6i&LalgKa4LMShCCY*R?Z*5 z`BeA6G!;lE@E{s`6+?@fu&>OEtZ|U0J{D4scS7=*fjyMHg>{vA1e<{>89$KCv?k!= z+6R3D7bM~y^e^`9@j3hS&FGG^l z3rJc`LyjW9q1OHj2r`+lR%X){K}B~6BscYj(YOJsV+L43je~b_3s`6LgzDQfk_WZ! zQgB{x0RKP|c+a*2(exsW(Cu(dW`nCF8k|zgz%TRz=7Hux4pjL4WD-Z|uu^Z?Jh7nmoBPp9h zVL*9Ez%TmS`wXDX{_LuBwsuxK?nC0B)OozTf_Md_CmhMS#m?HoPa( zk%w?qQMw9QjZlyww9Bv@>kQdIqR;{0i{(LWdyeQ%OUyK{!aTg4dnnXC6UW^i@zhXh?kXuky}!?{-$(x7fCV0%578i)EbU zrDchAl5MrU+%eKc@x1k}hrL~6vM#uYQb(;1$)f~)DdP;|9MqA$^jY+Gh!|2R?!xM< z6Xh(_=%2v7L4w!GF(ie&3E5b`@kzKDIvc+s2`SGv!Kd(*z*_B+_nh~G*XK?0Ed}4f zV86zHF>nZ<4ShCua3V0`Bj`L>A@*aR=3eC=7ETe11&`;ai@AU55RkKcn6ce#AfeVm=XiI2 zufqR5aDYe%UIUM*nfi)06{3bpRVjXCA#?r;~0%Q`xMG9!kX?)sdNMfA>K1@5T z3Ya907X`lf@A~d~&7M@xL3evM#a#kCs4uQ!m&e6+DpHpZA+j<$r^JAo0)> zS{maPs3GHEuQpBmPpXmEC@La?k-n&$Xl1k}sxs0Nem(4kbhl^(U&ZEO?UBc!Od`%d z*0a+&z`ob2H>*r3rg_G7Mw@Z7=_Q>$>TRvGXTlAKewh1-N>flYh;zeuiPfgQAlFQ5%|xeaCWtgH)k5Z>JeQksNMI}HPz14)#>sL zyG>T}INJ%w0aux)m0ylafbKtm!l7A_@6bQp2ED@wRvdc`yB_B(Cx=tcp>b0=m)IX! zgP85H-He7vBK2>O4jetXH^C)vR9bJCN1EChM;clgrWuwR6sD)OkIjDSwF-WZW&~gI)AvA_~zlKf^2F>Bok8J z7P9YipYpm2xT3qFnc`pKKH^C6M$uh?j(3lvVh%zxkj0@6M4G?MUFyJWG_%dHM!!UR zxUNZE7tP1I);f>wKhsC6!|}_V$KfWw5c6ZiuEsjjP&T`L(i5<=BcfmGPi#ZmaH7 z(@yh2M>Fm+-?sH~`aJf)9#ToUhxEjbvLEo~2~5KOBr&p6GP~@R^q-`oWUFuq?+m*V z{e*0#NQeZV$u+?qG>r{0<&92&JHOp#s8m4xRp||<0?V$G%(S_niQ+Zh4~oKqQHF{?aKkybUOI!wJzT~oV5A7|QRp*aS*-vlZ`nY4HG)66`sS-3*-Te4O< zNd8OSULKOJ5-$;^^E23UQ5M1vZNdw@+nsA{dULMfq4u}tWNmcq1oceS1a*U&@VaLP zmU*ZBz3&at94X<96fcU{7k4gUR2q_5uW?OwgY1mP^BWg5KAAZvtuCPzjE~9k58OHQ z)Q}=j-#gIp*pRF(sI5_*sm`gKTRyA&V%e$Ek!1_YH&o23`c~bbhN^pPoM~z9$n;Jp z4}Ehzka`DQ%s}q(K0G`8}&~>=^AXiXTD#@Q`4%~md`A^SGu9NdGW)dVgFhbZ7Zgf z>?=*HXi}Z8IcZ#Iu{bXJZ&G~BHGGlbC+-BjUHkGGeh9XGC^bPw{1LBC`;2 z1kVM&xuflomKVm``h4xw+S95#)wZfjm3JzaR5UL?T+ObN=^1vKH!P5X9uQrQ*q2n7 z*0(|P=DfDbj_*3wZ~L$nzs=AV-Lh7sT#Ye?ZIN!^B2>Hok#n9k*)m&~S>si8tZd+^qaj%~;bGTZL;nVW1!7BXV!pgoyhwJ>oMHhAR_d zN+KJCcaxd~IqU=U+7O+X>O1N_o# z+{Lrlmrqwps4=39c@4WZQMDP+S=*h_ljxMtW@GDvEqZ3PN-m8&BKaa5#5qcF`wlrz zTmM=w8aHZ&*NUndl`Sq66crZk{=@l6<~e>i^XC@4{CBN%TFn+qmS+-Cj$Gk(m18lM zSa`CR3I+nYouRY?GqH&uW>}{%VwyWLd&h&0mx^3;Sq{W-2bDOM4XU30@ zSR`SKl!CX6Ak6XGy@S1c7u(3xQPiJHHx%vt)9B~Qy!bD7KVA6p>3fUc^@`tDMd%6F z3i38$;q;TzBS*%~h@-}Qh<*~)CbB?r5A=|~`E?u}_JSdyAEXrkzciBA>eD;3Y~PHa z^iu`P7=P>K|M#owPrG7QC(CSDqZz&@}FhD>wYi)6DU8Sn`Ks#ed%h3LSa&_uXnhKveCar51V&y zF{=68rp(NB4U!u(>Mu#O#I%h_RaAxd5)09O6p6RWcF}xaonC(bU-Zu<-yVHcf4=jj zf1c+1#Dc=ouT>K?^GyZLh@gWJkF8^c3nq(LVYd~N<%MA#!ph_e!j8+fNWP0N2{y7_ z*be%l&;;U~cc*iR71vL%O|Sl39#=ZO=uV;Z?~%U+MP;=y#@)_i^!dmX?%}8d%E1km zHA>C8kR8`DtYwE5{j(QkY8uC9d+RkzyczQ;d`nng*$mcA%Jl%nw#wMCHlln&$;E<( zKWKTM@`iuQ`l0;UEWe<5W2IRY)OIx=bj61dIvah>xzFz|ZWe~itHLIRw@}QNM}-y0 zMo2yhXL1H$X^g|vNyJg_HODrq$5d9wuJKl$DZ5ruR&=>|L6NO|haue5&tHeIsfUEM zk*tLJ4cgQ{oiQ%EeY5|X-D&w-Axx|>S5*hdsF`*EtvzkCH%LN19CwaFFZHg zB)=~k2_t*6pf9@*{Rs`BsBnef9(JByS|g zq&o3x(Q}@Jhp{fvE0ANM0pu%xq&vpxvlg3bbyI6(m0QbJm%l38SCwh+VgG>humQoH zyeEps(YDm=l=g{b=?^me_3Agw%m}6(Y~;%Pl6qP>I&!^?A?q#{qi4t}XJ^Az-4ONt zN>){uQlu!qsPW%r{}`p5k{{(wRQ}qac9Nl|rM0V^e2?^CJjDJo3%IR>3ejz0jsO&h z++0pO)?oG>rVHJ}umO8*Gtu6c=IUw_n+NKysaBU&6kn>?QJ!iZ3mxcUrWW~#s>8-d z@)O1;*H=DGoKer2X3V%(e^dIx#>=vYWJ*#}Vu-L6;&PFMIgmW;L5)&vre>kKQ2n>M zxO80cgQ6`3uM0mF)cw&HZ>Y$tT3=J3-DTe6n?jAHyU{%KB=(9ukvpGvg*StDozs`w zl{18wA$ZK6&)>#Q#&T#@@}r*ztlBWsWbHZit_nd-hC0(VAF4St-f?P>t`}&9=~0`b zw?s6LS(wkfpS*UsJAGS)oJv`JfE^{{wH!P4LR z|276E)MQn>=Cbj)>4{~Ub%TAQ^D?APUvM4p#CbLc9#Bp&61Wb|Q{YO|nX8!7pdWk& zb}55{)li=f`u}-ndW)RBoD5e#*ALn%^b89K?yv{54qyeq#_UI_42*C;0Cfy%exbVsO);!wcUeZ|?5gORhP8QG zj$sO@h!2}+mMOMm$3kawNL*a+A5NSOzN2+xET)gAjfUKhjkI&f1gMA9r~Z#u-#-YI zF5i3Sdq;O?OXobg3F8YoNKP~Ua9?vh((LG7QU9VF$NWj`lLSqf)bS~fG=XwWbd)TM zH-lM(W`WDzjrK+os0=>}*FDob(MYN5QYA0zRo1;~wtBxdQukHYPuss%rWvnUr2V4r zXjo%z=UC)f=br_f#$!MwOoYyfiCh(&6FN*gML&vKvHOtddXHL6{w2P8%e`gZ=MY*w znZHZ%pQIA%TH_d#1>3|s6)6#`qnzc$z6BWs=l8a+{DF*PfIK|8nEGLW3F5>)S z-k>KDHyja`Y<-pXZ{07Axh_GsN>>eTqZE$lp^4WLWwETtU!b+95PuO(7JTBWIWO5?I2EjG%+1&p`cld*|2@Z3GvCll zzd_&Kc+dRZver^&IHF~0x@wHtY|~f!5pRfi2K<|!z!M!!y+^x-Y@pv{EJMXmrCthk z%Sc8Oq(1de=zee(@IlIIuxY=9rU*L;xmbn!A6v` z)OyHuZAL|K_|5dA%*(cMRI)b0{Fn@ zLgx5XM96r77Gf+`ANF;&gN?J*;8HbmT5-p6leniiX`D6e2zDfU7JD+(c7L$uus#D- zp$QvdA7_nXyV8vCbZ{ zezNoj<$sa+w>i>s!BTF?1{Qa$W0CWjGuk!XHPg-TO!N-%Ie`yx2QnB3fDX_Q+Cd!w zgu)K=cd)}h1H1bdP-(7Vy9kALzyRN53+LFz(Z%A^W=#)NpdC9Vn$idN7gfOQhi40!~mKwDMeY zJp`h=!_m)CZEs`e0&#t>-D~&RTRToWG>)ClO|HJ~EDs4x`J28^{;I%dpp{=BEsz1` zq~ud4(>5V<=_sQFYU5AQt5_`a6*G*r8S2Fhc0BtL>nU*l+ER28 zdWA6Q4LkzfOHR1KV*<50UV z00!SwDisnTcGHg2&eML`A7<$CU_c8zf#b{Dv}dQ_fi-bUaJrTfoA4}C+R7f#@-LEEVXa%?8h zkQzg$d@S@+BB5{Q1NPC55EB%RJA$i#E~5-Op~r|q7x7qdIP_ywQ27qfYQPZ{%HCV?7%KTw$b@Qw1V^tJc>^)-ZE%T4I5ObJl&nRrLYt))P> z^C4)KvmvEAiFg1S^DyW!=LZ@?FK#$-iD*d@WO#5(@D}u29s@J*An=9;0mtqT@QNP- zlm8gx1YU!UvI&b}^<+O_?*!&bL)K*A#5}}uu>M#okYXw!{aFZCJ_7p>wJ;vTJHkUt z1U|Ef3MoRNIl=kleW(ae0o4aTu-2dD|Lqg_`}>)JpMm+1()tkk%Zd2@fGqIF-`OAM zPxBjneLySI3HoCzpa(4_Mu2YqGIZld5rcq3-Imx-AkfKX2hRqZ0|~F*|8aB;;BjSb z_-Z`y#CGb`wr$&Xo7y(Ewr$&XQ>9H~PLj!3m;c-U*=P6J?Y5IU=brPO4=>=6dXgGN zXVWK{HnMuMd|8tGhJ2Iaogz`$5SXMP%8p78X%4d%$3Imwk;4R-6FOiTHb$%^ZUt^Xm7}?f><0EEypUJHHzS1gV0COEJnxUY zZ@QPcFSz%+Ct`-{%Wh_$v2)mNYymu!XTn!wCA!-canITLd^mRWhw|BbvLC&H$-_lY zz)$?1@~SdP`4+y}dig`#M{N+v+RJO;Z@X-_>?t#!o`2rikQkY6s=0@|Ug-V!))g^~fO8Pww&Jc5oxrCUJ&9ICo?y)Q|K&vvx zfg;>QZKI;$V7wWq?07OAGnuQ%Eq@Eed|&<(X1AU|kT(#@z#?l5bOQ8ap}f0_>;hc( zS86srm7YLTa9qBF8EYpv<{btGC4+QB-+Lln;O}tT;9 z;#+8n-$K-BjL0z+XPyFrzAdJSH!+LRid}_AI7O#{jJYqgM0EIzPrDCQyPpIN^iT;r zxvRi2Aqx{BKSs;Av9?d?xAYTwH@vv7;`2X{A*2d=ge?(6TLJ+R1SR&V+SsBcsbW=a$3 z>cDIiftM3YrIWs7HvDdeh-(D+$OGG7hu_3s6D|^qm;x$@-)M81JRAe0F)~p;l8F!l z-FJX8ZzFsq^Y95ea-=BZHwqt#{&XkVOD2^(5AESsZ2sEpOctgWZel3xuh&mb@z{=(H}p_n7KfP>}(#L#H)Xu6BHp>TQ_3e-N( zd^=Cjz*PzDEnu?uQ05#AM z{G?-qi)e}`x=iZHBzRdTQW3zWZiF{x1+oTCcr)mC)A0QE0;29RX7q!g=XQX&0j0No z__sDtM?8;xsf8k|89(C&P+JMmp4$u!x?xbd&Hi!F`nk#+V(vnAJc#{3V{@%`^r|WDN0=a1wIh63#;D(G5MrdQh`=BVta* zI??1vM4!H-AL#-!ry>|9Q^48Mk(tDm|Lff8;HS46Pr)No@c@Sms*{+Y@5N1j2y@y| z;Q!W`x78N!tU0tlrxRPCpZE%=x+VN;Zy?(VrG`+eksD2-8XyN+2`pj` zqRf6`8*-;DhzND@?YBcs_6(3qwZ$Ho6R#HAKpFiI&{DI7QJ6P(!kqb{kS}-v-LwJ@ zqf_vFD(nRv^!~I!pmoJhjsOOzBPQ!-po7Z*JJJ*=&(>s5vN>+Y2grE*fDY2(nI~fP z{^=-QfNG!&Z@CGa8iKKgZYbuiBMZrfR8J}yZuNJ_dHAy|u^m{Oq0nvrCRWFKzC;EU zf>XFuYyec+6JY_6b#-x9^~Fip4wh56I2XMTBQl;Q_?lZpw~GLxts>NlHt&iJckv#2%XPYKy>i`4fVteIJX>P*W5>lwA~Rq``|W6L7bfcMphzrs1n+D)unh;i6cc9 za8wn}}j4McB>fary`2&HUqTzQWm<2(8&} zI3)vsZS0S;0q#6-OsjAwT>w_B2j2Y$oSBATul2<9U&Z^afZe4;eB6(SvH(t-PY@|u zfWfsGyYB)JUa@$(8gMzz!5Q6$pM4$fx@Qp^|2@MS;7WGkB>mG~Edc)JpR=C{x{uAU zdadDOsfHHhKTp#<{G4XU9eW`w&chQOfXa0$R1FQl6gB==BZ$Xv3qgq*XsgXY>-E9; z9f6p772oMAPRu*}zTH4+o<&6%gY`QK)ExX zvLpY0K3ROqP~09~@G=;QUO*~P!JiOi7GbS><5$*V2ff3S1t8x4JExWLek&lm8Hp9V zj3*U{Kr)(4L^QQv2d;*q#mG)XwHZ?~~u=YTPJ4R0e6 zPtpPFQVF|RkM%r_)!&a#-GIHk2nZ^;93ehz#SOth`1Z* zr*1ONofmZ72}Fx}*bhP23rB&$8iHG6KUS5)9mD{Kb_pvw73jkSIA2|{?n?YU0_UJB z-pLib=fPOHf1Z!w`0Jl%q6U9Sh^qI&lw1l$=XXGBcf{%p$6GaG&n&~rU4(LK1+4ra zywPUJaYg{kd;p&}9~h$w$R_@+(losHvxrEopuIW^xDFSvHt|r8y?|H|161L^c$fq9 zBmCmA(@XHQRe%8Ljr}+txT=3qvKFFkC+zY8Sn(Jr?morNIROmjReZ)7WRK_ZjNh>P z2z*Ztt7OB!c_UBgiwLmXsv@4WH=;pToSgRfbq985XNiK(iWWW( zn-PuvIcT25`&*0^+k@_lyqu5oG@fqWANB2UUsf07r8A!XM*pnB5sNW1!W-98EZuqX#5Yc+! zEiHy(_%oc07lyQhrru4BG09u z!%JXqli1@up(Z^9e=ZQu`cHw`j_*ZdjeU@r|BG-#fR2N^I&iXyi0Ym3x%J=<)gJtV zT|ms8hw}PoJi$DyURUf38aKgBM3Yg7d_NEi66A526$}9W6e6 zg5(rWBJaA56B0#4ks)*%GL~~h98OYYsR3|vr9k|Cg7Wt>sXqMNlM#oGLHoQl*eD-` zP~=xn5%u2ThQ5Kitux+D1*~QqGVw{G9_qe}2yghKT!0fsNBG*zMd#F7)RSk& zo2hHqopN|JtbktncAS;%WOb~45IjZ7;kqzJIta{bvDgT^_WzLB6s`_=LR)D& z?u@ZwHzJ#o69cKCR9#e~BSfr#t9>c+hifm?g*@QF!fFBFHGg@2}j@u zGfTWC9YBp!jkbY3?#ry8YXFOV5Z~uL*$O^GcZpBv&2%C^LuFh4w-pyzyWnjOs>jrzcYy zY6tZ2(}1!JgKt`Gob77FVQ`Py(h2BOd*BY#i;Gaz*Az1l32Fo3{E;|DzLCzN#$m-* z;576Hg4l~rli!eSr!O%}WPRlddJ5|O=csq9@ORzoxwmj~aN~|Yg3Kw1pu}X<*2{(E zf(W4}@kg3e{#kU&+2ZmzdC|p6hl11cAYAC&h zyd(GuJJ}1)TFxPkny%l_z^+``e;+6M&Pq#@srsh?i#Ky zZY`I{e&WO62r9wLs4~%yTn_E`V&RDx0uGW7CIfrr)s=4)ujRktvv3ODSd3VOpTh4W zK9DV_z2tY)bUHFly3BuuQ{51-BW9zM=0J?;Bgzobj)_P44E~+iMQQ;5o)5xNq9S#R z2&Q(D7pO~=7rbJ6!%z1bJf+&={+$O6jHc3gYAyYUK1Yp5R^Jq=NVB9J$lfpGJ{nGr zfa60d^w*z3xwgJv4Vg|>hL=?ZIOVoM>?wtp%z848xQl8K zGNj}uqQ0n*^x|3MU0RVv#WYBqhE7B&95s@qt6~_rj+hKK{tO`%=kFKWmail=l}@8e ztd~3(I|apbvM(a$7dR1Ei1TzRnMrO!?7xh@b!%`6_DgHY)wqNA(t70I&%`8Qjrfwd z44%th{FJJ=!>)_R;2Kp5u2?2;%8h{K9V85eOA(FT0xuX;j}e$LB#}eNRj9SQBQmrn z!*G5VBZ@XdG$X+@-Uq$;Yly{xP}9hs8__p_2tlmQ!TGoH!TewL zDY#1E;yNh2FCh=nOX*F}LY{&CmJHExF*GwqQg&tnIy+CPy3~KvD0Eo<6D6FH(^4}q zMScu0BszjHn1@7BX}UjxZ2lbvA>(@E41IMCDs@_n252QCObaDUw)?&GHZBECW{bwW5M z+~zY8QwDcb%umC{LiTeuB)$ z6!{ue3YMi6pK(-jf`!yr_|8Y7@3R&8=Pa-lYNAqv%KrbEwi~ckqwskNWHl)HOq6zs z8_|V1PCzjSov43x`Y7Z>amax0!S%oc`#BaFVFGHW10;dnSReWRUFjC)6C+T;is%H$ zz?S;wZ}I@$ARjm?rHQMc^nYC}f`e8N)HhC{ud|t&NE@IVGZ?$m0gV#5bW1oYWQob} zd08ng5uD<4c*ofh8C#1fh`4u=1%|>s%b#io9~roRQ&p*F$e61Tv*=%RJQYAqK}7jN z#S^xTfF;2*PaV~b78Xb72ltfk~ zJ5e5FS7crt;pDJf8V!!c5_re;!e>rJt)EAj;j?fI`M@Qy7rL=QV3$@QEo4Ko6wW7| zaQB{&#=r^iFsdOA{jK}xb?m@<>kP*FYd-OojXZTS89_RcKP`j1 zN*=QOpU8;M;(05=Ib;-~$Qz;+*%&+a0qTLa=z04AM}HeNc5OuZ5X6ZCxHo=aSGmwd z98Xjxmy#ru0A`@GG==;LpP9?3u`Y>y_^QGvbRMgsH(5!tq7O$ryoYes3X^4lDQl%Voi`+)`8dQ zTv0@S?+SYOO{7z(ES91(@)?u8?&v+FBD3s0 zbKb!&oDVGeMtIrYAt$0vc#CSR6KO+-y;yV$CNT37u@76I8#o@B_7|MD6ugiA=(N`* zK7dUKRZvvr98N9VY;&d=b{rl zrK%xcuPUt(Q>5M4;g_)UrxFdR#UzKS*FqeE@)SB@m>{-8U#>lPAkDEO7m|O$eLN{C z&~gF5O38=Q>ty7F@BSaa(^v{b+;Rh6nKw`>F+eqsAi}Y#?@o z{^&cbViSDR?}+zn#f{Knng-7+^lQ+!Z$x&dr;sJsZ=5&?-a)gFiL4hZpflM8Rs1Ky zj2X-{_!ljLfAuHQh@G+w(e^aC3}SKp(3ZwcRV!{f|(&R)q_%FKVs9I4$*%XHJyVa927YJ`^7F z7exnl{Bv+~uSpLO|KFq1yn^?&5WSSe=xEF&By=>_qAQ(%-ZW&4QL*1e-P@SlLySi) zQ=NKAU!ddYp;RGJhWW%qG6g#o9vt96Y0*#IN-n0BV0Kdkm8JmHBZsL#sHdfqJ19@E zn6l6n?=FoL`w6!=Z*DC6$^8n`)h=!W)CC%HJnMEdY=8GDuuo69v+>V`s8QO0%YGZV zNtDnWOqXj=Ch~&z!XoK5+=An!sp2Vg!^cB^p`EY^S>sn$C0s&Y@P>fiDdW~&(d7mg zM~;tK5Z|-Xq$-Uof2*)PE-Lb3&;ieV48=RFuMLw5Yh-Qy)8yB#G{3*YGL!NgMJ~fl zM;iZ~B2_ItXhR<+F{qE#P%Hhe6S`GXEQz zQ#IH#PNk!xeY0(;EfSm_ANNo$UKlEEp$0H<@`dvE@U5Op7HZ`Y?JM-G8DDc_b#tR5 zP5!GFS|d89by!O9Ak{X0x2Z}=b7TLq&IP~!YQIZA2mJn?Hule{v=><;%Rbs_Ne>jW zecFdVj$RQ}65P|Tz}J^;I>2F0ubCZdY`$uwL=`k~R8WWtC0&(2ZVXgrbU7 z<9zK(x7V^{TD+b4>;`cAXL7gsJotBc(G8*dvq=3|o1ihO&dEQ~7V4pp>=;nCw8-S9 ze3wP+PZ$?9HmYBposEpO6;-x|e~X?UXZ9K=x{c+=hx`^tzv9&2yFPvXcI#*C_u_A3 zzNKdv3_aXqD5KgEl$|&zIjY*4IPb_4;Z=j{`MqIe&g13>We-Z*l?*6ki#$qRfD5!x zKSlq(Y_GYKeTwzGNpH%wEo1HcPd=2NfxWp@OoHb;!9*wxs^jV`RcFO)#dO6SCYDHX zNk;#|4u3Z1wBx^dr$zRTy&E>DN~`8Wnl^7Rr1F6HD%B3g^6DJ7)pUuwNR73($glK6 z|JD9;&G)3w_dYEBGVX7B@pa=JM_<{GfR~A>)o)d~P+@z;hZQv9jX`JJD!MTKB#K9c07u|sFMTOB*WY-m& zl!1yVP$e73EP@tUk&x^bENx4>=J)#b{6~f{UUffoY|@3u>WMKe_O$8Uim3NBHoelF zO0RuK6SYjY%`>Q*0$X+<<8tbSA8~1UU-LiC{CG1}k=?m?TG>K2M7=%aZ{>T{YE}K4 zytV4<$ok1!$n%++a3Q^oe$r~8lJjf1ul{^~)ZfFu`WMwAYXzv| zQ({KM=<5w@-M7`i#zhs@CYDud9Xv!f$#K$@#&?k(m@nt=`)&HU?T_ZyjMSc~$5I=m z3kAFNV{FT)4_^7PiYhxRuc&6Oa=hA>>U$E$hK=)CujoK^V#ixHmwhNYUU)ArA}cw4 zZQ9iI)GSr*ue?14StWC#QH zC1qLZX~Lf#KWBY5d`bGU_~*9VJ9$kFE}oU&3M;P|UokN`GWkihiglkSFOL5e_QI>L z@&-B4ak_k7aqWT?d3Q6;{T}hl_t)~j0oj{!^!as)Y8$FMv&4?F{VI)SfHqd^tJ$G; zDcdMVD}Ke4hSouuFB~=;#Yn>9=S2si3QGQI^?>cGfP_n;xQ{KeP3hCc|u1af~SuLk`zP&KH zWWS{m7fHUCjZw^3o>Bc&d;=EchD@h8BfErKs0JKFgQZh^3hU#%XHF}9Q7Gk586yhd z!{DuqeV;_ekFKU@_@}{wIzN)8Mm3EuiWuz)-8cJE_bzf5*VPoA-~Z3J-=BUYecAqH z*4IJ5OA5A?3RY73r2G`rIKD@PK9y!x@J^avAq2?qO2J>fXKHep9pWv=BEv=f^TLif zT{9l0>3)4lub+J^??F-j(k6VQdr=yh_uEw7Vt?yQ$$^bt_jqC5!+2?B}DeUf-5}f1Yu_cx!np_bY0bW_s}a zsETnViJjx;#D9(#Bho@P2W;>P(T9K8H#$3!PMg2$m}Gxav(38%IVYypP!)(96SzI!OhqE>Sz(Cd03+PrrMn_IcmxLx+zu zf6U4~qu1Jer16ST{*|KKu}>0PCFl%3WQJj~I&O#GW+9!WS=D5Gy zZ!T?JdP#;ecR>kf)Y}MmC|?n-;;V=+@TIoXtz<1^f0;wFadM?%pZph{L%?sFzrd=U zyDagB%Eh~LmS;aS*HL5#3rPj>U*l`k=uzWtwekun;m=~HRfq^5>zA%rNo8psD39}B zOkJ|B|7`HJ&+9d>o4kARB_(@~zJ+C`G+0@r^Na2hpOC~P2FA9H$&6eS+97b0PoU-w zb_aj=K3tt1G}etEq55INFk_Q)IbvVrW7>6WHOWG z#q!RId5SlToKi^bpsw@Yt+bytzAGlO$K=*={89#nZLd%z?rcS__T6f>s!53r!>?8B zSTQlQzV3%SMIPdPNw$IAXz)sp{h9Eg?lZ%y+}Aa}rxof;pSb4AB0OG1v`9D`_c@_% z^yu&tVPpM0eCK-ASHF}W=3iJRnpzfLF6ffKJ7Z>6muyvb5ZrCX8SguSTwPfoHpDsI zEwOL;Z>X_u62q8EvMUOQa<)QLS``6PneSTdJQ+nprlQfb6w@d^9LzRcd=5$g0|&vVm6J#~ihQM^)EWcQTgR8!>J z=$*m~c9@&B)iK8xT`6uYMtc@VZK^alx=F=xwQW^>s(U7Eg$UjFD5tKUPbf2A9;F>i zY;&$JeDSlzkKgY*zuW$WNsZ6C8hFxkK_>=eEy1R-9Qj$-bDsC~#2MxGEHL>z&o?O&kdh#?^>5a6jSc*Hl(n z5vBN|n5`P2Xe(<@_eBr#54X*Bqa>nqDVL|79O4n@8+9#dZuLhMZ&f@UcQ8^&DvTm@ zC%rn#8>v95b=R~;7WdDboU!N2jSoM*t^LIoTWu+hB=Uv4mPfGv5U*m*OI2O@Ph~y% z1lb-{TlqrzlW@zr&m3N^(Z4J{TyUiDV;Pjut!ErZobC9lLIC&Km1sX;-{4-z4(A^8 z6Gb(3k4|R3$(qWa$paOFOfEkl&jPysj?~yCvlY0{QoTLb2hR&_8xb2Tj}47)o3JGA zLtN#kgy4$)1ALlz4N#|1e}#CvSwACd-uDAvoBzC>J~FRVZ!AxA>=c4!Yt+{@tu#@} z-m=@WTQWxBtNbM^q*IA=T(+aGWsdP0GzWT?Zz%t3tZi}Iik&+5IaiKDWlORiwKaD> zV*Q05n4i=k6Q~|wwiB{JOkHL#qmw<7PgZ2fvt=L1j=~gS5}Bmh>bo>>e(?KXE|3WR z6mm9nLHN?pQ$gzkwK}s;PtT)@227Z^(_u26D==gh|E-YGF0WGYz|y&e%XG*RuPEk z^Nt1VOQ8wzA2d$i&`#(Hv}4{gKY8}*z>tt@)New64qI2>Jx;jUNA;1|< z0A{tHcmuu34bV6~fGKHJ^#3-JF<{nNneR}G2!Y0OJ#r5^#BGEHyhXSxbVFZ!J}@+q zQj)M1&z%n)=N-tDreX4QoRC2|hhzevAo+o`VnP)wO-JveSg0)R07Bsh?ztvHH1EMT z!W`j@C`!N3nOjC*maUhMR?1YX6e)_;vdN5+VTq}jvGoyZLbcPMTLNXWtx!)m!`Fhh z#&T{g{|tDx=1>ApCR3o)a|g58QsxAG6P;WQ9SBvD`gC>N^ZTK=R1L__r>MLCvO}P> z)X2TdS%XdE4)XVimed2P5|a$?lsvi-wUc>5Cz7K`TAT|7yJD^{@NuZ|`1xEG+g(V+ zHx4DI(=qgPx+`k8r_2|o3;lsI0LeU-Op!*3Cd^!`01ws`nPvb#6q@LF1Un}C4sild zU^U32L@?C8hf~{`IN5UOrKHHT@;9lkH1hwc*T$7F9~aj z+Vm|b?02P);>2yG;wd+2BG02IxmWxJ4$~B{SW?kfn}OMp3RtURB8eJCw`WE{x&ETE zrP^B)t&M}O-hFL|_L=IjLN4orN^m4FMG?dw{7qxNl?{~PCvFYv=W6KaW{vW>CR z&IRrZ+;U-yxKJSZd2E4;ciwU|cPw#EbhUEFu_Wt6$ELPe0(GqUynyf6O)4Ng=tjUr zM^imCIp zgnSPxhf7PhzzIGtv`gf6qK=U4x^3%YDKl;}n#)I&6UHsZFQyoCp7C#a$MVKTou$;~ z>l)7;7LqZOYmEtZL!l=B1G?~0+$3%&cbe-6&jYNKG!9PLt>G>|8&i<3Kyxg|G-V=Y zA>F0l!hc{*WNQ-0Ia6rmo$zND@;v?b!bmENS!Oy3i_EdTBSZvtKg zSp1W8$9)=kEK%GbL%4SK1oI-p+|r=Z4yA3&ybPDi^rcy)`^y@Y|23Vk?s7D8&xSJL zRqhCseCk2zXF0DBe9$Fb4Rx|*=+G|)3S<>fx{IL1MFOQ>fii*76Gq;U?g{&#B&i0& z;|9)x4LF1>E`^JMYES@wR;UN0Kp)Lhum5~Ab>00B|MNcdKNRpba756~;N;*QL2m=b z`IUR+YbGnE(mTZ{wxz>u9%GzmxLGQcoYJ>0u2$5pu&6MvKPAJI^d$mNpV2>Tyd{)HFfuf zg6jvaguBKib1&SF*`C5&l2TRmjPps;Ez_;iIRbhFln34o^$!0O`8B#i)aLLe!A8Fv zSXVRhjYMN^Kir;#a#LBMzJ~rk{k)=*g0=Zaa>ZPxph|HaLy2XJD@d3EypbHU4-L>% z8ZrWL^(1+TSO{&UOFYLtMSOcE2;z2Ve+5I0bSXUB^-#&GAvA^h>P~Qba@oo3aCQ)M zM;GJd4M3rtu3GBd-EVfle*v>}{{F}PUieN3NDgWc`YN(})SIZ=5gx%4bZH)$iZ67G z_=271TxFSJ>S<_G@?4)@=wI+NKQFg-9+_XGpof00;g{u{D~aEaJ8K_i%_DGz29qDC zQe>~)NyoBu_(_cX=F|y3t{dvVBWP~0GvZJT5%Vl+dB|?x+nOp&8|fE1E$iRKHv;rRVq@PlHji=E@nb@sJ;KuOhLs{_5ZKTgh7$JNa_%UPMt zmDVde`)v#E5Kc#J4Nnc36};ZRp8xfruA#G{YQ}d;SQtAjY?1E`1wpiAwf1bw3-fE! zGw|Q$nO+!ehFzt1^wo-Y7p^Fv3ge2dms~ehaZKg@itR9O`T+-xj);tNfJMk>#wdR( zyC}`FG%`wB&3EAnxQF~&Ol$u6g2xCCS-o?*U9$GHwz9RhQ;v>~Lfcr|Ov@bePiJ%S zjH*)5>riEMUfkk{uHiF6GJQq=$-(Nd-*FL1Vj>xTE2Nt@DSyIubXJDW{Uy^3Q(cP{ z(dV_Ha>=8DBL&L~a`L|xtt{zP{=;_F{R{4(yAbKd2nw9f2W%q0TZ|%V%hbwvKHpv2xy3fy_RcoaUf_J-8tIzu+UnS3oojwQ;F>&@9OTV!X<_4s(EMmGNWM3v5d2C zw3eD%mv1fJQNZV|&K;3Audq?cXOr6%EFGmE$Tq|2hNk8NO*0R3dn0+D30GPbOBCOj z4^kw5&~@EW0j>lK!8&}!8NmQ*#Rj+z!)H6e7G<05s0SU+)ll*BaZR%qS|__!3)_{8 zbUA@rBkD$N3uzoO*gwT$?qP(l|w*`iT zmi?w}WtqjZ3v~sWd{=%(5mcMZQ(fN$HC4{kl)sQU!A$dK{xaTRQ_fNAH48NT)xTuD z$TWTwJgPTf%_8hC?R%Y9ou1Chj_uY*=2_;arsw7iYbX0p=W%zQ`=GmvGuyV@l_tc= zkNI5)Iu!1R&5x`T@hbG0Z=ug1zqL9NPF54*mn0-d{t0}qT|}N^kDH$x`j@{kTsMEU znoKQ>>e9i5eE!<})&-Wrr6vEB8!VK2oB;nd>H>7UPb#jdyj5?Ny;Sp+KUEtw*T4#% zrSy?~qkN=AT!QO??TGb`CC>WYnrNACPB8HXm%(i4Q?4@QnRT`?ju)E@n08mFj9;Qj`5E6ib(VCr|YWg65t=PJ*GVVM10kVi2bSvIb?}3=Pex)>{sz ztF`-C5CQhs6I}`>bs~oG!SASM- zf;zd@tD?_fpEq8fURyLC%1Bvz!pb*wkF@Ww+Rf+9hs=X9J1R4HLg{OP-mmys@qGQ@ z(&pu>O_cSQ{f2X&tD$?Q(1gCIP7g>6I~5(CbSge6?q>Afpi=*e{yP7rVKXAn#GHw1 z7SS>|%hN$dvscT%6;IWN6}L2OHup4LFn1|e={Fa4%KemGH}_Zm zUHV&JtGG?^%HkaT#&s z^6L@wDdK+A;CL=NA(ZwXruZV9wdqO{^#2vNFDW%uGPg08n7WlR#Z~h)*&njTg<0E34y-fV%8(EwWuyWr|AEtg05R1H=}oQgBV zmB!F9n$XdK9Rhj(xuMR;yy&?2!BL(eoqWGBXE_d@z7BW-T5XYnqK}Iy z>{I7Cdo9~5>uAdcvk%-HI+d4~?JsGrKUO@tco|%8&4%lyJj)r|1^WO;KX#6EMdt5) zGGIkmrMQ-Ht>UJ~%EO9+Uj!Kg28W%9Afn^rtPv|h1fQ$SIKGehjXtp?Odn|owu~|_ zw1k)zl<5$AJByA5>*+!idg}T12V%qMD352B^-&Y5_-vJ9W#@!ZFZFW zDUB#yY}{g_Ui=d{b;_a^kOMN@$K65m)J@0w{ z_45i?=RaB3+V{Svr>0P@qIwB5yTXvU+6<%^aP(zWB0foU4*pht|tH6+gi1 zpRcH-l&P8VAj}Dp-rn1;%7+h+SbDYMW=OUi!VTG<#Zx`L9pboBRP~H*BA| zFw$E#Og=#VRpy4Cvn21Kj`C!D5Bon1s2ng~*Uo#721+{QaA7Xn$Fm&GjBlz4Xt-V@R(^ibI8fD|YQ zS#>=_>qfqf?vZdgrcvaX;8HkudWdiB8|;j&wtbAdk87OMWUE?!tJp8^WyadSy3E13 zijpXc%54!7sj1J?u{4LTIO zM0d}xw||uXj?kP)Cgyy+E~ajT81&S$wQ>?M2#$E2U6=-%r__?f-#X<`-isM_LE&g$Oe z{^)+~p5Pwny6@O;`(mzdJXa2H$Yi?pZoOX=gXrR5Dx7tI?i9@b1tf7=0eG9g`838{EnJw=#-OXHUCFxgWWv@;|w; z?vKv9X0q&OQM25ASuL|Ya_1K9C@-)MclSVDwi{@+5MXjTpr?06k)`hBmFn}}$K^BF zYnx`iat_^7@)KS`OZyQ#1z)mN*#oYNj#{=y=0-+e!-lf6WvdJ;ppWv!eATks($kV{ zd226rFCr?c?s|s#R}Z-yY!9gtEct!WRn;x>pB^?hVs3QT*qRadL-PGLs6{4N_~Y8= ze&E{1O%+bF-QWNnUVd6%HUDdtIqPbUxuA|A#d_XVOMor|uvs0T9qTZh4rQF zhb_t0)wdfF*%0jexK4Q?%;71{*5LUNN_fgke*Ew`YL|Ali{E4WeVP67zXgA0m z;!jsMcP&?Cwz3e!op6ixCB~eR@WOt%|K+%Hzo1Xv(HiNx!g0_FXpQ>YDC&p`JL#zQ? zwe95-$?k9ki{XrHx{%2IamLxNmd`9{T=XdKe%`u*HN}4oYporfDePYUEANlqL1!@m zNb0t9SH%)l8|@#DaBT(6c4dStgzhR`! z@lQlBc&NYfI8{|GISwTpe``0n#PDry7RJuif1>|N(f+Yr-s!}*fN#dV7w7G2fvF(g|y+aI}_vZvTP z@aRb5e+sRot5gN~d*xt_TC+y=K(UKC3uew{@eh0r|H9p4C*J{>s#V;3h!iey`8r?N zZ`%@V-nL4%qsW&wK^x_b{X2B8`#Arw_sOcty4tDUeSKE@eDig9KlYCEz2qAncp^j> z)+Qo9v{g_&|8lQf?MGEL**hwdAjM&VA2-`&xA(HNG_Ec?qhD35(H|^nT;AJq$!>Ku zX1BA|xUWzJ>M7)jTIw`&R6bGpUNK3Y!K|jnp}R#&M@4`1T%Up)asqYSXzmev$$i{) z#(CLM*WuyNIz~Ej=)aB?{{S!5feDmdWp2>lsrz8NKL$%}g0u)vdIQWc9lF@dd73}Y z_Heg#O>+)+c7<-`P3Kl;f9Few-agE}&{l4JV0XFq5*rlrHI+R&dc4&}d-V4ZJtDp9 z_(cS|Li&dXL@W-o1$p|<@>%QIThm67NOvII&;g$!yyxn>yEs-`E|vE!i!MD|I^M9$ z_|x*ve%E;&?xN|gGw!GC0e-aTlq!Phew(Zbf5ocQRv?t)z<25k{?rO6j}L=`z-4@% zn^$lL-SO`KfU$4LzQ@h?&AG`j*go4<%XZWnU=6dsaYH{1`NDDyuX&;oH8-@=JzjZP zed`3oh7^T`MGOf45d6-6pzn9jLz;ESbk_leS%N7=oX~*!{wYkY5*Y6vKQUG6fD zwpeVOqowPpD*_IvuUHpX>EF8*_W^4iLHba~$lXMM3y}=6W^)< z!$S^*O%9(Nb`9_SkMDJ_RBaFC9eNuIvj^BPmMFm>y>{kA7@-u2{qbqLYe4rBxZOTBO{dvZxzrpLw0|t>8Z| zNEb3Zv_)v!AXUIQzfs=9Jr*n5!P#jrb(Bh^YD+V@zm6`JE+!~7n}3>Tm_y8+EWfM^ z?Y_=C&ONT#?tAVpI7|N&PBsgN#1h<3w}tkYK>g+JW9oAVU2#hK1RVn-d?tSSJ!0)*`Cz&RpFxMc zu2bbyJ6AeaJ9oG$vc0(j@DR=CbK#+MmCxhGaFd~^5`$TY1T>u|@XTAmU_Bwm2p;?^ zz7bRynux{xXU>OnxMu;=x&&SX{`Q)-vCcPq1pNjoV6;40K1N|ud1zW_$9tA|jqxS@ z?+5G+3JJRJ|IDw4PhGFY+Cj?S(6Fy6d&M*dGN3xAbuV*C50}TPM{9=40PnAci`j=uDG>s<8S!MyXOCrTD&<1<#?%-PLkl9~Z57}NjemV=B zPvAuT#@@=oIdYw6oO7HLooAhWp+KL*mau18Z|*+m2J7G?tA!HEIB+~q08c&)%p50i zk!(Tkhhu37cI^ytmyp1}eby;A`|3jw!GCF@juZg>16S5$QCuN~s|=9&Fno@9ruT3!(ksw2TDwj;NnRqKrqC%A@)yieW(hr*=p~$Iuek5HNp}boo(8*V zw-p^Zqoa%6&-&Fo(fq-3!*DH{^o&s;{JN#3z12KeLND-Ljdm;nK z1A8tWeAo=ZQ%ZzNhD!Pk#%GC;C$!|UogeLo9Mz%5*_qr;JtsGjJ?Q7M6Huu-#%yL< zD=w}uwo?|zP3!IQfP9m8M5Uh+TcEYy=G zfUDC7G50PwAP1oR;v?MzUtqsz=jw3df!43VzIKgvk74g~OL?PkmxzGMQfHvc<+KjU zb&Hsrbb*XgU)7ql8QK;e$)3d?6}64kmsCSk(-ms@NZB-5SLi<0ll7F{r+*Mz!MCC4+zI#)fG=j!m8?o-@m%!PkJW#K61 z{6BGD-4<0s3$C?T1wJQd#P0lds4(qEJnPA&uxli5YBpwNN~tmhjRS!ZzDje*3iLqc z6WFocXq6&V5h5E-Po-AM%ansvU*T>#8Pm?4ip@}po5sX3N%Rf6lu41@m(`Ouz)GvB z+R)0elJ|&>f;aB~|8FjMff-zDC}<658@h+Of3XVgjr$pU5A%e3qNnSHJB_R28tYi= zng~zOKU^Gg$)T!9NBWhff{BpO+XXq7aXgv(#Obb z*;KgIPn30*HC4pQ7RnNsdGIHfGy9nC^0z<*yrSyUE2-ARX#N7XMXJuVg%+6JwaYz3 zusQp2L9U<9HvD#LMSh_8+IC84&2M+c$H3Fx37FfM) z3*;Tt_NijZuNQ$Mt}lg?OAQx>VB!&j`pI^=%tQNnx7f_c&#_xo7d#qE$v z6m3`sIZVa^L3E9k%V#O0U0bC3-YdAvq9~g~G?wY1CQgbeidF7LLOL^@oi3b{=ZWte zIn*=yI=9{pn+bBf(4Tl9J4;1Nm1R4b_S85!Mb?*>%d_NrxJl|XaSX9g^O{vsyP-;K zCQYt^ibMQS%%O*KSE)rP zhn!2OW0b*BU;bL$#eb0HUEFV>6&L+7LFe;l0!bQAg7#xpZ< zZMazP;_kYOyW6t3yF1I`?(XigxVuA<(iZ9xPsS(TbHCHG_j2ypTQZryyz;!i zCnoSOF-HA{*-0(dZl`MyuQlP!bkLWZ`{Pv(#a&*`h3k5v5BHa1DHlbpfG^=H^wDR! zUMg-9p`HyyC6ORsv31;A}j5{XYqy}@n<%2~P83=5r|Dxuqf?RKy zC#H_{ezu=t2|P-C(jDS3KO3h+2p6j4i37|kB2M!kFIRV!g$bVwjRXDpe?Sm*O4t5J zC6Fh`uR$MiRxMFJ525Iw-{o7wg&LoUkNDH_m9id0Cn{h3CH2=<5VZUP9gU9r4^^qZ zmcple>6oTosq}b@)%(TaQntJ$KTSE+n=hI4OFV0Yc+E<#4l#(j%e@dcDR0tI%pm0= zKHoQs*d+C4hildLA4F?yn&US=OIw@m>%O6N2ZHG8n$OgAAE#ZbYRlv+dIfT*eX2^n z7xGNiE6FUIDFrLds(U_<{E>auL4uuWW~Sg-QXsq7>D z0P>wLA@EAGA+X-ZY1UGAXz;dW7B189r!R<{WV%?i#N1F(zvx6nIoYJL1lt4JDlRg< zDs4t|(e!n;Q7Fm8l1Zitfzr}r$};gQCy6=yXD%Bv%_V{F;yC{V{VaKgXR$QWbV@Am z_bcM5Z)6kpCNWHzNCcP;)LPA9??YvP816fwPv9#HYGrxuaiCCjnQ6~f)V3yWGsVJS z-9*7Hv{FpyODaJE9^$L28d$8Fe9dch(Od>hrtm~on50K-F5qob{exXOI zdP+5@2mA@rNR(ls&@0r}-*Vh1*BH=4B-?3cc-G67sJ3|et9DDHnbqVpI1|4TTFW9N zpE5_<7>)fV?7MI+s4b~7KLyCUvmLsa|KL%c!a>fkJT zfmnyyK^Un#)&n-c1b#i}2Jzx?Ot}B8|LSkzs21_aJKk;!GctDn45Q0mrs}5b>NsJ{ zQ=IkBpte)D!9IfrCzs|Mthpf{7f|}!Ne$F_0S~*J|4bH=CULLWSXPlum1Ss$I3fZ& zRO!riYJ%(sQ;$^3d7&qNgnB`AU^JSAa6Fwx-2{DuBj0gz10JKxw^|sgTt-N$Zl19a zw2bndkPXn*_d3}7mL<$9uU7R08mMUB8}g<0oZHDgglES~*Pm3bx;Suwf24S+Z0rqF z$aSLRa3tszn&b3nSxagzb()P-R94M&G?I7Gq;p!KXW+d&Sb8o?^vxWvhy%KN4x?tJ`gCzOb-d{< z_WOyTmCQ%~UEM38CEZK)Q+CofQIk$BcMnp0P}TNdp<2q$F!9=9vejOj(IM)%WWAZb zFV9yr@!Zk`Q=@!0^p(Uv*i^#;ewmc0_&_&Me-y8A392sq%YaMSZ55CIY z5q6W+_<>3rzn3x)EjfeYi*SgVqlkCkBEyaE*buMUc!Nmw%P_suM%ci2RNg~2HJzG9 z@u-da^c}>lbYDsirr1h8QQ_i7v#ZpCJ@`1 zF|u~*UTm<$D2t?3;z44a{JwOBpG$_xTZtox9)ZJLh&Dp_AP|Z%yjFgcSj){I-%xw` zF_cfXhUZo11E0h!`5jq|!b+uya})>FKcqgg+3I9@U8%c#zH%7Z3WUw)iYDL)@baI0 zQb0!@7e`74zAisQcAH;A_mrj6|M4{gyVwQvD!wK4-Oh-M<+t2-n7*2pbOldG^IHEo zUq3~hJcFyo)lwSywdym%6+fr%h-aKC|BG;lLzVlPezL=w*>oFm2w^501YGnUVyvPm z6gAUS>xh%mVkM=DRScF*P&1ww2Atss%-T$<1Y1k#bfPWO_Z`KHCb*~L@1ho z{n?j1O)i!G5{&!|v4WtdW7u@|KD~)9U~6)A&n9}F(8+((`-RV7_OjEt#%w;cn%{XJ zw_OSoO;GZUl}=%jrZss01gbKyfuG|0?oX@}o_{KcvOQEg#V_PGiJCjQGPPFyUOPjl)$0uZ85S8H7!z!z!LM|mwXgI;be&X3 zUpI`hxGOKLTpy&i)eL9fslS@trwB=qw})GuR1q5FaZ1 z!`BkqipTkQsUCSjEEYO|ys-~i%ACMLOzq#5rjT`H71*ERS=lo#m3t-T(mlD|d@xhO zjS%**GOmeuhu**>h*824dLNf3exoOHF5-~lqPnAUgQBypuJMz}ZRo5|Gsjsw1x+*u z1y8iPBF2T=gNGU?7#^AC8WySQP&;Mc$Yf$UKLLbgmT%0>@vO6}9aqYF+Aa2(#r;aW zjxOFdUYoBn7bCV7v3vQ(0iM`T-B-3(-l9&a_Uqy`b-*d!qv%FH0GU9L(#1jGbq?DFetT`0 z;hsKD#-T5JThhO9RE{aTf7XfY)EsyAaK3T4@6LL{4bl>kk^IS%%oA zhb#GEQ zdy~99vPtBH_(935;|E2H(S=F6lqIoef_Et5m2p%>e!BB{UiRF3{?@_?b{)4)-dNkh^u>JN)-7^xl&##5*q@0~%EIKG@y}xP zG2J7l*xnfblY7{y{_mdGrMC*B3TFJy&t9IpJa>LhL|((fv4!J`W|mwl-Q`N6Ycd)1 zE&3|=C*NMI4BFI;fEo;D7ugY<{GLQ_*$;6%z1lxs_Cwz{d`Rf*pdib$$lu9|#A*>` z;Y(tk#An3*7d|&)c*5G$it(L-bqa#o5!l3>wy*r%Df@Wlkj%8Kkw5dZ@_yF*dGY6i z9}(YMWDd@qQxffb>fY*`FRs&`vyF-nqn^evgpR;agak`X!|-<#BREaxG|E#>X@bt!CL1)Li?RGD&-V?aCr@W4^N) zk>AR`*UdbfIVGnacsfj> zYb#sn8)whUZ+O&lUK$oBGL`3uDd`JdD*A`|SI9^zF#o{jQ1^bT}Agd0R$ znW8AI)XIEU?hamW+h=XV{z)JoS+BtAXq87mZ=gz>d#V2$_I*c#SKgtYr&a1$@gdT{fu{>>ks>d(jk}w|2wZiSslK% zHq3Is)-tqX%z^T$RYR&|mTz5td4=Ba2AQL>^YZ>F`c>j|TKx>)k$RwAWHCqePu^cCyZX=Cy4nw`t*T&5 zTvV=F`05~&=Ce#P+_Y+V`j59eVfb6Z>sbj-t4O`yE>@;8l#)D)fID zUciH0uK9sF&@ohy2}%KaPBp2zkj5tX2|ULK`-PI}MSb(T{a%|_$r&Q+Z#ZMgx7~|y zC4R0vr24ul^V7CfxLTpO{F~&p3FG7Vn7QHAgBq)*aqmiJ{?h)K{`vl!Yfnv&zdein z;QzYyhdJB%`&MDPJ;6Q7KTe1xJE*hFbHf+MEh_)0%8XifYmZOQt~#rHPW+k3E4FAu zW$HIK&NH zs^_Y|tU^{=lGZw{UxkQdZ^Ed!YthxhOU%8Muh@S}SN}@R9P;_$o0HGnkIO&b_HN9# zML#R%^vEAwVs%XLK4uxwM*Yy#3~m!KHLhNHdljPQ>h!wlIaMmAw2xgBuC)Z~ni4c! z+u5LGXFH@Zwo}nHh;IkVfjO~S3lTfHg_-_)DBeNR_GP2 z;e^uxu}Gd!TiC>Qq-EYrXB9_G>CD3Pyz{@>|4J$R?yI9XZG3E@L%)|RtuVHFa!p6o zhLwL-`cIVEiHvW1>oS{krqxz~`!Owm%*F_}25Z_Yc1`{{A>? zYVOXW5J!r492*+AMs3nWScXKti|*A}(Um@Bm8))C_>ltq8Cu>F_=15l5lusm! z(4YB3WQ1fMJz4)sZ-{HDy>DrD(XhM)xz>`J{@(Ii#-_pf)|%0tl#W&6t2L}rrP8p9 z@=6QR%qdk9?vxuCbu;9Ku@H0E-^)t!GP1XPOZw<|_3L@yhF?t!2B4RC#Bz zz2E82yFOL=On*82Jv!@T?y!AFx6Sqsh`WMQwxY{fhTw? z6c0xVCdSvo9p@ZYMwKopO3BYC_~{rY#HsbB;-HL>3+1+zFJHBH)!UV8R*J6Fp<--# zQ?enxTy(dvs+Ki68JXlCR5B*dnA86IoDch6ZF$MRS@>!8wCda)tQv4tHL%nQMSMMK;Fxr)4t675b;U(Rr*oq=ZvfeInDEg;$P10{_$LfG(%pb z4GWTmY!81H-7cX`%I(zLWO?HHxc=n~Q9o^Eh7frOKf$-r6;?K?;AhUN%zHon`1viX zIHy@|w}ROvtDNt>-I*(Vg5;9T21QdY&m$X?pUKlyH{{?aKr5Xf-HqW1O9v^)tsz;P9a&|}?Q%Ch&vZlC<6@3$&OG|-LExb`Qv$$m`Ri?1_a9TW1 zyd}P0bW66DK%wSd2KrELV3zC(W;z~#I+TN_sR_T4`{GbIOE-Zt!A$X-(4EsWM*l01 z-&MnNn&};QCNEP>*Y-0Fu{DgyikcZ!Kk{~X$1q2zD)a<&a2FcR`QfC53 z#0ajk?}+1m$<*Qx#hpsGm6j{pXus%)ab5Au@ICXT`*-`NGiSILLX7MzH9(c3yKD$H zH8%G&uP`MV1G&R@e&*q z$}s*A(eC>Q6!WP-<`+oQ8B`sX=G_Vfe>zUH?J5Q`1&6LDNz*8X3+W z>N~MnHa@_KJ%uTpi&=!vHl7*BBr=ESZ2wySZ2x|LWBMumg_+H*;yVc=#neCuQH{Jq z{vv0RZ-^7b1oAdHg{(+M!|g#N-@%c7J+%k@k~x_7sUG+PXBa7*{ zN2o5&kP>1LrI(k(Dceu6Kv|;f21h52Do0UM5w18TKZ>qZ0(7f~CGQDKOwi#7Y>4eq=JHS1%xM=qR4WoTUd-nYsKcJ`FXF<(Rx|g(=?C zvP;Cjx7&X;o|X_Y(@phxnwx{(x1RWJVB;|QL+91 zr&v3I-8&l-w6*2$95Us`9Uem(bO;1U3FokT>VU(?G-&Uwv@i$Ak4YjJORKk|tm+ z4uXH=;(#@<8WYW^a<$1@C=M&N>e=e*>e+B* z+Mz5}^ifQJn^0R2m>oE)*2=HJS#BVhrRB&opuLUzM5D18n3XScveOnLu<3c*Ocxge;Qo^WHhN!)twZ}>^w;5g_>R$~2L5O!lVTR;=; zB3u^if=wJR(&(CvgO3sgVtf@$cV1hI8n%h3)5h(jNJzw-FvnT z=Y;}nICMWe-&mL}d=rYHvMRvtuL)NP9Xxc-lVholSe2{DAkqhqofvR@|HLG|inxc< z{StHCE;)EJw1d-!59e85+|E5fv|I=ekJVtvf0LSmN@S9}* zlb1o7ABK~^0{pM?;3@TmvtzFDCHDc^869_k{mDw~OH?lfZVaD-`RT!8UCa&F!89Kc zxF*el)?yBLsV7mVttFdBM3Wlm^Gb<$crLX754o1?0_eH{5F01pt~JVD%6M=fIq(5D z5L$98d{R<={1@68LzAvvZJy#B&Ne1=OcBuzEi1gB2oR~|*c34;Ga9yh^6!L?G zw!#QZb=JrGRN(DTfJ(R~CXz2hWjcr(kILUDt_`mghJnf9mpa3_;0nBp8p!@bjY$CE zy#^S=b`S?11gc}FdO$_o7w}4-gbpjVFG~^V#M)(Hp+t>p z^0A5~@=|J}e53q0{_`I8rYKKRln33Sy8J0P?bXR7;u5I9Q^2F%0;exY+8%fa67oLG z*sm7@{57E-Ziz5>lN}I0fJ}KwmO#ChsVN&72{P#l*~dUbI6@RiO7Q4=;5}?dPouA} zM0m)ja$UIU{0%mX^{rpoXY2Nzr-|Yg;)_3@A-jfsGhlL4;k8Tbl5!5Mr5Jb5!*1lnSc)*%$+K5`q`n2MIqp}Ig9(ox&0sFygjd6H@FM10Bc|!8z1V`U|X&P0}Li0?ynWh%G9kk5B_=uLM7; z7PwQUV-=TSCpVE@hv&!^IIpfCvWcqX19Aj8ja-g%YdpDv451Do4z*B&s67;i_xV5G z#sztt;-@@Tp;nxf_W@zrj)-&+HIz!n9kUJpzvg6s$biF&9gYe#;(>I;1Gd0*aC!$o zv)dMG^$y@$H^XhP1?#XOKFv%pj?+OMmV*)92-(FDkwYwh7ruPs;Re_qcT6=QK@g#& zX(5zHB)CMl0k%kY5JC>&>9fUR(S`R5LIl{v7O<301-@d&VFswBd*K?e3w!e#i1<6e zdhH1xj&}IdE185FvJ$V8rSx2}?{eWXhPuXm+tG9x3x(bxw6^NWVf+f;hW|G|qWWu@X z8u$hm;Z>7}2;za%9on6Icr!G_NmU@c7P5r?#Qma}4Cj%V zh!=i?D=-qd%j!TD_|u89;h@kC#jWxIeh@nNRJp-mCy+f<23=Yy`vS+OH=vQIp=@0N z>P{wj9L0#Qyl@<>jT5Ujv5UBlZ(}G{>L&6Wxf@ShnyVo#@VcuI!irqBj1-wrEs_}3+;tG~<$2sKBk(pAAW(0__c8+C z&l2ehqLTWcZ94;%@pq4hje5iH#k=ODu9FAfr`;h&pg1_(N%rN>yMV-V4s;Jvg(<^~&i z0GJ#dvA6PNpAc!s!OiFvsLEw{^1H}y-C|csCMmEp9*AwE*?8L)xc@wacP`KsY>oPe?OK82(*dh@Afu+(uj)4m;Zyq*wlap&PC(k8#_pvCJD$iqNRqoE1JW} z;$M)jlW{ZEKt}!n=jc_Oq7Ja;56d3HO(`R=2H8Guic%{$ery)&iBH8>!g%DZ z7sPVdx2v%_&L9iegq2qr4szkdAvm@@g3HHk;s;Ko1H>d`IuGG#^dElTIK-5-5cm9x zwYDBEU=^|Nu3|;l@E(TZTwaSPqYBO+D>)cz_HW!vrwBdS11^6QGPeP^uZJT;1GOIK z%siYzTcm@CSm#R3v7`3GdFngZ8gDV@qQ@I~1)}vQ?BD)aRp&sX*W-@Q1~31Ajvy0} z0j|UP+zf(L7-|q2cpQ9^65xU`8ByOX*>U&+jzo-C43_K zZuloq@_o{5?C4$a@mPRo$;29d4Wj%WVm;9Z4h2T?E^!imEFMHpW3dx|VEuN%`rHKP zs;XFRmjX}V-YN!m6LoNI9l_c22lAKI@OIdOKUX3C13N1}upaqf8MxX{@eLQ_&hrFz z$Y}6#cHsWpB-#)UyAdD061w6I?ZwXh17z}#t#%6*_{sipJ$U*cBr2$#+^ zg2OS-XZlMRiW$zl;b@lU9>QDbg0u!y^~P|ah@xuCn<4U%%Zn5TmH(>ys+*}EsIO|G zwDr`L)H$jGb$z&USA{~IP}NZmSLVUVqXF{vImAlDP@e-+;IA-OwlQEtRbU6!yFrqK z1@J8RE*=z@!8@meFpXF6b-8`aStbIXW;FdjS8JEQFQ$<4==V@r|IJ+FOZgRiBluDo z13N*TPnJE0GBOu&#|T+n%mm1Z@__-+Cae`6a$#%>;k#@ADX7P4jPhElIhq7*4MPB# zveNv@Vk$=Vh>?h3;X0f#IfP1$i(rLAKD_!e& z;c4#AqJ!ws{sgunOQCmO4?G>aG@fWd{VBgj)dVr?9N7Gmaq8BAO8^h&s-?1K#7LsD zbe*fp5cCcDE&Yt%$!w>4GiG)UUC+PP_ulv2U+mBFUu7n9@AxvQhImpa;SJ2ZCm);QvgRpstVa*Jx}>M6-*tF^DZBD#ZRrQ$O8oGOuZXDj*dm(6qB|1a@(AMMjmWF8rdV}YV3EI?{P7M!dqAlqpk7Y z+&#F9o>IS{)?(p^V!nMDfK;D*e@TIi_b?p!&h+zAfkm?|x@cDI^`8jP$e zR7|P4A+?chgi=XQ@$Zp6<)-*X6%WpzQp6Ot%(?si)3d%${(d>-_0~6E-sXI7SQKU7 z=D1X}yrj8rFBI9sG~xOhmhy2OQzn=1k@PjTd7QP}g7BG^Bj!ow_SRpfEY)J!Lv{$g z%JaVT&%Cj}|Nfm*U@ZB&aBTkd+@8M`zml_u{cM%R=K70tWsmG#olSh_*pLoYKQ{CFJtD*av1=K~peIpa#M*p-g#l8Meu!c_Hp zlP|b|tz*Qnq(|jvr0$466vafoiBN^jvnB@rGTV&-%}8=9JINF0q)RUpMHf8DZJgh- zxPEDTu~eY={XM&B?&sg|I4Lc_+DK2EK$MIqG*21J; zU9zrbP00BDI_oj>=+etM?~Z-Gk zewlA6+*SCah%0^VTI!DR9`cU%zx1DHANoIoC)b{P=)FW$4rvxuy>e!>A-G#q`$TV2 za^+b`_HsG3AJuMC=V-n3O2y?fD;$h|s+*~K!tap1Q5Q<7^xonTIg7J1a(;iF`fBv! z|DKk6v+INYOV12zb|+|UM&wh4&+XB4Izgx#>RXw#mjA+s#aPST4nKzJ>n|aF!=~D% zS(u=m<^hJe%9%t*@ep^EUgTZq=A4}z|eO5B-3Gc z{flYe&fc{?)BmdG{^!h2Z)0L}up;hCYTa-}u*=pZse9Vb8%^-eO%^Oj0 zA1qkg0Mi?_pkw$WBPHbo$74;Ipbpe zH^o(=16<2sK0$YLMi*Z%UT#-=`nuaWCY3!dTVQWdmRkC-q*2)t=VVW9-*dWz?Z_{M zTFxzu0SB^B8cRHrS5iDx+7;X3&vr#QLSaW`-*5KUOb6h;Vd7^ z$8a+AE|Ni8OoUV02eC{XgNa-botfdNVjY9SoJUw99+&b1FX8RsN8EN_I*a&u6j6w2 zvl^gCFHy!Sd#UECLRF;tPqjdbM-kSY-kh@!*|9v z)EDl%;Y&l8E|osySNeDPzWRRoZOm(C16z;l%-0v*h)bn0nA_}zxyU23e#A2LwbQcAS>hY}0s_VkER?TX4qI#yfm1?HqDyWyOsW@sWnTxZ2M4$m;y2;41w;?P2ikaIKAw%ec z>?0CgxODi&37mzi#Li$eOcH(C|HN;h_t5?6O#d1D?C{_9$I!j#|7bHJkyJL0jo_Mb zb+~YNgVo^o!#%IAI2%vY7{B`u@n8Jj2k2)-BGMm^Sg;B)7%bG9ieri~sxz7?+L5}B z`i;h?W}CUxkfon#Y-;WhblF_pG{SVy_=jPl{+afa#;DF$9He%W4N+UDD6c~uA}$AF zrP0U}W#U0$7JlkudOU$&%6H>c>~8;GzCONo{y9FY*X~~H4)@gcjPlg;O!8dtyz>n7 zQocxkp??6q796-mOeT9Cwa&ZHrFQ2o@o}itj}~fxNIMRnT>+l#3F#TCUGb>Trc;lp z5%S;iUy5g{u9|+jUAkQT-^SY}KB#?gLh!bri9wp+u;AgrF7qt&pXR2f?Z$@suUdun zgKDQ@9r+XPrkCJR=8<}W5w{W)$I;+Drt%ah0yfTpy7?0J5_6oc?%&}Z;Oz~9K(hC$ zn{sb(HFqC&KXNzrT=u;2Uh{GOb@XRCjfrFKGlSS*?i+dy>-cZnQm%v>#n%;L!9ffY zst9$3MtpC6KDyLJL?PirWdEGJrI@3dqET!A)Xz5dF@Fh42tICkVac)lZ7F9tV0{k` zi_6;IvNZUJNoQ=Vzofmc8Kb(Sm`1H8*AN@wJ+lP!q(_81sPr$v-=^m4fa}PEOW2ZK z#dM|T`ObO1x(2u}yK8&?@HBKcakp_TbUtwOb~JU?bd~ee_kQ=K(Gq=>3DBQt3+5Ix zu>+jkAkb&4qmNP-r@|+kM$LpLc%r^SqBK_aH##`4(77;xE_+(FS@S|0ZES0vA3WE( z)Yd2TRY*l!UCWQ4N0wVwpKXRM!FtJ}3w~?rukWL|p!`Svg=FDMH4nZ>*Fm_aG3(cp zo5n6-tjrnaBzuAj6Sttwr?MQZQ zcVF!Gp$^+4OS1Kz^|bYtm9kW^6b4TWo^IZ4Xs1)C z>nI3vGP1s$z*T(ua)AO+Nl$S1nW6Lr|1bY_`aZpeY0effQ!&*y$lbwt&C$+z&UwID z$yw@r;wo^tU4m2Ps^MZ>W$ve*Q@#R!IzIOzCYoK(e!&E6C8h?}PfbiY9>NL42>IeW zc<#jszxXwxMYfLW49}2{%8u&4wJ&x58crER;~KLs$ZWl0+Yq`ibWTWy^|7V5?Yd1J zvdH=9L2c`?oneluKe}Wgm?5K+B{0-DXqmkXgJxM-EF&&g?Rns;>G;on+R+Gvl6?F3vdv}R%DUP&+h;nGoJU;u zJWqW!nTHJK02vjdVyCfh*{y666bv;mMHYo_%Oq5ByQ21WQ>0M69Edu5BSo1qNd1qh zvT8USJ67wb7^a&B2A#5u2{{-#DQt9Tr;s1k=9V~Xb89b~*|yH|Z}52YKw~4_c6Fwr z76ms@ILFK3mi9hSSyGD|c|9mM9hnB;HBMs>a?7~7+#tq8NBP==1^V88*O7zIc?N{G zZO&51pN?YtSbG(R(K*)r%iD@>#kOO6gK&P7v9PVc9yq|NxF1|1I_eHoA6uhZmo9=l zjQO1d;`Kl%*;H{sd0Dj#?B~DKshY<+xnZ4YU69Pu#MU9|GGj3Gz{@FTB7E?lg7(ep$OexcvX~z`cj%~{Y zb1xBJy11RfAXH&?h<(INR2c_C3$PzE{>@|`$tH?+%JQm2l}UY0U8)gu&kftn^5C;z zNR12GkJTP#8)nH0PPQtn53D0CbAt=alZ|urMH;O-Td|F*3>UkTsB@;Ep6^AiHc~jl zm9jrDL;R4hBy5LvB$ib(P3h6TmF@%1eU7%yZm#C81I}fj0*BahK+h<(cXC#6J#+u< z?cqO2D;ScQN)KgRbU)V2o?sh;+_4Xwo&PaxUZDS;CH$1~#H4@|zQ9`9B4VB5g+fq% zQ*KcW)jZUM>8lwsOb>(D;O*A0wyB|?LpO(*Z5pfDw!rq$R%ZRvQXCXwUT5g1D^*uk zVTP2vhyHdZ>UYWTeH@Kw%ErfYJ=l3{3AdTAhg&3u)3NX9t^R7>xo$u7zV}_FF4Eo1 zb;cPCbz?KfNk^9RU)NgqZO;gtGYx2`UrtY?6L3m)W@a)1CXz3pUz*2N71Ux2@UUqy z5@wPv#r);Sq z_d{mdB+K>SQrxcl^joyk)COfSRR=`u!Lr}z@yvuy{5!vzlb8+kLAn|9g1HBclSrr2 z%lyrJ_dGw`4_rfBde?c^M0ck9n)|Iw>56l`b!EB-coMu?%+=qabLi*v7}`Tm0LSDL zQ-OWMrf{!VA3K(Nz&{o$fM8KcIuC_IDExb?qpsObHk#ZjPge|64pOdC^;CD%^wKTS zcQ?&27X}TsT(lky`730VZJM>nvds3kO%d|hdeQPIc$oQ{albwhGZ%z%KedQB4le6+ zak}t^Ysc5eieZ>AuoZ6jclk5?hyAbV*>sM-x^KK^wr8(Fwoh?9K7Ka=&*cdLR3?`LFsGd3~O6ugtf~chNtRp}1V`6j;ZhP*Ystd~6lA zDy!wyu+!ipTx{J@n1PT2}c{<>q=dbD~{C3|Teu6$npJiN3U3M*V ziEcnQ#9Hr*Tf$FYryGK}cb{3v{6lx5t70c)Ghf(;=%`NM3fPtGHuf-km)(GQzH#gX zoJ%{|Ir#HvmSb;o$Kijl8Tr_Abkmoi_j**c1b)jpg3dpdx=$r3S}B9oCT*7Ph2fs@ ziOFjo5Pa40z|zc;7u?8y;R2}PaAFzG=H-= z9+a1V5V3CHzT!D9u*sYoip33>#MsH~U>Y*v__@l+*ey^Z?L?1!G{2j_$ZrP`tTP-` zXG`)xBC(y!kS9?E=+hn~|I}_UyhD6E&T!50J~ZDpJjjg7!qd?15naNr+EPMVgr`nj@;sirVs>%Qb^ z=I!Kr=l{S=K!@LkJiebWftMjq7%r?8-%4#{ONgz=39m^1VG28w?ZJL!wlkv{GgCm% z@au5DRCc{~X1lD&bnKpY-UPp!e#?xcL;Od*m$?LTx?V7T(krx^^=Y=?h_T_ltv_uC zqI;#VDc=%9W99MparN*+7GKlk?FI_)8 z-MwkP<9?2r!@5AGA1MR^SJ4xC&&^W=%zwlzh`k;D-qtVdethS|d+|G?+r^(t9av>* zg;z;&aYv$Wgl6gH%kP5yfNxK%z;to%D_dJUt{~#~;>;S~2LA~C^}bMBQl<27drQ{~ z_b7LsyC?lkA{C3(2ed&Cg;E z_<#5ZfC2TdXP?{Y+T;qjvOM`d7hRvd!=7aqvVKNR-}0~bJN++d4f7GxTFLZUU!gnA zt#se;Z1u&UW?q{;#rA?b(0%%nFM@8O2sUaX*F`)Fd1&hvH7M?Ax!Y0K!zPxyo1B+c zD`i^ZnCL^H-3=zPD!5kq|XKu-*qHXz^zh-3h`q|+ZTR6&b%&n%!awaIc zwy`v~Ue-ueU+*)v59(x{V!dWP9n{=#P19X~{LO?>OokHE>5AW(>?Ce~fRWJKF7Z z)^mMzDm|IrEB@!ugKc0NFt2>q+-aT(fj^83qMF1lip&Z7H`<0bri?uhSv_`U3YF$f zj!x(heaF^P?~>;Ee2xarr!JHCm76U)Q&>5FT5h@DEwi0jBl6DJ_xP*w7M3w1y?WO*`&E0iQ|B4y zvoa$&fhKTvsme~4s?jO&)|i~gh0&E_d&TaEv&Wo` z+mZMnfr`^d4YS4?Hpt6!13jzlXUgU|Vw{3wPMN->Ua=gzE3@!!aTmu&-zr{Co>J7Rqv(XIIEBPDQPT>m^?jPhG@4oK(iGB9gZSazw zPp-qxQH~C-j_zyT8q7zoj$jSE5XQ?IOHs0|P>-&JUz|%eRM9!8Q^bH|L&87hdPMV) zQuMo+X^{`Z$3%pOTO;~~oHTt4CEu8H0n z^d_+vwO{>2|H=6Lf0R7kV~t!_M?cS4+kDh~&^Sx~pGL0;BQ9`ZK8NeJbCFYUEpk0} z6xlbI4lf;3Hp=04Iej(RT)`*nFQ2AzspqSgC_VBOa7o!NuOP2Wga#(@1$2)0fcszP z5U18@MSdgMtGR}`NY5>IiRX+rlYY%E5eLFcy%qI|Oi*a$Pn27fRWt)Z8*4~S)x=v( z<<=$tjQ=OPTevwQGU62c_9$B;TfX(7WvS_tdIiyeZRR>z^f~v^@BR7hN|rl<98DY{ zj_=NBFXIjICon#~j%=Nxp=P^*Gd(xy497H+!4r0?>uG821?^2u3$<6-M&3u(l>g*Y zyWcrUaNkaPC~tyykB9V3_Dq8NEX!yGqimu)RsCBl(~s6I*8HnvsU~Dc@VMs78c54{ zJM-4}r{}qIts}qecG)QVeCI58mgln9?)$*h;yOTIa6a&wXhcqu*Oya@zRJIqXB0{;48;69k@K9ZNN`PC}*lyp=PkoutR@QGey;0HAkgZ*HmYy z_Nwlwet{mfhCDAt^0k=r{!ac${yy}4wi`E>Tf)5ePsa3QBfgQ?Ht>V!taz{FR1vB# z=&9y`z_?awEDiymjpW8KLwut9lPeGFsFAa-bF%A#d#QK1Z;by9{hG0H{e&K365P0x z$xw=d)-WIX=&|HOQbq8jkz7PIAS+1=h(pRO^X9NF;p;=@g_uGHhHVTTYDu#^4r&+N zE68ZjYOc#C2Hb3-w_e%V;^^X@rTrY!oV8HhYU--5bvJqlo@g3;75ti|DGl5i};E zL%EJoRK%tzWsIp@YShcnjiF0ImRi=BKWh3Zwi0)^g}zGm)o{dJTxcjA=cwek>rC*v z{UKZ`2(7tNvFtImSCOK6qB*5IsE^bIsalc4@qYG0uUH|l00f2qse|$Yb)*TxDpc5l zxQpBue!UnHc!#`o8;G>1E@M(5RwN}w;0EH|mFN$*qS}y8pn1FndTDvlC^kX8>mJk3 z-`2O(+siZF{nd5Reb4*BuVns0q*u&sf<`{THRnr&p3(x@QCUwyMoxr^f`?+EyL3sq zE$WeD?v}~HxH+Ndj@i|=ic;Xt3*(N)^(wb6?q_^P{IQrCVSQ{5tcQX!3@PdmYL%=4 zKhWE=^v&;b*|)M!{;pOquV{S9DW}@+V&@2BL_+q7yd!U*Sf~tDpVPM0x7UqV*OG6L zg-Jt%C2VcF&{vJ_!mSXZB%jnB3c{sQIq(4dqD=Ob{6~IQ(N^h!YS}C=AfCfz$}Y`@ z`_W)(ihLU!lloF=AY5IOz6wKm8~>eSK_oSCkHG4h=KTb=Y)$t{PfPDf-z54d`VKi{a7yePkP`=>fvJPv+fpJ>4cmfxK{YOujS|+2vq2Afh#GKfIFGeehMSv2 zM8v1WZ;or6&?J6V?6IhMAvdkNf=mXNdMwpE&|WC>uW`l~P0U&PGdL?VXGPx1!aAjP z*FyR=9~O{-JoZ3drg*LVqCTUYXxL_2jedBP>IL~r79S`QeBk0-;}45NrBG;29zv)2 z25&q@Opy|0hcO-W484nUlo$Vfk$gn#g%-OaQJp+Vjgs%Bwv!aWON-%%)D?QpK3sdY zAG4dz2Maa;TImpXqgPC}-Gm%NPQ|7A#Rdw}3O|)*F zp{Mb=K1f@pXirv`QPO9=Gn)i{X;1$GdKmi`+` zQ!sb30`+x2R1%NnDR64;4xhKzgh{qadL+E(H*iVpZcIb2>}DUnB2bZ*Sjz zIGr?M^SM^|4u%DGV_N4Vbcg9gS8z4$vNgm&^otCEL1GyuxEzS$`f?|r%>M(Y^i1iX zYy-KL%BBR&rcY7ruq4NoROWm5XJo$K1v$zA{?X68sVcJ)UX0pD*KvwXaE8YBS zZHDaQ-jBr@U4C}TQRNLOdE&mv^_EqlUMnuE4yvDPW@(@4o15vN9znkiK^g^=5oJ_A z@~zYi9K)6DRd@tF6uyXerLR&Q=<8>oa#Bb{qTZS>(~#5UmzAu_u3Dt(i@w}QX8?MA;7am;YzfuXi6q73a3c<(=v~4L3m#TTY-5r7R+q zm}j|6jUihQbKwH@4GK!LxKgMjyy7Cc_e^72#7voqe#qprpHV-)Dz<`tkcN(sqP`l} zN488frLc+LlP;&uN`0R6GUjC1!w}5mfhFC5Y#eCBm-DhEt8#L`8NSW_w&zDlW_0%9 z{2}&i-$DM9R7Sp4?o|s=(wxyHn8@G@mH`$+&-&EkoduW_*A|4^yT@nN6$|d}L4&(59^4_g z1qtr%E{nUnySuw=fR%A+?^k)>e2@glGTYOA@44qx{S~<=u8^;&$MkJvHeH9U$Hj2d z*{y6<_A8UZw4qLrp9wcsrz&9BCTq=ApAxND(2q!wd&$idtHNp@a4mKkU3BQ4&5NUR zrF_hDEcc{*I|_Wu-#7otTrU!sgi}$gY`aYFsL@1*=7^N_z56lk(?1_hzx(;F@rQOF z?tO{-**)jafD!&Ei^dYFA~TwO&5@S2j@(gO(Z4GZ<%z0^E?6z+D@z97gUKQ4>Wh%2 zXo#0_j?EQP108~GLWjXVZ5L`1PLdX@{fSD*Gi=7c5jvXNSuR<&S&v!oTFRP_^Z&Bd z(LWwfbOMohX{1re96axz<6G%X@npE`dv<%`d=33-pnKRCVZm(~pfxn+5(#h;HGu*# zLMBp4)FEi?#vnCtG;u*c2p-iFbU9W*UsY4OBNmgY$%%4Z^bTqw1G2fQg95nA+9%SacEUADdOYyNO8iQbKA(Ap?8!|fw2dxa+KJMyJ5 z2ua5y=!Nya^(Ro#XK9U%?#xW{567zL z2Qfe5jwjYlYMgX3VMUx4XN|iUofw4*-x{*q5^gcEMtAXau#I2y^mRAN{wM2YcB(tK z=c8x4x3j-da8^hPrG*zpXe1llHA<7is8nV+cUD+zx@cm}mCV1JTbg?F58&3@K_3N| z(t+H?gGib4p~Kk^?C`PTe)RrB;%(_Sy{cLHKCe9sQ1+=T4mH0+l(U6D0Aq_jwUx^|Nl<|eF4h$ z+i*GYa6o;7hVP9w4}PEl=m8he?yCo&ss96=)zV<~UVwMvPdK~oYY(8X{~dpJ6BNt0 z;YR2M?^HUR86NCmkCA7075da}P}U|w*_)TB2OTv9r%xPohpmb3(EQgYPvDLkOb?^S z(N*Y7%0l0vj)0#SN5xXF@zfP1FF-jPM~s7d|18wp)r_@BUdV<@{|r>c<&CHMILzW- z>Z9@Xpv)wPP#=)v`j+|&-%m1}N7mS>Et332?a>&Tn@#u zih8s^rZe$)SA$R=uF^Zf=kpO>kXTHy2+W;-hhn)CRIRLb914JPs2m2XKh(3@0;pB1 z5jWv(Nrsx%2}i_Z_$TwiX(w?6Lz})t+XDwf zTlir6tMAo~T3@Zdc3A_JOWz4a@pGvCr{lXE2*q_iW4>{D%lzf zcCQCsmF4h@Wx>&@8v&>|o4}2skt?XTU~4_Yy|s&KLsz9s(KYF-)KRJxoNv)^gw==I zy9Tw4vg0&xk={pdr+3kv=%TcXjsunL3Y~{(#MFlewjdM3&`c)%0DaoI^iaAq{fw$i z4aT{0Ja}lc!D@G*nmmcbfl^9q#jNCov#}ufqWhJ@$Yp-2rfBP-a2B=3&<32)UqQ$6 z$Y_mftQA2*o!bWvh*Crzc*W}K>$PpT243{)-)Swhrg-j3>Pg1$dUtrKavLY0H@-}K zBGwW~Q2UmLr{E3pdwn=lJjeI_4bFzC(9r)0-)9M9vOX3riXFPDmo;7>0dpTd-#c&| zOd{%$B-ZlMT0TS3?Idfd_!Ro}ngdlhtVW?vXF8yEOuL@+kcbXvZwPA6=mVKY(YdB&PfX zF%M2I8}ZGE7zc?TL=9;5Kax6>-EOSNZ!n8aA!@auKRwA=>Kijoz9Qz3G~8 zLZ5Tsu3driM1HF1bxW85yZ}ivDso%m$C<&iITPV)|HLl<)zQesYji?8T z{1#09zQNhm4=VG<(7RVO&S*WrbzP~y#d%G^Y`O|o`3L%WEtk&0wb+BWMW&;pAI0s) z#8>6(2@8cYf{ui_-%Q&CtLcewRH!RF;T|!0>29Q*s18p39k|al`6^y};F9ejv+^>j zgCyYfOZo>IgeQtq-K>7r?!zOHjwf_JoCxoXc5oq;#FHG4x;6qe_z&_o>ODTgJjh?J zO}@gfJb_nq9-i^q(1}%m6YsSiudn^T`=Gzp89e{`I0dNiNp)6rrML1$ZjAikJ#tT_ zJ5p9Rf$>%n`lp||8IB3Fk)hYX$~GHL*I95?OoIRaEKaMt@Dwh`O6XBvs?*?J*Ky(+ zgKo+wOzvAEd*?jW2^1K&W4cR-?h{)(zD<1TxFIpkqvfc$D3dGOam2pe*3Z(G|40^B zKStcavHlyLGucXJ^{oEcK5!gw!`TF~h28xH%BvHw&Uo<3=U?1}jOykVW z&7;j<&ANG`Io=?3&5$mWj!d0lh#x z9Cd$#Ng337z%6tUdi}S?7@`chggl3{N^cN1Md~tq6ZNQKcoL3aZl>tv$XG6yrIw?& zYjMRyGQP-gAO0-|I)-c!Rwh%e;j&M%E@7wIj$+l!&%dDJz zz&+o4+}G8A6IWtSaCJxmPj0L-N#9HKq3n!>J0Ki4_q8}Ig1L`rn5n-h74!GLoW|Us z*HQJztHx-(qgFsAK_5RSP8E-cZKWKkG-i?cl^C@e_IDP10RwpyjiGy+rmqL-V!U2N z->p&TH9UrP%mF1AV7fwLCd4aOl=5m@bw08I=4qdGD;yHDunN3D z?)5Ra;Ch2JzYrYkhIAJE7d+CWI}u;?zc9hMNyhUftt}lkSFz|(u@&PhCOn8=7WXOU zXVfK^)0N^}ZXauHVLri^r|WBrA{7Etyfxf;vQKBSnRPPvWJQn}w-ghJ=it823hJTC zksPs)qH6O9nd-!zf(mW3Ic!;KEoSwbx0y5}xlnW`jl{U&4^M5F~lj(emqaux{0dmuN5C8}m^MwV)SaznMeV zp!3l0;eakrBGX*&fUloT^x|q*A3GaGhhuug&556$a3tYne5tq((T`j=oG%@{?Uk$( zOn-3$sY2TDNF9HB_r0w8nW0}TGk0Zn&bpFa!lNSZaZj*zh{p`DtW;S!55-ak>L6p| zo0#^SlPv=*Z!9M34$B0PvM%#WxH(93IYW=3u7d!+Mcb_IR`$u~q>@lUMM-O=fpP`- zCexwd^lPag3VedXrM5mFDd$^I*^UO+VF6ZcS+j!AI95r)I+lesq>+3DU4K$iL^G6w zC8TD^@;r&T;!fnQd6>pE78r9hO+Lf4+?!i0R6m{}?>`)D$ zTb!cjgP&=Repz3HYGszD!#REh1XURhc|#81&KM~_#H>C;{Dh~*B*jaEG5Ovucf;3< zsK>x|h%pWuO^ENrC^$;%;z>D7y`dgc%TX1FpTYQ(q zn83@*c|^XHZ7WRMLX=aW#+m37^W?GTyqj<|ZDDuNQkZ zs;Tp^ZKb(9@&c9<^|UV1`(SDBfvgTcL;o)M@$A>7?Cze4KG~l)*eUcld{8`#-oQjX zX!IjbQlDuXyNGKf1Wbi3(=CMMoXH{d;9fJU>7h{7{DRm07j}zd>I&%VCc$a^969A> zls~|SD5t&Grw}LLJIhCHCm+IVmCqQV{|myvBdiJu@MU*FpF3OLEZ3CxAbIYtxL90` z`(iV)h&*x+OxOR0qT{@L5YGH-$};4wpVeIO-(S~9pc*-Y+A#y(_DMuPB*nZ(!dWxu z^41e~P-nH!TN{0;d;Dy>8dEN*9vGahQy(P%krbV{GhT}&k#lZ#2v)c*nEd1hbOnxt z;{xqHqq8di?DTJifB*flHgitSVDC|XpWqXyX-A0FWT#pURQZ;af~(jF*SIN)%2KtQp*A};R~wZ5=s#2+ibanvI**k{HVk7;ml%$2Ej3oF`z^n4$XJAYa5C(m^z1UfNoGE>4tUps<(-g2(`QvV0!A zgBrb# z7qiN``+H;j&5_!&DO41yj~(D7Y|^I_g{Wcl1*Qu3l;4G%&imE@Hr;yM5;8^j+}vo! zMCZUqdjVbU&RQMyPY{)UlkL!2q<|Zd1+~;u)dv-b6TZ=(L^{r|TMXVv$H`|RT$H!; z3vjj>sMSV-Hg!V&CJ|B%P)sjH;>C?(0cnAhj>&m*tg-W?lCmZTl^<#V^Nru2#C}V* zq&8D`DG#Mm?{NmIMlDCu$yuD`UqfkL&6r6|P3F$;_z6>fe?9R@XbU+7mV z$%Ev5@(1{={>9H9Wj{Do9gKXP;sSE3b8)cMHr1Z5o1 zZsAXP^w(55A=Ac0Ux>S(FfOqH5@yRJ%#H6KcR%JFQgh1NUYmMyQFJU(O=~6#k>P>o zo~7A;WTySP_$wysN%my7;pyO8<_`vrhPFnQNCTm4o}<4qc(Mugk-o$}Y>h0ojyHjx=Yoghpg?&;{D%tAMzGB{8LmA{cBZNV()rIHt?#YFhJR~Rde zeQ;(b!J6mIw}sp92v*XMc%6{?OVy+nSWBDZdW=z? zDY5EsRZ*{Kw{^uRPj;Yk(KG2C=mbne?QsdcfO$j|*7eK!Xp-kPSa?^h*o^oRiSrXD zCbmg@mGCN_k6RXf#(CFv(|ny5*qKyOVv#mnJ{Vr*-{_u}_3PLBU-4O|vXk6JJyG7g zm^9u9CPjKl1(Z%|9%#4HapD?JZlY-z$MkOigT%&^&H?^cLqq+jnzG z;Vj#pK11x*Tyn)Qk_0@Ba^_~=$?lhPE$2s0Rd=-KoVQ@$eW)+;2%CU(^javqmGx`zs;%G- z#i_qzUXuhS%PPGD2v7~sx$lQFryFydny5U^#glMX}G82OX=W(pC9Wseqbn zKNvkdua%8?i#+Js#OWK7A5#p8QNXncnObE*H+m&CG(OtEGWu zmwAxsIGAFM87K0j@{)C+G})y8)Ou>E+EcX)Du_17KyxUSlog=vOjcQKEV?B{KzkdA zF4$O9Ug*Iu^Sp}jCnn?N(KXr+j>kCAD&CW^WNxAssAMGBf*B_Cv5s`yalMUx6Z)x=laO(VUADdjV9X)1m(iE2~rX6He3& z8BI(;N2oiwidi7UTQA$6I!i@Aj7?0~p7K!=BK; z9##G5(^BYH3+Oiu!K)7TkR9lU{|-WZ8ouuwfp=0fFl8l8^ZxFUTDh8>=m;*PK?_F4N2L!!LiPmH?Gn4UFJP_!iz8k$&Ol6 zc_9)y>IeJ#26<+?)tqTL!*f38^miBcJoh#YObl&=7v`pzqWrGS)z^V+@qrq`9AhIK zCCm_x39>NSw8rEz^+!(QcK#^Wo=s)i(krNCWP7Bs7@DNEz-L)pjY59zDtuS3vF5#0 zZX**?QEcejT5-?Rhf?|${8e+&5xR$Gq#N#*K{!(!MlI1#8G+p-tc=I~GZDL)72LUn zAkmo7BM)JR-f2`q^?e)EkL6@u+!JQF_c!B=e*ovTt;o`PuJdzIpzDKu5pOsfL;l<`M1&g31iLvLWdR2b}-Ftwkq$*$nfo7!7ySd(p4?Ij&s9Gx9= z?elC?tdlKi<^#etj)1RmJJpO_WIV-$`n>W+ULxfZ!{G|yo1xC36G2<>Y=8+~2(}L$ z3pvB5!&f67Y(|0-59RnCJ;QiS%p>c8|JNEU$8`2Ro5GFe)^j5`GdCC9N`+a^m~qD( zLzgZ{P9txk`Y9F;%9!)Ry}HVj-?U%IEzIK|!VTPl z{lrvc(x7omLu%|U)X6i!7@P-nw_WZnZ4mEA5+diri^A2zd^jPzFkB<@DKZ&a`$BSC zWuy89thz78L*gvCooY*;r<0hWaLdxT9;czO8q2f;F=q-;Uw-8T2d+DX; zV70xAq_;=P9c2cdj`m7JW$Umf>|6^pXac8NCKm=p*rk_y*cv2DBNUh}Uo>E(MEl5U%1X{K_zBmo8A_ z>GDhl)0ExIer74I442IPh94gGA-f8Ri)rACAHlrl7p62nq5QjrS)K=9gC%Ae-}P$x z228OUs5{}u9E@vp7OBP~rFGIzskXdLw&S!KtEQ_3F`f7g+}PZhf<7{0puU+1;*kgU zYcaAO*$2ejIUs(aO2dq)8W}}i#ygBA_F!`Q4Wy;YdI*Z6W7-_7mA$p0+7zrAW3j%b z;e^{=(E%UtWO^>>#0RLaK&eWM0F2ys2}L@T0qKc@&7aUCrn4L;2chawA4qN1RBpR z?IY%!65ekT>WGHmz;(oArYj~j>%qy%0|(-lfoX{0r2MKZ_{_pab92~%OakADAf6q$PD`9OA$X8D=-CU1p%m;%al8Mjw zX99MWtw?OO;44-G=jk3uO!df0R9#FPe`0Ri8u!sD&@rFlSC8WPErxD@j`y+z^W0mY zLG7jjsO>x9yps*#ya>=?Tt_WgtpnZ2+r$CL)2SCr6=nb zumg#@iVo3ReF@I;N00~pS?i8JSrpf>I5>8-QN1_SMKF2`qsx8)SNg2>3bp)b+<`yz zu9y*;G5MW`uGeL72cLi%HV#k59K65B#9X2(^!jPU2-A4m=q-Fx7yo`WQqbfqb3&SmJ;i8``%aUaja z9DgrX++%bUGme=AuIfkTDjdo+nD=x?&;ZMV;&~J2*?&MOtAsO44fMl?s#0WTBEi2zA3S)rPrH2D~zM`MGor9-jl~!yJ=T=?|Q+ zD&qWENPVVuL#OKs@`lUexo!_$V>e8qJAj@1la6B&p=2zH)%6o*%@L{#>V+a8P@Ohx zMtl8(RtZ{-*6IPA;3{FKyCv_y-}DY&`Jp^gxryC)GERT5v;?di^FSz^jk$XX+{0rr z?XE?=Ba2|NvV#1G=U^sY)yP!RjO@nAxJxW}8pj&N3<>-7F`V^7sO3*u&t(&IA*80aOw9a289^ny5pR8*(mr zs-(d^n^*i0SsytCrR{}?OYA3J1~J`=cb$frP(dh6Jo*Pru2+)%sRoz@O#m@sAUl?w z&t6~;vjf>WY!thQ`G|YtD%K|xSrwV0ZS@)2HE33fDu?8}@;<15JHe~h4r}%&DOLU( z_3>;aA1aetSeIsi1ognE1JYUpbo~Nk0jdhL4^yb7nC=&(UV;?XhfE^(fnuj&rdt61 zq(0~!_S|&pB+VnCbv%DcSZ*q3{@2_QbCPbB0+yp@-dxtyNf^$z z#bq+)hd zR%-%sa~&`v3sQ;n4|)yLm3<4H`BCm7m%+UO*|i&p#J$*849T>jdtzSKj%Z|*hCbG; zx|CSCpfo~!ANeOzHxe7E8W|C}0spHc?va+r^_9YEDx9uI^(mMgc!{ZGZfX%GZ>8uy zP?V(8=v329=rCA?<)A1n1x`T@ItK?qqT2_~NGudP^ND?F4P6}`&{volqok>(>2;?O!OpYQxoY1Og{DsTa~-SnfWg8MbG1x@I(2c z{4=f@w~l?pe8mJPO#TGT?hq)n)6|L3c^;5%<6c`EDIduU?+dRCp9+5q*Mlps3T8S} z;R0rq`^s9ivzDa4!>8Jd$b%}hE)*cu==Jn#8j>mc5j}&>PcNiYoZZHQl=?ycO+SRL z(+#a0xTYnD_2g)}B~BM-g~re)iq<8lN(bA`_Jg)eYjx`=Fhkx5TlhZQRJIl)QwPYV zm@m`%NA-cyOqNA|goqRhN5KbkI*^8p?}LGGU=C&qQ^6zXDLIq^>UYgB&Vk3bi`JPV z>;SCAFS$+JHm)I`U+Bjb;z%wJo5IsvI&Gn+Qx@hXSsydmJE+f($^9ah@U>u*(1p;L zfGq5>W#NoS4Ak-|U~}A1SD+$I#}uix@d3MKCgDd)-CZhyN=HWb0qQeV zguV$P-XBC2^Q{Nx{{ec@nA+j2({oUGI z!$V$Y268iaFZlQy%-t=o%nQuVOy7lF!YO_~H-&vozoyoZwV+7epcPkh;Z9#6UQGnh$z#TxxW`>x&5_mFM5V&-eM6V4COvl2h0 zzQ{c~&w^ZwQ@trQlkUZziF#>GHRWYHQe}*u@~^Nba0I@sL+)SM6|>7`-Oc)z?ag`P znd3Vbco6O-y;o}Md5Doz8HQtTu{Ah>{|wFUaef`Yihm1thsd2|t1{oPmJ)xqTrHd%&&2V_8gZy+iMoPi7Mt2xcR4CW?TvYq)IL|G+@V}ulMf}9OPn3&kLDaPrqWzLnjuf=2c;9C zv4KzCGoD{Lld~pe&CcqQz1A&yHv8q!NO7XlQ5&xRi4#Q*H4pW726cu0!qmdOJ(1hM z{o=auHhv8|n;uSnH46^&&V+*-`D?B1o*` z>CjIQ(5#<@R_7eDCa%bjp*?j;SH$edxQGSr<166~;R5izW`^p7KZeIemWZ>ZiSlKo zqdHUTt9LL4pt9=+)lwC(8y!$|v*=+N(5+!Ez#oPpdwkTom@5hGQzzwqkgGxRiTKBH zKV$8&lB3{yJtcMUm!k9MiEJysE3~ z;R-Hpyd|DPU3CXNgjuLbKf&KS8J*8l*zHEDh0*VyrhEd8XO%c1GC!OK|M;d*;qZ-c zAkqTf&wu6JN@-k6Qu}~PVUpGmRfvO#0;TsS*p(MCGaO84sJ}CG2ff5p#9lrs5WNB1 zwNT36sk@RB;>X4ujLwOg0p0OuYjyJ^{u8D^Z4`TWr>~g1Teg;YKhvGv*VD)^gwn&4 z#W&Jb`M*5H;_v}C)t(!}s45K44d-VFF{UoUTdos(g8m!C$f2M(-$C!p3XVciqZ3XW z2h`IFqs)P(dan{zr(@Qt;qDxW4r2@z#`he=IU^dA#2MN@I5D*b+wq+ek&jEG#4(XE z*jF8z<%{Ee(|zhlyz&aF_+mc{=0lu@q`94pXX?M7*&} z3!(}vEVq+nkaSLo$HCOO2I|3&&|K`YGec*>7V*1uSTW(eovxqPKj@{PLp6a3djNPrnT=!r z%LI}5%BH2JMZ!y{j;hcL$pJ<{-J;Y6f&3{{X06pJ=reVLgZw^bBCix1s8`#uL$yGc zou%@VAB`KB^=-s?a2rk(h2V=R1gA@5`LcK}{4%sO^bPcb-H`^+Z!8BbBR_IC_oDy( z5bN9>wU}Pthy#grBI<=Z`Uv%h@{cx->S&!FJuJRXe219Tu}kAW$FEN47k4?fUp$vk zA#qv4&X{_R>B0c&wmL1+JXkI;1vAYrfkJ^vfuH{2zC7M(?)vU6o)f-3p=9}*CK*?W zjyQEM09&>)A&}V=kA8g#p_A!@>5!1cF2wZ43H|H`3;zj7ROG#gGXU~H} z`l@(G%oO)xZ@Vs6f;w*vc;$`Jm%XoEQx2=fVbS?{^Fe# z=!1mSeClWQo|+eDlAl^E@sK*g{)3%N=Kq17vAj^3n}vz)P4r{KR70Gm+Zi$1O=Yz> zE~1C`h027rFex?$xvHKzTJ44P$P1m^ZNmmSdL`6fW>FFs7jybXHlNr}NcIvp#BM_)iX*;f1uej@MXQqfB_@$1-BHUbyc2IeZ=oGwj{ z*6-lG^#Q}8n%GbrDKcO}{2M6+onUJy?2k%TR2_r00Ma~Y;{{It&A`0=Pu~**(-`yF(m^)#cc>tEFO$P@(j_HRZ%b`rw&4V#LVfju{e!m(8~JHmC8#L7uoIaF zJdU@M= zMtT17tnyUwcJ*EM-S(yX9l@8#kV=jm5xvSe{WVb#J+im7kKVxi&CfEWo1U3kfHpjn z+sMS?ToXrZ)GKJ!(bqgDmz2gw4u-A<2ZTJ~>`0tg7_6MWVjU?Wt^SXe0l(Tw>^*0t zRq|LUD3eu>(qFl&yixn<|B;*DLXlhn-QZQ=2E~KzZihy6K3t9I=>9y%Oi7YIhzI1Q zeLeED4)wb!PJ3& z!}i4a@;>cD=Iv$u5#}Rts!2H}O#-uPYUoHv1qH34q++Mxq!XejUX>Pu4iY1~pctJm z6~n)Gfljis#7ZwD1wPIeI5}0)`x;wusw;&_dUG-tF`Vp8tRPEZ4=X@^G2WuHGef;i z4YHkfPKa__mU3s!DbA?q0}1QmCnuIlZJ)Fk$-y^WSL~EER(Qc>!2cOy9#KwhLAa8C zqj$Zp3f%WDf5>O?H}+@xtl)Os4eSX$jf|I5bTeV6&ePTCg7iCTH$whYWQ4a6UaxkCA6%>EOEOy0K4nMNCq-zV$I7vJub;apA1peMGwL4OsUg(vKPaw6g(8EYJISPkMjBZh9$wQQ@bWQsW z*V3rZ7M(9>m7M=Z$0hue*gUyeu5KxJ6MMv8ika%P*-x5_2@$@y(3L0H8iqsM6SM@6 z2fqgU1s?~d!?(A?*VuOzjy-Q+VCZAmE`^jNoa(Ehe97w+kxrfjCW6<(4oM zylM-GMMejG8lIqt(oUHqmzLInM_CWMGTH5q%l)hp&g>gbu$7ha<_NU5pnO zfFS)D-~Aw|E2ujHx^2bOxlm<}LNebOZ86qZC^FQY>QGsi#;Ypx-S*vC(P=jA;s3Io za$StsouI^jNNJpVKr)}`j4K$O;+ko%YJLQ5drM&%PqI(+wo>76d}w!Qaj0!*bLc~8 zZ0KV^^p^}41@R~&Op7scU!8{^bss9e9HKSO=>ofnE6SE*ztOXijgdsu*GFhK)IREd zB@6n=iBSAp7Dq+aMM&sv7s?mp7xE+U&jKL){v|!Zchy&{Ar`}m#KBET!PPk&wMLvw zD7%%t&`lJ_De)RQtbNgyF9|x#R`}O4lmnbnnOjlTaHp*U=PIi1x3qz z?1>FPBFQZkk$ciJEd?A69Pi+tqHHG}F;Q(|lVT?)pG>u;Fo^@>ipP*qRqdBdU$`NB zoT;Huf;(uW$<-p4L;X<&rTG^Hyg@1WEO6F8CP0UtARYWO7U;OU(}kJe z*aln{e@AE|oZ&BV!`VG_H6#X$m=ot9XTA>lYlGn?4U5(Asmulm@;!)_eNnMH#8Tj~ zv!HVG6$Z$v?F#0F;M1nBCIi&0QucY{Xwr_8G|^jW)KhZeKclLjFD70^XkUJTv7%2eY%VfH$*=Ms+1G$jP^YQv*f(GXqNS ze6U223~Iso;U}S%p_$>YVh{Z*ynF@e&Pb+Ng;lX9v!0#D?ql7UoJe#6J&x3MH*~Jg zL7_^AL&*b2erM$ouKhNwjq~u@3qofDNfHO5^RpDazeI4Pz*brdo!=6u zusAskzFjZSNT-rD`Nt-|P>UYV zvte0l-o@7^pKH)miz~w8f`0{O2N#B#26cZ_peUT~B|~XJBK)s7Rvn}Vkd<{9`ki~= zIkcn&xKDPlaZC|((Fi()I!OEmWm7BUs4a%BBMlt2bfuxZ1@qpZSOO|!8cxoQ;3TaS zgOLh2VYG~tL#O{6>g=;h3v{;{LW}ha8l?Z!%yZRi#09RjX|1`3(3C%8o?j$(dNUk+(EmkK2!~8m7Bn|_Zq2~Rkf{{V4KzL(DM7$n?_&q z9<)y9sCKN#t>CK*3xq}HF}AZd7y5lO?d2Sg>=s*fOF8%k7?Xs#fWl5kHdAHlKMi9B z99`+^Ql&YRSvq!x6}U1(QMX-##^98)Nga-vS*kw#|H`!I&>Z!~U9(&+p`1fyH%$E- zmF^}bEZ>%0%5kL)DxU)I&^*F4X&V$=O`u75sqDj4b*u7J3F6BCp;U+FiBZ--@pw%t zjtcpA^&J=>&4^dTZgMKTgI&>0bn^R5H7#YV@2tgb4{W>aC+s8bb?r}VHEolvW@{ab z&s@>$5ti^__<>3K8Zs5i8cBK~Ox63V2DlYdpsH*st5RLLlu{J$2?0J@H1ePpK=<({ zygW(J4wb?Tb0FLg58;9QiJZkrEPCuaKqqOzMT6(Kx6iJAut+mR`aEJ55|D-p3g}TPi0nke@=48>>9W)M6VH za@U~`lcBq2m0$7+{7wt-c1I~=m08MU=+Y^qSqvsSqK}U>OmIEF^0B7xrtW4Jd=+P{ zmu)`V1>0rxi=RL--o^6VT-`j))J-VJi)N7uC55EGsi-p!!wix?n zdkM!Z#{g(A-1bDr4tqKKU|R!gbIVTXnA>o1?C(r#x+~QJr`uu1NvQ1VBU@>^mPb2+ zy*Uq*Qcuv6s)ec8Y9z+Kk@8DZ#H*2(kwTGLAYw0wtc)~?WPysE9yUidV?MN8jK%b@ zhP)k0?m6-wvQy3nU;SZR??2EfFe|&{dDydEU})Wje&adlC&~2ROqgYap{8GE#yY_| z*LKHFI!l71P~UaWnc@7?dDGF!kz(&jCXMmLe#|>AK?yer zuC9;DINa%DkRsX_o#qOXPdtGA=zTaV)HIYYR3+3kbSm^1J++w7y5PKE?$B>xXXF^} zC9L2JbJ)Lz)} z(s97~!qp{;i|Xv^=&bGB=V;@YY0q!_W~peNiOPcFy0U|zLU}-LfNtauVj42lPQg#o z1EiO}nhW|iyY>at=lSS?9m5&5up~yp=z;YNw*W8wH1@OD5Em*GY7u%6a)cX&=OPWH zcSI1IqlU19lKO8XpEyFiDaPZ(k_p=APuUFJd26B&lx&wNhVilY`PHVjmj1XKD%!u; z-#HY=8%Gk9ID_n^>}%~+?di4^)=TDhc&|R33C}UZkWp6+>6$gE2V_a8dI}>^Xbxt% z^PtmAgr{??vK9`;+u{lkExGVH%q%vC`i5GCMum=oPG}E@Lb2i5VIzDr(j2744w#|t zm8PK2u?^az8~C@jP}`J{$0-i&h<+S|=V7Q4i!gb)%0i~;yoIpE+B-VxIFnt!yS_ME zJNG)4IHDXM?KSNsZL+0|d5XaB>FhG54c!ZLj3!V}d_uC?cPKb-A>DT_)>uV-0gcyB z#g9AoZ_qIT~c8wGQLyV*bZD!3q2H>`y9$YwDWd*xfq zn@)gq{YqRU#VT*rB;>13C)-j2-GkZ4?&gP@x?9q0z3gioW1S6MitCZZt7aWgWtyj!xCR#}10O+)Ay6tfd-IKbD7d2?8%PT4JL{QAzil-yT!vY8~D}r4>SzQ&p8uSN$2J3|a z=!Ni@tTu{lh_n#xSf4l$Jj=?eH)B!YCC9?E|3H0`s`Lz&4bPLEPhK{TYvj0 zM{OtNoak7Cb+op;3@Ix&}S9@dF6dn+25}X#;=r8R@&(%NQ|HNN5uq^O1Fgf@oxF%Er&vjv>3=9*) zn6Hn=sCPg%BDGi*2QymOj!p0m2MqN4zw=EZnI zy4Yq~Z<*Vfe)6Swif@gX^Ht^mT$xdD5Dz2^ViH%>D5$@Kns$WJPp%{Fz&o22iVjT- zt`Ecn3iz{qKYjWA`~5=TRv;>PG&n6pg$qVTMoNPd8Ve=F2dN%9*8j*2pdh^n1zuqy zKeAod(TA7^T!i0d$}m5$%(AV=8k6ii?5N>rZl7a+YkOx~VOwf_h571Lp)u$-4z3uh zBJVSYenpqVH0ctQi)NxE)|fU>i(FSW%1x!6ku~93q4Z#S;DdjPKZ3N8>i)_8eSRvi zIS_|u;Xr6qxK-oANCSB%}t528RVE`>*&$_{RGfytBN4Re=wI`N7tq`0%fA8d6dIgopMv z{FP}qVHDLSqhGdz_(0a9zcL-ThC*jk&|KIWW1D4f?U?9%<^1GKcjj?+bxv^Pb2PF` zR*Q9!d828daFh3Q*VzK>d#Iai^k2|1Cd0iy70Johk==Sh=_s3}jgddYgF`cduLGO> z&wMp}Yrz694LejUQ}yEaH1ayKhqHTu^1Cs5^57X7$_C^(?7v?z#HSe;W_TP?y-3fdDDEKe24s3 z0$+kE$VHWrf<0U8E!C0NVWQa)?(Yr6N76;#XBu;f!V=R{^K|P1+iQEW({LVgU3RT= z$b08P?o9{^l`=vVjKB|+R60hnhWbpyUo8WFRiug z2f-HJ=Q`w?^$Qv;@st^VW({8E$_{B%#%$&gbMsv7J01r%qF9!XChu8<+q?Z zUFi-=`=ZFUkb(Cy7P%XTe0h8iJV~B$?w0P}?#J#*%08SC?TOXn;g(3j1SiXaQQl?NJr?(Qtdjk>c{Wevj%F<#C;K9e1hDMcB{R+n?KN z*zkr@lLAkfMJA6G@Ebzs*$ydhr%{$gx$1}m5 znUkI~JLh9gBllkS1tUE0|%sycd|CWVU87z=Y z?1S}-?(|L?xL-fG^yNDY{e+<<28Iqtjeik@oT`o05xBaj{aN}J&0t8=yrqA*H8Bu<;Xo$i0;g0b5^00sS%QDINN;tTgPH&5!WBC6c^{Z<6Q0h z-FedS*PPefn?;6)HU>KRSK#XW z<=yIe?JnrvmNPwPbk4mT+P%oV!gIo#$KN|}CU`!yH@qz}SbQW|ltXGyJ=0i0?x*T8 z6WO<@6$Y9vn0Ht-Yc=~I#~NpX>l|JuT|04CC%XnXWk*xT7Oa(xQ8z5J^fDJQZRY25 zW@x1{s8!@-;yEVR&y*7KH1SZlWN1=gxWBEhyZ54JpSz@cUQYR(Tsc|U#d1pJ+{l^Y z9_G2{eS^++nPC0UpzyGWPqe`)*+rA|=R^w%&TzIpe_6O{lFfH4Rc(V%W9@S0a-DGP zc0G1&z%_dB%yDdUX!fP{*7ixZpVlpwdFZA*;vaE+*m+E2Iya>e1He=nqI%>)Qq9QC zP*Si^!0a#Q>*H~`q zBN|az^dIP1e&k;XPV*OZY~pNIdmO4!+F8h1-kHm}!!gJ4%f1}v@SE7--dbB&Yoo5J zWCFbmcThG|Z+ED}Pu8&2=r; zEQ0kf>nQ6uYfEc+Yc4EzvDSyk=Si`QGlxu7P1}Xfd~WF5`migR4d|P%B)gzTc~YCI zmQiBlOz{Oe$iYyh(Cna$K6QK`1N-bjzv}-hkRR3YL#)v=BmanLQcEPpFzQeB6c|v; zkayXPWT`{Y9Ic@Zx;yg{sYd%)14#h)xbpla{tnN=w~<$ggzV^tO@Rks za@dOA!wj*Pln04RkCYYAW4ge?X<}sI9d!neD1?ltZ&YV`Ff^IZXcpSk^UMh*m2JRo zX1^e3p)J>x8^B%Rmf`31Tsri50qzvni~GhNVOy~sm~r%Ks91|poyp@yx>k!AM_V;> z_@4MkT`N}s1)2n#@&ZWgO;DljLt@b!aSl{^5$LSWX-jZ+j)BT~ERsH_84^-GyAcb> zSZJVLKvkX%Zpbt8JefiMjtprEeee}HRTQH8P%S_$Es7)umAZ(Or5f~8Y7_MND)PWv z(EG?VVklImv%sr42JLb-{9bi5FIWNjwU_#N<%&jwp6kR^tpl+|DI+a06ml%Q4NEY; zSgkvyX4-gmx;jUCg+%5-DuLN%n!bl#rM5Mm(S7yR#%!`Lkwi5oQjCjqXYwBLgqjb> zWLNO1?o&%?|9^xTHb2vixI(4Ut=aG7EA2mq?j+1Qk5KCfaNV(^i0TCWn!?)L(Rjd!f`Yy3>`2(#&4)hkHt`lj7gDW`Q<&H@Sl@ zpv_jCOgqvmmoW}AKE0JPmOMyTSNm)CsrAM<{kaD3EcI4u2pUnEaX?*XWD*gr0o_K7 zGA5bFOAP~G?eC34p*&n+^)S~-TPA(x+tPC)qm0ky*7^bQGgcA!tjI<9{LWC%z&IMt zmkpg{p7C)~BVsx?Sc+$_>5HZOQ7+Fq{i}6?wkcBUKl-E6#3;iIRY&R^JxV_aX8de& zC?6X-9`VQcg1dvcY*VE+KW6)96KV zS92V@-oK5Gajgl~jr@!$uJ}Zm?n_=0K7}c*lavW{Ah zY@<&RKRYr!tM#u=@#kb*?_%m!X$pOsuu2n|usU4XZY<&^MP$7i>DN=(dx00MkGm3P zv^ead6FmvcV6%ql!(l1ac984tYpZvNHiACgN1rl^^1k33qq#Yb-}moP^A39;aEIz2 zv709`CzOYQA=Y;GNg2KAcS&tL$-%;|^~Q0!dT^AoBsGs`Twp@fDdRY?Bq$s864rVK z<>X48Eq?ce?a#F_Vi7WrI?-fEFTKmGyHtkUE6)tAv{B5}pTDy?QT2Z|$dbWJWFp>2gZ-QwN%GpCtq(1o@3lF02eEXNUko?;JFe`teo4NJVFElaN3Kb&8 zS?^|lW!^{YSxL(H=oQ{eR5SbHZ#QkXUCT43O3m{f%)FI-FITI`Hg_X)e$#MIE&Z(R zOK_eZO%iksZB|IIpCeOpCi5K~o3gjFt*CM8E(=lp4=8IlMY#d!aGu!lEjk|!4o8CkO0Aw z5FkN={eWPB;1DzkE4IVrsxH}x2+wQH)%=_)*|K5Jic4vC3tDbtQx@Wq2srB^h zuVWI-y)trRKJ$lVCss(d9eNj?#53)V&$PANr=q_Mc1}ANzgy~+wI}kF=Ydifwfapb z-KoTqZ>MPT!=`5MG#m}7R?ybhz#0+Us>b^w)hI(%UlmRL;PgPWu~uNZ^iyE4QY-wF zEz(~#Ho@M(e>R-E^zORao#yFMch{akpZK2&pXcp}tE#EzI-myhEwp9*C6zu_)%ns_ zDLT{LzVKOScWJ)snWdMv&^OTpNz`O7zRgl)lqHEvy~=UuN;p zvwCx8Ma#gjb&fYVGl~yUtLEfd!*o5}i-I)`uhgG{lYJL8Eka7={v)@Ey_+}QaXg`e zXGZSX*yjF|?q#9NT&3h+EN>iMbynCu=f&XXq1M86Ca>n9XOuS5G~cr|urc;b=1ASW zh_CYAn{wr4j!EVr)~xItWp{WhUx*a6jU?}#kljJk-!e4tO~JN^F5Yr}oxX?rNJw^W z6~m#h*owuSsfY+N=EN?d!Z!;*>WbeSXwh-KJoR!VFz6Yem~# z(R!)j%n(2NW{?AGaCyQ>?n=)aYk=LgN<#V0&sf6ihzpOp=-9l9dDS?qpw z{HxfMdg`plZ%Z{d=ci@r_C>C?-&gusO$EPOLoFxLQ!GtFU)nOgPooXKv-t-sd6vok zo4K9B>uTpZkA$qtRgD9zHF7tbzw`GstZ)`eOG2v@yz`!qp6QEE`?*4D)@Ql7m69`x z6+A9E-E%hoN!%gFi^3Z50~|+PH$yzktd=xM=-9bfYsm#{CrX+k1oLk6)KHAdpn7QSRqzIpb4Z|NN$rzp72&-A(@26Oq2G z__s=ryxL(k4A-;Gmhbi7J06%H1*W^3YOY3oo|Eh-pZMN(&(%IO-Z9nm&T#*Ie`{tb z-$RSPFlATXe>rQyCWQBWJ1w?&$hCV1%H9Zl^ypdqK3(RUm?Vce^HyA`_?WIw7sZ+U zM%VYzHb=T^d`z6<@h-G4)t|G5cw_8C!p@q0P9JJnAJQSu zr!Or%(bQEG=dG}f!98}Z`I2e0t-sPKqMhr4??25t%Z)(YyhCBrtylAF_-}^qRtMR` zsa|HczqH)-4Uk)y&e(@(ZiTIOe&zf#&f+hT-Kbbe-GAv(p>r+M@^5G_hUVtw>rNSC zS&7|F@@QL1?WhSkUmKzLb%n0|@_9=&`z`g2akJXMb2u1fUFC1)d!Xqke;l-EZ@ODs zt_GjyAC8;jiFU6y?vpC`&&uB!-0WT0#I zVFh!l8q+fJq?BHn2fbBeE;`yP`z@CW*6OVhy)u(EH$%UoK22FEO}|O1RM_3@GuO!; zr74Ws;e6m&V5y~Z1XJA+8aY(!s_ptZF4^_H?Rs3E&zW~MYE$5qtG-bQ*3|u4xHn|6 zy2aK#{I`I~rCR>>K2n#P4`*DCYHh5Uc0074A<|h_bI{Pm_EXrw;Ai&Bar&H=##?4j z_QBW}_S62c(R=ec8+L0>dCFUw1Pa`*L+bli`##sZv{eFMx{|^>`1VS>114WEZg9?S z|M#(9=U0=vn|}4xm77z?&!u~=*=?5$$3s^X{2rJaJqr>h5cQ_)$#=Cx!7Fm6^6^|1aLhOM zl(U?N%oa_)^GA8Lu>n){^@5f4Pqf$aWlOgHiG3Y)oEpgce1_mv;{$bt$0b!Y=26jW zlHMk@_LtOn8N-iPYbY(Xlceh0JsxlPPWjTmQC~JNPOhb$=a)2#)V|UZ`GtS0d_=P_ z&|kf++rfJ9bE;myO^FQ*)tnAKH`Vv%`r3s&_57loH171K`p1M!_59&a4k>VK*JK*L zb01TWTjo1PDK)~zIZCQs^^*dB%Js<1C05FXdx~i*8PXj8>Rub3IV)&-8uq*A>8+X} z?lBfiz~NtSHhE74=2&m|2RTcG{j9FGTf(A(H=Si74md{!#)ZGkU!#2yb|$B%c0^dm z!jWokLp$mc_SSUq&0;3CXMx?c*K#L!wY)a`l>M{7?y%E^4b_#_bbB$K*|@Rbg4u8U zFKe+y4(XYB*8JYOHY>&ao5htg*7BF(PHySYLc_}J!jMiTPv-Aor%YdEcD3BHHqU#i zt8eLT|5CTa^e@}`4cC@;7ns+}g9|;z`v%o@L}S*(2aoFBs^5ES=yw`+I11#smZt6z zN@smNWiC}7&ID%5lQg@1O>_gKg`O#fKAP^H3aml=SQ*2r`7Cy_U!k9+^z^UddC~ur zC4mZ>Z@DivS}GOXNv)}1u#}XgnGkd+b9MQ?UfKszU;lNjRWmD~*DPaJ)~74OylfBs zHT9JLd;Rs`^59hcD)p_etEPtj3!Xeoq*CcdDcd(edaZvLs2E%%|DxHU_=D@z650%P zNno4CsoYj3Xjs*tM5%vrXJ%?(tXiNU3i>Z=Bh^=dHIhU2vQy%H`A7AlbTjyu{Dt&; zV23_6SlYkcxJ^3lt*X7Mof^EPHjv{r8`LJj1DY(2U0EEwDlgDU0i*m_s|)1GJ+zwO zEp-x}GL0uv#wxa84ebW$f5AMpJec!wAEOCt0k*SV?VLtb=sPb>k(#lpwi2t&XGwas zrqnFBji>K+2jVpClqu?A&EY`0x?YnJD5hp=)0DpgM|m>jtg?a{UT@^pWG^>Z9oHaW zmd5HHvi|qBR8o^HB`7VJWlxs>3x-Ms+RfApxy`D9TdaHSuO8JLRI3J$@LWb5wK8wY z!&tkilUWO>ERtuaw%|+Y6P_n5V7JjqUlAi01l>;}zkIW%~MszWo?HtGavsWeYn zLRB~eb;3HazQeAR8;p_9X?ilI@2~k5zfEGTuvMz5o>rSuak?d|U2 z>s6OYR4|n)NX6BaYA98LcPo9>m(()dqpnb|NI$Y#ps%!CeIPYgTcCx%*~KG02f zkA9gaKz|GRsOi&99l)Ag6T8k8XMMv7o&!BCg-G8jm(j&WR`v|$+32CHQuu=kcP)5& zJYO2Du9kePns!K&q?gJ!tZYtG-0FV01pVD8Pga+zPvt09bClF{QwK_$<;}_>NvFBV zDyQ<=8cLcHsqI50sv}g<8peHvhLTnB$`6%(Y8lxde9hYbl|0QD;OU}t<*mG$^%6Iz z0yGaPFROK=7itsuE=8Kix(%NsQHScJ{6ujppKCf&jYrlLsDqgQYKtY`N?TOBv=z&p z=UKi`$)#+QU9f4QG+us9&4AI=m&#SnvGU^=DN6c6=_Vg%HFy+zYiwotkD~?aOm?Bq>)gTG&N|5M%&vULI^(_AU@H~EFG$r{4_!jOO8tqRvW8Xrzu-OR z>FuY|3^X)GeGe+jsXyS$eblkaYo0v%Px+j-T2bfuZ+fr=)_TkxpRcHjbe%osoXR9Q zo+k^Avy$)zwYX1kPd%G{m8Ylk)E-iA>M|c@9mgCjxQ*VfSJ zQ@ur9>||CLk6{(?R^=7*L1F5A{2`q6AbH4fAMbXsQ%EO%uA(ZzQr06I)pY8l9Z)B# z$C+bUO;!Fo9NUxn8yWmO&(pY_)N<&p6Km!t<54fr_i^_Ac+Z-ceNwnOLEfp>Q$Ll< zNfTHzK3M(_KkFk`#Ctl@dIop1U!d#r(h^pP8Q34<3uzc=e22y7^8|Cgq^Lcy*B&)a z8jUyQfcp8^>8;rF6FV)FbjUZI=Ptg32`WoFR0B^!4`G$WMV- z)cx?tdUX?P#*VUPe<3!_RxIp{*irqO3hc+JuyBcIrMA$6XizkpHJf#$-{Fh;$n_~2 zouannxS!Y~WFGG|mVQP0#@H~D{dViiok845R%pkvvb-w&xD66&QjdMNdWn_tZ|KWI zDz!CW?M@}t1+!GZs{g6fsia4FJh%1$-q1@A@X?9t5!R4gQ%&&A1nC;pA)867sTmxK zW)?L}BXf}8r31iHXuBwMr7xG$ZX_-`3ss+Dp zfz!(K^OYJet)%~t)wM8MV`-=~N0nLSr{zifleBXXMD|9O5oo}nHj>V;jMpPj-XBweo-Pn}jXS(yyOb>oOmC>ro}V0zUS; zx}W{)Phf>X9ATy=$sTDj|7WVBq+;?%>QS|&9DwJBu_8T_x!A{Grjhgo-qH=0twoPI zWBVT5Z(6SAO8u#8zn7=yUnmrMrboj$KT5hlrPaASef0@zXPVIS<+OHRmFQD%DULel zv?;`Y&or%$N3KzsuAOXrXSRX6X+2 zyF1n8o`bFGoVOYurRFyrJYKEH(<6)EjZ0K9xyF4=_Do^*b9=mJvh=ZffF~=4vRZpM zSKLNDj85RcKD_>zY4zllb3fxl@$(P`B7AiSJur8n*&-$dPUhq|my#Zc>s^9Uq zZTR+SR;|^gCZyoM&FsvODxJg*m8pi(68|0tu6C;X)LdH7NQaa|#G?f2Ka6Cx=mqsQ zcrS;)jsv47sR!8u-%kO%8>zk77TEL&*hcM+ zSm_`vR$hvy4(utaH++dFMBwYI(aSPo;#t_MC+j+=Bjp_F3f{4b`aqlUou$n6yVd_m zCMk&u7$YS+HW>xaH|1Hb#O*gZuEQb1u|5HDf zhcnN97(}v@1-mdDffGU`Kg^lU^P~~@a2S|PqsB*Ny!{Xyc@E!Q0JrIBAqdv1AzvQ6 zx(Ez(rMCQ5`kE~5B+po;YN;s@f!-cd-KM>CPU?aGg~;vk;Qb)(HI>r8!b@YQnh?$2 z3PyTYL%KpF83#fJNO#q-$j}Z(sRc{!!Pky~n6~g{2C+l*^bWm0uVzqHqc_Yu5WkIt zfp)U9L=5_UOx3to93M*Gzrzn>sSNT24;nx`I}9ElA$6uS0{=hGS$DBaZ>p6^;J~Xc zVGiC+tS=>b)saZL7-ag%c=nJl&4Q<0YCp6TCJj};!ADPVy?tmm3?yBkt$?x#YrLlZ z{Uv0c34gcc94#F1mep)7s+JuBo0qWOBXy5j75nu9^Ovbu(UIrd(y0Tqn^jQvkRw!1 zBFapWoKio@2_J2N@4CZN%RtfuTFQi#521k^a?2z9#hLhhXITCLb%FD#589k)`X{-{ zb@bDWT|g=$*<|iCG)F6=@cahoXDeCW_v#?*ca#=CrC*ILSqb!-2I)5cL{WHM~~oShersQ+R$GyGH%X7*Fxp%t0h zPIV2}uSY9i6ASmj(lYe8S?w;Uo`T%tbzmug?? z&BU++$sIU+D{S#2-uo3bao!Ti)=9DQFK|dZ+Sm>PtJCv3#FY>@H5W!6##4iRSP{|` z+4Aw_<^M$hyIh0={&2Yt77R#tT*2R zrx?gHBxyUC?oCyj+hA@c`EqsQ&SAXoBE0b&8!LQ=ur~cL+I)mf{*mgF+m(YmT7r&s zs*x%-$Jh}jfc@UFMsqa?Pa-zBkaClB0Kbr7-g{KvX-UrV4ZS%J$DEQ9iF=J;yD>0w zGBvhZVcit6lLAHy3fjNMd&_7oiQ_`3XY`5s2nJZd*ht891MDB+{lQ3|iw_nfGUOtA zz8b{yy1|2=ql2epNZ;_;3o!KtmcI^TRpENQ;J{I|yA6azl8+1rH7&5qL*nxt@H!9% z-(JMw%iy$CXrl%=t4uU$N0fL?1)3l=q*|iGGces_Fx(i#w?spIh|z^)e-+W~OC^Op z6)M4jEnxRL)N+{(a?hzj>QR(alc+CVpjKgLj!}$%meGevRBURgE}*7Oy7WIP9i<9x zLwiB|FoUWt^Q1qhm$gnFPyD~7_Q1!JSPK|JM2_VSY9ziGV84siJohr19H1IwoHndZ zPD1W9>W+S^KBNkhn|iZO3^?jrt?CplZr3sFgC4>zv_^X9w^zg`EhOQ|qd(+@37&NA|M# zgHhd3Y!VIbPQg;Yu~WhZWfe7UBJjoC+o)hPqq1%zeUv(r_yG*CdCsfyd>H z*tRJnSj=^o`_0Yp+wY}T)Rt~eE*!?*9TkZE^W=-zNJR3p1IlI(Rg zp7k2vi$#k*JmpXJ1R2f~+$O33C3DTqc))43E0$P6K2|~PMAhl-f=b`(?cuFOHhQcjTWIR{MDNJC^BJU)RsLQiDe&r0z zF`JRX9&*RWMD<6o+NX>^Zjm=dz-2qgG#g{}P@Y=*9)5VhcyACHKuL1X0vJC`Tn`?* z2ex;@d$-ZVTeQ;*O;_WLi}2(qBHsvjJ!t^h=6-r{klwum&9BG?+Y+1lv3u88-gWTg`BHMSrFdl_8IGAzLw{KHD0Fw&5>R76-e<3Zze=CFcOnhk+Jn)uhXU-t~0@Xm}0XisA zE%lJ+WAR7u&Cm3&GjaH9B;O}ZWpAF3@PxheE)BbMC%d=-&$NND-He^SK;A~=6Ls;V z14Np#M7c&VKnyx+f=SNs^zsY8-w3q5^ZmJG` z1};r#Rb&xQ@xeR9i#Ajh>qq3QMAp!dnTw+!HvyUcVAcB?WY~g4yII$JUb%_x_e)y# zhwCdp<>)jj5By1W%w?^3=+z5vSn#ru%uMOX zo;$!?cZmNt(DQW|R0h{c$ZQ1RS~NXa-2e|~s~+Ah4i_)R&l4n%ItdmTMNB=6|0cuZ zF0wJa5~KvNgQ5zY_Xm8J)oi`dQDYtl2w!jL~bd_M~aiDq^b}UaVJy6a_-~c&>#3*tN?S&x! z1!|jF@xOBL%n(qW#jH^cWGNy4iHCH-zv@wME)Hq-lAVqwhPEb~-9vBQp_ztYs|k3y zEgj>!weZrOM22-#Ajnpj`Nk@z$cbhUO}|rH(d(n|Zd-JaEdMT_z(;$kvFt0ANd`9x zO`gSjjO3_OKy5Zs#?hPcczLQ6DSwaTKjK;K@bEj*A;xEAk#djJ2|XN!34eh38iK7J zaQ+tf>~obFOy)Lbk(KYnbKj6@cSo}cd=dxC9Re>;)R*KXb9iq08px}Q+@-K^6f*w< z$35Zta~M`Fxj4dwV@BKh|Z1CO(*`V z#rxCYw9Rm3Q+zCqY${cjwGZ-zkv~~DdodCEEa=fN3)T^A zK45e)4qvW_XEecAcfwquY8|*tQ9mP>Im(PdGkUq1anlLqF6;A?z+^T&dV;LHvg~D+ zAxUM{1C75XkLpf7^n{AD-!SqE#pk|cCU6Hb{R}G7$!kQ+TFH9%yGn1kr;c<{^3ne( zFvv(e*~L{QvV^8Y?`tqkOLBt=`0&@vDyAy0@PSR>{VIBRLu~F(lw1uLpC%(Sk#*;j zsZFPU-IxQ3XCx7gUMIo(z1b11JUg|t2f<~Dw~ZKaHDvtol=0kS<^Uw=KM?RAW4e1V zX+`ANg9V4v%U;CsHe_qnSaZ`CHff8`lp`-mRo*BAxT?ZT;cAffCw_E+>Tw>W3}e^@ z==XofFoQOWlcWBizQ)_*Vfig&u;H-VEM!@Zc1lxkZUxcpG*{dt{Q_s@l7kNhA!+bM z4tD-W@}SX9j9jH1dkk#YjdA;yZerj=ei@)e(%8 zPa;huQDhFUCFtM;5i*RC=u)&b3r#g*L{^F@a0tBgWbXY1na9_R%DcmOql=KS8!Pq0 z12<#;<*-IAG}MTnIpG zi$3*)C(;?M&Xl65K6x2*^i=;r1p21ltNh@@gjmudF}gYqgATyUx?=Mdu*{!W zx`LQP#&R+qJprlg$W_SIEO@YsoOK3Al_jev0}j5VCyPO|1m}MW!@k6aI)eJXSJ3;R&kOD|6*_IoS@*DS zDf;jp#>!v}d>8~=q>uS%d<9#uZcqrC*Mo`4%<Fvzl3dOgRAk#REzUoGoG5veAg%tB#!IM*e9O&WR=}m%S=1N zVTzAH(QFX@89w|a-_z0E6ExQlPkf18>eJF)BupcYHX#DMAVYe_x5#)KlBrGuN4@YB z56miI)%zTghHRnOO)%RC_#~4#CpW!a%=Z;E^)Y&=!8xVj>JyC2W-)f!i3RS!!_)(T zmjlc%bcNeS@##B!ei7NlCaxAkW_gV3`L+Vy{MxXy;-!D0O4eZg3nDdY; zo&yazXg>uFOd^-9OpbE~4?2y9jl<6SXs-c&(F~+SG8#Tgthfx1$AYG>>DvHMA46sl z0}`!VttT3u4WISI+ba@b?$E|@FgpO=>VpME>{|_&O(ve&x!?Adh~J;Ng_X!Ro_CkS z_~k(Rbo{hCe4Ix{xq@ExA#TLd@+tJtpHbB+kWiU^rH~Wd;ZEFbMh2JQt~cnoFE+VI zh87Jwti$TR^L`%J{TlAOgJ)KTXHGK8+Qj>Ay!uD3kdCJ~VB*>^$pa+b4lAC9ZM))U zJ@JuG`6~ghzf6{>X9ltgXI_Loy!5Rl5w8vrVFP+Q2-DfH|9dhC7r8_ky!H{-l!zi1 znXP$^bz0C~Em~-U)!x$M?jZCiM|+9=jcB_*Sd4{x^0`t;;+ui7{-dH#%Oc}r(0l@` zZ9`jYxlRLcI+;xP8UCx`^UHkxhOzE+#$g?q^AY!a^57j0`b$R6T4?(>^8NjIxf7=K z!IKqeV=A7(e#oHH!F9d(wvWuTCb$@aWz&hbN3haTG*}mI8w=h?(1T{grhKlrh|f*f zSM*rS|0dCks_0AH_wk@tCn$?1x>o}ue%ekh8gKp0$bLPnTm@VA<+~*LkPi)tOh`*B zRcXH$?3KW1WDfoDr?~G3Wmb+kFmO|AF-y(zjN;S`&{Zt8HPNVX#&LwpmZ! z_X|3bmtisSM<&;Zr$W9$FHf;m7b3)HuAL7y)?(2MXx|ObC!@RO z^pROn&~c93=^=3{19>GzVltUVO>okX`IR`bi@h+$dSbyYj*9>z5u7RJ#e_D>73DL% zk*zXP#h{a3cxHV#D~5YWWzcChx^IGpXCP<8q8Z&hWV=UOZ_#8ScFRKFp|sSBes`f4 zEkIKQx@OmMEPfwbt>ujOpzb&Nyd8v#*}X)rPz-$4!JAXz{YRk81`qy%oR>J>hIUSY z3oWs%9a7DP@$SQsA90q%yzz5%>cvA_5`6}6&DQw+ZG3b-+;f=GY-iYO6o@H9WW2y= zIF$T8627|5XDvD7OGa-4XlW(0R6U8+=g~$}*mEWR-i~~4AfwBRik+Dd@qE)4d@>K_ zD9MO+s@fYn37>2LuU+FAsZ%h)3%H~g{wwBr#&9P-mGQ=DbaDktPhfUPaNbZ5uniWN z4USL40-Cbwhx1nkim`6S}rMSA}|ezXE+5m9RxeIJMw z+ZT;Je*?>pu%DPu6!*}}A!!U*z&^NrGl=QK8D9`re&V$j>%Il`--4!!Fz5e>HJh1J z7=l-vr%xL}WE8$N038lMY7Y^9CikTVA=yRx6-GX>8awXd+#rbBfsU8KJp1{y2AZpf zWOeY^Yxw0D?#YYiBCOzlAyMrIv|5arls&NNF;ILPnd|c25-`*i)I^YbKgTx5dEF=a z2+nBAoPmMEUd%h+tKP)SVhc4=EMBM z;GF(M&C4K5N6ViRO~2;cn=sd4de|4epM&8)#{(9jm!^!EE-?Z*2;;sdUlL=PSTJS_w9}mS4e-_>Q1BzK#pqBx8&I9Lu7a2?c))q| zkpL_0!gDrbA@KxMDz95;`#K!i626*8mbC>N{s0$*5|1Ajag2=2FW|4Icn5Xdi7`R$ zB{b&B4e6B?TT56%fgODyItT0AM%%~8gI~hPt?=Q`(0FZRjKMmW;kJ21&NbL#JPa@s zsWZtSyW^efnBx^}U!6F2kzD2sww7SC*64gLnyP~iAChI-c??b4ucy-H3Cu=+i{7D)O8#GMZ3+$}r(AqTXt9r0MA94mP(F>!QG42tM*24c~$Z zR7PKQz(*T?n$dumFM2@#BI);V_-H2beuA9}kmfMg{vLeo=jzvxEtk1~LUeW;9c&=q zJBh_a4+SI6$KR^akDFNY6h3>FV@raYzC^`dAhI_75&ABmg#!56gO9|)3L-Mx1qIjO zg>2qS;n;p;I3E#*Y7k{b4(EnpGC`NvvF1Fl3-m6F_RV;06Hw9|E)wkW013U=rWkfB zh4(}iu~!hR7U%B({HLeS5-fS29xUax2`k+LwL18`1-V%ldeee_RKmMbIESYqkWWOo zOmt@gcV$3GBWxauDs zJIU2Aq7MlU&|#rc$Sj`oJd5}31E0CH6^o}dBx9E1<`P zHZ-ξ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Μ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 hio%tFqPhf1S`LV`z@ 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 t;n4aPOqsNBoIFTew9Xt{2rkF5fC^MlH`vs* z9G||IBSoMVS}Vwb*!Kf>qkkdDkcXx0TbpxPP2oS1EVk*dctNdqrWG0yIM+Ig{nN zTtdb*)E_cKZ}ArRl=C6XYa?ne*kRu|7xcK?BQD)Jxar%WXi^k@( zt<;}ugx_F2Dk&eu$+qB-;}_y-H{hioMA?lBVV1m1m|di~{aM;u>)u7ZybO#e-FwX$j@OufOd~Qa8ZL;IcpeJkAERWXb^R3lr7W#K}@r6;0`uJ zU!)#)^s5j`+=_jJg|y2oL_}RB1pfOB#m(eczcGxvF(c?*_zOxOhY{;KLNl9x@S=QQ z{!MzHO&rG(9|<%0B4IX4+3+^X4h=MpX9Vopn%9 z>(_{uBNqOBi1qj9 z!Yi*5P0|ahhE@@;_f}YTZwYgLMWyd6@u|Jw*vw~qcB!CT?yhdhWptIj(ocCGtIK=6 ztM`AHc6`S*$KRw5tD$z=R7)KjSwsDrTT`tZTvM%ix0Y(sSW7)NTTAUB9&;y+I%-vN z9W~BWSDkmajvD={w)*R2ZB@TgM^%b+)oa4P-x*Oyt=KI&0&Q!nqoO3c;+~e8b*hxU z@fn!pc~UcaE$?qH=S-vx*L~f1@%=RY##oU3PPn@LEHM<_#lbMiCz|I(+fio;-z$tq zKOa)f{4f|8z}h(>BrOPKfmJAX$6b&t^7E2s7|Mel0m9k!qg2D2&(R)qA1YqeR{`R0 z3dF}YkX9K%+-@P7j8_qK6Mf5|(ss<3)9Sy7gWPQ28L8Cew0mW)KFe11tS zDm+v`r_2IjbX_H5St08;3ir9)UG^{ikHcf%p?~}z2ZSk}Yg${Ktq4zNeQmWtsW9tP zG}T%4wN<0~I_lnkI%;YM9W{M{u6nLOPYrIbuMTRgtJ?k6QLW^;9qDDDUO!@}wz^`V zCRf%`oBU6!WcHK04c>8Z_-AyMN$#ZVBk%SJp=*RCy5~i^mu$=Sb{>)=D)%ExYjj`9 zo$SaV7U}Irf7c$)XznKV@OExS?`KB0V~o0ChD))z)aH}Ix3gx>b4wz!#7lDIq_9`a zFtOf6%Edicj@*N-_YRKL-h$2hJroum;ZAD{uA7~tQ62ev_iUK|@+`yrUAVB>Tk_xh zS?(lkz*_$Nj20IDH}P*dN?vbd2zsqzq}C^6=cLeGxGo)2N|^Di0)|Vrb;Ns|8vkK< zNAcv3sI4{ z&6V6-nZ^ISL(%%DEd1{|b2L6tG4>xX2h~z{;84f#_r zfXjcyqj_-v*A}&vey~5i+btw?n)vZ{tmntJWxVXUPM-529{+cO4My99Z7wXg$1_>j zZ5cb?EWu{&dj*ePeM>QE-N4@W*qwc&S*#ax8seT#nNzZ=DhH&9p+_}M?@O0MA4aRZGNTzoB ztep4lDEIr#7`)w1)ACT*BW z!(08)vzo>p4>JsB+K@Y70c&5kBdbL};%jc=@W(CK70hP4&0@(3IL!}DKhbZ?`}M(z z;G6(fSA~n#%bzhH0%%et`6))?;}>SsjwmnjtP000CYVu^qah-h{6qOTy)R}+(mm<@ zD)3q<`J-)xfB)y1u+d+!-t;53Lw|_g=LapKzcD`G8)mzHFuCHp?BIUjR{E1XufMDn z?tM$$8fv|dwbawyHPt=4YN?+m)>4BbHPyIH+Un0s@|`!)QEO}IsCorjs+(wC?M7;- zmk$2mi|KdqdKR;-p|Bor2hrs0VCMOhC<`{WqqX>R(n3ygq`X2Bq3VdwLT#*Afj zII@#lgPPNzi;Z&Y?iZz1-TjP^UUB2v+2TJkWY4*d^!Q-L!TGMj;9Wt0X>GY{)ZyN( zMN}3ZVu||_tX(ECwx)Pkrb*rC>qGKMTej%=l9_a#e}CQ3s^P@5aN$3l@gy_O4wC_X zOyBK`#pf`N9~2&TYeh61H)$;1pUSIGxY}IuTz|gg)PgD=On8as_}46{`%xH+(zi$r z`Pf_DKhga9$otl4S9R4}x0-5E{*SZq8tMhn@D`hDsxDu&gzu)Mdc3Wr>YkEX?Wm=u zCyM`QpRPKvovvDxrlZC?XscswwbU=4HPxM#()SohUB6kzM?E+>O)?|RMziT_ma;sq zK4Tr6Niep@_*-MPKB%G0E}o?PnY)UD87FZVHGr?RW-1=q){1YZsXXU~Xg@)N47BA8L1N#C+T_-$j%YO24)o3LPo^e@7M zSXoqCowG+rZTzRUI(N8^`qR0N+WcA_H9}KYjUA(}4me?;jr*>@9_2TmH)_IKb+2X}I(^dWCR4Q0`o8cN5X@~l)F zt~6dqSf2>xZPqO1NQb&O+Dg7z{nI=?)Qx`muawi`3t8tD#L-wUo)%4I`Jp7`giSTk z9?H2lRCdt)XA46}hYNa*xm~rE1Fd&6;{7ZxmTthRr6cw&H_qo7Hbb=Yce%R!7F|r=kaqqVb-X|FMc7npHdawpUP0OK~4bG9$9O5H<1y(`s!bQS+Ws@Vu9j+5LgyP`sB- zy3W{#7~`p3gMb(9DedQu?aWZ|U|I0=o(?%_dcv?=#k!^9<^8&mKu^(soqegiJ=%dM zw~GB)4-=sX%$0Iql>EGv#|c#>|1>v2bac`; zG!}ouy&IIhE+M+>HJS-i=*6w8Om0~r9{!&cHxrHcetCXNQSGv& z_tO^s!y(Co+91906n$08S6>}+USI9kO<#R#uCLC!A@7;Hp?bPWJvC=jJvCMMfW|fJ zsZ)dtSXoV1b^cHIO|s{X9+pX3Tqygi8B?(}Sn=LepcqG6;B(WJ&smkWFChT4dJyR{hb#14(gG2HkfUg*qG zSlKsby`72d*8Hi=w&(fTk#rhRkBN?BXeqw)N!pzV63^V$CvEsOYYfACyi=kdKT&!- zokYce<~*b(7xv9XzkLr5HC)I~_ia25H>D5{GR2oUZB!688%3909z>hBUQ|X#@%UJp z`0mQtDxQ%s*S;}DxW!|HDU{h%TeX)A8NJ1t>efe^>YeJf|DP%JJxnsTCL5@)<-K$4 zXP~}aWvHeU8mivL2I^5ALv`i_eKlpOj_S5hJQEt#)DgO0F&SLK^o5x`Y8=6=PU}TW z5v%02%vR=9JHo-ue#DQkz^kpBGW+cF5mW9LDdTF1uXdvy8&5T3{jUR=x55mRvwoAY znBYa-Sq@m;?!mq>AC;mVyQzv2&HkAPM(;4eCba>HC1Y7|-&-^fL3CWPgXr8L7%bgI zn%0%{^LZ(Q__FGCm^_{nmAQgH3=|KyIvRmxRIe+r<$QUe?nb#)mH;mt4cV%AB1-$ zHK*W76&*;6YdArkgd^;8`yp(Qw>u~0^FJtj<>W-zW6YCERX6@jg3Wi&V@`&N7Q=D)` zj*+`km(Hy^QFhIVb26KWTxLORor&UeFsG$)2<;k4ul{8?FS>4``x>d;Ux#w0@oOc! zYA%K2o1weRTiIbbk-WlsoIh;HN0;?Pmgw@}-&#sdoAKwsT*=w&#i2zT`MY*HUw7`~ z<+9n#{k$8E1v{`EAm4+dKT*9yC1Wd|Rib@ryey4Z{o?s7`_Q{Z}N7_vK4xzIz+X!7roViRdk={gtc$h&gTWX>qJYPB-wM-5?L z9S@e4I?Z=5J7WXOJg!}jk(dU8I853vgLett{h)Z{h7nquf2|;$$RAtxrt?D+By{ZlYO-AIjO=#vCluA+>5Eft_08<28*wo^n4D zUeErxp){^N9tT+jo?bqcSz*gD>wKJs7p*un)tb22<7}I5N7p?e+}U@T8pHlz|Du_? zX?bV$^~mmOSV#wT>?>hx=Ranf=$hLWMo8{oARPxvE?8hT{t=hBG&=|n+eI{8kCF_LPhhqEqq5|i$(#ijmk z9vd9yQORL6pPONyeul86a%Pu469#-kb^XOIY7d|8>UrxH>idYlX#XcXJfl$2KYFtB zfEx|Axk!(m#o)WbUoZ&4C2l^muDUAMS}01|sza0q3wu*rvRAd1DQ(*8jdVPw!F6v3 zvLrjtr^h$t^}oLvi@PpXUX76c<)oZzut_?XgpZ%`iTd49^4(z1l2U=?#c{ zw;2Dd2w~c1$|LDf*ww#`7 zkVa>qoIFQ#>SHees{-Nx7~IZU^%u8!(Z;{gTCDKAn5%kGZjr&W7kwPJ)-9w-_#D>_aaWUOKkD*ds$ujT*+fHA83|9ZdZK^lL}Py&2FV?{U(s60T06<1nv(O_ zYaVBUB<%lwjn5XIN8hla(3kqYHps5*8TC^ zX(vAT`qOxsISKnVix|^;2fwG7@$08K27gZR`?q9@B?)7+`74=kv{6rY=%U6-*00g7 zA~aVdu&XRWI7xxB2R=Jx=SNVSTY9_x3eqT2FK3tn*hTQEFr@o%1xUcb0u8hT+nDAPcku z(F)4tT`K(XH=|{vnG6j!lilVedTV5}WuX^CL#-Gr8G3mi6eeyC;rBWx-i(W6$<w=QzcA>c*6}>2o$R_suqdGsnghqN zul67ko{VFlXuRuxAI1QOd0g8#kA9}JB^zh~jRGgJee+^Mj>ud$PG-iZPSN+MEhieg zQ0r|x{S&`%v1xntP*yuNbj^3k7EPu6V5~5sqM3I%`2X{;5dF-|UUp1abpyRw>1^9B z{HyIoTo~!9gq5Tzk1CFH!PbrSO{Pl*ae3zbH0M#P4Go#J`4m0+JCZQA14fsEmCgkX zcu~!rZCj!kaMnq*?c;dfZ9JR)+^t_r_RyKb^{qaT6trY6IKX>f|3y)UHOAy#Ex-1ks$T4HM|^ z8%BTe;W;F`Q1M3mk-CK}y^~7!+rexLo5JDM{)*s-6=#{p-;8y|`Pl>t!(%h;24#+N zU1=cwn-%Y39hs`%nH4iLln2+^3ZKCPt&nJDRXS5Hvy}zfGkNss9LLw>5@sfLf)E>S zo;1PNR6MW38R=?^=wE!f|3vtfYZ6%QoiEIWXwkI=^J2n9I;=ZKz!-bNhk6P>RXlR- zEZNi7oz%KMm>L~ra-qBQL? z%qL~ZY&vdw&CJnR$egPo7(C9S_q8kZC<|b0nHix^+@yZx(n$9@ z{URh2P{Wt4n=?q?bBnav=>$pNJVvy{b8XUTU+Tew)!vMLn2gmYM|x$7N60mnXOpc7 zF7_gBgDnO-PBKB?hFU&GX#7~gzfo;S7tY64Vb}baGME07M+=*M8HF#maXn-!tE~2N z=+0J-$InGoi6oKBnUdH5ud0i6|oIR8h0FiLhbFi<;Gf5Ft^BhMyALT?kD>?aHd@8|ix*v9 zxQUKXII!j(v^yl+eESQ`9q)kM?z2pK<{>N>VeDy&XS<#;nq`Z*FK4pN(D8J$?t)R6 z%)Yt|rQYXxL_gdpIbl0U`L>VW9y_U#yqtySmf(`GhDMicgxt+le zFDib)lJgs6#HOWEPkjzD!r518cKFt)eKXvYDcPGSeSDS?O~ixk+kxUm&4np&oWUc* z@!A`S-!vD(8f?Ptn>}nw$6fUDm3-RI4A1(_439a}()&Ntm8GXNmQ_Alww;rLMFizqdCT2P|l^^fWy_ zu43$JBP^VTvuIF1PKv(sM~&gEPn}4Xcn3_Mn(!f0>Q2}(F1qaHS6%IQ>jt|;Pt!gsou%~)gsqWA1A}m$=X%m_usgS_ zi6?90Emoe%WYoQ2oLBviLxA%3yOYv1Yb<-#dGJTiO882j6w_v#M`_!QRBBe6!N=*& za-X%8tlept#<#~Say8dwHvGF|lyDOQXfyHzItOg_oW?W;jeL4+2Q!)Kf#NIKI0V{cy>XSG@QBn+6IHI zlA9{pJ)4+ZVkcdqxQiDfj|bA=zdY>2i}*9I0MjvP@_cjgcPi(Ja|u%}r_%7D_*5P% zq9ctV;b;({b>q3;^a2Bp`7vr-glOShd41M}!Ny+fcR9x7<0qLRebx}$71a7U5-Wcr zoUwkq1~#e?zdF{|3#5VrC~mPu~n&Ly(b+UL)z4R<*6NcxHPVO0C! z!p4D@l}x?aiphjlbj%CnP6sdS&(6l)CMI)D(#gyT8#}Q#)`^wk#UH!Wnu;wmuzhMI zzOhj1*u~TSS`6Di1QJ;(o^F}nzwKARw*~oJyp)Z5?m6aL`qD^8*eJqP>OHwsbdTa) z^;F2XRf=Q#at1xf;q!3e7I#vZX8?Wgdol2R7?bW_!d$$j_g{z>M7+;O@+_o>_9V3Y z5L0wcu>R{#e6KBIL&J^e=FFm(^+x=6Z5REH71KsK)3}jvIv@KIEsQx|ZClngKF-zA zHbfK!plT=Ksec`}hEHfd`a3Qj)zyycK4Se)yyM-k;xYRf%hm{6Kc$p@`%-y2JA#BR zGDnI%)R}a z^GiH%Z(qAIcY`ze@0YP~(`<@o%l8>AJ$imDx*F#hFxQ3XZvhzlWTRD_!{6cgv~ZUi zo$AATyEsO_y@vJDyOfIOEM5E)okja@z2=U1%B5du7)qx;@$9Le&YgHS#>gBpq+vWE z$6Og$EIFM;{y56_ShY|%6LNR(;Uq&fPcyLX7V!s~vngORd(KFfq>+WN;ym$45oU*Y zY6f2kXR9#1tb4f$Q_7BUVeVWx6~~BN@gtR&Qfc#&$@;&!G_$%|rTdX%KklN}Npy>Q ze)8zrKaMY#Y;coo8p`}_VaIsU1xs&GahKyiRHE|2C`@;i9cqc9zjK`unA8}n>VDwk zL%-r3k_mG}IooTDGN@r|TE?BmqN_8qg-6GJ5+*|_$TgQ9ky;nYjK+ z<*0%954WbvyAZ+4(|#oUI!Bvn5%@Lq7H(fKMVF&F7#q(0{n6|Sjm7QSIhldR(y76D z9vX%*`9d%c2YRu>&7aFtg@t`jct?)HM6T)3Sf4_iCzE8nx6Q!|zj&QaPPc%w9Rd8DjrW<<_XC)|fw(_-Bu`rZGnxQ=d1gW(&A zks09WiFS;7aD?#rX0i)%WrJ}n^`9mQJK`cE^kez5O+4p;1q6ydY4I%a9*w=i=Rdhj zT_HN$Bex}ssEjnx2j0rNPEf^F`o1m@4ObQw;<0*aehL5i$=G(jMDpZ#(nh9HT_=;` ziBg}>i6_A*lh*Dj!VF2I&ggimIz&U;8e^rB*zp_N3ygA6uE7KTU0 z6}r#8#*mi<#Hi3;erF59vibVw20tH^QS|CQujfAGa>`?dpZJex!{;RQenrilpLsUs zhj>)KQ#|zz`RDEtJm)Io+7}SAr-+);J1p%2CEL!kar$AR>l?6aQ$q}rxAVJ;D_w$4 zNlwdb;Tm>ielH_l{WZs_o;x}VmIdL^+!e-(yMl5`G$9r>rWELEE#) zehjM~XHs{u%3tveR;!zfqj)BJ|5J#$C-3U*6k#r2LMQDabHii#QyPN?@xld8;COHf z2|d#})gT*Ag=oGNSssCb!!^Hs^89+OSlJo!HMTl2Hs7y`5= z5_;Yeqpv=E7roev`2C#eI+=+lHquA6A^49wh0i@1KV7nD>-vdC;5^+Uqy_|JvNK6$ zR!uI`_f8R8>k7*;S$w;OPcVD@fHtk}v$mp=$T9z+SyDyo{MYzDsuK3Xe;j}H6sIE( zIaFMR``DYZ6S<1Lbw2;P;Uw98);*JZ zl6`SNdYHxEb6L7a^8J=vW%k``YzZmisc#X7PF`bHN)F{7!X^2egztJ`Lsh0w-K>IJ z1LYig6wiUdu3X->9E$Zd6oDouaM;PEA>jy<|@V z1#kG(`87>nR0%`pHRT(`xBuypaLezrP8glLN=jI9ypSJPu9EF@nTbzwX)r4vg9Ul= z^Ib;AGLIdSZ86$0LwwyS@HCM(gOixBD_J;$iIQELD4hNzTIpQkYv@I$-i%}1%oy~) z3fssrip>Y(dEY@8`*Dec)=Uw7jWCV0vw6@qpNBqqT>FzJe)X&TP_A*|*%7uJet5`!c=qUH->`9~dRw66;_Uxo1SX$UQsy5k!u+|xbQ ztXS>Gn|YB`PP@Qr!wUp|{ogqw=df`eNAF!_V|)>w!){Trr~-58r}n*gPUCye*)#1q zk=38D+U*%nHD1u{Qx)IR-cdRIz03gL(zDYCoOM57dEqt5=FbUy`ybncS@7WLBXUC? za7&|{S10b_ck(tfua(kbdofXi&ITfmOZ*BEYmlgVw1dHk}J z^H;@(`9gBQwEcUEKHSFpm%=2+NUFJ?q2!J|5gsAD zkav8UcdYcUvfqw&rqg|Q$%L1jzugxJ?V3c#jj5RQN)vrmHm}}D4X`SrvOy_YbMBHc z<{6t}UlLj44bzQZ^1`BuN_i%(U0=|@<7?*0GkX*LiSLn;4gLHxudjb)?ul>I)BHrb z`&-)G`+(N9cU(4jOL*#QKAwMt-sk6hUj3N6#Sclbl1$S0du$dz(dwXLnq^<5AoPm# zjaO(?UcmPJtL)IY!jY<6e)m+VHYAN&!-a3TP<(O%TzO%pFrz%5_S)imI3fQp6E-4aN8ZSqvhWcExyyXd#r4HkFmDp z1UXi)tXT!W{O?jXu8fpR#rRz=p+`Uo|Af&ovf3>QjZ2vO%Ovl-h#W*664#Mv^ z{zty)y&(jRlReMa^IV(|B{Sg!nypVoD@8n5dvob_Lgw0yis+kO$e=>GdzcCrX2K0} zYZNoX^ajnB74hU(F%Qd1sV98M>Gs8ZomEIR=j+sZbD4)5FEictvS>#nOYgUerPKhU z-I9H~I)eVXLG)bd%l1rv4*&5LuZ1_K3df+B3;c{@pczE zi`J1l)rjd6hp^nf2QA+AWZ`DXB{!YL@Z`BzS}Y)U#|jRfT~GP%O>7*og~M#a-P$ZmINLj+ca$WVloM?DnWj$fM`G36M^q7Uc9?(qt zF71qN)3maX+j`f?`Xe0P7}5WH0F) zXzM6>U0r!<)E%`Jtgvnr8#Zc*Y%&Jpco35(m_<)3SbFiG-QKj<39 zp)Xix_koH1|D)O$VG-%wq^^Al12l6v<9vayR?&3NyhM{<{wU8Jcp-DuDW(>LykF1s zE@HwwY{S2u&MdI?XV(Nr?#K*D9dAPPT@$QRHnR1hB?<3s`S8P5=8n5L7{7#j!pFGX z+K4`yYtePzC4Ac5SOsjtamGF-=37$#%xU~(CLP;dxSCh&@z50wkhKf*zq|0#-;sY$ zgc(qBnjPkj{9S#G9brkFmObmo(JuHL=uL|`bCf==E0pY+BbhRK78>2>QMb-;Li(5~ zFS_;2{JHv=(*43H-i9Bd%ROPl%wNr;&W)MXt{294Z6#MMmbgTPz;yAJwio_d5f5EK?e z_>fpkTEr8%Gnq37Qs|d{iG#9-OZD6BZy7i83Q;p>)F9GGFp-uoH&f4GG@@hai}g_DRY4J@R06W091pN}|WA4%+R z7ZS{qn4+1^u0haBW9#+;ir@hIy=baG1{zHsf)62}5hn6V26pmMHREwQZ=8Y0W%`{g^-A z$!&Yl3!jPRt=xCUgvyyMb=>0bH44jwVeU~VT$sx=T?untBr7^Khuh-&Y$e{OnvMU* zgbyZGYRAg@3;5i0rxN?6tK#Z2nZ4Cr88XkEm8rYv^*c_PaQytJ`u7bpTPz#Sj&2V8 z>mqq2yG|1Qsu5%J%ascQ`;+hN&-K3PbafF1=zpRwXta>!%NCG2!<#+VbA;!4g)eU} z(oo-lg)2Si*XJs=F5hROtIQ@BnDe)T>?y}()4!`b%WBNxsf`m8%tHBoej)=kd$Mu! zDgJtk7sW!nCFeYGHC@l_{U_;NV9t;gBX~4@Em3V+Qm5;B!mJmd-FF{_#S5^oSVlYH zhpfw3i^->*Ja24?o|otkS8e84=5EQ4cHr7inSboaWuKOCxk5{bllw=_f}39;JMuz+mV)=Hy9X3O!e(Xw{BMuy^YlC6_9_mF&j<2w| zJ&qjZr@g!A4W>{xU>6re5A(cuK5m^i(yvlr-{vPA&c35b!`GZ@S0&$;}YkE->$&voK<$4y+DkwxygO z!k;}57Dw^u5UxFnX1mOhe(hIjAY9}^OE;oTz47fM9HBOwdCCO&clI({JR)sAZs7Zf z9ij{IV7O>*7A2fzO8rPmYRWEqfoOjJxe+11t3T1^B>Y&zp-SmBa;=27=|YXI!d2cJ z%=lsFNz%T^nSXJ@LOjotMq$DPjv~q|i=?13j;2=;^YsTg+pDRA(=^n|FV)q@*)>$J z{Wa95)vK$kt81v&e*9yM>0f>}{w03Ud(`WigWBjV8fMIBL~};XFBsE_z`MS`dkj#szXj zW3Vz;e4TSokoQBhb`k!BWI0k@yfkCJMiAM`i_;rI8PNO^bv8!xbz35N=i-Ig6OL}8 z?9*;J3v1&nKfX&|vRN`?O|qCcP`FjUWgioHm5@ofbQh*mkKRcfx{$__%FBdIyhF^I zDrOz{i+8Z5+UZ_xwMIo9_4!dpA5BBugY5Lqir?S?LUNL>!FHX zHHtrxff$zdz_L#>#eCg1rQ*p!=8Au>O{U~aj~3sDg%(q+-YT{BPG`~zMh&T z9{$xqwbdgvwAGq_%emMmi@3RRhe-3}%ffnes?kO{)iY4B+$XxRRt|D*N{0RZ>0INQ zva!(z<)7IC3gTpEnCgIi-Gi(#>BH;Ho|Jz+L}43wo)YA&#mOj0`gfSAxoR*#} zYwXLpQvoF3_Gf)cplJNV=^)=-`G^z-ze}R>SPH(R^Hev6yzq0ZuP6M+?#|54lW!;9 zi)T$E__rdHiu?l6I?1l>-4*`5$>Y8WY}uABe)>GVJ-tH<k&-zv*BBD49+=0q?;W=Q*<>mre6^4 zel*WDPxDpBp1|?Z*v^tYN|lQ_lZD@)H>E79AVq1DZT>d%}d z)7YH0ew|q#+Ypl%yBPIb@;^F+6Wr2+&iN}CK3DGHqkNe=AW@!g6c!=-SYEr6%syvG z_Kct8O{6gCr!!AlOFvfN#&Nmd4oj5p_0|3PSm`*V6YCb8C9JhOdaI2o z+-ap$duFcucJ58B^_HT2w4#0gQCxaa1K%TE`608_qoQGsIp|J&&IU5ZO=kN)3-H%D|1AfrxT1{k`EK2j?!wcFfb1WV?V^6 z;PodtY!u9l3*O{-c$4TadLF6SweH2y#5h%Ut1>gKd6|lR*;L*Y4vbj%R~V#Fnw}sG z&{z_VgwW-vD?hdiUqtj|4dzBNE-p#tR{5yMOKCS&a^`!K5?6SWzuIM#j(f%az17th z%WA99ed?&s-s`ESB|G$6j-G0?UswGl-}56Y@ugqaQB6OHk1qWd{rhC_AtH?V2|IcA zK2TYq=b-$pGY;p~&Ulp`B|YP-lBOG<8Gkfb@d-DkeT?`f7R|@8=`-c?;~R>%+Zbv* zJVU?Na<>lH%KlbE>0KqyMfRWd+eGnplVlvtA0T=>U0RCww_BhCwF)fhD?Qqx4I^2c zev<7soYtz>4hjv^`9d8l#_}^o=;|E{zoOm zbR%7BOP;P-O`eR99Oi%ZLnCK${5G@aHtG+^|JVX-yPId zTa43Jt7qt|orCn%5x4ZzvoCbjy0>-JZ{lw~=UGQ>SNj%M9pJ|O^BlR*pFh*Wl#~5_ zDzBn8^7->Awm&swc4l2=(UBg?uAaSwmAix2UHam^=Y;YtH%KY797^IFTatI|Vs}wX z%n!9-#P+>h7Y&S=-5D%LOu&0UN3x=plb3dyiQ(2X2${;5tNl37VrnJ&$hBw{cCKiukqKGRN}<%t?n(>RY%Hs_jaPbI`y|?NnJNkGbM*`yyQ5hJkV7a=}MOT zoH}Zomcl;M$e{d0D88ravo^z589T2T*}F{nuwf4pO{B!~8BMvo~A3 zy3ggu(utg3afDZe$Jv=YnzC(O7}Rhv?O)CzyQnKuWTv@e$adB>9E)qiRRjkfWn|A4 zSnRfv9iAPgatnn?!CjHwU!uJ@2HvP{r&Ev4wubvj9YUe0sj zcb53G?3?JBNT#^$O%AHU{Ie)W|N2c~ZqD}>JxcRwS2`J z{6J5wHeO$Cov5d}jT1J9vz~fW>c=1hUG>3^TkMOJpJRIv?Y`?0(>F=Us_M?p%QEf0HiCiO-Q79X*xfyLcVh>(gas0!gdp81ox*cI zGzfwqDUvFnScr-!`tA4k{V~V!PWd`FcU*hzwa)cx)*On|FX8rkFb&QhRZMJYpcu7t z3JGguw%r%4_z;#AHS?RULiO%^uADoG-|PW2(o*GVm({FzWJuo_9j2e0!}Lp{y{Q{; zzT^Q(%AL&g7|U}b=?RW9VAt@I{OLOvl|3hT>LN_RhkMvuv5$y>#(bCE#RHY=jGk`6 z=~Y$?(lBS2?6B&(yWu70YlBH){MRR%fXHM98$9QETn2H0>Fm~$?wS3`ywOw=Ix_;V z;hq@B+wgnn1Nn9vF+sH0+O1|pZnPzSj2E`Y{7F;uXZ&!RTAmM3 zSGqKkj`RQIefL++EYbxWT_@+k-p!Qlge4I#^BnSxSr#Nrw8v3==qLNNR;{^x@`pm} z%xap4UqR!fx|}PPD%4}`6xT*C=I-37xa*lKJav{UJbN~hj*g>*h3&?FP34bUA^WeF z7f{K*OTS(ZN$RD~<~(z5AsME{c5D_Omf9eHvJ;;0tz{fp9*LZ|n8l@J=_G7d!B>NF zLQcNpeS_Duzg8ms#kn*~O2I)qE-DM%*(W;@b4zRdW?6I4)k=I)Hv9>8rODAi{v8r7 z9xLglF$yKjHG=6QQkb~$9XF1tDJRTrsvIHTinJ-Ml_xs3Qrh2dp-ePwuC$cvXrGFs!LGrEG+MI1ucgVZ^I=jAnQF!mTq!@N3N73Kl0Q=IXGV+M6 zqI8&xVuY~mhE3O|m3U*!OnT7g^iD=uT3~Es!nD?#d8vAg7C|;ByE^j2U>8ZYv(ePL zLV(^QeEaF6H{>F7gH3oGZNtbHhSWBdY=~r|E@nKEVhh>-h=Q?FL4xdIv*{fC8SgV{$_(L7wDoVH zTx`@z>Cs)DWx1BUjirxuyzq*qwNTCzwpb_4Oe!x#U?r@pJ}OOl>fD6Y(z$kW`%T8z zmndx8m?+X#HfMbEGyHijol{+&D1K&tQ5>7IkBgBvq~mirk!{9PlX!#nf%e=vX2iqJ zd)T44!CBQsefk~ML;r~@<(sgb zD{Y=pek_yBkEN^=uT{6>jg_wl3SZ)yoLQu|Hp{f7@||%@WzZD)mYiv+Tx`=)shi(I zIWhh@O)i9^(Oxovm;NYTeg31!>T;Al)}jx1zEZgTG**O7Y|ST)i~JZpou=1H6*Fcu zrZjvH_t)z3v&DLnq8BjjoE}3jIxtIgIF-8>u(Y|)#-4tJ>pNqYcn0VDC#8$-0Xg#= zU>T3+Iq~qV!Wer|Nn($0}sE z=^>n)?Dw=7`2*dEUqoj%P?m{T-rAs%a)nhRuWWNa9jinw)dQ3;8mO@QE43h?j1ywe%1?drMa2cQ*BFpxpGmp>odj z#>(SK4VC9g8!ERSXsk5k6RwAbs?x3V3xd<1(7c&B>a{9(uNC%-h6WuY zv^cq|G54F@Q*EW`LZ1Fwj{xxRNY%AWIS)t$k5rKv- zSpD;uO1Xx;mPFv_C%tpYNfadu=j>h{+O8#-Y!!y2LU@3usu|<;o&WCDv%a#9MdiPk znEs2$_H`70uf_ZQ2bPQ~BBoeGO z`U!dWA7MTFmqM?wOfj-%E6o*>ANn>XrIXX8KS&c`tqv<>zSbb3RANNSHV7>|m zt@d)E@kP`YEaHgjA{veo4Mj&(q{AlSy}C+S{yh%M{;zFcS4LUimL0n2TOs#I{U{og z%q6o;wD|E|csfmus2{0|{~2vO2i~Lpsva|A#ZR&J5pAwpQCaIvp?5eIO`xOh=~%8x4vHF`&6*K#^`DwZy@Jf7W%=f%b#J{NhB{n>}OnjmcI0|iL? zn9G0NNFL|It2IINu@?`U_+Dp}Mf11$Q*6sK87rD->BVAn_Z4Df@q+ETNnG5MLV3jt zVKL>RJvfJooiEt7KAWT2x!nG#;7yqWGwbRV9cR2!+-b6trM`Mphxg;|>M4rbHtQ9` z`c1=O|0WdUJ}c(!IjLyZ<(;C@xr=nUW=K&>;Xp(W}})T4x zc&@A{Z2FLXMy`xV^QK3F7j=eCOgr+B7aBG!ZstYCAnDN@COH(@^?#Ocsg_|08XrDm z{P#OgR(`?j(p&Ci6>?j+WH!4#GTZOHu(!%MGrEx6m9Gf?o5v}6O#a>Dz|}5|*<_oh zsBW^62<`jS%C07jKT*mZ0~Plxmx~WnhyDG#v)gQsqIlIC#V(o0n!k9&t3m6SwxE-A zE}x}M7xCO)@<%`77WI8@v8vb?tF?)&I_bgW-FI2H)SfeKld$Nipe){AIu(7nC1yUu0*%T6I&5mpHRqH16~; z4+`IV;j+n%nSSmxUT#5Zx-otC-{DX7ed!^#Wq_#*{S^-MlpW8`bVJI!8DT!plAvB5 zG+hzI`=K%1T$v}kq-r(^7fi9Vv9f-jnzFU`FU(fgaAo^XTA0*{cl9HWIuw#%n~ArF z^y@?kAOA7v>~SP{%9obM%MJMGvsfu3pag|&{*?C`llT*TIfc_ z+!z|CB#YN1oL|~cm?bmVyP?tpzd8h;EG4TBNOq>D6JuSyaTxB6r#)>JE)JHutAjbtXRI^ ziZN%*C=uU*v$ZzV=wl=2OZ#;`_}B`!H~u9L@Bbo0SXr0eH&cGfZ=^gmxPctOeq-nU zm)sdY@o4{=!$+mVN<4e+dz8Eg$mh{?SST5@MlU+BRd(c4TaKr!gCPU_H=wqCgu>3Y zW7Md~7I>W3$Kw7`_TOy4`iDh|WUWgS={j@qyoq$>ET_Zs9lVTilq`D;_G#j4JLSN_ zXa^#aqZu^iDSyqM5Skmv8{w4=uY4hFgiL1CrO?JPjfP+H8Lpqo!{|7+sy}5=S|qn; z1@Kcm3uDIn5<1(TRjVR!vUQ_lg=B^EEU0>9NyR_+I6wC`lg5fCVbK-V?77B`UsqAy zIwKi|tDI2R#_%7}pHDtuU`JE@LXD;8M~6iRG*Nk~Lt&LUGbOK6Gdvm-ms0$V8z_et zw@?nzXsPTZ48Z$k4U|`N|FTYai-|_xNqHh3z>-+Z8bxt$0*u;{i}_*k1}94Y!kex< zJ7cc+k=dT|BL=kDb40uxHx#QzY>sTI@kF6*a+A=cTZFZmz~xon75Xzb^G|{`EBo4U zdiM>6oj*xvA5*$kMKM?QSs5y!tgH4ApQ&U7A3tUM>m(9R#4zTHlHit^n8lWH>dY(l zUV9;I;+G7zdnun=@yg1x)Xq4O(XAu#NsnN4xZsRF1`*o|nu!l(>~LR3%Qao&;eg>y zTU68T@aVWE`a}0pI`kyEMe4TSQC7-1sGmvD-?r0jbv#S})--u^S?KZ}0nrQf3 z$8LfdrcJzAEo|<>0Uy~uw~=!2=N8Iamzpb&3;)yW_8+oV{A9rOKlmT6;k@LHJjBO) z!9E0wf5LdXDU0^`QCMXwiSO@T#dNN$wOLfZumy=x%KWSL(2h*PkEbo zbn`CeFORUuUs%V-=dypRuzJ_I(K*)v9jm+Swv*Xxmk<5-q_gRH289LkZv7oBT(?+K zwA1+Rm&q2DRJ1OnvcR)Y`Vv1-+V~CTql>YARfckfc-+K?Im`Pg_r>QiPxAC5ZYAR0 zHi5L33I>Nn^UE@vrSjce*;Mj4H=H>uzJ{FT*C?vlPFl0WlBYPrEe8Ao|0kl-lB6<9G$%i&py6%;pZt3uLeW{{M zs;i}+$}d!dg#)Vjm1RX)gM#{c*G|iAQDK9&%g$hx&kh)XWuj-6>DT;7*TcPW%(+ z$O$=bOs_~M#6OeOP2d7IhuAE^o6DoWkhUg=&A+3Fw-031MStoxi1)cx zfpf7dYn`@mq;-UJ9cd~`pLL_n$?MF`T7mDPuZn_I!xfg1Itsh|!ML=%!WQY%yJD$> ziFn2`(@t`=pEa$6Lg=HAoR5AmA=?6p^nncNv-;AeKsYVWIk6{NJSEZ0xtv3pRXHEd zlyfJsf=DstnGT0w!9aV_le|fYK|H)RFEmveb!>#H$*87vVZ7n)omn3pyqPa0j zzB?NvOWe^_x~xn?^cpTOLTD9LnDu~EJ%{)x~~?d3HmISJ)Y)RQ(FDf zV%ZjiYEDmm^u;H(blDLZx#Zii*FiIQ|VuEHgu+hC?28vRnPYS=$Wh zw+`cU8y|kp_dxs53-(Ww{?EA{JZOHM&dsV6z6r||F*80Z7O%d9x8-~GKAdG&6W9`( z$MtR{l5>_$t}e;^UXjAm6(tN@{gwO$KN#*)!%5p8_%5$yPFLxnsm;fAQz4l(<&u%g zXH01(r@9C$I4F~TCle`AixIzKB<3a36_Dk^oIWNDQ~Tde<}6mNw=t*N8ah?4V}hUf z1$Uok@&Ii@8W}QihAFO*4`}Im3+p;fG&jll)Y+9YD#GL*mnD6(xx@{~=VX|2?u~ z-?V! z79YK*s4q?A)3PLP7-TV8IuC|TFJqC z?sPG0<@fWX<9A%`tLgsnEB0QWxpeFUrt1qOxA20QkMo&7G?PxJB*&r~N8cpLbrpnT zx-n3=e}NR~3p1vPJN}6edDi9um(LjCv(1FBk`H~q^)}gO@3PtbJ}-}2qaN&u>Q5h% z=KHYqiyhfJM3*gEXSq_FJ`U#O_mDo?au-e{Ix+seGwnMEacpc1J)%;i2T^>?2hv#AB2#Ae z91bs#?uD?|)V3(2q0HSeYhI&aS}yswN*p{(8L09K!`nG{Zb`>tVKmE_k&H z{vLB=;wxJ!L}OSh+=xNhRwV7SWmtDPGssS}u#W=`z3sS`C2X&iPQnLrjB%aZ`4hqjJ4a_ym!Y5Kj8;aIUov;o@rP-uNDb!JuGt zZ-z4HRs{26qA0i+&;B-vgl|=_a7F;X|MkJDllUjv=CIcuT(-N>cFI}eSd=cUyTB^I7((h_udSbnaWo+-i9y@0Vd`^ICYxuc@~z=EL=T4$67vj$|X3c8}rc$Pi3= zd$a$6BmMjylKtF>*|oPY7fw#%G93i^hp=onb9rCTmx_(Z)?W1N?+N?r>m?6@s$kJ)i=nYj;Zhp#XVq(M8EW6GO>K@}{GjlW>~MX{disvK6;5U9H2=H#!)My~UWG z23&7y%;D+g!h5tPCE0}yjV1RR<;o2k7nY23XNQ(M+xLZcOa6Ria~D4Mx8uMFdoIiUt3BNforkVO8HW6IXHp1f1_;8u)1 z+C#0WSZK$LGj8+|U;mvdfBKb%5tsA?$KFvic%fvmo@Ag8OV{DYT;4Y=LTy4ZVgD47 zHS-n6{EFEfQbOH-Wz_C2#ppu;%co_tzg#j|qvSk1FO-T`?pTU{>uk0;E|-n@U4Mra z2{$>?={826?x3qQ!ngjuuy8CSvuIE8L}A&udXhWNgNYwp+3?bhDRPdVzSd1xVXl}O zy7KyloNp>!ge~OCrp>PW=<30;GFP@+%e;S9vI;e>6p!^p+tZtF;-y?|Ez^%0F2c<+19|B6NNT3-e`&Q9}DIcf8v&}WH5FKpWtIS!`z)%^i(|E z{T|6TK9GieBB)IEsZ-S7ZlOrLNSlel!#Zdg!63*89yOM@|?-iiTi|qJNq$7-uwGk zJ`(@geY%b|V1Bb(d>?v~He>H_;DWw%wF}?3NV-a8$EP;kfqm=UXeav2*dK1fY;whC zpohHgPd2` zm-r|>FnZ`F+O@0nnL85t#DOnqa*yBhU_>7uEN*zyUpy(zuGnKbO|+Z=7K|~dVX%1E ziigC~c#(ofIv$MeC;M9An;Z!UW5g0A4F`ns;DQ%+jiu|*Gnj|l!tp8(=i{9yK9#|P ztD?6IOki<<^h5W`lAL=kS!D$bk}TGpRt22P%Of@;pIgECY^Z-p`0YYAxxC__lk{*m zNu~By6!W+GQMA&Lu+=tH$(eFio{6x#4M=HnmkHvpEb4O~#pZ_$yeWOF)z*B9b*8LF zx?V#iYohDU00R#yc6*R69Rz2d$@6KuXc!E7%2KF>M;=(BLNl#z#7`+CP8E!6nXfIpd zHn*hzS__U|sNul90?w~U#N=8uXViSCH?Ts>(v_)sk?5wyie?th!!Tj;J$p>Wy%5HZ z59g_71jUh&9I`=r?PJKyOQ5Cb1O0YqaiwoA&b`B5W9`3}U4em7bd@TPv z06)o4O_uATZTW~&F{Q;HTN;S&ie2?$eYLr59xw+rKgI#Z$EgD`^Jlzl9_7Y=SiZYEA~B{=^yDJ zITUBy&v`MnZ2@m0)O8TgV687tE&POwE;ESmGCJgVv0|g-+|Kw?bl;a^ z$t%`bd(ihEc@G50eY@42SQTHcn+0QN8qSHW^7HYNUb~*czIrRq#tRG56RQb(Cf$(d z;<@}ShMLPEyd5v+s9$az9vMzy=U9IC2ZN7(T%IJ?u(=;0-9uR(6Ul}gB`5dBb1GCa zx@S{qt&<@ddp0ZTUeftZ5jtf>3^-KG$oGZJI8n;9ai#2AS1RAN5>yh3xtLji?i-oy z_9_T#8ca%OZ>IM4V2^12Lv!5N6(#TLmY$6J;Z2)d=|)=-z~!-le7Y{#LeV_hy-eWC z*%UtRNoIlMg&UK=lxgwI_!G_2m%@WE4Z}1tjBVE8tR5MK^&Kj)MHhPiju5T)JlXu7 z_O0cwkF2DZQ5gxbdGvZA^QLGwvA^S}930KqMbQjXDi|i{z&$r(rB5LNkCdlu%y~*w zVk%)%GRggr$C^_mOzl|AN3~L%WM4U_B%hyi3ve{c zp!bw%zf9W{MZ+ZRG;b*ZU5(nw^rmF&Te z`cvT|dlAzl)XP#>I8N@v=a9W2j!#%@eCOU~7B?BjPbX4KL4QypdDb=>n2-%rR_+3$Yg zXl@0C6DwF?Tfz686>?v^qm$@@4u&-E`PbbKt=iCgo@JUyNdGZTveq;2UX?c8RF6X_b;2xRFpw9P(I$T zs?2DsrtH^EO}U~>RhhqC`fAM@DE)slP_7U^&ChX-ly$=)3w6tSy=OT~A53Nh2gbiT#6Oq$^XpxBE!{ zX|bF;GBTN(nZ>*pIV9-ivc)_Pw;qM^^Dbv#yHC6-`HcRmYT4(1k^J&kRBj7Xqv=<| zO{y7i`5R~Y{HAtOJzYngz;r zIUt?BRcgxYv*KwvrKW5$PEA>t)lj)ryRovSqx5XOQ&(zwt1GAVQCHTA@2X5iUFj}= zeqwhsSsgvk;p+zh#fHmXJB zif<%+^d~;bGtgmHHLVS*NjhG`zqz0J8eGly#ou|JRZ9oM-&Fnm%^^+cW0T)c6u&qz zvyRQ0-&j%cjY`9BJa_s=*}+=&2G&tt`HT1c>uIg`3;(@;sBSNP(9R8%-Fm4i{}Jz% z`d&38P!$oNND@?l~!NH$^g=!V=!{gu>h~Dp$t|59X+hE$dg&A?|}7P@n?(G|wb%!V(?sVu?hc_q)Ct2jC30~7Qr@qbf6o@+Vl zQa-RQ=Zi2zJ`*7K=JzwzXwUz`gtMQStoA|rt>05!^_I6f6?7gdewM^H;;k>o$f_Jw z#|m5uDlmFlL51k+d)ItJ<@7g>$bJ5E?FYOEzoW{c62m5yWXtnE%cKk!og%(pe2Jq; z9#Mz#iJMYDYdMFOAAE_fc!Cy)jxp|<>~v?AaAMwD=7d+0dc2az)N)20drJfP|KEE5 zEeBdxVsrI1f6l%{Yep(3yF$zy1^MEiGdx|2qvR>v`z5nVL}~SD2?m?*vkIRQ6rxBN%BLBV7@RXxqnA zDSF7~pV8z5#c^UoJUvPhS@JcGjoDA|JN%fgErlz;#U9__I)+|*Mb4dg78=JAsam-k zOMOKg;=<*JmptRbINCf@wD+ZPd>oxX<>N#m%;HdLMC1DI374fW_)wKM%g=e>*xHHx z%^dN;7MK0D#O$%5kCinsJ8f9A*cOe;j#%7wqr2pap4!R$xFH6!)6v+!4Q8G&AF|85 zm?txac2^(i0rBB#nD90430Ks{0YA}HJw06Lyu)4C@~&7MccDl^qIY$du4zXTIV&1*ojP{keI@U& zc;=bM3#K`q@xGCKXf55QZD8fi7|#8ELLVo8*39se^PDe}Ps_PJMRxWMezflz!X3$_ zF0Blwyp7DuVbWP4=bpMi$>g|4QGPZY{qjHtHVtBeMUXIt1LPdyO+tY?`qhr?X=%-N zRWpLW-NQRpcJnuk@z`TXYLy|Ijg3&BAQ{gx12Tr15Io6(&|MFOrzJX`hc`xh!g$v- zltYpS`S!_$UZSU{Y!}@$Uc6){9oTIlTo^BFG@KqWx|uaC{@a?E6aUPOK>2C;gJe63sOrV*ag7z|B>KX^IUUm`#MDJU>Yd7=^(NkMLQoY{SBIS9O-C}*={=wbnQ62(~d&%hh4X_lujPuSoXBy zTaqpMvh)3w>_8JMXMRqX{asUM`U=m|OT&kj+x=+n{g_)aJ73iFWJkRZpGA97n)?Vp z+YQZiHXMEQfYFjEyL!ivKaJ|Ciz{Zwm_+>h#c}FW0vjA*-LWuUe3bKFy)Y&Mqd9jj zlwD^7>GjE%17{_xBpOAF7NYrt22eLRoK?#r`L!>C#`i)gXeQac8-6mUJeC}{2ft=I zQ!hH2o2j$xZtWyfXNJ~wLqgPUarM!4`b#de=G8eKH#|qh(d*O?y2jo~*ZK2MxUfAW zBfCSN+nxr}Z(}08Waen!7f#a(PkN^Z)6HMHe;!HZI>=Mz9TzS{IpgDGkCD9tt?V3R zHzD_->?^MKm+a9bdqNgFF}u)_#)YD{{^w3p$%pv(I`gT!2PYQ!k`ow&)wmFT8T#`` zG#Qt;05qlq!>>@9{Pt(gAXn*OutMXra8|lMq>Yi}mL6xZTmgZi<63+$q4~EP7=~P- z>W41*O-!k4E#0Eh36r?mNw_lBeA#2l-1K|&+GmN*SSOqpd-L7nF-?SZFtC}-{**a;<2%G#d~+V$?&5?^W67;gxX&-iNV}}nV(yVkEO*rs_Nf-Z(Kj)b zKhn$Z@bk`HyiXW&XrlO5j+n7le7}QKZG_e8OpJQ~DTa~6Es4T#Mi`&V{V^+hjC#2b z&i#eo8Slx791pPYpr)TYT}<3KzQmJHAH0a!>cfOnKD71pqpi0vYUO*d;)rwvyba}y zbrc^{l|0-DrwSB2^_M)SWUL>!MYHFB^VqQf^hHM*E6=>GsRs>(>$NEDiR5KPhbVZ! z)zkCQE>gomOlH+x`bszNEH(_@M1A6VcIXUYR8MtYX*8zai@vyTosW6ZX3`q2Bm3$M zj>b>p$-@6=5qg-d^K>}uu1|R0ExtHhXK4f3U+fbf*+dgme%vL$+ZA#-!i3Dztn=5R zW0p2XZ%>nPK#NX&?^3bPm;pWS()y|iq0u(j9+sZg3_H$!mTMz(NJrSicjh4nRQ!skk%@e%pw4=V_^h(gCu zJOb*^m@Zx%^Mk_5wm0SP<$uteVWRkT-Ati7VX*AaCUE@nOw1EUvEr+(qIvmR#i1uj ziiT!=7*{)+Tb&m(BcTf}S85g8OFFUs%Y3GU9w5?13oFm7^uD@{X)!CgQ+=LpC**!= zBOP(cS2)va1sCfV@Iz-W-%Kxa)o4GRUya~r+#Di@oFjPi5jN#6MY%*g8T$>{v*0|% z4|GT@aO9Vr3kPn>&Q{Jp{ll|pR`QCqqhC>BAUu|xMdA(4!2V5+^tq+d%SAM`>q(;P zy|QzM^I!2WR~YQV#!QMWrFhUgGEF}b+wimS0Y9tzk-j9)PXJK`$RIDxDqZoO+F>Rc-Gd$r6Z*(`&{aFKkdp%VogbpQq-xXA?jm0x@ zmz>52aXK=a3|(Ow4L4wpsqpN}Ea|3umedK$ICgwHt6X)sRjN&1?h1Mv^`ytUY2;1X zBHh6waJtu>DBqnt4LZS(+9hO+Jweb_D1uVBciSC}>`Vy1c} ze)om(eD^1nSL>E{cnJRb8p-@ zIpz);4gM%x)b=T62WBXGY`DlO#Z9)`uBD4cjv_ALn4)8Gj3VyZG(MJ`W6Sy7I6ofE zLwhw^&1%N@{7rm(p@-35>FarPlz5vB#H`%L0)6o^z8BW|JO>i=%~*Bj4s*ZUWcp(1 zNluq8gTY2Td4GcW#hVziXg_zJEhad-H`>RBv+MU_6eE`KH+2OEXP%bcI=R-}^r%wU zk)Uwpgy{D%`f?Wb_2b3iP~p)FBU`vz>m<+iqbh{cH-hNaPI5SRp+wK9%{Xr-}#v zV;V~uq>{Ne74;P1h~`BRuvzwW5BKrFzfy7Va*pCd<31c2enHq$Cow-TjKH>^6_+kb zXJhe1j+Y*$AXkH9aT`(5T1<_{GBze2XRxpe9&LZX!lkvhPmOR<# z#D*X@ZWYK`BSW~0vRm+6>q1X^FQRna7&OP0QK!v?Ph=^&xAdV`U*`40t2`HON`T{8 zrg>f`$3fnkx%arIXMu`?HF4IGyXh!r6!E30%(=~tgO_nj5YL$1c|LU37M95^+(sHP z?Y<#Tbqp~2Y`~VrMi?8K(5I7dYf>y}KG}xI$B$^QVMX->YZeyRGIoU>BWq&iz&S}v2N;0yoxvAa`q6XC*Pp+Og)}^O6Q@wyx(i?GkLW!6DJF&B*}&A4_(+( z=fSoo9vGZ)VcUHd>SV9utS@^{t4KaIk{sGa&;MhJpIaHhnV%873HBxKgmf-9aF_oU z>7w$Me8Y9|27h`e?|N%AwM~VyVZ*tmvJ298XG?E6v)l-<~gF@TlRsyo!BgU z&_~`zOwYB)ATp5ijY9G57KQ!r5Hw`(S$Wfwp`wc??~P@;j=YmLhOqgq7h{3~SSu`X z{Z|lRh?>EtRr+-V{wU z|8T1Q$l0YzdJe4aaqi+x=~p?&6zNDgyI~u#PY>cb;RMpKNPE@I3~jiWxoQ7$END6t z%@=WI`U-Y!Ud9WP#jIDE$M=16Iece<^n5MDaO!%lKiw(47W;+&xSx|7w(=!oHUAx0 z!Tw`w*fwY*qY{e5;}T280B@Z7IrH~l6S{uYWama5#t*S3AzscpvWMs$bf22*$H;AV zimKUizpZuU|A^>JoSX$<&j+8AsncIslumzDm~7^N&PN+ib_9*TX`@;+YS>~GeTPHlWeO;{WFBiRAbt=&CGaa;w=?#?0Wp-vsfH43wQ!50sUCNE|wt%@4$l4y)&_A!s786IF zT^7$*D=+aZJYs*)9WE8$V8sk8=6>|zr|gn$H1U;ll9Tw5ggrLHgR9wL1k@>cr=3V6 zIfLmO3Pw_wiYI*kqM(&zYf?rg&}x4K*}uGmx8ujs8?r~6 zD!RyeZ-&kaU=(+! zOYcpgHvz7WWUQ85xA^~lbg+{AxhYLG@5*`dDs#LvsBquK#W$;Q-LZfnYbKC)rmyf@ zJD^_KmLcQYV%x9_Lp~4U-K4Qx3>n3hgFV@_xE(ETcff3YPdelc#CTp6r$=To+WHCa z#s}bEZ_9XHUCJ{JgkLK@ODox7J`CgHCT}#mSc*r^l;Nv|lNKAqrucAl2Si~vKA4`~ z?!u+_V^~@Y_tKsbHe0wJbDlG6dpt`|M&n$U$|0XDEEnXF{wbXngJn@w5zWfzY#)EBx<8?)aRlvO_|qZiiJX5DQEeW_D%r0s%y@z0)>qU`eS_w^_e6gy z=Zk(ht4~WSb2@cvB00&H_}6q3KiUx4YY%1m-j19e)^1INK9cw0D=QN}aZ>g?#vzro*!PMi4YG*smPT!+_z6QpaoOw7lE}vlkMw4q zh8M?m#iRH10b$b&SlIHW>{`#!$MGmf#%>e;!z?~{_hHfXm{L${YI>oZzXH@y!N zWBUuEvNat7RoSsfjX>k(lsxLpoLP0)OAfxPe-ifw#c?F1u&MCTQ&JG~YE@>?zo zUu*EfG%j|_q1v~Y_?&Xi)QEplasV;1D|q!SgUwnmIkzpBR^1bstRjAqpDB#<$w0Y2 zjm^Tu@wP9~8D3RJ^pRZ6^8(2jjMrpFyQ5@VuAt6ptay)l zl5gIUs|%a(dO<4+lKT*Td=Tb8GSOrV> zMlpG#%%VqMvgy!UHubC^D6*8N4f4o4|B4=?N~JryoR162*-%)-z~4F43zK}fM-i#F ziqV!1u50ttDW0B5`H)vMwJo4qiz1ZA%bB$G9gRZXa5MQWsS7{y`&o_jZ`JYj;tvWg zeZzE94dd%Rp>yp$ch^-(ACTzod!N(qi|Do!q8L6|7zaIrIC4Rl08<{}xyY2S{UwvQ zNqnIRYeVJl!))u41#98;+*I@rv{cYWq27)yGzcqVF~T>OF2;X zmZew3hrhcR1NnA+GJ8Yq*Ejg=e8bv4rNpl)#;}uk%vE2rPN$SvzuvHG)Ccrbs!+Tr zXZzqvD%*ahyvKKXjrz&X;P2$#t)bV5PfU}Y?v3RiU}qJN_DD}bSOz<-;>qd@XK#nm z(K8U&P$%5aSPIwtJ`w%Ihri`IKW!w-;Czw+nlg*NnavE%Q8d)+#K5%1y!+dfLDRca zr|iSxvFfy|D^-LwDO9wa_(S2?t_8lE>&g07%(w*!Y*UZpy38Uv6I{qsI+A-if&qP! z`Pwj%7r!DIDRWZa<^eb!3ubqdCmeGVc4R~xGvkv`JV|7^da`8T(&=lEOH-2~E-ok$ zPh>Ik8opxOvqH8+7jn9l>|kX7eQ5M+It_WtJS6N*~Oq*VxaNJadl%`kKCB>F5s>%6l*4s_eM`t-@Sc&WSUx<=-hL`GGL? zpUbrq-DzhpVM~g)wd33%zFzZX$SMbpEf9vxKtlo_>oBI^H2b!kK=YV%jDFuhefL=m zJv)-AW4fbP(VDjd+Y_qVk0p(UpgXxeeaF`*4AvGX>~-EN;+LwUGNPW(mr98L8Oy<^ z(X6-|N!B^hUA@ImcQBGs>*IK~CkDM4k`cKSK%%=3Gr#&U>XE!pR)z8Ya|FvqMdDxu z!}r9aA^r-jlyvcCh-a;Do^+Pw(9uzH+L5^gP0bOmP(HQG#gDqUh;;`g|85}u@_5NM zh_75%{@Tqq1(NTUe`Z4-Jq=&7Dy5L>0rI`Ae8Bp@g6l5X6mvuGDGlEV1*bo)=8!p*H% zuF{)sEsJrjc`hFJC=$iL+R#;I#2*^umu$fu)pF5f1b{s_JE4R0!8`jS-uL zbAHH4`U|?=##=OzmHjN~BKrCGg$_8qvccQZp7-JzzIe`8u1_$xzr!G%SYAzj%BJp_ ze9y=xtXTRyD4=1leBQsy$65T)T~4R+=4T?Be`86L-CugP>|&ZnvML}LO*xBhedbT( zqcHkjNaXGMbowmJV(^GejJk?GH#r$M)o8MZhOj_p>Y&E9;^lXsti5Edw)?WH-DCFe zaU;9PmX7j`TxE1qJjGXWPP)UJOhcwy-lXNN3nX4YK#0LsidD7|UAvvVDF>xX^%To> z_w(xDI*dJ6V7z0!^dcXUyhb9sTZVFHzlUgu59HYsmd4+giuA7Liptz4ioNa)S(Z0Q zzJ-fPo3or;MP~|omns&`O;y}o@=GyiKs(y|3}Ml&Q9OFwgE4w-7;&KsBPU9acj`Kx z=IrBC$L*|h+%Eiy6SxNJQ=x9d>gD3+?kil>SPN#A*r3`_ykc5b;(L-D^r+Lqd^yI7 zk~0+lcZj`rmeRKJKRW!`$DgW$w5-)eZQTRmy;yV6RL;lOg$o*P#=28R^qp}Vr%_sH z*Po^R>a+Nay-jgzbBZ=RO)x;kOY9 zi;cK;*g$d^lGAX$#pIQS)Ra8nuI#oHYxD@1uE(ZwV{SYUpL=yYUCVu?1Hy(-n+F{2 zKb`U8Zz-C5?WoY$?4w9ER^h|oespc|FX}ITD*SsHD4g>zEA~r9scdPLV)pTF?7rE8 z>&smfmkf0kb$T(1zE@h|`(!HTPA(^E^b9@?@6S?8;mfxEkFS@tSZ#TmOsjniv{^&{ zM(2sGGv?NDQx1$d#5&7q>>fLhnDcAtkTwqARjs-IwhQ0R_Tts2mb@N1oaTeKvZ3w> z=4m&GZlK43?w3S!m8@C7P8Kd(PuSLJ#9bdlNcChaD^~wMlHM{btF`Ug7C{j)Z@as5 z+1=gUiQV0Wf}nzgC?VYq(#^F`8dMsk6a_I*RP4m}c)st4n?IHt3ohn7V;p1bgYrfD zq=)JVHA@aL`Rfr5F58A#tuWuauc7$Q4q;WD#((d5LM<<0=W~sQk1R>cbz;^jSLyt4 z;pKYa{5pD&rgD_$(T0_Vw#+GXV!&=!`WvP*ep&>2gIr~nYAf^g(X@A&t9sXRm`Y>i zD9O+5V33vMExT?*cZ03!?9=Y5&im|D*%LJB5w%i$7~4qCd7{eJ%#7bX`k1O-|8}I0 z+(qTon;7gqgZS zU%AhDaeV49Zw`F{+vyQcy7WiH`$ETBLX?EZ; zU*z6@cjaFC^y!FY?ilvW?9ba->oCk;L7k_EFj&7F(>^*(uQ!`%Dbr+Lxe%|{8^x=* zpO*^{(?eq~qt(tbxbAH%M)-(c9KcG+culG2$1%BwSIVqzWH$#ay&PCP&6&GH9eE#+ zN{n$NwvXM}GR#SGXA_vTX@cs-?enVQ33>!|vY@H-ZQQ(VNZ+r9sxdmj>yDT zH+l2uKh#@pqUe93%hZT>)6<5$dQ;JPqR+bV-tv82WRvYz)d)G$cE~i8bCjCsq-xyQ zWJ*Y#4Wv44VcWp~A}>idz+Yi0>sfGl@+#`QGiLYSF4AGXk5`WdVAkgX6-g`bb~NN< zjO26I9An@7Rirjuz!IB1(n))mEb}9BM->Ksrf|Dd`jTaH;w`~^+Z)V*!GUxu2$JqleF^f&>W3iF>^P+Q-DY-U=!&}y>W@KMc&1tp^gGa`M zI$Cgl;vu}Ej;o%1o~~-Tq9Y$CUd6QF7Q0&Mvt{37)wFhI@$;QiRaVC?kSe*8<2nA4 zGrEDxi^1}{8^xKX!W;S}-J&kh{Q7p64Uq3`@Bhg6QFLJeJ3oGTUS5UNp_E%2PXT(a%jh4{l^LFVO+9_Ssd#P`9loP_A zDLQ9Cr_H|DkBZ`teFW=mLz#9Zl8m?*iiU;K`>W(lcKJ#tkv~q3-ZG;uV6Ln1FjelN z8Q9S-aU4sUA5fkBctQ9i!%&;Njgf1&QLq0<9;sWafN%J09Czh#%vlRYR* z?X9Xq=XEMyw?dVB`c~>%+0tsT^h~MW;=!U-xI|56?F2&x_w-`WY02lkbz$H3lYA7- z`lOa8!!%U5T=OI|Q2I{BU!uR0ld$v+8PTg7S)V4N`BY!H76TYPy*YbAjA^&_I;R7V z5FuWS=S9*5s%b&*cV0XjahXN67Q`-H!^spKaxLUe`|BL(n=i3o|8>GLPVm9%B2C=4 z@yB*2(fjsLTE3rMV~=6o;u2Xh_uEq?xh>&wyPBz(QXRwfebLy3$1}k-p7Ft<=;e#Q zziSx5PlWNC6u<-H61kVd$iHq}K4?#6?R4Rs9Z@B9n5^oP(}IO%^JV{EOH}n_ww`^X z`eFJ&Rp!)!QoB`bF}jRWb{w6a198##s0umIO77u1_*QPo1#Rg@>F2_i((5$-cZxT? z&FJms#U_hz-pf4L*y$E-HsaIp_oHZFB7xJQ7;0xu_i1JvFz_H-*2z_8*9yycGecY6 zV0!dy-?!)vKE zk0-bh-_?a#JM1`CZ7n?CTja|7@IKav7quo>S6NUm*-mo2o~#Xuq`F=*7E6+)?=+D* z*@>v+UN*aD2Ki?aXsj70J;L$K?+(}7D$H;^3vPFrxzkD*;9?J)qaB!aCPbLHa&I}AirQ|OhYWNP zk9e4LfJoPv=}iWE8q#W|BeNRa;((mjmVC8mrlqVsql77RI-0@lR4hId$JrTa)NF`m z=u+t-+Umn{(W?e0%NjN_8mD0?{1`1APY29fupIYZ^~*(rxuhx>9a$`B?&4)gr-g-ekwT)~I@uE^ruj9g}!=41D@hy&u$zFh9Z z0Ljl@J-(jogGQ=;6RYFnD%ug|b%O^l?df1|!tahFFkSLaW%9NoovU@pzGKf2S0`CN z%_UR2jx9~6U}t)Q=G$B-I~tAU$4Kd9^daW29hnEcSQHXQzWAtLSgEA1LA+eogu5bs zG(X!csx)(??d0&ZKB`G z{j|-N7;Fxzu)38*3xDy3b0IQS^5=;`o%iynn05TE8)z?bnRB zC!>U=E+lU0Hwj(fMwM`YE=}Jl>(EB}mt7-qktf0W5u)FT*RCjt)aE{H+7`@7{a6a- zC9_R(bLPDQnJ9PZc~dfQng58H$1`b>7J{{~>ki62u=mXbme+Tu*)Qo~SQ*5{F&=!2 zu^`LZ9nD3;)tM2@m?cTl>yXCpUcy9hlHb9=B+Mqp(^~Z0LmfkDQ4)*V=M*_-Kjhre zhfLp}j(Xix+O)8}*+FY=j@PZ%s( z=9hVu7zI_(qPl`@{a>@xv6^;cYb2-qnB$G(IdH&BJapDn$@{BvS0}cju5?rFr~hgT z2ASXC^8Cy6yta%lj?-CQxSgPnH$;1vbCAq*xBHrr6uMXP(#P4|$&&E{{R!?E&Bl>Y zblDe(X-{8LM3Y}FIrr}~#2=@l!nD40Cf^9fGCQ4=+j*SZA^yu*A>`>t@>71s$mx=i zNc5mluq*cqg0LL#!DK_>I9a%oa8NoNrUVn!CV^DZcK;lUr+fEA`5r^?^^&`Jt?}T@pFRb6p`06j-}f?XclTms~HA3 zY?~t-=;^esFFurAHW)R$#k-kTxve@(-G@8bFipYU4 z6h>4EIhgCVP-`}KqwK>Iet(a&nIqKa- zG?Be|=MztiQ(cMqZN-=Yd)ZvF0dqMEOdVy%hH-Z(cesOo>+3uyyGZCmLz0Hwp(4PZ zOT|v;F1I9arY`!w4X7*poS<%^wFM+FzT~RYeE>q}fvTQeV`>+j=|=?z)P$eb%$rP=|g+yU{4O}ZflukVa+I+Q#y<1@r#WMefwJQ z_K~b_9VPp9#u=~Y-fWxeN4s^7RJXXn++uUdjL5n+SmwMVvdFodMYo=kdlJ8SQCrdJ zyA?BX=5xtGKcz%JUzmE2xE%Rh&dRS*=DecVxlsH@*<4D>qKm-;F8xoKZMTEj)=2tT zLZk;^h7GqL*b4*08|O*VQ{OV2<%{m&Il_&GSIp2hKg6;*YcSN9%qQ#dEFLk9fUVOA znmC33N=LKc^*G^0Or)~)TpWT|GOf9+*JkUvr4q)CmGJs!Z)DIiIjc2WjYEs2v`Jq~ zbl7t8_pf5r%hfd0SifYR zmwiPtu!cdbkU7}kBmU%SI#RXMlKcO;aM(!tYV1SMmUphH=xPft-Q~FGA-gAp^H4H3 zzSkZxK(d#0WzRSLnZcFKkNDs8CtNsDK_lC8+{2&J%)cC~DX)0p_Ex&st7&=hIbALn z6CIUDtw}n&4I|lh)QA4(Tu_tqV549&${np(C?3oAJvD z^qGoE8N&pVi5$q9%LJbl%nDgSsiDl*dM(6#@e-cYtRh%rD?QuoW?9Rf+Dzx9|LSxely^&G#yk-nMhxlpm1f7chG^>GfRo#vulv0T`3JDH{Rj=Zbc z^xhT8LGv)iJoDzKn<3+7U*=6$PY(JK<)Zs9mX@ITv846Ahn~6vzpq`FyzXh%RG*OS z_+^YnOTXC?LwbtNxB1Eq{>c32%D{b0ytal`$CfiNc?*sNawc40q3mn9 zopf0tULO55m+A8MGFw|-rB>UJ*=P0f{CEY;+{=8FHT=BiIR+j&P5zwIxK7sPu$K6c zItaHl=m46Zx6!xDCN??9bLz1N9kYu(-TIXdwxx`fGx{tUX|Gxz%-t_mG|#a@$qi!8 zK4E|*C!jk)X2a6`bi1Pu=OP37loG+4Z0Uv=r;vOl4zJIm58sSoVDAiaOCQr_`7`d+ zKBtbq%pL=uaPDk5O@GVWcJE7^?JGr_tK{z^VGHL}az!{N6CORH#4T00fRZ~I<%jWa zTaL(#@#lA4bm|=ByTf5F%oAVq(92A^dRchGS6R2_I>W~aKX1@^+UT5N>#p;3(bi|= zLjx|`-#|6jgfxR&biOM+f7xcDMVn%`%8Y%opDqxNt=8^4)K0(6q~u$i^B3>TM{_17 zn6Y%d^blG|-&_j|+DyBJR@O}#R$eDyfj%`Qx*T=A%%Kg2?1?j@iR8fbW~B1BB8aLi zBk4)lAzgWk+1g?;%G@K=8EJ@)$#r__T$Z)%1TDv(AyVCt6m@fk%g;FKlM9inyjeUo zfZw-88wim5S<_Uuq~!5euL#5I(o?HlOxp%eS#|j-yIViS=U5T7o{xla_n1EObLm)? zMAutU?EatR+nd?3_tj0l-n)YJd+86Da+tkw$5_1hH0?t5qzBIsy{c>E_>1qWiyea( ziZ{dWE-~UKYd*=2yQdvE+u4akXJ<50#M?B>gD(2+e4Q+O|F15nTeyg?(jBV};vJV9 zL3oWY4|2U}T;ChR3z9cB_h88!58?iJaqX2S-pf45|L)2o@h`pqWha>!TRi0F_V;n( z9bSZANTq0o%nQCcGke=&>^Ex3TwH^Ylt!GoID`Y0-EnbKBfI#OYETnR60Y=MY2yJ5 zGwMrc*O{abIE9>(mgVd52tz%o9b8RGLgVi`qr zRxl$?!@0dSl+xznts5o1UuP{a3DcK5|6wM7*u*#42SZ1!;l)OIANTJg?B-dP_coAw z$xTLw*iiDz6EE=`>3xb6rmXm}obPckQF^FtBx@cXB;C2etQjh-iw@H3ZW=+qSrP2( z7f$S%2;MD=;c9w3R#6J7XyL8SP%$zy9y8}yTBxGlT|%Z zH>m1%^H=Ta)0$1E`%wGsldAKc0@Wn%A(Ejv!XVA_L>H{#{aqdDZ!%`#PY+V1&!+AZ z>A&9Kh$8I&h1xO9UgU#PWy{NLZnW4Hz}iINsGPXLc8BY7N6};R*+ncFIESDKOPJ7R zGP*ux@w-7bDe~-ZO3LBXFyVz&XR*6oHg9&y ze^1O{_Ng>F>ZDL+mdL6-(q%d$kw^oXvDK6RpO^eSB8gM3(pUUNeAe$(bXwtx#*B^( zS@d4D)_M+!_oWB%xOgd_?o-WsHC&Z5r6sDVYxy&@3$_0_s>U5GRC%t@A#u7s8CRF$ zH*zG$FCAn}f&=!4rHe(|f>RoI`1?W5l@B7sljMd+xhW4%+VD=pA7>Xg$txN0W1pP) z*O@a-T{Pfw@so+qam`ujv^h0I*eOe~cUiz-i>;#b9%S$tT~7Ql=gn|Oa^z0jpmQ`^ zMyi-QKYM5_= zO72;sj4f7Aa9mM_k#!lX7Yd8SSUTwobNJCLi|PN9-c>{4OFN5S=Z56V3scelcc148 z`SA4#*`rHnF)@LkH{960P6Auow1}R1RQ#jYc`5Vvygl_*i@YsWT?;qSLuLiKx`nD) zIww_=%zNUx;wDclPU2k9OLASp9J^vg!1VvikXd0;XiRloKh{sq;H9guii%BS|FLAN zaOe824?^qL9a_A)!zW)K{;jz~X3jB2bd>YF>VS9>`%`ph8v6fD;_$$}toyl|>dP}3 z&ki{Yox5qDnjYsYS7Bo(R!HMKlh}UaX3B8`Y=R@dME@phAO~p4}Zv7&2$WQ!K`$ES) zKlm@~Cr?^_qtx~TE55(w*q1k?_pPS!1<5jx`oNUl?`56+$cPQ!d7N9zS;;c&=_mZt z&$p>~-2hd+j)Yy(qus%4_` zwlh$z?~hf}8|-%o;i``Z35`rK51U~I3LNVR0zMOlMBB? zRlN3#qV}{kQR12I@a-Olw;M29M>u6AMm+31i5~5@5Yk{g|339(anf`WyG$ba@-9Yn z+t1XYreuD&#qAZ2>~D4t??y2+lMHRu_Y9etW^n#=A_wmT^RZ_j=^mjBx^tf$U0yJ_ z%@@9G`971RH*FeZ*h%AN`P=X$>7UK61bDSG+I$!E<%{=E3?{d^Ot3kk2V#ad)Gn@rR#wD$`1K6a#}s*@HhF}LrZBZte}Vg`EoM)>quRN+8S^u)QMJyHz(Lcno3V!870xW| z8G_RSd;Y8I#O9C(?E6#7*^(r7$em{P_e5@vEkbi!7NILtwAv*Mio{0@{}4~CXoZ@? z(gX`GT?xyCtsXO zsjp1A)=+smv6yEKV;QclhcW+Dwtk)2SmzoQB^O0Yvr)Mz`l^Mhkp%RSj_e;=d>9v@ zy0L8t3+I?|Fi#KHhVzLZc?h*ZzO<8>MR1uLo`a<$LAa&Yr#&IBJPo72vDE9FPlKHm zbSZv}!?`Sm?#;%zzBxpa@^Q z=}F-OO^c_|A0KYi3ucz^lsw0Ib9=t9!HV7R`QS}}cxJeNmov#`(g$UPUb#N?hDvT> z=2gC}yC&UyqJj4kuH+2q-;%6$_dgySJ8#da+0uhO?+&V-o}Bc zE#YbIFHY2{uQU_J#>Tbvl~XMnCqLqC8M>ra@0^u`QA=T=~=6-Xc#q7 zS|66q$p2zl`1~qU^wh{3(G};3*XVQlG|gT)s?07Ls-|9(dBy8P_Q!m5v|Q#KPB zx5!-hnELdSvxRr=1=_g!bADVjdS?PL9v+7O(#PaocqaGS0!F4~qCfU2A8KFYUQj{# z!>7WjdxdJF^#28xVsNL7nOWuXIcD+nXa+;ir{GW=#@*x5vM-6>u-cy$7Lw6wLd^LU|+l^N&Thob>A&U)|W2bOS;^Vv*^sWhV&mO-lE2KtQ+IS?}-7dm;88`jTiO$ z+@+U?HCD%*vA+<;#(%;My@T|(CkfA6SW>b-d~d6%oc^n+91zyVj!jxh+3beOh`@$Q zL9w=SO#1S&MrtXoLK-N>wvChrOPeY$7d^sjWGsd&jX2Z1J|0iIFgnYS)`cf!9`C6d z>UcplbMA2IC^us1@gb}{T&wCaU?TdRZex^cO3ve*yv@7Fu62Q&c%!1eSs1U+MpL=C z1oxq@SeW{R++Eih-x0tKexeOE! zo6Gq)OvR$N#aMdgyM*yRJ({gW{@mCSPWUt*nnBhGQEj>zg!CMnz~V*V;5zt|^ZQ ztB7H2h!J*@9V~p>ipkQ|zIEhPWQkT?O_v4i3ZL*$P zq5Hp+6x8bSb*8Wx4HOz=30G`k9A@c{m>T(ty$>sKeN{kAWC@lN#AB*@%cG^`qCHly zS7G02?w9xXc5}L~)<@IWfVF4yR4WcmQQaQf zh*lkq=s$7|zdxx7`?~{Yt4z7?BuwC;dh~C7oGZmRR-m9QT#>-~qE$t{ zW>N7Y*$a!Lf8;fbqpQ(uR8HZba=y>5VddKzYAxQe)8so7(m$f%P>SivXX2wQ!e?v} zo$uu`aTjt27G`^|RI=!l}wrmGtPcd&HT|`)%kdhD*W3`ng$=jvQ>TYus2|{&vnVN3(r#S4$da~cyZa1 z>8VL%Zq24>Od@~!X3}M4C28$zFzfeBayfu3R(!?Y%xURCM%}x( zowwprlUsC<&Y{3Qw$y)do02**v-k6*wPeV)O7>>9{sU@erinKr1#9uN-1-ni%$OjK z7)4@loyupO3fkA!ipHU-91hY_n&eBzV9&-%@rOo=QSU}du5{N9p3p=|y4_G&>#U`` zSSM@Y(MHPY1J8K1E|H*T_TuaMqsoX=XMO&8c^AznU7*e7Q!`cbCKjkppEh8A#Tf>^ zs!zRU)vBU(#`$9y9}9cOaDby(w$->vm5D2{}(G6 zkTlj`$;GKgG=U#-hW{n(ptT|Rm&yI{SUBb3GOIr?+JfCX{yX=B>D_ZU3Um zsKWeB8KwQJc{{L}p6&Dakt!Wx(h=tTD~6`xU$!~zLG?jb#)=-cZkz}0`~rAh;6Yo( zm&uYjTxu?#?Nv`)UxrIZXDWww=VLE^>vqzmaVYDdbR7!k^+lL;i3i};FqqFW$N6|& zA=g=E=j}51)=v8Mf>M}}na+t*4`?tYhu67}$-f{S*T?dhc`~0k^&&Rf71J@}k*q;5 zJV`vlA%9hde>G{nU6-*9Z*sb$Hkq-`s;?3M-kK zMpGS#|Kq}b!wjYbNAq8TDg83k`BmAPL28n(S2x9Wd~2HdJyjibo=l8*{<|0LW07Y& z^z?^Qxz3D@UA*OtYejp@+cX#?eAzI$YkauRZ_#9jPcGqg=hy7JTg|p{FNn0SAR$y{ zZ9hKYRQDt9yWW#H<0lP;{pUAW7|J(_c?NddQ<);ZBA;H8HT>@(=RfDr{zWF$4YP=fm0k|vZ455U z!uUiE=S}kXb-0vllV?o#F63v!9JcO|oL*Pqq5Al-c)KezQp88t*oLgnmS{xCtjb$_ zhE1UWNMtxc$w`$pG(k?1cAq}7m6 z%qx-^|3JQP%|~o#`Gl@b-ZJF$C%Tz^;mq-B`j%F6e9Q+<^!?1no1cZ7^_9U6-&ywZ zHvs{EF)I587p4V%5o@c1IU-eZq>^E;0ZTBS7DRl*pT zQi28-(?vd~B^yc@HN1pN`%5GiQ$}ikVU6U!A-uARl?i3soKT4N%Lh!|DvTU2PdxWI zVtC)0%Ja9`BYJH6qc=q>zJ~6FD;T~yMC6avO^xK6>Ne9_O{49*6~t*X;)PO>t~fllh$W7E;3ZQ?I)%4UOz+Xe+&G zo)>6XXvX#)J{%Rk!|^wEcwBYC?r%8D^n}B=U&Y>GBKx1oV24wl^ty;{Frt)+IjnK=?FXWdeZaZfd+FnluV4Q?8|GKz zH0P`6k#&`<|I`)Td%t2p|om0lmzSls2nwrskuFQvbCq2?}t+N=_CF-kw8q6 zJKOi2#4Y18tGdW+!PS+s!{sc0L7z>U=4|@pDP73!B$Yby_k=LzH;9L^TMVE3h{vZX zgf+`xVU%R02R){&x2!u6l{f~zqieJG^c`D8!nwC>h!CdisrTF+Ud;?0(RQDHLi_M% z;o^K{%by=iuKFQ7sPD`>UBi~d&m7+RnZZLpptY%*6@y=+@#2l>G4B}J>VtIF*Pzp< zhDXysqZ{ywO~P!!I=E3CpxfQyFjmmpVf#SmKh;liA7q+wLdpjU&f} zlTy~mn!sDu_=|r`%lan15A{)7dzNSYcG0DWsn#%{i65eAC#)qQe32|sQYUvhX&MD z>h%1`!*dM@ntvtz$xgKM0O>1<%g z-rb@_buyvzQ!`w4NbXP9m^RJC132pz#mUx;+4GSn1x0+i36YE3DPQX+zPC80_XuN_ zt-o9aJa70_FnF$IqIWSHPdVqd{PT!9zE5cD^opIW zKM05NgK)iT_)qR^4QGAfnO%*rAU+fDAw&D@B+?9LNQe!nGw6Ane4*1Jd z{ht(g|CTl8H@=oXF!lR|S)ANWWHzBO;}71W{>t86M=2_-qtwV9!T6DyQZq+gdEr}E zsg6`r8eLacdY+Q*@~Vc4YkmVI@U(_ zJBKx^^2A$ENPo%s`U-RPmdOXwch+!vL=6G<9~iUo6N&q4IJ>fj4QD@5(C-I(-2d=) z^*`yZt)r|iQd45*)=@gQ{l}*_zgczg59bd4MN{W5i97yr!=sk}Evscw)<69E)=`#k zP*V=KsH>!gs4H7i)RmpnG?Xhr;=R2CqooDKt3fk&Phv~vRCO*rcS1{5&A1(PI@wm#*pK&ps zhk0>yPmLx&D?)N+QGA{$RitlgnQZr*#&c8YAi74=RdIxER%m%wvH_XG!q<(Yuu~Gx zPCS%cS0YYLBmTFxc+1L6g4HN ztD3U#K^^5Yb(L~W4ds%n><4jmm2Z`5%CJwuZ+@Yns99+!{{_@ndL>Ek`OA9Bkt7Xe ztK3cduM_j;abXx9}SdNFY7C}9P28U<+a>c`KTlX7Zz5?|8H$l(xcEyW_|`-?jVt9We^;UN z@Fcw7B-46z2IG>lDce-Q_Cuw_$(?tydYLdwq;Ggk1;NiM2;2Lb@i%4ti;_Es?N4Iw z{iJ1|A2M(J!l*%S7#>>AV3)@n{*{i+S9m^D*s7Y+SG`3veV;@gsAcogt(1e`s;F!9 zm98IulKST}XReC}&a6ayVmXWo&En8hIjbDWCwA&1EcO*L?1*^$_vW*7NIs30O1D*$ z7et?aDLJ!O>~j#td50G)t9eG)!KacFFXrUpY+gK1$1d#wK8GZeT_rsHkUW02%p07jU}@vnx1~JQ!|Bt z%pB6XmQruvQ+gd2eZONl=2Mj|k*q%azMZ$i*ABBdEFMq|$d!oQu`oJY? z+Af+Hvv}4<#`0)|bcBU@urSS@lk;6!8yG{qu`+9!ARW%GY4SUj=B+Q_x+IvMZLEo6O92v5M-#X$+pQg*|?iYx@;3Qr+dwwgDXB!?XbE*(V^pB*X zmpf4rb{v>%LCRKVy8IW6s(UJfj-^t3CzS^+BblD&#jPEVqE!l0Yfh4644(4&)H4cV zve|Jhkvpb|c!uRjj!QhU|H_#=^BHrzUeG+~4f(-xetPy5{cC?1UHKc{{NQZpZ}vY{ zQ>Iwv@vy#dn~ypZV6cJbW8+i<%d=I}hpy$G_#{g36n0Gd{s4TE?-1^0hnG_f zFO1Uo6dlOrAP0874y0h9!fzWl=?A<*vtkRhM%)$F^e)C|?c!aK5m6~8B_l2UprhST zS=tfU%~g5|LfALSU-COaT<&N~_YbzT+-XWen)DCKEP92S?3a}Z(!(Nr^!zY1Hn>u> z!kYE+{8d{^f6B}}s(K1PQP?7%)uVa*Dw?j&59k|GCi$3G{1SiAm3QxG-2E%3|M!dV z3AN~ozCY|lU1imdy2`$5b(QUP)s_FX&1YmA>1y$C!g%atT>lGE%~X4>GWf8GOE%X~ z>meSf)@iCnj{{V*`t{?RFa_+Fo@UhU;i8HCk6BFPX__em6NRh1+yc8Br%6aXi9v!h z`)`C3HawiTku+LoO^Y7}-<2lY0Yz(AQ_OCv3qq*HQf|=92$=8vu_0WMKTfHc` zEpzu+>4tVvglDIS<`qd!YhQl$lK#eTk~>Tc$MkL@_r?h~eoKPz48(WRKAd#9hgE!$ ze34zA_yF^HDf(#Ais$GECnR8N1(B~SsUISH&hQHHK|GT_An8%m$)|&O4)4r!AShxg zt`C2x{?+e=jrU0k7hmB{=>%*o+Hj_%Kbzj|mAS!HzIQprC!MA8d~Bt$tnZ_HJJP<) zo*$|^9BpKQ@dih{v%>hjF_xrrk(`mA_eA$_T3RX;{79y+g>>BRk78|BDA`rP>{9b1 zyR{2@YOOi*#Exl$ESOVvof2CTPF}PK9;b$ zv6wWK{u&*TcCDmuDtEUqCnhke%U<*X%w#5N%pHS+Slryoef>i`x@y4F8YA%|8dKZb zfZbnB2v}&xT4U*oa)EeP0fAtb?q3k~sg42FIdm8zUa9DCWv@ z9NjenyTkXezv)BD319A3mC{eLv0oiLxbeyezx&(K$`K!bnHAyJg$X+07OJ&Z8F}#p zjr$tVsP-09J6QAO&n@C5gHe#+gxwEs+C2|s_<}H!Ok#Obn84JOOcu9&jCuV>RApx| zM9wYm|Kt(jRv--VEZV81;BPE^d^t}}I3wKwKV4Y&PWnAwHDTEhV;FMcrtRRr?8Q|NWSaMivHfx73+ohOK(<229dBJ zhKs%`Ubc!yBPxc+U&3kDD});keoT^cRLw)lW$k>ym}9W#%BWosZrL7}w2U^wBJm zf{Qr#;wfpdPdKGt$O@lg9>o>2xS@2`ws|D|gZEKZNOTBRR75#m^6ZL)HGkQuMXWmF} znu$M_*YDE(jXgakOV43Fc_)1RG3w;Ti=(#a*vscN#!pzZ!Q=-9vc~KlC)!1Dcz}v2 z8&i0-;{WIQor-_V<(>cDDS7go%4MOEX$q-I{sarVVu^zN&><8bg!6o#bC z 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%0A7`bW8Mg4zlgO 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 z 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 z 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

8pKkF8JhwRzMGXPg%k`LhLjc1$3 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

qmOXXValnn8q|M|J**wm>kr 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ð!;7+mD6EU9th4mMf`hCS0BClIP`of#vqXJ?<Ho2 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 z%0D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 J9v{V9psKP+rhcfV9peo^&0zRc! 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�pbqN{+SfJ; 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%0AA|fz`TtG~Xbcx&I#0{jl)oUr9f!n?G&l z1yj^Nh90v&5YsLjOOG-lR+f{L9)iy_KL*HLd~I+EYsue&A9e9YLs<1tm4!8|n&W3~9f8=OgINc|!bZ+^hI^GAHTCX&A_ zh0Zs=5Z6B!t&6{f@2RdVYpkZ!k-OoTu(KK2;tlP9W9DISU%4S{SU9%*-U1jkts~rBz?Qf5@=EQo^1KC<133;@Lvs=))X)}qL%f| zRFtlVRFsCmdwoLq5CLY2!Z%{6M zgPBv{%VN>NlFG{HHKm+~dq0ws96_)7e!OxDCN(+ zatD7Q=X9g@k|ock^}iDK^ee%lVIdS`O6SrSo)}AZZc?W7hfBXy^-DTDl>E?M$$rUu zZdwz`_Ql>NLpY|uLwb(p*|Dsx9d`|!B)|Ov-DyE&_l*~CS2~}>=N%}#jLutg zIeXlj(ZYK?8SwyDbK&0UiEi`M8cYA>sMq$Sr~Yc}!zHIwr6WC0H+kC7mSUN=J)K+$ z8X3WymeKWh|azcq-1*6$b@^$DeO26c1Nv92wY9xXLxil2O5>Ni%- z*wt6Gwf@nxhcNFR6tGiGdIuXzhC;l3b1PL8-$;u+~xSY#ng;HNwr_mNivUNSJkgv@z2nJoT4iHjJe`9c<&c4K4J$(95Vk_frsU;@k!3OJJOq!E*fLCr*L=$`PJ$@pL#|xe1_;WqSZWY z<4r+N@%F3}zwc6e=~lO4x4jKz;#*#2^Ml>u<@?`mNq=(=GaFXWSmwFWbybvw4f4@h zohdqFx_CBnShz>-AV>Z%M@M?x&Ben!Q#eFg75L>ch_|56x(r}IolGeFRidr`Y=9ll6>Ay;bU<^?oQV!X=KVQAL%b#CH)yoJeV*0?(tn@ zR^91H++0f%yl=>T>3z(S*3y00 zd(!t%|MHgTrb>Qn{#nj`y2^H|V36a8NEVXWxrnUexzbToO#f~lX)`L8 zIbXs=1AoJ|`YAL%na8yY=~R7-!Xnz2`&NF;Tl0$X{iUbL@HJr?uNmGA(NLdYYGX^g z8TY6jWk~o7OGeanr6Spq)7NDO-Rdp_gvYk*hcW8@j+kx}zRWC{!~4F(wc3ka;(f_m+J`2-k9|^p3=D>*_P&E*l7y)+)Vsu!tSt|E9daNOgaz$%$}=J>^@JOU=_>-K$I!l2Acr@2(NbpUZ!(t;&3ntOnl$!X6jSc>gO*9+!(1VE^+XM2 zc1RU-9~a?uPtJw`rkJchOz5tS7`xpj&BUA7GC$sp@<;oa5816>apqAP%GZ2e%!y-j z*&C9ik7f4oVD{(B?sjwv!$c3(-~65fDG{8W?Jw`kr<~egKqD{l)g3nC&4Kg6YD&M_=M1Ou5`Kur?FVLO<6sD^HNK8x+!_A-H}LX zgGAwF$MWbwoOovBS=q3F%%`F?^#8`3&p%mhUd`PCc&yH5hy3~5{F2!@r;uI?i`miUJsKaS zM}DC6APkVcuJ>QjSoxij_Fo8m4z{A52iiN(|AqKp=PBY}ieZ$V%)XXcjJS|NRm~56 zFO|K!-1&yi$>DkBH&i@-^6}JP?zqa|C(jq%IpRwekHXhgKEfIi4)C!<;(;2>o7RoE zp!+2B($BEawBX{N~-%2>@nkKBRAH4f09%KtOMc<}`h{a#HFtCX8 znqGWAdyO4EZ&CM-6A8yWuwNO;#C5MRI+Mh%c$w+WiEX<4e||N|R*x&>k9iJfYci=G zUI0_7X(Re?{UN1{?OI8XR2Ai(v5K;5Z$3)Q3tnF`p#ANA(rLAVKKhGTud$n4?l51= zQ94CEF#WL^0H+h8fg)n~K4!}jczsb$QSk>k=e|N;Q z@a|huH@?O4cC>IE#Sa)Ro}zWa)av5FHn}_8tS?=Kmxa~vS8@RM{(L#`ihL74)=8$i zY+V!sC1033!;jR4R!pmN7mX%&x%K`A2PYUX_vc+MPZd^7eS3^Mx^S#Yy3@=?8Xth-nYuw=$?Cpw6~e0?8VjLa;>=Wj>Z?+0Xvmt1|SFz3GtvsLRk&Hvf6 z)x}1b8jorE#+i_hp3E@x5}vy3<*Z{UI+eoqU0Ec5$tK}qHp}#C&_5tvXgeJKj%14n*`sI(xr27QtiuTq@pRaB3g`nf0&}vN}2jZPjxuz{#vkSuR6n^O7&6t}m z6TkZoTwb1J;BD!kYidN8sWF~!gbQ-rkzYd{#A_?P?lBK(Be0GAPYN1MTz~>;0L0e2@xF-*MCFHC>~^3A9R} zw3Fz3hG{gAIbwfl5iPe%=itJhR0NbUX|VJfIp&aI`WDx*38Z9vBT=hda!+NbANj`c z$P&q;NJd6>50T=*-!8idvji2TSw$^FANq5Ss!zg&8Fu#c}|#h z%T^KMIf`Jt7Cbgm!T)?W0_qMC{cxplQMBp$))4iI`}}Gs_v^;;9C`1^p1TH;(bs2| zp&`RgTM@1qh;EWFpFjApvO_37E#ERvJB>(d;dhSvKpmqnwzRb*+F&KuXH6!_au;<5 z8{xg>5^H;$C+`_`~5i66Q;pgwpKKm$|s)l1H_u`J7#Y-|R znrm8d^1ezZU`sl)x{F_JOAc+HiI)C5gS!{XDU@^POOWjJT1C*I){kWt!7~58WQeBl z8@2>6XqPh^I~}IMjAeA~w10ONp)}0rAD9T-7Uy%Zp5zD#?<*^&OeujY}9n7!9XVh@7BTa*SI66UC78?>sZSkIy&t*>fm(6owV%BrC zW>KSiSdH9I<$EK#iVsw2q|m-aI6E}nVfiJTgYHSV+!mjp<|o1q#&Swcm`T%b(#779 zCd8f2CpjM z%za@X%`l-(_7>)JIfGWLbdu$m5W82narVX-FSHO}wj)ang;{Y@m{oPe2PbEjuk10> ze@Nb>`C}UNiQu<*p4XO2hGXwr;b#fQ?fGMQwo0$`j(fCxY(VB-$%g%wp5LWM*xYO@ z%V+43zQ~gMogeX2xEbm#Jy%@ zoHQz-QRg&NmnD&X;R|Cz({RZb&VGOK7W;n{zi%chreCbHwBzzewLf!6hY>^A0zun2Q4Z!ET+-q{9X}wLDRRy_3g}mj< zYUzV~naS_ipKSc{n@`V^@r;&Es;nG349MoJ+&LPqh(ycUm;R4jx%{6c2W}ljedug1 z=Z=s(`v_sVoRS_=OH|rBG9yFwCk>wRyZvJ>jPzuCBhe~kUft`J!VFsHE@+qVGNIzw~F0GqNKB2u6BYa%Azvv++p4&*4)`O<6rN22}JTZL=iHQ15 zg9L?~GhQ@Z7fZ8%m-Gnore~}>2drP=DSbCNqsG}m0 zwLhbOTd&)^=pgzsc(O`y5bvfR*)C`rbHB z_erNHwcEqStQnYY9L^la;e2);fp+OmLWbYqWMAo?wU#}_QzJTycKYt&ZCYd+N#C{; zYttXos@RMCC((pGOTb1vQ#s!>KhzIxGC=KqHmYzg{sm(!x3<)oN% zwB3Hb#B{;tRAuPADdSmvU*Lm8i=OrORJ6 zWx4nSS~Rbx91xDm-brPl5|L*@01u1Z+LHp+hS z!MKP1qillo&Q8roH@Ogx*kAk#$V0EE_??%$W}TcvJ7i}*-rtAb9Ybh4FNFxRROzMg zqW33X3=DkHY#0JJ!suKoUBufg@%gZd&gPSacQ}vjq339OOMHyZW*jO$E!q@h_Ttac!+XMfR?gHGawmC)xFH3uEYD@dd9Ho?xImaie{hsUJe^ z%s4ECEz)6^f}PE4tdD->T-j%u#C*b_P9}OAzVd8Eo^&o33+Ja+Sam9j+uvVIom0S5 zgYP)?kUY!g&wTA993q1d8nzDPY=$4YRt}`~ye-|_2ZZ%7S9UMb(U5IL=Wh1oWE#-c z_b|2^XR#T*1Ji}aIMZN1Q##zh!`O^#8}87%h4?6{&B=PB$A-i5V_K3`85l^!EMa^I zr&wpuYtq(dGb#5AyB2=pQIn6@%3ZQn^D95j`_TRVcFEI>lNq8b&qjR@4cnL$S|rZX z)m@uP*X%%IVkeT^@c><(>M?TT9g22~ZW(x&bsfw}+HJ%z`3!EW-N>3(6Y>5$o%?l< zb4SIN17*VSHot|Iu@+Md42YR_lYXae(A8a^J8I4xQFG+awIC{TBuDT!6t$gk#Hhyd z;h$(;ACj<>o%4UjzhyTq=S)?pbX+F0>Txhb5zbp#2rIf~a^*!P7gdD0FWGLbLOT{| z%;UrGF2uAPL;Nl+4#nS)zgJu4nR9eJE`8IB3>j^1CZCs+EZM$*ubW!nS<{2{8|RA4 zMmok)M{;f56|UyrC*h$UCUvxUHN}u6-%W(i<;2!GVI1BbE{vZSG@kerr?ws#dAqUH z-kZeZ(xI{M2|o|KV8d@W;qeJSQenJ~+<{V|e^~=0^Nta#|USewXrWdpSMpNhfgQ3c`FVNHLb|*!Q3OZ1)T2I)==5 zKFGcDlPoZr#8j1LEbZNrc1b;?b94&RCtgI`L*66h#_}99XLgYlPMsV%x8H$gqR;JK z_y+qUp9vizIet%XuFF0w+1`lpI=5;0;0EnF8qq#Lhb!8bNmzZ6!M3|dFu24A2gx-C zJRqirFq_4fxk!9Ytxo$eW<)qzxhZG}d+&d<5fcjtcq>}@#_x3PQcvl;t)XJ_q(WHC zIs7M_F#X^f9M;xX4)#`2%AZ$pMrPd;Dz)?$##?cxpXgTp4l0xWlpN>fKpM7kbloq>A&2NNbZjm24sm}(>>p;cW|J|vCyDjHp zkN6;ByyLmF`z>lyB8ZL*qI>H|GKPLYd&(#5R!F0aUOv~$KjU{Ije>{Yq)Rvq?-8%q zbXjJ-;b+-aqAlNF3!DddQh%5)GaC4@Usy^b&PKA-_XD0*1$Zwg;qPt914Y~5HQa_} zE3H^0%!>i_g8Ank%d50h0uRd_>qiEA?c~m%q@oyzXKh@hB{QeqXGz{|jt;hE%5zhe zZn-X6kTLExAuKZ!pZ}RibcC_^HCOKMh2IH$n@d;o513YbpvjyJE)4%Bck&+Y6aV%!H08uV2dQka6pu2?i9 z-u=G^YH(69qfNh)UB8&EhjQ>+Ev$m;s!D6gd1?QwlFzi{@#0IFb-akEp+E8JEFE5= zWwo0YPLSp?mh_#?r=a!h-*S~)$@oUa9>Hb%K~}X}$Hx9UaQ@$Oqm?iN);e-&wKd+0 z0*N+^Bh@mBh)L0Gstm$tuMZtIIdS=qrR@EmBnim$DaXE%|{> zW4>^?>sLIwrPI(RjebkR>iSQ&(u&wVjZvCB1j_y!KstjY?;@+G%-dKEY zjTrv8DSuuzB4X8G@?7=Mk)EY>(bsXAcaZ`exj%*;mJ>)`x0#PPKgN#tH{E6K31LSI zh2!&*sji7IqIUm>6BJ!Hf}eT;G?&)(VyvpNsR-ep0*yhXUUG-7aGGs-?5 zBV(;FW}Ay=>zEGxA6sx##}1WE&+uLJoTIZPk7p@oOO=Cks0v@}j~hMr2=n2;uc*u_ zH@ohA<@#AiDfm)XY5z-I z855+TJW0_|ZV#-ZbZw)e#D1=1S6N-9{=|Ap#|BN6mD9Q_Q-8EjI@%Y|r0NSlddU9! zP66G9W%K%R7Q<3=@D#tVmfjDZWJnj|NC~#$D!4 z9b1N7H{sB78=fw*VfHpN?yhv>RYO;t(mnV-@i9K4jZ7=CAZx{AEXF&~WBM%~UAcng ztvl?oy1@<6h=Yvpv9XUnzoL&Ze~~uJeNOCzYTp#Yp^yx1+oDm?u z*OzY_1WPe8nuhXTH&qjTPO>lS+vIZB_8T1*=J2fLC!U)nN@g*TOktVKHWgpZ)({-3 zeW=|a9HDqG#@PDsVRkSr#iL`J_=Z)g;%iwRO*grR-rMhv%Xe>9=ecpGg+F*pKU?2O z)>S1jdzN@MKT8(mLo9z|W4QAuhK1{6SZ5YRL0{3S?#0u)o%knCCrCeN64N&q^Xr^s zmAa*%{qPL|9fO(i(v=RWHaIS_W`B=OES=Pi=WR4OX?Bq0>6X0ox8S>Qp?9bXgGs!m zo1BFsw(bTk<@s{c{4VL@)x0q3GMgso@-xwitFo7K#vARGFBsR%T|8i^((|3d%C?_) ztCGTc`-@HR7o14-rbyaefH*k4#8{2b6RG+dSMqc0fRbjL>k^A+fATF=+Ch3{5 zTT^I-ZO!X#ngs2= z#>Z*5+1TJ11+miGu~u8S=#J!_2*yu4nCo9W={4Ms1AW0qX6_3G@0f8pSNsZJSuDGl z%K=X)6`$OZv)9Pxv9em?Y{4y-YUQKq!vU}X!GE4G2Zp8PtqWw2tdNeI1`QLXeA0$#RGMU`= zW%!QLP*m%vD*O7VDVrMBQO@b8D3!Zq-?RM}=Q@_ieN}kX8ImPGEqy!n+{o~AMPr^X zv%M4Xekr}}hE*K>UL$_CO7@!nrAw5mQnX!7`TMf~y`XHFjSDHQZ-jr}6-=t^Mf1a* zi1r>#t53VQ;C7t8vFDjCTC9t)XhN@Dc#M@<1+r#rsC0#imoiZ1 z=JgJ!^wo!($H_f&nelR0S-s~LzumNXP^`m(uUD!4zK^N953)1&3fJdZp=IYmW}+{d zkKE|7)R)s^q(`LfE7qn+zA` zTU67f%P7%;E`ct%p9ny``4eHf3*$pQ8BM1cj>kkYJo+u#+uX@Dm#}UpW1iU^<#^CF zV$?*pC=bAUvL8|M+^yF2#5mED5xl}gG~qz;mK<#4BH3qaq)CBw^P|uUkQ{>Kzq3|< zlU-XL<7KDyLwt|E?kY<4%DT$@%18XYeuL=`MAtj|kjvwqpmyc~w>|Fiy4;PGqCdnb z(9h--yLJSS*+BToZ!_6qkV9Y5!8;p%8}Lic(ZMNu>GE|r8M7Pl#iA%Qz$`B`sh}jZyIOH* zz|P{(-XHTrXIxZe(&qkLTE7~vO(*4i(`L%MTYQhRro(XY>#cXk*wBHgtzGb`2o|RK zE2>t;Ggsp~E97-c-SAO%#px^^luvlQbYiBy$7*#Ux&JCyHSjlO`M>aaR7Ww8?`@K@ zoxKhF)7hhiWa`z}{jMX<+0*$TyELt{*9qBolX2BIIIVw|{7_>ybdYYkJ(7V>ej!{7 z$%WbnacIj^o`##^YyW`Nt)KDxR4@rcWB9l|6PI>5SguHA-(S)Bx4faD=ybKST&2^@ zov&(>Ot*>|XqGId zq2qD-{J2l1cpB^6mHmH;2a9;ZI@zB`T?9}4aPF4N-Xl%k%37&R49Mc_2Fdn4mL9Sd zFVIT!A!NL8mbVBiMfmi)FBo#}@iFR|USV%PWBOXko~fTLTDL6emG^+|SML&f{R#`? zwD@GLEqcf!@t%loXf4dF1Pd+~8eyU?T=!^eItIVMqmCyIi~X5CT6*&)XH&U57ZcYk z@o5xM_f#2M@074J(Sa%rU1k^GLu21v;?gDSS|lFk3A+fb+ntsx`Y~ssaPTarF?sxQ z{_WSHoAlo}_BEq>=6%-gHs#c1Yfk#h?mE<#MK=r?yVshl7XuiXD1C7qr3ZR^3@z`* z(bGGZ8TlE~g`R~`a0SaZG*)gJ)=|Dm_A+F+s?zp!U1iS=6(#Iy9c9llb;b6ty3+EN zoFSKlZ}y+M^1gLrCEuo=a`>C765OPT()e9_<=Wq7%GvDiBo)5o`b|&i#dyY-lTPfn zcc$UwC%mrXgu_I4c7#hulK8m)4L-tp?-QuFJJ9Gwh-9Uo5v^y>_;(LkA8IFkIO07i zFv9EC47N6&L1nuutai|%Tlyf{Sg0{|LU!mwrzT7vIh+1r%OpH&;JQKD8-KR)ekwf^)|6FcBrb#`$^}DbXl*bjp{~5 zn@JbKdPm~DZ!)jZWrj?@NOP~7IJbGgs|Z^Pi|+o_iQ*5o6Bx-aEQ!2;jEI} zmeJ_Xw7inW%~!&NRFmvYm}D=#?=g45Inh>5bHjN9Nnukk_L)dSwLSbT5oT1)HTo>Q zz?}_7!s@uszgOK+6M@8^f{-(b;&3j)}_ zFP`+&NS2I`!y3sSV3j`dP}#0F_-BqULo_8y&`atE54O?R@%&5Px@oexdd2*<0V1+AL6%3U{B_BQFb zUMu6*rGL1&l`vpYI&GZg*Nb;1#9n4St$bpil@fI64&x3@rm$=Xe?FdMX1pB-dpc87 z?ZgEmOA7i~@Or%5XO@MsR$np_p)R;gm6=S>7mMe?ShQB8Q!fbH6uBFe-R5%3{d~&Y zMs?Oc+8i@PO?>%_Riv{w`2zZNw{x+0Ew8su%|0s`F271)NK{IHb}i8evuuHQ%m;`^^?fwYM?`X^AepUwQaB;nS)6Mb zmzU?_a-o9XsZ~7R^@n)-VmwBDE4;Kc2lJ{;XL;XMAJTST{;7`Xqm4~d4oIh z8MuYPWMRSuNeAW!clN#!Z8Apk_YL1jH&!w#Po;Z)ohJu;>?FS{J>!Z2+4A{p-TD@r zw>Z#V@)Gyu?(;~~ixKktiA~N#NA3sdZ{4J1Tpz>9PLvu;?qPr%s;%6ZwAY&}yJLm% z{f=AHB+n^3#!b1UG=B2{i&Y01x#uFYylnYb;Ywk!BlovGVA_^DT+gtgVbpUphD*k9 z^(#jGea97}k8J-fy_E7gTsmFM*uKI8N|e{@T`3+7)Rp_g%jo<|x@&ds^Y+FO66Vcf z$kVAZw-3ku#z=;I+eFl+yBw{x7u{W#`u3aHrac|Q3u76)svi}-CvkDgI#S0jke--1 z1etE6&qncNXX(+k?G1vh9BmxD*Gu!Xc-*ki-YsJ}tCglH--FUy}1dg%iYd0G{Ep`&$oaBDx>oa$FMzHu)JoH7Y zIV}FtEIE&+8!>CrQ}JGzP+pReg?7^?io-}zO8T4!~?BDrHw`nkA_P^qA=Pz=9E~U@uY<63v(%@z|ZEb}E zxAP-C5~L%?&Yh7a*0M7+V?*Lil0O|`yxSTU)?dWNvXSCP8^)%O6L@yNH`j`rGb*n? zCI7Bc;dq;u8};%1WXQA!w^%2+=M$H%^Xak;SBl*5c@==s31Oh-B;mWYkeerjW5O>M z{`kw4B_+&Cutn{ow&W9U5WDOFeaf9Uywsci+itRV?ihy7FAtsWTpXGkGLr^J&(Y9N zx*&U*Ft3j2f$yHuIry0{c!F6z`;~OVS+Vr0j`YsmL3>aF6I(|PnU-!{@x&d)&lG7|!sH5h=5NFwmEOe!=uGnrSMRLI0fpg6cGwa!C zo{XPEQTJ0E&@_~O@h-_Hu~kK)hhWJJF{!Yl45xwwm`*mXjB)0 z8Oc@I5p)Lrf=v%hdV7QSWaz&sXQ`^9aeTsj>2!WL`smZ$t<|EntYY092; zSt^z#1*|)uqAcrGSJBw^o3ZDG=j$U(>MZeV`8QBDh!4?O`m2+itN6RHknZorYY;5V z%-vZm@Rylm&T8>v&SpsNJp2>K;McY_svYVxc7+BW?doHat|=MgsaUN!$a1?|H2h>G znJ4M;wU)cvG$(?(n=!;k`p@JH2wL@mhcX8?kCgArj|g=7d}cwPe7046;*M3a?5$+K zS*M)4D>5l*Y>l$_xO{deQr)isR+qnqE^HnVniL)z8at#YbgXsZ>0(S&gohc9j&!Y*OJ1hzz3i*B;|W_N-lqN;qGjjeTK6+= zqJ-~uTzIU*h3OYS4A;o1uY5 z!fZ0()$)f_J#j~S|5L)(2l6}jC9VE@E4@fzR9)~#vyC4UrK_XN(2uNrp$v0~p=-+Jp05qwOO z*UTQ?)N>baxff6VNXNaSHY0jnlb%g`+TFd$h%GwY+h)hwbHeAbv5`5_P==@*i?r=CM)mM~byu|1#%Uqi>E z*=H<9+Dp-~x+1w+0}kZtQt@1P#I-Ki1o&dr$d|IdUOb%Z%ymsiTE`t>_J!%FdrxAa z!))3|A7oh2ZG7~MSR8CXVc=CfY&PQ6dlh?L?55!;ZLBX^p+s9zGunbq!QPm46z-CC ziu4J{*Vo}ECcVqJH}D$=TS?~5P4u~7;j{`zN3FEJ(&xU0vgV+$PKC=FwXd%7%~f5= z?%P<|Dt@lPDvgy3V;U*n&o)(l8aGfj7FF_AO}bBv-qHX4d(75D_XOcfKaXaGOAN!+ zQqbS~Ntnv1Y~7KLX1zR)2mB=OLMdUJezH7Ja?UFfP?~NA-v6l4`g3vvXPw7$@_V#%} zM(iWWH%Qmt4Dse6S$gr8&ij*qTOaXOT=|8&MwsNULusCC!+)|P&<)&RelUI;{8)w?B{!+@8K^#?r<7B z$zYeC@U(9iGPX!wr}dH>idjKy%^sqj3NOU)F^{eqVVtvphF`YeuWLm+;a6=Q8ARGx z4>AbEDEu8oGQaBmA4g{ymesnoQOd&Z?(W!jcZ;pq-G!~#AQI9_Nh4(eB1lM#1&RWq zh=8a_2`DHE3W6y3&F}o&XJ5zTf%jeOdFH(DG4iD2voepV<9_1Ts)|*&D$)7R*YR%rSvqkU^SU-%wFuy#uW)m;oS0xCtSlcdDGy8TO`c_K zj(cO)+eiFI4``z4Avth+n)bWOt-a@QcRa@<#S@zX`5e22uUXhhmm+8&e%OFf2~%*SfiI!-ke z?#c=21UFyD^`9%Kl6>fvS!3{XoU5(s?OW;R93lCbz9^g+@5Qh`* zaHN4JbEIojtn0|4Yq#h+%9)L`44Je_AM=8<=;Z0rzLgd^Wk_m z5|YL7*I4d|^tP>*)6T5*f>Um>~Hk(>QS}+SD=hhpSY&N{7JDPMp*CSbJSx*y?@gH>?F& zg_5~#xmP&#hv*b_n!JNo#2ImyV+&%1K_mI?t1+AmQD|IpgT|+gXxBt$30u-oksZ(% z*@;eh{78B~QIsBkg2AVke7*Gv&9~plb*RSDSR8PL;(pJs=Dc*e@;>|{?ux1sC{BrQ zXR3Hp?;CA>ta-J;kn!Vv`H<+$yup4PdlE1Fqj;{a3q`F@ zG(!v=DfHdW)NLbCTd78~)9KL@_y3IE{BIyJfkdHk*v3H$2`UVVfb1YN8y}S7w3=U3l`K9uGly6y*hqot;t*7 zr@p5|a(-*dKBN6Smz4$5e_tWpf^{-4w39hhhf3mSsVLKvelhQE2{A8gnL0(fk{hcS zw(&38t>pe3C3A=N+2R3uDz13Rz7N?=+l(13%hG1SS~L3W7svgt^SrCsDl_TR(gE7d z6}4?Vbht<_OCxfcm>@PdKE_?Ax_AZ_dFL@?8=ZCxkvrnW)6=S{e zEx99vxjOMH|6YB^y+Sx7zl3Gh+mCa9`cb!M50)M5O|)$fRwTBgUe;93 z21{mIYd3Pb6zQC&>;pR(*ixGCO8;bf7@*j?AC$N}nB=sG@wOnvd6^$^F&sasSXmY(7ZQzplCqqfz@=<>{%XqETv=&@`#Cr6CKW&aMe zdg`;x)=+i}=0w|BOLy!hxsv?~?JD!jK6lx6FMu=e64}}%kJkyss5LE>xqSisBs
kR&^xmeTtkwO8k=%D4sy9@;7rtShoLN^*K1*GB=FXM(n&B?t5C=cx z>_u?|wok@mLkv-^UU2?X7;23kP@N+?i*%P zpw&Bvlp6VLoK#V4bN?}0_)vX&sVi+i)$%GrLpd*A-}?J&XcY64;Mw9qJ{d|olt3@hUAt>0wGo_+2c$rh}Z9`p2k=B_kCz58rN?H|dzKTVk$ z)&PqgP06fkPQaedvJ0Aw$>!ZjlX*wk;$Iw<*@yYe&*G}f z7G8z$iX{(XJxn^{6>^r4-*0k^hN2>1w!v%El_hc>+S2+xzQ=`g-#Uj@Vc)so@`;Ou zCBjFM?)$EKO8jaC#RaWEB?~4PhDlrfI7-HpI;2=_<=ta?ottiR29)%zF+B@9q?34=lt<;>eM%7n%Oz0I6$C zFn1A7a;XQ!X5vKb98Q^=LiTB4gWC%)+Axi012aiEUCN;@pICPyhffCC+=$5|>C0n| z6&VxJ@e)JRZTMTqnSyT8SxqwGK5|T>Neh&R@@|hf`2* zG>Z!pwa7m)3XKOXsZ#wE9si&+BR6Ofq;A2-3L6GR+TdX$eh1A+YA=Lv>0=b1{>c6$ zTX=SUY4pl{i%wN4R#S3V^)!#(O$+!l{WC9i$t?Y$nljEsLs{Ufs{9ZxaNUwW-1ELo z?u=<{ommw#o)*Q2}Rb?&A`(ebr-a9`hNSTmXP>=nj&rZ5oWO?YUa z%hp5UWFKx#@68X`Jt>B6-Y;0WJC#A-6WQe(fct;aU0W1O`im4sU5qD9dM#BaehL5c zCnsbl@?Iq#wxqD*}sj}u%l6T@u|!+kUiXS zVp^=C2l+8?wC0u>ainW-Yr{vm2z>Ga{*c7Q-jbbIy?V`WmP0WT%(shgSGK)INzrM%M$c;ST(M<|({t*>R4HXJtcw z9yPop+3)*Aua;h3v#03Gebr61m;qahsIaIIM68-}X_bm{#Y9#4`uw->h18YAzV(!W zF{+BK@U1h7>M2W?*H!+zr=e(@sVn!cYAVAzHdQ(wZlb(B`g&lKe}bJ2d$x9h>LEP~9oH zyS=a2bXZ&zwYz!yUCu5W`wGuZ9qn7;(M~=l(LDyIL?3bL$+<`4QSaRZow81nbKlG8 zg=hF4B6GI;4on+qhf(iqXyxAEx$!k7`j`>jK=|;N&oC!ZzBkvdGBnQ$?_)aDxXs5c z^%S8!O-a3GPlpLkI4`tjb@XMnHMAu_GNG^PKIHez5F8!6P^7OlZhH_R^To+?=ozzL zBr*3$I=S-f`R~+clrbe_d4FN_jraW6@)rFX;kk5&sTOez4+_E{HJooVKCr^=BWv?g zc^;Tg<--y_B;+!^e?B|fiaRUw3t3&|J<~CtxZfXm5&e$ZNb#t73ZpTh65p3<%0%%y zc9>d1eR+=T9siq!a>n{qkU^ol@SK;w6pqC^g5&e(a43hz*54>RUq?9{*iZ=_-Bj6m zu&MG!vzfADTYY71P93GQ%;ZW(|HMnB5YwlJ(SFvO^Iz+5Y=3(;tmub}p%%Im&e9`I zxBxwEnJGK%6^D%JRc1x-}vFF z{Fs#d})+6O+1$N7CR48*U26dZHuie=nrj`0*Ibn8Jkx)A%-NHkNG; zv-FA^_qNFAueUc#jitj^*PnTd?qK;d7{x=pvqxTV&?tpdk>Z`|`xT>hUzpeG1J~ra zt!wZIm3+yc4w3)e1s~X!FV8#;b;a6RLkXx=RnBh|52?ooVzvtZLuOc0K7?>;uk@|u zY@Rnlx(@GB(Ej<14ws+M<3p7A17#kt_da_w-PrY8kE64evdMn|qbHpe@1O;ZbH(YQ z=|XFD4=lrdG5_a=eUYcQ0W~H|yoH@qu)SoIcV>$-_u8yQ`ZB zE9%N~hRVKtZI$pPBYxrS`-6z9l?;nhQHESR|)s5r-Zg_s4Ux8g}$88 zx6k$A>-9UlmEp_%MUqcH3O+?KSiVl?T23ySb-rRZt%PSI3+N*qp!to{#ZPJ>xwI+x zZ)nEb1;eHLd5Qc>=Ctc)%CP6gs0W*IZ=owgYrMIn=f{l0a{o_@#n>SV&w(*4?0Sc& zhxcR;;7Qx>^8f#b9@E>H&_;F-pS*7pUJ*d_V`%z4mLKMKX}aPn56A3b)Ubo(ygkdS zkJ9;-j9HT}cM0x%kKp++;$cbQ!B9E7J`}D|{yUj@7qVd9XC7~<5b27l5gvSe%p4JS%S00EDw6*;FgT|^U`Uyl}50@id6W%_@!|x1-pc7{TMnc>I>8k#RPi7Q&M| z?^J?&zI28AOHZ#uD#y!%*|Wz1(+T_7xqc?qV@6OZVarrhTlnRj$gXTQaP9IT_Jl->nP%HrZG*<);lb6x%F1E4hdzP_>h6# z)>O{K!H`M|u5~%ZlmEn9o@j};t~<^HZ?RqHru18cmFV)G`SmkN3d&>h)c}n5$Qj1i z6ZcZtgYK|pw&eL|w7iGmWQC{;^8AwL?&DUaEYbWvi0L$M55mzUg(?g%)T@gc(M?9&GQd!sF9X>bTP`EIT zZv}}sr9Ec<77HFVIf&7v4VZRWOvExRvZwW>q;LRv{_BO!YbA`H%cxaMqh#3tn*JI{ zBb_NM$RCbZy^&1I8p!4r-Lc!R&V=iY*s8ujas+yGylzDY;k4$fxO1&eAd_zdiYMqc zi5o+(c8fzRIE}JTPjRdxbJ;lx8zSU+qVj^R8^xuTUL?c9T84P3D0?UWBi~I$87=i{lE(RP78T{K!)d*hqfK6h5Rr<+03`jF(CG@7;X{My`O)qv+nH zI}2B9io57r^r!3f8Q!-mFMY?O>{!U!Ks^qOwWsSZFD4GV!O>(};gkvcNcMI09L*?J zu}8PkjqWXOk+;Z;A2XfFNOD0Z#17|42K+bCgw>rCiY0rN+}(@MH!SErV;>F1X=68U zG5(QS+@C94fT=cw-MT|(@if@_h_icj95W}pCb)45Hp3$+Zsf`*eIHb0=5=hnWL#(E z$lk0>+%eM84EjVJ;f(B@^q!9A3W!k4W=5|xIxSUL@xhImSr=$EW+zY8=CZD8B3Dg@ zQuVnXCdbFp&v_Wjw+>*-2$=&#TtfYoxnxdt88rC{xle6a)9eOCsn+PG3JamGcs{(t z_#s*1*S$V4qp9?9r&cm|VkteMs_E6S3Z2kMyd*#EZhnpDm+Tp`&5l>Mo#-Kah~5!P zF|_E!y_|Zi`_+b>?W9}t+mJO+Ooclo9p*46raTu1`syg&^^FlXO9*j!zUWIPTj?Fg z8LMbQ{(2HO?!s!S43`FI0i z-!)NJ?%!5X#_v^EE?@Y|_95y@qeM+5Y;1ic#-*;(Z+RWnz<@qI4^q2tE|I4PlWL*OdBY%zO2dU==q`6?7h=nN zd1f90%U)x?`#FPRCA+_8F|&=Pky5sndqGRdSguB-_xTgx+N*($_k3t%b_Bn40`Q!G5@eyUb8~O+TQ?-)it;Mg~Z|<7>r9(q?#Y?rWGNi1I zVkH@ngOlqkUeoI+>%&!)&%J&TxZ@w^(J(P|=W z_tB!w8JuM2xqYYw|90zB-{K^D7F=awV+S72^F?LMLt!X*akukrG*TbYZ@T1KuEq+oGGX3 z1u*rbCnK*0G1xkRvr)+yy1b+M?0cqqzv92VT%Il{BtFxN{q0uJ``|R;$(RZQ|ceq)UIVA2ijy~74n{2{e%&m_=)Yu z#Tj7z|Cy0uUVF=3D7%2!JuVU$<>vl zmCTn+u?|Z%EFkIfWa0X*;H1w6Vc1<@e|-z=dfD>jrwjM?Nx#uZ`UK{&;t~tz!vN_I z8OvNE?-t=7?9htR$D`yjZlm4s|0TJCnjq$WN+wtB6&EAKBh=WOoW85rdwUh@CvRnX zwH|xdSmR&fPX9>(L~aaa`B?GFIzOiK_E>(&{zd2AC&|bN*Z!Y$w(kDq?4L^fx2q{5 zhW=%y_FsO?R#%!tt0Kl$+8`@cp5tJb6^jT|Hqk9jG92 z;4hYUmHo^_VW7ABj(xg#5tgVcDw{Qw2-SZaN%~9AIMFl*o3HH5#C*tW`?c zZ2D7n4PU8$I)M6MuXjYR z`GTqJ<+3!gIQ}e(w0pNGxF^~1-zFq<6-2IPp1^sm0k`Hm~AzWjQWW{s`Bgl#JfO zu8{fa>>1}t_S-5B+B4{1_hYDSJRz>aSR8$muQPl&*-g5%+QQv($j1I+C{O(K>Em@$ zeBV~s%9*5Yci|fE2w}dZblruSeWSRPH6M%l)9j<Q86WbJWcZ|^(w zXmy*YlH0`0z0G^$doanH*XbUNEwiWbC`-IDj9J~b8_ z#2Mb4q5WDi>(72V&G0}?&am@-hm+F$k+2o~=~MlH)Fx4M_?yg}KH}e9rGv@RZk)~Q zDy)Z|bneiTiV-cSt=EFIEse3ZXhO>g)7UZl5+3;u;;Xcz%{ICJ%yi;bT`NA!u)|H} zAJeMtv!M3Ac!9j>xWWSqM>l#q_%c=9fTg|6IQ!BY8%<|?!(|uM=>|$&3tTcRnPBWd z{jI`RG>E{u;*q#s75d7(V2np0)gNV!)3pMPIzPGN6ob>ohiL3d;M4H0{A!uTf2r|o z-j_wo{6d`4#S?AtnZ6bu*}t}sO-ID@HZ4su{P$^+a*dE^D`uG9z@xt-p_;epD80g< z2v;6AbtX;TnN9!bNsQQ#+zfBt#)&igh!ypZJ2P$K4MtCN;9A=|q`y*VAor-Zo-)@- zctF@inQJV5M|#~1RBwK!nd5KT=}V4Dcmx?&0th+m!POSh7w+qf*C^RNJ+Yu(?`iyS zABWO*BY}0s$n$psD&N;JW2+u|A+}7M?N1#|$xlT+WY3fcYCDTRI?P8L+0qkAzKgEE zFXi606m&4+(i1D{KKEd|#RJ?Wb7?M|yc?|x7*~^nws;DfepOep3aXi#`iD36|5zCD zm(mWZO0Sk0O8tXs%5NPtWu!_yWqu!3MJ-=lN$yl%DKu}ZY`_{(uHWN0RQwZx0 z$$h@*+y6P^4(o~s&u~9p$J^3Jw;}(sI#QUsLcF@u7?G}aSSzm##MPw zEm|QCAH5Gu@AsDOA3qSJ@{xss#keLGi$gS%d+Fj^o%)>XuO+YcI0o~5FXf#4ny@9} z+v{A(k&TjJ_N&CaUpbd23L8S6Eo=S>>vBgu#iPEOl44R<(VDHIY~NYI+4vf|xcp+P z%@?e?(N6&&v|$S?xaL1Os*eC|K+$oR`1x4%5Jt)}Cf3UZuN$k^~0k2|4QPIqN$zBwgPm&s^vj!R=3EVQjT zeMX*Oy0$T@L+vo|cE?O+!fl@EFuQoS+{cg8?CoW= zMo2$O&71S%Y&j$I!C`W@YN-}PGsz!q+7~6eL19UJO=5*!K9(JXp}XuOZH6v#)<(c zdOX{I9oJAFa^~FS__f=@zmH(@!vt!#zs5o>w#|jHDl?Lb^eqg^TgTH2ODXQXn%UQ6*1gRZ`%pb{&lvNf zzXg8&c5;un4Fw@YtcYjte<@7gpGg2|2dJla#x6Q!29wI zW?b>bZCMa6+Qw5gM}A*7a_Ks;in_yU8L*%N+gIYWlJ9Dyd=~O&oMO@Z&64vQ!moc_ zS?Do{7`HKu+&qQ#l9RbH_!_3Y3`jj=ikX_~eH%O8NEG)?eL_&^7N?8(T1ohNA9XAhQDRDHbCaCC;y^bCC>{jH6`;<1)Z0PGjeV$ zEsrhXR7=VDHZmnY*^o>#Q{v_MJ~>=EaEpT(J1>%YT@-Of#&V^p?B4n(>>hi z(-B|obm=iHR9Mq3nG~x`e%rlbLYFKw<&5%oj~*R_5wfl9EF(4C(ABY)xtIwz=DJ`s zI)w3sf%N<#tdMQ6eQ*lx7d+>&;~Or2dyA=L&U!ecQKkQcJhLPg*(6BD`l)1_LReOL zmh&%l_&V5>Wk>CJ*4G_}Ew@-w$Cp&XoGRync z-lg$VabbGCAj~e8`!ah<_4_3Z_cET@$c|^zLk{%`qNTpD>JJ8xyX6T(i{3F#Q)VEi zzH_l6m*gzj2c-RA?fZ|y&dMfI+zHyvJ$c|@$(J!_STZs9v-jh%ZW;5{ zws7kCWy*@KQ?Vp~lj-uaud?U)Z0X$(@uNwBbS#ns=NAoEy8A8~z z)^u1tk%h@S>EUI>dzlNIIdhvu!awM-DT)PCqZqwM&duHIm?mf7u8%!we)u+93vHx> zdx^|XS6NeI$Kc2SX4%4cJ}|Bz7xm4>XoQqtvHcr*4Zku|ve^dFf0??qij}X$>HAzb zTdnIW`;_`hooV%z{u3K2%Is#!&bgY3?!lJIUdi=NDfE}SkSFo$gSpnwnK`GOQ5o$) zma`8{XN3#b`Z1@S?_gGaiE-P6hktr8sq&uFsC48@qWDuxZlixkKD*bWDd_v0w@L97 z{jsOAr}RxPYm=?no`aq$=yocKo^YWBo2F<}(|fPmd?c$T1wBf z!E9%2PT$~MOKWVVne*$&HNwXnN9(`+SdY?U-^lBzv=RR1Ol#>%JCNlh`>4k9wP^5| zb3sp;S`x|ZWs-HP7JkwZIWIPj<@QMN3M!8nRyT^C*(tp3FMaNfFN6^<^WuZAxjr_T z9Ld-jOYcGToVpTYr=plx7VuHdDC%q9U=oo*-9KS+<_TcU=YFg&dw?{tndsdQlU0qpar>OHDyTM zhKg=#C7xqGFm-k=8m+#fRj-7{SBfcYDeelrKP=s&rreVK>-sIK%8cW`$lqAWly<_C zudJuUCpA#4#f_9XqK-2Ab%F4_EGV+jLhGDxscx${QXYRO3p~t zfmVdeT&DedU(To8qLcYeexA0YQy(jiZZ%+(s}W8ShAbXv&6bxg_}95f+y_hk8>EMd z?lo@gyotATlvXVk7JJt>n0FO7mYkQ=yJe7(kWI^FIl{%vqiKxz9M9wl$F_{&Z^a#y z^aSI$aC!&>OJ|D}t743}?cs^uMq!+!NxXMX0te+i-CySw-S5N`8yL;5b_sZ@rbt#t zx_L{pNqzc_&MMW!R9A95se}cON+g32NaiEypsqU16_b6m)45FQDF?=O@Zr)}aT?e@ z;B&i3OgGBBUt6*uO$vDu`i8HwK6BB!mi2|gU=$aHX^FVW|JKrHVJ$!QiudYL1*e{t zuvNHsPS5``F{F&ml8vmDU38D~ucT|0GX3^adS*+l^!%X-?;(dct%$!{U0jyqt5B zZmq?0cQsVHj&YJveuC-C6uz5eQ?ez6!A+hLuO+?bC6Cb!e!-uxXgt3~aHXN_P#c%w zZeKu<{X23pKJrO2p1tLst?~66W%6^IStFSj|AvbC+G?~0y=V7w@zluow9T^nJUAA| z))R2{-xC5a3g<`qHjc|nId)AL?8cS6*p$n`>NGrGxD(m#7*iK*z$xU6_;Dn2)ZK$& z9sCKX^g!#EoSj<6;@=_$efizaaf(ATJ&lQhDZ;FaqJ4=tptJ6Ap@C$Lyv=!b;F`>I z#pTn^g~q>pa1vicr)FuGd@AP9P~nFD3nprq6%J=kp*#5k-I|{yReoM&V{VW+RGbz2 z1Napdib1e+hq_rz^KO$oPJ8zp?xJ2--)wE ztDFUHs!IN>T6{;SC^tu!iT|dSm7#Scdt5=|zN$*VTUF(ks+!_br-q+bllZ8zl;Giu zaEY{~c7?FxwkSAF3FmK|u*dBm;WZuVI4Nut*RM@QsxZFOWN-eKa>-bE={=$0Id9Y& zI8*gZvfsnbvCVud-ZKxfTKya<7P>gaTxCj*BUanx{l3YYulb$?yWb)5!9(5`hl{J_ z2^vOnZZ#K9ux~Cif(s-oP)vDqaXuWX!SRHOk|PeOBOgoI7?;UVLoc3bOJ}6{QR=+5 zAl}rMTN^x34;M%HCh;O3630i-eVLoa5|-pG&#aUDH%&NDuQp5f>x$%FJQ=!3{9X1T zv~KVe!T+&yd=l3mzh%eaKoVqM+9UrIP0pWS;vWYZTG{c%(w395_sm#)ml^4yIF>{+ zYnLK@(ARv=mhMSv8SD3cVK2gu+adR4&yO^47cSAaO5~);SK<^V2=*8e%O9tQcV)j&T`A)kCe@@P#4&oAR=1q&? z_xQHX9`&UzjEsrqm7SbHFF$2fuLx4qU1*qWz#o4T+REA7K>pr$+6S?AX)rp~;%Yqg zhFiZsQz5h07u#x>cO_c7_AZ3pvBSzffKPvgO)kHi!%pvbA$QQT?}{mvb0gmQB#$d+ zg^6(XA7l_&BzbyWBfi!-A)nJL7|OZlh2CA^D)};9dd9Wo?jYYMt0}HzUiIK$d?3|{ zH>us^%EBFi^z-+^e2gcbk|jUfM?7YRQQRsCW90TQ(r+SMUGZNeS7G+P`hWf{>qnnh zA$d>FE}`Uy2*b82Tztg$Sve$}WSR9xyKiO1#OwOD$(ll9or5$xW&jh*5;qEfTZ(tqlPvU#e1yzj|0tBm4Vrky-NHoP5?D! zhU}h4NDl2skLJq0GI80PdtlxABD)?Lkka@(8C|5;Gt!8S8u~oZJ&xPzb*Qu)fPHam z=7l%m*6^hmZLwiqh!?fTtm&9;PC^Iqv`ok(xEmUY_+?2p@ZQ-yPvP5zM6Fy6pwwZzCDNfS8t10L9xwAUhm1Sl&+}&+Wovt=K z{cAy7)gh)&)#K0@3+xBpH8XCVyP(RYO0FMYE{KLSAO=b zf3wXak1xyL5r0hPY3aob8}pkZPyUIwvywRX8ZytSDCZm2Q?5(zF2UgoA8RUTC%eBb zH#C&wqiV{+i+`yu(NKEpHc(DPG*cF@XrlC0QCHqePOkN_dWyPZ1Lc%>iH1J;&E<17 zvQw<2qs|?49d!AmGMXJ)Z3!r8M~LMpo_&*_f3Vz}GKDuj(t%c2?D*8#9?xi3d~AHN zOmLOG=OZ-b`M2?CGVT%CY(86p&WBP?{Vr$xGV#ioSKygbiJ|^?@iF{jXX7d^?X5xY zoXpdfz2N?;2<|ltV%ghUI8G8rapSP-7=N|3g&+yZVgJJD4flJ2Zc3*uY; zGp=X9rfNby{g;X(J1130?gKD34bP+m%YE@siUeGZBSKK9IFwiUp2WC zr2jFajSj{HE;Utf5k{*wk9)D@HMb(M22 zbrgfj2FhKT%Rine?4{lxshyK99M43;{FA9INf&NG5~iB(cqN_mijq-e=Mh|^rI!&(56{5^6XzzKG zJI!yCbm`&$oD5w?3j@yTmH4j`*mhGmp5ej7_VAEgj~OSvU1f6*Tl_ZI)AP2A^h3Ov zDEx#b>)(lilQqFfr@8bA91k4;t#lLsi|mHz2T

b=}?=ePZOTK}U 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

j{P8B@p2X!h*mUEvH|gW>Plfv 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�>Tuhoyw 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� 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 d0eJ=F6_8gzUIBRp Date: Wed, 1 Feb 2023 01:49:43 +0000 Subject: [PATCH 20/73] Block large files from being merged into NeMo main (#5898) * Attempt to use large-file pre-commit ci hook Signed-off-by: SeanNaren * Set defaults and enforce Signed-off-by: SeanNaren * Set to 1000 Signed-off-by: SeanNaren * Remove enforcement Signed-off-by: SeanNaren --------- Signed-off-by: SeanNaren Signed-off-by: Jason --- .pre-commit-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index bddd9abc3b47..11def93ec0a3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -27,6 +27,8 @@ repos: - id: check-yaml - id: check-case-conflict - id: detect-private-key + - id: check-added-large-files + args: ['--maxkb=1000'] - id: requirements-txt-fixer - repo: https://github.com/PyCQA/isort From 7bf8d9b80c3174fee782c32550fe212a2246f5f4 Mon Sep 17 00:00:00 2001 From: Gabriel Pirlogeanu <53811655+gabitza-tech@users.noreply.github.com> Date: Wed, 1 Feb 2023 05:56:29 +0200 Subject: [PATCH 21/73] Reduce memory usage in getMultiScaleCosAffinityMatrix function (#5876) * Updated offline_clustering.py, the getMultiScaleCosAffinityMatrix function, reduced memory usage Signed-off-by: gabitza-tech * torch.empty.cache() outside forward_infer() Signed-off-by: Taejin Park * Removed unnecessary lines Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Speed up for non torch.jit.script Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * parallelism is default off Signed-off-by: Taejin Park * nme_mat_size is unified as 512, removing redundant docstring Signed-off-by: Taejin Park --------- Signed-off-by: gabitza-tech Signed-off-by: Taejin Park Co-authored-by: Taejin Park Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- .../asr/parts/utils/offline_clustering.py | 72 +++++++------------ .../asr/parts/utils/speaker_utils.py | 13 ++-- 2 files changed, 34 insertions(+), 51 deletions(-) diff --git a/nemo/collections/asr/parts/utils/offline_clustering.py b/nemo/collections/asr/parts/utils/offline_clustering.py index 8ce10f692b4a..e911176b886f 100644 --- a/nemo/collections/asr/parts/utils/offline_clustering.py +++ b/nemo/collections/asr/parts/utils/offline_clustering.py @@ -37,7 +37,6 @@ from torch.linalg import eigh, eigvalsh -@torch.jit.script def cos_similarity(emb_a: torch.Tensor, emb_b: torch.Tensor, eps=torch.tensor(3.5e-4)) -> torch.Tensor: """ Calculate cosine similarities of the given two set of tensors. The output is an N by N @@ -63,7 +62,6 @@ def cos_similarity(emb_a: torch.Tensor, emb_b: torch.Tensor, eps=torch.tensor(3. return res -@torch.jit.script def ScalerMinMax(X: torch.Tensor) -> torch.Tensor: """ Min-max scale the input affinity matrix X, which will lead to a dynamic range of [0, 1]. @@ -81,7 +79,6 @@ def ScalerMinMax(X: torch.Tensor) -> torch.Tensor: return v_norm -@torch.jit.script def getEuclideanDistance( specEmbA: torch.Tensor, specEmbB: torch.Tensor, device: torch.device = torch.device('cpu') ) -> torch.Tensor: @@ -105,7 +102,6 @@ def getEuclideanDistance( return dis -@torch.jit.script def kmeans_plusplus_torch( X: torch.Tensor, n_clusters: int, @@ -190,7 +186,6 @@ def kmeans_plusplus_torch( return centers, indices -@torch.jit.script def kmeans_torch( X: torch.Tensor, num_clusters: int, @@ -235,7 +230,6 @@ def kmeans_torch( plusplus_init_states = kmeans_plusplus_torch(X, n_clusters=num_clusters, random_state=random_state, device=device) centers = plusplus_init_states[0] - iter_count = 0 selected_cluster_indices = torch.zeros(input_size).long() for iter_count in range(iter_limit): @@ -268,7 +262,6 @@ def kmeans_torch( return selected_cluster_indices -@torch.jit.script def getTheLargestComponent(affinity_mat: torch.Tensor, seg_index: int, device: torch.device) -> torch.Tensor: """ Find the largest affinity_mat connected components for each given node. @@ -306,7 +299,6 @@ def getTheLargestComponent(affinity_mat: torch.Tensor, seg_index: int, device: t return connected_nodes -@torch.jit.script def isGraphFullyConnected(affinity_mat: torch.Tensor, device: torch.device) -> torch.Tensor: """ Check whether the given affinity matrix is a fully connected graph. @@ -314,7 +306,6 @@ def isGraphFullyConnected(affinity_mat: torch.Tensor, device: torch.device) -> t return getTheLargestComponent(affinity_mat, 0, device).sum() == affinity_mat.shape[0] -@torch.jit.script def getKneighborsConnections(affinity_mat: torch.Tensor, p_value: int) -> torch.Tensor: """ Binarize top-p values for each row from the given affinity matrix. @@ -328,7 +319,6 @@ def getKneighborsConnections(affinity_mat: torch.Tensor, p_value: int) -> torch. return binarized_affinity_mat -@torch.jit.script def getAffinityGraphMat(affinity_mat_raw: torch.Tensor, p_value: int) -> torch.Tensor: """ Calculate a binarized graph matrix and @@ -339,7 +329,6 @@ def getAffinityGraphMat(affinity_mat_raw: torch.Tensor, p_value: int) -> torch.T return symm_affinity_mat -@torch.jit.script def getMinimumConnection( mat: torch.Tensor, max_N: torch.Tensor, n_list: torch.Tensor, device: torch.device ) -> Tuple[torch.Tensor, torch.Tensor]: @@ -358,7 +347,6 @@ def getMinimumConnection( return affinity_mat, p_value -@torch.jit.script def getRepeatedList(mapping_argmat: torch.Tensor, score_mat_size: torch.Tensor) -> torch.Tensor: """ Count the numbers in the mapping dictionary and create lists that contain @@ -371,7 +359,6 @@ def getRepeatedList(mapping_argmat: torch.Tensor, score_mat_size: torch.Tensor) return repeat_list -@torch.jit.script def get_argmin_mat(timestamps_in_scales: List[torch.Tensor]) -> List[torch.Tensor]: """ Calculate the mapping between the base scale and other scales. A segment from a longer scale is @@ -404,7 +391,6 @@ def get_argmin_mat(timestamps_in_scales: List[torch.Tensor]) -> List[torch.Tenso return session_scale_mapping_list -@torch.jit.script def getCosAffinityMatrix(emb: torch.Tensor) -> torch.Tensor: """ Calculate cosine similarity values among speaker embeddings then min-max normalize @@ -430,7 +416,6 @@ def getCosAffinityMatrix(emb: torch.Tensor) -> torch.Tensor: return sim_d -@torch.jit.script def get_scale_interpolated_embs( multiscale_weights: torch.Tensor, embeddings_in_scales: List[torch.Tensor], @@ -479,7 +464,6 @@ def get_scale_interpolated_embs( return context_emb, session_scale_mapping_list -@torch.jit.script def getMultiScaleCosAffinityMatrix( multiscale_weights: torch.Tensor, embeddings_in_scales: List[torch.Tensor], @@ -489,10 +473,11 @@ def getMultiScaleCosAffinityMatrix( """ Calculate cosine similarity values among speaker embeddings for each scale then apply multiscale weights to calculate the fused similarity matrix. + NOTE: Due to CUDA memory limit, the embedding vectors in embeddings_in_scales are stored in `cpu` device. Args: multiscale_weights (Tensor): - Tensor containing Multiscale weights + Tensor containing multiscale weights Dimensions: (Number of scales) x 1 embeddings_in_scales (list): List containing split embedding tensors by each scale @@ -503,27 +488,24 @@ def getMultiScaleCosAffinityMatrix( Returns: fused_sim_d (Tensor): - This function generates an affinity matrix that is obtained by calculating - the weighted sum of the affinity matrices from the different scales. + An affinity matrix that is obtained by calculating the weighted sum of + the multiple affinity matrices from the different scales. """ - multiscale_weights = multiscale_weights.to(device) - score_mat_list, repeated_tensor_list = [], [] + multiscale_weights = torch.squeeze(multiscale_weights, dim=0).to(device) session_scale_mapping_list = get_argmin_mat(timestamps_in_scales) scale_list = list(range(len(timestamps_in_scales))) + fused_sim_d = torch.zeros(len(timestamps_in_scales[-1]), len(timestamps_in_scales[-1])).to(device) for scale_idx in scale_list: mapping_argmat = session_scale_mapping_list[scale_idx] emb_t = embeddings_in_scales[scale_idx].half().to(device) score_mat_torch = getCosAffinityMatrix(emb_t) repeat_list = getRepeatedList(mapping_argmat, torch.tensor(score_mat_torch.shape[0])).to(device) - repeated_tensor_0 = torch.repeat_interleave(score_mat_torch, repeats=repeat_list, dim=0) - repeated_tensor_1 = torch.repeat_interleave(repeated_tensor_0, repeats=repeat_list, dim=1) - repeated_tensor_list.append(repeated_tensor_1) - repp = torch.stack(repeated_tensor_list).float() - fused_sim_d = torch.matmul(repp.permute(2, 1, 0), multiscale_weights.t()).squeeze(2).t() + repeated_tensor_0 = torch.repeat_interleave(score_mat_torch, repeats=repeat_list, dim=0).to(device) + repeated_tensor_1 = torch.repeat_interleave(repeated_tensor_0, repeats=repeat_list, dim=1).to(device) + fused_sim_d += multiscale_weights[scale_idx] * repeated_tensor_1 return fused_sim_d -@torch.jit.script def getLaplacian(X: torch.Tensor) -> torch.Tensor: """ Calculate a laplacian matrix from an affinity matrix X. @@ -535,7 +517,6 @@ def getLaplacian(X: torch.Tensor) -> torch.Tensor: return L -@torch.jit.script def eigDecompose( laplacian: torch.Tensor, cuda: bool, device: torch.device = torch.device('cpu') ) -> Tuple[torch.Tensor, torch.Tensor]: @@ -552,7 +533,6 @@ def eigDecompose( return lambdas, diffusion_map -@torch.jit.script def eigValueSh(laplacian: torch.Tensor, cuda: bool, device: torch.device = torch.device('cpu')) -> torch.Tensor: """ Calculate only eigenvalues from the Laplacian matrix. @@ -567,7 +547,6 @@ def eigValueSh(laplacian: torch.Tensor, cuda: bool, device: torch.device = torch return lambdas -@torch.jit.script def getLamdaGaplist(lambdas: torch.Tensor) -> torch.Tensor: """ Calculate the gaps between lambda values. @@ -577,7 +556,6 @@ def getLamdaGaplist(lambdas: torch.Tensor) -> torch.Tensor: return lambdas[1:] - lambdas[:-1] -@torch.jit.script def addAnchorEmb(emb: torch.Tensor, anchor_sample_n: int, anchor_spk_n: int, sigma: float) -> torch.Tensor: """ Add randomly generated synthetic embeddings to make eigenanalysis more stable. @@ -674,7 +652,6 @@ def getEnhancedSpeakerCount( return comp_est_num_of_spk -@torch.jit.script def split_input_data( embeddings_in_scales: torch.Tensor, timestamps_in_scales: torch.Tensor, @@ -705,7 +682,6 @@ def split_input_data( return embeddings_in_scales, timestamps_in_scales -@torch.jit.script def estimateNumofSpeakers( affinity_mat: torch.Tensor, max_num_speakers: int, cuda: bool = False ) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: @@ -728,16 +704,14 @@ def estimateNumofSpeakers( lambda_gap (Tensor): The gap between the lambda values from eigendecomposition """ - with torch.no_grad(): - laplacian = getLaplacian(affinity_mat) - lambdas = eigValueSh(laplacian, cuda=cuda) - lambdas = torch.sort(lambdas)[0] - lambda_gap = getLamdaGaplist(lambdas) - num_of_spk = torch.argmax(lambda_gap[: min(max_num_speakers, lambda_gap.shape[0])]) + 1 + laplacian = getLaplacian(affinity_mat) + lambdas = eigValueSh(laplacian, cuda=cuda, device=affinity_mat.device) + lambdas = torch.sort(lambdas)[0] + lambda_gap = getLamdaGaplist(lambdas) + num_of_spk = torch.argmax(lambda_gap[: min(max_num_speakers, lambda_gap.shape[0])]) + 1 return num_of_spk, lambdas, lambda_gap -@torch.jit.script class SpectralClustering: """ Perform spectral clustering by calculating spectral embeddings then run k-means clustering @@ -816,6 +790,7 @@ def clusterSpectralEmbeddings( """ spectral_emb = self.getSpectralEmbeddings(affinity, n_spks=self.n_clusters, cuda=cuda) labels_set = [] + for random_state_seed in range(self.random_state, self.random_state + self.n_random_trials): _labels = kmeans_torch( X=spectral_emb, num_clusters=self.n_clusters, random_state=random_state_seed, device=device @@ -843,14 +818,13 @@ def getSpectralEmbeddings(self, affinity_mat: torch.Tensor, n_spks: int = 8, cud clustering label output """ laplacian = getLaplacian(affinity_mat) - lambdas_, diffusion_map_ = eigDecompose(laplacian, cuda=cuda) + _, diffusion_map_ = eigDecompose(laplacian, cuda=cuda, device=affinity_mat.device) diffusion_map = diffusion_map_[:, :n_spks] inv_idx = torch.arange(diffusion_map.size(1) - 1, -1, -1).long() embedding = diffusion_map.T[inv_idx, :] return embedding[:n_spks].T -@torch.jit.script class NMESC: """ Normalized Maximum Eigengap based Spectral Clustering (NME-SC) @@ -1118,10 +1092,10 @@ class SpeakerClustering(torch.nn.Module): def __init__( self, min_samples_for_nmesc: int = 6, - nme_mat_size: int = 300, + nme_mat_size: int = 512, sparse_search: bool = True, maj_vote_spk_count: bool = False, - parallelism: bool = True, + parallelism: bool = False, cuda: bool = False, ): """ @@ -1164,7 +1138,6 @@ def forward(self, param_dict: Dict[str, torch.Tensor]) -> torch.LongTensor: naming convention. See https://github.com/triton-inference-server/server/blob/main/docs/user_guide/model_configuration.md#special-conventions-for-pytorch-backend - Args: param_dict (dict): Dictionary containing the arguments for speaker clustering. @@ -1211,6 +1184,7 @@ def forward_infer( enhanced_count_thres: int = 40, sparse_search_volume: int = 30, fixed_thres: float = -1.0, + kmeans_random_trials: int = 1, ) -> torch.LongTensor: """ Calculate affinity matrix using timestamps and speaker embeddings, run NME analysis to estimate the best @@ -1264,6 +1238,9 @@ def forward_infer( If fixed_thres value is provided, NME-analysis process will be skipped. This value should be optimized on a development set to obtain a quality result. Default is None and performs NME-analysis to estimate the threshold. + kmeans_random_trials (int): + Number of random trials for initializing k-means clustering. More trials + will result in a more stable clustering result. Default is 1. Returns: Y (LongTensor): @@ -1272,7 +1249,6 @@ def forward_infer( self.embeddings_in_scales, self.timestamps_in_scales = split_input_data( embeddings_in_scales, timestamps_in_scales, multiscale_segment_counts ) - # Last slot is the base scale embeddings emb = self.embeddings_in_scales[-1] @@ -1322,6 +1298,8 @@ def forward_infer( else: n_clusters = int(est_num_of_spk.item()) - spectral_model = SpectralClustering(n_clusters=n_clusters, cuda=self.cuda, device=self.device) + spectral_model = SpectralClustering( + n_clusters=n_clusters, n_random_trials=kmeans_random_trials, cuda=self.cuda, device=self.device + ) Y = spectral_model.forward(affinity_mat) return Y diff --git a/nemo/collections/asr/parts/utils/speaker_utils.py b/nemo/collections/asr/parts/utils/speaker_utils.py index 396cef812ca9..010237e9eeb3 100644 --- a/nemo/collections/asr/parts/utils/speaker_utils.py +++ b/nemo/collections/asr/parts/utils/speaker_utils.py @@ -410,8 +410,6 @@ def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, cluste AUDIO_RTTM_MAP (dict): AUDIO_RTTM_MAP for mapping unique id with audio file path and rttm path out_rttm_dir (str): Path to write predicted rttms clustering_params (dict): clustering parameters provided through config that contains max_num_speakers (int), - oracle_num_speakers (bool), max_rp_threshold(float), sparse_search_volume(int) and enhance_count_threshold (int) - use_torch_script (bool): Boolean that determines whether to use torch.jit.script for speaker clustering Returns: all_reference (list[uniq_name,Annotation]): reference annotations for score calculation @@ -428,7 +426,7 @@ def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, cluste logging.warning("cuda=False, using CPU for eigen decomposition. This might slow down the clustering process.") cuda = False - speaker_clustering = SpeakerClustering(maj_vote_spk_count=clustering_params.maj_vote_spk_count, cuda=cuda) + speaker_clustering = SpeakerClustering(cuda=cuda) # If True, export torch script module and save it to the base folder. if clustering_params.get('export_script_module', False): @@ -445,6 +443,8 @@ def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, cluste else: num_speakers = -1 + base_scale_idx = uniq_embs_and_timestamps['multiscale_segment_counts'].shape[0] - 1 + cluster_labels = speaker_clustering.forward_infer( embeddings_in_scales=uniq_embs_and_timestamps['embeddings'], timestamps_in_scales=uniq_embs_and_timestamps['timestamps'], @@ -456,7 +456,12 @@ def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, cluste sparse_search_volume=int(clustering_params.sparse_search_volume), ) - base_scale_idx = uniq_embs_and_timestamps['multiscale_segment_counts'].shape[0] - 1 + del uniq_embs_and_timestamps + if cuda: + torch.cuda.empty_cache() + else: + gc.collect() + timestamps = speaker_clustering.timestamps_in_scales[base_scale_idx] cluster_labels = cluster_labels.cpu().numpy() if len(cluster_labels) != timestamps.shape[0]: From 93e3f3b004ed53602776571477703e0db41e6201 Mon Sep 17 00:00:00 2001 From: anmolgupt <14880251+anmolgupt@users.noreply.github.com> Date: Wed, 1 Feb 2023 09:53:10 -0800 Subject: [PATCH 22/73] set max_steps for lr decay through config (#5780) * set max_steps for lr decay through config * added warning for optim sched max_steps config option * reverted changes to modelPT and updated megatron_base_model * added the experimental cosine annealing scheduler class * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update decay_steps for consine annealing exp class * added copyright --------- Co-authored-by: ANMOL GUPTA Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Eric Harper Signed-off-by: Jason --- nemo/collections/nlp/parts/__init__.py | 1 + .../nlp/parts/megatron_lr_schedulers.py | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 nemo/collections/nlp/parts/megatron_lr_schedulers.py diff --git a/nemo/collections/nlp/parts/__init__.py b/nemo/collections/nlp/parts/__init__.py index e60fccbe2058..7d5fbe5ccad1 100644 --- a/nemo/collections/nlp/parts/__init__.py +++ b/nemo/collections/nlp/parts/__init__.py @@ -13,4 +13,5 @@ # limitations under the License. +from nemo.collections.nlp.parts.megatron_lr_schedulers import CosineAnnealingExp from nemo.collections.nlp.parts.utils_funcs import list2str, tensor2list diff --git a/nemo/collections/nlp/parts/megatron_lr_schedulers.py b/nemo/collections/nlp/parts/megatron_lr_schedulers.py new file mode 100644 index 000000000000..978d288c1c2e --- /dev/null +++ b/nemo/collections/nlp/parts/megatron_lr_schedulers.py @@ -0,0 +1,32 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from nemo.core.optim.lr_scheduler import AVAILABLE_SCHEDULERS, CosineAnnealing + + +class CosineAnnealingExp(CosineAnnealing): + """ + Setting max_steps_for_lr_sched for this scheduler in the config is experimental and " + not recommended. The scheduler can use max_steps automatically from " + trainer.max_steps. + """ + + def __init__(self, optimizer, *, max_steps, min_lr=0, last_epoch=-1, max_steps_for_lr_sched=None, **kwargs): + super().__init__(optimizer=optimizer, max_steps=max_steps, last_epoch=last_epoch, min_lr=min_lr, **kwargs) + if max_steps_for_lr_sched: + self.max_steps = max_steps_for_lr_sched + self.decay_steps = self.max_steps - (self.constant_steps + self.warmup_steps) + + +AVAILABLE_SCHEDULERS['CosineAnnealingExp'] = CosineAnnealingExp From 58ee179e4308dfafa39361dec8bcfb39335e32c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:57:03 -0700 Subject: [PATCH 23/73] Fix transducer and question answering tutorial bugs bugs (#5809) (#5810) Co-authored-by: Zhilin Wang Co-authored-by: Eric Harper Signed-off-by: Jason --- tutorials/asr/Intro_to_Transducers.ipynb | 4 ++-- tutorials/nlp/Question_Answering.ipynb | 13 +++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tutorials/asr/Intro_to_Transducers.ipynb b/tutorials/asr/Intro_to_Transducers.ipynb index a82a4804ca56..8026e6ddf546 100644 --- a/tutorials/asr/Intro_to_Transducers.ipynb +++ b/tutorials/asr/Intro_to_Transducers.ipynb @@ -63,7 +63,7 @@ "\n", "# For pip based environments,\n", "# Update Numba to > 0.54\n", - "!pip install --upgrade numba==0.54.1" + "!pip install --upgrade numba>=0.54.1" ], "execution_count": null, "outputs": [] @@ -773,4 +773,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/tutorials/nlp/Question_Answering.ipynb b/tutorials/nlp/Question_Answering.ipynb index b9ecec034b0d..7217b0fb6756 100644 --- a/tutorials/nlp/Question_Answering.ipynb +++ b/tutorials/nlp/Question_Answering.ipynb @@ -107,6 +107,7 @@ "source": [ "import os\n", "import wget\n", + "import gc\n", "\n", "import pytorch_lightning as pl\n", "from omegaconf import OmegaConf\n", @@ -116,7 +117,8 @@ "from nemo.collections.nlp.models.question_answering.qa_s2s_model import S2SQAModel\n", "from nemo.utils.exp_manager import exp_manager\n", "\n", - "pl.seed_everything(42)" + "pl.seed_everything(42)\n", + "gc.disable()" ] }, { @@ -128,8 +130,8 @@ "outputs": [], "source": [ "# set the following paths\n", - "DATA_DIR = \"\" # directory for storing datasets\n", - "WORK_DIR = \"\" # directory for storing trained models, logs, additionally downloaded scripts\n", + "DATA_DIR = \"data_dir\" # directory for storing datasets\n", + "WORK_DIR = \"work_dir\" # directory for storing trained models, logs, additionally downloaded scripts\n", "\n", "os.makedirs(DATA_DIR, exist_ok=True)\n", "os.makedirs(WORK_DIR, exist_ok=True)" @@ -542,7 +544,10 @@ "\n", "config.exp_manager.create_checkpoint_callback = True\n", "\n", - "config.model.optim.lr = 5e-5" + "config.model.optim.lr = 5e-5\n", + "\n", + "#remove vocab_file from gpt model\n", + "config.model.tokenizer.vocab_file = None" ] }, { From 328ef6326a6ae8ca664885ecc201b237986c68fe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:42:57 -0700 Subject: [PATCH 24/73] update apex install instructions (#5901) (#5902) Signed-off-by: ericharper Co-authored-by: Eric Harper Signed-off-by: Jason --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 594c7fc160b2..7bf1c2f07bef 100644 --- a/README.rst +++ b/README.rst @@ -228,7 +228,7 @@ Install it manually if not using the NVIDIA PyTorch container. git clone https://github.com/ericharper/apex.git cd apex - git checkout nm_v1.14.0 + git checkout nm_v1.15.0 pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" --global-option="--fast_layer_norm" --global-option="--distributed_adam" --global-option="--deprecated_fused_adam" ./ Transformer Engine From feabe97398c373f90438b2a5e23b998b7b2912b9 Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Thu, 2 Feb 2023 01:37:54 +0400 Subject: [PATCH 25/73] Hybrid ASR-TTS models (#5659) Add hybrid ASR-TTS models and text-to-text dataset Signed-off-by: Vladimir Bataev Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- .../speech_to_text_bpe_with_text.py | 87 +++ .../speech_to_text_bpe_with_text_finetune.py | 79 +++ examples/asr/conf/asr_tts/hybrid_asr_tts.yaml | 122 ++++ nemo/collections/asr/data/text_to_text.py | 478 ++++++++++++++ .../asr/models/hybrid_asr_tts_models.py | 582 ++++++++++++++++++ .../asr/parts/preprocessing/features.py | 19 + .../asr/parts/submodules/batchnorm.py | 103 ++++ .../asr/parts/submodules/conformer_modules.py | 3 + nemo/utils/enum.py | 40 ++ .../test_asr_parts_submodules_batchnorm.py | 106 ++++ .../asr/test_hybrid_asr_tts_models.py | 201 ++++++ .../asr/test_text_to_text_dataset.py | 197 ++++++ tests/conftest.py | 7 +- tests/utils/test_enum.py | 41 ++ 14 files changed, 2063 insertions(+), 2 deletions(-) create mode 100644 examples/asr/asr_with_tts/speech_to_text_bpe_with_text.py create mode 100644 examples/asr/asr_with_tts/speech_to_text_bpe_with_text_finetune.py create mode 100644 examples/asr/conf/asr_tts/hybrid_asr_tts.yaml create mode 100644 nemo/collections/asr/data/text_to_text.py create mode 100644 nemo/collections/asr/models/hybrid_asr_tts_models.py create mode 100644 nemo/collections/asr/parts/submodules/batchnorm.py create mode 100644 nemo/utils/enum.py create mode 100644 tests/collections/asr/test_asr_parts_submodules_batchnorm.py create mode 100644 tests/collections/asr/test_hybrid_asr_tts_models.py create mode 100644 tests/collections/asr/test_text_to_text_dataset.py create mode 100644 tests/utils/test_enum.py diff --git a/examples/asr/asr_with_tts/speech_to_text_bpe_with_text.py b/examples/asr/asr_with_tts/speech_to_text_bpe_with_text.py new file mode 100644 index 000000000000..cbdd7dcd447a --- /dev/null +++ b/examples/asr/asr_with_tts/speech_to_text_bpe_with_text.py @@ -0,0 +1,87 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Training hybrid ASR-TTS model using text-only data and/or audio-text pairs. +Provide ASR model config, add options related to TTS and text-only data. + +```shell +python speech_to_text_bpe_with_text.py \ + # (Optional: --config-path= --config-name=) \ + ++asr_model_type= \ + ++tts_model_path= \ + model.tokenizer.dir= \ + model.tokenizer.type="bpe" \ + model.train_ds.manifest_filepath= \ + ++model.train_ds.text_data.manifest_filepath= \ + ++model.train_ds.text_data.speakers_filepath= \ + ++model.train_ds.text_data.min_words=1 \ + ++model.train_ds.text_data.max_words=45 \ + ++model.train_ds.text_data.tokenizer_workers=4 \ + model.validation_ds.manifest_filepath= \ + model.train_ds.batch_size= \ + trainer.max_epochs= \ + trainer.num_nodes= \ + trainer.accumulate_grad_batches= \ + ++trainer.precision= \ + exp_manager.create_wandb_logger=True \ + exp_manager.wandb_logger_kwargs.name="" \ + exp_manager.wandb_logger_kwargs.project="" \ + ++exp_manager.wandb_logger_kwargs.resume=auto \ + ++exp_manager.wandb_logger_kwargs.id="" \ + exp_manager.resume_if_exists=true \ + exp_manager.resume_ignore_no_checkpoint=true \ + exp_manager.exp_dir= \ + exp_manager.name= +``` +""" + + +import pytorch_lightning as pl +from omegaconf import OmegaConf + +from nemo.collections.asr.models.hybrid_asr_tts_models import ASRWithTTSModel +from nemo.core.config import hydra_runner +from nemo.utils import logging +from nemo.utils.exp_manager import exp_manager + + +@hydra_runner(config_path="examples/asr/conf/conformer", config_name="conformer_transducer_bpe") +def main(cfg): + """ + Training hybrid ASR-TTS model using text-only data and/or audio-text pairs. + Provide ASR model config, add options related to TTS and text-only data. + """ + logging.info(f'Hydra config: {OmegaConf.to_yaml(cfg)}') + OmegaConf.resolve(cfg) + + trainer = pl.Trainer(**cfg.trainer) + exp_manager(trainer, cfg.get("exp_manager", None)) + + asr_model = ASRWithTTSModel.from_asr_config( + asr_cfg=cfg.model, asr_model_type=cfg.asr_model_type, tts_model_path=cfg.tts_model_path, trainer=trainer + ) + + # Initialize the weights of the model from another model, if provided via config + asr_model.maybe_init_from_pretrained_checkpoint(cfg) + + trainer.fit(asr_model) + + if hasattr(cfg.model, 'test_ds') and cfg.model.test_ds.manifest_filepath is not None: + if asr_model.prepare_test(trainer): + trainer.test(asr_model) + + +if __name__ == '__main__': + main() # noqa pylint: disable=no-value-for-parameter diff --git a/examples/asr/asr_with_tts/speech_to_text_bpe_with_text_finetune.py b/examples/asr/asr_with_tts/speech_to_text_bpe_with_text_finetune.py new file mode 100644 index 000000000000..9dc38b471571 --- /dev/null +++ b/examples/asr/asr_with_tts/speech_to_text_bpe_with_text_finetune.py @@ -0,0 +1,79 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Finetuning pretrained ASR model with text-only data (can be mixed with audio-text pairs) +```shell +python speech_to_text_bpe_with_text_finetune.py \ + # (Optional: --config-path= --config-name=) \ + model.asr_model_path= \ + model.tts_model_path= \ + model.asr_model_fuse_bn= \ + model.train_ds.manifest_filepath= \ + model.train_ds.text_data.manifest_filepath= \ + model.train_ds.text_data.speakers_filepath= \ + model.train_ds.text_data.tokenizer_workers=4 \ + model.validation_ds.manifest_filepath= \ + model.train_ds.batch_size={args.batch_size} \ + trainer.max_epochs= \ + trainer.num_nodes= \ + trainer.accumulate_grad_batches= \ + trainer.precision= \ + model.optim.lr=1e-4 \ + exp_manager.create_wandb_logger=True \ + exp_manager.wandb_logger_kwargs.name="" \ + exp_manager.wandb_logger_kwargs.project="" \ + ++exp_manager.wandb_logger_kwargs.resume=auto \ + ++exp_manager.wandb_logger_kwargs.id="" \ + exp_manager.resume_if_exists=true \ + exp_manager.resume_ignore_no_checkpoint=true \ + exp_manager.exp_dir= \ + exp_manager.name= +``` +""" + + +import pytorch_lightning as pl +from omegaconf import OmegaConf + +from nemo.collections.asr.models.hybrid_asr_tts_models import ASRWithTTSModel +from nemo.core.config import hydra_runner +from nemo.utils import logging +from nemo.utils.exp_manager import exp_manager + + +@hydra_runner(config_path="examples/asr/asr_tts", config_name="hybrid_asr_tts") +def main(cfg): + logging.info(f'Hydra config: {OmegaConf.to_yaml(cfg)}') + OmegaConf.resolve(cfg) + + trainer = pl.Trainer(**cfg.trainer) + exp_manager(trainer, cfg.get("exp_manager", None)) + + asr_model = ASRWithTTSModel(cfg.model, trainer=trainer) + + # Initialize the weights of the model from another model, if provided via config + asr_model.maybe_init_from_pretrained_checkpoint(cfg) + + # validate before training to get baseline metrics + trainer.validate(asr_model) + trainer.fit(asr_model) + + if hasattr(cfg.model, 'test_ds') and cfg.model.test_ds.manifest_filepath is not None: + if asr_model.prepare_test(trainer): + trainer.test(asr_model) + + +if __name__ == '__main__': + main() # noqa pylint: disable=no-value-for-parameter diff --git a/examples/asr/conf/asr_tts/hybrid_asr_tts.yaml b/examples/asr/conf/asr_tts/hybrid_asr_tts.yaml new file mode 100644 index 000000000000..e933fc59b40f --- /dev/null +++ b/examples/asr/conf/asr_tts/hybrid_asr_tts.yaml @@ -0,0 +1,122 @@ +# Hybrid ASR-TTS model config to instantiate model from pretrained asr_model_path and tts_model_path .nemo checkpoints + +name: "Hybrid-Model-ASR-With-TTS" + +model: + sample_rate: 16000 + + # asr model + asr_model_path: ??? + asr_model: null + asr_model_type: null # rnnt_bpe or ctc_bpe, needed only if instantiating from config, otherwise type is auto inferred + asr_model_fuse_bn: false # only ConformerEncoder supported now, use false for other models + + # tts model + tts_model_path: ??? + tts_model: null + + # enhancer model + enhancer_model_path: null + enhancer_model: null + + train_ds: + text_data: + manifest_filepath: ??? + speakers_filepath: ??? + min_words: 1 + max_words: 45 # 45 - recommended value, ~16.7 sec for LibriSpeech + tokenizer_workers: 1 + asr_tts_sampling_technique: round-robin # random, round-robin, temperature + asr_tts_sampling_temperature: null + asr_tts_sampling_probabilities: null # [0.5,0.5] – ASR,TTS + manifest_filepath: ??? + sample_rate: ${model.sample_rate} + batch_size: 16 # you may increase batch_size if your memory allows + shuffle: true + num_workers: 8 + pin_memory: true + use_start_end_token: false + trim_silence: false + max_duration: 16.7 # it is set for LibriSpeech, you may need to update it for your dataset + min_duration: 0.1 + # tarred datasets + is_tarred: false + tarred_audio_filepaths: null + shuffle_n: 2048 + # bucketing params + bucketing_strategy: "synced_randomized" + bucketing_batch_size: null + + validation_ds: + manifest_filepath: ??? + sample_rate: ${model.sample_rate} + batch_size: 16 + shuffle: false + num_workers: 8 + pin_memory: true + use_start_end_token: false + + test_ds: + manifest_filepath: null + sample_rate: ${model.sample_rate} + batch_size: 16 + shuffle: false + num_workers: 8 + pin_memory: true + use_start_end_token: false + + optim: + name: adamw + lr: 1e-4 + # optimizer arguments + betas: [0.9, 0.98] + weight_decay: 1e-3 + + # scheduler setup + sched: + name: CosineAnnealing + # scheduler config override + warmup_steps: null + warmup_ratio: 0.2 + min_lr: 1e-6 + +trainer: + devices: -1 # number of GPUs, -1 would use all available GPUs + num_nodes: 1 + max_epochs: 500 + max_steps: -1 # computed at runtime if not set + val_check_interval: 1.0 # Set to 0.25 to check 4 times per epoch, or an int for number of iterations + accelerator: auto + strategy: ddp + accumulate_grad_batches: 1 + gradient_clip_val: 0.0 + precision: 32 # Should be set to 16 for O1 and O2 to enable the AMP. + log_every_n_steps: 10 # Interval of logging. + enable_progress_bar: True + resume_from_checkpoint: null # The path to a checkpoint file to continue the training, restores the whole state including the epoch, step, LR schedulers, apex, etc. + num_sanity_val_steps: 0 # number of steps to perform validation steps for sanity check the validation process before starting the training, setting to 0 disables it + check_val_every_n_epoch: 1 # number of evaluations on validation every n epochs + sync_batchnorm: true + enable_checkpointing: False # Provided by exp_manager + logger: false # Provided by exp_manager + benchmark: false # needs to be false for models with variable-length speech input as it slows down training + + +exp_manager: + exp_dir: null + name: ${name} + create_tensorboard_logger: true + create_checkpoint_callback: true + checkpoint_callback_params: + # in case of multiple validation sets, first one is used + monitor: "val_wer" + mode: "min" + save_top_k: 5 + always_save_nemo: True # saves the checkpoints as nemo files instead of PTL checkpoints + resume_if_exists: false + resume_ignore_no_checkpoint: false + + create_wandb_logger: false + wandb_logger_kwargs: + name: null + project: null diff --git a/nemo/collections/asr/data/text_to_text.py b/nemo/collections/asr/data/text_to_text.py new file mode 100644 index 000000000000..6ed06aa10dde --- /dev/null +++ b/nemo/collections/asr/data/text_to_text.py @@ -0,0 +1,478 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +import concurrent.futures +import copy +import gc +import json +import math +import random +from pathlib import Path +from typing import Any, Callable, Dict, Iterable, List, NamedTuple, Optional, Set, Union + +import numpy as np +import torch +import torch.utils.data +from nemo_text_processing.text_normalization.normalize import Normalizer +from torch.nn.utils.rnn import pad_sequence +from tqdm.auto import tqdm + +from nemo.collections.asr.data.audio_to_text import _speech_collate_fn +from nemo.collections.common.tokenizers import TokenizerSpec +from nemo.core.classes import Dataset, IterableDataset +from nemo.utils import logging + +AnyPath = Union[Path, str] + + +class TextToTextItem(NamedTuple): + tts_text: torch.Tensor # normalized and tokenized text for TTS + transcript: torch.Tensor # tokenized text for ASR + speaker: int # speaker id for multi-speaker TTS + + +class TextToTextBatch(NamedTuple): + tts_texts: torch.Tensor # tokenized texts for tts + tts_text_lengths: torch.Tensor + transcripts: torch.Tensor # tokenized texts for ASR + transcript_lengths: torch.Tensor + speakers: torch.Tensor # speaker ids for multi-speaker TTS + + @staticmethod + def collate_fn(batch: List[TextToTextItem], asr_pad_id: int, tts_text_pad_id: int) -> TextToTextBatch: + return TextToTextBatch( + tts_texts=pad_sequence([item.tts_text for item in batch], batch_first=True, padding_value=tts_text_pad_id), + tts_text_lengths=torch.tensor([item.tts_text.shape[0] for item in batch]).long(), + transcripts=pad_sequence([item.transcript for item in batch], batch_first=True, padding_value=asr_pad_id), + transcript_lengths=torch.tensor([item.transcript.shape[0] for item in batch]).long(), + speakers=torch.tensor([item.speaker for item in batch]).long(), + ) + + +class TextOrAudioToTextBatch(NamedTuple): + audio_signals: torch.Tensor + audio_signal_lengths: torch.Tensor + tts_texts: torch.Tensor + tts_text_lengths: torch.Tensor + speakers: torch.Tensor + transcripts: torch.Tensor + transcript_lengths: torch.Tensor + + @staticmethod + def collate_fn( + batch: List[Union[TextToTextItem, tuple]], tts_text_pad_id: int, asr_pad_id: int + ) -> Union[TextToTextBatch, TextOrAudioToTextBatch, tuple]: + """ + Collate function for dataloader + Can accept mixed batch of text-to-text items and audio-text items (typical for ASR) + """ + text_items: List[TextToTextItem] = [item for item in batch if isinstance(item, TextToTextItem)] + if not text_items: + # pure audio-text batch + return _speech_collate_fn(batch=batch, pad_id=asr_pad_id) + + asr_items = [item for item in batch if not isinstance(item, TextToTextItem)] + + if not asr_items: + # pure text-to-text batch + return TextToTextBatch.collate_fn(batch=text_items, asr_pad_id=asr_pad_id, tts_text_pad_id=tts_text_pad_id) + + # mixed batch + + # each asr item is a tuple: + # audio_signal (0), audio_length (1), transcript (2), transcript_length (3), sample_id (4, optional) + audio_signals = pad_sequence([item[0] for item in asr_items], batch_first=True, padding_value=0.0) + audio_signal_lengths = torch.tensor([item[1] for item in asr_items]).long() + + tts_texts = pad_sequence( + [item.tts_text for item in text_items], batch_first=True, padding_value=tts_text_pad_id + ) + tts_text_lengths = torch.tensor([item.tts_text.shape[0] for item in text_items]).long() + speakers = torch.tensor([item.speaker for item in text_items]).long() + + transcripts = pad_sequence( + [item.transcript for item in text_items] + [item[2] for item in asr_items], + batch_first=True, + padding_value=asr_pad_id, + ) + transcript_lengths = torch.tensor( + [item.transcript.shape[0] for item in text_items] + [item[3] for item in asr_items] + ).long() + + return TextOrAudioToTextBatch( + audio_signals=audio_signals, + audio_signal_lengths=audio_signal_lengths, + tts_texts=tts_texts, + tts_text_lengths=tts_text_lengths, + speakers=speakers, + transcripts=transcripts, + transcript_lengths=transcript_lengths, + ) + + +def _asr_text_to_tokens(text: str) -> np.ndarray: + """ + Helper function for asr tokenization with multiprocessing pool only. + Must be defined on the top level. + Expects asr_tokenizer_global, asr_bos_id_global, asr_eos_id_global to exist in the current pool process + """ + ids = asr_tokenizer_global.text_to_ids(text) + if asr_bos_id_global is not None: + ids = [asr_bos_id_global] + ids + if asr_eos_id_global is not None: + ids.append(asr_eos_id_global) + return np.asarray(ids) + + +def _tts_text_to_tokens(text: str) -> np.ndarray: + """ + Helper function for asr tokenization with multiprocessing pool only. + Must be defined on the top level. + Expects tts_tokenizer_global to exist in the current pool process + """ + return np.asarray(tts_tokenizer_global(text)) + + +def _iterate_manifest(filepath: AnyPath) -> Iterable[Dict[str, Any]]: + """ + Helper function to iterate manifest + """ + with open(filepath, "r", encoding="utf-8") as f: + for line in f: + record = json.loads(line) + yield record + + +class TextToTextDatasetBase: + """ + Base class for loading text-to-text manifests + Map-style and Iterable datasets should inherit this class + """ + + asr_pad_id: int + tts_text_pad_id: int + asr_bos_id: Optional[int] = None + asr_eos_id: Optional[int] = None + data: List[Dict[str, Any]] + + def __init__( + self, + manifest_filepath: Union[AnyPath, List[AnyPath]], + speakers_filepath: Union[AnyPath, List[AnyPath]], + asr_tokenizer: TokenizerSpec, + asr_use_start_end_token: bool, + tts_parser: Callable, + tts_text_pad_id: int, + tts_text_normalizer: Normalizer, + tts_text_normalizer_call_kwargs: Dict, + min_words: int = 1, + max_words: int = 1_000_000, + tokenizer_workers: int = 1, + num_parts: int = 1, + current_part_index: int = 0, + ): + super().__init__() + # ASR tokenizer setup + if asr_use_start_end_token and hasattr(asr_tokenizer, 'bos_token'): + self.asr_bos_id = asr_tokenizer.bos_id + + if asr_use_start_end_token and hasattr(asr_tokenizer, 'eos_token'): + self.asr_eos_id = asr_tokenizer.eos_id + + if hasattr(asr_tokenizer, 'pad_token'): + self.asr_pad_id = asr_tokenizer.pad_id + else: + self.asr_pad_id = 0 + + self.asr_tokenizer = asr_tokenizer + + # TTS tokenizer setup + self.tts_parser = tts_parser + self.tts_normalizer = tts_text_normalizer + self.tts_normalizer_kwargs = tts_text_normalizer_call_kwargs + self.tts_text_pad_id = tts_text_pad_id + + # Load speakers + if isinstance(speakers_filepath, str): + speakers_filepath = speakers_filepath.split(",") + elif isinstance(speakers_filepath, Path): + speakers_filepath = [speakers_filepath] + speakers: Set[int] = set() + for filepath in speakers_filepath: + with open(Path(filepath).expanduser(), "r") as f: + speakers.update(map(int, f.read().split())) + self.speakers = np.asarray(sorted(speakers)) + logging.info(f"Loaded {len(self.speakers)} speakers") + + # Load manifest + if isinstance(manifest_filepath, str): + manifest_filepath = manifest_filepath.split(",") + elif isinstance(manifest_filepath, Path): + manifest_filepath = [manifest_filepath] + self.manifest_paths = [Path(filepath) for filepath in manifest_filepath] + + num_skipped_words = 0 + num_skipped_utterances = 0 + asr_texts = [] + tts_texts = [] + need_normalization = False + + for manifest_path in self.manifest_paths: + for tmp_item in tqdm(_iterate_manifest(manifest_path)): + text = tmp_item["text"] + num_words = len(text.split()) + # skip if number of works not in desired range + # TODO: maybe it would be valuable to sample sub-utterances from long utterances + if not (min_words <= num_words <= max_words): + num_skipped_words += num_words + num_skipped_utterances += 1 + continue + asr_texts.append(tmp_item["text"]) + if "tts_text_normalized" in tmp_item: + tts_texts.append(tmp_item["tts_text_normalized"]) + else: + tts_texts.append(tmp_item["tts_text"]) + need_normalization = True + + if need_normalization: + logging.warning("TTS normalization is extremely slow! It is recommended to normalize TTS text") + + if num_skipped_utterances: + logging.warning(f"Skipped {num_skipped_utterances} utterances " f"with {num_skipped_words}") + + num_utterances = len(asr_texts) + # preprocessing is very costly, if we need only part - remove unnecessary utterances + if num_parts > 1: + # NB: floor division, full dataset can contain fewer utterances than original, like in tarred dataset + num_utterances_part = num_utterances // num_parts + start = num_utterances_part * current_part_index + end = start + num_utterances_part + logging.info( + f"Taking part of the dataset: {current_part_index} index, total {num_parts} from {start} to {end}" + ) + asr_texts = asr_texts[start:end] + tts_texts = tts_texts[start:end] + num_utterances = num_utterances_part + + self.data = [dict() for _ in range(num_utterances)] + + if len(asr_texts) == 0: + # no data was loaded + logging.warning("Text-to-text dataset is empty") + return + + if tokenizer_workers == 1: + logging.warning( + "Preprocessing large text with tokenizer_workers=1 may be slow with TTS tokenizer. " + "Prefer tokenizer_workers=(num_cpu_cores/num_gpus_per_node)" + ) + for i, tokenized_text in enumerate( + tqdm((self._asr_text_to_tokens(text) for text in asr_texts), total=len(asr_texts)) + ): + self.data[i]["asr_text_tokens"] = tokenized_text + else: + # Multiprocessing hack: use global variables for every process (not really global in program context) + def _init_asr_tokenize_process(tokenizer, bos_id, eos_id): + global asr_tokenizer_global, asr_bos_id_global, asr_eos_id_global # process-global + # deepcopy to avoid serialization of parent models + asr_tokenizer_global = copy.deepcopy(tokenizer) + asr_bos_id_global = copy.deepcopy(bos_id) + asr_eos_id_global = copy.deepcopy(eos_id) + + with concurrent.futures.ProcessPoolExecutor( + initializer=_init_asr_tokenize_process, + initargs=(asr_tokenizer, self.asr_bos_id, self.asr_eos_id), + max_workers=tokenizer_workers, + ) as pool: + # chunk size for pool map is empirically chosen as a trade-off between speed and responsiveness + for i, tokenized_text in enumerate( + tqdm(pool.map(_asr_text_to_tokens, asr_texts, chunksize=1000), total=len(asr_texts)) + ): + self.data[i]["asr_text_tokens"] = tokenized_text + # force free memory + del asr_texts + gc.collect() + + if tokenizer_workers == 1: + logging.warning( + "Preprocessing large text with tokenizer_workers=1 may be slow with TTS tokenizer. " + "Prefer tokenizer_workers=(num_cpu_cores/num_gpus_per_node)" + ) + for i, tokenized_text in enumerate( + tqdm( + (self._tts_text_to_tokens(text, normalize=need_normalization) for text in tts_texts), + total=len(tts_texts), + ) + ): + self.data[i]["tts_text_tokens"] = tokenized_text + else: + if need_normalization: + # TODO: implement, if we really need normalization inplace + raise NotImplementedError( + "Normalization with tokenizer_workers > 1 is not implemented. " + "It is not recommended to use normalization on the fly at all, since it's extremely slow" + ) + + def _init_tts_tokenize_process(tokenizer): + global tts_tokenizer_global # process-global + tts_tokenizer_global = copy.deepcopy(tokenizer) + + with concurrent.futures.ProcessPoolExecutor( + initializer=_init_tts_tokenize_process, initargs=(tts_parser,), max_workers=tokenizer_workers, + ) as pool: + # chunk size for pool map is empirically chosen as a trade-off between speed and responsiveness + for i, tokenized_text in enumerate( + tqdm(pool.map(_tts_text_to_tokens, tts_texts, chunksize=1000), total=len(tts_texts)) + ): + self.data[i]["tts_text_tokens"] = tokenized_text + # force free memory + del tts_texts + gc.collect() + + def _asr_text_to_tokens(self, text: str) -> np.ndarray: + ids = self.asr_tokenizer.text_to_ids(text) + if self.asr_bos_id is not None: + ids = [self.asr_bos_id] + ids + if self.asr_eos_id is not None: + ids.append(self.asr_eos_id) + return np.asarray(ids) + + def _tts_text_to_tokens(self, text: str, normalize=True) -> np.ndarray: + if normalize: + text = self.tts_normalizer.normalize(text, **self.tts_normalizer_kwargs) + tokens = self.tts_parser(text) + return np.asarray(tokens) + + def __getitem__(self, index): + item = self.data[index] + return TextToTextItem( + transcript=torch.from_numpy(item["asr_text_tokens"]).long(), + tts_text=torch.from_numpy(item["tts_text_tokens"]).long(), + speaker=random.choice(self.speakers), + ) + + def __len__(self): + return len(self.data) + + +class TextToTextDataset(TextToTextDatasetBase, Dataset): + """Text-to-Text Map-style Dataset for hybrid ASR-TTS models""" + + def __init__( + self, + manifest_filepath: Union[AnyPath, List[AnyPath]], + speakers_filepath: Union[AnyPath, List[AnyPath]], + asr_tokenizer: TokenizerSpec, + asr_use_start_end_token: bool, + tts_parser: Callable, + tts_text_pad_id: int, + tts_text_normalizer: Normalizer, + tts_text_normalizer_call_kwargs: Dict, + min_words: int = 1, + max_words: int = 1_000_000, + tokenizer_workers: int = 1, + ): + super().__init__( + manifest_filepath=manifest_filepath, + speakers_filepath=speakers_filepath, + asr_tokenizer=asr_tokenizer, + asr_use_start_end_token=asr_use_start_end_token, + tts_parser=tts_parser, + tts_text_pad_id=tts_text_pad_id, + tts_text_normalizer=tts_text_normalizer, + tts_text_normalizer_call_kwargs=tts_text_normalizer_call_kwargs, + min_words=min_words, + max_words=max_words, + tokenizer_workers=tokenizer_workers, + num_parts=1, + ) + + def collate_fn( + self, batch: List[Union[TextToTextItem, tuple]] + ) -> Union[TextToTextBatch, TextOrAudioToTextBatch, tuple]: + """ + Collate function for dataloader + Can accept mixed batch of text-to-text items and audio-text items (typical for ASR) + """ + return TextOrAudioToTextBatch.collate_fn( + batch=batch, asr_pad_id=self.asr_pad_id, tts_text_pad_id=self.tts_text_pad_id + ) + + +class TextToTextIterableDataset(TextToTextDatasetBase, IterableDataset): + """ + Text-to-Text Iterable Dataset for hybrid ASR-TTS models + Only part necessary for current process should be loaded and stored + """ + + def __init__( + self, + manifest_filepath: Union[AnyPath, List[AnyPath]], + speakers_filepath: Union[AnyPath, List[AnyPath]], + asr_tokenizer: TokenizerSpec, + asr_use_start_end_token: bool, + tts_parser: Callable, + tts_text_pad_id: int, + tts_text_normalizer: Normalizer, + tts_text_normalizer_call_kwargs: Dict, + min_words: int = 1, + max_words: int = 1_000_000, + tokenizer_workers: int = 1, + num_parts: int = 1, + current_part_index: int = 0, + ): + super().__init__( + manifest_filepath=manifest_filepath, + speakers_filepath=speakers_filepath, + asr_tokenizer=asr_tokenizer, + asr_use_start_end_token=asr_use_start_end_token, + tts_parser=tts_parser, + tts_text_pad_id=tts_text_pad_id, + tts_text_normalizer=tts_text_normalizer, + tts_text_normalizer_call_kwargs=tts_text_normalizer_call_kwargs, + min_words=min_words, + max_words=max_words, + tokenizer_workers=tokenizer_workers, + num_parts=num_parts, + current_part_index=current_part_index, + ) + + def __iter__(self): + # Implementation based on docs: https://pytorch.org/docs/stable/data.html#torch.utils.data.IterableDataset + worker_info = torch.utils.data.get_worker_info() + if worker_info is None: # single-process data loading, return the full iterator + start = 0 + end = len(self) + else: # in a worker process + # split workload + per_worker = int(math.ceil(len(self) / float(worker_info.num_workers))) + worker_id = worker_info.id + start = worker_id * per_worker + end = min(start + per_worker, len(self)) + indices = np.arange(start, end) + np.random.shuffle(indices) + return map(self.__getitem__, indices) + + def collate_fn( + self, batch: List[Union[TextToTextItem, tuple]] + ) -> Union[TextToTextBatch, TextOrAudioToTextBatch, tuple]: + """ + Collate function for dataloader + Can accept mixed batch of text-to-text items and audio-text items (typical for ASR) + """ + return TextOrAudioToTextBatch.collate_fn( + batch=batch, asr_pad_id=self.asr_pad_id, tts_text_pad_id=self.tts_text_pad_id + ) diff --git a/nemo/collections/asr/models/hybrid_asr_tts_models.py b/nemo/collections/asr/models/hybrid_asr_tts_models.py new file mode 100644 index 000000000000..1fc2c46fac90 --- /dev/null +++ b/nemo/collections/asr/models/hybrid_asr_tts_models.py @@ -0,0 +1,582 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import copy +import itertools +from dataclasses import dataclass +from pathlib import Path +from typing import Any, Dict, List, Optional, Tuple, Union, cast + +import torch +from omegaconf import MISSING, DictConfig, OmegaConf, open_dict +from pytorch_lightning import Trainer +from torch.nn.utils.rnn import pad_sequence + +from nemo.collections.asr.data.audio_to_text_dali import DALIOutputs +from nemo.collections.asr.data.audio_to_text_dataset import get_audio_to_text_bpe_dataset_from_config +from nemo.collections.asr.data.text_to_text import ( + TextOrAudioToTextBatch, + TextToTextBatch, + TextToTextDataset, + TextToTextIterableDataset, +) +from nemo.collections.asr.models import ASRModel, EncDecCTCModelBPE, EncDecRNNTBPEModel +from nemo.collections.asr.modules.conformer_encoder import ConformerEncoder +from nemo.collections.asr.parts.preprocessing.features import clean_spectrogram_batch, normalize_batch +from nemo.collections.asr.parts.submodules.batchnorm import replace_bn_with_fused_bn_all +from nemo.collections.common.data import ConcatDataset, ConcatMapDataset +from nemo.collections.tts.models import FastPitchModel, SpectrogramEnhancerModel +from nemo.core.classes import Dataset +from nemo.core.classes.common import PretrainedModelInfo +from nemo.utils import logging +from nemo.utils.enum import PrettyStrEnum +from nemo.utils.exceptions import NeMoBaseException + + +def _fuse_bn_in_conformer(asr_model: ASRModel): + """ + Replace BatchNorm with Fused BatchNorm in Conformer and fixes model config inplace + Expected `encoder` model to exist and be of type ConformerEncoder + """ + logging.info("Replacing BatchNorm with Fused BatchNorm") + if not hasattr(asr_model, "encoder"): + raise NotImplementedError("No encoder found in ASR Model, replacement not supported") + if not isinstance(asr_model.encoder, ConformerEncoder): + raise NotImplementedError(f"Unsupported encoder type: {type(asr_model.encoder)}") + replace_bn_with_fused_bn_all(asr_model.encoder) + if "conv_norm_type" not in asr_model.cfg.encoder: + # old CTC models from NGC don't have such param + logging.warning("conv_norm_type not in encoder config, adding parameter") + with open_dict(asr_model.cfg): + asr_model.cfg.encoder.conv_norm_type = "fused_batch_norm" + else: + asr_model.cfg.encoder.conv_norm_type = "fused_batch_norm" + + +@dataclass +class TextDataConfig: + """ + Text dataset subconfig for text-only dataset + """ + + manifest_filepath: Any = MISSING # actual Union[str, List[str]], but this type is not supported by OmegaConf + speakers_filepath: Any = MISSING + min_words: int = 1 + max_words: int = 45 # 45 - recommended value, ~16.7 sec for LibriSpeech + tokenizer_workers: int = 1 + asr_tts_sampling_technique: Optional[str] = None + asr_tts_sampling_temperature: Optional[int] = None + asr_tts_sampling_probabilities: Optional[List[float]] = None + + +class ASRWithTTSModel(ASRModel): + """ + Hybrid ASR-TTS model: a transparent wrapper for ASR model + with frozen text-to-spectrogram pretrained model, which allows to use text-only data for training/finetuning + Text-only data can be mixed with audio-text pairs + """ + + asr_model: Union[EncDecRNNTBPEModel, EncDecCTCModelBPE] + tts_model: FastPitchModel + enhancer_model: Optional[SpectrogramEnhancerModel] + + class ASRModelTypes(PrettyStrEnum): + """ + Supported ASR types, needed for training from scratch + """ + + RNNT_BPE = "rnnt_bpe" + CTC_BPE = "ctc_bpe" + + @classmethod + def from_asr_model(cls, model: Any): + if isinstance(model, EncDecRNNTBPEModel): + return cls.RNNT_BPE + if isinstance(model, EncDecCTCModelBPE): + return cls.CTC_BPE + raise ValueError(f"Unsupported model type: {type(model)}") + + def get_asr_cls(self): + if self == self.RNNT_BPE: + return EncDecRNNTBPEModel + if self == self.CTC_BPE: + return EncDecCTCModelBPE + raise NotImplementedError(f"Not implemented for value {self.value}") + + @classmethod + def list_available_models(cls) -> List[PretrainedModelInfo]: + return [] + + @classmethod + def _check_config(cls, cfg: DictConfig): + """ + Check that all required fields are present in config + Structured configs are not compatible with model serialization, so we check fields manually + """ + expected_fields = [ + # asr + "asr_model", + "asr_model_path", + "asr_model_fuse_bn", + "asr_model_type", + # tts + "tts_model", + "tts_model_path", + # enhancer + "enhancer_model_path", + "enhancer_model", + ] + for field in expected_fields: + if field not in cfg: + raise NeMoBaseException(f"Field {field} is required in config (possibly should be None/null)") + + def __init__(self, cfg: DictConfig, trainer: Trainer = None): + self._full_init_guard = False + + self._check_config(cfg) # check all required keys are in config + + # setup datasets and optimizer after model is fully initialized + # since it's done automatically, remove options from config + cfg = copy.deepcopy(cfg) # copy to avoid modifying original config + with open_dict(cfg): + train_ds_cfg = cfg.pop("train_ds", None) + validation_ds_cfg = cfg.pop("validation_ds", None) + test_ds_cfg = cfg.pop("test_ds", None) + optim_cfg = cfg.pop("optim", None) + + super().__init__(cfg, trainer=trainer) + + # tts model + if cfg.tts_model is not None: + self.register_nemo_submodule("tts_model", config_field="tts_model", model=FastPitchModel(cfg.tts_model)) + else: + if cfg.tts_model_path is None: + raise NeMoBaseException("Either tts_model or tts_model_path should be provided") + self.register_nemo_submodule( + "tts_model", + config_field="tts_model", + model=FastPitchModel.restore_from(f"{cfg.tts_model_path}", map_location=torch.device("cpu")), + ) + self.tts_model.freeze() # tts model should be always frozen + + if cfg.asr_model is not None: + self.asr_model_type = self.ASRModelTypes(cfg.asr_model_type) # convert to enum + self.register_nemo_submodule( + "asr_model", config_field="asr_model", model=self.asr_model_type.get_asr_cls()(cfg.asr_model) + ) + else: + if cfg.asr_model_path is None: + raise NeMoBaseException("Either asr_model or asr_model_path should be provided") + self.register_nemo_submodule( + "asr_model", + config_field="asr_model", + model=ASRModel.restore_from(f"{cfg.asr_model_path}", map_location=torch.device("cpu")), + ) + self.asr_model_type = self.ASRModelTypes.from_asr_model(self.asr_model) + self.cfg.asr_model_type = f"{self.asr_model_type}" # save to config + + # replace BatchNorm with FusedBatchNorm + if cfg.asr_model_fuse_bn: + _fuse_bn_in_conformer(self.asr_model) + self.cfg.asr_model_fuse_bn = False # no need to fuse anymore + + if cfg.enhancer_model is not None: + self.register_nemo_submodule( + "enhancer_model", config_field="enhancer_model", model=SpectrogramEnhancerModel(cfg.enhancer_model) + ) + elif cfg.enhancer_model_path is not None: + self.register_nemo_submodule( + "enhancer_model", + config_field="enhancer_model", + model=SpectrogramEnhancerModel.restore_from(cfg.enhancer_model_path, map_location=torch.device("cpu")), + ) + else: + self.enhancer_model = None + + self._full_init_guard = True + + # initialize optimizer and datasets, asr/tts models are initialized here + if optim_cfg: + with open_dict(self.cfg): + self.cfg.optim = optim_cfg + self.setup_optimization(optim_config=optim_cfg) + if train_ds_cfg: + with open_dict(self.cfg): + self.cfg.train_ds = train_ds_cfg + self.setup_training_data(train_data_config=train_ds_cfg) + if validation_ds_cfg: + with open_dict(self.cfg): + self.cfg.validation_ds = validation_ds_cfg + self.setup_multiple_validation_data(val_data_config=validation_ds_cfg) + if test_ds_cfg: + with open_dict(self.cfg): + self.cfg.test_ds = test_ds_cfg + self.setup_test_data(test_data_config=test_ds_cfg) + + @classmethod + def from_asr_config( + cls, + asr_cfg: DictConfig, + asr_model_type: Union[str, ASRModelTypes], + tts_model_path: Union[str, Path], + enhancer_model_path: Optional[Union[str, Path]] = None, + trainer: Trainer = None, + ): + """ + Method to construct model from ASR config for training from scratch + """ + model_type = cls.ASRModelTypes(asr_model_type) + cfg = DictConfig( + dict( + asr_model_path=None, + asr_model=None, + asr_model_type=f"{model_type}", + asr_model_fuse_bn=False, # for training from scratch always should be False + tts_model_path=f"{tts_model_path}", + tts_model=None, + enhancer_model_path=f"{enhancer_model_path}" if enhancer_model_path is not None else None, + enhancer_model=None, + train_ds=None, + validation_ds=None, + test_ds=None, + optim=None, + ) + ) + + asr_cfg = copy.deepcopy(asr_cfg) # copy not to affect original config + with open_dict(asr_cfg): + for subconfig_path in ["train_ds", "validation_ds", "test_ds", "optim"]: + if subconfig_path in asr_cfg: + cfg[subconfig_path] = asr_cfg.pop(subconfig_path) + cfg.asr_model = asr_cfg + return cls(cfg=cfg, trainer=trainer) + + @classmethod + def from_pretrained_models( + cls, + asr_model_path: Union[str, Path], + tts_model_path: Union[str, Path], + enhancer_model_path: Optional[Union[str, Path]] = None, + asr_model_fuse_bn: bool = False, + cfg: Optional[DictConfig] = None, + trainer: Optional[Trainer] = None, + ): + """ + Load model from pretrained ASR and TTS models + Args: + asr_model_path: path to .nemo ASR model checkpoint + tts_model_path: path to .nemo TTS model checkpoint + enhancer_model_path: path to .nemo enhancer model checkpoint + asr_model_fuse_bn: automatically fuse batchnorm layers in ASR model + cfg: optional config for hybrid model + trainer: Pytorch-Lightning trainer + + Returns: + ASRWithTTSModel instance + """ + if cfg is None: + cfg = DictConfig( + dict( + asr_model_path=f"{asr_model_path}", + asr_model=None, + tts_model_path=f"{tts_model_path}", + tts_model=None, + enhancer_model_path=f"{enhancer_model_path}" if enhancer_model_path is not None else None, + enhancer_model=None, + asr_model_type=None, + asr_model_fuse_bn=asr_model_fuse_bn, + train_ds=None, + validation_ds=None, + test_ds=None, + optim=None, + ) + ) + else: + cfg.tts_model_path = f"{tts_model_path}" + cfg.asr_model_path = f"{asr_model_path}" + return ASRWithTTSModel(cfg, trainer=trainer) + + def __setattr__(self, name, value): + # pytorch-lightning magic, allows to call *_step on asr_model + if name == "_current_fx_name" and self._full_init_guard: + self.asr_model._current_fx_name = value # need to make logging inside asr_model work + return super().__setattr__(name, value) + + def setup_optimization( + self, optim_config: Optional[Union[DictConfig, Dict]] = None, optim_kwargs: Optional[Dict[str, Any]] = None, + ): + """ + Setup optimizer and scheduler. Ensure tts model is frozen. + Add optimizer and scheduler to asr model, to allow `train_step` on ASR model + """ + self.tts_model.freeze() + optimizer, scheduler = super().setup_optimization(optim_config=optim_config, optim_kwargs=optim_kwargs) + # set ASR model optimizer/scheduler to allow training_step on asr_model + self.asr_model._optimizer = optimizer + self.asr_model._scheduler = scheduler + return optimizer, scheduler + + def setup_validation_data(self, val_data_config: Union[DictConfig, Dict]): + """Setup validation data for ASR model""" + return self.asr_model.setup_validation_data(val_data_config) + + def multi_validation_epoch_end(self, outputs, dataloader_idx: int = 0): + """Validation epoch end hook for ASR model""" + return self.asr_model.multi_validation_epoch_end(outputs=outputs, dataloader_idx=dataloader_idx) + + def multi_test_epoch_end(self, outputs, dataloader_idx: int = 0): + """Test epoch end hook for ASR model""" + return self.asr_model.multi_test_epoch_end(outputs=outputs, dataloader_idx=dataloader_idx) + + def transcribe(self, paths2audio_files: List[str], batch_size: int = 4) -> List[str]: + """Transcribe audio data using ASR model""" + return self.asr_model.transcribe(paths2audio_files=paths2audio_files, batch_size=batch_size) + + def setup_multiple_validation_data(self, val_data_config: Union[DictConfig, Dict]): + """Setup multiple validation data for ASR model""" + self.asr_model.setup_multiple_validation_data(val_data_config) + + def setup_test_data(self, test_data_config: Union[DictConfig, Dict]): + """Setup test data for ASR model""" + self.asr_model.setup_test_data(test_data_config) + + def setup_multiple_test_data(self, test_data_config: Union[DictConfig, Dict]): + """Setup multiple test data for ASR Model""" + return self.asr_model.setup_multiple_test_data(test_data_config) + + def save_asr_model_to(self, save_path: str): + """Save ASR model separately""" + return self.asr_model.save_to(save_path=save_path) + + def validation_step(self, batch, batch_idx, dataloader_idx=0): + """Validation step, forward to ASR model""" + return self.asr_model.validation_step(batch=batch, batch_idx=batch_idx, dataloader_idx=dataloader_idx) + + def validation_epoch_end( + self, outputs: Union[List[Dict[str, torch.Tensor]], List[List[Dict[str, torch.Tensor]]]] + ) -> Optional[Dict[str, Dict[str, torch.Tensor]]]: + """Validation epoch end hook, forward to ASR model""" + return self.asr_model.validation_epoch_end(outputs=outputs) + + def test_epoch_end( + self, outputs: Union[List[Dict[str, torch.Tensor]], List[List[Dict[str, torch.Tensor]]]] + ) -> Optional[Dict[str, Dict[str, torch.Tensor]]]: + """Test epoch end hook, forward to ASR model""" + return self.asr_model.test_epoch_end(outputs=outputs) + + def val_dataloader(self): + """Get valudation dataloader from ASR model""" + return self.asr_model.val_dataloader() + + def unfreeze(self) -> None: + """Unfreeze the ASR model, keep TTS model frozen.""" + super().unfreeze() + self.tts_model.freeze() # tts model should be always frozen + + def on_fit_start(self): + """Call asr_model on_fit_start hook, ensure TTS model is frozen""" + self.asr_model.on_fit_start() + self.tts_model.freeze() + + def train(self, mode: bool = True): + """Train mode, ensure TTS model is frozen""" + super().train(mode) + self.tts_model.eval() + return self + + def _get_tts_spectrogram( + self, tts_texts: torch.Tensor, speakers: torch.Tensor + ) -> Tuple[torch.Tensor, torch.Tensor]: + """Get TTS spectrogram from text and speaker ids""" + with torch.no_grad(): + spectrogram, spectrogram_len, *_ = self.tts_model(text=tts_texts, durs=None, pitch=None, speaker=speakers) + if self.enhancer_model is not None: + spectrogram = self.enhancer_model.forward(input_spectrograms=spectrogram, lengths=spectrogram_len) + spectrogram, *_ = normalize_batch(spectrogram, spectrogram_len, self.asr_model.cfg.preprocessor.normalize) + return spectrogram, spectrogram_len + + def _get_batch_spect(self, batch: Union[TextToTextBatch, TextOrAudioToTextBatch, tuple]): + """Get batch with spectrograms from text-only, audio-text or mixed batch data""" + if isinstance(batch, TextToTextBatch): + spectrogram, spectrogram_len = self._get_tts_spectrogram(batch.tts_texts, batch.speakers) + transcript = batch.transcripts + transcript_len = batch.transcript_lengths + elif isinstance(batch, TextOrAudioToTextBatch): + tts_spectrogram, tts_spectrogram_len = self._get_tts_spectrogram(batch.tts_texts, batch.speakers) + asr_spectrogram, asr_spectrogram_len = self.asr_model.preprocessor( + input_signal=batch.audio_signals, length=batch.audio_signal_lengths, + ) + + spectrogram = pad_sequence( + [ + x.squeeze(0) + for x in itertools.chain( + torch.tensor_split(tts_spectrogram.transpose(1, 2), tts_spectrogram.size(0)), + torch.tensor_split(asr_spectrogram.transpose(1, 2), asr_spectrogram.size(0)), + ) + ], + batch_first=True, + padding_value=0.0, + ).transpose(1, 2) + spectrogram_len = torch.cat([tts_spectrogram_len, asr_spectrogram_len], dim=0) + + transcript = batch.transcripts + transcript_len = batch.transcript_lengths + else: + audio_signal, audio_signal_len, transcript, transcript_len, *_ = batch # audio batch: 4 or 5 elements + spectrogram, spectrogram_len = self.asr_model.preprocessor( + input_signal=audio_signal, length=audio_signal_len + ) + spectrogram = clean_spectrogram_batch(spectrogram, spectrogram_len) + return spectrogram.detach(), spectrogram_len.detach(), transcript, transcript_len + + def setup_training_data(self, train_data_config: Optional[Union[DictConfig, Dict]]): + """ + Setup training data from config: text-only, audio-text or mixed data. + """ + if train_data_config is None: + logging.warning("No training data") + return + + self._update_dataset_config(dataset_name='train', config=train_data_config) + asr_dataset = get_audio_to_text_bpe_dataset_from_config( + train_data_config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + tokenizer=self.asr_model.tokenizer, + preprocessor_cfg=self.asr_model.cfg.get("preprocessor", None), + ) + + dataset_iterable = True + if asr_dataset is not None and isinstance(asr_dataset, Dataset): + # asr_dataset is map-style, for mixing datasets use map-style text-to-text dataset + dataset_iterable = False + if train_data_config.get("text_data") is not None: + tts_dataset = self._setup_text_dataset_from_config(train_data_config, iterable=dataset_iterable) + else: + tts_dataset = None + + if tts_dataset and asr_dataset: + text_data_config: TextDataConfig = cast( + TextDataConfig, OmegaConf.merge(OmegaConf.structured(TextDataConfig), train_data_config.text_data) + ) + concat_kwargs = dict() + if text_data_config.asr_tts_sampling_technique is not None: + concat_kwargs["sampling_technique"] = text_data_config.asr_tts_sampling_technique + if text_data_config.asr_tts_sampling_temperature is not None: + concat_kwargs["sampling_temperature"] = text_data_config.asr_tts_sampling_temperature + if text_data_config.asr_tts_sampling_probabilities: + concat_kwargs["sampling_probabilities"] = text_data_config.asr_tts_sampling_probabilities + + if dataset_iterable: + dataset = ConcatDataset(datasets=[asr_dataset, tts_dataset], **concat_kwargs) + else: + dataset = ConcatMapDataset(datasets=[asr_dataset, tts_dataset], **concat_kwargs) + else: + dataset = tts_dataset or asr_dataset + + if dataset is None: + return + + if tts_dataset: + collate_fn = tts_dataset.collate_fn + else: + if hasattr(asr_dataset, "collate_fn"): + collate_fn = asr_dataset.collate_fn + else: + collate_fn = asr_dataset.datasets[0].collate_fn + + shuffle = train_data_config.get("shuffle", True) and not dataset_iterable + self._train_dl = torch.utils.data.DataLoader( + dataset=dataset, + batch_size=train_data_config['batch_size'], + collate_fn=collate_fn, + drop_last=train_data_config.get('drop_last', False), + shuffle=shuffle, + num_workers=train_data_config.get('num_workers', 0), + pin_memory=train_data_config.get('pin_memory', False), + ) + + def _setup_text_dataset_from_config( + self, train_data_config: DictConfig, iterable=True + ) -> Union[TextToTextDataset, TextToTextIterableDataset]: + """ + Construct text-to-text (text-only) dataset from config. + + Args: + train_data_config: config + iterable: construct iterable-style datasset if True, otherwise map-style + + Returns: + text-to-text dataset of TextToTextDataset or TextToTextIterableDataset type + """ + text_data_config: TextDataConfig = cast( + TextDataConfig, OmegaConf.merge(OmegaConf.structured(TextDataConfig), train_data_config.text_data) + ) + if iterable: + textonly_ds = TextToTextIterableDataset( + manifest_filepath=text_data_config.manifest_filepath, + speakers_filepath=text_data_config.speakers_filepath, + asr_tokenizer=self.asr_model.tokenizer, + asr_use_start_end_token=train_data_config.use_start_end_token, + tts_parser=self.tts_model.parser, + tts_text_pad_id=self.tts_model.vocab.pad, + tts_text_normalizer=self.tts_model.normalizer, + tts_text_normalizer_call_kwargs=self.tts_model.text_normalizer_call_kwargs, + min_words=text_data_config.min_words, + max_words=text_data_config.max_words, + tokenizer_workers=text_data_config.tokenizer_workers, + num_parts=self.world_size, + current_part_index=self.global_rank, + ) + else: + textonly_ds = TextToTextDataset( + manifest_filepath=text_data_config.manifest_filepath, + speakers_filepath=text_data_config.speakers_filepath, + asr_tokenizer=self.asr_model.tokenizer, + asr_use_start_end_token=train_data_config.use_start_end_token, + tts_parser=self.tts_model.parser, + tts_text_pad_id=self.tts_model.vocab.pad, + tts_text_normalizer=self.tts_model.normalizer, + tts_text_normalizer_call_kwargs=self.tts_model.text_normalizer_call_kwargs, + min_words=text_data_config.min_words, + max_words=text_data_config.max_words, + tokenizer_workers=text_data_config.tokenizer_workers, + ) + return textonly_ds + + def training_step(self, batch: Union[TextOrAudioToTextBatch, TextToTextBatch, DALIOutputs, tuple], batch_nb: int): + """ + Training step for ASR-TTS model. + - construct spectrogram for the batch (from text - using TTS model, from audio - using ASR preprocessor) + - call training_step on ASR model + """ + assert not self.tts_model.training + if isinstance(batch, DALIOutputs): + return self.asr_model.training_step(batch=batch, batch_nb=batch_nb) + with torch.no_grad(): + spectrogram, spectrogram_len, transcript, transcript_len = self._get_batch_spect(batch) + # TODO: maybe support precomputed without DALIOutputs + return self.asr_model.training_step( + batch=DALIOutputs( + dict( + processed_signal=spectrogram, + processed_signal_len=spectrogram_len, + transcript=transcript, + transcript_len=transcript_len, + ) + ), + batch_nb=batch_nb, + ) diff --git a/nemo/collections/asr/parts/preprocessing/features.py b/nemo/collections/asr/parts/preprocessing/features.py index b8cf3b07859d..1a33bca05a47 100644 --- a/nemo/collections/asr/parts/preprocessing/features.py +++ b/nemo/collections/asr/parts/preprocessing/features.py @@ -95,6 +95,25 @@ def normalize_batch(x, seq_len, normalize_type): return x, x_mean, x_std +def clean_spectrogram_batch(spectrogram: torch.Tensor, spectrogram_len: torch.Tensor, fill_value=0.0) -> torch.Tensor: + """ + Fill spectrogram values outside the length with `fill_value` + + Args: + spectrogram: Tensor with shape [B, C, L] containing batched spectrograms + spectrogram_len: Tensor with shape [B] containing the sequence length of each batch element + fill_value: value to fill with, 0.0 by default + + Returns: + cleaned spectrogram, tensor with shape equal to `spectrogram` + """ + device = spectrogram.device + batch_size, _, max_len = spectrogram.shape + mask = torch.arange(max_len, device=device)[None, :] >= spectrogram_len[:, None] + mask = mask.unsqueeze(1).expand_as(spectrogram) + return spectrogram.masked_fill(mask, fill_value) + + def splice_frames(x, frame_splicing): """ Stacks frames together across feature dim diff --git a/nemo/collections/asr/parts/submodules/batchnorm.py b/nemo/collections/asr/parts/submodules/batchnorm.py new file mode 100644 index 000000000000..66a69f761c14 --- /dev/null +++ b/nemo/collections/asr/parts/submodules/batchnorm.py @@ -0,0 +1,103 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import annotations + +from functools import reduce +from typing import List + +import torch +import torch.nn as nn + + +class FusedBatchNorm1d(nn.Module): + """ + Fused BatchNorm to use in Conformer to improve accuracy in finetuning with TTS scenario + Drop-in replacement for BatchNorm1d with simple affine projection + """ + + def __init__(self, num_features: int): + """ + Args: + num_features: number of channels, see original BatchNorm1d documentation + """ + super().__init__() + self.num_features = num_features + self.weight = nn.Parameter(torch.ones(num_features)) + self.bias = nn.Parameter(torch.zeros(num_features)) + + @classmethod + def from_batchnorm(cls, bn: nn.BatchNorm1d) -> FusedBatchNorm1d: + """ + Construct FusedBatchNorm1d module from BatchNorm1d + Args: + bn: original BatchNorm module + + Returns: + FusedBatchNorm1d module with initialized params; in eval mode result is equivalent to original BatchNorm + """ + assert isinstance(bn, nn.BatchNorm1d) + fused_bn = FusedBatchNorm1d(bn.num_features) + # init projection params from original batch norm + # so, for inference mode output is the same + std = torch.sqrt(bn.running_var.data + bn.eps) + fused_bn.weight.data = bn.weight.data / std + fused_bn.bias.data = bn.bias.data - bn.running_mean.data * fused_bn.weight.data + return fused_bn + + def forward(self, x: torch.Tensor): + if x.dim() == 3: + return x * self.weight.unsqueeze(-1) + self.bias.unsqueeze(-1) + assert x.dim() == 2 + return x * self.weight + self.bias + + +def _get_module_by_name(module: nn.Module, full_layer_name: str) -> nn.Module: + names = full_layer_name.split(sep='.') + return reduce(getattr, names, module) + + +def replace_bn_with_fused_bn(module: nn.Module, full_layer_name: str): + """ + Replace BatchNorm1d named `full_layer_name` in nn.Module with FusedBatchNorm1d + Args: + module: nn.Module instance, modified inplace + full_layer_name: name of BatchNorm1d submodule in module to replace + """ + bn = _get_module_by_name(module, full_layer_name) + assert isinstance(bn, nn.BatchNorm1d) + fused_bn = FusedBatchNorm1d.from_batchnorm(bn) + try: + parent_name, norm_name = full_layer_name.rsplit(".", maxsplit=1) + setattr(_get_module_by_name(module, parent_name), norm_name, fused_bn) + except ValueError: + norm_name = full_layer_name + setattr(module, norm_name, fused_bn) + + +def replace_bn_with_fused_bn_all(model: nn.Module) -> List[str]: + """ + Replace BatchNorm1d with FusedBatchNorm1d in model + Args: + model: nn.Module instance, modified inplace + + Returns: + list of replaced module names + """ + replaced_module_names = [] + for name, module in model.named_modules(): + if isinstance(module, nn.BatchNorm1d): + replace_bn_with_fused_bn(model, name) + replaced_module_names.append(name) + return replaced_module_names diff --git a/nemo/collections/asr/parts/submodules/conformer_modules.py b/nemo/collections/asr/parts/submodules/conformer_modules.py index f1198d07a3a2..7fa2658e7df3 100644 --- a/nemo/collections/asr/parts/submodules/conformer_modules.py +++ b/nemo/collections/asr/parts/submodules/conformer_modules.py @@ -17,6 +17,7 @@ from torch import nn as nn from torch.nn import LayerNorm +from nemo.collections.asr.parts.submodules.batchnorm import FusedBatchNorm1d from nemo.collections.asr.parts.submodules.causal_convs import CausalConv1D from nemo.collections.asr.parts.submodules.multi_head_attention import ( MultiHeadAttention, @@ -322,6 +323,8 @@ def __init__( self.batch_norm = nn.InstanceNorm1d(dw_conv_input_dim) elif norm_type == 'layer_norm': self.batch_norm = nn.LayerNorm(dw_conv_input_dim) + elif norm_type == 'fused_batch_norm': + self.batch_norm = FusedBatchNorm1d(dw_conv_input_dim) elif norm_type.startswith('group_norm'): num_groups = int(norm_type.replace("group_norm", "")) self.batch_norm = nn.GroupNorm(num_groups=num_groups, num_channels=d_model) diff --git a/nemo/utils/enum.py b/nemo/utils/enum.py new file mode 100644 index 000000000000..e8cae9396c9c --- /dev/null +++ b/nemo/utils/enum.py @@ -0,0 +1,40 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum + + +class PrettyStrEnum(Enum): + """ + Pretty enum to work with string values for config options with choices + Provides en automatic error message with possible values, if the value is not in the enum + Converting to string will show the actual string value, which makes serialization/deserialization straightforward + + Example: + class ASRModelType(PrettyStrEnum): + CTC = "ctc" + RNNT = "rnnt" + ... + model_type = ModelType(model_type_string) # automatically validated + if model_type == ModelType.CTC: # more error-prone (to typos) compared to pure string literals + ... # do something specific to CTC model + """ + + def __str__(self): + return self.value + + @classmethod + def _missing_(cls, value: object): + choices = ', '.join(map(str, cls)) + raise ValueError(f"{value} is not a valid {cls.__name__}. Possible choices: {choices}") diff --git a/tests/collections/asr/test_asr_parts_submodules_batchnorm.py b/tests/collections/asr/test_asr_parts_submodules_batchnorm.py new file mode 100644 index 000000000000..e5487895da98 --- /dev/null +++ b/tests/collections/asr/test_asr_parts_submodules_batchnorm.py @@ -0,0 +1,106 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from collections import OrderedDict + +import pytest +import torch +import torch.nn as nn + +from nemo.collections.asr.parts.submodules.batchnorm import ( + FusedBatchNorm1d, + replace_bn_with_fused_bn, + replace_bn_with_fused_bn_all, +) + + +class TestFusedBatchNorm1d: + @pytest.mark.unit + def test_constructor(self): + num_features = 10 + fused_bn = FusedBatchNorm1d(num_features=num_features) + assert fused_bn.weight.shape[0] == num_features + assert fused_bn.bias.shape[0] == num_features + # check initialization: weight is ones, bias is zeros (identity) + assert torch.allclose(fused_bn.weight, torch.ones(num_features)) + assert torch.allclose(fused_bn.bias, torch.zeros(num_features)) + + @pytest.mark.unit + def test_from_batchnorm(self): + num_features = 10 + + # construct batchnorm + bn = nn.BatchNorm1d(num_features=num_features) + + # update bn stats + bn.train() + batch_size = 4 + for _ in range(10): + _ = bn(torch.rand(batch_size, num_features)) + + # test eval mode is equivalent + fused_bn = FusedBatchNorm1d.from_batchnorm(bn) + bn.eval() + + sample_2d = torch.rand(batch_size, num_features) + assert torch.allclose(bn(sample_2d), fused_bn(sample_2d)) + + sample_3d = torch.rand(batch_size, num_features, 5) + assert torch.allclose(bn(sample_3d), fused_bn(sample_3d)) + + +class TestReplaceBNWithFusedBN: + @pytest.mark.unit + def test_replace_bn_with_fused_bn(self): + model = nn.Sequential( + OrderedDict( + [ + ("linear1", nn.Linear(1, 10)), + ("bn1", nn.BatchNorm1d(10)), + ("relu1", nn.ReLU()), + ("linear2", nn.Linear(10, 11)), + ("bn2", nn.BatchNorm1d(11)), + ( + "submodule1", + nn.Sequential(OrderedDict([("linear3", nn.Linear(11, 12)), ("bn3", nn.BatchNorm1d(12))])), + ), + ] + ) + ) + replace_bn_with_fused_bn(model, "submodule1.bn3") + assert isinstance(model.bn1, nn.BatchNorm1d) + assert isinstance(model.bn2, nn.BatchNorm1d) + assert isinstance(model.submodule1.bn3, FusedBatchNorm1d) + + @pytest.mark.unit + def test_replace_bn_with_fused_bn_all(self): + model = nn.Sequential( + OrderedDict( + [ + ("linear1", nn.Linear(1, 10)), + ("bn1", nn.BatchNorm1d(10)), + ("relu1", nn.ReLU()), + ("linear2", nn.Linear(10, 11)), + ("bn2", nn.BatchNorm1d(11)), + ( + "submodule1", + nn.Sequential(OrderedDict([("linear3", nn.Linear(11, 12)), ("bn3", nn.BatchNorm1d(12))])), + ), + ] + ) + ) + replace_bn_with_fused_bn_all(model) + assert isinstance(model.bn1, FusedBatchNorm1d) + assert isinstance(model.bn2, FusedBatchNorm1d) + assert isinstance(model.submodule1.bn3, FusedBatchNorm1d) diff --git a/tests/collections/asr/test_hybrid_asr_tts_models.py b/tests/collections/asr/test_hybrid_asr_tts_models.py new file mode 100644 index 000000000000..f05c030e6cd3 --- /dev/null +++ b/tests/collections/asr/test_hybrid_asr_tts_models.py @@ -0,0 +1,201 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import tempfile +from pathlib import Path + +import pytest +import torch.nn as nn +from omegaconf import DictConfig + +from nemo.collections.asr.models import ASRModel, EncDecCTCModelBPE, EncDecRNNTBPEModel +from nemo.collections.asr.models.hybrid_asr_tts_models import ASRWithTTSModel +from nemo.collections.asr.parts.submodules.batchnorm import FusedBatchNorm1d +from nemo.collections.tts.models import FastPitchModel + + +@pytest.fixture(scope="module") +def fastpitch_model(): + model = FastPitchModel.from_pretrained(model_name="tts_en_fastpitch_multispeaker") + return model + + +@pytest.fixture(scope="module") +def fastpitch_model_path(fastpitch_model, tmp_path_factory): + path = tmp_path_factory.mktemp("tts_models") / "fastpitch.nemo" + fastpitch_model.save_to(path) + return path + + +@pytest.fixture(scope="module") +def conformer_ctc_bpe_bn_model(): + model = EncDecCTCModelBPE.from_pretrained(model_name="stt_en_conformer_ctc_small") + return model + + +@pytest.fixture(scope="module") +def conformer_ctc_bpe_bn_model_path(conformer_ctc_bpe_bn_model, tmp_path_factory): + path = tmp_path_factory.mktemp("asr_models") / "conformer-ctc-bpe-bn.nemo" + conformer_ctc_bpe_bn_model.save_to(path) + return path + + +@pytest.fixture(scope="module") +def conformer_rnnt_bpe_bn_model(): + model = EncDecRNNTBPEModel.from_pretrained(model_name="stt_en_conformer_transducer_small") + return model + + +@pytest.fixture(scope="module") +def conformer_rnnt_bpe_bn_model_path(conformer_rnnt_bpe_bn_model, tmp_path_factory): + path = tmp_path_factory.mktemp("asr_models") / "conformer-rnnt-bpe.nemo" + conformer_rnnt_bpe_bn_model.save_to(path) + return path + + +@pytest.fixture +def asr_model_ctc_bpe_config(test_data_dir): + preprocessor = {'_target_': 'nemo.collections.asr.modules.AudioToMelSpectrogramPreprocessor'} + encoder = { + '_target_': 'nemo.collections.asr.modules.ConvASREncoder', + 'feat_in': 64, + 'activation': 'relu', + 'conv_mask': True, + 'jasper': [ + { + 'filters': 1024, + 'repeat': 1, + 'kernel': [1], + 'stride': [1], + 'dilation': [1], + 'dropout': 0.0, + 'residual': False, + 'separable': True, + 'se': True, + 'se_context_size': -1, + } + ], + } + + decoder = { + '_target_': 'nemo.collections.asr.modules.ConvASRDecoder', + 'feat_in': 1024, + 'num_classes': -1, + 'vocabulary': None, + } + + tokenizer = {'dir': str(Path(test_data_dir) / "asr/tokenizers/an4_wpe_128"), 'type': 'wpe'} + + model_config = DictConfig( + { + 'preprocessor': DictConfig(preprocessor), + 'encoder': DictConfig(encoder), + 'decoder': DictConfig(decoder), + 'tokenizer': DictConfig(tokenizer), + } + ) + return model_config + + +@pytest.fixture +def asr_tts_ctc_bpe_model(asr_model_ctc_bpe_config, fastpitch_model_path): + model = ASRWithTTSModel.from_asr_config( + asr_cfg=asr_model_ctc_bpe_config, asr_model_type="ctc_bpe", tts_model_path=fastpitch_model_path, + ) + return model + + +class TestASRWithTTSModel: + @pytest.mark.with_downloads + @pytest.mark.unit + def test_from_pretrained_ctc_model(self, fastpitch_model_path, conformer_ctc_bpe_bn_model_path): + model = ASRWithTTSModel.from_pretrained_models( + asr_model_path=conformer_ctc_bpe_bn_model_path, tts_model_path=fastpitch_model_path + ) + assert isinstance(model.tts_model, FastPitchModel) + assert isinstance(model.asr_model, EncDecCTCModelBPE) + + @pytest.mark.with_downloads + @pytest.mark.unit + def test_from_pretrained_rnnt_model(self, fastpitch_model_path, conformer_rnnt_bpe_bn_model_path): + model = ASRWithTTSModel.from_pretrained_models( + asr_model_path=conformer_rnnt_bpe_bn_model_path, tts_model_path=fastpitch_model_path + ) + assert isinstance(model.tts_model, FastPitchModel) + assert isinstance(model.asr_model, EncDecRNNTBPEModel) + + @pytest.mark.with_downloads + @pytest.mark.unit + def test_from_asr_config(self, asr_model_ctc_bpe_config, fastpitch_model_path): + model = ASRWithTTSModel.from_asr_config( + asr_cfg=asr_model_ctc_bpe_config, asr_model_type="ctc_bpe", tts_model_path=fastpitch_model_path, + ) + assert isinstance(model.tts_model, FastPitchModel) + assert isinstance(model.asr_model, EncDecCTCModelBPE) + + @pytest.mark.with_downloads + @pytest.mark.unit + def test_save_restore(self, asr_tts_ctc_bpe_model): + with tempfile.TemporaryDirectory() as tmpdir: + save_path = str(Path(tmpdir) / "model.nemo") + asr_tts_ctc_bpe_model.train() + asr_tts_ctc_bpe_model.save_to(save_path) + + restored_model = ASRModel.restore_from(save_path) + assert isinstance(restored_model, ASRWithTTSModel) + assert isinstance(restored_model.tts_model, FastPitchModel) + assert isinstance(restored_model.asr_model, EncDecCTCModelBPE) + + @pytest.mark.with_downloads + @pytest.mark.unit + def test_save_restore_asr(self, asr_tts_ctc_bpe_model): + with tempfile.TemporaryDirectory() as tmpdir: + save_path = str(Path(tmpdir) / "asr_model.nemo") + asr_tts_ctc_bpe_model.save_asr_model_to(save_path) + + restored_model = ASRModel.restore_from(save_path) + assert isinstance(restored_model, EncDecCTCModelBPE) + + @pytest.mark.with_downloads + @pytest.mark.unit + def test_from_pretrained_ctc_model_fused_bn(self, fastpitch_model_path, conformer_ctc_bpe_bn_model_path): + model = ASRWithTTSModel.from_pretrained_models( + asr_model_path=conformer_ctc_bpe_bn_model_path, + tts_model_path=fastpitch_model_path, + asr_model_fuse_bn=True, + ) + assert isinstance(model.tts_model, FastPitchModel) + assert isinstance(model.asr_model, EncDecCTCModelBPE) + assert model.asr_model.cfg.encoder.conv_norm_type == "fused_batch_norm" + + # test model has fused BatchNorm + has_fused_bn = False + for name, module in model.asr_model.named_modules(): + assert not isinstance(module, nn.BatchNorm1d) + has_fused_bn = has_fused_bn or isinstance(module, FusedBatchNorm1d) + assert has_fused_bn, "Fused BatchNorm not found model" + + with tempfile.TemporaryDirectory() as tmpdir: + save_path = str(Path(tmpdir) / "asr_tts_model.nemo") + model.save_to(save_path) + + # check restored model has fused batchnorm + model = ASRWithTTSModel.restore_from(save_path) + assert model.asr_model.cfg.encoder.conv_norm_type == "fused_batch_norm" + + has_fused_bn = False + for name, module in model.asr_model.named_modules(): + assert not isinstance(module, nn.BatchNorm1d) + has_fused_bn = has_fused_bn or isinstance(module, FusedBatchNorm1d) + assert has_fused_bn, "Fused BatchNorm not found model" diff --git a/tests/collections/asr/test_text_to_text_dataset.py b/tests/collections/asr/test_text_to_text_dataset.py new file mode 100644 index 000000000000..3c8951f0141f --- /dev/null +++ b/tests/collections/asr/test_text_to_text_dataset.py @@ -0,0 +1,197 @@ +# Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import multiprocessing +import os +from dataclasses import dataclass +from pathlib import Path + +import pytest +from hydra.utils import instantiate +from nemo_text_processing.text_normalization.normalize import Normalizer +from omegaconf import OmegaConf + +from nemo.collections.asr.data.text_to_text import TextToTextDataset, TextToTextItem, TextToTextIterableDataset +from nemo.collections.common import tokenizers + +BASE_DIR = Path(__file__).parent.parent.parent.parent + + +@pytest.fixture(scope="module") +def set_multiprocessing_method(): + """ + Try to set 'fork' multiprocessing method to avoid problems with multiprocessing in PyTest on MacOS + """ + if multiprocessing.get_start_method(allow_none=True) != "fork": + multiprocessing.set_start_method("fork", force=True) + + +@pytest.fixture(scope="module") +def speakers_path(tmp_path_factory): + path = tmp_path_factory.mktemp("textonly") / "speakers.txt" + with open(path, "w", encoding="utf-8") as f: + for speaker in [1, 2, 3]: + print(f"{speaker}", file=f) + return path + + +@pytest.fixture(scope="module") +def textonly_manifest_path(tmp_path_factory): + path = tmp_path_factory.mktemp("textonly") / "manifest.json" + texts = [ + "lorem ipsum dolor sit amet consectetur adipiscing elit", + "nullam rhoncus sapien eros eu mollis sem euismod non", + ] + with open(path, "w", encoding="utf-8") as f: + for text in texts: + print(json.dumps(dict(text=text, tts_text_normalized=text)), file=f) + return path + + +@pytest.fixture(scope="module") +def textonly_unnormalized_manifest_path(tmp_path_factory): + path = tmp_path_factory.mktemp("textonly") / "manifest_nonorm.json" + texts = [ + ( + "lorem ipsum dolor sit amet consectetur adipiscing elit", + "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + ), + ( + "nullam rhoncus sapien eros eu mollis sem euismod non nineteen", + "Nullam rhoncus sapien eros, eu mollis sem euismod non 19.", + ), + ] + with open(path, "w", encoding="utf-8") as f: + for asr_text, tts_text in texts: + print(json.dumps(dict(text=asr_text, tts_text=tts_text)), file=f) + return path + + +@pytest.fixture(scope="module") +def tts_normalizer(): + normalizer = Normalizer(lang="en", input_case="cased", overwrite_cache=True, cache_dir=None,) + return normalizer + + +@pytest.fixture(scope="module") +def asr_tokenizer(test_data_dir): + tokenizer_path = os.path.join(test_data_dir, "asr", "tokenizers", "an4_wpe_128", 'vocab.txt') + tokenizer = tokenizers.AutoTokenizer(pretrained_model_name='bert-base-cased', vocab_file=tokenizer_path) + return tokenizer + + +@pytest.fixture(scope="module") +def tts_tokenizer(): + @dataclass + class G2PConfig: + _target_: str = "nemo_text_processing.g2p.modules.EnglishG2p" + phoneme_dict: str = str(BASE_DIR / "scripts/tts_dataset_files/cmudict-0.7b_nv22.10") + heteronyms: str = str(BASE_DIR / "scripts/tts_dataset_files/heteronyms-052722") + phoneme_probability: float = 0.5 + + @dataclass + class TextTokenizerCfg: + _target_: str = "nemo.collections.common.tokenizers.text_to_speech.tts_tokenizers.EnglishPhonemesTokenizer" + punct: bool = True + stresses: bool = True + chars: bool = True + apostrophe: bool = True + pad_with_space: bool = True + add_blank_at: bool = True + g2p: G2PConfig = G2PConfig() + + config = OmegaConf.create(OmegaConf.to_yaml(TextTokenizerCfg())) + return instantiate(config) + + +class TestTextToTextDataset: + @pytest.mark.unit + @pytest.mark.parametrize("tokenizer_workers", [1, 2]) + def test_text_to_text_dataset( + self, + textonly_manifest_path, + tokenizer_workers, + speakers_path, + asr_tokenizer, + tts_tokenizer, + tts_normalizer, + set_multiprocessing_method, + ): + """ + Test map-style text-to-text dataset with ASR and TTS tokenizers with normalized text + """ + dataset = TextToTextDataset( + manifest_filepath=textonly_manifest_path, + speakers_filepath=speakers_path, + asr_tokenizer=asr_tokenizer, + asr_use_start_end_token=False, + tts_parser=tts_tokenizer, + tts_text_pad_id=0, + tts_text_normalizer=tts_normalizer, + tts_text_normalizer_call_kwargs=dict(), + tokenizer_workers=tokenizer_workers, + ) + assert len(dataset) == 2 + item = dataset[0] + assert isinstance(item, TextToTextItem) + + @pytest.mark.unit + def test_text_to_text_dataset_unnormalized( + self, textonly_unnormalized_manifest_path, speakers_path, asr_tokenizer, tts_tokenizer, tts_normalizer + ): + """ + Test TextToTextDataset with ASR and TTS tokenizers with non-normalized text + """ + dataset = TextToTextDataset( + manifest_filepath=textonly_unnormalized_manifest_path, + speakers_filepath=speakers_path, + asr_tokenizer=asr_tokenizer, + asr_use_start_end_token=False, + tts_parser=tts_tokenizer, + tts_text_pad_id=0, + tts_text_normalizer=tts_normalizer, + tts_text_normalizer_call_kwargs=dict(), + ) + assert len(dataset) == 2 + + @pytest.mark.unit + @pytest.mark.parametrize("tokenizer_workers", [1, 2]) + def test_text_to_text_iterable_dataset( + self, + textonly_manifest_path, + tokenizer_workers, + speakers_path, + asr_tokenizer, + tts_tokenizer, + tts_normalizer, + set_multiprocessing_method, + ): + """ + Test iterable text-to-text dataset with ASR and TTS tokenizers with normalized text + """ + dataset = TextToTextIterableDataset( + manifest_filepath=textonly_manifest_path, + speakers_filepath=speakers_path, + asr_tokenizer=asr_tokenizer, + asr_use_start_end_token=False, + tts_parser=tts_tokenizer, + tts_text_pad_id=0, + tts_text_normalizer=tts_normalizer, + tts_text_normalizer_call_kwargs=dict(), + tokenizer_workers=tokenizer_workers, + ) + assert len(dataset) == 2 + item = next(iter(dataset)) + assert isinstance(item, TextToTextItem) diff --git a/tests/conftest.py b/tests/conftest.py index 4cfb756765a1..e01fad2e0f47 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -108,9 +108,12 @@ def cleanup_local_folder(): rmtree('./nemo_experiments', ignore_errors=True) -@pytest.fixture +@pytest.fixture(scope="session") def test_data_dir(): - """ Fixture returns test_data_dir. """ + """ + Fixture returns test_data_dir. + Use the highest fixture scope `session` to allow other fixtures with any other scope to use it. + """ # Test dir. test_data_dir_ = join(dirname(__file__), __TEST_DATA_SUBDIR) return test_data_dir_ diff --git a/tests/utils/test_enum.py b/tests/utils/test_enum.py new file mode 100644 index 000000000000..2f56dd900a53 --- /dev/null +++ b/tests/utils/test_enum.py @@ -0,0 +1,41 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from nemo.utils.enum import PrettyStrEnum + + +class ASRModelType(PrettyStrEnum): + CTC = "ctc" + RNNT = "rnnt" + + +class TestPrettyStrEnum: + def test_incorrect_value(self): + """Test pretty error message for invalid value""" + try: + ASRModelType("incorrect") + except ValueError as e: + assert str(e) == "incorrect is not a valid ASRModelType. Possible choices: ctc, rnnt" + + def test_correct_value(self): + """Test that correct value is accepted""" + assert ASRModelType("ctc") == ASRModelType.CTC + + def test_str(self): + """ + Test that str() returns the source value, + useful for serialization/deserialization and user-friendly logging + """ + assert str(ASRModelType("ctc")) == "ctc" From 251e117a7ce944d7d0febfd7ca411192fdb63dc6 Mon Sep 17 00:00:00 2001 From: athitten <47577437+athitten@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:56:11 -0800 Subject: [PATCH 26/73] Set providers for ORT inference session (#5903) Signed-off-by: athitten Signed-off-by: Jason --- tutorials/asr/ASR_with_NeMo.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/asr/ASR_with_NeMo.ipynb b/tutorials/asr/ASR_with_NeMo.ipynb index 519456a012af..cf669f178845 100644 --- a/tutorials/asr/ASR_with_NeMo.ipynb +++ b/tutorials/asr/ASR_with_NeMo.ipynb @@ -1077,7 +1077,7 @@ "\n", "quartznet.export('qn.onnx')\n", "\n", - "ort_session = onnxruntime.InferenceSession('qn.onnx')\n", + "ort_session = onnxruntime.InferenceSession('qn.onnx', providers=['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'])\n", "\n", "with tempfile.TemporaryDirectory() as tmpdir:\n", " with open(os.path.join(tmpdir, 'manifest.json'), 'w') as fp:\n", @@ -1172,4 +1172,4 @@ "outputs": [] } ] -} \ No newline at end of file +} From 033f036606003175a6d695db9ac2d18ab8715954 Mon Sep 17 00:00:00 2001 From: anteju <108555623+anteju@users.noreply.github.com> Date: Wed, 1 Feb 2023 14:47:48 -0800 Subject: [PATCH 27/73] [ASR] Configurable metrics for audio-to-audio + removed experimental decorators (#5827) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added an option to configure metrics for audio-to-audio models Removed experimental decorators Signed-off-by: Ante Jukić * Addressed review comments Signed-off-by: Ante Jukić --------- Signed-off-by: Ante Jukić Signed-off-by: Jason --- .../conf/multichannel_enhancement.yaml | 9 + .../audio_to_audio/process_audio.py | 0 .../audio_to_audio/speech_enhancement.py | 6 + nemo/collections/asr/data/audio_to_audio.py | 5 - nemo/collections/asr/metrics/audio.py | 198 ++++++++++++++++++ .../asr/models/audio_to_audio_model.py | 130 ++++++++++-- .../asr/models/enhancement_models.py | 23 +- tests/collections/asr/test_asr_metrics.py | 129 ++++++++++++ 8 files changed, 469 insertions(+), 31 deletions(-) rename examples/asr/{experimental => }/audio_to_audio/conf/multichannel_enhancement.yaml (95%) rename examples/asr/{experimental => }/audio_to_audio/process_audio.py (100%) rename examples/asr/{experimental => }/audio_to_audio/speech_enhancement.py (89%) create mode 100644 nemo/collections/asr/metrics/audio.py diff --git a/examples/asr/experimental/audio_to_audio/conf/multichannel_enhancement.yaml b/examples/asr/audio_to_audio/conf/multichannel_enhancement.yaml similarity index 95% rename from examples/asr/experimental/audio_to_audio/conf/multichannel_enhancement.yaml rename to examples/asr/audio_to_audio/conf/multichannel_enhancement.yaml index f38c1fe69bcb..40463277fd70 100644 --- a/examples/asr/experimental/audio_to_audio/conf/multichannel_enhancement.yaml +++ b/examples/asr/audio_to_audio/conf/multichannel_enhancement.yaml @@ -66,6 +66,15 @@ model: loss: _target_: nemo.collections.asr.losses.SDRLoss scale_invariant: true # Use scale-invariant SDR + + metrics: + val: + sdr: # output SDR + _target_: torchmetrics.audio.SignalDistortionRatio + test: + sdr_ch0: # SDR on output channel 0 + _target_: torchmetrics.audio.SignalDistortionRatio + channel: 0 optim: name: adamw diff --git a/examples/asr/experimental/audio_to_audio/process_audio.py b/examples/asr/audio_to_audio/process_audio.py similarity index 100% rename from examples/asr/experimental/audio_to_audio/process_audio.py rename to examples/asr/audio_to_audio/process_audio.py diff --git a/examples/asr/experimental/audio_to_audio/speech_enhancement.py b/examples/asr/audio_to_audio/speech_enhancement.py similarity index 89% rename from examples/asr/experimental/audio_to_audio/speech_enhancement.py rename to examples/asr/audio_to_audio/speech_enhancement.py index d12f6c47af06..a731c3d78677 100644 --- a/examples/asr/experimental/audio_to_audio/speech_enhancement.py +++ b/examples/asr/audio_to_audio/speech_enhancement.py @@ -27,6 +27,7 @@ PyTorch Lightning Trainer arguments and args of the model and the optimizer can be added or overriden from CLI """ import pytorch_lightning as pl +import torch from omegaconf import OmegaConf from nemo.collections.asr.models import EncMaskDecAudioToAudioModel @@ -52,6 +53,11 @@ def main(cfg): # Run on test data, if available if hasattr(cfg.model, 'test_ds') and cfg.model.test_ds.manifest_filepath is not None: if trainer.is_global_zero: + # Destroy the current process group and let the trainer initialize it again with a single device. + if torch.distributed.is_initialized(): + torch.distributed.destroy_process_group() + + # Run test on a single device trainer = pl.Trainer(devices=1, accelerator=cfg.trainer.accelerator) if model.prepare_test(trainer): trainer.test(model) diff --git a/nemo/collections/asr/data/audio_to_audio.py b/nemo/collections/asr/data/audio_to_audio.py index 6a10a4a300b5..6b627c6a11dd 100644 --- a/nemo/collections/asr/data/audio_to_audio.py +++ b/nemo/collections/asr/data/audio_to_audio.py @@ -30,7 +30,6 @@ from nemo.core.classes import Dataset from nemo.core.neural_types import AudioSignal, EncodedRepresentation, LengthsType, NeuralType from nemo.utils import logging -from nemo.utils.decorators import experimental __all__ = [ 'AudioToTargetDataset', @@ -677,7 +676,6 @@ def load_embedding_vector(filepath: str) -> np.ndarray: return embedding -@experimental class BaseAudioDataset(Dataset): """Base class of audio datasets, providing common functionality for other audio datasets. @@ -772,7 +770,6 @@ def _collate_fn(self, batch) -> Tuple[torch.Tensor]: ) -@experimental class AudioToTargetDataset(BaseAudioDataset): """A dataset for audio-to-audio tasks where the goal is to use an input signal to recover the corresponding target signal. @@ -885,7 +882,6 @@ def output_types(self) -> Optional[Dict[str, NeuralType]]: ) -@experimental class AudioToTargetWithReferenceDataset(BaseAudioDataset): """A dataset for audio-to-audio tasks where the goal is to use an input signal to recover the corresponding target signal and an @@ -1030,7 +1026,6 @@ def output_types(self) -> Optional[Dict[str, NeuralType]]: ) -@experimental class AudioToTargetWithEmbeddingDataset(BaseAudioDataset): """A dataset for audio-to-audio tasks where the goal is to use an input signal to recover the corresponding target signal and an diff --git a/nemo/collections/asr/metrics/audio.py b/nemo/collections/asr/metrics/audio.py new file mode 100644 index 000000000000..df48c4a8c583 --- /dev/null +++ b/nemo/collections/asr/metrics/audio.py @@ -0,0 +1,198 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import Callable, Iterable, List, Optional, Tuple + +import torch +from torchmetrics import Metric +from torchmetrics.audio.pesq import PerceptualEvaluationSpeechQuality +from torchmetrics.audio.pit import PermutationInvariantTraining +from torchmetrics.audio.sdr import ScaleInvariantSignalDistortionRatio, SignalDistortionRatio +from torchmetrics.audio.snr import ScaleInvariantSignalNoiseRatio, SignalNoiseRatio +from torchmetrics.audio.stoi import ShortTimeObjectiveIntelligibility + +from nemo.utils import logging + +__all__ = ['AudioMetricWrapper'] + +__VERIFIED_METRICS__ = [ + PermutationInvariantTraining, + ScaleInvariantSignalDistortionRatio, + SignalDistortionRatio, + ScaleInvariantSignalNoiseRatio, + SignalNoiseRatio, + PerceptualEvaluationSpeechQuality, + ShortTimeObjectiveIntelligibility, +] + + +class AudioMetricWrapper(Metric): + """A wrapper around an audio metric enabling selection of a specific channel + and handling of examples in a batch with varying valid input length. + + Note: + This class assumes that the underlying metric uses averaging to calculate the + value over a batch. This assumption is only used by `forward` and does not + impact other methods, such as `update` and `compute`. + + Args: + metric: base metric that should be wrapped. It is assumed that calculation + of the metric over a batch is done by averaging. + channel: Optional, for selecting a channel from `preds` and `target` signals. + If None, all channels are used. + metric_using_batch_averaging: Optional, used to denote that the base metric + is using averaging to calculate the metric value + for a batch. + """ + + full_state_update: bool = False + + def __init__( + self, metric: Metric, channel: Optional[int] = None, metric_using_batch_averaging: Optional[bool] = None + ): + super().__init__() + if not isinstance(metric, Metric): + raise ValueError(f"Expected argument `metric` to be an instance of `torchmetrics.Metric` but got {metric}") + + if not metric_using_batch_averaging and type(metric) not in __VERIFIED_METRICS__: + raise ValueError( + f'Metric {metric} is not in verified metrics. {self.__class__.__name__} assumes reduction over batch is calculated using averaging. \n' + 'This should not affect the final results, but values for a single batch obtained using `forward` may be inaccurate if using `input_length`. \n' + 'To suppress this message, please confirm the used metric is using batch averaging and set "metric_using_batch_averaging = True"' + ) + + self._metric = metric + self._channel = channel + logging.debug('Setup metric %s, channel %s', metric, str(channel)) + + def _select_channel(self, preds: torch.Tensor, target: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor]: + """Select a single channel from input signals. + + Args: + preds: tensor with shape (B, C, T) + target: tensor with shape (B, C, T) + + Returns: + Original tensors if self.channel is None, shape (B, C, T). + A single channel from input tensors if self.channel is set, shape (B, T) + """ + if self._channel is None: + return preds, target + else: + return preds[:, self._channel, ...], target[:, self._channel, ...] + + @staticmethod + def _trim_inputs( + preds: torch.Tensor, target: torch.Tensor, input_length: torch.Tensor + ) -> Iterable[Tuple[torch.Tensor, torch.Tensor]]: + """Trim input tensors to input_length samples. + + Args: + preds: tensor with shape (B, C, T) + target: tensor with shape (B, C, T) + + Returns: + An iterable with tuples of (preds, target) with + the correct length. + """ + # Each example has a different length + for b_idx, b_len in enumerate(input_length): + b_preds = preds[b_idx, ..., :b_len] + b_target = target[b_idx, ..., :b_len] + + yield b_preds, b_target + + @staticmethod + def _batch_reduction(batch_values: List[torch.Tensor]) -> torch.Tensor: + """Reduce metric values for each example in a batch to a single + value for the whole batch. + + Args: + batch_values: list of metric values for each example in a batch + + Returns: + Average metric value over the batch. + """ + return sum(batch_values) / len(batch_values) + + def update(self, preds: torch.Tensor, target: torch.Tensor, input_length: Optional[torch.Tensor] = None) -> None: + """Update the underlying metric by taking into account channel selector and input length. + + Args: + preds: tensor with predictions, shape (B, C, T) + target: tensor with target signals, shape (B, C, T) + input_length: Optional, input tensor with length (in samples) of each signal in the batch, shape (B,). + If not provided, it is assumed that all samples are valid. + + Returns: + Underlying metric averaged on the current batch. + """ + preds, target = self._select_channel(preds=preds, target=target) + + if input_length is None: + self._metric.update(preds=preds, target=target) + else: + # Each example in this batch has a different length + for b_preds, b_target in self._trim_inputs(preds=preds, target=target, input_length=input_length): + self._metric.update(preds=b_preds, target=b_target) + + def compute(self) -> torch.Tensor: + """Compute the underlying metric. + """ + return self._metric.compute() + + def forward( + self, preds: torch.Tensor, target: torch.Tensor, input_length: Optional[torch.Tensor] = None + ) -> torch.Tensor: + """Call underlying forward method to add the batch statistics to the accumulated metric state + and return the result for the current batch. + + Args: + preds: tensor with predictions, shape (B, C, T) + target: tensor with target signals, shape (B, C, T) + input_length: Optional, input tensor with length (in samples) of each signal in the batch, shape (B,). + If not provided, it is assumed that all samples are valid. + + Returns: + Underlying metric averaged on the current batch. + """ + preds, target = self._select_channel(preds=preds, target=target) + + if input_length is None: + return self._metric(preds=preds, target=target) + else: + # Each example in this batch has a different length + batch_values = [] + for b_preds, b_target in self._trim_inputs(preds=preds, target=target, input_length=input_length): + batch_values.append(self._metric(preds=b_preds, target=b_target)) + # Average over the batch + return self._batch_reduction(batch_values) + + def reset(self) -> None: + """Reset the underlying metric. + """ + self._metric.reset() + + def __repr__(self) -> str: + """Return string representation of the object. + """ + _op_metric = f"(metric: {repr(self._metric)}, channel: {self._channel})" + repr_str = self.__class__.__name__ + _op_metric + + return repr_str + + def _wrap_compute(self, compute: Callable) -> Callable: + """Overwrite to do nothing, as in CompositionalMetric. + """ + return compute diff --git a/nemo/collections/asr/models/audio_to_audio_model.py b/nemo/collections/asr/models/audio_to_audio_model.py index d38a0557bf46..b48cd0c14e62 100644 --- a/nemo/collections/asr/models/audio_to_audio_model.py +++ b/nemo/collections/asr/models/audio_to_audio_model.py @@ -15,39 +15,105 @@ from abc import ABC, abstractmethod from typing import List, Union +import hydra import torch +from omegaconf import DictConfig +from pytorch_lightning import Trainer +from nemo.collections.asr.metrics.audio import AudioMetricWrapper from nemo.core.classes import ModelPT from nemo.utils import logging, model_utils -from nemo.utils.decorators import experimental __all__ = ['AudioToAudioModel'] -@experimental class AudioToAudioModel(ModelPT, ABC): - @abstractmethod - def process( - self, paths2audio_files: List[str], output_dir: str, batch_size: int = 4 - ) -> List[Union[str, List[str]]]: + def __init__(self, cfg: DictConfig, trainer: Trainer = None): + super().__init__(cfg=cfg, trainer=trainer) + + self._setup_loss() + + def _setup_loss(self): + """Setup loss for this model. """ - Takes paths to audio files and returns a list of paths to processed - audios. + self.loss = AudioToAudioModel.from_config_dict(self._cfg.loss) - Args: - paths2audio_files: paths to audio files to be processed - output_dir: directory to save processed files - batch_size: batch size for inference + def _get_num_dataloaders(self, tag: str = 'val'): + if tag == 'val': + num_dataloaders = len(self._validation_dl) if isinstance(self._validation_dl, List) else 1 + elif tag == 'test': + num_dataloaders = len(self._test_dl) if isinstance(self._test_dl, List) else 1 + else: + raise ValueError(f'Unexpected tag {tag}.') - Returns: - Paths to processed audio signals. + return num_dataloaders + + def _setup_metrics(self, tag: str = 'val'): + """Setup metrics for this model for all available dataloaders. + + When using multiple DataLoaders, it is recommended to initialize separate modular + metric instances for each DataLoader and use them separately. + + Reference: + - https://torchmetrics.readthedocs.io/en/stable/pages/lightning.html#common-pitfalls """ - pass + # Number of currently configured dataloaders + num_dataloaders = self._get_num_dataloaders(tag) + logging.debug('Found %d dataloaders for %s', num_dataloaders, tag) + + if hasattr(self, 'metrics'): + if tag in self.metrics and len(self.metrics[tag]) == num_dataloaders: + # Exact number of metrics have already been configured, nothing else to do + logging.debug('Found %d metrics for tag %s, not necesary to initialize again', num_dataloaders, tag) + return + + if 'metrics' not in self._cfg or tag not in self._cfg['metrics']: + # Metrics are not available in the configuration, nothing to do + logging.debug('No metrics configured for %s in model.metrics.%s', tag, tag) + return + + metrics_cfg = self._cfg['metrics'][tag] + + if 'loss' in metrics_cfg: + raise ValueError( + f'Loss is automatically included in the metrics, it should not be specified in model.metrics.{tag}.' + ) + + # Initialize metrics + if not hasattr(self, 'metrics'): + self.metrics = torch.nn.ModuleDict() + + # Setup metrics for each dataloader + self.metrics[tag] = torch.nn.ModuleList() + for dataloader_idx in range(num_dataloaders): + metrics_dataloader_idx = torch.nn.ModuleDict( + { + name: AudioMetricWrapper( + metric=hydra.utils.instantiate(cfg), + channel=cfg.get('channel'), + metric_using_batch_averaging=cfg.get('metric_using_batch_averaging'), + ) + for name, cfg in metrics_cfg.items() + } + ) + self.metrics[tag].append(metrics_dataloader_idx.to(self.device)) + + logging.info( + 'Setup metrics for %s, dataloader %d: %s', tag, dataloader_idx, ', '.join(metrics_dataloader_idx) + ) @abstractmethod def evaluation_step(self, batch, batch_idx, dataloader_idx: int = 0, tag: str = 'val'): pass + def on_validation_start(self): + self._setup_metrics('val') + return super().on_validation_start() + + def on_test_start(self): + self._setup_metrics('test') + return super().on_test_start() + def validation_step(self, batch, batch_idx, dataloader_idx: int = 0): return self.evaluation_step(batch, batch_idx, dataloader_idx, 'val') @@ -55,9 +121,23 @@ def test_step(self, batch, batch_idx, dataloader_idx=0): return self.evaluation_step(batch, batch_idx, dataloader_idx, 'test') def multi_evaluation_epoch_end(self, outputs, dataloader_idx: int = 0, tag: str = 'val'): + # Handle loss loss_mean = torch.stack([x[f'{tag}_loss'] for x in outputs]).mean() + output_dict = {f'{tag}_loss': loss_mean} tensorboard_logs = {f'{tag}_loss': loss_mean} - return {f'{tag}_loss': loss_mean, 'log': tensorboard_logs} + + # Handle metrics for this tag and dataloader_idx + if hasattr(self, 'metrics') and tag in self.metrics: + for name, metric in self.metrics[tag][dataloader_idx].items(): + # Compute & reset the metric + value = metric.compute() + metric.reset() + # Store for logs + tensorboard_logs[f'{tag}_{name}'] = value + + output_dict['log'] = tensorboard_logs + + return output_dict def multi_validation_epoch_end(self, outputs, dataloader_idx: int = 0): return self.multi_evaluation_epoch_end(outputs, dataloader_idx, 'val') @@ -65,6 +145,24 @@ def multi_validation_epoch_end(self, outputs, dataloader_idx: int = 0): def multi_test_epoch_end(self, outputs, dataloader_idx: int = 0): return self.multi_evaluation_epoch_end(outputs, dataloader_idx, 'test') + @abstractmethod + def process( + self, paths2audio_files: List[str], output_dir: str, batch_size: int = 4 + ) -> List[Union[str, List[str]]]: + """ + Takes paths to audio files and returns a list of paths to processed + audios. + + Args: + paths2audio_files: paths to audio files to be processed + output_dir: directory to save processed files + batch_size: batch size for inference + + Returns: + Paths to processed audio signals. + """ + pass + @classmethod def list_available_models(cls) -> 'List[PretrainedModelInfo]': """ diff --git a/nemo/collections/asr/models/enhancement_models.py b/nemo/collections/asr/models/enhancement_models.py index c9ca358e7854..9d5b711b9e1c 100644 --- a/nemo/collections/asr/models/enhancement_models.py +++ b/nemo/collections/asr/models/enhancement_models.py @@ -30,12 +30,10 @@ from nemo.core.classes.common import PretrainedModelInfo, typecheck from nemo.core.neural_types import AudioSignal, LengthsType, NeuralType from nemo.utils import logging -from nemo.utils.decorators import experimental __all__ = ['EncMaskDecAudioToAudioModel'] -@experimental class EncMaskDecAudioToAudioModel(AudioToAudioModel): """Class for encoder-mask-decoder audio processing models. @@ -66,9 +64,6 @@ def __init__(self, cfg: DictConfig, trainer: Trainer = None): # If subclasses need to modify the config before calling super() # Check ASRBPE* classes do with their mixin - # Setup loss - self.loss = EncMaskDecAudioToAudioModel.from_config_dict(self._cfg.loss) - # Setup optional Optimization flags self.setup_optimization_flags() @@ -92,7 +87,8 @@ def process( output_dir: batch_size: (int) batch size to use during inference. Bigger will result in better throughput performance but would use more memory. - channel_selector (int | Iterable[int] | str): select a single channel or a subset of channels from multi-channel audio. If set to `'average'`, it performs averaging across channels. Disabled if set to `None`. Defaults to `None`. + num_workers: Number of workers for the dataloader + input_channel_selector (int | Iterable[int] | str): select a single channel or a subset of channels from multi-channel audio. If set to `'average'`, it performs averaging across channels. Disabled if set to `None`. Defaults to `None`. Returns: """ @@ -413,13 +409,20 @@ def evaluation_step(self, batch, batch_idx, dataloader_idx: int = 0, tag: str = processed_signal, _ = self.forward(input_signal=input_signal, input_length=input_length) + # Prepare output loss_value = self.loss(estimate=processed_signal, target=target_signal, input_length=input_length) + output_dict = {f'{tag}_loss': loss_value} - self.log('global_step', torch.tensor(self.trainer.global_step, dtype=torch.float32)) + # Update metrics + if hasattr(self, 'metrics') and tag in self.metrics: + # Update metrics for this (tag, dataloader_idx) + for name, metric in self.metrics[tag][dataloader_idx].items(): + metric.update(preds=processed_signal, target=target_signal, input_length=input_length) - return { - f'{tag}_loss': loss_value, - } + # Log global step + self.log('global_step', torch.tensor(self.trainer.global_step, dtype=torch.float32), sync_dist=True) + + return output_dict @classmethod def list_available_models(cls) -> Optional[PretrainedModelInfo]: diff --git a/tests/collections/asr/test_asr_metrics.py b/tests/collections/asr/test_asr_metrics.py index 62b0a865cea7..9a43ed4e2b90 100644 --- a/tests/collections/asr/test_asr_metrics.py +++ b/tests/collections/asr/test_asr_metrics.py @@ -21,7 +21,9 @@ import pytest import torch +from torchmetrics.audio.snr import SignalNoiseRatio +from nemo.collections.asr.metrics.audio import AudioMetricWrapper from nemo.collections.asr.metrics.rnnt_wer import RNNTWER from nemo.collections.asr.metrics.rnnt_wer_bpe import RNNTBPEWER from nemo.collections.asr.metrics.wer import ( @@ -522,3 +524,130 @@ def test_subword_decoding_labels(self): assert hyp.text != '' assert len(hyp.timestep) == 3 assert hyp.alignments is None + + +class TestAudioMetricWrapper: + def test_metric_full_batch(self): + """Test metric on batches where all examples have equal length. + """ + ref_metric = SignalNoiseRatio() + wrapped_metric = AudioMetricWrapper(metric=SignalNoiseRatio()) + + num_resets = 5 + num_batches = 10 + batch_size = 8 + num_channels = 2 + num_samples = 200 + + batch_shape = (batch_size, num_channels, num_samples) + + for nr in range(num_resets): + for nb in range(num_batches): + target = torch.rand(*batch_shape) + preds = target + torch.rand(1) * torch.rand(*batch_shape) + + # test forward for a single batch + batch_value_wrapped = wrapped_metric(preds=preds, target=target) + batch_value_ref = ref_metric(preds=preds, target=target) + + assert torch.allclose( + batch_value_wrapped, batch_value_ref + ), f'Metric forward not matching for batch {nb}, reset {nr}' + + # test compute (over num_batches) + assert torch.allclose( + wrapped_metric.compute(), ref_metric.compute() + ), f'Metric compute not matching for batch {nb}, reset {nr}' + + ref_metric.reset() + wrapped_metric.reset() + + def test_input_length(self): + """Test metric on batches where examples have different length. + """ + ref_metric = SignalNoiseRatio() + wrapped_metric = AudioMetricWrapper(metric=SignalNoiseRatio()) + + num_resets = 5 + num_batches = 10 + batch_size = 8 + num_channels = 2 + num_samples = 200 + + batch_shape = (batch_size, num_channels, num_samples) + + for nr in range(num_resets): + for nb in range(num_batches): + target = torch.rand(*batch_shape) + preds = target + torch.rand(1) * torch.rand(*batch_shape) + + input_length = torch.randint(low=num_samples // 2, high=num_samples, size=(batch_size,)) + + # test forward for a single batch + batch_value_wrapped = wrapped_metric(preds=preds, target=target, input_length=input_length) + + # compute reference value, assuming batch reduction using averaging + batch_value_ref = 0 + for b_idx, b_len in enumerate(input_length): + batch_value_ref += ref_metric(preds=preds[b_idx, ..., :b_len], target=target[b_idx, ..., :b_len]) + batch_value_ref /= batch_size # average + + assert torch.allclose( + batch_value_wrapped, batch_value_ref + ), f'Metric forward not matching for batch {nb}, reset {nr}' + + # test compute (over num_batches) + assert torch.allclose( + wrapped_metric.compute(), ref_metric.compute() + ), f'Metric compute not matching for batch {nb}, reset {nr}' + + ref_metric.reset() + wrapped_metric.reset() + + @pytest.mark.unit + @pytest.mark.parametrize('channel', [0, 1]) + def test_channel(self, channel): + """Test metric on a single channel from a batch. + """ + ref_metric = SignalNoiseRatio() + # select only a single channel + wrapped_metric = AudioMetricWrapper(metric=SignalNoiseRatio(), channel=channel) + + num_resets = 5 + num_batches = 10 + batch_size = 8 + num_channels = 2 + num_samples = 200 + + batch_shape = (batch_size, num_channels, num_samples) + + for nr in range(num_resets): + for nb in range(num_batches): + target = torch.rand(*batch_shape) + preds = target + torch.rand(1) * torch.rand(*batch_shape) + + # varying length + input_length = torch.randint(low=num_samples // 2, high=num_samples, size=(batch_size,)) + + # test forward for a single batch + batch_value_wrapped = wrapped_metric(preds=preds, target=target, input_length=input_length) + + # compute reference value, assuming batch reduction using averaging + batch_value_ref = 0 + for b_idx, b_len in enumerate(input_length): + batch_value_ref += ref_metric( + preds=preds[b_idx, channel, :b_len], target=target[b_idx, channel, :b_len] + ) + batch_value_ref /= batch_size # average + + assert torch.allclose( + batch_value_wrapped, batch_value_ref + ), f'Metric forward not matching for batch {nb}, reset {nr}' + + # test compute (over num_batches) + assert torch.allclose( + wrapped_metric.compute(), ref_metric.compute() + ), f'Metric compute not matching for batch {nb}, reset {nr}' + + ref_metric.reset() + wrapped_metric.reset() From f694dbca170061ddc04aa4a02e93d48efb8a48f2 Mon Sep 17 00:00:00 2001 From: Somshubra Majumdar Date: Wed, 1 Feb 2023 15:59:51 -0800 Subject: [PATCH 28/73] Correct doc for RNNT transcribe() function (#5904) Signed-off-by: smajumdar Signed-off-by: Jason --- nemo/collections/asr/models/hybrid_rnnt_ctc_models.py | 4 +++- nemo/collections/asr/models/rnnt_models.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/nemo/collections/asr/models/hybrid_rnnt_ctc_models.py b/nemo/collections/asr/models/hybrid_rnnt_ctc_models.py index a393b65ccd79..7b694a6b6aac 100644 --- a/nemo/collections/asr/models/hybrid_rnnt_ctc_models.py +++ b/nemo/collections/asr/models/hybrid_rnnt_ctc_models.py @@ -114,7 +114,9 @@ def transcribe( channel_selector (int | Iterable[int] | str): select a single channel or a subset of channels from multi-channel audio. If set to `'average'`, it performs averaging across channels. Disabled if set to `None`. Defaults to `None`. Uses zero-based indexing. Returns: - A list of transcriptions in the same order as paths2audio_files. Will also return + Returns a tuple of 2 items - + * A list of greedy transcript texts / Hypothesis + * An optional list of beam search transcript texts / Hypothesis / NBestHypothesis. """ if self.use_rnnt_decoder: return super().transcribe(**kwargs) diff --git a/nemo/collections/asr/models/rnnt_models.py b/nemo/collections/asr/models/rnnt_models.py index 31fc2f26d6a4..4a7078e062c7 100644 --- a/nemo/collections/asr/models/rnnt_models.py +++ b/nemo/collections/asr/models/rnnt_models.py @@ -234,7 +234,9 @@ def transcribe( channel_selector (int | Iterable[int] | str): select a single channel or a subset of channels from multi-channel audio. If set to `'average'`, it performs averaging across channels. Disabled if set to `None`. Defaults to `None`. Uses zero-based indexing. augmentor: (DictConfig): Augment audio samples during transcription if augmentor is applied. Returns: - A list of transcriptions in the same order as paths2audio_files. Will also return + Returns a tuple of 2 items - + * A list of greedy transcript texts / Hypothesis + * An optional list of beam search transcript texts / Hypothesis / NBestHypothesis. """ if paths2audio_files is None or len(paths2audio_files) == 0: return {} From 2e3a04cceb0abb1a5bcb31785b2dd6ae77f8559e Mon Sep 17 00:00:00 2001 From: CaraDuf <91517923+Ca-ressemble-a-du-fake@users.noreply.github.com> Date: Thu, 2 Feb 2023 17:31:44 +0100 Subject: [PATCH 29/73] Add segmentation export to Audacity label file (#5857) * Save the segmentation as label file for Audacity Audacity is a free open source audio editor that can import label file to quickly assess the segmentation quality. This commit add the export to [Audacity label format](https://manual.audacityteam.org/man/importing_and_exporting_labels.html) so that directly after running the segmentation tool the segmentation quality can be assessed or the segmentation can be shared easily. Signed-off-by: CaraDuf <91517923+Ca-ressemble-a-du-fake@users.noreply.github.com> * Fix styling Signed-off-by: CaraDuf <91517923+Ca-ressemble-a-du-fake@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Remove unused score in audacity export score is not written in audacity label file so we can safely not load it from segment. Signed-off-by: CaraDuf <91517923+Ca-ressemble-a-du-fake@users.noreply.github.com> --------- Signed-off-by: CaraDuf <91517923+Ca-ressemble-a-du-fake@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- tools/ctc_segmentation/scripts/utils.py | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tools/ctc_segmentation/scripts/utils.py b/tools/ctc_segmentation/scripts/utils.py index c5494bdcd2ba..0f4d0184c187 100644 --- a/tools/ctc_segmentation/scripts/utils.py +++ b/tools/ctc_segmentation/scripts/utils.py @@ -117,6 +117,12 @@ def get_segments( segments = determine_utterance_segments(config, utt_begin_indices, char_probs, timings, text, char_list) write_output(output_file, path_wav, segments, text, text_no_preprocessing, text_normalized) + + # Also writes labels in audacity format + output_file_audacity = output_file[:-4] + "_audacity.txt" + write_labels_for_audacity(output_file_audacity, segments, text_no_preprocessing) + logging.info(f"Label file for Audacity written to {output_file_audacity}.") + for i, (word, segment) in enumerate(zip(text, segments)): if i < 5: logging.debug(f"{segment[0]:.2f} {segment[1]:.2f} {segment[2]:3.4f} {word}") @@ -293,3 +299,29 @@ def write_output( outfile.write( f"{start} {end} {score} | {text[i]} | {text_no_preprocessing[i]} | {text_normalized[i]}\n" ) + + +def write_labels_for_audacity( + out_path: str, segments: List[Tuple[float]], text_no_preprocessing: str, +): + """ + Write the segmentation output to a file ready to be imported in Audacity with the unprocessed text as labels + + out_path: Path to output file + segments: Segments include start, end and alignment score + text_no_preprocessing: Reference txt without any pre-processing + """ + # AUdacity uses tab to separate each field (start end text) + TAB_CHAR = " " + + # Uses char-wise alignments to get utterance-wise alignments and writes them into the given file + with open(str(out_path), "w") as outfile: + + for i, segment in enumerate(segments): + if isinstance(segment, list): + for j, x in enumerate(segment): + start, end, _ = x + outfile.write(f"{start}{TAB_CHAR}{end}{TAB_CHAR}{text_no_preprocessing[i][j]} \n") + else: + start, end, _ = segment + outfile.write(f"{start}{TAB_CHAR}{end}{TAB_CHAR}{text_no_preprocessing[i]} \n") From fa2962967b21841c059305aebe46e29f507898c5 Mon Sep 17 00:00:00 2001 From: Sandeep Subramanian Date: Thu, 2 Feb 2023 10:34:48 -0800 Subject: [PATCH 30/73] Cross-Lingual objectives (XLM) and multilingual (many-many) support for Megatron-NMT (#5026) * Update blendable dataset, and refactor seq2seq data Signed-off-by: MaximumEntropy * Blendable dataset with binarized mmap working Signed-off-by: MaximumEntropy * Pass seed from cfg to dataset Signed-off-by: MaximumEntropy * Fix multilingual setup Signed-off-by: MaximumEntropy * Add on epoch start reconfiguration Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * Update tokenizer creation for multilingual Signed-off-by: MaximumEntropy * Tmp Signed-off-by: MaximumEntropy * Update NMT script Signed-off-by: MaximumEntropy * Remove unused import Signed-off-by: MaximumEntropy * Update training script Signed-off-by: MaximumEntropy * Log consumed samples Signed-off-by: MaximumEntropy * Logging on val epoch end Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * Remove redundant print Signed-off-by: MaximumEntropy * Ckpt averaging for non model parallel megatron models Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * Empty Signed-off-by: MaximumEntropy * Update error message Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * Remove check Signed-off-by: MaximumEntropy * Restore fixes Signed-off-by: MaximumEntropy * Remove ipdb Signed-off-by: MaximumEntropy * Fixes Signed-off-by: MaximumEntropy * Move to classmethods Signed-off-by: MaximumEntropy * Initial Signed-off-by: MaximumEntropy * 1. Debugging. Signed-off-by: Micha Livne * Refactor masking to add skip_masking_id and working xlm bert and t5 datasets Signed-off-by: MaximumEntropy * 1. Debugging. Signed-off-by: Micha Livne * 1. Testing a simple solution Signed-off-by: Micha Livne * 1. Fixed. Seems to work. Need to validate. Signed-off-by: Micha Livne * 1. Added support in CSV and text memmap toMEgatron encoder-decoder Signed-off-by: Micha Livne * 1. Added support in CSV. Signed-off-by: Micha Livne * 1. Fixed style. Signed-off-by: Micha Livne * 1. Fixed style. 2. Fixed bugs. Signed-off-by: Micha Livne * 1. Debugging. Signed-off-by: Micha Livne * 1. Fixed bugs. Signed-off-by: Micha Livne * 1. Fixed style. Signed-off-by: Micha Livne * 1. Updated yaml. Signed-off-by: Micha Livne * Minor Signed-off-by: MaximumEntropy * 1. Fixed warnings. Signed-off-by: Micha Livne * 1. Fixed style. Signed-off-by: Micha Livne * 1. Fixed style. Signed-off-by: Micha Livne * 1. Fixed a bug. Signed-off-by: Micha Livne * Tmp Signed-off-by: MaximumEntropy * Updates Signed-off-by: MaximumEntropy * Fix minor data things Signed-off-by: MaximumEntropy * Fixes Signed-off-by: MaximumEntropy * Lang ids for validation datasets Signed-off-by: MaximumEntropy * More fixes for lang id code at inference Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * Remove pdb Signed-off-by: MaximumEntropy * Fix prepend ID and bleu logging Signed-off-by: MaximumEntropy * Refactor Signed-off-by: MaximumEntropy * Fixes for many-many NMT Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * Reset o2 default Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Restore dataset utils Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * Allreduce bleu scores Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * 1. Loading index file into memmap object. Signed-off-by: Micha Livne * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * 1. Fixed style. Signed-off-by: Micha Livne * 1. Fixed extentin when loading files. Signed-off-by: Micha Livne * Fix Signed-off-by: MaximumEntropy * Fix redundant building Signed-off-by: MaximumEntropy * PP > 2 for NMT Signed-off-by: MaximumEntropy * Fixes Signed-off-by: MaximumEntropy * Fixes Signed-off-by: MaximumEntropy * Style Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Merge and fix Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix Signed-off-by: MaximumEntropy * Refactor multilingual again Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixes Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Refactor and verify data formats Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * cleanup Signed-off-by: MaximumEntropy * more fixes Signed-off-by: MaximumEntropy * Fix passing langs Signed-off-by: MaximumEntropy * Fix Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixes Signed-off-by: MaximumEntropy * Fixes Signed-off-by: MaximumEntropy * More fixes Signed-off-by: MaximumEntropy * Fixes for bart Signed-off-by: MaximumEntropy * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: MaximumEntropy Signed-off-by: Micha Livne Signed-off-by: Micha Livne Co-authored-by: Micha Livne Co-authored-by: Micha Livne Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Micha Livne Signed-off-by: Jason --- .../conf/aayn_base_megatron.yaml | 9 + .../nmt_transformer_infer_megatron.py | 10 +- .../tokenizers/huggingface/auto_tokenizer.py | 1 + .../common/sequence_to_sequence_dataset.py | 95 ++- .../megatron/bart_dataset.py | 66 ++ .../megatron/bert_dataset.py | 7 +- .../megatron/dataset_utils.py | 95 ++- .../megatron/lm_adapted_t5_dataset.py | 17 +- .../language_modeling/megatron/t5_dataset.py | 163 +++-- .../language_modeling/megatron/ul2_dataset.py | 256 ++++++-- .../language_modeling/megatron/xlm_dataset.py | 593 ++++++++++++++++++ .../machine_translation_dataset.py | 3 + .../megatron_lm_encoder_decoder_model.py | 2 +- .../language_modeling/megatron_t5_model.py | 24 +- .../machine_translation/megatron_nmt_model.py | 388 ++++++++---- .../machine_translation/mt_enc_dec_model.py | 58 +- .../megatron_checkpoint_averaging.py | 7 + 17 files changed, 1514 insertions(+), 280 deletions(-) create mode 100644 nemo/collections/nlp/data/language_modeling/megatron/xlm_dataset.py diff --git a/examples/nlp/machine_translation/conf/aayn_base_megatron.yaml b/examples/nlp/machine_translation/conf/aayn_base_megatron.yaml index 4ffba70e53c6..f0f3c20f5ea4 100644 --- a/examples/nlp/machine_translation/conf/aayn_base_megatron.yaml +++ b/examples/nlp/machine_translation/conf/aayn_base_megatron.yaml @@ -98,6 +98,13 @@ model: tgt_file_name: null dataset_type: 'text_memmap' # Options ['bin_memmap', 'text_memmap'] sampler: 'megatron' # Options ['megatron']. Note megatron samplers do not shuffle across epochs. + objective: 'nmt' # Options ['nmt', 'nmt-xlm'] + # NOTE: These ratios are used only when the objective is `nmt-xlm` + sampling_ratios: + x-masking: 0.17 # Extreme span masking task selection probability (either large spans or large masking prob) + r-masking: 0.17 # T5-style random span masking task selection probability + s-masking: 0.16 # Prefix-LM task selection probability + nmt: 0.5 # NMT selection probability micro_batch_size: ${model.micro_batch_size} global_batch_size: ${model.global_batch_size} # config for preprocessing training data and creating a tarred datset automatically @@ -157,6 +164,7 @@ model: training_sample_size: null # valid for sentencepiece tokenizer r2l: false sentencepiece_legacy: True # Legacy=True allows you to add special tokens to sentencepiece tokenizers. + num_sentinel_tokens: 0 decoder_tokenizer: library: yttm @@ -168,3 +176,4 @@ model: training_sample_size: null # valid for sentencepiece tokenizer r2l: false sentencepiece_legacy: True + num_sentinel_tokens: 0 diff --git a/examples/nlp/machine_translation/nmt_transformer_infer_megatron.py b/examples/nlp/machine_translation/nmt_transformer_infer_megatron.py index 7bee2f562dc3..c8ab668fc16c 100644 --- a/examples/nlp/machine_translation/nmt_transformer_infer_megatron.py +++ b/examples/nlp/machine_translation/nmt_transformer_infer_megatron.py @@ -24,6 +24,7 @@ import os +from omegaconf.omegaconf import OmegaConf, open_dict from pytorch_lightning.trainer.trainer import Trainer from nemo.collections.nlp.models.machine_translation.megatron_nmt_model import MegatronNMTModel @@ -74,8 +75,15 @@ def main(cfg) -> None: if cfg.model_file is not None: if not os.path.exists(cfg.model_file): raise ValueError(f"Model file {cfg.model_file} does not exist") + pretrained_cfg = MegatronNMTModel.restore_from(cfg.model_file, trainer=trainer, return_config=True) + OmegaConf.set_struct(pretrained_cfg, True) + with open_dict(pretrained_cfg): + pretrained_cfg.precision = trainer.precision model = MegatronNMTModel.restore_from( - restore_path=cfg.model_file, trainer=trainer, save_restore_connector=NLPSaveRestoreConnector(), + restore_path=cfg.model_file, + trainer=trainer, + save_restore_connector=NLPSaveRestoreConnector(), + override_config_path=pretrained_cfg, ) elif cfg.checkpoint_dir is not None: checkpoint_path = inject_model_parallel_rank(os.path.join(cfg.checkpoint_dir, cfg.checkpoint_name)) diff --git a/nemo/collections/common/tokenizers/huggingface/auto_tokenizer.py b/nemo/collections/common/tokenizers/huggingface/auto_tokenizer.py index 57e98ab198a7..8771862c0f70 100644 --- a/nemo/collections/common/tokenizers/huggingface/auto_tokenizer.py +++ b/nemo/collections/common/tokenizers/huggingface/auto_tokenizer.py @@ -82,6 +82,7 @@ def __init__( f'Unable to instantiate HuggingFace AUTOTOKENIZER for {pretrained_model_name}. Exception: {e}' ) + self.original_vocab_size = len(self.tokenizer) special_tokens_dict = {} # # setting special tokens, by default the default model's special tokens will be preserved diff --git a/nemo/collections/nlp/data/common/sequence_to_sequence_dataset.py b/nemo/collections/nlp/data/common/sequence_to_sequence_dataset.py index d3106e7c9410..d4ca85289a6f 100644 --- a/nemo/collections/nlp/data/common/sequence_to_sequence_dataset.py +++ b/nemo/collections/nlp/data/common/sequence_to_sequence_dataset.py @@ -102,39 +102,39 @@ def _get_examples(self): logging.info(f'Dataset Length : {len(self.examples)}') def collate_fn(self, batch): - enc_query = [item['text_enc'] for item in batch] - dec_input = [item['text_dec'] for item in batch] + text_enc = [item['text_enc'] for item in batch] + text_dec = [item['text_dec'] for item in batch] labels = [item['labels'] for item in batch] - if isinstance(enc_query[0], np.ndarray): - enc_query = [x.tolist() for x in enc_query] + if isinstance(text_enc[0], np.ndarray): + text_enc = [x.tolist() for x in text_enc] - if isinstance(dec_input[0], np.ndarray): - dec_input = [x.tolist() for x in dec_input] + if isinstance(text_dec[0], np.ndarray): + text_dec = [x.tolist() for x in text_dec] if isinstance(labels[0], np.ndarray): labels = [x.tolist() for x in labels] - max_dec_input_length = max([len(item) for item in dec_input]) if dec_input else 0 - max_enc_query_length = max([len(item) for item in enc_query]) if enc_query else 0 + max_dec_input_length = max([len(item) for item in text_dec]) if text_dec else 0 + max_enc_input_length = max([len(item) for item in text_enc]) if text_enc else 0 max_label_length = max([len(item) for item in labels]) if labels else 0 loss_mask = [([1] * (len(item))) + ([0] * (max_label_length - len(item))) for item in labels] - enc_query = [item + [self.src_tokenizer.pad_id] * (max_enc_query_length - len(item)) for item in enc_query] - dec_input = [item + [self.tgt_tokenizer.pad_id] * (max_dec_input_length - len(item)) for item in dec_input] + text_enc = [item + [self.src_tokenizer.pad_id] * (max_enc_input_length - len(item)) for item in text_enc] + text_dec = [item + [self.tgt_tokenizer.pad_id] * (max_dec_input_length - len(item)) for item in text_dec] labels = [item + [self.tgt_tokenizer.pad_id] * (max_label_length - len(item)) for item in labels] - enc_query = torch.LongTensor(enc_query) - dec_input = torch.LongTensor(dec_input) + text_enc = torch.LongTensor(text_enc) + text_dec = torch.LongTensor(text_dec) labels = torch.LongTensor(labels) loss_mask = torch.LongTensor(loss_mask) - enc_mask = (enc_query != self.src_tokenizer.pad_id).long() - dec_mask = (dec_input != self.tgt_tokenizer.pad_id).long() + enc_mask = (text_enc != self.src_tokenizer.pad_id).long() + dec_mask = (text_dec != self.tgt_tokenizer.pad_id).long() return { - 'text_enc': enc_query, - 'text_dec': dec_input, + 'text_enc': text_enc, + 'text_dec': text_dec, 'labels': labels, 'loss_mask': loss_mask, 'enc_mask': enc_mask, @@ -156,7 +156,10 @@ def __init__( max_src_seq_length: int, max_tgt_seq_length: int, seed: int = 1234, - max_num_samples=None, + add_bos_to_enc: bool = True, + add_eos_to_enc: bool = True, + max_num_samples: int = None, + prepend_id: int = None, ): """ src_file_name: Path to a single source file on disk. This is either the path to a raw text file or the prefix to the processed src_file_name.bin/idx files. @@ -167,6 +170,7 @@ def __init__( max_tgt_seq_length: Maximum length of the target sequences. Lines above this length will be truncated. seed: Random seed for data shuffling. max_num_samples: Maximum number of samples to load. This can be > dataset length if you want to oversample data. If None, all samples will be loaded. + prepend_id: If not None, prepend this id to the encoder input. """ super().__init__( src_file_name=src_file_name, @@ -178,6 +182,10 @@ def __init__( ) self.seed = seed self.max_num_samples = max_num_samples + self.add_bos_to_enc = add_bos_to_enc + self.add_eos_to_enc = add_eos_to_enc + self.prepend_id = prepend_id + logging.info(f'Desired number of samples : {self.max_num_samples}') logging.info(f'Source Dataset Length : {len(self.src_indexed_dataset)}') logging.info(f'Target Dataset Length : {len(self.tgt_indexed_dataset)}') @@ -186,9 +194,9 @@ def __len__(self): if self.max_num_samples is None: return len(self.src_indexed_dataset) else: - return len(self.samples_mapping) + return self.max_num_samples - def __getitem__(self, idx): + def _get_sample(self, idx): if isinstance(idx, np.int64): idx = idx.item() @@ -200,18 +208,39 @@ def __getitem__(self, idx): assert idx < len(self.src_indexed_dataset) src = self.src_indexed_dataset[idx] - if len(src) > self.max_src_seq_length - 2: - src = src[: self.max_src_seq_length - 2] - text_enc = np.concatenate([[self.src_tokenizer.bos_id], src, [self.src_tokenizer.eos_id]]) - tgt = self.tgt_indexed_dataset[idx] + + return src, tgt + + def __getitem__(self, idx): + src, tgt = self._get_sample(idx) + offset = 0 + if self.add_bos_to_enc: + offset += 1 + if self.add_eos_to_enc: + offset += 1 + if self.prepend_id is not None: + offset += 1 + + if len(src) > self.max_src_seq_length - offset: + src = src[: self.max_src_seq_length - offset] + + if self.add_bos_to_enc: + src = np.concatenate([[self.src_tokenizer.bos_id], src]) + + if self.prepend_id is not None: + src = np.concatenate([[self.prepend_id], src]) + + if self.add_eos_to_enc: + src = np.concatenate([src, [self.src_tokenizer.eos_id]]) + if len(tgt) > self.max_tgt_seq_length - 2: tgt = tgt[: self.max_tgt_seq_length - 2] text_dec = np.concatenate([[self.tgt_tokenizer.bos_id], tgt]) labels = np.concatenate([tgt, [self.tgt_tokenizer.eos_id]]) - return {'text_enc': text_enc, 'text_dec': text_dec, 'labels': labels} + return {'text_enc': src, 'text_dec': text_dec, 'labels': labels} def _build_samples_mapping(self): if self.max_num_samples is not None: @@ -249,6 +278,9 @@ def __init__( max_tgt_seq_length: int, seed: int = 1234, max_num_samples: int = None, + add_bos_to_enc: bool = True, + add_eos_to_enc: bool = True, + prepend_id: int = None, ): """ src_file_name: Path to a single source file on disk. The file should contain one sentence per line and be raw text. @@ -259,6 +291,9 @@ def __init__( max_tgt_seq_length: Maximum length of the target sequences. Lines above this length will be truncated. seed: Random seed for data shuffling. max_num_samples: Maximum number of samples to load. This can be > dataset length if you want to oversample data. If None, all samples will be loaded. + add_bos_to_enc: Add BOS token to the encoder input. + add_eos_to_enc: Add EOS token to the encoder input. + prepend_id: If not None, prepend this id to the encoder input. """ self.seed = seed self.max_num_samples = max_num_samples @@ -271,6 +306,9 @@ def __init__( max_tgt_seq_length=max_tgt_seq_length, seed=seed, max_num_samples=max_num_samples, + add_bos_to_enc=add_bos_to_enc, + add_eos_to_enc=add_eos_to_enc, + prepend_id=prepend_id, ) def _get_examples(self): @@ -300,6 +338,9 @@ def __init__( max_tgt_seq_length: int, seed: int = 1234, max_num_samples: int = None, + add_bos_to_enc: bool = True, + add_eos_to_enc: bool = True, + prepend_id: int = None, ): """ src_dataset_prefix: Path to the *prefix* of a single source bin/idx file on disk. This necessitates the existance src_file_prefix.bin and src_file_prefix.idx. @@ -310,6 +351,9 @@ def __init__( max_tgt_seq_length: Maximum length of the target sequences. Lines above this length will be truncated. seed: Random seed for data shuffling. max_num_samples: Maximum number of samples to load. This can be > dataset length if you want to oversample data. If None, all samples will be loaded. + add_bos_to_enc: Add BOS token to the encoder input. + add_eos_to_enc: Add EOS token to the encoder input. + prepend_id: If not None, prepend this id to the encoder input. """ self.src_dataset_prefix = src_dataset_prefix self.tgt_dataset_prefix = tgt_dataset_prefix @@ -324,6 +368,9 @@ def __init__( max_tgt_seq_length=max_tgt_seq_length, seed=seed, max_num_samples=max_num_samples, + add_bos_to_enc=add_bos_to_enc, + add_eos_to_enc=add_eos_to_enc, + prepend_id=prepend_id, ) def _check_files_exist(self): diff --git a/nemo/collections/nlp/data/language_modeling/megatron/bart_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/bart_dataset.py index 7876ba59adce..b6a046ba8514 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/bart_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/bart_dataset.py @@ -16,6 +16,10 @@ import numpy as np +from nemo.collections.nlp.data.language_modeling.megatron.dataset_utils import ( + create_masked_lm_predictions, + get_samples_mapping, +) from nemo.collections.nlp.data.language_modeling.megatron.t5_dataset import T5Dataset @@ -80,6 +84,68 @@ def _build(self): """ pass + def __getitem__(self, idx): + np_rng = np.random.RandomState(seed=(self.seed + idx)) + + sample, seq_length = self._get_sample(idx) + + # flatten sentences into one list + tokens = [token for sentence in sample for token in sentence] + + # Truncate to `target_sequence_length`. + max_num_tokens = seq_length + tokens = tokens[:max_num_tokens] + + # Masking. + max_predictions_per_seq = self.masked_lm_prob * max_num_tokens + + lm_pred = create_masked_lm_predictions( + tokens=tokens, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + masked_lm_prob=self.masked_lm_prob, + cls_id=self.cls_id, + sep_id=self.sep_id, + mask_id=self.mask_id, + max_predictions_per_seq=max_predictions_per_seq, + np_rng=np_rng, + max_ngram_size=self.max_ngram_size, + whole_word_masking=self.whole_word_masking, + favor_long_ngrams=self.favor_long_ngrams, + mean_ngram_size=self.mean_ngram_size, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + masking_style="t5", + tokenizer_type=self.tokenizer_type, + ) + + if self.masked_lm_prob == 0: + (output_tokens, masked_positions, masked_labels, _) = lm_pred + masked_spans = None + else: + (output_tokens, masked_positions, masked_labels, _, masked_spans) = lm_pred + + # Padding. + tokens_enc, tokens_dec_in, labels, enc_mask, dec_mask, loss_mask = self.pad_and_convert_to_numpy( + tokens=tokens, + output_tokens=output_tokens, + masked_positions=masked_positions, + masked_labels=masked_labels, + masked_spans=masked_spans, + np_rng=np_rng, + ) + + train_sample = { + 'text_enc': tokens_enc, + 'text_dec': tokens_dec_in, + 'labels': labels, + 'loss_mask': loss_mask, + 'enc_mask': enc_mask, + 'dec_mask': dec_mask, + } + + return train_sample + def pad_and_convert_to_numpy( self, tokens, output_tokens, masked_positions, masked_labels, masked_spans=None, np_rng=None, ): diff --git a/nemo/collections/nlp/data/language_modeling/megatron/bert_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/bert_dataset.py index a2a871b45a1a..e8aa23261ffd 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/bert_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/bert_dataset.py @@ -128,6 +128,8 @@ def build_training_sample( masked_lm_prob, np_rng, binary_head, + whole_word_masking=True, + skip_masking_id=None, ): """Biuld training sample. @@ -146,8 +148,9 @@ def build_training_sample( np_rng: Random number genenrator. Note that this rng state should be numpy and not python since python randint is inclusive for the opper bound whereas the numpy one is exclusive. + whole_word_masking: Whether to mask only whole words instead of independent subwords. + skip_mask_id: ID of a token that should not be masked. #TODO: make this a list of tokens. """ - if binary_head: # We assume that we have at least two sentences in the sample assert len(sample) > 1 @@ -182,6 +185,8 @@ def build_training_sample( mask_id, max_predictions_per_seq, np_rng, + whole_word_masking=whole_word_masking, + skip_masking_id=skip_masking_id, ) # Padding. diff --git a/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py b/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py index 75cea0bca417..824c94b02aaf 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py @@ -195,10 +195,10 @@ def create_masked_lm_predictions( geometric_dist=False, masking_style="bert", tokenizer_type="wordpiece", + skip_masking_id=None, ): """Creates the predictions for the masked LM objective. Note: Tokens here are vocab ids and not text tokens.""" - if not geometric_dist and mean_ngram_size is not None: raise ValueError(f"Mean ngram size is only supported for geometric distribution.") @@ -207,8 +207,10 @@ def create_masked_lm_predictions( # the starting piece of current token, where 1 means true, so that # on-the-fly whole word masking is possible. token_boundary = [0] * len(tokens) - + skip_mask_idx = None # Store the index of token that cannot be masked. for (i, token) in enumerate(tokens): + if token == skip_masking_id: + skip_mask_idx = i if token == cls_id or token == sep_id: token_boundary[i] = 1 continue @@ -234,6 +236,8 @@ def create_masked_lm_predictions( return (output_tokens, masked_lm_positions, masked_lm_labels, token_boundary) num_to_predict = min(max_predictions_per_seq, max(1, int(round(len(tokens) * masked_lm_prob)))) + if masking_style != "bert": + num_to_predict = max(1, num_to_predict) if num_to_predict < 1: logging.warning( F'Number of tokens is : {len(tokens)} and mask_probability is {masked_lm_prob}. None of the tokens will be masked' @@ -250,9 +254,13 @@ def create_masked_lm_predictions( ngram_indexes = [] for idx in range(len(cand_indexes)): - ngram_index = [] + ngram_index = {} for n in ngrams: - ngram_index.append(cand_indexes[idx : idx + n]) + # Skip this ngram if it contains the index of token that should not be masked. + # TODO: (sandeepsub) Generalize this to be a list of tokens that cannot be masked. + if skip_mask_idx is not None and skip_mask_idx >= idx and skip_mask_idx <= idx + n: + continue + ngram_index[n] = cand_indexes[idx : idx + n] ngram_indexes.append(ngram_index) np_rng.shuffle(ngram_indexes) @@ -266,16 +274,17 @@ def create_masked_lm_predictions( continue # Note(mingdachen): # Skip current piece if they are covered in lm masking or previous ngrams. - for index_set in cand_index_set[0]: + for index_set in cand_index_set[1]: for index in index_set: if index in covered_indexes: continue if not geometric_dist: - n = np_rng.choice( - ngrams[: len(cand_index_set)], - p=pvals[: len(cand_index_set)] / pvals[: len(cand_index_set)].sum(keepdims=True), - ) + # Not all ngrams are available because of skip_masking_id that prevents a certain ID from being masked. + available_ngrams = list(cand_index_set.keys()) + # n - 1 because pvals is 0-indexed and available ngrams are 1-indexed. + pvals_current = np.array([pvals[n - 1] for n in available_ngrams]) + n = np_rng.choice(available_ngrams, p=pvals_current / pvals_current.sum(keepdims=True),) else: # Sampling "n" from the geometric distribution and clipping it to # the max_ngrams. Using p=0.2 default from the SpanBERT paper @@ -284,8 +293,11 @@ def create_masked_lm_predictions( # The expectation of a geometric distribution is E[X] = 1 / p p = 1 / mean_ngram_size if mean_ngram_size is not None else 0.2 n = min(np_rng.geometric(p), max_ngram_size) - - index_set = sum(cand_index_set[n - 1], []) + # n may not be in the candidate index set because of skip_masking_id. + # we try to find the nearest one in the candidate index set. + if n not in cand_index_set: + n = _truncate_to_nearest(cand_index_set, n) + index_set = sum(cand_index_set[n], []) n -= 1 # Note(mingdachen): # Repeatedly looking for a candidate that does not exceed the @@ -293,7 +305,8 @@ def create_masked_lm_predictions( while len(masked_lms) + len(index_set) > num_to_predict: if n == 0: break - index_set = sum(cand_index_set[n - 1], []) + if n - 1 in cand_index_set: + index_set = sum(cand_index_set[n - 1], []) n -= 1 # If adding a whole-word mask would exceed the maximum number of # predictions, then just skip this candidate. @@ -337,6 +350,8 @@ def create_masked_lm_predictions( select_indexes = set() if permutation: + if skip_masking_id is not None: + raise ValueError(f"permutation=True is not supported when skip_masking_id is not None.") for cand_index_set in ngram_indexes: if len(select_indexes) >= num_to_predict: break @@ -395,6 +410,16 @@ def create_masked_lm_predictions( return (output_tokens, masked_lm_positions, masked_lm_labels, token_boundary, masked_spans) +def _truncate_to_nearest(cand_index_set, n): + min_dist = 9999 + for key in cand_index_set: + if abs(key - n) < min_dist: + n = key + min_dist = abs(key - n) + + return n + + def create_extreme_masked_lm_predictions( tokens, masked_lm_prob, @@ -405,6 +430,7 @@ def create_extreme_masked_lm_predictions( min_ngram_size=2, mean_ngram_size=5, span_length_distribution=LengthDistribution.uniform, + skip_masking_id=None, ): """Creates the predictions for the extreme span-masking UL2 objective. Note: Tokens here are vocab ids and not text tokens.""" @@ -413,7 +439,7 @@ def create_extreme_masked_lm_predictions( masked_lm_positions = [] masked_lm_labels = [] - num_to_predict = min(max_predictions_per_seq, max(1, int(round(len(tokens) * masked_lm_prob)))) + num_to_predict = int(min(max_predictions_per_seq, max(1, int(round(len(tokens) * masked_lm_prob))))) # If the number of tokens to predict is less than the min ngram size, clam it to max predictions. min_ngram_size = int(min(num_to_predict, min_ngram_size)) @@ -422,11 +448,24 @@ def create_extreme_masked_lm_predictions( pvals = np.array([1.0 / (max_ngram_size - min_ngram_size + 1)] * (max_ngram_size - min_ngram_size + 1)) ngram_indexes = [] + if skip_masking_id is not None: + skip_mask_idx = None + for idx in range(len(tokens)): + if tokens[idx] == skip_masking_id: + skip_mask_idx = idx + break + else: + skip_mask_idx = None + cand_indexes = [[i] for i in range(len(tokens))] for idx in range(len(cand_indexes)): - ngram_index = [] + ngram_index = {} for n in ngrams: - ngram_index.append(cand_indexes[idx : idx + n]) + # Skip this ngram if it contains the index of token that should not be masked. + # TODO: (sandeepsub) Generalize this to be a list of tokens that cannot be masked. + if skip_mask_idx is not None and skip_mask_idx >= idx and skip_mask_idx <= idx + n: + continue + ngram_index[n] = cand_indexes[idx : idx + n] ngram_indexes.append(ngram_index) np_rng.shuffle(ngram_indexes) @@ -440,16 +479,15 @@ def create_extreme_masked_lm_predictions( continue # Note(mingdachen): # Skip current piece if they are covered in lm masking or previous ngrams. - for index_set in cand_index_set[0]: + for index_set in cand_index_set[min_ngram_size]: for index in index_set: if index in covered_indexes: continue if span_length_distribution == LengthDistribution.uniform: - n = np_rng.choice( - ngrams[: len(cand_index_set)], - p=pvals[: len(cand_index_set)] / pvals[: len(cand_index_set)].sum(keepdims=True), - ) + available_ngrams = list(cand_index_set.keys()) + pvals_current = np.array([pvals[n] for n in available_ngrams]) + n = np_rng.choice(available_ngrams, p=pvals_current / pvals_current.sum(keepdims=True),) elif span_length_distribution == LengthDistribution.geometric: # Sampling "n" from the geometric distribution and clipping it to # the max_ngrams. Using p=0.2 default from the SpanBERT paper @@ -457,14 +495,21 @@ def create_extreme_masked_lm_predictions( # The expectation of a geometric distribution is E[X] = 1 / p p = 1 / mean_ngram_size if mean_ngram_size is not None else 0.2 - n = np_rng.geometric(p) + n = min(np_rng.geometric(p), max_ngram_size) + # n may not be in the candidate index set because of skip_masking_id. + # we try to find the nearest one in the candidate index set. + if n not in cand_index_set: + n = _truncate_to_nearest(cand_index_set, n) n = int(np.clip(n, min_ngram_size, max_ngram_size)) elif span_length_distribution == LengthDistribution.truncated_normal: # Sampling "n" from a truncated normal distribution. mu = mean_ngram_size if mean_ngram_size is not None else (max_ngram_size - min_ngram_size) // 2 n = int(np.clip(np_rng.normal(loc=mu, scale=np.sqrt(mu)), min_ngram_size, max_ngram_size)) + if n not in cand_index_set: + n = _truncate_to_nearest(cand_index_set, n) + n = int(np.clip(n, min_ngram_size, max_ngram_size)) - index_set = sum(cand_index_set[n - min_ngram_size], []) + index_set = sum(cand_index_set[n], []) n -= 1 # Note(mingdachen): # Repeatedly looking for a candidate that does not exceed the @@ -472,7 +517,8 @@ def create_extreme_masked_lm_predictions( while len(masked_lms) + len(index_set) > num_to_predict: if n < min_ngram_size: break - index_set = sum(cand_index_set[n - min_ngram_size], []) + if n in cand_index_set: + index_set = sum(cand_index_set[n], []) n -= 1 # If adding a whole-word mask would exceed the maximum number of @@ -1226,7 +1272,6 @@ def get_samples_mapping( raise ImportError( f'Could not compile megatron dataset C++ helper functions and therefore cannot import helpers python file.' ) - samples_mapping = helpers.build_mapping( indexed_dataset.doc_idx, indexed_dataset.sizes, @@ -1245,7 +1290,6 @@ def get_samples_mapping( logging.info( ' > elasped time to build and save samples mapping ' '(seconds): {:4f}'.format(time.time() - start_time) ) - torch.distributed.barrier() counts = torch.cuda.LongTensor([1]) torch.distributed.all_reduce(counts, group=parallel_state.get_data_parallel_group()) @@ -1254,7 +1298,6 @@ def get_samples_mapping( torch.distributed.get_world_size() // torch.distributed.get_world_size(group=parallel_state.get_tensor_model_parallel_group()) ) - # Load indexed dataset. logging.info(' > loading indexed mapping from {}'.format(indexmap_filename)) start_time = time.time() diff --git a/nemo/collections/nlp/data/language_modeling/megatron/lm_adapted_t5_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/lm_adapted_t5_dataset.py index 773295987b1f..762a57f9c59c 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/lm_adapted_t5_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/lm_adapted_t5_dataset.py @@ -67,6 +67,7 @@ def get_prefix_lm_sample( tokenizer, pivot_mean=0.25, pivot_distribution=LengthDistribution.uniform, + add_eos=False, ): # get random split index if pivot_distribution == LengthDistribution.truncated_normal and (pivot_mean < 0.0 or pivot_mean > 1.0): @@ -74,8 +75,9 @@ def get_prefix_lm_sample( f"Invalid pivot_mean: {pivot_mean}. Must be in [0.0, 1.0]. It is a fraction of the encoder sequence length." ) - # If the sample is larger than max encoder sequence length, use max encoder sequence length, otherwwise use sample length. - max_split_idx = min(len(sample), max_seq_length_encoder) + # 1) If the sample is larger than max encoder sequence length, use max encoder sequence length + # 2) Otherwwise use sample length - 1 so that there is at least one token on the decoder. + max_split_idx = min(len(sample) - 1, max_seq_length_encoder) if pivot_distribution == LengthDistribution.uniform: split_idx = np_rng.randint(0, max_split_idx) @@ -91,11 +93,18 @@ def get_prefix_lm_sample( ).astype(np.int64) # The decoder sequence is never truncated and is always of max decoder length. - tokens_dec = sample[split_idx : split_idx + max_seq_length_decoder + 1] + offset = 1 if add_eos else 0 + tokens_dec = sample[split_idx : split_idx + max_seq_length_decoder - offset] # NOTE: Add bos only and not eos because the model will always generate till max seq length. + example = np.concatenate([[tokenizer.bos_id], tokens_dec]) + if add_eos: + example = np.concatenate([example, [tokenizer.eos_id]]) + + # Example can be + 1 over sequence length at this point since we'll be shifting by 1 to create the inputs and outputs to the decoder. + assert len(example) <= max_seq_length_decoder + 1 tokens_dec = np.concatenate( - [[tokenizer.bos_id], tokens_dec, [tokenizer.pad_id] * (max_seq_length_decoder - len(tokens_dec) + 1)] + [example, [tokenizer.pad_id] * (max_seq_length_decoder - len(example) + 1)] ).astype(np.int64) # Shift sequences for teacher forcing diff --git a/nemo/collections/nlp/data/language_modeling/megatron/t5_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/t5_dataset.py index 25608f1bba68..44c8fa3562b8 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/t5_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/t5_dataset.py @@ -118,19 +118,7 @@ def __init__( ) self.tokenizer = tokenizer - self.tokenizer_type = 'wordpiece' # TODO: better checks for tokenizer types. How do we do this for HF tokenizers that are not BERT? - if isinstance(self.tokenizer, YouTokenToMeTokenizer): - raise ValueError(f"YTTM does not support special tokens and cannot be used with T5 datasets.") - - if isinstance(self.tokenizer, SentencePieceTokenizer): - if not self.tokenizer.legacy: - raise ValueError("Sentencepiece Tokenizer must have legacy = False to add special tokens.") - self.tokenizer_type = 'sentencepiece' - if whole_word_masking: - raise ValueError( - "Whole word masking is not supported with sentencepiece tokenizers and only with wordpiece tokenizers. Please set it to False." - ) - + self.tokenizer_type = T5Dataset._determine_tokenizer_type(tokenizer, whole_word_masking=whole_word_masking) self.cls_id = tokenizer.cls_id self.sep_id = tokenizer.sep_id self.mask_id = tokenizer.mask_id @@ -195,11 +183,75 @@ def __getitem__(self, idx): # Note that this rng state should be numpy and not python since # python randint is inclusive whereas the numpy one is exclusive. np_rng = np.random.RandomState(seed=(self.seed + idx)) - training_sample = self.build_training_sample(sample=sample, target_seq_length=seq_length, np_rng=np_rng,) + training_sample = T5Dataset.build_training_sample( + sample=sample, + target_seq_length=seq_length, + np_rng=np_rng, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + masked_lm_prob=self.masked_lm_prob, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + cls_id=self.cls_id, + sep_id=self.sep_id, + mask_id=self.mask_id, + max_ngram_size=self.max_ngram_size, + mean_ngram_size=self.mean_ngram_size, + whole_word_masking=self.whole_word_masking, + favor_long_ngrams=self.favor_long_ngrams, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + tokenizer_type=self.tokenizer_type, + sentinel_tokens=self.sentinel_tokens, + bos_id=self.bos_id, + eos_id=self.eos_id, + pad_id=self.pad_id, + ) return training_sample + @classmethod + def _determine_tokenizer_type(cls, tokenizer, whole_word_masking=False): + tokenizer_type = 'wordpiece' # TODO: better checks for tokenizer types. How do we do this for HF tokenizers that are not BERT? + if isinstance(tokenizer, YouTokenToMeTokenizer): + raise ValueError(f"YTTM does not support special tokens and cannot be used with T5 datasets.") + + if isinstance(tokenizer, SentencePieceTokenizer): + if not tokenizer.legacy: + raise ValueError("Sentencepiece Tokenizer must have legacy = False to add special tokens.") + tokenizer_type = 'sentencepiece' + if whole_word_masking: + raise ValueError( + "Whole word masking is not supported with sentencepiece tokenizers and only with wordpiece tokenizers. Please set it to False." + ) + + return tokenizer_type + + @classmethod def build_training_sample( - self, sample, target_seq_length, np_rng, + cls, + sample, + target_seq_length, + np_rng, + max_seq_length, + max_seq_length_dec, + masked_lm_prob, + vocab_id_list, + vocab_id_to_token_dict, + cls_id, + sep_id, + mask_id, + max_ngram_size, + whole_word_masking, + favor_long_ngrams, + permutation, + mean_ngram_size, + geometric_dist, + tokenizer_type, + sentinel_tokens, + bos_id, + eos_id, + pad_id, + skip_masking_id=None, ): """Build training sample. Arguments: @@ -227,8 +279,9 @@ def build_training_sample( permutation: Permutes the ngrams. whole_word_masking: Always masks entire words instead of individual sub-word tokens. favor_long_ngrams: Favor longer ngrams over shorter ones. + skip_masking_id: An id that will not be masked. TODO: Add supported for a list of IDs. """ - # assert target_seq_length <= self.max_seq_length + assert target_seq_length <= max_seq_length # flatten sentences into one list tokens = [token for sentence in sample for token in sentence] @@ -238,41 +291,46 @@ def build_training_sample( tokens = tokens[:max_num_tokens] # Masking. - max_predictions_per_seq = self.masked_lm_prob * max_num_tokens + max_predictions_per_seq = masked_lm_prob * max_num_tokens lm_pred = create_masked_lm_predictions( tokens=tokens, - vocab_id_list=self.vocab_id_list, - vocab_id_to_token_dict=self.vocab_id_to_token_dict, - masked_lm_prob=self.masked_lm_prob, - cls_id=self.cls_id, - sep_id=self.sep_id, - mask_id=self.mask_id, + vocab_id_list=vocab_id_list, + vocab_id_to_token_dict=vocab_id_to_token_dict, + masked_lm_prob=masked_lm_prob, + cls_id=cls_id, + sep_id=sep_id, + mask_id=mask_id, max_predictions_per_seq=max_predictions_per_seq, np_rng=np_rng, - max_ngram_size=self.max_ngram_size, - whole_word_masking=self.whole_word_masking, - favor_long_ngrams=self.favor_long_ngrams, - mean_ngram_size=self.mean_ngram_size, - permutation=self.permutation, - geometric_dist=self.geometric_dist, + max_ngram_size=max_ngram_size, + whole_word_masking=whole_word_masking, + favor_long_ngrams=favor_long_ngrams, + mean_ngram_size=mean_ngram_size, + permutation=permutation, + geometric_dist=geometric_dist, masking_style="t5", - tokenizer_type=self.tokenizer_type, + tokenizer_type=tokenizer_type, + skip_masking_id=skip_masking_id, ) - if self.masked_lm_prob == 0: + if masked_lm_prob == 0: (output_tokens, masked_positions, masked_labels, _) = lm_pred masked_spans = None else: (output_tokens, masked_positions, masked_labels, _, masked_spans) = lm_pred # Padding. - tokens_enc, tokens_dec_in, labels, enc_mask, dec_mask, loss_mask = self.pad_and_convert_to_numpy( - tokens=tokens, + tokens_enc, tokens_dec_in, labels, enc_mask, dec_mask, loss_mask = T5Dataset.pad_and_convert_to_numpy( output_tokens=output_tokens, masked_positions=masked_positions, masked_labels=masked_labels, masked_spans=masked_spans, - np_rng=np_rng, + sentinel_tokens=sentinel_tokens, + bos_id=bos_id, + eos_id=eos_id, + pad_id=pad_id, + max_seq_length=max_seq_length, + max_seq_length_dec=max_seq_length_dec, ) train_sample = { @@ -285,13 +343,24 @@ def build_training_sample( } return train_sample + @classmethod def pad_and_convert_to_numpy( - self, tokens, output_tokens, masked_positions, masked_labels, masked_spans=None, np_rng=None, + cls, + output_tokens, + masked_positions, + masked_labels, + sentinel_tokens, + bos_id, + eos_id, + pad_id, + max_seq_length, + max_seq_length_dec, + masked_spans=None, ): """Pad sequences and convert them to numpy.""" - sentinel_tokens = collections.deque(self.sentinel_tokens) + sentinel_tokens = collections.deque(sentinel_tokens) t5_input = [] - (t5_decoder_in, t5_decoder_out) = ([self.bos_id], []) + (t5_decoder_in, t5_decoder_out) = ([bos_id], []) (start_index, end_index) = (0, None) if masked_spans is not None: for span in masked_spans: @@ -311,7 +380,7 @@ def pad_and_convert_to_numpy( start_index = span.index[-1] + 1 # Add token to the t5_decoder_out - t5_decoder_out.append(self.eos_id) + t5_decoder_out.append(eos_id) # Add the remaining tokens to the t5 input t5_input.extend(output_tokens[start_index:]) @@ -323,27 +392,27 @@ def pad_and_convert_to_numpy( # Encoder-side padding mask. num_tokens = len(t5_input) - padding_length = self.max_seq_length - num_tokens - assert padding_length >= 0 + padding_length = max_seq_length - num_tokens + assert padding_length >= 0, padding_length assert len(masked_positions) == len(masked_labels) # Tokens.. - filler = [self.pad_id] * padding_length + filler = [pad_id] * padding_length tokens_enc = np.array(t5_input + filler, dtype=np.int64) # Decoder-side padding mask. num_tokens_dec = len(t5_decoder_in) - padding_length_dec = self.max_seq_length_dec - num_tokens_dec - assert padding_length_dec >= 0 - filler_dec = [self.pad_id] * padding_length_dec + padding_length_dec = max_seq_length_dec - num_tokens_dec + assert padding_length_dec >= 0, (padding_length_dec, max_seq_length_dec, num_tokens_dec) + filler_dec = [pad_id] * padding_length_dec tokens_dec_in = np.array(t5_decoder_in + filler_dec, dtype=np.int64) # Create attention masks - enc_mask = (tokens_enc != self.pad_id).astype(np.int64) - dec_mask = (tokens_dec_in != self.pad_id).astype(np.int64) + enc_mask = (tokens_enc != pad_id).astype(np.int64) + dec_mask = (tokens_dec_in != pad_id).astype(np.int64) # Labels mask. - labels = t5_decoder_out + ([-1] * padding_length_dec) + labels = t5_decoder_out + ([pad_id] * padding_length_dec) labels = np.array(labels, dtype=np.int64) # Loss mask diff --git a/nemo/collections/nlp/data/language_modeling/megatron/ul2_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/ul2_dataset.py index 7048dd36cc4a..c2d19305cf03 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/ul2_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/ul2_dataset.py @@ -15,6 +15,7 @@ """UL2 Style dataset from https://arxiv.org/abs/2205.05131""" import numpy as np +from nemo.collections.common.tokenizers.tokenizer_spec import TokenizerSpec from nemo.collections.nlp.data.language_modeling.megatron.dataset_utils import create_extreme_masked_lm_predictions from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution from nemo.collections.nlp.data.language_modeling.megatron.lm_adapted_t5_dataset import T5LMAdaptedDataset @@ -93,6 +94,129 @@ def __init__( self.extreme_ngram_span_length_distribution = extreme_ngram_span_length_distribution self.prefix_lm_pivot_mean = prefix_lm_pivot_mean + @classmethod + def get_r_masking_training_sample( + cls, + sample, + tokenizer, + np_rng, + target_seq_length: int, + max_seq_length: int, + max_seq_length_dec: int, + masked_lm_prob: float, + vocab_id_list: list, + vocab_id_to_token_dict: dict, + max_ngram_size: int, + mean_ngram_size: int, + whole_word_masking: bool, + favor_long_ngrams: bool, + permutation: bool, + geometric_dist: bool, + tokenizer_type: str, + sentinel_tokens: list, + skip_masking_id: int, + ): + # Call T5's build training sample for regular short span masking. + sample = T5Dataset.build_training_sample( + sample=sample, + target_seq_length=target_seq_length, + np_rng=np_rng, + max_seq_length=max_seq_length, + max_seq_length_dec=max_seq_length_dec, + masked_lm_prob=masked_lm_prob, + vocab_id_list=vocab_id_list, + vocab_id_to_token_dict=vocab_id_to_token_dict, + cls_id=tokenizer.cls_id, + sep_id=tokenizer.sep_id, + mask_id=tokenizer.mask_id, + max_ngram_size=max_ngram_size, + mean_ngram_size=mean_ngram_size, + whole_word_masking=whole_word_masking, + favor_long_ngrams=favor_long_ngrams, + permutation=permutation, + geometric_dist=geometric_dist, + tokenizer_type=tokenizer_type, + sentinel_tokens=sentinel_tokens, + bos_id=tokenizer.bos_id, + eos_id=tokenizer.eos_id, + pad_id=tokenizer.pad_id, + skip_masking_id=skip_masking_id, + ) + sample = UL2Dataset._prepend_mask_type_token(tokenizer, sample, '') + return sample + + @classmethod + def get_s_masking_training_sample( + cls, + sample, + np_rng, + max_seq_length_encoder: int, + max_seq_length_decoder: int, + tokenizer: TokenizerSpec, + prefix_lm_pivot_mean: float, + pivot_distribution: LengthDistribution, + add_eos: bool = False, + ): + sample = [token for sentence in sample for token in sentence] + sample = T5LMAdaptedDataset.get_prefix_lm_sample( + sample=sample, + max_seq_length_encoder=max_seq_length_encoder, + max_seq_length_decoder=max_seq_length_decoder, # We don't use max_seq_length_decoder here since we typically want to use long decoder sequences for better LM performance and we can do +1 because we don't need to add the UL2 token here. + np_rng=np_rng, + tokenizer=tokenizer, + pivot_mean=prefix_lm_pivot_mean, + pivot_distribution=pivot_distribution, + add_eos=add_eos, + ) + sample = UL2Dataset._prepend_mask_type_token(tokenizer, sample, '') + return sample + + @classmethod + def get_x_masking_training_sample( + cls, + sample, + tokenizer, + np_rng, + target_seq_length: int, + max_seq_length: int, + max_seq_length_dec: int, + masked_lm_prob: float, + extreme_masked_lm_prob: float, + max_ngram_size: int, + min_ngram_size: int, + mean_ngram_size: int, + extreme_max_ngram_size: int, + extreme_min_ngram_size: int, + extreme_mean_ngram_size: int, + extreme_ngram_span_length_distribution: LengthDistribution, + sentinel_tokens: list, + skip_masking_id: int, + ): + sample = UL2Dataset.build_extreme_masking_training_sample( + sample=sample, + target_seq_length=target_seq_length, + np_rng=np_rng, + max_seq_length=max_seq_length, + max_seq_length_dec=max_seq_length_dec, + masked_lm_prob=masked_lm_prob, + extreme_masked_lm_prob=extreme_masked_lm_prob, + mask_id=tokenizer.mask_id, + max_ngram_size=max_ngram_size, + min_ngram_size=min_ngram_size, + extreme_max_ngram_size=extreme_max_ngram_size, + extreme_mean_ngram_size=extreme_mean_ngram_size, + extreme_min_ngram_size=extreme_min_ngram_size, + extreme_ngram_span_length_distribution=extreme_ngram_span_length_distribution, + mean_ngram_size=mean_ngram_size, + sentinel_tokens=sentinel_tokens, + bos_id=tokenizer.bos_id, + eos_id=tokenizer.eos_id, + pad_id=tokenizer.pad_id, + skip_masking_id=skip_masking_id, + ) + sample = UL2Dataset._prepend_mask_type_token(tokenizer, sample, '') + return sample + def __getitem__(self, idx): sample, seq_length = self._get_sample(idx) # Note that this rng state should be numpy and not python since @@ -101,39 +225,91 @@ def __getitem__(self, idx): masking_type = np_rng.randint(0, 3) # 0: short span masking, 1: extreme masking, 2: prefix-LM if masking_type == 0: # Call T5's build training sample for regular short span masking. - sample = super().build_training_sample(sample=sample, target_seq_length=seq_length, np_rng=np_rng) - sample = self._prepend_mask_type_token(sample, '') + return UL2Dataset.get_r_masking_training_sample( + sample=sample, + tokenizer=self.tokenizer, + np_rng=np_rng, + target_seq_length=seq_length, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + masked_lm_prob=self.masked_lm_prob, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + max_ngram_size=self.max_ngram_size, + mean_ngram_size=self.mean_ngram_size, + whole_word_masking=self.whole_word_masking, + favor_long_ngrams=self.favor_long_ngrams, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + tokenizer_type=self.tokenizer_type, + sentinel_tokens=self.sentinel_tokens, + skip_masking_id=None, + ) elif masking_type == 1: - sample = self.build_extreme_masking_training_sample( - sample=sample, target_seq_length=seq_length, np_rng=np_rng + return UL2Dataset.get_x_masking_training_sample( + sample=sample, + tokenizer=self.tokenizer, + np_rng=np_rng, + target_seq_length=seq_length, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + masked_lm_prob=self.masked_lm_prob, + extreme_masked_lm_prob=self.extreme_masked_lm_prob, + max_ngram_size=self.max_ngram_size, + min_ngram_size=self.min_ngram_size, + mean_ngram_size=self.mean_ngram_size, + extreme_max_ngram_size=self.extreme_max_ngram_size, + extreme_min_ngram_size=self.extreme_min_ngram_size, + extreme_mean_ngram_size=self.extreme_mean_ngram_size, + extreme_ngram_span_length_distribution=self.extreme_ngram_span_length_distribution, + sentinel_tokens=self.sentinel_tokens, + skip_masking_id=None, ) - sample = self._prepend_mask_type_token(sample, '') elif masking_type == 2: - sample = [token for sentence in sample for token in sentence] - sample = T5LMAdaptedDataset.get_prefix_lm_sample( + return UL2Dataset.get_s_masking_training_sample( sample=sample, - max_seq_length_encoder=self.max_seq_length, - max_seq_length_decoder=self.max_seq_length, # We don't use max_seq_length_decoder here since we typically want to use long decoder sequences for better LM performance. np_rng=np_rng, + max_seq_length_encoder=self.max_seq_length, + max_seq_length_decoder=self.max_seq_length_dec, tokenizer=self.tokenizer, - pivot_mean=self.prefix_lm_pivot_mean, + prefix_lm_pivot_mean=self.prefix_lm_pivot_mean, pivot_distribution=self.extreme_ngram_span_length_distribution, ) - sample = self._prepend_mask_type_token(sample, '') - - return sample - def _prepend_mask_type_token(self, sample, token): - token_id = self.tokenizer.text_to_ids(token) - assert len(token_id) == 1 + @classmethod + def _prepend_mask_type_token(cls, tokenizer, sample, token): + token_id = tokenizer.text_to_ids(token) + assert len(token_id) == 1, token token_id = token_id[0] text_enc = np.concatenate([[token_id], sample['text_enc']]) sample['text_enc'] = text_enc - sample['enc_mask'] = np.concatenate([[1], sample['enc_mask']]) + if 'enc_mask' in sample: + sample['enc_mask'] = np.concatenate([[1], sample['enc_mask']]) return sample + @classmethod def build_extreme_masking_training_sample( - self, sample, target_seq_length, np_rng, + cls, + sample, + target_seq_length, + np_rng, + max_seq_length, + max_seq_length_dec, + masked_lm_prob, + extreme_masked_lm_prob, + mask_id, + max_ngram_size, + min_ngram_size, + mean_ngram_size, + extreme_max_ngram_size, + extreme_mean_ngram_size, + extreme_min_ngram_size, + extreme_ngram_span_length_distribution, + sentinel_tokens, + bos_id, + eos_id, + pad_id, + skip_masking_id=None, ): """Build training sample. Arguments: @@ -161,8 +337,9 @@ def build_extreme_masking_training_sample( permutation: Permutes the ngrams. whole_word_masking: Always masks entire words instead of individual sub-word tokens. favor_long_ngrams: Favor longer ngrams over shorter ones. + skip_masking_id: id of the token to that will never be masked. """ - assert target_seq_length <= self.max_seq_length + assert target_seq_length <= max_seq_length # flatten sentences into one list tokens = [token for sentence in sample for token in sentence] @@ -179,26 +356,26 @@ def build_extreme_masking_training_sample( if task_type == 0: # Large spans, small masking prob max_ngram_size, mean_ngram_size, min_ngram_size, masked_lm_prob = ( - self.extreme_max_ngram_size, - self.extreme_mean_ngram_size, - self.extreme_min_ngram_size, - self.masked_lm_prob, + extreme_max_ngram_size, + extreme_mean_ngram_size, + extreme_min_ngram_size, + masked_lm_prob, ) elif task_type == 1: # Small spans, large masking prob max_ngram_size, mean_ngram_size, min_ngram_size, masked_lm_prob = ( - self.max_ngram_size, - self.mean_ngram_size, - self.min_ngram_size, - self.extreme_masked_lm_prob, + max_ngram_size, + mean_ngram_size, + min_ngram_size, + extreme_masked_lm_prob, ) else: # Large spans, large masking prob max_ngram_size, mean_ngram_size, min_ngram_size, masked_lm_prob = ( - self.extreme_max_ngram_size, - self.extreme_mean_ngram_size, - self.extreme_mean_ngram_size, - self.extreme_masked_lm_prob, + extreme_max_ngram_size, + extreme_mean_ngram_size, + extreme_mean_ngram_size, + extreme_masked_lm_prob, ) # Masking. @@ -207,29 +384,34 @@ def build_extreme_masking_training_sample( lm_pred = create_extreme_masked_lm_predictions( tokens=tokens, masked_lm_prob=masked_lm_prob, - mask_id=self.mask_id, + mask_id=mask_id, max_predictions_per_seq=max_predictions_per_seq, np_rng=np_rng, max_ngram_size=max_ngram_size, min_ngram_size=min_ngram_size, mean_ngram_size=mean_ngram_size, - span_length_distribution=self.extreme_ngram_span_length_distribution, + span_length_distribution=extreme_ngram_span_length_distribution, + skip_masking_id=skip_masking_id, ) - if self.masked_lm_prob == 0: + if masked_lm_prob == 0: (output_tokens, masked_positions, masked_labels) = lm_pred masked_spans = None else: (output_tokens, masked_positions, masked_labels, masked_spans) = lm_pred # Padding. - tokens_enc, tokens_dec_in, labels, enc_mask, dec_mask, loss_mask = self.pad_and_convert_to_numpy( - tokens=tokens, + tokens_enc, tokens_dec_in, labels, enc_mask, dec_mask, loss_mask = T5Dataset.pad_and_convert_to_numpy( output_tokens=output_tokens, masked_positions=masked_positions, masked_labels=masked_labels, masked_spans=masked_spans, - np_rng=np_rng, + sentinel_tokens=sentinel_tokens, + bos_id=bos_id, + eos_id=eos_id, + pad_id=pad_id, + max_seq_length=max_seq_length, + max_seq_length_dec=max_seq_length_dec, ) train_sample = { diff --git a/nemo/collections/nlp/data/language_modeling/megatron/xlm_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/xlm_dataset.py new file mode 100644 index 000000000000..0dd599b0878e --- /dev/null +++ b/nemo/collections/nlp/data/language_modeling/megatron/xlm_dataset.py @@ -0,0 +1,593 @@ +# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""XLM-Style datasets""" +from typing import Dict, List + +import numpy as np + +from nemo.collections.common.tokenizers.tokenizer_spec import TokenizerSpec +from nemo.collections.nlp.data.common.sequence_to_sequence_dataset import ( + BinarizedMemmapSequenceToSequenceDataset, + TextMemmapSequenceToSequenceDataset, +) +from nemo.collections.nlp.data.language_modeling.megatron.bert_dataset import ( + build_training_sample as build_training_sample_bert, +) +from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution +from nemo.collections.nlp.data.language_modeling.megatron.t5_dataset import T5Dataset +from nemo.collections.nlp.data.language_modeling.megatron.ul2_dataset import UL2Dataset + + +class CrossLingualBERTDataset(BinarizedMemmapSequenceToSequenceDataset): + """Cross-lingual BERT dataset similar to the translation-language modeling objective in the XLM paper (https://arxiv.org/abs/1901.07291)""" + + def __init__( + self, + src_dataset_prefix: str, + tgt_dataset_prefix: str, + src_tokenizer: TokenizerSpec, + tgt_tokenizer: TokenizerSpec, + max_src_seq_length: int, + max_tgt_seq_length: int, + seed: int = 1234, + max_num_samples: int = None, + masked_lm_prob: float = 0.15, + ): + super().__init__( + src_dataset_prefix=src_dataset_prefix, + tgt_dataset_prefix=tgt_dataset_prefix, + src_tokenizer=src_tokenizer, + tgt_tokenizer=tgt_tokenizer, + max_src_seq_length=max_src_seq_length, + max_tgt_seq_length=max_tgt_seq_length, + seed=seed, + max_num_samples=max_num_samples, + ) + assert src_tokenizer == tgt_tokenizer + # Vocab stuff. + self.vocab = src_tokenizer.vocab + self.vocab_id_list = list(range(self.src_tokenizer.original_vocab_size)) + self.vocab_id_to_token_dict = {idx: token for idx, token in enumerate(self.vocab)} + self.cls_id = src_tokenizer.cls_id + self.sep_id = src_tokenizer.sep_id + self.mask_id = src_tokenizer.mask_id + self.pad_id = src_tokenizer.pad_id + self.bos_id = src_tokenizer.bos_id + self.eos_id = src_tokenizer.eos_id + self.max_seq_length = max_src_seq_length + max_tgt_seq_length + self.masked_lm_prob = masked_lm_prob + + def __getitem__(self, idx): + src, tgt = super()._get_sample(idx) + if len(src) > self.max_src_seq_length: + src = src[: self.max_src_seq_length] + + if len(tgt) > self.max_tgt_seq_length - 1: # -1 here to account for the token that gets added. + tgt = tgt[: self.max_tgt_seq_length] + + np_rng = np.random.RandomState(seed=((self.seed + idx) % 2 ** 32)) + # Potentially swap src, tgt with a 50% chance to avoid learning associations based on position in the sequence. + swap_src_tgt = np_rng.randint(0, 2) + if swap_src_tgt == 0: + sample = [np.concatenate((src, [self.sep_id], tgt))] + elif swap_src_tgt == 1: + sample = [np.concatenate((tgt, [self.sep_id], src))] + + return build_training_sample_bert( + sample=sample, + target_seq_length=sample[0].shape[0], + max_seq_length=self.max_seq_length, # needed for padding + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + cls_id=self.cls_id, + sep_id=self.sep_id, + mask_id=self.mask_id, + pad_id=self.pad_id, + masked_lm_prob=self.masked_lm_prob, + np_rng=np_rng, + binary_head=False, + whole_word_masking=False, + skip_masking_id=self.sep_id, + ) + + # Skip the parent collate function, since we don't need it for this dataset. + def collate_fn(self, batch): + return batch + + +class CrossLingualMakedSequenceToSequenceDataset(BinarizedMemmapSequenceToSequenceDataset): + def __init__( + self, + src_dataset_prefix: str, + tgt_dataset_prefix: str, + src_tokenizer: TokenizerSpec, + tgt_tokenizer: TokenizerSpec, + max_src_seq_length: int, + max_tgt_seq_length: int, + max_seq_length_dec: int, + seed: int = 1234, + max_num_samples: int = None, + masked_lm_prob: float = 0.15, + extreme_masked_lm_prob: float = 0.5, + max_ngram_size: int = 10, + mean_ngram_size: int = None, + min_ngram_size: int = 1, + extreme_max_ngram_size: int = 128, + extreme_mean_ngram_size: int = 64, + extreme_min_ngram_size: int = 32, + extreme_ngram_span_length_distribution: LengthDistribution = LengthDistribution.truncated_normal, + geometric_dist: bool = True, + permutation: bool = False, + favor_long_ngrams: bool = False, + masking_type: str = "t5", + ): + super().__init__( + src_dataset_prefix=src_dataset_prefix, + tgt_dataset_prefix=tgt_dataset_prefix, + src_tokenizer=src_tokenizer, + tgt_tokenizer=tgt_tokenizer, + max_src_seq_length=max_src_seq_length, + max_tgt_seq_length=max_tgt_seq_length, + seed=seed, + max_num_samples=max_num_samples, + ) + self.max_seq_length_dec = max_seq_length_dec + self.max_ngram_size = max_ngram_size + self.mean_ngram_size = mean_ngram_size + self.min_ngram_size = min_ngram_size + self.geometric_dist = geometric_dist + self.permutation = permutation + self.favor_long_ngrams = favor_long_ngrams + self.extreme_masked_lm_prob = extreme_masked_lm_prob + self.extreme_max_ngram_size = extreme_max_ngram_size + self.extreme_mean_ngram_size = extreme_mean_ngram_size + self.extreme_min_ngram_size = extreme_min_ngram_size + self.extreme_ngram_span_length_distribution = extreme_ngram_span_length_distribution + self.masking_type = masking_type + + assert src_tokenizer == tgt_tokenizer + # Vocab stuff. + self.vocab_id_list = src_tokenizer.vocab + self.vocab_id_to_token_dict = {idx: token for idx, token in enumerate(self.vocab_id_list)} + self.cls_id = src_tokenizer.cls_id + self.sep_id = src_tokenizer.sep_id + self.mask_id = src_tokenizer.mask_id + self.pad_id = src_tokenizer.pad_id + self.bos_id = src_tokenizer.bos_id + self.eos_id = src_tokenizer.eos_id + self.max_seq_length = max_src_seq_length + max_tgt_seq_length + self.masked_lm_prob = masked_lm_prob + + self.tokenizer_type = T5Dataset._determine_tokenizer_type(src_tokenizer, whole_word_masking=False) + self._build() + + def _build(self): + """ + Class-specific build method to be overridden by child classes. + """ + self.sentinel_tokens = self.src_tokenizer.additional_special_tokens_ids + assert len(self.sentinel_tokens) > 0 + + def __getitem__(self, idx): + src, tgt = super()._get_sample(idx) + if len(src) > self.max_src_seq_length: + src = src[: self.max_src_seq_length] + + if len(tgt) > self.max_tgt_seq_length - 1: # -1 here to account for the token that gets added. + tgt = tgt[: self.max_tgt_seq_length] + + np_rng = np.random.RandomState(seed=(self.seed + idx)) + + return CrossLingualMakedSequenceToSequenceDataset.get_example( + src=src, + tgt=tgt, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + masked_lm_prob=self.masked_lm_prob, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + cls_id=self.cls_id, + sep_id=self.sep_id, + mask_id=self.mask_id, + bos_id=self.bos_id, + eos_id=self.eos_id, + pad_id=self.pad_id, + sentinel_tokens=self.sentinel_tokens, + max_ngram_size=self.max_ngram_size, + np_rng=np_rng, + mean_ngram_size=self.mean_ngram_size, + min_ngram_size=self.min_ngram_size, + extreme_masked_lm_prob=self.extreme_masked_lm_prob, + extreme_max_ngram_size=self.extreme_max_ngram_size, + extreme_mean_ngram_size=self.extreme_mean_ngram_size, + extreme_min_ngram_size=self.extreme_min_ngram_size, + extreme_ngram_span_length_distribution=self.extreme_ngram_span_length_distribution, + favor_long_ngrams=self.favor_long_ngrams, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + tokenizer_type=self.tokenizer_type, + masking_type=self.masking_type, + ) + + # Skip the parent collate function, since we don't need it for this dataset. + def collate_fn(self, batch): + return batch + + +class BinarizedMemmapCrossLingualMLMAndTranslationDataset(BinarizedMemmapSequenceToSequenceDataset): + def __init__( + self, + src_dataset_prefix: str, + tgt_dataset_prefix: str, + src_tokenizer: TokenizerSpec, + tgt_tokenizer: TokenizerSpec, + src_language: str, + tgt_language: str, + max_src_seq_length: int, + max_tgt_seq_length: int, + max_seq_length_dec: int, + seed: int = 1234, + max_num_samples: int = None, + masked_lm_prob: float = 0.15, + extreme_masked_lm_prob: float = 0.5, + max_ngram_size: int = 10, + mean_ngram_size: int = None, + min_ngram_size: int = 1, + extreme_max_ngram_size: int = 128, + extreme_mean_ngram_size: int = 64, + extreme_min_ngram_size: int = 32, + extreme_ngram_span_length_distribution: LengthDistribution = LengthDistribution.truncated_normal, + prefix_lm_pivot_mean: float = 0.25, # This is represented as a percentage of the total length. + geometric_dist: bool = True, + permutation: bool = False, + favor_long_ngrams: bool = False, + sampling_ratios: Dict[str, float] = {"x-masking": 0.25, "r-masking": 0.25, "s-masking": 0.25, "nmt": 0.25}, + sentinel_tokens: List[int] = None, + ): + super().__init__( + src_dataset_prefix=src_dataset_prefix, + tgt_dataset_prefix=tgt_dataset_prefix, + src_tokenizer=src_tokenizer, + tgt_tokenizer=tgt_tokenizer, + max_src_seq_length=max_src_seq_length + - 1, # -1 here to account for tokens and special prefix tokens to the encoder like , , etc. + max_tgt_seq_length=max_tgt_seq_length + - 1, # -1 here to account for tokens and special prefix tokens to the encoder like , , etc. + seed=seed, + max_num_samples=max_num_samples, + add_bos_to_enc=False, + add_eos_to_enc=False, + ) + self.max_seq_length_dec = max_seq_length_dec + self.max_ngram_size = max_ngram_size + self.mean_ngram_size = mean_ngram_size + self.min_ngram_size = min_ngram_size + self.geometric_dist = geometric_dist + self.permutation = permutation + self.favor_long_ngrams = favor_long_ngrams + self.extreme_masked_lm_prob = extreme_masked_lm_prob + self.extreme_max_ngram_size = extreme_max_ngram_size + self.extreme_mean_ngram_size = extreme_mean_ngram_size + self.extreme_min_ngram_size = extreme_min_ngram_size + self.extreme_ngram_span_length_distribution = extreme_ngram_span_length_distribution + self.prefix_lm_pivot_mean = prefix_lm_pivot_mean + self.sampling_ratios = sampling_ratios + self.src_language = src_language + self.tgt_language = tgt_language + + # Vocab stuff. + self.vocab_id_list = src_tokenizer.vocab + self.vocab_id_to_token_dict = {idx: token for idx, token in enumerate(self.vocab_id_list)} + self.cls_id = src_tokenizer.cls_id + self.sep_id = src_tokenizer.sep_id + self.mask_id = src_tokenizer.mask_id + self.pad_id = src_tokenizer.pad_id + self.bos_id = src_tokenizer.bos_id + self.eos_id = src_tokenizer.eos_id + self.max_seq_length = max_src_seq_length + max_tgt_seq_length - 1 + self.masked_lm_prob = masked_lm_prob + self.sentinel_tokens = sentinel_tokens + + self.tokenizer_type = T5Dataset._determine_tokenizer_type(src_tokenizer, whole_word_masking=False) + self._build() + + def _build(self): + """ + Class-specific build method to be overridden by child classes. + """ + if self.sentinel_tokens is None: + self.sentinel_tokens = self.src_tokenizer.additional_special_tokens_ids + assert len(self.sentinel_tokens) > 0 + + @classmethod + def create_sample( + cls, + np_rng: np.random.RandomState, + src: List[int], + tgt: List[int], + sampling_ratios: Dict[str, float], + max_src_seq_length: int, + max_tgt_seq_length: int, + max_seq_length: int, + max_seq_length_dec: int, + src_language: str, + tgt_language: str, + src_tokenizer: TokenizerSpec, + tgt_tokenizer: TokenizerSpec, + sep_id: int, + masked_lm_prob: float, + extreme_masked_lm_prob: float, + max_ngram_size: int, + min_ngram_size: int, + mean_ngram_size: int, + extreme_max_ngram_size: int, + extreme_min_ngram_size: int, + extreme_mean_ngram_size: int, + extreme_ngram_span_length_distribution: LengthDistribution, + sentinel_tokens: List[int], + prefix_lm_pivot_mean: float, + vocab_id_list: List[int], + vocab_id_to_token_dict: Dict[int, str], + favor_long_ngrams: bool = False, + permutation: bool = False, + geometric_dist: bool = True, + tokenizer_type: str = "wordpiece", + ): + # Determine which task to perform - NMT/T5/UL2 based on sampling ratios. + task = np_rng.choice(list(sampling_ratios.keys()), p=list(sampling_ratios.values())) + + # Potentially swap src, tgt with a 50% chance to avoid learning associations based on position in the sequence. + swap_src_tgt = np_rng.randint(0, 2) + + if len(src) > max_src_seq_length: + src = src[:max_src_seq_length] + + # Tasks that are not NMT have a token so we need to account for this in the length, hence we truncate tgt to max_tgt_seq_length - 1. + max_tgt_seq_length = max_tgt_seq_length - 1 if task != "nmt" else max_tgt_seq_length + if len(tgt) > max_tgt_seq_length: + tgt = tgt[:max_tgt_seq_length] + + if task == "nmt": + # If src/tgt are swapped, also swap the prepend language token ID. + if swap_src_tgt == 1: + src, tgt = tgt, src + prepend_id = f"<{src_language}>" + else: + prepend_id = f"<{tgt_language}>" + + text_dec = np.concatenate([[tgt_tokenizer.bos_id], tgt]) + labels = np.concatenate([tgt, [tgt_tokenizer.eos_id]]) + nmt_sample = {'text_enc': src, 'text_dec': text_dec, 'labels': labels} + return UL2Dataset._prepend_mask_type_token(src_tokenizer, nmt_sample, prepend_id) + + if swap_src_tgt == 0: + sample = [np.concatenate((src, [sep_id], tgt))] + elif swap_src_tgt == 1: + sample = [np.concatenate((tgt, [sep_id], src))] + + if task == "x-masking": + return UL2Dataset.get_x_masking_training_sample( + sample=sample, + tokenizer=src_tokenizer, + np_rng=np_rng, + target_seq_length=sample[0].shape[0], + max_seq_length=max_seq_length, # -1 to account for the token that gets added after the sample is created. + max_seq_length_dec=max_seq_length_dec, + masked_lm_prob=masked_lm_prob, + extreme_masked_lm_prob=extreme_masked_lm_prob, + max_ngram_size=max_ngram_size, + min_ngram_size=min_ngram_size, + mean_ngram_size=mean_ngram_size, + extreme_max_ngram_size=extreme_max_ngram_size, + extreme_min_ngram_size=extreme_min_ngram_size, + extreme_mean_ngram_size=extreme_mean_ngram_size, + extreme_ngram_span_length_distribution=extreme_ngram_span_length_distribution, + sentinel_tokens=sentinel_tokens, + skip_masking_id=sep_id, + ) + elif task == "s-masking": + return UL2Dataset.get_s_masking_training_sample( + sample=sample, + np_rng=np_rng, + max_seq_length_encoder=max_seq_length, # -1 to account for the token that gets added after the sample is created. + max_seq_length_decoder=max_seq_length_dec, + tokenizer=src_tokenizer, + prefix_lm_pivot_mean=prefix_lm_pivot_mean, + pivot_distribution=extreme_ngram_span_length_distribution, + add_eos=True, # Most sentences are < max length in cross-lingual data, so we add an EOS to indicate to the model to stop. + ) + elif task == "r-masking": + return UL2Dataset.get_r_masking_training_sample( + sample=sample, + tokenizer=src_tokenizer, + np_rng=np_rng, + target_seq_length=sample[0].shape[0], + max_seq_length=max_seq_length, # -1 to account for the token that gets added after the sample is created. + max_seq_length_dec=max_seq_length_dec, + masked_lm_prob=masked_lm_prob, + vocab_id_list=vocab_id_list, + vocab_id_to_token_dict=vocab_id_to_token_dict, + max_ngram_size=max_ngram_size, + mean_ngram_size=mean_ngram_size, + whole_word_masking=False, + favor_long_ngrams=favor_long_ngrams, + permutation=permutation, + geometric_dist=geometric_dist, + tokenizer_type=tokenizer_type, + sentinel_tokens=sentinel_tokens, + skip_masking_id=sep_id, + ) + + def __getitem__(self, idx): + np_rng = np.random.RandomState(seed=(self.seed + idx)) + src, tgt = super()._get_sample(idx) + return BinarizedMemmapCrossLingualMLMAndTranslationDataset.create_sample( + np_rng=np_rng, + src=src, + tgt=tgt, + sampling_ratios=self.sampling_ratios, + max_src_seq_length=self.max_src_seq_length, + max_tgt_seq_length=self.max_tgt_seq_length, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + src_language=self.src_language, + tgt_language=self.tgt_language, + src_tokenizer=self.src_tokenizer, + tgt_tokenizer=self.tgt_tokenizer, + sep_id=self.sep_id, + masked_lm_prob=self.masked_lm_prob, + extreme_masked_lm_prob=self.extreme_masked_lm_prob, + max_ngram_size=self.max_ngram_size, + min_ngram_size=self.min_ngram_size, + mean_ngram_size=self.mean_ngram_size, + extreme_max_ngram_size=self.extreme_max_ngram_size, + extreme_min_ngram_size=self.extreme_min_ngram_size, + extreme_mean_ngram_size=self.extreme_mean_ngram_size, + extreme_ngram_span_length_distribution=self.extreme_ngram_span_length_distribution, + sentinel_tokens=self.sentinel_tokens, + prefix_lm_pivot_mean=self.prefix_lm_pivot_mean, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + favor_long_ngrams=self.favor_long_ngrams, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + tokenizer_type=self.tokenizer_type, + ) + + # NOTE: We want the parent's collate_fn to be used here since NMT examples are not padded even though the other task are. + + +class TextMemmapCrossLingualMLMAndTranslationDataset(TextMemmapSequenceToSequenceDataset): + def __init__( + self, + src_file_name: str, + tgt_file_name: str, + src_tokenizer: TokenizerSpec, + tgt_tokenizer: TokenizerSpec, + src_language: str, + tgt_language: str, + max_src_seq_length: int, + max_tgt_seq_length: int, + max_seq_length_dec: int, + seed: int = 1234, + max_num_samples: int = None, + masked_lm_prob: float = 0.15, + extreme_masked_lm_prob: float = 0.5, + max_ngram_size: int = 10, + mean_ngram_size: int = None, + min_ngram_size: int = 1, + extreme_max_ngram_size: int = 128, + extreme_mean_ngram_size: int = 64, + extreme_min_ngram_size: int = 32, + extreme_ngram_span_length_distribution: LengthDistribution = LengthDistribution.truncated_normal, + prefix_lm_pivot_mean: float = 0.25, # This is represented as a percentage of the total length. + geometric_dist: bool = True, + permutation: bool = False, + favor_long_ngrams: bool = False, + sampling_ratios: Dict[str, float] = {"x-masking": 0.25, "r-masking": 0.25, "s-masking": 0.25, "nmt": 0.25}, + sentinel_tokens: List[int] = None, + ): + super().__init__( + src_file_name=src_file_name, + tgt_file_name=tgt_file_name, + src_tokenizer=src_tokenizer, + tgt_tokenizer=tgt_tokenizer, + max_src_seq_length=max_src_seq_length + - 1, # -1 here to account for tokens and special prefix tokens to the encoder like , , etc. + max_tgt_seq_length=max_tgt_seq_length + - 1, # -1 here to account for tokens and special prefix tokens to the encoder like , , etc. + seed=seed, + max_num_samples=max_num_samples, + add_bos_to_enc=False, + add_eos_to_enc=False, + ) + self.max_seq_length_dec = max_seq_length_dec + self.max_ngram_size = max_ngram_size + self.mean_ngram_size = mean_ngram_size + self.min_ngram_size = min_ngram_size + self.geometric_dist = geometric_dist + self.permutation = permutation + self.favor_long_ngrams = favor_long_ngrams + self.extreme_masked_lm_prob = extreme_masked_lm_prob + self.extreme_max_ngram_size = extreme_max_ngram_size + self.extreme_mean_ngram_size = extreme_mean_ngram_size + self.extreme_min_ngram_size = extreme_min_ngram_size + self.extreme_ngram_span_length_distribution = extreme_ngram_span_length_distribution + self.prefix_lm_pivot_mean = prefix_lm_pivot_mean + self.sampling_ratios = sampling_ratios + self.src_language = src_language + self.tgt_language = tgt_language + + # Vocab stuff. + self.vocab_id_list = src_tokenizer.vocab + self.vocab_id_to_token_dict = {idx: token for idx, token in enumerate(self.vocab_id_list)} + self.cls_id = src_tokenizer.cls_id + self.sep_id = src_tokenizer.sep_id + self.mask_id = src_tokenizer.mask_id + self.pad_id = src_tokenizer.pad_id + self.bos_id = src_tokenizer.bos_id + self.eos_id = src_tokenizer.eos_id + self.max_seq_length = max_src_seq_length + max_tgt_seq_length - 1 + self.masked_lm_prob = masked_lm_prob + self.sentinel_tokens = sentinel_tokens + + self.tokenizer_type = T5Dataset._determine_tokenizer_type(src_tokenizer, whole_word_masking=False) + self._build() + + def _build(self): + """ + Class-specific build method to be overridden by child classes. + """ + if self.sentinel_tokens is None: + self.sentinel_tokens = self.src_tokenizer.additional_special_tokens_ids + assert len(self.sentinel_tokens) > 0 + + def __getitem__(self, idx): + np_rng = np.random.RandomState(seed=(self.seed + idx)) + src, tgt = super()._get_sample(idx) + return BinarizedMemmapCrossLingualMLMAndTranslationDataset.create_sample( + np_rng=np_rng, + src=src, + tgt=tgt, + sampling_ratios=self.sampling_ratios, + max_src_seq_length=self.max_src_seq_length, + max_tgt_seq_length=self.max_tgt_seq_length, + max_seq_length=self.max_seq_length, + max_seq_length_dec=self.max_seq_length_dec, + src_language=self.src_language, + tgt_language=self.tgt_language, + src_tokenizer=self.src_tokenizer, + tgt_tokenizer=self.tgt_tokenizer, + sep_id=self.sep_id, + masked_lm_prob=self.masked_lm_prob, + extreme_masked_lm_prob=self.extreme_masked_lm_prob, + max_ngram_size=self.max_ngram_size, + min_ngram_size=self.min_ngram_size, + mean_ngram_size=self.mean_ngram_size, + extreme_max_ngram_size=self.extreme_max_ngram_size, + extreme_min_ngram_size=self.extreme_min_ngram_size, + extreme_mean_ngram_size=self.extreme_mean_ngram_size, + extreme_ngram_span_length_distribution=self.extreme_ngram_span_length_distribution, + sentinel_tokens=self.sentinel_tokens, + prefix_lm_pivot_mean=self.prefix_lm_pivot_mean, + vocab_id_list=self.vocab_id_list, + vocab_id_to_token_dict=self.vocab_id_to_token_dict, + favor_long_ngrams=self.favor_long_ngrams, + permutation=self.permutation, + geometric_dist=self.geometric_dist, + tokenizer_type=self.tokenizer_type, + ) + + # NOTE: We want the parent's collate_fn to be used here since NMT examples are not padded even though the other task are. diff --git a/nemo/collections/nlp/data/machine_translation/machine_translation_dataset.py b/nemo/collections/nlp/data/machine_translation/machine_translation_dataset.py index 83da64d61f70..efb0cef86f4e 100644 --- a/nemo/collections/nlp/data/machine_translation/machine_translation_dataset.py +++ b/nemo/collections/nlp/data/machine_translation/machine_translation_dataset.py @@ -82,6 +82,7 @@ def __init__( use_cache: bool = False, reverse_lang_direction: bool = False, prepend_id: int = None, + add_bos_eos_to_encoder: bool = True, ): self.dataset_src = dataset_src self.dataset_tgt = dataset_tgt @@ -96,6 +97,7 @@ def __init__( self.max_seq_length_ratio = max_seq_length_ratio self.reverse_lang_direction = reverse_lang_direction self.prepend_id = prepend_id + self.add_bos_eos_to_encoder = add_bos_eos_to_encoder # deprecation warnings for cache_ids, use_cache, and cache_data_per_node if self.cache_ids is True or self.use_cache is True or self.cache_data_per_node is True: @@ -110,6 +112,7 @@ def batchify(self, tokenizer_src, tokenizer_tgt): cache_ids=self.cache_ids, cache_data_per_node=self.cache_data_per_node, use_cache=self.use_cache, + add_bos_eos=self.add_bos_eos_to_encoder, remove_trailing_newline=True, ) tgt_ids = dataset_to_ids( diff --git a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py index b57d42bdcdc2..f389c6518f46 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py @@ -688,7 +688,7 @@ def validation_step_logits(self, batch, batch_idx): return logits_tensor - def validation_step(self, batch, batch_idx): + def validation_step(self, batch, batch_idx, dataloader_idx=0): """ return_values - if given, returns a dictionary with given keys and corresponding values """ diff --git a/nemo/collections/nlp/models/language_modeling/megatron_t5_model.py b/nemo/collections/nlp/models/language_modeling/megatron_t5_model.py index 96a0f64e4d6f..0eeaff3081a4 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_t5_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_t5_model.py @@ -160,26 +160,32 @@ def add_special_tokens_to_tokenizer( # T5-related construction if tokenizer_cfg.library == 'huggingface' or tokenizer_cfg.library == 'megatron': additional_tokens = { - 'additional_special_tokens': [f'' for i in range(tokenizer_cfg.num_sentinel_tokens)] + 'additional_special_tokens': [ + f'' for i in range(tokenizer_cfg.get('num_sentinel_tokens', 0)) + ] } if dataset_type == "ul2": - for mask_type in ['r', 's', 'x']: + mask_types = ['r', 's', 'x'] + for mask_type in mask_types: additional_tokens['additional_special_tokens'].extend([f'']) - tokenizer.add_special_tokens(additional_tokens) + if additional_tokens['additional_special_tokens']: + tokenizer.add_special_tokens(additional_tokens) if tokenizer_cfg.library == 'sentencepiece': # NOTE: This is an ugly way to support both NeMo-Megatron trained checkpoints and huggingface checkpoints. # Huggingface and Google checkpoints will add sentinel tokens first (right after the base vocabulary), but in NeMo-Megatron, we add , , , , etc. beofore sentinel tokens . if add_sentinel_tokens_first: - cls._add_sentinel_tokens( - tokenizer, tokenizer_cfg.num_sentinel_tokens, add_sentinel_tokens_in_reverse_order - ) + if tokenizer_cfg.get('num_sentinel_tokens', 0) > 0: + cls._add_sentinel_tokens( + tokenizer, tokenizer_cfg.num_sentinel_tokens, add_sentinel_tokens_in_reverse_order + ) cls._add_base_special_tokens(tokenizer, is_huggingface_converted_model=True) else: cls._add_base_special_tokens(tokenizer, is_huggingface_converted_model=False) - cls._add_sentinel_tokens( - tokenizer, tokenizer_cfg.num_sentinel_tokens, add_sentinel_tokens_in_reverse_order - ) + if tokenizer_cfg.get('num_sentinel_tokens', 0) > 0: + cls._add_sentinel_tokens( + tokenizer, tokenizer_cfg.num_sentinel_tokens, add_sentinel_tokens_in_reverse_order + ) if dataset_type == "ul2": for mask_type in ['r', 's', 'x']: diff --git a/nemo/collections/nlp/models/machine_translation/megatron_nmt_model.py b/nemo/collections/nlp/models/machine_translation/megatron_nmt_model.py index a44b560fbb2d..964a018cb272 100644 --- a/nemo/collections/nlp/models/machine_translation/megatron_nmt_model.py +++ b/nemo/collections/nlp/models/machine_translation/megatron_nmt_model.py @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import enum import itertools import random from typing import List, Optional @@ -34,6 +35,10 @@ from nemo.collections.nlp.data.language_modeling.megatron.megatron_batch_samplers import ( MegatronPretrainingBatchSampler, ) +from nemo.collections.nlp.data.language_modeling.megatron.xlm_dataset import ( + BinarizedMemmapCrossLingualMLMAndTranslationDataset, + TextMemmapCrossLingualMLMAndTranslationDataset, +) from nemo.collections.nlp.models.language_modeling.megatron_lm_encoder_decoder_model import ( MegatronLMEncoderDecoderModel, ) @@ -57,6 +62,12 @@ __all__ = ["MegatronNMTModel"] +class MultilingualModelType(enum.Enum): + one_to_many = 1 + many_to_one = 2 + many_to_many = 3 + + class MegatronNMTModel(MegatronLMEncoderDecoderModel, Exportable): """ Megatron NMT training @@ -66,7 +77,7 @@ def __init__(self, cfg: DictConfig, trainer: Trainer): # All of the lines below need to be set when the parent class calls self._build_tokenizer() self.encoder_tokenizer_library = cfg.encoder_tokenizer.get('library', 'yttm') self.decoder_tokenizer_library = cfg.decoder_tokenizer.get('library', 'yttm') - self.special_tokens = {} + self.multilingual_lang_tokens = {} self.src_language = cfg.get("src_language", None) self.tgt_language = cfg.get("tgt_language", None) @@ -74,23 +85,53 @@ def __init__(self, cfg: DictConfig, trainer: Trainer): self.multilingual_ids = [] self.validate_input_ids = cfg.get("validate_input_ids", True) + self.objective = cfg.train_ds.get("objective", "nmt") + + if self.objective == 'nmt-xlm': + if not self.multilingual: + raise ValueError("nmt-xlm objective requires model.multilingual=True") + if self.multilingual: - if isinstance(self.src_language, ListConfig) and isinstance(self.tgt_language, ListConfig): - raise ValueError( - "cfg.src_language and cfg.tgt_language cannot both be lists. We only support many-to-one or one-to-many multilingual models." - ) - elif isinstance(self.src_language, ListConfig): - pass - elif isinstance(self.tgt_language, ListConfig): - for lng in self.tgt_language: - self.special_tokens["<" + lng + ">"] = "<" + lng + ">" - else: - raise ValueError( - "Expect either cfg.src_language or cfg.tgt_language to be a list when multilingual=True." - ) + self.multilingual_type = self._determine_multilingual_training_type() + self._setup_multilingual_special_tokens() + else: + self.multilingual_type = None super().__init__(cfg, trainer=trainer) + def _determine_multilingual_training_type(self): + """Determines whether we are doing one-many, many-one, or many-many training based on the config.""" + if self.objective == 'nmt-xlm': + return MultilingualModelType.many_to_many + if isinstance(self.src_language, ListConfig) and isinstance(self.tgt_language, ListConfig): + return MultilingualModelType.many_to_many + elif isinstance(self.src_language, ListConfig): + return MultilingualModelType.many_to_one + elif isinstance(self.tgt_language, ListConfig): + return MultilingualModelType.one_to_many + else: + raise ValueError( + f"Invalid multilingual training config: {self.src_language}, {self.tgt_language}. Must have either src/tgt as a list of languages." + ) + + def _setup_multilingual_special_tokens(self): + if self.multilingual_type == MultilingualModelType.many_to_many: + if self.objective == 'nmt-xlm': + unique_langs = set(self.src_language + self.tgt_language) + else: + # We don't take a set() for tgt_language here because the same lang can appear multiple times. + unique_langs = set(self.tgt_language) + for lng in unique_langs: + self.multilingual_lang_tokens["<" + lng + ">"] = "<" + lng + ">" + elif self.multilingual_type == MultilingualModelType.many_to_one: + # Do nothing here since many -> one does not need special tokens for the target language. + pass + elif self.multilingual_type == MultilingualModelType.one_to_many: + for lng in self.tgt_language: + self.multilingual_lang_tokens["<" + lng + ">"] = "<" + lng + ">" + else: + raise ValueError(f"Invalid multilingual training type: {self.multilingual_type}") + def setup(self, stage=None): # NOTE: super().__init__ will try and setup train/val/test datasets, but we sidestep this using a if self._train_ds is not None condition # We then set things up for real only once setup() of this class is called. @@ -115,13 +156,28 @@ def setup(self, stage=None): # when using pipeline model parallel the final stage need to initialize word embeddings if parallel_state.get_pipeline_model_parallel_world_size() > 1: + assert ( + self.cfg.share_token_embeddings + ), "share_word_embedding must be True when using pipeline model parallel > 1" + assert ( + self.cfg.share_decoder_tokens_head_embeddings + ), "share_decoder_tokens_head_embeddings must be True when using pipeline model parallel > 1" self.enc_dec_model.sync_initial_word_embeddings() - # Only synchronize position embeddings if using absolute position embeddings in both the encoder and decoder. if ( - self.cfg.encoder.get("position_embedding_type", "learned_absolute") == "learned_absolute" - and self.cfg.decoder.get("position_embedding_type", "learned_absolute") == "learned_absolute" + self.cfg.encoder.get('position_embedding_type') != 'relative' + and self.cfg.decoder.get('position_embedding_type') != 'relative' ): self.enc_dec_model.sync_initial_position_embeddings() + # Synchronize RPE embeddings across pipeline parallel ranks. + else: + if self.cfg.encoder.get('position_embedding_type', 'learned_absolute') == 'relative': + self.enc_dec_model.sync_initial_encoder_relative_position_embeddings() + if self.cfg.decoder.get('position_embedding_type', 'learned_absolute') == 'relative': + self.enc_dec_model.sync_initial_decoder_relative_position_embeddings() + if self.cfg.decoder.get( + 'position_embedding_type', 'learned_absolute' + ) == 'relative' and not self.cfg.decoder.get('relative_position_bias_self_attention_only', True): + self.enc_dec_model.sync_initial_decoder_cross_attention_relative_position_embeddings() def _build_tokenizer(self): # Instantiates tokenizers and register to be saved with NeMo Model archive @@ -150,24 +206,57 @@ def _build_tokenizer(self): else 0.0, decoder_model_name=self._cfg.encoder_tokenizer.get('type', None), decoder_r2l=self._cfg.decoder_tokenizer.get('r2l', False), - special_tokens=self.special_tokens, encoder_sentencepiece_legacy=self._cfg.encoder_tokenizer.get('sentencepiece_legacy', False), decoder_sentencepiece_legacy=self._cfg.decoder_tokenizer.get('sentencepiece_legacy', False), ) + def _build_vocab(self): + if hasattr(self.cfg, "data") and self.cfg.train_ds.get('objective', 'nmt') != 'nmt-xlm': + if hasattr(self.cfg.data, "dataset_type"): + # This happens only when restoring a pre-trained model. We need to add all of the special tokens that were added while pre-training to avoid a checkpoint shape mismatch while restoring. + MegatronT5Model.add_special_tokens_to_tokenizer( + tokenizer=self.encoder_tokenizer, + tokenizer_cfg=self.cfg.encoder_tokenizer, + dataset_type=self.cfg.data.dataset_type, + ) + MegatronT5Model.add_special_tokens_to_tokenizer( + tokenizer=self.decoder_tokenizer, + tokenizer_cfg=self.cfg.decoder_tokenizer, + dataset_type=self.cfg.data.dataset_type, + ) + + if self.cfg.train_ds.get('objective', 'nmt') == 'nmt-xlm': + if self.cfg.encoder_tokenizer.library != 'sentencepiece': + raise ValueError( + f"NMT-XLM objective requires sentencepiece tokenizer, but got encoder tokenizer library : {self.cfg.encoder_tokenizer.library}" + ) + if self.cfg.decoder_tokenizer.library != 'sentencepiece': + raise ValueError( + f"NMT-XLM objective requires sentencepiece tokenizer, but got decoder tokenizer library : {self.cfg.decoder_tokenizer.library}" + ) + MegatronT5Model.add_special_tokens_to_tokenizer( + tokenizer=self.encoder_tokenizer, tokenizer_cfg=self.cfg.encoder_tokenizer, dataset_type='ul2', + ) + MegatronT5Model.add_special_tokens_to_tokenizer( + tokenizer=self.decoder_tokenizer, tokenizer_cfg=self.cfg.decoder_tokenizer, dataset_type='ul2', + ) + # Set up pre and post processors as well. + # NOTE: multilingual language tokens are set up after other special tokens such as eos, pad, sentinel tokens etc are added. if self.multilingual: ( self.source_processor_list, self.target_processor_list, - self.multilingual_ids, + self.multilingual_lang_to_id, ) = MTEncDecModel.setup_multilingual_ids_and_processors( src_language=self.src_language, tgt_language=self.tgt_language, encoder_tokenizer=self.encoder_tokenizer, # Multilingual training requires shared tokenizers. + decoder_tokenizer=self.decoder_tokenizer, encoder_tokenizer_library=self.encoder_tokenizer_library, decoder_tokenizer_library=self.decoder_tokenizer_library, ) + self.multilingual_ids = list(self.multilingual_lang_to_id.values()) else: # After this call, the model will have self.source_processor and self.target_processor objects self.source_processor, self.target_processor = MTEncDecModel.setup_pre_and_post_processing_utils( @@ -175,23 +264,13 @@ def _build_tokenizer(self): ) self.multilingual_ids = [None] - def _build_vocab(self): - if hasattr(self.cfg, "data"): - if hasattr(self.cfg.data, "dataset_type"): - # This happens only when restoring a pre-trained model. We need to add all of the special tokens that were added while pre-training to avoid a checkpoint shape mismatch while restoring. - MegatronT5Model.add_special_tokens_to_tokenizer( - self.encoder_tokenizer, self.cfg.encoder_tokenizer, self.cfg.data.dataset_type - ) - MegatronT5Model.add_special_tokens_to_tokenizer( - self.decoder_tokenizer, self.cfg.decoder_tokenizer, self.cfg.data.dataset_type - ) self.padded_vocab_size = self._vocab_size_with_padding( orig_vocab_size=self.encoder_tokenizer.vocab_size, make_vocab_size_divisible_by=self._cfg.get('make_vocab_size_divisible_by', 128), tensor_model_parallel_size=self._cfg.get('tensor_model_parallel_size', 1), ) - def eval_step(self, batch, batch_idx, dataloader_idx): + def eval_step(self, batch, batch_idx, dataloader_idx=0): # Need to squeze dim 0 for old NMT datasets since things are pre-batched and we ask the dataloader for batch size 1. batch = [x.squeeze(dim=0) if x.ndim == 3 else x for x in batch] batch = self.process_global_batch_for_text_translation_datasets(batch) @@ -206,7 +285,7 @@ def eval_step(self, batch, batch_idx, dataloader_idx): data_parallel_size=parallel_state.get_data_parallel_world_size(), ) # This returns the averaged loss across data-parallel groups. - reduced_loss = super().validation_step(batch, batch_idx) + reduced_loss = super().validation_step(batch, batch_idx, dataloader_idx) tokens_enc, labels, enc_mask = batch['text_enc'], batch['labels'], batch['enc_mask'] predicted_tokens_ids, _ = self.decode( @@ -273,7 +352,6 @@ def validation_step(self, batch, batch_idx, dataloader_idx=0): return self.eval_step(batch, batch_idx, dataloader_idx) def _setup_eval_dataloader_from_config(self, cfg: DictConfig, dataset): - rank = parallel_state.get_data_parallel_rank() world_size = parallel_state.get_data_parallel_world_size() dataloaders = [] @@ -302,6 +380,9 @@ def test_epoch_end(self, outputs): return self.eval_epoch_end(outputs, 'test') def eval_epoch_end(self, outputs, mode): + if not outputs: + return + if isinstance(outputs[0], dict): outputs = [outputs] @@ -355,13 +436,11 @@ def eval_epoch_end(self, outputs, mode): else: sacre_bleu = corpus_bleu(_translations, [_ground_truths], tokenize="13a") - bleu_score = sacre_bleu.score * parallel_state.get_data_parallel_world_size() + bleu_score = sacre_bleu.score dataset_name = "Validation" if mode == 'val' else "Test" logging.info(f"{dataset_name}, Dataloader index: {dataloader_idx}, Set size: {len(_translations)}") - logging.info( - f"{dataset_name}, Dataloader index: {dataloader_idx}, SacreBLEU = {bleu_score / parallel_state.get_data_parallel_world_size()}" - ) + logging.info(f"{dataset_name}, Dataloader index: {dataloader_idx}, SacreBLEU = {bleu_score}") logging.info(f"{dataset_name}, Dataloader index: {dataloader_idx}, Translation Examples:") logging.info('============================================================') for example_idx in range(0, 3): @@ -375,24 +454,28 @@ def eval_epoch_end(self, outputs, mode): else: bleu_score = 0.0 + bleu_score = torch.FloatTensor([bleu_score]).to(self.device) + # BLEU score is computed on global rank 0 only and then broadcasted to other ranks. + torch.distributed.all_reduce(bleu_score, op=torch.distributed.ReduceOp.SUM) + bleu_score = bleu_score.cpu().item() loss_list.append(averaged_loss.cpu().numpy()) bleu_score_list.append(bleu_score) if dataloader_idx == 0: if self.multilingual: self._log_multilingual_bleu_and_loss(dataloader_idx, bleu_score, averaged_loss, mode) else: - self.log(f'{mode}_sacreBLEU', bleu_score, sync_dist=True) + self.log(f'{mode}_sacreBLEU', bleu_score) self.log(f'{mode}_loss', averaged_loss, prog_bar=True) else: if self.multilingual: self._log_multilingual_bleu_and_loss(dataloader_idx, bleu_score, averaged_loss, mode) else: - self.log(f'{mode}_sacreBLEU_dl_index_{dataloader_idx}', bleu_score, sync_dist=True) + self.log(f'{mode}_sacreBLEU_dl_index_{dataloader_idx}', bleu_score) self.log(f'{mode}_loss_dl_index_{dataloader_idx}', averaged_loss, prog_bar=False) if len(loss_list) > 1: self.log(f"{mode}_loss_avg", np.mean(loss_list), sync_dist=True) - self.log(f"{mode}_sacreBLEU_avg", np.mean(bleu_score_list), sync_dist=True) + self.log(f"{mode}_sacreBLEU_avg", np.mean(bleu_score_list)) def _log_multilingual_bleu_and_loss(self, dataloader_idx, bleu_score, loss, mode): """ @@ -464,32 +547,112 @@ def process_global_batch_for_text_translation_datasets(self, batch): # Parent function will pad microbatches to the same length. return self._process_global_batch_without_megatron_batch_sampler([batch], tokenizer=self.encoder_tokenizer) + def _build_eval_dataset(self, data_cfg): + # Set up prepend IDs for validation datasets even if not multingual. + if self._cfg.train_ds.get('objective', 'nmt') == 'nmt-xlm' or ( + self.multilingual and self.multilingual_type != MultilingualModelType.many_to_one + ): + multilingual_ids = [self.multilingual_lang_to_id[lang] for lang in self.cfg.tgt_language] + dataset = MTEncDecModel._setup_eval_dataset_from_config( + cfg=data_cfg, + multilingual=True, + multilingual_ids=multilingual_ids, + encoder_tokenizer=self.encoder_tokenizer, + decoder_tokenizer=self.decoder_tokenizer, + add_bos_eos_to_encoder=self._cfg.train_ds.get('objective', 'nmt') + != 'nmt-xlm', # nmt-xlm does not add bos/eos to encoder while training so make sure this happens for validation as well. + ) + else: + num_eval_datasets = len(data_cfg.src_file_name) if isinstance(data_cfg.src_file_name, ListConfig) else 1 + multilingual_ids = [None] * num_eval_datasets + dataset = MTEncDecModel._setup_eval_dataset_from_config( + cfg=data_cfg, + multilingual=self.multilingual, + multilingual_ids=multilingual_ids, + encoder_tokenizer=self.encoder_tokenizer, + decoder_tokenizer=self.decoder_tokenizer, + ) + return dataset + def build_train_valid_test_datasets(self): """Builds the train, validation, and test datasets.""" - self._train_ds = self.build_memmap_dataset_from_config(self._cfg.train_ds) if self._cfg.validation_ds.get("dataset_type", "text") != "text": raise ValueError(f"Validation dataset type must be 'text', found {self._cfg.validation_ds.dataset_type}") - self._validation_ds = MTEncDecModel._setup_eval_dataset_from_config( - cfg=self._cfg.validation_ds, - multilingual=self.multilingual, - multilingual_ids=self.multilingual_ids, - encoder_tokenizer=self.encoder_tokenizer, - decoder_tokenizer=self.decoder_tokenizer, - ) - # Test data config is optional. + self._validation_ds = self._build_eval_dataset(self._cfg.validation_ds) if hasattr(self._cfg, 'test_ds'): - if self._cfg.validation_ds.get("dataset_type", "text") != "text": - raise ValueError(f"Test dataset type must be 'text', found {self._cfg.test_ds.dataset_type}") - self._test_ds = MTEncDecModel._setup_eval_dataset_from_config( - cfg=self._cfg.validation_ds, - multilingual=self.multilingual, - multilingual_ids=self.multilingual_ids, - encoder_tokenizer=self.encoder_tokenizer, - decoder_tokenizer=self.decoder_tokenizer, - ) + self._test_ds = self._build_eval_dataset(self._cfg.test_ds) + + def _instantiate_memmap_dataset( + self, cfg, src_file, tgt_file, src_language, tgt_language, num_samples, prepend_id=None + ): + if cfg.dataset_type == 'bin_memmap': + if cfg.get("objective", "nmt") == "nmt": + dataset = BinarizedMemmapSequenceToSequenceDataset( + src_dataset_prefix=src_file, + tgt_dataset_prefix=tgt_file, + src_tokenizer=self.encoder_tokenizer, + tgt_tokenizer=self.decoder_tokenizer, + max_src_seq_length=cfg.max_seq_length, + max_tgt_seq_length=cfg.max_seq_length, + max_num_samples=num_samples[0], + seed=self._cfg.seed, + prepend_id=prepend_id, + ) + elif cfg.get("objective", "nmt") == "nmt-xlm": + # Pass sentinel tokens to the dataset after removing language tokens. + additional_special_ids = self.encoder_tokenizer.additional_special_tokens_ids + sentinel_tokens = [id for id in additional_special_ids if id not in self.multilingual_ids] + dataset = BinarizedMemmapCrossLingualMLMAndTranslationDataset( + src_dataset_prefix=src_file, + tgt_dataset_prefix=tgt_file, + src_tokenizer=self.encoder_tokenizer, + tgt_tokenizer=self.decoder_tokenizer, + src_language=src_language, + tgt_language=tgt_language, + max_src_seq_length=cfg.max_seq_length // 2, + max_tgt_seq_length=cfg.max_seq_length // 2, + max_seq_length_dec=cfg.max_seq_length, + max_num_samples=num_samples[0], + sampling_ratios=cfg.sampling_ratios, + sentinel_tokens=sentinel_tokens, + seed=self._cfg.seed, + ) + elif cfg.dataset_type == 'text_memmap': + if cfg.get("objective", "nmt") == "nmt": + dataset = TextMemmapSequenceToSequenceDataset( + src_file_name=src_file, + tgt_file_name=tgt_file, + src_tokenizer=self.encoder_tokenizer, + tgt_tokenizer=self.decoder_tokenizer, + max_src_seq_length=cfg.max_seq_length, + max_tgt_seq_length=cfg.max_seq_length, + max_num_samples=num_samples[0], + seed=self._cfg.seed, + prepend_id=prepend_id, + ) + elif cfg.get("objective", "nmt") == "nmt-xlm": + additional_special_ids = self.encoder_tokenizer.additional_special_tokens_ids + sentinel_tokens = [id for id in additional_special_ids if id not in self.multilingual_ids] + dataset = TextMemmapCrossLingualMLMAndTranslationDataset( + src_file_name=src_file, + tgt_file_name=tgt_file, + src_tokenizer=self.encoder_tokenizer, + tgt_tokenizer=self.decoder_tokenizer, + src_language=src_language, + tgt_language=tgt_language, + max_src_seq_length=cfg.max_seq_length // 2, + max_tgt_seq_length=cfg.max_seq_length // 2, + max_seq_length_dec=cfg.max_seq_length, + max_num_samples=num_samples[0], + sampling_ratios=cfg.sampling_ratios, + sentinel_tokens=sentinel_tokens, + seed=self._cfg.seed, + ) + + return dataset def build_memmap_dataset_from_config(self, cfg: DictConfig): """Builds a memmap dataset from a existing binary based o nthe provided config.""" @@ -532,58 +695,43 @@ def build_memmap_dataset_from_config(self, cfg: DictConfig): num_train_samples_after_blend = sum([x[0] for x in num_train_samples_per_dataset]) datasets = [] - for src_file, tgt_file, num_samples in zip( - cfg.src_file_name, cfg.tgt_file_name, num_train_samples_per_dataset + + # For many -> one multilingual or bilingual models, we don't need to prepend a language token ID + if not self.multilingual or self.multilingual_type == MultilingualModelType.many_to_one: + multilingual_ids = [None] * len(cfg.src_file_name) + # For one -> many and many -> many multilingual models, we need to prepend a language token ID + else: + multilingual_ids = [self.multilingual_lang_to_id[lang] for lang in self.cfg.tgt_language] + + for idx, (src_file, tgt_file, num_samples) in enumerate( + zip(cfg.src_file_name, cfg.tgt_file_name, num_train_samples_per_dataset) ): - if cfg.dataset_type == 'bin_memmap': - dataset = BinarizedMemmapSequenceToSequenceDataset( - src_dataset_prefix=src_file, - tgt_dataset_prefix=tgt_file, - src_tokenizer=self.encoder_tokenizer, - tgt_tokenizer=self.decoder_tokenizer, - max_src_seq_length=cfg.max_seq_length, - max_tgt_seq_length=cfg.max_seq_length, - max_num_samples=num_samples[0], - seed=self._cfg.seed, - ) - elif cfg.dataset_type == 'text_memmap': - dataset = TextMemmapSequenceToSequenceDataset( - src_file_name=src_file, - tgt_file_name=tgt_file, - src_tokenizer=self.encoder_tokenizer, - tgt_tokenizer=self.decoder_tokenizer, - max_src_seq_length=cfg.max_seq_length, - max_tgt_seq_length=cfg.max_seq_length, - max_num_samples=num_samples[0], - seed=self._cfg.seed, - ) + dataset = self._instantiate_memmap_dataset( + cfg=cfg, + src_file=src_file, + tgt_file=tgt_file, + num_samples=num_samples, + prepend_id=multilingual_ids[idx], + src_language=self.src_language + if not isinstance(self.src_language, ListConfig) + else self.src_language[idx], + tgt_language=self.tgt_language + if not isinstance(self.tgt_language, ListConfig) + else self.tgt_language[idx], + ) datasets.append(dataset) dataset = BlendableDataset( datasets=datasets, weights=cfg.concat_sampling_probabilities, size=num_train_samples_after_blend ) else: - if cfg.dataset_type == 'bin_memmap': - dataset = BinarizedMemmapSequenceToSequenceDataset( - src_dataset_prefix=cfg.src_file_name, - tgt_dataset_prefix=cfg.tgt_file_name, - src_tokenizer=self.encoder_tokenizer, - tgt_tokenizer=self.decoder_tokenizer, - max_src_seq_length=cfg.max_seq_length, - max_tgt_seq_length=cfg.max_seq_length, - max_num_samples=self.trainer.max_steps * self._cfg.global_batch_size, - seed=self._cfg.seed, - ) - elif cfg.dataset_type == 'text_memmap': - dataset = TextMemmapSequenceToSequenceDataset( - src_file_name=cfg.src_file_name, - tgt_file_name=cfg.tgt_file_name, - src_tokenizer=self.encoder_tokenizer, - tgt_tokenizer=self.decoder_tokenizer, - max_src_seq_length=cfg.max_seq_length, - max_tgt_seq_length=cfg.max_seq_length, - max_num_samples=self.trainer.max_steps * self._cfg.global_batch_size, - seed=self._cfg.seed, - ) + dataset = self._instantiate_memmap_dataset( + cfg=cfg, + src_file=cfg.src_file_name, + tgt_file=cfg.tgt_file_name, + num_samples=[self.trainer.max_steps * self._cfg.global_batch_size], + src_language=self.src_language, + tgt_language=self.tgt_language, + ) return dataset def list_available_models(self): @@ -640,15 +788,14 @@ def translate( mode = self.training prepend_ids = [] - if self.multilingual: - if source_lang is None or target_lang is None: - raise ValueError("Expect source_lang and target_lang to run inference for multilingual model.") - src_symbol = self.encoder_tokenizer.token_to_id('<' + source_lang + '>') + if self.multilingual and self.multilingual_type != MultilingualModelType.many_to_one: + if target_lang is None: + raise ValueError("target_lang needs to be specified to run inference for multilingual model.") tgt_symbol = self.encoder_tokenizer.token_to_id('<' + target_lang + '>') - if src_symbol in self.multilingual_ids: - prepend_ids = [src_symbol] - elif tgt_symbol in self.multilingual_ids: + if tgt_symbol in self.multilingual_ids: prepend_ids = [tgt_symbol] + else: + print("WARNING: Target language ID not found in multilingual model. Prepending nothing.") if log_timing: timer = timers.NamedTimer() @@ -661,6 +808,7 @@ def translate( try: self.eval() + self.training = False src, src_mask = MTEncDecModel.prepare_inference_batch( text=text, prepend_ids=prepend_ids, @@ -671,13 +819,14 @@ def translate( decoder_tokenizer=self.decoder_tokenizer, device=self.device, ) - predicted_tokens_ids, _ = self.decode( - src, - src_mask, - src.size(1) - + self._cfg.max_generation_delta, # Generate up to src-length + max generation delta. TODO: Implement better stopping when everything hits . - tokenizer=self.decoder_tokenizer, - ) + with torch.inference_mode(): + predicted_tokens_ids, _ = self.decode( + src, + src_mask, + src.size(1) + + self._cfg.max_generation_delta, # Generate up to src-length + max generation delta. TODO: Implement better stopping when everything hits . + tokenizer=self.decoder_tokenizer, + ) best_translations = self.postprocess_outputs( outputs=predicted_tokens_ids, tokenizer=self.decoder_tokenizer, processor=self.target_processor ) @@ -716,6 +865,7 @@ def itn_translate_tn( log_timing: bool = False, inverse_normalizer=None, normalizer=None, + prepend_tgt_lang_id: bool = False, ) -> List[str]: """ Calls the translate() method with the option of running ITN (inverse text-normalization) on the input and TN (text-normalization) on the output. @@ -734,7 +884,9 @@ def itn_translate_tn( """ if inverse_normalizer is not None: text = [inverse_normalizer.normalize(example) for example in text] - translations = self.translate(text, source_lang, target_lang, return_beam_scores, log_timing) + translations = self.translate( + text, source_lang, target_lang, return_beam_scores, log_timing, prepend_tgt_lang_id + ) if normalizer is not None: translations = [normalizer.normalize(example) for example in translations] return translations diff --git a/nemo/collections/nlp/models/machine_translation/mt_enc_dec_model.py b/nemo/collections/nlp/models/machine_translation/mt_enc_dec_model.py index ee0e5248aa9b..482831d7ce83 100644 --- a/nemo/collections/nlp/models/machine_translation/mt_enc_dec_model.py +++ b/nemo/collections/nlp/models/machine_translation/mt_enc_dec_model.py @@ -16,6 +16,7 @@ import json import os import random +from collections import OrderedDict from math import ceil from pathlib import Path from typing import Dict, List, Optional, Union @@ -142,14 +143,16 @@ def __init__(self, cfg: MTEncDecModelConfig, trainer: Trainer = None): ( self.source_processor_list, self.target_processor_list, - self.multilingual_ids, + self.multilingual_lang_to_id, ) = MTEncDecModel.setup_multilingual_ids_and_processors( self.src_language, self.tgt_language, self.encoder_tokenizer, + self.decoder_tokenizer, self.encoder_tokenizer_library, self.decoder_tokenizer_library, ) + self.multilingual_ids = list(self.multilingual_lang_to_id.values()) else: # After this call, the model will have self.source_processor and self.target_processor objects self.source_processor, self.target_processor = MTEncDecModel.setup_pre_and_post_processing_utils( @@ -269,22 +272,46 @@ def __init__(self, cfg: MTEncDecModelConfig, trainer: Trainer = None): @classmethod def setup_multilingual_ids_and_processors( - cls, src_language, tgt_language, encoder_tokenizer, encoder_tokenizer_library, decoder_tokenizer_library + cls, + src_language, + tgt_language, + encoder_tokenizer, + decoder_tokenizer, + encoder_tokenizer_library, + decoder_tokenizer_library, ): - multilingual_ids = [] - if isinstance(src_language, ListConfig): - for lng in src_language: - multilingual_ids.append(None) + multilingual_ids = OrderedDict() + + # Determine all of the language IDs that need to be added as special tokens. + if isinstance(src_language, ListConfig) and isinstance(tgt_language, ListConfig): + assert len(src_language) == len(tgt_language) + all_languages = list(set(tgt_language + src_language)) + elif isinstance(tgt_language, ListConfig): + all_languages = tgt_language + elif not isinstance(src_language, ListConfig) and not isinstance(tgt_language, ListConfig): + all_languages = [src_language, tgt_language] else: - for lng in tgt_language: - if f"<{lng}>" not in encoder_tokenizer.vocab: + all_languages = [] + + # If target is a list config, then add all language ID tokens to the tokenizer. + # When both src, tgt are lists, we concat and take a unique of all lang IDs. + # If only tgt lang is a list, then we only add those lang IDs to the tokenizer. + if all_languages != []: + for lng in all_languages: + if len(encoder_tokenizer.text_to_ids(f"<{lng}>")) != 1: encoder_tokenizer.add_special_tokens({f"<{lng}>": f"<{lng}>"}) - multilingual_ids.append(encoder_tokenizer.token_to_id(f"<{lng}>")) + if len(decoder_tokenizer.text_to_ids(f"<{lng}>")) != 1: + decoder_tokenizer.add_special_tokens({f"<{lng}>": f"<{lng}>"}) + # Make sure that we are adding the same language ID to both tokenizers. If this assert fails it means the tokenizers were different to begin with. + assert encoder_tokenizer.text_to_ids(f"<{lng}>")[0] == decoder_tokenizer.text_to_ids(f"<{lng}>")[0] + multilingual_ids[lng] = encoder_tokenizer.text_to_ids(f"<{lng}>")[0] - if isinstance(src_language, ListConfig): + if isinstance(src_language, ListConfig) and not isinstance(tgt_language, ListConfig): tgt_language = [tgt_language] * len(src_language) - else: + elif isinstance(tgt_language, ListConfig) and not isinstance(src_language, ListConfig): src_language = [src_language] * len(tgt_language) + else: + pass source_processor_list = [] target_processor_list = [] @@ -874,7 +901,13 @@ def replace_beam_with_sampling(self, topk=500): @classmethod def _setup_eval_dataset_from_config( - cls, cfg: DictConfig, multilingual: bool, multilingual_ids, encoder_tokenizer, decoder_tokenizer + cls, + cfg: DictConfig, + multilingual: bool, + multilingual_ids, + encoder_tokenizer, + decoder_tokenizer, + add_bos_eos_to_encoder=True, ): src_file_name = cfg.get('src_file_name') tgt_file_name = cfg.get('tgt_file_name') @@ -919,6 +952,7 @@ def _setup_eval_dataset_from_config( use_cache=cfg.get("use_cache", False), reverse_lang_direction=cfg.get("reverse_lang_direction", False), prepend_id=multilingual_ids[prepend_idx] if multilingual else None, + add_bos_eos_to_encoder=add_bos_eos_to_encoder, ) dataset.batchify(encoder_tokenizer, decoder_tokenizer) datasets.append(dataset) diff --git a/scripts/checkpoint_averaging/megatron_checkpoint_averaging.py b/scripts/checkpoint_averaging/megatron_checkpoint_averaging.py index f1d7850a7cda..59f02a117da4 100755 --- a/scripts/checkpoint_averaging/megatron_checkpoint_averaging.py +++ b/scripts/checkpoint_averaging/megatron_checkpoint_averaging.py @@ -35,6 +35,7 @@ import sys import torch +from omegaconf.omegaconf import OmegaConf, open_dict from pytorch_lightning.trainer.trainer import Trainer from nemo.collections.nlp.parts.nlp_overrides import NLPDDPStrategy, NLPSaveRestoreConnector @@ -104,6 +105,11 @@ def main(): classpath = args.class_path else: classpath = model_cfg.target # original class path + + OmegaConf.set_struct(model_cfg, True) + with open_dict(model_cfg): + if model_cfg.get('megatron_amp_O2', False): + model_cfg.megatron_amp_O2 = False imported_class = model_utils.import_class_by_path(classpath) logging.info(f"Loading model {model_fname}") nemo_model = imported_class.restore_from( @@ -111,6 +117,7 @@ def main(): map_location=device, save_restore_connector=NLPSaveRestoreConnector(), trainer=trainer, + override_config_path=model_cfg, ) # search for all checkpoints (ignore -last.ckpt) From 990b2c84bf41799c00d4d1dc53995db092cdaa76 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Fri, 3 Feb 2023 12:41:39 -0800 Subject: [PATCH 31/73] ONNX export working Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/helpers/helpers.py | 15 ++++----------- nemo/collections/tts/models/radtts.py | 8 ++++---- nemo/collections/tts/modules/common.py | 10 ++-------- nemo/collections/tts/modules/radtts.py | 13 +++++-------- nemo/collections/tts/modules/submodules.py | 2 +- 5 files changed, 16 insertions(+), 32 deletions(-) diff --git a/nemo/collections/tts/helpers/helpers.py b/nemo/collections/tts/helpers/helpers.py index 3ca77334f2a4..2bda71b9fa17 100644 --- a/nemo/collections/tts/helpers/helpers.py +++ b/nemo/collections/tts/helpers/helpers.py @@ -548,17 +548,10 @@ def regulate_len( reps = (reps + 0.5).floor().long() dec_lens = reps.sum(dim=1) if replicate_to_nearest_multiple: - to_pad = group_size * (torch.div(dec_lens, group_size, rounding_mode='floor') + 1) - dec_lens - to_pad = to_pad.unsqueeze(-1).repeat(1, reps.shape[1]) - to_pad_expanded = torch.zeros_like(reps).scatter_(1, in_lens.unsqueeze(-1).long() - 1, to_pad) - reps = reps + to_pad_expanded - - # to_pad = group_size * (torch.div(dec_lens+1, group_size, rounding_mode='floor')) - dec_lens - # reps.index_put_( - # indices = [torch.arange(in_lens.shape[0], dtype=torch.int), in_lens - 1], - # values = to_pad, - # accumulate = True - # ) + to_pad = group_size * (torch.div(dec_lens + 1, group_size, rounding_mode='floor')) - dec_lens + reps.index_put_( + indices=[torch.arange(in_lens.shape[0], dtype=torch.long), in_lens - 1], values=to_pad, accumulate=True + ) dec_lens = reps.sum(dim=1) max_len = dec_lens.max() diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index 342fee903131..b7238c8c021c 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -494,12 +494,12 @@ def forward_for_export( text, speaker_id_text=speaker_id_text, speaker_id_attributes=speaker_id_attributes, - sigma=0.7, - sigma_txt=0.7, + sigma=0.0, + sigma_txt=0.0, sigma_f0=1.0, sigma_energy=1.0, - f0_mean=145.0, - f0_std=30.0, + f0_mean=0.0, + f0_std=0.0, in_lens=lens, pitch_shift=pitch, pace=pace, diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 1da49d26971d..77fb683b520d 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -214,10 +214,7 @@ def forward(self, z, inverse=False): if inverse: if not hasattr(self, 'W_inverse'): # inverse computation - W_inverse = W.float().inverse() - if z.type() == 'torch.cuda.HalfTensor': - W_inverse = W_inverse.half() - + W_inverse = W.float().inverse().to(dtype=z.dtype) self.W_inverse = W_inverse[..., None] z = F.conv1d(z, self.W_inverse, bias=None, stride=1, padding=0) return z @@ -255,10 +252,7 @@ def forward(self, z, inverse=False): if inverse: if not hasattr(self, 'W_inverse'): # Inverse computation - W_inverse = W.float().inverse() - if z.type() == 'torch.cuda.HalfTensor': - W_inverse = W_inverse.half() - + W_inverse = W.float().inverse().to(dtype=z.dtype) self.W_inverse = W_inverse[..., None] z = F.conv1d(z, self.W_inverse, bias=None, stride=1, padding=0) return z diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 862931638a0d..8b94326346c6 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -581,10 +581,10 @@ def infer( self, speaker_id, text, - sigma, - sigma_txt=0.8, - sigma_f0=0.8, - sigma_energy=0.8, + sigma=0.0, + sigma_txt=0.0, + sigma_f0=1.0, + sigma_energy=1.0, speaker_id_text=None, speaker_id_attributes=None, pace=None, @@ -625,9 +625,6 @@ def infer( else: pace = pace[:, :txt_len_pad_removed] - if pitch_shift is not None: - pitch_shift = pitch_shift[:, :txt_len_pad_removed].unsqueeze(-1) - txt_enc_time_expanded, out_lens = regulate_len( dur, txt_enc.transpose(1, 2), @@ -678,7 +675,7 @@ def infer( if pitch_shift is not None: pitch_shift_spec_len, _ = regulate_len( dur, - pitch_shift, + pitch_shift[:, :txt_len_pad_removed].unsqueeze(-1), pace, replicate_to_nearest_multiple=True, group_size=self.n_group_size, diff --git a/nemo/collections/tts/modules/submodules.py b/nemo/collections/tts/modules/submodules.py index e61b9b224885..275468d60634 100644 --- a/nemo/collections/tts/modules/submodules.py +++ b/nemo/collections/tts/modules/submodules.py @@ -172,7 +172,7 @@ def forward(self, signal, mask=None): ret = self.norm(ret, mask) else: if mask is not None: - signal = signal * mask + signal = signal.mul(mask) ret = self.conv(signal) if self.norm is not None: ret = self.norm(ret) From 85c2954f5ca9513e07585b9e562e872bbb6a08e7 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Fri, 3 Feb 2023 16:58:56 -0800 Subject: [PATCH 32/73] Fixing unit test Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/models/radtts.py | 8 ++++---- nemo/collections/tts/modules/common.py | 2 +- tests/collections/tts/test_tts_exportables.py | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index b7238c8c021c..8ba85aec5ed0 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -442,11 +442,11 @@ def input_example(self, max_batch=1, max_dim=400): par = next(self.parameters()) sz = (max_batch, max_dim) # sz = (max_batch * max_dim,) - inp = torch.randint(0, 94, sz, device=par.device, dtype=torch.int64) + inp = torch.randint(8, 94, sz, device=par.device, dtype=torch.int64) speaker = torch.randint(0, 1, (max_batch,), device=par.device, dtype=torch.int64) pitch = torch.randn(sz, device=par.device, dtype=torch.float32) * 0.5 - pace = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.01) - volume = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.01) + pace = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.1) + volume = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.1) # batch_lengths = torch.zeros((max_batch + 1), device=par.device, dtype=torch.int64) # left_over_size = sz[0] # batch_lengths[0] = 0 @@ -467,7 +467,7 @@ def input_example(self, max_batch=1, max_dim=400): lens = [] for i, _ in enumerate(inp): - len_i = random.randint(3, max_dim) + len_i = random.randint(8, max_dim) lens.append(len_i) inp[i, len_i:] = pad_id lens = torch.tensor(lens, device=par.device, dtype=torch.int32) diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 77fb683b520d..2d1bf1d70652 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -216,7 +216,7 @@ def forward(self, z, inverse=False): # inverse computation W_inverse = W.float().inverse().to(dtype=z.dtype) self.W_inverse = W_inverse[..., None] - z = F.conv1d(z, self.W_inverse, bias=None, stride=1, padding=0) + z = F.conv1d(z, self.W_inverse.to(dtype=z.dtype), bias=None, stride=1, padding=0) return z else: W = W[..., None] diff --git a/tests/collections/tts/test_tts_exportables.py b/tests/collections/tts/test_tts_exportables.py index bcad28a90fd9..093f2c47ae8e 100644 --- a/tests/collections/tts/test_tts_exportables.py +++ b/tests/collections/tts/test_tts_exportables.py @@ -85,7 +85,6 @@ def test_RadTTSModel_export_to_torchscript(self, radtts_model): input_example2 = model.input_module.input_example(max_batch=16, max_dim=1024) model.export(output=filename, verbose=True, input_example=input_example1, check_trace=[input_example2]) - @pytest.mark.pleasefixme('ONNX not working yet. Restore when Pytorch fixes LSTM/ONNX bugs.') @pytest.mark.run_only_on('GPU') @pytest.mark.unit def test_RadTTSModel_export_to_onnx(self, radtts_model): From d99ec3da20b65205859e74708467f63ea611d745 Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Fri, 3 Feb 2023 21:15:08 +0400 Subject: [PATCH 33/73] Update isort to the latest version (#5895) Update isort to the latest version Signed-off-by: Vladimir Bataev --------- Signed-off-by: Vladimir Bataev Signed-off-by: Jason --- .pre-commit-config.yaml | 3 +-- nemo/collections/asr/losses/rnnt.py | 2 +- .../collections/asr/modules/flashlight_decoder.py | 8 ++++---- .../asr/parts/utils/asr_confidence_utils.py | 2 +- .../megatron/blendable_dataset.py | 1 - .../language_modeling/megatron/dataset_utils.py | 8 ++++---- .../language_modeling/megatron/bert_model.py | 1 - .../language_modeling/megatron/gpt_model.py | 2 +- .../language_modeling/megatron_bert_model.py | 7 +++---- .../language_modeling/megatron_gpt_model.py | 8 ++++---- .../megatron_gpt_prompt_learning_model.py | 7 ++----- .../megatron_lm_encoder_decoder_model.py | 3 +-- .../language_modeling/megatron_retrieval_model.py | 2 +- .../common/megatron/adapters/parallel_adapters.py | 2 +- .../modules/common/megatron/fused_layer_norm.py | 2 +- .../nlp/modules/common/megatron/layer_norm_1p.py | 3 ++- .../nlp/modules/common/megatron/megatron_init.py | 4 ++-- .../megatron/megatron_perceiver_encoders.py | 2 +- .../nlp/modules/common/megatron/mlp.py | 2 +- .../megatron/token_level_encoder_decoder.py | 2 +- .../nlp/modules/common/megatron/transformer.py | 4 ++-- .../nlp/modules/common/megatron/utils.py | 4 ++-- .../megatron/vocab_parallel_cross_entropy.py | 8 +++++--- .../nlp/modules/common/prompt_encoder.py | 2 +- .../modules/common/text_generation_strategy.py | 6 +++--- nemo/core/optim/optimizer_with_main_params.py | 4 ++-- nemo/core/optim/optimizers.py | 3 +-- nemo/utils/export_utils.py | 4 ++-- nemo_text_processing/g2p/modules.py | 2 +- .../text_normalization/normalize.py | 2 +- requirements/requirements_test.txt | 2 +- setup.cfg | 15 ++++++++++----- setup.py | 7 +------ tests/collections/common/test_metrics.py | 3 ++- tests/conftest.py | 2 +- .../de/test_normalization_with_audio.py | 3 ++- tools/speech_data_explorer/data_explorer.py | 5 +++-- 37 files changed, 72 insertions(+), 75 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 11def93ec0a3..fd89d3983cc5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,11 +32,10 @@ repos: - id: requirements-txt-fixer - repo: https://github.com/PyCQA/isort - rev: 4.3.21 + rev: 5.12.0 hooks: - id: isort name: Format imports - args: [ --multi-line=3, --trailing-comma, --force-grid-wrap=0, --use-parentheses, --line-width=119, -rc, -ws ] exclude: docs/ - repo: https://github.com/psf/black diff --git a/nemo/collections/asr/losses/rnnt.py b/nemo/collections/asr/losses/rnnt.py index 50f955d36551..59b7c5ca5579 100644 --- a/nemo/collections/asr/losses/rnnt.py +++ b/nemo/collections/asr/losses/rnnt.py @@ -48,7 +48,7 @@ WARP_RNNT_AVAILABLE = False try: - from nemo.collections.asr.parts.numba.rnnt_loss import RNNTLossNumba, MultiblankRNNTLossNumba + from nemo.collections.asr.parts.numba.rnnt_loss import MultiblankRNNTLossNumba, RNNTLossNumba NUMBA_RNNT_AVAILABLE = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/asr/modules/flashlight_decoder.py b/nemo/collections/asr/modules/flashlight_decoder.py index b595197860da..35c883907616 100644 --- a/nemo/collections/asr/modules/flashlight_decoder.py +++ b/nemo/collections/asr/modules/flashlight_decoder.py @@ -99,18 +99,18 @@ def __init__( ): try: - from flashlight.lib.text.dictionary import create_word_dict, load_words from flashlight.lib.sequence.criterion import get_data_ptr_as_bytes from flashlight.lib.text.decoder import ( + LM, CriterionType, - LexiconDecoderOptions, KenLM, - LM, + LexiconDecoder, + LexiconDecoderOptions, LMState, SmearingMode, Trie, - LexiconDecoder, ) + from flashlight.lib.text.dictionary import create_word_dict, load_words except ModuleNotFoundError: raise ModuleNotFoundError( "FlashLightKenLMBeamSearchDecoder requires the installation of flashlight python bindings " diff --git a/nemo/collections/asr/parts/utils/asr_confidence_utils.py b/nemo/collections/asr/parts/utils/asr_confidence_utils.py index 10af662e8d04..0891ea7312d0 100644 --- a/nemo/collections/asr/parts/utils/asr_confidence_utils.py +++ b/nemo/collections/asr/parts/utils/asr_confidence_utils.py @@ -147,8 +147,8 @@ def get_confidence_aggregation_bank(): if hasattr(math, "prod"): confidence_aggregation_bank["prod"] = math.prod else: - from functools import reduce import operator + from functools import reduce confidence_aggregation_bank["prod"] = lambda x: reduce(operator.mul, x, 1) return confidence_aggregation_bank diff --git a/nemo/collections/nlp/data/language_modeling/megatron/blendable_dataset.py b/nemo/collections/nlp/data/language_modeling/megatron/blendable_dataset.py index cd37c7b9d3bf..35cfd3457031 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/blendable_dataset.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/blendable_dataset.py @@ -146,7 +146,6 @@ def __getitem__(self, idx): def test_index_blending(cls): """Visualize indices of blended dataset""" - import torch import matplotlib.pyplot as plt plt.ion() diff --git a/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py b/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py index 824c94b02aaf..7daca9a6cf6d 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/dataset_utils.py @@ -611,11 +611,11 @@ def get_dataset( raise ValueError("Invalid dataset_type: ", dataset_type) # from nemo.collections.nlp.data.language_modeling.megatron.ict_dataset import ICTDataset + from nemo.collections.nlp.data.language_modeling.megatron.bart_dataset import BARTDataset from nemo.collections.nlp.data.language_modeling.megatron.bert_dataset import BertDataset + from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution from nemo.collections.nlp.data.language_modeling.megatron.t5_dataset import T5Dataset from nemo.collections.nlp.data.language_modeling.megatron.ul2_dataset import UL2Dataset - from nemo.collections.nlp.data.language_modeling.megatron.bart_dataset import BARTDataset - from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution if dataset_type == DSET_TYPE_ICT: raise NotImplementedError("ICT dataset is not implemented yet.") @@ -1119,11 +1119,11 @@ def print_split_stats(name, index): def build_dataset(index, name): # from nemo.collections.nlp.data.language_modeling.megatron.ict_dataset import ICTDataset + from nemo.collections.nlp.data.language_modeling.megatron.bart_dataset import BARTDataset from nemo.collections.nlp.data.language_modeling.megatron.bert_dataset import BertDataset + from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution from nemo.collections.nlp.data.language_modeling.megatron.t5_dataset import T5Dataset from nemo.collections.nlp.data.language_modeling.megatron.ul2_dataset import UL2Dataset - from nemo.collections.nlp.data.language_modeling.megatron.bart_dataset import BARTDataset - from nemo.collections.nlp.data.language_modeling.megatron.length_distribution_type import LengthDistribution dataset = None if splits[index + 1] > splits[index]: diff --git a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py index 762af41c65e9..009eb2629dd2 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron/bert_model.py @@ -34,7 +34,6 @@ from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import AttnMaskType from apex.transformer.tensor_parallel.layers import set_tensor_model_parallel_attributes - from apex.transformer import tensor_parallel HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/models/language_modeling/megatron/gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron/gpt_model.py index 6fc11f091fa2..9a30c34325d2 100755 --- a/nemo/collections/nlp/models/language_modeling/megatron/gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron/gpt_model.py @@ -26,7 +26,7 @@ ) try: - from apex.transformer import tensor_parallel, parallel_state + from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import AttnMaskType HAVE_APEX = True diff --git a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py index babcc7c4b26c..ebcae544436a 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py @@ -39,15 +39,14 @@ try: from apex.transformer import parallel_state - from apex.transformer.pipeline_parallel.schedules.common import build_model from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining - from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( - forward_backward_pipelining_without_interleaving, - ) from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_with_interleaving import ( _forward_backward_pipelining_with_interleaving, ) + from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( + forward_backward_pipelining_without_interleaving, + ) HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py index 442086e19ad3..dba0759e5928 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py @@ -53,13 +53,13 @@ try: from apex.transformer import parallel_state from apex.transformer.pipeline_parallel.schedules.common import build_model - from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( - forward_backward_pipelining_without_interleaving, - ) + from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_with_interleaving import ( _forward_backward_pipelining_with_interleaving, ) - from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining + from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( + forward_backward_pipelining_without_interleaving, + ) HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py index 3fb38a4cd2bc..6a9adfd3a3d3 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py @@ -50,14 +50,11 @@ try: from apex.transformer import parallel_state, tensor_parallel + from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( forward_backward_pipelining_without_interleaving, ) - from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining - from apex.transformer.pipeline_parallel.utils import ( - _reconfigure_microbatch_calculator, - get_micro_batch_size, - ) + from apex.transformer.pipeline_parallel.utils import _reconfigure_microbatch_calculator, get_micro_batch_size HAVE_APEX = True diff --git a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py index f389c6518f46..dfc7e1c7ff75 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_lm_encoder_decoder_model.py @@ -42,16 +42,15 @@ try: from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import ModelType - from apex.transformer import parallel_state, tensor_parallel from apex.transformer.pipeline_parallel.schedules.common import build_model from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( forward_backward_pipelining_without_interleaving, ) from apex.transformer.pipeline_parallel.utils import ( - get_num_microbatches, _reconfigure_microbatch_calculator, get_micro_batch_size, + get_num_microbatches, ) HAVE_APEX = True diff --git a/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py b/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py index ddb52c2ab9ba..d1c7b32ae77c 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_retrieval_model.py @@ -60,8 +60,8 @@ from nemo.utils import AppState, logging try: - from apex.transformer.enums import ModelType from apex.transformer import parallel_state + from apex.transformer.enums import ModelType HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/modules/common/megatron/adapters/parallel_adapters.py b/nemo/collections/nlp/modules/common/megatron/adapters/parallel_adapters.py index e8e9fa24d008..fcf416a4d7fb 100644 --- a/nemo/collections/nlp/modules/common/megatron/adapters/parallel_adapters.py +++ b/nemo/collections/nlp/modules/common/megatron/adapters/parallel_adapters.py @@ -28,8 +28,8 @@ from nemo.core.classes.mixins import adapter_mixin_strategies try: - from apex.transformer.tensor_parallel import RowParallelLinear, ColumnParallelLinear from apex.normalization.fused_layer_norm import MixedFusedLayerNorm + from apex.transformer.tensor_parallel import ColumnParallelLinear, RowParallelLinear HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/megatron/fused_layer_norm.py b/nemo/collections/nlp/modules/common/megatron/fused_layer_norm.py index 7aa401082b43..0a5eebe42d11 100644 --- a/nemo/collections/nlp/modules/common/megatron/fused_layer_norm.py +++ b/nemo/collections/nlp/modules/common/megatron/fused_layer_norm.py @@ -15,8 +15,8 @@ try: - from apex.transformer.layers.layer_norm import FastLayerNorm from apex.normalization.fused_layer_norm import MixedFusedLayerNorm + from apex.transformer.layers.layer_norm import FastLayerNorm HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/modules/common/megatron/layer_norm_1p.py b/nemo/collections/nlp/modules/common/megatron/layer_norm_1p.py index 2052f5afc441..ca59bcc8850a 100644 --- a/nemo/collections/nlp/modules/common/megatron/layer_norm_1p.py +++ b/nemo/collections/nlp/modules/common/megatron/layer_norm_1p.py @@ -16,7 +16,8 @@ from torch import nn try: - from apex.contrib.layer_norm.layer_norm import _fast_layer_norm, FastLayerNorm as OrigFastLayerNorm + from apex.contrib.layer_norm.layer_norm import FastLayerNorm as OrigFastLayerNorm + from apex.contrib.layer_norm.layer_norm import _fast_layer_norm from apex.transformer.layers.layer_norm import FastLayerNorm HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/megatron/megatron_init.py b/nemo/collections/nlp/modules/common/megatron/megatron_init.py index e64f8760c3d1..2d34307a0416 100644 --- a/nemo/collections/nlp/modules/common/megatron/megatron_init.py +++ b/nemo/collections/nlp/modules/common/megatron/megatron_init.py @@ -22,16 +22,16 @@ try: from apex.transformer import tensor_parallel from apex.transformer.log_util import set_logging_level + from apex.transformer.microbatches import ConstantNumMicroBatches from apex.transformer.parallel_state import ( get_pipeline_model_parallel_rank, set_pipeline_model_parallel_rank, - set_virtual_pipeline_model_parallel_rank, set_pipeline_model_parallel_split_rank, set_pipeline_model_parallel_world_size, set_tensor_model_parallel_rank, set_tensor_model_parallel_world_size, + set_virtual_pipeline_model_parallel_rank, ) - from apex.transformer.microbatches import ConstantNumMicroBatches from apex.transformer.pipeline_parallel.utils import setup_microbatch_calculator HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/megatron/megatron_perceiver_encoders.py b/nemo/collections/nlp/modules/common/megatron/megatron_perceiver_encoders.py index 9d9026132062..73774573596d 100644 --- a/nemo/collections/nlp/modules/common/megatron/megatron_perceiver_encoders.py +++ b/nemo/collections/nlp/modules/common/megatron/megatron_perceiver_encoders.py @@ -26,8 +26,8 @@ ) try: - from apex.transformer.enums import AttnMaskType, ModelType from apex.normalization import MixedFusedRMSNorm + from apex.transformer.enums import AttnMaskType, ModelType HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/modules/common/megatron/mlp.py b/nemo/collections/nlp/modules/common/megatron/mlp.py index 940d75ce7548..a6afa54e49a7 100644 --- a/nemo/collections/nlp/modules/common/megatron/mlp.py +++ b/nemo/collections/nlp/modules/common/megatron/mlp.py @@ -29,9 +29,9 @@ from nemo.core import adapter_mixins try: + from apex.normalization import MixedFusedRMSNorm from apex.transformer import parallel_state, tensor_parallel from apex.transformer.parallel_state import get_tensor_model_parallel_world_size - from apex.normalization import MixedFusedRMSNorm HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py b/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py index 68ca6460a4c0..acb61d421e03 100644 --- a/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py +++ b/nemo/collections/nlp/modules/common/megatron/token_level_encoder_decoder.py @@ -37,7 +37,7 @@ from nemo.collections.nlp.modules.common.megatron.vocab_parallel_cross_entropy import vocab_parallel_cross_entropy try: - from apex.transformer import tensor_parallel, parallel_state + from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import AttnMaskType, ModelType HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/megatron/transformer.py b/nemo/collections/nlp/modules/common/megatron/transformer.py index eaaf3e54cdaa..7ff1b584970a 100644 --- a/nemo/collections/nlp/modules/common/megatron/transformer.py +++ b/nemo/collections/nlp/modules/common/megatron/transformer.py @@ -42,9 +42,9 @@ from nemo.utils import logging try: + from apex.normalization import MixedFusedRMSNorm from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import AttnMaskType, AttnType, ModelType - from apex.normalization import MixedFusedRMSNorm HAVE_APEX = True @@ -56,8 +56,8 @@ ModelType = AttnMaskType = AttnType = LayerType = ApexGuardDefaults() try: - from transformer_engine.pytorch import TransformerLayer, fp8_autocast from transformer_engine.common import recipe + from transformer_engine.pytorch import TransformerLayer, fp8_autocast from transformer_engine.pytorch.distributed import checkpoint as te_checkpoint HAVE_TE = True diff --git a/nemo/collections/nlp/modules/common/megatron/utils.py b/nemo/collections/nlp/modules/common/megatron/utils.py index fcd7861439a3..8e6ef00f2a6e 100644 --- a/nemo/collections/nlp/modules/common/megatron/utils.py +++ b/nemo/collections/nlp/modules/common/megatron/utils.py @@ -20,13 +20,13 @@ import torch try: - from apex.normalization.fused_layer_norm import FusedLayerNorm # NOQA from apex.normalization import MixedFusedRMSNorm + from apex.normalization.fused_layer_norm import FusedLayerNorm # NOQA from apex.transformer import parallel_state, tensor_parallel from apex.transformer.enums import AttnMaskType + from apex.transformer.layers.layer_norm import FastLayerNorm from apex.transformer.pipeline_parallel.schedules.common import listify_model from apex.transformer.tensor_parallel.layers import linear_with_grad_accumulation_and_async_allreduce - from apex.transformer.layers.layer_norm import FastLayerNorm HAVE_APEX = True except (ImportError, ModuleNotFoundError): diff --git a/nemo/collections/nlp/modules/common/megatron/vocab_parallel_cross_entropy.py b/nemo/collections/nlp/modules/common/megatron/vocab_parallel_cross_entropy.py index 18cdf415c696..a1b09ea85354 100644 --- a/nemo/collections/nlp/modules/common/megatron/vocab_parallel_cross_entropy.py +++ b/nemo/collections/nlp/modules/common/megatron/vocab_parallel_cross_entropy.py @@ -14,9 +14,11 @@ import torch try: - from apex.transformer.parallel_state import get_tensor_model_parallel_group - from apex.transformer.parallel_state import get_tensor_model_parallel_rank - from apex.transformer.parallel_state import get_tensor_model_parallel_world_size + from apex.transformer.parallel_state import ( + get_tensor_model_parallel_group, + get_tensor_model_parallel_rank, + get_tensor_model_parallel_world_size, + ) from apex.transformer.tensor_parallel.utils import VocabUtility HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/prompt_encoder.py b/nemo/collections/nlp/modules/common/prompt_encoder.py index 835a09f6703c..edc1b2bf8c6d 100644 --- a/nemo/collections/nlp/modules/common/prompt_encoder.py +++ b/nemo/collections/nlp/modules/common/prompt_encoder.py @@ -25,7 +25,7 @@ from nemo.core.neural_types import ChannelType, NeuralType try: - from apex.transformer import tensor_parallel, parallel_state + from apex.transformer import parallel_state, tensor_parallel HAVE_APEX = True diff --git a/nemo/collections/nlp/modules/common/text_generation_strategy.py b/nemo/collections/nlp/modules/common/text_generation_strategy.py index e124a5803079..b78776da43af 100644 --- a/nemo/collections/nlp/modules/common/text_generation_strategy.py +++ b/nemo/collections/nlp/modules/common/text_generation_strategy.py @@ -21,10 +21,10 @@ from nemo.collections.nlp.modules.common.megatron.utils import get_ltor_masks_and_position_ids try: + from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining from apex.transformer.pipeline_parallel.schedules.fwd_bwd_pipelining_without_interleaving import ( forward_backward_pipelining_without_interleaving, ) - from apex.transformer.pipeline_parallel.schedules.fwd_bwd_no_pipelining import forward_backward_no_pipelining HAVE_APEX = True except (ImportError, ModuleNotFoundError): @@ -275,15 +275,15 @@ def post_process(self, tokens: torch.Tensor, new_tokens: torch.Tensor, context_l def model_inference_strategy_dispatcher(model, **args): + from nemo.collections.nlp.models.language_modeling.megatron_gpt_model import MegatronGPTModel from nemo.collections.nlp.models.language_modeling.megatron_gpt_prompt_learning_model import ( MegatronGPTPromptLearningModel, ) - from nemo.collections.nlp.models.language_modeling.megatron_gpt_model import MegatronGPTModel from nemo.collections.nlp.models.language_modeling.megatron_retrieval_model import MegatronRetrievalModel from nemo.collections.nlp.modules.common.retro_inference_strategies import ( + RetroFileQAModelTextGenerationStrategy, RetroModelTextGenerationStrategy, RetroQAModelTextGenerationStrategy, - RetroFileQAModelTextGenerationStrategy, ) if isinstance(model, MegatronGPTPromptLearningModel): diff --git a/nemo/core/optim/optimizer_with_main_params.py b/nemo/core/optim/optimizer_with_main_params.py index fe7ed0e5bf1f..ab8fc68c938e 100644 --- a/nemo/core/optim/optimizer_with_main_params.py +++ b/nemo/core/optim/optimizer_with_main_params.py @@ -19,10 +19,10 @@ from nemo.utils import logging try: + import amp_C from apex.multi_tensor_apply import multi_tensor_applier - from apex.transformer.parallel_state import get_data_parallel_world_size, get_data_parallel_group + from apex.transformer.parallel_state import get_data_parallel_group, get_data_parallel_world_size from apex.transformer.tensor_parallel import copy_tensor_model_parallel_attributes - import amp_C HAVE_APEX = True diff --git a/nemo/core/optim/optimizers.py b/nemo/core/optim/optimizers.py index fd9f1b4672ea..76e47e20e0cc 100644 --- a/nemo/core/optim/optimizers.py +++ b/nemo/core/optim/optimizers.py @@ -43,8 +43,7 @@ } try: - from apex.optimizers import FusedLAMB - from apex.optimizers import FusedAdam + from apex.optimizers import FusedAdam, FusedLAMB HAVE_APEX = True diff --git a/nemo/utils/export_utils.py b/nemo/utils/export_utils.py index 93b939c3b426..12dd5dffa0e7 100644 --- a/nemo/utils/export_utils.py +++ b/nemo/utils/export_utils.py @@ -207,10 +207,10 @@ def run_ort_and_compare(sess, ort_input, output_example, check_tolerance=0.01): apex_available = True try: - from apex.normalization.fused_layer_norm import FusedLayerNorm, MixedFusedLayerNorm from apex.contrib.layer_norm.layer_norm import FastLayerNorm - from apex.transformer.tensor_parallel.layers import RowParallelLinear, ColumnParallelLinear + from apex.normalization.fused_layer_norm import FusedLayerNorm, MixedFusedLayerNorm from apex.transformer.functional.fused_softmax import FusedScaleMaskSoftmax + from apex.transformer.tensor_parallel.layers import ColumnParallelLinear, RowParallelLinear def replace_FusedLayerNorm(n: nn.Module) -> Optional[nn.LayerNorm]: """ diff --git a/nemo_text_processing/g2p/modules.py b/nemo_text_processing/g2p/modules.py index ceac30147572..8b80eef3646a 100644 --- a/nemo_text_processing/g2p/modules.py +++ b/nemo_text_processing/g2p/modules.py @@ -744,7 +744,7 @@ def __init__( self.word_segmenter = lambda x: [x] try: - from pypinyin import lazy_pinyin, Style + from pypinyin import Style, lazy_pinyin from pypinyin_dict.pinyin_data import cc_cedict except ImportError as e: logging.error(e) diff --git a/nemo_text_processing/text_normalization/normalize.py b/nemo_text_processing/text_normalization/normalize.py index 1511a9fbfea9..e1a57e01d5bf 100644 --- a/nemo_text_processing/text_normalization/normalize.py +++ b/nemo_text_processing/text_normalization/normalize.py @@ -75,8 +75,8 @@ def __init__( self.post_processor = None if lang == "en": - from nemo_text_processing.text_normalization.en.verbalizers.verbalize_final import VerbalizeFinalFst from nemo_text_processing.text_normalization.en.verbalizers.post_processing import PostProcessingFst + from nemo_text_processing.text_normalization.en.verbalizers.verbalize_final import VerbalizeFinalFst if post_process: self.post_processor = PostProcessingFst(cache_dir=cache_dir, overwrite_cache=overwrite_cache) diff --git a/requirements/requirements_test.txt b/requirements/requirements_test.txt index f94f10877984..d21ecf293e94 100644 --- a/requirements/requirements_test.txt +++ b/requirements/requirements_test.txt @@ -1,6 +1,6 @@ black==19.10b0 click==8.0.2 -isort[requirements] < 5 +isort>5 parameterized pytest pytest-runner diff --git a/setup.cfg b/setup.cfg index f13e3f8bd98b..9abb6a701f11 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,9 +30,14 @@ markers = skipduringci: marks tests that are skipped ci as they are addressed by Jenkins jobs but should be run to test user setups pleasefixme: marks tests that are broken and need fixing + [isort] -known_localfolder = nemo,tests -sections = FUTURE,STDLIB,THIRDPARTY,LOCALFOLDER -default_section = THIRDPARTY -#TODO tests/unit/core/test_deploy_export.py gets screwed by isort -skip = setup.py, docs/source/conf.py, nemo/utils/__init__.py, tests/unit/core/test_deploy_export.py +profile=black +line_length=119 +ignore_whitespace=true +py_version=38 +known_first_party=nemo +known_third_party=nemo_text_processing,examples,scripts +sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER +default_section=THIRDPARTY +extend_skip=setup.py,docs/source/conf.py diff --git a/setup.py b/setup.py index c4afb1c4a343..dc4ecc29312a 100644 --- a/setup.py +++ b/setup.py @@ -143,12 +143,7 @@ def req_file(filename, folder="requirements"): class StyleCommand(distutils_cmd.Command): __LINE_WIDTH = 119 - __ISORT_BASE = ( - 'isort ' - # These two lines makes isort compatible with black. - '--multi-line=3 --trailing-comma --force-grid-wrap=0 ' - f'--use-parentheses --line-width={__LINE_WIDTH} -rc -ws' - ) + __ISORT_BASE = 'isort ' __BLACK_BASE = f'black --skip-string-normalization --line-length={__LINE_WIDTH}' description = 'Checks overall project code style.' user_options = [ diff --git a/tests/collections/common/test_metrics.py b/tests/collections/common/test_metrics.py index 6729ae33396e..e4bfde635a06 100644 --- a/tests/collections/common/test_metrics.py +++ b/tests/collections/common/test_metrics.py @@ -15,10 +15,11 @@ import pytest import torch +from nemo.collections.common.metrics.classification_accuracy import TopKClassificationAccuracy + from .loss_inputs import ALL_NUM_MEASUREMENTS_ARE_ZERO, NO_ZERO_NUM_MEASUREMENTS, SOME_NUM_MEASUREMENTS_ARE_ZERO from .perplexity_inputs import NO_PROBS_NO_LOGITS, ONLY_LOGITS1, ONLY_LOGITS100, ONLY_PROBS, PROBS_AND_LOGITS from .pl_utils import LossTester, PerplexityTester -from nemo.collections.common.metrics.classification_accuracy import TopKClassificationAccuracy class TestCommonMetrics: diff --git a/tests/conftest.py b/tests/conftest.py index e01fad2e0f47..206dad62f939 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -233,7 +233,7 @@ def pytest_configure(config): numba_utils.set_numba_compat_strictness(strict=config.option.relax_numba_compat) # Set cache directory for TN/ITN tests - from .nemo_text_processing.utils import set_cache_dir, set_audio_based_tests + from .nemo_text_processing.utils import set_audio_based_tests, set_cache_dir set_cache_dir(config.option.tn_cache_dir) set_audio_based_tests(config.option.run_audio_based) diff --git a/tests/nemo_text_processing/de/test_normalization_with_audio.py b/tests/nemo_text_processing/de/test_normalization_with_audio.py index 6e17d5d049ab..032d0ebf555f 100644 --- a/tests/nemo_text_processing/de/test_normalization_with_audio.py +++ b/tests/nemo_text_processing/de/test_normalization_with_audio.py @@ -15,9 +15,10 @@ import pytest from parameterized import parameterized -from ..utils import CACHE_DIR, get_test_cases_multiple from nemo.utils import logging +from ..utils import CACHE_DIR, get_test_cases_multiple + try: from nemo_text_processing.text_normalization.normalize_with_audio import NormalizerWithAudio diff --git a/tools/speech_data_explorer/data_explorer.py b/tools/speech_data_explorer/data_explorer.py index 3602c369b135..23ea375fa608 100755 --- a/tools/speech_data_explorer/data_explorer.py +++ b/tools/speech_data_explorer/data_explorer.py @@ -972,9 +972,10 @@ def prepare_data(df, name1=model_name_1, name2=model_name_2): prevent_initial_call=False, ) def draw_vocab(Ox, Oy, color, size, data, dot_spacing='no', rad=0.01): - import pandas as pd - import random import math + import random + + import pandas as pd df = pd.DataFrame.from_records(data) From 6d49a7baa6e42396d7f1cf4b60375e1ad68d9da8 Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Fri, 3 Feb 2023 23:28:54 +0400 Subject: [PATCH 34/73] Pin isort version (#5914) Signed-off-by: Vladimir Bataev Signed-off-by: Jason --- requirements/requirements_test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements_test.txt b/requirements/requirements_test.txt index d21ecf293e94..38bb39dcda02 100644 --- a/requirements/requirements_test.txt +++ b/requirements/requirements_test.txt @@ -1,6 +1,6 @@ black==19.10b0 click==8.0.2 -isort>5 +isort>5.1.0,<6.0.0 parameterized pytest pytest-runner From fe6d14f61febb210eb2d16c349e9beafdf6b808e Mon Sep 17 00:00:00 2001 From: Jocelyn Date: Fri, 3 Feb 2023 11:37:09 -0800 Subject: [PATCH 35/73] Moved eval notebook data to aws (#5911) Signed-off-by: Jocelyn Huang Signed-off-by: Jason --- .../Evaluation_MelCepstralDistortion.ipynb | 35 ++++++------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/tutorials/tts/Evaluation_MelCepstralDistortion.ipynb b/tutorials/tts/Evaluation_MelCepstralDistortion.ipynb index eeae964c85a1..699f1b131408 100644 --- a/tutorials/tts/Evaluation_MelCepstralDistortion.ipynb +++ b/tutorials/tts/Evaluation_MelCepstralDistortion.ipynb @@ -188,23 +188,7 @@ "id": "6efac554", "metadata": {}, "source": [ - "For this tutorial, we have already generated mels from trained [FastPitch](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/tts_en_fastpitch) and [RAD-TTS](https://github.com/NVIDIA/radtts) models, and we have the ground truth sample that they correspond to. We'll untar them from `.../NeMo/tutorials/tts/audio_samples/MCD_DTW_examples.tar`.\n", - "\n", - "(Note: If you are using Google Colab, you will need to uncomment and run the following cell to download them, first.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b4847fbc", - "metadata": {}, - "outputs": [], - "source": [ - "# Uncomment and run if using Colab\n", - "\n", - "# !wget https://raw.githubusercontent.com/nvidia/NeMo/$BRANCH/tutorials/tts/audio_samples/MCD_DTW_examples.tar\n", - "# !mkdir audio_samples/\n", - "# !mv MCD_DTW_examples.tar audio_samples/" + "For this tutorial, we have already generated mels from trained [FastPitch](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/tts_en_fastpitch) and [RAD-TTS](https://github.com/NVIDIA/radtts) models, and we have the ground truth sample that they correspond to. Let's first download the tarball with the data and expand it." ] }, { @@ -215,7 +199,8 @@ "outputs": [], "source": [ "# Untar the example files.\n", - "! cd audio_samples/ && tar -xvf MCD_DTW_examples.tar && cd .." + "!wget https://tts-tutorial-data.s3.us-east-2.amazonaws.com/MCD_DTW_examples.tar\n", + "!tar -xvf MCD_DTW_examples.tar" ] }, { @@ -236,8 +221,8 @@ "outputs": [], "source": [ "## Generate spectrograms\n", - "gt_mels = wav2mel(\"audio_samples/MCD_DTW/gt/sample_0.wav\")\n", - "synt_mels = np.load(\"audio_samples/MCD_DTW/fastpitch/mels/mels_0.npy\")\n", + "gt_mels = wav2mel(\"MCD_DTW/gt/sample_0.wav\")\n", + "synt_mels = np.load(\"MCD_DTW/fastpitch/mels/mels_0.npy\")\n", "\n", "## Generate MFCCs\n", "gt_mfcc = mel2mfcc(gt_mels)\n", @@ -262,11 +247,11 @@ "outputs": [], "source": [ "print(\"Ground truth audio:\")\n", - "audio_gt, sr_gt = librosa.load(\"audio_samples/MCD_DTW/gt/sample_0.wav\")\n", + "audio_gt, sr_gt = librosa.load(\"MCD_DTW/gt/sample_0.wav\")\n", "ipd.display(ipd.Audio(audio_gt, rate=sr_gt))\n", "\n", "print(\"Synthesized audio:\")\n", - "audio_fp, sr_fp = librosa.load(\"audio_samples/MCD_DTW/fastpitch/audio/sample_0.wav\")\n", + "audio_fp, sr_fp = librosa.load(\"MCD_DTW/fastpitch/audio/sample_0.wav\")\n", "ipd.display(ipd.Audio(audio_fp, rate=sr_fp))" ] }, @@ -537,9 +522,9 @@ "outputs": [], "source": [ "%%capture --no-display\n", - "mels_dir_m1 = \"audio_samples/MCD_DTW/fastpitch/mels/\"\n", - "mels_dir_m2 = \"audio_samples/MCD_DTW/radtts/mels/\"\n", - "mels_dir_gt = \"audio_samples/MCD_DTW/gt/\"\n", + "mels_dir_m1 = \"MCD_DTW/fastpitch/mels/\"\n", + "mels_dir_m2 = \"MCD_DTW/radtts/mels/\"\n", + "mels_dir_gt = \"MCD_DTW/gt/\"\n", "\n", "mcds_m1 = cal_mcd_dir(mels_dir_m1, mels_dir_gt) # FastPitch\n", "mcds_m2 = cal_mcd_dir(mels_dir_m2, mels_dir_gt) # RAD-TTS" From c99a261f5ce3d816caf99f9723b5a48b190b2ef2 Mon Sep 17 00:00:00 2001 From: Mohamed Saad Ibn Seddik Date: Fri, 3 Feb 2023 15:21:35 -0500 Subject: [PATCH 36/73] FilterbankFeaturesTA to match FilterbankFeatures (#5913) Signed-off-by: Mohamed Saad Ibn Seddik Signed-off-by: Jason --- .../asr/parts/preprocessing/features.py | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/nemo/collections/asr/parts/preprocessing/features.py b/nemo/collections/asr/parts/preprocessing/features.py index 1a33bca05a47..00452978f554 100644 --- a/nemo/collections/asr/parts/preprocessing/features.py +++ b/nemo/collections/asr/parts/preprocessing/features.py @@ -529,22 +529,22 @@ def __init__( if window not in self.torch_windows: raise ValueError(f"Got window value '{window}' but expected a member of {self.torch_windows.keys()}") - self._win_length = n_window_size - self._hop_length = n_window_stride + self.win_length = n_window_size + self.hop_length = n_window_stride self._sample_rate = sample_rate self._normalize_strategy = normalize self._use_log = log self._preemphasis_value = preemph - self._log_zero_guard_type = log_zero_guard_type - self._log_zero_guard_value: Union[str, float] = log_zero_guard_value - self._dither_value = dither - self._pad_to = pad_to - self._pad_value = pad_value - self._num_fft = n_fft + self.log_zero_guard_type = log_zero_guard_type + self.log_zero_guard_value: Union[str, float] = log_zero_guard_value + self.dither = dither + self.pad_to = pad_to + self.pad_value = pad_value + self.n_fft = n_fft self._mel_spec_extractor: torchaudio.transforms.MelSpectrogram = torchaudio.transforms.MelSpectrogram( sample_rate=self._sample_rate, - win_length=self._win_length, - hop_length=self._hop_length, + win_length=self.win_length, + hop_length=self.hop_length, n_mels=nfilt, window_fn=self.torch_windows[window], mel_scale="slaney", @@ -561,13 +561,13 @@ def filter_banks(self): return self._mel_spec_extractor.mel_scale.fb def _resolve_log_zero_guard_value(self, dtype: torch.dtype) -> float: - if isinstance(self._log_zero_guard_value, float): - return self._log_zero_guard_value - return getattr(torch.finfo(dtype), self._log_zero_guard_value) + if isinstance(self.log_zero_guard_value, float): + return self.log_zero_guard_value + return getattr(torch.finfo(dtype), self.log_zero_guard_value) def _apply_dithering(self, signals: torch.Tensor) -> torch.Tensor: - if self.training and self._dither_value > 0.0: - noise = torch.randn_like(signals) * self._dither_value + if self.training and self.dither > 0.0: + noise = torch.randn_like(signals) * self.dither signals = signals + noise return signals @@ -578,25 +578,25 @@ def _apply_preemphasis(self, signals: torch.Tensor) -> torch.Tensor: return signals def _compute_output_lengths(self, input_lengths: torch.Tensor) -> torch.Tensor: - out_lengths = input_lengths.div(self._hop_length, rounding_mode="floor").add(1).long() + out_lengths = input_lengths.div(self.hop_length, rounding_mode="floor").add(1).long() return out_lengths def _apply_pad_to(self, features: torch.Tensor) -> torch.Tensor: # Only apply during training; else need to capture dynamic shape for exported models - if not self.training or self._pad_to == 0 or features.shape[-1] % self._pad_to == 0: + if not self.training or self.pad_to == 0 or features.shape[-1] % self.pad_to == 0: return features - pad_length = self._pad_to - (features.shape[-1] % self._pad_to) - return torch.nn.functional.pad(features, pad=(0, pad_length), value=self._pad_value) + pad_length = self.pad_to - (features.shape[-1] % self.pad_to) + return torch.nn.functional.pad(features, pad=(0, pad_length), value=self.pad_value) def _apply_log(self, features: torch.Tensor) -> torch.Tensor: if self._use_log: zero_guard = self._resolve_log_zero_guard_value(features.dtype) - if self._log_zero_guard_type == "add": + if self.log_zero_guard_type == "add": features = features + zero_guard - elif self._log_zero_guard_type == "clamp": + elif self.log_zero_guard_type == "clamp": features = features.clamp(min=zero_guard) else: - raise ValueError(f"Unsupported log zero guard type: '{self._log_zero_guard_type}'") + raise ValueError(f"Unsupported log zero guard type: '{self.log_zero_guard_type}'") features = features.log() return features From dc03d177918eb4bd408e41506db3fb8d5a466db1 Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Fri, 3 Feb 2023 12:32:27 -0800 Subject: [PATCH 37/73] fixed missing long_description_content_type (#5909) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index dc4ecc29312a..517a81df7400 100644 --- a/setup.py +++ b/setup.py @@ -58,6 +58,7 @@ else: long_description = 'See ' + __homepage__ + long_description_content_type = "text/plain" ############################################################################### From 53636d747cd976aabd9ff6cc7b46234237b61e0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 14:10:57 -0700 Subject: [PATCH 38/73] added TPMLP for T5-based models (#5840) (#5841) Signed-off-by: David Mosallanezhad Co-authored-by: David Co-authored-by: David Mosallanezhad Co-authored-by: Eric Harper Signed-off-by: Jason --- .../megatron_base_prompt_learning_model.py | 29 ++++++++++++++----- .../megatron_gpt_prompt_learning_model.py | 4 --- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/nemo/collections/nlp/models/language_modeling/megatron_base_prompt_learning_model.py b/nemo/collections/nlp/models/language_modeling/megatron_base_prompt_learning_model.py index a99d6a9ce4b3..3da6516b4d85 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_base_prompt_learning_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_base_prompt_learning_model.py @@ -25,6 +25,7 @@ from nemo.collections.nlp.models.language_modeling.megatron_base_model import MegatronBaseModel from nemo.collections.nlp.modules.common import ( PromptEncoder, + PromptEncoderMLP, PromptEncoderType, PromptTable, VirtualPromptPlaceholderToken, @@ -211,14 +212,26 @@ def init_prompt_encoder(self): new_task = self.new_tasks[0] total_virtual_tokens = self.task_templates[new_task]["total_virtual_tokens"] - self.prompt_encoder = PromptEncoder( - encoder_type=PromptEncoderType(self.cfg.p_tuning.get("encoder_type", "mlp").lower()), - total_virtual_tokens=total_virtual_tokens, - token_dim=self.hidden_size, - hidden_size=self.cfg.p_tuning.get("encoder_hidden", self.hidden_size // 2), - lstm_dropout=self.cfg.p_tuning.get("dropout", 0.0), - num_layers=self.cfg.p_tuning.get("num_layers", 2), - ) + encoder_type = PromptEncoderType(self.cfg.p_tuning.get("encoder_type", "mlp").lower()) + self.prompt_encoder = None + if encoder_type == PromptEncoderType.TPMLP: + self.prompt_encoder = PromptEncoderMLP( + total_virtual_tokens=total_virtual_tokens, + hidden_size=self.cfg.p_tuning.get("encoder_hidden", 2048), + output_size=self.hidden_size, + init_std=self.cfg.p_tuning.get("init_std", 0.023), + ) + elif encoder_type == PromptEncoderType.LSTM or encoder_type == PromptEncoderType.MLP: + self.prompt_encoder = PromptEncoder( + encoder_type=PromptEncoderType(encoder_type), + total_virtual_tokens=total_virtual_tokens, + token_dim=self.hidden_size, + hidden_size=self.cfg.p_tuning.get("encoder_hidden", self.hidden_size // 2), + lstm_dropout=self.cfg.p_tuning.get("dropout", 0.0), + num_layers=self.cfg.p_tuning.get("num_layers", 2), + ) + else: + raise ValueError("Prompt encoder type not recognized. Please use one of MLP (recommended) or LSTM.") def add_ptuned_prompts_to_prompt_table(self): """ diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py index 6a9adfd3a3d3..77ab6f42fa71 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_prompt_learning_model.py @@ -294,10 +294,6 @@ def init_prompt_encoder(self): ) else: raise ValueError('not supported') - # cast the model weights to bf16 only for 'bf16' precision - # For fp16, cannot cast the model weights as AMP will complain - if self.trainer.precision == 'bf16': - self.prompt_encoder = self.prompt_encoder.to(dtype=self.autocast_dtype) def add_ptuned_prompts_to_prompt_table(self): """ From 0eca70a0d07246628c1da50ff5bba0f96fc5426b Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Sat, 4 Feb 2023 02:24:43 -0800 Subject: [PATCH 39/73] Fixing 0-size issue and ONNX BS>1 trace Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/models/radtts.py | 9 +++++---- nemo/collections/tts/modules/common.py | 20 +++++++++----------- nemo/collections/tts/modules/radtts.py | 2 +- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index 8ba85aec5ed0..19589d2874ea 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -442,11 +442,12 @@ def input_example(self, max_batch=1, max_dim=400): par = next(self.parameters()) sz = (max_batch, max_dim) # sz = (max_batch * max_dim,) - inp = torch.randint(8, 94, sz, device=par.device, dtype=torch.int64) + # Pick up only pronouncible tokens + inp = torch.randint(32, 64, sz, device=par.device, dtype=torch.int64) speaker = torch.randint(0, 1, (max_batch,), device=par.device, dtype=torch.int64) pitch = torch.randn(sz, device=par.device, dtype=torch.float32) * 0.5 - pace = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.1) - volume = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.1) + pace = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.2, max=2.0) + volume = torch.clamp(torch.randn(sz, device=par.device, dtype=torch.float32) * 0.1 + 1, min=0.2, max=2.0) # batch_lengths = torch.zeros((max_batch + 1), device=par.device, dtype=torch.int64) # left_over_size = sz[0] # batch_lengths[0] = 0 @@ -467,7 +468,7 @@ def input_example(self, max_batch=1, max_dim=400): lens = [] for i, _ in enumerate(inp): - len_i = random.randint(8, max_dim) + len_i = random.randint(64, max_dim) lens.append(len_i) inp[i, len_i:] = pad_id lens = torch.tensor(lens, device=par.device, dtype=torch.int32) diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 2d1bf1d70652..78e30c9a1cbd 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -88,7 +88,15 @@ def lstm_sorted(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, return nn.utils.rnn.pad_packed_sequence(ret, batch_first=True)[0] def lstm(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, Tensor]] = None) -> Tensor: + # To be ONNX-exportable, we need to sort here rather that while packing context, lens, unsort_ids = sort_tensor(context, lens) + # Calculate sizes and prepare views to our zero buffer to pass as hx + max_batch_size = context.shape[0] + common_shape = (self.bilstm.num_layers * 2, max_batch_size) + hx = ( + context.new_zeros(*common_shape, self.real_hidden_size), + context.new_zeros(*common_shape, self.bilstm.hidden_size), + ) ret = self.lstm_sorted(context, lens, hx=hx) return ret[unsort_ids] @@ -97,17 +105,7 @@ def lstm_torchscript(self, context: Tensor, lens: Tensor) -> Tensor: # autocast guard is only needed for Torchscript to run in Triton # (https://github.com/pytorch/pytorch/issues/89241) with torch.cuda.amp.autocast(enabled=False): - # Calculate sizes and prepare views to our zero buffer to pass as hx - # borisf : this hx WAR is only needed until https://github.com/pytorch/pytorch/issues/91526 gets merged - context = context.to(dtype=torch.float32) - max_batch_size = context.shape[0] - common_shape = (self.bilstm.num_layers * 2, max_batch_size) - hx = ( - context.new_zeros(*common_shape, self.real_hidden_size), - context.new_zeros(*common_shape, self.bilstm.hidden_size), - ) - ret = self.lstm(context, lens, hx=hx) - return ret.to(dtype=dtype) + return self.lstm(context.to(dtype=torch.float32), lens).to(dtype=dtype) def forward(self, context: Tensor, lens: Tensor) -> Tensor: self.bilstm.flatten_parameters() diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 8b94326346c6..5221a3442086 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -617,7 +617,7 @@ def infer( dur = self.dur_pred_layer.infer(txt_enc, spk_vec_text, lens=in_lens) dur = pad_dur(dur, txt_enc) dur = dur[:, 0] - dur = dur.clamp(0, token_duration_max) + dur = dur.clamp(1, token_duration_max) txt_len_pad_removed = txt_enc.shape[2] if pace is None: From 971d5be67f10dbc7bdaa71d2e62ce5245499fe4d Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Mon, 6 Feb 2023 14:00:20 -0800 Subject: [PATCH 40/73] Fixing code scan alert Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/modules/radtts.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 5221a3442086..1b95b1d3465c 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -443,6 +443,7 @@ def forward( attn = None attn_soft = None attn_hard = None + attn_logprob = None if 'atn' in self.include_modules or 'dec' in self.include_modules: # make sure to do the alignments before folding attn_mask = ~get_mask_from_lengths(in_lens)[..., None] From 5268ff0eebf810691284cf1bcb3b249fcdf6d621 Mon Sep 17 00:00:00 2001 From: Eric Harper Date: Fri, 3 Feb 2023 18:20:33 -0700 Subject: [PATCH 41/73] update container (#5917) Signed-off-by: ericharper Signed-off-by: Jason --- Dockerfile | 4 ++-- Jenkinsfile | 2 +- README.rst | 4 ++-- ci.groovy | 2 +- nemo/package_info.py | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 64fb1177c082..1197618d1e29 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -ARG BASE_IMAGE=nvcr.io/nvidia/pytorch:22.12-py3 +ARG BASE_IMAGE=nvcr.io/nvidia/pytorch:23.01-py3 # build an image that includes only the nemo dependencies, ensures that dependencies # are included first for optimal caching, and useful for building a development @@ -68,7 +68,7 @@ COPY . . # start building the final container FROM nemo-deps as nemo -ARG NEMO_VERSION=1.15.0 +ARG NEMO_VERSION=1.16.0 # Check that NEMO_VERSION is set. Build will fail without this. Expose NEMO and base container # version information as runtime environment variable for introspection purposes diff --git a/Jenkinsfile b/Jenkinsfile index 91f402e774ac..9dcaecc4359b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,7 @@ pipeline { agent { docker { - image 'nvcr.io/nvidia/pytorch:22.12-py3' + image 'nvcr.io/nvidia/pytorch:23.01-py3' args '--device=/dev/nvidia0 --gpus all --user 0:128 -v /home/TestData:/home/TestData -v $HOME/.cache:/root/.cache --shm-size=8g' } } diff --git a/README.rst b/README.rst index 7bf1c2f07bef..369fcf70b5a4 100644 --- a/README.rst +++ b/README.rst @@ -266,13 +266,13 @@ To build a nemo container with Dockerfile from a branch, please run DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest . -If you chose to work with main branch, we recommend using NVIDIA's PyTorch container version 22.12-py3 and then installing from GitHub. +If you chose to work with main branch, we recommend using NVIDIA's PyTorch container version 23.01-py3 and then installing from GitHub. .. code-block:: bash docker run --gpus all -it --rm -v :/NeMo --shm-size=8g \ -p 8888:8888 -p 6006:6006 --ulimit memlock=-1 --ulimit \ - stack=67108864 --device=/dev/snd nvcr.io/nvidia/pytorch:22.12-py3 + stack=67108864 --device=/dev/snd nvcr.io/nvidia/pytorch:23.01-py3 Examples -------- diff --git a/ci.groovy b/ci.groovy index 484501eb0fd5..fdaffe718e9d 100644 --- a/ci.groovy +++ b/ci.groovy @@ -15,7 +15,7 @@ spec: path: /vol/scratch1/scratch.okuchaiev_blossom containers: - name: latestdlfw - image: nvcr.io/nvidia/pytorch:22.12-py3 + image: nvcr.io/nvidia/pytorch:23.01-py3 command: - cat volumeMounts: diff --git a/nemo/package_info.py b/nemo/package_info.py index 4c7b3acd15ee..56e296062fa7 100644 --- a/nemo/package_info.py +++ b/nemo/package_info.py @@ -14,7 +14,7 @@ MAJOR = 1 -MINOR = 15 +MINOR = 16 PATCH = 0 PRE_RELEASE = 'rc0' From 7d1ff973eb2f0fbe45fef70890d3e9f3fd29700b Mon Sep 17 00:00:00 2001 From: Evelina <10428420+ekmb@users.noreply.github.com> Date: Fri, 3 Feb 2023 20:46:34 -0800 Subject: [PATCH 42/73] remove conda pynini install (#5921) Signed-off-by: ekmb Signed-off-by: Jason --- nemo_text_processing/install_pynini.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/nemo_text_processing/install_pynini.sh b/nemo_text_processing/install_pynini.sh index 8da8c158ccf9..301df87c223d 100644 --- a/nemo_text_processing/install_pynini.sh +++ b/nemo_text_processing/install_pynini.sh @@ -1,6 +1,2 @@ #!/bin/bash -if [[ $OSTYPE == 'darwin'* ]]; then - conda install -c conda-forge -y pynini=2.1.5 -else - pip install pynini==2.1.5 -fi \ No newline at end of file +pip install pynini==2.1.5 From 755131a17f531c66ec4ea6985cecf6d84a904f57 Mon Sep 17 00:00:00 2001 From: Eric Harper Date: Mon, 6 Feb 2023 09:57:22 -0700 Subject: [PATCH 43/73] Merge release main (#5916) * update branch Signed-off-by: ericharper * added TPMLP for T5-based models (#5840) Signed-off-by: David Mosallanezhad Signed-off-by: David Mosallanezhad Co-authored-by: David Mosallanezhad * remove notebook (#5859) Signed-off-by: ericharper Signed-off-by: ericharper * update branch Signed-off-by: ericharper --------- Signed-off-by: ericharper Signed-off-by: David Mosallanezhad Co-authored-by: David Co-authored-by: David Mosallanezhad Signed-off-by: Jason --- tutorials/nlp/Text2Sparql.ipynb | 2263 ------------------------------- 1 file changed, 2263 deletions(-) delete mode 100644 tutorials/nlp/Text2Sparql.ipynb diff --git a/tutorials/nlp/Text2Sparql.ipynb b/tutorials/nlp/Text2Sparql.ipynb deleted file mode 100644 index 69ccdaccadc9..000000000000 --- a/tutorials/nlp/Text2Sparql.ipynb +++ /dev/null @@ -1,2263 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "7NmrIy_4HEhB" - }, - "outputs": [], - "source": [ - "\"\"\"\n", - "You can run either this notebook locally (if you have all the dependencies and a GPU) or on Google Colab.\n", - "\n", - "Instructions for setting up Colab are as follows:\n", - "1. Open a new Python 3 notebook.\n", - "2. Import this notebook from GitHub (File -> Upload Notebook -> \"GITHUB\" tab -> copy/paste GitHub URL)\n", - "3. Connect to an instance with a GPU (Runtime -> Change runtime type -> select \"GPU\" for hardware accelerator)\n", - "4. Run this cell to set up dependencies.\n", - "\"\"\"\n", - "# If you're using Google Colab and not running locally, run this cell\n", - "\n", - "# install NeMo\n", - "BRANCH = 'main'\n", - "!python -m pip install git+https://github.com/NVIDIA/NeMo.git@$BRANCH#egg=nemo_toolkit[nlp]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "vKYnxMW4HVEo" - }, - "outputs": [], - "source": [ - "# If you're not using Colab, you might need to upgrade jupyter notebook to avoid the following error:\n", - "# 'ImportError: IProgress not found. Please update jupyter and ipywidgets.'\n", - "\n", - "! pip install ipywidgets\n", - "! jupyter nbextension enable --py widgetsnbextension\n", - "\n", - "# Please restart the kernel after running this cell" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "gKBpquW-Hf5v" - }, - "outputs": [], - "source": [ - "import os\n", - "import wget \n", - "import torch\n", - "import pytorch_lightning as pl\n", - "from omegaconf import OmegaConf\n", - "\n", - "from nemo.collections import nlp as nemo_nlp\n", - "from nemo.utils.exp_manager import exp_manager\n", - "from nemo.collections.nlp.models import Text2SparqlModel" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "V1CJmunQILU_" - }, - "source": [ - "# Motivation\n", - "\n", - "**[RDF - based](https://en.wikipedia.org/wiki/Resource_Description_Framework) [knowledge graphs (KG)](https://www.blog.google/products/search/introducing-knowledge-graph-things-not/)** are dense and flexible structures that allow rich representations of real data. Due to their complex nature, [searching through their content](https://query.wikidata.org/) can be difficult and requires an in-depth understanding of [query syntax](https://www.wikidata.org/wiki/Wikidata:SPARQL_tutorial) and [graph specific properties](https://en.wikibooks.org/wiki/SPARQL/WIKIDATA_Qualifiers,_References_and_Ranks). This problem can be solved via a natural language to query language translation model, which allows widespread use of even the most complicated KG." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pJrLZ75ZblqL" - }, - "source": [ - "# Task Description\n", - "\n", - "**Neural Machine Translation (NMT)** is the task of converting a sequence to another sequence using a neural network. While its most common use case is for translating from one language to another, we can also apply it to the task of converting a natural language request into a RDF query." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "F7lqKrB-bmZI" - }, - "source": [ - "# Dataset\n", - "\n", - "To train our model, we use **Text2Sparql**, a synthetic dataset of natural language and [WikiData](https://www.wikidata.org/wiki/Wikidata:Main_Page) [SPARQL queries](https://www.w3.org/TR/rdf-sparql-query/) pairs generated with very little human intervention.\n", - "\n", - "Some sentence-query examples from Text2Sparql:\n", - "```\n", - "Who is the mother of the director of Pulp Fiction?\n", - "SELECT ?end WHERE { [ Pulp Fiction ] wdt:P5 / wdt:P25 ?end . }\n", - "```\n", - "```\n", - "Is John Steinbeck the author of Green Eggs and Ham?\n", - "ASK { BIND ( [ John Steinbeck ] as ?end ) . [ Green Eggs and Ham ] wdt:P50 ?end . }\n", - "```\n", - "```\n", - "How many awards does the producer of Fast and Furious have?\n", - "SELECT ( COUNT ( DISTINCT ?end ) as ?endcount ) WHERE { [ Fast and Furious ] wdt:P162 / wdt:P166 ?end . }\n", - "```\n", - "\n", - "Each query label can be broken down into several components:\n", - "* [**SPARQL syntax**](https://www.w3.org/TR/sparql11-query/#sparqlSyntax) typically denoted in capital letters (eg. SELECT, ASK, BIND, COUNT, DISTINCT, WHERE)\n", - "* [**Variables**](https://www.w3.org/TR/sparql11-query/#QSynVariables), prefixed by a question mark. (eg: ?end)\n", - "* [**Property values**](https://www.wikidata.org/wiki/Help:Properties), prefixed by P. Property values map the relationship between entities and are learned by the neural network. (eg: wdt:P5)\n", - "* [**Item values**](https://www.wikidata.org/wiki/Help:Items), prefixed by Q (hence we refer to them as q-values). Q-values define an entity and are not learned since fitting all possible items into the training set is impractical. Instead, they are represented as strings within brackets. (eg: [ Pulp Fiction ])\n", - "\n", - "It is important to note that a query cannot be executed until its item representation is replaced with it's appropriate q-value. This step will be handled in the final section." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "LJvD1k-4nslq" - }, - "source": [ - "# Download and Preprocess Data\n", - "\n", - "The Text2Sparql dataset contains 3 files:\n", - "\n", - "- train_queries_v3.tsv\n", - "- test_easy_queries_v3.tsv\n", - "- test_hard_queries_v3.tsv\n", - "\n", - "with the format:\n", - "- [english] [tab] [sparql] [tab] [unique hash]\n", - "\n", - "To download and convert the datasets for Text2Sparql, we will reduce the table to 2 columns:\n", - "- [sentence] [tab] [label]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "29dB7Fvkbfrj" - }, - "outputs": [], - "source": [ - "# set the following paths\n", - "DATA_DIR = \"PATH_TO_DATA\"\n", - "WORK_DIR = \"PATH_TO_CHECKPOINTS_AND_LOGS\"\n", - "\n", - "# NeMo Version\n", - "BRANCH = 'main'\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "d2pYkuNwp9C7" - }, - "outputs": [], - "source": [ - "# download import_datasets.py script to download and preprocess Text2Sparql\n", - "os.makedirs(WORK_DIR, exist_ok=True)\n", - "if not os.path.exists(WORK_DIR + \"/get_squad.py\"):\n", - " print(\"Downloading import_datasets.py...\")\n", - " wget.download(f\"https://raw.githubusercontent.com/NVIDIA/NeMo/{BRANCH}/examples/nlp/text2sparql/data/import_datasets.py\", WORK_DIR)\n", - "else:\n", - " print(\"import_datasets.py already exists\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "5o7lU1rcr882" - }, - "outputs": [], - "source": [ - "# run script\n", - "! python $WORK_DIR/import_datasets.py --source_data_dir $DATA_DIR --target_data_dir $DATA_DIR" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "AyjPatq01bgg" - }, - "source": [ - "# Data and Model Parameters\n", - "\n", - "In the following, we need to adjust the default model configuration for the NeMo experiment.\n", - "\n", - "*Note: This is just a baseline model for Text2Sparql to showcase usage and is not optimized for accuracy.*" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "j1FK6js_1Xo0" - }, - "outputs": [], - "source": [ - "# This is the model configuration file that we will download, do not change this\n", - "MODEL_CONFIG = \"text2sparql_config.yaml\"\n", - "\n", - "# training parameters\n", - "accelerator = 'gpu' if torch.cuda.is_available() else 'cpu' # 0 for CPU, or list of GPU indicies\n", - "MAX_EPOCHS = 2 # number of training epochs\n", - "\n", - "# model parameters, play with these\n", - "NEMO_PATH = f\"{WORK_DIR}/bart.nemo\" # specify model savepath (models are saved as .nemo files)\n", - "BATCH_SIZE = 16\n", - "MAX_SEQ_LENGTH = 150\n", - "\n", - "# specify seq2seq model you want to use\n", - "PRETRAINED_BART_MODEL = \"facebook/bart-base\"\n", - "TOKENIZER_NAME = \"facebook/bart-base\"\n", - "\n", - "TRAIN_FILE = f\"{DATA_DIR}/train.tsv\"\n", - "EVAL_FILE = f\"{DATA_DIR}/test_easy.tsv\"\n", - "TEST_FILE = f\"{DATA_DIR}/test_easy.tsv\" # can change to test_hard.tsv\n", - "\n", - "# training parameters\n", - "LEARNING_RATE = 0.00004" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "NuqppCp-m-my" - }, - "source": [ - "# Model Configuration\n", - "\n", - "A Text2Sparql's config file declares multiple import sections. They are:\n", - "\n", - "- **trainer**: Arguments to be passed to PyTorch Lightning\n", - "- **model**: All arguments that relate to the Model - language_model, tokenizers, datasets, optimizer, generate\n", - "- **exp_manager**: Arguments to be passed to NeMo's experiment manager\n", - "- **hydra**: Arguments to be passed to Hydra" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "09KZN1c1lCnN" - }, - "outputs": [], - "source": [ - "# download the model's default configuration file \n", - "config_dir = WORK_DIR + \"/configs/\"\n", - "os.makedirs(config_dir, exist_ok=True)\n", - "if not os.path.exists(config_dir + MODEL_CONFIG):\n", - " print(\"Downloading config file...\")\n", - " wget.download(f\"https://raw.githubusercontent.com/NVIDIA/NeMo/{BRANCH}/examples/nlp/text2sparql/conf/{MODEL_CONFIG}\", config_dir)\n", - "else:\n", - " print(\"config file is already exists\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "id": "FGQGQ6nO0qk4", - "outputId": "2514f6e2-8be3-41db-9811-198862e61c35" - }, - "outputs": [], - "source": [ - "# this line will print the entire default config of the model\n", - "config_path = f\"{WORK_DIR}/configs/{MODEL_CONFIG}\"\n", - "print(config_path)\n", - "config = OmegaConf.load(config_path)\n", - "print(OmegaConf.to_yaml(config))" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "DX-oYGou718d" - }, - "source": [ - "# Setting Up Data Within Config\n", - "\n", - "The default configuration is missing certain essential fields. We must apply these changes to the configuration:\n", - "- **config.model.train_ds.filepath**: filepath to the train dataset\n", - "- **config.model.validation_ds.filepath**: filepath to the validation dataset\n", - "- **config.model.test_ds.filepath**: filepath to the test dataset\n", - "- **config.exp_manager.exp_dir**: path to the experiment directory" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "fqKVT1vm3S0-" - }, - "outputs": [], - "source": [ - "config.trainer.devices = 1\n", - "config.trainer.accelerator = accelerator\n", - "config.trainer.max_epochs = MAX_EPOCHS\n", - "\n", - "config.model.nemo_path = NEMO_PATH\n", - "config.model.batch_size = BATCH_SIZE\n", - "config.model.max_seq_length = MAX_SEQ_LENGTH\n", - "\n", - "config.model.language_model.pretrained_model_name = PRETRAINED_BART_MODEL\n", - "config.model.encoder_tokenizer.tokenizer_name = TOKENIZER_NAME\n", - "config.model.decoder_tokenizer.tokenizer_name = TOKENIZER_NAME\n", - "\n", - "config.model.train_ds.filepath = TRAIN_FILE\n", - "config.model.validation_ds.filepath = EVAL_FILE\n", - "config.model.test_ds.filepath = TEST_FILE\n", - "\n", - "config.model.optim.lr = LEARNING_RATE\n", - "\n", - "config.exp_manager.exp_dir = WORK_DIR" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "MRmRPKWD8-DW" - }, - "source": [ - "# Building the PyTorch Lightning Trainer\n", - "\n", - "NeMo models are primarily PyTorch Lightning modules - and therefore are entirely compatible with the PyTorch Lightning ecosystem!\n", - "\n", - "Let's first instantiate a Trainer object!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 86 - }, - "id": "8PNeLS253oho", - "outputId": "c65c8885-3260-4b6f-ea23-ebef1484b862" - }, - "outputs": [], - "source": [ - "config.trainer.strategy = None\n", - "trainer = pl.Trainer(**config.trainer)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "YA3y433w94yH" - }, - "source": [ - "# Setting up a NeMo Experiment\n", - "\n", - "NeMo has an experiment manager that handles logging and checkpointing for us, so let's use it!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 69 - }, - "id": "nfvTusV292L2", - "outputId": "25c99712-5058-4001-fd7d-d95fd5eec6cf" - }, - "outputs": [], - "source": [ - "exp_dir = exp_manager(trainer, config.get(\"exp_manager\", None))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 312 - }, - "id": "xdZ3_zZN-H3C", - "outputId": "3df54e37-6dd3-477a-ad56-e571170f74ed" - }, - "outputs": [], - "source": [ - "nmt_model = Text2SparqlModel(config.model, trainer=trainer)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wA77iwML-e2W" - }, - "source": [ - "# Monitoring Training Progress\n", - "\n", - "Optionally, you can create a Tensorboard visualization to monitor training progress." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 821, - "resources": { - "https://localhost:6008/": { - "data": "PCFkb2N0eXBlIGh0bWw+PCEtLQpAbGljZW5zZQpDb3B5cmlnaHQgMjAxNiBUaGUgVGVuc29yRmxvdyBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgpVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLT48aHRtbCBsYW5nPSJlbiI+PG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDx0aXRsZT5UZW5zb3JCb2FyZDwvdGl0bGU+CiAgPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiBocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQU1RQUFBREVDQU1BQUFEM2VINVpBQUFBQkdkQlRVRUFBTEdQQy94aEJRQUFBQUZ6VWtkQ0FLN09IT2tBQUFEL1VFeFVSZkZsS2ZhRUx2Rm1LZk55Sy82N052V0FMZjY4TnY2OU52TnhLLzIwTmZ5eU5QMjJOZk4wSy9Kckt2cWhNdjJ6TmYyNU5mMjROZjIzTmZlT0wveXpOUHl2TlBKb0t2aVdNUG1lTWZOMUsvV0JMZmVQTC9GbktmZU1ML3FsTXZSN0xQbWNNZmVMTC9hSkx2UjVMUEZvS2ZKdUt2UjNMUDY2TnZ5d05QZU5ML1YvTGZhSUx2MjFOZjI2TmZOeksvTnZLL1I2TFBtYU1meXhOUHFmTXZWK0xmdXJNL2lTTVBtYk1mSnZLdm1kTWZ1bU0vcWlNdm1aTWZ5dE5QSnFLdnlzTlBOMksvaVlNUE53Sy91cE0vSnRLdkpzS3ZpVk1QYUhMdmFHTHZKcEt2UjhMUGFLTHZxa012dXFNL2FGTHZSNExQdW9NL2lUTVBXRExmaVJNUG1ZTVhTMG5na0FBQUxvU1VSQlZIamE3ZHJuY3RwQUZJYmhGVUlTU0tKM01LWWEwK3k0eFRXOTkzNy8xNUprSmhsVGpoclNySFJtdnVmL2FzNkwwWUxGQ2dFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTUJKNm5qZW5xc3B6Z25QcnNyR1g5WnBpMnRDcm1uYzYrZFlOdGhWWTVXcE1teFFMV1BkTXNPdVlWd3pOajNlaTJ0M21Rd2FWNDNCSlBEQ1MyTmJKNWFFZXVYLys5cWNqUU90ZkZJa0lrcnZZMmc0TVZjbU9Cc0ZXYm93S08va055ajYyZ1JwSmNEYVBCbHhMcjFCMHpkRzBDLzhMemJKaUpyc2h1dnkxZ3psQTkrckQ4bUlrdXlJSmpGRTMvZHFuWXdvU203SVVFUG9EL3d1dDhpSWd1U0lEamxGeGUveWZYTDV2dVNJMjFCVFpMTGhYb09JTE1POEh4d2EvTDhiSTBMZm1VZGhHb3diMlp2VDBlNTdwRk5EZ0IwNklsVnlqbW1JQmwyVC9ubDlSdzZTRDlHZ1NHL1EwdVFrYVczWGhtb3ZLUTNlRlE0TjJVbzlPUTFlRlpzTmVyZjd2UCtyTzRyaG1ZMUxnM3ZGVm9QOCs4QlhnMXNGbndibkNrNE5UaFc4R3VpS0JEZGtWVnRUTkZ2TmVsVnNOcVRieVduSU9NMm9lVFJveVd2d21wSkhnL3VjWEJyY0p1WFQ0RHdycHdaaTJ2eTBWQ3g4WXRYZy9EMmJVNE9maXVRM2VGZkUyS0Q0YmZDcWlMTkI5OTNnWHNHbHdhMkNUNE56QmFjR0lWUTZZc2lwUWRoMHhFZE9EVUtqSXhyU3A4OG9uWjh6YmJGTGcxRG9pRk81Qlh2REd2Mk15OS9KaFVUOEpVWlRJMHlEYU5ITEJ6SWJ2cVRETlloVWlWdy9rZGpRMWtNMkNIRkRQaktXK0t6eVJURjBnL2dhOXc5eStmQU5RcHh2WDhDVStOeTdGVVdEZUYzWStnM2xST0lmNGswVURYOWVDeXZPNTMxUHlZaEhnYTl6dlBaSlU1YjczWS9lWGo4SHY5RDQ4bjZIYUY1TGJjalJ0OFRaVHRkYTVNMURmWG5ia1gxQzBTSENGS3pRQjVGZThvcDRHTkdOSGF2dlpFU2JWd1Q1cjZXMXh5dUNQQlkzWTlZZ0RxemtuSC9lM1lmTnp6dUwzMGwwSWViclo1a0t0dURJWHQxbjg2OEVUNmtmMy80OXRMdnJDY1p5RjhQdTIxNWRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNQSWJOckJoT2FCWHVjb0FBQUFBU1VWT1JLNUNZSUk9Ij4KICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTVFBQUFERUNBTUFBQUQzZUg1WkFBQUFCR2RCVFVFQUFMR1BDL3hoQlFBQUFBRnpVa2RDQUs3T0hPa0FBQUQvVUV4VVJmRmxLZmFFTHZGbUtmTnlLLzY3TnZXQUxmNjhOdjY5TnZOeEsvMjBOZnl5TlAyMk5mTjBLL0pyS3ZxaE12MnpOZjI1TmYyNE5mMjNOZmVPTC95ek5QeXZOUEpvS3ZpV01QbWVNZk4xSy9XQkxmZVBML0ZuS2ZlTUwvcWxNdlI3TFBtY01mZUxML2FKTHZSNUxQRm9LZkp1S3ZSM0xQNjZOdnl3TlBlTkwvVi9MZmFJTHYyMU5mMjZOZk56Sy9OdksvUjZMUG1hTWZ5eE5QcWZNdlYrTGZ1ck0vaVNNUG1iTWZKdkt2bWRNZnVtTS9xaU12bVpNZnl0TlBKcUt2eXNOUE4ySy9pWU1QTndLL3VwTS9KdEt2SnNLdmlWTVBhSEx2YUdMdkpwS3ZSOExQYUtMdnFrTXZ1cU0vYUZMdlI0TFB1b00vaVRNUFdETGZpUk1QbVlNWFMwbmdrQUFBTG9TVVJCVkhqYTdkcm5jdHBBRkliaEZVSVNTS0ozTUtZYTAreTR4VFc5OTM3LzE1SmtKaGxUamhyU3JIUm12dWYvYXM2TDBZTEZDZ0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQko2bmplbnFzcHpnblByc3JHWDlacGkydENybW5jNitkWU50aFZZNVdwTW14UUxXUGRNc091WVZ3ek5qM2VpMnQzbVF3YVY0M0JKUERDUzJOYko1YUVldVgvKzlxY2pRT3RmRklrSWtydlkyZzRNVmNtT0JzRldib3dLTy9rTnlqNjJnUnBKY0RhUEJseExyMUIwemRHMEMvOEx6YkppSnJzaHV2eTFnemxBOStyRDhtSWt1eUlKakZFMy9kcW5Zd29TbTdJVUVQb0Qvd3V0OGlJZ3VTSURqbEZ4ZS95ZlhMNXZ1U0kyMUJUWkxMaFhvT0lMTU84SHh3YS9MOGJJMExmbVVkaEdvd2IyWnZUMGU1N3BGTkRnQjA2SWxWeWptbUlCbDJUL25sOVJ3NlNEOUdnU0cvUTB1UWthVzNYaG1vdktRM2VGUTROMlVvOU9RMWVGWnNOZXJmN3ZQK3JPNHJobVkxTGczdkZWb1A4KzhCWGcxc0Zud2JuQ2s0TlRoVzhHdWlLQkRka1ZWdFRORnZOZWxWc05xVGJ5V25JT00yb2VUUm95V3Z3bXBKSGcvdWNYQnJjSnVYVDREd3Jwd1ppMnZ5MFZDeDhZdFhnL0QyYlU0T2ZpdVEzZUZmRTJLRDRiZkNxaUxOQjk5M2dYc0dsd2EyQ1Q0TnpCYWNHSVZRNllzaXBRZGgweEVkT0RVS2pJeHJTcDg4b25aOHpiYkZMZzFEb2lGTzVCWHZER3YyTXk5L0poVVQ4SlVaVEkweURhTkhMQnpJYnZxVEROWWhVaVZ3L2tkalExa00yQ0hGRFBqS1crS3p5UlRGMGcvZ2E5dzl5K2ZBTlFweHZYOENVK055N0ZVV0RlRjNZK2czbFJPSWY0azBVRFg5ZUN5dk81MzFQeVloSGdhOXp2UFpKVTViNzNZL2VYajhIdjlENDhuNkhhRjVMYmNqUnQ4VFpUdGRhNU0xRGZYbmJrWDFDMFNIQ0ZLelFCNUZlOG9wNEdOR05IYXZ2WkVTYlZ3VDVyNlcxeHl1Q1BCWTNZOVlnRHF6a25IL2UzWWZOenp1TDMwbDBJZWJyWjVrS3R1RElYdDFuODY4RVQ2a2YzLzQ5dEx2ckNjWnlGOFB1MjE1ZEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBY1BJYk5yQmhPYUJYdWNvQUFBQUFTVVZPUks1Q1lJST0iPgoKICAKICAKICAKCiAgCgogIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAgPHN0eWxlPgpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvJyksIGxvY2FsKCdSb2JvdG8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL3VZRUNNS29IY085eDF3ZG1ieUhJbTMtX2tmNkJ5WU82Q0xZZEI0SFFFLVkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9zVGRhQTZqMFBzYjkyMFZqdi1tcnpILV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vX1ZZRngtczgyNGtYcV9VbDJCSHFZSC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vdG5qNFNCNkROYmRhUW5zTThDRnFCWC1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vb01NZ2ZaTVF0aE9yeVFvOW4yMmRjdXZ2RGluMXBLOGFLdGVMcGVaNWMwQS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8nKSwgbG9jYWwoJ1JvYm90by1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vS3NfY1Z4aUNpd1VXVnNGV0ZBM0Jqbi1fa2Y2QnlZTzZDTFlkQjRIUUUtWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90bycpLCBsb2NhbCgnUm9ib3RvLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9OSjR2eGxnV3dXYkVzdjE4ZEFocW5uLV9rZjZCeVlPNkNMWWRCNEhRRS1ZLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL2lzWi13YkNYTktBYm5qbzZfVHdIVG9YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvLzc3RlhGalJiR3pONGFDclNGaGxoM29YMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL2pTTjJDR1ZEYmNWeUNuZkpmalNkZklYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQnKSwgbG9jYWwoJ1JvYm90by1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vVVg2aTRKeFFEbTNmVlRjMUNQdXdxb1gwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9kLTZJWXBsT0ZvY0NhY0t6eHdYU09KQncxeFUxcktwdEpqXzBqYW5zOTIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkJyksIGxvY2FsKCdSb2JvdG8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvLzk3dWFoeGlxWlJvbmNCYUNFSTNhVzRYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9Qd1pjLVliSUw0MTR3QjlyQjFJQVBZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBCb2xkIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUJvbGRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by90Nk5kNGNmUFJoWlA0NFE1UUFqY0MxNHNZWWRKZzVkVTJxekpFVlN1dGEwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDX1pyYVIyVGc4dzJsem03a0xOTDAtdy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQ3d0X1JtNjkxTFRlYktmWTJaa0tTbUkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAzNzAtMDNGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzFCVzI2UXhwU2otX1pLbV94VDRoV3cud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzRncDlROGdiWXJocUdsUmF2X0lYZmsud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEJvbGQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tQm9sZEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL3Q2TmQ0Y2ZQUmhaUDQ0UTVRQWpjQzZFOGtNNHhXUjFfMWJZVVJSb2pSR2Mud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDAtMDI0RiwgVSsxRTAwLTFFRkYsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDRiwgVSsyQzYwLTJDN0YsIFUrQTcyMC1BN0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gQm9sZCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1Cb2xkSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vdDZOZDRjZlBSaFpQNDRRNVFBamNDOURpTnNSNWEtOU9lX0l2cHU4WFdsWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT3BYVXFUbzBVZ1FRaEdqX1NGZExXQmtBejRyWW40N1p5MnJ2aWdXUWY2dy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL1d4clhKYTBDM0tkdEM3bE1hZkc0ZFJrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9jREtoUmFYblFUT1ZiYW94d2RPcjl4a0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by8xaFpmMDJQT0FOaDMyazJWa2dFb1VCa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by92UGN5blNMMHFIcV82ZFg3bEtWQnlYWWhqYlNwdmM0N2VlNnhSXzgwSG53LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by92U3p1bGZLU0swTExqamZlYXhjUkVoa0F6NHJZbjQ3WnkycnZpZ1dRZjZ3LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL0syM2N4V1ZUcklGRDZESnNFVmkwN1JrQXo0clluNDdaeTJydmlnV1FmNncud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by9GbDR5MFFkT3h5eVRIRUdNWFg4a2NZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvLzBlQzZmbDA2bHVYRVlXcEJTSnZYQ0lYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vSTNTMXdzZ1NnOVlDdXJWNlBVa1RPWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQnKSwgbG9jYWwoJ1JvYm90by1MaWdodCcpLCB1cmwoL2ZvbnQtcm9ib3RvLy1MMTRKazA2bTZwVUhCLTVtWFFRbllYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0JyksIGxvY2FsKCdSb2JvdG8tTGlnaHQnKSwgdXJsKC9mb250LXJvYm90by9IZ28xM2stdGZTcG4wcWkxU0ZkVWZaQncxeFUxcktwdEpqXzBqYW5zOTIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vUHJ1MzNxalNocFpTbUczejZWWXduWVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCcpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0JyksIHVybCgvZm9udC1yb2JvdG8vTllEV0JkRDRnSXEyNkc1WFliSHNGSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQxNHNZWWRKZzVkVTJxekpFVlN1dGEwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXRfWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXR3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogMzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBMaWdodCBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1MaWdodEl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvLzdtOGw3VGxGTy1TM1ZraEh1UjBhdDFCVzI2UXhwU2otX1pLbV94VDRoV3cud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0NGdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDMwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTGlnaHQgSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTGlnaHRJdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by83bThsN1RsRk8tUzNWa2hIdVIwYXQ2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIExpZ2h0IEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLUxpZ2h0SXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vN204bDdUbEZPLVMzVmtoSHVSMGF0OURpTnNSNWEtOU9lX0l2cHU4WFdsWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtJyksIHVybCgvZm9udC1yb2JvdG8vb0hpMzBrd1FXdnBDV3FBaHpIY0NTSVgwaFZnelpRVWZSRHVaclB2SDNEOC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQwMC0wNDVGLCBVKzA0OTAtMDQ5MSwgVSswNEIwLTA0QjEsIFUrMjExNjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL1pMcUtlZWxZYkFURzYwRXBaQlNEeTRYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9teDlVY2s2dUI2M1ZJS0ZZbkVNWHJZWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9yR3ZIZEpucjJsNzVxYjBZTkQ5TnlJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSsxRjAwLTFGRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9SeFpKZG56ZW8zUjV6U2V4Z2U4VVVaQncxeFUxcktwdEpqXzBqYW5zOTIwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0nKSwgbG9jYWwoJ1JvYm90by1NZWRpdW0nKSwgdXJsKC9mb250LXJvYm90by9vT2VGd1pObHJUZWZ6TFltbFZWMVVJWDBoVmd6WlFVZlJEdVpyUHZIM0Q4LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bScpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bScpLCB1cmwoL2ZvbnQtcm9ib3RvL21ibWhwck1INjlaaTZlRVBCWVZGaFlYMGhWZ3paUVVmUkR1WnJQdkgzRDgud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAxMDItMDEwMywgVSsxRUEwLTFFRjksIFUrMjBBQjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBWNHNZWWRKZzVkVTJxekpFVlN1dGEwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMGZacmFSMlRnOHcybHptN2tMTkwwLXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0NjAtMDUyRiwgVSsyMEI0LCBVKzJERTAtMkRGRiwgVStBNjQwLUE2OUY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwUXRfUm02OTFMVGViS2ZZMlprS1NtSS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDM3MC0wM0ZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgZm9udC13ZWlnaHQ6IDUwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTWVkaXVtIEl0YWxpYycpLCBsb2NhbCgnUm9ib3RvLU1lZGl1bUl0YWxpYycpLCB1cmwoL2ZvbnQtcm9ib3RvL09MZmZHQlRhRjBYRk9XMWdudUhGMFZCVzI2UXhwU2otX1pLbV94VDRoV3cud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byc7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1lZGl1bSBJdGFsaWMnKSwgbG9jYWwoJ1JvYm90by1NZWRpdW1JdGFsaWMnKSwgdXJsKC9mb250LXJvYm90by9PTGZmR0JUYUYwWEZPVzFnbnVIRjBZZ3A5UThnYllyaHFHbFJhdl9JWGZrLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMjAwMC0yMDZGLCBVKzIwNzQsIFUrMjBBQywgVSsyMjEyLCBVKzIyMTU7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwYUU4a000eFdSMV8xYllVUlJvalJHYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMjRGLCBVKzFFMDAtMUVGRiwgVSsyMEEwLTIwQUIsIFUrMjBBRC0yMENGLCBVKzJDNjAtMkM3RiwgVStBNzIwLUE3RkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8nOwogIGZvbnQtc3R5bGU6IGl0YWxpYzsKICBmb250LXdlaWdodDogNTAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNZWRpdW0gSXRhbGljJyksIGxvY2FsKCdSb2JvdG8tTWVkaXVtSXRhbGljJyksIHVybCgvZm9udC1yb2JvdG8vT0xmZkdCVGFGMFhGT1cxZ251SEYwZERpTnNSNWEtOU9lX0l2cHU4WFdsWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFkxNHNZWWRKZzVkVTJxekpFVlN1dGEwLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDAwLTA0NUYsIFUrMDQ5MC0wNDkxLCBVKzA0QjAtMDRCMSwgVSsyMTE2Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFlfWnJhUjJUZzh3Mmx6bTdrTE5MMC13LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswNDYwLTA1MkYsIFUrMjBCNCwgVSsyREUwLTJERkYsIFUrQTY0MC1BNjlGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFl3dF9SbTY5MUxUZWJLZlkyWmtLU21JLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8nKSwgbG9jYWwoJ1JvYm90b01vbm8tUmVndWxhcicpLCB1cmwoL2ZvbnQtcm9ib3RvL2hNcVBOTHN1X2R5d01hNENfREVwWTFCVzI2UXhwU2otX1pLbV94VDRoV3cud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzFGMDAtMUZGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZNGdwOVE4Z2JZcmhxR2xSYXZfSVhmay53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjIxMiwgVSsyMjE1Owp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNDAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vJyksIGxvY2FsKCdSb2JvdG9Nb25vLVJlZ3VsYXInKSwgdXJsKC9mb250LXJvYm90by9oTXFQTkxzdV9keXdNYTRDX0RFcFk2RThrTTR4V1IxXzFiWVVSUm9qUkdjLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDQwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubycpLCBsb2NhbCgnUm9ib3RvTW9uby1SZWd1bGFyJyksIHVybCgvZm9udC1yb2JvdG8vaE1xUE5Mc3VfZHl3TWE0Q19ERXBZOURpTnNSNWEtOU9lX0l2cHU4WFdsWS53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMi0wMTAzLCBVKzFFQTAtMUVGOSwgVSsyMEFCOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGejF4LU0xSTF3NU9NaXFuVkY4eEJMaFUud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzA0MDAtMDQ1RiwgVSswNDkwLTA0OTEsIFUrMDRCMC0wNEIxLCBVKzIxMTY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6d1hhQVh1cDVtWmxmSzZ4UkxyaHNjby53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMDQ2MC0wNTJGLCBVKzIwQjQsIFUrMkRFMC0yREZGLCBVK0E2NDAtQTY5RjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5Rnp3bjZXcXhvLXh3eGlsRFhQVThjaFZVLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMzcwLTAzRkY7Cn0KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdSb2JvdG8gTW9ubyc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgc3JjOiBsb2NhbCgnUm9ib3RvIE1vbm8gQm9sZCcpLCBsb2NhbCgnUm9ib3RvTW9uby1Cb2xkJyksIHVybCgvZm9udC1yb2JvdG8vTjRkdVZjOUM1OHV3UGlZOF81OUZ6MVQ3YUpMSzZuS3BuMzZJTXdUY01NYy53b2ZmMikgZm9ybWF0KCd3b2ZmMicpOwogIHVuaWNvZGUtcmFuZ2U6IFUrMUYwMC0xRkZGOwp9CkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nOwogIGZvbnQtc3R5bGU6IG5vcm1hbDsKICBmb250LXdlaWdodDogNzAwOwogIHNyYzogbG9jYWwoJ1JvYm90byBNb25vIEJvbGQnKSwgbG9jYWwoJ1JvYm90b01vbm8tQm9sZCcpLCB1cmwoL2ZvbnQtcm9ib3RvL040ZHVWYzlDNTh1d1BpWThfNTlGel83OV9adVV4Q2lnTTJEZXNwVG5GYXcud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkM2LCBVKzAyREEsIFUrMDJEQywgVSsyMDAwLTIwNkYsIFUrMjA3NCwgVSsyMEFDLCBVKzIyMTIsIFUrMjIxNTsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5Rno0Z2Q5T0VQVUNOM0FkWVcwZTh0YXQ0LndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyNEYsIFUrMUUwMC0xRUZGLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQ0YsIFUrMkM2MC0yQzdGLCBVK0E3MjAtQTdGRjsKfQpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ1JvYm90byBNb25vJzsKICBmb250LXN0eWxlOiBub3JtYWw7CiAgZm9udC13ZWlnaHQ6IDcwMDsKICBzcmM6IGxvY2FsKCdSb2JvdG8gTW9ubyBCb2xkJyksIGxvY2FsKCdSb2JvdG9Nb25vLUJvbGQnKSwgdXJsKC9mb250LXJvYm90by9ONGR1VmM5QzU4dXdQaVk4XzU5Rno4YklRU1labldMYVdDOVFOQ3BUS19VLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7CiAgdW5pY29kZS1yYW5nZTogVSswMTAyLTAxMDMsIFUrMUVBMC0xRUY5LCBVKzIwQUI7Cn0KPC9zdHlsZT4KCgo8c3R5bGU+CiAgaHRtbCwKICBib2R5IHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOwogIH0KPC9zdHlsZT4KCiAgCgoKCgo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIFtoaWRkZW5dIHsKICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPgoKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKCiAgICAgIC0tbGF5b3V0OiB7CiAgICAgICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1mbGV4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH07CgogICAgICAtLWxheW91dC1pbmxpbmU6IHsKICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7CiAgICAgICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWhvcml6b250YWw6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaG9yaXpvbnRhbC1yZXZlcnNlOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwoKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXZlcnRpY2FsLXJldmVyc2U6IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CgogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcDogewogICAgICAgIC1tcy1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtd3JhcC1yZXZlcnNlOiB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LWF1dG86IHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtbm9uZTogewogICAgICAgIC1tcy1mbGV4OiBub25lOwogICAgICAgIC13ZWJraXQtZmxleDogbm9uZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleDogewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtMjogewogICAgICAgIC1tcy1mbGV4OiAyOwogICAgICAgIC13ZWJraXQtZmxleDogMjsKICAgICAgICBmbGV4OiAyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC0zOiB7CiAgICAgICAgLW1zLWZsZXg6IDM7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAzOwogICAgICAgIGZsZXg6IDM7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTQ6IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtNTogewogICAgICAgIC1tcy1mbGV4OiA1OwogICAgICAgIC13ZWJraXQtZmxleDogNTsKICAgICAgICBmbGV4OiA1OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC02OiB7CiAgICAgICAgLW1zLWZsZXg6IDY7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA2OwogICAgICAgIGZsZXg6IDY7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTc6IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZsZXgtODogewogICAgICAgIC1tcy1mbGV4OiA4OwogICAgICAgIC13ZWJraXQtZmxleDogODsKICAgICAgICBmbGV4OiA4OwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZmxleC05OiB7CiAgICAgICAgLW1zLWZsZXg6IDk7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA5OwogICAgICAgIGZsZXg6IDk7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEwOiB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTExOiB7CiAgICAgICAgLW1zLWZsZXg6IDExOwogICAgICAgIC13ZWJraXQtZmxleDogMTE7CiAgICAgICAgZmxleDogMTE7CiAgICAgIH07CgogICAgICAtLWxheW91dC1mbGV4LTEyOiB7CiAgICAgICAgLW1zLWZsZXg6IDEyOwogICAgICAgIC13ZWJraXQtZmxleDogMTI7CiAgICAgICAgZmxleDogMTI7CiAgICAgIH07CgogICAgICAvKiBhbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcyAqLwoKICAgICAgLS1sYXlvdXQtc3RhcnQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlcjogewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIH07CgogICAgICAtLWxheW91dC1lbmQ6IHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWJhc2VsaW5lOiB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgfTsKCiAgICAgIC8qIGFsaWdubWVudCBpbiBtYWluIGF4aXMgKi8KCiAgICAgIC0tbGF5b3V0LXN0YXJ0LWp1c3RpZmllZDogewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWNlbnRlci1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1qdXN0aWZpZWQ6IHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBlbmQ7CiAgICAgICAgLXdlYmtpdC1qdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1hcm91bmQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazogZGlzdHJpYnV0ZTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtanVzdGlmaWVkOiB7CiAgICAgICAgLW1zLWZsZXgtcGFjazoganVzdGlmeTsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItY2VudGVyOiB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfTsKCiAgICAgIC8qIHNlbGYgYWxpZ25tZW50ICovCgogICAgICAtLWxheW91dC1zZWxmLXN0YXJ0OiB7CiAgICAgICAgLW1zLWFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zZWxmLWNlbnRlcjogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1lbmQ6IHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LXNlbGYtc3RyZXRjaDogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtc2VsZi1iYXNlbGluZTogewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9OwoKICAgICAgLyogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzICovCgogICAgICAtLWxheW91dC1zdGFydC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBzdGFydDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWVuZC1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBlbmQ7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1jZW50ZXItYWxpZ25lZDogewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogY2VudGVyOyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgYWxpZ24tY29udGVudDogY2VudGVyOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYmV0d2Vlbi1hbGlnbmVkOiB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBqdXN0aWZ5OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtYXJvdW5kLWFsaWduZWQ6IHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGRpc3RyaWJ1dGU7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH07CgogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgICAgICAgT3RoZXIgTGF5b3V0CiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAtLWxheW91dC1ibG9jazogewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtaW52aXNpYmxlOiB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgIH07CgogICAgICAtLWxheW91dC1yZWxhdGl2ZTogewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfTsKCiAgICAgIC0tbGF5b3V0LWZpdDogewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1zY3JvbGw6IHsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH07CgogICAgICAtLWxheW91dC1mdWxsYmxlZWQ6IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfTsKCiAgICAgIC8qIGZpeGVkIHBvc2l0aW9uICovCgogICAgICAtLWxheW91dC1maXhlZC10b3A6IHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgIH07CgogICAgICAtLWxheW91dC1maXhlZC1yaWdodDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtYm90dG9tOiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9OwoKICAgICAgLS1sYXlvdXQtZml4ZWQtbGVmdDogewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH07CgogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItcmlwcGxlIj4KCiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CgogICAgICAgIC8qIFNlZSBQb2x5bWVyRWxlbWVudHMvcGFwZXItYmVoYXZpb3JzL2lzc3Vlcy8zNC4gT24gbm9uLUNocm9tZSBicm93c2VycywKICAgICAgICAgKiBjcmVhdGluZyBhIG5vZGUgKHdpdGggYSBwb3NpdGlvbjphYnNvbHV0ZSkgaW4gdGhlIG1pZGRsZSBvZiBhbiBldmVudAogICAgICAgICAqIGhhbmRsZXIgImludGVycnVwdHMiIHRoYXQgZXZlbnQgaGFuZGxlciAod2hpY2ggaGFwcGVucyB3aGVuIHRoZQogICAgICAgICAqIHJpcHBsZSBpcyBjcmVhdGVkIG9uIGRlbWFuZCkgKi8KICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2FuaW1hdGluZ10pIHsKICAgICAgICAvKiBUaGlzIHJlc29sdmVzIGEgcmVuZGVyaW5nIGlzc3VlIGluIENocm9tZSAoYXMgb2YgNDApIHdoZXJlIHRoZQogICAgICAgICAgIHJpcHBsZSBpcyBub3QgcHJvcGVybHkgY2xpcHBlZCBieSBpdHMgcGFyZW50ICh3aGljaCBtYXkgaGF2ZQogICAgICAgICAgIHJvdW5kZWQgY29ybmVycykuIFNlZTogaHR0cDovL2pzYmluLmNvbS90ZW1leGEvNAoKICAgICAgICAgICBOb3RlOiBXZSBvbmx5IGFwcGx5IHRoaXMgc3R5bGUgY29uZGl0aW9uYWxseS4gT3RoZXJ3aXNlLCB0aGUgYnJvd3NlcgogICAgICAgICAgIHdpbGwgY3JlYXRlIGEgbmV3IGNvbXBvc2l0aW5nIGxheWVyIGZvciBldmVyeSByaXBwbGUgZWxlbWVudCBvbiB0aGUKICAgICAgICAgICBwYWdlLCBhbmQgdGhhdCB3b3VsZCBiZSBiYWQuICovCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDAsIDAsIDApOwogICAgICB9CgogICAgICAjYmFja2dyb3VuZCwKICAgICAgI3dhdmVzLAogICAgICAud2F2ZS1jb250YWluZXIsCiAgICAgIC53YXZlIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAjYmFja2dyb3VuZCwKICAgICAgLndhdmUgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgICN3YXZlcywKICAgICAgLndhdmUgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC53YXZlLWNvbnRhaW5lciwKICAgICAgLndhdmUgewogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNpcmNsZSkgI2JhY2tncm91bmQsCiAgICAgIDpob3N0KC5jaXJjbGUpICN3YXZlcyB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICA6aG9zdCguY2lyY2xlKSAud2F2ZS1jb250YWluZXIgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iYmFja2dyb3VuZCI+PC9kaXY+CiAgICA8ZGl2IGlkPSJ3YXZlcyI+PC9kaXY+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CgogICAgICAtLXNoYWRvdy10cmFuc2l0aW9uOiB7CiAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjI4cyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctbm9uZTogewogICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CiAgICAgIH07CgogICAgICAvKiBmcm9tIGh0dHA6Ly9jb2RlcGVuLmlvL3NoeW5kbWFuL3Blbi9jNTM5NGRkZjJlOGIyYTVjOTE4NTkwNGI1NzQyMWNkYiAqLwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tM2RwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCA4cHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi00ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDRweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi02ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDZweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDFweCAxOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDNweCA1cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tOGRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgfTsKCiAgICAgIC0tc2hhZG93LWVsZXZhdGlvbi0xMmRwOiB7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksCiAgICAgICAgICAgICAgICAgICAgMCA0cHggMjJweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEyKSwKICAgICAgICAgICAgICAgICAgICAwIDZweCA3cHggLTRweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgIH07CgogICAgICAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDogewogICAgICAgIGJveC1zaGFkb3c6IDAgMTZweCAyNHB4IDJweCByZ2JhKDAsIDAsIDAsIDAuMTQpLAogICAgICAgICAgICAgICAgICAgIDAgIDZweCAzMHB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgIDhweCAxMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwoKICAgICAgLS1zaGFkb3ctZWxldmF0aW9uLTI0ZHA6IHsKICAgICAgICBib3gtc2hhZG93OiAwIDI0cHggMzhweCAzcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwKICAgICAgICAgICAgICAgICAgICAwIDlweCA0NnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpLAogICAgICAgICAgICAgICAgICAgIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICB9OwogICAgfQogIDwvc3R5bGU+CjwvY3VzdG9tLXN0eWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCwgaHRtbCB7CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbDogewogICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0xOiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTI6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tNGRwOwogICAgICAgIH07CiAgICAgICAgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzogewogICAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgICAgfTsKICAgICAgICAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi00OiB7CiAgICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLThkcDsKICAgICAgICB9OwogICAgICAgIC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTU6IHsKICAgICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMTZkcDsKICAgICAgICB9OwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbCksIC5wYXBlci1tYXRlcmlhbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWw7CiAgICAgIH0KICAgICAgOmhvc3QoLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdKSwgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iMSJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMTsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0pLCAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSIyIl0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CiAgICAgIDpob3N0KC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSksIC5wYXBlci1tYXRlcmlhbFtlbGV2YXRpb249IjMiXSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTM7CiAgICAgIH0KICAgICAgOmhvc3QoLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdKSwgLnBhcGVyLW1hdGVyaWFsW2VsZXZhdGlvbj0iNCJdIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tNDsKICAgICAgfQogICAgICA6aG9zdCgucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0pLCAucGFwZXItbWF0ZXJpYWxbZWxldmF0aW9uPSI1Il0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1idXR0b24iPgogIDx0ZW1wbGF0ZSBzdHJpcC13aGl0ZXNwYWNlPgogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLW1hdGVyaWFsLXN0eWxlcyI+CiAgICAgIC8qIE5lZWQgdG8gc3BlY2lmeSB0aGUgc2FtZSBzcGVjaWZpY2l0eSBhcyB0aGUgc3R5bGVzIGltcG9ydGVkIGZyb20gcGFwZXItbWF0ZXJpYWwuICovCiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIG1pbi13aWR0aDogNS4xNGVtOwogICAgICAgIG1hcmdpbjogMCAwLjI5ZW07CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgZm9udDogaW5oZXJpdDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIG91dGxpbmUtd2lkdGg6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHotaW5kZXg6IDA7CiAgICAgICAgcGFkZGluZzogMC43ZW0gMC41N2VtOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMSJdKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTE7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjIiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi0yOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIzIl0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbC1lbGV2YXRpb24tMzsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iNCJdKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWF0ZXJpYWwtZWxldmF0aW9uLTQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjUiXSkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1hdGVyaWFsLWVsZXZhdGlvbi01OwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgOmhvc3QoW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMpIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1idXR0b24tcmFpc2VkLWtleWJvYXJkLWZvY3VzOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtyYWlzZWRdKS5rZXlib2FyZC1mb2N1cykgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1mbGF0LWtleWJvYXJkLWZvY3VzOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgYmFja2dyb3VuZDogI2VhZWFlYTsKICAgICAgICBjb2xvcjogI2E4YThhODsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWJ1dHRvbi1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgOmhvc3QoW2FuaW1hdGVkXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy10cmFuc2l0aW9uOwogICAgICB9CgogICAgICBwYXBlci1yaXBwbGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1idXR0b24taW5rLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewoKICAgICAgLyogTWF0ZXJpYWwgRGVzaWduIGNvbG9yIHBhbGV0dGUgZm9yIEdvb2dsZSBwcm9kdWN0cyAqLwoKICAgICAgLS1nb29nbGUtcmVkLTEwMDogI2Y0YzdjMzsKICAgICAgLS1nb29nbGUtcmVkLTMwMDogI2U2N2M3MzsKICAgICAgLS1nb29nbGUtcmVkLTUwMDogI2RiNDQzNzsKICAgICAgLS1nb29nbGUtcmVkLTcwMDogI2M1MzkyOTsKCiAgICAgIC0tZ29vZ2xlLWJsdWUtMTAwOiAjYzZkYWZjOwogICAgICAtLWdvb2dsZS1ibHVlLTMwMDogIzdiYWFmNzsKICAgICAgLS1nb29nbGUtYmx1ZS01MDA6ICM0Mjg1ZjQ7CiAgICAgIC0tZ29vZ2xlLWJsdWUtNzAwOiAjMzM2N2Q2OwoKICAgICAgLS1nb29nbGUtZ3JlZW4tMTAwOiAjYjdlMWNkOwogICAgICAtLWdvb2dsZS1ncmVlbi0zMDA6ICM1N2JiOGE7CiAgICAgIC0tZ29vZ2xlLWdyZWVuLTUwMDogIzBmOWQ1ODsKICAgICAgLS1nb29nbGUtZ3JlZW4tNzAwOiAjMGI4MDQzOwoKICAgICAgLS1nb29nbGUteWVsbG93LTEwMDogI2ZjZThiMjsKICAgICAgLS1nb29nbGUteWVsbG93LTMwMDogI2Y3Y2I0ZDsKICAgICAgLS1nb29nbGUteWVsbG93LTUwMDogI2Y0YjQwMDsKICAgICAgLS1nb29nbGUteWVsbG93LTcwMDogI2YwOTMwMDsKCiAgICAgIC0tZ29vZ2xlLWdyZXktMTAwOiAjZjVmNWY1OwogICAgICAtLWdvb2dsZS1ncmV5LTMwMDogI2UwZTBlMDsKICAgICAgLS1nb29nbGUtZ3JleS01MDA6ICM5ZTllOWU7CiAgICAgIC0tZ29vZ2xlLWdyZXktNzAwOiAjNjE2MTYxOwoKICAgICAgLyogTWF0ZXJpYWwgRGVzaWduIGNvbG9yIHBhbGV0dGUgZnJvbSBvbmxpbmUgc3BlYyBkb2N1bWVudCAqLwoKICAgICAgLS1wYXBlci1yZWQtNTA6ICNmZmViZWU7CiAgICAgIC0tcGFwZXItcmVkLTEwMDogI2ZmY2RkMjsKICAgICAgLS1wYXBlci1yZWQtMjAwOiAjZWY5YTlhOwogICAgICAtLXBhcGVyLXJlZC0zMDA6ICNlNTczNzM7CiAgICAgIC0tcGFwZXItcmVkLTQwMDogI2VmNTM1MDsKICAgICAgLS1wYXBlci1yZWQtNTAwOiAjZjQ0MzM2OwogICAgICAtLXBhcGVyLXJlZC02MDA6ICNlNTM5MzU7CiAgICAgIC0tcGFwZXItcmVkLTcwMDogI2QzMmYyZjsKICAgICAgLS1wYXBlci1yZWQtODAwOiAjYzYyODI4OwogICAgICAtLXBhcGVyLXJlZC05MDA6ICNiNzFjMWM7CiAgICAgIC0tcGFwZXItcmVkLWExMDA6ICNmZjhhODA7CiAgICAgIC0tcGFwZXItcmVkLWEyMDA6ICNmZjUyNTI7CiAgICAgIC0tcGFwZXItcmVkLWE0MDA6ICNmZjE3NDQ7CiAgICAgIC0tcGFwZXItcmVkLWE3MDA6ICNkNTAwMDA7CgogICAgICAtLXBhcGVyLXBpbmstNTA6ICNmY2U0ZWM7CiAgICAgIC0tcGFwZXItcGluay0xMDA6ICNmOGJiZDA7CiAgICAgIC0tcGFwZXItcGluay0yMDA6ICNmNDhmYjE7CiAgICAgIC0tcGFwZXItcGluay0zMDA6ICNmMDYyOTI7CiAgICAgIC0tcGFwZXItcGluay00MDA6ICNlYzQwN2E7CiAgICAgIC0tcGFwZXItcGluay01MDA6ICNlOTFlNjM7CiAgICAgIC0tcGFwZXItcGluay02MDA6ICNkODFiNjA7CiAgICAgIC0tcGFwZXItcGluay03MDA6ICNjMjE4NWI7CiAgICAgIC0tcGFwZXItcGluay04MDA6ICNhZDE0NTc7CiAgICAgIC0tcGFwZXItcGluay05MDA6ICM4ODBlNGY7CiAgICAgIC0tcGFwZXItcGluay1hMTAwOiAjZmY4MGFiOwogICAgICAtLXBhcGVyLXBpbmstYTIwMDogI2ZmNDA4MTsKICAgICAgLS1wYXBlci1waW5rLWE0MDA6ICNmNTAwNTc7CiAgICAgIC0tcGFwZXItcGluay1hNzAwOiAjYzUxMTYyOwoKICAgICAgLS1wYXBlci1wdXJwbGUtNTA6ICNmM2U1ZjU7CiAgICAgIC0tcGFwZXItcHVycGxlLTEwMDogI2UxYmVlNzsKICAgICAgLS1wYXBlci1wdXJwbGUtMjAwOiAjY2U5M2Q4OwogICAgICAtLXBhcGVyLXB1cnBsZS0zMDA6ICNiYTY4Yzg7CiAgICAgIC0tcGFwZXItcHVycGxlLTQwMDogI2FiNDdiYzsKICAgICAgLS1wYXBlci1wdXJwbGUtNTAwOiAjOWMyN2IwOwogICAgICAtLXBhcGVyLXB1cnBsZS02MDA6ICM4ZTI0YWE7CiAgICAgIC0tcGFwZXItcHVycGxlLTcwMDogIzdiMWZhMjsKICAgICAgLS1wYXBlci1wdXJwbGUtODAwOiAjNmExYjlhOwogICAgICAtLXBhcGVyLXB1cnBsZS05MDA6ICM0YTE0OGM7CiAgICAgIC0tcGFwZXItcHVycGxlLWExMDA6ICNlYTgwZmM7CiAgICAgIC0tcGFwZXItcHVycGxlLWEyMDA6ICNlMDQwZmI7CiAgICAgIC0tcGFwZXItcHVycGxlLWE0MDA6ICNkNTAwZjk7CiAgICAgIC0tcGFwZXItcHVycGxlLWE3MDA6ICNhYTAwZmY7CgogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTUwOiAjZWRlN2Y2OwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTEwMDogI2QxYzRlOTsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS0yMDA6ICNiMzlkZGI7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtMzAwOiAjOTU3NWNkOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTQwMDogIzdlNTdjMjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS01MDA6ICM2NzNhYjc7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtNjAwOiAjNWUzNWIxOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLTcwMDogIzUxMmRhODsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS04MDA6ICM0NTI3YTA7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtOTAwOiAjMzExYjkyOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWExMDA6ICNiMzg4ZmY7CiAgICAgIC0tcGFwZXItZGVlcC1wdXJwbGUtYTIwMDogIzdjNGRmZjsKICAgICAgLS1wYXBlci1kZWVwLXB1cnBsZS1hNDAwOiAjNjUxZmZmOwogICAgICAtLXBhcGVyLWRlZXAtcHVycGxlLWE3MDA6ICM2MjAwZWE7CgogICAgICAtLXBhcGVyLWluZGlnby01MDogI2U4ZWFmNjsKICAgICAgLS1wYXBlci1pbmRpZ28tMTAwOiAjYzVjYWU5OwogICAgICAtLXBhcGVyLWluZGlnby0yMDA6ICM5ZmE4ZGE7CiAgICAgIC0tcGFwZXItaW5kaWdvLTMwMDogIzc5ODZjYjsKICAgICAgLS1wYXBlci1pbmRpZ28tNDAwOiAjNWM2YmMwOwogICAgICAtLXBhcGVyLWluZGlnby01MDA6ICMzZjUxYjU7CiAgICAgIC0tcGFwZXItaW5kaWdvLTYwMDogIzM5NDlhYjsKICAgICAgLS1wYXBlci1pbmRpZ28tNzAwOiAjMzAzZjlmOwogICAgICAtLXBhcGVyLWluZGlnby04MDA6ICMyODM1OTM7CiAgICAgIC0tcGFwZXItaW5kaWdvLTkwMDogIzFhMjM3ZTsKICAgICAgLS1wYXBlci1pbmRpZ28tYTEwMDogIzhjOWVmZjsKICAgICAgLS1wYXBlci1pbmRpZ28tYTIwMDogIzUzNmRmZTsKICAgICAgLS1wYXBlci1pbmRpZ28tYTQwMDogIzNkNWFmZTsKICAgICAgLS1wYXBlci1pbmRpZ28tYTcwMDogIzMwNGZmZTsKCiAgICAgIC0tcGFwZXItYmx1ZS01MDogI2UzZjJmZDsKICAgICAgLS1wYXBlci1ibHVlLTEwMDogI2JiZGVmYjsKICAgICAgLS1wYXBlci1ibHVlLTIwMDogIzkwY2FmOTsKICAgICAgLS1wYXBlci1ibHVlLTMwMDogIzY0YjVmNjsKICAgICAgLS1wYXBlci1ibHVlLTQwMDogIzQyYTVmNTsKICAgICAgLS1wYXBlci1ibHVlLTUwMDogIzIxOTZmMzsKICAgICAgLS1wYXBlci1ibHVlLTYwMDogIzFlODhlNTsKICAgICAgLS1wYXBlci1ibHVlLTcwMDogIzE5NzZkMjsKICAgICAgLS1wYXBlci1ibHVlLTgwMDogIzE1NjVjMDsKICAgICAgLS1wYXBlci1ibHVlLTkwMDogIzBkNDdhMTsKICAgICAgLS1wYXBlci1ibHVlLWExMDA6ICM4MmIxZmY7CiAgICAgIC0tcGFwZXItYmx1ZS1hMjAwOiAjNDQ4YWZmOwogICAgICAtLXBhcGVyLWJsdWUtYTQwMDogIzI5NzlmZjsKICAgICAgLS1wYXBlci1ibHVlLWE3MDA6ICMyOTYyZmY7CgogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtNTA6ICNlMWY1ZmU7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS0xMDA6ICNiM2U1ZmM7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS0yMDA6ICM4MWQ0ZmE7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS0zMDA6ICM0ZmMzZjc7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS00MDA6ICMyOWI2ZjY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS01MDA6ICMwM2E5ZjQ7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS02MDA6ICMwMzliZTU7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS03MDA6ICMwMjg4ZDE7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS04MDA6ICMwMjc3YmQ7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS05MDA6ICMwMTU3OWI7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hMTAwOiAjODBkOGZmOwogICAgICAtLXBhcGVyLWxpZ2h0LWJsdWUtYTIwMDogIzQwYzRmZjsKICAgICAgLS1wYXBlci1saWdodC1ibHVlLWE0MDA6ICMwMGIwZmY7CiAgICAgIC0tcGFwZXItbGlnaHQtYmx1ZS1hNzAwOiAjMDA5MWVhOwoKICAgICAgLS1wYXBlci1jeWFuLTUwOiAjZTBmN2ZhOwogICAgICAtLXBhcGVyLWN5YW4tMTAwOiAjYjJlYmYyOwogICAgICAtLXBhcGVyLWN5YW4tMjAwOiAjODBkZWVhOwogICAgICAtLXBhcGVyLWN5YW4tMzAwOiAjNGRkMGUxOwogICAgICAtLXBhcGVyLWN5YW4tNDAwOiAjMjZjNmRhOwogICAgICAtLXBhcGVyLWN5YW4tNTAwOiAjMDBiY2Q0OwogICAgICAtLXBhcGVyLWN5YW4tNjAwOiAjMDBhY2MxOwogICAgICAtLXBhcGVyLWN5YW4tNzAwOiAjMDA5N2E3OwogICAgICAtLXBhcGVyLWN5YW4tODAwOiAjMDA4MzhmOwogICAgICAtLXBhcGVyLWN5YW4tOTAwOiAjMDA2MDY0OwogICAgICAtLXBhcGVyLWN5YW4tYTEwMDogIzg0ZmZmZjsKICAgICAgLS1wYXBlci1jeWFuLWEyMDA6ICMxOGZmZmY7CiAgICAgIC0tcGFwZXItY3lhbi1hNDAwOiAjMDBlNWZmOwogICAgICAtLXBhcGVyLWN5YW4tYTcwMDogIzAwYjhkNDsKCiAgICAgIC0tcGFwZXItdGVhbC01MDogI2UwZjJmMTsKICAgICAgLS1wYXBlci10ZWFsLTEwMDogI2IyZGZkYjsKICAgICAgLS1wYXBlci10ZWFsLTIwMDogIzgwY2JjNDsKICAgICAgLS1wYXBlci10ZWFsLTMwMDogIzRkYjZhYzsKICAgICAgLS1wYXBlci10ZWFsLTQwMDogIzI2YTY5YTsKICAgICAgLS1wYXBlci10ZWFsLTUwMDogIzAwOTY4ODsKICAgICAgLS1wYXBlci10ZWFsLTYwMDogIzAwODk3YjsKICAgICAgLS1wYXBlci10ZWFsLTcwMDogIzAwNzk2YjsKICAgICAgLS1wYXBlci10ZWFsLTgwMDogIzAwNjk1YzsKICAgICAgLS1wYXBlci10ZWFsLTkwMDogIzAwNGQ0MDsKICAgICAgLS1wYXBlci10ZWFsLWExMDA6ICNhN2ZmZWI7CiAgICAgIC0tcGFwZXItdGVhbC1hMjAwOiAjNjRmZmRhOwogICAgICAtLXBhcGVyLXRlYWwtYTQwMDogIzFkZTliNjsKICAgICAgLS1wYXBlci10ZWFsLWE3MDA6ICMwMGJmYTU7CgogICAgICAtLXBhcGVyLWdyZWVuLTUwOiAjZThmNWU5OwogICAgICAtLXBhcGVyLWdyZWVuLTEwMDogI2M4ZTZjOTsKICAgICAgLS1wYXBlci1ncmVlbi0yMDA6ICNhNWQ2YTc7CiAgICAgIC0tcGFwZXItZ3JlZW4tMzAwOiAjODFjNzg0OwogICAgICAtLXBhcGVyLWdyZWVuLTQwMDogIzY2YmI2YTsKICAgICAgLS1wYXBlci1ncmVlbi01MDA6ICM0Y2FmNTA7CiAgICAgIC0tcGFwZXItZ3JlZW4tNjAwOiAjNDNhMDQ3OwogICAgICAtLXBhcGVyLWdyZWVuLTcwMDogIzM4OGUzYzsKICAgICAgLS1wYXBlci1ncmVlbi04MDA6ICMyZTdkMzI7CiAgICAgIC0tcGFwZXItZ3JlZW4tOTAwOiAjMWI1ZTIwOwogICAgICAtLXBhcGVyLWdyZWVuLWExMDA6ICNiOWY2Y2E7CiAgICAgIC0tcGFwZXItZ3JlZW4tYTIwMDogIzY5ZjBhZTsKICAgICAgLS1wYXBlci1ncmVlbi1hNDAwOiAjMDBlNjc2OwogICAgICAtLXBhcGVyLWdyZWVuLWE3MDA6ICMwMGM4NTM7CgogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTUwOiAjZjFmOGU5OwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTEwMDogI2RjZWRjODsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi0yMDA6ICNjNWUxYTU7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tMzAwOiAjYWVkNTgxOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTQwMDogIzljY2M2NTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi01MDA6ICM4YmMzNGE7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tNjAwOiAjN2NiMzQyOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLTcwMDogIzY4OWYzODsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi04MDA6ICM1NThiMmY7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tOTAwOiAjMzM2OTFlOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWExMDA6ICNjY2ZmOTA7CiAgICAgIC0tcGFwZXItbGlnaHQtZ3JlZW4tYTIwMDogI2IyZmY1OTsKICAgICAgLS1wYXBlci1saWdodC1ncmVlbi1hNDAwOiAjNzZmZjAzOwogICAgICAtLXBhcGVyLWxpZ2h0LWdyZWVuLWE3MDA6ICM2NGRkMTc7CgogICAgICAtLXBhcGVyLWxpbWUtNTA6ICNmOWZiZTc7CiAgICAgIC0tcGFwZXItbGltZS0xMDA6ICNmMGY0YzM7CiAgICAgIC0tcGFwZXItbGltZS0yMDA6ICNlNmVlOWM7CiAgICAgIC0tcGFwZXItbGltZS0zMDA6ICNkY2U3NzU7CiAgICAgIC0tcGFwZXItbGltZS00MDA6ICNkNGUxNTc7CiAgICAgIC0tcGFwZXItbGltZS01MDA6ICNjZGRjMzk7CiAgICAgIC0tcGFwZXItbGltZS02MDA6ICNjMGNhMzM7CiAgICAgIC0tcGFwZXItbGltZS03MDA6ICNhZmI0MmI7CiAgICAgIC0tcGFwZXItbGltZS04MDA6ICM5ZTlkMjQ7CiAgICAgIC0tcGFwZXItbGltZS05MDA6ICM4Mjc3MTc7CiAgICAgIC0tcGFwZXItbGltZS1hMTAwOiAjZjRmZjgxOwogICAgICAtLXBhcGVyLWxpbWUtYTIwMDogI2VlZmY0MTsKICAgICAgLS1wYXBlci1saW1lLWE0MDA6ICNjNmZmMDA7CiAgICAgIC0tcGFwZXItbGltZS1hNzAwOiAjYWVlYTAwOwoKICAgICAgLS1wYXBlci15ZWxsb3ctNTA6ICNmZmZkZTc7CiAgICAgIC0tcGFwZXIteWVsbG93LTEwMDogI2ZmZjljNDsKICAgICAgLS1wYXBlci15ZWxsb3ctMjAwOiAjZmZmNTlkOwogICAgICAtLXBhcGVyLXllbGxvdy0zMDA6ICNmZmYxNzY7CiAgICAgIC0tcGFwZXIteWVsbG93LTQwMDogI2ZmZWU1ODsKICAgICAgLS1wYXBlci15ZWxsb3ctNTAwOiAjZmZlYjNiOwogICAgICAtLXBhcGVyLXllbGxvdy02MDA6ICNmZGQ4MzU7CiAgICAgIC0tcGFwZXIteWVsbG93LTcwMDogI2ZiYzAyZDsKICAgICAgLS1wYXBlci15ZWxsb3ctODAwOiAjZjlhODI1OwogICAgICAtLXBhcGVyLXllbGxvdy05MDA6ICNmNTdmMTc7CiAgICAgIC0tcGFwZXIteWVsbG93LWExMDA6ICNmZmZmOGQ7CiAgICAgIC0tcGFwZXIteWVsbG93LWEyMDA6ICNmZmZmMDA7CiAgICAgIC0tcGFwZXIteWVsbG93LWE0MDA6ICNmZmVhMDA7CiAgICAgIC0tcGFwZXIteWVsbG93LWE3MDA6ICNmZmQ2MDA7CgogICAgICAtLXBhcGVyLWFtYmVyLTUwOiAjZmZmOGUxOwogICAgICAtLXBhcGVyLWFtYmVyLTEwMDogI2ZmZWNiMzsKICAgICAgLS1wYXBlci1hbWJlci0yMDA6ICNmZmUwODI7CiAgICAgIC0tcGFwZXItYW1iZXItMzAwOiAjZmZkNTRmOwogICAgICAtLXBhcGVyLWFtYmVyLTQwMDogI2ZmY2EyODsKICAgICAgLS1wYXBlci1hbWJlci01MDA6ICNmZmMxMDc7CiAgICAgIC0tcGFwZXItYW1iZXItNjAwOiAjZmZiMzAwOwogICAgICAtLXBhcGVyLWFtYmVyLTcwMDogI2ZmYTAwMDsKICAgICAgLS1wYXBlci1hbWJlci04MDA6ICNmZjhmMDA7CiAgICAgIC0tcGFwZXItYW1iZXItOTAwOiAjZmY2ZjAwOwogICAgICAtLXBhcGVyLWFtYmVyLWExMDA6ICNmZmU1N2Y7CiAgICAgIC0tcGFwZXItYW1iZXItYTIwMDogI2ZmZDc0MDsKICAgICAgLS1wYXBlci1hbWJlci1hNDAwOiAjZmZjNDAwOwogICAgICAtLXBhcGVyLWFtYmVyLWE3MDA6ICNmZmFiMDA7CgogICAgICAtLXBhcGVyLW9yYW5nZS01MDogI2ZmZjNlMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtMTAwOiAjZmZlMGIyOwogICAgICAtLXBhcGVyLW9yYW5nZS0yMDA6ICNmZmNjODA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTMwMDogI2ZmYjc0ZDsKICAgICAgLS1wYXBlci1vcmFuZ2UtNDAwOiAjZmZhNzI2OwogICAgICAtLXBhcGVyLW9yYW5nZS01MDA6ICNmZjk4MDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTYwMDogI2ZiOGMwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtNzAwOiAjZjU3YzAwOwogICAgICAtLXBhcGVyLW9yYW5nZS04MDA6ICNlZjZjMDA7CiAgICAgIC0tcGFwZXItb3JhbmdlLTkwMDogI2U2NTEwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtYTEwMDogI2ZmZDE4MDsKICAgICAgLS1wYXBlci1vcmFuZ2UtYTIwMDogI2ZmYWI0MDsKICAgICAgLS1wYXBlci1vcmFuZ2UtYTQwMDogI2ZmOTEwMDsKICAgICAgLS1wYXBlci1vcmFuZ2UtYTcwMDogI2ZmNjUwMDsKCiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNTA6ICNmYmU5ZTc7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtMTAwOiAjZmZjY2JjOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTIwMDogI2ZmYWI5MTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS0zMDA6ICNmZjhhNjU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNDAwOiAjZmY3MDQzOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTUwMDogI2ZmNTcyMjsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS02MDA6ICNmNDUxMWU7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtNzAwOiAjZTY0YTE5OwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLTgwMDogI2Q4NDMxNTsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS05MDA6ICNiZjM2MGM7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTEwMDogI2ZmOWU4MDsKICAgICAgLS1wYXBlci1kZWVwLW9yYW5nZS1hMjAwOiAjZmY2ZTQwOwogICAgICAtLXBhcGVyLWRlZXAtb3JhbmdlLWE0MDA6ICNmZjNkMDA7CiAgICAgIC0tcGFwZXItZGVlcC1vcmFuZ2UtYTcwMDogI2RkMmMwMDsKCiAgICAgIC0tcGFwZXItYnJvd24tNTA6ICNlZmViZTk7CiAgICAgIC0tcGFwZXItYnJvd24tMTAwOiAjZDdjY2M4OwogICAgICAtLXBhcGVyLWJyb3duLTIwMDogI2JjYWFhNDsKICAgICAgLS1wYXBlci1icm93bi0zMDA6ICNhMTg4N2Y7CiAgICAgIC0tcGFwZXItYnJvd24tNDAwOiAjOGQ2ZTYzOwogICAgICAtLXBhcGVyLWJyb3duLTUwMDogIzc5NTU0ODsKICAgICAgLS1wYXBlci1icm93bi02MDA6ICM2ZDRjNDE7CiAgICAgIC0tcGFwZXItYnJvd24tNzAwOiAjNWQ0MDM3OwogICAgICAtLXBhcGVyLWJyb3duLTgwMDogIzRlMzQyZTsKICAgICAgLS1wYXBlci1icm93bi05MDA6ICMzZTI3MjM7CgogICAgICAtLXBhcGVyLWdyZXktNTA6ICNmYWZhZmE7CiAgICAgIC0tcGFwZXItZ3JleS0xMDA6ICNmNWY1ZjU7CiAgICAgIC0tcGFwZXItZ3JleS0yMDA6ICNlZWVlZWU7CiAgICAgIC0tcGFwZXItZ3JleS0zMDA6ICNlMGUwZTA7CiAgICAgIC0tcGFwZXItZ3JleS00MDA6ICNiZGJkYmQ7CiAgICAgIC0tcGFwZXItZ3JleS01MDA6ICM5ZTllOWU7CiAgICAgIC0tcGFwZXItZ3JleS02MDA6ICM3NTc1NzU7CiAgICAgIC0tcGFwZXItZ3JleS03MDA6ICM2MTYxNjE7CiAgICAgIC0tcGFwZXItZ3JleS04MDA6ICM0MjQyNDI7CiAgICAgIC0tcGFwZXItZ3JleS05MDA6ICMyMTIxMjE7CgogICAgICAtLXBhcGVyLWJsdWUtZ3JleS01MDogI2VjZWZmMTsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktMTAwOiAjY2ZkOGRjOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS0yMDA6ICNiMGJlYzU7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTMwMDogIzkwYTRhZTsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNDAwOiAjNzg5MDljOwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS01MDA6ICM2MDdkOGI7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTYwMDogIzU0NmU3YTsKICAgICAgLS1wYXBlci1ibHVlLWdyZXktNzAwOiAjNDU1YTY0OwogICAgICAtLXBhcGVyLWJsdWUtZ3JleS04MDA6ICMzNzQ3NGY7CiAgICAgIC0tcGFwZXItYmx1ZS1ncmV5LTkwMDogIzI2MzIzODsKCiAgICAgIC8qIG9wYWNpdHkgZm9yIGRhcmsgdGV4dCBvbiBhIGxpZ2h0IGJhY2tncm91bmQgKi8KICAgICAgLS1kYXJrLWRpdmlkZXItb3BhY2l0eTogMC4xMjsKICAgICAgLS1kYXJrLWRpc2FibGVkLW9wYWNpdHk6IDAuMzg7IC8qIG9yIGhpbnQgdGV4dCBvciBpY29uICovCiAgICAgIC0tZGFyay1zZWNvbmRhcnktb3BhY2l0eTogMC41NDsKICAgICAgLS1kYXJrLXByaW1hcnktb3BhY2l0eTogMC44NzsKCiAgICAgIC8qIG9wYWNpdHkgZm9yIGxpZ2h0IHRleHQgb24gYSBkYXJrIGJhY2tncm91bmQgKi8KICAgICAgLS1saWdodC1kaXZpZGVyLW9wYWNpdHk6IDAuMTI7CiAgICAgIC0tbGlnaHQtZGlzYWJsZWQtb3BhY2l0eTogMC4zOyAvKiBvciBoaW50IHRleHQgb3IgaWNvbiAqLwogICAgICAtLWxpZ2h0LXNlY29uZGFyeS1vcGFjaXR5OiAwLjc7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1vcGFjaXR5OiAxLjA7CgogICAgfQoKICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KCgoKCjxjdXN0b20tc3R5bGU+CiAgPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogICAgaHRtbCB7CiAgICAgIC8qCiAgICAgICAqIFlvdSBjYW4gdXNlIHRoZXNlIGdlbmVyaWMgdmFyaWFibGVzIGluIHlvdXIgZWxlbWVudHMgZm9yIGVhc3kgdGhlbWluZy4KICAgICAgICogRm9yIGV4YW1wbGUsIGlmIGFsbCB5b3VyIGVsZW1lbnRzIHVzZSBgLS1wcmltYXJ5LXRleHQtY29sb3JgIGFzIGl0cyBtYWluCiAgICAgICAqIGNvbG9yLCB0aGVuIHN3aXRjaGluZyBmcm9tIGEgbGlnaHQgdG8gYSBkYXJrIHRoZW1lIGlzIGp1c3QgYSBtYXR0ZXIgb2YKICAgICAgICogY2hhbmdpbmcgdGhlIHZhbHVlIG9mIGAtLXByaW1hcnktdGV4dC1jb2xvcmAgaW4geW91ciBhcHBsaWNhdGlvbi4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS10ZXh0LWNvbG9yKTsKICAgICAgLS1wcmltYXJ5LWJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWJhY2tncm91bmQtY29sb3IpOwogICAgICAtLXNlY29uZGFyeS10ZXh0LWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1zZWNvbmRhcnktY29sb3IpOwogICAgICAtLWRpc2FibGVkLXRleHQtY29sb3I6IHZhcigtLWxpZ2h0LXRoZW1lLWRpc2FibGVkLWNvbG9yKTsKICAgICAgLS1kaXZpZGVyLWNvbG9yOiB2YXIoLS1saWdodC10aGVtZS1kaXZpZGVyLWNvbG9yKTsKICAgICAgLS1lcnJvci1jb2xvcjogdmFyKC0tcGFwZXItZGVlcC1vcmFuZ2UtYTcwMCk7CgogICAgICAvKgogICAgICAgKiBQcmltYXJ5IGFuZCBhY2NlbnQgY29sb3JzLiBBbHNvIHNlZSBjb2xvci5odG1sIGZvciBtb3JlIGNvbG9ycy4KICAgICAgICovCiAgICAgIC0tcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTUwMCk7CiAgICAgIC0tbGlnaHQtcHJpbWFyeS1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTEwMCk7CiAgICAgIC0tZGFyay1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNzAwKTsKCiAgICAgIC0tYWNjZW50LWNvbG9yOiB2YXIoLS1wYXBlci1waW5rLWEyMDApOwogICAgICAtLWxpZ2h0LWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hMTAwKTsKICAgICAgLS1kYXJrLWFjY2VudC1jb2xvcjogdmFyKC0tcGFwZXItcGluay1hNDAwKTsKCgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gTGlnaHQgYmFja2dyb3VuZCB0aGVtZQogICAgICAgKi8KICAgICAgLS1saWdodC10aGVtZS1iYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgICAtLWxpZ2h0LXRoZW1lLWJhc2UtY29sb3I6ICMwMDAwMDA7CiAgICAgIC0tbGlnaHQtdGhlbWUtdGV4dC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWxpZ2h0LXRoZW1lLXNlY29uZGFyeS1jb2xvcjogIzczNzM3MzsgIC8qIGZvciBzZWNvbmRhcnkgdGV4dCBhbmQgaWNvbnMgKi8KICAgICAgLS1saWdodC10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzliOWI5YjsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWxpZ2h0LXRoZW1lLWRpdmlkZXItY29sb3I6ICNkYmRiZGI7CgogICAgICAvKgogICAgICAgKiBNYXRlcmlhbCBEZXNpZ24gRGFyayBiYWNrZ3JvdW5kIHRoZW1lCiAgICAgICAqLwogICAgICAtLWRhcmstdGhlbWUtYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICAtLWRhcmstdGhlbWUtYmFzZS1jb2xvcjogI2ZmZmZmZjsKICAgICAgLS1kYXJrLXRoZW1lLXRleHQtY29sb3I6ICNmZmZmZmY7CiAgICAgIC0tZGFyay10aGVtZS1zZWNvbmRhcnktY29sb3I6ICNiY2JjYmM7ICAvKiBmb3Igc2Vjb25kYXJ5IHRleHQgYW5kIGljb25zICovCiAgICAgIC0tZGFyay10aGVtZS1kaXNhYmxlZC1jb2xvcjogIzY0NjQ2NDsgIC8qIGRpc2FibGVkL2hpbnQgdGV4dCAqLwogICAgICAtLWRhcmstdGhlbWUtZGl2aWRlci1jb2xvcjogIzNjM2MzYzsKCiAgICAgIC8qCiAgICAgICAqIERlcHJlY2F0ZWQgdmFsdWVzIGJlY2F1c2Ugb2YgdGhlaXIgY29uZnVzaW5nIG5hbWVzLgogICAgICAgKi8KICAgICAgLS10ZXh0LXByaW1hcnktY29sb3I6IHZhcigtLWRhcmstdGhlbWUtdGV4dC1jb2xvcik7CiAgICAgIC0tZGVmYXVsdC1wcmltYXJ5LWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yKTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItY2hlY2tib3giPgogIDx0ZW1wbGF0ZSBzdHJpcC13aGl0ZXNwYWNlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplOiB2YXIoLS1wYXBlci1jaGVja2JveC1zaXplLCAxOHB4KTsKICAgICAgICAvKiAtMXB4IGlzIGEgc2VudGluZWwgZm9yIHRoZSBkZWZhdWx0IGFuZCBpcyByZXBsYWNlZCBpbiBgYXR0YWNoZWRgLiAqLwogICAgICAgIC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZTogdmFyKC0tcGFwZXItY2hlY2tib3gtaW5rLXNpemUsIC0xcHgpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgbGluZS1oZWlnaHQ6IDA7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cykgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgICNjaGVja2JveENvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKTsKICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSk7CiAgICAgICAgbWluLXdpZHRoOiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LXNpemUpOwogICAgICAgIG1hcmdpbjogdmFyKC0tcGFwZXItY2hlY2tib3gtbWFyZ2luLCBpbml0aWFsKTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdmFyKC0tcGFwZXItY2hlY2tib3gtdmVydGljYWwtYWxpZ24sIG1pZGRsZSk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWJhY2tncm91bmQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgfQoKICAgICAgI2luayB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwoKICAgICAgICAvKiBDZW50ZXIgdGhlIHJpcHBsZSBpbiB0aGUgY2hlY2tib3ggYnkgbmVnYXRpdmUgb2Zmc2V0dGluZyBpdCBieQogICAgICAgICAqIChpbmtXaWR0aCAtIHJpcHBsZVdpZHRoKSAvIDIgKi8KICAgICAgICB0b3A6IGNhbGMoMHB4IC0gKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpIC0gdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSkgLyAyKTsKICAgICAgICBsZWZ0OiBjYWxjKDBweCAtICh2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLWNoZWNrYm94LWluay1zaXplKSAtIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpIC8gMik7CiAgICAgICAgd2lkdGg6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1pbmstc2l6ZSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgI2luazpkaXIocnRsKSB7CiAgICAgICAgcmlnaHQ6IGNhbGMoMHB4IC0gKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUpIC0gdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1jaGVja2JveC1zaXplKSkgLyAyKTsKICAgICAgICBsZWZ0OiBhdXRvOwogICAgICB9CgogICAgICAjaW5rW2NoZWNrZWRdIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgfQoKICAgICAgI2NoZWNrYm94IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm9yZGVyOiBzb2xpZCAycHg7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTQwbXMsIGJvcmRlci1jb2xvciAxNDBtczsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDE0MG1zLCBib3JkZXItY29sb3IgMTQwbXM7CiAgICAgIH0KCiAgICAgIC8qIGNoZWNrYm94IGNoZWNrZWQgYW5pbWF0aW9ucyAqLwogICAgICAjY2hlY2tib3guY2hlY2tlZCAjY2hlY2ttYXJrIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY2hlY2ttYXJrLWV4cGFuZCAxNDBtcyBlYXNlLW91dCBmb3J3YXJkczsKICAgICAgICBhbmltYXRpb246IGNoZWNrbWFyay1leHBhbmQgMTQwbXMgZWFzZS1vdXQgZm9yd2FyZHM7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjaGVja21hcmstZXhwYW5kIHsKICAgICAgICAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCwgMCkgcm90YXRlKDQ1ZGVnKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSwgMSkgcm90YXRlKDQ1ZGVnKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgY2hlY2ttYXJrLWV4cGFuZCB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLCAwKSByb3RhdGUoNDVkZWcpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSwgMSkgcm90YXRlKDQ1ZGVnKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICNjaGVja2JveC5jaGVja2VkIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgICNjaGVja21hcmsgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMzYlOwogICAgICAgIGhlaWdodDogNzAlOwogICAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBib3JkZXItbGVmdDogbm9uZTsKICAgICAgICBib3JkZXItcmlnaHQtd2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IGNhbGMoMi8xNSAqIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSkpOwogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtY2hlY2ttYXJrLWNvbG9yLCB3aGl0ZSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA5NyUgODYlOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDk3JSA4NiU7CiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7IC8qIHByb3RlY3QgYWdhaW5zdCBwYWdlLWxldmVsIGJveC1zaXppbmcgKi8KICAgICAgfQoKICAgICAgI2NoZWNrbWFyazpkaXIocnRsKSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMTQlOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSAxNCU7CiAgICAgIH0KCiAgICAgIC8qIGxhYmVsICovCiAgICAgICNjaGVja2JveExhYmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wYXBlci1jaGVja2JveC1sYWJlbC1zcGFjaW5nLCA4cHgpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWNoZWNrYm94LWxhYmVsOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pICNjaGVja2JveExhYmVsIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY2hlY2tlZC1jb2xvciwgdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1jaGVja2JveC1sYWJlbC1jaGVja2VkOwogICAgICB9CgogICAgICAjY2hlY2tib3hMYWJlbDpkaXIocnRsKSB7CiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tcGFwZXItY2hlY2tib3gtbGFiZWwtc3BhY2luZywgOHB4KTsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICAgIH0KCiAgICAgICNjaGVja2JveExhYmVsW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIGRpc2FibGVkIHN0YXRlICovCgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAjY2hlY2tib3ggewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF1bY2hlY2tlZF0pICNjaGVja2JveCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pICNjaGVja2JveExhYmVsICB7CiAgICAgICAgb3BhY2l0eTogMC42NTsKICAgICAgfQoKICAgICAgLyogaW52YWxpZCBzdGF0ZSAqLwogICAgICAjY2hlY2tib3guaW52YWxpZDpub3QoLmNoZWNrZWQpIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXBhcGVyLWNoZWNrYm94LWVycm9yLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9ImNoZWNrYm94Q29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0iY2hlY2tib3giIGNsYXNzJD0iW1tfY29tcHV0ZUNoZWNrYm94Q2xhc3MoY2hlY2tlZCwgaW52YWxpZCldXSI+CiAgICAgICAgPGRpdiBpZD0iY2hlY2ttYXJrIiBjbGFzcyQ9IltbX2NvbXB1dGVDaGVja21hcmtDbGFzcyhjaGVja2VkKV1dIj48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJjaGVja2JveExhYmVsIj48c2xvdD48L3Nsb3Q+PC9kaXY+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9Imlyb24taWNvbiI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWlubGluZTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CgogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIGZpbGw6IHZhcigtLWlyb24taWNvbi1maWxsLWNvbG9yLCBjdXJyZW50Y29sb3IpOwogICAgICAgIHN0cm9rZTogdmFyKC0taXJvbi1pY29uLXN0cm9rZS1jb2xvciwgbm9uZSk7CgogICAgICAgIHdpZHRoOiB2YXIoLS1pcm9uLWljb24td2lkdGgsIDI0cHgpOwogICAgICAgIGhlaWdodDogdmFyKC0taXJvbi1pY29uLWhlaWdodCwgMjRweCk7CiAgICAgICAgQGFwcGx5IC0taXJvbi1pY29uOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWExMXktYW5ub3VuY2VyIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIGNsaXA6IHJlY3QoMHB4LDBweCwwcHgsMHB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxkaXYgYXJpYS1saXZlJD0iW1ttb2RlXV0iPltbX3RleHRdXTwvZGl2PgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9Imlyb24taW5wdXQiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzbG90IGlkPSJjb250ZW50Ij48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgo8Y3VzdG9tLXN0eWxlPgogIDxzdHlsZSBpcz0iY3VzdG9tLXN0eWxlIj4KICAgIGh0bWwgewoKICAgICAgLyogU2hhcmVkIFN0eWxlcyAqLwogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U6IHsKICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsICdOb3RvJywgc2Fucy1zZXJpZjsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tY29kZTogewogICAgICAgIGZvbnQtZmFtaWx5OiAnUm9ib3RvIE1vbm8nLCAnQ29uc29sYXMnLCAnTWVubG8nLCBtb25vc3BhY2U7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29tbW9uLWV4cGVuc2l2ZS1rZXJuaW5nOiB7CiAgICAgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOiB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9OwoKICAgICAgLyogTWF0ZXJpYWwgRm9udCBTdHlsZXMgKi8KCiAgICAgIC0tcGFwZXItZm9udC1kaXNwbGF5NDogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tbm93cmFwOwoKICAgICAgICBmb250LXNpemU6IDExMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDQ0ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDEyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXkzOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogNTZweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtLjAyNmVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiA2MHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWRpc3BsYXkyOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiA0NXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDE4ZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDQ4cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtZGlzcGxheTE6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLS4wMWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiA0MHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWhlYWRsaW5lOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAyNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0uMDEyZW07CiAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtdGl0bGU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtc3ViaGVhZDogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CgogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LWJvZHkyOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKCiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYm9keTE6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jYXB0aW9uOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxMWVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgICAgLS1wYXBlci1mb250LW1lbnU6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKCiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtYnV0dG9uOiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1ub3dyYXA7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxOGVtOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIH07CgogICAgICAtLXBhcGVyLWZvbnQtY29kZTI6IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1jb2RlOwoKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMjBweDsKICAgICAgfTsKCiAgICAgIC0tcGFwZXItZm9udC1jb2RlMTogewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWNvZGU7CgogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICB9OwoKICAgIH0KCiAgPC9zdHlsZT4KPC9jdXN0b20tc3R5bGU+CgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWlucHV0LWNoYXItY291bnRlciI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGZsb2F0OiByaWdodDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNoYXItY291bnRlcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpkaXIocnRsKSkgewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzcGFuPltbX2NoYXJDb3VudGVyU3RyXV08L3NwYW4+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKPGN1c3RvbS1zdHlsZT4KICA8c3R5bGUgaXM9ImN1c3RvbS1zdHlsZSI+CiAgICBodG1sIHsKICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItc2hhcmVkLWlucHV0LXN0eWxlOiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyAvKiB0byBtYWtlIGEgc3RhY2tpbmcgY29udGV4dCAqLwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgYm94LXNoYWRvdzogbm9uZTsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgfTsKICAgIH0KICA8L3N0eWxlPgo8L2N1c3RvbS1zdHlsZT4KCjxkb20tbW9kdWxlIGlkPSJwYXBlci1pbnB1dC1jb250YWluZXIiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDhweCAwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgOmhvc3QoW2lubGluZV0pIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICBvcGFjaXR5OiAwLjMzOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuZmxvYXRlZC1sYWJlbC1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jYXB0aW9uOwogICAgICB9CgogICAgICAudW5kZXJsaW5lIHsKICAgICAgICBoZWlnaHQ6IDJweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5mb2N1c2VkLWxpbmUgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLDEsMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZTNkKDAsMSwxKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZS1mb2N1czsKICAgICAgfQoKICAgICAgLnVuZGVybGluZS5pcy1oaWdobGlnaHRlZCAuZm9jdXNlZC1saW5lIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXM7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgogICAgICAudW5kZXJsaW5lLmlzLWludmFsaWQgLmZvY3VzZWQtbGluZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW52YWxpZC1jb2xvciwgdmFyKC0tZXJyb3ItY29sb3IpKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXM7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgogICAgICAudW5mb2N1c2VkLWxpbmUgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItdW5kZXJsaW5lOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudW5mb2N1c2VkLWxpbmUgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBkYXNoZWQ7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXVuZGVybGluZS1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgLmlucHV0LXdyYXBwZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtYXV0bzsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtcmVsYXRpdmU7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGZvbnQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuMjVzLCB3aWR0aCAwLjI1czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMsIHdpZHRoIDAuMjVzOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogbGVmdCB0b3A7CiAgICAgICAgLyogRml4IGZvciBzYWZhcmkgbm90IGZvY3VzaW5nIDAtaGVpZ2h0IGRhdGUvdGltZSBpbnB1dHMgd2l0aCAtd2Via2l0LWFwcGVyYW5jZTogbm9uZTsgKi8KICAgICAgICBtaW4taGVpZ2h0OiAxcHg7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLW5vd3JhcDsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRyYW5zaXRpb24tZWFzaW5nOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1mbG9hdGluZyA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTc1JSkgc2NhbGUoMC43NSk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03NSUpIHNjYWxlKDAuNzUpOwoKICAgICAgICAvKiBTaW5jZSB3ZSBzY2FsZSB0byA3NS8xMDAgb2YgdGhlIHNpemUsIHdlIGFjdHVhbGx5IGhhdmUgMTAwLzc1IG9mIHRoZQogICAgICAgIG9yaWdpbmFsIHNwYWNlIG5vdyBhdmFpbGFibGUgKi8KICAgICAgICB3aWR0aDogMTMzJTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsLWZsb2F0aW5nOwogICAgICB9CgogICAgICA6aG9zdCg6ZGlyKHJ0bCkpIC5pbnB1dC1jb250ZW50LmxhYmVsLWlzLWZsb2F0aW5nIDo6c2xvdHRlZChsYWJlbCksCiAgICAgIDpob3N0KDpkaXIocnRsKSkgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtZmxvYXRpbmcgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1sYWJlbCkgewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGxlZnQ6IGF1dG87CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiByaWdodCB0b3A7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogcmlnaHQgdG9wOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQobGFiZWwpLAogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWdobGlnaHRlZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWwtZm9jdXM7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWxhYmVsKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5sYWJlbC1pcy1oaWRkZW4gOjpzbG90dGVkKGxhYmVsKSwKICAgICAgLmlucHV0LWNvbnRlbnQubGFiZWwtaXMtaGlkZGVuIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtbGFiZWwpIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZChpcm9uLWlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlyb24tYXV0b2dyb3ctdGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoLnBhcGVyLWlucHV0LWlucHV0KSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLXNoYXJlZC1pbnB1dC1zdHlsZTsKICAgICAgICAvKiBUaGUgYXBwbHkgc2hpbSBkb2Vzbid0IGFwcGx5IHRoZSBuZXN0ZWQgY29sb3IgY3VzdG9tIHByb3BlcnR5LAogICAgICAgICAgc28gd2UgaGF2ZSB0byByZS1hcHBseSBpdCBoZXJlLiAqLwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDsKICAgICAgfQoKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiwKICAgICAgLmlucHV0LWNvbnRlbnQgOjpzbG90dGVkKGlucHV0KTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1zcGlubmVyOwogICAgICB9CgogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZChpbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlyb24taW5wdXQpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZCh0ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmZvY3VzZWQgOjpzbG90dGVkKGlyb24tYXV0b2dyb3ctdGV4dGFyZWEpLAogICAgICAuaW5wdXQtY29udGVudC5mb2N1c2VkIDo6c2xvdHRlZCgucGFwZXItaW5wdXQtaW5wdXQpIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtZm9jdXM7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKGlucHV0KSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaXJvbi1pbnB1dCksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKHRleHRhcmVhKSwKICAgICAgLmlucHV0LWNvbnRlbnQuaXMtaW52YWxpZCA6OnNsb3R0ZWQoaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYSksCiAgICAgIC5pbnB1dC1jb250ZW50LmlzLWludmFsaWQgOjpzbG90dGVkKC5wYXBlci1pbnB1dC1pbnB1dCkgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1pbnZhbGlkOwogICAgICB9CgogICAgICAucHJlZml4IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1ub25lOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LXByZWZpeDsKICAgICAgfQoKICAgICAgLnN1ZmZpeCA6OnNsb3R0ZWQoKikgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXN1YmhlYWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXgtbm9uZTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtc3VmZml4OwogICAgICB9CgogICAgICAvKiBGaXJlZm94IHNldHMgYSBtaW4td2lkdGggb24gdGhlIGlucHV0LCB3aGljaCBjYW4gY2F1c2UgbGF5b3V0IGlzc3VlcyAqLwogICAgICAuaW5wdXQtY29udGVudCA6OnNsb3R0ZWQoaW5wdXQpIHsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC5pbnB1dC1jb250ZW50IDo6c2xvdHRlZCh0ZXh0YXJlYSkgewogICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgfQoKICAgICAgLmFkZC1vbi1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5hZGQtb24tY29udGVudC5pcy1pbnZhbGlkIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnZhbGlkLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CgogICAgICAuYWRkLW9uLWNvbnRlbnQuaXMtaGlnaGxpZ2h0ZWQgOjpzbG90dGVkKCopIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0iZmxvYXRlZC1sYWJlbC1wbGFjZWhvbGRlciIgYXJpYS1oaWRkZW49InRydWUiIGhpZGRlbj0iW1tub0xhYmVsRmxvYXRdXSI+Jm5ic3A7PC9kaXY+CgogICAgPGRpdiBjbGFzcz0iaW5wdXQtd3JhcHBlciI+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmVmaXgiPjxzbG90IG5hbWU9InByZWZpeCI+PC9zbG90Pjwvc3Bhbj4KCiAgICAgIDxkaXYgY2xhc3MkPSJbW19jb21wdXRlSW5wdXRDb250ZW50Q2xhc3Mobm9MYWJlbEZsb2F0LGFsd2F5c0Zsb2F0TGFiZWwsZm9jdXNlZCxpbnZhbGlkLF9pbnB1dEhhc0NvbnRlbnQpXV0iIGlkPSJsYWJlbEFuZElucHV0Q29udGFpbmVyIj4KICAgICAgICA8c2xvdCBuYW1lPSJsYWJlbCI+PC9zbG90PgogICAgICAgIDxzbG90IG5hbWU9ImlucHV0Ij48L3Nsb3Q+CiAgICAgIDwvZGl2PgoKICAgICAgPHNwYW4gY2xhc3M9InN1ZmZpeCI+PHNsb3QgbmFtZT0ic3VmZml4Ij48L3Nsb3Q+PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcyQ9IltbX2NvbXB1dGVVbmRlcmxpbmVDbGFzcyhmb2N1c2VkLGludmFsaWQpXV0iPgogICAgICA8ZGl2IGNsYXNzPSJ1bmZvY3VzZWQtbGluZSI+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZvY3VzZWQtbGluZSI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzJD0iW1tfY29tcHV0ZUFkZE9uQ29udGVudENsYXNzKGZvY3VzZWQsaW52YWxpZCldXSI+CiAgICAgIDxzbG90IG5hbWU9ImFkZC1vbiI+PC9zbG90PgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWlucHV0LWVycm9yIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWludmFsaWQtY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY2FwdGlvbjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1lcnJvcjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgbGVmdDowOwogICAgICAgIHJpZ2h0OjA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgewogICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7CiAgICAgIH07CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1pbnB1dCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0KFtmb2N1c2VkXSkgewogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBpbnB1dCB7CiAgICAgICAgLyogRmlyZWZveCBzZXRzIGEgbWluLXdpZHRoIG9uIHRoZSBpbnB1dCwgd2hpY2ggY2FuIGNhdXNlIGxheW91dCBpc3N1ZXMgKi8KICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgIH0KCiAgICAgIC8qIEluIDEueCwgdGhlIDxpbnB1dD4gaXMgZGlzdHJpYnV0ZWQgdG8gcGFwZXItaW5wdXQtY29udGFpbmVyLCB3aGljaCBzdHlsZXMgaXQuCiAgICAgIEluIDIueCB0aGUgPGlyb24taW5wdXQ+IGlzIGRpc3RyaWJ1dGVkIHRvIHBhcGVyLWlucHV0LWNvbnRhaW5lciwgd2hpY2ggc3R5bGVzCiAgICAgIGl0LCBidXQgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHksIHdlIG5lZWQgdG8gcmVzZXQgc29tZQogICAgICBvZiB0aGUgbmF0aXZlIGlucHV0J3MgcHJvcGVydGllcyB0byBpbmhlcml0IChmcm9tIHRoZSBpcm9uLWlucHV0KSAqLwogICAgICBpcm9uLWlucHV0ID4gaW5wdXQgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1zaGFyZWQtaW5wdXQtc3R5bGU7CiAgICAgICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CiAgICAgICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgICAgIGxldHRlci1zcGFjaW5nOiBpbmhlcml0OwogICAgICAgIHdvcmQtc3BhY2luZzogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LXNoYWRvdzogaW5oZXJpdDsKICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICBjdXJzb3I6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIGlucHV0OmRpc2FibGVkIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQtZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLAogICAgICBpbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0LXdlYmtpdC1zcGlubmVyOwogICAgICB9CgogICAgICBpbnB1dDo6LXdlYmtpdC1jbGVhci1idXR0b24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtY2xlYXI7CiAgICAgIH0KCiAgICAgIGlucHV0Ojotd2Via2l0LWNhbGVuZGFyLXBpY2tlci1pbmRpY2F0b3IgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvcjsKICAgICAgfQoKICAgICAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0Oi1tb3otcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWNvbG9yLCB2YXIoLS1zZWNvbmRhcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICBpbnB1dDo6LW1zLWNsZWFyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbXMtY2xlYXI7CiAgICAgIH0KCiAgICAgIGlucHV0OjotbXMtcmV2ZWFsIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1pbnB1dC1jb250YWluZXItbXMtcmV2ZWFsOwogICAgICB9CgogICAgICBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pbnB1dC1jb250YWluZXItY29sb3IsIHZhcigtLXNlY29uZGFyeS10ZXh0LWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIGxhYmVsIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaW5wdXQtY29udGFpbmVyIGlkPSJjb250YWluZXIiIG5vLWxhYmVsLWZsb2F0PSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPHNsb3QgbmFtZT0icHJlZml4IiBzbG90PSJwcmVmaXgiPjwvc2xvdD4KCiAgICAgIDxsYWJlbCBoaWRkZW4kPSJbWyFsYWJlbF1dIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9yJD0iW1tfaW5wdXRJZF1dIiBzbG90PSJsYWJlbCI+W1tsYWJlbF1dPC9sYWJlbD4KCiAgICAgIDxzcGFuIGlkPSJ0ZW1wbGF0ZS1wbGFjZWhvbGRlciI+PC9zcGFuPgoKICAgICAgPHNsb3QgbmFtZT0ic3VmZml4IiBzbG90PSJzdWZmaXgiPjwvc2xvdD4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KICA8L3RlbXBsYXRlPgoKICAKICA8dGVtcGxhdGUgaWQ9InYwIj4KICAgIDxpbnB1dCBpcz0iaXJvbi1pbnB1dCIgc2xvdD0iaW5wdXQiIGNsYXNzPSJpbnB1dC1lbGVtZW50IiBpZCQ9IltbX2lucHV0SWRdXSIgYXJpYS1sYWJlbGxlZGJ5JD0iW1tfYXJpYUxhYmVsbGVkQnldXSIgYXJpYS1kZXNjcmliZWRieSQ9IltbX2FyaWFEZXNjcmliZWRCeV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgdGl0bGUkPSJbW3RpdGxlXV0iIGJpbmQtdmFsdWU9Int7dmFsdWV9fSIgaW52YWxpZD0ie3tpbnZhbGlkfX0iIHByZXZlbnQtaW52YWxpZC1pbnB1dD0iW1twcmV2ZW50SW52YWxpZElucHV0XV0iIGFsbG93ZWQtcGF0dGVybj0iW1thbGxvd2VkUGF0dGVybl1dIiB2YWxpZGF0b3I9IltbdmFsaWRhdG9yXV0iIHR5cGUkPSJbW3R5cGVdXSIgcGF0dGVybiQ9IltbcGF0dGVybl1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgbWluJD0iW1ttaW5dXSIgbWF4JD0iW1ttYXhdXSIgc3RlcCQ9Iltbc3RlcF1dIiBuYW1lJD0iW1tuYW1lXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgbGlzdCQ9IltbbGlzdF1dIiBzaXplJD0iW1tzaXplXV0iIGF1dG9jYXBpdGFsaXplJD0iW1thdXRvY2FwaXRhbGl6ZV1dIiBhdXRvY29ycmVjdCQ9IltbYXV0b2NvcnJlY3RdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiIHRhYmluZGV4JD0iW1t0YWJJbmRleF1dIiBhdXRvc2F2ZSQ9IltbYXV0b3NhdmVdXSIgcmVzdWx0cyQ9IltbcmVzdWx0c11dIiBhY2NlcHQkPSJbW2FjY2VwdF1dIiBtdWx0aXBsZSQ9IltbbXVsdGlwbGVdXSI+CiAgPC90ZW1wbGF0ZT4KCiAgPHRlbXBsYXRlIGlkPSJ2MSI+CiAgICAKICAgIDxpcm9uLWlucHV0IGJpbmQtdmFsdWU9Int7dmFsdWV9fSIgc2xvdD0iaW5wdXQiIGNsYXNzPSJpbnB1dC1lbGVtZW50IiBpZCQ9IltbX2lucHV0SWRdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYWxsb3dlZC1wYXR0ZXJuPSJbW2FsbG93ZWRQYXR0ZXJuXV0iIGludmFsaWQ9Int7aW52YWxpZH19IiB2YWxpZGF0b3I9IltbdmFsaWRhdG9yXV0iPgogICAgICA8aW5wdXQgYXJpYS1sYWJlbGxlZGJ5JD0iW1tfYXJpYUxhYmVsbGVkQnldXSIgYXJpYS1kZXNjcmliZWRieSQ9IltbX2FyaWFEZXNjcmliZWRCeV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgdGl0bGUkPSJbW3RpdGxlXV0iIHR5cGUkPSJbW3R5cGVdXSIgcGF0dGVybiQ9IltbcGF0dGVybl1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgbWluJD0iW1ttaW5dXSIgbWF4JD0iW1ttYXhdXSIgc3RlcCQ9Iltbc3RlcF1dIiBuYW1lJD0iW1tuYW1lXV0iIHBsYWNlaG9sZGVyJD0iW1twbGFjZWhvbGRlcl1dIiByZWFkb25seSQ9IltbcmVhZG9ubHldXSIgbGlzdCQ9IltbbGlzdF1dIiBzaXplJD0iW1tzaXplXV0iIGF1dG9jYXBpdGFsaXplJD0iW1thdXRvY2FwaXRhbGl6ZV1dIiBhdXRvY29ycmVjdCQ9IltbYXV0b2NvcnJlY3RdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiIHRhYmluZGV4JD0iW1t0YWJJbmRleF1dIiBhdXRvc2F2ZSQ9IltbYXV0b3NhdmVdXSIgcmVzdWx0cyQ9IltbcmVzdWx0c11dIiBhY2NlcHQkPSJbW2FjY2VwdF1dIiBtdWx0aXBsZSQ9IltbbXVsdGlwbGVdXSI+CiAgICA8L2lyb24taW5wdXQ+CiAgPC90ZW1wbGF0ZT4KCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1vdmVybGF5LWJhY2tkcm9wIj4KCiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pcm9uLW92ZXJsYXktYmFja2Ryb3AtYmFja2dyb3VuZC1jb2xvciwgIzAwMCk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnM7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wOwogICAgICB9CgogICAgICA6aG9zdCgub3BlbmVkKSB7CiAgICAgICAgb3BhY2l0eTogdmFyKC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wYWNpdHksIDAuNik7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87CiAgICAgICAgQGFwcGx5IC0taXJvbi1vdmVybGF5LWJhY2tkcm9wLW9wZW5lZDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1kcm9wZG93biI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB9CgogICAgICAjY29udGVudFdyYXBwZXIgOjpzbG90dGVkKCopIHsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgI2NvbnRlbnRXcmFwcGVyLmFuaW1hdGluZyA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0iY29udGVudFdyYXBwZXIiPgogICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItbWVudS1idXR0b24iPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIG91dGxpbmU6IG5vbmU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgY3Vyc29yOiBhdXRvOwogICAgICAgIGNvbG9yOiB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItbWVudS1idXR0b24tZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIGlyb24tZHJvcGRvd24gewogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWRyb3Bkb3duOwogICAgICB9CgogICAgICAuZHJvcGRvd24tY29udGVudCB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0yZHA7CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItbWVudS1idXR0b24tZHJvcGRvd24tYmFja2dyb3VuZCwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLW1lbnUtYnV0dG9uLWNvbnRlbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbC1hbGlnbj0idG9wIl0pIC5kcm9wZG93bi1jb250ZW50IHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIG1hcmdpbi10b3A6IC0xMHB4OwogICAgICAgIHRvcDogMTBweDsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZlcnRpY2FsLWFsaWduPSJib3R0b20iXSkgLmRyb3Bkb3duLWNvbnRlbnQgewogICAgICAgIGJvdHRvbTogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTBweDsKICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICB9CgogICAgICAjdHJpZ2dlciB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InRyaWdnZXIiIG9uLXRhcD0idG9nZ2xlIj4KICAgICAgPHNsb3QgbmFtZT0iZHJvcGRvd24tdHJpZ2dlciI+PC9zbG90PgogICAgPC9kaXY+CgogICAgPGlyb24tZHJvcGRvd24gaWQ9ImRyb3Bkb3duIiBvcGVuZWQ9Int7b3BlbmVkfX0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIHZlcnRpY2FsLWFsaWduPSJbW3ZlcnRpY2FsQWxpZ25dXSIgZHluYW1pYy1hbGlnbj0iW1tkeW5hbWljQWxpZ25dXSIgaG9yaXpvbnRhbC1vZmZzZXQ9IltbaG9yaXpvbnRhbE9mZnNldF1dIiB2ZXJ0aWNhbC1vZmZzZXQ9IltbdmVydGljYWxPZmZzZXRdXSIgbm8tb3ZlcmxhcD0iW1tub092ZXJsYXBdXSIgb3Blbi1hbmltYXRpb24tY29uZmlnPSJbW29wZW5BbmltYXRpb25Db25maWddXSIgY2xvc2UtYW5pbWF0aW9uLWNvbmZpZz0iW1tjbG9zZUFuaW1hdGlvbkNvbmZpZ11dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBmb2N1cy10YXJnZXQ9IltbX2Ryb3Bkb3duQ29udGVudF1dIiBhbGxvdy1vdXRzaWRlLXNjcm9sbD0iW1thbGxvd091dHNpZGVTY3JvbGxdXSIgcmVzdG9yZS1mb2N1cy1vbi1jbG9zZT0iW1tyZXN0b3JlRm9jdXNPbkNsb3NlXV0iIG9uLWlyb24tb3ZlcmxheS1jYW5jZWxlZD0iX19vbklyb25PdmVybGF5Q2FuY2VsZWQiPgogICAgICA8ZGl2IHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIGNsYXNzPSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8c2xvdCBpZD0iY29udGVudCIgbmFtZT0iZHJvcGRvd24tY29udGVudCI+PC9zbG90PgogICAgICA8L2Rpdj4KICAgIDwvaXJvbi1kcm9wZG93bj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKPGlyb24taWNvbnNldC1zdmcgbmFtZT0icGFwZXItZHJvcGRvd24tbWVudSIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iYXJyb3ctZHJvcC1kb3duIj48cGF0aCBkPSJNNyAxMGw1IDUgNS01eiI+PC9wYXRoPjwvZz4KPC9kZWZzPjwvc3ZnPgo8L2lyb24taWNvbnNldC1zdmc+CgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1kcm9wZG93bi1tZW51LXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKCiAgICAgICAgLyogTk9URShjZGF0YSk6IEJvdGggdmFsdWVzIGFyZSBuZWVkZWQsIHNpbmNlIHNvbWUgcGhvbmVzIHJlcXVpcmUgdGhlCiAgICAgICAgICogdmFsdWUgdG8gYmUgYHRyYW5zcGFyZW50YC4KICAgICAgICAgKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwwLDAsMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH07CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LWRpc2FibGVkOwogICAgICB9CgogICAgICA6aG9zdChbbm9pbmtdKSBwYXBlci1yaXBwbGUgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtuby1sYWJlbC1mbG9hdF0pIHBhcGVyLXJpcHBsZSB7CiAgICAgICAgdG9wOiA4cHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXJpcHBsZSB7CiAgICAgICAgdG9wOiAxMnB4OwogICAgICAgIGxlZnQ6IDBweDsKICAgICAgICBib3R0b206IDhweDsKICAgICAgICByaWdodDogMHB4OwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1kcm9wZG93bi1tZW51LXJpcHBsZTsKICAgICAgfQoKICAgICAgcGFwZXItbWVudS1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBhZGRpbmc6IDA7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtYnV0dG9uOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZHJvcGRvd24tbWVudS1pbnB1dDsKICAgICAgfQoKICAgICAgaXJvbi1pY29uIHsKICAgICAgICBjb2xvcjogdmFyKC0tZGlzYWJsZWQtdGV4dC1jb2xvcik7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWRyb3Bkb3duLW1lbnUtaWNvbjsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItZHJvcGRvd24tbWVudSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWRyb3Bkb3duLW1lbnUtc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KCiAgICAKICAgIDxzcGFuIHJvbGU9ImJ1dHRvbiI+PC9zcGFuPgogICAgPHBhcGVyLW1lbnUtYnV0dG9uIGlkPSJtZW51QnV0dG9uIiB2ZXJ0aWNhbC1hbGlnbj0iW1t2ZXJ0aWNhbEFsaWduXV0iIGhvcml6b250YWwtYWxpZ249IltbaG9yaXpvbnRhbEFsaWduXV0iIGR5bmFtaWMtYWxpZ249IltbZHluYW1pY0FsaWduXV0iIHZlcnRpY2FsLW9mZnNldD0iW1tfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldChub0xhYmVsRmxvYXQsIHZlcnRpY2FsT2Zmc2V0KV1dIiBkaXNhYmxlZD0iW1tkaXNhYmxlZF1dIiBuby1hbmltYXRpb25zPSJbW25vQW5pbWF0aW9uc11dIiBvbi1pcm9uLXNlbGVjdD0iX29uSXJvblNlbGVjdCIgb24taXJvbi1kZXNlbGVjdD0iX29uSXJvbkRlc2VsZWN0IiBvcGVuZWQ9Int7b3BlbmVkfX0iIGNsb3NlLW9uLWFjdGl2YXRlIGFsbG93LW91dHNpZGUtc2Nyb2xsPSJbW2FsbG93T3V0c2lkZVNjcm9sbF1dIiByZXN0b3JlLWZvY3VzLW9uLWNsb3NlPSJbW3Jlc3RvcmVGb2N1c09uQ2xvc2VdXSI+CiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi10cmlnZ2VyIiBzbG90PSJkcm9wZG93bi10cmlnZ2VyIj4KICAgICAgICA8cGFwZXItcmlwcGxlPjwvcGFwZXItcmlwcGxlPgogICAgICAgIAogICAgICAgIDxwYXBlci1pbnB1dCB0eXBlPSJ0ZXh0IiBpbnZhbGlkPSJbW2ludmFsaWRdXSIgcmVhZG9ubHkgZGlzYWJsZWQ9IltbZGlzYWJsZWRdXSIgdmFsdWU9IltbdmFsdWVdXSIgcGxhY2Vob2xkZXI9IltbcGxhY2Vob2xkZXJdXSIgZXJyb3ItbWVzc2FnZT0iW1tlcnJvck1lc3NhZ2VdXSIgYWx3YXlzLWZsb2F0LWxhYmVsPSJbW2Fsd2F5c0Zsb2F0TGFiZWxdXSIgbm8tbGFiZWwtZmxvYXQ9Iltbbm9MYWJlbEZsb2F0XV0iIGxhYmVsPSJbW2xhYmVsXV0iPgogICAgICAgICAgCiAgICAgICAgICA8aXJvbi1pY29uIGljb249InBhcGVyLWRyb3Bkb3duLW1lbnU6YXJyb3ctZHJvcC1kb3duIiBzdWZmaXggc2xvdD0ic3VmZml4Ij48L2lyb24taWNvbj4KICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8L2Rpdj4KICAgICAgPHNsb3QgaWQ9ImNvbnRlbnQiIG5hbWU9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPjwvc2xvdD4KICAgIDwvcGFwZXItbWVudS1idXR0b24+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItbGlzdGJveCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogOHB4IDA7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLWxpc3Rib3gtYmFja2dyb3VuZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWxpc3Rib3gtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1saXN0Ym94OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1pdGVtLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QsIC5wYXBlci1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1taW4taGVpZ2h0LCA0OHB4KTsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgICAgfQoKICAgICAgLnBhcGVyLWl0ZW0gewogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtc3ViaGVhZDsKICAgICAgICBib3JkZXI6bm9uZTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtoaWRkZW5dKSwgLnBhcGVyLWl0ZW1baGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICA6aG9zdCguaXJvbi1zZWxlY3RlZCksIC5wYXBlci1pdGVtLmlyb24tc2VsZWN0ZWQgewogICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLXNlbGVjdGVkLXdlaWdodCwgYm9sZCk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tc2VsZWN0ZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pLCAucGFwZXItaXRlbVtkaXNhYmxlZF0gewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pdGVtLWRpc2FibGVkLWNvbG9yLCB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWl0ZW0tZGlzYWJsZWQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cyksIC5wYXBlci1pdGVtOmZvY3VzIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogMDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1mb2N1c2VkOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpOmJlZm9yZSwgLnBhcGVyLWl0ZW06Zm9jdXM6YmVmb3JlIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwoKICAgICAgICBiYWNrZ3JvdW5kOiBjdXJyZW50Q29sb3I7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgb3BhY2l0eTogdmFyKC0tZGFyay1kaXZpZGVyLW9wYWNpdHkpOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtLWZvY3VzZWQtYmVmb3JlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1pdGVtIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItaXRlbS1zaGFyZWQtc3R5bGVzIj4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1zdWJoZWFkOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pdGVtOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHNsb3Q+PC9zbG90PgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1iYWNrZW5kIj4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1zdG9yYWdlIj4KICAKPC9kb20tbW9kdWxlPgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtdGFnLWZpbHRlcmVyIj4KICA8dGVtcGxhdGU+CiAgICA8cGFwZXItaW5wdXQgbm8tbGFiZWwtZmxvYXQgbGFiZWw9IkZpbHRlciB0YWdzIChyZWd1bGFyIGV4cHJlc3Npb25zIHN1cHBvcnRlZCkiIHZhbHVlPSJ7e190YWdGaWx0ZXJ9fSIgY2xhc3M9InNlYXJjaC1pbnB1dCI+CiAgICAgIDxpcm9uLWljb24gcHJlZml4IGljb249InNlYXJjaCIgc2xvdD0icHJlZml4Ij48L2lyb24taWNvbj4KICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW46IDEwcHggNXB4IDEwcHggMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmxheW91dC5ob3Jpem9udGFsLAogICAgICAubGF5b3V0LnZlcnRpY2FsIHsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmxheW91dC5pbmxpbmUgewogICAgICAgIGRpc3BsYXk6IC1tcy1pbmxpbmUtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWlubGluZS1mbGV4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICB9CgogICAgICAubGF5b3V0Lmhvcml6b250YWwgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIC13ZWJraXQtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CgogICAgICAubGF5b3V0LnZlcnRpY2FsIHsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAtd2Via2l0LWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQoKICAgICAgLmxheW91dC53cmFwIHsKICAgICAgICAtbXMtZmxleC13cmFwOiB3cmFwOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgfQoKICAgICAgLmxheW91dC5uby13cmFwIHsKICAgICAgICAtbXMtZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgLXdlYmtpdC1mbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXIsCiAgICAgIC5sYXlvdXQuY2VudGVyLWNlbnRlciB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAuZmxleCB7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAwLjAwMDAwMDAwMXB4OwogICAgICAgIC13ZWJraXQtZmxleDogMTsKICAgICAgICBmbGV4OiAxOwogICAgICAgIC13ZWJraXQtZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgICBmbGV4LWJhc2lzOiAwLjAwMDAwMDAwMXB4OwogICAgICB9CgogICAgICAuZmxleC1hdXRvIHsKICAgICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDEgYXV0bzsKICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICAgICAgfQoKICAgICAgLmZsZXgtbm9uZSB7CiAgICAgICAgLW1zLWZsZXg6IG5vbmU7CiAgICAgICAgLXdlYmtpdC1mbGV4OiBub25lOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtcmV2ZXJzZSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAubGF5b3V0Lmhvcml6b250YWwtcmV2ZXJzZSwKICAgICAgLmxheW91dC52ZXJ0aWNhbC1yZXZlcnNlIHsKICAgICAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgICAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLmxheW91dC5ob3Jpem9udGFsLXJldmVyc2UgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOwogICAgICB9CgogICAgICAubGF5b3V0LnZlcnRpY2FsLXJldmVyc2UgewogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgLXdlYmtpdC1mbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlOwogICAgICB9CgogICAgICAubGF5b3V0LndyYXAtcmV2ZXJzZSB7CiAgICAgICAgLW1zLWZsZXgtd3JhcDogd3JhcC1yZXZlcnNlOwogICAgICAgIC13ZWJraXQtZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgICAgZmxleC13cmFwOiB3cmFwLXJldmVyc2U7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWZsZXgtYWxpZ25tZW50Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gY3Jvc3MgYXhpcy4KICAgICAgICovCiAgICAgIC5sYXlvdXQuc3RhcnQgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdGFydDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmNlbnRlciwKICAgICAgLmxheW91dC5jZW50ZXItY2VudGVyIHsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgIC13ZWJraXQtYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZCB7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmFzZWxpbmUgewogICAgICAgIC1tcy1mbGV4LWFsaWduOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IHN0YXJ0OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItanVzdGlmaWVkLAogICAgICAubGF5b3V0LmNlbnRlci1jZW50ZXIgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1qdXN0aWZpZWQgewogICAgICAgIC1tcy1mbGV4LXBhY2s6IGVuZDsKICAgICAgICAtd2Via2l0LWp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5hcm91bmQtanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBkaXN0cmlidXRlOwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuanVzdGlmaWVkIHsKICAgICAgICAtbXMtZmxleC1wYWNrOiBqdXN0aWZ5OwogICAgICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGYgYWxpZ25tZW50LgogICAgICAgKi8KICAgICAgLnNlbGYtc3RhcnQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAuc2VsZi1jZW50ZXIgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICB9CgogICAgICAuc2VsZi1lbmQgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtZW5kOwogICAgICB9CgogICAgICAuc2VsZi1zdHJldGNoIHsKICAgICAgICAtbXMtYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IHN0cmV0Y2g7CiAgICAgICAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICAgICAgfQoKICAgICAgLnNlbGYtYmFzZWxpbmUgewogICAgICAgIC1tcy1hbGlnbi1zZWxmOiBiYXNlbGluZTsKICAgICAgICAtd2Via2l0LWFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICAgIGFsaWduLXNlbGY6IGJhc2VsaW5lOwogICAgICB9CgogICAgICAvKioKICAgICAgICogbXVsdGktbGluZSBhbGlnbm1lbnQgaW4gbWFpbiBheGlzLgogICAgICAgKi8KICAgICAgLmxheW91dC5zdGFydC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IHN0YXJ0OyAgLyogSUUxMCAqLwogICAgICAgIC1tcy1hbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogZmxleC1zdGFydDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICB9CgogICAgICAubGF5b3V0LmVuZC1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGVuZDsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgICBhbGlnbi1jb250ZW50OiBmbGV4LWVuZDsKICAgICAgfQoKICAgICAgLmxheW91dC5jZW50ZXItYWxpZ25lZCB7CiAgICAgICAgLW1zLWZsZXgtbGluZS1wYWNrOiBjZW50ZXI7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAtd2Via2l0LWFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYmV0d2Vlbi1hbGlnbmVkIHsKICAgICAgICAtbXMtZmxleC1saW5lLXBhY2s6IGp1c3RpZnk7ICAvKiBJRTEwICovCiAgICAgICAgLW1zLWFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgLXdlYmtpdC1hbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5sYXlvdXQuYXJvdW5kLWFsaWduZWQgewogICAgICAgIC1tcy1mbGV4LWxpbmUtcGFjazogZGlzdHJpYnV0ZTsgIC8qIElFMTAgKi8KICAgICAgICAtbXMtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIC13ZWJraXQtYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kOwogICAgICAgIGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+Cgo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1mbGV4LWZhY3RvcnMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmZsZXgsCiAgICAgIC5mbGV4LTEgewogICAgICAgIC1tcy1mbGV4OiAxIDEgMC4wMDAwMDAwMDFweDsKICAgICAgICAtd2Via2l0LWZsZXg6IDE7CiAgICAgICAgZmxleDogMTsKICAgICAgICAtd2Via2l0LWZsZXgtYmFzaXM6IDAuMDAwMDAwMDAxcHg7CiAgICAgICAgZmxleC1iYXNpczogMC4wMDAwMDAwMDFweDsKICAgICAgfQoKICAgICAgLmZsZXgtMiB7CiAgICAgICAgLW1zLWZsZXg6IDI7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAyOwogICAgICAgIGZsZXg6IDI7CiAgICAgIH0KCiAgICAgIC5mbGV4LTMgewogICAgICAgIC1tcy1mbGV4OiAzOwogICAgICAgIC13ZWJraXQtZmxleDogMzsKICAgICAgICBmbGV4OiAzOwogICAgICB9CgogICAgICAuZmxleC00IHsKICAgICAgICAtbXMtZmxleDogNDsKICAgICAgICAtd2Via2l0LWZsZXg6IDQ7CiAgICAgICAgZmxleDogNDsKICAgICAgfQoKICAgICAgLmZsZXgtNSB7CiAgICAgICAgLW1zLWZsZXg6IDU7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA1OwogICAgICAgIGZsZXg6IDU7CiAgICAgIH0KCiAgICAgIC5mbGV4LTYgewogICAgICAgIC1tcy1mbGV4OiA2OwogICAgICAgIC13ZWJraXQtZmxleDogNjsKICAgICAgICBmbGV4OiA2OwogICAgICB9CgogICAgICAuZmxleC03IHsKICAgICAgICAtbXMtZmxleDogNzsKICAgICAgICAtd2Via2l0LWZsZXg6IDc7CiAgICAgICAgZmxleDogNzsKICAgICAgfQoKICAgICAgLmZsZXgtOCB7CiAgICAgICAgLW1zLWZsZXg6IDg7CiAgICAgICAgLXdlYmtpdC1mbGV4OiA4OwogICAgICAgIGZsZXg6IDg7CiAgICAgIH0KCiAgICAgIC5mbGV4LTkgewogICAgICAgIC1tcy1mbGV4OiA5OwogICAgICAgIC13ZWJraXQtZmxleDogOTsKICAgICAgICBmbGV4OiA5OwogICAgICB9CgogICAgICAuZmxleC0xMCB7CiAgICAgICAgLW1zLWZsZXg6IDEwOwogICAgICAgIC13ZWJraXQtZmxleDogMTA7CiAgICAgICAgZmxleDogMTA7CiAgICAgIH0KCiAgICAgIC5mbGV4LTExIHsKICAgICAgICAtbXMtZmxleDogMTE7CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxMTsKICAgICAgICBmbGV4OiAxMTsKICAgICAgfQoKICAgICAgLmZsZXgtMTIgewogICAgICAgIC1tcy1mbGV4OiAxMjsKICAgICAgICAtd2Via2l0LWZsZXg6IDEyOwogICAgICAgIGZsZXg6IDEyOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgo8ZG9tLW1vZHVsZSBpZD0iaXJvbi1wb3NpdGlvbmluZyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAuYmxvY2sgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaW52aXNpYmxlIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnJlbGF0aXZlIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIGJvZHkuZnVsbGJsZWVkIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgfQoKICAgICAgLnNjcm9sbCB7CiAgICAgICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICAvKiBmaXhlZCBwb3NpdGlvbiAqLwogICAgICAuZml4ZWQtYm90dG9tLAogICAgICAuZml4ZWQtbGVmdCwKICAgICAgLmZpeGVkLXJpZ2h0LAogICAgICAuZml4ZWQtdG9wIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIH0KCiAgICAgIC5maXhlZC10b3AgewogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9CgogICAgICAuZml4ZWQtcmlnaHQgewogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgIH0KCiAgICAgIC5maXhlZC1ib3R0b20gewogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAuZml4ZWQtbGVmdCB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKPHN0eWxlIGlzPSJjdXN0b20tc3R5bGUiPgogIDpyb290IHsKICAgIC0tdGItb3JhbmdlLXdlYWs6ICNmZmE3MjY7CiAgICAtLXRiLW9yYW5nZS1zdHJvbmc6ICNmNTdjMDA7CiAgICAtLXRiLW9yYW5nZS1kYXJrOiAjZGM3MzIwOwogICAgLS10Yi1ncmV5LWRhcmtlcjogI2UyZTJlMjsKICAgIC0tdGItZ3JleS1saWdodGVyOiAjZjNmM2YzOwogICAgLS10Yi11aS1kYXJrLWFjY2VudDogIzc1NzU3NTsKICAgIC0tdGItdWktbGlnaHQtYWNjZW50OiAjZTBlMGUwOwogICAgLS10Yi1ncmFwaC1mYWRlZDogI2UwZDRiMzsKICB9Cjwvc3R5bGU+CgoKPGRvbS1tb2R1bGUgaWQ9ImRhc2hib2FyZC1zdHlsZSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlIGluY2x1ZGU9Imlyb24tZmxleCI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIC0tc2lkZWJhci12ZXJ0aWNhbC1wYWRkaW5nOiAxNXB4OwogICAgICAgIC0tc2lkZWJhci1sZWZ0LXBhZGRpbmc6IDMwcHg7CiAgICAgIH0KCiAgICAgIFtzbG90PSdzaWRlYmFyJ10gewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIHBhZGRpbmc6IDVweCAwOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICB9CgogICAgICB0Zi1ydW5zLXNlbGVjdG9yIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgbGVmdDogdmFyKC0tc2lkZWJhci1sZWZ0LXBhZGRpbmcpOwogICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgKiAyKTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMDsKICAgICAgfQoKICAgICAgLnNlYXJjaC1pbnB1dCB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDVweCAwIDEwcHg7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gewogICAgICAgIGJvcmRlci10b3A6IHNvbGlkIDFweCByZ2JhKDAsIDAsIDAsIDAuMTIpOwogICAgICAgIHBhZGRpbmc6IHZhcigtLXNpZGViYXItdmVydGljYWwtcGFkZGluZykgMAogICAgICAgICAgdmFyKC0tc2lkZWJhci12ZXJ0aWNhbC1wYWRkaW5nKSB2YXIoLS1zaWRlYmFyLWxlZnQtcGFkZGluZyk7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAuc2lkZWJhci1zZWN0aW9uOmZpcnN0LW9mLXR5cGUgewogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbjpsYXN0LW9mLXR5cGUgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CgogICAgICAuc2lkZWJhci1zZWN0aW9uIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgbWFyZ2luOiA1cHg7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmZpcnN0LW9mLXR5cGUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gcGFwZXItYnV0dG9uOmxhc3Qtb2YtdHlwZSB7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6Zmlyc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gPiA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbiBoMyB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktODAwKTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgICAgICBtYXJnaW46IDEwcHggMCA1cHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWNoZWNrYm94IHsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCjxkb20tbW9kdWxlIGlkPSJzY3JvbGxiYXItc3R5bGUiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICB9CgogICAgICAuc2Nyb2xsYmFyOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS05MDApOwogICAgICB9CiAgICAgIC5zY3JvbGxiYXIgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRhc2hib2FyZC1sYXlvdXQiPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgaWQ9InNpZGViYXIiPgogICAgICA8c2xvdCBuYW1lPSJzaWRlYmFyIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJjZW50ZXIiPgogICAgICA8c2xvdCBuYW1lPSJjZW50ZXIiIGNsYXNzPSJzY29sbGJhciI+PC9zbG90PgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0ic2Nyb2xsYmFyLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI3NpZGViYXIgewogICAgICAgIGZsZXg6IDAgMCB2YXIoLS10Zi1kYXNoYm9hcmQtbGF5b3V0LXNpZGViYXItYmFzaXMsIDI1JSk7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG1heC13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1heC13aWR0aCwgMzUwcHgpOwogICAgICAgIG1pbi13aWR0aDogdmFyKC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1pbi13aWR0aCwgMjcwcHgpOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgIH0KCiAgICAgICNjZW50ZXIgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOjpzbG90dGVkKFtzbG90PSdjZW50ZXInXSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAudGYtZ3JhcGgtZGFzaGJvYXJkICNjZW50ZXIgewogICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1vcHRpb24tc2VsZWN0b3IiPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgaWQ9IndyYXAiPgogICAgICA8aDM+W1tuYW1lXV08L2gzPgogICAgICA8ZGl2IGNsYXNzPSJjb250ZW50LXdyYXBwZXIiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCgqKSB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICAuY29udGVudC13cmFwcGVyIDo6c2xvdHRlZCguc2VsZWN0ZWQpIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10Yi11aS1kYXJrLWFjY2VudCk7CiAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIGgzIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIG1hcmdpbjogMCAwIDVweDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWNvbGxhcHNlIj4KCiAgPHRlbXBsYXRlPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWlyb24tY29sbGFwc2UtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMzAwbXMpOwogICAgICAgIC8qIFNhZmFyaSAxMCBuZWVkcyB0aGlzIHByb3BlcnR5IHByZWZpeGVkIHRvIGNvcnJlY3RseSBhcHBseSB0aGUgY3VzdG9tIHByb3BlcnR5ICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1pcm9uLWNvbGxhcHNlLXRyYW5zaXRpb24tZHVyYXRpb24sIDMwMG1zKTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmlyb24tY29sbGFwc2UtY2xvc2VkKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdCguaXJvbi1jb2xsYXBzZS1vcGVuZWQpKSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CgogIDwvdGVtcGxhdGU+Cgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXciPgogIDx0ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcGFuZVJlbmRlcmVkXV0iIGlkPSJpZlJlbmRlcmVkIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iaGVhZGluZyIgb24tdGFwPSJfdG9nZ2xlUGFuZSIgb3Blbi1idXR0b24kPSJbW29wZW5lZF1dIj4KICAgICAgICA8c3BhbiBjbGFzcz0ibmFtZSI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc0NvbXBvc2l0ZVNlYXJjaChjYXRlZ29yeSldXSI+CiAgICAgICAgICAgICAgPHNwYW4+VGFncyBtYXRjaGluZyBtdWx0aXBsZSBleHBlcmltZW50czwvc3Bhbj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzSW52YWxpZFNlYXJjaFJlc3VsdHNdXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4mbmJzcDs8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc0NvbXBvc2l0ZVNlYXJjaChjYXRlZ29yeSldXSI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpZ2h0Ij5UYWdzIG1hdGNoaW5nIC88L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LW5hbWUiIHRpdGxlJD0iW1tjYXRlZ29yeS5uYW1lXV0iPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaWdodCI+Lzwvc3Bhbj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVW5pdmVyc2FsU2VhcmNoUXVlcnldXSI+CiAgICAgICAgICAgICAgICA8c3Bhbj4gKGFsbCB0YWdzKTwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNJbnZhbGlkU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgICAgIDxzcGFuPiA8c3Ryb25nPihtYWxmb3JtZWQgcmVndWxhciBleHByZXNzaW9uKTwvc3Ryb25nPjwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzU2VhcmNoUmVzdWx0c11dIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhdGVnb3J5LW5hbWUiIHRpdGxlJD0iW1tjYXRlZ29yeS5uYW1lXV0iPltbY2F0ZWdvcnkubmFtZV1dPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImNvdW50Ij4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVdXSI+CiAgICAgICAgICAgIDxzcGFuPltbX2NvdW50XV08L3NwYW4+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPGlyb24taWNvbiBpY29uPSJleHBhbmQtbW9yZSIgY2xhc3M9ImV4cGFuZC1hcnJvdyI+PC9pcm9uLWljb24+CiAgICAgICAgPC9zcGFuPgogICAgICA8L2J1dHRvbj4KICAgICAgCiAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tvcGVuZWRdXSIgbm8tYW5pbWF0aW9uPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPgogICAgICAgICAgPHNwYW4gaWQ9InRvcC1vZi1jb250YWluZXIiPjwvc3Bhbj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbXVsdGlwbGVQYWdlc0V4aXN0XV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJiaWctcGFnZS1idXR0b25zIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTBweDsiPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gb24tdGFwPSJfcGVyZm9ybVByZXZpb3VzUGFnZSIgZGlzYWJsZWQkPSJbWyFfaGFzUHJldmlvdXNQYWdlXV0iPlByZXZpb3VzIHBhZ2U8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIG9uLXRhcD0iX3BlcmZvcm1OZXh0UGFnZSIgZGlzYWJsZWQkPSJbWyFfaGFzTmV4dFBhZ2VdXSI+TmV4dCBwYWdlPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGlkPSJpdGVtcyI+CiAgICAgICAgICAgIDxzbG90IG5hbWU9Iml0ZW1zIj48L3Nsb3Q+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbXVsdGlwbGVQYWdlc0V4aXN0XV0iPgogICAgICAgICAgICA8ZGl2IGlkPSJjb250cm9scy1jb250YWluZXIiPgogICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMCA1cHgiPgogICAgICAgICAgICAgICAgUGFnZQogICAgICAgICAgICAgICAgPHBhcGVyLWlucHV0IGlkPSJwYWdlLWlucHV0IiB0eXBlPSJudW1iZXIiIG5vLWxhYmVsLWZsb2F0IG1pbj0iMSIgbWF4PSJbW19wYWdlQ291bnRdXSIgdmFsdWU9IltbX3BhZ2VJbnB1dFZhbHVlXV0iIG9uLWlucHV0PSJfaGFuZGxlUGFnZUlucHV0RXZlbnQiIG9uLWNoYW5nZT0iX2hhbmRsZVBhZ2VDaGFuZ2VFdmVudCIgb24tZm9jdXM9Il9oYW5kbGVQYWdlRm9jdXNFdmVudCIgb24tYmx1cj0iX2hhbmRsZVBhZ2VCbHVyRXZlbnQiPjwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICBvZiBbW19wYWdlQ291bnRdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJpZy1wYWdlLWJ1dHRvbnMiIHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyI+CiAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBvbi10YXA9Il9wZXJmb3JtUHJldmlvdXNQYWdlIiBkaXNhYmxlZCQ9IltbIV9oYXNQcmV2aW91c1BhZ2VdXSI+UHJldmlvdXMgcGFnZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gb24tdGFwPSJfcGVyZm9ybU5leHRQYWdlIiBkaXNhYmxlZCQ9IltbIV9oYXNOZXh0UGFnZV1dIj5OZXh0IHBhZ2U8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luOiAwIDVweCAxcHggMTBweDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZpcnN0LW9mLXR5cGUpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICB9CgogICAgICA6aG9zdCg6bGFzdC1vZi10eXBlKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgfQoKICAgICAgLmhlYWRpbmcgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIFtvcGVuLWJ1dHRvbl0gewogICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDAgIWltcG9ydGFudDsKICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICBbb3Blbi1idXR0b25dIC5leHBhbmQtYXJyb3cgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpOwogICAgICB9CgogICAgICAubmFtZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmxpZ2h0IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS01MDApOwogICAgICB9CgogICAgICAuY2F0ZWdvcnktbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IHByZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgICAgIHBhZGRpbmc6IDJweCAwOwogICAgICB9CgogICAgICAuY291bnQgewogICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTUwMCk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXg6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5oZWFkaW5nOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jb250ZW50IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMnB4OwogICAgICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAycHg7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGVkZWRlOwogICAgICAgIHBhZGRpbmc6IDE1cHg7CiAgICAgIH0KCiAgICAgIC5saWdodCB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWdyZXktNTAwKTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciB7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2NvbnRyb2xzLWNvbnRhaW5lciBwYXBlci1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmJpZy1wYWdlLWJ1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdGItdWktbGlnaHQtYWNjZW50KTsKICAgICAgICBjb2xvcjogdmFyKC0tdGItdWktZGFyay1hY2NlbnQpOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmbGV4LWJhc2lzOiAwOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgIH0KCiAgICAgIC5iaWctcGFnZS1idXR0b25zIHBhcGVyLWJ1dHRvbltkaXNhYmxlZF0gewogICAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIH0KCiAgICAgIHNsb3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgICNwYWdlLWlucHV0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IHZhcigtLXRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3LXBhZ2UtaW5wdXQtd2lkdGgsIDEwMCUpOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItZGlhbG9nLXNoYXJlZC1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbjogMjRweCA0MHB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1kaWFsb2ctYmFja2dyb3VuZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yKSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLWRpYWxvZy1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtYm9keTE7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi0xNmRwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZzsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG1hcmdpbi10b3A6IDIwcHg7CiAgICAgICAgcGFkZGluZzogMCAyNHB4OwogICAgICB9CgogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgubm8tcGFkZGluZykgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIAogICAgICA6aG9zdCA+IDo6c2xvdHRlZCgqOmZpcnN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKjpsYXN0LWNoaWxkKSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgfQoKICAgICAgLyogSW4gMS54LCB0aGlzIHNlbGVjdG9yIHdhcyBgOmhvc3QgPiA6OmNvbnRlbnQgaDJgLiBJbiAyLnggPHNsb3Q+IGFsbG93cwogICAgICB0byBzZWxlY3QgZGlyZWN0IGNoaWxkcmVuIG9ubHksIHdoaWNoIGluY3JlYXNlcyB0aGUgd2VpZ2h0IG9mIHRoaXMKICAgICAgc2VsZWN0b3IsIHNvIHdlIGhhdmUgdG8gcmUtZGVmaW5lIGZpcnN0LWNoaWxkL2xhc3QtY2hpbGQgbWFyZ2lucyBiZWxvdy4gKi8KICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoaDIpIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgbWFyZ2luOiAwOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LXRpdGxlOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTsKICAgICAgfQoKICAgICAgLyogQXBwbHkgbWl4aW4gYWdhaW4sIGluIGNhc2UgaXQgc2V0cyBtYXJnaW4tdG9wLiAqLwogICAgICA6aG9zdCA+IDo6c2xvdHRlZChoMjpmaXJzdC1jaGlsZCkgewogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXRpdGxlOwogICAgICB9CgogICAgICAvKiBBcHBseSBtaXhpbiBhZ2FpbiwgaW4gY2FzZSBpdCBzZXRzIG1hcmdpbi1ib3R0b20uICovCiAgICAgIDpob3N0ID4gOjpzbG90dGVkKGgyOmxhc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogICAgICAgIEBhcHBseSAtLXBhcGVyLWRpYWxvZy10aXRsZTsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLnBhcGVyLWRpYWxvZy1idXR0b25zKSwKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoLmJ1dHRvbnMpIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogOHB4IDhweCA4cHggMjRweDsKICAgICAgICBtYXJnaW46IDA7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1kaWFsb2ctYnV0dG9uLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWRpYWxvZyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlIGluY2x1ZGU9InBhcGVyLWRpYWxvZy1zaGFyZWQtc3R5bGVzIj48L3N0eWxlPgogICAgPHNsb3Q+PC9zbG90PgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtY29sb3Itc2NhbGUiPgogIAogIAo8L2RvbS1tb2R1bGU+CgoKCgo8aXJvbi1pY29uc2V0LXN2ZyBuYW1lPSJpY29ucyIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iM2Qtcm90YXRpb24iPjxwYXRoIGQ9Ik03LjUyIDIxLjQ4QzQuMjUgMTkuOTQgMS45MSAxNi43NiAxLjU1IDEzSC4wNUMuNTYgMTkuMTYgNS43MSAyNCAxMiAyNGwuNjYtLjAzLTMuODEtMy44MS0xLjMzIDEuMzJ6bS44OS02LjUyYy0uMTkgMC0uMzctLjAzLS41Mi0uMDgtLjE2LS4wNi0uMjktLjEzLS40LS4yNC0uMTEtLjEtLjItLjIyLS4yNi0uMzctLjA2LS4xNC0uMDktLjMtLjA5LS40N2gtMS4zYzAgLjM2LjA3LjY4LjIxLjk1LjE0LjI3LjMzLjUuNTYuNjkuMjQuMTguNTEuMzIuODIuNDEuMy4xLjYyLjE1Ljk2LjE1LjM3IDAgLjcyLS4wNSAxLjAzLS4xNS4zMi0uMS42LS4yNS44My0uNDRzLjQyLS40My41NS0uNzJjLjEzLS4yOS4yLS42MS4yLS45NyAwLS4xOS0uMDItLjM4LS4wNy0uNTYtLjA1LS4xOC0uMTItLjM1LS4yMy0uNTEtLjEtLjE2LS4yNC0uMy0uNC0uNDMtLjE3LS4xMy0uMzctLjIzLS42MS0uMzEuMi0uMDkuMzctLjIuNTItLjMzLjE1LS4xMy4yNy0uMjcuMzctLjQyLjEtLjE1LjE3LS4zLjIyLS40Ni4wNS0uMTYuMDctLjMyLjA3LS40OCAwLS4zNi0uMDYtLjY4LS4xOC0uOTYtLjEyLS4yOC0uMjktLjUxLS41MS0uNjktLjItLjE5LS40Ny0uMzMtLjc3LS40M0M5LjEgOC4wNSA4Ljc2IDggOC4zOSA4Yy0uMzYgMC0uNjkuMDUtMSAuMTYtLjMuMTEtLjU3LjI2LS43OS40NS0uMjEuMTktLjM4LjQxLS41MS42Ny0uMTIuMjYtLjE4LjU0LS4xOC44NWgxLjNjMC0uMTcuMDMtLjMyLjA5LS40NXMuMTQtLjI1LjI1LS4zNGMuMTEtLjA5LjIzLS4xNy4zOC0uMjIuMTUtLjA1LjMtLjA4LjQ4LS4wOC40IDAgLjcuMS44OS4zMS4xOS4yLjI5LjQ5LjI5Ljg2IDAgLjE4LS4wMy4zNC0uMDguNDktLjA1LjE1LS4xNC4yNy0uMjUuMzctLjExLjEtLjI1LjE4LS40MS4yNC0uMTYuMDYtLjM2LjA5LS41OC4wOUg3LjV2MS4wM2guNzdjLjIyIDAgLjQyLjAyLjYuMDdzLjMzLjEzLjQ1LjIzYy4xMi4xMS4yMi4yNC4yOS40LjA3LjE2LjEuMzUuMS41NyAwIC40MS0uMTIuNzItLjM1LjkzLS4yMy4yMy0uNTUuMzMtLjk1LjMzem04LjU1LTUuOTJjLS4zMi0uMzMtLjctLjU5LTEuMTQtLjc3LS40My0uMTgtLjkyLS4yNy0xLjQ2LS4yN0gxMnY4aDIuM2MuNTUgMCAxLjA2LS4wOSAxLjUxLS4yNy40NS0uMTguODQtLjQzIDEuMTYtLjc2LjMyLS4zMy41Ny0uNzMuNzQtMS4xOS4xNy0uNDcuMjYtLjk5LjI2LTEuNTd2LS40YzAtLjU4LS4wOS0xLjEtLjI2LTEuNTctLjE4LS40Ny0uNDMtLjg3LS43NS0xLjJ6bS0uMzkgMy4xNmMwIC40Mi0uMDUuNzktLjE0IDEuMTMtLjEuMzMtLjI0LjYyLS40My44NS0uMTkuMjMtLjQzLjQxLS43MS41My0uMjkuMTItLjYyLjE4LS45OS4xOGgtLjkxVjkuMTJoLjk3Yy43MiAwIDEuMjcuMjMgMS42NC42OS4zOC40Ni41NyAxLjEyLjU3IDEuOTl2LjR6TTEyIDBsLS42Ni4wMyAzLjgxIDMuODEgMS4zMy0xLjMzYzMuMjcgMS41NSA1LjYxIDQuNzIgNS45NiA4LjQ4aDEuNUMyMy40NCA0Ljg0IDE4LjI5IDAgMTIgMHoiIC8+PC9nPgo8ZyBpZD0iYWNjZXNzaWJpbGl0eSI+PHBhdGggZD0iTTEyIDJjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem05IDdoLTZ2MTNoLTJ2LTZoLTJ2Nkg5VjlIM1Y3aDE4djJ6IiAvPjwvZz4KPGcgaWQ9ImFjY2Vzc2libGUiPjxjaXJjbGUgY3g9IjEyIiBjeT0iNCIgcj0iMiIgLz48cGF0aCBkPSJNMTkgMTN2LTJjLTEuNTQuMDItMy4wOS0uNzUtNC4wNy0xLjgzbC0xLjI5LTEuNDNjLS4xNy0uMTktLjM4LS4zNC0uNjEtLjQ1LS4wMSAwLS4wMS0uMDEtLjAyLS4wMUgxM2MtLjM1LS4yLS43NS0uMy0xLjE5LS4yNkMxMC43NiA3LjExIDEwIDguMDQgMTAgOS4wOVYxNWMwIDEuMS45IDIgMiAyaDV2NWgydi01LjVjMC0xLjEtLjktMi0yLTJoLTN2LTMuNDVjMS4yOSAxLjA3IDMuMjUgMS45NCA1IDEuOTV6bS02LjE3IDVjLS40MSAxLjE2LTEuNTIgMi0yLjgzIDItMS42NiAwLTMtMS4zNC0zLTMgMC0xLjMxLjg0LTIuNDEgMi0yLjgzVjEyLjFjLTIuMjguNDYtNCAyLjQ4LTQgNC45IDAgMi43NiAyLjI0IDUgNSA1IDIuNDIgMCA0LjQ0LTEuNzIgNC45LTRoLTIuMDd6IiAvPjwvZz4KPGcgaWQ9ImFjY291bnQtYmFsYW5jZSI+PHBhdGggZD0iTTQgMTB2N2gzdi03SDR6bTYgMHY3aDN2LTdoLTN6TTIgMjJoMTl2LTNIMnYzem0xNC0xMnY3aDN2LTdoLTN6bS00LjUtOUwyIDZ2MmgxOVY2bC05LjUtNXoiIC8+PC9nPgo8ZyBpZD0iYWNjb3VudC1iYWxhbmNlLXdhbGxldCI+PHBhdGggZD0iTTIxIDE4djFjMCAxLjEtLjkgMi0yIDJINWMtMS4xMSAwLTItLjktMi0yVjVjMC0xLjEuODktMiAyLTJoMTRjMS4xIDAgMiAuOSAyIDJ2MWgtOWMtMS4xMSAwLTIgLjktMiAydjhjMCAxLjEuODkgMiAyIDJoOXptLTktMmgxMFY4SDEydjh6bTQtMi41Yy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiIC8+PC9nPgo8ZyBpZD0iYWNjb3VudC1ib3giPjxwYXRoIGQ9Ik0zIDV2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMkg1Yy0xLjExIDAtMiAuOS0yIDJ6bTEyIDRjMCAxLjY2LTEuMzQgMy0zIDNzLTMtMS4zNC0zLTMgMS4zNC0zIDMtMyAzIDEuMzQgMyAzem0tOSA4YzAtMiA0LTMuMSA2LTMuMXM2IDEuMSA2IDMuMXYxSDZ2LTF6IiAvPjwvZz4KPGcgaWQ9ImFjY291bnQtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAzYzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptMCAxNC4yYy0yLjUgMC00LjcxLTEuMjgtNi0zLjIyLjAzLTEuOTkgNC0zLjA4IDYtMy4wOCAxLjk5IDAgNS45NyAxLjA5IDYgMy4wOC0xLjI5IDEuOTQtMy41IDMuMjItNiAzLjIyeiIgLz48L2c+CjxnIGlkPSJhZGQiPjxwYXRoIGQ9Ik0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6IiAvPjwvZz4KPGcgaWQ9ImFkZC1hbGVydCI+PHBhdGggZD0iTTEwLjAxIDIxLjAxYzAgMS4xLjg5IDEuOTkgMS45OSAxLjk5czEuOTktLjg5IDEuOTktMS45OWgtMy45OHptOC44Ny00LjE5VjExYzAtMy4yNS0yLjI1LTUuOTctNS4yOS02LjY5di0uNzJDMTMuNTkgMi43MSAxMi44OCAyIDEyIDJzLTEuNTkuNzEtMS41OSAxLjU5di43MkM3LjM3IDUuMDMgNS4xMiA3Ljc1IDUuMTIgMTF2NS44MkwzIDE4Ljk0VjIwaDE4di0xLjA2bC0yLjEyLTIuMTJ6TTE2IDEzLjAxaC0zdjNoLTJ2LTNIOFYxMWgzVjhoMnYzaDN2Mi4wMXoiIC8+PC9nPgo8ZyBpZD0iYWRkLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS0yIDEwaC00djRoLTJ2LTRIN3YtMmg0VjdoMnY0aDR2MnoiIC8+PC9nPgo8ZyBpZD0iYWRkLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTUgMTFoLTR2NGgtMnYtNEg3di0yaDRWN2gydjRoNHYyeiIgLz48L2c+CjxnIGlkPSJhZGQtY2lyY2xlLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMyA3aC0ydjRIN3YyaDR2NGgydi00aDR2LTJoLTRWN3ptLTEtNUM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6IiAvPjwvZz4KPGcgaWQ9ImFkZC1zaG9wcGluZy1jYXJ0Ij48cGF0aCBkPSJNMTEgOWgyVjZoM1Y0aC0zVjFoLTJ2M0g4djJoM3Yzem0tNCA5Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yem0xMCAwYy0xLjEgMC0xLjk5LjktMS45OSAycy44OSAyIDEuOTkgMiAyLS45IDItMi0uOS0yLTItMnptLTkuODMtMy4yNWwuMDMtLjEyLjktMS42M2g3LjQ1Yy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjg2LTcuMDFMMTkuNDIgNGgtLjAxbC0xLjEgMi0yLjc2IDVIOC41M2wtLjEzLS4yN0w2LjE2IDZsLS45NS0yLS45NC0ySDF2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTMgMC0uMjUtLjExLS4yNS0uMjV6IiAvPjwvZz4KPGcgaWQ9ImFsYXJtIj48cGF0aCBkPSJNMjIgNS43MmwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTcuODggMy4zOUw2LjYgMS44NiAyIDUuNzFsMS4yOSAxLjUzIDQuNTktMy44NXpNMTIuNSA4SDExdjZsNC43NSAyLjg1Ljc1LTEuMjMtNC0yLjM3Vjh6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3eiIgLz48L2c+CjxnIGlkPSJhbGFybS1hZGQiPjxwYXRoIGQ9Ik03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek0xMiA0Yy00Ljk3IDAtOSA0LjAzLTkgOXM0LjAyIDkgOSA5YzQuOTcgMCA5LTQuMDMgOS05cy00LjAzLTktOS05em0wIDE2Yy0zLjg3IDAtNy0zLjEzLTctN3MzLjEzLTcgNy03IDcgMy4xMyA3IDctMy4xMyA3LTcgN3ptMS0xMWgtMnYzSDh2MmgzdjNoMnYtM2gzdi0yaC0zVjl6IiAvPjwvZz4KPGcgaWQ9ImFsYXJtLW9mZiI+PHBhdGggZD0iTTEyIDZjMy44NyAwIDcgMy4xMyA3IDcgMCAuODQtLjE2IDEuNjUtLjQzIDIuNGwxLjUyIDEuNTJjLjU4LTEuMTkuOTEtMi41MS45MS0zLjkyIDAtNC45Ny00LjAzLTktOS05LTEuNDEgMC0yLjczLjMzLTMuOTIuOTFMOS42IDYuNDNDMTAuMzUgNi4xNiAxMS4xNiA2IDEyIDZ6bTEwLS4yOGwtNC42LTMuODYtMS4yOSAxLjUzIDQuNiAzLjg2TDIyIDUuNzJ6TTIuOTIgMi4yOUwxLjY1IDMuNTcgMi45OCA0LjlsLTEuMTEuOTMgMS40MiAxLjQyIDEuMTEtLjk0LjguOEMzLjgzIDguNjkgMyAxMC43NSAzIDEzYzAgNC45NyA0LjAyIDkgOSA5IDIuMjUgMCA0LjMxLS44MyA1Ljg5LTIuMmwyLjIgMi4yIDEuMjctMS4yN0wzLjg5IDMuMjdsLS45Ny0uOTh6bTEzLjU1IDE2LjFDMTUuMjYgMTkuMzkgMTMuNyAyMCAxMiAyMGMtMy44NyAwLTctMy4xMy03LTcgMC0xLjcuNjEtMy4yNiAxLjYxLTQuNDdsOS44NiA5Ljg2ek04LjAyIDMuMjhMNi42IDEuODZsLS44Ni43MSAxLjQyIDEuNDIuODYtLjcxeiIgLz48L2c+CjxnIGlkPSJhbGFybS1vbiI+PHBhdGggZD0iTTIyIDUuNzJsLTQuNi0zLjg2LTEuMjkgMS41MyA0LjYgMy44NkwyMiA1Ljcyek03Ljg4IDMuMzlMNi42IDEuODYgMiA1LjcxbDEuMjkgMS41MyA0LjU5LTMuODV6TTEyIDRjLTQuOTcgMC05IDQuMDMtOSA5czQuMDIgOSA5IDljNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bTAgMTZjLTMuODcgMC03LTMuMTMtNy03czMuMTMtNyA3LTcgNyAzLjEzIDcgNy0zLjEzIDctNyA3em0tMS40Ni01LjQ3TDguNDEgMTIuNGwtMS4wNiAxLjA2IDMuMTggMy4xOCA2LTYtMS4wNi0xLjA2LTQuOTMgNC45NXoiIC8+PC9nPgo8ZyBpZD0iYWxsLW91dCI+PHBhdGggZD0iTTE2LjIxIDQuMTZsNCA0di00em00IDEybC00IDRoNHptLTEyIDRsLTQtNHY0em0tNC0xMmw0LTRoLTR6bTEyLjk1LS45NWMtMi43My0yLjczLTcuMTctMi43My05LjkgMHMtMi43MyA3LjE3IDAgOS45IDcuMTcgMi43MyA5LjkgMCAyLjczLTcuMTYgMC05Ljl6bS0xLjEgOC44Yy0yLjEzIDIuMTMtNS41NyAyLjEzLTcuNyAwcy0yLjEzLTUuNTcgMC03LjcgNS41Ny0yLjEzIDcuNyAwIDIuMTMgNS41NyAwIDcuN3oiIC8+PC9nPgo8ZyBpZD0iYW5kcm9pZCI+PHBhdGggZD0iTTYgMThjMCAuNTUuNDUgMSAxIDFoMXYzLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41VjE5aDJ2My41YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNVYxOWgxYy41NSAwIDEtLjQ1IDEtMVY4SDZ2MTB6TTMuNSA4QzIuNjcgOCAyIDguNjcgMiA5LjV2N2MwIC44My42NyAxLjUgMS41IDEuNVM1IDE3LjMzIDUgMTYuNXYtN0M1IDguNjcgNC4zMyA4IDMuNSA4em0xNyAwYy0uODMgMC0xLjUuNjctMS41IDEuNXY3YzAgLjgzLjY3IDEuNSAxLjUgMS41czEuNS0uNjcgMS41LTEuNXYtN2MwLS44My0uNjctMS41LTEuNS0xLjV6bS00Ljk3LTUuODRsMS4zLTEuM2MuMi0uMi4yLS41MSAwLS43MS0uMi0uMi0uNTEtLjItLjcxIDBsLTEuNDggMS40OEMxMy44NSAxLjIzIDEyLjk1IDEgMTIgMWMtLjk2IDAtMS44Ni4yMy0yLjY2LjYzTDcuODUuMTVjLS4yLS4yLS41MS0uMi0uNzEgMC0uMi4yLS4yLjUxIDAgLjcxbDEuMzEgMS4zMUM2Ljk3IDMuMjYgNiA1LjAxIDYgN2gxMmMwLTEuOTktLjk3LTMuNzUtMi40Ny00Ljg0ek0xMCA1SDlWNGgxdjF6bTUgMGgtMVY0aDF2MXoiIC8+PC9nPgo8ZyBpZD0iYW5ub3VuY2VtZW50Ij48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDloLTJWNWgydjZ6bTAgNGgtMnYtMmgydjJ6IiAvPjwvZz4KPGcgaWQ9ImFwcHMiPjxwYXRoIGQ9Ik00IDhoNFY0SDR2NHptNiAxMmg0di00aC00djR6bS02IDBoNHYtNEg0djR6bTAtNmg0di00SDR2NHptNiAwaDR2LTRoLTR2NHptNi0xMHY0aDRWNGgtNHptLTYgNGg0VjRoLTR2NHptNiA2aDR2LTRoLTR2NHptMCA2aDR2LTRoLTR2NHoiIC8+PC9nPgo8ZyBpZD0iYXJjaGl2ZSI+PHBhdGggZD0iTTIwLjU0IDUuMjNsLTEuMzktMS42OEMxOC44OCAzLjIxIDE4LjQ3IDMgMTggM0g2Yy0uNDcgMC0uODguMjEtMS4xNi41NUwzLjQ2IDUuMjNDMy4xNyA1LjU3IDMgNi4wMiAzIDYuNVYxOWMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjYuNWMwLS40OC0uMTctLjkzLS40Ni0xLjI3ek0xMiAxNy41TDYuNSAxMkgxMHYtMmg0djJoMy41TDEyIDE3LjV6TTUuMTIgNWwuODEtMWgxMmwuOTQgMUg1LjEyeiIgLz48L2c+CjxnIGlkPSJhcnJvdy1iYWNrIj48cGF0aCBkPSJNMjAgMTFINy44M2w1LjU5LTUuNTlMMTIgNGwtOCA4IDggOCAxLjQxLTEuNDFMNy44MyAxM0gyMHYtMnoiIC8+PC9nPgo8ZyBpZD0iYXJyb3ctZG93bndhcmQiPjxwYXRoIGQ9Ik0yMCAxMmwtMS40MS0xLjQxTDEzIDE2LjE3VjRoLTJ2MTIuMTdsLTUuNTgtNS41OUw0IDEybDggOCA4LTh6IiAvPjwvZz4KPGcgaWQ9ImFycm93LWRyb3AtZG93biI+PHBhdGggZD0iTTcgMTBsNSA1IDUtNXoiIC8+PC9nPgo8ZyBpZD0iYXJyb3ctZHJvcC1kb3duLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMTJsLTQtNGg4bC00IDR6IiAvPjwvZz4KPGcgaWQ9ImFycm93LWRyb3AtdXAiPjxwYXRoIGQ9Ik03IDE0bDUtNSA1IDV6IiAvPjwvZz4KPGcgaWQ9ImFycm93LWZvcndhcmQiPjxwYXRoIGQ9Ik0xMiA0bC0xLjQxIDEuNDFMMTYuMTcgMTFINHYyaDEyLjE3bC01LjU4IDUuNTlMMTIgMjBsOC04eiIgLz48L2c+CjxnIGlkPSJhcnJvdy11cHdhcmQiPjxwYXRoIGQ9Ik00IDEybDEuNDEgMS40MUwxMSA3LjgzVjIwaDJWNy44M2w1LjU4IDUuNTlMMjAgMTJsLTgtOC04IDh6IiAvPjwvZz4KPGcgaWQ9ImFzcGVjdC1yYXRpbyI+PHBhdGggZD0iTTE5IDEyaC0ydjNoLTN2Mmg1di01ek03IDloM1Y3SDV2NWgyVjl6bTE0LTZIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnoiIC8+PC9nPgo8ZyBpZD0iYXNzZXNzbWVudCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIgLz48L2c+CjxnIGlkPSJhc3NpZ25tZW50Ij48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTIgMTRIN3YtMmg3djJ6bTMtNEg3di0yaDEwdjJ6bTAtNEg3VjdoMTB2MnoiIC8+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1pbmQiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMCA0YzEuNjYgMCAzIDEuMzQgMyAzcy0xLjM0IDMtMyAzLTMtMS4zNC0zLTMgMS4zNC0zIDMtM3ptNiAxMkg2di0xLjRjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xVjE5eiIgLz48L2c+CjxnIGlkPSJhc3NpZ25tZW50LWxhdGUiPjxwYXRoIGQ9Ik0xOSAzaC00LjE4QzE0LjQgMS44NCAxMy4zIDEgMTIgMWMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS02IDE1aC0ydi0yaDJ2MnptMC00aC0yVjhoMnY2em0tMS05Yy0uNTUgMC0xLS40NS0xLTFzLjQ1LTEgMS0xIDEgLjQ1IDEgMS0uNDUgMS0xIDF6IiAvPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtcmV0dXJuIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bTQgMTJoLTR2M2wtNS01IDUtNXYzaDR2NHoiIC8+PC9nPgo8ZyBpZD0iYXNzaWdubWVudC1yZXR1cm5lZCI+PHBhdGggZD0iTTE5IDNoLTQuMThDMTQuNCAxLjg0IDEzLjMgMSAxMiAxYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem0wIDE1bC01LTVoM1Y5aDR2NGgzbC01IDV6IiAvPjwvZz4KPGcgaWQ9ImFzc2lnbm1lbnQtdHVybmVkLWluIj48cGF0aCBkPSJNMTkgM2gtNC4xOEMxNC40IDEuODQgMTMuMyAxIDEyIDFjLTEuMyAwLTIuNC44NC0yLjgyIDJINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tNyAwYy41NSAwIDEgLjQ1IDEgMXMtLjQ1IDEtMSAxLTEtLjQ1LTEtMSAuNDUtMSAxLTF6bS0yIDE0bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6IiAvPjwvZz4KPGcgaWQ9ImF0dGFjaG1lbnQiPjxwYXRoIGQ9Ik0yIDEyLjVDMiA5LjQ2IDQuNDYgNyA3LjUgN0gxOGMyLjIxIDAgNCAxLjc5IDQgNHMtMS43OSA0LTQgNEg5LjVDOC4xMiAxNSA3IDEzLjg4IDcgMTIuNVM4LjEyIDEwIDkuNSAxMEgxN3YySDkuNDFjLS41NSAwLS41NSAxIDAgMUgxOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJINy41QzUuNTcgOSA0IDEwLjU3IDQgMTIuNVM1LjU3IDE2IDcuNSAxNkgxN3YySDcuNUM0LjQ2IDE4IDIgMTUuNTQgMiAxMi41eiIgLz48L2c+CjxnIGlkPSJhdXRvcmVuZXciPjxwYXRoIGQ9Ik0xMiA2djNsNC00LTQtNHYzYy00LjQyIDAtOCAzLjU4LTggOCAwIDEuNTcuNDYgMy4wMyAxLjI0IDQuMjZMNi43IDE0LjhjLS40NS0uODMtLjctMS43OS0uNy0yLjggMC0zLjMxIDIuNjktNiA2LTZ6bTYuNzYgMS43NEwxNy4zIDkuMmMuNDQuODQuNyAxLjc5LjcgMi44IDAgMy4zMS0yLjY5IDYtNiA2di0zbC00IDQgNCA0di0zYzQuNDIgMCA4LTMuNTggOC04IDAtMS41Ny0uNDYtMy4wMy0xLjI0LTQuMjZ6IiAvPjwvZz4KPGcgaWQ9ImJhY2tzcGFjZSI+PHBhdGggZD0iTTIyIDNIN2MtLjY5IDAtMS4yMy4zNS0xLjU5Ljg4TDAgMTJsNS40MSA4LjExYy4zNi41My45Ljg5IDEuNTkuODloMTVjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptLTMgMTIuNTlMMTcuNTkgMTcgMTQgMTMuNDEgMTAuNDEgMTcgOSAxNS41OSAxMi41OSAxMiA5IDguNDEgMTAuNDEgNyAxNCAxMC41OSAxNy41OSA3IDE5IDguNDEgMTUuNDEgMTIgMTkgMTUuNTl6IiAvPjwvZz4KPGcgaWQ9ImJhY2t1cCI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0IDkuMTEgNCA2LjYgNS42NCA1LjM1IDguMDQgMi4zNCA4LjM2IDAgMTAuOTEgMCAxNGMwIDMuMzEgMi42OSA2IDYgNmgxM2MyLjc2IDAgNS0yLjI0IDUtNSAwLTIuNjQtMi4wNS00Ljc4LTQuNjUtNC45NnpNMTQgMTN2NGgtNHYtNEg3bDUtNSA1IDVoLTN6IiAvPjwvZz4KPGcgaWQ9ImJsb2NrIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNNCAxMmMwLTQuNDIgMy41OC04IDgtOCAxLjg1IDAgMy41NS42MyA0LjkgMS42OUw1LjY5IDE2LjlDNC42MyAxNS41NSA0IDEzLjg1IDQgMTJ6bTggOGMtMS44NSAwLTMuNTUtLjYzLTQuOS0xLjY5TDE4LjMxIDcuMUMxOS4zNyA4LjQ1IDIwIDEwLjE1IDIwIDEyYzAgNC40Mi0zLjU4IDgtOCA4eiIgLz48L2c+CjxnIGlkPSJib29rIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiIgLz48L2c+CjxnIGlkPSJib29rbWFyayI+PHBhdGggZD0iTTE3IDNIN2MtMS4xIDAtMS45OS45LTEuOTkgMkw1IDIxbDctMyA3IDNWNWMwLTEuMS0uOS0yLTItMnoiIC8+PC9nPgo8ZyBpZD0iYm9va21hcmstYm9yZGVyIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1bC01LTIuMThMNyAxOFY1aDEwdjEzeiIgLz48L2c+CjxnIGlkPSJidWctcmVwb3J0Ij48cGF0aCBkPSJNMjAgOGgtMi44MWMtLjQ1LS43OC0xLjA3LTEuNDUtMS44Mi0xLjk2TDE3IDQuNDEgMTUuNTkgM2wtMi4xNyAyLjE3QzEyLjk2IDUuMDYgMTIuNDkgNSAxMiA1Yy0uNDkgMC0uOTYuMDYtMS40MS4xN0w4LjQxIDMgNyA0LjQxbDEuNjIgMS42M0M3Ljg4IDYuNTUgNy4yNiA3LjIyIDYuODEgOEg0djJoMi4wOWMtLjA1LjMzLS4wOS42Ni0uMDkgMXYxSDR2MmgydjFjMCAuMzQuMDQuNjcuMDkgMUg0djJoMi44MWMxLjA0IDEuNzkgMi45NyAzIDUuMTkgM3M0LjE1LTEuMjEgNS4xOS0zSDIwdi0yaC0yLjA5Yy4wNS0uMzMuMDktLjY2LjA5LTF2LTFoMnYtMmgtMnYtMWMwLS4zNC0uMDQtLjY3LS4wOS0xSDIwVjh6bS02IDhoLTR2LTJoNHYyem0wLTRoLTR2LTJoNHYyeiIgLz48L2c+CjxnIGlkPSJidWlsZCI+PHBhdGggZD0iTTIyLjcgMTlsLTkuMS05LjFjLjktMi4zLjQtNS0xLjUtNi45LTItMi01LTIuNC03LjQtMS4zTDkgNiA2IDkgMS42IDQuN0MuNCA3LjEuOSAxMC4xIDIuOSAxMi4xYzEuOSAxLjkgNC42IDIuNCA2LjkgMS41bDkuMSA5LjFjLjQuNCAxIC40IDEuNCAwbDIuMy0yLjNjLjUtLjQuNS0xLjEuMS0xLjR6IiAvPjwvZz4KPGcgaWQ9ImNhY2hlZCI+PHBhdGggZD0iTTE5IDhsLTQgNGgzYzAgMy4zMS0yLjY5IDYtNiA2LTEuMDEgMC0xLjk3LS4yNS0yLjgtLjdsLTEuNDYgMS40NkM4Ljk3IDE5LjU0IDEwLjQzIDIwIDEyIDIwYzQuNDIgMCA4LTMuNTggOC04aDNsLTQtNHpNNiAxMmMwLTMuMzEgMi42OS02IDYtNiAxLjAxIDAgMS45Ny4yNSAyLjguN2wxLjQ2LTEuNDZDMTUuMDMgNC40NiAxMy41NyA0IDEyIDRjLTQuNDIgMC04IDMuNTgtOCA4SDFsNCA0IDQtNEg2eiIgLz48L2c+CjxnIGlkPSJjYW1lcmEtZW5oYW5jZSI+PHBhdGggZD0iTTkgM0w3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yaC0zLjE3TDE1IDNIOXptMyAxNWMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1LTIuMjQgNS01IDV6bTAtMWwxLjI1LTIuNzVMMTYgMTNsLTIuNzUtMS4yNUwxMiA5bC0xLjI1IDIuNzVMOCAxM2wyLjc1IDEuMjV6IiAvPjwvZz4KPGcgaWQ9ImNhbmNlbCI+PHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTUgMTMuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5eiIgLz48L2c+CjxnIGlkPSJjYXJkLWdpZnRjYXJkIj48cGF0aCBkPSJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xIDAtMS42Ni0xLjM0LTMtMy0zLTEuMDUgMC0xLjk2LjU0LTIuNSAxLjM1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6IiAvPjwvZz4KPGcgaWQ9ImNhcmQtbWVtYmVyc2hpcCI+PHBhdGggZD0iTTIwIDJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoNHY1bDQtMiA0IDJ2LTVoNGMxLjExIDAgMi0uODkgMi0yVjRjMC0xLjExLS44OS0yLTItMnptMCAxM0g0di0yaDE2djJ6bTAtNUg0VjRoMTZ2NnoiIC8+PC9nPgo8ZyBpZD0iY2FyZC10cmF2ZWwiPjxwYXRoIGQ9Ik0yMCA2aC0zVjRjMC0xLjExLS44OS0yLTItMkg5Yy0xLjExIDAtMiAuODktMiAydjJINGMtMS4xMSAwLTIgLjg5LTIgMnYxMWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6TTkgNGg2djJIOVY0em0xMSAxNUg0di0yaDE2djJ6bTAtNUg0VjhoM3YyaDJWOGg2djJoMlY4aDN2NnoiIC8+PC9nPgo8ZyBpZD0iY2hhbmdlLWhpc3RvcnkiPjxwYXRoIGQ9Ik0xMiA3Ljc3TDE4LjM5IDE4SDUuNjFMMTIgNy43N00xMiA0TDIgMjBoMjBMMTIgNHoiIC8+PC9nPgo8ZyBpZD0iY2hlY2siPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiIC8+PC9nPgo8ZyBpZD0iY2hlY2stYm94Ij48cGF0aCBkPSJNMTkgM0g1Yy0xLjExIDAtMiAuOS0yIDJ2MTRjMCAxLjEuODkgMiAyIDJoMTRjMS4xMSAwIDItLjkgMi0yVjVjMC0xLjEtLjg5LTItMi0yem0tOSAxNGwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIgLz48L2c+CjxnIGlkPSJjaGVjay1ib3gtb3V0bGluZS1ibGFuayI+PHBhdGggZD0iTTE5IDV2MTRINVY1aDE0bTAtMkg1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6IiAvPjwvZz4KPGcgaWQ9ImNoZWNrLWNpcmNsZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bS0yIDE1bC01LTUgMS40MS0xLjQxTDEwIDE0LjE3bDcuNTktNy41OUwxOSA4bC05IDl6IiAvPjwvZz4KPGcgaWQ9ImNoZXZyb24tbGVmdCI+PHBhdGggZD0iTTE1LjQxIDcuNDFMMTQgNmwtNiA2IDYgNiAxLjQxLTEuNDFMMTAuODMgMTJ6IiAvPjwvZz4KPGcgaWQ9ImNoZXZyb24tcmlnaHQiPjxwYXRoIGQ9Ik0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiIC8+PC9nPgo8ZyBpZD0iY2hyb21lLXJlYWRlci1tb2RlIj48cGF0aCBkPSJNMTMgMTJoN3YxLjVoLTd6bTAtMi41aDdWMTFoLTd6bTAgNWg3VjE2aC03ek0yMSA0SDNjLTEuMSAwLTIgLjktMiAydjEzYzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnptMCAxNWgtOVY2aDl2MTN6IiAvPjwvZz4KPGcgaWQ9ImNsYXNzIj48cGF0aCBkPSJNMTggMkg2Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTYgNGg1djhsLTIuNS0xLjVMNiAxMlY0eiIgLz48L2c+CjxnIGlkPSJjbGVhciI+PHBhdGggZD0iTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnoiIC8+PC9nPgo8ZyBpZD0iY2xvc2UiPjxwYXRoIGQ9Ik0xOSA2LjQxTDE3LjU5IDUgMTIgMTAuNTkgNi40MSA1IDUgNi40MSAxMC41OSAxMiA1IDE3LjU5IDYuNDEgMTkgMTIgMTMuNDEgMTcuNTkgMTkgMTkgMTcuNTkgMTMuNDEgMTJ6IiAvPjwvZz4KPGcgaWQ9ImNsb3VkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2eiIgLz48L2c+CjxnIGlkPSJjbG91ZC1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem00LjUgMTRIOGMtMS42NiAwLTMtMS4zNC0zLTNzMS4zNC0zIDMtM2wuMTQuMDFDOC41OCA4LjI4IDEwLjEzIDcgMTIgN2MyLjIxIDAgNCAxLjc5IDQgNGguNWMxLjM4IDAgMi41IDEuMTIgMi41IDIuNVMxNy44OCAxNiAxNi41IDE2eiIgLz48L2c+CjxnIGlkPSJjbG91ZC1kb25lIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xMCAxN2wtMy41LTMuNSAxLjQxLTEuNDFMMTAgMTQuMTcgMTUuMTggOWwxLjQxIDEuNDFMMTAgMTd6IiAvPjwvZz4KPGcgaWQ9ImNsb3VkLWRvd25sb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNyAxM2wtNSA1LTUtNWgzVjloNHY0aDN6IiAvPjwvZz4KPGcgaWQ9ImNsb3VkLW9mZiI+PHBhdGggZD0iTTE5LjM1IDEwLjA0QzE4LjY3IDYuNTkgMTUuNjQgNCAxMiA0Yy0xLjQ4IDAtMi44NS40My00LjAxIDEuMTdsMS40NiAxLjQ2QzEwLjIxIDYuMjMgMTEuMDggNiAxMiA2YzMuMDQgMCA1LjUgMi40NiA1LjUgNS41di41SDE5YzEuNjYgMCAzIDEuMzQgMyAzIDAgMS4xMy0uNjQgMi4xMS0xLjU2IDIuNjJsMS40NSAxLjQ1QzIzLjE2IDE4LjE2IDI0IDE2LjY4IDI0IDE1YzAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0zIDUuMjdsMi43NSAyLjc0QzIuNTYgOC4xNSAwIDEwLjc3IDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTEuNzNsMiAyTDIxIDIwLjczIDQuMjcgNCAzIDUuMjd6TTcuNzMgMTBsOCA4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoMS43M3oiIC8+PC9nPgo8ZyBpZD0iY2xvdWQtcXVldWUiPjxwYXRoIGQ9Ik0xOS4zNSAxMC4wNEMxOC42NyA2LjU5IDE1LjY0IDQgMTIgNCA5LjExIDQgNi42IDUuNjQgNS4zNSA4LjA0IDIuMzQgOC4zNiAwIDEwLjkxIDAgMTRjMCAzLjMxIDIuNjkgNiA2IDZoMTNjMi43NiAwIDUtMi4yNCA1LTUgMC0yLjY0LTIuMDUtNC43OC00LjY1LTQuOTZ6TTE5IDE4SDZjLTIuMjEgMC00LTEuNzktNC00czEuNzktNCA0LTRoLjcxQzcuMzcgNy42OSA5LjQ4IDYgMTIgNmMzLjA0IDAgNS41IDIuNDYgNS41IDUuNXYuNUgxOWMxLjY2IDAgMyAxLjM0IDMgM3MtMS4zNCAzLTMgM3oiIC8+PC9nPgo8ZyBpZD0iY2xvdWQtdXBsb2FkIj48cGF0aCBkPSJNMTkuMzUgMTAuMDRDMTguNjcgNi41OSAxNS42NCA0IDEyIDQgOS4xMSA0IDYuNiA1LjY0IDUuMzUgOC4wNCAyLjM0IDguMzYgMCAxMC45MSAwIDE0YzAgMy4zMSAyLjY5IDYgNiA2aDEzYzIuNzYgMCA1LTIuMjQgNS01IDAtMi42NC0yLjA1LTQuNzgtNC42NS00Ljk2ek0xNCAxM3Y0aC00di00SDdsNS01IDUgNWgtM3oiIC8+PC9nPgo8ZyBpZD0iY29kZSI+PHBhdGggZD0iTTkuNCAxNi42TDQuOCAxMmw0LjYtNC42TDggNmwtNiA2IDYgNiAxLjQtMS40em01LjIgMGw0LjYtNC42LTQuNi00LjZMMTYgNmw2IDYtNiA2LTEuNC0xLjR6IiAvPjwvZz4KPGcgaWQ9ImNvbXBhcmUtYXJyb3dzIj48cGF0aCBkPSJNOS4wMSAxNEgydjJoNy4wMXYzTDEzIDE1bC0zLjk5LTR2M3ptNS45OC0xdi0zSDIyVjhoLTcuMDFWNUwxMSA5bDMuOTkgNHoiIC8+PC9nPgo8ZyBpZD0iY29udGVudC1jb3B5Ij48cGF0aCBkPSJNMTYgMUg0Yy0xLjEgMC0yIC45LTIgMnYxNGgyVjNoMTJWMXptMyA0SDhjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTFjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptMCAxNkg4VjdoMTF2MTR6IiAvPjwvZz4KPGcgaWQ9ImNvbnRlbnQtY3V0Ij48cGF0aCBkPSJNOS42NCA3LjY0Yy4yMy0uNS4zNi0xLjA1LjM2LTEuNjQgMC0yLjIxLTEuNzktNC00LTRTMiAzLjc5IDIgNnMxLjc5IDQgNCA0Yy41OSAwIDEuMTQtLjEzIDEuNjQtLjM2TDEwIDEybC0yLjM2IDIuMzZDNy4xNCAxNC4xMyA2LjU5IDE0IDYgMTRjLTIuMjEgMC00IDEuNzktNCA0czEuNzkgNCA0IDQgNC0xLjc5IDQtNGMwLS41OS0uMTMtMS4xNC0uMzYtMS42NEwxMiAxNGw3IDdoM3YtMUw5LjY0IDcuNjR6TTYgOGMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptMCAxMmMtMS4xIDAtMi0uODktMi0ycy45LTIgMi0yIDIgLjg5IDIgMi0uOSAyLTIgMnptNi03LjVjLS4yOCAwLS41LS4yMi0uNS0uNXMuMjItLjUuNS0uNS41LjIyLjUuNS0uMjIuNS0uNS41ek0xOSAzbC02IDYgMiAyIDctN1YzeiIgLz48L2c+CjxnIGlkPSJjb250ZW50LXBhc3RlIj48cGF0aCBkPSJNMTkgMmgtNC4xOEMxNC40Ljg0IDEzLjMgMCAxMiAwYy0xLjMgMC0yLjQuODQtMi44MiAySDVjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTcgMGMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xem03IDE4SDVWNGgydjNoMTBWNGgydjE2eiIgLz48L2c+CjxnIGlkPSJjb3B5cmlnaHQiPjxwYXRoIGQ9Ik0xMC4wOCAxMC44NmMuMDUtLjMzLjE2LS42Mi4zLS44N3MuMzQtLjQ2LjU5LS42MmMuMjQtLjE1LjU0LS4yMi45MS0uMjMuMjMuMDEuNDQuMDUuNjMuMTMuMi4wOS4zOC4yMS41Mi4zNnMuMjUuMzMuMzQuNTMuMTMuNDIuMTQuNjRoMS43OWMtLjAyLS40Ny0uMTEtLjktLjI4LTEuMjlzLS40LS43My0uNy0xLjAxLS42Ni0uNS0xLjA4LS42Ni0uODgtLjIzLTEuMzktLjIzYy0uNjUgMC0xLjIyLjExLTEuNy4zNHMtLjg4LjUzLTEuMi45Mi0uNTYuODQtLjcxIDEuMzZTOCAxMS4yOSA4IDExLjg3di4yN2MwIC41OC4wOCAxLjEyLjIzIDEuNjRzLjM5Ljk3LjcxIDEuMzUuNzIuNjkgMS4yLjkxIDEuMDUuMzQgMS43LjM0Yy40NyAwIC45MS0uMDggMS4zMi0uMjNzLjc3LS4zNiAxLjA4LS42My41Ni0uNTguNzQtLjk0LjI5LS43NC4zLTEuMTVoLTEuNzljLS4wMS4yMS0uMDYuNC0uMTUuNThzLS4yMS4zMy0uMzYuNDYtLjMyLjIzLS41Mi4zYy0uMTkuMDctLjM5LjA5LS42LjEtLjM2LS4wMS0uNjYtLjA4LS44OS0uMjMtLjI1LS4xNi0uNDUtLjM3LS41OS0uNjJzLS4yNS0uNTUtLjMtLjg4LS4wOC0uNjctLjA4LTF2LS4yN2MwLS4zNS4wMy0uNjguMDgtMS4wMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6IiAvPjwvZz4KPGcgaWQ9ImNyZWF0ZSI+PHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiIC8+PC9nPgo8ZyBpZD0iY3JlYXRlLW5ldy1mb2xkZXIiPjxwYXRoIGQ9Ik0yMCA2aC04bC0yLTJINGMtMS4xMSAwLTEuOTkuODktMS45OSAyTDIgMThjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWOGMwLTEuMTEtLjg5LTItMi0yem0tMSA4aC0zdjNoLTJ2LTNoLTN2LTJoM1Y5aDJ2M2gzdjJ6IiAvPjwvZz4KPGcgaWQ9ImNyZWRpdC1jYXJkIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiIgLz48L2c+CjxnIGlkPSJkYXNoYm9hcmQiPjxwYXRoIGQ9Ik0zIDEzaDhWM0gzdjEwem0wIDhoOHYtNkgzdjZ6bTEwIDBoOFYxMWgtOHYxMHptMC0xOHY2aDhWM2gtOHoiIC8+PC9nPgo8ZyBpZD0iZGF0ZS1yYW5nZSI+PHBhdGggZD0iTTkgMTFIN3YyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTQgMGgtMnYyaDJ2LTJ6bTItN2gtMVYyaC0ydjJIOFYySDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDIwYzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY5aDE0djExeiIgLz48L2c+CjxnIGlkPSJkZWxldGUiPjxwYXRoIGQ9Ik02IDE5YzAgMS4xLjkgMiAyIDJoOGMxLjEgMCAyLS45IDItMlY3SDZ2MTJ6TTE5IDRoLTMuNWwtMS0xaC01bC0xIDFINXYyaDE0VjR6IiAvPjwvZz4KPGcgaWQ9ImRlbGV0ZS1mb3JldmVyIj48cGF0aCBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyem0yLjQ2LTcuMTJsMS40MS0xLjQxTDEyIDEyLjU5bDIuMTItMi4xMiAxLjQxIDEuNDFMMTMuNDEgMTRsMi4xMiAyLjEyLTEuNDEgMS40MUwxMiAxNS40MWwtMi4xMiAyLjEyLTEuNDEtMS40MUwxMC41OSAxNGwtMi4xMy0yLjEyek0xNS41IDRsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz48L2c+CjxnIGlkPSJkZWxldGUtc3dlZXAiPjxwYXRoIGQ9Ik0xNSAxNmg0djJoLTR6bTAtOGg3djJoLTd6bTAgNGg2djJoLTZ6TTMgMThjMCAxLjEuOSAyIDIgMmg2YzEuMSAwIDItLjkgMi0yVjhIM3YxMHpNMTQgNWgtM2wtMS0xSDZMNSA1SDJ2MmgxMnoiIC8+PC9nPgo8ZyBpZD0iZGVzY3JpcHRpb24iPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bTIgMTZIOHYtMmg4djJ6bTAtNEg4di0yaDh2MnptLTMtNVYzLjVMMTguNSA5SDEzeiIgLz48L2c+CjxnIGlkPSJkbnMiPjxwYXRoIGQ9Ik0yMCAxM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTF2LTZjMC0uNTUtLjQ1LTEtMS0xek03IDE5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnpNMjAgM0g0Yy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxNmMuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF6TTcgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6IiAvPjwvZz4KPGcgaWQ9ImRvbmUiPjxwYXRoIGQ9Ik05IDE2LjJMNC44IDEybC0xLjQgMS40TDkgMTkgMjEgN2wtMS40LTEuNEw5IDE2LjJ6IiAvPjwvZz4KPGcgaWQ9ImRvbmUtYWxsIj48cGF0aCBkPSJNMTggN2wtMS40MS0xLjQxLTYuMzQgNi4zNCAxLjQxIDEuNDFMMTggN3ptNC4yNC0xLjQxTDExLjY2IDE2LjE3IDcuNDggMTJsLTEuNDEgMS40MUwxMS42NiAxOWwxMi0xMi0xLjQyLTEuNDF6TS40MSAxMy40MUw2IDE5bDEuNDEtMS40MUwxLjgzIDEyIC40MSAxMy40MXoiIC8+PC9nPgo8ZyBpZD0iZG9udXQtbGFyZ2UiPjxwYXRoIGQ9Ik0xMSA1LjA4VjJjLTUgLjUtOSA0LjgxLTkgMTBzNCA5LjUgOSAxMHYtMy4wOGMtMy0uNDgtNi0zLjQtNi02LjkyczMtNi40NCA2LTYuOTJ6TTE4Ljk3IDExSDIyYy0uNDctNS00LTguNTMtOS05djMuMDhDMTYgNS41MSAxOC41NCA4IDE4Ljk3IDExek0xMyAxOC45MlYyMmM1LS40NyA4LjUzLTQgOS05aC0zLjAzYy0uNDMgMy0yLjk3IDUuNDktNS45NyA1LjkyeiIgLz48L2c+CjxnIGlkPSJkb251dC1zbWFsbCI+PHBhdGggZD0iTTExIDkuMTZWMmMtNSAuNS05IDQuNzktOSAxMHM0IDkuNSA5IDEwdi03LjE2Yy0xLS40MS0yLTEuNTItMi0yLjg0czEtMi40MyAyLTIuODR6TTE0Ljg2IDExSDIyYy0uNDgtNC43NS00LTguNTMtOS05djcuMTZjMSAuMyAxLjUyLjk4IDEuODYgMS44NHpNMTMgMTQuODRWMjJjNS0uNDcgOC41Mi00LjI1IDktOWgtNy4xNGMtLjM0Ljg2LS44NiAxLjU0LTEuODYgMS44NHoiIC8+PC9nPgo8ZyBpZD0iZHJhZnRzIj48cGF0aCBkPSJNMjEuOTkgOGMwLS43Mi0uMzctMS4zNS0uOTQtMS43TDEyIDEgMi45NSA2LjNDMi4zOCA2LjY1IDIgNy4yOCAyIDh2MTBjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMmwtLjAxLTEwek0xMiAxM0wzLjc0IDcuODQgMTIgM2w4LjI2IDQuODRMMTIgMTN6IiAvPjwvZz4KPGcgaWQ9ImVqZWN0Ij48cGF0aCBkPSJNNSAxN2gxNHYySDV6bTctMTJMNS4zMyAxNWgxMy4zNHoiIC8+PC9nPgo8ZyBpZD0iZXJyb3IiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi0yaDJ2MnptMC00aC0yVjdoMnY2eiIgLz48L2c+CjxnIGlkPSJlcnJvci1vdXRsaW5lIj48cGF0aCBkPSJNMTEgMTVoMnYyaC0yem0wLThoMnY2aC0yem0uOTktNUM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiIgLz48L2c+CjxnIGlkPSJldXJvLXN5bWJvbCI+PHBhdGggZD0iTTE1IDE4LjVjLTIuNTEgMC00LjY4LTEuNDItNS43Ni0zLjVIMTV2LTJIOC41OGMtLjA1LS4zMy0uMDgtLjY2LS4wOC0xcy4wMy0uNjcuMDgtMUgxNVY5SDkuMjRDMTAuMzIgNi45MiAxMi41IDUuNSAxNSA1LjVjMS42MSAwIDMuMDkuNTkgNC4yMyAxLjU3TDIxIDUuM0MxOS40MSAzLjg3IDE3LjMgMyAxNSAzYy0zLjkyIDAtNy4yNCAyLjUxLTguNDggNkgzdjJoMy4wNmMtLjA0LjMzLS4wNi42Ni0uMDYgMSAwIC4zNC4wMi42Ny4wNiAxSDN2MmgzLjUyYzEuMjQgMy40OSA0LjU2IDYgOC40OCA2IDIuMzEgMCA0LjQxLS44NyA2LTIuM2wtMS43OC0xLjc3Yy0xLjEzLjk4LTIuNiAxLjU3LTQuMjIgMS41N3oiIC8+PC9nPgo8ZyBpZD0iZXZlbnQiPjxwYXRoIGQ9Ik0xNyAxMmgtNXY1aDV2LTV6TTE2IDF2Mkg4VjFINnYySDVjLTEuMTEgMC0xLjk5LjktMS45OSAyTDMgMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMmgtMVYxaC0yem0zIDE4SDVWOGgxNHYxMXoiIC8+PC9nPgo8ZyBpZD0iZXZlbnQtc2VhdCI+PHBhdGggZD0iTTQgMTh2M2gzdi0zaDEwdjNoM3YtNkg0em0xNS04aDN2M2gtM3pNMiAxMGgzdjNIMnptMTUgM0g3VjVjMC0xLjEuOS0yIDItMmg2YzEuMSAwIDIgLjkgMiAydjh6IiAvPjwvZz4KPGcgaWQ9ImV4aXQtdG8tYXBwIj48cGF0aCBkPSJNMTAuMDkgMTUuNTlMMTEuNSAxN2w1LTUtNS01LTEuNDEgMS40MUwxMi42NyAxMUgzdjJoOS42N2wtMi41OCAyLjU5ek0xOSAzSDVjLTEuMTEgMC0yIC45LTIgMnY0aDJWNWgxNHYxNEg1di00SDN2NGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yeiIgLz48L2c+CjxnIGlkPSJleHBhbmQtbGVzcyI+PHBhdGggZD0iTTEyIDhsLTYgNiAxLjQxIDEuNDFMMTIgMTAuODNsNC41OSA0LjU4TDE4IDE0eiIgLz48L2c+CjxnIGlkPSJleHBhbmQtbW9yZSI+PHBhdGggZD0iTTE2LjU5IDguNTlMMTIgMTMuMTcgNy40MSA4LjU5IDYgMTBsNiA2IDYtNnoiIC8+PC9nPgo8ZyBpZD0iZXhwbG9yZSI+PHBhdGggZD0iTTEyIDEwLjljLS42MSAwLTEuMS40OS0xLjEgMS4xcy40OSAxLjEgMS4xIDEuMWMuNjEgMCAxLjEtLjQ5IDEuMS0xLjFzLS40OS0xLjEtMS4xLTEuMXpNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMi4xOSAxMi4xOUw2IDE4bDMuODEtOC4xOUwxOCA2bC0zLjgxIDguMTl6IiAvPjwvZz4KPGcgaWQ9ImV4dGVuc2lvbiI+PHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIgLz48L2c+CjxnIGlkPSJmYWNlIj48cGF0aCBkPSJNOSAxMS43NWMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6bTYgMGMtLjY5IDAtMS4yNS41Ni0xLjI1IDEuMjVzLjU2IDEuMjUgMS4yNSAxLjI1IDEuMjUtLjU2IDEuMjUtMS4yNS0uNTYtMS4yNS0xLjI1LTEuMjV6TTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04IDAtLjI5LjAyLS41OC4wNS0uODYgMi4zNi0xLjA1IDQuMjMtMi45OCA1LjIxLTUuMzdDMTEuMDcgOC4zMyAxNC4wNSAxMCAxNy40MiAxMGMuNzggMCAxLjUzLS4wOSAyLjI1LS4yNi4yMS43MS4zMyAxLjQ3LjMzIDIuMjYgMCA0LjQxLTMuNTkgOC04IDh6IiAvPjwvZz4KPGcgaWQ9ImZhdm9yaXRlIj48cGF0aCBkPSJNMTIgMjEuMzVsLTEuNDUtMS4zMkM1LjQgMTUuMzYgMiAxMi4yOCAyIDguNSAyIDUuNDIgNC40MiAzIDcuNSAzYzEuNzQgMCAzLjQxLjgxIDQuNSAyLjA5QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDMgMTkuNTggMyAyMiA1LjQyIDIyIDguNWMwIDMuNzgtMy40IDYuODYtOC41NSAxMS41NEwxMiAyMS4zNXoiIC8+PC9nPgo8ZyBpZD0iZmF2b3JpdGUtYm9yZGVyIj48cGF0aCBkPSJNMTYuNSAzYy0xLjc0IDAtMy40MS44MS00LjUgMi4wOUMxMC45MSAzLjgxIDkuMjQgMyA3LjUgMyA0LjQyIDMgMiA1LjQyIDIgOC41YzAgMy43OCAzLjQgNi44NiA4LjU1IDExLjU0TDEyIDIxLjM1bDEuNDUtMS4zMkMxOC42IDE1LjM2IDIyIDEyLjI4IDIyIDguNSAyMiA1LjQyIDE5LjU4IDMgMTYuNSAzem0tNC40IDE1LjU1bC0uMS4xLS4xLS4xQzcuMTQgMTQuMjQgNCAxMS4zOSA0IDguNSA0IDYuNSA1LjUgNSA3LjUgNWMxLjU0IDAgMy4wNC45OSAzLjU3IDIuMzZoMS44N0MxMy40NiA1Ljk5IDE0Ljk2IDUgMTYuNSA1YzIgMCAzLjUgMS41IDMuNSAzLjUgMCAyLjg5LTMuMTQgNS43NC03LjkgMTAuMDV6IiAvPjwvZz4KPGcgaWQ9ImZlZWRiYWNrIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDEyaC0ydi0yaDJ2MnptMC00aC0yVjZoMnY0eiIgLz48L2c+CjxnIGlkPSJmaWxlLWRvd25sb2FkIj48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiIgLz48L2c+CjxnIGlkPSJmaWxlLXVwbG9hZCI+PHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIgLz48L2c+CjxnIGlkPSJmaWx0ZXItbGlzdCI+PHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIgLz48L2c+CjxnIGlkPSJmaW5kLWluLXBhZ2UiPjxwYXRoIGQ9Ik0yMCAxOS41OVY4bC02LTZINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDIwYzAgMS4xLjg5IDIgMS45OSAySDE4Yy40NSAwIC44NS0uMTUgMS4xOS0uNGwtNC40My00LjQzYy0uOC41Mi0xLjc0LjgzLTIuNzYuODMtMi43NiAwLTUtMi4yNC01LTVzMi4yNC01IDUtNSA1IDIuMjQgNSA1YzAgMS4wMi0uMzEgMS45Ni0uODMgMi43NUwyMCAxOS41OXpNOSAxM2MwIDEuNjYgMS4zNCAzIDMgM3MzLTEuMzQgMy0zLTEuMzQtMy0zLTMtMyAxLjM0LTMgM3oiIC8+PC9nPgo8ZyBpZD0iZmluZC1yZXBsYWNlIj48cGF0aCBkPSJNMTEgNmMxLjM4IDAgMi42My41NiAzLjU0IDEuNDZMMTIgMTBoNlY0bC0yLjA1IDIuMDVDMTQuNjggNC43OCAxMi45MyA0IDExIDRjLTMuNTMgMC02LjQzIDIuNjEtNi45MiA2SDYuMWMuNDYtMi4yOCAyLjQ4LTQgNC45LTR6bTUuNjQgOS4xNGMuNjYtLjkgMS4xMi0xLjk3IDEuMjgtMy4xNEgxNS45Yy0uNDYgMi4yOC0yLjQ4IDQtNC45IDQtMS4zOCAwLTIuNjMtLjU2LTMuNTQtMS40NkwxMCAxMkg0djZsMi4wNS0yLjA1QzcuMzIgMTcuMjIgOS4wNyAxOCAxMSAxOGMxLjU1IDAgMi45OC0uNTEgNC4xNC0xLjM2TDIwIDIxLjQ5IDIxLjQ5IDIwbC00Ljg1LTQuODZ6IiAvPjwvZz4KPGcgaWQ9ImZpbmdlcnByaW50Ij48cGF0aCBkPSJNMTcuODEgNC40N2MtLjA4IDAtLjE2LS4wMi0uMjMtLjA2QzE1LjY2IDMuNDIgMTQgMyAxMi4wMSAzYy0xLjk4IDAtMy44Ni40Ny01LjU3IDEuNDEtLjI0LjEzLS41NC4wNC0uNjgtLjItLjEzLS4yNC0uMDQtLjU1LjItLjY4QzcuODIgMi41MiA5Ljg2IDIgMTIuMDEgMmMyLjEzIDAgMy45OS40NyA2LjAzIDEuNTIuMjUuMTMuMzQuNDMuMjEuNjctLjA5LjE4LS4yNi4yOC0uNDQuMjh6TTMuNSA5LjcyYy0uMSAwLS4yLS4wMy0uMjktLjA5LS4yMy0uMTYtLjI4LS40Ny0uMTItLjcuOTktMS40IDIuMjUtMi41IDMuNzUtMy4yN0M5Ljk4IDQuMDQgMTQgNC4wMyAxNy4xNSA1LjY1YzEuNS43NyAyLjc2IDEuODYgMy43NSAzLjI1LjE2LjIyLjExLjU0LS4xMi43LS4yMy4xNi0uNTQuMTEtLjctLjEyLS45LTEuMjYtMi4wNC0yLjI1LTMuMzktMi45NC0yLjg3LTEuNDctNi41NC0xLjQ3LTkuNC4wMS0xLjM2LjctMi41IDEuNy0zLjQgMi45Ni0uMDguMTQtLjIzLjIxLS4zOS4yMXptNi4yNSAxMi4wN2MtLjEzIDAtLjI2LS4wNS0uMzUtLjE1LS44Ny0uODctMS4zNC0xLjQzLTIuMDEtMi42NC0uNjktMS4yMy0xLjA1LTIuNzMtMS4wNS00LjM0IDAtMi45NyAyLjU0LTUuMzkgNS42Ni01LjM5czUuNjYgMi40MiA1LjY2IDUuMzljMCAuMjgtLjIyLjUtLjUuNXMtLjUtLjIyLS41LS41YzAtMi40Mi0yLjA5LTQuMzktNC42Ni00LjM5LTIuNTcgMC00LjY2IDEuOTctNC42NiA0LjM5IDAgMS40NC4zMiAyLjc3LjkzIDMuODUuNjQgMS4xNSAxLjA4IDEuNjQgMS44NSAyLjQyLjE5LjIuMTkuNTEgMCAuNzEtLjExLjEtLjI0LjE1LS4zNy4xNXptNy4xNy0xLjg1Yy0xLjE5IDAtMi4yNC0uMy0zLjEtLjg5LTEuNDktMS4wMS0yLjM4LTIuNjUtMi4zOC00LjM5IDAtLjI4LjIyLS41LjUtLjVzLjUuMjIuNS41YzAgMS40MS43MiAyLjc0IDEuOTQgMy41Ni43MS40OCAxLjU0LjcxIDIuNTQuNzEuMjQgMCAuNjQtLjAzIDEuMDQtLjEuMjctLjA1LjUzLjEzLjU4LjQxLjA1LjI3LS4xMy41My0uNDEuNTgtLjU3LjExLTEuMDcuMTItMS4yMS4xMnpNMTQuOTEgMjJjLS4wNCAwLS4wOS0uMDEtLjEzLS4wMi0xLjU5LS40NC0yLjYzLTEuMDMtMy43Mi0yLjEtMS40LTEuMzktMi4xNy0zLjI0LTIuMTctNS4yMiAwLTEuNjIgMS4zOC0yLjk0IDMuMDgtMi45NCAxLjcgMCAzLjA4IDEuMzIgMy4wOCAyLjk0IDAgMS4wNy45MyAxLjk0IDIuMDggMS45NHMyLjA4LS44NyAyLjA4LTEuOTRjMC0zLjc3LTMuMjUtNi44My03LjI1LTYuODMtMi44NCAwLTUuNDQgMS41OC02LjYxIDQuMDMtLjM5LjgxLS41OSAxLjc2LS41OSAyLjggMCAuNzguMDcgMi4wMS42NyAzLjYxLjEuMjYtLjAzLjU1LS4yOS42NC0uMjYuMS0uNTUtLjA0LS42NC0uMjktLjQ5LTEuMzEtLjczLTIuNjEtLjczLTMuOTYgMC0xLjIuMjMtMi4yOS42OC0zLjI0IDEuMzMtMi43OSA0LjI4LTQuNiA3LjUxLTQuNiA0LjU1IDAgOC4yNSAzLjUxIDguMjUgNy44MyAwIDEuNjItMS4zOCAyLjk0LTMuMDggMi45NHMtMy4wOC0xLjMyLTMuMDgtMi45NGMwLTEuMDctLjkzLTEuOTQtMi4wOC0xLjk0cy0yLjA4Ljg3LTIuMDggMS45NGMwIDEuNzEuNjYgMy4zMSAxLjg3IDQuNTEuOTUuOTQgMS44NiAxLjQ2IDMuMjcgMS44NS4yNy4wNy40Mi4zNS4zNS42MS0uMDUuMjMtLjI2LjM4LS40Ny4zOHoiIC8+PC9nPgo8ZyBpZD0iZmlyc3QtcGFnZSI+PHBhdGggZD0iTTE4LjQxIDE2LjU5TDEzLjgyIDEybDQuNTktNC41OUwxNyA2bC02IDYgNiA2ek02IDZoMnYxMkg2eiIgLz48L2c+CjxnIGlkPSJmbGFnIj48cGF0aCBkPSJNMTQuNCA2TDE0IDRINXYxN2gydi03aDUuNmwuNCAyaDdWNnoiIC8+PC9nPgo8ZyBpZD0iZmxpZ2h0LWxhbmQiPjxwYXRoIGQ9Ik0yLjUgMTloMTl2MmgtMTl6bTcuMTgtNS43M2w0LjM1IDEuMTYgNS4zMSAxLjQyYy44LjIxIDEuNjItLjI2IDEuODQtMS4wNi4yMS0uOC0uMjYtMS42Mi0xLjA2LTEuODRsLTUuMzEtMS40Mi0yLjc2LTkuMDJMMTAuMTIgMnY4LjI4TDUuMTUgOC45NWwtLjkzLTIuMzItMS40NS0uMzl2NS4xN2wxLjYuNDMgNS4zMSAxLjQzeiIgLz48L2c+CjxnIGlkPSJmbGlnaHQtdGFrZW9mZiI+PHBhdGggZD0iTTIuNSAxOWgxOXYyaC0xOXptMTkuNTctOS4zNmMtLjIxLS44LTEuMDQtMS4yOC0xLjg0LTEuMDZMMTQuOTIgMTBsLTYuOS02LjQzLTEuOTMuNTEgNC4xNCA3LjE3LTQuOTcgMS4zMy0xLjk3LTEuNTQtMS40NS4zOSAxLjgyIDMuMTYuNzcgMS4zMyAxLjYtLjQzIDUuMzEtMS40MiA0LjM1LTEuMTZMMjEgMTEuNDljLjgxLS4yMyAxLjI4LTEuMDUgMS4wNy0xLjg1eiIgLz48L2c+CjxnIGlkPSJmbGlwLXRvLWJhY2siPjxwYXRoIGQ9Ik05IDdIN3YyaDJWN3ptMCA0SDd2Mmgydi0yem0wLThjLTEuMTEgMC0yIC45LTIgMmgyVjN6bTQgMTJoLTJ2Mmgydi0yem02LTEydjJoMmMwLTEuMS0uOS0yLTItMnptLTYgMGgtMnYyaDJWM3pNOSAxN3YtMkg3YzAgMS4xLjg5IDIgMiAyem0xMC00aDJ2LTJoLTJ2MnptMC00aDJWN2gtMnYyem0wIDhjMS4xIDAgMi0uOSAyLTJoLTJ2MnpNNSA3SDN2MTJjMCAxLjEuODkgMiAyIDJoMTJ2LTJINVY3em0xMC0yaDJWM2gtMnYyem0wIDEyaDJ2LTJoLTJ2MnoiIC8+PC9nPgo8ZyBpZD0iZmxpcC10by1mcm9udCI+PHBhdGggZD0iTTMgMTNoMnYtMkgzdjJ6bTAgNGgydi0ySDN2MnptMiA0di0ySDNjMCAxLjEuODkgMiAyIDJ6TTMgOWgyVjdIM3Yyem0xMiAxMmgydi0yaC0ydjJ6bTQtMThIOWMtMS4xMSAwLTIgLjktMiAydjEwYzAgMS4xLjg5IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJIOVY1aDEwdjEwem0tOCA2aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnoiIC8+PC9nPgo8ZyBpZD0iZm9sZGVyIj48cGF0aCBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6IiAvPjwvZz4KPGcgaWQ9ImZvbGRlci1vcGVuIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bTAgMTJINFY4aDE2djEweiIgLz48L2c+CjxnIGlkPSJmb2xkZXItc2hhcmVkIj48cGF0aCBkPSJNMjAgNmgtOGwtMi0ySDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS01IDNjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyLTItLjktMi0yIC45LTIgMi0yem00IDhoLTh2LTFjMC0xLjMzIDIuNjctMiA0LTJzNCAuNjcgNCAydjF6IiAvPjwvZz4KPGcgaWQ9ImZvbnQtZG93bmxvYWQiPjxwYXRoIGQ9Ik05LjkzIDEzLjVoNC4xNEwxMiA3Ljk4ek0yMCAySDRjLTEuMSAwLTIgLjktMiAydjE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNGMwLTEuMS0uOS0yLTItMnptLTQuMDUgMTYuNWwtMS4xNC0zSDkuMTdsLTEuMTIgM0g1Ljk2bDUuMTEtMTNoMS44Nmw1LjExIDEzaC0yLjA5eiIgLz48L2c+CjxnIGlkPSJmb3J3YXJkIj48cGF0aCBkPSJNMTIgOFY0bDggOC04IDh2LTRINFY4eiIgLz48L2c+CjxnIGlkPSJmdWxsc2NyZWVuIj48cGF0aCBkPSJNNyAxNEg1djVoNXYtMkg3di0zem0tMi00aDJWN2gzVjVINXY1em0xMiA3aC0zdjJoNXYtNWgtMnYzek0xNCA1djJoM3YzaDJWNWgtNXoiIC8+PC9nPgo8ZyBpZD0iZnVsbHNjcmVlbi1leGl0Ij48cGF0aCBkPSJNNSAxNmgzdjNoMnYtNUg1djJ6bTMtOEg1djJoNVY1SDh2M3ptNiAxMWgydi0zaDN2LTJoLTV2NXptMi0xMVY1aC0ydjVoNVY4aC0zeiIgLz48L2c+CjxnIGlkPSJnLXRyYW5zbGF0ZSI+PHBhdGggZD0iTTIwIDVoLTkuMTJMMTAgMkg0Yy0xLjEgMC0yIC45LTIgMnYxM2MwIDEuMS45IDIgMiAyaDdsMSAzaDhjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnpNNy4xNyAxNC41OWMtMi4yNSAwLTQuMDktMS44My00LjA5LTQuMDlzMS44My00LjA5IDQuMDktNC4wOWMxLjA0IDAgMS45OS4zNyAyLjc0IDEuMDdsLjA3LjA2LTEuMjMgMS4xOC0uMDYtLjA1Yy0uMjktLjI3LS43OC0uNTktMS41Mi0uNTktMS4zMSAwLTIuMzggMS4wOS0yLjM4IDIuNDJzMS4wNyAyLjQyIDIuMzggMi40MmMxLjM3IDAgMS45Ni0uODcgMi4xMi0xLjQ2SDcuMDhWOS45MWgzLjk1bC4wMS4wN2MuMDQuMjEuMDUuNC4wNS42MSAwIDIuMzUtMS42MSA0LTMuOTIgNHptNi4wMy0xLjcxYy4zMy42Ljc0IDEuMTggMS4xOSAxLjdsLS41NC41My0uNjUtMi4yM3ptLjc3LS43NmgtLjk5bC0uMzEtMS4wNGgzLjk5cy0uMzQgMS4zMS0xLjU2IDIuNzRjLS41Mi0uNjItLjg5LTEuMjMtMS4xMy0xLjd6TTIxIDIwYzAgLjU1LS40NSAxLTEgMWgtN2wyLTItLjgxLTIuNzcuOTItLjkyTDE3Ljc5IDE4bC43My0uNzMtMi43MS0yLjY4Yy45LTEuMDMgMS42LTIuMjUgMS45Mi0zLjUxSDE5di0xLjA0aC0zLjY0VjloLTEuMDR2MS4wNGgtMS45NkwxMS4xOCA2SDIwYy41NSAwIDEgLjQ1IDEgMXYxM3oiIC8+PC9nPgo8ZyBpZD0iZ2F2ZWwiPjxwYXRoIGQ9Ik0xIDIxaDEydjJIMXpNNS4yNDUgOC4wN2wyLjgzLTIuODI3IDE0LjE0IDE0LjE0Mi0yLjgyOCAyLjgyOHpNMTIuMzE3IDFsNS42NTcgNS42NTYtMi44MyAyLjgzLTUuNjU0LTUuNjZ6TTMuODI1IDkuNDg1bDUuNjU3IDUuNjU3LTIuODI4IDIuODI4LTUuNjU3LTUuNjU3eiIgLz48L2c+CjxnIGlkPSJnZXN0dXJlIj48cGF0aCBkPSJNNC41OSA2Ljg5Yy43LS43MSAxLjQtMS4zNSAxLjcxLTEuMjIuNS4yIDAgMS4wMy0uMyAxLjUyLS4yNS40Mi0yLjg2IDMuODktMi44NiA2LjMxIDAgMS4yOC40OCAyLjM0IDEuMzQgMi45OC43NS41NiAxLjc0LjczIDIuNjQuNDYgMS4wNy0uMzEgMS45NS0xLjQgMy4wNi0yLjc3IDEuMjEtMS40OSAyLjgzLTMuNDQgNC4wOC0zLjQ0IDEuNjMgMCAxLjY1IDEuMDEgMS43NiAxLjc5LTMuNzguNjQtNS4zOCAzLjY3LTUuMzggNS4zNyAwIDEuNyAxLjQ0IDMuMDkgMy4yMSAzLjA5IDEuNjMgMCA0LjI5LTEuMzMgNC42OS02LjFIMjF2LTIuNWgtMi40N2MtLjE1LTEuNjUtMS4wOS00LjItNC4wMy00LjItMi4yNSAwLTQuMTggMS45MS00Ljk0IDIuODQtLjU4LjczLTIuMDYgMi40OC0yLjI5IDIuNzItLjI1LjMtLjY4Ljg0LTEuMTEuODQtLjQ1IDAtLjcyLS44My0uMzYtMS45Mi4zNS0xLjA5IDEuNC0yLjg2IDEuODUtMy41Mi43OC0xLjE0IDEuMy0xLjkyIDEuMy0zLjI4QzguOTUgMy42OSA3LjMxIDMgNi40NCAzIDUuMTIgMyAzLjk3IDQgMy43MiA0LjI1Yy0uMzYuMzYtLjY2LjY2LS44OC45M2wxLjc1IDEuNzF6bTkuMjkgMTEuNjZjLS4zMSAwLS43NC0uMjYtLjc0LS43MiAwLS42LjczLTIuMiAyLjg3LTIuNzYtLjMgMi42OS0xLjQzIDMuNDgtMi4xMyAzLjQ4eiIgLz48L2c+CjxnIGlkPSJnZXQtYXBwIj48cGF0aCBkPSJNMTkgOWgtNFYzSDl2Nkg1bDcgNyA3LTd6TTUgMTh2MmgxNHYtMkg1eiIgLz48L2c+CjxnIGlkPSJnaWYiPjxwYXRoIGQ9Ik0xMS41IDlIMTN2NmgtMS41ek05IDlINmMtLjYgMC0xIC41LTEgMXY0YzAgLjUuNCAxIDEgMWgzYy42IDAgMS0uNSAxLTF2LTJIOC41djEuNWgtMnYtM0gxMFYxMGMwLS41LS40LTEtMS0xem0xMCAxLjVWOWgtNC41djZIMTZ2LTJoMnYtMS41aC0ydi0xeiIgLz48L2c+CjxnIGlkPSJncmFkZSI+PHBhdGggZD0iTTEyIDE3LjI3TDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxeiIgLz48L2c+CjxnIGlkPSJncm91cC13b3JrIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnpNOCAxNy41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXpNOS41IDhjMC0xLjM4IDEuMTItMi41IDIuNS0yLjVzMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41UzkuNSA5LjM4IDkuNSA4em02LjUgOS41Yy0xLjM4IDAtMi41LTEuMTItMi41LTIuNXMxLjEyLTIuNSAyLjUtMi41IDIuNSAxLjEyIDIuNSAyLjUtMS4xMiAyLjUtMi41IDIuNXoiIC8+PC9nPgo8ZyBpZD0iaGVscCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTEgMTdoLTJ2LTJoMnYyem0yLjA3LTcuNzVsLS45LjkyQzEzLjQ1IDEyLjkgMTMgMTMuNSAxMyAxNWgtMnYtLjVjMC0xLjEuNDUtMi4xIDEuMTctMi44M2wxLjI0LTEuMjZjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDJIOGMwLTIuMjEgMS43OS00IDQtNHM0IDEuNzkgNCA0YzAgLjg4LS4zNiAxLjY4LS45MyAyLjI1eiIgLz48L2c+CjxnIGlkPSJoZWxwLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMSAxOGgydi0yaC0ydjJ6bTEtMTZDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4em0wLTE0Yy0yLjIxIDAtNCAxLjc5LTQgNGgyYzAtMS4xLjktMiAyLTJzMiAuOSAyIDJjMCAyLTMgMS43NS0zIDVoMmMwLTIuMjUgMy0yLjUgMy01IDAtMi4yMS0xLjc5LTQtNC00eiIgLz48L2c+CjxnIGlkPSJoaWdobGlnaHQtb2ZmIj48cGF0aCBkPSJNMTQuNTkgOEwxMiAxMC41OSA5LjQxIDggOCA5LjQxIDEwLjU5IDEyIDggMTQuNTkgOS40MSAxNiAxMiAxMy40MSAxNC41OSAxNiAxNiAxNC41OSAxMy40MSAxMiAxNiA5LjQxIDE0LjU5IDh6TTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIgLz48L2c+CjxnIGlkPSJoaXN0b3J5Ij48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiIgLz48L2c+CjxnIGlkPSJob21lIj48cGF0aCBkPSJNMTAgMjB2LTZoNHY2aDV2LThoM0wxMiAzIDIgMTJoM3Y4eiIgLz48L2c+CjxnIGlkPSJob3VyZ2xhc3MtZW1wdHkiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnptMTAgMTQuNVYyMEg4di0zLjVsNC00IDQgNHptLTQtNWwtNC00VjRoOHYzLjVsLTQgNHoiIC8+PC9nPgo8ZyBpZD0iaG91cmdsYXNzLWZ1bGwiPjxwYXRoIGQ9Ik02IDJ2NmguMDFMNiA4LjAxIDEwIDEybC00IDQgLjAxLjAxSDZWMjJoMTJ2LTUuOTloLS4wMUwxOCAxNmwtNC00IDQtMy45OS0uMDEtLjAxSDE4VjJINnoiIC8+PC9nPgo8ZyBpZD0iaHR0cCI+PHBhdGggZD0iTTQuNSAxMWgtMlY5SDF2NmgxLjV2LTIuNWgyVjE1SDZWOUg0LjV2MnptMi41LS41aDEuNVYxNUgxMHYtNC41aDEuNVY5SDd2MS41em01LjUgMEgxNFYxNWgxLjV2LTQuNUgxN1Y5aC00LjV2MS41em05LTEuNUgxOHY2aDEuNXYtMmgyYy44IDAgMS41LS43IDEuNS0xLjV2LTFjMC0uOC0uNy0xLjUtMS41LTEuNXptMCAyLjVoLTJ2LTFoMnYxeiIgLz48L2c+CjxnIGlkPSJodHRwcyI+PHBhdGggZD0iTTE4IDhoLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnptLTYgOWMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6bTMuMS05SDguOVY2YzAtMS43MSAxLjM5LTMuMSAzLjEtMy4xIDEuNzEgMCAzLjEgMS4zOSAzLjEgMy4xdjJ6IiAvPjwvZz4KPGcgaWQ9ImltcG9ydGFudC1kZXZpY2VzIj48cGF0aCBkPSJNMjMgMTEuMDFMMTggMTFjLS41NSAwLTEgLjQ1LTEgMXY5YzAgLjU1LjQ1IDEgMSAxaDVjLjU1IDAgMS0uNDUgMS0xdi05YzAtLjU1LS40NS0uOTktMS0uOTl6TTIzIDIwaC01di03aDV2N3pNMjAgMkgyQy44OSAyIDAgMi44OSAwIDR2MTJjMCAxLjEuODkgMiAyIDJoN3YySDd2Mmg4di0yaC0ydi0yaDJ2LTJIMlY0aDE4djVoMlY0YzAtMS4xMS0uOS0yLTItMnptLTguMDMgN0wxMSA2bC0uOTcgM0g3bDIuNDcgMS43Ni0uOTQgMi45MSAyLjQ3LTEuOCAyLjQ3IDEuOC0uOTQtMi45MUwxNSA5aC0zLjAzeiIgLz48L2c+CjxnIGlkPSJpbmJveCI+PHBhdGggZD0iTTE5IDNINC45OWMtMS4xMSAwLTEuOTguODktMS45OCAyTDMgMTljMCAxLjEuODggMiAxLjk5IDJIMTljMS4xIDAgMi0uOSAyLTJWNWMwLTEuMTEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEweiIgLz48L2c+CjxnIGlkPSJpbmRldGVybWluYXRlLWNoZWNrLWJveCI+PHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0tMiAxMEg3di0yaDEwdjJ6IiAvPjwvZz4KPGcgaWQ9ImluZm8iPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0xIDE1aC0ydi02aDJ2NnptMC04aC0yVjdoMnYyeiIgLz48L2c+CjxnIGlkPSJpbmZvLW91dGxpbmUiPjxwYXRoIGQ9Ik0xMSAxN2gydi02aC0ydjZ6bTEtMTVDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4ek0xMSA5aDJWN2gtMnYyeiIgLz48L2c+CjxnIGlkPSJpbnB1dCI+PHBhdGggZD0iTTIxIDMuMDFIM2MtMS4xIDAtMiAuOS0yIDJWOWgyVjQuOTloMTh2MTQuMDNIM1YxNUgxdjQuMDFjMCAxLjEuOSAxLjk4IDIgMS45OGgxOGMxLjEgMCAyLS44OCAyLTEuOTh2LTE0YzAtMS4xMS0uOS0yLTItMnpNMTEgMTZsNC00LTQtNHYzSDF2MmgxMHYzeiIgLz48L2c+CjxnIGlkPSJpbnZlcnQtY29sb3JzIj48cGF0aCBkPSJNMTcuNjYgNy45M0wxMiAyLjI3IDYuMzQgNy45M2MtMy4xMiAzLjEyLTMuMTIgOC4xOSAwIDExLjMxQzcuOSAyMC44IDkuOTUgMjEuNTggMTIgMjEuNThjMi4wNSAwIDQuMS0uNzggNS42Ni0yLjM0IDMuMTItMy4xMiAzLjEyLTguMTkgMC0xMS4zMXpNMTIgMTkuNTljLTEuNiAwLTMuMTEtLjYyLTQuMjQtMS43NkM2LjYyIDE2LjY5IDYgMTUuMTkgNiAxMy41OXMuNjItMy4xMSAxLjc2LTQuMjRMMTIgNS4xdjE0LjQ5eiIgLz48L2c+CjxnIGlkPSJsYWJlbCI+PHBhdGggZD0iTTE3LjYzIDUuODRDMTcuMjcgNS4zMyAxNi42NyA1IDE2IDVMNSA1LjAxQzMuOSA1LjAxIDMgNS45IDMgN3YxMGMwIDEuMS45IDEuOTkgMiAxLjk5TDE2IDE5Yy42NyAwIDEuMjctLjMzIDEuNjMtLjg0TDIyIDEybC00LjM3LTYuMTZ6IiAvPjwvZz4KPGcgaWQ9ImxhYmVsLW91dGxpbmUiPjxwYXRoIGQ9Ik0xNy42MyA1Ljg0QzE3LjI3IDUuMzMgMTYuNjcgNSAxNiA1TDUgNS4wMUMzLjkgNS4wMSAzIDUuOSAzIDd2MTBjMCAxLjEuOSAxLjk5IDIgMS45OUwxNiAxOWMuNjcgMCAxLjI3LS4zMyAxLjYzLS44NEwyMiAxMmwtNC4zNy02LjE2ek0xNiAxN0g1VjdoMTFsMy41NSA1TDE2IDE3eiIgLz48L2c+CjxnIGlkPSJsYW5ndWFnZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6bTYuOTMgNmgtMi45NWMtLjMyLTEuMjUtLjc4LTIuNDUtMS4zOC0zLjU2IDEuODQuNjMgMy4zNyAxLjkxIDQuMzMgMy41NnpNMTIgNC4wNGMuODMgMS4yIDEuNDggMi41MyAxLjkxIDMuOTZoLTMuODJjLjQzLTEuNDMgMS4wOC0yLjc2IDEuOTEtMy45NnpNNC4yNiAxNEM0LjEgMTMuMzYgNCAxMi42OSA0IDEycy4xLTEuMzYuMjYtMmgzLjM4Yy0uMDguNjYtLjE0IDEuMzItLjE0IDIgMCAuNjguMDYgMS4zNC4xNCAySDQuMjZ6bS44MiAyaDIuOTVjLjMyIDEuMjUuNzggMi40NSAxLjM4IDMuNTYtMS44NC0uNjMtMy4zNy0xLjktNC4zMy0zLjU2em0yLjk1LThINS4wOGMuOTYtMS42NiAyLjQ5LTIuOTMgNC4zMy0zLjU2QzguODEgNS41NSA4LjM1IDYuNzUgOC4wMyA4ek0xMiAxOS45NmMtLjgzLTEuMi0xLjQ4LTIuNTMtMS45MS0zLjk2aDMuODJjLS40MyAxLjQzLTEuMDggMi43Ni0xLjkxIDMuOTZ6TTE0LjM0IDE0SDkuNjZjLS4wOS0uNjYtLjE2LTEuMzItLjE2LTIgMC0uNjguMDctMS4zNS4xNi0yaDQuNjhjLjA5LjY1LjE2IDEuMzIuMTYgMiAwIC42OC0uMDcgMS4zNC0uMTYgMnptLjI1IDUuNTZjLjYtMS4xMSAxLjA2LTIuMzEgMS4zOC0zLjU2aDIuOTVjLS45NiAxLjY1LTIuNDkgMi45My00LjMzIDMuNTZ6TTE2LjM2IDE0Yy4wOC0uNjYuMTQtMS4zMi4xNC0yIDAtLjY4LS4wNi0xLjM0LS4xNC0yaDMuMzhjLjE2LjY0LjI2IDEuMzEuMjYgMnMtLjEgMS4zNi0uMjYgMmgtMy4zOHoiIC8+PC9nPgo8ZyBpZD0ibGFzdC1wYWdlIj48cGF0aCBkPSJNNS41OSA3LjQxTDEwLjE4IDEybC00LjU5IDQuNTlMNyAxOGw2LTYtNi02ek0xNiA2aDJ2MTJoLTJ6IiAvPjwvZz4KPGcgaWQ9ImxhdW5jaCI+PHBhdGggZD0iTTE5IDE5SDVWNWg3VjNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0ydi03aC0ydjd6TTE0IDN2MmgzLjU5bC05LjgzIDkuODMgMS40MSAxLjQxTDE5IDYuNDFWMTBoMlYzaC03eiIgLz48L2c+CjxnIGlkPSJsaWdodGJ1bGItb3V0bGluZSI+PHBhdGggZD0iTTkgMjFjMCAuNTUuNDUgMSAxIDFoNGMuNTUgMCAxLS40NSAxLTF2LTFIOXYxem0zLTE5QzguMTQgMiA1IDUuMTQgNSA5YzAgMi4zOCAxLjE5IDQuNDcgMyA1Ljc0VjE3YzAgLjU1LjQ1IDEgMSAxaDZjLjU1IDAgMS0uNDUgMS0xdi0yLjI2YzEuODEtMS4yNyAzLTMuMzYgMy01Ljc0IDAtMy44Ni0zLjE0LTctNy03em0yLjg1IDExLjFsLS44NS42VjE2aC00di0yLjNsLS44NS0uNkM3LjggMTIuMTYgNyAxMC42MyA3IDljMC0yLjc2IDIuMjQtNSA1LTVzNSAyLjI0IDUgNWMwIDEuNjMtLjggMy4xNi0yLjE1IDQuMXoiIC8+PC9nPgo8ZyBpZD0ibGluZS1zdHlsZSI+PHBhdGggZD0iTTMgMTZoNXYtMkgzdjJ6bTYuNSAwaDV2LTJoLTV2MnptNi41IDBoNXYtMmgtNXYyek0zIDIwaDJ2LTJIM3Yyem00IDBoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTMgMTJoOHYtMkgzdjJ6bTEwIDBoOHYtMmgtOHYyek0zIDR2NGgxOFY0SDN6IiAvPjwvZz4KPGcgaWQ9ImxpbmUtd2VpZ2h0Ij48cGF0aCBkPSJNMyAxN2gxOHYtMkgzdjJ6bTAgM2gxOHYtMUgzdjF6bTAtN2gxOHYtM0gzdjN6bTAtOXY0aDE4VjRIM3oiIC8+PC9nPgo8ZyBpZD0ibGluayI+PHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIgLz48L2c+CjxnIGlkPSJsaXN0Ij48cGF0aCBkPSJNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptNCA0aDE0di0ySDd2MnptMCA0aDE0di0ySDd2MnpNNyA3djJoMTRWN0g3eiIgLz48L2c+CjxnIGlkPSJsb2NrIj48cGF0aCBkPSJNMTggOGgtMVY2YzAtMi43Ni0yLjI0LTUtNS01UzcgMy4yNCA3IDZ2Mkg2Yy0xLjEgMC0yIC45LTIgMnYxMGMwIDEuMS45IDIgMiAyaDEyYzEuMSAwIDItLjkgMi0yVjEwYzAtMS4xLS45LTItMi0yem0tNiA5Yy0xLjEgMC0yLS45LTItMnMuOS0yIDItMiAyIC45IDIgMi0uOSAyLTIgMnptMy4xLTlIOC45VjZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjEgMS43MSAwIDMuMSAxLjM5IDMuMSAzLjF2MnoiIC8+PC9nPgo8ZyBpZD0ibG9jay1vcGVuIj48cGF0aCBkPSJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2aDEuOWMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMSAxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXYySDZjLTEuMSAwLTIgLjktMiAydjEwYzAgMS4xLjkgMiAyIDJoMTJjMS4xIDAgMi0uOSAyLTJWMTBjMC0xLjEtLjktMi0yLTJ6bTAgMTJINlYxMGgxMnYxMHoiIC8+PC9nPgo8ZyBpZD0ibG9jay1vdXRsaW5lIj48cGF0aCBkPSJNMTIgMTdjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0yLTIgLjktMiAyIC45IDIgMiAyem02LTloLTFWNmMwLTIuNzYtMi4yNC01LTUtNVM3IDMuMjQgNyA2djJINmMtMS4xIDAtMiAuOS0yIDJ2MTBjMCAxLjEuOSAyIDIgMmgxMmMxLjEgMCAyLS45IDItMlYxMGMwLTEuMS0uOS0yLTItMnpNOC45IDZjMC0xLjcxIDEuMzktMy4xIDMuMS0zLjFzMy4xIDEuMzkgMy4xIDMuMXYySDguOVY2ek0xOCAyMEg2VjEwaDEydjEweiIgLz48L2c+CjxnIGlkPSJsb3ctcHJpb3JpdHkiPjxwYXRoIGQ9Ik0xNCA1aDh2MmgtOHptMCA1LjVoOHYyaC04em0wIDUuNWg4djJoLTh6TTIgMTEuNUMyIDE1LjA4IDQuOTIgMTggOC41IDE4SDl2MmwzLTMtMy0zdjJoLS41QzYuMDIgMTYgNCAxMy45OCA0IDExLjVTNi4wMiA3IDguNSA3SDEyVjVIOC41QzQuOTIgNSAyIDcuOTIgMiAxMS41eiIgLz48L2c+CjxnIGlkPSJsb3lhbHR5Ij48cGF0aCBkPSJNMjEuNDEgMTEuNThsLTktOUMxMi4wNSAyLjIyIDExLjU1IDIgMTEgMkg0Yy0xLjEgMC0yIC45LTIgMnY3YzAgLjU1LjIyIDEuMDUuNTkgMS40Mmw5IDljLjM2LjM2Ljg2LjU4IDEuNDEuNTguNTUgMCAxLjA1LS4yMiAxLjQxLS41OWw3LTdjLjM3LS4zNi41OS0uODYuNTktMS40MSAwLS41NS0uMjMtMS4wNi0uNTktMS40MnpNNS41IDdDNC42NyA3IDQgNi4zMyA0IDUuNVM0LjY3IDQgNS41IDQgNyA0LjY3IDcgNS41IDYuMzMgNyA1LjUgN3ptMTEuNzcgOC4yN0wxMyAxOS41NGwtNC4yNy00LjI3QzguMjggMTQuODEgOCAxNC4xOSA4IDEzLjVjMC0xLjM4IDEuMTItMi41IDIuNS0yLjUuNjkgMCAxLjMyLjI4IDEuNzcuNzRsLjczLjcyLjczLS43M2MuNDUtLjQ1IDEuMDgtLjczIDEuNzctLjczIDEuMzggMCAyLjUgMS4xMiAyLjUgMi41IDAgLjY5LS4yOCAxLjMyLS43MyAxLjc3eiIgLz48L2c+CjxnIGlkPSJtYWlsIj48cGF0aCBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDRsLTggNS04LTVWNmw4IDUgOC01djJ6IiAvPjwvZz4KPGcgaWQ9Im1hcmt1bnJlYWQiPjxwYXRoIGQ9Ik0yMCA0SDRjLTEuMSAwLTEuOTkuOS0xLjk5IDJMMiAxOGMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjZjMC0xLjEtLjktMi0yLTJ6bTAgNGwtOCA1LTgtNVY2bDggNSA4LTV2MnoiIC8+PC9nPgo8ZyBpZD0ibWFya3VucmVhZC1tYWlsYm94Ij48cGF0aCBkPSJNMjAgNkgxMHY2SDhWNGg2VjBINnY2SDRjLTEuMSAwLTIgLjktMiAydjEyYzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWOGMwLTEuMS0uOS0yLTItMnoiIC8+PC9nPgo8ZyBpZD0ibWVudSI+PHBhdGggZD0iTTMgMThoMTh2LTJIM3Yyem0wLTVoMTh2LTJIM3Yyem0wLTd2MmgxOFY2SDN6IiAvPjwvZz4KPGcgaWQ9Im1vcmUtaG9yaXoiPjxwYXRoIGQ9Ik02IDEwYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMTIgMGMtMS4xIDAtMiAuOS0yIDJzLjkgMiAyIDIgMi0uOSAyLTItLjktMi0yLTJ6bS02IDBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yeiIgLz48L2c+CjxnIGlkPSJtb3JlLXZlcnQiPjxwYXRoIGQ9Ik0xMiA4YzEuMSAwIDItLjkgMi0ycy0uOS0yLTItMi0yIC45LTIgMiAuOSAyIDIgMnptMCAyYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptMCA2Yy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnoiIC8+PC9nPgo8ZyBpZD0ibW90b3JjeWNsZSI+PHBhdGggZD0iTTE5LjQ0IDkuMDNMMTUuNDEgNUgxMXYyaDMuNTlsMiAySDVjLTIuOCAwLTUgMi4yLTUgNXMyLjIgNSA1IDVjMi40NiAwIDQuNDUtMS42OSA0LjktNGgxLjY1bDIuNzctMi43N2MtLjIxLjU0LS4zMiAxLjE0LS4zMiAxLjc3IDAgMi44IDIuMiA1IDUgNXM1LTIuMiA1LTVjMC0yLjY1LTEuOTctNC43Ny00LjU2LTQuOTd6TTcuODIgMTVDNy40IDE2LjE1IDYuMjggMTcgNSAxN2MtMS42MyAwLTMtMS4zNy0zLTNzMS4zNy0zIDMtM2MxLjI4IDAgMi40Ljg1IDIuODIgMkg1djJoMi44MnpNMTkgMTdjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzeiIgLz48L2c+CjxnIGlkPSJtb3ZlLXRvLWluYm94Ij48cGF0aCBkPSJNMTkgM0g0Ljk5Yy0xLjExIDAtMS45OC45LTEuOTggMkwzIDE5YzAgMS4xLjg4IDIgMS45OSAySDE5YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTJoLTRjMCAxLjY2LTEuMzUgMy0zIDNzLTMtMS4zNC0zLTNINC45OVY1SDE5djEwem0tMy01aC0yVjdoLTR2M0g4bDQgNCA0LTR6IiAvPjwvZz4KPGcgaWQ9Im5leHQtd2VlayI+PHBhdGggZD0iTTIwIDdoLTRWNWMwLS41NS0uMjItMS4wNS0uNTktMS40MUMxNS4wNSAzLjIyIDE0LjU1IDMgMTQgM2gtNGMtMS4xIDAtMiAuOS0yIDJ2Mkg0Yy0xLjEgMC0yIC45LTIgMnYxMWMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjljMC0xLjEtLjktMi0yLTJ6TTEwIDVoNHYyaC00VjV6bTEgMTMuNWwtMS0xIDMtMy0zLTMgMS0xIDQgNC00IDR6IiAvPjwvZz4KPGcgaWQ9Im5vdGUtYWRkIj48cGF0aCBkPSJNMTQgMkg2Yy0xLjEgMC0xLjk5LjktMS45OSAyTDQgMjBjMCAxLjEuODkgMiAxLjk5IDJIMThjMS4xIDAgMi0uOSAyLTJWOGwtNi02em0yIDE0aC0zdjNoLTJ2LTNIOHYtMmgzdi0zaDJ2M2gzdjJ6bS0zLTdWMy41TDE4LjUgOUgxM3oiIC8+PC9nPgo8ZyBpZD0ib2ZmbGluZS1waW4iPjxwYXRoIGQ9Ik0xMiAyQzYuNSAyIDIgNi41IDIgMTJzNC41IDEwIDEwIDEwIDEwLTQuNSAxMC0xMFMxNy41IDIgMTIgMnptNSAxNkg3di0yaDEwdjJ6bS02LjctNEw3IDEwLjdsMS40LTEuNCAxLjkgMS45IDUuMy01LjNMMTcgNy4zIDEwLjMgMTR6IiAvPjwvZz4KPGcgaWQ9Im9wYWNpdHkiPjxwYXRoIGQ9Ik0xNy42NiA4TDEyIDIuMzUgNi4zNCA4QzQuNzggOS41NiA0IDExLjY0IDQgMTMuNjRzLjc4IDQuMTEgMi4zNCA1LjY3IDMuNjEgMi4zNSA1LjY2IDIuMzUgNC4xLS43OSA1LjY2LTIuMzVTMjAgMTUuNjQgMjAgMTMuNjQgMTkuMjIgOS41NiAxNy42NiA4ek02IDE0Yy4wMS0yIC42Mi0zLjI3IDEuNzYtNC40TDEyIDUuMjdsNC4yNCA0LjM4QzE3LjM4IDEwLjc3IDE3Ljk5IDEyIDE4IDE0SDZ6IiAvPjwvZz4KPGcgaWQ9Im9wZW4taW4tYnJvd3NlciI+PHBhdGggZD0iTTE5IDRINWMtMS4xMSAwLTIgLjktMiAydjEyYzAgMS4xLjg5IDIgMiAyaDR2LTJINVY4aDE0djEwaC00djJoNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS44OS0yLTItMnptLTcgNmwtNCA0aDN2Nmgydi02aDNsLTQtNHoiIC8+PC9nPgo8ZyBpZD0ib3Blbi1pbi1uZXciPjxwYXRoIGQ9Ik0xOSAxOUg1VjVoN1YzSDVjLTEuMTEgMC0yIC45LTIgMnYxNGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiIC8+PC9nPgo8ZyBpZD0ib3Blbi13aXRoIj48cGF0aCBkPSJNMTAgOWg0VjZoM2wtNS01LTUgNWgzdjN6bS0xIDFINlY3bC01IDUgNSA1di0zaDN2LTR6bTE0IDJsLTUtNXYzaC0zdjRoM3YzbDUtNXptLTkgM2gtNHYzSDdsNSA1IDUtNWgtM3YtM3oiIC8+PC9nPgo8ZyBpZD0icGFnZXZpZXciPjxwYXRoIGQ9Ik0xMS41IDlDMTAuMTIgOSA5IDEwLjEyIDkgMTEuNXMxLjEyIDIuNSAyLjUgMi41IDIuNS0xLjEyIDIuNS0yLjVTMTIuODggOSAxMS41IDl6TTIwIDRINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tMy4yMSAxNC4yMWwtMi45MS0yLjkxYy0uNjkuNDQtMS41MS43LTIuMzkuN0M5LjAxIDE2IDcgMTMuOTkgNyAxMS41UzkuMDEgNyAxMS41IDcgMTYgOS4wMSAxNiAxMS41YzAgLjg4LS4yNiAxLjY5LS43IDIuMzlsMi45MSAyLjktMS40MiAxLjQyeiIgLz48L2c+CjxnIGlkPSJwYW4tdG9vbCI+PHBhdGggZD0iTTIzIDUuNVYyMGMwIDIuMi0xLjggNC00IDRoLTcuM2MtMS4wOCAwLTIuMS0uNDMtMi44NS0xLjE5TDEgMTQuODNzMS4yNi0xLjIzIDEuMy0xLjI1Yy4yMi0uMTkuNDktLjI5Ljc5LS4yOS4yMiAwIC40Mi4wNi42LjE2LjA0LjAxIDQuMzEgMi40NiA0LjMxIDIuNDZWNGMwLS44My42Ny0xLjUgMS41LTEuNVMxMSAzLjE3IDExIDR2N2gxVjEuNWMwLS44My42Ny0xLjUgMS41LTEuNVMxNSAuNjcgMTUgMS41VjExaDFWMi41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41VjExaDFWNS41YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41eiIgLz48L2c+CjxnIGlkPSJwYXltZW50Ij48cGF0aCBkPSJNMjAgNEg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY2YzAtMS4xMS0uODktMi0yLTJ6bTAgMTRINHYtNmgxNnY2em0wLTEwSDRWNmgxNnYyeiIgLz48L2c+CjxnIGlkPSJwZXJtLWNhbWVyYS1taWMiPjxwYXRoIGQ9Ik0yMCA1aC0zLjE3TDE1IDNIOUw3LjE3IDVINGMtMS4xIDAtMiAuOS0yIDJ2MTJjMCAxLjEuOSAyIDIgMmg3di0yLjA5Yy0yLjgzLS40OC01LTIuOTQtNS01LjkxaDJjMCAyLjIxIDEuNzkgNCA0IDRzNC0xLjc5IDQtNGgyYzAgMi45Ny0yLjE3IDUuNDMtNSA1LjkxVjIxaDdjMS4xIDAgMi0uOSAyLTJWN2MwLTEuMS0uOS0yLTItMnptLTYgOGMwIDEuMS0uOSAyLTIgMnMtMi0uOS0yLTJWOWMwLTEuMS45LTIgMi0yczIgLjkgMiAydjR6IiAvPjwvZz4KPGcgaWQ9InBlcm0tY29udGFjdC1jYWxlbmRhciI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bS03IDNjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDMtMy0xLjM0LTMtMyAxLjM0LTMgMy0zem02IDEySDZ2LTFjMC0yIDQtMy4xIDYtMy4xczYgMS4xIDYgMy4xdjF6IiAvPjwvZz4KPGcgaWQ9InBlcm0tZGF0YS1zZXR0aW5nIj48cGF0aCBkPSJNMTguOTkgMTEuNWMuMzQgMCAuNjcuMDMgMSAuMDdMMjAgMCAwIDIwaDExLjU2Yy0uMDQtLjMzLS4wNy0uNjYtLjA3LTEgMC00LjE0IDMuMzYtNy41IDcuNS03LjV6bTMuNzEgNy45OWMuMDItLjE2LjA0LS4zMi4wNC0uNDkgMC0uMTctLjAxLS4zMy0uMDQtLjQ5bDEuMDYtLjgzYy4wOS0uMDguMTItLjIxLjA2LS4zMmwtMS0xLjczYy0uMDYtLjExLS4xOS0uMTUtLjMxLS4xMWwtMS4yNC41Yy0uMjYtLjItLjU0LS4zNy0uODUtLjQ5bC0uMTktMS4zMmMtLjAxLS4xMi0uMTItLjIxLS4yNC0uMjFoLTJjLS4xMiAwLS4yMy4wOS0uMjUuMjFsLS4xOSAxLjMyYy0uMy4xMy0uNTkuMjktLjg1LjQ5bC0xLjI0LS41Yy0uMTEtLjA0LS4yNCAwLS4zMS4xMWwtMSAxLjczYy0uMDYuMTEtLjA0LjI0LjA2LjMybDEuMDYuODNjLS4wMi4xNi0uMDMuMzItLjAzLjQ5IDAgLjE3LjAxLjMzLjAzLjQ5bC0xLjA2LjgzYy0uMDkuMDgtLjEyLjIxLS4wNi4zMmwxIDEuNzNjLjA2LjExLjE5LjE1LjMxLjExbDEuMjQtLjVjLjI2LjIuNTQuMzcuODUuNDlsLjE5IDEuMzJjLjAyLjEyLjEyLjIxLjI1LjIxaDJjLjEyIDAgLjIzLS4wOS4yNS0uMjFsLjE5LTEuMzJjLjMtLjEzLjU5LS4yOS44NC0uNDlsMS4yNS41Yy4xMS4wNC4yNCAwIC4zMS0uMTFsMS0xLjczYy4wNi0uMTEuMDMtLjI0LS4wNi0uMzJsLTEuMDctLjgzem0tMy43MSAxLjAxYy0uODMgMC0xLjUtLjY3LTEuNS0xLjVzLjY3LTEuNSAxLjUtMS41IDEuNS42NyAxLjUgMS41LS42NyAxLjUtMS41IDEuNXoiIC8+PC9nPgo8ZyBpZD0icGVybS1kZXZpY2UtaW5mb3JtYXRpb24iPjxwYXRoIGQ9Ik0xMyA3aC0ydjJoMlY3em0wIDRoLTJ2Nmgydi02em00LTkuOTlMNyAxYy0xLjEgMC0yIC45LTIgMnYxOGMwIDEuMS45IDIgMiAyaDEwYzEuMSAwIDItLjkgMi0yVjNjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE3IDE5SDdWNWgxMHYxNHoiIC8+PC9nPgo8ZyBpZD0icGVybS1pZGVudGl0eSI+PHBhdGggZD0iTTEyIDUuOWMxLjE2IDAgMi4xLjk0IDIuMSAyLjFzLS45NCAyLjEtMi4xIDIuMVM5LjkgOS4xNiA5LjkgOHMuOTQtMi4xIDIuMS0yLjFtMCA5YzIuOTcgMCA2LjEgMS40NiA2LjEgMi4xdjEuMUg1LjlWMTdjMC0uNjQgMy4xMy0yLjEgNi4xLTIuMU0xMiA0QzkuNzkgNCA4IDUuNzkgOCA4czEuNzkgNCA0IDQgNC0xLjc5IDQtNC0xLjc5LTQtNC00em0wIDljLTIuNjcgMC04IDEuMzQtOCA0djNoMTZ2LTNjMC0yLjY2LTUuMzMtNC04LTR6IiAvPjwvZz4KPGcgaWQ9InBlcm0tbWVkaWEiPjxwYXRoIGQ9Ik0yIDZIMHY1aC4wMUwwIDIwYzAgMS4xLjkgMiAyIDJoMTh2LTJIMlY2em0yMC0yaC04bC0yLTJINmMtMS4xIDAtMS45OS45LTEuOTkgMkw0IDE2YzAgMS4xLjkgMiAyIDJoMTZjMS4xIDAgMi0uOSAyLTJWNmMwLTEuMS0uOS0yLTItMnpNNyAxNWw0LjUtNiAzLjUgNC41MSAyLjUtMy4wMUwyMSAxNUg3eiIgLz48L2c+CjxnIGlkPSJwZXJtLXBob25lLW1zZyI+PHBhdGggZD0iTTIwIDE1LjVjLTEuMjUgMC0yLjQ1LS4yLTMuNTctLjU3LS4zNS0uMTEtLjc0LS4wMy0xLjAyLjI0bC0yLjIgMi4yYy0yLjgzLTEuNDQtNS4xNS0zLjc1LTYuNTktNi41OGwyLjItMi4yMWMuMjgtLjI3LjM2LS42Ni4yNS0xLjAxQzguNyA2LjQ1IDguNSA1LjI1IDguNSA0YzAtLjU1LS40NS0xLTEtMUg0Yy0uNTUgMC0xIC40NS0xIDEgMCA5LjM5IDcuNjEgMTcgMTcgMTcgLjU1IDAgMS0uNDUgMS0xdi0zLjVjMC0uNTUtLjQ1LTEtMS0xek0xMiAzdjEwbDMtM2g2VjNoLTl6IiAvPjwvZz4KPGcgaWQ9InBlcm0tc2Nhbi13aWZpIj48cGF0aCBkPSJNMTIgM0M2Ljk1IDMgMy4xNSA0Ljg1IDAgNy4yM0wxMiAyMiAyNCA3LjI1QzIwLjg1IDQuODcgMTcuMDUgMyAxMiAzem0xIDEzaC0ydi02aDJ2NnptLTItOFY2aDJ2MmgtMnoiIC8+PC9nPgo8ZyBpZD0icGV0cyI+PGNpcmNsZSBjeD0iNC41IiBjeT0iOS41IiByPSIyLjUiIC8+PGNpcmNsZSBjeD0iOSIgY3k9IjUuNSIgcj0iMi41IiAvPjxjaXJjbGUgY3g9IjE1IiBjeT0iNS41IiByPSIyLjUiIC8+PGNpcmNsZSBjeD0iMTkuNSIgY3k9IjkuNSIgcj0iMi41IiAvPjxwYXRoIGQ9Ik0xNy4zNCAxNC44NmMtLjg3LTEuMDItMS42LTEuODktMi40OC0yLjkxLS40Ni0uNTQtMS4wNS0xLjA4LTEuNzUtMS4zMi0uMTEtLjA0LS4yMi0uMDctLjMzLS4wOS0uMjUtLjA0LS41Mi0uMDQtLjc4LS4wNHMtLjUzIDAtLjc5LjA1Yy0uMTEuMDItLjIyLjA1LS4zMy4wOS0uNy4yNC0xLjI4Ljc4LTEuNzUgMS4zMi0uODcgMS4wMi0xLjYgMS44OS0yLjQ4IDIuOTEtMS4zMSAxLjMxLTIuOTIgMi43Ni0yLjYyIDQuNzkuMjkgMS4wMiAxLjAyIDIuMDMgMi4zMyAyLjMyLjczLjE1IDMuMDYtLjQ0IDUuNTQtLjQ0aC4xOGMyLjQ4IDAgNC44MS41OCA1LjU0LjQ0IDEuMzEtLjI5IDIuMDQtMS4zMSAyLjMzLTIuMzIuMzEtMi4wNC0xLjMtMy40OS0yLjYxLTQuOHoiIC8+PC9nPgo8ZyBpZD0icGljdHVyZS1pbi1waWN0dXJlIj48cGF0aCBkPSJNMTkgN2gtOHY2aDhWN3ptMi00SDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMS45OCAyIDEuOThoMThjMS4xIDAgMi0uODggMi0xLjk4VjVjMC0xLjEtLjktMi0yLTJ6bTAgMTYuMDFIM1Y0Ljk4aDE4djE0LjAzeiIgLz48L2c+CjxnIGlkPSJwaWN0dXJlLWluLXBpY3R1cmUtYWx0Ij48cGF0aCBkPSJNMTkgMTFoLTh2Nmg4di02em00IDhWNC45OEMyMyAzLjg4IDIyLjEgMyAyMSAzSDNjLTEuMSAwLTIgLjg4LTIgMS45OFYxOWMwIDEuMS45IDIgMiAyaDE4YzEuMSAwIDItLjkgMi0yem0tMiAuMDJIM1Y0Ljk3aDE4djE0LjA1eiIgLz48L2c+CjxnIGlkPSJwbGF5LWZvci13b3JrIj48cGF0aCBkPSJNMTEgNXY1LjU5SDcuNWw0LjUgNC41IDQuNS00LjVIMTNWNWgtMnptLTUgOWMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02aC0yYzAgMi4yMS0xLjc5IDQtNCA0cy00LTEuNzktNC00SDZ6IiAvPjwvZz4KPGcgaWQ9InBvbHltZXIiPjxwYXRoIGQ9Ik0xOSA0aC00TDcuMTEgMTYuNjMgNC41IDEyIDkgNEg1TC41IDEyIDUgMjBoNGw3Ljg5LTEyLjYzTDE5LjUgMTIgMTUgMjBoNGw0LjUtOHoiIC8+PC9nPgo8ZyBpZD0icG93ZXItc2V0dGluZ3MtbmV3Ij48cGF0aCBkPSJNMTMgM2gtMnYxMGgyVjN6bTQuODMgMi4xN2wtMS40MiAxLjQyQzE3Ljk5IDcuODYgMTkgOS44MSAxOSAxMmMwIDMuODctMy4xMyA3LTcgN3MtNy0zLjEzLTctN2MwLTIuMTkgMS4wMS00LjE0IDIuNTgtNS40Mkw2LjE3IDUuMTdDNC4yMyA2LjgyIDMgOS4yNiAzIDEyYzAgNC45NyA0LjAzIDkgOSA5czktNC4wMyA5LTljMC0yLjc0LTEuMjMtNS4xOC0zLjE3LTYuODN6IiAvPjwvZz4KPGcgaWQ9InByZWduYW50LXdvbWFuIj48cGF0aCBkPSJNOSA0YzAtMS4xMS44OS0yIDItMnMyIC44OSAyIDItLjg5IDItMiAyLTItLjg5LTItMnptNyA5Yy0uMDEtMS4zNC0uODMtMi41MS0yLTMgMC0xLjY2LTEuMzQtMy0zLTNzLTMgMS4zNC0zIDN2N2gydjVoM3YtNWgzdi00eiIgLz48L2c+CjxnIGlkPSJwcmludCI+PHBhdGggZD0iTTE5IDhINWMtMS42NiAwLTMgMS4zNC0zIDN2Nmg0djRoMTJ2LTRoNHYtNmMwLTEuNjYtMS4zNC0zLTMtM3ptLTMgMTFIOHYtNWg4djV6bTMtN2MtLjU1IDAtMS0uNDUtMS0xcy40NS0xIDEtMSAxIC40NSAxIDEtLjQ1IDEtMSAxem0tMS05SDZ2NGgxMlYzeiIgLz48L2c+CjxnIGlkPSJxdWVyeS1idWlsZGVyIj48cGF0aCBkPSJNMTEuOTkgMkM2LjQ3IDIgMiA2LjQ4IDIgMTJzNC40NyAxMCA5Ljk5IDEwQzE3LjUyIDIyIDIyIDE3LjUyIDIyIDEyUzE3LjUyIDIgMTEuOTkgMnpNMTIgMjBjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4em0uNS0xM0gxMXY2bDUuMjUgMy4xNS43NS0xLjIzLTQuNS0yLjY3eiIgLz48L2c+CjxnIGlkPSJxdWVzdGlvbi1hbnN3ZXIiPjxwYXRoIGQ9Ik0yMSA2aC0ydjlINnYyYzAgLjU1LjQ1IDEgMSAxaDExbDQgNFY3YzAtLjU1LS40NS0xLTEtMXptLTQgNlYzYzAtLjU1LS40NS0xLTEtMUgzYy0uNTUgMC0xIC40NS0xIDF2MTRsNC00aDEwYy41NSAwIDEtLjQ1IDEtMXoiIC8+PC9nPgo8ZyBpZD0icmFkaW8tYnV0dG9uLWNoZWNrZWQiPjxwYXRoIGQ9Ik0xMiA3Yy0yLjc2IDAtNSAyLjI0LTUgNXMyLjI0IDUgNSA1IDUtMi4yNCA1LTUtMi4yNC01LTUtNXptMC01QzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0wIDE4Yy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiIC8+PC9nPgo8ZyBpZD0icmFkaW8tYnV0dG9uLXVuY2hlY2tlZCI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiIgLz48L2c+CjxnIGlkPSJyZWNlaXB0Ij48cGF0aCBkPSJNMTggMTdINnYtMmgxMnYyem0wLTRINnYtMmgxMnYyem0wLTRINlY3aDEydjJ6TTMgMjJsMS41LTEuNUw2IDIybDEuNS0xLjVMOSAyMmwxLjUtMS41TDEyIDIybDEuNS0xLjVMMTUgMjJsMS41LTEuNUwxOCAyMmwxLjUtMS41TDIxIDIyVjJsLTEuNSAxLjVMMTggMmwtMS41IDEuNUwxNSAybC0xLjUgMS41TDEyIDJsLTEuNSAxLjVMOSAyIDcuNSAzLjUgNiAyIDQuNSAzLjUgMyAydjIweiIgLz48L2c+CjxnIGlkPSJyZWNvcmQtdm9pY2Utb3ZlciI+PGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjQiIC8+PHBhdGggZD0iTTkgMTVjLTIuNjcgMC04IDEuMzQtOCA0djJoMTZ2LTJjMC0yLjY2LTUuMzMtNC04LTR6bTcuNzYtOS42NGwtMS42OCAxLjY5Yy44NCAxLjE4Ljg0IDIuNzEgMCAzLjg5bDEuNjggMS42OWMyLjAyLTIuMDIgMi4wMi01LjA3IDAtNy4yN3pNMjAuMDcgMmwtMS42MyAxLjYzYzIuNzcgMy4wMiAyLjc3IDcuNTYgMCAxMC43NEwyMC4wNyAxNmMzLjktMy44OSAzLjkxLTkuOTUgMC0xNHoiIC8+PC9nPgo8ZyBpZD0icmVkZWVtIj48cGF0aCBkPSJNMjAgNmgtMi4xOGMuMTEtLjMxLjE4LS42NS4xOC0xIDAtMS42Ni0xLjM0LTMtMy0zLTEuMDUgMC0xLjk2LjU0LTIuNSAxLjM1bC0uNS42Ny0uNS0uNjhDMTAuOTYgMi41NCAxMC4wNSAyIDkgMiA3LjM0IDIgNiAzLjM0IDYgNWMwIC4zNS4wNy42OS4xOCAxSDRjLTEuMTEgMC0xLjk5Ljg5LTEuOTkgMkwyIDE5YzAgMS4xMS44OSAyIDIgMmgxNmMxLjExIDAgMi0uODkgMi0yVjhjMC0xLjExLS44OS0yLTItMnptLTUtMmMuNTUgMCAxIC40NSAxIDFzLS40NSAxLTEgMS0xLS40NS0xLTEgLjQ1LTEgMS0xek05IDRjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptMTEgMTVINHYtMmgxNnYyem0wLTVINFY4aDUuMDhMNyAxMC44MyA4LjYyIDEyIDExIDguNzZsMS0xLjM2IDEgMS4zNkwxNS4zOCAxMiAxNyAxMC44MyAxNC45MiA4SDIwdjZ6IiAvPjwvZz4KPGcgaWQ9InJlZG8iPjxwYXRoIGQ9Ik0xOC40IDEwLjZDMTYuNTUgOC45OSAxNC4xNSA4IDExLjUgOGMtNC42NSAwLTguNTggMy4wMy05Ljk2IDcuMjJMMy45IDE2YzEuMDUtMy4xOSA0LjA1LTUuNSA3LjYtNS41IDEuOTUgMCAzLjczLjcyIDUuMTIgMS44OEwxMyAxNmg5VjdsLTMuNiAzLjZ6IiAvPjwvZz4KPGcgaWQ9InJlZnJlc2giPjxwYXRoIGQ9Ik0xNy42NSA2LjM1QzE2LjIgNC45IDE0LjIxIDQgMTIgNGMtNC40MiAwLTcuOTkgMy41OC03Ljk5IDhzMy41NyA4IDcuOTkgOGMzLjczIDAgNi44NC0yLjU1IDcuNzMtNmgtMi4wOGMtLjgyIDIuMzMtMy4wNCA0LTUuNjUgNC0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02YzEuNjYgMCAzLjE0LjY5IDQuMjIgMS43OEwxMyAxMWg3VjRsLTIuMzUgMi4zNXoiIC8+PC9nPgo8ZyBpZD0icmVtb3ZlIj48cGF0aCBkPSJNMTkgMTNINXYtMmgxNHYyeiIgLz48L2c+CjxnIGlkPSJyZW1vdmUtY2lyY2xlIj48cGF0aCBkPSJNMTIgMkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptNSAxMUg3di0yaDEwdjJ6IiAvPjwvZz4KPGcgaWQ9InJlbW92ZS1jaXJjbGUtb3V0bGluZSI+PHBhdGggZD0iTTcgMTF2MmgxMHYtMkg3em01LTlDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIgLz48L2c+CjxnIGlkPSJyZW1vdmUtc2hvcHBpbmctY2FydCI+PHBhdGggZD0iTTIyLjczIDIyLjczTDIuNzcgMi43NyAyIDJsLS43My0uNzNMMCAyLjU0bDQuMzkgNC4zOSAyLjIxIDQuNjYtMS4zNSAyLjQ1Yy0uMTYuMjgtLjI1LjYxLS4yNS45NiAwIDEuMS45IDIgMiAyaDcuNDZsMS4zOCAxLjM4Yy0uNS4zNi0uODMuOTUtLjgzIDEuNjIgMCAxLjEuODkgMiAxLjk5IDIgLjY3IDAgMS4yNi0uMzMgMS42Mi0uODRMMjEuNDYgMjRsMS4yNy0xLjI3ek03LjQyIDE1Yy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoMi4zNmwyIDJINy40MnptOC4xMy0yYy43NSAwIDEuNDEtLjQxIDEuNzUtMS4wM2wzLjU4LTYuNDljLjA4LS4xNC4xMi0uMzEuMTItLjQ4IDAtLjU1LS40NS0xLTEtMUg2LjU0bDkuMDEgOXpNNyAxOGMtMS4xIDAtMS45OS45LTEuOTkgMlM1LjkgMjIgNyAyMnMyLS45IDItMi0uOS0yLTItMnoiIC8+PC9nPgo8ZyBpZD0icmVvcmRlciI+PHBhdGggZD0iTTMgMTVoMTh2LTJIM3Yyem0wIDRoMTh2LTJIM3Yyem0wLThoMThWOUgzdjJ6bTAtNnYyaDE4VjVIM3oiIC8+PC9nPgo8ZyBpZD0icmVwbHkiPjxwYXRoIGQ9Ik0xMCA5VjVsLTcgNyA3IDd2LTQuMWM1IDAgOC41IDEuNiAxMSA1LjEtMS01LTQtMTAtMTEtMTF6IiAvPjwvZz4KPGcgaWQ9InJlcGx5LWFsbCI+PHBhdGggZD0iTTcgOFY1bC03IDcgNyA3di0zbC00LTQgNC00em02IDFWNWwtNyA3IDcgN3YtNC4xYzUgMCA4LjUgMS42IDExIDUuMS0xLTUtNC0xMC0xMS0xMXoiIC8+PC9nPgo8ZyBpZD0icmVwb3J0Ij48cGF0aCBkPSJNMTUuNzMgM0g4LjI3TDMgOC4yN3Y3LjQ2TDguMjcgMjFoNy40NkwyMSAxNS43M1Y4LjI3TDE1LjczIDN6TTEyIDE3LjNjLS43MiAwLTEuMy0uNTgtMS4zLTEuMyAwLS43Mi41OC0xLjMgMS4zLTEuMy43MiAwIDEuMy41OCAxLjMgMS4zIDAgLjcyLS41OCAxLjMtMS4zIDEuM3ptMS00LjNoLTJWN2gydjZ6IiAvPjwvZz4KPGcgaWQ9InJlcG9ydC1wcm9ibGVtIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIgLz48L2c+CjxnIGlkPSJyZXN0b3JlIj48cGF0aCBkPSJNMTMgM2MtNC45NyAwLTkgNC4wMy05IDlIMWwzLjg5IDMuODkuMDcuMTRMOSAxMkg2YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS45MyAwLTMuNjgtLjc5LTQuOTQtMi4wNmwtMS40MiAxLjQyQzguMjcgMTkuOTkgMTAuNTEgMjEgMTMgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6bS0xIDV2NWw0LjI4IDIuNTQuNzItMS4yMS0zLjUtMi4wOFY4SDEyeiIgLz48L2c+CjxnIGlkPSJyZXN0b3JlLXBhZ2UiPjxwYXRoIGQ9Ik0xNCAySDZjLTEuMSAwLTEuOTkuOS0xLjk5IDJMNCAyMGMwIDEuMS44OSAyIDEuOTkgMkgxOGMxLjEgMCAyLS45IDItMlY4bC02LTZ6bS0yIDE2Yy0yLjA1IDAtMy44MS0xLjI0LTQuNTgtM2gxLjcxYy42My45IDEuNjggMS41IDIuODcgMS41IDEuOTMgMCAzLjUtMS41NyAzLjUtMy41UzEzLjkzIDkuNSAxMiA5LjVjLTEuMzUgMC0yLjUyLjc4LTMuMSAxLjlsMS42IDEuNmgtNFY5bDEuMyAxLjNDOC42OSA4LjkyIDEwLjIzIDggMTIgOGMyLjc2IDAgNSAyLjI0IDUgNXMtMi4yNCA1LTUgNXoiIC8+PC9nPgo8ZyBpZD0icm9vbSI+PHBhdGggZD0iTTEyIDJDOC4xMyAyIDUgNS4xMyA1IDljMCA1LjI1IDcgMTMgNyAxM3M3LTcuNzUgNy0xM2MwLTMuODctMy4xMy03LTctN3ptMCA5LjVjLTEuMzggMC0yLjUtMS4xMi0yLjUtMi41czEuMTItMi41IDIuNS0yLjUgMi41IDEuMTIgMi41IDIuNS0xLjEyIDIuNS0yLjUgMi41eiIgLz48L2c+CjxnIGlkPSJyb3VuZGVkLWNvcm5lciI+PHBhdGggZD0iTTE5IDE5aDJ2MmgtMnYtMnptMC0yaDJ2LTJoLTJ2MnpNMyAxM2gydi0ySDN2MnptMCA0aDJ2LTJIM3Yyem0wLThoMlY3SDN2MnptMC00aDJWM0gzdjJ6bTQgMGgyVjNIN3Yyem04IDE2aDJ2LTJoLTJ2MnptLTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6bS04IDBoMnYtMkg3djJ6bS00IDBoMnYtMkgzdjJ6TTIxIDhjMC0yLjc2LTIuMjQtNS01LTVoLTV2Mmg1YzEuNjUgMCAzIDEuMzUgMyAzdjVoMlY4eiIgLz48L2c+CjxnIGlkPSJyb3dpbmciPjxwYXRoIGQ9Ik04LjUgMTQuNUw0IDE5bDEuNSAxLjVMOSAxN2gybC0yLjUtMi41ek0xNSAxYy0xLjEgMC0yIC45LTIgMnMuOSAyIDIgMiAyLS45IDItMi0uOS0yLTItMnptNiAyMC4wMUwxOCAyNGwtMi45OS0zLjAxVjE5LjVsLTcuMS03LjA5Yy0uMzEuMDUtLjYxLjA3LS45MS4wN3YtMi4xNmMxLjY2LjAzIDMuNjEtLjg3IDQuNjctMi4wNGwxLjQtMS41NWMuMTktLjIxLjQzLS4zOC42OS0uNS4yOS0uMTQuNjItLjIzLjk2LS4yM2guMDNDMTUuOTkgNi4wMSAxNyA3LjAyIDE3IDguMjZ2NS43NWMwIC44NC0uMzUgMS42MS0uOTIgMi4xNmwtMy41OC0zLjU4di0yLjI3Yy0uNjMuNTItMS40MyAxLjAyLTIuMjkgMS4zOUwxNi41IDE4SDE4bDMgMy4wMXoiIC8+PC9nPgo8ZyBpZD0ic2F2ZSI+PHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIgLz48L2c+CjxnIGlkPSJzY2hlZHVsZSI+PHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHptLjUtMTNIMTF2Nmw1LjI1IDMuMTUuNzUtMS4yMy00LjUtMi42N3oiIC8+PC9nPgo8ZyBpZD0ic2VhcmNoIj48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHoiIC8+PC9nPgo8ZyBpZD0ic2VsZWN0LWFsbCI+PHBhdGggZD0iTTMgNWgyVjNjLTEuMSAwLTIgLjktMiAyem0wIDhoMnYtMkgzdjJ6bTQgOGgydi0ySDd2MnpNMyA5aDJWN0gzdjJ6bTEwLTZoLTJ2MmgyVjN6bTYgMHYyaDJjMC0xLjEtLjktMi0yLTJ6TTUgMjF2LTJIM2MwIDEuMS45IDIgMiAyem0tMi00aDJ2LTJIM3Yyek05IDNIN3YyaDJWM3ptMiAxOGgydi0yaC0ydjJ6bTgtOGgydi0yaC0ydjJ6bTAgOGMxLjEgMCAyLS45IDItMmgtMnYyem0wLTEyaDJWN2gtMnYyem0wIDhoMnYtMmgtMnYyem0tNCA0aDJ2LTJoLTJ2MnptMC0xNmgyVjNoLTJ2MnpNNyAxN2gxMFY3SDd2MTB6bTItOGg2djZIOVY5eiIgLz48L2c+CjxnIGlkPSJzZW5kIj48cGF0aCBkPSJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6IiAvPjwvZz4KPGcgaWQ9InNldHRpbmdzIj48cGF0aCBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVDMTQuNDYgMi4xOCAxNC4yNSAyIDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYXBwbGljYXRpb25zIj48cGF0aCBkPSJNMTIgMTBjLTEuMSAwLTIgLjktMiAycy45IDIgMiAyIDItLjkgMi0yLS45LTItMi0yem03LTdINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS45IDItMlY1YzAtMS4xLS44OS0yLTItMnptLTEuNzUgOWMwIC4yMy0uMDIuNDYtLjA1LjY4bDEuNDggMS4xNmMuMTMuMTEuMTcuMy4wOC40NWwtMS40IDIuNDJjLS4wOS4xNS0uMjcuMjEtLjQzLjE1bC0xLjc0LS43Yy0uMzYuMjgtLjc2LjUxLTEuMTguNjlsLS4yNiAxLjg1Yy0uMDMuMTctLjE4LjMtLjM1LjNoLTIuOGMtLjE3IDAtLjMyLS4xMy0uMzUtLjI5bC0uMjYtMS44NWMtLjQzLS4xOC0uODItLjQxLTEuMTgtLjY5bC0xLjc0LjdjLS4xNi4wNi0uMzQgMC0uNDMtLjE1bC0xLjQtMi40MmMtLjA5LS4xNS0uMDUtLjM0LjA4LS40NWwxLjQ4LTEuMTZjLS4wMy0uMjMtLjA1LS40Ni0uMDUtLjY5IDAtLjIzLjAyLS40Ni4wNS0uNjhsLTEuNDgtMS4xNmMtLjEzLS4xMS0uMTctLjMtLjA4LS40NWwxLjQtMi40MmMuMDktLjE1LjI3LS4yMS40My0uMTVsMS43NC43Yy4zNi0uMjguNzYtLjUxIDEuMTgtLjY5bC4yNi0xLjg1Yy4wMy0uMTcuMTgtLjMuMzUtLjNoMi44Yy4xNyAwIC4zMi4xMy4zNS4yOWwuMjYgMS44NWMuNDMuMTguODIuNDEgMS4xOC42OWwxLjc0LS43Yy4xNi0uMDYuMzQgMCAuNDMuMTVsMS40IDIuNDJjLjA5LjE1LjA1LjM0LS4wOC40NWwtMS40OCAxLjE2Yy4wMy4yMy4wNS40Ni4wNS42OXoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtYmFja3VwLXJlc3RvcmUiPjxwYXRoIGQ9Ik0xNCAxMmMwLTEuMS0uOS0yLTItMnMtMiAuOS0yIDIgLjkgMiAyIDIgMi0uOSAyLTJ6bS0yLTljLTQuOTcgMC05IDQuMDMtOSA5SDBsNCA0IDQtNEg1YzAtMy44NyAzLjEzLTcgNy03czcgMy4xMyA3IDctMy4xMyA3LTcgN2MtMS41MSAwLTIuOTEtLjQ5LTQuMDYtMS4zbC0xLjQyIDEuNDRDOC4wNCAyMC4zIDkuOTQgMjEgMTIgMjFjNC45NyAwIDktNC4wMyA5LTlzLTQuMDMtOS05LTl6IiAvPjwvZz4KPGcgaWQ9InNldHRpbmdzLWJsdWV0b290aCI+PHBhdGggZD0iTTExIDI0aDJ2LTJoLTJ2MnptLTQgMGgydi0ySDd2MnptOCAwaDJ2LTJoLTJ2MnptMi43MS0xOC4yOUwxMiAwaC0xdjcuNTlMNi40MSAzIDUgNC40MSAxMC41OSAxMCA1IDE1LjU5IDYuNDEgMTcgMTEgMTIuNDFWMjBoMWw1LjcxLTUuNzEtNC4zLTQuMjkgNC4zLTQuMjl6TTEzIDMuODNsMS44OCAxLjg4TDEzIDcuNTlWMy44M3ptMS44OCAxMC40NkwxMyAxNi4xN3YtMy43NmwxLjg4IDEuODh6IiAvPjwvZz4KPGcgaWQ9InNldHRpbmdzLWJyaWdodG5lc3MiPjxwYXRoIGQ9Ik0yMSAzSDNjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnptMCAxNi4wMUgzVjQuOTloMTh2MTQuMDJ6TTggMTZoMi41bDEuNSAxLjUgMS41LTEuNUgxNnYtMi41bDEuNS0xLjUtMS41LTEuNVY4aC0yLjVMMTIgNi41IDEwLjUgOEg4djIuNUw2LjUgMTIgOCAxMy41VjE2em00LTdjMS42NiAwIDMgMS4zNCAzIDNzLTEuMzQgMy0zIDNWOXoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtY2VsbCI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTQgMGgydi0yaC0ydjJ6bTQgMGgydi0yaC0ydjJ6TTE2IC4wMUw4IDBDNi45IDAgNiAuOSA2IDJ2MTZjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjJjMC0xLjEtLjktMS45OS0yLTEuOTl6TTE2IDE2SDhWNGg4djEyeiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy1ldGhlcm5ldCI+PHBhdGggZD0iTTcuNzcgNi43Nkw2LjIzIDUuNDguODIgMTJsNS40MSA2LjUyIDEuNTQtMS4yOEwzLjQyIDEybDQuMzUtNS4yNHpNNyAxM2gydi0ySDd2MnptMTAtMmgtMnYyaDJ2LTJ6bS02IDJoMnYtMmgtMnYyem02Ljc3LTcuNTJsLTEuNTQgMS4yOEwyMC41OCAxMmwtNC4zNSA1LjI0IDEuNTQgMS4yOEwyMy4xOCAxMmwtNS40MS02LjUyeiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1hbnRlbm5hIj48cGF0aCBkPSJNMTIgNWMtMy44NyAwLTcgMy4xMy03IDdoMmMwLTIuNzYgMi4yNC01IDUtNXM1IDIuMjQgNSA1aDJjMC0zLjg3LTMuMTMtNy03LTd6bTEgOS4yOWMuODgtLjM5IDEuNS0xLjI2IDEuNS0yLjI5IDAtMS4zOC0xLjEyLTIuNS0yLjUtMi41UzkuNSAxMC42MiA5LjUgMTJjMCAxLjAyLjYyIDEuOSAxLjUgMi4yOXYzLjNMNy41OSAyMSA5IDIyLjQxbDMtMyAzIDNMMTYuNDEgMjEgMTMgMTcuNTl2LTMuM3pNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJoMmMwLTQuOTcgNC4wMy05IDktOXM5IDQuMDMgOSA5aDJjMC02LjA3LTQuOTMtMTEtMTEtMTF6IiAvPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LWNvbXBvbmVudCI+PHBhdGggZD0iTTUgMmMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDF2Nmg2VjZINVYyem00IDE0YzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOGMxLjE2LS40MSAyLTEuNTEgMi0yLjgydi0ySDl2MnptLTggMGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThDNi4xNiAxOC40IDcgMTcuMyA3IDE2di0ySDF2MnpNMjEgNlYyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRoLTJ2Nmg2VjZoLTJ6bS04LTRjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NEg5djZoNlY2aC0yVjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJoLTZ2MnoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtaW5wdXQtY29tcG9zaXRlIj48cGF0aCBkPSJNNSAyYzAtLjU1LS40NS0xLTEtMXMtMSAuNDUtMSAxdjRIMXY2aDZWNkg1VjJ6bTQgMTRjMCAxLjMuODQgMi40IDIgMi44MlYyM2gydi00LjE4YzEuMTYtLjQxIDItMS41MSAyLTIuODJ2LTJIOXYyem0tOCAwYzAgMS4zLjg0IDIuNCAyIDIuODJWMjNoMnYtNC4xOEM2LjE2IDE4LjQgNyAxNy4zIDcgMTZ2LTJIMXYyek0yMSA2VjJjMC0uNTUtLjQ1LTEtMS0xcy0xIC40NS0xIDF2NGgtMnY2aDZWNmgtMnptLTgtNGMwLS41NS0uNDUtMS0xLTFzLTEgLjQ1LTEgMXY0SDl2Nmg2VjZoLTJWMnptNCAxNGMwIDEuMy44NCAyLjQgMiAyLjgyVjIzaDJ2LTQuMThjMS4xNi0uNDEgMi0xLjUxIDItMi44MnYtMmgtNnYyeiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy1pbnB1dC1oZG1pIj48cGF0aCBkPSJNMTggN1Y0YzAtMS4xLS45LTItMi0ySDhjLTEuMSAwLTIgLjktMiAydjNINXY2bDMgNnYzaDh2LTNsMy02VjdoLTF6TTggNGg4djNoLTJWNWgtMXYyaC0yVjVoLTF2Mkg4VjR6IiAvPjwvZz4KPGcgaWQ9InNldHRpbmdzLWlucHV0LXN2aWRlbyI+PHBhdGggZD0iTTggMTEuNWMwLS44My0uNjctMS41LTEuNS0xLjVTNSAxMC42NyA1IDExLjUgNS42NyAxMyA2LjUgMTMgOCAxMi4zMyA4IDExLjV6bTctNWMwLS44My0uNjctMS41LTEuNS0xLjVoLTNDOS42NyA1IDkgNS42NyA5IDYuNVM5LjY3IDggMTAuNSA4aDNjLjgzIDAgMS41LS42NyAxLjUtMS41ek04LjUgMTVjLS44MyAwLTEuNS42Ny0xLjUgMS41UzcuNjcgMTggOC41IDE4czEuNS0uNjcgMS41LTEuNVM5LjMzIDE1IDguNSAxNXpNMTIgMUM1LjkzIDEgMSA1LjkzIDEgMTJzNC45MyAxMSAxMSAxMSAxMS00LjkzIDExLTExUzE4LjA3IDEgMTIgMXptMCAyMGMtNC45NiAwLTktNC4wNC05LTlzNC4wNC05IDktOSA5IDQuMDQgOSA5LTQuMDQgOS05IDl6bTUuNS0xMWMtLjgzIDAtMS41LjY3LTEuNSAxLjVzLjY3IDEuNSAxLjUgMS41IDEuNS0uNjcgMS41LTEuNS0uNjctMS41LTEuNS0xLjV6bS0yIDVjLS44MyAwLTEuNS42Ny0xLjUgMS41cy42NyAxLjUgMS41IDEuNSAxLjUtLjY3IDEuNS0xLjUtLjY3LTEuNS0xLjUtMS41eiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy1vdmVyc2NhbiI+PHBhdGggZD0iTTEyLjAxIDUuNUwxMCA4aDRsLTEuOTktMi41ek0xOCAxMHY0bDIuNS0xLjk5TDE4IDEwek02IDEwbC0yLjUgMi4wMUw2IDE0di00em04IDZoLTRsMi4wMSAyLjVMMTQgMTZ6bTctMTNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2LjAxSDNWNC45OWgxOHYxNC4wMnoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcGhvbmUiPjxwYXRoIGQ9Ik0xMyA5aC0ydjJoMlY5em00IDBoLTJ2MmgyVjl6bTMgNi41Yy0xLjI1IDAtMi40NS0uMi0zLjU3LS41Ny0uMzUtLjExLS43NC0uMDMtMS4wMi4yNGwtMi4yIDIuMmMtMi44My0xLjQ0LTUuMTUtMy43NS02LjU5LTYuNThsMi4yLTIuMjFjLjI4LS4yNy4zNi0uNjYuMjUtMS4wMUM4LjcgNi40NSA4LjUgNS4yNSA4LjUgNGMwLS41NS0uNDUtMS0xLTFINGMtLjU1IDAtMSAuNDUtMSAxIDAgOS4zOSA3LjYxIDE3IDE3IDE3IC41NSAwIDEtLjQ1IDEtMXYtMy41YzAtLjU1LS40NS0xLTEtMXpNMTkgOXYyaDJWOWgtMnoiIC8+PC9nPgo8ZyBpZD0ic2V0dGluZ3MtcG93ZXIiPjxwYXRoIGQ9Ik03IDI0aDJ2LTJIN3Yyem00IDBoMnYtMmgtMnYyem0yLTIyaC0ydjEwaDJWMnptMy41NiAyLjQ0bC0xLjQ1IDEuNDVDMTYuODQgNi45NCAxOCA4LjgzIDE4IDExYzAgMy4zMS0yLjY5IDYtNiA2cy02LTIuNjktNi02YzAtMi4xNyAxLjE2LTQuMDYgMi44OC01LjEyTDcuNDQgNC40NEM1LjM2IDUuODggNCA4LjI4IDQgMTFjMCA0LjQyIDMuNTggOCA4IDhzOC0zLjU4IDgtOGMwLTIuNzItMS4zNi01LjEyLTMuNDQtNi41NnpNMTUgMjRoMnYtMmgtMnYyeiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy1yZW1vdGUiPjxwYXRoIGQ9Ik0xNSA5SDljLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWg2Yy41NSAwIDEtLjQ1IDEtMVYxMGMwLS41NS0uNDUtMS0xLTF6bS0zIDZjLTEuMSAwLTItLjktMi0ycy45LTIgMi0yIDIgLjkgMiAyLS45IDItMiAyek03LjA1IDYuMDVsMS40MSAxLjQxQzkuMzcgNi41NiAxMC42MiA2IDEyIDZzMi42My41NiAzLjU0IDEuNDZsMS40MS0xLjQxQzE1LjY4IDQuNzggMTMuOTMgNCAxMiA0cy0zLjY4Ljc4LTQuOTUgMi4wNXpNMTIgMEM4Ljk2IDAgNi4yMSAxLjIzIDQuMjIgMy4yMmwxLjQxIDEuNDFDNy4yNiAzLjAxIDkuNTEgMiAxMiAyczQuNzQgMS4wMSA2LjM2IDIuNjRsMS40MS0xLjQxQzE3Ljc5IDEuMjMgMTUuMDQgMCAxMiAweiIgLz48L2c+CjxnIGlkPSJzZXR0aW5ncy12b2ljZSI+PHBhdGggZD0iTTcgMjRoMnYtMkg3djJ6bTUtMTFjMS42NiAwIDIuOTktMS4zNCAyLjk5LTNMMTUgNGMwLTEuNjYtMS4zNC0zLTMtM1M5IDIuMzQgOSA0djZjMCAxLjY2IDEuMzQgMyAzIDN6bS0xIDExaDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnptNC0xNGgtMS43YzAgMy0yLjU0IDUuMS01LjMgNS4xUzYuNyAxMyA2LjcgMTBINWMwIDMuNDEgMi43MiA2LjIzIDYgNi43MlYyMGgydi0zLjI4YzMuMjgtLjQ5IDYtMy4zMSA2LTYuNzJ6IiAvPjwvZz4KPGcgaWQ9InNob3AiPjxwYXRoIGQ9Ik0xNiA2VjRjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDJ2MTNjMCAxLjExLjg5IDIgMiAyaDE2YzEuMTEgMCAyLS44OSAyLTJWNmgtNnptLTYtMmg0djJoLTRWNHpNOSAxOFY5bDcuNSA0TDkgMTh6IiAvPjwvZz4KPGcgaWQ9InNob3AtdHdvIj48cGF0aCBkPSJNMyA5SDF2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJIM1Y5em0xNS00VjNjMC0xLjExLS44OS0yLTItMmgtNGMtMS4xMSAwLTIgLjg5LTIgMnYySDV2MTFjMCAxLjExLjg5IDIgMiAyaDE0YzEuMTEgMCAyLS44OSAyLTJWNWgtNXptLTYtMmg0djJoLTRWM3ptMCAxMlY4bDUuNSAzLTUuNSA0eiIgLz48L2c+CjxnIGlkPSJzaG9wcGluZy1iYXNrZXQiPjxwYXRoIGQ9Ik0xNy4yMSA5bC00LjM4LTYuNTZjLS4xOS0uMjgtLjUxLS40Mi0uODMtLjQyLS4zMiAwLS42NC4xNC0uODMuNDNMNi43OSA5SDJjLS41NSAwLTEgLjQ1LTEgMSAwIC4wOS4wMS4xOC4wNC4yN2wyLjU0IDkuMjdjLjIzLjg0IDEgMS40NiAxLjkyIDEuNDZoMTNjLjkyIDAgMS42OS0uNjIgMS45My0xLjQ2bDIuNTQtOS4yN0wyMyAxMGMwLS41NS0uNDUtMS0xLTFoLTQuNzl6TTkgOWwzLTQuNEwxNSA5SDl6bTMgOGMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTIgMiAuOSAyIDItLjkgMi0yIDJ6IiAvPjwvZz4KPGcgaWQ9InNob3BwaW5nLWNhcnQiPjxwYXRoIGQ9Ik03IDE4Yy0xLjEgMC0xLjk5LjktMS45OSAyUzUuOSAyMiA3IDIyczItLjkgMi0yLS45LTItMi0yek0xIDJ2MmgybDMuNiA3LjU5LTEuMzUgMi40NWMtLjE2LjI4LS4yNS42MS0uMjUuOTYgMCAxLjEuOSAyIDIgMmgxMnYtMkg3LjQyYy0uMTQgMC0uMjUtLjExLS4yNS0uMjVsLjAzLS4xMi45LTEuNjNoNy40NWMuNzUgMCAxLjQxLS40MSAxLjc1LTEuMDNsMy41OC02LjQ5Yy4wOC0uMTQuMTItLjMxLjEyLS40OCAwLS41NS0uNDUtMS0xLTFINS4yMWwtLjk0LTJIMXptMTYgMTZjLTEuMSAwLTEuOTkuOS0xLjk5IDJzLjg5IDIgMS45OSAyIDItLjkgMi0yLS45LTItMi0yeiIgLz48L2c+CjxnIGlkPSJzb3J0Ij48cGF0aCBkPSJNMyAxOGg2di0ySDN2MnpNMyA2djJoMThWNkgzem0wIDdoMTJ2LTJIM3YyeiIgLz48L2c+CjxnIGlkPSJzcGVha2VyLW5vdGVzIj48cGF0aCBkPSJNMjAgMkg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMjJsNC00aDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6TTggMTRINnYtMmgydjJ6bTAtM0g2VjloMnYyem0wLTNINlY2aDJ2MnptNyA2aC01di0yaDV2MnptMy0zaC04VjloOHYyem0wLTNoLThWNmg4djJ6IiAvPjwvZz4KPGcgaWQ9InNwZWFrZXItbm90ZXMtb2ZmIj48cGF0aCBkPSJNMTAuNTQgMTFsLS41NC0uNTRMNy41NCA4IDYgNi40NiAyLjM4IDIuODQgMS4yNyAxLjczIDAgM2wyLjAxIDIuMDFMMiAyMmw0LTRoOWw1LjczIDUuNzNMMjIgMjIuNDYgMTcuNTQgMThsLTctN3pNOCAxNEg2di0yaDJ2MnptLTItM1Y5bDIgMkg2em0xNC05SDQuMDhMMTAgNy45MlY2aDh2MmgtNy45MmwxIDFIMTh2MmgtNC45Mmw2Ljk5IDYuOTlDMjEuMTQgMTcuOTUgMjIgMTcuMDggMjIgMTZWNGMwLTEuMS0uOS0yLTItMnoiIC8+PC9nPgo8ZyBpZD0ic3BlbGxjaGVjayI+PHBhdGggZD0iTTEyLjQ1IDE2aDIuMDlMOS40MyAzSDcuNTdMMi40NiAxNmgyLjA5bDEuMTItM2g1LjY0bDEuMTQgM3ptLTYuMDItNUw4LjUgNS40OCAxMC41NyAxMUg2LjQzem0xNS4xNi41OWwtOC4wOSA4LjA5TDkuODMgMTZsLTEuNDEgMS40MSA1LjA5IDUuMDlMMjMgMTNsLTEuNDEtMS40MXoiIC8+PC9nPgo8ZyBpZD0ic3RhciI+PHBhdGggZD0iTTEyIDE3LjI3TDE4LjE4IDIxbC0xLjY0LTcuMDNMMjIgOS4yNGwtNy4xOS0uNjFMMTIgMiA5LjE5IDguNjMgMiA5LjI0bDUuNDYgNC43M0w1LjgyIDIxeiIgLz48L2c+CjxnIGlkPSJzdGFyLWJvcmRlciI+PHBhdGggZD0iTTIyIDkuMjRsLTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRsLTMuNzYgMi4yNyAxLTQuMjgtMy4zMi0yLjg4IDQuMzgtLjM4TDEyIDYuMWwxLjcxIDQuMDQgNC4zOC4zOC0zLjMyIDIuODggMSA0LjI4TDEyIDE1LjR6IiAvPjwvZz4KPGcgaWQ9InN0YXItaGFsZiI+PHBhdGggZD0iTTIyIDkuMjRsLTcuMTktLjYyTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMSAxMiAxNy4yNyAxOC4xOCAyMWwtMS42My03LjAzTDIyIDkuMjR6TTEyIDE1LjRWNi4xbDEuNzEgNC4wNCA0LjM4LjM4LTMuMzIgMi44OCAxIDQuMjhMMTIgMTUuNHoiIC8+PC9nPgo8ZyBpZD0ic3RhcnMiPjxwYXRoIGQ9Ik0xMS45OSAyQzYuNDcgMiAyIDYuNDggMiAxMnM0LjQ3IDEwIDkuOTkgMTBDMTcuNTIgMjIgMjIgMTcuNTIgMjIgMTJTMTcuNTIgMiAxMS45OSAyem00LjI0IDE2TDEyIDE1LjQ1IDcuNzcgMThsMS4xMi00LjgxLTMuNzMtMy4yMyA0LjkyLS40MkwxMiA1bDEuOTIgNC41MyA0LjkyLjQyLTMuNzMgMy4yM0wxNi4yMyAxOHoiIC8+PC9nPgo8ZyBpZD0ic3RvcmUiPjxwYXRoIGQ9Ik0yMCA0SDR2MmgxNlY0em0xIDEwdi0ybC0xLTVINGwtMSA1djJoMXY2aDEwdi02aDR2Nmgydi02aDF6bS05IDRINnYtNGg2djR6IiAvPjwvZz4KPGcgaWQ9InN1YmRpcmVjdG9yeS1hcnJvdy1sZWZ0Ij48cGF0aCBkPSJNMTEgOWwxLjQyIDEuNDJMOC44MyAxNEgxOFY0aDJ2MTJIOC44M2wzLjU5IDMuNThMMTEgMjFsLTYtNiA2LTZ6IiAvPjwvZz4KPGcgaWQ9InN1YmRpcmVjdG9yeS1hcnJvdy1yaWdodCI+PHBhdGggZD0iTTE5IDE1bC02IDYtMS40Mi0xLjQyTDE1LjE3IDE2SDRWNGgydjEwaDkuMTdsLTMuNTktMy41OEwxMyA5bDYgNnoiIC8+PC9nPgo8ZyBpZD0ic3ViamVjdCI+PHBhdGggZD0iTTE0IDE3SDR2MmgxMHYtMnptNi04SDR2MmgxNlY5ek00IDE1aDE2di0ySDR2MnpNNCA1djJoMTZWNUg0eiIgLz48L2c+CjxnIGlkPSJzdXBlcnZpc29yLWFjY291bnQiPjxwYXRoIGQ9Ik0xNi41IDEyYzEuMzggMCAyLjQ5LTEuMTIgMi40OS0yLjVTMTcuODggNyAxNi41IDdDMTUuMTIgNyAxNCA4LjEyIDE0IDkuNXMxLjEyIDIuNSAyLjUgMi41ek05IDExYzEuNjYgMCAyLjk5LTEuMzQgMi45OS0zUzEwLjY2IDUgOSA1QzcuMzQgNSA2IDYuMzQgNiA4czEuMzQgMyAzIDN6bTcuNSAzYy0xLjgzIDAtNS41LjkyLTUuNSAyLjc1VjE5aDExdi0yLjI1YzAtMS44My0zLjY3LTIuNzUtNS41LTIuNzV6TTkgMTNjLTIuMzMgMC03IDEuMTctNyAzLjVWMTloN3YtMi4yNWMwLS44NS4zMy0yLjM0IDIuMzctMy40N0MxMC41IDEzLjEgOS42NiAxMyA5IDEzeiIgLz48L2c+CjxnIGlkPSJzd2FwLWhvcml6Ij48cGF0aCBkPSJNNi45OSAxMUwzIDE1bDMuOTkgNHYtM0gxNHYtMkg2Ljk5di0zek0yMSA5bC0zLjk5LTR2M0gxMHYyaDcuMDF2M0wyMSA5eiIgLz48L2c+CjxnIGlkPSJzd2FwLXZlcnQiPjxwYXRoIGQ9Ik0xNiAxNy4wMVYxMGgtMnY3LjAxaC0zTDE1IDIxbDQtMy45OWgtM3pNOSAzTDUgNi45OWgzVjE0aDJWNi45OWgzTDkgM3oiIC8+PC9nPgo8ZyBpZD0ic3dhcC12ZXJ0aWNhbC1jaXJjbGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyek02LjUgOUwxMCA1LjUgMTMuNSA5SDExdjRIOVY5SDYuNXptMTEgNkwxNCAxOC41IDEwLjUgMTVIMTN2LTRoMnY0aDIuNXoiIC8+PC9nPgo8ZyBpZD0ic3lzdGVtLXVwZGF0ZS1hbHQiPjxwYXRoIGQ9Ik0xMiAxNi41bDQtNGgtM3YtOWgtMnY5SDhsNCA0em05LTEzaC02djEuOTloNnYxNC4wM0gzVjUuNDloNlYzLjVIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMnYtMTRjMC0xLjEtLjktMi0yLTJ6IiAvPjwvZz4KPGcgaWQ9InRhYiI+PHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6IiAvPjwvZz4KPGcgaWQ9InRhYi11bnNlbGVjdGVkIj48cGF0aCBkPSJNMSA5aDJWN0gxdjJ6bTAgNGgydi0ySDF2MnptMC04aDJWM2MtMS4xIDAtMiAuOS0yIDJ6bTggMTZoMnYtMkg5djJ6bS04LTRoMnYtMkgxdjJ6bTIgNHYtMkgxYzAgMS4xLjkgMiAyIDJ6TTIxIDNoLTh2NmgxMFY1YzAtMS4xLS45LTItMi0yem0wIDE0aDJ2LTJoLTJ2MnpNOSA1aDJWM0g5djJ6TTUgMjFoMnYtMkg1djJ6TTUgNWgyVjNINXYyem0xNiAxNmMxLjEgMCAyLS45IDItMmgtMnYyem0wLThoMnYtMmgtMnYyem0tOCA4aDJ2LTJoLTJ2MnptNCAwaDJ2LTJoLTJ2MnoiIC8+PC9nPgo8ZyBpZD0idGV4dC1mb3JtYXQiPjxwYXRoIGQ9Ik01IDE3djJoMTR2LTJINXptNC41LTQuMmg1bC45IDIuMmgyLjFMMTIuNzUgNGgtMS41TDYuNSAxNWgyLjFsLjktMi4yek0xMiA1Ljk4TDEzLjg3IDExaC0zLjc0TDEyIDUuOTh6IiAvPjwvZz4KPGcgaWQ9InRoZWF0ZXJzIj48cGF0aCBkPSJNMTggM3YyaC0yVjNIOHYySDZWM0g0djE4aDJ2LTJoMnYyaDh2LTJoMnYyaDJWM2gtMnpNOCAxN0g2di0yaDJ2MnptMC00SDZ2LTJoMnYyem0wLTRINlY3aDJ2MnptMTAgOGgtMnYtMmgydjJ6bTAtNGgtMnYtMmgydjJ6bTAtNGgtMlY3aDJ2MnoiIC8+PC9nPgo8ZyBpZD0idGh1bWItZG93biI+PHBhdGggZD0iTTE1IDNINmMtLjgzIDAtMS41NC41LTEuODQgMS4yMmwtMy4wMiA3LjA1Yy0uMDkuMjMtLjE0LjQ3LS4xNC43M3YxLjkxbC4wMS4wMUwxIDE0YzAgMS4xLjkgMiAyIDJoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyM2w2LjU5LTYuNTljLjM2LS4zNi41OC0uODYuNTgtMS40MVY1YzAtMS4xLS45LTItMi0yem00IDB2MTJoNFYzaC00eiIgLz48L2c+CjxnIGlkPSJ0aHVtYi11cCI+PHBhdGggZD0iTTEgMjFoNFY5SDF2MTJ6bTIyLTExYzAtMS4xLS45LTItMi0yaC02LjMxbC45NS00LjU3LjAzLS4zMmMwLS40MS0uMTctLjc5LS40NC0xLjA2TDE0LjE3IDEgNy41OSA3LjU5QzcuMjIgNy45NSA3IDguNDUgNyA5djEwYzAgMS4xLjkgMiAyIDJoOWMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczdi0xLjkxbC0uMDEtLjAxTDIzIDEweiIgLz48L2c+CjxnIGlkPSJ0aHVtYnMtdXAtZG93biI+PHBhdGggZD0iTTEyIDZjMC0uNTUtLjQ1LTEtMS0xSDUuODJsLjY2LTMuMTguMDItLjIzYzAtLjMxLS4xMy0uNTktLjMzLS44TDUuMzggMCAuNDQgNC45NEMuMTcgNS4yMSAwIDUuNTkgMCA2djYuNWMwIC44My42NyAxLjUgMS41IDEuNWg2Ljc1Yy42MiAwIDEuMTUtLjM4IDEuMzgtLjkxbDIuMjYtNS4yOWMuMDctLjE3LjExLS4zNi4xMS0uNTVWNnptMTAuNSA0aC02Ljc1Yy0uNjIgMC0xLjE1LjM4LTEuMzguOTFsLTIuMjYgNS4yOWMtLjA3LjE3LS4xMS4zNi0uMTEuNTVWMThjMCAuNTUuNDUgMSAxIDFoNS4xOGwtLjY2IDMuMTgtLjAyLjI0YzAgLjMxLjEzLjU5LjMzLjhsLjc5Ljc4IDQuOTQtNC45NGMuMjctLjI3LjQ0LS42NS40NC0xLjA2di02LjVjMC0uODMtLjY3LTEuNS0xLjUtMS41eiIgLz48L2c+CjxnIGlkPSJ0aW1lbGluZSI+PHBhdGggZD0iTTIzIDhjMCAxLjEtLjkgMi0yIDItLjE4IDAtLjM1LS4wMi0uNTEtLjA3bC0zLjU2IDMuNTVjLjA1LjE2LjA3LjM0LjA3LjUyIDAgMS4xLS45IDItMiAycy0yLS45LTItMmMwLS4xOC4wMi0uMzYuMDctLjUybC0yLjU1LTIuNTVjLS4xNi4wNS0uMzQuMDctLjUyLjA3cy0uMzYtLjAyLS41Mi0uMDdsLTQuNTUgNC41NmMuMDUuMTYuMDcuMzMuMDcuNTEgMCAxLjEtLjkgMi0yIDJzLTItLjktMi0yIC45LTIgMi0yYy4xOCAwIC4zNS4wMi41MS4wN2w0LjU2LTQuNTVDOC4wMiA5LjM2IDggOS4xOCA4IDljMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIC4xOC0uMDIuMzYtLjA3LjUybDIuNTUgMi41NWMuMTYtLjA1LjM0LS4wNy41Mi0uMDdzLjM2LjAyLjUyLjA3bDMuNTUtMy41NkMxOS4wMiA4LjM1IDE5IDguMTggMTkgOGMwLTEuMS45LTIgMi0yczIgLjkgMiAyeiIgLz48L2c+CjxnIGlkPSJ0b2MiPjxwYXRoIGQ9Ik0zIDloMTRWN0gzdjJ6bTAgNGgxNHYtMkgzdjJ6bTAgNGgxNHYtMkgzdjJ6bTE2IDBoMnYtMmgtMnYyem0wLTEwdjJoMlY3aC0yem0wIDZoMnYtMmgtMnYyeiIgLz48L2c+CjxnIGlkPSJ0b2RheSI+PHBhdGggZD0iTTE5IDNoLTFWMWgtMnYySDhWMUg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAxOWMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOGgxNHYxMXpNNyAxMGg1djVIN3oiIC8+PC9nPgo8ZyBpZD0idG9sbCI+PHBhdGggZD0iTTE1IDRjLTQuNDIgMC04IDMuNTgtOCA4czMuNTggOCA4IDggOC0zLjU4IDgtOC0zLjU4LTgtOC04em0wIDE0Yy0zLjMxIDAtNi0yLjY5LTYtNnMyLjY5LTYgNi02IDYgMi42OSA2IDYtMi42OSA2LTYgNnpNMyAxMmMwLTIuNjEgMS42Ny00LjgzIDQtNS42NVY0LjI2QzMuNTUgNS4xNSAxIDguMjcgMSAxMnMyLjU1IDYuODUgNiA3Ljc0di0yLjA5Yy0yLjMzLS44Mi00LTMuMDQtNC01LjY1eiIgLz48L2c+CjxnIGlkPSJ0b3VjaC1hcHAiPjxwYXRoIGQ9Ik05IDExLjI0VjcuNUM5IDYuMTIgMTAuMTIgNSAxMS41IDVTMTQgNi4xMiAxNCA3LjV2My43NGMxLjIxLS44MSAyLTIuMTggMi0zLjc0QzE2IDUuMDEgMTMuOTkgMyAxMS41IDNTNyA1LjAxIDcgNy41YzAgMS41Ni43OSAyLjkzIDIgMy43NHptOS44NCA0LjYzbC00LjU0LTIuMjZjLS4xNy0uMDctLjM1LS4xMS0uNTQtLjExSDEzdi02YzAtLjgzLS42Ny0xLjUtMS41LTEuNVMxMCA2LjY3IDEwIDcuNXYxMC43NGwtMy40My0uNzJjLS4wOC0uMDEtLjE1LS4wMy0uMjQtLjAzLS4zMSAwLS41OS4xMy0uNzkuMzNsLS43OS44IDQuOTQgNC45NGMuMjcuMjcuNjUuNDQgMS4wNi40NGg2Ljc5Yy43NSAwIDEuMzMtLjU1IDEuNDQtMS4yOGwuNzUtNS4yN2MuMDEtLjA3LjAyLS4xNC4wMi0uMiAwLS42Mi0uMzgtMS4xNi0uOTEtMS4zOHoiIC8+PC9nPgo8ZyBpZD0idHJhY2stY2hhbmdlcyI+PHBhdGggZD0iTTE5LjA3IDQuOTNsLTEuNDEgMS40MUMxOS4xIDcuNzkgMjAgOS43OSAyMCAxMmMwIDQuNDItMy41OCA4LTggOHMtOC0zLjU4LTgtOGMwLTQuMDggMy4wNS03LjQ0IDctNy45M3YyLjAyQzguMTYgNi41NyA2IDkuMDMgNiAxMmMwIDMuMzEgMi42OSA2IDYgNnM2LTIuNjkgNi02YzAtMS42Ni0uNjctMy4xNi0xLjc2LTQuMjRsLTEuNDEgMS40MUMxNS41NSA5LjkgMTYgMTAuOSAxNiAxMmMwIDIuMjEtMS43OSA0LTQgNHMtNC0xLjc5LTQtNGMwLTEuODYgMS4yOC0zLjQxIDMtMy44NnYyLjE0Yy0uNi4zNS0xIC45OC0xIDEuNzIgMCAxLjEuOSAyIDIgMnMyLS45IDItMmMwLS43NC0uNC0xLjM4LTEtMS43MlYyaC0xQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBjMC0yLjc2LTEuMTItNS4yNi0yLjkzLTcuMDd6IiAvPjwvZz4KPGcgaWQ9InRyYW5zbGF0ZSI+PHBhdGggZD0iTTEyLjg3IDE1LjA3bC0yLjU0LTIuNTEuMDMtLjAzYzEuNzQtMS45NCAyLjk4LTQuMTcgMy43MS02LjUzSDE3VjRoLTdWMkg4djJIMXYxLjk5aDExLjE3QzExLjUgNy45MiAxMC40NCA5Ljc1IDkgMTEuMzUgOC4wNyAxMC4zMiA3LjMgOS4xOSA2LjY5IDhoLTJjLjczIDEuNjMgMS43MyAzLjE3IDIuOTggNC41NmwtNS4wOSA1LjAyTDQgMTlsNS01IDMuMTEgMy4xMS43Ni0yLjA0ek0xOC41IDEwaC0yTDEyIDIyaDJsMS4xMi0zaDQuNzVMMjEgMjJoMmwtNC41LTEyem0tMi42MiA3bDEuNjItNC4zM0wxOS4xMiAxN2gtMy4yNHoiIC8+PC9nPgo8ZyBpZD0idHJlbmRpbmctZG93biI+PHBhdGggZD0iTTE2IDE4bDIuMjktMi4yOS00Ljg4LTQuODgtNCA0TDIgNy40MSAzLjQxIDZsNiA2IDQtNCA2LjMgNi4yOUwyMiAxMnY2eiIgLz48L2c+CjxnIGlkPSJ0cmVuZGluZy1mbGF0Ij48cGF0aCBkPSJNMjIgMTJsLTQtNHYzSDN2MmgxNXYzeiIgLz48L2c+CjxnIGlkPSJ0cmVuZGluZy11cCI+PHBhdGggZD0iTTE2IDZsMi4yOSAyLjI5LTQuODggNC44OC00LTRMMiAxNi41OSAzLjQxIDE4bDYtNiA0IDQgNi4zLTYuMjlMMjIgMTJWNnoiIC8+PC9nPgo8ZyBpZD0idHVybmVkLWluIj48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yeiIgLz48L2c+CjxnIGlkPSJ0dXJuZWQtaW4tbm90Ij48cGF0aCBkPSJNMTcgM0g3Yy0xLjEgMC0xLjk5LjktMS45OSAyTDUgMjFsNy0zIDcgM1Y1YzAtMS4xLS45LTItMi0yem0wIDE1bC01LTIuMThMNyAxOFY1aDEwdjEzeiIgLz48L2c+CjxnIGlkPSJ1bmFyY2hpdmUiPjxwYXRoIGQ9Ik0yMC41NSA1LjIybC0xLjM5LTEuNjhDMTguODggMy4yMSAxOC40NyAzIDE4IDNINmMtLjQ3IDAtLjg4LjIxLTEuMTUuNTVMMy40NiA1LjIyQzMuMTcgNS41NyAzIDYuMDEgMyA2LjVWMTljMCAxLjEuODkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNi41YzAtLjQ5LS4xNy0uOTMtLjQ1LTEuMjh6TTEyIDkuNWw1LjUgNS41SDE0djJoLTR2LTJINi41TDEyIDkuNXpNNS4xMiA1bC44Mi0xaDEybC45MyAxSDUuMTJ6IiAvPjwvZz4KPGcgaWQ9InVuZG8iPjxwYXRoIGQ9Ik0xMi41IDhjLTIuNjUgMC01LjA1Ljk5LTYuOSAyLjZMMiA3djloOWwtMy42Mi0zLjYyYzEuMzktMS4xNiAzLjE2LTEuODggNS4xMi0xLjg4IDMuNTQgMCA2LjU1IDIuMzEgNy42IDUuNWwyLjM3LS43OEMyMS4wOCAxMS4wMyAxNy4xNSA4IDEyLjUgOHoiIC8+PC9nPgo8ZyBpZD0idW5mb2xkLWxlc3MiPjxwYXRoIGQ9Ik03LjQxIDE4LjU5TDguODMgMjAgMTIgMTYuODMgMTUuMTcgMjBsMS40MS0xLjQxTDEyIDE0bC00LjU5IDQuNTl6bTkuMTgtMTMuMThMMTUuMTcgNCAxMiA3LjE3IDguODMgNCA3LjQxIDUuNDEgMTIgMTBsNC41OS00LjU5eiIgLz48L2c+CjxnIGlkPSJ1bmZvbGQtbW9yZSI+PHBhdGggZD0iTTEyIDUuODNMMTUuMTcgOWwxLjQxLTEuNDFMMTIgMyA3LjQxIDcuNTkgOC44MyA5IDEyIDUuODN6bTAgMTIuMzRMOC44MyAxNWwtMS40MSAxLjQxTDEyIDIxbDQuNTktNC41OUwxNS4xNyAxNSAxMiAxOC4xN3oiIC8+PC9nPgo8ZyBpZD0idXBkYXRlIj48cGF0aCBkPSJNMjEgMTAuMTJoLTYuNzhsMi43NC0yLjgyYy0yLjczLTIuNy03LjE1LTIuOC05Ljg4LS4xLTIuNzMgMi43MS0yLjczIDcuMDggMCA5Ljc5IDIuNzMgMi43MSA3LjE1IDIuNzEgOS44OCAwQzE4LjMyIDE1LjY1IDE5IDE0LjA4IDE5IDEyLjFoMmMwIDEuOTgtLjg4IDQuNTUtMi42NCA2LjI5LTMuNTEgMy40OC05LjIxIDMuNDgtMTIuNzIgMC0zLjUtMy40Ny0zLjUzLTkuMTEtLjAyLTEyLjU4IDMuNTEtMy40NyA5LjE0LTMuNDcgMTIuNjUgMEwyMSAzdjcuMTJ6TTEyLjUgOHY0LjI1bDMuNSAyLjA4LS43MiAxLjIxTDExIDEzVjhoMS41eiIgLz48L2c+CjxnIGlkPSJ2ZXJpZmllZC11c2VyIj48cGF0aCBkPSJNMTIgMUwzIDV2NmMwIDUuNTUgMy44NCAxMC43NCA5IDEyIDUuMTYtMS4yNiA5LTYuNDUgOS0xMlY1bC05LTR6bS0yIDE2bC00LTQgMS40MS0xLjQxTDEwIDE0LjE3bDYuNTktNi41OUwxOCA5bC04IDh6IiAvPjwvZz4KPGcgaWQ9InZpZXctYWdlbmRhIj48cGF0aCBkPSJNMjAgMTNIM2MtLjU1IDAtMSAuNDUtMSAxdjZjMCAuNTUuNDUgMSAxIDFoMTdjLjU1IDAgMS0uNDUgMS0xdi02YzAtLjU1LS40NS0xLTEtMXptMC0xMEgzYy0uNTUgMC0xIC40NS0xIDF2NmMwIC41NS40NSAxIDEgMWgxN2MuNTUgMCAxLS40NSAxLTFWNGMwLS41NS0uNDUtMS0xLTF6IiAvPjwvZz4KPGcgaWQ9InZpZXctYXJyYXkiPjxwYXRoIGQ9Ik00IDE4aDNWNUg0djEzek0xOCA1djEzaDNWNWgtM3pNOCAxOGg5VjVIOHYxM3oiIC8+PC9nPgo8ZyBpZD0idmlldy1jYXJvdXNlbCI+PHBhdGggZD0iTTcgMTloMTBWNEg3djE1em0tNS0yaDRWNkgydjExek0xOCA2djExaDRWNmgtNHoiIC8+PC9nPgo8ZyBpZD0idmlldy1jb2x1bW4iPjxwYXRoIGQ9Ik0xMCAxOGg1VjVoLTV2MTN6bS02IDBoNVY1SDR2MTN6TTE2IDV2MTNoNVY1aC01eiIgLz48L2c+CjxnIGlkPSJ2aWV3LWRheSI+PHBhdGggZD0iTTIgMjFoMTl2LTNIMnYzek0yMCA4SDNjLS41NSAwLTEgLjQ1LTEgMXY2YzAgLjU1LjQ1IDEgMSAxaDE3Yy41NSAwIDEtLjQ1IDEtMVY5YzAtLjU1LS40NS0xLTEtMXpNMiAzdjNoMTlWM0gyeiIgLz48L2c+CjxnIGlkPSJ2aWV3LWhlYWRsaW5lIj48cGF0aCBkPSJNNCAxNWgxNnYtMkg0djJ6bTAgNGgxNnYtMkg0djJ6bTAtOGgxNlY5SDR2MnptMC02djJoMTZWNUg0eiIgLz48L2c+CjxnIGlkPSJ2aWV3LWxpc3QiPjxwYXRoIGQ9Ik00IDE0aDR2LTRINHY0em0wIDVoNHYtNEg0djR6TTQgOWg0VjVINHY0em01IDVoMTJ2LTRIOXY0em0wIDVoMTJ2LTRIOXY0ek05IDV2NGgxMlY1SDl6IiAvPjwvZz4KPGcgaWQ9InZpZXctbW9kdWxlIj48cGF0aCBkPSJNNCAxMWg1VjVINHY2em0wIDdoNXYtNkg0djZ6bTYgMGg1di02aC01djZ6bTYgMGg1di02aC01djZ6bS02LTdoNVY1aC01djZ6bTYtNnY2aDVWNWgtNXoiIC8+PC9nPgo8ZyBpZD0idmlldy1xdWlsdCI+PHBhdGggZD0iTTEwIDE4aDV2LTZoLTV2NnptLTYgMGg1VjVINHYxM3ptMTIgMGg1di02aC01djZ6TTEwIDV2NmgxMVY1SDEweiIgLz48L2c+CjxnIGlkPSJ2aWV3LXN0cmVhbSI+PHBhdGggZD0iTTQgMThoMTd2LTZINHY2ek00IDV2NmgxN1Y1SDR6IiAvPjwvZz4KPGcgaWQ9InZpZXctd2VlayI+PHBhdGggZD0iTTYgNUgzYy0uNTUgMC0xIC40NS0xIDF2MTJjMCAuNTUuNDUgMSAxIDFoM2MuNTUgMCAxLS40NSAxLTFWNmMwLS41NS0uNDUtMS0xLTF6bTE0IDBoLTNjLS41NSAwLTEgLjQ1LTEgMXYxMmMwIC41NS40NSAxIDEgMWgzYy41NSAwIDEtLjQ1IDEtMVY2YzAtLjU1LS40NS0xLTEtMXptLTcgMGgtM2MtLjU1IDAtMSAuNDUtMSAxdjEyYzAgLjU1LjQ1IDEgMSAxaDNjLjU1IDAgMS0uNDUgMS0xVjZjMC0uNTUtLjQ1LTEtMS0xeiIgLz48L2c+CjxnIGlkPSJ2aXNpYmlsaXR5Ij48cGF0aCBkPSJNMTIgNC41QzcgNC41IDIuNzMgNy42MSAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjVzOS4yNy0zLjExIDExLTcuNWMtMS43My00LjM5LTYtNy41LTExLTcuNXpNMTIgMTdjLTIuNzYgMC01LTIuMjQtNS01czIuMjQtNSA1LTUgNSAyLjI0IDUgNS0yLjI0IDUtNSA1em0wLThjLTEuNjYgMC0zIDEuMzQtMyAzczEuMzQgMyAzIDMgMy0xLjM0IDMtMy0xLjM0LTMtMy0zeiIgLz48L2c+CjxnIGlkPSJ2aXNpYmlsaXR5LW9mZiI+PHBhdGggZD0iTTEyIDdjMi43NiAwIDUgMi4yNCA1IDUgMCAuNjUtLjEzIDEuMjYtLjM2IDEuODNsMi45MiAyLjkyYzEuNTEtMS4yNiAyLjctMi44OSAzLjQzLTQuNzUtMS43My00LjM5LTYtNy41LTExLTcuNS0xLjQgMC0yLjc0LjI1LTMuOTguN2wyLjE2IDIuMTZDMTAuNzQgNy4xMyAxMS4zNSA3IDEyIDd6TTIgNC4yN2wyLjI4IDIuMjguNDYuNDZDMy4wOCA4LjMgMS43OCAxMC4wMiAxIDEyYzEuNzMgNC4zOSA2IDcuNSAxMSA3LjUgMS41NSAwIDMuMDMtLjMgNC4zOC0uODRsLjQyLjQyTDE5LjczIDIyIDIxIDIwLjczIDMuMjcgMyAyIDQuMjd6TTcuNTMgOS44bDEuNTUgMS41NWMtLjA1LjIxLS4wOC40My0uMDguNjUgMCAxLjY2IDEuMzQgMyAzIDMgLjIyIDAgLjQ0LS4wMy42NS0uMDhsMS41NSAxLjU1Yy0uNjcuMzMtMS40MS41My0yLjIuNTMtMi43NiAwLTUtMi4yNC01LTUgMC0uNzkuMi0xLjUzLjUzLTIuMnptNC4zMS0uNzhsMy4xNSAzLjE1LjAyLS4xNmMwLTEuNjYtMS4zNC0zLTMtM2wtLjE3LjAxeiIgLz48L2c+CjxnIGlkPSJ3YXJuaW5nIj48cGF0aCBkPSJNMSAyMWgyMkwxMiAyIDEgMjF6bTEyLTNoLTJ2LTJoMnYyem0wLTRoLTJ2LTRoMnY0eiIgLz48L2c+CjxnIGlkPSJ3YXRjaC1sYXRlciI+PHBhdGggZD0iTTEyIDJDNi41IDIgMiA2LjUgMiAxMnM0LjUgMTAgMTAgMTAgMTAtNC41IDEwLTEwUzE3LjUgMiAxMiAyem00LjIgMTQuMkwxMSAxM1Y3aDEuNXY1LjJsNC41IDIuNy0uOCAxLjN6IiAvPjwvZz4KPGcgaWQ9IndlZWtlbmQiPjxwYXRoIGQ9Ik0yMSAxMGMtMS4xIDAtMiAuOS0yIDJ2M0g1di0zYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMnY1YzAgMS4xLjkgMiAyIDJoMThjMS4xIDAgMi0uOSAyLTJ2LTVjMC0xLjEtLjktMi0yLTJ6bS0zLTVINmMtMS4xIDAtMiAuOS0yIDJ2Mi4xNWMxLjE2LjQxIDIgMS41MSAyIDIuODJWMTRoMTJ2LTIuMDNjMC0xLjMuODQtMi40IDItMi44MlY3YzAtMS4xLS45LTItMi0yeiIgLz48L2c+CjxnIGlkPSJ3b3JrIj48cGF0aCBkPSJNMjAgNmgtNFY0YzAtMS4xMS0uODktMi0yLTJoLTRjLTEuMTEgMC0yIC44OS0yIDJ2Mkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOWMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS02IDBoLTRWNGg0djJ6IiAvPjwvZz4KPGcgaWQ9InlvdXR1YmUtc2VhcmNoZWQtZm9yIj48cGF0aCBkPSJNMTcuMDEgMTRoLS44bC0uMjctLjI3Yy45OC0xLjE0IDEuNTctMi42MSAxLjU3LTQuMjMgMC0zLjU5LTIuOTEtNi41LTYuNS02LjVzLTYuNSAzLTYuNSA2LjVIMmwzLjg0IDQgNC4xNi00SDYuNTFDNi41MSA3IDguNTMgNSAxMS4wMSA1czQuNSAyLjAxIDQuNSA0LjVjMCAyLjQ4LTIuMDIgNC41LTQuNSA0LjUtLjY1IDAtMS4yNi0uMTQtMS44Mi0uMzhMNy43MSAxNS4xYy45Ny41NyAyLjA5LjkgMy4zLjkgMS42MSAwIDMuMDgtLjU5IDQuMjItMS41N2wuMjcuMjd2Ljc5bDUuMDEgNC45OUwyMiAxOWwtNC45OS01eiIgLz48L2c+CjxnIGlkPSJ6b29tLWluIj48cGF0aCBkPSJNMTUuNSAxNGgtLjc5bC0uMjgtLjI3QzE1LjQxIDEyLjU5IDE2IDExLjExIDE2IDkuNSAxNiA1LjkxIDEzLjA5IDMgOS41IDNTMyA1LjkxIDMgOS41IDUuOTEgMTYgOS41IDE2YzEuNjEgMCAzLjA5LS41OSA0LjIzLTEuNTdsLjI3LjI4di43OWw1IDQuOTlMMjAuNDkgMTlsLTQuOTktNXptLTYgMEM3LjAxIDE0IDUgMTEuOTkgNSA5LjVTNy4wMSA1IDkuNSA1IDE0IDcuMDEgMTQgOS41IDExLjk5IDE0IDkuNSAxNHptMi41LTRoLTJ2Mkg5di0ySDdWOWgyVjdoMXYyaDJ2MXoiIC8+PC9nPgo8ZyBpZD0iem9vbS1vdXQiPjxwYXRoIGQ9Ik0xNS41IDE0aC0uNzlsLS4yOC0uMjdDMTUuNDEgMTIuNTkgMTYgMTEuMTEgMTYgOS41IDE2IDUuOTEgMTMuMDkgMyA5LjUgM1MzIDUuOTEgMyA5LjUgNS45MSAxNiA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0ek03IDloNXYxSDd6IiAvPjwvZz4KPC9kZWZzPjwvc3ZnPgo8L2lyb24taWNvbnNldC1zdmc+CgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1pY29uLWJ1dHRvbiI+CiAgPHRlbXBsYXRlIHN0cmlwLXdoaXRlc3BhY2U+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHBhZGRpbmc6IDhweDsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHotaW5kZXg6IDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIHdpZHRoOiA0MHB4OwogICAgICAgIGhlaWdodDogNDBweDsKCiAgICAgICAgLyogTk9URTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGUgdmFsdWUgdG8gYmUgYHRyYW5zcGFyZW50YC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgLyogQmVjYXVzZSBvZiBwb2x5bWVyLzI1NTgsIHRoaXMgc3R5bGUgaGFzIGxvd2VyIHNwZWNpZmljaXR5IHRoYW4gKiAqLwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaWNvbi1idXR0b247CiAgICAgIH0KCiAgICAgIDpob3N0ICNpbmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pY29uLWJ1dHRvbi1pbmstY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIG9wYWNpdHk6IDAuNjsKICAgICAgfQoKICAgICAgOmhvc3QoW2Rpc2FibGVkXSkgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1pY29uLWJ1dHRvbi1kaXNhYmxlZC10ZXh0LCB2YXIoLS1kaXNhYmxlZC10ZXh0LWNvbG9yKSk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY3Vyc29yOiBhdXRvOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1pY29uLWJ1dHRvbi1kaXNhYmxlZDsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIDpob3N0KDpob3ZlcikgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWljb24tYnV0dG9uLWhvdmVyOwogICAgICB9CgogICAgICBpcm9uLWljb24gewogICAgICAgIC0taXJvbi1pY29uLXdpZHRoOiAxMDAlOwogICAgICAgIC0taXJvbi1pY29uLWhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8aXJvbi1pY29uIGlkPSJpY29uIiBzcmM9Iltbc3JjXV0iIGljb249IltbaWNvbl1dIiBhbHQkPSJbW2FsdF1dIj48L2lyb24taWNvbj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJydW4tY29sb3Itc3R5bGUiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgW2NvbG9yLWNsYXNzPSdsaWdodC1ibHVlJ10gcGFwZXItY2hlY2tib3ggewogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS01MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWxpZ2h0LWJsdWUtNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS05MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItbGlnaHQtYmx1ZS05MDApOwogICAgICB9CiAgICAgIFtjb2xvci1jbGFzcz0ncmVkJ10gcGFwZXItY2hlY2tib3ggewogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLXJlZC05MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcmVkLTkwMCk7CiAgICAgIH0KICAgICAgW2NvbG9yLWNsYXNzPSdncmVlbiddIHBhcGVyLWNoZWNrYm94IHsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWdyZWVuLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JlZW4tOTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWdyZWVuLTkwMCk7CiAgICAgIH0KICAgICAgW2NvbG9yLWNsYXNzPSdwdXJwbGUnXSBwYXBlci1jaGVja2JveCB7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcHVycGxlLTkwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1wdXJwbGUtOTAwKTsKICAgICAgfQogICAgICBbY29sb3ItY2xhc3M9J3RlYWwnXSBwYXBlci1jaGVja2JveCB7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItdGVhbC01MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTkwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci10ZWFsLTkwMCk7CiAgICAgIH0KICAgICAgW2NvbG9yLWNsYXNzPSdwaW5rJ10gcGFwZXItY2hlY2tib3ggewogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcGluay01MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLXBpbmstNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItcGluay05MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItcGluay05MDApOwogICAgICB9CiAgICAgIFtjb2xvci1jbGFzcz0nb3JhbmdlJ10gcGFwZXItY2hlY2tib3ggewogICAgICAgIC0tcGFwZXItY2hlY2tib3gtY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLW9yYW5nZS05MDApOwogICAgICAgIC0tcGFwZXItY2hlY2tib3gtdW5jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTkwMCk7CiAgICAgIH0KICAgICAgW2NvbG9yLWNsYXNzPSdicm93biddIHBhcGVyLWNoZWNrYm94IHsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtY29sb3I6IHZhcigtLXBhcGVyLWJyb3duLTUwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWluay1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItYnJvd24tOTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1pbmstY29sb3I6IHZhcigtLXBhcGVyLWJyb3duLTkwMCk7CiAgICAgIH0KICAgICAgW2NvbG9yLWNsYXNzPSdpbmRpZ28nXSBwYXBlci1jaGVja2JveCB7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tNTAwKTsKICAgICAgICAtLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvcjogdmFyKC0tcGFwZXItaW5kaWdvLTkwMCk7CiAgICAgICAgLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yOiB2YXIoLS1wYXBlci1pbmRpZ28tOTAwKTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtbXVsdGktY2hlY2tib3giPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZSBpbmNsdWRlPSJzY3JvbGxiYXItc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icnVuLWNvbG9yLXN0eWxlIj48L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dCBpZD0ibmFtZXMtcmVnZXgiIG5vLWxhYmVsLWZsb2F0IGxhYmVsPSJXcml0ZSBhIHJlZ2V4IHRvIGZpbHRlciBydW5zIiB2YWx1ZT0iW1tyZWdleF1dIiBvbi1iaW5kLXZhbHVlLWNoYW5nZWQ9Il9kZWJvdW5jZWRSZWdleENoYW5nZSI+PC9wYXBlci1pbnB1dD4KICAgIDxkaXYgaWQ9Im91dGVyLWNvbnRhaW5lciIgY2xhc3M9InNjcm9sbGJhciI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbbmFtZXNNYXRjaGluZ1JlZ2V4XV0iIG9uLWRvbS1jaGFuZ2U9InN5bmNocm9uaXplQ29sb3JzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJuYW1lLXJvdyI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLWNvbnRhaW5lciBjaGVja2JveC1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNsYXNzPSJjaGVja2JveCB2ZXJ0aWNhbC1hbGlnbi1jZW50ZXIiIGlkJD0iY2hlY2tib3gtW1tpdGVtXV0iIG5hbWU9IltbaXRlbV1dIiBjaGVja2VkJD0iW1tfaXNDaGVja2VkKGl0ZW0sIHNlbGVjdGlvblN0YXRlLiopXV0iIG9uLWNoYW5nZT0iX2NoZWNrYm94Q2hhbmdlIj48L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJpY29uLWNvbnRhaW5lciBpc29sYXRvci1jb250YWluZXIgdmVydGljYWwtYWxpZ24tY29udGFpbmVyIj4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InJhZGlvLWJ1dHRvbi11bmNoZWNrZWQiIGNsYXNzPSJpc29sYXRvciB2ZXJ0aWNhbC1hbGlnbi1jZW50ZXIiIG9uLXRhcD0iX2lzb2xhdGVOYW1lIiBuYW1lPSJbW2l0ZW1dXSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaXRlbS1sYWJlbC1jb250YWluZXIiPgogICAgICAgICAgICA8c3Bhbj5bW2l0ZW1dXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLWlucHV0IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAjb3V0ZXItY29udGFpbmVyIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5uYW1lLXJvdyB7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOyAvKiBtYWtlcyB3cmFwcGluZyBvZiBoeXBlcnBhcmFtIHN0cmluZ3MgYmV0dGVyICovCiAgICAgIH0KICAgICAgLmljb24tY29udGFpbmVyIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAycHg7CiAgICAgIH0KICAgICAgLmNoZWNrYm94IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmlzb2xhdG9yIHsKICAgICAgICB3aWR0aDogMThweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMHB4OwogICAgICB9CiAgICAgIC5pc29sYXRvci1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgfQogICAgICAuY2hlY2tib3gtY29udGFpbmVyIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAuaXRlbS1sYWJlbC1jb250YWluZXIgewogICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICB3aWR0aDogMHB4OyAvKiBoYWNrIHRvIGdldCB0aGUgZmxleC1ncm93IHRvIHdvcmsgcHJvcGVybHkgKi8KICAgICAgfQogICAgICAudG9vbHRpcC12YWx1ZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIHBhZGRpbmctbGVmdDogMnB4OwogICAgICB9CiAgICAgIC52ZXJ0aWNhbC1hbGlnbi1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tY2VudGVyIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgIH0KICAgICAgLnZlcnRpY2FsLWFsaWduLWNvbnRhaW5lciAudmVydGljYWwtYWxpZ24tdG9wIHsKICAgICAgICBhbGlnbi1zZWxmOiBzdGFydDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtd2JyLXN0cmluZyI+CiAgPHRlbXBsYXRlPgogICAgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19wYXJ0c11dIiBhcz0icGFydCI+W1twYXJ0XV08d2JyPjwvdGVtcGxhdGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtcnVucy1zZWxlY3RvciI+CiAgPHRlbXBsYXRlPgogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wIGlkPSJkYXRhLWxvY2F0aW9uLWRpYWxvZyI+CiAgICAgIDxoMj5EYXRhIExvY2F0aW9uPC9oMj4KICAgICAgPHRmLXdici1zdHJpbmcgdmFsdWU9IltbZGF0YUxvY2F0aW9uXV0iIC8+CiAgICA8L3BhcGVyLWRpYWxvZz4KICAgIDxkaXYgaWQ9InRvcC10ZXh0Ij4KICAgICAgPGgzIGlkPSJ0b29sdGlwLWhlbHAiIGNsYXNzPSJ0b29sdGlwLWNvbnRhaW5lciI+UnVuczwvaDM+CiAgICA8L2Rpdj4KICAgIDx0Zi1tdWx0aS1jaGVja2JveCBpZD0ibXVsdGlDaGVja2JveCIgbmFtZXM9IltbcnVuc11dIiBzZWxlY3Rpb24tc3RhdGU9Int7cnVuU2VsZWN0aW9uU3RhdGV9fSIgb3V0LXNlbGVjdGVkPSJ7e3NlbGVjdGVkUnVuc319IiByZWdleD0ie3tyZWdleElucHV0fX0iIGNvbG9yaW5nPSJbW2NvbG9yaW5nXV0iPjwvdGYtbXVsdGktY2hlY2tib3g+CiAgICA8cGFwZXItYnV0dG9uIGNsYXNzPSJ4LWJ1dHRvbiIgaWQ9InRvZ2dsZS1hbGwiIG9uLXRhcD0iX3RvZ2dsZUFsbCI+CiAgICAgIFRvZ2dsZSBBbGwgUnVucwogICAgPC9wYXBlci1idXR0b24+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbZGF0YUxvY2F0aW9uXV0iPgogICAgICA8ZGl2IGlkPSJkYXRhLWxvY2F0aW9uIj4KICAgICAgICA8dGYtd2JyLXN0cmluZyB2YWx1ZT0iW1tfY2xpcHBlZERhdGFMb2NhdGlvbl1dIiAvPjx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2hvdWxkU2hvd0V4cGFuZERhdGFMb2NhdGlvbkJ1dHRvbihkYXRhTG9jYXRpb24sIF9kYXRhTG9jYXRpb25DbGlwTGVuZ3RoKV1dIj48YSBocmVmPSIiIG9uLWNsaWNrPSJfb3BlbkRhdGFMb2NhdGlvbkRpYWxvZyI+4oCmPC9hPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgICB9CiAgICAgICN0b3AtdGV4dCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICB9CiAgICAgIHRmLW11bHRpLWNoZWNrYm94IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAjdG9vbHRpcC1oZWxwIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItZ3JleS04MDApOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgIH0KICAgICAgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgfQogICAgICAjZGF0YS1sb2NhdGlvbiB7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbWFyZ2luOiA1cHggMCAwIDA7CiAgICAgICAgbWF4LXdpZHRoOiAyODhweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLXNwaW5uZXItc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIC8qCiAgICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAgLyogU1RZTEVTIEZPUiBUSEUgU1BJTk5FUiAqLwogICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgICAvKgogICAgICAgKiBDb25zdGFudHM6CiAgICAgICAqICAgICAgQVJDU0laRSAgICAgPSAyNzAgZGVncmVlcyAoYW1vdW50IG9mIGNpcmNsZSB0aGUgYXJjIHRha2VzIHVwKQogICAgICAgKiAgICAgIEFSQ1RJTUUgICAgID0gMTMzM21zICh0aW1lIGl0IHRha2VzIHRvIGV4cGFuZCBhbmQgY29udHJhY3QgYXJjKQogICAgICAgKiAgICAgIEFSQ1NUQVJUUk9UID0gMjE2IGRlZ3JlZXMgKGhvdyBtdWNoIHRoZSBzdGFydCBsb2NhdGlvbiBvZiB0aGUgYXJjCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgcm90YXRlIGVhY2ggdGltZSwgMjE2IGdpdmVzIHVzIGEKICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUgcG9pbnRlZCBzdGFyIHNoYXBlIChpdCdzIDM2MC81ICogMykuCiAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgYSA3IHBvaW50ZWQgc3Rhciwgd2UgbWlnaHQgZG8KICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM2MC83ICogMyA9IDE1NC4yODYpCiAgICAgICAqICAgICAgU0hSSU5LX1RJTUUgPSA0MDBtcwogICAgICAgKi8KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAyOHB4OwogICAgICAgIGhlaWdodDogMjhweDsKCiAgICAgICAgLyogMzYwICogQVJDVElNRSAvIChBUkNTVEFSVFJPVCArICgzNjAtQVJDU0laRSkpICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbjogMTU2OG1zOwoKICAgICAgICAvKiBBUkNUSU1FICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWV4cGFuZC1jb250cmFjdC1kdXJhdGlvbjogMTMzM21zOwoKICAgICAgICAvKiA0ICogQVJDVElNRSAqLwogICAgICAgIC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uOiA1MzMybXM7CgogICAgICAgIC8qIFNIUklOS19USU1FICovCiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvb2xkb3duLWR1cmF0aW9uOiA0MDBtczsKICAgICAgfQoKICAgICAgI3NwaW5uZXJDb250YWluZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKCiAgICAgICAgLyogVGhlIHNwaW5uZXIgZG9lcyBub3QgaGF2ZSBhbnkgY29udGVudHMgdGhhdCB3b3VsZCBoYXZlIHRvIGJlCiAgICAgICAgICogZmxpcHBlZCBpZiB0aGUgZGlyZWN0aW9uIGNoYW5nZXMuIEFsd2F5cyB1c2UgbHRyIHNvIHRoYXQgdGhlCiAgICAgICAgICogc3R5bGUgd29ya3Mgb3V0IGNvcnJlY3RseSBpbiBib3RoIGNhc2VzLiAqLwogICAgICAgIGRpcmVjdGlvbjogbHRyOwogICAgICB9CgogICAgICAjc3Bpbm5lckNvbnRhaW5lci5hY3RpdmUgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBjb250YWluZXItcm90YXRlIHZhcigtLXBhcGVyLXNwaW5uZXItY29udGFpbmVyLXJvdGF0aW9uLWR1cmF0aW9uKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBjb250YWluZXItcm90YXRlIHsKICAgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKSB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgY29udGFpbmVyLXJvdGF0ZSB7CiAgICAgICAgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIH0KICAgICAgfQoKICAgICAgLnNwaW5uZXItbGF5ZXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS01MDApKTsKICAgICAgfQoKICAgICAgLmxheWVyLTEgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTEtY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTUwMCkpOwogICAgICB9CgogICAgICAubGF5ZXItMiB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNwaW5uZXItbGF5ZXItMi1jb2xvciwgdmFyKC0tZ29vZ2xlLXJlZC01MDApKTsKICAgICAgfQoKICAgICAgLmxheWVyLTMgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1zcGlubmVyLWxheWVyLTMtY29sb3IsIHZhcigtLWdvb2dsZS15ZWxsb3ctNTAwKSk7CiAgICAgIH0KCiAgICAgIC5sYXllci00IHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc3Bpbm5lci1sYXllci00LWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JlZW4tNTAwKSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBJTVBPUlRBTlQgTk9URSBBQk9VVCBDU1MgQU5JTUFUSU9OIFBST1BFUlRJRVMgKGtlYW51bGVlKToKICAgICAgICoKICAgICAgICogaU9TIFNhZmFyaSAodGVzdGVkIG9uIGlPUyA4LjEpIGRvZXMgbm90IGhhbmRsZSBhbmltYXRpb24tZGVsYXkgdmVyeSB3ZWxsIC0gaXQgZG9lc24ndAogICAgICAgKiBndWFyYW50ZWUgdGhhdCB0aGUgYW5pbWF0aW9uIHdpbGwgc3RhcnQgX2V4YWN0bHlfIGFmdGVyIHRoYXQgdmFsdWUuIFNvIHdlIGF2b2lkIHVzaW5nCiAgICAgICAqIGFuaW1hdGlvbi1kZWxheSBhbmQgaW5zdGVhZCBzZXQgY3VzdG9tIGtleWZyYW1lcyBmb3IgZWFjaCBjb2xvciAoYXMgbGF5ZXItMnVuZGFudCBhcyBpdAogICAgICAgKiBzZWVtcykuCiAgICAgICAqLwogICAgICAuYWN0aXZlIC5zcGlubmVyLWxheWVyIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGU7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZnVsbC1jeWNsZS1kdXJhdGlvbik7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKICAgICAgICBhbmltYXRpb24tbmFtZTogZmlsbC11bmZpbGwtcm90YXRlOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1mdWxsLWN5Y2xlLWR1cmF0aW9uKTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0xIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTEtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMS1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0yIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTItZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMi1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci0zIHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTMtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItMy1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuc3Bpbm5lci1sYXllci5sYXllci00IHsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBmaWxsLXVuZmlsbC1yb3RhdGUsIGxheWVyLTQtZmFkZS1pbi1vdXQ7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGZpbGwtdW5maWxsLXJvdGF0ZSwgbGF5ZXItNC1mYWRlLWluLW91dDsKICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7CiAgICAgICAgMTIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzNWRlZykgfSAvKiAwLjUgKiBBUkNTSVpFICovCiAgICAgICAgMjUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDI3MGRlZykgfSAvKiAxICAgKiBBUkNTSVpFICovCiAgICAgICAgMzcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQwNWRlZykgfSAvKiAxLjUgKiBBUkNTSVpFICovCiAgICAgICAgNTAlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDU0MGRlZykgfSAvKiAyICAgKiBBUkNTSVpFICovCiAgICAgICAgNjIuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDY3NWRlZykgfSAvKiAyLjUgKiBBUkNTSVpFICovCiAgICAgICAgNzUlICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDgxMGRlZykgfSAvKiAzICAgKiBBUkNTSVpFICovCiAgICAgICAgODcuNSUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDk0NWRlZykgfSAvKiAzLjUgKiBBUkNTSVpFICovCiAgICAgICAgdG8gICAgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEwODBkZWcpIH0gLyogNCAgICogQVJDU0laRSAqLwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZpbGwtdW5maWxsLXJvdGF0ZSB7CiAgICAgICAgMTIuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzVkZWcpIH0gLyogMC41ICogQVJDU0laRSAqLwogICAgICAgIDI1JSAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMjcwZGVnKSB9IC8qIDEgICAqIEFSQ1NJWkUgKi8KICAgICAgICAzNy41JSB7IHRyYW5zZm9ybTogcm90YXRlKDQwNWRlZykgfSAvKiAxLjUgKiBBUkNTSVpFICovCiAgICAgICAgNTAlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSg1NDBkZWcpIH0gLyogMiAgICogQVJDU0laRSAqLwogICAgICAgIDYyLjUlIHsgdHJhbnNmb3JtOiByb3RhdGUoNjc1ZGVnKSB9IC8qIDIuNSAqIEFSQ1NJWkUgKi8KICAgICAgICA3NSUgICB7IHRyYW5zZm9ybTogcm90YXRlKDgxMGRlZykgfSAvKiAzICAgKiBBUkNTSVpFICovCiAgICAgICAgODcuNSUgeyB0cmFuc2Zvcm06IHJvdGF0ZSg5NDVkZWcpIH0gLyogMy41ICogQVJDU0laRSAqLwogICAgICAgIHRvICAgIHsgdHJhbnNmb3JtOiByb3RhdGUoMTA4MGRlZykgfSAvKiA0ICAgKiBBUkNTSVpFICovCiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci0xLWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDI1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDI2JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDg5JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMSB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItMS1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICAyNiUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA4OSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDEgfQogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgbGF5ZXItMi1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH0KICAgICAgICAxNSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICAyNSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA1MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA1MSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGxheWVyLTItZmFkZS1pbi1vdXQgewogICAgICAgIDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgMTUlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgMjUlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNTElIHsgb3BhY2l0eTogMCB9CiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH0KICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGxheWVyLTMtZmFkZS1pbi1vdXQgewogICAgICAgIDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgNDAlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgNTAlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNzUlIHsgb3BhY2l0eTogMSB9CiAgICAgICAgNzYlIHsgb3BhY2l0eTogMCB9CiAgICAgICAgdG8geyBvcGFjaXR5OiAwIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBsYXllci0zLWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDQwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDUwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDc2JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMCB9CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsYXllci00LWZhZGUtaW4tb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDY1JSB7IG9wYWNpdHk6IDAgfQogICAgICAgIDc1JSB7IG9wYWNpdHk6IDEgfQogICAgICAgIDkwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMCB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgbGF5ZXItNC1mYWRlLWluLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA2NSUgeyBvcGFjaXR5OiAwIH0KICAgICAgICA3NSUgeyBvcGFjaXR5OiAxIH0KICAgICAgICA5MCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CgogICAgICAuY2lyY2xlLWNsaXBwZXIgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDUwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFBhdGNoIHRoZSBnYXAgdGhhdCBhcHBlYXIgYmV0d2VlbiB0aGUgdHdvIGFkamFjZW50IGRpdi5jaXJjbGUtY2xpcHBlciB3aGlsZSB0aGUKICAgICAgICogc3Bpbm5lciBpcyByb3RhdGluZyAoYXBwZWFycyBvbiBDaHJvbWUgNTAsIFNhZmFyaSA5LjEuMSwgYW5kIEVkZ2UpLgogICAgICAgKi8KICAgICAgLnNwaW5uZXItbGF5ZXI6OmFmdGVyIHsKICAgICAgICBsZWZ0OiA0NSU7CiAgICAgICAgd2lkdGg6IDEwJTsKICAgICAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsKICAgICAgfQoKICAgICAgLnNwaW5uZXItbGF5ZXI6OmFmdGVyLAogICAgICAuY2lyY2xlLWNsaXBwZXI6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgYm9yZGVyLXdpZHRoOiB2YXIoLS1wYXBlci1zcGlubmVyLXN0cm9rZS13aWR0aCwgM3B4KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgIH0KCiAgICAgIC5jaXJjbGUtY2xpcHBlcjo6YWZ0ZXIgewogICAgICAgIGJvdHRvbTogMDsKICAgICAgICB3aWR0aDogMjAwJTsKICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkOwogICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5jaXJjbGUtY2xpcHBlci5sZWZ0OjphZnRlciB7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMjlkZWcpOwogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEyOWRlZyk7CiAgICAgIH0KCiAgICAgIC5jaXJjbGUtY2xpcHBlci5yaWdodDo6YWZ0ZXIgewogICAgICAgIGxlZnQ6IC0xMDAlOwogICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTEyOWRlZyk7CiAgICAgIH0KCiAgICAgIC5hY3RpdmUgLmdhcC1wYXRjaDo6YWZ0ZXIsCiAgICAgIC5hY3RpdmUgLmNpcmNsZS1jbGlwcGVyOjphZnRlciB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXNwaW5uZXItZXhwYW5kLWNvbnRyYWN0LWR1cmF0aW9uKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItc3Bpbm5lci1leHBhbmQtY29udHJhY3QtZHVyYXRpb24pOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKTsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgLmFjdGl2ZSAuY2lyY2xlLWNsaXBwZXIubGVmdDo6YWZ0ZXIgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGxlZnQtc3BpbjsKICAgICAgICBhbmltYXRpb24tbmFtZTogbGVmdC1zcGluOwogICAgICB9CgogICAgICAuYWN0aXZlIC5jaXJjbGUtY2xpcHBlci5yaWdodDo6YWZ0ZXIgewogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IHJpZ2h0LXNwaW47CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IHJpZ2h0LXNwaW47CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBsZWZ0LXNwaW4gewogICAgICAgIDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH0KICAgICAgICA1MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC01ZGVnKSB9CiAgICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDEzMGRlZykgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGxlZnQtc3BpbiB7CiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgxMzBkZWcpIH0KICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgfQogICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoMTMwZGVnKSB9CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyByaWdodC1zcGluIHsKICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfQogICAgICAgIDUwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoNWRlZykgfQogICAgICAgIHRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgcmlnaHQtc3BpbiB7CiAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTMwZGVnKSB9CiAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiByb3RhdGUoNWRlZykgfQogICAgICAgIHRvIHsgdHJhbnNmb3JtOiByb3RhdGUoLTEzMGRlZykgfQogICAgICB9CgogICAgICAjc3Bpbm5lckNvbnRhaW5lci5jb29sZG93biB7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGNvbnRhaW5lci1yb3RhdGUgdmFyKC0tcGFwZXItc3Bpbm5lci1jb250YWluZXItcm90YXRpb24tZHVyYXRpb24pIGxpbmVhciBpbmZpbml0ZSwgZmFkZS1vdXQgdmFyKC0tcGFwZXItc3Bpbm5lci1jb29sZG93bi1kdXJhdGlvbikgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpOwogICAgICAgIGFuaW1hdGlvbjogY29udGFpbmVyLXJvdGF0ZSB2YXIoLS1wYXBlci1zcGlubmVyLWNvbnRhaW5lci1yb3RhdGlvbi1kdXJhdGlvbikgbGluZWFyIGluZmluaXRlLCBmYWRlLW91dCB2YXIoLS1wYXBlci1zcGlubmVyLWNvb2xkb3duLWR1cmF0aW9uKSBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSk7CiAgICAgIH0KCiAgICAgIEAtd2Via2l0LWtleWZyYW1lcyBmYWRlLW91dCB7CiAgICAgICAgMCUgeyBvcGFjaXR5OiAxIH0KICAgICAgICB0byB7IG9wYWNpdHk6IDAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHsKICAgICAgICAwJSB7IG9wYWNpdHk6IDEgfQogICAgICAgIHRvIHsgb3BhY2l0eTogMCB9CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLXNwaW5uZXItbGl0ZSI+CiAgPHRlbXBsYXRlIHN0cmlwLXdoaXRlc3BhY2U+CiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItc3Bpbm5lci1zdHlsZXMiPjwvc3R5bGU+CgogICAgPGRpdiBpZD0ic3Bpbm5lckNvbnRhaW5lciIgY2xhc3MtbmFtZT0iW1tfX2NvbXB1dGVDb250YWluZXJDbGFzc2VzKGFjdGl2ZSwgX19jb29saW5nRG93bildXSIgb24tYW5pbWF0aW9uZW5kPSJfX3Jlc2V0IiBvbi13ZWJraXQtYW5pbWF0aW9uLWVuZD0iX19yZXNldCI+CiAgICAgIDxkaXYgY2xhc3M9InNwaW5uZXItbGF5ZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIGxlZnQiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNpcmNsZS1jbGlwcGVyIHJpZ2h0Ij48L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCjxzdHlsZT4KLnBsb3R0YWJsZS1jb2xvcnMtMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzUyNzljNzsgLyogSU5ESUdPICovCn0KCi5wbG90dGFibGUtY29sb3JzLTEgewogIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy0yIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjNjMjYxOyAvKiBGRVJOICovCn0KCi5wbG90dGFibGUtY29sb3JzLTMgewogIGJhY2tncm91bmQtY29sb3I6ICNmYWQ0MTk7IC8qIEJSSUdIVF9TVU4gKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtNCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy01IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3OTM5OyAvKiBCVVJOSU5HX09SQU5HRSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy02IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGIyZTY1OyAvKiBDRVJJU0VfUkVEICovCn0KCi5wbG90dGFibGUtY29sb3JzLTcgewogIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzk2MjU2NTsgLyogUk9ZQUxfSEVBVEggKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzA2Y2NjYzsgLyogUk9CSU5TX0VHR19CTFVFICovCn0KCi8qKgogKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuCiAqLwoucGxvdHRhYmxlIHsKICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovCiAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxsOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvKioKICAgKiBQcmUgMy4wLCB1c2VycyBjb3VsZCBzZXQgdGhlIGRpbWVuc2lvbiBvZiB0aGUgcm9vdCBlbGVtZW50IGluIHR3byB3YXlzOiBlaXRoZXIgdXNpbmcgQ1NTCiAgICogKGlubGluZSBvciB0aHJvdWdoIGEgc3R5bGVzaGVldCksIG9yIHVzaW5nIHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMuIEJ5IGRlZmF1bHQsIHdlCiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS4KICAgKgogICAqIFBvc3QgMy4wIHRoZSByb290IGVsZW1lbnQgaXMgYWx3YXlzIGEgbm9ybWFsIGRpdiBhbmQgdGhlIG9ubHkgd2F5IHRvIHNldCB0aGUgZGltZW5zaW9ucyBpcwogICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgIjEwMCUtYnktZGVmYXVsdCIgYmVoYXZpb3IsIHdlIGFwcGx5IHdpZHRoL2hlaWdodCAxMDAlLgogICAqLwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoKLyoqCiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLgogKi8KLnBsb3R0YWJsZSAuY29tcG9uZW50IHsKICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovCiAgcG9zaXRpb246IGFic29sdXRlOwp9CgoucGxvdHRhYmxlIC5iYWNrZ3JvdW5kLWNvbnRhaW5lciwKLnBsb3R0YWJsZSAuY29udGVudCwKLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7Cn0KCi8qKgogKiBEb24ndCBhbGxvdyBzdmcgZWxlbWVudHMgYWJvdmUgdGhlIGNvbnRlbnQgdG8gc3RlYWwgZXZlbnRzCiAqLwoucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy12aXNpYmxlIHsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICAvKioKICAgKiBQbGF5IHdlbGwgd2l0aCBkZWZlcnJlZCByZW5kZXJpbmcuCiAgICovCiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7Cn0KCi5wbG90dGFibGUgdGV4dCB7CiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjsKfQoKLnBsb3R0YWJsZSAubGFiZWwgdGV4dCB7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuYmFyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDEycHg7Cn0KCi5wbG90dGFibGUgLmxhYmVsLWFyZWEgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDE0cHg7Cn0KCi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQgewogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5kYXJrLWxhYmVsIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7Cn0KCi5wbG90dGFibGUgLm9mZi1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LXN0eWxlOiBub3JtYWw7Cn0KCi5wbG90dGFibGUgLnN0YWNrZWQtYmFyLXBsb3QgLm9mZi1iYXItbGFiZWwgewogIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqLwogIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgoucGxvdHRhYmxlIC5heGlzLWxhYmVsIHRleHQgewogIGZvbnQtc2l6ZTogMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBsZXR0ZXItc3BhY2luZzogMXB4OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoucGxvdHRhYmxlIC5heGlzIGxpbmUuYmFzZWxpbmUgewogIHN0cm9rZTogI0NDQzsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuYXhpcyBsaW5lLnRpY2stbWFyayB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5heGlzIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxMnB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1jaXJjbGUgewogIGZpbGw6IHdoaXRlOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHN0cm9rZTogI0NDQzsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1saW5lIHsKICBzdHJva2U6ICNDQ0M7CiAgc3Ryb2tlLXdpZHRoOiAxcHg7Cn0KCi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUgewogIHN0cm9rZTogIzk5OTsKfQoKLnBsb3R0YWJsZSAuZ3JpZGxpbmVzIGxpbmUgewogIHN0cm9rZTogIzNDM0MzQzsgLyogaGFja2hhY2s6IGdyaWRsaW5lcyBzaG91bGQgYmUgc29saWQ7IHNlZSAjODIwICovCiAgb3BhY2l0eTogMC4yNTsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuc2VsZWN0aW9uLWJveC1sYXllciAuc2VsZWN0aW9uLWFyZWEgewogIGZpbGw6IGJsYWNrOwogIGZpbGwtb3BhY2l0eTogMC4wMzsKICBzdHJva2U6ICNDQ0M7Cn0KLyogRHJhZ0JveExheWVyICovCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlIC5kcmFnLWVkZ2UtbHIgewogIGN1cnNvcjogZXctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLnktcmVzaXphYmxlIC5kcmFnLWVkZ2UtdGIgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdGwgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLXRyIHsKICBjdXJzb3I6IG5lc3ctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1ibCB7CiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTsKfQoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItYnIgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHsKICBjdXJzb3I6IG1vdmU7IC8qIElFIGZhbGxiYWNrICovCiAgY3Vyc29yOiAtbW96LWdyYWI7CiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgY3Vyc29yOiBncmFiOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci5tb3ZhYmxlIC5zZWxlY3Rpb24tYXJlYTphY3RpdmUgewogIGN1cnNvcjogLW1vei1ncmFiYmluZzsKICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7CiAgY3Vyc29yOiBncmFiYmluZzsKfQovKiAvRHJhZ0JveExheWVyICovCgoucGxvdHRhYmxlIC5ndWlkZS1saW5lLWxheWVyIGxpbmUuZ3VpZGUtbGluZSB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5kcmFnLWxpbmUtbGF5ZXIuZW5hYmxlZC52ZXJ0aWNhbCBsaW5lLmRyYWctZWRnZSB7CiAgY3Vyc29yOiBldy1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctbGluZS1sYXllci5lbmFibGVkLmhvcml6b250YWwgbGluZS5kcmFnLWVkZ2UgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCByZWN0LnN3YXRjaC1ib3VuZGluZy1ib3ggewogIGZpbGw6IG5vbmU7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoucGxvdHRhYmxlIC53YXRlcmZhbGwtcGxvdCBsaW5lLmNvbm5lY3RvciB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5waWUtcGxvdCAuYXJjLm91dGxpbmUgewogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KPC9zdHlsZT4KCjxkb20tbW9kdWxlIGlkPSJwbG90dGFibGUtc3R5bGUiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KLnBsb3R0YWJsZS1jb2xvcnMtMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzUyNzljNzsgLyogSU5ESUdPICovCn0KCi5wbG90dGFibGUtY29sb3JzLTEgewogIGJhY2tncm91bmQtY29sb3I6ICNmZDM3M2U7IC8qIENPUkFMX1JFRCAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy0yIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjNjMjYxOyAvKiBGRVJOICovCn0KCi5wbG90dGFibGUtY29sb3JzLTMgewogIGJhY2tncm91bmQtY29sb3I6ICNmYWQ0MTk7IC8qIEJSSUdIVF9TVU4gKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtNCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzJjMmI2ZjsgLyogSkFDQVJUQSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy01IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY3OTM5OyAvKiBCVVJOSU5HX09SQU5HRSAqLwp9CgoucGxvdHRhYmxlLWNvbG9ycy02IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGIyZTY1OyAvKiBDRVJJU0VfUkVEICovCn0KCi5wbG90dGFibGUtY29sb3JzLTcgewogIGJhY2tncm91bmQtY29sb3I6ICM5OWNlNTA7IC8qIENPTklGRVIgKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzk2MjU2NTsgLyogUk9ZQUxfSEVBVEggKi8KfQoKLnBsb3R0YWJsZS1jb2xvcnMtOSB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzA2Y2NjYzsgLyogUk9CSU5TX0VHR19CTFVFICovCn0KCi8qKgogKiBVc2VyLXN1cHBsaWVkIHJlbmRlclRvIGVsZW1lbnQuCiAqLwoucGxvdHRhYmxlIHsKICBkaXNwbGF5OiBibG9jazsgLyogbXVzdCBiZSBibG9jayBlbGVtZW50cyBmb3Igd2lkdGgvaGVpZ2h0IGNhbGN1bGF0aW9ucyB0byB3b3JrIGluIEZpcmVmb3guICovCiAgcG9pbnRlci1ldmVudHM6IHZpc2libGVGaWxsOwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAvKioKICAgKiBQcmUgMy4wLCB1c2VycyBjb3VsZCBzZXQgdGhlIGRpbWVuc2lvbiBvZiB0aGUgcm9vdCBlbGVtZW50IGluIHR3byB3YXlzOiBlaXRoZXIgdXNpbmcgQ1NTCiAgICogKGlubGluZSBvciB0aHJvdWdoIGEgc3R5bGVzaGVldCksIG9yIHVzaW5nIHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMuIEJ5IGRlZmF1bHQsIHdlCiAgICogc2V0IHRoZSBTVkcgd2lkdGgvaGVpZ2h0IGF0dHJpYnV0ZXMgdG8gMTAwJS4KICAgKgogICAqIFBvc3QgMy4wIHRoZSByb290IGVsZW1lbnQgaXMgYWx3YXlzIGEgbm9ybWFsIGRpdiBhbmQgdGhlIG9ubHkgd2F5IHRvIHNldCB0aGUgZGltZW5zaW9ucyBpcwogICAqIHRvIHVzZSBDU1MuIFRvIHJlcGxpY2F0ZSB0aGUgIjEwMCUtYnktZGVmYXVsdCIgYmVoYXZpb3IsIHdlIGFwcGx5IHdpZHRoL2hlaWdodCAxMDAlLgogICAqLwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKfQoKLyoqCiAqIFRoZSBfZWxlbWVudCB0aGF0IHJvb3RzIGVhY2ggQ29tcG9uZW50J3MgRE9NLgogKi8KLnBsb3R0YWJsZSAuY29tcG9uZW50IHsKICAvKiBBbGxvdyBjb21wb25lbnRzIHRvIGJlIHBvc2l0aW9uZWQgd2l0aCBleHBsaWNpdCBsZWZ0L3RvcC93aWR0aC9oZWlnaHQgc3R5bGVzICovCiAgcG9zaXRpb246IGFic29sdXRlOwp9CgoucGxvdHRhYmxlIC5iYWNrZ3JvdW5kLWNvbnRhaW5lciwKLnBsb3R0YWJsZSAuY29udGVudCwKLnBsb3R0YWJsZSAuZm9yZWdyb3VuZC1jb250YWluZXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7Cn0KCi8qKgogKiBEb24ndCBhbGxvdyBzdmcgZWxlbWVudHMgYWJvdmUgdGhlIGNvbnRlbnQgdG8gc3RlYWwgZXZlbnRzCiAqLwoucGxvdHRhYmxlIC5mb3JlZ3JvdW5kLWNvbnRhaW5lciB7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy1oaWRkZW4gewogIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5wbG90dGFibGUgLmNvbXBvbmVudC1vdmVyZmxvdy12aXNpYmxlIHsKICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMtY29udGFpbmVyIHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDEwMCU7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLnBsb3R0YWJsZSAucGxvdC1jYW52YXMgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwJTsKICAvKioKICAgKiBQbGF5IHdlbGwgd2l0aCBkZWZlcnJlZCByZW5kZXJpbmcuCiAgICovCiAgdHJhbnNmb3JtLW9yaWdpbjogMHB4IDBweCAwcHg7Cn0KCi5wbG90dGFibGUgdGV4dCB7CiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjsKfQoKLnBsb3R0YWJsZSAubGFiZWwgdGV4dCB7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuYmFyLWxhYmVsLXRleHQtYXJlYSB0ZXh0IHsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDEycHg7Cn0KCi5wbG90dGFibGUgLmxhYmVsLWFyZWEgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDE0cHg7Cn0KCi5wbG90dGFibGUgLmxpZ2h0LWxhYmVsIHRleHQgewogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5kYXJrLWxhYmVsIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7Cn0KCi5wbG90dGFibGUgLm9mZi1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKfQoKLnBsb3R0YWJsZSAuc3RhY2tlZC1iYXItbGFiZWwgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LXN0eWxlOiBub3JtYWw7Cn0KCi5wbG90dGFibGUgLnN0YWNrZWQtYmFyLXBsb3QgLm9mZi1iYXItbGFiZWwgewogIC8qIEhBQ0tIQUNLICMyNzk1OiBjb3JyZWN0IG9mZi1iYXIgbGFiZWwgbG9naWMgdG8gYmUgaW1wbGVtZW50ZWQgb24gU3RhY2tlZEJhciAqLwogIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50Owp9CgoucGxvdHRhYmxlIC5heGlzLWxhYmVsIHRleHQgewogIGZvbnQtc2l6ZTogMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKICBsZXR0ZXItc3BhY2luZzogMXB4OwogIGxpbmUtaGVpZ2h0OiBub3JtYWw7CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLnBsb3R0YWJsZSAudGl0bGUtbGFiZWwgdGV4dCB7CiAgZm9udC1zaXplOiAyMHB4OwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoucGxvdHRhYmxlIC5heGlzIGxpbmUuYmFzZWxpbmUgewogIHN0cm9rZTogI0NDQzsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuYXhpcyBsaW5lLnRpY2stbWFyayB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5heGlzIHRleHQgewogIGZpbGw6ICMzMjMxM0Y7CiAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7CiAgZm9udC1zaXplOiAxMnB4OwogIGZvbnQtd2VpZ2h0OiAyMDA7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1jaXJjbGUgewogIGZpbGw6IHdoaXRlOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHN0cm9rZTogI0NDQzsKfQoKLnBsb3R0YWJsZSAuYXhpcyAuYW5ub3RhdGlvbi1saW5lIHsKICBzdHJva2U6ICNDQ0M7CiAgc3Ryb2tlLXdpZHRoOiAxcHg7Cn0KCi5wbG90dGFibGUgLmF4aXMgLmFubm90YXRpb24tcmVjdCB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIGZpbGw6IHdoaXRlOwp9CgoucGxvdHRhYmxlIC5iYXItcGxvdCAuYmFzZWxpbmUgewogIHN0cm9rZTogIzk5OTsKfQoKLnBsb3R0YWJsZSAuZ3JpZGxpbmVzIGxpbmUgewogIHN0cm9rZTogIzNDM0MzQzsgLyogaGFja2hhY2s6IGdyaWRsaW5lcyBzaG91bGQgYmUgc29saWQ7IHNlZSAjODIwICovCiAgb3BhY2l0eTogMC4yNTsKICBzdHJva2Utd2lkdGg6IDFweDsKfQoKLnBsb3R0YWJsZSAuc2VsZWN0aW9uLWJveC1sYXllciAuc2VsZWN0aW9uLWFyZWEgewogIGZpbGw6IGJsYWNrOwogIGZpbGwtb3BhY2l0eTogMC4wMzsKICBzdHJva2U6ICNDQ0M7Cn0KLyogRHJhZ0JveExheWVyICovCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlIC5kcmFnLWVkZ2UtbHIgewogIGN1cnNvcjogZXctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLnktcmVzaXphYmxlIC5kcmFnLWVkZ2UtdGIgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItdGwgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KLnBsb3R0YWJsZSAuZHJhZy1ib3gtbGF5ZXIueC1yZXNpemFibGUueS1yZXNpemFibGUgLmRyYWctY29ybmVyLXRyIHsKICBjdXJzb3I6IG5lc3ctcmVzaXplOwp9Ci5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLngtcmVzaXphYmxlLnktcmVzaXphYmxlIC5kcmFnLWNvcm5lci1ibCB7CiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTsKfQoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci54LXJlc2l6YWJsZS55LXJlc2l6YWJsZSAuZHJhZy1jb3JuZXItYnIgewogIGN1cnNvcjogbndzZS1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctYm94LWxheWVyLm1vdmFibGUgLnNlbGVjdGlvbi1hcmVhIHsKICBjdXJzb3I6IG1vdmU7IC8qIElFIGZhbGxiYWNrICovCiAgY3Vyc29yOiAtbW96LWdyYWI7CiAgY3Vyc29yOiAtd2Via2l0LWdyYWI7CiAgY3Vyc29yOiBncmFiOwp9CgoucGxvdHRhYmxlIC5kcmFnLWJveC1sYXllci5tb3ZhYmxlIC5zZWxlY3Rpb24tYXJlYTphY3RpdmUgewogIGN1cnNvcjogLW1vei1ncmFiYmluZzsKICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7CiAgY3Vyc29yOiBncmFiYmluZzsKfQovKiAvRHJhZ0JveExheWVyICovCgoucGxvdHRhYmxlIC5ndWlkZS1saW5lLWxheWVyIGxpbmUuZ3VpZGUtbGluZSB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5kcmFnLWxpbmUtbGF5ZXIuZW5hYmxlZC52ZXJ0aWNhbCBsaW5lLmRyYWctZWRnZSB7CiAgY3Vyc29yOiBldy1yZXNpemU7Cn0KCi5wbG90dGFibGUgLmRyYWctbGluZS1sYXllci5lbmFibGVkLmhvcml6b250YWwgbGluZS5kcmFnLWVkZ2UgewogIGN1cnNvcjogbnMtcmVzaXplOwp9CgoucGxvdHRhYmxlIC5sZWdlbmQgdGV4dCB7CiAgZmlsbDogIzMyMzEzRjsKICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKICBmb250LXNpemU6IDEycHg7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgbGluZS1oZWlnaHQ6IG5vcm1hbDsKfQoKLnBsb3R0YWJsZSAuaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCByZWN0LnN3YXRjaC1ib3VuZGluZy1ib3ggewogIGZpbGw6IG5vbmU7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4OwogIHBvaW50ZXItZXZlbnRzOiBub25lOwp9CgoucGxvdHRhYmxlIC53YXRlcmZhbGwtcGxvdCBsaW5lLmNvbm5lY3RvciB7CiAgc3Ryb2tlOiAjQ0NDOwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgoucGxvdHRhYmxlIC5waWUtcGxvdCAuYXJjLm91dGxpbmUgewogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idnotY2hhcnQtdG9vbHRpcCI+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idnotcGFuLXpvb20tc3R5bGUiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmhlbHAgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxczsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDFzOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBmYWRlLW91dDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCAzMCwgMzAsIDAuNik7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgLmhlbHAgPiBzcGFuIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGZhZGUtb3V0IHsKICAgICAgICAwJSB7CiAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIH0KCiAgICAgICAgMTAwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ2ei1saW5lLWNoYXJ0MiI+CiAgPHRlbXBsYXRlPgogICAgPGRpdiBpZD0iY2hhcnRkaXYiPjwvZGl2PgogICAgPHZ6LWNoYXJ0LXRvb2x0aXAgaWQ9InRvb2x0aXAiIHBvc2l0aW9uPSJbW3Rvb2x0aXBQb3NpdGlvbl1dIiBjb250ZW50LWNvbXBvbmVudC1uYW1lPSJ2ei1saW5lLWNoYXJ0LXRvb2x0aXAiPjwvdnotY2hhcnQtdG9vbHRpcD4KICAgIDxzdHlsZSBpbmNsdWRlPSJwbG90dGFibGUtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0idnotcGFuLXpvb20tc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICAgIGRpdiB7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IC5tYWluIHsKICAgICAgICBjdXJzb3I6IGNyb3NzaGFpcjsKICAgICAgfQoKICAgICAgOmhvc3QoLnBhbmtleSkgI2NoYXJ0ZGl2IDpub3QoLmRyYWctem9vbWluZykgLm1haW4gewogICAgICAgIGN1cnNvcjogLXdlYmtpdC1ncmFiOwogICAgICAgIGN1cnNvcjogZ3JhYjsKICAgICAgfQoKICAgICAgOmhvc3QoLm1vdXNlZG93bikgI2NoYXJ0ZGl2IC5wYW5uaW5nIC5tYWluIHsKICAgICAgICBjdXJzb3I6IC13ZWJraXQtZ3JhYmJpbmc7CiAgICAgICAgY3Vyc29yOiBncmFiYmluZzsKICAgICAgfQoKICAgICAgI2NoYXJ0ZGl2IGxpbmUuZ3VpZGUtbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5OwogICAgICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2OmhvdmVyIHsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAogIAogIAogIAogIAo8L2RvbS1tb2R1bGU+Cgo8ZG9tLW1vZHVsZSBpZD0idnotbGluZS1jaGFydC10b29sdGlwIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4KICAgICAgPHRhYmxlPgogICAgICAgIDx0aGVhZD48L3RoZWFkPgogICAgICAgIDx0Ym9keT48L3Rib2R5PgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmNvbnRlbnQgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgdGFibGUgewogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBsaW5lLWhlaWdodDogMS40ZW07CiAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgIH0KCiAgICAgIHRoZWFkIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KCiAgICAgIHRib2R5IHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDIxcHg7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgdGQgewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICB9CgogICAgICAuc3dhdGNoIHsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICB9CgogICAgICAuY2xvc2VzdCAuc3dhdGNoIHsKICAgICAgICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAycHggI2ZmZjsKICAgICAgfQoKICAgICAgdGggewogICAgICAgIHBhZGRpbmc6IDAgNXB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KCiAgICAgIC5kaXN0YW50IHRkOm5vdCguc3dhdGNoKSB7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAuZ2hvc3QgewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJjaGFydC1hbmQtc3Bpbm5lci1jb250YWluZXIiPgogICAgICA8dnotbGluZS1jaGFydDIgaWQ9ImNoYXJ0IiBkYXRhLWxvYWRpbmckPSJbW2RhdGFMb2FkaW5nXV0iIGNvbG9yLXNjYWxlPSJbW2NvbG9yU2NhbGVdXSIgZGVmYXVsdC14LXJhbmdlPSJbW2RlZmF1bHRYUmFuZ2VdXSIgZGVmYXVsdC15LXJhbmdlPSJbW2RlZmF1bHRZUmFuZ2VdXSIgZmlsbC1hcmVhPSJbW2ZpbGxBcmVhXV0iIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIiBvbi1jaGFydC1hdHRhY2hlZD0iX29uQ2hhcnRBdHRhY2hlZCIgc21vb3RoaW5nLWVuYWJsZWQ9Iltbc21vb3RoaW5nRW5hYmxlZF1dIiBzbW9vdGhpbmctd2VpZ2h0PSJbW3Ntb290aGluZ1dlaWdodF1dIiBzeW1ib2wtZnVuY3Rpb249Iltbc3ltYm9sRnVuY3Rpb25dXSIgdG9vbHRpcC1jb2x1bW5zPSJbW3Rvb2x0aXBDb2x1bW5zXV0iIHRvb2x0aXAtcG9zaXRpb249IltbdG9vbHRpcFBvc2l0aW9uXV0iIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIgeC1jb21wb25lbnRzLWNyZWF0aW9uLW1ldGhvZD0iW1t4Q29tcG9uZW50c0NyZWF0aW9uTWV0aG9kXV0iIHgtdHlwZT0iW1t4VHlwZV1dIiB5LXZhbHVlLWFjY2Vzc29yPSJbW3lWYWx1ZUFjY2Vzc29yXV0iPjwvdnotbGluZS1jaGFydDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tkYXRhTG9hZGluZ11dIj4KICAgICAgICA8ZGl2IGlkPSJsb2FkaW5nLXNwaW5uZXItY29udGFpbmVyIj4KICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlPjwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdChbX21heWJlLXJlbmRlcmVkLWluLWJhZC1zdGF0ZV0pIHZ6LWxpbmUtY2hhcnQgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgI2NoYXJ0LWFuZC1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjbG9hZGluZy1zcGlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydDJbZGF0YS1sb2FkaW5nXSB7CiAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSI+CgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIDpob3N0KC5pcy1zY3JvbGxlZDpub3QoOmZpcnN0LWNoaWxkKSk6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGhlaWdodDogMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWRpdmlkZXItY29sb3IpOwogICAgICB9CgogICAgICA6aG9zdCguY2FuLXNjcm9sbDpub3QoLnNjcm9sbGVkLXRvLWJvdHRvbSk6bm90KDpsYXN0LWNoaWxkKSk6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxcHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvcik7CiAgICAgIH0KCiAgICAgIC5zY3JvbGxhYmxlIHsKICAgICAgICBwYWRkaW5nOiAwIDI0cHg7CgogICAgICAgIEBhcHBseSAtLWxheW91dC1zY3JvbGw7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZGlhbG9nLXNjcm9sbGFibGU7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0ic2Nyb2xsYWJsZSIgY2xhc3M9InNjcm9sbGFibGUiIG9uLXNjcm9sbD0idXBkYXRlU2Nyb2xsU3RhdGUiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgoKPC9kb20tbW9kdWxlPgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLW1hcmtkb3duLXZpZXciPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgaWQ9Im1hcmtkb3duIiBpbm5lci1oLXQtbS1sPSJbW2h0bWxdXSI+PC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIC8qCiAgICAgICAqIFJlZHVjZSB0b3Btb3N0IGFuZCBib3R0b21tb3N0IG1hcmdpbnMgZnJvbSAxNnB4IHRvIDAuM2VtIChyZW5kZXJzCiAgICAgICAqIGF0IGFib3V0IDQuOHB4KSB0byBrZWVwIHRoZSBsYXlvdXQgY29tcGFjdC4gVGhpcyBpbXByb3ZlcyB0aGUKICAgICAgICogYXBwZWFyYW5jZSB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIGxpbmUgb2YgdGV4dDsgc3RhbmRhcmQgTWFya2Rvd24KICAgICAgICogcmVuZGVyZXJzIHdpbGwgc3RpbGwgaW5jbHVkZSBhIGA8cD5gIGVsZW1lbnQuCiAgICAgICAqCiAgICAgICAqIEJ5IHRhcmdldGluZyBvbmx5IHRoZSB0b3AtbGV2ZWwsIGV4dHJlbWFsIGVsZW1lbnRzLCB3ZSBwcmVzZXJ2ZSBhbnkKICAgICAgICogYWN0dWFsIHBhcmFncmFwaCBicmVha3MgYW5kIG9ubHkgY2hhbmdlIHRoZSBwYWRkaW5nIGFnYWluc3QgdGhlCiAgICAgICAqIGNvbXBvbmVudCBlZGdlcy4KICAgICAgICovCiAgICAgICNtYXJrZG93biA+IHA6Zmlyc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi10b3A6IDAuM2VtOwogICAgICB9CiAgICAgICNtYXJrZG93biA+IHA6bGFzdC1jaGlsZCB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zZW07CiAgICAgIH0KCiAgICAgIC8qIFBsZWFzYW50IHN0eWxlcyBmb3IgTWFya2Rvd24gdGFibGVzLiAqLwogICAgICAjbWFya2Rvd24gdGFibGUgewogICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CiAgICAgIH0KICAgICAgI21hcmtkb3duIHRhYmxlIHRoIHsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgICNtYXJrZG93biB0YWJsZSB0aCwKICAgICAgI21hcmtkb3duIHRhYmxlIHRkIHsKICAgICAgICBwYWRkaW5nOiA2cHggMTNweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGZlMmU1OwogICAgICB9CiAgICAgICNtYXJrZG93biB0YWJsZSB0ciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2M2Y2JkMTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+Cgo8ZG9tLW1vZHVsZSBpZD0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIGZpZ2NhcHRpb24gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAvKiogSG9yaXpvbnRhbCBsaW5lIG9mIGxhYmVscy4gKi8KICAgICAgLmhlYWRpbmctcm93IHsKICAgICAgICBtYXJnaW4tdG9wOiAtNHB4OwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIH0KCiAgICAgIC8qKiBQaWVjZSBvZiB0ZXh0IGluIHRoZSBmaWd1cmUgY2FwdGlvbi4gKi8KICAgICAgLmhlYWRpbmctbGFiZWwgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgfQoKICAgICAgLyoqIE1ha2VzIGxhYmVsIHNob3cgb24gdGhlIHJpZ2h0LiAqLwogICAgICAuaGVhZGluZy1yaWdodCB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtY2FyZC1oZWFkaW5nIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICA8ZmlnY2FwdGlvbiBjbGFzcz0iY29udGVudCI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19uYW1lTGFiZWxdXSI+CiAgICAgICAgICAgIDxkaXYgaXRlbXByb3A9Im5hbWUiIGNsYXNzPSJoZWFkaW5nLWxhYmVsIG5hbWUiPgogICAgICAgICAgICAgIFtbX25hbWVMYWJlbF1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tydW5dXSI+CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgPHNwYW4gaXRlbXByb3A9InJ1biIgaWQ9ImhlYWRpbmctcnVuIiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0IHJ1biI+W1tydW5dXTwvc3Bhbj4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3RhZ0xhYmVsXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIj4KICAgICAgICAgICAgICB0YWc6IDxzcGFuIGl0ZW1wcm9wPSJ0YWciPltbX3RhZ0xhYmVsXV08L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8c2xvdD48L3Nsb3Q+CiAgICAgIDwvZmlnY2FwdGlvbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2Rlc2NyaXB0aW9uXV0iPgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBpY29uPSJpbmZvIiBvbi10YXA9Il90b2dnbGVEZXNjcmlwdGlvbkRpYWxvZyIgdGl0bGU9IlNob3cgc3VtbWFyeSBkZXNjcmlwdGlvbiI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHBhcGVyLWRpYWxvZyBpZD0iZGVzY3JpcHRpb25EaWFsb2ciIG5vLW92ZXJsYXAgaG9yaXpvbnRhbC1hbGlnbj0iYXV0byIgdmVydGljYWwtYWxpZ249ImF1dG8iPgogICAgICAgIDxwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZT4KICAgICAgICAgIDx0Zi1tYXJrZG93bi12aWV3IGh0bWw9IltbZGVzY3JpcHRpb25dXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItZGlhbG9nLXNjcm9sbGFibGU+CiAgICAgIDwvcGFwZXItZGlhbG9nPgogICAgPC9kaXY+CiAgICA8c3R5bGUgaW5jbHVkZT0idGYtY2FyZC1oZWFkaW5nLXN0eWxlIj4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAuY29udGVudCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICB9CiAgICAgIC5ydW4gewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB3aWR0aDogYXV0bzsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgcGFkZGluZzogMXB4IDRweCAycHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICBwYXBlci1kaWFsb2ctc2Nyb2xsYWJsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA2NDBweDsKICAgICAgfQogICAgICAjaGVhZGluZy1ydW4gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRmLWNhcmQtaGVhZGluZy1iYWNrZ3JvdW5kLWNvbG9yKTsKICAgICAgICBjb2xvcjogdmFyKC0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yKTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1kb3dubG9hZGVyIj4KICA8dGVtcGxhdGU+CiAgICA8cGFwZXItZHJvcGRvd24tbWVudSBuby1sYWJlbC1mbG9hdD0idHJ1ZSIgbGFiZWw9InJ1biB0byBkb3dubG9hZCIgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfcnVufX0iPgogICAgICA8cGFwZXItbGlzdGJveCBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW3J1bnNdXSI+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tpdGVtXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ydW5dXSI+CiAgICAgIDxhIGRvd25sb2FkPSJbW19jc3ZOYW1lKHRhZywgX3J1bildXSIgaHJlZj0iW1tfY3N2VXJsKHRhZywgX3J1biwgdXJsRm4pXV0iPkNTVjwvYT48YSBkb3dubG9hZD0iW1tfanNvbk5hbWUodGFnLCBfcnVuKV1dIiBocmVmPSJbW19qc29uVXJsKHRhZywgX3J1biwgdXJsRm4pXV0iPkpTT048L2E+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgfQogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItaW5wdXQ6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICB9CiAgICAgIH0KICAgICAgYSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbjogMCAwLjJlbTsKICAgICAgfQogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgZm9udC1zaXplOiAyMnB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXNjYWxhci1jYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtY2FyZC1oZWFkaW5nIHRhZz0iW1t0YWddXSIgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iPjwvdGYtY2FyZC1oZWFkaW5nPgogICAgPGRpdiBpZD0idGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIiPgogICAgICA8dGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciBhY3RpdmU9IltbYWN0aXZlXV0iIGNvbG9yLXNjYWxlPSJbW19nZXRDb2xvclNjYWxlKGNvbG9yU2NhbGUpXV0iIGRhdGEtc2VyaWVzPSJbW19nZXREYXRhU2VyaWVzKGRhdGFUb0xvYWQuKildXSIgZGF0YS10by1sb2FkPSJbW2RhdGFUb0xvYWRdXSIgZ2V0LWRhdGEtbG9hZC1uYW1lPSJbW19nZXREYXRhTG9hZE5hbWVdXSIgZ2V0LWRhdGEtbG9hZC11cmw9IltbZ2V0RGF0YUxvYWRVcmxdXSIgcmVxdWVzdC1kYXRhPSJbW3JlcXVlc3REYXRhXV0iIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIiBsb2FkLWRhdGEtY2FsbGJhY2s9IltbX2xvYWREYXRhQ2FsbGJhY2tdXSIgbG9hZC1rZXk9IltbdGFnXV0iIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIiBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iIHRhZy1tZXRhZGF0YT0iW1t0YWdNZXRhZGF0YV1dIiB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iIHRvb2x0aXAtcG9zaXRpb249ImF1dG8iIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIgeC10eXBlPSJbW3hUeXBlXV0iPgogICAgICA8L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImJ1dHRvbnMiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIiBpY29uPSJmdWxsc2NyZWVuIiBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uIHNlbGVjdGVkJD0iW1tfbG9nU2NhbGVBY3RpdmVdXSIgaWNvbj0ibGluZS13ZWlnaHQiIG9uLXRhcD0iX3RvZ2dsZUxvZ1NjYWxlIiB0aXRsZT0iVG9nZ2xlIHktYXhpcyBsb2cgc2NhbGUiPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBpY29uPSJzZXR0aW5ncy1vdmVyc2NhbiIgb24tdGFwPSJfcmVzZXREb21haW4iIHRpdGxlPSJGaXQgZG9tYWluIHRvIGRhdGEiPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8cGFwZXItbWVudS1idXR0b24gb24tcGFwZXItZHJvcGRvd24tb3Blbj0iX3VwZGF0ZURvd25sb2FkTGluayI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gY2xhc3M9ImRyb3Bkb3duLXRyaWdnZXIiIHNsb3Q9ImRyb3Bkb3duLXRyaWdnZXIiIGljb249ImZpbGUtZG93bmxvYWQiPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgIDxwYXBlci1pdGVtPgogICAgICAgICAgICAgIDxhIGlkPSJzdmdMaW5rIiBkb3dubG9hZD0iW1t0YWddXS5zdmciPgogICAgICAgICAgICAgICAgRG93bmxvYWQgQ3VycmVudCBDaGFydCBhcyBTVkcKICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLW1lbnUtYnV0dG9uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8dGYtZG93bmxvYWRlciBydW5zPSJbW19ydW5zRnJvbURhdGEoZGF0YVRvTG9hZCldXSIgdGFnPSJbW3RhZ11dIiB1cmwtZm49IltbX2Rvd25sb2FkVXJsRm5dXSI+PC90Zi1kb3dubG9hZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBtYXJnaW46IDVweDsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgIH0KCiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSAjdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci1jb250YWluZXIgewogICAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgIH0KCiAgICAgICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgdGYtY2FyZC1oZWFkaW5nIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICB9CgogICAgICAjYnV0dG9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbiB7CiAgICAgICAgY29sb3I6ICMyMTk2ZjM7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTAwJTsKICAgICAgICB3aWR0aDogMzJweDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgIH0KCiAgICAgIC5kb3dubG9hZC1saW5rcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgIH0KCiAgICAgIC5kb3dubG9hZC1saW5rcyBhIHsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbjogMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgfQogICAgICB9CgogICAgICBwYXBlci1tZW51LWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQogICAgICBwYXBlci1pdGVtIGEgewogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItcHJvZ3Jlc3MiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgOmhvc3QoW2hpZGRlbl0pLCBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAjcHJvZ3Jlc3NDb250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLXByb2dyZXNzLWNvbnRhaW5lcjsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzc0NvbnRhaW5lciwKICAgICAgLyogdGhlIHN0cmlwZSBmb3IgdGhlIGluZGV0ZXJtaW5hdGUgYW5pbWF0aW9uKi8KICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBoZWlnaHQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWhlaWdodCwgNHB4KTsKICAgICAgfQoKICAgICAgI3ByaW1hcnlQcm9ncmVzcywKICAgICAgI3NlY29uZGFyeVByb2dyZXNzLAogICAgICAuaW5kZXRlcm1pbmF0ZTo6YWZ0ZXIgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICAgICNwcm9ncmVzc0NvbnRhaW5lciwKICAgICAgLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXItY29sb3IsIHZhcigtLWdvb2dsZS1ncmV5LTMwMCkpOwogICAgICB9CgogICAgICA6aG9zdCgudHJhbnNpdGluZykgI3ByaW1hcnlQcm9ncmVzcywKICAgICAgOmhvc3QoLnRyYW5zaXRpbmcpICNzZWNvbmRhcnlQcm9ncmVzcyB7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2Zvcm07CgogICAgICAgIC8qIER1cmF0aW9uICovCiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjA4cyk7CiAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4wOHMpOwoKICAgICAgICAvKiBUaW1pbmcgZnVuY3Rpb24gKi8KICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgZWFzZSk7CiAgICAgICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCBlYXNlKTsKCiAgICAgICAgLyogRGVsYXkgKi8KICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXByb2dyZXNzLXRyYW5zaXRpb24tZGVsYXksIDBzKTsKICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci1wcm9ncmVzcy10cmFuc2l0aW9uLWRlbGF5LCAwcyk7CiAgICAgIH0KCiAgICAgICNwcmltYXJ5UHJvZ3Jlc3MsCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcyB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZpdDsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgY2VudGVyOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMCk7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgI3ByaW1hcnlQcm9ncmVzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtYWN0aXZlLWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JlZW4tNTAwKSk7CiAgICAgIH0KCiAgICAgICNzZWNvbmRhcnlQcm9ncmVzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3Mtc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JlZW4tMTAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pICNwcmltYXJ5UHJvZ3Jlc3MgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLXByb2dyZXNzLWRpc2FibGVkLWFjdGl2ZS1jb2xvciwgdmFyKC0tZ29vZ2xlLWdyZXktNTAwKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pICNzZWNvbmRhcnlQcm9ncmVzcyB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItcHJvZ3Jlc3MtZGlzYWJsZWQtc2Vjb25kYXJ5LWNvbG9yLCB2YXIoLS1nb29nbGUtZ3JleS0zMDApKTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZGlzYWJsZWRdKSkgI3ByaW1hcnlQcm9ncmVzcy5pbmRldGVybWluYXRlIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IHJpZ2h0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7CiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGluZGV0ZXJtaW5hdGUtYmFyIHZhcigtLXBhcGVyLXByb2dyZXNzLWluZGV0ZXJtaW5hdGUtY3ljbGUtZHVyYXRpb24sIDJzKSBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgYW5pbWF0aW9uOiBpbmRldGVybWluYXRlLWJhciB2YXIoLS1wYXBlci1wcm9ncmVzcy1pbmRldGVybWluYXRlLWN5Y2xlLWR1cmF0aW9uLCAycykgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFtkaXNhYmxlZF0pKSAjcHJpbWFyeVByb2dyZXNzLmluZGV0ZXJtaW5hdGU6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7CiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsKCiAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICBhbmltYXRpb246IGluZGV0ZXJtaW5hdGUtc3BsaXR0ZXIgdmFyKC0tcGFwZXItcHJvZ3Jlc3MtaW5kZXRlcm1pbmF0ZS1jeWNsZS1kdXJhdGlvbiwgMnMpIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgQC13ZWJraXQta2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtYmFyIHsKICAgICAgICAwJSB7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoLTEwMCUpOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgICAgNzUlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguMjgsLjYyLC4zNywuOTEpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMCkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1zcGxpdHRlciB7CiAgICAgICAgMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgIH0KICAgICAgICAzMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoLTEyNSUpOwogICAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjQyLDAsLjYsLjgpOwogICAgICAgIH0KICAgICAgICA5MCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICAgIDEwMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCguNzUpIHRyYW5zbGF0ZVgoMTI1JSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGluZGV0ZXJtaW5hdGUtYmFyIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKSB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CiAgICAgICAgNTAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCUpOwogICAgICAgIH0KICAgICAgICA3NSUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSkgdHJhbnNsYXRlWCgwJSk7CiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjI4LC42MiwuMzcsLjkxKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwKSB0cmFuc2xhdGVYKDAlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMgaW5kZXRlcm1pbmF0ZS1zcGxpdHRlciB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKC0xMjUlKTsKICAgICAgICB9CiAgICAgICAgMzAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgtMTI1JSk7CiAgICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoLjQyLDAsLjYsLjgpOwogICAgICAgIH0KICAgICAgICA5MCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLjc1KSB0cmFuc2xhdGVYKDEyNSUpOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC43NSkgdHJhbnNsYXRlWCgxMjUlKTsKICAgICAgICB9CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0icHJvZ3Jlc3NDb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJzZWNvbmRhcnlQcm9ncmVzcyIgaGlkZGVuJD0iW1tfaGlkZVNlY29uZGFyeVByb2dyZXNzKHNlY29uZGFyeVJhdGlvKV1dIj48L2Rpdj4KICAgICAgPGRpdiBpZD0icHJpbWFyeVByb2dyZXNzIj48L2Rpdj4KICAgIDwvZGl2PgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1zbGlkZXIiPgogIDx0ZW1wbGF0ZSBzdHJpcC13aGl0ZXNwYWNlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0OwogICAgICAgIEBhcHBseSAtLWxheW91dC1qdXN0aWZpZWQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOwogICAgICAgIC0tcGFwZXItcHJvZ3Jlc3MtYWN0aXZlLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLXNlY29uZGFyeS1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLXNlY29uZGFyeS1jb2xvciwgdmFyKC0tZ29vZ2xlLWJsdWUtMzAwKSk7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1hY3RpdmUtY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1hY3RpdmUtY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1kaXNhYmxlZC1zZWNvbmRhcnktY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1kaXNhYmxlZC1zZWNvbmRhcnktY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgICAgLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQ6IHZhcigtLXBhcGVyLXNsaWRlci1oZWlnaHQsIDJweCk7CiAgICAgIH0KCiAgICAgIC8qIGZvY3VzIHNob3dzIHRoZSByaXBwbGUgKi8KICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE5PVEUoa2VhbnVsZWUpOiBUaG91Z2ggOmhvc3QtY29udGV4dCBpcyBub3QgdW5pdmVyc2FsbHkgc3VwcG9ydGVkLCBzb21lIHBhZ2VzCiAgICAgICAqIHN0aWxsIHJlbHkgb24gcGFwZXItc2xpZGVyIGJlaW5nIGZsaXBwZWQgd2hlbiBkaXI9InJ0bCIgaXMgc2V0IG9uIGJvZHkuIEZvciBmdWxsCiAgICAgICAqIGNvbXBhdGFiaWxpdHksIGRpcj0icnRsIiBtdXN0IGJlIGV4cGxpY2l0bHkgc2V0IG9uIHBhcGVyLXNsaWRlci4KICAgICAgICovCiAgICAgIDpkaXIocnRsKSAjc2xpZGVyQ29udGFpbmVyIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGVYKC0xKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBOT1RFKGtlYW51bGVlKTogVGhpcyBpcyBzZXBhcmF0ZSBmcm9tIHRoZSBydWxlIGFib3ZlIGJlY2F1c2UgOmhvc3QtY29udGV4dCBtYXkKICAgICAgICogbm90IGJlIHJlY29nbml6ZWQuCiAgICAgICAqLwogICAgICA6aG9zdChbZGlyPSJydGwiXSkgI3NsaWRlckNvbnRhaW5lciB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgtMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogTk9URShrZWFudWxlZSk6IE5lZWRlZCB0byBvdmVycmlkZSB0aGUgOmhvc3QtY29udGV4dCBydWxlICh3aGVyZSBzdXBwb3J0ZWQpCiAgICAgICAqIHRvIHN1cHBvcnQgTFRSIHNsaWRlcnMgaW4gUlRMIHBhZ2VzLgogICAgICAgKi8KICAgICAgOmhvc3QoW2Rpcj0ibHRyIl0pICNzbGlkZXJDb250YWluZXIgewogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICAgIH0KCiAgICAgICNzbGlkZXJDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGNhbGMoMzBweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkpOwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDE1cHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpLzIpOwogICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygxNXB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgICAgfQoKICAgICAgI3NsaWRlckNvbnRhaW5lcjpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogMDsKICAgICAgfQoKICAgICAgI3NsaWRlckNvbnRhaW5lci5lZGl0YWJsZSB7CiAgICAgICAgbWFyZ2luLXRvcDogMTJweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICB9CgogICAgICAuYmFyLWNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAucmluZyA+IC5iYXItY29udGFpbmVyIHsKICAgICAgICBsZWZ0OiBjYWxjKDVweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjE4cyBlYXNlOwogICAgICB9CgogICAgICAucmluZy5leHBhbmQuZHJhZ2dpbmcgPiAuYmFyLWNvbnRhaW5lciB7CiAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgfQoKICAgICAgLnJpbmcuZXhwYW5kOm5vdCgucGluKSA+IC5iYXItY29udGFpbmVyIHsKICAgICAgICBsZWZ0OiBjYWxjKDhweCArIHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCkvMik7CiAgICAgIH0KCiAgICAgICNzbGlkZXJCYXIgewogICAgICAgIHBhZGRpbmc6IDE1cHggMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItYmFyLWNvbG9yLCB0cmFuc3BhcmVudCk7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1jb250YWluZXItY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1jb250YWluZXItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItc2xpZGVyLWhlaWdodCk7CiAgICAgIH0KCiAgICAgIC5zbGlkZXItbWFya2VycyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogY2FsYygxNHB4ICsgdmFyKC0tcGFwZXItc2xpZGVyLWhlaWdodCwycHgpLzIpOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAtMXB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgIC5zbGlkZXItbWFya2VyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleDsKICAgICAgfQogICAgICAuc2xpZGVyLW1hcmtlcnM6OmFmdGVyLAogICAgICAuc2xpZGVyLW1hcmtlcjo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OwogICAgICAgIHdpZHRoOiAycHg7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvciwgIzAwMCk7CiAgICAgIH0KCiAgICAgIC5zbGlkZXIta25vYiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC0xNXB4IC0gdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KS8yKTsKICAgICAgICB3aWR0aDogY2FsYygzMHB4ICsgdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1zbGlkZXItaGVpZ2h0KSk7CiAgICAgICAgaGVpZ2h0OiBjYWxjKDMwcHggKyB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXNsaWRlci1oZWlnaHQpKTsKICAgICAgfQoKICAgICAgLnRyYW5zaXRpbmcgPiAuc2xpZGVyLWtub2IgewogICAgICAgIHRyYW5zaXRpb246IGxlZnQgMC4wOHMgZWFzZTsKICAgICAgfQoKICAgICAgLnNsaWRlci1rbm9iOmZvY3VzIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICAuc2xpZGVyLWtub2IuZHJhZ2dpbmcgewogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIC5zbmFwcyA+IC5zbGlkZXIta25vYi5kcmFnZ2luZyB7CiAgICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4wOHMgZWFzZTsKICAgICAgfQoKICAgICAgLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgICBtYXJnaW46IDEwcHg7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDIwcHgpOwogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMjBweCk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwoKICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAtd2Via2l0LXRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICAgIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybSwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyOwogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMThzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogICAgICB9CgogICAgICAuZXhwYW5kOm5vdCgucGluKSA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuNSk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjUpOwogICAgICB9CgogICAgICAucmluZyA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3IsIHRyYW5zcGFyZW50KTsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNDAwKSk7CiAgICAgIH0KCiAgICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItcGluLWNvbG9yLCB2YXIoLS1nb29nbGUtYmx1ZS03MDApKTsKICAgICAgfQoKICAgICAgLnBpbiA+IC5zbGlkZXIta25vYiA+IC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICBtYXJnaW4tbGVmdDogLTEzcHg7CiAgICAgICAgd2lkdGg6IDI2cHg7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSA1MCUgNTAlIDA7CgogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIH0KCiAgICAgIC5zbGlkZXIta25vYi1pbm5lcjo6YmVmb3JlLAogICAgICAuc2xpZGVyLWtub2ItaW5uZXI6OmFmdGVyIHsKICAgICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMThzIGVhc2UsIGJhY2tncm91bmQtY29sb3IgLjE4cyBlYXNlOwogICAgICB9CgogICAgICAucGluLnJpbmcgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgfQoKICAgICAgLnBpbi5leHBhbmQgPiAuc2xpZGVyLWtub2IgPiAuc2xpZGVyLWtub2ItaW5uZXI6OmJlZm9yZSB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIHNjYWxlKDEpIHRyYW5zbGF0ZSgxN3B4LCAtMTdweCk7CiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKSBzY2FsZSgxKSB0cmFuc2xhdGUoMTdweCwgLTE3cHgpOwogICAgICB9CgogICAgICAucGluID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgICAgY29udGVudDogYXR0cih2YWx1ZSk7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IC0xNnB4OwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXNsaWRlci1mb250LWNvbG9yLCAjZmZmKTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CgogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwKSB0cmFuc2xhdGUoMCk7CiAgICAgIH0KCiAgICAgIC5waW4uZXhwYW5kID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyOjphZnRlciB7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpIHRyYW5zbGF0ZSgwLCAtMTdweCk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKSB0cmFuc2xhdGUoMCwgLTE3cHgpOwogICAgICB9CgogICAgICAvKiBwYXBlci1pbnB1dCAqLwogICAgICAuc2xpZGVyLWlucHV0IHsKICAgICAgICB3aWR0aDogNTBweDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICBAYXBwbHkgLS1wYXBlci1zbGlkZXItaW5wdXQtY29udGFpbmVyLWlucHV0OwogICAgICAgIH07CiAgICAgICAgQGFwcGx5IC0tcGFwZXItc2xpZGVyLWlucHV0OwogICAgICB9CgogICAgICAvKiBkaXNhYmxlZCBzdGF0ZSAqLwogICAgICAjc2xpZGVyQ29udGFpbmVyLmRpc2FibGVkIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgLmRpc2FibGVkID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQta25vYi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wYXBlci1zbGlkZXItZGlzYWJsZWQta25vYi1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUzZCgwLjc1LCAwLjc1LCAxKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlM2QoMC43NSwgMC43NSwgMSk7CiAgICAgIH0KCiAgICAgIC5kaXNhYmxlZC5yaW5nID4gLnNsaWRlci1rbm9iID4gLnNsaWRlci1rbm9iLWlubmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvciwgdmFyKC0tcGFwZXItZ3JleS00MDApKTsKICAgICAgfQoKICAgICAgcGFwZXItcmlwcGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3IsIHZhcigtLWdvb2dsZS1ibHVlLTcwMCkpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InNsaWRlckNvbnRhaW5lciIgY2xhc3MkPSJbW19nZXRDbGFzc05hbWVzKGRpc2FibGVkLCBwaW4sIHNuYXBzLCBpbW1lZGlhdGVWYWx1ZSwgbWluLCBleHBhbmQsIGRyYWdnaW5nLCB0cmFuc2l0aW5nLCBlZGl0YWJsZSldXSI+CiAgICAgIDxkaXYgY2xhc3M9ImJhci1jb250YWluZXIiPgogICAgICAgIDxwYXBlci1wcm9ncmVzcyBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaWQ9InNsaWRlckJhciIgYXJpYS1oaWRkZW49InRydWUiIG1pbj0iW1ttaW5dXSIgbWF4PSJbW21heF1dIiBzdGVwPSJbW3N0ZXBdXSIgdmFsdWU9IltbaW1tZWRpYXRlVmFsdWVdXSIgc2Vjb25kYXJ5LXByb2dyZXNzPSJbW3NlY29uZGFyeVByb2dyZXNzXV0iIG9uLWRvd249Il9iYXJkb3duIiBvbi11cD0iX3Jlc2V0S25vYiIgb24tdHJhY2s9Il9iYXJ0cmFjayIgb24tdGFwPSJfYmFyY2xpY2siPgogICAgICAgIDwvcGFwZXItcHJvZ3Jlc3M+CiAgICAgIDwvZGl2PgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3NuYXBzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9InNsaWRlci1tYXJrZXJzIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbbWFya2Vyc11dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2xpZGVyLW1hcmtlciI+PC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPGRpdiBpZD0ic2xpZGVyS25vYiIgY2xhc3M9InNsaWRlci1rbm9iIiBvbi1kb3duPSJfa25vYmRvd24iIG9uLXVwPSJfcmVzZXRLbm9iIiBvbi10cmFjaz0iX29uVHJhY2siIG9uLXRyYW5zaXRpb25lbmQ9Il9rbm9iVHJhbnNpdGlvbkVuZCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzbGlkZXIta25vYi1pbm5lciIgdmFsdWUkPSJbW2ltbWVkaWF0ZVZhbHVlXV0iPjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlZGl0YWJsZV1dIj4KICAgICAgPHBhcGVyLWlucHV0IGlkPSJpbnB1dCIgdHlwZT0ibnVtYmVyIiBzdGVwPSJbW3N0ZXBdXSIgbWluPSJbW21pbl1dIiBtYXg9IltbbWF4XV0iIGNsYXNzPSJzbGlkZXItaW5wdXQiIGRpc2FibGVkJD0iW1tkaXNhYmxlZF1dIiB2YWx1ZT0iW1tpbW1lZGlhdGVWYWx1ZV1dIiBvbi1jaGFuZ2U9Il9jaGFuZ2VWYWx1ZSIgb24ta2V5ZG93bj0iX2lucHV0S2V5RG93biIgbm8tbGFiZWwtZmxvYXQ+CiAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICA8L3RlbXBsYXRlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXNtb290aGluZy1pbnB1dCI+CiAgPHRlbXBsYXRlPgogICAgPGgzIGNsYXNzPSJ0aXRsZSI+U21vb3RoaW5nPC9oMz4KICAgIDxkaXYgY2xhc3M9InNtb290aGluZy1ibG9jayI+CiAgICAgIDxwYXBlci1zbGlkZXIgaWQ9InNsaWRlciIgaW1tZWRpYXRlLXZhbHVlPSJ7e19pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcn19IiBtYXg9IltbbWF4XV0iIG1pbj0iW1ttaW5dXSIgcGluIHN0ZXA9Iltbc3RlcF1dIiB0eXBlPSJudW1iZXIiIHZhbHVlPSJ7e3dlaWdodH19Ij48L3BhcGVyLXNsaWRlcj4KICAgICAgPHBhcGVyLWlucHV0IGlkPSJpbnB1dCIgbGFiZWw9IndlaWdodCIgbm8tbGFiZWwtZmxvYXQgdmFsdWU9Int7X2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dH19IiB0eXBlPSJudW1iZXIiIHN0ZXA9Iltbc3RlcF1dIiBtaW49IltbbWluXV0iIG1heD0iW1ttYXhdXSI+PC9wYXBlci1pbnB1dD4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAudGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTgwMCk7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnNtb290aGluZy1ibG9jayB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgcGFwZXItc2xpZGVyIHsKICAgICAgICAtLXBhcGVyLXNsaWRlci1hY3RpdmUtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2ItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1tYXJrZXJzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgZmxleC1ncm93OiAyOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgfQogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXNjYWxhci1kYXNoYm9hcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGlkPSJzaG93LWRvd25sb2FkLWxpbmtzIiBjaGVja2VkPSJ7e19zaG93RG93bmxvYWRMaW5rc319Ij5TaG93IGRhdGEgZG93bmxvYWQgbGlua3M8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggaWQ9Imlnbm9yZS15LW91dGxpZXIiIGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319Ij5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgIDxkaXY+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUgbm8tbGFiZWwtZmxvYXQgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSI+CiAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSIwIiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+YXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0IHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iIHN0ZXA9IjAuMDAxIiBtaW49IjAiIG1heD0iMC45OTkiPjwvdGYtc21vb3RoaW5nLWlucHV0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yIGlkPSJ4LXR5cGUtc2VsZWN0b3IiIG5hbWU9Ikhvcml6b250YWwgQXhpcyIgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24+PHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24+PHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHNjYWxhciBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBzY2FsYXIgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hPi4KICAgICAgICAgICAgCgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2E+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIiBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtc2NhbGFyLWNhcmQgYWN0aXZlPSJbW2FjdGl2ZV1dIiBkYXRhLXRvLWxvYWQ9IltbaXRlbS5zZXJpZXNdXSIgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIiBtdWx0aS1leHBlcmltZW50cz0iW1tfZ2V0TXVsdGlFeHBlcmltZW50cyhkYXRhU2VsZWN0aW9uKV1dIiByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iIHNob3ctZG93bmxvYWQtbGlua3M9IltbX3Nob3dEb3dubG9hZExpbmtzXV0iIHNtb290aGluZy1lbmFibGVkPSJbW19zbW9vdGhpbmdFbmFibGVkXV0iIHNtb290aGluZy13ZWlnaHQ9IltbX3Ntb290aGluZ1dlaWdodF1dIiB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKGNhdGVnb3J5LCBfcnVuVG9UYWdJbmZvLCBpdGVtKV1dIiB0YWc9IltbaXRlbS50YWddXSIgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1tfdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIgeC10eXBlPSJbW194VHlwZV1dIj48L3RmLXNjYWxhci1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgICN0b29sdGlwLXNvcnRpbmcgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTVweDsKICAgICAgfQogICAgICAjdG9vbHRpcC1zb3J0aW5nIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICB3aWR0aDogMTA1cHg7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICAuY2VudGVyIHsKICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtY3VzdG9tLXNjYWxhci1jYXJkLXN0eWxlIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBtYXJnaW46IDVweCAxMHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMzMwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgI3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXItY29udGFpbmVyIHsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICB9CgogICAgICBoMSB7CiAgICAgICAgZm9udC1zaXplOiAxOXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgICN0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2J1dHRvbnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICB9CgogICAgICAuZG93bmxvYWQtbGlua3MgYSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDJweDsKICAgICAgfQoKICAgICAgLmRvd25sb2FkLWxpbmtzIHBhcGVyLWRyb3Bkb3duLW1lbnUgewogICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1sYWJlbDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dDogewogICAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIGlkPSJsb2FkZXIiIGFjdGl2ZT0iW1thY3RpdmVdXSIgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIgZGF0YS1zZXJpZXM9IltbX3Nlcmllc05hbWVzXV0iIGdldC1kYXRhLWxvYWQtdXJsPSJbW19kYXRhVXJsXV0iIGZpbGwtYXJlYT0iW1tfZmlsbEFyZWFdXSIgaWdub3JlLXktb3V0bGllcnM9IltbaWdub3JlWU91dGxpZXJzXV0iIGxvYWQta2V5PSJbW190YWdGaWx0ZXJdXSIgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIgbG9nLXNjYWxlLWFjdGl2ZT0iW1tfbG9nU2NhbGVBY3RpdmVdXSIgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKG1hcmdpbkNoYXJ0U2VyaWVzKV1dIiByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIgc3ltYm9sLWZ1bmN0aW9uPSJbW19jcmVhdGVTeW1ib2xGdW5jdGlvbigpXV0iIHRvb2x0aXAtY29sdW1ucz0iW1tfdG9vbHRpcENvbHVtbnNdXSIgdG9vbHRpcC1zb3J0aW5nLW1ldGhvZD0iW1t0b29sdGlwU29ydGluZ01ldGhvZF1dIiB4LXR5cGU9IltbeFR5cGVdXSI+CiAgICAgIDwvdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlcj4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0iYnV0dG9ucyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iIGljb249ImZ1bGxzY3JlZW4iIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIj48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gc2VsZWN0ZWQkPSJbW19sb2dTY2FsZUFjdGl2ZV1dIiBpY29uPSJsaW5lLXdlaWdodCIgb24tdGFwPSJfdG9nZ2xlTG9nU2NhbGUiIHRpdGxlPSJUb2dnbGUgeS1heGlzIGxvZyBzY2FsZSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InNldHRpbmdzLW92ZXJzY2FuIiBvbi10YXA9Il9yZXNldERvbWFpbiIgdGl0bGU9IkZpdCBkb21haW4gdG8gZGF0YSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHNwYW4gc3R5bGU9ImZsZXgtZ3JvdzogMSI+PC9zcGFuPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd0Rvd25sb2FkTGlua3NdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZG93bmxvYWQtbGlua3MiPgogICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUgbm8tbGFiZWwtZmxvYXQ9InRydWUiIGxhYmVsPSJzZXJpZXMgdG8gZG93bmxvYWQiIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZH19Ij4KICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iIGFzPSJkYXRhU2VyaWVzTmFtZSI+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+W1tkYXRhU2VyaWVzTmFtZV1dPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDxhIGRvd25sb2FkPSJbW19kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWRdXS5jc3YiIGhyZWY9IltbX2NzdlVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSI+Q1NWPC9hPgogICAgICAgICAgPGEgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmpzb24iIGhyZWY9IltbX2pzb25VcmwoX25hbWVUb0RhdGFTZXJpZXMsIF9kYXRhU2VyaWVzTmFtZVRvRG93bmxvYWQpXV0iPkpTT048L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KCiAgICAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWlzc2luZ1RhZ3MubGVuZ3RoXV0iPgogICAgICA8ZGl2IGNsYXNzPSJjb2xsYXBzaWJsZS1saXN0LXRpdGxlIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0iW1tfZ2V0VG9nZ2xlQ29sbGFwc2libGVJY29uKF9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkKV1dIiBvbi1jbGljaz0iX3RvZ2dsZU1pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuIiBjbGFzcz0idG9nZ2xlLWNvbGxhcHNpYmxlLWJ1dHRvbiI+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICA8c3BhbiBjbGFzcz0iY29sbGFwc2libGUtdGl0bGUtdGV4dCI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249Imljb25zOmVycm9yIj48L2lyb24taWNvbj4gTWlzc2luZyBUYWdzCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLWNvbnRlbnQiPgogICAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWlzc2luZ1RhZ3NdXSIgYXM9Im1pc3NpbmdFbnRyeSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgUnVuICJbW21pc3NpbmdFbnRyeS5ydW5dXSIgbGFja3MgZGF0YSBmb3IgdGFncwogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbbWlzc2luZ0VudHJ5LnRhZ3NdXSIgYXM9InRhZyI+CiAgICAgICAgICAgICAgICAgIDxsaT5bW3RhZ11dPC9saT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tY29sbGFwc2U+CiAgICA8L3RlbXBsYXRlPgoKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfdGFnRmlsdGVySW52YWxpZF1dIj4KICAgICAgPGRpdiBjbGFzcz0iZXJyb3ItY29udGVudCI+CiAgICAgICAgPGlyb24taWNvbiBjbGFzcz0iZXJyb3ItaWNvbiIgaWNvbj0iaWNvbnM6ZXJyb3IiPjwvaXJvbi1pY29uPgogICAgICAgIFRoaXMgcmVndWxhciBleHByZXNpb24gaXMgaW52YWxpZDo8YnI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImludmFsaWQtcmVnZXgiPltbX3RhZ0ZpbHRlcl1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zdGVwc01pc21hdGNoXV0iPgogICAgICA8ZGl2IGNsYXNzPSJlcnJvci1jb250ZW50Ij4KICAgICAgICA8aXJvbi1pY29uIGNsYXNzPSJlcnJvci1pY29uIiBpY29uPSJpY29uczplcnJvciI+PC9pcm9uLWljb24+CiAgICAgICAgVGhlIHN0ZXBzIGZvciB2YWx1ZSwgbG93ZXIsIGFuZCB1cHBlciB0YWdzIGRvIG5vdCBtYXRjaDoKICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0YWctbmFtZSI+W1tfc3RlcHNNaXNtYXRjaC5zZXJpZXNPYmplY3QudmFsdWVdXTwvc3Bhbj46CiAgICAgICAgICAgIFtbX3NlcGFyYXRlV2l0aENvbW1hcyhfc3RlcHNNaXNtYXRjaC52YWx1ZVN0ZXBzKV1dCiAgICAgICAgICA8L2xpPgogICAgICAgICAgPGxpPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0idGFnLW5hbWUiPltbX3N0ZXBzTWlzbWF0Y2guc2VyaWVzT2JqZWN0Lmxvd2VyXV08L3NwYW4+OgogICAgICAgICAgICBbW19zZXBhcmF0ZVdpdGhDb21tYXMoX3N0ZXBzTWlzbWF0Y2gubG93ZXJTdGVwcyldXQogICAgICAgICAgPC9saT4KICAgICAgICAgIDxsaT4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRhZy1uYW1lIj5bW19zdGVwc01pc21hdGNoLnNlcmllc09iamVjdC51cHBlcl1dPC9zcGFuPjoKICAgICAgICAgICAgW1tfc2VwYXJhdGVXaXRoQ29tbWFzKF9zdGVwc01pc21hdGNoLnVwcGVyU3RlcHMpXV0KICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgoKICAgIDxkaXYgaWQ9Im1hdGNoZXMtY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0iY29sbGFwc2libGUtbGlzdC10aXRsZSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSI+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0iW1tfZ2V0VG9nZ2xlQ29sbGFwc2libGVJY29uKF9tYXRjaGVzTGlzdE9wZW5lZCldXSIgb24tY2xpY2s9Il90b2dnbGVNYXRjaGVzT3BlbiIgY2xhc3M9InRvZ2dsZS1tYXRjaGVzLWJ1dHRvbiI+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJjb2xsYXBzaWJsZS10aXRsZS10ZXh0Ij4KICAgICAgICAgIE1hdGNoZXMgKFtbX3Nlcmllc05hbWVzLmxlbmd0aF1dKQogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbWF0Y2hlc0xpc3RPcGVuZWRdXSI+CiAgICAgICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zZXJpZXNOYW1lc11dIiBhcz0ic2VyaWVzTmFtZSIgaWQ9Im1hdGNoLWxpc3QtcmVwZWF0IiBvbi1kb20tY2hhbmdlPSJfbWF0Y2hMaXN0RW50cnlDb2xvclVwZGF0ZWQiPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1hdGNoLWxpc3QtZW50cnkiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im1hdGNoLWVudHJ5LXN5bWJvbCI+CiAgICAgICAgICAgICAgICAgIFtbX2RldGVybWluZVN5bWJvbChfbmFtZVRvRGF0YVNlcmllcywgc2VyaWVzTmFtZSldXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgW1tzZXJpZXNOYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jdXN0b20tc2NhbGFyLWNhcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5lcnJvci1jb250ZW50IHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZjAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQoKICAgICAgLmVycm9yLWljb24gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGZpbGw6ICNmZmY7CiAgICAgICAgbWFyZ2luOiAwIGF1dG8gNXB4IGF1dG87CiAgICAgIH0KCiAgICAgIC5pbnZhbGlkLXJlZ2V4IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQoKICAgICAgLmVycm9yLWNvbnRlbnQgdWwgewogICAgICAgIG1hcmdpbjogMXB4IDAgMCAwOwogICAgICAgIHBhZGRpbmc6IDAgMCAwIDE5cHg7CiAgICAgIH0KCiAgICAgIC50YWctbmFtZSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KCiAgICAgIC5jb2xsYXBzaWJsZS1saXN0LXRpdGxlIHsKICAgICAgICBtYXJnaW46IDEwcHggMCA1cHggMDsKICAgICAgfQoKICAgICAgLmNvbGxhcHNpYmxlLXRpdGxlLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1pc3NpbmctdGFncy1mb3ItcnVuLWNvbnRhaW5lciB7CiAgICAgICAgbWFyZ2luOiA4cHggMCAwIDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1jYXJkLWhlYWRpbmcgZGlzcGxheS1uYW1lPSJbW190aXRsZURpc3BsYXlTdHJpbmddXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8ZGl2IGlkPSJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLWNvbnRhaW5lciI+CiAgICAgIDx0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIGlkPSJsb2FkZXIiIGFjdGl2ZT0iW1thY3RpdmVdXSIgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIgZGF0YS1zZXJpZXM9IltbX3Nlcmllc05hbWVzXV0iIGdldC1kYXRhLWxvYWQtdXJsPSJbW19kYXRhVXJsXV0iIGlnbm9yZS15LW91dGxpZXJzPSJbW2lnbm9yZVlPdXRsaWVyc11dIiBsb2FkLWtleT0iW1tfdGFnRmlsdGVyXV0iIGRhdGEtdG8tbG9hZD0iW1tydW5zXV0iIGxvZy1zY2FsZS1hY3RpdmU9IltbX2xvZ1NjYWxlQWN0aXZlXV0iIGxvYWQtZGF0YS1jYWxsYmFjaz0iW1tfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tyZXF1ZXN0TWFuYWdlcl1dIiBzbW9vdGhpbmctZW5hYmxlZD0iW1tzbW9vdGhpbmdFbmFibGVkXV0iIHNtb290aGluZy13ZWlnaHQ9Iltbc21vb3RoaW5nV2VpZ2h0XV0iIHN5bWJvbC1mdW5jdGlvbj0iW1tfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKV1dIiB0b29sdGlwLXNvcnRpbmctbWV0aG9kPSJbW3Rvb2x0aXBTb3J0aW5nTWV0aG9kXV0iIHgtdHlwZT0iW1t4VHlwZV1dIj4KICAgICAgPC90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyPgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJidXR0b25zIj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uIHNlbGVjdGVkJD0iW1tfZXhwYW5kZWRdXSIgaWNvbj0iZnVsbHNjcmVlbiIgb24tdGFwPSJfdG9nZ2xlRXhwYW5kZWQiPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBzZWxlY3RlZCQ9IltbX2xvZ1NjYWxlQWN0aXZlXV0iIGljb249ImxpbmUtd2VpZ2h0IiBvbi10YXA9Il90b2dnbGVMb2dTY2FsZSIgdGl0bGU9IlRvZ2dsZSB5LWF4aXMgbG9nIHNjYWxlIj48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0ic2V0dGluZ3Mtb3ZlcnNjYW4iIG9uLXRhcD0iX3Jlc2V0RG9tYWluIiB0aXRsZT0iRml0IGRvbWFpbiB0byBkYXRhIj48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICA8c3BhbiBzdHlsZT0iZmxleC1ncm93OiAxIj48L3NwYW4+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tzaG93RG93bmxvYWRMaW5rc11dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJkb3dubG9hZC1saW5rcyI+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBuby1sYWJlbC1mbG9hdD0idHJ1ZSIgbGFiZWw9InNlcmllcyB0byBkb3dubG9hZCIgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkfX0iPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfc2VyaWVzTmFtZXNdXSIgYXM9ImRhdGFTZXJpZXNOYW1lIj4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5bW2RhdGFTZXJpZXNOYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgPGEgZG93bmxvYWQ9IltbX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZF1dLmNzdiIgaHJlZj0iW1tfY3N2VXJsKF9uYW1lVG9EYXRhU2VyaWVzLCBfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkKV1dIj5DU1Y8L2E+CiAgICAgICAgICA8YSBkb3dubG9hZD0iW1tfZGF0YVNlcmllc05hbWVUb0Rvd25sb2FkXV0uanNvbiIgaHJlZj0iW1tfanNvblVybChfbmFtZVRvRGF0YVNlcmllcywgX2RhdGFTZXJpZXNOYW1lVG9Eb3dubG9hZCldXSI+SlNPTjwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgogICAgPGRpdiBpZD0ibWF0Y2hlcy1jb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJtYXRjaGVzLWxpc3QtdGl0bGUiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0iPgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249IltbX2dldFRvZ2dsZU1hdGNoZXNJY29uKF9tYXRjaGVzTGlzdE9wZW5lZCldXSIgb24tY2xpY2s9Il90b2dnbGVNYXRjaGVzT3BlbiIgY2xhc3M9InRvZ2dsZS1tYXRjaGVzLWJ1dHRvbiI+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDxzcGFuIGNsYXNzPSJtYXRjaGVzLXRleHQiPgogICAgICAgICAgTWF0Y2hlcyAoW1tfc2VyaWVzTmFtZXMubGVuZ3RoXV0pCiAgICAgICAgPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXJpZXNOYW1lcy5sZW5ndGhdXSI+CiAgICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJbW19tYXRjaGVzTGlzdE9wZW5lZF1dIj4KICAgICAgICAgIDxkaXYgaWQ9Im1hdGNoZXMtbGlzdCI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3Nlcmllc05hbWVzXV0iIGFzPSJzZXJpZXNOYW1lIiBpZD0ibWF0Y2gtbGlzdC1yZXBlYXQiIG9uLWRvbS1jaGFuZ2U9Il9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWF0Y2gtbGlzdC1lbnRyeSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibWF0Y2gtZW50cnktc3ltYm9sIj4KICAgICAgICAgICAgICAgICAgW1tfZGV0ZXJtaW5lU3ltYm9sKF9uYW1lVG9EYXRhU2VyaWVzLCBzZXJpZXNOYW1lKV1dCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICBbW3Nlcmllc05hbWVdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWN1c3RvbS1zY2FsYXItY2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI21hdGNoZXMtbGlzdC10aXRsZSB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgNXB4IDA7CiAgICAgIH0KCiAgICAgICNtYXRjaGVzLWxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5tYXRjaC1saXN0LWVudHJ5IHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQoKICAgICAgLm1hdGNoLWVudHJ5LXN5bWJvbCB7CiAgICAgICAgZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLm1hdGNoZXMtdGV4dCB7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfc2hvd0Rvd25sb2FkTGlua3N9fSI+U2hvdyBkYXRhIGRvd25sb2FkIGxpbmtzPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGluZS1pdGVtIj4KICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7X2lnbm9yZVlPdXRsaWVyc319Ij5JZ25vcmUgb3V0bGllcnMgaW4gY2hhcnQgc2NhbGluZzwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZyI+CiAgICAgICAgICAgIDxkaXYgaWQ9InRvb2x0aXAtc29ydGluZy1sYWJlbCI+VG9vbHRpcCBzb3J0aW5nIG1ldGhvZDo8L2Rpdj4KICAgICAgICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUgbm8tbGFiZWwtZmxvYXQgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfdG9vbHRpcFNvcnRpbmdNZXRob2R9fSI+CiAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSIwIiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmRlZmF1bHQ8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8cGFwZXItaXRlbT5kZXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+YXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bmVhcmVzdDwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtc21vb3RoaW5nLWlucHV0IHdlaWdodD0ie3tfc21vb3RoaW5nV2VpZ2h0fX0iIHN0ZXA9IjAuMDAxIiBtaW49IjAiIG1heD0iMSI+PC90Zi1zbW9vdGhpbmctaW5wdXQ+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IgaWQ9IngtdHlwZS1zZWxlY3RvciIgbmFtZT0iSG9yaXpvbnRhbCBBeGlzIiBzZWxlY3RlZC1pZD0ie3tfeFR5cGV9fSI+CiAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InN0ZXAiPnN0ZXA8L3BhcGVyLWJ1dHRvbj48cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj48cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciIgaWQ9ImNhdGVnb3JpZXMtY29udGFpbmVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5UaGUgY3VzdG9tIHNjYWxhcnMgZGFzaGJvYXJkIGlzIGluYWN0aXZlLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczoKICAgICAgICAgICAgPG9sPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW4ndCBsYWlkIG91dCB0aGUgZGFzaGJvYXJkLjwvbGk+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgc2NhbGFyIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L29sPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgVG8gbGF5IG91dCB0aGUgZGFzaGJvYXJkLCBwYXNzIGEgPGNvZGU+TGF5b3V0PC9jb2RlPiBwcm90b2J1ZmZlcgogICAgICAgICAgICAgIHRvIHRoZSA8Y29kZT5zZXRfbGF5b3V0PC9jb2RlPiBtZXRob2QuIEZvciBleGFtcGxlLAogICAgICAgICAgICAKICAgICAgICAgICAgPHByZT5mcm9tIHRlbnNvcmJvYXJkIGltcG9ydCBzdW1tYXJ5CmZyb20gdGVuc29yYm9hcmQucGx1Z2lucy5jdXN0b21fc2NhbGFyIGltcG9ydCBsYXlvdXRfcGIyCi4uLgojIFRoaXMgYWN0aW9uIGRvZXMgbm90IGhhdmUgdG8gYmUgcGVyZm9ybWVkIGF0IGV2ZXJ5IHN0ZXAsIHNvIHRoZSBhY3Rpb24gaXMgbm90CiMgdGFrZW4gY2FyZSBvZiBieSBhbiBvcCBpbiB0aGUgZ3JhcGguIFdlIG9ubHkgbmVlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb25jZQojIChpbnN0ZWFkIG9mIHBlciBzdGVwKS4KbGF5b3V0X3N1bW1hcnkgPSBzdW1tYXJ5X2xpYi5jdXN0b21fc2NhbGFyX3BiKGxheW91dF9wYjIuTGF5b3V0KAogIGNhdGVnb3J5PVsKICAgIGxheW91dF9wYjIuQ2F0ZWdvcnkoCiAgICAgIHRpdGxlPSdsb3NzZXMnLAogICAgICBjaGFydD1bCiAgICAgICAgICBsYXlvdXRfcGIyLkNoYXJ0KAogICAgICAgICAgICAgIHRpdGxlPSdsb3NzZXMnLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcidsb3NzLionXSwKICAgICAgICAgICAgICApKSwKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J2JheicsCiAgICAgICAgICAgICAgbWFyZ2luPWxheW91dF9wYjIuTWFyZ2luQ2hhcnRDb250ZW50KAogICAgICAgICAgICAgICAgc2VyaWVzPVsKICAgICAgICAgICAgICAgICAgbGF5b3V0X3BiMi5NYXJnaW5DaGFydENvbnRlbnQuU2VyaWVzKAogICAgICAgICAgICAgICAgICAgIHZhbHVlPSdsb3NzL2Jhei9zY2FsYXJfc3VtbWFyeScsCiAgICAgICAgICAgICAgICAgICAgbG93ZXI9J2Jhel9sb3dlci9iYXovc2NhbGFyX3N1bW1hcnknLAogICAgICAgICAgICAgICAgICAgIHVwcGVyPSdiYXpfdXBwZXIvYmF6L3NjYWxhcl9zdW1tYXJ5JyksCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICkpLAogICAgICBdKSwKICAgIGxheW91dF9wYjIuQ2F0ZWdvcnkoCiAgICAgIHRpdGxlPSd0cmlnIGZ1bmN0aW9ucycsCiAgICAgIGNoYXJ0PVsKICAgICAgICAgIGxheW91dF9wYjIuQ2hhcnQoCiAgICAgICAgICAgICAgdGl0bGU9J3dhdmUgdHJpZyBmdW5jdGlvbnMnLAogICAgICAgICAgICAgIG11bHRpbGluZT1sYXlvdXRfcGIyLk11bHRpbGluZUNoYXJ0Q29udGVudCgKICAgICAgICAgICAgICAgIHRhZz1bcid0cmlnRnVuY3Rpb25zL2Nvc2luZScsIHIndHJpZ0Z1bmN0aW9ucy9zaW5lJ10sCiAgICAgICAgICAgICAgKSksCiAgICAgICAgICAjIFRoZSByYW5nZSBvZiB0YW5nZW50IGlzIGRpZmZlcmVudC4gTGV0J3MgZ2l2ZSBpdCBpdHMgb3duIGNoYXJ0LgogICAgICAgICAgbGF5b3V0X3BiMi5DaGFydCgKICAgICAgICAgICAgICB0aXRsZT0ndGFuJywKICAgICAgICAgICAgICBtdWx0aWxpbmU9bGF5b3V0X3BiMi5NdWx0aWxpbmVDaGFydENvbnRlbnQoCiAgICAgICAgICAgICAgICB0YWc9W3IndHJpZ0Z1bmN0aW9ucy90YW5nZW50J10sCiAgICAgICAgICAgICAgKSksCiAgICAgIF0sCiAgICAgICMgVGhpcyBjYXRlZ29yeSB3ZSBjYXJlIGxlc3MgYWJvdXQuIExldCdzIG1ha2UgaXQgaW5pdGlhbGx5IGNsb3NlZC4KICAgICAgY2xvc2VkPVRydWUpLAogIF0pKQp3cml0ZXIuYWRkX3N1bW1hcnkobGF5b3V0X3N1bW1hcnkpCjwvcHJlPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hPi4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IGFzPSJjaGFydCIgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIgZGlzYWJsZS1wYWdpbmF0aW9uIGluaXRpYWwtb3BlbmVkPSJbW2NhdGVnb3J5Lm1ldGFkYXRhLm9wZW5lZF1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbY2hhcnQubXVsdGlsaW5lXV0iPgogICAgICAgICAgICAgICAgICAgIDx0Zi1jdXN0b20tc2NhbGFyLW11bHRpLWxpbmUtY2hhcnQtY2FyZCBhY3RpdmU9IltbYWN0aXZlXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIgcnVucz0iW1tfc2VsZWN0ZWRSdW5zXV0iIHRpdGxlPSJbW2NoYXJ0LnRpdGxlXV0iIHgtdHlwZT0iW1tfeFR5cGVdXSIgc21vb3RoaW5nLWVuYWJsZWQ9IltbX3Ntb290aGluZ0VuYWJsZWRdXSIgc21vb3RoaW5nLXdlaWdodD0iW1tfc21vb3RoaW5nV2VpZ2h0XV0iIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIiBzaG93LWRvd25sb2FkLWxpbmtzPSJbW19zaG93RG93bmxvYWRMaW5rc11dIiB0YWctcmVnZXhlcz0iW1tjaGFydC5tdWx0aWxpbmUudGFnXV0iPjwvdGYtY3VzdG9tLXNjYWxhci1tdWx0aS1saW5lLWNoYXJ0LWNhcmQ+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tjaGFydC5tYXJnaW5dXSI+CiAgICAgICAgICAgICAgICAgICAgPHRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQgYWN0aXZlPSJbW2FjdGl2ZV1dIiByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iIHJ1bnM9IltbX3NlbGVjdGVkUnVuc11dIiB0aXRsZT0iW1tjaGFydC50aXRsZV1dIiB4LXR5cGU9IltbX3hUeXBlXV0iIHRvb2x0aXAtc29ydGluZy1tZXRob2Q9IltbdG9vbHRpcFNvcnRpbmdNZXRob2RdXSIgaWdub3JlLXktb3V0bGllcnM9IltbX2lnbm9yZVlPdXRsaWVyc11dIiBzaG93LWRvd25sb2FkLWxpbmtzPSJbW19zaG93RG93bmxvYWRMaW5rc11dIiBtYXJnaW4tY2hhcnQtc2VyaWVzPSJbW2NoYXJ0Lm1hcmdpbi5zZXJpZXNdXSI+PC90Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkPgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgI3Rvb2x0aXAtc29ydGluZyB7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CiAgICAgICN0b29sdGlwLXNvcnRpbmcgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXItZm9jdXMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIHdpZHRoOiAxMDVweDsKICAgICAgfQogICAgICAubGluZS1pdGVtIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwogICAgICB9CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWltYWdlLWxvYWRlciI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWNhcmQtaGVhZGluZyB0YWc9IltbdGFnXV0iIHJ1bj0iW1tydW5dXSIgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iIGNvbG9yPSJbW19ydW5Db2xvcl1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX3NhbXBsZVRleHRdXSBvZiBbW29mU2FtcGxlc11dPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHN0ZXAKICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkIj5bW190b0xvY2FsZVN0cmluZyhfc3RlcFZhbHVlKV1dPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkaW5nLWxhYmVsIGhlYWRpbmctcmlnaHQgZGF0ZXRpbWUiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnRXYWxsVGltZV1dIj4KICAgICAgICAgICAgICBbW19jdXJyZW50V2FsbFRpbWVdXQogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbCByaWdodCI+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIV9pc0ltYWdlTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzXV0iPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItc2xpZGVyIGlkPSJzdGVwcyIgaW1tZWRpYXRlLXZhbHVlPSJ7e19zdGVwSW5kZXh9fSIgbWF4PSJbW19tYXhTdGVwSW5kZXhdXSIgbWF4LW1hcmtlcnM9IltbX21heFN0ZXBJbmRleF1dIiBzbmFwcyBzdGVwPSIxIiB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CgogICAgCiAgICA8YSBpZD0ibWFpbi1pbWFnZS1jb250YWluZXIiIHJvbGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIGFjdHVhbCBzaXplIiBhcmlhLWV4cGFuZGVkJD0iW1tfZ2V0QXJpYUV4cGFuZGVkKGFjdHVhbFNpemUpXV0iIG9uLXRhcD0iX2hhbmRsZVRhcCI+PC9hPgoKICAgIDxzdHlsZSBpbmNsdWRlPSJ0Zi1jYXJkLWhlYWRpbmctc3R5bGUiPgogICAgICAvKiogTWFrZSBidXR0b24gYSBkaXYuICovCiAgICAgIGJ1dHRvbiB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IEdldCByaWQgb2YgZG90dGVkIGxpbmUgaW5zaWRlIGJ1dHRvbi4gKi8KICAgICAgYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLyoqIEZpcmVmb3g6IFNpbXVsYXRlIENocm9tZSdzIG91dGVyIGdsb3cgb24gYnV0dG9uIHdoZW4gZm9jdXNlZC4gKi8KICAgICAgYnV0dG9uOi1tb3otZm9jdXNyaW5nIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgIGJveC1zaGFkb3c6IDBweCAwcHggMXB4IDJweCBIaWdobGlnaHQ7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMzUwcHg7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtYXJnaW46IDAgMTVweCA0MHB4IDA7CiAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKICAgICAgfQoKICAgICAgLyoqIFdoZW4gYWN0dWFsIHNpemUgc2hvd24gaXMgb24sIHVzZSB0aGUgYWN0dWFsIGltYWdlIHdpZHRoLiAqLwogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSB7CiAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbYWN0dWFsLXNpemVdKSAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IG5vbmU7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgIH0KCiAgICAgIDpob3N0KFthY3R1YWwtc2l6ZV0pICNtYWluLWltYWdlLWNvbnRhaW5lciBpbWcgewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1zcGlubmVyLWxpdGUgewogICAgICAgIHdpZHRoOiAxNHB4OwogICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207CiAgICAgICAgLS1wYXBlci1zcGlubmVyLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQoKICAgICAgI3N0ZXBzIHsKICAgICAgICBoZWlnaHQ6IDE1cHg7CiAgICAgICAgbWFyZ2luOiAwIDAgMCAtMTVweDsKICAgICAgICAvKgogICAgICAgICAqIDMxIGNvbWVzIGZyb20gYWRkaW5nIGEgcGFkZGluZyBvZiAxNXB4IGZyb20gYm90aCBzaWRlcyBvZiB0aGUKICAgICAgICAgKiBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nIDFweCBzbyB0aGF0IHRoZSBzbGlkZXIgd2lkdGggYWxpZ25zCiAgICAgICAgICogd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwgYW5kCiAgICAgICAgICogYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZgogICAgICAgICAqIHRoZSBpbWFnZS4gMzAgLSAxICsgMi4KICAgICAgICAgKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICB9CgogICAgICAjbWFpbi1pbWFnZS1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDEwMjRweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgfQoKICAgICAgI21haW4taW1hZ2UtY29udGFpbmVyIGltZyB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlczsKICAgICAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgIH0KCiAgICAgIHBhcGVyLWljb24tYnV0dG9uIHsKICAgICAgICBjb2xvcjogIzIxOTZmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiAxMDAlOwogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgIH0KICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWltYWdlLWRhc2hib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJsaW5lLWl0ZW0iPgogICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tfYWN0dWFsU2l6ZX19Ij5TaG93IGFjdHVhbCBpbWFnZSBzaXplPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8aDMgY2xhc3M9InRvb2x0aXAtY29udGFpbmVyIj5CcmlnaHRuZXNzIGFkanVzdG1lbnQ8L2gzPgogICAgICAgICAgPGRpdiBjbGFzcz0icmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIj4KICAgICAgICAgICAgPHBhcGVyLXNsaWRlciBtaW49IjAiIG1heD0iMiIgc25hcHMgcGluIHN0ZXA9IjAuMDEiIHZhbHVlPSJ7e19icmlnaHRuZXNzQWRqdXN0bWVudH19IiBpbW1lZGlhdGUtdmFsdWU9Int7X2JyaWdodG5lc3NBZGp1c3RtZW50fX0iPjwvcGFwZXItc2xpZGVyPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGNsYXNzPSJ4LWJ1dHRvbiIgb24tdGFwPSJfcmVzZXRCcmlnaHRuZXNzIiBkaXNhYmxlZD0iW1tfYnJpZ2h0bmVzc0lzRGVmYXVsdF1dIj5SZXNldDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDxoMyBjbGFzcz0idG9vbHRpcC1jb250YWluZXIiPkNvbnRyYXN0IGFkanVzdG1lbnQ8L2gzPgogICAgICAgICAgPGRpdiBjbGFzcz0icmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIj4KICAgICAgICAgICAgPHBhcGVyLXNsaWRlciBtaW49IjAiIG1heD0iNTAwIiBzbmFwcyBwaW4gc3RlcD0iMSIgdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19IiBpbW1lZGlhdGUtdmFsdWU9Int7X2NvbnRyYXN0UGVyY2VudGFnZX19Ij48L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIG9uLXRhcD0iX3Jlc2V0Q29udHJhc3QiIGRpc2FibGVkPSJbW19jb250cmFzdElzRGVmYXVsdF1dIj5SZXNldDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDx0Zi1ydW5zLXNlbGVjdG9yIGlkPSJydW5zLXNlbGVjdG9yIiBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+PC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGltYWdlIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczoKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGltYWdlIGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgIDxsaT5UZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiPlJFQURNRTwvYT4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIj5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYT4uCiAgICAgICAgICAgIAoKICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQjbXktdGVuc29yYm9hcmQtaXNudC1zaG93aW5nLWFueS1kYXRhLXdoYXRzLXdyb25nIj50aGUgc2VjdGlvbiBvZiB0aGUgUkVBRE1FIGRldm90ZWQgdG8gbWlzc2luZyBkYXRhIHByb2JsZW1zPC9hPgogICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICAKICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPHRmLXRhZy1maWx0ZXJlciB0YWctZmlsdGVyPSJ7e190YWdGaWx0ZXJ9fSI+PC90Zi10YWctZmlsdGVyZXI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jYXRlZ29yaWVzXV0iIGFzPSJjYXRlZ29yeSI+CiAgICAgICAgICAgIDx0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldyBjYXRlZ29yeT0iW1tjYXRlZ29yeV1dIiBpbml0aWFsLW9wZW5lZD0iW1tfc2hvdWxkT3BlbihpbmRleCldXSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLWltYWdlLWxvYWRlciBhY3RpdmU9IltbYWN0aXZlXV0iIHJ1bj0iW1tpdGVtLnJ1bl1dIiB0YWc9IltbaXRlbS50YWddXSIgc2FtcGxlPSJbW2l0ZW0uc2FtcGxlXV0iIG9mLXNhbXBsZXM9IltbaXRlbS5vZlNhbXBsZXNdXSIgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIgYWN0dWFsLXNpemU9IltbX2FjdHVhbFNpemVdXSIgYnJpZ2h0bmVzcy1hZGp1c3RtZW50PSJbW19icmlnaHRuZXNzQWRqdXN0bWVudF1dIiBjb250cmFzdC1wZXJjZW50YWdlPSJbW19jb250cmFzdFBlcmNlbnRhZ2VdXSI+PC90Zi1pbWFnZS1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICB9CiAgICAgIC5yZXNldHRhYmxlLXNsaWRlci1jb250YWluZXIgcGFwZXItc2xpZGVyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KICAgICAgLnJlc2V0dGFibGUtc2xpZGVyLWNvbnRhaW5lciBwYXBlci1idXR0b24gewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICAucmVzZXR0YWJsZS1zbGlkZXItY29udGFpbmVyIHBhcGVyLWJ1dHRvbltkaXNhYmxlZF0gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHVuc2V0OwogICAgICB9CiAgICAgIC54LWJ1dHRvbiB7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgY29sb3I6IHZhcigtLXRiLXVpLWRhcmstYWNjZW50KTsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICBwYXBlci1zbGlkZXIgewogICAgICAgIC0tcGFwZXItc2xpZGVyLWFjdGl2ZS1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1ib3JkZXItY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLW1hcmtlcnMtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLXBpbi1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLXN0YXJ0LWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWF1ZGlvLWxvYWRlciI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWNhcmQtaGVhZGluZyB0YWc9IltbdGFnXV0iIHJ1bj0iW1tydW5dXSIgZGlzcGxheS1uYW1lPSJbW3RhZ01ldGFkYXRhLmRpc3BsYXlOYW1lXV0iIGRlc2NyaXB0aW9uPSJbW3RhZ01ldGFkYXRhLmRlc2NyaXB0aW9uXV0iIGNvbG9yPSJbW19ydW5Db2xvcl1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVNhbXBsZXNdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCI+CiAgICAgICAgICAgIHNhbXBsZTogW1tfc2FtcGxlVGV4dF1dIG9mIFtbdG90YWxTYW1wbGVzXV0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc0F0TGVhc3RPbmVTdGVwXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzdGVwIDxzdHJvbmc+W1tfY3VycmVudERhdHVtLnN0ZXBdXTwvc3Ryb25nPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2N1cnJlbnREYXR1bS53YWxsX3RpbWVdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwgaGVhZGluZy1yaWdodCI+CiAgICAgICAgICAgICAgW1tfY3VycmVudERhdHVtLndhbGxfdGltZV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxwYXBlci1zbGlkZXIgaWQ9InN0ZXBzIiBpbW1lZGlhdGUtdmFsdWU9Int7X3N0ZXBJbmRleH19IiBtYXg9IltbX21heFN0ZXBJbmRleF1dIiBtYXgtbWFya2Vycz0iW1tfbWF4U3RlcEluZGV4XV0iIHNuYXBzIHN0ZXA9IjEiIHZhbHVlPSJ7e19zdGVwSW5kZXh9fSI+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzQXRMZWFzdE9uZVN0ZXBdXSI+CiAgICAgIDxhdWRpbyBjb250cm9scyBzcmMkPSJbW19jdXJyZW50RGF0dW0udXJsXV0iIHR5cGUkPSJbW19jdXJyZW50RGF0dW0uY29udGVudFR5cGVdXSI+PC9hdWRpbz4KICAgICAgPHRmLW1hcmtkb3duLXZpZXcgaHRtbD0iW1tfY3VycmVudERhdHVtLmxhYmVsXV0iPjwvdGYtbWFya2Rvd24tdmlldz4KICAgIDwvdGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJtYWluLWF1ZGlvLWNvbnRhaW5lciI+PC9kaXY+CgogICAgPHN0eWxlIGluY2x1ZGU9InRmLWNhcmQtaGVhZGluZy1zdHlsZSI+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMzUwcHg7CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAtLXN0ZXAtc2xpZGVyLWtub2ItY29sb3I6ICM0MjQyNDI7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgIH0KCiAgICAgICNzdGVwcyB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBwYWRkaW5nOiAwIDVweDsgLyogc28gdGhlIHNsaWRlciBrbm9iIGRvZXNuJ3QgYnV0dCBvdXQgKi8KICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tY29sb3I6IHZhcigtLXN0ZXAtc2xpZGVyLWtub2ItY29sb3IpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtY29sb3I6IHZhcigtLXN0ZXAtc2xpZGVyLWtub2ItY29sb3IpOwogICAgICAgIC0tcGFwZXItc2xpZGVyLWtub2Itc3RhcnQtYm9yZGVyLWNvbG9yOiB2YXIoLS1zdGVwLXNsaWRlci1rbm9iLWNvbG9yKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXN0ZXAtc2xpZGVyLWtub2ItY29sb3IpOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWF1ZGlvLWRhc2hib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBpZD0icnVucy1zZWxlY3RvciIgc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPjwvdGYtcnVucy1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9Im5vLWRhdGEtd2FybmluZyI+CiAgICAgICAgICAgIDxoMz5ObyBhdWRpbyBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+WW91IGhhdmVu4oCZdCB3cml0dGVuIGFueSBhdWRpbyBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIj5SRUFETUU8L2E+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCI+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2E+LgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyI+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYT4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1hdWRpby1sb2FkZXIgYWN0aXZlPSJbW2FjdGl2ZV1dIiBydW49IltbaXRlbS5ydW5dXSIgdGFnPSJbW2l0ZW0udGFnXV0iIHNhbXBsZT0iW1tpdGVtLnNhbXBsZV1dIiB0b3RhbC1zYW1wbGVzPSJbW2l0ZW0udG90YWxTYW1wbGVzXV0iIHRhZy1tZXRhZGF0YT0iW1tfdGFnTWV0YWRhdGEoX3J1blRvVGFnSW5mbywgaXRlbS5ydW4sIGl0ZW0udGFnKV1dIiByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iPjwvdGYtYXVkaW8tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9Imlyb24tYXV0b2dyb3ctdGV4dGFyZWEiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDQwMHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkOwogICAgICAgIHBhZGRpbmc6IDJweDsKICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRhcmVhOwogICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGFyZWE7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLm1pcnJvci10ZXh0IHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIC5maXQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1maXQ7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGluaGVyaXQ7CiAgICAgICAgY29sb3I6IGluaGVyaXQ7CiAgICAgICAgLyogc2VlIGNvbW1lbnRzIGluIHRlbXBsYXRlICovCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgICAgICBmb250LWZhbWlseTogaW5oZXJpdDsKICAgICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDsKICAgICAgICB0ZXh0LWFsaWduOiBpbmhlcml0OwogICAgICAgIEBhcHBseSAtLWlyb24tYXV0b2dyb3ctdGV4dGFyZWE7CiAgICAgIH0KCiAgICAgIHRleHRhcmVhOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTotbW96LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CgogICAgICB0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlciB7CiAgICAgICAgQGFwcGx5IC0taXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS1wbGFjZWhvbGRlcjsKICAgICAgfQoKICAgICAgdGV4dGFyZWE6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWF1dG9ncm93LXRleHRhcmVhLXBsYWNlaG9sZGVyOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIAogICAgCiAgICA8ZGl2IGlkPSJtaXJyb3IiIGNsYXNzPSJtaXJyb3ItdGV4dCIgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvZGl2PgoKICAgIAogICAgPGRpdiBjbGFzcz0idGV4dGFyZWEtY29udGFpbmVyIGZpdCI+CiAgICAgIDx0ZXh0YXJlYSBpZD0idGV4dGFyZWEiIG5hbWUkPSJbW25hbWVdXSIgYXJpYS1sYWJlbCQ9IltbbGFiZWxdXSIgYXV0b2NvbXBsZXRlJD0iW1thdXRvY29tcGxldGVdXSIgYXV0b2ZvY3VzJD0iW1thdXRvZm9jdXNdXSIgaW5wdXRtb2RlJD0iW1tpbnB1dG1vZGVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSI+PC90ZXh0YXJlYT4KICAgIDwvZGl2PgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItdGV4dGFyZWEiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgbGFiZWwgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pbnB1dC1jb250YWluZXIgbm8tbGFiZWwtZmxvYXQkPSJbW25vTGFiZWxGbG9hdF1dIiBhbHdheXMtZmxvYXQtbGFiZWw9IltbX2NvbXB1dGVBbHdheXNGbG9hdExhYmVsKGFsd2F5c0Zsb2F0TGFiZWwscGxhY2Vob2xkZXIpXV0iIGF1dG8tdmFsaWRhdGUkPSJbW2F1dG9WYWxpZGF0ZV1dIiBkaXNhYmxlZCQ9IltbZGlzYWJsZWRdXSIgaW52YWxpZD0iW1tpbnZhbGlkXV0iPgoKICAgICAgPGxhYmVsIGhpZGRlbiQ9IltbIWxhYmVsXV0iIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb3IkPSJbW19pbnB1dElkXV0iIHNsb3Q9ImxhYmVsIj5bW2xhYmVsXV08L2xhYmVsPgoKICAgICAgPGlyb24tYXV0b2dyb3ctdGV4dGFyZWEgY2xhc3M9InBhcGVyLWlucHV0LWlucHV0IiBzbG90PSJpbnB1dCIgaWQkPSJbW19pbnB1dElkXV0iIGFyaWEtbGFiZWxsZWRieSQ9IltbX2FyaWFMYWJlbGxlZEJ5XV0iIGFyaWEtZGVzY3JpYmVkYnkkPSJbW19hcmlhRGVzY3JpYmVkQnldXSIgYmluZC12YWx1ZT0ie3t2YWx1ZX19IiBpbnZhbGlkPSJ7e2ludmFsaWR9fSIgdmFsaWRhdG9yJD0iW1t2YWxpZGF0b3JdXSIgZGlzYWJsZWQkPSJbW2Rpc2FibGVkXV0iIGF1dG9jb21wbGV0ZSQ9IltbYXV0b2NvbXBsZXRlXV0iIGF1dG9mb2N1cyQ9IltbYXV0b2ZvY3VzXV0iIGlucHV0bW9kZSQ9IltbaW5wdXRtb2RlXV0iIG5hbWUkPSJbW25hbWVdXSIgcGxhY2Vob2xkZXIkPSJbW3BsYWNlaG9sZGVyXV0iIHJlYWRvbmx5JD0iW1tyZWFkb25seV1dIiByZXF1aXJlZCQ9IltbcmVxdWlyZWRdXSIgbWlubGVuZ3RoJD0iW1ttaW5sZW5ndGhdXSIgbWF4bGVuZ3RoJD0iW1ttYXhsZW5ndGhdXSIgYXV0b2NhcGl0YWxpemUkPSJbW2F1dG9jYXBpdGFsaXplXV0iIHJvd3MkPSJbW3Jvd3NdXSIgbWF4LXJvd3MkPSJbW21heFJvd3NdXSIgb24tY2hhbmdlPSJfb25DaGFuZ2UiPjwvaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYT4KCiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tlcnJvck1lc3NhZ2VdXSI+CiAgICAgICAgPHBhcGVyLWlucHV0LWVycm9yIGFyaWEtbGl2ZT0iYXNzZXJ0aXZlIiBzbG90PSJhZGQtb24iPltbZXJyb3JNZXNzYWdlXV08L3BhcGVyLWlucHV0LWVycm9yPgogICAgICA8L3RlbXBsYXRlPgoKICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2NoYXJDb3VudGVyXV0iPgogICAgICAgIDxwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIgc2xvdD0iYWRkLW9uIj48L3BhcGVyLWlucHV0LWNoYXItY291bnRlcj4KICAgICAgPC90ZW1wbGF0ZT4KCiAgICA8L3BhcGVyLWlucHV0LWNvbnRhaW5lcj4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItdG9hc3QiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2FzdC1iYWNrZ3JvdW5kLWNvbG9yLCAjMzIzMjMyKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9hc3QtY29sb3IsICNmMWYxZjEpOwogICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7CiAgICAgICAgbWluLXdpZHRoOiAyODhweDsKICAgICAgICBwYWRkaW5nOiAxNnB4IDI0cHg7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBib3gtc2hhZG93OiAwIDJweCA1cHggMCByZ2JhKDAsIDAsIDAsIDAuMjYpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBtYXJnaW46IDEycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuM3MsIG9wYWNpdHkgMC4zczsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcywgb3BhY2l0eSAwLjNzOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwcHgpOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDBweCk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgfQoKICAgICAgOmhvc3QoLmNhcHN1bGUpIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4OwogICAgICB9CgogICAgICA6aG9zdCguZml0LWJvdHRvbSkgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi13aWR0aDogMDsKICAgICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQoKICAgICAgOmhvc3QoLnBhcGVyLXRvYXN0LW9wZW4pIHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNwYW4gaWQ9ImxhYmVsIj57e3RleHR9fTwvc3Bhbj4KICAgIDxzbG90Pjwvc2xvdD4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci10b2dnbGUtYnV0dG9uIj4KICA8dGVtcGxhdGUgc3RyaXAtd2hpdGVzcGFjZT4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWNvbW1vbi1iYXNlOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KDpmb2N1cykgewogICAgICAgIG91dGxpbmU6bm9uZTsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1iYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIGxpbmVhciAuMDhzOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJhci1jb2xvciwgIzAwMDAwMCk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWJhcjsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC0zcHg7CiAgICAgICAgbGVmdDogMDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICB0cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSBsaW5lYXIgLjA4cywgYmFja2dyb3VuZC1jb2xvciBsaW5lYXIgLjA4czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gbGluZWFyIC4wOHMsIGJhY2tncm91bmQtY29sb3IgbGluZWFyIC4wOHM7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLXVuY2hlY2tlZC1idXR0b24tY29sb3IsIHZhcigtLXBhcGVyLWdyZXktNTApKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi11bmNoZWNrZWQtYnV0dG9uOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbi5kcmFnZ2luZyB7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtjaGVja2VkXTpub3QoW2Rpc2FibGVkXSkpIC50b2dnbGUtYmFyIHsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJhci1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYmFyOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudG9nZ2xlLWJhciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsKICAgICAgICBvcGFjaXR5OiAwLjEyOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pIC50b2dnbGUtYnV0dG9uIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDApOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDApOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF06bm90KFtkaXNhYmxlZF0pKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWJ1dHRvbi1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci10b2dnbGUtYnV0dG9uLWNoZWNrZWQtYnV0dG9uOwogICAgICB9CgogICAgICA6aG9zdChbZGlzYWJsZWRdKSAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JkYmRiZDsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAudG9nZ2xlLWluayB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTE0cHg7CiAgICAgICAgbGVmdDogLTE0cHg7CiAgICAgICAgcmlnaHQ6IGF1dG87CiAgICAgICAgYm90dG9tOiBhdXRvOwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvZ2dsZS1idXR0b24tdW5jaGVja2VkLWluazsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdKSAudG9nZ2xlLWluayB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tY2hlY2tlZC1pbmstY29sb3IsIHZhcigtLXByaW1hcnktY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9nZ2xlLWJ1dHRvbi1jaGVja2VkLWluazsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1jb250YWluZXIgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAxNHB4OwogICAgICAgIC8qIFRoZSB0b2dnbGUgYnV0dG9uIGhhcyBhbiBhYnNvbHV0ZSBwb3NpdGlvbiBvZiAtM3B4OyBUaGUgZXh0cmEgMXB4CiAgICAgICAgLyogYWNjb3VudHMgZm9yIHRoZSB0b2dnbGUgYnV0dG9uIHNoYWRvdyBib3guICovCiAgICAgICAgbWFyZ2luOiA0cHggMXB4OwogICAgICB9CgogICAgICAudG9nZ2xlLWxhYmVsIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWxhYmVsLXNwYWNpbmcsIDhweCk7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24tbGFiZWwtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICB9CgogICAgICAvKiBpbnZhbGlkIHN0YXRlICovCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1iYXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1iYXItY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXRvZ2dsZS1idXR0b24taW52YWxpZC1idXR0b24tY29sb3IsIHZhcigtLWVycm9yLWNvbG9yKSk7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpbnZhbGlkXSkgLnRvZ2dsZS1pbmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci10b2dnbGUtYnV0dG9uLWludmFsaWQtaW5rLWNvbG9yLCB2YXIoLS1lcnJvci1jb2xvcikpOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1jb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJ0b2dnbGVCYXIiIGNsYXNzPSJ0b2dnbGUtYmFyIj48L2Rpdj4KICAgICAgPGRpdiBpZD0idG9nZ2xlQnV0dG9uIiBjbGFzcz0idG9nZ2xlLWJ1dHRvbiI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJ0b2dnbGUtbGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj4KCiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ncmFwaC1taW5pbWFwIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgbGluZWFyOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCguaGlkZGVuKSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQoKICAgICAgY2FudmFzIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjOTk5OwogICAgICB9CgogICAgICByZWN0IHsKICAgICAgICBmaWxsOiB3aGl0ZTsKICAgICAgICBzdHJva2U6ICMxMTExMTE7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgICAgICAgZmlsbC1vcGFjaXR5OiAwOwogICAgICAgIGZpbHRlcjogdXJsKCNtaW5pbWFwRHJvcFNoYWRvdyk7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzdmc+CiAgICAgIDxkZWZzPgogICAgICAgIDxmaWx0ZXIgaWQ9Im1pbmltYXBEcm9wU2hhZG93IiB4PSItMjAlIiB5PSItMjAlIiB3aWR0aD0iMTUwJSIgaGVpZ2h0PSIxNTAlIj4KICAgICAgICAgIDxmZW9mZnNldCByZXN1bHQ9Im9mZk91dCIgaW49IlNvdXJjZUdyYXBoaWMiIGR4PSIxIiBkeT0iMSI+PC9mZW9mZnNldD4KICAgICAgICAgIDxmZWNvbG9ybWF0cml4IHJlc3VsdD0ibWF0cml4T3V0IiBpbj0ib2ZmT3V0IiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMC4xIDAgMCAwIDAgMCAwLjEgMCAwIDAgMCAwIDAuMSAwIDAgMCAwIDAgMC41IDAiPjwvZmVjb2xvcm1hdHJpeD4KICAgICAgICAgIDxmZWdhdXNzaWFuYmx1ciByZXN1bHQ9ImJsdXJPdXQiIGluPSJtYXRyaXhPdXQiIHN0ZGRldmlhdGlvbj0iMiI+PC9mZWdhdXNzaWFuYmx1cj4KICAgICAgICAgIDxmZWJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJsdXJPdXQiIG1vZGU9Im5vcm1hbCI+PC9mZWJsZW5kPgogICAgICAgIDwvZmlsdGVyPgogICAgICA8L2RlZnM+CiAgICAgIDxyZWN0PjwvcmVjdD4KICAgIDwvc3ZnPgogICAgPGNhbnZhcyBjbGFzcz0iZmlyc3QiPjwvY2FudmFzPgogICAgCiAgICA8Y2FudmFzIGNsYXNzPSJzZWNvbmQiPjwvY2FudmFzPgogICAgPGNhbnZhcyBjbGFzcz0iZG93bmxvYWQiPjwvY2FudmFzPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWdyYXBoLXNjZW5lIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgICNzdmcgewogICAgICAgIGZsZXg6IDE7CiAgICAgICAgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2hpZGRlbiB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogMHB4OwogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLyogLS0tIE5vZGUgYW5kIGFubm90YXRpb24tbm9kZSBmb3IgTWV0YW5vZGUgLS0tICovCgogICAgICAubWV0YSA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgICAubWV0YSA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZmlsbDogaHNsKDAsIDAlLCA3MCUpOwogICAgICB9CiAgICAgIC5ub2RlLm1ldGEuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgICAgLm5vZGUubWV0YS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICAgIH0KICAgICAgLmFubm90YXRpb24ubWV0YS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgICAuYW5ub3RhdGlvbi5tZXRhLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgfQogICAgICAubWV0YS5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgICAubWV0YS5zZWxlY3RlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgICBzdHJva2U6IHJlZDsKICAgICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICAgIH0KICAgICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZCA+IC5ub2Rlc2hhcGUgPiByZWN0LAogICAgICAubm9kZS5tZXRhLnNlbGVjdGVkLmV4cGFuZGVkID4gLmFubm90YXRpb24tbm9kZSA+IHJlY3QgewogICAgICAgIHN0cm9rZTogcmVkOwogICAgICAgIHN0cm9rZS13aWR0aDogMzsKICAgICAgfQogICAgICAuYW5ub3RhdGlvbi5tZXRhLnNlbGVjdGVkID4gLm5vZGVzaGFwZSA+IHJlY3QsCiAgICAgIC5hbm5vdGF0aW9uLm1ldGEuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgICB9CiAgICAgIC5ub2RlLm1ldGEuc2VsZWN0ZWQuZXhwYW5kZWQuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCwKICAgICAgLm5vZGUubWV0YS5zZWxlY3RlZC5leHBhbmRlZC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgICBzdHJva2U6IHJlZDsKICAgICAgICBzdHJva2Utd2lkdGg6IDQ7CiAgICAgIH0KCiAgICAgIC5mYWRlZCwKICAgICAgLmZhZGVkIHJlY3QsCiAgICAgIC5mYWRlZCBlbGxpcHNlLAogICAgICAuZmFkZWQgcGF0aCwKICAgICAgLmZhZGVkIHVzZSwKICAgICAgI3JlY3RIYXRjaCBsaW5lLAogICAgICAjZWxsaXBzZUhhdGNoIGxpbmUgewogICAgICAgIGNvbG9yOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBwYXRoIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDFweCAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuZmFkZWQgcmVjdCB7CiAgICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBlbGxpcHNlLAogICAgICAuZmFkZWQgdXNlIHsKICAgICAgICBmaWxsOiB1cmwoI2VsbGlwc2VIYXRjaCkgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLmZhZGVkIHRleHQgewogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgIH0KCiAgICAgIC8qIFJ1bGVzIHVzZWQgZm9yIGlucHV0LXRyYWNpbmcuICovCiAgICAgIC5pbnB1dC1oaWdobGlnaHQgPiAqID4gcmVjdCwKICAgICAgLmlucHV0LWhpZ2hsaWdodCA+ICogPiBlbGxpcHNlLAogICAgICAuaW5wdXQtaGlnaGxpZ2h0ID4gKiA+IHVzZSB7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjZmY5ODAwICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qICAtIEZhZGVkIG5vbi1pbnB1dCBzdHlsaW5nICovCiAgICAgIC5ub24taW5wdXQgPiAqID4gcmVjdCwKLm5vbi1pbnB1dCA+ICogPiBlbGxpcHNlLAoubm9uLWlucHV0ID4gKiA+IHVzZSwKLyogRm9yIENvbnN0IG5vZGVzLiAqLwoubm9uLWlucHV0ID4gKiA+IC5jb25zdGFudDpub3QoW2NsYXNzKj0iaW5wdXQtaGlnaGxpZ2h0Il0pID4KICAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiBpbmhlcml0OwogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IGluaGVyaXQ7CiAgICAgIH0KCiAgICAgIC5ub24taW5wdXQgcGF0aCB7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAubm9uLWlucHV0ID4gLm5vZGVzaGFwZSA+IHJlY3QsCi5ub24taW5wdXQgPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCwKLyogRm9yIHN0eWxpbmcgb2YgYW5ub3RhdGlvbiBub2RlcyBvZiBub24taW5wdXQgbm9kZXMuICovCi5ub24taW5wdXQgPiBnID4gLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1ub2RlID4gcmVjdCB7CiAgICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC5ub24taW5wdXQgZWxsaXBzZSwKICAgICAgLm5vbi1pbnB1dCB1c2UgewogICAgICAgIGZpbGw6IHVybCgjZWxsaXBzZUhhdGNoKSAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAubm9uLWlucHV0ID4gdGV4dCB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLm5vbi1pbnB1dCAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgICB9CgogICAgICAubm9uLWlucHV0IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZS5yZWZsaW5lIHsKICAgICAgICBtYXJrZXItc3RhcnQ6IHVybCgjcmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgICAgfQoKICAgICAgLyogSW5wdXQgZWRnZXMuICovCiAgICAgIC5pbnB1dC1lZGdlLWhpZ2hsaWdodCA+IHRleHQgewogICAgICAgIGZpbGw6IGJsYWNrICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgLmlucHV0LWhpZ2hsaWdodCA+IC5pbi1hbm5vdGF0aW9ucyA+IC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tZWRnZSwKICAgICAgLmlucHV0LWhpZ2hsaWdodC1zZWxlY3RlZAogICAgICAgID4gLmluLWFubm90YXRpb25zCiAgICAgICAgPiAuYW5ub3RhdGlvbgogICAgICAgID4gLmFubm90YXRpb24tZWRnZSB7CiAgICAgICAgc3Ryb2tlOiAjOTk5ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIE5vbi1pbnB1dCBlZGdlcy4gKi8KICAgICAgLm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCwKLm5vbi1pbnB1dCA+IGcgPiAuYW5ub3RhdGlvbiA+IHBhdGgsCi8qIEFubm90YXRpb24gc3R5bGVzIChsYWJlbCBhbmQgZWRnZXMgcmVzcGVjdGl2ZWx5KS4gKi8KLm5vbi1pbnB1dCA+IGcgPgouYW5ub3RhdGlvbjpub3QoLmlucHV0LWhpZ2hsaWdodCk6bm90KC5pbnB1dC1oaWdobGlnaHQtc2VsZWN0ZWQpID4KLmFubm90YXRpb24tbGFiZWwKLyouYW5ub3RhdGlvbi1lZGdlKi8KIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC8qIC0tLSBPcCBOb2RlIC0tLSAqLwoKICAgICAgLm9wID4gLm5vZGVzaGFwZSA+IC5ub2RlY29sb3J0YXJnZXQsCiAgICAgIC5vcCA+IC5hbm5vdGF0aW9uLW5vZGUgPiAubm9kZWNvbG9ydGFyZ2V0IHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZmlsbDogI2ZmZjsKICAgICAgICBzdHJva2U6ICNjY2M7CiAgICAgIH0KCiAgICAgIC5vcC5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiAubm9kZWNvbG9ydGFyZ2V0LAogICAgICAub3Auc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gLm5vZGVjb2xvcnRhcmdldCB7CiAgICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgICB9CgogICAgICAub3AuaGlnaGxpZ2h0ZWQgPiAubm9kZXNoYXBlID4gLm5vZGVjb2xvcnRhcmdldCwKICAgICAgLm9wLmhpZ2hsaWdodGVkID4gLmFubm90YXRpb24tbm9kZSA+IC5ub2RlY29sb3J0YXJnZXQgewogICAgICAgIHN0cm9rZS13aWR0aDogMjsKICAgICAgfQoKICAgICAgLyogLS0tIFNlcmllcyBOb2RlIC0tLSAqLwoKICAgICAgLyogQnkgZGVmYXVsdCwgZG9uJ3Qgc2hvdyB0aGUgc2VyaWVzIGJhY2tncm91bmQgPHJlY3Q+LiAqLwogICAgICAuc2VyaWVzID4gLm5vZGVzaGFwZSA+IHJlY3QgewogICAgICAgIGZpbGw6IGhzbCgwLCAwJSwgNzAlKTsKICAgICAgICBmaWxsLW9wYWNpdHk6IDA7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogNSwgNTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC8qIE9uY2UgZXhwYW5kZWQsIHNob3cgdGhlIHNlcmllcyBiYWNrZ3JvdW5kIDxyZWN0PiBhbmQgaGlkZSB0aGUgPHVzZT4uICovCiAgICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgICAgZmlsbC1vcGFjaXR5OiAwLjE1OwogICAgICAgIHN0cm9rZTogaHNsKDAsIDAlLCA3MCUpOwogICAgICAgIHN0cm9rZS1vcGFjaXR5OiAxOwogICAgICB9CiAgICAgIC5zZXJpZXMuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gdXNlIHsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC8qKgogKiBUT0RPOiBTaW1wbGlmeSB0aGlzIGJ5IGFwcGx5aW5nIGEgc3RhYmxlIGNsYXNzIG5hbWUgdG8gYWxsIDxnPgogKiBlbGVtZW50cyB0aGF0IGN1cnJlbnRseSBoYXZlIGVpdGhlciB0aGUgbm9kZXNoYXBlIG9yIGFubm90YXRpb24tbm9kZSBjbGFzc2VzLgogKi8KICAgICAgLnNlcmllcyA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAgIC5zZXJpZXMgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgICBzdHJva2U6ICNjY2M7CiAgICAgIH0KICAgICAgLnNlcmllcy5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAgIC5zZXJpZXMuaGlnaGxpZ2h0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICAgIH0KICAgICAgLnNlcmllcy5zZWxlY3RlZCA+IC5ub2Rlc2hhcGUgPiB1c2UsCiAgICAgIC5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgICBzdHJva2U6IHJlZDsKICAgICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICAgIH0KCiAgICAgIC5zZXJpZXMuc2VsZWN0ZWQgPiAubm9kZXNoYXBlID4gcmVjdCB7CiAgICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgICB9CgogICAgICAuYW5ub3RhdGlvbi5zZXJpZXMuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gdXNlIHsKICAgICAgICBzdHJva2U6IHJlZDsKICAgICAgICBzdHJva2Utd2lkdGg6IDI7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBCcmlkZ2UgTm9kZSAtLS0gKi8KICAgICAgLmJyaWRnZSA+IC5ub2Rlc2hhcGUgPiByZWN0IHsKICAgICAgICBzdHJva2U6ICNmMGY7CiAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBTdHJ1Y3R1cmFsIEVsZW1lbnRzIC0tLSAqLwogICAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUuc3RydWN0dXJhbCB7CiAgICAgICAgc3Ryb2tlOiAjZjBmOwogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiBSZWZlcmVuY2UgRWRnZSAqLwogICAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUucmVmZXJlbmNlZWRnZSB7CiAgICAgICAgc3Ryb2tlOiAjZmZiNzRkOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBTZXJpZXMgTm9kZXMgLS0tICovCgogICAgICAvKiBIaWRlIHRoZSByZWN0IGZvciBhIHNlcmllcycgYW5ub3RhdGlvbi4gKi8KICAgICAgLnNlcmllcyA+IC5hbm5vdGF0aW9uLW5vZGUgPiByZWN0IHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CgogICAgICAvKiAtLS0gTm9kZSBsYWJlbCAtLS0gKi8KCiAgICAgIC5ub2RlID4gdGV4dC5ub2RlbGFiZWwgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBmaWxsOiAjNDQ0OwogICAgICB9CgogICAgICAubWV0YS5leHBhbmRlZCA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDlweDsKICAgICAgfQoKICAgICAgLnNlcmllcyA+IHRleHQubm9kZWxhYmVsIHsKICAgICAgICBmb250LXNpemU6IDhweDsKICAgICAgfQoKICAgICAgLm9wID4gdGV4dC5ub2RlbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogNnB4OwogICAgICB9CgogICAgICAuYnJpZGdlID4gdGV4dC5ub2RlbGFiZWwgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC5ub2RlLm1ldGEuZXhwYW5kZWQgPiB0ZXh0Lm5vZGVsYWJlbCB7CiAgICAgICAgY3Vyc29yOiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC5hbm5vdGF0aW9uLm1ldGEuaGlnaGxpZ2h0ZWQgPiB0ZXh0LmFubm90YXRpb24tbGFiZWwgewogICAgICAgIGZpbGw6ICM1MGEzZjc7CiAgICAgIH0KCiAgICAgIC5hbm5vdGF0aW9uLm1ldGEuc2VsZWN0ZWQgPiB0ZXh0LmFubm90YXRpb24tbGFiZWwgewogICAgICAgIGZpbGw6ICM0Mjg1ZjQ7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBBbm5vdGF0aW9uIC0tLSAqLwoKICAgICAgLyogb25seSBhcHBsaWVkIGZvciBhbm5vdGF0aW9ucyB0aGF0IGFyZSBub3Qgc3VtbWFyeSBvciBjb25zdGFudC4KKC5zdW1tYXJ5LCAuY29uc3RhbnQgZ2V0cyBvdmVycmlkZGVuIGJlbG93KSAqLwogICAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLW5vZGUgPiAqIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDAuNTsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiAxLCAxOwogICAgICB9CgogICAgICAuYW5ub3RhdGlvbi5zdW1tYXJ5ID4gLmFubm90YXRpb24tbm9kZSA+ICosCiAgICAgIC5hbm5vdGF0aW9uLmNvbnN0YW50ID4gLmFubm90YXRpb24tbm9kZSA+ICogewogICAgICAgIHN0cm9rZS13aWR0aDogMTsKICAgICAgICBzdHJva2UtZGFzaGFycmF5OiBub25lOwogICAgICB9CgogICAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWVkZ2UgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjYWFhOwogICAgICAgIHN0cm9rZS13aWR0aDogMC41OwogICAgICAgIG1hcmtlci1lbmQ6IHVybCgjYW5ub3RhdGlvbi1hcnJvd2hlYWQpOwogICAgICB9CgogICAgICAuZmFkZWQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlIHsKICAgICAgICBtYXJrZXItZW5kOiB1cmwoI2Fubm90YXRpb24tYXJyb3doZWFkLWZhZGVkKTsKICAgICAgfQoKICAgICAgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLnJlZmxpbmUgewogICAgICAgIG1hcmtlci1zdGFydDogdXJsKCNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQpOwogICAgICB9CgogICAgICAuZmFkZWQgLmFubm90YXRpb24gPiAuYW5ub3RhdGlvbi1lZGdlLnJlZmxpbmUgewogICAgICAgIG1hcmtlci1zdGFydDogdXJsKCNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQpOwogICAgICB9CgogICAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWNvbnRyb2wtZWRnZSB7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMSwgMTsKICAgICAgfQoKICAgICAgI2Fubm90YXRpb24tYXJyb3doZWFkIHsKICAgICAgICBmaWxsOiAjYWFhOwogICAgICB9CgogICAgICAjYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQgewogICAgICAgIGZpbGw6ICNlMGQ0YjM7CiAgICAgIH0KCiAgICAgICNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQgewogICAgICAgIGZpbGw6ICNhYWE7CiAgICAgIH0KCiAgICAgICNyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQtZmFkZWQgewogICAgICAgIGZpbGw6ICNlMGQ0YjM7CiAgICAgIH0KCiAgICAgIC5hbm5vdGF0aW9uID4gLmFubm90YXRpb24tbGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogNXB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAuYW5ub3RhdGlvbiA+IC5hbm5vdGF0aW9uLWxhYmVsLmFubm90YXRpb24tZWxsaXBzaXMgewogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgLyogSGlkZSBhbm5vdGF0aW9ucyBvbiBleHBhbmRlZCBtZXRhIG5vZGVzIHNpbmNlIHRoZXkncmUgcmVkdW5kYW50LiAqLwogICAgICAuZXhwYW5kZWQgPiAuaW4tYW5ub3RhdGlvbnMsCiAgICAgIC5leHBhbmRlZCA+IC5vdXQtYW5ub3RhdGlvbnMgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBBbm5vdGF0aW9uOiBDb25zdGFudCAtLS0gKi8KCiAgICAgIC5jb25zdGFudCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjODQ4NDg0OwogICAgICB9CgogICAgICAuY29uc3RhbnQuc2VsZWN0ZWQgPiAuYW5ub3RhdGlvbi1ub2RlID4gZWxsaXBzZSB7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiByZWQ7CiAgICAgIH0KCiAgICAgIC5jb25zdGFudC5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgICAgfQoKICAgICAgLyogLS0tIEFubm90YXRpb246IFN1bW1hcnkgLS0tICovCgogICAgICAuc3VtbWFyeSA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZmlsbDogI2RiNDQzNzsKICAgICAgICBzdHJva2U6ICNkYjQ0Mzc7CiAgICAgIH0KCiAgICAgIC5zdW1tYXJ5LnNlbGVjdGVkID4gLmFubm90YXRpb24tbm9kZSA+IGVsbGlwc2UgewogICAgICAgIGZpbGw6ICNhNTI3MTQ7CiAgICAgICAgc3Ryb2tlOiAjYTUyNzE0OwogICAgICB9CgogICAgICAuc3VtbWFyeS5oaWdobGlnaHRlZCA+IC5hbm5vdGF0aW9uLW5vZGUgPiBlbGxpcHNlIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgICAgfQoKICAgICAgLyogLS0tIEVkZ2UgLS0tICovCgogICAgICAuZWRnZSA+IHBhdGguZWRnZWxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiAjYmJiOwogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2Utd2lkdGg6IDAuNzU7CiAgICAgIH0KCiAgICAgIC5lZGdlIC5zZWxlY3RhYmxlZWRnZSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CgogICAgICAuc2VsZWN0ZWRlZGdlID4gcGF0aC5lZGdlbGluZSB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICAgIHN0cm9rZTogI2YwMDsKICAgICAgfQoKICAgICAgLmVkZ2Uuc2VsZWN0ZWRlZGdlIHRleHQgewogICAgICAgIGZpbGw6ICMwMDA7CiAgICAgIH0KCiAgICAgIC8qIExhYmVscyBzaG93aW5nIHRlbnNvciBzaGFwZXMgb24gZWRnZXMgKi8KICAgICAgLmVkZ2UgPiB0ZXh0IHsKICAgICAgICBmb250LXNpemU6IDMuNXB4OwogICAgICAgIGZpbGw6ICM2NjY7CiAgICAgIH0KCiAgICAgIC5kYXRhZmxvdy1hcnJvd2hlYWQgewogICAgICAgIGZpbGw6ICNiYmI7CiAgICAgIH0KCiAgICAgIC5yZWZlcmVuY2UtYXJyb3doZWFkIHsKICAgICAgICBmaWxsOiAjZmZiNzRkOwogICAgICB9CgogICAgICAuc2VsZWN0ZWQtYXJyb3doZWFkIHsKICAgICAgICBmaWxsOiAjZjAwOwogICAgICB9CgogICAgICAuZWRnZSAuY29udHJvbC1kZXAgewogICAgICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7CiAgICAgIH0KCiAgICAgIC8qIC0tLSBHcm91cCBub2RlIGV4cGFuZC9jb2xsYXBzZSBidXR0b24gLS0tICovCgogICAgICAvKiBIaWRlcyBleHBhbmQvY29sbGFwc2UgYnV0dG9ucyB3aGVuIGEgbm9kZSBpc24ndCBleHBhbmRlZCBvciBoaWdobGlnaHRlZC4gVXNpbmcKICAgaW5jcmVkaWJseSBzbWFsbCBvcGFjaXR5IHNvIHRoYXQgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgPGc+IHBhcmVudCBzdGlsbCB0YWtlcwogICB0aGlzIGNvbnRhaW5lciBpbnRvIGFjY291bnQgZXZlbiB3aGVuIGl0IGlzbid0IHZpc2libGUgKi8KICAgICAgLm5vZGU6bm90KC5oaWdobGlnaHRlZCk6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciB7CiAgICAgICAgb3BhY2l0eTogMC4wMTsKICAgICAgfQogICAgICAubm9kZS5oaWdobGlnaHRlZCA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLmJ1dHRvbmNpcmNsZSB7CiAgICAgICAgZmlsbDogI2U3ODExZDsKICAgICAgfQogICAgICAuYnV0dG9uY2lyY2xlOmhvdmVyIHsKICAgICAgICBmaWxsOiAjYjk2NzE3OwogICAgICB9CiAgICAgIC5leHBhbmRidXR0b24sCiAgICAgIC5jb2xsYXBzZWJ1dHRvbiB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgfQogICAgICAvKiBEbyBub3QgbGV0IHRoZSBwYXRoIGVsZW1lbnRzIGluIHRoZSBidXR0b24gdGFrZSBwb2ludGVyIGZvY3VzICovCiAgICAgIC5ub2RlID4gLm5vZGVzaGFwZSA+IC5idXR0b25jb250YWluZXIgPiAuZXhwYW5kYnV0dG9uLAogICAgICAubm9kZSA+IC5ub2Rlc2hhcGUgPiAuYnV0dG9uY29udGFpbmVyID4gLmNvbGxhcHNlYnV0dG9uIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgfQogICAgICAvKiBPbmx5IHNob3cgdGhlIGV4cGFuZCBidXR0b24gd2hlbiBhIG5vZGUgaXMgY29sbGFwc2VkIGFuZCBvbmx5IHNob3cgdGhlCiAgIGNvbGxhcHNlIGJ1dHRvbiB3aGVuIGEgbm9kZSBpcyBleHBhbmRlZC4gKi8KICAgICAgLm5vZGUuZXhwYW5kZWQgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5leHBhbmRidXR0b24gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLm5vZGU6bm90KC5leHBhbmRlZCkgPiAubm9kZXNoYXBlID4gLmJ1dHRvbmNvbnRhaW5lciA+IC5jb2xsYXBzZWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLXN0YXRzIHsKICAgICAgICBmb250LXNpemU6IDRweDsKICAgICAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwgcmVjdCB7CiAgICAgICAgZmlsdGVyOiB1cmwoI2hlYWx0aC1waWxsLXNoYWRvdyk7CiAgICAgICAgcng6IDM7CiAgICAgICAgcnk6IDM7CiAgICAgIH0KCiAgICAgIC50aXRsZUNvbnRhaW5lciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHRvcDogMjBweDsKICAgICAgfQoKICAgICAgLnRpdGxlLAogICAgICAuYXV4VGl0bGUsCiAgICAgIC5mdW5jdGlvbkxpYnJhcnlUaXRsZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CgogICAgICAjbWluaW1hcCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAyMHB4OwogICAgICAgIGJvdHRvbTogMjBweDsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB1bCB7CiAgICAgICAgbGlzdC1zdHlsZS10eXBlOiBub25lOwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB1bCBsaSB7CiAgICAgICAgcGFkZGluZzogNHB4IDE2cHg7CiAgICAgIH0KCiAgICAgIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0idGl0bGVDb250YWluZXIiPgogICAgICA8ZGl2IGlkPSJ0aXRsZSIgY2xhc3M9InRpdGxlIj5NYWluIEdyYXBoPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImF1eFRpdGxlIiBjbGFzcz0iYXV4VGl0bGUiPkF1eGlsaWFyeSBOb2RlczwvZGl2PgogICAgICA8ZGl2IGlkPSJmdW5jdGlvbkxpYnJhcnlUaXRsZSIgY2xhc3M9ImZ1bmN0aW9uTGlicmFyeVRpdGxlIj4KICAgICAgICBGdW5jdGlvbnMKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzdmcgaWQ9InN2ZyI+CiAgICAgIDxkZWZzPgogICAgICAgIAogICAgICAgIDxwYXRoIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXBhdGgiIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIgLz4KICAgICAgICA8bWFya2VyIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIiBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1zbWFsbCIgdmlld2JveD0iMCAwIDEwIDEwIiBtYXJrZXJ3aWR0aD0iNSIgbWFya2VyaGVpZ2h0PSI1IiByZWZ4PSIyIiByZWZ5PSI1IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIgbWFya2VydW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIiBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1tZWRpdW0iIHZpZXdib3g9IjAgMCAxMCAxMCIgbWFya2Vyd2lkdGg9IjEzIiBtYXJrZXJoZWlnaHQ9IjEzIiByZWZ4PSIyIiByZWZ5PSI1IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIgbWFya2VydW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3JlZmVyZW5jZS1hcnJvd2hlYWQtcGF0aCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGNsYXNzPSJyZWZlcmVuY2UtYXJyb3doZWFkIiBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sYXJnZSIgdmlld2JveD0iMCAwIDEwIDEwIiBtYXJrZXJ3aWR0aD0iMTYiIG1hcmtlcmhlaWdodD0iMTYiIHJlZng9IjIiIHJlZnk9IjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIiBtYXJrZXJ1bml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIiAvPgogICAgICAgIDwvbWFya2VyPgogICAgICAgIDxtYXJrZXIgY2xhc3M9InJlZmVyZW5jZS1hcnJvd2hlYWQiIGlkPSJyZWZlcmVuY2UtYXJyb3doZWFkLXhsYXJnZSIgdmlld2JveD0iMCAwIDEwIDEwIiBtYXJrZXJ3aWR0aD0iMjAiIG1hcmtlcmhlaWdodD0iMjAiIHJlZng9IjIiIHJlZnk9IjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIiBtYXJrZXJ1bml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcmVmZXJlbmNlLWFycm93aGVhZC1wYXRoIiAvPgogICAgICAgIDwvbWFya2VyPgoKICAgICAgICAKICAgICAgICA8cGF0aCBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLXBhdGgiIGQ9Ik0gMCwwIEwgMTAsNSBMIDAsMTAgQyAzLDcgMywzIDAsMCIgLz4KICAgICAgICA8bWFya2VyIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtc21hbGwiIHZpZXdib3g9IjAgMCAxMCAxMCIgbWFya2Vyd2lkdGg9IjUiIG1hcmtlcmhlaWdodD0iNSIgcmVmeD0iMiIgcmVmeT0iNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiIG1hcmtlcnVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbWVkaXVtIiB2aWV3Ym94PSIwIDAgMTAgMTAiIG1hcmtlcndpZHRoPSIxMyIgbWFya2VyaGVpZ2h0PSIxMyIgcmVmeD0iMiIgcmVmeT0iNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiIG1hcmtlcnVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNkYXRhZmxvdy1hcnJvd2hlYWQtcGF0aCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGNsYXNzPSJkYXRhZmxvdy1hcnJvd2hlYWQiIGlkPSJkYXRhZmxvdy1hcnJvd2hlYWQtbGFyZ2UiIHZpZXdib3g9IjAgMCAxMCAxMCIgbWFya2Vyd2lkdGg9IjE2IiBtYXJrZXJoZWlnaHQ9IjE2IiByZWZ4PSIyIiByZWZ5PSI1IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIgbWFya2VydW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIiAvPgogICAgICAgIDwvbWFya2VyPgogICAgICAgIDxtYXJrZXIgY2xhc3M9ImRhdGFmbG93LWFycm93aGVhZCIgaWQ9ImRhdGFmbG93LWFycm93aGVhZC14bGFyZ2UiIHZpZXdib3g9IjAgMCAxMCAxMCIgbWFya2Vyd2lkdGg9IjIwIiBtYXJrZXJoZWlnaHQ9IjIwIiByZWZ4PSIyIiByZWZ5PSI1IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSIgbWFya2VydW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI2RhdGFmbG93LWFycm93aGVhZC1wYXRoIiAvPgogICAgICAgIDwvbWFya2VyPgoKICAgICAgICAKICAgICAgICA8bWFya2VyIGlkPSJhbm5vdGF0aW9uLWFycm93aGVhZCIgbWFya2Vyd2lkdGg9IjUiIG1hcmtlcmhlaWdodD0iNSIgcmVmeD0iNSIgcmVmeT0iMi41IiBvcmllbnQ9ImF1dG8iPgogICAgICAgICAgPHBhdGggZD0iTSAwLDAgTCA1LDIuNSBMIDAsNSBMIDAsMCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGlkPSJhbm5vdGF0aW9uLWFycm93aGVhZC1mYWRlZCIgbWFya2Vyd2lkdGg9IjUiIG1hcmtlcmhlaWdodD0iNSIgcmVmeD0iNSIgcmVmeT0iMi41IiBvcmllbnQ9ImF1dG8iPgogICAgICAgICAgPHBhdGggZD0iTSAwLDAgTCA1LDIuNSBMIDAsNSBMIDAsMCIgLz4KICAgICAgICA8L21hcmtlcj4KICAgICAgICA8bWFya2VyIGlkPSJyZWYtYW5ub3RhdGlvbi1hcnJvd2hlYWQiIG1hcmtlcndpZHRoPSI1IiBtYXJrZXJoZWlnaHQ9IjUiIHJlZng9IjAiIHJlZnk9IjIuNSIgb3JpZW50PSJhdXRvIj4KICAgICAgICAgIDxwYXRoIGQ9Ik0gNSwwIEwgMCwyLjUgTCA1LDUgTCA1LDAiIC8+CiAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgPG1hcmtlciBpZD0icmVmLWFubm90YXRpb24tYXJyb3doZWFkLWZhZGVkIiBtYXJrZXJ3aWR0aD0iNSIgbWFya2VyaGVpZ2h0PSI1IiByZWZ4PSIwIiByZWZ5PSIyLjUiIG9yaWVudD0iYXV0byI+CiAgICAgICAgICA8cGF0aCBkPSJNIDUsMCBMIDAsMi41IEwgNSw1IEwgNSwwIiAvPgogICAgICAgIDwvbWFya2VyPgogICAgICAgIAogICAgICAgIDxlbGxpcHNlIGlkPSJvcC1ub2RlLXN0YW1wIiByeD0iNy41IiByeT0iMyIgc3Ryb2tlPSJpbmhlcml0IiBmaWxsPSJpbmhlcml0IiAvPgogICAgICAgIAogICAgICAgIDxlbGxpcHNlIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHJ4PSI1IiByeT0iMiIgc3Ryb2tlPSJpbmhlcml0IiBmaWxsPSJpbmhlcml0IiAvPgogICAgICAgIAogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSIgLz4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjYiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSIzIiAvPgogICAgICAgIDwvZz4KICAgICAgICAKICAgICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCIgLz4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjQiIC8+CiAgICAgICAgPC9nPgogICAgICAgIAogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtYW5ub3RhdGlvbi1zdGFtcCI+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjkiIHk9IjIiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjciIHk9IjIiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHg9IjUiIHk9IjIiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxzdmcgaWQ9InN1bW1hcnktaWNvbiIgZmlsbD0iIzg0ODQ4NCIgaGVpZ2h0PSIxMiIgdmlld2JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMTIiPgogICAgICAgICAgPHBhdGggZD0iTTE5IDNINWMtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yek05IDE3SDd2LTdoMnY3em00IDBoLTJWN2gydjEwem00IDBoLTJ2LTRoMnY0eiIgLz4KICAgICAgICA8L3N2Zz4KCiAgICAgICAgCiAgICAgICAgPHBhdHRlcm4gaWQ9InJlY3RIYXRjaCIgcGF0dGVybnRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiIHdpZHRoPSI1IiBoZWlnaHQ9IjUiIHBhdHRlcm51bml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiIC8+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIDxwYXR0ZXJuIGlkPSJlbGxpcHNlSGF0Y2giIHBhdHRlcm50cmFuc2Zvcm09InJvdGF0ZSg0NSAwIDApIiB3aWR0aD0iMiIgaGVpZ2h0PSIyIiBwYXR0ZXJudW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgICAgIDxsaW5lIHgxPSIwIiB5MT0iMCIgeDI9IjAiIHkyPSIyIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOiAxIiAvPgogICAgICAgIDwvcGF0dGVybj4KCiAgICAgICAgCiAgICAgICAgPGZpbHRlciBpZD0iaGVhbHRoLXBpbGwtc2hhZG93IiB4PSItNDAlIiB5PSItNDAlIiB3aWR0aD0iMTgwJSIgaGVpZ2h0PSIxODAlIj4KICAgICAgICAgIDxmZWdhdXNzaWFuYmx1ciBpbj0iU291cmNlQWxwaGEiIHN0ZERldmlhdGlvbj0iMC44IiAvPgogICAgICAgICAgPGZlb2Zmc2V0IGR4PSIwIiBkeT0iMCIgcmVzdWx0PSJvZmZzZXRibHVyIiAvPgogICAgICAgICAgPGZlZmxvb2QgZmxvb2QtY29sb3I9IiMwMDAwMDAiIC8+CiAgICAgICAgICA8ZmVjb21wb3NpdGUgaW4yPSJvZmZzZXRibHVyIiBvcGVyYXRvcj0iaW4iIC8+CiAgICAgICAgICA8ZmVtZXJnZT4KICAgICAgICAgICAgPGZlbWVyZ2Vub2RlIC8+CiAgICAgICAgICAgIDxmZW1lcmdlbm9kZSBpbj0iU291cmNlR3JhcGhpYyIgLz4KICAgICAgICAgIDwvZmVtZXJnZT4KICAgICAgICA8L2ZpbHRlcj4KICAgICAgPC9kZWZzPgogICAgICAKICAgICAgPHJlY3QgZmlsbD0id2hpdGUiIHdpZHRoPSIxMDAwMCIgaGVpZ2h0PSIxMDAwMCI+PC9yZWN0PgogICAgICA8ZyBpZD0icm9vdCI+PC9nPgogICAgPC9zdmc+CiAgICA8dGYtZ3JhcGgtbWluaW1hcCBpZD0ibWluaW1hcCI+PC90Zi1ncmFwaC1taW5pbWFwPgogICAgPGRpdiBpZD0iY29udGV4dE1lbnUiIGNsYXNzPSJjb250ZXh0LW1lbnUiPjwvZGl2PgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgo8ZG9tLW1vZHVsZSBpZD0idGYtZ3JhcGgiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICAgIH0KCiAgICAgIC52ZXJ0aWNhbCB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIEBhcHBseSAtLWxheW91dC12ZXJ0aWNhbDsKICAgICAgfQoKICAgICAgLmF1dG8gewogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICB9CgogICAgICBwYXBlci1idXR0b24gewogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgPGRpdiBjbGFzcz0idmVydGljYWwiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1t0aXRsZV1dIj4KICAgICAgICAgIDxoMj5bW3RpdGxlXV08L2gyPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRmLWdyYXBoLXNjZW5lIGlkPSJzY2VuZSIgY2xhc3M9ImF1dG8iIHJlbmRlci1oaWVyYXJjaHk9IltbcmVuZGVySGllcmFyY2h5XV0iIGhpZ2hsaWdodGVkLW5vZGU9IltbX2dldFZpc2libGUoaGlnaGxpZ2h0ZWROb2RlKV1dIiBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IiBzZWxlY3RlZC1lZGdlPSJ7e3NlbGVjdGVkRWRnZX19IiBjb2xvci1ieT0iW1tjb2xvckJ5XV0iIHByb2dyZXNzPSJbW3Byb2dyZXNzXV0iIG5vZGUtY29udGV4dC1tZW51LWl0ZW1zPSJbW25vZGVDb250ZXh0TWVudUl0ZW1zXV0iIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIiB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSI+PC90Zi1ncmFwaC1zY2VuZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRlYnVnZ2VyLWNvbnRpbnVlLWRpYWxvZyI+CiAgPHRlbXBsYXRlPgogICAgPHBhcGVyLWJ1dHRvbiByYWlzZWQgY2xhc3M9ImNvbnRpbnVlLWJ1dHRvbiIgb24tY2xpY2s9Il9jb250aW51ZUJ1dHRvbkNhbGxiYWNrIj4KICAgICAgPHNwYW4+W1tfY29udGludWVCdXR0b25UZXh0XV08L3NwYW4+CiAgICA8L3BhcGVyLWJ1dHRvbj4KICAgIDxwYXBlci1kaWFsb2cgd2l0aC1iYWNrZHJvcCBpZD0iY29udGludWVEaWFsb2ciPgogICAgICA8aDI+Q29udGludWUuLi48L2gyPgogICAgICA8ZGl2IGNsYXNzPSJjb250aW51ZS10by10eXBlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250aW51ZS10by10eXBlLW5hbWUiPgogICAgICAgICAgT3ZlciBTZXNzaW9uIFJ1bnM6CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHBhcGVyLWlucHV0IGlkPSJjb250aW51ZU51bSIgY2xhc3M9ImlucHV0LWJveCIgbGFiZWw9Ik51bWJlciBvZiBTZXNzaW9uIFJ1bnMgKGluY2x1ZGluZyB0aGUgY3VycmVudCBvbmUpOiIgYWx3YXlzLWZsb2F0LWxhYmVsIHR5cGU9Im51bWJlciIgbWluPSIxIiBzdGVwPSIxIiB2YWx1ZT0ie3tjb250aW51ZU51bX19Ij48L3BhcGVyLWlucHV0PgogICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBjbGFzcz0iZ28tYnV0dG9uIiBpY29uPSJhcnJvdy1mb3J3YXJkIiB0aXRsZT0iU2Vzc2lvbiBSdW5zIEdvIiBvbi10YXA9Il9zZXNzaW9uUnVuR29CdXR0b25DYWxsYmFjayI+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRpbnVlLXRvLXR5cGUiPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRpbnVlLXRvLXR5cGUtbmFtZSI+CiAgICAgICAgICBUaWxsIENvbmRpdGlvbiBNZXQgYnkgV2F0Y2hlZCBUZW5zb3IKICAgICAgICA8L2Rpdj4KICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBpZD0idGVuc29yQ29uZGl0aW9uRHJvcGRvd24iIGNsYXNzPSJpbnB1dC1ib3giIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIiBsYWJlbD0iVGVuc29yIENvbmRpdGlvbiIgc2VsZWN0ZWQtaXRlbS1sYWJlbD0ie3tfc2VsZWN0ZWRUZW5zb3JDb25kaXRpb259fSI+CiAgICAgICAgICAKICAgICAgICAgIDxwYXBlci1saXN0Ym94IGlkPSJ0ZW5zb3JDb25kaXRpb25NZW51IiBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5Db250YWlucyArLy3iiJ4gb3IgTmFOPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+Q29udGFpbnMgKy8t4oiePC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+Q29udGFpbnMgTmFOPC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+TWF4ICZndDs8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5NYXggJmx0OzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gbm8tbGFiZWwtZmxvYXQ9InRydWUiPk1pbiAmZ3Q7PC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+TWluICZsdDs8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5NYXggLSBNaW4gJmd0OzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gbm8tbGFiZWwtZmxvYXQ9InRydWUiPk1heCAtIE1pbiAmbHQ7PC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+TWVhbiAmZ3Q7PC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+TWVhbiAmbHQ7PC9wYXBlci1pdGVtPgogICAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+U3RhbmRhcmQgZGV2aWF0aW9uICZndDs8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5TdGFuZGFyZCBkZXZpYXRpb24gJmx0OzwvcGFwZXItaXRlbT4KICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGNsYXNzPSJnby1idXR0b24iIGljb249ImFycm93LWZvcndhcmQiIHRpdGxlPSJUZW5zb3IgQ29uZGl0aW9uIEdvIiBvbi10YXA9Il90ZW5zb3JDb250aW51ZUdvQnV0dG9uQ2FsbGJhY2siPgogICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgPHBhcGVyLWlucHV0IGlkPSJyZWYtdmFsdWUiIGNsYXNzPSJpbnB1dC1ib3giIGxhYmVsPSJSZWZlcmVuY2UgdmFsdWUgdG8gY29tcGFyZSB0byIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0ie3tfdGVuc29yQ29uZGl0aW9uUmVmVmFsdWV9fSIgaGlkZGVuPSJbW19pc1JlZlZhbHVlSW5wdXRIaWRkZW5dXSI+CiAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgPC9kaXY+CiAgICA8L3BhcGVyLWRpYWxvZz4KICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IC5jb250aW51ZS10by10eXBlLW5hbWUgewogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CiAgICAgIDpob3N0IHBhcGVyLWRpYWxvZyB7CiAgICAgICAgd2lkdGg6IDM2dnc7CiAgICAgIH0KICAgICAgOmhvc3QgLmlucHV0LWJveCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogODAlOwogICAgICAgIGZvbnQtc2l6ZTogMTEwJTsKICAgICAgfQogICAgICA6aG9zdCAuZ28tYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgd2lkdGg6IDE1JTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRlYnVnZ2VyLWluaXRpYWwtZGlhbG9nIj4KICA8dGVtcGxhdGU+CiAgICAKICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfb3Blbl1dIj4KICAgICAgPGRpdiBpZD0iZGFzaGJvYXJkLWJhY2tkcm9wIj48L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8cGFwZXItZGlhbG9nIGlkPSJkaWFsb2ciIG5vLWNhbmNlbC1vbi1vdXRzaWRlLWNsaWNrIG5vLWNhbmNlbC1vbi1lc2Mta2V5IG9wZW5lZD0ie3tfb3Blbn19Ij4KICAgICAgPGgyIGlkPSJkaWFsb2ctdGl0bGUiPltbX3RpdGxlXV08L2gyPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2hhc0N1c3RvbU1lc3NhZ2VdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY3VzdG9tLW1lc3NhZ2UiPltbX2N1c3RvbU1lc3NhZ2VdXTwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9oYXNDdXN0b21NZXNzYWdlXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZXhhbXBsZSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2RlLWV4YW1wbGUtc2VjdGlvbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZXhhbXBsZS1zZWN0aW9uLXRpdGxlIj4KICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9hcGlfZG9jcy9weXRob24vdGYvU2Vzc2lvbiIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+dGYuU2Vzc2lvbjwvYT46CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8cHJlIGNsYXNzPSJjb2RlLXNuaXBwZXQiPmltcG9ydCB0ZW5zb3JmbG93IGFzIHRmCmZyb20gdGVuc29yZmxvdy5weXRob24gaW1wb3J0IGRlYnVnIGFzIHRmX2RlYnVnCgpzZXNzID0gdGYuU2Vzc2lvbigpCnNlc3MgPSB0Zl9kZWJ1Zy5UZW5zb3JCb2FyZERlYnVnV3JhcHBlclNlc3Npb24oc2VzcywgIltbX2hvc3RdXTpbW19wb3J0XV0iKQpzZXNzLnJ1bihteV9mZXRjaGVzKQogICAgICAgICAgPC9wcmU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZXhhbXBsZS1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1leGFtcGxlLXNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL3Byb2dyYW1tZXJzX2d1aWRlL2VzdGltYXRvcnMiIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPkVzdGltYXRvcjwvYT4KICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvYXBpX2RvY3MvcHl0aG9uL3RmL3RyYWluL01vbml0b3JlZFNlc3Npb24iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPk1vbml0b3JlZFNlc3Npb248L2E+OgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHByZSBjbGFzcz0iY29kZS1zbmlwcGV0Ij5pbXBvcnQgdGVuc29yZmxvdyBhcyB0Zgpmcm9tIHRlbnNvcmZsb3cucHl0aG9uIGltcG9ydCBkZWJ1ZyBhcyB0Zl9kZWJ1ZwoKaG9vayA9IHRmX2RlYnVnLlRlbnNvckJvYXJkRGVidWdIb29rKCJbW19ob3N0XV06W1tfcG9ydF1dIikKbXlfZXN0aW1hdG9yLmZpdCh4PXhfZGF0YSwgeT15X2RhdGEsIHN0ZXBzPTEwMDAsIG1vbml0b3JzPVtob29rXSkKICAgICAgICAgICAgPC9wcmU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNvZGUtZXhhbXBsZS1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29kZS1leGFtcGxlLXNlY3Rpb24tdGl0bGUiPgogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8va2VyYXMuaW8vbW9kZWxzL21vZGVsLyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+S2VyYXMgTW9kZWw8L2E+OgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHByZSBjbGFzcz0iY29kZS1zbmlwcGV0Ij5pbXBvcnQgdGVuc29yZmxvdyBhcyB0Zgpmcm9tIHRlbnNvcmZsb3cucHl0aG9uIGltcG9ydCBkZWJ1ZyBhcyB0Zl9kZWJ1ZwppbXBvcnQga2VyYXMKCmtlcmFzLmJhY2tlbmQuc2V0X3Nlc3Npb24oCiAgICB0Zl9kZWJ1Zy5UZW5zb3JCb2FyZERlYnVnV3JhcHBlclNlc3Npb24odGYuU2Vzc2lvbigpLCAiW1tfaG9zdF1dOltbX3BvcnRdXSIpKQojIERlZmluZSB5b3VyIGtlcmFzIG1vZGVsLCBjYWxsZWQgIm1vZGVsIi4KbW9kZWwuZml0KC4uLikKICAgICAgICAgICAgPC9wcmU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvcGFwZXItZGlhbG9nPgogICAgPHN0eWxlPgogICAgICAvKiogV2UgcmVseSBvbiBhIHNlcGFyYXRlIGBfaGlkZGVuYCBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRpcmVjdGx5IG1ha2luZyB1c2UKICAgICAgICAgIG9mIHRoZSBgX29wZW5gIGF0dHJpYnV0ZSBiZWNhdXNlIHRoaXMgQ1NTIHNwZWNpZmljYXRpb24gbWF5IHN0cmFuZ2VseQogICAgICAgICAgYWZmZWN0IG90aGVyIGVsZW1lbnRzIHRocm91Z2hvdXQgVGVuc29yQm9hcmQuIFNlZSAjODk5LiAqLwogICAgICA6aG9zdChbX2hpZGRlbl0pIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICAgIDpob3N0LAogICAgICAjZGFzaGJvYXJkLWJhY2tkcm9wIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9CgogICAgICAjZGFzaGJvYXJkLWJhY2tkcm9wIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7CiAgICAgIH0KCiAgICAgIC5jb2RlLWV4YW1wbGUgewogICAgICAgIG1hcmdpbjogMTBweDsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICB9CiAgICAgIC5jb2RlLWV4YW1wbGUtc2VjdGlvbiB7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7CiAgICAgIH0KICAgICAgLmNvZGUtZXhhbXBsZS1zZWN0aW9uLXRpdGxlIHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAuY29kZS1zbmlwcGV0IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDFlbTsKICAgICAgfQoKICAgICAgI2RpYWxvZy10aXRsZSB7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE1cHg7CiAgICAgIH0KCiAgICAgIC5jdXN0b20tbWVzc2FnZSB7CiAgICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtZGVidWdnZXItcmVzaXplciI+CiAgPHRlbXBsYXRlPgogICAgPGRpdiBjbGFzcz0iYmFycyI+CiAgICAgIDxkaXYgY2xhc3M9ImJhcnMtcm90YXRvciI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImJhcnMtdGV4dCI+fCB8PC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdChbX3Jlc2l6ZXItaWRlbnRpZmllcl0pIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYmFja2dyb3VuZDogI2NjYzsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW2lzLWhvcml6b250YWxdKSB7CiAgICAgICAgY3Vyc29yOiByb3ctcmVzaXplOwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9CgogICAgICA6aG9zdChbX2lzLXZlcnRpY2FsXSkgewogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICByaWdodDogLTE1cHg7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICB3aWR0aDogMTBweDsKICAgICAgfQoKICAgICAgLmJhcnMgewogICAgICAgIHdpZHRoOiA4MCU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgZm9udC1zaXplOiA1cHg7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgIH0KCiAgICAgIC8qKiBUaGlzIGJsb2NrIHByZXZlbnRzIHRoZSBiYXJzIHJvdGF0b3IgZnJvbSBoYXZpbmcgYSBoZWlnaHQgdGhhdCBpcwogICAgICAgICAgdGhlIGVudGlyZSB2aWV3cG9ydCwgdGh1cyBvY2NsdWRpbmcgaXQgYW5kIGdpdmluZyBpdCBhbiB1bmRlc2lyZWQgY3Vyc29yCiAgICAgICAgICB2YWx1ZS4gKi8KICAgICAgLmJhcnMtcm90YXRvciB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICA6aG9zdChbaXMtaG9yaXpvbnRhbF0pIC5iYXJzLXJvdGF0b3IgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTsKICAgICAgfQoKICAgICAgLmJhcnMtdGV4dCB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVkoMTUpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1vcC1zZWxlY3RvciI+CiAgPHRlbXBsYXRlPgogICAgPGRpdj4KICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUgaWQ9ImZpbHRlci1tb2RlIiBuby1sYWJlbC1mbG9hdD0idHJ1ZSIgbGFiZWw9IkZpbHRlciBNb2RlIiBzZWxlY3RlZC1pdGVtLWxhYmVsPSJ7e19maWx0ZXJNb2RlfX0iPgogICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50Ij4KICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5Ob2RlIE5hbWU8L3BhcGVyLWl0ZW0+CiAgICAgICAgICA8cGFwZXItaXRlbSBuby1sYWJlbC1mbG9hdD0idHJ1ZSI+T3AgVHlwZTwvcGFwZXItaXRlbT4KICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgPHBhcGVyLWlucHV0IGlkPSJmaWx0ZXItaW5wdXQiIGxhYmVsPSJGaWx0ZXIgUmVnZXgiIGFsd2F5cy1mbG9hdC1sYWJlbCB2YWx1ZT0ie3tfZmlsdGVySW5wdXR9fSI+PC9wYXBlci1pbnB1dD4KICAgIDwvZGl2PgogICAgPHBhcGVyLXNwaW5uZXItbGl0ZSBhY3RpdmUgY2xhc3M9InNwaW5uZXIiIGlkPSJsb2FkaW5nLXNwaW5uZXIiIGhpZGRlbj0iW1shX2lzTG9hZGluZ11dIj4KICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgPGRpdiBpZD0ic2VsZWN0b3ItaGllcmFyY2h5Ij48L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLmluZGVudGVkLWxldmVsLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgewogICAgICAgIG1hcmdpbjogMCAwIDAgMjBweDsKICAgICAgfQoKICAgICAgLmxldmVsLWNvbnRhaW5lciBpcm9uLWNvbGxhcHNlIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAyMHB4OwogICAgICB9CgogICAgICBwYXBlci1jaGVja2JveCB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgIGhlaWdodDogMThweDsKICAgICAgICBtYXJnaW46IDAgOHB4IDAgMDsKICAgICAgfQoKICAgICAgLm9wLXR5cGUgewogICAgICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7CiAgICAgICAgY29sb3I6ICM0NDQ7CiAgICAgIH0KCiAgICAgIC5vcC10aXRsZS1sZWFmIHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5vcC10aXRsZS1sZWFmOmhvdmVyIHsKICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgfQoKICAgICAgLnBhcnRpYWwtY2hlY2tib3ggewogICAgICAgIGJhY2tncm91bmQ6ICNmNTdjMDA7CiAgICAgIH0KCiAgICAgIC5ub2RlLWV4cGFuZC1idXR0b24gewogICAgICAgIG1hcmdpbjogMCAwIDAgLTEzcHg7CiAgICAgIH0KCiAgICAgIC5sZXZlbC10aXRsZS10ZXh0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICBtYXJnaW46IDAgMCAwIC0xcHg7CiAgICAgIH0KCiAgICAgIC5vcC1kZXNjcmlwdGlvbiB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDsKICAgICAgICBtYXJnaW46IDAgMCAwIDI3cHg7CiAgICAgICAgcGFkZGluZzogMTBweCAwOwogICAgICB9CgogICAgICAuc3Bpbm5lciB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgICNmaWx0ZXItbW9kZSB7CiAgICAgICAgd2lkdGg6IDE1MHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgI2ZpbHRlci1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDI1MHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmhpZ2hsaWdodGVkIHsKICAgICAgICBjb2xvcjogcmVkOwogICAgICB9CiAgICAgIC5oaWdobGlnaHRlZCA+IC5vcC10eXBlIHsKICAgICAgICBjb2xvcjogcmVkOwogICAgICB9CgogICAgICAjc2VsZWN0b3ItaGllcmFyY2h5IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKICAKPC9kb20tbW9kdWxlPgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1zZXNzaW9uLXJ1bnMtdmlldyI+CiAgPHRlbXBsYXRlPgogICAgPGRpdiBjbGFzcz0ic2Vzc2lvbi1ydW5zLWRpdiI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlNlc3Npb24gUnVuczwvZGl2PgogICAgICA8dGFibGUgaWQ9InNlc3Npb24tcnVucy10YWJsZSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzZXNzaW9uLXJ1bnMtdGFibGUiPgogICAgICAgIDx0ciBhbGlnbj0ibGVmdCI+CiAgICAgICAgICA8dGg+RmVlZHM8L3RoPgogICAgICAgICAgPHRoPkZldGNoZXM8L3RoPgogICAgICAgICAgPHRoPlRhcmdldHM8L3RoPgogICAgICAgICAgPHRoPiMoRGV2aWNlcyk8L3RoPgogICAgICAgICAgPHRoPkNvdW50PC90aD4KICAgICAgICA8L3RyPgogICAgICA8L3RhYmxlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwYWRkaW5nOiAyMHB4IDA7CiAgICAgIH0KCiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDExMCU7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgICAgOmhvc3QgLmluZGVudGVkLWxldmVsLWNvbnRhaW5lciAuY29udGVudC1jb250YWluZXIgewogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLyogVE9ETyhjYWlzKTogVGhpcyBuZWVkcyB3b3JrOiB0aGUgdGFibGUgc2hvdWxkbid0IGdldCB0b28gd2lkZSB3aGVuCiAgICAgICAgIHRoZXJlIGFyZSBtYW55IGZlZWRzL2ZldGNoZXMvdGFyZ3RlIG5hbWVzLiAqLwogICAgICAuc2Vzc2lvbi1ydW5zLXRhYmxlIHsKICAgICAgICBhbGlnbi1jb250ZW50OiBsZWZ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBsZWZ0OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgZm9udC1zaXplOiA5MCU7CiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZCAxcHggYmxhY2s7CiAgICAgICAgdGFibGUtbGF5b3V0OiBmaXhlZDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgcGFkZGluZy10b3A6IDNweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CiAgICAgICAgYm94LXNoYWRvdzogM3B4IDNweCAjZGRkOwogICAgICB9CiAgICAgIC5hY3RpdmUtc2Vzc2lvbi1ydW4gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZTA7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgICAgLnNvbGUtYWN0aXZlLXNlc3Npb24tcnVuIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTcyLCAyMzIsIDE4OCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KCiAgICAgIC5ub2RlLW9yLXRlbnNvci1lbGVtZW50IHsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgIC5ub2RlLW9yLXRlbnNvci1lbGVtZW50OmhvdmVyIHsKICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXNvdXJjZS1jb2RlLXZpZXciPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgaWQ9ImZ1bGxTdGFja0RpYWxvZyIgaGlkZGVuJD0iW1shX2Z1bGxTdGFja1Nob3duXV0iPgogICAgICA8ZGl2IGlkPSJmdWxsLXN0YWNrLXRpdGxlIj4KICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0iZmlsdGVyLWxpc3QiIGRpc2FibGVkPSJ0cnVlIj4KICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgIEZ1bGwgU3RhY2sgVHJhY2Ugb2YgTm9kZToKICAgICAgICA8ZGl2IGlkPSJmdWxsLXN0YWNrLW5vZGUtbmFtZSI+IltbX2Z1bGxTdGFja05vZGVOYW1lXV0iPC9kaXY+CiAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249ImNsb3NlIiBpZD0iY2xvc2UtZnVsbC1zdGFjay1idXR0b24iIHRpdGxlPSJDbG9zZSBGdWxsIFN0YWNrIiBvbi10YXA9Il9jbG9zZUZ1bGxTdGFja0RpYWxvZyI+CiAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDx1bCBpZD0iZnVsbC1zdGFjay1jb250ZW50Ij48L3VsPgogICAgPC9kaXY+CiAgICA8cGFwZXItdGFicyBpZD0ic291cmNlLWZpbGVzLXRhYnMiIHNlbGVjdGVkPSJ7e19maWxlUGF0aFNlbGVjdGVkfX0iPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zaG9ydEZpbGVQYXRoc11dIj4KICAgICAgICA8cGFwZXItdGFiIGlkPSJbW2l0ZW0uaWRdXSI+W1tpdGVtLm5hbWVdXTwvcGFwZXItdGFiPgogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci10YWJzPgogICAgPGRpdiBpZD0ic291cmNlLWZpbGUtY29udGVudCIgY2xhc3M9InNvdXJjZS1jb250ZW50Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfZmlsZUxpbmVzXV0iPgogICAgICAgIDxkaXYgY2xhc3MkPSJ7e2l0ZW0uc291cmNlQ2xhc3N9fSIgaWQ9InNvdXJjZS1saW5lLVtbaXRlbS5saW5lbm9dXSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic291cmNlLWxpbmUtbnVtYmVyIiBpZD0ic291cmNlLWxpbmVuby1bW2l0ZW0ubGluZW5vXV0iPgogICAgICAgICAgICBbW2l0ZW0ubGluZW5vXV0KICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJzb3VyY2UtbGluZS1ub2RlLXRvZ2dsZSIgaWQ9InNvdXJjZS1saW5lLW5vZGUtdG9nZ2xlLVtbaXRlbS5saW5lbm9dXSI+CiAgICAgICAgICAgIFtbaXRlbS5udW1Ob2Rlc11dCiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0ic291cmNlLWxpbmUtdGV4dCIgaWQ9InNvdXJjZS1saW5lLXRleHQtW1tpdGVtLmxpbmVub11dIj4KICAgICAgICAgICAgW1tpdGVtLnRleHRdXQogICAgICAgICAgPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0ic291cmNlLWxpbmUtbm9kZXMiIGlkPSJzb3VyY2UtbGluZS1ub2Rlcy1bW2l0ZW0ubGluZW5vXV0iPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgICNzb3VyY2UtZmlsZXMtdGFicyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogOCU7CiAgICAgIH0KICAgICAgLnNvdXJjZS1jb250ZW50IHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaGVpZ2h0OiA5MCU7CiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICAgICAgICBmb250LXNpemU6IDkwJTsKICAgICAgICBvdmVyZmxvdy14OiBzY3JvbGw7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICB9CiAgICAgIC5zb3VyY2UtY29udGVudCA6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmMDA7CiAgICAgIH0KICAgICAgLmhpZ2hsaWdodGVkLXNvdXJjZS1saW5lIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmUwOwogICAgICB9CiAgICAgIC5zb3VyY2UtbGluZS1udW1iZXIgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBjb2xvcjogbGlnaHRibHVlOwogICAgICAgIHdpZHRoOiAyZW07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICB9CiAgICAgIC5zb3VyY2UtbGluZS1ub2RlLXRvZ2dsZSB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIGNvbG9yOiBibHVlOwogICAgICAgIHdpZHRoOiA1ZW07CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAuc291cmNlLWxpbmUtbm9kZXMgewogICAgICAgIHBhZGRpbmctbGVmdDogNGVtOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgICBtYXJnaW4tdG9wOiAwZW07CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMGVtOwogICAgICAgIG1hcmdpbi1yaWdodDogMWVtOwogICAgICB9CiAgICAgIC5zb3VyY2UtbGluZS1ub2RlLWVudHJ5IHsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDFlbTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CiAgICAgIH0KICAgICAgLnNvdXJjZS1saW5lLW5vZGVzIHNwYW4gewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CiAgICAgIH0KICAgICAgLnNvdXJjZS1saW5lLXRleHQgewogICAgICAgIGRpc3BsYXk6IGlubGluZTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KICAgICAgI2Z1bGxTdGFja0RpYWxvZyB7CiAgICAgICAgei1pbmRleDogMTAwMDsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAxMCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHdpZHRoOiA0NSU7CiAgICAgICAgaGVpZ2h0OiA4NSU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTsKICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIGJveC1zaGFkb3c6IDNweCAzcHggI2RkZDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICAgICNmdWxsLXN0YWNrLXRpdGxlIHsKICAgICAgICBmb250LXNpemU6IDExMCU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CiAgICAgICNmdWxsLXN0YWNrLW5vZGUtbmFtZSB7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgIH0KICAgICAgOmhvc3QgI2Z1bGwtc3RhY2stY29udGVudCB7CiAgICAgICAgcGFkZGluZy10b3A6IDFlbTsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVlbTsKICAgICAgICBtYXJnaW4tdG9wOiAwLjVlbTsKICAgICAgICBmb250LXNpemU6IDkwJTsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgIH0KICAgICAgLnN0YWNrLWZyYW1lLWNsaWNrYWJsZSB7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5zdGFjay1mcmFtZS1ub25jbGlja2FibGUgewogICAgICAgIGNvbG9yOiAjNTU1OwogICAgICB9CiAgICAgICNjbG9zZS1mdWxsLXN0YWNrLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtdGVuc29yLWRhdGEtc3VtbWFyeSI+CiAgPHRlbXBsYXRlPgogICAgPHNwYW4gY2xhc3M9InNlY3Rpb24tdGl0bGUiPlRlbnNvciBWYWx1ZSBPdmVydmlldzwvc3Bhbj4KICAgIDxkaXYgaWQ9InRlbnNvci1kYXRhLWRpdiIgY2xhc3M9InRlbnNvci1kYXRhLWRpdiI+CiAgICAgIDx0YWJsZSBpZD0idGVuc29yLWRhdGEtdGFibGUiIGFsaWduPSJsZWZ0IiBjbGFzcz0idGVuc29yLWRhdGEtdGFibGUiPgogICAgICAgIDx0aGVhZD4KICAgICAgICAgIDx0ciBhbGlnbj0ibGVmdCI+CiAgICAgICAgICAgIDx0aD5UZW5zb3I8L3RoPgogICAgICAgICAgICA8dGg+Q291bnQ8L3RoPgogICAgICAgICAgICA8dGg+RFR5cGU8L3RoPgogICAgICAgICAgICA8dGg+U2hhcGU8L3RoPgogICAgICAgICAgICA8dGggd2lkdGg9IjI1JSI+VmFsdWU8L3RoPgogICAgICAgICAgICA8dGggd2lkdGg9IjI1JSI+CiAgICAgICAgICAgICAgSGVhbHRoIFBpbGwKICAgICAgICAgICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBpZD0ic2hvdy1oZWFsdGgtcGlsbHMiIGNoZWNrZWQ9Int7X2hlYWx0aFBpbGxzRW5hYmxlZH19Ij4KICAgICAgICAgICAgICA8L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgICAgICAgICAgPHBhcGVyLWNhcmQ+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFsdGgtcGlsbC1sZWdlbmQiIGlkPSJoZWFsdGgtcGlsbC1sZWdlbmQiPjwvZGl2PgogICAgICAgICAgICAgIDwvcGFwZXItY2FyZD4KICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgPHRoIHdpZHRoPSI1JSI+PC90aD4KICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+PC90Ym9keT4KICAgICAgPC90YWJsZT4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCAjdGVuc29yLWRhdGEtZGl2IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMTAlOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICB9CiAgICAgIDpob3N0IC5pbmRlbnRlZC1sZXZlbC1jb250YWluZXIgLmNvbnRlbnQtY29udGFpbmVyIHsKICAgICAgICBtYXJnaW46IDAgMCAwIDEwcHg7CiAgICAgIH0KICAgICAgOmhvc3QgLnRlbnNvci1kYXRhLXRhYmxlIHsKICAgICAgICBhbGlnbi1jb250ZW50OiBsZWZ0OwogICAgICAgIGFsaWduLWl0ZW1zOiBsZWZ0OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBwYWRkaW5nLXRvcDogM3B4OwogICAgICAgIHBhZGRpbmctbGVmdDogM3B4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgICBib3gtc2hhZG93OiAzcHggM3B4ICNkZGQ7CiAgICAgIH0KICAgICAgOmhvc3QgI3RlbnNvci1kYXRhLXRhYmxlIHRoIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CiAgICAgIDpob3N0IC5hY3RpdmUtdGVuc29yIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmUwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGJvcmRlcjogc29saWQgMXB4ICM4ODg7CiAgICAgIH0KICAgICAgOmhvc3QgLmhpZ2hsaWdodGVkIHsKICAgICAgICBjb2xvcjogcmVkOwogICAgICB9CiAgICAgIDpob3N0IC5oZWFsdGgtcGlsbC1sZWdlbmQgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICB9CiAgICAgIDpob3N0ICNzaG93LWhlYWx0aC1waWxscyB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICAgIC52YWx1ZS1leHBhbnNpb24tbGluayB7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC52YWx1ZS1leHBhbnNpb24tbGluayA6aG92ZXIgewogICAgICAgIGNvbG9yOiBibHVlOwogICAgICB9CiAgICAgIC5oZWFsdGgtcGlsbCA6aG92ZXIgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAudGVuc29yLW5hbWUgewogICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAudGVuc29yLW5hbWUgOmhvdmVyIHsKICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxzdHlsZT4vKiBDb3B5cmlnaHQgMjAxOSBUaGUgVGVuc29yRmxvdyBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgpTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKLnRlbnNvci13aWRnZXQgewogIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CiAgZm9udC1zaXplOiAxNHB4OwogIG92ZXJmbG93LXg6IGhpZGRlbjsKICBvdmVyZmxvdy15OiBoaWRkZW47CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgoudGVuc29yLXdpZGdldC1kaW0gewogIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNjAsIDE2MCwgMTYwKTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiAxMnB4OwogIGhlaWdodDogMTRweDsKICBsaW5lLWhlaWdodDogMTRweDsKICBtYXJnaW4tbGVmdDogMTVweDsKICBtYXJnaW4tcmlnaHQ6IDE1cHg7CiAgcGFkZGluZzogMnB4Owp9CgoudGVuc29yLXdpZGdldC1kaW0tY29tbWEgewogIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTJweDsKICBoZWlnaHQ6IDE0cHg7CiAgbGluZS1oZWlnaHQ6IDE0cHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbS1oaWdobGlnaHRlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDEwMCwgMTgwLCAyNTUpOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoudGVuc29yLXdpZGdldC1kaW0tYnJhY2tldHMgewogIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogOHB0Owp9CgoudGVuc29yLXdpZGdldC1kaW0tZHJvcGRvd24gewogIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsKICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTI4LCAxMjgsIDEyOCk7CiAgYm94LXNoYWRvdzogMnB4IDJweCAycHggI2IwYjBiMDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgd2lkdGg6IDE4MHB4OwogIHotaW5kZXg6IDEwMDA7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93bi1tZW51LWl0ZW0gewogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTgwLCAxODAsIDE4MCk7CiAgZm9udC1zaXplOiAxMnB4OwogIHBhZGRpbmc6IDNweDsKICB1c2VyLXNlbGVjdDogbm9uZTsKfQoKLnRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duLW1lbnUtaXRlbS1hY3RpdmUgewogIGJhY2tncm91bmQtY29sb3I6IHJnYigxMDAsIDE4MCwgMjU1KTsKfQoKLnRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duLW1lbnUtaXRlbS1kaXNhYmxlZCB7CiAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKfQoKLnRlbnNvci13aWRnZXQtZHR5cGUgewogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICBjb2xvcjogcmdiKDYwLCA2MCwgNjApOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDhwdDsKICBoZWlnaHQ6IDQ4cHg7CiAgbGluZS1oZWlnaHQ6IDIycHg7CiAgbWF4LWhlaWdodDogMjJweDsKICBwYWRkaW5nLWxlZnQ6IDE0cHg7CiAgcGFkZGluZy1yaWdodDogMTBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLnRlbnNvci13aWRnZXQtZHR5cGUtbGFiZWwgewogIGNvbG9yOiByZ2IoMTI4LCAxMjgsIDEyOCk7Cn0KCi50ZW5zb3Itd2lkZ2V0LWhlYWRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1MiwgMjUyLCAyNTIpOwogIGJveC1zaGFkb3c6IDJweCAycHggMnB4ICNiMGIwYjA7CiAgaGVpZ2h0OiA0MHB4OwogIGxpbmUtaGVpZ2h0OiA0MHB4OwogIG1heC1oZWlnaHQ6IDQwcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgd2lkdGg6IDEwMCU7Cn0KCi50ZW5zb3Itd2lkZ2V0LWluZm8gewogIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsKICBjb2xvcjogcmdiKDAsIDAsIDI1NSk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogOHB0OwogIGhlaWdodDogMjJweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBtYXJnaW4tbGVmdDogOHB4OwogIG1heC1oZWlnaHQ6IDIycHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi50ZW5zb3Itd2lkZ2V0LW1lbnUtdGh1bWIgewogIGNvbG9yOiByZ2IoMzIsIDMzLCAzNik7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogYm9sZDsKICBmb250LXNpemU6IDE2cHg7CiAgbWFyZ2luLWxlZnQ6IDEwcHg7CiAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHVzZXItc2VsZWN0OiBub25lOwp9CgoudGVuc29yLXdpZGdldC1tZW51LXRodW1iOmhvdmVyIHsKICBjb2xvcjogcmdiKDIyNywgMTE2LCAwKTsKfQoKLnRlbnNvci13aWRnZXQtc2hhcGUgewogIGNvbG9yOiByZ2IoNjAsIDYwLCA2MCk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIG1hcmdpbi1sZWZ0OiAxMnB4Owp9CgoudGVuc29yLXdpZGdldC1zaGFwZS1sYWJlbCB7CiAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi50ZW5zb3Itd2lkZ2V0LXNoYXBlLXZhbHVlIHsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cn0KCi50ZW5zb3Itd2lkZ2V0LXNsaWNpbmctZ3JvdXAgewogIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTAsIDI1MCwgMjUwKTsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDE5MCwgMTkwLCAxOTApOwogIGRpc3BsYXk6IGJsb2NrOwogIGhlaWdodDogMThweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgcGFkZGluZy1ib3R0b206IDVweDsKICBwYWRkaW5nLXRvcDogNXB4Owp9CgoudGVuc29yLXdpZGdldC10ZW5zb3ItbmFtZSB7CiAgY29sb3I6IGJsYWNrOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLnRlbnNvci13aWRnZXQtbGVmdC1ydWxlci10aWNrIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ydWxlci1iYWNrZ3JvdW5kLWNvbG9yKTsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItc3R5bGUpOwogIGJvcmRlci10b3A6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgYm94LXNoYWRvdzogdmFyKC0tYm9yZGVyLXN0eWxlKTsKICBjb2xvcjogcmdiKDExMCwgMTEwLCAxMTApOwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiAxMnB4OwogIGhlaWdodDogMjlweDsKICBsaW5lLWhlaWdodDogMjlweDsKICBtYXJnaW4tbGVmdDogMHB4OwogIG1heC13aWR0aDogNDVweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogNDVweDsKfQoKLnRlbnNvci13aWRnZXQtdG9wLXJ1bGVyIHsKICBoZWlnaHQ6IDI0cHg7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtdG9vbHRpcCB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0MCwgMjQwLCAyNDApOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNjAsIDE2MCwgMTYwKTsKICBib3gtc2hhZG93OiAxcHggMXB4IDFweCAjYjBiMGIwOwogIGRpc3BsYXk6IG5vbmU7CiAgZm9udC1zaXplOiAxM3B4OwogIHBhZGRpbmc6IDVweDsKICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgd2lkdGg6IDI0MHB4Owp9CgoudGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwLWNvbG9yYmFyIHsKICBoZWlnaHQ6IDI0cHg7CiAgd2lkdGg6IDk1JTsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtdG9vbHRpcC1pbmRpY2VzIHsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtdG9vbHRpcC12YWx1ZSB7CiAgbWFyZ2luLXRvcDogMjBweDsKfQoKLnRlbnNvci13aWRnZXQtdG9wLXJ1bGVyLXRpY2sgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJ1bGVyLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1ib3JkZXItc3R5bGUpOwogIGNvbG9yOiByZ2IoMTEwLCAxMTAsIDExMCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEycHg7CiAgaGVpZ2h0OiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIHBhZGRpbmctcmlnaHQ6IDJweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogNDVweDsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtZGl2IHsKICBib3JkZXItYm90dG9tOiB2YXIoLS1ib3JkZXItc3R5bGUpOwogIGJvcmRlci1yaWdodDogdmFyKC0tYm9yZGVyLXN0eWxlKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogODAlOwogIGhlaWdodDogMjRweDsKICBsaW5lLWhlaWdodDogMjRweDsKICBtYXgtd2lkdGg6IDQ1cHg7CiAgcGFkZGluZy1yaWdodDogMnB4OwogIHRleHQtYWxpZ246IHJpZ2h0OwogIHVzZXItc2VsZWN0OiBub25lOwogIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgd2lkdGg6IDQ1cHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24gewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLWJvdHRvbSB7CiAgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgYmx1ZTsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtZGl2LXNlbGVjdGlvbi1sZWZ0IHsKICBib3JkZXItbGVmdDogMC41cHggc29saWQgYmx1ZTsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtZGl2LXNlbGVjdGlvbi1yaWdodCB7CiAgYm9yZGVyLXJpZ2h0OiAwLjVweCBzb2xpZCBibHVlOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLXRvcCB7CiAgYm9yZGVyLXRvcDogMC41cHggc29saWQgYmx1ZTsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtc2VjdGlvbiB7CiAgLS1ib3JkZXItc3R5bGU6IDFweCBzb2xpZCByZ2IoMTQwLCAxNDAsIDE0MCk7CiAgLS1ydWxlci1iYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjEwLCAyMTAsIDIxMCk7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOwogIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1yb3cgewogIGhlaWdodDogMjVweDsKICBsaW5lLWhlaWdodDogMjVweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9Cjwvc3R5bGU+Cgo8ZG9tLW1vZHVsZSBpZD0idGVuc29yLXdpZGdldC1zdHlsZSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPi8qIENvcHlyaWdodCAyMDE5IFRoZSBUZW5zb3JGbG93IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgpZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuClNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgoudGVuc29yLXdpZGdldCB7CiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKICBmb250LXNpemU6IDE0cHg7CiAgb3ZlcmZsb3cteDogaGlkZGVuOwogIG92ZXJmbG93LXk6IGhpZGRlbjsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbSB7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE2MCwgMTYwLCAxNjApOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEycHg7CiAgaGVpZ2h0OiAxNHB4OwogIGxpbmUtaGVpZ2h0OiAxNHB4OwogIG1hcmdpbi1sZWZ0OiAxNXB4OwogIG1hcmdpbi1yaWdodDogMTVweDsKICBwYWRkaW5nOiAycHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbS1jb21tYSB7CiAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiAxMnB4OwogIGhlaWdodDogMTRweDsKICBsaW5lLWhlaWdodDogMTRweDsKfQoKLnRlbnNvci13aWRnZXQtZGltLWhpZ2hsaWdodGVkIHsKICBib3JkZXI6IDFweCBzb2xpZCByZ2IoMTAwLCAxODAsIDI1NSk7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbS1icmFja2V0cyB7CiAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiA4cHQ7Cn0KCi50ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93biB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxMjgsIDEyOCwgMTI4KTsKICBib3gtc2hhZG93OiAycHggMnB4IDJweCAjYjBiMGIwOwogIGN1cnNvcjogcG9pbnRlcjsKICB3aWR0aDogMTgwcHg7CiAgei1pbmRleDogMTAwMDsKfQoKLnRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duLW1lbnUtaXRlbSB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigxODAsIDE4MCwgMTgwKTsKICBmb250LXNpemU6IDEycHg7CiAgcGFkZGluZzogM3B4OwogIHVzZXItc2VsZWN0OiBub25lOwp9CgoudGVuc29yLXdpZGdldC1kaW0tZHJvcGRvd24tbWVudS1pdGVtLWFjdGl2ZSB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDEwMCwgMTgwLCAyNTUpOwp9CgoudGVuc29yLXdpZGdldC1kaW0tZHJvcGRvd24tbWVudS1pdGVtLWRpc2FibGVkIHsKICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOwp9CgoudGVuc29yLXdpZGdldC1kdHlwZSB7CiAgYWxpZ24tY29udGVudDogY2VudGVyOwogIGNvbG9yOiByZ2IoNjAsIDYwLCA2MCk7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogOHB0OwogIGhlaWdodDogNDhweDsKICBsaW5lLWhlaWdodDogMjJweDsKICBtYXgtaGVpZ2h0OiAyMnB4OwogIHBhZGRpbmctbGVmdDogMTRweDsKICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgoudGVuc29yLXdpZGdldC1kdHlwZS1sYWJlbCB7CiAgY29sb3I6IHJnYigxMjgsIDEyOCwgMTI4KTsKfQoKLnRlbnNvci13aWRnZXQtaGVhZGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjUyLCAyNTIsIDI1Mik7CiAgYm94LXNoYWRvdzogMnB4IDJweCAycHggI2IwYjBiMDsKICBoZWlnaHQ6IDQwcHg7CiAgbGluZS1oZWlnaHQ6IDQwcHg7CiAgbWF4LWhlaWdodDogNDBweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogMTAwJTsKfQoKLnRlbnNvci13aWRnZXQtaW5mbyB7CiAgYWxpZ24tY29udGVudDogY2VudGVyOwogIGNvbG9yOiByZ2IoMCwgMCwgMjU1KTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiA4cHQ7CiAgaGVpZ2h0OiAyMnB4OwogIGxpbmUtaGVpZ2h0OiAyMnB4OwogIG1hcmdpbi1sZWZ0OiA4cHg7CiAgbWF4LWhlaWdodDogMjJweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLnRlbnNvci13aWRnZXQtbWVudS10aHVtYiB7CiAgY29sb3I6IHJnYigzMiwgMzMsIDM2KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtd2VpZ2h0OiBib2xkOwogIGZvbnQtc2l6ZTogMTZweDsKICBtYXJnaW4tbGVmdDogMTBweDsKICBtYXJnaW4tcmlnaHQ6IDVweDsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi50ZW5zb3Itd2lkZ2V0LW1lbnUtdGh1bWI6aG92ZXIgewogIGNvbG9yOiByZ2IoMjI3LCAxMTYsIDApOwp9CgoudGVuc29yLXdpZGdldC1zaGFwZSB7CiAgY29sb3I6IHJnYig2MCwgNjAsIDYwKTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgbWFyZ2luLWxlZnQ6IDEycHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LXNoYXBlLWxhYmVsIHsKICBjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnRlbnNvci13aWRnZXQtc2hhcGUtdmFsdWUgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLnRlbnNvci13aWRnZXQtc2xpY2luZy1ncm91cCB7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1MCwgMjUwLCAyNTApOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTkwLCAxOTAsIDE5MCk7CiAgZGlzcGxheTogYmxvY2s7CiAgaGVpZ2h0OiAxOHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBwYWRkaW5nLWJvdHRvbTogNXB4OwogIHBhZGRpbmctdG9wOiA1cHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LXRlbnNvci1uYW1lIHsKICBjb2xvcjogYmxhY2s7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoudGVuc29yLXdpZGdldC1sZWZ0LXJ1bGVyLXRpY2sgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXJ1bGVyLWJhY2tncm91bmQtY29sb3IpOwogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXN0eWxlKTsKICBib3gtc2hhZG93OiB2YXIoLS1ib3JkZXItc3R5bGUpOwogIGNvbG9yOiByZ2IoMTEwLCAxMTAsIDExMCk7CiAgY3Vyc29yOiBwb2ludGVyOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBmb250LXNpemU6IDEycHg7CiAgaGVpZ2h0OiAyOXB4OwogIGxpbmUtaGVpZ2h0OiAyOXB4OwogIG1hcmdpbi1sZWZ0OiAwcHg7CiAgbWF4LXdpZHRoOiA0NXB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB1c2VyLXNlbGVjdDogbm9uZTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHdpZHRoOiA0NXB4Owp9CgoudGVuc29yLXdpZGdldC10b3AtcnVsZXIgewogIGhlaWdodDogMjRweDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQwLCAyNDAsIDI0MCk7CiAgYm9yZGVyOiAxcHggc29saWQgcmdiKDE2MCwgMTYwLCAxNjApOwogIGJveC1zaGFkb3c6IDFweCAxcHggMXB4ICNiMGIwYjA7CiAgZGlzcGxheTogbm9uZTsKICBmb250LXNpemU6IDEzcHg7CiAgcGFkZGluZzogNXB4OwogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB1c2VyLXNlbGVjdDogbm9uZTsKICB3aWR0aDogMjQwcHg7Cn0KCi50ZW5zb3Itd2lkZ2V0LXZhbHVlLXRvb2x0aXAtY29sb3JiYXIgewogIGhlaWdodDogMjRweDsKICB3aWR0aDogOTUlOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwLWluZGljZXMgewogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwLXZhbHVlIHsKICBtYXJnaW4tdG9wOiAyMHB4Owp9CgoudGVuc29yLXdpZGdldC10b3AtcnVsZXItdGljayB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcnVsZXItYmFja2dyb3VuZC1jb2xvcik7CiAgYm9yZGVyLWJvdHRvbTogdmFyKC0tYm9yZGVyLXN0eWxlKTsKICBib3JkZXItcmlnaHQ6IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgY29sb3I6IHJnYigxMTAsIDExMCwgMTEwKTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtc2l6ZTogMTJweDsKICBoZWlnaHQ6IDI0cHg7CiAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgcGFkZGluZy1yaWdodDogMnB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICB1c2VyLXNlbGVjdDogbm9uZTsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIHdpZHRoOiA0NXB4Owp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1kaXYgewogIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1zdHlsZSk7CiAgYm9yZGVyLXJpZ2h0OiB2YXIoLS1ib3JkZXItc3R5bGUpOwogIGN1cnNvcjogcG9pbnRlcjsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgZm9udC1zaXplOiA4MCU7CiAgaGVpZ2h0OiAyNHB4OwogIGxpbmUtaGVpZ2h0OiAyNHB4OwogIG1heC13aWR0aDogNDVweDsKICBwYWRkaW5nLXJpZ2h0OiAycHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICB3aWR0aDogNDVweDsKfQoKLnRlbnNvci13aWRnZXQtdmFsdWUtZGl2LXNlbGVjdGlvbiB7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi50ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tYm90dG9tIHsKICBib3JkZXItYm90dG9tOiAwLjVweCBzb2xpZCBibHVlOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLWxlZnQgewogIGJvcmRlci1sZWZ0OiAwLjVweCBzb2xpZCBibHVlOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLXJpZ2h0IHsKICBib3JkZXItcmlnaHQ6IDAuNXB4IHNvbGlkIGJsdWU7Cn0KCi50ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tdG9wIHsKICBib3JkZXItdG9wOiAwLjVweCBzb2xpZCBibHVlOwp9CgoudGVuc29yLXdpZGdldC12YWx1ZS1zZWN0aW9uIHsKICAtLWJvcmRlci1zdHlsZTogMXB4IHNvbGlkIHJnYigxNDAsIDE0MCwgMTQwKTsKICAtLXJ1bGVyLWJhY2tncm91bmQtY29sb3I6IHJnYigyMTAsIDIxMCwgMjEwKTsKICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCi50ZW5zb3Itd2lkZ2V0LXZhbHVlLXJvdyB7CiAgaGVpZ2h0OiAyNXB4OwogIGxpbmUtaGVpZ2h0OiAyNXB4OwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRlYnVnZ2VyLWxpbmUtY2hhcnQiPgogIDx0ZW1wbGF0ZT4KICAgIDx2ei1saW5lLWNoYXJ0MiB4LWNvbXBvbmVudHMtY3JlYXRpb24tbWV0aG9kPSJbW19saW5lQ2hhcnRYQ29tcG9uZW50c0NyZWF0aW9uTWV0aG9kXV0iIHktdmFsdWUtYWNjZXNzb3I9IltbX2xpbmVDaGFydFlWYWx1ZUFjY2Vzc29yXV0iIHRvb2x0aXAtY29sdW1ucz0iW1tfbGluZUNoYXJ0VG9vbHRpcENvbHVtbnNdXSIgc21vb3RoaW5nLWVuYWJsZWQ9IltbX2xpbmVDaGFydFNtb290aGluZ0VuYWJsZWRdXSI+PC92ei1saW5lLWNoYXJ0Mj4KICAgIDxzdHlsZT4KICAgICAgdnotbGluZS1jaGFydDIgewogICAgICAgIGhlaWdodDogMzAwcHg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi10ZW5zb3ItdmFsdWUtdmlldyI+CiAgPHRlbXBsYXRlPgogICAgPHBhcGVyLXRvYXN0IGlkPSJ0ZW5zb3JWYWx1ZVRvYXN0IiB0ZXh0PSIiIGFsd2F5cy1vbi10b3A+PC9wYXBlci10b2FzdD4KICAgIDx0YWJsZSBjbGFzcz0idGVuc29yLXZhbHVlLXZpZXctdGFibGUiPgogICAgICA8dHI+CiAgICAgICAgPHRkIGNvbHNwYW49IjIiPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gaWQ9InRlbnNvci1uYW1lIiBvbi10YXA9InRlbnNvck5hbWVDYWxsYmFjayI+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRlbnNvci1uYW1lLXRleHQiPltbdGVuc29yTmFtZV1dPC9zcGFuPgogICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBpY29uPSJjbG9zZSIgY2xhc3M9InZhbHVlLXZpZXctaWNvbi1idXR0b24iIGlkPSJ2YWx1ZS12aWV3LWljb24tYnV0dG9uIiB0aXRsZT0iQ2xvc2UiIG9uLXRhcD0iY2xvc2VCdXR0b25DYWxsYmFjayI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249ImZvcndhcmQiIGNsYXNzPSJ2YWx1ZS12aWV3LWljb24tYnV0dG9uIiBpZD0idmFsdWUtdmlldy1pY29uLWJ1dHRvbiIgdGl0bGU9IkNvbnRpbnVlIHRvIiBvbi10YXA9ImNvbnRpbnVlVG9CdXR0b25DYWxsYmFjayI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGQ+CiAgICAgIDwvdHI+CiAgICAgIDx0ciBjbGFzcz0idGVuc29yLXZhbHVlLXZhbHVlLXRyIj4KICAgICAgICA8dGQ+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3VzZVRlbnNvcldpZGdldF1dIj4KICAgICAgICAgICAgPGRpdiBpZD0idGVuc29yLXdpZGdldCI+PC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX3VzZVRlbnNvcldpZGdldF1dIj4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gaWQ9ImRlYnVnLW9wIj48L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgPHBhcGVyLWlucHV0IGNsYXNzPSJpbmxpbmUgdmFsdWUtY2FyZC1pbnB1dCIgbGFiZWw9IlNsaWNpbmciIGlkPSJzbGljaW5nIiB2YWx1ZT0ie3tzbGljaW5nfX0iIG9uLWNoYW5nZT0icmVmcmVzaCI+CiAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHBhcGVyLWlucHV0IGNsYXNzPSJpbmxpbmUgdmFsdWUtY2FyZC1pbnB1dCIgbGFiZWw9IlRpbWUgSW5kaWNlcyIgaWQ9InRpbWUtaW5kaWNlcyIgdmFsdWU9Int7dGltZUluZGljZXN9fSIgb24tY2hhbmdlPSJyZWZyZXNoIj4KICAgICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZCBpZD0idGltZS1pbmRpY2VzLXRvZ2dsZS1idXR0b24iIGNsYXNzPSJ0ZW5zb3ItdmFsdWUtYnV0dG9ucyIgb24tY2xpY2s9Il90aW1lSW5kaWNlc1RvZ2dsZUJ1dHRvbkNhbGxiYWNrIj5GdWxsIEhpc3Rvcnk8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgPC9kaXY+PC90ZW1wbGF0ZT48L3RkPjx0ZCBjbGFzcz0idGVuc29yLXZhbHVlLXZpZXctdGQiPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1ZhbHVlU2NhbGFyXV0iPgogICAgICAgICAgICAgICAgICA8cGFwZXItaW5wdXQgY2xhc3M9ImlubGluZSIgbGFiZWw9IlNjYWxhciBWYWx1ZSIgaWQ9InZhbHVlLXNjYWxhciIgdmFsdWU9IltbX2RhdGFTY2FsYXJdXSI+CiAgICAgICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1ZhbHVlTGluZUNoYXJ0XV0iPgogICAgICAgICAgICAgICAgICA8dGYtZGVidWdnZXItbGluZS1jaGFydCBkYXRhPSJbW19saW5lQ2hhcnREYXRhXV0iPjwvdGYtZGVidWdnZXItbGluZS1jaGFydD4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVmFsdWVJbWFnZV1dIj4KICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0idmFsdWUtaW1hZ2UiIGhlaWdodD0iMjUwcHgiIHdpZHRoPSIyNTBweCIgc3JjJD0iW1tfZGF0YUltYWdlU3JjXV0iPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAKICAgICAgICAgIAogICAgICAgIAogICAgICA8L3RyPgogICAgPC90YWJsZT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idGVuc29yLXdpZGdldC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLnRlbnNvci12YWx1ZS1idXR0b25zIHsKICAgICAgICBoZWlnaHQ6IDc1JTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgIH0KICAgICAgLnRlbnNvci12YWx1ZS12aWV3LXRhYmxlIHsKICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLXRhYmxlOwogICAgICAgIGJvcmRlci1zcGFjaW5nOiA1cHg7CiAgICAgICAgcGFkZGluZy10b3A6IDNweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogM3B4OwogICAgICAgIHBhZGRpbmctbGVmdDogM3B4OwogICAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwogICAgICAgIGJveC1zaGFkb3c6IDNweCAzcHggMXB4IDFweCAjZDhkOGQ4OwogICAgICB9CiAgICAgIC50ZW5zb3ItdmFsdWUtdmlldy10ZCB7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICB9CiAgICAgIC52YWx1ZS1jYXJkLWlucHV0IHsKICAgICAgICB3aWR0aDogMTUwcHg7CiAgICAgIH0KICAgICAgI3RlbnNvci1uYW1lIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHdpZHRoOiA1MCU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC50ZW5zb3ItbmFtZS10ZXh0IHsKICAgICAgICBjb2xvcjogYmx1ZTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQogICAgICAjZGVidWctb3AgewogICAgICAgIGZvbnQtc2l6ZTogOTAlOwogICAgICB9CiAgICAgIC52YWx1ZS1pbWFnZSB7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgIH0KICAgICAgLnZhbHVlLXZpZXctaWNvbi1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgd2lkdGg6IDIwJTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgZm9udC1zaXplOiA5MCU7CiAgICAgICAgY29sb3I6IGJsdWU7CiAgICAgIH0KICAgICAgI3RlbnNvci13aWRnZXQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYigxNjAsIDE2MCwgMTYwKTsKICAgICAgICAvKiBib3gtc2l6aW5nOiBjb250ZW50LWJveDsKICAgICAgICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogICAgICAgIC13ZWJraXQtYm94LXNpemluZzogY29udGVudC1ib3g7ICovCiAgICAgICAgaGVpZ2h0OiAyODBweDsKICAgICAgICB3aWR0aDogNDg0cHg7CiAgICAgIH0KICAgICAgI3NsaWNpbmcsCiAgICAgICN0aW1lLWluZGljZXMgewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWlucHV0OiB7CiAgICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InRmLXRlbnNvci12YWx1ZS1tdWx0aS12aWV3Ij4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJtdWx0aVZpZXciPgogICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5UZW5zb3IgVmFsdWVzPC9kaXY+CiAgICAgIDxkaXYgaWQ9Im11bHRpLXRlbnNvci12aWV3LWNvbnRhaW5lciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLnNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTEwJTsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAjbXVsdGlWaWV3IHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgICAgIHBhZGRpbmctdG9wOiAzcHg7CiAgICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogM3B4OwogICAgICAgIGJveC1zaGFkb3c6IDNweCAzcHggI2VlZTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRlYnVnZ2VyLWRhc2hib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHBhcGVyLXRvYXN0IGlkPSJ0b2FzdCIgdGV4dD0iIiBhbHdheXMtb24tdG9wPjwvcGFwZXItdG9hc3Q+CiAgICA8dGYtZGVidWdnZXItaW5pdGlhbC1kaWFsb2cgaWQ9ImluaXRpYWxEaWFsb2ciPjwvdGYtZGVidWdnZXItaW5pdGlhbC1kaWFsb2c+CiAgICAKICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIiBpZD0ibGVmdC1wYW5lIj4KICAgICAgICA8ZGl2IGlkPSJub2RlLWVudHJpZXMiIGNsYXNzPSJub2RlLWVudHJpZXMiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVidWdnZXItc2VjdGlvbi10aXRsZSI+UnVudGltZSBOb2RlIExpc3Q8L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1zb3VyY2UtY29kZSI+CiAgICAgICAgICAgIFNob3cgQ29kZToKICAgICAgICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24gY2xhc3M9InRvZ2dsZS1zb3VyY2UtY29kZSIgaWQ9InNob3ctc291cmNlLWNvZGUiIGNoZWNrZWQ9Int7X3NvdXJjZUNvZGVTaG93bn19Ij48L3BhcGVyLXRvZ2dsZS1idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0Zi1vcC1zZWxlY3RvciBkZWJ1Zy13YXRjaGVzPSJbW19kZWJ1Z1dhdGNoZXNdXSIgZGVidWctd2F0Y2gtY2hhbmdlPSJbW19jcmVhdGVEZWJ1Z1dhdGNoQ2hhbmdlSGFuZGxlcigpXV0iIG5vZGUtY2xpY2tlZD0iW1tfY3JlYXRlTm9kZUNsaWNrZWRIYW5kbGVyKCldXSIgZm9yY2UtZXhwYW5kLWFuZC1jaGVjay1ub2RlLW5hbWU9IltbX2ZvcmNlRXhwYW5kQW5kQ2hlY2tOb2RlTmFtZV1dIiBmb3JjZS1leHBhbmQtbm9kZS1uYW1lPSJbW19mb3JjZUV4cGFuZE5vZGVOYW1lXV0iPgogICAgICAgICAgPC90Zi1vcC1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJzb3VyY2UtY29kZS12aWV3LWRpdiIgY2xhc3M9InNvdXJjZS1jb2RlLXZpZXctZGl2IiBoaWRkZW4kPSJ7eyFfc291cmNlQ29kZVNob3dufX0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iZGVidWdnZXItc2VjdGlvbi10aXRsZSI+U291cmNlIENvZGU8L2Rpdj4KICAgICAgICAgIDx0Zi1zb3VyY2UtY29kZS12aWV3IGlkPSJzb3VyY2VDb2RlVmlldyIgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIiBkZWJ1Zy13YXRjaGVzPSJbW19kZWJ1Z1dhdGNoZXNdXSIgZm9jdXMtbm9kZS1uYW1lPSJbW19zb3VyY2VGb2N1c05vZGVOYW1lXV0iIG5vZGUtY2xpY2tlZD0iW1tfY3JlYXRlTm9kZUNsaWNrZWRIYW5kbGVyKCldXSIgY29udGludWUtdG8tbm9kZT0iW1tfY3JlYXRlQ29udGludWVUb05vZGVIYW5kbGVyKCldXSI+PC90Zi1zb3VyY2UtY29kZS12aWV3PgogICAgICAgIDwvZGl2PgogICAgICAgIDx0Zi1kZWJ1Z2dlci1yZXNpemVyIGN1cnJlbnQtbGVuZ3RoPSJ7e19sZWZ0UGFuZVdpZHRofX0iIG1pbi1sZW5ndGg9IltbX21pbmxlZnRQYW5lV2lkdGhdXSIgbWF4LWxlbmd0aD0iW1tfbWF4bGVmdFBhbmVXaWR0aF1dIj4KICAgICAgICA8L3RmLWRlYnVnZ2VyLXJlc2l6ZXI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDx0Zi1zZXNzaW9uLXJ1bnMtdmlldyBpZD0ic2Vzc2lvblJ1bnNWaWV3IiBsYXRlc3Qtc2Vzc2lvbi1ydW49IltbX2xhdGVzdFNlc3Npb25SdW5dXSIgc2Vzc2lvbi1ydW4ta2V5LXRvLWRldmljZS1uYW1lcz0iW1tfc2Vzc2lvblJ1bktleTJEZXZpY2VOYW1lc11dIiBzb2xlLWFjdGl2ZT0iW1tfc2Vzc2lvblJ1blNvbGVBY3RpdmVdXSIgbm9kZS1vci10ZW5zb3ItY2xpY2tlZD0iW1tfY3JlYXRlRmVlZEZldGNoVGFyZ2V0Q2xpY2tlZEhhbmRsZXIoKV1dIj4KICAgICAgICAgIDwvdGYtc2Vzc2lvbi1ydW5zLXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYnV0dG9ucy1jb250YWluZXIiPgogICAgICAgICAgPHBhcGVyLWJ1dHRvbiByYWlzZWQgY2xhc3M9ImNvbnRpbnVlLWJ1dHRvbiIgb24tY2xpY2s9Il9zdGVwIj4KICAgICAgICAgICAgPHNwYW4+W1tfc3RlcEJ1dHRvblRleHRdXTwvc3Bhbj4KICAgICAgICAgIDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgPHRmLWRlYnVnZ2VyLWNvbnRpbnVlLWRpYWxvZyBpZD0iY29udGludWVEaWFsb2ciIHNlc3Npb24tcnVuLWdvPSJbW19jcmVhdGVTZXNzaW9uUnVuR28oKV1dIiB0ZW5zb3ItY29uZGl0aW9uLWdvPSJbW19jcmVhdGVUZW5zb3JDb25kaXRpb25HbygpXV0iIGZvcmNlLWNvbnRpbnVhdGlvbi1zdG9wPSJbW19jcmVhdGVGb3JjZUNvbnRpbnVhdGlvblN0b3AoKV1dIj4KICAgICAgICAgIDwvdGYtZGVidWdnZXItY29udGludWUtZGlhbG9nPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgICAgICAgICA8dGYtZ3JhcGgtbG9hZGVyIGlkPSJsb2FkZXIiIG91dC1ncmFwaC1oaWVyYXJjaHk9Int7Z3JhcGhIaWVyYXJjaHl9fSIgb3V0LWdyYXBoPSJ7e2dyYXBofX0iIG91dC1zdGF0cz0ie3tzdGF0c319IiBwcm9ncmVzcz0ie3tfZ3JhcGhQcm9ncmVzc319Ij48L3RmLWdyYXBoLWxvYWRlcj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIiBpZD0iY2VudGVyLWNvbnRlbnQiPgogICAgICAgIDxkaXYgaWQ9InRvcC1yaWdodC1xdWFkcmFudCI+CiAgICAgICAgICA8cGFwZXItdGFicyBzZWxlY3RlZD0ie3tfdG9wUmlnaHRTZWxlY3RlZH19Ij4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfdG9wUmlnaHRUYWJzXV0iPgogICAgICAgICAgICAgIDxwYXBlci10YWIgaWQ9IltbaXRlbS5pZF1dIj5bW2l0ZW0ubmFtZV1dPC9wYXBlci10YWI+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L3BhcGVyLXRhYnM+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJydW50aW1lLWdyYXBoLWRldmljZSI+CiAgICAgICAgICAgIDxzcGFuIGlkPSJydW50aW1lLWdyYXBoLWRldmljZS1uYW1lIj4gPC9zcGFuPgogICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBpZD0iYWN0aXZlLXJ1bnRpbWUtZ3JhcGgtZGV2aWNlLW5hbWUiIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIiBsYWJlbD0iRGV2aWNlIG5hbWUiIHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWV9fSI+CiAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfYWN0aXZlU2Vzc2lvblJ1bkRldmljZXNdXSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIG5vLWxhYmVsLWZsb2F0PSJ0cnVlIj5bW2l0ZW1dXTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgY2xhc3M9InNwaW5uZXIiIGlkPSJ0b3AtcmlnaHQtc3Bpbm5lciIgaGlkZGVuPSJbWyFfYnVzeV1dIiBhY3RpdmU9IltbX2J1c3ldXSI+CiAgICAgICAgICAgIDwvcGFwZXItc3Bpbm5lci1saXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cGFwZXItcHJvZ3Jlc3MgaWQ9InRvcC1yaWdodC1wcm9ncmVzcy1iYXIiIHZhbHVlPSIwIj48L3BhcGVyLXByb2dyZXNzPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1RvcFJpZ2h0UnVudGltZUdyYXBoc0FjdGl2ZV1dIj4KICAgICAgICAgICAgPGRpdiBpZD0iZ3JhcGgtY29udGFpbmVyIj4KICAgICAgICAgICAgICA8dGYtZ3JhcGggaWQ9ImdyYXBoIiBncmFwaC1oaWVyYXJjaHk9IltbZ3JhcGhIaWVyYXJjaHldXSIgYmFzaWMtZ3JhcGg9IltbZ3JhcGhdXSIgc3RhdHM9Iltbc3RhdHNdXSIgcHJvZ3Jlc3M9Int7X2dyYXBoUHJvZ3Jlc3N9fSIgY29sb3ItYnk9InN0cnVjdHVyZSIgY29sb3ItYnktcGFyYW1zPSJ7e2NvbG9yQnlQYXJhbXN9fSIgcmVuZGVyLWhpZXJhcmNoeT0ie3tfcmVuZGVySGllcmFyY2h5fX0iIG5vZGUtY29udGV4dC1tZW51LWl0ZW1zPSJbW19jcmVhdGVOb2RlQ29udGV4dE1lbnVJdGVtcygpXV0iPjwvdGYtZ3JhcGg+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGV4dC1tZW51Ij48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1RvcFJpZ2h0VGVuc29yVmFsdWVzQWN0aXZlXV0iPgogICAgICAgICAgICA8dGYtdGVuc29yLXZhbHVlLW11bHRpLXZpZXcgaWQ9InRlbnNvclZhbHVlTXVsdGlWaWV3IiBjb250aW51ZS10by1jYWxsYmFjaz0iW1tfY3JlYXRlQ29udGludWVUb0NhbGxiYWNrKCldXSIgdGVuc29yLW5hbWUtY2xpY2tlZD0iW1tfY3JlYXRlTm9kZUNsaWNrZWRIYW5kbGVyKCldXSIgZ2V0LWhlYWx0aC1waWxsPSJbW19jcmVhdGVHZXRIZWFsdGhQaWxsKCldXSI+CiAgICAgICAgICAgIDwvdGYtdGVuc29yLXZhbHVlLW11bHRpLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dGYtZGVidWdnZXItcmVzaXplciBpcy1ob3Jpem9udGFsPSJ0cnVlIiBjdXJyZW50LWxlbmd0aD0ie3tfdG9wUmlnaHRRdWFkcmFudEhlaWdodH19IiBtaW4tbGVuZ3RoPSJbW19taW5Ub3BSaWdodFF1YWRyYW50SGVpZ2h0XV0iIG1heC1sZW5ndGg9IltbX21heFRvcFJpZ2h0UXVhZHJhbnRIZWlnaHRdXSI+CiAgICAgICAgPC90Zi1kZWJ1Z2dlci1yZXNpemVyPgoKICAgICAgICA8ZGl2IGlkPSJ0ZW5zb3ItZGF0YSIgY2xhc3M9InRlbnNvci1kYXRhIj4KICAgICAgICAgIDx0Zi10ZW5zb3ItZGF0YS1zdW1tYXJ5IGlkPSJ0ZW5zb3JEYXRhU3VtbWFyeSIgbGF0ZXN0LXRlbnNvci1kYXRhPSJbW19sYXRlc3RUZW5zb3JEYXRhXV0iIGV4cGFuZC1oYW5kbGVyPSJbW19jcmVhdGVUZW5zb3JEYXRhRXhwYW5kSGFuZGxlcigpXV0iIGNvbnRpbnVlLXRvLWNhbGxiYWNrPSJbW19jcmVhdGVDb250aW51ZVRvQ2FsbGJhY2soKV1dIiBoaWdobGlnaHRlZC1ub2RlLW5hbWU9IltbX2hpZ2hsaWdodE5vZGVOYW1lXV0iIHRlbnNvci1uYW1lLWNsaWNrZWQ9IltbX2NyZWF0ZU5vZGVDbGlja2VkSGFuZGxlcigpXV0iIGdldC1oZWFsdGgtcGlsbD0iW1tfY3JlYXRlR2V0SGVhbHRoUGlsbCgpXV0iPgogICAgICAgICAgPC90Zi10ZW5zb3ItZGF0YS1zdW1tYXJ5PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KCiAgICA8c3R5bGUgaW5jbHVkZT0iZGFzaGJvYXJkLXN0eWxlIj48L3N0eWxlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CiAgICAgIHBhcGVyLXRvYXN0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgZm9udC1zaXplOiAxMTAlOwogICAgICAgIHdpZHRoOiA0MHZ3OwogICAgICAgIG1hcmdpbi1sZWZ0OiAzMHZ3OwogICAgICB9CiAgICAgIHRmLWRhc2hib2FyZC1sYXlvdXQgewogICAgICAgIC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLWJhc2lzOiBhdXRvOwogICAgICAgIC0tdGYtZGFzaGJvYXJkLWxheW91dC1zaWRlYmFyLW1heC13aWR0aDogbm9uZTsKICAgICAgICAtLXRmLWRhc2hib2FyZC1sYXlvdXQtc2lkZWJhci1taW4td2lkdGg6IG5vbmU7CiAgICAgIH0KICAgICAgLmRlYnVnZ2VyLXNlY3Rpb24tdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTEwJTsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICBwYXBlci10YWJzIHsKICAgICAgICBjb2xvcjogIzU1NTsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICB9CiAgICAgIHBhcGVyLXRhYi5pcm9uLXNlbGVjdGVkIHsKICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KICAgICAgI2luaXRpYWxEaWFsb2cgewogICAgICAgIC8qKiBUaGlzIG1hdGNoZXMgdGhlIGRlZmF1bHQgei1pbmRleCBvZiBwYXBlci1kaWFsb2cgYmFja2Ryb3BzLiAqLwogICAgICAgIHotaW5kZXg6IDEwMjsKICAgICAgfQogICAgICAvKiogUmVzaXplIHRoZSByZWdpb24gZm9yIHRoZSBncmFwaCBhcyB0aGUgdXNlciByZXNpemVzIHRoZSByZWdpb24uICovCiAgICAgICNncmFwaC1jb250YWluZXIgewogICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTIwcHgpOwogICAgICAgIC8qKiBDbGlwIHRoZSBtaW5pbWFwIGlmIHRoZSBoZWlnaHQgb2YgdGhlIGdyYXBoIGNvbnRhaW5lciBpcyBzbWFsbC4gKi8KICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICAjZ3JhcGggewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgI3Rvb2x0aXAtc29ydGluZyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICB9CiAgICAgICN0b29sdGlwLXNvcnRpbmctbGFiZWwgewogICAgICAgIG1hcmdpbi10b3A6IDEzcHg7CiAgICAgIH0KICAgICAgI3Rvb2x0aXAtc29ydGluZyBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CiAgICAgICN4LXR5cGUtc2VsZWN0b3IgcGFwZXItYnV0dG9uIHsKICAgICAgICBtYXJnaW46IDVweCAzcHg7CiAgICAgIH0KICAgICAgLnJ1bnRpbWUtZ3JhcGgtZGV2aWNlIHsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgICNydW50aW1lLWdyYXBoLWRldmljZS1uYW1lIHsKICAgICAgICBmb250LXNpemU6IDg1JTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICAgICNhY3RpdmUtcnVudGltZS1ncmFwaC1kZXZpY2UtbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiA4NSU7CiAgICAgICAgd2lkdGg6IDM1MHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQogICAgICAjdG9wLXJpZ2h0LXByb2dyZXNzLWJhciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KICAgICAgLmxpbmUtaXRlbSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZy10b3A6IDVweDsKICAgICAgfQogICAgICAubm8tZGF0YS13YXJuaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU0MHB4OwogICAgICAgIG1hcmdpbjogODBweCBhdXRvIDAgYXV0bzsKICAgICAgfQogICAgICAuc2lkZWJhciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXg6IHZpc2libGU7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CiAgICAgIC5jZW50ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgdGYtZGVidWdnZXItcmVzaXplciB7CiAgICAgICAgcmlnaHQ6IC0xMHB4OwogICAgICB9CiAgICAgICNjZW50ZXItY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICB9CiAgICAgIC8qKiBUaGUgcmVzaXplciBzaG91bGQgaGF2ZSBubyBzcGFjZSB0byB0aGUgbGVmdCBvZiBpdC4gKi8KICAgICAgI2NlbnRlci1jb250ZW50IHRmLWRlYnVnZ2VyLXJlc2l6ZXJbaXMtaG9yaXpvbnRhbF0gewogICAgICAgIG1hcmdpbi1sZWZ0OiAtMjNweDsKICAgICAgfQogICAgICAuY29udGV4dC1tZW51IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJlMmUyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWluLXdpZHRoOiAxNTBweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZDRkNGQ0OwogICAgICB9CiAgICAgIC5zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgfQogICAgICAubm9kZS1lbnRyaWVzIHsKICAgICAgICBib3gtc2hhZG93OiAzcHggM3B4ICNkZGQ7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBoZWlnaHQ6IDgwJTsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CiAgICAgICAgcGFkZGluZy10b3A6IDNweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuc291cmNlLWNvZGUtdmlldy1kaXYgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDQwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcGFkZGluZy10b3A6IDNweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKICAgICAgICBwYWRkaW5nLXJpZ2h0OiAzcHg7CiAgICAgICAgYm94LXNoYWRvdzogM3B4IDNweCAjZGRkOwogICAgICB9CiAgICAgICNzZXNzaW9uUnVuc1ZpZXcgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiAyNXZoOwogICAgICB9CiAgICAgIC5idXR0b25zLWNvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZzogMjBweCAwOwogICAgICB9CiAgICAgICN0ZW5zb3ItZGF0YSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDIwcHggMDsKICAgICAgICBtYXJnaW46IDAgMCAyMHB4IDA7CiAgICAgIH0KICAgICAgI3RlbnNvckRhdGFTdW1tYXJ5IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgdG9wOiAwOwogICAgICB9CiAgICAgICN0b3AtcmlnaHQtcXVhZHJhbnQgewogICAgICAgIGhlaWdodDogNjYlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CiAgICAgIC50b2dnbGUtc291cmNlLWNvZGUgewogICAgICAgIG1hcmdpbi1yaWdodDogMWVtOwogICAgICAgIGZvbnQtc2l6ZTogODAlOwogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgfQogICAgICAuY29udGV4dC1tZW51IHVsIHsKICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICAgIC5jb250ZXh0LW1lbnUgdWwgbGkgewogICAgICAgIHBhZGRpbmc6IDRweCAxNnB4OwogICAgICB9CiAgICAgIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICBwYXBlci1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICB9CiAgICAgIC5pbmxpbmUsCiAgICAgIHBhcGVyLWl0ZW0gewogICAgICAgIGRpc3BsYXk6IGlubGluZTsKICAgICAgfQoKICAgICAgdnotbGluZS1jaGFydCB7CiAgICAgICAgaGVpZ2h0OiAzMDBweDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgW2hpZGRlbl0gewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci1tYXRlcmlhbC1zaGFyZWQtc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjEiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tMmRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSIyIl0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTRkcDsKICAgICAgfQoKICAgICAgOmhvc3QoW2VsZXZhdGlvbj0iMyJdKSB7CiAgICAgICAgQGFwcGx5IC0tc2hhZG93LWVsZXZhdGlvbi02ZHA7CiAgICAgIH0KCiAgICAgIDpob3N0KFtlbGV2YXRpb249IjQiXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy1lbGV2YXRpb24tOGRwOwogICAgICB9CgogICAgICA6aG9zdChbZWxldmF0aW9uPSI1Il0pIHsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTE2ZHA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLW1hdGVyaWFsIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGUgaW5jbHVkZT0icGFwZXItbWF0ZXJpYWwtc2hhcmVkLXN0eWxlcyI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QoW2FuaW1hdGVkXSkgewogICAgICAgIEBhcHBseSAtLXNoYWRvdy10cmFuc2l0aW9uOwogICAgICB9CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1tYXRlcmlhbDsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBoMiB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIHsKICAgICAgICBwYWRkaW5nOiAxNXB4OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtbGVnZW5kIGgyIHsKICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgewogICAgICAgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMDsKICAgICAgfQoKICAgICAgLmhlYWx0aC1waWxsLWVudHJ5IC5jb2xvci1wcmV2aWV3IHsKICAgICAgICB3aWR0aDogMjZweDsKICAgICAgICBoZWlnaHQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBtYXJnaW46IDAgMTBweCAwIDA7CiAgICAgIH0KCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAuY29sb3ItbGFiZWwsCiAgICAgIC5oZWFsdGgtcGlsbC1lbnRyeSAudGVuc29yLWNvdW50IHsKICAgICAgICBjb2xvcjogIzc3NzsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAyNnB4OwogICAgICAgIGZvbnQtc2l6ZTogMjJweDsKICAgICAgICBsaW5lLWhlaWdodDogMjZweDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAuaGVhbHRoLXBpbGwtZW50cnkgLnRlbnNvci1jb3VudCB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAjaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbjogMCAwIDAgLTE1cHg7CiAgICAgICAgLyogMzEgY29tZXMgZnJvbSBhZGRpbmcgYSBwYWRkaW5nIG9mIDE1cHggZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBwYXBlci1zbGlkZXIsIHN1YnRyYWN0aW5nCiAgICogMXB4IHNvIHRoYXQgdGhlIHNsaWRlciB3aWR0aCBhbGlnbnMgd2l0aCB0aGUgaW1hZ2UgKHRoZSBsYXN0IHNsaWRlciBtYXJrZXIgdGFrZXMgdXAgMXB4KSwKICAgKiBhbmQgYWRkaW5nIDJweCB0byBhY2NvdW50IGZvciBhIGJvcmRlciBvZiAxcHggb24gYm90aCBzaWRlcyBvZiB0aGUgaW1hZ2UuIDMwIC0gMSArIDIuCiAgICogQXBwYXJlbnRseSwgdGhlIHBhcGVyLXNsaWRlciBsYWNrcyBhIG1peGluIGZvciB0aG9zZSBwYWRkaW5nIHZhbHVlcy4gKi8KICAgICAgICB3aWR0aDogY2FsYygxMDAlICsgMzFweCk7CiAgICAgIH0KCiAgICAgICNoZWFsdGgtcGlsbHMtbG9hZGluZy1zcGlubmVyIHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI2hlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IHsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlLWNvbnRhaW5lciB7CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNudW1lcmljLWFsZXJ0cy10YWJsZSB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgfQoKICAgICAgI251bWVyaWMtYWxlcnRzLXRhYmxlIHRkIHsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICB9CgogICAgICAjbnVtZXJpYy1hbGVydHMtdGFibGUgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgLmZpcnN0LW9mZmVuc2UtdGQgewogICAgICAgIHdpZHRoOiA4MHB4OwogICAgICB9CgogICAgICAudGVuc29yLWRldmljZS10ZCB7CiAgICAgICAgbWF4LXdpZHRoOiAxNDBweDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjMjY2MjM2OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KCiAgICAgIC50ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGU6aG92ZXIgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC5kZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUgewogICAgICAgIGNvbG9yOiAjNjY2OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCB7CiAgICAgICAgd2lkdGg6IDEzMHB4OwogICAgICB9CgogICAgICAubWluaS1oZWFsdGgtcGlsbCA+IGRpdiB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgfQoKICAgICAgI2V2ZW50LWNvdW50cy10aCB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgfQoKICAgICAgLm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24gewogICAgICAgIGJhY2tncm91bmQ6IHJnYigyNTUsIDE0MSwgMCk7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5wb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMCwgNjIsIDIxMik7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgIH0KCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMjA0LCA0NywgNDQpOwogICAgICAgIHdpZHRoOiAyMHB4OwogICAgICB9CgogICAgICAubmVnYXRpdmUtaW5mLW1pbmktaGVhbHRoLXBpbGwtc2VjdGlvbiwKICAgICAgLnBvc2l0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24sCiAgICAgIC5uYW4tbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIHsKICAgICAgICBjb2xvcjogI2ZmZjsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1hcmdpbjogMCAwIDAgMTBweDsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KCiAgICAgIC5uby1udW1lcmljLWFsZXJ0cy1ub3RpZmljYXRpb24gewogICAgICAgIG1hcmdpbjogMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGNsYXNzPSJjYXJkIGhlYWx0aC1waWxsLWxlZ2VuZCI+CiAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICBFbmFibGUgYWxsIChub3QganVzdCBzYW1wbGVkKSBzdGVwcy4gUmVxdWlyZXMgc2xvdyBkaXNrIHJlYWQuCiAgICAgIDwvZGl2PgogICAgICA8cGFwZXItdG9nZ2xlLWJ1dHRvbiBpZD0iZW5hYmxlQWxsU3RlcHNNb2RlVG9nZ2xlIiBjaGVja2VkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSI+CiAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgPGgyPgogICAgICAgIFN0ZXAgb2YgSGVhbHRoIFBpbGxzOgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1thbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgICAgPGlucHV0IHR5cGU9Im51bWJlciIgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtbnVtYmVyLWlucHV0IiBtaW49IjAiIG1heD0iW1tfYmlnZ2VzdFN0ZXBFdmVyU2Vlbl1dIiB2YWx1ZT0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwOjppbnB1dH19Ij4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shYWxsU3RlcHNNb2RlRW5hYmxlZF1dIj4KICAgICAgICAgIFtbX2N1cnJlbnRTdGVwRGlzcGxheVZhbHVlXV0KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDxwYXBlci1zcGlubmVyLWxpdGUgYWN0aXZlIGhpZGRlbiQ9IltbIWFyZUhlYWx0aFBpbGxzTG9hZGluZ11dIiBpZD0iaGVhbHRoLXBpbGxzLWxvYWRpbmctc3Bpbm5lciI+PC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgIDwvaDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1thbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgIDxwYXBlci1zbGlkZXIgaWQ9ImhlYWx0aC1waWxsLXN0ZXAtc2xpZGVyIiBpbW1lZGlhdGUtdmFsdWU9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19IiBtYXg9IltbX2JpZ2dlc3RTdGVwRXZlclNlZW5dXSIgc25hcHMgc3RlcD0iMSIgdmFsdWU9Int7c3BlY2lmaWNIZWFsdGhQaWxsU3RlcH19Ij48L3BhcGVyLXNsaWRlcj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFhbGxTdGVwc01vZGVFbmFibGVkXV0iPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfbWF4U3RlcEluZGV4XV0iPgogICAgICAgICAgPHBhcGVyLXNsaWRlciBpZD0iaGVhbHRoLXBpbGwtc3RlcC1zbGlkZXIiIGltbWVkaWF0ZS12YWx1ZT0ie3toZWFsdGhQaWxsU3RlcEluZGV4fX0iIG1heD0iW1tfbWF4U3RlcEluZGV4XV0iIHNuYXBzIHN0ZXA9IjEiIHZhbHVlPSJ7e2hlYWx0aFBpbGxTdGVwSW5kZXh9fSI+PC9wYXBlci1zbGlkZXI+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGgyPgogICAgICAgIEhlYWx0aCBQaWxsCiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hlYWx0aFBpbGxWYWx1ZXNGb3JTZWxlY3RlZE5vZGVdXSI+CiAgICAgICAgICBDb3VudHMgZm9yIFNlbGVjdGVkIE5vZGUKICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shaGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZV1dIj4KICAgICAgICAgIExlZ2VuZAogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvaDI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbaGVhbHRoUGlsbEVudHJpZXNdXSI+CiAgICAgICAgPGRpdiBjbGFzcz0iaGVhbHRoLXBpbGwtZW50cnkiPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItcHJldmlldyIgc3R5bGU9ImJhY2tncm91bmQ6W1tpdGVtLmJhY2tncm91bmRfY29sb3JdXSI+PC9kaXY+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sYWJlbCI+W1tpdGVtLmxhYmVsXV08L2Rpdj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRlbnNvci1jb3VudCI+CiAgICAgICAgICAgIFtbX2NvbXB1dGVUZW5zb3JDb3VudFN0cmluZyhoZWFsdGhQaWxsVmFsdWVzRm9yU2VsZWN0ZWROb2RlLAogICAgICAgICAgICBpbmRleCldXQogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDxkaXYgaGlkZGVuJD0iW1shX2hhc0RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyhkZWJ1Z2dlck51bWVyaWNBbGVydHMpXV0iPgogICAgICAgIDxoMiBpZD0ibnVtZXJpYy1hbGVydHMtaGVhZGVyIj5OdW1lcmljIEFsZXJ0czwvaDI+CiAgICAgICAgPHA+CiAgICAgICAgICBBbGVydHMgYXJlIHNvcnRlZCBmcm9tIHRvcCB0byBib3R0b20gYnkgaW5jcmVhc2luZyB0aW1lc3RhbXAuCiAgICAgICAgCiAgICAgICAgPGRpdiBpZD0ibnVtZXJpYy1hbGVydHMtdGFibGUtY29udGFpbmVyIj4KICAgICAgICAgIDx0YWJsZSBpZD0ibnVtZXJpYy1hbGVydHMtdGFibGUiPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRoPkZpcnN0IE9mZmVuc2U8L3RoPgogICAgICAgICAgICAgICAgPHRoPlRlbnNvciAoRGV2aWNlKTwvdGg+CiAgICAgICAgICAgICAgICA8dGggaWQ9ImV2ZW50LWNvdW50cy10aCI+RXZlbnQgQ291bnRzPC90aD4KICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHkgaWQ9Im51bWVyaWMtYWxlcnRzLWJvZHkiPjwvdGJvZHk+CiAgICAgICAgICA8L3RhYmxlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzKGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cyldXSI+CiAgICAgICAgPHAgY2xhc3M9Im5vLW51bWVyaWMtYWxlcnRzLW5vdGlmaWNhdGlvbiI+CiAgICAgICAgICBObyBudW1lcmljIGFsZXJ0cyBzbyBmYXIuIFRoYXQgaXMgbGlrZWx5IGdvb2QuIEFsZXJ0cyBpbmRpY2F0ZSB0aGUKICAgICAgICAgIHByZXNlbmNlIG9mIE5hTiBvciAoKy8tKSBJbmZpbml0eSB2YWx1ZXMsIHdoaWNoIG1heSBiZSBjb25jZXJuaW5nLgogICAgICAgIAogICAgICA8L3RlbXBsYXRlPgogICAgPC9wYXBlci1tYXRlcmlhbD4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJpcm9uLWxpc3QiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICAgIH0KICAgICAgfQoKICAgICAgI2l0ZW1zIHsKICAgICAgICBAYXBwbHkgLS1pcm9uLWxpc3QtaXRlbXMtY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgOmhvc3QoOm5vdChbZ3JpZF0pKSAjaXRlbXMgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjaXRlbXMgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8YXJyYXktc2VsZWN0b3IgaWQ9InNlbGVjdG9yIiBpdGVtcz0ie3tpdGVtc319IiBzZWxlY3RlZD0ie3tzZWxlY3RlZEl0ZW1zfX0iIHNlbGVjdGVkLWl0ZW09Int7c2VsZWN0ZWRJdGVtfX0iPjwvYXJyYXktc2VsZWN0b3I+CgogICAgPGRpdiBpZD0iaXRlbXMiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWl0ZW0tYm9keSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsgLyogbmVlZGVkIGZvciB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcyB0byB3b3JrIG9uIGZmICovCiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItanVzdGlmaWVkOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICB9CgogICAgICA6aG9zdChbdHdvLWxpbmVdKSB7CiAgICAgICAgbWluLWhlaWdodDogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXR3by1saW5lLW1pbi1oZWlnaHQsIDcycHgpOwogICAgICB9CgogICAgICA6aG9zdChbdGhyZWUtbGluZV0pIHsKICAgICAgICBtaW4taGVpZ2h0OiB2YXIoLS1wYXBlci1pdGVtLWJvZHktdGhyZWUtbGluZS1taW4taGVpZ2h0LCA4OHB4KTsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoKikgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoW3NlY29uZGFyeV0pIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1mb250LWJvZHkxOwoKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeS1jb2xvciwgdmFyKC0tc2Vjb25kYXJ5LXRleHQtY29sb3IpKTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItaXRlbS1ib2R5LXNlY29uZGFyeTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtZ3JhcGgtaWNvbiI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZm9udC1zaXplOiAwOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCB7CiAgICAgICAgZmlsbDogdXJsKCNyZWN0SGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtZWxsaXBzZSB7CiAgICAgICAgZmlsbDogdXJsKCNlbGxpcHNlSGF0Y2gpOwogICAgICB9CgogICAgICAuZmFkZWQtcmVjdCwKICAgICAgLmZhZGVkLWVsbGlwc2UsCiAgICAgIC5mYWRlZC1zZXJpZXMgewogICAgICAgIHN0cm9rZTogdmFyKC0tdGItZ3JhcGgtZmFkZWQpICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgICAgI3JlY3RIYXRjaCBsaW5lLAogICAgICAjZWxsaXBzZUhhdGNoIGxpbmUgewogICAgICAgIGNvbG9yOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogd2hpdGU7CiAgICAgICAgc3Ryb2tlOiAjZTBkNGIzICFpbXBvcnRhbnQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICAKICAgIDxzdmcgaGVpZ2h0PSIwIiB3aWR0aD0iMCIgaWQ9InN2Z0RlZnMiPgogICAgICA8ZGVmcz4KICAgICAgICAKICAgICAgICA8cGF0dGVybiBpZD0icmVjdEhhdGNoIiBwYXR0ZXJudHJhbnNmb3JtPSJyb3RhdGUoNDUgMCAwKSIgd2lkdGg9IjUiIGhlaWdodD0iNSIgcGF0dGVybnVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgICAgICA8bGluZSB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iNSIgc3R5bGU9InN0cm9rZS13aWR0aDogMSIgLz4KICAgICAgICA8L3BhdHRlcm4+CiAgICAgICAgPHBhdHRlcm4gaWQ9ImVsbGlwc2VIYXRjaCIgcGF0dGVybnRyYW5zZm9ybT0icm90YXRlKDQ1IDAgMCkiIHdpZHRoPSIyIiBoZWlnaHQ9IjIiIHBhdHRlcm51bml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICAgICAgPGxpbmUgeDE9IjAiIHkxPSIwIiB4Mj0iMCIgeTI9IjIiIHN0eWxlPSJzdHJva2Utd2lkdGg6IDEiIC8+CiAgICAgICAgPC9wYXR0ZXJuPgogICAgICAgIAogICAgICAgIDxlbGxpcHNlIGlkPSJvcC1ub2RlLXN0YW1wIiByeD0iNy41IiByeT0iMyIgc3Ryb2tlPSJpbmhlcml0IiBmaWxsPSJpbmhlcml0IiAvPgogICAgICAgIAogICAgICAgIDxlbGxpcHNlIGlkPSJvcC1ub2RlLWFubm90YXRpb24tc3RhbXAiIHJ4PSI1IiByeT0iMiIgc3Ryb2tlPSJpbmhlcml0IiBmaWxsPSJpbmhlcml0IiAvPgogICAgICAgIAogICAgICAgIDxnIGlkPSJvcC1zZXJpZXMtdmVydGljYWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iOCIgeT0iOSIgLz4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjYiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSI4IiB5PSIzIiAvPgogICAgICAgIDwvZz4KICAgICAgICA8ZyBpZD0ib3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiPgogICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjb3Atbm9kZS1zdGFtcCIgeD0iMTYiIHk9IjQiIC8+CiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNvcC1ub2RlLXN0YW1wIiB4PSIxMiIgeT0iNCIgLz4KICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIHg9IjgiIHk9IjQiIC8+CiAgICAgICAgPC9nPgogICAgICAgIDxnIGlkPSJzdW1tYXJ5LWljb24iIGZpbGw9IiM4NDg0ODQiIGhlaWdodD0iMTIiIHZpZXdib3g9IjAgMCAyNCAyNCIgd2lkdGg9IjEyIj4KICAgICAgICAgIDxwYXRoIGQ9Ik0xOSAzSDVjLTEuMSAwLTIgLjktMiAydjE0YzAgMS4xLjkgMiAyIDJoMTRjMS4xIDAgMi0uOSAyLTJWNWMwLTEuMS0uOS0yLTItMnpNOSAxN0g3di03aDJ2N3ptNCAwaC0yVjdoMnYxMHptNCAwaC0ydi00aDJ2NHoiIC8+CiAgICAgICAgPC9nPgogICAgICA8L2RlZnM+CiAgICA8L3N2Zz4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNUeXBlKHR5cGUsICdDT05TVCcpXV0iPgogICAgICA8c3ZnIGhlaWdodCQ9IltbaGVpZ2h0XV0iIHByZXNlcnZlYXNwZWN0cmF0aW89InhNaW5ZTWlkIG1lZXQiIHZpZXdib3g9IjAgMCAxMCAxMCI+CiAgICAgICAgPGNpcmNsZSBjeD0iNSIgY3k9IjUiIHI9IjMiIGZpbGwkPSJbW19maWxsXV0iIHN0cm9rZSQ9IltbX3N0cm9rZV1dIiAvPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnU1VNTUFSWScpXV0iPgogICAgICA8c3ZnIHdpZHRoJD0iW1toZWlnaHRdXSIgaGVpZ2h0JD0iW1toZWlnaHRdXSIgdmlld2JveD0iMCAwIDI0IDI0IiBmaWxsPSIjODQ4NDg0Ij4KICAgICAgICA8cGF0aCBkPSJNMTkgM0g1Yy0xLjEgMC0yIC45LTIgMnYxNGMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6TTkgMTdIN3YtN2gydjd6bTQgMGgtMlY3aDJ2MTB6bTQgMGgtMnYtNGgydjR6IiAvPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnT1AnKV1dIj4KICAgICAgPHN2ZyBoZWlnaHQkPSJbW2hlaWdodF1dIiBwcmVzZXJ2ZWFzcGVjdHJhdGlvPSJ4TWluWU1pZCBtZWV0IiB2aWV3Ym94PSIwIDAgMTYgOCI+CiAgICAgICAgPHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI29wLW5vZGUtc3RhbXAiIGZpbGwkPSJbW19maWxsXV0iIHN0cm9rZSQ9IltbX3N0cm9rZV1dIiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdlbGxpcHNlJyl9fSIgeD0iOCIgeT0iNCIgLz4KICAgICAgPC9zdmc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc1R5cGUodHlwZSwgJ01FVEEnKV1dIj4KICAgICAgPHN2ZyBoZWlnaHQkPSJbW2hlaWdodF1dIiBwcmVzZXJ2ZWFzcGVjdHJhdGlvPSJ4TWluWU1pZCBtZWV0IiB2aWV3Ym94PSIwIDAgMzcgMTYiPgogICAgICAgIDxyZWN0IHg9IjEiIHk9IjEiIGZpbGwkPSJbW19maWxsXV0iIHN0cm9rZSQ9IltbX3N0cm9rZV1dIiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdyZWN0Jyl9fSIgc3Ryb2tlLXdpZHRoPSIycHgiIGhlaWdodD0iMTQiIHdpZHRoPSIzNSIgcng9IjUiIHJ5PSI1IiAvPgogICAgICA8L3N2Zz4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzVHlwZSh0eXBlLCAnU0VSSUVTJyldXSI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1t2ZXJ0aWNhbF1dIj4KICAgICAgICA8c3ZnIGhlaWdodCQ9IltbaGVpZ2h0XV0iIHByZXNlcnZlYXNwZWN0cmF0aW89InhNaW5ZTWlkIG1lZXQiIHZpZXdib3g9IjAgMCAxNiAxNSI+CiAgICAgICAgICA8dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjb3Atc2VyaWVzLXZlcnRpY2FsLXN0YW1wIiBmaWxsJD0iW1tfZmlsbF1dIiBzdHJva2UkPSJbW19zdHJva2VdXSIgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGZhZGVkLCAnc2VyaWVzJyl9fSIgeD0iMCIgeT0iMiIgLz4KICAgICAgICA8L3N2Zz4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyF2ZXJ0aWNhbF1dIj4KICAgICAgICA8c3ZnIGhlaWdodCQ9IltbaGVpZ2h0XV0iIHByZXNlcnZlYXNwZWN0cmF0aW89InhNaW5ZTWlkIG1lZXQiIHZpZXdib3g9IjAgMCAyNCAxMCI+CiAgICAgICAgICA8dXNlIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bGluazpocmVmPSIjb3Atc2VyaWVzLWhvcml6b250YWwtc3RhbXAiIGZpbGwkPSJbW19maWxsXV0iIHN0cm9rZSQ9IltbX3N0cm9rZV1dIiBjbGFzcyQ9Int7X2ZhZGVkQ2xhc3MoZmFkZWQsICdzZXJpZXMnKX19IiB4PSIwIiB5PSIxIiAvPgogICAgICAgIDwvc3ZnPgogICAgICA8L3RlbXBsYXRlPgogICAgPC90ZW1wbGF0ZT4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ub2RlLWljb24iPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgLS10Yi1ncmFwaC1mYWRlZDogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRmLWdyYXBoLWljb24gaWQ9Imljb24iIHR5cGU9IltbX2dldFR5cGUobm9kZSwgc3VtbWFyeSwgY29uc3QsIHR5cGUpXV0iIGhlaWdodD0iW1toZWlnaHRdXSIgZmlsbC1vdmVycmlkZT0iW1tfZmlsbE92ZXJyaWRlXV0iIHN0cm9rZS1vdmVycmlkZT0iW1tfZ2V0U3Ryb2tlT3ZlcnJpZGUoX2ZpbGxPdmVycmlkZSldXSIgZmFkZWQ9IltbX2dldEZhZGVkKHJlbmRlckluZm8pXV0iIHZlcnRpY2FsPSJbW19pc1ZlcnRpY2FsKG5vZGUsIHZlcnRpY2FsKV1dIj48L3RmLWdyYXBoLWljb24+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgo8ZG9tLW1vZHVsZSBpZD0idGYtZ3JhcGgtb3AtY29tcGF0LWxpc3QtaXRlbSI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAjbGlzdC1pdGVtIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBjb2xvcjogIzU2NTY1NjsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CgogICAgICAjbGlzdC1pdGVtOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1nb29nbGUteWVsbG93LTEwMCk7CiAgICAgIH0KCiAgICAgIC5jbGlja2FibGUgewogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuIHsKICAgICAgICBtYXJnaW4tbGVmdDogNDBweDsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbS5leGNsdWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbSBzcGFuLmVkZ2UtbGFiZWwgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMXB4OwogICAgICAgIGxlZnQ6IDJweDsKICAgICAgfQoKICAgICAgLmZhZGVkIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS10Yi1ncmFwaC1mYWRlZCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0ibGlzdC1pdGVtIiBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIiBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciI+CiAgICAgIDxkaXYgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGl0ZW1SZW5kZXJJbmZvKX19Ij4KICAgICAgICA8dGYtbm9kZS1pY29uIGNsYXNzPSJub2RlLWljb24iIGhlaWdodD0iMTIiIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIgbm9kZT0iW1tpdGVtTm9kZV1dIiByZW5kZXItaW5mbz0iW1tpdGVtUmVuZGVySW5mb11dIiB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iPgogICAgICAgIDwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InRmLWdyYXBoLW9wLWNvbXBhdC1jYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgICAgfQoKICAgICAgLmluY29tcGF0aWJsZS1vcHMtbGlzdCB7CiAgICAgICAgaGVpZ2h0OiAzNTBweDsKICAgICAgICBtYXgtaGVpZ2h0OiA0MDBweDsKICAgICAgICBvdmVyZmxvdy15OiBzY3JvbGw7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICBpcm9uLWxpc3QgewogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICB9CgogICAgICBwYXBlci1pdGVtIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIGJhY2tncm91bmQ6ICNlOWU5ZTk7CiAgICAgIH0KCiAgICAgIHBhcGVyLWl0ZW0tYm9keVt0d28tbGluZV0gewogICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHggNHB4OwogICAgICB9CgogICAgICAuZXhwYW5kZWRJbmZvIHsKICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLm5vZGUtbmFtZSB7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIC5zdWJ0aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIGNvbG9yOiAjNWU1ZTVlOwogICAgICB9CgogICAgICAudG9nZ2xlLWJ1dHRvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC5ub24tY29udHJvbC1saXN0LWl0ZW0gewogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQoKICAgICAgZGl2Lm9wLWNvbXBhdC1kaXNwbGF5IHsKICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgc3ZnLm9wLWNvbXBhdCB7CiAgICAgICAgd2lkdGg6IDI1MHB4OwogICAgICAgIGhlaWdodDogMjVweDsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgfQoKICAgICAgZGl2Lm9wLWNvbXBhdC12YWx1ZSB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgY29sb3I6IGJsYWNrOwogICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxwYXBlci1pdGVtPgogICAgICA8cGFwZXItaXRlbS1ib2R5IHR3by1saW5lPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfZXhwYW5kZWQpfX0iIG9uLWNsaWNrPSJfdG9nZ2xlRXhwYW5kZWQiIGNsYXNzPSJ0b2dnbGUtYnV0dG9uIj4KICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJub2RlLW5hbWUiIGlkPSJub2RldGl0bGUiPltbbm9kZVRpdGxlXV08L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib3AtY29tcGF0LWRpc3BsYXkiPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9wLWNvbXBhdCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pbllNaWQgbWVldCIgdmlld2JveD0iMCAwIDI1MCAyNSI+CiAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgPGxpbmVhcmdyYWRpZW50IGlkPSJvcC1jb21wYXQtZmlsbCI+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0JD0iW1tfb3BDb21wYXRTY29yZV1dIiBzdG9wLWNvbG9yJD0iW1tfb3BDb21wYXRDb2xvcl1dIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0JD0iW1tfb3BDb21wYXRTY29yZV1dIiBzdG9wLWNvbG9yJD0iW1tfb3BJbmNvbXBhdENvbG9yXV0iPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3IkPSJbW19vcEluY29tcGF0Q29sb3IgXV0iPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgPC9saW5lYXJncmFkaWVudD4KICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgIDxyZWN0IGhlaWdodD0iMjUiIHdpZHRoPSIyNTAiIHJ4PSI1IiByeT0iNSIgc3R5bGU9ImZpbGw6IHVybCgnI29wLWNvbXBhdC1maWxsJyk7IiAvPgogICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9wLWNvbXBhdC12YWx1ZSI+W1tfb3BDb21wYXRTY29yZUxhYmVsXV08L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9wYXBlci1pdGVtLWJvZHk+CiAgICA8L3BhcGVyLWl0ZW0+CgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgSW5jb21wYXRpYmxlIE9wZXJhdGlvbnM6ICg8c3Bhbj5bW190b3RhbEluY29tcGF0T3BzXV08L3NwYW4+KQogICAgICAgICAgPGlyb24tbGlzdCBjbGFzcz0iaW5jb21wYXRpYmxlLW9wcy1saXN0IiBpZD0iaW5jb21wYXRpYmxlT3BzTGlzdCIgaXRlbXM9IltbX2luY29tcGF0aWJsZU9wTm9kZXNdXSI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICA8dGYtZ3JhcGgtb3AtY29tcGF0LWxpc3QtaXRlbSBjbGFzcz0ibm9uLWNvbnRyb2wtbGlzdC1pdGVtIiBpdGVtLW5vZGU9IltbaXRlbV1dIiBpdGVtLXJlbmRlci1pbmZvPSJbW19nZXRSZW5kZXJJbmZvKGl0ZW0ubmFtZSwgcmVuZGVySGllcmFyY2h5KV1dIiBuYW1lPSJbW2l0ZW0ubmFtZV1dIiB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIiBjb2xvci1ieT0iW1tjb2xvckJ5XV0iIGl0ZW0tdHlwZT0iaW5jb21wYXRpYmxlLW9wcyI+CiAgICAgICAgICAgICAgPC90Zi1ncmFwaC1vcC1jb21wYXQtbGlzdC1pdGVtPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2lyb24tY29sbGFwc2U+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtbm9kZS1saXN0LWl0ZW0iPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgI2xpc3QtaXRlbSB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgY29sb3I6ICM1NjU2NTY7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgfQoKICAgICAgI2xpc3QtaXRlbTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICAuY2xpY2thYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3BhbiB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0uZXhjbHVkZWQgc3BhbiB7CiAgICAgICAgY29sb3I6ICM5OTk7CiAgICAgIH0KCiAgICAgICNsaXN0LWl0ZW0gc3Bhbi5lZGdlLWxhYmVsIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIG1hcmdpbi1sZWZ0OiAzcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7CiAgICAgIH0KCiAgICAgIC5ub2RlLWljb24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDFweDsKICAgICAgICBsZWZ0OiAycHg7CiAgICAgIH0KCiAgICAgIC5mYWRlZCBzcGFuIHsKICAgICAgICBjb2xvcjogdmFyKC0tdGItZ3JhcGgtZmFkZWQpOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPGRpdiBpZD0ibGlzdC1pdGVtIiBvbi1tb3VzZW92ZXI9Il9ub2RlTGlzdGVuZXIiIG9uLW1vdXNlb3V0PSJfbm9kZUxpc3RlbmVyIiBvbi1jbGljaz0iX25vZGVMaXN0ZW5lciI+CiAgICAgIDxkaXYgY2xhc3MkPSJ7e19mYWRlZENsYXNzKGl0ZW1SZW5kZXJJbmZvKX19Ij4KICAgICAgICA8dGYtbm9kZS1pY29uIGNsYXNzPSJub2RlLWljb24iIGhlaWdodD0iMTIiIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIgbm9kZT0iW1tpdGVtTm9kZV1dIiByZW5kZXItaW5mbz0iW1tpdGVtUmVuZGVySW5mb11dIiB0ZW1wbGF0ZS1pbmRleD0iW1t0ZW1wbGF0ZUluZGV4XV0iPjwvdGYtbm9kZS1pY29uPgogICAgICAgIDxzcGFuIHRpdGxlJD0iW1tuYW1lXV0iPltbbmFtZV1dPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJlZGdlLWxhYmVsIj5bW2VkZ2VMYWJlbF1dPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InRmLW5vZGUtaW5mbyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAuc3ViLWxpc3QtZ3JvdXAgewogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zaXplOiAxMnB0OwogICAgICAgIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdCB7CiAgICAgICAgbWF4LWhlaWdodDogMzAwcHg7CiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsOwogICAgICB9CgogICAgICAuYXR0ci1sZWZ0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICB3aWR0aDogMzAlOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBjb2xvcjogIzU2NTY1NjsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLmF0dHItcmlnaHQgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMCU7CiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwogICAgICAgIGNvbG9yOiAjNTY1NjU2OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZSB7CiAgICAgICAgZGlzcGxheTogdGFibGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5zdWItbGlzdC10YWJsZS1yb3cgewogICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdzsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLXJvdyAuc3ViLWxpc3QtdGFibGUtY2VsbDpsYXN0LWNoaWxkIHsKICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgICAgfQoKICAgICAgLnN1Yi1saXN0LXRhYmxlLWNlbGwgewogICAgICAgIGNvbG9yOiAjNTY1NjU2OwogICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7CiAgICAgICAgZm9udC1zaXplOiAxMXB0OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICBwYWRkaW5nOiAwIDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaXRlbSB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBiYWNrZ3JvdW5kOiAjZTllOWU5OwogICAgICB9CgogICAgICBwYXBlci1pdGVtLWJvZHlbdHdvLWxpbmVdIHsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIHBhZGRpbmc6IDhweCAxMnB4IDRweDsKICAgICAgfQoKICAgICAgLmV4cGFuZGVkSW5mbyB7CiAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgIH0KCiAgICAgIC5jb250cm9sRGVwcyB7CiAgICAgICAgcGFkZGluZzogMCAwIDAgOHB4OwogICAgICB9CgogICAgICAubm9kZS1uYW1lIHsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKICAgICAgICBmb250LXNpemU6IDE0cHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgfQoKICAgICAgLm5vZGUtaWNvbiB7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICB9CgogICAgICAuc3VidGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsKICAgICAgICBjb2xvcjogIzVlNWU1ZTsKICAgICAgfQoKICAgICAgLmNvbnRyb2xMaW5lIHsKICAgICAgICBmb250LXNpemU6IDExcHQ7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgfQoKICAgICAgLnRvZ2dsZS1idXR0b24gewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuY29udHJvbC10b2dnbGUtYnV0dG9uIHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgICBtYXgtaGVpZ2h0OiAyMHB4OwogICAgICAgIG1heC13aWR0aDogMjBweDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudG9nZ2xlLWluY2x1ZGUtZ3JvdXAgewogICAgICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZSB7CiAgICAgICAgbWFyZ2luOiA1cHggNnB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgICAgIHBhZGRpbmc6IDRweCA2cHg7CiAgICAgICAgZm9udC1zaXplOiAxMHB0OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZhZmE7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtaW5jbHVkZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ29vZ2xlLXllbGxvdy0xMDApOwogICAgICB9CgogICAgICAubm9uLWNvbnRyb2wtbGlzdC1pdGVtIHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8cGFwZXItaXRlbT4KICAgICAgPHBhcGVyLWl0ZW0tYm9keSB0d28tbGluZT4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249Int7X2dldFRvZ2dsZUljb24oX2V4cGFuZGVkKX19IiBvbi1jbGljaz0iX3RvZ2dsZUV4cGFuZGVkIiBjbGFzcz0idG9nZ2xlLWJ1dHRvbiI+CiAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm9kZS1uYW1lIiBpZD0ibm9kZXRpdGxlIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHNlY29uZGFyeT4KICAgICAgICAgIDx0Zi1ub2RlLWljb24gY2xhc3M9Im5vZGUtaWNvbiIgbm9kZT0iW1tfbm9kZV1dIiByZW5kZXItaW5mbz0iW1tfZ2V0UmVuZGVySW5mbyhncmFwaE5vZGVOYW1lLCByZW5kZXJIaWVyYXJjaHkpXV0iIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSI+PC90Zi1ub2RlLWljb24+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUub3B9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1YnRpdGxlIj4KICAgICAgICAgICAgICBPcGVyYXRpb246CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5vcF1dPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGUubWV0YWdyYXBofX0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWJ0aXRsZSI+CiAgICAgICAgICAgICAgU3ViZ3JhcGg6CiAgICAgICAgICAgICAgPHNwYW4+W1tfbm9kZS5jYXJkaW5hbGl0eV1dPC9zcGFuPiBub2RlcwogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvcGFwZXItaXRlbS1ib2R5PgogICAgPC9wYXBlci1pdGVtPgogICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19leHBhbmRlZH19Ij4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19leHBhbmRlZH19IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJleHBhbmRlZEluZm8iPgogICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgYXR0cmlidXRlcyI+CiAgICAgICAgICAgIEF0dHJpYnV0ZXMgKDxzcGFuPltbX2F0dHJpYnV0ZXMubGVuZ3RoXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0IGNsYXNzPSJzdWItbGlzdCIgaWQ9ImF0dHJpYnV0ZXNMaXN0IiBpdGVtcz0iW1tfYXR0cmlidXRlc11dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPltbaXRlbS5rZXldXTwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLXJpZ2h0Ij5bW2l0ZW0udmFsdWVdXTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2RldmljZX19Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgZGV2aWNlIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhdHRyLWxlZnQiPkRldmljZTwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImF0dHItcmlnaHQiPltbX2RldmljZV1dPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC1ncm91cCBwcmVkZWNlc3NvcnMiPgogICAgICAgICAgICBJbnB1dHMgKDxzcGFuPltbX3RvdGFsUHJlZGVjZXNzb3JzXV08L3NwYW4+KQogICAgICAgICAgICA8aXJvbi1saXN0IGNsYXNzPSJzdWItbGlzdCIgaWQ9ImlucHV0c0xpc3QiIGl0ZW1zPSJbW19wcmVkZWNlc3NvcnMucmVndWxhcl1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbm9kZS1saXN0LWl0ZW0gY2xhc3M9Im5vbi1jb250cm9sLWxpc3QtaXRlbSIgY2FyZC1ub2RlPSJbW19ub2RlXV0iIGl0ZW0tbm9kZT0iW1tpdGVtLm5vZGVdXSIgZWRnZS1sYWJlbD0iW1tpdGVtLmVkZ2VMYWJlbF1dIiBpdGVtLXJlbmRlci1pbmZvPSJbW2l0ZW0ucmVuZGVySW5mb11dIiBuYW1lPSJbW2l0ZW0ubmFtZV1dIiBpdGVtLXR5cGU9InByZWRlY2Vzc29ycyIgY29sb3ItYnk9IltbY29sb3JCeV1dIiB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIj4KICAgICAgICAgICAgICAgIDwvdGYtbm9kZS1saXN0LWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfcHJlZGVjZXNzb3JzLmNvbnRyb2wubGVuZ3RoXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xEZXBzIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2xMaW5lIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249Int7X2dldFRvZ2dsZUljb24oX29wZW5lZENvbnRyb2xQcmVkKX19IiBvbi1jbGljaz0iX3RvZ2dsZUNvbnRyb2xQcmVkIiBjbGFzcz0iY29udHJvbC10b2dnbGUtYnV0dG9uIj4KICAgICAgICAgICAgICAgICAgPC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgICAgICAgQ29udHJvbCBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlyb24tY29sbGFwc2Ugb3BlbmVkPSJ7e19vcGVuZWRDb250cm9sUHJlZH19IiBuby1hbmltYXRpb24+CiAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfb3BlbmVkQ29udHJvbFByZWR9fSIgcmVzdGFtcD0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgPGlyb24tbGlzdCBjbGFzcz0ic3ViLWxpc3QiIGl0ZW1zPSJbW19wcmVkZWNlc3NvcnMuY29udHJvbF1dIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtIGNhcmQtbm9kZT0iW1tfbm9kZV1dIiBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iIG5hbWU9IltbaXRlbS5uYW1lXV0iIGl0ZW0tdHlwZT0icHJlZGVjZXNzb3JzIiBjb2xvci1ieT0iW1tjb2xvckJ5XV0iIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDwvaXJvbi1jb2xsYXBzZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIHN1Y2Nlc3NvcnMiPgogICAgICAgICAgICBPdXRwdXRzICg8c3Bhbj5bW190b3RhbFN1Y2Nlc3NvcnNdXTwvc3Bhbj4pCiAgICAgICAgICAgIDxpcm9uLWxpc3QgY2xhc3M9InN1Yi1saXN0IiBpZD0ib3V0cHV0c0xpc3QiIGl0ZW1zPSJbW19zdWNjZXNzb3JzLnJlZ3VsYXJdXSI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iIGNhcmQtbm9kZT0iW1tfbm9kZV1dIiBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iIGVkZ2UtbGFiZWw9IltbaXRlbS5lZGdlTGFiZWxdXSIgaXRlbS1yZW5kZXItaW5mbz0iW1tpdGVtLnJlbmRlckluZm9dXSIgbmFtZT0iW1tpdGVtLm5hbWVdXSIgaXRlbS10eXBlPSJzdWNjZXNzb3IiIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIgdGVtcGxhdGUtaW5kZXg9IltbX3RlbXBsYXRlSW5kZXhdXSI+CiAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvaXJvbi1saXN0PgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N1Y2Nlc3NvcnMuY29udHJvbC5sZW5ndGhdXSI+CiAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbERlcHMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udHJvbExpbmUiPgogICAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0ie3tfZ2V0VG9nZ2xlSWNvbihfb3BlbmVkQ29udHJvbFN1Y2MpfX0iIG9uLWNsaWNrPSJfdG9nZ2xlQ29udHJvbFN1Y2MiIGNsYXNzPSJjb250cm9sLXRvZ2dsZS1idXR0b24iPgogICAgICAgICAgICAgICAgICA8L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY2llcwogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aXJvbi1jb2xsYXBzZSBvcGVuZWQ9Int7X29wZW5lZENvbnRyb2xTdWNjfX0iIG5vLWFuaW1hdGlvbj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJ7e19vcGVuZWRDb250cm9sU3VjY319IiByZXN0YW1wPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8aXJvbi1saXN0IGNsYXNzPSJzdWItbGlzdCIgaXRlbXM9IltbX3N1Y2Nlc3NvcnMuY29udHJvbF1dIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtIGNhcmQtbm9kZT0iW1tfbm9kZV1dIiBpdGVtLW5vZGU9IltbaXRlbS5ub2RlXV0iIGl0ZW0tcmVuZGVyLWluZm89IltbaXRlbS5yZW5kZXJJbmZvXV0iIG5hbWU9IltbaXRlbS5uYW1lXV0iIGl0ZW0tdHlwZT0ic3VjY2Vzc29ycyIgY29sb3ItYnk9IltbY29sb3JCeV1dIiB0ZW1wbGF0ZS1pbmRleD0iW1tfdGVtcGxhdGVJbmRleF1dIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90Zi1ub2RlLWxpc3QtaXRlbT4KICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgICAgPC9pcm9uLWxpc3Q+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2lyb24tY29sbGFwc2U+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfaGFzRGlzcGxheWFibGVOb2RlU3RhdHN9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LWdyb3VwIG5vZGUtc3RhdHMiPgogICAgICAgICAgICAgIE5vZGUgU3RhdHMKICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZSI+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy50b3RhbEJ5dGVzfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPk1lbW9yeTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXNdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X2dldFRvdGFsTWljcm9zKF9ub2RlU3RhdHMpfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPkNvbXB1dGUgVGltZTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPgogICAgICAgICAgICAgICAgICAgICAgW1tfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWVdXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7X25vZGVTdGF0cy5vdXRwdXRTaXplfX0iPgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1yb3ciPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InN1Yi1saXN0LXRhYmxlLWNlbGwiPlRlbnNvciBPdXRwdXQgU2l6ZXM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzdWItbGlzdC10YWJsZS1jZWxsIj4KICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9Int7X25vZGVTdGF0c0Zvcm1hdHRlZE91dHB1dFNpemVzfX0iPgogICAgICAgICAgICAgICAgICAgICAgICBbW2l0ZW1dXSA8YnI+CiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KCiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2Z1bmN0aW9uVXNhZ2VzLmxlbmd0aF1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic3ViLWxpc3QtZ3JvdXAgcHJlZGVjZXNzb3JzIj4KICAgICAgICAgICAgICBVc2FnZXMgb2YgdGhlIEZ1bmN0aW9uICg8c3Bhbj5bW19mdW5jdGlvblVzYWdlcy5sZW5ndGhdXTwvc3Bhbj4pCiAgICAgICAgICAgICAgPGlyb24tbGlzdCBjbGFzcz0ic3ViLWxpc3QiIGlkPSJmdW5jdGlvblVzYWdlc0xpc3QiIGl0ZW1zPSJbW19mdW5jdGlvblVzYWdlc11dIj4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgPHRmLW5vZGUtbGlzdC1pdGVtIGNsYXNzPSJub24tY29udHJvbC1saXN0LWl0ZW0iIGNhcmQtbm9kZT0iW1tfbm9kZV1dIiBpdGVtLW5vZGU9IltbaXRlbV1dIiBuYW1lPSJbW2l0ZW0ubmFtZV1dIiBpdGVtLXR5cGU9ImZ1bmN0aW9uVXNhZ2VzIiBjb2xvci1ieT0iW1tjb2xvckJ5XV0iIHRlbXBsYXRlLWluZGV4PSJbW190ZW1wbGF0ZUluZGV4XV0iPgogICAgICAgICAgICAgICAgICA8L3RmLW5vZGUtbGlzdC1pdGVtPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L2lyb24tbGlzdD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2lzTGlicmFyeUZ1bmN0aW9uKF9ub2RlKV1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9nZ2xlLWluY2x1ZGUtZ3JvdXAiPgogICAgICAgICAgICAgIDxwYXBlci1idXR0b24gcmFpc2VkIGNsYXNzPSJ0b2dnbGUtaW5jbHVkZSIgb24tY2xpY2s9Il90b2dnbGVJbmNsdWRlIj4KICAgICAgICAgICAgICAgIDxzcGFuPltbX2F1eEJ1dHRvblRleHRdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0ie3tfaXNJblNlcmllcyhfbm9kZSl9fSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvZ2dsZS1pbmNsdWRlLWdyb3VwIj4KICAgICAgICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZCBjbGFzcz0idG9nZ2xlLWluY2x1ZGUiIG9uLWNsaWNrPSJfdG9nZ2xlR3JvdXAiPgogICAgICAgICAgICAgICAgPHNwYW4+W1tfZ3JvdXBCdXR0b25UZXh0XV08L3NwYW4+CiAgICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvaXJvbi1jb2xsYXBzZT4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ncmFwaC1pbmZvIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNjUwcHg7CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIGgyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Int7c2VsZWN0ZWROb2RlfX0iPgogICAgICA8cGFwZXItbWF0ZXJpYWwgZWxldmF0aW9uPSIxIiBjbGFzcz0iY2FyZCI+CiAgICAgICAgPHRmLW5vZGUtaW5mbyBncmFwaC1oaWVyYXJjaHk9IltbZ3JhcGhIaWVyYXJjaHldXSIgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIgZmxhdC1ncmFwaD0iW1tncmFwaF1dIiBncmFwaC1ub2RlLW5hbWU9Iltbc2VsZWN0ZWROb2RlXV0iIG5vZGUtaW5jbHVkZT0iW1tzZWxlY3RlZE5vZGVJbmNsdWRlXV0iIGhpZ2hsaWdodGVkLW5vZGU9Int7aGlnaGxpZ2h0ZWROb2RlfX0iIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSI+CiAgICAgICAgPC90Zi1ub2RlLWluZm8+CiAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ29wX2NvbXBhdGliaWxpdHknKV1dIj4KICAgICAgPHRmLWdyYXBoLW9wLWNvbXBhdC1jYXJkIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIiBoaWVyYXJjaHktcGFyYW1zPSJbW2hpZXJhcmNoeVBhcmFtc11dIiByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIiBjb2xvci1ieT0iW1tjb2xvckJ5XV0iIG5vZGUtdGl0bGU9IltbY29tcGF0Tm9kZVRpdGxlXV0iPgogICAgICA8L3RmLWdyYXBoLW9wLWNvbXBhdC1jYXJkPgogICAgPC90ZW1wbGF0ZT4KICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGVhbHRoUGlsbHNBdmFpbGFibGUoZGVidWdnZXJEYXRhRW5hYmxlZCwgbm9kZU5hbWVzVG9IZWFsdGhQaWxscyldXSI+CiAgICAgIDx0Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQgcmVuZGVyLWhpZXJhcmNoeT0iW1tyZW5kZXJIaWVyYXJjaHldXSIgZGVidWdnZXItbnVtZXJpYy1hbGVydHM9IltbZGVidWdnZXJOdW1lcmljQWxlcnRzXV0iIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW25vZGVOYW1lc1RvSGVhbHRoUGlsbHNdXSIgc2VsZWN0ZWQtbm9kZT0ie3tzZWxlY3RlZE5vZGV9fSIgaGlnaGxpZ2h0ZWQtbm9kZT0ie3toaWdobGlnaHRlZE5vZGV9fSIgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIiBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19Ij4KICAgICAgPC90Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQ+CiAgICA8L3RlbXBsYXRlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ncmFwaC1ib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6Omhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CgogICAgICAvZGVlcC8gLmNsb3NlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGxlZnQ6IDE1cHg7CiAgICAgICAgYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAuY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nIHsKICAgICAgICBjdXJzb3I6IHByb2dyZXNzOwogICAgICAgIG9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLmNvbnRhaW5lci5sb2FkaW5nLmVycm9yIHsKICAgICAgICBjdXJzb3I6IGF1dG87CiAgICAgIH0KCiAgICAgICNpbmZvIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICB0b3A6IDVweDsKICAgICAgICBwYWRkaW5nOiAwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAzODBweDsKICAgICAgICBtaW4td2lkdGg6IDMyMHB4OwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICBAYXBwbHkgLS1zaGFkb3ctZWxldmF0aW9uLTJkcDsKICAgICAgfQoKICAgICAgI21haW4gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNDBweDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQoKICAgICAgI3Byb2dyZXNzLW1zZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgIH0KCiAgICAgIHBhcGVyLXByb2dyZXNzIHsKICAgICAgICB3aWR0aDogNDAwcHg7CiAgICAgICAgLS1wYXBlci1wcm9ncmVzcy1oZWlnaHQ6IDZweDsKICAgICAgICAtLXBhcGVyLXByb2dyZXNzLWFjdGl2ZS1jb2xvcjogI2YzOTEzZTsKICAgICAgfQoKICAgICAgLmNvbnRleHQtbWVudSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UyZTJlMjsKICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1pbi13aWR0aDogMTUwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2Q0ZDRkNDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgewogICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KCiAgICAgIC9kZWVwLyAuY29udGV4dC1tZW51IHVsIGxpIHsKICAgICAgICBwYWRkaW5nOiA0cHggMTZweDsKICAgICAgfQoKICAgICAgL2RlZXAvIC5jb250ZXh0LW1lbnUgdWwgbGk6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMzkxM2U7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICA8L3N0eWxlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19pc05vdENvbXBsZXRlKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0icHJvZ3Jlc3MtYmFyIj4KICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzcy1tc2ciPltbcHJvZ3Jlc3MubXNnXV08L2Rpdj4KICAgICAgICA8cGFwZXItcHJvZ3Jlc3MgdmFsdWU9IltbcHJvZ3Jlc3MudmFsdWVdXSI+PC9wYXBlci1wcm9ncmVzcz4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPGRpdiBjbGFzcyQ9IltbX2dldENvbnRhaW5lckNsYXNzKHByb2dyZXNzKV1dIj4KICAgICAgPGRpdiBpZD0ibWFpbiI+CiAgICAgICAgPHRmLWdyYXBoIGlkPSJncmFwaCIgZ3JhcGgtaGllcmFyY2h5PSJ7e2dyYXBoSGllcmFyY2h5fX0iIGJhc2ljLWdyYXBoPSJbW2dyYXBoXV0iIGhpZXJhcmNoeS1wYXJhbXM9IltbaGllcmFyY2h5UGFyYW1zXV0iIHJlbmRlci1oaWVyYXJjaHk9Int7cmVuZGVySGllcmFyY2h5fX0iIGRldmljZXMtZm9yLXN0YXRzPSJbW2RldmljZXNGb3JTdGF0c11dIiBzdGF0cz0iW1tzdGF0c11dIiBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IiBoaWdobGlnaHRlZC1ub2RlPSJ7e19oaWdobGlnaHRlZE5vZGV9fSIgY29sb3ItYnk9IltbY29sb3JCeV1dIiBjb2xvci1ieS1wYXJhbXM9Int7Y29sb3JCeVBhcmFtc319IiBwcm9ncmVzcz0ie3twcm9ncmVzc319IiBlZGdlLWxhYmVsLWZ1bmN0aW9uPSJbW2VkZ2VMYWJlbEZ1bmN0aW9uXV0iIGVkZ2Utd2lkdGgtZnVuY3Rpb249IltbZWRnZVdpZHRoRnVuY3Rpb25dXSIgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIiBoZWFsdGgtcGlsbC1zdGVwLWluZGV4PSJbW2hlYWx0aFBpbGxTdGVwSW5kZXhdXSIgaGFuZGxlLW5vZGUtc2VsZWN0ZWQ9IltbaGFuZGxlTm9kZVNlbGVjdGVkXV0iIGhhbmRsZS1lZGdlLXNlbGVjdGVkPSJbW2hhbmRsZUVkZ2VTZWxlY3RlZF1dIiB0cmFjZS1pbnB1dHM9IltbdHJhY2VJbnB1dHNdXSI+PC90Zi1ncmFwaD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImluZm8iPgogICAgICAgIDx0Zi1ncmFwaC1pbmZvIGlkPSJncmFwaC1pbmZvIiB0aXRsZT0ic2VsZWN0ZWQiIGdyYXBoLWhpZXJhcmNoeT0iW1tncmFwaEhpZXJhcmNoeV1dIiBoaWVyYXJjaHktcGFyYW1zPSJbW2hpZXJhcmNoeVBhcmFtc11dIiByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIiBncmFwaD0iW1tncmFwaF1dIiBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IiBzZWxlY3RlZC1ub2RlLWluY2x1ZGU9Int7X3NlbGVjdGVkTm9kZUluY2x1ZGV9fSIgaGlnaGxpZ2h0ZWQtbm9kZT0ie3tfaGlnaGxpZ2h0ZWROb2RlfX0iIGNvbG9yLWJ5PSJbW2NvbG9yQnldXSIgY29sb3ItYnktcGFyYW1zPSJbW2NvbG9yQnlQYXJhbXNdXSIgZGVidWdnZXItZGF0YS1lbmFibGVkPSJbW2RlYnVnZ2VyRGF0YUVuYWJsZWRdXSIgYXJlLWhlYWx0aC1waWxscy1sb2FkaW5nPSJbW2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIiBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tkZWJ1Z2dlck51bWVyaWNBbGVydHNdXSIgbm9kZS1uYW1lcy10by1oZWFsdGgtcGlsbHM9Iltbbm9kZU5hbWVzVG9IZWFsdGhQaWxsc11dIiBhbGwtc3RlcHMtbW9kZS1lbmFibGVkPSJ7e2FsbFN0ZXBzTW9kZUVuYWJsZWR9fSIgc3BlY2lmaWMtaGVhbHRoLXBpbGwtc3RlcD0ie3tzcGVjaWZpY0hlYWx0aFBpbGxTdGVwfX0iIGhlYWx0aC1waWxsLXN0ZXAtaW5kZXg9Int7aGVhbHRoUGlsbFN0ZXBJbmRleH19IiBjb21wYXQtbm9kZS10aXRsZT0iW1tjb21wYXROb2RlVGl0bGVdXSIgb24tbm9kZS10b2dnbGUtaW5jbHVzaW9uPSJfb25Ob2RlSW5jbHVzaW9uVG9nZ2xlZCIgb24tbm9kZS10b2dnbGUtc2VyaWVzZ3JvdXA9Il9vbk5vZGVTZXJpZXNHcm91cFRvZ2dsZWQiPjwvdGYtZ3JhcGgtaW5mbz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLXJhZGlvLWJ1dHRvbiI+CiAgPHRlbXBsYXRlIHN0cmlwLXdoaXRlc3BhY2U+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgbGluZS1oZWlnaHQ6IDA7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemU6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplLCAxNnB4KTsKICAgICAgICAvKiAtMXB4IGlzIGEgc2VudGluZWwgZm9yIHRoZSBkZWZhdWx0IGFuZCBpcyByZXBsYWNlIGluIGBhdHRhY2hlZGAuICovCiAgICAgICAgLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZTogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplLCAtMXB4KTsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgI3JhZGlvQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaW5saW5lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXItY2VudGVyOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci1yYWRpby1idXR0b24tc2l6ZSk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1zaXplKTsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwoKICAgICAgICBAYXBwbHkgLS1wYXBlci1yYWRpby1idXR0b24tcmFkaW8tY29udGFpbmVyOwogICAgICB9CgogICAgICAjaW5rIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIHJpZ2h0OiBhdXRvOwogICAgICAgIHdpZHRoOiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSk7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXJhZGlvLWJ1dHRvbi1pbmstc2l6ZSk7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtaW5rLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgfQoKICAgICAgI2lua1tjaGVja2VkXSB7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWluay1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgICB9CgogICAgICAjb2ZmUmFkaW8sICNvblJhZGlvIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICB0b3A6IDA7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICB9CgogICAgICAjb2ZmUmFkaW8gewogICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtY29sb3IsIHZhcigtLXByaW1hcnktdGV4dC1jb2xvcikpOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi11bmNoZWNrZWQtYmFja2dyb3VuZC1jb2xvciwgdHJhbnNwYXJlbnQpOwogICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjI4czsKICAgICAgfQoKICAgICAgI29uUmFkaW8gewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LWNvbG9yKSk7CiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7CiAgICAgICAgdHJhbnNpdGlvbjogLXdlYmtpdC10cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gZWFzZSAwLjI4czsKICAgICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pICNvZmZSYWRpbyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tY2hlY2tlZC1jb2xvciwgdmFyKC0tcHJpbWFyeS1jb2xvcikpOwogICAgICB9CgogICAgICA6aG9zdChbY2hlY2tlZF0pICNvblJhZGlvIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7CiAgICAgIH0KCiAgICAgICNyYWRpb0xhYmVsIHsKICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICBtYXJnaW4tbGVmdDogdmFyKC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLXNwYWNpbmcsIDEwcHgpOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgY29sb3I6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1jb2xvciwgdmFyKC0tcHJpbWFyeS10ZXh0LWNvbG9yKSk7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbDsKICAgICAgfQoKICAgICAgOmhvc3QoW2NoZWNrZWRdKSAjcmFkaW9MYWJlbCB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItcmFkaW8tYnV0dG9uLWxhYmVsLWNoZWNrZWQ7CiAgICAgIH0KCiAgICAgICNyYWRpb0xhYmVsOmRpcihydGwpIHsKICAgICAgICBtYXJnaW4tbGVmdDogMDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXBhcGVyLXJhZGlvLWJ1dHRvbi1sYWJlbC1zcGFjaW5nLCAxMHB4KTsKICAgICAgfQoKICAgICAgI3JhZGlvTGFiZWxbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLyogZGlzYWJsZWQgc3RhdGUgKi8KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pICNvZmZSYWRpbyB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF1bY2hlY2tlZF0pICNvblJhZGlvIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1yYWRpby1idXR0b24tdW5jaGVja2VkLWNvbG9yLCB2YXIoLS1wcmltYXJ5LXRleHQtY29sb3IpKTsKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtkaXNhYmxlZF0pICNyYWRpb0xhYmVsIHsKICAgICAgICAvKiBzbGlnaHRseSBkYXJrZXIgdGhhbiB0aGUgYnV0dG9uLCBzbyB0aGF0IGl0J3MgcmVhZGFibGUgKi8KICAgICAgICBvcGFjaXR5OiAwLjY1OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InJhZGlvQ29udGFpbmVyIj4KICAgICAgPGRpdiBpZD0ib2ZmUmFkaW8iPjwvZGl2PgogICAgICA8ZGl2IGlkPSJvblJhZGlvIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InJhZGlvTGFiZWwiPjxzbG90Pjwvc2xvdD48L2Rpdj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLXJhZGlvLWdyb3VwIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KCiAgICAgIDpob3N0IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgcGFkZGluZzogdmFyKC0tcGFwZXItcmFkaW8tZ3JvdXAtaXRlbS1wYWRkaW5nLCAxMnB4KTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8c2xvdD48L3Nsb3Q+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0icGFwZXItdG9vbHRpcCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgei1pbmRleDogMTAwMjsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIHVzZXItc2VsZWN0OiBub25lOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItdG9vbHRpcC1iYWNrZ3JvdW5kLCAjNjE2MTYxKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbHRpcC10ZXh0LWNvbG9yLCB3aGl0ZSk7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwOwogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lU2NhbGVVcCB7CiAgICAgICAgMCUgewogICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjApOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTY2FsZURvd24gewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuMCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lRmFkZUluT3BhY2l0eSB7CiAgICAgICAgMCUgewogICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBAa2V5ZnJhbWVzIGtleUZyYW1lRmFkZU91dE9wYWNpdHkgewogICAgICAgIDAlIHsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgQGtleWZyYW1lcyBrZXlGcmFtZVNsaWRlRG93bkluIHsKICAgICAgICAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgICAxMCUgewogICAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgIH0KICAgICAgICAxMDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIEBrZXlmcmFtZXMga2V5RnJhbWVTbGlkZURvd25PdXQgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICB9CiAgICAgICAgMTAlIHsKICAgICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwMDBweCk7CiAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLmZhZGUtaW4tYW5pbWF0aW9uIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGFuaW1hdGlvbi1kZWxheTogdmFyKC0tcGFwZXItdG9vbHRpcC1kZWxheS1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZUZhZGVJbk9wYWNpdHk7CiAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMTsKICAgICAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1pbiwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuZmFkZS1vdXQtYW5pbWF0aW9uIHsKICAgICAgICBvcGFjaXR5OiB2YXIoLS1wYXBlci10b29sdGlwLW9wYWNpdHksIDAuOSk7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVGYWRlT3V0T3BhY2l0eTsKICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxOwogICAgICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW47CiAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiB2YXIoLS1wYXBlci10b29sdGlwLWR1cmF0aW9uLW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRvb2x0aXAtYW5pbWF0aW9uOwogICAgICB9CgogICAgICAuc2NhbGUtdXAtYW5pbWF0aW9uIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tbmFtZToga2V5RnJhbWVTY2FsZVVwOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24taW4sIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNjYWxlLWRvd24tYW5pbWF0aW9uIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2NhbGVEb3duOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1pbjsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5zbGlkZS1kb3duLWFuaW1hdGlvbiB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMDAwcHgpOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiB2YXIoLS1wYXBlci10b29sdGlwLWRlbGF5LW91dCwgNTAwbXMpOwogICAgICAgIGFuaW1hdGlvbi1uYW1lOiBrZXlGcmFtZVNsaWRlRG93bkluOwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogdmFyKC0tcGFwZXItdG9vbHRpcC1kdXJhdGlvbi1vdXQsIDUwMG1zKTsKICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkczsKICAgICAgICBAYXBwbHkgLS1wYXBlci10b29sdGlwLWFuaW1hdGlvbjsKICAgICAgfQoKICAgICAgLnNsaWRlLWRvd24tYW5pbWF0aW9uLW91dCB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIG9wYWNpdHk6IHZhcigtLXBhcGVyLXRvb2x0aXAtb3BhY2l0eSwgMC45KTsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IHZhcigtLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLW5hbWU6IGtleUZyYW1lU2xpZGVEb3duT3V0OwogICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDE7CiAgICAgICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IHZhcigtLXBhcGVyLXRvb2x0aXAtZHVyYXRpb24tb3V0LCA1MDBtcyk7CiAgICAgICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbHRpcC1hbmltYXRpb247CiAgICAgIH0KCiAgICAgIC5jYW5jZWwtYW5pbWF0aW9uIHsKICAgICAgICBhbmltYXRpb24tZGVsYXk6IC0zMHMgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLyogVGhhbmtzIElFIDEwLiAqLwoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgaWQ9InRvb2x0aXAiIGNsYXNzPSJoaWRkZW4iPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWdyYXBoLW5vZGUtc2VhcmNoIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJzZWFyY2gtY29udGFpbmVyIj4KICAgICAgPHBhcGVyLWlucHV0IGlkPSJydW5zLXJlZ2V4IiBsYWJlbD0iU2VhcmNoIG5vZGVzLiBSZWdleGVzIHN1cHBvcnRlZC4iIHZhbHVlPSJ7e19yYXdSZWdleElucHV0fX0iPgogICAgICA8L3BhcGVyLWlucHV0PgogICAgICA8ZGl2IGlkPSJzZWFyY2gtcmVzdWx0cy1hbmNob3IiPgogICAgICAgIDxkaXYgaWQ9InNlYXJjaC1yZXN1bHRzIj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX3JlZ2V4TWF0Y2hlc11dIj4KICAgICAgICAgICAgPGRpdiBpZD0ic2VhcmNoLW1hdGNoIiBvbi1jbGljaz0iX21hdGNoQ2xpY2tlZCI+W1tpdGVtXV08L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgICNzZWFyY2gtY29udGFpbmVyIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgfQoKICAgICAgI3J1bnMtcmVnZXggewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAjc2VhcmNoLXJlc3VsdHMtYW5jaG9yIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtcmVzdWx0cyB7CiAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAjc2VhcmNoLW1hdGNoIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgICAgZmxvYXQ6IHJpZ2h0OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlyZWN0aW9uOiBydGw7CiAgICAgIH0KCiAgICAgICNzZWFyY2gtbWF0Y2g6aG92ZXIgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLW9yYW5nZS13ZWFrKTsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ncmFwaC1jb250cm9scyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgLS1wYXBlci1kcm9wZG93bi1tZW51LWlucHV0OiB7CiAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgICAgfQogICAgICAgIC0taXJvbi1pY29uLXdpZHRoOiAxNXB4OwogICAgICAgIC0taXJvbi1pY29uLWhlaWdodDogMTVweDsKICAgICAgICAtLXByaW1hcnktdGV4dC1jb2xvcjogZ3JheTsKICAgICAgICAtLXBhcGVyLWl0ZW0tbWluLWhlaWdodDogMzBweDsKICAgICAgfQoKICAgICAgcGFwZXItYnV0dG9uW3JhaXNlZF0ua2V5Ym9hcmQtZm9jdXMgewogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgIH0KCiAgICAgIC5ydW4tZHJvcGRvd24gewogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyOiB7CiAgICAgICAgICBwYWRkaW5nOiA4cHggMCA4cHggMTBweDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC5jb2xvci1kcm9wZG93biB7CiAgICAgICAgLS1wYXBlci1pbnB1dC1jb250YWluZXI6IHsKICAgICAgICAgIHBhZGRpbmc6IDlweCAwIDAgMTNweDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHRhYmxlIHsKICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwogICAgICAgIGJvcmRlci1zcGFjaW5nOiAwOwogICAgICB9CgogICAgICB0YWJsZSB0ZCB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyB7CiAgICAgICAgcGFkZGluZzogMCAyMHB4IDIwcHg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgIC5sZWdlbmQtaG9sZGVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZTllOWU5OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjY2NjOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgY29sb3I6ICM1NTU7CiAgICAgICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICAudG9nZ2xlLWxlZ2VuZC1idXR0b24gewogICAgICAgIG1heC1oZWlnaHQ6IDIwcHg7CiAgICAgICAgbWF4LXdpZHRoOiAyMHB4OwogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgIH0KCiAgICAgIC50b2dnbGUtbGVnZW5kLXRleHQgewogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogNXB4OwogICAgICB9CiAgICAgIHN2Zy5pY29uLAogICAgICB0Zi1ncmFwaC1pY29uIHsKICAgICAgICB3aWR0aDogNjBweDsKICAgICAgICBoZWlnaHQ6IDE4cHg7CiAgICAgIH0KICAgICAgLmRvbWFpblZhbHVlcyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB3aWR0aDogMTY1cHg7CiAgICAgIH0KICAgICAgLmRvbWFpblN0YXJ0IHsKICAgICAgICBmbG9hdDogbGVmdDsKICAgICAgfQogICAgICAuZG9tYWluRW5kIHsKICAgICAgICBmbG9hdDogcmlnaHQ7CiAgICAgIH0KICAgICAgLmNvbG9yQm94IHsKICAgICAgICB3aWR0aDogMjBweDsKICAgICAgfQoKICAgICAgLmltYWdlLWljb24gewogICAgICAgIHdpZHRoOiAyNHB4OwogICAgICAgIGhlaWdodDogMjRweDsKICAgICAgfQoKICAgICAgLmhlbHAtaWNvbiB7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAuZ3JheSB7CiAgICAgICAgY29sb3I6ICM2NjY7CiAgICAgIH0KCiAgICAgIC50aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIG1hcmdpbjogOHB4IDVweCA4cHggMDsKICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgIH0KICAgICAgLnRpdGxlIHNtYWxsIHsKICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwogICAgICB9CiAgICAgIC5kZXZpY2VMaXN0LAogICAgICAueGxhQ2x1c3Rlckxpc3QgewogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgIH0KCiAgICAgICNmaWxlIHsKICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgfQoKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgewogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDIwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICB9CgogICAgICAuY29sb3ItbGVnZW5kLXJvdyAubGFiZWwsCiAgICAgIC5jb2xvci1sZWdlbmQtcm93IHN2ZywKICAgICAgLmNvbG9yLWxlZ2VuZC1yb3cgdGYtZ3JhcGgtaWNvbiB7CiAgICAgICAgZmxleDogMCAwIDQwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4OwogICAgICB9CgogICAgICAuZGV2aWNlcy1jaGVja2JveCBpbnB1dCB7CiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgICB9CgogICAgICAuY29udHJvbC1ob2xkZXIgLmljb24tYnV0dG9uIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbWFyZ2luOiAwIC01cHg7CiAgICAgICAgcGFkZGluZzogNXB4OwogICAgICB9CgogICAgICAuYnV0dG9uLXRleHQgewogICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKICAgICAgfQoKICAgICAgLnVwbG9hZC1idXR0b24gewogICAgICAgIHdpZHRoOiAxNjVweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICB9CgogICAgICAuYnV0dG9uLWljb24gewogICAgICAgIHdpZHRoOiAyNnB4OwogICAgICAgIGhlaWdodDogMjZweDsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItb3JhbmdlLTUwMCk7CiAgICAgIH0KCiAgICAgIC5oaWRkZW4taW5wdXQgewogICAgICAgIGhlaWdodDogMHB4OwogICAgICAgIHdpZHRoOiAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLmFsbGNvbnRyb2xzIC5jb250cm9sLWhvbGRlciB7CiAgICAgICAgY2xlYXI6IGJvdGg7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAuY29udHJvbC1ob2xkZXIgcGFwZXItcmFkaW8tZ3JvdXAgewogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQoKICAgICAgc3Bhbi5jb3VudGVyIHsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgY29sb3I6IGdyYXk7CiAgICAgIH0KCiAgICAgIC5ydW5zIHBhcGVyLWl0ZW0gewogICAgICAgIC0tcGFwZXItaXRlbTogewogICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHRhYmxlLmNvbnRyb2wtaG9sZGVyIHsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKICAgICAgfQoKICAgICAgdGFibGUudGYtZ3JhcGgtY29udHJvbHMgdGQuaW5wdXQtZWxlbWVudC10YWJsZS1kYXRhIHsKICAgICAgICBwYWRkaW5nOiAwIDAgMCAyMHB4OwogICAgICB9CgogICAgICAuc3BhY2VyIHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KCiAgICAgIC5jb2xvci10ZXh0IHsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAvKiogT3ZlcnJpZGUgaW5saW5lIHN0eWxlcyB0aGF0IHN1cHByZXNzIHBvaW50ZXIgZXZlbnRzIGZvciBkaXNhYmxlZCBidXR0b25zLiBPdGhlcndpc2UsIHRoZSAqLwogICAgICAvKiAgdG9vbHRpcHMgZG8gbm90IGFwcGVhci4gKi8KICAgICAgcGFwZXItcmFkaW8tZ3JvdXAgcGFwZXItcmFkaW8tYnV0dG9uIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAubGVnZW5kLWNsYXJpZmllciB7CiAgICAgICAgY29sb3I6ICMyNjYyMzY7CiAgICAgICAgY3Vyc29yOiBoZWxwOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgfQoKICAgICAgLmxlZ2VuZC1jbGFyaWZpZXIgcGFwZXItdG9vbHRpcCB7CiAgICAgICAgd2lkdGg6IDE1MHB4OwogICAgICB9CgogICAgICAvKiogT3RoZXJ3aXNlLCBwb2x5bWVyIFVJIGNvbnRyb2xzIGFwcGVhciBhdG9wIG5vZGUgc2VhcmNoLiAqLwogICAgICB0Zi1ncmFwaC1ub2RlLXNlYXJjaCB7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgcGFwZXItZHJvcGRvd24tbWVudSB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxkaXYgY2xhc3M9ImFsbGNvbnRyb2xzIj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDx0Zi1ncmFwaC1ub2RlLXNlYXJjaCBzZWxlY3RlZC1ub2RlPSJ7e3NlbGVjdGVkTm9kZX19IiByZW5kZXItaGllcmFyY2h5PSJbW3JlbmRlckhpZXJhcmNoeV1dIj48L3RmLWdyYXBoLW5vZGUtc2VhcmNoPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1idXR0b24gY2xhc3M9Imljb24tYnV0dG9uIiBvbi10YXA9Il9maXQiIGFsdD0iRml0IHRvIHNjcmVlbiI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImFzcGVjdC1yYXRpbyIgY2xhc3M9ImJ1dHRvbi1pY29uIj48L2lyb24taWNvbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJidXR0b24tdGV4dCI+Rml0IHRvIFNjcmVlbjwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8cGFwZXItYnV0dG9uIGNsYXNzPSJpY29uLWJ1dHRvbiIgb24tY2xpY2s9ImRvd25sb2FkIiBhbHQ9IkRvd25sb2FkIFBORyI+CiAgICAgICAgICA8aXJvbi1pY29uIGljb249ImZpbGUtZG93bmxvYWQiIGNsYXNzPSJidXR0b24taWNvbiI+PC9pcm9uLWljb24+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iYnV0dG9uLXRleHQiPkRvd25sb2FkIFBORzwvc3Bhbj4KICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICA8YSBocmVmPSIjIiBpZD0iZ3JhcGhkb3dubG9hZCIgY2xhc3M9InRpdGxlIiBkb3dubG9hZD0iZ3JhcGgucG5nIj48L2E+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciBydW5zIj4KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+CiAgICAgICAgICBSdW4gPHNwYW4gY2xhc3M9ImNvdW50ZXIiPihbW2RhdGFzZXRzLmxlbmd0aF1dKTwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBuby1sYWJlbC1mbG9hdCBuby1hbmltYXRpb25zIG5vaW5rIGhvcml6b250YWwtYWxpZ249ImxlZnQiIGNsYXNzPSJydW4tZHJvcGRvd24iPgogICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSJ7e19zZWxlY3RlZFJ1bkluZGV4fX0iIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW2RhdGFzZXRzXV0iPgogICAgICAgICAgICAgIDxwYXBlci1pdGVtPltbaXRlbS5uYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICA8L2Rpdj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW3Nob3dTZXNzaW9uUnVuc0Ryb3Bkb3duXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4KICAgICAgICAgICAgVGFnCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb3VudGVyIj4oW1tfbnVtVGFncyhkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgpXV0pPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBuby1sYWJlbC1mbG9hdCBuby1hbmltYXRpb25zIGhvcml6b250YWwtYWxpZ249ImxlZnQiIG5vaW5rIGNsYXNzPSJydW4tZHJvcGRvd24iPgogICAgICAgICAgICA8cGFwZXItbGlzdGJveCBjbGFzcz0iZHJvcGRvd24tY29udGVudCIgc2VsZWN0ZWQ9Int7X3NlbGVjdGVkVGFnSW5kZXh9fSIgc2xvdD0iZHJvcGRvd24tY29udGVudCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfZ2V0VGFncyhkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgpXV0iPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+W1tpdGVtLmRpc3BsYXlOYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9Iltbc2hvd1VwbG9hZEJ1dHRvbl1dIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjb250cm9sLWhvbGRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+VXBsb2FkPC9kaXY+CiAgICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZCBjbGFzcz0idXBsb2FkLWJ1dHRvbiIgb24tY2xpY2s9Il9nZXRGaWxlIiB0aXRsZT0iVXBsb2FkIGEgZ3JhcGggcGJ0eHQgZmlsZSB0byB2aWV3IHRoZSBncmFwaCI+CiAgICAgICAgICAgIENob29zZSBGaWxlCiAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhpZGRlbi1pbnB1dCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJmaWxlIiBpZD0iZmlsZSIgbmFtZT0iZmlsZSIgb24tY2hhbmdlPSJfdXBkYXRlRmlsZUlucHV0IiBhY2NlcHQ9Ii5wYnR4dCI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxwYXBlci1yYWRpby1ncm91cCBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRHcmFwaFR5cGV9fSI+CiAgICAgICAgICAKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0ib3BfZ3JhcGgiIGRpc2FibGVkPSJbW19nZXRTZWxlY3Rpb25PcEdyYXBoRGlzYWJsZWQoZGF0YXNldHMsIF9zZWxlY3RlZFJ1bkluZGV4LCBfc2VsZWN0ZWRUYWdJbmRleCldXSI+R3JhcGg8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iY29uY2VwdHVhbF9ncmFwaCIgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvbkNvbmNlcHR1YWxHcmFwaERpc2FibGVkKGRhdGFzZXRzLCBfc2VsZWN0ZWRSdW5JbmRleCwgX3NlbGVjdGVkVGFnSW5kZXgpXV0iPkNvbmNlcHR1YWwgR3JhcGg8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0icHJvZmlsZSIgZGlzYWJsZWQ9IltbX2dldFNlbGVjdGlvblByb2ZpbGVEaXNhYmxlZChkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4KV1dIj5Qcm9maWxlPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgPHBhcGVyLXRvZ2dsZS1idXR0b24gY2hlY2tlZD0ie3t0cmFjZUlucHV0c319IiBjbGFzcz0idGl0bGUiPgogICAgICAgICAgICBUcmFjZSBpbnB1dHMKICAgICAgICAgIDwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWFsdGhQaWxsc0ZlYXR1cmVFbmFibGVkXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtaG9sZGVyIj4KICAgICAgICAgIDxwYXBlci10b2dnbGUtYnV0dG9uIGNoZWNrZWQ9Int7aGVhbHRoUGlsbHNUb2dnbGVkT259fSIgY2xhc3M9InRpdGxlIj5TaG93IGhlYWx0aCBwaWxsczwvcGFwZXItdG9nZ2xlLWJ1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPGRpdiBjbGFzcz0iY29udHJvbC1ob2xkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj5Db2xvcjwvZGl2PgogICAgICAgIDxwYXBlci1yYWRpby1ncm91cCBzZWxlY3RlZD0ie3tjb2xvckJ5fX0iPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJzdHJ1Y3R1cmUiPlN0cnVjdHVyZTwvcGFwZXItcmFkaW8tYnV0dG9uPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iZGV2aWNlIj5EZXZpY2U8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJ4bGEtY2x1c3Rlci1yYWRpby1idXR0b24iIG5hbWU9InhsYV9jbHVzdGVyIiBkaXNhYmxlZD0iW1shX3hsYUNsdXN0ZXJzUHJvdmlkZWQocmVuZGVySGllcmFyY2h5KV1dIj4KICAgICAgICAgICAgWExBIENsdXN0ZXIKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAgYW5pbWF0aW9uLWRlbGF5PSIwIiBmb3I9InhsYS1jbHVzdGVyLXJhZGlvLWJ1dHRvbiIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICBDb2xvcmluZyBieSBYTEEgY2x1c3RlciBpcyBvbmx5IGVuYWJsZWQgaWYgYXQgbGVhc3QgMSBvcCBzcGVjaWZpZXMKICAgICAgICAgICAgYW4gWExBIGNsdXN0ZXIuCiAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CgogICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIgbmFtZT0iY29tcHV0ZV90aW1lIiBkaXNhYmxlZD0iW1shc3RhdHNdXSI+CiAgICAgICAgICAgIENvbXB1dGUgdGltZQogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIGZvcj0iY29tcHV0ZS10aW1lLXJhZGlvLWJ1dHRvbiIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICBDb2xvcmluZyBieSBjb21wdXRlIHRpbWUgaXMgb25seSBlbmFibGVkIGlmIHRoZSBSdW5NZXRhZGF0YSBwcm90byBpcwogICAgICAgICAgICBwYXNzZWQgdG8gdGhlIEZpbGVXcml0ZXIgd2hlbiBhIHNwZWNpZmljIHNlc3Npb24gaXMgcnVuLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9Im1lbW9yeS1yYWRpby1idXR0b24iIG5hbWU9Im1lbW9yeSIgZGlzYWJsZWQ9IltbIXN0YXRzXV0iPgogICAgICAgICAgICBNZW1vcnkKICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgPHBhcGVyLXRvb2x0aXAgYW5pbWF0aW9uLWRlbGF5PSIwIiBmb3I9Im1lbW9yeS1yYWRpby1idXR0b24iIHBvc2l0aW9uPSJyaWdodCIgb2Zmc2V0PSIwIj4KICAgICAgICAgICAgQ29sb3JpbmcgYnkgbWVtb3J5IGlzIG9ubHkgZW5hYmxlZCBpZiB0aGUgUnVuTWV0YWRhdGEgcHJvdG8gaXMKICAgICAgICAgICAgcGFzc2VkIHRvIHRoZSBGaWxlV3JpdGVyIHdoZW4gYSBzcGVjaWZpYyBzZXNzaW9uIGlzIHJ1bi4KICAgICAgICAgIDwvcGFwZXItdG9vbHRpcD4KCiAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJ0cHUtY29tcGF0aWJpbGl0eS1yYWRpby1idXR0b24iIG5hbWU9Im9wX2NvbXBhdGliaWxpdHkiPgogICAgICAgICAgICBUUFUgQ29tcGF0aWJpbGl0eQogICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIGZvcj0idHB1LWNvbXBhdGliaWxpdHktcmFkaW8tYnV0dG9uIiBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCI+CiAgICAgICAgICAgIENvbG9yaW5nIGJ5IHdoZXRoZXIgYW4gb3BlcmF0aW9uIGlzIGNvbXBhdGlibGUgZm9yIHRoZSBUUFUgZGV2aWNlLgogICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgPHNwYW4gY2xhc3M9InNwYWNlciI+PC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzR3JhZGllbnRDb2xvcmluZyhzdGF0cywgY29sb3JCeSldXSI+CiAgICAgICAgICA8c3ZnIHdpZHRoPSIxNDAiIGhlaWdodD0iMjAiIHN0eWxlPSJtYXJnaW46IDAgNXB4IiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgIDxkZWZzPgogICAgICAgICAgICAgIDxsaW5lYXJncmFkaWVudCBpZD0ibGluZWFyR3JhZGllbnQiIHgxPSIwJSIgeTE9IjAlIiB4Mj0iMTAwJSIgeTI9IjAlIj4KICAgICAgICAgICAgICAgIDxzdG9wIGNsYXNzPSJzdGFydCIgb2Zmc2V0PSIwJSIgc3RvcC1jb2xvciQ9IltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5zdGFydENvbG9yXV0iIC8+CiAgICAgICAgICAgICAgICA8c3RvcCBjbGFzcz0iZW5kIiBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3IkPSJbW19jdXJyZW50R3JhZGllbnRQYXJhbXMuZW5kQ29sb3JdXSIgLz4KICAgICAgICAgICAgICA8L2xpbmVhcmdyYWRpZW50PgogICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMzUiIGhlaWdodD0iMjAiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQpIiBzdHJva2U9ImJsYWNrIiAvPgogICAgICAgICAgPC9zdmc+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5WYWx1ZXMgY29sb3ItdGV4dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRvbWFpblN0YXJ0Ij5bW19jdXJyZW50R3JhZGllbnRQYXJhbXMubWluVmFsdWVdXTwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJkb21haW5FbmQiPltbX2N1cnJlbnRHcmFkaWVudFBhcmFtcy5tYXhWYWx1ZV1dPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxiciBzdHlsZT0iY2xlYXI6IGJvdGgiPgogICAgICAgICAgPGRpdj5EZXZpY2VzIGluY2x1ZGVkIGluIHN0YXRzOjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iZGV2aWNlTGlzdCI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2N1cnJlbnREZXZpY2VzXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3cgZGV2aWNlcy1jaGVja2JveCI+CiAgICAgICAgICAgICAgICA8c3Bhbj48aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlJD0iW1tpdGVtLmRldmljZV1dIiBjaGVja2VkJD0iW1tpdGVtLnVzZWRdXSIgb24tY2xpY2s9Il9kZXZpY2VDaGVja2JveENsaWNrZWQiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuPltbaXRlbS5zdWZmaXhdXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tpdGVtLmlnbm9yZWRNc2ddXSI+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBpY29uPSJoZWxwIiBjbGFzcz0iaGVscC1pY29uIj48L3BhcGVyLWljb24tYnV0dG9uPgogICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCIgYW5pbWF0aW9uLWRlbGF5PSIwIj5bW2l0ZW0uaWdub3JlZE1zZ11dPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ3N0cnVjdHVyZScpXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItdGV4dCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCI+CiAgICAgICAgICAgICAgICBjb2xvcnMKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+c2FtZSBzdWJzdHJ1Y3R1cmU8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJNRVRBIiBoZWlnaHQ9IjE2IiBmaWxsLW92ZXJyaWRlPSIjZWVlIiBzdHJva2Utb3ZlcnJpZGU9IiNhNmE2YTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bmlxdWUgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19lcXVhbHMoY29sb3JCeSwgJ2RldmljZScpXV0iPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY3VycmVudERldmljZVBhcmFtc11dIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik1FVEEiIGhlaWdodD0iMTYiIGZpbGwtb3ZlcnJpZGU9IltbaXRlbS5jb2xvcl1dIiBzdHJva2Utb3ZlcnJpZGU9IiNhNmE2YTYiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPltbaXRlbS5kZXZpY2VdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iTUVUQSIgaGVpZ2h0PSIxNiIgZmlsbC1vdmVycmlkZT0iI2VlZSIgc3Ryb2tlLW92ZXJyaWRlPSIjYTZhNmE2Ij48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBkZXZpY2U8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2VxdWFscyhjb2xvckJ5LCAneGxhX2NsdXN0ZXInKV1dIj4KICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2N1cnJlbnRYbGFDbHVzdGVyUGFyYW1zXV0iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLWxlZ2VuZC1yb3ciPgogICAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgICAgPHVzZSB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeGxpbms6aHJlZj0iI3VuZmlsbGVkLXJlY3QiIHg9IjAiIHk9IjAiIHN0eWxlPSJmaWxsOltbaXRlbS5jb2xvcl1dIiAvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj5bW2l0ZW0ueGxhX2NsdXN0ZXJdXTwvc3Bhbj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgPHN2Zz4KICAgICAgICAgICAgICAgIDx1c2UgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhsaW5rOmhyZWY9IiNncmV5LXJlY3QiIHg9IjAiIHk9IjAiIC8+CiAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbG9yLWxlZ2VuZC12YWx1ZSI+dW5rbm93biBYTEEgY2x1c3Rlcjwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZXF1YWxzKGNvbG9yQnksICdvcF9jb21wYXRpYmlsaXR5JyldXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci10ZXh0Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iT1AiIGhlaWdodD0iMTYiIGZpbGwtb3ZlcnJpZGU9IiMwZjlkNTgiIHN0cm9rZS1vdmVycmlkZT0iI2NjYyI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPlZhbGlkIE9wPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItbGVnZW5kLXJvdyI+CiAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iT1AiIGhlaWdodD0iMTYiIGZpbGwtb3ZlcnJpZGU9IiNkYjQ0MzciIHN0cm9rZS1vdmVycmlkZT0iI2NjYyI+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb2xvci1sZWdlbmQtdmFsdWUiPkludmFsaWQgT3A8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3N0YXRzTm90TnVsbChzdGF0cyldXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1sZWdlbmQtcm93Ij4KICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iTUVUQSIgaGVpZ2h0PSIxNiIgZmFkZWQ+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iY29sb3ItbGVnZW5kLXZhbHVlIj51bnVzZWQgc3Vic3RydWN0dXJlPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1ob2xkZXIiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0iW1tfZ2V0VG9nZ2xlTGVnZW5kSWNvbihfbGVnZW5kT3BlbmVkKV1dIiBvbi1jbGljaz0iX3RvZ2dsZUxlZ2VuZE9wZW4iIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLWJ1dHRvbiI+CiAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgIDxzcGFuIGNsYXNzPSJ0b2dnbGUtbGVnZW5kLXRleHQiPgogICAgICAgIFtbX2dldFRvZ2dsZVRleHQoX2xlZ2VuZE9wZW5lZCldXQogICAgICA8L3NwYW4+CiAgICAgIDxpcm9uLWNvbGxhcHNlIG9wZW5lZD0iW1tfbGVnZW5kT3BlbmVkXV0iPgogICAgICAgIDxkaXY+CiAgICAgICAgICA8dGFibGU+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+PGRpdiBjbGFzcz0idGl0bGUiPkdyYXBoPC9kaXY+PC90ZD4KICAgICAgICAgICAgICA8dGQ+KCogPSBleHBhbmRhYmxlKTwvdGQ+CiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICA8dGYtZ3JhcGgtaWNvbiB0eXBlPSJNRVRBIiBoZWlnaHQ9IjE2IiBmaWxsLW92ZXJyaWRlPSIjZDlkOWQ5IiBzdHJva2Utb3ZlcnJpZGU9IiNjY2MiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIE5hbWVzcGFjZTxzcGFuIGNsYXNzPSJncmF5Ij4qPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwIGFuaW1hdGlvbi1kZWxheT0iMCIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICAgICAgICAgIEVuY2Fwc3VsYXRlcyBhIHNldCBvZiBub2Rlcy4gTmFtZXNwYWNlIGlzIGhpZXJhcmNoaWNhbCBhbmQKICAgICAgICAgICAgICAgICAgICBiYXNlZCBvbiBzY29wZS4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9Ik9QIiBoZWlnaHQ9IjE2Ij48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICBPcE5vZGUKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIHBvc2l0aW9uPSJyaWdodCIgb2Zmc2V0PSIwIj4KICAgICAgICAgICAgICAgICAgICBOb2RlIHRoYXQgcGVyZm9ybXMgYW4gb3BlcmF0aW9uLiBUaGVzZSBub2RlcyBjYW5ub3QgZXhwYW5kLgogICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHRmLWdyYXBoLWljb24gdHlwZT0iU0VSSUVTIiBoZWlnaHQ9IjE2Ij48L3RmLWdyYXBoLWljb24+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICBVbmNvbm5lY3RlZCBzZXJpZXM8c3BhbiBjbGFzcz0iZ3JheSI+Kjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIHBvc2l0aW9uPSJyaWdodCIgb2Zmc2V0PSIwIj4KICAgICAgICAgICAgICAgICAgICBTZXF1ZW5jZSBvZiBudW1iZXJlZCBub2RlcyB0aGF0IGFyZSBub3QgY29ubmVjdGVkIHRvIGVhY2gKICAgICAgICAgICAgICAgICAgICBvdGhlci4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNFUklFUyIgaGVpZ2h0PSIxNiIgdmVydGljYWw+PC90Zi1ncmFwaC1pY29uPgogICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgQ29ubmVjdGVkIHNlcmllczxzcGFuIGNsYXNzPSJncmF5Ij4qPC9zcGFuPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwIGFuaW1hdGlvbi1kZWxheT0iMCIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICAgICAgICAgIFNlcXVlbmNlIG9mIG51bWJlcmVkIG5vZGVzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byBlYWNoIG90aGVyLgogICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0iaWNvbiI+CiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgZmlsbD0id2hpdGUiIHN0cm9rZT0iIzg0ODQ4NCIgY3g9IjEwIiBjeT0iMTAiIHI9IjUiIC8+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIENvbnN0YW50CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAgYW5pbWF0aW9uLWRlbGF5PSIwIiBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCI+CiAgICAgICAgICAgICAgICAgICAgTm9kZSB0aGF0IG91dHB1dHMgYSBjb25zdGFudCB2YWx1ZS4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDx0Zi1ncmFwaC1pY29uIHR5cGU9IlNVTU1BUlkiIGhlaWdodD0iMjAiPjwvdGYtZ3JhcGgtaWNvbj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIFN1bW1hcnkKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1jbGFyaWZpZXIiPgogICAgICAgICAgICAgICAgICA8c3Bhbj4/PC9zcGFuPgogICAgICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIHBvc2l0aW9uPSJyaWdodCIgb2Zmc2V0PSIwIj4KICAgICAgICAgICAgICAgICAgICBOb2RlIHRoYXQgY29sbGVjdHMgZGF0YSBmb3IgdmlzdWFsaXphdGlvbiB3aXRoaW4KICAgICAgICAgICAgICAgICAgICBUZW5zb3JCb2FyZC4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIGhlaWdodD0iMTVweCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pbllNaWQgbWVldCIgdmlld2JveD0iMCAwIDE1IDE1Ij4KICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgPG1hcmtlciBpZD0iZGF0YWZsb3ctYXJyb3doZWFkLWxlZ2VuZCIgZmlsbD0iI2JiYiIgbWFya2Vyd2lkdGg9IjEwIiBtYXJrZXJoZWlnaHQ9IjEwIiByZWZ4PSI5IiByZWZ5PSI1IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNIDAsMCBMIDEwLDUgTCAwLDEwIEMgMyw3IDMsMyAwLDAiIC8+CiAgICAgICAgICAgICAgICAgICAgPC9tYXJrZXI+CiAgICAgICAgICAgICAgICAgIDwvZGVmcz4KICAgICAgICAgICAgICAgICAgPHBhdGggbWFya2VyLWVuZD0idXJsKCNkYXRhZmxvdy1hcnJvd2hlYWQtbGVnZW5kKSIgc3Ryb2tlPSIjYmJiIiBkPSJNMiA5IGwgMjkgMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICBEYXRhZmxvdyBlZGdlCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAgYW5pbWF0aW9uLWRlbGF5PSIwIiBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCI+CiAgICAgICAgICAgICAgICAgICAgRWRnZSBzaG93aW5nIHRoZSBkYXRhIGZsb3cgYmV0d2VlbiBvcGVyYXRpb25zLiBFZGdlcyBmbG93CiAgICAgICAgICAgICAgICAgICAgdXB3YXJkcyB1bmxlc3MgYXJyb3doZWFkcyBzcGVjaWZ5IG90aGVyd2lzZS4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIGhlaWdodD0iMTVweCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pbllNaWQgbWVldCIgdmlld2JveD0iMCAwIDE1IDE1Ij4KICAgICAgICAgICAgICAgICAgPHBhdGggc3Ryb2tlPSIjYmJiIiBkPSJNMiA5IGwgMjkgMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtZGFzaGFycmF5PSIyLCAyIiAvPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICBDb250cm9sIGRlcGVuZGVuY3kgZWRnZQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibGVnZW5kLWNsYXJpZmllciI+CiAgICAgICAgICAgICAgICAgIDxzcGFuPj88L3NwYW4+CiAgICAgICAgICAgICAgICAgIDxwYXBlci10b29sdGlwIGFuaW1hdGlvbi1kZWxheT0iMCIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICAgICAgICAgIEVkZ2Ugc2hvd2luZyB0aGUgY29udHJvbCBkZXBlbmRlbmN5IGJldHdlZW4gb3BlcmF0aW9ucy4KICAgICAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Imljb24iIGhlaWdodD0iMTVweCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pbllNaWQgbWVldCIgdmlld2JveD0iMCAwIDE1IDE1Ij4KICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgPG1hcmtlciBpZD0icmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQiIGZpbGw9IiNGRkI3NEQiIG1hcmtlcndpZHRoPSIxMCIgbWFya2VyaGVpZ2h0PSIxMCIgcmVmeD0iOSIgcmVmeT0iNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTSAwLDAgTCAxMCw1IEwgMCwxMCBDIDMsNyAzLDMgMCwwIiAvPgogICAgICAgICAgICAgICAgICAgIDwvbWFya2VyPgogICAgICAgICAgICAgICAgICA8L2RlZnM+CiAgICAgICAgICAgICAgICAgIDxwYXRoIG1hcmtlci1lbmQ9InVybCgjcmVmZXJlbmNlLWFycm93aGVhZC1sZWdlbmQpIiBzdHJva2U9IiNGRkI3NEQiIGQ9Ik0yIDkgbCAyOSAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIC8+CiAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgIFJlZmVyZW5jZSBlZGdlCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsZWdlbmQtY2xhcmlmaWVyIj4KICAgICAgICAgICAgICAgICAgPHNwYW4+Pzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAgYW5pbWF0aW9uLWRlbGF5PSIwIiBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCI+CiAgICAgICAgICAgICAgICAgICAgRWRnZSBzaG93aW5nIHRoYXQgdGhlIG91dGdvaW5nIG9wZXJhdGlvbiBub2RlIGNhbiBtdXRhdGUgdGhlCiAgICAgICAgICAgICAgICAgICAgaW5jb21pbmcgdGVuc29yLgogICAgICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgPC90YWJsZT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9pcm9uLWNvbGxhcHNlPgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtZ3JhcGgtZGFzaGJvYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8cGFwZXItZGlhbG9nIGlkPSJlcnJvci1kaWFsb2ciIHdpdGgtYmFja2Ryb3A+PC9wYXBlci1kaWFsb2c+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2RhdGFzZXRzU3RhdGUoX2RhdGFzZXRzRmV0Y2hlZCwgX2RhdGFzZXRzLCAnRU1QVFknKV1dIj4KICAgICAgPGRpdiBzdHlsZT0ibWF4LXdpZHRoOiA1NDBweDsgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOyI+CiAgICAgICAgPGgzPk5vIGdyYXBoIGRlZmluaXRpb24gZmlsZXMgd2VyZSBmb3VuZC48L2gzPgogICAgICAgIDxwPgogICAgICAgICAgVG8gc3RvcmUgYSBncmFwaCwgY3JlYXRlIGEKICAgICAgICAgIDxjb2RlPnRmLnN1bW1hcnkuRmlsZVdyaXRlcjwvY29kZT4KICAgICAgICAgIGFuZCBwYXNzIHRoZSBncmFwaCBlaXRoZXIgdmlhIHRoZSBjb25zdHJ1Y3Rvciwgb3IgYnkgY2FsbGluZyBpdHMKICAgICAgICAgIDxjb2RlPmFkZF9ncmFwaCgpPC9jb2RlPiBtZXRob2QuIFlvdSBtYXkgd2FudCB0byBjaGVjayBvdXQgdGhlCiAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9ncmFwaF92aXoiPmdyYXBoIHZpc3VhbGl6ZXIgdHV0b3JpYWw8L2E+LgogICAgICAgIAoKICAgICAgICA8cD4KICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvIGFkZAogICAgICAgICAgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIj5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYT4uCiAgICAgICAgCgogICAgICAgIDxwPgogICAgICAgICAgSWYgeW91IHRoaW5rIFRlbnNvckJvYXJkIGlzIGNvbmZpZ3VyZWQgcHJvcGVybHksIHBsZWFzZSBzZWUKICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2E+CiAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAKICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhc2V0c1N0YXRlKF9kYXRhc2V0c0ZldGNoZWQsIF9kYXRhc2V0cywgJ1BSRVNFTlQnKV1dIj4KICAgICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgICAgPHRmLWdyYXBoLWNvbnRyb2xzIGlkPSJjb250cm9scyIgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiIGRldmljZXMtZm9yLXN0YXRzPSJ7e19kZXZpY2VzRm9yU3RhdHN9fSIgY29sb3ItYnktcGFyYW1zPSJbW19jb2xvckJ5UGFyYW1zXV0iIHN0YXRzPSJbW19zdGF0c11dIiBjb2xvci1ieT0ie3tfY29sb3JCeX19IiBkYXRhc2V0cz0iW1tfZGF0YXNldHNdXSIgcmVuZGVyLWhpZXJhcmNoeT0iW1tfcmVuZGVySGllcmFyY2h5XV0iIHNlbGVjdGlvbj0ie3tfc2VsZWN0aW9ufX0iIHNlbGVjdGVkLWZpbGU9Int7X3NlbGVjdGVkRmlsZX19IiBzZWxlY3RlZC1ub2RlPSJ7e19zZWxlY3RlZE5vZGV9fSIgaGVhbHRoLXBpbGxzLWZlYXR1cmUtZW5hYmxlZD0iW1tfZGVidWdnZXJEYXRhRW5hYmxlZF1dIiBoZWFsdGgtcGlsbHMtdG9nZ2xlZC1vbj0ie3toZWFsdGhQaWxsc1RvZ2dsZWRPbn19IiBvbi1maXQtdGFwPSJfZml0IiB0cmFjZS1pbnB1dHM9Int7X3RyYWNlSW5wdXRzfX0iPjwvdGYtZ3JhcGgtY29udHJvbHM+CiAgICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgICAgPHRmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXIgaWQ9ImxvYWRlciIgZGF0YXNldHM9IltbX2RhdGFzZXRzXV0iIHNlbGVjdGlvbj0iW1tfc2VsZWN0aW9uXV0iIHNlbGVjdGVkLWZpbGU9IltbX3NlbGVjdGVkRmlsZV1dIiBvdXQtZ3JhcGgtaGllcmFyY2h5PSJ7e19ncmFwaEhpZXJhcmNoeX19IiBvdXQtZ3JhcGg9Int7X2dyYXBofX0iIG91dC1zdGF0cz0ie3tfc3RhdHN9fSIgcHJvZ3Jlc3M9Int7X3Byb2dyZXNzfX0iIGhpZXJhcmNoeS1wYXJhbXM9IltbX2hpZXJhcmNoeVBhcmFtc11dIiBjb21wYXRpYmlsaXR5LXByb3ZpZGVyPSJbW19jb21wYXRpYmlsaXR5UHJvdmlkZXJdXSI+PC90Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyPgogICAgICAgICAgPHRmLWdyYXBoLWJvYXJkIGlkPSJncmFwaGJvYXJkIiBkZXZpY2VzLWZvci1zdGF0cz0iW1tfZGV2aWNlc0ZvclN0YXRzXV0iIGNvbG9yLWJ5PSJbW19jb2xvckJ5XV0iIGNvbG9yLWJ5LXBhcmFtcz0ie3tfY29sb3JCeVBhcmFtc319IiBncmFwaC1oaWVyYXJjaHk9IltbX2dyYXBoSGllcmFyY2h5XV0iIGdyYXBoPSJbW19ncmFwaF1dIiBoaWVyYXJjaHktcGFyYW1zPSJbW19oaWVyYXJjaHlQYXJhbXNdXSIgcHJvZ3Jlc3M9IltbX3Byb2dyZXNzXV0iIGRlYnVnZ2VyLWRhdGEtZW5hYmxlZD0iW1tfZGVidWdnZXJEYXRhRW5hYmxlZF1dIiBhcmUtaGVhbHRoLXBpbGxzLWxvYWRpbmc9IltbX2FyZUhlYWx0aFBpbGxzTG9hZGluZ11dIiBkZWJ1Z2dlci1udW1lcmljLWFsZXJ0cz0iW1tfZGVidWdnZXJOdW1lcmljQWxlcnRzXV0iIG5vZGUtbmFtZXMtdG8taGVhbHRoLXBpbGxzPSJbW19ub2RlTmFtZXNUb0hlYWx0aFBpbGxzXV0iIGFsbC1zdGVwcy1tb2RlLWVuYWJsZWQ9Int7YWxsU3RlcHNNb2RlRW5hYmxlZH19IiBzcGVjaWZpYy1oZWFsdGgtcGlsbC1zdGVwPSJ7e3NwZWNpZmljSGVhbHRoUGlsbFN0ZXB9fSIgaGVhbHRoLXBpbGwtc3RlcC1pbmRleD0iW1tfaGVhbHRoUGlsbFN0ZXBJbmRleF1dIiByZW5kZXItaGllcmFyY2h5PSJ7e19yZW5kZXJIaWVyYXJjaHl9fSIgc2VsZWN0ZWQtbm9kZT0ie3tfc2VsZWN0ZWROb2RlfX0iIHN0YXRzPSJbW19zdGF0c11dIiB0cmFjZS1pbnB1dHM9IltbX3RyYWNlSW5wdXRzXV0iPjwvdGYtZ3JhcGgtYm9hcmQ+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvdGYtZGFzaGJvYXJkLWxheW91dD4KICAgIDwvdGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IC9kZWVwLyB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdSb2JvdG8nLCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuc2lkZWJhciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIC5jZW50ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWRpYWxvZyB7CiAgICAgICAgcGFkZGluZzogMjBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2ei1kaXN0cmlidXRpb24tY2hhcnQiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZSBpbmNsdWRlPSJwbG90dGFibGUtc3R5bGUiPjwvc3R5bGU+CiAgICA8ZGl2IGlkPSJjaGFydGRpdiI+PC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KICAgICAgI2NoYXJ0ZGl2IHsKICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWRpc3RyaWJ1dGlvbi1sb2FkZXIiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1jYXJkLWhlYWRpbmcgdGFnPSJbW3RhZ11dIiBydW49IltbcnVuXV0iIGRpc3BsYXktbmFtZT0iW1t0YWdNZXRhZGF0YS5kaXNwbGF5TmFtZV1dIiBkZXNjcmlwdGlvbj0iW1t0YWdNZXRhZGF0YS5kZXNjcmlwdGlvbl1dIiBjb2xvcj0iW1tfcnVuQ29sb3JdXSI+PC90Zi1jYXJkLWhlYWRpbmc+CiAgICAKICAgIDx2ei1kaXN0cmlidXRpb24tY2hhcnQgaWQ9ImNoYXJ0IiB4LXR5cGU9IltbeFR5cGVdXSIgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSI+PC92ei1kaXN0cmlidXRpb24tY2hhcnQ+CiAgICA8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogcm93OyI+CiAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBzZWxlY3RlZCQ9IltbX2V4cGFuZGVkXV0iIGljb249ImZ1bGxzY3JlZW4iIG9uLXRhcD0iX3RvZ2dsZUV4cGFuZGVkIj48L3BhcGVyLWljb24tYnV0dG9uPgogICAgPC9kaXY+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgd2lkdGg6IDMzMHB4OwogICAgICAgIGhlaWdodDogMjM1cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogNzAwcHg7CiAgICAgICAgaGVpZ2h0OiA1MDBweDsKICAgICAgfQoKICAgICAgdnotaGlzdG9ncmFtLXRpbWVzZXJpZXMgewogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQogICAgICBwYXBlci1pY29uLWJ1dHRvbltzZWxlY3RlZF0gewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgIH0KCiAgICAgIHRmLWNhcmQtaGVhZGluZyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDx0Zi1vcHRpb24tc2VsZWN0b3IgaWQ9InhUeXBlU2VsZWN0b3IiIG5hbWU9Ikhvcml6b250YWwgYXhpcyIgc2VsZWN0ZWQtaWQ9Int7X3hUeXBlfX0iPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24+CiAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9InJlbGF0aXZlIj5yZWxhdGl2ZTwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJ3YWxsX3RpbWUiPndhbGw8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGRpc3RyaWJ1dGlvbiBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhpc3RvZ3JhbSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgICAoSGlzdG9ncmFtcyBhbmQgZGlzdHJpYnV0aW9ucyBib3RoIHVzZSB0aGUgaGlzdG9ncmFtIHN1bW1hcnkKICAgICAgICAgICAgICAgIG9wZXJhdGlvbi4pCiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hPi4KICAgICAgICAgICAgCgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2E+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtZGlzdHJpYnV0aW9uLWxvYWRlciBhY3RpdmU9IltbYWN0aXZlXV0iIHJ1bj0iW1tpdGVtLnJ1bl1dIiB0YWc9IltbaXRlbS50YWddXSIgdGFnLW1ldGFkYXRhPSJbW190YWdNZXRhZGF0YShfcnVuVG9UYWdJbmZvLCBpdGVtLnJ1biwgaXRlbS50YWcpXV0iIHgtdHlwZT0iW1tfeFR5cGVdXSIgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIj48L3RmLWRpc3RyaWJ1dGlvbi1sb2FkZXI+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldz4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPC9kaXY+CiAgICA8L3RmLWRhc2hib2FyZC1sYXlvdXQ+CgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyI+CiAgPHRlbXBsYXRlPgogICAgPGRpdiBpZD0idG9vbHRpcCI+PHNwYW4+PC9zcGFuPjwvZGl2PgogICAgPHN2ZyBpZD0ic3ZnIj4KICAgICAgPGc+CiAgICAgICAgPGcgY2xhc3M9ImF4aXMgeCI+PC9nPgogICAgICAgIDxnIGNsYXNzPSJheGlzIHkiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0iYXhpcyB5IHNsaWNlIj48L2c+CiAgICAgICAgPGcgY2xhc3M9InN0YWdlIj4KICAgICAgICAgIDxyZWN0IGNsYXNzPSJiYWNrZ3JvdW5kIj48L3JlY3Q+CiAgICAgICAgPC9nPgogICAgICAgIDxnIGNsYXNzPSJ4LWF4aXMtaG92ZXIiPjwvZz4KICAgICAgICA8ZyBjbGFzcz0ieS1heGlzLWhvdmVyIj48L2c+CiAgICAgICAgPGcgY2xhc3M9Inktc2xpY2UtYXhpcy1ob3ZlciI+PC9nPgogICAgICA8L2c+CiAgICA8L3N2Zz4KCiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQoKICAgICAgc3ZnIHsKICAgICAgICBmb250LWZhbWlseTogcm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgfQoKICAgICAgI3Rvb2x0aXAgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgfQoKICAgICAgLmJhY2tncm91bmQgewogICAgICAgIGZpbGwtb3BhY2l0eTogMDsKICAgICAgICBmaWxsOiByZWQ7CiAgICAgIH0KCiAgICAgIC5oaXN0b2dyYW0gewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAuaG92ZXIgewogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGRvbWluYW50LWJhc2VsaW5lOiBtaWRkbGU7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyIGNpcmNsZSB7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICAgIHN0cm9rZS13aWR0aDogMXB4OwogICAgICB9CgogICAgICAuaG92ZXIgdGV4dCB7CiAgICAgICAgZmlsbDogYmxhY2s7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmhvdmVyLmhvdmVyLWNsb3Nlc3QgY2lyY2xlIHsKICAgICAgICBmaWxsOiBibGFjayAhaW1wb3J0YW50OwogICAgICB9CgogICAgICAuaG92ZXIuaG92ZXItY2xvc2VzdCB0ZXh0IHsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICB9CgogICAgICAuYmFzZWxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuMTsKICAgICAgfQoKICAgICAgLm91dGxpbmUgewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiB3aGl0ZTsKICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OwogICAgICB9CgogICAgICAub3V0bGluZS5vdXRsaW5lLWhvdmVyIHsKICAgICAgICBzdHJva2U6IGJsYWNrICFpbXBvcnRhbnQ7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIsCiAgICAgIC55LWF4aXMtaG92ZXIsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIC5sYWJlbCwKICAgICAgLnktYXhpcy1ob3ZlciAubGFiZWwsCiAgICAgIC55LXNsaWNlLWF4aXMtaG92ZXIgLmxhYmVsIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICB0ZXh0LWFuY2hvcjogZW5kOwogICAgICB9CgogICAgICAueC1heGlzLWhvdmVyIHRleHQgewogICAgICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICAgIH0KCiAgICAgIC55LWF4aXMtaG92ZXIgdGV4dCwKICAgICAgLnktc2xpY2UtYXhpcy1ob3ZlciB0ZXh0IHsKICAgICAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgbGluZSwKICAgICAgLnktYXhpcy1ob3ZlciBsaW5lLAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIGxpbmUgewogICAgICAgIHN0cm9rZTogYmxhY2s7CiAgICAgIH0KCiAgICAgIC54LWF4aXMtaG92ZXIgcmVjdCwKICAgICAgLnktYXhpcy1ob3ZlciByZWN0LAogICAgICAueS1zbGljZS1heGlzLWhvdmVyIHJlY3QgewogICAgICAgIGZpbGw6IHdoaXRlOwogICAgICB9CgogICAgICAuYXhpcyB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICB9CgogICAgICAuYXhpcyBwYXRoLmRvbWFpbiB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLmF4aXMgLnRpY2sgbGluZSB7CiAgICAgICAgc3Ryb2tlOiAjZGRkOwogICAgICB9CgogICAgICAuYXhpcy5zbGljZSB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgfQoKICAgICAgLmF4aXMuc2xpY2UgLnRpY2sgbGluZSB7CiAgICAgICAgc3Ryb2tlLWRhc2hhcnJheTogMjsKICAgICAgfQoKICAgICAgLnNtYWxsIC5heGlzIHRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLnNtYWxsIC5heGlzIC50aWNrOmZpcnN0LW9mLXR5cGUgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnNtYWxsIC5heGlzIC50aWNrOmxhc3Qtb2YtdHlwZSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAubWVkaXVtIC5heGlzIHRleHQgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KICAgICAgLm1lZGl1bSAuYXhpcyAudGljazpudGgtY2hpbGQoMm4gKyAxKSB0ZXh0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAubGFyZ2UgLmF4aXMgdGV4dCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgICAubGFyZ2UgLmF4aXMgLnRpY2s6bnRoLWNoaWxkKDJuICsgMSkgdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1oaXN0b2dyYW0tbG9hZGVyIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtY2FyZC1oZWFkaW5nIHRhZz0iW1t0YWddXSIgcnVuPSJbW3J1bl1dIiBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSIgY29sb3I9IltbX3J1bkNvbG9yXV0iPjwvdGYtY2FyZC1oZWFkaW5nPgogICAgCiAgICA8dnotaGlzdG9ncmFtLXRpbWVzZXJpZXMgaWQ9ImNoYXJ0IiB0aW1lLXByb3BlcnR5PSJbW3RpbWVQcm9wZXJ0eV1dIiBtb2RlPSJbW2hpc3RvZ3JhbU1vZGVdXSIgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVGdW5jdGlvbl1dIj48L3Z6LWhpc3RvZ3JhbS10aW1lc2VyaWVzPgogICAgPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsiPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIiBpY29uPSJmdWxsc2NyZWVuIiBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDIzNXB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICB9CiAgICAgIDpob3N0KFtfZXhwYW5kZWRdKSB7CiAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgIGhlaWdodDogNTAwcHg7CiAgICAgIH0KCiAgICAgIHZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIHsKICAgICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgd2lkdGg6IDkwJTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1oaXN0b2dyYW0tZGFzaGJvYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPHRmLW9wdGlvbi1zZWxlY3RvciBpZD0iaGlzdG9ncmFtTW9kZVNlbGVjdG9yIiBuYW1lPSJIaXN0b2dyYW0gbW9kZSIgc2VsZWN0ZWQtaWQ9Int7X2hpc3RvZ3JhbU1vZGV9fSI+CiAgICAgICAgICAgIDxwYXBlci1idXR0b24gaWQ9Im92ZXJsYXkiPm92ZXJsYXk8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ib2Zmc2V0Ij5vZmZzZXQ8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgIDwvdGYtb3B0aW9uLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yIGlkPSJ0aW1lUHJvcGVydHlTZWxlY3RvciIgbmFtZT0iT2Zmc2V0IHRpbWUgYXhpcyIgc2VsZWN0ZWQtaWQ9Int7X3RpbWVQcm9wZXJ0eX19Ij4KICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0ic3RlcCI+c3RlcDwvcGFwZXItYnV0dG9uPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJyZWxhdGl2ZSI+cmVsYXRpdmU8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIGhpc3RvZ3JhbSBkYXRhIHdhcyBmb3VuZC48L2gzPgogICAgICAgICAgICA8cD5Qcm9iYWJsZSBjYXVzZXM6CiAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBZb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGhpc3RvZ3JhbSBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIj5SRUFETUU8L2E+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCI+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2E+LgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyI+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYT4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi1oaXN0b2dyYW0tbG9hZGVyIHJ1bj0iW1tpdGVtLnJ1bl1dIiB0YWc9IltbaXRlbS50YWddXSIgYWN0aXZlPSJbW2FjdGl2ZV1dIiB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVuLCBpdGVtLnRhZyldXSIgdGltZS1wcm9wZXJ0eT0iW1tfdGltZVByb3BlcnR5XV0iIGhpc3RvZ3JhbS1tb2RlPSJbW19oaXN0b2dyYW1Nb2RlXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSI+PC90Zi1oaXN0b2dyYW0tbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXRleHQtbG9hZGVyIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtY2FyZC1oZWFkaW5nIHJ1bj0iW1tydW5dXSIgdGFnPSJbW3RhZ11dIiBjb2xvcj0iW1tfcnVuQ29sb3JdXSI+CiAgICA8L3RmLWNhcmQtaGVhZGluZz4KICAgIDxwYXBlci1tYXRlcmlhbCBlbGV2YXRpb249IjEiIGlkPSJzdGVwcy1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIgc2Nyb2xsYmFyIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiBbW19ydW5Db2xvcl1dIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfdGV4dHNdXSI+CiAgICAgICAgPHBhcGVyLW1hdGVyaWFsIGVsZXZhdGlvbj0iMSIgY2xhc3M9InN0ZXAtY29udGFpbmVyIj4KICAgICAgICAgIHN0ZXAgPHNwYW4gY2xhc3M9InN0ZXAtdmFsdWUiPltbX2Zvcm1hdFN0ZXAoaXRlbS5zdGVwKV1dPC9zcGFuPgogICAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICAgICAgPHBhcGVyLW1hdGVyaWFsIGVsZXZhdGlvbj0iMSIgY2xhc3M9InRleHQiPgogICAgICAgICAgPHRmLW1hcmtkb3duLXZpZXcgaHRtbD0iW1tpdGVtLnRleHRdXSI+PC90Zi1tYXJrZG93bi12aWV3PgogICAgICAgIDwvcGFwZXItbWF0ZXJpYWw+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L3BhcGVyLW1hdGVyaWFsPgogICAgPHN0eWxlIGluY2x1ZGU9InNjcm9sbGJhci1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgIH0KICAgICAgLnNjcm9sbGJhciB7CiAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgfQogICAgICAjc3RlcHMtY29udGFpbmVyIHsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgLyogY29sb3IgY29tcHV0ZWQgYW5kIHNldCBhcyBpbmxpbmUgc3R5bGUgKi87CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWF4LWhlaWdodDogNTAwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgfQogICAgICAudGV4dCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDNweDsKICAgICAgICBwYWRkaW5nOiA1cHg7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDsKICAgICAgfQogICAgICAuc3RlcC1jb250YWluZXIgewogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRiLXVpLWxpZ2h0LWFjY2VudCk7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4OyAvKiB0byBjb3JyZWN0IGZvciBib3JkZXIgKi8KICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgIH0KICAgICAgLnN0ZXAtY29udGFpbmVyOm5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICB9CgogICAgICB0Zi1jYXJkLWhlYWRpbmcgewogICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtdGV4dC1kYXNoYm9hcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iY2VudGVyIiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHRleHQgZGF0YSB3YXMgZm91bmQuPC9oMz4KICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOgogICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgPGxpPllvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgdGV4dCBkYXRhIHRvIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgICA8bGk+VGVuc29yQm9hcmQgY2Fu4oCZdCBmaW5kIHlvdXIgZXZlbnQgZmlsZXMuPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdeKAmXJlIG5ldyB0byB1c2luZyBUZW5zb3JCb2FyZCwgYW5kIHdhbnQgdG8gZmluZCBvdXQgaG93IHRvCiAgICAgICAgICAgICAgYWRkIGRhdGEgYW5kIHNldCB1cCB5b3VyIGV2ZW50IGZpbGVzLCBjaGVjayBvdXQgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIj5SRUFETUU8L2E+CiAgICAgICAgICAgICAgYW5kIHBlcmhhcHMgdGhlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cudGVuc29yZmxvdy5vcmcvZ2V0X3N0YXJ0ZWQvc3VtbWFyaWVzX2FuZF90ZW5zb3Jib2FyZCI+VGVuc29yQm9hcmQgdHV0b3JpYWw8L2E+LgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBUZW5zb3JCb2FyZCBpcyBjb25maWd1cmVkIHByb3Blcmx5LCBwbGVhc2Ugc2VlCiAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyI+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYT4KICAgICAgICAgICAgICBhbmQgY29uc2lkZXIgZmlsaW5nIGFuIGlzc3VlIG9uIEdpdEh1Yi4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1shX2RhdGFOb3RGb3VuZF1dIj4KICAgICAgICAgIDx0Zi10YWctZmlsdGVyZXIgdGFnLWZpbHRlcj0ie3tfdGFnRmlsdGVyfX0iPjwvdGYtdGFnLWZpbHRlcmVyPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfY2F0ZWdvcmllc11dIiBhcz0iY2F0ZWdvcnkiPgogICAgICAgICAgICA8dGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXcgY2F0ZWdvcnk9IltbY2F0ZWdvcnldXSIgaW5pdGlhbC1vcGVuZWQ9IltbX3Nob3VsZE9wZW4oaW5kZXgpXV0iPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDx0Zi10ZXh0LWxvYWRlciBhY3RpdmU9IltbYWN0aXZlXV0iIHRhZz0iW1tpdGVtLnRhZ11dIiBydW49IltbaXRlbS5ydW5dXSIgcmVxdWVzdC1tYW5hZ2VyPSJbW19yZXF1ZXN0TWFuYWdlcl1dIj48L3RmLXRleHQtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXByLWN1cnZlLWNhcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1jYXJkLWhlYWRpbmcgdGFnPSJbW3RhZ11dIiBkaXNwbGF5LW5hbWU9IltbdGFnTWV0YWRhdGEuZGlzcGxheU5hbWVdXSIgZGVzY3JpcHRpb249IltbdGFnTWV0YWRhdGEuZGVzY3JpcHRpb25dXSI+PC90Zi1jYXJkLWhlYWRpbmc+CgogICAgPHRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIgeC1jb21wb25lbnRzLWNyZWF0aW9uLW1ldGhvZD0iW1tfeENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZF1dIiB5LXZhbHVlLWFjY2Vzc29yPSJbW195VmFsdWVBY2Nlc3Nvcl1dIiB0b29sdGlwLWNvbHVtbnM9IltbX3Rvb2x0aXBDb2x1bW5zXV0iIGNvbG9yLXNjYWxlPSJbW19jb2xvclNjYWxlRnVuY3Rpb25dXSIgZGVmYXVsdC14LXJhbmdlPSJbW19kZWZhdWx0WFJhbmdlXV0iIGRlZmF1bHQteS1yYW5nZT0iW1tfZGVmYXVsdFlSYW5nZV1dIiBzbW9vdGhpbmctZW5hYmxlZD0iW1tfc21vb3RoaW5nRW5hYmxlZF1dIiByZXF1ZXN0LW1hbmFnZXI9IltbcmVxdWVzdE1hbmFnZXJdXSIgZGF0YS10by1sb2FkPSJbW3J1bnNdXSIgZGF0YS1zZXJpZXM9IltbcnVuc11dIiBsb2FkLWtleT0iW1t0YWddXSIgZ2V0LWRhdGEtbG9hZC11cmw9IltbX2RhdGFVcmxdXSIgbG9hZC1kYXRhLWNhbGxiYWNrPSJbW19jcmVhdGVQcm9jZXNzRGF0YUZ1bmN0aW9uKCldXSIgYWN0aXZlPSJbW2FjdGl2ZV1dIj48L3RmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXI+CgogICAgPGRpdiBpZD0iYnV0dG9ucy1yb3ciPgogICAgICA8cGFwZXItaWNvbi1idXR0b24gc2VsZWN0ZWQkPSJbW19leHBhbmRlZF1dIiBpY29uPSJmdWxsc2NyZWVuIiBvbi10YXA9Il90b2dnbGVFeHBhbmRlZCI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InNldHRpbmdzLW92ZXJzY2FuIiBvbi10YXA9Il9yZXNldERvbWFpbiIgdGl0bGU9IlJlc2V0IGF4ZXMgdG8gWzAsIDFdLiI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9InN0ZXAtbGVnZW5kIj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTdGVwQXZhaWxhYmxlXV0iIGFzPSJydW4iPgogICAgICAgIDxkaXYgY2xhc3M9ImxlZ2VuZC1yb3ciPgogICAgICAgICAgPGRpdiBjbGFzcz0iY29sb3ItYm94IiBzdHlsZT0iYmFja2dyb3VuZDogW1tfY29tcHV0ZVJ1bkNvbG9yKHJ1bildXTsiPjwvZGl2PgogICAgICAgICAgW1tydW5dXSBpcyBhdAogICAgICAgICAgPHNwYW4gY2xhc3M9InN0ZXAtbGFiZWwtdGV4dCI+CiAgICAgICAgICAgIHN0ZXAgW1tfY29tcHV0ZUN1cnJlbnRTdGVwRm9yUnVuKF9ydW5Ub1ByQ3VydmVFbnRyeSwgcnVuKV1dIDwvc3Bhbj48YnI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0id2FsbC10aW1lLWxhYmVsLXRleHQiPgogICAgICAgICAgICAoW1tfY29tcHV0ZUN1cnJlbnRXYWxsVGltZUZvclJ1bihfcnVuVG9QckN1cnZlRW50cnksIHJ1bildXSkKICAgICAgICAgIDwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB3aWR0aDogNTAwcHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgIH0KICAgICAgOmhvc3QoW19leHBhbmRlZF0pIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICB0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIHsKICAgICAgICBoZWlnaHQ6IDMwMHB4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgfQogICAgICA6aG9zdChbX2V4cGFuZGVkXSkgdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciB7CiAgICAgICAgaGVpZ2h0OiA2MDBweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIGNvbG9yOiAjMjE5NmYzOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMCU7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgfQogICAgICAjYnV0dG9ucy1yb3cgcGFwZXItaWNvbi1idXR0b25bc2VsZWN0ZWRdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10Yi11aS1saWdodC1hY2NlbnQpOwogICAgICB9CiAgICAgICNzdGVwLWxlZ2VuZCB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBmb250LXNpemU6IDAuOGVtOwogICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAubGVnZW5kLXJvdyB7CiAgICAgICAgbWFyZ2luOiA1cHggMCA1cHggMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuY29sb3ItYm94IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMXB4OwogICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgIGhlaWdodDogMTBweDsKICAgICAgfQogICAgICAuc3RlcC1sYWJlbC10ZXh0IHsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgfQogICAgICAud2FsbC10aW1lLWxhYmVsLXRleHQgewogICAgICAgIGNvbG9yOiAjODg4OwogICAgICAgIGZvbnQtc2l6ZTogMC44ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3RvciI+CiAgPHRlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfcnVuc1dpdGhTbGlkZXJzXV0iIGFzPSJydW4iPgogICAgICA8ZGl2IGNsYXNzPSJydW4td2lkZ2V0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJydW4tZGlzcGxheS1jb250YWluZXIiPgogICAgICAgICAgPGRpdiBjbGFzcz0icnVuLWNvbG9yLWJveCIgc3R5bGU9ImJhY2tncm91bmQ6W1tfY29tcHV0ZUNvbG9yRm9yUnVuKHJ1bildXTsiPjwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icnVuLXRleHQiPgogICAgICAgICAgICBbW3J1bl1dCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGVwLWRpc3BsYXktY29udGFpbmVyIj4KICAgICAgICAgIFtbX2NvbXB1dGVUaW1lVGV4dEZvclJ1bihydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzLCBfcnVuVG9TdGVwSW5kZXgsCiAgICAgICAgICBydW4sIHRpbWVEaXNwbGF5VHlwZSldXQogICAgICAgIDwvZGl2PgogICAgICAgIDxwYXBlci1zbGlkZXIgZGF0YS1ydW4kPSJbW3J1bl1dIiBzdGVwPSIxIiB0eXBlPSJudW1iZXIiIG1pbj0iMCIgbWF4PSJbW19jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKHJ1blRvQXZhaWxhYmxlVGltZUVudHJpZXMsIHJ1bildXSIgdmFsdWU9IltbX2dldFN0ZXAoX3J1blRvU3RlcEluZGV4LCBydW4pXV0iIG9uLWltbWVkaWF0ZS12YWx1ZS1jaGFuZ2VkPSJfc2xpZGVyVmFsdWVDaGFuZ2VkIj48L3BhcGVyLXNsaWRlcj4KICAgICAgPC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAucnVuLXdpZGdldCB7CiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAwOwogICAgICB9CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgbWFyZ2luOiAtOHB4IDAgMCAtMTVweDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAuc3RlcC1kaXNwbGF5LWNvbnRhaW5lciB7CiAgICAgICAgZm9udC1zaXplOiAwLjllbTsKICAgICAgICBtYXJnaW46IDAgMTVweCAwIDA7CiAgICAgIH0KICAgICAgLnJ1bi10ZXh0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIH0KICAgICAgLnJ1bi1jb2xvci1ib3ggewogICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXByLWN1cnZlLWRhc2hib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWRhc2hib2FyZC1sYXlvdXQ+CiAgICAgIDxkaXYgY2xhc3M9InNpZGViYXIiIHNsb3Q9InNpZGViYXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtb3B0aW9uLXNlbGVjdG9yIGlkPSJ0aW1lLXR5cGUtc2VsZWN0b3IiIG5hbWU9IlRpbWUgRGlzcGxheSBUeXBlIiBzZWxlY3RlZC1pZD0ie3tfdGltZURpc3BsYXlUeXBlfX0iPgogICAgICAgICAgICA8cGFwZXItYnV0dG9uIGlkPSJzdGVwIj5zdGVwPC9wYXBlci1idXR0b24+PHBhcGVyLWJ1dHRvbiBpZD0icmVsYXRpdmUiPnJlbGF0aXZlPC9wYXBlci1idXR0b24+PHBhcGVyLWJ1dHRvbiBpZD0id2FsbF90aW1lIj53YWxsPC9wYXBlci1idXR0b24+CiAgICAgICAgICA8L3RmLW9wdGlvbi1zZWxlY3Rvcj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXNdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iIGlkPSJzdGVwcy1zZWxlY3Rvci1jb250YWluZXIiPgogICAgICAgICAgICA8dGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3IgcnVucz0iW1tfcmVsZXZhbnRTZWxlY3RlZFJ1bnNdXSIgcnVuLXRvLXN0ZXA9Int7X3J1blRvU3RlcH19IiBydW4tdG8tYXZhaWxhYmxlLXRpbWUtZW50cmllcz0iW1tfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllc11dIiB0aW1lLWRpc3BsYXktdHlwZT0iW1tfdGltZURpc3BsYXlUeXBlXV0iPjwvdGYtcHItY3VydmUtc3RlcHMtc2VsZWN0b3I+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICA8dGYtcnVucy1zZWxlY3RvciBzZWxlY3RlZC1ydW5zPSJ7e19zZWxlY3RlZFJ1bnN9fSI+CiAgICAgICAgICA8L3RmLXJ1bnMtc2VsZWN0b3I+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gcHJlY2lzaW9u4oCTcmVjYWxsIGN1cnZlIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczoKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgcHJlY2lzaW9u4oCTcmVjYWxsIGRhdGEgdG8geW91ciBldmVudAogICAgICAgICAgICAgICAgZmlsZXMuCiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICBUZW5zb3JCb2FyZCBjYW7igJl0IGZpbmQgeW91ciBldmVudCBmaWxlcy4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hPi4KICAgICAgICAgICAgCgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2E+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIiBnZXQtY2F0ZWdvcnktaXRlbS1rZXk9IltbX2dldENhdGVnb3J5SXRlbUtleV1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtcHItY3VydmUtY2FyZCBhY3RpdmU9IltbYWN0aXZlXV0iIHJ1bnM9IltbaXRlbS5ydW5zXV0iIHRhZz0iW1tpdGVtLnRhZ11dIiB0YWctbWV0YWRhdGE9IltbX3RhZ01ldGFkYXRhKF9ydW5Ub1RhZ0luZm8sIGl0ZW0ucnVucywgaXRlbS50YWcpXV0iIHJlcXVlc3QtbWFuYWdlcj0iW1tfcmVxdWVzdE1hbmFnZXJdXSIgcnVuLXRvLXN0ZXAtY2FwPSJbW19ydW5Ub1N0ZXBdXSI+PC90Zi1wci1jdXJ2ZS1jYXJkPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIC8qKiBEbyBub3QgbGV0IHRoZSBzdGVwcyBzZWxlY3RvciBvY2NsdWRlIHRoZSBydW4gc2VsZWN0b3IuICovCiAgICAgICNzdGVwcy1zZWxlY3Rvci1jb250YWluZXIgewogICAgICAgIG1heC1oZWlnaHQ6IDQwJTsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJtZXNzYWdlIj4KICAgICAgPGgzPlRoZSBwcm9maWxlIHBsdWdpbiBoYXMgbW92ZWQuPC9oMz4KICAgICAgPHA+CiAgICAgICAgUGxlYXNlIGluc3RhbGwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBwcm9maWxlIHBsdWdpbiBmcm9tIFB5UEkgYnkKICAgICAgICBydW5uaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHRoZSBtYWNoaW5lIHJ1bm5pbmcgVGVuc29yQm9hcmQ6CiAgICAgIAogICAgICA8dGV4dGFyZWEgaWQ9ImNvbW1hbmRUZXh0YXJlYSIgcmVhZG9ubHkgcm93cz0iMSIgb24tYmx1cj0iX3JlbW92ZUNvcGllZE1lc3NhZ2UiPgpbW19pbnN0YWxsQ29tbWFuZF1dPC90ZXh0YXJlYT4KICAgICAgPGRpdiBpZD0iY29weUNvbnRhaW5lciI+CiAgICAgICAgPHNwYW4gaWQ9ImNvcGllZE1lc3NhZ2UiPjwvc3Bhbj4KICAgICAgICA8cGFwZXItYnV0dG9uIHJhaXNlZCBvbi10YXA9Il9jb3B5SW5zdGFsbENvbW1hbmQiPkNvcHkgdG8gY2xpcGJvYXJkPC9wYXBlci1idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICAubWVzc2FnZSB7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgIH0KICAgICAgI2NvbW1hbmRUZXh0YXJlYSB7CiAgICAgICAgbWFyZ2luLXRvcDogMWV4OwogICAgICAgIHBhZGRpbmc6IDFleCAxZW07CiAgICAgICAgcmVzaXplOiB2ZXJ0aWNhbDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQogICAgICAjY29weUNvbnRhaW5lciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQogICAgICAjY29waWVkTWVzc2FnZSB7CiAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgcGFkZGluZy1yaWdodDogMWVtOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtcGx1Z2luLWRpYWxvZyI+CiAgPHRlbXBsYXRlPgogICAgCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX29wZW5dXSI+CiAgICAgIDxkaXYgaWQ9ImRhc2hib2FyZC1iYWNrZHJvcCI+PC9kaXY+CiAgICA8L3RlbXBsYXRlPgogICAgPHBhcGVyLWRpYWxvZyBpZD0iZGlhbG9nIiBtb2RhbCBvcGVuZWQ9Int7X29wZW59fSIgd2l0aC1iYWNrZHJvcD0iW1tfdXNlTmF0aXZlQmFja2Ryb3BdXSI+CiAgICAgIDxoMiBpZD0iZGlhbG9nLXRpdGxlIj5bW190aXRsZV1dPC9oMj4KICAgICAgPGRpdiBjbGFzcz0iY3VzdG9tLW1lc3NhZ2UiPltbX2N1c3RvbU1lc3NhZ2VdXTwvZGl2PgogICAgPC9wYXBlci1kaWFsb2c+CiAgICA8c3R5bGU+CiAgICAgIC8qKiBXZSByZWx5IG9uIGEgc2VwYXJhdGUgYF9oaWRkZW5gIHByb3BlcnR5IGluc3RlYWQgb2YgZGlyZWN0bHkgbWFraW5nIHVzZQogICAgICAgICAgb2YgdGhlIGBfb3BlbmAgYXR0cmlidXRlIGJlY2F1c2UgdGhpcyBDU1Mgc3BlY2lmaWNhdGlvbiBtYXkgc3RyYW5nZWx5CiAgICAgICAgICBhZmZlY3Qgb3RoZXIgZWxlbWVudHMgdGhyb3VnaG91dCBUZW5zb3JCb2FyZC4gU2VlICM4OTkuICovCiAgICAgICNkYXNoYm9hcmQtYmFja2Ryb3AgewogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KCiAgICAgICNkaWFsb2ctdGl0bGUgewogICAgICAgIHBhZGRpbmctYm90dG9tOiAxNXB4OwogICAgICB9CgogICAgICAuY3VzdG9tLW1lc3NhZ2UgewogICAgICAgIG1hcmdpbi10b3A6IDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWJlaG9sZGVyLXZpZGVvIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8aW1nIGlkPSJ2aWRlbyIgc3JjJD0iW1tfaW1hZ2VVUkxdXSI+CiAgICA8L2Rpdj4KCiAgICA8c3R5bGU+CiAgICAgIGltZyB7CiAgICAgICAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtYmVob2xkZXItaW5mbyI+CiAgPHRlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfaXRlbXNdXSI+CiAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taW5mbyIgc3R5bGUkPSJoZWlnaHQ6IFtbaXRlbS5oZWlnaHRdXXB4Ij4KICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+W1tpdGVtLm5hbWVdXTwvbGk+CiAgICAgICAgICA8bGk+c2hhcGU6IFtbaXRlbS5zaGFwZV1dPC9saT4KICAgICAgICAgIDxsaT5yYW5nZTogWyBbW2l0ZW0ubWluXV0sIFtbaXRlbS5tYXhdXSBdPC9saT4KICAgICAgICAgIDxsaT5tZWFuOiBbW2l0ZW0ubWVhbl1dPC9saT4KICAgICAgICA8L3VsPgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPHN0eWxlPgogICAgICAuc2VjdGlvbi1pbmZvIHsKICAgICAgICBtYXJnaW46IDAgMCA1cHggMDsKICAgICAgfQogICAgICAuc2VjdGlvbi1pbmZvIHVsIHsKICAgICAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1iZWhvbGRlci1kYXNoYm9hcmQiPgogIDx0ZW1wbGF0ZT4KICAgIDx0Zi1wbHVnaW4tZGlhbG9nIGlkPSJpbml0aWFsRGlhbG9nIj48L3RmLXBsdWdpbi1kaWFsb2c+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhciIgc2xvdD0ic2lkZWJhciI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJjb250cm9scy1kaXNhYmxlZC1tZXNzYWdlIj4KICAgICAgICAgICAgICBDb250cm9scyBkaXNhYmxlZDogZGlyZWN0b3J5IGlzIG5vdCB3cml0ZWFibGUuCiAgICAgICAgICAgIAogICAgICAgICAgICA8cCBjbGFzcz0iZGlzY2xhaW1lciI+CiAgICAgICAgICAgICAgQmVob2xkZXIgcmVxdWlyZXMgd3JpdGUgYWNjZXNzIHRvIHRoZSBsb2cgZGlyZWN0b3J5IGluIG9yZGVyIHRvCiAgICAgICAgICAgICAgY29tbXVuaWNhdGUgdmlzdWFsaXphdGlvbiBjaGFuZ2VzIHRvIHRoZSA8Y29kZT5CZWhvbGRlcjwvY29kZT4KICAgICAgICAgICAgICBpbnN0YW5jZSBpbiB5b3VyIG1vZGVsLgogICAgICAgICAgICAKICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDxoMz5WYWx1ZXM8L2gzPgogICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwIGlkPSJ2YWx1ZXNTZWxlY3RvciIgc2VsZWN0ZWQ9Int7X3ZhbHVlc319Ij4KICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBuYW1lPSJ0cmFpbmFibGVfdmFyaWFibGVzIiBkaXNhYmxlZD0iW1tfY29udHJvbHNfZGlzYWJsZWRdXSI+CiAgICAgICAgICAgICAgPHByZT50Zi50cmFpbmFibGVfdmFyaWFibGVzKCk8L3ByZT4KICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9Im9wdGlvbi1hcnJheXMiIG5hbWU9ImFycmF5cyIgZGlzYWJsZWQ9IltbX2NvbnRyb2xzX2Rpc2FibGVkXV0iPgogICAgICAgICAgICAgIDxwcmU+Yi51cGRhdGUoYXJyYXlzPVtOUF9BUlJBWVNdKTwvcHJlPgogICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ib3B0aW9uLWZyYW1lcyIgbmFtZT0iZnJhbWVzIiBkaXNhYmxlZD0iW1tfY29udHJvbHNfZGlzYWJsZWRdXSI+CiAgICAgICAgICAgICAgPHByZT5iLnVwZGF0ZShmcmFtZT1OUF9BUlJBWSk8L3ByZT4KICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgoKICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfdmFsdWVzTm90RnJhbWUoX3ZhbHVlcyldXSI+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjaGVja2VkPSJ7e19zaG93QWxsfX0iIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj5TaG93IGFsbCBkYXRhIDxpPihjYW4gYmUgcmVzb3VyY2UgaW50ZW5zaXZlKTwvaT48L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW192YWx1ZXNOb3RGcmFtZShfdmFsdWVzKV1dIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMz5Nb2RlPC9oMz4KICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwIGlkPSJtb2RlU2VsZWN0b3IiIHNlbGVjdGVkPSJ7e19tb2RlfX0iPgogICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iY3VycmVudCIgZGlzYWJsZWQ9IltbX2NvbnRyb2xzX2Rpc2FibGVkXV0iPgogICAgICAgICAgICAgICAgY3VycmVudCB2YWx1ZXMKICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9InZhcmlhbmNlIiBkaXNhYmxlZD0iW1tfY29udHJvbHNfZGlzYWJsZWRdXSI+CiAgICAgICAgICAgICAgICB2YXJpYW5jZSBvdmVyIHRyYWluIHN0ZXBzCiAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tZ3JvdXA+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfdmFyaWFuY2VTZWxlY3RlZChfbW9kZSldXSI+CiAgICAgICAgICAgICAgPGg0PlZhcmlhbmNlIHRpbWVzdGVwczoge3tfd2luZG93U2l6ZX19PC9oND4KICAgICAgICAgICAgICA8cGFwZXItc2xpZGVyIGlkPSJ3aW5kb3dTbGlkZXIiIHZhbHVlPSJ7e193aW5kb3dTaXplfX0iIHR5cGU9Im51bWJlciIgc3RlcD0iMSIgbWluPSIyIiBtYXg9IjIwIiBwaW49InRydWUiIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgICAgICA8L3BhcGVyLXNsaWRlcj4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXItc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMz5JbWFnZSBzY2FsaW5nPC9oMz4KICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwIGlkPSJzY2FsaW5nU2VsZWN0b3IiIHNlbGVjdGVkPSJ7e19zY2FsaW5nfX0iPgogICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9Im9wdGlvbi1sYXllciIgbmFtZT0ibGF5ZXIiIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgICAgICAgIHBlciBzZWN0aW9uCiAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAgZm9yPSJvcHRpb24tbGF5ZXIiIHBvc2l0aW9uPSJyaWdodCI+CiAgICAgICAgICAgICAgICBCbGFjayBpcyB0aGUgbG93ZXN0IHZhbHVlIGluIHRoYXQgc2VjdGlvbiwgd2hpdGUgaXMgdGhhdCBsYXJnZXN0CiAgICAgICAgICAgICAgICB2YWx1ZSBpbiB0aGF0IHNlY3Rpb24uCiAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgoKICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIGlkPSJvcHRpb24tbmV0d29yayIgbmFtZT0ibmV0d29yayIgZGlzYWJsZWQ9IltbX2NvbnRyb2xzX2Rpc2FibGVkXV0iPgogICAgICAgICAgICAgICAgYWxsIHNlY3Rpb25zCiAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgPHBhcGVyLXRvb2x0aXAgZm9yPSJvcHRpb24tbmV0d29yayIgcG9zaXRpb249InJpZ2h0Ij4KICAgICAgICAgICAgICAgIEJsYWNrIGlzIHRoZSBzbWFsbGVzdCB2YWx1ZSBpbiBhbGwgc2VjdGlvbnMsIHdoaXRlIGlzIHRoZQogICAgICAgICAgICAgICAgbGFyZ2VzdCB2YWx1ZSBpbiBhbGwgc2VjdGlvbnMuCiAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgoKICAgICAgICAgICAgPGRpdiBpZD0iY29sb3JtYXAtc2VsZWN0aW9uIj4KICAgICAgICAgICAgICA8ZGl2IGlkPSJjb2xvcm1hcC1zZWxlY3Rpb24tbGFiZWwiPkNvbG9ybWFwOjwvZGl2PgogICAgICAgICAgICAgIDxwYXBlci1kcm9wZG93bi1tZW51IG5vLWxhYmVsLWZsb2F0IHNlbGVjdGVkLWl0ZW0tbGFiZWw9Int7X2NvbG9ybWFwfX0iIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgICAgICAgIDxwYXBlci1saXN0Ym94IHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSIwIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+bWFnbWE8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPmluZmVybm88L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtPnBsYXNtYTwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+dmlyaWRpczwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+Z3JheXNjYWxlPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPC9wYXBlci1saXN0Ym94PgogICAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPGgzPlVwZGF0ZXMgcGVyIHNlY29uZDoge3tfRlBTfX08L2gzPgogICAgICAgICAgPHBhcGVyLXNsaWRlciBpZD0iRlBTU2xpZGVyIiB2YWx1ZT0ie3tfRlBTfX0iIHR5cGU9Im51bWJlciIgc3RlcD0iMSIgbWluPSIwIiBtYXg9IjMwIiBwaW49InRydWUiIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgIDwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24iPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBjbGFzcz0ieC1idXR0b24iIGlkPSJyZWNvcmRfYnV0dG9uIiBvbi10YXA9Il90b2dnbGVSZWNvcmQiIGRpc2FibGVkPSJbW19jb250cm9sc19kaXNhYmxlZF1dIj4KICAgICAgICAgICAgICBbW19yZWNvcmRUZXh0XV0KICAgICAgICAgICAgPC9wYXBlci1idXR0b24+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIj4KICAgICAgICAgIDxwIGNsYXNzPSJkaXNjbGFpbWVyIj4KICAgICAgICAgICAgTm90ZTogQmVob2xkZXIgY3VycmVudGx5IG9ubHkgd29ya3Mgd2VsbCBvbiBsb2NhbCBmaWxlIHN5c3RlbXMuCiAgICAgICAgICAKICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImNlbnRlciIgc2xvdD0iY2VudGVyIj4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9pc19hY3RpdmVdXSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJuby1kYXRhLXdhcm5pbmciPgogICAgICAgICAgICA8aDM+Tm8gQmVob2xkZXIgZGF0YSB3YXMgZm91bmQuPC9oMz4KCiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczoKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT5Zb3VyIHNjcmlwdCBpc24ndCBydW5uaW5nLjwvbGk+CiAgICAgICAgICAgICAgPGxpPllvdSBhcmVuJ3QgY2FsbGluZyA8Y29kZT5iZWhvbGRlci51cGRhdGUoKTwvY29kZT4uPC9saT4KICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIFRvIHVzZSBCZWhvbGRlciwgaW1wb3J0IGFuZCBpbnN0YW50aWF0ZSB0aGUKICAgICAgICAgICAgICA8Y29kZT5CZWhvbGRlcjwvY29kZT4gY2xhc3MsIGFuZCBjYWxsIGl0cwogICAgICAgICAgICAgIDxjb2RlPnVwZGF0ZTwvY29kZT4gbWV0aG9kIHdpdGggYSA8Y29kZT5TZXNzaW9uPC9jb2RlPiBhcmd1bWVudAogICAgICAgICAgICAgIGFmdGVyIGV2ZXJ5IHRyYWluIHN0ZXA6CiAgICAgICAgICAgIAoKICAgICAgICAgICAgPHByZT5mcm9tIHRlbnNvcmJvYXJkLnBsdWdpbnMuYmVob2xkZXIgaW1wb3J0IEJlaG9sZGVyCmJlaG9sZGVyID0gQmVob2xkZXIoTE9HX0RJUkVDVE9SWSkKCiMgaW5zaWRlIHRyYWluIGxvb3AKYmVob2xkZXIudXBkYXRlKAogIHNlc3Npb249c2VzcywKICBhcnJheXM9bGlzdF9vZl9ucF9hcnJheXMsICAjIG9wdGlvbmFsIGFyZ3VtZW50CiAgZnJhbWU9dHdvX2RpbWVuc2lvbmFsX25wX2FycmF5LCAgIyBvcHRpb25hbCBhcmd1bWVudAopPC9wcmU+CiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHVzaW5nIDxjb2RlPnRmLnRyYWluLk1vbml0b3JlZFNlc3Npb248L2NvZGU+LCB5b3UgY2FuIHVzZQogICAgICAgICAgICAgIDxjb2RlPkJlaG9sZGVySG9vazwvY29kZT46CiAgICAgICAgICAgIAoKICAgICAgICAgICAgPHByZT5mcm9tIHRlbnNvcmJvYXJkLnBsdWdpbnMuYmVob2xkZXIgaW1wb3J0IEJlaG9sZGVySG9vawpiZWhvbGRlcl9ob29rID0gQmVob2xkZXJIb29rKExPR19ESVJFQ1RPUlkpCndpdGggTW9uaXRvcmVkU2Vzc2lvbiguLi4sIGhvb2tzPVtiZWhvbGRlcl9ob29rXSkgYXMgc2VzczoKICBzZXNzLnJ1bih0cmFpbl9vcCk8L3ByZT4KCiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgIElmIHlvdSB0aGluayBldmVyeXRoaW5nIGlzIHNldCB1cCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL3RlbnNvcmJvYXJkL3BsdWdpbnMvYmVob2xkZXIvUkVBRE1FLm1kIj50aGUgUkVBRE1FPC9hPgogICAgICAgICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICAKCiAgICAgICAgICAgIDxwIGNsYXNzPSJkaXNjbGFpbWVyIj4KICAgICAgICAgICAgICBOb3RlOiBCZWhvbGRlciBjdXJyZW50bHkgb25seSB3b3JrcyB3ZWxsIG9uIGxvY2FsIGZpbGUgc3lzdGVtcy4KICAgICAgICAgICAgCiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzX2FjdGl2ZV1dIj4KICAgICAgICAgIDx0Zi1iZWhvbGRlci12aWRlbyBpZD0idmlkZW8iIGZwcz0iW1tfRlBTXV0iPjwvdGYtYmVob2xkZXItdmlkZW8+CgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW192YWx1ZXNOb3RGcmFtZShfdmFsdWVzKV1dIj4KICAgICAgICAgICAgPHRmLWJlaG9sZGVyLWluZm8gaWQ9ImluZm8iIGZwcz0iW1tfRlBTXV0iPiA8L3RmLWJlaG9sZGVyLWluZm8+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgogICAgPHN0eWxlIGluY2x1ZGU9ImRhc2hib2FyZC1zdHlsZSI+PC9zdHlsZT4KICAgIDxzdHlsZT4KICAgICAgLmNlbnRlciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgfQoKICAgICAgLm5vLWRhdGEtd2FybmluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwOwogICAgICB9CgogICAgICBwYXBlci1jaGVja2JveCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogNHB4OwogICAgICB9CgogICAgICBwYXBlci1yYWRpby1idXR0b24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgcGFkZGluZzogNXB4OwoKICAgICAgICAtLXBhcGVyLXJhZGlvLWJ1dHRvbi1yYWRpby1jb250YWluZXI6IHsKICAgICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLS1wYXBlci1yYWRpby1idXR0b24tbGFiZWw6IHsKICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHBhcGVyLXJhZGlvLWdyb3VwIHsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgLS1wYXBlci1zbGlkZXItYWN0aXZlLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1rbm9iLXN0YXJ0LWJvcmRlci1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXIta25vYi1zdGFydC1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItbWFya2Vycy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgLS1wYXBlci1zbGlkZXItcGluLWNvbG9yOiB2YXIoLS10Yi1vcmFuZ2Utc3Ryb25nKTsKICAgICAgICAtLXBhcGVyLXNsaWRlci1waW4tc3RhcnQtY29sb3I6IHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpOwogICAgICAgIGZsZXgtZ3JvdzogMjsKICAgICAgfQoKICAgICAgcHJlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICAgIH0KCiAgICAgIHBhcGVyLWJ1dHRvbiNyZWNvcmRfYnV0dG9uIHsKICAgICAgICBjb2xvcjogI2QzMmYyZjsKICAgICAgfQoKICAgICAgcGFwZXItYnV0dG9uI3JlY29yZF9idXR0b24uaXMtcmVjb3JkaW5nIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZDMyZjJmOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgfQoKICAgICAgLnNpZGViYXItc2VjdGlvbi5iZWhvbGRlci1kYXNoYm9hcmQ6bGFzdC1jaGlsZCB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICB9CgogICAgICAjY29sb3JtYXAtc2VsZWN0aW9uIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgfQoKICAgICAgI2NvbG9ybWFwLXNlbGVjdGlvbi1sYWJlbCB7CiAgICAgICAgbWFyZ2luLXRvcDogMTNweDsKICAgICAgfQoKICAgICAgI2NvbG9ybWFwLXNlbGVjdGlvbiBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1mb2N1cy1jb2xvcjogdmFyKC0tdGItb3JhbmdlLXN0cm9uZyk7CiAgICAgICAgd2lkdGg6IDEwNXB4OwogICAgICB9CgogICAgICBoNCB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgbWFyZ2luOiA1cHggMDsKICAgICAgfQoKICAgICAgcC5kaXNjbGFpbWVyIHsKICAgICAgICBjb2xvcjogIzk5OTsKICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgIH0KCiAgICAgIHAuY29udHJvbHMtZGlzYWJsZWQtbWVzc2FnZSB7CiAgICAgICAgY29sb3I6ICNjMDA7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgIH0KCiAgICAgIC5zaWRlYmFyIHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tc3BsaXQtbGF5b3V0Ij4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbF0pIHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICB9CgogICAgICA6aG9zdCA6OnNsb3R0ZWQoKikgewogICAgICAgIGZsZXg6IDEgMSBhdXRvOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdCA+ICNzcGxpdHRlciB7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMTsKICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKICAgICAgICBtaW4td2lkdGg6IDhweDsKICAgICAgICBtaW4taGVpZ2h0OiA4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZGl2aWRlci1jb2xvciwgI2NjYyk7CiAgICAgICAgZmlsbDogdmFyKC0tcHJpbWFyeS1iYWNrZ3JvdW5kLWNvbG9yLCAjZmZmKTsKICAgICAgICBAYXBwbHkgLS12YWFkaW4tc3BsaXQtbGF5b3V0LXNwbGl0dGVyOwogICAgICB9CgogICAgICA6aG9zdCg6bm90KFt2ZXJ0aWNhbF0pKSA+ICNzcGxpdHRlciB7CiAgICAgICAgY3Vyc29yOiBldy1yZXNpemU7CiAgICAgIH0KCiAgICAgIDpob3N0KFt2ZXJ0aWNhbF0pID4gI3NwbGl0dGVyIHsKICAgICAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKICAgICAgfQoKICAgICAgI2hhbmRsZSwKICAgICAgI3NwbGl0dGVyIDo6c2xvdHRlZChbc2xvdD1oYW5kbGVdKSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgfQoKICAgICAgOmhvc3QoW3ZlcnRpY2FsXSkgPiAjc3BsaXR0ZXIgI2hhbmRsZSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKDkwZGVnKTsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzbG90IGlkPSJwcmltYXJ5IiBuYW1lPSJwcmltYXJ5Ij48L3Nsb3Q+CiAgICA8ZGl2IGlkPSJzcGxpdHRlciIgb24tdHJhY2s9Il9vbkhhbmRsZVRyYWNrIiBvbi1kb3duPSJfcHJldmVudERlZmF1bHQiPgogICAgICA8c2xvdCBuYW1lPSJoYW5kbGUiPgogICAgICAgIDxzdmcgaWQ9ImhhbmRsZSIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIj4KICAgICAgICAgIDxyZWN0IHg9IjE5IiB5PSI4IiB3aWR0aD0iMiIgaGVpZ2h0PSIyNCI+PC9yZWN0PgogICAgICAgIDwvc3ZnPgogICAgICA8L3Nsb3Q+CiAgICA8L2Rpdj4KICAgIDxzbG90IGlkPSJzZWNvbmRhcnkiIG5hbWU9InNlY29uZGFyeSI+PC9zbG90PgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtaHBhcmFtcy1xdWVyeS1wYW5lIj4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJwYW5lIj4KICAgICAgPHZhYWRpbi1zcGxpdC1sYXlvdXQgdmVydGljYWw+CiAgICAgICAgPHZhYWRpbi1zcGxpdC1sYXlvdXQgdmVydGljYWwgaWQ9Imh5cGVycGFyYW1ldGVycy1tZXRyaWNzLXN0YXR1c2VzIj4KICAgICAgICAgIDx2YWFkaW4tc3BsaXQtbGF5b3V0IHZlcnRpY2FsIGlkPSJoeXBlcnBhcmFtZXRlcnMtbWV0cmljcyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24gaHlwZXJwYXJhbWV0ZXJzIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5IeXBlcnBhcmFtZXRlcnM8L2Rpdj4KICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJ7e19ocGFyYW1zfX0iIGFzPSJocGFyYW0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaHBhcmFtIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7aHBhcmFtLmRpc3BsYXllZH19IiBjbGFzcz0iaHBhcmFtLWNoZWNrYm94Ij4KICAgICAgICAgICAgICAgICAgICBbW19ocGFyYW1OYW1lKGhwYXJhbS5pbmZvKV1dCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItY2hlY2tib3g+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIuZG9tYWluRGlzY3JldGVdXSI+CiAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tocGFyYW0uZmlsdGVyLmRvbWFpbkRpc2NyZXRlXV0iPgogICAgICAgICAgICAgICAgICAgICAgPHBhcGVyLWNoZWNrYm94IGNoZWNrZWQ9Int7aXRlbS5jaGVja2VkfX0iIGNsYXNzPSJkaXNjcmV0ZS12YWx1ZS1jaGVja2JveCIgb24tY2hhbmdlPSJfcXVlcnlTZXJ2ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICBbW19wcmV0dHlQcmludChpdGVtLnZhbHVlKV1dCiAgICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLWNoZWNrYm94PgogICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbaHBhcmFtLmZpbHRlci5pbnRlcnZhbF1dIj4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItaW5wdXQgbGFiZWw9Ik1pbiIgdmFsdWU9Int7aHBhcmFtLmZpbHRlci5pbnRlcnZhbC5taW4udmFsdWV9fSIgYWxsb3dlZF9wYXR0ZXJuPSJbMC05LmVcLV0iIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIgaW52YWxpZD0iW1tocGFyYW0uZmlsdGVyLmludGVydmFsLm1pbi5pbnZhbGlkXV0iIHBsYWNlaG9sZGVyPSItaW5maW5pdHkiPgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICAgICAgPHBhcGVyLWlucHV0IGxhYmVsPSJNYXgiIHZhbHVlPSJ7e2hwYXJhbS5maWx0ZXIuaW50ZXJ2YWwubWF4LnZhbHVlfX0iIGFsbG93ZWRfcGF0dGVybj0iWzAtOS5lXC1dIiBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiIGludmFsaWQ9IltbaHBhcmFtLmZpbHRlci5pbnRlcnZhbC5tYXguaW52YWxpZF1dIiBwbGFjZWhvbGRlcj0iK2luZmluaXR5Ij4KICAgICAgICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2hwYXJhbS5maWx0ZXIucmVnZXhwXV0iPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dCBsYWJlbD0iUmVndWxhciBleHByZXNzaW9uIiB2YWx1ZT0ie3tocGFyYW0uZmlsdGVyLnJlZ2V4cH19IiBvbi12YWx1ZS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiPgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBtZXRyaWNzIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5NZXRyaWNzPC9kaXY+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tfbWV0cmljc319IiBhcz0ibWV0cmljIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1ldHJpYyI+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3ttZXRyaWMuZGlzcGxheWVkfX0iIGNsYXNzPSJtZXRyaWMtY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgIFtbX21ldHJpY05hbWUobWV0cmljLmluZm8pXV0KICAgICAgICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWVsZW1lbnQiPgogICAgICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dCBsYWJlbD0iTWluIiB2YWx1ZT0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1pbi52YWx1ZX19IiBhbGxvd2VkLXBhdHRlcm49IlswLTkuZVwtXSIgb24tdmFsdWUtY2hhbmdlZD0iX3F1ZXJ5U2VydmVyIiBlcnJvci1tZXNzYWdlPSJJbnZhbGlkIGlucHV0IiBpbnZhbGlkPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWluLmludmFsaWR9fSIgcGxhY2Vob2xkZXI9Ii1pbmZpbml0eSI+CiAgICAgICAgICAgICAgICAgICAgPC9wYXBlci1pbnB1dD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50Ij4KICAgICAgICAgICAgICAgICAgICA8cGFwZXItaW5wdXQgbGFiZWw9Ik1heCIgYWxsb3dlZC1wYXR0ZXJuPSJbMC05LmVcLV0iIHZhbHVlPSJ7e21ldHJpYy5maWx0ZXIuaW50ZXJ2YWwubWF4LnZhbHVlfX0iIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIgaW52YWxpZD0ie3ttZXRyaWMuZmlsdGVyLmludGVydmFsLm1heC5pbnZhbGlkfX0iIHBsYWNlaG9sZGVyPSIraW5maW5pdHkiPgogICAgICAgICAgICAgICAgICAgIDwvcGFwZXItaW5wdXQ+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3ZhYWRpbi1zcGxpdC1sYXlvdXQ+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uIHN0YXR1cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPlN0YXR1czwvZGl2PgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19zdGF0dXNlc11dIiBhcz0ic3RhdHVzIj4KICAgICAgICAgICAgICA8cGFwZXItY2hlY2tib3ggY2hlY2tlZD0ie3tzdGF0dXMuYWxsb3dlZH19IiBvbi1jaGFuZ2U9Il9xdWVyeVNlcnZlciI+CiAgICAgICAgICAgICAgICBbW3N0YXR1cy5kaXNwbGF5TmFtZV1dCiAgICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgICAgICA8dmFhZGluLXNwbGl0LWxheW91dCB2ZXJ0aWNhbCBpZD0ic29ydGluZy1wYWdpbmciPgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBzb3J0aW5nIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+U29ydGluZzwvZGl2PgogICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBsYWJlbD0iU29ydCBieSIgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiIGhvcml6b250YWwtYWxpZ249ImxlZnQiPgogICAgICAgICAgICAgIDxwYXBlci1saXN0Ym94IGNsYXNzPSJkcm9wZG93bi1jb250ZW50IiBzbG90PSJkcm9wZG93bi1jb250ZW50IiBzZWxlY3RlZD0ie3tfc29ydEJ5SW5kZXh9fSIgb24tc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkPSJfcXVlcnlTZXJ2ZXIiPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfaHBhcmFtc11dIiBhcz0iaHBhcmFtIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgW1tfaHBhcmFtTmFtZShocGFyYW0uaW5mbyldXQogICAgICAgICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfbWV0cmljc11dIiBhcz0ibWV0cmljIj4KICAgICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgW1tfbWV0cmljTmFtZShtZXRyaWMuaW5mbyldXQogICAgICAgICAgICAgICAgICA8L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgPC9wYXBlci1kcm9wZG93bi1tZW51PgogICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBsYWJlbD0iRGlyZWN0aW9uIiBvbi1zZWxlY3RlZC1pdGVtLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciIgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCI+CiAgICAgICAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSJ7e19zb3J0RGlyZWN0aW9ufX0iPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+QXNjZW5kaW5nPC9wYXBlci1pdGVtPgogICAgICAgICAgICAgICAgPHBhcGVyLWl0ZW0+RGVzY2VuZGluZzwvcGFwZXItaXRlbT4KICAgICAgICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgICAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPHZhYWRpbi1zcGxpdC1sYXlvdXQgdmVydGljYWwgaWQ9InBhZ2luZy1kb3dubG9hZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24gcGFnaW5nIj4KICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj5QYWdpbmc8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgTnVtYmVyIG9mIG1hdGNoaW5nIHNlc3Npb24gZ3JvdXBzOgogICAgICAgICAgICAgICAgW1tfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHJdXQogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2UtbnVtYmVyLWlucHV0Ij4KICAgICAgICAgICAgICAgIDxwYXBlci1pbnB1dCBsYWJlbD0iUGFnZSAjIiB2YWx1ZT0ie3tfcGFnZU51bWJlcklucHV0LnZhbHVlfX0iIGFsbG93ZWQtcGF0dGVybj0iWzAtOV0iIGVycm9yLW1lc3NhZ2U9IkludmFsaWQgaW5wdXQiIGludmFsaWQ9IltbX3BhZ2VOdW1iZXJJbnB1dC5pbnZhbGlkXV0iIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciI+CiAgICAgICAgICAgICAgICAgIDxkaXYgc2xvdD0ic3VmZml4IiBjbGFzcz0icGFnZS1zdWZmaXgiPgogICAgICAgICAgICAgICAgICAgIC8gW1tfcGFnZUNvdW50U3RyXV0KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubGluZS1lbGVtZW50IHBhZ2Utc2l6ZS1pbnB1dCI+CiAgICAgICAgICAgICAgICA8cGFwZXItaW5wdXQgbGFiZWw9Ik1heCAjIG9mIHNlc3Npb24gZ3JvdXBzIHBlciBwYWdlOiIgdmFsdWU9Int7X3BhZ2VTaXplSW5wdXQudmFsdWV9fSIgYWxsb3dlZC1wYXR0ZXJuPSJbMC05XSIgZXJyb3ItbWVzc2FnZT0iSW52YWxpZCBpbnB1dCIgaW52YWxpZD0iW1tfcGFnZVNpemVJbnB1dC5pbnZhbGlkXV0iIG9uLXZhbHVlLWNoYW5nZWQ9Il9xdWVyeVNlcnZlciI+CiAgICAgICAgICAgICAgICA8L3BhcGVyLWlucHV0PgogICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbiBkb3dubG9hZCI+CiAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19zZXNzaW9uR3JvdXBzUmVxdWVzdF1dIj4KICAgICAgICAgICAgICAgIERvd25sb2FkIGRhdGEgYXMKICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICA8YSBpZD0iY3N2TGluayIgZG93bmxvYWQ9ImhwYXJhbXNfdGFibGUuY3N2IiBocmVmPSJbW19jc3ZVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIj5DU1Y8L2E+CiAgICAgICAgICAgICAgICAgIDxhIGlkPSJqc29uTGluayIgZG93bmxvYWQ9ImhwYXJhbXNfdGFibGUuanNvbiIgaHJlZj0iW1tfanNvblVybChfc2Vzc2lvbkdyb3Vwc1JlcXVlc3QsIGNvbmZpZ3VyYXRpb24pXV0iPkpTT048L2E+CiAgICAgICAgICAgICAgICAgIDxhIGlkPSJsYXRleExpbmsiIGRvd25sb2FkPSJocGFyYW1zX3RhYmxlLnRleCIgaHJlZj0iW1tfbGF0ZXhVcmwoX3Nlc3Npb25Hcm91cHNSZXF1ZXN0LCBjb25maWd1cmF0aW9uKV1dIj5MYVRlWDwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgICAgICA8L3ZhYWRpbi1zcGxpdC1sYXlvdXQ+CiAgICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgIDwvZGl2PgogICAgPHN0eWxlPgogICAgICAucGFuZSB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuc2VjdGlvbiB7CiAgICAgICAgbWFyZ2luOiA1cHggMTBweCA1cHggMTBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICAgIC5zZWN0aW9uLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7CiAgICAgIH0KICAgICAgI2h5cGVycGFyYW1ldGVycy1tZXRyaWNzLXN0YXR1c2VzIHsKICAgICAgICBmbGV4LWJhc2lzOiA3MCU7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICB9CiAgICAgICNoeXBlcnBhcmFtZXRlcnMtbWV0cmljcyB7CiAgICAgICAgZmxleC1iYXNpczogOTAlOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAuaHlwZXJwYXJhbWV0ZXJzIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAubWV0cmljcyB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgIH0KICAgICAgLnN0YXR1c2VzIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICAjc29ydGluZy1wYWdpbmcgewogICAgICAgIGZsZXgtYmFzaXM6IDMwJTsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgI3BhZ2luZy1kb3dubG9hZCB7CiAgICAgICAgZmxleC1iYXNpczogOTAlOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQogICAgICAuc29ydGluZyB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgLnBhZ2luZyB7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgIH0KICAgICAgLmRvd25sb2FkIHsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgfQogICAgICAuZGlzY3JldGUtdmFsdWUtY2hlY2tib3gsCiAgICAgIC5tZXRyaWMtY2hlY2tib3gsCiAgICAgIC5ocGFyYW0tY2hlY2tib3ggewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC5kaXNjcmV0ZS12YWx1ZS1jaGVja2JveCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7CiAgICAgIH0KICAgICAgLmhwYXJhbSwKICAgICAgLm1ldHJpYyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmlubGluZS1lbGVtZW50IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgd2lkdGg6IDQwJTsKICAgICAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgICAgfQogICAgICAucGFnZS1udW1iZXItaW5wdXQgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgIH0KICAgICAgLnBhZ2Utc2l6ZS1pbnB1dCB7CiAgICAgICAgd2lkdGg6IDYwJTsKICAgICAgfQogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItbGlzdGJveCB7CiAgICAgICAgbWF4LWhlaWdodDogMTVlbTsKICAgICAgfQogICAgICAucGFnZS1zdWZmaXggewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9Imlyb24tcGFnZXMiPgoKICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgOmhvc3QgPiA6OnNsb3R0ZWQoOm5vdChzbG90KTpub3QoLmlyb24tc2VsZWN0ZWQpKSB7CiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgoKICAgIDxzbG90Pjwvc2xvdD4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InBhcGVyLWhlYWRlci1wYW5lbCI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsOwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgfQoKICAgICAgI21haW5QYW5lbCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LXZlcnRpY2FsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4OwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1ib2R5OwogICAgICB9CgogICAgICAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLWNvbnRhaW5lcjsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc2Nyb2xsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1zY3JvbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXNjcm9sbC1jb250YWluZXI7CiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPXNjcm9sbF0pIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IGNvdmVyCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT1jb3Zlcl0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtY292ZXItY29udGFpbmVyOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgIH0KCiAgICAgIDpob3N0KFttb2RlPWNvdmVyXSkgI21haW5QYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICAgfQoKICAgICAgLyoKICAgICAgICogbW9kZTogc3RhbmRhcmQKICAgICAgICovCiAgICAgIDpob3N0KFttb2RlPXN0YW5kYXJkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zdGFuZGFyZC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHNlYW1lZAogICAgICAgKi8KICAgICAgOmhvc3QoW21vZGU9c2VhbWVkXSkgI21haW5Db250YWluZXIgewogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zZWFtZWQtY29udGFpbmVyOwogICAgICB9CgoKICAgICAgLyoKICAgICAgICogbW9kZTogd2F0ZXJmYWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGxdKSAjbWFpbkNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItaGVhZGVyLXBhbmVsLXdhdGVyZmFsbC1jb250YWluZXI7CiAgICAgIH0KCiAgICAgIC8qCiAgICAgICAqIG1vZGU6IHdhdGVyZmFsbC10YWxsCiAgICAgICAqLwogICAgICA6aG9zdChbbW9kZT13YXRlcmZhbGwtdGFsbF0pICNtYWluQ29udGFpbmVyIHsKICAgICAgICBAYXBwbHkgLS1wYXBlci1oZWFkZXItcGFuZWwtd2F0ZXJmYWxsLXRhbGwtY29udGFpbmVyOwogICAgICB9CgogICAgICAjZHJvcFNoYWRvdyB7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDBweCA1cHggNnB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgIEBhcHBseSAtLXBhcGVyLWhlYWRlci1wYW5lbC1zaGFkb3c7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgICNkcm9wU2hhZG93Lmhhcy1zaGFkb3cgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgIH0KCiAgICAgICNtYWluQ29udGFpbmVyID4gOjpzbG90dGVkKC5maXQpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZml0OwogICAgICB9CgogICAgPC9zdHlsZT4KCiAgICA8c2xvdCBpZD0iaGVhZGVyU2xvdCIgbmFtZT0iaGVhZGVyIj48L3Nsb3Q+CgogICAgPGRpdiBpZD0ibWFpblBhbmVsIj4KICAgICAgPGRpdiBpZD0ibWFpbkNvbnRhaW5lciIgY2xhc3MkPSJbW19jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzKG1vZGUpXV0iPgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImRyb3BTaGFkb3ciPjwvZGl2PgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci10YWIiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIEBhcHBseSAtLWxheW91dC1pbmxpbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgcGFkZGluZzogMCAxMnB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CgogICAgICAgIEBhcHBseSAtLXBhcGVyLWZvbnQtY29tbW9uLWJhc2U7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiOwogICAgICB9CgogICAgICA6aG9zdCg6Zm9jdXMpIHsKICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICB9CgogICAgICA6aG9zdChbbGlua10pIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICB9CgogICAgICAudGFiLWNvbnRlbnQgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAxLCAxKTsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtaG9yaXpvbnRhbDsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWNlbnRlcjsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYi1jb250ZW50OwogICAgICB9CgogICAgICA6aG9zdCg6bm90KC5pcm9uLXNlbGVjdGVkKSkgPiAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDAuODsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiLWNvbnRlbnQtdW5zZWxlY3RlZDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSAudGFiLWNvbnRlbnQgewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgfQoKICAgICAgcGFwZXItcmlwcGxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdGFiLWluaywgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgfQoKICAgICAgLnRhYi1jb250ZW50ID4gOjpzbG90dGVkKGEpIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtZmxleC1hdXRvOwoKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPgogICAgICA8c2xvdD48L3Nsb3Q+CiAgICA8L2Rpdj4KICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCgoKPGlyb24taWNvbnNldC1zdmcgbmFtZT0icGFwZXItdGFicyIgc2l6ZT0iMjQiPgo8c3ZnPjxkZWZzPgo8ZyBpZD0iY2hldnJvbi1sZWZ0Ij48cGF0aCBkPSJNMTUuNDEgNy40MUwxNCA2bC02IDYgNiA2IDEuNDEtMS40MUwxMC44MyAxMnoiIC8+PC9nPgo8ZyBpZD0iY2hldnJvbi1yaWdodCI+PHBhdGggZD0iTTEwIDZMOC41OSA3LjQxIDEzLjE3IDEybC00LjU4IDQuNTlMMTAgMThsNi02eiIgLz48L2c+CjwvZGVmcz48L3N2Zz4KPC9pcm9uLWljb25zZXQtc3ZnPgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci10YWJzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQ7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWNlbnRlcjsKCiAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKCiAgICAgICAgLyogTk9URTogQm90aCB2YWx1ZXMgYXJlIG5lZWRlZCwgc2luY2Ugc29tZSBwaG9uZXMgcmVxdWlyZSB0aGUgdmFsdWUgdG8gYmUgYHRyYW5zcGFyZW50YC4gKi8KICAgICAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFiczsKICAgICAgfQoKICAgICAgOmhvc3QoOmRpcihydGwpKSB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWwtcmV2ZXJzZTsKICAgICAgfQoKICAgICAgI3RhYnNDb250YWluZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIEBhcHBseSAtLWxheW91dC1mbGV4LWF1dG87CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1jb250YWluZXI7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIC1tb3otZmxleC1iYXNpczogYXV0bzsKICAgICAgICAtbXMtZmxleC1iYXNpczogYXV0bzsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIEBhcHBseSAtLXBhcGVyLXRhYnMtY29udGVudDsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQ6bm90KC5zY3JvbGxhYmxlKSwKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWhvcml6b250YWw7CiAgICAgIH0KCiAgICAgICN0YWJzQ29udGVudC5zY3JvbGxhYmxlLmZpdC1jb250YWluZXIgewogICAgICAgIG1pbi13aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3RhYnNDb250ZW50LnNjcm9sbGFibGUuZml0LWNvbnRhaW5lciA+IDo6c2xvdHRlZCgqKSB7CiAgICAgICAgLyogSUUgLSBwcmV2ZW50IHRhYnMgZnJvbSBjb21wcmVzc2luZyB3aGVuIHRoZXkgc2hvdWxkIHNjcm9sbC4gKi8KICAgICAgICAtbXMtZmxleDogMSAwIGF1dG87CiAgICAgICAgLXdlYmtpdC1mbGV4OiAxIDAgYXV0bzsKICAgICAgICBmbGV4OiAxIDAgYXV0bzsKICAgICAgfQoKICAgICAgLmhpZGRlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgLm5vdC12aXNpYmxlIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgfQoKICAgICAgcGFwZXItaWNvbi1idXR0b24gewogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxMnB4OwogICAgICAgIG1hcmdpbjogMCA0cHg7CiAgICAgIH0KCiAgICAgICNzZWxlY3Rpb25CYXIgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBoZWlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvciwgdmFyKC0tcGFwZXIteWVsbG93LWExMDApKTsKICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0IGNlbnRlcjsKICAgICAgICAgIHRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybTsKCiAgICAgICAgQGFwcGx5IC0tcGFwZXItdGFicy1zZWxlY3Rpb24tYmFyOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmFsaWduLWJvdHRvbSB7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvdHRvbTogYXV0bzsKICAgICAgfQoKICAgICAgI3NlbGVjdGlvbkJhci5leHBhbmQgewogICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzOwogICAgICAgIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDEsIDEpOwogICAgICB9CgogICAgICAjc2VsZWN0aW9uQmFyLmNvbnRyYWN0IHsKICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE4czsKICAgICAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMCwgMC4wLCAwLjIsIDEpOwogICAgICB9CgogICAgICAjdGFic0NvbnRlbnQgPiA6OnNsb3R0ZWQoOm5vdCgjc2VsZWN0aW9uQmFyKSkgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLWxlZnQiIGNsYXNzJD0iW1tfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzKF9sZWZ0SGlkZGVuLCBzY3JvbGxhYmxlLCBoaWRlU2Nyb2xsQnV0dG9ucyldXSIgb24tdXA9Il9vblNjcm9sbEJ1dHRvblVwIiBvbi1kb3duPSJfb25MZWZ0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICAgIDxkaXYgaWQ9InRhYnNDb250YWluZXIiIG9uLXRyYWNrPSJfc2Nyb2xsIiBvbi1kb3duPSJfZG93biI+CiAgICAgIDxkaXYgaWQ9InRhYnNDb250ZW50IiBjbGFzcyQ9IltbX2NvbXB1dGVUYWJzQ29udGVudENsYXNzKHNjcm9sbGFibGUsIGZpdENvbnRhaW5lcildXSI+CiAgICAgICAgPGRpdiBpZD0ic2VsZWN0aW9uQmFyIiBjbGFzcyQ9IltbX2NvbXB1dGVTZWxlY3Rpb25CYXJDbGFzcyhub0JhciwgYWxpZ25Cb3R0b20pXV0iIG9uLXRyYW5zaXRpb25lbmQ9Il9vbkJhclRyYW5zaXRpb25FbmQiPjwvZGl2PgogICAgICAgIDxzbG90Pjwvc2xvdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0icGFwZXItdGFiczpjaGV2cm9uLXJpZ2h0IiBjbGFzcyQ9IltbX2NvbXB1dGVTY3JvbGxCdXR0b25DbGFzcyhfcmlnaHRIaWRkZW4sIHNjcm9sbGFibGUsIGhpZGVTY3JvbGxCdXR0b25zKV1dIiBvbi11cD0iX29uU2Nyb2xsQnV0dG9uVXAiIG9uLWRvd249Il9vblJpZ2h0U2Nyb2xsQnV0dG9uRG93biIgdGFiaW5kZXg9Ii0xIj48L3BhcGVyLWljb24tYnV0dG9uPgoKICA8L3RlbXBsYXRlPgoKICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJwYXBlci10b29sYmFyIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItaGVpZ2h0LCA2NHB4KTsKICAgICAgICAtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQ6IHZhcigtLXBhcGVyLXRvb2xiYXItc20taGVpZ2h0LCA1NnB4KTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgaGVpZ2h0OiB2YXIoLS1jYWxjdWxhdGVkLXBhcGVyLXRvb2xiYXItaGVpZ2h0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci10b29sYmFyLWJhY2tncm91bmQsIHZhcigtLXByaW1hcnktY29sb3IpKTsKICAgICAgICBjb2xvcjogdmFyKC0tcGFwZXItdG9vbGJhci1jb2xvciwgdmFyKC0tZGFyay10aGVtZS10ZXh0LWNvbG9yKSk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhcjsKICAgICAgfQoKICAgICAgOmhvc3QoLmFuaW1hdGUpIHsKICAgICAgICB0cmFuc2l0aW9uOiB2YXIoLS1wYXBlci10b29sYmFyLXRyYW5zaXRpb24sIGhlaWdodCAwLjE4cyBlYXNlLWluKTsKICAgICAgfQoKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMik7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1tZWRpdW07CiAgICAgIH0KCiAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgaGVpZ2h0OiBjYWxjKHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1oZWlnaHQpICogMyk7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10YWxsOwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLWhlaWdodCk7CiAgICAgICAgcGFkZGluZzogMCAxNnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIEBhcHBseSAtLWxheW91dC1ob3Jpem9udGFsOwogICAgICAgIEBhcHBseSAtLWxheW91dC1jZW50ZXI7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci1jb250ZW50OwogICAgICB9CgogICAgICAvKgogICAgICAgKiBUT0RPOiBXaGVyZSBzaG91bGQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMgbGl2ZSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBlbGVtZW50cz8KICAgICAgICovCgogICAgICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgICAgICA6aG9zdCB7CiAgICAgICAgICBoZWlnaHQ6IHZhcigtLWNhbGN1bGF0ZWQtcGFwZXItdG9vbGJhci1zbS1oZWlnaHQpOwogICAgICAgIH0KCiAgICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAyKTsKICAgICAgICB9CgogICAgICAgIDpob3N0KC50YWxsKSB7CiAgICAgICAgICBoZWlnaHQ6IGNhbGModmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCkgKiAzKTsKICAgICAgICB9CgogICAgICAgIC50b29sYmFyLXRvb2xzIHsKICAgICAgICAgIGhlaWdodDogdmFyKC0tY2FsY3VsYXRlZC1wYXBlci10b29sYmFyLXNtLWhlaWdodCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAjdG9wQmFyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC8qIG1pZGRsZSBiYXIgKi8KICAgICAgI21pZGRsZUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICByaWdodDogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICA6aG9zdCgudGFsbCkgI21pZGRsZUJhciwKICAgICAgOmhvc3QoLm1lZGl1bS10YWxsKSAjbWlkZGxlQmFyIHsKICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7CiAgICAgIH0KCiAgICAgIC8qIGJvdHRvbSBiYXIgKi8KICAgICAgI2JvdHRvbUJhciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICB9CgogICAgICAvKgogICAgICAgKiBtYWtlIGVsZW1lbnRzIChlLmcuIGJ1dHRvbnMpIHJlc3BvbmQgdG8gbW91c2UvdG91Y2ggZXZlbnRzCiAgICAgICAqCiAgICAgICAqIGAudG9vbGJhci10b29sc2AgZGlzYWJsZXMgdG91Y2ggZXZlbnRzIHNvIG11bHRpcGxlIHRvb2xiYXJzIGNhbiBzdGFjayBhbmQgbm90CiAgICAgICAqIGFic29yYiBldmVudHMuIEFsbCBjaGlsZHJlbiBtdXN0IGhhdmUgcG9pbnRlciBldmVudHMgcmUtZW5hYmxlZCB0byB3b3JrIGFzCiAgICAgICAqIGV4cGVjdGVkLgogICAgICAgKi8KICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoKjpub3QoW2Rpc2FibGVkXSkpIHsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItZm9udC1jb21tb24tYmFzZTsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWZsZXg7CiAgICAgIH0KCiAgICAgIC50b29sYmFyLXRvb2xzID4gOjpzbG90dGVkKC50aXRsZSkgewogICAgICAgIG1hcmdpbi1sZWZ0OiA1NnB4OwogICAgICB9CgogICAgICAudG9vbGJhci10b29scyA+IDo6c2xvdHRlZChwYXBlci1pY29uLWJ1dHRvbiArIC50aXRsZSkgewogICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICB9CgogICAgICAvKioKICAgICAgICogVGhlIC0tcGFwZXItdG9vbGJhci10aXRsZSBtaXhpbiBpcyBhcHBsaWVkIGhlcmUgaW5zdGVhZCBvZiBhYm92ZSB0bwogICAgICAgKiBmaXggdGhlIGlzc3VlIHdpdGggbWFyZ2luLWxlZnQgYmVpbmcgaWdub3JlZCBkdWUgdG8gY3NzIG9yZGVyaW5nLgogICAgICAgKi8KICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLnRpdGxlKSB7CiAgICAgICAgQGFwcGx5IC0tcGFwZXItdG9vbGJhci10aXRsZTsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQocGFwZXItaWNvbi1idXR0b25baWNvbj1tZW51XSkgewogICAgICAgIG1hcmdpbi1yaWdodDogMjRweDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdG9vbHMgPiA6OnNsb3R0ZWQoLmZpdCkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IGF1dG87CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgbWFyZ2luOiAwOwogICAgICB9CgogICAgICAvKiBUT0RPKG5vbXMpOiBVbnRpbCB3ZSBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uIGZvciBjbGFzc2VzIHRoYXQgZG9uJ3QgdXNlCiAgICAgICAqIC9kZWVwLyBjcmVhdGUgb3VyIG93bi4KICAgICAgICovCiAgICAgIC5zdGFydC1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1zdGFydC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5jZW50ZXItanVzdGlmaWVkIHsKICAgICAgICBAYXBwbHkgLS1sYXlvdXQtY2VudGVyLWp1c3RpZmllZDsKICAgICAgfQoKICAgICAgLmVuZC1qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1lbmQtanVzdGlmaWVkOwogICAgICB9CgogICAgICAuYXJvdW5kLWp1c3RpZmllZCB7CiAgICAgICAgQGFwcGx5IC0tbGF5b3V0LWFyb3VuZC1qdXN0aWZpZWQ7CiAgICAgIH0KCiAgICAgIC5qdXN0aWZpZWQgewogICAgICAgIEBhcHBseSAtLWxheW91dC1qdXN0aWZpZWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPGRpdiBpZD0idG9wQmFyIiBjbGFzcyQ9InRvb2xiYXItdG9vbHMgW1tfY29tcHV0ZUJhckV4dHJhQ2xhc3NlcyhqdXN0aWZ5KV1dIj4KICAgICAgPHNsb3QgbmFtZT0idG9wIj48L3Nsb3Q+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGlkPSJtaWRkbGVCYXIiIGNsYXNzJD0idG9vbGJhci10b29scyBbW19jb21wdXRlQmFyRXh0cmFDbGFzc2VzKG1pZGRsZUp1c3RpZnkpXV0iPgogICAgICA8c2xvdCBuYW1lPSJtaWRkbGUiPjwvc2xvdD4KICAgIDwvZGl2PgoKICAgIDxkaXYgaWQ9ImJvdHRvbUJhciIgY2xhc3MkPSJ0b29sYmFyLXRvb2xzIFtbX2NvbXB1dGVCYXJFeHRyYUNsYXNzZXMoYm90dG9tSnVzdGlmeSldXSI+CiAgICAgIDxzbG90IG5hbWU9ImJvdHRvbSI+PC9zbG90PgogICAgPC9kaXY+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtaHBhcmFtcy1zY2FsZS1hbmQtY29sb3ItY29udHJvbHMiPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgY2xhc3M9ImNvbnRyb2wtcGFuZWwiPgogICAgICAKICAgICAgPHBhcGVyLWRyb3Bkb3duLW1lbnUgbGFiZWw9IkNvbG9yIGJ5IiBpZD0iY29sb3JCeURyb3BEb3duTWVudSIgaG9yaXpvbnRhbC1hbGlnbj0ibGVmdCI+CiAgICAgICAgPHBhcGVyLWxpc3Rib3ggY2xhc3M9ImRyb3Bkb3duLWNvbnRlbnQiIHNsb3Q9ImRyb3Bkb3duLWNvbnRlbnQiIHNlbGVjdGVkPSJ7e29wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4fX0iIGlkPSJjb2xvckJ5TGlzdEJveCI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW29wdGlvbnMuY29sdW1uc11dIiBhcz0iY29sdW1uIiBpZD0iY29sb3JCeUNvbHVtblRlbXBsYXRlIj4KICAgICAgICAgICAgPHBhcGVyLWl0ZW0gZGlzYWJsZWQ9IltbIV9pc051bWVyaWNDb2x1bW4oY29sdW1uLmluZGV4KV1dIj4KICAgICAgICAgICAgICBbW2NvbHVtbi5uYW1lXV0KICAgICAgICAgICAgPC9wYXBlci1pdGVtPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3BhcGVyLWxpc3Rib3g+CiAgICAgIDwvcGFwZXItZHJvcGRvd24tbWVudT4KCiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJjb2x1bW5zLWNvbnRhaW5lciI+CiAgICAgICAgCiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0ie3tvcHRpb25zLmNvbHVtbnN9fSIgYXM9ImNvbHVtbiI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2lzTnVtZXJpY0NvbHVtbihjb2x1bW4uaW5kZXgpXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2x1bW4iPgogICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbi10aXRsZSI+CiAgICAgICAgICAgICAgICBbW2NvbHVtbi5uYW1lXV0KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwIGNsYXNzPSJzY2FsZS1yYWRpby1ncm91cCIgc2VsZWN0ZWQ9Int7Y29sdW1uLnNjYWxlfX0iPgogICAgICAgICAgICAgICAgICA8cGFwZXItcmFkaW8tYnV0dG9uIG5hbWU9IkxJTkVBUiI+CiAgICAgICAgICAgICAgICAgICAgTGluZWFyCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ibG9nU2NhbGVCdXR0b25fW1tjb2x1bW4ubmFtZV1dIiBuYW1lPSJMT0ciIGRpc2FibGVkPSJbWyFfYWxsb3dMb2dTY2FsZShjb2x1bW4sIHNlc3Npb25Hcm91cHMuKildXSI+CiAgICAgICAgICAgICAgICAgICAgTG9nYXJpdGhtaWMKICAgICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1idXR0b24+CiAgICAgICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gbmFtZT0iUVVBTlRJTEUiPgogICAgICAgICAgICAgICAgICAgIFF1YW50aWxlCiAgICAgICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgICAgPC9wYXBlci1yYWRpby1ncm91cD4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLmNvbnRyb2wtcGFuZWwgewogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CiAgICAgIC5jb2x1bW4gewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgICAgICBib3JkZXI6IHNvbGlkIDFweCBkYXJrZ3JheTsKICAgICAgICBwYWRkaW5nOiAzcHg7CiAgICAgIH0KICAgICAgLmNvbHVtbi10aXRsZSB7CiAgICAgICAgLyogRml0IGV2ZXJ5IHRpdGxlIGluIG9uZSBsaW5lIHNvIHRoZSByYWRpbyBib3hlcyBhbGlnbiB2ZXJ0aWNhbGx5LiAqLwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CiAgICAgIH0KICAgICAgLmNvbHVtbnMtY29udGFpbmVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgIH0KICAgICAgLnNjYWxlLXJhZGlvLWdyb3VwIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgcGFkZGluZzogMnB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIHBhcGVyLWxpc3Rib3ggewogICAgICAgIG1heC1oZWlnaHQ6IDE1ZW07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLWFjdGl2ZS1pdGVtLXRoZW1hYmlsaXR5LXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICB2YWFkaW4tZ3JpZC10YWJsZSAudmFhZGluLWdyaWQtcm93W2FjdGl2ZV0gLnZhYWRpbi1ncmlkLWNlbGw6bm90KFtkZXRhaWxzY2VsbF0pIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1ib2R5LXJvdy1hY3RpdmUtY2VsbCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC10YWJsZS10YWJsZS1zY3JvbGwtc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgICN0YWJsZSB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgICB6LWluZGV4OiAtMjsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbaW9zXSAjdGFibGUgewogICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbZml4ZWQtc2VjdGlvbnNdICN0YWJsZSB7CiAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC10YWJsZS1zY3JvbGwtc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGUtZm9vdGVyIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICB2YWFkaW4tZ3JpZC10YWJsZS1ib2R5IHsKICAgICAgICB6LWluZGV4OiAtMTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbZml4ZWQtc2VjdGlvbnNdIHsKICAgICAgICAvKiBBbnkgdmFsdWUgb3RoZXIgdGhhbiDigJhub25l4oCZIGZvciB0aGUgdHJhbnNmb3JtIHJlc3VsdHMgaW4gdGhlIGNyZWF0aW9uIG9mIGJvdGggYSBzdGFja2luZyBjb250ZXh0IGFuZAogICAgICAgIGEgY29udGFpbmluZyBibG9jay4gVGhlIG9iamVjdCBhY3RzIGFzIGEgY29udGFpbmluZyBibG9jayBmb3IgZml4ZWQgcG9zaXRpb25lZCBkZXNjZW5kYW50cy4gKi8KICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbZml4ZWQtc2VjdGlvbnNdIHZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlciwKICAgICAgdmFhZGluLWdyaWQtdGFibGVbZml4ZWQtc2VjdGlvbnNdIHZhYWRpbi1ncmlkLXRhYmxlLWZvb3RlciB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB9CgogICAgICB2YWFkaW4tZ3JpZC10YWJsZVtmaXhlZC1zZWN0aW9uc10gdmFhZGluLWdyaWQtdGFibGUtYm9keSNpdGVtcyB7CiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm07CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idmFhZGluLWdyaWQtdGFibGUtY2VsbCI+PC9kb20tbW9kdWxlPgo8ZG9tLW1vZHVsZSBpZD0idmFhZGluLWdyaWQtdGFibGUtaGVhZGVyLWNlbGwiPjwvZG9tLW1vZHVsZT4KPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXRhYmxlLWZvb3Rlci1jZWxsIj48L2RvbS1tb2R1bGU+Cjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC1zaXplci1jZWxsIj48L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idmFhZGluLWdyaWQtc2l6ZXIiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICB9CgogICAgICAuY2VsbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDA7CiAgICAgICAgZm9udC1zaXplOiAxcHg7CiAgICAgICAgbWFyZ2luLXRvcDogLTFlbTsKICAgICAgfQoKICAgICAgLmNlbGxbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJbW19jb2x1bW5zXV0iIGFzPSJjb2x1bW4iPgogICAgICA8dmFhZGluLWdyaWQtc2l6ZXItY2VsbCBjbGFzcz0iY2VsbCIgY29sdW1uPSJbW2NvbHVtbl1dIj4mbmJzcDs8L3ZhYWRpbi1ncmlkLXNpemVyLWNlbGw+CiAgICA8L3RlbXBsYXRlPgoKICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXRhYmxlLW91dGVyLXNjcm9sbGVyIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMDsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICB9CgogICAgICA6aG9zdChbcGFzc3Rocm91Z2hdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgIH0KCiAgICAgIDpob3N0KFtpb3NdKSB7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgICB6LWluZGV4OiAtMzsKICAgICAgfQoKICAgICAgOmhvc3QoW2lvc11bc2Nyb2xsaW5nXSkgewogICAgICAgIHotaW5kZXg6IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHNsb3Q+PC9zbG90PgoKICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC10YWJsZS1mb2N1cy10cmFwIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgOmhvc3QgewogICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgei1pbmRleDogLTM7CiAgICAgICBoZWlnaHQ6IDA7CiAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgIH0KCiAgICAgOmhvc3QoOmZvY3VzKSwKICAgICAucHJpbWFyeTpmb2N1cywKICAgICA6OnNsb3R0ZWQoLnByaW1hcnk6Zm9jdXMpLAogICAgIC5zZWNvbmRhcnk6Zm9jdXMsCiAgICAgOjpzbG90dGVkKC5zZWNvbmRhcnk6Zm9jdXMpIHsKICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgfQogICAgPC9zdHlsZT4KCiAgICAKICAgIDxkaXYgY2xhc3M9InByaW1hcnkiIHRhYmluZGV4PSIwIiByb2xlPSJncmlkY2VsbCIgb24tZm9jdXM9Il9vbkJhaXRGb2N1cyIgb24tYmx1cj0iX29uQmFpdEJsdXIiPjxkaXYgYXJpYS1oaWRkZW49InRydWUiPiZuYnNwOzwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0ic2Vjb25kYXJ5IiB0YWJpbmRleD0iLTEiIHJvbGU9ImdyaWRjZWxsIiBvbi1mb2N1cz0iX29uQmFpdEZvY3VzIiBvbi1ibHVyPSJfb25CYWl0Qmx1ciI+PGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSI+Jm5ic3A7PC9kaXY+PC9kaXY+CgogICAgPHNsb3Q+PC9zbG90PgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXRhYmxlLXJvdyI+PC9kb20tbW9kdWxlPgo8ZG9tLW1vZHVsZSBpZD0idmFhZGluLWdyaWQtdGFibGUtaGVhZGVyLXJvdyI+PC9kb20tbW9kdWxlPgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC1yb3ctZGV0YWlscy1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgW2RldGFpbHNjZWxsXSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXJvdy1kZXRhaWxzLXRoZW1hYmlsaXR5LXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICAudmFhZGluLWdyaWQtY2VsbFtkZXRhaWxzY2VsbF0gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICAgICAgQGFwcGx5KC0tdmFhZGluLWdyaWQtYm9keS1yb3ctZGV0YWlscy1jZWxsKTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idmFhZGluLWdyaWQtZGF0YS1wcm92aWRlci10aGVtYWJpbGl0eS1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KCiAgICAgIC8qIEFuaW0gKi8KICAgICAgQGtleWZyYW1lcyB2YWFkaW4tZ3JpZC1zcGluLTM2MCB7CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQogICAgICBALXdlYmtpdC1rZXlmcmFtZXMgdmFhZGluLWdyaWQtc3Bpbi0zNjAgewogICAgICAgIDEwMCUgewogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICNzcGlubmVyIHsKICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1wcmltYXJ5LWNvbG9yLCAjMDNBOUY0KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgbGVmdDogNTAlOwogICAgICAgIG1hcmdpbi1sZWZ0OiAtOHB4OwogICAgICAgIG1hcmdpbi10b3A6IC04cHg7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIHdpZHRoOiAxNnB4OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgQGFwcGx5KC0tdmFhZGluLWdyaWQtbG9hZGluZy1zcGlubmVyKTsKICAgICAgfQoKICAgICAgOmhvc3QoW2xvYWRpbmddKSAjc3Bpbm5lciB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogdmFhZGluLWdyaWQtc3Bpbi0zNjAgNDAwbXMgbGluZWFyIGluZmluaXRlOwogICAgICAgIGFuaW1hdGlvbjogdmFhZGluLWdyaWQtc3Bpbi0zNjAgNDAwbXMgbGluZWFyIGluZmluaXRlOwogICAgICB9CgogICAgICA6aG9zdChbbG9hZGluZ10pICNpdGVtcyB7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICB9CgogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC1zZWxlY3Rpb24tdGhlbWFiaWxpdHktc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlIC52YWFkaW4tZ3JpZC1yb3dbc2VsZWN0ZWRdIC52YWFkaW4tZ3JpZC1jZWxsOm5vdChbZGV0YWlsc2NlbGxdKSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGFwZXItZ3JleS0xMDAsIHJnYigyNDMsIDI0MywgMjQzKSk7CiAgICAgICAgQGFwcGx5KC0tdmFhZGluLWdyaWQtYm9keS1yb3ctc2VsZWN0ZWQtY2VsbCk7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLW5hdmlnYXRpb24tdGhlbWFiaWxpdHktc3R5bGVzIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0KDpmb2N1cyksCiAgICAgICN0YWJsZTpmb2N1cyB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgOmhvc3QoW25hdmlnYXRpbmddOm5vdChbaW50ZXJhY3RpbmddKSkgW2ZvY3VzZWRdID4gLnZhYWRpbi1ncmlkLXJvd1tmb2N1c2VkXSA+IFtmb2N1c2VkXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDAgM3B4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1mb2N1c2VkLWNlbGwpOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLWNvbHVtbi1yZW9yZGVyaW5nLXRoZW1hYmlsaXR5LXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgogICAgICB2YWFkaW4tZ3JpZC10YWJsZVtyZW9yZGVyaW5nXSAudmFhZGluLWdyaWQtY2VsbCB7CiAgICAgICAgYmFja2dyb3VuZDogIzAwMDsKICAgICAgfQoKICAgICAgOmhvc3QoW3Jlb3JkZXJpbmddKSAudmFhZGluLWdyaWQtY2VsbFtyZW9yZGVyLXN0YXR1cz0iZHJhZ2dpbmciXSB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tcHJpbWFyeS1jb2xvciwgIzAwMCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlW3Jlb3JkZXJpbmddIC52YWFkaW4tZ3JpZC1jZWxsOm5vdChbZGV0YWlsc2NlbGxdKSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAzMDBtczsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CiAgICAgICAgb3BhY2l0eTogMC44OwogICAgICB9CgogICAgICAjc2Nyb2xsZXIgLnZhYWRpbi1ncmlkLWNlbGxbcmVvcmRlci1zdGF0dXM9ImFsbG93ZWQiXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgfQoKICAgICAgI3Njcm9sbGVyIC52YWFkaW4tZ3JpZC1jZWxsW3Jlb3JkZXItc3RhdHVzPSJkcmFnZ2luZyJdIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wcmltYXJ5LWNvbG9yLCAjMDAwKTsKICAgICAgfQoKICAgICAgI3Njcm9sbGVyIC52YWFkaW4tZ3JpZC1jZWxsW3Jlb3JkZXItc3RhdHVzPSJkcmFnZ2luZyJdIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBvcGFjaXR5OiAwLjk1OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXRhYmxlLXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgoKICAgICAgQGtleWZyYW1lcyBhcHBlYXIgewogICAgICAgIHRvIHsKICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQogICAgICB9CgogICAgICB2YWFkaW4tZ3JpZC10YWJsZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGFuaW1hdGlvbjogMW1zIGFwcGVhcjsKICAgICAgfQoKICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1tYXgtZGV2aWNlLXBpeGVsLXJhdGlvOiAxKSB7CiAgICAgICAgOmhvc3QgewogICAgICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgICNpdGVtcyB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICB9CgogICAgICAjaXRlbXMgewogICAgICAgIGJvcmRlci10b3A6IDAgc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgI2l0ZW1zID4gLnZhYWRpbi1ncmlkLXJvdyB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB9CgogICAgICB2YWFkaW4tZ3JpZC10YWJsZS1ib2R5IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGUtaGVhZGVyIC52YWFkaW4tZ3JpZC1jZWxsLAogICAgICB2YWFkaW4tZ3JpZC10YWJsZS1mb290ZXIgLnZhYWRpbi1ncmlkLWNlbGwgewogICAgICAgIHRvcDogMDsKICAgICAgfQoKICAgICAgLnZhYWRpbi1ncmlkLWNlbGwgewogICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLnZhYWRpbi1ncmlkLWNlbGw6bm90KFtkZXRhaWxzY2VsbF0pIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIH0KCiAgICAgIC52YWFkaW4tZ3JpZC1jZWxsIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgLnZhYWRpbi1ncmlkLWNvbHVtbi1yZXNpemUtaGFuZGxlIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGN1cnNvcjogY29sLXJlc2l6ZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICB9CgogICAgICAudmFhZGluLWdyaWQtY29sdW1uLXJlc2l6ZS1oYW5kbGU6OmJlZm9yZSB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMzVweDsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgIH0KCiAgICAgIFtsYXN0Y29sdW1uXSAudmFhZGluLWdyaWQtY29sdW1uLXJlc2l6ZS1oYW5kbGU6OmJlZm9yZSwKICAgICAgW2xhc3QtZnJvemVuXSAudmFhZGluLWdyaWQtY29sdW1uLXJlc2l6ZS1oYW5kbGU6OmJlZm9yZSB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZF0gI2hlYWRlciwKICAgICAgdmFhZGluLWdyaWQtdGFibGVbY29sdW1uLXJlc2l6aW5nXSB7CiAgICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lOwogICAgICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7CiAgICAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbY29sdW1uLXJlc2l6aW5nXSB7CiAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplOwogICAgICB9CgogICAgICAudmFhZGluLWdyaWQtcm93Om5vdChbaGlkZGVuXSkgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KCiAgICAgIFtmcm96ZW5dIHsKICAgICAgICB6LWluZGV4OiAyOwogICAgICB9CgogICAgICBbaGlkZGVuXSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGVbbm8tY29udGVudC1wb2ludGVyLWV2ZW50c10gLnZhYWRpbi1ncmlkLWNlbGwgOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC10YWJsZS10YWJsZS1zdHlsZXMiPgogIDx0ZW1wbGF0ZT4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QoW2lvc11bY29sdW1uLXJlc2l6aW5nXSkgI291dGVyc2Nyb2xsZXIgewogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KCiAgICAgICNmaXhlZHNpemVyLAogICAgICAjb3V0ZXJzaXplciB7CiAgICAgICAgYm9yZGVyLXRvcDogMCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICBib3JkZXItYm90dG9tOiAwIHNvbGlkIHRyYW5zcGFyZW50OwogICAgICB9CgogICAgICAjdGFibGUgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICB9CgogICAgICAjdGFibGVbb3ZlcmZsb3ctaGlkZGVuXSwKICAgICAgI291dGVyc2Nyb2xsZXJbb3ZlcmZsb3ctaGlkZGVuXSB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtc2l6ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI3NpemVyd3JhcHBlciB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHotaW5kZXg6IC0xMDA7CiAgICAgIH0KCiAgICAgICNyZW9yZGVyZ2hvc3QgewogICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgb3BhY2l0eTogMC41OwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICB9CgogICAgICA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY29sdW1uKSwKICAgICAgOjpzbG90dGVkKHZhYWRpbi1ncmlkLXNlbGVjdGlvbi1jb2x1bW4pLAogICAgICA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY29sdW1uLWdyb3VwKSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgfQoKICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KPC9kb20tbW9kdWxlPgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLXRhYmxlLXRoZW1hYmlsaXR5LXN0eWxlcyI+CiAgPHRlbXBsYXRlPgogICAgPHN0eWxlPgoKICAgICAgLyogRGVmYXVsdCBib3JkZXJzICovCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlciAudmFhZGluLWdyaWQtcm93Omxhc3QtY2hpbGQgLnZhYWRpbi1ncmlkLWNlbGwgOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGUtZm9vdGVyIC52YWFkaW4tZ3JpZC1yb3c6Zmlyc3QtY2hpbGQgLnZhYWRpbi1ncmlkLWNlbGwgOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGUtYm9keSAudmFhZGluLWdyaWQtcm93Om5vdChbbGFzdHJvd10pIC52YWFkaW4tZ3JpZC1jZWxsIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tZGl2aWRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7CiAgICAgIH0KCiAgICAgIFtsYXN0LWZyb3plbl0gOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWRpdmlkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpOwogICAgICB9CgogICAgICAvKiBDb2x1bW4gcmVzaXplIGhhbmRsZSAqLwoKICAgICAgLnZhYWRpbi1ncmlkLWNvbHVtbi1yZXNpemUtaGFuZGxlIHsKICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1jb2x1bW4tcmVzaXplLWhhbmRsZSk7CiAgICAgIH0KCiAgICAgIC8qIENlbGxzICovCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlIC52YWFkaW4tZ3JpZC1yb3cgLnZhYWRpbi1ncmlkLWNlbGw6bm90KFtkZXRhaWxzY2VsbF0pIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgQGFwcGx5KC0tdmFhZGluLWdyaWQtY2VsbCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlciAudmFhZGluLWdyaWQtcm93IC52YWFkaW4tZ3JpZC1jZWxsOm5vdChbZGV0YWlsc2NlbGxdKSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1oZWFkZXItY2VsbCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWZvb3RlciAudmFhZGluLWdyaWQtcm93IC52YWFkaW4tZ3JpZC1jZWxsOm5vdChbZGV0YWlsc2NlbGxdKSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1mb290ZXItY2VsbCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWJvZHkgLnZhYWRpbi1ncmlkLXJvdyAudmFhZGluLWdyaWQtY2VsbDpub3QoW2RldGFpbHNjZWxsXSkgOjpzbG90dGVkKHZhYWRpbi1ncmlkLWNlbGwtY29udGVudCkgewogICAgICAgIEBhcHBseSgtLXZhYWRpbi1ncmlkLWJvZHktY2VsbCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlLWJvZHkgW29kZF0gLnZhYWRpbi1ncmlkLWNlbGw6bm90KFtkZXRhaWxzY2VsbF0pIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1ib2R5LXJvdy1vZGQtY2VsbCk7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlIC52YWFkaW4tZ3JpZC1yb3cgLnZhYWRpbi1ncmlkLWNlbGw6bm90KFtkZXRhaWxzY2VsbF0pW2xhc3QtZnJvemVuXSA6OnNsb3R0ZWQodmFhZGluLWdyaWQtY2VsbC1jb250ZW50KSB7CiAgICAgICAgQGFwcGx5KC0tdmFhZGluLWdyaWQtY2VsbC1sYXN0LWZyb3plbik7CiAgICAgIH0KCiAgICAgIHZhYWRpbi1ncmlkLXRhYmxlOm5vdChbc2Nyb2xsaW5nXSkgdmFhZGluLWdyaWQtdGFibGUtYm9keSAudmFhZGluLWdyaWQtcm93OmhvdmVyIC52YWFkaW4tZ3JpZC1jZWxsIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBAYXBwbHkoLS12YWFkaW4tZ3JpZC1ib2R5LXJvdy1ob3Zlci1jZWxsKTsKICAgICAgfQoKICAgICAgdmFhZGluLWdyaWQtdGFibGUgLnZhYWRpbi1ncmlkLXJvdyAudmFhZGluLWdyaWQtY2VsbC52YWFkaW4tZ3JpZC1jZWxsW2xhc3Rjb2x1bW5dIDo6c2xvdHRlZCh2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQpIHsKICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmU7CiAgICAgIH0KCiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CjwvZG9tLW1vZHVsZT4KCjxkb20tbW9kdWxlIGlkPSJ2YWFkaW4tZ3JpZC10YWJsZSI+CiAgPHRlbXBsYXRlPgogICAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtdGFibGUtdGFibGUtc2Nyb2xsLXN0eWxlcyI+PC9zdHlsZT4KICAgICAgPHN0eWxlIGluY2x1ZGU9InZhYWRpbi1ncmlkLXRhYmxlLXRhYmxlLXN0eWxlcyI+PC9zdHlsZT4KCiAgICAgIDxzdHlsZSBpbmNsdWRlPSJ2YWFkaW4tZ3JpZC1kYXRhLXByb3ZpZGVyLXRoZW1hYmlsaXR5LXN0eWxlcyI+PC9zdHlsZT4KCiAgICAgIDxkaXYgaWQ9InNwaW5uZXIiPjwvZGl2PgogICAgICA8ZGl2IGlkPSJ0YWJsZSIgdGFiaW5kZXg9Ii0xIiBvdmVyZmxvdy1oaWRkZW4kPSJbW19oaWRlVGFibGVPdmVyZmxvdyhzY3JvbGxiYXJXaWR0aCwgc2FmYXJpKV1dIj4KICAgICAgICA8ZGl2IGlkPSJzaXplcndyYXBwZXIiPgogICAgICAgICAgPHZhYWRpbi1ncmlkLXNpemVyIGlkPSJmaXhlZHNpemVyIiB0b3A9IltbX2VzdFNjcm9sbEhlaWdodF1dIiBjb2x1bW4tdHJlZT0iW1tjb2x1bW5UcmVlXV0iPjwvdmFhZGluLWdyaWQtc2l6ZXI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHNsb3QgbmFtZT0iaGVhZGVyIj48L3Nsb3Q+CiAgICAgICAgPHNsb3QgbmFtZT0iaXRlbXMiPjwvc2xvdD4KICAgICAgICA8c2xvdCBuYW1lPSJmb290ZXIiPjwvc2xvdD4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGlkPSJyZW9yZGVyZ2hvc3QiPjwvZGl2PgogICAgICA8dmFhZGluLWdyaWQtdGFibGUtb3V0ZXItc2Nyb2xsZXIgaWQ9Im91dGVyc2Nyb2xsZXIiIHNjcm9sbC10YXJnZXQ9Iltbc2Nyb2xsVGFyZ2V0XV0iIG92ZXJmbG93LWhpZGRlbiQ9IltbX2hpZGVPdXRlclNjcm9sbGVyKHNjcm9sbGJhcldpZHRoLCBzYWZhcmkpXV0iIGlvcyQ9IltbaW9zXV0iIHNjcm9sbGluZyQ9Iltbc2Nyb2xsaW5nXV0iPgogICAgICA8dmFhZGluLWdyaWQtc2l6ZXIgaWQ9Im91dGVyc2l6ZXIiIHRvcD0iW1tfZXN0U2Nyb2xsSGVpZ2h0XV0iIGNvbHVtbi10cmVlPSJbW2NvbHVtblRyZWVdXSI+PC92YWFkaW4tZ3JpZC1zaXplcj4KICAgIDwvdmFhZGluLWdyaWQtdGFibGUtb3V0ZXItc2Nyb2xsZXI+CiAgICA8c2xvdD48L3Nsb3Q+CiAgICA8c2xvdCBuYW1lPSJmb290ZXJGb2N1c1RyYXAiPjwvc2xvdD4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkLWNvbHVtbiI+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InZhYWRpbi1ncmlkIj4KICA8dGVtcGxhdGU+CiAgICA8c3R5bGU+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXByaW1hcnktYmFja2dyb3VuZC1jb2xvciwgI2ZmZik7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1kaXZpZGVyLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDgpKTsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgfQoKICAgICAgOmhvc3QoOmZvY3VzKSB7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgfQoKICAgICAgI3Njcm9sbGVyIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIH0KICAgIDwvc3R5bGU+CgogICAgPHN0eWxlIGluY2x1ZGU9InZhYWRpbi1ncmlkLXRhYmxlLXNjcm9sbC1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtcm93LWRldGFpbHMtc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZhYWRpbi1ncmlkLXRhYmxlLXN0eWxlcyI+PC9zdHlsZT4KCiAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtdGFibGUtdGhlbWFiaWxpdHktc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZhYWRpbi1ncmlkLXNlbGVjdGlvbi10aGVtYWJpbGl0eS1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtbmF2aWdhdGlvbi10aGVtYWJpbGl0eS1zdHlsZXMiPjwvc3R5bGU+CiAgICA8c3R5bGUgaW5jbHVkZT0idmFhZGluLWdyaWQtYWN0aXZlLWl0ZW0tdGhlbWFiaWxpdHktc3R5bGVzIj48L3N0eWxlPgogICAgPHN0eWxlIGluY2x1ZGU9InZhYWRpbi1ncmlkLXJvdy1kZXRhaWxzLXRoZW1hYmlsaXR5LXN0eWxlcyI+PC9zdHlsZT4KICAgIDxzdHlsZSBpbmNsdWRlPSJ2YWFkaW4tZ3JpZC1jb2x1bW4tcmVvcmRlcmluZy10aGVtYWJpbGl0eS1zdHlsZXMiPjwvc3R5bGU+CgogICAgPHZhYWRpbi1ncmlkLXRhYmxlIGlkPSJzY3JvbGxlciIgbG9hZGluZyQ9IltbX2xvYWRpbmddXSIgYmluZC1kYXRhPSJbW19iaW5kRGF0YV1dIiBzaXplPSJbW3NpemVdXSIgY29sdW1uLXRyZWU9IltbX2NvbHVtblRyZWVdXSIgcm93LWRldGFpbHMtdGVtcGxhdGU9IltbX3Jvd0RldGFpbHNUZW1wbGF0ZV1dIiBjb2x1bW4tcmVvcmRlcmluZy1hbGxvd2VkPSJbW2NvbHVtblJlb3JkZXJpbmdBbGxvd2VkXV0iPgogICAgICA8dmFhZGluLWdyaWQtdGFibGUtaGVhZGVyIGlkPSJoZWFkZXIiIHNsb3Q9ImhlYWRlciIgdGFyZ2V0PSJbW19nZXRDb250ZW50VGFyZ2V0KCldXSIgY29sdW1uLXRyZWU9IltbX2NvbHVtblRyZWVdXSI+PC92YWFkaW4tZ3JpZC10YWJsZS1oZWFkZXI+CiAgICAgIDx2YWFkaW4tZ3JpZC10YWJsZS1ib2R5IGlkPSJpdGVtcyIgc2xvdD0iaXRlbXMiPjwvdmFhZGluLWdyaWQtdGFibGUtYm9keT4KICAgICAgPHZhYWRpbi1ncmlkLXRhYmxlLWZvb3RlciBpZD0iZm9vdGVyIiBzbG90PSJmb290ZXIiIHRhcmdldD0iW1tfZ2V0Q29udGVudFRhcmdldCgpXV0iIGNvbHVtbi10cmVlPSJbW19jb2x1bW5UcmVlXV0iPjwvdmFhZGluLWdyaWQtdGFibGUtZm9vdGVyPgoKICAgICAgCiAgICAgIDxzbG90IG5hbWU9ImZvb3RlckZvY3VzVHJhcCI+PC9zbG90PgoKICAgICAgCiAgICAgIAogICAgICA8c2xvdD48L3Nsb3Q+CgogICAgICA8dmFhZGluLWdyaWQtdGFibGUtZm9jdXMtdHJhcCBpZD0iZm9vdGVyRm9jdXNUcmFwIiBzbG90PSJmb290ZXJGb2N1c1RyYXAiIG9uLWZvY3VzLWdhaW5lZD0iX29uRm9vdGVyRm9jdXMiIG9uLWZvY3VzLWxvc3Q9Il9vbkZvY3Vzb3V0Ij4KICAgICAgPC92YWFkaW4tZ3JpZC10YWJsZS1mb2N1cy10cmFwPgogICAgPC92YWFkaW4tZ3JpZC10YWJsZT4KICA8L3RlbXBsYXRlPgo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscyI+CiAgPHRlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFzZXNzaW9uR3JvdXBdXSI+CiAgICAgIDxkaXY+CiAgICAgICAgPGgzPk5vIHNlc3Npb24gZ3JvdXAgc2VsZWN0ZWQ8L2gzPgogICAgICAgIDxwPlBsZWFzZSBzZWxlY3QgYSBzZXNzaW9uIGdyb3VwIHRvIHNlZSBpdHMgbWV0cmljLWdyYXBocyBoZXJlLgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9oYXZlTWV0cmljcyh2aXNpYmxlU2NoZW1hLiopXV0iPgogICAgICA8ZGl2PgogICAgICAgIDxoMz5ObyBtZXRyaWNzIGFyZSBlbmFibGVkPC9oMz4KICAgICAgICA8cD5QbGVhc2UgZW5hYmxlIHNvbWUgbWV0cmljcyB0byBzZWUgY29udGVudCBoZXJlLgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJsYXlvdXQgaG9yaXpvbnRhbCB3cmFwIHNlc3Npb24tZ3JvdXAtZGV0YWlscyI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGF2ZU1ldHJpY3NBbmRTZXNzaW9uR3JvdXAodmlzaWJsZVNjaGVtYS4qLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25Hcm91cCldXSI+CiAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1t2aXNpYmxlU2NoZW1hLm1ldHJpY0luZm9zXV0iIGFzPSJtZXRyaWNJbmZvIj4KICAgICAgICAgIAogICAgICAgICAgPHRmLXNjYWxhci1jYXJkIGNsYXNzPSJzY2FsYXItY2FyZCIgY29sb3Itc2NhbGU9IltbX2NvbG9yU2NhbGVdXSIgZGF0YS10by1sb2FkPSJbW19jb21wdXRlU2VyaWVzRm9yU2Vzc2lvbkdyb3VwTWV0cmljKHNlc3Npb25Hcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRyaWNJbmZvKV1dIiB0YWc9IltbbWV0cmljSW5mby5uYW1lLnRhZ11dIiB0YWctbWV0YWRhdGE9IltbX2NvbXB1dGVUYWdNZXRhZGF0YShtZXRyaWNJbmZvKV1dIiB4LXR5cGU9IltbX3hUeXBlXV0iIG11bHRpLWV4cGVyaW1lbnRzPSJbW19ub011bHRpRXhwZXJpbWVudHNdXSIgcmVxdWVzdC1kYXRhPSJbW19yZXF1ZXN0RGF0YV1dIiBhY3RpdmU+CiAgICAgICAgICA8L3RmLXNjYWxhci1jYXJkPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvdGVtcGxhdGU+CiAgICA8L2Rpdj4KICAgIAogICAgPHN0eWxlIGluY2x1ZGU9Imlyb24tZmxleCI+CiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAo8L2RvbS1tb2R1bGU+CgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ocGFyYW1zLXRhYmxlLXZpZXciPgogIDx0ZW1wbGF0ZT4KICAgIDx2YWFkaW4tZ3JpZCBjbGFzcz0ic2Vzc2lvbi1ncm91cC10YWJsZSIgaWQ9InNlc3Npb25Hcm91cHNUYWJsZSIgY29sdW1uLXJlb3JkZXJpbmctYWxsb3dlZCBpdGVtcz0iW1tzZXNzaW9uR3JvdXBzXV0iPgogICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMCIgd2lkdGg9IjEwZW0iIHJlc2l6YWJsZT4KICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1oZWFkZXIgdGFibGUtY2VsbCI+VHJpYWwgSUQ8L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDx0ZW1wbGF0ZT4KICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNlbGwiPltbaXRlbS5uYW1lXV08L2Rpdj4KICAgICAgICA8L3RlbXBsYXRlPgogICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW2VuYWJsZVNob3dNZXRyaWNzXV0iPgogICAgICAgIDx2YWFkaW4tZ3JpZC1jb2x1bW4gZmxleC1ncm93PSIwIiB3aWR0aD0iNWVtIiByZXNpemFibGU+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj5TaG93IE1ldHJpY3M8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxwYXBlci1jaGVja2JveCBjbGFzcz0idGFibGUtY2VsbCIgY2hlY2tlZD0ie3tleHBhbmRlZH19Ij4KICAgICAgICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgPC92YWFkaW4tZ3JpZC1jb2x1bW4+CiAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbdmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvc11dIiBhcz0iaHBhcmFtSW5mbyIgaW5kZXgtYXM9ImhwYXJhbUluZGV4Ij4KICAgICAgICA8dmFhZGluLWdyaWQtY29sdW1uIGZsZXgtZ3Jvdz0iMiIgd2lkdGg9IjEwZW0iIHJlc2l6YWJsZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iaGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idGFibGUtaGVhZGVyIHRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX2hwYXJhbU5hbWUoaHBhcmFtSW5mbyldXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWNlbGwiPgogICAgICAgICAgICAgIFtbX3Nlc3Npb25Hcm91cEhQYXJhbShpdGVtLCBocGFyYW1JbmZvLm5hbWUpXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdmFhZGluLWdyaWQtY29sdW1uPgogICAgICA8L3RlbXBsYXRlPgogICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGl0ZW1zPSJ7e3Zpc2libGVTY2hlbWEubWV0cmljSW5mb3N9fSIgYXM9Im1ldHJpY0luZm8iIGluZGV4LWFzPSJtZXRyaWNJbmRleCI+CiAgICAgICAgPHZhYWRpbi1ncmlkLWNvbHVtbiBmbGV4LWdyb3c9IjIiIHdpZHRoPSIxMGVtIiByZXNpemFibGU+CiAgICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InRhYmxlLWhlYWRlciB0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19tZXRyaWNOYW1lKG1ldHJpY0luZm8pXV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZS1jZWxsIj4KICAgICAgICAgICAgICBbW19zZXNzaW9uR3JvdXBNZXRyaWMoaXRlbSwgbWV0cmljSW5mby5uYW1lKV1dCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8L3ZhYWRpbi1ncmlkLWNvbHVtbj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGNsYXNzPSJyb3ctZGV0YWlscyI+CiAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzIGJhY2tlbmQ9IltbYmFja2VuZF1dIiBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIgc2Vzc2lvbi1ncm91cD0iW1tpdGVtXV0iIHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIgY2xhc3M9InNlc3Npb24tZ3JvdXAtZGV0YWlscyI+CiAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgICAgPC90ZW1wbGF0ZT4KICAgIDwvdmFhZGluLWdyaWQ+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgLnRhYmxlLWNlbGwgewogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgfQogICAgICAudGFibGUtaGVhZGVyIHsKICAgICAgICAvKiBsaW5lLWJyZWFrIG92ZXJmbG93aW5nIGNvbHVtbiBoZWFkZXJzICovCiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOwogICAgICB9CiAgICAgIC5zZXNzaW9uLWdyb3VwLXRhYmxlIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLnNlc3Npb24tZ3JvdXAtZGV0YWlscyB7CiAgICAgICAgaGVpZ2h0OiAzNjBweDsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKPGRvbS1tb2R1bGUgaWQ9InRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMiPgogIDx0ZW1wbGF0ZT4KICAgIAogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19wcm9wZXJ0aWVzQXJlUG9wdWxhdGVkKHZpc2libGVTY2hlbWEsIHNlc3Npb25Hcm91cCldXSI+CiAgICAgIAogICAgICA8dGYtaHBhcmFtcy10YWJsZS12aWV3IHZpc2libGUtc2NoZW1hPSJbW3Zpc2libGVTY2hlbWFdXSIgc2Vzc2lvbi1ncm91cHM9IltbX3NpbmdsZXRvblNlc3Npb25Hcm91cHMoc2Vzc2lvbkdyb3VwKV1dIj4KICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICA8L3RlbXBsYXRlPgogICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbWyFfcHJvcGVydGllc0FyZVBvcHVsYXRlZCh2aXNpYmxlU2NoZW1hLCBzZXNzaW9uR3JvdXApXV0iPgogICAgICA8ZGl2PgogICAgICAgIENsaWNrIG9yIGhvdmVyIG92ZXIgYSBzZXNzaW9uIGdyb3VwIHRvIGRpc3BsYXkgaXRzIHZhbHVlcyBoZXJlLgogICAgICA8L2Rpdj4KICAgIDwvdGVtcGxhdGU+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KICAKPC9kb20tbW9kdWxlPgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QiPgogIDx0ZW1wbGF0ZT4KICAgIDxkaXYgaWQ9ImNvbnRhaW5lciI+CiAgICAgIDxzdmcgaWQ9InN2ZyI+PC9zdmc+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIHN2ZyB7CiAgICAgICAgZm9udDogMTBweCBzYW5zLXNlcmlmOwogICAgICB9CgogICAgICAuYmFja2dyb3VuZCBwYXRoIHsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogI2RkZDsKICAgICAgICBzaGFwZS1yZW5kZXJpbmc6IGNyaXNwRWRnZXM7CiAgICAgIH0KCiAgICAgIC5mb3JlZ3JvdW5kIHBhdGggewogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlLW9wYWNpdHk6IDAuNzsKICAgICAgICBzdHJva2Utd2lkdGg6IDE7CiAgICAgIH0KCiAgICAgIC8qIFdpbGwgYmUgc2V0IG9uIGZvcmVncm91bmQgcGF0aHMgdGhhdCBhcmUgbm90ICJjb250YWluZWQiIGluIHRoZSBjdXJyZW50CiAgICAgICAgIGF4ZXMgYnJ1c2hlcy4gSWYgbm8gYnJ1c2hlcyBhcmUgc2V0LCBubyBwYXRoIHdpbGwgaGF2ZSB0aGlzIGNsYXNzLiAqLwogICAgICAuZm9yZWdyb3VuZCAuaW52aXNpYmxlLXBhdGggewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIH0KCiAgICAgIC8qIFN0eWxlIGZvciB0aGUgcGF0aCBjbG9zZXN0IHRvIHRoZSBtb3VzZSBwb2ludGVyICh0eXBpY2FsbHkgd2lsbCBiZWNvbWUKICAgICAgdGhlIHNlbGVjdGVkIHBhdGggd2hlbiB0aGUgdXNlciBjbGlja3MpLiAqLwogICAgICAuZm9yZWdyb3VuZCAucGVha2VkLXBhdGggewogICAgICAgIHN0cm9rZS13aWR0aDogMzsKICAgICAgfQoKICAgICAgLyogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBwYXRoIGNsYXNzLiBXZSB1c2UgIWltcG9ydGFudCB0byBvdmVycmlkZSB0aGUKICAgICAgICAgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBjb2xvciBvZiBhIHBhdGguICovCiAgICAgIC5mb3JlZ3JvdW5kIC5zZWxlY3RlZC1wYXRoIHsKICAgICAgICBzdHJva2Utd2lkdGg6IDMgIWltcG9ydGFudDsKICAgICAgICBzdHJva2U6ICMwZjAgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgI2NvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CgogICAgICBzdmcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQoKICAgICAgLmF4aXMgdGV4dCB7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZiwgMXB4IDAgMCAjZmZmLCAwIC0xcHggMCAjZmZmLCAtMXB4IDAgMCAjZmZmOwogICAgICAgIGZpbGw6ICMwMDA7CiAgICAgICAgY3Vyc29yOiBtb3ZlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAogIAogIAogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXZpZXciPgogIDx0ZW1wbGF0ZT4KICAgIAogICAgPGRpdiBjbGFzcz0icGFuZSI+CiAgICAgIDx2YWFkaW4tc3BsaXQtbGF5b3V0IHZlcnRpY2FsPgogICAgICAgIAogICAgICAgIDx0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scyBpZD0iY29udHJvbHMiIGNsYXNzPSJzZWN0aW9uIiBjb25maWd1cmF0aW9uPSJbW2NvbmZpZ3VyYXRpb25dXSIgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIiBvcHRpb25zPSJ7e19vcHRpb25zfX0iPgogICAgICAgIDwvdGYtaHBhcmFtcy1zY2FsZS1hbmQtY29sb3ItY29udHJvbHM+CiAgICAgICAgPHZhYWRpbi1zcGxpdC1sYXlvdXQgdmVydGljYWw+CiAgICAgICAgICAKICAgICAgICAgIDx0Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90IGlkPSJwbG90IiBjbGFzcz0ic2VjdGlvbiIgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIiBzZWxlY3RlZC1zZXNzaW9uLWdyb3VwPSJ7e19zZWxlY3RlZEdyb3VwfX0iIGNsb3Nlc3Qtc2Vzc2lvbi1ncm91cD0ie3tfY2xvc2VzdEdyb3VwfX0iIG9wdGlvbnM9IltbX29wdGlvbnNdXSI+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3Q+CiAgICAgICAgICA8dmFhZGluLXNwbGl0LWxheW91dCB2ZXJ0aWNhbD4KICAgICAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMgaWQ9InZhbHVlcyIgY2xhc3M9InNlY3Rpb24iIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIiBzZXNzaW9uLWdyb3VwPSJbW19jbG9zZXN0T3JTZWxlY3RlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSI+CiAgICAgICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcz4KICAgICAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC1kZXRhaWxzIGlkPSJkZXRhaWxzIiBjbGFzcz0ic2VjdGlvbiIgYmFja2VuZD0iW1tiYWNrZW5kXV0iIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIiBzZXNzaW9uLWdyb3VwPSJbW19zZWxlY3RlZEdyb3VwXV0iIHZpc2libGUtc2NoZW1hPSJbW2NvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYV1dIj4KICAgICAgICAgICAgPC90Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscz4KICAgICAgICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgICAgICA8L3ZhYWRpbi1zcGxpdC1sYXlvdXQ+CiAgICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgIDwvZGl2PgoKICAgIDxzdHlsZT4KICAgICAgLnBhbmUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLnNlY3Rpb24gewogICAgICAgIG1hcmdpbjogMTBweDsKICAgICAgfQogICAgICAjY29udHJvbHMgewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICNwbG90IHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgfQogICAgICAjdmFsdWVzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IDk1cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjZGV0YWlscyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90Ij4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGlkPSJjb250YWluZXIiPgogICAgICA8c3ZnIGlkPSJzdmciPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPHN0eWxlPgogICAgICA6aG9zdCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgc3ZnIHsKICAgICAgICBmb250OiAxMHB4IHNhbnMtc2VyaWY7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjbG9zZXN0IGRhdGEgcG9pbnQgbWFya2VyIHRvIHRoZSBtb3VzZSBwb2ludGVyLiBXZSB1c2UgIWltcG9ydGFudAogICAgICAgICB0byBvdmVycmlkZSB0aGUgaW5saW5lIHN0eWxlIHRoYXQgc2V0cyB0aGUgcmVndWxhciBzdHlsZSBvZiBhIG1hcmtlci4KICAgICAgKi8KICAgICAgLmNsb3Nlc3QtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgIH0KCiAgICAgIC8qIFRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgZGF0YSBwb2ludCBtYXJrZXIuIFdlIHVzZSAhaW1wb3J0YW50IHRvCiAgICAgICAgIG92ZXJyaWRlIHRoZSBpbmxpbmUgc3R5bGUgdGhhdCBzZXRzIHRoZSByZWd1bGFyIHN0eWxlIG9mIGEgbWFya2VyLiAqLwogICAgICAuc2VsZWN0ZWQtbWFya2VyIHsKICAgICAgICByOiA2ICFpbXBvcnRhbnQ7CiAgICAgICAgZmlsbDogIzBmMCAhaW1wb3J0YW50OwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKPGRvbS1tb2R1bGUgaWQ9InRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3Ij4KICA8dGVtcGxhdGU+CiAgICA8ZGl2IGNsYXNzPSJwYW5lIj4KICAgICAgPHZhYWRpbi1zcGxpdC1sYXlvdXQgdmVydGljYWw+CiAgICAgICAgCiAgICAgICAgPHRmLWhwYXJhbXMtc2NhbGUtYW5kLWNvbG9yLWNvbnRyb2xzIGNsYXNzPSJzZWN0aW9uIiBpZD0iY29udHJvbHMiIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIiBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iIG9wdGlvbnM9Int7X29wdGlvbnN9fSI+CiAgICAgICAgPC90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scz4KICAgICAgICA8dmFhZGluLXNwbGl0LWxheW91dCB2ZXJ0aWNhbD4KICAgICAgICAgIAogICAgICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90IGNsYXNzPSJzZWN0aW9uIiBpZD0icGxvdCIgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSIgc2VsZWN0ZWQtc2Vzc2lvbi1ncm91cD0ie3tfc2VsZWN0ZWRHcm91cH19IiBjbG9zZXN0LXNlc3Npb24tZ3JvdXA9Int7X2Nsb3Nlc3RHcm91cH19IiBvcHRpb25zPSJbW19vcHRpb25zXV0iPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtcGxvdD4KICAgICAgICAgIDx2YWFkaW4tc3BsaXQtbGF5b3V0IHZlcnRpY2FsPgogICAgICAgICAgICA8dGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcyBjbGFzcz0ic2VjdGlvbiIgaWQ9InZhbHVlcyIgdmlzaWJsZS1zY2hlbWE9IltbY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hXV0iIHNlc3Npb24tZ3JvdXA9IltbX2Nsb3Nlc3RPclNlbGVjdGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xvc2VzdEdyb3VwLCBfc2VsZWN0ZWRHcm91cCldXSI+CiAgICAgICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDx0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtZGV0YWlscyBjbGFzcz0ic2VjdGlvbiIgaWQ9ImRldGFpbHMiIGJhY2tlbmQ9IltbYmFja2VuZF1dIiBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIgc2Vzc2lvbi1ncm91cD0iW1tfc2VsZWN0ZWRHcm91cF1dIiB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSI+CiAgICAgICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHM+CiAgICAgICAgICA8L3ZhYWRpbi1zcGxpdC1sYXlvdXQ+CiAgICAgICAgPC92YWFkaW4tc3BsaXQtbGF5b3V0PgogICAgICA8L3ZhYWRpbi1zcGxpdC1sYXlvdXQ+CiAgICA8L2Rpdj4KICAgIDxzdHlsZT4KICAgICAgLnBhbmUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgLnNlY3Rpb24gewogICAgICAgIG1hcmdpbjogMTBweDsKICAgICAgfQogICAgICAjY29udHJvbHMgewogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBmbGV4LWJhc2lzOiBhdXRvOwogICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIG1heC1oZWlnaHQ6IGZpdC1jb250ZW50OwogICAgICB9CiAgICAgICNwbG90IHsKICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjdmFsdWVzIHsKICAgICAgICBmbGV4LWdyb3c6IDA7CiAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgZmxleC1iYXNpczogYXV0bzsKICAgICAgICBoZWlnaHQ6IDk1cHg7CiAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKICAgICAgICBtYXgtaGVpZ2h0OiBmaXQtY29udGVudDsKICAgICAgfQogICAgICAjZGV0YWlscyB7CiAgICAgICAgZmxleC1ncm93OiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIGZsZXgtYmFzaXM6IGF1dG87CiAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogZml0LWNvbnRlbnQ7CiAgICAgIH0KICAgICAgdmFhZGluLXNwbGl0LWxheW91dCB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lIj4KICA8dGVtcGxhdGU+CiAgICA8cGFwZXItaGVhZGVyLXBhbmVsPgogICAgICA8cGFwZXItdG9vbGJhciBzbG90PSJoZWFkZXIiIGNsYXNzPSJ0YWItYmFyIj4KICAgICAgICA8cGFwZXItdGFicyBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRUYWJ9fSIgc2xvdD0idG9wIj4KICAgICAgICAgIAogICAgICAgICAgPHBhcGVyLXRhYiB2aWV3LWlkPSJ0YWJsZS12aWV3Ij4KICAgICAgICAgICAgVEFCTEUgVklFVwogICAgICAgICAgPC9wYXBlci10YWI+CiAgICAgICAgICA8cGFwZXItdGFiIHZpZXctaWQ9InBhcmFsbGVsLWNvb3Jkcy12aWV3Ij4KICAgICAgICAgICAgUEFSQUxMRUwgQ09PUkRJTkFURVMgVklFVwogICAgICAgICAgPC9wYXBlci10YWI+CiAgICAgICAgICA8cGFwZXItdGFiIHZpZXctaWQ9InNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldyI+CiAgICAgICAgICAgIFNDQVRURVIgUExPVCBNQVRSSVggVklFVwogICAgICAgICAgPC9wYXBlci10YWI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWFuZC1mZWVkYmFjayI+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tidWdSZXBvcnRVcmxdXSI+CiAgICAgICAgICAgICAgPGEgaHJlZiQ9IltbYnVnUmVwb3J0VXJsXV0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPgogICAgICAgICAgICAgICAgPHBhcGVyLWJ1dHRvbiBpZD0iYnVnLXJlcG9ydCIgcmFpc2VkIHRpdGxlPSJTZW5kIGEgYnVnIHJlcG9ydCBvciBmZWF0dXJlIHJlcXVlc3QiPgogICAgICAgICAgICAgICAgICBCdWcgUmVwb3J0IC8gRmVhdHVyZSBSZXF1ZXN0CiAgICAgICAgICAgICAgICA8L3BhcGVyLWJ1dHRvbj4KICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1toZWxwVXJsXV0iPgogICAgICAgICAgICAgIDxhIGhyZWYkPSJbW2hlbHBVcmxdXSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciI+CiAgICAgICAgICAgICAgICA8cGFwZXItaWNvbi1idXR0b24gaWNvbj0iaGVscC1vdXRsaW5lIiB0aXRsZT0iVmlldyBkb2N1bWVudGF0aW9uIj4KICAgICAgICAgICAgICAgIDwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9wYXBlci10YWJzPgogICAgICA8L3BhcGVyLXRvb2xiYXI+CiAgICAgIDxpcm9uLXBhZ2VzIHNlbGVjdGVkPSJbW19zZWxlY3RlZFRhYl1dIiBjbGFzcz0iZml0IHRhYi12aWV3Ij4KICAgICAgICA8ZGl2IGlkPSIwIiBjbGFzcz0idGFiIj4KICAgICAgICAgIDx0Zi1ocGFyYW1zLXRhYmxlLXZpZXcgYmFja2VuZD0iW1tiYWNrZW5kXV0iIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIiB2aXNpYmxlLXNjaGVtYT0iW1tjb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWFdXSIgc2Vzc2lvbi1ncm91cHM9Iltbc2Vzc2lvbkdyb3Vwc11dIiBlbmFibGUtc2hvdy1tZXRyaWNzPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXRhYmxlLXZpZXc+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iMSIgY2xhc3M9InRhYiI+CiAgICAgICAgICA8dGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldyBiYWNrZW5kPSJbW2JhY2tlbmRdXSIgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iIGNvbmZpZ3VyYXRpb249IltbY29uZmlndXJhdGlvbl1dIiBzZXNzaW9uLWdyb3Vwcz0iW1tzZXNzaW9uR3JvdXBzXV0iPgogICAgICAgICAgPC90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgaWQ9IjIiIGNsYXNzPSJ0YWIiPgogICAgICAgICAgPHRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3IGJhY2tlbmQ9IltbYmFja2VuZF1dIiBleHBlcmltZW50LW5hbWU9IltbZXhwZXJpbWVudE5hbWVdXSIgY29uZmlndXJhdGlvbj0iW1tjb25maWd1cmF0aW9uXV0iIHNlc3Npb24tZ3JvdXBzPSJbW3Nlc3Npb25Hcm91cHNdXSI+CiAgICAgICAgICA8L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC12aWV3PgogICAgICAgIDwvZGl2PgogICAgICA8L2lyb24tcGFnZXM+CiAgICA8L3BhcGVyLWhlYWRlci1wYW5lbD4KCiAgICA8c3R5bGU+CiAgICAgIC50YWItdmlldyB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CiAgICAgIC50YWItYmFyIHsKICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgfQogICAgICAudGFiIHsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIH0KICAgICAgcGFwZXItdGFicyB7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAtLXBhcGVyLXRhYnMtc2VsZWN0aW9uLWJhci1jb2xvcjogd2hpdGU7CiAgICAgICAgLS1wYXBlci10YWJzLWNvbnRlbnQ6IHsKICAgICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIH0KICAgICAgfQogICAgICB0Zi1ocGFyYW1zLXRhYmxlLXZpZXcgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgfQogICAgICAuaGVscC1hbmQtZmVlZGJhY2sgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAvKiBFbnN1cmUgdGhhdCBpY29ucyBzdGF5IGFsaWduZWQgKi8KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CiAgICAgICNidWctcmVwb3J0IHsKICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrOwogICAgICAgIGJhY2tncm91bmQ6IHJlZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmRzOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBtYXgtd2lkdGg6IDE1MHB4OwogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgIH0KICAgICAgLmhlbHAtYW5kLWZlZWRiYWNrIGEgewogICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC90ZW1wbGF0ZT4KCiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1ocGFyYW1zLW1haW4iPgogIDx0ZW1wbGF0ZT4KICAgIDx2YWFkaW4tc3BsaXQtbGF5b3V0PgogICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyIiBzbG90PSJzaWRlYmFyIj4KICAgICAgICA8dGYtaHBhcmFtcy1xdWVyeS1wYW5lIGlkPSJxdWVyeS1wYW5lIiBiYWNrZW5kPSJbW2JhY2tlbmRdXSIgZXhwZXJpbWVudC1uYW1lPSJbW2V4cGVyaW1lbnROYW1lXV0iIGNvbmZpZ3VyYXRpb249Int7X2NvbmZpZ3VyYXRpb259fSIgc2Vzc2lvbi1ncm91cHM9Int7X3Nlc3Npb25Hcm91cHN9fSI+CiAgICAgICAgPC90Zi1ocGFyYW1zLXF1ZXJ5LXBhbmU+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJjZW50ZXIiIHNsb3Q9ImNlbnRlciI+CiAgICAgICAgPHRmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZSBpZD0ic2Vzc2lvbnMtcGFuZSIgYmFja2VuZD0iW1tiYWNrZW5kXV0iIGhlbHAtdXJsPSJbW2hlbHBVcmxdXSIgYnVnLXJlcG9ydC11cmw9IltbYnVnUmVwb3J0VXJsXV0iIGV4cGVyaW1lbnQtbmFtZT0iW1tleHBlcmltZW50TmFtZV1dIiBjb25maWd1cmF0aW9uPSJbW19jb25maWd1cmF0aW9uXV0iIHNlc3Npb24tZ3JvdXBzPSJbW19zZXNzaW9uR3JvdXBzXV0iPgogICAgICAgIDwvdGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lPgogICAgICA8L2Rpdj4KICAgIDwvdmFhZGluLXNwbGl0LWxheW91dD4KICAgIDx0Zi1ocGFyYW1zLWdvb2dsZS1hbmFseXRpY3MtdHJhY2tlciBpZD0idHJhY2tlciIgdHJhY2tpbmctaWQ9IltbdHJhY2tpbmdJZF1dIiBuYW1lPSJ0Zl9ocGFyYW1zIj4KICAgIDwvdGYtaHBhcmFtcy1nb29nbGUtYW5hbHl0aWNzLXRyYWNrZXI+CgogICAgPHN0eWxlPgogICAgICB2YWFkaW4tc3BsaXQtbGF5b3V0IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLnNpZGViYXIgewogICAgICAgIHdpZHRoOiAyMCU7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICAgIGZsZXgtZ3JvdzogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICBtaW4td2lkdGg6IDEwJTsKICAgICAgfQoKICAgICAgLmNlbnRlciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgICAgIHdpZHRoOiA4MCU7CiAgICAgIH0KCiAgICAgIDpob3N0IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKCgoKCgo8ZG9tLW1vZHVsZSBpZD0idGYtaHBhcmFtcy1kYXNoYm9hcmQiPgogIDx0ZW1wbGF0ZT4KICAgIAogICAgPHRmLWhwYXJhbXMtbWFpbiBpZD0iaHBhcmFtcy1tYWluIiBiYWNrZW5kPSJbW19iYWNrZW5kXV0iIGV4cGVyaW1lbnQtbmFtZT0iIj4KICAgIDwvdGYtaHBhcmFtcy1tYWluPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi1tZXNoLWxvYWRlciI+CiAgPHRlbXBsYXRlPgogICAgPHRmLWNhcmQtaGVhZGluZyBjb2xvcj0iW1tfcnVuQ29sb3JdXSIgY2xhc3M9InRmLW1lc2gtbG9hZGVyLWhlYWRlciI+CiAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaGFzTXVsdGlwbGVTYW1wbGVzKG9mU2FtcGxlcyldXSI+CiAgICAgICAgPGRpdj5zYW1wbGU6IFtbX2dldFNhbXBsZVRleHQoc2FtcGxlKV1dIG9mIFtbb2ZTYW1wbGVzXV08L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNBdExlYXN0T25lU3RlcChfc3RlcHMpXV0iPgogICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRpbmctbGFiZWwiPgogICAgICAgICAgICBzdGVwCiAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZCI+W1t0b0xvY2FsZVN0cmluZ18oX3N0ZXBWYWx1ZSldXTwvc3Bhbj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGluZy1sYWJlbCBoZWFkaW5nLXJpZ2h0Ij4KICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19jdXJyZW50V2FsbFRpbWVdXSI+CiAgICAgICAgICAgICAgW1tfY3VycmVudFdhbGxUaW1lXV0KICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwgcmlnaHQiPgogICAgICAgICAgICA8cGFwZXItc3Bpbm5lci1saXRlIGFjdGl2ZSBoaWRkZW4kPSJbWyFfaXNNZXNoTG9hZGluZ11dIj4KICAgICAgICAgICAgPC9wYXBlci1zcGlubmVyLWxpdGU+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC90ZW1wbGF0ZT4KICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19oYXNNdWx0aXBsZVN0ZXBzKF9zdGVwcyldXSI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwYXBlci1zbGlkZXIgaWQ9InN0ZXBzIiBpbW1lZGlhdGUtdmFsdWU9Int7X3N0ZXBJbmRleH19IiBtYXg9IltbX2dldE1heFN0ZXBJbmRleChfc3RlcHMpXV0iIG1heC1tYXJrZXJzPSJbW19nZXRNYXhTdGVwSW5kZXgoX3N0ZXBzKV1dIiBzbmFwcyBzdGVwPSIxIiB2YWx1ZT0ie3tfc3RlcEluZGV4fX0iPjwvcGFwZXItc2xpZGVyPgogICAgICAgIDwvZGl2PgogICAgICA8L3RlbXBsYXRlPgogICAgPC90Zi1jYXJkLWhlYWRpbmc+CiAgICA8c3R5bGU+CiAgICAgIHBhcGVyLXNsaWRlciB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDFweDsKICAgICAgICBtYXJnaW4tcmlnaHQ6IDFweDsKICAgICAgfQogICAgICAudGYtbWVzaC1sb2FkZXItaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBoZWlnaHQ6IDEwNXB4OwogICAgICB9CiAgICAgIFtoaWRkZW5dIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CiAgCjwvZG9tLW1vZHVsZT4KCgoKPGRvbS1tb2R1bGUgaWQ9Im1lc2gtZGFzaGJvYXJkIj4KICA8dGVtcGxhdGU+CiAgICA8dGYtZGFzaGJvYXJkLWxheW91dD4KICAgICAgPGRpdiBzbG90PSJzaWRlYmFyIiBjbGFzcz0iYWxsLWNvbnRyb2xzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaWRlYmFyLXNlY3Rpb24gdmlldy1jb250cm9sIj4KICAgICAgICAgIDxoMyBjbGFzcz0idGl0bGUiPlBvaW50IG9mIHZpZXc8L2gzPgogICAgICAgICAgPGRpdj4KICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWdyb3VwIGlkPSJ2aWV3LXJhZGlvLWdyb3VwIiBzZWxlY3RlZD0ie3tfc2VsZWN0ZWRWaWV3fX0iPgogICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9ImFsbC1yYWRpby1idXR0b24iIG5hbWU9ImFsbCI+CiAgICAgICAgICAgICAgICBEaXNwbGF5IGFsbCBwb2ludHMKICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIGZvcj0iYWxsLXJhZGlvLWJ1dHRvbiIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICAgICAgWm9vbSBhbmQgY2VudGVyIGNhbWVyYSB0byBkaXNwbGF5IGFsbCBwb2ludHMgYXQgb25jZS4gTm90ZSwgdGhhdAogICAgICAgICAgICAgICAgc29tZSBwb2ludHMgY291bGQgYmUgdG9vIGZhciAoaS5lLiB0b28gc21hbGwpIHRvIGJlIHZpc2libGUuCiAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICAgIDxwYXBlci1yYWRpby1idXR0b24gaWQ9InVzZXItcmFkaW8tYnV0dG9uIiBuYW1lPSJ1c2VyIj4KICAgICAgICAgICAgICAgIEN1cnJlbnQgdmlldwogICAgICAgICAgICAgIDwvcGFwZXItcmFkaW8tYnV0dG9uPgogICAgICAgICAgICAgIDxwYXBlci10b29sdGlwIGFuaW1hdGlvbi1kZWxheT0iMCIgZm9yPSJ1c2VyLXJhZGlvLWJ1dHRvbiIgcG9zaXRpb249InJpZ2h0IiBvZmZzZXQ9IjAiPgogICAgICAgICAgICAgICAgS2VlcCBjdXJyZW50IGNhbWVyYSBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KICAgICAgICAgICAgICA8L3BhcGVyLXRvb2x0aXA+CiAgICAgICAgICAgICAgPHBhcGVyLXJhZGlvLWJ1dHRvbiBpZD0ic2hhcmUtcmFkaW8tYnV0dG9uIiBuYW1lPSJzaGFyZSI+CiAgICAgICAgICAgICAgICBTaGFyZSB2aWV3cG9pbnQKICAgICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWJ1dHRvbj4KICAgICAgICAgICAgICA8cGFwZXItdG9vbHRpcCBhbmltYXRpb24tZGVsYXk9IjAiIGZvcj0ic2hhcmUtcmFkaW8tYnV0dG9uIiBwb3NpdGlvbj0icmlnaHQiIG9mZnNldD0iMCI+CiAgICAgICAgICAgICAgICBTaGFyZSB2aWV3cG9pbnQgYW1vbmcgYWxsIGNhbWVyYXMuCiAgICAgICAgICAgICAgPC9wYXBlci10b29sdGlwPgogICAgICAgICAgICA8L3BhcGVyLXJhZGlvLWdyb3VwPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhci1zZWN0aW9uIHJ1bnMtc2VsZWN0b3IiPgogICAgICAgICAgPHRmLXJ1bnMtc2VsZWN0b3Igc2VsZWN0ZWQtcnVucz0ie3tfc2VsZWN0ZWRSdW5zfX0iPgogICAgICAgICAgPC90Zi1ydW5zLXNlbGVjdG9yPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBzbG90PSJjZW50ZXIiPgogICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YU5vdEZvdW5kXV0iPgogICAgICAgICAgPGRpdiBjbGFzcz0ibm8tZGF0YS13YXJuaW5nIj4KICAgICAgICAgICAgPGgzPk5vIHBvaW50IGNsb3VkIGRhdGEgd2FzIGZvdW5kLjwvaDM+CiAgICAgICAgICAgIDxwPlByb2JhYmxlIGNhdXNlczoKICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFlvdSBoYXZlbuKAmXQgd3JpdHRlbiBhbnkgcG9pbnQgY2xvdWQgZGF0YSB0byB5b3VyIGV2ZW50IGZpbGVzLgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3XigJlyZSBuZXcgdG8gdXNpbmcgVGVuc29yQm9hcmQsIGFuZCB3YW50IHRvIGZpbmQgb3V0IGhvdyB0bwogICAgICAgICAgICAgIGFkZCBkYXRhIGFuZCBzZXQgdXAgeW91ciBldmVudCBmaWxlcywgY2hlY2sgb3V0IHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCI+UkVBRE1FPC9hPgogICAgICAgICAgICAgIGFuZCBwZXJoYXBzIHRoZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRlbnNvcmZsb3cub3JnL2dldF9zdGFydGVkL3N1bW1hcmllc19hbmRfdGVuc29yYm9hcmQiPlRlbnNvckJvYXJkIHR1dG9yaWFsPC9hPi4KICAgICAgICAgICAgCgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2Jsb2IvbWFzdGVyL1JFQURNRS5tZCNteS10ZW5zb3Jib2FyZC1pc250LXNob3dpbmctYW55LWRhdGEtd2hhdHMtd3JvbmciPnRoZSBzZWN0aW9uIG9mIHRoZSBSRUFETUUgZGV2b3RlZCB0byBtaXNzaW5nIGRhdGEgcHJvYmxlbXM8L2E+CiAgICAgICAgICAgICAgYW5kIGNvbnNpZGVyIGZpbGluZyBhbiBpc3N1ZSBvbiBHaXRIdWIuCiAgICAgICAgICAgIAogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9kYXRhTm90Rm91bmRdXSI+CiAgICAgICAgICA8dGYtdGFnLWZpbHRlcmVyIHRhZy1maWx0ZXI9Int7X3RhZ0ZpbHRlcn19Ij48L3RmLXRhZy1maWx0ZXJlcj4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2NhdGVnb3JpZXNdXSIgYXM9ImNhdGVnb3J5Ij4KICAgICAgICAgICAgPHRmLWNhdGVnb3J5LXBhZ2luYXRlZC12aWV3IGNhdGVnb3J5PSJbW2NhdGVnb3J5XV0iIGluaXRpYWwtb3BlbmVkPSJbW19zaG91bGRPcGVuKGluZGV4KV1dIj4KICAgICAgICAgICAgICA8dGVtcGxhdGU+CiAgICAgICAgICAgICAgICA8dGYtbWVzaC1sb2FkZXIgYWN0aXZlPSJbW2FjdGl2ZV1dIiBzZWxlY3RlZC12aWV3PSJbW19zZWxlY3RlZFZpZXddXSIgcnVuPSJbW2l0ZW0ucnVuXV0iIHRhZz0iW1tpdGVtLnRhZ11dIiBzYW1wbGU9IltbaXRlbS5zYW1wbGVdXSIgb2Ytc2FtcGxlcz0iW1tpdGVtLm9mU2FtcGxlc11dIiByZXF1ZXN0LW1hbmFnZXI9IltbX3JlcXVlc3RNYW5hZ2VyXV0iIGNsYXNzPSJ0Zi1tZXNoLWxvYWRlci1jb250YWluZXIiIG9uLWNhbWVyYS1wb3NpdGlvbi1jaGFuZ2U9Il9vbkNhbWVyYVBvc2l0aW9uQ2hhbmdlZCI+CiAgICAgICAgICAgICAgICA8L3RmLW1lc2gtbG9hZGVyPgogICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgIDwvdGYtY2F0ZWdvcnktcGFnaW5hdGVkLXZpZXc+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvdGVtcGxhdGU+CiAgICAgIDwvZGl2PgogICAgPC90Zi1kYXNoYm9hcmQtbGF5b3V0PgoKICAgIDxzdHlsZSBpbmNsdWRlPSJkYXNoYm9hcmQtc3R5bGUiPjwvc3R5bGU+CiAgICA8c3R5bGU+CiAgICAgIC5uby1kYXRhLXdhcm5pbmcgewogICAgICAgIG1heC13aWR0aDogNTQwcHg7CiAgICAgICAgbWFyZ2luOiA4MHB4IGF1dG8gMCBhdXRvOwogICAgICB9CiAgICAgIHBhcGVyLXJhZGlvLWJ1dHRvbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgcGFkZGluZzogNXB4OwogICAgICB9CiAgICAgIC5zaWRlYmFyLXNlY3Rpb24gaDMudGl0bGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTgwMCk7CiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgfQoKICAgICAgLnJ1bnMtc2VsZWN0b3IgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgfQoKICAgICAgdGYtcnVucy1zZWxlY3RvciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCB7CiAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgfQoKICAgICAgLnZpZXctY29udHJvbCBoMy50aXRsZSB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgIH0KCiAgICAgIC5hbGxjb250cm9scyAudmlldy1jb250cm9sIHBhcGVyLXJhZGlvLWdyb3VwIHsKICAgICAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICAgIH0KICAgICAgLyogTGF5b3V0IG11c3QgYmUgaG9yaXpvbnRhbCwgaS5lLiBpdGVtcyBhcnJhbmdlZCBpbiBhIHJvdy4gSWYgaXRlbXMgY2Fubm90IGZpdCBpbiBhIHJvdywKICAgICAgICogdGhleSBzaG91bGQgYmUgbW92ZWQgdG8gbmV4dCBsaW5lLiBBbGwgaXRlbXMgbXVzdCBiZSBzcXVhcmUgYXQgYWxsIHRpbWVzLiBNaW5pbXVtIHNpemUgb2YKICAgICAgICogdGhlIGl0ZW0gaXMgNDgwcHguIFRoaXMgbWVhbnMgdGhhdCBtYXhpbXVtIHNpemUgb2YgdGhlIGl0ZW0gbXVzdCBiZSA0ODBweCArIDQ3OXB4ID0gOTU5cHguCiAgICAgICAqICovCiAgICAgIC5ob3Jpem9udGFsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICB9CiAgICAgIHRmLW1lc2gtbG9hZGVyIHsKICAgICAgICB3aWR0aDogNDgwcHg7CiAgICAgICAgZmxleC1iYXNpczogNDgwcHg7CiAgICAgICAgZmxleC1ncm93OiAxOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICA8L3N0eWxlPgogIDwvdGVtcGxhdGU+CgogIAo8L2RvbS1tb2R1bGU+CgoKICAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCjxkb20tbW9kdWxlIGlkPSJ0Zi10ZW5zb3Jib2FyZCI+CiAgPHRlbXBsYXRlPgogICAgPHBhcGVyLWRpYWxvZyB3aXRoLWJhY2tkcm9wIGlkPSJzZXR0aW5ncyI+CiAgICAgIDxoMj5TZXR0aW5nczwvaDI+CiAgICAgIDxwYXBlci1jaGVja2JveCBpZD0iYXV0by1yZWxvYWQtY2hlY2tib3giIGNoZWNrZWQ9Int7YXV0b1JlbG9hZEVuYWJsZWR9fSI+CiAgICAgICAgUmVsb2FkIGRhdGEgZXZlcnkgPHNwYW4+W1thdXRvUmVsb2FkSW50ZXJ2YWxTZWNzXV08L3NwYW4+cy4KICAgICAgPC9wYXBlci1jaGVja2JveD4KICAgICAgPHBhcGVyLWlucHV0IGlkPSJwYWdpbmF0aW9uTGltaXRJbnB1dCIgbGFiZWw9IlBhZ2luYXRpb24gbGltaXQiIGFsd2F5cy1mbG9hdC1sYWJlbCB0eXBlPSJudW1iZXIiIG1pbj0iMSIgc3RlcD0iMSIgb24tY2hhbmdlPSJfcGFnaW5hdGlvbkxpbWl0Q2hhbmdlZCIgb24tdmFsdWUtY2hhbmdlZD0iX3BhZ2luYXRpb25MaW1pdFZhbGlkYXRlIj48L3BhcGVyLWlucHV0PgogICAgPC9wYXBlci1kaWFsb2c+CiAgICA8cGFwZXItaGVhZGVyLXBhbmVsPgogICAgICA8cGFwZXItdG9vbGJhciBpZD0idG9vbGJhciIgc2xvdD0iaGVhZGVyIiBjbGFzcz0iaGVhZGVyIj4KICAgICAgICA8ZGl2IGlkPSJ0b29sYmFyLWNvbnRlbnQiIHNsb3Q9InRvcCI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbIV9ob21lUGF0aF1dIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhci10aXRsZSI+W1ticmFuZF1dPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19ob21lUGF0aF1dIj4KICAgICAgICAgICAgPGEgaHJlZj0iW1tfaG9tZVBhdGhdXSIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIiBjbGFzcz0idG9vbGJhci10aXRsZSI+W1ticmFuZF1dPC9hPgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfYWN0aXZlRGFzaGJvYXJkc05vdExvYWRlZF1dIj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRvb2xiYXItbWVzc2FnZSI+CiAgICAgICAgICAgICAgTG9hZGluZyBhY3RpdmUgZGFzaGJvYXJkc+KApgogICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19hY3RpdmVEYXNoYm9hcmRzTG9hZGVkXV0iPgogICAgICAgICAgICA8cGFwZXItdGFicyBub2luayBzY3JvbGxhYmxlIHNlbGVjdGVkPSJ7e19zZWxlY3RlZERhc2hib2FyZH19IiBhdHRyLWZvci1zZWxlY3RlZD0iZGF0YS1kYXNoYm9hcmQiPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLXJlcGVhdCIgaXRlbXM9IltbX2Rhc2hib2FyZERhdGFdXSIgYXM9ImRhc2hib2FyZERhdHVtIj4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNEYXNoYm9hcmRBY3RpdmUoZGlzYWJsZWREYXNoYm9hcmRzLCBfYWN0aXZlRGFzaGJvYXJkcywgZGFzaGJvYXJkRGF0dW0pXV0iPgogICAgICAgICAgICAgICAgICA8cGFwZXItdGFiIGRhdGEtZGFzaGJvYXJkJD0iW1tkYXNoYm9hcmREYXR1bS5wbHVnaW5dXSIgdGl0bGU9IltbZGFzaGJvYXJkRGF0dW0udGFiTmFtZV1dIj4KICAgICAgICAgICAgICAgICAgICBbW2Rhc2hib2FyZERhdHVtLnRhYk5hbWVdXQogICAgICAgICAgICAgICAgICA8L3BhcGVyLXRhYj4KICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgPC9wYXBlci10YWJzPgogICAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2luYWN0aXZlRGFzaGJvYXJkc0V4aXN0KF9kYXNoYm9hcmREYXRhLCBkaXNhYmxlZERhc2hib2FyZHMsIF9hY3RpdmVEYXNoYm9hcmRzKV1dIj4KICAgICAgICAgICAgICA8cGFwZXItZHJvcGRvd24tbWVudSBsYWJlbD0iSU5BQ1RJVkUiIG5vLWxhYmVsLWZsb2F0IG5vaW5rIHN0eWxlPSJtYXJnaW4tbGVmdDogMTJweCI+CiAgICAgICAgICAgICAgICA8cGFwZXItbGlzdGJveCBpZD0iaW5hY3RpdmUtZGFzaGJvYXJkcy1tZW51IiBzbG90PSJkcm9wZG93bi1jb250ZW50IiBzZWxlY3RlZD0ie3tfc2VsZWN0ZWREYXNoYm9hcmR9fSIgYXR0ci1mb3Itc2VsZWN0ZWQ9ImRhdGEtZGFzaGJvYXJkIj4KICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20tcmVwZWF0IiBpdGVtcz0iW1tfZGFzaGJvYXJkRGF0YV1dIiBhcz0iZGFzaGJvYXJkRGF0dW0iPgogICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfaXNEYXNoYm9hcmRJbmFjdGl2ZShkaXNhYmxlZERhc2hib2FyZHMsIF9hY3RpdmVEYXNoYm9hcmRzLCBkYXNoYm9hcmREYXR1bSldXSIgcmVzdGFtcD4KICAgICAgICAgICAgICAgICAgICAgIDxwYXBlci1pdGVtIGRhdGEtZGFzaGJvYXJkJD0iW1tkYXNoYm9hcmREYXR1bS5wbHVnaW5dXSI+W1tkYXNoYm9hcmREYXR1bS50YWJOYW1lXV08L3BhcGVyLWl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAgIDwvcGFwZXItbGlzdGJveD4KICAgICAgICAgICAgICA8L3BhcGVyLWRyb3Bkb3duLW1lbnU+CiAgICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgICAgPGRpdiBjbGFzcz0iZ2xvYmFsLWFjdGlvbnMiPgogICAgICAgICAgICA8c2xvdCBuYW1lPSJpbmplY3RlZC1oZWFkZXItaXRlbXMiPjwvc2xvdD4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGlkPSJyZWxvYWQtYnV0dG9uIiBjbGFzcyQ9IltbX2dldERhdGFSZWZyZXNoaW5nQ2xhc3MoX3JlZnJlc2hpbmcpXV0iIGRpc2FibGVkJD0iW1tfaXNSZWxvYWREaXNhYmxlZF1dIiBpY29uPSJyZWZyZXNoIiBvbi10YXA9InJlbG9hZCIgdGl0bGUkPSJMYXN0IHVwZGF0ZWQ6IFtbX2xhc3RSZWxvYWRUaW1lU2hvcnRdXSI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgPHBhcGVyLWljb24tYnV0dG9uIGljb249InNldHRpbmdzIiBvbi10YXA9Im9wZW5TZXR0aW5ncyIgaWQ9InNldHRpbmdzLWJ1dHRvbiI+PC9wYXBlci1pY29uLWJ1dHRvbj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiIHRhYmluZGV4PSItMSIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgICAgIDxwYXBlci1pY29uLWJ1dHRvbiBpY29uPSJoZWxwLW91dGxpbmUiPjwvcGFwZXItaWNvbi1idXR0b24+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L3BhcGVyLXRvb2xiYXI+CgogICAgICA8ZGl2IGlkPSJjb250ZW50LXBhbmUiIGNsYXNzPSJmaXQiPgogICAgICAgIDxzbG90IG5hbWU9ImluamVjdGVkLW92ZXJ2aWV3Ij48L3Nsb3Q+CiAgICAgICAgPGRpdiBpZD0iY29udGVudCI+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX2FjdGl2ZURhc2hib2FyZHNGYWlsZWRUb0xvYWRdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmctbWVzc2FnZSI+CiAgICAgICAgICAgICAgPGgzPkZhaWxlZCB0byBsb2FkIHRoZSBzZXQgb2YgYWN0aXZlIGRhc2hib2FyZHMuPC9oMz4KICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIFRoaXMgY2FuIG9jY3VyIGlmIHRoZSBUZW5zb3JCb2FyZCBiYWNrZW5kIGlzIG5vIGxvbmdlciBydW5uaW5nLgogICAgICAgICAgICAgICAgUGVyaGFwcyB0aGlzIHBhZ2UgaXMgY2FjaGVkPwogICAgICAgICAgICAgIAoKICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIElmIHlvdSB0aGluayB0aGF0IHlvdeKAmXZlIGZpeGVkIHRoZSBwcm9ibGVtLCBjbGljayB0aGUgcmVsb2FkCiAgICAgICAgICAgICAgICBidXR0b24gaW4gdGhlIHRvcC1yaWdodC4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1thdXRvUmVsb2FkRW5hYmxlZF1dIj4KICAgICAgICAgICAgICAgICAgV2XigJlsbCB0cnkgdG8gcmVsb2FkIGV2ZXJ5CiAgICAgICAgICAgICAgICAgIFtbYXV0b1JlbG9hZEludGVydmFsU2Vjc11dJm5ic3A7c2Vjb25kcyBhcyB3ZWxsLgogICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8aT5MYXN0IHJlbG9hZDogW1tfbGFzdFJlbG9hZFRpbWVdXTwvaT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvY2F0aW9uXV0iPgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPjxwPgogICAgICAgICAgICAgICAgICAgIDxpPkxvZyBkaXJlY3Rvcnk6CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZGF0YV9sb2NhdGlvbiI+W1tfZGF0YUxvY2F0aW9uXV08L3NwYW4+PC9pPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxwPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1pZiIgaWY9IltbX3Nob3dOb0Rhc2hib2FyZHNNZXNzYWdlXV0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3YXJuaW5nLW1lc3NhZ2UiPgogICAgICAgICAgICAgIDxoMz5ObyBkYXNoYm9hcmRzIGFyZSBhY3RpdmUgZm9yIHRoZSBjdXJyZW50IGRhdGEgc2V0LjwvaDM+CiAgICAgICAgICAgICAgPHA+UHJvYmFibGUgY2F1c2VzOgogICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgIDxsaT5Zb3UgaGF2ZW7igJl0IHdyaXR0ZW4gYW55IGRhdGEgdG8geW91ciBldmVudCBmaWxlcy48L2xpPgogICAgICAgICAgICAgICAgPGxpPlRlbnNvckJvYXJkIGNhbuKAmXQgZmluZCB5b3VyIGV2ZW50IGZpbGVzLjwvbGk+CiAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgSWYgeW914oCZcmUgbmV3IHRvIHVzaW5nIFRlbnNvckJvYXJkLCBhbmQgd2FudCB0byBmaW5kIG91dCBob3cgdG8KICAgICAgICAgICAgICBhZGQgZGF0YSBhbmQgc2V0IHVwIHlvdXIgZXZlbnQgZmlsZXMsIGNoZWNrIG91dCB0aGUKICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vdGVuc29yZmxvdy90ZW5zb3Jib2FyZC9ibG9iL21hc3Rlci9SRUFETUUubWQiPlJFQURNRTwvYT4KICAgICAgICAgICAgICBhbmQgcGVyaGFwcyB0aGUKICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50ZW5zb3JmbG93Lm9yZy9nZXRfc3RhcnRlZC9zdW1tYXJpZXNfYW5kX3RlbnNvcmJvYXJkIj5UZW5zb3JCb2FyZCB0dXRvcmlhbDwvYT4uCiAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICBJZiB5b3UgdGhpbmsgVGVuc29yQm9hcmQgaXMgY29uZmlndXJlZCBwcm9wZXJseSwgcGxlYXNlIHNlZQogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kI215LXRlbnNvcmJvYXJkLWlzbnQtc2hvd2luZy1hbnktZGF0YS13aGF0cy13cm9uZyI+dGhlIHNlY3Rpb24gb2YgdGhlIFJFQURNRSBkZXZvdGVkIHRvIG1pc3NpbmcgZGF0YSBwcm9ibGVtczwvYT4KICAgICAgICAgICAgICAgIGFuZCBjb25zaWRlciBmaWxpbmcgYW4gaXNzdWUgb24gR2l0SHViLgogICAgICAgICAgICAgIAoKICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxpPkxhc3QgcmVsb2FkOiBbW19sYXN0UmVsb2FkVGltZV1dPC9pPgogICAgICAgICAgICAgICAgPHRlbXBsYXRlIGlzPSJkb20taWYiIGlmPSJbW19kYXRhTG9jYXRpb25dXSI+CiAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+PHA+CiAgICAgICAgICAgICAgICAgICAgPGk+RGF0YSBsb2NhdGlvbjoKICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJkYXRhX2xvY2F0aW9uIj5bW19kYXRhTG9jYXRpb25dXTwvc3Bhbj48L2k+CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC90ZW1wbGF0ZT4KICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfc2hvd05vU3VjaERhc2hib2FyZE1lc3NhZ2VdXSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Indhcm5pbmctbWVzc2FnZSI+CiAgICAgICAgICAgICAgPGgzPgogICAgICAgICAgICAgICAgVGhlcmXigJlzIG5vIGRhc2hib2FyZCBieSB0aGUgbmFtZSBvZgogICAgICAgICAgICAgICAg4oCcPHR0PltbX3NlbGVjdGVkRGFzaGJvYXJkXV08L3R0Pi7igJ0KICAgICAgICAgICAgICA8L2gzPgogICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfYWN0aXZlRGFzaGJvYXJkc0xvYWRlZF1dIj4KICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gc2VsZWN0IGEgZGFzaGJvYXJkIGZyb20gdGhlIGxpc3QgYWJvdmUuPC90ZW1wbGF0ZT4KCiAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8aT5MYXN0IHJlbG9hZDogW1tfbGFzdFJlbG9hZFRpbWVdXTwvaT4KICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSBpcz0iZG9tLWlmIiBpZj0iW1tfZGF0YUxvY2F0aW9uXV0iPgogICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPjxwPgogICAgICAgICAgICAgICAgICAgIDxpPkRhdGEgbG9jYXRpb246CiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iZGF0YV9sb2NhdGlvbiI+W1tfZGF0YUxvY2F0aW9uXV08L3NwYW4+PC9pPgogICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIDxwPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvdGVtcGxhdGU+CiAgICAgICAgICA8dGVtcGxhdGUgaXM9ImRvbS1yZXBlYXQiIGlkPSJkYXNoYm9hcmRzLXRlbXBsYXRlIiBpdGVtcz0iW1tfZGFzaGJvYXJkRGF0YV1dIiBhcz0iZGFzaGJvYXJkRGF0dW0iIG9uLWRvbS1jaGFuZ2U9Il9vblRlbXBsYXRlQ2hhbmdlZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRhc2hib2FyZC1jb250YWluZXIiIGRhdGEtZGFzaGJvYXJkJD0iW1tkYXNoYm9hcmREYXR1bS5wbHVnaW5dXSIgZGF0YS1zZWxlY3RlZCQ9IltbX3NlbGVjdGVkU3RhdHVzKF9zZWxlY3RlZERhc2hib2FyZCwgZGFzaGJvYXJkRGF0dW0ucGx1Z2luKV1dIj4KICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L3RlbXBsYXRlPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvcGFwZXItaGVhZGVyLXBhbmVsPgoKICAgIDxzdHlsZT4KICAgICAgOmhvc3QgewogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wYXBlci1ncmV5LTEwMCk7CiAgICAgIH0KCiAgICAgICN0b29sYmFyIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgfQoKICAgICAgLnRvb2xiYXItdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgICAgICBtYXJnaW4tbGVmdDogNnB4OwogICAgICAgIC8qIEluY3JlYXNlIGNsaWNrYWJsZSBhcmVhIGZvciBjYXNlIHdoZXJlIHRpdGxlIGlzIGFuIGFuY2hvci4gKi8KICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07CiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICBkaXNwbGF5OiB2YXIoLS10Yi10b29sYmFyLXRpdGxlLWRpc3BsYXksIGJsb2NrKTsKICAgICAgfQoKICAgICAgYS50b29sYmFyLXRpdGxlIHsKICAgICAgICAvKiBPdmVycmlkZSBkZWZhdWx0IGFuY2hvciBjb2xvci4gKi8KICAgICAgICBjb2xvcjogaW5oZXJpdDsKICAgICAgICAvKiBPdmVycmlkZSBkZWZhdWx0IGFuY2hvciB0ZXh0LWRlY29yYXRpb24uICovCiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICB9CgogICAgICAudG9vbGJhci1tZXNzYWdlIHsKICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgIH0KCiAgICAgIHBhcGVyLXRhYnMgewogICAgICAgIGZsZXgtZ3JvdzogMTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgLS1wYXBlci10YWJzLXNlbGVjdGlvbi1iYXItY29sb3I6IHdoaXRlOwogICAgICAgIC0tcGFwZXItdGFicy1jb250ZW50OiB7CiAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgfQogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpOwogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWZvY3VzLWNvbG9yOiB3aGl0ZTsKICAgICAgICAtLXBhcGVyLWlucHV0LWNvbnRhaW5lci1pbnB1dC1jb2xvcjogd2hpdGU7CiAgICAgICAgLS1wYXBlci1kcm9wZG93bi1tZW51LWljb246IHsKICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB9CiAgICAgICAgLS1wYXBlci1kcm9wZG93bi1tZW51LWlucHV0OiB7CiAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgfQogICAgICAgIC0tcGFwZXItaW5wdXQtY29udGFpbmVyLWxhYmVsOiB7CiAgICAgICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgfQogICAgICB9CgogICAgICBwYXBlci1kcm9wZG93bi1tZW51IHBhcGVyLWl0ZW0gewogICAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgIH0KCiAgICAgICNpbmFjdGl2ZS1kYXNoYm9hcmRzLW1lbnUgewogICAgICAgIC0tcGFwZXItbGlzdGJveC1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoCiAgICAgICAgICAtLXRiLXRvb2xiYXItYmFja2dyb3VuZC1jb2xvciwKICAgICAgICAgIHZhcigtLXRiLW9yYW5nZS1zdHJvbmcpCiAgICAgICAgKTsKICAgICAgICAtLXBhcGVyLWxpc3Rib3gtY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAuZ2xvYmFsLWFjdGlvbnMgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyAvKiBFbnN1cmUgdGhhdCBpY29ucyBzdGF5IGFsaWduZWQgKi8KICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAuZ2xvYmFsLWFjdGlvbnMgYSB7CiAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICB9CgogICAgICAjdG9vbGJhci1jb250ZW50IHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICB9CgogICAgICAjY29udGVudC1wYW5lIHsKICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3RyZXRjaDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgI2NvbnRlbnQgewogICAgICAgIGZsZXg6IDEgMTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICB9CgogICAgICAuZGFzaGJvYXJkLWNvbnRhaW5lciB7CiAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICB9CgogICAgICAvKiBIaWRlIHVuc2VsZWN0ZWQgZGFzaGJvYXJkcy4gV2Ugc3RpbGwgZGlzcGxheSB0aGVtIHdpdGhpbiBhIGNvbnRhaW5lcgogICAgICAgICBvZiBoZWlnaHQgMCBzaW5jZSBQbG90dGFibGUgcHJvZHVjZXMgZGVnZW5lcmF0ZSBjaGFydHMgd2hlbiBjaGFydHMgYXJlCiAgICAgICAgIHJlbG9hZGVkIHdoaWxlIG5vdCBkaXNwbGF5ZWQuICovCiAgICAgIC5kYXNoYm9hcmQtY29udGFpbmVyOm5vdChbZGF0YS1zZWxlY3RlZF0pIHsKICAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIC8qKiBXZSBmdXJ0aGVyIG1ha2UgY29udGFpbmVycyBpbnZpc2libGUuIFNvbWUgZWxlbWVudHMgbWF5IGFuY2hvciB0bwogICAgICAgICAgICB0aGUgdmlld3BvcnQgaW5zdGVhZCBvZiB0aGUgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIHNldHRpbmcgdGhlIG1heAogICAgICAgICAgICBoZWlnaHQgaGVyZSB0byAwIHdpbGwgbm90IGhpZGUgdGhlbS4gKi8KICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgIH0KCiAgICAgIC5kYXNoYm9hcmQtY29udGFpbmVyIGlmcmFtZSB7CiAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgfQoKICAgICAgLndhcm5pbmctbWVzc2FnZSB7CiAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICBtYXJnaW46IDgwcHggYXV0byAwIGF1dG87CiAgICAgIH0KCiAgICAgIFtkaXNhYmxlZF0gewogICAgICAgIG9wYWNpdHk6IDAuMjsKICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgIH0KCiAgICAgICNyZWxvYWQtYnV0dG9uLnJlZnJlc2hpbmcgewogICAgICAgIGFuaW1hdGlvbjogcm90YXRlIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgfQoKICAgICAgQGtleWZyYW1lcyByb3RhdGUgewogICAgICAgIDAlIHsKICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOwogICAgICAgIH0KICAgICAgICA1MCUgewogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTsKICAgICAgICB9CiAgICAgICAgMTAwJSB7CiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOwogICAgICAgIH0KICAgICAgfQogICAgPC9zdHlsZT4KICA8L3RlbXBsYXRlPgogIAogIAo8L2RvbS1tb2R1bGU+CgogIDxib2R5PgogICAgPHRmLXRlbnNvcmJvYXJkIHVzZS1oYXNoIGJyYW5kPSJUZW5zb3JCb2FyZCI+PC90Zi10ZW5zb3Jib2FyZD4KICAKCjxzY3JpcHQgc3JjPSJpbmRleC5qcyI+PC9zY3JpcHQ+", - "headers": [ - [ - "content-type", - "text/html; charset=utf-8" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/environment": { - "data": "eyJkYXRhX2xvY2F0aW9uIjogIi9jb250ZW50L2RyaXZlL015IERyaXZlL1dPUktfRElSL1RleHQyU3BhcnFsLzIwMjAtMDktMzBfMDAtNDUtNTIiLCAid2luZG93X3RpdGxlIjogIiJ9", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/experiments": { - "data": "W10=", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/plugin/scalars/scalars?tag=epoch&run=.": { - "data": "W1sxNjAxNDI2ODE5LjUyMDI4ODcsIDE4LCAwLjBdLCBbMTYwMTQyNjgyNS41OTI0NjA0LCA0MiwgMC4wXSwgWzE2MDE0MjY4MjYuMjk5MjEzNCwgNDUsIDAuMF0sIFsxNjAxNDI2ODMyLjgwMzU1NSwgNzEsIDAuMF0sIFsxNjAxNDI2ODM4LjQxOTU1NTcsIDk0LCAwLjBdLCBbMTYwMTQyNjg1NC41NjQ5OTkzLCAxNTgsIDAuMF0sIFsxNjAxNDI2ODU2LjY5MzI4MDcsIDE2NywgMC4wXSwgWzE2MDE0MjY4NzIuMjA3MzQ2LCAyMjksIDAuMF0sIFsxNjAxNDI2ODczLjM5NzUzLCAyMzQsIDAuMF0sIFsxNjAxNDI2ODc4Ljc0MTc0MzgsIDI1NSwgMC4wXSwgWzE2MDE0MjY4ODMuMzgwMTE1MywgMjczLCAwLjBdLCBbMTYwMTQyNjg5Mi4wNjU3ODIzLCAzMDgsIDAuMF0sIFsxNjAxNDI2ODkyLjU0MTM2NzgsIDMxMCwgMC4wXSwgWzE2MDE0MjY4OTQuNDIxNTMxNCwgMzE4LCAwLjBdLCBbMTYwMTQyNjkyMC4zODA3MDQ0LCA0MjEsIDAuMF0sIFsxNjAxNDI2OTMwLjA0MDYxNywgNDYwLCAwLjBdLCBbMTYwMTQyNjkzMy43NTU2MDI4LCA0NzQsIDAuMF0sIFsxNjAxNDI2OTQ5LjI2NDQ3MjcsIDUzNiwgMC4wXSwgWzE2MDE0MjY5NTYuMDc3MzA5OCwgNTYzLCAwLjBdLCBbMTYwMTQyNjk2MC4wMDI1MTE1LCA1NzksIDAuMF0sIFsxNjAxNDI2OTYxLjg5MDc0OTUsIDU4NiwgMC4wXSwgWzE2MDE0MjY5NjIuMTIxMDcyLCA1ODcsIDAuMF0sIFsxNjAxNDI2OTczLjYxMjYxNzUsIDYzNCwgMC4wXSwgWzE2MDE0MjY5NzcuMDkxMTkxOCwgNjQ3LCAwLjBdLCBbMTYwMTQyNjk4MC4zODU2ODgzLCA2NjEsIDAuMF0sIFsxNjAxNDI2OTgzLjE4NjkxMjUsIDY3MSwgMC4wXSwgWzE2MDE0MjY5OTMuODMxMTkxLCA3MTQsIDAuMF0sIFsxNjAxNDI2OTk1LjkxOTU5LCA3MjIsIDAuMF0sIFsxNjAxNDI3MDA2LjczMzQwMTgsIDc2NSwgMC4wXSwgWzE2MDE0MjcwMDguMTc0NjY3NiwgNzcxLCAwLjBdLCBbMTYwMTQyNzAxMS44NzU5NDY4LCA3ODUsIDAuMF0sIFsxNjAxNDI3MDEyLjM0NDQ3NjIsIDc4NywgMC4wXSwgWzE2MDE0MjcwMTUuODk4NzAyNCwgODAyLCAwLjBdLCBbMTYwMTQyNzAxNy40NTYzNTQ0LCA4MDgsIDAuMF0sIFsxNjAxNDI3MDI0LjQ5NzAyNzQsIDgzNiwgMC4wXSwgWzE2MDE0MjcwNTEuNjkxMTQyLCA5NDUsIDAuMF0sIFsxNjAxNDI3MDU4LjMwNTg0NjIsIDk3MSwgMC4wXSwgWzE2MDE0MjcwNTguNTQ2NTU4NCwgOTcyLCAwLjBdLCBbMTYwMTQyNzA2MC4wNjAyMjQzLCA5NzgsIDAuMF0sIFsxNjAxNDI3MDY2LjgwMjM3LCAxMDA1LCAwLjBdLCBbMTYwMTQyNzA2OS4yNjE0MjI0LCAxMDE0LCAwLjBdLCBbMTYwMTQyNzA4MS40MTg2ODExLCAxMDYzLCAwLjBdLCBbMTYwMTQyNzA4Mi4yNzI3MzA0LCAxMDY2LCAwLjBdLCBbMTYwMTQyNzA4OS4xMDU3OTg3LCAxMDkzLCAwLjBdLCBbMTYwMTQyNzA5MS45MzU4NTI4LCAxMTA0LCAwLjBdLCBbMTYwMTQyNzEwNi4zMDc4NDIzLCAxMTYxLCAwLjBdLCBbMTYwMTQyNzExMS4wNTY2ODY2LCAxMTgwLCAwLjBdLCBbMTYwMTQyNzEzMS4yMTcyMDE3LCAxMjYxLCAwLjBdLCBbMTYwMTQyNzE0NS4wMTUxNjA4LCAxMzE2LCAwLjBdLCBbMTYwMTQyNzE0NS43NjM1NTksIDEzMTksIDAuMF0sIFsxNjAxNDI3MTQ5LjQxMjIyMTQsIDEzMzMsIDAuMF0sIFsxNjAxNDI3MTUwLjM5MzkwODcsIDEzMzcsIDAuMF0sIFsxNjAxNDI3MTYyLjU5Njc4MzYsIDEzODUsIDAuMF0sIFsxNjAxNDI3MTY0LjI2NzE1NTQsIDEzOTIsIDAuMF0sIFsxNjAxNDI3MTY5LjkyNjg4MDQsIDE0MTQsIDAuMF0sIFsxNjAxNDI3MTcyLjc3MTgzMjUsIDE0MjYsIDAuMF0sIFsxNjAxNDI3MTc1LjM3MDY5MzcsIDE0MzYsIDAuMF0sIFsxNjAxNDI3MTgyLjg3NDQyNiwgMTQ2NiwgMC4wXSwgWzE2MDE0MjcxODUuNTIyODI0MywgMTQ3NywgMC4wXSwgWzE2MDE0MjcxODguOTQxMTE5MiwgMTQ5MSwgMC4wXSwgWzE2MDE0MjcxOTcuMTAxMTA3MSwgMTUyMywgMC4wXSwgWzE2MDE0MjcyMDQuMzkzMTkzMiwgMTU1MiwgMC4wXSwgWzE2MDE0MjcyMDguMjUwNDg4OCwgMTU2OCwgMC4wXSwgWzE2MDE0MjcyMTIuNDUyMjYyNCwgMTU4NCwgMC4wXSwgWzE2MDE0MjcyMTMuNDA1MTQ5NywgMTU4OCwgMC4wXSwgWzE2MDE0MjcyMTcuNTYzNDA0NiwgMTYwNSwgMC4wXSwgWzE2MDE0MjcyMjYuNDcyMTE5NiwgMTY0MCwgMC4wXSwgWzE2MDE0MjcyMzkuMDUxNzM4NywgMTY5MSwgMC4wXSwgWzE2MDE0MjcyNDMuNTY2MTY2OSwgMTcwOSwgMC4wXSwgWzE2MDE0MjcyNDUuNzYyMzA3MiwgMTcxOCwgMC4wXSwgWzE2MDE0MjcyNDkuNDU0ODkzNiwgMTczMiwgMC4wXSwgWzE2MDE0MjcyNDkuOTUxMzczMywgMTczNCwgMC4wXSwgWzE2MDE0MjcyNTAuNjY5NjM1LCAxNzM3LCAwLjBdLCBbMTYwMTQyNzI2MS45MTMwMTU0LCAxNzgxLCAwLjBdLCBbMTYwMTQyNzI3My4wNDk0OTE2LCAxODI2LCAwLjBdLCBbMTYwMTQyNzI3Ny43MzA5NzA0LCAxODQ0LCAwLjBdLCBbMTYwMTQyNzI3OS44NzE1MDkzLCAxODUzLCAwLjBdLCBbMTYwMTQyNzI4My4yNTgzNTkyLCAxODY2LCAwLjBdLCBbMTYwMTQyNzI4My45NzY2Nzk2LCAxODY5LCAwLjBdLCBbMTYwMTQyNzI4NS44NzQ4MzE3LCAxODc3LCAwLjBdLCBbMTYwMTQyNzI5NS44NTA1NTU0LCAxOTE3LCAwLjBdLCBbMTYwMTQyNzMwMC4yNTYyMjMsIDE5MzQsIDAuMF0sIFsxNjAxNDI3MzAyLjYxOTgxNjMsIDE5NDQsIDAuMF0sIFsxNjAxNDI3MzAzLjQxOTQ5OSwgMTk0NywgMC4wXSwgWzE2MDE0MjczMTYuOTM4MDczLCAyMDAxLCAwLjBdLCBbMTYwMTQyNzMyNS45NDgzNjg4LCAyMDM2LCAwLjBdLCBbMTYwMTQyNzMzNi4yMDE5MDE3LCAyMDc3LCAwLjBdLCBbMTYwMTQyNzMzOC4xMTkzMzA0LCAyMDg1LCAwLjBdLCBbMTYwMTQyNzMzOS4xNjA2NjUzLCAyMDg5LCAwLjBdLCBbMTYwMTQyNzM0MS4xMTM0NjcyLCAyMDk2LCAwLjBdLCBbMTYwMTQyNzM2NC4wMTcyNjEsIDIxODcsIDAuMF0sIFsxNjAxNDI3MzY2Ljg3OTczOTMsIDIxOTksIDAuMF0sIFsxNjAxNDI3MzcwLjEzMTQ5MzgsIDIyMTEsIDAuMF0sIFsxNjAxNDI3Mzc1LjAyNTg3OTQsIDIyMzEsIDAuMF0sIFsxNjAxNDI3Mzc2LjQ3MzI2NzMsIDIyMzYsIDAuMF0sIFsxNjAxNDI3Mzc2LjcyNDM1ODYsIDIyMzcsIDAuMF0sIFsxNjAxNDI3MzgxLjQ0MzM5NTksIDIyNTcsIDAuMF0sIFsxNjAxNDI3MzgyLjg0NDQzNywgMjI2MiwgMC4wXSwgWzE2MDE0MjczOTQuMDk5NjU4LCAyMzA3LCAwLjBdLCBbMTYwMTQyNzM5Ny4xMzc4Mjk4LCAyMzE5LCAwLjBdLCBbMTYwMTQyNzQwNi4wMjc3NTM0LCAyMzU0LCAwLjBdLCBbMTYwMTQyNzQxNC44NTYzNTI4LCAyMzg5LCAwLjBdLCBbMTYwMTQyNzQxNS4wOTMyODU2LCAyMzkwLCAwLjBdLCBbMTYwMTQyNzQxNS41ODQ3NDk1LCAyMzkyLCAwLjBdLCBbMTYwMTQyNzQyNi45NTAxNDIxLCAyNDM2LCAwLjBdLCBbMTYwMTQyNzQzMS4wNDQ2OSwgMjQ1MywgMC4wXSwgWzE2MDE0Mjc0MzEuNTExODA5OCwgMjQ1NSwgMC4wXSwgWzE2MDE0Mjc0MzIuODc3NzgsIDI0NjAsIDAuMF0sIFsxNjAxNDI3NDM5LjA5MDAyOCwgMjQ4NSwgMC4wXSwgWzE2MDE0Mjc0MzkuMzY0MTc5NiwgMjQ4NiwgMC4wXSwgWzE2MDE0Mjc0NDIuMTAzNzI4NSwgMjQ5NiwgMC4wXSwgWzE2MDE0Mjc0NDIuNTcyNzUzNywgMjQ5OCwgMC4wXSwgWzE2MDE0Mjc0NDMuNzcxNzkzOCwgMjUwMywgMC4wXSwgWzE2MDE0Mjc0NDcuMzEwMDMyLCAyNTE3LCAwLjBdLCBbMTYwMTQyNzQ1MS4wNzUwOTksIDI1MzIsIDAuMF0sIFsxNjAxNDI3NDU0Ljg1NjE4NzgsIDI1NDcsIDAuMF0sIFsxNjAxNDI3NDU2LjQyNzUxMzYsIDI1NTMsIDAuMF0sIFsxNjAxNDI3NDg5LjM3MDMyMTUsIDI2ODUsIDAuMF0sIFsxNjAxNDI3NTAzLjI5OTMzNSwgMjc0MCwgMC4wXSwgWzE2MDE0Mjc1MDcuMDA3MDc4LCAyNzU0LCAwLjBdLCBbMTYwMTQyNzUxNS42OTk3NjA3LCAyNzg5LCAwLjBdLCBbMTYwMTQyNzU0Mi42ODQyMzIsIDI4OTYsIDAuMF0sIFsxNjAxNDI3NTYwLjM2MiwgMjk2NywgMC4wXSwgWzE2MDE0Mjc1NzEuNjI2MjE5MywgMzAxMSwgMC4wXSwgWzE2MDE0Mjc1NzguNDE4NDIxNywgMzAzOCwgMC4wXSwgWzE2MDE0Mjc1NzkuMTQyNzc4MiwgMzA0MSwgMC4wXSwgWzE2MDE0Mjc1OTMuNzQ4MzUzNywgMzA5OSwgMC4wXSwgWzE2MDE0Mjc2MDkuMjYyODM4OCwgMzE2MSwgMC4wXSwgWzE2MDE0Mjc2MTcuOTY1NjAxLCAzMTk2LCAwLjBdLCBbMTYwMTQyNzYyNi42ODM3NzcsIDMyMzAsIDAuMF0sIFsxNjAxNDI3NjMwLjIxOTY4MTcsIDMyNDQsIDAuMF0sIFsxNjAxNDI3NjMwLjY4ODcyMjQsIDMyNDYsIDAuMF0sIFsxNjAxNDI3NjMwLjkyMjgyNiwgMzI0NywgMC4wXSwgWzE2MDE0Mjc2NDUuNDI0NzExLCAzMzA1LCAwLjBdLCBbMTYwMTQyNzY1NS41MTg1NzY0LCAzMzQ1LCAwLjBdLCBbMTYwMTQyNzY2My40MzcwMTMsIDMzNzYsIDAuMF0sIFsxNjAxNDI3NjcxLjMzMDgzMzQsIDM0MDgsIDAuMF0sIFsxNjAxNDI3Njc2Ljc2NDU4MjksIDM0MzAsIDAuMF0sIFsxNjAxNDI3NjgxLjQzMDc4MTgsIDM0NDksIDAuMF0sIFsxNjAxNDI3Njg1LjM4MzA5MTIsIDM0NjQsIDAuMF0sIFsxNjAxNDI3Njg5LjIyODEwMzIsIDM0ODAsIDAuMF0sIFsxNjAxNDI3NzE5LjMzMTY1NzYsIDM2MDAsIDAuMF0sIFsxNjAxNDI3NzIzLjg2OTQ1MDMsIDM2MTgsIDAuMF0sIFsxNjAxNDI3NzI0LjMzNzYyMzYsIDM2MjAsIDAuMF0sIFsxNjAxNDI3NzMzLjM4NDAwODQsIDM2NTYsIDAuMF0sIFsxNjAxNDI3NzM2Ljk5MDc1NSwgMzY3MCwgMC4wXSwgWzE2MDE0Mjc3NTEuMDA5MzExNCwgMzcyNiwgMC4wXSwgWzE2MDE0Mjc3NTEuOTQ1MDEzOCwgMzczMCwgMC4wXSwgWzE2MDE0Mjc3NTQuNTkyMjAwNSwgMzc0MSwgMC4wXSwgWzE2MDE0Mjc3NjcuNjY0MDk1NCwgMzc5MywgMC4wXSwgWzE2MDE0Mjc3NzMuMDEyMjQ0MiwgMzgxNCwgMC4wXSwgWzE2MDE0Mjc3NzQuMTg4NjEwMywgMzgxOSwgMC4wXSwgWzE2MDE0Mjc3NzQuNjYyMTc3LCAzODIxLCAwLjBdLCBbMTYwMTQyNzc3Ny4zOTMzOTE2LCAzODMxLCAwLjBdLCBbMTYwMTQyNzc4NS43NTY1NjkxLCAzODY0LCAwLjBdLCBbMTYwMTQyNzgwMS42NjM2MDc4LCAzOTI4LCAwLjBdLCBbMTYwMTQyNzgwOC43MDgzMDA0LCAzOTU2LCAwLjBdLCBbMTYwMTQyNzgxNS43MjQ3MTA1LCAzOTg0LCAwLjBdLCBbMTYwMTQyNzgyNS4wNDQzMDQ2LCA0MDIyLCAwLjBdLCBbMTYwMTQyNzgyNy45NTg3NDMsIDQwMzMsIDAuMF0sIFsxNjAxNDI3ODI4LjY3ODQ1MzIsIDQwMzYsIDAuMF0sIFsxNjAxNDI3ODQyLjk5MDgwMjMsIDQwOTMsIDAuMF0sIFsxNjAxNDI3ODQ0LjE3NzEzMTQsIDQwOTgsIDAuMF0sIFsxNjAxNDI3ODQ2Ljc5MjM0OTMsIDQxMDksIDAuMF0sIFsxNjAxNDI3ODY1LjIwODMyMiwgNDE4MiwgMC4wXSwgWzE2MDE0Mjc4NjguMDQ5NzQzLCA0MTk0LCAwLjBdLCBbMTYwMTQyNzg2OC41MTg0Nzk4LCA0MTk2LCAwLjBdLCBbMTYwMTQyNzg3MC4yMDU3ODIyLCA0MjAyLCAwLjBdLCBbMTYwMTQyNzg3Ni4zMjkwMzEsIDQyMjcsIDAuMF0sIFsxNjAxNDI3ODc3Ljc1NjE0NjcsIDQyMzIsIDAuMF0sIFsxNjAxNDI3ODc4LjUyNDE4NTIsIDQyMzUsIDAuMF0sIFsxNjAxNDI3ODg1LjUwNjYyNjYsIDQyNjMsIDAuMF0sIFsxNjAxNDI3ODg2LjIxNjczOTcsIDQyNjYsIDAuMF0sIFsxNjAxNDI3ODk1LjYwNDM0MSwgNDMwNCwgMC4wXSwgWzE2MDE0Mjc4OTguOTc5Nzg4NSwgNDMxNywgMC4wXSwgWzE2MDE0Mjc4OTkuNTE2NjYwNSwgNDMxOSwgMC4wXSwgWzE2MDE0Mjc5MTkuNTQzMzkzOSwgNDQwMCwgMC4wXSwgWzE2MDE0Mjc5MjcuOTIyMzcxOSwgNDQzMywgMC4wXSwgWzE2MDE0Mjc5NDIuNjMyMDUyNywgNDQ5MiwgMC4wXSwgWzE2MDE0Mjc5NDYuNjM5NzUxNywgNDUwOSwgMC4wXSwgWzE2MDE0Mjc5NTEuOTE5MjY0NiwgNDUzMCwgMC4wXSwgWzE2MDE0Mjc5NjQuNzEyMDQzMywgNDU4MSwgMC4wXSwgWzE2MDE0Mjc5NzYuMjQ3MDEyNCwgNDYyOCwgMC4wXSwgWzE2MDE0Mjc5ODUuMzkzNDg1OCwgNDY2NCwgMC4wXSwgWzE2MDE0Mjc5ODYuMzQwNDUxMiwgNDY2OCwgMC4wXSwgWzE2MDE0Mjc5ODguMjM3MTk5OCwgNDY3NiwgMC4wXSwgWzE2MDE0Mjc5OTcuNDY2MjAyMywgNDcxMywgMC4wXSwgWzE2MDE0MjgwMDYuOTI2MDAwOCwgNDc1MCwgMC4wXSwgWzE2MDE0MjgwMDguODQzMzE1MSwgNDc1OCwgMC4wXSwgWzE2MDE0MjgwMTYuMzU0NzgxNCwgNDc4OCwgMC4wXSwgWzE2MDE0MjgwMTkuMjQzOTQ4NywgNDgwMCwgMC4wXSwgWzE2MDE0MjgwMTkuODM0NjIxNCwgNDgwMiwgMC4wXSwgWzE2MDE0MjgwMjkuMzM3NTQzNSwgNDg0MCwgMC4wXSwgWzE2MDE0MjgwMzIuMTY5OTE3LCA0ODUyLCAwLjBdLCBbMTYwMTQyODA0Mi44MDY3NTU4LCA0ODk0LCAwLjBdLCBbMTYwMTQyODA1OS42OTg3NjcsIDQ5NjIsIDAuMF0sIFsxNjAxNDI4MDYxLjgxNjQwNjIsIDQ5NzEsIDAuMF0sIFsxNjAxNDI4MDYyLjY1OTY0MTUsIDQ5NzQsIDAuMF0sIFsxNjAxNDI4MDgxLjYzNjE3ODcsIDUwNTAsIDAuMF0sIFsxNjAxNDI4MDgyLjEwNjIzNjcsIDUwNTIsIDAuMF0sIFsxNjAxNDI4MDk1LjY4NzIxOCwgNTEwNiwgMC4wXSwgWzE2MDE0MjgxMDIuNjMzMDA2OCwgNTEzNCwgMC4wXSwgWzE2MDE0MjgxMTguOTYyMjYzNiwgNTIwMCwgMC4wXSwgWzE2MDE0MjgxMjguOTgxOTExNywgNTIzOSwgMC4wXSwgWzE2MDE0MjgxNTEuMzk4MjEwOCwgNTMyOSwgMC4wXSwgWzE2MDE0MjgxNTUuMTgxMzg4OSwgNTM0NSwgMC4wXSwgWzE2MDE0MjgxNTguODIxMTM2NywgNTM1OSwgMC4wXSwgWzE2MDE0MjgxNzQuMTEyMTUxNCwgNTQyMCwgMC4wXSwgWzE2MDE0MjgxNzkuNjkyOTQ0NSwgNTQ0MiwgMC4wXSwgWzE2MDE0MjgxOTcuNjM3MTEsIDU1MTUsIDAuMF0sIFsxNjAxNDI4MTk4LjE0MzY3NywgNTUxNywgMC4wXSwgWzE2MDE0MjgyMDYuMjY2MTI3OCwgNTU0OSwgMC4wXSwgWzE2MDE0MjgyMTUuODU2MzI3LCA1NTg3LCAwLjBdLCBbMTYwMTQyODIzNC4xMzM0NzE1LCA1NjYwLCAwLjBdLCBbMTYwMTQyODIzNS4yNjY2ODI0LCA1NjY0LCAwLjBdLCBbMTYwMTQyODIzOC45NjcxMTU0LCA1Njc5LCAwLjBdLCBbMTYwMTQyODI0OS4zOTgzNDEyLCA1NzIwLCAwLjBdLCBbMTYwMTQyODI1MC4yODEyMzE0LCA1NzIzLCAwLjBdLCBbMTYwMTQyODI2My40MDI4MTY1LCA1Nzc2LCAwLjBdLCBbMTYwMTQyODI3MS40NTU1MDMsIDU4MDgsIDAuMF0sIFsxNjAxNDI4Mjc1LjUwNDY2MDEsIDU4MjUsIDAuMF0sIFsxNjAxNDI4Mjc2LjIwOTE3MTUsIDU4MjgsIDAuMF0sIFsxNjAxNDI4Mjg0Ljc0MzY1NTQsIDU4NjIsIDAuMF0sIFsxNjAxNDI4Mjg1LjMyOTk5OTIsIDU4NjQsIDAuMF0sIFsxNjAxNDI4Mjg3LjE1MzA5MDIsIDU4NzEsIDAuMF0sIFsxNjAxNDI4Mjk1Ljk5MjA2NTIsIDU5MDcsIDAuMF0sIFsxNjAxNDI4MzAxLjQxNDE3NTUsIDU5MjgsIDAuMF0sIFsxNjAxNDI4MzA3LjQxOTkwMjgsIDU5NTIsIDAuMF0sIFsxNjAxNDI4MzA4LjY2NTA1ODEsIDU5NTcsIDAuMF0sIFsxNjAxNDI4MzEwLjEyNzAyNTEsIDU5NjMsIDAuMF0sIFsxNjAxNDI4MzE2Ljg3NTg4ODgsIDU5OTAsIDAuMF0sIFsxNjAxNDI4MzIxLjkzOTI1NTcsIDYwMTAsIDAuMF0sIFsxNjAxNDI4MzIzLjE2MTA4MTYsIDYwMTUsIDAuMF0sIFsxNjAxNDI4MzM4LjY1OTQzNDYsIDYwNzgsIDAuMF0sIFsxNjAxNDI4MzQ5LjQxMjU5MTUsIDYxMjEsIDAuMF0sIFsxNjAxNDI4MzUxLjk2MDIyOTQsIDYxMzEsIDAuMF0sIFsxNjAxNDI4MzY0LjQyMjU4OTMsIDYxODEsIDAuMF0sIFsxNjAxNDI4MzY4Ljk5MDcyMDUsIDYyMDAsIDAuMF0sIFsxNjAxNDI4MzcyLjQ1NzA4MjMsIDYyMTMsIDAuMF0sIFsxNjAxNDI4MzczLjg3NzIwMzUsIDYyMTksIDAuMF0sIFsxNjAxNDI4Mzc2Ljk3NjgyNzEsIDYyMzIsIDAuMF0sIFsxNjAxNDI4MzkxLjE1OTQ1MzYsIDYyODksIDAuMF0sIFsxNjAxNDI4Mzk2Ljk4Mzg2MDMsIDYzMTIsIDAuMF0sIFsxNjAxNDI4Mzk4LjE1ODI5ODcsIDYzMTcsIDAuMF0sIFsxNjAxNDI4NDA0LjIxNjE1OTYsIDYzNDEsIDAuMF0sIFsxNjAxNDI4NDA5Ljg5NTQ5MDQsIDYzNjMsIDAuMF0sIFsxNjAxNDI4NDEyLjk0NDg5NjUsIDYzNzYsIDAuMF0sIFsxNjAxNDI4NDE5LjAyMDUxNzMsIDY0MDAsIDAuMF0sIFsxNjAxNDI4NDQzLjExNjg5NzYsIDY0OTYsIDAuMF0sIFsxNjAxNDI4NDQ0LjE5MDM3ODQsIDY1MDAsIDAuMF0sIFsxNjAxNDI4NDQ4LjkzNDIwNTgsIDY1MjAsIDAuMF0sIFsxNjAxNDI4NDYyLjMzNTA5NTQsIDY1NzQsIDAuMF0sIFsxNjAxNDI4NDY1LjAzMDM3NjQsIDY1ODQsIDAuMF0sIFsxNjAxNDI4NDY5LjU2MTI0NTIsIDY2MDMsIDAuMF0sIFsxNjAxNDI4NDgzLjEwNDI2NzYsIDY2NTcsIDAuMF0sIFsxNjAxNDI4NDg1LjM5ODAyMDUsIDY2NjYsIDAuMF0sIFsxNjAxNDI4NDg5LjA3OTQ2NDQsIDY2ODEsIDAuMF0sIFsxNjAxNDI4NDkyLjgzMzU3ODgsIDY2OTYsIDAuMF0sIFsxNjAxNDI4NDkzLjY2MzQxMTQsIDY2OTksIDAuMF0sIFsxNjAxNDI4NDk2LjQ5OTU2ODUsIDY3MTEsIDAuMF0sIFsxNjAxNDI4NTAzLjIxMjY1NywgNjczOCwgMC4wXSwgWzE2MDE0Mjg1MDQuMTc5MjA2OCwgNjc0MiwgMC4wXSwgWzE2MDE0Mjg1MDcuMDAxNzE3LCA2NzUzLCAwLjBdLCBbMTYwMTQyODUzMC40MTQ3ODQ0LCA2ODQ2LCAwLjBdLCBbMTYwMTQyODUzMi4zMDU0NjAyLCA2ODU0LCAwLjBdLCBbMTYwMTQyODUzNi4wOTkwOTA2LCA2ODY5LCAwLjBdLCBbMTYwMTQyODU1Mi4yNTQxNjY2LCA2OTM0LCAwLjBdLCBbMTYwMTQyODU2MC4yMjc1MDEyLCA2OTY2LCAwLjBdLCBbMTYwMTQyODU2Ni42NjUzNjE0LCA2OTkyLCAwLjBdLCBbMTYwMTQyODU3Mi4yNjY2NDM1LCA3MDE0LCAwLjBdLCBbMTYwMTQyODU5NS4wNTgzNSwgNzEwNiwgMC4wXSwgWzE2MDE0Mjg1OTYuOTIyODU5MiwgNzExNCwgMC4wXSwgWzE2MDE0Mjg2MDcuMjE1OTIwNCwgNzE1NSwgMC4wXSwgWzE2MDE0Mjg2MjIuNjkzNjU5NSwgNzIxNiwgMC4wXSwgWzE2MDE0Mjg2MzAuMzUzMDY4OCwgNzI0NywgMC4wXSwgWzE2MDE0Mjg2NDMuNjA0Nzc4MywgNzMwMCwgMC4wXSwgWzE2MDE0Mjg2NDYuMjA2MDYxNiwgNzMxMSwgMC4wXSwgWzE2MDE0Mjg2NTAuODEyMjIxMywgNzMyOSwgMC4wXSwgWzE2MDE0Mjg2NTMuMTgwNzA5MSwgNzMzOSwgMC4wXSwgWzE2MDE0Mjg2NTMuNDExNTgwNiwgNzM0MCwgMC4wXSwgWzE2MDE0Mjg2NTguMjkwMzIxLCA3MzU5LCAwLjBdLCBbMTYwMTQyODY2My44NzE0MDUsIDczODIsIDAuMF0sIFsxNjAxNDI4NjY4LjUzMTMxNzUsIDc0MDEsIDAuMF0sIFsxNjAxNDI4Njc4LjI4NzU4ODYsIDc0NDAsIDAuMF0sIFsxNjAxNDI4Njc5LjE1NzAwODQsIDc0NDMsIDAuMF0sIFsxNjAxNDI4NjgwLjg3NjE3OCwgNzQ1MCwgMC4wXSwgWzE2MDE0Mjg2ODMuMjM0ODUzLCA3NDYwLCAwLjBdLCBbMTYwMTQyODY4My45NDYxMTIsIDc0NjMsIDAuMF0sIFsxNjAxNDI4Njg3Ljc5ODk5MTIsIDc0NzgsIDAuMF0sIFsxNjAxNDI4Njk1LjkzOTkwNDIsIDc1MTEsIDAuMF0sIFsxNjAxNDI4NzAwLjgyNTk5NCwgNzUzMCwgMC4wXSwgWzE2MDE0Mjg3MjAuMjA1NzI3OCwgNzYwOSwgMC4wXSwgWzE2MDE0Mjg3MjkuMDcxMDA1LCA3NjQ0LCAwLjBdLCBbMTYwMTQyODczMy4xMDY1MzcsIDc2NjEsIDAuMF0sIFsxNjAxNDI4NzM3LjA1MzAzODgsIDc2NzYsIDAuMF0sIFsxNjAxNDI4NzM5LjYzMDAxNTEsIDc2ODcsIDAuMF0sIFsxNjAxNDI4NzQxLjAzNDQ3OTQsIDc2OTMsIDAuMF0sIFsxNjAxNDI4NzU0LjI2MjYzNzksIDc3NDYsIDAuMF0sIFsxNjAxNDI4NzU3Ljg5MjU1NTUsIDc3NjAsIDAuMF0sIFsxNjAxNDI4NzYyLjY0OTA2LCA3NzgwLCAwLjBdLCBbMTYwMTQyODc2NC44MzMxNTQsIDc3ODgsIDAuMF0sIFsxNjAxNDI4NzY3LjI3NjQ0NTYsIDc3OTgsIDAuMF0sIFsxNjAxNDI4Nzc1LjkxMzM5OSwgNzgzMywgMC4wXSwgWzE2MDE0Mjg3OTIuNjg5NzQ2MSwgNzkwMCwgMC4wXSwgWzE2MDE0Mjg4MDAuODE3Nzc3LCA3OTMyLCAwLjBdLCBbMTYwMTQyODgxNS4zMjk1MzY0LCA3OTkxLCAwLjBdLCBbMTYwMTQyODgyMy45ODk1OTU3LCA4MDI2LCAwLjBdLCBbMTYwMTQyODgyNi42MDYxNDk3LCA4MDM3LCAwLjBdLCBbMTYwMTQyODgyOS44Mjg1NDUsIDgwNDksIDAuMF0sIFsxNjAxNDI4ODMzLjgyNTg4MTIsIDgwNjYsIDAuMF0sIFsxNjAxNDI4ODYyLjMzNjIxMDMsIDgxODAsIDAuMF0sIFsxNjAxNDI4ODYzLjMwOTIxODQsIDgxODQsIDAuMF0sIFsxNjAxNDI4ODcxLjE3MTE5NjIsIDgyMTUsIDAuMF0sIFsxNjAxNDI4ODcyLjc0NzAwNSwgODIyMSwgMC4wXSwgWzE2MDE0Mjg4ODcuMDUwMDQyNiwgODI3OSwgMC4wXSwgWzE2MDE0Mjg4ODkuNjMyMzE2NiwgODI5MCwgMC4wXSwgWzE2MDE0Mjg4OTguNzY0MjI3OSwgODMyNywgMC4wXSwgWzE2MDE0Mjg5MDAuMjIwNzU0LCA4MzMyLCAwLjBdLCBbMTYwMTQyODkwMC44MjExMTYyLCA4MzM0LCAwLjBdLCBbMTYwMTQyODkwMi4yMzM2ODc0LCA4MzQwLCAwLjBdLCBbMTYwMTQyODkwNy45Nzc3NDQsIDgzNjMsIDAuMF0sIFsxNjAxNDI4OTA5LjE0MzY1NjUsIDgzNjgsIDAuMF0sIFsxNjAxNDI4OTExLjI3NjEyMSwgODM3NywgMC4wXSwgWzE2MDE0Mjg5MzMuNjc1ODM3NSwgODQ2NywgMC4wXSwgWzE2MDE0Mjg5MzQuNDIzNDM2NiwgODQ3MCwgMC4wXSwgWzE2MDE0Mjg5NDEuMzA4NjIyNCwgODQ5OCwgMC4wXSwgWzE2MDE0Mjg5NDQuMDk3Njk1OCwgODUwOCwgMC4wXSwgWzE2MDE0Mjg5NTguNTA5MDksIDg1NjYsIDAuMF0sIFsxNjAxNDI4OTY1LjA3NjYxMzIsIDg1OTIsIDAuMF0sIFsxNjAxNDI4OTY3LjE5NTAxMTEsIDg2MDEsIDAuMF0sIFsxNjAxNDI4OTc1LjM4MzUzMjgsIDg2MzQsIDAuMF0sIFsxNjAxNDI4OTc1LjYxODE2NTMsIDg2MzUsIDAuMF0sIFsxNjAxNDI4OTc3LjgzNDEyNjIsIDg2NDQsIDAuMF0sIFsxNjAxNDI4OTg5LjMwNjM0NCwgODY5MCwgMC4wXSwgWzE2MDE0Mjg5OTAuNDg2NDgzNiwgODY5NSwgMC4wXSwgWzE2MDE0MjkwMTYuODg2NDE3NCwgODgwMSwgMC4wXSwgWzE2MDE0MjkwMjEuMjg2MjMxOCwgODgxOSwgMC4wXSwgWzE2MDE0MjkwMjIuMTMwODEyLCA4ODIyLCAwLjBdLCBbMTYwMTQyOTAyNy4xMDM0MDI5LCA4ODQzLCAwLjBdLCBbMTYwMTQyOTAzNS45MzEyNTQsIDg4NzgsIDAuMF0sIFsxNjAxNDI5MDM3LjY5NTQzMywgODg4NSwgMC4wXSwgWzE2MDE0MjkwNDEuNzM4NjQ3MiwgODkwMiwgMC4wXSwgWzE2MDE0MjkwNDIuMzE5MzYyNCwgODkwNCwgMC4wXSwgWzE2MDE0MjkwNDMuMTY3MDI4MiwgODkwNywgMC4wXSwgWzE2MDE0MjkwNDguMTM5MjQ5NiwgODkyOCwgMC4wXSwgWzE2MDE0MjkwNTAuMDM2MjA4NCwgODkzNSwgMC4wXSwgWzE2MDE0MjkwNTUuNTQzMjQwNSwgODk1OCwgMC4wXSwgWzE2MDE0MjkwNTkuODkwMDE2NiwgODk3NSwgMC4wXSwgWzE2MDE0MjkwNjQuMzMyODQ2NiwgODk5MywgMC4wXSwgWzE2MDE0MjkwNjUuODk2OTQ1MiwgODk5OSwgMC4wXSwgWzE2MDE0MjkwNjguMjMxOTk5NiwgOTAwOSwgMC4wXSwgWzE2MDE0MjkwNzkuNzk0MTkyNiwgOTA1NSwgMC4wXSwgWzE2MDE0MjkwODEuNjc0Mzc5OCwgOTA2MywgMC4wXSwgWzE2MDE0MjkwODYuOTk4Mzk1LCA5MDg0LCAwLjBdLCBbMTYwMTQyOTEwNC41NTQ3Njc0LCA5MTU1LCAwLjBdLCBbMTYwMTQyOTEyMi4zNTI1ODAzLCA5MjI2LCAwLjBdLCBbMTYwMTQyOTEyNC4wMTIzNTA2LCA5MjMzLCAwLjBdLCBbMTYwMTQyOTEzMC43ODQ5OTQxLCA5MjYwLCAwLjBdLCBbMTYwMTQyOTE0Mi40NDU1NjI2LCA5MzA3LCAwLjBdLCBbMTYwMTQyOTE0NC43MDEyMTIsIDkzMTYsIDAuMF0sIFsxNjAxNDI5MTUyLjU2NjczOTgsIDkzNDgsIDAuMF0sIFsxNjAxNDI5MTU3Ljg2NzAyNCwgOTM2OSwgMC4wXSwgWzE2MDE0MjkxNjguMzcxNDcxLCA5NDEyLCAwLjBdLCBbMTYwMTQyOTE2OS4wNzI0ODE5LCA5NDE1LCAwLjBdLCBbMTYwMTQyOTE3NC4xMzIzMjk1LCA5NDM1LCAwLjBdLCBbMTYwMTQyOTE3NS43NjY4Mjk1LCA5NDQyLCAwLjBdLCBbMTYwMTQyOTE4Mi4yMjAyODQsIDk0NjgsIDAuMF0sIFsxNjAxNDI5MTk5LjU4NDk0MjgsIDk1MzgsIDAuMF0sIFsxNjAxNDI5MjAxLjg1NTYwNTgsIDk1NDcsIDAuMF0sIFsxNjAxNDI5MjAzLjQ4OTU0MjUsIDk1NTQsIDAuMF0sIFsxNjAxNDI5MjA2Ljc3ODMzNCwgOTU2NywgMC4wXSwgWzE2MDE0MjkyMTIuMDcwNjY3NywgOTU4OSwgMC4wXSwgWzE2MDE0MjkyMjEuNzM3MTk1LCA5NjI3LCAwLjBdLCBbMTYwMTQyOTIyNy41NTQ2NzE1LCA5NjUxLCAwLjBdLCBbMTYwMTQyOTIyOS4xODUyNzM2LCA5NjU3LCAwLjBdLCBbMTYwMTQyOTIzNC43OTI3ODE4LCA5NjgwLCAwLjBdLCBbMTYwMTQyOTIzOS4yMTk1MzI1LCA5Njk4LCAwLjBdLCBbMTYwMTQyOTI1Ni42NjE1NzY1LCA5NzY4LCAwLjBdLCBbMTYwMTQyOTI2Ny41NTY1NzMyLCA5ODEyLCAwLjBdLCBbMTYwMTQyOTI3NC40Mzg0OTY4LCA5ODQwLCAwLjBdLCBbMTYwMTQyOTI3NS4xNDE1NTU1LCA5ODQzLCAwLjBdLCBbMTYwMTQyOTI4NS4yNDcxODg2LCA5ODgzLCAwLjBdLCBbMTYwMTQyOTI5MS4wNDY2ODM4LCA5OTA3LCAwLjBdLCBbMTYwMTQyOTMwNy4zOTk2MTgsIDk5NzIsIDAuMF0sIFsxNjAxNDI5MzI2LjQyODI1MDgsIDEwMDUwLCAwLjBdLCBbMTYwMTQyOTMyNy44Njc1OTg1LCAxMDA1NSwgMC4wXSwgWzE2MDE0MjkzMjguNzEyNDAzLCAxMDA1OCwgMC4wXSwgWzE2MDE0MjkzMzUuMDc4MDk4LCAxMDA4NCwgMC4wXSwgWzE2MDE0MjkzNDAuNjcxMjY1NCwgMTAxMDcsIDAuMF0sIFsxNjAxNDI5MzQ2LjAwNTczNzUsIDEwMTI4LCAwLjBdLCBbMTYwMTQyOTM1MC4xMzA5OTA3LCAxMDE0NCwgMC4wXSwgWzE2MDE0MjkzNTUuOTUxMTM5MiwgMTAxNjgsIDAuMF0sIFsxNjAxNDI5MzYwLjEzMzc5NDUsIDEwMTg1LCAwLjBdLCBbMTYwMTQyOTM3Ny44NDQ1MjYsIDEwMjU2LCAwLjBdLCBbMTYwMTQyOTM4Mi41ODE5Njc2LCAxMDI3NiwgMC4wXSwgWzE2MDE0MjkzODQuNDMwMjYyMywgMTAyODMsIDAuMF0sIFsxNjAxNDI5NDEyLjUyNzQxOTgsIDEwMzk2LCAwLjBdLCBbMTYwMTQyOTQxMy4zODE1NjMyLCAxMDM5OSwgMC4wXSwgWzE2MDE0Mjk0MTguNDY0NTI2NCwgMTA0MjAsIDAuMF0sIFsxNjAxNDI5NDE5LjcyMDMxMTQsIDEwNDI1LCAwLjBdLCBbMTYwMTQyOTQzMi45ODkzNTI3LCAxMDQ3OSwgMC4wXSwgWzE2MDE0Mjk0MzUuNjcwNDMwNCwgMTA0ODksIDAuMF0sIFsxNjAxNDI5NDM2LjYwMjE3MDUsIDEwNDkzLCAwLjBdLCBbMTYwMTQyOTQ0My44NjMzMDgyLCAxMDUyMiwgMC4wXSwgWzE2MDE0Mjk0NTEuNzYzMzkxMywgMTA1NTQsIDAuMF0sIFsxNjAxNDI5NDUxLjk5NTk3MiwgMTA1NTUsIDAuMF0sIFsxNjAxNDI5NDYyLjU5MzI2LCAxMDU5OCwgMC4wXSwgWzE2MDE0Mjk0NjQuOTgwNDQ3OCwgMTA2MDcsIDAuMF0sIFsxNjAxNDI5NDY5LjAwMzI4LCAxMDYyNCwgMC4wXSwgWzE2MDE0Mjk0NzAuNDI2MjAzNSwgMTA2MjksIDAuMF0sIFsxNjAxNDI5NDcyLjcwMjcyNzMsIDEwNjM4LCAwLjBdLCBbMTYwMTQyOTQ3Ni41Mjg5MTc2LCAxMDY1NCwgMC4wXSwgWzE2MDE0Mjk0ODAuODQyODAxMywgMTA2NzEsIDAuMF0sIFsxNjAxNDI5NDkwLjcxNjE2OTgsIDEwNzExLCAwLjBdLCBbMTYwMTQyOTUwMC4wNjU1OTksIDEwNzQ4LCAwLjBdLCBbMTYwMTQyOTUwMi4yMDI4NjksIDEwNzU3LCAwLjBdLCBbMTYwMTQyOTUwMi40MzU4MzgsIDEwNzU4LCAwLjBdLCBbMTYwMTQyOTUwOC4wNDQwOTc0LCAxMDc4MCwgMC4wXSwgWzE2MDE0Mjk1MDkuNzAwMjc1NCwgMTA3ODcsIDAuMF0sIFsxNjAxNDI5NTE2LjYyOTI3NDgsIDEwODE1LCAwLjBdLCBbMTYwMTQyOTUxOS4wNzI4OTY3LCAxMDgyNSwgMC4wXSwgWzE2MDE0Mjk1MjAuNTAzNzM0NiwgMTA4MzAsIDAuMF0sIFsxNjAxNDI5NTIzLjE3ODc5NzUsIDEwODQxLCAwLjBdLCBbMTYwMTQyOTUyNS4yNzMwODc1LCAxMDg1MCwgMC4wXSwgWzE2MDE0Mjk1MjguOTQ3NzA0MywgMTA4NjQsIDAuMF0sIFsxNjAxNDI5NTM4LjIzODE3NjMsIDEwOTAyLCAwLjBdLCBbMTYwMTQyOTUzOC45NDk3NjYyLCAxMDkwNSwgMC4wXSwgWzE2MDE0Mjk1NDcuNDI3MjA3NSwgMTA5MzksIDAuMF0sIFsxNjAxNDI5NTQ4LjU2NDQxOTMsIDEwOTQzLCAwLjBdLCBbMTYwMTQyOTU1NC4xNzUzNTcsIDEwOTY2LCAwLjBdLCBbMTYwMTQyOTU1NS43NzE3MTIzLCAxMDk3MiwgMC4wXSwgWzE2MDE0Mjk1NTYuMzQ3NTk3MSwgMTA5NzQsIDAuMF0sIFsxNjAxNDI5NTY2LjIwNzc2NCwgMTEwMTQsIDAuMF0sIFsxNjAxNDI5NTY3LjY0MzU5ODMsIDExMDIwLCAwLjBdLCBbMTYwMTQyOTU3MS4wNjQwMTIzLCAxMTAzMywgMC4wXSwgWzE2MDE0Mjk1NzIuMjMwNzIxNSwgMTEwMzgsIDAuMF0sIFsxNjAxNDI5NTg4LjE4OTE0NDEsIDExMTAyLCAwLjBdLCBbMTYwMTQyOTU5My4wNTcyMDI2LCAxMTEyMSwgMC4wXSwgWzE2MDE0Mjk1OTUuMTYyODk4OCwgMTExMzAsIDAuMF0sIFsxNjAxNDI5NTk5Ljc0NDY5MDIsIDExMTQ4LCAwLjBdLCBbMTYwMTQyOTYwNi4zNTg3MzI3LCAxMTE3NSwgMC4wXSwgWzE2MDE0Mjk2MTEuODk5NTMzNywgMTExOTgsIDAuMF0sIFsxNjAxNDI5NjEyLjUwMDM4MzEsIDExMjAwLCAwLjBdLCBbMTYwMTQyOTYxMi43ODgzOTQ3LCAxMTIwMSwgMC4wXSwgWzE2MDE0Mjk2MjcuNDI4NTUzOCwgMTEyNjAsIDAuMF0sIFsxNjAxNDI5NjMwLjQwMjY2OSwgMTEyNzIsIDAuMF0sIFsxNjAxNDI5NjM5Ljc4MDM0MiwgMTEzMTAsIDAuMF0sIFsxNjAxNDI5NjUyLjUwMjA0NDcsIDExMzYxLCAwLjBdLCBbMTYwMTQyOTY2Ni45Njc5MDE1LCAxMTQxOSwgMC4wXSwgWzE2MDE0Mjk2NzUuNzk4Njg0MSwgMTE0NTUsIDAuMF0sIFsxNjAxNDI5NjgwLjE2NDY0MywgMTE0NzIsIDAuMF0sIFsxNjAxNDI5Njg1LjI3MDA0MjcsIDExNDkyLCAwLjBdLCBbMTYwMTQyOTY5Mi44NzE3OTY0LCAxMTUyMywgMC4wXSwgWzE2MDE0Mjk2OTQuOTk3NjY4NSwgMTE1MzIsIDAuMF0sIFsxNjAxNDI5Njk5LjQxODc4OTYsIDExNTQ5LCAwLjBdLCBbMTYwMTQyOTcwMS4zMjI1OTgsIDExNTU3LCAwLjBdLCBbMTYwMTQyOTcwMy40NDYzMjgsIDExNTY2LCAwLjBdLCBbMTYwMTQyOTcxMS4xMzY4ODY0LCAxMTU5NywgMC4wXSwgWzE2MDE0Mjk3MjAuOTk4ODA5MywgMTE2MzYsIDAuMF0sIFsxNjAxNDI5NzIzLjgwOTg0NjIsIDExNjQ4LCAwLjBdLCBbMTYwMTQyOTcyNi44Mjc2MTYyLCAxMTY2MCwgMC4wXSwgWzE2MDE0Mjk3MjkuNjgxNDAyLCAxMTY3MSwgMC4wXSwgWzE2MDE0Mjk3MzIuOTg5MzI4NCwgMTE2ODUsIDAuMF0sIFsxNjAxNDI5NzMzLjU0NjcxMjIsIDExNjg3LCAwLjBdLCBbMTYwMTQyOTc0Mi42Nzk3NjcsIDExNzIzLCAwLjBdLCBbMTYwMTQyOTc1MS41MzM4OTM4LCAxMTc1OSwgMC4wXSwgWzE2MDE0Mjk3NTguMjM1MzE0MSwgMTE3ODYsIDAuMF0sIFsxNjAxNDI5NzYxLjc4NzEzODUsIDExODAxLCAwLjBdLCBbMTYwMTQyOTc2OS4yMzQwNTk4LCAxMTgzMSwgMC4wXSwgWzE2MDE0Mjk3NzkuNzU1NjAxMiwgMTE4NzMsIDAuMF0sIFsxNjAxNDI5Nzk0Ljc1MTc0MTYsIDExOTMzLCAwLjBdLCBbMTYwMTQyOTc5Ny44NzY1NjcsIDExOTQ2LCAwLjBdLCBbMTYwMTQyOTc5OC41MDk3NTUsIDExOTQ4LCAwLjBdLCBbMTYwMTQyOTgwMy42MjE0MTU2LCAxMTk2OSwgMC4wXSwgWzE2MDE0Mjk4MDQuODE1ODg3MiwgMTE5NzQsIDAuMF0sIFsxNjAxNDI5ODA4LjUxOTAyMjIsIDExOTg4LCAwLjBdLCBbMTYwMTQyOTgxMC44NjcyNzMzLCAxMTk5OCwgMC4wXSwgWzE2MDE0Mjk4MTIuMDc3MDQxNCwgMTIwMDMsIDAuMF0sIFsxNjAxNDI5ODE0LjA1ODg5MjcsIDEyMDEwLCAwLjBdLCBbMTYwMTQyOTgxOC41OTA0NjM2LCAxMjAyOSwgMC4wXSwgWzE2MDE0Mjk4MjEuNzk1MDcxOCwgMTIwNDEsIDAuMF0sIFsxNjAxNDI5ODQ1Ljc3MDg3NDMsIDEyMTM4LCAwLjBdLCBbMTYwMTQyOTg0OS42OTA3Mzg0LCAxMjE1MywgMC4wXSwgWzE2MDE0Mjk4NTIuMzA4MTY1NiwgMTIxNjQsIDAuMF0sIFsxNjAxNDI5ODUzLjI2NzM0ODUsIDEyMTY4LCAwLjBdLCBbMTYwMTQyOTg1Ny4zNTQ1MTY3LCAxMjE4NCwgMC4wXSwgWzE2MDE0Mjk4NjUuNTgwNzM0MywgMTIyMTcsIDAuMF0sIFsxNjAxNDI5ODY3LjY3NTQ3MjcsIDEyMjI2LCAwLjBdLCBbMTYwMTQyOTg4My41MTI0NTQ1LCAxMjI5MCwgMC4wXSwgWzE2MDE0Mjk4ODQuMzk2NjY2OCwgMTIyOTMsIDAuMF0sIFsxNjAxNDI5ODg4LjM5MDE0OTgsIDEyMzA5LCAwLjBdLCBbMTYwMTQyOTkxMC4xMTQ4NTA1LCAxMjM5NiwgMC4wXSwgWzE2MDE0Mjk5MTIuMjIyNTMwOCwgMTI0MDUsIDAuMF0sIFsxNjAxNDI5OTE5LjkwNTY5OTUsIDEyNDM2LCAwLjBdLCBbMTYwMTQyOTkyNS4zMjExODUsIDEyNDU4LCAwLjBdLCBbMTYwMTQyOTkzMC44MTI0MTYsIDEyNDgwLCAwLjBdLCBbMTYwMTQzMDAyOS4wMjYxMDY2LCAxMjU0NCwgMS4wXSwgWzE2MDE0MzAwMzEuNTY1MzM1MywgMTI1NTIsIDEuMF0sIFsxNjAxNDMwMDQ1LjcyMzcxMzYsIDEyNTk1LCAxLjBdLCBbMTYwMTQzMDA1NS4yNTAxMTI1LCAxMjYyNCwgMS4wXSwgWzE2MDE0MzAwNzAuMzUzNjkzMiwgMTI2NzAsIDEuMF0sIFsxNjAxNDMwMDc5LjMzMTk1NSwgMTI2OTgsIDEuMF0sIFsxNjAxNDMwMDk3LjkyMTEzOSwgMTI3NTcsIDEuMF0sIFsxNjAxNDMwMTAyLjMyNTk4NTQsIDEyNzczLCAxLjBdLCBbMTYwMTQzMDExMC4wMjY1MzA3LCAxMjgwNCwgMS4wXSwgWzE2MDE0MzAxMTcuMjI2NzkzOCwgMTI4MzMsIDEuMF0sIFsxNjAxNDMwMTIzLjQ5MjM0OSwgMTI4NTgsIDEuMF0sIFsxNjAxNDMwMTI0LjY3ODA1MDMsIDEyODYzLCAxLjBdLCBbMTYwMTQzMDEyNy43MjgwODc3LCAxMjg3NiwgMS4wXSwgWzE2MDE0MzAxMzIuNjEzNDkxOCwgMTI4OTUsIDEuMF0sIFsxNjAxNDMwMTQzLjI4OTQyNDQsIDEyOTM4LCAxLjBdLCBbMTYwMTQzMDE0OC4xNDE2NzAyLCAxMjk1OCwgMS4wXSwgWzE2MDE0MzAxNjIuNTIyNTM3LCAxMzAxNiwgMS4wXSwgWzE2MDE0MzAxNjYuOTA2MDMyLCAxMzAzMywgMS4wXSwgWzE2MDE0MzAxNzMuNjc0MTUxNCwgMTMwNjAsIDEuMF0sIFsxNjAxNDMwMTczLjkwNzcwOTEsIDEzMDYxLCAxLjBdLCBbMTYwMTQzMDE3NS43OTI1NDEzLCAxMzA2OSwgMS4wXSwgWzE2MDE0MzAxNzguODI2MzQ3OCwgMTMwODEsIDEuMF0sIFsxNjAxNDMwMTgxLjg4MzkwMjMsIDEzMDkzLCAxLjBdLCBbMTYwMTQzMDE4NS41MTUzMTc3LCAxMzEwOCwgMS4wXSwgWzE2MDE0MzAxODYuNjYwODY5NiwgMTMxMTIsIDEuMF0sIFsxNjAxNDMwMTkwLjc2NzI4NzcsIDEzMTI5LCAxLjBdLCBbMTYwMTQzMDE5OS42NzI2MTksIDEzMTY1LCAxLjBdLCBbMTYwMTQzMDIwMy40OTMzNTEsIDEzMTgwLCAxLjBdLCBbMTYwMTQzMDIwNS44NTUzODk4LCAxMzE5MCwgMS4wXSwgWzE2MDE0MzAyMDYuNTU4NTAxNSwgMTMxOTMsIDEuMF0sIFsxNjAxNDMwMjA5Ljc4NjM3ODEsIDEzMjA1LCAxLjBdLCBbMTYwMTQzMDIxMC4wMTc0OTc4LCAxMzIwNiwgMS4wXSwgWzE2MDE0MzAyMTAuOTQxODcsIDEzMjEwLCAxLjBdLCBbMTYwMTQzMDIxNy44NjY3MjUsIDEzMjM4LCAxLjBdLCBbMTYwMTQzMDIzNi4xNjcyNTA5LCAxMzMxMiwgMS4wXSwgWzE2MDE0MzAyNDUuMjQ3ODg0MywgMTMzNDgsIDEuMF0sIFsxNjAxNDMwMjU4LjMxODMyNjcsIDEzNDAxLCAxLjBdLCBbMTYwMTQzMDI1OS4zMzMyMDQ3LCAxMzQwNSwgMS4wXSwgWzE2MDE0MzAyNjQuMTI0OTM4LCAxMzQyNSwgMS4wXSwgWzE2MDE0MzAyNzYuMzM4NTk3MywgMTM0NzQsIDEuMF0sIFsxNjAxNDMwMjgzLjU2MjQ5MiwgMTM1MDMsIDEuMF0sIFsxNjAxNDMwMjk0LjA4NjQwNDgsIDEzNTQ1LCAxLjBdLCBbMTYwMTQzMDMwNi41ODU0MDQ5LCAxMzU5NiwgMS4wXSwgWzE2MDE0MzAzMTAuNDg0MTEsIDEzNjExLCAxLjBdLCBbMTYwMTQzMDMxMi4zNzczNTQxLCAxMzYxOSwgMS4wXSwgWzE2MDE0MzAzMTMuODQ0MDE0NiwgMTM2MjUsIDEuMF0sIFsxNjAxNDMwMzI2LjkzNjg1MywgMTM2NzgsIDEuMF0sIFsxNjAxNDMwMzI3LjY0MzQxNjIsIDEzNjgxLCAxLjBdLCBbMTYwMTQzMDMzMS4wNDMxMzA5LCAxMzY5NCwgMS4wXSwgWzE2MDE0MzAzMzcuNzY3OTA5MywgMTM3MjEsIDEuMF0sIFsxNjAxNDMwMzQzLjk5NDczMDcsIDEzNzQ2LCAxLjBdLCBbMTYwMTQzMDM0NS43MzY0MjQ0LCAxMzc1MywgMS4wXSwgWzE2MDE0MzAzNTEuMjkxMzU0NywgMTM3NzUsIDEuMF0sIFsxNjAxNDMwMzU5LjcyMjA2NzYsIDEzODA5LCAxLjBdLCBbMTYwMTQzMDM2OC4zMDczMjM3LCAxMzg0NCwgMS4wXSwgWzE2MDE0MzAzNzQuMDc2NjMyNSwgMTM4NjcsIDEuMF0sIFsxNjAxNDMwMzc3LjgzMzQ2NjgsIDEzODgzLCAxLjBdLCBbMTYwMTQzMDM5MS4xNTI4NDMsIDEzOTM2LCAxLjBdLCBbMTYwMTQzMDM5Ni4yNTM1NzAzLCAxMzk1NiwgMS4wXSwgWzE2MDE0MzAzOTYuOTY3Nzk0LCAxMzk1OSwgMS4wXSwgWzE2MDE0MzAzOTkuMDc5NzExNCwgMTM5NjgsIDEuMF0sIFsxNjAxNDMwMzk5LjMxMjc4OTIsIDEzOTY5LCAxLjBdLCBbMTYwMTQzMDQwMC45NTY5NDYsIDEzOTc1LCAxLjBdLCBbMTYwMTQzMDQwNS44MTU2NjI5LCAxMzk5NSwgMS4wXSwgWzE2MDE0MzA0MDYuMjk0Njg4MiwgMTM5OTcsIDEuMF0sIFsxNjAxNDMwNDI2LjgzMDcwNTYsIDE0MDc5LCAxLjBdLCBbMTYwMTQzMDQ0Ni44OTcwNDI1LCAxNDE2MCwgMS4wXSwgWzE2MDE0MzA0NjEuNzg0NDAzLCAxNDIyMCwgMS4wXSwgWzE2MDE0MzA0NjMuMjEwMzMzMywgMTQyMjYsIDEuMF0sIFsxNjAxNDMwNDY5LjAyNzQwNiwgMTQyNDksIDEuMF0sIFsxNjAxNDMwNDc4LjE1OTkxNzgsIDE0Mjg2LCAxLjBdLCBbMTYwMTQzMDQ3OC4zOTg0OTQsIDE0Mjg3LCAxLjBdLCBbMTYwMTQzMDQ4MC4wODI5MzEsIDE0MjkzLCAxLjBdLCBbMTYwMTQzMDQ4Mi4zMDc1ODE3LCAxNDMwMiwgMS4wXSwgWzE2MDE0MzA0ODYuNDU2Nzg0NSwgMTQzMTksIDEuMF0sIFsxNjAxNDMwNDg5LjQ4MDAzOSwgMTQzMzEsIDEuMF0sIFsxNjAxNDMwNDkwLjg5MzUzODIsIDE0MzM3LCAxLjBdLCBbMTYwMTQzMDUwNS41NTU4OTcsIDE0Mzk2LCAxLjBdLCBbMTYwMTQzMDUxOC4wNTA5MDI0LCAxNDQ0NiwgMS4wXSwgWzE2MDE0MzA1MjkuNTc4Mzc4NywgMTQ0OTMsIDEuMF0sIFsxNjAxNDMwNTM4LjcyODY1MywgMTQ1MjksIDEuMF0sIFsxNjAxNDMwNTQ0LjcwMTE3MzMsIDE0NTUzLCAxLjBdLCBbMTYwMTQzMDU0NS40NjY0NDY2LCAxNDU1NiwgMS4wXSwgWzE2MDE0MzA1NjMuODk0NjcwMiwgMTQ2MzEsIDEuMF0sIFsxNjAxNDMwNTY1LjUzNzg0NjgsIDE0NjM3LCAxLjBdLCBbMTYwMTQzMDU3Mi45NzI4MDYsIDE0NjY3LCAxLjBdLCBbMTYwMTQzMDU3NS4xOTYxNDQzLCAxNDY3NiwgMS4wXSwgWzE2MDE0MzA1NzYuMTM3NTkzMywgMTQ2ODAsIDEuMF0sIFsxNjAxNDMwNTc3LjU1NTYxNTcsIDE0Njg2LCAxLjBdLCBbMTYwMTQzMDU5Mi4xOTk3ODkzLCAxNDc0NSwgMS4wXSwgWzE2MDE0MzA2MDAuNDI1MTQ1OSwgMTQ3NzgsIDEuMF0sIFsxNjAxNDMwNjAwLjY5Nzc3MDgsIDE0Nzc5LCAxLjBdLCBbMTYwMTQzMDYwMi44NjUwNDYsIDE0Nzg3LCAxLjBdLCBbMTYwMTQzMDYwMy44MDEyOTYyLCAxNDc5MSwgMS4wXSwgWzE2MDE0MzA2MDguMDA1MzM4LCAxNDgwOCwgMS4wXSwgWzE2MDE0MzA2MDkuNjMyOTkwMSwgMTQ4MTQsIDEuMF0sIFsxNjAxNDMwNjE3LjMzMzc4NDMsIDE0ODQ1LCAxLjBdLCBbMTYwMTQzMDYyNC4wODQ1MTk2LCAxNDg3MiwgMS4wXSwgWzE2MDE0MzA2MjguNTg3NjM1NSwgMTQ4OTEsIDEuMF0sIFsxNjAxNDMwNjM2LjkxMzQzNywgMTQ5MjQsIDEuMF0sIFsxNjAxNDMwNjM3LjE4Nzg0NzEsIDE0OTI1LCAxLjBdLCBbMTYwMTQzMDY0Mi45MjYyNjI0LCAxNDk0OSwgMS4wXSwgWzE2MDE0MzA2NjIuMjE3ODg5MywgMTUwMjYsIDEuMF0sIFsxNjAxNDMwNjc3LjgzNzM3NDQsIDE1MDg5LCAxLjBdLCBbMTYwMTQzMDY4OC40NTA0NDM3LCAxNTEzMSwgMS4wXSwgWzE2MDE0MzA2ODkuNDAzNTM1NiwgMTUxMzUsIDEuMF0sIFsxNjAxNDMwNzAwLjAyOTU3MzIsIDE1MTc5LCAxLjBdLCBbMTYwMTQzMDcwNC45MTExMTc4LCAxNTE5OCwgMS4wXSwgWzE2MDE0MzA3MTQuMDI0NzcxLCAxNTIzNSwgMS4wXSwgWzE2MDE0MzA3MjEuNTc3MDg0OCwgMTUyNjUsIDEuMF0sIFsxNjAxNDMwNzIzLjUyNTU1NCwgMTUyNzIsIDEuMF0sIFsxNjAxNDMwNzM1Ljg3NTk1NjgsIDE1MzIzLCAxLjBdLCBbMTYwMTQzMDc0MC4xNzQ2NzksIDE1MzQwLCAxLjBdLCBbMTYwMTQzMDc0MS41OTI1MjY0LCAxNTM0NiwgMS4wXSwgWzE2MDE0MzA3NjAuNDA2Njc2OCwgMTU0MjEsIDEuMF0sIFsxNjAxNDMwNzYxLjgxODgxNzEsIDE1NDI3LCAxLjBdLCBbMTYwMTQzMDc2OC43NzgyMjUsIDE1NDU1LCAxLjBdLCBbMTYwMTQzMDc3My4wOTg1MTgxLCAxNTQ3MiwgMS4wXSwgWzE2MDE0MzA3NzMuNjYxMTc4NiwgMTU0NzQsIDEuMF0sIFsxNjAxNDMwNzgxLjY5MDc5MDcsIDE1NTA2LCAxLjBdLCBbMTYwMTQzMDc4OS4zODMyNzEyLCAxNTUzNywgMS4wXSwgWzE2MDE0MzA4MDQuMTUxOTk4LCAxNTU5NiwgMS4wXSwgWzE2MDE0MzA4MDYuNzU4MjQ0NSwgMTU2MDcsIDEuMF0sIFsxNjAxNDMwODM5LjgyODI5NiwgMTU3MzksIDEuMF0sIFsxNjAxNDMwODQ1Ljg3NTg2MywgMTU3NjMsIDEuMF0sIFsxNjAxNDMwODQ3Ljk4MTQ3MTUsIDE1NzcyLCAxLjBdLCBbMTYwMTQzMDg0OS40MDcxMjMsIDE1Nzc4LCAxLjBdLCBbMTYwMTQzMDg2MC45NjE1MDUsIDE1ODI0LCAxLjBdLCBbMTYwMTQzMDg2MS42NjM4MzM5LCAxNTgyNywgMS4wXSwgWzE2MDE0MzA4NjYuNDI4NTcyNCwgMTU4NDYsIDEuMF0sIFsxNjAxNDMwODcxLjA2MjIzNjMsIDE1ODY1LCAxLjBdLCBbMTYwMTQzMDg5OS4zNDU3NTg3LCAxNTk3OCwgMS4wXSwgWzE2MDE0MzA5MDEuMzU0MzgwNiwgMTU5ODYsIDEuMF0sIFsxNjAxNDMwOTAzLjAzMjI1NzgsIDE1OTkyLCAxLjBdLCBbMTYwMTQzMDkxOC42MjQ1Mzk0LCAxNjA1NSwgMS4wXSwgWzE2MDE0MzA5MjguMTg4NjE2LCAxNjA5NCwgMS4wXSwgWzE2MDE0MzA5MzMuNTI1MDM5LCAxNjExNSwgMS4wXSwgWzE2MDE0MzA5NDguMTYwMzIzOSwgMTYxNzQsIDEuMF0sIFsxNjAxNDMwOTUxLjM5NjE2MiwgMTYxODcsIDEuMF0sIFsxNjAxNDMwOTUzLjk2NTQ5ODcsIDE2MTk3LCAxLjBdLCBbMTYwMTQzMDk1NC45MjA1MjY1LCAxNjIwMSwgMS4wXSwgWzE2MDE0MzA5NjYuNzAyMzcwMiwgMTYyNDgsIDEuMF0sIFsxNjAxNDMwOTg0LjMxNjM4NDMsIDE2MzIwLCAxLjBdLCBbMTYwMTQzMDk4OS44NTI4NDgzLCAxNjM0MiwgMS4wXSwgWzE2MDE0MzA5OTMuODkzNDcyLCAxNjM1OSwgMS4wXSwgWzE2MDE0MzA5OTguODYwODAwNSwgMTYzNzksIDEuMF0sIFsxNjAxNDMxMDA1LjMwNzQ5MSwgMTY0MDUsIDEuMF0sIFsxNjAxNDMxMDEzLjY4NjQ5NDQsIDE2NDM5LCAxLjBdLCBbMTYwMTQzMTAxNi4wMzMxOTAzLCAxNjQ0OCwgMS4wXSwgWzE2MDE0MzEwMjkuOTM1MjQ1OCwgMTY1MDQsIDEuMF0sIFsxNjAxNDMxMDQzLjIxMDc3MzUsIDE2NTU4LCAxLjBdLCBbMTYwMTQzMTA0OS43MDk5NzQ4LCAxNjU4NCwgMS4wXSwgWzE2MDE0MzEwNTAuOTQ2OTc5OCwgMTY1ODksIDEuMF0sIFsxNjAxNDMxMDY4Ljc2NTY5MiwgMTY2NjAsIDEuMF0sIFsxNjAxNDMxMDY5LjcwNzc2NiwgMTY2NjQsIDEuMF0sIFsxNjAxNDMxMDc3LjY1MzQ4OTYsIDE2Njk2LCAxLjBdLCBbMTYwMTQzMTA4OS45MjkzODAyLCAxNjc0NSwgMS4wXSwgWzE2MDE0MzExMDIuOTg5MDY1MiwgMTY3OTcsIDEuMF0sIFsxNjAxNDMxMTA1LjM2NDI4NjIsIDE2ODA3LCAxLjBdLCBbMTYwMTQzMTEwNS42MDIxNDA0LCAxNjgwOCwgMS4wXSwgWzE2MDE0MzExMTEuOTU0NjE1OCwgMTY4MzMsIDEuMF0sIFsxNjAxNDMxMTE0LjA4NDY0MDMsIDE2ODQyLCAxLjBdLCBbMTYwMTQzMTExNy43MzkyNjE2LCAxNjg1NiwgMS4wXSwgWzE2MDE0MzExMjguMTI1NjY4MywgMTY4OTgsIDEuMF0sIFsxNjAxNDMxMTM0LjM0NDg5MTUsIDE2OTIzLCAxLjBdLCBbMTYwMTQzMTE1My4yNzY5Njk0LCAxNjk5OCwgMS4wXSwgWzE2MDE0MzExNjkuODM2NzczNCwgMTcwNjUsIDEuMF0sIFsxNjAxNDMxMTc3LjUyNDg4NTIsIDE3MDk2LCAxLjBdLCBbMTYwMTQzMTE4NS44NTI3MTQ4LCAxNzEzMCwgMS4wXSwgWzE2MDE0MzExOTEuNjQ4ODEyNSwgMTcxNTMsIDEuMF0sIFsxNjAxNDMxMjAwLjk2NzE4MjQsIDE3MTkxLCAxLjBdLCBbMTYwMTQzMTIwMi4zODI0MTQ4LCAxNzE5NiwgMS4wXSwgWzE2MDE0MzEyMDMuNzAyNjMzNCwgMTcyMDEsIDEuMF0sIFsxNjAxNDMxMjEyLjg2MjI1ODIsIDE3MjM4LCAxLjBdLCBbMTYwMTQzMTIxNC43NTU1NSwgMTcyNDYsIDEuMF0sIFsxNjAxNDMxMjE4LjM5NjA5MiwgMTcyNjAsIDEuMF0sIFsxNjAxNDMxMjIwLjk2OTMzNjMsIDE3MjcxLCAxLjBdLCBbMTYwMTQzMTIyNS42MTY5NDgxLCAxNzI4OSwgMS4wXSwgWzE2MDE0MzEyMjYuMTExNDEwNiwgMTcyOTEsIDEuMF0sIFsxNjAxNDMxMjMxLjk1NTYxMzQsIDE3MzE0LCAxLjBdLCBbMTYwMTQzMTIzMi4xODc1MDc5LCAxNzMxNSwgMS4wXSwgWzE2MDE0MzEyMzIuNDE5MDkxLCAxNzMxNiwgMS4wXSwgWzE2MDE0MzEyMzMuMTE5MTMyNSwgMTczMTksIDEuMF0sIFsxNjAxNDMxMjM3Ljc1NzE0OTIsIDE3MzM4LCAxLjBdLCBbMTYwMTQzMTI0Ni41MzczMjIsIDE3MzczLCAxLjBdLCBbMTYwMTQzMTI1MC41MzgwMTY2LCAxNzM5MCwgMS4wXSwgWzE2MDE0MzEyNTQuMjY0NDE5LCAxNzQwNCwgMS4wXSwgWzE2MDE0MzEyNTkuNTA1ODgxOCwgMTc0MjUsIDEuMF0sIFsxNjAxNDMxMjYyLjAyMDM1MTIsIDE3NDM1LCAxLjBdLCBbMTYwMTQzMTI2My45MDI2OTY0LCAxNzQ0MywgMS4wXSwgWzE2MDE0MzEyNjYuNDIxNDUzNywgMTc0NTMsIDEuMF0sIFsxNjAxNDMxMjc4LjU5Mjg0OCwgMTc1MDIsIDEuMF0sIFsxNjAxNDMxMjgwLjYxOTM2MDIsIDE3NTEwLCAxLjBdLCBbMTYwMTQzMTI4OC43MDkwMDg3LCAxNzU0MiwgMS4wXSwgWzE2MDE0MzEyOTIuMDU4MDYyLCAxNzU1NiwgMS4wXSwgWzE2MDE0MzEyOTMuNDYyNDEwNCwgMTc1NjIsIDEuMF0sIFsxNjAxNDMxMjk3LjEzNTYyOSwgMTc1NzYsIDEuMF0sIFsxNjAxNDMxMjk5LjI5ODI1OTUsIDE3NTg1LCAxLjBdLCBbMTYwMTQzMTMwMC45NjMxNzkzLCAxNzU5MiwgMS4wXSwgWzE2MDE0MzEzMDEuMTk3NzMzLCAxNzU5MywgMS4wXSwgWzE2MDE0MzEzMDIuMzM1ODY5LCAxNzU5NywgMS4wXSwgWzE2MDE0MzEzMDguNDM4NTQwMiwgMTc2MjIsIDEuMF0sIFsxNjAxNDMxMzExLjE0NjI4MTcsIDE3NjMyLCAxLjBdLCBbMTYwMTQzMTMxNS45MTE5MTcyLCAxNzY1MiwgMS4wXSwgWzE2MDE0MzEzMTkuNTUyODcwNSwgMTc2NjYsIDEuMF0sIFsxNjAxNDMxMzI4LjM4NTM3NywgMTc3MDIsIDEuMF0sIFsxNjAxNDMxMzMwLjM3MTYyNTcsIDE3NzEwLCAxLjBdLCBbMTYwMTQzMTMzMy4yMjQ1MiwgMTc3MjEsIDEuMF0sIFsxNjAxNDMxMzQ1LjQzMDkxMzcsIDE3NzcwLCAxLjBdLCBbMTYwMTQzMTM0NS43MTYxNTg0LCAxNzc3MSwgMS4wXSwgWzE2MDE0MzEzNDcuMDQzMjIyNywgMTc3NzYsIDEuMF0sIFsxNjAxNDMxMzUzLjg1NzEzMDUsIDE3ODAzLCAxLjBdLCBbMTYwMTQzMTM2My4xODg4NDc4LCAxNzg0MSwgMS4wXSwgWzE2MDE0MzEzOTAuODExNjc4LCAxNzk1MiwgMS4wXSwgWzE2MDE0MzEzOTIuOTQ5MTE5NiwgMTc5NjEsIDEuMF0sIFsxNjAxNDMxMzk3LjA5NzA0MjMsIDE3OTc3LCAxLjBdLCBbMTYwMTQzMTM5Ny43OTY3NjYsIDE3OTgwLCAxLjBdLCBbMTYwMTQzMTM5OS45NTE1MDIzLCAxNzk4OSwgMS4wXSwgWzE2MDE0MzE0MDYuOTUzMzA3OSwgMTgwMTcsIDEuMF0sIFsxNjAxNDMxNDE1LjQzMDAyMTMsIDE4MDUxLCAxLjBdLCBbMTYwMTQzMTQxNS42NjM2NDQzLCAxODA1MiwgMS4wXSwgWzE2MDE0MzE0MTguODkxNzQzLCAxODA2NCwgMS4wXSwgWzE2MDE0MzE0MjguNDI2NzkxNCwgMTgxMDMsIDEuMF0sIFsxNjAxNDMxNDM0LjY3MjM4MTQsIDE4MTI4LCAxLjBdLCBbMTYwMTQzMTQzOS4wMDg2MDc0LCAxODE0NSwgMS4wXSwgWzE2MDE0MzE0NDkuNzYyMzU2MywgMTgxODksIDEuMF0sIFsxNjAxNDMxNDU1LjgxNjA2NSwgMTgyMTMsIDEuMF0sIFsxNjAxNDMxNDYxLjQxMTYwMzUsIDE4MjM1LCAxLjBdLCBbMTYwMTQzMTQ2OC40MjQ5NzksIDE4MjYzLCAxLjBdLCBbMTYwMTQzMTQ4MS44NTIxOTQzLCAxODMxNywgMS4wXSwgWzE2MDE0MzE0ODIuNjE0MDc5LCAxODMyMCwgMS4wXSwgWzE2MDE0MzE0OTIuNTkwNzE4LCAxODM2MSwgMS4wXSwgWzE2MDE0MzE0OTQuNDYyNDk4LCAxODM2OSwgMS4wXSwgWzE2MDE0MzE1MTQuNzgzMjI4NiwgMTg0NTAsIDEuMF0sIFsxNjAxNDMxNTE1LjAyMTUwMDYsIDE4NDUxLCAxLjBdLCBbMTYwMTQzMTUzNi42OTEwNzY4LCAxODUzOCwgMS4wXSwgWzE2MDE0MzE1MzguNzk5MjAzNCwgMTg1NDYsIDEuMF0sIFsxNjAxNDMxNTUwLjAyMzI1NTYsIDE4NTkxLCAxLjBdLCBbMTYwMTQzMTU2NC45MTI5MDc2LCAxODY1MSwgMS4wXSwgWzE2MDE0MzE1NzkuOTEzMjMwNywgMTg3MTIsIDEuMF0sIFsxNjAxNDMxNTgxLjgwMzAyMjQsIDE4NzE5LCAxLjBdLCBbMTYwMTQzMTU4OC45ODI5NjYyLCAxODc0OCwgMS4wXSwgWzE2MDE0MzE1OTguMTgyMjUxNSwgMTg3ODUsIDEuMF0sIFsxNjAxNDMxNjAyLjI4MDYzNDQsIDE4ODAyLCAxLjBdLCBbMTYwMTQzMTYxMi44MjY5NTkxLCAxODg0NCwgMS4wXSwgWzE2MDE0MzE2MjQuNzc4ODA2MiwgMTg4OTIsIDEuMF0sIFsxNjAxNDMxNjM0Ljg0Nzc4OTMsIDE4OTMyLCAxLjBdLCBbMTYwMTQzMTY0MS4xMDQ2Nzg0LCAxODk1NywgMS4wXSwgWzE2MDE0MzE2NDUuNjkwNjcxNCwgMTg5NzYsIDEuMF0sIFsxNjAxNDMxNjQ3LjExNjMyOTcsIDE4OTgxLCAxLjBdLCBbMTYwMTQzMTY1Mi42MTUzNDU1LCAxOTAwNCwgMS4wXSwgWzE2MDE0MzE2NTQuMDIwMDIzOCwgMTkwMDksIDEuMF0sIFsxNjAxNDMxNjU1LjIyOTM2NywgMTkwMTQsIDEuMF0sIFsxNjAxNDMxNjU4LjA1MjE1ODgsIDE5MDI2LCAxLjBdLCBbMTYwMTQzMTY2My4zMzU3OTA0LCAxOTA0NywgMS4wXSwgWzE2MDE0MzE2NzQuOTQ0NDQzNywgMTkwOTQsIDEuMF0sIFsxNjAxNDMxNjgwLjA1MTg2MzIsIDE5MTE1LCAxLjBdLCBbMTYwMTQzMTY4OS40MzkzNTIsIDE5MTUyLCAxLjBdLCBbMTYwMTQzMTY5My4yOTA2NDQ0LCAxOTE2OCwgMS4wXSwgWzE2MDE0MzE3MDcuNjU2MTc3LCAxOTIyNiwgMS4wXSwgWzE2MDE0MzE3MTguNzIzMDk3LCAxOTI3MCwgMS4wXSwgWzE2MDE0MzE3MTkuNjczMDY0NSwgMTkyNzQsIDEuMF0sIFsxNjAxNDMxNzI1Ljk5MzY1OTUsIDE5Mjk5LCAxLjBdLCBbMTYwMTQzMTczMi40MzAwOTM1LCAxOTMyNSwgMS4wXSwgWzE2MDE0MzE3NTMuMjQ5NzQyNSwgMTk0MDksIDEuMF0sIFsxNjAxNDMxNzU0LjU4MTAxLCAxOTQxNCwgMS4wXSwgWzE2MDE0MzE3NjYuNzM0NjExNywgMTk0NjQsIDEuMF0sIFsxNjAxNDMxNzcxLjY5MjM1OTQsIDE5NDg0LCAxLjBdLCBbMTYwMTQzMTc3NS42MDU5MzA2LCAxOTQ5OSwgMS4wXSwgWzE2MDE0MzE3NzYuMzIwNTUxLCAxOTUwMiwgMS4wXSwgWzE2MDE0MzE3ODEuNjE0ODgxOCwgMTk1MjQsIDEuMF0sIFsxNjAxNDMxNzgzLjI2MzIxMDgsIDE5NTMwLCAxLjBdLCBbMTYwMTQzMTc4OC43NTkwMzA4LCAxOTU1MywgMS4wXSwgWzE2MDE0MzE3OTQuODM0Mzk0NSwgMTk1NzgsIDEuMF0sIFsxNjAxNDMxNzk1LjM2NDExMjksIDE5NTgwLCAxLjBdLCBbMTYwMTQzMTc5OC43MjQ0MjMyLCAxOTU5MywgMS4wXSwgWzE2MDE0MzE4MDguNDU2NzM1NCwgMTk2MzMsIDEuMF0sIFsxNjAxNDMxODA5Ljk0MDEyMzYsIDE5NjM5LCAxLjBdLCBbMTYwMTQzMTgxMy41MTMwMzQ4LCAxOTY1MywgMS4wXSwgWzE2MDE0MzE4MTYuMDc2MTUxOCwgMTk2NjQsIDEuMF0sIFsxNjAxNDMxODE4LjUwOTU5MTYsIDE5NjczLCAxLjBdLCBbMTYwMTQzMTgyOS43MTQ1MTU3LCAxOTcxOSwgMS4wXSwgWzE2MDE0MzE4MzEuNDcwNjE2MywgMTk3MjYsIDEuMF0sIFsxNjAxNDMxODMyLjYwNzE3MzIsIDE5NzMwLCAxLjBdLCBbMTYwMTQzMTgzNC4wNzIwODczLCAxOTczNiwgMS4wXSwgWzE2MDE0MzE4NDguNzgxMzA5NiwgMTk3OTUsIDEuMF0sIFsxNjAxNDMxODU1LjQ1OTgxNDMsIDE5ODIyLCAxLjBdLCBbMTYwMTQzMTg2MS4yMjkzMzQ4LCAxOTg0NSwgMS4wXSwgWzE2MDE0MzE4NzguNDYyMzg2MSwgMTk5MTUsIDEuMF0sIFsxNjAxNDMxODgwLjgxNjYyNjUsIDE5OTI1LCAxLjBdLCBbMTYwMTQzMTg4NC4wMzI3NzAyLCAxOTkzNywgMS4wXSwgWzE2MDE0MzE4OTIuMTQwMTc2MywgMTk5NzAsIDEuMF0sIFsxNjAxNDMxODk0LjAwNzAwOSwgMTk5NzgsIDEuMF0sIFsxNjAxNDMxODk2LjI5NzM2NjksIDE5OTg3LCAxLjBdLCBbMTYwMTQzMTg5OC4xMDUzMTI2LCAxOTk5NCwgMS4wXSwgWzE2MDE0MzE5MDcuODc4MzI5MywgMjAwMzQsIDEuMF0sIFsxNjAxNDMxOTExLjMyMTAxMDgsIDIwMDQ3LCAxLjBdLCBbMTYwMTQzMTkxMi41NzI5MDQ2LCAyMDA1MiwgMS4wXSwgWzE2MDE0MzE5MTMuOTg2OTM5NCwgMjAwNTgsIDEuMF0sIFsxNjAxNDMxOTE0LjY4OTQ4NDEsIDIwMDYxLCAxLjBdLCBbMTYwMTQzMTkzMy42Mjk2MDA4LCAyMDEzNywgMS4wXSwgWzE2MDE0MzE5MzMuODYwMTY1NiwgMjAxMzgsIDEuMF0sIFsxNjAxNDMxOTM0LjMyNjA4OTQsIDIwMTQwLCAxLjBdLCBbMTYwMTQzMTk0NC41MTAwNzg0LCAyMDE4MiwgMS4wXSwgWzE2MDE0MzE5NDUuMjE3NDA5NCwgMjAxODUsIDEuMF0sIFsxNjAxNDMxOTUzLjAxOTU2MzQsIDIwMjE2LCAxLjBdLCBbMTYwMTQzMTk1OS42MDk5MDEsIDIwMjQzLCAxLjBdLCBbMTYwMTQzMTk2MC40NDAzNTYzLCAyMDI0NiwgMS4wXSwgWzE2MDE0MzE5NjEuODExODY1LCAyMDI1MSwgMS4wXSwgWzE2MDE0MzE5NzEuNzM1Mzg4OCwgMjAyOTIsIDEuMF0sIFsxNjAxNDMxOTc1LjU4NTgyMTQsIDIwMzA3LCAxLjBdLCBbMTYwMTQzMTk3OS4yMzc1MDU0LCAyMDMyMiwgMS4wXSwgWzE2MDE0MzE5ODEuNDE4MDUyLCAyMDMzMSwgMS4wXSwgWzE2MDE0MzE5ODEuOTgwNDI5NCwgMjAzMzMsIDEuMF0sIFsxNjAxNDMxOTg2LjY4NTI5OTIsIDIwMzUyLCAxLjBdLCBbMTYwMTQzMTk5MS42OTIzMzQ3LCAyMDM3MiwgMS4wXSwgWzE2MDE0MzE5OTQuMDQyNDMyNSwgMjAzODIsIDEuMF0sIFsxNjAxNDMxOTk3LjY1MzI0NjksIDIwMzk2LCAxLjBdLCBbMTYwMTQzMjAwNy42NzE1MzEsIDIwNDM3LCAxLjBdLCBbMTYwMTQzMjAwOC4xMzU0OTg1LCAyMDQzOSwgMS4wXSwgWzE2MDE0MzIwMTMuNzI0MTkwMiwgMjA0NjEsIDEuMF0sIFsxNjAxNDMyMDE5LjQ2MjUwOTIsIDIwNDg0LCAxLjBdLCBbMTYwMTQzMjAyOS41MTc5MTE0LCAyMDUyNSwgMS4wXSwgWzE2MDE0MzIwMzIuODkzMTgxOCwgMjA1MzgsIDEuMF0sIFsxNjAxNDMyMDMzLjE0MTE1NCwgMjA1MzksIDEuMF0sIFsxNjAxNDMyMDM3LjYxODAxMDMsIDIwNTU4LCAxLjBdLCBbMTYwMTQzMjAzNy44NTM1NjA3LCAyMDU1OSwgMS4wXSwgWzE2MDE0MzIwMzguNDA1OTk0MiwgMjA1NjEsIDEuMF0sIFsxNjAxNDMyMDM5LjgyMTI1NywgMjA1NjYsIDEuMF0sIFsxNjAxNDMyMDQyLjQ4OTI4NiwgMjA1NzcsIDEuMF0sIFsxNjAxNDMyMDYwLjU3MjY1MDIsIDIwNjUwLCAxLjBdLCBbMTYwMTQzMjA2OS45MjkyNjc2LCAyMDY4NywgMS4wXSwgWzE2MDE0MzIwNzAuMTU5NDk1LCAyMDY4OCwgMS4wXSwgWzE2MDE0MzIwNzQuMjAyMzg2LCAyMDcwNSwgMS4wXSwgWzE2MDE0MzIwNzUuMzY2OTU2NywgMjA3MDksIDEuMF0sIFsxNjAxNDMyMDg0LjYxMzI5NDQsIDIwNzQ2LCAxLjBdLCBbMTYwMTQzMjA5Mi4yNDk5NiwgMjA3NzcsIDEuMF0sIFsxNjAxNDMyMDkyLjQ4NDg4NDUsIDIwNzc4LCAxLjBdLCBbMTYwMTQzMjA5My4yMDEzMTIzLCAyMDc4MSwgMS4wXSwgWzE2MDE0MzIwOTMuNDQzNTU4LCAyMDc4MiwgMS4wXSwgWzE2MDE0MzIxMDEuODQ0NDY0OCwgMjA4MTYsIDEuMF0sIFsxNjAxNDMyMTAzLjA0NzI5NDEsIDIwODIxLCAxLjBdLCBbMTYwMTQzMjEwNS40NTE3NTIyLCAyMDgzMCwgMS4wXSwgWzE2MDE0MzIxMTEuMzM0MTMyNCwgMjA4NTQsIDEuMF0sIFsxNjAxNDMyMTE5LjU1MTc0MSwgMjA4ODcsIDEuMF0sIFsxNjAxNDMyMTI1LjQxOTU0MDYsIDIwOTExLCAxLjBdLCBbMTYwMTQzMjEyNS43MDYwNTQ3LCAyMDkxMiwgMS4wXSwgWzE2MDE0MzIxMzQuNjI5NTEzNywgMjA5NDgsIDEuMF0sIFsxNjAxNDMyMTQzLjkzNzcxMTcsIDIwOTg2LCAxLjBdLCBbMTYwMTQzMjE1My44NzY4MjksIDIxMDI2LCAxLjBdLCBbMTYwMTQzMjE1NS40Mzk1NDM1LCAyMTAzMiwgMS4wXSwgWzE2MDE0MzIxNTUuOTA4MTM2NCwgMjEwMzQsIDEuMF0sIFsxNjAxNDMyMTU2LjE0MjkwMjQsIDIxMDM1LCAxLjBdLCBbMTYwMTQzMjE2My43NzQxNDI1LCAyMTA2NiwgMS4wXSwgWzE2MDE0MzIxNjUuODgzMzQ0NywgMjEwNzUsIDEuMF0sIFsxNjAxNDMyMTY2LjgyMjk3NzUsIDIxMDc5LCAxLjBdLCBbMTYwMTQzMjE4Mi44NzgyOTcsIDIxMTQzLCAxLjBdLCBbMTYwMTQzMjE5OS4wMDk4NjYsIDIxMjA4LCAxLjBdLCBbMTYwMTQzMjIwNC43MDAzMTU3LCAyMTIzMSwgMS4wXSwgWzE2MDE0MzIyMDguNDU3NjY4NSwgMjEyNDcsIDEuMF0sIFsxNjAxNDMyMjI1LjQ1MjUwNiwgMjEzMTUsIDEuMF0sIFsxNjAxNDMyMjI2LjMyNTI5NjYsIDIxMzE4LCAxLjBdLCBbMTYwMTQzMjIyNy40ODczOTU1LCAyMTMyMywgMS4wXSwgWzE2MDE0MzIyNDMuODU2NjA2LCAyMTM5MCwgMS4wXSwgWzE2MDE0MzIyNDguNTA4NjA3NiwgMjE0MDgsIDEuMF0sIFsxNjAxNDMyMjY2Ljc3ODc3MywgMjE0ODMsIDEuMF0sIFsxNjAxNDMyMjc2LjY4MDg0NTMsIDIxNTIyLCAxLjBdLCBbMTYwMTQzMjI3Ni45MTI3MDA3LCAyMTUyMywgMS4wXSwgWzE2MDE0MzIyOTIuNTI0NDc0NCwgMjE1ODYsIDEuMF0sIFsxNjAxNDMyMjk1LjU3OTIyMTUsIDIxNTk5LCAxLjBdLCBbMTYwMTQzMjI5OC40NDYxMzU4LCAyMTYxMCwgMS4wXSwgWzE2MDE0MzIzMDcuOTYyNjEzLCAyMTY0OSwgMS4wXSwgWzE2MDE0MzIzMTEuNTIyNTY0NiwgMjE2NjMsIDEuMF0sIFsxNjAxNDMyMzE1LjU0NTI5NjcsIDIxNjgwLCAxLjBdLCBbMTYwMTQzMjMxOC45NDU2MDM0LCAyMTY5MywgMS4wXSwgWzE2MDE0MzIzMjYuMTE3MjI4MywgMjE3MjIsIDEuMF0sIFsxNjAxNDMyMzI2LjM0OTA1MDMsIDIxNzIzLCAxLjBdLCBbMTYwMTQzMjMzNi4zOTc4OTQ0LCAyMTc2NCwgMS4wXSwgWzE2MDE0MzIzNDIuNDA2MzE2LCAyMTc4OCwgMS4wXSwgWzE2MDE0MzIzNDMuODExOTMyMywgMjE3OTQsIDEuMF0sIFsxNjAxNDMyMzQ4Ljg5MjcxODgsIDIxODE0LCAxLjBdLCBbMTYwMTQzMjM1MC4zMTA5Mjc5LCAyMTgyMCwgMS4wXSwgWzE2MDE0MzIzNTUuNjA2ODE0OSwgMjE4NDEsIDEuMF0sIFsxNjAxNDMyMzU3LjAxMjQxNCwgMjE4NDcsIDEuMF0sIFsxNjAxNDMyMzY4Ljc1ODE0OCwgMjE4OTQsIDEuMF0sIFsxNjAxNDMyMzcxLjg0OTcwMjYsIDIxOTA3LCAxLjBdLCBbMTYwMTQzMjM4Ni4yOTM3MjksIDIxOTY2LCAxLjBdLCBbMTYwMTQzMjM5NC4xOTc5NiwgMjE5OTgsIDEuMF0sIFsxNjAxNDMyMzk1Ljk4NTYzNCwgMjIwMDUsIDEuMF0sIFsxNjAxNDMyNDE2LjU0NjE0NjksIDIyMDg5LCAxLjBdLCBbMTYwMTQzMjQyMS42NTMzNjIzLCAyMjEwOSwgMS4wXSwgWzE2MDE0MzI0NDkuMTMzNTUzNywgMjIyMTksIDEuMF0sIFsxNjAxNDMyNDU1LjQwMzA0MDIsIDIyMjQ0LCAxLjBdLCBbMTYwMTQzMjQ1NS44NzkyOTk2LCAyMjI0NiwgMS4wXSwgWzE2MDE0MzI0NTguNDg3OTQxNywgMjIyNTcsIDEuMF0sIFsxNjAxNDMyNDY1LjIyNjY3ODgsIDIyMjg0LCAxLjBdLCBbMTYwMTQzMjQ2Ni44NjkwMzI5LCAyMjI5MSwgMS4wXSwgWzE2MDE0MzI0NjkuODUwNjk5NCwgMjIzMDIsIDEuMF0sIFsxNjAxNDMyNDcxLjA1NzI1MjYsIDIyMzA3LCAxLjBdLCBbMTYwMTQzMjQ3Mi43MTc2NDU2LCAyMjMxNCwgMS4wXSwgWzE2MDE0MzI0NzIuOTYyNDQ3NiwgMjIzMTUsIDEuMF0sIFsxNjAxNDMyNDc2LjU5MzM4MzgsIDIyMzI5LCAxLjBdLCBbMTYwMTQzMjQ4My42NzIxNzMsIDIyMzU3LCAxLjBdLCBbMTYwMTQzMjUwMC42NTcwMjI3LCAyMjQyNiwgMS4wXSwgWzE2MDE0MzI1MDEuMzU2NzkzNiwgMjI0MjksIDEuMF0sIFsxNjAxNDMyNTA5Ljc3ODE0MzIsIDIyNDYzLCAxLjBdLCBbMTYwMTQzMjUxMS45Njk4MTQsIDIyNDcxLCAxLjBdLCBbMTYwMTQzMjUyMC4xODIzNTk1LCAyMjUwNCwgMS4wXSwgWzE2MDE0MzI1MjAuNjYyODQ1NiwgMjI1MDYsIDEuMF0sIFsxNjAxNDMyNTIxLjgzNTczODQsIDIyNTExLCAxLjBdLCBbMTYwMTQzMjUyOS43NDYyNDA2LCAyMjU0MywgMS4wXSwgWzE2MDE0MzI1MzQuNTgwMzQxNiwgMjI1NjIsIDEuMF0sIFsxNjAxNDMyNTUyLjM0MjQ3MzMsIDIyNjM0LCAxLjBdLCBbMTYwMTQzMjU1Mi44Mzg0MjA2LCAyMjYzNiwgMS4wXSwgWzE2MDE0MzI1NTYuNDI1NTU4OCwgMjI2NTAsIDEuMF0sIFsxNjAxNDMyNTY0Ljg3ODE4ODgsIDIyNjg0LCAxLjBdLCBbMTYwMTQzMjU4My4yMTI0NDYyLCAyMjc1NywgMS4wXSwgWzE2MDE0MzI1ODQuODg1NzA2NywgMjI3NjQsIDEuMF0sIFsxNjAxNDMyNTg3LjczMTA4NzQsIDIyNzc2LCAxLjBdLCBbMTYwMTQzMjYwMC4wMzUyMTcsIDIyODI1LCAxLjBdLCBbMTYwMTQzMjYwMC41MDMyMjcsIDIyODI3LCAxLjBdLCBbMTYwMTQzMjYwMy4xODc1NTQ2LCAyMjgzOCwgMS4wXSwgWzE2MDE0MzI2MDMuNDU3MTQzLCAyMjgzOSwgMS4wXSwgWzE2MDE0MzI2MDQuNzk2Mzc1MywgMjI4NDQsIDEuMF0sIFsxNjAxNDMyNjIwLjQ3NDQyOTQsIDIyOTA4LCAxLjBdLCBbMTYwMTQzMjYyNS42ODAwNjQyLCAyMjkyOSwgMS4wXSwgWzE2MDE0MzI2MjYuNDQ4NjY2MywgMjI5MzIsIDEuMF0sIFsxNjAxNDMyNjI2LjY4Mjc1MjQsIDIyOTMzLCAxLjBdLCBbMTYwMTQzMjY2Mi45MjY3OTU3LCAyMzA3OSwgMS4wXSwgWzE2MDE0MzI2NjMuODY5NDk2LCAyMzA4MywgMS4wXSwgWzE2MDE0MzI2NjQuMTAyMjEsIDIzMDg0LCAxLjBdLCBbMTYwMTQzMjY2OC4zODA0ODk4LCAyMzEwMSwgMS4wXSwgWzE2MDE0MzI2NzIuMDUzMTc1NCwgMjMxMTYsIDEuMF0sIFsxNjAxNDMyNjc0LjUxMTM5MTQsIDIzMTI2LCAxLjBdLCBbMTYwMTQzMjY3Ny4zNTAxNzIsIDIzMTM3LCAxLjBdLCBbMTYwMTQzMjY3OC41MTYyMjgyLCAyMzE0MiwgMS4wXSwgWzE2MDE0MzI2NzguNzQ5MDkxNCwgMjMxNDMsIDEuMF0sIFsxNjAxNDMyNjc5LjY4MTcwMTQsIDIzMTQ3LCAxLjBdLCBbMTYwMTQzMjY4MC42MjQzNjQxLCAyMzE1MSwgMS4wXSwgWzE2MDE0MzI2ODIuMTk3NDU1LCAyMzE1NywgMS4wXSwgWzE2MDE0MzI2ODguMDQzMTYxNiwgMjMxODEsIDEuMF0sIFsxNjAxNDMyNjkwLjgwMjk0MzcsIDIzMTkxLCAxLjBdLCBbMTYwMTQzMjY5Ny4yNzQxMDQ0LCAyMzIxNywgMS4wXSwgWzE2MDE0MzI2OTcuODIzOTQxNSwgMjMyMTksIDEuMF0sIFsxNjAxNDMyNjk5LjkzMzQzMDIsIDIzMjI4LCAxLjBdLCBbMTYwMTQzMjcwOC4zNTkwOTIyLCAyMzI2MiwgMS4wXSwgWzE2MDE0MzI3MTQuMTA2MTk2OSwgMjMyODUsIDEuMF0sIFsxNjAxNDMyNzIyLjUxODY0OTYsIDIzMzE5LCAxLjBdLCBbMTYwMTQzMjcyNi45Mzk0NTQ4LCAyMzMzNiwgMS4wXSwgWzE2MDE0MzI3MzIuODU2Njc4MiwgMjMzNjAsIDEuMF0sIFsxNjAxNDMyNzM3LjQ2NDM1ODMsIDIzMzc5LCAxLjBdLCBbMTYwMTQzMjc0MS4xOTA1NjI3LCAyMzM5MywgMS4wXSwgWzE2MDE0MzI3NDkuMzc5MDEyOCwgMjM0MjYsIDEuMF0sIFsxNjAxNDMyNzc3LjUzOTE4NjUsIDIzNTM5LCAxLjBdLCBbMTYwMTQzMjc4OS41OTUyMjk5LCAyMzU4OCwgMS4wXSwgWzE2MDE0MzI4MDQuOTk0NzAwMiwgMjM2NDksIDEuMF0sIFsxNjAxNDMyODA5Ljc0ODg5LCAyMzY2OSwgMS4wXSwgWzE2MDE0MzI4MTIuNjY4MzA0NywgMjM2ODAsIDEuMF0sIFsxNjAxNDMyODE3LjQxODczNTMsIDIzNzAwLCAxLjBdLCBbMTYwMTQzMjgzMi40NjYyNTEsIDIzNzYwLCAxLjBdLCBbMTYwMTQzMjgzNS44MDE0MzY0LCAyMzc3MywgMS4wXSwgWzE2MDE0MzI4NDQuOTc0Mjg3NSwgMjM4MTAsIDEuMF0sIFsxNjAxNDMyODUwLjEyMjYxMDMsIDIzODMwLCAxLjBdLCBbMTYwMTQzMjg1Mi43MTgxMjkyLCAyMzg0MSwgMS4wXSwgWzE2MDE0MzI4NzQuMDk4NjQ2LCAyMzkyNywgMS4wXSwgWzE2MDE0MzI4NzYuNzEwODYzNiwgMjM5MzcsIDEuMF0sIFsxNjAxNDMyODk4LjQyODIxNTUsIDI0MDI0LCAxLjBdLCBbMTYwMTQzMjkxMS44MjUyMjcsIDI0MDc4LCAxLjBdLCBbMTYwMTQzMjkyMS4wOTgzMzE3LCAyNDExNSwgMS4wXSwgWzE2MDE0MzI5MjEuNTY0ODI4NCwgMjQxMTcsIDEuMF0sIFsxNjAxNDMyOTI4Ljc2MzAyNywgMjQxNDYsIDEuMF0sIFsxNjAxNDMyOTM4LjQxOTg5ODMsIDI0MTg1LCAxLjBdLCBbMTYwMTQzMjk1MC40ODkxODUzLCAyNDIzMywgMS4wXSwgWzE2MDE0MzI5NjIuNjMwMzU1MSwgMjQyODEsIDEuMF0sIFsxNjAxNDMyOTYzLjE4NzcxNDgsIDI0MjgzLCAxLjBdLCBbMTYwMTQzMjk2NS4wODQwNDQ3LCAyNDI5MSwgMS4wXSwgWzE2MDE0MzI5NzIuNTYzMDM1NSwgMjQzMjEsIDEuMF0sIFsxNjAxNDMyOTc3LjcwMDUxMywgMjQzNDEsIDEuMF0sIFsxNjAxNDMyOTc4LjQzMzM5ODcsIDI0MzQ0LCAxLjBdLCBbMTYwMTQzMjk4MS43Mzg3MzM4LCAyNDM1OCwgMS4wXSwgWzE2MDE0MzI5OTUuOTE0ODQ1MiwgMjQ0MTUsIDEuMF0sIFsxNjAxNDMzMDIwLjAzOTI3OTcsIDI0NTExLCAxLjBdLCBbMTYwMTQzMzAzMS4xNzk3ODU3LCAyNDU1NiwgMS4wXSwgWzE2MDE0MzMwMzIuMTM0NTY3NywgMjQ1NjAsIDEuMF0sIFsxNjAxNDMzMDQ3LjA1OTIyMjcsIDI0NjIwLCAxLjBdLCBbMTYwMTQzMzA1OC43NDkyODIxLCAyNDY2NiwgMS4wXSwgWzE2MDE0MzMwNjYuMjE5MTU4LCAyNDY5NiwgMS4wXSwgWzE2MDE0MzMwNzEuODA2NTg0LCAyNDcxOCwgMS4wXSwgWzE2MDE0MzMwNzMuNjc5MDg0OCwgMjQ3MjYsIDEuMF0sIFsxNjAxNDMzMDc4LjUxNjc3ODIsIDI0NzQ1LCAxLjBdLCBbMTYwMTQzMzA4OS4yODAwMjA3LCAyNDc4OSwgMS4wXSwgWzE2MDE0MzMwOTguNTM5NzAxLCAyNDgyNiwgMS4wXSwgWzE2MDE0MzMxMDMuODg3MzM4NCwgMjQ4NDgsIDEuMF0sIFsxNjAxNDMzMTExLjMyODMxODgsIDI0ODc4LCAxLjBdLCBbMTYwMTQzMzExNS40NjEyNTEzLCAyNDg5NCwgMS4wXSwgWzE2MDE0MzMxMTYuOTA5Mjg4NiwgMjQ5MDAsIDEuMF0sIFsxNjAxNDMzMTE5LjA3NDAwOTQsIDI0OTA5LCAxLjBdLCBbMTYwMTQzMzEyNS4wMjUyNzgsIDI0OTMzLCAxLjBdLCBbMTYwMTQzMzEyNy4xMDY4MjYsIDI0OTQxLCAxLjBdLCBbMTYwMTQzMzEzMi4yMzk0OSwgMjQ5NjIsIDEuMF0sIFsxNjAxNDMzMTM1LjQ4MTc2MDcsIDI0OTc0LCAxLjBdLCBbMTYwMTQzMzEzNS45NjMzMzI0LCAyNDk3NiwgMS4wXSwgWzE2MDE0MzMxMzguMzIyMjE5NiwgMjQ5ODYsIDEuMF0sIFsxNjAxNDMzMjIxLjg3MjMyNCwgMjQ5OTksIDEuMF1d", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/plugin/scalars/scalars?tag=lr&run=.": { - "data": "W1sxNjAxNDI2ODE5LjUyMDE5MSwgMTgsIDUuMDYzMjkxMTU1MjM4NDAzZS0wN10sIFsxNjAxNDI2ODI1LjU5MjM5MzYsIDQyLCAxLjE0NTkwMjcyOTE0OTM4NGUtMDZdLCBbMTYwMTQyNjgyNi4yOTkxNzI0LCA0NSwgMS4yMjU4NDk0NzM0ODUxNDFlLTA2XSwgWzE2MDE0MjY4MzIuODAzNTAwNywgNzEsIDEuOTE4NzIwOTU0NTYzNDY4N2UtMDZdLCBbMTYwMTQyNjgzOC40MTk0OTc1LCA5NCwgMi41MzE2NDU1Nzc2MTkyMDE1ZS0wNl0sIFsxNjAxNDI2ODU0LjU2NDkxMjMsIDE1OCwgNC4yMzcxNzUyODk3NDUyMWUtMDZdLCBbMTYwMTQyNjg1Ni42OTMyMjAxLCAxNjcsIDQuNDc3MDE1NDA5MDY1NjQzZS0wNl0sIFsxNjAxNDI2ODcyLjIwNzI3MTMsIDIyOSwgNi4xMjkyNDcxNDAwNTIwM2UtMDZdLCBbMTYwMTQyNjg3My4zOTc0NzQ4LCAyMzQsIDYuMjYyNDkxNzUxODQwNTcxZS0wNl0sIFsxNjAxNDI2ODc4Ljc0MTY5LCAyNTUsIDYuODIyMTE4MzkzNzU2NjgyZS0wNl0sIFsxNjAxNDI2ODgzLjM4MDA1NywgMjczLCA3LjMwMTc5ODYzMjM5NzU0OWUtMDZdLCBbMTYwMTQyNjg5Mi4wNjU3MzQsIDMwOCwgOC4yMzQ1MTA0NjAxNjk5ODZlLTA2XSwgWzE2MDE0MjY4OTIuNTQxMzAzMiwgMzEwLCA4LjI4NzgwNzc1OTE4ODU4MWUtMDZdLCBbMTYwMTQyNjg5NC40MjE0NzUsIDMxOCwgOC41MDA5OTk2ODM3NDcwNjhlLTA2XSwgWzE2MDE0MjY5MjAuMzgwNjA3MSwgNDIxLCAxLjEyNDU4MzY1MDM4MDM3M2UtMDVdLCBbMTYwMTQyNjkzMC4wNDA1NjA3LCA0NjAsIDEuMjI4NTE0MzM4NDM2MDcwOGUtMDVdLCBbMTYwMTQyNjkzMy43NTU1MDc1LCA0NzQsIDEuMjY1ODIyODExNTQ2OTY4M2UtMDVdLCBbMTYwMTQyNjk0OS4yNjQ0MTM4LCA1MzYsIDEuNDMxMDQ1OTg0NjQ1NjA3ZS0wNV0sIFsxNjAxNDI2OTU2LjA3NzIxNjksIDU2MywgMS41MDI5OTgwMjA0NDE3MzdlLTA1XSwgWzE2MDE0MjY5NjAuMDAyNDU0NSwgNTc5LCAxLjU0NTYzNjIyMzQ1NDQ5NGUtMDVdLCBbMTYwMTQyNjk2MS44OTA2OTIsIDU4NiwgMS41NjQyOTA1MDU0ODQ2NzhlLTA1XSwgWzE2MDE0MjY5NjIuMTIxMDA5MywgNTg3LCAxLjU2Njk1NTMyNDk2MDg3MjVlLTA1XSwgWzE2MDE0MjY5NzMuNjEyNTYyNywgNjM0LCAxLjY5MjIwNTExNDUyMjk0OWUtMDVdLCBbMTYwMTQyNjk3Ny4wOTExMzU1LCA2NDcsIDEuNzI2ODQ4Njc3MjA4MTgxNWUtMDVdLCBbMTYwMTQyNjk4MC4zODU2MzU0LCA2NjEsIDEuNzY0MTU3MjQxMjY4NTQ5ZS0wNV0sIFsxNjAxNDI2OTgzLjE4NjgyMzEsIDY3MSwgMS43OTA4MDYxNjM2MjYyNTczZS0wNV0sIFsxNjAxNDI2OTkzLjgzMTEwNzEsIDcxNCwgMS45MDUzOTYzMTE0ODU2NzQyZS0wNV0sIFsxNjAxNDI2OTk1LjkxOTUyODcsIDcyMiwgMS45MjY3MTU1OTQ4OTA5OTNlLTA1XSwgWzE2MDE0MjcwMDYuNzMzMzE1NSwgNzY1LCAyLjA0MTMwNTc0Mjc1MDQxZS0wNV0sIFsxNjAxNDI3MDA4LjE3NDYzMjUsIDc3MSwgMi4wNTcyOTUyMDUzMDQzOTllLTA1XSwgWzE2MDE0MjcwMTEuODc1ODY4MywgNzg1LCAyLjA5NDYwMzU4NzQ2NTgyNjRlLTA1XSwgWzE2MDE0MjcwMTIuMzQ0NDE3NiwgNzg3LCAyLjA5OTkzMzQwODMxNzE1NmUtMDVdLCBbMTYwMTQyNzAxNS44OTg2NDMsIDgwMiwgMi4xMzk5MDY3OTE4NTM3MTg1ZS0wNV0sIFsxNjAxNDI3MDE3LjQ1NjI5NzIsIDgwOCwgMi4xNTU4OTYwNzI1MDg3NjcyZS0wNV0sIFsxNjAxNDI3MDI0LjQ5Njk1NzMsIDgzNiwgMi4yMzA1MTMwMTg3MzA1NjIyZS0wNV0sIFsxNjAxNDI3MDUxLjY5MTA3OSwgOTQ1LCAyLjUyMDk4NTk4MTM5MTI3N2UtMDVdLCBbMTYwMTQyNzA1OC4zMDU3OTM4LCA5NzEsIDIuNTkwMjczMTA2NzYxNzQyNGUtMDVdLCBbMTYwMTQyNzA1OC41NDY1MDM4LCA5NzIsIDIuNTkyOTM4MTA4MTM2ODc3NGUtMDVdLCBbMTYwMTQyNzA2MC4wNjAxNjMsIDk3OCwgMi42MDg5MjczODg3OTE5MjYyZS0wNV0sIFsxNjAxNDI3MDY2LjgwMjMwMDcsIDEwMDUsIDIuNjgwODc5MzMzNjM4NTg2ZS0wNV0sIFsxNjAxNDI3MDY5LjI2MTM2NTcsIDEwMTQsIDIuNzA0ODYzNDM2NTIwMDk5NmUtMDVdLCBbMTYwMTQyNzA4MS40MTg2MTQ0LCAxMDYzLCAyLjgzNTQ0MzA0NjkzMzUwNTdlLTA1XSwgWzE2MDE0MjcwODIuMjcyNjcwNSwgMTA2NiwgMi44NDM0Mzc2ODcyNjEwM2UtMDVdLCBbMTYwMTQyNzA4OS4xMDU3NDIsIDEwOTMsIDIuOTE1Mzg5ODE0MDA2NjMwM2UtMDVdLCBbMTYwMTQyNzA5MS45MzUyNzMyLCAxMTA0LCAyLjk0NDcwMzU1NTg0MDUzMzJlLTA1XSwgWzE2MDE0MjcxMDYuMzA3Nzg5MywgMTE2MSwgMy4wOTY2MDIwODU4NjEzNzc0ZS0wNV0sIFsxNjAxNDI3MTExLjA1NjYyOTQsIDExODAsIDMuMTQ3MjM1MTExMTAwNTk5ZS0wNV0sIFsxNjAxNDI3MTMxLjIxNzE0NDMsIDEyNjEsIDMuMzYzMDkxMzA5NDM4NDU5NmUtMDVdLCBbMTYwMTQyNzE0NS4wMTUxMDE0LCAxMzE2LCAzLjUwOTY2MDM4MjQwNTg1NWUtMDVdLCBbMTYwMTQyNzE0NS43NjM0OTk3LCAxMzE5LCAzLjUxNzY1NDg0MDgzNDQzOWUtMDVdLCBbMTYwMTQyNzE0OS40MTIxNjYsIDEzMzMsIDMuNTU0OTYzNDA0ODk0ODA2NGUtMDVdLCBbMTYwMTQyNzE1MC4zOTM4MjYyLCAxMzM3LCAzLjU2NTYyMzA0NjU5NzQ2NmUtMDVdLCBbMTYwMTQyNzE2Mi41OTY3MzMsIDEzODUsIDMuNjkzNTM3NjU1NjM1NzM3ZS0wNV0sIFsxNjAxNDI3MTY0LjI2NzA5MzQsIDEzOTIsIDMuNzEyMTkxNzU1NzY2OTgwNGUtMDVdLCBbMTYwMTQyNzE2OS45MjY4MzE3LCAxNDE0LCAzLjc3MDgxOTYwMzIzMjY2N2UtMDVdLCBbMTYwMTQyNzE3Mi43NzE3MzQ3LCAxNDI2LCAzLjgwMjc5ODE2NDU0Mjc2NDRlLTA1XSwgWzE2MDE0MjcxNzUuMzcwMjQxOSwgMTQzNiwgMy44Mjk0NDcwODY5MDA0NzI2ZS0wNV0sIFsxNjAxNDI3MTgyLjg3NDM1NzIsIDE0NjYsIDMuOTA5MzkzODUzOTczNTk3ZS0wNV0sIFsxNjAxNDI3MTg1LjUyMjc2OCwgMTQ3NywgMy45Mzg3MDc1OTU4MDc1ZS0wNV0sIFsxNjAxNDI3MTg4Ljk0MTAzOTYsIDE0OTEsIDMuOTc2MDE2MTU5ODY3ODY4ZS0wNV0sIFsxNjAxNDI3MTk3LjEwMTAzLCAxNTIzLCAzLjk5OTk5MDQ0MDIwNjYwMmUtMDVdLCBbMTYwMTQyNzIwNC4zOTMxMTI0LCAxNTUyLCAzLjk5OTk1MTUxMzgzMzM2NmUtMDVdLCBbMTYwMTQyNzIwOC4yNTAzOCwgMTU2OCwgMy45OTk5MTczMTY4MzI1OGUtMDVdLCBbMTYwMTQyNzIxMi40NTIxNzYzLCAxNTg0LCAzLjk5OTg3NDAyNDg4NDc3NWUtMDVdLCBbMTYwMTQyNzIxMy40MDUwODcyLCAxNTg4LCAzLjk5OTg2MTY1NTc1NjgzMWUtMDVdLCBbMTYwMTQyNzIxNy41NjMzNDYsIDE2MDUsIDMuOTk5ODAzMDg0Mjk4MDM3ZS0wNV0sIFsxNjAxNDI3MjI2LjQ3MjA2NzQsIDE2NDAsIDMuOTk5NjQ5NTYxNTkyMzc4ZS0wNV0sIFsxNjAxNDI3MjM5LjA1MDI5OTYsIDE2OTEsIDMuOTk5MzQ3OTczMTQ5MjdlLTA1XSwgWzE2MDE0MjcyNDMuNTY2MTA3LCAxNzA5LCAzLjk5OTIxOTU1MjQ5NzM3OTVlLTA1XSwgWzE2MDE0MjcyNDUuNzYyMjMxNiwgMTcxOCwgMy45OTkxNTA3OTQ2OTc5MjU0ZS0wNV0sIFsxNjAxNDI3MjQ5LjQ1NDg0MDcsIDE3MzIsIDMuOTk5MDM4MDE3MzU0OTA1NmUtMDVdLCBbMTYwMTQyNzI0OS45NTEzMDMsIDE3MzQsIDMuOTk5MDIxNjQ2NDUwMjc0ZS0wNV0sIFsxNjAxNDI3MjUwLjY2OTU2MTQsIDE3MzcsIDMuOTk4OTk2MTgwNTk4NjI0ZS0wNV0sIFsxNjAxNDI3MjYxLjkxMjk0OTgsIDE3ODEsIDMuOTk4NTg5MDkwNzcwMTEwNWUtMDVdLCBbMTYwMTQyNzI3My4wNDk0MzkyLCAxODI2LCAzLjk5ODEwMDg3NDAxNDE5OWUtMDVdLCBbMTYwMTQyNzI3Ny43MzA5MTY1LCAxODQ0LCAzLjk5Nzg4NTUwNTY2ODgxOWUtMDVdLCBbMTYwMTQyNzI3OS44NzE0NjA0LCAxODUzLCAzLjk5Nzc3MzQ1NTkyMTU2MDVlLTA1XSwgWzE2MDE0MjcyODMuMjU4MzAxLCAxODY2LCAzLjk5NzYwNjQ3MjY5NDMxNWUtMDVdLCBbMTYwMTQyNzI4My45NzY2MDAyLCAxODY5LCAzLjk5NzU2NzE4MjUyMzE5ODRlLTA1XSwgWzE2MDE0MjcyODUuODc0NzczMywgMTg3NywgMy45OTc0NjA1ODk3NDQxNTA2ZS0wNV0sIFsxNjAxNDI3Mjk1Ljg1MDA5NCwgMTkxNywgMy45OTY4OTMwNjUwNTAyNDRlLTA1XSwgWzE2MDE0MjczMDAuMjU2MTY1LCAxOTM0LCAzLjk5NjYzNDc2ODU1NDk0MWUtMDVdLCBbMTYwMTQyNzMwMi42MTk3NjMsIDE5NDQsIDMuOTk2NDc3OTcxNjY4MzU1ZS0wNV0sIFsxNjAxNDI3MzAzLjQxOTQ0MzEsIDE5NDcsIDMuOTk2NDMwMzE0MTQ1OTgyZS0wNV0sIFsxNjAxNDI3MzE2LjkzODAxMSwgMjAwMSwgMy45OTU1MTU3MjYyNzM4Nzk0ZS0wNV0sIFsxNjAxNDI3MzI1Ljk0ODI5MDMsIDIwMzYsIDMuOTk0ODY3ODAyMjQ4MzM2NGUtMDVdLCBbMTYwMTQyNzMzNi4yMDE2ODk1LCAyMDc3LCAzLjk5NDA1Mjg5NDk5NTU0OGUtMDVdLCBbMTYwMTQyNzMzOC4xMTkyODUsIDIwODUsIDMuOTkzODg3MDAzMTYxOTQ0NGUtMDVdLCBbMTYwMTQyNzMzOS4xNjA1OTk3LCAyMDg5LCAzLjk5MzgwMzMyOTY0OTM4MTNlLTA1XSwgWzE2MDE0MjczNDEuMTEzNDI5NSwgMjA5NiwgMy45OTM2NTQ5MDAxMTQwNTJlLTA1XSwgWzE2MDE0MjczNjQuMDE3MjAyLCAyMTg3LCAzLjk5MTU3MTA2NTg1MzM1ZS0wNV0sIFsxNjAxNDI3MzY2Ljg3OTY4NjQsIDIxOTksIDMuOTkxMjc0MjA2NzgyNjkxZS0wNV0sIFsxNjAxNDI3MzcwLjEzMTQ1MzMsIDIyMTEsIDMuOTkwOTcyMjU0NTQxNzAyNmUtMDVdLCBbMTYwMTQyNzM3NS4wMjU3OTYsIDIyMzEsIDMuOTkwNDU3ODQ0MzM4MzhlLTA1XSwgWzE2MDE0MjczNzYuNDczMjAzNywgMjIzNiwgMy45OTAzMjY4NzcxMDEzMjQ1ZS0wNV0sIFsxNjAxNDI3Mzc2LjcyNDI4MzIsIDIyMzcsIDMuOTkwMzAwNjgzNjUzOTEzNGUtMDVdLCBbMTYwMTQyNzM4MS40NDMzNjEzLCAyMjU3LCAzLjk4OTc2NzM1NTk2MDc5NGUtMDVdLCBbMTYwMTQyNzM4Mi44NDQzODI4LCAyMjYyLCAzLjk4OTYzMjAyMzE0OTE3ZS0wNV0sIFsxNjAxNDI3Mzk0LjA5OTU5NjMsIDIzMDcsIDMuOTg4MzcyNTU0ODg2MTU1ZS0wNV0sIFsxNjAxNDI3Mzk3LjEzNzcyMDYsIDIzMTksIDMuOTg4MDI0NDAwMzE0MzE2ZS0wNV0sIFsxNjAxNDI3NDA2LjAyNzY4OCwgMjM1NCwgMy45ODY5Nzk5MzY1OTg4ZS0wNV0sIFsxNjAxNDI3NDE0Ljg1NjI1OTgsIDIzODksIDMuOTg1ODkyMTgwOTM1NDhlLTA1XSwgWzE2MDE0Mjc0MTUuMDkzMjMyLCAyMzkwLCAzLjk4NTg2MDUzMDUxOTg1OGUtMDVdLCBbMTYwMTQyNzQxNS41ODQ3MDc3LCAyMzkyLCAzLjk4NTc5Njg2NTg5MDczNGUtMDVdLCBbMTYwMTQyNzQyNi45NTAwOTczLCAyNDM2LCAzLjk4NDM2MzEzODQ0Mjg1OWUtMDVdLCBbMTYwMTQyNzQzMS4wNDQ2MjcyLCAyNDUzLCAzLjk4Mzc5MDg4NDM3NjUwMzVlLTA1XSwgWzE2MDE0Mjc0MzEuNTExNzc1NSwgMjQ1NSwgMy45ODM3MjI4NTQxNzI4MTFlLTA1XSwgWzE2MDE0Mjc0MzIuODc3NzE1MywgMjQ2MCwgMy45ODM1NTIyMzI5NjY3NThlLTA1XSwgWzE2MDE0Mjc0MzkuMDg5OTQ5NCwgMjQ4NSwgMy45ODI2ODU2NjY0MTQ5MDllLTA1XSwgWzE2MDE0Mjc0MzkuMzY0MTIxMiwgMjQ4NiwgMy45ODI2NTAzNzgwMjA0OGUtMDVdLCBbMTYwMTQyNzQ0Mi4xMDM2NzQsIDI0OTYsIDMuOTgyMjk3MTMwMjc4MzEyZS0wNV0sIFsxNjAxNDI3NDQyLjU3MjY5NzYsIDI0OTgsIDMuOTgyMjI2MTg5NjkxNTczNGUtMDVdLCBbMTYwMTQyNzQ0My43NzE3NDAyLCAyNTAzLCAzLjk4MjA0NzkyODczMDAyNmUtMDVdLCBbMTYwMTQyNzQ0Ny4zMDk5NDg0LCAyNTE3LCAzLjk4MTU0NDA2ODY2NTI0NGUtMDVdLCBbMTYwMTQyNzQ1MS4wNzUwNDI1LCAyNTMyLCAzLjk4MDk5NjU1Mjg1NDc3NjRlLTA1XSwgWzE2MDE0Mjc0NTQuODU2MTUxMywgMjU0NywgMy45ODA0NDEwMzM0OTA5MzM1ZS0wNV0sIFsxNjAxNDI3NDU2LjQyNzQ1LCAyNTUzLCAzLjk4MDIxNjU3MDE5ODUzNmUtMDVdLCBbMTYwMTQyNzQ4OS4zNzAyNTYsIDI2ODUsIDMuOTc0OTU2NzgwNDM5MjQzZS0wNV0sIFsxNjAxNDI3NTAzLjI5OTI1NjgsIDI3NDAsIDMuOTcyNTgzMzYzMDY1NDk2ZS0wNV0sIFsxNjAxNDI3NTA3LjAwNzAyMjksIDI3NTQsIDMuOTcxOTYyMzYwMDgzMTI1NWUtMDVdLCBbMTYwMTQyNzUxNS42OTk3MTQsIDI3ODksIDMuOTcwMzc5NDc1NTA0MTZlLTA1XSwgWzE2MDE0Mjc1NDIuNjg0MTg3NywgMjg5NiwgMy45NjUyNzI0ODA4NTQ3NjQ2ZS0wNV0sIFsxNjAxNDI3NTYwLjM2MTkyLCAyOTY3LCAzLjk2MTY2MTc4Njg4ODcyNmUtMDVdLCBbMTYwMTQyNzU3MS42MjYxNTg1LCAzMDExLCAzLjk1OTMzNTI5OTQ0MTU5MWUtMDVdLCBbMTYwMTQyNzU3OC40MTgzMDEsIDMwMzgsIDMuOTU3ODc0Mjg3MTUyNjYzZS0wNV0sIFsxNjAxNDI3NTc5LjE0MjczMzYsIDMwNDEsIDMuOTU3NzEwNTc4MTA2MzQ0ZS0wNV0sIFsxNjAxNDI3NTkzLjc0ODMxMDgsIDMwOTksIDMuOTU0NDc5Njg5MTI3NzY1NmUtMDVdLCBbMTYwMTQyNzYwOS4yNjI3ODM1LCAzMTYxLCAzLjk1MDg5NTkxNjIwNDg5OTVlLTA1XSwgWzE2MDE0Mjc2MTcuOTY1NTQxLCAzMTk2LCAzLjk0ODgxMzUzNzEzNTcyZS0wNV0sIFsxNjAxNDI3NjI2LjY4MzcxMSwgMzIzMCwgMy45NDY3NTAwNzU1NTYzMzhlLTA1XSwgWzE2MDE0Mjc2MzAuMjE5NjQzNiwgMzI0NCwgMy45NDU4ODg2MDIxNzQ4MTg1ZS0wNV0sIFsxNjAxNDI3NjMwLjY4ODY2OCwgMzI0NiwgMy45NDU3NjQ5MTA4OTUzNzc0ZS0wNV0sIFsxNjAxNDI3NjMwLjkyMjc3MjIsIDMyNDcsIDMuOTQ1NzAzMDY1MjU1NjU3ZS0wNV0sIFsxNjAxNDI3NjQ1LjQyNDQxMDYsIDMzMDUsIDMuOTQyMDU1NjI3NzAzNjY3ZS0wNV0sIFsxNjAxNDI3NjU1LjUxODUyMTUsIDMzNDUsIDMuOTM5NDcyMjk4OTUyNzUxZS0wNV0sIFsxNjAxNDI3NjYzLjQzNjkxNjgsIDMzNzYsIDMuOTM3NDMyMTIwNDM3NzM0ZS0wNV0sIFsxNjAxNDI3NjcxLjMzMDc5NDMsIDM0MDgsIDMuOTM1MjkwODA2MTExODc5NmUtMDVdLCBbMTYwMTQyNzY3Ni43NjQ1MTE4LCAzNDMwLCAzLjkzMzc5ODUwNzIwNTIxMDZlLTA1XSwgWzE2MDE0Mjc2ODEuNDMwNzI1OCwgMzQ0OSwgMy45MzI0OTYxMTA3OTIyNzJlLTA1XSwgWzE2MDE0Mjc2ODUuMzgzMDM2NiwgMzQ2NCwgMy45MzE0NTg5MjMwMzQzN2UtMDVdLCBbMTYwMTQyNzY4OS4yMjgwMTY0LCAzNDgwLCAzLjkzMDM0NDI0NjMyNzg3N2UtMDVdLCBbMTYwMTQyNzcxOS4zMzE1ODMsIDM2MDAsIDMuOTIxNzAyNTkxNDY5NTExNGUtMDVdLCBbMTYwMTQyNzcyMy44NjkzNzgsIDM2MTgsIDMuOTIwMzYzNDUxNDcwNjIxZS0wNV0sIFsxNjAxNDI3NzI0LjMzNzU1NTIsIDM2MjAsIDMuOTIwMjEzOTMwNTQxNjQ5NWUtMDVdLCBbMTYwMTQyNzczMy4zODM5NTUyLCAzNjU2LCAzLjkxNzUwMDM2MjE0OTQ0ZS0wNV0sIFsxNjAxNDI3NzM2Ljk5MDY5ODMsIDM2NzAsIDMuOTE2NDMyOTc5MTY3NDM5ZS0wNV0sIFsxNjAxNDI3NzUxLjAwOTI0NCwgMzcyNiwgMy45MTIwOTYxNDQ2MzE1MDVlLTA1XSwgWzE2MDE0Mjc3NTEuOTQ0OTY5MiwgMzczMCwgMy45MTE3ODI1NTA4NTgzMzRlLTA1XSwgWzE2MDE0Mjc3NTQuNTkyMTMxOSwgMzc0MSwgMy45MTA5MTY3MTE5MDIyNDZlLTA1XSwgWzE2MDE0Mjc3NjcuNjY0MDMxNywgMzc5MywgMy45MDY3NjcyMzMyNzQ4NzdlLTA1XSwgWzE2MDE0Mjc3NzMuMDEyMTgwMywgMzgxNCwgMy45MDUwNjUzODY3ODg5MTk2ZS0wNV0sIFsxNjAxNDI3Nzc0LjE4ODU1NDUsIDM4MTksIDMuOTA0NjU3OTMzMTYyNTI1ZS0wNV0sIFsxNjAxNDI3Nzc0LjY2MjExNDksIDM4MjEsIDMuOTA0NDk0NTg3OTE0MDg3ZS0wNV0sIFsxNjAxNDI3Nzc3LjM5MzMzOCwgMzgzMSwgMy45MDM2NzY3NzAyNzgyNTNlLTA1XSwgWzE2MDE0Mjc3ODUuNzU2NTE5OCwgMzg2NCwgMy45MDA5NTMwMTU1NDUzODNlLTA1XSwgWzE2MDE0Mjc4MDEuNjYzNTQsIDM5MjgsIDMuODk1NTY1MTY4OTMyMDhlLTA1XSwgWzE2MDE0Mjc4MDguNzA4MTkxNiwgMzk1NiwgMy44OTMxNjQ0NjY3MTcyODA0ZS0wNV0sIFsxNjAxNDI3ODE1LjcyNDY0NzUsIDM5ODQsIDMuODkwNzM3MjA3MjU3MTg5ZS0wNV0sIFsxNjAxNDI3ODI1LjA0NDI2OTgsIDQwMjIsIDMuODg3NDAwNDUzMDk1MzI0ZS0wNV0sIFsxNjAxNDI3ODI3Ljk1ODY2NTEsIDQwMzMsIDMuODg2NDI1NDc0Nzc1MDI0ZS0wNV0sIFsxNjAxNDI3ODI4LjY3ODQxMzIsIDQwMzYsIDMuODg2MTU4ODEwOTI4NDY0ZS0wNV0sIFsxNjAxNDI3ODQyLjk5MDc1MDMsIDQwOTMsIDMuODgxMDM1ODA5MTcyMzE3NGUtMDVdLCBbMTYwMTQyNzg0NC4xNzcwNDM3LCA0MDk4LCAzLjg4MDU4MTQyNTYxOTMxMTZlLTA1XSwgWzE2MDE0Mjc4NDYuNzkyMzEzNiwgNDEwOSwgMy44Nzk1NzgwNzEwNjQzMTZlLTA1XSwgWzE2MDE0Mjc4NjUuMjA4MjY0LCA0MTgyLCAzLjg3MjgxODM0MjY0Mjg1ODZlLTA1XSwgWzE2MDE0Mjc4NjguMDQ5Njg1MiwgNDE5NCwgMy44NzE2OTAyMDU0MTQ3Nzk1ZS0wNV0sIFsxNjAxNDI3ODY4LjUxODE3OTQsIDQxOTYsIDMuODcxNTAxNzU4MTEyNTcyZS0wNV0sIFsxNjAxNDI3ODcwLjIwNTcyNjQsIDQyMDIsIDMuODcwOTM1MzI0ODEyMzA4ZS0wNV0sIFsxNjAxNDI3ODc2LjMyODk1NjgsIDQyMjcsIDMuODY4NTYyNjM1MDM0MzIzZS0wNV0sIFsxNjAxNDI3ODc3Ljc1NjA4MzcsIDQyMzIsIDMuODY4MDg1Njk2MDEyNzEzZS0wNV0sIFsxNjAxNDI3ODc4LjUyNDEyODIsIDQyMzUsIDMuODY3Nzk5MDIzMjgyNzE0ZS0wNV0sIFsxNjAxNDI3ODg1LjUwNjU1MzQsIDQyNjMsIDMuODY1MTA5MTAxNzUyNzUwNmUtMDVdLCBbMTYwMTQyNzg4Ni4yMTY2NzU1LCA0MjY2LCAzLjg2NDgxOTUxODYzOTcwNmUtMDVdLCBbMTYwMTQyNzg5NS42MDQyODcxLCA0MzA0LCAzLjg2MTEyMzY5NTk2OTU4MTZlLTA1XSwgWzE2MDE0Mjc4OTguOTc5NzMxLCA0MzE3LCAzLjg1OTg0ODIyMDU5OTgxNWUtMDVdLCBbMTYwMTQyNzg5OS41MTY2MDcsIDQzMTksIDMuODU5NjUxNDA1OTQ2MzUxNmUtMDVdLCBbMTYwMTQyNzkxOS41NDMzNCwgNDQwMCwgMy44NTE1NzI5MTAyMDczMjRlLTA1XSwgWzE2MDE0Mjc5MjcuOTIyMzEyNSwgNDQzMywgMy44NDgyMTkwNTc1NDUwNjZlLTA1XSwgWzE2MDE0Mjc5NDIuNjMyMDEzNiwgNDQ5MiwgMy44NDIxMzM4MTAzOTQ0NDM2ZS0wNV0sIFsxNjAxNDI3OTQ2LjYzOTY5NDUsIDQ1MDksIDMuODQwMzU5MjA0MzMyMzQ0ZS0wNV0sIFsxNjAxNDI3OTUxLjkxOTIwODMsIDQ1MzAsIDMuODM4MTUzNDk3NzgxNjA0NWUtMDVdLCBbMTYwMTQyNzk2NC43MTE5NjkxLCA0NTgxLCAzLjgzMjczNzI3NDkzMzYwNjRlLTA1XSwgWzE2MDE0Mjc5NzYuMjQ2OTE0LCA0NjI4LCAzLjgyNzY3MDI5ODA1MTA4OWUtMDVdLCBbMTYwMTQyNzk4NS4zOTM0MzIxLCA0NjY0LCAzLjgyMzc0MDU1MzM0MzY2ODZlLTA1XSwgWzE2MDE0Mjc5ODYuMzQwNDA1MiwgNDY2OCwgMy44MjMzMDE0NDkzMDE2NTI2ZS0wNV0sIFsxNjAxNDI3OTg4LjIzNzE2MzMsIDQ2NzYsIDMuODIyNDIxNDIyMjI4MjE3ZS0wNV0sIFsxNjAxNDI3OTk3LjQ2NjE2MTMsIDQ3MTMsIDMuODE4MzIzOTY2Njk3NzllLTA1XSwgWzE2MDE0MjgwMDYuOTI1Nzc3MiwgNDc1MCwgMy44MTQxODE3NjQwMjgwMzVlLTA1XSwgWzE2MDE0MjgwMDguODQzMjQwNywgNDc1OCwgMy44MTMyODAyNzI4Nzk2MzhlLTA1XSwgWzE2MDE0MjgwMTYuMzU0NzI4LCA0Nzg4LCAzLjgwOTg4MTY3MzA3ODA1M2UtMDVdLCBbMTYwMTQyODAxOS4yNDM4ODE1LCA0ODAwLCAzLjgwODUxNDE1Njg0NDQ2N2UtMDVdLCBbMTYwMTQyODAxOS44MzQ1NTk3LCA0ODAyLCAzLjgwODI4NTY5MTc3NTM4MTZlLTA1XSwgWzE2MDE0MjgwMjkuMzM3NDk3NywgNDg0MCwgMy44MDM5MjE1NzIzOTgzOTQzZS0wNV0sIFsxNjAxNDI4MDMyLjE2OTg2MzIsIDQ4NTIsIDMuODAyNTM0MDQ3MjgxMzY5NmUtMDVdLCBbMTYwMTQyODA0Mi44MDY2OTYyLCA0ODk0LCAzLjc5NzY0MDIzODE5MDA3ZS0wNV0sIFsxNjAxNDI4MDU5LjY5ODQ3OSwgNDk2MiwgMy43ODk1OTcwMzA4NDU0NzFlLTA1XSwgWzE2MDE0MjgwNjEuODE2MzQ4OCwgNDk3MSwgMy43ODg1MjEyODA1MTIyMTRlLTA1XSwgWzE2MDE0MjgwNjIuNjU5NTg3NiwgNDk3NCwgMy43ODgxNjIyMTIwMDM5NTRlLTA1XSwgWzE2MDE0MjgwODEuNjM2MTIzNCwgNTA1MCwgMy43Nzg5Njg2NzU3NjA1NTJlLTA1XSwgWzE2MDE0MjgwODIuMTA2MTY5NSwgNTA1MiwgMy43Nzg3MjQyMDM1ODQ3MTZlLTA1XSwgWzE2MDE0MjgwOTUuNjg3MTcxMiwgNTEwNiwgMy43NzIwNzY4ODg3MDgzOThlLTA1XSwgWzE2MDE0MjgxMDIuNjMyOTQ0NiwgNTEzNCwgMy43Njg1OTM1MjQwMDA2MDc0ZS0wNV0sIFsxNjAxNDI4MTE4Ljk2MjE5OCwgNTIwMCwgMy43NjAyODUxMDgwMDA5NzE0ZS0wNV0sIFsxNjAxNDI4MTI4Ljk4MTg1NCwgNTIzOSwgMy43NTUzMTEyNjMzNzU5MTU2ZS0wNV0sIFsxNjAxNDI4MTUxLjM5ODE1MzUsIDUzMjksIDMuNzQzNjUxMTc3NTAxMzA2ZS0wNV0sIFsxNjAxNDI4MTU1LjE4MTMxNjYsIDUzNDUsIDMuNzQxNTUyMDYzNzI5NjE0ZS0wNV0sIFsxNjAxNDI4MTU4LjgyMTAzNzUsIDUzNTksIDMuNzM5NzA4MzM2MDcwMThlLTA1XSwgWzE2MDE0MjgxNzQuMTEyMDkxNSwgNTQyMCwgMy43MzE2MDUxMDIwNzUyNjRlLTA1XSwgWzE2MDE0MjgxNzkuNjkyODM5NiwgNTQ0MiwgMy43Mjg2NTQzMzc0NjQ4MzJlLTA1XSwgWzE2MDE0MjgxOTcuNjM3MDQ4LCA1NTE1LCAzLjcxODc1NTc2MDkyODYxNmUtMDVdLCBbMTYwMTQyODE5OC4xNDM1OTAyLCA1NTE3LCAzLjcxODQ4MjE4NDkyMjMyMjZlLTA1XSwgWzE2MDE0MjgyMDYuMjY2MDY0MiwgNTU0OSwgMy43MTQwODk2ODkzMTA2NGUtMDVdLCBbMTYwMTQyODIxNS44NTYyNjk4LCA1NTg3LCAzLjcwODgzMjgwOTkzNDM5MjZlLTA1XSwgWzE2MDE0MjgyMzQuMTMzNDA2MiwgNTY2MCwgMy42OTg2MTAwODk0ODY0NjVlLTA1XSwgWzE2MDE0MjgyMzUuMjY2NjA3NSwgNTY2NCwgMy42OTgwNDU0NzUxNzU2MDRlLTA1XSwgWzE2MDE0MjgyMzguOTY3MDU0NCwgNTY3OSwgMy42OTU5MjMwNzgzMzk1NDdlLTA1XSwgWzE2MDE0MjgyNDkuMzk4MjczLCA1NzIwLCAzLjY5MDA4NzAzMjczNzIxMDRlLTA1XSwgWzE2MDE0MjgyNTAuMjgxMTc4LCA1NzIzLCAzLjY4OTY1ODExNTAzNTg1NGUtMDVdLCBbMTYwMTQyODI2My40MDI3NTg2LCA1Nzc2LCAzLjY4MjAzNDAwMjg0OTgzMmUtMDVdLCBbMTYwMTQyODI3MS40NTU0NTIyLCA1ODA4LCAzLjY3NzM4OTc1OTEwNDY5OWUtMDVdLCBbMTYwMTQyODI3NS41MDQ2MDIsIDU4MjUsIDMuNjc0OTEwMTEyNzQ5Nzg1ZS0wNV0sIFsxNjAxNDI4Mjc2LjIwOTEwNzIsIDU4MjgsIDMuNjc0NDcxMzcyNTA1NjVlLTA1XSwgWzE2MDE0MjgyODQuNzQzNTkxMywgNTg2MiwgMy42Njk0ODI5NzU5NjUzNjZlLTA1XSwgWzE2MDE0MjgyODUuMzI5OTA2NSwgNTg2NCwgMy42NjkxODg2NjM0Nzk4NzJlLTA1XSwgWzE2MDE0MjgyODcuMTUzMDEzMiwgNTg3MSwgMy42NjgxNTY5MzI2OTAxODFlLTA1XSwgWzE2MDE0MjgyOTUuOTkyMDAxNSwgNTkwNywgMy42NjI4Mjc2NTc1MzU2NzJlLTA1XSwgWzE2MDE0MjgzMDEuNDE0MTE4MywgNTkyOCwgMy42NTk3MDE1NDIzNDY3MzhlLTA1XSwgWzE2MDE0MjgzMDcuNDE5ODQ1LCA1OTUyLCAzLjY1NjExMjMxMjQ1NTY2MTZlLTA1XSwgWzE2MDE0MjgzMDguNjY0OTkwNCwgNTk1NywgMy42NTUzNjI1MjUwMjM1MmUtMDVdLCBbMTYwMTQyODMxMC4xMjY5NDkzLCA1OTYzLCAzLjY1NDQ2MTc2MTQ3MDg4NGUtMDVdLCBbMTYwMTQyODMxNi44NzU4Mjg3LCA1OTkwLCAzLjY1MDM5NDg2NDk2MjQzNmUtMDVdLCBbMTYwMTQyODMyMS45MzkxNjYzLCA2MDEwLCAzLjY0NzM2ODQzMDM5MjgxN2UtMDVdLCBbMTYwMTQyODMyMy4xNjEwMTA1LCA2MDE1LCAzLjY0NjYwOTkxMTgxMTUzOGUtMDVdLCBbMTYwMTQyODMzOC42NTkzNTU0LCA2MDc4LCAzLjYzNjk5MTA5NTg0NTU4NzZlLTA1XSwgWzE2MDE0MjgzNDkuNDEyNDk5NCwgNjEyMSwgMy42MzAzNTg2OTY2ODIzNzg2ZS0wNV0sIFsxNjAxNDI4MzUxLjk2MDE1MSwgNjEzMSwgMy42Mjg4MDg5MTc3MTA1NTc2ZS0wNV0sIFsxNjAxNDI4MzY0LjQyMjUzNDUsIDYxODEsIDMuNjIxMDE0NTQ4MTE2MzYzNmUtMDVdLCBbMTYwMTQyODM2OC45OTA2NTcsIDYyMDAsIDMuNjE4MDMzOTUyMDc5NzEzM2UtMDVdLCBbMTYwMTQyODM3Mi40NTcwMTgsIDYyMTMsIDMuNjE1OTg4NjgwMzk0MzY2NGUtMDVdLCBbMTYwMTQyODM3My44NzcxMTkzLCA2MjE5LCAzLjYxNTA0MjgwNTkwNDUyMjVlLTA1XSwgWzE2MDE0MjgzNzYuOTc2NzQ1LCA2MjMyLCAzLjYxMjk5MDI1ODI2MTU2MTRlLTA1XSwgWzE2MDE0MjgzOTEuMTU5NDAwNywgNjI4OSwgMy42MDM5MzI3ODI0MjU1NDVlLTA1XSwgWzE2MDE0MjgzOTYuOTgzODA0LCA2MzEyLCAzLjYwMDI1MTg3NTQ2ODUzZS0wNV0sIFsxNjAxNDI4Mzk4LjE1ODIyMTUsIDYzMTcsIDMuNTk5NDQ5NzAxMTQxNTY2ZS0wNV0sIFsxNjAxNDI4NDA0LjIxNjExNjQsIDYzNDEsIDMuNTk1NTg4NzE0MjMzNTk5NmUtMDVdLCBbMTYwMTQyODQwOS44OTU0MzUsIDYzNjMsIDMuNTkyMDM1NTAwMzMyNzEzZS0wNV0sIFsxNjAxNDI4NDEyLjk0NDg1OSwgNjM3NiwgMy41ODk5MjkxMTA2MDM0MDdlLTA1XSwgWzE2MDE0Mjg0MTkuMDIwNDY2LCA2NDAwLCAzLjU4NjAyODEwNTkyODU2MjZlLTA1XSwgWzE2MDE0Mjg0NDMuMTE2ODQyNSwgNjQ5NiwgMy41NzAyNjE0Njk1NzY1MDhlLTA1XSwgWzE2MDE0Mjg0NDQuMTkwMzE2LCA2NTAwLCAzLjU2OTU5ODYyOTgzNzg1NmUtMDVdLCBbMTYwMTQyODQ0OC45MzQxNDc4LCA2NTIwLCAzLjU2NjI3ODk3NDE3NjM4NDVlLTA1XSwgWzE2MDE0Mjg0NjIuMzM1MDMzNywgNjU3NCwgMy41NTcyNjAwNjA5MTU3MjM0ZS0wNV0sIFsxNjAxNDI4NDY1LjAzMDMyNCwgNjU4NCwgMy41NTU1ODExMzM2OTYyNTA2ZS0wNV0sIFsxNjAxNDI4NDY5LjU2MTIwOCwgNjYwMywgMy41NTIzODMzNTAzMjQ4MTdlLTA1XSwgWzE2MDE0Mjg0ODMuMTA0MTg0OSwgNjY1NywgMy41NDMyMzk2NTQzOTEwNzNlLTA1XSwgWzE2MDE0Mjg0ODUuMzk3MTU2NywgNjY2NiwgMy41NDE3MDgwNjUzMTMyODdlLTA1XSwgWzE2MDE0Mjg0ODkuMDc5NDEyNywgNjY4MSwgMy41MzkxNTAyMDI0MTQwMjFlLTA1XSwgWzE2MDE0Mjg0OTIuODMzNDg5NCwgNjY5NiwgMy41MzY1ODYxNTQ5NTA3ODI3ZS0wNV0sIFsxNjAxNDI4NDkzLjY2MzM2OSwgNjY5OSwgMy41MzYwNzI0NzIzNDMyMjFlLTA1XSwgWzE2MDE0Mjg0OTYuNDk5NTEyNywgNjcxMSwgMy41MzQwMTU5MjI5MjM1NzI0ZS0wNV0sIFsxNjAxNDI4NTAzLjIxMjU3MTEsIDY3MzgsIDMuNTI5MzczODYxOTY1NzIzZS0wNV0sIFsxNjAxNDI4NTA0LjE3OTE2NzMsIDY3NDIsIDMuNTI4Njg0NDY0OTgxNzc5NWUtMDVdLCBbMTYwMTQyODUwNy4wMDE2NjEzLCA2NzUzLCAzLjUyNjc4NjUzMTQzODEyZS0wNV0sIFsxNjAxNDI4NTMwLjQxNDczMDMsIDY4NDYsIDMuNTEwNjA3MzQ4Mjg5MzQxZS0wNV0sIFsxNjAxNDI4NTMyLjMwNTM4ODUsIDY4NTQsIDMuNTA5MjA0OTA3NDU5MjA3ZS0wNV0sIFsxNjAxNDI4NTM2LjA5OTAzLCA2ODY5LCAzLjUwNjU2OTkxOTQwOTIzMDRlLTA1XSwgWzE2MDE0Mjg1NTIuMjU0MTA5LCA2OTM0LCAzLjQ5NTA4MzM2NTEyMzcxOWUtMDVdLCBbMTYwMTQyODU2MC4yMjc0NDY2LCA2OTY2LCAzLjQ4OTM4NjY1NDEwOTY5NGUtMDVdLCBbMTYwMTQyODU2Ni42NjUyODk0LCA2OTkyLCAzLjQ4NDczODA0NDc4OTk5MmUtMDVdLCBbMTYwMTQyODU3Mi4yNjY1OTMsIDcwMTQsIDMuNDgwNzkwODM3Nzg0Mjk4ZS0wNV0sIFsxNjAxNDI4NTk1LjA1ODMxMDUsIDcxMDYsIDMuNDY0MTQ1MjY1NzUyNDQ5NmUtMDVdLCBbMTYwMTQyODU5Ni45MjI3ODk4LCA3MTE0LCAzLjQ2MjY4NzE2Mzg0NjU2N2UtMDVdLCBbMTYwMTQyODYwNy4yMTU4NjM3LCA3MTU1LCAzLjQ1NTE4ODkyNTcyNzI3MDVlLTA1XSwgWzE2MDE0Mjg2MjIuNjkzNTg1NCwgNzIxNiwgMy40NDM5NTIzMDA1ODU4MDY0ZS0wNV0sIFsxNjAxNDI4NjMwLjM1MzAwOTUsIDcyNDcsIDMuNDM4MjA1MDIxNjY2MzYzZS0wNV0sIFsxNjAxNDI4NjQzLjYwNDcyLCA3MzAwLCAzLjQyODMyMTcyNDY0MTEzN2UtMDVdLCBbMTYwMTQyODY0Ni4yMDU5OTg3LCA3MzExLCAzLjQyNjI2MTUzNzI0MjY4MWUtMDVdLCBbMTYwMTQyODY1MC44MTIxNjM4LCA3MzI5LCAzLjQyMjg4MzMxMDEyMjQxNTRlLTA1XSwgWzE2MDE0Mjg2NTMuMTgwNjczNCwgNzMzOSwgMy40MjEwMDMyMDI2NzQ5MTA0ZS0wNV0sIFsxNjAxNDI4NjUzLjQxMTUzNCwgNzM0MCwgMy40MjA4MTUxMTkxNzA1ODRlLTA1XSwgWzE2MDE0Mjg2NTguMjkwMjg1NiwgNzM1OSwgMy40MTcyMzUzNDgwMjQ0MDU1ZS0wNV0sIFsxNjAxNDI4NjYzLjg3MTM0NDMsIDczODIsIDMuNDEyODg5NDE4NTQxNDU0ZS0wNV0sIFsxNjAxNDI4NjY4LjUzMTI2MjQsIDc0MDEsIDMuNDA5Mjg5NjM4NTExODM2NWUtMDVdLCBbMTYwMTQyODY3OC4yODc1MzYsIDc0NDAsIDMuNDAxODcxNDM1OTI2Mjk2ZS0wNV0sIFsxNjAxNDI4Njc5LjE1NjkxNDcsIDc0NDMsIDMuNDAxMjk5MTgxODU5OTRlLTA1XSwgWzE2MDE0Mjg2ODAuODc2MTM2MywgNzQ1MCwgMy4zOTk5NjMzMTYwNDE5NzZlLTA1XSwgWzE2MDE0Mjg2ODMuMjM0Nzk0OSwgNzQ2MCwgMy4zOTgwNTI2NDk1NzI0OTE2ZS0wNV0sIFsxNjAxNDI4NjgzLjk0NjA1MzcsIDc0NjMsIDMuMzk3NDc4OTQwMzE0NjEzZS0wNV0sIFsxNjAxNDI4Njg3Ljc5ODksIDc0NzgsIDMuMzk0NjA3MTE5ODQ0Mjk1ZS0wNV0sIFsxNjAxNDI4Njk1LjkzOTg0MzQsIDc1MTEsIDMuMzg4MjY5Mzk2OTY0NDYwNmUtMDVdLCBbMTYwMTQyODcwMC44MjU5MDY4LCA3NTMwLCAzLjM4NDYwNzc3MTI5NTEyM2UtMDVdLCBbMTYwMTQyODcyMC4yMDU2NjMsIDc2MDksIDMuMzY5Mjg4OTcwMTM0MjIxZS0wNV0sIFsxNjAxNDI4NzI5LjA3MDk0NzQsIDc2NDQsIDMuMzYyNDUzMjA3OTU1Njk2ZS0wNV0sIFsxNjAxNDI4NzMzLjEwNjQ4MTYsIDc2NjEsIDMuMzU5MTIyMjc0NTU5OTIyNWUtMDVdLCBbMTYwMTQyODczNy4wNTI5ODUyLCA3Njc2LCAzLjM1NjE3NzMzMDcxNTU4MmUtMDVdLCBbMTYwMTQyODczOS42Mjk5NDg0LCA3Njg3LCAzLjM1NDAxNDE4ODUxNjg4NWUtMDVdLCBbMTYwMTQyODc0MS4wMzQ0MTc5LCA3NjkzLCAzLjM1MjgzMzMwMDU5NjEwM2UtMDVdLCBbMTYwMTQyODc1NC4yNjI1ODAyLCA3NzQ2LCAzLjM0MjM2MjQ2OTk5MzUzMmUtMDVdLCBbMTYwMTQyODc1Ny44OTI0OTcsIDc3NjAsIDMuMzM5NTg1MjM2OTcyMTk4ZS0wNV0sIFsxNjAxNDI4NzYyLjY0OTAwNjgsIDc3ODAsIDMuMzM1NjA5NjUzNzMxODA4ZS0wNV0sIFsxNjAxNDI4NzY0LjgzMzA5NSwgNzc4OCwgMy4zMzQwMTY5NDY2MTAwNjNlLTA1XSwgWzE2MDE0Mjg3NjcuMjc2MzY2MiwgNzc5OCwgMy4zMzIwMjM2OTgwMjE2NThlLTA1XSwgWzE2MDE0Mjg3NzUuOTEzMzQwMywgNzgzMywgMy4zMjUwMjg1OTIzNzEzODJlLTA1XSwgWzE2MDE0Mjg3OTIuNjg5Njg4NywgNzkwMCwgMy4zMTE1NTc1MjA2NDY2MDJlLTA1XSwgWzE2MDE0Mjg4MDAuODE3NzE5NywgNzkzMiwgMy4zMDUwODYyODM5NDQ1NDdlLTA1XSwgWzE2MDE0Mjg4MTUuMzI5NDc5NywgNzk5MSwgMy4yOTMwOTIyMzE2MTU0NDY1ZS0wNV0sIFsxNjAxNDI4ODIzLjk4OTUzOTksIDgwMjYsIDMuMjg1OTM5MjM3Njg0OTQzZS0wNV0sIFsxNjAxNDI4ODI2LjYwNjA5MDgsIDgwMzcsIDMuMjgzNjg1NTA5ODEzOTQ5NWUtMDVdLCBbMTYwMTQyODgyOS44Mjg0OTA1LCA4MDQ5LCAzLjI4MTIyMzMyNTc1NzMxZS0wNV0sIFsxNjAxNDI4ODMzLjgyNTgyMzgsIDgwNjYsIDMuMjc3NzI5Nzc0NzA4ODU5NmUtMDVdLCBbMTYwMTQyODg2Mi4zMzYxNTQyLCA4MTgwLCAzLjI1NDEzMzQ4MDM2ODE4MmUtMDVdLCBbMTYwMTQyODg2My4zMDkxNTUsIDgxODQsIDMuMjUzMzAwMzgzMjIxMzU4ZS0wNV0sIFsxNjAxNDI4ODcxLjE3MTE0MjgsIDgyMTUsIDMuMjQ2ODMwMjM3OTEyOTQ1NGUtMDVdLCBbMTYwMTQyODg3Mi43NDY5MDk0LCA4MjIxLCAzLjI0NTU3NTQ5OTAyMjM3OTVlLTA1XSwgWzE2MDE0Mjg4ODcuMDQ5OTgwOSwgODI3OSwgMy4yMzM0MDUzNjg1MTkwMTU2ZS0wNV0sIFsxNjAxNDI4ODg5LjYzMjI2MiwgODI5MCwgMy4yMzEwODg3MDM2MTQ2NTk2ZS0wNV0sIFsxNjAxNDI4ODk4Ljc2NDE2MzcsIDgzMjcsIDMuMjIzMjc3MjM1NTIwMDcyZS0wNV0sIFsxNjAxNDI4OTAwLjIyMDY5MjYsIDgzMzIsIDMuMjIyMjE5MzExMjgyOTdlLTA1XSwgWzE2MDE0Mjg5MDAuODIwOTUsIDgzMzQsIDMuMjIxNzk2MjE0MzQ3NzA1ZS0wNV0sIFsxNjAxNDI4OTAyLjIzMzYzMywgODM0MCwgMy4yMjA1MjU4MzIxNDgyNjllLTA1XSwgWzE2MDE0Mjg5MDcuOTc3NzA1NSwgODM2MywgMy4yMTU2NDgzOTM5NjE2MDFlLTA1XSwgWzE2MDE0Mjg5MDkuMTQzNTg1NCwgODM2OCwgMy4yMTQ1ODY0Njc5NDc4MTFlLTA1XSwgWzE2MDE0Mjg5MTEuMjc2MDYzNCwgODM3NywgMy4yMTI2NzM5ODI0ODg5MjNlLTA1XSwgWzE2MDE0Mjg5MzMuNjc1Nzc4OSwgODQ2NywgMy4xOTM0NTEyNjYyNzAxMzFlLTA1XSwgWzE2MDE0Mjg5MzQuNDIzMzc5NywgODQ3MCwgMy4xOTI4MDczNDQwMjEyNzU2ZS0wNV0sIFsxNjAxNDI4OTQxLjMwODU0NjUsIDg0OTgsIDMuMTg2NzkwMTI3MDc0MzQ2ZS0wNV0sIFsxNjAxNDI4OTQ0LjA5NzYzMzQsIDg1MDgsIDMuMTg0NjM2ODA3NDE4NDI4NGUtMDVdLCBbMTYwMTQyODk1OC41MDkwNDY2LCA4NTY2LCAzLjE3MjEwNjg4MDgxMTA0M2UtMDVdLCBbMTYwMTQyODk2NS4wNzY1NDUyLCA4NTkyLCAzLjE2NjQ2NzI4NjA2NDI4OTVlLTA1XSwgWzE2MDE0Mjg5NjcuMTk0OTExLCA4NjAxLCAzLjE2NDUxMTUwODY1NzU5N2UtMDVdLCBbMTYwMTQyODk3NS4zODM0Njc3LCA4NjM0LCAzLjE1NzMyNjg2NDMxMTQ3MTZlLTA1XSwgWzE2MDE0Mjg5NzUuNjE4MTEzMywgODYzNSwgMy4xNTcxMDg5NDkzODA5MjdlLTA1XSwgWzE2MDE0Mjg5NzcuODMzODgsIDg2NDQsIDMuMTU1MTQ1NTMyMjE4NzM5NGUtMDVdLCBbMTYwMTQyODk4OS4zMDYzMDA0LCA4NjkwLCAzLjE0NTA4MzYxMDQzNDA4NWUtMDVdLCBbMTYwMTQyODk5MC40ODYzOTY4LCA4Njk1LCAzLjE0Mzk4NzEyMzYyMTYyOGUtMDVdLCBbMTYwMTQyOTAxNi44ODYzNjc2LCA4ODAxLCAzLjEyMDYyNTg0MjcxMTg4OGUtMDVdLCBbMTYwMTQyOTAyMS4yODYxNzIyLCA4ODE5LCAzLjExNjYzNjQzNTE1MjAzMTVlLTA1XSwgWzE2MDE0MjkwMjIuMTMwNzU1MiwgODgyMiwgMy4xMTU5NzEwNDg4MjgyMTQ0ZS0wNV0sIFsxNjAxNDI5MDI3LjEwMzM0NzUsIDg4NDMsIDMuMTExMzA3MTU5OTk3NTIzZS0wNV0sIFsxNjAxNDI5MDM1LjkzMTE5OCwgODg3OCwgMy4xMDM1MTQ2MDkzOTI3MzI0ZS0wNV0sIFsxNjAxNDI5MDM3LjY5NTM0OSwgODg4NSwgMy4xMDE5NTMxODg4ODg3Mjg2ZS0wNV0sIFsxNjAxNDI5MDQxLjczODU3NzEsIDg5MDIsIDMuMDk4MTU3MzIxODAxNDA5ZS0wNV0sIFsxNjAxNDI5MDQyLjMxOTI5MjMsIDg5MDQsIDMuMDk3NzEwNTc4MDAzODk4ZS0wNV0sIFsxNjAxNDI5MDQzLjE2Njk1MTcsIDg5MDcsIDMuMDk3MDM5NzM0NzExODcwNmUtMDVdLCBbMTYwMTQyOTA0OC4xMzkxNjk3LCA4OTI4LCAzLjA5MjM0MDkyMTI4NDYzMWUtMDVdLCBbMTYwMTQyOTA1MC4wMzYxNTI0LCA4OTM1LCAzLjA5MDc3MjU4ODYyMDg5MzdlLTA1XSwgWzE2MDE0MjkwNTUuNTQzMTgwMiwgODk1OCwgMy4wODU2MTI4NDMyNzg3OTU1ZS0wNV0sIFsxNjAxNDI5MDU5Ljg4OTkwNSwgODk3NSwgMy4wODE3OTI2MDE3MzM0Njg1ZS0wNV0sIFsxNjAxNDI5MDY0LjMzMjc5NDIsIDg5OTMsIDMuMDc3NzQxNzEyMzMxNzcyZS0wNV0sIFsxNjAxNDI5MDY1Ljg5Njg4MjgsIDg5OTksIDMuMDc2MzkwMjAzMjA0OTM3ZS0wNV0sIFsxNjAxNDI5MDY4LjIzMTkyMDIsIDkwMDksIDMuMDc0MTM1NzQ3NzM4MTgyNWUtMDVdLCBbMTYwMTQyOTA3OS43OTQxNDA2LCA5MDU1LCAzLjA2Mzc0MDU4NzA5NDc5OWUtMDVdLCBbMTYwMTQyOTA4MS42NzQzMTYsIDkwNjMsIDMuMDYxOTI4ODczNjQ4ODY3ZS0wNV0sIFsxNjAxNDI5MDg2Ljk5ODM0MDEsIDkwODQsIDMuMDU3MTY2NzU5MzkwMzg0ZS0wNV0sIFsxNjAxNDI5MTA0LjU1NDY5MTgsIDkxNTUsIDMuMDQxMDA0ODU2NjQwOTM4N2UtMDVdLCBbMTYwMTQyOTEyMi4zNTI1MTMsIDkyMjYsIDMuMDI0NzQ5MDk0MDM4MjcwNGUtMDVdLCBbMTYwMTQyOTEyNC4wMTIyOTcsIDkyMzMsIDMuMDIzMTQxNDcxMjAzNDE2NmUtMDVdLCBbMTYwMTQyOTEzMC43ODQ4OTE2LCA5MjYwLCAzLjAxNjkzMTk4NzA3NjUzMmUtMDVdLCBbMTYwMTQyOTE0Mi40NDU0OTksIDkzMDcsIDMuMDA2MDkxMTc0MDI5Mjc5NWUtMDVdLCBbMTYwMTQyOTE0NC43MDExNTA3LCA5MzE2LCAzLjAwNDAxMDc5NTg0ODQ0NGUtMDVdLCBbMTYwMTQyOTE1Mi41NjY2OTU3LCA5MzQ4LCAyLjk5NjYwMjA1MjAwNzgwMmUtMDVdLCBbMTYwMTQyOTE1Ny44NjY5NTkzLCA5MzY5LCAyLjk5MTczMDA3MDc4OTM0NDZlLTA1XSwgWzE2MDE0MjkxNjguMzcxMzU2MiwgOTQxMiwgMi45ODE3Mjk4MTI3NDU0NzA2ZS0wNV0sIFsxNjAxNDI5MTY5LjA3MjM1OTYsIDk0MTUsIDIuOTgxMDMwOTU3MDE2NjI4MmUtMDVdLCBbMTYwMTQyOTE3NC4xMzIyMjg0LCA5NDM1LCAyLjk3NjM2NzYxMzg4Mjc1NzdlLTA1XSwgWzE2MDE0MjkxNzUuNzY2Nzc1NCwgOTQ0MiwgMi45NzQ3MzM3OTc2MDA0OTNlLTA1XSwgWzE2MDE0MjkxODIuMjIwMjQwNCwgOTQ2OCwgMi45Njg2NTc2NDUzOTY4ODgzZS0wNV0sIFsxNjAxNDI5MTk5LjU4NDg2OSwgOTUzOCwgMi45NTIyNDEyNjYwMjk4ODdlLTA1XSwgWzE2MDE0MjkyMDEuODU1NTE2NCwgOTU0NywgMi45NTAxMjQ1MDgwNjA5ODA2ZS0wNV0sIFsxNjAxNDI5MjAzLjQ4OTUwNzQsIDk1NTQsIDIuOTQ4NDc3MjMxMjU3MTI5NWUtMDVdLCBbMTYwMTQyOTIwNi43NzgyODEyLCA5NTY3LCAyLjk0NTQxNTY5MDE5MjAyMTRlLTA1XSwgWzE2MDE0MjkyMTIuMDcwNjE0LCA5NTg5LCAyLjk0MDIyODExNDMxMjA0OWUtMDVdLCBbMTYwMTQyOTIyMS43MzcxMzk1LCA5NjI3LCAyLjkzMTI0ODY3MzEyMTQ0NWUtMDVdLCBbMTYwMTQyOTIyNy41NTQ1ODAyLCA5NjUxLCAyLjkyNTU2NTI0MDczMDA2NmUtMDVdLCBbMTYwMTQyOTIyOS4xODUyMTYsIDk2NTcsIDIuOTI0MTQyNzkxMDE2NDkzZS0wNV0sIFsxNjAxNDI5MjM0Ljc5MjczLCA5NjgwLCAyLjkxODY4NDczMTQxMjIxMzNlLTA1XSwgWzE2MDE0MjkyMzkuMjE5NDkzNiwgOTY5OCwgMi45MTQ0MDcxOTU5MzA4MzVlLTA1XSwgWzE2MDE0MjkyNTYuNjYxNTEzOCwgOTc2OCwgMi44OTc3MjIzMzM3Mjc4N2UtMDVdLCBbMTYwMTQyOTI2Ny41NTY1MjksIDk4MTIsIDIuODg3MTk0MjA0OTU5MDg3ZS0wNV0sIFsxNjAxNDI5Mjc0LjQzODQyMzksIDk4NDAsIDIuODgwNDc4NDk2MDgxMTk1OGUtMDVdLCBbMTYwMTQyOTI3NS4xNDE0OTU1LCA5ODQzLCAyLjg3OTc1ODM1ODE3NjMzMmUtMDVdLCBbMTYwMTQyOTI4NS4yNDcxMjMyLCA5ODgzLCAyLjg3MDE0MTE3OTMwMDg0NDdlLTA1XSwgWzE2MDE0MjkyOTEuMDQ2NjMwNiwgOTkwNywgMi44NjQzNTg5NzU3ODQ4NTNlLTA1XSwgWzE2MDE0MjkzMDcuMzk5NTYzLCA5OTcyLCAyLjg0ODY1NDM2Njk3MTQ1OTJlLTA1XSwgWzE2MDE0MjkzMjYuNDI4MTcyOCwgMTAwNTAsIDIuODI5NzI0MzI2MTQ3Njk4ZS0wNV0sIFsxNjAxNDI5MzI3Ljg2NzUxNjgsIDEwMDU1LCAyLjgyODUwNzc4NjAzNDYwNjRlLTA1XSwgWzE2MDE0MjkzMjguNzEyMzQyNywgMTAwNTgsIDIuODI3Nzc3NjQzNjg4MDIzZS0wNV0sIFsxNjAxNDI5MzM1LjA3ODAzOSwgMTAwODQsIDIuODIxNDQ0NDY4MjgxNjk3NWUtMDVdLCBbMTYwMTQyOTM0MC42NzExNzU3LCAxMDEwNywgMi44MTU4MzM3OTU0NjY0NjAzZS0wNV0sIFsxNjAxNDI5MzQ2LjAwNTY4NDksIDEwMTI4LCAyLjgxMDcwNDA2MzQ0OTUyMDZlLTA1XSwgWzE2MDE0MjkzNTAuMTMwOTA5NCwgMTAxNDQsIDIuODA2NzkxNTk5MTQxNDM0ZS0wNV0sIFsxNjAxNDI5MzU1Ljk1MTA4MTgsIDEwMTY4LCAyLjgwMDkxNTg5OTU3MDFlLTA1XSwgWzE2MDE0MjkzNjAuMTMzNzM3NiwgMTAxODUsIDIuNzk2NzQ4Nzc2NzQ1NTE2OGUtMDVdLCBbMTYwMTQyOTM3Ny44NDM3NywgMTAyNTYsIDIuNzc5MzAxMzk0MTg0NTg1N2UtMDVdLCBbMTYwMTQyOTM4Mi41ODE0MzE2LCAxMDI3NiwgMi43NzQzNzM5MzM3ODkzMjAzZS0wNV0sIFsxNjAxNDI5Mzg0LjQzMDIwOTQsIDEwMjgzLCAyLjc3MjY0Nzg5NDc0NDI5NTZlLTA1XSwgWzE2MDE0Mjk0MTIuNTI3MzY3NCwgMTAzOTYsIDIuNzQ0NjkzNjY1NTkwNjAzZS0wNV0sIFsxNjAxNDI5NDEzLjM4MTQ1MTgsIDEwMzk5LCAyLjc0Mzk0OTE1MzIyNzczMTZlLTA1XSwgWzE2MDE0Mjk0MTguNDY0NDY4LCAxMDQyMCwgMi43Mzg3MzQ0NzQ0MDU2NDYzZS0wNV0sIFsxNjAxNDI5NDE5LjcyMDI1NTksIDEwNDI1LCAyLjczNzQ5MTkyMjc0NDA4NGUtMDVdLCBbMTYwMTQyOTQzMi45ODkyOTc0LCAxMDQ3OSwgMi43MjQwNTIzMTk1MzU5ODU2ZS0wNV0sIFsxNjAxNDI5NDM1LjY3MDM2LCAxMDQ4OSwgMi43MjE1NTkzOTQ1NTg0MjZlLTA1XSwgWzE2MDE0Mjk0MzYuNjAyMTE1MiwgMTA0OTMsIDIuNzIwNTYxNjc4ODcwNTgxZS0wNV0sIFsxNjAxNDI5NDQzLjg2MzI0MzgsIDEwNTIyLCAyLjcxMzMyMzM3NDMzNzA1MWUtMDVdLCBbMTYwMTQyOTQ1MS43NjMzMzk4LCAxMDU1NCwgMi43MDUzMjM2NDA4MzkxOTY3ZS0wNV0sIFsxNjAxNDI5NDUxLjk5NTg3MTgsIDEwNTU1LCAyLjcwNTA3MzUyOTc5NjIwOTJlLTA1XSwgWzE2MDE0Mjk0NjIuNTkzMjA1NSwgMTA1OTgsIDIuNjk0MzAzMTExNjM4ODczOGUtMDVdLCBbMTYwMTQyOTQ2NC45ODAzOTM2LCAxMDYwNywgMi42OTIwNDU5Mjc2ODgwMTM4ZS0wNV0sIFsxNjAxNDI5NDY5LjAwMzIyNzIsIDEwNjI0LCAyLjY4Nzc3OTY2OTk0MDkzNzNlLTA1XSwgWzE2MDE0Mjk0NzAuNDI2MTQ1OCwgMTA2MjksIDIuNjg2NTI0MjAzNDU0NjFlLTA1XSwgWzE2MDE0Mjk0NzIuNzAyNjU1MywgMTA2MzgsIDIuNjg0MjYzNTYzNDIzODgzMmUtMDVdLCBbMTYwMTQyOTQ3Ni41Mjg4NjA2LCAxMDY1NCwgMi42ODAyNDIzMjM1NDk0NjQzZS0wNV0sIFsxNjAxNDI5NDgwLjg0MjczNzQsIDEwNjcxLCAyLjY3NTk2NjI0MzI1OTYwODdlLTA1XSwgWzE2MDE0Mjk0OTAuNzE2MTA3OCwgMTA3MTEsIDIuNjY1ODkxMjI0NzUxMjQ5ZS0wNV0sIFsxNjAxNDI5NTAwLjA2NTU0MiwgMTA3NDgsIDIuNjU2NTU0ODk3ODM5NjY5ZS0wNV0sIFsxNjAxNDI5NTAyLjIwMjgxNTgsIDEwNzU3LCAyLjY1NDI4MTM0Mjk4NDE3NzJlLTA1XSwgWzE2MDE0Mjk1MDIuNDM1NzgwNSwgMTA3NTgsIDIuNjU0MDI4Njg1MzU2MDI0N2UtMDVdLCBbMTYwMTQyOTUwOC4wNDQwMzkyLCAxMDc4MCwgMi42NDg0NjcxMjUyNTQ2ODMyZS0wNV0sIFsxNjAxNDI5NTA5LjcwMDIxNTgsIDEwNzg3LCAyLjY0NjY5NjMzOTA3MDMzMTNlLTA1XSwgWzE2MDE0Mjk1MTYuNjI5MjE5NSwgMTA4MTUsIDIuNjM5NjA3NzM3MzY0NzEzZS0wNV0sIFsxNjAxNDI5NTE5LjA3MjgzOTMsIDEwODI1LCAyLjYzNzA3Mzg4NTEyNTU3MzdlLTA1XSwgWzE2MDE0Mjk1MjAuNTAzNjgyMSwgMTA4MzAsIDIuNjM1ODA2NTk1MjA4MTIzM2UtMDVdLCBbMTYwMTQyOTUyMy4xNzg3NCwgMTA4NDEsIDIuNjMzMDE3MzU2ODU2NzI2ZS0wNV0sIFsxNjAxNDI5NTI1LjI3MzAyODQsIDEwODUwLCAyLjYzMDczNDM0MzI1NjMzNTdlLTA1XSwgWzE2MDE0Mjk1MjguOTQ3NjM5NSwgMTA4NjQsIDIuNjI3MTgwOTQ3NDU2NTA5ZS0wNV0sIFsxNjAxNDI5NTM4LjIzODEwMDgsIDEwOTAyLCAyLjYxNzUyNTM4NzkwNDYwNjhlLTA1XSwgWzE2MDE0Mjk1MzguOTQ5NzE3NSwgMTA5MDUsIDIuNjE2NzYyNTAzNzQ4NzU5NmUtMDVdLCBbMTYwMTQyOTU0Ny40MjcxNTIsIDEwOTM5LCAyLjYwODEwODY2MTY2MTM5MDJlLTA1XSwgWzE2MDE0Mjk1NDguNTY0MzIxLCAxMDk0MywgMi42MDcwODk2NjM3OTc1MjM4ZS0wNV0sIFsxNjAxNDI5NTU0LjE3NTMwOCwgMTA5NjYsIDIuNjAxMjI3NDI0NzQ3Nzc2MmUtMDVdLCBbMTYwMTQyOTU1NS43NzE2NiwgMTA5NzIsIDIuNTk5Njk3MjkwODYxNTEzNWUtMDVdLCBbMTYwMTQyOTU1Ni4zNDc0NjQsIDEwOTc0LCAyLjU5OTE4NzA2NDMzMzgxOWUtMDVdLCBbMTYwMTQyOTU2Ni4yMDc3MTA3LCAxMTAxNCwgMi41ODg5NzUwNzU5MjMzNzJlLTA1XSwgWzE2MDE0Mjk1NjcuNjQzNDY5OCwgMTEwMjAsIDIuNTg3NDQxNjY3ODU2MTgzZS0wNV0sIFsxNjAxNDI5NTcxLjA2Mzk2MTMsIDExMDMzLCAyLjU4NDExODM3NDIxNTkwNDZlLTA1XSwgWzE2MDE0Mjk1NzIuMjMwNjYzOCwgMTEwMzgsIDIuNTgyODM5NjI0NjY1MjEyZS0wNV0sIFsxNjAxNDI5NTg4LjE4OTA3NzEsIDExMTAyLCAyLjU2NjQ0OTYyMDY0NDU2MmUtMDVdLCBbMTYwMTQyOTU5My4wNTcxNDg3LCAxMTEyMSwgMi41NjE1NzU4MjA0MzY3MDEyZS0wNV0sIFsxNjAxNDI5NTk1LjE2MjgyOTIsIDExMTMwLCAyLjU1OTI2NTg4NTc5MzEzODNlLTA1XSwgWzE2MDE0Mjk1OTkuNzQ0NjU0NCwgMTExNDgsIDIuNTU0NjQzNjUxODE5Nzg4ZS0wNV0sIFsxNjAxNDI5NjA2LjM1ODY3OTUsIDExMTc1LCAyLjU0NzcwNDIwNzI0NTI2MDVlLTA1XSwgWzE2MDE0Mjk2MTEuODk5NDc5NCwgMTExOTgsIDIuNTQxNzg3MjE2NjE0NDY2ZS0wNV0sIFsxNjAxNDI5NjEyLjUwMDMzMDcsIDExMjAwLCAyLjU0MTI3MjQ0MjYxMzI2MjdlLTA1XSwgWzE2MDE0Mjk2MTIuNzg4MzU0NiwgMTEyMDEsIDIuNTQxMDE1MDU1NjEyNjYxZS0wNV0sIFsxNjAxNDI5NjI3LjQyODQ5ODcsIDExMjYwLCAyLjUyNTgxMTU3ODM3OTk0NGUtMDVdLCBbMTYwMTQyOTYzMC40MDI2MDkzLCAxMTI3MiwgMi41MjI3MTU0NzY1MTYxNjg2ZS0wNV0sIFsxNjAxNDI5NjM5Ljc4MDI4MzcsIDExMzEwLCAyLjUxMjkwMTg0Njc4NTA5ODNlLTA1XSwgWzE2MDE0Mjk2NTIuNTAxMjE1NSwgMTEzNjEsIDIuNDk5NzEwMTcxODMyNzAzZS0wNV0sIFsxNjAxNDI5NjY2Ljk2Nzg0MTksIDExNDE5LCAyLjQ4NDY3OTY4MDQ5MjI2MzNlLTA1XSwgWzE2MDE0Mjk2NzUuNzk4NjI3LCAxMTQ1NSwgMi40NzUzMzU3MTM4MjUxODg2ZS0wNV0sIFsxNjAxNDI5NjgwLjE2NDU4ODUsIDExNDcyLCAyLjQ3MDkxOTM4OTQ1MjMxOTZlLTA1XSwgWzE2MDE0Mjk2ODUuMjY5OTc4MywgMTE0OTIsIDIuNDY1NzIwNzE3NzM2OTg1NWUtMDVdLCBbMTYwMTQyOTY5Mi44NzE3NDAzLCAxMTUyMywgMi40NTc2NTYyMjgyMTYzNjVlLTA1XSwgWzE2MDE0Mjk2OTQuOTk3NjMxOCwgMTE1MzIsIDIuNDU1MzEzMzY5ODY0NTk4ZS0wNV0sIFsxNjAxNDI5Njk5LjQxODY5NDUsIDExNTQ5LCAyLjQ1MDg4NjMxMzQ1NDI0OGUtMDVdLCBbMTYwMTQyOTcwMS4zMjI1NDQzLCAxMTU1NywgMi40NDg4MDIxMTUzOTU2NjVlLTA1XSwgWzE2MDE0Mjk3MDMuNDQ2MjYzLCAxMTU2NiwgMi40NDY0NTY3MTA0NTg3MzNlLTA1XSwgWzE2MDE0Mjk3MTEuMTM2ODI4NCwgMTE1OTcsIDIuNDM4MzczNjY3MjQ2MTk2NGUtMDVdLCBbMTYwMTQyOTcyMC45OTg3NTA3LCAxMTYzNiwgMi40MjgxOTM4NzQ5NDgxOTI0ZS0wNV0sIFsxNjAxNDI5NzIzLjgwOTc1NjMsIDExNjQ4LCAyLjQyNTA1OTM5MjQwODAwMmUtMDVdLCBbMTYwMTQyOTcyNi44Mjc1NjMzLCAxMTY2MCwgMi40MjE5MjM2MzY1NzUyMjk1ZS0wNV0sIFsxNjAxNDI5NzI5LjY4MDk5MTIsIDExNjcxLCAyLjQxOTA0ODM2MDAyNTA0NDVlLTA1XSwgWzE2MDE0Mjk3MzIuOTg5MjcyOCwgMTE2ODUsIDIuNDE1Mzg3NDYxOTUxNDY4ZS0wNV0sIFsxNjAxNDI5NzMzLjU0NjY1NjgsIDExNjg3LCAyLjQxNDg2NDMyMDU5OTAwODRlLTA1XSwgWzE2MDE0Mjk3NDIuNjc5Njk3OCwgMTE3MjMsIDIuNDA1NDQzNTkyNTc5MTA0ZS0wNV0sIFsxNjAxNDI5NzUxLjUzMzgyODUsIDExNzU5LCAyLjM5NjAxMzU4NzcxMzI0MTZlLTA1XSwgWzE2MDE0Mjk3NTguMjM1MjU4NiwgMTE3ODYsIDIuMzg4OTM0OTkwNDQ5MzQzZS0wNV0sIFsxNjAxNDI5NzYxLjc4NzA3ODQsIDExODAxLCAyLjM4NTAwMDE1MjU3MTU5MjVlLTA1XSwgWzE2MDE0Mjk3NjkuMjM0MDA2MiwgMTE4MzEsIDIuMzc3MTI2MTExMjQxNTIzMmUtMDVdLCBbMTYwMTQyOTc3OS43NTU1NDY2LCAxMTg3MywgMi4zNjYwOTIxMjE1MTk2MTRlLTA1XSwgWzE2MDE0Mjk3OTQuNzUxNjg4NSwgMTE5MzMsIDIuMzUwMzA5Mjk2MTYxODY3N2UtMDVdLCBbMTYwMTQyOTc5Ny44NzY1MTIsIDExOTQ2LCAyLjM0Njg4NjY4NTcwMDE1NThlLTA1XSwgWzE2MDE0Mjk3OTguNTA5Njk0NiwgMTE5NDgsIDIuMzQ2MzYwMDg4MjY3ODI5M2UtMDVdLCBbMTYwMTQyOTgwMy42MjEzMzU3LCAxMTk2OSwgMi4zNDA4Mjg5MDUyODk1MjdlLTA1XSwgWzE2MDE0Mjk4MDQuODE1ODMxLCAxMTk3NCwgMi4zMzk1MTE0MTEyNjQ1Mzg4ZS0wNV0sIFsxNjAxNDI5ODA4LjUxODk4NiwgMTE5ODgsIDIuMzM1ODIxOTU1MDU3MzI2N2UtMDVdLCBbMTYwMTQyOTgxMC44NjcyMjMsIDExOTk4LCAyLjMzMzE4NjA1NzUxMjY0ODRlLTA1XSwgWzE2MDE0Mjk4MTIuMDc2OTgzNSwgMTIwMDMsIDIuMzMxODY3ODM1ODkxODk4N2UtMDVdLCBbMTYwMTQyOTgxNC4wNTg3ODg1LCAxMjAxMCwgMi4zMzAwMjE5MjU0NDUxODA0ZS0wNV0sIFsxNjAxNDI5ODE4LjU5MDM1NzMsIDEyMDI5LCAyLjMyNTAxMDQyNzczOTQ3MTJlLTA1XSwgWzE2MDE0Mjk4MjEuNzk0NTE2NiwgMTIwNDEsIDIuMzIxODQ0Mjk0NzgzNjU5M2UtMDVdLCBbMTYwMTQyOTg0NS43NzA4MTQ0LCAxMjEzOCwgMi4yOTYyMjExMDA1NTA2MTA2ZS0wNV0sIFsxNjAxNDI5ODQ5LjY5MDY3NzQsIDEyMTUzLCAyLjI5MjI1NDI0ODQ1OTM1NzhlLTA1XSwgWzE2MDE0Mjk4NTIuMzA4MDg1LCAxMjE2NCwgMi4yODkzNDQ0MTExMTA1MDU1ZS0wNV0sIFsxNjAxNDI5ODUzLjI2NzMwOSwgMTIxNjgsIDIuMjg4Mjg2MTIzMDc1NTIyNWUtMDVdLCBbMTYwMTQyOTg1Ny4zNTQ0NjMzLCAxMjE4NCwgMi4yODQwNTIyNDMzMzk4MjllLTA1XSwgWzE2MDE0Mjk4NjUuNTgwNjY4NCwgMTIyMTcsIDIuMjc1MzE1ODE5MTMzNTM4OGUtMDVdLCBbMTYwMTQyOTg2Ny42NzU0MTE1LCAxMjIyNiwgMi4yNzI5MzIyMTU0MTkxMzIzZS0wNV0sIFsxNjAxNDI5ODgzLjUxMjM4MDEsIDEyMjkwLCAyLjI1NTk3MDg2NjgyNjgyODZlLTA1XSwgWzE2MDE0Mjk4ODQuMzk2MzYzMywgMTIyOTMsIDIuMjU1MTc1MjQwODYxNzE3NmUtMDVdLCBbMTYwMTQyOTg4OC4zOTAwOTI2LCAxMjMwOSwgMi4yNTA5MzE3MjA0ODIxODU1ZS0wNV0sIFsxNjAxNDI5OTEwLjExNDc5NjksIDEyMzk2LCAyLjIyNzgzODAxMjkxMzcwNzZlLTA1XSwgWzE2MDE0Mjk5MTIuMjIyNDc4NiwgMTI0MDUsIDIuMjI1NDQ3MTMzMjQxNjg3ZS0wNV0sIFsxNjAxNDI5OTE5LjkwNTY0NTYsIDEyNDM2LCAyLjIxNzIwOTQ3NTkyOTg0OWUtMDVdLCBbMTYwMTQyOTkyNS4zMjExNDUsIDEyNDU4LCAyLjIxMTM2MTI0MzA5ODUwODZlLTA1XSwgWzE2MDE0Mjk5MzAuODEyMzU0LCAxMjQ4MCwgMi4yMDU1MTExOTEyNzc3NjQ3ZS0wNV0sIFsxNjAxNDMwMDI5LjMyNTUyODEsIDEyNTQ1LCAyLjE4ODIxNjYwMzgyNjczMTRlLTA1XSwgWzE2MDE0MzAwMzEuOTYyMjk0OCwgMTI1NTMsIDIuMTg2MDg3MTEyOTMyMDAwM2UtMDVdLCBbMTYwMTQzMDA0Ni4wNjMyMzc0LCAxMjU5NiwgMi4xNzQ2MzY5Mzg0MzQ1NmUtMDVdLCBbMTYwMTQzMDA1NS41NjE4MjMxLCAxMjYyNSwgMi4xNjY5MTE2OTA0Mzc3MDA2ZS0wNV0sIFsxNjAxNDMwMDcwLjY2MjgzMTMsIDEyNjcxLCAyLjE1NDY1MjQyOTQ1MzU2M2UtMDVdLCBbMTYwMTQzMDA3OS42ODI0NjM2LCAxMjY5OSwgMi4xNDcxODc0Nzg4NDAzNTFlLTA1XSwgWzE2MDE0MzAwOTguMjQwMjcyLCAxMjc1OCwgMi4xMzE0NTEwMzc3MTIzOTUyZS0wNV0sIFsxNjAxNDMwMTAyLjU1ODU0NDQsIDEyNzc0LCAyLjEyNzE4MjA1MTQ4MTIxMzRlLTA1XSwgWzE2MDE0MzAxMTAuMjU4OTkwNSwgMTI4MDUsIDIuMTE4OTA5Mjg3NjczODg3ZS0wNV0sIFsxNjAxNDMwMTE3LjQ2NzcxMDMsIDEyODM0LCAyLjExMTE2ODM5NjM2ODE1N2UtMDVdLCBbMTYwMTQzMDEyMy43MjE5NzcsIDEyODU5LCAyLjEwNDQ5Mzk3ODU0OTcyNjNlLTA1XSwgWzE2MDE0MzAxMjQuOTExMzQwMiwgMTI4NjQsIDIuMTAzMTU4ODQwMzI3NTIzNmUtMDVdLCBbMTYwMTQzMDEyNy45OTc1MDg1LCAxMjg3NywgMi4wOTk2ODc0ODA5NDk3OTY3ZS0wNV0sIFsxNjAxNDMwMTMyLjg0NzI2MjYsIDEyODk2LCAyLjA5NDYxMzU5MTkwNzU0NmUtMDVdLCBbMTYwMTQzMDE0My41NjY3MiwgMTI5MzksIDIuMDgzMTI3OTQ3MTE2NzM2M2UtMDVdLCBbMTYwMTQzMDE0OC4zNzYxNDA4LCAxMjk1OSwgMi4wNzc3ODQ4NDc2NDI3NjA3ZS0wNV0sIFsxNjAxNDMwMTYyLjc1NzY0NjgsIDEzMDE3LCAyLjA2MjI4NzA1NzkyNDU1ZS0wNV0sIFsxNjAxNDMwMTY3LjEzODIwNjUsIDEzMDM0LCAyLjA1Nzc0Mzc2ODA5MTMxMzVlLTA1XSwgWzE2MDE0MzAxNzMuOTA3NjU1NSwgMTMwNjEsIDIuMDUwNTI3NDczMzI5NTY2NGUtMDVdLCBbMTYwMTQzMDE3NC4xNDU2NDgyLCAxMzA2MiwgMi4wNTAyNjAyNjM3ODYxODU1ZS0wNV0sIFsxNjAxNDMwMTc2LjAyNzg2MDQsIDEzMDcwLCAyLjA0ODEyMTg1OTg0MzM3N2UtMDVdLCBbMTYwMTQzMDE3OS4xMTM2NzMsIDEzMDgyLCAyLjA0NDkxNDI1MzkyOTE2NDNlLTA1XSwgWzE2MDE0MzAxODIuMTIzMzUwOSwgMTMwOTQsIDIuMDQxNzA2NjQ4MDE0OTUxNWUtMDVdLCBbMTYwMTQzMDE4NS43OTc3NjcsIDEzMTA5LCAyLjAzNzY5Njg2Nzc3Mzc3NWUtMDVdLCBbMTYwMTQzMDE4Ni45Mzk1Mjk3LCAxMzExMywgMi4wMzY2Mjc2NjU4MDIzNzA4ZS0wNV0sIFsxNjAxNDMwMTkxLjAxMzc0NDgsIDEzMTMwLCAyLjAzMjA4MjkyMDc3NzYxMTRlLTA1XSwgWzE2MDE0MzAxOTkuOTUwMjMyNywgMTMxNjYsIDIuMDIyNDU4NjQ3ODQzNDUwM2UtMDVdLCBbMTYwMTQzMDIwMy43MjY5NjIsIDEzMTgxLCAyLjAxODQ0ODMyMTkwNTQ1MjhlLTA1XSwgWzE2MDE0MzAyMDYuMDkwMjUwMywgMTMxOTEsIDIuMDE1Nzc0NTg5MzgxMTgwN2UtMDVdLCBbMTYwMTQzMDIwNi44MjU4MjEsIDEzMTk0LCAyLjAxNDk3MjU5Njk1MzE1NzNlLTA1XSwgWzE2MDE0MzAyMTAuMDE3NDI0OCwgMTMyMDYsIDIuMDExNzY0MjYzNDQzMTgzZS0wNV0sIFsxNjAxNDMwMjEwLjI0ODUzMDQsIDEzMjA3LCAyLjAxMTQ5Njg3MjAwMDg2MmUtMDVdLCBbMTYwMTQzMDIxMS4xNzM0MDkyLCAxMzIxMSwgMi4wMTA0MjczMDYyMzE1NzdlLTA1XSwgWzE2MDE0MzAyMTguMTAwMTkzNSwgMTMyMzksIDIuMDAyOTQxMDczNDQyMzQzNmUtMDVdLCBbMTYwMTQzMDIzNi40NTIwNDk1LCAxMzMxMywgMS45ODMxNTU5MjU2OTk5NzUzZS0wNV0sIFsxNjAxNDMwMjQ1LjQ4MDQ0NDIsIDEzMzQ5LCAxLjk3MzUzMTEwNzA2ODk5M2UtMDVdLCBbMTYwMTQzMDI1OC41OTg5NTg1LCAxMzQwMiwgMS45NTkzNjI2MzQ4MDY4OTM4ZS0wNV0sIFsxNjAxNDMwMjU5LjU2NTE2ODQsIDEzNDA2LCAxLjk1ODI5MzQzMjgzNTQ4OTVlLTA1XSwgWzE2MDE0MzAyNjQuNDE1MjMwOCwgMTM0MjYsIDEuOTUyOTQ3MjQxMDc5NTI4ZS0wNV0sIFsxNjAxNDMwMjc2LjU3MTM2ODIsIDEzNDc1LCAxLjkzOTg1MDg4MTE3MTg3ODRlLTA1XSwgWzE2MDE0MzAyODMuNzk3OTQ3NiwgMTM1MDQsIDEuOTMyMTAxMjU4NzE3MDExN2UtMDVdLCBbMTYwMTQzMDI5NC4zMzY0Mjg2LCAxMzU0NiwgMS45MjA4NzkxODU0OTA3NzZlLTA1XSwgWzE2MDE0MzAzMDYuODc3OTc2NCwgMTM1OTcsIDEuOTA3MjU2MDQ2MjUxODU5NWUtMDVdLCBbMTYwMTQzMDMxMC43MjUyOTg0LCAxMzYxMiwgMS45MDMyNDk5MDM5ODk0OWUtMDVdLCBbMTYwMTQzMDMxMi42MTE4NDEsIDEzNjIwLCAxLjkwMTExMzUwMDkzNTAyNTVlLTA1XSwgWzE2MDE0MzAzMTQuMTQ4MzQ2MiwgMTM2MjYsIDEuODk5NTExMzM1MDY4MzgyM2UtMDVdLCBbMTYwMTQzMDMyNy4xNjc2MDksIDEzNjc5LCAxLjg4NTM2MTIzNDU5OTI1ODhlLTA1XSwgWzE2MDE0MzAzMjcuODgyNDUsIDEzNjgyLCAxLjg4NDU2MDUxNTQ2MzgxOGUtMDVdLCBbMTYwMTQzMDMzMS4yNzU1NTAxLCAxMzY5NSwgMS44ODEwOTA2MTEyNzc2MTM4ZS0wNV0sIFsxNjAxNDMwMzM4LjAwMjk1NTQsIDEzNzIyLCAxLjg3Mzg4NTIzMDQ1MjI4OGUtMDVdLCBbMTYwMTQzMDM0NC4yNzM2MjMyLCAxMzc0NywgMS44NjcyMTQ5OTYzMDk0ODUzZS0wNV0sIFsxNjAxNDMwMzQ1Ljk3MzI1OSwgMTM3NTQsIDEuODY1MzQ3NjIxNzg3ODA1ZS0wNV0sIFsxNjAxNDMwMzUxLjU2NTQzNTIsIDEzNzc2LCAxLjg1OTQ3OTM4MDA3MzAyNThlLTA1XSwgWzE2MDE0MzAzNTkuOTU3MjAzOSwgMTM4MTAsIDEuODUwNDEyODA5Mjg5OTkyZS0wNV0sIFsxNjAxNDMwMzY4LjU0NTk1MywgMTM4NDUsIDEuODQxMDgyODQ4ODQxMzI0NGUtMDVdLCBbMTYwMTQzMDM3NC4zMTEyMjQsIDEzODY4LCAxLjgzNDk1MzU4MjE0NzEzNjNlLTA1XSwgWzE2MDE0MzAzNzguMDY0ODE3NywgMTM4ODQsIDEuODMwNjkwNTk4NTgwOTg2M2UtMDVdLCBbMTYwMTQzMDM5MS4zODQ2MTE4LCAxMzkzNywgMS44MTY1NzUyNDA4MDk0NzA0ZS0wNV0sIFsxNjAxNDMwMzk2LjQ4ODExOTQsIDEzOTU3LCAxLjgxMTI1MTA1ODgyNTI5MTdlLTA1XSwgWzE2MDE0MzAzOTcuMjAxNzEyLCAxMzk2MCwgMS44MTA0NTI1MjI0NzcxMzVlLTA1XSwgWzE2MDE0MzAzOTkuMzEyNzMxNywgMTM5NjksIDEuODA4MDU3MDk1MzMxNjA1NWUtMDVdLCBbMTYwMTQzMDM5OS41NDUyNTY5LCAxMzk3MCwgMS44MDc3OTA5NzcxODE4NjY4ZS0wNV0sIFsxNjAxNDMwNDAxLjI0MTQ2MiwgMTM5NzYsIDEuODA2MTk0MjY4MjgzNDM0MmUtMDVdLCBbMTYwMTQzMDQwNi4wNTM4MjcsIDEzOTk2LCAxLjgwMDg3MjgxNDc4MzM2MDhlLTA1XSwgWzE2MDE0MzA0MDYuNTI2NjI0NCwgMTM5OTgsIDEuODAwMzQwNzYwMzgyODIzNmUtMDVdLCBbMTYwMTQzMDQyNy4wNjMyNTk2LCAxNDA4MCwgMS43Nzg1MzgzNTMzOTE5MjNlLTA1XSwgWzE2MDE0MzA0NDcuMTU5NDU5NCwgMTQxNjEsIDEuNzU3MDI3ODk0MjAwMjkxNWUtMDVdLCBbMTYwMTQzMDQ2Mi4wMjEwODA3LCAxNDIyMSwgMS43NDExMTI2NDY0MTM5NjdlLTA1XSwgWzE2MDE0MzA0NjMuNDQwOTU1MiwgMTQyMjcsIDEuNzM5NTIxOTQwMTgwNTY2ZS0wNV0sIFsxNjAxNDMwNDY5LjI1OTgxODgsIDE0MjUwLCAxLjczMzQyNjE0Mjg5MTQwMzNlLTA1XSwgWzE2MDE0MzA0NzguMzk4NDM0MiwgMTQyODcsIDEuNzIzNjI1MDY0MTg3MjE3NWUtMDVdLCBbMTYwMTQzMDQ3OC42Nzg1NzY1LCAxNDI4OCwgMS43MjMzNjAyMTkzMzAwNjEyZS0wNV0sIFsxNjAxNDMwNDgwLjM1NjU0MSwgMTQyOTQsIDEuNzIxNzcxNTEzOTg1MDA0M2UtMDVdLCBbMTYwMTQzMDQ4Mi41NDA1NjA3LCAxNDMwMywgMS43MTkzODg4MTk3NjUyOTk2ZS0wNV0sIFsxNjAxNDMwNDg2Ljc0NTI1OTgsIDE0MzIwLCAxLjcxNDg4OTE4NTY3Nzc0ODJlLTA1XSwgWzE2MDE0MzA0ODkuNzEyNTcyMywgMTQzMzIsIDEuNzExNzEzNzc1ODc1OTc4MmUtMDVdLCBbMTYwMTQzMDQ5MS4xMzQyMDM0LCAxNDMzOCwgMS43MTAxMjY1MjU3MjI0NDRlLTA1XSwgWzE2MDE0MzA1MDUuNzg4MDIwMSwgMTQzOTcsIDEuNjk0NTI3NDE4Mjk0NDU2ZS0wNV0sIFsxNjAxNDMwNTE4LjI4MzQ3NzMsIDE0NDQ3LCAxLjY4MTMyMjY0NjYxODM1NWUtMDVdLCBbMTYwMTQzMDUyOS44NTcwMjA2LCAxNDQ5NCwgMS42Njg5MjMzMjM0NTAxNDQ0ZS0wNV0sIFsxNjAxNDMwNTM4Ljk3MDQyNzgsIDE0NTMwLCAxLjY1OTQzNDU2NTIyNjU0NzRlLTA1XSwgWzE2MDE0MzA1NDQuOTgwMDc0NiwgMTQ1NTQsIDEuNjUzMTEzMjEzMjUxMzQ1ZS0wNV0sIFsxNjAxNDMwNTQ1LjY5OTQwOSwgMTQ1NTcsIDEuNjUyMzIzNDA4MDUyMzI1MmUtMDVdLCBbMTYwMTQzMDU2NC4xMjkyNTU1LCAxNDYzMiwgMS42MzI1OTM3Mzk0ODY3NjVlLTA1XSwgWzE2MDE0MzA1NjUuODI5MjA2LCAxNDYzOCwgMS42MzEwMTY4NTc1NzI4MzEyZS0wNV0sIFsxNjAxNDMwNTczLjI1Mzg0MzgsIDE0NjY4LCAxLjYyMzEzNjQ0OTc3OTg0OTVlLTA1XSwgWzE2MDE0MzA1NzUuNDMxNjM0MiwgMTQ2NzcsIDEuNjIwNzczNTgyNTQ0NjQzNGUtMDVdLCBbMTYwMTQzMDU3Ni4zNzA2MDQ1LCAxNDY4MSwgMS42MTk3MjM0Nzk5NjE5NzY0ZS0wNV0sIFsxNjAxNDMwNTc3Ljc4NzU5NTMsIDE0Njg3LCAxLjYxODE0ODc4MDgzNTMyNjhlLTA1XSwgWzE2MDE0MzA1OTIuNDQzNTE1LCAxNDc0NiwgMS42MDI2NzYwOTMxNzA4ODVlLTA1XSwgWzE2MDE0MzA2MDAuNjk3NzEzLCAxNDc3OSwgMS41OTQwMzI2MTkzMjMxMTU4ZS0wNV0sIFsxNjAxNDMwNjAwLjk4Mzg3ODYsIDE0NzgwLCAxLjU5Mzc3MDg2Njc0Nzk0NTVlLTA1XSwgWzE2MDE0MzA2MDMuMDk3NjEzLCAxNDc4OCwgMS41OTE2NzY4NDYxNDY1ODM2ZS0wNV0sIFsxNjAxNDMwNjA0LjAzNTEyMjIsIDE0NzkyLCAxLjU5MDYyOTgzNTg0NTkwMjZlLTA1XSwgWzE2MDE0MzA2MDguMjc3OTY2NSwgMTQ4MDksIDEuNTg2MTgxODYxMDU3NDEyZS0wNV0sIFsxNjAxNDMwNjA5Ljg2NzExNjIsIDE0ODE1LCAxLjU4NDYxMjQzNzAwMDAzMjVlLTA1XSwgWzE2MDE0MzA2MTcuNTY3NTMxMywgMTQ4NDYsIDEuNTc2NTA4MjkzNTEwNDE0N2UtMDVdLCBbMTYwMTQzMDYyNC4zMTYyMTQsIDE0ODczLCAxLjU2OTQ1NTg4OTY5MzkyN2UtMDVdLCBbMTYwMTQzMDYyOC44ODU1OTg0LCAxNDg5MiwgMS41NjQ0OTY0MTUwODUxNTkyZS0wNV0sIFsxNjAxNDMwNjM3LjE4Nzc5MjUsIDE0OTI1LCAxLjU1NTg4OTEzOTEyNjUyMDZlLTA1XSwgWzE2MDE0MzA2MzcuNDgzNzY0NiwgMTQ5MjYsIDEuNTU1NjI4NDc3OTQ0OTkyNWUtMDVdLCBbMTYwMTQzMDY0My4yMDgwNDAyLCAxNDk1MCwgMS41NDkzNzQyNDY2Nzg3ODA4ZS0wNV0sIFsxNjAxNDMwNjYyLjQ1MDY1NzgsIDE1MDI3LCAxLjUyOTM0MDQ0MzA4NDk0NzhlLTA1XSwgWzE2MDE0MzA2NzguMDY4NjYwNywgMTUwOTAsIDEuNTEyOTg2MDkxMjU2NjA3M2UtMDVdLCBbMTYwMTQzMDY4OC42ODU3NzEyLCAxNTEzMiwgMS41MDIxMDIyNTkxMDk5NjA5ZS0wNV0sIFsxNjAxNDMwNjg5LjY0NDQ1MjYsIDE1MTM2LCAxLjUwMTA2NjUyNjU0MzU4MTllLTA1XSwgWzE2MDE0MzA3MDAuMjkwNjQ2MywgMTUxODAsIDEuNDg5NjgyOTI3MDU4MzExMmUtMDVdLCBbMTYwMTQzMDcwNS4xNTU2ODI2LCAxNTE5OSwgMS40ODQ3NzI3NDcwNjIzNzk1ZS0wNV0sIFsxNjAxNDMwNzE0LjI2MjQ1NjIsIDE1MjM2LCAxLjQ3NTIyMDMyNDIwOTY1ODRlLTA1XSwgWzE2MDE0MzA3MjEuODQ5MDIxMiwgMTUyNjYsIDEuNDY3NDg0NTI2MDc0MjU4NmUtMDVdLCBbMTYwMTQzMDcyMy43Njg1MDYsIDE1MjczLCAxLjQ2NTY4MDcyNTIzMjIzMjRlLTA1XSwgWzE2MDE0MzA3MzYuMTU4NTEzMywgMTUzMjQsIDEuNDUyNTUyOTg3NzU3MzcxN2UtMDVdLCBbMTYwMTQzMDc0MC40MDg4NDQyLCAxNTM0MSwgMS40NDgxODI2ODM4MTY0MTI1ZS0wNV0sIFsxNjAxNDMwNzQxLjg0NjU0MzYsIDE1MzQ3LCAxLjQ0NjY0MDk5OTM0NzQzNzJlLTA1XSwgWzE2MDE0MzA3NjAuNjQ0NTI1LCAxNTQyMiwgMS40MjczOTkxODM3Mzk5MDhlLTA1XSwgWzE2MDE0MzA3NjIuMDUxNjYyNCwgMTU0MjgsIDEuNDI1ODYyMzE5NTkyODUyMWUtMDVdLCBbMTYwMTQzMDc2OS4wMTA5OTIzLCAxNTQ1NiwgMS40MTg2OTUxMzc1NDUwMDA4ZS0wNV0sIFsxNjAxNDMwNzczLjM4MzQ4MSwgMTU0NzMsIDEuNDE0MzQ3NTcwOTcxNTg1OGUtMDVdLCBbMTYwMTQzMDc3My45MDg0NCwgMTU0NzUsIDEuNDEzODM2MjUzMDUwMjQ5ZS0wNV0sIFsxNjAxNDMwNzgxLjkzNTg5NiwgMTU1MDcsIDEuNDA1NjYxNTMyNzcxNzczNmUtMDVdLCBbMTYwMTQzMDc4OS42MTk2NzIzLCAxNTUzOCwgMS4zOTc3NTI2NTc3OTQ2MjY0ZS0wNV0sIFsxNjAxNDMwODA0LjM5NDA1NSwgMTU1OTcsIDEuMzgyNzI4ODk2NzE0OTc5OGUtMDVdLCBbMTYwMTQzMDgwNy4wMjMyMzE1LCAxNTYwOCwgMS4zNzk5MzIxMDk1NTc1NTc5ZS0wNV0sIFsxNjAxNDMwODQwLjA2MjY3NzksIDE1NzQwLCAxLjM0NjQ3NjYxOTgwMTI1MTJlLTA1XSwgWzE2MDE0MzA4NDYuMTE1MjU0OSwgMTU3NjQsIDEuMzQwNDE1MzgzMzEwNzU1N2UtMDVdLCBbMTYwMTQzMDg0OC4yMjE4NCwgMTU3NzMsIDEuMzM4MTQ0MTkzMTQxNDg4NGUtMDVdLCBbMTYwMTQzMDg0OS42NDA1MTU2LCAxNTc3OSwgMS4zMzY2MzA1MjExMDkzMjc3ZS0wNV0sIFsxNjAxNDMwODYxLjE5MzAxNzUsIDE1ODI1LCAxLjMyNTA0MDM3NTM3NzI4NDRlLTA1XSwgWzE2MDE0MzA4NjEuODk4MzIxNiwgMTU4MjgsIDEuMzI0Mjg1NDAzODI1MzQyN2UtMDVdLCBbMTYwMTQzMDg2Ni43MzMzNzIsIDE1ODQ3LCAxLjMxOTUwNjI4MjAxNTkzNjRlLTA1XSwgWzE2MDE0MzA4NzEuMjk1MDc0NywgMTU4NjYsIDEuMzE0NzMxNTI1NzgxMDk4OGUtMDVdLCBbMTYwMTQzMDg5OS41NzgyNjExLCAxNTk3OSwgMS4yODY0MjY4NjgzMTg4MTNlLTA1XSwgWzE2MDE0MzA5MDEuNjQ1NjY1MiwgMTU5ODcsIDEuMjg0NDI5MDcyMjU2ODk4NWUtMDVdLCBbMTYwMTQzMDkwMy4yNjY5NDc3LCAxNTk5MywgMS4yODI5MzEzMTYzODIwMTg4ZS0wNV0sIFsxNjAxNDMwOTE4Ljg1NDIwNTQsIDE2MDU2LCAxLjI2NzIzMjUyODMzNDcxNjNlLTA1XSwgWzE2MDE0MzA5MjguNDIyMDEzOCwgMTYwOTUsIDEuMjU3NTQwMTM0MjQ3MzkyNGUtMDVdLCBbMTYwMTQzMDkzMy43NTc3NDIyLCAxNjExNiwgMS4yNTIzMjk1NDgxNTE0NjUxZS0wNV0sIFsxNjAxNDMwOTQ4LjQwNDUyMSwgMTYxNzUsIDEuMjM3NzIxODgwODk3ODc5NmUtMDVdLCBbMTYwMTQzMDk1MS42ODM2MzYyLCAxNjE4OCwgMS4yMzQ1MDk2MzY1NjA2ODc4ZS0wNV0sIFsxNjAxNDMwOTU0LjE5OTU2MSwgMTYxOTgsIDEuMjMyMDQwMTc2NTQ2NDM0ZS0wNV0sIFsxNjAxNDMwOTU1LjE1NzI5OCwgMTYyMDIsIDEuMjMxMDUyODI5MDk4MTg5MmUtMDVdLCBbMTYwMTQzMDk2Ni45NzY0ODg0LCAxNjI0OSwgMS4yMTk0Njc1OTQ2Mzc1MzU1ZS0wNV0sIFsxNjAxNDMwOTg0LjU1MTAwMjcsIDE2MzIxLCAxLjIwMTc3OTkyMzU3NjM5NmUtMDVdLCBbMTYwMTQzMDk5MC4wODU5NTIzLCAxNjM0MywgMS4xOTYzOTAwNzYwNzQ3NDkyZS0wNV0sIFsxNjAxNDMwOTk0LjE2NjEyMSwgMTYzNjAsIDEuMTkyMjI5OTU2MzU5MzY5N2UtMDVdLCBbMTYwMTQzMDk5OS4wOTM4MTgyLCAxNjM4MCwgMS4xODczNDA5Njc1ODk5ODkzZS0wNV0sIFsxNjAxNDMxMDA1LjUzNzgzMjcsIDE2NDA2LCAxLjE4MDk5NDA1ODgxMzY2N2UtMDVdLCBbMTYwMTQzMTAxMy45MTg4MzczLCAxNjQ0MCwgMS4xNzI3MDkxMDc3NzczMzY2ZS0wNV0sIFsxNjAxNDMxMDE2LjMxMDk2MzYsIDE2NDQ5LCAxLjE3MDUxODg2MjYzNjUyN2UtMDVdLCBbMTYwMTQzMTAzMC4yMzE2Nzc1LCAxNjUwNSwgMS4xNTY5MTgwMDYwMTc4MDQxZS0wNV0sIFsxNjAxNDMxMDQzLjQ0Mzk1MzUsIDE2NTU5LCAxLjE0Mzg0NzY1NzY1ODYyNTRlLTA1XSwgWzE2MDE0MzEwNDkuOTQxODkyOSwgMTY1ODUsIDEuMTM3NTcwMzI1MjI2OTg4NmUtMDVdLCBbMTYwMTQzMTA1MS4yMTkxMDI2LCAxNjU5MCwgMS4xMzYzNjQzMzUyNTI0Mzc3ZS0wNV0sIFsxNjAxNDMxMDY4Ljk5NzE1MDQsIDE2NjYxLCAxLjExOTI4MTM4NzIxODUwN2UtMDVdLCBbMTYwMTQzMTA2OS45NTM3OTcsIDE2NjY1LCAxLjExODMyMTMyNDYxMTMxNTVlLTA1XSwgWzE2MDE0MzEwNzcuODg1NTUsIDE2Njk3LCAxLjExMDY0OTgyNzc1MTMzMWUtMDVdLCBbMTYwMTQzMTA5MC4xNjUyOTEsIDE2NzQ2LCAxLjA5ODkzNDQ0NDU5ODg1MzZlLTA1XSwgWzE2MDE0MzExMDMuMjIzNDg3MSwgMTY3OTgsIDEuMDg2NTQ0MDM0NDc4NzIwM2UtMDVdLCBbMTYwMTQzMTEwNS42MDIwOTA2LCAxNjgwOCwgMS4wODQxNjYzNDI0Nzk4NzUzZS0wNV0sIFsxNjAxNDMxMTA1Ljg1NjY1NjYsIDE2ODA5LCAxLjA4MzkyODY5MTUxNDMwMmUtMDVdLCBbMTYwMTQzMTExMi4xOTM2NDc2LCAxNjgzNCwgMS4wNzc5OTE5NjQ4NDg0NzkzZS0wNV0sIFsxNjAxNDMxMTE0LjMyMDk0ODQsIDE2ODQzLCAxLjA3NTg1NzE5ODg4NDQ3NzhlLTA1XSwgWzE2MDE0MzExMTcuOTc1NzE0LCAxNjg1NywgMS4wNzI1MzkyNzEyNjI5NGUtMDVdLCBbMTYwMTQzMTEyOC4zNjcxMTI2LCAxNjg5OSwgMS4wNjI2MDQ4NjA2MzU0NzQzZS0wNV0sIFsxNjAxNDMxMTM0LjU4MzExOSwgMTY5MjQsIDEuMDU2NzA1NTE0MjAxODk0NGUtMDVdLCBbMTYwMTQzMTE1My41MjEwNjEyLCAxNjk5OSwgMS4wMzkwNzA5NTc2MzEzMzg0ZS0wNV0sIFsxNjAxNDMxMTcwLjA3MDgzMywgMTcwNjYsIDEuMDIzMzk5MDkwNjI3MjA4NGUtMDVdLCBbMTYwMTQzMTE3Ny43NTc0MTc0LCAxNzA5NywgMS4wMTYxNzQzMzc1NjQ3MzQ3ZS0wNV0sIFsxNjAxNDMxMTg2LjA5MDA0NiwgMTcxMzEsIDEuMDA4MjY5OTE5MTExNjI2MmUtMDVdLCBbMTYwMTQzMTE5MS44ODE4MzIxLCAxNzE1NCwgMS4wMDI5MzQzNjg0NDM2NzUzZS0wNV0sIFsxNjAxNDMxMjAxLjI0MjU0NywgMTcxOTIsIDkuOTQxMzk4Mjc1MjU5NDE3ZS0wNl0sIFsxNjAxNDMxMjAyLjY3NjQyODgsIDE3MTk3LCA5LjkyOTg0NTg3MzU1NzQ5N2UtMDZdLCBbMTYwMTQzMTIwMy45Mzk2NDA1LCAxNzIwMiwgOS45MTgyOTgwMTkzMjkwODZlLTA2XSwgWzE2MDE0MzEyMTMuMDk0NTU3NSwgMTcyMzksIDkuODMyOTgyODY4ODI5Mjc2ZS0wNl0sIFsxNjAxNDMxMjE1LjAwNTc2MjMsIDE3MjQ3LCA5LjgxNDU2OTIzOTA5NzE4MmUtMDZdLCBbMTYwMTQzMTIxOC42MzI0MTUsIDE3MjYxLCA5Ljc4MjM3MzEyNjY1NDQyZS0wNl0sIFsxNjAxNDMxMjIxLjIwMTU3MzgsIDE3MjcyLCA5Ljc1NzEwMDk5NzM3NjI1NmUtMDZdLCBbMTYwMTQzMTIyNS44NzE0NTQsIDE3MjkwLCA5LjcxNTc5NTM4NjAwMDUzNmUtMDZdLCBbMTYwMTQzMTIyNi4zNDgxODcsIDE3MjkyLCA5LjcxMTIwOTcxMzcxNDE5N2UtMDZdLCBbMTYwMTQzMTIzMi4xODc0NzMsIDE3MzE1LCA5LjY1ODUyNDUwNDYyOTg5NWUtMDZdLCBbMTYwMTQzMTIzMi40MTkwMywgMTczMTYsIDkuNjU2MjM2MjE1OTYwMjM0ZS0wNl0sIFsxNjAxNDMxMjMyLjY1MjM4MDcsIDE3MzE3LCA5LjY1Mzk0NzkyNzI5MDU3NGUtMDZdLCBbMTYwMTQzMTIzMy4zNTE1ODgyLCAxNzMyMCwgOS42NDcwODM5NzA3NzYyOTNlLTA2XSwgWzE2MDE0MzEyMzguMDMxMTI4MiwgMTczMzksIDkuNjAzNjUyODcwMjgyNTNlLTA2XSwgWzE2MDE0MzEyNDYuNzc3NDAyMiwgMTczNzQsIDkuNTIzODI0NzAxMzE4NTE3ZS0wNl0sIFsxNjAxNDMxMjUwLjc3MzMyNjQsIDE3MzkxLCA5LjQ4NTEzMjk3NzcxNTY5M2UtMDZdLCBbMTYwMTQzMTI1NC40OTU1MDIsIDE3NDA1LCA5LjQ1MzMxMDY2NzU5NTM2ZS0wNl0sIFsxNjAxNDMxMjU5Ljc3ODU0OTcsIDE3NDI2LCA5LjQwNTY0NTg2OTI2NDg0NWUtMDZdLCBbMTYwMTQzMTI2Mi4yNTM4NDQ1LCAxNzQzNiwgOS4zODI5Nzc2MjMzMTc4NTZlLTA2XSwgWzE2MDE0MzEyNjQuMTQzNTEwOCwgMTc0NDQsIDkuMzY0ODU2ODUwODc5NzMzZS0wNl0sIFsxNjAxNDMxMjY2LjcwMDE2MjQsIDE3NDU0LCA5LjM0MjIyMzE2NTczMTQxMWUtMDZdLCBbMTYwMTQzMTI3OC44MzIxMTExLCAxNzUwMywgOS4yMzE1OTMxMzk3MDI0NTRlLTA2XSwgWzE2MDE0MzEyODAuODk5ODg3OCwgMTc1MTEsIDkuMjEzNTc0MjMwNjcwOTI5ZS0wNl0sIFsxNjAxNDMxMjg5LjAxNTQyNjQsIDE3NTQzLCA5LjE0MTYyNTAxNDMwODM3NGUtMDZdLCBbMTYwMTQzMTI5Mi4yOTAzODUyLCAxNzU1NywgOS4xMTAyMDkyNDgzMTk3MzRlLTA2XSwgWzE2MDE0MzEyOTMuNjk5ODg2LCAxNzU2MywgOS4wOTY3NTY5MTIxODU4MWUtMDZdLCBbMTYwMTQzMTI5Ny4zNzc3MTQ5LCAxNzU3NywgOS4wNjUzOTU3MTU4NzkyNzZlLTA2XSwgWzE2MDE0MzEyOTkuNTMyNjM5MywgMTc1ODYsIDkuMDQ1MjU1ODY1MjAzMjE3ZS0wNl0sIFsxNjAxNDMxMzAxLjE5NzY4MjQsIDE3NTkzLCA5LjAyOTYwMTY0MjM5NjMwMWUtMDZdLCBbMTYwMTQzMTMwMS40ODEzODMsIDE3NTk0LCA5LjAyNzM2NjEwNDQxOTM0M2UtMDZdLCBbMTYwMTQzMTMwMi42MTU2MDM0LCAxNzU5OCwgOS4wMTg0MjY2ODA5OTU2MTdlLTA2XSwgWzE2MDE0MzEzMDguNzM0NDYwNCwgMTc2MjMsIDguOTYyNjIyODE0NTc4OTM2ZS0wNl0sIFsxNjAxNDMxMzExLjM3ODYzMjgsIDE3NjMzLCA4Ljk0MDMzNTY0NjkxMTk5ZS0wNl0sIFsxNjAxNDMxMzE2LjE5MzA3NTcsIDE3NjUzLCA4Ljg5NTgyMTMzODIyODQxNmUtMDZdLCBbMTYwMTQzMTMxOS43ODU3NjM1LCAxNzY2NywgOC44NjQ3MDg0MzM5NzU0NjZlLTA2XSwgWzE2MDE0MzEzMjguNjIwNDQ4NCwgMTc3MDMsIDguNzg0ODgyOTkzNDk1NTU3ZS0wNl0sIFsxNjAxNDMxMzMwLjY0NzA5OSwgMTc3MTEsIDguNzY3MTc5Njc5MTI1NTQ3ZS0wNl0sIFsxNjAxNDMxMzMzLjQ1NjM0NzcsIDE3NzIyLCA4Ljc0Mjg1Nzk3MTgxMDczNmUtMDZdLCBbMTYwMTQzMTM0NS43MTYxMDQzLCAxNzc3MSwgOC42MzQ4MTI3Mjk3MjQyMTdlLTA2XSwgWzE2MDE0MzEzNDUuOTk0NzkyNywgMTc3NzIsIDguNjMyNjEyNjYyMDQwNjI4ZS0wNl0sIFsxNjAxNDMxMzQ3LjI4NjUyOTgsIDE3Nzc3LCA4LjYyMTYxNTk2MTYwMTQ5MmUtMDZdLCBbMTYwMTQzMTM1NC4xMDY4MDcyLCAxNzgwNCwgOC41NjIzMjE0NTQ1MTk0MDZlLTA2XSwgWzE2MDE0MzEzNjMuNDIxMTMxOCwgMTc4NDIsIDguNDc5MTIyNjk4MTkwNjIyZS0wNl0sIFsxNjAxNDMxMzkxLjA0ODQ5MDgsIDE3OTUzLCA4LjIzNzgwNjQ2ODk2OTIxMWUtMDZdLCBbMTYwMTQzMTM5My4xODE2MDQ2LCAxNzk2MiwgOC4yMTgzNTMyODY3OTI5OWUtMDZdLCBbMTYwMTQzMTM5Ny4zMjk2NzE0LCAxNzk3OCwgOC4xODM4MTE1ODc1MTQzNTZlLTA2XSwgWzE2MDE0MzEzOTguMDM5NjMwNywgMTc5ODEsIDguMTc3MzQxNDQyMjA1OTQzZS0wNl0sIFsxNjAxNDMxNDAwLjE4Nzk4NzgsIDE3OTkwLCA4LjE1Nzk0MTAxMDcyMjQyNWUtMDZdLCBbMTYwMTQzMTQwNy4yMDI1MDQyLCAxODAxOCwgOC4wOTc2OTQyNjI2ODc1ODNlLTA2XSwgWzE2MDE0MzE0MTUuNjYzNTg2NiwgMTgwNTIsIDguMDI0NzYxODgyNTUyNDExZS0wNl0sIFsxNjAxNDMxNDE1LjkzMzY4OTQsIDE4MDUzLCA4LjAyMjYyMDkzMjAyNDQzOGUtMDZdLCBbMTYwMTQzMTQxOS4xMjY3OTM2LCAxODA2NSwgNy45OTY5NDEzNDkxMTk4OGUtMDZdLCBbMTYwMTQzMTQyOC42NTgyOTA0LCAxODEwNCwgNy45MTM2OTgwMjc1NTA3MDllLTA2XSwgWzE2MDE0MzE0MzQuOTE1NjM2MywgMTgxMjksIDcuODYwNTA4OTU4NDAxNjI0ZS0wNl0sIFsxNjAxNDMxNDM5LjI5MzA5NDYsIDE4MTQ2LCA3LjgyNDQxNzQ4MDE1MTE2OWUtMDZdLCBbMTYwMTQzMTQ1MC4wMDI5Njc4LCAxODE5MCwgNy43MzEyOTg4NjUxMTAxNDhlLTA2XSwgWzE2MDE0MzE0NTYuMDQ3NTkzOCwgMTgyMTQsIDcuNjgwNjg0NTc1NDYxNzgzZS0wNl0sIFsxNjAxNDMxNDYxLjY0NzgxNzYsIDE4MjM2LCA3LjYzNDQwMDM5MDA4ODU1OGUtMDZdLCBbMTYwMTQzMTQ2OC42Njg4NjQsIDE4MjY0LCA3LjU3NTY0NzQ4NzEwMTM3OGUtMDZdLCBbMTYwMTQzMTQ4Mi4xMjY4Nzg3LCAxODMxOCwgNy40NjI4MzEwMzU4MDkzNTllLTA2XSwgWzE2MDE0MzE0ODIuODQ2MDM3OSwgMTgzMjEsIDcuNDU2NTgyMzUyNDYwODI4ZS0wNl0sIFsxNjAxNDMxNDkyLjgyNTI1MjUsIDE4MzYyLCA3LjM3MTM4OTA3NDI1MTA1NmUtMDZdLCBbMTYwMTQzMTQ5NC43NDI2MTksIDE4MzcwLCA3LjM1NDgxMDM1MDA3OTc4OGUtMDZdLCBbMTYwMTQzMTUxNS4wMjE0NDk2LCAxODQ1MSwgNy4xODc3NjYxODY2ODkyNTk1ZS0wNl0sIFsxNjAxNDMxNTE1LjI1NTEzODksIDE4NDUyLCA3LjE4NTcxMzQ1NzE0NzM1OGUtMDZdLCBbMTYwMTQzMTUzNi45MjI3NzMsIDE4NTM5LCA3LjAwNzk4OTU1MjIyMTI2MWUtMDZdLCBbMTYwMTQzMTUzOS4wOTgyNTg1LCAxODU0NywgNi45OTE3MzUwNjI5MTExNzVlLTA2XSwgWzE2MDE0MzE1NTAuMjY5NTA4OCwgMTg1OTIsIDYuOTAwNTgwOTU2NDI1OTgzNWUtMDZdLCBbMTYwMTQzMTU2NS4xNDkzODMsIDE4NjUyLCA2Ljc3OTc4MDUwNTg5NDQ1MDVlLTA2XSwgWzE2MDE0MzE1ODAuMTQ2NDQyMiwgMTg3MTMsIDYuNjU3ODM4NjM5NTEyMTkyNWUtMDZdLCBbMTYwMTQzMTU4Mi4wOTYyMjgxLCAxODcyMCwgNi42NDM5MDE1NDI3MDIyMjRlLTA2XSwgWzE2MDE0MzE1ODkuMjU4ODUwMywgMTg3NDksIDYuNTg2Mjg4NjkxMzIzNzE2ZS0wNl0sIFsxNjAxNDMxNTk4LjQxNTMzMywgMTg3ODYsIDYuNTEzMDc0ODIyNTc4MzQ2ZS0wNl0sIFsxNjAxNDMxNjAyLjU3MTEwMTIsIDE4ODAzLCA2LjQ3OTU0Njc1NTE0NDgzOGUtMDZdLCBbMTYwMTQzMTYxMy4wNjE0MDQyLCAxODg0NSwgNi4zOTcwMTE5Mjk5NDgzNDg2ZS0wNl0sIFsxNjAxNDMxNjI1LjA1NzU5MzgsIDE4ODkzLCA2LjMwMzIxMTY0ODYyODM0ODVlLTA2XSwgWzE2MDE0MzE2MzUuMDgxMjU5LCAxODkzMywgNi4yMjU0NzU3NzIyMjU3NjRlLTA2XSwgWzE2MDE0MzE2NDEuMzM3NTY2NiwgMTg5NTgsIDYuMTc3MDkwNjU0MDkxNDQ0ZS0wNl0sIFsxNjAxNDMxNjQ1Ljk2OTUwNywgMTg5NzcsIDYuMTQwNDIxMTkxOTU4MDEyZS0wNl0sIFsxNjAxNDMxNjQ3LjM2NDYyMDcsIDE4OTgyLCA2LjEzMDc4NjAwNTA4NzQzZS0wNl0sIFsxNjAxNDMxNjUyLjg5NDMzNiwgMTkwMDUsIDYuMDg2NTQ0OTk5NTYxNzM4ZS0wNl0sIFsxNjAxNDMxNjU0LjI3ODA3MDcsIDE5MDEwLCA2LjA3Njk0NDgyODIzNzE3NGUtMDZdLCBbMTYwMTQzMTY1NS40NjQ3NjM2LCAxOTAxNSwgNi4wNjczNTA1Njg2MjgxNzE1ZS0wNl0sIFsxNjAxNDMxNjU4LjI4NzUxNzUsIDE5MDI3LCA2LjA0NDM1MDM1NzExNTAzNmUtMDZdLCBbMTYwMTQzMTY2My41NzE4MTk4LCAxOTA0OCwgNi4wMDQxODYxNjE1OTAwNDJlLTA2XSwgWzE2MDE0MzE2NzUuMjMyNDg0NiwgMTkwOTUsIDUuOTE0Njk1NTIwOTE0MzkyNWUtMDZdLCBbMTYwMTQzMTY4MC4yODQzNTIsIDE5MTE2LCA1Ljg3NDg5MDEyMTA0OTI0OGUtMDZdLCBbMTYwMTQzMTY4OS43Mjg4NzU2LCAxOTE1MywgNS44MDUwMjcyODU1MzI1NmUtMDZdLCBbMTYwMTQzMTY5My41MjQ3ODQ2LCAxOTE2OSwgNS43NzQ5MjM0NjU2NTEyMjdlLTA2XSwgWzE2MDE0MzE3MDcuODk1MDg4NCwgMTkyMjcsIDUuNjY2MzQ1MjU5NjY5NDdlLTA2XSwgWzE2MDE0MzE3MTguOTU5OTAxLCAxOTI3MSwgNS41ODQ1NDk4NTM2NjU1MjFlLTA2XSwgWzE2MDE0MzE3MTkuOTA5Nzc4OCwgMTkyNzUsIDUuNTc3MTM4MzgxMzQwNzc0ZS0wNl0sIFsxNjAxNDMxNzI2LjIyNjg4NzcsIDE5MzAwLCA1LjUzMDkxMTQ5NDEzMzc2MWUtMDZdLCBbMTYwMTQzMTczMi43MjA4NDc2LCAxOTMyNiwgNS40ODMwMDcwNDM5NDkzMjhlLTA2XSwgWzE2MDE0MzE3NTMuNTI4MTQ3NywgMTk0MTAsIDUuMzI5NDQwMjI3Nzk3MDIyZS0wNl0sIFsxNjAxNDMxNzU0LjgxMjkxMywgMTk0MTUsIDUuMzIwMzU3NTU4OTU3NzY3ZS0wNl0sIFsxNjAxNDMxNzY3LjAxODY3OTQsIDE5NDY1LCA1LjIyOTg5MTQ4NTIxNDQ2NmUtMDZdLCBbMTYwMTQzMTc3MS45MjQ1MjgsIDE5NDg1LCA1LjE5Mzg4OTU5MjE5MjEzNmUtMDZdLCBbMTYwMTQzMTc3NS44NTQ5MDUxLCAxOTUwMCwgNS4xNjY5NTgwODk4MzA1ODdlLTA2XSwgWzE2MDE0MzE3NzYuNTUyMTYzNiwgMTk1MDMsIDUuMTYxNTc4ODgzNDE2OTUxZS0wNl0sIFsxNjAxNDMxNzgxLjkyMTU4MjIsIDE5NTI1LCA1LjEyMjIwNDEyOTI5MzA5NWUtMDZdLCBbMTYwMTQzMTc4My40OTczMzc4LCAxOTUzMSwgNS4xMTE0ODc1NTMyMjIxMDVlLTA2XSwgWzE2MDE0MzE3ODkuMDQyNzk1NCwgMTk1NTQsIDUuMDcwNDk3NTM2NTA3OTAxZS0wNl0sIFsxNjAxNDMxNzk1LjA5MTI5NjIsIDE5NTc5LCA1LjAyNjEwMzI4MTEyNDk2MWUtMDZdLCBbMTYwMTQzMTc5NS42NDkzOTUyLCAxOTU4MSwgNS4wMjI1NTg5ODAyNzIxNTE1ZS0wNl0sIFsxNjAxNDMxNzk4Ljk2Njc5NTIsIDE5NTk0LCA0Ljk5OTU0Njk0NTMyNzg5M2UtMDZdLCBbMTYwMTQzMTgwOC42ODc0MjQ3LCAxOTYzNCwgNC45MjkwMjUxODA4OTk3NzFlLTA2XSwgWzE2MDE0MzE4MTAuMjQyODQ0NiwgMTk2NDAsIDQuOTE4NDg0MTM3MzA2MjIzZS0wNl0sIFsxNjAxNDMxODEzLjc0NTk5OSwgMTk2NTQsIDQuODkzOTI1NTA2NjIxNTk5ZS0wNl0sIFsxNjAxNDMxODE2LjMxMDI1MDgsIDE5NjY1LCA0Ljg3NDY2Njk1NjMxMTU1NzRlLTA2XSwgWzE2MDE0MzE4MTguNzc1NjYzNCwgMTk2NzQsIDQuODU4OTM0MDYyMjEyOTM4NGUtMDZdLCBbMTYwMTQzMTgyOS45NDU1Mjg3LCAxOTcyMCwgNC43Nzg4NjUzMzE5MDAzMDZlLTA2XSwgWzE2MDE0MzE4MzEuNzUzNTEyOSwgMTk3MjcsIDQuNzY2NzMxMzA4MzM2NjAyNWUtMDZdLCBbMTYwMTQzMTgzMi44ODU2MDUzLCAxOTczMSwgNC43NTk4MDMyMzI0NDU4NDdlLTA2XSwgWzE2MDE0MzE4MzQuMzA0MzA2NywgMTk3MzcsIDQuNzQ5NDE5OTg2MTgzMDU3ZS0wNl0sIFsxNjAxNDMxODQ5LjAxOTQ4MjksIDE5Nzk2LCA0LjY0NzgzOTQzMjQzNjc0ZS0wNl0sIFsxNjAxNDMxODU1LjY5MzM3MzQsIDE5ODIzLCA0LjYwMTY3MTY2MjM4NTM0M2UtMDZdLCBbMTYwMTQzMTg2MS41MTAyMTc3LCAxOTg0NiwgNC41NjI1MDE5OTkzMTY3MzdlLTA2XSwgWzE2MDE0MzE4NzguNzA0OTA2MiwgMTk5MTYsIDQuNDQ0MTg5MDE2Nzk0NTUzZS0wNl0sIFsxNjAxNDMxODgxLjA4MTE2NTgsIDE5OTI2LCA0LjQyNzM5NzkyNTYxMDQyMWUtMDZdLCBbMTYwMTQzMTg4NC4yNjk4Njc0LCAxOTkzOCwgNC40MDcyODU4MTQ1MjI3NjZlLTA2XSwgWzE2MDE0MzE4OTIuMzgwNjYsIDE5OTcxLCA0LjM1MjE4MzYyMzI2ODUwMmUtMDZdLCBbMTYwMTQzMTg5NC4yNDAzNTQsIDE5OTc5LCA0LjMzODg3MTgwNDA2NjAwMmUtMDZdLCBbMTYwMTQzMTg5Ni41ODAwMDM1LCAxOTk4OCwgNC4zMjM5MTY5ODI2ODQ3NWUtMDZdLCBbMTYwMTQzMTg5OC4zMzc5NzM0LCAxOTk5NSwgNC4zMTIzMDA5MTYzNTM3MDZlLTA2XSwgWzE2MDE0MzE5MDguMTEzNDgxNSwgMjAwMzUsIDQuMjQ2MTg4MzgyMjM5Nzc5NWUtMDZdLCBbMTYwMTQzMTkxMS42MDcwNTk3LCAyMDA0OCwgNC4yMjQ3OTg4ODU4NDM0ODRlLTA2XSwgWzE2MDE0MzE5MTIuODA4NzQ3OCwgMjAwNTMsIDQuMjE2NTg0Nzg0NDQ0NDIxNWUtMDZdLCBbMTYwMTQzMTkxNC4yMjE2MDE3LCAyMDA1OSwgNC4yMDY3MzcyMzA1NjA5NzVlLTA2XSwgWzE2MDE0MzE5MTQuOTIzMTkxOCwgMjAwNjIsIDQuMjAxODE3MzE4OTcxNzM0NWUtMDZdLCBbMTYwMTQzMTkzMy44NjAxMTE1LCAyMDEzOCwgNC4wNzgwMjY5MDQ2MDgxMjNlLTA2XSwgWzE2MDE0MzE5MzQuMDkzODI4NywgMjAxMzksIDQuMDc2NDA5MzY4MjgxMDJlLTA2XSwgWzE2MDE0MzE5MzQuNTU1OTc0LCAyMDE0MSwgNC4wNzMxNzQyOTU2MjY4MTM1ZS0wNl0sIFsxNjAxNDMxOTQ0Ljc0MTg4MSwgMjAxODMsIDQuMDA1NTA0MjUxODM2MTAxZS0wNl0sIFsxNjAxNDMxOTQ1LjQ3NDk1ODQsIDIwMTg2LCA0LjAwMDY4OTg0MTYzMjI2NmUtMDZdLCBbMTYwMTQzMTk1My4zMDEyNzc2LCAyMDIxNywgMy45NTEwOTI4MjE4MDc4MzNlLTA2XSwgWzE2MDE0MzE5NTkuODc0OTg2LCAyMDI0NCwgMy45MDgxMjAxMDY2NDM3NjRlLTA2XSwgWzE2MDE0MzE5NjAuNzE1MzMxNiwgMjAyNDcsIDMuOTAzMzU3OTkyMzg1MjgxZS0wNl0sIFsxNjAxNDMxOTYyLjA0NDgxODksIDIwMjUyLCAzLjg5NTQyNzY1MzMzMzE3MmUtMDZdLCBbMTYwMTQzMTk3MS45NjY1OTUsIDIwMjkzLCAzLjgzMDY2Nzk5MjU4ODEzM2UtMDZdLCBbMTYwMTQzMTk3NS44Njg3NzEsIDIwMzA4LCAzLjgwNzA5Njg0NTc3NTk1OWUtMDZdLCBbMTYwMTQzMTk3OS40NzIzNTU4LCAyMDMyMywgMy43ODM1OTA3Mjc4MzQ5NjIzZS0wNl0sIFsxNjAxNDMxOTgxLjcwMTIyNDYsIDIwMzMyLCAzLjc2OTUxODM0MzY4ODEwNTJlLTA2XSwgWzE2MDE0MzE5ODIuMjU1NTMyLCAyMDMzNCwgMy43NjYzOTQ0NTY3NjExOTA3ZS0wNl0sIFsxNjAxNDMxOTg2LjkxNjE2NTgsIDIwMzUzLCAzLjczNjc3NDI2MDY4NzUyNTRlLTA2XSwgWzE2MDE0MzE5OTEuOTI0OTAzNCwgMjAzNzMsIDMuNzA1NzA4NjUwMTU5MDY3NWUtMDZdLCBbMTYwMTQzMTk5NC4yNzQxMDIyLCAyMDM4MywgMy42OTAyMTk1MDA2NDA1MjM2ZS0wNl0sIFsxNjAxNDMxOTk3Ljg4NDQzMSwgMjAzOTcsIDMuNjY4NTgzNTMxMTgwMDQ3NGUtMDZdLCBbMTYwMTQzMjAwNy45MDQ4NzEyLCAyMDQzOCwgMy42MDU1NTA3NzM0OTk5OTllLTA2XSwgWzE2MDE0MzIwMDguMzY2MjQzNCwgMjA0NDAsIDMuNjAyNDg4NTA0ODM5MTI5N2UtMDZdLCBbMTYwMTQzMjAxMy45NTU0MzQ4LCAyMDQ2MiwgMy41Njg4ODE3NjYxMTM5MTgzZS0wNl0sIFsxNjAxNDMyMDE5LjcwMjk5NzIsIDIwNDg1LCAzLjUzMzg5OTQxNjY1MjI3NTJlLTA2XSwgWzE2MDE0MzIwMjkuNzQ5MDcxNCwgMjA1MjYsIDMuNDcxOTI1OTkyOTI2MTE3ZS0wNl0sIFsxNjAxNDMyMDMzLjE0MTExMiwgMjA1MzksIDMuNDUyMzc5NTg3NTQyOTY0ZS0wNl0sIFsxNjAxNDMyMDMzLjM5NDExODMsIDIwNTQwLCAzLjQ1MDg3ODAxMTc5MDMzN2UtMDZdLCBbMTYwMTQzMjAzNy44NTM1MTA0LCAyMDU1OSwgMy40MjI0MDU1OTgwMzAzMDllLTA2XSwgWzE2MDE0MzIwMzguMDg1MzYxLCAyMDU2MCwgMy40MjA5MDk5MzM5OTMyNDM2ZS0wNl0sIFsxNjAxNDMyMDM4LjY3NDU0NTgsIDIwNTYyLCAzLjQxNzkxOTc0Mjc4NzQ4OTdlLTA2XSwgWzE2MDE0MzIwNDAuMTA4MzQyLCAyMDU2NywgMy40MTA0NDkxNTMzMDcxMjdlLTA2XSwgWzE2MDE0MzIwNDIuNzI1MzU3NSwgMjA1NzgsIDMuMzk0MDQwMDQ5ODk3NzM5N2UtMDZdLCBbMTYwMTQzMjA2MC44NjQzNjk5LCAyMDY1MSwgMy4yODYwNTUwNjE4MzUyMTM2ZS0wNl0sIFsxNjAxNDMyMDcwLjE1OTQ0MjcsIDIwNjg4LCAzLjIzMTkzMDEyMjYzODAwNWUtMDZdLCBbMTYwMTQzMjA3MC4zOTE3NzU0LCAyMDY4OSwgMy4yMzA0NzI4ODQ3NTIwODllLTA2XSwgWzE2MDE0MzIwNzQuNDc4ODI3MiwgMjA3MDYsIDMuMjA1NzQ3MzYxNzg5NjkwM2UtMDZdLCBbMTYwMTQzMjA3NS42NjUxMTY4LCAyMDcxMCwgMy4xOTk5NDIwNTcxMDgyNzM3ZS0wNl0sIFsxNjAxNDMyMDg0Ljg0NDgzODEsIDIwNzQ3LCAzLjE0NjQ3MTk1NDA5NjM0MTVlLTA2XSwgWzE2MDE0MzIwOTIuNDg0ODQ5NywgMjA3NzgsIDMuMTAxOTkwMTU5ODQ4MzU1N2UtMDZdLCBbMTYwMTQzMjA5Mi43MjA0ODE0LCAyMDc3OSwgMy4xMDA1NTk5Nzk0Mjk4MTc4ZS0wNl0sIFsxNjAxNDMyMDkzLjQ0MzQ4MDMsIDIwNzgyLCAzLjA5NjI3MTQ4NDUzNzI4M2UtMDZdLCBbMTYwMTQzMjA5My42NzUwOTksIDIwNzgzLCAzLjA5NDg0MjY2ODM2MDc5NzdlLTA2XSwgWzE2MDE0MzIxMDIuMDc0MDA0NCwgMjA4MTcsIDMuMDQ2NDQxMTc5MzIxODQ2ZS0wNl0sIFsxNjAxNDMyMTAzLjMxODA1NCwgMjA4MjIsIDMuMDM5MzUzMDMyMzYzNTc4N2UtMDZdLCBbMTYwMTQzMjEwNS42ODk4NzcsIDIwODMxLCAzLjAyNjYxMzA1Nzk1NDgxOWUtMDZdLCBbMTYwMTQzMjExMS42MDgzNDIyLCAyMDg1NSwgMi45OTI3NjAwNzM1MzkxMDI1ZS0wNl0sIFsxNjAxNDMyMTE5Ljc4MzkwOTMsIDIwODg4LCAyLjk0NjQ5ODE3MDc4NjA3MTZlLTA2XSwgWzE2MDE0MzIxMjUuNzA1OTgsIDIwOTEyLCAyLjkxMzA2MTczNDk0Mzc2N2UtMDZdLCBbMTYwMTQzMjEyNi4wMDA2NTI2LCAyMDkxMywgMi45MTE2NzIyNTQ0MTMxMzM1ZS0wNl0sIFsxNjAxNDMyMTM0Ljg2MTUzNzUsIDIwOTQ5LCAyLjg2MTg1ODMyMDEwMjMyODRlLTA2XSwgWzE2MDE0MzIxNDQuMTcxNDYwMiwgMjA5ODcsIDIuODA5NzA3NjY2NTI4OTkzM2UtMDZdLCBbMTYwMTQzMjE1NC4xNTc1NjA2LCAyMTAyNywgMi43NTUyOTE0NjE2NTM1NDE4ZS0wNl0sIFsxNjAxNDMyMTU1LjY3MTQwODcsIDIxMDMzLCAyLjc0NzE3MTQ5Mjk1NjExM2UtMDZdLCBbMTYwMTQzMjE1Ni4xNDI4NDk3LCAyMTAzNSwgMi43NDQ0NjczMzc4MzQwNjY3ZS0wNl0sIFsxNjAxNDMyMTU2LjM3NzQyOTIsIDIxMDM2LCAyLjc0MzExNTgyODcwNzIzMmUtMDZdLCBbMTYwMTQzMjE2NC4wMTEyODI0LCAyMTA2NywgMi43MDEzNjg0MzAyODAxMjY2ZS0wNl0sIFsxNjAxNDMyMTY2LjExNTkzOTYsIDIxMDc2LCAyLjY4OTMwMzc1NTY4NzQzMzNlLTA2XSwgWzE2MDE0MzIxNjcuMDU1ODczOSwgMjEwODAsIDIuNjgzOTQ5Nzg3NzUxNzcxNWUtMDZdLCBbMTYwMTQzMjE4My4xOTMwNjY4LCAyMTE0NCwgMi41OTg5NjAyMzYzNTUxOTY3ZS0wNl0sIFsxNjAxNDMyMTk5LjI0NjM5OCwgMjEyMDksIDIuNTEzOTQ2ODEwNzIyNzAwM2UtMDZdLCBbMTYwMTQzMjIwNC45NTE2NTI1LCAyMTIzMiwgMi40ODQxODA4NjgxMjMwNzZlLTA2XSwgWzE2MDE0MzIyMDguNzAzMDI3MiwgMjEyNDgsIDIuNDYzNTcxOTQ1NTU0NTc3ZS0wNl0sIFsxNjAxNDMyMjI1Ljc0MDgyODgsIDIxMzE2LCAyLjM3Njg3OTgyMDA3NjI4M2UtMDZdLCBbMTYwMTQzMjIyNi41NjAwMjU1LCAyMTMxOSwgMi4zNzMwODg4MTg3ODU2MThlLTA2XSwgWzE2MDE0MzIyMjcuNzI3NDA2LCAyMTMyNCwgMi4zNjY3NzY0NzA4MDc5NjNlLTA2XSwgWzE2MDE0MzIyNDQuMDg5MzgwNSwgMjEzOTEsIDIuMjgyOTUyODkxNjE5MDYxZS0wNl0sIFsxNjAxNDMyMjQ4LjczNzcyMjYsIDIxNDA5LCAyLjI2MDY3NTA0NjI3MjgwODdlLTA2XSwgWzE2MDE0MzIyNjcuMDEwNzU4MiwgMjE0ODQsIDIuMTY4OTU3OTYyNTY3MjE5NWUtMDZdLCBbMTYwMTQzMjI3Ni45MTI2NDM3LCAyMTUyMywgMi4xMjE5NzI3ODQxNTI2MDM3ZS0wNl0sIFsxNjAxNDMyMjc3LjE0NTQ4MzcsIDIxNTI0LCAyLjEyMDc3NDUyNDg4MzAxOGUtMDZdLCBbMTYwMTQzMjI5Mi43NjI0MjM4LCAyMTU4NywgMi4wNDU5MjI4ODM1NTM0MzA0ZS0wNl0sIFsxNjAxNDMyMjk1Ljg0MTc2LCAyMTYwMCwgMi4wMzA2MzU2NDE4NTg2OGUtMDZdLCBbMTYwMTQzMjI5OC42ODE4MTcsIDIxNjExLCAyLjAxNzc0MjY0NDk2NjM0N2UtMDZdLCBbMTYwMTQzMjMwOC4xOTUxNjc4LCAyMTY1MCwgMS45NzIzNDQ1MzQ4MDYzMjVlLTA2XSwgWzE2MDE0MzIzMTEuODA1NjEyMywgMjE2NjQsIDEuOTU2MTY3MzUyNTQ1ODllLTA2XSwgWzE2MDE0MzIzMTUuNzg1NTM5OSwgMjE2ODEsIDEuOTM2NjA4NjY4OTg0MjYzZS0wNl0sIFsxNjAxNDMyMzE5LjE4MDkzNTQsIDIxNjk0LCAxLjkyMTcxNDc4Mzc0ODAyOTdlLTA2XSwgWzE2MDE0MzIzMjYuMzQ4OTc5MiwgMjE3MjMsIDEuODg4Njg3MDUyMDg3MzM0NWUtMDZdLCBbMTYwMTQzMjMyNi41ODI0MTI1LCAyMTcyNCwgMS44ODc1NTMwMjU4ODEwNjEzZS0wNl0sIFsxNjAxNDMyMzM2LjYyOTYxOTEsIDIxNzY1LCAxLjg0MTMzNjQ4NDE3NjI4MTRlLTA2XSwgWzE2MDE0MzIzNDIuNjQzODA2LCAyMTc4OSwgMS44MTQ1MzU4MzUzNjQ5NDk5ZS0wNl0sIFsxNjAxNDMyMzQ0LjA0OTg3NTcsIDIxNzk1LCAxLjgwNzg2NTAzMjc4Nzk1ODZlLTA2XSwgWzE2MDE0MzIzNDkuMTI5MDEyOCwgMjE4MTUsIDEuNzg1NzEzMjY2MTQ0NzM5NWUtMDZdLCBbMTYwMTQzMjM1MC41NDE1MDEsIDIxODIxLCAxLjc3OTA5MzA1NDIxMDUzNDNlLTA2XSwgWzE2MDE0MzIzNTUuODQzMjIzMywgMjE4NDIsIDEuNzU2MDE0ODUzNTI2NzIxN2UtMDZdLCBbMTYwMTQzMjM1Ny4yNDIyMDEzLCAyMTg0OCwgMS43NDk0NDc1MDU5NzIwNTcxZS0wNl0sIFsxNjAxNDMyMzY5LjAxMjU0NzcsIDIxODk1LCAxLjY5ODQwOTczMjg1MzE3ODllLTA2XSwgWzE2MDE0MzIzNzIuMDg0NjIyNiwgMjE5MDgsIDEuNjg0NDIwNDUzNzg0Njk2M2UtMDZdLCBbMTYwMTQzMjM4Ni41MjcyMDcxLCAyMTk2NywgMS42MjE2MjYwOTc0MDMzNTAzZS0wNl0sIFsxNjAxNDMyMzk0LjQzOTI3NTUsIDIxOTk5LCAxLjU4ODA0NjE4ODc3MTg0MTFlLTA2XSwgWzE2MDE0MzIzOTYuMjYzODE3OCwgMjIwMDYsIDEuNTgwNzQ1NDQ3NDI3MDM0NGUtMDZdLCBbMTYwMTQzMjQxNi43OTIwMTQ0LCAyMjA5MCwgMS40OTQzOTY4ODM1NzIzMzU0ZS0wNl0sIFsxNjAxNDMyNDIxLjg4ODczNCwgMjIxMTAsIDEuNDc0MTgxMjAzNzc1NTE1M2UtMDZdLCBbMTYwMTQzMjQ0OS4zNjc0NzQzLCAyMjIyMCwgMS4zNjUzNjYxODgxMTA3ODM3ZS0wNl0sIFsxNjAxNDMyNDU1LjY0NDY3MTcsIDIyMjQ1LCAxLjM0MTE5NjcwNzQ3MTY4MTNlLTA2XSwgWzE2MDE0MzI0NTYuMTE0ODA5LCAyMjI0NywgMS4zMzkyNzIxMDI5OTU4OTJlLTA2XSwgWzE2MDE0MzI0NTguNzM2NTM5NCwgMjIyNTgsIDEuMzI4NzEwODIzMTQ1MjI5NGUtMDZdLCBbMTYwMTQzMjQ2NS40NTgyNTUzLCAyMjI4NSwgMS4zMDI5NTkwNDkwOTg3MTc1ZS0wNl0sIFsxNjAxNDMyNDY3LjEzOTU0NjksIDIyMjkyLCAxLjI5NjMyMjM1MjU3MzA0MjdlLTA2XSwgWzE2MDE0MzI0NzAuMTA1MjYzLCAyMjMwMywgMS4yODU5MjY0ODcwNzEyNjVlLTA2XSwgWzE2MDE0MzI0NzEuMjkyMzExMiwgMjIzMDgsIDEuMjgxMjE0Mzk1MDIxMzc5NWUtMDZdLCBbMTYwMTQzMjQ3Mi45NjIzODkyLCAyMjMxNSwgMS4yNzQ2MzE1ODYwNTY3ODQ3ZS0wNl0sIFsxNjAxNDMyNDczLjE5OTc1MDcsIDIyMzE2LCAxLjI3MzY5MjUzMjc3NzIwNDJlLTA2XSwgWzE2MDE0MzI0NzYuODI3NjcxMywgMjIzMzAsIDEuMjYwNTgwODAyNDA5MDk0OGUtMDZdLCBbMTYwMTQzMjQ4My45MDQ0MTEzLCAyMjM1OCwgMS4yMzQ1NTQzNjA5NjI2NDc1ZS0wNl0sIFsxNjAxNDMyNTAwLjg5MTIzLCAyMjQyNywgMS4xNzE1NDA3MDI2NzEzMzY1ZS0wNl0sIFsxNjAxNDMyNTAxLjU5MDA0OTUsIDIyNDMwLCAxLjE2ODgzNzIyOTY3MDMxNjRlLTA2XSwgWzE2MDE0MzI1MTAuMDU1MjAxOCwgMjI0NjQsIDEuMTM4NDEwMTk4MTA5MzQwOWUtMDZdLCBbMTYwMTQzMjUxMi4yMTAxNTYsIDIyNDcyLCAxLjEzMTMwNzQ5OTIzNTg0NTJlLTA2XSwgWzE2MDE0MzI1MjAuNDE0NTg3LCAyMjUwNSwgMS4xMDIyMzcyMDYzOTYyMzkzZS0wNl0sIFsxNjAxNDMyNTIwLjg5NjI2OTgsIDIyNTA3LCAxLjEwMDQ4NzIyNDkwMzE5MDVlLTA2XSwgWzE2MDE0MzI1MjIuMDczNTE0LCAyMjUxMiwgMS4wOTYxMTgwMTIzNTU4NzM0ZS0wNl0sIFsxNjAxNDMyNTI5Ljk3ODM4MjgsIDIyNTQ0LCAxLjA2ODM1NTU3Mjg5NzQxN2UtMDZdLCBbMTYwMTQzMjUzNC44MTE1ODc2LCAyMjU2MywgMS4wNTIwMzU0ODYyODE5NjU5ZS0wNl0sIFsxNjAxNDMyNTUyLjU3MjI0MzcsIDIyNjM1LCA5LjkxMzAxMTM1NDAwMTM1NWUtMDddLCBbMTYwMTQzMjU1My4xMTIzODYyLCAyMjYzNywgOS44OTYzOTI2MTIwNjMyMWUtMDddLCBbMTYwMTQzMjU1Ni42NTc5MTA2LCAyMjY1MSwgOS43ODA0MzY1ODUwNjA2N2UtMDddLCBbMTYwMTQzMjU2NS4xMDk5MSwgMjI2ODUsIDkuNTAxNjAzNjk5MzkxMTI2ZS0wN10sIFsxNjAxNDMyNTgzLjQ2MTQ4NywgMjI3NTgsIDguOTE2MjM3NTYxNjA2OTc3ZS0wN10sIFsxNjAxNDMyNTg1LjEyMTg5NjUsIDIyNzY1LCA4Ljg2MTA2MTkyODY1NTU0NWUtMDddLCBbMTYwMTQzMjU4Ny45NzMwNjE2LCAyMjc3NywgOC43NjY4NjQ0MjU1MjQ1NDVlLTA3XSwgWzE2MDE0MzI2MDAuMjY4MDMyOCwgMjI4MjYsIDguMzg3MzM1Njk3MDc5ODM0ZS0wN10sIFsxNjAxNDMyNjAwLjc0NDY1NTYsIDIyODI4LCA4LjM3MjAxOTIzNzg2Nzc4OWUtMDddLCBbMTYwMTQzMjYwMy40NTcwODUsIDIyODM5LCA4LjI4ODAyMzQyMzExOTczOWUtMDddLCBbMTYwMTQzMjYwMy43MzI0NzI0LCAyMjg0MCwgOC4yODA0MDgxMTAyOTQ5NTdlLTA3XSwgWzE2MDE0MzI2MDUuMDI3ODc2OSwgMjI4NDUsIDguMjQyMzgyMTM2ODEzODMxZS0wN10sIFsxNjAxNDMyNjIwLjcwODQzNSwgMjI5MDksIDcuNzYzMjI2NzkwMzAyNzI0ZS0wN10sIFsxNjAxNDMyNjI1Ljk2NjE5ODcsIDIyOTMwLCA3LjYwOTA2ODU3NTIyMDU5ZS0wN10sIFsxNjAxNDMyNjI2LjY4MjcwMywgMjI5MzMsIDcuNTg3MTY5NjQ4MTA0NDY0ZS0wN10sIFsxNjAxNDMyNjI2LjkxNTAzNTIsIDIyOTM0LCA3LjU3OTg3NjYzNzQ2NDYyMmUtMDddLCBbMTYwMTQzMjY2My4xNjU0NjgsIDIzMDgwLCA2LjU1MjEwNDQyMzQ2Mjg3OWUtMDddLCBbMTYwMTQzMjY2NC4xMDIxNTQsIDIzMDg0LCA2LjUyNDk4MTU4NjE1MzQ0NGUtMDddLCBbMTYwMTQzMjY2NC4zMzY1ODUsIDIzMDg1LCA2LjUxODIwOTgyOTY2NDU1NmUtMDddLCBbMTYwMTQzMjY2OC42NTMzNDk5LCAyMzEwMiwgNi40MDM2MTQwNjU2NzUzNTZlLTA3XSwgWzE2MDE0MzI2NzIuMzAxNDU4MSwgMjMxMTcsIDYuMzAzMzMwOTA2MTIxMTE4ZS0wN10sIFsxNjAxNDMyNjc0Ljc5MDYxNjMsIDIzMTI3LCA2LjIzNjkwODIzNDMxMzg4N2UtMDddLCBbMTYwMTQzMjY3Ny41ODM5OCwgMjMxMzgsIDYuMTY0MjQzMDE4MjQ3MzYyZS0wN10sIFsxNjAxNDMyNjc4Ljc0OTAyNjUsIDIzMTQzLCA2LjEzMTM1MTcxMDc5MTkzMmUtMDddLCBbMTYwMTQzMjY3OC45ODM0ODIxLCAyMzE0NCwgNi4xMjQ3ODQwMjIxNzY3NTVlLTA3XSwgWzE2MDE0MzI2NzkuOTE4MDg1MywgMjMxNDgsIDYuMDk4NTQ3MzczNzY3MzZlLTA3XSwgWzE2MDE0MzI2ODAuODU5OTgxNSwgMjMxNTIsIDYuMDcyMzY2NDMxOTA4NDQ5ZS0wN10sIFsxNjAxNDMyNjgyLjQ3NzQ5MDQsIDIzMTU4LCA2LjAzMzE5ODQ3NDE0MjQwOWUtMDddLCBbMTYwMTQzMjY4OC4yNzQxMjE4LCAyMzE4MiwgNS44Nzc3NzU0OTI5OTA2MjJlLTA3XSwgWzE2MDE0MzI2OTEuMDM2NjY2NiwgMjMxOTIsIDUuODEzNjA1NTI1ODcyODQ1ZS0wN10sIFsxNjAxNDMyNjk3LjU2MDY1NDksIDIzMjE4LCA1LjY0ODM4ODQyMzY1MTM0ZS0wN10sIFsxNjAxNDMyNjk4LjA2NTY0MDcsIDIzMjIwLCA1LjYzNTc3NjU3NDMwODY5M2UtMDddLCBbMTYwMTQzMjcwMC4xNjYxOTEsIDIzMjI5LCA1LjU3OTE5NTIwMzYwODgzM2UtMDddLCBbMTYwMTQzMjcwOC41OTgyMzUxLCAyMzI2MywgNS4zNjc5ODQ5NTQzMTg2NzJlLTA3XSwgWzE2MDE0MzI3MTQuMzQ0NDIwNywgMjMyODYsIDUuMjI3Mzg3MzA1MjM5OTcyZS0wN10sIFsxNjAxNDMyNzIyLjc1MjQyMDIsIDIzMzIwLCA1LjAyMjkyMDM5MDcyOTI2OWUtMDddLCBbMTYwMTQzMjcyNy4xNzMzMTc3LCAyMzMzNywgNC45MjIxOTcyNjMxMTMwNDhlLTA3XSwgWzE2MDE0MzI3MzMuMTM5MTc5NywgMjMzNjEsIDQuNzgxNzE1NTc0NjA4ODI1ZS0wN10sIFsxNjAxNDMyNzM3LjcyNDQ3NTYsIDIzMzgwLCA0LjY3MTkyNTkyMTY4NDMwNTZlLTA3XSwgWzE2MDE0MzI3NDEuNDIxNDYwMiwgMjMzOTQsIDQuNTkxODM0Mzk3MTYwNzFlLTA3XSwgWzE2MDE0MzI3NDkuNjE0MDk3OCwgMjM0MjcsIDQuNDA1NzU2NjEyODY4NTcyZS0wN10sIFsxNjAxNDMyNzc3Ljc3MzA2NTgsIDIzNTQwLCAzLjc5NzQzNzEwMjU0ODQyOWUtMDddLCBbMTYwMTQzMjc4OS44Njg4ODQ4LCAyMzU4OSwgMy41NDc1NjE2NzU1MzIwNTE2ZS0wN10sIFsxNjAxNDMyODA1LjI3MTIyNiwgMjM2NTAsIDMuMjQ4MjcyNTQ4NzE3MDY4M2UtMDddLCBbMTYwMTQzMjgwOS45OTE3MTg4LCAyMzY3MCwgMy4xNTI5OTIxNzg0NTY3NzA1ZS0wN10sIFsxNjAxNDMyODEyLjkwMTE3NTUsIDIzNjgxLCAzLjEwMTE4NzY0NDQ2MDg3OWUtMDddLCBbMTYwMTQzMjgxNy43MDE5NDQsIDIzNzAxLCAzLjAwODA4ODY0MDM5OTM2NDVlLTA3XSwgWzE2MDE0MzI4MzIuNzcwNTEyOCwgMjM3NjEsIDIuNzM3MjQzOTYwMzgyMzI5NWUtMDddLCBbMTYwMTQzMjgzNi4wMzYyMzUzLCAyMzc3NCwgMi42ODAyMzMxMzc2NTI5NzY0ZS0wN10sIFsxNjAxNDMyODQ1LjIwODI4NDYsIDIzODExLCAyLjUyMTIzMzg1MjgwMzU2MTZlLTA3XSwgWzE2MDE0MzI4NTAuMzYwMDI1LCAyMzgzMSwgMi40MzcyOTk5OTczODIwNjk3ZS0wN10sIFsxNjAxNDMyODUyLjk1ODA2MjYsIDIzODQyLCAyLjM5MTczODI5MTg2MjU2NmUtMDddLCBbMTYwMTQzMjg3NC4zMzA0MTQ1LCAyMzkyOCwgMi4wNTAyNjU4MDYwMTk1MjQ1ZS0wN10sIFsxNjAxNDMyODc3LjAwNzE5NywgMjM5MzgsIDIuMDEyMjU3MDI3NjcyNjAzN2UtMDddLCBbMTYwMTQzMjg5OC42ODY5MDIsIDI0MDI1LCAxLjY5NjUxNzQxNTQzOTMwMjZlLTA3XSwgWzE2MDE0MzI5MTIuMTIyOTExNSwgMjQwNzksIDEuNTE0MDMwMjg3ODA4MDU0N2UtMDddLCBbMTYwMTQzMjkyMS4zMzI4Mjg1LCAyNDExNiwgMS4zOTQ5NjQyMTUyNTEwOTMzZS0wN10sIFsxNjAxNDMyOTIxLjc5NzAzODYsIDI0MTE4LCAxLjM4ODY2NjUzMjg3NTUwNDNlLTA3XSwgWzE2MDE0MzI5MjguOTk4Mzc0LCAyNDE0NywgMS4yOTg5NDcwMTIxNzM4MTIzZS0wN10sIFsxNjAxNDMyOTM4LjY1MzAwOTIsIDI0MTg2LCAxLjE4Mjk5ODU4Nzk3ODU0NTRlLTA3XSwgWzE2MDE0MzI5NTAuNzIxNzY1MywgMjQyMzQsIDEuMDQ3NzEyMjQ1ODQ5NjUyNGUtMDddLCBbMTYwMTQzMjk2Mi45MTg3MTQsIDI0MjgyLCA5LjIwNjE3OTY0MDg0MTU4M2UtMDhdLCBbMTYwMTQzMjk2My40MjM2MDYsIDI0Mjg0LCA5LjE1NTAwMjA4OTc1NTcyNmUtMDhdLCBbMTYwMTQzMjk2NS4zMzAxOTQ1LCAyNDI5MiwgOC45NTE3MTU4MTMwNTQ3NjFlLTA4XSwgWzE2MDE0MzI5NzIuODE3NDY3MiwgMjQzMjIsIDguMjA5Njc2ODQ5NDQ2NjIzZS0wOF0sIFsxNjAxNDMyOTc3Ljk0NTgxMTUsIDI0MzQyLCA3LjczMjc4MTg4MTQ4NjUxN2UtMDhdLCBbMTYwMTQzMjk3OC42NzM1MDMsIDI0MzQ1LCA3LjY2MjQ3NTgwOTQxMTI2MmUtMDhdLCBbMTYwMTQzMjk4MS45NzIxNjI1LCAyNDM1OSwgNy4zMzg2MTgyNDY0MjE5MDJlLTA4XSwgWzE2MDE0MzI5OTYuMTU0NTE4NCwgMjQ0MTYsIDYuMDkyMTI5NDY3NTYwODhlLTA4XSwgWzE2MDE0MzMwMjAuMzI5NDM2MywgMjQ1MTIsIDQuMjU0NTEwNjk5Mjk3NDk4ZS0wOF0sIFsxNjAxNDMzMDMxLjQxNDc0NiwgMjQ1NTcsIDMuNTA2MjYzMzY4NTM1NjU2ZS0wOF0sIFsxNjAxNDMzMDMyLjM2NzcxMywgMjQ1NjEsIDMuNDQzMjQ4ODg2MDE0NzcxNGUtMDhdLCBbMTYwMTQzMzA0Ny4zMjgxNjc0LCAyNDYyMSwgMi41NjY1NDg3NTEzMDM3OTg4ZS0wOF0sIFsxNjAxNDMzMDU4Ljk4Mzg1MjQsIDI0NjY3LCAxLjk4MTQzOTE5MDUwMTUzMjdlLTA4XSwgWzE2MDE0MzMwNjYuNDUyNDYzNiwgMjQ2OTcsIDEuNjQwNTUxNTE2ODU3MTU4M2UtMDhdLCBbMTYwMTQzMzA3Mi4wNDIxODcyLCAyNDcxOSwgMS40MTA5OTU0MDk0MDEwMzllLTA4XSwgWzE2MDE0MzMwNzMuOTEyMTA3MiwgMjQ3MjcsIDEuMzMxODA2Mzk4NDk2ODM3NmUtMDhdLCBbMTYwMTQzMzA3OC43NDk3MTcyLCAyNDc0NiwgMS4xNTI4OTQ5MzUwNzQ3NTUzZS0wOF0sIFsxNjAxNDMzMDg5LjUxMzA1NzcsIDI0NzkwLCA3Ljg4MDg2ODQwMjMxMDE3ZS0wOV0sIFsxNjAxNDMzMDk4LjgyMDM1NjgsIDI0ODI3LCA1LjM0ODU1OTgxNzI2NDIzMWUtMDldLCBbMTYwMTQzMzEwNC4xMjIxODIsIDI0ODQ5LCA0LjA3NDc3MDc0MzA0NTUxOWUtMDldLCBbMTYwMTQzMzExMS41NzcwOTIsIDI0ODc5LCAyLjYxNjUyNzQzOTE1ODc0NDVlLTA5XSwgWzE2MDE0MzMxMTUuNzAyMTY2OCwgMjQ4OTUsIDEuOTcwMzE0MTM0MDY5ODk1ZS0wOV0sIFsxNjAxNDMzMTE3LjE0MzY5MDYsIDI0OTAxLCAxLjc1MTU3MjMzMTYyMDgyMWUtMDldLCBbMTYwMTQzMzExOS4zNjAzNzY4LCAyNDkxMCwgMS40NDc1ODQwNTI2MjczNDg3ZS0wOV0sIFsxNjAxNDMzMTI1LjI2MDAyODEsIDI0OTM0LCA3Ljc4NDgyODg5MjYzMTg3OWUtMTBdLCBbMTYwMTQzMzEyNy4zODg0MDc1LCAyNDk0MiwgNi4wMTE5ODQyNDM3NzAwM2UtMTBdLCBbMTYwMTQzMzEzMi40NzM1MDYsIDI0OTYzLCAyLjQ0NjYyMDQwNjI3MTE5NGUtMTBdLCBbMTYwMTQzMzEzNS43Mjk1OCwgMjQ5NzUsIDEuMTE2OTc1NDcwNDQ5ODY1OGUtMTBdLCBbMTYwMTQzMzEzNi4xOTgwODgyLCAyNDk3NywgOS40NTQwODE5NjE3MzUwMjhlLTExXSwgWzE2MDE0MzMxMzguNTU0MTg2MywgMjQ5ODcsIDMuMDIwMzAzNzk4NzI4NjQxZS0xMV0sIFsxNjAxNDMzMjIxLjg3MjE1NDUsIDI0OTk5LCAxLjc4NzE2MjQwNDgyNzA1NTdlLTEzXV0=", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/plugin/scalars/tags": { - "data": "eyIuIjogeyJ0cmFpbl9sb3NzIjogeyJkaXNwbGF5TmFtZSI6ICJ0cmFpbl9sb3NzIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAibHIiOiB7ImRpc3BsYXlOYW1lIjogImxyIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAiZXBvY2giOiB7ImRpc3BsYXlOYW1lIjogImVwb2NoIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAidmFsX2xvc3MiOiB7ImRpc3BsYXlOYW1lIjogInZhbF9sb3NzIiwgImRlc2NyaXB0aW9uIjogIiJ9LCAicGVycGxleGl0eSI6IHsiZGlzcGxheU5hbWUiOiAicGVycGxleGl0eSIsICJkZXNjcmlwdGlvbiI6ICIifX19", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/plugins_listing": { - "data": "eyJzY2FsYXJzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJzY2FsYXJzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1zY2FsYXItZGFzaGJvYXJkIn19LCAiY3VzdG9tX3NjYWxhcnMiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJDdXN0b20gU2NhbGFycyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtY3VzdG9tLXNjYWxhci1kYXNoYm9hcmQifX0sICJkZWJ1Z2dlci12MiI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiRGVidWdnZXIgVjIiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiTkdfQ09NUE9ORU5UIn19LCAiaW1hZ2VzIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiaW1hZ2VzIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1pbWFnZS1kYXNoYm9hcmQifX0sICJhdWRpbyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImF1ZGlvIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1hdWRpby1kYXNoYm9hcmQifX0sICJkZWJ1Z2dlciI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImRlYnVnZ2VyIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1kZWJ1Z2dlci1kYXNoYm9hcmQifX0sICJncmFwaHMiOiB7ImRpc2FibGVfcmVsb2FkIjogdHJ1ZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImdyYXBocyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtZ3JhcGgtZGFzaGJvYXJkIn19LCAiZGlzdHJpYnV0aW9ucyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogImRpc3RyaWJ1dGlvbnMiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQifX0sICJoaXN0b2dyYW1zIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiaGlzdG9ncmFtcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtaGlzdG9ncmFtLWRhc2hib2FyZCJ9fSwgInRleHQiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJ0ZXh0IiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi10ZXh0LWRhc2hib2FyZCJ9fSwgInByX2N1cnZlcyI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlBSIEN1cnZlcyIsICJsb2FkaW5nX21lY2hhbmlzbSI6IHsidHlwZSI6ICJDVVNUT01fRUxFTUVOVCIsICJlbGVtZW50X25hbWUiOiAidGYtcHItY3VydmUtZGFzaGJvYXJkIn19LCAicHJvZmlsZV9yZWRpcmVjdCI6IHsiZGlzYWJsZV9yZWxvYWQiOiBmYWxzZSwgImVuYWJsZWQiOiBmYWxzZSwgInJlbW92ZV9kb20iOiBmYWxzZSwgInRhYl9uYW1lIjogIlByb2ZpbGUiLCAibG9hZGluZ19tZWNoYW5pc20iOiB7InR5cGUiOiAiQ1VTVE9NX0VMRU1FTlQiLCAiZWxlbWVudF9uYW1lIjogInRmLXByb2ZpbGUtcmVkaXJlY3QtZGFzaGJvYXJkIn19LCAiYmVob2xkZXIiOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogdHJ1ZSwgInRhYl9uYW1lIjogImJlaG9sZGVyIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1iZWhvbGRlci1kYXNoYm9hcmQifX0sICJocGFyYW1zIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IHRydWUsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJocGFyYW1zIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJ0Zi1ocGFyYW1zLWRhc2hib2FyZCJ9fSwgIm1lc2giOiB7ImRpc2FibGVfcmVsb2FkIjogZmFsc2UsICJlbmFibGVkIjogZmFsc2UsICJyZW1vdmVfZG9tIjogZmFsc2UsICJ0YWJfbmFtZSI6ICJtZXNoIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIkNVU1RPTV9FTEVNRU5UIiwgImVsZW1lbnRfbmFtZSI6ICJtZXNoLWRhc2hib2FyZCJ9fSwgInByb2plY3RvciI6IHsiZGlzYWJsZV9yZWxvYWQiOiB0cnVlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAicHJvamVjdG9yIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vcHJvamVjdG9yL2luZGV4LmpzIn19LCAid2hhdGlmIjogeyJkaXNhYmxlX3JlbG9hZCI6IGZhbHNlLCAiZW5hYmxlZCI6IGZhbHNlLCAicmVtb3ZlX2RvbSI6IGZhbHNlLCAidGFiX25hbWUiOiAiV2hhdC1JZiBUb29sIiwgImxvYWRpbmdfbWVjaGFuaXNtIjogeyJ0eXBlIjogIklGUkFNRSIsICJtb2R1bGVfcGF0aCI6ICIvZGF0YS9wbHVnaW4vd2hhdGlmL2luZGV4LmpzIn19fQ==", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/data/runs": { - "data": "WyIuIl0=", - "headers": [ - [ - "content-type", - "application/json" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/font-roboto/RxZJdnzeo3R5zSexge8UUZBw1xU1rKptJj_0jans920.woff2": { - "data": "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", - "headers": [ - [ - "content-type", - "font/woff2" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/font-roboto/d-6IYplOFocCacKzxwXSOJBw1xU1rKptJj_0jans920.woff2": { - "data": "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", - "headers": [ - [ - "content-type", - "font/woff2" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/font-roboto/oMMgfZMQthOryQo9n22dcuvvDin1pK8aKteLpeZ5c0A.woff2": { - "data": "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", - "headers": [ - [ - "content-type", - "font/woff2" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/font-roboto/vPcynSL0qHq_6dX7lKVByXYhjbSpvc47ee6xR_80Hnw.woff2": { - "data": "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", - "headers": [ - [ - "content-type", - "font/woff2" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - }, - "https://localhost:6008/index.js": { - "data": "Ly8jIHNvdXJjZVVSTD1idWlsZDovZXh0ZXJuYWwvY29tX2dvb2dsZV9qYXZhc2NyaXB0X2Nsb3N1cmVfbGlicmFyeS9jbG9zdXJlL2dvb2cvYmFzZS5qcwpmdW5jdGlvbiB3YShiKXt2YXIgZD0wO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkPGIubGVuZ3RoP3tkb25lOiExLHZhbHVlOmJbZCsrXX06e2RvbmU6ITB9fX1mdW5jdGlvbiBnYihiKXtyZXR1cm57bmV4dDp3YShiKX19ZnVuY3Rpb24gbGIoYil7dmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO3JldHVybiBkP2QuY2FsbChiKTpnYihiKX12YXIgd2I9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdz09PWI/YjoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbnVsbCE9Z2xvYmFsP2dsb2JhbDpifSh0aGlzKSxSYj0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKGIsZCxmKXtiIT1BcnJheS5wcm90b3R5cGUmJmIhPU9iamVjdC5wcm90b3R5cGUmJihiW2RdPWYudmFsdWUpfTsKZnVuY3Rpb24gVWIoYixkKXtpZihkKXt2YXIgZj13YjtiPWIuc3BsaXQoIi4iKTtmb3IodmFyIGg9MDtoPGIubGVuZ3RoLTE7aCsrKXt2YXIgaz1iW2hdO2sgaW4gZnx8KGZba109e30pO2Y9ZltrXX1iPWJbYi5sZW5ndGgtMV07aD1mW2JdO2Q9ZChoKTtkIT1oJiZudWxsIT1kJiZSYihmLGIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpkfSl9fQpVYigiUHJvbWlzZSIsZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChwKXt0aGlzLnN0YXRlXz0wO3RoaXMucmVzdWx0Xz12b2lkIDA7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPVtdO3ZhciBtPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7cChtLnJlc29sdmUsbS5yZWplY3QpfWNhdGNoKG4pe20ucmVqZWN0KG4pfX1mdW5jdGlvbiBmKCl7dGhpcy5iYXRjaF89bnVsbH1mdW5jdGlvbiBoKHApe3N3aXRjaCh0eXBlb2YgcCl7Y2FzZSAib2JqZWN0IjpyZXR1cm4gbnVsbCE9cDtjYXNlICJmdW5jdGlvbiI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gayhwKXtyZXR1cm4gcCBpbnN0YW5jZW9mIGQ/cDpuZXcgZChmdW5jdGlvbihtKXttKHApfSl9aWYoYilyZXR1cm4gYjtmLnByb3RvdHlwZS5hc3luY0V4ZWN1dGU9ZnVuY3Rpb24ocCl7aWYobnVsbD09dGhpcy5iYXRjaF8pe3RoaXMuYmF0Y2hfPVtdO3ZhciBtPXRoaXM7dGhpcy5hc3luY0V4ZWN1dGVGdW5jdGlvbihmdW5jdGlvbigpe20uZXhlY3V0ZUJhdGNoXygpfSl9dGhpcy5iYXRjaF8ucHVzaChwKX07CnZhciB0PXdiLnNldFRpbWVvdXQ7Zi5wcm90b3R5cGUuYXN5bmNFeGVjdXRlRnVuY3Rpb249ZnVuY3Rpb24ocCl7dChwLDApfTtmLnByb3RvdHlwZS5leGVjdXRlQmF0Y2hfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJhdGNoXyYmdGhpcy5iYXRjaF8ubGVuZ3RoOyl7dmFyIHA9dGhpcy5iYXRjaF87dGhpcy5iYXRjaF89W107Zm9yKHZhciBtPTA7bTxwLmxlbmd0aDsrK20pe3ZhciBuPXBbbV07cFttXT1udWxsO3RyeXtuKCl9Y2F0Y2gocSl7dGhpcy5hc3luY1Rocm93XyhxKX19fXRoaXMuYmF0Y2hfPW51bGx9O2YucHJvdG90eXBlLmFzeW5jVGhyb3dfPWZ1bmN0aW9uKHApe3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXt0aHJvdyBwO30pfTtkLnByb3RvdHlwZS5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0Xz1mdW5jdGlvbigpe2Z1bmN0aW9uIHAocSl7cmV0dXJuIGZ1bmN0aW9uKHUpe258fChuPSEwLHEuY2FsbChtLHUpKX19dmFyIG09dGhpcyxuPSExO3JldHVybntyZXNvbHZlOnAodGhpcy5yZXNvbHZlVG9fKSwKcmVqZWN0OnAodGhpcy5yZWplY3RfKX19O2QucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24ocCl7cD09PXRoaXM/dGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk6cCBpbnN0YW5jZW9mIGQ/dGhpcy5zZXR0bGVTYW1lQXNQcm9taXNlXyhwKTpoKHApP3RoaXMucmVzb2x2ZVRvTm9uUHJvbWlzZU9ial8ocCk6dGhpcy5mdWxmaWxsXyhwKX07ZC5wcm90b3R5cGUucmVzb2x2ZVRvTm9uUHJvbWlzZU9ial89ZnVuY3Rpb24ocCl7dmFyIG09dm9pZCAwO3RyeXttPXAudGhlbn1jYXRjaChuKXt0aGlzLnJlamVjdF8obik7cmV0dXJufSJmdW5jdGlvbiI9PXR5cGVvZiBtP3RoaXMuc2V0dGxlU2FtZUFzVGhlbmFibGVfKG0scCk6dGhpcy5mdWxmaWxsXyhwKX07ZC5wcm90b3R5cGUucmVqZWN0Xz1mdW5jdGlvbihwKXt0aGlzLnNldHRsZV8oMixwKX07ZC5wcm90b3R5cGUuZnVsZmlsbF89ZnVuY3Rpb24ocCl7dGhpcy5zZXR0bGVfKDEsCnApfTtkLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKHAsbSl7aWYoMCE9dGhpcy5zdGF0ZV8pdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitwKyIsICIrbSsiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1wO3RoaXMucmVzdWx0Xz1tO3RoaXMuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc18oKX07ZC5wcm90b3R5cGUuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc189ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLm9uU2V0dGxlZENhbGxiYWNrc18pe2Zvcih2YXIgcD0wO3A8dGhpcy5vblNldHRsZWRDYWxsYmFja3NfLmxlbmd0aDsrK3ApbC5hc3luY0V4ZWN1dGUodGhpcy5vblNldHRsZWRDYWxsYmFja3NfW3BdKTt0aGlzLm9uU2V0dGxlZENhbGxiYWNrc189bnVsbH19O3ZhciBsPW5ldyBmO2QucHJvdG90eXBlLnNldHRsZVNhbWVBc1Byb21pc2VfPWZ1bmN0aW9uKHApe3ZhciBtPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTsKcC5jYWxsV2hlblNldHRsZWRfKG0ucmVzb2x2ZSxtLnJlamVjdCl9O2QucHJvdG90eXBlLnNldHRsZVNhbWVBc1RoZW5hYmxlXz1mdW5jdGlvbihwLG0pe3ZhciBuPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7cC5jYWxsKG0sbi5yZXNvbHZlLG4ucmVqZWN0KX1jYXRjaChxKXtuLnJlamVjdChxKX19O2QucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKEEseSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIEE/ZnVuY3Rpb24odyl7dHJ5e3EoQSh3KSl9Y2F0Y2goQyl7dShDKX19Onl9dmFyIHEsdSx4PW5ldyBkKGZ1bmN0aW9uKEEseSl7cT1BO3U9eX0pO3RoaXMuY2FsbFdoZW5TZXR0bGVkXyhuKHAscSksbihtLHUpKTtyZXR1cm4geH07ZC5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24ocCl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAscCl9O2QucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7c3dpdGNoKHEuc3RhdGVfKXtjYXNlIDE6cChxLnJlc3VsdF8pOwpicmVhaztjYXNlIDI6bShxLnJlc3VsdF8pO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuZXhwZWN0ZWQgc3RhdGU6ICIrcS5zdGF0ZV8pO319dmFyIHE9dGhpcztudWxsPT10aGlzLm9uU2V0dGxlZENhbGxiYWNrc18/bC5hc3luY0V4ZWN1dGUobik6dGhpcy5vblNldHRsZWRDYWxsYmFja3NfLnB1c2gobil9O2QucmVzb2x2ZT1rO2QucmVqZWN0PWZ1bmN0aW9uKHApe3JldHVybiBuZXcgZChmdW5jdGlvbihtLG4pe24ocCl9KX07ZC5yYWNlPWZ1bmN0aW9uKHApe3JldHVybiBuZXcgZChmdW5jdGlvbihtLG4pe2Zvcih2YXIgcT1sYihwKSx1PXEubmV4dCgpOyF1LmRvbmU7dT1xLm5leHQoKSlrKHUudmFsdWUpLmNhbGxXaGVuU2V0dGxlZF8obSxuKX0pfTtkLmFsbD1mdW5jdGlvbihwKXt2YXIgbT1sYihwKSxuPW0ubmV4dCgpO3JldHVybiBuLmRvbmU/ayhbXSk6bmV3IGQoZnVuY3Rpb24ocSx1KXtmdW5jdGlvbiB4KHcpe3JldHVybiBmdW5jdGlvbihDKXtBW3ddPUM7eS0tOzA9PQp5JiZxKEEpfX12YXIgQT1bXSx5PTA7ZG8gQS5wdXNoKHZvaWQgMCkseSsrLGsobi52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyh4KEEubGVuZ3RoLTEpLHUpLG49bS5uZXh0KCk7d2hpbGUoIW4uZG9uZSl9KX07cmV0dXJuIGR9KTtmdW5jdGlvbiBhYyhiKXtmdW5jdGlvbiBkKGgpe3JldHVybiBiLm5leHQoaCl9ZnVuY3Rpb24gZihoKXtyZXR1cm4gYi50aHJvdyhoKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oaCxrKXtmdW5jdGlvbiB0KGwpe2wuZG9uZT9oKGwudmFsdWUpOlByb21pc2UucmVzb2x2ZShsLnZhbHVlKS50aGVuKGQsZikudGhlbih0LGspfXQoYi5uZXh0KCkpfSl9ZnVuY3Rpb24gaGMoYil7cmV0dXJuIGFjKGIoKSl9OwovLyMgc291cmNlVVJMPWJ1aWxkOi9leHRlcm5hbC9jb21fZ29vZ2xlX2phdmFzY3JpcHRfY2xvc3VyZV9saWJyYXJ5L2Nsb3N1cmUvZ29vZy9kZXBzLmpzCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9hbmFseXRpY3MuaHRtbC5qcwp3aW5kb3cuZ2E9ZnVuY3Rpb24oKXt9OwoKLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLy8KLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLy8gICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgohZnVuY3Rpb24oYSxiKXt2YXIgYz17fSxkPXt9LGU9e30sZj1udWxsOyFmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7aWYoIm51bWJlciI9PXR5cGVvZiBhKXJldHVybiBhO3ZhciBiPXt9O2Zvcih2YXIgYyBpbiBhKWJbY109YVtjXTtyZXR1cm4gYn1mdW5jdGlvbiBkKCl7dGhpcy5fZGVsYXk9MCx0aGlzLl9lbmREZWxheT0wLHRoaXMuX2ZpbGw9Im5vbmUiLHRoaXMuX2l0ZXJhdGlvblN0YXJ0PTAsdGhpcy5faXRlcmF0aW9ucz0xLHRoaXMuX2R1cmF0aW9uPTAsdGhpcy5fcGxheWJhY2tSYXRlPTEsdGhpcy5fZGlyZWN0aW9uPSJub3JtYWwiLHRoaXMuX2Vhc2luZz0ibGluZWFyIix0aGlzLl9lYXNpbmdGdW5jdGlvbj13fWZ1bmN0aW9uIGUoKXtyZXR1cm4gYS5pc0RlcHJlY2F0ZWQoIkludmFsaWQgdGltaW5nIGlucHV0cyIsIjIwMTYtMDMtMDIiLCJUeXBlRXJyb3IgZXhjZXB0aW9ucyB3aWxsIGJlIHRocm93biBpbnN0ZWFkLiIsITApfWZ1bmN0aW9uIGYoYixjLGUpe3ZhciBmPW5ldyBkO3JldHVybiBjJiYoZi5maWxsPSJib3RoIixmLmR1cmF0aW9uPSJhdXRvIiksIm51bWJlciIhPXR5cGVvZiBifHxpc05hTihiKT92b2lkIDAhPT1iJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKCJhdXRvIiE9YltjXSl7aWYoKCJudW1iZXIiPT10eXBlb2YgZltjXXx8ImR1cmF0aW9uIj09YykmJigibnVtYmVyIiE9dHlwZW9mIGJbY118fGlzTmFOKGJbY10pKSlyZXR1cm47aWYoImZpbGwiPT1jJiYtMT09dS5pbmRleE9mKGJbY10pKXJldHVybjtpZigiZGlyZWN0aW9uIj09YyYmLTE9PXYuaW5kZXhPZihiW2NdKSlyZXR1cm47aWYoInBsYXliYWNrUmF0ZSI9PWMmJjEhPT1iW2NdJiZhLmlzRGVwcmVjYXRlZCgiQW5pbWF0aW9uRWZmZWN0VGltaW5nLnBsYXliYWNrUmF0ZSIsIjIwMTQtMTEtMjgiLCJVc2UgQW5pbWF0aW9uLnBsYXliYWNrUmF0ZSBpbnN0ZWFkLiIpKXJldHVybjtmW2NdPWJbY119fSk6Zi5kdXJhdGlvbj1iLGZ9ZnVuY3Rpb24gZyhhKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGEmJihhPWlzTmFOKGEpP3tkdXJhdGlvbjowfTp7ZHVyYXRpb246YX0pLGF9ZnVuY3Rpb24gaChiLGMpe3JldHVybiBiPWEubnVtZXJpY1RpbWluZ1RvT2JqZWN0KGIpLGYoYixjKX1mdW5jdGlvbiBpKGEsYixjLGQpe3JldHVybiAwPmF8fGE+MXx8MD5jfHxjPjE/dzpmdW5jdGlvbihlKXtmdW5jdGlvbiBmKGEsYixjKXtyZXR1cm4gMyphKigxLWMpKigxLWMpKmMrMypiKigxLWMpKmMqYytjKmMqY31pZigwPT1lfHwxPT1lKXJldHVybiBlO2Zvcih2YXIgZz0wLGg9MTs7KXt2YXIgaT0oZytoKS8yLGo9ZihhLGMsaSk7aWYoTWF0aC5hYnMoZS1qKTwxZS00KXJldHVybiBmKGIsZCxpKTtlPmo/Zz1pOmg9aX19fWZ1bmN0aW9uIGooYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7aWYoYz49MSlyZXR1cm4gMTt2YXIgZD0xL2E7cmV0dXJuIGMrPWIqZCxjLWMlZH19ZnVuY3Rpb24gayhhKXtCfHwoQj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSksQi5hbmltYXRpb25UaW1pbmdGdW5jdGlvbj0iIixCLmFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uPWE7dmFyIGI9Qi5hbmltYXRpb25UaW1pbmdGdW5jdGlvbjtpZigiIj09YiYmZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoYSsiIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGZvciBlYXNpbmciKTt2YXIgYz1ELmV4ZWMoYik7aWYoYylyZXR1cm4gaS5hcHBseSh0aGlzLGMuc2xpY2UoMSkubWFwKE51bWJlcikpO3ZhciBkPUUuZXhlYyhiKTtpZihkKXJldHVybiBqKE51bWJlcihkWzFdKSx7c3RhcnQ6eCxtaWRkbGU6eSxlbmQ6en1bZFsyXV0pO3ZhciBmPUFbYl07cmV0dXJuIGY/Zjp3fWZ1bmN0aW9uIGwoYSl7cmV0dXJuIE1hdGguYWJzKG0oYSkvYS5wbGF5YmFja1JhdGUpfWZ1bmN0aW9uIG0oYSl7cmV0dXJuIGEuZHVyYXRpb24qYS5pdGVyYXRpb25zfWZ1bmN0aW9uIG4oYSxiLGMpe3JldHVybiBudWxsPT1iP0Y6YjxjLmRlbGF5P0c6Yj49Yy5kZWxheSthP0g6SX1mdW5jdGlvbiBvKGEsYixjLGQsZSl7c3dpdGNoKGQpe2Nhc2UgRzpyZXR1cm4iYmFja3dhcmRzIj09Ynx8ImJvdGgiPT1iPzA6bnVsbDtjYXNlIEk6cmV0dXJuIGMtZTtjYXNlIEg6cmV0dXJuImZvcndhcmRzIj09Ynx8ImJvdGgiPT1iP2E6bnVsbDtjYXNlIEY6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHAoYSxiLGMsZCl7cmV0dXJuKGQucGxheWJhY2tSYXRlPDA/Yi1hOmIpKmQucGxheWJhY2tSYXRlK2N9ZnVuY3Rpb24gcShhLGIsYyxkLGUpe3JldHVybiBjPT09MS8wfHxjPT09LSgxLzApfHxjLWQ9PWImJmUuaXRlcmF0aW9ucyYmKGUuaXRlcmF0aW9ucytlLml0ZXJhdGlvblN0YXJ0KSUxPT0wP2E6YyVhfWZ1bmN0aW9uIHIoYSxiLGMsZCl7cmV0dXJuIDA9PT1jPzA6Yj09YT9kLml0ZXJhdGlvblN0YXJ0K2QuaXRlcmF0aW9ucy0xOk1hdGguZmxvb3IoYy9hKX1mdW5jdGlvbiBzKGEsYixjLGQpe3ZhciBlPWElMj49MSxmPSJub3JtYWwiPT1kLmRpcmVjdGlvbnx8ZC5kaXJlY3Rpb249PShlPyJhbHRlcm5hdGUtcmV2ZXJzZSI6ImFsdGVybmF0ZSIpLGc9Zj9jOmItYyxoPWcvYjtyZXR1cm4gYipkLl9lYXNpbmdGdW5jdGlvbihoKX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1uKGEsYixjKSxlPW8oYSxjLmZpbGwsYixkLGMuZGVsYXkpO2lmKG51bGw9PT1lKXJldHVybiBudWxsO2lmKDA9PT1hKXJldHVybiBkPT09Rz8wOjE7dmFyIGY9Yy5pdGVyYXRpb25TdGFydCpjLmR1cmF0aW9uLGc9cChhLGUsZixjKSxoPXEoYy5kdXJhdGlvbixtKGMpLGcsZixjKSxpPXIoYy5kdXJhdGlvbixoLGcsYyk7cmV0dXJuIHMoaSxjLmR1cmF0aW9uLGgsYykvYy5kdXJhdGlvbn12YXIgdT0iYmFja3dhcmRzfGZvcndhcmRzfGJvdGh8bm9uZSIuc3BsaXQoInwiKSx2PSJyZXZlcnNlfGFsdGVybmF0ZXxhbHRlcm5hdGUtcmV2ZXJzZSIuc3BsaXQoInwiKSx3PWZ1bmN0aW9uKGEpe3JldHVybiBhfTtkLnByb3RvdHlwZT17X3NldE1lbWJlcjpmdW5jdGlvbihiLGMpe3RoaXNbIl8iK2JdPWMsdGhpcy5fZWZmZWN0JiYodGhpcy5fZWZmZWN0Ll90aW1pbmdJbnB1dFtiXT1jLHRoaXMuX2VmZmVjdC5fdGltaW5nPWEubm9ybWFsaXplVGltaW5nSW5wdXQodGhpcy5fZWZmZWN0Ll90aW1pbmdJbnB1dCksdGhpcy5fZWZmZWN0LmFjdGl2ZUR1cmF0aW9uPWEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24odGhpcy5fZWZmZWN0Ll90aW1pbmcpLHRoaXMuX2VmZmVjdC5fYW5pbWF0aW9uJiZ0aGlzLl9lZmZlY3QuX2FuaW1hdGlvbi5fcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb24oKSl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fcGxheWJhY2tSYXRlfSxzZXQgZGVsYXkoYSl7dGhpcy5fc2V0TWVtYmVyKCJkZWxheSIsYSl9LGdldCBkZWxheSgpe3JldHVybiB0aGlzLl9kZWxheX0sc2V0IGVuZERlbGF5KGEpe3RoaXMuX3NldE1lbWJlcigiZW5kRGVsYXkiLGEpfSxnZXQgZW5kRGVsYXkoKXtyZXR1cm4gdGhpcy5fZW5kRGVsYXl9LHNldCBmaWxsKGEpe3RoaXMuX3NldE1lbWJlcigiZmlsbCIsYSl9LGdldCBmaWxsKCl7cmV0dXJuIHRoaXMuX2ZpbGx9LHNldCBpdGVyYXRpb25TdGFydChhKXtpZigoaXNOYU4oYSl8fDA+YSkmJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRpb25TdGFydCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciwgcmVjZWl2ZWQ6ICIrdGltaW5nLml0ZXJhdGlvblN0YXJ0KTt0aGlzLl9zZXRNZW1iZXIoIml0ZXJhdGlvblN0YXJ0IixhKX0sZ2V0IGl0ZXJhdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuX2l0ZXJhdGlvblN0YXJ0fSxzZXQgZHVyYXRpb24oYSl7aWYoImF1dG8iIT1hJiYoaXNOYU4oYSl8fDA+YSkmJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJkdXJhdGlvbiBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBvciBhdXRvLCByZWNlaXZlZDogIithKTt0aGlzLl9zZXRNZW1iZXIoImR1cmF0aW9uIixhKX0sZ2V0IGR1cmF0aW9uKCl7cmV0dXJuIHRoaXMuX2R1cmF0aW9ufSxzZXQgZGlyZWN0aW9uKGEpe3RoaXMuX3NldE1lbWJlcigiZGlyZWN0aW9uIixhKX0sZ2V0IGRpcmVjdGlvbigpe3JldHVybiB0aGlzLl9kaXJlY3Rpb259LHNldCBlYXNpbmcoYSl7dGhpcy5fZWFzaW5nRnVuY3Rpb249ayhhKSx0aGlzLl9zZXRNZW1iZXIoImVhc2luZyIsYSl9LGdldCBlYXNpbmcoKXtyZXR1cm4gdGhpcy5fZWFzaW5nfSxzZXQgaXRlcmF0aW9ucyhhKXtpZigoaXNOYU4oYSl8fDA+YSkmJmUoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJpdGVyYXRpb25zIG11c3QgYmUgbm9uLW5lZ2F0aXZlLCByZWNlaXZlZDogIithKTt0aGlzLl9zZXRNZW1iZXIoIml0ZXJhdGlvbnMiLGEpfSxnZXQgaXRlcmF0aW9ucygpe3JldHVybiB0aGlzLl9pdGVyYXRpb25zfX07dmFyIHg9MSx5PS41LHo9MCxBPXtlYXNlOmkoLjI1LC4xLC4yNSwxKSwiZWFzZS1pbiI6aSguNDIsMCwxLDEpLCJlYXNlLW91dCI6aSgwLDAsLjU4LDEpLCJlYXNlLWluLW91dCI6aSguNDIsMCwuNTgsMSksInN0ZXAtc3RhcnQiOmooMSx4KSwic3RlcC1taWRkbGUiOmooMSx5KSwic3RlcC1lbmQiOmooMSx6KX0sQj1udWxsLEM9IlxccyooLT9cXGQrXFwuP1xcZCp8LT9cXC5cXGQrKVxccyoiLEQ9bmV3IFJlZ0V4cCgiY3ViaWMtYmV6aWVyXFwoIitDKyIsIitDKyIsIitDKyIsIitDKyJcXCkiKSxFPS9zdGVwc1woXHMqKFxkKylccyosXHMqKHN0YXJ0fG1pZGRsZXxlbmQpXHMqXCkvLEY9MCxHPTEsSD0yLEk9MzthLmNsb25lVGltaW5nSW5wdXQ9YyxhLm1ha2VUaW1pbmc9ZixhLm51bWVyaWNUaW1pbmdUb09iamVjdD1nLGEubm9ybWFsaXplVGltaW5nSW5wdXQ9aCxhLmNhbGN1bGF0ZUFjdGl2ZUR1cmF0aW9uPWwsYS5jYWxjdWxhdGVUaW1lRnJhY3Rpb249dCxhLmNhbGN1bGF0ZVBoYXNlPW4sYS50b1RpbWluZ0Z1bmN0aW9uPWt9KGMsZiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7cmV0dXJuIGEgaW4gaj9qW2FdW2JdfHxiOmJ9ZnVuY3Rpb24gZChhLGIsZCl7dmFyIGU9Z1thXTtpZihlKXtoLnN0eWxlW2FdPWI7Zm9yKHZhciBmIGluIGUpe3ZhciBpPWVbZl0saj1oLnN0eWxlW2ldO2RbaV09YyhpLGopfX1lbHNlIGRbYV09YyhhLGIpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9W107Zm9yKHZhciBjIGluIGEpaWYoIShjIGluWyJlYXNpbmciLCJvZmZzZXQiLCJjb21wb3NpdGUiXSkpe3ZhciBkPWFbY107QXJyYXkuaXNBcnJheShkKXx8KGQ9W2RdKTtmb3IodmFyIGUsZj1kLmxlbmd0aCxnPTA7Zj5nO2crKyllPXt9LCJvZmZzZXQiaW4gYT9lLm9mZnNldD1hLm9mZnNldDoxPT1mP2Uub2Zmc2V0PTE6ZS5vZmZzZXQ9Zy8oZi0xKSwiZWFzaW5nImluIGEmJihlLmVhc2luZz1hLmVhc2luZyksImNvbXBvc2l0ZSJpbiBhJiYoZS5jb21wb3NpdGU9YS5jb21wb3NpdGUpLGVbY109ZFtnXSxiLnB1c2goZSl9cmV0dXJuIGIuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLm9mZnNldC1iLm9mZnNldH0pLGJ9ZnVuY3Rpb24gZihhKXtmdW5jdGlvbiBiKCl7dmFyIGE9Yy5sZW5ndGg7bnVsbD09Y1thLTFdLm9mZnNldCYmKGNbYS0xXS5vZmZzZXQ9MSksYT4xJiZudWxsPT1jWzBdLm9mZnNldCYmKGNbMF0ub2Zmc2V0PTApO2Zvcih2YXIgYj0wLGQ9Y1swXS5vZmZzZXQsZT0xO2E+ZTtlKyspe3ZhciBmPWNbZV0ub2Zmc2V0O2lmKG51bGwhPWYpe2Zvcih2YXIgZz0xO2UtYj5nO2crKyljW2IrZ10ub2Zmc2V0PWQrKGYtZCkqZy8oZS1iKTtiPWUsZD1mfX19aWYobnVsbD09YSlyZXR1cm5bXTt3aW5kb3cuU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJkFycmF5LnByb3RvdHlwZS5mcm9tJiZhW1N5bWJvbC5pdGVyYXRvcl0mJihhPUFycmF5LmZyb20oYSkpLEFycmF5LmlzQXJyYXkoYSl8fChhPWUoYSkpO2Zvcih2YXIgYz1hLm1hcChmdW5jdGlvbihhKXt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSl7dmFyIGU9YVtjXTtpZigib2Zmc2V0Ij09Yyl7aWYobnVsbCE9ZSYmKGU9TnVtYmVyKGUpLCFpc0Zpbml0ZShlKSkpdGhyb3cgbmV3IFR5cGVFcnJvcigia2V5ZnJhbWUgb2Zmc2V0cyBtdXN0IGJlIG51bWJlcnMuIil9ZWxzZXtpZigiY29tcG9zaXRlIj09Yyl0aHJvd3t0eXBlOkRPTUV4Y2VwdGlvbi5OT1RfU1VQUE9SVEVEX0VSUixuYW1lOiJOb3RTdXBwb3J0ZWRFcnJvciIsbWVzc2FnZToiYWRkIGNvbXBvc2l0aW5nIGlzIG5vdCBzdXBwb3J0ZWQifTtlPSIiK2V9ZChjLGUsYil9cmV0dXJuIHZvaWQgMD09Yi5vZmZzZXQmJihiLm9mZnNldD1udWxsKSxifSksZj0hMCxnPS0oMS8wKSxoPTA7aDxjLmxlbmd0aDtoKyspe3ZhciBpPWNbaF0ub2Zmc2V0O2lmKG51bGwhPWkpe2lmKGc+aSl0aHJvd3tjb2RlOkRPTUV4Y2VwdGlvbi5JTlZBTElEX01PRElGSUNBVElPTl9FUlIsbmFtZToiSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yIixtZXNzYWdlOiJLZXlmcmFtZXMgYXJlIG5vdCBsb29zZWx5IHNvcnRlZCBieSBvZmZzZXQuIFNvcnQgb3Igc3BlY2lmeSBvZmZzZXRzLiJ9O2c9aX1lbHNlIGY9ITF9cmV0dXJuIGM9Yy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEub2Zmc2V0Pj0wJiZhLm9mZnNldDw9MX0pLGZ8fGIoKSxjfXZhciBnPXtiYWNrZ3JvdW5kOlsiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCJiYWNrZ3JvdW5kT3JpZ2luIiwiYmFja2dyb3VuZENsaXAiLCJiYWNrZ3JvdW5kQ29sb3IiXSxib3JkZXI6WyJib3JkZXJUb3BDb2xvciIsImJvcmRlclRvcFN0eWxlIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21Db2xvciIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJMZWZ0Q29sb3IiLCJib3JkZXJMZWZ0U3R5bGUiLCJib3JkZXJMZWZ0V2lkdGgiXSxib3JkZXJCb3R0b206WyJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tQ29sb3IiXSxib3JkZXJDb2xvcjpbImJvcmRlclRvcENvbG9yIiwiYm9yZGVyUmlnaHRDb2xvciIsImJvcmRlckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdENvbG9yIl0sYm9yZGVyTGVmdDpbImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRTdHlsZSIsImJvcmRlckxlZnRDb2xvciJdLGJvcmRlclJhZGl1czpbImJvcmRlclRvcExlZnRSYWRpdXMiLCJib3JkZXJUb3BSaWdodFJhZGl1cyIsImJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyJdLGJvcmRlclJpZ2h0OlsiYm9yZGVyUmlnaHRXaWR0aCIsImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIl0sYm9yZGVyVG9wOlsiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIl0sYm9yZGVyV2lkdGg6WyJib3JkZXJUb3BXaWR0aCIsImJvcmRlclJpZ2h0V2lkdGgiLCJib3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckxlZnRXaWR0aCJdLGZsZXg6WyJmbGV4R3JvdyIsImZsZXhTaHJpbmsiLCJmbGV4QmFzaXMiXSxmb250OlsiZm9udEZhbWlseSIsImZvbnRTaXplIiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCJdLG1hcmdpbjpbIm1hcmdpblRvcCIsIm1hcmdpblJpZ2h0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCJdLG91dGxpbmU6WyJvdXRsaW5lQ29sb3IiLCJvdXRsaW5lU3R5bGUiLCJvdXRsaW5lV2lkdGgiXSxwYWRkaW5nOlsicGFkZGluZ1RvcCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdCb3R0b20iLCJwYWRkaW5nTGVmdCJdfSxoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLGk9e3RoaW46IjFweCIsbWVkaXVtOiIzcHgiLHRoaWNrOiI1cHgifSxqPXtib3JkZXJCb3R0b21XaWR0aDppLGJvcmRlckxlZnRXaWR0aDppLGJvcmRlclJpZ2h0V2lkdGg6aSxib3JkZXJUb3BXaWR0aDppLGZvbnRTaXplOnsieHgtc21hbGwiOiI2MCUiLCJ4LXNtYWxsIjoiNzUlIixzbWFsbDoiODklIixtZWRpdW06IjEwMCUiLGxhcmdlOiIxMjAlIiwieC1sYXJnZSI6IjE1MCUiLCJ4eC1sYXJnZSI6IjIwMCUifSxmb250V2VpZ2h0Ontub3JtYWw6IjQwMCIsYm9sZDoiNzAwIn0sb3V0bGluZVdpZHRoOmksdGV4dFNoYWRvdzp7bm9uZToiMHB4IDBweCAwcHggdHJhbnNwYXJlbnQifSxib3hTaGFkb3c6e25vbmU6IjBweCAwcHggMHB4IDBweCB0cmFuc3BhcmVudCJ9fTthLmNvbnZlcnRUb0FycmF5Rm9ybT1lLGEubm9ybWFsaXplS2V5ZnJhbWVzPWZ9KGMsZiksZnVuY3Rpb24oYSl7dmFyIGI9e307YS5pc0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiLGc9bmV3IERhdGUsaD1uZXcgRGF0ZShjKTtyZXR1cm4gaC5zZXRNb250aChoLmdldE1vbnRoKCkrMyksaD5nPyhhIGluIGJ8fGNvbnNvbGUud2FybigiV2ViIEFuaW1hdGlvbnM6ICIrYSsiICIrZisiIGRlcHJlY2F0ZWQgYW5kIHdpbGwgc3RvcCB3b3JraW5nIG9uICIraC50b0RhdGVTdHJpbmcoKSsiLiAiK2QpLGJbYV09ITAsITEpOiEwfSxhLmRlcHJlY2F0ZWQ9ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGY9ZT8iYXJlIjoiaXMiO2lmKGEuaXNEZXByZWNhdGVkKGIsYyxkLGUpKXRocm93IG5ldyBFcnJvcihiKyIgIitmKyIgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIitkKX19KGMpLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFuaW1hdGUpe3ZhciBhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hbmltYXRlKFtdLDApLGI9ITA7aWYoYSYmKGI9ITEsInBsYXl8Y3VycmVudFRpbWV8cGF1c2V8cmV2ZXJzZXxwbGF5YmFja1JhdGV8Y2FuY2VsfGZpbmlzaHxzdGFydFRpbWV8cGxheVN0YXRlIi5zcGxpdCgifCIpLmZvckVhY2goZnVuY3Rpb24oYyl7dm9pZCAwPT09YVtjXSYmKGI9ITApfSkpLCFiKXJldHVybn0hZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKylmb3IodmFyIGQgaW4gYVtjXSlpZigib2Zmc2V0IiE9ZCYmImVhc2luZyIhPWQmJiJjb21wb3NpdGUiIT1kKXt2YXIgZT17b2Zmc2V0OmFbY10ub2Zmc2V0LGVhc2luZzphW2NdLmVhc2luZyx2YWx1ZTphW2NdW2RdfTtiW2RdPWJbZF18fFtdLGJbZF0ucHVzaChlKX1mb3IodmFyIGYgaW4gYil7dmFyIGc9YltmXTtpZigwIT1nWzBdLm9mZnNldHx8MSE9Z1tnLmxlbmd0aC0xXS5vZmZzZXQpdGhyb3d7dHlwZTpET01FeGNlcHRpb24uTk9UX1NVUFBPUlRFRF9FUlIsbmFtZToiTm90U3VwcG9ydGVkRXJyb3IiLG1lc3NhZ2U6IlBhcnRpYWwga2V5ZnJhbWVzIGFyZSBub3Qgc3VwcG9ydGVkIn19cmV0dXJuIGJ9ZnVuY3Rpb24gZShjKXt2YXIgZD1bXTtmb3IodmFyIGUgaW4gYylmb3IodmFyIGY9Y1tlXSxnPTA7ZzxmLmxlbmd0aC0xO2crKyl7dmFyIGg9ZltnXS5vZmZzZXQsaT1mW2crMV0ub2Zmc2V0LGo9ZltnXS52YWx1ZSxrPWZbZysxXS52YWx1ZSxsPWZbZ10uZWFzaW5nO2g9PWkmJigxPT1pP2o9azprPWopLGQucHVzaCh7c3RhcnRUaW1lOmgsZW5kVGltZTppLGVhc2luZzphLnRvVGltaW5nRnVuY3Rpb24obD9sOiJsaW5lYXIiKSxwcm9wZXJ0eTplLGludGVycG9sYXRpb246Yi5wcm9wZXJ0eUludGVycG9sYXRpb24oZSxqLGspfSl9cmV0dXJuIGQuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0YXJ0VGltZS1iLnN0YXJ0VGltZX0pLGR9Yi5jb252ZXJ0RWZmZWN0SW5wdXQ9ZnVuY3Rpb24oYyl7dmFyIGY9YS5ub3JtYWxpemVLZXlmcmFtZXMoYyksZz1kKGYpLGg9ZShnKTtyZXR1cm4gZnVuY3Rpb24oYSxjKXtpZihudWxsIT1jKWguZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiAwPj1jJiYwPT1hLnN0YXJ0VGltZXx8Yz49MSYmMT09YS5lbmRUaW1lfHxjPj1hLnN0YXJ0VGltZSYmYzw9YS5lbmRUaW1lfSkuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZT1jLWQuc3RhcnRUaW1lLGY9ZC5lbmRUaW1lLWQuc3RhcnRUaW1lLGc9MD09Zj8wOmQuZWFzaW5nKGUvZik7Yi5hcHBseShhLGQucHJvcGVydHksZC5pbnRlcnBvbGF0aW9uKGcpKX0pO2Vsc2UgZm9yKHZhciBkIGluIGcpIm9mZnNldCIhPWQmJiJlYXNpbmciIT1kJiYiY29tcG9zaXRlIiE9ZCYmYi5jbGVhcihhLGQpfX19KGMsZCxmKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYS5yZXBsYWNlKC8tKC4pL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gZShhLGIsYyl7aFtjXT1oW2NdfHxbXSxoW2NdLnB1c2goW2EsYl0pfWZ1bmN0aW9uIGYoYSxiLGMpe2Zvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKXt2YXIgZz1jW2ZdO2UoYSxiLGQoZykpfX1mdW5jdGlvbiBnKGMsZSxmKXt2YXIgZz1jOy8tLy50ZXN0KGMpJiYhYS5pc0RlcHJlY2F0ZWQoIkh5cGhlbmF0ZWQgcHJvcGVydHkgbmFtZXMiLCIyMDE2LTAzLTIyIiwiVXNlIGNhbWVsQ2FzZSBpbnN0ZWFkLiIsITApJiYoZz1kKGMpKSwiaW5pdGlhbCIhPWUmJiJpbml0aWFsIiE9Znx8KCJpbml0aWFsIj09ZSYmKGU9aVtnXSksImluaXRpYWwiPT1mJiYoZj1pW2ddKSk7Zm9yKHZhciBqPWU9PWY/W106aFtnXSxrPTA7aiYmazxqLmxlbmd0aDtrKyspe3ZhciBsPWpba11bMF0oZSksbT1qW2tdWzBdKGYpO2lmKHZvaWQgMCE9PWwmJnZvaWQgMCE9PW0pe3ZhciBuPWpba11bMV0obCxtKTtpZihuKXt2YXIgbz1iLkludGVycG9sYXRpb24uYXBwbHkobnVsbCxuKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDA9PWE/ZToxPT1hP2Y6byhhKX19fX1yZXR1cm4gYi5JbnRlcnBvbGF0aW9uKCExLCEwLGZ1bmN0aW9uKGEpe3JldHVybiBhP2Y6ZX0pfXZhciBoPXt9O2IuYWRkUHJvcGVydGllc0hhbmRsZXI9Zjt2YXIgaT17YmFja2dyb3VuZENvbG9yOiJ0cmFuc3BhcmVudCIsYmFja2dyb3VuZFBvc2l0aW9uOiIwJSAwJSIsYm9yZGVyQm90dG9tQ29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyQm90dG9tTGVmdFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21SaWdodFJhZGl1czoiMHB4Iixib3JkZXJCb3R0b21XaWR0aDoiM3B4Iixib3JkZXJMZWZ0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyTGVmdFdpZHRoOiIzcHgiLGJvcmRlclJpZ2h0Q29sb3I6ImN1cnJlbnRDb2xvciIsYm9yZGVyUmlnaHRXaWR0aDoiM3B4Iixib3JkZXJTcGFjaW5nOiIycHgiLGJvcmRlclRvcENvbG9yOiJjdXJyZW50Q29sb3IiLGJvcmRlclRvcExlZnRSYWRpdXM6IjBweCIsYm9yZGVyVG9wUmlnaHRSYWRpdXM6IjBweCIsYm9yZGVyVG9wV2lkdGg6IjNweCIsYm90dG9tOiJhdXRvIixjbGlwOiJyZWN0KDBweCwgMHB4LCAwcHgsIDBweCkiLGNvbG9yOiJibGFjayIsZm9udFNpemU6IjEwMCUiLGZvbnRXZWlnaHQ6IjQwMCIsaGVpZ2h0OiJhdXRvIixsZWZ0OiJhdXRvIixsZXR0ZXJTcGFjaW5nOiJub3JtYWwiLGxpbmVIZWlnaHQ6IjEyMCUiLG1hcmdpbkJvdHRvbToiMHB4IixtYXJnaW5MZWZ0OiIwcHgiLG1hcmdpblJpZ2h0OiIwcHgiLG1hcmdpblRvcDoiMHB4IixtYXhIZWlnaHQ6Im5vbmUiLG1heFdpZHRoOiJub25lIixtaW5IZWlnaHQ6IjBweCIsbWluV2lkdGg6IjBweCIsb3BhY2l0eToiMS4wIixvdXRsaW5lQ29sb3I6ImludmVydCIsb3V0bGluZU9mZnNldDoiMHB4IixvdXRsaW5lV2lkdGg6IjNweCIscGFkZGluZ0JvdHRvbToiMHB4IixwYWRkaW5nTGVmdDoiMHB4IixwYWRkaW5nUmlnaHQ6IjBweCIscGFkZGluZ1RvcDoiMHB4IixyaWdodDoiYXV0byIsdGV4dEluZGVudDoiMHB4Iix0ZXh0U2hhZG93OiIwcHggMHB4IDBweCB0cmFuc3BhcmVudCIsdG9wOiJhdXRvIix0cmFuc2Zvcm06IiIsdmVydGljYWxBbGlnbjoiMHB4Iix2aXNpYmlsaXR5OiJ2aXNpYmxlIix3aWR0aDoiYXV0byIsd29yZFNwYWNpbmc6Im5vcm1hbCIsekluZGV4OiJhdXRvIn07Yi5wcm9wZXJ0eUludGVycG9sYXRpb249Z30oYyxkLGYpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGIpe3ZhciBjPWEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oYiksZD1mdW5jdGlvbihkKXtyZXR1cm4gYS5jYWxjdWxhdGVUaW1lRnJhY3Rpb24oYyxkLGIpfTtyZXR1cm4gZC5fdG90YWxEdXJhdGlvbj1iLmRlbGF5K2MrYi5lbmREZWxheSxkLl9pc0N1cnJlbnQ9ZnVuY3Rpb24oZCl7dmFyIGU9YS5jYWxjdWxhdGVQaGFzZShjLGQsYik7cmV0dXJuIGU9PT1QaGFzZUFjdGl2ZXx8ZT09PVBoYXNlQmVmb3JlfSxkfWIuS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYyxlLGYsZyl7dmFyIGgsaT1kKGEubm9ybWFsaXplVGltaW5nSW5wdXQoZikpLGo9Yi5jb252ZXJ0RWZmZWN0SW5wdXQoZSksaz1mdW5jdGlvbigpe2ooYyxoKX07cmV0dXJuIGsuX3VwZGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gaD1pKGEpLG51bGwhPT1ofSxrLl9jbGVhcj1mdW5jdGlvbigpe2ooYyxudWxsKX0say5faGFzU2FtZVRhcmdldD1mdW5jdGlvbihhKXtyZXR1cm4gYz09PWF9LGsuX2lzQ3VycmVudD1pLl9pc0N1cnJlbnQsay5fdG90YWxEdXJhdGlvbj1pLl90b3RhbER1cmF0aW9uLGsuX2lkPWcsa30sYi5OdWxsRWZmZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKCl7YSYmKGEoKSxhPW51bGwpfTtyZXR1cm4gYi5fdXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGIuX3RvdGFsRHVyYXRpb249MCxiLl9pc0N1cnJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sYi5faGFzU2FtZVRhcmdldD1mdW5jdGlvbigpe3JldHVybiExfSxifX0oYyxkLGYpLGZ1bmN0aW9uKGEsYil7YS5hcHBseT1mdW5jdGlvbihiLGMsZCl7Yi5zdHlsZVthLnByb3BlcnR5TmFtZShjKV09ZH0sYS5jbGVhcj1mdW5jdGlvbihiLGMpe2Iuc3R5bGVbYS5wcm9wZXJ0eU5hbWUoYyldPSIifX0oZCxmKSxmdW5jdGlvbihhKXt3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihiLGMpe3ZhciBkPSIiO3JldHVybiBjJiZjLmlkJiYoZD1jLmlkKSxhLnRpbWVsaW5lLl9wbGF5KGEuS2V5ZnJhbWVFZmZlY3QodGhpcyxiLGMsZCkpfX0oZCksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYixkKXtpZigibnVtYmVyIj09dHlwZW9mIGEmJiJudW1iZXIiPT10eXBlb2YgYilyZXR1cm4gYSooMS1kKStiKmQ7aWYoImJvb2xlYW4iPT10eXBlb2YgYSYmImJvb2xlYW4iPT10eXBlb2YgYilyZXR1cm4uNT5kP2E6YjtpZihhLmxlbmd0aD09Yi5sZW5ndGgpe2Zvcih2YXIgZT1bXSxmPTA7ZjxhLmxlbmd0aDtmKyspZS5wdXNoKGMoYVtmXSxiW2ZdLGQpKTtyZXR1cm4gZX10aHJvdyJNaXNtYXRjaGVkIGludGVycG9sYXRpb24gYXJndW1lbnRzICIrYSsiOiIrYn1hLkludGVycG9sYXRpb249ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZChjKGEsYixlKSl9fX0oZCxmKSxmdW5jdGlvbihhLGIsYyl7YS5zZXF1ZW5jZU51bWJlcj0wO3ZhciBkPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnRhcmdldD1hLHRoaXMuY3VycmVudFRpbWU9Yix0aGlzLnRpbWVsaW5lVGltZT1jLHRoaXMudHlwZT0iZmluaXNoIix0aGlzLmJ1YmJsZXM9ITEsdGhpcy5jYW5jZWxhYmxlPSExLHRoaXMuY3VycmVudFRhcmdldD1hLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMSx0aGlzLmV2ZW50UGhhc2U9RXZlbnQuQVRfVEFSR0VULHRoaXMudGltZVN0YW1wPURhdGUubm93KCl9O2IuQW5pbWF0aW9uPWZ1bmN0aW9uKGIpe3RoaXMuaWQ9IiIsYiYmYi5faWQmJih0aGlzLmlkPWIuX2lkKSx0aGlzLl9zZXF1ZW5jZU51bWJlcj1hLnNlcXVlbmNlTnVtYmVyKyssdGhpcy5fY3VycmVudFRpbWU9MCx0aGlzLl9zdGFydFRpbWU9bnVsbCx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fcGxheWJhY2tSYXRlPTEsdGhpcy5faW5UaW1lbGluZT0hMCx0aGlzLl9maW5pc2hlZEZsYWc9ITAsdGhpcy5vbmZpbmlzaD1udWxsLHRoaXMuX2ZpbmlzaEhhbmRsZXJzPVtdLHRoaXMuX2VmZmVjdD1iLHRoaXMuX2luRWZmZWN0PXRoaXMuX2VmZmVjdC5fdXBkYXRlKDApLHRoaXMuX2lkbGU9ITAsdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExfSxiLkFuaW1hdGlvbi5wcm90b3R5cGU9e19lbnN1cmVBbGl2ZTpmdW5jdGlvbigpe3RoaXMucGxheWJhY2tSYXRlPDAmJjA9PT10aGlzLmN1cnJlbnRUaW1lP3RoaXMuX2luRWZmZWN0PXRoaXMuX2VmZmVjdC5fdXBkYXRlKC0xKTp0aGlzLl9pbkVmZmVjdD10aGlzLl9lZmZlY3QuX3VwZGF0ZSh0aGlzLmN1cnJlbnRUaW1lKSx0aGlzLl9pblRpbWVsaW5lfHwhdGhpcy5faW5FZmZlY3QmJnRoaXMuX2ZpbmlzaGVkRmxhZ3x8KHRoaXMuX2luVGltZWxpbmU9ITAsYi50aW1lbGluZS5fYW5pbWF0aW9ucy5wdXNoKHRoaXMpKX0sX3RpY2tDdXJyZW50VGltZTpmdW5jdGlvbihhLGIpe2EhPXRoaXMuX2N1cnJlbnRUaW1lJiYodGhpcy5fY3VycmVudFRpbWU9YSx0aGlzLl9pc0ZpbmlzaGVkJiYhYiYmKHRoaXMuX2N1cnJlbnRUaW1lPXRoaXMuX3BsYXliYWNrUmF0ZT4wP3RoaXMuX3RvdGFsRHVyYXRpb246MCksdGhpcy5fZW5zdXJlQWxpdmUoKSl9LGdldCBjdXJyZW50VGltZSgpe3JldHVybiB0aGlzLl9pZGxlfHx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc/bnVsbDp0aGlzLl9jdXJyZW50VGltZX0sc2V0IGN1cnJlbnRUaW1lKGEpe2E9K2EsaXNOYU4oYSl8fChiLnJlc3RhcnQoKSx0aGlzLl9wYXVzZWR8fG51bGw9PXRoaXMuX3N0YXJ0VGltZXx8KHRoaXMuX3N0YXJ0VGltZT10aGlzLl90aW1lbGluZS5jdXJyZW50VGltZS1hL3RoaXMuX3BsYXliYWNrUmF0ZSksdGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPSExLHRoaXMuX2N1cnJlbnRUaW1lIT1hJiYodGhpcy5fdGlja0N1cnJlbnRUaW1lKGEsITApLGIuaW52YWxpZGF0ZUVmZmVjdHMoKSkpfSxnZXQgc3RhcnRUaW1lKCl7cmV0dXJuIHRoaXMuX3N0YXJ0VGltZX0sc2V0IHN0YXJ0VGltZShhKXthPSthLGlzTmFOKGEpfHx0aGlzLl9wYXVzZWR8fHRoaXMuX2lkbGV8fCh0aGlzLl9zdGFydFRpbWU9YSx0aGlzLl90aWNrQ3VycmVudFRpbWUoKHRoaXMuX3RpbWVsaW5lLmN1cnJlbnRUaW1lLXRoaXMuX3N0YXJ0VGltZSkqdGhpcy5wbGF5YmFja1JhdGUpLGIuaW52YWxpZGF0ZUVmZmVjdHMoKSl9LGdldCBwbGF5YmFja1JhdGUoKXtyZXR1cm4gdGhpcy5fcGxheWJhY2tSYXRlfSxzZXQgcGxheWJhY2tSYXRlKGEpe2lmKGEhPXRoaXMuX3BsYXliYWNrUmF0ZSl7dmFyIGI9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9wbGF5YmFja1JhdGU9YSx0aGlzLl9zdGFydFRpbWU9bnVsbCwicGF1c2VkIiE9dGhpcy5wbGF5U3RhdGUmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUmJnRoaXMucGxheSgpLG51bGwhPWImJih0aGlzLmN1cnJlbnRUaW1lPWIpfX0sZ2V0IF9pc0ZpbmlzaGVkKCl7cmV0dXJuIXRoaXMuX2lkbGUmJih0aGlzLl9wbGF5YmFja1JhdGU+MCYmdGhpcy5fY3VycmVudFRpbWU+PXRoaXMuX3RvdGFsRHVyYXRpb258fHRoaXMuX3BsYXliYWNrUmF0ZTwwJiZ0aGlzLl9jdXJyZW50VGltZTw9MCl9LGdldCBfdG90YWxEdXJhdGlvbigpe3JldHVybiB0aGlzLl9lZmZlY3QuX3RvdGFsRHVyYXRpb259LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5faWRsZT8iaWRsZSI6bnVsbD09dGhpcy5fc3RhcnRUaW1lJiYhdGhpcy5fcGF1c2VkJiYwIT10aGlzLnBsYXliYWNrUmF0ZXx8dGhpcy5fY3VycmVudFRpbWVQZW5kaW5nPyJwZW5kaW5nIjp0aGlzLl9wYXVzZWQ/InBhdXNlZCI6dGhpcy5faXNGaW5pc2hlZD8iZmluaXNoZWQiOiJydW5uaW5nIn0scGxheTpmdW5jdGlvbigpe3RoaXMuX3BhdXNlZD0hMSwodGhpcy5faXNGaW5pc2hlZHx8dGhpcy5faWRsZSkmJih0aGlzLl9jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD8wOnRoaXMuX3RvdGFsRHVyYXRpb24sdGhpcy5fc3RhcnRUaW1lPW51bGwpLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMSx0aGlzLl9pZGxlPSExLHRoaXMuX2Vuc3VyZUFsaXZlKCksYi5pbnZhbGlkYXRlRWZmZWN0cygpfSxwYXVzZTpmdW5jdGlvbigpe3RoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3BhdXNlZHx8dGhpcy5faWRsZXx8KHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMCksdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fcGF1c2VkPSEwfSxmaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9pZGxlfHwodGhpcy5jdXJyZW50VGltZT10aGlzLl9wbGF5YmFja1JhdGU+MD90aGlzLl90b3RhbER1cmF0aW9uOjAsdGhpcy5fc3RhcnRUaW1lPXRoaXMuX3RvdGFsRHVyYXRpb24tdGhpcy5jdXJyZW50VGltZSx0aGlzLl9jdXJyZW50VGltZVBlbmRpbmc9ITEsYi5pbnZhbGlkYXRlRWZmZWN0cygpKX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5faW5FZmZlY3QmJih0aGlzLl9pbkVmZmVjdD0hMSx0aGlzLl9pZGxlPSEwLHRoaXMuX2ZpbmlzaGVkRmxhZz0hMCx0aGlzLmN1cnJlbnRUaW1lPTAsdGhpcy5fc3RhcnRUaW1lPW51bGwsdGhpcy5fZWZmZWN0Ll91cGRhdGUobnVsbCksYi5pbnZhbGlkYXRlRWZmZWN0cygpKX0scmV2ZXJzZTpmdW5jdGlvbigpe3RoaXMucGxheWJhY2tSYXRlKj0tMSx0aGlzLnBsYXkoKX0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGIpeyJmdW5jdGlvbiI9PXR5cGVvZiBiJiYiZmluaXNoIj09YSYmdGhpcy5fZmluaXNoSGFuZGxlcnMucHVzaChiKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe2lmKCJmaW5pc2giPT1hKXt2YXIgYz10aGlzLl9maW5pc2hIYW5kbGVycy5pbmRleE9mKGIpO2M+PTAmJnRoaXMuX2ZpbmlzaEhhbmRsZXJzLnNwbGljZShjLDEpfX0sX2ZpcmVFdmVudHM6ZnVuY3Rpb24oYSl7aWYodGhpcy5faXNGaW5pc2hlZCl7aWYoIXRoaXMuX2ZpbmlzaGVkRmxhZyl7dmFyIGI9bmV3IGQodGhpcyx0aGlzLl9jdXJyZW50VGltZSxhKSxjPXRoaXMuX2ZpbmlzaEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uZmluaXNoP1t0aGlzLm9uZmluaXNoXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2MuZm9yRWFjaChmdW5jdGlvbihhKXthLmNhbGwoYi50YXJnZXQsYil9KX0sMCksdGhpcy5fZmluaXNoZWRGbGFnPSEwfX1lbHNlIHRoaXMuX2ZpbmlzaGVkRmxhZz0hMX0sX3RpY2s6ZnVuY3Rpb24oYSxiKXt0aGlzLl9pZGxlfHx0aGlzLl9wYXVzZWR8fChudWxsPT10aGlzLl9zdGFydFRpbWU/YiYmKHRoaXMuc3RhcnRUaW1lPWEtdGhpcy5fY3VycmVudFRpbWUvdGhpcy5wbGF5YmFja1JhdGUpOnRoaXMuX2lzRmluaXNoZWR8fHRoaXMuX3RpY2tDdXJyZW50VGltZSgoYS10aGlzLl9zdGFydFRpbWUpKnRoaXMucGxheWJhY2tSYXRlKSksYiYmKHRoaXMuX2N1cnJlbnRUaW1lUGVuZGluZz0hMSx0aGlzLl9maXJlRXZlbnRzKGEpKX0sZ2V0IF9uZWVkc1RpY2soKXtyZXR1cm4gdGhpcy5wbGF5U3RhdGUgaW57cGVuZGluZzoxLHJ1bm5pbmc6MX18fCF0aGlzLl9maW5pc2hlZEZsYWd9fX0oYyxkLGYpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBiPWo7aj1bXSxhPHAuY3VycmVudFRpbWUmJihhPXAuY3VycmVudFRpbWUpLGgoYSwhMCksYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMV0oYSl9KSxnKCksbD12b2lkIDB9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBhLl9zZXF1ZW5jZU51bWJlci1iLl9zZXF1ZW5jZU51bWJlcn1mdW5jdGlvbiBmKCl7dGhpcy5fYW5pbWF0aW9ucz1bXSx0aGlzLmN1cnJlbnRUaW1lPXdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlLm5vdygpOjB9ZnVuY3Rpb24gZygpe28uZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSxvLmxlbmd0aD0wfWZ1bmN0aW9uIGgoYSxjKXtuPSExO3ZhciBkPWIudGltZWxpbmU7ZC5jdXJyZW50VGltZT1hLGQuX2FuaW1hdGlvbnMuc29ydChlKSxtPSExO3ZhciBmPWQuX2FuaW1hdGlvbnM7ZC5fYW5pbWF0aW9ucz1bXTt2YXIgZz1bXSxoPVtdO2Y9Zi5maWx0ZXIoZnVuY3Rpb24oYil7Yi5fdGljayhhLGMpLGIuX2luRWZmZWN0P2gucHVzaChiLl9lZmZlY3QpOmcucHVzaChiLl9lZmZlY3QpLGIuX25lZWRzVGljayYmKG09ITApO3ZhciBkPWIuX2luRWZmZWN0fHxiLl9uZWVkc1RpY2s7cmV0dXJuIGIuX2luVGltZWxpbmU9ZCxkfSksby5wdXNoLmFwcGx5KG8sZyksby5wdXNoLmFwcGx5KG8saCksZC5fYW5pbWF0aW9ucy5wdXNoLmFwcGx5KGQuX2FuaW1hdGlvbnMsZiksbSYmcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7fSl9dmFyIGk9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSxqPVtdLGs9MDt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3ZhciBiPWsrKztyZXR1cm4gMD09ai5sZW5ndGgmJmkoZCksai5wdXNoKFtiLGFdKSxifSx3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWU9ZnVuY3Rpb24oYSl7ai5mb3JFYWNoKGZ1bmN0aW9uKGIpe2JbMF09PWEmJihiWzFdPWZ1bmN0aW9uKCl7fSl9KX0sZi5wcm90b3R5cGU9e19wbGF5OmZ1bmN0aW9uKGMpe2MuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMudGltaW5nKTt2YXIgZD1uZXcgYi5BbmltYXRpb24oYyk7cmV0dXJuIGQuX2lkbGU9ITEsZC5fdGltZWxpbmU9dGhpcyx0aGlzLl9hbmltYXRpb25zLnB1c2goZCksYi5yZXN0YXJ0KCksYi5pbnZhbGlkYXRlRWZmZWN0cygpLGR9fTt2YXIgbD12b2lkIDAsbT0hMSxuPSExO2IucmVzdGFydD1mdW5jdGlvbigpe3JldHVybiBtfHwobT0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt9KSxuPSEwKSxufSxiLmludmFsaWRhdGVFZmZlY3RzPWZ1bmN0aW9uKCl7aChiLnRpbWVsaW5lLmN1cnJlbnRUaW1lLCExKSxnKCl9O3ZhciBvPVtdLHA9bmV3IGY7Yi50aW1lbGluZT1wfShjLGQsZiksZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe3ZhciBjPWEuZXhlYyhiKTtyZXR1cm4gYz8oYz1hLmlnbm9yZUNhc2U/Y1swXS50b0xvd2VyQ2FzZSgpOmNbMF0sW2MsYi5zdWJzdHIoYy5sZW5ndGgpXSk6dm9pZCAwfWZ1bmN0aW9uIGMoYSxiKXtiPWIucmVwbGFjZSgvXlxzKi8sIiIpO3ZhciBjPWEoYik7cmV0dXJuIGM/W2NbMF0sY1sxXS5yZXBsYWNlKC9eXHMqLywiIildOnZvaWQgMH1mdW5jdGlvbiBkKGEsZCxlKXthPWMuYmluZChudWxsLGEpO2Zvcih2YXIgZj1bXTs7KXt2YXIgZz1hKGUpO2lmKCFnKXJldHVybltmLGVdO2lmKGYucHVzaChnWzBdKSxlPWdbMV0sZz1iKGQsZSksIWd8fCIiPT1nWzFdKXJldHVybltmLGVdO2U9Z1sxXX19ZnVuY3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wLGQ9MDtkPGIubGVuZ3RoJiYoIS9cc3wsLy50ZXN0KGJbZF0pfHwwIT1jKTtkKyspaWYoIigiPT1iW2RdKWMrKztlbHNlIGlmKCIpIj09YltkXSYmKGMtLSwwPT1jJiZkKyssMD49YykpYnJlYWs7dmFyIGU9YShiLnN1YnN0cigwLGQpKTtyZXR1cm4gdm9pZCAwPT1lP3ZvaWQgMDpbZSxiLnN1YnN0cihkKV19ZnVuY3Rpb24gZihhLGIpe2Zvcih2YXIgYz1hLGQ9YjtjJiZkOyljPmQ/YyU9ZDpkJT1jO3JldHVybiBjPWEqYi8oYytkKX1mdW5jdGlvbiBnKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1hKGIpO3JldHVybiBjJiYoY1swXT12b2lkIDApLGN9fWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7dmFyIGQ9YShjKTtyZXR1cm4gZD9kOltiLGNdfX1mdW5jdGlvbiBpKGIsYyl7Zm9yKHZhciBkPVtdLGU9MDtlPGIubGVuZ3RoO2UrKyl7dmFyIGY9YS5jb25zdW1lVHJpbW1lZChiW2VdLGMpO2lmKCFmfHwiIj09ZlswXSlyZXR1cm47dm9pZCAwIT09ZlswXSYmZC5wdXNoKGZbMF0pLGM9ZlsxXX1yZXR1cm4iIj09Yz9kOnZvaWQgMH1mdW5jdGlvbiBqKGEsYixjLGQsZSl7Zm9yKHZhciBnPVtdLGg9W10saT1bXSxqPWYoZC5sZW5ndGgsZS5sZW5ndGgpLGs9MDtqPms7aysrKXt2YXIgbD1iKGRbayVkLmxlbmd0aF0sZVtrJWUubGVuZ3RoXSk7aWYoIWwpcmV0dXJuO2cucHVzaChsWzBdKSxoLnB1c2gobFsxXSksaS5wdXNoKGxbMl0pfXJldHVybltnLGgsZnVuY3Rpb24oYil7dmFyIGQ9Yi5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm4gaVtiXShhKX0pLmpvaW4oYyk7cmV0dXJuIGE/YShkKTpkfV19ZnVuY3Rpb24gayhhLGIsYyl7Zm9yKHZhciBkPVtdLGU9W10sZj1bXSxnPTAsaD0wO2g8Yy5sZW5ndGg7aCsrKWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBjW2hdKXt2YXIgaT1jW2hdKGFbZ10sYltnKytdKTtkLnB1c2goaVswXSksZS5wdXNoKGlbMV0pLGYucHVzaChpWzJdKX1lbHNlIWZ1bmN0aW9uKGEpe2QucHVzaCghMSksZS5wdXNoKCExKSxmLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gY1thXX0pfShoKTtyZXR1cm5bZCxlLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iIixjPTA7YzxhLmxlbmd0aDtjKyspYis9ZltjXShhW2NdKTtyZXR1cm4gYn1dfWEuY29uc3VtZVRva2VuPWIsYS5jb25zdW1lVHJpbW1lZD1jLGEuY29uc3VtZVJlcGVhdGVkPWQsYS5jb25zdW1lUGFyZW50aGVzaXNlZD1lLGEuaWdub3JlPWcsYS5vcHRpb25hbD1oLGEuY29uc3VtZUxpc3Q9aSxhLm1lcmdlTmVzdGVkUmVwZWF0ZWQ9ai5iaW5kKG51bGwsbnVsbCksYS5tZXJnZVdyYXBwZWROZXN0ZWRSZXBlYXRlZD1qLGEubWVyZ2VMaXN0PWt9KGQpLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYil7ZnVuY3Rpb24gYyhiKXt2YXIgYz1hLmNvbnN1bWVUb2tlbigvXmluc2V0L2ksYik7aWYoYylyZXR1cm4gZC5pbnNldD0hMCxjO3ZhciBjPWEuY29uc3VtZUxlbmd0aE9yUGVyY2VudChiKTtpZihjKXJldHVybiBkLmxlbmd0aHMucHVzaChjWzBdKSxjO3ZhciBjPWEuY29uc3VtZUNvbG9yKGIpO3JldHVybiBjPyhkLmNvbG9yPWNbMF0sYyk6dm9pZCAwfXZhciBkPXtpbnNldDohMSxsZW5ndGhzOltdLGNvbG9yOm51bGx9LGU9YS5jb25zdW1lUmVwZWF0ZWQoYywvXi8sYik7cmV0dXJuIGUmJmVbMF0ubGVuZ3RoP1tkLGVbMV1dOnZvaWQgMH1mdW5jdGlvbiBjKGMpe3ZhciBkPWEuY29uc3VtZVJlcGVhdGVkKGIsL14sLyxjKTtyZXR1cm4gZCYmIiI9PWRbMV0/ZFswXTp2b2lkIDB9ZnVuY3Rpb24gZChiLGMpe2Zvcig7Yi5sZW5ndGhzLmxlbmd0aDxNYXRoLm1heChiLmxlbmd0aHMubGVuZ3RoLGMubGVuZ3Rocy5sZW5ndGgpOyliLmxlbmd0aHMucHVzaCh7cHg6MH0pO2Zvcig7Yy5sZW5ndGhzLmxlbmd0aDxNYXRoLm1heChiLmxlbmd0aHMubGVuZ3RoLGMubGVuZ3Rocy5sZW5ndGgpOyljLmxlbmd0aHMucHVzaCh7cHg6MH0pO2lmKGIuaW5zZXQ9PWMuaW5zZXQmJiEhYi5jb2xvcj09ISFjLmNvbG9yKXtmb3IodmFyIGQsZT1bXSxmPVtbXSwwXSxnPVtbXSwwXSxoPTA7aDxiLmxlbmd0aHMubGVuZ3RoO2grKyl7dmFyIGk9YS5tZXJnZURpbWVuc2lvbnMoYi5sZW5ndGhzW2hdLGMubGVuZ3Roc1toXSwyPT1oKTtmWzBdLnB1c2goaVswXSksZ1swXS5wdXNoKGlbMV0pLGUucHVzaChpWzJdKX1pZihiLmNvbG9yJiZjLmNvbG9yKXt2YXIgaj1hLm1lcmdlQ29sb3JzKGIuY29sb3IsYy5jb2xvcik7ZlsxXT1qWzBdLGdbMV09alsxXSxkPWpbMl19cmV0dXJuW2YsZyxmdW5jdGlvbihhKXtmb3IodmFyIGM9Yi5pbnNldD8iaW5zZXQgIjoiICIsZj0wO2Y8ZS5sZW5ndGg7ZisrKWMrPWVbZl0oYVswXVtmXSkrIiAiO3JldHVybiBkJiYoYys9ZChhWzFdKSksY31dfX1mdW5jdGlvbiBlKGIsYyxkLGUpe2Z1bmN0aW9uIGYoYSl7cmV0dXJue2luc2V0OmEsY29sb3I6WzAsMCwwLDBdLGxlbmd0aHM6W3tweDowfSx7cHg6MH0se3B4OjB9LHtweDowfV19fWZvcih2YXIgZz1bXSxoPVtdLGk9MDtpPGQubGVuZ3RofHxpPGUubGVuZ3RoO2krKyl7dmFyIGo9ZFtpXXx8ZihlW2ldLmluc2V0KSxrPWVbaV18fGYoZFtpXS5pbnNldCk7Zy5wdXNoKGopLGgucHVzaChrKX1yZXR1cm4gYS5tZXJnZU5lc3RlZFJlcGVhdGVkKGIsYyxnLGgpfXZhciBmPWUuYmluZChudWxsLGQsIiwgIik7YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihjLGYsWyJib3gtc2hhZG93IiwidGV4dC1zaGFkb3ciXSl9KGQpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYS50b0ZpeGVkKDMpLnJlcGxhY2UoIi4wMDAiLCIiKX1mdW5jdGlvbiBkKGEsYixjKXtyZXR1cm4gTWF0aC5taW4oYixNYXRoLm1heChhLGMpKX1mdW5jdGlvbiBlKGEpe3JldHVybi9eXHMqWy0rXT8oXGQqXC4pP1xkK1xzKiQvLnRlc3QoYSk/TnVtYmVyKGEpOnZvaWQgMH1mdW5jdGlvbiBmKGEsYil7cmV0dXJuW2EsYixjXX1mdW5jdGlvbiBnKGEsYil7cmV0dXJuIDAhPWE/aSgwLDEvMCkoYSxiKTp2b2lkIDB9ZnVuY3Rpb24gaChhLGIpe3JldHVyblthLGIsZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGgucm91bmQoZCgxLDEvMCxhKSl9XX1mdW5jdGlvbiBpKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGUsZil7cmV0dXJuW2UsZixmdW5jdGlvbihlKXtyZXR1cm4gYyhkKGEsYixlKSl9XX19ZnVuY3Rpb24gaihhLGIpe3JldHVyblthLGIsTWF0aC5yb3VuZF19YS5jbGFtcD1kLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxpKDAsMS8wKSxbImJvcmRlci1pbWFnZS13aWR0aCIsImxpbmUtaGVpZ2h0Il0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxpKDAsMSksWyJvcGFjaXR5Iiwic2hhcGUtaW1hZ2UtdGhyZXNob2xkIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxnLFsiZmxleC1ncm93IiwiZmxleC1zaHJpbmsiXSksYS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihlLGgsWyJvcnBoYW5zIiwid2lkb3dzIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxqLFsiei1pbmRleCJdKSxhLnBhcnNlTnVtYmVyPWUsYS5tZXJnZU51bWJlcnM9ZixhLm51bWJlclRvU3RyaW5nPWN9KGQsZiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7cmV0dXJuInZpc2libGUiPT1hfHwidmlzaWJsZSI9PWI/WzAsMSxmdW5jdGlvbihjKXtyZXR1cm4gMD49Yz9hOmM+PTE/YjoidmlzaWJsZSJ9XTp2b2lkIDB9YS5hZGRQcm9wZXJ0aWVzSGFuZGxlcihTdHJpbmcsYyxbInZpc2liaWxpdHkiXSl9KGQpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhKXthPWEudHJpbSgpLGYuZmlsbFN0eWxlPSIjMDAwIixmLmZpbGxTdHlsZT1hO3ZhciBiPWYuZmlsbFN0eWxlO2lmKGYuZmlsbFN0eWxlPSIjZmZmIixmLmZpbGxTdHlsZT1hLGI9PWYuZmlsbFN0eWxlKXtmLmZpbGxSZWN0KDAsMCwxLDEpO3ZhciBjPWYuZ2V0SW1hZ2VEYXRhKDAsMCwxLDEpLmRhdGE7Zi5jbGVhclJlY3QoMCwwLDEsMSk7dmFyIGQ9Y1szXS8yNTU7cmV0dXJuW2NbMF0qZCxjWzFdKmQsY1syXSpkLGRdfX1mdW5jdGlvbiBkKGIsYyl7cmV0dXJuW2IsYyxmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGEpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDI1NSxhKSl9aWYoYlszXSlmb3IodmFyIGQ9MDszPmQ7ZCsrKWJbZF09TWF0aC5yb3VuZChjKGJbZF0vYlszXSkpO3JldHVybiBiWzNdPWEubnVtYmVyVG9TdHJpbmcoYS5jbGFtcCgwLDEsYlszXSkpLCJyZ2JhKCIrYi5qb2luKCIsIikrIikifV19dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIik7ZS53aWR0aD1lLmhlaWdodD0xO3ZhciBmPWUuZ2V0Q29udGV4dCgiMmQiKTthLmFkZFByb3BlcnRpZXNIYW5kbGVyKGMsZCxbImJhY2tncm91bmQtY29sb3IiLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWxlZnQtY29sb3IiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItdG9wLWNvbG9yIiwiY29sb3IiLCJvdXRsaW5lLWNvbG9yIiwidGV4dC1kZWNvcmF0aW9uLWNvbG9yIl0pLGEuY29uc3VtZUNvbG9yPWEuY29uc3VtZVBhcmVudGhlc2lzZWQuYmluZChudWxsLGMpLGEubWVyZ2VDb2xvcnM9ZH0oZCxmKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSxiKXtpZihiPWIudHJpbSgpLnRvTG93ZXJDYXNlKCksIjAiPT1iJiYicHgiLnNlYXJjaChhKT49MClyZXR1cm57cHg6MH07aWYoL15bXihdKiR8XmNhbGMvLnRlc3QoYikpe2I9Yi5yZXBsYWNlKC9jYWxjXCgvZywiKCIpO3ZhciBjPXt9O2I9Yi5yZXBsYWNlKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGNbYV09bnVsbCwiVSIrYX0pO2Zvcih2YXIgZD0iVSgiK2Euc291cmNlKyIpIixlPWIucmVwbGFjZSgvWy0rXT8oXGQqXC4pP1xkKy9nLCJOIikucmVwbGFjZShuZXcgUmVnRXhwKCJOIitkLCJnIiksIkQiKS5yZXBsYWNlKC9cc1srLV1ccy9nLCJPIikucmVwbGFjZSgvXHMvZywiIiksZj1bL05cKihEKS9nLC8oTnxEKVsqXC9dTi9nLC8oTnxEKU9cMS9nLC9cKChOfEQpXCkvZ10sZz0wO2c8Zi5sZW5ndGg7KWZbZ10udGVzdChlKT8oZT1lLnJlcGxhY2UoZltnXSwiJDEiKSxnPTApOmcrKztpZigiRCI9PWUpe2Zvcih2YXIgaCBpbiBjKXt2YXIgaT1ldmFsKGIucmVwbGFjZShuZXcgUmVnRXhwKCJVIitoLCJnIiksIiIpLnJlcGxhY2UobmV3IFJlZ0V4cChkLCJnIiksIiowIikpO2lmKCFpc0Zpbml0ZShpKSlyZXR1cm47Y1toXT1pfXJldHVybiBjfX19ZnVuY3Rpb24gZChhLGIpe3JldHVybiBlKGEsYiwhMCl9ZnVuY3Rpb24gZShiLGMsZCl7dmFyIGUsZj1bXTtmb3IoZSBpbiBiKWYucHVzaChlKTtmb3IoZSBpbiBjKWYuaW5kZXhPZihlKTwwJiZmLnB1c2goZSk7cmV0dXJuIGI9Zi5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV18fDB9KSxjPWYubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBjW2FdfHwwfSksW2IsYyxmdW5jdGlvbihiKXt2YXIgYz1iLm1hcChmdW5jdGlvbihjLGUpe3JldHVybiAxPT1iLmxlbmd0aCYmZCYmKGM9TWF0aC5tYXgoYywwKSksYS5udW1iZXJUb1N0cmluZyhjKStmW2VdfSkuam9pbigiICsgIik7cmV0dXJuIGIubGVuZ3RoPjE/ImNhbGMoIitjKyIpIjpjfV19dmFyIGY9InB4fGVtfGV4fGNofHJlbXx2d3x2aHx2bWlufHZtYXh8Y218bW18aW58cHR8cGMiLGc9Yy5iaW5kKG51bGwsbmV3IFJlZ0V4cChmLCJnIikpLGg9Yy5iaW5kKG51bGwsbmV3IFJlZ0V4cChmKyJ8JSIsImciKSksaT1jLmJpbmQobnVsbCwvZGVnfHJhZHxncmFkfHR1cm4vZyk7YS5wYXJzZUxlbmd0aD1nLGEucGFyc2VMZW5ndGhPclBlcmNlbnQ9aCxhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQ9YS5jb25zdW1lUGFyZW50aGVzaXNlZC5iaW5kKG51bGwsaCksYS5wYXJzZUFuZ2xlPWksYS5tZXJnZURpbWVuc2lvbnM9ZTt2YXIgaj1hLmNvbnN1bWVQYXJlbnRoZXNpc2VkLmJpbmQobnVsbCxnKSxrPWEuY29uc3VtZVJlcGVhdGVkLmJpbmQodm9pZCAwLGosL14vKSxsPWEuY29uc3VtZVJlcGVhdGVkLmJpbmQodm9pZCAwLGssL14sLyk7YS5jb25zdW1lU2l6ZVBhaXJMaXN0PWw7dmFyIG09ZnVuY3Rpb24oYSl7dmFyIGI9bChhKTtyZXR1cm4gYiYmIiI9PWJbMV0/YlswXTp2b2lkIDB9LG49YS5tZXJnZU5lc3RlZFJlcGVhdGVkLmJpbmQodm9pZCAwLGQsIiAiKSxvPWEubWVyZ2VOZXN0ZWRSZXBlYXRlZC5iaW5kKHZvaWQgMCxuLCIsIik7YS5tZXJnZU5vbk5lZ2F0aXZlU2l6ZVBhaXI9bixhLmFkZFByb3BlcnRpZXNIYW5kbGVyKG0sbyxbImJhY2tncm91bmQtc2l6ZSJdKSxhLmFkZFByb3BlcnRpZXNIYW5kbGVyKGgsZCxbImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yaWdodC13aWR0aCIsImJvcmRlci10b3Atd2lkdGgiLCJmbGV4LWJhc2lzIiwiZm9udC1zaXplIiwiaGVpZ2h0IiwibGluZS1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwib3V0bGluZS13aWR0aCIsIndpZHRoIl0pLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoaCxlLFsiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm90dG9tIiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1pbi1oZWlnaHQiLCJtaW4td2lkdGgiLCJvdXRsaW5lLW9mZnNldCIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGVyc3BlY3RpdmUiLCJyaWdodCIsInNoYXBlLW1hcmdpbiIsInRleHQtaW5kZW50IiwidG9wIiwidmVydGljYWwtYWxpZ24iLCJ3b3JkLXNwYWNpbmciXSl9KGQsZiksZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGIpe3JldHVybiBhLmNvbnN1bWVMZW5ndGhPclBlcmNlbnQoYil8fGEuY29uc3VtZVRva2VuKC9eYXV0by8sYil9ZnVuY3Rpb24gZChiKXt2YXIgZD1hLmNvbnN1bWVMaXN0KFthLmlnbm9yZShhLmNvbnN1bWVUb2tlbi5iaW5kKG51bGwsL15yZWN0LykpLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwoLykpLGEuY29uc3VtZVJlcGVhdGVkLmJpbmQobnVsbCxjLC9eLC8pLGEuaWdub3JlKGEuY29uc3VtZVRva2VuLmJpbmQobnVsbCwvXlwpLykpXSxiKTtyZXR1cm4gZCYmND09ZFswXS5sZW5ndGg/ZFswXTp2b2lkIDB9ZnVuY3Rpb24gZShiLGMpe3JldHVybiJhdXRvIj09Ynx8ImF1dG8iPT1jP1shMCwhMSxmdW5jdGlvbihkKXt2YXIgZT1kP2I6YztpZigiYXV0byI9PWUpcmV0dXJuImF1dG8iO3ZhciBmPWEubWVyZ2VEaW1lbnNpb25zKGUsZSk7cmV0dXJuIGZbMl0oZlswXSl9XTphLm1lcmdlRGltZW5zaW9ucyhiLGMpfWZ1bmN0aW9uIGYoYSl7cmV0dXJuInJlY3QoIithKyIpIn12YXIgZz1hLm1lcmdlV3JhcHBlZE5lc3RlZFJlcGVhdGVkLmJpbmQobnVsbCxmLGUsIiwgIik7YS5wYXJzZUJveD1kLGEubWVyZ2VCb3hlcz1nLGEuYWRkUHJvcGVydGllc0hhbmRsZXIoZCxnLFsiY2xpcCJdKX0oZCxmKSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPTA7cmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09az9iW2MrK106YX0pfX1mdW5jdGlvbiBkKGEpe3JldHVybiBhfWZ1bmN0aW9uIGUoYil7aWYoYj1iLnRvTG93ZXJDYXNlKCkudHJpbSgpLCJub25lIj09YilyZXR1cm5bXTtmb3IodmFyIGMsZD0vXHMqKFx3KylcKChbXildKilcKS9nLGU9W10sZj0wO2M9ZC5leGVjKGIpOyl7aWYoYy5pbmRleCE9ZilyZXR1cm47Zj1jLmluZGV4K2NbMF0ubGVuZ3RoO3ZhciBnPWNbMV0saD1uW2ddO2lmKCFoKXJldHVybjt2YXIgaT1jWzJdLnNwbGl0KCIsIiksaj1oWzBdO2lmKGoubGVuZ3RoPGkubGVuZ3RoKXJldHVybjtmb3IodmFyIGs9W10sbz0wO288ai5sZW5ndGg7bysrKXt2YXIgcCxxPWlbb10scj1qW29dO2lmKHA9cT97QTpmdW5jdGlvbihiKXtyZXR1cm4iMCI9PWIudHJpbSgpP206YS5wYXJzZUFuZ2xlKGIpfSxOOmEucGFyc2VOdW1iZXIsVDphLnBhcnNlTGVuZ3RoT3JQZXJjZW50LEw6YS5wYXJzZUxlbmd0aH1bci50b1VwcGVyQ2FzZSgpXShxKTp7YTptLG46a1swXSx0Omx9W3JdLHZvaWQgMD09PXApcmV0dXJuO2sucHVzaChwKX1pZihlLnB1c2goe3Q6ZyxkOmt9KSxkLmxhc3RJbmRleD09Yi5sZW5ndGgpcmV0dXJuIGV9fWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudG9GaXhlZCg2KS5yZXBsYWNlKCIuMDAwMDAwIiwiIil9ZnVuY3Rpb24gZyhiLGMpe2lmKGIuZGVjb21wb3NpdGlvblBhaXIhPT1jKXtiLmRlY29tcG9zaXRpb25QYWlyPWM7dmFyIGQ9YS5tYWtlTWF0cml4RGVjb21wb3NpdGlvbihiKX1pZihjLmRlY29tcG9zaXRpb25QYWlyIT09Yil7Yy5kZWNvbXBvc2l0aW9uUGFpcj1iO3ZhciBlPWEubWFrZU1hdHJpeERlY29tcG9zaXRpb24oYyl9cmV0dXJuIG51bGw9PWRbMF18fG51bGw9PWVbMF0/W1shMV0sWyEwXSxmdW5jdGlvbihhKXtyZXR1cm4gYT9jWzBdLmQ6YlswXS5kfV06KGRbMF0ucHVzaCgwKSxlWzBdLnB1c2goMSksW2QsZSxmdW5jdGlvbihiKXt2YXIgYz1hLnF1YXQoZFswXVszXSxlWzBdWzNdLGJbNV0pLGc9YS5jb21wb3NlTWF0cml4KGJbMF0sYlsxXSxiWzJdLGMsYls0XSksaD1nLm1hcChmKS5qb2luKCIsIik7cmV0dXJuIGh9XSl9ZnVuY3Rpb24gaChhKXtyZXR1cm4gYS5yZXBsYWNlKC9beHldLywiIil9ZnVuY3Rpb24gaShhKXtyZXR1cm4gYS5yZXBsYWNlKC8oeHx5fHp8M2QpPyQvLCIzZCIpfWZ1bmN0aW9uIGooYixjKXt2YXIgZD1hLm1ha2VNYXRyaXhEZWNvbXBvc2l0aW9uJiYhMCxlPSExO2lmKCFiLmxlbmd0aHx8IWMubGVuZ3RoKXtiLmxlbmd0aHx8KGU9ITAsYj1jLGM9W10pO2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKXt2YXIgaj1iW2ZdLnQsaz1iW2ZdLmQsbD0ic2NhbGUiPT1qLnN1YnN0cigwLDUpPzE6MDtjLnB1c2goe3Q6aixkOmsubWFwKGZ1bmN0aW9uKGEpe2lmKCJudW1iZXIiPT10eXBlb2YgYSlyZXR1cm4gbDt2YXIgYj17fTtmb3IodmFyIGMgaW4gYSliW2NdPWw7cmV0dXJuIGJ9KX0pfX12YXIgbT1mdW5jdGlvbihhLGIpe3JldHVybiJwZXJzcGVjdGl2ZSI9PWEmJiJwZXJzcGVjdGl2ZSI9PWJ8fCgibWF0cml4Ij09YXx8Im1hdHJpeDNkIj09YSkmJigibWF0cml4Ij09Ynx8Im1hdHJpeDNkIj09Yil9LG89W10scD1bXSxxPVtdO2lmKGIubGVuZ3RoIT1jLmxlbmd0aCl7aWYoIWQpcmV0dXJuO3ZhciByPWcoYixjKTtvPVtyWzBdXSxwPVtyWzFdXSxxPVtbIm1hdHJpeCIsW3JbMl1dXV19ZWxzZSBmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKyl7dmFyIGoscz1iW2ZdLnQsdD1jW2ZdLnQsdT1iW2ZdLmQsdj1jW2ZdLmQsdz1uW3NdLHg9blt0XTtpZihtKHMsdCkpe2lmKCFkKXJldHVybjt2YXIgcj1nKFtiW2ZdXSxbY1tmXV0pO28ucHVzaChyWzBdKSxwLnB1c2goclsxXSkscS5wdXNoKFsibWF0cml4IixbclsyXV1dKX1lbHNle2lmKHM9PXQpaj1zO2Vsc2UgaWYod1syXSYmeFsyXSYmaChzKT09aCh0KSlqPWgocyksdT13WzJdKHUpLHY9eFsyXSh2KTtlbHNle2lmKCF3WzFdfHwheFsxXXx8aShzKSE9aSh0KSl7aWYoIWQpcmV0dXJuO3ZhciByPWcoYixjKTtvPVtyWzBdXSxwPVtyWzFdXSxxPVtbIm1hdHJpeCIsW3JbMl1dXV07YnJlYWt9aj1pKHMpLHU9d1sxXSh1KSx2PXhbMV0odil9Zm9yKHZhciB5PVtdLHo9W10sQT1bXSxCPTA7Qjx1Lmxlbmd0aDtCKyspe3ZhciBDPSJudW1iZXIiPT10eXBlb2YgdVtCXT9hLm1lcmdlTnVtYmVyczphLm1lcmdlRGltZW5zaW9ucyxyPUModVtCXSx2W0JdKTt5W0JdPXJbMF0seltCXT1yWzFdLEEucHVzaChyWzJdKX1vLnB1c2goeSkscC5wdXNoKHopLHEucHVzaChbaixBXSl9fWlmKGUpe3ZhciBEPW87bz1wLHA9RH1yZXR1cm5bbyxwLGZ1bmN0aW9uKGEpe3JldHVybiBhLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPWEubWFwKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIHFbYl1bMV1bY10oYSl9KS5qb2luKCIsIik7cmV0dXJuIm1hdHJpeCI9PXFbYl1bMF0mJjE2PT1jLnNwbGl0KCIsIikubGVuZ3RoJiYocVtiXVswXT0ibWF0cml4M2QiKSxxW2JdWzBdKyIoIitjKyIpIn0pLmpvaW4oIiAiKX1dfXZhciBrPW51bGwsbD17cHg6MH0sbT17ZGVnOjB9LG49e21hdHJpeDpbIk5OTk5OTiIsW2ssaywwLDAsayxrLDAsMCwwLDAsMSwwLGssaywwLDFdLGRdLG1hdHJpeDNkOlsiTk5OTk5OTk5OTk5OTk5OTiIsZF0scm90YXRlOlsiQSJdLHJvdGF0ZXg6WyJBIl0scm90YXRleTpbIkEiXSxyb3RhdGV6OlsiQSJdLHJvdGF0ZTNkOlsiTk5OQSJdLHBlcnNwZWN0aXZlOlsiTCJdLHNjYWxlOlsiTm4iLGMoW2ssaywxXSksZF0sc2NhbGV4OlsiTiIsYyhbaywxLDFdKSxjKFtrLDFdKV0sc2NhbGV5OlsiTiIsYyhbMSxrLDFdKSxjKFsxLGtdKV0sc2NhbGV6OlsiTiIsYyhbMSwxLGtdKV0sc2NhbGUzZDpbIk5OTiIsZF0sc2tldzpbIkFhIixudWxsLGRdLHNrZXd4OlsiQSIsbnVsbCxjKFtrLG1dKV0sc2tld3k6WyJBIixudWxsLGMoW20sa10pXSx0cmFuc2xhdGU6WyJUdCIsYyhbayxrLGxdKSxkXSx0cmFuc2xhdGV4OlsiVCIsYyhbayxsLGxdKSxjKFtrLGxdKV0sdHJhbnNsYXRleTpbIlQiLGMoW2wsayxsXSksYyhbbCxrXSldLHRyYW5zbGF0ZXo6WyJMIixjKFtsLGwsa10pXSx0cmFuc2xhdGUzZDpbIlRUTCIsZF19O2EuYWRkUHJvcGVydGllc0hhbmRsZXIoZSxqLFsidHJhbnNmb3JtIl0pfShkLGYpLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIpe2IuY29uY2F0KFthXSkuZm9yRWFjaChmdW5jdGlvbihiKXtiIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSYmKGRbYV09Yil9KX12YXIgZD17fTtjKCJ0cmFuc2Zvcm0iLFsid2Via2l0VHJhbnNmb3JtIiwibXNUcmFuc2Zvcm0iXSksYygidHJhbnNmb3JtT3JpZ2luIixbIndlYmtpdFRyYW5zZm9ybU9yaWdpbiJdKSxjKCJwZXJzcGVjdGl2ZSIsWyJ3ZWJraXRQZXJzcGVjdGl2ZSJdKSxjKCJwZXJzcGVjdGl2ZU9yaWdpbiIsWyJ3ZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiJdKSxhLnByb3BlcnR5TmFtZT1mdW5jdGlvbihhKXtyZXR1cm4gZFthXXx8YX19KGQsZil9KCksIWZ1bmN0aW9uKCl7aWYodm9pZCAwPT09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikuYW5pbWF0ZShbXSkub25jYW5jZWwpe3ZhciBhO2lmKHdpbmRvdy5wZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93KXZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpfTtlbHNlIHZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuIERhdGUubm93KCl9O3ZhciBiPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnRhcmdldD1hLHRoaXMuY3VycmVudFRpbWU9Yix0aGlzLnRpbWVsaW5lVGltZT1jLHRoaXMudHlwZT0iY2FuY2VsIix0aGlzLmJ1YmJsZXM9ITEsdGhpcy5jYW5jZWxhYmxlPSExLHRoaXMuY3VycmVudFRhcmdldD1hLHRoaXMuZGVmYXVsdFByZXZlbnRlZD0hMSx0aGlzLmV2ZW50UGhhc2U9RXZlbnQuQVRfVEFSR0VULHRoaXMudGltZVN0YW1wPURhdGUubm93KCl9LGM9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU9ZnVuY3Rpb24oZCxlKXt2YXIgZj1jLmNhbGwodGhpcyxkLGUpO2YuX2NhbmNlbEhhbmRsZXJzPVtdLGYub25jYW5jZWw9bnVsbDt2YXIgZz1mLmNhbmNlbDtmLmNhbmNlbD1mdW5jdGlvbigpe2cuY2FsbCh0aGlzKTt2YXIgYz1uZXcgYih0aGlzLG51bGwsYSgpKSxkPXRoaXMuX2NhbmNlbEhhbmRsZXJzLmNvbmNhdCh0aGlzLm9uY2FuY2VsP1t0aGlzLm9uY2FuY2VsXTpbXSk7c2V0VGltZW91dChmdW5jdGlvbigpe2QuZm9yRWFjaChmdW5jdGlvbihhKXthLmNhbGwoYy50YXJnZXQsYyl9KX0sMCl9O3ZhciBoPWYuYWRkRXZlbnRMaXN0ZW5lcjtmLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXsiZnVuY3Rpb24iPT10eXBlb2YgYiYmImNhbmNlbCI9PWE/dGhpcy5fY2FuY2VsSGFuZGxlcnMucHVzaChiKTpoLmNhbGwodGhpcyxhLGIpfTt2YXIgaT1mLnJlbW92ZUV2ZW50TGlzdGVuZXI7cmV0dXJuIGYucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe2lmKCJjYW5jZWwiPT1hKXt2YXIgYz10aGlzLl9jYW5jZWxIYW5kbGVycy5pbmRleE9mKGIpO2M+PTAmJnRoaXMuX2NhbmNlbEhhbmRsZXJzLnNwbGljZShjLDEpfWVsc2UgaS5jYWxsKHRoaXMsYSxiKX0sZn19fSgpLGZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxjPW51bGwsZD0hMTt0cnl7dmFyIGU9Z2V0Q29tcHV0ZWRTdHlsZShiKS5nZXRQcm9wZXJ0eVZhbHVlKCJvcGFjaXR5IiksZj0iMCI9PWU/IjEiOiIwIjtjPWIuYW5pbWF0ZSh7b3BhY2l0eTpbZixmXX0se2R1cmF0aW9uOjF9KSxjLmN1cnJlbnRUaW1lPTAsZD1nZXRDb21wdXRlZFN0eWxlKGIpLmdldFByb3BlcnR5VmFsdWUoIm9wYWNpdHkiKT09Zn1jYXRjaChnKXt9ZmluYWxseXtjJiZjLmNhbmNlbCgpfWlmKCFkKXt2YXIgaD13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZTt3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihiLGMpe3JldHVybiB3aW5kb3cuU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJkFycmF5LnByb3RvdHlwZS5mcm9tJiZiW1N5bWJvbC5pdGVyYXRvcl0mJihiPUFycmF5LmZyb20oYikpLEFycmF5LmlzQXJyYXkoYil8fG51bGw9PT1ifHwoYj1hLmNvbnZlcnRUb0FycmF5Rm9ybShiKSksaC5jYWxsKHRoaXMsYixjKX19fShjKSwhZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7dmFyIGI9d2luZG93LmRvY3VtZW50LnRpbWVsaW5lO2IuY3VycmVudFRpbWU9YSxiLl9kaXNjYXJkQW5pbWF0aW9ucygpLDA9PWIuX2FuaW1hdGlvbnMubGVuZ3RoP2Y9ITE6cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGQpOwp9dmFyIGU9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTt3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe3JldHVybiBlKGZ1bmN0aW9uKGIpe3dpbmRvdy5kb2N1bWVudC50aW1lbGluZS5fdXBkYXRlQW5pbWF0aW9uc1Byb21pc2VzKCksYShiKSx3aW5kb3cuZG9jdW1lbnQudGltZWxpbmUuX3VwZGF0ZUFuaW1hdGlvbnNQcm9taXNlcygpfSl9LGIuQW5pbWF0aW9uVGltZWxpbmU9ZnVuY3Rpb24oKXt0aGlzLl9hbmltYXRpb25zPVtdLHRoaXMuY3VycmVudFRpbWU9dm9pZCAwfSxiLkFuaW1hdGlvblRpbWVsaW5lLnByb3RvdHlwZT17Z2V0QW5pbWF0aW9uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kaXNjYXJkQW5pbWF0aW9ucygpLHRoaXMuX2FuaW1hdGlvbnMuc2xpY2UoKX0sX3VwZGF0ZUFuaW1hdGlvbnNQcm9taXNlczpmdW5jdGlvbigpe2IuYW5pbWF0aW9uc1dpdGhQcm9taXNlcz1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLl91cGRhdGVQcm9taXNlcygpfSl9LF9kaXNjYXJkQW5pbWF0aW9uczpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUFuaW1hdGlvbnNQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbnM9dGhpcy5fYW5pbWF0aW9ucy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuImZpbmlzaGVkIiE9YS5wbGF5U3RhdGUmJiJpZGxlIiE9YS5wbGF5U3RhdGV9KX0sX3BsYXk6ZnVuY3Rpb24oYSl7dmFyIGM9bmV3IGIuQW5pbWF0aW9uKGEsdGhpcyk7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbnMucHVzaChjKSxiLnJlc3RhcnRXZWJBbmltYXRpb25zTmV4dFRpY2soKSxjLl91cGRhdGVQcm9taXNlcygpLGMuX2FuaW1hdGlvbi5wbGF5KCksYy5fdXBkYXRlUHJvbWlzZXMoKSxjfSxwbGF5OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnJlbW92ZSgpLHRoaXMuX3BsYXkoYSl9fTt2YXIgZj0hMTtiLnJlc3RhcnRXZWJBbmltYXRpb25zTmV4dFRpY2s9ZnVuY3Rpb24oKXtmfHwoZj0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZCkpfTt2YXIgZz1uZXcgYi5BbmltYXRpb25UaW1lbGluZTtiLnRpbWVsaW5lPWc7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuZG9jdW1lbnQsInRpbWVsaW5lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBnfX0pfWNhdGNoKGgpe310cnl7d2luZG93LmRvY3VtZW50LnRpbWVsaW5lPWd9Y2F0Y2goaCl7fX0oYyxlLGYpLGZ1bmN0aW9uKGEsYixjKXtiLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXM9W10sYi5BbmltYXRpb249ZnVuY3Rpb24oYixjKXtpZih0aGlzLmlkPSIiLGImJmIuX2lkJiYodGhpcy5pZD1iLl9pZCksdGhpcy5lZmZlY3Q9YixiJiYoYi5fYW5pbWF0aW9uPXRoaXMpLCFjKXRocm93IG5ldyBFcnJvcigiQW5pbWF0aW9uIHdpdGggbnVsbCB0aW1lbGluZSBpcyBub3Qgc3VwcG9ydGVkIik7dGhpcy5fdGltZWxpbmU9Yyx0aGlzLl9zZXF1ZW5jZU51bWJlcj1hLnNlcXVlbmNlTnVtYmVyKyssdGhpcy5faG9sZFRpbWU9MCx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5faXNHcm91cD0hMSx0aGlzLl9hbmltYXRpb249bnVsbCx0aGlzLl9jaGlsZEFuaW1hdGlvbnM9W10sdGhpcy5fY2FsbGJhY2s9bnVsbCx0aGlzLl9vbGRQbGF5U3RhdGU9ImlkbGUiLHRoaXMuX3JlYnVpbGRVbmRlcmx5aW5nQW5pbWF0aW9uKCksdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LGIuQW5pbWF0aW9uLnByb3RvdHlwZT17X3VwZGF0ZVByb21pc2VzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fb2xkUGxheVN0YXRlLGI9dGhpcy5wbGF5U3RhdGU7cmV0dXJuIHRoaXMuX3JlYWR5UHJvbWlzZSYmYiE9PWEmJigiaWRsZSI9PWI/KHRoaXMuX3JlamVjdFJlYWR5UHJvbWlzZSgpLHRoaXMuX3JlYWR5UHJvbWlzZT12b2lkIDApOiJwZW5kaW5nIj09YT90aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCk6InBlbmRpbmciPT1iJiYodGhpcy5fcmVhZHlQcm9taXNlPXZvaWQgMCkpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZSYmYiE9PWEmJigiaWRsZSI9PWI/KHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZSgpLHRoaXMuX2ZpbmlzaGVkUHJvbWlzZT12b2lkIDApOiJmaW5pc2hlZCI9PWI/dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZSgpOiJmaW5pc2hlZCI9PWEmJih0aGlzLl9maW5pc2hlZFByb21pc2U9dm9pZCAwKSksdGhpcy5fb2xkUGxheVN0YXRlPXRoaXMucGxheVN0YXRlLHRoaXMuX3JlYWR5UHJvbWlzZXx8dGhpcy5fZmluaXNoZWRQcm9taXNlfSxfcmVidWlsZFVuZGVybHlpbmdBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBhLGMsZCxlLGY9ISF0aGlzLl9hbmltYXRpb247ZiYmKGE9dGhpcy5wbGF5YmFja1JhdGUsYz10aGlzLl9wYXVzZWQsZD10aGlzLnN0YXJ0VGltZSxlPXRoaXMuY3VycmVudFRpbWUsdGhpcy5fYW5pbWF0aW9uLmNhbmNlbCgpLHRoaXMuX2FuaW1hdGlvbi5fd3JhcHBlcj1udWxsLHRoaXMuX2FuaW1hdGlvbj1udWxsKSwoIXRoaXMuZWZmZWN0fHx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5LZXlmcmFtZUVmZmVjdCkmJih0aGlzLl9hbmltYXRpb249Yi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3QodGhpcy5lZmZlY3QpLGIuYmluZEFuaW1hdGlvbkZvcktleWZyYW1lRWZmZWN0KHRoaXMpKSwodGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3R8fHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93Lkdyb3VwRWZmZWN0KSYmKHRoaXMuX2FuaW1hdGlvbj1iLm5ld1VuZGVybHlpbmdBbmltYXRpb25Gb3JHcm91cCh0aGlzLmVmZmVjdCksYi5iaW5kQW5pbWF0aW9uRm9yR3JvdXAodGhpcykpLHRoaXMuZWZmZWN0JiZ0aGlzLmVmZmVjdC5fb25zYW1wbGUmJmIuYmluZEFuaW1hdGlvbkZvckN1c3RvbUVmZmVjdCh0aGlzKSxmJiYoMSE9YSYmKHRoaXMucGxheWJhY2tSYXRlPWEpLG51bGwhPT1kP3RoaXMuc3RhcnRUaW1lPWQ6bnVsbCE9PWU/dGhpcy5jdXJyZW50VGltZT1lOm51bGwhPT10aGlzLl9ob2xkVGltZSYmKHRoaXMuY3VycmVudFRpbWU9dGhpcy5faG9sZFRpbWUpLGMmJnRoaXMucGF1c2UoKSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKCl7aWYodGhpcy5lZmZlY3QmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUpe3ZhciBhPXRoaXMuZWZmZWN0Ll90aW1pbmcuZGVsYXk7dGhpcy5fY2hpbGRBbmltYXRpb25zLmZvckVhY2goZnVuY3Rpb24oYyl7dGhpcy5fYXJyYW5nZUNoaWxkcmVuKGMsYSksdGhpcy5lZmZlY3QgaW5zdGFuY2VvZiB3aW5kb3cuU2VxdWVuY2VFZmZlY3QmJihhKz1iLmdyb3VwQ2hpbGREdXJhdGlvbihjLmVmZmVjdCkpfS5iaW5kKHRoaXMpKX19LF9zZXRFeHRlcm5hbEFuaW1hdGlvbjpmdW5jdGlvbihhKXtpZih0aGlzLmVmZmVjdCYmdGhpcy5faXNHcm91cClmb3IodmFyIGI9MDtiPHRoaXMuZWZmZWN0LmNoaWxkcmVuLmxlbmd0aDtiKyspdGhpcy5lZmZlY3QuY2hpbGRyZW5bYl0uX2FuaW1hdGlvbj1hLHRoaXMuX2NoaWxkQW5pbWF0aW9uc1tiXS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LF9jb25zdHJ1Y3RDaGlsZEFuaW1hdGlvbnM6ZnVuY3Rpb24oKXtpZih0aGlzLmVmZmVjdCYmdGhpcy5faXNHcm91cCl7dmFyIGE9dGhpcy5lZmZlY3QuX3RpbWluZy5kZWxheTt0aGlzLl9yZW1vdmVDaGlsZEFuaW1hdGlvbnMoKSx0aGlzLmVmZmVjdC5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPXdpbmRvdy5kb2N1bWVudC50aW1lbGluZS5fcGxheShjKTt0aGlzLl9jaGlsZEFuaW1hdGlvbnMucHVzaChkKSxkLnBsYXliYWNrUmF0ZT10aGlzLnBsYXliYWNrUmF0ZSx0aGlzLl9wYXVzZWQmJmQucGF1c2UoKSxjLl9hbmltYXRpb249dGhpcy5lZmZlY3QuX2FuaW1hdGlvbix0aGlzLl9hcnJhbmdlQ2hpbGRyZW4oZCxhKSx0aGlzLmVmZmVjdCBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdCYmKGErPWIuZ3JvdXBDaGlsZER1cmF0aW9uKGMpKX0uYmluZCh0aGlzKSl9fSxfYXJyYW5nZUNoaWxkcmVuOmZ1bmN0aW9uKGEsYil7bnVsbD09PXRoaXMuc3RhcnRUaW1lP2EuY3VycmVudFRpbWU9dGhpcy5jdXJyZW50VGltZS1iL3RoaXMucGxheWJhY2tSYXRlOmEuc3RhcnRUaW1lIT09dGhpcy5zdGFydFRpbWUrYi90aGlzLnBsYXliYWNrUmF0ZSYmKGEuc3RhcnRUaW1lPXRoaXMuc3RhcnRUaW1lK2IvdGhpcy5wbGF5YmFja1JhdGUpfSxnZXQgdGltZWxpbmUoKXtyZXR1cm4gdGhpcy5fdGltZWxpbmV9LGdldCBwbGF5U3RhdGUoKXtyZXR1cm4gdGhpcy5fYW5pbWF0aW9uP3RoaXMuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUifSxnZXQgZmluaXNoZWQoKXtyZXR1cm4gd2luZG93LlByb21pc2U/KHRoaXMuX2ZpbmlzaGVkUHJvbWlzZXx8KC0xPT1iLmFuaW1hdGlvbnNXaXRoUHJvbWlzZXMuaW5kZXhPZih0aGlzKSYmYi5hbmltYXRpb25zV2l0aFByb21pc2VzLnB1c2godGhpcyksdGhpcy5fZmluaXNoZWRQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEsYil7dGhpcy5fcmVzb2x2ZUZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2EodGhpcyl9LHRoaXMuX3JlamVjdEZpbmlzaGVkUHJvbWlzZT1mdW5jdGlvbigpe2Ioe3R5cGU6RE9NRXhjZXB0aW9uLkFCT1JUX0VSUixuYW1lOiJBYm9ydEVycm9yIn0pfX0uYmluZCh0aGlzKSksImZpbmlzaGVkIj09dGhpcy5wbGF5U3RhdGUmJnRoaXMuX3Jlc29sdmVGaW5pc2hlZFByb21pc2UoKSksdGhpcy5fZmluaXNoZWRQcm9taXNlKTooY29uc29sZS53YXJuKCJBbmltYXRpb24gUHJvbWlzZXMgcmVxdWlyZSBKYXZhU2NyaXB0IFByb21pc2UgY29uc3RydWN0b3IiKSxudWxsKX0sZ2V0IHJlYWR5KCl7cmV0dXJuIHdpbmRvdy5Qcm9taXNlPyh0aGlzLl9yZWFkeVByb21pc2V8fCgtMT09Yi5hbmltYXRpb25zV2l0aFByb21pc2VzLmluZGV4T2YodGhpcykmJmIuYW5pbWF0aW9uc1dpdGhQcm9taXNlcy5wdXNoKHRoaXMpLHRoaXMuX3JlYWR5UHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihhLGIpe3RoaXMuX3Jlc29sdmVSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXthKHRoaXMpfSx0aGlzLl9yZWplY3RSZWFkeVByb21pc2U9ZnVuY3Rpb24oKXtiKHt0eXBlOkRPTUV4Y2VwdGlvbi5BQk9SVF9FUlIsbmFtZToiQWJvcnRFcnJvciJ9KX19LmJpbmQodGhpcykpLCJwZW5kaW5nIiE9PXRoaXMucGxheVN0YXRlJiZ0aGlzLl9yZXNvbHZlUmVhZHlQcm9taXNlKCkpLHRoaXMuX3JlYWR5UHJvbWlzZSk6KGNvbnNvbGUud2FybigiQW5pbWF0aW9uIFByb21pc2VzIHJlcXVpcmUgSmF2YVNjcmlwdCBQcm9taXNlIGNvbnN0cnVjdG9yIiksbnVsbCl9LGdldCBvbmZpbmlzaCgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ub25maW5pc2h9LHNldCBvbmZpbmlzaChhKXsiZnVuY3Rpb24iPT10eXBlb2YgYT90aGlzLl9hbmltYXRpb24ub25maW5pc2g9ZnVuY3Rpb24oYil7Yi50YXJnZXQ9dGhpcyxhLmNhbGwodGhpcyxiKX0uYmluZCh0aGlzKTp0aGlzLl9hbmltYXRpb24ub25maW5pc2g9YX0sZ2V0IG9uY2FuY2VsKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvbi5vbmNhbmNlbH0sc2V0IG9uY2FuY2VsKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiBhP3RoaXMuX2FuaW1hdGlvbi5vbmNhbmNlbD1mdW5jdGlvbihiKXtiLnRhcmdldD10aGlzLGEuY2FsbCh0aGlzLGIpfS5iaW5kKHRoaXMpOnRoaXMuX2FuaW1hdGlvbi5vbmNhbmNlbD1hfSxnZXQgY3VycmVudFRpbWUoKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBhPXRoaXMuX2FuaW1hdGlvbi5jdXJyZW50VGltZTtyZXR1cm4gdGhpcy5fdXBkYXRlUHJvbWlzZXMoKSxhfSxzZXQgY3VycmVudFRpbWUoYSl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb24uY3VycmVudFRpbWU9aXNGaW5pdGUoYSk/YTpNYXRoLnNpZ24oYSkqTnVtYmVyLk1BWF9WQUxVRSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihiLGMpe2IuY3VycmVudFRpbWU9YS1jfSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sZ2V0IHN0YXJ0VGltZSgpe3JldHVybiB0aGlzLl9hbmltYXRpb24uc3RhcnRUaW1lfSxzZXQgc3RhcnRUaW1lKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCksdGhpcy5fYW5pbWF0aW9uLnN0YXJ0VGltZT1pc0Zpbml0ZShhKT9hOk1hdGguc2lnbihhKSpOdW1iZXIuTUFYX1ZBTFVFLHRoaXMuX3JlZ2lzdGVyKCksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGIsYyl7Yi5zdGFydFRpbWU9YStjfSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sZ2V0IHBsYXliYWNrUmF0ZSgpe3JldHVybiB0aGlzLl9hbmltYXRpb24ucGxheWJhY2tSYXRlfSxzZXQgcGxheWJhY2tSYXRlKGEpe3RoaXMuX3VwZGF0ZVByb21pc2VzKCk7dmFyIGI9dGhpcy5jdXJyZW50VGltZTt0aGlzLl9hbmltYXRpb24ucGxheWJhY2tSYXRlPWEsdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGIpe2IucGxheWJhY2tSYXRlPWF9KSwicGF1c2VkIiE9dGhpcy5wbGF5U3RhdGUmJiJpZGxlIiE9dGhpcy5wbGF5U3RhdGUmJnRoaXMucGxheSgpLG51bGwhPT1iJiYodGhpcy5jdXJyZW50VGltZT1iKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9wYXVzZWQ9ITEsdGhpcy5fYW5pbWF0aW9uLnBsYXkoKSwtMT09dGhpcy5fdGltZWxpbmUuX2FuaW1hdGlvbnMuaW5kZXhPZih0aGlzKSYmdGhpcy5fdGltZWxpbmUuX2FuaW1hdGlvbnMucHVzaCh0aGlzKSx0aGlzLl9yZWdpc3RlcigpLGIuYXdhaXRTdGFydFRpbWUodGhpcyksdGhpcy5fZm9yRWFjaENoaWxkKGZ1bmN0aW9uKGEpe3ZhciBiPWEuY3VycmVudFRpbWU7YS5wbGF5KCksYS5jdXJyZW50VGltZT1ifSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0scGF1c2U6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuY3VycmVudFRpbWUmJih0aGlzLl9ob2xkVGltZT10aGlzLmN1cnJlbnRUaW1lKSx0aGlzLl9hbmltYXRpb24ucGF1c2UoKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLnBhdXNlKCl9KSx0aGlzLl9wYXVzZWQ9ITAsdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sZmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlUHJvbWlzZXMoKSx0aGlzLl9hbmltYXRpb24uZmluaXNoKCksdGhpcy5fcmVnaXN0ZXIoKSx0aGlzLl91cGRhdGVQcm9taXNlcygpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpLHRoaXMuX2FuaW1hdGlvbi5jYW5jZWwoKSx0aGlzLl9yZWdpc3RlcigpLHRoaXMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpLHRoaXMuX3VwZGF0ZVByb21pc2VzKCl9LHJldmVyc2U6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVQcm9taXNlcygpO3ZhciBhPXRoaXMuY3VycmVudFRpbWU7dGhpcy5fYW5pbWF0aW9uLnJldmVyc2UoKSx0aGlzLl9mb3JFYWNoQ2hpbGQoZnVuY3Rpb24oYSl7YS5yZXZlcnNlKCl9KSxudWxsIT09YSYmKHRoaXMuY3VycmVudFRpbWU9YSksdGhpcy5fdXBkYXRlUHJvbWlzZXMoKX0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe3ZhciBjPWI7ImZ1bmN0aW9uIj09dHlwZW9mIGImJihjPWZ1bmN0aW9uKGEpe2EudGFyZ2V0PXRoaXMsYi5jYWxsKHRoaXMsYSl9LmJpbmQodGhpcyksYi5fd3JhcHBlcj1jKSx0aGlzLl9hbmltYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihhLGMpfSxyZW1vdmVFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7dGhpcy5fYW5pbWF0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiJiZiLl93cmFwcGVyfHxiKX0sX3JlbW92ZUNoaWxkQW5pbWF0aW9uczpmdW5jdGlvbigpe2Zvcig7dGhpcy5fY2hpbGRBbmltYXRpb25zLmxlbmd0aDspdGhpcy5fY2hpbGRBbmltYXRpb25zLnBvcCgpLmNhbmNlbCgpfSxfZm9yRWFjaENoaWxkOmZ1bmN0aW9uKGIpe3ZhciBjPTA7aWYodGhpcy5lZmZlY3QuY2hpbGRyZW4mJnRoaXMuX2NoaWxkQW5pbWF0aW9ucy5sZW5ndGg8dGhpcy5lZmZlY3QuY2hpbGRyZW4ubGVuZ3RoJiZ0aGlzLl9jb25zdHJ1Y3RDaGlsZEFuaW1hdGlvbnMoKSx0aGlzLl9jaGlsZEFuaW1hdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNhbGwodGhpcyxhLGMpLHRoaXMuZWZmZWN0IGluc3RhbmNlb2Ygd2luZG93LlNlcXVlbmNlRWZmZWN0JiYoYys9YS5lZmZlY3QuYWN0aXZlRHVyYXRpb24pfS5iaW5kKHRoaXMpKSwicGVuZGluZyIhPXRoaXMucGxheVN0YXRlKXt2YXIgZD10aGlzLmVmZmVjdC5fdGltaW5nLGU9dGhpcy5jdXJyZW50VGltZTtudWxsIT09ZSYmKGU9YS5jYWxjdWxhdGVUaW1lRnJhY3Rpb24oYS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihkKSxlLGQpKSwobnVsbD09ZXx8aXNOYU4oZSkpJiZ0aGlzLl9yZW1vdmVDaGlsZEFuaW1hdGlvbnMoKX19fSx3aW5kb3cuQW5pbWF0aW9uPWIuQW5pbWF0aW9ufShjLGUsZiksZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYil7dGhpcy5fZnJhbWVzPWEubm9ybWFsaXplS2V5ZnJhbWVzKGIpfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9ITE7aS5sZW5ndGg7KXt2YXIgYj1pLnNoaWZ0KCk7Yi5fdXBkYXRlQ2hpbGRyZW4oKSxhPSEwfXJldHVybiBhfXZhciBmPWZ1bmN0aW9uKGEpe2lmKGEuX2FuaW1hdGlvbj12b2lkIDAsYSBpbnN0YW5jZW9mIHdpbmRvdy5TZXF1ZW5jZUVmZmVjdHx8YSBpbnN0YW5jZW9mIHdpbmRvdy5Hcm91cEVmZmVjdClmb3IodmFyIGI9MDtiPGEuY2hpbGRyZW4ubGVuZ3RoO2IrKylmKGEuY2hpbGRyZW5bYl0pfTtiLnJlbW92ZU11bHRpPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY107ZC5fcGFyZW50PygtMT09Yi5pbmRleE9mKGQuX3BhcmVudCkmJmIucHVzaChkLl9wYXJlbnQpLGQuX3BhcmVudC5jaGlsZHJlbi5zcGxpY2UoZC5fcGFyZW50LmNoaWxkcmVuLmluZGV4T2YoZCksMSksZC5fcGFyZW50PW51bGwsZihkKSk6ZC5fYW5pbWF0aW9uJiZkLl9hbmltYXRpb24uZWZmZWN0PT1kJiYoZC5fYW5pbWF0aW9uLmNhbmNlbCgpLGQuX2FuaW1hdGlvbi5lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KG51bGwsW10pLGQuX2FuaW1hdGlvbi5fY2FsbGJhY2smJihkLl9hbmltYXRpb24uX2NhbGxiYWNrLl9hbmltYXRpb249bnVsbCksZC5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpLGYoZCkpfWZvcihjPTA7YzxiLmxlbmd0aDtjKyspYltjXS5fcmVidWlsZCgpfSxiLktleWZyYW1lRWZmZWN0PWZ1bmN0aW9uKGIsYyxlLGYpe3JldHVybiB0aGlzLnRhcmdldD1iLHRoaXMuX3BhcmVudD1udWxsLGU9YS5udW1lcmljVGltaW5nVG9PYmplY3QoZSksdGhpcy5fdGltaW5nSW5wdXQ9YS5jbG9uZVRpbWluZ0lucHV0KGUpLHRoaXMuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGUpLHRoaXMudGltaW5nPWEubWFrZVRpbWluZyhlLCExLHRoaXMpLHRoaXMudGltaW5nLl9lZmZlY3Q9dGhpcywiZnVuY3Rpb24iPT10eXBlb2YgYz8oYS5kZXByZWNhdGVkKCJDdXN0b20gS2V5ZnJhbWVFZmZlY3QiLCIyMDE1LTA2LTIyIiwiVXNlIEtleWZyYW1lRWZmZWN0Lm9uc2FtcGxlIGluc3RlYWQuIiksdGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcz1jKTp0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzPW5ldyBkKGMpLHRoaXMuX2tleWZyYW1lcz1jLHRoaXMuYWN0aXZlRHVyYXRpb249YS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbih0aGlzLl90aW1pbmcpLHRoaXMuX2lkPWYsdGhpc30sYi5LZXlmcmFtZUVmZmVjdC5wcm90b3R5cGU9e2dldEZyYW1lczpmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLl9ub3JtYWxpemVkS2V5ZnJhbWVzP3RoaXMuX25vcm1hbGl6ZWRLZXlmcmFtZXM6dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcy5fZnJhbWVzfSxzZXQgb25zYW1wbGUoYSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZ2V0RnJhbWVzKCkpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nIG9uc2FtcGxlIG9uIGN1c3RvbSBlZmZlY3QgS2V5ZnJhbWVFZmZlY3QgaXMgbm90IHN1cHBvcnRlZC4iKTt0aGlzLl9vbnNhbXBsZT1hLHRoaXMuX2FuaW1hdGlvbiYmdGhpcy5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpfSxnZXQgcGFyZW50KCl7cmV0dXJuIHRoaXMuX3BhcmVudH0sY2xvbmU6ZnVuY3Rpb24oKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5nZXRGcmFtZXMoKSl0aHJvdyBuZXcgRXJyb3IoIkNsb25pbmcgY3VzdG9tIGVmZmVjdHMgaXMgbm90IHN1cHBvcnRlZC4iKTt2YXIgYj1uZXcgS2V5ZnJhbWVFZmZlY3QodGhpcy50YXJnZXQsW10sYS5jbG9uZVRpbWluZ0lucHV0KHRoaXMuX3RpbWluZ0lucHV0KSx0aGlzLl9pZCk7cmV0dXJuIGIuX25vcm1hbGl6ZWRLZXlmcmFtZXM9dGhpcy5fbm9ybWFsaXplZEtleWZyYW1lcyxiLl9rZXlmcmFtZXM9dGhpcy5fa2V5ZnJhbWVzLGJ9LHJlbW92ZTpmdW5jdGlvbigpe2IucmVtb3ZlTXVsdGkoW3RoaXNdKX19O3ZhciBnPUVsZW1lbnQucHJvdG90eXBlLmFuaW1hdGU7RWxlbWVudC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihhLGMpe3ZhciBkPSIiO3JldHVybiBjJiZjLmlkJiYoZD1jLmlkKSxiLnRpbWVsaW5lLl9wbGF5KG5ldyBiLktleWZyYW1lRWZmZWN0KHRoaXMsYSxjLGQpKX07dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iik7Yi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9YS50YXJnZXR8fGgsYz1hLl9rZXlmcmFtZXM7ImZ1bmN0aW9uIj09dHlwZW9mIGMmJihjPVtdKTt2YXIgZD1hLl90aW1pbmdJbnB1dDtkLmlkPWEuX2lkfWVsc2UgdmFyIGI9aCxjPVtdLGQ9MDtyZXR1cm4gZy5hcHBseShiLFtjLGRdKX0sYi5iaW5kQW5pbWF0aW9uRm9yS2V5ZnJhbWVFZmZlY3Q9ZnVuY3Rpb24oYSl7YS5lZmZlY3QmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLmVmZmVjdC5fbm9ybWFsaXplZEtleWZyYW1lcyYmYi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0KGEpfTt2YXIgaT1bXTtiLmF3YWl0U3RhcnRUaW1lPWZ1bmN0aW9uKGEpe251bGw9PT1hLnN0YXJ0VGltZSYmYS5faXNHcm91cCYmKDA9PWkubGVuZ3RoJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZSksaS5wdXNoKGEpKX07dmFyIGo9d2luZG93LmdldENvbXB1dGVkU3R5bGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywiZ2V0Q29tcHV0ZWRTdHlsZSIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmZ1bmN0aW9uKCl7d2luZG93LmRvY3VtZW50LnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKTt2YXIgYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZSgpJiYoYT1qLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksd2luZG93LmRvY3VtZW50LnRpbWVsaW5lLl91cGRhdGVBbmltYXRpb25zUHJvbWlzZXMoKSxhfX0pLHdpbmRvdy5LZXlmcmFtZUVmZmVjdD1iLktleWZyYW1lRWZmZWN0LHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBbmltYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LnRpbWVsaW5lLmdldEFuaW1hdGlvbnMoKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPT1hLmVmZmVjdCYmYS5lZmZlY3QudGFyZ2V0PT10aGlzfS5iaW5kKHRoaXMpKX19KGMsZSxmKSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXthLl9yZWdpc3RlcmVkfHwoYS5fcmVnaXN0ZXJlZD0hMCxnLnB1c2goYSksaHx8KGg9ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKGUpKSl9ZnVuY3Rpb24gZShhKXt2YXIgYj1nO2c9W10sYi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuX3NlcXVlbmNlTnVtYmVyLWIuX3NlcXVlbmNlTnVtYmVyfSksYj1iLmZpbHRlcihmdW5jdGlvbihhKXthKCk7dmFyIGI9YS5fYW5pbWF0aW9uP2EuX2FuaW1hdGlvbi5wbGF5U3RhdGU6ImlkbGUiO3JldHVybiJydW5uaW5nIiE9YiYmInBlbmRpbmciIT1iJiYoYS5fcmVnaXN0ZXJlZD0hMSksYS5fcmVnaXN0ZXJlZH0pLGcucHVzaC5hcHBseShnLGIpLGcubGVuZ3RoPyhoPSEwLHJlcXVlc3RBbmltYXRpb25GcmFtZShlKSk6aD0hMX12YXIgZj0oZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2IiksMCk7Yi5iaW5kQW5pbWF0aW9uRm9yQ3VzdG9tRWZmZWN0PWZ1bmN0aW9uKGIpe3ZhciBjLGU9Yi5lZmZlY3QudGFyZ2V0LGc9ImZ1bmN0aW9uIj09dHlwZW9mIGIuZWZmZWN0LmdldEZyYW1lcygpO2M9Zz9iLmVmZmVjdC5nZXRGcmFtZXMoKTpiLmVmZmVjdC5fb25zYW1wbGU7dmFyIGg9Yi5lZmZlY3QudGltaW5nLGk9bnVsbDtoPWEubm9ybWFsaXplVGltaW5nSW5wdXQoaCk7dmFyIGo9ZnVuY3Rpb24oKXt2YXIgZD1qLl9hbmltYXRpb24/ai5fYW5pbWF0aW9uLmN1cnJlbnRUaW1lOm51bGw7bnVsbCE9PWQmJihkPWEuY2FsY3VsYXRlVGltZUZyYWN0aW9uKGEuY2FsY3VsYXRlQWN0aXZlRHVyYXRpb24oaCksZCxoKSxpc05hTihkKSYmKGQ9bnVsbCkpLGQhPT1pJiYoZz9jKGQsZSxiLmVmZmVjdCk6YyhkLGIuZWZmZWN0LGIuZWZmZWN0Ll9hbmltYXRpb24pKSxpPWR9O2ouX2FuaW1hdGlvbj1iLGouX3JlZ2lzdGVyZWQ9ITEsai5fc2VxdWVuY2VOdW1iZXI9ZisrLGIuX2NhbGxiYWNrPWosZChqKX07dmFyIGc9W10saD0hMTtiLkFuaW1hdGlvbi5wcm90b3R5cGUuX3JlZ2lzdGVyPWZ1bmN0aW9uKCl7dGhpcy5fY2FsbGJhY2smJmQodGhpcy5fY2FsbGJhY2spfX0oYyxlLGYpLGZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiBhLl90aW1pbmcuZGVsYXkrYS5hY3RpdmVEdXJhdGlvbithLl90aW1pbmcuZW5kRGVsYXl9ZnVuY3Rpb24gZShiLGMsZCl7dGhpcy5faWQ9ZCx0aGlzLl9wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPWJ8fFtdLHRoaXMuX3JlcGFyZW50KHRoaXMuY2hpbGRyZW4pLGM9YS5udW1lcmljVGltaW5nVG9PYmplY3QoYyksdGhpcy5fdGltaW5nSW5wdXQ9YS5jbG9uZVRpbWluZ0lucHV0KGMpLHRoaXMuX3RpbWluZz1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMsITApLHRoaXMudGltaW5nPWEubWFrZVRpbWluZyhjLCEwLHRoaXMpLHRoaXMudGltaW5nLl9lZmZlY3Q9dGhpcywiYXV0byI9PT10aGlzLl90aW1pbmcuZHVyYXRpb24mJih0aGlzLl90aW1pbmcuZHVyYXRpb249dGhpcy5hY3RpdmVEdXJhdGlvbil9d2luZG93LlNlcXVlbmNlRWZmZWN0PWZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHdpbmRvdy5Hcm91cEVmZmVjdD1mdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLnByb3RvdHlwZT17X2lzQW5jZXN0b3I6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXRoaXM7bnVsbCE9PWI7KXtpZihiPT1hKXJldHVybiEwO2I9Yi5fcGFyZW50fXJldHVybiExfSxfcmVidWlsZDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzO2E7KSJhdXRvIj09PWEudGltaW5nLmR1cmF0aW9uJiYoYS5fdGltaW5nLmR1cmF0aW9uPWEuYWN0aXZlRHVyYXRpb24pLGE9YS5fcGFyZW50O3RoaXMuX2FuaW1hdGlvbiYmdGhpcy5fYW5pbWF0aW9uLl9yZWJ1aWxkVW5kZXJseWluZ0FuaW1hdGlvbigpfSxfcmVwYXJlbnQ6ZnVuY3Rpb24oYSl7Yi5yZW1vdmVNdWx0aShhKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylhW2NdLl9wYXJlbnQ9dGhpc30sX3B1dENoaWxkOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWI/IkNhbm5vdCBhcHBlbmQgYW4gYW5jZXN0b3Igb3Igc2VsZiI6IkNhbm5vdCBwcmVwZW5kIGFuIGFuY2VzdG9yIG9yIHNlbGYiLGQ9MDtkPGEubGVuZ3RoO2QrKylpZih0aGlzLl9pc0FuY2VzdG9yKGFbZF0pKXRocm93e3R5cGU6RE9NRXhjZXB0aW9uLkhJRVJBUkNIWV9SRVFVRVNUX0VSUixuYW1lOiJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiLG1lc3NhZ2U6Y307Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspYj90aGlzLmNoaWxkcmVuLnB1c2goYVtkXSk6dGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFbZF0pO3RoaXMuX3JlcGFyZW50KGEpLHRoaXMuX3JlYnVpbGQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7dGhpcy5fcHV0Q2hpbGQoYXJndW1lbnRzLCEwKX0scHJlcGVuZDpmdW5jdGlvbigpe3RoaXMuX3B1dENoaWxkKGFyZ3VtZW50cywhMSl9LGdldCBwYXJlbnQoKXtyZXR1cm4gdGhpcy5fcGFyZW50fSxnZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLmNoaWxkcmVuLmxlbmd0aD90aGlzLmNoaWxkcmVuWzBdOm51bGx9LGdldCBsYXN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aC0xXTpudWxsfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgYj1hLmNsb25lVGltaW5nSW5wdXQodGhpcy5fdGltaW5nSW5wdXQpLGM9W10sZD0wO2Q8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZCsrKWMucHVzaCh0aGlzLmNoaWxkcmVuW2RdLmNsb25lKCkpO3JldHVybiB0aGlzIGluc3RhbmNlb2YgR3JvdXBFZmZlY3Q/bmV3IEdyb3VwRWZmZWN0KGMsYik6bmV3IFNlcXVlbmNlRWZmZWN0KGMsYil9LHJlbW92ZTpmdW5jdGlvbigpe2IucmVtb3ZlTXVsdGkoW3RoaXNdKX19LHdpbmRvdy5TZXF1ZW5jZUVmZmVjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5TZXF1ZW5jZUVmZmVjdC5wcm90b3R5cGUsImFjdGl2ZUR1cmF0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2ErPWQoYil9KSxNYXRoLm1heChhLDApfX0pLHdpbmRvdy5Hcm91cEVmZmVjdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdy5Hcm91cEVmZmVjdC5wcm90b3R5cGUsImFjdGl2ZUR1cmF0aW9uIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gdGhpcy5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2E9TWF0aC5tYXgoYSxkKGIpKX0pLGF9fSksYi5uZXdVbmRlcmx5aW5nQW5pbWF0aW9uRm9yR3JvdXA9ZnVuY3Rpb24oYyl7dmFyIGQsZT1udWxsLGY9ZnVuY3Rpb24oYil7dmFyIGM9ZC5fd3JhcHBlcjtyZXR1cm4gYyYmInBlbmRpbmciIT1jLnBsYXlTdGF0ZSYmYy5lZmZlY3Q/bnVsbD09Yj92b2lkIGMuX3JlbW92ZUNoaWxkQW5pbWF0aW9ucygpOjA9PWImJmMucGxheWJhY2tSYXRlPDAmJihlfHwoZT1hLm5vcm1hbGl6ZVRpbWluZ0lucHV0KGMuZWZmZWN0LnRpbWluZykpLGI9YS5jYWxjdWxhdGVUaW1lRnJhY3Rpb24oYS5jYWxjdWxhdGVBY3RpdmVEdXJhdGlvbihlKSwtMSxlKSxpc05hTihiKXx8bnVsbD09Yik/KGMuX2ZvckVhY2hDaGlsZChmdW5jdGlvbihhKXthLmN1cnJlbnRUaW1lPS0xfSksdm9pZCBjLl9yZW1vdmVDaGlsZEFuaW1hdGlvbnMoKSk6dm9pZCAwOnZvaWQgMH0sZz1uZXcgS2V5ZnJhbWVFZmZlY3QobnVsbCxbXSxjLl90aW1pbmcsYy5faWQpO3JldHVybiBnLm9uc2FtcGxlPWYsZD1iLnRpbWVsaW5lLl9wbGF5KGcpfSxiLmJpbmRBbmltYXRpb25Gb3JHcm91cD1mdW5jdGlvbihhKXthLl9hbmltYXRpb24uX3dyYXBwZXI9YSxhLl9pc0dyb3VwPSEwLGIuYXdhaXRTdGFydFRpbWUoYSksYS5fY29uc3RydWN0Q2hpbGRBbmltYXRpb25zKCksYS5fc2V0RXh0ZXJuYWxBbmltYXRpb24oYSl9LGIuZ3JvdXBDaGlsZER1cmF0aW9uPWR9KGMsZSxmKSxiWyJ0cnVlIl09YX0oe30sZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSk7CgovKioKQGxpY2Vuc2UgQG5vY29tcGlsZQpDb3B5cmlnaHQgKGMpIDIwMTggVGhlIFBvbHltZXIgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0ClRoZSBjb21wbGV0ZSBzZXQgb2YgYXV0aG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0FVVEhPUlMudHh0ClRoZSBjb21wbGV0ZSBzZXQgb2YgY29udHJpYnV0b3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQ09OVFJJQlVUT1JTLnR4dApDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwpzdWJqZWN0IHRvIGFuIGFkZGl0aW9uYWwgSVAgcmlnaHRzIGdyYW50IGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9QQVRFTlRTLnR4dAoqLwooZnVuY3Rpb24oKXsvKgoKIENvcHlyaWdodCAoYykgMjAxNiBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8KJ3VzZSBzdHJpY3QnO3ZhciBuLHA9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdz09PXRoaXM/dGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmbnVsbCE9Z2xvYmFsP2dsb2JhbDp0aGlzLGFhPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oYSxiLGMpe2EhPUFycmF5LnByb3RvdHlwZSYmYSE9T2JqZWN0LnByb3RvdHlwZSYmKGFbYl09Yy52YWx1ZSl9O2Z1bmN0aW9uIGJhKCl7YmE9ZnVuY3Rpb24oKXt9O3AuU3ltYm9sfHwocC5TeW1ib2w9Y2EpfXZhciBjYT1mdW5jdGlvbigpe3ZhciBhPTA7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiJqc2NvbXBfc3ltYm9sXyIrKGJ8fCIiKSthKyt9fSgpOwpmdW5jdGlvbiBkYSgpe2JhKCk7dmFyIGE9cC5TeW1ib2wuaXRlcmF0b3I7YXx8KGE9cC5TeW1ib2wuaXRlcmF0b3I9cC5TeW1ib2woIml0ZXJhdG9yIikpOyJmdW5jdGlvbiIhPXR5cGVvZiBBcnJheS5wcm90b3R5cGVbYV0mJmFhKEFycmF5LnByb3RvdHlwZSxhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZWEodGhpcyl9fSk7ZGE9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIGVhKGEpe3ZhciBiPTA7cmV0dXJuIGZhKGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19KX1mdW5jdGlvbiBmYShhKXtkYSgpO2E9e25leHQ6YX07YVtwLlN5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307cmV0dXJuIGF9ZnVuY3Rpb24gaWEoYSl7ZGEoKTt2YXIgYj1hW1N5bWJvbC5pdGVyYXRvcl07cmV0dXJuIGI/Yi5jYWxsKGEpOmVhKGEpfQpmdW5jdGlvbiBqYShhKXtmb3IodmFyIGIsYz1bXTshKGI9YS5uZXh0KCkpLmRvbmU7KWMucHVzaChiLnZhbHVlKTtyZXR1cm4gY30KKGZ1bmN0aW9uKCl7aWYoIWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7YS5pbml0RXZlbnQoImZvbyIsITAsITApO2EucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYS5kZWZhdWx0UHJldmVudGVkfSgpKXt2YXIgYT1FdmVudC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ7RXZlbnQucHJvdG90eXBlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxhYmxlJiYoYS5jYWxsKHRoaXMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJkZWZhdWx0UHJldmVudGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITB9LGNvbmZpZ3VyYWJsZTohMH0pKX19dmFyIGI9L1RyaWRlbnQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoIXdpbmRvdy5DdXN0b21FdmVudHx8YiYmImZ1bmN0aW9uIiE9PXR5cGVvZiB3aW5kb3cuQ3VzdG9tRXZlbnQpd2luZG93LkN1c3RvbUV2ZW50PWZ1bmN0aW9uKGEsYil7Yj1ifHx7fTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTsKYy5pbml0Q3VzdG9tRXZlbnQoYSwhIWIuYnViYmxlcywhIWIuY2FuY2VsYWJsZSxiLmRldGFpbCk7cmV0dXJuIGN9LHdpbmRvdy5DdXN0b21FdmVudC5wcm90b3R5cGU9d2luZG93LkV2ZW50LnByb3RvdHlwZTtpZighd2luZG93LkV2ZW50fHxiJiYiZnVuY3Rpb24iIT09dHlwZW9mIHdpbmRvdy5FdmVudCl7dmFyIGM9d2luZG93LkV2ZW50O3dpbmRvdy5FdmVudD1mdW5jdGlvbihhLGIpe2I9Ynx8e307dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7Yy5pbml0RXZlbnQoYSwhIWIuYnViYmxlcywhIWIuY2FuY2VsYWJsZSk7cmV0dXJuIGN9O2lmKGMpZm9yKHZhciBkIGluIGMpd2luZG93LkV2ZW50W2RdPWNbZF07d2luZG93LkV2ZW50LnByb3RvdHlwZT1jLnByb3RvdHlwZX1pZighd2luZG93Lk1vdXNlRXZlbnR8fGImJiJmdW5jdGlvbiIhPT10eXBlb2Ygd2luZG93Lk1vdXNlRXZlbnQpe2I9d2luZG93Lk1vdXNlRXZlbnQ7d2luZG93Lk1vdXNlRXZlbnQ9ZnVuY3Rpb24oYSwKYil7Yj1ifHx7fTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO2MuaW5pdE1vdXNlRXZlbnQoYSwhIWIuYnViYmxlcywhIWIuY2FuY2VsYWJsZSxiLnZpZXd8fHdpbmRvdyxiLmRldGFpbCxiLnNjcmVlblgsYi5zY3JlZW5ZLGIuY2xpZW50WCxiLmNsaWVudFksYi5jdHJsS2V5LGIuYWx0S2V5LGIuc2hpZnRLZXksYi5tZXRhS2V5LGIuYnV0dG9uLGIucmVsYXRlZFRhcmdldCk7cmV0dXJuIGN9O2lmKGIpZm9yKGQgaW4gYil3aW5kb3cuTW91c2VFdmVudFtkXT1iW2RdO3dpbmRvdy5Nb3VzZUV2ZW50LnByb3RvdHlwZT1iLnByb3RvdHlwZX1BcnJheS5mcm9tfHwoQXJyYXkuZnJvbT1mdW5jdGlvbihhKXtyZXR1cm5bXS5zbGljZS5jYWxsKGEpfSk7T2JqZWN0LmFzc2lnbnx8KE9iamVjdC5hc3NpZ249ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSksZD0wLGU7ZDxjLmxlbmd0aDtkKyspaWYoZT1jW2RdKWZvcih2YXIgZj0KYSxtPWUscT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhtKSx4PTA7eDxxLmxlbmd0aDt4KyspZT1xW3hdLGZbZV09bVtlXTtyZXR1cm4gYX0pfSkod2luZG93LldlYkNvbXBvbmVudHMpOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9ZnVuY3Rpb24gYihhLGIpe2lmKCFhLmNoaWxkTm9kZXMubGVuZ3RoKXJldHVybltdO3N3aXRjaChhLm5vZGVUeXBlKXtjYXNlIE5vZGUuRE9DVU1FTlRfTk9ERTpyZXR1cm4gdWEuY2FsbChhLGIpO2Nhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOnJldHVybiBsYi5jYWxsKGEsYik7ZGVmYXVsdDpyZXR1cm4gVS5jYWxsKGEsYil9fXZhciBjPSJ1bmRlZmluZWQiPT09dHlwZW9mIEhUTUxUZW1wbGF0ZUVsZW1lbnQsZD0hKGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5jbG9uZU5vZGUoKWluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCksZT0hMTsvVHJpZGVudC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSYmZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7aWYoYSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpZm9yKHZhciBkO2Q9YS5maXJzdENoaWxkOyljLmNhbGwodGhpcyxkLGIpO2Vsc2UgYy5jYWxsKHRoaXMsCmEsYik7cmV0dXJuIGF9ZT0hMDt2YXIgYj1Ob2RlLnByb3RvdHlwZS5jbG9uZU5vZGU7Tm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlPWZ1bmN0aW9uKGEpe2E9Yi5jYWxsKHRoaXMsYSk7dGhpcyBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQmJihhLl9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSk7cmV0dXJuIGF9O0RvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw9SFRNTEVsZW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGw7RG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3Rvcj1IVE1MRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvcjtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSx7bm9kZVR5cGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREV9LGNvbmZpZ3VyYWJsZTohMH0sbG9jYWxOYW1lOntnZXQ6ZnVuY3Rpb24oKXt9LApjb25maWd1cmFibGU6ITB9LG5vZGVOYW1lOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iI2RvY3VtZW50LWZyYWdtZW50In0sY29uZmlndXJhYmxlOiEwfX0pO3ZhciBjPU5vZGUucHJvdG90eXBlLmluc2VydEJlZm9yZTtOb2RlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9YTt2YXIgZD1Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZDtOb2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbihiKXtiIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD9hLmNhbGwodGhpcyxiLG51bGwpOmQuY2FsbCh0aGlzLGIpO3JldHVybiBifTt2YXIgZj1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxnPU5vZGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZDtOb2RlLnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQ9ZnVuY3Rpb24oYixjKXtiIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD8oYS5jYWxsKHRoaXMsYixjKSxmLmNhbGwodGhpcyxjKSk6Zy5jYWxsKHRoaXMsYixjKTtyZXR1cm4gY307RG9jdW1lbnQucHJvdG90eXBlLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQ9CmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jcmVhdGVFbGVtZW50KCJkZiIpO2EuX19wcm90b19fPURvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlO3JldHVybiBhfTt2YXIgaD1Eb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZTtEb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZT1mdW5jdGlvbihhLGIpe2I9aC5jYWxsKHRoaXMsYSxifHwhMSk7YSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQmJihiLl9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSk7cmV0dXJuIGJ9fSgpO3ZhciBmPU5vZGUucHJvdG90eXBlLmNsb25lTm9kZSxnPURvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50LGg9RG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGUsaz1Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxsPU5vZGUucHJvdG90eXBlLmFwcGVuZENoaWxkLG09Tm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkLHE9RE9NUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZyb21TdHJpbmcsCng9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3cuSFRNTEVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKXx8e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlubmVySFRNTH0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuaW5uZXJIVE1MPWF9fSxNPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93Lk5vZGUucHJvdG90eXBlLCJjaGlsZE5vZGVzIil8fHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfX0sVT1FbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLHVhPURvY3VtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsLGxiPURvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3JBbGwsbWI9ZnVuY3Rpb24oKXtpZighYyl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKSxiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Yi5jb250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKYS5jb250ZW50LmFwcGVuZENoaWxkKGIpO2E9YS5jbG9uZU5vZGUoITApO3JldHVybiAwPT09YS5jb250ZW50LmNoaWxkTm9kZXMubGVuZ3RofHwwPT09YS5jb250ZW50LmZpcnN0Q2hpbGQuY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aHx8ZH19KCk7aWYoYyl7dmFyIFM9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJ0ZW1wbGF0ZSIpLEM9ITAsVj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO1YudGV4dENvbnRlbnQ9InRlbXBsYXRle2Rpc3BsYXk6bm9uZTt9Ijt2YXIgaGE9ZG9jdW1lbnQuaGVhZDtoYS5pbnNlcnRCZWZvcmUoVixoYS5maXJzdEVsZW1lbnRDaGlsZCk7YS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShIVE1MRWxlbWVudC5wcm90b3R5cGUpO3ZhciB2YT0hZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikuaGFzT3duUHJvcGVydHkoImlubmVySFRNTCIpO2EuRz1mdW5jdGlvbihiKXtpZighYi5jb250ZW50JiZiLm5hbWVzcGFjZVVSST09PQpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJKXtiLmNvbnRlbnQ9Uy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Zm9yKHZhciBjO2M9Yi5maXJzdENoaWxkOylsLmNhbGwoYi5jb250ZW50LGMpO2lmKHZhKWIuX19wcm90b19fPWEucHJvdG90eXBlO2Vsc2UgaWYoYi5jbG9uZU5vZGU9ZnVuY3Rpb24oYil7cmV0dXJuIGEuYSh0aGlzLGIpfSxDKXRyeXtQKGIpLFcoYil9Y2F0Y2goVGcpe0M9ITF9YS5DKGIuY29udGVudCl9fTt2YXIgWD17b3B0aW9uOlsic2VsZWN0Il0sdGhlYWQ6WyJ0YWJsZSJdLGNvbDpbImNvbGdyb3VwIiwidGFibGUiXSx0cjpbInRib2R5IiwidGFibGUiXSx0aDpbInRyIiwidGJvZHkiLCJ0YWJsZSJdLHRkOlsidHIiLCJ0Ym9keSIsInRhYmxlIl19LFA9ZnVuY3Rpb24oYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGIsImlubmVySFRNTCIse2dldDpmdW5jdGlvbigpe3JldHVybiBuYih0aGlzKX0sc2V0OmZ1bmN0aW9uKGIpe3ZhciBjPVhbKC88KFthLXpdW14vXDA+XHgyMFx0XHJcblxmXSspL2kuZXhlYyhiKXx8ClsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCldO2lmKGMpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYj0iPCIrY1tkXSsiPiIrYisiPC8iK2NbZF0rIj4iO1MuYm9keS5pbm5lckhUTUw9Yjtmb3IoYS5DKFMpO3RoaXMuY29udGVudC5maXJzdENoaWxkOylrLmNhbGwodGhpcy5jb250ZW50LHRoaXMuY29udGVudC5maXJzdENoaWxkKTtiPVMuYm9keTtpZihjKWZvcihkPTA7ZDxjLmxlbmd0aDtkKyspYj1iLmxhc3RDaGlsZDtmb3IoO2IuZmlyc3RDaGlsZDspbC5jYWxsKHRoaXMuY29udGVudCxiLmZpcnN0Q2hpbGQpfSxjb25maWd1cmFibGU6ITB9KX0sVz1mdW5jdGlvbihhKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwib3V0ZXJIVE1MIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjx0ZW1wbGF0ZT4iK3RoaXMuaW5uZXJIVE1MKyI8L3RlbXBsYXRlPiJ9LHNldDpmdW5jdGlvbihhKXtpZih0aGlzLnBhcmVudE5vZGUpe1MuYm9keS5pbm5lckhUTUw9YTtmb3IoYT10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1MuYm9keS5maXJzdENoaWxkOylsLmNhbGwoYSwKUy5ib2R5LmZpcnN0Q2hpbGQpO20uY2FsbCh0aGlzLnBhcmVudE5vZGUsYSx0aGlzKX1lbHNlIHRocm93IEVycm9yKCJGYWlsZWQgdG8gc2V0IHRoZSAnb3V0ZXJIVE1MJyBwcm9wZXJ0eSBvbiAnRWxlbWVudCc6IFRoaXMgZWxlbWVudCBoYXMgbm8gcGFyZW50IG5vZGUuIik7fSxjb25maWd1cmFibGU6ITB9KX07UChhLnByb3RvdHlwZSk7VyhhLnByb3RvdHlwZSk7YS5DPWZ1bmN0aW9uKGMpe2M9YihjLCJ0ZW1wbGF0ZSIpO2Zvcih2YXIgZD0wLGU9Yy5sZW5ndGgsZjtkPGUmJihmPWNbZF0pO2QrKylhLkcoZil9O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGZ1bmN0aW9uKCl7YS5DKGRvY3VtZW50KX0pO0RvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKCl7dmFyIGI9Zy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7InRlbXBsYXRlIj09PWIubG9jYWxOYW1lJiZhLkcoYik7cmV0dXJuIGJ9O0RPTVBhcnNlci5wcm90b3R5cGUucGFyc2VGcm9tU3RyaW5nPQpmdW5jdGlvbigpe3ZhciBiPXEuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EuQyhiKTtyZXR1cm4gYn07T2JqZWN0LmRlZmluZVByb3BlcnR5KEhUTUxFbGVtZW50LnByb3RvdHlwZSwiaW5uZXJIVE1MIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5iKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYil7eC5zZXQuY2FsbCh0aGlzLGIpO2EuQyh0aGlzKX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KTt2YXIgVmU9L1smXHUwMEEwIl0vZyx5Yz0vWyZcdTAwQTA8Pl0vZyx6Yz1mdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAiJiI6cmV0dXJuIiZhbXA7IjtjYXNlICI8IjpyZXR1cm4iJmx0OyI7Y2FzZSAiPiI6cmV0dXJuIiZndDsiO2Nhc2UgJyInOnJldHVybiImcXVvdDsiO2Nhc2UgIlx1MDBhMCI6cmV0dXJuIiZuYnNwOyJ9fTtWPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPTA7YzxhLmxlbmd0aDtjKyspYlthW2NdXT0hMDtyZXR1cm4gYn07dmFyIFdlPVYoImFyZWEgYmFzZSBiciBjb2wgY29tbWFuZCBlbWJlZCBociBpbWcgaW5wdXQga2V5Z2VuIGxpbmsgbWV0YSBwYXJhbSBzb3VyY2UgdHJhY2sgd2JyIi5zcGxpdCgiICIpKSwKWGU9Vigic3R5bGUgc2NyaXB0IHhtcCBpZnJhbWUgbm9lbWJlZCBub2ZyYW1lcyBwbGFpbnRleHQgbm9zY3JpcHQiLnNwbGl0KCIgIikpLG5iPWZ1bmN0aW9uKGEsYil7InRlbXBsYXRlIj09PWEubG9jYWxOYW1lJiYoYT1hLmNvbnRlbnQpO2Zvcih2YXIgYz0iIixkPWI/YihhKTpNLmdldC5jYWxsKGEpLGU9MCxmPWQubGVuZ3RoLGc7ZTxmJiYoZz1kW2VdKTtlKyspe2E6e3ZhciBoPWc7dmFyIGs9YTt2YXIgbD1iO3N3aXRjaChoLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmZvcih2YXIgUD1oLmxvY2FsTmFtZSxtPSI8IitQLFc9aC5hdHRyaWJ1dGVzLHE9MDtrPVdbcV07cSsrKW0rPSIgIitrLm5hbWUrJz0iJytrLnZhbHVlLnJlcGxhY2UoVmUsemMpKyciJzttKz0iPiI7aD1XZVtQXT9tOm0rbmIoaCxsKSsiPC8iK1ArIj4iO2JyZWFrIGE7Y2FzZSBOb2RlLlRFWFRfTk9ERTpoPWguZGF0YTtoPWsmJlhlW2subG9jYWxOYW1lXT9oOmgucmVwbGFjZSh5Yyx6Yyk7YnJlYWsgYTsKY2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpoPSJceDNjIS0tIitoLmRhdGErIi0tXHgzZSI7YnJlYWsgYTtkZWZhdWx0OnRocm93IHdpbmRvdy5jb25zb2xlLmVycm9yKGgpLEVycm9yKCJub3QgaW1wbGVtZW50ZWQiKTt9fWMrPWh9cmV0dXJuIGN9fWlmKGN8fG1iKXthLmE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1mLmNhbGwoYSwhMSk7dGhpcy5HJiZ0aGlzLkcoYyk7YiYmKGwuY2FsbChjLmNvbnRlbnQsZi5jYWxsKGEuY29udGVudCwhMCkpLG9iKGMuY29udGVudCxhLmNvbnRlbnQpKTtyZXR1cm4gY307dmFyIG9iPWZ1bmN0aW9uKGMsZCl7aWYoZC5xdWVyeVNlbGVjdG9yQWxsJiYoZD1iKGQsInRlbXBsYXRlIiksMCE9PWQubGVuZ3RoKSl7Yz1iKGMsInRlbXBsYXRlIik7Zm9yKHZhciBlPTAsZj1jLmxlbmd0aCxnLGg7ZTxmO2UrKyloPWRbZV0sZz1jW2VdLGEmJmEuRyYmYS5HKGgpLG0uY2FsbChnLnBhcmVudE5vZGUsWWUuY2FsbChoLCEwKSxnKX19LFllPU5vZGUucHJvdG90eXBlLmNsb25lTm9kZT0KZnVuY3Rpb24oYil7aWYoIWUmJmQmJnRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KWlmKGIpdmFyIGM9WmUuY2FsbCh0aGlzLm93bmVyRG9jdW1lbnQsdGhpcywhMCk7ZWxzZSByZXR1cm4gdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtlbHNlIHRoaXMubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmInRlbXBsYXRlIj09PXRoaXMubG9jYWxOYW1lJiZ0aGlzLm5hbWVzcGFjZVVSST09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST9jPWEuYSh0aGlzLGIpOmM9Zi5jYWxsKHRoaXMsYik7YiYmb2IoYyx0aGlzKTtyZXR1cm4gY30sWmU9RG9jdW1lbnQucHJvdG90eXBlLmltcG9ydE5vZGU9ZnVuY3Rpb24oYyxkKXtkPWR8fCExO2lmKCJ0ZW1wbGF0ZSI9PT1jLmxvY2FsTmFtZSlyZXR1cm4gYS5hKGMsZCk7dmFyIGU9aC5jYWxsKHRoaXMsYyxkKTtpZihkKXtvYihlLGMpO2M9YihlLCdzY3JpcHQ6bm90KFt0eXBlXSksc2NyaXB0W3R5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiXSxzY3JpcHRbdHlwZT0idGV4dC9qYXZhc2NyaXB0Il0nKTsKZm9yKHZhciBmLGs9MDtrPGMubGVuZ3RoO2srKyl7Zj1jW2tdO2Q9Zy5jYWxsKGRvY3VtZW50LCJzY3JpcHQiKTtkLnRleHRDb250ZW50PWYudGV4dENvbnRlbnQ7Zm9yKHZhciBsPWYuYXR0cmlidXRlcyxQPTAsVztQPGwubGVuZ3RoO1ArKylXPWxbUF0sZC5zZXRBdHRyaWJ1dGUoVy5uYW1lLFcudmFsdWUpO20uY2FsbChmLnBhcmVudE5vZGUsZCxmKX19cmV0dXJuIGV9fWMmJih3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudD1hKX0pKCk7dmFyIGthPXNldFRpbWVvdXQ7ZnVuY3Rpb24gbGEoKXt9ZnVuY3Rpb24gbWEoYSxiKXtyZXR1cm4gZnVuY3Rpb24oKXthLmFwcGx5KGIsYXJndW1lbnRzKX19ZnVuY3Rpb24gcihhKXtpZighKHRoaXMgaW5zdGFuY2VvZiByKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGEpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90IGEgZnVuY3Rpb24iKTt0aGlzLnU9MDt0aGlzLm1hPSExO3RoaXMuaD12b2lkIDA7dGhpcy5JPVtdO25hKGEsdGhpcyl9CmZ1bmN0aW9uIG9hKGEsYil7Zm9yKDszPT09YS51OylhPWEuaDswPT09YS51P2EuSS5wdXNoKGIpOihhLm1hPSEwLHBhKGZ1bmN0aW9uKCl7dmFyIGM9MT09PWEudT9iLk5hOmIuT2E7aWYobnVsbD09PWMpKDE9PT1hLnU/cWE6cmEpKGIuZ2EsYS5oKTtlbHNle3RyeXt2YXIgZD1jKGEuaCl9Y2F0Y2goZSl7cmEoYi5nYSxlKTtyZXR1cm59cWEoYi5nYSxkKX19KSl9ZnVuY3Rpb24gcWEoYSxiKXt0cnl7aWYoYj09PWEpdGhyb3cgbmV3IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4iKTtpZihiJiYoIm9iamVjdCI9PT10eXBlb2YgYnx8ImZ1bmN0aW9uIj09PXR5cGVvZiBiKSl7dmFyIGM9Yi50aGVuO2lmKGIgaW5zdGFuY2VvZiByKXthLnU9MzthLmg9YjtzYShhKTtyZXR1cm59aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjKXtuYShtYShjLGIpLGEpO3JldHVybn19YS51PTE7YS5oPWI7c2EoYSl9Y2F0Y2goZCl7cmEoYSxkKX19CmZ1bmN0aW9uIHJhKGEsYil7YS51PTI7YS5oPWI7c2EoYSl9ZnVuY3Rpb24gc2EoYSl7Mj09PWEudSYmMD09PWEuSS5sZW5ndGgmJnBhKGZ1bmN0aW9uKCl7YS5tYXx8InVuZGVmaW5lZCIhPT10eXBlb2YgY29uc29sZSYmY29uc29sZSYmY29uc29sZS53YXJuKCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246IixhLmgpfSk7Zm9yKHZhciBiPTAsYz1hLkkubGVuZ3RoO2I8YztiKyspb2EoYSxhLklbYl0pO2EuST1udWxsfWZ1bmN0aW9uIHRhKGEsYixjKXt0aGlzLk5hPSJmdW5jdGlvbiI9PT10eXBlb2YgYT9hOm51bGw7dGhpcy5PYT0iZnVuY3Rpb24iPT09dHlwZW9mIGI/YjpudWxsO3RoaXMuZ2E9Y31mdW5jdGlvbiBuYShhLGIpe3ZhciBjPSExO3RyeXthKGZ1bmN0aW9uKGEpe2N8fChjPSEwLHFhKGIsYSkpfSxmdW5jdGlvbihhKXtjfHwoYz0hMCxyYShiLGEpKX0pfWNhdGNoKGQpe2N8fChjPSEwLHJhKGIsZCkpfX0Kci5wcm90b3R5cGVbImNhdGNoIl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGEpfTtyLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IHRoaXMuY29uc3RydWN0b3IobGEpO29hKHRoaXMsbmV3IHRhKGEsYixjKSk7cmV0dXJuIGN9O3IucHJvdG90eXBlWyJmaW5hbGx5Il09ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb25zdHJ1Y3RvcjtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKGMpe3JldHVybiBiLnJlc29sdmUoYSgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGN9KX0sZnVuY3Rpb24oYyl7cmV0dXJuIGIucmVzb2x2ZShhKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYi5yZWplY3QoYyl9KX0pfTsKZnVuY3Rpb24gd2EoYSl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGIsYyl7ZnVuY3Rpb24gZChhLGcpe3RyeXtpZihnJiYoIm9iamVjdCI9PT10eXBlb2YgZ3x8ImZ1bmN0aW9uIj09PXR5cGVvZiBnKSl7dmFyIGg9Zy50aGVuO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgaCl7aC5jYWxsKGcsZnVuY3Rpb24oYil7ZChhLGIpfSxjKTtyZXR1cm59fWVbYV09ZzswPT09LS1mJiZiKGUpfWNhdGNoKG0pe2MobSl9fWlmKCFhfHwidW5kZWZpbmVkIj09PXR5cGVvZiBhLmxlbmd0aCl0aHJvdyBuZXcgVHlwZUVycm9yKCJQcm9taXNlLmFsbCBhY2NlcHRzIGFuIGFycmF5Iik7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYSk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBiKFtdKTtmb3IodmFyIGY9ZS5sZW5ndGgsZz0wO2c8ZS5sZW5ndGg7ZysrKWQoZyxlW2ddKX0pfQpmdW5jdGlvbiB4YShhKXtyZXR1cm4gYSYmIm9iamVjdCI9PT10eXBlb2YgYSYmYS5jb25zdHJ1Y3Rvcj09PXI/YTpuZXcgcihmdW5jdGlvbihiKXtiKGEpfSl9ZnVuY3Rpb24geWEoYSl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGIsYyl7YyhhKX0pfWZ1bmN0aW9uIHphKGEpe3JldHVybiBuZXcgcihmdW5jdGlvbihiLGMpe2Zvcih2YXIgZD0wLGU9YS5sZW5ndGg7ZDxlO2QrKylhW2RdLnRoZW4oYixjKX0pfXZhciBwYT0iZnVuY3Rpb24iPT09dHlwZW9mIHNldEltbWVkaWF0ZSYmZnVuY3Rpb24oYSl7c2V0SW1tZWRpYXRlKGEpfXx8ZnVuY3Rpb24oYSl7a2EoYSwwKX07LyoKCkNvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CkNvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCnN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCmlmKCF3aW5kb3cuUHJvbWlzZSl7d2luZG93LlByb21pc2U9cjtyLnByb3RvdHlwZS50aGVuPXIucHJvdG90eXBlLnRoZW47ci5hbGw9d2E7ci5yYWNlPXphO3IucmVzb2x2ZT14YTtyLnJlamVjdD15YTt2YXIgQWE9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpLEJhPVtdOyhuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbigpe2Zvcih2YXIgYT1CYS5sZW5ndGgsYj0wO2I8YTtiKyspQmFbYl0oKTtCYS5zcGxpY2UoMCxhKX0pKS5vYnNlcnZlKEFhLHtjaGFyYWN0ZXJEYXRhOiEwfSk7cGE9ZnVuY3Rpb24oYSl7QmEucHVzaChhKTtBYS50ZXh0Q29udGVudD0wPEFhLnRleHRDb250ZW50Lmxlbmd0aD8iIjoiYSJ9fTsoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGIpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LkN1c3RvbUV2ZW50KXJldHVybiBuZXcgQ3VzdG9tRXZlbnQoYSxiKTt2YXIgYz1kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKTtjLmluaXRDdXN0b21FdmVudChhLCEhYi5idWJibGVzLCEhYi5jYW5jZWxhYmxlLGIuZGV0YWlsKTtyZXR1cm4gY31mdW5jdGlvbiBjKGEpe2lmKE0pcmV0dXJuIGEub3duZXJEb2N1bWVudCE9PWRvY3VtZW50P2Eub3duZXJEb2N1bWVudDpudWxsO3ZhciBiPWEuX19pbXBvcnREb2M7aWYoIWImJmEucGFyZW50Tm9kZSl7Yj1hLnBhcmVudE5vZGU7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiLmNsb3Nlc3QpYj1iLmNsb3Nlc3QoImxpbmtbcmVsPWltcG9ydF0iKTtlbHNlIGZvcig7IWgoYikmJihiPWIucGFyZW50Tm9kZSk7KTthLl9faW1wb3J0RG9jPWJ9cmV0dXJuIGJ9ZnVuY3Rpb24gZChhKXt2YXIgYj1tKGRvY3VtZW50LCJsaW5rW3JlbD1pbXBvcnRdOm5vdChbaW1wb3J0LWRlcGVuZGVuY3ldKSIpLApjPWIubGVuZ3RoO2M/cShiLGZ1bmN0aW9uKGIpe3JldHVybiBnKGIsZnVuY3Rpb24oKXswPT09LS1jJiZhKCl9KX0pOmEoKX1mdW5jdGlvbiBlKGEpe2Z1bmN0aW9uIGIoKXsibG9hZGluZyIhPT1kb2N1bWVudC5yZWFkeVN0YXRlJiZkb2N1bWVudC5ib2R5JiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsYiksYSgpKX1kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixiKTtiKCl9ZnVuY3Rpb24gZihhKXtlKGZ1bmN0aW9uKCl7cmV0dXJuIGQoZnVuY3Rpb24oKXtyZXR1cm4gYSYmYSgpfSl9KX1mdW5jdGlvbiBnKGEsYil7aWYoYS5fX2xvYWRlZCliJiZiKCk7ZWxzZSBpZigic2NyaXB0Ij09PWEubG9jYWxOYW1lJiYhYS5zcmN8fCJzdHlsZSI9PT1hLmxvY2FsTmFtZSYmIWEuZmlyc3RDaGlsZClhLl9fbG9hZGVkPSEwLGImJmIoKTtlbHNle3ZhciBjPWZ1bmN0aW9uKGQpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lcihkLnR5cGUsCmMpO2EuX19sb2FkZWQ9ITA7YiYmYigpfTthLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGMpO2hhJiYic3R5bGUiPT09YS5sb2NhbE5hbWV8fGEuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGMpfX1mdW5jdGlvbiBoKGEpe3JldHVybiBhLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJiJsaW5rIj09PWEubG9jYWxOYW1lJiYiaW1wb3J0Ij09PWEucmVsfWZ1bmN0aW9uIGsoKXt2YXIgYT10aGlzO3RoaXMuYT17fTt0aGlzLmI9MDt0aGlzLmM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGEuSmEoYil9KTt0aGlzLmMub2JzZXJ2ZShkb2N1bWVudC5oZWFkLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO3RoaXMubG9hZEltcG9ydHMoZG9jdW1lbnQpfWZ1bmN0aW9uIGwoYSl7cShtKGEsInRlbXBsYXRlIiksZnVuY3Rpb24oYSl7cShtKGEuY29udGVudCwnc2NyaXB0Om5vdChbdHlwZV0pLHNjcmlwdFt0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il0sc2NyaXB0W3R5cGU9InRleHQvamF2YXNjcmlwdCJdLHNjcmlwdFt0eXBlPSJtb2R1bGUiXScpLApmdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtxKGEuYXR0cmlidXRlcyxmdW5jdGlvbihhKXtyZXR1cm4gYi5zZXRBdHRyaWJ1dGUoYS5uYW1lLGEudmFsdWUpfSk7Yi50ZXh0Q29udGVudD1hLnRleHRDb250ZW50O2EucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYixhKX0pO2woYS5jb250ZW50KX0pfWZ1bmN0aW9uIG0oYSxiKXtyZXR1cm4gYS5jaGlsZE5vZGVzLmxlbmd0aD9hLnF1ZXJ5U2VsZWN0b3JBbGwoYik6VX1mdW5jdGlvbiBxKGEsYixjKXt2YXIgZD1hP2EubGVuZ3RoOjAsZT1jPy0xOjE7Zm9yKGM9Yz9kLTE6MDtjPGQmJjA8PWM7Yys9ZSliKGFbY10sYyl9dmFyIHg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLE09ImltcG9ydCJpbiB4LFU9eC5xdWVyeVNlbGVjdG9yQWxsKCIqIiksdWE9bnVsbDshMT09PSJjdXJyZW50U2NyaXB0ImluIGRvY3VtZW50JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsImN1cnJlbnRTY3JpcHQiLAp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHVhfHwoImNvbXBsZXRlIiE9PWRvY3VtZW50LnJlYWR5U3RhdGU/ZG9jdW1lbnQuc2NyaXB0c1tkb2N1bWVudC5zY3JpcHRzLmxlbmd0aC0xXTpudWxsKX0sY29uZmlndXJhYmxlOiEwfSk7dmFyIGxiPS8odXJsXCgpKFteKV0qKShcKSkvZyxtYj0vKEBpbXBvcnRbXHNdKyg/IXVybFwoKSkoW147XSopKDspL2csUz0vKDxsaW5rW14+XSopKHJlbD1bJ3wiXT9zdHlsZXNoZWV0Wyd8Il0/W14+XSo+KS9nLEM9e0VhOmZ1bmN0aW9uKGEsYil7YS5ocmVmJiZhLnNldEF0dHJpYnV0ZSgiaHJlZiIsQy5YKGEuZ2V0QXR0cmlidXRlKCJocmVmIiksYikpO2Euc3JjJiZhLnNldEF0dHJpYnV0ZSgic3JjIixDLlgoYS5nZXRBdHRyaWJ1dGUoInNyYyIpLGIpKTtpZigic3R5bGUiPT09YS5sb2NhbE5hbWUpe3ZhciBjPUMucWEoYS50ZXh0Q29udGVudCxiLGxiKTthLnRleHRDb250ZW50PUMucWEoYyxiLG1iKX19LHFhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5yZXBsYWNlKGMsCmZ1bmN0aW9uKGEsYyxkLGUpe2E9ZC5yZXBsYWNlKC9bIiddL2csIiIpO2ImJihhPUMuWChhLGIpKTtyZXR1cm4gYysiJyIrYSsiJyIrZX0pfSxYOmZ1bmN0aW9uKGEsYil7aWYodm9pZCAwPT09Qy5hYSl7Qy5hYT0hMTt0cnl7dmFyIGM9bmV3IFVSTCgiYiIsImh0dHA6Ly9hIik7Yy5wYXRobmFtZT0iYyUyMGQiO0MuYWE9Imh0dHA6Ly9hL2MlMjBkIj09PWMuaHJlZn1jYXRjaCh5Yyl7fX1pZihDLmFhKXJldHVybihuZXcgVVJMKGEsYikpLmhyZWY7Yz1DLnhhO2N8fChjPWRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgidGVtcCIpLEMueGE9YyxjLmphPWMuY3JlYXRlRWxlbWVudCgiYmFzZSIpLGMuaGVhZC5hcHBlbmRDaGlsZChjLmphKSxjLmlhPWMuY3JlYXRlRWxlbWVudCgiYSIpKTtjLmphLmhyZWY9YjtjLmlhLmhyZWY9YTtyZXR1cm4gYy5pYS5ocmVmfHxhfX0sVj17YXN5bmM6ITAsbG9hZDpmdW5jdGlvbihhLGIsYyl7aWYoYSlpZihhLm1hdGNoKC9eZGF0YTovKSl7YT0KYS5zcGxpdCgiLCIpO3ZhciBkPWFbMV07ZD0tMTxhWzBdLmluZGV4T2YoIjtiYXNlNjQiKT9hdG9iKGQpOmRlY29kZVVSSUNvbXBvbmVudChkKTtiKGQpfWVsc2V7dmFyIGU9bmV3IFhNTEh0dHBSZXF1ZXN0O2Uub3BlbigiR0VUIixhLFYuYXN5bmMpO2Uub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGE9ZS5yZXNwb25zZVVSTHx8ZS5nZXRSZXNwb25zZUhlYWRlcigiTG9jYXRpb24iKTthJiYwPT09YS5pbmRleE9mKCIvIikmJihhPShsb2NhdGlvbi5vcmlnaW58fGxvY2F0aW9uLnByb3RvY29sKyIvLyIrbG9jYXRpb24uaG9zdCkrYSk7dmFyIGQ9ZS5yZXNwb25zZXx8ZS5yZXNwb25zZVRleHQ7MzA0PT09ZS5zdGF0dXN8fDA9PT1lLnN0YXR1c3x8MjAwPD1lLnN0YXR1cyYmMzAwPmUuc3RhdHVzP2IoZCxhKTpjKGQpfTtlLnNlbmQoKX1lbHNlIGMoImVycm9yOiBocmVmIG11c3QgYmUgc3BlY2lmaWVkIil9fSxoYT0vVHJpZGVudC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KXx8L0VkZ2VcL1xkLi9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CmsucHJvdG90eXBlLmxvYWRJbXBvcnRzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7YT1tKGEsImxpbmtbcmVsPWltcG9ydF0iKTtxKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIuZyhhKX0pfTtrLnByb3RvdHlwZS5nPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1hLmhyZWY7aWYodm9pZCAwIT09dGhpcy5hW2NdKXt2YXIgZD10aGlzLmFbY107ZCYmZC5fX2xvYWRlZCYmKGEuX19pbXBvcnQ9ZCx0aGlzLmYoYSkpfWVsc2UgdGhpcy5iKyssdGhpcy5hW2NdPSJwZW5kaW5nIixWLmxvYWQoYyxmdW5jdGlvbihhLGQpe2E9Yi5LYShhLGR8fGMpO2IuYVtjXT1hO2IuYi0tO2IubG9hZEltcG9ydHMoYSk7Yi5sKCl9LGZ1bmN0aW9uKCl7Yi5hW2NdPW51bGw7Yi5iLS07Yi5sKCl9KX07ay5wcm90b3R5cGUuS2E9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO2hhJiYoYT1hLnJlcGxhY2UoUyxmdW5jdGlvbihhLGIsYyl7cmV0dXJuLTE9PT0KYS5pbmRleE9mKCJ0eXBlPSIpP2IrIiB0eXBlPWltcG9ydC1kaXNhYmxlICIrYzphfSkpO3ZhciBjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRlbXBsYXRlIik7Yy5pbm5lckhUTUw9YTtpZihjLmNvbnRlbnQpYT1jLmNvbnRlbnQsbChhKTtlbHNlIGZvcihhPWRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtjLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYy5maXJzdENoaWxkKTtpZihjPWEucXVlcnlTZWxlY3RvcigiYmFzZSIpKWI9Qy5YKGMuZ2V0QXR0cmlidXRlKCJocmVmIiksYiksYy5yZW1vdmVBdHRyaWJ1dGUoImhyZWYiKTtjPW0oYSwnbGlua1tyZWw9aW1wb3J0XSxsaW5rW3JlbD1zdHlsZXNoZWV0XVtocmVmXVt0eXBlPWltcG9ydC1kaXNhYmxlXSxzdHlsZTpub3QoW3R5cGVdKSxsaW5rW3JlbD1zdHlsZXNoZWV0XVtocmVmXTpub3QoW3R5cGVdKSxzY3JpcHQ6bm90KFt0eXBlXSksc2NyaXB0W3R5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiXSxzY3JpcHRbdHlwZT0idGV4dC9qYXZhc2NyaXB0Il0sc2NyaXB0W3R5cGU9Im1vZHVsZSJdJyk7CnZhciBkPTA7cShjLGZ1bmN0aW9uKGEpe2coYSk7Qy5FYShhLGIpO2Euc2V0QXR0cmlidXRlKCJpbXBvcnQtZGVwZW5kZW5jeSIsIiIpO2lmKCJzY3JpcHQiPT09YS5sb2NhbE5hbWUmJiFhLnNyYyYmYS50ZXh0Q29udGVudCl7aWYoIm1vZHVsZSI9PT1hLnR5cGUpdGhyb3cgRXJyb3IoIklubGluZSBtb2R1bGUgc2NyaXB0cyBhcmUgbm90IHN1cHBvcnRlZCBpbiBIVE1MIEltcG9ydHMuIik7YS5zZXRBdHRyaWJ1dGUoInNyYyIsImRhdGE6dGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmLTgsIitlbmNvZGVVUklDb21wb25lbnQoYS50ZXh0Q29udGVudCsoIlxuLy8jIHNvdXJjZVVSTD0iK2IrKGQ/Ii0iK2Q6IiIpKyIuanNcbiIpKSk7YS50ZXh0Q29udGVudD0iIjtkKyt9fSk7cmV0dXJuIGF9O2sucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2lmKCF0aGlzLmIpe3RoaXMuYy5kaXNjb25uZWN0KCk7dGhpcy5mbGF0dGVuKGRvY3VtZW50KTt2YXIgYj0hMSxjPSExLGQ9ZnVuY3Rpb24oKXtjJiYKYiYmKGEubG9hZEltcG9ydHMoZG9jdW1lbnQpLGEuYnx8KGEuYy5vYnNlcnZlKGRvY3VtZW50LmhlYWQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSksYS5kYSgpKSl9O3RoaXMuTWEoZnVuY3Rpb24oKXtjPSEwO2QoKX0pO3RoaXMuTGEoZnVuY3Rpb24oKXtiPSEwO2QoKX0pfX07ay5wcm90b3R5cGUuZmxhdHRlbj1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2E9bShhLCJsaW5rW3JlbD1pbXBvcnRdIik7cShhLGZ1bmN0aW9uKGEpe3ZhciBjPWIuYVthLmhyZWZdOyhhLl9faW1wb3J0PWMpJiZjLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYoYi5hW2EuaHJlZl09YSxhLnJlYWR5U3RhdGU9ImxvYWRpbmciLGEuX19pbXBvcnQ9YSxiLmZsYXR0ZW4oYyksYS5hcHBlbmRDaGlsZChjKSl9KX07ay5wcm90b3R5cGUuTGE9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihlKXtpZihlPGQpe3ZhciBmPWNbZV0saD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtmLnJlbW92ZUF0dHJpYnV0ZSgiaW1wb3J0LWRlcGVuZGVuY3kiKTsKcShmLmF0dHJpYnV0ZXMsZnVuY3Rpb24oYSl7cmV0dXJuIGguc2V0QXR0cmlidXRlKGEubmFtZSxhLnZhbHVlKX0pO3VhPWg7Zi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChoLGYpO2coaCxmdW5jdGlvbigpe3VhPW51bGw7YihlKzEpfSl9ZWxzZSBhKCl9dmFyIGM9bShkb2N1bWVudCwic2NyaXB0W2ltcG9ydC1kZXBlbmRlbmN5XSIpLGQ9Yy5sZW5ndGg7YigwKX07ay5wcm90b3R5cGUuTWE9ZnVuY3Rpb24oYSl7dmFyIGI9bShkb2N1bWVudCwic3R5bGVbaW1wb3J0LWRlcGVuZGVuY3ldLGxpbmtbcmVsPXN0eWxlc2hlZXRdW2ltcG9ydC1kZXBlbmRlbmN5XSIpLGQ9Yi5sZW5ndGg7aWYoZCl7dmFyIGU9aGEmJiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibGlua1tyZWw9c3R5bGVzaGVldF1baHJlZl1bdHlwZT1pbXBvcnQtZGlzYWJsZV0iKTtxKGIsZnVuY3Rpb24oYil7ZyhiLGZ1bmN0aW9uKCl7Yi5yZW1vdmVBdHRyaWJ1dGUoImltcG9ydC1kZXBlbmRlbmN5Iik7MD09PS0tZCYmCmEoKX0pO2lmKGUmJmIucGFyZW50Tm9kZSE9PWRvY3VtZW50LmhlYWQpe3ZhciBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYi5sb2NhbE5hbWUpO2YuX19hcHBsaWVkRWxlbWVudD1iO2Yuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaW1wb3J0LXBsYWNlaG9sZGVyIik7Yi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShmLGIubmV4dFNpYmxpbmcpO2ZvcihmPWMoYik7ZiYmYyhmKTspZj1jKGYpO2YucGFyZW50Tm9kZSE9PWRvY3VtZW50LmhlYWQmJihmPW51bGwpO2RvY3VtZW50LmhlYWQuaW5zZXJ0QmVmb3JlKGIsZik7Yi5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKX19KX1lbHNlIGEoKX07ay5wcm90b3R5cGUuZGE9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9bShkb2N1bWVudCwibGlua1tyZWw9aW1wb3J0XSIpO3EoYixmdW5jdGlvbihiKXtyZXR1cm4gYS5mKGIpfSwhMCl9O2sucHJvdG90eXBlLmY9ZnVuY3Rpb24oYSl7YS5fX2xvYWRlZHx8KGEuX19sb2FkZWQ9ITAsYS5pbXBvcnQmJihhLmltcG9ydC5yZWFkeVN0YXRlPQoiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoYihhLmltcG9ydD8ibG9hZCI6ImVycm9yIix7YnViYmxlczohMSxjYW5jZWxhYmxlOiExLGRldGFpbDp2b2lkIDB9KSkpfTtrLnByb3RvdHlwZS5KYT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3EoYSxmdW5jdGlvbihhKXtyZXR1cm4gcShhLmFkZGVkTm9kZXMsZnVuY3Rpb24oYSl7YSYmYS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYoaChhKT9iLmcoYSk6Yi5sb2FkSW1wb3J0cyhhKSl9KX0pfTt2YXIgdmE9bnVsbDtpZihNKXg9bShkb2N1bWVudCwibGlua1tyZWw9aW1wb3J0XSIpLHEoeCxmdW5jdGlvbihhKXthLmltcG9ydCYmImxvYWRpbmciPT09YS5pbXBvcnQucmVhZHlTdGF0ZXx8KGEuX19sb2FkZWQ9ITApfSkseD1mdW5jdGlvbihhKXthPWEudGFyZ2V0O2goYSkmJihhLl9fbG9hZGVkPSEwKX0sZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIseCwhMCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLAp4LCEwKTtlbHNle3ZhciBYPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTm9kZS5wcm90b3R5cGUsImJhc2VVUkkiKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoKCFYfHxYLmNvbmZpZ3VyYWJsZT9Ob2RlOkVsZW1lbnQpLnByb3RvdHlwZSwiYmFzZVVSSSIse2dldDpmdW5jdGlvbigpe3ZhciBhPWgodGhpcyk/dGhpczpjKHRoaXMpO3JldHVybiBhP2EuaHJlZjpYJiZYLmdldD9YLmdldC5jYWxsKHRoaXMpOihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJiYXNlIil8fHdpbmRvdy5sb2NhdGlvbikuaHJlZn0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoSFRNTExpbmtFbGVtZW50LnByb3RvdHlwZSwiaW1wb3J0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19pbXBvcnR8fG51bGx9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwfSk7ZShmdW5jdGlvbigpe3ZhPW5ldyBrfSl9ZihmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGIoIkhUTUxJbXBvcnRzTG9hZGVkIiwKe2NhbmNlbGFibGU6ITAsYnViYmxlczohMCxkZXRhaWw6dm9pZCAwfSkpfSk7YS51c2VOYXRpdmU9TTthLndoZW5SZWFkeT1mO2EuaW1wb3J0Rm9yRWxlbWVudD1jO2EubG9hZEltcG9ydHM9ZnVuY3Rpb24oYSl7dmEmJnZhLmxvYWRJbXBvcnRzKGEpfX0pKHdpbmRvdy5IVE1MSW1wb3J0cz13aW5kb3cuSFRNTEltcG9ydHN8fHt9KTsvKgoKIENvcHlyaWdodCAoYykgMjAxNCBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiBUaGlzIGNvZGUgbWF5IG9ubHkgYmUgdXNlZCB1bmRlciB0aGUgQlNEIHN0eWxlIGxpY2Vuc2UgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0xJQ0VOU0UudHh0CiBUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dAogVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CiBDb2RlIGRpc3RyaWJ1dGVkIGJ5IEdvb2dsZSBhcyBwYXJ0IG9mIHRoZSBwb2x5bWVyIHByb2plY3QgaXMgYWxzbwogc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8Kd2luZG93LldlYkNvbXBvbmVudHM9d2luZG93LldlYkNvbXBvbmVudHN8fHtmbGFnczp7fX07dmFyIENhPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3NjcmlwdFtzcmMqPSJ3ZWJjb21wb25lbnRzLWxpdGUuanMiXScpLERhPS93Yy0oLispLyx0PXt9O2lmKCF0Lm5vT3B0cyl7bG9jYXRpb24uc2VhcmNoLnNsaWNlKDEpLnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlvbihhKXthPWEuc3BsaXQoIj0iKTt2YXIgYjthWzBdJiYoYj1hWzBdLm1hdGNoKERhKSkmJih0W2JbMV1dPWFbMV18fCEwKX0pO2lmKENhKWZvcih2YXIgRWE9MCxGYT12b2lkIDA7RmE9Q2EuYXR0cmlidXRlc1tFYV07RWErKykic3JjIiE9PUZhLm5hbWUmJih0W0ZhLm5hbWVdPUZhLnZhbHVlfHwhMCk7aWYodC5sb2cmJnQubG9nLnNwbGl0KXt2YXIgR2E9dC5sb2cuc3BsaXQoIiwiKTt0LmxvZz17fTtHYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3QubG9nW2FdPSEwfSl9ZWxzZSB0LmxvZz17fX0Kd2luZG93LldlYkNvbXBvbmVudHMuZmxhZ3M9dDt2YXIgSGE9dC5zaGFkeWRvbTtIYSYmKHdpbmRvdy5TaGFkeURPTT13aW5kb3cuU2hhZHlET018fHt9LHdpbmRvdy5TaGFkeURPTS5mb3JjZT1IYSk7dmFyIElhPXQucmVnaXN0ZXJ8fHQuY2U7SWEmJndpbmRvdy5jdXN0b21FbGVtZW50cyYmKHdpbmRvdy5jdXN0b21FbGVtZW50cy5mb3JjZVBvbHlmaWxsPUlhKTsvKgoKQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBQb2x5bWVyIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KVGhpcyBjb2RlIG1heSBvbmx5IGJlIHVzZWQgdW5kZXIgdGhlIEJTRCBzdHlsZSBsaWNlbnNlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9MSUNFTlNFLnR4dApUaGUgY29tcGxldGUgc2V0IG9mIGF1dGhvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9BVVRIT1JTLnR4dApUaGUgY29tcGxldGUgc2V0IG9mIGNvbnRyaWJ1dG9ycyBtYXkgYmUgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL0NPTlRSSUJVVE9SUy50eHQKQ29kZSBkaXN0cmlidXRlZCBieSBHb29nbGUgYXMgcGFydCBvZiB0aGUgcG9seW1lciBwcm9qZWN0IGlzIGFsc28Kc3ViamVjdCB0byBhbiBhZGRpdGlvbmFsIElQIHJpZ2h0cyBncmFudCBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vUEFURU5UUy50eHQKKi8KZnVuY3Rpb24gSmEoKXt0aGlzLnBhPXRoaXMucm9vdD1udWxsO3RoaXMuVD0hMTt0aGlzLkQ9dGhpcy5QPXRoaXMuY2E9dGhpcy5hc3NpZ25lZFNsb3Q9dGhpcy5hc3NpZ25lZE5vZGVzPXRoaXMuSD1udWxsO3RoaXMuY2hpbGROb2Rlcz10aGlzLm5leHRTaWJsaW5nPXRoaXMucHJldmlvdXNTaWJsaW5nPXRoaXMubGFzdENoaWxkPXRoaXMuZmlyc3RDaGlsZD10aGlzLnBhcmVudE5vZGU9dGhpcy5LPXZvaWQgMDt0aGlzLmthPXRoaXMubGE9ITE7dGhpcy5PPXt9fUphLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57fX07ZnVuY3Rpb24gdShhKXthLl9fc2hhZHl8fChhLl9fc2hhZHk9bmV3IEphKTtyZXR1cm4gYS5fX3NoYWR5fWZ1bmN0aW9uIHYoYSl7cmV0dXJuIGEmJmEuX19zaGFkeX07dmFyIHc9d2luZG93LlNoYWR5RE9NfHx7fTt3LkdhPSEoIUVsZW1lbnQucHJvdG90eXBlLmF0dGFjaFNoYWRvd3x8IU5vZGUucHJvdG90eXBlLmdldFJvb3ROb2RlKTt2YXIgS2E9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiZmlyc3RDaGlsZCIpO3cubT0hIShLYSYmS2EuY29uZmlndXJhYmxlJiZLYS5nZXQpO3cuZWE9dy5mb3JjZXx8IXcuR2E7dy5KPXcubm9QYXRjaHx8ITE7dy5vYT13LnByZWZlclBlcmZvcm1hbmNlO2Z1bmN0aW9uIHkoYSl7cmV0dXJuKGE9dihhKSkmJnZvaWQgMCE9PWEuZmlyc3RDaGlsZH1mdW5jdGlvbiB6KGEpe3JldHVybiJTaGFkeVJvb3QiPT09YS56YX1mdW5jdGlvbiBMYShhKXtyZXR1cm4oYT0oYT12KGEpKSYmYS5yb290KSYmTWEoYSl9CnZhciBOYT1FbGVtZW50LnByb3RvdHlwZSxPYT1OYS5tYXRjaGVzfHxOYS5tYXRjaGVzU2VsZWN0b3J8fE5hLm1vek1hdGNoZXNTZWxlY3Rvcnx8TmEubXNNYXRjaGVzU2VsZWN0b3J8fE5hLm9NYXRjaGVzU2VsZWN0b3J8fE5hLndlYmtpdE1hdGNoZXNTZWxlY3RvcixQYT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIiksUWE9MCxSYT1bXTsobmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtmb3IoO1JhLmxlbmd0aDspdHJ5e1JhLnNoaWZ0KCkoKX1jYXRjaChhKXt0aHJvdyBQYS50ZXh0Q29udGVudD1RYSsrLGE7fX0pKS5vYnNlcnZlKFBhLHtjaGFyYWN0ZXJEYXRhOiEwfSk7ZnVuY3Rpb24gU2EoYSl7UmEucHVzaChhKTtQYS50ZXh0Q29udGVudD1RYSsrfXZhciBUYT0hIWRvY3VtZW50LmNvbnRhaW5zO2Z1bmN0aW9uIFVhKGEsYil7Zm9yKDtiOyl7aWYoYj09YSlyZXR1cm4hMDtiPWIuX19zaGFkeV9wYXJlbnROb2RlfXJldHVybiExfQpmdW5jdGlvbiBWYShhKXtmb3IodmFyIGI9YS5sZW5ndGgtMTswPD1iO2ItLSl7dmFyIGM9YVtiXSxkPWMuZ2V0QXR0cmlidXRlKCJpZCIpfHxjLmdldEF0dHJpYnV0ZSgibmFtZSIpO2QmJiJsZW5ndGgiIT09ZCYmaXNOYU4oZCkmJihhW2RdPWMpfWEuaXRlbT1mdW5jdGlvbihiKXtyZXR1cm4gYVtiXX07YS5uYW1lZEl0ZW09ZnVuY3Rpb24oYil7aWYoImxlbmd0aCIhPT1iJiZpc05hTihiKSYmYVtiXSlyZXR1cm4gYVtiXTtmb3IodmFyIGM9aWEoYSksZD1jLm5leHQoKTshZC5kb25lO2Q9Yy5uZXh0KCkpaWYoZD1kLnZhbHVlLChkLmdldEF0dHJpYnV0ZSgiaWQiKXx8ZC5nZXRBdHRyaWJ1dGUoIm5hbWUiKSk9PWIpcmV0dXJuIGQ7cmV0dXJuIG51bGx9O3JldHVybiBhfQpmdW5jdGlvbiBBKGEsYixjLGQpe2M9dm9pZCAwPT09Yz8iIjpjO2Zvcih2YXIgZSBpbiBiKXt2YXIgZj1iW2VdO2lmKCEoZCYmMDw9ZC5pbmRleE9mKGUpKSl7Zi5jb25maWd1cmFibGU9ITA7dmFyIGc9YytlO2lmKGYudmFsdWUpYVtnXT1mLnZhbHVlO2Vsc2UgdHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGcsZil9Y2F0Y2goaCl7fX19fWZ1bmN0aW9uIEIoYSl7dmFyIGI9e307T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSkuZm9yRWFjaChmdW5jdGlvbihjKXtiW2NdPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYSxjKX0pO3JldHVybiBifTt2YXIgV2E9W10sWGE7ZnVuY3Rpb24gWWEoYSl7WGF8fChYYT0hMCxTYShaYSkpO1dhLnB1c2goYSl9ZnVuY3Rpb24gWmEoKXtYYT0hMTtmb3IodmFyIGE9ISFXYS5sZW5ndGg7V2EubGVuZ3RoOylXYS5zaGlmdCgpKCk7cmV0dXJuIGF9WmEubGlzdD1XYTtmdW5jdGlvbiAkYSgpe3RoaXMuYT0hMTt0aGlzLmFkZGVkTm9kZXM9W107dGhpcy5yZW1vdmVkTm9kZXM9W107dGhpcy5TPW5ldyBTZXR9ZnVuY3Rpb24gYWIoYSl7YS5hfHwoYS5hPSEwLFNhKGZ1bmN0aW9uKCl7YS5mbHVzaCgpfSkpfSRhLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuYSl7dGhpcy5hPSExO3ZhciBhPXRoaXMudGFrZVJlY29yZHMoKTthLmxlbmd0aCYmdGhpcy5TLmZvckVhY2goZnVuY3Rpb24oYil7YihhKX0pfX07JGEucHJvdG90eXBlLnRha2VSZWNvcmRzPWZ1bmN0aW9uKCl7aWYodGhpcy5hZGRlZE5vZGVzLmxlbmd0aHx8dGhpcy5yZW1vdmVkTm9kZXMubGVuZ3RoKXt2YXIgYT1be2FkZGVkTm9kZXM6dGhpcy5hZGRlZE5vZGVzLHJlbW92ZWROb2Rlczp0aGlzLnJlbW92ZWROb2Rlc31dO3RoaXMuYWRkZWROb2Rlcz1bXTt0aGlzLnJlbW92ZWROb2Rlcz1bXTtyZXR1cm4gYX1yZXR1cm5bXX07CmZ1bmN0aW9uIGJiKGEsYil7dmFyIGM9dShhKTtjLkh8fChjLkg9bmV3ICRhKTtjLkguUy5hZGQoYik7dmFyIGQ9Yy5IO3JldHVybnt5YTpiLEY6ZCxBYTphLHRha2VSZWNvcmRzOmZ1bmN0aW9uKCl7cmV0dXJuIGQudGFrZVJlY29yZHMoKX19fWZ1bmN0aW9uIGNiKGEpe3ZhciBiPWEmJmEuRjtiJiYoYi5TLmRlbGV0ZShhLnlhKSxiLlMuc2l6ZXx8KHUoYS5BYSkuSD1udWxsKSl9CmZ1bmN0aW9uIGRiKGEsYil7dmFyIGM9Yi5nZXRSb290Tm9kZSgpO3JldHVybiBhLm1hcChmdW5jdGlvbihhKXt2YXIgYj1jPT09YS50YXJnZXQuZ2V0Um9vdE5vZGUoKTtpZihiJiZhLmFkZGVkTm9kZXMpe2lmKGI9QXJyYXkuZnJvbShhLmFkZGVkTm9kZXMpLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYz09PWEuZ2V0Um9vdE5vZGUoKX0pLGIubGVuZ3RoKXJldHVybiBhPU9iamVjdC5jcmVhdGUoYSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImFkZGVkTm9kZXMiLHt2YWx1ZTpiLGNvbmZpZ3VyYWJsZTohMH0pLGF9ZWxzZSBpZihiKXJldHVybiBhfSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhfSl9O3ZhciBlYj0vWyZcdTAwQTAiXS9nLGZiPS9bJlx1MDBBMDw+XS9nO2Z1bmN0aW9uIGdiKGEpe3N3aXRjaChhKXtjYXNlICImIjpyZXR1cm4iJmFtcDsiO2Nhc2UgIjwiOnJldHVybiImbHQ7IjtjYXNlICI+IjpyZXR1cm4iJmd0OyI7Y2FzZSAnIic6cmV0dXJuIiZxdW90OyI7Y2FzZSAiXHUwMGEwIjpyZXR1cm4iJm5ic3A7In19ZnVuY3Rpb24gaGIoYSl7Zm9yKHZhciBiPXt9LGM9MDtjPGEubGVuZ3RoO2MrKyliW2FbY11dPSEwO3JldHVybiBifXZhciBpYj1oYigiYXJlYSBiYXNlIGJyIGNvbCBjb21tYW5kIGVtYmVkIGhyIGltZyBpbnB1dCBrZXlnZW4gbGluayBtZXRhIHBhcmFtIHNvdXJjZSB0cmFjayB3YnIiLnNwbGl0KCIgIikpLGpiPWhiKCJzdHlsZSBzY3JpcHQgeG1wIGlmcmFtZSBub2VtYmVkIG5vZnJhbWVzIHBsYWludGV4dCBub3NjcmlwdCIuc3BsaXQoIiAiKSk7CmZ1bmN0aW9uIGtiKGEsYil7InRlbXBsYXRlIj09PWEubG9jYWxOYW1lJiYoYT1hLmNvbnRlbnQpO2Zvcih2YXIgYz0iIixkPWI/YihhKTphLmNoaWxkTm9kZXMsZT0wLGY9ZC5sZW5ndGgsZz12b2lkIDA7ZTxmJiYoZz1kW2VdKTtlKyspe2E6e3ZhciBoPWc7dmFyIGs9YSxsPWI7c3dpdGNoKGgubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6az1oLmxvY2FsTmFtZTtmb3IodmFyIG09IjwiK2sscT1oLmF0dHJpYnV0ZXMseD0wLE07TT1xW3hdO3grKyltKz0iICIrTS5uYW1lKyc9IicrTS52YWx1ZS5yZXBsYWNlKGViLGdiKSsnIic7bSs9Ij4iO2g9aWJba10/bTptK2tiKGgsbCkrIjwvIitrKyI+IjticmVhayBhO2Nhc2UgTm9kZS5URVhUX05PREU6aD1oLmRhdGE7aD1rJiZqYltrLmxvY2FsTmFtZV0/aDpoLnJlcGxhY2UoZmIsZ2IpO2JyZWFrIGE7Y2FzZSBOb2RlLkNPTU1FTlRfTk9ERTpoPSJceDNjIS0tIitoLmRhdGErIi0tXHgzZSI7YnJlYWsgYTtkZWZhdWx0OnRocm93IHdpbmRvdy5jb25zb2xlLmVycm9yKGgpLApFcnJvcigibm90IGltcGxlbWVudGVkIik7fX1jKz1ofXJldHVybiBjfTt2YXIgcGI9dy5tLHFiPXtxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3F1ZXJ5U2VsZWN0b3IoYSl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcXVlcnlTZWxlY3RvckFsbChhKX19LHJiPXt9O2Z1bmN0aW9uIHNiKGEpe3JiW2FdPWZ1bmN0aW9uKGIpe3JldHVybiBiWyJfX3NoYWR5X25hdGl2ZV8iK2FdfX1mdW5jdGlvbiB0YihhLGIpe0EoYSxiLCJfX3NoYWR5X25hdGl2ZV8iKTtmb3IodmFyIGMgaW4gYilzYihjKX1mdW5jdGlvbiBEKGEsYil7Yj12b2lkIDA9PT1iP1tdOmI7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY10sZT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGEsZCk7ZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX3NoYWR5X25hdGl2ZV8iK2QsZSksZS52YWx1ZT9xYltkXXx8KHFiW2RdPWUudmFsdWUpOnNiKGQpKX19CnZhciBFPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsTm9kZUZpbHRlci5TSE9XX0FMTCxudWxsLCExKSxGPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQsbnVsbCwhMSksdWI9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJpbmVydCIpO2Z1bmN0aW9uIHZiKGEpe2Zvcih2YXIgYjtiPWEuX19zaGFkeV9uYXRpdmVfZmlyc3RDaGlsZDspYS5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZChiKX12YXIgd2I9WyJmaXJzdEVsZW1lbnRDaGlsZCIsImxhc3RFbGVtZW50Q2hpbGQiLCJjaGlsZHJlbiIsImNoaWxkRWxlbWVudENvdW50Il0seGI9WyJxdWVyeVNlbGVjdG9yIiwicXVlcnlTZWxlY3RvckFsbCJdOwpmdW5jdGlvbiB5Yigpe3ZhciBhPVsiZGlzcGF0Y2hFdmVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIl07d2luZG93LkV2ZW50VGFyZ2V0P0Qod2luZG93LkV2ZW50VGFyZ2V0LnByb3RvdHlwZSxhKTooRChOb2RlLnByb3RvdHlwZSxhKSxEKFdpbmRvdy5wcm90b3R5cGUsYSkpO3BiP0QoTm9kZS5wcm90b3R5cGUsInBhcmVudE5vZGUgZmlyc3RDaGlsZCBsYXN0Q2hpbGQgcHJldmlvdXNTaWJsaW5nIG5leHRTaWJsaW5nIGNoaWxkTm9kZXMgcGFyZW50RWxlbWVudCB0ZXh0Q29udGVudCIuc3BsaXQoIiAiKSk6dGIoTm9kZS5wcm90b3R5cGUse3BhcmVudE5vZGU6e2dldDpmdW5jdGlvbigpe0UuY3VycmVudE5vZGU9dGhpcztyZXR1cm4gRS5wYXJlbnROb2RlKCl9fSxmaXJzdENoaWxkOntnZXQ6ZnVuY3Rpb24oKXtFLmN1cnJlbnROb2RlPXRoaXM7cmV0dXJuIEUuZmlyc3RDaGlsZCgpfX0sbGFzdENoaWxkOntnZXQ6ZnVuY3Rpb24oKXtFLmN1cnJlbnROb2RlPQp0aGlzO3JldHVybiBFLmxhc3RDaGlsZCgpfX0scHJldmlvdXNTaWJsaW5nOntnZXQ6ZnVuY3Rpb24oKXtFLmN1cnJlbnROb2RlPXRoaXM7cmV0dXJuIEUucHJldmlvdXNTaWJsaW5nKCl9fSxuZXh0U2libGluZzp7Z2V0OmZ1bmN0aW9uKCl7RS5jdXJyZW50Tm9kZT10aGlzO3JldHVybiBFLm5leHRTaWJsaW5nKCl9fSxjaGlsZE5vZGVzOntnZXQ6ZnVuY3Rpb24oKXt2YXIgYT1bXTtFLmN1cnJlbnROb2RlPXRoaXM7Zm9yKHZhciBjPUUuZmlyc3RDaGlsZCgpO2M7KWEucHVzaChjKSxjPUUubmV4dFNpYmxpbmcoKTtyZXR1cm4gYX19LHBhcmVudEVsZW1lbnQ6e2dldDpmdW5jdGlvbigpe0YuY3VycmVudE5vZGU9dGhpcztyZXR1cm4gRi5wYXJlbnROb2RlKCl9fSx0ZXh0Q29udGVudDp7Z2V0OmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Zm9yKHZhciBhPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIodGhpcywKTm9kZUZpbHRlci5TSE9XX1RFWFQsbnVsbCwhMSksYz0iIixkO2Q9YS5uZXh0Tm9kZSgpOyljKz1kLm5vZGVWYWx1ZTtyZXR1cm4gYztkZWZhdWx0OnJldHVybiB0aGlzLm5vZGVWYWx1ZX19LHNldDpmdW5jdGlvbihhKXtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBhfHxudWxsPT09YSlhPSIiO3N3aXRjaCh0aGlzLm5vZGVUeXBlKXtjYXNlIE5vZGUuRUxFTUVOVF9OT0RFOmNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOnZiKHRoaXMpOygwPGEubGVuZ3RofHx0aGlzLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpJiZ0aGlzLl9fc2hhZHlfbmF0aXZlX2luc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShhKSx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6dGhpcy5ub2RlVmFsdWU9YX19fX0pO0QoTm9kZS5wcm90b3R5cGUsImFwcGVuZENoaWxkIGluc2VydEJlZm9yZSByZW1vdmVDaGlsZCByZXBsYWNlQ2hpbGQgY2xvbmVOb2RlIGNvbnRhaW5zIi5zcGxpdCgiICIpKTsKYT17Zmlyc3RFbGVtZW50Q2hpbGQ6e2dldDpmdW5jdGlvbigpe0YuY3VycmVudE5vZGU9dGhpcztyZXR1cm4gRi5maXJzdENoaWxkKCl9fSxsYXN0RWxlbWVudENoaWxkOntnZXQ6ZnVuY3Rpb24oKXtGLmN1cnJlbnROb2RlPXRoaXM7cmV0dXJuIEYubGFzdENoaWxkKCl9fSxjaGlsZHJlbjp7Z2V0OmZ1bmN0aW9uKCl7dmFyIGE9W107Ri5jdXJyZW50Tm9kZT10aGlzO2Zvcih2YXIgYz1GLmZpcnN0Q2hpbGQoKTtjOylhLnB1c2goYyksYz1GLm5leHRTaWJsaW5nKCk7cmV0dXJuIFZhKGEpfX0sY2hpbGRFbGVtZW50Q291bnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkcmVuP3RoaXMuY2hpbGRyZW4ubGVuZ3RoOjB9fX07cGI/KEQoRWxlbWVudC5wcm90b3R5cGUsd2IpLEQoRWxlbWVudC5wcm90b3R5cGUsWyJwcmV2aW91c0VsZW1lbnRTaWJsaW5nIiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaW5uZXJIVE1MIl0pLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLAoiY2hpbGRyZW4iKSYmRChIVE1MRWxlbWVudC5wcm90b3R5cGUsWyJjaGlsZHJlbiJdKSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEhUTUxFbGVtZW50LnByb3RvdHlwZSwiaW5uZXJIVE1MIikmJkQoSFRNTEVsZW1lbnQucHJvdG90eXBlLFsiaW5uZXJIVE1MIl0pKToodGIoRWxlbWVudC5wcm90b3R5cGUsYSksdGIoRWxlbWVudC5wcm90b3R5cGUse3ByZXZpb3VzRWxlbWVudFNpYmxpbmc6e2dldDpmdW5jdGlvbigpe0YuY3VycmVudE5vZGU9dGhpcztyZXR1cm4gRi5wcmV2aW91c1NpYmxpbmcoKX19LG5leHRFbGVtZW50U2libGluZzp7Z2V0OmZ1bmN0aW9uKCl7Ri5jdXJyZW50Tm9kZT10aGlzO3JldHVybiBGLm5leHRTaWJsaW5nKCl9fSxpbm5lckhUTUw6e2dldDpmdW5jdGlvbigpe3JldHVybiBrYih0aGlzLGZ1bmN0aW9uKGEpe3JldHVybiBhLl9fc2hhZHlfbmF0aXZlX2NoaWxkTm9kZXN9KX0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPSJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZT8KdGhpcy5jb250ZW50OnRoaXM7dmIoYik7dmFyIGQ9dGhpcy5sb2NhbE5hbWV8fCJkaXYiO2Q9dGhpcy5uYW1lc3BhY2VVUkkmJnRoaXMubmFtZXNwYWNlVVJJIT09dWIubmFtZXNwYWNlVVJJP3ViLmNyZWF0ZUVsZW1lbnROUyh0aGlzLm5hbWVzcGFjZVVSSSxkKTp1Yi5jcmVhdGVFbGVtZW50KGQpO2QuaW5uZXJIVE1MPWE7Zm9yKGE9InRlbXBsYXRlIj09PXRoaXMubG9jYWxOYW1lP2QuY29udGVudDpkO2Q9YS5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkOyliLl9fc2hhZHlfbmF0aXZlX2luc2VydEJlZm9yZShkLHZvaWQgMCl9fX0pKTtEKEVsZW1lbnQucHJvdG90eXBlLCJzZXRBdHRyaWJ1dGUgZ2V0QXR0cmlidXRlIGhhc0F0dHJpYnV0ZSByZW1vdmVBdHRyaWJ1dGUgZm9jdXMgYmx1ciIuc3BsaXQoIiAiKSk7RChFbGVtZW50LnByb3RvdHlwZSx4Yik7RChIVE1MRWxlbWVudC5wcm90b3R5cGUsWyJmb2N1cyIsImJsdXIiLCJjb250YWlucyJdKTtwYiYmRChIVE1MRWxlbWVudC5wcm90b3R5cGUsClsicGFyZW50RWxlbWVudCIsImNoaWxkcmVuIiwiaW5uZXJIVE1MIl0pO3dpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50JiZEKHdpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50LnByb3RvdHlwZSxbImlubmVySFRNTCJdKTtwYj9EKERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLHdiKTp0YihEb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSxhKTtEKERvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLHhiKTtwYj8oRChEb2N1bWVudC5wcm90b3R5cGUsd2IpLEQoRG9jdW1lbnQucHJvdG90eXBlLFsiYWN0aXZlRWxlbWVudCJdKSk6dGIoRG9jdW1lbnQucHJvdG90eXBlLGEpO0QoRG9jdW1lbnQucHJvdG90eXBlLFsiaW1wb3J0Tm9kZSIsImdldEVsZW1lbnRCeUlkIl0pO0QoRG9jdW1lbnQucHJvdG90eXBlLHhiKX07dmFyIHpiPUIoe2dldCBjaGlsZE5vZGVzKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9jaGlsZE5vZGVzfSxnZXQgZmlyc3RDaGlsZCgpe3JldHVybiB0aGlzLl9fc2hhZHlfZmlyc3RDaGlsZH0sZ2V0IGxhc3RDaGlsZCgpe3JldHVybiB0aGlzLl9fc2hhZHlfbGFzdENoaWxkfSxnZXQgdGV4dENvbnRlbnQoKXtyZXR1cm4gdGhpcy5fX3NoYWR5X3RleHRDb250ZW50fSxzZXQgdGV4dENvbnRlbnQoYSl7dGhpcy5fX3NoYWR5X3RleHRDb250ZW50PWF9LGdldCBjaGlsZEVsZW1lbnRDb3VudCgpe3JldHVybiB0aGlzLl9fc2hhZHlfY2hpbGRFbGVtZW50Q291bnR9LGdldCBjaGlsZHJlbigpe3JldHVybiB0aGlzLl9fc2hhZHlfY2hpbGRyZW59LGdldCBmaXJzdEVsZW1lbnRDaGlsZCgpe3JldHVybiB0aGlzLl9fc2hhZHlfZmlyc3RFbGVtZW50Q2hpbGR9LGdldCBsYXN0RWxlbWVudENoaWxkKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9sYXN0RWxlbWVudENoaWxkfSxnZXQgaW5uZXJIVE1MKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9pbm5lckhUTUx9LApzZXQgaW5uZXJIVE1MKGEpe3JldHVybiB0aGlzLl9fc2hhZHlfaW5uZXJIVE1MPWF9LGdldCBzaGFkb3dSb290KCl7cmV0dXJuIHRoaXMuX19zaGFkeV9zaGFkb3dSb290fX0pLEFiPUIoe2dldCBwYXJlbnRFbGVtZW50KCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wYXJlbnRFbGVtZW50fSxnZXQgcGFyZW50Tm9kZSgpe3JldHVybiB0aGlzLl9fc2hhZHlfcGFyZW50Tm9kZX0sZ2V0IG5leHRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9uZXh0U2libGluZ30sZ2V0IHByZXZpb3VzU2libGluZygpe3JldHVybiB0aGlzLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nfSxnZXQgbmV4dEVsZW1lbnRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9uZXh0RWxlbWVudFNpYmxpbmd9LGdldCBwcmV2aW91c0VsZW1lbnRTaWJsaW5nKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9wcmV2aW91c0VsZW1lbnRTaWJsaW5nfSxnZXQgY2xhc3NOYW1lKCl7cmV0dXJuIHRoaXMuX19zaGFkeV9jbGFzc05hbWV9LApzZXQgY2xhc3NOYW1lKGEpe3JldHVybiB0aGlzLl9fc2hhZHlfY2xhc3NOYW1lPWF9fSksQmI7Zm9yKEJiIGluIHpiKXpiW0JiXS5lbnVtZXJhYmxlPSExO2Zvcih2YXIgQ2IgaW4gQWIpQWJbQ2JdLmVudW1lcmFibGU9ITE7dmFyIERiPXcubXx8dy5KLEViPURiP2Z1bmN0aW9uKCl7fTpmdW5jdGlvbihhKXt2YXIgYj11KGEpO2IubGF8fChiLmxhPSEwLEEoYSxBYikpfSxGYj1EYj9mdW5jdGlvbigpe306ZnVuY3Rpb24oYSl7dmFyIGI9dShhKTtiLmthfHwoYi5rYT0hMCxBKGEsemIpKX07dmFyIEdiPSJfX2V2ZW50V3JhcHBlcnMiK0RhdGUubm93KCksSGI9ZnVuY3Rpb24oKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV2ZW50LnByb3RvdHlwZSwiY29tcG9zZWQiKTtyZXR1cm4gYT9mdW5jdGlvbihiKXtyZXR1cm4gYS5nZXQuY2FsbChiKX06bnVsbH0oKSxJYj17Ymx1cjohMCxmb2N1czohMCxmb2N1c2luOiEwLGZvY3Vzb3V0OiEwLGNsaWNrOiEwLGRibGNsaWNrOiEwLG1vdXNlZG93bjohMCxtb3VzZWVudGVyOiEwLG1vdXNlbGVhdmU6ITAsbW91c2Vtb3ZlOiEwLG1vdXNlb3V0OiEwLG1vdXNlb3ZlcjohMCxtb3VzZXVwOiEwLHdoZWVsOiEwLGJlZm9yZWlucHV0OiEwLGlucHV0OiEwLGtleWRvd246ITAsa2V5dXA6ITAsY29tcG9zaXRpb25zdGFydDohMCxjb21wb3NpdGlvbnVwZGF0ZTohMCxjb21wb3NpdGlvbmVuZDohMCx0b3VjaHN0YXJ0OiEwLHRvdWNoZW5kOiEwLHRvdWNobW92ZTohMCx0b3VjaGNhbmNlbDohMCxwb2ludGVyb3ZlcjohMCwKcG9pbnRlcmVudGVyOiEwLHBvaW50ZXJkb3duOiEwLHBvaW50ZXJtb3ZlOiEwLHBvaW50ZXJ1cDohMCxwb2ludGVyY2FuY2VsOiEwLHBvaW50ZXJvdXQ6ITAscG9pbnRlcmxlYXZlOiEwLGdvdHBvaW50ZXJjYXB0dXJlOiEwLGxvc3Rwb2ludGVyY2FwdHVyZTohMCxkcmFnc3RhcnQ6ITAsZHJhZzohMCxkcmFnZW50ZXI6ITAsZHJhZ2xlYXZlOiEwLGRyYWdvdmVyOiEwLGRyb3A6ITAsZHJhZ2VuZDohMCxET01BY3RpdmF0ZTohMCxET01Gb2N1c0luOiEwLERPTUZvY3VzT3V0OiEwLGtleXByZXNzOiEwfSxKYj17RE9NQXR0ck1vZGlmaWVkOiEwLERPTUF0dHJpYnV0ZU5hbWVDaGFuZ2VkOiEwLERPTUNoYXJhY3RlckRhdGFNb2RpZmllZDohMCxET01FbGVtZW50TmFtZUNoYW5nZWQ6ITAsRE9NTm9kZUluc2VydGVkOiEwLERPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudDohMCxET01Ob2RlUmVtb3ZlZDohMCxET01Ob2RlUmVtb3ZlZEZyb21Eb2N1bWVudDohMCxET01TdWJ0cmVlTW9kaWZpZWQ6ITB9OwpmdW5jdGlvbiBLYihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIE5vZGU/YS5fX3NoYWR5X2dldFJvb3ROb2RlKCk6YX1mdW5jdGlvbiBMYihhLGIpe3ZhciBjPVtdLGQ9YTtmb3IoYT1LYihhKTtkOyljLnB1c2goZCksZC5fX3NoYWR5X2Fzc2lnbmVkU2xvdD9kPWQuX19zaGFkeV9hc3NpZ25lZFNsb3Q6ZC5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSYmZC5ob3N0JiYoYnx8ZCE9PWEpP2Q9ZC5ob3N0OmQ9ZC5fX3NoYWR5X3BhcmVudE5vZGU7Y1tjLmxlbmd0aC0xXT09PWRvY3VtZW50JiZjLnB1c2god2luZG93KTtyZXR1cm4gY31mdW5jdGlvbiBNYihhKXthLl9fY29tcG9zZWRQYXRofHwoYS5fX2NvbXBvc2VkUGF0aD1MYihhLnRhcmdldCwhMCkpO3JldHVybiBhLl9fY29tcG9zZWRQYXRofQpmdW5jdGlvbiBOYihhLGIpe2lmKCF6KXJldHVybiBhO2E9TGIoYSwhMCk7Zm9yKHZhciBjPTAsZCxlPXZvaWQgMCxmLGc9dm9pZCAwO2M8Yi5sZW5ndGg7YysrKWlmKGQ9YltjXSxmPUtiKGQpLGYhPT1lJiYoZz1hLmluZGV4T2YoZiksZT1mKSwheihmKXx8LTE8ZylyZXR1cm4gZH1mdW5jdGlvbiBPYihhKXtmdW5jdGlvbiBiKGIsZCl7Yj1uZXcgYShiLGQpO2IuX19jb21wb3NlZD1kJiYhIWQuY29tcG9zZWQ7cmV0dXJuIGJ9Yi5fX3Byb3RvX189YTtiLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gYn12YXIgUGI9e2ZvY3VzOiEwLGJsdXI6ITB9O2Z1bmN0aW9uIFFiKGEpe3JldHVybiBhLl9fdGFyZ2V0IT09YS50YXJnZXR8fGEuX19yZWxhdGVkVGFyZ2V0IT09YS5yZWxhdGVkVGFyZ2V0fQpmdW5jdGlvbiBSYihhLGIsYyl7aWYoYz1iLl9faGFuZGxlcnMmJmIuX19oYW5kbGVyc1thLnR5cGVdJiZiLl9faGFuZGxlcnNbYS50eXBlXVtjXSlmb3IodmFyIGQ9MCxlOyhlPWNbZF0pJiYoIVFiKGEpfHxhLnRhcmdldCE9PWEucmVsYXRlZFRhcmdldCkmJihlLmNhbGwoYixhKSwhYS5fX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCk7ZCsrKTt9CmZ1bmN0aW9uIFNiKGEpe3ZhciBiPWEuY29tcG9zZWRQYXRoKCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImN1cnJlbnRUYXJnZXQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sY29uZmlndXJhYmxlOiEwfSk7Zm9yKHZhciBjPWIubGVuZ3RoLTE7MDw9YztjLS0pe3ZhciBkPWJbY107UmIoYSxkLCJjYXB0dXJlIik7aWYoYS5aKXJldHVybn1PYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiZXZlbnRQaGFzZSIse2dldDpmdW5jdGlvbigpe3JldHVybiBFdmVudC5BVF9UQVJHRVR9fSk7dmFyIGU7Zm9yKGM9MDtjPGIubGVuZ3RoO2MrKyl7ZD1iW2NdO3ZhciBmPXYoZCk7Zj1mJiZmLnJvb3Q7aWYoMD09PWN8fGYmJmY9PT1lKWlmKFJiKGEsZCwiYnViYmxlIiksZCE9PXdpbmRvdyYmKGU9ZC5fX3NoYWR5X2dldFJvb3ROb2RlKCkpLGEuWilicmVha319CmZ1bmN0aW9uIFRiKGEsYixjLGQsZSxmKXtmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7dmFyIGg9YVtnXSxrPWgudHlwZSxsPWguY2FwdHVyZSxtPWgub25jZSxxPWgucGFzc2l2ZTtpZihiPT09aC5ub2RlJiZjPT09ayYmZD09PWwmJmU9PT1tJiZmPT09cSlyZXR1cm4gZ31yZXR1cm4tMX0KZnVuY3Rpb24gVWIoYSxiLGMpe2lmKGIpe3ZhciBkPXR5cGVvZiBiO2lmKCJmdW5jdGlvbiI9PT1kfHwib2JqZWN0Ij09PWQpaWYoIm9iamVjdCIhPT1kfHxiLmhhbmRsZUV2ZW50JiYiZnVuY3Rpb24iPT09dHlwZW9mIGIuaGFuZGxlRXZlbnQpe2lmKEpiW2FdKXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2FkZEV2ZW50TGlzdGVuZXIoYSxiLGMpO2lmKGMmJiJvYmplY3QiPT09dHlwZW9mIGMpe3ZhciBlPSEhYy5jYXB0dXJlO3ZhciBmPSEhYy5vbmNlO3ZhciBnPSEhYy5wYXNzaXZlfWVsc2UgZT0hIWMsZz1mPSExO3ZhciBoPWMmJmMuJHx8dGhpcyxrPWJbR2JdO2lmKGspe2lmKC0xPFRiKGssaCxhLGUsZixnKSlyZXR1cm59ZWxzZSBiW0diXT1bXTtrPWZ1bmN0aW9uKGUpe2YmJnRoaXMuX19zaGFkeV9yZW1vdmVFdmVudExpc3RlbmVyKGEsYixjKTtlLl9fdGFyZ2V0fHxWYihlKTtpZihoIT09dGhpcyl7dmFyIGc9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLCJjdXJyZW50VGFyZ2V0Iik7Ck9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJjdXJyZW50VGFyZ2V0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGNvbmZpZ3VyYWJsZTohMH0pfWUuX19wcmV2aW91c0N1cnJlbnRUYXJnZXQ9ZS5jdXJyZW50VGFyZ2V0O2lmKCF6KGgpfHwtMSE9ZS5jb21wb3NlZFBhdGgoKS5pbmRleE9mKGgpKWlmKGUuY29tcG9zZWR8fC0xPGUuY29tcG9zZWRQYXRoKCkuaW5kZXhPZihoKSlpZihRYihlKSYmZS50YXJnZXQ9PT1lLnJlbGF0ZWRUYXJnZXQpZS5ldmVudFBoYXNlPT09RXZlbnQuQlVCQkxJTkdfUEhBU0UmJmUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ZWxzZSBpZihlLmV2ZW50UGhhc2U9PT1FdmVudC5DQVBUVVJJTkdfUEhBU0V8fGUuYnViYmxlc3x8ZS50YXJnZXQ9PT1ofHxoIGluc3RhbmNlb2YgV2luZG93KXt2YXIgaz0iZnVuY3Rpb24iPT09ZD9iLmNhbGwoaCxlKTpiLmhhbmRsZUV2ZW50JiZiLmhhbmRsZUV2ZW50KGUpO2ghPT10aGlzJiYoZz8oT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsCiJjdXJyZW50VGFyZ2V0IixnKSxnPW51bGwpOmRlbGV0ZSBlLmN1cnJlbnRUYXJnZXQpO3JldHVybiBrfX07YltHYl0ucHVzaCh7bm9kZTpoLHR5cGU6YSxjYXB0dXJlOmUsb25jZTpmLHBhc3NpdmU6ZyxZYTprfSk7UGJbYV0/KHRoaXMuX19oYW5kbGVycz10aGlzLl9faGFuZGxlcnN8fHt9LHRoaXMuX19oYW5kbGVyc1thXT10aGlzLl9faGFuZGxlcnNbYV18fHtjYXB0dXJlOltdLGJ1YmJsZTpbXX0sdGhpcy5fX2hhbmRsZXJzW2FdW2U/ImNhcHR1cmUiOiJidWJibGUiXS5wdXNoKGspKTp0aGlzLl9fc2hhZHlfbmF0aXZlX2FkZEV2ZW50TGlzdGVuZXIoYSxrLGMpfX19CmZ1bmN0aW9uIFdiKGEsYixjKXtpZihiKXtpZihKYlthXSlyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9yZW1vdmVFdmVudExpc3RlbmVyKGEsYixjKTtpZihjJiYib2JqZWN0Ij09PXR5cGVvZiBjKXt2YXIgZD0hIWMuY2FwdHVyZTt2YXIgZT0hIWMub25jZTt2YXIgZj0hIWMucGFzc2l2ZX1lbHNlIGQ9ISFjLGY9ZT0hMTt2YXIgZz1jJiZjLiR8fHRoaXMsaD12b2lkIDA7dmFyIGs9bnVsbDt0cnl7az1iW0diXX1jYXRjaChsKXt9ayYmKGU9VGIoayxnLGEsZCxlLGYpLC0xPGUmJihoPWsuc3BsaWNlKGUsMSlbMF0uWWEsay5sZW5ndGh8fChiW0diXT12b2lkIDApKSk7dGhpcy5fX3NoYWR5X25hdGl2ZV9yZW1vdmVFdmVudExpc3RlbmVyKGEsaHx8YixjKTtoJiZQYlthXSYmdGhpcy5fX2hhbmRsZXJzJiZ0aGlzLl9faGFuZGxlcnNbYV0mJihhPXRoaXMuX19oYW5kbGVyc1thXVtkPyJjYXB0dXJlIjoiYnViYmxlIl0saD1hLmluZGV4T2YoaCksLTE8aCYmYS5zcGxpY2UoaCwxKSl9fQpmdW5jdGlvbiBYYigpe2Zvcih2YXIgYSBpbiBQYil3aW5kb3cuX19zaGFkeV9uYXRpdmVfYWRkRXZlbnRMaXN0ZW5lcihhLGZ1bmN0aW9uKGEpe2EuX190YXJnZXR8fChWYihhKSxTYihhKSl9LCEwKX0KdmFyIFliPUIoe2dldCBjb21wb3NlZCgpe3ZvaWQgMD09PXRoaXMuX19jb21wb3NlZCYmKEhiP3RoaXMuX19jb21wb3NlZD0iZm9jdXNpbiI9PT10aGlzLnR5cGV8fCJmb2N1c291dCI9PT10aGlzLnR5cGV8fEhiKHRoaXMpOiExIT09dGhpcy5pc1RydXN0ZWQmJih0aGlzLl9fY29tcG9zZWQ9SWJbdGhpcy50eXBlXSkpO3JldHVybiB0aGlzLl9fY29tcG9zZWR8fCExfSxjb21wb3NlZFBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9fY29tcG9zZWRQYXRofHwodGhpcy5fX2NvbXBvc2VkUGF0aD1MYih0aGlzLl9fdGFyZ2V0LHRoaXMuY29tcG9zZWQpKTtyZXR1cm4gdGhpcy5fX2NvbXBvc2VkUGF0aH0sZ2V0IHRhcmdldCgpe3JldHVybiBOYih0aGlzLmN1cnJlbnRUYXJnZXR8fHRoaXMuX19wcmV2aW91c0N1cnJlbnRUYXJnZXQsdGhpcy5jb21wb3NlZFBhdGgoKSl9LGdldCByZWxhdGVkVGFyZ2V0KCl7aWYoIXRoaXMuX19yZWxhdGVkVGFyZ2V0KXJldHVybiBudWxsO3RoaXMuX19yZWxhdGVkVGFyZ2V0Q29tcG9zZWRQYXRofHwKKHRoaXMuX19yZWxhdGVkVGFyZ2V0Q29tcG9zZWRQYXRoPUxiKHRoaXMuX19yZWxhdGVkVGFyZ2V0LCEwKSk7cmV0dXJuIE5iKHRoaXMuY3VycmVudFRhcmdldHx8dGhpcy5fX3ByZXZpb3VzQ3VycmVudFRhcmdldCx0aGlzLl9fcmVsYXRlZFRhcmdldENvbXBvc2VkUGF0aCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe0V2ZW50LnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb24uY2FsbCh0aGlzKTt0aGlzLlo9ITB9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe0V2ZW50LnByb3RvdHlwZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24uY2FsbCh0aGlzKTt0aGlzLlo9dGhpcy5fX2ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD0hMH19KTsKZnVuY3Rpb24gVmIoYSl7YS5fX3RhcmdldD1hLnRhcmdldDthLl9fcmVsYXRlZFRhcmdldD1hLnJlbGF0ZWRUYXJnZXQ7aWYody5tKXt2YXIgYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoYSk7aWYoIU9iamVjdC5oYXNPd25Qcm9wZXJ0eShiLCJfX3NoYWR5X3BhdGNoZWRQcm90byIpKXt2YXIgYz1PYmplY3QuY3JlYXRlKGIpO2MuX19zaGFkeV9zb3VyY2VQcm90bz1iO0EoYyxZYik7Yi5fX3NoYWR5X3BhdGNoZWRQcm90bz1jfWEuX19wcm90b19fPWIuX19zaGFkeV9wYXRjaGVkUHJvdG99ZWxzZSBBKGEsWWIpfXZhciBaYj1PYihFdmVudCksJGI9T2IoQ3VzdG9tRXZlbnQpLGFjPU9iKE1vdXNlRXZlbnQpOwpmdW5jdGlvbiBiYygpe2lmKCFIYiYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFdmVudC5wcm90b3R5cGUsImlzVHJ1c3RlZCIpKXt2YXIgYT1mdW5jdGlvbigpe3ZhciBhPW5ldyBNb3VzZUV2ZW50KCJjbGljayIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjb21wb3NlZDohMH0pO3RoaXMuX19zaGFkeV9kaXNwYXRjaEV2ZW50KGEpfTtFbGVtZW50LnByb3RvdHlwZS5jbGljaz9FbGVtZW50LnByb3RvdHlwZS5jbGljaz1hOkhUTUxFbGVtZW50LnByb3RvdHlwZS5jbGljayYmKEhUTUxFbGVtZW50LnByb3RvdHlwZS5jbGljaz1hKX19dmFyIGNjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKERvY3VtZW50LnByb3RvdHlwZSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJvbiI9PT1hLnN1YnN0cmluZygwLDIpfSk7ZnVuY3Rpb24gZGMoYSxiKXtyZXR1cm57aW5kZXg6YSxMOltdLFI6Yn19CmZ1bmN0aW9uIGVjKGEsYixjLGQpe3ZhciBlPTAsZj0wLGc9MCxoPTAsaz1NYXRoLm1pbihiLWUsZC1mKTtpZigwPT1lJiYwPT1mKWE6e2ZvcihnPTA7ZzxrO2crKylpZihhW2ddIT09Y1tnXSlicmVhayBhO2c9a31pZihiPT1hLmxlbmd0aCYmZD09Yy5sZW5ndGgpe2g9YS5sZW5ndGg7Zm9yKHZhciBsPWMubGVuZ3RoLG09MDttPGstZyYmZmMoYVstLWhdLGNbLS1sXSk7KW0rKztoPW19ZSs9ZztmKz1nO2ItPWg7ZC09aDtpZigwPT1iLWUmJjA9PWQtZilyZXR1cm5bXTtpZihlPT1iKXtmb3IoYj1kYyhlLDApO2Y8ZDspYi5MLnB1c2goY1tmKytdKTtyZXR1cm5bYl19aWYoZj09ZClyZXR1cm5bZGMoZSxiLWUpXTtrPWU7Zz1mO2Q9ZC1nKzE7aD1iLWsrMTtiPUFycmF5KGQpO2ZvcihsPTA7bDxkO2wrKyliW2xdPUFycmF5KGgpLGJbbF1bMF09bDtmb3IobD0wO2w8aDtsKyspYlswXVtsXT1sO2ZvcihsPTE7bDxkO2wrKylmb3IobT0xO208aDttKyspaWYoYVtrK20tMV09PT1jW2crbC0xXSliW2xdW21dPQpiW2wtMV1bbS0xXTtlbHNle3ZhciBxPWJbbC0xXVttXSsxLHg9YltsXVttLTFdKzE7YltsXVttXT1xPHg/cTp4fWs9Yi5sZW5ndGgtMTtnPWJbMF0ubGVuZ3RoLTE7ZD1iW2tdW2ddO2ZvcihhPVtdOzA8a3x8MDxnOykwPT1rPyhhLnB1c2goMiksZy0tKTowPT1nPyhhLnB1c2goMyksay0tKTooaD1iW2stMV1bZy0xXSxsPWJbay0xXVtnXSxtPWJba11bZy0xXSxxPWw8bT9sPGg/bDpoOm08aD9tOmgscT09aD8oaD09ZD9hLnB1c2goMCk6KGEucHVzaCgxKSxkPWgpLGstLSxnLS0pOnE9PWw/KGEucHVzaCgzKSxrLS0sZD1sKTooYS5wdXNoKDIpLGctLSxkPW0pKTthLnJldmVyc2UoKTtiPXZvaWQgMDtrPVtdO2ZvcihnPTA7ZzxhLmxlbmd0aDtnKyspc3dpdGNoKGFbZ10pe2Nhc2UgMDpiJiYoay5wdXNoKGIpLGI9dm9pZCAwKTtlKys7ZisrO2JyZWFrO2Nhc2UgMTpifHwoYj1kYyhlLDApKTtiLlIrKztlKys7Yi5MLnB1c2goY1tmXSk7ZisrO2JyZWFrO2Nhc2UgMjpifHwoYj1kYyhlLDApKTsKYi5SKys7ZSsrO2JyZWFrO2Nhc2UgMzpifHwoYj1kYyhlLDApKSxiLkwucHVzaChjW2ZdKSxmKyt9YiYmay5wdXNoKGIpO3JldHVybiBrfWZ1bmN0aW9uIGZjKGEsYil7cmV0dXJuIGE9PT1ifTtmdW5jdGlvbiBnYyhhLGIsYyl7RWIoYSk7Yz1jfHxudWxsO3ZhciBkPXUoYSksZT11KGIpLGY9Yz91KGMpOm51bGw7ZC5wcmV2aW91c1NpYmxpbmc9Yz9mLnByZXZpb3VzU2libGluZzpiLl9fc2hhZHlfbGFzdENoaWxkO2lmKGY9dihkLnByZXZpb3VzU2libGluZykpZi5uZXh0U2libGluZz1hO2lmKGY9dihkLm5leHRTaWJsaW5nPWMpKWYucHJldmlvdXNTaWJsaW5nPWE7ZC5wYXJlbnROb2RlPWI7Yz9jPT09ZS5maXJzdENoaWxkJiYoZS5maXJzdENoaWxkPWEpOihlLmxhc3RDaGlsZD1hLGUuZmlyc3RDaGlsZHx8KGUuZmlyc3RDaGlsZD1hKSk7ZS5jaGlsZE5vZGVzPW51bGx9CmZ1bmN0aW9uIGhjKGEsYixjKXtGYihiKTt2YXIgZD11KGIpO3ZvaWQgMCE9PWQuZmlyc3RDaGlsZCYmKGQuY2hpbGROb2Rlcz1udWxsKTtpZihhLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXtkPWEuX19zaGFkeV9jaGlsZE5vZGVzO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKWdjKGRbZV0sYixjKTthPXUoYSk7Yj12b2lkIDAhPT1hLmZpcnN0Q2hpbGQ/bnVsbDp2b2lkIDA7YS5maXJzdENoaWxkPWEubGFzdENoaWxkPWI7YS5jaGlsZE5vZGVzPWJ9ZWxzZSBnYyhhLGIsYyl9CmZ1bmN0aW9uIGljKGEsYil7dmFyIGM9dShhKTtiPXUoYik7YT09PWIuZmlyc3RDaGlsZCYmKGIuZmlyc3RDaGlsZD1jLm5leHRTaWJsaW5nKTthPT09Yi5sYXN0Q2hpbGQmJihiLmxhc3RDaGlsZD1jLnByZXZpb3VzU2libGluZyk7YT1jLnByZXZpb3VzU2libGluZzt2YXIgZD1jLm5leHRTaWJsaW5nO2EmJih1KGEpLm5leHRTaWJsaW5nPWQpO2QmJih1KGQpLnByZXZpb3VzU2libGluZz1hKTtjLnBhcmVudE5vZGU9Yy5wcmV2aW91c1NpYmxpbmc9Yy5uZXh0U2libGluZz12b2lkIDA7dm9pZCAwIT09Yi5jaGlsZE5vZGVzJiYoYi5jaGlsZE5vZGVzPW51bGwpfQpmdW5jdGlvbiBqYyhhKXt2YXIgYj11KGEpO2lmKHZvaWQgMD09PWIuZmlyc3RDaGlsZCl7Yi5jaGlsZE5vZGVzPW51bGw7dmFyIGM9Yi5maXJzdENoaWxkPWEuX19zaGFkeV9uYXRpdmVfZmlyc3RDaGlsZHx8bnVsbDtiLmxhc3RDaGlsZD1hLl9fc2hhZHlfbmF0aXZlX2xhc3RDaGlsZHx8bnVsbDtGYihhKTtiPWM7Zm9yKGM9dm9pZCAwO2I7Yj1iLl9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nKXt2YXIgZD11KGIpO2QucGFyZW50Tm9kZT1hO2QubmV4dFNpYmxpbmc9Yi5fX3NoYWR5X25hdGl2ZV9uZXh0U2libGluZ3x8bnVsbDtkLnByZXZpb3VzU2libGluZz1jfHxudWxsO2M9YjtFYihiKX19fTt2YXIga2M9bnVsbDtmdW5jdGlvbiBHKCl7a2N8fChrYz13aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSk7cmV0dXJuIGtjfHxudWxsfWZ1bmN0aW9uIGxjKGEsYil7dmFyIGM9RygpO2MmJmMudW5zY29wZU5vZGUoYSxiKX1mdW5jdGlvbiBtYyhhLGIpe3ZhciBjPUcoKTtpZighYylyZXR1cm4hMDtpZihhLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKXtjPSEwO2E9YS5fX3NoYWR5X2NoaWxkTm9kZXM7Zm9yKHZhciBkPTA7YyYmZDxhLmxlbmd0aDtkKyspYz1jJiZtYyhhW2RdLGIpO3JldHVybiBjfXJldHVybiBhLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREU/ITA6Yy5jdXJyZW50U2NvcGVGb3JOb2RlKGEpPT09Yn1mdW5jdGlvbiBuYyhhKXtpZihhLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIiI7dmFyIGI9RygpO3JldHVybiBiP2IuY3VycmVudFNjb3BlRm9yTm9kZShhKToiIn0KZnVuY3Rpb24gb2MoYSxiKXtpZihhKXthLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJmIoYSk7YT1hLl9fc2hhZHlfY2hpbGROb2Rlcztmb3IodmFyIGM9MCxkO2M8YS5sZW5ndGg7YysrKWQ9YVtjXSxkLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJm9jKGQsYil9fTt2YXIgcGM9d2luZG93LmRvY3VtZW50LHFjPXcub2EscmM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihOb2RlLnByb3RvdHlwZSwiaXNDb25uZWN0ZWQiKSxzYz1yYyYmcmMuZ2V0O2Z1bmN0aW9uIHRjKGEpe2Zvcih2YXIgYjtiPWEuX19zaGFkeV9maXJzdENoaWxkOylhLl9fc2hhZHlfcmVtb3ZlQ2hpbGQoYil9ZnVuY3Rpb24gdWMoYSl7dmFyIGI9dihhKTtpZihiJiZ2b2lkIDAhPT1iLkspe2I9YS5fX3NoYWR5X2NoaWxkTm9kZXM7Zm9yKHZhciBjPTAsZD1iLmxlbmd0aCxlPXZvaWQgMDtjPGQmJihlPWJbY10pO2MrKyl1YyhlKX1pZihhPXYoYSkpYS5LPXZvaWQgMH1mdW5jdGlvbiB2YyhhKXt2YXIgYj1hO2EmJiJzbG90Ij09PWEubG9jYWxOYW1lJiYoYj0oYj0oYj12KGEpKSYmYi5EKSYmYi5sZW5ndGg/YlswXTp2YyhhLl9fc2hhZHlfbmV4dFNpYmxpbmcpKTtyZXR1cm4gYn0KZnVuY3Rpb24gd2MoYSxiLGMpe2lmKGE9KGE9dihhKSkmJmEuSCliJiZhLmFkZGVkTm9kZXMucHVzaChiKSxjJiZhLnJlbW92ZWROb2Rlcy5wdXNoKGMpLGFiKGEpfQp2YXIgQ2M9Qih7Z2V0IHBhcmVudE5vZGUoKXt2YXIgYT12KHRoaXMpO2E9YSYmYS5wYXJlbnROb2RlO3JldHVybiB2b2lkIDAhPT1hP2E6dGhpcy5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlfSxnZXQgZmlyc3RDaGlsZCgpe3ZhciBhPXYodGhpcyk7YT1hJiZhLmZpcnN0Q2hpbGQ7cmV0dXJuIHZvaWQgMCE9PWE/YTp0aGlzLl9fc2hhZHlfbmF0aXZlX2ZpcnN0Q2hpbGR9LGdldCBsYXN0Q2hpbGQoKXt2YXIgYT12KHRoaXMpO2E9YSYmYS5sYXN0Q2hpbGQ7cmV0dXJuIHZvaWQgMCE9PWE/YTp0aGlzLl9fc2hhZHlfbmF0aXZlX2xhc3RDaGlsZH0sZ2V0IG5leHRTaWJsaW5nKCl7dmFyIGE9dih0aGlzKTthPWEmJmEubmV4dFNpYmxpbmc7cmV0dXJuIHZvaWQgMCE9PWE/YTp0aGlzLl9fc2hhZHlfbmF0aXZlX25leHRTaWJsaW5nfSxnZXQgcHJldmlvdXNTaWJsaW5nKCl7dmFyIGE9dih0aGlzKTthPWEmJmEucHJldmlvdXNTaWJsaW5nO3JldHVybiB2b2lkIDAhPT1hP2E6dGhpcy5fX3NoYWR5X25hdGl2ZV9wcmV2aW91c1NpYmxpbmd9LApnZXQgY2hpbGROb2Rlcygpe2lmKHkodGhpcykpe3ZhciBhPXYodGhpcyk7aWYoIWEuY2hpbGROb2Rlcyl7YS5jaGlsZE5vZGVzPVtdO2Zvcih2YXIgYj10aGlzLl9fc2hhZHlfZmlyc3RDaGlsZDtiO2I9Yi5fX3NoYWR5X25leHRTaWJsaW5nKWEuY2hpbGROb2Rlcy5wdXNoKGIpfXZhciBjPWEuY2hpbGROb2Rlc31lbHNlIGM9dGhpcy5fX3NoYWR5X25hdGl2ZV9jaGlsZE5vZGVzO2MuaXRlbT1mdW5jdGlvbihhKXtyZXR1cm4gY1thXX07cmV0dXJuIGN9LGdldCBwYXJlbnRFbGVtZW50KCl7dmFyIGE9dih0aGlzKTsoYT1hJiZhLnBhcmVudE5vZGUpJiZhLm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREUmJihhPW51bGwpO3JldHVybiB2b2lkIDAhPT1hP2E6dGhpcy5fX3NoYWR5X25hdGl2ZV9wYXJlbnRFbGVtZW50fSxnZXQgaXNDb25uZWN0ZWQoKXtpZihzYyYmc2MuY2FsbCh0aGlzKSlyZXR1cm4hMDtpZih0aGlzLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpcmV0dXJuITE7CnZhciBhPXRoaXMub3duZXJEb2N1bWVudDtpZihUYSl7aWYoYS5fX3NoYWR5X25hdGl2ZV9jb250YWlucyh0aGlzKSlyZXR1cm4hMH1lbHNlIGlmKGEuZG9jdW1lbnRFbGVtZW50JiZhLmRvY3VtZW50RWxlbWVudC5fX3NoYWR5X25hdGl2ZV9jb250YWlucyh0aGlzKSlyZXR1cm4hMDtmb3IoYT10aGlzO2EmJiEoYSBpbnN0YW5jZW9mIERvY3VtZW50KTspYT1hLl9fc2hhZHlfcGFyZW50Tm9kZXx8KHooYSk/YS5ob3N0OnZvaWQgMCk7cmV0dXJuISEoYSYmYSBpbnN0YW5jZW9mIERvY3VtZW50KX0sZ2V0IHRleHRDb250ZW50KCl7aWYoeSh0aGlzKSl7Zm9yKHZhciBhPVtdLGI9MCxjPXRoaXMuX19zaGFkeV9jaGlsZE5vZGVzLGQ7ZD1jW2JdO2IrKylkLm5vZGVUeXBlIT09Tm9kZS5DT01NRU5UX05PREUmJmEucHVzaChkLl9fc2hhZHlfdGV4dENvbnRlbnQpO3JldHVybiBhLmpvaW4oIiIpfXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX3RleHRDb250ZW50fSxzZXQgdGV4dENvbnRlbnQoYSl7aWYoInVuZGVmaW5lZCI9PT0KdHlwZW9mIGF8fG51bGw9PT1hKWE9IiI7c3dpdGNoKHRoaXMubm9kZVR5cGUpe2Nhc2UgTm9kZS5FTEVNRU5UX05PREU6Y2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6aWYoIXkodGhpcykmJncubSl7dmFyIGI9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7KGIhPXRoaXMuX19zaGFkeV9sYXN0Q2hpbGR8fGImJmIubm9kZVR5cGUhPU5vZGUuVEVYVF9OT0RFKSYmdGModGhpcyk7dGhpcy5fX3NoYWR5X25hdGl2ZV90ZXh0Q29udGVudD1hfWVsc2UgdGModGhpcyksKDA8YS5sZW5ndGh8fHRoaXMubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSkmJnRoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5ub2RlVmFsdWU9YX19LGluc2VydEJlZm9yZTpmdW5jdGlvbihhLGIpe2lmKHRoaXMub3duZXJEb2N1bWVudCE9PXBjJiZhLm93bmVyRG9jdW1lbnQhPT1wYylyZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUoYSwKYiksYTtpZihhPT09dGhpcyl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGV4ZWN1dGUgJ2FwcGVuZENoaWxkJyBvbiAnTm9kZSc6IFRoZSBuZXcgY2hpbGQgZWxlbWVudCBjb250YWlucyB0aGUgcGFyZW50LiIpO2lmKGIpe3ZhciBjPXYoYik7Yz1jJiZjLnBhcmVudE5vZGU7aWYodm9pZCAwIT09YyYmYyE9PXRoaXN8fHZvaWQgMD09PWMmJmIuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZSE9PXRoaXMpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBleGVjdXRlICdpbnNlcnRCZWZvcmUnIG9uICdOb2RlJzogVGhlIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBuZXcgbm9kZSBpcyB0byBiZSBpbnNlcnRlZCBpcyBub3QgYSBjaGlsZCBvZiB0aGlzIG5vZGUuIik7fWlmKGI9PT1hKXJldHVybiBhO3ZhciBkPVtdLGU9KGM9eGModGhpcykpP2MuaG9zdC5sb2NhbE5hbWU6bmModGhpcyksZj1hLl9fc2hhZHlfcGFyZW50Tm9kZTtpZihmKXt2YXIgZz1uYyhhKTtmLl9fc2hhZHlfcmVtb3ZlQ2hpbGQoYSwhIWN8fAoheGMoYSkpfWY9ITA7dmFyIGg9KCFxY3x8dm9pZCAwPT09YS5fX25vSW5zZXJ0aW9uUG9pbnQpJiYhbWMoYSxlKSxrPWMmJiFhLl9fbm9JbnNlcnRpb25Qb2ludCYmKCFxY3x8YS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk7aWYoa3x8aCloJiYoZz1nfHxuYyhhKSksb2MoYSxmdW5jdGlvbihhKXtrJiYic2xvdCI9PT1hLmxvY2FsTmFtZSYmZC5wdXNoKGEpO2lmKGgpe3ZhciBiPWc7RygpJiYoYiYmbGMoYSxiKSwoYj1HKCkpJiZiLnNjb3BlTm9kZShhLGUpKX19KTtpZigic2xvdCI9PT10aGlzLmxvY2FsTmFtZXx8ZC5sZW5ndGgpZC5sZW5ndGgmJihjLmM9Yy5jfHxbXSxjLmE9Yy5hfHxbXSxjLmI9Yy5ifHx7fSxjLmMucHVzaC5hcHBseShjLmMsZCBpbnN0YW5jZW9mIEFycmF5P2Q6amEoaWEoZCkpKSksYyYmQWMoYyk7eSh0aGlzKSYmKGhjKGEsdGhpcyxiKSxjPXYodGhpcyksTGEodGhpcyk/KEFjKGMucm9vdCksZj0hMSk6Yy5yb290JiYoZj0hMSkpO2Y/CihjPXoodGhpcyk/dGhpcy5ob3N0OnRoaXMsYj8oYj12YyhiKSxjLl9fc2hhZHlfbmF0aXZlX2luc2VydEJlZm9yZShhLGIpKTpjLl9fc2hhZHlfbmF0aXZlX2FwcGVuZENoaWxkKGEpKTphLm93bmVyRG9jdW1lbnQhPT10aGlzLm93bmVyRG9jdW1lbnQmJnRoaXMub3duZXJEb2N1bWVudC5hZG9wdE5vZGUoYSk7d2ModGhpcyxhKTtyZXR1cm4gYX0sYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoYSl9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKGEsYil7Yj12b2lkIDA9PT1iPyExOmI7aWYodGhpcy5vd25lckRvY3VtZW50IT09cGMpcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQoYSk7aWYoYS5fX3NoYWR5X3BhcmVudE5vZGUhPT10aGlzKXRocm93IEVycm9yKCJUaGUgbm9kZSB0byBiZSByZW1vdmVkIGlzIG5vdCBhIGNoaWxkIG9mIHRoaXMgbm9kZTogIithKTt2YXIgYz14YyhhKSxkPWMmJkJjKGMsYSksZT12KHRoaXMpOwppZih5KHRoaXMpJiYoaWMoYSx0aGlzKSxMYSh0aGlzKSkpe0FjKGUucm9vdCk7dmFyIGY9ITB9aWYoRygpJiYhYiYmYyl7dmFyIGc9bmMoYSk7b2MoYSxmdW5jdGlvbihhKXtsYyhhLGcpfSl9dWMoYSk7YyYmKChiPXRoaXMmJiJzbG90Ij09PXRoaXMubG9jYWxOYW1lKSYmKGY9ITApLChkfHxiKSYmQWMoYykpO2Z8fChmPXoodGhpcyk/dGhpcy5ob3N0OnRoaXMsKCFlLnJvb3QmJiJzbG90IiE9PWEubG9jYWxOYW1lfHxmPT09YS5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlKSYmZi5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZChhKSk7d2ModGhpcyxudWxsLGEpO3JldHVybiBhfSxyZXBsYWNlQ2hpbGQ6ZnVuY3Rpb24oYSxiKXt0aGlzLl9fc2hhZHlfaW5zZXJ0QmVmb3JlKGEsYik7dGhpcy5fX3NoYWR5X3JlbW92ZUNoaWxkKGIpO3JldHVybiBhfSxjbG9uZU5vZGU6ZnVuY3Rpb24oYSl7aWYoInRlbXBsYXRlIj09dGhpcy5sb2NhbE5hbWUpcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfY2xvbmVOb2RlKGEpOwp2YXIgYj10aGlzLl9fc2hhZHlfbmF0aXZlX2Nsb25lTm9kZSghMSk7aWYoYSYmYi5ub2RlVHlwZSE9PU5vZGUuQVRUUklCVVRFX05PREUpe2E9dGhpcy5fX3NoYWR5X2NoaWxkTm9kZXM7Zm9yKHZhciBjPTAsZDtjPGEubGVuZ3RoO2MrKylkPWFbY10uX19zaGFkeV9jbG9uZU5vZGUoITApLGIuX19zaGFkeV9hcHBlbmRDaGlsZChkKX1yZXR1cm4gYn0sZ2V0Um9vdE5vZGU6ZnVuY3Rpb24oYSl7aWYodGhpcyYmdGhpcy5ub2RlVHlwZSl7dmFyIGI9dSh0aGlzKSxjPWIuSzt2b2lkIDA9PT1jJiYoeih0aGlzKT8oYz10aGlzLGIuSz1jKTooYz0oYz10aGlzLl9fc2hhZHlfcGFyZW50Tm9kZSk/Yy5fX3NoYWR5X2dldFJvb3ROb2RlKGEpOnRoaXMsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ll9fc2hhZHlfbmF0aXZlX2NvbnRhaW5zKHRoaXMpJiYoYi5LPWMpKSk7cmV0dXJuIGN9fSxjb250YWluczpmdW5jdGlvbihhKXtyZXR1cm4gVWEodGhpcyxhKX19KTtmdW5jdGlvbiBEYyhhLGIsYyl7dmFyIGQ9W107RWMoYS5fX3NoYWR5X2NoaWxkTm9kZXMsYixjLGQpO3JldHVybiBkfWZ1bmN0aW9uIEVjKGEsYixjLGQpe2Zvcih2YXIgZT0wLGY9YS5sZW5ndGgsZz12b2lkIDA7ZTxmJiYoZz1hW2VdKTtlKyspe3ZhciBoO2lmKGg9Zy5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXtoPWc7dmFyIGs9YixsPWMsbT1kLHE9ayhoKTtxJiZtLnB1c2goaCk7bCYmbChxKT9oPXE6KEVjKGguX19zaGFkeV9jaGlsZE5vZGVzLGssbCxtKSxoPXZvaWQgMCl9aWYoaClicmVha319CnZhciBGYz1CKHtnZXQgZmlyc3RFbGVtZW50Q2hpbGQoKXt2YXIgYT12KHRoaXMpO2lmKGEmJnZvaWQgMCE9PWEuZmlyc3RDaGlsZCl7Zm9yKGE9dGhpcy5fX3NoYWR5X2ZpcnN0Q2hpbGQ7YSYmYS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFOylhPWEuX19zaGFkeV9uZXh0U2libGluZztyZXR1cm4gYX1yZXR1cm4gdGhpcy5fX3NoYWR5X25hdGl2ZV9maXJzdEVsZW1lbnRDaGlsZH0sZ2V0IGxhc3RFbGVtZW50Q2hpbGQoKXt2YXIgYT12KHRoaXMpO2lmKGEmJnZvaWQgMCE9PWEubGFzdENoaWxkKXtmb3IoYT10aGlzLl9fc2hhZHlfbGFzdENoaWxkO2EmJmEubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERTspYT1hLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nO3JldHVybiBhfXJldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2xhc3RFbGVtZW50Q2hpbGR9LGdldCBjaGlsZHJlbigpe3JldHVybiB5KHRoaXMpP1ZhKEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCh0aGlzLl9fc2hhZHlfY2hpbGROb2RlcywKZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERX0pKTp0aGlzLl9fc2hhZHlfbmF0aXZlX2NoaWxkcmVufSxnZXQgY2hpbGRFbGVtZW50Q291bnQoKXt2YXIgYT10aGlzLl9fc2hhZHlfY2hpbGRyZW47cmV0dXJuIGE/YS5sZW5ndGg6MH19KSxHYz1CKHtxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKGEpe3JldHVybiBEYyh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBPYS5jYWxsKGIsYSl9LGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pWzBdfHxudWxsfSxxdWVyeVNlbGVjdG9yQWxsOmZ1bmN0aW9uKGEsYil7aWYoYil7Yj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9fc2hhZHlfbmF0aXZlX3F1ZXJ5U2VsZWN0b3JBbGwoYSkpO3ZhciBjPXRoaXMuX19zaGFkeV9nZXRSb290Tm9kZSgpO3JldHVybiBiLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5fX3NoYWR5X2dldFJvb3ROb2RlKCk9PWN9KX1yZXR1cm4gRGModGhpcyxmdW5jdGlvbihiKXtyZXR1cm4gT2EuY2FsbChiLAphKX0pfX0pLEhjPXcub2E/T2JqZWN0LmFzc2lnbih7fSxGYyk6RmM7T2JqZWN0LmFzc2lnbihGYyxHYyk7dmFyIEljPUIoe2dldEVsZW1lbnRCeUlkOmZ1bmN0aW9uKGEpe3JldHVybiIiPT09YT9udWxsOkRjKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGIuaWQ9PWF9LGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pWzBdfHxudWxsfX0pO3ZhciBKYz1CKHtnZXQgYWN0aXZlRWxlbWVudCgpe3ZhciBhPXcubT9kb2N1bWVudC5fX3NoYWR5X25hdGl2ZV9hY3RpdmVFbGVtZW50OmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7aWYoIWF8fCFhLm5vZGVUeXBlKXJldHVybiBudWxsO3ZhciBiPSEheih0aGlzKTtpZighKHRoaXM9PT1kb2N1bWVudHx8YiYmdGhpcy5ob3N0IT09YSYmdGhpcy5ob3N0Ll9fc2hhZHlfbmF0aXZlX2NvbnRhaW5zKGEpKSlyZXR1cm4gbnVsbDtmb3IoYj14YyhhKTtiJiZiIT09dGhpczspYT1iLmhvc3QsYj14YyhhKTtyZXR1cm4gdGhpcz09PWRvY3VtZW50P2I/bnVsbDphOmI9PT10aGlzP2E6bnVsbH19KTt2YXIgS2M9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJpbmVydCIpLExjPUIoe2dldCBpbm5lckhUTUwoKXtyZXR1cm4geSh0aGlzKT9rYigidGVtcGxhdGUiPT09dGhpcy5sb2NhbE5hbWU/dGhpcy5jb250ZW50OnRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIGEuX19zaGFkeV9jaGlsZE5vZGVzfSk6dGhpcy5fX3NoYWR5X25hdGl2ZV9pbm5lckhUTUx9LHNldCBpbm5lckhUTUwoYSl7aWYoInRlbXBsYXRlIj09PXRoaXMubG9jYWxOYW1lKXRoaXMuX19zaGFkeV9uYXRpdmVfaW5uZXJIVE1MPWE7ZWxzZXt0Yyh0aGlzKTt2YXIgYj10aGlzLmxvY2FsTmFtZXx8ImRpdiI7Yj10aGlzLm5hbWVzcGFjZVVSSSYmdGhpcy5uYW1lc3BhY2VVUkkhPT1LYy5uYW1lc3BhY2VVUkk/S2MuY3JlYXRlRWxlbWVudE5TKHRoaXMubmFtZXNwYWNlVVJJLGIpOktjLmNyZWF0ZUVsZW1lbnQoYik7Zm9yKHcubT9iLl9fc2hhZHlfbmF0aXZlX2lubmVySFRNTD1hOmIuaW5uZXJIVE1MPQphO2E9Yi5fX3NoYWR5X2ZpcnN0Q2hpbGQ7KXRoaXMuX19zaGFkeV9pbnNlcnRCZWZvcmUoYSl9fX0pO3ZhciBNYz1CKHthZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYixjKXsib2JqZWN0IiE9PXR5cGVvZiBjJiYoYz17Y2FwdHVyZTohIWN9KTtjLiQ9dGhpczt0aGlzLmhvc3QuX19zaGFkeV9hZGRFdmVudExpc3RlbmVyKGEsYixjKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGIsYyl7Im9iamVjdCIhPT10eXBlb2YgYyYmKGM9e2NhcHR1cmU6ISFjfSk7Yy4kPXRoaXM7dGhpcy5ob3N0Ll9fc2hhZHlfcmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGIsYyl9fSk7ZnVuY3Rpb24gTmMoYSxiKXtBKGEsTWMsYik7QShhLEpjLGIpO0EoYSxMYyxiKTtBKGEsRmMsYik7dy5KJiYhYj8oQShhLENjLGIpLEEoYSxJYyxiKSk6dy5tfHwoQShhLEFiKSxBKGEsemIpKX07dmFyIE9jPXt9LFBjPXcuZGVmZXJDb25uZWN0aW9uQ2FsbGJhY2tzJiYibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlLFFjO2Z1bmN0aW9uIFJjKGEpe3ZhciBiPVtdO2RvIGIudW5zaGlmdChhKTt3aGlsZShhPWEuX19zaGFkeV9wYXJlbnROb2RlKTtyZXR1cm4gYn0KZnVuY3Rpb24gU2MoYSxiLGMpe2lmKGEhPT1PYyl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIik7dGhpcy56YT0iU2hhZHlSb290Ijt0aGlzLmhvc3Q9Yjt0aGlzLm1vZGU9YyYmYy5tb2RlO2pjKGIpO2E9dShiKTthLnJvb3Q9dGhpczthLnBhPSJjbG9zZWQiIT09dGhpcy5tb2RlP3RoaXM6bnVsbDthPXUodGhpcyk7YS5maXJzdENoaWxkPWEubGFzdENoaWxkPWEucGFyZW50Tm9kZT1hLm5leHRTaWJsaW5nPWEucHJldmlvdXNTaWJsaW5nPW51bGw7YS5jaGlsZE5vZGVzPVtdO3RoaXMuYmE9dGhpcy5CPSExO3RoaXMuYz10aGlzLmI9dGhpcy5hPW51bGw7aWYody5wcmVmZXJQZXJmb3JtYW5jZSlmb3IoO2E9Yi5fX3NoYWR5X25hdGl2ZV9maXJzdENoaWxkOyliLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUNoaWxkKGEpO2Vsc2UgQWModGhpcyl9ZnVuY3Rpb24gQWMoYSl7YS5CfHwoYS5CPSEwLFlhKGZ1bmN0aW9uKCl7cmV0dXJuIFRjKGEpfSkpfQpmdW5jdGlvbiBUYyhhKXt2YXIgYjtpZihiPWEuQil7Zm9yKHZhciBjO2E7KWE6e2EuQiYmKGM9YSksYj1hO2E9Yi5ob3N0Ll9fc2hhZHlfZ2V0Um9vdE5vZGUoKTtpZih6KGEpJiYoYj12KGIuaG9zdCkpJiYwPGIuTilicmVhayBhO2E9dm9pZCAwfWI9Y30oYz1iKSYmYy5fcmVuZGVyU2VsZigpfQpTYy5wcm90b3R5cGUuX3JlbmRlclNlbGY9ZnVuY3Rpb24oKXt2YXIgYT1QYztQYz0hMDt0aGlzLkI9ITE7aWYodGhpcy5hKXtVYyh0aGlzKTtmb3IodmFyIGI9MCxjO2I8dGhpcy5hLmxlbmd0aDtiKyspe2M9dGhpcy5hW2JdO3ZhciBkPXYoYyksZT1kLmFzc2lnbmVkTm9kZXM7ZC5hc3NpZ25lZE5vZGVzPVtdO2QuRD1bXTtpZihkLmNhPWUpZm9yKGQ9MDtkPGUubGVuZ3RoO2QrKyl7dmFyIGY9dihlW2RdKTtmLlA9Zi5hc3NpZ25lZFNsb3Q7Zi5hc3NpZ25lZFNsb3Q9PT1jJiYoZi5hc3NpZ25lZFNsb3Q9bnVsbCl9fWZvcihiPXRoaXMuaG9zdC5fX3NoYWR5X2ZpcnN0Q2hpbGQ7YjtiPWIuX19zaGFkeV9uZXh0U2libGluZylWYyh0aGlzLGIpO2ZvcihiPTA7Yjx0aGlzLmEubGVuZ3RoO2IrKyl7Yz10aGlzLmFbYl07ZT12KGMpO2lmKCFlLmFzc2lnbmVkTm9kZXMubGVuZ3RoKWZvcihkPWMuX19zaGFkeV9maXJzdENoaWxkO2Q7ZD1kLl9fc2hhZHlfbmV4dFNpYmxpbmcpVmModGhpcywKZCxjKTsoZD0oZD12KGMuX19zaGFkeV9wYXJlbnROb2RlKSkmJmQucm9vdCkmJihNYShkKXx8ZC5CKSYmZC5fcmVuZGVyU2VsZigpO1djKHRoaXMsZS5ELGUuYXNzaWduZWROb2Rlcyk7aWYoZD1lLmNhKXtmb3IoZj0wO2Y8ZC5sZW5ndGg7ZisrKXYoZFtmXSkuUD1udWxsO2UuY2E9bnVsbDtkLmxlbmd0aD5lLmFzc2lnbmVkTm9kZXMubGVuZ3RoJiYoZS5UPSEwKX1lLlQmJihlLlQ9ITEsWGModGhpcyxjKSl9Yz10aGlzLmE7Yj1bXTtmb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKWQ9Y1tlXS5fX3NoYWR5X3BhcmVudE5vZGUsKGY9dihkKSkmJmYucm9vdHx8ISgwPmIuaW5kZXhPZihkKSl8fGIucHVzaChkKTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKXtmPWJbY107ZT1mPT09dGhpcz90aGlzLmhvc3Q6ZjtkPVtdO2Y9Zi5fX3NoYWR5X2NoaWxkTm9kZXM7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107aWYoInNsb3QiPT1oLmxvY2FsTmFtZSl7aD12KGgpLkQ7Zm9yKHZhciBrPQowO2s8aC5sZW5ndGg7aysrKWQucHVzaChoW2tdKX1lbHNlIGQucHVzaChoKX1mPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUuX19zaGFkeV9uYXRpdmVfY2hpbGROb2Rlcyk7Zz1lYyhkLGQubGVuZ3RoLGYsZi5sZW5ndGgpO2s9aD0wO2Zvcih2YXIgbD12b2lkIDA7aDxnLmxlbmd0aCYmKGw9Z1toXSk7aCsrKXtmb3IodmFyIG09MCxxPXZvaWQgMDttPGwuTC5sZW5ndGgmJihxPWwuTFttXSk7bSsrKXEuX19zaGFkeV9uYXRpdmVfcGFyZW50Tm9kZT09PWUmJmUuX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQocSksZi5zcGxpY2UobC5pbmRleCtrLDEpO2stPWwuUn1rPTA7Zm9yKGw9dm9pZCAwO2s8Zy5sZW5ndGgmJihsPWdba10pO2srKylmb3IoaD1mW2wuaW5kZXhdLG09bC5pbmRleDttPGwuaW5kZXgrbC5SO20rKylxPWRbbV0sZS5fX3NoYWR5X25hdGl2ZV9pbnNlcnRCZWZvcmUocSxoKSxmLnNwbGljZShtLDAscSl9fWlmKCF3LnByZWZlclBlcmZvcm1hbmNlJiYhdGhpcy5iYSlmb3IoYj0KdGhpcy5ob3N0Ll9fc2hhZHlfY2hpbGROb2RlcyxjPTAsZT1iLmxlbmd0aDtjPGU7YysrKWQ9YltjXSxmPXYoZCksZC5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlIT09dGhpcy5ob3N0fHwic2xvdCIhPT1kLmxvY2FsTmFtZSYmZi5hc3NpZ25lZFNsb3R8fHRoaXMuaG9zdC5fX3NoYWR5X25hdGl2ZV9yZW1vdmVDaGlsZChkKTt0aGlzLmJhPSEwO1BjPWE7UWMmJlFjKCl9O2Z1bmN0aW9uIFZjKGEsYixjKXt2YXIgZD11KGIpLGU9ZC5QO2QuUD1udWxsO2N8fChjPShhPWEuYltiLl9fc2hhZHlfc2xvdHx8Il9fY2F0Y2hhbGwiXSkmJmFbMF0pO2M/KHUoYykuYXNzaWduZWROb2Rlcy5wdXNoKGIpLGQuYXNzaWduZWRTbG90PWMpOmQuYXNzaWduZWRTbG90PXZvaWQgMDtlIT09ZC5hc3NpZ25lZFNsb3QmJmQuYXNzaWduZWRTbG90JiYodShkLmFzc2lnbmVkU2xvdCkuVD0hMCl9CmZ1bmN0aW9uIFdjKGEsYixjKXtmb3IodmFyIGQ9MCxlPXZvaWQgMDtkPGMubGVuZ3RoJiYoZT1jW2RdKTtkKyspaWYoInNsb3QiPT1lLmxvY2FsTmFtZSl7dmFyIGY9dihlKS5hc3NpZ25lZE5vZGVzO2YmJmYubGVuZ3RoJiZXYyhhLGIsZil9ZWxzZSBiLnB1c2goY1tkXSl9ZnVuY3Rpb24gWGMoYSxiKXtiLl9fc2hhZHlfbmF0aXZlX2Rpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCJzbG90Y2hhbmdlIikpO2I9dihiKTtiLmFzc2lnbmVkU2xvdCYmWGMoYSxiLmFzc2lnbmVkU2xvdCl9CmZ1bmN0aW9uIFVjKGEpe2lmKGEuYyYmYS5jLmxlbmd0aCl7Zm9yKHZhciBiPWEuYyxjLGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXTtqYyhlKTt2YXIgZj1lLl9fc2hhZHlfcGFyZW50Tm9kZTtqYyhmKTtmPXYoZik7Zi5OPShmLk58fDApKzE7Zj1ZYyhlKTthLmJbZl0/KGM9Y3x8e30sY1tmXT0hMCxhLmJbZl0ucHVzaChlKSk6YS5iW2ZdPVtlXTthLmEucHVzaChlKX1pZihjKWZvcih2YXIgZyBpbiBjKWEuYltnXT1aYyhhLmJbZ10pO2EuYz1bXX19ZnVuY3Rpb24gWWMoYSl7dmFyIGI9YS5uYW1lfHxhLmdldEF0dHJpYnV0ZSgibmFtZSIpfHwiX19jYXRjaGFsbCI7cmV0dXJuIGEud2E9Yn0KZnVuY3Rpb24gWmMoYSl7cmV0dXJuIGEuc29ydChmdW5jdGlvbihhLGMpe2E9UmMoYSk7Zm9yKHZhciBiPVJjKGMpLGU9MDtlPGEubGVuZ3RoO2UrKyl7Yz1hW2VdO3ZhciBmPWJbZV07aWYoYyE9PWYpcmV0dXJuIGE9QXJyYXkuZnJvbShjLl9fc2hhZHlfcGFyZW50Tm9kZS5fX3NoYWR5X2NoaWxkTm9kZXMpLGEuaW5kZXhPZihjKS1hLmluZGV4T2YoZil9fSl9CmZ1bmN0aW9uIEJjKGEsYil7aWYoYS5hKXtVYyhhKTt2YXIgYz1hLmIsZDtmb3IoZCBpbiBjKWZvcih2YXIgZT1jW2RdLGY9MDtmPGUubGVuZ3RoO2YrKyl7dmFyIGc9ZVtmXTtpZihVYShiLGcpKXtlLnNwbGljZShmLDEpO3ZhciBoPWEuYS5pbmRleE9mKGcpOzA8PWgmJihhLmEuc3BsaWNlKGgsMSksKGg9dihnLl9fc2hhZHlfcGFyZW50Tm9kZSkpJiZoLk4mJmguTi0tKTtmLS07Zz12KGcpO2lmKGg9Zy5EKWZvcih2YXIgaz0wO2s8aC5sZW5ndGg7aysrKXt2YXIgbD1oW2tdLG09bC5fX3NoYWR5X25hdGl2ZV9wYXJlbnROb2RlO20mJm0uX19zaGFkeV9uYXRpdmVfcmVtb3ZlQ2hpbGQobCl9Zy5EPVtdO2cuYXNzaWduZWROb2Rlcz1bXTtoPSEwfX1yZXR1cm4gaH19ZnVuY3Rpb24gTWEoYSl7VWMoYSk7cmV0dXJuISghYS5hfHwhYS5hLmxlbmd0aCl9CihmdW5jdGlvbihhKXthLl9fcHJvdG9fXz1Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZTtOYyhhLCJfX3NoYWR5XyIpO05jKGEpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGEse25vZGVUeXBlOnt2YWx1ZTpOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUsY29uZmlndXJhYmxlOiEwfSxub2RlTmFtZTp7dmFsdWU6IiNkb2N1bWVudC1mcmFnbWVudCIsY29uZmlndXJhYmxlOiEwfSxub2RlVmFsdWU6e3ZhbHVlOm51bGwsY29uZmlndXJhYmxlOiEwfX0pO1sibG9jYWxOYW1lIiwibmFtZXNwYWNlVVJJIiwicHJlZml4Il0uZm9yRWFjaChmdW5jdGlvbihiKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHt2YWx1ZTp2b2lkIDAsY29uZmlndXJhYmxlOiEwfSl9KTtbIm93bmVyRG9jdW1lbnQiLCJiYXNlVVJJIiwiaXNDb25uZWN0ZWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhvc3RbYl19LApjb25maWd1cmFibGU6ITB9KX0pfSkoU2MucHJvdG90eXBlKTsKaWYod2luZG93LmN1c3RvbUVsZW1lbnRzJiZ3LmVhJiYhdy5wcmVmZXJQZXJmb3JtYW5jZSl7dmFyICRjPW5ldyBNYXA7UWM9ZnVuY3Rpb24oKXt2YXIgYT1bXTskYy5mb3JFYWNoKGZ1bmN0aW9uKGIsYyl7YS5wdXNoKFtjLGJdKX0pOyRjLmNsZWFyKCk7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl1bMF07YVtiXVsxXT9jLnVhKCk6Yy52YSgpfX07UGMmJmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7UGM9ITE7UWMoKX0se29uY2U6ITB9KTt2YXIgYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTAsZT0iX19pc0Nvbm5lY3RlZCIrZCsrO2lmKGJ8fGMpYS5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2s9YS5wcm90b3R5cGUudWE9ZnVuY3Rpb24oKXtQYz8kYy5zZXQodGhpcywhMCk6dGhpc1tlXXx8KHRoaXNbZV09ITAsYiYmYi5jYWxsKHRoaXMpKX0sYS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2s9CmEucHJvdG90eXBlLnZhPWZ1bmN0aW9uKCl7UGM/dGhpcy5pc0Nvbm5lY3RlZHx8JGMuc2V0KHRoaXMsITEpOnRoaXNbZV0mJih0aGlzW2VdPSExLGMmJmMuY2FsbCh0aGlzKSl9O3JldHVybiBhfSxiZD13aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh3aW5kb3cuQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LnByb3RvdHlwZSwiZGVmaW5lIix7dmFsdWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjayxkPWIucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrO2JkLmNhbGwod2luZG93LmN1c3RvbUVsZW1lbnRzLGEsYWQoYixjLGQpKTtiLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjaz1jO2IucHJvdG90eXBlLmRpc2Nvbm5lY3RlZENhbGxiYWNrPWR9fSl9ZnVuY3Rpb24geGMoYSl7YT1hLl9fc2hhZHlfZ2V0Um9vdE5vZGUoKTtpZih6KGEpKXJldHVybiBhfTtmdW5jdGlvbiBjZChhKXt0aGlzLm5vZGU9YX1uPWNkLnByb3RvdHlwZTtuLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hZGRFdmVudExpc3RlbmVyKGEsYixjKX07bi5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGIsYyl9O24uYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2FwcGVuZENoaWxkKGEpfTtuLmluc2VydEJlZm9yZT1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9pbnNlcnRCZWZvcmUoYSxiKX07bi5yZW1vdmVDaGlsZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcmVtb3ZlQ2hpbGQoYSl9O24ucmVwbGFjZUNoaWxkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3JlcGxhY2VDaGlsZChhLGIpfTsKbi5jbG9uZU5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2Nsb25lTm9kZShhKX07bi5nZXRSb290Tm9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZ2V0Um9vdE5vZGUoYSl9O24uY29udGFpbnM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2NvbnRhaW5zKGEpfTtuLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2Rpc3BhdGNoRXZlbnQoYSl9O24uc2V0QXR0cmlidXRlPWZ1bmN0aW9uKGEsYil7dGhpcy5ub2RlLl9fc2hhZHlfc2V0QXR0cmlidXRlKGEsYil9O24uZ2V0QXR0cmlidXRlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9uYXRpdmVfZ2V0QXR0cmlidXRlKGEpfTtuLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfbmF0aXZlX2hhc0F0dHJpYnV0ZShhKX07bi5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24oYSl7dGhpcy5ub2RlLl9fc2hhZHlfcmVtb3ZlQXR0cmlidXRlKGEpfTsKbi5hdHRhY2hTaGFkb3c9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2F0dGFjaFNoYWRvdyhhKX07bi5mb2N1cz1mdW5jdGlvbigpe3RoaXMubm9kZS5fX3NoYWR5X25hdGl2ZV9mb2N1cygpfTtuLmJsdXI9ZnVuY3Rpb24oKXt0aGlzLm5vZGUuX19zaGFkeV9ibHVyKCl9O24uaW1wb3J0Tm9kZT1mdW5jdGlvbihhLGIpe2lmKHRoaXMubm9kZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSlyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfaW1wb3J0Tm9kZShhLGIpfTtuLmdldEVsZW1lbnRCeUlkPWZ1bmN0aW9uKGEpe2lmKHRoaXMubm9kZS5ub2RlVHlwZT09PU5vZGUuRE9DVU1FTlRfTk9ERSlyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfZ2V0RWxlbWVudEJ5SWQoYSl9O24ucXVlcnlTZWxlY3Rvcj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcXVlcnlTZWxlY3RvcihhKX07Cm4ucXVlcnlTZWxlY3RvckFsbD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9xdWVyeVNlbGVjdG9yQWxsKGEsYil9O24uYXNzaWduZWROb2Rlcz1mdW5jdGlvbihhKXtpZigic2xvdCI9PT10aGlzLm5vZGUubG9jYWxOYW1lKXJldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hc3NpZ25lZE5vZGVzKGEpfTsKcC5PYmplY3QuZGVmaW5lUHJvcGVydGllcyhjZC5wcm90b3R5cGUse2FjdGl2ZUVsZW1lbnQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHoodGhpcy5ub2RlKXx8dGhpcy5ub2RlLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9OT0RFKXJldHVybiB0aGlzLm5vZGUuX19zaGFkeV9hY3RpdmVFbGVtZW50fX0sX2FjdGl2ZUVsZW1lbnQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZUVsZW1lbnR9fSxob3N0Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtpZih6KHRoaXMubm9kZSkpcmV0dXJuIHRoaXMubm9kZS5ob3N0fX0scGFyZW50Tm9kZTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3BhcmVudE5vZGV9fSxmaXJzdENoaWxkOntjb25maWd1cmFibGU6ITAsCmVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2ZpcnN0Q2hpbGR9fSxsYXN0Q2hpbGQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9sYXN0Q2hpbGR9fSxuZXh0U2libGluZzp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X25leHRTaWJsaW5nfX0scHJldmlvdXNTaWJsaW5nOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcHJldmlvdXNTaWJsaW5nfX0sY2hpbGROb2Rlczp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2NoaWxkTm9kZXN9fSxwYXJlbnRFbGVtZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCwKZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3BhcmVudEVsZW1lbnR9fSxmaXJzdEVsZW1lbnRDaGlsZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2ZpcnN0RWxlbWVudENoaWxkfX0sbGFzdEVsZW1lbnRDaGlsZDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2xhc3RFbGVtZW50Q2hpbGR9fSxuZXh0RWxlbWVudFNpYmxpbmc6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9uZXh0RWxlbWVudFNpYmxpbmd9fSxwcmV2aW91c0VsZW1lbnRTaWJsaW5nOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfcHJldmlvdXNFbGVtZW50U2libGluZ319LApjaGlsZHJlbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X2NoaWxkcmVufX0sY2hpbGRFbGVtZW50Q291bnQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9jaGlsZEVsZW1lbnRDb3VudH19LHNoYWRvd1Jvb3Q6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9zaGFkb3dSb290fX0sYXNzaWduZWRTbG90Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfYXNzaWduZWRTbG90fX0saXNDb25uZWN0ZWQ6e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9pc0Nvbm5lY3RlZH19LGlubmVySFRNTDp7Y29uZmlndXJhYmxlOiEwLAplbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGUuX19zaGFkeV9pbm5lckhUTUx9LHNldDpmdW5jdGlvbihhKXt0aGlzLm5vZGUuX19zaGFkeV9pbm5lckhUTUw9YX19LHRleHRDb250ZW50Ontjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub2RlLl9fc2hhZHlfdGV4dENvbnRlbnR9LHNldDpmdW5jdGlvbihhKXt0aGlzLm5vZGUuX19zaGFkeV90ZXh0Q29udGVudD1hfX0sc2xvdDp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZS5fX3NoYWR5X3Nsb3R9LHNldDpmdW5jdGlvbihhKXt0aGlzLm5vZGUuX19zaGFkeV9zbG90PWF9fX0pOwpjYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjZC5wcm90b3R5cGUsYSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9kZVsiX19zaGFkeV8iK2FdfSxzZXQ6ZnVuY3Rpb24oYil7dGhpcy5ub2RlWyJfX3NoYWR5XyIrYV09Yn0sY29uZmlndXJhYmxlOiEwfSl9KTt2YXIgZGQ9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gZWQoYSl7aWYoeihhKXx8YSBpbnN0YW5jZW9mIGNkKXJldHVybiBhO3ZhciBiPWRkLmdldChhKTtifHwoYj1uZXcgY2QoYSksZGQuc2V0KGEsYikpO3JldHVybiBifTt2YXIgZmQ9Qih7ZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihhKXtaYSgpO3JldHVybiB0aGlzLl9fc2hhZHlfbmF0aXZlX2Rpc3BhdGNoRXZlbnQoYSl9LGFkZEV2ZW50TGlzdGVuZXI6VWIscmVtb3ZlRXZlbnRMaXN0ZW5lcjpXYn0pO3ZhciBnZD1CKHtnZXQgYXNzaWduZWRTbG90KCl7dmFyIGE9dGhpcy5fX3NoYWR5X3BhcmVudE5vZGU7KGE9YSYmYS5fX3NoYWR5X3NoYWRvd1Jvb3QpJiZUYyhhKTtyZXR1cm4oYT12KHRoaXMpKSYmYS5hc3NpZ25lZFNsb3R8fG51bGx9fSk7dmFyIGhkPXdpbmRvdy5kb2N1bWVudDtmdW5jdGlvbiBpZChhLGIpe2lmKCJzbG90Ij09PWIpYT1hLl9fc2hhZHlfcGFyZW50Tm9kZSxMYShhKSYmQWModihhKS5yb290KTtlbHNlIGlmKCJzbG90Ij09PWEubG9jYWxOYW1lJiYibmFtZSI9PT1iJiYoYj14YyhhKSkpe2lmKGIuYSl7VWMoYik7dmFyIGM9YS53YSxkPVljKGEpO2lmKGQhPT1jKXtjPWIuYltjXTt2YXIgZT1jLmluZGV4T2YoYSk7MDw9ZSYmYy5zcGxpY2UoZSwxKTtjPWIuYltkXXx8KGIuYltkXT1bXSk7Yy5wdXNoKGEpOzE8Yy5sZW5ndGgmJihiLmJbZF09WmMoYykpfX1BYyhiKX19CnZhciBqZD1CKHtnZXQgcHJldmlvdXNFbGVtZW50U2libGluZygpe3ZhciBhPXYodGhpcyk7aWYoYSYmdm9pZCAwIT09YS5wcmV2aW91c1NpYmxpbmcpe2ZvcihhPXRoaXMuX19zaGFkeV9wcmV2aW91c1NpYmxpbmc7YSYmYS5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFOylhPWEuX19zaGFkeV9wcmV2aW91c1NpYmxpbmc7cmV0dXJuIGF9cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfcHJldmlvdXNFbGVtZW50U2libGluZ30sZ2V0IG5leHRFbGVtZW50U2libGluZygpe3ZhciBhPXYodGhpcyk7aWYoYSYmdm9pZCAwIT09YS5uZXh0U2libGluZyl7Zm9yKGE9dGhpcy5fX3NoYWR5X25leHRTaWJsaW5nO2EmJmEubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERTspYT1hLl9fc2hhZHlfbmV4dFNpYmxpbmc7cmV0dXJuIGF9cmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfbmV4dEVsZW1lbnRTaWJsaW5nfSxnZXQgc2xvdCgpe3JldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgic2xvdCIpfSwKc2V0IHNsb3QoYSl7dGhpcy5fX3NoYWR5X3NldEF0dHJpYnV0ZSgic2xvdCIsYSl9LGdldCBzaGFkb3dSb290KCl7dmFyIGE9dih0aGlzKTtyZXR1cm4gYSYmYS5wYXx8bnVsbH0sZ2V0IGNsYXNzTmFtZSgpe3JldHVybiB0aGlzLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiJ9LHNldCBjbGFzc05hbWUoYSl7dGhpcy5fX3NoYWR5X3NldEF0dHJpYnV0ZSgiY2xhc3MiLGEpfSxzZXRBdHRyaWJ1dGU6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLm93bmVyRG9jdW1lbnQhPT1oZCl0aGlzLl9fc2hhZHlfbmF0aXZlX3NldEF0dHJpYnV0ZShhLGIpO2Vsc2V7dmFyIGM7KGM9RygpKSYmImNsYXNzIj09PWE/KGMuc2V0RWxlbWVudENsYXNzKHRoaXMsYiksYz0hMCk6Yz0hMTtjfHwodGhpcy5fX3NoYWR5X25hdGl2ZV9zZXRBdHRyaWJ1dGUoYSxiKSxpZCh0aGlzLGEpKX19LHJlbW92ZUF0dHJpYnV0ZTpmdW5jdGlvbihhKXt0aGlzLl9fc2hhZHlfbmF0aXZlX3JlbW92ZUF0dHJpYnV0ZShhKTtpZCh0aGlzLAphKX0sYXR0YWNoU2hhZG93OmZ1bmN0aW9uKGEpe2lmKCF0aGlzKXRocm93IEVycm9yKCJNdXN0IHByb3ZpZGUgYSBob3N0LiIpO2lmKCFhKXRocm93IEVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cy4iKTtyZXR1cm4gbmV3IFNjKE9jLHRoaXMsYSl9fSk7dmFyIGtkPUIoe2JsdXI6ZnVuY3Rpb24oKXt2YXIgYT12KHRoaXMpOyhhPShhPWEmJmEucm9vdCkmJmEuYWN0aXZlRWxlbWVudCk/YS5fX3NoYWR5X2JsdXIoKTp0aGlzLl9fc2hhZHlfbmF0aXZlX2JsdXIoKX19KTtjYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2tkW2FdPXtzZXQ6ZnVuY3Rpb24oYil7dmFyIGM9dSh0aGlzKSxkPWEuc3Vic3RyaW5nKDIpO2MuT1thXSYmdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKGQsYy5PW2FdKTt0aGlzLl9fc2hhZHlfYWRkRXZlbnRMaXN0ZW5lcihkLGIpO2MuT1thXT1ifSxnZXQ6ZnVuY3Rpb24oKXt2YXIgYj12KHRoaXMpO3JldHVybiBiJiZiLk9bYV19LGNvbmZpZ3VyYWJsZTohMH19KTt2YXIgbGQ9Qih7YXNzaWduZWROb2RlczpmdW5jdGlvbihhKXtpZigic2xvdCI9PT10aGlzLmxvY2FsTmFtZSl7dmFyIGI9dGhpcy5fX3NoYWR5X2dldFJvb3ROb2RlKCk7YiYmeihiKSYmVGMoYik7cmV0dXJuKGI9dih0aGlzKSk/KGEmJmEuZmxhdHRlbj9iLkQ6Yi5hc3NpZ25lZE5vZGVzKXx8W106W119fX0pO3ZhciBtZD13aW5kb3cuZG9jdW1lbnQsbmQ9Qih7aW1wb3J0Tm9kZTpmdW5jdGlvbihhLGIpe2lmKGEub3duZXJEb2N1bWVudCE9PW1kfHwidGVtcGxhdGUiPT09YS5sb2NhbE5hbWUpcmV0dXJuIHRoaXMuX19zaGFkeV9uYXRpdmVfaW1wb3J0Tm9kZShhLGIpO3ZhciBjPXRoaXMuX19zaGFkeV9uYXRpdmVfaW1wb3J0Tm9kZShhLCExKTtpZihiKXthPWEuX19zaGFkeV9jaGlsZE5vZGVzO2I9MDtmb3IodmFyIGQ7YjxhLmxlbmd0aDtiKyspZD10aGlzLl9fc2hhZHlfaW1wb3J0Tm9kZShhW2JdLCEwKSxjLl9fc2hhZHlfYXBwZW5kQ2hpbGQoZCl9cmV0dXJuIGN9fSk7dmFyIG9kPUIoe2FkZEV2ZW50TGlzdGVuZXI6VWIuYmluZCh3aW5kb3cpLHJlbW92ZUV2ZW50TGlzdGVuZXI6V2IuYmluZCh3aW5kb3cpfSk7dmFyIHBkPXt9O09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJwYXJlbnRFbGVtZW50IikmJihwZC5wYXJlbnRFbGVtZW50PUNjLnBhcmVudEVsZW1lbnQpO09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjb250YWlucyIpJiYocGQuY29udGFpbnM9Q2MuY29udGFpbnMpO09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjaGlsZHJlbiIpJiYocGQuY2hpbGRyZW49RmMuY2hpbGRyZW4pO09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKSYmKHBkLmlubmVySFRNTD1MYy5pbm5lckhUTUwpO09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSFRNTEVsZW1lbnQucHJvdG90eXBlLCJjbGFzc05hbWUiKSYmKHBkLmNsYXNzTmFtZT1qZC5jbGFzc05hbWUpOwp2YXIgcWQ9e0V2ZW50VGFyZ2V0OltmZF0sTm9kZTpbQ2Msd2luZG93LkV2ZW50VGFyZ2V0P251bGw6ZmRdLFRleHQ6W2dkXSxFbGVtZW50OltqZCxGYyxnZCwhdy5tfHwiaW5uZXJIVE1MImluIEVsZW1lbnQucHJvdG90eXBlP0xjOm51bGwsd2luZG93LkhUTUxTbG90RWxlbWVudD9udWxsOmxkXSxIVE1MRWxlbWVudDpba2QscGRdLEhUTUxTbG90RWxlbWVudDpbbGRdLERvY3VtZW50RnJhZ21lbnQ6W0hjLEljXSxEb2N1bWVudDpbbmQsSGMsSWMsSmNdLFdpbmRvdzpbb2RdfSxyZD13Lm0/bnVsbDpbImlubmVySFRNTCIsInRleHRDb250ZW50Il07ZnVuY3Rpb24gc2QoYSl7dmFyIGI9YT9udWxsOnJkLGM9e30sZDtmb3IoZCBpbiBxZCljLlc9d2luZG93W2RdJiZ3aW5kb3dbZF0ucHJvdG90eXBlLHFkW2RdLmZvckVhY2goZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBjLlcmJmQmJkEoYy5XLGQsYSxiKX19KGMpKSxjPXtXOmMuV319O2lmKHcuZWEpe3ZhciBTaGFkeURPTT17aW5Vc2U6dy5lYSxwYXRjaDpmdW5jdGlvbihhKXtGYihhKTtFYihhKTtyZXR1cm4gYX0saXNTaGFkeVJvb3Q6eixlbnF1ZXVlOllhLGZsdXNoOlphLGZsdXNoSW5pdGlhbDpmdW5jdGlvbihhKXshYS5iYSYmYS5CJiZUYyhhKX0sc2V0dGluZ3M6dyxmaWx0ZXJNdXRhdGlvbnM6ZGIsb2JzZXJ2ZUNoaWxkcmVuOmJiLHVub2JzZXJ2ZUNoaWxkcmVuOmNiLGRlZmVyQ29ubmVjdGlvbkNhbGxiYWNrczp3LmRlZmVyQ29ubmVjdGlvbkNhbGxiYWNrcyxwcmVmZXJQZXJmb3JtYW5jZTp3LnByZWZlclBlcmZvcm1hbmNlLGhhbmRsZXNEeW5hbWljU2NvcGluZzohMCx3cmFwOncuSj9lZDpmdW5jdGlvbihhKXtyZXR1cm4gYX0sV3JhcHBlcjpjZCxjb21wb3NlZFBhdGg6TWIsbm9QYXRjaDp3LkosbmF0aXZlTWV0aG9kczpxYixuYXRpdmVUcmVlOnJifTt3aW5kb3cuU2hhZHlET009U2hhZHlET007eWIoKTtzZCgiX19zaGFkeV8iKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsCiJfYWN0aXZlRWxlbWVudCIsSmMuYWN0aXZlRWxlbWVudCk7QShXaW5kb3cucHJvdG90eXBlLG9kLCJfX3NoYWR5XyIpO3cuSnx8KHNkKCksYmMoKSk7WGIoKTt3aW5kb3cuRXZlbnQ9WmI7d2luZG93LkN1c3RvbUV2ZW50PSRiO3dpbmRvdy5Nb3VzZUV2ZW50PWFjO3dpbmRvdy5TaGFkb3dSb290PVNjfTt2YXIgdGQ9bmV3IFNldCgiYW5ub3RhdGlvbi14bWwgY29sb3ItcHJvZmlsZSBmb250LWZhY2UgZm9udC1mYWNlLXNyYyBmb250LWZhY2UtdXJpIGZvbnQtZmFjZS1mb3JtYXQgZm9udC1mYWNlLW5hbWUgbWlzc2luZy1nbHlwaCIuc3BsaXQoIiAiKSk7ZnVuY3Rpb24gdWQoYSl7dmFyIGI9dGQuaGFzKGEpO2E9L15bYS16XVsuMC05X2Etel0qLVtcLS4wLTlfYS16XSokLy50ZXN0KGEpO3JldHVybiFiJiZhfWZ1bmN0aW9uIEgoYSl7dmFyIGI9YS5pc0Nvbm5lY3RlZDtpZih2b2lkIDAhPT1iKXJldHVybiBiO2Zvcig7YSYmIShhLl9fQ0VfaXNJbXBvcnREb2N1bWVudHx8YSBpbnN0YW5jZW9mIERvY3VtZW50KTspYT1hLnBhcmVudE5vZGV8fCh3aW5kb3cuU2hhZG93Um9vdCYmYSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/YS5ob3N0OnZvaWQgMCk7cmV0dXJuISghYXx8IShhLl9fQ0VfaXNJbXBvcnREb2N1bWVudHx8YSBpbnN0YW5jZW9mIERvY3VtZW50KSl9CmZ1bmN0aW9uIHZkKGEsYil7Zm9yKDtiJiZiIT09YSYmIWIubmV4dFNpYmxpbmc7KWI9Yi5wYXJlbnROb2RlO3JldHVybiBiJiZiIT09YT9iLm5leHRTaWJsaW5nOm51bGx9CmZ1bmN0aW9uIHdkKGEsYixjKXtjPXZvaWQgMD09PWM/bmV3IFNldDpjO2Zvcih2YXIgZD1hO2Q7KXtpZihkLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpe3ZhciBlPWQ7YihlKTt2YXIgZj1lLmxvY2FsTmFtZTtpZigibGluayI9PT1mJiYiaW1wb3J0Ij09PWUuZ2V0QXR0cmlidXRlKCJyZWwiKSl7ZD1lLmltcG9ydDtpZihkIGluc3RhbmNlb2YgTm9kZSYmIWMuaGFzKGQpKWZvcihjLmFkZChkKSxkPWQuZmlyc3RDaGlsZDtkO2Q9ZC5uZXh0U2libGluZyl3ZChkLGIsYyk7ZD12ZChhLGUpO2NvbnRpbnVlfWVsc2UgaWYoInRlbXBsYXRlIj09PWYpe2Q9dmQoYSxlKTtjb250aW51ZX1pZihlPWUuX19DRV9zaGFkb3dSb290KWZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyl3ZChlLGIsYyl9ZD1kLmZpcnN0Q2hpbGQ/ZC5maXJzdENoaWxkOnZkKGEsZCl9fWZ1bmN0aW9uIEkoYSxiLGMpe2FbYl09Y307ZnVuY3Rpb24geGQoKXt0aGlzLmE9bmV3IE1hcDt0aGlzLmc9bmV3IE1hcDt0aGlzLmY9W107dGhpcy5jPSExfWZ1bmN0aW9uIHlkKGEsYixjKXthLmEuc2V0KGIsYyk7YS5nLnNldChjLmNvbnN0cnVjdG9yRnVuY3Rpb24sYyl9ZnVuY3Rpb24gemQoYSxiKXthLmM9ITA7YS5mLnB1c2goYil9ZnVuY3Rpb24gQWQoYSxiKXthLmMmJndkKGIsZnVuY3Rpb24oYil7cmV0dXJuIGEuYihiKX0pfXhkLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEpe2lmKHRoaXMuYyYmIWEuX19DRV9wYXRjaGVkKXthLl9fQ0VfcGF0Y2hlZD0hMDtmb3IodmFyIGI9MDtiPHRoaXMuZi5sZW5ndGg7YisrKXRoaXMuZltiXShhKX19O2Z1bmN0aW9uIEooYSxiKXt2YXIgYz1bXTt3ZChiLGZ1bmN0aW9uKGEpe3JldHVybiBjLnB1c2goYSl9KTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKXt2YXIgZD1jW2JdOzE9PT1kLl9fQ0Vfc3RhdGU/YS5jb25uZWN0ZWRDYWxsYmFjayhkKTpCZChhLGQpfX0KZnVuY3Rpb24gSyhhLGIpe3ZhciBjPVtdO3dkKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGMucHVzaChhKX0pO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07MT09PWQuX19DRV9zdGF0ZSYmYS5kaXNjb25uZWN0ZWRDYWxsYmFjayhkKX19CmZ1bmN0aW9uIEwoYSxiLGMpe2M9dm9pZCAwPT09Yz97fTpjO3ZhciBkPWMuWGF8fG5ldyBTZXQsZT1jLll8fGZ1bmN0aW9uKGIpe3JldHVybiBCZChhLGIpfSxmPVtdO3dkKGIsZnVuY3Rpb24oYil7aWYoImxpbmsiPT09Yi5sb2NhbE5hbWUmJiJpbXBvcnQiPT09Yi5nZXRBdHRyaWJ1dGUoInJlbCIpKXt2YXIgYz1iLmltcG9ydDtjIGluc3RhbmNlb2YgTm9kZSYmKGMuX19DRV9pc0ltcG9ydERvY3VtZW50PSEwLGMuX19DRV9oYXNSZWdpc3RyeT0hMCk7YyYmImNvbXBsZXRlIj09PWMucmVhZHlTdGF0ZT9jLl9fQ0VfZG9jdW1lbnRMb2FkSGFuZGxlZD0hMDpiLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7dmFyIGM9Yi5pbXBvcnQ7aWYoIWMuX19DRV9kb2N1bWVudExvYWRIYW5kbGVkKXtjLl9fQ0VfZG9jdW1lbnRMb2FkSGFuZGxlZD0hMDt2YXIgZj1uZXcgU2V0KGQpO2YuZGVsZXRlKGMpO0woYSxjLHtYYTpmLFk6ZX0pfX0pfWVsc2UgZi5wdXNoKGIpfSxkKTtpZihhLmMpZm9yKGI9CjA7YjxmLmxlbmd0aDtiKyspYS5iKGZbYl0pO2ZvcihiPTA7YjxmLmxlbmd0aDtiKyspZShmW2JdKX0KZnVuY3Rpb24gQmQoYSxiKXtpZih2b2lkIDA9PT1iLl9fQ0Vfc3RhdGUpe3ZhciBjPWIub3duZXJEb2N1bWVudDtpZihjLmRlZmF1bHRWaWV3fHxjLl9fQ0VfaXNJbXBvcnREb2N1bWVudCYmYy5fX0NFX2hhc1JlZ2lzdHJ5KWlmKGM9YS5hLmdldChiLmxvY2FsTmFtZSkpe2MuY29uc3RydWN0aW9uU3RhY2sucHVzaChiKTt2YXIgZD1jLmNvbnN0cnVjdG9yRnVuY3Rpb247dHJ5e3RyeXtpZihuZXcgZCE9PWIpdGhyb3cgRXJyb3IoIlRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBkaWQgbm90IHByb2R1Y2UgdGhlIGVsZW1lbnQgYmVpbmcgdXBncmFkZWQuIik7fWZpbmFsbHl7Yy5jb25zdHJ1Y3Rpb25TdGFjay5wb3AoKX19Y2F0Y2goZyl7dGhyb3cgYi5fX0NFX3N0YXRlPTIsZzt9Yi5fX0NFX3N0YXRlPTE7Yi5fX0NFX2RlZmluaXRpb249YztpZihjLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaylmb3IoYz1jLm9ic2VydmVkQXR0cmlidXRlcyxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPQpjW2RdLGY9Yi5nZXRBdHRyaWJ1dGUoZSk7bnVsbCE9PWYmJmEuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKGIsZSxudWxsLGYsbnVsbCl9SChiKSYmYS5jb25uZWN0ZWRDYWxsYmFjayhiKX19fXhkLnByb3RvdHlwZS5jb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj1hLl9fQ0VfZGVmaW5pdGlvbjtiLmNvbm5lY3RlZENhbGxiYWNrJiZiLmNvbm5lY3RlZENhbGxiYWNrLmNhbGwoYSl9O3hkLnByb3RvdHlwZS5kaXNjb25uZWN0ZWRDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj1hLl9fQ0VfZGVmaW5pdGlvbjtiLmRpc2Nvbm5lY3RlZENhbGxiYWNrJiZiLmRpc2Nvbm5lY3RlZENhbGxiYWNrLmNhbGwoYSl9Owp4ZC5wcm90b3R5cGUuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5fX0NFX2RlZmluaXRpb247Zi5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2smJi0xPGYub2JzZXJ2ZWRBdHRyaWJ1dGVzLmluZGV4T2YoYikmJmYuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrLmNhbGwoYSxiLGMsZCxlKX07ZnVuY3Rpb24gQ2QoYSl7dmFyIGI9ZG9jdW1lbnQ7dGhpcy5iPWE7dGhpcy5hPWI7dGhpcy5GPXZvaWQgMDtMKHRoaXMuYix0aGlzLmEpOyJsb2FkaW5nIj09PXRoaXMuYS5yZWFkeVN0YXRlJiYodGhpcy5GPW5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMuYy5iaW5kKHRoaXMpKSx0aGlzLkYub2JzZXJ2ZSh0aGlzLmEse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSkpfWZ1bmN0aW9uIERkKGEpe2EuRiYmYS5GLmRpc2Nvbm5lY3QoKX1DZC5wcm90b3R5cGUuYz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmEucmVhZHlTdGF0ZTsiaW50ZXJhY3RpdmUiIT09YiYmImNvbXBsZXRlIiE9PWJ8fERkKHRoaXMpO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspZm9yKHZhciBjPWFbYl0uYWRkZWROb2RlcyxkPTA7ZDxjLmxlbmd0aDtkKyspTCh0aGlzLmIsY1tkXSl9O2Z1bmN0aW9uIEVkKCl7dmFyIGE9dGhpczt0aGlzLmE9dGhpcy5oPXZvaWQgMDt0aGlzLmI9bmV3IFByb21pc2UoZnVuY3Rpb24oYil7YS5hPWI7YS5oJiZiKGEuaCl9KX1FZC5wcm90b3R5cGUucmVzb2x2ZT1mdW5jdGlvbihhKXtpZih0aGlzLmgpdGhyb3cgRXJyb3IoIkFscmVhZHkgcmVzb2x2ZWQuIik7dGhpcy5oPWE7dGhpcy5hJiZ0aGlzLmEoYSl9O2Z1bmN0aW9uIE4oYSl7dGhpcy5jPSExO3RoaXMuYT1hO3RoaXMubD1uZXcgTWFwO3RoaXMuZj1mdW5jdGlvbihhKXtyZXR1cm4gYSgpfTt0aGlzLmI9ITE7dGhpcy5nPVtdO3RoaXMuZGE9bmV3IENkKGEpfW49Ti5wcm90b3R5cGU7Cm4uc2E9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzO2lmKCEoYiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcnMgbXVzdCBiZSBmdW5jdGlvbnMuIik7aWYoIXVkKGEpKXRocm93IG5ldyBTeW50YXhFcnJvcigiVGhlIGVsZW1lbnQgbmFtZSAnIithKyInIGlzIG5vdCB2YWxpZC4iKTtpZih0aGlzLmEuYS5nZXQoYSkpdGhyb3cgRXJyb3IoIkEgY3VzdG9tIGVsZW1lbnQgd2l0aCBuYW1lICciK2ErIicgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkLiIpO2lmKHRoaXMuYyl0aHJvdyBFcnJvcigiQSBjdXN0b20gZWxlbWVudCBpcyBhbHJlYWR5IGJlaW5nIGRlZmluZWQuIik7dGhpcy5jPSEwO3RyeXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1lW2FdO2lmKHZvaWQgMCE9PWImJiEoYiBpbnN0YW5jZW9mIEZ1bmN0aW9uKSl0aHJvdyBFcnJvcigiVGhlICciK2ErIicgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uLiIpOwpyZXR1cm4gYn0sZT1iLnByb3RvdHlwZTtpZighKGUgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvcidzIHByb3RvdHlwZSBpcyBub3QgYW4gb2JqZWN0LiIpO3ZhciBmPWQoImNvbm5lY3RlZENhbGxiYWNrIik7dmFyIGc9ZCgiZGlzY29ubmVjdGVkQ2FsbGJhY2siKTt2YXIgaD1kKCJhZG9wdGVkQ2FsbGJhY2siKTt2YXIgaz1kKCJhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2siKTt2YXIgbD1iLm9ic2VydmVkQXR0cmlidXRlc3x8W119Y2F0Y2gobSl7cmV0dXJufWZpbmFsbHl7dGhpcy5jPSExfWI9e2xvY2FsTmFtZTphLGNvbnN0cnVjdG9yRnVuY3Rpb246Yixjb25uZWN0ZWRDYWxsYmFjazpmLGRpc2Nvbm5lY3RlZENhbGxiYWNrOmcsYWRvcHRlZENhbGxiYWNrOmgsYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrOmssb2JzZXJ2ZWRBdHRyaWJ1dGVzOmwsY29uc3RydWN0aW9uU3RhY2s6W119O3lkKHRoaXMuYSwKYSxiKTt0aGlzLmcucHVzaChiKTt0aGlzLmJ8fCh0aGlzLmI9ITAsdGhpcy5mKGZ1bmN0aW9uKCl7cmV0dXJuIEZkKGMpfSkpfTtuLlk9ZnVuY3Rpb24oYSl7TCh0aGlzLmEsYSl9OwpmdW5jdGlvbiBGZChhKXtpZighMSE9PWEuYil7YS5iPSExO2Zvcih2YXIgYj1hLmcsYz1bXSxkPW5ldyBNYXAsZT0wO2U8Yi5sZW5ndGg7ZSsrKWQuc2V0KGJbZV0ubG9jYWxOYW1lLFtdKTtMKGEuYSxkb2N1bWVudCx7WTpmdW5jdGlvbihiKXtpZih2b2lkIDA9PT1iLl9fQ0Vfc3RhdGUpe3ZhciBlPWIubG9jYWxOYW1lLGY9ZC5nZXQoZSk7Zj9mLnB1c2goYik6YS5hLmEuZ2V0KGUpJiZjLnB1c2goYil9fX0pO2ZvcihlPTA7ZTxjLmxlbmd0aDtlKyspQmQoYS5hLGNbZV0pO2Zvcig7MDxiLmxlbmd0aDspe3ZhciBmPWIuc2hpZnQoKTtlPWYubG9jYWxOYW1lO2Y9ZC5nZXQoZi5sb2NhbE5hbWUpO2Zvcih2YXIgZz0wO2c8Zi5sZW5ndGg7ZysrKUJkKGEuYSxmW2ddKTsoZT1hLmwuZ2V0KGUpKSYmZS5yZXNvbHZlKHZvaWQgMCl9fX1uLmdldD1mdW5jdGlvbihhKXtpZihhPXRoaXMuYS5hLmdldChhKSlyZXR1cm4gYS5jb25zdHJ1Y3RvckZ1bmN0aW9ufTsKbi50YT1mdW5jdGlvbihhKXtpZighdWQoYSkpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBTeW50YXhFcnJvcigiJyIrYSsiJyBpcyBub3QgYSB2YWxpZCBjdXN0b20gZWxlbWVudCBuYW1lLiIpKTt2YXIgYj10aGlzLmwuZ2V0KGEpO2lmKGIpcmV0dXJuIGIuYjtiPW5ldyBFZDt0aGlzLmwuc2V0KGEsYik7dGhpcy5hLmEuZ2V0KGEpJiYhdGhpcy5nLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIubG9jYWxOYW1lPT09YX0pJiZiLnJlc29sdmUodm9pZCAwKTtyZXR1cm4gYi5ifTtuLlBhPWZ1bmN0aW9uKGEpe0RkKHRoaXMuZGEpO3ZhciBiPXRoaXMuZjt0aGlzLmY9ZnVuY3Rpb24oYyl7cmV0dXJuIGEoZnVuY3Rpb24oKXtyZXR1cm4gYihjKX0pfX07d2luZG93LkN1c3RvbUVsZW1lbnRSZWdpc3RyeT1OO04ucHJvdG90eXBlLmRlZmluZT1OLnByb3RvdHlwZS5zYTtOLnByb3RvdHlwZS51cGdyYWRlPU4ucHJvdG90eXBlLlk7Ti5wcm90b3R5cGUuZ2V0PU4ucHJvdG90eXBlLmdldDsKTi5wcm90b3R5cGUud2hlbkRlZmluZWQ9Ti5wcm90b3R5cGUudGE7Ti5wcm90b3R5cGUucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjaz1OLnByb3RvdHlwZS5QYTt2YXIgR2Q9d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50LEhkPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuY3JlYXRlRWxlbWVudE5TLElkPXdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuaW1wb3J0Tm9kZSxKZD13aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLnByZXBlbmQsS2Q9d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5hcHBlbmQsTGQ9d2luZG93LkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnByZXBlbmQsTWQ9d2luZG93LkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZCxOZD13aW5kb3cuTm9kZS5wcm90b3R5cGUuY2xvbmVOb2RlLE9kPXdpbmRvdy5Ob2RlLnByb3RvdHlwZS5hcHBlbmRDaGlsZCxQZD13aW5kb3cuTm9kZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlLFFkPXdpbmRvdy5Ob2RlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCxSZD13aW5kb3cuTm9kZS5wcm90b3R5cGUucmVwbGFjZUNoaWxkLFNkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93Lk5vZGUucHJvdG90eXBlLAoidGV4dENvbnRlbnQiKSxUZD13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYXR0YWNoU2hhZG93LFVkPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LkVsZW1lbnQucHJvdG90eXBlLCJpbm5lckhUTUwiKSxWZD13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlLFdkPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUsWGQ9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZSxZZD13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMsWmQ9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TLCRkPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUyxhZT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0QWRqYWNlbnRFbGVtZW50LGJlPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUwsY2U9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnByZXBlbmQsCmRlPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5hcHBlbmQsZWU9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmJlZm9yZSxmZT13aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuYWZ0ZXIsZ2U9d2luZG93LkVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VXaXRoLGhlPXdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5yZW1vdmUsaWU9d2luZG93LkhUTUxFbGVtZW50LGplPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LkhUTUxFbGVtZW50LnByb3RvdHlwZSwiaW5uZXJIVE1MIiksa2U9d2luZG93LkhUTUxFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEVsZW1lbnQsbGU9d2luZG93LkhUTUxFbGVtZW50LnByb3RvdHlwZS5pbnNlcnRBZGphY2VudEhUTUw7dmFyIG1lPW5ldyBmdW5jdGlvbigpe307ZnVuY3Rpb24gbmUoKXt2YXIgYT1vZTt3aW5kb3cuSFRNTEVsZW1lbnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7dmFyIGI9dGhpcy5jb25zdHJ1Y3RvcixkPWEuZy5nZXQoYik7aWYoIWQpdGhyb3cgRXJyb3IoIlRoZSBjdXN0b20gZWxlbWVudCBiZWluZyBjb25zdHJ1Y3RlZCB3YXMgbm90IHJlZ2lzdGVyZWQgd2l0aCBgY3VzdG9tRWxlbWVudHNgLiIpO3ZhciBlPWQuY29uc3RydWN0aW9uU3RhY2s7aWYoMD09PWUubGVuZ3RoKXJldHVybiBlPUdkLmNhbGwoZG9jdW1lbnQsZC5sb2NhbE5hbWUpLE9iamVjdC5zZXRQcm90b3R5cGVPZihlLGIucHJvdG90eXBlKSxlLl9fQ0Vfc3RhdGU9MSxlLl9fQ0VfZGVmaW5pdGlvbj1kLGEuYihlKSxlO2Q9ZS5sZW5ndGgtMTt2YXIgZj1lW2RdO2lmKGY9PT1tZSl0aHJvdyBFcnJvcigiVGhlIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIHdhcyBlaXRoZXIgY2FsbGVkIHJlZW50cmFudGx5IGZvciB0aGlzIGNvbnN0cnVjdG9yIG9yIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4iKTsKZVtkXT1tZTtPYmplY3Quc2V0UHJvdG90eXBlT2YoZixiLnByb3RvdHlwZSk7YS5iKGYpO3JldHVybiBmfWIucHJvdG90eXBlPWllLnByb3RvdHlwZTtPYmplY3QuZGVmaW5lUHJvcGVydHkoYi5wcm90b3R5cGUsImNvbnN0cnVjdG9yIix7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6Yn0pO3JldHVybiBifSgpfTtmdW5jdGlvbiBwZShhLGIsYyl7ZnVuY3Rpb24gZChiKXtyZXR1cm4gZnVuY3Rpb24oYyl7Zm9yKHZhciBkPVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7KytlKWRbZV09YXJndW1lbnRzW2VdO2U9W107Zm9yKHZhciBmPVtdLGw9MDtsPGQubGVuZ3RoO2wrKyl7dmFyIG09ZFtsXTttIGluc3RhbmNlb2YgRWxlbWVudCYmSChtKSYmZi5wdXNoKG0pO2lmKG0gaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KWZvcihtPW0uZmlyc3RDaGlsZDttO209bS5uZXh0U2libGluZyllLnB1c2gobSk7ZWxzZSBlLnB1c2gobSl9Yi5hcHBseSh0aGlzLGQpO2ZvcihkPTA7ZDxmLmxlbmd0aDtkKyspSyhhLGZbZF0pO2lmKEgodGhpcykpZm9yKGQ9MDtkPGUubGVuZ3RoO2QrKylmPWVbZF0sZiBpbnN0YW5jZW9mIEVsZW1lbnQmJkooYSxmKX19dm9pZCAwIT09Yy5WJiYoYi5wcmVwZW5kPWQoYy5WKSk7dm9pZCAwIT09Yy5hcHBlbmQmJihiLmFwcGVuZD1kKGMuYXBwZW5kKSl9O2Z1bmN0aW9uIHFlKCl7dmFyIGE9b2U7SShEb2N1bWVudC5wcm90b3R5cGUsImNyZWF0ZUVsZW1lbnQiLGZ1bmN0aW9uKGIpe2lmKHRoaXMuX19DRV9oYXNSZWdpc3RyeSl7dmFyIGM9YS5hLmdldChiKTtpZihjKXJldHVybiBuZXcgYy5jb25zdHJ1Y3RvckZ1bmN0aW9ufWI9R2QuY2FsbCh0aGlzLGIpO2EuYihiKTtyZXR1cm4gYn0pO0koRG9jdW1lbnQucHJvdG90eXBlLCJpbXBvcnROb2RlIixmdW5jdGlvbihiLGMpe2I9SWQuY2FsbCh0aGlzLGIsISFjKTt0aGlzLl9fQ0VfaGFzUmVnaXN0cnk/TChhLGIpOkFkKGEsYik7cmV0dXJuIGJ9KTtJKERvY3VtZW50LnByb3RvdHlwZSwiY3JlYXRlRWxlbWVudE5TIixmdW5jdGlvbihiLGMpe2lmKHRoaXMuX19DRV9oYXNSZWdpc3RyeSYmKG51bGw9PT1ifHwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI9PT1iKSl7dmFyIGQ9YS5hLmdldChjKTtpZihkKXJldHVybiBuZXcgZC5jb25zdHJ1Y3RvckZ1bmN0aW9ufWI9SGQuY2FsbCh0aGlzLApiLGMpO2EuYihiKTtyZXR1cm4gYn0pO3BlKGEsRG9jdW1lbnQucHJvdG90eXBlLHtWOkpkLGFwcGVuZDpLZH0pfTtmdW5jdGlvbiByZSgpe2Z1bmN0aW9uIGEoYSxkKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwidGV4dENvbnRlbnQiLHtlbnVtZXJhYmxlOmQuZW51bWVyYWJsZSxjb25maWd1cmFibGU6ITAsZ2V0OmQuZ2V0LHNldDpmdW5jdGlvbihhKXtpZih0aGlzLm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREUpZC5zZXQuY2FsbCh0aGlzLGEpO2Vsc2V7dmFyIGM9dm9pZCAwO2lmKHRoaXMuZmlyc3RDaGlsZCl7dmFyIGU9dGhpcy5jaGlsZE5vZGVzLGg9ZS5sZW5ndGg7aWYoMDxoJiZIKHRoaXMpKXtjPUFycmF5KGgpO2Zvcih2YXIgaz0wO2s8aDtrKyspY1trXT1lW2tdfX1kLnNldC5jYWxsKHRoaXMsYSk7aWYoYylmb3IoYT0wO2E8Yy5sZW5ndGg7YSsrKUsoYixjW2FdKX19fSl9dmFyIGI9b2U7SShOb2RlLnByb3RvdHlwZSwiaW5zZXJ0QmVmb3JlIixmdW5jdGlvbihhLGQpe2lmKGEgaW5zdGFuY2VvZiBEb2N1bWVudEZyYWdtZW50KXt2YXIgYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoYS5jaGlsZE5vZGVzKTsKYT1QZC5jYWxsKHRoaXMsYSxkKTtpZihIKHRoaXMpKWZvcihkPTA7ZDxjLmxlbmd0aDtkKyspSihiLGNbZF0pO3JldHVybiBhfWM9SChhKTtkPVBkLmNhbGwodGhpcyxhLGQpO2MmJksoYixhKTtIKHRoaXMpJiZKKGIsYSk7cmV0dXJuIGR9KTtJKE5vZGUucHJvdG90eXBlLCJhcHBlbmRDaGlsZCIsZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhLmNoaWxkTm9kZXMpO2E9T2QuY2FsbCh0aGlzLGEpO2lmKEgodGhpcykpZm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspSihiLGNbZV0pO3JldHVybiBhfWM9SChhKTtlPU9kLmNhbGwodGhpcyxhKTtjJiZLKGIsYSk7SCh0aGlzKSYmSihiLGEpO3JldHVybiBlfSk7SShOb2RlLnByb3RvdHlwZSwiY2xvbmVOb2RlIixmdW5jdGlvbihhKXthPU5kLmNhbGwodGhpcywhIWEpO3RoaXMub3duZXJEb2N1bWVudC5fX0NFX2hhc1JlZ2lzdHJ5P0woYixhKToKQWQoYixhKTtyZXR1cm4gYX0pO0koTm9kZS5wcm90b3R5cGUsInJlbW92ZUNoaWxkIixmdW5jdGlvbihhKXt2YXIgYz1IKGEpLGU9UWQuY2FsbCh0aGlzLGEpO2MmJksoYixhKTtyZXR1cm4gZX0pO0koTm9kZS5wcm90b3R5cGUsInJlcGxhY2VDaGlsZCIsZnVuY3Rpb24oYSxkKXtpZihhIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCl7dmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KGEuY2hpbGROb2Rlcyk7YT1SZC5jYWxsKHRoaXMsYSxkKTtpZihIKHRoaXMpKWZvcihLKGIsZCksZD0wO2Q8Yy5sZW5ndGg7ZCsrKUooYixjW2RdKTtyZXR1cm4gYX1jPUgoYSk7dmFyIGY9UmQuY2FsbCh0aGlzLGEsZCksZz1IKHRoaXMpO2cmJksoYixkKTtjJiZLKGIsYSk7ZyYmSihiLGEpO3JldHVybiBmfSk7U2QmJlNkLmdldD9hKE5vZGUucHJvdG90eXBlLFNkKTp6ZChiLGZ1bmN0aW9uKGIpe2EoYix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPQpbXSxiPTA7Yjx0aGlzLmNoaWxkTm9kZXMubGVuZ3RoO2IrKylhLnB1c2godGhpcy5jaGlsZE5vZGVzW2JdLnRleHRDb250ZW50KTtyZXR1cm4gYS5qb2luKCIiKX0sc2V0OmZ1bmN0aW9uKGEpe2Zvcig7dGhpcy5maXJzdENoaWxkOylRZC5jYWxsKHRoaXMsdGhpcy5maXJzdENoaWxkKTtPZC5jYWxsKHRoaXMsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSkpfX0pfSl9O2Z1bmN0aW9uIHNlKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIGZ1bmN0aW9uKGMpe2Zvcih2YXIgZD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoOysrZSlkW2VdPWFyZ3VtZW50c1tlXTtlPVtdO2Zvcih2YXIgaD1bXSxrPTA7azxkLmxlbmd0aDtrKyspe3ZhciBsPWRba107bCBpbnN0YW5jZW9mIEVsZW1lbnQmJkgobCkmJmgucHVzaChsKTtpZihsIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudClmb3IobD1sLmZpcnN0Q2hpbGQ7bDtsPWwubmV4dFNpYmxpbmcpZS5wdXNoKGwpO2Vsc2UgZS5wdXNoKGwpfWIuYXBwbHkodGhpcyxkKTtmb3IoZD0wO2Q8aC5sZW5ndGg7ZCsrKUsoYSxoW2RdKTtpZihIKHRoaXMpKWZvcihkPTA7ZDxlLmxlbmd0aDtkKyspaD1lW2RdLGggaW5zdGFuY2VvZiBFbGVtZW50JiZKKGEsaCl9fXZhciBjPUVsZW1lbnQucHJvdG90eXBlO3ZvaWQgMCE9PWVlJiYoYy5iZWZvcmU9YihlZSkpO3ZvaWQgMCE9PWVlJiYoYy5hZnRlcj1iKGZlKSk7dm9pZCAwIT09Z2UmJgpJKGMsInJlcGxhY2VXaXRoIixmdW5jdGlvbihiKXtmb3IodmFyIGM9W10sZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDsrK2QpY1tkXT1hcmd1bWVudHNbZF07ZD1bXTtmb3IodmFyIGc9W10saD0wO2g8Yy5sZW5ndGg7aCsrKXt2YXIgaz1jW2hdO2sgaW5zdGFuY2VvZiBFbGVtZW50JiZIKGspJiZnLnB1c2goayk7aWYoayBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpZm9yKGs9ay5maXJzdENoaWxkO2s7az1rLm5leHRTaWJsaW5nKWQucHVzaChrKTtlbHNlIGQucHVzaChrKX1oPUgodGhpcyk7Z2UuYXBwbHkodGhpcyxjKTtmb3IoYz0wO2M8Zy5sZW5ndGg7YysrKUsoYSxnW2NdKTtpZihoKWZvcihLKGEsdGhpcyksYz0wO2M8ZC5sZW5ndGg7YysrKWc9ZFtjXSxnIGluc3RhbmNlb2YgRWxlbWVudCYmSihhLGcpfSk7dm9pZCAwIT09aGUmJkkoYywicmVtb3ZlIixmdW5jdGlvbigpe3ZhciBiPUgodGhpcyk7aGUuY2FsbCh0aGlzKTtiJiZLKGEsdGhpcyl9KX07ZnVuY3Rpb24gdGUoKXtmdW5jdGlvbiBhKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImlubmVySFRNTCIse2VudW1lcmFibGU6Yi5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohMCxnZXQ6Yi5nZXQsc2V0OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZT12b2lkIDA7SCh0aGlzKSYmKGU9W10sd2QodGhpcyxmdW5jdGlvbihhKXthIT09YyYmZS5wdXNoKGEpfSkpO2Iuc2V0LmNhbGwodGhpcyxhKTtpZihlKWZvcih2YXIgZj0wO2Y8ZS5sZW5ndGg7ZisrKXt2YXIgZz1lW2ZdOzE9PT1nLl9fQ0Vfc3RhdGUmJmQuZGlzY29ubmVjdGVkQ2FsbGJhY2soZyl9dGhpcy5vd25lckRvY3VtZW50Ll9fQ0VfaGFzUmVnaXN0cnk/TChkLHRoaXMpOkFkKGQsdGhpcyk7cmV0dXJuIGF9fSl9ZnVuY3Rpb24gYihhLGIpe0koYSwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50IixmdW5jdGlvbihhLGMpe3ZhciBlPUgoYyk7YT1iLmNhbGwodGhpcyxhLGMpO2UmJksoZCxjKTtIKGEpJiZKKGQsYyk7cmV0dXJuIGF9KX0KZnVuY3Rpb24gYyhhLGIpe2Z1bmN0aW9uIGMoYSxiKXtmb3IodmFyIGM9W107YSE9PWI7YT1hLm5leHRTaWJsaW5nKWMucHVzaChhKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKUwoZCxjW2JdKX1JKGEsImluc2VydEFkamFjZW50SFRNTCIsZnVuY3Rpb24oYSxkKXthPWEudG9Mb3dlckNhc2UoKTtpZigiYmVmb3JlYmVnaW4iPT09YSl7dmFyIGU9dGhpcy5wcmV2aW91c1NpYmxpbmc7Yi5jYWxsKHRoaXMsYSxkKTtjKGV8fHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkLHRoaXMpfWVsc2UgaWYoImFmdGVyYmVnaW4iPT09YSllPXRoaXMuZmlyc3RDaGlsZCxiLmNhbGwodGhpcyxhLGQpLGModGhpcy5maXJzdENoaWxkLGUpO2Vsc2UgaWYoImJlZm9yZWVuZCI9PT1hKWU9dGhpcy5sYXN0Q2hpbGQsYi5jYWxsKHRoaXMsYSxkKSxjKGV8fHRoaXMuZmlyc3RDaGlsZCxudWxsKTtlbHNlIGlmKCJhZnRlcmVuZCI9PT1hKWU9dGhpcy5uZXh0U2libGluZyxiLmNhbGwodGhpcyxhLGQpLGModGhpcy5uZXh0U2libGluZywKZSk7ZWxzZSB0aHJvdyBuZXcgU3ludGF4RXJyb3IoIlRoZSB2YWx1ZSBwcm92aWRlZCAoIitTdHJpbmcoYSkrIikgaXMgbm90IG9uZSBvZiAnYmVmb3JlYmVnaW4nLCAnYWZ0ZXJiZWdpbicsICdiZWZvcmVlbmQnLCBvciAnYWZ0ZXJlbmQnLiIpO30pfXZhciBkPW9lO1RkJiZJKEVsZW1lbnQucHJvdG90eXBlLCJhdHRhY2hTaGFkb3ciLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9fQ0Vfc2hhZG93Um9vdD1hPVRkLmNhbGwodGhpcyxhKX0pO1VkJiZVZC5nZXQ/YShFbGVtZW50LnByb3RvdHlwZSxVZCk6amUmJmplLmdldD9hKEhUTUxFbGVtZW50LnByb3RvdHlwZSxqZSk6emQoZCxmdW5jdGlvbihiKXthKGIse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBOZC5jYWxsKHRoaXMsITApLmlubmVySFRNTH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPSJ0ZW1wbGF0ZSI9PT10aGlzLmxvY2FsTmFtZSxjPWI/dGhpcy5jb250ZW50OnRoaXMsZD1IZC5jYWxsKGRvY3VtZW50LAp0aGlzLm5hbWVzcGFjZVVSSSx0aGlzLmxvY2FsTmFtZSk7Zm9yKGQuaW5uZXJIVE1MPWE7MDxjLmNoaWxkTm9kZXMubGVuZ3RoOylRZC5jYWxsKGMsYy5jaGlsZE5vZGVzWzBdKTtmb3IoYT1iP2QuY29udGVudDpkOzA8YS5jaGlsZE5vZGVzLmxlbmd0aDspT2QuY2FsbChjLGEuY2hpbGROb2Rlc1swXSl9fSl9KTtJKEVsZW1lbnQucHJvdG90eXBlLCJzZXRBdHRyaWJ1dGUiLGZ1bmN0aW9uKGEsYil7aWYoMSE9PXRoaXMuX19DRV9zdGF0ZSlyZXR1cm4gV2QuY2FsbCh0aGlzLGEsYik7dmFyIGM9VmQuY2FsbCh0aGlzLGEpO1dkLmNhbGwodGhpcyxhLGIpO2I9VmQuY2FsbCh0aGlzLGEpO2QuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKHRoaXMsYSxjLGIsbnVsbCl9KTtJKEVsZW1lbnQucHJvdG90eXBlLCJzZXRBdHRyaWJ1dGVOUyIsZnVuY3Rpb24oYSxiLGMpe2lmKDEhPT10aGlzLl9fQ0Vfc3RhdGUpcmV0dXJuIFpkLmNhbGwodGhpcyxhLGIsYyk7dmFyIGU9WWQuY2FsbCh0aGlzLGEsCmIpO1pkLmNhbGwodGhpcyxhLGIsYyk7Yz1ZZC5jYWxsKHRoaXMsYSxiKTtkLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0aGlzLGIsZSxjLGEpfSk7SShFbGVtZW50LnByb3RvdHlwZSwicmVtb3ZlQXR0cmlidXRlIixmdW5jdGlvbihhKXtpZigxIT09dGhpcy5fX0NFX3N0YXRlKXJldHVybiBYZC5jYWxsKHRoaXMsYSk7dmFyIGI9VmQuY2FsbCh0aGlzLGEpO1hkLmNhbGwodGhpcyxhKTtudWxsIT09YiYmZC5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sodGhpcyxhLGIsbnVsbCxudWxsKX0pO0koRWxlbWVudC5wcm90b3R5cGUsInJlbW92ZUF0dHJpYnV0ZU5TIixmdW5jdGlvbihhLGIpe2lmKDEhPT10aGlzLl9fQ0Vfc3RhdGUpcmV0dXJuICRkLmNhbGwodGhpcyxhLGIpO3ZhciBjPVlkLmNhbGwodGhpcyxhLGIpOyRkLmNhbGwodGhpcyxhLGIpO3ZhciBlPVlkLmNhbGwodGhpcyxhLGIpO2MhPT1lJiZkLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayh0aGlzLGIsYyxlLGEpfSk7a2U/YihIVE1MRWxlbWVudC5wcm90b3R5cGUsCmtlKTphZT9iKEVsZW1lbnQucHJvdG90eXBlLGFlKTpjb25zb2xlLndhcm4oIkN1c3RvbSBFbGVtZW50czogYEVsZW1lbnQjaW5zZXJ0QWRqYWNlbnRFbGVtZW50YCB3YXMgbm90IHBhdGNoZWQuIik7bGU/YyhIVE1MRWxlbWVudC5wcm90b3R5cGUsbGUpOmJlP2MoRWxlbWVudC5wcm90b3R5cGUsYmUpOmNvbnNvbGUud2FybigiQ3VzdG9tIEVsZW1lbnRzOiBgRWxlbWVudCNpbnNlcnRBZGphY2VudEhUTUxgIHdhcyBub3QgcGF0Y2hlZC4iKTtwZShkLEVsZW1lbnQucHJvdG90eXBlLHtWOmNlLGFwcGVuZDpkZX0pO3NlKGQpfTt2YXIgdWU9d2luZG93LmN1c3RvbUVsZW1lbnRzO2lmKCF1ZXx8dWUuZm9yY2VQb2x5ZmlsbHx8ImZ1bmN0aW9uIiE9dHlwZW9mIHVlLmRlZmluZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHVlLmdldCl7dmFyIG9lPW5ldyB4ZDtuZSgpO3FlKCk7cGUob2UsRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUse1Y6TGQsYXBwZW5kOk1kfSk7cmUoKTt0ZSgpO2RvY3VtZW50Ll9fQ0VfaGFzUmVnaXN0cnk9ITA7dmFyIGN1c3RvbUVsZW1lbnRzPW5ldyBOKG9lKTtPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCJjdXN0b21FbGVtZW50cyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmN1c3RvbUVsZW1lbnRzfSl9O2Z1bmN0aW9uIHZlKCl7dGhpcy5lbmQ9dGhpcy5zdGFydD0wO3RoaXMucnVsZXM9dGhpcy5wYXJlbnQ9dGhpcy5wcmV2aW91cz1udWxsO3RoaXMuY3NzVGV4dD10aGlzLnBhcnNlZENzc1RleHQ9IiI7dGhpcy5hdFJ1bGU9ITE7dGhpcy50eXBlPTA7dGhpcy5wYXJzZWRTZWxlY3Rvcj10aGlzLnNlbGVjdG9yPXRoaXMua2V5ZnJhbWVzTmFtZT0iIn0KZnVuY3Rpb24gd2UoYSl7YT1hLnJlcGxhY2UoeGUsIiIpLnJlcGxhY2UoeWUsIiIpO3ZhciBiPXplLGM9YSxkPW5ldyB2ZTtkLnN0YXJ0PTA7ZC5lbmQ9Yy5sZW5ndGg7Zm9yKHZhciBlPWQsZj0wLGc9Yy5sZW5ndGg7ZjxnO2YrKylpZigieyI9PT1jW2ZdKXtlLnJ1bGVzfHwoZS5ydWxlcz1bXSk7dmFyIGg9ZSxrPWgucnVsZXNbaC5ydWxlcy5sZW5ndGgtMV18fG51bGw7ZT1uZXcgdmU7ZS5zdGFydD1mKzE7ZS5wYXJlbnQ9aDtlLnByZXZpb3VzPWs7aC5ydWxlcy5wdXNoKGUpfWVsc2UifSI9PT1jW2ZdJiYoZS5lbmQ9ZisxLGU9ZS5wYXJlbnR8fGQpO3JldHVybiBiKGQsYSl9CmZ1bmN0aW9uIHplKGEsYil7dmFyIGM9Yi5zdWJzdHJpbmcoYS5zdGFydCxhLmVuZC0xKTthLnBhcnNlZENzc1RleHQ9YS5jc3NUZXh0PWMudHJpbSgpO2EucGFyZW50JiYoYz1iLnN1YnN0cmluZyhhLnByZXZpb3VzP2EucHJldmlvdXMuZW5kOmEucGFyZW50LnN0YXJ0LGEuc3RhcnQtMSksYz1BZShjKSxjPWMucmVwbGFjZShCZSwiICIpLGM9Yy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiOyIpKzEpLGM9YS5wYXJzZWRTZWxlY3Rvcj1hLnNlbGVjdG9yPWMudHJpbSgpLGEuYXRSdWxlPTA9PT1jLmluZGV4T2YoIkAiKSxhLmF0UnVsZT8wPT09Yy5pbmRleE9mKCJAbWVkaWEiKT9hLnR5cGU9Q2U6Yy5tYXRjaChEZSkmJihhLnR5cGU9RWUsYS5rZXlmcmFtZXNOYW1lPWEuc2VsZWN0b3Iuc3BsaXQoQmUpLnBvcCgpKTphLnR5cGU9MD09PWMuaW5kZXhPZigiLS0iKT9GZTpHZSk7aWYoYz1hLnJ1bGVzKWZvcih2YXIgZD0wLGU9Yy5sZW5ndGgsZj12b2lkIDA7ZDxlJiYoZj1jW2RdKTtkKyspemUoZiwKYik7cmV0dXJuIGF9ZnVuY3Rpb24gQWUoYSl7cmV0dXJuIGEucmVwbGFjZSgvXFwoWzAtOWEtZl17MSw2fSlccy9naSxmdW5jdGlvbihhLGMpe2E9Yztmb3IoYz02LWEubGVuZ3RoO2MtLTspYT0iMCIrYTtyZXR1cm4iXFwiK2F9KX0KZnVuY3Rpb24gSGUoYSxiLGMpe2M9dm9pZCAwPT09Yz8iIjpjO3ZhciBkPSIiO2lmKGEuY3NzVGV4dHx8YS5ydWxlcyl7dmFyIGU9YS5ydWxlcyxmO2lmKGY9ZSlmPWVbMF0sZj0hKGYmJmYuc2VsZWN0b3ImJjA9PT1mLnNlbGVjdG9yLmluZGV4T2YoIi0tIikpO2lmKGYpe2Y9MDtmb3IodmFyIGc9ZS5sZW5ndGgsaD12b2lkIDA7ZjxnJiYoaD1lW2ZdKTtmKyspZD1IZShoLGIsZCl9ZWxzZSBiP2I9YS5jc3NUZXh0OihiPWEuY3NzVGV4dCxiPWIucmVwbGFjZShJZSwiIikucmVwbGFjZShKZSwiIiksYj1iLnJlcGxhY2UoS2UsIiIpLnJlcGxhY2UoTGUsIiIpKSwoZD1iLnRyaW0oKSkmJihkPSIgICIrZCsiXG4iKX1kJiYoYS5zZWxlY3RvciYmKGMrPWEuc2VsZWN0b3IrIiB7XG4iKSxjKz1kLGEuc2VsZWN0b3ImJihjKz0ifVxuXG4iKSk7cmV0dXJuIGN9CnZhciBHZT0xLEVlPTcsQ2U9NCxGZT0xRTMseGU9L1wvXCpbXipdKlwqKyhbXi8qXVteKl0qXCorKSpcLy9naW0seWU9L0BpbXBvcnRbXjtdKjsvZ2ltLEllPS8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qPyg/Ols7XG5dfCQpL2dpbSxKZT0vKD86XlteO1wtXHN9XSspPy0tW147e31dKj86W157fTtdKj97W159XSo/fSg/Ols7XG5dfCQpPy9naW0sS2U9L0BhcHBseVxzKlwoP1teKTtdKlwpP1xzKig/Ols7XG5dfCQpPy9naW0sTGU9L1teOzpdKj86W147XSo/dmFyXChbXjtdKlwpKD86Wztcbl18JCk/L2dpbSxEZT0vXkBbXlxzXSprZXlmcmFtZXMvLEJlPS9ccysvZzt2YXIgTz0hKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSxNZTtmdW5jdGlvbiBOZShhKXtNZT1hJiZhLnNoaW1jc3Nwcm9wZXJ0aWVzPyExOk98fCEobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQXBwbGVXZWJLaXRcLzYwMXxFZGdlXC8xNS8pfHwhd2luZG93LkNTU3x8IUNTUy5zdXBwb3J0c3x8IUNTUy5zdXBwb3J0cygiYm94LXNoYWRvdyIsIjAgMCAwIHZhcigtLWZvbykiKSl9dmFyIE9lO3dpbmRvdy5TaGFkeUNTUyYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkJiYoT2U9d2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkKTt2YXIgUGU9ISghd2luZG93LlNoYWR5Q1NTfHwhd2luZG93LlNoYWR5Q1NTLmRpc2FibGVSdW50aW1lKTsKd2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzP01lPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhOZSh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOk5lKHdpbmRvdy5XZWJDb21wb25lbnRzJiZ3aW5kb3cuV2ViQ29tcG9uZW50cy5mbGFncyk7dmFyIFE9TWUsUWU9T2U7dmFyIFJlPS8oPzpefFs7XHN7XVxzKikoLS1bXHctXSo/KVxzKjpccyooPzooKD86Jyg/OlxcJ3wuKSo/J3wiKD86XFwifC4pKj8ifFwoW14pXSo/XCl8W159O3tdKSspfFx7KFtefV0qKVx9KD86KD89Wztcc31dKXwkKSkvZ2ksU2U9Lyg/Ol58XFcrKUBhcHBseVxzKlwoPyhbXik7XG5dKilcKT8vZ2ksVGU9LygtLVtcdy1dKylccyooWzosOyldfCQpL2dpLFVlPS8oYW5pbWF0aW9uXHMqOil8KGFuaW1hdGlvbi1uYW1lXHMqOikvLCRlPS9AbWVkaWFccyguKikvLGFmPS9ce1tefV0qXH0vZzt2YXIgYmY9bmV3IFNldDtmdW5jdGlvbiBjZihhLGIpe2lmKCFhKXJldHVybiIiOyJzdHJpbmciPT09dHlwZW9mIGEmJihhPXdlKGEpKTtiJiZkZihhLGIpO3JldHVybiBIZShhLFEpfWZ1bmN0aW9uIGVmKGEpeyFhLl9fY3NzUnVsZXMmJmEudGV4dENvbnRlbnQmJihhLl9fY3NzUnVsZXM9d2UoYS50ZXh0Q29udGVudCkpO3JldHVybiBhLl9fY3NzUnVsZXN8fG51bGx9ZnVuY3Rpb24gZmYoYSl7cmV0dXJuISFhLnBhcmVudCYmYS5wYXJlbnQudHlwZT09PUVlfWZ1bmN0aW9uIGRmKGEsYixjLGQpe2lmKGEpe3ZhciBlPSExLGY9YS50eXBlO2lmKGQmJmY9PT1DZSl7dmFyIGc9YS5zZWxlY3Rvci5tYXRjaCgkZSk7ZyYmKHdpbmRvdy5tYXRjaE1lZGlhKGdbMV0pLm1hdGNoZXN8fChlPSEwKSl9Zj09PUdlP2IoYSk6YyYmZj09PUVlP2MoYSk6Zj09PUZlJiYoZT0hMCk7aWYoKGE9YS5ydWxlcykmJiFlKWZvcihlPTAsZj1hLmxlbmd0aCxnPXZvaWQgMDtlPGYmJihnPWFbZV0pO2UrKylkZihnLGIsYyxkKX19CmZ1bmN0aW9uIGdmKGEsYixjLGQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7YiYmZS5zZXRBdHRyaWJ1dGUoInNjb3BlIixiKTtlLnRleHRDb250ZW50PWE7aGYoZSxjLGQpO3JldHVybiBlfXZhciBqZj1udWxsO2Z1bmN0aW9uIGtmKGEpe2E9ZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIFNoYWR5IERPTSBzdHlsZXMgZm9yICIrYSsiICIpO3ZhciBiPWRvY3VtZW50LmhlYWQ7Yi5pbnNlcnRCZWZvcmUoYSwoamY/amYubmV4dFNpYmxpbmc6bnVsbCl8fGIuZmlyc3RDaGlsZCk7cmV0dXJuIGpmPWF9ZnVuY3Rpb24gaGYoYSxiLGMpe2I9Ynx8ZG9jdW1lbnQuaGVhZDtiLmluc2VydEJlZm9yZShhLGMmJmMubmV4dFNpYmxpbmd8fGIuZmlyc3RDaGlsZCk7amY/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihqZik9PT1Ob2RlLkRPQ1VNRU5UX1BPU0lUSU9OX1BSRUNFRElORyYmKGpmPWEpOmpmPWF9CmZ1bmN0aW9uIGxmKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtiPGQ7YisrKWlmKCIoIj09PWFbYl0pYysrO2Vsc2UgaWYoIikiPT09YVtiXSYmMD09PS0tYylyZXR1cm4gYjtyZXR1cm4tMX1mdW5jdGlvbiBtZihhLGIpe3ZhciBjPWEuaW5kZXhPZigidmFyKCIpO2lmKC0xPT09YylyZXR1cm4gYihhLCIiLCIiLCIiKTt2YXIgZD1sZihhLGMrMyksZT1hLnN1YnN0cmluZyhjKzQsZCk7Yz1hLnN1YnN0cmluZygwLGMpO2E9bWYoYS5zdWJzdHJpbmcoZCsxKSxiKTtkPWUuaW5kZXhPZigiLCIpO3JldHVybi0xPT09ZD9iKGMsZS50cmltKCksIiIsYSk6YihjLGUuc3Vic3RyaW5nKDAsZCkudHJpbSgpLGUuc3Vic3RyaW5nKGQrMSkudHJpbSgpLGEpfWZ1bmN0aW9uIG5mKGEsYil7Tz9hLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGIpOndpbmRvdy5TaGFkeURPTS5uYXRpdmVNZXRob2RzLnNldEF0dHJpYnV0ZS5jYWxsKGEsImNsYXNzIixiKX0KdmFyIG9mPXdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLndyYXB8fGZ1bmN0aW9uKGEpe3JldHVybiBhfTtmdW5jdGlvbiBwZihhKXt2YXIgYj1hLmxvY2FsTmFtZSxjPSIiO2I/LTE8Yi5pbmRleE9mKCItIil8fChjPWIsYj1hLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImlzIil8fCIiKTooYj1hLmlzLGM9YS5leHRlbmRzKTtyZXR1cm57aXM6YixNOmN9fWZ1bmN0aW9uIHFmKGEpe2Zvcih2YXIgYj1bXSxjPSIiLGQ9MDswPD1kJiZkPGEubGVuZ3RoO2QrKylpZigiKCI9PT1hW2RdKXt2YXIgZT1sZihhLGQpO2MrPWEuc2xpY2UoZCxlKzEpO2Q9ZX1lbHNlIiwiPT09YVtkXT8oYi5wdXNoKGMpLGM9IiIpOmMrPWFbZF07YyYmYi5wdXNoKGMpO3JldHVybiBifQpmdW5jdGlvbiByZihhKXtpZih2b2lkIDAhPT1RZSlyZXR1cm4gUWU7aWYodm9pZCAwPT09YS5fX2Nzc0J1aWxkKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgiY3NzLWJ1aWxkIik7aWYoYilhLl9fY3NzQnVpbGQ9YjtlbHNle2E6e2I9InRlbXBsYXRlIj09PWEubG9jYWxOYW1lP2EuY29udGVudC5maXJzdENoaWxkOmEuZmlyc3RDaGlsZDtpZihiIGluc3RhbmNlb2YgQ29tbWVudCYmKGI9Yi50ZXh0Q29udGVudC50cmltKCkuc3BsaXQoIjoiKSwiY3NzLWJ1aWxkIj09PWJbMF0pKXtiPWJbMV07YnJlYWsgYX1iPSIifWlmKCIiIT09Yil7dmFyIGM9InRlbXBsYXRlIj09PWEubG9jYWxOYW1lP2EuY29udGVudC5maXJzdENoaWxkOmEuZmlyc3RDaGlsZDtjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9YS5fX2Nzc0J1aWxkPWJ9fXJldHVybiBhLl9fY3NzQnVpbGR8fCIifQpmdW5jdGlvbiBzZihhKXthPXZvaWQgMD09PWE/IiI6YTtyZXR1cm4iIiE9PWEmJlE/Tz8ic2hhZG93Ij09PWE6InNoYWR5Ij09PWE6ITF9O2Z1bmN0aW9uIHRmKCl7fWZ1bmN0aW9uIHVmKGEsYil7dmYoUixhLGZ1bmN0aW9uKGEpe3dmKGEsYnx8IiIpfSl9ZnVuY3Rpb24gdmYoYSxiLGMpe2Iubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSYmYyhiKTt2YXIgZDsidGVtcGxhdGUiPT09Yi5sb2NhbE5hbWU/ZD0oYi5jb250ZW50fHxiLl9jb250ZW50fHxiKS5jaGlsZE5vZGVzOmQ9Yi5jaGlsZHJlbnx8Yi5jaGlsZE5vZGVzO2lmKGQpZm9yKGI9MDtiPGQubGVuZ3RoO2IrKyl2ZihhLGRbYl0sYyl9CmZ1bmN0aW9uIHdmKGEsYixjKXtpZihiKWlmKGEuY2xhc3NMaXN0KWM/KGEuY2xhc3NMaXN0LnJlbW92ZSgic3R5bGUtc2NvcGUiKSxhLmNsYXNzTGlzdC5yZW1vdmUoYikpOihhLmNsYXNzTGlzdC5hZGQoInN0eWxlLXNjb3BlIiksYS5jbGFzc0xpc3QuYWRkKGIpKTtlbHNlIGlmKGEuZ2V0QXR0cmlidXRlKXt2YXIgZD1hLmdldEF0dHJpYnV0ZSgiY2xhc3MiKTtjP2QmJihiPWQucmVwbGFjZSgic3R5bGUtc2NvcGUiLCIiKS5yZXBsYWNlKGIsIiIpLG5mKGEsYikpOm5mKGEsKGQ/ZCsiICI6IiIpKyJzdHlsZS1zY29wZSAiK2IpfX1mdW5jdGlvbiB4ZihhLGIsYyl7dmYoUixhLGZ1bmN0aW9uKGEpe3dmKGEsYiwhMCk7d2YoYSxjKX0pfWZ1bmN0aW9uIHlmKGEsYil7dmYoUixhLGZ1bmN0aW9uKGEpe3dmKGEsYnx8IiIsITApfSl9CmZ1bmN0aW9uIHpmKGEsYixjLGQsZSl7dmFyIGY9UjtlPXZvaWQgMD09PWU/IiI6ZTsiIj09PWUmJihPfHwic2hhZHkiPT09KHZvaWQgMD09PWQ/IiI6ZCk/ZT1jZihiLGMpOihhPXBmKGEpLGU9QWYoZixiLGEuaXMsYS5NLGMpKyJcblxuIikpO3JldHVybiBlLnRyaW0oKX1mdW5jdGlvbiBBZihhLGIsYyxkLGUpe3ZhciBmPUJmKGMsZCk7Yz1jPyIuIitjOiIiO3JldHVybiBjZihiLGZ1bmN0aW9uKGIpe2IuY3x8KGIuc2VsZWN0b3I9Yi5qPUNmKGEsYixhLmIsYyxmKSxiLmM9ITApO2UmJmUoYixjLGYpfSl9ZnVuY3Rpb24gQmYoYSxiKXtyZXR1cm4gYj8iW2lzPSIrYSsiXSI6YX0KZnVuY3Rpb24gQ2YoYSxiLGMsZCxlKXt2YXIgZj1xZihiLnNlbGVjdG9yKTtpZighZmYoYikpe2I9MDtmb3IodmFyIGc9Zi5sZW5ndGgsaD12b2lkIDA7YjxnJiYoaD1mW2JdKTtiKyspZltiXT1jLmNhbGwoYSxoLGQsZSl9cmV0dXJuIGYuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pLmpvaW4oIiwiKX1mdW5jdGlvbiBEZihhKXtyZXR1cm4gYS5yZXBsYWNlKEVmLGZ1bmN0aW9uKGEsYyxkKXstMTxkLmluZGV4T2YoIisiKT9kPWQucmVwbGFjZSgvXCsvZywiX19fIik6LTE8ZC5pbmRleE9mKCJfX18iKSYmKGQ9ZC5yZXBsYWNlKC9fX18vZywiKyIpKTtyZXR1cm4iOiIrYysiKCIrZCsiKSJ9KX0KZnVuY3Rpb24gRmYoYSl7Zm9yKHZhciBiPVtdLGM7Yz1hLm1hdGNoKEdmKTspe3ZhciBkPWMuaW5kZXgsZT1sZihhLGQpO2lmKC0xPT09ZSl0aHJvdyBFcnJvcihjLmlucHV0KyIgc2VsZWN0b3IgbWlzc2luZyAnKSciKTtjPWEuc2xpY2UoZCxlKzEpO2E9YS5yZXBsYWNlKGMsIlx1ZTAwMCIpO2IucHVzaChjKX1yZXR1cm57aGE6YSxtYXRjaGVzOmJ9fWZ1bmN0aW9uIEhmKGEsYil7dmFyIGM9YS5zcGxpdCgiXHVlMDAwIik7cmV0dXJuIGIucmVkdWNlKGZ1bmN0aW9uKGEsYixmKXtyZXR1cm4gYStiK2NbZisxXX0sY1swXSl9CnRmLnByb3RvdHlwZS5iPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0hMTthPWEudHJpbSgpO3ZhciBlPUVmLnRlc3QoYSk7ZSYmKGE9YS5yZXBsYWNlKEVmLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4iOiIrYisiKCIrYy5yZXBsYWNlKC9ccy9nLCIiKSsiKSJ9KSxhPURmKGEpKTt2YXIgZj1HZi50ZXN0KGEpO2lmKGYpe3ZhciBnPUZmKGEpO2E9Zy5oYTtnPWcubWF0Y2hlc31hPWEucmVwbGFjZShJZiwiOmhvc3QgJDEiKTthPWEucmVwbGFjZShKZixmdW5jdGlvbihhLGUsZil7ZHx8KGE9S2YoZixlLGIsYyksZD1kfHxhLnN0b3AsZT1hLkNhLGY9YS52YWx1ZSk7cmV0dXJuIGUrZn0pO2YmJihhPUhmKGEsZykpO2UmJihhPURmKGEpKTtyZXR1cm4gYX07CmZ1bmN0aW9uIEtmKGEsYixjLGQpe3ZhciBlPWEuaW5kZXhPZigiOjpzbG90dGVkIik7MDw9YS5pbmRleE9mKCI6aG9zdCIpP2E9TGYoYSxkKTowIT09ZSYmKGE9Yz9NZihhLGMpOmEpO2M9ITE7MDw9ZSYmKGI9IiIsYz0hMCk7aWYoYyl7dmFyIGY9ITA7YyYmKGE9YS5yZXBsYWNlKE5mLGZ1bmN0aW9uKGEsYil7cmV0dXJuIiA+ICIrYn0pKX1hPWEucmVwbGFjZShPZixmdW5jdGlvbihhLGIsYyl7cmV0dXJuJ1tkaXI9IicrYysnIl0gJytiKyIsICIrYisnW2Rpcj0iJytjKyciXSd9KTtyZXR1cm57dmFsdWU6YSxDYTpiLHN0b3A6Zn19CmZ1bmN0aW9uIE1mKGEsYil7YT1hLnNwbGl0KC8oXFsuKz9cXSkvKTtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKWlmKDE9PT1kJTIpYy5wdXNoKGFbZF0pO2Vsc2V7dmFyIGU9YVtkXTtpZigiIiE9PWV8fGQhPT1hLmxlbmd0aC0xKWU9ZS5zcGxpdCgiOiIpLGVbMF0rPWIsYy5wdXNoKGUuam9pbigiOiIpKX1yZXR1cm4gYy5qb2luKCIiKX1mdW5jdGlvbiBMZihhLGIpe3ZhciBjPWEubWF0Y2goUGYpO3JldHVybihjPWMmJmNbMl0udHJpbSgpfHwiIik/Y1swXS5tYXRjaChRZik/YS5yZXBsYWNlKFBmLGZ1bmN0aW9uKGEsYyxmKXtyZXR1cm4gYitmfSk6Yy5zcGxpdChRZilbMF09PT1iP2M6InNob3VsZF9ub3RfbWF0Y2giOmEucmVwbGFjZSgiOmhvc3QiLGIpfWZ1bmN0aW9uIFJmKGEpeyI6cm9vdCI9PT1hLnNlbGVjdG9yJiYoYS5zZWxlY3Rvcj0iaHRtbCIpfQp0Zi5wcm90b3R5cGUuYz1mdW5jdGlvbihhKXtyZXR1cm4gYS5tYXRjaCgiOmhvc3QiKT8iIjphLm1hdGNoKCI6OnNsb3R0ZWQiKT90aGlzLmIoYSwiOm5vdCguc3R5bGUtc2NvcGUpIik6TWYoYS50cmltKCksIjpub3QoLnN0eWxlLXNjb3BlKSIpfTtwLk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRmLnByb3RvdHlwZSx7YTp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuInN0eWxlLXNjb3BlIn19fSk7CnZhciBFZj0vOihudGhbLVx3XSspXCgoW14pXSspXCkvLEpmPS8oXnxbXHM+K35dKykoKD86XFsuKz9cXXxbXlxzPit+PVtdKSspL2csUWY9L1tbLjojKl0vLElmPS9eKDo6c2xvdHRlZCkvLFBmPS8oOmhvc3QpKD86XCgoKD86XChbXikoXSpcKXxbXikoXSopKz8pXCkpLyxOZj0vKD86OjpzbG90dGVkKSg/OlwoKCg/OlwoW14pKF0qXCl8W14pKF0qKSs/KVwpKS8sT2Y9LyguKik6ZGlyXCgoPzoobHRyfHJ0bCkpXCkvLEdmPS86KD86bWF0Y2hlc3xhbnl8LSg/OndlYmtpdHxtb3opLWFueSkvLFI9bmV3IHRmO2Z1bmN0aW9uIFNmKGEsYixjLGQsZSl7dGhpcy5BPWF8fG51bGw7dGhpcy5iPWJ8fG51bGw7dGhpcy5mYT1jfHxbXTt0aGlzLm89bnVsbDt0aGlzLmNzc0J1aWxkPWV8fCIiO3RoaXMuTT1kfHwiIjt0aGlzLmE9dGhpcy5zPXRoaXMudz1udWxsfWZ1bmN0aW9uIFQoYSl7cmV0dXJuIGE/YS5fX3N0eWxlSW5mbzpudWxsfWZ1bmN0aW9uIFRmKGEsYil7cmV0dXJuIGEuX19zdHlsZUluZm89Yn1TZi5wcm90b3R5cGUuYz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkF9O1NmLnByb3RvdHlwZS5fZ2V0U3R5bGVSdWxlcz1TZi5wcm90b3R5cGUuYztmdW5jdGlvbiBVZihhKXt2YXIgYj10aGlzLm1hdGNoZXN8fHRoaXMubWF0Y2hlc1NlbGVjdG9yfHx0aGlzLm1vek1hdGNoZXNTZWxlY3Rvcnx8dGhpcy5tc01hdGNoZXNTZWxlY3Rvcnx8dGhpcy5vTWF0Y2hlc1NlbGVjdG9yfHx0aGlzLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtyZXR1cm4gYiYmYi5jYWxsKHRoaXMsYSl9dmFyIFZmPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goIlRyaWRlbnQiKTtmdW5jdGlvbiBXZigpe31mdW5jdGlvbiBYZihhKXt2YXIgYj17fSxjPVtdLGQ9MDtkZihhLGZ1bmN0aW9uKGEpe1lmKGEpO2EuaW5kZXg9ZCsrO2E9YS5pLmNzc1RleHQ7Zm9yKHZhciBjO2M9VGUuZXhlYyhhKTspe3ZhciBlPWNbMV07IjoiIT09Y1syXSYmKGJbZV09ITApfX0sZnVuY3Rpb24oYSl7Yy5wdXNoKGEpfSk7YS5iPWM7YT1bXTtmb3IodmFyIGUgaW4gYilhLnB1c2goZSk7cmV0dXJuIGF9CmZ1bmN0aW9uIFlmKGEpe2lmKCFhLmkpe3ZhciBiPXt9LGM9e307WmYoYSxjKSYmKGIudj1jLGEucnVsZXM9bnVsbCk7Yi5jc3NUZXh0PWEucGFyc2VkQ3NzVGV4dC5yZXBsYWNlKGFmLCIiKS5yZXBsYWNlKFJlLCIiKTthLmk9Yn19ZnVuY3Rpb24gWmYoYSxiKXt2YXIgYz1hLmk7aWYoYyl7aWYoYy52KXJldHVybiBPYmplY3QuYXNzaWduKGIsYy52KSwhMH1lbHNle2M9YS5wYXJzZWRDc3NUZXh0O2Zvcih2YXIgZDthPVJlLmV4ZWMoYyk7KXtkPShhWzJdfHxhWzNdKS50cmltKCk7aWYoImluaGVyaXQiIT09ZHx8InVuc2V0IiE9PWQpYlthWzFdLnRyaW0oKV09ZDtkPSEwfXJldHVybiBkfX0KZnVuY3Rpb24gJGYoYSxiLGMpe2ImJihiPTA8PWIuaW5kZXhPZigiOyIpP2FnKGEsYixjKTptZihiLGZ1bmN0aW9uKGIsZSxmLGcpe2lmKCFlKXJldHVybiBiK2c7KGU9JGYoYSxjW2VdLGMpKSYmImluaXRpYWwiIT09ZT8iYXBwbHktc2hpbS1pbmhlcml0Ij09PWUmJihlPSJpbmhlcml0Iik6ZT0kZihhLGNbZl18fGYsYyl8fGY7cmV0dXJuIGIrKGV8fCIiKStnfSkpO3JldHVybiBiJiZiLnRyaW0oKXx8IiJ9CmZ1bmN0aW9uIGFnKGEsYixjKXtiPWIuc3BsaXQoIjsiKTtmb3IodmFyIGQ9MCxlLGY7ZDxiLmxlbmd0aDtkKyspaWYoZT1iW2RdKXtTZS5sYXN0SW5kZXg9MDtpZihmPVNlLmV4ZWMoZSkpZT0kZihhLGNbZlsxXV0sYyk7ZWxzZSBpZihmPWUuaW5kZXhPZigiOiIpLC0xIT09Zil7dmFyIGc9ZS5zdWJzdHJpbmcoZik7Zz1nLnRyaW0oKTtnPSRmKGEsZyxjKXx8ZztlPWUuc3Vic3RyaW5nKDAsZikrZ31iW2RdPWUmJmUubGFzdEluZGV4T2YoIjsiKT09PWUubGVuZ3RoLTE/ZS5zbGljZSgwLC0xKTplfHwiIn1yZXR1cm4gYi5qb2luKCI7Iil9CmZ1bmN0aW9uIGJnKGEsYil7dmFyIGM9e30sZD1bXTtkZihhLGZ1bmN0aW9uKGEpe2EuaXx8WWYoYSk7dmFyIGU9YS5qfHxhLnBhcnNlZFNlbGVjdG9yO2ImJmEuaS52JiZlJiZVZi5jYWxsKGIsZSkmJihaZihhLGMpLGE9YS5pbmRleCxlPXBhcnNlSW50KGEvMzIsMTApLGRbZV09KGRbZV18fDApfDE8PGElMzIpfSxudWxsLCEwKTtyZXR1cm57djpjLGtleTpkfX0KZnVuY3Rpb24gY2coYSxiLGMsZCl7Yi5pfHxZZihiKTtpZihiLmkudil7dmFyIGU9cGYoYSk7YT1lLmlzO2U9ZS5NO2U9YT9CZihhLGUpOiJodG1sIjt2YXIgZj1iLnBhcnNlZFNlbGVjdG9yLGc9Ijpob3N0ID4gKiI9PT1mfHwiaHRtbCI9PT1mLGg9MD09PWYuaW5kZXhPZigiOmhvc3QiKSYmIWc7InNoYWR5Ij09PWMmJihnPWY9PT1lKyIgPiAqLiIrZXx8LTEhPT1mLmluZGV4T2YoImh0bWwiKSxoPSFnJiYwPT09Zi5pbmRleE9mKGUpKTtpZihnfHxoKWM9ZSxoJiYoYi5qfHwoYi5qPUNmKFIsYixSLmIsYT8iLiIrYToiIixlKSksYz1iLmp8fGUpLGQoe2hhOmMsSWE6aCxaYTpnfSl9fWZ1bmN0aW9uIGRnKGEsYixjKXt2YXIgZD17fSxlPXt9O2RmKGIsZnVuY3Rpb24oYil7Y2coYSxiLGMsZnVuY3Rpb24oYyl7VWYuY2FsbChhLl9lbGVtZW50fHxhLGMuaGEpJiYoYy5JYT9aZihiLGQpOlpmKGIsZSkpfSl9LG51bGwsITApO3JldHVybntSYTplLEhhOmR9fQpmdW5jdGlvbiBlZyhhLGIsYyxkKXt2YXIgZT1wZihiKSxmPUJmKGUuaXMsZS5NKSxnPW5ldyBSZWdFeHAoIig/Ol58W14uI1s6XSkiKyhiLmV4dGVuZHM/IlxcIitmLnNsaWNlKDAsLTEpKyJcXF0iOmYpKyIoJHxbLjpbXFxzPit+XSkiKSxoPVQoYik7ZT1oLkE7aD1oLmNzc0J1aWxkO3ZhciBrPWZnKGUsZCk7cmV0dXJuIHpmKGIsZSxmdW5jdGlvbihiKXt2YXIgZT0iIjtiLml8fFlmKGIpO2IuaS5jc3NUZXh0JiYoZT1hZyhhLGIuaS5jc3NUZXh0LGMpKTtiLmNzc1RleHQ9ZTtpZighTyYmIWZmKGIpJiZiLmNzc1RleHQpe3ZhciBoPWU9Yi5jc3NUZXh0O251bGw9PWIubmEmJihiLm5hPVVlLnRlc3QoZSkpO2lmKGIubmEpaWYobnVsbD09Yi5VKXtiLlU9W107Zm9yKHZhciBsIGluIGspaD1rW2xdLGg9aChlKSxlIT09aCYmKGU9aCxiLlUucHVzaChsKSl9ZWxzZXtmb3IobD0wO2w8Yi5VLmxlbmd0aDsrK2wpaD1rW2IuVVtsXV0sZT1oKGUpO2g9ZX1iLmNzc1RleHQ9aDtiLmo9Yi5qfHwKYi5zZWxlY3RvcjtlPSIuIitkO2w9cWYoYi5qKTtoPTA7Zm9yKHZhciBNPWwubGVuZ3RoLFU9dm9pZCAwO2g8TSYmKFU9bFtoXSk7aCsrKWxbaF09VS5tYXRjaChnKT9VLnJlcGxhY2UoZixlKTplKyIgIitVO2Iuc2VsZWN0b3I9bC5qb2luKCIsIil9fSxoKX1mdW5jdGlvbiBmZyhhLGIpe2E9YS5iO3ZhciBjPXt9O2lmKCFPJiZhKWZvcih2YXIgZD0wLGU9YVtkXTtkPGEubGVuZ3RoO2U9YVsrK2RdKXt2YXIgZj1lLGc9YjtmLmY9bmV3IFJlZ0V4cCgiXFxiIitmLmtleWZyYW1lc05hbWUrIig/IVxcQnwtKSIsImciKTtmLmE9Zi5rZXlmcmFtZXNOYW1lKyItIitnO2Yuaj1mLmp8fGYuc2VsZWN0b3I7Zi5zZWxlY3Rvcj1mLmoucmVwbGFjZShmLmtleWZyYW1lc05hbWUsZi5hKTtjW2Uua2V5ZnJhbWVzTmFtZV09Z2coZSl9cmV0dXJuIGN9ZnVuY3Rpb24gZ2coYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBiLnJlcGxhY2UoYS5mLGEuYSl9fQpmdW5jdGlvbiBoZyhhLGIpe3ZhciBjPWlnLGQ9ZWYoYSk7YS50ZXh0Q29udGVudD1jZihkLGZ1bmN0aW9uKGEpe3ZhciBkPWEuY3NzVGV4dD1hLnBhcnNlZENzc1RleHQ7YS5pJiZhLmkuY3NzVGV4dCYmKGQ9ZC5yZXBsYWNlKEllLCIiKS5yZXBsYWNlKEplLCIiKSxhLmNzc1RleHQ9YWcoYyxkLGIpKX0pfXAuT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoV2YucHJvdG90eXBlLHthOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ieC1zY29wZSJ9fX0pO3ZhciBpZz1uZXcgV2Y7dmFyIGpnPXt9LGtnPXdpbmRvdy5jdXN0b21FbGVtZW50cztpZihrZyYmIU8mJiFQZSl7dmFyIGxnPWtnLmRlZmluZTtrZy5kZWZpbmU9ZnVuY3Rpb24oYSxiLGMpe2pnW2FdfHwoamdbYV09a2YoYSkpO2xnLmNhbGwoa2csYSxiLGMpfX07ZnVuY3Rpb24gbWcoKXt0aGlzLmNhY2hlPXt9fW1nLnByb3RvdHlwZS5zdG9yZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLmNhY2hlW2FdfHxbXTtlLnB1c2goe3Y6YixzdHlsZUVsZW1lbnQ6YyxzOmR9KTsxMDA8ZS5sZW5ndGgmJmUuc2hpZnQoKTt0aGlzLmNhY2hlW2FdPWV9O2Z1bmN0aW9uIG5nKCl7fXZhciBvZz1uZXcgUmVnRXhwKFIuYSsiXFxzKihbXlxcc10qKSIpO2Z1bmN0aW9uIHBnKGEpe3JldHVybihhPShhLmNsYXNzTGlzdCYmYS5jbGFzc0xpc3QudmFsdWU/YS5jbGFzc0xpc3QudmFsdWU6YS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKS5tYXRjaChvZykpP2FbMV06IiJ9ZnVuY3Rpb24gcWcoYSl7dmFyIGI9b2YoYSkuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gYj09PWF8fGI9PT1hLm93bmVyRG9jdW1lbnQ/IiI6KGE9Yi5ob3N0KT9wZihhKS5pczoiIn0KZnVuY3Rpb24gcmcoYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl07aWYoYy50YXJnZXQhPT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmMudGFyZ2V0IT09ZG9jdW1lbnQuaGVhZClmb3IodmFyIGQ9MDtkPGMuYWRkZWROb2Rlcy5sZW5ndGg7ZCsrKXt2YXIgZT1jLmFkZGVkTm9kZXNbZF07aWYoZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgZj1lLmdldFJvb3ROb2RlKCksZz1wZyhlKTtpZihnJiZmPT09ZS5vd25lckRvY3VtZW50JiYoInN0eWxlIiE9PWUubG9jYWxOYW1lJiYidGVtcGxhdGUiIT09ZS5sb2NhbE5hbWV8fCIiPT09cmYoZSkpKXlmKGUsZyk7ZWxzZSBpZihmIGluc3RhbmNlb2YgU2hhZG93Um9vdClmb3IoZj1xZyhlKSxmIT09ZyYmeGYoZSxnLGYpLGU9d2luZG93LlNoYWR5RE9NLm5hdGl2ZU1ldGhvZHMucXVlcnlTZWxlY3RvckFsbC5jYWxsKGUsIjpub3QoLiIrUi5hKyIpIiksZz0wO2c8ZS5sZW5ndGg7ZysrKXtmPWVbZ107CnZhciBoPXFnKGYpO2gmJndmKGYsaCl9fX19fQppZighKE98fHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmhhbmRsZXNEeW5hbWljU2NvcGluZykpe3ZhciBzZz1uZXcgTXV0YXRpb25PYnNlcnZlcihyZyksdGc9ZnVuY3Rpb24oYSl7c2cub2JzZXJ2ZShhLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfTtpZih3aW5kb3cuY3VzdG9tRWxlbWVudHMmJiF3aW5kb3cuY3VzdG9tRWxlbWVudHMucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjayl0Zyhkb2N1bWVudCk7ZWxzZXt2YXIgdWc9ZnVuY3Rpb24oKXt0Zyhkb2N1bWVudC5ib2R5KX07d2luZG93LkhUTUxJbXBvcnRzP3dpbmRvdy5IVE1MSW1wb3J0cy53aGVuUmVhZHkodWcpOnJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpe2lmKCJsb2FkaW5nIj09PWRvY3VtZW50LnJlYWR5U3RhdGUpe3ZhciBhPWZ1bmN0aW9uKCl7dWcoKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixhKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigicmVhZHlzdGF0ZWNoYW5nZSIsCmEpfWVsc2UgdWcoKX0pfW5nPWZ1bmN0aW9uKCl7cmcoc2cudGFrZVJlY29yZHMoKSl9fXZhciB2Zz1uZzt2YXIgd2c9e307dmFyIHhnPVByb21pc2UucmVzb2x2ZSgpO2Z1bmN0aW9uIHlnKGEpe2lmKGE9d2dbYV0pYS5fYXBwbHlTaGltQ3VycmVudFZlcnNpb249YS5fYXBwbHlTaGltQ3VycmVudFZlcnNpb258fDAsYS5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb249YS5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb258fDAsYS5fYXBwbHlTaGltTmV4dFZlcnNpb249KGEuX2FwcGx5U2hpbU5leHRWZXJzaW9ufHwwKSsxfWZ1bmN0aW9uIHpnKGEpe3JldHVybiBhLl9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj09PWEuX2FwcGx5U2hpbU5leHRWZXJzaW9ufWZ1bmN0aW9uIEFnKGEpe2EuX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uPWEuX2FwcGx5U2hpbU5leHRWZXJzaW9uO2EuX3ZhbGlkYXRpbmd8fChhLl92YWxpZGF0aW5nPSEwLHhnLnRoZW4oZnVuY3Rpb24oKXthLl9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj1hLl9hcHBseVNoaW1OZXh0VmVyc2lvbjthLl92YWxpZGF0aW5nPSExfSkpfTt2YXIgQmc9e30sQ2c9bmV3IG1nO2Z1bmN0aW9uIFkoKXt0aGlzLmw9e307dGhpcy5jPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDt2YXIgYT1uZXcgdmU7YS5ydWxlcz1bXTt0aGlzLmY9VGYodGhpcy5jLG5ldyBTZihhKSk7dGhpcy5nPSExO3RoaXMuYj10aGlzLmE9bnVsbH1uPVkucHJvdG90eXBlO24uZmx1c2g9ZnVuY3Rpb24oKXt2ZygpfTtuLkZhPWZ1bmN0aW9uKGEpe3JldHVybiBlZihhKX07bi5WYT1mdW5jdGlvbihhKXtyZXR1cm4gY2YoYSl9O24ucHJlcGFyZVRlbXBsYXRlPWZ1bmN0aW9uKGEsYixjKXt0aGlzLnByZXBhcmVUZW1wbGF0ZURvbShhLGIpO3RoaXMucHJlcGFyZVRlbXBsYXRlU3R5bGVzKGEsYixjKX07Cm4ucHJlcGFyZVRlbXBsYXRlU3R5bGVzPWZ1bmN0aW9uKGEsYixjKXtpZighYS5fcHJlcGFyZWQmJiFQZSl7T3x8amdbYl18fChqZ1tiXT1rZihiKSk7YS5fcHJlcGFyZWQ9ITA7YS5uYW1lPWI7YS5leHRlbmRzPWM7d2dbYl09YTt2YXIgZD1yZihhKSxlPXNmKGQpO2M9e2lzOmIsZXh0ZW5kczpjfTtmb3IodmFyIGY9W10sZz1hLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGUiKSxoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBrPWdbaF07aWYoay5oYXNBdHRyaWJ1dGUoInNoYWR5LXVuc2NvcGVkIikpe2lmKCFPKXt2YXIgbD1rLnRleHRDb250ZW50O2JmLmhhcyhsKXx8KGJmLmFkZChsKSxsPWsuY2xvbmVOb2RlKCEwKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGwpKTtrLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoayl9fWVsc2UgZi5wdXNoKGsudGV4dENvbnRlbnQpLGsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChrKX1mPWYuam9pbigiIikudHJpbSgpKyhCZ1tiXXx8IiIpOwpEZyh0aGlzKTtpZighZSl7aWYoZz0hZClnPVNlLnRlc3QoZil8fFJlLnRlc3QoZiksU2UubGFzdEluZGV4PTAsUmUubGFzdEluZGV4PTA7aD13ZShmKTtnJiZRJiZ0aGlzLmEmJnRoaXMuYS50cmFuc2Zvcm1SdWxlcyhoLGIpO2EuX3N0eWxlQXN0PWh9Zz1bXTtRfHwoZz1YZihhLl9zdHlsZUFzdCkpO2lmKCFnLmxlbmd0aHx8USloPU8/YS5jb250ZW50Om51bGwsYj1qZ1tiXXx8bnVsbCxkPXpmKGMsYS5fc3R5bGVBc3QsbnVsbCxkLGU/ZjoiIiksZD1kLmxlbmd0aD9nZihkLGMuaXMsaCxiKTpudWxsLGEuX3N0eWxlPWQ7YS5hPWd9fTtuLlFhPWZ1bmN0aW9uKGEsYil7QmdbYl09YS5qb2luKCIgIil9O24ucHJlcGFyZVRlbXBsYXRlRG9tPWZ1bmN0aW9uKGEsYil7aWYoIVBlKXt2YXIgYz1yZihhKTtPfHwic2hhZHkiPT09Y3x8YS5fZG9tUHJlcGFyZWR8fChhLl9kb21QcmVwYXJlZD0hMCx1ZihhLmNvbnRlbnQsYikpfX07CmZ1bmN0aW9uIEVnKGEpe3ZhciBiPXBmKGEpLGM9Yi5pcztiPWIuTTt2YXIgZD1qZ1tjXXx8bnVsbCxlPXdnW2NdO2lmKGUpe2M9ZS5fc3R5bGVBc3Q7dmFyIGY9ZS5hO2U9cmYoZSk7Yj1uZXcgU2YoYyxkLGYsYixlKTtUZihhLGIpO3JldHVybiBifX1mdW5jdGlvbiBGZyhhKXshYS5iJiZ3aW5kb3cuU2hhZHlDU1MmJndpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSYmKGEuYj13aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UsYS5iLnRyYW5zZm9ybUNhbGxiYWNrPWZ1bmN0aW9uKGIpe2EucmEoYil9LGEuYi52YWxpZGF0ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7KGEuYi5lbnF1ZXVlZHx8YS5nKSYmYS5mbHVzaEN1c3RvbVN0eWxlcygpfSl9KX0KZnVuY3Rpb24gRGcoYSl7IWEuYSYmd2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuQXBwbHlTaGltJiYoYS5hPXdpbmRvdy5TaGFkeUNTUy5BcHBseVNoaW0sYS5hLmludmFsaWRDYWxsYmFjaz15Zyk7RmcoYSl9Cm4uZmx1c2hDdXN0b21TdHlsZXM9ZnVuY3Rpb24oKXtpZighUGUmJihEZyh0aGlzKSx0aGlzLmIpKXt2YXIgYT10aGlzLmIucHJvY2Vzc1N0eWxlcygpO2lmKHRoaXMuYi5lbnF1ZXVlZCYmIXNmKHRoaXMuZi5jc3NCdWlsZCkpe2lmKFEpe2lmKCF0aGlzLmYuY3NzQnVpbGQpZm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuYi5nZXRTdHlsZUZvckN1c3RvbVN0eWxlKGFbYl0pO2lmKGMmJlEmJnRoaXMuYSl7dmFyIGQ9ZWYoYyk7RGcodGhpcyk7dGhpcy5hLnRyYW5zZm9ybVJ1bGVzKGQpO2MudGV4dENvbnRlbnQ9Y2YoZCl9fX1lbHNle0dnKHRoaXMsdGhpcy5jLHRoaXMuZik7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKykoYz10aGlzLmIuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZShhW2JdKSkmJmhnKGMsdGhpcy5mLncpO3RoaXMuZyYmdGhpcy5zdHlsZURvY3VtZW50KCl9dGhpcy5iLmVucXVldWVkPSExfX19OwpuLnN0eWxlRWxlbWVudD1mdW5jdGlvbihhLGIpe2lmKFBlKXtpZihiKXtUKGEpfHxUZihhLG5ldyBTZihudWxsKSk7dmFyIGM9VChhKTtjLm89Yy5vfHx7fTtPYmplY3QuYXNzaWduKGMubyxiKTtIZyh0aGlzLGEsYyl9fWVsc2UgaWYoYz1UKGEpfHxFZyhhKSlpZihhIT09dGhpcy5jJiYodGhpcy5nPSEwKSxiJiYoYy5vPWMub3x8e30sT2JqZWN0LmFzc2lnbihjLm8sYikpLFEpSGcodGhpcyxhLGMpO2Vsc2UgaWYodGhpcy5mbHVzaCgpLEdnKHRoaXMsYSxjKSxjLmZhJiZjLmZhLmxlbmd0aCl7Yj1wZihhKS5pczt2YXIgZDthOntpZihkPUNnLmNhY2hlW2JdKWZvcih2YXIgZT1kLmxlbmd0aC0xOzA8PWU7ZS0tKXt2YXIgZj1kW2VdO2I6e3ZhciBnPWMuZmE7Zm9yKHZhciBoPTA7aDxnLmxlbmd0aDtoKyspe3ZhciBrPWdbaF07aWYoZi52W2tdIT09Yy53W2tdKXtnPSExO2JyZWFrIGJ9fWc9ITB9aWYoZyl7ZD1mO2JyZWFrIGF9fWQ9dm9pZCAwfWc9ZD9kLnN0eWxlRWxlbWVudDpudWxsOwplPWMuczsoZj1kJiZkLnMpfHwoZj10aGlzLmxbYl09KHRoaXMubFtiXXx8MCkrMSxmPWIrIi0iK2YpO2Mucz1mO2Y9Yy5zO2g9aWc7aD1nP2cudGV4dENvbnRlbnR8fCIiOmVnKGgsYSxjLncsZik7az1UKGEpO3ZhciBsPWsuYTtsJiYhTyYmbCE9PWcmJihsLl91c2VDb3VudC0tLDA+PWwuX3VzZUNvdW50JiZsLnBhcmVudE5vZGUmJmwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKSk7Tz9rLmE/KGsuYS50ZXh0Q29udGVudD1oLGc9ay5hKTpoJiYoZz1nZihoLGYsYS5zaGFkb3dSb290LGsuYikpOmc/Zy5wYXJlbnROb2RlfHwoVmYmJi0xPGguaW5kZXhPZigiQG1lZGlhIikmJihnLnRleHRDb250ZW50PWgpLGhmKGcsbnVsbCxrLmIpKTpoJiYoZz1nZihoLGYsbnVsbCxrLmIpKTtnJiYoZy5fdXNlQ291bnQ9Zy5fdXNlQ291bnR8fDAsay5hIT1nJiZnLl91c2VDb3VudCsrLGsuYT1nKTtmPWc7T3x8KGc9Yy5zLGs9aD1hLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIsZSYmKGs9aC5yZXBsYWNlKG5ldyBSZWdFeHAoIlxccyp4LXNjb3BlXFxzKiIrCmUrIlxccyoiLCJnIiksIiAiKSksays9KGs/IiAiOiIiKSsieC1zY29wZSAiK2csaCE9PWsmJm5mKGEsaykpO2R8fENnLnN0b3JlKGIsYy53LGYsYy5zKX19OwpmdW5jdGlvbiBIZyhhLGIsYyl7dmFyIGQ9cGYoYikuaXM7aWYoYy5vKXt2YXIgZT1jLm8sZjtmb3IoZiBpbiBlKW51bGw9PT1mP2Iuc3R5bGUucmVtb3ZlUHJvcGVydHkoZik6Yi5zdHlsZS5zZXRQcm9wZXJ0eShmLGVbZl0pfWU9d2dbZF07aWYoISghZSYmYiE9PWEuY3x8ZSYmIiIhPT1yZihlKSkmJmUmJmUuX3N0eWxlJiYhemcoZSkpe2lmKHpnKGUpfHxlLl9hcHBseVNoaW1WYWxpZGF0aW5nVmVyc2lvbiE9PWUuX2FwcGx5U2hpbU5leHRWZXJzaW9uKURnKGEpLGEuYSYmYS5hLnRyYW5zZm9ybVJ1bGVzKGUuX3N0eWxlQXN0LGQpLGUuX3N0eWxlLnRleHRDb250ZW50PXpmKGIsYy5BKSxBZyhlKTtPJiYoYT1iLnNoYWRvd1Jvb3QpJiYoYT1hLnF1ZXJ5U2VsZWN0b3IoInN0eWxlIikpJiYoYS50ZXh0Q29udGVudD16ZihiLGMuQSkpO2MuQT1lLl9zdHlsZUFzdH19CmZ1bmN0aW9uIElnKGEsYil7cmV0dXJuKGI9b2YoYikuZ2V0Um9vdE5vZGUoKS5ob3N0KT9UKGIpfHxFZyhiKT9iOklnKGEsYik6YS5jfWZ1bmN0aW9uIEdnKGEsYixjKXt2YXIgZD1JZyhhLGIpLGU9VChkKSxmPWUudztkPT09YS5jfHxmfHwoR2coYSxkLGUpLGY9ZS53KTthPU9iamVjdC5jcmVhdGUoZnx8bnVsbCk7ZD1kZyhiLGMuQSxjLmNzc0J1aWxkKTtiPWJnKGUuQSxiKS52O09iamVjdC5hc3NpZ24oYSxkLkhhLGIsZC5SYSk7Yj1jLm87Zm9yKHZhciBnIGluIGIpaWYoKGU9YltnXSl8fDA9PT1lKWFbZ109ZTtnPWlnO2I9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYSk7Zm9yKGU9MDtlPGIubGVuZ3RoO2UrKylkPWJbZV0sYVtkXT0kZihnLGFbZF0sYSk7Yy53PWF9bi5zdHlsZURvY3VtZW50PWZ1bmN0aW9uKGEpe3RoaXMuc3R5bGVTdWJ0cmVlKHRoaXMuYyxhKX07Cm4uc3R5bGVTdWJ0cmVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9b2YoYSksZD1jLnNoYWRvd1Jvb3Q7KGR8fGE9PT10aGlzLmMpJiZ0aGlzLnN0eWxlRWxlbWVudChhLGIpO2lmKGE9ZCYmKGQuY2hpbGRyZW58fGQuY2hpbGROb2RlcykpZm9yKGM9MDtjPGEubGVuZ3RoO2MrKyl0aGlzLnN0eWxlU3VidHJlZShhW2NdKTtlbHNlIGlmKGM9Yy5jaGlsZHJlbnx8Yy5jaGlsZE5vZGVzKWZvcihhPTA7YTxjLmxlbmd0aDthKyspdGhpcy5zdHlsZVN1YnRyZWUoY1thXSl9OwpuLnJhPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz1yZihhKTtjIT09dGhpcy5mLmNzc0J1aWxkJiYodGhpcy5mLmNzc0J1aWxkPWMpO2lmKCFzZihjKSl7dmFyIGQ9ZWYoYSk7ZGYoZCxmdW5jdGlvbihhKXtpZihPKVJmKGEpO2Vsc2V7dmFyIGQ9UjthLnNlbGVjdG9yPWEucGFyc2VkU2VsZWN0b3I7UmYoYSk7YS5zZWxlY3Rvcj1hLmo9Q2YoZCxhLGQuYyx2b2lkIDAsdm9pZCAwKX1RJiYiIj09PWMmJihEZyhiKSxiLmEmJmIuYS50cmFuc2Zvcm1SdWxlKGEpKX0pO1E/YS50ZXh0Q29udGVudD1jZihkKTp0aGlzLmYuQS5ydWxlcy5wdXNoKGQpfX07bi5nZXRDb21wdXRlZFN0eWxlVmFsdWU9ZnVuY3Rpb24oYSxiKXt2YXIgYztRfHwoYz0oVChhKXx8VChJZyh0aGlzLGEpKSkud1tiXSk7cmV0dXJuKGM9Y3x8d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSkuZ2V0UHJvcGVydHlWYWx1ZShiKSk/Yy50cmltKCk6IiJ9OwpuLlVhPWZ1bmN0aW9uKGEsYil7dmFyIGM9b2YoYSkuZ2V0Um9vdE5vZGUoKTtiPWI/Yi5zcGxpdCgvXHMvKTpbXTtjPWMuaG9zdCYmYy5ob3N0LmxvY2FsTmFtZTtpZighYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoImNsYXNzIik7aWYoZCl7ZD1kLnNwbGl0KC9ccy8pO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7ZSsrKWlmKGRbZV09PT1SLmEpe2M9ZFtlKzFdO2JyZWFrfX19YyYmYi5wdXNoKFIuYSxjKTtRfHwoYz1UKGEpKSYmYy5zJiZiLnB1c2goaWcuYSxjLnMpO25mKGEsYi5qb2luKCIgIikpfTtuLkJhPWZ1bmN0aW9uKGEpe3JldHVybiBUKGEpfTtuLlRhPWZ1bmN0aW9uKGEsYil7d2YoYSxiKX07bi5XYT1mdW5jdGlvbihhLGIpe3dmKGEsYiwhMCl9O24uU2E9ZnVuY3Rpb24oYSl7cmV0dXJuIHFnKGEpfTtuLkRhPWZ1bmN0aW9uKGEpe3JldHVybiBwZyhhKX07WS5wcm90b3R5cGUuZmx1c2g9WS5wcm90b3R5cGUuZmx1c2g7WS5wcm90b3R5cGUucHJlcGFyZVRlbXBsYXRlPVkucHJvdG90eXBlLnByZXBhcmVUZW1wbGF0ZTsKWS5wcm90b3R5cGUuc3R5bGVFbGVtZW50PVkucHJvdG90eXBlLnN0eWxlRWxlbWVudDtZLnByb3RvdHlwZS5zdHlsZURvY3VtZW50PVkucHJvdG90eXBlLnN0eWxlRG9jdW1lbnQ7WS5wcm90b3R5cGUuc3R5bGVTdWJ0cmVlPVkucHJvdG90eXBlLnN0eWxlU3VidHJlZTtZLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlVmFsdWU9WS5wcm90b3R5cGUuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlO1kucHJvdG90eXBlLnNldEVsZW1lbnRDbGFzcz1ZLnByb3RvdHlwZS5VYTtZLnByb3RvdHlwZS5fc3R5bGVJbmZvRm9yTm9kZT1ZLnByb3RvdHlwZS5CYTtZLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21TdHlsZUZvckRvY3VtZW50PVkucHJvdG90eXBlLnJhO1kucHJvdG90eXBlLmdldFN0eWxlQXN0PVkucHJvdG90eXBlLkZhO1kucHJvdG90eXBlLnN0eWxlQXN0VG9TdHJpbmc9WS5wcm90b3R5cGUuVmE7WS5wcm90b3R5cGUuZmx1c2hDdXN0b21TdHlsZXM9WS5wcm90b3R5cGUuZmx1c2hDdXN0b21TdHlsZXM7ClkucHJvdG90eXBlLnNjb3BlTm9kZT1ZLnByb3RvdHlwZS5UYTtZLnByb3RvdHlwZS51bnNjb3BlTm9kZT1ZLnByb3RvdHlwZS5XYTtZLnByb3RvdHlwZS5zY29wZUZvck5vZGU9WS5wcm90b3R5cGUuU2E7WS5wcm90b3R5cGUuY3VycmVudFNjb3BlRm9yTm9kZT1ZLnByb3RvdHlwZS5EYTtZLnByb3RvdHlwZS5wcmVwYXJlQWRvcHRlZENzc1RleHQ9WS5wcm90b3R5cGUuUWE7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWS5wcm90b3R5cGUse25hdGl2ZVNoYWRvdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE99fSxuYXRpdmVDc3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBRfX19KTt2YXIgWj1uZXcgWSxKZyxLZzt3aW5kb3cuU2hhZHlDU1MmJihKZz13aW5kb3cuU2hhZHlDU1MuQXBwbHlTaGltLEtnPXdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZSk7CndpbmRvdy5TaGFkeUNTUz17U2NvcGluZ1NoaW06WixwcmVwYXJlVGVtcGxhdGU6ZnVuY3Rpb24oYSxiLGMpe1ouZmx1c2hDdXN0b21TdHlsZXMoKTtaLnByZXBhcmVUZW1wbGF0ZShhLGIsYyl9LHByZXBhcmVUZW1wbGF0ZURvbTpmdW5jdGlvbihhLGIpe1oucHJlcGFyZVRlbXBsYXRlRG9tKGEsYil9LHByZXBhcmVUZW1wbGF0ZVN0eWxlczpmdW5jdGlvbihhLGIsYyl7Wi5mbHVzaEN1c3RvbVN0eWxlcygpO1oucHJlcGFyZVRlbXBsYXRlU3R5bGVzKGEsYixjKX0sc3R5bGVTdWJ0cmVlOmZ1bmN0aW9uKGEsYil7Wi5mbHVzaEN1c3RvbVN0eWxlcygpO1ouc3R5bGVTdWJ0cmVlKGEsYil9LHN0eWxlRWxlbWVudDpmdW5jdGlvbihhKXtaLmZsdXNoQ3VzdG9tU3R5bGVzKCk7Wi5zdHlsZUVsZW1lbnQoYSl9LHN0eWxlRG9jdW1lbnQ6ZnVuY3Rpb24oYSl7Wi5mbHVzaEN1c3RvbVN0eWxlcygpO1ouc3R5bGVEb2N1bWVudChhKX0sZmx1c2hDdXN0b21TdHlsZXM6ZnVuY3Rpb24oKXtaLmZsdXNoQ3VzdG9tU3R5bGVzKCl9LApnZXRDb21wdXRlZFN0eWxlVmFsdWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gWi5nZXRDb21wdXRlZFN0eWxlVmFsdWUoYSxiKX0sbmF0aXZlQ3NzOlEsbmF0aXZlU2hhZG93Ok8sY3NzQnVpbGQ6UWUsZGlzYWJsZVJ1bnRpbWU6UGV9O0pnJiYod2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1KZyk7S2cmJih3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U9S2cpO3ZhciBMZz13aW5kb3cuY3VzdG9tRWxlbWVudHMsTWc9d2luZG93LkhUTUxJbXBvcnRzLE5nPXdpbmRvdy5IVE1MVGVtcGxhdGVFbGVtZW50O3dpbmRvdy5XZWJDb21wb25lbnRzPXdpbmRvdy5XZWJDb21wb25lbnRzfHx7fTtpZihMZyYmTGcucG9seWZpbGxXcmFwRmx1c2hDYWxsYmFjayl7dmFyIE9nLFBnPWZ1bmN0aW9uKCl7aWYoT2cpe05nLkMmJk5nLkMod2luZG93LmRvY3VtZW50KTt2YXIgYT1PZztPZz1udWxsO2EoKTtyZXR1cm4hMH19LFFnPU1nLndoZW5SZWFkeTtMZy5wb2x5ZmlsbFdyYXBGbHVzaENhbGxiYWNrKGZ1bmN0aW9uKGEpe09nPWE7UWcoUGcpfSk7TWcud2hlblJlYWR5PWZ1bmN0aW9uKGEpe1FnKGZ1bmN0aW9uKCl7UGcoKT9NZy53aGVuUmVhZHkoYSk6YSgpfSl9fQpNZy53aGVuUmVhZHkoZnVuY3Rpb24oKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt3aW5kb3cuV2ViQ29tcG9uZW50cy5yZWFkeT0hMDtkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiV2ViQ29tcG9uZW50c1JlYWR5Iix7YnViYmxlczohMH0pKX0pfSk7dmFyIFJnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7UmcudGV4dENvbnRlbnQ9ImJvZHkge3RyYW5zaXRpb246IG9wYWNpdHkgZWFzZS1pbiAwLjJzOyB9IFxuYm9keVt1bnJlc29sdmVkXSB7b3BhY2l0eTogMDsgZGlzcGxheTogYmxvY2s7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSBcbiI7dmFyIFNnPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImhlYWQiKTtTZy5pbnNlcnRCZWZvcmUoUmcsU2cuZmlyc3RDaGlsZCk7fSkuY2FsbCh0aGlzKTsKCgoKKGZ1bmN0aW9uKCl7LyoKCkNvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CkNvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCnN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCid1c2Ugc3RyaWN0Jzt2YXIgbD0hKHdpbmRvdy5TaGFkeURPTSYmd2luZG93LlNoYWR5RE9NLmluVXNlKSxwO2Z1bmN0aW9uIHIoYSl7cD1hJiZhLnNoaW1jc3Nwcm9wZXJ0aWVzPyExOmx8fCEobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQXBwbGVXZWJLaXRcLzYwMXxFZGdlXC8xNS8pfHwhd2luZG93LkNTU3x8IUNTUy5zdXBwb3J0c3x8IUNTUy5zdXBwb3J0cygiYm94LXNoYWRvdyIsIjAgMCAwIHZhcigtLWZvbykiKSl9dmFyIHQ7d2luZG93LlNoYWR5Q1NTJiZ2b2lkIDAhPT13aW5kb3cuU2hhZHlDU1MuY3NzQnVpbGQmJih0PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCk7dmFyIGFhPSEoIXdpbmRvdy5TaGFkeUNTU3x8IXdpbmRvdy5TaGFkeUNTUy5kaXNhYmxlUnVudGltZSk7CndpbmRvdy5TaGFkeUNTUyYmdm9pZCAwIT09d2luZG93LlNoYWR5Q1NTLm5hdGl2ZUNzcz9wPXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M6d2luZG93LlNoYWR5Q1NTPyhyKHdpbmRvdy5TaGFkeUNTUyksd2luZG93LlNoYWR5Q1NTPXZvaWQgMCk6cih3aW5kb3cuV2ViQ29tcG9uZW50cyYmd2luZG93LldlYkNvbXBvbmVudHMuZmxhZ3MpO3ZhciB1PXAsdj10O2Z1bmN0aW9uIHcoKXt0aGlzLmVuZD10aGlzLnN0YXJ0PTA7dGhpcy5ydWxlcz10aGlzLnBhcmVudD10aGlzLnByZXZpb3VzPW51bGw7dGhpcy5jc3NUZXh0PXRoaXMucGFyc2VkQ3NzVGV4dD0iIjt0aGlzLmF0UnVsZT0hMTt0aGlzLnR5cGU9MDt0aGlzLnBhcnNlZFNlbGVjdG9yPXRoaXMuc2VsZWN0b3I9dGhpcy5rZXlmcmFtZXNOYW1lPSIifQpmdW5jdGlvbiB4KGEpe2E9YS5yZXBsYWNlKGJhLCIiKS5yZXBsYWNlKGNhLCIiKTt2YXIgYj15LGM9YSxlPW5ldyB3O2Uuc3RhcnQ9MDtlLmVuZD1jLmxlbmd0aDtmb3IodmFyIGQ9ZSxmPTAsZz1jLmxlbmd0aDtmPGc7ZisrKWlmKCJ7Ij09PWNbZl0pe2QucnVsZXN8fChkLnJ1bGVzPVtdKTt2YXIgaD1kLGs9aC5ydWxlc1toLnJ1bGVzLmxlbmd0aC0xXXx8bnVsbDtkPW5ldyB3O2Quc3RhcnQ9ZisxO2QucGFyZW50PWg7ZC5wcmV2aW91cz1rO2gucnVsZXMucHVzaChkKX1lbHNlIn0iPT09Y1tmXSYmKGQuZW5kPWYrMSxkPWQucGFyZW50fHxlKTtyZXR1cm4gYihlLGEpfQpmdW5jdGlvbiB5KGEsYil7dmFyIGM9Yi5zdWJzdHJpbmcoYS5zdGFydCxhLmVuZC0xKTthLnBhcnNlZENzc1RleHQ9YS5jc3NUZXh0PWMudHJpbSgpO2EucGFyZW50JiYoYz1iLnN1YnN0cmluZyhhLnByZXZpb3VzP2EucHJldmlvdXMuZW5kOmEucGFyZW50LnN0YXJ0LGEuc3RhcnQtMSksYz1kYShjKSxjPWMucmVwbGFjZSh6LCIgIiksYz1jLnN1YnN0cmluZyhjLmxhc3RJbmRleE9mKCI7IikrMSksYz1hLnBhcnNlZFNlbGVjdG9yPWEuc2VsZWN0b3I9Yy50cmltKCksYS5hdFJ1bGU9MD09PWMuaW5kZXhPZigiQCIpLGEuYXRSdWxlPzA9PT1jLmluZGV4T2YoIkBtZWRpYSIpP2EudHlwZT1BOmMubWF0Y2goZWEpJiYoYS50eXBlPUIsYS5rZXlmcmFtZXNOYW1lPWEuc2VsZWN0b3Iuc3BsaXQoeikucG9wKCkpOmEudHlwZT0wPT09Yy5pbmRleE9mKCItLSIpP0M6RCk7aWYoYz1hLnJ1bGVzKWZvcih2YXIgZT0wLGQ9Yy5sZW5ndGgsZj12b2lkIDA7ZTxkJiYoZj1jW2VdKTtlKyspeShmLGIpOwpyZXR1cm4gYX1mdW5jdGlvbiBkYShhKXtyZXR1cm4gYS5yZXBsYWNlKC9cXChbMC05YS1mXXsxLDZ9KVxzL2dpLGZ1bmN0aW9uKGEsYyl7YT1jO2ZvcihjPTYtYS5sZW5ndGg7Yy0tOylhPSIwIithO3JldHVybiJcXCIrYX0pfQpmdW5jdGlvbiBFKGEsYixjKXtjPXZvaWQgMD09PWM/IiI6Yzt2YXIgZT0iIjtpZihhLmNzc1RleHR8fGEucnVsZXMpe3ZhciBkPWEucnVsZXMsZjtpZihmPWQpZj1kWzBdLGY9IShmJiZmLnNlbGVjdG9yJiYwPT09Zi5zZWxlY3Rvci5pbmRleE9mKCItLSIpKTtpZihmKXtmPTA7Zm9yKHZhciBnPWQubGVuZ3RoLGg9dm9pZCAwO2Y8ZyYmKGg9ZFtmXSk7ZisrKWU9RShoLGIsZSl9ZWxzZSBiP2I9YS5jc3NUZXh0OihiPWEuY3NzVGV4dCxiPWIucmVwbGFjZShmYSwiIikucmVwbGFjZShoYSwiIiksYj1iLnJlcGxhY2UoaWEsIiIpLnJlcGxhY2UoamEsIiIpKSwoZT1iLnRyaW0oKSkmJihlPSIgICIrZSsiXG4iKX1lJiYoYS5zZWxlY3RvciYmKGMrPWEuc2VsZWN0b3IrIiB7XG4iKSxjKz1lLGEuc2VsZWN0b3ImJihjKz0ifVxuXG4iKSk7cmV0dXJuIGN9CnZhciBEPTEsQj03LEE9NCxDPTFFMyxiYT0vXC9cKlteKl0qXCorKFteLypdW14qXSpcKispKlwvL2dpbSxjYT0vQGltcG9ydFteO10qOy9naW0sZmE9Lyg/Ol5bXjtcLVxzfV0rKT8tLVteO3t9XSo/Oltee307XSo/KD86Wztcbl18JCkvZ2ltLGhhPS8oPzpeW147XC1cc31dKyk/LS1bXjt7fV0qPzpbXnt9O10qP3tbXn1dKj99KD86Wztcbl18JCk/L2dpbSxpYT0vQGFwcGx5XHMqXCg/W14pO10qXCk/XHMqKD86Wztcbl18JCk/L2dpbSxqYT0vW147Ol0qPzpbXjtdKj92YXJcKFteO10qXCkoPzpbO1xuXXwkKT8vZ2ltLGVhPS9eQFteXHNdKmtleWZyYW1lcy8sej0vXHMrL2c7dmFyIEc9Lyg/Ol58Wztcc3tdXHMqKSgtLVtcdy1dKj8pXHMqOlxzKig/OigoPzonKD86XFwnfC4pKj8nfCIoPzpcXCJ8LikqPyJ8XChbXildKj9cKXxbXn07e10pKyl8XHsoW159XSopXH0oPzooPz1bO1xzfV0pfCQpKS9naSxIPS8oPzpefFxXKylAYXBwbHlccypcKD8oW14pO1xuXSopXCk/L2dpLGthPS9AbWVkaWFccyguKikvO3ZhciBJPW5ldyBTZXQ7ZnVuY3Rpb24gSihhKXtpZighYSlyZXR1cm4iIjsic3RyaW5nIj09PXR5cGVvZiBhJiYoYT14KGEpKTtyZXR1cm4gRShhLHUpfWZ1bmN0aW9uIEsoYSl7IWEuX19jc3NSdWxlcyYmYS50ZXh0Q29udGVudCYmKGEuX19jc3NSdWxlcz14KGEudGV4dENvbnRlbnQpKTtyZXR1cm4gYS5fX2Nzc1J1bGVzfHxudWxsfWZ1bmN0aW9uIEwoYSxiLGMsZSl7aWYoYSl7dmFyIGQ9ITEsZj1hLnR5cGU7aWYoZSYmZj09PUEpe3ZhciBnPWEuc2VsZWN0b3IubWF0Y2goa2EpO2cmJih3aW5kb3cubWF0Y2hNZWRpYShnWzFdKS5tYXRjaGVzfHwoZD0hMCkpfWY9PT1EP2IoYSk6YyYmZj09PUI/YyhhKTpmPT09QyYmKGQ9ITApO2lmKChhPWEucnVsZXMpJiYhZClmb3IoZD0wLGY9YS5sZW5ndGgsZz12b2lkIDA7ZDxmJiYoZz1hW2RdKTtkKyspTChnLGIsYyxlKX19CmZ1bmN0aW9uIE0oYSxiKXt2YXIgYz1hLmluZGV4T2YoInZhcigiKTtpZigtMT09PWMpcmV0dXJuIGIoYSwiIiwiIiwiIik7YTp7dmFyIGU9MDt2YXIgZD1jKzM7Zm9yKHZhciBmPWEubGVuZ3RoO2Q8ZjtkKyspaWYoIigiPT09YVtkXSllKys7ZWxzZSBpZigiKSI9PT1hW2RdJiYwPT09LS1lKWJyZWFrIGE7ZD0tMX1lPWEuc3Vic3RyaW5nKGMrNCxkKTtjPWEuc3Vic3RyaW5nKDAsYyk7YT1NKGEuc3Vic3RyaW5nKGQrMSksYik7ZD1lLmluZGV4T2YoIiwiKTtyZXR1cm4tMT09PWQ/YihjLGUudHJpbSgpLCIiLGEpOmIoYyxlLnN1YnN0cmluZygwLGQpLnRyaW0oKSxlLnN1YnN0cmluZyhkKzEpLnRyaW0oKSxhKX0KZnVuY3Rpb24gTihhKXtpZih2b2lkIDAhPT12KXJldHVybiB2O2lmKHZvaWQgMD09PWEuX19jc3NCdWlsZCl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoImNzcy1idWlsZCIpO2lmKGIpYS5fX2Nzc0J1aWxkPWI7ZWxzZXthOntiPSJ0ZW1wbGF0ZSI9PT1hLmxvY2FsTmFtZT9hLmNvbnRlbnQuZmlyc3RDaGlsZDphLmZpcnN0Q2hpbGQ7aWYoYiBpbnN0YW5jZW9mIENvbW1lbnQmJihiPWIudGV4dENvbnRlbnQudHJpbSgpLnNwbGl0KCI6IiksImNzcy1idWlsZCI9PT1iWzBdKSl7Yj1iWzFdO2JyZWFrIGF9Yj0iIn1pZigiIiE9PWIpe3ZhciBjPSJ0ZW1wbGF0ZSI9PT1hLmxvY2FsTmFtZT9hLmNvbnRlbnQuZmlyc3RDaGlsZDphLmZpcnN0Q2hpbGQ7Yy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpfWEuX19jc3NCdWlsZD1ifX1yZXR1cm4gYS5fX2Nzc0J1aWxkfHwiIn07dmFyIGxhPS87XHMqL20sbWE9L15ccyooaW5pdGlhbCl8KGluaGVyaXQpXHMqJC8sTz0vXHMqIWltcG9ydGFudC87ZnVuY3Rpb24gUCgpe3RoaXMuYT17fX1QLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXthPWEudHJpbSgpO3RoaXMuYVthXT17aDpiLGk6e319fTtQLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7YT1hLnRyaW0oKTtyZXR1cm4gdGhpcy5hW2FdfHxudWxsfTt2YXIgUT1udWxsO2Z1bmN0aW9uIFIoKXt0aGlzLmI9dGhpcy5jPW51bGw7dGhpcy5hPW5ldyBQfVIucHJvdG90eXBlLm89ZnVuY3Rpb24oYSl7YT1ILnRlc3QoYSl8fEcudGVzdChhKTtILmxhc3RJbmRleD0wO0cubGFzdEluZGV4PTA7cmV0dXJuIGF9OwpSLnByb3RvdHlwZS5tPWZ1bmN0aW9uKGEsYil7aWYodm9pZCAwPT09YS5fZ2F0aGVyZWRTdHlsZSl7dmFyIGM9W107Zm9yKHZhciBlPWEuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpLGQ9MDtkPGUubGVuZ3RoO2QrKyl7dmFyIGY9ZVtkXTtpZihmLmhhc0F0dHJpYnV0ZSgic2hhZHktdW5zY29wZWQiKSl7aWYoIWwpe3ZhciBnPWYudGV4dENvbnRlbnQ7SS5oYXMoZyl8fChJLmFkZChnKSxnPWYuY2xvbmVOb2RlKCEwKSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGcpKTtmLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZil9fWVsc2UgYy5wdXNoKGYudGV4dENvbnRlbnQpLGYucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmKX0oYz1jLmpvaW4oIiIpLnRyaW0oKSk/KGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKSxlLnRleHRDb250ZW50PWMsYS5jb250ZW50Lmluc2VydEJlZm9yZShlLGEuY29udGVudC5maXJzdENoaWxkKSxjPWUpOmM9bnVsbDthLl9nYXRoZXJlZFN0eWxlPQpjfXJldHVybihhPWEuX2dhdGhlcmVkU3R5bGUpP3RoaXMuaihhLGIpOm51bGx9O1IucHJvdG90eXBlLmo9ZnVuY3Rpb24oYSxiKXtiPXZvaWQgMD09PWI/IiI6Yjt2YXIgYz1LKGEpO3RoaXMubChjLGIpO2EudGV4dENvbnRlbnQ9SihjKTtyZXR1cm4gY307Ui5wcm90b3R5cGUuZj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9SyhhKTtMKGMsZnVuY3Rpb24oYSl7Ijpyb290Ij09PWEuc2VsZWN0b3ImJihhLnNlbGVjdG9yPSJodG1sIik7Yi5nKGEpfSk7YS50ZXh0Q29udGVudD1KKGMpO3JldHVybiBjfTtSLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpczt0aGlzLmM9YjtMKGEsZnVuY3Rpb24oYSl7Yy5nKGEpfSk7dGhpcy5jPW51bGx9O1IucHJvdG90eXBlLmc9ZnVuY3Rpb24oYSl7YS5jc3NUZXh0PW5hKHRoaXMsYS5wYXJzZWRDc3NUZXh0LGEpOyI6cm9vdCI9PT1hLnNlbGVjdG9yJiYoYS5zZWxlY3Rvcj0iOmhvc3QgPiAqIil9OwpmdW5jdGlvbiBuYShhLGIsYyl7Yj1iLnJlcGxhY2UoRyxmdW5jdGlvbihiLGQsZixnKXtyZXR1cm4gb2EoYSxiLGQsZixnLGMpfSk7cmV0dXJuIFMoYSxiLGMpfWZ1bmN0aW9uIHBhKGEsYil7Zm9yKHZhciBjPWI7Yy5wYXJlbnQ7KWM9Yy5wYXJlbnQ7dmFyIGU9e30sZD0hMTtMKGMsZnVuY3Rpb24oYyl7KGQ9ZHx8Yz09PWIpfHxjLnNlbGVjdG9yPT09Yi5zZWxlY3RvciYmT2JqZWN0LmFzc2lnbihlLFQoYSxjLnBhcnNlZENzc1RleHQpKX0pO3JldHVybiBlfQpmdW5jdGlvbiBTKGEsYixjKXtmb3IodmFyIGU7ZT1ILmV4ZWMoYik7KXt2YXIgZD1lWzBdLGY9ZVsxXTtlPWUuaW5kZXg7dmFyIGc9Yi5zbGljZSgwLGUrZC5pbmRleE9mKCJAYXBwbHkiKSk7Yj1iLnNsaWNlKGUrZC5sZW5ndGgpO3ZhciBoPWM/cGEoYSxjKTp7fTtPYmplY3QuYXNzaWduKGgsVChhLGcpKTtkPXZvaWQgMDt2YXIgaz1hO2Y9Zi5yZXBsYWNlKGxhLCIiKTt2YXIgbj1bXTt2YXIgbT1rLmEuZ2V0KGYpO218fChrLmEuc2V0KGYse30pLG09ay5hLmdldChmKSk7aWYobSl7ay5jJiYobS5pW2suY109ITApO3ZhciBxPW0uaDtmb3IoZCBpbiBxKWs9aCYmaFtkXSxtPVtkLCI6IHZhcigiLGYsIl8tXyIsZF0sayYmbS5wdXNoKCIsIixrLnJlcGxhY2UoTywiIikpLG0ucHVzaCgiKSIpLE8udGVzdChxW2RdKSYmbS5wdXNoKCIgIWltcG9ydGFudCIpLG4ucHVzaChtLmpvaW4oIiIpKX1kPW4uam9pbigiOyAiKTtiPWcrZCtiO0gubGFzdEluZGV4PWUrZC5sZW5ndGh9cmV0dXJuIGJ9CmZ1bmN0aW9uIFQoYSxiLGMpe2M9dm9pZCAwPT09Yz8hMTpjO2I9Yi5zcGxpdCgiOyIpO2Zvcih2YXIgZSxkLGY9e30sZz0wLGg7ZzxiLmxlbmd0aDtnKyspaWYoZT1iW2ddKWlmKGg9ZS5zcGxpdCgiOiIpLDE8aC5sZW5ndGgpe2U9aFswXS50cmltKCk7ZD1oLnNsaWNlKDEpLmpvaW4oIjoiKTtpZihjKXt2YXIgaz1hO2g9ZTt2YXIgbj1tYS5leGVjKGQpO24mJihuWzFdPyhrLmJ8fChrLmI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibWV0YSIpLGsuYi5zZXRBdHRyaWJ1dGUoImFwcGx5LXNoaW0tbWVhc3VyZSIsIiIpLGsuYi5zdHlsZS5hbGw9ImluaXRpYWwiLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoay5iKSksaD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShrLmIpLmdldFByb3BlcnR5VmFsdWUoaCkpOmg9ImFwcGx5LXNoaW0taW5oZXJpdCIsZD1oKX1mW2VdPWR9cmV0dXJuIGZ9ZnVuY3Rpb24gcWEoYSxiKXtpZihRKWZvcih2YXIgYyBpbiBiLmkpYyE9PWEuYyYmUShjKX0KZnVuY3Rpb24gb2EoYSxiLGMsZSxkLGYpe2UmJk0oZSxmdW5jdGlvbihiLGMpe2MmJmEuYS5nZXQoYykmJihkPSJAYXBwbHkgIitjKyI7Iil9KTtpZighZClyZXR1cm4gYjt2YXIgZz1TKGEsIiIrZCxmKTtmPWIuc2xpY2UoMCxiLmluZGV4T2YoIi0tIikpO3ZhciBoPWc9VChhLGcsITApLGs9YS5hLmdldChjKSxuPWsmJmsuaDtuP2g9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG4pLGcpOmEuYS5zZXQoYyxoKTt2YXIgbT1bXSxxLFo9ITE7Zm9yKHEgaW4gaCl7dmFyIEY9Z1txXTt2b2lkIDA9PT1GJiYoRj0iaW5pdGlhbCIpOyFufHxxIGluIG58fChaPSEwKTttLnB1c2goYysiXy1fIitxKyI6ICIrRil9WiYmcWEoYSxrKTtrJiYoay5oPWgpO2UmJihmPWIrIjsiK2YpO3JldHVybiBmK20uam9pbigiOyAiKSsiOyJ9Ui5wcm90b3R5cGUuZGV0ZWN0TWl4aW49Ui5wcm90b3R5cGUubztSLnByb3RvdHlwZS50cmFuc2Zvcm1TdHlsZT1SLnByb3RvdHlwZS5qOwpSLnByb3RvdHlwZS50cmFuc2Zvcm1DdXN0b21TdHlsZT1SLnByb3RvdHlwZS5mO1IucHJvdG90eXBlLnRyYW5zZm9ybVJ1bGVzPVIucHJvdG90eXBlLmw7Ui5wcm90b3R5cGUudHJhbnNmb3JtUnVsZT1SLnByb3RvdHlwZS5nO1IucHJvdG90eXBlLnRyYW5zZm9ybVRlbXBsYXRlPVIucHJvdG90eXBlLm07Ui5wcm90b3R5cGUuX3NlcGFyYXRvcj0iXy1fIjtPYmplY3QuZGVmaW5lUHJvcGVydHkoUi5wcm90b3R5cGUsImludmFsaWRDYWxsYmFjayIse2dldDpmdW5jdGlvbigpe3JldHVybiBRfSxzZXQ6ZnVuY3Rpb24oYSl7UT1hfX0pO3ZhciBVPXt9O3ZhciByYT1Qcm9taXNlLnJlc29sdmUoKTtmdW5jdGlvbiBzYShhKXtpZihhPVVbYV0pYS5fYXBwbHlTaGltQ3VycmVudFZlcnNpb249YS5fYXBwbHlTaGltQ3VycmVudFZlcnNpb258fDAsYS5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb249YS5fYXBwbHlTaGltVmFsaWRhdGluZ1ZlcnNpb258fDAsYS5fYXBwbHlTaGltTmV4dFZlcnNpb249KGEuX2FwcGx5U2hpbU5leHRWZXJzaW9ufHwwKSsxfWZ1bmN0aW9uIHRhKGEpe3JldHVybiBhLl9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj09PWEuX2FwcGx5U2hpbU5leHRWZXJzaW9ufWZ1bmN0aW9uIHVhKGEpe2EuX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uPWEuX2FwcGx5U2hpbU5leHRWZXJzaW9uO2EuX3ZhbGlkYXRpbmd8fChhLl92YWxpZGF0aW5nPSEwLHJhLnRoZW4oZnVuY3Rpb24oKXthLl9hcHBseVNoaW1DdXJyZW50VmVyc2lvbj1hLl9hcHBseVNoaW1OZXh0VmVyc2lvbjthLl92YWxpZGF0aW5nPSExfSkpfTt2YXIgVj1uZXcgUjtmdW5jdGlvbiBXKCl7dGhpcy5hPW51bGw7Vi5pbnZhbGlkQ2FsbGJhY2s9c2F9ZnVuY3Rpb24gWChhKXshYS5hJiZ3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2UmJihhLmE9d2luZG93LlNoYWR5Q1NTLkN1c3RvbVN0eWxlSW50ZXJmYWNlLGEuYS50cmFuc2Zvcm1DYWxsYmFjaz1mdW5jdGlvbihhKXtWLmYoYSl9LGEuYS52YWxpZGF0ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7YS5hLmVucXVldWVkJiZhLmZsdXNoQ3VzdG9tU3R5bGVzKCl9KX0pfVcucHJvdG90eXBlLnByZXBhcmVUZW1wbGF0ZT1mdW5jdGlvbihhLGIpe1godGhpcyk7IiI9PT1OKGEpJiYoVVtiXT1hLGI9Vi5tKGEsYiksYS5fc3R5bGVBc3Q9Yil9OwpXLnByb3RvdHlwZS5mbHVzaEN1c3RvbVN0eWxlcz1mdW5jdGlvbigpe1godGhpcyk7aWYodGhpcy5hKXt2YXIgYT10aGlzLmEucHJvY2Vzc1N0eWxlcygpO2lmKHRoaXMuYS5lbnF1ZXVlZCl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMuYS5nZXRTdHlsZUZvckN1c3RvbVN0eWxlKGFbYl0pO2MmJlYuZihjKX10aGlzLmEuZW5xdWV1ZWQ9ITF9fX07ClcucHJvdG90eXBlLnN0eWxlU3VidHJlZT1mdW5jdGlvbihhLGIpe1godGhpcyk7aWYoYilmb3IodmFyIGMgaW4gYiludWxsPT09Yz9hLnN0eWxlLnJlbW92ZVByb3BlcnR5KGMpOmEuc3R5bGUuc2V0UHJvcGVydHkoYyxiW2NdKTtpZihhLnNoYWRvd1Jvb3QpZm9yKHRoaXMuc3R5bGVFbGVtZW50KGEpLGE9YS5zaGFkb3dSb290LmNoaWxkcmVufHxhLnNoYWRvd1Jvb3QuY2hpbGROb2RlcyxiPTA7YjxhLmxlbmd0aDtiKyspdGhpcy5zdHlsZVN1YnRyZWUoYVtiXSk7ZWxzZSBmb3IoYT1hLmNoaWxkcmVufHxhLmNoaWxkTm9kZXMsYj0wO2I8YS5sZW5ndGg7YisrKXRoaXMuc3R5bGVTdWJ0cmVlKGFbYl0pfTsKVy5wcm90b3R5cGUuc3R5bGVFbGVtZW50PWZ1bmN0aW9uKGEpe1godGhpcyk7dmFyIGI9YS5sb2NhbE5hbWUsYztiPy0xPGIuaW5kZXhPZigiLSIpP2M9YjpjPWEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZSgiaXMiKXx8IiI6Yz1hLmlzO2I9VVtjXTtpZighKGImJiIiIT09TihiKXx8IWJ8fHRhKGIpKSl7aWYodGEoYil8fGIuX2FwcGx5U2hpbVZhbGlkYXRpbmdWZXJzaW9uIT09Yi5fYXBwbHlTaGltTmV4dFZlcnNpb24pdGhpcy5wcmVwYXJlVGVtcGxhdGUoYixjKSx1YShiKTtpZihhPWEuc2hhZG93Um9vdClpZihhPWEucXVlcnlTZWxlY3Rvcigic3R5bGUiKSlhLl9fY3NzUnVsZXM9Yi5fc3R5bGVBc3QsYS50ZXh0Q29udGVudD1KKGIuX3N0eWxlQXN0KX19O1cucHJvdG90eXBlLnN0eWxlRG9jdW1lbnQ9ZnVuY3Rpb24oYSl7WCh0aGlzKTt0aGlzLnN0eWxlU3VidHJlZShkb2N1bWVudC5ib2R5LGEpfTsKaWYoIXdpbmRvdy5TaGFkeUNTU3x8IXdpbmRvdy5TaGFkeUNTUy5TY29waW5nU2hpbSl7dmFyIFk9bmV3IFcsdmE9d2luZG93LlNoYWR5Q1NTJiZ3aW5kb3cuU2hhZHlDU1MuQ3VzdG9tU3R5bGVJbnRlcmZhY2U7d2luZG93LlNoYWR5Q1NTPXtwcmVwYXJlVGVtcGxhdGU6ZnVuY3Rpb24oYSxiKXtZLmZsdXNoQ3VzdG9tU3R5bGVzKCk7WS5wcmVwYXJlVGVtcGxhdGUoYSxiKX0scHJlcGFyZVRlbXBsYXRlU3R5bGVzOmZ1bmN0aW9uKGEsYixjKXt3aW5kb3cuU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlKGEsYixjKX0scHJlcGFyZVRlbXBsYXRlRG9tOmZ1bmN0aW9uKCl7fSxzdHlsZVN1YnRyZWU6ZnVuY3Rpb24oYSxiKXtZLmZsdXNoQ3VzdG9tU3R5bGVzKCk7WS5zdHlsZVN1YnRyZWUoYSxiKX0sc3R5bGVFbGVtZW50OmZ1bmN0aW9uKGEpe1kuZmx1c2hDdXN0b21TdHlsZXMoKTtZLnN0eWxlRWxlbWVudChhKX0sc3R5bGVEb2N1bWVudDpmdW5jdGlvbihhKXtZLmZsdXNoQ3VzdG9tU3R5bGVzKCk7Clkuc3R5bGVEb2N1bWVudChhKX0sZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlOmZ1bmN0aW9uKGEsYil7cmV0dXJuKGE9d2luZG93LmdldENvbXB1dGVkU3R5bGUoYSkuZ2V0UHJvcGVydHlWYWx1ZShiKSk/YS50cmltKCk6IiJ9LGZsdXNoQ3VzdG9tU3R5bGVzOmZ1bmN0aW9uKCl7WS5mbHVzaEN1c3RvbVN0eWxlcygpfSxuYXRpdmVDc3M6dSxuYXRpdmVTaGFkb3c6bCxjc3NCdWlsZDp2LGRpc2FibGVSdW50aW1lOmFhfTt2YSYmKHdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZT12YSl9d2luZG93LlNoYWR5Q1NTLkFwcGx5U2hpbT1WO30pLmNhbGwodGhpcyk7CgoKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICBjb25zdCB1c2VyUG9seW1lciA9IHdpbmRvdy5Qb2x5bWVyOwoKICAvKioKICAgKiBAbmFtZXNwYWNlIFBvbHltZXIKICAgKiBAc3VtbWFyeSBQb2x5bWVyIGlzIGEgbGlnaHR3ZWlnaHQgbGlicmFyeSBidWlsdCBvbiB0b3Agb2YgdGhlIHdlYgogICAqICAgc3RhbmRhcmRzLWJhc2VkIFdlYiBDb21wb25lbnRzIEFQSSdzLCBhbmQgbWFrZXMgaXQgZWFzeSB0byBidWlsZCB5b3VyCiAgICogICBvd24gY3VzdG9tIEhUTUwgZWxlbWVudHMuCiAgICogQHBhcmFtIHshUG9seW1lckluaXR9IGluZm8gUHJvdG90eXBlIGZvciB0aGUgY3VzdG9tIGVsZW1lbnQuIEl0IG11c3QgY29udGFpbgogICAqICAgYW4gYGlzYCBwcm9wZXJ0eSB0byBzcGVjaWZ5IHRoZSBlbGVtZW50IG5hbWUuIE90aGVyIHByb3BlcnRpZXMgcG9wdWxhdGUKICAgKiAgIHRoZSBlbGVtZW50IHByb3RvdHlwZS4gVGhlIGBwcm9wZXJ0aWVzYCwgYG9ic2VydmVyc2AsIGBob3N0QXR0cmlidXRlc2AsCiAgICogICBhbmQgYGxpc3RlbmVyc2AgcHJvcGVydGllcyBhcmUgcHJvY2Vzc2VkIHRvIGNyZWF0ZSBlbGVtZW50IGZlYXR1cmVzLgogICAqIEByZXR1cm4geyFPYmplY3R9IFJldHVybnMgYSBjdXN0b20gZWxlbWVudCBjbGFzcyBmb3IgdGhlIGdpdmVuIHByb3ZpZGVkCiAgICogICBwcm90b3R5cGUgYGluZm9gIG9iamVjdC4gVGhlIG5hbWUgb2YgdGhlIGVsZW1lbnQgaWYgZ2l2ZW4gYnkgYGluZm8uaXNgLgogICAqLwogIHdpbmRvdy5Qb2x5bWVyID0gZnVuY3Rpb24oaW5mbykgewogICAgcmV0dXJuIHdpbmRvdy5Qb2x5bWVyLl9wb2x5bWVyRm4oaW5mbyk7CiAgfTsKCiAgLy8gc3VwcG9ydCB1c2VyIHNldHRpbmdzIG9uIHRoZSBQb2x5bWVyIG9iamVjdAogIGlmICh1c2VyUG9seW1lcikgewogICAgT2JqZWN0LmFzc2lnbihQb2x5bWVyLCB1c2VyUG9seW1lcik7CiAgfQoKICAvLyBUbyBiZSBwbHVnZ2VkIGJ5IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBpZiBsb2FkZWQKICAvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqLwogIC8qKgogICAqIEBwYXJhbSB7IVBvbHltZXJJbml0fSBpbmZvIFByb3RvdHlwZSBmb3IgdGhlIGN1c3RvbSBlbGVtZW50LiBJdCBtdXN0IGNvbnRhaW4KICAgKiAgIGFuIGBpc2AgcHJvcGVydHkgdG8gc3BlY2lmeSB0aGUgZWxlbWVudCBuYW1lLiBPdGhlciBwcm9wZXJ0aWVzIHBvcHVsYXRlCiAgICogICB0aGUgZWxlbWVudCBwcm90b3R5cGUuIFRoZSBgcHJvcGVydGllc2AsIGBvYnNlcnZlcnNgLCBgaG9zdEF0dHJpYnV0ZXNgLAogICAqICAgYW5kIGBsaXN0ZW5lcnNgIHByb3BlcnRpZXMgYXJlIHByb2Nlc3NlZCB0byBjcmVhdGUgZWxlbWVudCBmZWF0dXJlcy4KICAgKiBAcmV0dXJuIHshT2JqZWN0fSBSZXR1cm5zIGEgY3VzdG9tIGVsZW1lbnQgY2xhc3MgZm9yIHRoZSBnaXZlbiBwcm92aWRlZAogICAqICAgcHJvdG90eXBlIGBpbmZvYCBvYmplY3QuIFRoZSBuYW1lIG9mIHRoZSBlbGVtZW50IGlmIGdpdmVuIGJ5IGBpbmZvLmlzYC4KICAgKi8KICB3aW5kb3cuUG9seW1lci5fcG9seW1lckZuID0gZnVuY3Rpb24oaW5mbykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvYWQgcG9seW1lci5odG1sIHRvIHVzZSB0aGUgUG9seW1lcigpIGZ1bmN0aW9uLicpOwogIH07CiAgLyogZXNsaW50LWVuYWJsZSAqLwoKICB3aW5kb3cuUG9seW1lci52ZXJzaW9uID0gJzIuNy4wJzsKCiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8KICAvKgogIFdoZW4gdXNpbmcgQ2xvc3VyZSBDb21waWxlciwgSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eShwcm9wZXJ0eSwgb2JqZWN0KSBpcyByZXBsYWNlZCBieSB0aGUgbXVuZ2VkIG5hbWUgZm9yIG9iamVjdFtwcm9wZXJ0eV0KICBXZSBjYW5ub3QgYWxpYXMgdGhpcyBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0byB1c2UgYSBzbWFsbCBzaGltIHRoYXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIHdoZW4gbm90IGNvbXBpbGluZy4KICAqLwogIHdpbmRvdy5KU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcCwgb2JqKSB7CiAgICByZXR1cm4gcHJvcDsKICB9OwogIC8qIGVzbGludC1lbmFibGUgKi8KCn0pKCk7CgoKCiAgKGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBDU1NfVVJMX1JYID0gLyh1cmxcKCkoW14pXSopKFwpKS9nOwogICAgbGV0IEFCU19VUkwgPSAvKF5cLyl8KF4jKXwoXltcdy1cZF0qOikvOwogICAgbGV0IHdvcmtpbmdVUkw7CiAgICBsZXQgcmVzb2x2ZURvYzsKICAgIC8qKgogICAgICogUmVzb2x2ZXMgdGhlIGdpdmVuIFVSTCBhZ2FpbnN0IHRoZSBwcm92aWRlZCBgYmFzZVVyaScuCiAgICAgKiAKICAgICAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIG5vIHJlc29sdXRpb24gZm9yIFVSTHMgdGhhdCBzdGFydAogICAgICogd2l0aCBgL2AgKGFic29sdXRlIFVSTHMpIG9yIGAjYCAoaGFzaCBpZGVudGlmaWVycykuICBGb3IgZ2VuZXJhbCBwdXJwb3NlCiAgICAgKiBVUkwgcmVzb2x1dGlvbiwgdXNlIGB3aW5kb3cuVVJMYC4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5SZXNvbHZlVXJsCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIElucHV0IFVSTCB0byByZXNvbHZlCiAgICAgKiBAcGFyYW0gez9zdHJpbmc9fSBiYXNlVVJJIEJhc2UgVVJJIHRvIHJlc29sdmUgdGhlIFVSTCBhZ2FpbnN0CiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHJlc29sdmVkIFVSTAogICAgICovCiAgICBmdW5jdGlvbiByZXNvbHZlVXJsKHVybCwgYmFzZVVSSSkgewogICAgICBpZiAodXJsICYmIEFCU19VUkwudGVzdCh1cmwpKSB7CiAgICAgICAgcmV0dXJuIHVybDsKICAgICAgfQogICAgICAvLyBMYXp5IGZlYXR1cmUgZGV0ZWN0aW9uLgogICAgICBpZiAod29ya2luZ1VSTCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgd29ya2luZ1VSTCA9IGZhbHNlOwogICAgICAgIHRyeSB7CiAgICAgICAgICBjb25zdCB1ID0gbmV3IFVSTCgnYicsICdodHRwOi8vYScpOwogICAgICAgICAgdS5wYXRobmFtZSA9ICdjJTIwZCc7CiAgICAgICAgICB3b3JraW5nVVJMID0gKHUuaHJlZiA9PT0gJ2h0dHA6Ly9hL2MlMjBkJyk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgLy8gc2lsZW50bHkgZmFpbAogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoIWJhc2VVUkkpIHsKICAgICAgICBiYXNlVVJJID0gZG9jdW1lbnQuYmFzZVVSSSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgfQogICAgICBpZiAod29ya2luZ1VSTCkgewogICAgICAgIHJldHVybiAobmV3IFVSTCh1cmwsIGJhc2VVUkkpKS5ocmVmOwogICAgICB9CiAgICAgIC8vIEZhbGxiYWNrIHRvIGNyZWF0aW5nIGFuIGFuY2hvciBpbnRvIGEgZGlzY29ubmVjdGVkIGRvY3VtZW50LgogICAgICBpZiAoIXJlc29sdmVEb2MpIHsKICAgICAgICByZXNvbHZlRG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCd0ZW1wJyk7CiAgICAgICAgcmVzb2x2ZURvYy5iYXNlID0gcmVzb2x2ZURvYy5jcmVhdGVFbGVtZW50KCdiYXNlJyk7CiAgICAgICAgcmVzb2x2ZURvYy5oZWFkLmFwcGVuZENoaWxkKHJlc29sdmVEb2MuYmFzZSk7CiAgICAgICAgcmVzb2x2ZURvYy5hbmNob3IgPSByZXNvbHZlRG9jLmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICByZXNvbHZlRG9jLmJvZHkuYXBwZW5kQ2hpbGQocmVzb2x2ZURvYy5hbmNob3IpOwogICAgICB9CiAgICAgIHJlc29sdmVEb2MuYmFzZS5ocmVmID0gYmFzZVVSSTsKICAgICAgcmVzb2x2ZURvYy5hbmNob3IuaHJlZiA9IHVybDsKICAgICAgcmV0dXJuIHJlc29sdmVEb2MuYW5jaG9yLmhyZWYgfHwgdXJsOwoKICAgIH0KCiAgICAvKioKICAgICAqIFJlc29sdmVzIGFueSByZWxhdGl2ZSBVUkwncyBpbiB0aGUgZ2l2ZW4gQ1NTIHRleHQgYWdhaW5zdCB0aGUgcHJvdmlkZWQKICAgICAqIGBvd25lckRvY3VtZW50YCdzIGBiYXNlVVJJYC4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5SZXNvbHZlVXJsCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY3NzVGV4dCBDU1MgdGV4dCB0byBwcm9jZXNzCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSSSBCYXNlIFVSSSB0byByZXNvbHZlIHRoZSBVUkwgYWdhaW5zdAogICAgICogQHJldHVybiB7c3RyaW5nfSBQcm9jZXNzZWQgQ1NTIHRleHQgd2l0aCByZXNvbHZlZCBVUkwncwogICAgICovCiAgICBmdW5jdGlvbiByZXNvbHZlQ3NzKGNzc1RleHQsIGJhc2VVUkkpIHsKICAgICAgcmV0dXJuIGNzc1RleHQucmVwbGFjZShDU1NfVVJMX1JYLCBmdW5jdGlvbihtLCBwcmUsIHVybCwgcG9zdCkgewogICAgICAgIHJldHVybiBwcmUgKyAnXCcnICsKICAgICAgICAgIHJlc29sdmVVcmwodXJsLnJlcGxhY2UoL1siJ10vZywgJycpLCBiYXNlVVJJKSArCiAgICAgICAgICAnXCcnICsgcG9zdDsKICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgcGF0aCBmcm9tIGEgZ2l2ZW4gYHVybGAuIFRoZSBwYXRoIGluY2x1ZGVzIHRoZSB0cmFpbGluZwogICAgICogYC9gIGZyb20gdGhlIHVybC4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5SZXNvbHZlVXJsCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIElucHV0IFVSTCB0byB0cmFuc2Zvcm0KICAgICAqIEByZXR1cm4ge3N0cmluZ30gcmVzb2x2ZWQgcGF0aAogICAgICovCiAgICBmdW5jdGlvbiBwYXRoRnJvbVVybCh1cmwpIHsKICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMCwgdXJsLmxhc3RJbmRleE9mKCcvJykgKyAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1vZHVsZSB3aXRoIHV0aWxpdGllcyBmb3IgcmVzb2x2aW5nIHJlbGF0aXZlIFVSTCdzLgogICAgICoKICAgICAqIEBuYW1lc3BhY2UKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICAgKiBAc3VtbWFyeSBNb2R1bGUgd2l0aCB1dGlsaXRpZXMgZm9yIHJlc29sdmluZyByZWxhdGl2ZSBVUkwncy4KICAgICAqLwogICAgUG9seW1lci5SZXNvbHZlVXJsID0gewogICAgICByZXNvbHZlQ3NzOiByZXNvbHZlQ3NzLAogICAgICByZXNvbHZlVXJsOiByZXNvbHZlVXJsLAogICAgICBwYXRoRnJvbVVybDogcGF0aEZyb21VcmwKICAgIH07CgogIH0pKCk7CgoKCi8qKiBAc3VwcHJlc3Mge2RlcHJlY2F0ZWR9ICovCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIC8qKgogICAqIFNldHMgdGhlIGdsb2JhbCwgbGVnYWN5IHNldHRpbmdzLgogICAqCiAgICogQGRlcHJlY2F0ZWQKICAgKiBAbmFtZXNwYWNlCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKi8KICBQb2x5bWVyLlNldHRpbmdzID0gUG9seW1lci5TZXR0aW5ncyB8fCB7fTsKCiAgUG9seW1lci5TZXR0aW5ncy51c2VTaGFkb3cgPSAhKHdpbmRvdy5TaGFkeURPTSk7CiAgUG9seW1lci5TZXR0aW5ncy51c2VOYXRpdmVDU1NQcm9wZXJ0aWVzID0KICAgIEJvb2xlYW4oIXdpbmRvdy5TaGFkeUNTUyB8fCB3aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzKTsKICBQb2x5bWVyLlNldHRpbmdzLnVzZU5hdGl2ZUN1c3RvbUVsZW1lbnRzID0KICAgICEod2luZG93LmN1c3RvbUVsZW1lbnRzLnBvbHlmaWxsV3JhcEZsdXNoQ2FsbGJhY2spOwoKCiAgLyoqCiAgICogR2xvYmFsbHkgc2V0dGFibGUgcHJvcGVydHkgdGhhdCBpcyBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkIHRvCiAgICogYFBvbHltZXIuRWxlbWVudE1peGluYCBpbnN0YW5jZXMsIHVzZWZ1bCBmb3IgYmluZGluZyBpbiB0ZW1wbGF0ZXMgdG8KICAgKiBtYWtlIFVSTCdzIHJlbGF0aXZlIHRvIGFuIGFwcGxpY2F0aW9uJ3Mgcm9vdC4gIERlZmF1bHRzIHRvIHRoZSBtYWluCiAgICogZG9jdW1lbnQgVVJMLCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdXNlcnMuICBJdCBtYXkgYmUgdXNlZnVsIHRvIHNldAogICAqIGBQb2x5bWVyLnJvb3RQYXRoYCB0byBwcm92aWRlIGEgc3RhYmxlIGFwcGxpY2F0aW9uIG1vdW50IHBhdGggd2hlbgogICAqIHVzaW5nIGNsaWVudCBzaWRlIHJvdXRpbmcuCiAgICoKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqLwogIFBvbHltZXIucm9vdFBhdGggPSBQb2x5bWVyLnJvb3RQYXRoIHx8CiAgICBQb2x5bWVyLlJlc29sdmVVcmwucGF0aEZyb21VcmwoZG9jdW1lbnQuYmFzZVVSSSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZik7CgogIC8qKgogICAqIFNldHMgdGhlIGdsb2JhbCByb290UGF0aCBwcm9wZXJ0eSB1c2VkIGJ5IGBQb2x5bWVyLkVsZW1lbnRNaXhpbmAgYW5kCiAgICogYXZhaWxhYmxlIHZpYSBgUG9seW1lci5yb290UGF0aGAuCiAgICoKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBuZXcgcm9vdCBwYXRoCiAgICogQHJldHVybiB7dm9pZH0KICAgKi8KICBQb2x5bWVyLnNldFJvb3RQYXRoID0gZnVuY3Rpb24ocGF0aCkgewogICAgUG9seW1lci5yb290UGF0aCA9IHBhdGg7CiAgfTsKCiAgLyoqCiAgICogQSBnbG9iYWwgY2FsbGJhY2sgdXNlZCB0byBzYW5pdGl6ZSBhbnkgdmFsdWUgYmVmb3JlIGluc2VydGluZyBpdCBpbnRvIHRoZSBET00uIFRoZSBjYWxsYmFjayBzaWduYXR1cmUgaXM6CiAgICoKICAgKiAgICAgUG9seW1lciA9IHsKICAgKiAgICAgICBzYW5pdGl6ZURPTVZhbHVlOiBmdW5jdGlvbih2YWx1ZSwgbmFtZSwgdHlwZSwgbm9kZSkgeyAuLi4gfQogICAqICAgICB9CiAgICoKICAgKiBXaGVyZToKICAgKgogICAqIGB2YWx1ZWAgaXMgdGhlIHZhbHVlIHRvIHNhbml0aXplLgogICAqIGBuYW1lYCBpcyB0aGUgbmFtZSBvZiBhbiBhdHRyaWJ1dGUgb3IgcHJvcGVydHkgKGZvciBleGFtcGxlLCBocmVmKS4KICAgKiBgdHlwZWAgaW5kaWNhdGVzIHdoZXJlIHRoZSB2YWx1ZSBpcyBiZWluZyBpbnNlcnRlZDogb25lIG9mIHByb3BlcnR5LCBhdHRyaWJ1dGUsIG9yIHRleHQuCiAgICogYG5vZGVgIGlzIHRoZSBub2RlIHdoZXJlIHRoZSB2YWx1ZSBpcyBiZWluZyBpbnNlcnRlZC4KICAgKgogICAqIEB0eXBlIHsoZnVuY3Rpb24oKixzdHJpbmcsc3RyaW5nLE5vZGUpOiopfHVuZGVmaW5lZH0KICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqLwogIFBvbHltZXIuc2FuaXRpemVET01WYWx1ZSA9IFBvbHltZXIuc2FuaXRpemVET01WYWx1ZSB8fCBudWxsOwoKICAvKioKICAgKiBTZXRzIHRoZSBnbG9iYWwgc2FuaXRpemVET01WYWx1ZSBhdmFpbGFibGUgdmlhIGBQb2x5bWVyLnNhbml0aXplRE9NVmFsdWVgLgogICAqCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAcGFyYW0geyhmdW5jdGlvbigqLHN0cmluZyxzdHJpbmcsTm9kZSk6Kil8dW5kZWZpbmVkfSBuZXdTYW5pdGl6ZURPTVZhbHVlIHRoZSBnbG9iYWwgc2FuaXRpemVET01WYWx1ZSBjYWxsYmFjawogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci5zZXRTYW5pdGl6ZURPTVZhbHVlID0gZnVuY3Rpb24obmV3U2FuaXRpemVET01WYWx1ZSkgewogICAgUG9seW1lci5zYW5pdGl6ZURPTVZhbHVlID0gbmV3U2FuaXRpemVET01WYWx1ZTsKICB9OwoKICAvKioKICAgKiBHbG9iYWxseSBzZXR0YWJsZSBwcm9wZXJ0eSB0byBtYWtlIFBvbHltZXIgR2VzdHVyZXMgdXNlIHBhc3NpdmUgVG91Y2hFdmVudCBsaXN0ZW5lcnMgd2hlbiByZWNvZ25pemluZyBnZXN0dXJlcy4KICAgKiBXaGVuIHNldCB0byBgdHJ1ZWAsIGdlc3R1cmVzIG1hZGUgZnJvbSB0b3VjaCB3aWxsIG5vdCBiZSBhYmxlIHRvIHByZXZlbnQgc2Nyb2xsaW5nLCBhbGxvd2luZyBmb3Igc21vb3RoZXIKICAgKiBzY3JvbGxpbmcgcGVyZm9ybWFuY2UuCiAgICogRGVmYXVsdHMgdG8gYGZhbHNlYCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCiAgICoKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqLwogIFBvbHltZXIucGFzc2l2ZVRvdWNoR2VzdHVyZXMgPSBQb2x5bWVyLnBhc3NpdmVUb3VjaEdlc3R1cmVzIHx8IGZhbHNlOwoKICAvKioKICAgKiBTZXRzIGBwYXNzaXZlVG91Y2hHZXN0dXJlc2AgZ2xvYmFsbHkgZm9yIGFsbCBlbGVtZW50cyB1c2luZyBQb2x5bWVyIEdlc3R1cmVzLgogICAqCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVzZVBhc3NpdmUgZW5hYmxlIG9yIGRpc2FibGUgcGFzc2l2ZSB0b3VjaCBnZXN0dXJlcyBnbG9iYWxseQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci5zZXRQYXNzaXZlVG91Y2hHZXN0dXJlcyA9IGZ1bmN0aW9uKHVzZVBhc3NpdmUpIHsKICAgIFBvbHltZXIucGFzc2l2ZVRvdWNoR2VzdHVyZXMgPSB1c2VQYXNzaXZlOwogIH07CgogIFBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9ucyA9IFBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9ucyB8fAogICAgICB3aW5kb3cuUG9seW1lclNldHRpbmdzICYmIHdpbmRvdy5Qb2x5bWVyU2V0dGluZ3MubGVnYWN5T3B0aW1pemF0aW9ucyB8fCBmYWxzZTsKCiAgLyoqCiAgICogU2V0cyBgbGVnYWN5T3B0aW1pemF0aW9uc2AgZ2xvYmFsbHkgZm9yIGFsbCBlbGVtZW50cy4gRW5hYmxlcwogICAqIG9wdGltaXphdGlvbnMgd2hlbiBvbmx5IGxlZ2FjeSBQb2x5bWVyKCkgc3R5bGUgZWxlbWVudHMgYXJlIHVzZWQuCiAgICoKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlTGVnYWN5T3B0aW1pemF0aW9ucyBlbmFibGUgb3IgZGlzYWJsZSBsZWdhY3kgb3B0aW1pemF0aW9ucyBnbG9iYWxseS4KICAgKiBAcmV0dXJuIHt2b2lkfQogICAqLwogIFBvbHltZXIuc2V0TGVnYWN5T3B0aW1pemF0aW9ucyA9IGZ1bmN0aW9uKHVzZUxlZ2FjeU9wdGltaXphdGlvbnMpIHsKICAgIFBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9ucyA9IHVzZUxlZ2FjeU9wdGltaXphdGlvbnM7CiAgfTsKfSkoKTsKCgoKKGZ1bmN0aW9uKCkgewoKICAndXNlIHN0cmljdCc7CgogIC8vIHVuaXF1ZSBnbG9iYWwgaWQgZm9yIGRlZHVwaW5nIG1peGlucy4KICBsZXQgZGVkdXBlSWQgPSAwOwoKICAvKioKICAgKiBAY29uc3RydWN0b3IKICAgKiBAZXh0ZW5kcyB7RnVuY3Rpb259CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBNaXhpbkZ1bmN0aW9uKCl7fQogIC8qKiBAdHlwZSB7KFdlYWtNYXAgfCB1bmRlZmluZWQpfSAqLwogIE1peGluRnVuY3Rpb24ucHJvdG90eXBlLl9fbWl4aW5BcHBsaWNhdGlvbnM7CiAgLyoqIEB0eXBlIHsoT2JqZWN0IHwgdW5kZWZpbmVkKX0gKi8KICBNaXhpbkZ1bmN0aW9uLnByb3RvdHlwZS5fX21peGluU2V0OwoKICAvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqLwogIC8qKgogICAqIFdyYXBzIGFuIEVTNiBjbGFzcyBleHByZXNzaW9uIG1peGluIHN1Y2ggdGhhdCB0aGUgbWl4aW4gaXMgb25seSBhcHBsaWVkCiAgICogaWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gYXBwbGllZCBpdHMgYmFzZSBhcmd1bWVudC4gQWxzbyBtZW1vaXplcyBtaXhpbgogICAqIGFwcGxpY2F0aW9ucy4KICAgKgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHRlbXBsYXRlIFQKICAgKiBAcGFyYW0ge1R9IG1peGluIEVTNiBjbGFzcyBleHByZXNzaW9uIG1peGluIHRvIHdyYXAKICAgKiBAcmV0dXJuIHtUfQogICAqIEBzdXBwcmVzcyB7aW52YWxpZENhc3RzfQogICAqLwogIFBvbHltZXIuZGVkdXBpbmdNaXhpbiA9IGZ1bmN0aW9uKG1peGluKSB7CiAgICBsZXQgbWl4aW5BcHBsaWNhdGlvbnMgPSAvKiogQHR5cGUgeyFNaXhpbkZ1bmN0aW9ufSAqLyhtaXhpbikuX19taXhpbkFwcGxpY2F0aW9uczsKICAgIGlmICghbWl4aW5BcHBsaWNhdGlvbnMpIHsKICAgICAgbWl4aW5BcHBsaWNhdGlvbnMgPSBuZXcgV2Vha01hcCgpOwogICAgICAvKiogQHR5cGUgeyFNaXhpbkZ1bmN0aW9ufSAqLyhtaXhpbikuX19taXhpbkFwcGxpY2F0aW9ucyA9IG1peGluQXBwbGljYXRpb25zOwogICAgfQogICAgLy8gbWFpbnRhaW4gYSB1bmlxdWUgaWQgZm9yIGVhY2ggbWl4aW4KICAgIGxldCBtaXhpbkRlZHVwZUlkID0gZGVkdXBlSWQrKzsKICAgIGZ1bmN0aW9uIGRlZHVwaW5nTWl4aW4oYmFzZSkgewogICAgICBsZXQgYmFzZVNldCA9IC8qKiBAdHlwZSB7IU1peGluRnVuY3Rpb259ICovKGJhc2UpLl9fbWl4aW5TZXQ7CiAgICAgIGlmIChiYXNlU2V0ICYmIGJhc2VTZXRbbWl4aW5EZWR1cGVJZF0pIHsKICAgICAgICByZXR1cm4gYmFzZTsKICAgICAgfQogICAgICBsZXQgbWFwID0gbWl4aW5BcHBsaWNhdGlvbnM7CiAgICAgIGxldCBleHRlbmRlZCA9IG1hcC5nZXQoYmFzZSk7CiAgICAgIGlmICghZXh0ZW5kZWQpIHsKICAgICAgICBleHRlbmRlZCA9IC8qKiBAdHlwZSB7IUZ1bmN0aW9ufSAqLyhtaXhpbikoYmFzZSk7CiAgICAgICAgbWFwLnNldChiYXNlLCBleHRlbmRlZCk7CiAgICAgIH0KICAgICAgLy8gY29weSBpbmhlcml0ZWQgbWl4aW4gc2V0IGZyb20gdGhlIGV4dGVuZGVkIGNsYXNzLCBvciB0aGUgYmFzZSBjbGFzcwogICAgICAvLyBOT1RFOiB3ZSBhdm9pZCB1c2Ugb2YgU2V0IGhlcmUgYmVjYXVzZSBzb21lIGJyb3dzZXIgKElFMTEpCiAgICAgIC8vIGNhbm5vdCBleHRlbmQgYSBiYXNlIFNldCB2aWEgdGhlIGNvbnN0cnVjdG9yLgogICAgICBsZXQgbWl4aW5TZXQgPSBPYmplY3QuY3JlYXRlKC8qKiBAdHlwZSB7IU1peGluRnVuY3Rpb259ICovKGV4dGVuZGVkKS5fX21peGluU2V0IHx8IGJhc2VTZXQgfHwgbnVsbCk7CiAgICAgIG1peGluU2V0W21peGluRGVkdXBlSWRdID0gdHJ1ZTsKICAgICAgLyoqIEB0eXBlIHshTWl4aW5GdW5jdGlvbn0gKi8oZXh0ZW5kZWQpLl9fbWl4aW5TZXQgPSBtaXhpblNldDsKICAgICAgcmV0dXJuIGV4dGVuZGVkOwogICAgfQoKICAgIHJldHVybiAvKiogQHR5cGUge1R9ICovIChkZWR1cGluZ01peGluKTsKICB9OwogIC8qIGVzbGludC1lbmFibGUgdmFsaWQtanNkb2MgKi8KCn0pKCk7CgoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIGNvbnN0IE1PRFVMRV9TVFlMRV9MSU5LX1NFTEVDVE9SID0gJ2xpbmtbcmVsPWltcG9ydF1bdHlwZX49Y3NzXSc7CiAgY29uc3QgSU5DTFVERV9BVFRSID0gJ2luY2x1ZGUnOwogIGNvbnN0IFNIQURZX1VOU0NPUEVEX0FUVFIgPSAnc2hhZHktdW5zY29wZWQnOwoKICBmdW5jdGlvbiBpbXBvcnRNb2R1bGUobW9kdWxlSWQpIHsKICAgIGNvbnN0IC8qKiBQb2x5bWVyLkRvbU1vZHVsZSAqLyBQb2x5bWVyRG9tTW9kdWxlID0gY3VzdG9tRWxlbWVudHMuZ2V0KCdkb20tbW9kdWxlJyk7CiAgICBpZiAoIVBvbHltZXJEb21Nb2R1bGUpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICByZXR1cm4gUG9seW1lckRvbU1vZHVsZS5pbXBvcnQobW9kdWxlSWQpOwogIH0KCiAgZnVuY3Rpb24gc3R5bGVGb3JJbXBvcnQoaW1wb3J0RG9jKSB7CiAgICAvLyBOT1RFOiBwb2x5ZmlsbCBhZmZvcmRhbmNlLgogICAgLy8gdW5kZXIgdGhlIEhUTUxJbXBvcnRzIHBvbHlmaWxsLCB0aGVyZSB3aWxsIGJlIG5vICdib2R5JywKICAgIC8vIGJ1dCB0aGUgaW1wb3J0IHBzZXVkby1kb2MgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCiAgICBsZXQgY29udGFpbmVyID0gaW1wb3J0RG9jLmJvZHkgPyBpbXBvcnREb2MuYm9keSA6IGltcG9ydERvYzsKICAgIGNvbnN0IGltcG9ydENzcyA9IFBvbHltZXIuUmVzb2x2ZVVybC5yZXNvbHZlQ3NzKGNvbnRhaW5lci50ZXh0Q29udGVudCwKICAgICAgaW1wb3J0RG9jLmJhc2VVUkkpOwogICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgc3R5bGUudGV4dENvbnRlbnQgPSBpbXBvcnRDc3M7CiAgICByZXR1cm4gc3R5bGU7CiAgfQoKICAvKiogQHR5cGVkZWYge3thc3NldHBhdGg6IHN0cmluZ319ICovCiAgbGV0IHRlbXBsYXRlV2l0aEFzc2V0UGF0aDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFycwoKICAvKioKICAgKiBNb2R1bGUgd2l0aCB1dGlsaXRpZXMgZm9yIGNvbGxlY3Rpb24gQ1NTIHRleHQgZnJvbSBgPHRlbXBsYXRlcz5gLCBleHRlcm5hbAogICAqIHN0eWxlc2hlZXRzLCBhbmQgYGRvbS1tb2R1bGVgcy4KICAgKgogICAqIEBuYW1lc3BhY2UKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IE1vZHVsZSB3aXRoIHV0aWxpdGllcyBmb3IgY29sbGVjdGlvbiBDU1MgdGV4dCBmcm9tIHZhcmlvdXMgc291cmNlcy4KICAgKi8KICBjb25zdCBTdHlsZUdhdGhlciA9IHsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSBsaXN0IG9mIDxzdHlsZT4gZWxlbWVudHMgaW4gYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBgZG9tLW1vZHVsZWBzLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlN0eWxlR2F0aGVyCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlSWRzIExpc3Qgb2YgZG9tLW1vZHVsZSBpZCdzIHdpdGhpbiB3aGljaCB0bwogICAgICogc2VhcmNoIGZvciBjc3MuCiAgICAgKiBAcmV0dXJuIHshQXJyYXk8IUhUTUxTdHlsZUVsZW1lbnQ+fSBBcnJheSBvZiBjb250YWluZWQgPHN0eWxlPiBlbGVtZW50cwogICAgICogQHRoaXMge1N0eWxlR2F0aGVyfQogICAgICovCiAgICAgc3R5bGVzRnJvbU1vZHVsZXMobW9kdWxlSWRzKSB7CiAgICAgIGNvbnN0IG1vZHVsZXMgPSBtb2R1bGVJZHMudHJpbSgpLnNwbGl0KC9ccysvKTsKICAgICAgY29uc3Qgc3R5bGVzID0gW107CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IG1vZHVsZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBzdHlsZXMucHVzaCguLi50aGlzLnN0eWxlc0Zyb21Nb2R1bGUobW9kdWxlc1tpXSkpOwogICAgICB9CiAgICAgIHJldHVybiBzdHlsZXM7CiAgICB9LAoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgPHN0eWxlPiBlbGVtZW50cyBpbiBhIGdpdmVuIGBkb20tbW9kdWxlYC4KICAgICAqIFN0eWxlcyBpbiBhIGBkb20tbW9kdWxlYCBjYW4gY29tZSBlaXRoZXIgZnJvbSBgPHN0eWxlPmBzIHdpdGhpbiB0aGUKICAgICAqIGZpcnN0IGA8dGVtcGxhdGU+YCwgb3IgZWxzZSBmcm9tIG9uZSBvciBtb3JlCiAgICAgKiBgPGxpbmsgcmVsPSJpbXBvcnQiIHR5cGU9ImNzcyI+YCBsaW5rcyBvdXRzaWRlIHRoZSB0ZW1wbGF0ZS4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5TdHlsZUdhdGhlcgogICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZUlkIGRvbS1tb2R1bGUgaWQgdG8gZ2F0aGVyIHN0eWxlcyBmcm9tCiAgICAgKiBAcmV0dXJuIHshQXJyYXk8IUhUTUxTdHlsZUVsZW1lbnQ+fSBBcnJheSBvZiBjb250YWluZWQgc3R5bGVzLgogICAgICogQHRoaXMge1N0eWxlR2F0aGVyfQogICAgICovCiAgICBzdHlsZXNGcm9tTW9kdWxlKG1vZHVsZUlkKSB7CiAgICAgIGNvbnN0IG0gPSBpbXBvcnRNb2R1bGUobW9kdWxlSWQpOwoKICAgICAgaWYgKCFtKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdDb3VsZCBub3QgZmluZCBzdHlsZSBkYXRhIGluIG1vZHVsZSBuYW1lZCcsIG1vZHVsZUlkKTsKICAgICAgICByZXR1cm4gW107CiAgICAgIH0KCiAgICAgIGlmIChtLl9zdHlsZXMgPT09IHVuZGVmaW5lZCkgewogICAgICAgIGNvbnN0IHN0eWxlcyA9IFtdOwogICAgICAgIC8vIG1vZHVsZSBpbXBvcnRzOiA8bGluayByZWw9ImltcG9ydCIgdHlwZT0iY3NzIj4KICAgICAgICBzdHlsZXMucHVzaCguLi50aGlzLl9zdHlsZXNGcm9tTW9kdWxlSW1wb3J0cyhtKSk7CiAgICAgICAgLy8gaW5jbHVkZSBjc3MgZnJvbSB0aGUgZmlyc3QgdGVtcGxhdGUgaW4gdGhlIG1vZHVsZQogICAgICAgIGNvbnN0IHRlbXBsYXRlID0gbS5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpOwogICAgICAgIGlmICh0ZW1wbGF0ZSkgewogICAgICAgICAgc3R5bGVzLnB1c2goLi4udGhpcy5zdHlsZXNGcm9tVGVtcGxhdGUodGVtcGxhdGUsCiAgICAgICAgICAgIC8qKiBAdHlwZSB7dGVtcGxhdGVXaXRoQXNzZXRQYXRofSAqLyhtKS5hc3NldHBhdGgpKTsKICAgICAgICB9CgogICAgICAgIG0uX3N0eWxlcyA9IHN0eWxlczsKICAgICAgfQoKICAgICAgcmV0dXJuIG0uX3N0eWxlczsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBgPHN0eWxlPmAgZWxlbWVudHMgd2l0aGluIGEgZ2l2ZW4gdGVtcGxhdGUuCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuU3R5bGVHYXRoZXIKICAgICAqIEBwYXJhbSB7IUhUTUxUZW1wbGF0ZUVsZW1lbnR9IHRlbXBsYXRlIFRlbXBsYXRlIHRvIGdhdGhlciBzdHlsZXMgZnJvbQogICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkkgYmFzZVVSSSBmb3Igc3R5bGUgY29udGVudAogICAgICogQHJldHVybiB7IUFycmF5PCFIVE1MU3R5bGVFbGVtZW50Pn0gQXJyYXkgb2Ygc3R5bGVzCiAgICAgKiBAdGhpcyB7U3R5bGVHYXRoZXJ9CiAgICAgKi8KICAgIHN0eWxlc0Zyb21UZW1wbGF0ZSh0ZW1wbGF0ZSwgYmFzZVVSSSkgewogICAgICBpZiAoIXRlbXBsYXRlLl9zdHlsZXMpIHsKICAgICAgICBjb25zdCBzdHlsZXMgPSBbXTsKICAgICAgICAvLyBpZiBlbGVtZW50IGlzIGEgdGVtcGxhdGUsIGdldCBjb250ZW50IGZyb20gaXRzIC5jb250ZW50CiAgICAgICAgY29uc3QgZSQgPSB0ZW1wbGF0ZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJyk7CiAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgZSQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGxldCBlID0gZSRbaV07CiAgICAgICAgICAvLyBzdXBwb3J0IHN0eWxlIHNoYXJpbmcgYnkgYWxsb3dpbmcgc3R5bGVzIHRvICJpbmNsdWRlIgogICAgICAgICAgLy8gb3RoZXIgZG9tLW1vZHVsZXMgdGhhdCBjb250YWluIHN0eWxpbmcKICAgICAgICAgIGxldCBpbmNsdWRlID0gZS5nZXRBdHRyaWJ1dGUoSU5DTFVERV9BVFRSKTsKICAgICAgICAgIGlmIChpbmNsdWRlKSB7CiAgICAgICAgICAgIHN0eWxlcy5wdXNoKC4uLnRoaXMuc3R5bGVzRnJvbU1vZHVsZXMoaW5jbHVkZSkuZmlsdGVyKGZ1bmN0aW9uKGl0ZW0sIGluZGV4LCBzZWxmKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXhPZihpdGVtKSA9PT0gaW5kZXg7CiAgICAgICAgICAgIH0pKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChiYXNlVVJJKSB7CiAgICAgICAgICAgIGUudGV4dENvbnRlbnQgPSBQb2x5bWVyLlJlc29sdmVVcmwucmVzb2x2ZUNzcyhlLnRleHRDb250ZW50LCBiYXNlVVJJKTsKICAgICAgICAgIH0KICAgICAgICAgIHN0eWxlcy5wdXNoKGUpOwogICAgICAgIH0KICAgICAgICB0ZW1wbGF0ZS5fc3R5bGVzID0gc3R5bGVzOwogICAgICB9CiAgICAgIHJldHVybiB0ZW1wbGF0ZS5fc3R5bGVzOwogICAgfSwKCiAgICAvKioKICAgICAqIFJldHVybnMgYSBsaXN0IG9mIDxzdHlsZT4gZWxlbWVudHMgIGZyb20gc3R5bGVzaGVldHMgbG9hZGVkIHZpYSBgPGxpbmsgcmVsPSJpbXBvcnQiIHR5cGU9ImNzcyI+YCBsaW5rcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBgZG9tLW1vZHVsZWAuCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuU3R5bGVHYXRoZXIKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVJZCBJZCBvZiBgZG9tLW1vZHVsZWAgdG8gZ2F0aGVyIENTUyBmcm9tCiAgICAgKiBAcmV0dXJuIHshQXJyYXk8IUhUTUxTdHlsZUVsZW1lbnQ+fSBBcnJheSBvZiBjb250YWluZWQgc3R5bGVzLgogICAgICogQHRoaXMge1N0eWxlR2F0aGVyfQogICAgICovCiAgICAgc3R5bGVzRnJvbU1vZHVsZUltcG9ydHMobW9kdWxlSWQpIHsKICAgICAgbGV0IG0gPSBpbXBvcnRNb2R1bGUobW9kdWxlSWQpOwogICAgICByZXR1cm4gbSA/IHRoaXMuX3N0eWxlc0Zyb21Nb2R1bGVJbXBvcnRzKG0pIDogW107CiAgICB9LAoKICAgIC8qKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuU3R5bGVHYXRoZXIKICAgICAqIEB0aGlzIHtTdHlsZUdhdGhlcn0KICAgICAqIEBwYXJhbSB7IUhUTUxFbGVtZW50fSBtb2R1bGUgZG9tLW1vZHVsZSBlbGVtZW50IHRoYXQgY291bGQgY29udGFpbiBgPGxpbmsgcmVsPSJpbXBvcnQiIHR5cGU9ImNzcyI+YCBzdHlsZXMKICAgICAqIEByZXR1cm4geyFBcnJheTwhSFRNTFN0eWxlRWxlbWVudD59IEFycmF5IG9mIGNvbnRhaW5lZCBzdHlsZXMKICAgICAqLwogICAgX3N0eWxlc0Zyb21Nb2R1bGVJbXBvcnRzKG1vZHVsZSkgewogICAgICBjb25zdCBzdHlsZXMgPSBbXTsKICAgICAgY29uc3QgcCQgPSBtb2R1bGUucXVlcnlTZWxlY3RvckFsbChNT0RVTEVfU1RZTEVfTElOS19TRUxFQ1RPUik7CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IHAkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IHAgPSBwJFtpXTsKICAgICAgICBpZiAocC5pbXBvcnQpIHsKICAgICAgICAgIGNvbnN0IGltcG9ydERvYyA9IHAuaW1wb3J0OwogICAgICAgICAgY29uc3QgdW5zY29wZWQgPSBwLmhhc0F0dHJpYnV0ZShTSEFEWV9VTlNDT1BFRF9BVFRSKTsKICAgICAgICAgIGlmICh1bnNjb3BlZCAmJiAhaW1wb3J0RG9jLl91bnNjb3BlZFN0eWxlKSB7CiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gc3R5bGVGb3JJbXBvcnQoaW1wb3J0RG9jKTsKICAgICAgICAgICAgc3R5bGUuc2V0QXR0cmlidXRlKFNIQURZX1VOU0NPUEVEX0FUVFIsICcnKTsKICAgICAgICAgICAgaW1wb3J0RG9jLl91bnNjb3BlZFN0eWxlID0gc3R5bGU7CiAgICAgICAgICB9IGVsc2UgaWYgKCFpbXBvcnREb2MuX3N0eWxlKSB7CiAgICAgICAgICAgIGltcG9ydERvYy5fc3R5bGUgPSBzdHlsZUZvckltcG9ydChpbXBvcnREb2MpOwogICAgICAgICAgfQogICAgICAgICAgc3R5bGVzLnB1c2godW5zY29wZWQgPyBpbXBvcnREb2MuX3Vuc2NvcGVkU3R5bGUgOiBpbXBvcnREb2MuX3N0eWxlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHN0eWxlczsKICAgIH0sCgogICAgLyoqCiAgICAgKgogICAgICogUmV0dXJucyBDU1MgdGV4dCBvZiBzdHlsZXMgaW4gYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBgZG9tLW1vZHVsZWBzLgogICAgICogTm90ZTogVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlIGBzdHlsZXNGcm9tTW9kdWxlc2AgaW5zdGVhZC4KICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICogQG1lbWJlcm9mIFBvbHltZXIuU3R5bGVHYXRoZXIKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb2R1bGVJZHMgTGlzdCBvZiBkb20tbW9kdWxlIGlkJ3Mgd2l0aGluIHdoaWNoIHRvCiAgICAgKiBzZWFyY2ggZm9yIGNzcy4KICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ29uY2F0ZW5hdGVkIENTUyBjb250ZW50IGZyb20gc3BlY2lmaWVkIGBkb20tbW9kdWxlYHMKICAgICAqIEB0aGlzIHtTdHlsZUdhdGhlcn0KICAgICAqLwogICAgIGNzc0Zyb21Nb2R1bGVzKG1vZHVsZUlkcykgewogICAgICBsZXQgbW9kdWxlcyA9IG1vZHVsZUlkcy50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICBsZXQgY3NzVGV4dCA9ICcnOwogICAgICBmb3IgKGxldCBpPTA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgY3NzVGV4dCArPSB0aGlzLmNzc0Zyb21Nb2R1bGUobW9kdWxlc1tpXSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGNzc1RleHQ7CiAgICB9LAoKICAgIC8qKgogICAgICogUmV0dXJucyBDU1MgdGV4dCBvZiBzdHlsZXMgaW4gYSBnaXZlbiBgZG9tLW1vZHVsZWAuICBDU1MgaW4gYSBgZG9tLW1vZHVsZWAKICAgICAqIGNhbiBjb21lIGVpdGhlciBmcm9tIGA8c3R5bGU+YHMgd2l0aGluIHRoZSBmaXJzdCBgPHRlbXBsYXRlPmAsIG9yIGVsc2UKICAgICAqIGZyb20gb25lIG9yIG1vcmUgYDxsaW5rIHJlbD0iaW1wb3J0IiB0eXBlPSJjc3MiPmAgbGlua3Mgb3V0c2lkZSB0aGUKICAgICAqIHRlbXBsYXRlLgogICAgICoKICAgICAqIEFueSBgPHN0eWxlcz5gIHByb2Nlc3NlZCBhcmUgcmVtb3ZlZCBmcm9tIHRoZWlyIG9yaWdpbmFsIGxvY2F0aW9uLgogICAgICogTm90ZTogVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlIGBzdHlsZUZyb21Nb2R1bGVgIGluc3RlYWQuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlN0eWxlR2F0aGVyCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kdWxlSWQgZG9tLW1vZHVsZSBpZCB0byBnYXRoZXIgc3R5bGVzIGZyb20KICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ29uY2F0ZW5hdGVkIENTUyBjb250ZW50IGZyb20gc3BlY2lmaWVkIGBkb20tbW9kdWxlYAogICAgICogQHRoaXMge1N0eWxlR2F0aGVyfQogICAgICovCiAgICBjc3NGcm9tTW9kdWxlKG1vZHVsZUlkKSB7CiAgICAgIGxldCBtID0gaW1wb3J0TW9kdWxlKG1vZHVsZUlkKTsKICAgICAgaWYgKG0gJiYgbS5fY3NzVGV4dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgLy8gbW9kdWxlIGltcG9ydHM6IDxsaW5rIHJlbD0iaW1wb3J0IiB0eXBlPSJjc3MiPgogICAgICAgIGxldCBjc3NUZXh0ID0gdGhpcy5fY3NzRnJvbU1vZHVsZUltcG9ydHMobSk7CiAgICAgICAgLy8gaW5jbHVkZSBjc3MgZnJvbSB0aGUgZmlyc3QgdGVtcGxhdGUgaW4gdGhlIG1vZHVsZQogICAgICAgIGxldCB0ID0gbS5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpOwogICAgICAgIGlmICh0KSB7CiAgICAgICAgICBjc3NUZXh0ICs9IHRoaXMuY3NzRnJvbVRlbXBsYXRlKHQsCiAgICAgICAgICAgIC8qKiBAdHlwZSB7dGVtcGxhdGVXaXRoQXNzZXRQYXRofSAqLyhtKS5hc3NldHBhdGgpOwogICAgICAgIH0KICAgICAgICBtLl9jc3NUZXh0ID0gY3NzVGV4dCB8fCBudWxsOwogICAgICB9CiAgICAgIGlmICghbSkgewogICAgICAgIGNvbnNvbGUud2FybignQ291bGQgbm90IGZpbmQgc3R5bGUgZGF0YSBpbiBtb2R1bGUgbmFtZWQnLCBtb2R1bGVJZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIG0gJiYgbS5fY3NzVGV4dCB8fCAnJzsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIENTUyB0ZXh0IG9mIGA8c3R5bGVzPmAgd2l0aGluIGEgZ2l2ZW4gdGVtcGxhdGUuCiAgICAgKgogICAgICogQW55IGA8c3R5bGVzPmAgcHJvY2Vzc2VkIGFyZSByZW1vdmVkIGZyb20gdGhlaXIgb3JpZ2luYWwgbG9jYXRpb24uCiAgICAgKiBOb3RlOiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UgYHN0eWxlRnJvbVRlbXBsYXRlYCBpbnN0ZWFkLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5TdHlsZUdhdGhlcgogICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGVtcGxhdGUgdG8gZ2F0aGVyIHN0eWxlcyBmcm9tCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSSSBCYXNlIFVSSSB0byByZXNvbHZlIHRoZSBVUkwgYWdhaW5zdAogICAgICogQHJldHVybiB7c3RyaW5nfSBDb25jYXRlbmF0ZWQgQ1NTIGNvbnRlbnQgZnJvbSBzcGVjaWZpZWQgdGVtcGxhdGUKICAgICAqIEB0aGlzIHtTdHlsZUdhdGhlcn0KICAgICAqLwogICAgY3NzRnJvbVRlbXBsYXRlKHRlbXBsYXRlLCBiYXNlVVJJKSB7CiAgICAgIGxldCBjc3NUZXh0ID0gJyc7CiAgICAgIGNvbnN0IGUkID0gdGhpcy5zdHlsZXNGcm9tVGVtcGxhdGUodGVtcGxhdGUsIGJhc2VVUkkpOwogICAgICAvLyBpZiBlbGVtZW50IGlzIGEgdGVtcGxhdGUsIGdldCBjb250ZW50IGZyb20gaXRzIC5jb250ZW50CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IGUkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IGUgPSBlJFtpXTsKICAgICAgICBpZiAoZS5wYXJlbnROb2RlKSB7CiAgICAgICAgICBlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7CiAgICAgICAgfQogICAgICAgIGNzc1RleHQgKz0gZS50ZXh0Q29udGVudDsKICAgICAgfQogICAgICByZXR1cm4gY3NzVGV4dDsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIENTUyB0ZXh0IGZyb20gc3R5bGVzaGVldHMgbG9hZGVkIHZpYSBgPGxpbmsgcmVsPSJpbXBvcnQiIHR5cGU9ImNzcyI+YAogICAgICogbGlua3Mgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGRvbS1tb2R1bGVgLgogICAgICoKICAgICAqIE5vdGU6IFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZSBgc3R5bGVzRnJvbU1vZHVsZUltcG9ydHNgIGluc3RlYWQuCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQKICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5TdHlsZUdhdGhlcgogICAgICogQHBhcmFtIHtzdHJpbmd9IG1vZHVsZUlkIElkIG9mIGBkb20tbW9kdWxlYCB0byBnYXRoZXIgQ1NTIGZyb20KICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ29uY2F0ZW5hdGVkIENTUyBjb250ZW50IGZyb20gbGlua3MgaW4gc3BlY2lmaWVkIGBkb20tbW9kdWxlYAogICAgICogQHRoaXMge1N0eWxlR2F0aGVyfQogICAgICovCiAgICBjc3NGcm9tTW9kdWxlSW1wb3J0cyhtb2R1bGVJZCkgewogICAgICBsZXQgbSA9IGltcG9ydE1vZHVsZShtb2R1bGVJZCk7CiAgICAgIHJldHVybiBtID8gdGhpcy5fY3NzRnJvbU1vZHVsZUltcG9ydHMobSkgOiAnJzsKICAgIH0sCgogICAgLyoqCiAgICAgKiBAZGVwcmVjYXRlZAogICAgICogQG1lbWJlcm9mIFBvbHltZXIuU3R5bGVHYXRoZXIKICAgICAqIEB0aGlzIHtTdHlsZUdhdGhlcn0KICAgICAqIEBwYXJhbSB7IUhUTUxFbGVtZW50fSBtb2R1bGUgZG9tLW1vZHVsZSBlbGVtZW50IHRoYXQgY291bGQgY29udGFpbiBgPGxpbmsgcmVsPSJpbXBvcnQiIHR5cGU9ImNzcyI+YCBzdHlsZXMKICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ29uY2F0ZW5hdGVkIENTUyBjb250ZW50IGZyb20gbGlua3MgaW4gdGhlIGRvbS1tb2R1bGUKICAgICAqLwogICAgIF9jc3NGcm9tTW9kdWxlSW1wb3J0cyhtb2R1bGUpIHsKICAgICAgbGV0IGNzc1RleHQgPSAnJzsKICAgICAgbGV0IHN0eWxlcyA9IHRoaXMuX3N0eWxlc0Zyb21Nb2R1bGVJbXBvcnRzKG1vZHVsZSk7CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IHN0eWxlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNzc1RleHQgKz0gc3R5bGVzW2ldLnRleHRDb250ZW50OwogICAgICB9CiAgICAgIHJldHVybiBjc3NUZXh0OwogICAgfQogIH07CgogIFBvbHltZXIuU3R5bGVHYXRoZXIgPSBTdHlsZUdhdGhlcjsKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICBsZXQgbW9kdWxlcyA9IHt9OwogIGxldCBsY01vZHVsZXMgPSB7fTsKICBmdW5jdGlvbiBzZXRNb2R1bGUoaWQsIG1vZHVsZSkgewogICAgLy8gc3RvcmUgaWQgc2VwYXJhdGUgZnJvbSBsb3dlcmNhc2VkIGlkIHNvIHRoYXQKICAgIC8vIGluIGFsbCBjYXNlcyBtaXhlZENhc2UgaWQgd2lsbCBzdG9yZWQgZGlzdGluY3RseQogICAgLy8gYW5kIGxvd2VyY2FzZSB2ZXJzaW9uIGlzIGEgZmFsbGJhY2sKICAgIG1vZHVsZXNbaWRdID0gbGNNb2R1bGVzW2lkLnRvTG93ZXJDYXNlKCldID0gbW9kdWxlOwogIH0KICBmdW5jdGlvbiBmaW5kTW9kdWxlKGlkKSB7CiAgICByZXR1cm4gbW9kdWxlc1tpZF0gfHwgbGNNb2R1bGVzW2lkLnRvTG93ZXJDYXNlKCldOwogIH0KCiAgZnVuY3Rpb24gc3R5bGVPdXRzaWRlVGVtcGxhdGVDaGVjayhpbnN0KSB7CiAgICBpZiAoaW5zdC5xdWVyeVNlbGVjdG9yKCdzdHlsZScpKSB7CiAgICAgIGNvbnNvbGUud2FybignZG9tLW1vZHVsZSAlcyBoYXMgc3R5bGUgb3V0c2lkZSB0ZW1wbGF0ZScsIGluc3QuaWQpOwogICAgfQogIH0KCiAgLyoqCiAgICogVGhlIGBkb20tbW9kdWxlYCBlbGVtZW50IHJlZ2lzdGVycyB0aGUgZG9tIGl0IGNvbnRhaW5zIHRvIHRoZSBuYW1lIGdpdmVuCiAgICogYnkgdGhlIG1vZHVsZSdzIGlkIGF0dHJpYnV0ZS4gSXQgcHJvdmlkZXMgYSB1bmlmaWVkIGRhdGFiYXNlIG9mIGRvbQogICAqIGFjY2Vzc2libGUgdmlhIGl0cyBzdGF0aWMgYGltcG9ydGAgQVBJLgogICAqCiAgICogQSBrZXkgdXNlIGNhc2Ugb2YgYGRvbS1tb2R1bGVgIGlzIGZvciBwcm92aWRpbmcgY3VzdG9tIGVsZW1lbnQgYDx0ZW1wbGF0ZT5gcwogICAqIHZpYSBIVE1MIGltcG9ydHMgdGhhdCBhcmUgcGFyc2VkIGJ5IHRoZSBuYXRpdmUgSFRNTCBwYXJzZXIsIHRoYXQgY2FuIGJlCiAgICogcmVsb2NhdGVkIGR1cmluZyBhIGJ1bmRsaW5nIHBhc3MgYW5kIHN0aWxsIGxvb2tlZCB1cCBieSBgaWRgLgogICAqCiAgICogRXhhbXBsZToKICAgKgogICAqICAgICA8ZG9tLW1vZHVsZSBpZD0iZm9vIj4KICAgKiAgICAgICA8aW1nIHNyYz0ic3R1ZmYucG5nIj4KICAgKiAgICAgPC9kb20tbW9kdWxlPgogICAqCiAgICogVGhlbiBpbiBjb2RlIGluIHNvbWUgb3RoZXIgbG9jYXRpb24gdGhhdCBjYW5ub3QgYWNjZXNzIHRoZSBkb20tbW9kdWxlIGFib3ZlCiAgICoKICAgKiAgICAgbGV0IGltZyA9IGN1c3RvbUVsZW1lbnRzLmdldCgnZG9tLW1vZHVsZScpLmltcG9ydCgnZm9vJywgJ2ltZycpOwogICAqCiAgICogQGN1c3RvbUVsZW1lbnQKICAgKiBAZXh0ZW5kcyBIVE1MRWxlbWVudAogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgQ3VzdG9tIGVsZW1lbnQgdGhhdCBwcm92aWRlcyBhIHJlZ2lzdHJ5IG9mIHJlbG9jYXRhYmxlIERPTSBjb250ZW50CiAgICogICBieSBgaWRgIHRoYXQgaXMgYWdub3N0aWMgdG8gYnVuZGxpbmcuCiAgICogQHVucmVzdHJpY3RlZAogICAqLwogIGNsYXNzIERvbU1vZHVsZSBleHRlbmRzIEhUTUxFbGVtZW50IHsKCiAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpIHsgcmV0dXJuIFsnaWQnXTsgfQoKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBlbGVtZW50IHNwZWNpZmllZCBieSB0aGUgY3NzIGBzZWxlY3RvcmAgaW4gdGhlIG1vZHVsZQogICAgICogcmVnaXN0ZXJlZCBieSBgaWRgLiBGb3IgZXhhbXBsZSwgdGhpcy5pbXBvcnQoJ2ZvbycsICdpbWcnKTsKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgaWQgb2YgdGhlIGRvbS1tb2R1bGUgaW4gd2hpY2ggdG8gc2VhcmNoLgogICAgICogQHBhcmFtIHtzdHJpbmc9fSBzZWxlY3RvciBUaGUgY3NzIHNlbGVjdG9yIGJ5IHdoaWNoIHRvIGZpbmQgdGhlIGVsZW1lbnQuCiAgICAgKiBAcmV0dXJuIHtFbGVtZW50fSBSZXR1cm5zIHRoZSBlbGVtZW50IHdoaWNoIG1hdGNoZXMgYHNlbGVjdG9yYCBpbiB0aGUKICAgICAqIG1vZHVsZSByZWdpc3RlcmVkIGF0IHRoZSBzcGVjaWZpZWQgYGlkYC4KICAgICAqLwogICAgc3RhdGljIGltcG9ydChpZCwgc2VsZWN0b3IpIHsKICAgICAgaWYgKGlkKSB7CiAgICAgICAgbGV0IG0gPSBmaW5kTW9kdWxlKGlkKTsKICAgICAgICBpZiAobSAmJiBzZWxlY3RvcikgewogICAgICAgICAgcmV0dXJuIG0ucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBtOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovCiAgICAvKioKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgYXR0cmlidXRlLgogICAgICogQHBhcmFtIHs/c3RyaW5nfSBvbGQgT2xkIHZhbHVlIG9mIGF0dHJpYnV0ZS4KICAgICAqIEBwYXJhbSB7P3N0cmluZ30gdmFsdWUgQ3VycmVudCB2YWx1ZSBvZiBhdHRyaWJ1dGUuCiAgICAgKiBAcGFyYW0gez9zdHJpbmd9IG5hbWVzcGFjZSBBdHRyaWJ1dGUgbmFtZXNwYWNlLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZCwgdmFsdWUsIG5hbWVzcGFjZSkgewogICAgICBpZiAob2xkICE9PSB2YWx1ZSkgewogICAgICAgIHRoaXMucmVnaXN0ZXIoKTsKICAgICAgfQogICAgfQogICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtYXJncyAqLwoKICAgIC8qKgogICAgICogVGhlIGFic29sdXRlIFVSTCBvZiB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhpcyBgZG9tLW1vZHVsZWAuCiAgICAgKgogICAgICogVGhpcyB2YWx1ZSB3aWxsIGRpZmZlciBmcm9tIHRoaXMgZWxlbWVudCdzIGBvd25lckRvY3VtZW50YCBpbiB0aGUKICAgICAqIGZvbGxvd2luZyB3YXlzOgogICAgICogLSBUYWtlcyBpbnRvIGFjY291bnQgYW55IGBhc3NldHBhdGhgIGF0dHJpYnV0ZSBhZGRlZCBkdXJpbmcgYnVuZGxpbmcKICAgICAqICAgdG8gaW5kaWNhdGUgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIHJlbGF0aXZlIHRvIHRoZSBidW5kbGVkIGxvY2F0aW9uCiAgICAgKiAtIFVzZXMgdGhlIEhUTUxJbXBvcnRzIHBvbHlmaWxsJ3MgYGltcG9ydEZvckVsZW1lbnRgIEFQSSB0byBlbnN1cmUKICAgICAqICAgdGhlIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGltcG9ydCBkb2N1bWVudCdzIGxvY2F0aW9uIHNpbmNlCiAgICAgKiAgIGBvd25lckRvY3VtZW50YCBpcyBub3QgY3VycmVudGx5IHBvbHlmaWxsZWQKICAgICAqLwogICAgZ2V0IGFzc2V0cGF0aCgpIHsKICAgICAgLy8gRG9uJ3Qgb3ZlcnJpZGUgZXhpc3RpbmcgYXNzZXRwYXRoLgogICAgICBpZiAoIXRoaXMuX19hc3NldHBhdGgpIHsKICAgICAgICAvLyBub3RlOiBhc3NldHBhdGggc2V0IHZpYSBhbiBhdHRyaWJ1dGUgbXVzdCBiZSByZWxhdGl2ZSB0byB0aGlzCiAgICAgICAgLy8gZWxlbWVudCdzIGxvY2F0aW9uOyBhY2NvbW9kYXRlIHBvbHlmaWxsZWQgSFRNTEltcG9ydHMKICAgICAgICBjb25zdCBvd25lciA9IHdpbmRvdy5IVE1MSW1wb3J0cyAmJiBIVE1MSW1wb3J0cy5pbXBvcnRGb3JFbGVtZW50ID8KICAgICAgICAgIEhUTUxJbXBvcnRzLmltcG9ydEZvckVsZW1lbnQodGhpcykgfHwgZG9jdW1lbnQgOiB0aGlzLm93bmVyRG9jdW1lbnQ7CiAgICAgICAgY29uc3QgdXJsID0gUG9seW1lci5SZXNvbHZlVXJsLnJlc29sdmVVcmwoCiAgICAgICAgICB0aGlzLmdldEF0dHJpYnV0ZSgnYXNzZXRwYXRoJykgfHwgJycsIG93bmVyLmJhc2VVUkkpOwogICAgICAgIHRoaXMuX19hc3NldHBhdGggPSBQb2x5bWVyLlJlc29sdmVVcmwucGF0aEZyb21VcmwodXJsKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5fX2Fzc2V0cGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyB0aGUgZG9tLW1vZHVsZSBhdCBhIGdpdmVuIGlkLiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQKICAgICAqIHdoZW4gYSBkb20tbW9kdWxlIGlzIGltcGVyYXRpdmVseSBjcmVhdGVkLiBGb3IKICAgICAqIGV4YW1wbGUsIGBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkb20tbW9kdWxlJykucmVnaXN0ZXIoJ2ZvbycpYC4KICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gaWQgVGhlIGlkIGF0IHdoaWNoIHRvIHJlZ2lzdGVyIHRoZSBkb20tbW9kdWxlLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgcmVnaXN0ZXIoaWQpIHsKICAgICAgaWQgPSBpZCB8fCB0aGlzLmlkOwogICAgICBpZiAoaWQpIHsKICAgICAgICAvLyBVbmRlciBzdHJpY3RUZW1wbGF0ZVBvbGljeSwgcmVqZWN0IGFuZCBudWxsIG91dCBhbnkgcmUtcmVnaXN0ZXJlZAogICAgICAgIC8vIGRvbS1tb2R1bGUgc2luY2UgaXQgaXMgYW1iaWd1b3VzIHdoZXRoZXIgZmlyc3QtaW4gb3IgbGFzdC1pbiBpcyB0cnVzdGVkIAogICAgICAgIGlmIChQb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5ICYmIGZpbmRNb2R1bGUoaWQpICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHNldE1vZHVsZShpZCwgbnVsbCk7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHN0cmljdFRlbXBsYXRlUG9saWN5OiBkb20tbW9kdWxlICR7aWR9IHJlLXJlZ2lzdGVyZWRgKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgICAgIHNldE1vZHVsZShpZCwgdGhpcyk7CiAgICAgICAgc3R5bGVPdXRzaWRlVGVtcGxhdGVDaGVjayh0aGlzKTsKICAgICAgfQogICAgfQogIH0KCiAgRG9tTW9kdWxlLnByb3RvdHlwZVsnbW9kdWxlcyddID0gbW9kdWxlczsKCiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdkb20tbW9kdWxlJywgRG9tTW9kdWxlKTsKCiAgLyoqIEBjb25zdCAqLwogIFBvbHltZXIuRG9tTW9kdWxlID0gRG9tTW9kdWxlOwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICAvKioKICAgKiBNb2R1bGUgd2l0aCB1dGlsaXRpZXMgZm9yIG1hbmlwdWxhdGluZyBzdHJ1Y3R1cmVkIGRhdGEgcGF0aCBzdHJpbmdzLgogICAqCiAgICogQG5hbWVzcGFjZQogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgTW9kdWxlIHdpdGggdXRpbGl0aWVzIGZvciBtYW5pcHVsYXRpbmcgc3RydWN0dXJlZCBkYXRhIHBhdGggc3RyaW5ncy4KICAgKi8KICBjb25zdCBQYXRoID0gewoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSBzdHJ1Y3R1cmVkIGRhdGEgcGF0aCAoaGFzIGRvdHMpLgogICAgICoKICAgICAqIEV4YW1wbGU6CiAgICAgKgogICAgICogYGBgCiAgICAgKiBQb2x5bWVyLlBhdGguaXNQYXRoKCdmb28uYmFyLmJheicpIC8vIHRydWUKICAgICAqIFBvbHltZXIuUGF0aC5pc1BhdGgoJ2ZvbycpICAgICAgICAgLy8gZmFsc2UKICAgICAqIGBgYAogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggc3RyaW5nCiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzdHJpbmcgY29udGFpbmVkIG9uZSBvciBtb3JlIGRvdHMKICAgICAqLwogICAgaXNQYXRoOiBmdW5jdGlvbihwYXRoKSB7CiAgICAgIHJldHVybiBwYXRoLmluZGV4T2YoJy4nKSA+PSAwOwogICAgfSwKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJvb3QgcHJvcGVydHkgbmFtZSBmb3IgdGhlIGdpdmVuIHBhdGguCiAgICAgKgogICAgICogRXhhbXBsZToKICAgICAqCiAgICAgKiBgYGAKICAgICAqIFBvbHltZXIuUGF0aC5yb290KCdmb28uYmFyLmJheicpIC8vICdmb28nCiAgICAgKiBQb2x5bWVyLlBhdGgucm9vdCgnZm9vJykgICAgICAgICAvLyAnZm9vJwogICAgICogYGBgCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuUGF0aAogICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUGF0aCBzdHJpbmcKICAgICAqIEByZXR1cm4ge3N0cmluZ30gUm9vdCBwcm9wZXJ0eSBuYW1lCiAgICAgKi8KICAgIHJvb3Q6IGZ1bmN0aW9uKHBhdGgpIHsKICAgICAgbGV0IGRvdEluZGV4ID0gcGF0aC5pbmRleE9mKCcuJyk7CiAgICAgIGlmIChkb3RJbmRleCA9PT0gLTEpIHsKICAgICAgICByZXR1cm4gcGF0aDsKICAgICAgfQogICAgICByZXR1cm4gcGF0aC5zbGljZSgwLCBkb3RJbmRleCk7CiAgICB9LAoKICAgIC8qKgogICAgICogR2l2ZW4gYGJhc2VgIGlzIGBmb28uYmFyYCwgYGZvb2AgaXMgYW4gYW5jZXN0b3IsIGBmb28uYmFyYCBpcyBub3QKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcGF0aCBpcyBhbiBhbmNlc3RvciBvZiB0aGUgYmFzZSBwYXRoLgogICAgICoKICAgICAqIEV4YW1wbGU6CiAgICAgKgogICAgICogYGBgCiAgICAgKiBQb2x5bWVyLlBhdGguaXNBbmNlc3RvcignZm9vLmJhcicsICdmb28nKSAgICAgICAgIC8vIHRydWUKICAgICAqIFBvbHltZXIuUGF0aC5pc0FuY2VzdG9yKCdmb28uYmFyJywgJ2Zvby5iYXInKSAgICAgLy8gZmFsc2UKICAgICAqIFBvbHltZXIuUGF0aC5pc0FuY2VzdG9yKCdmb28uYmFyJywgJ2Zvby5iYXIuYmF6JykgLy8gZmFsc2UKICAgICAqIGBgYAogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIFBhdGggc3RyaW5nIHRvIHRlc3QgYWdhaW5zdC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggc3RyaW5nIHRvIHRlc3QuCiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBwYXRoYCBpcyBhbiBhbmNlc3RvciBvZiBgYmFzZWAuCiAgICAgKi8KICAgIGlzQW5jZXN0b3I6IGZ1bmN0aW9uKGJhc2UsIHBhdGgpIHsKICAgICAgLy8gICAgIGJhc2Uuc3RhcnRzV2l0aChwYXRoICsgJy4nKTsKICAgICAgcmV0dXJuIGJhc2UuaW5kZXhPZihwYXRoICsgJy4nKSA9PT0gMDsKICAgIH0sCgogICAgLyoqCiAgICAgKiBHaXZlbiBgYmFzZWAgaXMgYGZvby5iYXJgLCBgZm9vLmJhci5iYXpgIGlzIGFuIGRlc2NlbmRhbnQKICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICoKICAgICAqIGBgYAogICAgICogUG9seW1lci5QYXRoLmlzRGVzY2VuZGFudCgnZm9vLmJhcicsICdmb28uYmFyLmJheicpIC8vIHRydWUKICAgICAqIFBvbHltZXIuUGF0aC5pc0Rlc2NlbmRhbnQoJ2Zvby5iYXInLCAnZm9vLmJhcicpICAgICAvLyBmYWxzZQogICAgICogUG9seW1lci5QYXRoLmlzRGVzY2VuZGFudCgnZm9vLmJhcicsICdmb28nKSAgICAgICAgIC8vIGZhbHNlCiAgICAgKiBgYGAKICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5QYXRoCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZSBQYXRoIHN0cmluZyB0byB0ZXN0IGFnYWluc3QuCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQYXRoIHN0cmluZyB0byB0ZXN0LgogICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgcGF0aGAgaXMgYSBkZXNjZW5kYW50IG9mIGBiYXNlYC4KICAgICAqLwogICAgaXNEZXNjZW5kYW50OiBmdW5jdGlvbihiYXNlLCBwYXRoKSB7CiAgICAgIC8vICAgICBwYXRoLnN0YXJ0c1dpdGgoYmFzZSArICcuJyk7CiAgICAgIHJldHVybiBwYXRoLmluZGV4T2YoYmFzZSArICcuJykgPT09IDA7CiAgICB9LAoKICAgIC8qKgogICAgICogUmVwbGFjZXMgYSBwcmV2aW91cyBiYXNlIHBhdGggd2l0aCBhIG5ldyBiYXNlIHBhdGgsIHByZXNlcnZpbmcgdGhlCiAgICAgKiByZW1haW5kZXIgb2YgdGhlIHBhdGguCiAgICAgKgogICAgICogVXNlciBtdXN0IGVuc3VyZSBgcGF0aGAgaGFzIGEgcHJlZml4IG9mIGBiYXNlYC4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICoKICAgICAqIGBgYAogICAgICogUG9seW1lci5QYXRoLnRyYW5zbGF0ZSgnZm9vLmJhcicsICd6b3QnLCAnZm9vLmJhci5iYXonKSAvLyAnem90LmJheicKICAgICAqIGBgYAogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIEN1cnJlbnQgYmFzZSBzdHJpbmcgdG8gcmVtb3ZlCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3QmFzZSBOZXcgYmFzZSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQYXRoIHRvIHRyYW5zbGF0ZQogICAgICogQHJldHVybiB7c3RyaW5nfSBUcmFuc2xhdGVkIHN0cmluZwogICAgICovCiAgICB0cmFuc2xhdGU6IGZ1bmN0aW9uKGJhc2UsIG5ld0Jhc2UsIHBhdGgpIHsKICAgICAgcmV0dXJuIG5ld0Jhc2UgKyBwYXRoLnNsaWNlKGJhc2UubGVuZ3RoKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZSBQYXRoIHN0cmluZyB0byB0ZXN0IGFnYWluc3QKICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggc3RyaW5nIHRvIHRlc3QKICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYHBhdGhgIGlzIGVxdWFsIHRvIGBiYXNlYAogICAgICogQHRoaXMge1BhdGh9CiAgICAgKi8KICAgIG1hdGNoZXM6IGZ1bmN0aW9uKGJhc2UsIHBhdGgpIHsKICAgICAgcmV0dXJuIChiYXNlID09PSBwYXRoKSB8fAogICAgICAgICAgICAgdGhpcy5pc0FuY2VzdG9yKGJhc2UsIHBhdGgpIHx8CiAgICAgICAgICAgICB0aGlzLmlzRGVzY2VuZGFudChiYXNlLCBwYXRoKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhcnJheS1iYXNlZCBwYXRocyB0byBmbGF0dGVuZWQgcGF0aC4gIFN0cmluZy1iYXNlZCBwYXRocwogICAgICogYXJlIHJldHVybmVkIGFzLWlzLgogICAgICoKICAgICAqIEV4YW1wbGU6CiAgICAgKgogICAgICogYGBgCiAgICAgKiBQb2x5bWVyLlBhdGgubm9ybWFsaXplKFsnZm9vLmJhcicsIDAsICdiYXonXSkgIC8vICdmb28uYmFyLjAuYmF6JwogICAgICogUG9seW1lci5QYXRoLm5vcm1hbGl6ZSgnZm9vLmJhci4wLmJheicpICAgICAgICAvLyAnZm9vLmJhci4wLmJheicKICAgICAqIGBgYAogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgIUFycmF5PHN0cmluZ3xudW1iZXI+fSBwYXRoIElucHV0IHBhdGgKICAgICAqIEByZXR1cm4ge3N0cmluZ30gRmxhdHRlbmVkIHBhdGgKICAgICAqLwogICAgbm9ybWFsaXplOiBmdW5jdGlvbihwYXRoKSB7CiAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGgpKSB7CiAgICAgICAgbGV0IHBhcnRzID0gW107CiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBhdGgubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGxldCBhcmdzID0gcGF0aFtpXS50b1N0cmluZygpLnNwbGl0KCcuJyk7CiAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8YXJncy5sZW5ndGg7IGorKykgewogICAgICAgICAgICBwYXJ0cy5wdXNoKGFyZ3Nbal0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcGFydHMuam9pbignLicpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwYXRoOwogICAgICB9CiAgICB9LAoKICAgIC8qKgogICAgICogU3BsaXRzIGEgcGF0aCBpbnRvIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLiBBY2NlcHRzIGVpdGhlciBhcnJheXMKICAgICAqIG9mIHBhdGggcGFydHMgb3Igc3RyaW5ncy4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICoKICAgICAqIGBgYAogICAgICogUG9seW1lci5QYXRoLnNwbGl0KFsnZm9vLmJhcicsIDAsICdiYXonXSkgIC8vIFsnZm9vJywgJ2JhcicsICcwJywgJ2JheiddCiAgICAgKiBQb2x5bWVyLlBhdGguc3BsaXQoJ2Zvby5iYXIuMC5iYXonKSAgICAgICAgLy8gWydmb28nLCAnYmFyJywgJzAnLCAnYmF6J10KICAgICAqIGBgYAogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgIUFycmF5PHN0cmluZ3xudW1iZXI+fSBwYXRoIElucHV0IHBhdGgKICAgICAqIEByZXR1cm4geyFBcnJheTxzdHJpbmc+fSBBcnJheSBvZiBwYXRoIHBhcnRzCiAgICAgKiBAdGhpcyB7UGF0aH0KICAgICAqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30KICAgICAqLwogICAgc3BsaXQ6IGZ1bmN0aW9uKHBhdGgpIHsKICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHsKICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemUocGF0aCkuc3BsaXQoJy4nKTsKICAgICAgfQogICAgICByZXR1cm4gcGF0aC50b1N0cmluZygpLnNwbGl0KCcuJyk7CiAgICB9LAoKICAgIC8qKgogICAgICogUmVhZHMgYSB2YWx1ZSBmcm9tIGEgcGF0aC4gIElmIGFueSBzdWItcHJvcGVydHkgaW4gdGhlIHBhdGggaXMgYHVuZGVmaW5lZGAsCiAgICAgKiB0aGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgICh3aWxsIG5ldmVyIHRocm93LgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgICAqIEBwYXJhbSB7T2JqZWN0fSByb290IE9iamVjdCBmcm9tIHdoaWNoIHRvIGRlcmVmZXJlbmNlIHBhdGggZnJvbQogICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8c3RyaW5nfG51bWJlcj59IHBhdGggUGF0aCB0byByZWFkCiAgICAgKiBAcGFyYW0ge09iamVjdD19IGluZm8gSWYgYW4gb2JqZWN0IGlzIHByb3ZpZGVkIHRvIGBpbmZvYCwgdGhlIG5vcm1hbGl6ZWQKICAgICAqICAoZmxhdHRlbmVkKSBwYXRoIHdpbGwgYmUgc2V0IHRvIGBpbmZvLnBhdGhgLgogICAgICogQHJldHVybiB7Kn0gVmFsdWUgYXQgcGF0aCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHBhdGggY291bGQgbm90IGJlCiAgICAgKiAgZnVsbHkgZGVyZWZlcmVuY2VkLgogICAgICogQHRoaXMge1BhdGh9CiAgICAgKi8KICAgIGdldDogZnVuY3Rpb24ocm9vdCwgcGF0aCwgaW5mbykgewogICAgICBsZXQgcHJvcCA9IHJvb3Q7CiAgICAgIGxldCBwYXJ0cyA9IHRoaXMuc3BsaXQocGF0aCk7CiAgICAgIC8vIExvb3Agb3ZlciBwYXRoIHBhcnRzWzAuLm4tMV0gYW5kIGRlcmVmZXJlbmNlCiAgICAgIGZvciAobGV0IGk9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICghcHJvcCkgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsZXQgcGFydCA9IHBhcnRzW2ldOwogICAgICAgIHByb3AgPSBwcm9wW3BhcnRdOwogICAgICB9CiAgICAgIGlmIChpbmZvKSB7CiAgICAgICAgaW5mby5wYXRoID0gcGFydHMuam9pbignLicpOwogICAgICB9CiAgICAgIHJldHVybiBwcm9wOwogICAgfSwKCiAgICAvKioKICAgICAqIFNldHMgYSB2YWx1ZSB0byBhIHBhdGguICBJZiBhbnkgc3ViLXByb3BlcnR5IGluIHRoZSBwYXRoIGlzIGB1bmRlZmluZWRgLAogICAgICogdGhpcyBtZXRob2Qgd2lsbCBuby1vcC4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5QYXRoCiAgICAgKiBAcGFyYW0ge09iamVjdH0gcm9vdCBPYmplY3QgZnJvbSB3aGljaCB0byBkZXJlZmVyZW5jZSBwYXRoIGZyb20KICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgIUFycmF5PHN0cmluZ3xudW1iZXI+fSBwYXRoIFBhdGggdG8gc2V0CiAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldCB0byBwYXRoCiAgICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSBub3JtYWxpemVkIHZlcnNpb24gb2YgdGhlIGlucHV0IHBhdGgKICAgICAqIEB0aGlzIHtQYXRofQogICAgICovCiAgICBzZXQ6IGZ1bmN0aW9uKHJvb3QsIHBhdGgsIHZhbHVlKSB7CiAgICAgIGxldCBwcm9wID0gcm9vdDsKICAgICAgbGV0IHBhcnRzID0gdGhpcy5zcGxpdChwYXRoKTsKICAgICAgbGV0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGgtMV07CiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7CiAgICAgICAgLy8gTG9vcCBvdmVyIHBhdGggcGFydHNbMC4ubi0yXSBhbmQgZGVyZWZlcmVuY2UKICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFydHMubGVuZ3RoLTE7IGkrKykgewogICAgICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgICAgIHByb3AgPSBwcm9wW3BhcnRdOwogICAgICAgICAgaWYgKCFwcm9wKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gU2V0IHZhbHVlIHRvIG9iamVjdCBhdCBlbmQgb2YgcGF0aAogICAgICAgIHByb3BbbGFzdF0gPSB2YWx1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBTaW1wbGUgcHJvcGVydHkgc2V0CiAgICAgICAgcHJvcFtwYXRoXSA9IHZhbHVlOwogICAgICB9CiAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcuJyk7CiAgICB9CgogIH07CgogIC8qKgogICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgc3RydWN0dXJlZCBkYXRhIHBhdGggKGhhcyBkb3RzKS4KICAgKgogICAqIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gIFVzZSBgUG9seW1lci5QYXRoLmlzUGF0aGAgaW5zdGVhZC4KICAgKgogICAqIEV4YW1wbGU6CiAgICoKICAgKiBgYGAKICAgKiBQb2x5bWVyLlBhdGguaXNEZWVwKCdmb28uYmFyLmJheicpIC8vIHRydWUKICAgKiBQb2x5bWVyLlBhdGguaXNEZWVwKCdmb28nKSAgICAgICAgIC8vIGZhbHNlCiAgICogYGBgCiAgICoKICAgKiBAZGVwcmVjYXRlZAogICAqIEBtZW1iZXJvZiBQb2x5bWVyLlBhdGgKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQYXRoIHN0cmluZwogICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHN0cmluZyBjb250YWluZWQgb25lIG9yIG1vcmUgZG90cwogICAqLwogIFBhdGguaXNEZWVwID0gUGF0aC5pc1BhdGg7CgogIFBvbHltZXIuUGF0aCA9IFBhdGg7Cgp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIGNvbnN0IGNhc2VNYXAgPSB7fTsKICBjb25zdCBEQVNIX1RPX0NBTUVMID0gLy1bYS16XS9nOwogIGNvbnN0IENBTUVMX1RPX0RBU0ggPSAvKFtBLVpdKS9nOwoKICAvKioKICAgKiBNb2R1bGUgd2l0aCB1dGlsaXRpZXMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiAiZGFzaC1jYXNlIiBhbmQgImNhbWVsQ2FzZSIKICAgKiBpZGVudGlmaWVycy4KICAgKgogICAqIEBuYW1lc3BhY2UKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IE1vZHVsZSB0aGF0IHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgY29udmVydGluZyBiZXR3ZWVuICJkYXNoLWNhc2UiCiAgICogICBhbmQgImNhbWVsQ2FzZSIuCiAgICovCiAgY29uc3QgQ2FzZU1hcCA9IHsKCiAgICAvKioKICAgICAqIENvbnZlcnRzICJkYXNoLWNhc2UiIGlkZW50aWZpZXIgKGUuZy4gYGZvby1iYXItYmF6YCkgdG8gImNhbWVsQ2FzZSIKICAgICAqIChlLmcuIGBmb29CYXJCYXpgKS4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5DYXNlTWFwCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGFzaCBEYXNoLWNhc2UgaWRlbnRpZmllcgogICAgICogQHJldHVybiB7c3RyaW5nfSBDYW1lbC1jYXNlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpZGVudGlmaWVyCiAgICAgKi8KICAgIGRhc2hUb0NhbWVsQ2FzZShkYXNoKSB7CiAgICAgIHJldHVybiBjYXNlTWFwW2Rhc2hdIHx8ICgKICAgICAgICBjYXNlTWFwW2Rhc2hdID0gZGFzaC5pbmRleE9mKCctJykgPCAwID8gZGFzaCA6IGRhc2gucmVwbGFjZShEQVNIX1RPX0NBTUVMLAogICAgICAgICAgKG0pID0+IG1bMV0udG9VcHBlckNhc2UoKQogICAgICAgICkKICAgICAgKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyAiY2FtZWxDYXNlIiBpZGVudGlmaWVyIChlLmcuIGBmb29CYXJCYXpgKSB0byAiZGFzaC1jYXNlIgogICAgICogKGUuZy4gYGZvby1iYXItYmF6YCkuCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuQ2FzZU1hcAogICAgICogQHBhcmFtIHtzdHJpbmd9IGNhbWVsIENhbWVsLWNhc2UgaWRlbnRpZmllcgogICAgICogQHJldHVybiB7c3RyaW5nfSBEYXNoLWNhc2UgcmVwcmVzZW50YXRpb24gb2YgdGhlIGlkZW50aWZpZXIKICAgICAqLwogICAgY2FtZWxUb0Rhc2hDYXNlKGNhbWVsKSB7CiAgICAgIHJldHVybiBjYXNlTWFwW2NhbWVsXSB8fCAoCiAgICAgICAgY2FzZU1hcFtjYW1lbF0gPSBjYW1lbC5yZXBsYWNlKENBTUVMX1RPX0RBU0gsICctJDEnKS50b0xvd2VyQ2FzZSgpCiAgICAgICk7CiAgICB9CgogIH07CgogIFBvbHltZXIuQ2FzZU1hcCA9IENhc2VNYXA7Cn0pKCk7CgoKKGZ1bmN0aW9uKCkgewoKICAndXNlIHN0cmljdCc7CgogIC8vIE1pY3JvdGFzayBpbXBsZW1lbnRlZCB1c2luZyBNdXRhdGlvbiBPYnNlcnZlcgogIGxldCBtaWNyb3Rhc2tDdXJySGFuZGxlID0gMDsKICBsZXQgbWljcm90YXNrTGFzdEhhbmRsZSA9IDA7CiAgbGV0IG1pY3JvdGFza0NhbGxiYWNrcyA9IFtdOwogIGxldCBtaWNyb3Rhc2tOb2RlQ29udGVudCA9IDA7CiAgbGV0IG1pY3JvdGFza05vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7CiAgbmV3IHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyKG1pY3JvdGFza0ZsdXNoKS5vYnNlcnZlKG1pY3JvdGFza05vZGUsIHtjaGFyYWN0ZXJEYXRhOiB0cnVlfSk7CgogIGZ1bmN0aW9uIG1pY3JvdGFza0ZsdXNoKCkgewogICAgY29uc3QgbGVuID0gbWljcm90YXNrQ2FsbGJhY2tzLmxlbmd0aDsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgbGV0IGNiID0gbWljcm90YXNrQ2FsbGJhY2tzW2ldOwogICAgICBpZiAoY2IpIHsKICAgICAgICB0cnkgewogICAgICAgICAgY2IoKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhyb3cgZTsgfSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBtaWNyb3Rhc2tDYWxsYmFja3Muc3BsaWNlKDAsIGxlbik7CiAgICBtaWNyb3Rhc2tMYXN0SGFuZGxlICs9IGxlbjsKICB9CgogIC8qKgogICAqIE1vZHVsZSB0aGF0IHByb3ZpZGVzIGEgbnVtYmVyIG9mIHN0cmF0ZWdpZXMgZm9yIGVucXVldWluZyBhc3luY2hyb25vdXMKICAgKiB0YXNrcy4gIEVhY2ggc3ViLW1vZHVsZSBwcm92aWRlcyBhIHN0YW5kYXJkIGBydW4oZm4pYCBpbnRlcmZhY2UgdGhhdCByZXR1cm5zIGEKICAgKiBoYW5kbGUsIGFuZCBhIGBjYW5jZWwoaGFuZGxlKWAgaW50ZXJmYWNlIGZvciBjYW5jZWxpbmcgYXN5bmMgdGFza3MgYmVmb3JlCiAgICogdGhleSBydW4uCiAgICoKICAgKiBAbmFtZXNwYWNlCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBNb2R1bGUgdGhhdCBwcm92aWRlcyBhIG51bWJlciBvZiBzdHJhdGVnaWVzIGZvciBlbnF1ZXVpbmcgYXN5bmNocm9ub3VzCiAgICogdGFza3MuCiAgICovCiAgUG9seW1lci5Bc3luYyA9IHsKCiAgICAvKioKICAgICAqIEFzeW5jIGludGVyZmFjZSB3cmFwcGVyIGFyb3VuZCBgc2V0VGltZW91dGAuCiAgICAgKgogICAgICogQG5hbWVzcGFjZQogICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMKICAgICAqIEBzdW1tYXJ5IEFzeW5jIGludGVyZmFjZSB3cmFwcGVyIGFyb3VuZCBgc2V0VGltZW91dGAuCiAgICAgKi8KICAgIHRpbWVPdXQ6IHsKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBzdWItbW9kdWxlIHdpdGggdGhlIGFzeW5jIGludGVyZmFjZSBwcm92aWRpbmcgdGhlIHByb3ZpZGVkCiAgICAgICAqIGRlbGF5LgogICAgICAgKgogICAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5Bc3luYy50aW1lT3V0CiAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVsYXkgVGltZSB0byB3YWl0IGJlZm9yZSBjYWxsaW5nIGNhbGxiYWNrcyBpbiBtcwogICAgICAgKiBAcmV0dXJuIHshQXN5bmNJbnRlcmZhY2V9IEFuIGFzeW5jIHRpbWVvdXQgaW50ZXJmYWNlCiAgICAgICAqLwogICAgICBhZnRlcihkZWxheSkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBydW4oZm4pIHsgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGZuLCBkZWxheSk7IH0sCiAgICAgICAgICBjYW5jZWwoaGFuZGxlKSB7CiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoaGFuZGxlKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9LAogICAgICAvKioKICAgICAgICogRW5xdWV1ZXMgYSBmdW5jdGlvbiBjYWxsZWQgaW4gdGhlIG5leHQgdGFzay4KICAgICAgICoKICAgICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMudGltZU91dAogICAgICAgKiBAcGFyYW0geyFGdW5jdGlvbn0gZm4gQ2FsbGJhY2sgdG8gcnVuCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZGVsYXkgRGVsYXkgaW4gbWlsbGlzZWNvbmRzCiAgICAgICAqIEByZXR1cm4ge251bWJlcn0gSGFuZGxlIHVzZWQgZm9yIGNhbmNlbGluZyB0YXNrCiAgICAgICAqLwogICAgICBydW4oZm4sIGRlbGF5KSB7CiAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KGZuLCBkZWxheSk7CiAgICAgIH0sCiAgICAgIC8qKgogICAgICAgKiBDYW5jZWxzIGEgcHJldmlvdXNseSBlbnF1ZXVlZCBgdGltZU91dGAgY2FsbGJhY2suCiAgICAgICAqCiAgICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkFzeW5jLnRpbWVPdXQKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGhhbmRsZSBIYW5kbGUgcmV0dXJuZWQgZnJvbSBgcnVuYCBvZiBjYWxsYmFjayB0byBjYW5jZWwKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNhbmNlbChoYW5kbGUpIHsKICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KGhhbmRsZSk7CiAgICAgIH0KICAgIH0sCgogICAgLyoqCiAgICAgKiBBc3luYyBpbnRlcmZhY2Ugd3JhcHBlciBhcm91bmQgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAuCiAgICAgKgogICAgICogQG5hbWVzcGFjZQogICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMKICAgICAqIEBzdW1tYXJ5IEFzeW5jIGludGVyZmFjZSB3cmFwcGVyIGFyb3VuZCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYC4KICAgICAqLwogICAgYW5pbWF0aW9uRnJhbWU6IHsKICAgICAgLyoqCiAgICAgICAqIEVucXVldWVzIGEgZnVuY3Rpb24gY2FsbGVkIGF0IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHRpbWluZy4KICAgICAgICoKICAgICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMuYW5pbWF0aW9uRnJhbWUKICAgICAgICogQHBhcmFtIHtmdW5jdGlvbihudW1iZXIpOnZvaWR9IGZuIENhbGxiYWNrIHRvIHJ1bgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEhhbmRsZSB1c2VkIGZvciBjYW5jZWxpbmcgdGFzawogICAgICAgKi8KICAgICAgcnVuKGZuKSB7CiAgICAgICAgcmV0dXJuIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICB9LAogICAgICAvKioKICAgICAgICogQ2FuY2VscyBhIHByZXZpb3VzbHkgZW5xdWV1ZWQgYGFuaW1hdGlvbkZyYW1lYCBjYWxsYmFjay4KICAgICAgICoKICAgICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMuYW5pbWF0aW9uRnJhbWUKICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGhhbmRsZSBIYW5kbGUgcmV0dXJuZWQgZnJvbSBgcnVuYCBvZiBjYWxsYmFjayB0byBjYW5jZWwKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNhbmNlbChoYW5kbGUpIHsKICAgICAgICB3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaGFuZGxlKTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIEFzeW5jIGludGVyZmFjZSB3cmFwcGVyIGFyb3VuZCBgcmVxdWVzdElkbGVDYWxsYmFja2AuICBGYWxscyBiYWNrIHRvCiAgICAgKiBgc2V0VGltZW91dGAgb24gYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBgcmVxdWVzdElkbGVDYWxsYmFja2AuCiAgICAgKgogICAgICogQG5hbWVzcGFjZQogICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMKICAgICAqIEBzdW1tYXJ5IEFzeW5jIGludGVyZmFjZSB3cmFwcGVyIGFyb3VuZCBgcmVxdWVzdElkbGVDYWxsYmFja2AuCiAgICAgKi8KICAgIGlkbGVQZXJpb2Q6IHsKICAgICAgLyoqCiAgICAgICAqIEVucXVldWVzIGEgZnVuY3Rpb24gY2FsbGVkIGF0IGByZXF1ZXN0SWRsZUNhbGxiYWNrYCB0aW1pbmcuCiAgICAgICAqCiAgICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkFzeW5jLmlkbGVQZXJpb2QKICAgICAgICogQHBhcmFtIHtmdW5jdGlvbighSWRsZURlYWRsaW5lKTp2b2lkfSBmbiBDYWxsYmFjayB0byBydW4KICAgICAgICogQHJldHVybiB7bnVtYmVyfSBIYW5kbGUgdXNlZCBmb3IgY2FuY2VsaW5nIHRhc2sKICAgICAgICovCiAgICAgIHJ1bihmbikgewogICAgICAgIHJldHVybiB3aW5kb3cucmVxdWVzdElkbGVDYWxsYmFjayA/CiAgICAgICAgICB3aW5kb3cucmVxdWVzdElkbGVDYWxsYmFjayhmbikgOgogICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZm4sIDE2KTsKICAgICAgfSwKICAgICAgLyoqCiAgICAgICAqIENhbmNlbHMgYSBwcmV2aW91c2x5IGVucXVldWVkIGBpZGxlUGVyaW9kYCBjYWxsYmFjay4KICAgICAgICoKICAgICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXN5bmMuaWRsZVBlcmlvZAogICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGFuZGxlIEhhbmRsZSByZXR1cm5lZCBmcm9tIGBydW5gIG9mIGNhbGxiYWNrIHRvIGNhbmNlbAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgY2FuY2VsKGhhbmRsZSkgewogICAgICAgIHdpbmRvdy5jYW5jZWxJZGxlQ2FsbGJhY2sgPwogICAgICAgICAgd2luZG93LmNhbmNlbElkbGVDYWxsYmFjayhoYW5kbGUpIDoKICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoaGFuZGxlKTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIEFzeW5jIGludGVyZmFjZSBmb3IgZW5xdWV1aW5nIGNhbGxiYWNrcyB0aGF0IHJ1biBhdCBtaWNyb3Rhc2sgdGltaW5nLgogICAgICoKICAgICAqIE5vdGUgdGhhdCBtaWNyb3Rhc2sgdGltaW5nIGlzIGFjaGlldmVkIHZpYSBhIHNpbmdsZSBgTXV0YXRpb25PYnNlcnZlcmAsCiAgICAgKiBhbmQgdGh1cyBjYWxsYmFja3MgZW5xdWV1ZWQgd2l0aCB0aGlzIEFQSSB3aWxsIGFsbCBydW4gaW4gYSBzaW5nbGUKICAgICAqIGJhdGNoLCBhbmQgbm90IGludGVybGVhdmVkIHdpdGggb3RoZXIgbWljcm90YXNrcyBzdWNoIGFzIHByb21pc2VzLgogICAgICogUHJvbWlzZXMgYXJlIGF2b2lkZWQgYXMgYW4gaW1wbGVtZW50YXRpb24gY2hvaWNlIGZvciB0aGUgdGltZSBiZWluZwogICAgICogZHVlIHRvIFNhZmFyaSBidWdzIHRoYXQgY2F1c2UgUHJvbWlzZXMgdG8gbGFjayBtaWNyb3Rhc2sgZ3VhcmFudGVlcy4KICAgICAqCiAgICAgKiBAbmFtZXNwYWNlCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5Bc3luYwogICAgICogQHN1bW1hcnkgQXN5bmMgaW50ZXJmYWNlIGZvciBlbnF1ZXVpbmcgY2FsbGJhY2tzIHRoYXQgcnVuIGF0IG1pY3JvdGFzawogICAgICogICB0aW1pbmcuCiAgICAgKi8KICAgIG1pY3JvVGFzazogewoKICAgICAgLyoqCiAgICAgICAqIEVucXVldWVzIGEgZnVuY3Rpb24gY2FsbGVkIGF0IG1pY3JvdGFzayB0aW1pbmcuCiAgICAgICAqCiAgICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkFzeW5jLm1pY3JvVGFzawogICAgICAgKiBAcGFyYW0geyFGdW5jdGlvbj19IGNhbGxiYWNrIENhbGxiYWNrIHRvIHJ1bgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEhhbmRsZSB1c2VkIGZvciBjYW5jZWxpbmcgdGFzawogICAgICAgKi8KICAgICAgcnVuKGNhbGxiYWNrKSB7CiAgICAgICAgbWljcm90YXNrTm9kZS50ZXh0Q29udGVudCA9IG1pY3JvdGFza05vZGVDb250ZW50Kys7CiAgICAgICAgbWljcm90YXNrQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICAgIHJldHVybiBtaWNyb3Rhc2tDdXJySGFuZGxlKys7CiAgICAgIH0sCgogICAgICAvKioKICAgICAgICogQ2FuY2VscyBhIHByZXZpb3VzbHkgZW5xdWV1ZWQgYG1pY3JvVGFza2AgY2FsbGJhY2suCiAgICAgICAqCiAgICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkFzeW5jLm1pY3JvVGFzawogICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGFuZGxlIEhhbmRsZSByZXR1cm5lZCBmcm9tIGBydW5gIG9mIGNhbGxiYWNrIHRvIGNhbmNlbAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgY2FuY2VsKGhhbmRsZSkgewogICAgICAgIGNvbnN0IGlkeCA9IGhhbmRsZSAtIG1pY3JvdGFza0xhc3RIYW5kbGU7CiAgICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgICBpZiAoIW1pY3JvdGFza0NhbGxiYWNrc1tpZHhdKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBhc3luYyBoYW5kbGU6ICcgKyBoYW5kbGUpOwogICAgICAgICAgfQogICAgICAgICAgbWljcm90YXNrQ2FsbGJhY2tzW2lkeF0gPSBudWxsOwogICAgICAgIH0KICAgICAgfQoKICAgIH0KICB9OwoKfSkoKTsKCgogIChmdW5jdGlvbiAoKSB7CgogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qKiBAY29uc3QgeyFBc3luY0ludGVyZmFjZX0gKi8KICAgIGNvbnN0IG1pY3JvdGFzayA9IFBvbHltZXIuQXN5bmMubWljcm9UYXNrOwoKICAgIC8qKgogICAgICogRWxlbWVudCBjbGFzcyBtaXhpbiB0aGF0IHByb3ZpZGVzIGJhc2ljIG1ldGEtcHJvZ3JhbW1pbmcgZm9yIGNyZWF0aW5nIG9uZQogICAgICogb3IgbW9yZSBwcm9wZXJ0eSBhY2Nlc3NvcnMgKGdldHRlci9zZXR0ZXIgcGFpcikgdGhhdCBlbnF1ZXVlIGFuIGFzeW5jCiAgICAgKiAoYmF0Y2hlZCkgYF9wcm9wZXJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2suCiAgICAgKgogICAgICogRm9yIGJhc2ljIHVzYWdlIG9mIHRoaXMgbWl4aW4sIGNhbGwgYE15Q2xhc3MuY3JlYXRlUHJvcGVydGllcyhwcm9wcylgCiAgICAgKiBvbmNlIGF0IGNsYXNzIGRlZmluaXRpb24gdGltZSB0byBjcmVhdGUgcHJvcGVydHkgYWNjZXNzb3JzIGZvciBwcm9wZXJ0aWVzCiAgICAgKiBuYW1lZCBpbiBwcm9wcywgaW1wbGVtZW50IGBfcHJvcGVydGllc0NoYW5nZWRgIHRvIHJlYWN0IGFzIGRlc2lyZWQgdG8KICAgICAqIHByb3BlcnR5IGNoYW5nZXMsIGFuZCBpbXBsZW1lbnQgYHN0YXRpYyBnZXQgb2JzZXJ2ZWRBdHRyaWJ1dGVzKClgIGFuZAogICAgICogaW5jbHVkZSBsb3dlcmNhc2UgdmVyc2lvbnMgb2YgYW55IHByb3BlcnR5IG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNldCBmcm9tCiAgICAgKiBhdHRyaWJ1dGVzLiBMYXN0LCBjYWxsIGB0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKClgIGluIHRoZSBlbGVtZW50J3MKICAgICAqIGBjb25uZWN0ZWRDYWxsYmFja2AgdG8gZW5hYmxlIHRoZSBhY2Nlc3NvcnMuCiAgICAgKgogICAgICogQG1peGluRnVuY3Rpb24KICAgICAqIEBwb2x5bWVyCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAgICogQHN1bW1hcnkgRWxlbWVudCBjbGFzcyBtaXhpbiBmb3IgcmVhY3RpbmcgdG8gcHJvcGVydHkgY2hhbmdlcyBmcm9tCiAgICAgKiAgIGdlbmVyYXRlZCBwcm9wZXJ0eSBhY2Nlc3NvcnMuCiAgICAgKi8KICAgIFBvbHltZXIuUHJvcGVydGllc0NoYW5nZWQgPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgICAvKioKICAgICAgICogQHBvbHltZXIKICAgICAgICogQG1peGluQ2xhc3MKICAgICAgICogQGV4dGVuZHMge3N1cGVyQ2xhc3N9CiAgICAgICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX1Byb3BlcnRpZXNDaGFuZ2VkfQogICAgICAgKiBAdW5yZXN0cmljdGVkCiAgICAgICAqLwogICAgICBjbGFzcyBQcm9wZXJ0aWVzQ2hhbmdlZCBleHRlbmRzIHN1cGVyQ2xhc3MgewoKICAgICAgICAvKioKICAgICAgICAgKiBDcmVhdGVzIHByb3BlcnR5IGFjY2Vzc29ycyBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IG5hbWVzLgogICAgICAgICAqIEBwYXJhbSB7IU9iamVjdH0gcHJvcHMgT2JqZWN0IHdob3NlIGtleXMgYXJlIG5hbWVzIG9mIGFjY2Vzc29ycy4KICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgY3JlYXRlUHJvcGVydGllcyhwcm9wcykgewogICAgICAgICAgY29uc3QgcHJvdG8gPSB0aGlzLnByb3RvdHlwZTsKICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gcHJvcHMpIHsKICAgICAgICAgICAgLy8gZG9uJ3Qgc3RvbXAgYW4gZXhpc3RpbmcgYWNjZXNzb3IKICAgICAgICAgICAgaWYgKCEocHJvcCBpbiBwcm90bykpIHsKICAgICAgICAgICAgICBwcm90by5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcihwcm9wKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyBhbiBhdHRyaWJ1dGUgbmFtZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICAgKiBUaGUgYXR0cmlidXRlIG5hbWUgaXMgdGhlIGxvd2VyY2FzZWQgcHJvcGVydHkgbmFtZS4gT3ZlcnJpZGUgdG8KICAgICAgICAgKiBjdXN0b21pemUgdGhpcyBtYXBwaW5nLgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSB0byBjb252ZXJ0CiAgICAgICAgICogQHJldHVybiB7c3RyaW5nfSBBdHRyaWJ1dGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICAgKgogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHByb3BlcnR5KSB7CiAgICAgICAgICByZXR1cm4gcHJvcGVydHkudG9Mb3dlckNhc2UoKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIE92ZXJyaWRlIHBvaW50IHRvIHByb3ZpZGUgYSB0eXBlIHRvIHdoaWNoIHRvIGRlc2VyaWFsaXplIGEgdmFsdWUgdG8KICAgICAgICAgKiBhIGdpdmVuIHByb3BlcnR5LgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcHJvcGVydHkKICAgICAgICAgKgogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgdHlwZUZvclByb3BlcnR5KG5hbWUpIHsgfSAvL2VzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMKCiAgICAgICAgLyoqCiAgICAgICAgICogQ3JlYXRlcyBhIHNldHRlci9nZXR0ZXIgcGFpciBmb3IgdGhlIG5hbWVkIHByb3BlcnR5IHdpdGggaXRzIG93bgogICAgICAgICAqIGxvY2FsIHN0b3JhZ2UuICBUaGUgZ2V0dGVyIHJldHVybnMgdGhlIHZhbHVlIGluIHRoZSBsb2NhbCBzdG9yYWdlLAogICAgICAgICAqIGFuZCB0aGUgc2V0dGVyIGNhbGxzIGBfc2V0UHJvcGVydHlgLCB3aGljaCB1cGRhdGVzIHRoZSBsb2NhbCBzdG9yYWdlCiAgICAgICAgICogZm9yIHRoZSBwcm9wZXJ0eSBhbmQgZW5xdWV1ZXMgYSBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBjYWxsYmFjay4KICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYSBwcm90b3R5cGUgb3IgYW4gaW5zdGFuY2UuICBDYWxsaW5nCiAgICAgICAgICogdGhpcyBtZXRob2QgbWF5IG92ZXJ3cml0ZSBhIHByb3BlcnR5IHZhbHVlIHRoYXQgYWxyZWFkeSBleGlzdHMgb24KICAgICAgICAgKiB0aGUgcHJvdG90eXBlL2luc3RhbmNlIGJ5IGNyZWF0aW5nIHRoZSBhY2Nlc3Nvci4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBOYW1lIG9mIHRoZSBwcm9wZXJ0eQogICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHJlYWRPbmx5IFdoZW4gdHJ1ZSwgbm8gc2V0dGVyIGlzIGNyZWF0ZWQ7IHRoZQogICAgICAgICAqICAgcHJvdGVjdGVkIGBfc2V0UHJvcGVydHlgIGZ1bmN0aW9uIG11c3QgYmUgdXNlZCB0byBzZXQgdGhlIHByb3BlcnR5CiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAgICovCiAgICAgICAgX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IocHJvcGVydHksIHJlYWRPbmx5KSB7CiAgICAgICAgICB0aGlzLl9hZGRQcm9wZXJ0eVRvQXR0cmlidXRlTWFwKHByb3BlcnR5KTsKICAgICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eSgnX19kYXRhSGFzQWNjZXNzb3InKSkgewogICAgICAgICAgICB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fX2RhdGFIYXNBY2Nlc3Nvcik7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMuX19kYXRhSGFzQWNjZXNzb3JbcHJvcGVydHldKSB7CiAgICAgICAgICAgIHRoaXMuX19kYXRhSGFzQWNjZXNzb3JbcHJvcGVydHldID0gdHJ1ZTsKICAgICAgICAgICAgdGhpcy5fZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcihwcm9wZXJ0eSwgcmVhZE9ubHkpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQWRkcyB0aGUgZ2l2ZW4gYHByb3BlcnR5YCB0byBhIG1hcCBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZXMKICAgICAgICAgKiB0byBwcm9wZXJ0eSBuYW1lcywgdXNpbmcgYGF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eWAuIFRoaXMgbWFwIGlzCiAgICAgICAgICogdXNlZCB3aGVuIGRlc2VyaWFsaXppbmcgYXR0cmlidXRlIHZhbHVlcyB0byBwcm9wZXJ0aWVzLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5CiAgICAgICAgICovCiAgICAgICAgX2FkZFByb3BlcnR5VG9BdHRyaWJ1dGVNYXAocHJvcGVydHkpIHsKICAgICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eSgnX19kYXRhQXR0cmlidXRlcycpKSB7CiAgICAgICAgICAgIHRoaXMuX19kYXRhQXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX19kYXRhQXR0cmlidXRlcyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMuX19kYXRhQXR0cmlidXRlc1twcm9wZXJ0eV0pIHsKICAgICAgICAgICAgY29uc3QgYXR0ciA9IHRoaXMuY29uc3RydWN0b3IuYXR0cmlidXRlTmFtZUZvclByb3BlcnR5KHByb3BlcnR5KTsKICAgICAgICAgICAgdGhpcy5fX2RhdGFBdHRyaWJ1dGVzW2F0dHJdID0gcHJvcGVydHk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBEZWZpbmVzIGEgcHJvcGVydHkgYWNjZXNzb3IgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHkKICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSByZWFkT25seSBXaGVuIHRydWUsIG5vIHNldHRlciBpcyBjcmVhdGVkCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICAgX2RlZmluZVByb3BlcnR5QWNjZXNzb3IocHJvcGVydHksIHJlYWRPbmx5KSB7CiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcGVydHksIHsKICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi8KICAgICAgICAgICAgLyoqIEB0aGlzIHtQcm9wZXJ0aWVzQ2hhbmdlZH0gKi8KICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRQcm9wZXJ0eShwcm9wZXJ0eSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIC8qKiBAdGhpcyB7UHJvcGVydGllc0NoYW5nZWR9ICovCiAgICAgICAgICAgIHNldDogcmVhZE9ubHkgPyBmdW5jdGlvbiAoKSB7fSA6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICAgICAgICAgIHRoaXMuX3NldFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqLwogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICAgIHN1cGVyKCk7CiAgICAgICAgICB0aGlzLl9fZGF0YUVuYWJsZWQgPSBmYWxzZTsKICAgICAgICAgIHRoaXMuX19kYXRhUmVhZHkgPSBmYWxzZTsKICAgICAgICAgIHRoaXMuX19kYXRhSW52YWxpZCA9IGZhbHNlOwogICAgICAgICAgdGhpcy5fX2RhdGEgPSB7fTsKICAgICAgICAgIHRoaXMuX19kYXRhUGVuZGluZyA9IG51bGw7CiAgICAgICAgICB0aGlzLl9fZGF0YU9sZCA9IG51bGw7CiAgICAgICAgICB0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHMgPSBudWxsOwogICAgICAgICAgdGhpcy5fX3NlcmlhbGl6aW5nID0gZmFsc2U7CiAgICAgICAgICB0aGlzLl9pbml0aWFsaXplUHJvcGVydGllcygpOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogTGlmZWN5Y2xlIGNhbGxiYWNrIGNhbGxlZCB3aGVuIHByb3BlcnRpZXMgYXJlIGVuYWJsZWQgdmlhCiAgICAgICAgICogYF9lbmFibGVQcm9wZXJ0aWVzYC4KICAgICAgICAgKgogICAgICAgICAqIFVzZXJzIG1heSBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGltcGxlbWVudCBiZWhhdmlvciB0aGF0IGlzCiAgICAgICAgICogZGVwZW5kZW50IG9uIHRoZSBlbGVtZW50IGhhdmluZyBpdHMgcHJvcGVydHkgZGF0YSBpbml0aWFsaXplZCwgZS5nLgogICAgICAgICAqIGZyb20gZGVmYXVsdHMgKGluaXRpYWxpemVkIGZyb20gYGNvbnN0cnVjdG9yYCwgYF9pbml0aWFsaXplUHJvcGVydGllc2ApLAogICAgICAgICAqIGBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tgLCBvciB2YWx1ZXMgcHJvcGFnYXRlZCBmcm9tIGhvc3QgZS5nLiB2aWEKICAgICAgICAgKiBiaW5kaW5ncy4gIGBzdXBlci5yZWFkeSgpYCBtdXN0IGJlIGNhbGxlZCB0byBlbnN1cmUgdGhlIGRhdGEgc3lzdGVtCiAgICAgICAgICogYmVjb21lcyBlbmFibGVkLgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKiBAcHVibGljCiAgICAgICAgICovCiAgICAgICAgcmVhZHkoKSB7CiAgICAgICAgICB0aGlzLl9fZGF0YVJlYWR5ID0gdHJ1ZTsKICAgICAgICAgIHRoaXMuX2ZsdXNoUHJvcGVydGllcygpOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSW5pdGlhbGl6ZXMgdGhlIGxvY2FsIHN0b3JhZ2UgZm9yIHByb3BlcnR5IGFjY2Vzc29ycy4KICAgICAgICAgKgogICAgICAgICAqIFByb3ZpZGVkIGFzIGFuIG92ZXJyaWRlIHBvaW50IGZvciBwZXJmb3JtaW5nIGFueSBzZXR1cCB3b3JrIHByaW9yCiAgICAgICAgICogdG8gaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0eSBhY2Nlc3NvciBzeXN0ZW0uCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBfaW5pdGlhbGl6ZVByb3BlcnRpZXMoKSB7CiAgICAgICAgICAvLyBDYXB0dXJlIGluc3RhbmNlIHByb3BlcnRpZXM7IHRoZXNlIHdpbGwgYmUgc2V0IGludG8gYWNjZXNzb3JzCiAgICAgICAgICAvLyBkdXJpbmcgZmlyc3QgZmx1c2guIERvbid0IHNldCB0aGVtIGhlcmUsIHNpbmNlIHdlIHdhbnQKICAgICAgICAgIC8vIHRoZXNlIHRvIG92ZXJ3cml0ZSBkZWZhdWx0cy9jb25zdHJ1Y3RvciBhc3NpZ25tZW50cwogICAgICAgICAgZm9yIChsZXQgcCBpbiB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yKSB7CiAgICAgICAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KHApKSB7CiAgICAgICAgICAgICAgdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzID0gdGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzIHx8IHt9OwogICAgICAgICAgICAgIHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wc1twXSA9IHRoaXNbcF07CiAgICAgICAgICAgICAgZGVsZXRlIHRoaXNbcF07CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIENhbGxlZCBhdCByZWFkeSB0aW1lIHdpdGggYmFnIG9mIGluc3RhbmNlIHByb3BlcnRpZXMgdGhhdCBvdmVyd3JvdGUKICAgICAgICAgKiBhY2Nlc3NvcnMgd2hlbiB0aGUgZWxlbWVudCB1cGdyYWRlZC4KICAgICAgICAgKgogICAgICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHNldHMgdGhlc2UgcHJvcGVydGllcyBiYWNrIGludG8gdGhlCiAgICAgICAgICogc2V0dGVyIGF0IHJlYWR5IHRpbWUuICBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhbiBvdmVycmlkZQogICAgICAgICAqIHBvaW50IGZvciBjdXN0b21pemluZyBvciBwcm92aWRpbmcgbW9yZSBlZmZpY2llbnQgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIHByb3BlcnR5IHZhbHVlcyB0aGF0IHdlcmUgb3ZlcndyaXR0ZW4KICAgICAgICAgKiAgIHdoZW4gY3JlYXRpbmcgcHJvcGVydHkgYWNjZXNzb3JzLgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICogQHByb3RlY3RlZAogICAgICAgICAqLwogICAgICAgIF9pbml0aWFsaXplSW5zdGFuY2VQcm9wZXJ0aWVzKHByb3BzKSB7CiAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIHByb3BzKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIFVwZGF0ZXMgdGhlIGxvY2FsIHN0b3JhZ2UgZm9yIGEgcHJvcGVydHkgKHZpYSBgX3NldFBlbmRpbmdQcm9wZXJ0eWApCiAgICAgICAgICogYW5kIGVucXVldWVzIGEgYF9wcm9lcHJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2suCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHkKICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldAogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICogQHByb3RlY3RlZAogICAgICAgICAqLwogICAgICAgIF9zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpIHsKICAgICAgICAgIGlmICh0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkocHJvcGVydHksIHZhbHVlKSkgewogICAgICAgICAgICB0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTmFtZSBvZiBwcm9wZXJ0eQogICAgICAgICAqIEByZXR1cm4geyp9IFZhbHVlIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkKICAgICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAgICovCiAgICAgICAgX2dldFByb3BlcnR5KHByb3BlcnR5KSB7CiAgICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFbcHJvcGVydHldOwogICAgICAgIH0KCiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi8KICAgICAgICAvKioKICAgICAgICAgKiBVcGRhdGVzIHRoZSBsb2NhbCBzdG9yYWdlIGZvciBhIHByb3BlcnR5LCByZWNvcmRzIHRoZSBwcmV2aW91cyB2YWx1ZSwKICAgICAgICAgKiBhbmQgYWRkcyBpdCB0byB0aGUgc2V0IG9mICJwZW5kaW5nIGNoYW5nZXMiIHRoYXQgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCiAgICAgICAgICogYF9wcm9wZXJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2suICBUaGlzIG1ldGhvZCBkb2VzIG5vdCBlbnF1ZXVlIHRoZQogICAgICAgICAqIGBfcHJvcGVydGllc0NoYW5nZWRgIGNhbGxiYWNrLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5CiAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBzZXQKICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBleHQgTm90IHVzZWQgaGVyZTsgYWZmb3JkYW5jZSBmb3IgY2xvc3VyZQogICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgY2hhbmdlZAogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBfc2V0UGVuZGluZ1Byb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSwgZXh0KSB7CiAgICAgICAgICBsZXQgb2xkID0gdGhpcy5fX2RhdGFbcHJvcGVydHldOwogICAgICAgICAgbGV0IGNoYW5nZWQgPSB0aGlzLl9zaG91bGRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eSwgdmFsdWUsIG9sZCk7CiAgICAgICAgICBpZiAoY2hhbmdlZCkgewogICAgICAgICAgICBpZiAoIXRoaXMuX19kYXRhUGVuZGluZykgewogICAgICAgICAgICAgIHRoaXMuX19kYXRhUGVuZGluZyA9IHt9OwogICAgICAgICAgICAgIHRoaXMuX19kYXRhT2xkID0ge307CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRW5zdXJlIG9sZCBpcyBjYXB0dXJlZCBmcm9tIHRoZSBsYXN0IHR1cm4KICAgICAgICAgICAgaWYgKHRoaXMuX19kYXRhT2xkICYmICEocHJvcGVydHkgaW4gdGhpcy5fX2RhdGFPbGQpKSB7CiAgICAgICAgICAgICAgdGhpcy5fX2RhdGFPbGRbcHJvcGVydHldID0gb2xkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuX19kYXRhW3Byb3BlcnR5XSA9IHZhbHVlOwogICAgICAgICAgICB0aGlzLl9fZGF0YVBlbmRpbmdbcHJvcGVydHldID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAgICAgICB9CiAgICAgICAgLyogZXNsaW50LWVuYWJsZSAqLwoKICAgICAgICAvKioKICAgICAgICAgKiBNYXJrcyB0aGUgcHJvcGVydGllcyBhcyBpbnZhbGlkLCBhbmQgZW5xdWV1ZXMgYW4gYXN5bmMKICAgICAgICAgKiBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBjYWxsYmFjay4KICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICogQHByb3RlY3RlZAogICAgICAgICAqLwogICAgICAgIF9pbnZhbGlkYXRlUHJvcGVydGllcygpIHsKICAgICAgICAgIGlmICghdGhpcy5fX2RhdGFJbnZhbGlkICYmIHRoaXMuX19kYXRhUmVhZHkpIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFJbnZhbGlkID0gdHJ1ZTsKICAgICAgICAgICAgbWljcm90YXNrLnJ1bigoKSA9PiB7CiAgICAgICAgICAgICAgaWYgKHRoaXMuX19kYXRhSW52YWxpZCkgewogICAgICAgICAgICAgICAgdGhpcy5fX2RhdGFJbnZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aGlzLl9mbHVzaFByb3BlcnRpZXMoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbCB0byBlbmFibGUgcHJvcGVydHkgYWNjZXNzb3IgcHJvY2Vzc2luZy4gQmVmb3JlIHRoaXMgbWV0aG9kIGlzCiAgICAgICAgICogY2FsbGVkIGFjY2Vzc29yIHZhbHVlcyB3aWxsIGJlIHNldCBidXQgc2lkZSBlZmZlY3RzIGFyZQogICAgICAgICAqIHF1ZXVlZC4gV2hlbiBjYWxsZWQsIGFueSBwZW5kaW5nIHNpZGUgZWZmZWN0cyBvY2N1ciBpbW1lZGlhdGVseS4KICAgICAgICAgKiBGb3IgZWxlbWVudHMsIGdlbmVyYWxseSBgY29ubmVjdGVkQ2FsbGJhY2tgIGlzIGEgbm9ybWFsIHNwb3QgdG8gZG8gc28uCiAgICAgICAgICogSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kIG11bHRpcGxlIHRpbWVzIGFzIGl0IG9ubHkgdHVybnMgb24KICAgICAgICAgKiBwcm9wZXJ0eSBhY2Nlc3NvcnMgb25jZS4KICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICogQHByb3RlY3RlZAogICAgICAgICAqLwogICAgICAgIF9lbmFibGVQcm9wZXJ0aWVzKCkgewogICAgICAgICAgaWYgKCF0aGlzLl9fZGF0YUVuYWJsZWQpIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgICAgaWYgKHRoaXMuX19kYXRhSW5zdGFuY2VQcm9wcykgewogICAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVJbnN0YW5jZVByb3BlcnRpZXModGhpcy5fX2RhdGFJbnN0YW5jZVByb3BzKTsKICAgICAgICAgICAgICB0aGlzLl9fZGF0YUluc3RhbmNlUHJvcHMgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMucmVhZHkoKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIENhbGxzIHRoZSBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBjYWxsYmFjayB3aXRoIHRoZSBjdXJyZW50IHNldCBvZgogICAgICAgICAqIHBlbmRpbmcgY2hhbmdlcyAoYW5kIG9sZCB2YWx1ZXMgcmVjb3JkZWQgd2hlbiBwZW5kaW5nIGNoYW5nZXMgd2VyZQogICAgICAgICAqIHNldCksIGFuZCByZXNldHMgdGhlIHBlbmRpbmcgc2V0IG9mIGNoYW5nZXMuIEdlbmVyYWxseSwgdGhpcyBtZXRob2QKICAgICAgICAgKiBzaG91bGQgbm90IGJlIGNhbGxlZCBpbiB1c2VyIGNvZGUuCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBfZmx1c2hQcm9wZXJ0aWVzKCkgewogICAgICAgICAgY29uc3QgcHJvcHMgPSB0aGlzLl9fZGF0YTsKICAgICAgICAgIGNvbnN0IGNoYW5nZWRQcm9wcyA9IHRoaXMuX19kYXRhUGVuZGluZzsKICAgICAgICAgIGNvbnN0IG9sZCA9IHRoaXMuX19kYXRhT2xkOwogICAgICAgICAgaWYgKHRoaXMuX3Nob3VsZFByb3BlcnRpZXNDaGFuZ2UocHJvcHMsIGNoYW5nZWRQcm9wcywgb2xkKSkgewogICAgICAgICAgICB0aGlzLl9fZGF0YVBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICB0aGlzLl9fZGF0YU9sZCA9IG51bGw7CiAgICAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNDaGFuZ2VkKHByb3BzLCBjaGFuZ2VkUHJvcHMsIG9sZCk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBDYWxsZWQgaW4gYF9mbHVzaFByb3BlcnRpZXNgIHRvIGRldGVybWluZSBpZiBgX3Byb3BlcnRpZXNDaGFuZ2VkYAogICAgICAgICAqIHNob3VsZCBiZSBjYWxsZWQuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgdHJ1ZSBpZgogICAgICAgICAqIHByb3BlcnRpZXMgYXJlIHBlbmRpbmcuIE92ZXJyaWRlIHRvIGN1c3RvbWl6ZSB3aGVuCiAgICAgICAgICogYF9wcm9wZXJ0aWVzQ2hhbmdlZGAgaXMgY2FsbGVkLgogICAgICAgICAqIEBwYXJhbSB7IU9iamVjdH0gY3VycmVudFByb3BzIEJhZyBvZiBhbGwgY3VycmVudCBhY2Nlc3NvciB2YWx1ZXMKICAgICAgICAgKiBAcGFyYW0geyFPYmplY3R9IGNoYW5nZWRQcm9wcyBCYWcgb2YgcHJvcGVydGllcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0CiAgICAgICAgICogICBjYWxsIHRvIGBfcHJvcGVydGllc0NoYW5nZWRgCiAgICAgICAgICogQHBhcmFtIHshT2JqZWN0fSBvbGRQcm9wcyBCYWcgb2YgcHJldmlvdXMgdmFsdWVzIGZvciBlYWNoIHByb3BlcnR5CiAgICAgICAgICogICBpbiBgY2hhbmdlZFByb3BzYAogICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFByb3BzIGlzIHRydXRoeQogICAgICAgICAqLwogICAgICAgIF9zaG91bGRQcm9wZXJ0aWVzQ2hhbmdlKGN1cnJlbnRQcm9wcywgY2hhbmdlZFByb3BzLCBvbGRQcm9wcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgICAgICAgICByZXR1cm4gQm9vbGVhbihjaGFuZ2VkUHJvcHMpOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ2FsbGJhY2sgY2FsbGVkIHdoZW4gYW55IHByb3BlcnRpZXMgd2l0aCBhY2Nlc3NvcnMgY3JlYXRlZCB2aWEKICAgICAgICAgKiBgX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3JgIGhhdmUgYmVlbiBzZXQuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0geyFPYmplY3R9IGN1cnJlbnRQcm9wcyBCYWcgb2YgYWxsIGN1cnJlbnQgYWNjZXNzb3IgdmFsdWVzCiAgICAgICAgICogQHBhcmFtIHshT2JqZWN0fSBjaGFuZ2VkUHJvcHMgQmFnIG9mIHByb3BlcnRpZXMgY2hhbmdlZCBzaW5jZSB0aGUgbGFzdAogICAgICAgICAqICAgY2FsbCB0byBgX3Byb3BlcnRpZXNDaGFuZ2VkYAogICAgICAgICAqIEBwYXJhbSB7IU9iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgZWFjaCBwcm9wZXJ0eQogICAgICAgICAqICAgaW4gYGNoYW5nZWRQcm9wc2AKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICAgKi8KICAgICAgICBfcHJvcGVydGllc0NoYW5nZWQoY3VycmVudFByb3BzLCBjaGFuZ2VkUHJvcHMsIG9sZFByb3BzKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIE1ldGhvZCBjYWxsZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwcm9wZXJ0eSB2YWx1ZSBzaG91bGQgYmUKICAgICAgICAgKiBjb25zaWRlcmVkIGFzIGEgY2hhbmdlIGFuZCBjYXVzZSB0aGUgYF9wcm9wZXJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2sKICAgICAgICAgKiB0byBiZSBlbnF1ZXVlZC4KICAgICAgICAgKgogICAgICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgYHRydWVgIGlmIGEgc3RyaWN0IGVxdWFsaXR5CiAgICAgICAgICogY2hlY2sgZmFpbHMuIFRoZSBtZXRob2QgYWx3YXlzIHJldHVybnMgZmFsc2UgZm9yIGBOYU5gLgogICAgICAgICAqCiAgICAgICAgICogT3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gZS5nLiBwcm92aWRlIHN0cmljdGVyIGNoZWNraW5nIGZvcgogICAgICAgICAqIE9iamVjdHMvQXJyYXlzIHdoZW4gdXNpbmcgaW1tdXRhYmxlIHBhdHRlcm5zLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIE5ldyBwcm9wZXJ0eSB2YWx1ZQogICAgICAgICAqIEBwYXJhbSB7Kn0gb2xkIFByZXZpb3VzIHByb3BlcnR5IHZhbHVlCiAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBjaGFuZ2UKICAgICAgICAgKiAgIGFuZCBlbnF1ZXVlIGEgYF9wcm9lcHJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2sKICAgICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAgICovCiAgICAgICAgX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5LCB2YWx1ZSwgb2xkKSB7CiAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAvLyBTdHJpY3QgZXF1YWxpdHkgY2hlY2sKICAgICAgICAgICAgKG9sZCAhPT0gdmFsdWUgJiYKICAgICAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgKG9sZD09TmFOLCB2YWx1ZT09TmFOKSBhbHdheXMgcmV0dXJucyBmYWxzZQogICAgICAgICAgICAgIChvbGQgPT09IG9sZCB8fCB2YWx1ZSA9PT0gdmFsdWUpKQogICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEltcGxlbWVudHMgbmF0aXZlIEN1c3RvbSBFbGVtZW50cyBgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrYCB0bwogICAgICAgICAqIHNldCBhbiBhdHRyaWJ1dGUgdmFsdWUgdG8gYSBwcm9wZXJ0eSB2aWEgYF9hdHRyaWJ1dGVUb1Byb3BlcnR5YC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgYXR0cmlidXRlIHRoYXQgY2hhbmdlZAogICAgICAgICAqIEBwYXJhbSB7P3N0cmluZ30gb2xkIE9sZCBhdHRyaWJ1dGUgdmFsdWUKICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IHZhbHVlIE5ldyBhdHRyaWJ1dGUgdmFsdWUKICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IG5hbWVzcGFjZSBBdHRyaWJ1dGUgbmFtZXNwYWNlLgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gU3VwZXIgbWF5IG9yIG1heSBub3QgaW1wbGVtZW50IHRoZSBjYWxsYmFjawogICAgICAgICAqLwogICAgICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlLCBuYW1lc3BhY2UpIHsKICAgICAgICAgIGlmIChvbGQgIT09IHZhbHVlKSB7CiAgICAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZVRvUHJvcGVydHkobmFtZSwgdmFsdWUpOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjaykgewogICAgICAgICAgICBzdXBlci5hdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSwgbmFtZXNwYWNlKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIERlc2VyaWFsaXplcyBhbiBhdHRyaWJ1dGUgdG8gaXRzIGFzc29jaWF0ZWQgcHJvcGVydHkuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCBjYWxscyB0aGUgYF9kZXNlcmlhbGl6ZVZhbHVlYCBtZXRob2QgdG8gY29udmVydCB0aGUgc3RyaW5nIHRvCiAgICAgICAgICogYSB0eXBlZCB2YWx1ZS4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgTmFtZSBvZiBhdHRyaWJ1dGUgdG8gZGVzZXJpYWxpemUuCiAgICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLgogICAgICAgICAqIEBwYXJhbSB7Kj19IHR5cGUgdHlwZSB0byBkZXNlcmlhbGl6ZSB0bywgZGVmYXVsdHMgdG8gdGhlIHZhbHVlCiAgICAgICAgICogcmV0dXJuZWQgZnJvbSBgdHlwZUZvclByb3BlcnR5YAogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICovCiAgICAgICAgX2F0dHJpYnV0ZVRvUHJvcGVydHkoYXR0cmlidXRlLCB2YWx1ZSwgdHlwZSkgewogICAgICAgICAgaWYgKCF0aGlzLl9fc2VyaWFsaXppbmcpIHsKICAgICAgICAgICAgY29uc3QgbWFwID0gdGhpcy5fX2RhdGFBdHRyaWJ1dGVzOwogICAgICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IG1hcCAmJiBtYXBbYXR0cmlidXRlXSB8fCBhdHRyaWJ1dGU7CiAgICAgICAgICAgIHRoaXNbcHJvcGVydHldID0gdGhpcy5fZGVzZXJpYWxpemVWYWx1ZSh2YWx1ZSwgdHlwZSB8fAogICAgICAgICAgICAgIHRoaXMuY29uc3RydWN0b3IudHlwZUZvclByb3BlcnR5KHByb3BlcnR5KSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBTZXJpYWxpemVzIGEgcHJvcGVydHkgdG8gaXRzIGFzc29jaWF0ZWQgYXR0cmlidXRlLgogICAgICAgICAqCiAgICAgICAgICogQHN1cHByZXNzIHtpbnZhbGlkQ2FzdHN9IENsb3N1cmUgY2FuJ3QgZmlndXJlIG91dCBgdGhpc2AgaXMgYW4gZWxlbWVudC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lIHRvIHJlZmxlY3QuCiAgICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBhdHRyaWJ1dGUgQXR0cmlidXRlIG5hbWUgdG8gcmVmbGVjdCB0by4KICAgICAgICAgKiBAcGFyYW0geyo9fSB2YWx1ZSBQcm9wZXJ0eSB2YWx1ZSB0byByZWZlY3QuCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBfcHJvcGVydHlUb0F0dHJpYnV0ZShwcm9wZXJ0eSwgYXR0cmlidXRlLCB2YWx1ZSkgewogICAgICAgICAgdGhpcy5fX3NlcmlhbGl6aW5nID0gdHJ1ZTsKICAgICAgICAgIHZhbHVlID0gKGFyZ3VtZW50cy5sZW5ndGggPCAzKSA/IHRoaXNbcHJvcGVydHldIDogdmFsdWU7CiAgICAgICAgICB0aGlzLl92YWx1ZVRvTm9kZUF0dHJpYnV0ZSgvKiogQHR5cGUgeyFIVE1MRWxlbWVudH0gKi8odGhpcyksIHZhbHVlLAogICAgICAgICAgICBhdHRyaWJ1dGUgfHwgdGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkocHJvcGVydHkpKTsKICAgICAgICAgIHRoaXMuX19zZXJpYWxpemluZyA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogU2V0cyBhIHR5cGVkIHZhbHVlIHRvIGFuIEhUTUwgYXR0cmlidXRlIG9uIGEgbm9kZS4KICAgICAgICAgKgogICAgICAgICAqIFRoaXMgbWV0aG9kIGNhbGxzIHRoZSBgX3NlcmlhbGl6ZVZhbHVlYCBtZXRob2QgdG8gY29udmVydCB0aGUgdHlwZWQKICAgICAgICAgKiB2YWx1ZSB0byBhIHN0cmluZy4gIElmIHRoZSBgX3NlcmlhbGl6ZVZhbHVlYCBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYCwKICAgICAgICAgKiB0aGUgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgYm9vbGVhbgogICAgICAgICAqIHR5cGUgYGZhbHNlYCkuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgRWxlbWVudCB0byBzZXQgYXR0cmlidXRlIHRvLgogICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gc2VyaWFsaXplLgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgQXR0cmlidXRlIG5hbWUgdG8gc2VyaWFsaXplIHRvLgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICovCiAgICAgICAgX3ZhbHVlVG9Ob2RlQXR0cmlidXRlKG5vZGUsIHZhbHVlLCBhdHRyaWJ1dGUpIHsKICAgICAgICAgIGNvbnN0IHN0ciA9IHRoaXMuX3NlcmlhbGl6ZVZhbHVlKHZhbHVlKTsKICAgICAgICAgIGlmIChzdHIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyaWJ1dGUpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCBzdHIpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQ29udmVydHMgYSB0eXBlZCBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgc3RyaW5nLgogICAgICAgICAqCiAgICAgICAgICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gc2V0dGluZyBKUyBwcm9wZXJ0eSB2YWx1ZXMgdG8KICAgICAgICAgKiBIVE1MIGF0dHJpYnV0ZXMuICBVc2VycyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZQogICAgICAgICAqIHNlcmlhbGl6YXRpb24gZm9yIGN1c3RvbSB0eXBlcy4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgUHJvcGVydHkgdmFsdWUgdG8gc2VyaWFsaXplLgogICAgICAgICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gU3RyaW5nIHNlcmlhbGl6ZWQgZnJvbSB0aGUgcHJvdmlkZWQKICAgICAgICAgKiBwcm9wZXJ0eSAgdmFsdWUuCiAgICAgICAgICovCiAgICAgICAgX3NlcmlhbGl6ZVZhbHVlKHZhbHVlKSB7CiAgICAgICAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkgewogICAgICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPyAnJyA6IHVuZGVmaW5lZDsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCA/IHZhbHVlLnRvU3RyaW5nKCkgOiB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIHR5cGVkIEphdmFTY3JpcHQgdmFsdWUuCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiByZWFkaW5nIEhUTUwgYXR0cmlidXRlIHZhbHVlcyB0bwogICAgICAgICAqIEpTIHByb3BlcnRpZXMuICBVc2VycyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZQogICAgICAgICAqIGRlc2VyaWFsaXphdGlvbiBmb3IgY3VzdG9tIGB0eXBlYHMuIFR5cGVzIGZvciBgQm9vbGVhbmAsIGBTdHJpbmdgLAogICAgICAgICAqIGFuZCBgTnVtYmVyYCBjb252ZXJ0IGF0dHJpYnV0ZXMgdG8gdGhlIGV4cGVjdGVkIHR5cGVzLgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSB2YWx1ZSBWYWx1ZSB0byBkZXNlcmlhbGl6ZS4KICAgICAgICAgKiBAcGFyYW0geyo9fSB0eXBlIFR5cGUgdG8gZGVzZXJpYWxpemUgdGhlIHN0cmluZyB0by4KICAgICAgICAgKiBAcmV0dXJuIHsqfSBUeXBlZCB2YWx1ZSBkZXNlcmlhbGl6ZWQgZnJvbSB0aGUgcHJvdmlkZWQgc3RyaW5nLgogICAgICAgICAqLwogICAgICAgIF9kZXNlcmlhbGl6ZVZhbHVlKHZhbHVlLCB0eXBlKSB7CiAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgICAgY2FzZSBCb29sZWFuOgogICAgICAgICAgICAgIHJldHVybiAodmFsdWUgIT09IG51bGwpOwogICAgICAgICAgICBjYXNlIE51bWJlcjoKICAgICAgICAgICAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgfQoKICAgICAgcmV0dXJuIFByb3BlcnRpZXNDaGFuZ2VkOwogICAgfSk7CgoKICB9KSgpOwoKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgbGV0IGNhc2VNYXAgPSBQb2x5bWVyLkNhc2VNYXA7CgogIC8vIFNhdmUgbWFwIG9mIG5hdGl2ZSBwcm9wZXJ0aWVzOyB0aGlzIGZvcm1zIGEgYmxhY2tsaXN0IG9yIHByb3BlcnRpZXMKICAvLyB0aGF0IHdvbid0IGhhdmUgdGhlaXIgdmFsdWVzICJzYXZlZCIgYnkgYHNhdmVBY2Nlc3NvclZhbHVlYCwgc2luY2UKICAvLyByZWFkaW5nIGZyb20gYW4gSFRNTEVsZW1lbnQgYWNjZXNzb3IgZnJvbSB0aGUgY29udGV4dCBvZiBhIHByb3RvdHlwZSB0aHJvd3MKICBjb25zdCBuYXRpdmVQcm9wZXJ0aWVzID0ge307CiAgbGV0IHByb3RvID0gSFRNTEVsZW1lbnQucHJvdG90eXBlOwogIHdoaWxlIChwcm90bykgewogICAgbGV0IHByb3BzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMocHJvdG8pOwogICAgZm9yIChsZXQgaT0wOyBpPHByb3BzLmxlbmd0aDsgaSsrKSB7CiAgICAgIG5hdGl2ZVByb3BlcnRpZXNbcHJvcHNbaV1dID0gdHJ1ZTsKICAgIH0KICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTsKICB9CgogIC8qKgogICAqIFVzZWQgdG8gc2F2ZSB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSB0aGF0IHdpbGwgYmUgb3ZlcnJpZGRlbiB3aXRoCiAgICogYW4gYWNjZXNzb3IuIElmIHRoZSBgbW9kZWxgIGlzIGEgcHJvdG90eXBlLCB0aGUgdmFsdWVzIHdpbGwgYmUgc2F2ZWQKICAgKiBpbiBgX19kYXRhUHJvdG9gLCBhbmQgaXQncyB1cCB0byB0aGUgdXNlciAob3IgZG93bnN0cmVhbSBtaXhpbikgdG8KICAgKiBkZWNpZGUgaG93L3doZW4gdG8gc2V0IHRoZXNlIHZhbHVlcyBiYWNrIGludG8gdGhlIGFjY2Vzc29ycy4KICAgKiBJZiBgbW9kZWxgIGlzIGFscmVhZHkgYW4gaW5zdGFuY2UgKGl0IGhhcyBhIGBfX2RhdGFgIHByb3BlcnR5KSwgdGhlbgogICAqIHRoZSB2YWx1ZSB3aWxsIGJlIHNldCBhcyBhIHBlbmRpbmcgcHJvcGVydHksIG1lYW5pbmcgdGhlIHVzZXIgc2hvdWxkCiAgICogY2FsbCBgX2ludmFsaWRhdGVQcm9wZXJ0aWVzYCBvciBgX2ZsdXNoUHJvcGVydGllc2AgdG8gdGFrZSBlZmZlY3QKICAgKgogICAqIEBwYXJhbSB7T2JqZWN0fSBtb2RlbCBQcm90b3R5cGUgb3IgaW5zdGFuY2UKICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTmFtZSBvZiBwcm9wZXJ0eQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBzYXZlQWNjZXNzb3JWYWx1ZShtb2RlbCwgcHJvcGVydHkpIHsKICAgIC8vIERvbid0IHJlYWQvc3RvcmUgdmFsdWUgZm9yIGFueSBuYXRpdmUgcHJvcGVydGllcyBzaW5jZSB0aGV5IGNvdWxkIHRocm93CiAgICBpZiAoIW5hdGl2ZVByb3BlcnRpZXNbcHJvcGVydHldKSB7CiAgICAgIGxldCB2YWx1ZSA9IG1vZGVsW3Byb3BlcnR5XTsKICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICBpZiAobW9kZWwuX19kYXRhKSB7CiAgICAgICAgICAvLyBBZGRpbmcgYWNjZXNzb3IgdG8gaW5zdGFuY2U7IHVwZGF0ZSB0aGUgcHJvcGVydHkKICAgICAgICAgIC8vIEl0IGlzIHRoZSB1c2VyJ3MgcmVzcG9uc2liaWxpdHkgdG8gY2FsbCBfZmx1c2hQcm9wZXJ0aWVzCiAgICAgICAgICBtb2RlbC5fc2V0UGVuZGluZ1Byb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIEFkZGluZyBhY2Nlc3NvciB0byBwcm90bzsgc2F2ZSBwcm90bydzIHZhbHVlIGZvciBpbnN0YW5jZS10aW1lIHVzZQogICAgICAgICAgaWYgKCFtb2RlbC5fX2RhdGFQcm90bykgewogICAgICAgICAgICBtb2RlbC5fX2RhdGFQcm90byA9IHt9OwogICAgICAgICAgfSBlbHNlIGlmICghbW9kZWwuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX19kYXRhUHJvdG8nLCBtb2RlbCkpKSB7CiAgICAgICAgICAgIG1vZGVsLl9fZGF0YVByb3RvID0gT2JqZWN0LmNyZWF0ZShtb2RlbC5fX2RhdGFQcm90byk7CiAgICAgICAgICB9CiAgICAgICAgICBtb2RlbC5fX2RhdGFQcm90b1twcm9wZXJ0eV0gPSB2YWx1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9CgogIC8qKgogICAqIEVsZW1lbnQgY2xhc3MgbWl4aW4gdGhhdCBwcm92aWRlcyBiYXNpYyBtZXRhLXByb2dyYW1taW5nIGZvciBjcmVhdGluZyBvbmUKICAgKiBvciBtb3JlIHByb3BlcnR5IGFjY2Vzc29ycyAoZ2V0dGVyL3NldHRlciBwYWlyKSB0aGF0IGVucXVldWUgYW4gYXN5bmMKICAgKiAoYmF0Y2hlZCkgYF9wcm9wZXJ0aWVzQ2hhbmdlZGAgY2FsbGJhY2suCiAgICoKICAgKiBGb3IgYmFzaWMgdXNhZ2Ugb2YgdGhpcyBtaXhpbjoKICAgKiAKICAgKiAtICAgRGVjbGFyZSBhdHRyaWJ1dGVzIHRvIG9ic2VydmUgdmlhIHRoZSBzdGFuZGFyZCBgc3RhdGljIGdldCBvYnNlcnZlZEF0dHJpYnV0ZXMoKWAuIFVzZQogICAqICAgICBgZGFzaC1jYXNlYCBhdHRyaWJ1dGUgbmFtZXMgdG8gcmVwcmVzZW50IGBjYW1lbENhc2VgIHByb3BlcnR5IG5hbWVzLiAKICAgKiAtICAgSW1wbGVtZW50IHRoZSBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBjYWxsYmFjayBvbiB0aGUgY2xhc3MuCiAgICogLSAgIENhbGwgYE15Q2xhc3MuY3JlYXRlUHJvcGVydGllc0ZvckF0dHJpYnV0ZXMoKWAgKipvbmNlKiogb24gdGhlIGNsYXNzIHRvIGdlbmVyYXRlIAogICAqICAgICBwcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIGVhY2ggb2JzZXJ2ZWQgYXR0cmlidXRlLiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSB0aGUgZmlyc3QgCiAgICogICAgIGluc3RhbmNlIGlzIGNyZWF0ZWQsIGZvciBleGFtcGxlLCBieSBjYWxsaW5nIGl0IGJlZm9yZSBjYWxsaW5nIGBjdXN0b21FbGVtZW50cy5kZWZpbmVgLgogICAqICAgICBJdCBjYW4gYWxzbyBiZSBjYWxsZWQgbGF6aWx5IGZyb20gdGhlIGVsZW1lbnQncyBgY29uc3RydWN0b3JgLCBhcyBsb25nIGFzIGl0J3MgZ3VhcmRlZCBzbwogICAqICAgICB0aGF0IHRoZSBjYWxsIGlzIG9ubHkgbWFkZSBvbmNlLCB3aGVuIHRoZSBmaXJzdCBpbnN0YW5jZSBpcyBjcmVhdGVkLgogICAqIC0gICBDYWxsIGB0aGlzLl9lbmFibGVQcm9wZXJ0aWVzKClgIGluIHRoZSBlbGVtZW50J3MgYGNvbm5lY3RlZENhbGxiYWNrYCB0byBlbmFibGUgCiAgICogICAgIHRoZSBhY2Nlc3NvcnMuCiAgICoKICAgKiBBbnkgYG9ic2VydmVkQXR0cmlidXRlc2Agd2lsbCBhdXRvbWF0aWNhbGx5IGJlCiAgICogZGVzZXJpYWxpemVkIHZpYSBgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrYCBhbmQgc2V0IHRvIHRoZSBhc3NvY2lhdGVkCiAgICogcHJvcGVydHkgdXNpbmcgYGRhc2gtY2FzZWAtdG8tYGNhbWVsQ2FzZWAgY29udmVudGlvbi4KICAgKgogICAqIEBtaXhpbkZ1bmN0aW9uCiAgICogQHBvbHltZXIKICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuUHJvcGVydGllc0NoYW5nZWQKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IEVsZW1lbnQgY2xhc3MgbWl4aW4gZm9yIHJlYWN0aW5nIHRvIHByb3BlcnR5IGNoYW5nZXMgZnJvbQogICAqICAgZ2VuZXJhdGVkIHByb3BlcnR5IGFjY2Vzc29ycy4KICAgKi8KICBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzID0gUG9seW1lci5kZWR1cGluZ01peGluKHN1cGVyQ2xhc3MgPT4gewoKICAgIC8qKgogICAgICogQGNvbnN0cnVjdG9yCiAgICAgKiBAZXh0ZW5kcyB7c3VwZXJDbGFzc30KICAgICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX1Byb3BlcnRpZXNDaGFuZ2VkfQogICAgICogQHVucmVzdHJpY3RlZAogICAgICogQHByaXZhdGUKICAgICAqLwogICAgIGNvbnN0IGJhc2UgPSBQb2x5bWVyLlByb3BlcnRpZXNDaGFuZ2VkKHN1cGVyQ2xhc3MpOwoKICAgIC8qKgogICAgICogQHBvbHltZXIKICAgICAqIEBtaXhpbkNsYXNzCiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0eUFjY2Vzc29yc30KICAgICAqIEBleHRlbmRzIHtiYXNlfQogICAgICogQHVucmVzdHJpY3RlZAogICAgICovCiAgICBjbGFzcyBQcm9wZXJ0eUFjY2Vzc29ycyBleHRlbmRzIGJhc2UgewoKICAgICAgLyoqCiAgICAgICAqIEdlbmVyYXRlcyBwcm9wZXJ0eSBhY2Nlc3NvcnMgZm9yIGFsbCBhdHRyaWJ1dGVzIGluIHRoZSBzdGFuZGFyZAogICAgICAgKiBzdGF0aWMgYG9ic2VydmVkQXR0cmlidXRlc2AgYXJyYXkuCiAgICAgICAqCiAgICAgICAqIEF0dHJpYnV0ZSBuYW1lcyBhcmUgbWFwcGVkIHRvIHByb3BlcnR5IG5hbWVzIHVzaW5nIHRoZSBgZGFzaC1jYXNlYCB0bwogICAgICAgKiBgY2FtZWxDYXNlYCBjb252ZW50aW9uCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBzdGF0aWMgY3JlYXRlUHJvcGVydGllc0ZvckF0dHJpYnV0ZXMoKSB7CiAgICAgICAgbGV0IGEkID0gdGhpcy5vYnNlcnZlZEF0dHJpYnV0ZXM7CiAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgYSQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHRoaXMucHJvdG90eXBlLl9jcmVhdGVQcm9wZXJ0eUFjY2Vzc29yKGNhc2VNYXAuZGFzaFRvQ2FtZWxDYXNlKGEkW2ldKSk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhbiBhdHRyaWJ1dGUgbmFtZSB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICogQnkgZGVmYXVsdCwgY29udmVydHMgY2FtZWwgdG8gZGFzaCBjYXNlLCBlLmcuIGBmb29CYXJgIHRvIGBmb28tYmFyYC4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IHRvIGNvbnZlcnQKICAgICAgICogQHJldHVybiB7c3RyaW5nfSBBdHRyaWJ1dGUgbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIGF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShwcm9wZXJ0eSkgewogICAgICAgIHJldHVybiBjYXNlTWFwLmNhbWVsVG9EYXNoQ2FzZShwcm9wZXJ0eSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgUHJvcGVydGllc0NoYW5nZWQgaW1wbGVtZW50YXRpb24gdG8gaW5pdGlhbGl6ZSB2YWx1ZXMgZm9yCiAgICAgICAqIGFjY2Vzc29ycyBjcmVhdGVkIGZvciB2YWx1ZXMgdGhhdCBhbHJlYWR5IGV4aXN0ZWQgb24gdGhlIGVsZW1lbnQKICAgICAgICogcHJvdG90eXBlLgogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfaW5pdGlhbGl6ZVByb3BlcnRpZXMoKSB7CiAgICAgICAgaWYgKHRoaXMuX19kYXRhUHJvdG8pIHsKICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXModGhpcy5fX2RhdGFQcm90byk7CiAgICAgICAgICB0aGlzLl9fZGF0YVByb3RvID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgc3VwZXIuX2luaXRpYWxpemVQcm9wZXJ0aWVzKCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDYWxsZWQgYXQgaW5zdGFuY2UgdGltZSB3aXRoIGJhZyBvZiBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBvdmVyd3JpdHRlbgogICAgICAgKiBieSBhY2Nlc3NvcnMgb24gdGhlIHByb3RvdHlwZSB3aGVuIGFjY2Vzc29ycyB3ZXJlIGNyZWF0ZWQuCiAgICAgICAqCiAgICAgICAqIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHNldHMgdGhlc2UgcHJvcGVydGllcyBiYWNrIGludG8gdGhlCiAgICAgICAqIHNldHRlciBhdCBpbnN0YW5jZSB0aW1lLiAgVGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYW4gb3ZlcnJpZGUKICAgICAgICogcG9pbnQgZm9yIGN1c3RvbWl6aW5nIG9yIHByb3ZpZGluZyBtb3JlIGVmZmljaWVudCBpbml0aWFsaXphdGlvbi4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBwcm9wZXJ0eSB2YWx1ZXMgdGhhdCB3ZXJlIG92ZXJ3cml0dGVuCiAgICAgICAqICAgd2hlbiBjcmVhdGluZyBwcm9wZXJ0eSBhY2Nlc3NvcnMuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9pbml0aWFsaXplUHJvdG9Qcm9wZXJ0aWVzKHByb3BzKSB7CiAgICAgICAgZm9yIChsZXQgcCBpbiBwcm9wcykgewogICAgICAgICAgdGhpcy5fc2V0UHJvcGVydHkocCwgcHJvcHNbcF0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEVuc3VyZXMgdGhlIGVsZW1lbnQgaGFzIHRoZSBnaXZlbiBhdHRyaWJ1dGUuIElmIGl0IGRvZXMgbm90LAogICAgICAgKiBhc3NpZ25zIHRoZSBnaXZlbiB2YWx1ZSB0byB0aGUgYXR0cmlidXRlLgogICAgICAgKgogICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30gQ2xvc3VyZSBjYW4ndCBmaWd1cmUgb3V0IGB0aGlzYCBpcyBpbmZhY3QgYW4gZWxlbWVudAogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYXR0cmlidXRlIE5hbWUgb2YgYXR0cmlidXRlIHRvIGVuc3VyZSBpcyBzZXQuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX2Vuc3VyZUF0dHJpYnV0ZShhdHRyaWJ1dGUsIHZhbHVlKSB7CiAgICAgICAgY29uc3QgZWwgPSAvKiogQHR5cGUgeyFIVE1MRWxlbWVudH0gKi8odGhpcyk7CiAgICAgICAgaWYgKCFlbC5oYXNBdHRyaWJ1dGUoYXR0cmlidXRlKSkgewogICAgICAgICAgdGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoZWwsIHZhbHVlLCBhdHRyaWJ1dGUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBQcm9wZXJ0aWVzQ2hhbmdlZCBpbXBsZW1lbnRpb24gdG8gc2VyaWFsaXplIG9iamVjdHMgYXMgSlNPTi4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBQcm9wZXJ0eSB2YWx1ZSB0byBzZXJpYWxpemUuCiAgICAgICAqIEByZXR1cm4ge3N0cmluZyB8IHVuZGVmaW5lZH0gU3RyaW5nIHNlcmlhbGl6ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcHJvcGVydHkgdmFsdWUuCiAgICAgICAqLwogICAgICBfc2VyaWFsaXplVmFsdWUodmFsdWUpIHsKICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1mYWxsdGhyb3VnaCAqLwogICAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7CiAgICAgICAgICBjYXNlICdvYmplY3QnOgogICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKICAgICAgICAgICAgICB9IGNhdGNoKHgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICByZXR1cm4gc3VwZXIuX3NlcmlhbGl6ZVZhbHVlKHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIHR5cGVkIEphdmFTY3JpcHQgdmFsdWUuCiAgICAgICAqCiAgICAgICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBQb2x5bWVyIHdoZW4gcmVhZGluZyBIVE1MIGF0dHJpYnV0ZSB2YWx1ZXMgdG8KICAgICAgICogSlMgcHJvcGVydGllcy4gIFVzZXJzIG1heSBvdmVycmlkZSB0aGlzIG1ldGhvZCBvbiBQb2x5bWVyIGVsZW1lbnQKICAgICAgICogcHJvdG90eXBlcyB0byBwcm92aWRlIGRlc2VyaWFsaXphdGlvbiBmb3IgY3VzdG9tIGB0eXBlYHMuICBOb3RlLAogICAgICAgKiB0aGUgYHR5cGVgIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgYHR5cGVgIGZpZWxkIHByb3ZpZGVkIGluIHRoZQogICAgICAgKiBgcHJvcGVydGllc2AgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGEgZ2l2ZW4gcHJvcGVydHksIGFuZCBpcwogICAgICAgKiBieSBjb252ZW50aW9uIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIHR5cGUgdG8gZGVzZXJpYWxpemUuCiAgICAgICAqCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7P3N0cmluZ30gdmFsdWUgQXR0cmlidXRlIHZhbHVlIHRvIGRlc2VyaWFsaXplLgogICAgICAgKiBAcGFyYW0geyo9fSB0eXBlIFR5cGUgdG8gZGVzZXJpYWxpemUgdGhlIHN0cmluZyB0by4KICAgICAgICogQHJldHVybiB7Kn0gVHlwZWQgdmFsdWUgZGVzZXJpYWxpemVkIGZyb20gdGhlIHByb3ZpZGVkIHN0cmluZy4KICAgICAgICovCiAgICAgIF9kZXNlcmlhbGl6ZVZhbHVlKHZhbHVlLCB0eXBlKSB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHR5cGUgeyp9CiAgICAgICAgICovCiAgICAgICAgbGV0IG91dFZhbHVlOwogICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICAgY2FzZSBPYmplY3Q6CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgb3V0VmFsdWUgPSBKU09OLnBhcnNlKC8qKiBAdHlwZSB7c3RyaW5nfSAqLyh2YWx1ZSkpOwogICAgICAgICAgICB9IGNhdGNoKHgpIHsKICAgICAgICAgICAgICAvLyBhbGxvdyBub24tSlNPTiBsaXRlcmFscyBsaWtlIFN0cmluZ3MgYW5kIE51bWJlcnMKICAgICAgICAgICAgICBvdXRWYWx1ZSA9IHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBBcnJheToKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBvdXRWYWx1ZSA9IEpTT04ucGFyc2UoLyoqIEB0eXBlIHtzdHJpbmd9ICovKHZhbHVlKSk7CiAgICAgICAgICAgIH0gY2F0Y2goeCkgewogICAgICAgICAgICAgIG91dFZhbHVlID0gbnVsbDsKICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFBvbHltZXI6OkF0dHJpYnV0ZXM6IGNvdWxkbid0IGRlY29kZSBBcnJheSBhcyBKU09OOiAke3ZhbHVlfWApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBEYXRlOgogICAgICAgICAgICBvdXRWYWx1ZSA9IGlzTmFOKHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiBOdW1iZXIodmFsdWUpOwogICAgICAgICAgICBvdXRWYWx1ZSA9IG5ldyBEYXRlKG91dFZhbHVlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBvdXRWYWx1ZSA9IHN1cGVyLl9kZXNlcmlhbGl6ZVZhbHVlKHZhbHVlLCB0eXBlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvdXRWYWx1ZTsKICAgICAgfQogICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWZhbGx0aHJvdWdoICovCgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIFByb3BlcnRpZXNDaGFuZ2VkIGltcGxlbWVudGF0aW9uIHRvIHNhdmUgZXhpc3RpbmcgcHJvdG90eXBlCiAgICAgICAqIHByb3BlcnR5IHZhbHVlIHNvIHRoYXQgaXQgY2FuIGJlIHJlc2V0LgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgTmFtZSBvZiB0aGUgcHJvcGVydHkKICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gcmVhZE9ubHkgV2hlbiB0cnVlLCBubyBzZXR0ZXIgaXMgY3JlYXRlZAogICAgICAgKgogICAgICAgKiBXaGVuIGNhbGxpbmcgb24gYSBwcm90b3R5cGUsIGFueSBvdmVyd3JpdHRlbiB2YWx1ZXMgYXJlIHNhdmVkIGluCiAgICAgICAqIGBfX2RhdGFQcm90b2AsIGFuZCBpdCBpcyB1cCB0byB0aGUgc3ViY2xhc3NlciB0byBkZWNpZGUgaG93L3doZW4KICAgICAgICogdG8gc2V0IHRob3NlIHByb3BlcnRpZXMgYmFjayBpbnRvIHRoZSBhY2Nlc3Nvci4gIFdoZW4gY2FsbGluZyBvbiBhbgogICAgICAgKiBpbnN0YW5jZSwgdGhlIG92ZXJ3cml0dGVuIHZhbHVlIGlzIHNldCB2aWEgYF9zZXRQZW5kaW5nUHJvcGVydHlgLAogICAgICAgKiBhbmQgdGhlIHVzZXIgc2hvdWxkIGNhbGwgYF9pbnZhbGlkYXRlUHJvcGVydGllc2Agb3IgYF9mbHVzaFByb3BlcnRpZXNgCiAgICAgICAqIGZvciB0aGUgdmFsdWVzIHRvIHRha2UgZWZmZWN0LgogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfZGVmaW5lUHJvcGVydHlBY2Nlc3Nvcihwcm9wZXJ0eSwgcmVhZE9ubHkpIHsKICAgICAgICBzYXZlQWNjZXNzb3JWYWx1ZSh0aGlzLCBwcm9wZXJ0eSk7CiAgICAgICAgc3VwZXIuX2RlZmluZVByb3BlcnR5QWNjZXNzb3IocHJvcGVydHksIHJlYWRPbmx5KTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxpYnJhcnkgY3JlYXRlZCBhbiBhY2Nlc3NvciBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgbmFtZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGFuIGFjY2Vzc29yIHdhcyBjcmVhdGVkCiAgICAgICAqLwogICAgICBfaGFzQWNjZXNzb3IocHJvcGVydHkpIHsKICAgICAgICByZXR1cm4gdGhpcy5fX2RhdGFIYXNBY2Nlc3NvciAmJiB0aGlzLl9fZGF0YUhhc0FjY2Vzc29yW3Byb3BlcnR5XTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGhhcyBhIHBlbmRpbmcgY2hhbmdlLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wZXJ0eSBuYW1lCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgcHJvcGVydHkgaGFzIGEgcGVuZGluZyBjaGFuZ2UKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2lzUHJvcGVydHlQZW5kaW5nKHByb3ApIHsKICAgICAgICByZXR1cm4gQm9vbGVhbih0aGlzLl9fZGF0YVBlbmRpbmcgJiYgKHByb3AgaW4gdGhpcy5fX2RhdGFQZW5kaW5nKSk7CiAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIFByb3BlcnR5QWNjZXNzb3JzOwoKICB9KTsKCn0pKCk7CgoKKGZ1bmN0aW9uKCkgewoKICAndXNlIHN0cmljdCc7CgogIGNvbnN0IHdhbGtlciA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIE5vZGVGaWx0ZXIuU0hPV19BTEwsCiAgICAgIG51bGwsIGZhbHNlKTsKCiAgLy8gMS54IGJhY2t3YXJkcy1jb21wYXRpYmxlIGF1dG8td3JhcHBlciBmb3IgdGVtcGxhdGUgdHlwZSBleHRlbnNpb25zCiAgLy8gVGhpcyBpcyBhIGNsZWFyIGxheWVyaW5nIHZpb2xhdGlvbiBhbmQgZ2l2ZXMgZmF2b3JlZC1uYXRpb24gc3RhdHVzIHRvCiAgLy8gZG9tLWlmIGFuZCBkb20tcmVwZWF0IHRlbXBsYXRlcy4gIFRoaXMgaXMgYSBjb25jZWl0IHdlJ3JlIGNob29zaW5nIHRvIGtlZXAKICAvLyBhLikgdG8gZWFzZSAxLnggYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZHVlIHRvIGxvc3Mgb2YgYGlzYCwgYW5kCiAgLy8gYi4pIHRvIG1haW50YWluIGlmL3JlcGVhdCBjYXBhYmlsaXR5IGluIHBhcnNlci1jb25zdHJhaW5lZCBlbGVtZW50cwogIC8vICAgICAoZS5nLiB0YWJsZSwgc2VsZWN0KSBpbiBsaWV1IG9mIG5hdGl2ZSBDRSB0eXBlIGV4dGVuc2lvbnMgd2l0aG91dAogIC8vICAgICBtYXNzaXZlIG5ldyBpbnZlbnRpb24gaW4gdGhpcyBzcGFjZSAoZS5nLiBkaXJlY3RpdmUgc3lzdGVtKQogIGNvbnN0IHRlbXBsYXRlRXh0ZW5zaW9ucyA9IHsKICAgICdkb20taWYnOiB0cnVlLAogICAgJ2RvbS1yZXBlYXQnOiB0cnVlCiAgfTsKICBmdW5jdGlvbiB3cmFwVGVtcGxhdGVFeHRlbnNpb24obm9kZSkgewogICAgbGV0IGlzID0gbm9kZS5nZXRBdHRyaWJ1dGUoJ2lzJyk7CiAgICBpZiAoaXMgJiYgdGVtcGxhdGVFeHRlbnNpb25zW2lzXSkgewogICAgICBsZXQgdCA9IG5vZGU7CiAgICAgIHQucmVtb3ZlQXR0cmlidXRlKCdpcycpOwogICAgICBub2RlID0gdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXMpOwogICAgICB0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5vZGUsIHQpOwogICAgICBub2RlLmFwcGVuZENoaWxkKHQpOwogICAgICB3aGlsZSh0LmF0dHJpYnV0ZXMubGVuZ3RoKSB7CiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUodC5hdHRyaWJ1dGVzWzBdLm5hbWUsIHQuYXR0cmlidXRlc1swXS52YWx1ZSk7CiAgICAgICAgdC5yZW1vdmVBdHRyaWJ1dGUodC5hdHRyaWJ1dGVzWzBdLm5hbWUpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gbm9kZTsKICB9CgogIGZ1bmN0aW9uIGZpbmRUZW1wbGF0ZU5vZGUocm9vdCwgbm9kZUluZm8pIHsKICAgIC8vIHJlY3Vyc2l2ZWx5IGFzY2VuZCB0cmVlIHVudGlsIHdlIGhpdCByb290CiAgICBsZXQgcGFyZW50ID0gbm9kZUluZm8ucGFyZW50SW5mbyAmJiBmaW5kVGVtcGxhdGVOb2RlKHJvb3QsIG5vZGVJbmZvLnBhcmVudEluZm8pOwogICAgLy8gdW53aW5kIHRoZSBzdGFjaywgcmV0dXJuaW5nIHRoZSBpbmRleGVkIG5vZGUgYXQgZWFjaCBsZXZlbAogICAgaWYgKHBhcmVudCkgewogICAgICAvLyBub3RlOiBtYXJnaW5hbGx5IGZhc3RlciB0aGFuIGluZGV4aW5nIHZpYSBjaGlsZE5vZGVzCiAgICAgIC8vIChodHRwOi8vanNwZXJmLmNvbS9jaGlsZG5vZGVzLWxvb2t1cCkKICAgICAgd2Fsa2VyLmN1cnJlbnROb2RlID0gcGFyZW50OwogICAgICBmb3IgKGxldCBuPXdhbGtlci5maXJzdENoaWxkKCksIGk9MDsgbjsgbj13YWxrZXIubmV4dFNpYmxpbmcoKSkgewogICAgICAgIGlmIChub2RlSW5mby5wYXJlbnRJbmRleCA9PT0gaSsrKSB7CiAgICAgICAgICByZXR1cm4gbjsKICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiByb290OwogICAgfQogIH0KCiAgLy8gY29uc3RydWN0IGAkYCBtYXAgKGZyb20gaWQgYW5ub3RhdGlvbnMpCiAgZnVuY3Rpb24gYXBwbHlJZFRvTWFwKGluc3QsIG1hcCwgbm9kZSwgbm9kZUluZm8pIHsKICAgIGlmIChub2RlSW5mby5pZCkgewogICAgICBtYXBbbm9kZUluZm8uaWRdID0gbm9kZTsKICAgIH0KICB9CgogIC8vIGluc3RhbGwgZXZlbnQgbGlzdGVuZXJzIChmcm9tIGV2ZW50IGFubm90YXRpb25zKQogIGZ1bmN0aW9uIGFwcGx5RXZlbnRMaXN0ZW5lcihpbnN0LCBub2RlLCBub2RlSW5mbykgewogICAgaWYgKG5vZGVJbmZvLmV2ZW50cyAmJiBub2RlSW5mby5ldmVudHMubGVuZ3RoKSB7CiAgICAgIGZvciAobGV0IGo9MCwgZSQ9bm9kZUluZm8uZXZlbnRzLCBlOyAoajxlJC5sZW5ndGgpICYmIChlPWUkW2pdKTsgaisrKSB7CiAgICAgICAgaW5zdC5fYWRkTWV0aG9kRXZlbnRMaXN0ZW5lclRvTm9kZShub2RlLCBlLm5hbWUsIGUudmFsdWUsIGluc3QpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBwdXNoIGNvbmZpZ3VyYXRpb24gcmVmZXJlbmNlcyBhdCBjb25maWd1cmUgdGltZQogIGZ1bmN0aW9uIGFwcGx5VGVtcGxhdGVDb250ZW50KGluc3QsIG5vZGUsIG5vZGVJbmZvKSB7CiAgICBpZiAobm9kZUluZm8udGVtcGxhdGVJbmZvKSB7CiAgICAgIG5vZGUuX3RlbXBsYXRlSW5mbyA9IG5vZGVJbmZvLnRlbXBsYXRlSW5mbzsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGNyZWF0ZU5vZGVFdmVudEhhbmRsZXIoY29udGV4dCwgZXZlbnROYW1lLCBtZXRob2ROYW1lKSB7CiAgICAvLyBJbnN0YW5jZXMgY2FuIG9wdGlvbmFsbHkgaGF2ZSBhIF9tZXRob2RIb3N0IHdoaWNoIGFsbG93cyByZWRpcmVjdGluZyB3aGVyZQogICAgLy8gdG8gZmluZCBtZXRob2RzLiBDdXJyZW50bHkgdXNlZCBieSBgdGVtcGxhdGl6ZWAuCiAgICBjb250ZXh0ID0gY29udGV4dC5fbWV0aG9kSG9zdCB8fCBjb250ZXh0OwogICAgbGV0IGhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgIGlmIChjb250ZXh0W21ldGhvZE5hbWVdKSB7CiAgICAgICAgY29udGV4dFttZXRob2ROYW1lXShlLCBlLmRldGFpbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc29sZS53YXJuKCdsaXN0ZW5lciBtZXRob2QgYCcgKyBtZXRob2ROYW1lICsgJ2Agbm90IGRlZmluZWQnKTsKICAgICAgfQogICAgfTsKICAgIHJldHVybiBoYW5kbGVyOwogIH0KCiAgLyoqCiAgICogRWxlbWVudCBtaXhpbiB0aGF0IHByb3ZpZGVzIGJhc2ljIHRlbXBsYXRlIHBhcnNpbmcgYW5kIHN0YW1waW5nLCBpbmNsdWRpbmcKICAgKiB0aGUgZm9sbG93aW5nIHRlbXBsYXRlLXJlbGF0ZWQgZmVhdHVyZXMgZm9yIHN0YW1wZWQgdGVtcGxhdGVzOgogICAqCiAgICogLSBEZWNsYXJhdGl2ZSBldmVudCBsaXN0ZW5lcnMgKGBvbi1ldmVudG5hbWU9Imxpc3RlbmVyImApCiAgICogLSBNYXAgb2Ygbm9kZSBpZCdzIHRvIHN0YW1wZWQgbm9kZSBpbnN0YW5jZXMgKGB0aGlzLiQuaWRgKQogICAqIC0gTmVzdGVkIHRlbXBsYXRlIGNvbnRlbnQgY2FjaGluZy9yZW1vdmFsIGFuZCByZS1pbnN0YWxsYXRpb24gKHBlcmZvcm1hbmNlCiAgICogICBvcHRpbWl6YXRpb24pCiAgICoKICAgKiBAbWl4aW5GdW5jdGlvbgogICAqIEBwb2x5bWVyCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBFbGVtZW50IGNsYXNzIG1peGluIHRoYXQgcHJvdmlkZXMgYmFzaWMgdGVtcGxhdGUgcGFyc2luZyBhbmQgc3RhbXBpbmcKICAgKi8KICBQb2x5bWVyLlRlbXBsYXRlU3RhbXAgPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgLyoqCiAgICAgKiBAcG9seW1lcgogICAgICogQG1peGluQ2xhc3MKICAgICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX1RlbXBsYXRlU3RhbXB9CiAgICAgKi8KICAgIGNsYXNzIFRlbXBsYXRlU3RhbXAgZXh0ZW5kcyBzdXBlckNsYXNzIHsKCiAgICAgIC8qKgogICAgICAgKiBTY2FucyBhIHRlbXBsYXRlIHRvIHByb2R1Y2UgdGVtcGxhdGUgbWV0YWRhdGEuCiAgICAgICAqCiAgICAgICAqIFRlbXBsYXRlLXNwZWNpZmljIG1ldGFkYXRhIGFyZSBzdG9yZWQgaW4gdGhlIG9iamVjdCByZXR1cm5lZCwgYW5kIG5vZGUtCiAgICAgICAqIHNwZWNpZmljIG1ldGFkYXRhIGFyZSBzdG9yZWQgaW4gb2JqZWN0cyBpbiBpdHMgZmxhdHRlbmVkIGBub2RlSW5mb0xpc3RgCiAgICAgICAqIGFycmF5LiAgT25seSBub2RlcyBpbiB0aGUgdGVtcGxhdGUgdGhhdCB3ZXJlIHBhcnNlZCBhcyBub2RlcyBvZgogICAgICAgKiBpbnRlcmVzdCBjb250YWluIGFuIG9iamVjdCBpbiBgbm9kZUluZm9MaXN0YC4gIEVhY2ggYG5vZGVJbmZvYCBvYmplY3QKICAgICAgICogY29udGFpbnMgYW4gYGluZGV4YCAoYGNoaWxkTm9kZXNgIGluZGV4IGluIHBhcmVudCkgYW5kIG9wdGlvbmFsbHkKICAgICAgICogYHBhcmVudGAsIHdoaWNoIHBvaW50cyB0byBub2RlIGluZm8gb2YgaXRzIHBhcmVudCAoaW5jbHVkaW5nIGl0cyBpbmRleCkuCiAgICAgICAqCiAgICAgICAqIFRoZSB0ZW1wbGF0ZSBtZXRhZGF0YSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGlzIG1ldGhvZCBoYXMgdGhlIGZvbGxvd2luZwogICAgICAgKiBzdHJ1Y3R1cmUgKG1hbnkgZmllbGRzIG9wdGlvbmFsKToKICAgICAgICoKICAgICAgICogYGBganMKICAgICAgICogICB7CiAgICAgICAqICAgICAvLyBGbGF0dGVuZWQgbGlzdCBvZiBub2RlIG1ldGFkYXRhIChmb3Igbm9kZXMgdGhhdCBnZW5lcmF0ZWQgbWV0YWRhdGEpCiAgICAgICAqICAgICBub2RlSW5mb0xpc3Q6IFsKICAgICAgICogICAgICAgewogICAgICAgKiAgICAgICAgIC8vIGBpZGAgYXR0cmlidXRlIGZvciBhbnkgbm9kZXMgd2l0aCBpZCdzIGZvciBnZW5lcmF0aW5nIGAkYCBtYXAKICAgICAgICogICAgICAgICBpZDoge3N0cmluZ30sCiAgICAgICAqICAgICAgICAgLy8gYG9uLWV2ZW50PSJoYW5kbGVyImAgbWV0YWRhdGEKICAgICAgICogICAgICAgICBldmVudHM6IFsKICAgICAgICogICAgICAgICAgIHsKICAgICAgICogICAgICAgICAgICAgbmFtZToge3N0cmluZ30sICAgLy8gZXZlbnQgbmFtZQogICAgICAgKiAgICAgICAgICAgICB2YWx1ZToge3N0cmluZ30sICAvLyBoYW5kbGVyIG1ldGhvZCBuYW1lCiAgICAgICAqICAgICAgICAgICB9LCAuLi4KICAgICAgICogICAgICAgICBdLAogICAgICAgKiAgICAgICAgIC8vIE5vdGVzIHdoZW4gdGhlIHRlbXBsYXRlIGNvbnRhaW5lZCBhIGA8c2xvdD5gIGZvciBzaGFkeSBET00KICAgICAgICogICAgICAgICAvLyBvcHRpbWl6YXRpb24gcHVycG9zZXMKICAgICAgICogICAgICAgICBoYXNJbnNlcnRpb25Qb2ludDoge2Jvb2xlYW59LAogICAgICAgKiAgICAgICAgIC8vIEZvciBuZXN0ZWQgYDx0ZW1wbGF0ZT5gYCBub2RlcywgbmVzdGVkIHRlbXBsYXRlIG1ldGFkYXRhCiAgICAgICAqICAgICAgICAgdGVtcGxhdGVJbmZvOiB7b2JqZWN0fSwgLy8gbmVzdGVkIHRlbXBsYXRlIG1ldGFkYXRhCiAgICAgICAqICAgICAgICAgLy8gTWV0YWRhdGEgdG8gYWxsb3cgZWZmaWNpZW50IHJldHJpZXZhbCBvZiBpbnN0YW5jZWQgbm9kZQogICAgICAgKiAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBtZXRhZGF0YQogICAgICAgKiAgICAgICAgIHBhcmVudEluZm86IHtudW1iZXJ9LCAgIC8vIHJlZmVyZW5jZSB0byBwYXJlbnQgbm9kZUluZm8+CiAgICAgICAqICAgICAgICAgcGFyZW50SW5kZXg6IHtudW1iZXJ9LCAgLy8gaW5kZXggaW4gcGFyZW50J3MgYGNoaWxkTm9kZXNgIGNvbGxlY3Rpb24KICAgICAgICogICAgICAgICBpbmZvSW5kZXg6IHtudW1iZXJ9LCAgICAvLyBpbmRleCBvZiB0aGlzIGBub2RlSW5mb2AgaW4gYHRlbXBsYXRlSW5mby5ub2RlSW5mb0xpc3RgCiAgICAgICAqICAgICAgIH0sCiAgICAgICAqICAgICAgIC4uLgogICAgICAgKiAgICAgXSwKICAgICAgICogICAgIC8vIFdoZW4gdHJ1ZSwgdGhlIHRlbXBsYXRlIGhhZCB0aGUgYHN0cmlwLXdoaXRlc3BhY2VgIGF0dHJpYnV0ZQogICAgICAgKiAgICAgLy8gb3Igd2FzIG5lc3RlZCBpbiBhIHRlbXBsYXRlIHdpdGggdGhhdCBzZXR0aW5nCiAgICAgICAqICAgICBzdHJpcFdoaXRlc3BhY2U6IHtib29sZWFufSwKICAgICAgICogICAgIC8vIEZvciBuZXN0ZWQgdGVtcGxhdGVzLCBuZXN0ZWQgdGVtcGxhdGUgY29udGVudCBpcyBtb3ZlZCBpbnRvCiAgICAgICAqICAgICAvLyBhIGRvY3VtZW50IGZyYWdtZW50IHN0b3JlZCBoZXJlOyB0aGlzIGlzIGFuIG9wdGltaXphdGlvbiB0bwogICAgICAgKiAgICAgLy8gYXZvaWQgdGhlIGNvc3Qgb2YgbmVzdGVkIHRlbXBsYXRlIGNsb25pbmcKICAgICAgICogICAgIGNvbnRlbnQ6IHtEb2N1bWVudEZyYWdtZW50fQogICAgICAgKiAgIH0KICAgICAgICogYGBgCiAgICAgICAqCiAgICAgICAqIFRoaXMgbWV0aG9kIGtpY2tzIG9mZiBhIHJlY3Vyc2l2ZSB0cmVld2FsayBhcyBmb2xsb3dzOgogICAgICAgKgogICAgICAgKiBgYGAKICAgICAgICogICAgX3BhcnNlVGVtcGxhdGUgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgICAgICogICAgICBfcGFyc2VUZW1wbGF0ZUNvbnRlbnQgICAgICAgICAgICAgIHwKICAgICAgICogICAgICAgIF9wYXJzZVRlbXBsYXRlTm9kZSAgPC0tLS0tLS0tLS0tLXwtLSsKICAgICAgICogICAgICAgICAgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZSAtLSsgIHwKICAgICAgICogICAgICAgICAgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzIC0tLS0tLS0tLSsKICAgICAgICogICAgICAgICAgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlcwogICAgICAgKiAgICAgICAgICAgIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZQogICAgICAgKgogICAgICAgKiBgYGAKICAgICAgICoKICAgICAgICogVGhlc2UgbWV0aG9kcyBtYXkgYmUgb3ZlcnJpZGRlbiB0byBhZGQgY3VzdG9tIG1ldGFkYXRhIGFib3V0IHRlbXBsYXRlcwogICAgICAgKiB0byBlaXRoZXIgYHRlbXBsYXRlSW5mb2Agb3IgYG5vZGVJbmZvYC4KICAgICAgICoKICAgICAgICogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIG1heSBiZSBkZXN0cnVjdGl2ZSB0byB0aGUgdGVtcGxhdGUsIGluIHRoYXQKICAgICAgICogZS5nLiBldmVudCBhbm5vdGF0aW9ucyBtYXkgYmUgcmVtb3ZlZCBhZnRlciBiZWluZyBub3RlZCBpbiB0aGUKICAgICAgICogdGVtcGxhdGUgbWV0YWRhdGEuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IUhUTUxUZW1wbGF0ZUVsZW1lbnR9IHRlbXBsYXRlIFRlbXBsYXRlIHRvIHBhcnNlCiAgICAgICAqIEBwYXJhbSB7VGVtcGxhdGVJbmZvPX0gb3V0ZXJUZW1wbGF0ZUluZm8gVGVtcGxhdGUgbWV0YWRhdGEgZnJvbSB0aGUgb3V0ZXIKICAgICAgICogICB0ZW1wbGF0ZSwgZm9yIHBhcnNpbmcgbmVzdGVkIHRlbXBsYXRlcwogICAgICAgKiBAcmV0dXJuIHshVGVtcGxhdGVJbmZvfSBQYXJzZWQgdGVtcGxhdGUgbWV0YWRhdGEKICAgICAgICovCiAgICAgIHN0YXRpYyBfcGFyc2VUZW1wbGF0ZSh0ZW1wbGF0ZSwgb3V0ZXJUZW1wbGF0ZUluZm8pIHsKICAgICAgICAvLyBzaW5jZSBhIHRlbXBsYXRlIG1heSBiZSByZS11c2VkLCBtZW1vLWl6ZSBtZXRhZGF0YQogICAgICAgIGlmICghdGVtcGxhdGUuX3RlbXBsYXRlSW5mbykgewogICAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IHRlbXBsYXRlLl90ZW1wbGF0ZUluZm8gPSB7fTsKICAgICAgICAgIHRlbXBsYXRlSW5mby5ub2RlSW5mb0xpc3QgPSBbXTsKICAgICAgICAgIHRlbXBsYXRlSW5mby5zdHJpcFdoaXRlU3BhY2UgPSBQb2x5bWVyLmxlZ2FjeU9wdGltaXphdGlvbnMgfHwKICAgICAgICAgICAgKG91dGVyVGVtcGxhdGVJbmZvICYmIG91dGVyVGVtcGxhdGVJbmZvLnN0cmlwV2hpdGVTcGFjZSkgfHwKICAgICAgICAgICAgdGVtcGxhdGUuaGFzQXR0cmlidXRlKCdzdHJpcC13aGl0ZXNwYWNlJyk7CiAgICAgICAgICB0aGlzLl9wYXJzZVRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZSwgdGVtcGxhdGVJbmZvLCB7cGFyZW50OiBudWxsfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0ZW1wbGF0ZS5fdGVtcGxhdGVJbmZvOwogICAgICB9CgogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHRlbXBsYXRlLCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlKHRlbXBsYXRlLmNvbnRlbnQsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8pOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUGFyc2VzIHRlbXBsYXRlIG5vZGUgYW5kIGFkZHMgdGVtcGxhdGUgYW5kIG5vZGUgbWV0YWRhdGEgYmFzZWQgb24KICAgICAgICogdGhlIGN1cnJlbnQgbm9kZSwgYW5kIGl0cyBgY2hpbGROb2Rlc2AgYW5kIGBhdHRyaWJ1dGVzYC4KICAgICAgICoKICAgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIG92ZXJyaWRkZW4gdG8gYWRkIGN1c3RvbSBub2RlIG9yIHRlbXBsYXRlIHNwZWNpZmljCiAgICAgICAqIG1ldGFkYXRhIGJhc2VkIG9uIHRoaXMgbm9kZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtOb2RlfSBub2RlIE5vZGUgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHshVGVtcGxhdGVJbmZvfSB0ZW1wbGF0ZUluZm8gVGVtcGxhdGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUKICAgICAgICogQHBhcmFtIHshTm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgdmlzaXRlZCBub2RlIGFkZGVkIG5vZGUtc3BlY2lmaWMKICAgICAgICogICBtZXRhZGF0YSB0byBgbm9kZUluZm9gCiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlKG5vZGUsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8pIHsKICAgICAgICBsZXQgbm90ZWQ7CiAgICAgICAgbGV0IGVsZW1lbnQgPSAvKiogQHR5cGUge0VsZW1lbnR9ICovKG5vZGUpOwogICAgICAgIGlmIChlbGVtZW50LmxvY2FsTmFtZSA9PSAndGVtcGxhdGUnICYmICFlbGVtZW50Lmhhc0F0dHJpYnV0ZSgncHJlc2VydmUtY29udGVudCcpKSB7CiAgICAgICAgICBub3RlZCA9IHRoaXMuX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShlbGVtZW50LCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvKSB8fCBub3RlZDsKICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQubG9jYWxOYW1lID09PSAnc2xvdCcpIHsKICAgICAgICAgIC8vIEZvciBTaGFkeURvbSBvcHRpbWl6YXRpb24sIGluZGljYXRpbmcgdGhlcmUgaXMgYW4gaW5zZXJ0aW9uIHBvaW50CiAgICAgICAgICB0ZW1wbGF0ZUluZm8uaGFzSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICB3YWxrZXIuY3VycmVudE5vZGUgPSBlbGVtZW50OwogICAgICAgIGlmICh3YWxrZXIuZmlyc3RDaGlsZCgpKSB7CiAgICAgICAgICBub3RlZCA9IHRoaXMuX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKGVsZW1lbnQsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8pIHx8IG5vdGVkOwogICAgICAgIH0KICAgICAgICBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGVzICYmIGVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7CiAgICAgICAgICBub3RlZCA9IHRoaXMuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlcyhlbGVtZW50LCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvKSB8fCBub3RlZDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vdGVkOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUGFyc2VzIHRlbXBsYXRlIGNoaWxkIG5vZGVzIGZvciB0aGUgZ2l2ZW4gcm9vdCBub2RlLgogICAgICAgKgogICAgICAgKiBUaGlzIG1ldGhvZCBhbHNvIHdyYXBzIHdoaXRlbGlzdGVkIGxlZ2FjeSB0ZW1wbGF0ZSBleHRlbnNpb25zCiAgICAgICAqIChgaXM9ImRvbS1pZiJgIGFuZCBgaXM9ImRvbS1yZXBlYXQiYCkgd2l0aCB0aGVpciBlcXVpdmFsZW50IGVsZW1lbnQKICAgICAgICogd3JhcHBlcnMsIGNvbGxhcHNlcyB0ZXh0IG5vZGVzLCBhbmQgc3RyaXBzIHdoaXRlc3BhY2UgZnJvbSB0aGUgdGVtcGxhdGUKICAgICAgICogaWYgdGhlIGB0ZW1wbGF0ZUluZm8uc3RyaXBXaGl0ZXNwYWNlYCBzZXR0aW5nIHdhcyBwcm92aWRlZC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtOb2RlfSByb290IFJvb3Qgbm9kZSB3aG9zZSBgY2hpbGROb2Rlc2Agd2lsbCBiZSBwYXJzZWQKICAgICAgICogQHBhcmFtIHshVGVtcGxhdGVJbmZvfSB0ZW1wbGF0ZUluZm8gVGVtcGxhdGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUKICAgICAgICogQHBhcmFtIHshTm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVDaGlsZE5vZGVzKHJvb3QsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8pIHsKICAgICAgICBpZiAocm9vdC5sb2NhbE5hbWUgPT09ICdzY3JpcHQnIHx8IHJvb3QubG9jYWxOYW1lID09PSAnc3R5bGUnKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHdhbGtlci5jdXJyZW50Tm9kZSA9IHJvb3Q7CiAgICAgICAgZm9yIChsZXQgbm9kZT13YWxrZXIuZmlyc3RDaGlsZCgpLCBwYXJlbnRJbmRleD0wLCBuZXh0OyBub2RlOyBub2RlPW5leHQpIHsKICAgICAgICAgIC8vIFdyYXAgdGVtcGxhdGVzCiAgICAgICAgICBpZiAobm9kZS5sb2NhbE5hbWUgPT0gJ3RlbXBsYXRlJykgewogICAgICAgICAgICBub2RlID0gd3JhcFRlbXBsYXRlRXh0ZW5zaW9uKG5vZGUpOwogICAgICAgICAgfQogICAgICAgICAgLy8gY29sbGFwc2UgYWRqYWNlbnQgdGV4dE5vZGVzOiBmaXhlcyBhbiBJRSBpc3N1ZSB0aGF0IGNhbiBjYXVzZQogICAgICAgICAgLy8gdGV4dCBub2RlcyB0byBiZSBpbmV4cGxpY2FibHkgc3BsaXQgPSgKICAgICAgICAgIC8vIG5vdGUgdGhhdCByb290Lm5vcm1hbGl6ZSgpIHNob3VsZCB3b3JrIGJ1dCBkb2VzIG5vdCBzbyB3ZSBkbyB0aGlzCiAgICAgICAgICAvLyBtYW51YWxseS4KICAgICAgICAgIHdhbGtlci5jdXJyZW50Tm9kZSA9IG5vZGU7CiAgICAgICAgICBuZXh0ID0gd2Fsa2VyLm5leHRTaWJsaW5nKCk7CiAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgICAgICAgICAgbGV0IC8qKiBOb2RlICovIG4gPSBuZXh0OwogICAgICAgICAgICB3aGlsZSAobiAmJiAobi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpKSB7CiAgICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCArPSBuLnRleHRDb250ZW50OwogICAgICAgICAgICAgIG5leHQgPSB3YWxrZXIubmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgICByb290LnJlbW92ZUNoaWxkKG4pOwogICAgICAgICAgICAgIG4gPSBuZXh0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIG9wdGlvbmFsbHkgc3RyaXAgd2hpdGVzcGFjZQogICAgICAgICAgICBpZiAodGVtcGxhdGVJbmZvLnN0cmlwV2hpdGVTcGFjZSAmJiAhbm9kZS50ZXh0Q29udGVudC50cmltKCkpIHsKICAgICAgICAgICAgICByb290LnJlbW92ZUNoaWxkKG5vZGUpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgY2hpbGRJbmZvID0geyBwYXJlbnRJbmRleCwgcGFyZW50SW5mbzogbm9kZUluZm8gfTsKICAgICAgICAgIGlmICh0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZShub2RlLCB0ZW1wbGF0ZUluZm8sIGNoaWxkSW5mbykpIHsKICAgICAgICAgICAgY2hpbGRJbmZvLmluZm9JbmRleCA9IHRlbXBsYXRlSW5mby5ub2RlSW5mb0xpc3QucHVzaCgvKiogQHR5cGUgeyFOb2RlSW5mb30gKi8oY2hpbGRJbmZvKSkgLSAxOwogICAgICAgICAgfQogICAgICAgICAgLy8gSW5jcmVtZW50IGlmIG5vdCByZW1vdmVkCiAgICAgICAgICB3YWxrZXIuY3VycmVudE5vZGUgPSBub2RlOwogICAgICAgICAgaWYgKHdhbGtlci5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgICAgcGFyZW50SW5kZXgrKzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBQYXJzZXMgdGVtcGxhdGUgY29udGVudCBmb3IgdGhlIGdpdmVuIG5lc3RlZCBgPHRlbXBsYXRlPmAuCiAgICAgICAqCiAgICAgICAqIE5lc3RlZCB0ZW1wbGF0ZSBpbmZvIGlzIHN0b3JlZCBhcyBgdGVtcGxhdGVJbmZvYCBpbiB0aGUgY3VycmVudCBub2RlJ3MKICAgICAgICogYG5vZGVJbmZvYC4gYHRlbXBsYXRlLmNvbnRlbnRgIGlzIHJlbW92ZWQgYW5kIHN0b3JlZCBpbiBgdGVtcGxhdGVJbmZvYC4KICAgICAgICogSXQgd2lsbCB0aGVuIGJlIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaG9zdCB0byBzZXQgaXQgYmFjayB0byB0aGUKICAgICAgICogdGVtcGxhdGUgYW5kIGZvciB1c2VycyBzdGFtcGluZyBuZXN0ZWQgdGVtcGxhdGVzIHRvIHVzZSB0aGUKICAgICAgICogYF9jb250ZW50Rm9yVGVtcGxhdGVgIG1ldGhvZCB0byByZXRyaWV2ZSB0aGUgY29udGVudCBmb3IgdGhpcyB0ZW1wbGF0ZQogICAgICAgKiAoYW4gb3B0aW1pemF0aW9uIHRvIGF2b2lkIHRoZSBjb3N0IG9mIGNsb25pbmcgbmVzdGVkIHRlbXBsYXRlIGNvbnRlbnQpLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge0hUTUxUZW1wbGF0ZUVsZW1lbnR9IG5vZGUgTm9kZSB0byBwYXJzZSAoYSA8dGVtcGxhdGU+KQogICAgICAgKiBAcGFyYW0ge1RlbXBsYXRlSW5mb30gb3V0ZXJUZW1wbGF0ZUluZm8gVGVtcGxhdGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUKICAgICAgICogICB0aGF0IGluY2x1ZGVzIHRoZSB0ZW1wbGF0ZSBgbm9kZWAKICAgICAgICogQHBhcmFtIHshTm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgdmlzaXRlZCBub2RlIGFkZGVkIG5vZGUtc3BlY2lmaWMKICAgICAgICogICBtZXRhZGF0YSB0byBgbm9kZUluZm9gCiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVOZXN0ZWRUZW1wbGF0ZShub2RlLCBvdXRlclRlbXBsYXRlSW5mbywgbm9kZUluZm8pIHsKICAgICAgICBsZXQgdGVtcGxhdGVJbmZvID0gdGhpcy5fcGFyc2VUZW1wbGF0ZShub2RlLCBvdXRlclRlbXBsYXRlSW5mbyk7CiAgICAgICAgbGV0IGNvbnRlbnQgPSB0ZW1wbGF0ZUluZm8uY29udGVudCA9CiAgICAgICAgICBub2RlLmNvbnRlbnQub3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChub2RlLmNvbnRlbnQpOwogICAgICAgIG5vZGVJbmZvLnRlbXBsYXRlSW5mbyA9IHRlbXBsYXRlSW5mbzsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFBhcnNlcyB0ZW1wbGF0ZSBub2RlIGF0dHJpYnV0ZXMgYW5kIGFkZHMgbm9kZSBtZXRhZGF0YSB0byBgbm9kZUluZm9gCiAgICAgICAqIGZvciBub2RlcyBvZiBpbnRlcmVzdC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBub2RlIE5vZGUgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtUZW1wbGF0ZUluZm99IHRlbXBsYXRlSW5mbyBUZW1wbGF0ZSBtZXRhZGF0YSBmb3IgY3VycmVudCB0ZW1wbGF0ZQogICAgICAgKiBAcGFyYW0ge05vZGVJbmZvfSBub2RlSW5mbyBOb2RlIG1ldGFkYXRhIGZvciBjdXJyZW50IHRlbXBsYXRlLgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZpc2l0ZWQgbm9kZSBhZGRlZCBub2RlLXNwZWNpZmljCiAgICAgICAqICAgbWV0YWRhdGEgdG8gYG5vZGVJbmZvYAogICAgICAgKi8KICAgICAgc3RhdGljIF9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZXMobm9kZSwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbykgewogICAgICAgIC8vIE1ha2UgY29weSBvZiBvcmlnaW5hbCBhdHRyaWJ1dGUgbGlzdCwgc2luY2UgdGhlIG9yZGVyIG1heSBjaGFuZ2UKICAgICAgICAvLyBhcyBhdHRyaWJ1dGVzIGFyZSBhZGRlZCBhbmQgcmVtb3ZlZAogICAgICAgIGxldCBub3RlZCA9IGZhbHNlOwogICAgICAgIGxldCBhdHRycyA9IEFycmF5LmZyb20obm9kZS5hdHRyaWJ1dGVzKTsKICAgICAgICBmb3IgKGxldCBpPWF0dHJzLmxlbmd0aC0xLCBhOyAoYT1hdHRyc1tpXSk7IGktLSkgewogICAgICAgICAgbm90ZWQgPSB0aGlzLl9wYXJzZVRlbXBsYXRlTm9kZUF0dHJpYnV0ZShub2RlLCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvLCBhLm5hbWUsIGEudmFsdWUpIHx8IG5vdGVkOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbm90ZWQ7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBQYXJzZXMgYSBzaW5nbGUgdGVtcGxhdGUgbm9kZSBhdHRyaWJ1dGUgYW5kIGFkZHMgbm9kZSBtZXRhZGF0YSB0bwogICAgICAgKiBgbm9kZUluZm9gIGZvciBhdHRyaWJ1dGVzIG9mIGludGVyZXN0LgogICAgICAgKgogICAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIGFkZHMgbWV0YWRhdGEgZm9yIGBvbi1ldmVudD0iaGFuZGxlciJgIGF0dHJpYnV0ZXMKICAgICAgICogYW5kIGBpZGAgYXR0cmlidXRlcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtFbGVtZW50fSBub2RlIE5vZGUgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHshVGVtcGxhdGVJbmZvfSB0ZW1wbGF0ZUluZm8gVGVtcGxhdGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUKICAgICAgICogQHBhcmFtIHshTm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEF0dHJpYnV0ZSBuYW1lCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBBdHRyaWJ1dGUgdmFsdWUKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSB2aXNpdGVkIG5vZGUgYWRkZWQgbm9kZS1zcGVjaWZpYwogICAgICAgKiAgIG1ldGFkYXRhIHRvIGBub2RlSW5mb2AKICAgICAgICovCiAgICAgIHN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGVBdHRyaWJ1dGUobm9kZSwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbywgbmFtZSwgdmFsdWUpIHsKICAgICAgICAvLyBldmVudHMgKG9uLSopCiAgICAgICAgaWYgKG5hbWUuc2xpY2UoMCwgMykgPT09ICdvbi0nKSB7CiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTsKICAgICAgICAgIG5vZGVJbmZvLmV2ZW50cyA9IG5vZGVJbmZvLmV2ZW50cyB8fCBbXTsKICAgICAgICAgIG5vZGVJbmZvLmV2ZW50cy5wdXNoKHsKICAgICAgICAgICAgbmFtZTogbmFtZS5zbGljZSgzKSwKICAgICAgICAgICAgdmFsdWUKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIC8vIHN0YXRpYyBpZAogICAgICAgIGVsc2UgaWYgKG5hbWUgPT09ICdpZCcpIHsKICAgICAgICAgIG5vZGVJbmZvLmlkID0gdmFsdWU7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgYGNvbnRlbnRgIGRvY3VtZW50IGZyYWdtZW50IGZvciBhIGdpdmVuIHRlbXBsYXRlLgogICAgICAgKgogICAgICAgKiBGb3IgbmVzdGVkIHRlbXBsYXRlcywgUG9seW1lciBwZXJmb3JtcyBhbiBvcHRpbWl6YXRpb24gdG8gY2FjaGUgbmVzdGVkCiAgICAgICAqIHRlbXBsYXRlIGNvbnRlbnQgdG8gYXZvaWQgdGhlIGNvc3Qgb2YgY2xvbmluZyBkZWVwbHkgbmVzdGVkIHRlbXBsYXRlcy4KICAgICAgICogVGhpcyBtZXRob2QgcmV0cmlldmVzIHRoZSBjYWNoZWQgY29udGVudCBmb3IgYSBnaXZlbiB0ZW1wbGF0ZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtIVE1MVGVtcGxhdGVFbGVtZW50fSB0ZW1wbGF0ZSBUZW1wbGF0ZSB0byByZXRyaWV2ZSBgY29udGVudGAgZm9yCiAgICAgICAqIEByZXR1cm4ge0RvY3VtZW50RnJhZ21lbnR9IENvbnRlbnQgZnJhZ21lbnQKICAgICAgICovCiAgICAgIHN0YXRpYyBfY29udGVudEZvclRlbXBsYXRlKHRlbXBsYXRlKSB7CiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IC8qKiBAdHlwZSB7SFRNTFRlbXBsYXRlRWxlbWVudFdpdGhJbmZvfSAqLyAodGVtcGxhdGUpLl90ZW1wbGF0ZUluZm87CiAgICAgICAgcmV0dXJuICh0ZW1wbGF0ZUluZm8gJiYgdGVtcGxhdGVJbmZvLmNvbnRlbnQpIHx8IHRlbXBsYXRlLmNvbnRlbnQ7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDbG9uZXMgdGhlIHByb3ZpZGVkIHRlbXBsYXRlIGNvbnRlbnQgYW5kIHJldHVybnMgYSBkb2N1bWVudCBmcmFnbWVudAogICAgICAgKiBjb250YWluaW5nIHRoZSBjbG9uZWQgZG9tLgogICAgICAgKgogICAgICAgKiBUaGUgdGVtcGxhdGUgaXMgcGFyc2VkIChvbmNlIGFuZCBtZW1vaXplZCkgdXNpbmcgdGhpcyBsaWJyYXJ5J3MKICAgICAgICogdGVtcGxhdGUgcGFyc2luZyBmZWF0dXJlcywgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgdmFsdWUtYWRkZWQKICAgICAgICogZmVhdHVyZXM6CiAgICAgICAqICogQWRkcyBkZWNsYXJhdGl2ZSBldmVudCBsaXN0ZW5lcnMgZm9yIGBvbi1ldmVudD0iaGFuZGxlciJgIGF0dHJpYnV0ZXMKICAgICAgICogKiBHZW5lcmF0ZXMgYW4gImlkIG1hcCIgZm9yIGFsbCBub2RlcyB3aXRoIGlkJ3MgdW5kZXIgYCRgIG9uIHJldHVybmVkCiAgICAgICAqICAgZG9jdW1lbnQgZnJhZ21lbnQKICAgICAgICogKiBQYXNzZXMgdGVtcGxhdGUgaW5mbyBpbmNsdWRpbmcgYGNvbnRlbnRgIGJhY2sgdG8gdGVtcGxhdGVzIGFzCiAgICAgICAqICAgYF90ZW1wbGF0ZUluZm9gIChhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBkZWVwIHRlbXBsYXRlCiAgICAgICAqICAgY2xvbmluZykKICAgICAgICoKICAgICAgICogTm90ZSB0aGF0IHRoZSBtZW1vaXplZCB0ZW1wbGF0ZSBwYXJzaW5nIHByb2Nlc3MgaXMgZGVzdHJ1Y3RpdmUgdG8gdGhlCiAgICAgICAqIHRlbXBsYXRlOiBhdHRyaWJ1dGVzIGZvciBiaW5kaW5ncyBhbmQgZGVjbGFyYXRpdmUgZXZlbnQgbGlzdGVuZXJzIGFyZQogICAgICAgKiByZW1vdmVkIGFmdGVyIGJlaW5nIG5vdGVkIGluIG5vdGVzLCBhbmQgYW55IG5lc3RlZCBgPHRlbXBsYXRlPi5jb250ZW50YAogICAgICAgKiBpcyByZW1vdmVkIGFuZCBzdG9yZWQgaW4gbm90ZXMgYXMgd2VsbC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGVtcGxhdGUgdG8gc3RhbXAKICAgICAgICogQHJldHVybiB7IVN0YW1wZWRUZW1wbGF0ZX0gQ2xvbmVkIHRlbXBsYXRlIGNvbnRlbnQKICAgICAgICovCiAgICAgIF9zdGFtcFRlbXBsYXRlKHRlbXBsYXRlKSB7CiAgICAgICAgLy8gUG9seWZpbGwgc3VwcG9ydDogYm9vdHN0cmFwIHRoZSB0ZW1wbGF0ZSBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbgogICAgICAgIGlmICh0ZW1wbGF0ZSAmJiAhdGVtcGxhdGUuY29udGVudCAmJgogICAgICAgICAgICB3aW5kb3cuSFRNTFRlbXBsYXRlRWxlbWVudCAmJiBIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKSB7CiAgICAgICAgICBIVE1MVGVtcGxhdGVFbGVtZW50LmRlY29yYXRlKHRlbXBsYXRlKTsKICAgICAgICB9CiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodGVtcGxhdGUpOwogICAgICAgIGxldCBub2RlSW5mbyA9IHRlbXBsYXRlSW5mby5ub2RlSW5mb0xpc3Q7CiAgICAgICAgbGV0IGNvbnRlbnQgPSB0ZW1wbGF0ZUluZm8uY29udGVudCB8fCB0ZW1wbGF0ZS5jb250ZW50OwogICAgICAgIGxldCBkb20gPSAvKiogQHR5cGUge0RvY3VtZW50RnJhZ21lbnR9ICovIChkb2N1bWVudC5pbXBvcnROb2RlKGNvbnRlbnQsIHRydWUpKTsKICAgICAgICAvLyBOT1RFOiBTaGFkeURvbSBvcHRpbWl6YXRpb24gaW5kaWNhdGluZyB0aGVyZSBpcyBhbiBpbnNlcnRpb24gcG9pbnQKICAgICAgICBkb20uX19ub0luc2VydGlvblBvaW50ID0gIXRlbXBsYXRlSW5mby5oYXNJbnNlcnRpb25Qb2ludDsKICAgICAgICBsZXQgbm9kZXMgPSBkb20ubm9kZUxpc3QgPSBuZXcgQXJyYXkobm9kZUluZm8ubGVuZ3RoKTsKICAgICAgICBkb20uJCA9IHt9OwogICAgICAgIGZvciAobGV0IGk9MCwgbD1ub2RlSW5mby5sZW5ndGgsIGluZm87IChpPGwpICYmIChpbmZvPW5vZGVJbmZvW2ldKTsgaSsrKSB7CiAgICAgICAgICBsZXQgbm9kZSA9IG5vZGVzW2ldID0gZmluZFRlbXBsYXRlTm9kZShkb20sIGluZm8pOwogICAgICAgICAgYXBwbHlJZFRvTWFwKHRoaXMsIGRvbS4kLCBub2RlLCBpbmZvKTsKICAgICAgICAgIGFwcGx5VGVtcGxhdGVDb250ZW50KHRoaXMsIG5vZGUsIGluZm8pOwogICAgICAgICAgYXBwbHlFdmVudExpc3RlbmVyKHRoaXMsIG5vZGUsIGluZm8pOwogICAgICAgIH0KICAgICAgICBkb20gPSAvKiogQHR5cGUgeyFTdGFtcGVkVGVtcGxhdGV9ICovKGRvbSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1hc3NpZ24KICAgICAgICByZXR1cm4gZG9tOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lciBieSBtZXRob2QgbmFtZSBmb3IgdGhlIGV2ZW50IHByb3ZpZGVkLgogICAgICAgKgogICAgICAgKiBUaGlzIG1ldGhvZCBnZW5lcmF0ZXMgYSBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgbG9va3MgdXAgdGhlIG1ldGhvZAogICAgICAgKiBuYW1lIGF0IGhhbmRsaW5nIHRpbWUuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUgTm9kZSB0byBhZGQgbGlzdGVuZXIgb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZSBOYW1lIG9mIGV2ZW50CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIE5hbWUgb2YgbWV0aG9kCiAgICAgICAqIEBwYXJhbSB7Kj19IGNvbnRleHQgQ29udGV4dCB0aGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIChkZWZhdWx0cwogICAgICAgKiAgIHRvIGBub2RlYCkKICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IEdlbmVyYXRlZCBoYW5kbGVyIGZ1bmN0aW9uCiAgICAgICAqLwogICAgICBfYWRkTWV0aG9kRXZlbnRMaXN0ZW5lclRvTm9kZShub2RlLCBldmVudE5hbWUsIG1ldGhvZE5hbWUsIGNvbnRleHQpIHsKICAgICAgICBjb250ZXh0ID0gY29udGV4dCB8fCBub2RlOwogICAgICAgIGxldCBoYW5kbGVyID0gY3JlYXRlTm9kZUV2ZW50SGFuZGxlcihjb250ZXh0LCBldmVudE5hbWUsIG1ldGhvZE5hbWUpOwogICAgICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKTsKICAgICAgICByZXR1cm4gaGFuZGxlcjsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlIHBvaW50IGZvciBhZGRpbmcgY3VzdG9tIG9yIHNpbXVsYXRlZCBldmVudCBoYW5kbGluZy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshTm9kZX0gbm9kZSBOb2RlIHRvIGFkZCBldmVudCBsaXN0ZW5lciB0bwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lIE5hbWUgb2YgZXZlbnQKICAgICAgICogQHBhcmFtIHtmdW5jdGlvbighRXZlbnQpOnZvaWR9IGhhbmRsZXIgTGlzdGVuZXIgZnVuY3Rpb24gdG8gYWRkCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfYWRkRXZlbnRMaXN0ZW5lclRvTm9kZShub2RlLCBldmVudE5hbWUsIGhhbmRsZXIpIHsKICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBoYW5kbGVyKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlIHBvaW50IGZvciBhZGRpbmcgY3VzdG9tIG9yIHNpbXVsYXRlZCBldmVudCBoYW5kbGluZy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshTm9kZX0gbm9kZSBOb2RlIHRvIHJlbW92ZSBldmVudCBsaXN0ZW5lciBmcm9tCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgTmFtZSBvZiBldmVudAogICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCFFdmVudCk6dm9pZH0gaGFuZGxlciBMaXN0ZW5lciBmdW5jdGlvbiB0byByZW1vdmUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9yZW1vdmVFdmVudExpc3RlbmVyRnJvbU5vZGUobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgaGFuZGxlcik7CiAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIFRlbXBsYXRlU3RhbXA7CgogIH0pOwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgLyoqIEBjb25zdCB7T2JqZWN0fSAqLwogIGNvbnN0IENhc2VNYXAgPSBQb2x5bWVyLkNhc2VNYXA7CgogIC8vIE1vbm90b25pY2FsbHkgaW5jcmVhc2luZyB1bmlxdWUgSUQgdXNlZCBmb3IgZGUtZHVwaW5nIGVmZmVjdHMgdHJpZ2dlcmVkCiAgLy8gZnJvbSBtdWx0aXBsZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIHR1cm4KICBsZXQgZGVkdXBlSWQgPSAwOwoKICAvKioKICAgKiBQcm9wZXJ0eSBlZmZlY3QgdHlwZXM7IGVmZmVjdHMgYXJlIHN0b3JlZCBvbiB0aGUgcHJvdG90eXBlIHVzaW5nIHRoZXNlIGtleXMKICAgKiBAZW51bSB7c3RyaW5nfQogICAqLwogIGNvbnN0IFRZUEVTID0gewogICAgQ09NUFVURTogJ19fY29tcHV0ZUVmZmVjdHMnLAogICAgUkVGTEVDVDogJ19fcmVmbGVjdEVmZmVjdHMnLAogICAgTk9USUZZOiAnX19ub3RpZnlFZmZlY3RzJywKICAgIFBST1BBR0FURTogJ19fcHJvcGFnYXRlRWZmZWN0cycsCiAgICBPQlNFUlZFOiAnX19vYnNlcnZlRWZmZWN0cycsCiAgICBSRUFEX09OTFk6ICdfX3JlYWRPbmx5JwogIH07CgogIC8qKiBAY29uc3Qge1JlZ0V4cH0gKi8KICBjb25zdCBjYXBpdGFsQXR0cmlidXRlUmVnZXggPSAvW0EtWl0vOwoKICAvKioKICAgKiBAdHlwZWRlZiB7ewogICAqIG5hbWU6IChzdHJpbmcgfCB1bmRlZmluZWQpLAogICAqIHN0cnVjdHVyZWQ6IChib29sZWFuIHwgdW5kZWZpbmVkKSwKICAgKiB3aWxkY2FyZDogKGJvb2xlYW4gfCB1bmRlZmluZWQpCiAgICogfX0KICAgKi8KICBsZXQgRGF0YVRyaWdnZXI7IC8vZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFycwoKICAvKioKICAgKiBAdHlwZWRlZiB7ewogICAqIGluZm86ID8sCiAgICogdHJpZ2dlcjogKCFEYXRhVHJpZ2dlciB8IHVuZGVmaW5lZCksCiAgICogZm46ICghRnVuY3Rpb24gfCB1bmRlZmluZWQpCiAgICogfX0KICAgKi8KICBsZXQgRGF0YUVmZmVjdDsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCgogIGxldCBQcm9wZXJ0eUVmZmVjdHNUeXBlOyAvL2VzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMKCiAgLyoqCiAgICogRW5zdXJlcyB0aGF0IHRoZSBtb2RlbCBoYXMgYW4gb3duLXByb3BlcnR5IG1hcCBvZiBlZmZlY3RzIGZvciB0aGUgZ2l2ZW4gdHlwZS4KICAgKiBUaGUgbW9kZWwgbWF5IGJlIGEgcHJvdG90eXBlIG9yIGFuIGluc3RhbmNlLgogICAqCiAgICogUHJvcGVydHkgZWZmZWN0cyBhcmUgc3RvcmVkIGFzIGFycmF5cyBvZiBlZmZlY3RzIGJ5IHByb3BlcnR5IGluIGEgbWFwLAogICAqIGJ5IG5hbWVkIHR5cGUgb24gdGhlIG1vZGVsLiBlLmcuCiAgICoKICAgKiAgIF9fY29tcHV0ZUVmZmVjdHM6IHsKICAgKiAgICAgZm9vOiBbIC4uLiBdLAogICAqICAgICBiYXI6IFsgLi4uIF0KICAgKiAgIH0KICAgKgogICAqIElmIHRoZSBtb2RlbCBkb2VzIG5vdCB5ZXQgaGF2ZSBhbiBlZmZlY3QgbWFwIGZvciB0aGUgdHlwZSwgb25lIGlzIGNyZWF0ZWQKICAgKiBhbmQgcmV0dXJuZWQuICBJZiBpdCBkb2VzLCBidXQgaXQgaXMgbm90IGFuIG93biBwcm9wZXJ0eSAoaS5lLiB0aGUKICAgKiBwcm90b3R5cGUgaGFkIGVmZmVjdHMpLCB0aGUgdGhlIG1hcCBpcyBkZWVwbHkgY2xvbmVkIGFuZCB0aGUgY29weSBpcwogICAqIHNldCBvbiB0aGUgbW9kZWwgYW5kIHJldHVybmVkLCByZWFkeSBmb3IgbmV3IGVmZmVjdHMgdG8gYmUgYWRkZWQuCiAgICoKICAgKiBAcGFyYW0ge09iamVjdH0gbW9kZWwgUHJvdG90eXBlIG9yIGluc3RhbmNlCiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgUHJvcGVydHkgZWZmZWN0IHR5cGUKICAgKiBAcmV0dXJuIHtPYmplY3R9IFRoZSBvd24tcHJvcGVydHkgbWFwIG9mIGVmZmVjdHMgZm9yIHRoZSBnaXZlbiB0eXBlCiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBlbnN1cmVPd25FZmZlY3RNYXAobW9kZWwsIHR5cGUpIHsKICAgIGxldCBlZmZlY3RzID0gbW9kZWxbdHlwZV07CiAgICBpZiAoIWVmZmVjdHMpIHsKICAgICAgZWZmZWN0cyA9IG1vZGVsW3R5cGVdID0ge307CiAgICB9IGVsc2UgaWYgKCFtb2RlbC5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgewogICAgICBlZmZlY3RzID0gbW9kZWxbdHlwZV0gPSBPYmplY3QuY3JlYXRlKG1vZGVsW3R5cGVdKTsKICAgICAgZm9yIChsZXQgcCBpbiBlZmZlY3RzKSB7CiAgICAgICAgbGV0IHByb3RvRnggPSBlZmZlY3RzW3BdOwogICAgICAgIGxldCBpbnN0RnggPSBlZmZlY3RzW3BdID0gQXJyYXkocHJvdG9GeC5sZW5ndGgpOwogICAgICAgIGZvciAobGV0IGk9MDsgaTxwcm90b0Z4Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpbnN0RnhbaV0gPSBwcm90b0Z4W2ldOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIGVmZmVjdHM7CiAgfQoKICAvLyAtLSBlZmZlY3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLyoqCiAgICogUnVucyBhbGwgZWZmZWN0cyBvZiBhIGdpdmVuIHR5cGUgZm9yIHRoZSBnaXZlbiBzZXQgb2YgcHJvcGVydHkgY2hhbmdlcwogICAqIG9uIGFuIGluc3RhbmNlLgogICAqCiAgICogQHBhcmFtIHshUHJvcGVydHlFZmZlY3RzVHlwZX0gaW5zdCBUaGUgaW5zdGFuY2Ugd2l0aCBlZmZlY3RzIHRvIHJ1bgogICAqIEBwYXJhbSB7T2JqZWN0fSBlZmZlY3RzIE9iamVjdCBtYXAgb2YgcHJvcGVydHktdG8tQXJyYXkgb2YgZWZmZWN0cwogICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBCYWcgb2YgY3VycmVudCBwcm9wZXJ0eSBjaGFuZ2VzCiAgICogQHBhcmFtIHtPYmplY3Q9fSBvbGRQcm9wcyBCYWcgb2YgcHJldmlvdXMgdmFsdWVzIGZvciBjaGFuZ2VkIHByb3BlcnRpZXMKICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBoYXNQYXRocyBUcnVlIHdpdGggYHByb3BzYCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXRocwogICAqIEBwYXJhbSB7Kj19IGV4dHJhQXJncyBBZGRpdGlvbmFsIG1ldGFkYXRhIHRvIHBhc3MgdG8gZWZmZWN0IGZ1bmN0aW9uCiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhbiBlZmZlY3QgcmFuIGZvciB0aGlzIHByb3BlcnR5CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBydW5FZmZlY3RzKGluc3QsIGVmZmVjdHMsIHByb3BzLCBvbGRQcm9wcywgaGFzUGF0aHMsIGV4dHJhQXJncykgewogICAgaWYgKGVmZmVjdHMpIHsKICAgICAgbGV0IHJhbiA9IGZhbHNlOwogICAgICBsZXQgaWQgPSBkZWR1cGVJZCsrOwogICAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7CiAgICAgICAgaWYgKHJ1bkVmZmVjdHNGb3JQcm9wZXJ0eShpbnN0LCBlZmZlY3RzLCBpZCwgcHJvcCwgcHJvcHMsIG9sZFByb3BzLCBoYXNQYXRocywgZXh0cmFBcmdzKSkgewogICAgICAgICAgcmFuID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJhbjsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CgogIC8qKgogICAqIFJ1bnMgYSBsaXN0IG9mIGVmZmVjdHMgZm9yIGEgZ2l2ZW4gcHJvcGVydHkuCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IFRoZSBpbnN0YW5jZSB3aXRoIGVmZmVjdHMgdG8gcnVuCiAgICogQHBhcmFtIHtPYmplY3R9IGVmZmVjdHMgT2JqZWN0IG1hcCBvZiBwcm9wZXJ0eS10by1BcnJheSBvZiBlZmZlY3RzCiAgICogQHBhcmFtIHtudW1iZXJ9IGRlZHVwZUlkIENvdW50ZXIgdXNlZCBmb3IgZGUtZHVwaW5nIGVmZmVjdHMKICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBOYW1lIG9mIGNoYW5nZWQgcHJvcGVydHkKICAgKiBAcGFyYW0geyp9IHByb3BzIENoYW5nZWQgcHJvcGVydGllcwogICAqIEBwYXJhbSB7Kn0gb2xkUHJvcHMgT2xkIHByb3BlcnRpZXMKICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBoYXNQYXRocyBUcnVlIHdpdGggYHByb3BzYCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXRocwogICAqIEBwYXJhbSB7Kj19IGV4dHJhQXJncyBBZGRpdGlvbmFsIG1ldGFkYXRhIHRvIHBhc3MgdG8gZWZmZWN0IGZ1bmN0aW9uCiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhbiBlZmZlY3QgcmFuIGZvciB0aGlzIHByb3BlcnR5CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBydW5FZmZlY3RzRm9yUHJvcGVydHkoaW5zdCwgZWZmZWN0cywgZGVkdXBlSWQsIHByb3AsIHByb3BzLCBvbGRQcm9wcywgaGFzUGF0aHMsIGV4dHJhQXJncykgewogICAgbGV0IHJhbiA9IGZhbHNlOwogICAgbGV0IHJvb3RQcm9wZXJ0eSA9IGhhc1BhdGhzID8gUG9seW1lci5QYXRoLnJvb3QocHJvcCkgOiBwcm9wOwogICAgbGV0IGZ4cyA9IGVmZmVjdHNbcm9vdFByb3BlcnR5XTsKICAgIGlmIChmeHMpIHsKICAgICAgZm9yIChsZXQgaT0wLCBsPWZ4cy5sZW5ndGgsIGZ4OyAoaTxsKSAmJiAoZng9ZnhzW2ldKTsgaSsrKSB7CiAgICAgICAgaWYgKCghZnguaW5mbyB8fCBmeC5pbmZvLmxhc3RSdW4gIT09IGRlZHVwZUlkKSAmJgogICAgICAgICAgICAoIWhhc1BhdGhzIHx8IHBhdGhNYXRjaGVzVHJpZ2dlcihwcm9wLCBmeC50cmlnZ2VyKSkpIHsKICAgICAgICAgIGlmIChmeC5pbmZvKSB7CiAgICAgICAgICAgIGZ4LmluZm8ubGFzdFJ1biA9IGRlZHVwZUlkOwogICAgICAgICAgfQogICAgICAgICAgZnguZm4oaW5zdCwgcHJvcCwgcHJvcHMsIG9sZFByb3BzLCBmeC5pbmZvLCBoYXNQYXRocywgZXh0cmFBcmdzKTsKICAgICAgICAgIHJhbiA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gcmFuOwogIH0KCiAgLyoqCiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgcHJvcGVydHkvcGF0aCB0aGF0IGhhcyBjaGFuZ2VkIG1hdGNoZXMgdGhlIHRyaWdnZXIKICAgKiBjcml0ZXJpYSBmb3IgYW4gZWZmZWN0LiAgQSB0cmlnZ2VyIGlzIGEgZGVzY3JpcHRvciB3aXRoIHRoZSBmb2xsb3dpbmcKICAgKiBzdHJ1Y3R1cmUsIHdoaWNoIG1hdGNoZXMgdGhlIGRlc2NyaXB0b3JzIHJldHVybmVkIGZyb20gYHBhcnNlQXJnYC4KICAgKiBlLmcuIGZvciBgZm9vLmJhci4qYDoKICAgKiBgYGAKICAgKiB0cmlnZ2VyOiB7CiAgICogICBuYW1lOiAnYS5iJywKICAgKiAgIHN0cnVjdHVyZWQ6IHRydWUsCiAgICogICB3aWxkY2FyZDogdHJ1ZQogICAqIH0KICAgKiBgYGAKICAgKiBJZiBubyB0cmlnZ2VyIGlzIGdpdmVuLCB0aGUgcGF0aCBpcyBkZWVtZWQgdG8gbWF0Y2guCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBQYXRoIG9yIHByb3BlcnR5IHRoYXQgY2hhbmdlZAogICAqIEBwYXJhbSB7RGF0YVRyaWdnZXJ9IHRyaWdnZXIgRGVzY3JpcHRvcgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIHBhdGggbWF0Y2hlZCB0aGUgdHJpZ2dlcgogICAqLwogIGZ1bmN0aW9uIHBhdGhNYXRjaGVzVHJpZ2dlcihwYXRoLCB0cmlnZ2VyKSB7CiAgICBpZiAodHJpZ2dlcikgewogICAgICBsZXQgdHJpZ2dlclBhdGggPSB0cmlnZ2VyLm5hbWU7CiAgICAgIHJldHVybiAodHJpZ2dlclBhdGggPT0gcGF0aCkgfHwKICAgICAgICAodHJpZ2dlci5zdHJ1Y3R1cmVkICYmIFBvbHltZXIuUGF0aC5pc0FuY2VzdG9yKHRyaWdnZXJQYXRoLCBwYXRoKSkgfHwKICAgICAgICAodHJpZ2dlci53aWxkY2FyZCAmJiBQb2x5bWVyLlBhdGguaXNEZXNjZW5kYW50KHRyaWdnZXJQYXRoLCBwYXRoKSk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICB9CgogIC8qKgogICAqIEltcGxlbWVudHMgdGhlICJvYnNlcnZlciIgZWZmZWN0LgogICAqCiAgICogQ2FsbHMgdGhlIG1ldGhvZCB3aXRoIGBpbmZvLm1ldGhvZE5hbWVgIG9uIHRoZSBpbnN0YW5jZSwgcGFzc2luZyB0aGUKICAgKiBuZXcgYW5kIG9sZCB2YWx1ZXMuCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IFRoZSBpbnN0YW5jZSB0aGUgZWZmZWN0IHdpbGwgYmUgcnVuIG9uCiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgcHJvcGVydHkKICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIGN1cnJlbnQgcHJvcGVydHkgY2hhbmdlcwogICAqIEBwYXJhbSB7T2JqZWN0fSBvbGRQcm9wcyBCYWcgb2YgcHJldmlvdXMgdmFsdWVzIGZvciBjaGFuZ2VkIHByb3BlcnRpZXMKICAgKiBAcGFyYW0gez99IGluZm8gRWZmZWN0IG1ldGFkYXRhCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHJ1bk9ic2VydmVyRWZmZWN0KGluc3QsIHByb3BlcnR5LCBwcm9wcywgb2xkUHJvcHMsIGluZm8pIHsKICAgIGxldCBmbiA9IHR5cGVvZiBpbmZvLm1ldGhvZCA9PT0gInN0cmluZyIgPyBpbnN0W2luZm8ubWV0aG9kXSA6IGluZm8ubWV0aG9kOwogICAgbGV0IGNoYW5nZWRQcm9wID0gaW5mby5wcm9wZXJ0eTsKICAgIGlmIChmbikgewogICAgICBmbi5jYWxsKGluc3QsIGluc3QuX19kYXRhW2NoYW5nZWRQcm9wXSwgb2xkUHJvcHNbY2hhbmdlZFByb3BdKTsKICAgIH0gZWxzZSBpZiAoIWluZm8uZHluYW1pY0ZuKSB7CiAgICAgIGNvbnNvbGUud2Fybignb2JzZXJ2ZXIgbWV0aG9kIGAnICsgaW5mby5tZXRob2QgKyAnYCBub3QgZGVmaW5lZCcpOwogICAgfQogIH0KCiAgLyoqCiAgICogUnVucyAibm90aWZ5IiBlZmZlY3RzIGZvciBhIHNldCBvZiBjaGFuZ2VkIHByb3BlcnRpZXMuCiAgICoKICAgKiBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gdGhlIGdlbmVyaWMgYHJ1bkVmZmVjdHNgIG1ldGhvZCBpbiB0aGF0IGl0CiAgICogd2lsbCBkaXNwYXRjaCBwYXRoIG5vdGlmaWNhdGlvbiBldmVudHMgaW4gdGhlIGNhc2UgdGhhdCB0aGUgcHJvcGVydHkKICAgKiBjaGFuZ2VkIHdhcyBhIHBhdGggYW5kIHRoZSByb290IHByb3BlcnR5IGZvciB0aGF0IHBhdGggZGlkbid0IGhhdmUgYQogICAqICJub3RpZnkiIGVmZmVjdC4gIFRoaXMgaXMgdG8gbWFpbnRhaW4gMS4wIGJlaGF2aW9yIHRoYXQgZGlkIG5vdCByZXF1aXJlCiAgICogYG5vdGlmeTogdHJ1ZWAgdG8gZW5zdXJlIG9iamVjdCBzdWItcHJvcGVydHkgbm90aWZpY2F0aW9ucyB3ZXJlCiAgICogc2VudC4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGluc3RhbmNlIHdpdGggZWZmZWN0cyB0byBydW4KICAgKiBAcGFyYW0ge09iamVjdH0gbm90aWZ5UHJvcHMgQmFnIG9mIHByb3BlcnRpZXMgdG8gbm90aWZ5CiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBjdXJyZW50IHByb3BlcnR5IGNoYW5nZXMKICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHtib29sZWFufSBoYXNQYXRocyBUcnVlIHdpdGggYHByb3BzYCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXRocwogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBydW5Ob3RpZnlFZmZlY3RzKGluc3QsIG5vdGlmeVByb3BzLCBwcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKSB7CiAgICAvLyBOb3RpZnkKICAgIGxldCBmeHMgPSBpbnN0W1RZUEVTLk5PVElGWV07CiAgICBsZXQgbm90aWZpZWQ7CiAgICBsZXQgaWQgPSBkZWR1cGVJZCsrOwogICAgLy8gVHJ5IG5vcm1hbCBub3RpZnkgZWZmZWN0czsgaWYgbm9uZSwgZmFsbCBiYWNrIHRvIHRyeSBwYXRoIG5vdGlmaWNhdGlvbgogICAgZm9yIChsZXQgcHJvcCBpbiBub3RpZnlQcm9wcykgewogICAgICBpZiAobm90aWZ5UHJvcHNbcHJvcF0pIHsKICAgICAgICBpZiAoZnhzICYmIHJ1bkVmZmVjdHNGb3JQcm9wZXJ0eShpbnN0LCBmeHMsIGlkLCBwcm9wLCBwcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKSkgewogICAgICAgICAgbm90aWZpZWQgPSB0cnVlOwogICAgICAgIH0gZWxzZSBpZiAoaGFzUGF0aHMgJiYgbm90aWZ5UGF0aChpbnN0LCBwcm9wLCBwcm9wcykpIHsKICAgICAgICAgIG5vdGlmaWVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIC8vIEZsdXNoIGhvc3QgaWYgd2UgYWN0dWFsbHkgbm90aWZpZWQgYW5kIGhvc3Qgd2FzIGJhdGNoaW5nCiAgICAvLyBBbmQgdGhlIGhvc3QgaGFzIGFscmVhZHkgaW5pdGlhbGl6ZWQgY2xpZW50czsgdGhpcyBwcmV2ZW50cwogICAgLy8gYW4gaXNzdWUgd2l0aCBhIGhvc3Qgb2JzZXJ2aW5nIGRhdGEgY2hhbmdlcyBiZWZvcmUgY2xpZW50cyBhcmUgcmVhZHkuCiAgICBsZXQgaG9zdDsKICAgIGlmIChub3RpZmllZCAmJiAoaG9zdCA9IGluc3QuX19kYXRhSG9zdCkgJiYgaG9zdC5faW52YWxpZGF0ZVByb3BlcnRpZXMpIHsKICAgICAgaG9zdC5faW52YWxpZGF0ZVByb3BlcnRpZXMoKTsKICAgIH0KICB9CgogIC8qKgogICAqIERpc3BhdGNoZXMge3Byb3BlcnR5fS1jaGFuZ2VkIGV2ZW50cyB3aXRoIHBhdGggaW5mb3JtYXRpb24gaW4gdGhlIGRldGFpbAogICAqIG9iamVjdCB0byBpbmRpY2F0ZSBhIHN1Yi1wYXRoIG9mIHRoZSBwcm9wZXJ0eSB3YXMgY2hhbmdlZC4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGVsZW1lbnQgZnJvbSB3aGljaCB0byBmaXJlIHRoZSBldmVudAogICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRoYXQgd2FzIGNoYW5nZWQKICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIGN1cnJlbnQgcHJvcGVydHkgY2hhbmdlcwogICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0aCB3YXMgbm90aWZpZWQKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIG5vdGlmeVBhdGgoaW5zdCwgcGF0aCwgcHJvcHMpIHsKICAgIGxldCByb290UHJvcGVydHkgPSBQb2x5bWVyLlBhdGgucm9vdChwYXRoKTsKICAgIGlmIChyb290UHJvcGVydHkgIT09IHBhdGgpIHsKICAgICAgbGV0IGV2ZW50TmFtZSA9IFBvbHltZXIuQ2FzZU1hcC5jYW1lbFRvRGFzaENhc2Uocm9vdFByb3BlcnR5KSArICctY2hhbmdlZCc7CiAgICAgIGRpc3BhdGNoTm90aWZ5RXZlbnQoaW5zdCwgZXZlbnROYW1lLCBwcm9wc1twYXRoXSwgcGF0aCk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLyoqCiAgICogRGlzcGF0Y2hlcyB7cHJvcGVydHl9LWNoYW5nZWQgZXZlbnRzIHRvIGluZGljYXRlIGEgcHJvcGVydHkgKG9yIHBhdGgpCiAgICogY2hhbmdlZC4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGVsZW1lbnQgZnJvbSB3aGljaCB0byBmaXJlIHRoZSBldmVudAogICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV2ZW50IHRvIHNlbmQgKCd7cHJvcGVydHl9LWNoYW5nZWQnKQogICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBjaGFuZ2VkIHByb3BlcnR5CiAgICogQHBhcmFtIHtzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkfSBwYXRoIElmIGEgc3ViLXBhdGggb2YgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VkLCB0aGUgcGF0aAogICAqICAgdGhhdCBjaGFuZ2VkIChvcHRpb25hbCkuCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqIEBzdXBwcmVzcyB7aW52YWxpZENhc3RzfQogICAqLwogIGZ1bmN0aW9uIGRpc3BhdGNoTm90aWZ5RXZlbnQoaW5zdCwgZXZlbnROYW1lLCB2YWx1ZSwgcGF0aCkgewogICAgbGV0IGRldGFpbCA9IHsKICAgICAgdmFsdWU6IHZhbHVlLAogICAgICBxdWV1ZVByb3BlcnR5OiB0cnVlCiAgICB9OwogICAgaWYgKHBhdGgpIHsKICAgICAgZGV0YWlsLnBhdGggPSBwYXRoOwogICAgfQogICAgLyoqIEB0eXBlIHshSFRNTEVsZW1lbnR9ICovKGluc3QpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50TmFtZSwgeyBkZXRhaWwgfSkpOwogIH0KCiAgLyoqCiAgICogSW1wbGVtZW50cyB0aGUgIm5vdGlmeSIgZWZmZWN0LgogICAqCiAgICogRGlzcGF0Y2hlcyBhIG5vbi1idWJibGluZyBldmVudCBuYW1lZCBgaW5mby5ldmVudE5hbWVgIG9uIHRoZSBpbnN0YW5jZQogICAqIHdpdGggYSBkZXRhaWwgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIG5ldyBgdmFsdWVgLgogICAqCiAgICogQHBhcmFtIHshUHJvcGVydHlFZmZlY3RzVHlwZX0gaW5zdCBUaGUgaW5zdGFuY2UgdGhlIGVmZmVjdCB3aWxsIGJlIHJ1biBvbgogICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBOYW1lIG9mIHByb3BlcnR5CiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBjdXJyZW50IHByb3BlcnR5IGNoYW5nZXMKICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHs/fSBpbmZvIEVmZmVjdCBtZXRhZGF0YQogICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzUGF0aHMgVHJ1ZSB3aXRoIGBwcm9wc2AgY29udGFpbnMgb25lIG9yIG1vcmUgcGF0aHMKICAgKiBAcmV0dXJuIHt2b2lkfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gcnVuTm90aWZ5RWZmZWN0KGluc3QsIHByb3BlcnR5LCBwcm9wcywgb2xkUHJvcHMsIGluZm8sIGhhc1BhdGhzKSB7CiAgICBsZXQgcm9vdFByb3BlcnR5ID0gaGFzUGF0aHMgPyBQb2x5bWVyLlBhdGgucm9vdChwcm9wZXJ0eSkgOiBwcm9wZXJ0eTsKICAgIGxldCBwYXRoID0gcm9vdFByb3BlcnR5ICE9IHByb3BlcnR5ID8gcHJvcGVydHkgOiBudWxsOwogICAgbGV0IHZhbHVlID0gcGF0aCA/IFBvbHltZXIuUGF0aC5nZXQoaW5zdCwgcGF0aCkgOiBpbnN0Ll9fZGF0YVtwcm9wZXJ0eV07CiAgICBpZiAocGF0aCAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHZhbHVlID0gcHJvcHNbcHJvcGVydHldOyAgLy8gc3BlY2lmaWNhbGx5IGZvciAuc3BsaWNlcwogICAgfQogICAgZGlzcGF0Y2hOb3RpZnlFdmVudChpbnN0LCBpbmZvLmV2ZW50TmFtZSwgdmFsdWUsIHBhdGgpOwogIH0KCiAgLyoqCiAgICogSGFuZGxlciBmdW5jdGlvbiBmb3IgMi13YXkgbm90aWZpY2F0aW9uIGV2ZW50cy4gUmVjZWl2ZXMgY29udGV4dAogICAqIGluZm9ybWF0aW9uIGNhcHR1cmVkIGluIHRoZSBgYWRkTm90aWZ5TGlzdGVuZXJgIGNsb3N1cmUgZnJvbSB0aGUKICAgKiBgX19ub3RpZnlMaXN0ZW5lcnNgIG1ldGFkYXRhLgogICAqCiAgICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlIG5vdGlmaWVkIHByb3BlcnR5IHRvIHRoZSBob3N0IHByb3BlcnR5IG9yIHBhdGguICBJZgogICAqIHRoZSBldmVudCBjb250YWluZWQgcGF0aCBpbmZvcm1hdGlvbiwgdHJhbnNsYXRlIHRoYXQgcGF0aCB0byB0aGUgaG9zdAogICAqIHNjb3BlJ3MgbmFtZSBmb3IgdGhhdCBwYXRoIGZpcnN0LgogICAqCiAgICogQHBhcmFtIHtDdXN0b21FdmVudH0gZXZlbnQgTm90aWZpY2F0aW9uIGV2ZW50IChlLmcuICc8cHJvcGVydHk+LWNoYW5nZWQnKQogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgSG9zdCBlbGVtZW50IGluc3RhbmNlIGhhbmRsaW5nIHRoZSBub3RpZmljYXRpb24gZXZlbnQKICAgKiBAcGFyYW0ge3N0cmluZ30gZnJvbVByb3AgQ2hpbGQgZWxlbWVudCBwcm9wZXJ0eSB0aGF0IHdhcyBib3VuZAogICAqIEBwYXJhbSB7c3RyaW5nfSB0b1BhdGggSG9zdCBwcm9wZXJ0eS9wYXRoIHRoYXQgd2FzIGJvdW5kCiAgICogQHBhcmFtIHtib29sZWFufSBuZWdhdGUgV2hldGhlciB0aGUgYmluZGluZyB3YXMgbmVnYXRlZAogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBoYW5kbGVOb3RpZmljYXRpb24oZXZlbnQsIGluc3QsIGZyb21Qcm9wLCB0b1BhdGgsIG5lZ2F0ZSkgewogICAgbGV0IHZhbHVlOwogICAgbGV0IGRldGFpbCA9IC8qKiBAdHlwZSB7T2JqZWN0fSAqLyhldmVudC5kZXRhaWwpOwogICAgbGV0IGZyb21QYXRoID0gZGV0YWlsICYmIGRldGFpbC5wYXRoOwogICAgaWYgKGZyb21QYXRoKSB7CiAgICAgIHRvUGF0aCA9IFBvbHltZXIuUGF0aC50cmFuc2xhdGUoZnJvbVByb3AsIHRvUGF0aCwgZnJvbVBhdGgpOwogICAgICB2YWx1ZSA9IGRldGFpbCAmJiBkZXRhaWwudmFsdWU7CiAgICB9IGVsc2UgewogICAgICB2YWx1ZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXRbZnJvbVByb3BdOwogICAgfQogICAgdmFsdWUgPSBuZWdhdGUgPyAhdmFsdWUgOiB2YWx1ZTsKICAgIGlmICghaW5zdFtUWVBFUy5SRUFEX09OTFldIHx8ICFpbnN0W1RZUEVTLlJFQURfT05MWV1bdG9QYXRoXSkgewogICAgICBpZiAoaW5zdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHRvUGF0aCwgdmFsdWUsIHRydWUsIEJvb2xlYW4oZnJvbVBhdGgpKQogICAgICAgICYmICghZGV0YWlsIHx8ICFkZXRhaWwucXVldWVQcm9wZXJ0eSkpIHsKICAgICAgICBpbnN0Ll9pbnZhbGlkYXRlUHJvcGVydGllcygpOwogICAgICB9CiAgICB9CiAgfQoKICAvKioKICAgKiBJbXBsZW1lbnRzIHRoZSAicmVmbGVjdCIgZWZmZWN0LgogICAqCiAgICogU2V0cyB0aGUgYXR0cmlidXRlIG5hbWVkIGBpbmZvLmF0dHJOYW1lYCB0byB0aGUgZ2l2ZW4gcHJvcGVydHkgdmFsdWUuCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IFRoZSBpbnN0YW5jZSB0aGUgZWZmZWN0IHdpbGwgYmUgcnVuIG9uCiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgcHJvcGVydHkKICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIGN1cnJlbnQgcHJvcGVydHkgY2hhbmdlcwogICAqIEBwYXJhbSB7T2JqZWN0fSBvbGRQcm9wcyBCYWcgb2YgcHJldmlvdXMgdmFsdWVzIGZvciBjaGFuZ2VkIHByb3BlcnRpZXMKICAgKiBAcGFyYW0gez99IGluZm8gRWZmZWN0IG1ldGFkYXRhCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHJ1blJlZmxlY3RFZmZlY3QoaW5zdCwgcHJvcGVydHksIHByb3BzLCBvbGRQcm9wcywgaW5mbykgewogICAgbGV0IHZhbHVlID0gaW5zdC5fX2RhdGFbcHJvcGVydHldOwogICAgaWYgKFBvbHltZXIuc2FuaXRpemVET01WYWx1ZSkgewogICAgICB2YWx1ZSA9IFBvbHltZXIuc2FuaXRpemVET01WYWx1ZSh2YWx1ZSwgaW5mby5hdHRyTmFtZSwgJ2F0dHJpYnV0ZScsIC8qKiBAdHlwZSB7Tm9kZX0gKi8oaW5zdCkpOwogICAgfQogICAgaW5zdC5fcHJvcGVydHlUb0F0dHJpYnV0ZShwcm9wZXJ0eSwgaW5mby5hdHRyTmFtZSwgdmFsdWUpOwogIH0KCiAgLyoqCiAgICogUnVucyAiY29tcHV0ZWQiIGVmZmVjdHMgZm9yIGEgc2V0IG9mIGNoYW5nZWQgcHJvcGVydGllcy4KICAgKgogICAqIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSB0aGUgZ2VuZXJpYyBgcnVuRWZmZWN0c2AgbWV0aG9kIGluIHRoYXQgaXQKICAgKiBjb250aW51ZXMgdG8gcnVuIGNvbXB1dGVkIGVmZmVjdHMgYmFzZWQgb24gdGhlIG91dHB1dCBvZiBlYWNoIHBhc3MgdW50aWwKICAgKiB0aGVyZSBhcmUgbm8gbW9yZSBuZXdseSBjb21wdXRlZCBwcm9wZXJ0aWVzLiAgVGhpcyBlbnN1cmVzIHRoYXQgYWxsCiAgICogcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgY29tcHV0ZWQgYnkgdGhlIGluaXRpYWwgc2V0IG9mIGNoYW5nZXMgYXJlCiAgICogY29tcHV0ZWQgYmVmb3JlIG90aGVyIGVmZmVjdHMgKGJpbmRpbmcgcHJvcGFnYXRpb24sIG9ic2VydmVycywgYW5kIG5vdGlmeSkKICAgKiBydW4uCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IFRoZSBpbnN0YW5jZSB0aGUgZWZmZWN0IHdpbGwgYmUgcnVuIG9uCiAgICogQHBhcmFtIHshT2JqZWN0fSBjaGFuZ2VkUHJvcHMgQmFnIG9mIGNoYW5nZWQgcHJvcGVydGllcwogICAqIEBwYXJhbSB7IU9iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHtib29sZWFufSBoYXNQYXRocyBUcnVlIHdpdGggYHByb3BzYCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXRocwogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBydW5Db21wdXRlZEVmZmVjdHMoaW5zdCwgY2hhbmdlZFByb3BzLCBvbGRQcm9wcywgaGFzUGF0aHMpIHsKICAgIGxldCBjb21wdXRlRWZmZWN0cyA9IGluc3RbVFlQRVMuQ09NUFVURV07CiAgICBpZiAoY29tcHV0ZUVmZmVjdHMpIHsKICAgICAgbGV0IGlucHV0UHJvcHMgPSBjaGFuZ2VkUHJvcHM7CiAgICAgIHdoaWxlIChydW5FZmZlY3RzKGluc3QsIGNvbXB1dGVFZmZlY3RzLCBpbnB1dFByb3BzLCBvbGRQcm9wcywgaGFzUGF0aHMpKSB7CiAgICAgICAgT2JqZWN0LmFzc2lnbihvbGRQcm9wcywgaW5zdC5fX2RhdGFPbGQpOwogICAgICAgIE9iamVjdC5hc3NpZ24oY2hhbmdlZFByb3BzLCBpbnN0Ll9fZGF0YVBlbmRpbmcpOwogICAgICAgIGlucHV0UHJvcHMgPSBpbnN0Ll9fZGF0YVBlbmRpbmc7CiAgICAgICAgaW5zdC5fX2RhdGFQZW5kaW5nID0gbnVsbDsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogSW1wbGVtZW50cyB0aGUgImNvbXB1dGVkIHByb3BlcnR5IiBlZmZlY3QgYnkgcnVubmluZyB0aGUgbWV0aG9kIHdpdGggdGhlCiAgICogdmFsdWVzIG9mIHRoZSBhcmd1bWVudHMgc3BlY2lmaWVkIGluIHRoZSBgaW5mb2Agb2JqZWN0IGFuZCBzZXR0aW5nIHRoZQogICAqIHJldHVybiB2YWx1ZSB0byB0aGUgY29tcHV0ZWQgcHJvcGVydHkgc3BlY2lmaWVkLgogICAqCiAgICogQHBhcmFtIHshUHJvcGVydHlFZmZlY3RzVHlwZX0gaW5zdCBUaGUgaW5zdGFuY2UgdGhlIGVmZmVjdCB3aWxsIGJlIHJ1biBvbgogICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBOYW1lIG9mIHByb3BlcnR5CiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBjdXJyZW50IHByb3BlcnR5IGNoYW5nZXMKICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHs/fSBpbmZvIEVmZmVjdCBtZXRhZGF0YQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBydW5Db21wdXRlZEVmZmVjdChpbnN0LCBwcm9wZXJ0eSwgcHJvcHMsIG9sZFByb3BzLCBpbmZvKSB7CiAgICBsZXQgcmVzdWx0ID0gcnVuTWV0aG9kRWZmZWN0KGluc3QsIHByb3BlcnR5LCBwcm9wcywgb2xkUHJvcHMsIGluZm8pOwogICAgbGV0IGNvbXB1dGVkUHJvcCA9IGluZm8ubWV0aG9kSW5mbzsKICAgIGlmIChpbnN0Ll9fZGF0YUhhc0FjY2Vzc29yICYmIGluc3QuX19kYXRhSGFzQWNjZXNzb3JbY29tcHV0ZWRQcm9wXSkgewogICAgICBpbnN0Ll9zZXRQZW5kaW5nUHJvcGVydHkoY29tcHV0ZWRQcm9wLCByZXN1bHQsIHRydWUpOwogICAgfSBlbHNlIHsKICAgICAgaW5zdFtjb21wdXRlZFByb3BdID0gcmVzdWx0OwogICAgfQogIH0KCiAgLyoqCiAgICogQ29tcHV0ZXMgcGF0aCBjaGFuZ2VzIGJhc2VkIG9uIHBhdGggbGlua3Mgc2V0IHVwIHVzaW5nIHRoZSBgbGlua1BhdGhzYAogICAqIEFQSS4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGluc3RhbmNlIHdob3NlIHByb3BzIGFyZSBjaGFuZ2luZwogICAqIEBwYXJhbSB7c3RyaW5nIHwgIUFycmF5PChzdHJpbmd8bnVtYmVyKT59IHBhdGggUGF0aCB0aGF0IGhhcyBjaGFuZ2VkCiAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSBvZiBjaGFuZ2VkIHBhdGgKICAgKiBAcmV0dXJuIHt2b2lkfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gY29tcHV0ZUxpbmtlZFBhdGhzKGluc3QsIHBhdGgsIHZhbHVlKSB7CiAgICBsZXQgbGlua3MgPSBpbnN0Ll9fZGF0YUxpbmtlZFBhdGhzOwogICAgaWYgKGxpbmtzKSB7CiAgICAgIGxldCBsaW5rOwogICAgICBmb3IgKGxldCBhIGluIGxpbmtzKSB7CiAgICAgICAgbGV0IGIgPSBsaW5rc1thXTsKICAgICAgICBpZiAoUG9seW1lci5QYXRoLmlzRGVzY2VuZGFudChhLCBwYXRoKSkgewogICAgICAgICAgbGluayA9IFBvbHltZXIuUGF0aC50cmFuc2xhdGUoYSwgYiwgcGF0aCk7CiAgICAgICAgICBpbnN0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgobGluaywgdmFsdWUsIHRydWUsIHRydWUpOwogICAgICAgIH0gZWxzZSBpZiAoUG9seW1lci5QYXRoLmlzRGVzY2VuZGFudChiLCBwYXRoKSkgewogICAgICAgICAgbGluayA9IFBvbHltZXIuUGF0aC50cmFuc2xhdGUoYiwgYSwgcGF0aCk7CiAgICAgICAgICBpbnN0Ll9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgobGluaywgdmFsdWUsIHRydWUsIHRydWUpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgLy8gLS0gYmluZGluZ3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvKioKICAgKiBBZGRzIGJpbmRpbmcgbWV0YWRhdGEgdG8gdGhlIGN1cnJlbnQgYG5vZGVJbmZvYCwgYW5kIGJpbmRpbmcgZWZmZWN0cwogICAqIGZvciBhbGwgcGFydCBkZXBlbmRlbmNpZXMgdG8gYHRlbXBsYXRlSW5mb2AuCiAgICoKICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25zdHJ1Y3RvciBDbGFzcyB0aGF0IGBfcGFyc2VUZW1wbGF0ZWAgaXMgY3VycmVudGx5CiAgICogICBydW5uaW5nIG9uCiAgICogQHBhcmFtIHtUZW1wbGF0ZUluZm99IHRlbXBsYXRlSW5mbyBUZW1wbGF0ZSBtZXRhZGF0YSBmb3IgY3VycmVudCB0ZW1wbGF0ZQogICAqIEBwYXJhbSB7Tm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUgbm9kZQogICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIEJpbmRpbmcga2luZCwgZWl0aGVyICdwcm9wZXJ0eScsICdhdHRyaWJ1dGUnLCBvciAndGV4dCcKICAgKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0IFRhcmdldCBwcm9wZXJ0eSBuYW1lCiAgICogQHBhcmFtIHshQXJyYXk8IUJpbmRpbmdQYXJ0Pn0gcGFydHMgQXJyYXkgb2YgYmluZGluZyBwYXJ0IG1ldGFkYXRhCiAgICogQHBhcmFtIHtzdHJpbmc9fSBsaXRlcmFsIExpdGVyYWwgdGV4dCBzdXJyb3VuZGluZyBiaW5kaW5nIHBhcnRzIChzcGVjaWZpZWQKICAgKiAgIG9ubHkgZm9yICdwcm9wZXJ0eScgYmluZGluZ3MsIHNpbmNlIHRoZXNlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYXMgcGFydAogICAqICAgb2YgYm9vdC11cCkKICAgKiBAcmV0dXJuIHt2b2lkfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gYWRkQmluZGluZyhjb25zdHJ1Y3RvciwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbywga2luZCwgdGFyZ2V0LCBwYXJ0cywgbGl0ZXJhbCkgewogICAgLy8gQ3JlYXRlIGJpbmRpbmcgbWV0YWRhdGEgYW5kIGFkZCB0byBub2RlSW5mbwogICAgbm9kZUluZm8uYmluZGluZ3MgPSBub2RlSW5mby5iaW5kaW5ncyB8fCBbXTsKICAgIGxldCAvKiogQmluZGluZyAqLyBiaW5kaW5nID0geyBraW5kLCB0YXJnZXQsIHBhcnRzLCBsaXRlcmFsLCBpc0NvbXBvdW5kOiAocGFydHMubGVuZ3RoICE9PSAxKSB9OwogICAgbm9kZUluZm8uYmluZGluZ3MucHVzaChiaW5kaW5nKTsKICAgIC8vIEFkZCBsaXN0ZW5lciBpbmZvIHRvIGJpbmRpbmcgbWV0YWRhdGEKICAgIGlmIChzaG91bGRBZGRMaXN0ZW5lcihiaW5kaW5nKSkgewogICAgICBsZXQge2V2ZW50LCBuZWdhdGV9ID0gYmluZGluZy5wYXJ0c1swXTsKICAgICAgYmluZGluZy5saXN0ZW5lckV2ZW50ID0gZXZlbnQgfHwgKENhc2VNYXAuY2FtZWxUb0Rhc2hDYXNlKHRhcmdldCkgKyAnLWNoYW5nZWQnKTsKICAgICAgYmluZGluZy5saXN0ZW5lck5lZ2F0ZSA9IG5lZ2F0ZTsKICAgIH0KICAgIC8vIEFkZCAicHJvcGFnYXRlIiBwcm9wZXJ0eSBlZmZlY3RzIHRvIHRlbXBsYXRlSW5mbwogICAgbGV0IGluZGV4ID0gdGVtcGxhdGVJbmZvLm5vZGVJbmZvTGlzdC5sZW5ndGg7CiAgICBmb3IgKGxldCBpPTA7IGk8YmluZGluZy5wYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICBsZXQgcGFydCA9IGJpbmRpbmcucGFydHNbaV07CiAgICAgIHBhcnQuY29tcG91bmRJbmRleCA9IGk7CiAgICAgIGFkZEVmZmVjdEZvckJpbmRpbmdQYXJ0KGNvbnN0cnVjdG9yLCB0ZW1wbGF0ZUluZm8sIGJpbmRpbmcsIHBhcnQsIGluZGV4KTsKICAgIH0KICB9CgogIC8qKgogICAqIEFkZHMgcHJvcGVydHkgZWZmZWN0cyB0byB0aGUgZ2l2ZW4gYHRlbXBsYXRlSW5mb2AgZm9yIHRoZSBnaXZlbiBiaW5kaW5nCiAgICogcGFydC4KICAgKgogICAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbnN0cnVjdG9yIENsYXNzIHRoYXQgYF9wYXJzZVRlbXBsYXRlYCBpcyBjdXJyZW50bHkKICAgKiAgIHJ1bm5pbmcgb24KICAgKiBAcGFyYW0ge1RlbXBsYXRlSW5mb30gdGVtcGxhdGVJbmZvIFRlbXBsYXRlIG1ldGFkYXRhIGZvciBjdXJyZW50IHRlbXBsYXRlCiAgICogQHBhcmFtIHshQmluZGluZ30gYmluZGluZyBCaW5kaW5nIG1ldGFkYXRhCiAgICogQHBhcmFtIHshQmluZGluZ1BhcnR9IHBhcnQgQmluZGluZyBwYXJ0IG1ldGFkYXRhCiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGludG8gYG5vZGVJbmZvTGlzdGAgZm9yIHRoaXMgbm9kZQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgZnVuY3Rpb24gYWRkRWZmZWN0Rm9yQmluZGluZ1BhcnQoY29uc3RydWN0b3IsIHRlbXBsYXRlSW5mbywgYmluZGluZywgcGFydCwgaW5kZXgpIHsKICAgIGlmICghcGFydC5saXRlcmFsKSB7CiAgICAgIGlmIChiaW5kaW5nLmtpbmQgPT09ICdhdHRyaWJ1dGUnICYmIGJpbmRpbmcudGFyZ2V0WzBdID09PSAnLScpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ0Nhbm5vdCBzZXQgYXR0cmlidXRlICcgKyBiaW5kaW5nLnRhcmdldCArCiAgICAgICAgICAnIGJlY2F1c2UgIi0iIGlzIG5vdCBhIHZhbGlkIGF0dHJpYnV0ZSBzdGFydGluZyBjaGFyYWN0ZXInKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgZGVwZW5kZW5jaWVzID0gcGFydC5kZXBlbmRlbmNpZXM7CiAgICAgICAgbGV0IGluZm8gPSB7IGluZGV4LCBiaW5kaW5nLCBwYXJ0LCBldmFsdWF0b3I6IGNvbnN0cnVjdG9yIH07CiAgICAgICAgZm9yIChsZXQgaj0wOyBqPGRlcGVuZGVuY2llcy5sZW5ndGg7IGorKykgewogICAgICAgICAgbGV0IHRyaWdnZXIgPSBkZXBlbmRlbmNpZXNbal07CiAgICAgICAgICBpZiAodHlwZW9mIHRyaWdnZXIgPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgdHJpZ2dlciA9IHBhcnNlQXJnKHRyaWdnZXIpOwogICAgICAgICAgICB0cmlnZ2VyLndpbGRjYXJkID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIGNvbnN0cnVjdG9yLl9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KHRlbXBsYXRlSW5mbywgdHJpZ2dlci5yb290UHJvcGVydHksIHsKICAgICAgICAgICAgZm46IHJ1bkJpbmRpbmdFZmZlY3QsCiAgICAgICAgICAgIGluZm8sIHRyaWdnZXIKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogSW1wbGVtZW50cyB0aGUgImJpbmRpbmciIChwcm9wZXJ0eS9wYXRoIGJpbmRpbmcpIGVmZmVjdC4KICAgKgogICAqIE5vdGUgdGhhdCBiaW5kaW5nIHN5bnRheCBpcyBvdmVycmlkYWJsZSB2aWEgYF9wYXJzZUJpbmRpbmdzYCBhbmQKICAgKiBgX2V2YWx1YXRlQmluZGluZ2AuICBUaGlzIG1ldGhvZCB3aWxsIGNhbGwgYF9ldmFsdWF0ZUJpbmRpbmdgIGZvciBhbnkKICAgKiBub24tbGl0ZXJhbCBwYXJ0cyByZXR1cm5lZCBmcm9tIGBfcGFyc2VCaW5kaW5nc2AuICBIb3dldmVyLAogICAqIHRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIF9wYXRoXyBiaW5kaW5ncyB2aWEgY3VzdG9tIGJpbmRpbmcgcGFydHMsCiAgICogYXMgdGhpcyBpcyBzcGVjaWZpYyB0byBQb2x5bWVyJ3MgcGF0aCBiaW5kaW5nIHN5bnRheC4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGluc3RhbmNlIHRoZSBlZmZlY3Qgd2lsbCBiZSBydW4gb24KICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBOYW1lIG9mIHByb3BlcnR5CiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBjdXJyZW50IHByb3BlcnR5IGNoYW5nZXMKICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHs/fSBpbmZvIEVmZmVjdCBtZXRhZGF0YQogICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzUGF0aHMgVHJ1ZSB3aXRoIGBwcm9wc2AgY29udGFpbnMgb25lIG9yIG1vcmUgcGF0aHMKICAgKiBAcGFyYW0ge0FycmF5fSBub2RlTGlzdCBMaXN0IG9mIG5vZGVzIGFzc29jaWF0ZWQgd2l0aCBgbm9kZUluZm9MaXN0YCB0ZW1wbGF0ZQogICAqICAgbWV0YWRhdGEKICAgKiBAcmV0dXJuIHt2b2lkfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gcnVuQmluZGluZ0VmZmVjdChpbnN0LCBwYXRoLCBwcm9wcywgb2xkUHJvcHMsIGluZm8sIGhhc1BhdGhzLCBub2RlTGlzdCkgewogICAgbGV0IG5vZGUgPSBub2RlTGlzdFtpbmZvLmluZGV4XTsKICAgIGxldCBiaW5kaW5nID0gaW5mby5iaW5kaW5nOwogICAgbGV0IHBhcnQgPSBpbmZvLnBhcnQ7CiAgICAvLyBTdWJwYXRoIG5vdGlmaWNhdGlvbjogdHJhbnNmb3JtIHBhdGggYW5kIHNldCB0byBjbGllbnQKICAgIC8vIGUuZy46IGZvbz0ie3tvYmouc3VifX0iLCBwYXRoOiAnb2JqLnN1Yi5wcm9wJywgc2V0ICdmb28ucHJvcCc9b2JqLnN1Yi5wcm9wCiAgICBpZiAoaGFzUGF0aHMgJiYgcGFydC5zb3VyY2UgJiYgKHBhdGgubGVuZ3RoID4gcGFydC5zb3VyY2UubGVuZ3RoKSAmJgogICAgICAgIChiaW5kaW5nLmtpbmQgPT0gJ3Byb3BlcnR5JykgJiYgIWJpbmRpbmcuaXNDb21wb3VuZCAmJgogICAgICAgIG5vZGUuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCAmJgogICAgICAgIG5vZGUuX19kYXRhSGFzQWNjZXNzb3IgJiYgbm9kZS5fX2RhdGFIYXNBY2Nlc3NvcltiaW5kaW5nLnRhcmdldF0pIHsKICAgICAgbGV0IHZhbHVlID0gcHJvcHNbcGF0aF07CiAgICAgIHBhdGggPSBQb2x5bWVyLlBhdGgudHJhbnNsYXRlKHBhcnQuc291cmNlLCBiaW5kaW5nLnRhcmdldCwgcGF0aCk7CiAgICAgIGlmIChub2RlLl9zZXRQZW5kaW5nUHJvcGVydHlPclBhdGgocGF0aCwgdmFsdWUsIGZhbHNlLCB0cnVlKSkgewogICAgICAgIGluc3QuX2VucXVldWVDbGllbnQobm9kZSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGxldCB2YWx1ZSA9IGluZm8uZXZhbHVhdG9yLl9ldmFsdWF0ZUJpbmRpbmcoaW5zdCwgcGFydCwgcGF0aCwgcHJvcHMsIG9sZFByb3BzLCBoYXNQYXRocyk7CiAgICAgIC8vIFByb3BhZ2F0ZSB2YWx1ZSB0byBjaGlsZAogICAgICBhcHBseUJpbmRpbmdWYWx1ZShpbnN0LCBub2RlLCBiaW5kaW5nLCBwYXJ0LCB2YWx1ZSk7CiAgICB9CiAgfQoKICAvKioKICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYW4gImJpbmRpbmciIChiaW5kaW5nKSBlZmZlY3QgdG8gYSBub2RlLAogICAqIGVpdGhlciBhcyBhIHByb3BlcnR5IG9yIGF0dHJpYnV0ZS4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgVGhlIGluc3RhbmNlIG93bmluZyB0aGUgYmluZGluZyBlZmZlY3QKICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgVGFyZ2V0IG5vZGUgZm9yIGJpbmRpbmcKICAgKiBAcGFyYW0geyFCaW5kaW5nfSBiaW5kaW5nIEJpbmRpbmcgbWV0YWRhdGEKICAgKiBAcGFyYW0geyFCaW5kaW5nUGFydH0gcGFydCBCaW5kaW5nIHBhcnQgbWV0YWRhdGEKICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldAogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBhcHBseUJpbmRpbmdWYWx1ZShpbnN0LCBub2RlLCBiaW5kaW5nLCBwYXJ0LCB2YWx1ZSkgewogICAgdmFsdWUgPSBjb21wdXRlQmluZGluZ1ZhbHVlKG5vZGUsIHZhbHVlLCBiaW5kaW5nLCBwYXJ0KTsKICAgIGlmIChQb2x5bWVyLnNhbml0aXplRE9NVmFsdWUpIHsKICAgICAgdmFsdWUgPSBQb2x5bWVyLnNhbml0aXplRE9NVmFsdWUodmFsdWUsIGJpbmRpbmcudGFyZ2V0LCBiaW5kaW5nLmtpbmQsIG5vZGUpOwogICAgfQogICAgaWYgKGJpbmRpbmcua2luZCA9PSAnYXR0cmlidXRlJykgewogICAgICAvLyBBdHRyaWJ1dGUgYmluZGluZwogICAgICBpbnN0Ll92YWx1ZVRvTm9kZUF0dHJpYnV0ZSgvKiogQHR5cGUge0VsZW1lbnR9ICovKG5vZGUpLCB2YWx1ZSwgYmluZGluZy50YXJnZXQpOwogICAgfSBlbHNlIHsKICAgICAgLy8gUHJvcGVydHkgYmluZGluZwogICAgICBsZXQgcHJvcCA9IGJpbmRpbmcudGFyZ2V0OwogICAgICBpZiAobm9kZS5fX2lzUHJvcGVydHlFZmZlY3RzQ2xpZW50ICYmCiAgICAgICAgICBub2RlLl9fZGF0YUhhc0FjY2Vzc29yICYmIG5vZGUuX19kYXRhSGFzQWNjZXNzb3JbcHJvcF0pIHsKICAgICAgICBpZiAoIW5vZGVbVFlQRVMuUkVBRF9PTkxZXSB8fCAhbm9kZVtUWVBFUy5SRUFEX09OTFldW3Byb3BdKSB7CiAgICAgICAgICBpZiAobm9kZS5fc2V0UGVuZGluZ1Byb3BlcnR5KHByb3AsIHZhbHVlKSkgewogICAgICAgICAgICBpbnN0Ll9lbnF1ZXVlQ2xpZW50KG5vZGUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlICB7CiAgICAgICAgaW5zdC5fc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUobm9kZSwgcHJvcCwgdmFsdWUpOwogICAgICB9CiAgICB9CiAgfQoKICAvKioKICAgKiBUcmFuc2Zvcm1zIGFuICJiaW5kaW5nIiBlZmZlY3QgdmFsdWUgYmFzZWQgb24gY29tcG91bmQgJiBuZWdhdGlvbgogICAqIGVmZmVjdCBtZXRhZGF0YSwgYXMgd2VsbCBhcyBoYW5kbGluZyBmb3Igc3BlY2lhbC1jYXNlIHByb3BlcnRpZXMKICAgKgogICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSBOb2RlIHRoZSB2YWx1ZSB3aWxsIGJlIHNldCB0bwogICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gc2V0CiAgICogQHBhcmFtIHshQmluZGluZ30gYmluZGluZyBCaW5kaW5nIG1ldGFkYXRhCiAgICogQHBhcmFtIHshQmluZGluZ1BhcnR9IHBhcnQgQmluZGluZyBwYXJ0IG1ldGFkYXRhCiAgICogQHJldHVybiB7Kn0gVHJhbnNmb3JtZWQgdmFsdWUgdG8gc2V0CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBjb21wdXRlQmluZGluZ1ZhbHVlKG5vZGUsIHZhbHVlLCBiaW5kaW5nLCBwYXJ0KSB7CiAgICBpZiAoYmluZGluZy5pc0NvbXBvdW5kKSB7CiAgICAgIGxldCBzdG9yYWdlID0gbm9kZS5fX2RhdGFDb21wb3VuZFN0b3JhZ2VbYmluZGluZy50YXJnZXRdOwogICAgICBzdG9yYWdlW3BhcnQuY29tcG91bmRJbmRleF0gPSB2YWx1ZTsKICAgICAgdmFsdWUgPSBzdG9yYWdlLmpvaW4oJycpOwogICAgfQogICAgaWYgKGJpbmRpbmcua2luZCAhPT0gJ2F0dHJpYnV0ZScpIHsKICAgICAgLy8gU29tZSBicm93c2VycyBzZXJpYWxpemUgYHVuZGVmaW5lZGAgdG8gYCJ1bmRlZmluZWQiYAogICAgICBpZiAoYmluZGluZy50YXJnZXQgPT09ICd0ZXh0Q29udGVudCcgfHwKICAgICAgICAgIChiaW5kaW5nLnRhcmdldCA9PT0gJ3ZhbHVlJyAmJgogICAgICAgICAgICAobm9kZS5sb2NhbE5hbWUgPT09ICdpbnB1dCcgfHwgbm9kZS5sb2NhbE5hbWUgPT09ICd0ZXh0YXJlYScpKSkgewogICAgICAgIHZhbHVlID0gdmFsdWUgPT0gdW5kZWZpbmVkID8gJycgOiB2YWx1ZTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHZhbHVlOwogIH0KCiAgLyoqCiAgICogUmV0dXJucyB0cnVlIGlmIGEgYmluZGluZydzIG1ldGFkYXRhIG1lZXRzIGFsbCB0aGUgcmVxdWlyZW1lbnRzIHRvIGFsbG93CiAgICogMi13YXkgYmluZGluZywgYW5kIHRoZXJlZm9yZSBhIGA8cHJvcGVydHk+LWNoYW5nZWRgIGV2ZW50IGxpc3RlbmVyIHNob3VsZCBiZQogICAqIGFkZGVkOgogICAqIC0gdXNlZCBjdXJseSBicmFjZXMKICAgKiAtIGlzIGEgcHJvcGVydHkgKG5vdCBhdHRyaWJ1dGUpIGJpbmRpbmcKICAgKiAtIGlzIG5vdCBhIHRleHRDb250ZW50IGJpbmRpbmcKICAgKiAtIGlzIG5vdCBjb21wb3VuZAogICAqCiAgICogQHBhcmFtIHshQmluZGluZ30gYmluZGluZyBCaW5kaW5nIG1ldGFkYXRhCiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiAyLXdheSBsaXN0ZW5lciBzaG91bGQgYmUgYWRkZWQKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHNob3VsZEFkZExpc3RlbmVyKGJpbmRpbmcpIHsKICAgIHJldHVybiBCb29sZWFuKGJpbmRpbmcudGFyZ2V0KSAmJgogICAgICAgICAgIGJpbmRpbmcua2luZCAhPSAnYXR0cmlidXRlJyAmJgogICAgICAgICAgIGJpbmRpbmcua2luZCAhPSAndGV4dCcgJiYKICAgICAgICAgICAhYmluZGluZy5pc0NvbXBvdW5kICYmCiAgICAgICAgICAgYmluZGluZy5wYXJ0c1swXS5tb2RlID09PSAneyc7CiAgfQoKICAvKioKICAgKiBTZXR1cCBjb21wb3VuZCBiaW5kaW5nIHN0b3JhZ2Ugc3RydWN0dXJlcywgbm90aWZ5IGxpc3RlbmVycywgYW5kIGRhdGFIb3N0CiAgICogcmVmZXJlbmNlcyBvbnRvIHRoZSBib3VuZCBub2RlTGlzdC4KICAgKgogICAqIEBwYXJhbSB7IVByb3BlcnR5RWZmZWN0c1R5cGV9IGluc3QgSW5zdGFuY2UgdGhhdCBiYXMgYmVlbiBwcmV2aW91c2x5IGJvdW5kCiAgICogQHBhcmFtIHtUZW1wbGF0ZUluZm99IHRlbXBsYXRlSW5mbyBUZW1wbGF0ZSBtZXRhZGF0YQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBzZXR1cEJpbmRpbmdzKGluc3QsIHRlbXBsYXRlSW5mbykgewogICAgLy8gU2V0dXAgY29tcG91bmQgc3RvcmFnZSwgZGF0YUhvc3QsIGFuZCBub3RpZnkgbGlzdGVuZXJzCiAgICBsZXQge25vZGVMaXN0LCBub2RlSW5mb0xpc3R9ID0gdGVtcGxhdGVJbmZvOwogICAgaWYgKG5vZGVJbmZvTGlzdC5sZW5ndGgpIHsKICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbm9kZUluZm9MaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IGluZm8gPSBub2RlSW5mb0xpc3RbaV07CiAgICAgICAgbGV0IG5vZGUgPSBub2RlTGlzdFtpXTsKICAgICAgICBsZXQgYmluZGluZ3MgPSBpbmZvLmJpbmRpbmdzOwogICAgICAgIGlmIChiaW5kaW5ncykgewogICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGJpbmRpbmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxldCBiaW5kaW5nID0gYmluZGluZ3NbaV07CiAgICAgICAgICAgIHNldHVwQ29tcG91bmRTdG9yYWdlKG5vZGUsIGJpbmRpbmcpOwogICAgICAgICAgICBhZGROb3RpZnlMaXN0ZW5lcihub2RlLCBpbnN0LCBiaW5kaW5nKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbm9kZS5fX2RhdGFIb3N0ID0gaW5zdDsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogSW5pdGlhbGl6ZXMgYF9fZGF0YUNvbXBvdW5kU3RvcmFnZWAgbG9jYWwgc3RvcmFnZSBvbiBhIGJvdW5kIG5vZGUgd2l0aAogICAqIGluaXRpYWwgbGl0ZXJhbCBkYXRhIGZvciBjb21wb3VuZCBiaW5kaW5ncywgYW5kIHNldHMgdGhlIGpvaW5lZAogICAqIGxpdGVyYWwgcGFydHMgdG8gdGhlIGJvdW5kIHByb3BlcnR5LgogICAqCiAgICogV2hlbiBjaGFuZ2VzIHRvIGNvbXBvdW5kIHBhcnRzIG9jY3VyLCB0aGV5IGFyZSBmaXJzdCBzZXQgaW50byB0aGUgY29tcG91bmQKICAgKiBzdG9yYWdlIGFycmF5IGZvciB0aGF0IHByb3BlcnR5LCBhbmQgdGhlbiB0aGUgYXJyYXkgaXMgam9pbmVkIHRvIHJlc3VsdCBpbgogICAqIHRoZSBmaW5hbCB2YWx1ZSBzZXQgdG8gdGhlIHByb3BlcnR5L2F0dHJpYnV0ZS4KICAgKgogICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSBCb3VuZCBub2RlIHRvIGluaXRpYWxpemUKICAgKiBAcGFyYW0ge0JpbmRpbmd9IGJpbmRpbmcgQmluZGluZyBtZXRhZGF0YQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBzZXR1cENvbXBvdW5kU3RvcmFnZShub2RlLCBiaW5kaW5nKSB7CiAgICBpZiAoYmluZGluZy5pc0NvbXBvdW5kKSB7CiAgICAgIC8vIENyZWF0ZSBjb21wb3VuZCBzdG9yYWdlIG1hcAogICAgICBsZXQgc3RvcmFnZSA9IG5vZGUuX19kYXRhQ29tcG91bmRTdG9yYWdlIHx8CiAgICAgICAgKG5vZGUuX19kYXRhQ29tcG91bmRTdG9yYWdlID0ge30pOwogICAgICBsZXQgcGFydHMgPSBiaW5kaW5nLnBhcnRzOwogICAgICAvLyBDb3B5IGxpdGVyYWxzIGZyb20gcGFydHMgaW50byBzdG9yYWdlIGZvciB0aGlzIGJpbmRpbmcKICAgICAgbGV0IGxpdGVyYWxzID0gbmV3IEFycmF5KHBhcnRzLmxlbmd0aCk7CiAgICAgIGZvciAobGV0IGo9MDsgajxwYXJ0cy5sZW5ndGg7IGorKykgewogICAgICAgIGxpdGVyYWxzW2pdID0gcGFydHNbal0ubGl0ZXJhbDsKICAgICAgfQogICAgICBsZXQgdGFyZ2V0ID0gYmluZGluZy50YXJnZXQ7CiAgICAgIHN0b3JhZ2VbdGFyZ2V0XSA9IGxpdGVyYWxzOwogICAgICAvLyBDb25maWd1cmUgcHJvcGVydGllcyB3aXRoIHRoZWlyIGxpdGVyYWwgcGFydHMKICAgICAgaWYgKGJpbmRpbmcubGl0ZXJhbCAmJiBiaW5kaW5nLmtpbmQgPT0gJ3Byb3BlcnR5JykgewogICAgICAgIG5vZGVbdGFyZ2V0XSA9IGJpbmRpbmcubGl0ZXJhbDsKICAgICAgfQogICAgfQogIH0KCiAgLyoqCiAgICogQWRkcyBhIDItd2F5IGJpbmRpbmcgbm90aWZpY2F0aW9uIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBub2RlIHNwZWNpZmllZAogICAqCiAgICogQHBhcmFtIHtPYmplY3R9IG5vZGUgQ2hpbGQgZWxlbWVudCB0byBhZGQgbGlzdGVuZXIgdG8KICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IEhvc3QgZWxlbWVudCBpbnN0YW5jZSB0byBoYW5kbGUgbm90aWZpY2F0aW9uIGV2ZW50CiAgICogQHBhcmFtIHtCaW5kaW5nfSBiaW5kaW5nIEJpbmRpbmcgbWV0YWRhdGEKICAgKiBAcmV0dXJuIHt2b2lkfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gYWRkTm90aWZ5TGlzdGVuZXIobm9kZSwgaW5zdCwgYmluZGluZykgewogICAgaWYgKGJpbmRpbmcubGlzdGVuZXJFdmVudCkgewogICAgICBsZXQgcGFydCA9IGJpbmRpbmcucGFydHNbMF07CiAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihiaW5kaW5nLmxpc3RlbmVyRXZlbnQsIGZ1bmN0aW9uKGUpIHsKICAgICAgICBoYW5kbGVOb3RpZmljYXRpb24oZSwgaW5zdCwgYmluZGluZy50YXJnZXQsIHBhcnQuc291cmNlLCBwYXJ0Lm5lZ2F0ZSk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gLS0gZm9yIG1ldGhvZC1iYXNlZCBlZmZlY3RzIChjb21wbGV4T2JzZXJ2ZXIgJiBjb21wdXRlZCkgLS0tLS0tLS0tLS0tLS0KCiAgLyoqCiAgICogQWRkcyBwcm9wZXJ0eSBlZmZlY3RzIGZvciBlYWNoIGFyZ3VtZW50IGluIHRoZSBtZXRob2Qgc2lnbmF0dXJlIChhbmQKICAgKiBvcHRpb25hbGx5LCBmb3IgdGhlIG1ldGhvZCBuYW1lIGlmIGBkeW5hbWljYCBpcyB0cnVlKSB0aGF0IGNhbGxzIHRoZQogICAqIHByb3ZpZGVkIGVmZmVjdCBmdW5jdGlvbi4KICAgKgogICAqIEBwYXJhbSB7RWxlbWVudCB8IE9iamVjdH0gbW9kZWwgUHJvdG90eXBlIG9yIGluc3RhbmNlCiAgICogQHBhcmFtIHshTWV0aG9kU2lnbmF0dXJlfSBzaWcgTWV0aG9kIHNpZ25hdHVyZSBtZXRhZGF0YQogICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFR5cGUgb2YgcHJvcGVydHkgZWZmZWN0IHRvIGFkZAogICAqIEBwYXJhbSB7RnVuY3Rpb259IGVmZmVjdEZuIEZ1bmN0aW9uIHRvIHJ1biB3aGVuIGFyZ3VtZW50cyBjaGFuZ2UKICAgKiBAcGFyYW0geyo9fSBtZXRob2RJbmZvIEVmZmVjdC1zcGVjaWZpYyBpbmZvcm1hdGlvbiB0byBiZSBpbmNsdWRlZCBpbgogICAqICAgbWV0aG9kIGVmZmVjdCBtZXRhZGF0YQogICAqIEBwYXJhbSB7Ym9vbGVhbnxPYmplY3Q9fSBkeW5hbWljRm4gQm9vbGVhbiBvciBvYmplY3QgbWFwIGluZGljYXRpbmcgd2hldGhlcgogICAqICAgbWV0aG9kIG5hbWVzIHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhIGRlcGVuZGVuY3kgdG8gdGhlIGVmZmVjdC4gTm90ZSwKICAgKiAgIGRlZmF1bHRzIHRvIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyBzdGF0aWMgKHNpZy5zdGF0aWMgaXMgdHJ1ZSkuCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIGNyZWF0ZU1ldGhvZEVmZmVjdChtb2RlbCwgc2lnLCB0eXBlLCBlZmZlY3RGbiwgbWV0aG9kSW5mbywgZHluYW1pY0ZuKSB7CiAgICBkeW5hbWljRm4gPSBzaWcuc3RhdGljIHx8IChkeW5hbWljRm4gJiYKICAgICAgKHR5cGVvZiBkeW5hbWljRm4gIT09ICdvYmplY3QnIHx8IGR5bmFtaWNGbltzaWcubWV0aG9kTmFtZV0pKTsKICAgIGxldCBpbmZvID0gewogICAgICBtZXRob2ROYW1lOiBzaWcubWV0aG9kTmFtZSwKICAgICAgYXJnczogc2lnLmFyZ3MsCiAgICAgIG1ldGhvZEluZm8sCiAgICAgIGR5bmFtaWNGbgogICAgfTsKICAgIGZvciAobGV0IGk9MCwgYXJnOyAoaTxzaWcuYXJncy5sZW5ndGgpICYmIChhcmc9c2lnLmFyZ3NbaV0pOyBpKyspIHsKICAgICAgaWYgKCFhcmcubGl0ZXJhbCkgewogICAgICAgIG1vZGVsLl9hZGRQcm9wZXJ0eUVmZmVjdChhcmcucm9vdFByb3BlcnR5LCB0eXBlLCB7CiAgICAgICAgICBmbjogZWZmZWN0Rm4sIGluZm86IGluZm8sIHRyaWdnZXI6IGFyZwogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgICBpZiAoZHluYW1pY0ZuKSB7CiAgICAgIG1vZGVsLl9hZGRQcm9wZXJ0eUVmZmVjdChzaWcubWV0aG9kTmFtZSwgdHlwZSwgewogICAgICAgIGZuOiBlZmZlY3RGbiwgaW5mbzogaW5mbwogICAgICB9KTsKICAgIH0KICB9CgogIC8qKgogICAqIENhbGxzIGEgbWV0aG9kIHdpdGggYXJndW1lbnRzIG1hcnNoYWxlZCBmcm9tIHByb3BlcnRpZXMgb24gdGhlIGluc3RhbmNlCiAgICogYmFzZWQgb24gdGhlIG1ldGhvZCBzaWduYXR1cmUgY29udGFpbmVkIGluIHRoZSBlZmZlY3QgbWV0YWRhdGEuCiAgICoKICAgKiBNdWx0aS1wcm9wZXJ0eSBvYnNlcnZlcnMsIGNvbXB1dGVkIHByb3BlcnRpZXMsIGFuZCBpbmxpbmUgY29tcHV0aW5nCiAgICogZnVuY3Rpb25zIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBpbnZva2UgdGhlIG1ldGhvZCwgdGhlbiB1c2UgdGhlIHJldHVybgogICAqIHZhbHVlIGFjY29yZGluZ2x5LgogICAqCiAgICogQHBhcmFtIHshUHJvcGVydHlFZmZlY3RzVHlwZX0gaW5zdCBUaGUgaW5zdGFuY2UgdGhlIGVmZmVjdCB3aWxsIGJlIHJ1biBvbgogICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBOYW1lIG9mIHByb3BlcnR5CiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzIEJhZyBvZiBjdXJyZW50IHByb3BlcnR5IGNoYW5nZXMKICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICogQHBhcmFtIHs/fSBpbmZvIEVmZmVjdCBtZXRhZGF0YQogICAqIEByZXR1cm4geyp9IFJldHVybnMgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBtZXRob2QgaW52b2NhdGlvbgogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gcnVuTWV0aG9kRWZmZWN0KGluc3QsIHByb3BlcnR5LCBwcm9wcywgb2xkUHJvcHMsIGluZm8pIHsKICAgIC8vIEluc3RhbmNlcyBjYW4gb3B0aW9uYWxseSBoYXZlIGEgX21ldGhvZEhvc3Qgd2hpY2ggYWxsb3dzIHJlZGlyZWN0aW5nIHdoZXJlCiAgICAvLyB0byBmaW5kIG1ldGhvZHMuIEN1cnJlbnRseSB1c2VkIGJ5IGB0ZW1wbGF0aXplYC4KICAgIGxldCBjb250ZXh0ID0gaW5zdC5fbWV0aG9kSG9zdCB8fCBpbnN0OwogICAgbGV0IGZuID0gY29udGV4dFtpbmZvLm1ldGhvZE5hbWVdOwogICAgaWYgKGZuKSB7CiAgICAgIGxldCBhcmdzID0gaW5zdC5fbWFyc2hhbEFyZ3MoaW5mby5hcmdzLCBwcm9wZXJ0eSwgcHJvcHMpOwogICAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJncyk7CiAgICB9IGVsc2UgaWYgKCFpbmZvLmR5bmFtaWNGbikgewogICAgICBjb25zb2xlLndhcm4oJ21ldGhvZCBgJyArIGluZm8ubWV0aG9kTmFtZSArICdgIG5vdCBkZWZpbmVkJyk7CiAgICB9CiAgfQoKICBjb25zdCBlbXB0eUFycmF5ID0gW107CgogIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbnMgdXNlZCBmb3IgYmluZGluZwogIGNvbnN0IElERU5UICA9ICcoPzonICsgJ1thLXpBLVpfJF1bXFx3LjokXFwtKl0qJyArICcpJzsKICBjb25zdCBOVU1CRVIgPSAnKD86JyArICdbLStdP1swLTldKlxcLj9bMC05XSsoPzpbZUVdWy0rXT9bMC05XSspPycgKyAnKSc7CiAgY29uc3QgU1FVT1RFX1NUUklORyA9ICcoPzonICsgJ1wnKD86W15cJ1xcXFxdfFxcXFwuKSpcJycgKyAnKSc7CiAgY29uc3QgRFFVT1RFX1NUUklORyA9ICcoPzonICsgJyIoPzpbXiJcXFxcXXxcXFxcLikqIicgKyAnKSc7CiAgY29uc3QgU1RSSU5HID0gJyg/OicgKyBTUVVPVEVfU1RSSU5HICsgJ3wnICsgRFFVT1RFX1NUUklORyArICcpJzsKICBjb25zdCBBUkdVTUVOVCA9ICcoPzooJyArIElERU5UICsgJ3wnICsgTlVNQkVSICsgJ3wnICsgIFNUUklORyArICcpXFxzKicgKyAnKSc7CiAgY29uc3QgQVJHVU1FTlRTID0gJyg/OicgKyBBUkdVTUVOVCArICcoPzosXFxzKicgKyBBUkdVTUVOVCArICcpKicgKyAnKSc7CiAgY29uc3QgQVJHVU1FTlRfTElTVCA9ICcoPzonICsgJ1xcKFxccyonICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD86JyArIEFSR1VNRU5UUyArICc/JyArICcpJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXClcXHMqJyArICcpJzsKICBjb25zdCBCSU5ESU5HID0gJygnICsgSURFTlQgKyAnXFxzKicgKyBBUkdVTUVOVF9MSVNUICsgJz8nICsgJyknOyAvLyBHcm91cCAzCiAgY29uc3QgT1BFTl9CUkFDS0VUID0gJyhcXFtcXFt8e3spJyArICdcXHMqJzsKICBjb25zdCBDTE9TRV9CUkFDS0VUID0gJyg/Ol1dfH19KSc7CiAgY29uc3QgTkVHQVRFID0gJyg/OighKVxccyopPyc7IC8vIEdyb3VwIDIKICBjb25zdCBFWFBSRVNTSU9OID0gT1BFTl9CUkFDS0VUICsgTkVHQVRFICsgQklORElORyArIENMT1NFX0JSQUNLRVQ7CiAgY29uc3QgYmluZGluZ1JlZ2V4ID0gbmV3IFJlZ0V4cChFWFBSRVNTSU9OLCAiZyIpOwoKICAvKioKICAgKiBDcmVhdGUgYSBzdHJpbmcgZnJvbSBiaW5kaW5nIHBhcnRzIG9mIGFsbCB0aGUgbGl0ZXJhbCBwYXJ0cwogICAqCiAgICogQHBhcmFtIHshQXJyYXk8QmluZGluZ1BhcnQ+fSBwYXJ0cyBBbGwgcGFydHMgdG8gc3RyaW5naWZ5CiAgICogQHJldHVybiB7c3RyaW5nfSBTdHJpbmcgbWFkZSBmcm9tIHRoZSBsaXRlcmFsIHBhcnRzCiAgICovCiAgZnVuY3Rpb24gbGl0ZXJhbEZyb21QYXJ0cyhwYXJ0cykgewogICAgbGV0IHMgPSAnJzsKICAgIGZvciAobGV0IGk9MDsgaTxwYXJ0cy5sZW5ndGg7IGkrKykgewogICAgICBsZXQgbGl0ZXJhbCA9IHBhcnRzW2ldLmxpdGVyYWw7CiAgICAgIHMgKz0gbGl0ZXJhbCB8fCAnJzsKICAgIH0KICAgIHJldHVybiBzOwogIH0KCiAgLyoqCiAgICogUGFyc2VzIGFuIGV4cHJlc3Npb24gc3RyaW5nIGZvciBhIG1ldGhvZCBzaWduYXR1cmUsIGFuZCByZXR1cm5zIGEgbWV0YWRhdGEKICAgKiBkZXNjcmliaW5nIHRoZSBtZXRob2QgaW4gdGVybXMgb2YgYG1ldGhvZE5hbWVgLCBgc3RhdGljYCAod2hldGhlciBhbGwgdGhlCiAgICogYXJndW1lbnRzIGFyZSBsaXRlcmFscyksIGFuZCBhbiBhcnJheSBvZiBgYXJnc2AKICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIFRoZSBleHByZXNzaW9uIHRvIHBhcnNlCiAgICogQHJldHVybiB7P01ldGhvZFNpZ25hdHVyZX0gVGhlIG1ldGhvZCBtZXRhZGF0YSBvYmplY3QgaWYgYSBtZXRob2QgZXhwcmVzc2lvbiB3YXMKICAgKiAgIGZvdW5kLCBvdGhlcndpc2UgYHVuZGVmaW5lZGAKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHBhcnNlTWV0aG9kKGV4cHJlc3Npb24pIHsKICAgIC8vIHRyaWVzIHRvIG1hdGNoIHZhbGlkIGphdmFzY3JpcHQgcHJvcGVydHkgbmFtZXMKICAgIGxldCBtID0gZXhwcmVzc2lvbi5tYXRjaCgvKFteXHNdKz8pXCgoW1xzXFNdKilcKS8pOwogICAgaWYgKG0pIHsKICAgICAgbGV0IG1ldGhvZE5hbWUgPSBtWzFdOwogICAgICBsZXQgc2lnID0geyBtZXRob2ROYW1lLCBzdGF0aWM6IHRydWUsIGFyZ3M6IGVtcHR5QXJyYXkgfTsKICAgICAgaWYgKG1bMl0udHJpbSgpKSB7CiAgICAgICAgLy8gcmVwbGFjZSBlc2NhcGVkIGNvbW1hcyB3aXRoIGNvbW1hIGVudGl0eSwgc3BsaXQgb24gdW4tZXNjYXBlZCBjb21tYXMKICAgICAgICBsZXQgYXJncyA9IG1bMl0ucmVwbGFjZSgvXFwsL2csICcmY29tbWE7Jykuc3BsaXQoJywnKTsKICAgICAgICByZXR1cm4gcGFyc2VBcmdzKGFyZ3MsIHNpZyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHNpZzsKICAgICAgfQogICAgfQogICAgcmV0dXJuIG51bGw7CiAgfQoKICAvKioKICAgKiBQYXJzZXMgYW4gYXJyYXkgb2YgYXJndW1lbnRzIGFuZCBzZXRzIHRoZSBgYXJnc2AgcHJvcGVydHkgb2YgdGhlIHN1cHBsaWVkCiAgICogc2lnbmF0dXJlIG1ldGFkYXRhIG9iamVjdC4gU2V0cyB0aGUgYHN0YXRpY2AgcHJvcGVydHkgdG8gZmFsc2UgaWYgYW55CiAgICogYXJndW1lbnQgaXMgYSBub24tbGl0ZXJhbC4KICAgKgogICAqIEBwYXJhbSB7IUFycmF5PHN0cmluZz59IGFyZ0xpc3QgQXJyYXkgb2YgYXJndW1lbnQgbmFtZXMKICAgKiBAcGFyYW0geyFNZXRob2RTaWduYXR1cmV9IHNpZyBNZXRob2Qgc2lnbmF0dXJlIG1ldGFkYXRhIG9iamVjdAogICAqIEByZXR1cm4geyFNZXRob2RTaWduYXR1cmV9IFRoZSB1cGRhdGVkIHNpZ25hdHVyZSBtZXRhZGF0YSBvYmplY3QKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHBhcnNlQXJncyhhcmdMaXN0LCBzaWcpIHsKICAgIHNpZy5hcmdzID0gYXJnTGlzdC5tYXAoZnVuY3Rpb24ocmF3QXJnKSB7CiAgICAgIGxldCBhcmcgPSBwYXJzZUFyZyhyYXdBcmcpOwogICAgICBpZiAoIWFyZy5saXRlcmFsKSB7CiAgICAgICAgc2lnLnN0YXRpYyA9IGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiBhcmc7CiAgICB9LCB0aGlzKTsKICAgIHJldHVybiBzaWc7CiAgfQoKICAvKioKICAgKiBQYXJzZXMgYW4gaW5kaXZpZHVhbCBhcmd1bWVudCwgYW5kIHJldHVybnMgYW4gYXJndW1lbnQgbWV0YWRhdGEgb2JqZWN0CiAgICogd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKICAgKgogICAqICAgewogICAqICAgICB2YWx1ZTogJ3Byb3AnLCAgICAgICAgLy8gcHJvcGVydHkvcGF0aCBvciBsaXRlcmFsIHZhbHVlCiAgICogICAgIGxpdGVyYWw6IGZhbHNlLCAgICAgICAvLyB3aGV0aGVyIGFyZ3VtZW50IGlzIGEgbGl0ZXJhbAogICAqICAgICBzdHJ1Y3R1cmVkOiBmYWxzZSwgICAgLy8gd2hldGhlciB0aGUgcHJvcGVydHkgaXMgYSBwYXRoCiAgICogICAgIHJvb3RQcm9wZXJ0eTogJ3Byb3AnLCAvLyB0aGUgcm9vdCBwcm9wZXJ0eSBvZiB0aGUgcGF0aAogICAqICAgICB3aWxkY2FyZDogZmFsc2UgICAgICAgLy8gd2hldGhlciB0aGUgYXJndW1lbnQgd2FzIGEgd2lsZGNhcmQgJy4qJyBwYXRoCiAgICogICB9CiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3QXJnIFRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlIGFyZ3VtZW50CiAgICogQHJldHVybiB7IU1ldGhvZEFyZ30gQXJndW1lbnQgbWV0YWRhdGEgb2JqZWN0CiAgICogQHByaXZhdGUKICAgKi8KICBmdW5jdGlvbiBwYXJzZUFyZyhyYXdBcmcpIHsKICAgIC8vIGNsZWFuIHVwIHdoaXRlc3BhY2UKICAgIGxldCBhcmcgPSByYXdBcmcudHJpbSgpCiAgICAgIC8vIHJlcGxhY2UgY29tbWEgZW50aXR5IHdpdGggY29tbWEKICAgICAgLnJlcGxhY2UoLyZjb21tYTsvZywgJywnKQogICAgICAvLyByZXBhaXIgZXh0cmEgZXNjYXBlIHNlcXVlbmNlczsgbm90ZSBvbmx5IGNvbW1hcyBzdHJpY3RseSBuZWVkCiAgICAgIC8vIGVzY2FwaW5nLCBidXQgd2UgYWxsb3cgYW55IG90aGVyIGNoYXIgdG8gYmUgZXNjYXBlZCBzaW5jZSBpdHMKICAgICAgLy8gbGlrZWx5IHVzZXJzIHdpbGwgZG8gdGhpcwogICAgICAucmVwbGFjZSgvXFwoLikvZywgJ1wkMScpCiAgICAgIDsKICAgIC8vIGJhc2ljIGFyZ3VtZW50IGRlc2NyaXB0b3IKICAgIGxldCBhID0gewogICAgICBuYW1lOiBhcmcsCiAgICAgIHZhbHVlOiAnJywKICAgICAgbGl0ZXJhbDogZmFsc2UKICAgIH07CiAgICAvLyBkZXRlY3QgbGl0ZXJhbCB2YWx1ZSAobXVzdCBiZSBTdHJpbmcgb3IgTnVtYmVyKQogICAgbGV0IGZjID0gYXJnWzBdOwogICAgaWYgKGZjID09PSAnLScpIHsKICAgICAgZmMgPSBhcmdbMV07CiAgICB9CiAgICBpZiAoZmMgPj0gJzAnICYmIGZjIDw9ICc5JykgewogICAgICBmYyA9ICcjJzsKICAgIH0KICAgIHN3aXRjaChmYykgewogICAgICBjYXNlICInIjoKICAgICAgY2FzZSAnIic6CiAgICAgICAgYS52YWx1ZSA9IGFyZy5zbGljZSgxLCAtMSk7CiAgICAgICAgYS5saXRlcmFsID0gdHJ1ZTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIyc6CiAgICAgICAgYS52YWx1ZSA9IE51bWJlcihhcmcpOwogICAgICAgIGEubGl0ZXJhbCA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICB9CiAgICAvLyBpZiBub3QgbGl0ZXJhbCwgbG9vayBmb3Igc3RydWN0dXJlZCBwYXRoCiAgICBpZiAoIWEubGl0ZXJhbCkgewogICAgICBhLnJvb3RQcm9wZXJ0eSA9IFBvbHltZXIuUGF0aC5yb290KGFyZyk7CiAgICAgIC8vIGRldGVjdCBzdHJ1Y3R1cmVkIHBhdGggKGhhcyBkb3RzKQogICAgICBhLnN0cnVjdHVyZWQgPSBQb2x5bWVyLlBhdGguaXNQYXRoKGFyZyk7CiAgICAgIGlmIChhLnN0cnVjdHVyZWQpIHsKICAgICAgICBhLndpbGRjYXJkID0gKGFyZy5zbGljZSgtMikgPT0gJy4qJyk7CiAgICAgICAgaWYgKGEud2lsZGNhcmQpIHsKICAgICAgICAgIGEubmFtZSA9IGFyZy5zbGljZSgwLCAtMik7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZXR1cm4gYTsKICB9CgogIC8vIGRhdGEgYXBpCgogIC8qKgogICAqIFNlbmRzIGFycmF5IHNwbGljZSBub3RpZmljYXRpb25zIChgLnNwbGljZXNgIGFuZCBgLmxlbmd0aGApCiAgICoKICAgKiBOb3RlOiB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgYWNjZXB0cyBub3JtYWxpemVkIHBhdGhzCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IEluc3RhbmNlIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0bwogICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0aGUgbXV0YXRpb25zIG9jY3VycmVkIG9uCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gdGhlIGFycmF5IHRoYXQgd2FzIG11dGF0ZWQKICAgKiBAcGFyYW0ge0FycmF5fSBzcGxpY2VzIEFycmF5IG9mIHNwbGljZSByZWNvcmRzCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIG5vdGlmeVNwbGljZXMoaW5zdCwgYXJyYXksIHBhdGgsIHNwbGljZXMpIHsKICAgIGxldCBzcGxpY2VzUGF0aCA9IHBhdGggKyAnLnNwbGljZXMnOwogICAgaW5zdC5ub3RpZnlQYXRoKHNwbGljZXNQYXRoLCB7IGluZGV4U3BsaWNlczogc3BsaWNlcyB9KTsKICAgIGluc3Qubm90aWZ5UGF0aChwYXRoICsgJy5sZW5ndGgnLCBhcnJheS5sZW5ndGgpOwogICAgLy8gTnVsbCBoZXJlIHRvIGFsbG93IHBvdGVudGlhbGx5IGxhcmdlIHNwbGljZSByZWNvcmRzIHRvIGJlIEdDJ2VkLgogICAgaW5zdC5fX2RhdGFbc3BsaWNlc1BhdGhdID0ge2luZGV4U3BsaWNlczogbnVsbH07CiAgfQoKICAvKioKICAgKiBDcmVhdGVzIGEgc3BsaWNlIHJlY29yZCBhbmQgc2VuZHMgYW4gYXJyYXkgc3BsaWNlIG5vdGlmaWNhdGlvbiBmb3IKICAgKiB0aGUgZGVzY3JpYmVkIG11dGF0aW9uCiAgICoKICAgKiBOb3RlOiB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgYWNjZXB0cyBub3JtYWxpemVkIHBhdGhzCiAgICoKICAgKiBAcGFyYW0geyFQcm9wZXJ0eUVmZmVjdHNUeXBlfSBpbnN0IEluc3RhbmNlIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0bwogICAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0aGUgbXV0YXRpb25zIG9jY3VycmVkIG9uCiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggdG8gdGhlIGFycmF5IHRoYXQgd2FzIG11dGF0ZWQKICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggYXQgd2hpY2ggdGhlIGFycmF5IG11dGF0aW9uIG9jY3VycmVkCiAgICogQHBhcmFtIHtudW1iZXJ9IGFkZGVkQ291bnQgTnVtYmVyIG9mIGFkZGVkIGl0ZW1zCiAgICogQHBhcmFtIHtBcnJheX0gcmVtb3ZlZCBBcnJheSBvZiByZW1vdmVkIGl0ZW1zCiAgICogQHJldHVybiB7dm9pZH0KICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIG5vdGlmeVNwbGljZShpbnN0LCBhcnJheSwgcGF0aCwgaW5kZXgsIGFkZGVkQ291bnQsIHJlbW92ZWQpIHsKICAgIG5vdGlmeVNwbGljZXMoaW5zdCwgYXJyYXksIHBhdGgsIFt7CiAgICAgIGluZGV4OiBpbmRleCwKICAgICAgYWRkZWRDb3VudDogYWRkZWRDb3VudCwKICAgICAgcmVtb3ZlZDogcmVtb3ZlZCwKICAgICAgb2JqZWN0OiBhcnJheSwKICAgICAgdHlwZTogJ3NwbGljZScKICAgIH1dKTsKICB9CgogIC8qKgogICAqIFJldHVybnMgYW4gdXBwZXItY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgU3RyaW5nIHRvIHVwcGVyY2FzZQogICAqIEByZXR1cm4ge3N0cmluZ30gVXBwZXJjYXNlZCBzdHJpbmcKICAgKiBAcHJpdmF0ZQogICAqLwogIGZ1bmN0aW9uIHVwcGVyKG5hbWUpIHsKICAgIHJldHVybiBuYW1lWzBdLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnN1YnN0cmluZygxKTsKICB9CgogIC8qKgogICAqIEVsZW1lbnQgY2xhc3MgbWl4aW4gdGhhdCBwcm92aWRlcyBtZXRhLXByb2dyYW1taW5nIGZvciBQb2x5bWVyJ3MgdGVtcGxhdGUKICAgKiBiaW5kaW5nIGFuZCBkYXRhIG9ic2VydmF0aW9uIChjb2xsZWN0aXZlbHksICJwcm9wZXJ0eSBlZmZlY3RzIikgc3lzdGVtLgogICAqCiAgICogVGhpcyBtaXhpbiB1c2VzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcga2V5IHN0YXRpYyBtZXRob2RzIGZvciBhZGRpbmcKICAgKiBwcm9wZXJ0eSBlZmZlY3RzIHRvIGFuIGVsZW1lbnQgY2xhc3M6CiAgICogLSBgYWRkUHJvcGVydHlFZmZlY3RgCiAgICogLSBgY3JlYXRlUHJvcGVydHlPYnNlcnZlcmAKICAgKiAtIGBjcmVhdGVNZXRob2RPYnNlcnZlcmAKICAgKiAtIGBjcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eWAKICAgKiAtIGBjcmVhdGVSZWFkT25seVByb3BlcnR5YAogICAqIC0gYGNyZWF0ZVJlZmxlY3RlZFByb3BlcnR5YAogICAqIC0gYGNyZWF0ZUNvbXB1dGVkUHJvcGVydHlgCiAgICogLSBgYmluZFRlbXBsYXRlYAogICAqCiAgICogRWFjaCBtZXRob2QgY3JlYXRlcyBvbmUgb3IgbW9yZSBwcm9wZXJ0eSBhY2Nlc3NvcnMsIGFsb25nIHdpdGggbWV0YWRhdGEKICAgKiB1c2VkIGJ5IHRoaXMgbWl4aW4ncyBpbXBsZW1lbnRhdGlvbiBvZiBgX3Byb3BlcnRpZXNDaGFuZ2VkYCB0byBwZXJmb3JtCiAgICogdGhlIHByb3BlcnR5IGVmZmVjdHMuCiAgICoKICAgKiBVbmRlcnNjb3JlZCB2ZXJzaW9ucyBvZiB0aGUgYWJvdmUgbWV0aG9kcyBhbHNvIGV4aXN0IG9uIHRoZSBlbGVtZW50CiAgICogcHJvdG90eXBlIGZvciBhZGRpbmcgcHJvcGVydHkgZWZmZWN0cyBvbiBpbnN0YW5jZXMgYXQgcnVudGltZS4KICAgKgogICAqIE5vdGUgdGhhdCB0aGlzIG1peGluIG92ZXJyaWRlcyBzZXZlcmFsIGBQcm9wZXJ0eUFjY2Vzc29yc2AgbWV0aG9kcywgaW4KICAgKiBtYW55IGNhc2VzIHRvIG1haW50YWluIGd1YXJhbnRlZXMgcHJvdmlkZWQgYnkgdGhlIFBvbHltZXIgMS54IGZlYXR1cmVzOwogICAqIG5vdGFibHkgaXQgY2hhbmdlcyBwcm9wZXJ0eSBhY2Nlc3NvcnMgdG8gYmUgc3luY2hyb25vdXMgYnkgZGVmYXVsdAogICAqIHdoZXJlYXMgdGhlIGRlZmF1bHQgd2hlbiB1c2luZyBgUHJvcGVydHlBY2Nlc3NvcnNgIHN0YW5kYWxvbmUgaXMgdG8gYmUKICAgKiBhc3luYyBieSBkZWZhdWx0LgogICAqCiAgICogQG1peGluRnVuY3Rpb24KICAgKiBAcG9seW1lcgogICAqIEBhcHBsaWVzTWl4aW4gUG9seW1lci5UZW1wbGF0ZVN0YW1wCiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBFbGVtZW50IGNsYXNzIG1peGluIHRoYXQgcHJvdmlkZXMgbWV0YS1wcm9ncmFtbWluZyBmb3IgUG9seW1lcidzCiAgICogdGVtcGxhdGUgYmluZGluZyBhbmQgZGF0YSBvYnNlcnZhdGlvbiBzeXN0ZW0uCiAgICovCiAgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHMgPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgLyoqCiAgICAgKiBAY29uc3RydWN0b3IKICAgICAqIEBleHRlbmRzIHtzdXBlckNsYXNzfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfUHJvcGVydHlBY2Nlc3NvcnN9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9UZW1wbGF0ZVN0YW1wfQogICAgICogQHVucmVzdHJpY3RlZAogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3QgcHJvcGVydHlFZmZlY3RzQmFzZSA9IFBvbHltZXIuVGVtcGxhdGVTdGFtcChQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzKHN1cGVyQ2xhc3MpKTsKCiAgICAvKioKICAgICAqIEBwb2x5bWVyCiAgICAgKiBAbWl4aW5DbGFzcwogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfUHJvcGVydHlFZmZlY3RzfQogICAgICogQGV4dGVuZHMge3Byb3BlcnR5RWZmZWN0c0Jhc2V9CiAgICAgKiBAdW5yZXN0cmljdGVkCiAgICAgKi8KICAgIGNsYXNzIFByb3BlcnR5RWZmZWN0cyBleHRlbmRzIHByb3BlcnR5RWZmZWN0c0Jhc2UgewoKICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovCiAgICAgICAgLy8gVXNlZCB0byBpZGVudGlmeSB1c2VycyBvZiB0aGlzIG1peGluLCBhbGEgaW5zdGFuY2VvZgogICAgICAgIHRoaXMuX19pc1Byb3BlcnR5RWZmZWN0c0NsaWVudCA9IHRydWU7CiAgICAgICAgLyoqIEB0eXBlIHtudW1iZXJ9ICovCiAgICAgICAgLy8gTk9URTogdXNlZCB0byB0cmFjayByZS1lbnRyYW50IGNhbGxzIHRvIGBfZmx1c2hQcm9wZXJ0aWVzYAogICAgICAgIC8vIHBhdGggY2hhbmdlcyBkaXJ0eSBjaGVjayBhZ2FpbnN0IGBfX2RhdGFUZW1wYCBvbmx5IGR1cmluZyBvbmUgInR1cm4iCiAgICAgICAgLy8gYW5kIGFyZSBjbGVhcmVkIHdoZW4gYF9fZGF0YUNvdW50ZXJgIHJldHVybnMgdG8gMC4KICAgICAgICB0aGlzLl9fZGF0YUNvdW50ZXIgPSAwOwogICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8KICAgICAgICB0aGlzLl9fZGF0YUNsaWVudHNSZWFkeTsKICAgICAgICAvKiogQHR5cGUge0FycmF5fSAqLwogICAgICAgIHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHM7CiAgICAgICAgLyoqIEB0eXBlIHtPYmplY3R9ICovCiAgICAgICAgdGhpcy5fX2RhdGFUb05vdGlmeTsKICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8KICAgICAgICB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzOwogICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8KICAgICAgICB0aGlzLl9fZGF0YUhhc1BhdGhzOwogICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLwogICAgICAgIHRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlOwogICAgICAgIC8qKiBAdHlwZSB7UG9seW1lcl9Qcm9wZXJ0eUVmZmVjdHN9ICovCiAgICAgICAgdGhpcy5fX2RhdGFIb3N0OwogICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdH0gKi8KICAgICAgICB0aGlzLl9fZGF0YVRlbXA7CiAgICAgICAgLyoqIEB0eXBlIHtib29sZWFufSAqLwogICAgICAgIHRoaXMuX19kYXRhQ2xpZW50c0luaXRpYWxpemVkOwogICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdH0gKi8KICAgICAgICB0aGlzLl9fZGF0YTsKICAgICAgICAvKiogQHR5cGUgeyFPYmplY3R9ICovCiAgICAgICAgdGhpcy5fX2RhdGFQZW5kaW5nOwogICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdH0gKi8KICAgICAgICB0aGlzLl9fZGF0YU9sZDsKICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8KICAgICAgICB0aGlzLl9fY29tcHV0ZUVmZmVjdHM7CiAgICAgICAgLyoqIEB0eXBlIHtPYmplY3R9ICovCiAgICAgICAgdGhpcy5fX3JlZmxlY3RFZmZlY3RzOwogICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLwogICAgICAgIHRoaXMuX19ub3RpZnlFZmZlY3RzOwogICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLwogICAgICAgIHRoaXMuX19wcm9wYWdhdGVFZmZlY3RzOwogICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0fSAqLwogICAgICAgIHRoaXMuX19vYnNlcnZlRWZmZWN0czsKICAgICAgICAvKiogQHR5cGUge09iamVjdH0gKi8KICAgICAgICB0aGlzLl9fcmVhZE9ubHk7CiAgICAgICAgLyoqIEB0eXBlIHshVGVtcGxhdGVJbmZvfSAqLwogICAgICAgIHRoaXMuX190ZW1wbGF0ZUluZm87CiAgICAgIH0KCiAgICAgIGdldCBQUk9QRVJUWV9FRkZFQ1RfVFlQRVMoKSB7CiAgICAgICAgcmV0dXJuIFRZUEVTOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9pbml0aWFsaXplUHJvcGVydGllcygpIHsKICAgICAgICBzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKTsKICAgICAgICBob3N0U3RhY2sucmVnaXN0ZXJIb3N0KHRoaXMpOwogICAgICAgIHRoaXMuX19kYXRhQ2xpZW50c1JlYWR5ID0gZmFsc2U7CiAgICAgICAgdGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cyA9IG51bGw7CiAgICAgICAgdGhpcy5fX2RhdGFUb05vdGlmeSA9IG51bGw7CiAgICAgICAgdGhpcy5fX2RhdGFMaW5rZWRQYXRocyA9IG51bGw7CiAgICAgICAgdGhpcy5fX2RhdGFIYXNQYXRocyA9IGZhbHNlOwogICAgICAgIC8vIE1heSBiZSBzZXQgb24gaW5zdGFuY2UgcHJpb3IgdG8gdXBncmFkZQogICAgICAgIHRoaXMuX19kYXRhQ29tcG91bmRTdG9yYWdlID0gdGhpcy5fX2RhdGFDb21wb3VuZFN0b3JhZ2UgfHwgbnVsbDsKICAgICAgICB0aGlzLl9fZGF0YUhvc3QgPSB0aGlzLl9fZGF0YUhvc3QgfHwgbnVsbDsKICAgICAgICB0aGlzLl9fZGF0YVRlbXAgPSB7fTsKICAgICAgICB0aGlzLl9fZGF0YUNsaWVudHNJbml0aWFsaXplZCA9IGZhbHNlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIGBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzYCBpbXBsZW1lbnRhdGlvbiB0byBwcm92aWRlIGEKICAgICAgICogbW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2YgaW5pdGlhbGl6aW5nIHByb3BlcnRpZXMgZnJvbQogICAgICAgKiB0aGUgcHJvdG90eXBlIG9uIHRoZSBpbnN0YW5jZS4KICAgICAgICoKICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgb24gdGhlIHByb3RvdHlwZQogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX2luaXRpYWxpemVQcm90b1Byb3BlcnRpZXMocHJvcHMpIHsKICAgICAgICB0aGlzLl9fZGF0YSA9IE9iamVjdC5jcmVhdGUocHJvcHMpOwogICAgICAgIHRoaXMuX19kYXRhUGVuZGluZyA9IE9iamVjdC5jcmVhdGUocHJvcHMpOwogICAgICAgIHRoaXMuX19kYXRhT2xkID0ge307CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgYFBvbHltZXIuUHJvcGVydHlBY2Nlc3NvcnNgIGltcGxlbWVudGF0aW9uIHRvIGF2b2lkIHNldHRpbmcKICAgICAgICogYF9zZXRQcm9wZXJ0eWAncyBgc2hvdWxkTm90aWZ5OiB0cnVlYC4KICAgICAgICoKICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wZXJ0aWVzIHRvIGluaXRpYWxpemUgb24gdGhlIGluc3RhbmNlCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfaW5pdGlhbGl6ZUluc3RhbmNlUHJvcGVydGllcyhwcm9wcykgewogICAgICAgIGxldCByZWFkT25seSA9IHRoaXNbVFlQRVMuUkVBRF9PTkxZXTsKICAgICAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7CiAgICAgICAgICBpZiAoIXJlYWRPbmx5IHx8ICFyZWFkT25seVtwcm9wXSkgewogICAgICAgICAgICB0aGlzLl9fZGF0YVBlbmRpbmcgPSB0aGlzLl9fZGF0YVBlbmRpbmcgfHwge307CiAgICAgICAgICAgIHRoaXMuX19kYXRhT2xkID0gdGhpcy5fX2RhdGFPbGQgfHwge307CiAgICAgICAgICAgIHRoaXMuX19kYXRhW3Byb3BdID0gdGhpcy5fX2RhdGFQZW5kaW5nW3Byb3BdID0gcHJvcHNbcHJvcF07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBQcm90b3R5cGUgc2V0dXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgLyoqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gc3RhdGljIGBhZGRQcm9wZXJ0eUVmZmVjdGAgQVBJIGJ1dCBjYW4gYmUgY2FsbGVkIG9uCiAgICAgICAqIGFuIGluc3RhbmNlIHRvIGFkZCBlZmZlY3RzIGF0IHJ1bnRpbWUuICBTZWUgdGhhdCBtZXRob2QgZm9yCiAgICAgICAqIGZ1bGwgQVBJIGRvY3MuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBlZmZlY3QKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgRWZmZWN0IHR5cGUsIGZyb20gdGhpcy5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMKICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBlZmZlY3QgRWZmZWN0IG1ldGFkYXRhIG9iamVjdAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfYWRkUHJvcGVydHlFZmZlY3QocHJvcGVydHksIHR5cGUsIGVmZmVjdCkgewogICAgICAgIHRoaXMuX2NyZWF0ZVByb3BlcnR5QWNjZXNzb3IocHJvcGVydHksIHR5cGUgPT0gVFlQRVMuUkVBRF9PTkxZKTsKICAgICAgICAvLyBlZmZlY3RzIGFyZSBhY2N1bXVsYXRlZCBpbnRvIGFycmF5cyBwZXIgcHJvcGVydHkgYmFzZWQgb24gdHlwZQogICAgICAgIGxldCBlZmZlY3RzID0gZW5zdXJlT3duRWZmZWN0TWFwKHRoaXMsIHR5cGUpW3Byb3BlcnR5XTsKICAgICAgICBpZiAoIWVmZmVjdHMpIHsKICAgICAgICAgIGVmZmVjdHMgPSB0aGlzW3R5cGVdW3Byb3BlcnR5XSA9IFtdOwogICAgICAgIH0KICAgICAgICBlZmZlY3RzLnB1c2goZWZmZWN0KTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJlbW92ZXMgdGhlIGdpdmVuIHByb3BlcnR5IGVmZmVjdC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IHRoZSBlZmZlY3Qgd2FzIGFzc29jaWF0ZWQgd2l0aAogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBFZmZlY3QgdHlwZSwgZnJvbSB0aGlzLlBST1BFUlRZX0VGRkVDVF9UWVBFUwogICAgICAgKiBAcGFyYW0ge09iamVjdD19IGVmZmVjdCBFZmZlY3QgbWV0YWRhdGEgb2JqZWN0IHRvIHJlbW92ZQogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX3JlbW92ZVByb3BlcnR5RWZmZWN0KHByb3BlcnR5LCB0eXBlLCBlZmZlY3QpIHsKICAgICAgICBsZXQgZWZmZWN0cyA9IGVuc3VyZU93bkVmZmVjdE1hcCh0aGlzLCB0eXBlKVtwcm9wZXJ0eV07CiAgICAgICAgbGV0IGlkeCA9IGVmZmVjdHMuaW5kZXhPZihlZmZlY3QpOwogICAgICAgIGlmIChpZHggPj0gMCkgewogICAgICAgICAgZWZmZWN0cy5zcGxpY2UoaWR4LCAxKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvdG90eXBlL2luc3RhbmNlIGhhcyBhIHByb3BlcnR5IGVmZmVjdAogICAgICAgKiBvZiBhIGNlcnRhaW4gdHlwZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSB0eXBlIEVmZmVjdCB0eXBlLCBmcm9tIHRoaXMuUFJPUEVSVFlfRUZGRUNUX1RZUEVTCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHByb3RvdHlwZS9pbnN0YW5jZSBoYXMgYW4gZWZmZWN0IG9mIHRoaXMgdHlwZQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfaGFzUHJvcGVydHlFZmZlY3QocHJvcGVydHksIHR5cGUpIHsKICAgICAgICBsZXQgZWZmZWN0cyA9IHRoaXNbdHlwZV07CiAgICAgICAgcmV0dXJuIEJvb2xlYW4oZWZmZWN0cyAmJiBlZmZlY3RzW3Byb3BlcnR5XSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvdG90eXBlL2luc3RhbmNlIGhhcyBhICJyZWFkIG9ubHkiCiAgICAgICAqIGFjY2Vzc29yIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHByb3RvdHlwZS9pbnN0YW5jZSBoYXMgYW4gZWZmZWN0IG9mIHRoaXMgdHlwZQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfaGFzUmVhZE9ubHlFZmZlY3QocHJvcGVydHkpIHsKICAgICAgICByZXR1cm4gdGhpcy5faGFzUHJvcGVydHlFZmZlY3QocHJvcGVydHksIFRZUEVTLlJFQURfT05MWSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJvdG90eXBlL2luc3RhbmNlIGhhcyBhICJub3RpZnkiCiAgICAgICAqIHByb3BlcnR5IGVmZmVjdCBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgbmFtZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBwcm90b3R5cGUvaW5zdGFuY2UgaGFzIGFuIGVmZmVjdCBvZiB0aGlzIHR5cGUKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2hhc05vdGlmeUVmZmVjdChwcm9wZXJ0eSkgewogICAgICAgIHJldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdChwcm9wZXJ0eSwgVFlQRVMuTk9USUZZKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgY3VycmVudCBwcm90b3R5cGUvaW5zdGFuY2UgaGFzIGEgInJlZmxlY3QgdG8gYXR0cmlidXRlIgogICAgICAgKiBwcm9wZXJ0eSBlZmZlY3QgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcHJvdG90eXBlL2luc3RhbmNlIGhhcyBhbiBlZmZlY3Qgb2YgdGhpcyB0eXBlCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9oYXNSZWZsZWN0RWZmZWN0KHByb3BlcnR5KSB7CiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1Byb3BlcnR5RWZmZWN0KHByb3BlcnR5LCBUWVBFUy5SRUZMRUNUKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgY3VycmVudCBwcm90b3R5cGUvaW5zdGFuY2UgaGFzIGEgImNvbXB1dGVkIgogICAgICAgKiBwcm9wZXJ0eSBlZmZlY3QgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcHJvdG90eXBlL2luc3RhbmNlIGhhcyBhbiBlZmZlY3Qgb2YgdGhpcyB0eXBlCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9oYXNDb21wdXRlZEVmZmVjdChwcm9wZXJ0eSkgewogICAgICAgIHJldHVybiB0aGlzLl9oYXNQcm9wZXJ0eUVmZmVjdChwcm9wZXJ0eSwgVFlQRVMuQ09NUFVURSk7CiAgICAgIH0KCiAgICAgIC8vIFJ1bnRpbWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgLyoqCiAgICAgICAqIFNldHMgYSBwZW5kaW5nIHByb3BlcnR5IG9yIHBhdGguICBJZiB0aGUgcm9vdCBwcm9wZXJ0eSBvZiB0aGUgcGF0aCBpbgogICAgICAgKiBxdWVzdGlvbiBoYWQgbm8gYWNjZXNzb3IsIHRoZSBwYXRoIGlzIHNldCwgb3RoZXJ3aXNlIGl0IGlzIGVucXVldWVkCiAgICAgICAqIHZpYSBgX3NldFBlbmRpbmdQcm9wZXJ0eWAuCiAgICAgICAqCiAgICAgICAqIFRoaXMgZnVuY3Rpb24gaXNvbGF0ZXMgcmVsYXRpdmVseSBleHBlbnNpdmUgZnVuY3Rpb25hbGl0eSBuZWNlc3NhcnkKICAgICAgICogZm9yIHRoZSBwdWJsaWMgQVBJIChgc2V0YCwgYHNldFByb3BlcnRpZXNgLCBgbm90aWZ5UGF0aGAsIGFuZCBwcm9wZXJ0eQogICAgICAgKiBjaGFuZ2UgbGlzdGVuZXJzIHZpYSB7ey4uLn19IGJpbmRpbmdzKSwgc3VjaCB0aGF0IGl0IGlzIG9ubHkgZG9uZQogICAgICAgKiB3aGVuIHBhdGhzIGVudGVyIHRoZSBzeXN0ZW0sIGFuZCBub3QgYXQgZXZlcnkgcHJvcGFnYXRpb24gc3RlcC4gIEl0CiAgICAgICAqIGFsc28gc2V0cyBhIGBfX2RhdGFIYXNQYXRoc2AgZmxhZyBvbiB0aGUgaW5zdGFuY2Ugd2hpY2ggaXMgdXNlZCB0bwogICAgICAgKiBmYXN0LXBhdGggc2xvd2VyIHBhdGgtbWF0Y2hpbmcgY29kZSBpbiB0aGUgcHJvcGVydHkgZWZmZWN0cyBob3N0IHBhdGhzLgogICAgICAgKgogICAgICAgKiBgcGF0aGAgY2FuIGJlIGEgcGF0aCBzdHJpbmcgb3IgYXJyYXkgb2YgcGF0aCBwYXJ0cyBhcyBhY2NlcHRlZCBieSB0aGUKICAgICAgICogcHVibGljIEFQSS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8bnVtYmVyfHN0cmluZz59IHBhdGggUGF0aCB0byBzZXQKICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBzZXQKICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gc2hvdWxkTm90aWZ5IFNldCB0byB0cnVlIGlmIHRoaXMgY2hhbmdlIHNob3VsZAogICAgICAgKiAgY2F1c2UgYSBwcm9wZXJ0eSBub3RpZmljYXRpb24gZXZlbnQgZGlzcGF0Y2gKICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gaXNQYXRoTm90aWZpY2F0aW9uIElmIHRoZSBwYXRoIGJlaW5nIHNldCBpcyBhIHBhdGgKICAgICAgICogICBub3RpZmljYXRpb24gb2YgYW4gYWxyZWFkeSBjaGFuZ2VkIHZhbHVlLCBhcyBvcHBvc2VkIHRvIGEgcmVxdWVzdAogICAgICAgKiAgIHRvIHNldCBhbmQgbm90aWZ5IHRoZSBjaGFuZ2UuICBJbiB0aGUgbGF0dGVyIGBmYWxzZWAgY2FzZSwgYSBkaXJ0eQogICAgICAgKiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBhbmQgdGhlbiB0aGUgdmFsdWUgaXMgc2V0IHRvIHRoZSBwYXRoIGJlZm9yZQogICAgICAgKiAgIGVucXVldWluZyB0aGUgcGVuZGluZyBwcm9wZXJ0eSBjaGFuZ2UuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkvcGF0aCB3YXMgZW5xdWV1ZWQgaW4KICAgICAgICogICB0aGUgcGVuZGluZyBjaGFuZ2VzIGJhZy4KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChwYXRoLCB2YWx1ZSwgc2hvdWxkTm90aWZ5LCBpc1BhdGhOb3RpZmljYXRpb24pIHsKICAgICAgICBpZiAoaXNQYXRoTm90aWZpY2F0aW9uIHx8CiAgICAgICAgICAgIFBvbHltZXIuUGF0aC5yb290KEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoWzBdIDogcGF0aCkgIT09IHBhdGgpIHsKICAgICAgICAgIC8vIERpcnR5IGNoZWNrIGNoYW5nZXMgYmVpbmcgc2V0IHRvIGEgcGF0aCBhZ2FpbnN0IHRoZSBhY3R1YWwgb2JqZWN0LAogICAgICAgICAgLy8gc2luY2UgdGhpcyBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHBhdGhzIGludG8gdGhlIHN5c3RlbTsgZnJvbSBoZXJlCiAgICAgICAgICAvLyB0aGUgb25seSBkaXJ0eSBjaGVja3MgYXJlIGFnYWluc3QgdGhlIGBfX2RhdGFUZW1wYCBjYWNoZSB0byBwcmV2ZW50CiAgICAgICAgICAvLyBkdXBsaWNhdGUgd29yayBpbiB0aGUgc2FtZSB0dXJuIG9ubHkuIE5vdGUsIGlmIHRoaXMgd2FzIGEgbm90aWZpY2F0aW9uCiAgICAgICAgICAvLyBvZiBhIGNoYW5nZSBhbHJlYWR5IHNldCB0byBhIHBhdGggKGlzUGF0aE5vdGlmaWNhdGlvbjogdHJ1ZSksCiAgICAgICAgICAvLyB3ZSBhbHdheXMgbGV0IHRoZSBjaGFuZ2UgdGhyb3VnaCBhbmQgc2tpcCB0aGUgYHNldGAgc2luY2UgaXQgd2FzCiAgICAgICAgICAvLyBhbHJlYWR5IGRpcnR5IGNoZWNrZWQgYXQgdGhlIHBvaW50IG9mIGVudHJ5IGFuZCB0aGUgdW5kZXJseWluZwogICAgICAgICAgLy8gb2JqZWN0IGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZAogICAgICAgICAgaWYgKCFpc1BhdGhOb3RpZmljYXRpb24pIHsKICAgICAgICAgICAgbGV0IG9sZCA9IFBvbHltZXIuUGF0aC5nZXQodGhpcywgcGF0aCk7CiAgICAgICAgICAgIHBhdGggPSAvKiogQHR5cGUge3N0cmluZ30gKi8gKFBvbHltZXIuUGF0aC5zZXQodGhpcywgcGF0aCwgdmFsdWUpKTsKICAgICAgICAgICAgLy8gVXNlIHByb3BlcnR5LWFjY2Vzc29yJ3Mgc2ltcGxlciBkaXJ0eSBjaGVjawogICAgICAgICAgICBpZiAoIXBhdGggfHwgIXN1cGVyLl9zaG91bGRQcm9wZXJ0eUNoYW5nZShwYXRoLCB2YWx1ZSwgb2xkKSkgewogICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdGhpcy5fX2RhdGFIYXNQYXRocyA9IHRydWU7CiAgICAgICAgICBpZiAodGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KC8qKkB0eXBle3N0cmluZ30qLyhwYXRoKSwgdmFsdWUsIHNob3VsZE5vdGlmeSkpIHsKICAgICAgICAgICAgY29tcHV0ZUxpbmtlZFBhdGhzKHRoaXMsIHBhdGgsIHZhbHVlKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmICh0aGlzLl9fZGF0YUhhc0FjY2Vzc29yICYmIHRoaXMuX19kYXRhSGFzQWNjZXNzb3JbcGF0aF0pIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eSgvKipAdHlwZXtzdHJpbmd9Ki8ocGF0aCksIHZhbHVlLCBzaG91bGROb3RpZnkpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpc1twYXRoXSA9IHZhbHVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBcHBsaWVzIGEgdmFsdWUgdG8gYSBub24tUG9seW1lciBlbGVtZW50L25vZGUncyBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogVGhlIGltcGxlbWVudGF0aW9uIG1ha2VzIGEgYmVzdC1lZmZvcnQgYXQgYmluZGluZyBpbnRlcm9wOgogICAgICAgKiBTb21lIG5hdGl2ZSBlbGVtZW50IHByb3BlcnRpZXMgaGF2ZSBzaWRlLWVmZmVjdHMgd2hlbgogICAgICAgKiByZS1zZXR0aW5nIHRoZSBzYW1lIHZhbHVlIChlLmcuIHNldHRpbmcgYDxpbnB1dD4udmFsdWVgIHJlc2V0cyB0aGUKICAgICAgICogY3Vyc29yIHBvc2l0aW9uKSwgc28gd2UgZG8gYSBkaXJ0eS1jaGVjayBiZWZvcmUgc2V0dGluZyB0aGUgdmFsdWUuCiAgICAgICAqIEhvd2V2ZXIsIGZvciBiZXR0ZXIgaW50ZXJvcCB3aXRoIG5vbi1Qb2x5bWVyIGN1c3RvbSBlbGVtZW50cyB0aGF0CiAgICAgICAqIGFjY2VwdCBvYmplY3RzLCB3ZSBleHBsaWNpdGx5IHJlLXNldCBvYmplY3QgY2hhbmdlcyBjb21pbmcgZnJvbSB0aGUKICAgICAgICogUG9seW1lciB3b3JsZCAod2hpY2ggbWF5IGluY2x1ZGUgZGVlcCBvYmplY3QgY2hhbmdlcyB3aXRob3V0IHRoZQogICAgICAgKiB0b3AgcmVmZXJlbmNlIGNoYW5naW5nKSwgZXJyaW5nIG9uIHRoZSBzaWRlIG9mIHByb3ZpZGluZyBtb3JlCiAgICAgICAqIGluZm9ybWF0aW9uLgogICAgICAgKgogICAgICAgKiBVc2VycyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gcHJvdmlkZSBhbHRlcm5hdGUgYXBwcm9hY2hlcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshTm9kZX0gbm9kZSBUaGUgbm9kZSB0byBzZXQgYSBwcm9wZXJ0eSBvbgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBUaGUgcHJvcGVydHkgdG8gc2V0CiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfc2V0VW5tYW5hZ2VkUHJvcGVydHlUb05vZGUobm9kZSwgcHJvcCwgdmFsdWUpIHsKICAgICAgICAvLyBJdCBpcyBhIGp1ZGdtZW50IGNhbGwgdGhhdCByZXNldHRpbmcgcHJpbWl0aXZlcyBpcwogICAgICAgIC8vICJiYWQiIGFuZCByZXNldHRpbmdzIG9iamVjdHMgaXMgYWxzbyAiZ29vZCI7IGFsdGVybmF0aXZlbHkgd2UgY291bGQKICAgICAgICAvLyBpbXBsZW1lbnQgYSB3aGl0ZWxpc3Qgb2YgdGFnICYgcHJvcGVydHkgdmFsdWVzIHRoYXQgc2hvdWxkIG5ldmVyCiAgICAgICAgLy8gYmUgcmVzZXQgKGUuZy4gPGlucHV0Pi52YWx1ZSAmJiA8c2VsZWN0Pi52YWx1ZSkKICAgICAgICBpZiAodmFsdWUgIT09IG5vZGVbcHJvcF0gfHwgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnKSB7CiAgICAgICAgICBub2RlW3Byb3BdID0gdmFsdWU7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIHRoZSBgUHJvcGVydGllc0NoYW5nZWRgIGltcGxlbWVudGF0aW9uIHRvIGludHJvZHVjZSBzcGVjaWFsCiAgICAgICAqIGRpcnR5IGNoZWNrIGxvZ2ljIGRlcGVuZGluZyBvbiB0aGUgcHJvcGVydHkgJiB2YWx1ZSBiZWluZyBzZXQ6CiAgICAgICAqCiAgICAgICAqIDEuIEFueSB2YWx1ZSBzZXQgdG8gYSBwYXRoIChlLmcuICdvYmoucHJvcCc6IDQyIG9yICdvYmoucHJvcCc6IHsuLi59KQogICAgICAgKiAgICBTdG9yZWQgaW4gYF9fZGF0YVRlbXBgLCBkaXJ0eSBjaGVja2VkIGFnYWluc3QgYF9fZGF0YVRlbXBgCiAgICAgICAqIDIuIE9iamVjdCBzZXQgdG8gc2ltcGxlIHByb3BlcnR5IChlLmcuICdwcm9wJzogey4uLn0pCiAgICAgICAqICAgIFN0b3JlZCBpbiBgX19kYXRhVGVtcGAgYW5kIGBfX2RhdGFgLCBkaXJ0eSBjaGVja2VkIGFnYWluc3QKICAgICAgICogICAgYF9fZGF0YVRlbXBgIGJ5IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgYF9zaG91bGRQcm9wZXJ0eUNoYW5nZWAKICAgICAgICogMy4gUHJpbWl0aXZlIHZhbHVlIHNldCB0byBzaW1wbGUgcHJvcGVydHkgKGUuZy4gJ3Byb3AnOiA0MikKICAgICAgICogICAgU3RvcmVkIGluIGBfX2RhdGFgLCBkaXJ0eSBjaGVja2VkIGFnYWluc3QgYF9fZGF0YWAKICAgICAgICoKICAgICAgICogVGhlIGRpcnR5LWNoZWNrIGlzIGltcG9ydGFudCB0byBwcmV2ZW50IGN5Y2xlcyBkdWUgdG8gdHdvLXdheQogICAgICAgKiBub3RpZmljYXRpb24sIGJ1dCBwYXRocyBhbmQgb2JqZWN0cyBhcmUgb25seSBkaXJ0eSBjaGVja2VkIGFnYWluc3QgYW55CiAgICAgICAqIHByZXZpb3VzIHZhbHVlIHNldCBkdXJpbmcgdGhpcyB0dXJuIHZpYSBhICJ0ZW1wb3JhcnkgY2FjaGUiIHRoYXQgaXMKICAgICAgICogY2xlYXJlZCB3aGVuIHRoZSBsYXN0IGBfcHJvcGVydGllc0NoYW5nZWRgIGV4aXRzLiBUaGlzIGlzIHNvOgogICAgICAgKiBhLiBhbnkgY2FjaGVkIGFycmF5IHBhdGhzIChlLmcuICdhcnJheS4zLnByb3AnKSBtYXkgYmUgaW52YWxpZGF0ZWQKICAgICAgICogICAgZHVlIHRvIGFycmF5IG11dGF0aW9ucyBsaWtlIHNoaWZ0L3Vuc2hpZnQvc3BsaWNlOyB0aGlzIGlzIGZpbmUKICAgICAgICogICAgc2luY2UgcGF0aCBjaGFuZ2VzIGFyZSBkaXJ0eS1jaGVja2VkIGF0IHVzZXIgZW50cnkgcG9pbnRzIGxpa2UgYHNldGAKICAgICAgICogYi4gZGlydHktY2hlY2tpbmcgZm9yIG9iamVjdHMgb25seSBsYXN0cyBvbmUgdHVybiB0byBhbGxvdyB0aGUgdXNlcgogICAgICAgKiAgICB0byBtdXRhdGUgdGhlIG9iamVjdCBpbi1wbGFjZSBhbmQgcmUtc2V0IGl0IHdpdGggdGhlIHNhbWUgaWRlbnRpdHkKICAgICAgICogICAgYW5kIGhhdmUgYWxsIHN1Yi1wcm9wZXJ0aWVzIHJlLXByb3BhZ2F0ZWQgaW4gYSBzdWJzZXF1ZW50IHR1cm4uCiAgICAgICAqCiAgICAgICAqIFRoZSB0ZW1wIGNhY2hlIGlzIG5vdCBuZWNlc3NhcmlseSBzdWZmaWNpZW50IHRvIHByZXZlbnQgaW52YWxpZCBhcnJheQogICAgICAgKiBwYXRocywgc2luY2UgYSBzcGxpY2UgY2FuIGhhcHBlbiBkdXJpbmcgdGhlIHNhbWUgdHVybiAod2l0aCBwYXRob2xvZ2ljYWwKICAgICAgICogdXNlciBjb2RlKTsgd2UgY291bGQgaW50cm9kdWNlIGEgImZpeHVwIiBmb3IgdGVtcG9yYXJpbHkgY2FjaGVkIGFycmF5CiAgICAgICAqIHBhdGhzIGlmIG5lZWRlZDogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci9pc3N1ZXMvNDIyNwogICAgICAgKgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgdGhlIHByb3BlcnR5CiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gc2V0CiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHNob3VsZE5vdGlmeSBUcnVlIGlmIHByb3BlcnR5IHNob3VsZCBmaXJlIG5vdGlmaWNhdGlvbgogICAgICAgKiAgIGV2ZW50IChhcHBsaWVzIG9ubHkgZm9yIGBub3RpZnk6IHRydWVgIHByb3BlcnRpZXMpCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvcGVydHkgY2hhbmdlZAogICAgICAgKi8KICAgICAgX3NldFBlbmRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUsIHNob3VsZE5vdGlmeSkgewogICAgICAgIGxldCBpc1BhdGggPSB0aGlzLl9fZGF0YUhhc1BhdGhzICYmIFBvbHltZXIuUGF0aC5pc1BhdGgocHJvcGVydHkpOwogICAgICAgIGxldCBwcmV2UHJvcHMgPSBpc1BhdGggPyB0aGlzLl9fZGF0YVRlbXAgOiB0aGlzLl9fZGF0YTsKICAgICAgICBpZiAodGhpcy5fc2hvdWxkUHJvcGVydHlDaGFuZ2UocHJvcGVydHksIHZhbHVlLCBwcmV2UHJvcHNbcHJvcGVydHldKSkgewogICAgICAgICAgaWYgKCF0aGlzLl9fZGF0YVBlbmRpbmcpIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFQZW5kaW5nID0ge307CiAgICAgICAgICAgIHRoaXMuX19kYXRhT2xkID0ge307CiAgICAgICAgICB9CiAgICAgICAgICAvLyBFbnN1cmUgb2xkIGlzIGNhcHR1cmVkIGZyb20gdGhlIGxhc3QgdHVybgogICAgICAgICAgaWYgKCEocHJvcGVydHkgaW4gdGhpcy5fX2RhdGFPbGQpKSB7CiAgICAgICAgICAgIHRoaXMuX19kYXRhT2xkW3Byb3BlcnR5XSA9IHRoaXMuX19kYXRhW3Byb3BlcnR5XTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIFBhdGhzIGFyZSBzdG9yZWQgaW4gdGVtcG9yYXJ5IGNhY2hlIChjbGVhcmVkIGF0IGVuZCBvZiB0dXJuKSwKICAgICAgICAgIC8vIHdoaWNoIGlzIHVzZWQgZm9yIGRpcnR5LWNoZWNraW5nLCBhbGwgb3RoZXJzIHN0b3JlZCBpbiBfX2RhdGEKICAgICAgICAgIGlmIChpc1BhdGgpIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFUZW1wW3Byb3BlcnR5XSA9IHZhbHVlOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFbcHJvcGVydHldID0gdmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBBbGwgY2hhbmdlcyBnbyBpbnRvIHBlbmRpbmcgcHJvcGVydHkgYmFnLCBwYXNzZWQgdG8gX3Byb3BlcnRpZXNDaGFuZ2VkCiAgICAgICAgICB0aGlzLl9fZGF0YVBlbmRpbmdbcHJvcGVydHldID0gdmFsdWU7CiAgICAgICAgICAvLyBUcmFjayBwcm9wZXJ0aWVzIHRoYXQgc2hvdWxkIG5vdGlmeSBzZXBhcmF0ZWx5CiAgICAgICAgICBpZiAoaXNQYXRoIHx8ICh0aGlzW1RZUEVTLk5PVElGWV0gJiYgdGhpc1tUWVBFUy5OT1RJRlldW3Byb3BlcnR5XSkpIHsKICAgICAgICAgICAgdGhpcy5fX2RhdGFUb05vdGlmeSA9IHRoaXMuX19kYXRhVG9Ob3RpZnkgfHwge307CiAgICAgICAgICAgIHRoaXMuX19kYXRhVG9Ob3RpZnlbcHJvcGVydHldID0gc2hvdWxkTm90aWZ5OwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBiYXNlIGltcGxlbWVudGF0aW9uIHRvIGVuc3VyZSBhbGwgYWNjZXNzb3JzIHNldCBgc2hvdWxkTm90aWZ5YAogICAgICAgKiB0byB0cnVlLCBmb3IgcGVyLXByb3BlcnR5IG5vdGlmaWNhdGlvbiB0cmFja2luZy4KICAgICAgICoKICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBOYW1lIG9mIHRoZSBwcm9wZXJ0eQogICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX3NldFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSkgewogICAgICAgIGlmICh0aGlzLl9zZXRQZW5kaW5nUHJvcGVydHkocHJvcGVydHksIHZhbHVlLCB0cnVlKSkgewogICAgICAgICAgdGhpcy5faW52YWxpZGF0ZVByb3BlcnRpZXMoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgYFByb3BlcnR5QWNjZXNzb3JgJ3MgZGVmYXVsdCBhc3luYyBxdWV1aW5nIG9mCiAgICAgICAqIGBfcHJvcGVydGllc0NoYW5nZWRgOiBpZiBgX19kYXRhUmVhZHlgIGlzIGZhbHNlIChoYXMgbm90IHlldCBiZWVuCiAgICAgICAqIG1hbnVhbGx5IGZsdXNoZWQpLCB0aGUgZnVuY3Rpb24gbm8tb3BzOyBvdGhlcndpc2UgZmx1c2hlcwogICAgICAgKiBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBzeW5jaHJvbm91c2x5LgogICAgICAgKgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9pbnZhbGlkYXRlUHJvcGVydGllcygpIHsKICAgICAgICBpZiAodGhpcy5fX2RhdGFSZWFkeSkgewogICAgICAgICAgdGhpcy5fZmx1c2hQcm9wZXJ0aWVzKCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogRW5xdWV1ZXMgdGhlIGdpdmVuIGNsaWVudCBvbiBhIGxpc3Qgb2YgcGVuZGluZyBjbGllbnRzLCB3aG9zZQogICAgICAgKiBwZW5kaW5nIHByb3BlcnR5IGNoYW5nZXMgY2FuIGxhdGVyIGJlIGZsdXNoZWQgdmlhIGEgY2FsbCB0bwogICAgICAgKiBgX2ZsdXNoQ2xpZW50c2AuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjbGllbnQgUHJvcGVydHlFZmZlY3RzIGNsaWVudCB0byBlbnF1ZXVlCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9lbnF1ZXVlQ2xpZW50KGNsaWVudCkgewogICAgICAgIHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHMgPSB0aGlzLl9fZGF0YVBlbmRpbmdDbGllbnRzIHx8IFtdOwogICAgICAgIGlmIChjbGllbnQgIT09IHRoaXMpIHsKICAgICAgICAgIHRoaXMuX19kYXRhUGVuZGluZ0NsaWVudHMucHVzaChjbGllbnQpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBzdXBlcmNsYXNzIGltcGxlbWVudGF0aW9uLgogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfZmx1c2hQcm9wZXJ0aWVzKCkgewogICAgICAgIHRoaXMuX19kYXRhQ291bnRlcisrOwogICAgICAgIHN1cGVyLl9mbHVzaFByb3BlcnRpZXMoKTsKICAgICAgICB0aGlzLl9fZGF0YUNvdW50ZXItLTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEZsdXNoZXMgYW55IGNsaWVudHMgcHJldmlvdXNseSBlbnF1ZXVlZCB2aWEgYF9lbnF1ZXVlQ2xpZW50YCwgY2F1c2luZwogICAgICAgKiB0aGVpciBgX2ZsdXNoUHJvcGVydGllc2AgbWV0aG9kIHRvIHJ1bi4KICAgICAgICoKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2ZsdXNoQ2xpZW50cygpIHsKICAgICAgICBpZiAoIXRoaXMuX19kYXRhQ2xpZW50c1JlYWR5KSB7CiAgICAgICAgICB0aGlzLl9fZGF0YUNsaWVudHNSZWFkeSA9IHRydWU7CiAgICAgICAgICB0aGlzLl9yZWFkeUNsaWVudHMoKTsKICAgICAgICAgIC8vIE92ZXJyaWRlIHBvaW50IHdoZXJlIGFjY2Vzc29ycyBhcmUgdHVybmVkIG9uOyBpbXBvcnRhbnRseSwKICAgICAgICAgIC8vIHRoaXMgaXMgYWZ0ZXIgY2xpZW50cyBoYXZlIGZ1bGx5IHJlYWRpZWQsIHByb3ZpZGluZyBhIGd1YXJhbnRlZQogICAgICAgICAgLy8gdGhhdCBhbnkgcHJvcGVydHkgZWZmZWN0cyBvY2N1ciBvbmx5IGFmdGVyIGFsbCBjbGllbnRzIGFyZSByZWFkeS4KICAgICAgICAgIHRoaXMuX19kYXRhUmVhZHkgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLl9fZW5hYmxlT3JGbHVzaENsaWVudHMoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIE5PVEU6IFdlIGVuc3VyZSBjbGllbnRzIGVpdGhlciBlbmFibGUgb3IgZmx1c2ggYXMgYXBwcm9wcmlhdGUuIFRoaXMKICAgICAgLy8gaGFuZGxlcyB0d28gY29ybmVyIGNhc2VzOgogICAgICAvLyAoMSkgY2xpZW50cyBmbHVzaCBwcm9wZXJseSB3aGVuIGNvbm5lY3RlZC9lbmFibGVkIGJlZm9yZSB0aGUgaG9zdAogICAgICAvLyBlbmFibGVzOyBlLmcuCiAgICAgIC8vICAgKGEpIFRlbXBsYXRpemUgc3RhbXBzIHdpdGggbm8gcHJvcGVydGllcyBhbmQgZG9lcyBub3QgZmx1c2ggYW5kCiAgICAgIC8vICAgKGIpIHRoZSBpbnN0YW5jZSBpcyBpbnNlcnRlZCBpbnRvIGRvbSBhbmQKICAgICAgLy8gICAoYykgdGhlbiB0aGUgaW5zdGFuY2UgZmx1c2hlcy4KICAgICAgLy8gKDIpIGNsaWVudHMgZW5hYmxlIHByb3Blcmx5IHdoZW4gbm90IGNvbm5lY3RlZC9lbmFibGVkIHdoZW4gdGhlIGhvc3QKICAgICAgLy8gZmx1c2hlczsgZS5nLgogICAgICAvLyAgIChhKSBhIHRlbXBsYXRlIGlzIHJ1bnRpbWUgc3RhbXBlZCBhbmQgbm90IHlldCBjb25uZWN0ZWQvZW5hYmxlZAogICAgICAvLyAgIChiKSBhIGhvc3Qgc2V0cyBhIHByb3BlcnR5LCBjYXVzaW5nIHN0YW1wZWQgZG9tIHRvIGZsdXNoCiAgICAgIC8vICAgKGMpIHRoZSBzdGFtcGVkIGRvbSBlbmFibGVzLgogICAgICBfX2VuYWJsZU9yRmx1c2hDbGllbnRzKCkgewogICAgICAgIGxldCBjbGllbnRzID0gdGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50czsKICAgICAgICBpZiAoY2xpZW50cykgewogICAgICAgICAgdGhpcy5fX2RhdGFQZW5kaW5nQ2xpZW50cyA9IG51bGw7CiAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBjbGllbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGxldCBjbGllbnQgPSBjbGllbnRzW2ldOwogICAgICAgICAgICBpZiAoIWNsaWVudC5fX2RhdGFFbmFibGVkKSB7CiAgICAgICAgICAgICAgY2xpZW50Ll9lbmFibGVQcm9wZXJ0aWVzKCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xpZW50Ll9fZGF0YVBlbmRpbmcpIHsKICAgICAgICAgICAgICBjbGllbnQuX2ZsdXNoUHJvcGVydGllcygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogUGVyZm9ybSBhbnkgaW5pdGlhbCBzZXR1cCBvbiBjbGllbnQgZG9tLiBDYWxsZWQgYmVmb3JlIHRoZSBmaXJzdAogICAgICAgKiBgX2ZsdXNoUHJvcGVydGllc2AgY2FsbCBvbiBjbGllbnQgZG9tIGFuZCBiZWZvcmUgYW55IGVsZW1lbnQKICAgICAgICogb2JzZXJ2ZXJzIGFyZSBjYWxsZWQuCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9yZWFkeUNsaWVudHMoKSB7CiAgICAgICAgdGhpcy5fX2VuYWJsZU9yRmx1c2hDbGllbnRzKCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTZXRzIGEgYmFnIG9mIHByb3BlcnR5IGNoYW5nZXMgdG8gdGhpcyBpbnN0YW5jZSwgYW5kCiAgICAgICAqIHN5bmNocm9ub3VzbHkgcHJvY2Vzc2VzIGFsbCBlZmZlY3RzIG9mIHRoZSBwcm9wZXJ0aWVzIGFzIGEgYmF0Y2guCiAgICAgICAqCiAgICAgICAqIFByb3BlcnR5IG5hbWVzIG11c3QgYmUgc2ltcGxlIHByb3BlcnRpZXMsIG5vdCBwYXRocy4gIEJhdGNoZWQKICAgICAgICogcGF0aCBwcm9wYWdhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIG9uZSBvciBtb3JlIGtleS12YWx1ZSBwYWlycyB3aG9zZSBrZXkgaXMKICAgICAgICogICBhIHByb3BlcnR5IGFuZCB2YWx1ZSBpcyB0aGUgbmV3IHZhbHVlIHRvIHNldCBmb3IgdGhhdCBwcm9wZXJ0eS4KICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gc2V0UmVhZE9ubHkgV2hlbiB0cnVlLCBhbnkgcHJpdmF0ZSB2YWx1ZXMgc2V0IGluCiAgICAgICAqICAgYHByb3BzYCB3aWxsIGJlIHNldC4gQnkgZGVmYXVsdCwgYHNldFByb3BlcnRpZXNgIHdpbGwgbm90IHNldAogICAgICAgKiAgIGByZWFkT25seTogdHJ1ZWAgcm9vdCBwcm9wZXJ0aWVzLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHVibGljCiAgICAgICAqLwogICAgICBzZXRQcm9wZXJ0aWVzKHByb3BzLCBzZXRSZWFkT25seSkgewogICAgICAgIGZvciAobGV0IHBhdGggaW4gcHJvcHMpIHsKICAgICAgICAgIGlmIChzZXRSZWFkT25seSB8fCAhdGhpc1tUWVBFUy5SRUFEX09OTFldIHx8ICF0aGlzW1RZUEVTLlJFQURfT05MWV1bcGF0aF0pIHsKICAgICAgICAgICAgLy9UT0RPKGtzY2hhYWYpOiBleHBsaWNpdGx5IGRpc2FsbG93IHBhdGhzIGluIHNldFByb3BlcnR5PwogICAgICAgICAgICAvLyB3aWxkY2FyZCBvYnNlcnZlcnMgY3VycmVudGx5IG9ubHkgcGFzcyB0aGUgZmlyc3QgY2hhbmdlZCBwYXRoCiAgICAgICAgICAgIC8vIGluIHRoZSBgaW5mb2Agb2JqZWN0LCBhbmQgeW91IGNvdWxkIGRvIHNvbWUgb2RkIHRoaW5ncyBiYXRjaGluZwogICAgICAgICAgICAvLyBwYXRocywgZS5nLiB7J2Zvby5iYXInOiB7Li4ufSwgJ2Zvbyc6IG51bGx9CiAgICAgICAgICAgIHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChwYXRoLCBwcm9wc1twYXRoXSwgdHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgYFByb3BlcnR5QWNjZXNzb3JzYCBzbyB0aGF0IHByb3BlcnR5IGFjY2Vzc29yCiAgICAgICAqIHNpZGUgZWZmZWN0cyBhcmUgbm90IGVuYWJsZWQgdW50aWwgYWZ0ZXIgY2xpZW50IGRvbSBpcyBmdWxseSByZWFkeS4KICAgICAgICogQWxzbyBjYWxscyBgX2ZsdXNoQ2xpZW50c2AgY2FsbGJhY2sgdG8gZW5zdXJlIGNsaWVudCBkb20gaXMgZW5hYmxlZAogICAgICAgKiB0aGF0IHdhcyBub3QgZW5hYmxlZCBhcyBhIHJlc3VsdCBvZiBmbHVzaGluZyBwcm9wZXJ0aWVzLgogICAgICAgKgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIHJlYWR5KCkgewogICAgICAgIC8vIEl0IGlzIGltcG9ydGFudCB0aGF0IGBzdXBlci5yZWFkeSgpYCBpcyBub3QgY2FsbGVkIGhlcmUgYXMgaXQKICAgICAgICAvLyBpbW1lZGlhdGVseSB0dXJucyBvbiBhY2Nlc3NvcnMuIEluc3RlYWQsIHdlIHdhaXQgdW50aWwgYHJlYWR5Q2xpZW50c2AKICAgICAgICAvLyB0byBlbmFibGUgYWNjZXNzb3JzIHRvIHByb3ZpZGUgYSBndWFyYW50ZWUgdGhhdCBjbGllbnRzIGFyZSByZWFkeQogICAgICAgIC8vIGJlZm9yZSBwcm9jZXNzaW5nIGFueSBhY2Nlc3NvcnMgc2lkZSBlZmZlY3RzLgogICAgICAgIHRoaXMuX2ZsdXNoUHJvcGVydGllcygpOwogICAgICAgIC8vIElmIG5vIGRhdGEgd2FzIHBlbmRpbmcsIGBfZmx1c2hQcm9wZXJ0aWVzYCB3aWxsIG5vdCBgZmx1c2hDbGllbnRzYAogICAgICAgIC8vIHNvIGVuc3VyZSB0aGlzIGlzIGRvbmUuCiAgICAgICAgaWYgKCF0aGlzLl9fZGF0YUNsaWVudHNSZWFkeSkgewogICAgICAgICAgdGhpcy5fZmx1c2hDbGllbnRzKCk7CiAgICAgICAgfQogICAgICAgIC8vIEJlZm9yZSByZWFkeSwgY2xpZW50IG5vdGlmaWNhdGlvbnMgZG8gbm90IHRyaWdnZXIgX2ZsdXNoUHJvcGVydGllcy4KICAgICAgICAvLyBUaGVyZWZvcmUgYSBmbHVzaCBpcyBuZWNlc3NhcnkgaGVyZSBpZiBkYXRhIGhhcyBiZWVuIHNldC4KICAgICAgICBpZiAodGhpcy5fX2RhdGFQZW5kaW5nKSB7CiAgICAgICAgICB0aGlzLl9mbHVzaFByb3BlcnRpZXMoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBJbXBsZW1lbnRzIGBQcm9wZXJ0eUFjY2Vzc29yc2AncyBwcm9wZXJ0aWVzIGNoYW5nZWQgY2FsbGJhY2suCiAgICAgICAqCiAgICAgICAqIFJ1bnMgZWFjaCBjbGFzcyBvZiBlZmZlY3RzIGZvciB0aGUgYmF0Y2ggb2YgY2hhbmdlZCBwcm9wZXJ0aWVzIGluCiAgICAgICAqIGEgc3BlY2lmaWMgb3JkZXIgKGNvbXB1dGUsIHByb3BhZ2F0ZSwgcmVmbGVjdCwgb2JzZXJ2ZSwgbm90aWZ5KS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshT2JqZWN0fSBjdXJyZW50UHJvcHMgQmFnIG9mIGFsbCBjdXJyZW50IGFjY2Vzc29yIHZhbHVlcwogICAgICAgKiBAcGFyYW0geyFPYmplY3R9IGNoYW5nZWRQcm9wcyBCYWcgb2YgcHJvcGVydGllcyBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0CiAgICAgICAqICAgY2FsbCB0byBgX3Byb3BlcnRpZXNDaGFuZ2VkYAogICAgICAgKiBAcGFyYW0geyFPYmplY3R9IG9sZFByb3BzIEJhZyBvZiBwcmV2aW91cyB2YWx1ZXMgZm9yIGVhY2ggcHJvcGVydHkKICAgICAgICogICBpbiBgY2hhbmdlZFByb3BzYAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX3Byb3BlcnRpZXNDaGFuZ2VkKGN1cnJlbnRQcm9wcywgY2hhbmdlZFByb3BzLCBvbGRQcm9wcykgewogICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAvLyBsZXQgYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNoYW5nZWRQcm9wcyB8fCB7fSk7CiAgICAgICAgLy8gd2luZG93LmRlYnVnICYmIGNvbnNvbGUuZ3JvdXAodGhpcy5sb2NhbE5hbWUgKyAnIycgKyB0aGlzLmlkICsgJzogJyArIGMpOwogICAgICAgIC8vIGlmICh3aW5kb3cuZGVidWcpIHsgZGVidWdnZXI7IH0KICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgbGV0IGhhc1BhdGhzID0gdGhpcy5fX2RhdGFIYXNQYXRoczsKICAgICAgICB0aGlzLl9fZGF0YUhhc1BhdGhzID0gZmFsc2U7CiAgICAgICAgLy8gQ29tcHV0ZSBwcm9wZXJ0aWVzCiAgICAgICAgcnVuQ29tcHV0ZWRFZmZlY3RzKHRoaXMsIGNoYW5nZWRQcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKTsKICAgICAgICAvLyBDbGVhciBub3RpZnkgcHJvcGVydGllcyBwcmlvciB0byBwb3NzaWJsZSByZWVudHJ5IChwcm9wYWdhdGUsIG9ic2VydmUpLAogICAgICAgIC8vIGJ1dCBhZnRlciBjb21wdXRpbmcgZWZmZWN0cyBoYXZlIGEgY2hhbmNlIHRvIGFkZCB0byB0aGVtCiAgICAgICAgbGV0IG5vdGlmeVByb3BzID0gdGhpcy5fX2RhdGFUb05vdGlmeTsKICAgICAgICB0aGlzLl9fZGF0YVRvTm90aWZ5ID0gbnVsbDsKICAgICAgICAvLyBQcm9wYWdhdGUgcHJvcGVydGllcyB0byBjbGllbnRzCiAgICAgICAgdGhpcy5fcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGNoYW5nZWRQcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKTsKICAgICAgICAvLyBGbHVzaCBjbGllbnRzCiAgICAgICAgdGhpcy5fZmx1c2hDbGllbnRzKCk7CiAgICAgICAgLy8gUmVmbGVjdCBwcm9wZXJ0aWVzCiAgICAgICAgcnVuRWZmZWN0cyh0aGlzLCB0aGlzW1RZUEVTLlJFRkxFQ1RdLCBjaGFuZ2VkUHJvcHMsIG9sZFByb3BzLCBoYXNQYXRocyk7CiAgICAgICAgLy8gT2JzZXJ2ZSBwcm9wZXJ0aWVzCiAgICAgICAgcnVuRWZmZWN0cyh0aGlzLCB0aGlzW1RZUEVTLk9CU0VSVkVdLCBjaGFuZ2VkUHJvcHMsIG9sZFByb3BzLCBoYXNQYXRocyk7CiAgICAgICAgLy8gTm90aWZ5IHByb3BlcnRpZXMgdG8gaG9zdAogICAgICAgIGlmIChub3RpZnlQcm9wcykgewogICAgICAgICAgcnVuTm90aWZ5RWZmZWN0cyh0aGlzLCBub3RpZnlQcm9wcywgY2hhbmdlZFByb3BzLCBvbGRQcm9wcywgaGFzUGF0aHMpOwogICAgICAgIH0KICAgICAgICAvLyBDbGVhciB0ZW1wb3JhcnkgY2FjaGUgYXQgZW5kIG9mIHR1cm4KICAgICAgICBpZiAodGhpcy5fX2RhdGFDb3VudGVyID09IDEpIHsKICAgICAgICAgIHRoaXMuX19kYXRhVGVtcCA9IHt9OwogICAgICAgIH0KICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgLy8gd2luZG93LmRlYnVnICYmIGNvbnNvbGUuZ3JvdXBFbmQodGhpcy5sb2NhbE5hbWUgKyAnIycgKyB0aGlzLmlkICsgJzogJyArIGMpOwogICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENhbGxlZCB0byBwcm9wYWdhdGUgYW55IHByb3BlcnR5IGNoYW5nZXMgdG8gc3RhbXBlZCB0ZW1wbGF0ZSBub2RlcwogICAgICAgKiBtYW5hZ2VkIGJ5IHRoaXMgZWxlbWVudC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtPYmplY3R9IGNoYW5nZWRQcm9wcyBCYWcgb2YgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvbGRQcm9wcyBCYWcgb2YgcHJldmlvdXMgdmFsdWVzIGZvciBjaGFuZ2VkIHByb3BlcnRpZXMKICAgICAgICogQHBhcmFtIHtib29sZWFufSBoYXNQYXRocyBUcnVlIHdpdGggYHByb3BzYCBjb250YWlucyBvbmUgb3IgbW9yZSBwYXRocwogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfcHJvcGFnYXRlUHJvcGVydHlDaGFuZ2VzKGNoYW5nZWRQcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKSB7CiAgICAgICAgaWYgKHRoaXNbVFlQRVMuUFJPUEFHQVRFXSkgewogICAgICAgICAgcnVuRWZmZWN0cyh0aGlzLCB0aGlzW1RZUEVTLlBST1BBR0FURV0sIGNoYW5nZWRQcm9wcywgb2xkUHJvcHMsIGhhc1BhdGhzKTsKICAgICAgICB9CiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IHRoaXMuX190ZW1wbGF0ZUluZm87CiAgICAgICAgd2hpbGUgKHRlbXBsYXRlSW5mbykgewogICAgICAgICAgcnVuRWZmZWN0cyh0aGlzLCB0ZW1wbGF0ZUluZm8ucHJvcGVydHlFZmZlY3RzLCBjaGFuZ2VkUHJvcHMsIG9sZFByb3BzLAogICAgICAgICAgICBoYXNQYXRocywgdGVtcGxhdGVJbmZvLm5vZGVMaXN0KTsKICAgICAgICAgIHRlbXBsYXRlSW5mbyA9IHRlbXBsYXRlSW5mby5uZXh0VGVtcGxhdGVJbmZvOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEFsaWFzZXMgb25lIGRhdGEgcGF0aCBhcyBhbm90aGVyLCBzdWNoIHRoYXQgcGF0aCBub3RpZmljYXRpb25zIGZyb20gb25lCiAgICAgICAqIGFyZSByb3V0ZWQgdG8gdGhlIG90aGVyLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZyB8ICFBcnJheTxzdHJpbmd8bnVtYmVyPn0gdG8gVGFyZ2V0IHBhdGggdG8gbGluay4KICAgICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8c3RyaW5nfG51bWJlcj59IGZyb20gU291cmNlIHBhdGggdG8gbGluay4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHB1YmxpYwogICAgICAgKi8KICAgICAgbGlua1BhdGhzKHRvLCBmcm9tKSB7CiAgICAgICAgdG8gPSBQb2x5bWVyLlBhdGgubm9ybWFsaXplKHRvKTsKICAgICAgICBmcm9tID0gUG9seW1lci5QYXRoLm5vcm1hbGl6ZShmcm9tKTsKICAgICAgICB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzID0gdGhpcy5fX2RhdGFMaW5rZWRQYXRocyB8fCB7fTsKICAgICAgICB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzW3RvXSA9IGZyb207CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZW1vdmVzIGEgZGF0YSBwYXRoIGFsaWFzIHByZXZpb3VzbHkgZXN0YWJsaXNoZWQgd2l0aCBgX2xpbmtQYXRoc2AuCiAgICAgICAqCiAgICAgICAqIE5vdGUsIHRoZSBwYXRoIHRvIHVubGluayBzaG91bGQgYmUgdGhlIHRhcmdldCAoYHRvYCkgdXNlZCB3aGVuCiAgICAgICAqIGxpbmtpbmcgdGhlIHBhdGhzLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZyB8ICFBcnJheTxzdHJpbmd8bnVtYmVyPn0gcGF0aCBUYXJnZXQgcGF0aCB0byB1bmxpbmsuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwdWJsaWMKICAgICAgICovCiAgICAgIHVubGlua1BhdGhzKHBhdGgpIHsKICAgICAgICBwYXRoID0gUG9seW1lci5QYXRoLm5vcm1hbGl6ZShwYXRoKTsKICAgICAgICBpZiAodGhpcy5fX2RhdGFMaW5rZWRQYXRocykgewogICAgICAgICAgZGVsZXRlIHRoaXMuX19kYXRhTGlua2VkUGF0aHNbcGF0aF07CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogTm90aWZ5IHRoYXQgYW4gYXJyYXkgaGFzIGNoYW5nZWQuCiAgICAgICAqCiAgICAgICAqIEV4YW1wbGU6CiAgICAgICAqCiAgICAgICAqICAgICB0aGlzLml0ZW1zID0gWyB7bmFtZTogJ0ppbSd9LCB7bmFtZTogJ1RvZGQnfSwge25hbWU6ICdCaWxsJ30gXTsKICAgICAgICogICAgIC4uLgogICAgICAgKiAgICAgdGhpcy5pdGVtcy5zcGxpY2UoMSwgMSwge25hbWU6ICdTYW0nfSk7CiAgICAgICAqICAgICB0aGlzLml0ZW1zLnB1c2goe25hbWU6ICdCb2InfSk7CiAgICAgICAqICAgICB0aGlzLm5vdGlmeVNwbGljZXMoJ2l0ZW1zJywgWwogICAgICAgKiAgICAgICB7IGluZGV4OiAxLCByZW1vdmVkOiBbe25hbWU6ICdUb2RkJ31dLCBhZGRlZENvdW50OiAxLCBvYmplY3Q6IHRoaXMuaXRlbXMsIHR5cGU6ICdzcGxpY2UnIH0sCiAgICAgICAqICAgICAgIHsgaW5kZXg6IDMsIHJlbW92ZWQ6IFtdLCBhZGRlZENvdW50OiAxLCBvYmplY3Q6IHRoaXMuaXRlbXMsIHR5cGU6ICdzcGxpY2UnfQogICAgICAgKiAgICAgXSk7CiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggdGhhdCBzaG91bGQgYmUgbm90aWZpZWQuCiAgICAgICAqIEBwYXJhbSB7QXJyYXl9IHNwbGljZXMgQXJyYXkgb2Ygc3BsaWNlIHJlY29yZHMgaW5kaWNhdGluZyBvcmRlcmVkCiAgICAgICAqICAgY2hhbmdlcyB0aGF0IG9jY3VycmVkIHRvIHRoZSBhcnJheS4gRWFjaCByZWNvcmQgc2hvdWxkIGhhdmUgdGhlCiAgICAgICAqICAgZm9sbG93aW5nIGZpZWxkczoKICAgICAgICogICAgKiBpbmRleDogaW5kZXggYXQgd2hpY2ggdGhlIGNoYW5nZSBvY2N1cnJlZAogICAgICAgKiAgICAqIHJlbW92ZWQ6IGFycmF5IG9mIGl0ZW1zIHRoYXQgd2VyZSByZW1vdmVkIGZyb20gdGhpcyBpbmRleAogICAgICAgKiAgICAqIGFkZGVkQ291bnQ6IG51bWJlciBvZiBuZXcgaXRlbXMgYWRkZWQgYXQgdGhpcyBpbmRleAogICAgICAgKiAgICAqIG9iamVjdDogYSByZWZlcmVuY2UgdG8gdGhlIGFycmF5IGluIHF1ZXN0aW9uCiAgICAgICAqICAgICogdHlwZTogdGhlIHN0cmluZyBsaXRlcmFsICdzcGxpY2UnCiAgICAgICAqCiAgICAgICAqICAgTm90ZSB0aGF0IHNwbGljZSByZWNvcmRzIF9tdXN0XyBiZSBub3JtYWxpemVkIHN1Y2ggdGhhdCB0aGV5IGFyZQogICAgICAgKiAgIHJlcG9ydGVkIGluIGluZGV4IG9yZGVyIChyYXcgcmVzdWx0cyBmcm9tIGBPYmplY3Qub2JzZXJ2ZWAgYXJlIG5vdAogICAgICAgKiAgIG9yZGVyZWQgYW5kIG11c3QgYmUgbm9ybWFsaXplZC9tZXJnZWQgYmVmb3JlIG5vdGlmeWluZykuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwdWJsaWMKICAgICAgKi8KICAgICAgbm90aWZ5U3BsaWNlcyhwYXRoLCBzcGxpY2VzKSB7CiAgICAgICAgbGV0IGluZm8gPSB7cGF0aDogJyd9OwogICAgICAgIGxldCBhcnJheSA9IC8qKiBAdHlwZSB7QXJyYXl9ICovKFBvbHltZXIuUGF0aC5nZXQodGhpcywgcGF0aCwgaW5mbykpOwogICAgICAgIG5vdGlmeVNwbGljZXModGhpcywgYXJyYXksIGluZm8ucGF0aCwgc3BsaWNlcyk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgZm9yIHJlYWRpbmcgYSB2YWx1ZSBmcm9tIGEgcGF0aC4KICAgICAgICoKICAgICAgICogTm90ZSwgaWYgYW55IHBhcnQgaW4gdGhlIHBhdGggaXMgdW5kZWZpbmVkLCB0aGlzIG1ldGhvZCByZXR1cm5zCiAgICAgICAqIGB1bmRlZmluZWRgICh0aGlzIG1ldGhvZCBkb2VzIG5vdCB0aHJvdyB3aGVuIGRlcmVmZXJlbmNpbmcgdW5kZWZpbmVkCiAgICAgICAqIHBhdGhzKS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsoc3RyaW5nfCFBcnJheTwoc3RyaW5nfG51bWJlcik+KX0gcGF0aCBQYXRoIHRvIHRoZSB2YWx1ZQogICAgICAgKiAgIHRvIHJlYWQuICBUaGUgcGF0aCBtYXkgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nIChlLmcuIGBmb28uYmFyLmJhemApCiAgICAgICAqICAgb3IgYW4gYXJyYXkgb2YgcGF0aCBwYXJ0cyAoZS5nLiBgWydmb28uYmFyJywgJ2JheiddYCkuICBOb3RlIHRoYXQKICAgICAgICogICBicmFja2V0ZWQgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQ7IHN0cmluZy1iYXNlZCBwYXRoIHBhcnRzCiAgICAgICAqICAgKm11c3QqIGJlIHNlcGFyYXRlZCBieSBkb3RzLiAgTm90ZSB0aGF0IHdoZW4gZGVyZWZlcmVuY2luZyBhcnJheQogICAgICAgKiAgIGluZGljZXMsIHRoZSBpbmRleCBtYXkgYmUgdXNlZCBhcyBhIGRvdHRlZCBwYXJ0IGRpcmVjdGx5CiAgICAgICAqICAgKGUuZy4gYHVzZXJzLjEyLm5hbWVgIG9yIGBbJ3VzZXJzJywgMTIsICduYW1lJ11gKS4KICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSByb290IFJvb3Qgb2JqZWN0IGZyb20gd2hpY2ggdGhlIHBhdGggaXMgZXZhbHVhdGVkLgogICAgICAgKiBAcmV0dXJuIHsqfSBWYWx1ZSBhdCB0aGUgcGF0aCwgb3IgYHVuZGVmaW5lZGAgaWYgYW55IHBhcnQgb2YgdGhlIHBhdGgKICAgICAgICogICBpcyB1bmRlZmluZWQuCiAgICAgICAqIEBwdWJsaWMKICAgICAgICovCiAgICAgIGdldChwYXRoLCByb290KSB7CiAgICAgICAgcmV0dXJuIFBvbHltZXIuUGF0aC5nZXQocm9vdCB8fCB0aGlzLCBwYXRoKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3Igc2V0dGluZyBhIHZhbHVlIHRvIGEgcGF0aCBhbmQgbm90aWZ5aW5nIGFueQogICAgICAgKiBlbGVtZW50cyBib3VuZCB0byB0aGUgc2FtZSBwYXRoLgogICAgICAgKgogICAgICAgKiBOb3RlLCBpZiBhbnkgcGFydCBpbiB0aGUgcGF0aCBleGNlcHQgZm9yIHRoZSBsYXN0IGlzIHVuZGVmaW5lZCwKICAgICAgICogdGhpcyBtZXRob2QgZG9lcyBub3RoaW5nICh0aGlzIG1ldGhvZCBkb2VzIG5vdCB0aHJvdyB3aGVuCiAgICAgICAqIGRlcmVmZXJlbmNpbmcgdW5kZWZpbmVkIHBhdGhzKS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsoc3RyaW5nfCFBcnJheTwoc3RyaW5nfG51bWJlcik+KX0gcGF0aCBQYXRoIHRvIHRoZSB2YWx1ZQogICAgICAgKiAgIHRvIHdyaXRlLiAgVGhlIHBhdGggbWF5IGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZyAoZS5nLiBgJ2Zvby5iYXIuYmF6J2ApCiAgICAgICAqICAgb3IgYW4gYXJyYXkgb2YgcGF0aCBwYXJ0cyAoZS5nLiBgWydmb28uYmFyJywgJ2JheiddYCkuICBOb3RlIHRoYXQKICAgICAgICogICBicmFja2V0ZWQgZXhwcmVzc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQ7IHN0cmluZy1iYXNlZCBwYXRoIHBhcnRzCiAgICAgICAqICAgKm11c3QqIGJlIHNlcGFyYXRlZCBieSBkb3RzLiAgTm90ZSB0aGF0IHdoZW4gZGVyZWZlcmVuY2luZyBhcnJheQogICAgICAgKiAgIGluZGljZXMsIHRoZSBpbmRleCBtYXkgYmUgdXNlZCBhcyBhIGRvdHRlZCBwYXJ0IGRpcmVjdGx5CiAgICAgICAqICAgKGUuZy4gYCd1c2Vycy4xMi5uYW1lJ2Agb3IgYFsndXNlcnMnLCAxMiwgJ25hbWUnXWApLgogICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldCBhdCB0aGUgc3BlY2lmaWVkIHBhdGguCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gcm9vdCBSb290IG9iamVjdCBmcm9tIHdoaWNoIHRoZSBwYXRoIGlzIGV2YWx1YXRlZC4KICAgICAgICogICBXaGVuIHNwZWNpZmllZCwgbm8gbm90aWZpY2F0aW9uIHdpbGwgb2NjdXIuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwdWJsaWMKICAgICAgKi8KICAgICAgc2V0KHBhdGgsIHZhbHVlLCByb290KSB7CiAgICAgICAgaWYgKHJvb3QpIHsKICAgICAgICAgIFBvbHltZXIuUGF0aC5zZXQocm9vdCwgcGF0aCwgdmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAoIXRoaXNbVFlQRVMuUkVBRF9PTkxZXSB8fCAhdGhpc1tUWVBFUy5SRUFEX09OTFldWy8qKiBAdHlwZSB7c3RyaW5nfSAqLyhwYXRoKV0pIHsKICAgICAgICAgICAgaWYgKHRoaXMuX3NldFBlbmRpbmdQcm9wZXJ0eU9yUGF0aChwYXRoLCB2YWx1ZSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICB0aGlzLl9pbnZhbGlkYXRlUHJvcGVydGllcygpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogQWRkcyBpdGVtcyBvbnRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IGF0IHRoZSBwYXRoIHNwZWNpZmllZC4KICAgICAgICoKICAgICAgICogVGhlIGFyZ3VtZW50cyBhZnRlciBgcGF0aGAgYW5kIHJldHVybiB2YWx1ZSBtYXRjaCB0aGF0IG9mCiAgICAgICAqIGBBcnJheS5wcm90b3R5cGUucHVzaGAuCiAgICAgICAqCiAgICAgICAqIFRoaXMgbWV0aG9kIG5vdGlmaWVzIG90aGVyIHBhdGhzIHRvIHRoZSBzYW1lIGFycmF5IHRoYXQgYQogICAgICAgKiBzcGxpY2Ugb2NjdXJyZWQgdG8gdGhlIGFycmF5LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZyB8ICFBcnJheTxzdHJpbmd8bnVtYmVyPn0gcGF0aCBQYXRoIHRvIGFycmF5LgogICAgICAgKiBAcGFyYW0gey4uLip9IGl0ZW1zIEl0ZW1zIHRvIHB1c2ggb250byBhcnJheQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IE5ldyBsZW5ndGggb2YgdGhlIGFycmF5LgogICAgICAgKiBAcHVibGljCiAgICAgICAqLwogICAgICBwdXNoKHBhdGgsIC4uLml0ZW1zKSB7CiAgICAgICAgbGV0IGluZm8gPSB7cGF0aDogJyd9OwogICAgICAgIGxldCBhcnJheSA9IC8qKiBAdHlwZSB7QXJyYXl9Ki8oUG9seW1lci5QYXRoLmdldCh0aGlzLCBwYXRoLCBpbmZvKSk7CiAgICAgICAgbGV0IGxlbiA9IGFycmF5Lmxlbmd0aDsKICAgICAgICBsZXQgcmV0ID0gYXJyYXkucHVzaCguLi5pdGVtcyk7CiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCkgewogICAgICAgICAgbm90aWZ5U3BsaWNlKHRoaXMsIGFycmF5LCBpbmZvLnBhdGgsIGxlbiwgaXRlbXMubGVuZ3RoLCBbXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZW1vdmVzIGFuIGl0ZW0gZnJvbSB0aGUgZW5kIG9mIGFycmF5IGF0IHRoZSBwYXRoIHNwZWNpZmllZC4KICAgICAgICoKICAgICAgICogVGhlIGFyZ3VtZW50cyBhZnRlciBgcGF0aGAgYW5kIHJldHVybiB2YWx1ZSBtYXRjaCB0aGF0IG9mCiAgICAgICAqIGBBcnJheS5wcm90b3R5cGUucG9wYC4KICAgICAgICoKICAgICAgICogVGhpcyBtZXRob2Qgbm90aWZpZXMgb3RoZXIgcGF0aHMgdG8gdGhlIHNhbWUgYXJyYXkgdGhhdCBhCiAgICAgICAqIHNwbGljZSBvY2N1cnJlZCB0byB0aGUgYXJyYXkuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nIHwgIUFycmF5PHN0cmluZ3xudW1iZXI+fSBwYXRoIFBhdGggdG8gYXJyYXkuCiAgICAgICAqIEByZXR1cm4geyp9IEl0ZW0gdGhhdCB3YXMgcmVtb3ZlZC4KICAgICAgICogQHB1YmxpYwogICAgICAgKi8KICAgICAgcG9wKHBhdGgpIHsKICAgICAgICBsZXQgaW5mbyA9IHtwYXRoOiAnJ307CiAgICAgICAgbGV0IGFycmF5ID0gLyoqIEB0eXBlIHtBcnJheX0gKi8oUG9seW1lci5QYXRoLmdldCh0aGlzLCBwYXRoLCBpbmZvKSk7CiAgICAgICAgbGV0IGhhZExlbmd0aCA9IEJvb2xlYW4oYXJyYXkubGVuZ3RoKTsKICAgICAgICBsZXQgcmV0ID0gYXJyYXkucG9wKCk7CiAgICAgICAgaWYgKGhhZExlbmd0aCkgewogICAgICAgICAgbm90aWZ5U3BsaWNlKHRoaXMsIGFycmF5LCBpbmZvLnBhdGgsIGFycmF5Lmxlbmd0aCwgMCwgW3JldF0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgICB9CgogICAgICAvKioKICAgICAgICogU3RhcnRpbmcgZnJvbSB0aGUgc3RhcnQgaW5kZXggc3BlY2lmaWVkLCByZW1vdmVzIDAgb3IgbW9yZSBpdGVtcwogICAgICAgKiBmcm9tIHRoZSBhcnJheSBhbmQgaW5zZXJ0cyAwIG9yIG1vcmUgbmV3IGl0ZW1zIGluIHRoZWlyIHBsYWNlLgogICAgICAgKgogICAgICAgKiBUaGUgYXJndW1lbnRzIGFmdGVyIGBwYXRoYCBhbmQgcmV0dXJuIHZhbHVlIG1hdGNoIHRoYXQgb2YKICAgICAgICogYEFycmF5LnByb3RvdHlwZS5zcGxpY2VgLgogICAgICAgKgogICAgICAgKiBUaGlzIG1ldGhvZCBub3RpZmllcyBvdGhlciBwYXRocyB0byB0aGUgc2FtZSBhcnJheSB0aGF0IGEKICAgICAgICogc3BsaWNlIG9jY3VycmVkIHRvIHRoZSBhcnJheS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8c3RyaW5nfG51bWJlcj59IHBhdGggUGF0aCB0byBhcnJheS4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0IEluZGV4IGZyb20gd2hpY2ggdG8gc3RhcnQgcmVtb3ZpbmcvaW5zZXJ0aW5nLgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gZGVsZXRlQ291bnQgTnVtYmVyIG9mIGl0ZW1zIHRvIHJlbW92ZS4KICAgICAgICogQHBhcmFtIHsuLi4qfSBpdGVtcyBJdGVtcyB0byBpbnNlcnQgaW50byBhcnJheS4KICAgICAgICogQHJldHVybiB7QXJyYXl9IEFycmF5IG9mIHJlbW92ZWQgaXRlbXMuCiAgICAgICAqIEBwdWJsaWMKICAgICAgICovCiAgICAgIHNwbGljZShwYXRoLCBzdGFydCwgZGVsZXRlQ291bnQsIC4uLml0ZW1zKSB7CiAgICAgICAgbGV0IGluZm8gPSB7cGF0aCA6ICcnfTsKICAgICAgICBsZXQgYXJyYXkgPSAvKiogQHR5cGUge0FycmF5fSAqLyhQb2x5bWVyLlBhdGguZ2V0KHRoaXMsIHBhdGgsIGluZm8pKTsKICAgICAgICAvLyBOb3JtYWxpemUgZmFuY3kgbmF0aXZlIHNwbGljZSBoYW5kbGluZyBvZiBjcmF6eSBzdGFydCB2YWx1ZXMKICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CiAgICAgICAgICBzdGFydCA9IGFycmF5Lmxlbmd0aCAtIE1hdGguZmxvb3IoLXN0YXJ0KTsKICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0KSB7CiAgICAgICAgICBzdGFydCA9IE1hdGguZmxvb3Ioc3RhcnQpOwogICAgICAgIH0KICAgICAgICAvLyBhcnJheS5zcGxpY2UgZG9lcyBkaWZmZXJlbnQgdGhpbmdzIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCiAgICAgICAgLy8geW91IHBhc3MgaW4uIFRoZXJlZm9yZSwgYXJyYXkuc3BsaWNlKDApIGFuZCBhcnJheS5zcGxpY2UoMCwgdW5kZWZpbmVkKQogICAgICAgIC8vIGRvIGRpZmZlcmVudCB0aGluZ3MuIEluIHRoZSBmb3JtZXIsIHRoZSB3aG9sZSBhcnJheSBpcyBjbGVhcmVkLiBJbiB0aGUKICAgICAgICAvLyBsYXR0ZXIsIG5vIGl0ZW1zIGFyZSByZW1vdmVkLgogICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIGRldGVjdCB3aGV0aGVyIDEuIG9uZSBvZiB0aGUgYXJndW1lbnRzCiAgICAgICAgLy8gaXMgYWN0dWFsbHkgcGFzc2VkIGluIGFuZCB0aGVuIDIuIGRldGVybWluZSBob3cgbWFueSBhcmd1bWVudHMKICAgICAgICAvLyB3ZSBzaG91bGQgcGFzcyBvbiB0byB0aGUgbmF0aXZlIGFycmF5LnNwbGljZQogICAgICAgIC8vCiAgICAgICAgbGV0IHJldDsKICAgICAgICAvLyBPbWl0IGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBpZiB0aGV5IHdlcmUgbm90IHBhc3NlZCBpbgogICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7CiAgICAgICAgICByZXQgPSBhcnJheS5zcGxpY2Uoc3RhcnQpOwogICAgICAgIC8vIEVpdGhlciBzdGFydCB3YXMgdW5kZWZpbmVkIGFuZCB0aGUgb3RoZXJzIHdlcmUgZGVmaW5lZCwgYnV0IGluIHRoaXMKICAgICAgICAvLyBjYXNlIHdlIGNhbiBzYWZlbHkgcGFzcyBvbiBhbGwgYXJndW1lbnRzCiAgICAgICAgLy8KICAgICAgICAvLyBOb3RlOiB0aGlzIGluY2x1ZGVzIHRoZSBjYXNlIHdoZXJlIG5vbmUgb2YgdGhlIGFyZ3VtZW50cyB3ZXJlIHBhc3NlZCBpbiwKICAgICAgICAvLyBlLmcuIHRoaXMuc3BsaWNlKCdhcnJheScpLiBIb3dldmVyLCBpZiBib3RoIHN0YXJ0IGFuZCBkZWxldGVDb3VudAogICAgICAgIC8vIGFyZSB1bmRlZmluZWQsIGFycmF5LnNwbGljZSB3aWxsIG5vdCBtb2RpZnkgdGhlIGFycmF5IChhcyBleHBlY3RlZCkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmV0ID0gYXJyYXkuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgLi4uaXRlbXMpOwogICAgICAgIH0KICAgICAgICAvLyBBdCB0aGUgZW5kLCBjaGVjayB3aGV0aGVyIGFueSBpdGVtcyB3ZXJlIHBhc3NlZCBpbiAoZS5nLiBpbnNlcnRpb25zKQogICAgICAgIC8vIG9yIGlmIHRoZSByZXR1cm4gYXJyYXkgY29udGFpbnMgaXRlbXMgKGUuZy4gZGVsZXRpb25zKS4KICAgICAgICAvLyBPbmx5IG5vdGlmeSBpZiBpdGVtcyB3ZXJlIGFkZGVkIG9yIGRlbGV0ZWQuCiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCB8fCByZXQubGVuZ3RoKSB7CiAgICAgICAgICBub3RpZnlTcGxpY2UodGhpcywgYXJyYXksIGluZm8ucGF0aCwgc3RhcnQsIGl0ZW1zLmxlbmd0aCwgcmV0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJlbW92ZXMgYW4gaXRlbSBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYXJyYXkgYXQgdGhlIHBhdGggc3BlY2lmaWVkLgogICAgICAgKgogICAgICAgKiBUaGUgYXJndW1lbnRzIGFmdGVyIGBwYXRoYCBhbmQgcmV0dXJuIHZhbHVlIG1hdGNoIHRoYXQgb2YKICAgICAgICogYEFycmF5LnByb3RvdHlwZS5wb3BgLgogICAgICAgKgogICAgICAgKiBUaGlzIG1ldGhvZCBub3RpZmllcyBvdGhlciBwYXRocyB0byB0aGUgc2FtZSBhcnJheSB0aGF0IGEKICAgICAgICogc3BsaWNlIG9jY3VycmVkIHRvIHRoZSBhcnJheS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8c3RyaW5nfG51bWJlcj59IHBhdGggUGF0aCB0byBhcnJheS4KICAgICAgICogQHJldHVybiB7Kn0gSXRlbSB0aGF0IHdhcyByZW1vdmVkLgogICAgICAgKiBAcHVibGljCiAgICAgICAqLwogICAgICBzaGlmdChwYXRoKSB7CiAgICAgICAgbGV0IGluZm8gPSB7cGF0aDogJyd9OwogICAgICAgIGxldCBhcnJheSA9IC8qKiBAdHlwZSB7QXJyYXl9ICovKFBvbHltZXIuUGF0aC5nZXQodGhpcywgcGF0aCwgaW5mbykpOwogICAgICAgIGxldCBoYWRMZW5ndGggPSBCb29sZWFuKGFycmF5Lmxlbmd0aCk7CiAgICAgICAgbGV0IHJldCA9IGFycmF5LnNoaWZ0KCk7CiAgICAgICAgaWYgKGhhZExlbmd0aCkgewogICAgICAgICAgbm90aWZ5U3BsaWNlKHRoaXMsIGFycmF5LCBpbmZvLnBhdGgsIDAsIDAsIFtyZXRdKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEFkZHMgaXRlbXMgb250byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheSBhdCB0aGUgcGF0aCBzcGVjaWZpZWQuCiAgICAgICAqCiAgICAgICAqIFRoZSBhcmd1bWVudHMgYWZ0ZXIgYHBhdGhgIGFuZCByZXR1cm4gdmFsdWUgbWF0Y2ggdGhhdCBvZgogICAgICAgKiBgQXJyYXkucHJvdG90eXBlLnB1c2hgLgogICAgICAgKgogICAgICAgKiBUaGlzIG1ldGhvZCBub3RpZmllcyBvdGhlciBwYXRocyB0byB0aGUgc2FtZSBhcnJheSB0aGF0IGEKICAgICAgICogc3BsaWNlIG9jY3VycmVkIHRvIHRoZSBhcnJheS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmcgfCAhQXJyYXk8c3RyaW5nfG51bWJlcj59IHBhdGggUGF0aCB0byBhcnJheS4KICAgICAgICogQHBhcmFtIHsuLi4qfSBpdGVtcyBJdGVtcyB0byBpbnNlcnQgaW5mbyBhcnJheQogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IE5ldyBsZW5ndGggb2YgdGhlIGFycmF5LgogICAgICAgKiBAcHVibGljCiAgICAgICAqLwogICAgICB1bnNoaWZ0KHBhdGgsIC4uLml0ZW1zKSB7CiAgICAgICAgbGV0IGluZm8gPSB7cGF0aDogJyd9OwogICAgICAgIGxldCBhcnJheSA9IC8qKiBAdHlwZSB7QXJyYXl9ICovKFBvbHltZXIuUGF0aC5nZXQodGhpcywgcGF0aCwgaW5mbykpOwogICAgICAgIGxldCByZXQgPSBhcnJheS51bnNoaWZ0KC4uLml0ZW1zKTsKICAgICAgICBpZiAoaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgICBub3RpZnlTcGxpY2UodGhpcywgYXJyYXksIGluZm8ucGF0aCwgMCwgaXRlbXMubGVuZ3RoLCBbXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBOb3RpZnkgdGhhdCBhIHBhdGggaGFzIGNoYW5nZWQuCiAgICAgICAqCiAgICAgICAqIEV4YW1wbGU6CiAgICAgICAqCiAgICAgICAqICAgICB0aGlzLml0ZW0udXNlci5uYW1lID0gJ0JvYic7CiAgICAgICAqICAgICB0aGlzLm5vdGlmeVBhdGgoJ2l0ZW0udXNlci5uYW1lJyk7CiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFBhdGggdGhhdCBzaG91bGQgYmUgbm90aWZpZWQuCiAgICAgICAqIEBwYXJhbSB7Kj19IHZhbHVlIFZhbHVlIGF0IHRoZSBwYXRoIChvcHRpb25hbCkuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwdWJsaWMKICAgICAgKi8KICAgICAgbm90aWZ5UGF0aChwYXRoLCB2YWx1ZSkgewogICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLwogICAgICAgIGxldCBwcm9wUGF0aDsKICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgICAgICAvLyBHZXQgdmFsdWUgaWYgbm90IHN1cHBsaWVkCiAgICAgICAgICBsZXQgaW5mbyA9IHtwYXRoOiAnJ307CiAgICAgICAgICB2YWx1ZSA9IFBvbHltZXIuUGF0aC5nZXQodGhpcywgcGF0aCwgaW5mbyk7CiAgICAgICAgICBwcm9wUGF0aCA9IGluZm8ucGF0aDsKICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF0aCkpIHsKICAgICAgICAgIC8vIE5vcm1hbGl6ZSBwYXRoIGlmIG5lZWRlZAogICAgICAgICAgcHJvcFBhdGggPSBQb2x5bWVyLlBhdGgubm9ybWFsaXplKHBhdGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBwcm9wUGF0aCA9IC8qKiBAdHlwZXtzdHJpbmd9ICovKHBhdGgpOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHByb3BQYXRoLCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSkpIHsKICAgICAgICAgIHRoaXMuX2ludmFsaWRhdGVQcm9wZXJ0aWVzKCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogRXF1aXZhbGVudCB0byBzdGF0aWMgYGNyZWF0ZVJlYWRPbmx5UHJvcGVydHlgIEFQSSBidXQgY2FuIGJlIGNhbGxlZCBvbgogICAgICAgKiBhbiBpbnN0YW5jZSB0byBhZGQgZWZmZWN0cyBhdCBydW50aW1lLiAgU2VlIHRoYXQgbWV0aG9kIGZvcgogICAgICAgKiBmdWxsIEFQSSBkb2NzLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgbmFtZQogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBwcm90ZWN0ZWRTZXR0ZXIgQ3JlYXRlcyBhIGN1c3RvbSBwcm90ZWN0ZWQgc2V0dGVyCiAgICAgICAqICAgd2hlbiBgdHJ1ZWAuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9jcmVhdGVSZWFkT25seVByb3BlcnR5KHByb3BlcnR5LCBwcm90ZWN0ZWRTZXR0ZXIpIHsKICAgICAgICB0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdChwcm9wZXJ0eSwgVFlQRVMuUkVBRF9PTkxZKTsKICAgICAgICBpZiAocHJvdGVjdGVkU2V0dGVyKSB7CiAgICAgICAgICB0aGlzWydfc2V0JyArIHVwcGVyKHByb3BlcnR5KV0gPSAvKiogQHRoaXMge1Byb3BlcnR5RWZmZWN0c30gKi9mdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICB0aGlzLl9zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpOwogICAgICAgICAgfTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBFcXVpdmFsZW50IHRvIHN0YXRpYyBgY3JlYXRlUHJvcGVydHlPYnNlcnZlcmAgQVBJIGJ1dCBjYW4gYmUgY2FsbGVkIG9uCiAgICAgICAqIGFuIGluc3RhbmNlIHRvIGFkZCBlZmZlY3RzIGF0IHJ1bnRpbWUuICBTZWUgdGhhdCBtZXRob2QgZm9yCiAgICAgICAqIGZ1bGwgQVBJIGRvY3MuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfGZ1bmN0aW9uKCosKil9IG1ldGhvZCBGdW5jdGlvbiBvciBuYW1lIG9mIG9ic2VydmVyIG1ldGhvZCB0byBjYWxsCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGR5bmFtaWNGbiBXaGV0aGVyIHRoZSBtZXRob2QgbmFtZSBzaG91bGQgYmUgaW5jbHVkZWQgYXMKICAgICAgICogICBhIGRlcGVuZGVuY3kgdG8gdGhlIGVmZmVjdC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIocHJvcGVydHksIG1ldGhvZCwgZHluYW1pY0ZuKSB7CiAgICAgICAgbGV0IGluZm8gPSB7IHByb3BlcnR5LCBtZXRob2QsIGR5bmFtaWNGbjogQm9vbGVhbihkeW5hbWljRm4pIH07CiAgICAgICAgdGhpcy5fYWRkUHJvcGVydHlFZmZlY3QocHJvcGVydHksIFRZUEVTLk9CU0VSVkUsIHsKICAgICAgICAgIGZuOiBydW5PYnNlcnZlckVmZmVjdCwgaW5mbywgdHJpZ2dlcjoge25hbWU6IHByb3BlcnR5fQogICAgICAgIH0pOwogICAgICAgIGlmIChkeW5hbWljRm4pIHsKICAgICAgICAgIHRoaXMuX2FkZFByb3BlcnR5RWZmZWN0KC8qKiBAdHlwZSB7c3RyaW5nfSAqLyhtZXRob2QpLCBUWVBFUy5PQlNFUlZFLCB7CiAgICAgICAgICAgIGZuOiBydW5PYnNlcnZlckVmZmVjdCwgaW5mbywgdHJpZ2dlcjoge25hbWU6IG1ldGhvZH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gc3RhdGljIGBjcmVhdGVNZXRob2RPYnNlcnZlcmAgQVBJIGJ1dCBjYW4gYmUgY2FsbGVkIG9uCiAgICAgICAqIGFuIGluc3RhbmNlIHRvIGFkZCBlZmZlY3RzIGF0IHJ1bnRpbWUuICBTZWUgdGhhdCBtZXRob2QgZm9yCiAgICAgICAqIGZ1bGwgQVBJIGRvY3MuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIE1ldGhvZCBleHByZXNzaW9uCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbnxPYmplY3Q9fSBkeW5hbWljRm4gQm9vbGVhbiBvciBvYmplY3QgbWFwIGluZGljYXRpbmcKICAgICAgICogICB3aGV0aGVyIG1ldGhvZCBuYW1lcyBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYSBkZXBlbmRlbmN5IHRvIHRoZSBlZmZlY3QuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9jcmVhdGVNZXRob2RPYnNlcnZlcihleHByZXNzaW9uLCBkeW5hbWljRm4pIHsKICAgICAgICBsZXQgc2lnID0gcGFyc2VNZXRob2QoZXhwcmVzc2lvbik7CiAgICAgICAgaWYgKCFzaWcpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIG9ic2VydmVyIGV4cHJlc3Npb24gJyIgKyBleHByZXNzaW9uICsgIiciKTsKICAgICAgICB9CiAgICAgICAgY3JlYXRlTWV0aG9kRWZmZWN0KHRoaXMsIHNpZywgVFlQRVMuT0JTRVJWRSwgcnVuTWV0aG9kRWZmZWN0LCBudWxsLCBkeW5hbWljRm4pOwogICAgICB9CgogICAgICAvKioKICAgICAgICogRXF1aXZhbGVudCB0byBzdGF0aWMgYGNyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5YCBBUEkgYnV0IGNhbiBiZSBjYWxsZWQgb24KICAgICAgICogYW4gaW5zdGFuY2UgdG8gYWRkIGVmZmVjdHMgYXQgcnVudGltZS4gIFNlZSB0aGF0IG1ldGhvZCBmb3IKICAgICAgICogZnVsbCBBUEkgZG9jcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2NyZWF0ZU5vdGlmeWluZ1Byb3BlcnR5KHByb3BlcnR5KSB7CiAgICAgICAgdGhpcy5fYWRkUHJvcGVydHlFZmZlY3QocHJvcGVydHksIFRZUEVTLk5PVElGWSwgewogICAgICAgICAgZm46IHJ1bk5vdGlmeUVmZmVjdCwKICAgICAgICAgIGluZm86IHsKICAgICAgICAgICAgZXZlbnROYW1lOiBDYXNlTWFwLmNhbWVsVG9EYXNoQ2FzZShwcm9wZXJ0eSkgKyAnLWNoYW5nZWQnLAogICAgICAgICAgICBwcm9wZXJ0eTogcHJvcGVydHkKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gc3RhdGljIGBjcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eWAgQVBJIGJ1dCBjYW4gYmUgY2FsbGVkIG9uCiAgICAgICAqIGFuIGluc3RhbmNlIHRvIGFkZCBlZmZlY3RzIGF0IHJ1bnRpbWUuICBTZWUgdGhhdCBtZXRob2QgZm9yCiAgICAgICAqIGZ1bGwgQVBJIGRvY3MuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9jcmVhdGVSZWZsZWN0ZWRQcm9wZXJ0eShwcm9wZXJ0eSkgewogICAgICAgIGxldCBhdHRyID0gdGhpcy5jb25zdHJ1Y3Rvci5hdHRyaWJ1dGVOYW1lRm9yUHJvcGVydHkocHJvcGVydHkpOwogICAgICAgIGlmIChhdHRyWzBdID09PSAnLScpIHsKICAgICAgICAgIGNvbnNvbGUud2FybignUHJvcGVydHkgJyArIHByb3BlcnR5ICsgJyBjYW5ub3QgYmUgcmVmbGVjdGVkIHRvIGF0dHJpYnV0ZSAnICsKICAgICAgICAgICAgYXR0ciArICcgYmVjYXVzZSAiLSIgaXMgbm90IGEgdmFsaWQgc3RhcnRpbmcgYXR0cmlidXRlIG5hbWUuIFVzZSBhIGxvd2VyY2FzZSBmaXJzdCBsZXR0ZXIgZm9yIHRoZSBwcm9wZXJ0eSBpbnN0ZWFkLicpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLl9hZGRQcm9wZXJ0eUVmZmVjdChwcm9wZXJ0eSwgVFlQRVMuUkVGTEVDVCwgewogICAgICAgICAgICBmbjogcnVuUmVmbGVjdEVmZmVjdCwKICAgICAgICAgICAgaW5mbzogewogICAgICAgICAgICAgIGF0dHJOYW1lOiBhdHRyCiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEVxdWl2YWxlbnQgdG8gc3RhdGljIGBjcmVhdGVDb21wdXRlZFByb3BlcnR5YCBBUEkgYnV0IGNhbiBiZSBjYWxsZWQgb24KICAgICAgICogYW4gaW5zdGFuY2UgdG8gYWRkIGVmZmVjdHMgYXQgcnVudGltZS4gIFNlZSB0aGF0IG1ldGhvZCBmb3IKICAgICAgICogZnVsbCBBUEkgZG9jcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgY29tcHV0ZWQgcHJvcGVydHkgdG8gc2V0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIE1ldGhvZCBleHByZXNzaW9uCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbnxPYmplY3Q9fSBkeW5hbWljRm4gQm9vbGVhbiBvciBvYmplY3QgbWFwIGluZGljYXRpbmcKICAgICAgICogICB3aGV0aGVyIG1ldGhvZCBuYW1lcyBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYSBkZXBlbmRlbmN5IHRvIHRoZSBlZmZlY3QuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9jcmVhdGVDb21wdXRlZFByb3BlcnR5KHByb3BlcnR5LCBleHByZXNzaW9uLCBkeW5hbWljRm4pIHsKICAgICAgICBsZXQgc2lnID0gcGFyc2VNZXRob2QoZXhwcmVzc2lvbik7CiAgICAgICAgaWYgKCFzaWcpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWFsZm9ybWVkIGNvbXB1dGVkIGV4cHJlc3Npb24gJyIgKyBleHByZXNzaW9uICsgIiciKTsKICAgICAgICB9CiAgICAgICAgY3JlYXRlTWV0aG9kRWZmZWN0KHRoaXMsIHNpZywgVFlQRVMuQ09NUFVURSwgcnVuQ29tcHV0ZWRFZmZlY3QsIHByb3BlcnR5LCBkeW5hbWljRm4pOwogICAgICB9CgogICAgICAvKioKICAgICAgICogR2F0aGVyIHRoZSBhcmd1bWVudCB2YWx1ZXMgZm9yIGEgbWV0aG9kIHNwZWNpZmllZCBpbiB0aGUgcHJvdmlkZWQgYXJyYXkKICAgICAgICogb2YgYXJndW1lbnQgbWV0YWRhdGEuCiAgICAgICAqCiAgICAgICAqIFRoZSBgcGF0aGAgYW5kIGB2YWx1ZWAgYXJndW1lbnRzIGFyZSB1c2VkIHRvIGZpbGwgaW4gd2lsZGNhcmQgZGVzY3JpcHRvcgogICAgICAgKiB3aGVuIHRoZSBtZXRob2QgaXMgYmVpbmcgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGEgcGF0aCBub3RpZmljYXRpb24uCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IUFycmF5PCFNZXRob2RBcmc+fSBhcmdzIEFycmF5IG9mIGFyZ3VtZW50IG1ldGFkYXRhCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFByb3BlcnR5L3BhdGggbmFtZSB0aGF0IHRyaWdnZXJlZCB0aGUgbWV0aG9kIGVmZmVjdAogICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIGN1cnJlbnQgcHJvcGVydHkgY2hhbmdlcwogICAgICAgKiBAcmV0dXJuIHtBcnJheTwqPn0gQXJyYXkgb2YgYXJndW1lbnQgdmFsdWVzCiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICBfbWFyc2hhbEFyZ3MoYXJncywgcGF0aCwgcHJvcHMpIHsKICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fX2RhdGE7CiAgICAgICAgbGV0IHZhbHVlcyA9IFtdOwogICAgICAgIGZvciAobGV0IGk9MCwgbD1hcmdzLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgIGxldCBhcmcgPSBhcmdzW2ldOwogICAgICAgICAgbGV0IG5hbWUgPSBhcmcubmFtZTsKICAgICAgICAgIGxldCB2OwogICAgICAgICAgaWYgKGFyZy5saXRlcmFsKSB7CiAgICAgICAgICAgIHYgPSBhcmcudmFsdWU7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoYXJnLnN0cnVjdHVyZWQpIHsKICAgICAgICAgICAgICB2ID0gUG9seW1lci5QYXRoLmdldChkYXRhLCBuYW1lKTsKICAgICAgICAgICAgICAvLyB3aGVuIGRhdGEgaXMgbm90IHN0b3JlZCBlLmcuIGBzcGxpY2VzYAogICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIHYgPSBwcm9wc1tuYW1lXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdiA9IGRhdGFbbmFtZV07CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChhcmcud2lsZGNhcmQpIHsKICAgICAgICAgICAgLy8gT25seSBzZW5kIHRoZSBhY3R1YWwgcGF0aCBjaGFuZ2VkIGluZm8gaWYgdGhlIGNoYW5nZSB0aGF0CiAgICAgICAgICAgIC8vIGNhdXNlZCB0aGUgb2JzZXJ2ZXIgdG8gcnVuIG1hdGNoZWQgdGhlIHdpbGRjYXJkCiAgICAgICAgICAgIGxldCBiYXNlQ2hhbmdlZCA9IChuYW1lLmluZGV4T2YocGF0aCArICcuJykgPT09IDApOwogICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IChwYXRoLmluZGV4T2YobmFtZSkgPT09IDAgJiYgIWJhc2VDaGFuZ2VkKTsKICAgICAgICAgICAgdmFsdWVzW2ldID0gewogICAgICAgICAgICAgIHBhdGg6IG1hdGNoZXMgPyBwYXRoIDogbmFtZSwKICAgICAgICAgICAgICB2YWx1ZTogbWF0Y2hlcyA/IHByb3BzW3BhdGhdIDogdiwKICAgICAgICAgICAgICBiYXNlOiB2CiAgICAgICAgICAgIH07CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YWx1ZXNbaV0gPSB2OwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdmFsdWVzOwogICAgICB9CgogICAgICAvLyAtLSBzdGF0aWMgY2xhc3MgbWV0aG9kcyAtLS0tLS0tLS0tLS0KCiAgICAgIC8qKgogICAgICAgKiBFbnN1cmVzIGFuIGFjY2Vzc29yIGV4aXN0cyBmb3IgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSwgYW5kIGFkZHMKICAgICAgICogdG8gYSBsaXN0IG9mICJwcm9wZXJ0eSBlZmZlY3RzIiB0aGF0IHdpbGwgcnVuIHdoZW4gdGhlIGFjY2Vzc29yIGZvcgogICAgICAgKiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IGlzIHNldC4gIEVmZmVjdHMgYXJlIGdyb3VwZWQgYnkgInR5cGUiLCB3aGljaAogICAgICAgKiByb3VnaGx5IGNvcnJlc3BvbmRzIHRvIGEgcGhhc2UgaW4gZWZmZWN0IHByb2Nlc3NpbmcuICBUaGUgZWZmZWN0CiAgICAgICAqIG1ldGFkYXRhIHNob3VsZCBiZSBpbiB0aGUgZm9sbG93aW5nIGZvcm06CiAgICAgICAqCiAgICAgICAqICAgICB7CiAgICAgICAqICAgICAgIGZuOiBlZmZlY3RGdW5jdGlvbiwgLy8gUmVmZXJlbmNlIHRvIGZ1bmN0aW9uIHRvIGNhbGwgdG8gcGVyZm9ybSBlZmZlY3QKICAgICAgICogICAgICAgaW5mbzogeyAuLi4gfSAgICAgICAvLyBFZmZlY3QgbWV0YWRhdGEgcGFzc2VkIHRvIGZ1bmN0aW9uCiAgICAgICAqICAgICAgIHRyaWdnZXI6IHsgICAgICAgICAgLy8gT3B0aW9uYWwgdHJpZ2dlcmluZyBtZXRhZGF0YTsgaWYgbm90IHByb3ZpZGVkCiAgICAgICAqICAgICAgICAgbmFtZTogc3RyaW5nICAgICAgLy8gdGhlIHByb3BlcnR5IGlzIHRyZWF0ZWQgYXMgYSB3aWxkY2FyZAogICAgICAgKiAgICAgICAgIHN0cnVjdHVyZWQ6IGJvb2xlYW4KICAgICAgICogICAgICAgICB3aWxkY2FyZDogYm9vbGVhbgogICAgICAgKiAgICAgICB9CiAgICAgICAqICAgICB9CiAgICAgICAqCiAgICAgICAqIEVmZmVjdHMgYXJlIGNhbGxlZCBmcm9tIGBfcHJvcGVydGllc0NoYW5nZWRgIGluIHRoZSBmb2xsb3dpbmcgb3JkZXIgYnkKICAgICAgICogdHlwZToKICAgICAgICoKICAgICAgICogMS4gQ09NUFVURQogICAgICAgKiAyLiBQUk9QQUdBVEUKICAgICAgICogMy4gUkVGTEVDVAogICAgICAgKiA0LiBPQlNFUlZFCiAgICAgICAqIDUuIE5PVElGWQogICAgICAgKgogICAgICAgKiBFZmZlY3QgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aCB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZToKICAgICAgICoKICAgICAgICogICAgIGVmZmVjdEZ1bmN0aW9uKGluc3QsIHBhdGgsIHByb3BzLCBvbGRQcm9wcywgaW5mbywgaGFzUGF0aHMpCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSB0aGF0IHNob3VsZCB0cmlnZ2VyIHRoZSBlZmZlY3QKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgRWZmZWN0IHR5cGUsIGZyb20gdGhpcy5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMKICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBlZmZlY3QgRWZmZWN0IG1ldGFkYXRhIG9iamVjdAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgYWRkUHJvcGVydHlFZmZlY3QocHJvcGVydHksIHR5cGUsIGVmZmVjdCkgewogICAgICAgIHRoaXMucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdChwcm9wZXJ0eSwgdHlwZSwgZWZmZWN0KTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENyZWF0ZXMgYSBzaW5nbGUtcHJvcGVydHkgb2JzZXJ2ZXIgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHBhcmFtIHtzdHJpbmd8ZnVuY3Rpb24oKiwqKX0gbWV0aG9kIEZ1bmN0aW9uIG9yIG5hbWUgb2Ygb2JzZXJ2ZXIgbWV0aG9kIHRvIGNhbGwKICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gZHluYW1pY0ZuIFdoZXRoZXIgdGhlIG1ldGhvZCBuYW1lIHNob3VsZCBiZSBpbmNsdWRlZCBhcwogICAgICAgKiAgIGEgZGVwZW5kZW5jeSB0byB0aGUgZWZmZWN0LgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgY3JlYXRlUHJvcGVydHlPYnNlcnZlcihwcm9wZXJ0eSwgbWV0aG9kLCBkeW5hbWljRm4pIHsKICAgICAgICB0aGlzLnByb3RvdHlwZS5fY3JlYXRlUHJvcGVydHlPYnNlcnZlcihwcm9wZXJ0eSwgbWV0aG9kLCBkeW5hbWljRm4pOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ3JlYXRlcyBhIG11bHRpLXByb3BlcnR5ICJtZXRob2Qgb2JzZXJ2ZXIiIGJhc2VkIG9uIHRoZSBwcm92aWRlZAogICAgICAgKiBleHByZXNzaW9uLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgYSBub3JtYWwgSmF2YVNjcmlwdAogICAgICAgKiBmdW5jdGlvbiBzaWduYXR1cmU6IGAnbWV0aG9kTmFtZShhcmcxLCBbLi4uLCBhcmduXSknYC4gIEVhY2ggYXJndW1lbnQKICAgICAgICogc2hvdWxkIGNvcnJlc3BvbmQgdG8gYSBwcm9wZXJ0eSBvciBwYXRoIGluIHRoZSBjb250ZXh0IG9mIHRoaXMKICAgICAgICogcHJvdG90eXBlIChvciBpbnN0YW5jZSksIG9yIG1heSBiZSBhIGxpdGVyYWwgc3RyaW5nIG9yIG51bWJlci4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGV4cHJlc3Npb24gTWV0aG9kIGV4cHJlc3Npb24KICAgICAgICogQHBhcmFtIHtib29sZWFufE9iamVjdD19IGR5bmFtaWNGbiBCb29sZWFuIG9yIG9iamVjdCBtYXAgaW5kaWNhdGluZwogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiAgIHdoZXRoZXIgbWV0aG9kIG5hbWVzIHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhIGRlcGVuZGVuY3kgdG8gdGhlIGVmZmVjdC4KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIGNyZWF0ZU1ldGhvZE9ic2VydmVyKGV4cHJlc3Npb24sIGR5bmFtaWNGbikgewogICAgICAgIHRoaXMucHJvdG90eXBlLl9jcmVhdGVNZXRob2RPYnNlcnZlcihleHByZXNzaW9uLCBkeW5hbWljRm4pOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ2F1c2VzIHRoZSBzZXR0ZXIgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSB0byBkaXNwYXRjaCBgPHByb3BlcnR5Pi1jaGFuZ2VkYAogICAgICAgKiBldmVudHMgdG8gbm90aWZ5IG9mIGNoYW5nZXMgdG8gdGhlIHByb3BlcnR5LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgbmFtZQogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkocHJvcGVydHkpIHsKICAgICAgICB0aGlzLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkocHJvcGVydHkpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ3JlYXRlcyBhIHJlYWQtb25seSBhY2Nlc3NvciBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LgogICAgICAgKgogICAgICAgKiBUbyBzZXQgdGhlIHByb3BlcnR5LCB1c2UgdGhlIHByb3RlY3RlZCBgX3NldFByb3BlcnR5YCBBUEkuCiAgICAgICAqIFRvIGNyZWF0ZSBhIGN1c3RvbSBwcm90ZWN0ZWQgc2V0dGVyIChlLmcuIGBfc2V0TXlQcm9wKClgIGZvcgogICAgICAgKiBwcm9wZXJ0eSBgbXlQcm9wYCksIHBhc3MgYHRydWVgIGZvciBgcHJvdGVjdGVkU2V0dGVyYC4KICAgICAgICoKICAgICAgICogTm90ZSwgaWYgdGhlIHByb3BlcnR5IHdpbGwgaGF2ZSBvdGhlciBwcm9wZXJ0eSBlZmZlY3RzLCB0aGlzIG1ldGhvZAogICAgICAgKiBzaG91bGQgYmUgY2FsbGVkIGZpcnN0LCBiZWZvcmUgYWRkaW5nIG90aGVyIGVmZmVjdHMuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBQcm9wZXJ0eSBuYW1lCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHByb3RlY3RlZFNldHRlciBDcmVhdGVzIGEgY3VzdG9tIHByb3RlY3RlZCBzZXR0ZXIKICAgICAgICogICB3aGVuIGB0cnVlYC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIGNyZWF0ZVJlYWRPbmx5UHJvcGVydHkocHJvcGVydHksIHByb3RlY3RlZFNldHRlcikgewogICAgICAgIHRoaXMucHJvdG90eXBlLl9jcmVhdGVSZWFkT25seVByb3BlcnR5KHByb3BlcnR5LCBwcm90ZWN0ZWRTZXR0ZXIpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ2F1c2VzIHRoZSBzZXR0ZXIgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSB0byByZWZsZWN0IHRoZSBwcm9wZXJ0eSB2YWx1ZQogICAgICAgKiB0byBhIChkYXNoLWNhc2VkKSBhdHRyaWJ1dGUgb2YgdGhlIHNhbWUgbmFtZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIGNyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KHByb3BlcnR5KSB7CiAgICAgICAgdGhpcy5wcm90b3R5cGUuX2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KHByb3BlcnR5KTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENyZWF0ZXMgYSBjb21wdXRlZCBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyBzZXQgdG8gdGhlIHJlc3VsdCBvZiB0aGUKICAgICAgICogbWV0aG9kIGRlc2NyaWJlZCBieSB0aGUgZ2l2ZW4gYGV4cHJlc3Npb25gIGVhY2ggdGltZSBvbmUgb3IgbW9yZQogICAgICAgKiBhcmd1bWVudHMgdG8gdGhlIG1ldGhvZCBjaGFuZ2VzLiAgVGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIGEgc3RyaW5nCiAgICAgICAqIGluIHRoZSBmb3JtIG9mIGEgbm9ybWFsIEphdmFTY3JpcHQgZnVuY3Rpb24gc2lnbmF0dXJlOgogICAgICAgKiBgJ21ldGhvZE5hbWUoYXJnMSwgWy4uLiwgYXJnbl0pJ2AKICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IE5hbWUgb2YgY29tcHV0ZWQgcHJvcGVydHkgdG8gc2V0CiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBleHByZXNzaW9uIE1ldGhvZCBleHByZXNzaW9uCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbnxPYmplY3Q9fSBkeW5hbWljRm4gQm9vbGVhbiBvciBvYmplY3QgbWFwIGluZGljYXRpbmcgd2hldGhlcgogICAgICAgKiAgIG1ldGhvZCBuYW1lcyBzaG91bGQgYmUgaW5jbHVkZWQgYXMgYSBkZXBlbmRlbmN5IHRvIHRoZSBlZmZlY3QuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIHN0YXRpYyBjcmVhdGVDb21wdXRlZFByb3BlcnR5KHByb3BlcnR5LCBleHByZXNzaW9uLCBkeW5hbWljRm4pIHsKICAgICAgICB0aGlzLnByb3RvdHlwZS5fY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eShwcm9wZXJ0eSwgZXhwcmVzc2lvbiwgZHluYW1pY0ZuKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFBhcnNlcyB0aGUgcHJvdmlkZWQgdGVtcGxhdGUgdG8gZW5zdXJlIGJpbmRpbmcgZWZmZWN0cyBhcmUgY3JlYXRlZAogICAgICAgKiBmb3IgdGhlbSwgYW5kIHRoZW4gZW5zdXJlcyBwcm9wZXJ0eSBhY2Nlc3NvcnMgYXJlIGNyZWF0ZWQgZm9yIGFueQogICAgICAgKiBkZXBlbmRlbnQgcHJvcGVydGllcyBpbiB0aGUgdGVtcGxhdGUuICBCaW5kaW5nIGVmZmVjdHMgZm9yIGJvdW5kCiAgICAgICAqIHRlbXBsYXRlcyBhcmUgc3RvcmVkIGluIGEgbGlua2VkIGxpc3Qgb24gdGhlIGluc3RhbmNlIHNvIHRoYXQKICAgICAgICogdGVtcGxhdGVzIGNhbiBiZSBlZmZpY2llbnRseSBzdGFtcGVkIGFuZCB1bnN0YW1wZWQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IUhUTUxUZW1wbGF0ZUVsZW1lbnR9IHRlbXBsYXRlIFRlbXBsYXRlIGNvbnRhaW5pbmcgYmluZGluZwogICAgICAgKiAgIGJpbmRpbmdzCiAgICAgICAqIEByZXR1cm4geyFUZW1wbGF0ZUluZm99IFRlbXBsYXRlIG1ldGFkYXRhIG9iamVjdAogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgYmluZFRlbXBsYXRlKHRlbXBsYXRlKSB7CiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG90eXBlLl9iaW5kVGVtcGxhdGUodGVtcGxhdGUpOwogICAgICB9CgogICAgICAvLyAtLSBiaW5kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgIC8qKgogICAgICAgKiBFcXVpdmFsZW50IHRvIHN0YXRpYyBgYmluZFRlbXBsYXRlYCBBUEkgYnV0IGNhbiBiZSBjYWxsZWQgb24KICAgICAgICogYW4gaW5zdGFuY2UgdG8gYWRkIGVmZmVjdHMgYXQgcnVudGltZS4gIFNlZSB0aGF0IG1ldGhvZCBmb3IKICAgICAgICogZnVsbCBBUEkgZG9jcy4KICAgICAgICoKICAgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCBvbiB0aGUgcHJvdG90eXBlIChmb3IgcHJvdG90eXBpY2FsIHRlbXBsYXRlCiAgICAgICAqIGJpbmRpbmcsIHRvIGF2b2lkIGNyZWF0aW5nIGFjY2Vzc29ycyBldmVyeSBpbnN0YW5jZSkgb25jZSBwZXIgcHJvdG90eXBlLAogICAgICAgKiBhbmQgd2lsbCBiZSBjYWxsZWQgd2l0aCBgcnVudGltZUJpbmRpbmc6IHRydWVgIGJ5IGBfc3RhbXBUZW1wbGF0ZWAgdG8KICAgICAgICogY3JlYXRlIGFuZCBsaW5rIGFuIGluc3RhbmNlIG9mIHRoZSB0ZW1wbGF0ZSBtZXRhZGF0YSBhc3NvY2lhdGVkIHdpdGggYQogICAgICAgKiBwYXJ0aWN1bGFyIHN0YW1waW5nLgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyFIVE1MVGVtcGxhdGVFbGVtZW50fSB0ZW1wbGF0ZSBUZW1wbGF0ZSBjb250YWluaW5nIGJpbmRpbmcKICAgICAgICogICBiaW5kaW5ncwogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpbnN0YW5jZUJpbmRpbmcgV2hlbiBmYWxzZSAoZGVmYXVsdCksIHBlcmZvcm1zCiAgICAgICAqICAgInByb3RvdHlwaWNhbCIgYmluZGluZyBvZiB0aGUgdGVtcGxhdGUgYW5kIG92ZXJ3cml0ZXMgYW55IHByZXZpb3VzbHkKICAgICAgICogICBib3VuZCB0ZW1wbGF0ZSBmb3IgdGhlIGNsYXNzLiBXaGVuIHRydWUgKGFzIHBhc3NlZCBmcm9tCiAgICAgICAqICAgYF9zdGFtcFRlbXBsYXRlYCksIHRoZSB0ZW1wbGF0ZSBpbmZvIGlzIGluc3RhbmNlZCBhbmQgbGlua2VkIGludG8KICAgICAgICogICB0aGUgbGlzdCBvZiBib3VuZCB0ZW1wbGF0ZXMuCiAgICAgICAqIEByZXR1cm4geyFUZW1wbGF0ZUluZm99IFRlbXBsYXRlIG1ldGFkYXRhIG9iamVjdDsgZm9yIGBydW50aW1lQmluZGluZ2AsCiAgICAgICAqICAgdGhpcyBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgcHJvdG90eXBpY2FsIHRlbXBsYXRlIGluZm8KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX2JpbmRUZW1wbGF0ZSh0ZW1wbGF0ZSwgaW5zdGFuY2VCaW5kaW5nKSB7CiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IHRoaXMuY29uc3RydWN0b3IuX3BhcnNlVGVtcGxhdGUodGVtcGxhdGUpOwogICAgICAgIGxldCB3YXNQcmVCb3VuZCA9IHRoaXMuX190ZW1wbGF0ZUluZm8gPT0gdGVtcGxhdGVJbmZvOwogICAgICAgIC8vIE9wdGltaXphdGlvbjogc2luY2UgdGhpcyBpcyBjYWxsZWQgdHdpY2UgZm9yIHByb3RvLWJvdW5kIHRlbXBsYXRlcywKICAgICAgICAvLyBkb24ndCBhdHRlbXB0IHRvIHJlY3JlYXRlIGFjY2Vzc29ycyBpZiB0aGlzIHRlbXBsYXRlIHdhcyBwcmUtYm91bmQKICAgICAgICBpZiAoIXdhc1ByZUJvdW5kKSB7CiAgICAgICAgICBmb3IgKGxldCBwcm9wIGluIHRlbXBsYXRlSW5mby5wcm9wZXJ0eUVmZmVjdHMpIHsKICAgICAgICAgICAgdGhpcy5fY3JlYXRlUHJvcGVydHlBY2Nlc3Nvcihwcm9wKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGluc3RhbmNlQmluZGluZykgewogICAgICAgICAgLy8gRm9yIGluc3RhbmNlLXRpbWUgYmluZGluZywgY3JlYXRlIGluc3RhbmNlIG9mIHRlbXBsYXRlIG1ldGFkYXRhCiAgICAgICAgICAvLyBhbmQgbGluayBpbnRvIGxpc3Qgb2YgdGVtcGxhdGVzIGlmIG5lY2Vzc2FyeQogICAgICAgICAgdGVtcGxhdGVJbmZvID0gLyoqIEB0eXBlIHshVGVtcGxhdGVJbmZvfSAqLyhPYmplY3QuY3JlYXRlKHRlbXBsYXRlSW5mbykpOwogICAgICAgICAgdGVtcGxhdGVJbmZvLndhc1ByZUJvdW5kID0gd2FzUHJlQm91bmQ7CiAgICAgICAgICBpZiAoIXdhc1ByZUJvdW5kICYmIHRoaXMuX190ZW1wbGF0ZUluZm8pIHsKICAgICAgICAgICAgbGV0IGxhc3QgPSB0aGlzLl9fdGVtcGxhdGVJbmZvTGFzdCB8fCB0aGlzLl9fdGVtcGxhdGVJbmZvOwogICAgICAgICAgICB0aGlzLl9fdGVtcGxhdGVJbmZvTGFzdCA9IGxhc3QubmV4dFRlbXBsYXRlSW5mbyA9IHRlbXBsYXRlSW5mbzsKICAgICAgICAgICAgdGVtcGxhdGVJbmZvLnByZXZpb3VzVGVtcGxhdGVJbmZvID0gbGFzdDsKICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlSW5mbzsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX190ZW1wbGF0ZUluZm8gPSB0ZW1wbGF0ZUluZm87CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBBZGRzIGEgcHJvcGVydHkgZWZmZWN0IHRvIHRoZSBnaXZlbiB0ZW1wbGF0ZSBtZXRhZGF0YSwgd2hpY2ggaXMgcnVuCiAgICAgICAqIGF0IHRoZSAicHJvcGFnYXRlIiBzdGFnZSBvZiBgX3Byb3BlcnRpZXNDaGFuZ2VkYCB3aGVuIHRoZSB0ZW1wbGF0ZQogICAgICAgKiBoYXMgYmVlbiBib3VuZCB0byB0aGUgZWxlbWVudCB2aWEgYF9iaW5kVGVtcGxhdGVgLgogICAgICAgKgogICAgICAgKiBUaGUgYGVmZmVjdGAgb2JqZWN0IHNob3VsZCBtYXRjaCB0aGUgZm9ybWF0IGluIGBfYWRkUHJvcGVydHlFZmZlY3RgLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gdGVtcGxhdGVJbmZvIFRlbXBsYXRlIG1ldGFkYXRhIHRvIGFkZCBlZmZlY3QgdG8KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgUHJvcGVydHkgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgZWZmZWN0CiAgICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gZWZmZWN0IEVmZmVjdCBtZXRhZGF0YSBvYmplY3QKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIF9hZGRUZW1wbGF0ZVByb3BlcnR5RWZmZWN0KHRlbXBsYXRlSW5mbywgcHJvcCwgZWZmZWN0KSB7CiAgICAgICAgbGV0IGhvc3RQcm9wcyA9IHRlbXBsYXRlSW5mby5ob3N0UHJvcHMgPSB0ZW1wbGF0ZUluZm8uaG9zdFByb3BzIHx8IHt9OwogICAgICAgIGhvc3RQcm9wc1twcm9wXSA9IHRydWU7CiAgICAgICAgbGV0IGVmZmVjdHMgPSB0ZW1wbGF0ZUluZm8ucHJvcGVydHlFZmZlY3RzID0gdGVtcGxhdGVJbmZvLnByb3BlcnR5RWZmZWN0cyB8fCB7fTsKICAgICAgICBsZXQgcHJvcEVmZmVjdHMgPSBlZmZlY3RzW3Byb3BdID0gZWZmZWN0c1twcm9wXSB8fCBbXTsKICAgICAgICBwcm9wRWZmZWN0cy5wdXNoKGVmZmVjdCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTdGFtcHMgdGhlIHByb3ZpZGVkIHRlbXBsYXRlIGFuZCBwZXJmb3JtcyBpbnN0YW5jZS10aW1lIHNldHVwIGZvcgogICAgICAgKiBQb2x5bWVyIHRlbXBsYXRlIGZlYXR1cmVzLCBpbmNsdWRpbmcgZGF0YSBiaW5kaW5ncywgZGVjbGFyYXRpdmUgZXZlbnQKICAgICAgICogbGlzdGVuZXJzLCBhbmQgdGhlIGB0aGlzLiRgIG1hcCBvZiBgaWRgJ3MgdG8gbm9kZXMuICBBIGRvY3VtZW50IGZyYWdtZW50CiAgICAgICAqIGlzIHJldHVybmVkIGNvbnRhaW5pbmcgdGhlIHN0YW1wZWQgRE9NLCByZWFkeSBmb3IgaW5zZXJ0aW9uIGludG8gdGhlCiAgICAgICAqIERPTS4KICAgICAgICoKICAgICAgICogVGhpcyBtZXRob2QgbWF5IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZTsgaG93ZXZlciBub3RlIHRoYXQgZHVlIHRvCiAgICAgICAqIGBzaGFkeWNzc2AgcG9seWZpbGwgbGltaXRhdGlvbnMsIG9ubHkgc3R5bGVzIGZyb20gdGVtcGxhdGVzIHByZXBhcmVkCiAgICAgICAqIHVzaW5nIGBTaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGVgIHdpbGwgYmUgY29ycmVjdGx5IHBvbHlmaWxsZWQgKHNjb3BlZAogICAgICAgKiB0byB0aGUgc2hhZG93IHJvb3QgYW5kIHN1cHBvcnQgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzKSwgYW5kIG5vdGUgdGhhdAogICAgICAgKiBgU2hhZHlDU1MucHJlcGFyZVRlbXBsYXRlYCBtYXkgb25seSBiZSBjYWxsZWQgb25jZSBwZXIgZWxlbWVudC4gQXMgc3VjaCwKICAgICAgICogYW55IHN0eWxlcyByZXF1aXJlZCBieSBpbiBydW50aW1lLXN0YW1wZWQgdGVtcGxhdGVzIG11c3QgYmUgaW5jbHVkZWQKICAgICAgICogaW4gdGhlIG1haW4gZWxlbWVudCB0ZW1wbGF0ZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGVtcGxhdGUgdG8gc3RhbXAKICAgICAgICogQHJldHVybiB7IVN0YW1wZWRUZW1wbGF0ZX0gQ2xvbmVkIHRlbXBsYXRlIGNvbnRlbnQKICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIF9zdGFtcFRlbXBsYXRlKHRlbXBsYXRlKSB7CiAgICAgICAgLy8gRW5zdXJlcyB0aGF0IGNyZWF0ZWQgZG9tIGlzIGBfZW5xdWV1ZUNsaWVudGAnZCB0byB0aGlzIGVsZW1lbnQgc28KICAgICAgICAvLyB0aGF0IGl0IGNhbiBiZSBmbHVzaGVkIG9uIG5leHQgY2FsbCB0byBgX2ZsdXNoUHJvcGVydGllc2AKICAgICAgICBob3N0U3RhY2suYmVnaW5Ib3N0aW5nKHRoaXMpOwogICAgICAgIGxldCBkb20gPSBzdXBlci5fc3RhbXBUZW1wbGF0ZSh0ZW1wbGF0ZSk7CiAgICAgICAgaG9zdFN0YWNrLmVuZEhvc3RpbmcodGhpcyk7CiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IC8qKiBAdHlwZSB7IVRlbXBsYXRlSW5mb30gKi8odGhpcy5fYmluZFRlbXBsYXRlKHRlbXBsYXRlLCB0cnVlKSk7CiAgICAgICAgLy8gQWRkIHRlbXBsYXRlLWluc3RhbmNlLXNwZWNpZmljIGRhdGEgdG8gaW5zdGFuY2VkIHRlbXBsYXRlSW5mbwogICAgICAgIHRlbXBsYXRlSW5mby5ub2RlTGlzdCA9IGRvbS5ub2RlTGlzdDsKICAgICAgICAvLyBDYXB0dXJlIGNoaWxkIG5vZGVzIHRvIGFsbG93IHVuc3RhbXBpbmcgb2Ygbm9uLXByb3RvdHlwaWNhbCB0ZW1wbGF0ZXMKICAgICAgICBpZiAoIXRlbXBsYXRlSW5mby53YXNQcmVCb3VuZCkgewogICAgICAgICAgbGV0IG5vZGVzID0gdGVtcGxhdGVJbmZvLmNoaWxkTm9kZXMgPSBbXTsKICAgICAgICAgIGZvciAobGV0IG49ZG9tLmZpcnN0Q2hpbGQ7IG47IG49bi5uZXh0U2libGluZykgewogICAgICAgICAgICBub2Rlcy5wdXNoKG4pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkb20udGVtcGxhdGVJbmZvID0gdGVtcGxhdGVJbmZvOwogICAgICAgIC8vIFNldHVwIGNvbXBvdW5kIHN0b3JhZ2UsIDItd2F5IGxpc3RlbmVycywgYW5kIGRhdGFIb3N0IGZvciBiaW5kaW5ncwogICAgICAgIHNldHVwQmluZGluZ3ModGhpcywgdGVtcGxhdGVJbmZvKTsKICAgICAgICAvLyBGbHVzaCBwcm9wZXJ0aWVzIGludG8gdGVtcGxhdGUgbm9kZXMgaWYgYWxyZWFkeSBib290ZWQKICAgICAgICBpZiAodGhpcy5fX2RhdGFSZWFkeSkgewogICAgICAgICAgcnVuRWZmZWN0cyh0aGlzLCB0ZW1wbGF0ZUluZm8ucHJvcGVydHlFZmZlY3RzLCB0aGlzLl9fZGF0YSwgbnVsbCwKICAgICAgICAgICAgZmFsc2UsIHRlbXBsYXRlSW5mby5ub2RlTGlzdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkb207CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZW1vdmVzIGFuZCB1bmJpbmRzIHRoZSBub2RlcyBwcmV2aW91c2x5IGNvbnRhaW5lZCBpbiB0aGUgcHJvdmlkZWQKICAgICAgICogRG9jdW1lbnRGcmFnbWVudCByZXR1cm5lZCBmcm9tIGBfc3RhbXBUZW1wbGF0ZWAuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IVN0YW1wZWRUZW1wbGF0ZX0gZG9tIERvY3VtZW50RnJhZ21lbnQgcHJldmlvdXNseSByZXR1cm5lZAogICAgICAgKiAgIGZyb20gYF9zdGFtcFRlbXBsYXRlYCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGVzIHRvIGJlIHJlbW92ZWQKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX3JlbW92ZUJvdW5kRG9tKGRvbSkgewogICAgICAgIC8vIFVubGluayB0ZW1wbGF0ZSBpbmZvCiAgICAgICAgbGV0IHRlbXBsYXRlSW5mbyA9IGRvbS50ZW1wbGF0ZUluZm87CiAgICAgICAgaWYgKHRlbXBsYXRlSW5mby5wcmV2aW91c1RlbXBsYXRlSW5mbykgewogICAgICAgICAgdGVtcGxhdGVJbmZvLnByZXZpb3VzVGVtcGxhdGVJbmZvLm5leHRUZW1wbGF0ZUluZm8gPQogICAgICAgICAgICB0ZW1wbGF0ZUluZm8ubmV4dFRlbXBsYXRlSW5mbzsKICAgICAgICB9CiAgICAgICAgaWYgKHRlbXBsYXRlSW5mby5uZXh0VGVtcGxhdGVJbmZvKSB7CiAgICAgICAgICB0ZW1wbGF0ZUluZm8ubmV4dFRlbXBsYXRlSW5mby5wcmV2aW91c1RlbXBsYXRlSW5mbyA9CiAgICAgICAgICAgIHRlbXBsYXRlSW5mby5wcmV2aW91c1RlbXBsYXRlSW5mbzsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuX190ZW1wbGF0ZUluZm9MYXN0ID09IHRlbXBsYXRlSW5mbykgewogICAgICAgICAgdGhpcy5fX3RlbXBsYXRlSW5mb0xhc3QgPSB0ZW1wbGF0ZUluZm8ucHJldmlvdXNUZW1wbGF0ZUluZm87CiAgICAgICAgfQogICAgICAgIHRlbXBsYXRlSW5mby5wcmV2aW91c1RlbXBsYXRlSW5mbyA9IHRlbXBsYXRlSW5mby5uZXh0VGVtcGxhdGVJbmZvID0gbnVsbDsKICAgICAgICAvLyBSZW1vdmUgc3RhbXBlZCBub2RlcwogICAgICAgIGxldCBub2RlcyA9IHRlbXBsYXRlSW5mby5jaGlsZE5vZGVzOwogICAgICAgIGZvciAobGV0IGk9MDsgaTxub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGV0IG5vZGUgPSBub2Rlc1tpXTsKICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgZGVmYXVsdCBgVGVtcGxhdGVTdGFtcGAgaW1wbGVtZW50YXRpb24gdG8gYWRkIHN1cHBvcnQgZm9yCiAgICAgICAqIHBhcnNpbmcgYmluZGluZ3MgZnJvbSBgVGV4dE5vZGVgJ3MnIGB0ZXh0Q29udGVudGAuICBBIGBiaW5kaW5nc2AKICAgICAgICogYXJyYXkgaXMgYWRkZWQgdG8gYG5vZGVJbmZvYCBhbmQgcG9wdWxhdGVkIHdpdGggYmluZGluZyBtZXRhZGF0YQogICAgICAgKiB3aXRoIGluZm9ybWF0aW9uIGNhcHR1cmluZyB0aGUgYmluZGluZyB0YXJnZXQsIGFuZCBhIGBwYXJ0c2AgYXJyYXkKICAgICAgICogd2l0aCBvbmUgb3IgbW9yZSBtZXRhZGF0YSBvYmplY3RzIGNhcHR1cmluZyB0aGUgc291cmNlKHMpIG9mIHRoZQogICAgICAgKiBiaW5kaW5nLgogICAgICAgKgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHBhcmFtIHtOb2RlfSBub2RlIE5vZGUgdG8gcGFyc2UKICAgICAgICogQHBhcmFtIHtUZW1wbGF0ZUluZm99IHRlbXBsYXRlSW5mbyBUZW1wbGF0ZSBtZXRhZGF0YSBmb3IgY3VycmVudCB0ZW1wbGF0ZQogICAgICAgKiBAcGFyYW0ge05vZGVJbmZvfSBub2RlSW5mbyBOb2RlIG1ldGFkYXRhIGZvciBjdXJyZW50IHRlbXBsYXRlIG5vZGUKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSB2aXNpdGVkIG5vZGUgYWRkZWQgbm9kZS1zcGVjaWZpYwogICAgICAgKiAgIG1ldGFkYXRhIHRvIGBub2RlSW5mb2AKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBJbnRlcmZhY2VzIGluIGNsb3N1cmUgZG8gbm90IGluaGVyaXQgc3RhdGljcywgYnV0IGNsYXNzZXMgZG8KICAgICAgICovCiAgICAgIHN0YXRpYyBfcGFyc2VUZW1wbGF0ZU5vZGUobm9kZSwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbykgewogICAgICAgIGxldCBub3RlZCA9IHN1cGVyLl9wYXJzZVRlbXBsYXRlTm9kZShub2RlLCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvKTsKICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgICAgICAgIGxldCBwYXJ0cyA9IHRoaXMuX3BhcnNlQmluZGluZ3Mobm9kZS50ZXh0Q29udGVudCwgdGVtcGxhdGVJbmZvKTsKICAgICAgICAgIGlmIChwYXJ0cykgewogICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0Q29udGVudCB3aXRoIGFueSBsaXRlcmFsIHBhcnRzCiAgICAgICAgICAgIC8vIE5PVEU6IGRlZmF1bHQgdG8gYSBzcGFjZSBoZXJlIHNvIHRoZSB0ZXh0Tm9kZSByZW1haW5zOyBzb21lIGJyb3dzZXJzCiAgICAgICAgICAgIC8vIChJRSkgb21pdCBhbiBlbXB0eSB0ZXh0Tm9kZSBmb2xsb3dpbmcgY2xvbmVOb2RlL2ltcG9ydE5vZGUuCiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBsaXRlcmFsRnJvbVBhcnRzKHBhcnRzKSB8fCAnICc7CiAgICAgICAgICAgIGFkZEJpbmRpbmcodGhpcywgdGVtcGxhdGVJbmZvLCBub2RlSW5mbywgJ3RleHQnLCAndGV4dENvbnRlbnQnLCBwYXJ0cyk7CiAgICAgICAgICAgIG5vdGVkID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5vdGVkOwogICAgICB9CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIGRlZmF1bHQgYFRlbXBsYXRlU3RhbXBgIGltcGxlbWVudGF0aW9uIHRvIGFkZCBzdXBwb3J0IGZvcgogICAgICAgKiBwYXJzaW5nIGJpbmRpbmdzIGZyb20gYXR0cmlidXRlcy4gIEEgYGJpbmRpbmdzYAogICAgICAgKiBhcnJheSBpcyBhZGRlZCB0byBgbm9kZUluZm9gIGFuZCBwb3B1bGF0ZWQgd2l0aCBiaW5kaW5nIG1ldGFkYXRhCiAgICAgICAqIHdpdGggaW5mb3JtYXRpb24gY2FwdHVyaW5nIHRoZSBiaW5kaW5nIHRhcmdldCwgYW5kIGEgYHBhcnRzYCBhcnJheQogICAgICAgKiB3aXRoIG9uZSBvciBtb3JlIG1ldGFkYXRhIG9iamVjdHMgY2FwdHVyaW5nIHRoZSBzb3VyY2Uocykgb2YgdGhlCiAgICAgICAqIGJpbmRpbmcuCiAgICAgICAqCiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgTm9kZSB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge1RlbXBsYXRlSW5mb30gdGVtcGxhdGVJbmZvIFRlbXBsYXRlIG1ldGFkYXRhIGZvciBjdXJyZW50IHRlbXBsYXRlCiAgICAgICAqIEBwYXJhbSB7Tm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUgbm9kZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBBdHRyaWJ1dGUgbmFtZQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgQXR0cmlidXRlIHZhbHVlCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IGB0cnVlYCBpZiB0aGUgdmlzaXRlZCBub2RlIGFkZGVkIG5vZGUtc3BlY2lmaWMKICAgICAgICogICBtZXRhZGF0YSB0byBgbm9kZUluZm9gCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gSW50ZXJmYWNlcyBpbiBjbG9zdXJlIGRvIG5vdCBpbmhlcml0IHN0YXRpY3MsIGJ1dCBjbGFzc2VzIGRvCiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKG5vZGUsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8sIG5hbWUsIHZhbHVlKSB7CiAgICAgICAgbGV0IHBhcnRzID0gdGhpcy5fcGFyc2VCaW5kaW5ncyh2YWx1ZSwgdGVtcGxhdGVJbmZvKTsKICAgICAgICBpZiAocGFydHMpIHsKICAgICAgICAgIC8vIEF0dHJpYnV0ZSBvciBwcm9wZXJ0eQogICAgICAgICAgbGV0IG9yaWdOYW1lID0gbmFtZTsKICAgICAgICAgIGxldCBraW5kID0gJ3Byb3BlcnR5JzsKICAgICAgICAgIC8vIFRoZSBvbmx5IHdheSB3ZSBzZWUgYSBjYXBpdGFsIGxldHRlciBoZXJlIGlzIGlmIHRoZSBhdHRyIGhhcwogICAgICAgICAgLy8gYSBjYXBpdGFsIGxldHRlciBpbiBpdCBwZXIgc3BlYy4gSW4gdGhpcyBjYXNlLCB0byBtYWtlIHN1cmUKICAgICAgICAgIC8vIHRoaXMgYmluZGluZyB3b3Jrcywgd2UgZ28gYWhlYWQgYW5kIG1ha2UgdGhlIGJpbmRpbmcgdG8gdGhlIGF0dHJpYnV0ZS4KICAgICAgICAgIGlmIChjYXBpdGFsQXR0cmlidXRlUmVnZXgudGVzdChuYW1lKSkgewogICAgICAgICAgICBraW5kID0gJ2F0dHJpYnV0ZSc7CiAgICAgICAgICB9IGVsc2UgaWYgKG5hbWVbbmFtZS5sZW5ndGgtMV0gPT0gJyQnKSB7CiAgICAgICAgICAgIG5hbWUgPSBuYW1lLnNsaWNlKDAsIC0xKTsKICAgICAgICAgICAga2luZCA9ICdhdHRyaWJ1dGUnOwogICAgICAgICAgfQogICAgICAgICAgLy8gSW5pdGlhbGl6ZSBhdHRyaWJ1dGUgYmluZGluZ3Mgd2l0aCBhbnkgbGl0ZXJhbCBwYXJ0cwogICAgICAgICAgbGV0IGxpdGVyYWwgPSBsaXRlcmFsRnJvbVBhcnRzKHBhcnRzKTsKICAgICAgICAgIGlmIChsaXRlcmFsICYmIGtpbmQgPT0gJ2F0dHJpYnV0ZScpIHsKICAgICAgICAgICAgLy8gRW5zdXJlIGEgU2hhZHlDU1MgdGVtcGxhdGUgc2NvcGVkIHN0eWxlIGlzIG5vdCByZW1vdmVkCiAgICAgICAgICAgIC8vIHdoZW4gYSBjbGFzcyQgYmluZGluZydzIGluaXRpYWwgbGl0ZXJhbCB2YWx1ZSBpcyBzZXQuCiAgICAgICAgICAgIGlmIChuYW1lID09ICdjbGFzcycgJiYgbm9kZS5oYXNBdHRyaWJ1dGUoJ2NsYXNzJykpIHsKICAgICAgICAgICAgICBsaXRlcmFsICs9ICcgJyArIG5vZGUuZ2V0QXR0cmlidXRlKG5hbWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIGxpdGVyYWwpOwogICAgICAgICAgfQogICAgICAgICAgLy8gQ2xlYXIgYXR0cmlidXRlIGJlZm9yZSByZW1vdmluZywgc2luY2UgSUUgd29uJ3QgYWxsb3cgcmVtb3ZpbmcKICAgICAgICAgIC8vIGB2YWx1ZWAgYXR0cmlidXRlIGlmIGl0IHByZXZpb3VzbHkgaGFkIGEgdmFsdWUgKGNhbid0CiAgICAgICAgICAvLyB1bmNvbmRpdGlvbmFsbHkgc2V0ICcnIGJlZm9yZSByZW1vdmluZyBzaW5jZSBhdHRyaWJ1dGVzIHdpdGggYCRgCiAgICAgICAgICAvLyBjYW4ndCBiZSBzZXQgdXNpbmcgc2V0QXR0cmlidXRlKQogICAgICAgICAgaWYgKG5vZGUubG9jYWxOYW1lID09PSAnaW5wdXQnICYmIG9yaWdOYW1lID09PSAndmFsdWUnKSB7CiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG9yaWdOYW1lLCAnJyk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBSZW1vdmUgYW5ub3RhdGlvbgogICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUob3JpZ05hbWUpOwogICAgICAgICAgLy8gQ2FzZSBoYWNrZXJ5OiBhdHRyaWJ1dGVzIGFyZSBsb3dlci1jYXNlLCBidXQgYmluZCB0YXJnZXRzCiAgICAgICAgICAvLyAocHJvcGVydGllcykgYXJlIGNhc2Ugc2Vuc2l0aXZlLiBHYW1iaXQgaXMgdG8gbWFwIGRhc2gtY2FzZSB0bwogICAgICAgICAgLy8gY2FtZWwtY2FzZTogYGZvby1iYXJgIGJlY29tZXMgYGZvb0JhcmAuCiAgICAgICAgICAvLyBBdHRyaWJ1dGUgYmluZGluZ3MgYXJlIGV4Y2VwdGVkLgogICAgICAgICAgaWYgKGtpbmQgPT09ICdwcm9wZXJ0eScpIHsKICAgICAgICAgICAgbmFtZSA9IFBvbHltZXIuQ2FzZU1hcC5kYXNoVG9DYW1lbENhc2UobmFtZSk7CiAgICAgICAgICB9CiAgICAgICAgICBhZGRCaW5kaW5nKHRoaXMsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8sIGtpbmQsIG5hbWUsIHBhcnRzLCBsaXRlcmFsKTsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gc3VwZXIuX3BhcnNlVGVtcGxhdGVOb2RlQXR0cmlidXRlKG5vZGUsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8sIG5hbWUsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZXMgZGVmYXVsdCBgVGVtcGxhdGVTdGFtcGAgaW1wbGVtZW50YXRpb24gdG8gYWRkIHN1cHBvcnQgZm9yCiAgICAgICAqIGJpbmRpbmcgdGhlIHByb3BlcnRpZXMgdGhhdCBhIG5lc3RlZCB0ZW1wbGF0ZSBkZXBlbmRzIG9uIHRvIHRoZSB0ZW1wbGF0ZQogICAgICAgKiBhcyBgX2hvc3RfPHByb3BlcnR5PmAuCiAgICAgICAqCiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgTm9kZSB0byBwYXJzZQogICAgICAgKiBAcGFyYW0ge1RlbXBsYXRlSW5mb30gdGVtcGxhdGVJbmZvIFRlbXBsYXRlIG1ldGFkYXRhIGZvciBjdXJyZW50IHRlbXBsYXRlCiAgICAgICAqIEBwYXJhbSB7Tm9kZUluZm99IG5vZGVJbmZvIE5vZGUgbWV0YWRhdGEgZm9yIGN1cnJlbnQgdGVtcGxhdGUgbm9kZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhlIHZpc2l0ZWQgbm9kZSBhZGRlZCBub2RlLXNwZWNpZmljCiAgICAgICAqICAgbWV0YWRhdGEgdG8gYG5vZGVJbmZvYAogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqIEBzdXBwcmVzcyB7bWlzc2luZ1Byb3BlcnRpZXN9IEludGVyZmFjZXMgaW4gY2xvc3VyZSBkbyBub3QgaW5oZXJpdCBzdGF0aWNzLCBidXQgY2xhc3NlcyBkbwogICAgICAgKi8KICAgICAgc3RhdGljIF9wYXJzZVRlbXBsYXRlTmVzdGVkVGVtcGxhdGUobm9kZSwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbykgewogICAgICAgIGxldCBub3RlZCA9IHN1cGVyLl9wYXJzZVRlbXBsYXRlTmVzdGVkVGVtcGxhdGUobm9kZSwgdGVtcGxhdGVJbmZvLCBub2RlSW5mbyk7CiAgICAgICAgLy8gTWVyZ2UgaG9zdCBwcm9wcyBpbnRvIG91dGVyIHRlbXBsYXRlIGFuZCBhZGQgYmluZGluZ3MKICAgICAgICBsZXQgaG9zdFByb3BzID0gbm9kZUluZm8udGVtcGxhdGVJbmZvLmhvc3RQcm9wczsKICAgICAgICBsZXQgbW9kZSA9ICd7JzsKICAgICAgICBmb3IgKGxldCBzb3VyY2UgaW4gaG9zdFByb3BzKSB7CiAgICAgICAgICBsZXQgcGFydHMgPSBbeyBtb2RlLCBzb3VyY2UsIGRlcGVuZGVuY2llczogW3NvdXJjZV0gfV07CiAgICAgICAgICBhZGRCaW5kaW5nKHRoaXMsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8sICdwcm9wZXJ0eScsICdfaG9zdF8nICsgc291cmNlLCBwYXJ0cyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBub3RlZDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENhbGxlZCB0byBwYXJzZSB0ZXh0IGluIGEgdGVtcGxhdGUgKGVpdGhlciBhdHRyaWJ1dGUgdmFsdWVzIG9yCiAgICAgICAqIHRleHRDb250ZW50KSBpbnRvIGJpbmRpbmcgbWV0YWRhdGEuCiAgICAgICAqCiAgICAgICAqIEFueSBvdmVycmlkZXMgb2YgdGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhbiBhcnJheSBvZiBiaW5kaW5nIHBhcnQKICAgICAgICogbWV0YWRhdGEgIHJlcHJlc2VudGluZyBvbmUgb3IgbW9yZSBiaW5kaW5ncyBmb3VuZCBpbiB0aGUgcHJvdmlkZWQgdGV4dAogICAgICAgKiBhbmQgYW55ICJsaXRlcmFsIiB0ZXh0IGluIGJldHdlZW4uICBBbnkgbm9uLWxpdGVyYWwgcGFydHMgd2lsbCBiZSBwYXNzZWQKICAgICAgICogdG8gYF9ldmFsdWF0ZUJpbmRpbmdgIHdoZW4gYW55IGRlcGVuZGVuY2llcyBjaGFuZ2UuICBUaGUgb25seSByZXF1aXJlZAogICAgICAgKiBmaWVsZHMgb2YgZWFjaCAicGFydCIgaW4gdGhlIHJldHVybmVkIGFycmF5IGFyZSBhcyBmb2xsb3dzOgogICAgICAgKgogICAgICAgKiAtIGBkZXBlbmRlbmNpZXNgIC0gQXJyYXkgY29udGFpbmluZyB0cmlnZ2VyIG1ldGFkYXRhIGZvciBlYWNoIHByb3BlcnR5CiAgICAgICAqICAgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgYmluZGluZyB0byB1cGRhdGUKICAgICAgICogLSBgbGl0ZXJhbGAgLSBTdHJpbmcgY29udGFpbmluZyB0ZXh0IGlmIHRoZSBwYXJ0IHJlcHJlc2VudHMgYSBsaXRlcmFsOwogICAgICAgKiAgIGluIHRoaXMgY2FzZSBubyBgZGVwZW5kZW5jaWVzYCBhcmUgbmVlZGVkCiAgICAgICAqCiAgICAgICAqIEFkZGl0aW9uYWwgbWV0YWRhdGEgZm9yIHVzZSBieSBgX2V2YWx1YXRlQmluZGluZ2AgbWF5IGJlIHByb3ZpZGVkIGluCiAgICAgICAqIGVhY2ggcGFydCBvYmplY3QgYXMgbmVlZGVkLgogICAgICAgKgogICAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBoYW5kbGVzIHRoZSBmb2xsb3dpbmcgdHlwZXMgb2YgYmluZGluZ3MKICAgICAgICogKG9uZSBvciBtb3JlIG1heSBiZSBpbnRlcm1peGVkIHdpdGggbGl0ZXJhbCBzdHJpbmdzKToKICAgICAgICogLSBQcm9wZXJ0eSBiaW5kaW5nOiBgW1twcm9wXV1gCiAgICAgICAqIC0gUGF0aCBiaW5kaW5nOiBgW1tvYmplY3QucHJvcF1dYAogICAgICAgKiAtIE5lZ2F0ZWQgcHJvcGVydHkgb3IgcGF0aCBiaW5kaW5nczogYFtbIXByb3BdXWAgb3IgYFtbIW9iamVjdC5wcm9wXV1gCiAgICAgICAqIC0gVHdvLXdheSBwcm9wZXJ0eSBvciBwYXRoIGJpbmRpbmdzIChzdXBwb3J0cyBuZWdhdGlvbik6CiAgICAgICAqICAgYHt7cHJvcH19YCwgYHt7b2JqZWN0LnByb3B9fWAsIGB7eyFwcm9wfX1gIG9yIGB7eyFvYmplY3QucHJvcH19YAogICAgICAgKiAtIElubGluZSBjb21wdXRlZCBtZXRob2QgKHN1cHBvcnRzIG5lZ2F0aW9uKToKICAgICAgICogICBgW1tjb21wdXRlKGEsICdsaXRlcmFsJywgYildXWAsIGBbWyFjb21wdXRlKGEsICdsaXRlcmFsJywgYildXWAKICAgICAgICoKICAgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdXNlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgYmVzdAogICAgICAgKiBwZXJmb3JtYW5jZS4gSG93ZXZlciwgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VzIGEgd2hpdGUtbGlzdCBvZgogICAgICAgKiBhbGxvd2VkIGNoYXJhY3RlcnMgaW4gYSBkYXRhLWJpbmRpbmcsIHdoaWNoIGNhdXNlcyBwcm9ibGVtcyBmb3IKICAgICAgICogZGF0YS1iaW5kaW5ncyB0aGF0IGRvIHVzZSBjaGFyYWN0ZXJzIG5vdCBpbiB0aGlzIHdoaXRlLWxpc3QuCiAgICAgICAqCiAgICAgICAqIEluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIHdoaXRlLWxpc3Qgd2l0aCBhbGwgYWxsb3dlZCBjaGFyYWN0ZXJzLAogICAgICAgKiB0aGVyZSBpcyBhIFN0cmljdEJpbmRpbmdQYXJzZXIgKHNlZSBsaWIvbWl4aW5zL3N0cmljdC1iaW5kaW5nLXBhcnNlcikKICAgICAgICogdGhhdCB1c2VzIGEgc3RhdGUgbWFjaGluZSBpbnN0ZWFkLiBUaGlzIHN0YXRlIG1hY2hpbmUgaXMgYWJsZSB0byBoYW5kbGUKICAgICAgICogYWxsIGNoYXJhY3RlcnMuIEhvd2V2ZXIsIGl0IGlzIHNsaWdodGx5IGxlc3MgcGVyZm9ybWFudCwgdGhlcmVmb3JlIHdlCiAgICAgICAqIGV4dHJhY3RlZCBpdCBpbnRvIGEgc2VwYXJhdGUgb3B0aW9uYWwgbWl4aW4uCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRleHQgdG8gcGFyc2UgZnJvbSBhdHRyaWJ1dGUgb3IgdGV4dENvbnRlbnQKICAgICAgICogQHBhcmFtIHtPYmplY3R9IHRlbXBsYXRlSW5mbyBDdXJyZW50IHRlbXBsYXRlIG1ldGFkYXRhCiAgICAgICAqIEByZXR1cm4ge0FycmF5PCFCaW5kaW5nUGFydD59IEFycmF5IG9mIGJpbmRpbmcgcGFydCBtZXRhZGF0YQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlQmluZGluZ3ModGV4dCwgdGVtcGxhdGVJbmZvKSB7CiAgICAgICAgbGV0IHBhcnRzID0gW107CiAgICAgICAgbGV0IGxhc3RJbmRleCA9IDA7CiAgICAgICAgbGV0IG07CiAgICAgICAgLy8gRXhhbXBsZTogImxpdGVyYWwxe3twcm9wfX1saXRlcmFsMltbIWNvbXB1dGUoZm9vLGJhcildXWZpbmFsIgogICAgICAgIC8vIFJlZ2V4IG1hdGNoZXM6CiAgICAgICAgLy8gICAgICAgIEl0ZXJhdGlvbiAxOiAgSXRlcmF0aW9uIDI6CiAgICAgICAgLy8gbVsxXTogJ3t7JyAgICAgICAgICAnW1snCiAgICAgICAgLy8gbVsyXTogJycgICAgICAgICAgICAnIScKICAgICAgICAvLyBtWzNdOiAncHJvcCcgICAgICAgICdjb21wdXRlKGZvbyxiYXIpJwogICAgICAgIHdoaWxlICgobSA9IGJpbmRpbmdSZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkgewogICAgICAgICAgLy8gQWRkIGxpdGVyYWwgcGFydAogICAgICAgICAgaWYgKG0uaW5kZXggPiBsYXN0SW5kZXgpIHsKICAgICAgICAgICAgcGFydHMucHVzaCh7bGl0ZXJhbDogdGV4dC5zbGljZShsYXN0SW5kZXgsIG0uaW5kZXgpfSk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyBBZGQgYmluZGluZyBwYXJ0CiAgICAgICAgICBsZXQgbW9kZSA9IG1bMV1bMF07CiAgICAgICAgICBsZXQgbmVnYXRlID0gQm9vbGVhbihtWzJdKTsKICAgICAgICAgIGxldCBzb3VyY2UgPSBtWzNdLnRyaW0oKTsKICAgICAgICAgIGxldCBjdXN0b21FdmVudCA9IGZhbHNlLCBub3RpZnlFdmVudCA9ICcnLCBjb2xvbiA9IC0xOwogICAgICAgICAgaWYgKG1vZGUgPT0gJ3snICYmIChjb2xvbiA9IHNvdXJjZS5pbmRleE9mKCc6OicpKSA+IDApIHsKICAgICAgICAgICAgbm90aWZ5RXZlbnQgPSBzb3VyY2Uuc3Vic3RyaW5nKGNvbG9uICsgMik7CiAgICAgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5zdWJzdHJpbmcoMCwgY29sb24pOwogICAgICAgICAgICBjdXN0b21FdmVudCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICBsZXQgc2lnbmF0dXJlID0gcGFyc2VNZXRob2Qoc291cmNlKTsKICAgICAgICAgIGxldCBkZXBlbmRlbmNpZXMgPSBbXTsKICAgICAgICAgIGlmIChzaWduYXR1cmUpIHsKICAgICAgICAgICAgLy8gSW5saW5lIGNvbXB1dGVkIGZ1bmN0aW9uCiAgICAgICAgICAgIGxldCB7YXJncywgbWV0aG9kTmFtZX0gPSBzaWduYXR1cmU7CiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgbGV0IGFyZyA9IGFyZ3NbaV07CiAgICAgICAgICAgICAgaWYgKCFhcmcubGl0ZXJhbCkgewogICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnB1c2goYXJnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGR5bmFtaWNGbnMgPSB0ZW1wbGF0ZUluZm8uZHluYW1pY0ZuczsKICAgICAgICAgICAgaWYgKGR5bmFtaWNGbnMgJiYgZHluYW1pY0Zuc1ttZXRob2ROYW1lXSB8fCBzaWduYXR1cmUuc3RhdGljKSB7CiAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnB1c2gobWV0aG9kTmFtZSk7CiAgICAgICAgICAgICAgc2lnbmF0dXJlLmR5bmFtaWNGbiA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFByb3BlcnR5IG9yIHBhdGgKICAgICAgICAgICAgZGVwZW5kZW5jaWVzLnB1c2goc291cmNlKTsKICAgICAgICAgIH0KICAgICAgICAgIHBhcnRzLnB1c2goewogICAgICAgICAgICBzb3VyY2UsIG1vZGUsIG5lZ2F0ZSwgY3VzdG9tRXZlbnQsIHNpZ25hdHVyZSwgZGVwZW5kZW5jaWVzLAogICAgICAgICAgICBldmVudDogbm90aWZ5RXZlbnQKICAgICAgICAgIH0pOwogICAgICAgICAgbGFzdEluZGV4ID0gYmluZGluZ1JlZ2V4Lmxhc3RJbmRleDsKICAgICAgICB9CiAgICAgICAgLy8gQWRkIGEgZmluYWwgbGl0ZXJhbCBwYXJ0CiAgICAgICAgaWYgKGxhc3RJbmRleCAmJiBsYXN0SW5kZXggPCB0ZXh0Lmxlbmd0aCkgewogICAgICAgICAgbGV0IGxpdGVyYWwgPSB0ZXh0LnN1YnN0cmluZyhsYXN0SW5kZXgpOwogICAgICAgICAgaWYgKGxpdGVyYWwpIHsKICAgICAgICAgICAgcGFydHMucHVzaCh7CiAgICAgICAgICAgICAgbGl0ZXJhbDogbGl0ZXJhbAogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCkgewogICAgICAgICAgcmV0dXJuIHBhcnRzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDYWxsZWQgdG8gZXZhbHVhdGUgYSBwcmV2aW91c2x5IHBhcnNlZCBiaW5kaW5nIHBhcnQgYmFzZWQgb24gYSBzZXQgb2YKICAgICAgICogb25lIG9yIG1vcmUgY2hhbmdlZCBkZXBlbmRlbmNpZXMuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7dGhpc30gaW5zdCBFbGVtZW50IHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgc2NvcGUgZm9yCiAgICAgICAqICAgYmluZGluZyBkZXBlbmRlbmNpZXMKICAgICAgICogQHBhcmFtIHtCaW5kaW5nUGFydH0gcGFydCBCaW5kaW5nIHBhcnQgbWV0YWRhdGEKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggUHJvcGVydHkvcGF0aCB0aGF0IHRyaWdnZXJlZCB0aGlzIGVmZmVjdAogICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgQmFnIG9mIGN1cnJlbnQgcHJvcGVydHkgY2hhbmdlcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2xkUHJvcHMgQmFnIG9mIHByZXZpb3VzIHZhbHVlcyBmb3IgY2hhbmdlZCBwcm9wZXJ0aWVzCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGFzUGF0aHMgVHJ1ZSB3aXRoIGBwcm9wc2AgY29udGFpbnMgb25lIG9yIG1vcmUgcGF0aHMKICAgICAgICogQHJldHVybiB7Kn0gVmFsdWUgdGhlIGJpbmRpbmcgcGFydCBldmFsdWF0ZWQgdG8KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIF9ldmFsdWF0ZUJpbmRpbmcoaW5zdCwgcGFydCwgcGF0aCwgcHJvcHMsIG9sZFByb3BzLCBoYXNQYXRocykgewogICAgICAgIGxldCB2YWx1ZTsKICAgICAgICBpZiAocGFydC5zaWduYXR1cmUpIHsKICAgICAgICAgIHZhbHVlID0gcnVuTWV0aG9kRWZmZWN0KGluc3QsIHBhdGgsIHByb3BzLCBvbGRQcm9wcywgcGFydC5zaWduYXR1cmUpOwogICAgICAgIH0gZWxzZSBpZiAocGF0aCAhPSBwYXJ0LnNvdXJjZSkgewogICAgICAgICAgdmFsdWUgPSBQb2x5bWVyLlBhdGguZ2V0KGluc3QsIHBhcnQuc291cmNlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKGhhc1BhdGhzICYmIFBvbHltZXIuUGF0aC5pc1BhdGgocGF0aCkpIHsKICAgICAgICAgICAgdmFsdWUgPSBQb2x5bWVyLlBhdGguZ2V0KGluc3QsIHBhdGgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFsdWUgPSBpbnN0Ll9fZGF0YVtwYXRoXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHBhcnQubmVnYXRlKSB7CiAgICAgICAgICB2YWx1ZSA9ICF2YWx1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICB9CgogICAgfQoKICAgIC8vIG1ha2UgYSB0eXBpbmcgZm9yIGNsb3N1cmUgOlAKICAgIFByb3BlcnR5RWZmZWN0c1R5cGUgPSBQcm9wZXJ0eUVmZmVjdHM7CgogICAgcmV0dXJuIFByb3BlcnR5RWZmZWN0czsKICB9KTsKCiAgLyoqCiAgICogSGVscGVyIGFwaSBmb3IgZW5xdWV1aW5nIGNsaWVudCBkb20gY3JlYXRlZCBieSBhIGhvc3QgZWxlbWVudC4KICAgKgogICAqIEJ5IGRlZmF1bHQgZWxlbWVudHMgYXJlIGZsdXNoZWQgdmlhIGBfZmx1c2hQcm9wZXJ0aWVzYCB3aGVuCiAgICogYGNvbm5lY3RlZENhbGxiYWNrYCBpcyBjYWxsZWQuIEVsZW1lbnRzIGF0dGFjaCB0aGVpciBjbGllbnQgZG9tIHRvCiAgICogdGhlbXNlbHZlcyBhdCBgcmVhZHlgIHRpbWUgd2hpY2ggcmVzdWx0cyBmcm9tIHRoaXMgZmlyc3QgZmx1c2guCiAgICogVGhpcyBwcm92aWRlcyBhbiBvcmRlcmluZyBndWFyYW50ZWUgdGhhdCB0aGUgY2xpZW50IGRvbSBhbiBlbGVtZW50CiAgICogY3JlYXRlcyBpcyBmbHVzaGVkIGJlZm9yZSB0aGUgZWxlbWVudCBpdHNlbGYgKGkuZS4gY2xpZW50IGByZWFkeWAKICAgKiBmaXJlcyBiZWZvcmUgaG9zdCBgcmVhZHlgKS4KICAgKgogICAqIEhvd2V2ZXIsIGlmIGBfZmx1c2hQcm9wZXJ0aWVzYCBpcyBjYWxsZWQgKmJlZm9yZSogYW4gZWxlbWVudCBpcyBjb25uZWN0ZWQsCiAgICogYXMgZm9yIGV4YW1wbGUgYFRlbXBsYXRpemVgIGRvZXMsIHRoaXMgb3JkZXJpbmcgZ3VhcmFudGVlIGNhbm5vdCBiZQogICAqIHNhdGlzZmllZCBiZWNhdXNlIG5vIGVsZW1lbnRzIGFyZSBjb25uZWN0ZWQuIChOb3RlOiBCb3VuZCBlbGVtZW50cyB0aGF0CiAgICogcmVjZWl2ZSBkYXRhIGRvIGJlY29tZSBlbnF1ZXVlZCBjbGllbnRzIGFuZCBhcmUgcHJvcGVybHkgb3JkZXJlZCBidXQKICAgKiB1bmJvdW5kIGVsZW1lbnRzIGFyZSBub3QuKQogICAqCiAgICogVG8gbWFpbnRhaW4gdGhlIGRlc2lyZWQgImNsaWVudCBiZWZvcmUgaG9zdCIgb3JkZXJpbmcgZ3VhcmFudGVlIGZvciB0aGlzCiAgICogY2FzZSB3ZSByZWx5IG9uIHRoZSAiaG9zdCBzdGFjay4gQ2xpZW50IG5vZGVzIHJlZ2lzdGVycyB0aGVtc2VsdmVzIHdpdGgKICAgKiB0aGUgY3JlYXRpbmcgaG9zdCBlbGVtZW50IHdoZW4gY3JlYXRlZC4gVGhpcyBlbnN1cmVzIHRoYXQgYWxsIGNsaWVudCBkb20KICAgKiBpcyByZWFkaWVkIGluIHRoZSBwcm9wZXIgb3JkZXIsIG1haW50YWluaW5nIHRoZSBkZXNpcmVkIGd1YXJhbnRlZS4KICAgKgogICAqIEBwcml2YXRlCiAgICovCiAgbGV0IGhvc3RTdGFjayA9IHsKCiAgICBzdGFjazogW10sCgogICAgLyoqCiAgICAgKiBAcGFyYW0geyp9IGluc3QgSW5zdGFuY2UgdG8gYWRkIHRvIGhvc3RTdGFjawogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqIEB0aGlzIHtob3N0U3RhY2t9CiAgICAgKi8KICAgIHJlZ2lzdGVySG9zdChpbnN0KSB7CiAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCkgewogICAgICAgIGxldCBob3N0ID0gdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aC0xXTsKICAgICAgICBob3N0Ll9lbnF1ZXVlQ2xpZW50KGluc3QpOwogICAgICB9CiAgICB9LAoKICAgIC8qKgogICAgICogQHBhcmFtIHsqfSBpbnN0IEluc3RhbmNlIHRvIGJlZ2luIGhvc3RpbmcKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKiBAdGhpcyB7aG9zdFN0YWNrfQogICAgICovCiAgICBiZWdpbkhvc3RpbmcoaW5zdCkgewogICAgICB0aGlzLnN0YWNrLnB1c2goaW5zdCk7CiAgICB9LAoKICAgIC8qKgogICAgICogQHBhcmFtIHsqfSBpbnN0IEluc3RhbmNlIHRvIGVuZCBob3N0aW5nCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHRoaXMge2hvc3RTdGFja30KICAgICAqLwogICAgZW5kSG9zdGluZyhpbnN0KSB7CiAgICAgIGxldCBzdGFja0xlbiA9IHRoaXMuc3RhY2subGVuZ3RoOwogICAgICBpZiAoc3RhY2tMZW4gJiYgdGhpcy5zdGFja1tzdGFja0xlbi0xXSA9PSBpbnN0KSB7CiAgICAgICAgdGhpcy5zdGFjay5wb3AoKTsKICAgICAgfQogICAgfQoKICB9OwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICAvKioKICAgKiBQcm92aWRlcyBiYXNpYyB0cmFja2luZyBvZiBlbGVtZW50IGRlZmluaXRpb25zIChyZWdpc3RyYXRpb25zKSBhbmQKICAgKiBpbnN0YW5jZSBjb3VudHMuCiAgICoKICAgKiBAbmFtZXNwYWNlCiAgICogQHN1bW1hcnkgUHJvdmlkZXMgYmFzaWMgdHJhY2tpbmcgb2YgZWxlbWVudCBkZWZpbml0aW9ucyAocmVnaXN0cmF0aW9ucykgYW5kCiAgICogaW5zdGFuY2UgY291bnRzLgogICAqLwogIFBvbHltZXIudGVsZW1ldHJ5ID0gewogICAgLyoqCiAgICAgKiBUb3RhbCBudW1iZXIgb2YgUG9seW1lciBlbGVtZW50IGluc3RhbmNlcyBjcmVhdGVkLgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgaW5zdGFuY2VDb3VudDogMCwKICAgIC8qKgogICAgICogQXJyYXkgb2YgUG9seW1lciBlbGVtZW50IGNsYXNzZXMgdGhhdCBoYXZlIGJlZW4gZmluYWxpemVkLgogICAgICogQHR5cGUge0FycmF5PFBvbHltZXIuRWxlbWVudD59CiAgICAgKi8KICAgIHJlZ2lzdHJhdGlvbnM6IFtdLAogICAgLyoqCiAgICAgKiBAcGFyYW0geyFQb2x5bWVyRWxlbWVudENvbnN0cnVjdG9yfSBwcm90b3R5cGUgRWxlbWVudCBwcm90b3R5cGUgdG8gbG9nCiAgICAgKiBAdGhpcyB7dGhpc30KICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIF9yZWdMb2c6IGZ1bmN0aW9uKHByb3RvdHlwZSkgewogICAgICBjb25zb2xlLmxvZygnWycgKyBwcm90b3R5cGUuaXMgKyAnXTogcmVnaXN0ZXJlZCcpOwogICAgfSwKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgY2xhc3MgcHJvdG90eXBlIGZvciB0ZWxlbWV0cnkgcHVycG9zZXMuCiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBwcm90b3R5cGUgRWxlbWVudCBwcm90b3R5cGUgdG8gcmVnaXN0ZXIKICAgICAqIEB0aGlzIHt0aGlzfQogICAgICogQHByb3RlY3RlZAogICAgICovCiAgICByZWdpc3RlcjogZnVuY3Rpb24ocHJvdG90eXBlKSB7CiAgICAgIHRoaXMucmVnaXN0cmF0aW9ucy5wdXNoKHByb3RvdHlwZSk7CiAgICAgIFBvbHltZXIubG9nICYmIHRoaXMuX3JlZ0xvZyhwcm90b3R5cGUpOwogICAgfSwKICAgIC8qKgogICAgICogTG9ncyBhbGwgZWxlbWVudHMgcmVnaXN0ZXJlZCB3aXRoIGFuIGBpc2AgdG8gdGhlIGNvbnNvbGUuCiAgICAgKiBAcHVibGljCiAgICAgKiBAdGhpcyB7dGhpc30KICAgICAqLwogICAgZHVtcFJlZ2lzdHJhdGlvbnM6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLnJlZ2lzdHJhdGlvbnMuZm9yRWFjaCh0aGlzLl9yZWdMb2cpOwogICAgfQogIH07Cgp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIC8qKgogICAqIENyZWF0ZXMgYSBjb3B5IG9mIGBwcm9wc2Agd2l0aCBlYWNoIHByb3BlcnR5IG5vcm1hbGl6ZWQgc3VjaCB0aGF0CiAgICogdXBncmFkZWQgaXQgaXMgYW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgYSB0eXBlIHByb3BlcnR5IHsgdHlwZTogVHlwZX0uCiAgICoKICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgUHJvcGVydGllcyB0byBub3JtYWxpemUKICAgKiBAcmV0dXJuIHtPYmplY3R9IENvcHkgb2YgaW5wdXQgYHByb3BzYCB3aXRoIG5vcm1hbGl6ZWQgcHJvcGVydGllcyB0aGF0CiAgICogYXJlIGluIHRoZSBmb3JtIHt0eXBlOiBUeXBlfQogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gbm9ybWFsaXplUHJvcGVydGllcyhwcm9wcykgewogICAgY29uc3Qgb3V0cHV0ID0ge307CiAgICBmb3IgKGxldCBwIGluIHByb3BzKSB7CiAgICAgIGNvbnN0IG8gPSBwcm9wc1twXTsKICAgICAgb3V0cHV0W3BdID0gKHR5cGVvZiBvID09PSAnZnVuY3Rpb24nKSA/IHt0eXBlOiBvfSA6IG87CiAgICB9CiAgICByZXR1cm4gb3V0cHV0OwogIH0KCiAgLyoqCiAgICogTWl4aW4gdGhhdCBwcm92aWRlcyBhIG1pbmltYWwgc3RhcnRpbmcgcG9pbnQgdG8gdXNpbmcgdGhlIFByb3BlcnRpZXNDaGFuZ2VkCiAgICogbWl4aW4gYnkgcHJvdmlkaW5nIGEgbWVjaGFuaXNtIHRvIGRlY2xhcmUgcHJvcGVydGllcyBpbiBhIHN0YXRpYwogICAqIGdldHRlciAoZS5nLiBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7IHJldHVybiB7IGZvbzogU3RyaW5nIH0gfSkuIENoYW5nZXMKICAgKiBhcmUgcmVwb3J0ZWQgdmlhIHRoZSBgX3Byb3BlcnRpZXNDaGFuZ2VkYCBtZXRob2QuCiAgICoKICAgKiBUaGlzIG1peGluIHByb3ZpZGVzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yIHJlbmRlcmluZy4gVXNlcnMgYXJlIGV4cGVjdGVkCiAgICogdG8gY3JlYXRlIGEgU2hhZG93Um9vdCBhbmQgcHV0IGNvbnRlbnQgaW50byBpdCBhbmQgdXBkYXRlIGl0IGluIHdoYXRldmVyCiAgICogd2F5IG1ha2VzIHNlbnNlLiBUaGlzIGNhbiBiZSBkb25lIGluIHJlYWN0aW9uIHRvIHByb3BlcnRpZXMgY2hhbmdpbmcgYnkKICAgKiBpbXBsZW1lbnRpbmcgYF9wcm9wZXJ0aWVzQ2hhbmdlZGAuCiAgICoKICAgKiBAbWl4aW5GdW5jdGlvbgogICAqIEBwb2x5bWVyCiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLlByb3BlcnRpZXNDaGFuZ2VkCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBNaXhpbiB0aGF0IHByb3ZpZGVzIGEgbWluaW1hbCBzdGFydGluZyBwb2ludCBmb3IgdXNpbmcKICAgKiB0aGUgUHJvcGVydGllc0NoYW5nZWQgbWl4aW4gYnkgcHJvdmlkaW5nIGEgZGVjbGFyYXRpdmUgYHByb3BlcnRpZXNgIG9iamVjdC4KICAgKi8KICAgUG9seW1lci5Qcm9wZXJ0aWVzTWl4aW4gPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgLyoqCiAgICAgKiBAY29uc3RydWN0b3IKICAgICAqIEBleHRlbmRzIHtzdXBlckNsYXNzfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfUHJvcGVydGllc0NoYW5nZWR9CiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdCBiYXNlID0gUG9seW1lci5Qcm9wZXJ0aWVzQ2hhbmdlZChzdXBlckNsYXNzKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN1cGVyIGNsYXNzIGNvbnN0cnVjdG9yIGZvciB0aGUgZ2l2ZW4gY2xhc3MsIGlmIGl0IGlzIGFuCiAgICAgKiBpbnN0YW5jZSBvZiB0aGUgUHJvcGVydGllc01peGluLgogICAgICoKICAgICAqIEBwYXJhbSB7IVByb3BlcnRpZXNNaXhpbkNvbnN0cnVjdG9yfSBjb25zdHJ1Y3RvciBQcm9wZXJ0aWVzTWl4aW4gY29uc3RydWN0b3IKICAgICAqIEByZXR1cm4ge1Byb3BlcnRpZXNNaXhpbkNvbnN0cnVjdG9yfSBTdXBlciBjbGFzcyBjb25zdHJ1Y3RvcgogICAgICovCiAgICBmdW5jdGlvbiBzdXBlclByb3BlcnRpZXNDbGFzcyhjb25zdHJ1Y3RvcikgewogICAgICBjb25zdCBzdXBlckN0b3IgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY29uc3RydWN0b3IpOwoKICAgICAgLy8gTm90ZSwgdGhlIGBQcm9wZXJ0aWVzTWl4aW5gIGNsYXNzIGJlbG93IG9ubHkgcmVmZXJzIHRvIHRoZSBjbGFzcwogICAgICAvLyBnZW5lcmF0ZWQgYnkgdGhpcyBjYWxsIHRvIHRoZSBtaXhpbjsgdGhlIGluc3RhbmNlb2YgdGVzdCBvbmx5IHdvcmtzCiAgICAgIC8vIGJlY2F1c2UgdGhlIG1peGluIGlzIGRlZHVwZWQgYW5kIGd1YXJhbnRlZWQgb25seSB0byBhcHBseSBvbmNlLCBoZW5jZQogICAgICAvLyBhbGwgY29uc3RydWN0b3JzIGluIGEgcHJvdG8gY2hhaW4gd2lsbCBzZWUgdGhlIHNhbWUgYFByb3BlcnRpZXNNaXhpbmAKICAgICAgcmV0dXJuIChzdXBlckN0b3IucHJvdG90eXBlIGluc3RhbmNlb2YgUHJvcGVydGllc01peGluKSA/CiAgICAgICAgLyoqIEB0eXBlIHtQcm9wZXJ0aWVzTWl4aW5Db25zdHJ1Y3Rvcn0gKi8gKHN1cGVyQ3RvcikgOiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIGBwcm9wZXJ0aWVzYCBvYmplY3QgZm9yIHRoZQogICAgICogZ2l2ZW4gY2xhc3MuIFByb3BlcnRpZXMgbm90IGluIG9iamVjdCBmb3JtYXQgYXJlIGNvbnZlcnRlZCB0byBhdAogICAgICogbGVhc3Qge3R5cGV9LgogICAgICoKICAgICAqIEBwYXJhbSB7UHJvcGVydGllc01peGluQ29uc3RydWN0b3J9IGNvbnN0cnVjdG9yIFByb3BlcnRpZXNNaXhpbiBjb25zdHJ1Y3RvcgogICAgICogQHJldHVybiB7T2JqZWN0fSBNZW1vaXplZCBwcm9wZXJ0aWVzIG9iamVjdAogICAgICovCiAgICBmdW5jdGlvbiBvd25Qcm9wZXJ0aWVzKGNvbnN0cnVjdG9yKSB7CiAgICAgIGlmICghY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX19vd25Qcm9wZXJ0aWVzJywgY29uc3RydWN0b3IpKSkgewogICAgICAgIGxldCBwcm9wcyA9IG51bGw7CgogICAgICAgIGlmIChjb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCdwcm9wZXJ0aWVzJywgY29uc3RydWN0b3IpKSkgewogICAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGNvbnN0cnVjdG9yLnByb3BlcnRpZXM7CiAgICAgICAgICAKICAgICAgICAgIGlmIChwcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgIHByb3BzID0gbm9ybWFsaXplUHJvcGVydGllcyhwcm9wZXJ0aWVzKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvbnN0cnVjdG9yLl9fb3duUHJvcGVydGllcyA9IHByb3BzOwogICAgICB9CiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5fX293blByb3BlcnRpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcG9seW1lcgogICAgICogQG1peGluQ2xhc3MKICAgICAqIEBleHRlbmRzIHtiYXNlfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfUHJvcGVydGllc01peGlufQogICAgICogQHVucmVzdHJpY3RlZAogICAgICovCiAgICBjbGFzcyBQcm9wZXJ0aWVzTWl4aW4gZXh0ZW5kcyBiYXNlIHsKCiAgICAgIC8qKgogICAgICAgKiBJbXBsZW1lbnRzIHN0YW5kYXJkIGN1c3RvbSBlbGVtZW50cyBnZXR0ZXIgdG8gb2JzZXJ2ZXMgdGhlIGF0dHJpYnV0ZXMKICAgICAgICogbGlzdGVkIGluIGBwcm9wZXJ0aWVzYC4KICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gSW50ZXJmYWNlcyBpbiBjbG9zdXJlIGRvIG5vdCBpbmhlcml0IHN0YXRpY3MsIGJ1dCBjbGFzc2VzIGRvCiAgICAgICAqLwogICAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpIHsKICAgICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkoJ19fb2JzZXJ2ZWRBdHRyaWJ1dGVzJykpIHsKICAgICAgICAgIFBvbHltZXIudGVsZW1ldHJ5LnJlZ2lzdGVyKHRoaXMucHJvdG90eXBlKTsKICAgICAgICAgIGNvbnN0IHByb3BzID0gdGhpcy5fcHJvcGVydGllczsKICAgICAgICAgIHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXMgPSBwcm9wcyA/IE9iamVjdC5rZXlzKHByb3BzKS5tYXAocCA9PiB0aGlzLmF0dHJpYnV0ZU5hbWVGb3JQcm9wZXJ0eShwKSkgOiBbXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX19vYnNlcnZlZEF0dHJpYnV0ZXM7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBGaW5hbGl6ZXMgYW4gZWxlbWVudCBkZWZpbml0aW9uLCBpbmNsdWRpbmcgZW5zdXJpbmcgYW55IHN1cGVyIGNsYXNzZXMKICAgICAgICogYXJlIGFsc28gZmluYWxpemVkLiBUaGlzIGluY2x1ZGVzIGVuc3VyaW5nIHByb3BlcnR5CiAgICAgICAqIGFjY2Vzc29ycyBleGlzdCBvbiB0aGUgZWxlbWVudCBwcm90b3R5cGUuIFRoaXMgbWV0aG9kIGNhbGxzCiAgICAgICAqIGBfZmluYWxpemVDbGFzc2AgdG8gZmluYWxpemUgZWFjaCBjb25zdHJ1Y3RvciBpbiB0aGUgcHJvdG90eXBlIGNoYWluLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgc3RhdGljIGZpbmFsaXplKCkgewogICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCdfX2ZpbmFsaXplZCcsIHRoaXMpKSkgewogICAgICAgICAgY29uc3Qgc3VwZXJDdG9yID0gc3VwZXJQcm9wZXJ0aWVzQ2xhc3MoLyoqIEB0eXBlIHtQcm9wZXJ0aWVzTWl4aW5Db25zdHJ1Y3Rvcn0gKi8odGhpcykpOwogICAgICAgICAgaWYgKHN1cGVyQ3RvcikgewogICAgICAgICAgICBzdXBlckN0b3IuZmluYWxpemUoKTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuX19maW5hbGl6ZWQgPSB0cnVlOwogICAgICAgICAgdGhpcy5fZmluYWxpemVDbGFzcygpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEZpbmFsaXplIGFuIGVsZW1lbnQgY2xhc3MuIFRoaXMgaW5jbHVkZXMgZW5zdXJpbmcgcHJvcGVydHkKICAgICAgICogYWNjZXNzb3JzIGV4aXN0IG9uIHRoZSBlbGVtZW50IHByb3RvdHlwZS4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5CiAgICAgICAqIGBmaW5hbGl6ZWAgYW5kIGZpbmFsaXplcyB0aGUgY2xhc3MgY29uc3RydWN0b3IuCiAgICAgICAqCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIHN0YXRpYyBfZmluYWxpemVDbGFzcygpIHsKICAgICAgICBjb25zdCBwcm9wcyA9IG93blByb3BlcnRpZXMoLyoqIEB0eXBlIHtQcm9wZXJ0aWVzTWl4aW5Db25zdHJ1Y3Rvcn0gKi8odGhpcykpOwogICAgICAgIGlmIChwcm9wcykgewogICAgICAgICAgdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKHByb3BzKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgbWVtb2l6ZWQgdmVyc2lvbiBvZiBhbGwgcHJvcGVydGllcywgaW5jbHVkaW5nIHRob3NlIGluaGVyaXRlZAogICAgICAgKiBmcm9tIHN1cGVyIGNsYXNzZXMuIFByb3BlcnRpZXMgbm90IGluIG9iamVjdCBmb3JtYXQgYXJlIGNvbnZlcnRlZCB0bwogICAgICAgKiBhdCBsZWFzdCB7dHlwZX0uCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gT2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBmb3IgdGhpcyBjbGFzcwogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBzdGF0aWMgZ2V0IF9wcm9wZXJ0aWVzKCkgewogICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eSgKICAgICAgICAgIEpTQ29tcGlsZXJfcmVuYW1lUHJvcGVydHkoJ19fcHJvcGVydGllcycsIHRoaXMpKSkgewogICAgICAgICAgY29uc3Qgc3VwZXJDdG9yID0gc3VwZXJQcm9wZXJ0aWVzQ2xhc3MoLyoqIEB0eXBlIHtQcm9wZXJ0aWVzTWl4aW5Db25zdHJ1Y3Rvcn0gKi8odGhpcykpOwogICAgICAgICAgdGhpcy5fX3Byb3BlcnRpZXMgPSBPYmplY3QuYXNzaWduKHt9LAogICAgICAgICAgICBzdXBlckN0b3IgJiYgc3VwZXJDdG9yLl9wcm9wZXJ0aWVzLAogICAgICAgICAgICBvd25Qcm9wZXJ0aWVzKC8qKiBAdHlwZSB7UHJvcGVydGllc01peGluQ29uc3RydWN0b3J9ICovKHRoaXMpKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9fcHJvcGVydGllczsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBgUHJvcGVydGllc0NoYW5nZWRgIG1ldGhvZCB0byByZXR1cm4gdHlwZSBzcGVjaWZpZWQgaW4gdGhlCiAgICAgICAqIHN0YXRpYyBgcHJvcGVydGllc2Agb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcHJvcGVydHkKICAgICAgICogQHJldHVybiB7Kn0gVHlwZSB0byB3aGljaCB0byBkZXNlcmlhbGl6ZSBhdHRyaWJ1dGUKICAgICAgICoKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgc3RhdGljIHR5cGVGb3JQcm9wZXJ0eShuYW1lKSB7CiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMuX3Byb3BlcnRpZXNbbmFtZV07CiAgICAgICAgcmV0dXJuIGluZm8gJiYgaW5mby50eXBlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIGBQcm9wZXJ0aWVzQ2hhbmdlZGAgbWV0aG9kIGFuZCBhZGRzIGEgY2FsbCB0bwogICAgICAgKiBgZmluYWxpemVgIHdoaWNoIGxhemlseSBjb25maWd1cmVzIHRoZSBlbGVtZW50J3MgcHJvcGVydHkgYWNjZXNzb3JzLgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9pbml0aWFsaXplUHJvcGVydGllcygpIHsKICAgICAgICBQb2x5bWVyLnRlbGVtZXRyeS5pbnN0YW5jZUNvdW50Kys7CiAgICAgICAgdGhpcy5jb25zdHJ1Y3Rvci5maW5hbGl6ZSgpOwogICAgICAgIHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgYWRkZWQgdG8gYSBkb2N1bWVudC4KICAgICAgICogQ2FsbHMgYF9lbmFibGVQcm9wZXJ0aWVzYCB0byB0dXJuIG9uIHByb3BlcnR5IHN5c3RlbSBmcm9tCiAgICAgICAqIGBQcm9wZXJ0aWVzQ2hhbmdlZGAuCiAgICAgICAqIEBzdXBwcmVzcyB7bWlzc2luZ1Byb3BlcnRpZXN9IFN1cGVyIG1heSBvciBtYXkgbm90IGltcGxlbWVudCB0aGUgY2FsbGJhY2sKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICAgIGlmIChzdXBlci5jb25uZWN0ZWRDYWxsYmFjaykgewogICAgICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5fZW5hYmxlUHJvcGVydGllcygpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIGEgZG9jdW1lbnQKICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gU3VwZXIgbWF5IG9yIG1heSBub3QgaW1wbGVtZW50IHRoZSBjYWxsYmFjawogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7CiAgICAgICAgaWYgKHN1cGVyLmRpc2Nvbm5lY3RlZENhbGxiYWNrKSB7CiAgICAgICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4gUHJvcGVydGllc01peGluOwoKICB9KTsKCn0pKCk7CgoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIGNvbnN0IGJ1aWx0Q1NTID0gd2luZG93LlNoYWR5Q1NTICYmIHdpbmRvdy5TaGFkeUNTU1snY3NzQnVpbGQnXTsKCiAgLyoqCiAgICogRWxlbWVudCBjbGFzcyBtaXhpbiB0aGF0IHByb3ZpZGVzIHRoZSBjb3JlIEFQSSBmb3IgUG9seW1lcidzIG1ldGEtcHJvZ3JhbW1pbmcKICAgKiBmZWF0dXJlcyBpbmNsdWRpbmcgdGVtcGxhdGUgc3RhbXBpbmcsIGRhdGEtYmluZGluZywgYXR0cmlidXRlIGRlc2VyaWFsaXphdGlvbiwKICAgKiBhbmQgcHJvcGVydHkgY2hhbmdlIG9ic2VydmF0aW9uLgogICAqCiAgICogU3ViY2xhc3NlcnMgbWF5IHByb3ZpZGUgdGhlIGZvbGxvd2luZyBzdGF0aWMgZ2V0dGVycyB0byByZXR1cm4gbWV0YWRhdGEKICAgKiB1c2VkIHRvIGNvbmZpZ3VyZSBQb2x5bWVyJ3MgZmVhdHVyZXMgZm9yIHRoZSBjbGFzczoKICAgKgogICAqIC0gYHN0YXRpYyBnZXQgaXMoKWA6IFdoZW4gdGhlIHRlbXBsYXRlIGlzIHByb3ZpZGVkIHZpYSBhIGBkb20tbW9kdWxlYCwKICAgKiAgIHVzZXJzIHNob3VsZCByZXR1cm4gdGhlIGBkb20tbW9kdWxlYCBpZCBmcm9tIGEgc3RhdGljIGBpc2AgZ2V0dGVyLiAgSWYKICAgKiAgIG5vIHRlbXBsYXRlIGlzIG5lZWRlZCBvciB0aGUgdGVtcGxhdGUgaXMgcHJvdmlkZWQgZGlyZWN0bHkgdmlhIHRoZQogICAqICAgYHRlbXBsYXRlYCBnZXR0ZXIsIHRoZXJlIGlzIG5vIG5lZWQgdG8gZGVmaW5lIGBpc2AgZm9yIHRoZSBlbGVtZW50LgogICAqCiAgICogLSBgc3RhdGljIGdldCB0ZW1wbGF0ZSgpYDogVXNlcnMgbWF5IHByb3ZpZGUgdGhlIHRlbXBsYXRlIGRpcmVjdGx5IChhcwogICAqICAgb3Bwb3NlZCB0byB2aWEgYGRvbS1tb2R1bGVgKSBieSBpbXBsZW1lbnRpbmcgYSBzdGF0aWMgYHRlbXBsYXRlYCBnZXR0ZXIuCiAgICogICBUaGUgZ2V0dGVyIG1heSByZXR1cm4gYW4gYEhUTUxUZW1wbGF0ZUVsZW1lbnRgIG9yIGEgc3RyaW5nLCB3aGljaCB3aWxsCiAgICogICBhdXRvbWF0aWNhbGx5IGJlIHBhcnNlZCBpbnRvIGEgdGVtcGxhdGUuCiAgICoKICAgKiAtIGBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKWA6IFNob3VsZCByZXR1cm4gYW4gb2JqZWN0IGRlc2NyaWJpbmcKICAgKiAgIHByb3BlcnR5LXJlbGF0ZWQgbWV0YWRhdGEgdXNlZCBieSBQb2x5bWVyIGZlYXR1cmVzIChrZXk6IHByb3BlcnR5IG5hbWUKICAgKiAgIHZhbHVlOiBvYmplY3QgY29udGFpbmluZyBwcm9wZXJ0eSBtZXRhZGF0YSkuIFZhbGlkIGtleXMgaW4gcGVyLXByb3BlcnR5CiAgICogICBtZXRhZGF0YSBpbmNsdWRlOgogICAqICAgLSBgdHlwZWAgKFN0cmluZ3xOdW1iZXJ8T2JqZWN0fEFycmF5fC4uLik6IFVzZWQgYnkKICAgKiAgICAgYGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja2AgdG8gZGV0ZXJtaW5lIGhvdyBzdHJpbmctYmFzZWQgYXR0cmlidXRlcwogICAqICAgICBhcmUgZGVzZXJpYWxpemVkIHRvIEphdmFTY3JpcHQgcHJvcGVydHkgdmFsdWVzLgogICAqICAgLSBgbm90aWZ5YCAoYm9vbGVhbik6IENhdXNlcyBhIGNoYW5nZSBpbiB0aGUgcHJvcGVydHkgdG8gZmlyZSBhCiAgICogICAgIG5vbi1idWJibGluZyBldmVudCBjYWxsZWQgYDxwcm9wZXJ0eT4tY2hhbmdlZGAuIEVsZW1lbnRzIHRoYXQgaGF2ZQogICAqICAgICBlbmFibGVkIHR3by13YXkgYmluZGluZyB0byB0aGUgcHJvcGVydHkgdXNlIHRoaXMgZXZlbnQgdG8gb2JzZXJ2ZSBjaGFuZ2VzLgogICAqICAgLSBgcmVhZE9ubHlgIChib29sZWFuKTogQ3JlYXRlcyBhIGdldHRlciBmb3IgdGhlIHByb3BlcnR5LCBidXQgbm8gc2V0dGVyLgogICAqICAgICBUbyBzZXQgYSByZWFkLW9ubHkgcHJvcGVydHksIHVzZSB0aGUgcHJpdmF0ZSBzZXR0ZXIgbWV0aG9kCiAgICogICAgIGBfc2V0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKWAuCiAgICogICAtIGBvYnNlcnZlcmAgKHN0cmluZyk6IE9ic2VydmVyIG1ldGhvZCBuYW1lIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbgogICAqICAgICB0aGUgcHJvcGVydHkgY2hhbmdlcy4gVGhlIGFyZ3VtZW50cyBvZiB0aGUgbWV0aG9kIGFyZQogICAqICAgICBgKHZhbHVlLCBwcmV2aW91c1ZhbHVlKWAuCiAgICogICAtIGBjb21wdXRlZGAgKHN0cmluZyk6IFN0cmluZyBkZXNjcmliaW5nIG1ldGhvZCBhbmQgZGVwZW5kZW50IHByb3BlcnRpZXMKICAgKiAgICAgZm9yIGNvbXB1dGluZyB0aGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSAoZS5nLiBgJ2NvbXB1dGVGb28oYmFyLCB6b3QpJ2ApLgogICAqICAgICBDb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSByZWFkLW9ubHkgYnkgZGVmYXVsdCBhbmQgY2FuIG9ubHkgYmUgY2hhbmdlZAogICAqICAgICB2aWEgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY29tcHV0aW5nIG1ldGhvZC4KICAgKgogICAqIC0gYHN0YXRpYyBnZXQgb2JzZXJ2ZXJzKClgOiBBcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgbXVsdGktcHJvcGVydHkKICAgKiAgIG9ic2VydmVyIG1ldGhvZHMgYW5kIHRoZWlyIGRlcGVuZGVudCBwcm9wZXJ0aWVzIChlLmcuCiAgICogICBgJ29ic2VydmVBQkMoYSwgYiwgYyknYCkuCiAgICoKICAgKiBUaGUgYmFzZSBjbGFzcyBwcm92aWRlcyBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBzdGFuZGFyZAogICAqIGN1c3RvbSBlbGVtZW50IGxpZmVjeWNsZSBjYWxsYmFja3M7IHVzZXJzIG1heSBvdmVycmlkZSB0aGVzZSwgYnV0IHNob3VsZAogICAqIGNhbGwgdGhlIHN1cGVyIG1ldGhvZCB0byBlbnN1cmUKICAgKiAtIGBjb25zdHJ1Y3RvcmA6IFJ1biB3aGVuIHRoZSBlbGVtZW50IGlzIGNyZWF0ZWQgb3IgdXBncmFkZWQKICAgKiAtIGBjb25uZWN0ZWRDYWxsYmFja2A6IFJ1biBlYWNoIHRpbWUgdGhlIGVsZW1lbnQgaXMgY29ubmVjdGVkIHRvIHRoZQogICAqICAgZG9jdW1lbnQKICAgKiAtIGBkaXNjb25uZWN0ZWRDYWxsYmFja2A6IFJ1biBlYWNoIHRpbWUgdGhlIGVsZW1lbnQgaXMgZGlzY29ubmVjdGVkIGZyb20KICAgKiAgIHRoZSBkb2N1bWVudAogICAqIC0gYGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja2A6IFJ1biBlYWNoIHRpbWUgYW4gYXR0cmlidXRlIGluCiAgICogICBgb2JzZXJ2ZWRBdHRyaWJ1dGVzYCBpcyBzZXQgb3IgcmVtb3ZlZCAobm90ZTogdGhpcyBlbGVtZW50J3MgZGVmYXVsdAogICAqICAgYG9ic2VydmVkQXR0cmlidXRlc2AgaW1wbGVtZW50YXRpb24gd2lsbCBhdXRvbWF0aWNhbGx5IHJldHVybiBhbiBhcnJheQogICAqICAgb2YgZGFzaC1jYXNlZCBhdHRyaWJ1dGVzIGJhc2VkIG9uIGBwcm9wZXJ0aWVzYCkKICAgKgogICAqIEBtaXhpbkZ1bmN0aW9uCiAgICogQHBvbHltZXIKICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuUHJvcGVydHlFZmZlY3RzCiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLlByb3BlcnRpZXNNaXhpbgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHByb3BlcnR5IHJvb3RQYXRoIHtzdHJpbmd9IFNldCB0byB0aGUgdmFsdWUgb2YgYFBvbHltZXIucm9vdFBhdGhgLAogICAqICAgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIG1haW4gZG9jdW1lbnQgcGF0aAogICAqIEBwcm9wZXJ0eSBpbXBvcnRQYXRoIHtzdHJpbmd9IFNldCB0byB0aGUgdmFsdWUgb2YgdGhlIGNsYXNzJ3Mgc3RhdGljCiAgICogICBgaW1wb3J0UGF0aGAgcHJvcGVydHksIHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBwYXRoIG9mIHRoaXMgZWxlbWVudCdzCiAgICogICBgZG9tLW1vZHVsZWAgKHdoZW4gYGlzYCBpcyB1c2VkKSwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGZvciBvdGhlcgogICAqICAgaW1wb3J0IHN0cmF0ZWdpZXMuCiAgICogQHN1bW1hcnkgRWxlbWVudCBjbGFzcyBtaXhpbiB0aGF0IHByb3ZpZGVzIHRoZSBjb3JlIEFQSSBmb3IgUG9seW1lcidzCiAgICogbWV0YS1wcm9ncmFtbWluZyBmZWF0dXJlcy4KICAgKi8KICBQb2x5bWVyLkVsZW1lbnRNaXhpbiA9IFBvbHltZXIuZGVkdXBpbmdNaXhpbihiYXNlID0+IHsKCiAgICAvKioKICAgICAqIEBjb25zdHJ1Y3RvcgogICAgICogQGV4dGVuZHMge2Jhc2V9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0eUVmZmVjdHN9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0aWVzTWl4aW59CiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdCBwb2x5bWVyRWxlbWVudEJhc2UgPSBQb2x5bWVyLlByb3BlcnRpZXNNaXhpbihQb2x5bWVyLlByb3BlcnR5RWZmZWN0cyhiYXNlKSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIHdpdGggZGVmYXVsdCB2YWx1ZXMuCiAgICAgKiBUaGlzIGxpc3QgaXMgY3JlYXRlZCBhcyBhbiBvcHRpbWl6YXRpb24gc2luY2UgaXQgaXMgYSBzdWJzZXQgb2YKICAgICAqIHRoZSBsaXN0IHJldHVybmVkIGZyb20gYF9wcm9wZXJ0aWVzYC4KICAgICAqIFRoaXMgbGlzdCBpcyB1c2VkIGluIGBfaW5pdGlhbGl6ZVByb3BlcnRpZXNgIHRvIHNldCBwcm9wZXJ0eSBkZWZhdWx0cy4KICAgICAqCiAgICAgKiBAcGFyYW0ge1BvbHltZXJFbGVtZW50Q29uc3RydWN0b3J9IGNvbnN0cnVjdG9yIEVsZW1lbnQgY2xhc3MKICAgICAqIEByZXR1cm4ge1BvbHltZXJFbGVtZW50UHJvcGVydGllc30gRmxhdHRlbmVkIHByb3BlcnRpZXMgZm9yIHRoaXMgY2xhc3MKICAgICAqICAgdGhhdCBoYXZlIGRlZmF1bHQgdmFsdWVzCiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBwcm9wZXJ0eURlZmF1bHRzKGNvbnN0cnVjdG9yKSB7CiAgICAgIGlmICghY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoCiAgICAgICAgSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX19wcm9wZXJ0eURlZmF1bHRzJywgY29uc3RydWN0b3IpKSkgewogICAgICAgIGNvbnN0cnVjdG9yLl9fcHJvcGVydHlEZWZhdWx0cyA9IG51bGw7CiAgICAgICAgbGV0IHByb3BzID0gY29uc3RydWN0b3IuX3Byb3BlcnRpZXM7CiAgICAgICAgZm9yIChsZXQgcCBpbiBwcm9wcykgewogICAgICAgICAgbGV0IGluZm8gPSBwcm9wc1twXTsKICAgICAgICAgIGlmICgndmFsdWUnIGluIGluZm8pIHsKICAgICAgICAgICAgY29uc3RydWN0b3IuX19wcm9wZXJ0eURlZmF1bHRzID0gY29uc3RydWN0b3IuX19wcm9wZXJ0eURlZmF1bHRzIHx8IHt9OwogICAgICAgICAgICBjb25zdHJ1Y3Rvci5fX3Byb3BlcnR5RGVmYXVsdHNbcF0gPSBpbmZvOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gY29uc3RydWN0b3IuX19wcm9wZXJ0eURlZmF1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG1lbW9pemVkIHZlcnNpb24gb2YgdGhlIGBvYnNlcnZlcnNgIGFycmF5LgogICAgICogQHBhcmFtIHtQb2x5bWVyRWxlbWVudENvbnN0cnVjdG9yfSBjb25zdHJ1Y3RvciBFbGVtZW50IGNsYXNzCiAgICAgKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgY29udGFpbmluZyBvd24gb2JzZXJ2ZXJzIGZvciB0aGUgZ2l2ZW4gY2xhc3MKICAgICAqIEBwcm90ZWN0ZWQKICAgICAqLwogICAgZnVuY3Rpb24gb3duT2JzZXJ2ZXJzKGNvbnN0cnVjdG9yKSB7CiAgICAgIGlmICghY29uc3RydWN0b3IuaGFzT3duUHJvcGVydHkoCiAgICAgICAgSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX19vd25PYnNlcnZlcnMnLCBjb25zdHJ1Y3RvcikpKSB7CiAgICAgICAgICBjb25zdHJ1Y3Rvci5fX293bk9ic2VydmVycyA9CiAgICAgICAgICBjb25zdHJ1Y3Rvci5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCdvYnNlcnZlcnMnLCBjb25zdHJ1Y3RvcikpID8KICAgICAgICAgIC8qKiBAdHlwZSB7UG9seW1lckVsZW1lbnRDb25zdHJ1Y3Rvcn0gKi8gKGNvbnN0cnVjdG9yKS5vYnNlcnZlcnMgOiBudWxsOwogICAgICB9CiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5fX293bk9ic2VydmVyczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgZWZmZWN0cyBmb3IgYSBwcm9wZXJ0eS4KICAgICAqCiAgICAgKiBOb3RlLCBvbmNlIGEgcHJvcGVydHkgaGFzIGJlZW4gc2V0IHRvCiAgICAgKiBgcmVhZE9ubHlgLCBgY29tcHV0ZWRgLCBgcmVmbGVjdFRvQXR0cmlidXRlYCwgb3IgYG5vdGlmeWAKICAgICAqIHRoZXNlIHZhbHVlcyBtYXkgbm90IGJlIGNoYW5nZWQuIEZvciBleGFtcGxlLCBhIHN1YmNsYXNzIGNhbm5vdAogICAgICogYWx0ZXIgdGhlc2Ugc2V0dGluZ3MuIEhvd2V2ZXIsIGFkZGl0aW9uYWwgYG9ic2VydmVyc2AgbWF5IGJlIGFkZGVkCiAgICAgKiBieSBzdWJjbGFzc2VzLgogICAgICoKICAgICAqIFRoZSBpbmZvIG9iamVjdCBzaG91bGQgY29udGFpbiBwcm9wZXJ0eSBtZXRhZGF0YSBhcyBmb2xsb3dzOgogICAgICoKICAgICAqICogYHR5cGVgOiB7ZnVuY3Rpb259IHR5cGUgdG8gd2hpY2ggYW4gYXR0cmlidXRlIG1hdGNoaW5nIHRoZSBwcm9wZXJ0eQogICAgICogaXMgZGVzZXJpYWxpemVkLiBOb3RlIHRoZSBwcm9wZXJ0eSBpcyBjYW1lbC1jYXNlZCBmcm9tIGEgZGFzaC1jYXNlZAogICAgICogYXR0cmlidXRlLiBGb3IgZXhhbXBsZSwgJ2Zvby1iYXInIGF0dHJpYnV0ZSBpcyBkZXNlcmlhbGl6ZWQgdG8gYQogICAgICogcHJvcGVydHkgbmFtZWQgJ2Zvb0JhcicuCiAgICAgKgogICAgICogKiBgcmVhZE9ubHlgOiB7Ym9vbGVhbn0gY3JlYXRlcyBhIHJlYWRPbmx5IHByb3BlcnR5IGFuZAogICAgICogbWFrZXMgYSBwcml2YXRlIHNldHRlciBmb3IgdGhlIHByaXZhdGUgb2YgdGhlIGZvcm0gJ19zZXRGb28nIGZvciBhCiAgICAgKiBwcm9wZXJ0eSAnZm9vJywKICAgICAqCiAgICAgKiAqIGBjb21wdXRlZGA6IHtzdHJpbmd9IGNyZWF0ZXMgYSBjb21wdXRlZCBwcm9wZXJ0eS4gQSBjb21wdXRlZCBwcm9wZXJ0eQogICAgICogaXMgYWxzbyBhdXRvbWF0aWNhbGx5IHNldCB0byBgcmVhZE9ubHk6IHRydWVgLiBUaGUgdmFsdWUgaXMgY2FsY3VsYXRlZAogICAgICogYnkgcnVubmluZyBhIG1ldGhvZCBhbmQgYXJndW1lbnRzIHBhcnNlZCBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuIEZvcgogICAgICogZXhhbXBsZSAnY29tcHV0ZShmb28pJyB3aWxsIGNvbXB1dGUgYSBnaXZlbiBwcm9wZXJ0eSB3aGVuIHRoZQogICAgICogJ2ZvbycgcHJvcGVydHkgY2hhbmdlcyBieSBleGVjdXRpbmcgdGhlICdjb21wdXRlJyBtZXRob2QuIFRoaXMgbWV0aG9kCiAgICAgKiBtdXN0IHJldHVybiB0aGUgY29tcHV0ZWQgdmFsdWUuCiAgICAgKgogICAgICogKiBgcmVmbGVjdFRvQXR0cmlidXRlYDoge2Jvb2xlYW59IElmIHRydWUsIHRoZSBwcm9wZXJ0eSB2YWx1ZSBpcyByZWZsZWN0ZWQKICAgICAqIHRvIGFuIGF0dHJpYnV0ZSBvZiB0aGUgc2FtZSBuYW1lLiBOb3RlLCB0aGUgYXR0cmlidXRlIGlzIGRhc2gtY2FzZWQKICAgICAqIHNvIGEgcHJvcGVydHkgbmFtZWQgJ2Zvb0JhcicgaXMgcmVmbGVjdGVkIGFzICdmb28tYmFyJy4KICAgICAqCiAgICAgKiAqIGBub3RpZnlgOiB7Ym9vbGVhbn0gc2VuZHMgYSBub24tYnViYmxpbmcgbm90aWZpY2F0aW9uIGV2ZW50IHdoZW4KICAgICAqIHRoZSBwcm9wZXJ0eSBjaGFuZ2VzLiBGb3IgZXhhbXBsZSwgYSBwcm9wZXJ0eSBuYW1lZCAnZm9vJyBzZW5kcyBhbgogICAgICogZXZlbnQgbmFtZWQgJ2Zvby1jaGFuZ2VkJyB3aXRoIGBldmVudC5kZXRhaWxgIHNldCB0byB0aGUgdmFsdWUgb2YKICAgICAqIHRoZSBwcm9wZXJ0eS4KICAgICAqCiAgICAgKiAqIG9ic2VydmVyOiB7c3RyaW5nfSBuYW1lIG9mIGEgbWV0aG9kIHRoYXQgcnVucyB3aGVuIHRoZSBwcm9wZXJ0eQogICAgICogY2hhbmdlcy4gVGhlIGFyZ3VtZW50cyBvZiB0aGUgbWV0aG9kIGFyZSAodmFsdWUsIHByZXZpb3VzVmFsdWUpLgogICAgICoKICAgICAqIE5vdGU6IFVzZXJzIG1heSB3YW50IGNvbnRyb2wgb3ZlciBtb2RpZnlpbmcgcHJvcGVydHkKICAgICAqIGVmZmVjdHMgdmlhIHN1YmNsYXNzaW5nLiBGb3IgZXhhbXBsZSwgYSB1c2VyIG1pZ2h0IHdhbnQgdG8gbWFrZSBhCiAgICAgKiByZWZsZWN0VG9BdHRyaWJ1dGUgcHJvcGVydHkgbm90IGRvIHNvIGluIGEgc3ViY2xhc3MuIFdlJ3ZlIGNob3NlbiB0bwogICAgICogZGlzYWJsZSB0aGlzIGJlY2F1c2UgaXQgbGVhZHMgdG8gYWRkaXRpb25hbCBjb21wbGljYXRpb24uCiAgICAgKiBGb3IgZXhhbXBsZSwgYSByZWFkT25seSBlZmZlY3QgZ2VuZXJhdGVzIGEgc3BlY2lhbCBzZXR0ZXIuIElmIGEgc3ViY2xhc3MKICAgICAqIGRpc2FibGVzIHRoZSBlZmZlY3QsIHRoZSBzZXR0ZXIgd291bGQgZmFpbCB1bmV4cGVjdGVkbHkuCiAgICAgKiBCYXNlZCBvbiBmZWVkYmFjaywgd2UgbWF5IHdhbnQgdG8gdHJ5IHRvIG1ha2UgZWZmZWN0cyBtb3JlIG1hbGxlYWJsZQogICAgICogYW5kL29yIHByb3ZpZGUgYW4gYWR2YW5jZWQgYXBpIGZvciBtYW5pcHVsYXRpbmcgdGhlbS4KICAgICAqIEFsc28gY29uc2lkZXIgYWRkaW5nIHdhcm5pbmdzIHdoZW4gYW4gZWZmZWN0IGNhbm5vdCBiZSBjaGFuZ2VkLgogICAgICoKICAgICAqIEBwYXJhbSB7IVBvbHltZXJFbGVtZW50fSBwcm90byBFbGVtZW50IGNsYXNzIHByb3RvdHlwZSB0byBhZGQgYWNjZXNzb3JzCiAgICAgKiAgIGFuZCBlZmZlY3RzIHRvCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBwcm9wZXJ0eS4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbmZvIEluZm8gb2JqZWN0IGZyb20gd2hpY2ggdG8gY3JlYXRlIHByb3BlcnR5IGVmZmVjdHMuCiAgICAgKiBTdXBwb3J0ZWQga2V5czoKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhbGxQcm9wcyBGbGF0dGVuZWQgbWFwIG9mIGFsbCBwcm9wZXJ0aWVzIGRlZmluZWQgaW4gdGhpcwogICAgICogICBlbGVtZW50IChpbmNsdWRpbmcgaW5oZXJpdGVkIHByb3BlcnRpZXMpCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlGcm9tQ29uZmlnKHByb3RvLCBuYW1lLCBpbmZvLCBhbGxQcm9wcykgewogICAgICAvLyBjb21wdXRlZCBmb3JjZXMgcmVhZE9ubHkuLi4KICAgICAgaWYgKGluZm8uY29tcHV0ZWQpIHsKICAgICAgICBpbmZvLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICAgfQogICAgICAvLyBOb3RlLCBzaW5jZSBhbGwgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgcmVhZE9ubHksIHRoaXMgcHJldmVudHMKICAgICAgLy8gYWRkaW5nIGFkZGl0aW9uYWwgY29tcHV0ZWQgcHJvcGVydHkgZWZmZWN0cyAod2hpY2ggbGVhZHMgdG8gYSBjb25mdXNpbmcKICAgICAgLy8gc2V0dXAgd2hlcmUgbXVsdGlwbGUgdHJpZ2dlcnMgZm9yIHNldHRpbmcgYSBwcm9wZXJ0eSkKICAgICAgLy8gV2hpbGUgd2UgZG8gaGF2ZSBgaGFzQ29tcHV0ZWRFZmZlY3RgIHRoaXMgaXMgc2V0IG9uIHRoZSBwcm9wZXJ0eSdzCiAgICAgIC8vIGRlcGVuZGVuY2llcyByYXRoZXIgdGhhbiBpdHNlbGYuCiAgICAgIGlmIChpbmZvLmNvbXB1dGVkICYmICFwcm90by5faGFzUmVhZE9ubHlFZmZlY3QobmFtZSkpIHsKICAgICAgICBwcm90by5fY3JlYXRlQ29tcHV0ZWRQcm9wZXJ0eShuYW1lLCBpbmZvLmNvbXB1dGVkLCBhbGxQcm9wcyk7CiAgICAgIH0KICAgICAgaWYgKGluZm8ucmVhZE9ubHkgJiYgIXByb3RvLl9oYXNSZWFkT25seUVmZmVjdChuYW1lKSkgewogICAgICAgIHByb3RvLl9jcmVhdGVSZWFkT25seVByb3BlcnR5KG5hbWUsICFpbmZvLmNvbXB1dGVkKTsKICAgICAgfQogICAgICBpZiAoaW5mby5yZWZsZWN0VG9BdHRyaWJ1dGUgJiYgIXByb3RvLl9oYXNSZWZsZWN0RWZmZWN0KG5hbWUpKSB7CiAgICAgICAgcHJvdG8uX2NyZWF0ZVJlZmxlY3RlZFByb3BlcnR5KG5hbWUpOwogICAgICB9CiAgICAgIGlmIChpbmZvLm5vdGlmeSAmJiAhcHJvdG8uX2hhc05vdGlmeUVmZmVjdChuYW1lKSkgewogICAgICAgIHByb3RvLl9jcmVhdGVOb3RpZnlpbmdQcm9wZXJ0eShuYW1lKTsKICAgICAgfQogICAgICAvLyBhbHdheXMgYWRkIG9ic2VydmVyCiAgICAgIGlmIChpbmZvLm9ic2VydmVyKSB7CiAgICAgICAgcHJvdG8uX2NyZWF0ZVByb3BlcnR5T2JzZXJ2ZXIobmFtZSwgaW5mby5vYnNlcnZlciwgYWxsUHJvcHNbaW5mby5vYnNlcnZlcl0pOwogICAgICB9CiAgICAgIC8vIGFsd2F5cyBjcmVhdGUgdGhlIG1hcHBpbmcgZnJvbSBhdHRyaWJ1dGUgYmFjayB0byBwcm9wZXJ0eSBmb3IgZGVzZXJpYWxpemF0aW9uLgogICAgICBwcm90by5fYWRkUHJvcGVydHlUb0F0dHJpYnV0ZU1hcChuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFByb2Nlc3MgYWxsIHN0eWxlIGVsZW1lbnRzIGluIHRoZSBlbGVtZW50IHRlbXBsYXRlLiBTdHlsZXMgd2l0aCB0aGUKICAgICAqIGBpbmNsdWRlYCBhdHRyaWJ1dGUgYXJlIHByb2Nlc3NlZCBzdWNoIHRoYXQgYW55IHN0eWxlcyBpbgogICAgICogdGhlIGFzc29jaWF0ZWQgInN0eWxlIG1vZHVsZXMiIGFyZSBpbmNsdWRlZCBpbiB0aGUgZWxlbWVudCB0ZW1wbGF0ZS4KICAgICAqIEBwYXJhbSB7UG9seW1lckVsZW1lbnRDb25zdHJ1Y3Rvcn0ga2xhc3MgRWxlbWVudCBjbGFzcwogICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGVtcGxhdGUgdG8gcHJvY2VzcwogICAgICogQHBhcmFtIHtzdHJpbmd9IGlzIE5hbWUgb2YgZWxlbWVudAogICAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkkgQmFzZSBVUkkgZm9yIGVsZW1lbnQKICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIHByb2Nlc3NFbGVtZW50U3R5bGVzKGtsYXNzLCB0ZW1wbGF0ZSwgaXMsIGJhc2VVUkkpIHsKICAgICAgaWYgKCFidWlsdENTUykgewogICAgICAgIGNvbnN0IHRlbXBsYXRlU3R5bGVzID0gdGVtcGxhdGUuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpOwogICAgICAgIGNvbnN0IHN0eWxlc1dpdGhJbXBvcnRzID0gUG9seW1lci5TdHlsZUdhdGhlci5zdHlsZXNGcm9tVGVtcGxhdGUodGVtcGxhdGUpOwogICAgICAgIC8vIGluc2VydCBzdHlsZXMgZnJvbSA8bGluayByZWw9ImltcG9ydCIgdHlwZT0iY3NzIj4gYXQgdGhlIHRvcCBvZiB0aGUgdGVtcGxhdGUKICAgICAgICBjb25zdCBsaW5rZWRTdHlsZXMgPSBQb2x5bWVyLlN0eWxlR2F0aGVyLnN0eWxlc0Zyb21Nb2R1bGVJbXBvcnRzKGlzKTsKICAgICAgICBjb25zdCBmaXJzdFRlbXBsYXRlQ2hpbGQgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0RWxlbWVudENoaWxkOwogICAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGxpbmtlZFN0eWxlcy5sZW5ndGg7IGlkeCsrKSB7CiAgICAgICAgICBsZXQgcyA9IGxpbmtlZFN0eWxlc1tpZHhdOwogICAgICAgICAgcy50ZXh0Q29udGVudCA9IGtsYXNzLl9wcm9jZXNzU3R5bGVUZXh0KHMudGV4dENvbnRlbnQsIGJhc2VVUkkpOwogICAgICAgICAgdGVtcGxhdGUuY29udGVudC5pbnNlcnRCZWZvcmUocywgZmlyc3RUZW1wbGF0ZUNoaWxkKTsKICAgICAgICB9CiAgICAgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgbGFzdCAiY29uY3JldGUiIHN0eWxlIGluIHRoZSB0ZW1wbGF0ZSB3ZSBoYXZlIGVuY291bnRlcmVkCiAgICAgICAgbGV0IHRlbXBsYXRlU3R5bGVJbmRleCA9IDA7CiAgICAgICAgLy8gZW5zdXJlIGFsbCBnYXRoZXJlZCBzdHlsZXMgYXJlIGFjdHVhbGx5IGluIHRoaXMgdGVtcGxhdGUuCiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHlsZXNXaXRoSW1wb3J0cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGV0IHMgPSBzdHlsZXNXaXRoSW1wb3J0c1tpXTsKICAgICAgICAgIGxldCB0ZW1wbGF0ZVN0eWxlID0gdGVtcGxhdGVTdHlsZXNbdGVtcGxhdGVTdHlsZUluZGV4XTsKICAgICAgICAgIC8vIGlmIHRoZSBzdHlsZSBpcyBub3QgaW4gdGhpcyB0ZW1wbGF0ZSwgaXQncyBiZWVuICJpbmNsdWRlZCIgYW5kCiAgICAgICAgICAvLyB3ZSBwdXQgYSBjbG9uZSBvZiBpdCBpbiB0aGUgdGVtcGxhdGUgYmVmb3JlIHRoZSBzdHlsZSB0aGF0IGluY2x1ZGVkIGl0CiAgICAgICAgICBpZiAodGVtcGxhdGVTdHlsZSAhPT0gcykgewogICAgICAgICAgICBzID0gcy5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAgICAgIHRlbXBsYXRlU3R5bGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocywgdGVtcGxhdGVTdHlsZSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0ZW1wbGF0ZVN0eWxlSW5kZXgrKzsKICAgICAgICAgIH0KICAgICAgICAgIHMudGV4dENvbnRlbnQgPSBrbGFzcy5fcHJvY2Vzc1N0eWxlVGV4dChzLnRleHRDb250ZW50LCBiYXNlVVJJKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHdpbmRvdy5TaGFkeUNTUykgewogICAgICAgIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGUodGVtcGxhdGUsIGlzKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogTG9vayB1cCB0ZW1wbGF0ZSBmcm9tIGRvbS1tb2R1bGUgZm9yIGVsZW1lbnQKICAgICAqCiAgICAgKiBAcGFyYW0geyFzdHJpbmd9IGlzIEVsZW1lbnQgbmFtZSB0byBsb29rIHVwCiAgICAgKiBAcmV0dXJuIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gVGVtcGxhdGUgZm91bmQgaW4gZG9tIG1vZHVsZSwgb3IKICAgICAqICAgdW5kZWZpbmVkIGlmIG5vdCBmb3VuZAogICAgICogQHByb3RlY3RlZAogICAgICovCiAgICBmdW5jdGlvbiBnZXRUZW1wbGF0ZUZyb21Eb21Nb2R1bGUoaXMpIHsKICAgICAgbGV0IHRlbXBsYXRlID0gbnVsbDsKICAgICAgaWYgKGlzICYmIFBvbHltZXIuRG9tTW9kdWxlKSB7CiAgICAgICAgdGVtcGxhdGUgPSBQb2x5bWVyLkRvbU1vZHVsZS5pbXBvcnQoaXMsICd0ZW1wbGF0ZScpOwogICAgICAgIC8vIFVuZGVyIHN0cmljdFRlbXBsYXRlUG9saWN5LCByZXF1aXJlIGFueSBlbGVtZW50IHdpdGggYW4gYGlzYAogICAgICAgIC8vIHNwZWNpZmllZCB0byBoYXZlIGEgZG9tLW1vZHVsZQogICAgICAgIGlmIChQb2x5bWVyLnN0cmljdFRlbXBsYXRlUG9saWN5ICYmICF0ZW1wbGF0ZSkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBzdHJpY3RUZW1wbGF0ZVBvbGljeTogZXhwZWN0aW5nIGRvbS1tb2R1bGUgb3IgbnVsbCB0ZW1wbGF0ZSBmb3IgJHtpc31gKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRlbXBsYXRlOwogICAgfQoKICAvKioKICAgICAqIEBwb2x5bWVyCiAgICAgKiBAbWl4aW5DbGFzcwogICAgICogQHVucmVzdHJpY3RlZAogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfRWxlbWVudE1peGlufQogICAgICovCiAgICBjbGFzcyBQb2x5bWVyRWxlbWVudCBleHRlbmRzIHBvbHltZXJFbGVtZW50QmFzZSB7CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGUgb2YgUHJvcGVydGllc01peGluIF9maW5hbGl6ZUNsYXNzIHRvIGNyZWF0ZSBvYnNlcnZlcnMgYW5kCiAgICAgICAqIGZpbmQgdGhlIHRlbXBsYXRlLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBJbnRlcmZhY2VzIGluIGNsb3N1cmUgZG8gbm90IGluaGVyaXQgc3RhdGljcywgYnV0IGNsYXNzZXMgZG8KICAgICAgICovCiAgICAgIHN0YXRpYyBfZmluYWxpemVDbGFzcygpIHsKICAgICAgICBzdXBlci5fZmluYWxpemVDbGFzcygpOwogICAgICAgIGNvbnN0IG9ic2VydmVycyA9IG93bk9ic2VydmVycyh0aGlzKTsKICAgICAgICBpZiAob2JzZXJ2ZXJzKSB7CiAgICAgICAgICB0aGlzLmNyZWF0ZU9ic2VydmVycyhvYnNlcnZlcnMsIHRoaXMuX3Byb3BlcnRpZXMpOwogICAgICAgIH0KICAgICAgICB0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKTsKICAgICAgfQoKICAgICAgc3RhdGljIF9wcmVwYXJlVGVtcGxhdGUoKSB7CiAgICAgICAgLy8gbm90ZTogY3JlYXRlICJ3b3JraW5nIiB0ZW1wbGF0ZSB0aGF0IGlzIGZpbmFsaXplZCBhdCBpbnN0YW5jZSB0aW1lCiAgICAgICAgbGV0IHRlbXBsYXRlID0gLyoqIEB0eXBlIHtQb2x5bWVyRWxlbWVudENvbnN0cnVjdG9yfSAqLyAodGhpcykudGVtcGxhdGU7CiAgICAgICAgaWYgKHRlbXBsYXRlKSB7CiAgICAgICAgICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnc3RyaW5nJykgewogICAgICAgICAgICBsZXQgdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7CiAgICAgICAgICAgIHQuaW5uZXJIVE1MID0gdGVtcGxhdGU7CiAgICAgICAgICAgIHRlbXBsYXRlID0gdDsKICAgICAgICAgIH0gZWxzZSBpZiAoIVBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9ucykgewogICAgICAgICAgICAgdGVtcGxhdGUgPSB0ZW1wbGF0ZS5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLnByb3RvdHlwZS5fdGVtcGxhdGUgPSB0ZW1wbGF0ZTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlIG9mIFByb3BlcnRpZXNDaGFuZ2VkIGNyZWF0ZVByb3BlcnRpZXMgdG8gY3JlYXRlIGFjY2Vzc29ycwogICAgICAgKiBhbmQgcHJvcGVydHkgZWZmZWN0cyBmb3IgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKi8KICAgICAgc3RhdGljIGNyZWF0ZVByb3BlcnRpZXMocHJvcHMpIHsKICAgICAgICBmb3IgKGxldCBwIGluIHByb3BzKSB7CiAgICAgICAgICBjcmVhdGVQcm9wZXJ0eUZyb21Db25maWcodGhpcy5wcm90b3R5cGUsIHAsIHByb3BzW3BdLCBwcm9wcyk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogQ3JlYXRlcyBvYnNlcnZlcnMgZm9yIHRoZSBnaXZlbiBgb2JzZXJ2ZXJzYCBhcnJheS4KICAgICAgICogTGV2ZXJhZ2VzIGBQcm9wZXJ0eUVmZmVjdHNgIHRvIGNyZWF0ZSBvYnNlcnZlcnMuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlcnMgQXJyYXkgb2Ygb2JzZXJ2ZXIgZGVzY3JpcHRvcnMgZm9yCiAgICAgICAqICAgdGhpcyBjbGFzcwogICAgICAgKiBAcGFyYW0ge09iamVjdH0gZHluYW1pY0ZucyBPYmplY3QgY29udGFpbmluZyBrZXlzIGZvciBhbnkgcHJvcGVydGllcwogICAgICAgKiAgIHRoYXQgYXJlIGZ1bmN0aW9ucyBhbmQgc2hvdWxkIHRyaWdnZXIgdGhlIGVmZmVjdCB3aGVuIHRoZSBmdW5jdGlvbgogICAgICAgKiAgIHJlZmVyZW5jZSBpcyBjaGFuZ2VkCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIHN0YXRpYyBjcmVhdGVPYnNlcnZlcnMob2JzZXJ2ZXJzLCBkeW5hbWljRm5zKSB7CiAgICAgICAgY29uc3QgcHJvdG8gPSB0aGlzLnByb3RvdHlwZTsKICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBvYnNlcnZlcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHByb3RvLl9jcmVhdGVNZXRob2RPYnNlcnZlcihvYnNlcnZlcnNbaV0sIGR5bmFtaWNGbnMpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIHRoYXQgd2lsbCBiZSBzdGFtcGVkIGludG8gdGhpcyBlbGVtZW50J3Mgc2hhZG93IHJvb3QuCiAgICAgICAqCiAgICAgICAqIElmIGEgYHN0YXRpYyBnZXQgaXMoKWAgZ2V0dGVyIGlzIGRlZmluZWQsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAgICAgICAqIHdpbGwgcmV0dXJuIHRoZSBmaXJzdCBgPHRlbXBsYXRlPmAgaW4gYSBgZG9tLW1vZHVsZWAgd2hvc2UgYGlkYAogICAgICAgKiBtYXRjaGVzIHRoaXMgZWxlbWVudCdzIGBpc2AuCiAgICAgICAqCiAgICAgICAqIFVzZXJzIG1heSBvdmVycmlkZSB0aGlzIGdldHRlciB0byByZXR1cm4gYW4gYXJiaXRyYXJ5IHRlbXBsYXRlCiAgICAgICAqIChpbiB3aGljaCBjYXNlIHRoZSBgaXNgIGdldHRlciBpcyB1bm5lY2Vzc2FyeSkuIFRoZSB0ZW1wbGF0ZSByZXR1cm5lZAogICAgICAgKiBtYXkgYmUgZWl0aGVyIGFuIGBIVE1MVGVtcGxhdGVFbGVtZW50YCBvciBhIHN0cmluZyB0aGF0IHdpbGwgYmUKICAgICAgICogYXV0b21hdGljYWxseSBwYXJzZWQgaW50byBhIHRlbXBsYXRlLgogICAgICAgKgogICAgICAgKiBOb3RlIHRoYXQgd2hlbiBzdWJjbGFzc2luZywgaWYgdGhlIHN1cGVyIGNsYXNzIG92ZXJyb2RlIHRoZSBkZWZhdWx0CiAgICAgICAqIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgc3ViY2xhc3Mgd291bGQgbGlrZSB0byBwcm92aWRlIGFuIGFsdGVybmF0ZQogICAgICAgKiB0ZW1wbGF0ZSB2aWEgYSBgZG9tLW1vZHVsZWAsIGl0IHNob3VsZCBvdmVycmlkZSB0aGlzIGdldHRlciBhbmQKICAgICAgICogcmV0dXJuIGBQb2x5bWVyLkRvbU1vZHVsZS5pbXBvcnQodGhpcy5pcywgJ3RlbXBsYXRlJylgLgogICAgICAgKgogICAgICAgKiBJZiBhIHN1YmNsYXNzIHdvdWxkIGxpa2UgdG8gbW9kaWZ5IHRoZSBzdXBlciBjbGFzcyB0ZW1wbGF0ZSwgaXQgc2hvdWxkCiAgICAgICAqIGNsb25lIGl0IHJhdGhlciB0aGFuIG1vZGlmeSBpdCBpbiBwbGFjZS4gIElmIHRoZSBnZXR0ZXIgZG9lcyBleHBlbnNpdmUKICAgICAgICogd29yayBzdWNoIGFzIGNsb25pbmcvbW9kaWZ5aW5nIGEgdGVtcGxhdGUsIGl0IHNob3VsZCBtZW1vaXplIHRoZQogICAgICAgKiB0ZW1wbGF0ZSBmb3IgbWF4aW11bSBwZXJmb3JtYW5jZToKICAgICAgICoKICAgICAgICogICBsZXQgbWVtb2l6ZWRUZW1wbGF0ZTsKICAgICAgICogICBjbGFzcyBNeVN1YkNsYXNzIGV4dGVuZHMgTXlTdXBlckNsYXNzIHsKICAgICAgICogICAgIHN0YXRpYyBnZXQgdGVtcGxhdGUoKSB7CiAgICAgICAqICAgICAgIGlmICghbWVtb2l6ZWRUZW1wbGF0ZSkgewogICAgICAgKiAgICAgICAgIG1lbW9pemVkVGVtcGxhdGUgPSBNeVN1cGVyQ2xhc3MudGVtcGxhdGUuY2xvbmVOb2RlKHRydWUpOwogICAgICAgKiAgICAgICAgIGxldCBzdWJDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAqICAgICAgICAgc3ViQ29udGVudC50ZXh0Q29udGVudCA9ICdUaGlzIGNhbWUgZnJvbSBNeVN1YkNsYXNzJzsKICAgICAgICogICAgICAgICBtZW1vaXplZFRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQoc3ViQ29udGVudCk7CiAgICAgICAqICAgICAgIH0KICAgICAgICogICAgICAgcmV0dXJuIG1lbW9pemVkVGVtcGxhdGU7CiAgICAgICAqICAgICB9CiAgICAgICAqICAgfQogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHtIVE1MVGVtcGxhdGVFbGVtZW50fHN0cmluZ30gVGVtcGxhdGUgdG8gYmUgc3RhbXBlZAogICAgICAgKi8KICAgICAgc3RhdGljIGdldCB0ZW1wbGF0ZSgpIHsKICAgICAgICAvLyBFeHBsYW5hdGlvbiBvZiB0ZW1wbGF0ZS1yZWxhdGVkIHByb3BlcnRpZXM6CiAgICAgICAgLy8gLSBjb25zdHJ1Y3Rvci50ZW1wbGF0ZSAodGhpcyBnZXR0ZXIpOiB0aGUgdGVtcGxhdGUgZm9yIHRoZSBjbGFzcy4KICAgICAgICAvLyAgICAgVGhpcyBjYW4gY29tZSBmcm9tIHRoZSBwcm90b3R5cGUgKGZvciBsZWdhY3kgZWxlbWVudHMpLCBmcm9tIGEKICAgICAgICAvLyAgICAgZG9tLW1vZHVsZSwgb3IgZnJvbSB0aGUgc3VwZXIgY2xhc3MncyB0ZW1wbGF0ZSAob3IgY2FuIGJlIG92ZXJyaWRkZW4KICAgICAgICAvLyAgICAgYWx0b2dldGhlciBieSB0aGUgdXNlcikKICAgICAgICAvLyAtIGNvbnN0cnVjdG9yLl90ZW1wbGF0ZTogbWVtb2l6ZWQgdmVyc2lvbiBvZiBjb25zdHJ1Y3Rvci50ZW1wbGF0ZQogICAgICAgIC8vIC0gcHJvdG90eXBlLl90ZW1wbGF0ZTogd29ya2luZyB0ZW1wbGF0ZSBmb3IgdGhlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUKICAgICAgICAvLyAgICAgcGFyc2VkIGFuZCBtb2RpZmllZCBpbiBwbGFjZS4gSXQgaXMgYSBjbG9uZWQgdmVyc2lvbiBvZgogICAgICAgIC8vICAgICBjb25zdHJ1Y3Rvci50ZW1wbGF0ZSwgc2F2ZWQgaW4gX2ZpbmFsaXplQ2xhc3MoKS4gTm90ZSB0aGF0IGJlZm9yZQogICAgICAgIC8vICAgICB0aGlzIGdldHRlciBpcyBjYWxsZWQsIGZvciBsZWdhY3kgZWxlbWVudHMgdGhpcyBjb3VsZCBiZSBmcm9tIGEKICAgICAgICAvLyAgICAgX3RlbXBsYXRlIGZpZWxkIG9uIHRoZSBpbmZvIG9iamVjdCBwYXNzZWQgdG8gUG9seW1lcigpLCBhIGJlaGF2aW9yLAogICAgICAgIC8vICAgICBvciBzZXQgaW4gcmVnaXN0ZXJlZCgpOyBvbmNlIHRoZSBzdGF0aWMgZ2V0dGVyIHJ1bnMsIGEgY2xvbmUgb2YgaXQKICAgICAgICAvLyAgICAgd2lsbCBvdmVyd3JpdGUgaXQgb24gdGhlIHByb3RvdHlwZSBhcyB0aGUgd29ya2luZyB0ZW1wbGF0ZS4KICAgICAgICBpZiAoIXRoaXMuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX3RlbXBsYXRlJywgdGhpcykpKSB7CiAgICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9CiAgICAgICAgICAgIC8vIElmIHVzZXIgaGFzIHB1dCB0ZW1wbGF0ZSBvbiBwcm90b3R5cGUgKGUuZy4gaW4gbGVnYWN5IHZpYSByZWdpc3RlcmVkCiAgICAgICAgICAgIC8vIGNhbGxiYWNrIG9yIGluZm8gb2JqZWN0KSwgcHJlZmVyIHRoYXQgZmlyc3QKICAgICAgICAgICAgdGhpcy5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnX3RlbXBsYXRlJywgdGhpcy5wcm90b3R5cGUpKSA/CiAgICAgICAgICAgIHRoaXMucHJvdG90eXBlLl90ZW1wbGF0ZSA6CiAgICAgICAgICAgIC8vIExvb2sgaW4gZG9tLW1vZHVsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBlbGVtZW50J3MgaXMKICAgICAgICAgICAgKGdldFRlbXBsYXRlRnJvbURvbU1vZHVsZSgvKiogQHR5cGUge1BvbHltZXJFbGVtZW50Q29uc3RydWN0b3J9Ki8gKHRoaXMpLmlzKSB8fAogICAgICAgICAgICAvLyBOZXh0IGxvb2sgZm9yIHN1cGVyY2xhc3MgdGVtcGxhdGUgKGNhbGwgdGhlIHN1cGVyIGltcGwgdGhpcwogICAgICAgICAgICAvLyB3YXkgc28gdGhhdCBgdGhpc2AgcG9pbnRzIHRvIHRoZSBzdXBlcmNsYXNzKQogICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoLyoqIEB0eXBlIHtQb2x5bWVyRWxlbWVudENvbnN0cnVjdG9yfSovICh0aGlzKS5wcm90b3R5cGUpLmNvbnN0cnVjdG9yLnRlbXBsYXRlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogU2V0IHRoZSB0ZW1wbGF0ZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudHxzdHJpbmd9IHZhbHVlIFRlbXBsYXRlIHRvIHNldC4KICAgICAgICovCiAgICAgIHN0YXRpYyBzZXQgdGVtcGxhdGUodmFsdWUpIHsKICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUGF0aCBtYXRjaGluZyB0aGUgdXJsIGZyb20gd2hpY2ggdGhlIGVsZW1lbnQgd2FzIGltcG9ydGVkLgogICAgICAgKgogICAgICAgKiBUaGlzIHBhdGggaXMgdXNlZCB0byByZXNvbHZlIHVybCdzIGluIHRlbXBsYXRlIHN0eWxlIGNzc1RleHQuCiAgICAgICAqIFRoZSBgaW1wb3J0UGF0aGAgcHJvcGVydHkgaXMgYWxzbyBzZXQgb24gZWxlbWVudCBpbnN0YW5jZXMgYW5kIGNhbiBiZQogICAgICAgKiB1c2VkIHRvIGNyZWF0ZSBiaW5kaW5ncyByZWxhdGl2ZSB0byB0aGUgaW1wb3J0IHBhdGguCiAgICAgICAqCiAgICAgICAqIEZvciBlbGVtZW50cyBkZWZpbmVkIGluIEVTIG1vZHVsZXMsIHVzZXJzIHNob3VsZCBpbXBsZW1lbnQKICAgICAgICogYHN0YXRpYyBnZXQgaW1wb3J0TWV0YSgpIHsgcmV0dXJuIGltcG9ydC5tZXRhOyB9YCwgYW5kIHRoZSBkZWZhdWx0CiAgICAgICAqIGltcGxlbWVudGF0aW9uIG9mIGBpbXBvcnRQYXRoYCB3aWxsICByZXR1cm4gYGltcG9ydC5tZXRhLnVybGAncyBwYXRoLgogICAgICAgKiBGb3IgZWxlbWVudHMgZGVmaW5lZCBpbiBIVE1MIGltcG9ydHMsIHRoaXMgZ2V0dGVyIHdpbGwgcmV0dXJuIHRoZSBwYXRoCiAgICAgICAqIHRvIHRoZSBkb2N1bWVudCBjb250YWluaW5nIGEgYGRvbS1tb2R1bGVgIGVsZW1lbnQgbWF0Y2hpbmcgdGhpcwogICAgICAgKiBlbGVtZW50J3Mgc3RhdGljIGBpc2AgcHJvcGVydHkuCiAgICAgICAqCiAgICAgICAqIE5vdGUsIHRoaXMgcGF0aCBzaG91bGQgY29udGFpbiBhIHRyYWlsaW5nIGAvYC4KICAgICAgICoKICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgaW1wb3J0IHBhdGggZm9yIHRoaXMgZWxlbWVudCBjbGFzcwogICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfQogICAgICAgKi8KICAgICAgc3RhdGljIGdldCBpbXBvcnRQYXRoKCkgewogICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eShKU0NvbXBpbGVyX3JlbmFtZVByb3BlcnR5KCdfaW1wb3J0UGF0aCcsIHRoaXMpKSkgewogICAgICAgICAgY29uc3QgbWV0YSA9IHRoaXMuaW1wb3J0TWV0YTsKICAgICAgICAgIGlmIChtZXRhKSB7CiAgICAgICAgICAgIHRoaXMuX2ltcG9ydFBhdGggPSBQb2x5bWVyLlJlc29sdmVVcmwucGF0aEZyb21VcmwobWV0YS51cmwpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgbW9kdWxlID0gUG9seW1lci5Eb21Nb2R1bGUgJiYgUG9seW1lci5Eb21Nb2R1bGUuaW1wb3J0KC8qKiBAdHlwZSB7UG9seW1lckVsZW1lbnRDb25zdHJ1Y3Rvcn0gKi8gKHRoaXMpLmlzKTsKICAgICAgICAgICAgdGhpcy5faW1wb3J0UGF0aCA9IChtb2R1bGUgJiYgbW9kdWxlLmFzc2V0cGF0aCkgfHwKICAgICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YoLyoqIEB0eXBlIHtQb2x5bWVyRWxlbWVudENvbnN0cnVjdG9yfSovICh0aGlzKS5wcm90b3R5cGUpLmNvbnN0cnVjdG9yLmltcG9ydFBhdGg7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9pbXBvcnRQYXRoOwogICAgICB9CgogICAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgICBzdXBlcigpOwogICAgICAgIC8qKiBAdHlwZSB7SFRNTFRlbXBsYXRlRWxlbWVudH0gKi8KICAgICAgICB0aGlzLl90ZW1wbGF0ZTsKICAgICAgICAvKiogQHR5cGUge3N0cmluZ30gKi8KICAgICAgICB0aGlzLl9pbXBvcnRQYXRoOwogICAgICAgIC8qKiBAdHlwZSB7c3RyaW5nfSAqLwogICAgICAgIHRoaXMucm9vdFBhdGg7CiAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCiAgICAgICAgdGhpcy5pbXBvcnRQYXRoOwogICAgICAgIC8qKiBAdHlwZSB7U3RhbXBlZFRlbXBsYXRlIHwgSFRNTEVsZW1lbnQgfCBTaGFkb3dSb290fSAqLwogICAgICAgIHRoaXMucm9vdDsKICAgICAgICAvKiogQHR5cGUgeyFPYmplY3Q8c3RyaW5nLCAhRWxlbWVudD59ICovCiAgICAgICAgdGhpcy4kOwogICAgICB9CgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzYCB0byBlbnN1cmUgY2xhc3MKICAgICAgICogbWV0YXByb2dyYW1taW5nIHJlbGF0ZWQgdG8gcHJvcGVydHkgYWNjZXNzb3JzIGFuZCBlZmZlY3RzIGhhcwogICAgICAgKiBjb21wbGV0ZWQgKGNhbGxzIGBmaW5hbGl6ZWApLgogICAgICAgKgogICAgICAgKiBJdCBhbHNvIGluaXRpYWxpemVzIGFueSBwcm9wZXJ0eSBkZWZhdWx0cyBwcm92aWRlZCB2aWEgYHZhbHVlYCBpbgogICAgICAgKiBgcHJvcGVydGllc2AgbWV0YWRhdGEuCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30KICAgICAgICovCiAgICAgIF9pbml0aWFsaXplUHJvcGVydGllcygpIHsKICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLmZpbmFsaXplKCk7CiAgICAgICAgLy8gbm90ZTogZmluYWxpemUgdGVtcGxhdGUgd2hlbiB3ZSBoYXZlIGFjY2VzcyB0byBgbG9jYWxOYW1lYCB0bwogICAgICAgIC8vIGF2b2lkIGRlcGVuZGVuY2Ugb24gYGlzYCBmb3IgcG9seWZpbGxpbmcgc3R5bGluZy4KICAgICAgICB0aGlzLmNvbnN0cnVjdG9yLl9maW5hbGl6ZVRlbXBsYXRlKC8qKiBAdHlwZSB7IUhUTUxFbGVtZW50fSAqLyh0aGlzKS5sb2NhbE5hbWUpOwogICAgICAgIHN1cGVyLl9pbml0aWFsaXplUHJvcGVydGllcygpOwogICAgICAgIC8vIHNldCBwYXRoIGRlZmF1bHRzCiAgICAgICAgdGhpcy5yb290UGF0aCA9IFBvbHltZXIucm9vdFBhdGg7CiAgICAgICAgdGhpcy5pbXBvcnRQYXRoID0gdGhpcy5jb25zdHJ1Y3Rvci5pbXBvcnRQYXRoOwogICAgICAgIC8vIGFwcGx5IHByb3BlcnR5IGRlZmF1bHRzLi4uCiAgICAgICAgbGV0IHAkID0gcHJvcGVydHlEZWZhdWx0cyh0aGlzLmNvbnN0cnVjdG9yKTsKICAgICAgICBpZiAoIXAkKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGZvciAobGV0IHAgaW4gcCQpIHsKICAgICAgICAgIGxldCBpbmZvID0gcCRbcF07CiAgICAgICAgICAvLyBEb24ndCBzZXQgZGVmYXVsdCB2YWx1ZSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIG93biBwcm9wZXJ0eSwgd2hpY2gKICAgICAgICAgIC8vIGhhcHBlbnMgd2hlbiBhIGBwcm9wZXJ0aWVzYCBwcm9wZXJ0eSB3aXRoIGRlZmF1bHQgYnV0IG5vIGVmZmVjdHMgaGFkCiAgICAgICAgICAvLyBhIHByb3BlcnR5IHNldCAoZS5nLiBib3VuZCkgYnkgaXRzIGhvc3QgYmVmb3JlIHVwZ3JhZGUKICAgICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eShwKSkgewogICAgICAgICAgICBsZXQgdmFsdWUgPSB0eXBlb2YgaW5mby52YWx1ZSA9PSAnZnVuY3Rpb24nID8KICAgICAgICAgICAgICBpbmZvLnZhbHVlLmNhbGwodGhpcykgOgogICAgICAgICAgICAgIGluZm8udmFsdWU7CiAgICAgICAgICAgIC8vIFNldCB2aWEgYF9zZXRQcm9wZXJ0eWAgaWYgdGhlcmUgaXMgYW4gYWNjZXNzb3IsIHRvIGVuYWJsZQogICAgICAgICAgICAvLyBpbml0aWFsaXppbmcgcmVhZE9ubHkgcHJvcGVydHkgZGVmYXVsdHMKICAgICAgICAgICAgaWYgKHRoaXMuX2hhc0FjY2Vzc29yKHApKSB7CiAgICAgICAgICAgICAgdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KHAsIHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzW3BdID0gdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBHYXRoZXIgc3R5bGUgdGV4dCBmb3IgYSBzdHlsZSBlbGVtZW50IGluIHRoZSB0ZW1wbGF0ZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNzc1RleHQgVGV4dCBjb250YWluaW5nIHN0eWxpbmcgdG8gcHJvY2VzcwogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSSSBCYXNlIFVSSSB0byByZWJhc2UgQ1NTIHBhdGhzIGFnYWluc3QKICAgICAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgcHJvY2Vzc2VkIENTUyB0ZXh0CiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICovCiAgICAgIHN0YXRpYyBfcHJvY2Vzc1N0eWxlVGV4dChjc3NUZXh0LCBiYXNlVVJJKSB7CiAgICAgICAgcmV0dXJuIFBvbHltZXIuUmVzb2x2ZVVybC5yZXNvbHZlQ3NzKGNzc1RleHQsIGJhc2VVUkkpOwogICAgICB9CgogICAgICAvKioKICAgICAgKiBDb25maWd1cmVzIGFuIGVsZW1lbnQgYHByb3RvYCB0byBmdW5jdGlvbiB3aXRoIGEgZ2l2ZW4gYHRlbXBsYXRlYC4KICAgICAgKiBUaGUgZWxlbWVudCBuYW1lIGBpc2AgYW5kIGV4dGVuZHMgYGV4dGAgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIFNoYWR5Q1NTCiAgICAgICogc3R5bGUgc2NvcGluZy4KICAgICAgKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpcyBUYWcgbmFtZSAob3IgdHlwZSBleHRlbnNpb24gbmFtZSkgZm9yIHRoaXMgZWxlbWVudAogICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICogQHByb3RlY3RlZAogICAgICAqLwogICAgICBzdGF0aWMgX2ZpbmFsaXplVGVtcGxhdGUoaXMpIHsKICAgICAgICAvKiogQGNvbnN0IHtIVE1MVGVtcGxhdGVFbGVtZW50fSAqLwogICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5wcm90b3R5cGUuX3RlbXBsYXRlOwogICAgICAgIGlmICh0ZW1wbGF0ZSAmJiAhdGVtcGxhdGUuX19wb2x5bWVyRmluYWxpemVkKSB7CiAgICAgICAgICB0ZW1wbGF0ZS5fX3BvbHltZXJGaW5hbGl6ZWQgPSB0cnVlOwogICAgICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IHRoaXMuaW1wb3J0UGF0aDsKICAgICAgICAgIGNvbnN0IGJhc2VVUkkgPSBpbXBvcnRQYXRoID8gUG9seW1lci5SZXNvbHZlVXJsLnJlc29sdmVVcmwoaW1wb3J0UGF0aCkgOiAnJzsKICAgICAgICAgIC8vIGUuZy4gc3VwcG9ydCBgaW5jbHVkZT0ibW9kdWxlLW5hbWUiYCwgYW5kIFNoYWR5Q1NTCiAgICAgICAgICBwcm9jZXNzRWxlbWVudFN0eWxlcyh0aGlzLCB0ZW1wbGF0ZSwgaXMsIGJhc2VVUkkpOwogICAgICAgICAgdGhpcy5wcm90b3R5cGUuX2JpbmRUZW1wbGF0ZSh0ZW1wbGF0ZSk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogUHJvdmlkZXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdGFuZGFyZCBDdXN0b20gRWxlbWVudHMKICAgICAgICogYGNvbm5lY3RlZENhbGxiYWNrYC4KICAgICAgICoKICAgICAgICogVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZW5hYmxlcyB0aGUgcHJvcGVydHkgZWZmZWN0cyBzeXN0ZW0gYW5kCiAgICAgICAqIGZsdXNoZXMgYW55IHBlbmRpbmcgcHJvcGVydGllcywgYW5kIHVwZGF0ZXMgc2hpbW1lZCBDU1MgcHJvcGVydGllcwogICAgICAgKiB3aGVuIHVzaW5nIHRoZSBTaGFkeUNTUyBzY29waW5nL2N1c3RvbSBwcm9wZXJ0aWVzIHBvbHlmaWxsLgogICAgICAgKgogICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzLCBpbnZhbGlkQ2FzdHN9IFN1cGVyIG1heSBvciBtYXkgbm90IGltcGxlbWVudCB0aGUgY2FsbGJhY2sKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICAgIGlmICh3aW5kb3cuU2hhZHlDU1MgJiYgdGhpcy5fdGVtcGxhdGUpIHsKICAgICAgICAgIHdpbmRvdy5TaGFkeUNTUy5zdHlsZUVsZW1lbnQoLyoqIEB0eXBlIHshSFRNTEVsZW1lbnR9ICovKHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFN0YW1wcyB0aGUgZWxlbWVudCB0ZW1wbGF0ZS4KICAgICAgICoKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqLwogICAgICByZWFkeSgpIHsKICAgICAgICBpZiAodGhpcy5fdGVtcGxhdGUpIHsKICAgICAgICAgIHRoaXMucm9vdCA9IHRoaXMuX3N0YW1wVGVtcGxhdGUodGhpcy5fdGVtcGxhdGUpOwogICAgICAgICAgdGhpcy4kID0gdGhpcy5yb290LiQ7CiAgICAgICAgfQogICAgICAgIHN1cGVyLnJlYWR5KCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBJbXBsZW1lbnRzIGBQcm9wZXJ0eUVmZmVjdHNgJ3MgYF9yZWFkeUNsaWVudHNgIGNhbGwuIEF0dGFjaGVzCiAgICAgICAqIGVsZW1lbnQgZG9tIGJ5IGNhbGxpbmcgYF9hdHRhY2hEb21gIHdpdGggdGhlIGRvbSBzdGFtcGVkIGZyb20gdGhlCiAgICAgICAqIGVsZW1lbnQncyB0ZW1wbGF0ZSB2aWEgYF9zdGFtcFRlbXBsYXRlYC4gTm90ZSB0aGF0IHRoaXMgYWxsb3dzCiAgICAgICAqIGNsaWVudCBkb20gdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGVsZW1lbnQgcHJpb3IgdG8gYW55IG9ic2VydmVycwogICAgICAgKiBydW5uaW5nLgogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICovCiAgICAgIF9yZWFkeUNsaWVudHMoKSB7CiAgICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlKSB7CiAgICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLl9hdHRhY2hEb20oLyoqIEB0eXBlIHtTdGFtcGVkVGVtcGxhdGV9ICovKHRoaXMucm9vdCkpOwogICAgICAgIH0KICAgICAgICAvLyBUaGUgc3VwZXIuX3JlYWR5Q2xpZW50cyBoZXJlIHNldHMgdGhlIGNsaWVudHMgaW5pdGlhbGl6ZWQgZmxhZy4KICAgICAgICAvLyBXZSBtdXN0IHdhaXQgdG8gZG8gdGhpcyB1bnRpbCBhZnRlciBjbGllbnQgZG9tIGlzIGNyZWF0ZWQvYXR0YWNoZWQKICAgICAgICAvLyBzbyB0aGF0IHRoaXMgZmxhZyBjYW4gYmUgY2hlY2tlZCB0byBwcmV2ZW50IG5vdGlmaWNhdGlvbnMgZmlyZWQKICAgICAgICAvLyBkdXJpbmcgdGhpcyBwcm9jZXNzIGZyb20gYmVpbmcgaGFuZGxlZCBiZWZvcmUgY2xpZW50cyBhcmUgcmVhZHkuCiAgICAgICAgc3VwZXIuX3JlYWR5Q2xpZW50cygpOwogICAgICB9CgoKICAgICAgLyoqCiAgICAgICAqIEF0dGFjaGVzIGFuIGVsZW1lbnQncyBzdGFtcGVkIGRvbSB0byBpdHNlbGYuIEJ5IGRlZmF1bHQsCiAgICAgICAqIHRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBgc2hhZG93Um9vdGAgYW5kIGFkZHMgdGhlIGRvbSB0byBpdC4KICAgICAgICogSG93ZXZlciwgdGhpcyBtZXRob2QgbWF5IGJlIG92ZXJyaWRkZW4gdG8gYWxsb3cgYW4gZWxlbWVudAogICAgICAgKiB0byBwdXQgaXRzIGRvbSBpbiBhbm90aGVyIGxvY2F0aW9uLgogICAgICAgKgogICAgICAgKiBAdGhyb3dzIHtFcnJvcn0KICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUmV0dXJufQogICAgICAgKiBAcGFyYW0ge1N0YW1wZWRUZW1wbGF0ZX0gZG9tIHRvIGF0dGFjaCB0byB0aGUgZWxlbWVudC4KICAgICAgICogQHJldHVybiB7U2hhZG93Um9vdH0gbm9kZSB0byB3aGljaCB0aGUgZG9tIGhhcyBiZWVuIGF0dGFjaGVkLgogICAgICAgKi8KICAgICAgX2F0dGFjaERvbShkb20pIHsKICAgICAgICBpZiAodGhpcy5hdHRhY2hTaGFkb3cpIHsKICAgICAgICAgIGlmIChkb20pIHsKICAgICAgICAgICAgaWYgKCF0aGlzLnNoYWRvd1Jvb3QpIHsKICAgICAgICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7bW9kZTogJ29wZW4nfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5zaGFkb3dSb290LmFwcGVuZENoaWxkKGRvbSk7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYWRvd1Jvb3Q7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaGFkb3dET00gbm90IGF2YWlsYWJsZS4gJyArCiAgICAgICAgICAgIC8vIFRPRE8oc29ydmVsbCk6IG1vdmUgdG8gY29tcGlsZS10aW1lIGNvbmRpdGlvbmFsIHdoZW4gc3VwcG9ydGVkCiAgICAgICAgICAnUG9seW1lci5FbGVtZW50IGNhbiBjcmVhdGUgZG9tIGFzIGNoaWxkcmVuIGluc3RlYWQgb2YgaW4gJyArCiAgICAgICAgICAnU2hhZG93RE9NIGJ5IHNldHRpbmcgYHRoaXMucm9vdCA9IHRoaXM7XGAgYmVmb3JlIFxgcmVhZHlcYC4nKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBXaGVuIHVzaW5nIHRoZSBTaGFkeUNTUyBzY29waW5nIGFuZCBjdXN0b20gcHJvcGVydHkgc2hpbSwgY2F1c2VzIGFsbAogICAgICAgKiBzaGltbWVkIHN0eWxlcyBpbiB0aGlzIGVsZW1lbnQgKGFuZCBpdHMgc3VidHJlZSkgdG8gYmUgdXBkYXRlZAogICAgICAgKiBiYXNlZCBvbiBjdXJyZW50IGN1c3RvbSBwcm9wZXJ0eSB2YWx1ZXMuCiAgICAgICAqCiAgICAgICAqIFRoZSBvcHRpb25hbCBwYXJhbWV0ZXIgb3ZlcnJpZGVzIGlubGluZSBjdXN0b20gcHJvcGVydHkgc3R5bGVzIHdpdGggYW4KICAgICAgICogb2JqZWN0IG9mIHByb3BlcnRpZXMgd2hlcmUgdGhlIGtleXMgYXJlIENTUyBwcm9wZXJ0aWVzLCBhbmQgdGhlIHZhbHVlcwogICAgICAgKiBhcmUgc3RyaW5ncy4KICAgICAgICoKICAgICAgICogRXhhbXBsZTogYHRoaXMudXBkYXRlU3R5bGVzKHsnLS1jb2xvcic6ICdibHVlJ30pYAogICAgICAgKgogICAgICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSByZXRhaW5lZCB1bmxlc3MgYSB2YWx1ZSBvZiBgbnVsbGAgaXMgc2V0LgogICAgICAgKgogICAgICAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXBkYXRpbmcgQ1NTIG1peGlucy4KICAgICAgICogWW91IGNhbiBub3QgZHluYW1pY2FsbHkgY2hhbmdlIHRoZSB2YWx1ZSBvZiBhbiBgQGFwcGx5YC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBwcm9wZXJ0aWVzIEJhZyBvZiBjdXN0b20gcHJvcGVydHkga2V5L3ZhbHVlcyB0bwogICAgICAgKiAgIGFwcGx5IHRvIHRoaXMgZWxlbWVudC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHN1cHByZXNzIHtpbnZhbGlkQ2FzdHN9CiAgICAgICAqLwogICAgICB1cGRhdGVTdHlsZXMocHJvcGVydGllcykgewogICAgICAgIGlmICh3aW5kb3cuU2hhZHlDU1MpIHsKICAgICAgICAgIHdpbmRvdy5TaGFkeUNTUy5zdHlsZVN1YnRyZWUoLyoqIEB0eXBlIHshSFRNTEVsZW1lbnR9ICovKHRoaXMpLCBwcm9wZXJ0aWVzKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXdyaXRlcyBhIGdpdmVuIFVSTCByZWxhdGl2ZSB0byBhIGJhc2UgVVJMLiBUaGUgYmFzZSBVUkwgZGVmYXVsdHMgdG8KICAgICAgICogdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBkb2N1bWVudCBjb250YWluaW5nIHRoZSBgZG9tLW1vZHVsZWAgZm9yCiAgICAgICAqIHRoaXMgZWxlbWVudC4gVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIHNhbWUgVVJMIGJlZm9yZSBhbmQgYWZ0ZXIKICAgICAgICogYnVuZGxpbmcuCiAgICAgICAqCiAgICAgICAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHBlcmZvcm1zIG5vIHJlc29sdXRpb24gZm9yIFVSTHMgdGhhdCBzdGFydAogICAgICAgKiB3aXRoIGAvYCAoYWJzb2x1dGUgVVJMcykgb3IgYCNgIChoYXNoIGlkZW50aWZpZXJzKS4gIEZvciBnZW5lcmFsIHB1cnBvc2UKICAgICAgICogVVJMIHJlc29sdXRpb24sIHVzZSBgd2luZG93LlVSTGAuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVVJMIHRvIHJlc29sdmUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gYmFzZSBPcHRpb25hbCBiYXNlIFVSTCB0byByZXNvbHZlIGFnYWluc3QsIGRlZmF1bHRzCiAgICAgICAqIHRvIHRoZSBlbGVtZW50J3MgYGltcG9ydFBhdGhgCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUmV3cml0dGVuIFVSTCByZWxhdGl2ZSB0byBiYXNlCiAgICAgICAqLwogICAgICByZXNvbHZlVXJsKHVybCwgYmFzZSkgewogICAgICAgIGlmICghYmFzZSAmJiB0aGlzLmltcG9ydFBhdGgpIHsKICAgICAgICAgIGJhc2UgPSBQb2x5bWVyLlJlc29sdmVVcmwucmVzb2x2ZVVybCh0aGlzLmltcG9ydFBhdGgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gUG9seW1lci5SZXNvbHZlVXJsLnJlc29sdmVVcmwodXJsLCBiYXNlKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBgUHJvcGVydHlBY2Nlc3NvcnNgIHRvIGFkZCBtYXAgb2YgZHluYW1pYyBmdW5jdGlvbnMgb24KICAgICAgICogdGVtcGxhdGUgaW5mbywgZm9yIGNvbnN1bXB0aW9uIGJ5IGBQcm9wZXJ0eUVmZmVjdHNgIHRlbXBsYXRlIGJpbmRpbmcKICAgICAgICogY29kZS4gVGhpcyBtYXAgZGV0ZXJtaW5lcyB3aGljaCBtZXRob2QgdGVtcGxhdGVzIHNob3VsZCBoYXZlIGFjY2Vzc29ycwogICAgICAgKiBjcmVhdGVkIGZvciB0aGVtLgogICAgICAgKgogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gSW50ZXJmYWNlcyBpbiBjbG9zdXJlIGRvIG5vdCBpbmhlcml0IHN0YXRpY3MsIGJ1dCBjbGFzc2VzIGRvCiAgICAgICAqLwogICAgICBzdGF0aWMgX3BhcnNlVGVtcGxhdGVDb250ZW50KHRlbXBsYXRlLCB0ZW1wbGF0ZUluZm8sIG5vZGVJbmZvKSB7CiAgICAgICAgdGVtcGxhdGVJbmZvLmR5bmFtaWNGbnMgPSB0ZW1wbGF0ZUluZm8uZHluYW1pY0ZucyB8fCB0aGlzLl9wcm9wZXJ0aWVzOwogICAgICAgIHJldHVybiBzdXBlci5fcGFyc2VUZW1wbGF0ZUNvbnRlbnQodGVtcGxhdGUsIHRlbXBsYXRlSW5mbywgbm9kZUluZm8pOwogICAgICB9CgogICAgfQoKICAgIHJldHVybiBQb2x5bWVyRWxlbWVudDsKICB9KTsKCiAgLyoqCiAgICogV2hlbiB1c2luZyB0aGUgU2hhZHlDU1Mgc2NvcGluZyBhbmQgY3VzdG9tIHByb3BlcnR5IHNoaW0sIGNhdXNlcyBhbGwKICAgKiBzaGltbWVkIGBzdHlsZXNgICh2aWEgYGN1c3RvbS1zdHlsZWApIGluIHRoZSBkb2N1bWVudCAoYW5kIGl0cyBzdWJ0cmVlKQogICAqIHRvIGJlIHVwZGF0ZWQgYmFzZWQgb24gY3VycmVudCBjdXN0b20gcHJvcGVydHkgdmFsdWVzLgogICAqCiAgICogVGhlIG9wdGlvbmFsIHBhcmFtZXRlciBvdmVycmlkZXMgaW5saW5lIGN1c3RvbSBwcm9wZXJ0eSBzdHlsZXMgd2l0aCBhbgogICAqIG9iamVjdCBvZiBwcm9wZXJ0aWVzIHdoZXJlIHRoZSBrZXlzIGFyZSBDU1MgcHJvcGVydGllcywgYW5kIHRoZSB2YWx1ZXMKICAgKiBhcmUgc3RyaW5ncy4KICAgKgogICAqIEV4YW1wbGU6IGBQb2x5bWVyLnVwZGF0ZVN0eWxlcyh7Jy0tY29sb3InOiAnYmx1ZSd9KWAKICAgKgogICAqIFRoZXNlIHByb3BlcnRpZXMgYXJlIHJldGFpbmVkIHVubGVzcyBhIHZhbHVlIG9mIGBudWxsYCBpcyBzZXQuCiAgICoKICAgKiBAcGFyYW0ge09iamVjdD19IHByb3BzIEJhZyBvZiBjdXN0b20gcHJvcGVydHkga2V5L3ZhbHVlcyB0bwogICAqICAgYXBwbHkgdG8gdGhlIGRvY3VtZW50LgogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci51cGRhdGVTdHlsZXMgPSBmdW5jdGlvbihwcm9wcykgewogICAgaWYgKHdpbmRvdy5TaGFkeUNTUykgewogICAgICB3aW5kb3cuU2hhZHlDU1Muc3R5bGVEb2N1bWVudChwcm9wcyk7CiAgICB9CiAgfTsKCn0pKCk7CgoKKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQHN1bW1hcnkgQ29sbGFwc2UgbXVsdGlwbGUgY2FsbGJhY2tzIGludG8gb25lIGludm9jYXRpb24gYWZ0ZXIgYSB0aW1lci4KICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqLwogIGNsYXNzIERlYm91bmNlciB7CiAgICBjb25zdHJ1Y3RvcigpIHsKICAgICAgdGhpcy5fYXN5bmNNb2R1bGUgPSBudWxsOwogICAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7CiAgICAgIHRoaXMuX3RpbWVyID0gbnVsbDsKICAgIH0KICAgIC8qKgogICAgICogU2V0cyB0aGUgc2NoZWR1bGVyOyB0aGF0IGlzLCBhIG1vZHVsZSB3aXRoIHRoZSBBc3luYyBpbnRlcmZhY2UsCiAgICAgKiBhIGNhbGxiYWNrIGFuZCBvcHRpb25hbCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBydW4gZnVuY3Rpb24KICAgICAqIGZyb20gdGhlIGFzeW5jIG1vZHVsZS4KICAgICAqCiAgICAgKiBAcGFyYW0geyFBc3luY0ludGVyZmFjZX0gYXN5bmNNb2R1bGUgT2JqZWN0IHdpdGggQXN5bmMgaW50ZXJmYWNlLgogICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjayBDYWxsYmFjayB0byBydW4uCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzZXRDb25maWcoYXN5bmNNb2R1bGUsIGNhbGxiYWNrKSB7CiAgICAgIHRoaXMuX2FzeW5jTW9kdWxlID0gYXN5bmNNb2R1bGU7CiAgICAgIHRoaXMuX2NhbGxiYWNrID0gY2FsbGJhY2s7CiAgICAgIHRoaXMuX3RpbWVyID0gdGhpcy5fYXN5bmNNb2R1bGUucnVuKCgpID0+IHsKICAgICAgICB0aGlzLl90aW1lciA9IG51bGw7CiAgICAgICAgdGhpcy5fY2FsbGJhY2soKTsKICAgICAgfSk7CiAgICB9CiAgICAvKioKICAgICAqIENhbmNlbHMgYW4gYWN0aXZlIGRlYm91bmNlciBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBpdHNlbGYuCiAgICAgKgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgY2FuY2VsKCkgewogICAgICBpZiAodGhpcy5pc0FjdGl2ZSgpKSB7CiAgICAgICAgdGhpcy5fYXN5bmNNb2R1bGUuY2FuY2VsKHRoaXMuX3RpbWVyKTsKICAgICAgICB0aGlzLl90aW1lciA9IG51bGw7CiAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogRmx1c2hlcyBhbiBhY3RpdmUgZGVib3VuY2VyIGFuZCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIGl0c2VsZi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBmbHVzaCgpIHsKICAgICAgaWYgKHRoaXMuaXNBY3RpdmUoKSkgewogICAgICAgIHRoaXMuY2FuY2VsKCk7CiAgICAgICAgdGhpcy5fY2FsbGJhY2soKTsKICAgICAgfQogICAgfQogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRlYm91bmNlciBpcyBhY3RpdmUuCiAgICAgKgogICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhY3RpdmUuCiAgICAgKi8KICAgIGlzQWN0aXZlKCkgewogICAgICByZXR1cm4gdGhpcy5fdGltZXIgIT0gbnVsbDsKICAgIH0KICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGRlYm91bmNlciBpZiBubyBkZWJvdW5jZXIgaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyCiAgICAgKiBvciBpdCBjYW5jZWxzIGFuIGFjdGl2ZSBkZWJvdW5jZXIgb3RoZXJ3aXNlLiBUaGUgZm9sbG93aW5nCiAgICAgKiBleGFtcGxlIHNob3dzIGhvdyBhIGRlYm91bmNlciBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGhpbiBhCiAgICAgKiBtaWNyb3Rhc2sgYW5kICJkZWJvdW5jZWQiIHN1Y2ggdGhhdCB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24gaXMKICAgICAqIGNhbGxlZCBvbmNlLiBBZGQgdGhpcyBtZXRob2QgdG8gYSBjdXN0b20gZWxlbWVudDoKICAgICAqCiAgICAgKiBfZGVib3VuY2VXb3JrKCkgewogICAgICogICB0aGlzLl9kZWJvdW5jZUpvYiA9IFBvbHltZXIuRGVib3VuY2VyLmRlYm91bmNlKHRoaXMuX2RlYm91bmNlSm9iLAogICAgICogICAgICAgUG9seW1lci5Bc3luYy5taWNyb1Rhc2ssICgpID0+IHsKICAgICAqICAgICB0aGlzLl9kb1dvcmsoKTsKICAgICAqICAgfSk7CiAgICAgKiB9CiAgICAgKgogICAgICogSWYgdGhlIGBfZGVib3VuY2VXb3JrYCBtZXRob2QgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGhpbiB0aGUgc2FtZQogICAgICogbWljcm90YXNrLCB0aGUgYF9kb1dvcmtgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZSBhdCB0aGUgbmV4dAogICAgICogbWljcm90YXNrIGNoZWNrcG9pbnQuCiAgICAgKgogICAgICogTm90ZTogSW4gdGVzdGluZyBpdCBpcyBvZnRlbiBjb252ZW5pZW50IHRvIGF2b2lkIGFzeW5jaHJvbnkuIFRvIGFjY29tcGxpc2gKICAgICAqIHRoaXMgd2l0aCBhIGRlYm91bmNlciwgeW91IGNhbiB1c2UgYFBvbHltZXIuZW5xdWV1ZURlYm91bmNlcmAgYW5kCiAgICAgKiBgUG9seW1lci5mbHVzaGAuIEZvciBleGFtcGxlLCBleHRlbmQgdGhlIGFib3ZlIGV4YW1wbGUgYnkgYWRkaW5nCiAgICAgKiBgUG9seW1lci5lbnF1ZXVlRGVib3VuY2VyKHRoaXMuX2RlYm91bmNlSm9iKWAgYXQgdGhlIGVuZCBvZiB0aGUKICAgICAqIGBfZGVib3VuY2VXb3JrYCBtZXRob2QuIFRoZW4gaW4gYSB0ZXN0LCBjYWxsIGBQb2x5bWVyLmZsdXNoYCB0byBlbnN1cmUKICAgICAqIHRoZSBkZWJvdW5jZXIgaGFzIGNvbXBsZXRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0ge0RlYm91bmNlcj99IGRlYm91bmNlciBEZWJvdW5jZXIgb2JqZWN0LgogICAgICogQHBhcmFtIHshQXN5bmNJbnRlcmZhY2V9IGFzeW5jTW9kdWxlIE9iamVjdCB3aXRoIEFzeW5jIGludGVyZmFjZQogICAgICogQHBhcmFtIHtmdW5jdGlvbigpfSBjYWxsYmFjayBDYWxsYmFjayB0byBydW4uCiAgICAgKiBAcmV0dXJuIHshRGVib3VuY2VyfSBSZXR1cm5zIGEgZGVib3VuY2VyIG9iamVjdC4KICAgICAqLwogICAgc3RhdGljIGRlYm91bmNlKGRlYm91bmNlciwgYXN5bmNNb2R1bGUsIGNhbGxiYWNrKSB7CiAgICAgIGlmIChkZWJvdW5jZXIgaW5zdGFuY2VvZiBEZWJvdW5jZXIpIHsKICAgICAgICBkZWJvdW5jZXIuY2FuY2VsKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGVib3VuY2VyID0gbmV3IERlYm91bmNlcigpOwogICAgICB9CiAgICAgIGRlYm91bmNlci5zZXRDb25maWcoYXN5bmNNb2R1bGUsIGNhbGxiYWNrKTsKICAgICAgcmV0dXJuIGRlYm91bmNlcjsKICAgIH0KICB9CgogIC8qKiBAY29uc3QgKi8KICBQb2x5bWVyLkRlYm91bmNlciA9IERlYm91bmNlcjsKfSkoKTsKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgLy8gZGV0ZWN0IG5hdGl2ZSB0b3VjaCBhY3Rpb24gc3VwcG9ydAogIGxldCBIQVNfTkFUSVZFX1RBID0gdHlwZW9mIGRvY3VtZW50LmhlYWQuc3R5bGUudG91Y2hBY3Rpb24gPT09ICdzdHJpbmcnOwogIGxldCBHRVNUVVJFX0tFWSA9ICdfX3BvbHltZXJHZXN0dXJlcyc7CiAgbGV0IEhBTkRMRURfT0JKID0gJ19fcG9seW1lckdlc3R1cmVzSGFuZGxlZCc7CiAgbGV0IFRPVUNIX0FDVElPTiA9ICdfX3BvbHltZXJHZXN0dXJlc1RvdWNoQWN0aW9uJzsKICAvLyByYWRpdXMgZm9yIHRhcCBhbmQgdHJhY2sKICBsZXQgVEFQX0RJU1RBTkNFID0gMjU7CiAgbGV0IFRSQUNLX0RJU1RBTkNFID0gNTsKICAvLyBudW1iZXIgb2YgbGFzdCBOIHRyYWNrIHBvc2l0aW9ucyB0byBrZWVwCiAgbGV0IFRSQUNLX0xFTkdUSCA9IDI7CgogIC8vIERpc2FibGluZyAibW91c2UiIGhhbmRsZXJzIGZvciAyNTAwbXMgaXMgZW5vdWdoCiAgbGV0IE1PVVNFX1RJTUVPVVQgPSAyNTAwOwogIGxldCBNT1VTRV9FVkVOVFMgPSBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAnbW91c2V1cCcsICdjbGljayddOwogIC8vIGFuIGFycmF5IG9mIGJpdG1hc2sgdmFsdWVzIGZvciBtYXBwaW5nIE1vdXNlRXZlbnQud2hpY2ggdG8gTW91c2VFdmVudC5idXR0b25zCiAgbGV0IE1PVVNFX1dISUNIX1RPX0JVVFRPTlMgPSBbMCwgMSwgNCwgMl07CiAgbGV0IE1PVVNFX0hBU19CVVRUT05TID0gKGZ1bmN0aW9uKCkgewogICAgdHJ5IHsKICAgICAgcmV0dXJuIG5ldyBNb3VzZUV2ZW50KCd0ZXN0Jywge2J1dHRvbnM6IDF9KS5idXR0b25zID09PSAxOwogICAgfSBjYXRjaCAoZSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfSkoKTsKCiAgLyoqCiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgUG9zc2libGUgbW91c2UgZXZlbnQgbmFtZQogICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgbW91c2UgZXZlbnQsIGZhbHNlIGlmIG5vdAogICAqLwogIGZ1bmN0aW9uIGlzTW91c2VFdmVudChuYW1lKSB7CiAgICByZXR1cm4gTU9VU0VfRVZFTlRTLmluZGV4T2YobmFtZSkgPiAtMTsKICB9CgogIC8qIGVzbGludCBuby1lbXB0eTogWyJlcnJvciIsIHsgImFsbG93RW1wdHlDYXRjaCI6IHRydWUgfV0gKi8KICAvLyBjaGVjayBmb3IgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMKICBsZXQgU1VQUE9SVFNfUEFTU0lWRSA9IGZhbHNlOwogIChmdW5jdGlvbigpIHsKICAgIHRyeSB7CiAgICAgIGxldCBvcHRzID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAncGFzc2l2ZScsIHtnZXQoKSB7U1VQUE9SVFNfUEFTU0lWRSA9IHRydWU7fX0pOwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG51bGwsIG9wdHMpOwogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndGVzdCcsIG51bGwsIG9wdHMpOwogICAgfSBjYXRjaChlKSB7fQogIH0pKCk7CgogIC8qKgogICAqIEdlbmVyYXRlIHNldHRpbmdzIGZvciBldmVudCBsaXN0ZW5lcnMsIGRlcGVuZGFudCBvbiBgUG9seW1lci5wYXNzaXZlVG91Y2hHZXN0dXJlc2AKICAgKgogICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgRXZlbnQgbmFtZSB0byBkZXRlcm1pbmUgaWYgYHtwYXNzaXZlfWAgb3B0aW9uIGlzIG5lZWRlZAogICAqIEByZXR1cm4ge3twYXNzaXZlOiBib29sZWFufSB8IHVuZGVmaW5lZH0gT3B0aW9ucyB0byB1c2UgZm9yIGFkZEV2ZW50TGlzdGVuZXIgYW5kIHJlbW92ZUV2ZW50TGlzdGVuZXIKICAgKi8KICBmdW5jdGlvbiBQQVNTSVZFX1RPVUNIKGV2ZW50TmFtZSkgewogICAgaWYgKGlzTW91c2VFdmVudChldmVudE5hbWUpIHx8IGV2ZW50TmFtZSA9PT0gJ3RvdWNoZW5kJykgewogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoSEFTX05BVElWRV9UQSAmJiBTVVBQT1JUU19QQVNTSVZFICYmIFBvbHltZXIucGFzc2l2ZVRvdWNoR2VzdHVyZXMpIHsKICAgICAgcmV0dXJuIHtwYXNzaXZlOiB0cnVlfTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybjsKICAgIH0KICB9CgogIC8vIENoZWNrIGZvciB0b3VjaC1vbmx5IGRldmljZXMKICBsZXQgSVNfVE9VQ0hfT05MWSA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86W29hXWR8aG9uZSl8QW5kcm9pZC8pOwoKICBsZXQgR2VzdHVyZVJlY29nbml6ZXIgPSBmdW5jdGlvbigpe307IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMKICAvKiogQHR5cGUge2Z1bmN0aW9uKCk6IHZvaWR9ICovCiAgR2VzdHVyZVJlY29nbml6ZXIucHJvdG90eXBlLnJlc2V0OwogIC8qKiBAdHlwZSB7ZnVuY3Rpb24oTW91c2VFdmVudCk6IHZvaWQgfCB1bmRlZmluZWR9ICovCiAgR2VzdHVyZVJlY29nbml6ZXIucHJvdG90eXBlLm1vdXNlZG93bjsKICAvKiogQHR5cGUgeyhmdW5jdGlvbihNb3VzZUV2ZW50KTogdm9pZCB8IHVuZGVmaW5lZCl9ICovCiAgR2VzdHVyZVJlY29nbml6ZXIucHJvdG90eXBlLm1vdXNlbW92ZTsKICAvKiogQHR5cGUgeyhmdW5jdGlvbihNb3VzZUV2ZW50KTogdm9pZCB8IHVuZGVmaW5lZCl9ICovCiAgR2VzdHVyZVJlY29nbml6ZXIucHJvdG90eXBlLm1vdXNldXA7CiAgLyoqIEB0eXBlIHsoZnVuY3Rpb24oVG91Y2hFdmVudCk6IHZvaWQgfCB1bmRlZmluZWQpfSAqLwogIEdlc3R1cmVSZWNvZ25pemVyLnByb3RvdHlwZS50b3VjaHN0YXJ0OwogIC8qKiBAdHlwZSB7KGZ1bmN0aW9uKFRvdWNoRXZlbnQpOiB2b2lkIHwgdW5kZWZpbmVkKX0gKi8KICBHZXN0dXJlUmVjb2duaXplci5wcm90b3R5cGUudG91Y2htb3ZlOwogIC8qKiBAdHlwZSB7KGZ1bmN0aW9uKFRvdWNoRXZlbnQpOiB2b2lkIHwgdW5kZWZpbmVkKX0gKi8KICBHZXN0dXJlUmVjb2duaXplci5wcm90b3R5cGUudG91Y2hlbmQ7CiAgLyoqIEB0eXBlIHsoZnVuY3Rpb24oTW91c2VFdmVudCk6IHZvaWQgfCB1bmRlZmluZWQpfSAqLwogIEdlc3R1cmVSZWNvZ25pemVyLnByb3RvdHlwZS5jbGljazsKCiAgLy8ga2VlcCB0cmFjayBvZiBhbnkgbGFiZWxzIGhpdCBieSB0aGUgbW91c2VDYW5jZWxsZXIKICAvKiogQHR5cGUgeyFBcnJheTwhSFRNTExhYmVsRWxlbWVudD59ICovCiAgY29uc3QgY2xpY2tlZExhYmVscyA9IFtdOwoKICAvKiogQHR5cGUgeyFPYmplY3Q8Ym9vbGVhbj59ICovCiAgY29uc3QgbGFiZWxsYWJsZSA9IHsKICAgICdidXR0b24nOiB0cnVlLAogICAgJ2lucHV0JzogdHJ1ZSwKICAgICdrZXlnZW4nOiB0cnVlLAogICAgJ21ldGVyJzogdHJ1ZSwKICAgICdvdXRwdXQnOiB0cnVlLAogICAgJ3RleHRhcmVhJzogdHJ1ZSwKICAgICdwcm9ncmVzcyc6IHRydWUsCiAgICAnc2VsZWN0JzogdHJ1ZQogIH07CgogIC8vIERlZmluZWQgYXQgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZm9ybS1jb250cm9sLWluZnJhc3RydWN0dXJlLmh0bWwjZW5hYmxpbmctYW5kLWRpc2FibGluZy1mb3JtLWNvbnRyb2xzOi10aGUtZGlzYWJsZWQtYXR0cmlidXRlCiAgLyoqIEB0eXBlIHshT2JqZWN0PGJvb2xlYW4+fSAqLwogIGNvbnN0IGNhbkJlRGlzYWJsZWQgPSB7CiAgICAnYnV0dG9uJzogdHJ1ZSwKICAgICdjb21tYW5kJzogdHJ1ZSwKICAgICdmaWVsZHNldCc6IHRydWUsCiAgICAnaW5wdXQnOiB0cnVlLAogICAgJ2tleWdlbic6IHRydWUsCiAgICAnb3B0Z3JvdXAnOiB0cnVlLAogICAgJ29wdGlvbic6IHRydWUsCiAgICAnc2VsZWN0JzogdHJ1ZSwKICAgICd0ZXh0YXJlYSc6IHRydWUKICB9OwoKICAvKioKICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbCBFbGVtZW50IHRvIGNoZWNrIGxhYmVsbGluZyBzdGF0dXMKICAgKiBAcmV0dXJuIHtib29sZWFufSBlbGVtZW50IGNhbiBoYXZlIGxhYmVscwogICAqLwogIGZ1bmN0aW9uIGNhbkJlTGFiZWxsZWQoZWwpIHsKICAgIHJldHVybiBsYWJlbGxhYmxlW2VsLmxvY2FsTmFtZV0gfHwgZmFsc2U7CiAgfQoKICAvKioKICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbCBFbGVtZW50IHRoYXQgbWF5IGJlIGxhYmVsbGVkLgogICAqIEByZXR1cm4geyFBcnJheTwhSFRNTExhYmVsRWxlbWVudD59IFJlbGV2YW50IGxhYmVsIGZvciBgZWxgCiAgICovCiAgZnVuY3Rpb24gbWF0Y2hpbmdMYWJlbHMoZWwpIHsKICAgIGxldCBsYWJlbHMgPSBBcnJheS5mcm9tKC8qKiBAdHlwZSB7SFRNTElucHV0RWxlbWVudH0gKi8oZWwpLmxhYmVscyB8fCBbXSk7CiAgICAvLyBJRSBkb2Vzbid0IGhhdmUgYGxhYmVsc2AgYW5kIFNhZmFyaSBkb2Vzbid0IHBvcHVsYXRlIGBsYWJlbHNgCiAgICAvLyBpZiBlbGVtZW50IGlzIGluIGEgc2hhZG93cm9vdC4KICAgIC8vIEluIHRoaXMgaW5zdGFuY2UsIGZpbmRpbmcgdGhlIG5vbi1hbmNlc3RvciBsYWJlbHMgaXMgZW5vdWdoLAogICAgLy8gYXMgdGhlIG1vdXNlQ2FuY2VsbG9yIGNvZGUgd2lsbCBoYW5kbGUgYW5jc3RvciBsYWJlbHMKICAgIGlmICghbGFiZWxzLmxlbmd0aCkgewogICAgICBsYWJlbHMgPSBbXTsKICAgICAgbGV0IHJvb3QgPSBlbC5nZXRSb290Tm9kZSgpOwogICAgICAvLyBpZiB0aGVyZSBpcyBhbiBpZCBvbiBgZWxgLCBjaGVjayBmb3IgYWxsIGxhYmVscyB3aXRoIGEgbWF0Y2hpbmcgYGZvcmAgYXR0cmlidXRlCiAgICAgIGlmIChlbC5pZCkgewogICAgICAgIGxldCBtYXRjaGluZyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbChgbGFiZWxbZm9yID0gJHtlbC5pZH1dYCk7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRjaGluZy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGFiZWxzLnB1c2goLyoqIEB0eXBlIHshSFRNTExhYmVsRWxlbWVudH0gKi8obWF0Y2hpbmdbaV0pKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBsYWJlbHM7CiAgfQoKICAvLyB0b3VjaCB3aWxsIG1ha2Ugc3ludGhldGljIG1vdXNlIGV2ZW50cwogIC8vIGBwcmV2ZW50RGVmYXVsdGAgb24gdG91Y2hlbmQgd2lsbCBjYW5jZWwgdGhlbSwKICAvLyBidXQgdGhpcyBicmVha3MgYDxpbnB1dD5gIGZvY3VzIGFuZCBsaW5rIGNsaWNrcwogIC8vIGRpc2FibGUgbW91c2UgaGFuZGxlcnMgZm9yIE1PVVNFX1RJTUVPVVQgbXMgYWZ0ZXIKICAvLyBhIHRvdWNoZW5kIHRvIGlnbm9yZSBzeW50aGV0aWMgbW91c2UgZXZlbnRzCiAgbGV0IG1vdXNlQ2FuY2VsbGVyID0gZnVuY3Rpb24obW91c2VFdmVudCkgewogICAgLy8gQ2hlY2sgZm9yIHNvdXJjZUNhcGFiaWxpdGllcywgdXNlZCB0byBkaXN0aW5ndWlzaCBzeW50aGV0aWMgZXZlbnRzCiAgICAvLyBpZiBtb3VzZUV2ZW50IGRpZCBub3QgY29tZSBmcm9tIGEgZGV2aWNlIHRoYXQgZmlyZXMgdG91Y2ggZXZlbnRzLAogICAgLy8gaXQgd2FzIG1hZGUgYnkgYSByZWFsIG1vdXNlIGFuZCBzaG91bGQgYmUgY291bnRlZAogICAgLy8gaHR0cDovL3dpY2cuZ2l0aHViLmlvL0lucHV0RGV2aWNlQ2FwYWJpbGl0aWVzLyNkb20taW5wdXRkZXZpY2VjYXBhYmlsaXRpZXMtZmlyZXN0b3VjaGV2ZW50cwogICAgbGV0IHNjID0gbW91c2VFdmVudC5zb3VyY2VDYXBhYmlsaXRpZXM7CiAgICBpZiAoc2MgJiYgIXNjLmZpcmVzVG91Y2hFdmVudHMpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gc2tpcCBzeW50aGV0aWMgbW91c2UgZXZlbnRzCiAgICBtb3VzZUV2ZW50W0hBTkRMRURfT0JKXSA9IHtza2lwOiB0cnVlfTsKICAgIC8vIGRpc2FibGUgImdob3N0IGNsaWNrcyIKICAgIGlmIChtb3VzZUV2ZW50LnR5cGUgPT09ICdjbGljaycpIHsKICAgICAgbGV0IGNsaWNrRnJvbUxhYmVsID0gZmFsc2U7CiAgICAgIGxldCBwYXRoID0gbW91c2VFdmVudC5jb21wb3NlZFBhdGggJiYgbW91c2VFdmVudC5jb21wb3NlZFBhdGgoKTsKICAgICAgaWYgKHBhdGgpIHsKICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIGlmIChwYXRoW2ldLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgewogICAgICAgICAgICBpZiAocGF0aFtpXS5sb2NhbE5hbWUgPT09ICdsYWJlbCcpIHsKICAgICAgICAgICAgICBjbGlja2VkTGFiZWxzLnB1c2gocGF0aFtpXSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FuQmVMYWJlbGxlZChwYXRoW2ldKSkgewogICAgICAgICAgICAgIGxldCBvd25lckxhYmVscyA9IG1hdGNoaW5nTGFiZWxzKHBhdGhbaV0pOwogICAgICAgICAgICAgIC8vIGNoZWNrIGlmIG9uZSBvZiB0aGUgY2xpY2tlZCBsYWJlbHMgaXMgbGFiZWxsaW5nIHRoaXMgZWxlbWVudAogICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgb3duZXJMYWJlbHMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgIGNsaWNrRnJvbUxhYmVsID0gY2xpY2tGcm9tTGFiZWwgfHwgY2xpY2tlZExhYmVscy5pbmRleE9mKG93bmVyTGFiZWxzW2pdKSA+IC0xOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKHBhdGhbaV0gPT09IFBPSU5URVJTVEFURS5tb3VzZS50YXJnZXQpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICAvLyBpZiBvbmUgb2YgdGhlIGNsaWNrZWQgbGFiZWxzIHdhcyBsYWJlbGxpbmcgdGhlIHRhcmdldCBlbGVtZW50LAogICAgICAvLyB0aGlzIGlzIG5vdCBhIGdob3N0IGNsaWNrCiAgICAgIGlmIChjbGlja0Zyb21MYWJlbCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgIG1vdXNlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogQHBhcmFtIHtib29sZWFuPX0gc2V0dXAgVHJ1ZSB0byBhZGQsIGZhbHNlIHRvIHJlbW92ZS4KICAgKiBAcmV0dXJuIHt2b2lkfQogICAqLwogIGZ1bmN0aW9uIHNldHVwVGVhcmRvd25Nb3VzZUNhbmNlbGxlcihzZXR1cCkgewogICAgbGV0IGV2ZW50cyA9IElTX1RPVUNIX09OTFkgPyBbJ2NsaWNrJ10gOiBNT1VTRV9FVkVOVFM7CiAgICBmb3IgKGxldCBpID0gMCwgZW47IGkgPCBldmVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgZW4gPSBldmVudHNbaV07CiAgICAgIGlmIChzZXR1cCkgewogICAgICAgIC8vIHJlc2V0IGNsaWNrTGFiZWxzIGFycmF5CiAgICAgICAgY2xpY2tlZExhYmVscy5sZW5ndGggPSAwOwogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoZW4sIG1vdXNlQ2FuY2VsbGVyLCB0cnVlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGVuLCBtb3VzZUNhbmNlbGxlciwgdHJ1ZSk7CiAgICAgIH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIGlnbm9yZU1vdXNlKGUpIHsKICAgIGlmICghUE9JTlRFUlNUQVRFLm1vdXNlLm1vdXNlSWdub3JlSm9iKSB7CiAgICAgIHNldHVwVGVhcmRvd25Nb3VzZUNhbmNlbGxlcih0cnVlKTsKICAgIH0KICAgIGxldCB1bnNldCA9IGZ1bmN0aW9uKCkgewogICAgICBzZXR1cFRlYXJkb3duTW91c2VDYW5jZWxsZXIoKTsKICAgICAgUE9JTlRFUlNUQVRFLm1vdXNlLnRhcmdldCA9IG51bGw7CiAgICAgIFBPSU5URVJTVEFURS5tb3VzZS5tb3VzZUlnbm9yZUpvYiA9IG51bGw7CiAgICB9OwogICAgUE9JTlRFUlNUQVRFLm1vdXNlLnRhcmdldCA9IGUuY29tcG9zZWRQYXRoKClbMF07CiAgICBQT0lOVEVSU1RBVEUubW91c2UubW91c2VJZ25vcmVKb2IgPSBQb2x5bWVyLkRlYm91bmNlci5kZWJvdW5jZSgKICAgICAgICAgIFBPSU5URVJTVEFURS5tb3VzZS5tb3VzZUlnbm9yZUpvYgogICAgICAgICwgUG9seW1lci5Bc3luYy50aW1lT3V0LmFmdGVyKE1PVVNFX1RJTUVPVVQpCiAgICAgICAgLCB1bnNldCk7CiAgfQoKICAvKioKICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGV2IGV2ZW50IHRvIHRlc3QgZm9yIGxlZnQgbW91c2UgYnV0dG9uIGRvd24KICAgKiBAcmV0dXJuIHtib29sZWFufSBoYXMgbGVmdCBtb3VzZSBidXR0b24gZG93bgogICAqLwogIGZ1bmN0aW9uIGhhc0xlZnRNb3VzZUJ1dHRvbihldikgewogICAgbGV0IHR5cGUgPSBldi50eXBlOwogICAgLy8gZXhpdCBlYXJseSBpZiB0aGUgZXZlbnQgaXMgbm90IGEgbW91c2UgZXZlbnQKICAgIGlmICghaXNNb3VzZUV2ZW50KHR5cGUpKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vIGV2LmJ1dHRvbiBpcyBub3QgcmVsaWFibGUgZm9yIG1vdXNlbW92ZSAoMCBpcyBvdmVybG9hZGVkIGFzIGJvdGggbGVmdCBidXR0b24gYW5kIG5vIGJ1dHRvbnMpCiAgICAvLyBpbnN0ZWFkIHdlIHVzZSBldi5idXR0b25zIChiaXRtYXNrIG9mIGJ1dHRvbnMpIG9yIGZhbGwgYmFjayB0byBldi53aGljaCAoZGVwcmVjYXRlZCwgMCBmb3Igbm8gYnV0dG9ucywgMSBmb3IgbGVmdCBidXR0b24pCiAgICBpZiAodHlwZSA9PT0gJ21vdXNlbW92ZScpIHsKICAgICAgLy8gYWxsb3cgdW5kZWZpbmVkIGZvciB0ZXN0aW5nIGV2ZW50cwogICAgICBsZXQgYnV0dG9ucyA9IGV2LmJ1dHRvbnMgPT09IHVuZGVmaW5lZCA/IDEgOiBldi5idXR0b25zOwogICAgICBpZiAoKGV2IGluc3RhbmNlb2Ygd2luZG93Lk1vdXNlRXZlbnQpICYmICFNT1VTRV9IQVNfQlVUVE9OUykgewogICAgICAgIGJ1dHRvbnMgPSBNT1VTRV9XSElDSF9UT19CVVRUT05TW2V2LndoaWNoXSB8fCAwOwogICAgICB9CiAgICAgIC8vIGJ1dHRvbnMgaXMgYSBiaXRtYXNrLCBjaGVjayB0aGF0IHRoZSBsZWZ0IGJ1dHRvbiBiaXQgaXMgc2V0ICgxKQogICAgICByZXR1cm4gQm9vbGVhbihidXR0b25zICYgMSk7CiAgICB9IGVsc2UgewogICAgICAvLyBhbGxvdyB1bmRlZmluZWQgZm9yIHRlc3RpbmcgZXZlbnRzCiAgICAgIGxldCBidXR0b24gPSBldi5idXR0b24gPT09IHVuZGVmaW5lZCA/IDAgOiBldi5idXR0b247CiAgICAgIC8vIGV2LmJ1dHRvbiBpcyAwIGluIG1vdXNlZG93bi9tb3VzZXVwL2NsaWNrIGZvciBsZWZ0IGJ1dHRvbiBhY3RpdmF0aW9uCiAgICAgIHJldHVybiBidXR0b24gPT09IDA7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBpc1N5bnRoZXRpY0NsaWNrKGV2KSB7CiAgICBpZiAoZXYudHlwZSA9PT0gJ2NsaWNrJykgewogICAgICAvLyBldi5kZXRhaWwgaXMgMCBmb3IgSFRNTEVsZW1lbnQuY2xpY2sgaW4gbW9zdCBicm93c2VycwogICAgICBpZiAoZXYuZGV0YWlsID09PSAwKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgLy8gaW4gdGhlIHdvcnN0IGNhc2UsIGNoZWNrIHRoYXQgdGhlIHgveSBwb3NpdGlvbiBvZiB0aGUgY2xpY2sgaXMgd2l0aGluCiAgICAgIC8vIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHRhcmdldCBvZiB0aGUgZXZlbnQKICAgICAgLy8gVGhhbmtzIElFIDEwID46KAogICAgICBsZXQgdCA9IEdlc3R1cmVzLl9maW5kT3JpZ2luYWxUYXJnZXQoZXYpOwogICAgICAvLyBtYWtlIHN1cmUgdGhlIHRhcmdldCBvZiB0aGUgZXZlbnQgaXMgYW4gZWxlbWVudCBzbyB3ZSBjYW4gdXNlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCwKICAgICAgLy8gaWYgbm90LCBqdXN0IGFzc3VtZSBpdCBpcyBhIHN5bnRoZXRpYyBjbGljawogICAgICBpZiAoIXQubm9kZVR5cGUgfHwgLyoqIEB0eXBlIHtFbGVtZW50fSAqLyh0KS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05PREUpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICBsZXQgYmNyID0gLyoqIEB0eXBlIHtFbGVtZW50fSAqLyh0KS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgLy8gdXNlIHBhZ2UgeC95IHRvIGFjY291bnQgZm9yIHNjcm9sbGluZwogICAgICBsZXQgeCA9IGV2LnBhZ2VYLCB5ID0gZXYucGFnZVk7CiAgICAgIC8vIGV2IGlzIGEgc3ludGhldGljIGNsaWNrIGlmIHRoZSBwb3NpdGlvbiBpcyBvdXRzaWRlIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHRhcmdldAogICAgICByZXR1cm4gISgoeCA+PSBiY3IubGVmdCAmJiB4IDw9IGJjci5yaWdodCkgJiYgKHkgPj0gYmNyLnRvcCAmJiB5IDw9IGJjci5ib3R0b20pKTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CgogIGxldCBQT0lOVEVSU1RBVEUgPSB7CiAgICBtb3VzZTogewogICAgICB0YXJnZXQ6IG51bGwsCiAgICAgIG1vdXNlSWdub3JlSm9iOiBudWxsCiAgICB9LAogICAgdG91Y2g6IHsKICAgICAgeDogMCwKICAgICAgeTogMCwKICAgICAgaWQ6IC0xLAogICAgICBzY3JvbGxEZWNpZGVkOiBmYWxzZQogICAgfQogIH07CgogIGZ1bmN0aW9uIGZpcnN0VG91Y2hBY3Rpb24oZXYpIHsKICAgIGxldCB0YSA9ICdhdXRvJzsKICAgIGxldCBwYXRoID0gZXYuY29tcG9zZWRQYXRoICYmIGV2LmNvbXBvc2VkUGF0aCgpOwogICAgaWYgKHBhdGgpIHsKICAgICAgZm9yIChsZXQgaSA9IDAsIG47IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbiA9IHBhdGhbaV07CiAgICAgICAgaWYgKG5bVE9VQ0hfQUNUSU9OXSkgewogICAgICAgICAgdGEgPSBuW1RPVUNIX0FDVElPTl07CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiB0YTsKICB9CgogIGZ1bmN0aW9uIHRyYWNrRG9jdW1lbnQoc3RhdGVPYmosIG1vdmVmbiwgdXBmbikgewogICAgc3RhdGVPYmoubW92ZWZuID0gbW92ZWZuOwogICAgc3RhdGVPYmoudXBmbiA9IHVwZm47CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3ZlZm4pOwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwZm4pOwogIH0KCiAgZnVuY3Rpb24gdW50cmFja0RvY3VtZW50KHN0YXRlT2JqKSB7CiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBzdGF0ZU9iai5tb3ZlZm4pOwogICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHN0YXRlT2JqLnVwZm4pOwogICAgc3RhdGVPYmoubW92ZWZuID0gbnVsbDsKICAgIHN0YXRlT2JqLnVwZm4gPSBudWxsOwogIH0KCiAgLy8gdXNlIGEgZG9jdW1lbnQtd2lkZSB0b3VjaGVuZCBsaXN0ZW5lciB0byBzdGFydCB0aGUgZ2hvc3QtY2xpY2sgcHJldmVudGlvbiBtZWNoYW5pc20KICAvLyBVc2UgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMsIGlmIHN1cHBvcnRlZCwgdG8gbm90IGFmZmVjdCBzY3JvbGxpbmcgcGVyZm9ybWFuY2UKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGlnbm9yZU1vdXNlLCBTVVBQT1JUU19QQVNTSVZFID8ge3Bhc3NpdmU6IHRydWV9IDogZmFsc2UpOwoKICAvKioKICAgKiBNb2R1bGUgZm9yIGFkZGluZyBsaXN0ZW5lcnMgdG8gYSBub2RlIGZvciB0aGUgZm9sbG93aW5nIG5vcm1hbGl6ZWQKICAgKiBjcm9zcy1wbGF0Zm9ybSAiZ2VzdHVyZSIgZXZlbnRzOgogICAqIC0gYGRvd25gIC0gbW91c2Ugb3IgdG91Y2ggd2VudCBkb3duCiAgICogLSBgdXBgIC0gbW91c2Ugb3IgdG91Y2ggd2VudCB1cAogICAqIC0gYHRhcGAgLSBtb3VzZSBjbGljayBvciBmaW5nZXIgdGFwCiAgICogLSBgdHJhY2tgIC0gbW91c2UgZHJhZyBvciB0b3VjaCBtb3ZlCiAgICoKICAgKiBAbmFtZXNwYWNlCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBNb2R1bGUgZm9yIGFkZGluZyBjcm9zcy1wbGF0Zm9ybSBnZXN0dXJlIGV2ZW50IGxpc3RlbmVycy4KICAgKi8KICBjb25zdCBHZXN0dXJlcyA9IHsKICAgIGdlc3R1cmVzOiB7fSwKICAgIHJlY29nbml6ZXJzOiBbXSwKCiAgICAvKioKICAgICAqIEZpbmRzIHRoZSBlbGVtZW50IHJlbmRlcmVkIG9uIHRoZSBzY3JlZW4gYXQgdGhlIHByb3ZpZGVkIGNvb3JkaW5hdGVzLgogICAgICoKICAgICAqIFNpbWlsYXIgdG8gYGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnRgLCBidXQgcGllcmNlcyB0aHJvdWdoCiAgICAgKiBzaGFkb3cgcm9vdHMuCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuR2VzdHVyZXMKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IEhvcml6b250YWwgcGl4ZWwgY29vcmRpbmF0ZQogICAgICogQHBhcmFtIHtudW1iZXJ9IHkgVmVydGljYWwgcGl4ZWwgY29vcmRpbmF0ZQogICAgICogQHJldHVybiB7RWxlbWVudH0gUmV0dXJucyB0aGUgZGVlcGVzdCBzaGFkb3dSb290IGluY2x1c2l2ZSBlbGVtZW50CiAgICAgKiBmb3VuZCBhdCB0aGUgc2NyZWVuIHBvc2l0aW9uIGdpdmVuLgogICAgICovCiAgICBkZWVwVGFyZ2V0RmluZDogZnVuY3Rpb24oeCwgeSkgewogICAgICBsZXQgbm9kZSA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwgeSk7CiAgICAgIGxldCBuZXh0ID0gbm9kZTsKICAgICAgLy8gdGhpcyBjb2RlIHBhdGggaXMgb25seSB0YWtlbiB3aGVuIG5hdGl2ZSBTaGFkb3dET00gaXMgdXNlZAogICAgICAvLyBpZiB0aGVyZSBpcyBhIHNoYWRvd3Jvb3QsIGl0IG1heSBoYXZlIGEgbm9kZSBhdCB4L3kKICAgICAgLy8gaWYgdGhlcmUgaXMgbm90IGEgc2hhZG93cm9vdCwgZXhpdCB0aGUgbG9vcAogICAgICB3aGlsZSAobmV4dCAmJiBuZXh0LnNoYWRvd1Jvb3QgJiYgIXdpbmRvdy5TaGFkeURPTSkgewogICAgICAgIC8vIGlmIHRoZXJlIGlzIGEgbm9kZSBhdCB4L3kgaW4gdGhlIHNoYWRvd3Jvb3QsIGxvb2sgZGVlcGVyCiAgICAgICAgbGV0IG9sZE5leHQgPSBuZXh0OwogICAgICAgIG5leHQgPSBuZXh0LnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKICAgICAgICAvLyBvbiBTYWZhcmksIGVsZW1lbnRGcm9tUG9pbnQgbWF5IHJldHVybiB0aGUgc2hhZG93Um9vdCBob3N0CiAgICAgICAgaWYgKG9sZE5leHQgPT09IG5leHQpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAobmV4dCkgewogICAgICAgICAgbm9kZSA9IG5leHQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBub2RlOwogICAgfSwKICAgIC8qKgogICAgICogYSBjaGVhcGVyIGNoZWNrIHRoYW4gZXYuY29tcG9zZWRQYXRoKClbMF07CiAgICAgKgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2IEV2ZW50LgogICAgICogQHJldHVybiB7RXZlbnRUYXJnZXR9IFJldHVybnMgdGhlIGV2ZW50IHRhcmdldC4KICAgICAqLwogICAgX2ZpbmRPcmlnaW5hbFRhcmdldDogZnVuY3Rpb24oZXYpIHsKICAgICAgLy8gc2hhZG93ZG9tCiAgICAgIGlmIChldi5jb21wb3NlZFBhdGgpIHsKICAgICAgICBjb25zdCB0YXJnZXRzID0gLyoqIEB0eXBlIHshQXJyYXk8IUV2ZW50VGFyZ2V0Pn0gKi8oZXYuY29tcG9zZWRQYXRoKCkpOwogICAgICAgIC8vIEl0IHNob3VsZG4ndCBiZSwgYnV0IHNvbWV0aW1lcyB0YXJnZXRzIGlzIGVtcHR5ICh3aW5kb3cgb24gU2FmYXJpKS4KICAgICAgICByZXR1cm4gdGFyZ2V0cy5sZW5ndGggPiAwID8gdGFyZ2V0c1swXSA6IGV2LnRhcmdldDsKICAgICAgfQogICAgICAvLyBzaGFkeWRvbQogICAgICByZXR1cm4gZXYudGFyZ2V0OwogICAgfSwKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldiBFdmVudC4KICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIF9oYW5kbGVOYXRpdmU6IGZ1bmN0aW9uKGV2KSB7CiAgICAgIGxldCBoYW5kbGVkOwogICAgICBsZXQgdHlwZSA9IGV2LnR5cGU7CiAgICAgIGxldCBub2RlID0gZXYuY3VycmVudFRhcmdldDsKICAgICAgbGV0IGdvYmogPSBub2RlW0dFU1RVUkVfS0VZXTsKICAgICAgaWYgKCFnb2JqKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGxldCBncyA9IGdvYmpbdHlwZV07CiAgICAgIGlmICghZ3MpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgaWYgKCFldltIQU5ETEVEX09CSl0pIHsKICAgICAgICBldltIQU5ETEVEX09CSl0gPSB7fTsKICAgICAgICBpZiAodHlwZS5zbGljZSgwLCA1KSA9PT0gJ3RvdWNoJykgewogICAgICAgICAgZXYgPSAvKiogQHR5cGUge1RvdWNoRXZlbnR9ICovKGV2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWFzc2lnbgogICAgICAgICAgbGV0IHQgPSBldi5jaGFuZ2VkVG91Y2hlc1swXTsKICAgICAgICAgIGlmICh0eXBlID09PSAndG91Y2hzdGFydCcpIHsKICAgICAgICAgICAgLy8gb25seSBoYW5kbGUgdGhlIGZpcnN0IGZpbmdlcgogICAgICAgICAgICBpZiAoZXYudG91Y2hlcy5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICBQT0lOVEVSU1RBVEUudG91Y2guaWQgPSB0LmlkZW50aWZpZXI7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChQT0lOVEVSU1RBVEUudG91Y2guaWQgIT09IHQuaWRlbnRpZmllcikgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIUhBU19OQVRJVkVfVEEpIHsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICd0b3VjaHN0YXJ0JyB8fCB0eXBlID09PSAndG91Y2htb3ZlJykgewogICAgICAgICAgICAgIEdlc3R1cmVzLl9oYW5kbGVUb3VjaEFjdGlvbihldik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaGFuZGxlZCA9IGV2W0hBTkRMRURfT0JKXTsKICAgICAgLy8gdXNlZCB0byBpZ25vcmUgc3ludGhldGljIG1vdXNlIGV2ZW50cwogICAgICBpZiAoaGFuZGxlZC5za2lwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIC8vIHJlc2V0IHJlY29nbml6ZXIgc3RhdGUKICAgICAgZm9yIChsZXQgaSA9IDAsIHI7IGkgPCBHZXN0dXJlcy5yZWNvZ25pemVycy5sZW5ndGg7IGkrKykgewogICAgICAgIHIgPSBHZXN0dXJlcy5yZWNvZ25pemVyc1tpXTsKICAgICAgICBpZiAoZ3Nbci5uYW1lXSAmJiAhaGFuZGxlZFtyLm5hbWVdKSB7CiAgICAgICAgICBpZiAoci5mbG93ICYmIHIuZmxvdy5zdGFydC5pbmRleE9mKGV2LnR5cGUpID4gLTEgJiYgci5yZXNldCkgewogICAgICAgICAgICByLnJlc2V0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIGVuZm9yY2UgZ2VzdHVyZSByZWNvZ25pemVyIG9yZGVyCiAgICAgIGZvciAobGV0IGkgPSAwLCByOyBpIDwgR2VzdHVyZXMucmVjb2duaXplcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICByID0gR2VzdHVyZXMucmVjb2duaXplcnNbaV07CiAgICAgICAgaWYgKGdzW3IubmFtZV0gJiYgIWhhbmRsZWRbci5uYW1lXSkgewogICAgICAgICAgaGFuZGxlZFtyLm5hbWVdID0gdHJ1ZTsKICAgICAgICAgIHJbdHlwZV0oZXYpOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge1RvdWNoRXZlbnR9IGV2IEV2ZW50LgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgX2hhbmRsZVRvdWNoQWN0aW9uOiBmdW5jdGlvbihldikgewogICAgICBsZXQgdCA9IGV2LmNoYW5nZWRUb3VjaGVzWzBdOwogICAgICBsZXQgdHlwZSA9IGV2LnR5cGU7CiAgICAgIGlmICh0eXBlID09PSAndG91Y2hzdGFydCcpIHsKICAgICAgICBQT0lOVEVSU1RBVEUudG91Y2gueCA9IHQuY2xpZW50WDsKICAgICAgICBQT0lOVEVSU1RBVEUudG91Y2gueSA9IHQuY2xpZW50WTsKICAgICAgICBQT0lOVEVSU1RBVEUudG91Y2guc2Nyb2xsRGVjaWRlZCA9IGZhbHNlOwogICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0b3VjaG1vdmUnKSB7CiAgICAgICAgaWYgKFBPSU5URVJTVEFURS50b3VjaC5zY3JvbGxEZWNpZGVkKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIFBPSU5URVJTVEFURS50b3VjaC5zY3JvbGxEZWNpZGVkID0gdHJ1ZTsKICAgICAgICBsZXQgdGEgPSBmaXJzdFRvdWNoQWN0aW9uKGV2KTsKICAgICAgICBsZXQgcHJldmVudCA9IGZhbHNlOwogICAgICAgIGxldCBkeCA9IE1hdGguYWJzKFBPSU5URVJTVEFURS50b3VjaC54IC0gdC5jbGllbnRYKTsKICAgICAgICBsZXQgZHkgPSBNYXRoLmFicyhQT0lOVEVSU1RBVEUudG91Y2gueSAtIHQuY2xpZW50WSk7CiAgICAgICAgaWYgKCFldi5jYW5jZWxhYmxlKSB7CiAgICAgICAgICAvLyBzY3JvbGxpbmcgaXMgaGFwcGVuaW5nCiAgICAgICAgfSBlbHNlIGlmICh0YSA9PT0gJ25vbmUnKSB7CiAgICAgICAgICBwcmV2ZW50ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgaWYgKHRhID09PSAncGFuLXgnKSB7CiAgICAgICAgICBwcmV2ZW50ID0gZHkgPiBkeDsKICAgICAgICB9IGVsc2UgaWYgKHRhID09PSAncGFuLXknKSB7CiAgICAgICAgICBwcmV2ZW50ID0gZHggPiBkeTsKICAgICAgICB9CiAgICAgICAgaWYgKHByZXZlbnQpIHsKICAgICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIEdlc3R1cmVzLnByZXZlbnQoJ3RyYWNrJyk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAoKICAgIC8qKgogICAgICogQWRkcyBhbiBldmVudCBsaXN0ZW5lciB0byBhIG5vZGUgZm9yIHRoZSBnaXZlbiBnZXN0dXJlIHR5cGUuCiAgICAgKgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuR2VzdHVyZXMKICAgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUgTm9kZSB0byBhZGQgbGlzdGVuZXIgb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldlR5cGUgR2VzdHVyZSB0eXBlOiBgZG93bmAsIGB1cGAsIGB0cmFja2AsIG9yIGB0YXBgCiAgICAgKiBAcGFyYW0geyFmdW5jdGlvbighRXZlbnQpOnZvaWR9IGhhbmRsZXIgRXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24gdG8gY2FsbAogICAgICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGEgZ2VzdHVyZSBldmVudCBsaXN0ZW5lciB3YXMgYWRkZWQuCiAgICAgKiBAdGhpcyB7R2VzdHVyZXN9CiAgICAgKi8KICAgIGFkZExpc3RlbmVyOiBmdW5jdGlvbihub2RlLCBldlR5cGUsIGhhbmRsZXIpIHsKICAgICAgaWYgKHRoaXMuZ2VzdHVyZXNbZXZUeXBlXSkgewogICAgICAgIHRoaXMuX2FkZChub2RlLCBldlR5cGUsIGhhbmRsZXIpOwogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZW1vdmVzIGFuIGV2ZW50IGxpc3RlbmVyIGZyb20gYSBub2RlIGZvciB0aGUgZ2l2ZW4gZ2VzdHVyZSB0eXBlLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkdlc3R1cmVzCiAgICAgKiBAcGFyYW0geyFOb2RlfSBub2RlIE5vZGUgdG8gcmVtb3ZlIGxpc3RlbmVyIGZyb20KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldlR5cGUgR2VzdHVyZSB0eXBlOiBgZG93bmAsIGB1cGAsIGB0cmFja2AsIG9yIGB0YXBgCiAgICAgKiBAcGFyYW0geyFmdW5jdGlvbighRXZlbnQpOnZvaWR9IGhhbmRsZXIgRXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24gcHJldmlvdXNseSBwYXNzZWQgdG8KICAgICAqICBgYWRkTGlzdGVuZXJgLgogICAgICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGEgZ2VzdHVyZSBldmVudCBsaXN0ZW5lciB3YXMgcmVtb3ZlZC4KICAgICAqIEB0aGlzIHtHZXN0dXJlc30KICAgICAqLwogICAgcmVtb3ZlTGlzdGVuZXI6IGZ1bmN0aW9uKG5vZGUsIGV2VHlwZSwgaGFuZGxlcikgewogICAgICBpZiAodGhpcy5nZXN0dXJlc1tldlR5cGVdKSB7CiAgICAgICAgdGhpcy5fcmVtb3ZlKG5vZGUsIGV2VHlwZSwgaGFuZGxlcik7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKCiAgICAvKioKICAgICAqIGF1dG9tYXRlIHRoZSBldmVudCBsaXN0ZW5lcnMgZm9yIHRoZSBuYXRpdmUgZXZlbnRzCiAgICAgKgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7IUhUTUxFbGVtZW50fSBub2RlIE5vZGUgb24gd2hpY2ggdG8gYWRkIHRoZSBldmVudC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldlR5cGUgRXZlbnQgdHlwZSB0byBhZGQuCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCFFdmVudCl9IGhhbmRsZXIgRXZlbnQgaGFuZGxlciBmdW5jdGlvbi4KICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKiBAdGhpcyB7R2VzdHVyZXN9CiAgICAgKi8KICAgIF9hZGQ6IGZ1bmN0aW9uKG5vZGUsIGV2VHlwZSwgaGFuZGxlcikgewogICAgICBsZXQgcmVjb2duaXplciA9IHRoaXMuZ2VzdHVyZXNbZXZUeXBlXTsKICAgICAgbGV0IGRlcHMgPSByZWNvZ25pemVyLmRlcHM7CiAgICAgIGxldCBuYW1lID0gcmVjb2duaXplci5uYW1lOwogICAgICBsZXQgZ29iaiA9IG5vZGVbR0VTVFVSRV9LRVldOwogICAgICBpZiAoIWdvYmopIHsKICAgICAgICBub2RlW0dFU1RVUkVfS0VZXSA9IGdvYmogPSB7fTsKICAgICAgfQogICAgICBmb3IgKGxldCBpID0gMCwgZGVwLCBnZDsgaSA8IGRlcHMubGVuZ3RoOyBpKyspIHsKICAgICAgICBkZXAgPSBkZXBzW2ldOwogICAgICAgIC8vIGRvbid0IGFkZCBtb3VzZSBoYW5kbGVycyBvbiBpT1MgYmVjYXVzZSB0aGV5IGNhdXNlIGdyYXkgc2VsZWN0aW9uIG92ZXJsYXlzCiAgICAgICAgaWYgKElTX1RPVUNIX09OTFkgJiYgaXNNb3VzZUV2ZW50KGRlcCkgJiYgZGVwICE9PSAnY2xpY2snKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZ2QgPSBnb2JqW2RlcF07CiAgICAgICAgaWYgKCFnZCkgewogICAgICAgICAgZ29ialtkZXBdID0gZ2QgPSB7X2NvdW50OiAwfTsKICAgICAgICB9CiAgICAgICAgaWYgKGdkLl9jb3VudCA9PT0gMCkgewogICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGRlcCwgdGhpcy5faGFuZGxlTmF0aXZlLCBQQVNTSVZFX1RPVUNIKGRlcCkpOwogICAgICAgIH0KICAgICAgICBnZFtuYW1lXSA9IChnZFtuYW1lXSB8fCAwKSArIDE7CiAgICAgICAgZ2QuX2NvdW50ID0gKGdkLl9jb3VudCB8fCAwKSArIDE7CiAgICAgIH0KICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKGV2VHlwZSwgaGFuZGxlcik7CiAgICAgIGlmIChyZWNvZ25pemVyLnRvdWNoQWN0aW9uKSB7CiAgICAgICAgdGhpcy5zZXRUb3VjaEFjdGlvbihub2RlLCByZWNvZ25pemVyLnRvdWNoQWN0aW9uKTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIGF1dG9tYXRlIGV2ZW50IGxpc3RlbmVyIHJlbW92YWwgZm9yIG5hdGl2ZSBldmVudHMKICAgICAqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQHBhcmFtIHshSFRNTEVsZW1lbnR9IG5vZGUgTm9kZSBvbiB3aGljaCB0byByZW1vdmUgdGhlIGV2ZW50LgogICAgICogQHBhcmFtIHtzdHJpbmd9IGV2VHlwZSBFdmVudCB0eXBlIHRvIHJlbW92ZS4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oRXZlbnQ/KX0gaGFuZGxlciBFdmVudCBoYW5kbGVyIGZ1bmN0aW9uLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqIEB0aGlzIHtHZXN0dXJlc30KICAgICAqLwogICAgX3JlbW92ZTogZnVuY3Rpb24obm9kZSwgZXZUeXBlLCBoYW5kbGVyKSB7CiAgICAgIGxldCByZWNvZ25pemVyID0gdGhpcy5nZXN0dXJlc1tldlR5cGVdOwogICAgICBsZXQgZGVwcyA9IHJlY29nbml6ZXIuZGVwczsKICAgICAgbGV0IG5hbWUgPSByZWNvZ25pemVyLm5hbWU7CiAgICAgIGxldCBnb2JqID0gbm9kZVtHRVNUVVJFX0tFWV07CiAgICAgIGlmIChnb2JqKSB7CiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGRlcCwgZ2Q7IGkgPCBkZXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBkZXAgPSBkZXBzW2ldOwogICAgICAgICAgZ2QgPSBnb2JqW2RlcF07CiAgICAgICAgICBpZiAoZ2QgJiYgZ2RbbmFtZV0pIHsKICAgICAgICAgICAgZ2RbbmFtZV0gPSAoZ2RbbmFtZV0gfHwgMSkgLSAxOwogICAgICAgICAgICBnZC5fY291bnQgPSAoZ2QuX2NvdW50IHx8IDEpIC0gMTsKICAgICAgICAgICAgaWYgKGdkLl9jb3VudCA9PT0gMCkgewogICAgICAgICAgICAgIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihkZXAsIHRoaXMuX2hhbmRsZU5hdGl2ZSwgUEFTU0lWRV9UT1VDSChkZXApKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBub2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZUeXBlLCBoYW5kbGVyKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgYSBuZXcgZ2VzdHVyZSBldmVudCByZWNvZ25pemVyIGZvciBhZGRpbmcgbmV3IGN1c3RvbQogICAgICogZ2VzdHVyZSBldmVudCB0eXBlcy4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5HZXN0dXJlcwogICAgICogQHBhcmFtIHshR2VzdHVyZVJlY29nbml6ZXJ9IHJlY29nIEdlc3R1cmUgcmVjb2duaXplciBkZXNjcmlwdG9yCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHRoaXMge0dlc3R1cmVzfQogICAgICovCiAgICByZWdpc3RlcjogZnVuY3Rpb24ocmVjb2cpIHsKICAgICAgdGhpcy5yZWNvZ25pemVycy5wdXNoKHJlY29nKTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWNvZy5lbWl0cy5sZW5ndGg7IGkrKykgewogICAgICAgIHRoaXMuZ2VzdHVyZXNbcmVjb2cuZW1pdHNbaV1dID0gcmVjb2c7CiAgICAgIH0KICAgIH0sCgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQHBhcmFtIHtzdHJpbmd9IGV2TmFtZSBFdmVudCBuYW1lLgogICAgICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIHRoZSBnZXN0dXJlIGZvciB0aGUgZ2l2ZW4gZXZlbnQgbmFtZS4KICAgICAqIEB0aGlzIHtHZXN0dXJlc30KICAgICAqLwogICAgX2ZpbmRSZWNvZ25pemVyQnlFdmVudDogZnVuY3Rpb24oZXZOYW1lKSB7CiAgICAgIGZvciAobGV0IGkgPSAwLCByOyBpIDwgdGhpcy5yZWNvZ25pemVycy5sZW5ndGg7IGkrKykgewogICAgICAgIHIgPSB0aGlzLnJlY29nbml6ZXJzW2ldOwogICAgICAgIGZvciAobGV0IGogPSAwLCBuOyBqIDwgci5lbWl0cy5sZW5ndGg7IGorKykgewogICAgICAgICAgbiA9IHIuZW1pdHNbal07CiAgICAgICAgICBpZiAobiA9PT0gZXZOYW1lKSB7CiAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCgogICAgLyoqCiAgICAgKiBTZXRzIHNjcm9sbGluZyBkaXJlY3Rpb24gb24gbm9kZS4KICAgICAqCiAgICAgKiBUaGlzIHZhbHVlIGlzIGNoZWNrZWQgb24gZmlyc3QgbW92ZSwgdGh1cyBpdCBzaG91bGQgYmUgY2FsbGVkIHByaW9yIHRvCiAgICAgKiBhZGRpbmcgZXZlbnQgbGlzdGVuZXJzLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkdlc3R1cmVzCiAgICAgKiBAcGFyYW0geyFFbGVtZW50fSBub2RlIE5vZGUgdG8gc2V0IHRvdWNoIGFjdGlvbiBzZXR0aW5nIG9uCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgVG91Y2ggYWN0aW9uIHZhbHVlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBzZXRUb3VjaEFjdGlvbjogZnVuY3Rpb24obm9kZSwgdmFsdWUpIHsKICAgICAgaWYgKEhBU19OQVRJVkVfVEEpIHsKICAgICAgICAvLyBOT1RFOiBhZGQgdG91Y2hBY3Rpb24gYXN5bmMgc28gdGhhdCBldmVudHMgY2FuIGJlIGFkZGVkIGluCiAgICAgICAgLy8gY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3JzLiBPdGhlcndpc2Ugd2UgcnVuIGFmb3VsIG9mIGN1c3RvbQogICAgICAgIC8vIGVsZW1lbnRzIHJlc3RyaWN0aW9uIGFnYWluc3Qgc2V0dGluZ3MgYXR0cmlidXRlcyAoc3R5bGUpIGluIHRoZQogICAgICAgIC8vIGNvbnN0cnVjdG9yLgogICAgICAgIFBvbHltZXIuQXN5bmMubWljcm9UYXNrLnJ1bigoKSA9PiB7CiAgICAgICAgICBub2RlLnN0eWxlLnRvdWNoQWN0aW9uID0gdmFsdWU7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgbm9kZVtUT1VDSF9BQ1RJT05dID0gdmFsdWU7CiAgICB9LAoKICAgIC8qKgogICAgICogRGlzcGF0Y2hlcyBhbiBldmVudCBvbiB0aGUgYHRhcmdldGAgZWxlbWVudCBvZiBgdHlwZWAgd2l0aCB0aGUgZ2l2ZW4KICAgICAqIGBkZXRhaWxgLgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7IUV2ZW50VGFyZ2V0fSB0YXJnZXQgVGhlIGVsZW1lbnQgb24gd2hpY2ggdG8gZmlyZSBhbiBldmVudC4KICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlIFRoZSB0eXBlIG9mIGV2ZW50IHRvIGZpcmUuCiAgICAgKiBAcGFyYW0geyFPYmplY3Q9fSBkZXRhaWwgVGhlIGRldGFpbCBvYmplY3QgdG8gcG9wdWxhdGUgb24gdGhlIGV2ZW50LgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgX2ZpcmU6IGZ1bmN0aW9uKHRhcmdldCwgdHlwZSwgZGV0YWlsKSB7CiAgICAgIGxldCBldiA9IG5ldyBFdmVudCh0eXBlLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pOwogICAgICBldi5kZXRhaWwgPSBkZXRhaWw7CiAgICAgIHRhcmdldC5kaXNwYXRjaEV2ZW50KGV2KTsKICAgICAgLy8gZm9yd2FyZCBgcHJldmVudERlZmF1bHRgIGluIGEgY2xlYW4gd2F5CiAgICAgIGlmIChldi5kZWZhdWx0UHJldmVudGVkKSB7CiAgICAgICAgbGV0IHByZXZlbnRlciA9IGRldGFpbC5wcmV2ZW50ZXIgfHwgZGV0YWlsLnNvdXJjZUV2ZW50OwogICAgICAgIGlmIChwcmV2ZW50ZXIgJiYgcHJldmVudGVyLnByZXZlbnREZWZhdWx0KSB7CiAgICAgICAgICBwcmV2ZW50ZXIucHJldmVudERlZmF1bHQoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCgogICAgLyoqCiAgICAgKiBQcmV2ZW50cyB0aGUgZGlzcGF0Y2ggYW5kIGRlZmF1bHQgYWN0aW9uIG9mIHRoZSBnaXZlbiBldmVudCBuYW1lLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkdlc3R1cmVzCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZOYW1lIEV2ZW50IG5hbWUuCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHRoaXMge0dlc3R1cmVzfQogICAgICovCiAgICBwcmV2ZW50OiBmdW5jdGlvbihldk5hbWUpIHsKICAgICAgbGV0IHJlY29nbml6ZXIgPSB0aGlzLl9maW5kUmVjb2duaXplckJ5RXZlbnQoZXZOYW1lKTsKICAgICAgaWYgKHJlY29nbml6ZXIuaW5mbykgewogICAgICAgIHJlY29nbml6ZXIuaW5mby5wcmV2ZW50ID0gdHJ1ZTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIFJlc2V0IHRoZSAyNTAwbXMgdGltZW91dCBvbiBwcm9jZXNzaW5nIG1vdXNlIGlucHV0IGFmdGVyIGRldGVjdGluZyB0b3VjaCBpbnB1dC4KICAgICAqCiAgICAgKiBUb3VjaCBpbnB1dHMgY3JlYXRlIHN5bnRoZXNpemVkIG1vdXNlIGlucHV0cyBhbnl3aGVyZSBmcm9tIDAgdG8gMjAwMG1zIGFmdGVyIHRoZSB0b3VjaC4KICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBkdXJpbmcgdGVzdGluZyB3aXRoIHNpbXVsYXRlZCB0b3VjaCBpbnB1dHMuCiAgICAgKiBDYWxsaW5nIHRoaXMgbWV0aG9kIGluIHByb2R1Y3Rpb24gbWF5IGNhdXNlIGR1cGxpY2F0ZSB0YXBzIG9yIG90aGVyIEdlc3R1cmVzLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLkdlc3R1cmVzCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICByZXNldE1vdXNlQ2FuY2VsbGVyOiBmdW5jdGlvbigpIHsKICAgICAgaWYgKFBPSU5URVJTVEFURS5tb3VzZS5tb3VzZUlnbm9yZUpvYikgewogICAgICAgIFBPSU5URVJTVEFURS5tb3VzZS5tb3VzZUlnbm9yZUpvYi5mbHVzaCgpOwogICAgICB9CiAgICB9CiAgfTsKCiAgLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi8KCiAgR2VzdHVyZXMucmVnaXN0ZXIoewogICAgbmFtZTogJ2Rvd251cCcsCiAgICBkZXBzOiBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0JywgJ3RvdWNoZW5kJ10sCiAgICBmbG93OiB7CiAgICAgIHN0YXJ0OiBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J10sCiAgICAgIGVuZDogWydtb3VzZXVwJywgJ3RvdWNoZW5kJ10KICAgIH0sCiAgICBlbWl0czogWydkb3duJywgJ3VwJ10sCgogICAgaW5mbzogewogICAgICBtb3ZlZm46IG51bGwsCiAgICAgIHVwZm46IG51bGwKICAgIH0sCgogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgIHVudHJhY2tEb2N1bWVudCh0aGlzLmluZm8pOwogICAgfSwKCiAgICAvKioKICAgICAqIEB0aGlzIHtHZXN0dXJlUmVjb2duaXplcn0KICAgICAqIEBwYXJhbSB7TW91c2VFdmVudH0gZQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgbW91c2Vkb3duOiBmdW5jdGlvbihlKSB7CiAgICAgIGlmICghaGFzTGVmdE1vdXNlQnV0dG9uKGUpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGxldCB0ID0gR2VzdHVyZXMuX2ZpbmRPcmlnaW5hbFRhcmdldChlKTsKICAgICAgbGV0IHNlbGYgPSB0aGlzOwogICAgICBsZXQgbW92ZWZuID0gZnVuY3Rpb24gbW92ZWZuKGUpIHsKICAgICAgICBpZiAoIWhhc0xlZnRNb3VzZUJ1dHRvbihlKSkgewogICAgICAgICAgc2VsZi5fZmlyZSgndXAnLCB0LCBlKTsKICAgICAgICAgIHVudHJhY2tEb2N1bWVudChzZWxmLmluZm8pOwogICAgICAgIH0KICAgICAgfTsKICAgICAgbGV0IHVwZm4gPSBmdW5jdGlvbiB1cGZuKGUpIHsKICAgICAgICBpZiAoaGFzTGVmdE1vdXNlQnV0dG9uKGUpKSB7CiAgICAgICAgICBzZWxmLl9maXJlKCd1cCcsIHQsIGUpOwogICAgICAgIH0KICAgICAgICB1bnRyYWNrRG9jdW1lbnQoc2VsZi5pbmZvKTsKICAgICAgfTsKICAgICAgdHJhY2tEb2N1bWVudCh0aGlzLmluZm8sIG1vdmVmbiwgdXBmbik7CiAgICAgIHRoaXMuX2ZpcmUoJ2Rvd24nLCB0LCBlKTsKICAgIH0sCiAgICAvKioKICAgICAqIEB0aGlzIHtHZXN0dXJlUmVjb2duaXplcn0KICAgICAqIEBwYXJhbSB7VG91Y2hFdmVudH0gZQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgdG91Y2hzdGFydDogZnVuY3Rpb24oZSkgewogICAgICB0aGlzLl9maXJlKCdkb3duJywgR2VzdHVyZXMuX2ZpbmRPcmlnaW5hbFRhcmdldChlKSwgZS5jaGFuZ2VkVG91Y2hlc1swXSwgZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcGFyYW0ge1RvdWNoRXZlbnR9IGUKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIHRvdWNoZW5kOiBmdW5jdGlvbihlKSB7CiAgICAgIHRoaXMuX2ZpcmUoJ3VwJywgR2VzdHVyZXMuX2ZpbmRPcmlnaW5hbFRhcmdldChlKSwgZS5jaGFuZ2VkVG91Y2hlc1swXSwgZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQogICAgICogQHBhcmFtIHshRXZlbnRUYXJnZXR9IHRhcmdldAogICAgICogQHBhcmFtIHtFdmVudH0gZXZlbnQKICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IHByZXZlbnRlcgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgX2ZpcmU6IGZ1bmN0aW9uKHR5cGUsIHRhcmdldCwgZXZlbnQsIHByZXZlbnRlcikgewogICAgICBHZXN0dXJlcy5fZmlyZSh0YXJnZXQsIHR5cGUsIHsKICAgICAgICB4OiBldmVudC5jbGllbnRYLAogICAgICAgIHk6IGV2ZW50LmNsaWVudFksCiAgICAgICAgc291cmNlRXZlbnQ6IGV2ZW50LAogICAgICAgIHByZXZlbnRlcjogcHJldmVudGVyLAogICAgICAgIHByZXZlbnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIHJldHVybiBHZXN0dXJlcy5wcmV2ZW50KGUpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfSk7CgogIEdlc3R1cmVzLnJlZ2lzdGVyKHsKICAgIG5hbWU6ICd0cmFjaycsCiAgICB0b3VjaEFjdGlvbjogJ25vbmUnLAogICAgZGVwczogWydtb3VzZWRvd24nLCAndG91Y2hzdGFydCcsICd0b3VjaG1vdmUnLCAndG91Y2hlbmQnXSwKICAgIGZsb3c6IHsKICAgICAgc3RhcnQ6IFsnbW91c2Vkb3duJywgJ3RvdWNoc3RhcnQnXSwKICAgICAgZW5kOiBbJ21vdXNldXAnLCAndG91Y2hlbmQnXQogICAgfSwKICAgIGVtaXRzOiBbJ3RyYWNrJ10sCgogICAgaW5mbzogewogICAgICB4OiAwLAogICAgICB5OiAwLAogICAgICBzdGF0ZTogJ3N0YXJ0JywKICAgICAgc3RhcnRlZDogZmFsc2UsCiAgICAgIG1vdmVzOiBbXSwKICAgICAgLyoqIEB0aGlzIHtHZXN0dXJlUmVjb2duaXplcn0gKi8KICAgICAgYWRkTW92ZTogZnVuY3Rpb24obW92ZSkgewogICAgICAgIGlmICh0aGlzLm1vdmVzLmxlbmd0aCA+IFRSQUNLX0xFTkdUSCkgewogICAgICAgICAgdGhpcy5tb3Zlcy5zaGlmdCgpOwogICAgICAgIH0KICAgICAgICB0aGlzLm1vdmVzLnB1c2gobW92ZSk7CiAgICAgIH0sCiAgICAgIG1vdmVmbjogbnVsbCwKICAgICAgdXBmbjogbnVsbCwKICAgICAgcHJldmVudDogZmFsc2UKICAgIH0sCgogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICByZXNldDogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuaW5mby5zdGF0ZSA9ICdzdGFydCc7CiAgICAgIHRoaXMuaW5mby5zdGFydGVkID0gZmFsc2U7CiAgICAgIHRoaXMuaW5mby5tb3ZlcyA9IFtdOwogICAgICB0aGlzLmluZm8ueCA9IDA7CiAgICAgIHRoaXMuaW5mby55ID0gMDsKICAgICAgdGhpcy5pbmZvLnByZXZlbnQgPSBmYWxzZTsKICAgICAgdW50cmFja0RvY3VtZW50KHRoaXMuaW5mbyk7CiAgICB9LAoKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHtudW1iZXJ9IHgKICAgICAqIEBwYXJhbSB7bnVtYmVyfSB5CiAgICAgKiBAcmV0dXJuIHtib29sZWFufQogICAgICovCiAgICBoYXNNb3ZlZEVub3VnaDogZnVuY3Rpb24oeCwgeSkgewogICAgICBpZiAodGhpcy5pbmZvLnByZXZlbnQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaW5mby5zdGFydGVkKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgbGV0IGR4ID0gTWF0aC5hYnModGhpcy5pbmZvLnggLSB4KTsKICAgICAgbGV0IGR5ID0gTWF0aC5hYnModGhpcy5pbmZvLnkgLSB5KTsKICAgICAgcmV0dXJuIChkeCA+PSBUUkFDS19ESVNUQU5DRSB8fCBkeSA+PSBUUkFDS19ESVNUQU5DRSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGUKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIG1vdXNlZG93bjogZnVuY3Rpb24oZSkgewogICAgICBpZiAoIWhhc0xlZnRNb3VzZUJ1dHRvbihlKSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBsZXQgdCA9IEdlc3R1cmVzLl9maW5kT3JpZ2luYWxUYXJnZXQoZSk7CiAgICAgIGxldCBzZWxmID0gdGhpczsKICAgICAgbGV0IG1vdmVmbiA9IGZ1bmN0aW9uIG1vdmVmbihlKSB7CiAgICAgICAgbGV0IHggPSBlLmNsaWVudFgsIHkgPSBlLmNsaWVudFk7CiAgICAgICAgaWYgKHNlbGYuaGFzTW92ZWRFbm91Z2goeCwgeSkpIHsKICAgICAgICAgIC8vIGZpcnN0IG1vdmUgaXMgJ3N0YXJ0Jywgc3Vic2VxdWVudCBtb3ZlcyBhcmUgJ21vdmUnLCBtb3VzZXVwIGlzICdlbmQnCiAgICAgICAgICBzZWxmLmluZm8uc3RhdGUgPSBzZWxmLmluZm8uc3RhcnRlZCA/IChlLnR5cGUgPT09ICdtb3VzZXVwJyA/ICdlbmQnIDogJ3RyYWNrJykgOiAnc3RhcnQnOwogICAgICAgICAgaWYgKHNlbGYuaW5mby5zdGF0ZSA9PT0gJ3N0YXJ0JykgewogICAgICAgICAgICAvLyBpZiBhbmQgb25seSBpZiB0cmFja2luZywgYWx3YXlzIHByZXZlbnQgdGFwCiAgICAgICAgICAgIEdlc3R1cmVzLnByZXZlbnQoJ3RhcCcpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZi5pbmZvLmFkZE1vdmUoe3g6IHgsIHk6IHl9KTsKICAgICAgICAgIGlmICghaGFzTGVmdE1vdXNlQnV0dG9uKGUpKSB7CiAgICAgICAgICAgIC8vIGFsd2F5cyBfZmlyZSAiZW5kIgogICAgICAgICAgICBzZWxmLmluZm8uc3RhdGUgPSAnZW5kJzsKICAgICAgICAgICAgdW50cmFja0RvY3VtZW50KHNlbGYuaW5mbyk7CiAgICAgICAgICB9CiAgICAgICAgICBzZWxmLl9maXJlKHQsIGUpOwogICAgICAgICAgc2VsZi5pbmZvLnN0YXJ0ZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfTsKICAgICAgbGV0IHVwZm4gPSBmdW5jdGlvbiB1cGZuKGUpIHsKICAgICAgICBpZiAoc2VsZi5pbmZvLnN0YXJ0ZWQpIHsKICAgICAgICAgIG1vdmVmbihlKTsKICAgICAgICB9CgogICAgICAgIC8vIHJlbW92ZSB0aGUgdGVtcG9yYXJ5IGxpc3RlbmVycwogICAgICAgIHVudHJhY2tEb2N1bWVudChzZWxmLmluZm8pOwogICAgICB9OwogICAgICAvLyBhZGQgdGVtcG9yYXJ5IGRvY3VtZW50IGxpc3RlbmVycyBhcyBtb3VzZSByZXRhcmdldHMKICAgICAgdHJhY2tEb2N1bWVudCh0aGlzLmluZm8sIG1vdmVmbiwgdXBmbik7CiAgICAgIHRoaXMuaW5mby54ID0gZS5jbGllbnRYOwogICAgICB0aGlzLmluZm8ueSA9IGUuY2xpZW50WTsKICAgIH0sCiAgICAvKioKICAgICAqIEB0aGlzIHtHZXN0dXJlUmVjb2duaXplcn0KICAgICAqIEBwYXJhbSB7VG91Y2hFdmVudH0gZQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgdG91Y2hzdGFydDogZnVuY3Rpb24oZSkgewogICAgICBsZXQgY3QgPSBlLmNoYW5nZWRUb3VjaGVzWzBdOwogICAgICB0aGlzLmluZm8ueCA9IGN0LmNsaWVudFg7CiAgICAgIHRoaXMuaW5mby55ID0gY3QuY2xpZW50WTsKICAgIH0sCiAgICAvKioKICAgICAqIEB0aGlzIHtHZXN0dXJlUmVjb2duaXplcn0KICAgICAqIEBwYXJhbSB7VG91Y2hFdmVudH0gZQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgdG91Y2htb3ZlOiBmdW5jdGlvbihlKSB7CiAgICAgIGxldCB0ID0gR2VzdHVyZXMuX2ZpbmRPcmlnaW5hbFRhcmdldChlKTsKICAgICAgbGV0IGN0ID0gZS5jaGFuZ2VkVG91Y2hlc1swXTsKICAgICAgbGV0IHggPSBjdC5jbGllbnRYLCB5ID0gY3QuY2xpZW50WTsKICAgICAgaWYgKHRoaXMuaGFzTW92ZWRFbm91Z2goeCwgeSkpIHsKICAgICAgICBpZiAodGhpcy5pbmZvLnN0YXRlID09PSAnc3RhcnQnKSB7CiAgICAgICAgICAvLyBpZiBhbmQgb25seSBpZiB0cmFja2luZywgYWx3YXlzIHByZXZlbnQgdGFwCiAgICAgICAgICBHZXN0dXJlcy5wcmV2ZW50KCd0YXAnKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5pbmZvLmFkZE1vdmUoe3g6IHgsIHk6IHl9KTsKICAgICAgICB0aGlzLl9maXJlKHQsIGN0KTsKICAgICAgICB0aGlzLmluZm8uc3RhdGUgPSAndHJhY2snOwogICAgICAgIHRoaXMuaW5mby5zdGFydGVkID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHtUb3VjaEV2ZW50fSBlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICB0b3VjaGVuZDogZnVuY3Rpb24oZSkgewogICAgICBsZXQgdCA9IEdlc3R1cmVzLl9maW5kT3JpZ2luYWxUYXJnZXQoZSk7CiAgICAgIGxldCBjdCA9IGUuY2hhbmdlZFRvdWNoZXNbMF07CiAgICAgIC8vIG9ubHkgdHJhY2tlbmQgaWYgdHJhY2sgd2FzIHN0YXJ0ZWQgYW5kIG5vdCBhYm9ydGVkCiAgICAgIGlmICh0aGlzLmluZm8uc3RhcnRlZCkgewogICAgICAgIC8vIHJlc2V0IHN0YXJ0ZWQgc3RhdGUgb24gdXAKICAgICAgICB0aGlzLmluZm8uc3RhdGUgPSAnZW5kJzsKICAgICAgICB0aGlzLmluZm8uYWRkTW92ZSh7eDogY3QuY2xpZW50WCwgeTogY3QuY2xpZW50WX0pOwogICAgICAgIHRoaXMuX2ZpcmUodCwgY3QsIGUpOwogICAgICB9CiAgICB9LAoKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHshRXZlbnRUYXJnZXR9IHRhcmdldAogICAgICogQHBhcmFtIHtUb3VjaH0gdG91Y2gKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIF9maXJlOiBmdW5jdGlvbih0YXJnZXQsIHRvdWNoKSB7CiAgICAgIGxldCBzZWNvbmRsYXN0ID0gdGhpcy5pbmZvLm1vdmVzW3RoaXMuaW5mby5tb3Zlcy5sZW5ndGggLSAyXTsKICAgICAgbGV0IGxhc3Rtb3ZlID0gdGhpcy5pbmZvLm1vdmVzW3RoaXMuaW5mby5tb3Zlcy5sZW5ndGggLSAxXTsKICAgICAgbGV0IGR4ID0gbGFzdG1vdmUueCAtIHRoaXMuaW5mby54OwogICAgICBsZXQgZHkgPSBsYXN0bW92ZS55IC0gdGhpcy5pbmZvLnk7CiAgICAgIGxldCBkZHgsIGRkeSA9IDA7CiAgICAgIGlmIChzZWNvbmRsYXN0KSB7CiAgICAgICAgZGR4ID0gbGFzdG1vdmUueCAtIHNlY29uZGxhc3QueDsKICAgICAgICBkZHkgPSBsYXN0bW92ZS55IC0gc2Vjb25kbGFzdC55OwogICAgICB9CiAgICAgIEdlc3R1cmVzLl9maXJlKHRhcmdldCwgJ3RyYWNrJywgewogICAgICAgIHN0YXRlOiB0aGlzLmluZm8uc3RhdGUsCiAgICAgICAgeDogdG91Y2guY2xpZW50WCwKICAgICAgICB5OiB0b3VjaC5jbGllbnRZLAogICAgICAgIGR4OiBkeCwKICAgICAgICBkeTogZHksCiAgICAgICAgZGR4OiBkZHgsCiAgICAgICAgZGR5OiBkZHksCiAgICAgICAgc291cmNlRXZlbnQ6IHRvdWNoLAogICAgICAgIGhvdmVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgIHJldHVybiBHZXN0dXJlcy5kZWVwVGFyZ2V0RmluZCh0b3VjaC5jbGllbnRYLCB0b3VjaC5jbGllbnRZKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfQoKICB9KTsKCiAgR2VzdHVyZXMucmVnaXN0ZXIoewogICAgbmFtZTogJ3RhcCcsCiAgICBkZXBzOiBbJ21vdXNlZG93bicsICdjbGljaycsICd0b3VjaHN0YXJ0JywgJ3RvdWNoZW5kJ10sCiAgICBmbG93OiB7CiAgICAgIHN0YXJ0OiBbJ21vdXNlZG93bicsICd0b3VjaHN0YXJ0J10sCiAgICAgIGVuZDogWydjbGljaycsICd0b3VjaGVuZCddCiAgICB9LAogICAgZW1pdHM6IFsndGFwJ10sCiAgICBpbmZvOiB7CiAgICAgIHg6IE5hTiwKICAgICAgeTogTmFOLAogICAgICBwcmV2ZW50OiBmYWxzZQogICAgfSwKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgcmVzZXQ6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLmluZm8ueCA9IE5hTjsKICAgICAgdGhpcy5pbmZvLnkgPSBOYU47CiAgICAgIHRoaXMuaW5mby5wcmV2ZW50ID0gZmFsc2U7CiAgICB9LAogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcGFyYW0ge01vdXNlRXZlbnR9IGUKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIHNhdmU6IGZ1bmN0aW9uKGUpIHsKICAgICAgdGhpcy5pbmZvLnggPSBlLmNsaWVudFg7CiAgICAgIHRoaXMuaW5mby55ID0gZS5jbGllbnRZOwogICAgfSwKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBtb3VzZWRvd246IGZ1bmN0aW9uKGUpIHsKICAgICAgaWYgKGhhc0xlZnRNb3VzZUJ1dHRvbihlKSkgewogICAgICAgIHRoaXMuc2F2ZShlKTsKICAgICAgfQogICAgfSwKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHtNb3VzZUV2ZW50fSBlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBjbGljazogZnVuY3Rpb24oZSkgewogICAgICBpZiAoaGFzTGVmdE1vdXNlQnV0dG9uKGUpKSB7CiAgICAgICAgdGhpcy5mb3J3YXJkKGUpOwogICAgICB9CiAgICB9LAogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcGFyYW0ge1RvdWNoRXZlbnR9IGUKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIHRvdWNoc3RhcnQ6IGZ1bmN0aW9uKGUpIHsKICAgICAgdGhpcy5zYXZlKGUuY2hhbmdlZFRvdWNoZXNbMF0sIGUpOwogICAgfSwKICAgIC8qKgogICAgICogQHRoaXMge0dlc3R1cmVSZWNvZ25pemVyfQogICAgICogQHBhcmFtIHtUb3VjaEV2ZW50fSBlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICB0b3VjaGVuZDogZnVuY3Rpb24oZSkgewogICAgICB0aGlzLmZvcndhcmQoZS5jaGFuZ2VkVG91Y2hlc1swXSwgZSk7CiAgICB9LAogICAgLyoqCiAgICAgKiBAdGhpcyB7R2VzdHVyZVJlY29nbml6ZXJ9CiAgICAgKiBAcGFyYW0ge0V2ZW50IHwgVG91Y2h9IGUKICAgICAqIEBwYXJhbSB7RXZlbnQ9fSBwcmV2ZW50ZXIKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIGZvcndhcmQ6IGZ1bmN0aW9uKGUsIHByZXZlbnRlcikgewogICAgICBsZXQgZHggPSBNYXRoLmFicyhlLmNsaWVudFggLSB0aGlzLmluZm8ueCk7CiAgICAgIGxldCBkeSA9IE1hdGguYWJzKGUuY2xpZW50WSAtIHRoaXMuaW5mby55KTsKICAgICAgLy8gZmluZCBvcmlnaW5hbCB0YXJnZXQgZnJvbSBgcHJldmVudGVyYCBmb3IgVG91Y2hFdmVudHMsIG9yIGBlYCBmb3IgTW91c2VFdmVudHMKICAgICAgbGV0IHQgPSBHZXN0dXJlcy5fZmluZE9yaWdpbmFsVGFyZ2V0KC8qKiBAdHlwZSB7RXZlbnR9ICovKHByZXZlbnRlciB8fCBlKSk7CiAgICAgIGlmICghdCB8fCAoY2FuQmVEaXNhYmxlZFsvKiogQHR5cGUgeyFIVE1MRWxlbWVudH0gKi8odCkubG9jYWxOYW1lXSAmJiB0Lmhhc0F0dHJpYnV0ZSgnZGlzYWJsZWQnKSkpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgLy8gZHgsZHkgY2FuIGJlIE5hTiBpZiBgY2xpY2tgIGhhcyBiZWVuIHNpbXVsYXRlZCBhbmQgdGhlcmUgd2FzIG5vIGBkb3duYCBmb3IgYHN0YXJ0YAogICAgICBpZiAoaXNOYU4oZHgpIHx8IGlzTmFOKGR5KSB8fCAoZHggPD0gVEFQX0RJU1RBTkNFICYmIGR5IDw9IFRBUF9ESVNUQU5DRSkgfHwgaXNTeW50aGV0aWNDbGljayhlKSkgewogICAgICAgIC8vIHByZXZlbnQgdGFwcyBmcm9tIGJlaW5nIGdlbmVyYXRlZCBpZiBhbiBldmVudCBoYXMgY2FuY2VsZWQgdGhlbQogICAgICAgIGlmICghdGhpcy5pbmZvLnByZXZlbnQpIHsKICAgICAgICAgIEdlc3R1cmVzLl9maXJlKHQsICd0YXAnLCB7CiAgICAgICAgICAgIHg6IGUuY2xpZW50WCwKICAgICAgICAgICAgeTogZS5jbGllbnRZLAogICAgICAgICAgICBzb3VyY2VFdmVudDogZSwKICAgICAgICAgICAgcHJldmVudGVyOiBwcmV2ZW50ZXIKICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0pOwoKICAvKiBlc2xpbnQtZW5hYmxlIHZhbGlkLWpzZG9jICovCgogIC8qKiBAZGVwcmVjYXRlZCAqLwogIEdlc3R1cmVzLmZpbmRPcmlnaW5hbFRhcmdldCA9IEdlc3R1cmVzLl9maW5kT3JpZ2luYWxUYXJnZXQ7CgogIC8qKiBAZGVwcmVjYXRlZCAqLwogIEdlc3R1cmVzLmFkZCA9IEdlc3R1cmVzLmFkZExpc3RlbmVyOwoKICAvKiogQGRlcHJlY2F0ZWQgKi8KICBHZXN0dXJlcy5yZW1vdmUgPSBHZXN0dXJlcy5yZW1vdmVMaXN0ZW5lcjsKCiAgUG9seW1lci5HZXN0dXJlcyA9IEdlc3R1cmVzOwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQGNvbnN0IHtQb2x5bWVyLkdlc3R1cmVzfQogICAqLwogIGNvbnN0IGdlc3R1cmVzID0gUG9seW1lci5HZXN0dXJlczsKCiAgLyoqCiAgICogRWxlbWVudCBjbGFzcyBtaXhpbiB0aGF0IHByb3ZpZGVzIEFQSSBmb3IgYWRkaW5nIFBvbHltZXIncyBjcm9zcy1wbGF0Zm9ybQogICAqIGdlc3R1cmUgZXZlbnRzIHRvIG5vZGVzLgogICAqCiAgICogVGhlIEFQSSBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGggb3ZlcnJpZGUgcG9pbnRzIGltcGxlbWVudGVkCiAgICogaW4gYFBvbHltZXIuVGVtcGxhdGVTdGFtcGAgc3VjaCB0aGF0IGRlY2xhcmF0aXZlIGV2ZW50IGxpc3RlbmVycyBpbgogICAqIHRlbXBsYXRlcyB3aWxsIHN1cHBvcnQgZ2VzdHVyZSBldmVudHMgd2hlbiB0aGlzIG1peGluIGlzIGFwcGxpZWQgYWxvbmcgd2l0aAogICAqIGBQb2x5bWVyLlRlbXBsYXRlU3RhbXBgLgogICAqCiAgICogQG1peGluRnVuY3Rpb24KICAgKiBAcG9seW1lcgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgRWxlbWVudCBjbGFzcyBtaXhpbiB0aGF0IHByb3ZpZGVzIEFQSSBmb3IgYWRkaW5nIFBvbHltZXIncyBjcm9zcy1wbGF0Zm9ybQogICAqIGdlc3R1cmUgZXZlbnRzIHRvIG5vZGVzCiAgICovCiAgUG9seW1lci5HZXN0dXJlRXZlbnRMaXN0ZW5lcnMgPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgLyoqCiAgICAgKiBAcG9seW1lcgogICAgICogQG1peGluQ2xhc3MKICAgICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX0dlc3R1cmVFdmVudExpc3RlbmVyc30KICAgICAqLwogICAgY2xhc3MgR2VzdHVyZUV2ZW50TGlzdGVuZXJzIGV4dGVuZHMgc3VwZXJDbGFzcyB7CgogICAgICAvKioKICAgICAgICogQWRkIHRoZSBldmVudCBsaXN0ZW5lciB0byB0aGUgbm9kZSBpZiBpdCBpcyBhIGdlc3R1cmVzIGV2ZW50LgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyFOb2RlfSBub2RlIE5vZGUgdG8gYWRkIGV2ZW50IGxpc3RlbmVyIHRvCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgTmFtZSBvZiBldmVudAogICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCFFdmVudCk6dm9pZH0gaGFuZGxlciBMaXN0ZW5lciBmdW5jdGlvbiB0byBhZGQKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgIGlmICghZ2VzdHVyZXMuYWRkTGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSkgewogICAgICAgICAgc3VwZXIuX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBub2RlIGlmIGl0IGlzIGEgZ2VzdHVyZXMgZXZlbnQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUgTm9kZSB0byByZW1vdmUgZXZlbnQgbGlzdGVuZXIgZnJvbQogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lIE5hbWUgb2YgZXZlbnQKICAgICAgICogQHBhcmFtIHtmdW5jdGlvbighRXZlbnQpOnZvaWR9IGhhbmRsZXIgTGlzdGVuZXIgZnVuY3Rpb24gdG8gcmVtb3ZlCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlcikgewogICAgICAgIGlmICghZ2VzdHVyZXMucmVtb3ZlTGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSkgewogICAgICAgICAgc3VwZXIuX3JlbW92ZUV2ZW50TGlzdGVuZXJGcm9tTm9kZShub2RlLCBldmVudE5hbWUsIGhhbmRsZXIpOwogICAgICAgIH0KICAgICAgfQoKICAgIH0KCiAgICByZXR1cm4gR2VzdHVyZUV2ZW50TGlzdGVuZXJzOwoKICB9KTsKCn0pKCk7CgoKICAoZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgY29uc3QgSE9TVF9ESVIgPSAvOmhvc3RcKDpkaXJcKChsdHJ8cnRsKVwpXCkvZzsKICAgIGNvbnN0IEhPU1RfRElSX1JFUExBQ01FTlQgPSAnOmhvc3QoW2Rpcj0iJDEiXSknOwoKICAgIGNvbnN0IEVMX0RJUiA9IC8oW1xzXHctI1wuXFtcXVwqXSopOmRpclwoKGx0cnxydGwpXCkvZzsKICAgIGNvbnN0IEVMX0RJUl9SRVBMQUNNRU5UID0gJzpob3N0KFtkaXI9IiQyIl0pICQxJzsKCiAgICBjb25zdCBESVJfQ0hFQ0sgPSAvOmRpclwoKD86bHRyfHJ0bClcKS87CiAgICAKICAgIGNvbnN0IFNISU1fU0hBRE9XID0gQm9vbGVhbih3aW5kb3dbJ1NoYWR5RE9NJ10gJiYgd2luZG93WydTaGFkeURPTSddWydpblVzZSddKTsKCiAgICAvKioKICAgICAqIEB0eXBlIHshQXJyYXk8IVBvbHltZXJfRGlyTWl4aW4+fQogICAgICovCiAgICBjb25zdCBESVJfSU5TVEFOQ0VTID0gW107CgogICAgLyoqIEB0eXBlIHtNdXRhdGlvbk9ic2VydmVyfSAqLwogICAgbGV0IG9ic2VydmVyID0gbnVsbDsKCiAgICBsZXQgRE9DVU1FTlRfRElSID0gJyc7CgogICAgZnVuY3Rpb24gZ2V0UlRMKCkgewogICAgICBET0NVTUVOVF9ESVIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXInKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSB7IVBvbHltZXJfRGlyTWl4aW59IGluc3RhbmNlIEluc3RhbmNlIHRvIHNldCBSVEwgc3RhdHVzIG9uCiAgICAgKi8KICAgIGZ1bmN0aW9uIHNldFJUTChpbnN0YW5jZSkgewogICAgICBpZiAoIWluc3RhbmNlLl9fYXV0b0Rpck9wdE91dCkgewogICAgICAgIGNvbnN0IGVsID0gLyoqIEB0eXBlIHshSFRNTEVsZW1lbnR9ICovKGluc3RhbmNlKTsKICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoJ2RpcicsIERPQ1VNRU5UX0RJUik7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB1cGRhdGVEaXJlY3Rpb24oKSB7CiAgICAgIGdldFJUTCgpOwogICAgICBET0NVTUVOVF9ESVIgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkaXInKTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBESVJfSU5TVEFOQ0VTLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgc2V0UlRMKERJUl9JTlNUQU5DRVNbaV0pOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdGFrZVJlY29yZHMoKSB7CiAgICAgIGlmIChvYnNlcnZlciAmJiBvYnNlcnZlci50YWtlUmVjb3JkcygpLmxlbmd0aCkgewogICAgICAgIHVwZGF0ZURpcmVjdGlvbigpOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBFbGVtZW50IGNsYXNzIG1peGluIHRoYXQgYWxsb3dzIGVsZW1lbnRzIHRvIHVzZSB0aGUgYDpkaXJgIENTUyBTZWxlY3RvciB0byBoYXZlCiAgICAgKiB0ZXh0IGRpcmVjdGlvbiBzcGVjaWZpYyBzdHlsaW5nLgogICAgICoKICAgICAqIFdpdGggdGhpcyBtaXhpbiwgYW55IHN0eWxlc2hlZXQgcHJvdmlkZWQgaW4gdGhlIHRlbXBsYXRlIHdpbGwgdHJhbnNmb3JtIGA6ZGlyYCBpbnRvCiAgICAgKiBgOmhvc3QoW2Rpcl0pYCBhbmQgc3luYyBkaXJlY3Rpb24gd2l0aCB0aGUgcGFnZSB2aWEgdGhlIGVsZW1lbnQncyBgZGlyYCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogRWxlbWVudHMgY2FuIG9wdCBvdXQgb2YgdGhlIGdsb2JhbCBwYWdlIHRleHQgZGlyZWN0aW9uIGJ5IHNldHRpbmcgdGhlIGBkaXJgIGF0dHJpYnV0ZQogICAgICogZGlyZWN0bHkgaW4gYHJlYWR5KClgIG9yIGluIEhUTUwuCiAgICAgKgogICAgICogQ2F2ZWF0czoKICAgICAqIC0gQXBwbGljYXRpb25zIG11c3Qgc2V0IGA8aHRtbCBkaXI9Imx0ciI+YCBvciBgPGh0bWwgZGlyPSJydGwiPmAgdG8gc3luYyBkaXJlY3Rpb24KICAgICAqIC0gQXV0b21hdGljIGxlZnQtdG8tcmlnaHQgb3IgcmlnaHQtdG8tbGVmdCBzdHlsaW5nIGlzIHN5bmMnZCB3aXRoIHRoZSBgPGh0bWw+YCBlbGVtZW50IG9ubHkuCiAgICAgKiAtIENoYW5naW5nIGBkaXJgIGF0IHJ1bnRpbWUgaXMgc3VwcG9ydGVkLgogICAgICogLSBPcHRpbmcgb3V0IG9mIHRoZSBnbG9iYWwgZGlyZWN0aW9uIHN0eWxpbmcgaXMgcGVybWFuZW50CiAgICAgKgogICAgICogQG1peGluRnVuY3Rpb24KICAgICAqIEBwb2x5bWVyCiAgICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuUHJvcGVydHlBY2Nlc3NvcnMKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICAgKi8KICAgIFBvbHltZXIuRGlyTWl4aW4gPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oKGJhc2UpID0+IHsKCiAgICAgIGlmICghU0hJTV9TSEFET1cpIHsKICAgICAgICBpZiAoIW9ic2VydmVyKSB7CiAgICAgICAgICBnZXRSVEwoKTsKICAgICAgICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodXBkYXRlRGlyZWN0aW9uKTsKICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCB7YXR0cmlidXRlczogdHJ1ZSwgYXR0cmlidXRlRmlsdGVyOiBbJ2RpciddfSk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogQGNvbnN0cnVjdG9yCiAgICAgICAqIEBleHRlbmRzIHtiYXNlfQogICAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0eUFjY2Vzc29yc30KICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIGNvbnN0IGVsZW1lbnRCYXNlID0gUG9seW1lci5Qcm9wZXJ0eUFjY2Vzc29ycyhiYXNlKTsKCiAgICAgIC8qKgogICAgICAgKiBAcG9seW1lcgogICAgICAgKiBAbWl4aW5DbGFzcwogICAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9EaXJNaXhpbn0KICAgICAgICovCiAgICAgIGNsYXNzIERpciBleHRlbmRzIGVsZW1lbnRCYXNlIHsKCiAgICAgICAgLyoqCiAgICAgICAgICogQG92ZXJyaWRlCiAgICAgICAgICogQHN1cHByZXNzIHttaXNzaW5nUHJvcGVydGllc30gSW50ZXJmYWNlcyBpbiBjbG9zdXJlIGRvIG5vdCBpbmhlcml0IHN0YXRpY3MsIGJ1dCBjbGFzc2VzIGRvCiAgICAgICAgICovCiAgICAgICAgc3RhdGljIF9wcm9jZXNzU3R5bGVUZXh0KGNzc1RleHQsIGJhc2VVUkkpIHsKICAgICAgICAgIGNzc1RleHQgPSBzdXBlci5fcHJvY2Vzc1N0eWxlVGV4dChjc3NUZXh0LCBiYXNlVVJJKTsKICAgICAgICAgIGlmICghU0hJTV9TSEFET1cgJiYgRElSX0NIRUNLLnRlc3QoY3NzVGV4dCkpIHsKICAgICAgICAgICAgY3NzVGV4dCA9IHRoaXMuX3JlcGxhY2VEaXJJbkNzc1RleHQoY3NzVGV4dCk7CiAgICAgICAgICAgIHRoaXMuX19hY3RpdmF0ZURpciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gY3NzVGV4dDsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIFJlcGxhY2UgYDpkaXJgIGluIHRoZSBnaXZlbiBDU1MgdGV4dAogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgQ1NTIHRleHQgdG8gcmVwbGFjZSBESVIKICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1vZGlmaWVkIENTUwogICAgICAgICAqLwogICAgICAgIHN0YXRpYyBfcmVwbGFjZURpckluQ3NzVGV4dCh0ZXh0KSB7CiAgICAgICAgICBsZXQgcmVwbGFjZWRUZXh0ID0gdGV4dDsKICAgICAgICAgIHJlcGxhY2VkVGV4dCA9IHJlcGxhY2VkVGV4dC5yZXBsYWNlKEhPU1RfRElSLCBIT1NUX0RJUl9SRVBMQUNNRU5UKTsKICAgICAgICAgIHJlcGxhY2VkVGV4dCA9IHJlcGxhY2VkVGV4dC5yZXBsYWNlKEVMX0RJUiwgRUxfRElSX1JFUExBQ01FTlQpOwogICAgICAgICAgcmV0dXJuIHJlcGxhY2VkVGV4dDsKICAgICAgICB9CgogICAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICAgc3VwZXIoKTsKICAgICAgICAgIC8qKiBAdHlwZSB7Ym9vbGVhbn0gKi8KICAgICAgICAgIHRoaXMuX19hdXRvRGlyT3B0T3V0ID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30gQ2xvc3VyZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhhdCBgdGhpc2AgaXMgYW4gSFRNTEVsZW1lbnQKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqLwogICAgICAgIHJlYWR5KCkgewogICAgICAgICAgc3VwZXIucmVhZHkoKTsKICAgICAgICAgIHRoaXMuX19hdXRvRGlyT3B0T3V0ID0gLyoqIEB0eXBlIHshSFRNTEVsZW1lbnR9ICovKHRoaXMpLmhhc0F0dHJpYnV0ZSgnZGlyJyk7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBJZiBpdCBleGlzdHMgb24gZWxlbWVudEJhc2UsIGl0IGNhbiBiZSBzdXBlcidkCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgICAgICAgIGlmIChlbGVtZW50QmFzZS5wcm90b3R5cGUuY29ubmVjdGVkQ2FsbGJhY2spIHsKICAgICAgICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yLl9fYWN0aXZhdGVEaXIpIHsKICAgICAgICAgICAgdGFrZVJlY29yZHMoKTsKICAgICAgICAgICAgRElSX0lOU1RBTkNFUy5wdXNoKHRoaXMpOwogICAgICAgICAgICBzZXRSVEwodGhpcyk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBJZiBpdCBleGlzdHMgb24gZWxlbWVudEJhc2UsIGl0IGNhbiBiZSBzdXBlcidkCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgICAgICAgIGlmIChlbGVtZW50QmFzZS5wcm90b3R5cGUuZGlzY29ubmVjdGVkQ2FsbGJhY2spIHsKICAgICAgICAgICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yLl9fYWN0aXZhdGVEaXIpIHsKICAgICAgICAgICAgY29uc3QgaWR4ID0gRElSX0lOU1RBTkNFUy5pbmRleE9mKHRoaXMpOwogICAgICAgICAgICBpZiAoaWR4ID4gLTEpIHsKICAgICAgICAgICAgICBESVJfSU5TVEFOQ0VTLnNwbGljZShpZHgsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICBEaXIuX19hY3RpdmF0ZURpciA9IGZhbHNlOwoKICAgICAgcmV0dXJuIERpcjsKICAgIH0pOwogIH0pKCk7CgoKCihmdW5jdGlvbigpIHsKCiAgJ3VzZSBzdHJpY3QnOwoKICAvLyBydW4gYSBjYWxsYmFjayB3aGVuIEhUTUxJbXBvcnRzIGFyZSByZWFkeSBvciBpbW1lZGlhdGVseSBpZgogIC8vIHRoaXMgYXBpIGlzIG5vdCBhdmFpbGFibGUuCiAgZnVuY3Rpb24gd2hlbkltcG9ydHNSZWFkeShjYikgewogICAgaWYgKHdpbmRvdy5IVE1MSW1wb3J0cykgewogICAgICBIVE1MSW1wb3J0cy53aGVuUmVhZHkoY2IpOwogICAgfSBlbHNlIHsKICAgICAgY2IoKTsKICAgIH0KICB9CgogIC8qKgogICAqIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgaW1wb3J0aW5nIGFuIEhUTUwgZG9jdW1lbnQgaW1wZXJhdGl2ZWx5LgogICAqCiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIG5ldyBgPGxpbmsgcmVsPSJpbXBvcnQiPmAgZWxlbWVudCB3aXRoCiAgICogdGhlIHByb3ZpZGVkIFVSTCBhbmQgYXBwZW5kcyBpdCB0byB0aGUgZG9jdW1lbnQgdG8gc3RhcnQgbG9hZGluZy4KICAgKiBJbiB0aGUgYG9ubG9hZGAgY2FsbGJhY2ssIHRoZSBgaW1wb3J0YCBwcm9wZXJ0eSBvZiB0aGUgYGxpbmtgCiAgICogZWxlbWVudCB3aWxsIGNvbnRhaW4gdGhlIGltcG9ydGVkIGRvY3VtZW50IGNvbnRlbnRzLgogICAqCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAcGFyYW0ge3N0cmluZ30gaHJlZiBVUkwgdG8gZG9jdW1lbnQgdG8gbG9hZC4KICAgKiBAcGFyYW0gez9mdW5jdGlvbighRXZlbnQpOnZvaWQ9fSBvbmxvYWQgQ2FsbGJhY2sgdG8gbm90aWZ5IHdoZW4gYW4gaW1wb3J0IHN1Y2Nlc3NmdWxseQogICAqICAgbG9hZGVkLgogICAqIEBwYXJhbSB7P2Z1bmN0aW9uKCFFcnJvckV2ZW50KTp2b2lkPX0gb25lcnJvciBDYWxsYmFjayB0byBub3RpZnkgd2hlbiBhbiBpbXBvcnQKICAgKiAgIHVuc3VjY2Vzc2Z1bGx5IGxvYWRlZC4KICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRBc3luYyBUcnVlIGlmIHRoZSBpbXBvcnQgc2hvdWxkIGJlIGxvYWRlZCBgYXN5bmNgLgogICAqICAgRGVmYXVsdHMgdG8gYGZhbHNlYC4KICAgKiBAcmV0dXJuIHshSFRNTExpbmtFbGVtZW50fSBUaGUgbGluayBlbGVtZW50IGZvciB0aGUgVVJMIHRvIGJlIGxvYWRlZC4KICAgKi8KICBQb2x5bWVyLmltcG9ydEhyZWYgPSBmdW5jdGlvbihocmVmLCBvbmxvYWQsIG9uZXJyb3IsIG9wdEFzeW5jKSB7CiAgICBsZXQgbGluayA9IC8qKiBAdHlwZSB7SFRNTExpbmtFbGVtZW50fSAqLwogICAgICAoZG9jdW1lbnQuaGVhZC5xdWVyeVNlbGVjdG9yKCdsaW5rW2hyZWY9IicgKyBocmVmICsgJyJdW2ltcG9ydC1ocmVmXScpKTsKICAgIGlmICghbGluaykgewogICAgICBsaW5rID0gLyoqIEB0eXBlIHtIVE1MTGlua0VsZW1lbnR9ICovIChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJykpOwogICAgICBsaW5rLnJlbCA9ICdpbXBvcnQnOwogICAgICBsaW5rLmhyZWYgPSBocmVmOwogICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaW1wb3J0LWhyZWYnLCAnJyk7CiAgICB9CiAgICAvLyBhbHdheXMgZW5zdXJlIGxpbmsgaGFzIGBhc3luY2AgYXR0cmlidXRlIGlmIHVzZXIgc3BlY2lmaWVkIG9uZSwKICAgIC8vIGV2ZW4gaWYgaXQgd2FzIHByZXZpb3VzbHkgbm90IGFzeW5jLiBUaGlzIGlzIGNvbnNpZGVyZWQgbGVzcyBjb25mdXNpbmcuCiAgICBpZiAob3B0QXN5bmMpIHsKICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2FzeW5jJywgJycpOwogICAgfQogICAgLy8gTk9URTogdGhlIGxpbmsgbWF5IG5vdyBiZSBpbiAzIHN0YXRlczogKDEpIHBlbmRpbmcgaW5zZXJ0aW9uLAogICAgLy8gKDIpIGluZmxpZ2h0LCAoMykgYWxyZWFkeSBsb2FkZWQuIEluIGVhY2ggY2FzZSwgd2UgbmVlZCB0byBhZGQKICAgIC8vIGV2ZW50IGxpc3RlbmVycyB0byBwcm9jZXNzIGNhbGxiYWNrcy4KICAgIGxldCBjbGVhbnVwID0gZnVuY3Rpb24oKSB7CiAgICAgIGxpbmsucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRMaXN0ZW5lcik7CiAgICAgIGxpbmsucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTsKICAgIH07CiAgICBsZXQgbG9hZExpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgY2xlYW51cCgpOwogICAgICAvLyBJbiBjYXNlIG9mIGEgc3VjY2Vzc2Z1bCBsb2FkLCBjYWNoZSB0aGUgbG9hZCBldmVudCBvbiB0aGUgbGluayBzbwogICAgICAvLyB0aGF0IGl0IGNhbiBiZSB1c2VkIHRvIHNob3J0LWNpcmN1aXQgdGhpcyBtZXRob2QgaW4gdGhlIGZ1dHVyZSB3aGVuCiAgICAgIC8vIGl0IGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGhyZWYgcGFyYW0uCiAgICAgIGxpbmsuX19keW5hbWljSW1wb3J0TG9hZGVkID0gdHJ1ZTsKICAgICAgaWYgKG9ubG9hZCkgewogICAgICAgIHdoZW5JbXBvcnRzUmVhZHkoKCkgPT4gewogICAgICAgICAgb25sb2FkKGV2ZW50KTsKICAgICAgICB9KTsKICAgICAgfQogICAgfTsKICAgIGxldCBlcnJvckxpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgY2xlYW51cCgpOwogICAgICAvLyBJbiBjYXNlIG9mIGFuIGVycm9yLCByZW1vdmUgdGhlIGxpbmsgZnJvbSB0aGUgZG9jdW1lbnQgc28gdGhhdCBpdAogICAgICAvLyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIGBpbXBvcnRIcmVmYCBpcwogICAgICAvLyBjYWxsZWQuCiAgICAgIGlmIChsaW5rLnBhcmVudE5vZGUpIHsKICAgICAgICBsaW5rLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobGluayk7CiAgICAgIH0KICAgICAgaWYgKG9uZXJyb3IpIHsKICAgICAgICB3aGVuSW1wb3J0c1JlYWR5KCgpID0+IHsKICAgICAgICAgIG9uZXJyb3IoZXZlbnQpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9OwogICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZExpc3RlbmVyKTsKICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTsKICAgIGlmIChsaW5rLnBhcmVudE5vZGUgPT0gbnVsbCkgewogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspOwogICAgLy8gaWYgdGhlIGxpbmsgYWxyZWFkeSBsb2FkZWQsIGRpc3BhdGNoIGEgZmFrZSBsb2FkIGV2ZW50CiAgICAvLyBzbyB0aGF0IGxpc3RlbmVycyBhcmUgY2FsbGVkIGFuZCBnZXQgYSBwcm9wZXIgZXZlbnQgYXJndW1lbnQuCiAgICB9IGVsc2UgaWYgKGxpbmsuX19keW5hbWljSW1wb3J0TG9hZGVkKSB7CiAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2xvYWQnKSk7CiAgICB9CiAgICByZXR1cm4gbGluazsKICB9OwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgbGV0IHNjaGVkdWxlZCA9IGZhbHNlOwogIGxldCBiZWZvcmVSZW5kZXJRdWV1ZSA9IFtdOwogIGxldCBhZnRlclJlbmRlclF1ZXVlID0gW107CgogIGZ1bmN0aW9uIHNjaGVkdWxlKCkgewogICAgc2NoZWR1bGVkID0gdHJ1ZTsKICAgIC8vIGJlZm9yZSBuZXh0IHJlbmRlcgogICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgewogICAgICBzY2hlZHVsZWQgPSBmYWxzZTsKICAgICAgZmx1c2hRdWV1ZShiZWZvcmVSZW5kZXJRdWV1ZSk7CiAgICAgIC8vIGFmdGVyIHRoZSByZW5kZXIKICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBydW5RdWV1ZShhZnRlclJlbmRlclF1ZXVlKTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGZsdXNoUXVldWUocXVldWUpIHsKICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHsKICAgICAgY2FsbE1ldGhvZChxdWV1ZS5zaGlmdCgpKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJ1blF1ZXVlKHF1ZXVlKSB7CiAgICBmb3IgKGxldCBpPTAsIGw9cXVldWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIGNhbGxNZXRob2QocXVldWUuc2hpZnQoKSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBjYWxsTWV0aG9kKGluZm8pIHsKICAgIGNvbnN0IGNvbnRleHQgPSBpbmZvWzBdOwogICAgY29uc3QgY2FsbGJhY2sgPSBpbmZvWzFdOwogICAgY29uc3QgYXJncyA9IGluZm9bMl07CiAgICB0cnkgewogICAgICBjYWxsYmFjay5hcHBseShjb250ZXh0LCBhcmdzKTsKICAgIH0gY2F0Y2goZSkgewogICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICB0aHJvdyBlOwogICAgICB9KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGZsdXNoKCkgewogICAgd2hpbGUgKGJlZm9yZVJlbmRlclF1ZXVlLmxlbmd0aCB8fCBhZnRlclJlbmRlclF1ZXVlLmxlbmd0aCkgewogICAgICBmbHVzaFF1ZXVlKGJlZm9yZVJlbmRlclF1ZXVlKTsKICAgICAgZmx1c2hRdWV1ZShhZnRlclJlbmRlclF1ZXVlKTsKICAgIH0KICAgIHNjaGVkdWxlZCA9IGZhbHNlOwogIH0KCiAgLyoqCiAgICogTW9kdWxlIGZvciBzY2hlZHVsaW5nIGZsdXNoYWJsZSBwcmUtcmVuZGVyIGFuZCBwb3N0LXJlbmRlciB0YXNrcy4KICAgKgogICAqIEBuYW1lc3BhY2UKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IE1vZHVsZSBmb3Igc2NoZWR1bGluZyBmbHVzaGFibGUgcHJlLXJlbmRlciBhbmQgcG9zdC1yZW5kZXIgdGFza3MuCiAgICovCiAgUG9seW1lci5SZW5kZXJTdGF0dXMgPSB7CgogICAgLyoqCiAgICAgKiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgcnVuIGJlZm9yZSB0aGUgbmV4dCByZW5kZXIsIGF0CiAgICAgKiBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCB0aW1pbmcuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBlbnF1ZXVpbmcgd29yayB0aGF0IHJlcXVpcmVzIERPTSBtZWFzdXJlbWVudCwKICAgICAqIHNpbmNlIG1lYXN1cmVtZW50IG1heSBub3QgYmUgcmVsaWFibGUgaW4gY3VzdG9tIGVsZW1lbnQgY2FsbGJhY2tzIGJlZm9yZQogICAgICogdGhlIGZpcnN0IHJlbmRlciwgYXMgd2VsbCBhcyBmb3IgYmF0Y2hpbmcgbWVhc3VyZW1lbnQgdGFza3MgaW4gZ2VuZXJhbC4KICAgICAqCiAgICAgKiBUYXNrcyBpbiB0aGlzIHF1ZXVlIG1heSBiZSBmbHVzaGVkIGJ5IGNhbGxpbmcgYFBvbHltZXIuUmVuZGVyU3RhdHVzLmZsdXNoKClgLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlJlbmRlclN0YXR1cwogICAgICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgb2JqZWN0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGJvdW5kIHRvCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKC4uLiopOnZvaWR9IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0geyFBcnJheT19IGFyZ3MgQW4gYXJyYXkgb2YgYXJndW1lbnRzIHRvIGNhbGwgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGgKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIGJlZm9yZU5leHRSZW5kZXI6IGZ1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrLCBhcmdzKSB7CiAgICAgIGlmICghc2NoZWR1bGVkKSB7CiAgICAgICAgc2NoZWR1bGUoKTsKICAgICAgfQogICAgICBiZWZvcmVSZW5kZXJRdWV1ZS5wdXNoKFtjb250ZXh0LCBjYWxsYmFjaywgYXJnc10pOwogICAgfSwKCiAgICAvKioKICAgICAqIEVucXVldWVzIGEgY2FsbGJhY2sgd2hpY2ggd2lsbCBiZSBydW4gYWZ0ZXIgdGhlIG5leHQgcmVuZGVyLCBlcXVpdmFsZW50CiAgICAgKiB0byBvbmUgdGFzayAoYHNldFRpbWVvdXRgKSBhZnRlciB0aGUgbmV4dCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIHR1bmluZyB0aGUgZmlyc3QtcmVuZGVyIHBlcmZvcm1hbmNlIG9mIGFuCiAgICAgKiBlbGVtZW50IG9yIGFwcGxpY2F0aW9uIGJ5IGRlZmVycmluZyBub24tY3JpdGljYWwgd29yayB1bnRpbCBhZnRlciB0aGUKICAgICAqIGZpcnN0IHBhaW50LiAgVHlwaWNhbCBub24tcmVuZGVyLWNyaXRpY2FsIHdvcmsgbWF5IGluY2x1ZGUgYWRkaW5nIFVJCiAgICAgKiBldmVudCBsaXN0ZW5lcnMgYW5kIGFyaWEgYXR0cmlidXRlcy4KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5SZW5kZXJTdGF0dXMKICAgICAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IG9iamVjdCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBib3VuZCB0bwogICAgICogQHBhcmFtIHtmdW5jdGlvbiguLi4qKTp2b2lkfSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlvbgogICAgICogQHBhcmFtIHshQXJyYXk9fSBhcmdzIEFuIGFycmF5IG9mIGFyZ3VtZW50cyB0byBjYWxsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBhZnRlck5leHRSZW5kZXI6IGZ1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNrLCBhcmdzKSB7CiAgICAgIGlmICghc2NoZWR1bGVkKSB7CiAgICAgICAgc2NoZWR1bGUoKTsKICAgICAgfQogICAgICBhZnRlclJlbmRlclF1ZXVlLnB1c2goW2NvbnRleHQsIGNhbGxiYWNrLCBhcmdzXSk7CiAgICB9LAoKICAgIC8qKgogICAgICogRmx1c2hlcyBhbGwgYGJlZm9yZU5leHRSZW5kZXJgIHRhc2tzLCBmb2xsb3dlZCBieSBhbGwgYGFmdGVyTmV4dFJlbmRlcmAKICAgICAqIHRhc2tzLgogICAgICoKICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlJlbmRlclN0YXR1cwogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgZmx1c2g6IGZsdXNoCgogIH07Cgp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIC8vIHVucmVzb2x2ZWQKCiAgZnVuY3Rpb24gcmVzb2x2ZSgpIHsKICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmlidXRlKCd1bnJlc29sdmVkJyk7CiAgfQoKICBpZiAod2luZG93LldlYkNvbXBvbmVudHMpIHsKICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdXZWJDb21wb25lbnRzUmVhZHknLCByZXNvbHZlKTsKICB9IGVsc2UgewogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdpbnRlcmFjdGl2ZScgfHwgZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykgewogICAgICByZXNvbHZlKCk7CiAgICB9IGVsc2UgewogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHJlc29sdmUpOwogICAgfQogIH0KCn0pKCk7CgoKKGZ1bmN0aW9uKCkgewoKICAndXNlIHN0cmljdCc7CgogIGZ1bmN0aW9uIG5ld1NwbGljZShpbmRleCwgcmVtb3ZlZCwgYWRkZWRDb3VudCkgewogICAgcmV0dXJuIHsKICAgICAgaW5kZXg6IGluZGV4LAogICAgICByZW1vdmVkOiByZW1vdmVkLAogICAgICBhZGRlZENvdW50OiBhZGRlZENvdW50CiAgICB9OwogIH0KCiAgY29uc3QgRURJVF9MRUFWRSA9IDA7CiAgY29uc3QgRURJVF9VUERBVEUgPSAxOwogIGNvbnN0IEVESVRfQUREID0gMjsKICBjb25zdCBFRElUX0RFTEVURSA9IDM7CgogIC8vIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgKmJhc2VkKiBvbiB0aGUgY29tcHV0YXRpb24gb2YgdGhlIExldmVuc2h0ZWluCiAgLy8gImVkaXQiIGRpc3RhbmNlLiBUaGUgb25lIGNoYW5nZSBpcyB0aGF0ICJ1cGRhdGVzIiBhcmUgdHJlYXRlZCBhcyB0d28KICAvLyBlZGl0cyAtIG5vdCBvbmUuIFdpdGggQXJyYXkgc3BsaWNlcywgYW4gdXBkYXRlIGlzIHJlYWxseSBhIGRlbGV0ZQogIC8vIGZvbGxvd2VkIGJ5IGFuIGFkZC4gQnkgcmV0YWluaW5nIHRoaXMsIHdlIG9wdGltaXplIGZvciAia2VlcGluZyIgdGhlCiAgLy8gbWF4aW11bSBhcnJheSBpdGVtcyBpbiB0aGUgb3JpZ2luYWwgYXJyYXkuIEZvciBleGFtcGxlOgogIC8vCiAgLy8gICAneHh4eDEyMycgLT4gJzEyM3l5eXknCiAgLy8KICAvLyBXaXRoIDEtZWRpdCB1cGRhdGVzLCB0aGUgc2hvcnRlc3QgcGF0aCB3b3VsZCBiZSBqdXN0IHRvIHVwZGF0ZSBhbGwgc2V2ZW4KICAvLyBjaGFyYWN0ZXJzLiBXaXRoIDItZWRpdCB1cGRhdGVzLCB3ZSBkZWxldGUgNCwgbGVhdmUgMywgYW5kIGFkZCA0LiBUaGlzCiAgLy8gbGVhdmVzIHRoZSBzdWJzdHJpbmcgJzEyMycgaW50YWN0LgogIGZ1bmN0aW9uIGNhbGNFZGl0RGlzdGFuY2VzKGN1cnJlbnQsIGN1cnJlbnRTdGFydCwgY3VycmVudEVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLCBvbGRTdGFydCwgb2xkRW5kKSB7CiAgICAvLyAiRGVsZXRpb24iIGNvbHVtbnMKICAgIGxldCByb3dDb3VudCA9IG9sZEVuZCAtIG9sZFN0YXJ0ICsgMTsKICAgIGxldCBjb2x1bW5Db3VudCA9IGN1cnJlbnRFbmQgLSBjdXJyZW50U3RhcnQgKyAxOwogICAgbGV0IGRpc3RhbmNlcyA9IG5ldyBBcnJheShyb3dDb3VudCk7CgogICAgLy8gIkFkZGl0aW9uIiByb3dzLiBJbml0aWFsaXplIG51bGwgY29sdW1uLgogICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7CiAgICAgIGRpc3RhbmNlc1tpXSA9IG5ldyBBcnJheShjb2x1bW5Db3VudCk7CiAgICAgIGRpc3RhbmNlc1tpXVswXSA9IGk7CiAgICB9CgogICAgLy8gSW5pdGlhbGl6ZSBudWxsIHJvdwogICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5Db3VudDsgaisrKQogICAgICBkaXN0YW5jZXNbMF1bal0gPSBqOwoKICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcm93Q291bnQ7IGkrKykgewogICAgICBmb3IgKGxldCBqID0gMTsgaiA8IGNvbHVtbkNvdW50OyBqKyspIHsKICAgICAgICBpZiAoZXF1YWxzKGN1cnJlbnRbY3VycmVudFN0YXJ0ICsgaiAtIDFdLCBvbGRbb2xkU3RhcnQgKyBpIC0gMV0pKQogICAgICAgICAgZGlzdGFuY2VzW2ldW2pdID0gZGlzdGFuY2VzW2kgLSAxXVtqIC0gMV07CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBsZXQgbm9ydGggPSBkaXN0YW5jZXNbaSAtIDFdW2pdICsgMTsKICAgICAgICAgIGxldCB3ZXN0ID0gZGlzdGFuY2VzW2ldW2ogLSAxXSArIDE7CiAgICAgICAgICBkaXN0YW5jZXNbaV1bal0gPSBub3J0aCA8IHdlc3QgPyBub3J0aCA6IHdlc3Q7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIGRpc3RhbmNlczsKICB9CgogIC8vIFRoaXMgc3RhcnRzIGF0IHRoZSBmaW5hbCB3ZWlnaHQsIGFuZCB3YWxrcyAiYmFja3dhcmQiIGJ5IGZpbmRpbmcKICAvLyB0aGUgbWluaW11bSBwcmV2aW91cyB3ZWlnaHQgcmVjdXJzaXZlbHkgdW50aWwgdGhlIG9yaWdpbiBvZiB0aGUgd2VpZ2h0CiAgLy8gbWF0cml4LgogIGZ1bmN0aW9uIHNwbGljZU9wZXJhdGlvbnNGcm9tRWRpdERpc3RhbmNlcyhkaXN0YW5jZXMpIHsKICAgIGxldCBpID0gZGlzdGFuY2VzLmxlbmd0aCAtIDE7CiAgICBsZXQgaiA9IGRpc3RhbmNlc1swXS5sZW5ndGggLSAxOwogICAgbGV0IGN1cnJlbnQgPSBkaXN0YW5jZXNbaV1bal07CiAgICBsZXQgZWRpdHMgPSBbXTsKICAgIHdoaWxlIChpID4gMCB8fCBqID4gMCkgewogICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgZWRpdHMucHVzaChFRElUX0FERCk7CiAgICAgICAgai0tOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmIChqID09IDApIHsKICAgICAgICBlZGl0cy5wdXNoKEVESVRfREVMRVRFKTsKICAgICAgICBpLS07CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgbGV0IG5vcnRoV2VzdCA9IGRpc3RhbmNlc1tpIC0gMV1baiAtIDFdOwogICAgICBsZXQgd2VzdCA9IGRpc3RhbmNlc1tpIC0gMV1bal07CiAgICAgIGxldCBub3J0aCA9IGRpc3RhbmNlc1tpXVtqIC0gMV07CgogICAgICBsZXQgbWluOwogICAgICBpZiAod2VzdCA8IG5vcnRoKQogICAgICAgIG1pbiA9IHdlc3QgPCBub3J0aFdlc3QgPyB3ZXN0IDogbm9ydGhXZXN0OwogICAgICBlbHNlCiAgICAgICAgbWluID0gbm9ydGggPCBub3J0aFdlc3QgPyBub3J0aCA6IG5vcnRoV2VzdDsKCiAgICAgIGlmIChtaW4gPT0gbm9ydGhXZXN0KSB7CiAgICAgICAgaWYgKG5vcnRoV2VzdCA9PSBjdXJyZW50KSB7CiAgICAgICAgICBlZGl0cy5wdXNoKEVESVRfTEVBVkUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBlZGl0cy5wdXNoKEVESVRfVVBEQVRFKTsKICAgICAgICAgIGN1cnJlbnQgPSBub3J0aFdlc3Q7CiAgICAgICAgfQogICAgICAgIGktLTsKICAgICAgICBqLS07CiAgICAgIH0gZWxzZSBpZiAobWluID09IHdlc3QpIHsKICAgICAgICBlZGl0cy5wdXNoKEVESVRfREVMRVRFKTsKICAgICAgICBpLS07CiAgICAgICAgY3VycmVudCA9IHdlc3Q7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZWRpdHMucHVzaChFRElUX0FERCk7CiAgICAgICAgai0tOwogICAgICAgIGN1cnJlbnQgPSBub3J0aDsKICAgICAgfQogICAgfQoKICAgIGVkaXRzLnJldmVyc2UoKTsKICAgIHJldHVybiBlZGl0czsKICB9CgogIC8qKgogICAqIFNwbGljZSBQcm9qZWN0aW9uIGZ1bmN0aW9uczoKICAgKgogICAqIEEgc3BsaWNlIG1hcCBpcyBhIHJlcHJlc2VudGF0aW9uIG9mIGhvdyBhIHByZXZpb3VzIGFycmF5IG9mIGl0ZW1zCiAgICogd2FzIHRyYW5zZm9ybWVkIGludG8gYSBuZXcgYXJyYXkgb2YgaXRlbXMuIENvbmNlcHR1YWxseSBpdCBpcyBhIGxpc3Qgb2YKICAgKiB0dXBsZXMgb2YKICAgKgogICAqICAgPGluZGV4LCByZW1vdmVkLCBhZGRlZENvdW50PgogICAqCiAgICogd2hpY2ggYXJlIGtlcHQgaW4gYXNjZW5kaW5nIGluZGV4IG9yZGVyIG9mLiBUaGUgdHVwbGUgcmVwcmVzZW50cyB0aGF0IGF0CiAgICogdGhlIHxpbmRleHwsIHxyZW1vdmVkfCBzZXF1ZW5jZSBvZiBpdGVtcyB3ZXJlIHJlbW92ZWQsIGFuZCBjb3VudGluZyBmb3J3YXJkCiAgICogZnJvbSB8aW5kZXh8LCB8YWRkZWRDb3VudHwgaXRlbXMgd2VyZSBhZGRlZC4KICAgKi8KCiAgLyoqCiAgICogTGFja2luZyBpbmRpdmlkdWFsIHNwbGljZSBtdXRhdGlvbiBpbmZvcm1hdGlvbiwgdGhlIG1pbmltYWwgc2V0IG9mCiAgICogc3BsaWNlcyBjYW4gYmUgc3ludGhlc2l6ZWQgZ2l2ZW4gdGhlIHByZXZpb3VzIHN0YXRlIGFuZCBmaW5hbCBzdGF0ZSBvZiBhbgogICAqIGFycmF5LiBUaGUgYmFzaWMgYXBwcm9hY2ggaXMgdG8gY2FsY3VsYXRlIHRoZSBlZGl0IGRpc3RhbmNlIG1hdHJpeCBhbmQKICAgKiBjaG9vc2UgdGhlIHNob3J0ZXN0IHBhdGggdGhyb3VnaCBpdC4KICAgKgogICAqIENvbXBsZXhpdHk6IE8obCAqIHApCiAgICogICBsOiBUaGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IGFycmF5CiAgICogICBwOiBUaGUgbGVuZ3RoIG9mIHRoZSBvbGQgYXJyYXkKICAgKgogICAqIEBwYXJhbSB7IUFycmF5fSBjdXJyZW50IFRoZSBjdXJyZW50ICJjaGFuZ2VkIiBhcnJheSBmb3Igd2hpY2ggdG8KICAgKiBjYWxjdWxhdGUgc3BsaWNlcy4KICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudFN0YXJ0IFN0YXJ0aW5nIGluZGV4IGluIHRoZSBgY3VycmVudGAgYXJyYXkgZm9yCiAgICogd2hpY2ggc3BsaWNlcyBhcmUgY2FsY3VsYXRlZC4KICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEVuZCBFbmRpbmcgaW5kZXggaW4gdGhlIGBjdXJyZW50YCBhcnJheSBmb3IKICAgKiB3aGljaCBzcGxpY2VzIGFyZSBjYWxjdWxhdGVkLgogICAqIEBwYXJhbSB7IUFycmF5fSBvbGQgVGhlIG9yaWdpbmFsICJ1bmNoYW5nZWQiIGFycmF5IHRvIGNvbXBhcmUgYGN1cnJlbnRgCiAgICogYWdhaW5zdCB0byBkZXRlcm1pbmUgc3BsaWNlcy4KICAgKiBAcGFyYW0ge251bWJlcn0gb2xkU3RhcnQgU3RhcnRpbmcgaW5kZXggaW4gdGhlIGBvbGRgIGFycmF5IGZvcgogICAqIHdoaWNoIHNwbGljZXMgYXJlIGNhbGN1bGF0ZWQuCiAgICogQHBhcmFtIHtudW1iZXJ9IG9sZEVuZCBFbmRpbmcgaW5kZXggaW4gdGhlIGBvbGRgIGFycmF5IGZvcgogICAqIHdoaWNoIHNwbGljZXMgYXJlIGNhbGN1bGF0ZWQuCiAgICogQHJldHVybiB7IUFycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIHNwbGljZSByZWNvcmQgb2JqZWN0cy4gRWFjaCBvZiB0aGVzZQogICAqIGNvbnRhaW5zOiBgaW5kZXhgIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgc3BsaWNlIG9jY3VycmVkOyBgcmVtb3ZlZGAKICAgKiB0aGUgYXJyYXkgb2YgcmVtb3ZlZCBpdGVtcyBmcm9tIHRoaXMgbG9jYXRpb247IGBhZGRlZENvdW50YCB0aGUgbnVtYmVyCiAgICogb2YgaXRlbXMgYWRkZWQgYXQgdGhpcyBsb2NhdGlvbi4KICAgKi8KICBmdW5jdGlvbiBjYWxjU3BsaWNlcyhjdXJyZW50LCBjdXJyZW50U3RhcnQsIGN1cnJlbnRFbmQsCiAgICAgICAgICAgICAgICAgICAgICAgIG9sZCwgb2xkU3RhcnQsIG9sZEVuZCkgewogICAgbGV0IHByZWZpeENvdW50ID0gMDsKICAgIGxldCBzdWZmaXhDb3VudCA9IDA7CiAgICBsZXQgc3BsaWNlOwoKICAgIGxldCBtaW5MZW5ndGggPSBNYXRoLm1pbihjdXJyZW50RW5kIC0gY3VycmVudFN0YXJ0LCBvbGRFbmQgLSBvbGRTdGFydCk7CiAgICBpZiAoY3VycmVudFN0YXJ0ID09IDAgJiYgb2xkU3RhcnQgPT0gMCkKICAgICAgcHJlZml4Q291bnQgPSBzaGFyZWRQcmVmaXgoY3VycmVudCwgb2xkLCBtaW5MZW5ndGgpOwoKICAgIGlmIChjdXJyZW50RW5kID09IGN1cnJlbnQubGVuZ3RoICYmIG9sZEVuZCA9PSBvbGQubGVuZ3RoKQogICAgICBzdWZmaXhDb3VudCA9IHNoYXJlZFN1ZmZpeChjdXJyZW50LCBvbGQsIG1pbkxlbmd0aCAtIHByZWZpeENvdW50KTsKCiAgICBjdXJyZW50U3RhcnQgKz0gcHJlZml4Q291bnQ7CiAgICBvbGRTdGFydCArPSBwcmVmaXhDb3VudDsKICAgIGN1cnJlbnRFbmQgLT0gc3VmZml4Q291bnQ7CiAgICBvbGRFbmQgLT0gc3VmZml4Q291bnQ7CgogICAgaWYgKGN1cnJlbnRFbmQgLSBjdXJyZW50U3RhcnQgPT0gMCAmJiBvbGRFbmQgLSBvbGRTdGFydCA9PSAwKQogICAgICByZXR1cm4gW107CgogICAgaWYgKGN1cnJlbnRTdGFydCA9PSBjdXJyZW50RW5kKSB7CiAgICAgIHNwbGljZSA9IG5ld1NwbGljZShjdXJyZW50U3RhcnQsIFtdLCAwKTsKICAgICAgd2hpbGUgKG9sZFN0YXJ0IDwgb2xkRW5kKQogICAgICAgIHNwbGljZS5yZW1vdmVkLnB1c2gob2xkW29sZFN0YXJ0KytdKTsKCiAgICAgIHJldHVybiBbIHNwbGljZSBdOwogICAgfSBlbHNlIGlmIChvbGRTdGFydCA9PSBvbGRFbmQpCiAgICAgIHJldHVybiBbIG5ld1NwbGljZShjdXJyZW50U3RhcnQsIFtdLCBjdXJyZW50RW5kIC0gY3VycmVudFN0YXJ0KSBdOwoKICAgIGxldCBvcHMgPSBzcGxpY2VPcGVyYXRpb25zRnJvbUVkaXREaXN0YW5jZXMoCiAgICAgICAgY2FsY0VkaXREaXN0YW5jZXMoY3VycmVudCwgY3VycmVudFN0YXJ0LCBjdXJyZW50RW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLCBvbGRTdGFydCwgb2xkRW5kKSk7CgogICAgc3BsaWNlID0gdW5kZWZpbmVkOwogICAgbGV0IHNwbGljZXMgPSBbXTsKICAgIGxldCBpbmRleCA9IGN1cnJlbnRTdGFydDsKICAgIGxldCBvbGRJbmRleCA9IG9sZFN0YXJ0OwogICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHMubGVuZ3RoOyBpKyspIHsKICAgICAgc3dpdGNoKG9wc1tpXSkgewogICAgICAgIGNhc2UgRURJVF9MRUFWRToKICAgICAgICAgIGlmIChzcGxpY2UpIHsKICAgICAgICAgICAgc3BsaWNlcy5wdXNoKHNwbGljZSk7CiAgICAgICAgICAgIHNwbGljZSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KCiAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgb2xkSW5kZXgrKzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgRURJVF9VUERBVEU6CiAgICAgICAgICBpZiAoIXNwbGljZSkKICAgICAgICAgICAgc3BsaWNlID0gbmV3U3BsaWNlKGluZGV4LCBbXSwgMCk7CgogICAgICAgICAgc3BsaWNlLmFkZGVkQ291bnQrKzsKICAgICAgICAgIGluZGV4Kys7CgogICAgICAgICAgc3BsaWNlLnJlbW92ZWQucHVzaChvbGRbb2xkSW5kZXhdKTsKICAgICAgICAgIG9sZEluZGV4Kys7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIEVESVRfQUREOgogICAgICAgICAgaWYgKCFzcGxpY2UpCiAgICAgICAgICAgIHNwbGljZSA9IG5ld1NwbGljZShpbmRleCwgW10sIDApOwoKICAgICAgICAgIHNwbGljZS5hZGRlZENvdW50Kys7CiAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSBFRElUX0RFTEVURToKICAgICAgICAgIGlmICghc3BsaWNlKQogICAgICAgICAgICBzcGxpY2UgPSBuZXdTcGxpY2UoaW5kZXgsIFtdLCAwKTsKCiAgICAgICAgICBzcGxpY2UucmVtb3ZlZC5wdXNoKG9sZFtvbGRJbmRleF0pOwogICAgICAgICAgb2xkSW5kZXgrKzsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgaWYgKHNwbGljZSkgewogICAgICBzcGxpY2VzLnB1c2goc3BsaWNlKTsKICAgIH0KICAgIHJldHVybiBzcGxpY2VzOwogIH0KCiAgZnVuY3Rpb24gc2hhcmVkUHJlZml4KGN1cnJlbnQsIG9sZCwgc2VhcmNoTGVuZ3RoKSB7CiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlYXJjaExlbmd0aDsgaSsrKQogICAgICBpZiAoIWVxdWFscyhjdXJyZW50W2ldLCBvbGRbaV0pKQogICAgICAgIHJldHVybiBpOwogICAgcmV0dXJuIHNlYXJjaExlbmd0aDsKICB9CgogIGZ1bmN0aW9uIHNoYXJlZFN1ZmZpeChjdXJyZW50LCBvbGQsIHNlYXJjaExlbmd0aCkgewogICAgbGV0IGluZGV4MSA9IGN1cnJlbnQubGVuZ3RoOwogICAgbGV0IGluZGV4MiA9IG9sZC5sZW5ndGg7CiAgICBsZXQgY291bnQgPSAwOwogICAgd2hpbGUgKGNvdW50IDwgc2VhcmNoTGVuZ3RoICYmIGVxdWFscyhjdXJyZW50Wy0taW5kZXgxXSwgb2xkWy0taW5kZXgyXSkpCiAgICAgIGNvdW50Kys7CgogICAgcmV0dXJuIGNvdW50OwogIH0KCiAgZnVuY3Rpb24gY2FsY3VsYXRlU3BsaWNlcyhjdXJyZW50LCBwcmV2aW91cykgewogICAgcmV0dXJuIGNhbGNTcGxpY2VzKGN1cnJlbnQsIDAsIGN1cnJlbnQubGVuZ3RoLCBwcmV2aW91cywgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzLmxlbmd0aCk7CiAgfQoKICBmdW5jdGlvbiBlcXVhbHMoY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlKSB7CiAgICByZXR1cm4gY3VycmVudFZhbHVlID09PSBwcmV2aW91c1ZhbHVlOwogIH0KCiAgLyoqCiAgICogQG5hbWVzcGFjZQogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgTW9kdWxlIHRoYXQgcHJvdmlkZXMgdXRpbGl0aWVzIGZvciBkaWZmaW5nIGFycmF5cy4KICAgKi8KICBQb2x5bWVyLkFycmF5U3BsaWNlID0gewogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHNwbGljZSByZWNvcmRzIGluZGljYXRpbmcgdGhlIG1pbmltdW0gZWRpdHMgcmVxdWlyZWQKICAgICAqIHRvIHRyYW5zZm9ybSB0aGUgYHByZXZpb3VzYCBhcnJheSBpbnRvIHRoZSBgY3VycmVudGAgYXJyYXkuCiAgICAgKgogICAgICogU3BsaWNlIHJlY29yZHMgYXJlIG9yZGVyZWQgYnkgaW5kZXggYW5kIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAgICAgKiAtIGBpbmRleGA6IGluZGV4IHdoZXJlIGVkaXQgc3RhcnRlZAogICAgICogLSBgcmVtb3ZlZGA6IGFycmF5IG9mIHJlbW92ZWQgaXRlbXMgZnJvbSB0aGlzIGluZGV4CiAgICAgKiAtIGBhZGRlZENvdW50YDogbnVtYmVyIG9mIGl0ZW1zIGFkZGVkIGF0IHRoaXMgaW5kZXgKICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGJhc2VkIG9uIHRoZSBMZXZlbnNodGVpbiAibWluaW11bSBlZGl0IGRpc3RhbmNlIgogICAgICogYWxnb3JpdGhtLiBOb3RlIHRoYXQgdXBkYXRlcyBhcmUgdHJlYXRlZCBhcyByZW1vdmFsIGZvbGxvd2VkIGJ5IGFkZGl0aW9uLgogICAgICoKICAgICAqIFRoZSB3b3JzdC1jYXNlIHRpbWUgY29tcGxleGl0eSBvZiB0aGlzIGFsZ29yaXRobSBpcyBgTyhsICogcClgCiAgICAgKiAgIGw6IFRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgYXJyYXkKICAgICAqICAgcDogVGhlIGxlbmd0aCBvZiB0aGUgcHJldmlvdXMgYXJyYXkKICAgICAqCiAgICAgKiBIb3dldmVyLCB0aGUgd29yc3QtY2FzZSBjb21wbGV4aXR5IGlzIHJlZHVjZWQgYnkgYW4gYE8obilgIG9wdGltaXphdGlvbgogICAgICogdG8gZGV0ZWN0IGFueSBzaGFyZWQgcHJlZml4ICYgc3VmZml4IGJldHdlZW4gdGhlIHR3byBhcnJheXMgYW5kIG9ubHkKICAgICAqIHBlcmZvcm0gdGhlIG1vcmUgZXhwZW5zaXZlIG1pbmltdW0gZWRpdCBkaXN0YW5jZSBjYWxjdWxhdGlvbiBvdmVyIHRoZQogICAgICogbm9uLXNoYXJlZCBwb3J0aW9ucyBvZiB0aGUgYXJyYXlzLgogICAgICoKICAgICAqIEBmdW5jdGlvbgogICAgICogQG1lbWJlcm9mIFBvbHltZXIuQXJyYXlTcGxpY2UKICAgICAqIEBwYXJhbSB7IUFycmF5fSBjdXJyZW50IFRoZSAiY2hhbmdlZCIgYXJyYXkgZm9yIHdoaWNoIHNwbGljZXMgd2lsbCBiZQogICAgICogY2FsY3VsYXRlZC4KICAgICAqIEBwYXJhbSB7IUFycmF5fSBwcmV2aW91cyBUaGUgInVuY2hhbmdlZCIgb3JpZ2luYWwgYXJyYXkgdG8gY29tcGFyZQogICAgICogYGN1cnJlbnRgIGFnYWluc3QgdG8gZGV0ZXJtaW5lIHRoZSBzcGxpY2VzLgogICAgICogQHJldHVybiB7IUFycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIHNwbGljZSByZWNvcmQgb2JqZWN0cy4gRWFjaCBvZiB0aGVzZQogICAgICogY29udGFpbnM6IGBpbmRleGAgdGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBzcGxpY2Ugb2NjdXJyZWQ7IGByZW1vdmVkYAogICAgICogdGhlIGFycmF5IG9mIHJlbW92ZWQgaXRlbXMgZnJvbSB0aGlzIGxvY2F0aW9uOyBgYWRkZWRDb3VudGAgdGhlIG51bWJlcgogICAgICogb2YgaXRlbXMgYWRkZWQgYXQgdGhpcyBsb2NhdGlvbi4KICAgICAqLwogICAgY2FsY3VsYXRlU3BsaWNlcwogIH07Cgp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIC8qKgogICAqIFJldHVybnMgdHJ1ZSBpZiBgbm9kZWAgaXMgYSBzbG90IGVsZW1lbnQKICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgTm9kZSB0byB0ZXN0LgogICAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gYG5vZGVgIGlzIGEgc2xvdAogICAqIEBwcml2YXRlCiAgICovCiAgZnVuY3Rpb24gaXNTbG90KG5vZGUpIHsKICAgIHJldHVybiAobm9kZS5sb2NhbE5hbWUgPT09ICdzbG90Jyk7CiAgfQoKICAvKioKICAgKiBDbGFzcyB0aGF0IGxpc3RlbnMgZm9yIGNoYW5nZXMgKGFkZGl0aW9ucyBvciByZW1vdmFscykgdG8KICAgKiAiZmxhdHRlbmVkIG5vZGVzIiBvbiBhIGdpdmVuIGBub2RlYC4gVGhlIGxpc3Qgb2YgZmxhdHRlbmVkIG5vZGVzIGNvbnNpc3RzCiAgICogb2YgYSBub2RlJ3MgY2hpbGRyZW4gYW5kLCBmb3IgYW55IGNoaWxkcmVuIHRoYXQgYXJlIGA8c2xvdD5gIGVsZW1lbnRzLAogICAqIHRoZSBleHBhbmRlZCBmbGF0dGVuZWQgbGlzdCBvZiBgYXNzaWduZWROb2Rlc2AuCiAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBvYnNlcnZlZCBub2RlIGhhcyBjaGlsZHJlbiBgPGE+PC9hPjxzbG90Pjwvc2xvdD48Yj48L2I+YAogICAqIGFuZCB0aGUgYDxzbG90PmAgaGFzIG9uZSBgPGRpdj5gIGFzc2lnbmVkIHRvIGl0LCB0aGVuIHRoZSBmbGF0dGVuZWQKICAgKiBub2RlcyBsaXN0IGlzIGA8YT48L2E+PGRpdj48L2Rpdj48Yj48L2I+YC4gSWYgdGhlIGA8c2xvdD5gIGhhcyBvdGhlcgogICAqIGA8c2xvdD5gIGVsZW1lbnRzIGFzc2lnbmVkIHRvIGl0LCB0aGVzZSBhcmUgZmxhdHRlbmVkIGFzIHdlbGwuCiAgICoKICAgKiBUaGUgcHJvdmlkZWQgYGNhbGxiYWNrYCBpcyBjYWxsZWQgd2hlbmV2ZXIgYW55IGNoYW5nZSB0byB0aGlzIGxpc3QKICAgKiBvZiBmbGF0dGVuZWQgbm9kZXMgb2NjdXJzLCB3aGVyZSBhbiBhZGRpdGlvbiBvciByZW1vdmFsIG9mIGEgbm9kZSBpcwogICAqIGNvbnNpZGVyZWQgYSBjaGFuZ2UuIFRoZSBgY2FsbGJhY2tgIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgYW4gb2JqZWN0CiAgICogY29udGFpbmluZyBhbiBhcnJheSBvZiBhbnkgYGFkZGVkTm9kZXNgIGFuZCBgcmVtb3ZlZE5vZGVzYC4KICAgKgogICAqIE5vdGU6IHRoZSBjYWxsYmFjayBpcyBjYWxsZWQgYXN5bmNocm9ub3VzIHRvIGFueSBjaGFuZ2VzCiAgICogYXQgYSBtaWNyb3Rhc2sgY2hlY2twb2ludC4gVGhpcyBpcyBiZWNhdXNlIG9ic2VydmF0aW9uIGlzIHBlcmZvcm1lZCB1c2luZwogICAqIGBNdXRhdGlvbk9ic2VydmVyYCBhbmQgdGhlIGA8c2xvdD5gIGVsZW1lbnQncyBgc2xvdGNoYW5nZWAgZXZlbnQgd2hpY2gKICAgKiBhcmUgYXN5bmNocm9ub3VzLgogICAqCiAgICogQW4gZXhhbXBsZToKICAgKiBgYGBqcwogICAqIGNsYXNzIFRlc3RTZWxmT2JzZXJ2ZSBleHRlbmRzIFBvbHltZXIuRWxlbWVudCB7CiAgICogICBzdGF0aWMgZ2V0IGlzKCkgeyByZXR1cm4gJ3Rlc3Qtc2VsZi1vYnNlcnZlJzt9CiAgICogICBjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgKiAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgKiAgICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUG9seW1lci5GbGF0dGVuZWROb2Rlc09ic2VydmVyKHRoaXMsIChpbmZvKSA9PiB7CiAgICogICAgICAgdGhpcy5pbmZvID0gaW5mbzsKICAgKiAgICAgfSk7CiAgICogICB9CiAgICogICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgKiAgICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgKiAgICAgdGhpcy5fb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwogICAqICAgfQogICAqIH0KICAgKiBjdXN0b21FbGVtZW50cy5kZWZpbmUoVGVzdFNlbGZPYnNlcnZlLmlzLCBUZXN0U2VsZk9ic2VydmUpOwogICAqIGBgYAogICAqCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBDbGFzcyB0aGF0IGxpc3RlbnMgZm9yIGNoYW5nZXMgKGFkZGl0aW9ucyBvciByZW1vdmFscykgdG8KICAgKiAiZmxhdHRlbmVkIG5vZGVzIiBvbiBhIGdpdmVuIGBub2RlYC4KICAgKi8KICBjbGFzcyBGbGF0dGVuZWROb2Rlc09ic2VydmVyIHsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgZmxhdHRlbmVkIG5vZGVzIGZvciB0aGUgZ2l2ZW4gYG5vZGVgLgogICAgICogVGhpcyBsaXN0IGNvbnNpc3RzIG9mIGEgbm9kZSdzIGNoaWxkcmVuIGFuZCwgZm9yIGFueSBjaGlsZHJlbgogICAgICogdGhhdCBhcmUgYDxzbG90PmAgZWxlbWVudHMsIHRoZSBleHBhbmRlZCBmbGF0dGVuZWQgbGlzdCBvZiBgYXNzaWduZWROb2Rlc2AuCiAgICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIG9ic2VydmVkIG5vZGUgaGFzIGNoaWxkcmVuIGA8YT48L2E+PHNsb3Q+PC9zbG90PjxiPjwvYj5gCiAgICAgKiBhbmQgdGhlIGA8c2xvdD5gIGhhcyBvbmUgYDxkaXY+YCBhc3NpZ25lZCB0byBpdCwgdGhlbiB0aGUgZmxhdHRlbmVkCiAgICAgKiBub2RlcyBsaXN0IGlzIGA8YT48L2E+PGRpdj48L2Rpdj48Yj48L2I+YC4gSWYgdGhlIGA8c2xvdD5gIGhhcyBvdGhlcgogICAgICogYDxzbG90PmAgZWxlbWVudHMgYXNzaWduZWQgdG8gaXQsIHRoZXNlIGFyZSBmbGF0dGVuZWQgYXMgd2VsbC4KICAgICAqCiAgICAgKiBAcGFyYW0ge0hUTUxFbGVtZW50fEhUTUxTbG90RWxlbWVudH0gbm9kZSBUaGUgbm9kZSBmb3Igd2hpY2ggdG8gcmV0dXJuIHRoZSBsaXN0IG9mIGZsYXR0ZW5lZCBub2Rlcy4KICAgICAqIEByZXR1cm4ge0FycmF5fSBUaGUgbGlzdCBvZiBmbGF0dGVuZWQgbm9kZXMgZm9yIHRoZSBnaXZlbiBgbm9kZWAuCiAgICAqLwogICAgc3RhdGljIGdldEZsYXR0ZW5lZE5vZGVzKG5vZGUpIHsKICAgICAgaWYgKGlzU2xvdChub2RlKSkgewogICAgICAgIG5vZGUgPSAvKiogQHR5cGUge0hUTUxTbG90RWxlbWVudH0gKi8obm9kZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1hc3NpZ24KICAgICAgICByZXR1cm4gbm9kZS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiB0cnVlfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVzKS5tYXAoKG5vZGUpID0+IHsKICAgICAgICAgIGlmIChpc1Nsb3Qobm9kZSkpIHsKICAgICAgICAgICAgbm9kZSA9IC8qKiBAdHlwZSB7SFRNTFNsb3RFbGVtZW50fSAqLyhub2RlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWFzc2lnbgogICAgICAgICAgICByZXR1cm4gbm9kZS5hc3NpZ25lZE5vZGVzKHtmbGF0dGVuOiB0cnVlfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gW25vZGVdOwogICAgICAgICAgfQogICAgICAgIH0pLnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHtFbGVtZW50fSB0YXJnZXQgTm9kZSBvbiB3aGljaCB0byBsaXN0ZW4gZm9yIGNoYW5nZXMuCiAgICAgKiBAcGFyYW0gez9mdW5jdGlvbighRWxlbWVudCwgeyB0YXJnZXQ6ICFFbGVtZW50LCBhZGRlZE5vZGVzOiAhQXJyYXk8IUVsZW1lbnQ+LCByZW1vdmVkTm9kZXM6ICFBcnJheTwhRWxlbWVudD4gfSk6dm9pZH0gY2FsbGJhY2sgRnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlcmUgYXJlIGFkZGl0aW9ucwogICAgICogb3IgcmVtb3ZhbHMgZnJvbSB0aGUgdGFyZ2V0J3MgbGlzdCBvZiBmbGF0dGVuZWQgbm9kZXMuCiAgICAqLwogICAgY29uc3RydWN0b3IodGFyZ2V0LCBjYWxsYmFjaykgewogICAgICAvKioKICAgICAgICogQHR5cGUge011dGF0aW9uT2JzZXJ2ZXJ9CiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXIgPSBudWxsOwogICAgICAvKioKICAgICAgICogQHR5cGUge011dGF0aW9uT2JzZXJ2ZXJ9CiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyID0gbnVsbDsKICAgICAgdGhpcy5fY29ubmVjdGVkID0gZmFsc2U7CiAgICAgIC8qKgogICAgICAgKiBAdHlwZSB7RWxlbWVudH0KICAgICAgICogQHByaXZhdGUKICAgICAgICovCiAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrOwogICAgICB0aGlzLl9lZmZlY3RpdmVOb2RlcyA9IFtdOwogICAgICB0aGlzLl9vYnNlcnZlciA9IG51bGw7CiAgICAgIHRoaXMuX3NjaGVkdWxlZCA9IGZhbHNlOwogICAgICAvKioKICAgICAgICogQHR5cGUge2Z1bmN0aW9uKCl9CiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICB0aGlzLl9ib3VuZFNjaGVkdWxlID0gKCkgPT4gewogICAgICAgIHRoaXMuX3NjaGVkdWxlKCk7CiAgICAgIH07CiAgICAgIHRoaXMuY29ubmVjdCgpOwogICAgICB0aGlzLl9zY2hlZHVsZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQWN0aXZhdGVzIGFuIG9ic2VydmVyLiBUaGlzIG1ldGhvZCBpcyBhdXRvbWF0aWNhbGx5IGNhbGxlZCB3aGVuCiAgICAgKiBhIGBGbGF0dGVuZWROb2Rlc09ic2VydmVyYCBpcyBjcmVhdGVkLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgdG8KICAgICAqIHJlLWFjdGl2YXRlIGFuIG9ic2VydmVyIHRoYXQgaGFzIGJlZW4gZGVhY3RpdmF0ZWQgdmlhIHRoZSBgZGlzY29ubmVjdGAgbWV0aG9kLgogICAgICoKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIGNvbm5lY3QoKSB7CiAgICAgIGlmIChpc1Nsb3QodGhpcy5fdGFyZ2V0KSkgewogICAgICAgIHRoaXMuX2xpc3RlblNsb3RzKFt0aGlzLl90YXJnZXRdKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLl90YXJnZXQuY2hpbGRyZW4pIHsKICAgICAgICB0aGlzLl9saXN0ZW5TbG90cyh0aGlzLl90YXJnZXQuY2hpbGRyZW4pOwogICAgICAgIGlmICh3aW5kb3cuU2hhZHlET00pIHsKICAgICAgICAgIHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlciA9CiAgICAgICAgICAgIFNoYWR5RE9NLm9ic2VydmVDaGlsZHJlbih0aGlzLl90YXJnZXQsIChtdXRhdGlvbnMpID0+IHsKICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzTXV0YXRpb25zKG11dGF0aW9ucyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyID0KICAgICAgICAgICAgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKG11dGF0aW9ucykgPT4gewogICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NNdXRhdGlvbnMobXV0YXRpb25zKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyLm9ic2VydmUodGhpcy5fdGFyZ2V0LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWFjdGl2YXRlcyB0aGUgZmxhdHRlbmVkIG5vZGVzIG9ic2VydmVyLiBBZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kCiAgICAgKiB0aGUgb2JzZXJ2ZXIgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdlcyB0byBmbGF0dGVuZWQgbm9kZXMKICAgICAqIG9jY3VyLiBUaGUgYGNvbm5lY3RgIG1ldGhvZCBtYXkgYmUgc3Vic2VxdWVudGx5IGNhbGxlZCB0byByZWFjdGl2YXRlCiAgICAgKiB0aGUgb2JzZXJ2ZXIuCiAgICAgKgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgZGlzY29ubmVjdCgpIHsKICAgICAgaWYgKGlzU2xvdCh0aGlzLl90YXJnZXQpKSB7CiAgICAgICAgdGhpcy5fdW5saXN0ZW5TbG90cyhbdGhpcy5fdGFyZ2V0XSk7CiAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFyZ2V0LmNoaWxkcmVuKSB7CiAgICAgICAgdGhpcy5fdW5saXN0ZW5TbG90cyh0aGlzLl90YXJnZXQuY2hpbGRyZW4pOwogICAgICAgIGlmICh3aW5kb3cuU2hhZHlET00gJiYgdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyKSB7CiAgICAgICAgICBTaGFkeURPTS51bm9ic2VydmVDaGlsZHJlbih0aGlzLl9zaGFkeUNoaWxkcmVuT2JzZXJ2ZXIpOwogICAgICAgICAgdGhpcy5fc2hhZHlDaGlsZHJlbk9ic2VydmVyID0gbnVsbDsKICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIpIHsKICAgICAgICAgIHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwogICAgICAgICAgdGhpcy5fbmF0aXZlQ2hpbGRyZW5PYnNlcnZlciA9IG51bGw7CiAgICAgICAgfQogICAgICB9CiAgICAgIHRoaXMuX2Nvbm5lY3RlZCA9IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIF9zY2hlZHVsZSgpIHsKICAgICAgaWYgKCF0aGlzLl9zY2hlZHVsZWQpIHsKICAgICAgICB0aGlzLl9zY2hlZHVsZWQgPSB0cnVlOwogICAgICAgIFBvbHltZXIuQXN5bmMubWljcm9UYXNrLnJ1bigoKSA9PiB0aGlzLmZsdXNoKCkpOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0ge0FycmF5PE11dGF0aW9uUmVjb3JkPn0gbXV0YXRpb25zIE11dGF0aW9ucyBzaWduYWxlZCBieSB0aGUgbXV0YXRpb24gb2JzZXJ2ZXIKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBfcHJvY2Vzc011dGF0aW9ucyhtdXRhdGlvbnMpIHsKICAgICAgdGhpcy5fcHJvY2Vzc1Nsb3RNdXRhdGlvbnMobXV0YXRpb25zKTsKICAgICAgdGhpcy5mbHVzaCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHtBcnJheTxNdXRhdGlvblJlY29yZD59IG11dGF0aW9ucyBNdXRhdGlvbnMgc2lnbmFsZWQgYnkgdGhlIG11dGF0aW9uIG9ic2VydmVyCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgX3Byb2Nlc3NTbG90TXV0YXRpb25zKG11dGF0aW9ucykgewogICAgICBpZiAobXV0YXRpb25zKSB7CiAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbXV0YXRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBsZXQgbXV0YXRpb24gPSBtdXRhdGlvbnNbaV07CiAgICAgICAgICBpZiAobXV0YXRpb24uYWRkZWROb2RlcykgewogICAgICAgICAgICB0aGlzLl9saXN0ZW5TbG90cyhtdXRhdGlvbi5hZGRlZE5vZGVzKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMpIHsKICAgICAgICAgICAgdGhpcy5fdW5saXN0ZW5TbG90cyhtdXRhdGlvbi5yZW1vdmVkTm9kZXMpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRmx1c2hlcyB0aGUgb2JzZXJ2ZXIgY2F1c2luZyBhbnkgcGVuZGluZyBjaGFuZ2VzIHRvIGJlIGltbWVkaWF0ZWx5CiAgICAgKiBkZWxpdmVyZWQgdGhlIG9ic2VydmVyIGNhbGxiYWNrLiBCeSBkZWZhdWx0IHRoZXNlIGNoYW5nZXMgYXJlIGRlbGl2ZXJlZAogICAgICogYXN5bmNocm9ub3VzbHkgYXQgdGhlIG5leHQgbWljcm90YXNrIGNoZWNrcG9pbnQuCiAgICAgKgogICAgICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwZW5kaW5nIGNoYW5nZXMgY2F1c2VkIHRoZSBvYnNlcnZlcgogICAgICogY2FsbGJhY2sgdG8gcnVuLgogICAgICovCiAgICBmbHVzaCgpIHsKICAgICAgaWYgKCF0aGlzLl9jb25uZWN0ZWQpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgaWYgKHdpbmRvdy5TaGFkeURPTSkgewogICAgICAgIFNoYWR5RE9NLmZsdXNoKCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuX25hdGl2ZUNoaWxkcmVuT2JzZXJ2ZXIpIHsKICAgICAgICB0aGlzLl9wcm9jZXNzU2xvdE11dGF0aW9ucyh0aGlzLl9uYXRpdmVDaGlsZHJlbk9ic2VydmVyLnRha2VSZWNvcmRzKCkpOwogICAgICB9IGVsc2UgaWYgKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlcikgewogICAgICAgIHRoaXMuX3Byb2Nlc3NTbG90TXV0YXRpb25zKHRoaXMuX3NoYWR5Q2hpbGRyZW5PYnNlcnZlci50YWtlUmVjb3JkcygpKTsKICAgICAgfQogICAgICB0aGlzLl9zY2hlZHVsZWQgPSBmYWxzZTsKICAgICAgbGV0IGluZm8gPSB7CiAgICAgICAgdGFyZ2V0OiB0aGlzLl90YXJnZXQsCiAgICAgICAgYWRkZWROb2RlczogW10sCiAgICAgICAgcmVtb3ZlZE5vZGVzOiBbXQogICAgICB9OwogICAgICBsZXQgbmV3Tm9kZXMgPSB0aGlzLmNvbnN0cnVjdG9yLmdldEZsYXR0ZW5lZE5vZGVzKHRoaXMuX3RhcmdldCk7CiAgICAgIGxldCBzcGxpY2VzID0gUG9seW1lci5BcnJheVNwbGljZS5jYWxjdWxhdGVTcGxpY2VzKG5ld05vZGVzLAogICAgICAgIHRoaXMuX2VmZmVjdGl2ZU5vZGVzKTsKICAgICAgLy8gcHJvY2VzcyByZW1vdmFscwogICAgICBmb3IgKGxldCBpPTAsIHM7IChpPHNwbGljZXMubGVuZ3RoKSAmJiAocz1zcGxpY2VzW2ldKTsgaSsrKSB7CiAgICAgICAgZm9yIChsZXQgaj0wLCBuOyAoaiA8IHMucmVtb3ZlZC5sZW5ndGgpICYmIChuPXMucmVtb3ZlZFtqXSk7IGorKykgewogICAgICAgICAgaW5mby5yZW1vdmVkTm9kZXMucHVzaChuKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gcHJvY2VzcyBhZGRzCiAgICAgIGZvciAobGV0IGk9MCwgczsgKGk8c3BsaWNlcy5sZW5ndGgpICYmIChzPXNwbGljZXNbaV0pOyBpKyspIHsKICAgICAgICBmb3IgKGxldCBqPXMuaW5kZXg7IGogPCBzLmluZGV4ICsgcy5hZGRlZENvdW50OyBqKyspIHsKICAgICAgICAgIGluZm8uYWRkZWROb2Rlcy5wdXNoKG5ld05vZGVzW2pdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gdXBkYXRlIGNhY2hlCiAgICAgIHRoaXMuX2VmZmVjdGl2ZU5vZGVzID0gbmV3Tm9kZXM7CiAgICAgIGxldCBkaWRGbHVzaCA9IGZhbHNlOwogICAgICBpZiAoaW5mby5hZGRlZE5vZGVzLmxlbmd0aCB8fCBpbmZvLnJlbW92ZWROb2Rlcy5sZW5ndGgpIHsKICAgICAgICBkaWRGbHVzaCA9IHRydWU7CiAgICAgICAgdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMuX3RhcmdldCwgaW5mbyk7CiAgICAgIH0KICAgICAgcmV0dXJuIGRpZEZsdXNoOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHshQXJyYXk8RWxlbWVudHxOb2RlPnwhTm9kZUxpc3Q8Tm9kZT59IG5vZGVMaXN0IE5vZGVzIHRoYXQgY291bGQgY2hhbmdlCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgX2xpc3RlblNsb3RzKG5vZGVMaXN0KSB7CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IG5vZGVMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IG4gPSBub2RlTGlzdFtpXTsKICAgICAgICBpZiAoaXNTbG90KG4pKSB7CiAgICAgICAgICBuLmFkZEV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9ib3VuZFNjaGVkdWxlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSB7IUFycmF5PEVsZW1lbnR8Tm9kZT58IU5vZGVMaXN0PE5vZGU+fSBub2RlTGlzdCBOb2RlcyB0aGF0IGNvdWxkIGNoYW5nZQogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIF91bmxpc3RlblNsb3RzKG5vZGVMaXN0KSB7CiAgICAgIGZvciAobGV0IGk9MDsgaSA8IG5vZGVMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IG4gPSBub2RlTGlzdFtpXTsKICAgICAgICBpZiAoaXNTbG90KG4pKSB7CiAgICAgICAgICBuLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Nsb3RjaGFuZ2UnLCB0aGlzLl9ib3VuZFNjaGVkdWxlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgfQoKICBQb2x5bWVyLkZsYXR0ZW5lZE5vZGVzT2JzZXJ2ZXIgPSBGbGF0dGVuZWROb2Rlc09ic2VydmVyOwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICBsZXQgZGVib3VuY2VyUXVldWUgPSBbXTsKCiAgLyoqCiAgICogQWRkcyBhIGBQb2x5bWVyLkRlYm91bmNlcmAgdG8gYSBsaXN0IG9mIGdsb2JhbGx5IGZsdXNoYWJsZSB0YXNrcy4KICAgKgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHBhcmFtIHshUG9seW1lci5EZWJvdW5jZXJ9IGRlYm91bmNlciBEZWJvdW5jZXIgdG8gZW5xdWV1ZQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci5lbnF1ZXVlRGVib3VuY2VyID0gZnVuY3Rpb24oZGVib3VuY2VyKSB7CiAgICBkZWJvdW5jZXJRdWV1ZS5wdXNoKGRlYm91bmNlcik7CiAgfTsKCiAgZnVuY3Rpb24gZmx1c2hEZWJvdW5jZXJzKCkgewogICAgY29uc3QgZGlkRmx1c2ggPSBCb29sZWFuKGRlYm91bmNlclF1ZXVlLmxlbmd0aCk7CiAgICB3aGlsZSAoZGVib3VuY2VyUXVldWUubGVuZ3RoKSB7CiAgICAgIHRyeSB7CiAgICAgICAgZGVib3VuY2VyUXVldWUuc2hpZnQoKS5mbHVzaCgpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIHRocm93IGU7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBkaWRGbHVzaDsKICB9CgogIC8qKgogICAqIEZvcmNlcyBzZXZlcmFsIGNsYXNzZXMgb2YgYXN5bmNocm9ub3VzbHkgcXVldWVkIHRhc2tzIHRvIGZsdXNoOgogICAqIC0gRGVib3VuY2VycyBhZGRlZCB2aWEgYGVucXVldWVEZWJvdW5jZXJgCiAgICogLSBTaGFkeURPTSBkaXN0cmlidXRpb24KICAgKgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHJldHVybiB7dm9pZH0KICAgKi8KICBQb2x5bWVyLmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICBsZXQgc2hhZHlET00sIGRlYm91bmNlcnM7CiAgICBkbyB7CiAgICAgIHNoYWR5RE9NID0gd2luZG93LlNoYWR5RE9NICYmIFNoYWR5RE9NLmZsdXNoKCk7CiAgICAgIGlmICh3aW5kb3cuU2hhZHlDU1MgJiYgd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltKSB7CiAgICAgICAgd2luZG93LlNoYWR5Q1NTLlNjb3BpbmdTaGltLmZsdXNoKCk7CiAgICAgIH0KICAgICAgZGVib3VuY2VycyA9IGZsdXNoRGVib3VuY2VycygpOwogICAgfSB3aGlsZSAoc2hhZHlET00gfHwgZGVib3VuY2Vycyk7CiAgfTsKCn0pKCk7CgoKKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgY29uc3QgcCA9IEVsZW1lbnQucHJvdG90eXBlOwogIC8qKgogICAqIEBjb25zdCB7ZnVuY3Rpb24odGhpczpOb2RlLCBzdHJpbmcpOiBib29sZWFufQogICAqLwogIGNvbnN0IG5vcm1hbGl6ZWRNYXRjaGVzU2VsZWN0b3IgPSBwLm1hdGNoZXMgfHwgcC5tYXRjaGVzU2VsZWN0b3IgfHwKICAgIHAubW96TWF0Y2hlc1NlbGVjdG9yIHx8IHAubXNNYXRjaGVzU2VsZWN0b3IgfHwKICAgIHAub01hdGNoZXNTZWxlY3RvciB8fCBwLndlYmtpdE1hdGNoZXNTZWxlY3RvcjsKCiAgLyoqCiAgICogQ3Jvc3MtcGxhdGZvcm0gYGVsZW1lbnQubWF0Y2hlc2Agc2hpbS4KICAgKgogICAqIEBmdW5jdGlvbiBtYXRjaGVzU2VsZWN0b3IKICAgKiBAbWVtYmVyb2YgUG9seW1lci5kb20KICAgKiBAcGFyYW0geyFOb2RlfSBub2RlIE5vZGUgdG8gY2hlY2sgc2VsZWN0b3IgYWdhaW5zdAogICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBTZWxlY3RvciB0byBtYXRjaAogICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbm9kZSBtYXRjaGVkIHNlbGVjdG9yCiAgICovCiAgY29uc3QgbWF0Y2hlc1NlbGVjdG9yID0gZnVuY3Rpb24obm9kZSwgc2VsZWN0b3IpIHsKICAgIHJldHVybiBub3JtYWxpemVkTWF0Y2hlc1NlbGVjdG9yLmNhbGwobm9kZSwgc2VsZWN0b3IpOwogIH07CgogIC8qKgogICAqIE5vZGUgQVBJIHdyYXBwZXIgY2xhc3MgcmV0dXJuZWQgZnJvbSBgUG9seW1lci5kb20uKHRhcmdldClgIHdoZW4KICAgKiBgdGFyZ2V0YCBpcyBhIGBOb2RlYC4KICAgKgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICovCiAgY2xhc3MgRG9tQXBpIHsKCiAgICAvKioKICAgICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSBOb2RlIGZvciB3aGljaCB0byBjcmVhdGUgYSBQb2x5bWVyLmRvbSBoZWxwZXIgb2JqZWN0LgogICAgICovCiAgICBjb25zdHJ1Y3Rvcihub2RlKSB7CiAgICAgIHRoaXMubm9kZSA9IG5vZGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGluc3RhbmNlIG9mIGBQb2x5bWVyLkZsYXR0ZW5lZE5vZGVzT2JzZXJ2ZXJgIHRoYXQKICAgICAqIGxpc3RlbnMgZm9yIG5vZGUgY2hhbmdlcyBvbiB0aGlzIGVsZW1lbnQuCiAgICAgKgogICAgICogQHBhcmFtIHtmdW5jdGlvbighRWxlbWVudCwgeyB0YXJnZXQ6ICFFbGVtZW50LCBhZGRlZE5vZGVzOiAhQXJyYXk8IUVsZW1lbnQ+LCByZW1vdmVkTm9kZXM6ICFBcnJheTwhRWxlbWVudD4gfSk6dm9pZH0gY2FsbGJhY2sgQ2FsbGVkIHdoZW4gZGlyZWN0IG9yIGRpc3RyaWJ1dGVkIGNoaWxkcmVuCiAgICAgKiAgIG9mIHRoaXMgZWxlbWVudCBjaGFuZ2VzCiAgICAgKiBAcmV0dXJuIHshUG9seW1lci5GbGF0dGVuZWROb2Rlc09ic2VydmVyfSBPYnNlcnZlciBpbnN0YW5jZQogICAgICovCiAgICBvYnNlcnZlTm9kZXMoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIG5ldyBQb2x5bWVyLkZsYXR0ZW5lZE5vZGVzT2JzZXJ2ZXIodGhpcy5ub2RlLCBjYWxsYmFjayk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEaXNjb25uZWN0cyBhbiBvYnNlcnZlciBwcmV2aW91c2x5IGNyZWF0ZWQgdmlhIGBvYnNlcnZlTm9kZXNgCiAgICAgKgogICAgICogQHBhcmFtIHshUG9seW1lci5GbGF0dGVuZWROb2Rlc09ic2VydmVyfSBvYnNlcnZlckhhbmRsZSBPYnNlcnZlciBpbnN0YW5jZQogICAgICogICB0byBkaXNjb25uZWN0LgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgdW5vYnNlcnZlTm9kZXMob2JzZXJ2ZXJIYW5kbGUpIHsKICAgICAgb2JzZXJ2ZXJIYW5kbGUuZGlzY29ubmVjdCgpOwogICAgfQoKICAgIC8qKgogICAgICogUHJvdmlkZWQgYXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSBBUEkgb25seS4gIFRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIG5vdGlmeU9ic2VydmVyKCkge30KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgbm9kZSBpcyBjb250YWluZWQgd2l0aCB0aGlzIGVsZW1lbnQncwogICAgICogbGlnaHQtRE9NIGNoaWxkcmVuIG9yIHNoYWRvdyByb290LCBpbmNsdWRpbmcgYW55IG5lc3RlZCBzaGFkb3cgcm9vdHMKICAgICAqIG9mIGNoaWxkcmVuIHRoZXJlaW4uCiAgICAgKgogICAgICogQHBhcmFtIHtOb2RlfSBub2RlIE5vZGUgdG8gdGVzdAogICAgICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBgbm9kZWAgaXMgY29udGFpbmVkIHdpdGhpbgogICAgICogICB0aGlzIGVsZW1lbnQncyBsaWdodCBvciBzaGFkb3cgRE9NLgogICAgICovCiAgICBkZWVwQ29udGFpbnMobm9kZSkgewogICAgICBpZiAodGhpcy5ub2RlLmNvbnRhaW5zKG5vZGUpKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgbGV0IG4gPSBub2RlOwogICAgICBsZXQgZG9jID0gbm9kZS5vd25lckRvY3VtZW50OwogICAgICAvLyB3YWxrIGZyb20gbm9kZSB0byBgdGhpc2Agb3IgYGRvY3VtZW50YAogICAgICB3aGlsZSAobiAmJiBuICE9PSBkb2MgJiYgbiAhPT0gdGhpcy5ub2RlKSB7CiAgICAgICAgLy8gdXNlIGxvZ2ljYWwgcGFyZW50bm9kZSwgb3IgbmF0aXZlIFNoYWRvd1Jvb3QgaG9zdAogICAgICAgIG4gPSBuLnBhcmVudE5vZGUgfHwgbi5ob3N0OwogICAgICB9CiAgICAgIHJldHVybiBuID09PSB0aGlzLm5vZGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByb290IG5vZGUgb2YgdGhpcyBub2RlLiAgRXF1aXZhbGVudCB0byBgZ2V0Um9vZE5vZGUoKWAuCiAgICAgKgogICAgICogQHJldHVybiB7Tm9kZX0gVG9wIG1vc3QgZWxlbWVudCBpbiB0aGUgZG9tIHRyZWUgaW4gd2hpY2ggdGhlIG5vZGUKICAgICAqIGV4aXN0cy4gSWYgdGhlIG5vZGUgaXMgY29ubmVjdGVkIHRvIGEgZG9jdW1lbnQgdGhpcyBpcyBlaXRoZXIgYQogICAgICogc2hhZG93Um9vdCBvciB0aGUgZG9jdW1lbnQ7IG90aGVyd2lzZSwgaXQgbWF5IGJlIHRoZSBub2RlCiAgICAgKiBpdHNlbGYgb3IgYSBub2RlIG9yIGRvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgaXQuCiAgICAgKi8KICAgIGdldE93bmVyUm9vdCgpIHsKICAgICAgcmV0dXJuIHRoaXMubm9kZS5nZXRSb290Tm9kZSgpOwogICAgfQoKICAgIC8qKgogICAgICogRm9yIHNsb3QgZWxlbWVudHMsIHJldHVybnMgdGhlIG5vZGVzIGFzc2lnbmVkIHRvIHRoZSBzbG90OyBvdGhlcndpc2UKICAgICAqIGFuIGVtcHR5IGFycmF5LiBJdCBpcyBlcXVpdmFsZW50IHRvIGA8c2xvdD4uYWRkaWduZWROb2Rlcyh7ZmxhdHRlbjp0cnVlfSlgLgogICAgICoKICAgICAqIEByZXR1cm4geyFBcnJheTwhTm9kZT59IEFycmF5IG9mIGFzc2lnbmVkIG5vZGVzCiAgICAgKi8KICAgIGdldERpc3RyaWJ1dGVkTm9kZXMoKSB7CiAgICAgIHJldHVybiAodGhpcy5ub2RlLmxvY2FsTmFtZSA9PT0gJ3Nsb3QnKSA/CiAgICAgICAgdGhpcy5ub2RlLmFzc2lnbmVkTm9kZXMoe2ZsYXR0ZW46IHRydWV9KSA6CiAgICAgICAgW107CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzbG90cyB0aGlzIGVsZW1lbnQgd2FzIGRpc3RyaWJ1dGVkIHRvLgogICAgICoKICAgICAqIEByZXR1cm4geyFBcnJheTwhSFRNTFNsb3RFbGVtZW50Pn0gRGVzY3JpcHRpb24KICAgICAqLwogICAgZ2V0RGVzdGluYXRpb25JbnNlcnRpb25Qb2ludHMoKSB7CiAgICAgIGxldCBpcCQgPSBbXTsKICAgICAgbGV0IG4gPSB0aGlzLm5vZGUuYXNzaWduZWRTbG90OwogICAgICB3aGlsZSAobikgewogICAgICAgIGlwJC5wdXNoKG4pOwogICAgICAgIG4gPSBuLmFzc2lnbmVkU2xvdDsKICAgICAgfQogICAgICByZXR1cm4gaXAkOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsbHMgYGltcG9ydE5vZGVgIG9uIHRoZSBgb3duZXJEb2N1bWVudGAgZm9yIHRoaXMgbm9kZS4KICAgICAqCiAgICAgKiBAcGFyYW0geyFOb2RlfSBub2RlIE5vZGUgdG8gaW1wb3J0CiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRlZXAgVHJ1ZSBpZiB0aGUgbm9kZSBzaG91bGQgYmUgY2xvbmVkIGRlZXBseSBkdXJpbmcKICAgICAqICAgaW1wb3J0CiAgICAgKiBAcmV0dXJuIHtOb2RlfSBDbG9uZSBvZiBnaXZlbiBub2RlIGltcG9ydGVkIHRvIHRoaXMgb3duZXIgZG9jdW1lbnQKICAgICAqLwogICAgaW1wb3J0Tm9kZShub2RlLCBkZWVwKSB7CiAgICAgIGxldCBkb2MgPSB0aGlzLm5vZGUgaW5zdGFuY2VvZiBEb2N1bWVudCA/IHRoaXMubm9kZSA6CiAgICAgICAgdGhpcy5ub2RlLm93bmVyRG9jdW1lbnQ7CiAgICAgIHJldHVybiBkb2MuaW1wb3J0Tm9kZShub2RlLCBkZWVwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4geyFBcnJheTwhTm9kZT59IFJldHVybnMgYSBmbGF0dGVuZWQgbGlzdCBvZiBhbGwgY2hpbGQgbm9kZXMgYW5kCiAgICAgKiBub2RlcyBhc3NpZ25lZCB0byBjaGlsZCBzbG90cy4KICAgICAqLwogICAgZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpIHsKICAgICAgcmV0dXJuIFBvbHltZXIuRmxhdHRlbmVkTm9kZXNPYnNlcnZlci5nZXRGbGF0dGVuZWROb2Rlcyh0aGlzLm5vZGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGZpbHRlcmVkIGxpc3Qgb2YgZmxhdHRlbmVkIGNoaWxkIGVsZW1lbnRzIGZvciB0aGlzIGVsZW1lbnQgYmFzZWQKICAgICAqIG9uIHRoZSBnaXZlbiBzZWxlY3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IgU2VsZWN0b3IgdG8gZmlsdGVyIG5vZGVzIGFnYWluc3QKICAgICAqIEByZXR1cm4geyFBcnJheTwhSFRNTEVsZW1lbnQ+fSBMaXN0IG9mIGZsYXR0ZW5lZCBjaGlsZCBlbGVtZW50cwogICAgICovCiAgICBxdWVyeURpc3RyaWJ1dGVkRWxlbWVudHMoc2VsZWN0b3IpIHsKICAgICAgbGV0IGMkID0gdGhpcy5nZXRFZmZlY3RpdmVDaGlsZE5vZGVzKCk7CiAgICAgIGxldCBsaXN0ID0gW107CiAgICAgIGZvciAobGV0IGk9MCwgbD1jJC5sZW5ndGgsIGM7IChpPGwpICYmIChjPWMkW2ldKTsgaSsrKSB7CiAgICAgICAgaWYgKChjLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgJiYKICAgICAgICAgICAgbWF0Y2hlc1NlbGVjdG9yKGMsIHNlbGVjdG9yKSkgewogICAgICAgICAgbGlzdC5wdXNoKGMpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbGlzdDsKICAgIH0KCiAgICAvKioKICAgICAqIEZvciBzaGFkb3cgcm9vdHMsIHJldHVybnMgdGhlIGN1cnJlbnRseSBmb2N1c2VkIGVsZW1lbnQgd2l0aGluIHRoaXMKICAgICAqIHNoYWRvdyByb290LgogICAgICoKICAgICAqIEByZXR1cm4ge05vZGV8dW5kZWZpbmVkfSBDdXJyZW50bHkgZm9jdXNlZCBlbGVtZW50CiAgICAgKi8KICAgIGdldCBhY3RpdmVFbGVtZW50KCkgewogICAgICBsZXQgbm9kZSA9IHRoaXMubm9kZTsKICAgICAgcmV0dXJuIG5vZGUuX2FjdGl2ZUVsZW1lbnQgIT09IHVuZGVmaW5lZCA/IG5vZGUuX2FjdGl2ZUVsZW1lbnQgOiBub2RlLmFjdGl2ZUVsZW1lbnQ7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBmb3J3YXJkTWV0aG9kcyhwcm90bywgbWV0aG9kcykgewogICAgZm9yIChsZXQgaT0wOyBpIDwgbWV0aG9kcy5sZW5ndGg7IGkrKykgewogICAgICBsZXQgbWV0aG9kID0gbWV0aG9kc1tpXTsKICAgICAgLyogZXNsaW50LWRpc2FibGUgdmFsaWQtanNkb2MgKi8KICAgICAgcHJvdG9bbWV0aG9kXSA9IC8qKiBAdGhpcyB7RG9tQXBpfSAqLyBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy5ub2RlW21ldGhvZF0uYXBwbHkodGhpcy5ub2RlLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgICAvKiBlc2xpbnQtZW5hYmxlICovCiAgICB9CiAgfQoKICBmdW5jdGlvbiBmb3J3YXJkUmVhZE9ubHlQcm9wZXJ0aWVzKHByb3RvLCBwcm9wZXJ0aWVzKSB7CiAgICBmb3IgKGxldCBpPTA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGxldCBuYW1lID0gcHJvcGVydGllc1tpXTsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBuYW1lLCB7CiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgIGNvbnN0IGRvbUFwaSA9IC8qKiBAdHlwZSB7RG9tQXBpfSAqLyh0aGlzKTsKICAgICAgICAgIHJldHVybiBkb21BcGkubm9kZVtuYW1lXTsKICAgICAgICB9LAogICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICB9KTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGZvcndhcmRQcm9wZXJ0aWVzKHByb3RvLCBwcm9wZXJ0aWVzKSB7CiAgICBmb3IgKGxldCBpPTA7IGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGxldCBuYW1lID0gcHJvcGVydGllc1tpXTsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBuYW1lLCB7CiAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgIGNvbnN0IGRvbUFwaSA9IC8qKiBAdHlwZSB7RG9tQXBpfSAqLyh0aGlzKTsKICAgICAgICAgIHJldHVybiBkb21BcGkubm9kZVtuYW1lXTsKICAgICAgICB9LAogICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgIC8qKiBAdHlwZSB7RG9tQXBpfSAqLyAodGhpcykubm9kZVtuYW1lXSA9IHZhbHVlOwogICAgICAgIH0sCiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCiAgICAgIH0pOwogICAgfQogIH0KCiAgZm9yd2FyZE1ldGhvZHMoRG9tQXBpLnByb3RvdHlwZSwgWwogICAgJ2Nsb25lTm9kZScsICdhcHBlbmRDaGlsZCcsICdpbnNlcnRCZWZvcmUnLCAncmVtb3ZlQ2hpbGQnLAogICAgJ3JlcGxhY2VDaGlsZCcsICdzZXRBdHRyaWJ1dGUnLCAncmVtb3ZlQXR0cmlidXRlJywKICAgICdxdWVyeVNlbGVjdG9yJywgJ3F1ZXJ5U2VsZWN0b3JBbGwnCiAgXSk7CgogIGZvcndhcmRSZWFkT25seVByb3BlcnRpZXMoRG9tQXBpLnByb3RvdHlwZSwgWwogICAgJ3BhcmVudE5vZGUnLCAnZmlyc3RDaGlsZCcsICdsYXN0Q2hpbGQnLAogICAgJ25leHRTaWJsaW5nJywgJ3ByZXZpb3VzU2libGluZycsICdmaXJzdEVsZW1lbnRDaGlsZCcsCiAgICAnbGFzdEVsZW1lbnRDaGlsZCcsICduZXh0RWxlbWVudFNpYmxpbmcnLCAncHJldmlvdXNFbGVtZW50U2libGluZycsCiAgICAnY2hpbGROb2RlcycsICdjaGlsZHJlbicsICdjbGFzc0xpc3QnCiAgXSk7CgogIGZvcndhcmRQcm9wZXJ0aWVzKERvbUFwaS5wcm90b3R5cGUsIFsKICAgICd0ZXh0Q29udGVudCcsICdpbm5lckhUTUwnCiAgXSk7CgoKICAvKioKICAgKiBFdmVudCBBUEkgd3JhcHBlciBjbGFzcyByZXR1cm5lZCBmcm9tIGBQb2x5bWVyLmRvbS4odGFyZ2V0KWAgd2hlbgogICAqIGB0YXJnZXRgIGlzIGFuIGBFdmVudGAuCiAgICovCiAgY2xhc3MgRXZlbnRBcGkgewogICAgY29uc3RydWN0b3IoZXZlbnQpIHsKICAgICAgdGhpcy5ldmVudCA9IGV2ZW50OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZmlyc3Qgbm9kZSBvbiB0aGUgYGNvbXBvc2VkUGF0aGAgb2YgdGhpcyBldmVudC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHshRXZlbnRUYXJnZXR9IFRoZSBub2RlIHRoaXMgZXZlbnQgd2FzIGRpc3BhdGNoZWQgdG8KICAgICAqLwogICAgZ2V0IHJvb3RUYXJnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbG9jYWwgKHJlLXRhcmdldGVkKSB0YXJnZXQgZm9yIHRoaXMgZXZlbnQuCiAgICAgKgogICAgICogQHJldHVybiB7IUV2ZW50VGFyZ2V0fSBUaGUgbG9jYWwgKHJlLXRhcmdldGVkKSB0YXJnZXQgZm9yIHRoaXMgZXZlbnQuCiAgICAgKi8KICAgIGdldCBsb2NhbFRhcmdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZXZlbnQudGFyZ2V0OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYGNvbXBvc2VkUGF0aGAgZm9yIHRoaXMgZXZlbnQuCiAgICAgKiBAcmV0dXJuIHshQXJyYXk8IUV2ZW50VGFyZ2V0Pn0gVGhlIG5vZGVzIHRoaXMgZXZlbnQgcHJvcGFnYXRlZCB0aHJvdWdoCiAgICAgKi8KICAgIGdldCBwYXRoKCkgewogICAgICByZXR1cm4gdGhpcy5ldmVudC5jb21wb3NlZFBhdGgoKTsKICAgIH0KICB9CgogIFBvbHltZXIuRG9tQXBpID0gRG9tQXBpOwoKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBkZWVwCiAgICogQHJldHVybiB7IU5vZGV9CiAgICovCiAgUG9seW1lci5Eb21BcGkucHJvdG90eXBlLmNsb25lTm9kZTsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0geyFOb2RlfSBub2RlCiAgICogQHJldHVybiB7IU5vZGV9CiAgICovCiAgUG9seW1lci5Eb21BcGkucHJvdG90eXBlLmFwcGVuZENoaWxkOwogIC8qKgogICAqIEBmdW5jdGlvbgogICAqIEBwYXJhbSB7IU5vZGV9IG5ld0NoaWxkCiAgICogQHBhcmFtIHtOb2RlfSByZWZDaGlsZAogICAqIEByZXR1cm4geyFOb2RlfQogICAqLwogIFBvbHltZXIuRG9tQXBpLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU7CiAgLyoqCiAgICogQGZ1bmN0aW9uCiAgICogQHBhcmFtIHshTm9kZX0gbm9kZQogICAqIEByZXR1cm4geyFOb2RlfQogICAqLwogIFBvbHltZXIuRG9tQXBpLnByb3RvdHlwZS5yZW1vdmVDaGlsZDsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0geyFOb2RlfSBvbGRDaGlsZAogICAqIEBwYXJhbSB7IU5vZGV9IG5ld0NoaWxkCiAgICogQHJldHVybiB7IU5vZGV9CiAgICovCiAgUG9seW1lci5Eb21BcGkucHJvdG90eXBlLnJlcGxhY2VDaGlsZDsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci5Eb21BcGkucHJvdG90eXBlLnNldEF0dHJpYnV0ZTsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQogICAqIEByZXR1cm4ge3ZvaWR9CiAgICovCiAgUG9seW1lci5Eb21BcGkucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZTsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKICAgKiBAcmV0dXJuIHs/RWxlbWVudH0KICAgKi8KICBQb2x5bWVyLkRvbUFwaS5wcm90b3R5cGUucXVlcnlTZWxlY3RvcjsKICAvKioKICAgKiBAZnVuY3Rpb24KICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3IKICAgKiBAcmV0dXJuIHshTm9kZUxpc3Q8IUVsZW1lbnQ+fQogICAqLwogIFBvbHltZXIuRG9tQXBpLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsOwoKICAvKioKICAgKiBMZWdhY3kgRE9NIGFuZCBFdmVudCBtYW5pcHVsYXRpb24gQVBJIHdyYXBwZXIgZmFjdG9yeSB1c2VkIHRvIGFic3RyYWN0CiAgICogZGlmZmVyZW5jZXMgYmV0d2VlbiBuYXRpdmUgU2hhZG93IERPTSBhbmQgIlNoYWR5IERPTSIgd2hlbiBwb2x5ZmlsbGluZyBvbgogICAqIG9sZGVyIGJyb3dzZXJzLgogICAqCiAgICogTm90ZSB0aGF0IGluIFBvbHltZXIgMi54IHVzZSBvZiBgUG9seW1lci5kb21gIGlzIG5vIGxvbmdlciByZXF1aXJlZCBhbmQKICAgKiBpbiB0aGUgbWFqb3JpdHkgb2YgY2FzZXMgc2ltcGx5IGZhY2FkZXMgZGlyZWN0bHkgdG8gdGhlIHN0YW5kYXJkIG5hdGl2ZQogICAqIEFQSS4KICAgKgogICAqIEBuYW1lc3BhY2UKICAgKiBAc3VtbWFyeSBMZWdhY3kgRE9NIGFuZCBFdmVudCBtYW5pcHVsYXRpb24gQVBJIHdyYXBwZXIgZmFjdG9yeSB1c2VkIHRvCiAgICogYWJzdHJhY3QgZGlmZmVyZW5jZXMgYmV0d2VlbiBuYXRpdmUgU2hhZG93IERPTSBhbmQgIlNoYWR5IERPTS4iCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAcGFyYW0geyhOb2RlfEV2ZW50KT19IG9iaiBOb2RlIG9yIGV2ZW50IHRvIG9wZXJhdGUgb24KICAgKiBAcmV0dXJuIHshRG9tQXBpfCFFdmVudEFwaX0gV3JhcHBlciBwcm92aWRpbmcgZWl0aGVyIG5vZGUgQVBJIG9yIGV2ZW50IEFQSQogICAqLwogIFBvbHltZXIuZG9tID0gZnVuY3Rpb24ob2JqKSB7CiAgICBvYmogPSBvYmogfHwgZG9jdW1lbnQ7CiAgICBpZiAoIW9iai5fX2RvbUFwaSkgewogICAgICBsZXQgaGVscGVyOwogICAgICBpZiAob2JqIGluc3RhbmNlb2YgRXZlbnQpIHsKICAgICAgICBoZWxwZXIgPSBuZXcgRXZlbnRBcGkob2JqKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBoZWxwZXIgPSBuZXcgRG9tQXBpKG9iaik7CiAgICAgIH0KICAgICAgb2JqLl9fZG9tQXBpID0gaGVscGVyOwogICAgfQogICAgcmV0dXJuIG9iai5fX2RvbUFwaTsKICB9OwoKICBQb2x5bWVyLmRvbS5tYXRjaGVzU2VsZWN0b3IgPSBtYXRjaGVzU2VsZWN0b3I7CgogIC8qKgogICAqIEZvcmNlcyBzZXZlcmFsIGNsYXNzZXMgb2YgYXN5bmNocm9ub3VzbHkgcXVldWVkIHRhc2tzIHRvIGZsdXNoOgogICAqIC0gRGVib3VuY2VycyBhZGRlZCB2aWEgYFBvbHltZXIuZW5xdWV1ZURlYm91bmNlcmAKICAgKiAtIFNoYWR5RE9NIGRpc3RyaWJ1dGlvbgogICAqCiAgICogVGhpcyBtZXRob2QgZmFjYWRlcyB0byBgUG9seW1lci5mbHVzaGAuCiAgICoKICAgKiBAbWVtYmVyb2YgUG9seW1lci5kb20KICAgKi8KICBQb2x5bWVyLmRvbS5mbHVzaCA9IFBvbHltZXIuZmx1c2g7CgogIC8qKgogICAqIEFkZHMgYSBgUG9seW1lci5EZWJvdW5jZXJgIHRvIGEgbGlzdCBvZiBnbG9iYWxseSBmbHVzaGFibGUgdGFza3MuCiAgICoKICAgKiBUaGlzIG1ldGhvZCBmYWNhZGVzIHRvIGBQb2x5bWVyLmVucXVldWVEZWJvdW5jZXJgLgogICAqCiAgICogQG1lbWJlcm9mIFBvbHltZXIuZG9tCiAgICogQHBhcmFtIHshUG9seW1lci5EZWJvdW5jZXJ9IGRlYm91bmNlciBEZWJvdW5jZXIgdG8gZW5xdWV1ZQogICAqLwogIFBvbHltZXIuZG9tLmFkZERlYm91bmNlciA9IFBvbHltZXIuZW5xdWV1ZURlYm91bmNlcjsKfSkoKTsKCgooZnVuY3Rpb24oKSB7CgogICd1c2Ugc3RyaWN0JzsKCiAgbGV0IHN0eWxlSW50ZXJmYWNlID0gd2luZG93LlNoYWR5Q1NTOwoKICAvKioKICAgKiBFbGVtZW50IGNsYXNzIG1peGluIHRoYXQgcHJvdmlkZXMgUG9seW1lcidzICJsZWdhY3kiIEFQSSBpbnRlbmRlZCB0byBiZQogICAqIGJhY2t3YXJkLWNvbXBhdGlibGUgdG8gdGhlIGdyZWF0ZXN0IGV4dGVudCBwb3NzaWJsZSB3aXRoIHRoZSBBUEkKICAgKiBmb3VuZCBvbiB0aGUgUG9seW1lciAxLnggYFBvbHltZXIuQmFzZWAgcHJvdG90eXBlIGFwcGxpZWQgdG8gYWxsIGVsZW1lbnRzCiAgICogZGVmaW5lZCB1c2luZyB0aGUgYFBvbHltZXIoey4uLn0pYCBmdW5jdGlvbi4KICAgKgogICAqIEBtaXhpbkZ1bmN0aW9uCiAgICogQHBvbHltZXIKICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuRWxlbWVudE1peGluCiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLkdlc3R1cmVFdmVudExpc3RlbmVycwogICAqIEBwcm9wZXJ0eSBpc0F0dGFjaGVkIHtib29sZWFufSBTZXQgdG8gYHRydWVgIGluIHRoaXMgZWxlbWVudCdzCiAgICogICBgY29ubmVjdGVkQ2FsbGJhY2tgIGFuZCBgZmFsc2VgIGluIGBkaXNjb25uZWN0ZWRDYWxsYmFja2AKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IEVsZW1lbnQgY2xhc3MgbWl4aW4gdGhhdCBwcm92aWRlcyBQb2x5bWVyJ3MgImxlZ2FjeSIgQVBJCiAgICovCiAgUG9seW1lci5MZWdhY3lFbGVtZW50TWl4aW4gPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oKGJhc2UpID0+IHsKCiAgICAvKioKICAgICAqIEBjb25zdHJ1Y3RvcgogICAgICogQGV4dGVuZHMge2Jhc2V9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9FbGVtZW50TWl4aW59CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9HZXN0dXJlRXZlbnRMaXN0ZW5lcnN9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9EaXJNaXhpbn0KICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0IGxlZ2FjeUVsZW1lbnRCYXNlID0gUG9seW1lci5EaXJNaXhpbihQb2x5bWVyLkdlc3R1cmVFdmVudExpc3RlbmVycyhQb2x5bWVyLkVsZW1lbnRNaXhpbihiYXNlKSkpOwoKICAgIC8qKgogICAgICogTWFwIG9mIHNpbXBsZSBuYW1lcyB0byB0b3VjaCBhY3Rpb24gbmFtZXMKICAgICAqIEBkaWN0CiAgICAgKi8KICAgIGNvbnN0IERJUkVDVElPTl9NQVAgPSB7CiAgICAgICd4JzogJ3Bhbi14JywKICAgICAgJ3knOiAncGFuLXknLAogICAgICAnbm9uZSc6ICdub25lJywKICAgICAgJ2FsbCc6ICdhdXRvJwogICAgfTsKCiAgICAvKioKICAgICAqIEBwb2x5bWVyCiAgICAgKiBAbWl4aW5DbGFzcwogICAgICogQGV4dGVuZHMge2xlZ2FjeUVsZW1lbnRCYXNlfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfTGVnYWN5RWxlbWVudE1peGlufQogICAgICogQHVucmVzdHJpY3RlZAogICAgICovCiAgICBjbGFzcyBMZWdhY3lFbGVtZW50IGV4dGVuZHMgbGVnYWN5RWxlbWVudEJhc2UgewoKICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICAvKiogQHR5cGUge2Jvb2xlYW59ICovCiAgICAgICAgdGhpcy5pc0F0dGFjaGVkOwogICAgICAgIC8qKiBAdHlwZSB7V2Vha01hcDwhRWxlbWVudCwgIU9iamVjdDxzdHJpbmcsICFGdW5jdGlvbj4+fSAqLwogICAgICAgIHRoaXMuX19ib3VuZExpc3RlbmVyczsKICAgICAgICAvKiogQHR5cGUge09iamVjdDxzdHJpbmcsIEZ1bmN0aW9uPn0gKi8KICAgICAgICB0aGlzLl9kZWJvdW5jZXJzOwogICAgICB9CgogICAgICAvKioKICAgICAgICogRm9yd2FyZHMgYGltcG9ydE1ldGFgIGZyb20gdGhlIHByb3RvdHlwZSAoaS5lLiBmcm9tIHRoZSBpbmZvIG9iamVjdAogICAgICAgKiBwYXNzZWQgdG8gYFBvbHltZXIoey4uLn0pYCkgdG8gdGhlIHN0YXRpYyBBUEkuCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4geyFPYmplY3R9IFRoZSBgaW1wb3J0Lm1ldGFgIG9iamVjdCBzZXQgb24gdGhlIHByb3RvdHlwZQogICAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBgdGhpc2AgaXMgYWx3YXlzIGluIHRoZSBpbnN0YW5jZSBpbgogICAgICAgKiAgY2xvc3VyZSBmb3Igc29tZSByZWFzb24gZXZlbiBpbiBhIHN0YXRpYyBtZXRob2QsIHJhdGhlciB0aGFuIHRoZSBjbGFzcwogICAgICAgKi8KICAgICAgc3RhdGljIGdldCBpbXBvcnRNZXRhKCkgewogICAgICAgIHJldHVybiB0aGlzLnByb3RvdHlwZS5pbXBvcnRNZXRhOwogICAgICB9CgogICAgICAvKioKICAgICAgICogTGVnYWN5IGNhbGxiYWNrIGNhbGxlZCBkdXJpbmcgdGhlIGBjb25zdHJ1Y3RvcmAsIGZvciBvdmVycmlkaW5nCiAgICAgICAqIGJ5IHRoZSB1c2VyLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgY3JlYXRlZCgpIHt9CgogICAgICAvKioKICAgICAgICogUHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYGNvbm5lY3RlZENhbGxiYWNrYAogICAgICAgKiB3aGljaCBhZGRzIFBvbHltZXIgbGVnYWN5IEFQSSdzIGBhdHRhY2hlZGAgbWV0aG9kLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICovCiAgICAgIGNvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICAgIHN1cGVyLmNvbm5lY3RlZENhbGxiYWNrKCk7CiAgICAgICAgdGhpcy5pc0F0dGFjaGVkID0gdHJ1ZTsKICAgICAgICB0aGlzLmF0dGFjaGVkKCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBMZWdhY3kgY2FsbGJhY2sgY2FsbGVkIGR1cmluZyBgY29ubmVjdGVkQ2FsbGJhY2tgLCBmb3Igb3ZlcnJpZGluZwogICAgICAgKiBieSB0aGUgdXNlci4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGF0dGFjaGVkKCkge30KCiAgICAgIC8qKgogICAgICAgKiBQcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgCiAgICAgICAqIHdoaWNoIGFkZHMgUG9seW1lciBsZWdhY3kgQVBJJ3MgYGRldGFjaGVkYCBtZXRob2QuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqIEBvdmVycmlkZQogICAgICAgKi8KICAgICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7CiAgICAgICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgICB0aGlzLmlzQXR0YWNoZWQgPSBmYWxzZTsKICAgICAgICB0aGlzLmRldGFjaGVkKCk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBMZWdhY3kgY2FsbGJhY2sgY2FsbGVkIGR1cmluZyBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgLCBmb3Igb3ZlcnJpZGluZwogICAgICAgKiBieSB0aGUgdXNlci4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGRldGFjaGVkKCkge30KCiAgICAgIC8qKgogICAgICAgKiBQcm92aWRlcyBhbiBvdmVycmlkZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrYAogICAgICAgKiB3aGljaCBhZGRzIHRoZSBQb2x5bWVyIGxlZ2FjeSBBUEkncyBgYXR0cmlidXRlQ2hhbmdlZGAgbWV0aG9kLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIGF0dHJpYnV0ZS4KICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBvbGQgT2xkIHZhbHVlIG9mIGF0dHJpYnV0ZS4KICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSB2YWx1ZSBDdXJyZW50IHZhbHVlIG9mIGF0dHJpYnV0ZS4KICAgICAgICogQHBhcmFtIHs/c3RyaW5nfSBuYW1lc3BhY2UgQXR0cmlidXRlIG5hbWVzcGFjZS4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQG92ZXJyaWRlCiAgICAgICAqLwogICAgICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkLCB2YWx1ZSwgbmFtZXNwYWNlKSB7CiAgICAgICAgaWYgKG9sZCAhPT0gdmFsdWUpIHsKICAgICAgICAgIHN1cGVyLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGQsIHZhbHVlLCBuYW1lc3BhY2UpOwogICAgICAgICAgdGhpcy5hdHRyaWJ1dGVDaGFuZ2VkKG5hbWUsIG9sZCwgdmFsdWUpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIExlZ2FjeSBjYWxsYmFjayBjYWxsZWQgZHVyaW5nIGBhdHRyaWJ1dGVDaGFuZ2VkQ2hhbGxiYWNrYCwgZm9yIG92ZXJyaWRpbmcKICAgICAgICogYnkgdGhlIHVzZXIuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgYXR0cmlidXRlLgogICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IG9sZCBPbGQgdmFsdWUgb2YgYXR0cmlidXRlLgogICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IHZhbHVlIEN1cnJlbnQgdmFsdWUgb2YgYXR0cmlidXRlLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgYXR0cmlidXRlQ2hhbmdlZChuYW1lLCBvbGQsIHZhbHVlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCgogICAgICAvKioKICAgICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGBQb2x5bWVyLlByb3BlcnR5RWZmZWN0c2AgaW1wbGVtZW50YXRpb24gdG8KICAgICAgICogYWRkIHN1cHBvcnQgZm9yIGNsYXNzIGluaXRpYWxpemF0aW9uIHZpYSB0aGUgYF9yZWdpc3RlcmVkYCBjYWxsYmFjay4KICAgICAgICogVGhpcyBpcyBjYWxsZWQgb25seSB3aGVuIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLgogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICogQHN1cHByZXNzIHtpbnZhbGlkQ2FzdHN9CiAgICAgICAqLwogICAgICBfaW5pdGlhbGl6ZVByb3BlcnRpZXMoKSB7CiAgICAgICAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpOwogICAgICAgIGlmICghcHJvdG8uaGFzT3duUHJvcGVydHkoJ19faGFzUmVnaXN0ZXJGaW5pc2hlZCcpKSB7CiAgICAgICAgICB0aGlzLl9yZWdpc3RlcmVkKCk7CiAgICAgICAgICAvLyBiYWNrc3RvcCBpbiBjYXNlIHRoZSBgX3JlZ2lzdGVyZWRgIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHNldCB0aGlzCiAgICAgICAgICBwcm90by5fX2hhc1JlZ2lzdGVyRmluaXNoZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBzdXBlci5faW5pdGlhbGl6ZVByb3BlcnRpZXMoKTsKICAgICAgICB0aGlzLnJvb3QgPSAvKiogQHR5cGUge0hUTUxFbGVtZW50fSAqLyh0aGlzKTsKICAgICAgICB0aGlzLmNyZWF0ZWQoKTsKICAgICAgICAvLyBFbnN1cmUgbGlzdGVuZXJzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHNvIHRoYXQgdGhleSBhcmUKICAgICAgICAvLyBhZGRlZCBiZWZvcmUgZGVjbGFyYXRpdmUgZXZlbnQgbGlzdGVuZXJzLiBUaGlzIGFsbG93cyBhbiBlbGVtZW50IHRvCiAgICAgICAgLy8gZGVjb3JhdGUgaXRzZWxmIHZpYSBhbiBldmVudCBwcmlvciB0byBhbnkgZGVjbGFyYXRpdmUgbGlzdGVuZXJzCiAgICAgICAgLy8gc2VlaW5nIHRoZSBldmVudC4gTm90ZSwgdGhpcyBlbnN1cmVzIGNvbXBhdGliaWxpdHkgd2l0aCAxLnggb3JkZXJpbmcuCiAgICAgICAgdGhpcy5fYXBwbHlMaXN0ZW5lcnMoKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZWxlbWVudCBpcyBpbml0aWFsaXppbmcuCiAgICAgICAqIFVzZXJzIG1heSBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBwZXJmb3JtIGNsYXNzIHJlZ2lzdHJhdGlvbiB0aW1lCiAgICAgICAqIHdvcmsuIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgZW5zdXJlIHRoZSB3b3JrIGlzIHBlcmZvcm1lZAogICAgICAgKiBvbmx5IG9uY2UgZm9yIHRoZSBjbGFzcy4KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX3JlZ2lzdGVyZWQoKSB7fQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIGltcGxlbWVudGF0aW9uIHRvCiAgICAgICAqIGFkZCBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIGBob3N0QXR0cmlidXRlc2AgYW5kIGBsaXN0ZW5lcnNgLgogICAgICAgKgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKiBAb3ZlcnJpZGUKICAgICAgICovCiAgICAgIHJlYWR5KCkgewogICAgICAgIHRoaXMuX2Vuc3VyZUF0dHJpYnV0ZXMoKTsKICAgICAgICBzdXBlci5yZWFkeSgpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogRW5zdXJlcyBhbiBlbGVtZW50IGhhcyByZXF1aXJlZCBhdHRyaWJ1dGVzLiBDYWxsZWQgd2hlbiB0aGUgZWxlbWVudAogICAgICAgKiBpcyBiZWluZyByZWFkaWVkIHZpYSBgcmVhZHlgLiBVc2VycyBzaG91bGQgb3ZlcnJpZGUgdG8gc2V0IHRoZQogICAgICAgKiBlbGVtZW50J3MgcmVxdWlyZWQgYXR0cmlidXRlcy4gVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSBzdXJlCiAgICAgICAqIHRvIGNoZWNrIGFuZCBub3Qgb3ZlcnJpZGUgZXhpc3RpbmcgYXR0cmlidXRlcyBhZGRlZCBieQogICAgICAgKiB0aGUgdXNlciBvZiB0aGUgZWxlbWVudC4gVHlwaWNhbGx5LCBzZXR0aW5nIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIGxlZnQKICAgICAgICogdG8gdGhlIGVsZW1lbnQgdXNlciBhbmQgbm90IGRvbmUgaGVyZTsgcmVhc29uYWJsZSBleGNlcHRpb25zIGluY2x1ZGUKICAgICAgICogc2V0dGluZyBhcmlhIHJvbGVzIGFuZCBmb2N1c2FiaWxpdHkuCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9lbnN1cmVBdHRyaWJ1dGVzKCkge30KCiAgICAgIC8qKgogICAgICAgKiBBZGRzIGVsZW1lbnQgZXZlbnQgbGlzdGVuZXJzLiBDYWxsZWQgd2hlbiB0aGUgZWxlbWVudAogICAgICAgKiBpcyBiZWluZyByZWFkaWVkIHZpYSBgcmVhZHlgLiBVc2VycyBzaG91bGQgb3ZlcnJpZGUgdG8KICAgICAgICogYWRkIGFueSByZXF1aXJlZCBlbGVtZW50IGV2ZW50IGxpc3RlbmVycy4KICAgICAgICogSW4gcGVyZm9ybWFuY2UgY3JpdGljYWwgZWxlbWVudHMsIHRoZSB3b3JrIGRvbmUgaGVyZSBzaG91bGQgYmUga2VwdAogICAgICAgKiB0byBhIG1pbmltdW0gc2luY2UgaXQgaXMgZG9uZSBiZWZvcmUgdGhlIGVsZW1lbnQgaXMgcmVuZGVyZWQuIEluCiAgICAgICAqIHRoZXNlIGVsZW1lbnRzLCBjb25zaWRlciBhZGRpbmcgbGlzdGVuZXJzIGFzeW5jaHJvbm91c2x5IHNvIGFzIG5vdCB0bwogICAgICAgKiBibG9jayByZW5kZXIuCiAgICAgICAqIEBwcm90ZWN0ZWQKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF9hcHBseUxpc3RlbmVycygpIHt9CgogICAgICAvKioKICAgICAgICogQ29udmVydHMgYSB0eXBlZCBKYXZhU2NyaXB0IHZhbHVlIHRvIGEgc3RyaW5nLgogICAgICAgKgogICAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGJhY2t3YXJkLWNvbXBhdGlibGUgbGVnYWN5IEFQSQogICAgICAgKiBvbmx5LiAgSXQgaXMgbm90IGRpcmVjdGx5IGNhbGxlZCBieSBhbnkgUG9seW1lciBmZWF0dXJlcy4gVG8gY3VzdG9taXplCiAgICAgICAqIGhvdyBwcm9wZXJ0aWVzIGFyZSBzZXJpYWxpemVkIHRvIGF0dHJpYnV0ZXMgZm9yIGF0dHJpYnV0ZSBiaW5kaW5ncyBhbmQKICAgICAgICogYHJlZmxlY3RUb0F0dHJpYnV0ZTogdHJ1ZWAgcHJvcGVydGllcyBhcyB3ZWxsIGFzIHRoaXMgbWV0aG9kLCBvdmVycmlkZQogICAgICAgKiB0aGUgYF9zZXJpYWxpemVWYWx1ZWAgbWV0aG9kIHByb3ZpZGVkIGJ5IGBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzYC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBkZXNlcmlhbGl6ZQogICAgICAgKiBAcmV0dXJuIHtzdHJpbmcgfCB1bmRlZmluZWR9IFNlcmlhbGl6ZWQgdmFsdWUKICAgICAgICovCiAgICAgIHNlcmlhbGl6ZSh2YWx1ZSkgewogICAgICAgIHJldHVybiB0aGlzLl9zZXJpYWxpemVWYWx1ZSh2YWx1ZSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIHR5cGVkIEphdmFTY3JpcHQgdmFsdWUuCiAgICAgICAqCiAgICAgICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYmFja3dhcmQtY29tcGF0aWJsZSBsZWdhY3kgQVBJCiAgICAgICAqIG9ubHkuICBJdCBpcyBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGFueSBQb2x5bWVyIGZlYXR1cmVzLiAgVG8gY3VzdG9taXplCiAgICAgICAqIGhvdyBhdHRyaWJ1dGVzIGFyZSBkZXNlcmlhbGl6ZWQgdG8gcHJvcGVydGllcyBmb3IgaW4KICAgICAgICogYGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFja2AsIG92ZXJyaWRlIGBfZGVzZXJpYWxpemVWYWx1ZWAgbWV0aG9kCiAgICAgICAqIHByb3ZpZGVkIGJ5IGBQb2x5bWVyLlByb3BlcnR5QWNjZXNzb3JzYC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIFN0cmluZyB0byBkZXNlcmlhbGl6ZQogICAgICAgKiBAcGFyYW0geyp9IHR5cGUgVHlwZSB0byBkZXNlcmlhbGl6ZSB0aGUgc3RyaW5nIHRvCiAgICAgICAqIEByZXR1cm4geyp9IFJldHVybnMgdGhlIGRlc2VyaWFsaXplZCB2YWx1ZSBpbiB0aGUgYHR5cGVgIGdpdmVuLgogICAgICAgKi8KICAgICAgZGVzZXJpYWxpemUodmFsdWUsIHR5cGUpIHsKICAgICAgICByZXR1cm4gdGhpcy5fZGVzZXJpYWxpemVWYWx1ZSh2YWx1ZSwgdHlwZSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTZXJpYWxpemVzIGEgcHJvcGVydHkgdG8gaXRzIGFzc29jaWF0ZWQgYXR0cmlidXRlLgogICAgICAgKgogICAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGJhY2t3YXJkLWNvbXBhdGlibGUgbGVnYWN5IEFQSQogICAgICAgKiBvbmx5LiAgSXQgaXMgbm90IGRpcmVjdGx5IGNhbGxlZCBieSBhbnkgUG9seW1lciBmZWF0dXJlcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUgdG8gcmVmbGVjdC4KICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBhdHRyaWJ1dGUgQXR0cmlidXRlIG5hbWUgdG8gcmVmbGVjdC4KICAgICAgICogQHBhcmFtIHsqPX0gdmFsdWUgUHJvcGVydHkgdmFsdWUgdG8gcmVmbGVjdC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIHJlZmxlY3RQcm9wZXJ0eVRvQXR0cmlidXRlKHByb3BlcnR5LCBhdHRyaWJ1dGUsIHZhbHVlKSB7CiAgICAgICAgdGhpcy5fcHJvcGVydHlUb0F0dHJpYnV0ZShwcm9wZXJ0eSwgYXR0cmlidXRlLCB2YWx1ZSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTZXRzIGEgdHlwZWQgdmFsdWUgdG8gYW4gSFRNTCBhdHRyaWJ1dGUgb24gYSBub2RlLgogICAgICAgKgogICAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGJhY2t3YXJkLWNvbXBhdGlibGUgbGVnYWN5IEFQSQogICAgICAgKiBvbmx5LiAgSXQgaXMgbm90IGRpcmVjdGx5IGNhbGxlZCBieSBhbnkgUG9seW1lciBmZWF0dXJlcy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBzZXJpYWxpemUuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgQXR0cmlidXRlIG5hbWUgdG8gc2VyaWFsaXplIHRvLgogICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgRWxlbWVudCB0byBzZXQgYXR0cmlidXRlIHRvLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgc2VyaWFsaXplVmFsdWVUb0F0dHJpYnV0ZSh2YWx1ZSwgYXR0cmlidXRlLCBub2RlKSB7CiAgICAgICAgdGhpcy5fdmFsdWVUb05vZGVBdHRyaWJ1dGUoLyoqIEB0eXBlIHtFbGVtZW50fSAqLyAobm9kZSB8fCB0aGlzKSwgdmFsdWUsIGF0dHJpYnV0ZSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDb3BpZXMgb3duIHByb3BlcnRpZXMgKGluY2x1ZGluZyBhY2Nlc3NvciBkZXNjcmlwdG9ycykgZnJvbSBhIHNvdXJjZQogICAgICAgKiBvYmplY3QgdG8gYSB0YXJnZXQgb2JqZWN0LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvdG90eXBlIFRhcmdldCBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gYXBpIFNvdXJjZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uCiAgICAgICAqIEByZXR1cm4ge09iamVjdH0gcHJvdG90eXBlIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgYXMgZmlyc3QgYXJndW1lbnQuCiAgICAgICAqLwogICAgICBleHRlbmQocHJvdG90eXBlLCBhcGkpIHsKICAgICAgICBpZiAoIShwcm90b3R5cGUgJiYgYXBpKSkgewogICAgICAgICAgcmV0dXJuIHByb3RvdHlwZSB8fCBhcGk7CiAgICAgICAgfQogICAgICAgIGxldCBuJCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGFwaSk7CiAgICAgICAgZm9yIChsZXQgaT0wLCBuOyAoaTxuJC5sZW5ndGgpICYmIChuPW4kW2ldKTsgaSsrKSB7CiAgICAgICAgICBsZXQgcGQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFwaSwgbik7CiAgICAgICAgICBpZiAocGQpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvdHlwZSwgbiwgcGQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ29waWVzIHByb3BzIGZyb20gYSBzb3VyY2Ugb2JqZWN0IHRvIGEgdGFyZ2V0IG9iamVjdC4KICAgICAgICoKICAgICAgICogTm90ZSwgdGhpcyBtZXRob2QgdXNlcyBhIHNpbXBsZSBgZm9yLi4uaW5gIHN0cmF0ZWd5IGZvciBlbnVtZXJhdGluZwogICAgICAgKiBwcm9wZXJ0aWVzLiAgVG8gZW5zdXJlIG9ubHkgYG93blByb3BlcnRpZXNgIGFyZSBjb3BpZWQgZnJvbSBzb3VyY2UKICAgICAgICogdG8gdGFyZ2V0IGFuZCB0aGF0IGFjY2Vzc29yIGltcGxlbWVudGF0aW9ucyBhcmUgY29waWVkLCB1c2UgYGV4dGVuZGAuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IU9iamVjdH0gdGFyZ2V0IFRhcmdldCBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLgogICAgICAgKiBAcGFyYW0geyFPYmplY3R9IHNvdXJjZSBTb3VyY2Ugb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLgogICAgICAgKiBAcmV0dXJuIHshT2JqZWN0fSBUYXJnZXQgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBhcyBmaXJzdCBhcmd1bWVudC4KICAgICAgICovCiAgICAgIG1peGluKHRhcmdldCwgc291cmNlKSB7CiAgICAgICAgZm9yIChsZXQgaSBpbiBzb3VyY2UpIHsKICAgICAgICAgIHRhcmdldFtpXSA9IHNvdXJjZVtpXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRhcmdldDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNldHMgdGhlIHByb3RvdHlwZSBvZiBhbiBvYmplY3QuCiAgICAgICAqCiAgICAgICAqIE5vdGUgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYmFja3dhcmQtY29tcGF0aWJsZSBsZWdhY3kgQVBJCiAgICAgICAqIG9ubHkuICBJdCBpcyBub3QgZGlyZWN0bHkgY2FsbGVkIGJ5IGFueSBQb2x5bWVyIGZlYXR1cmVzLgogICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3Qgb24gd2hpY2ggdG8gc2V0IHRoZSBwcm90b3R5cGUuCiAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwcm90b3R5cGUgVGhlIHByb3RvdHlwZSB0aGF0IHdpbGwgYmUgc2V0IG9uIHRoZSBnaXZlbgogICAgICAgKiBgb2JqZWN0YC4KICAgICAgICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIHRoZSBnaXZlbiBgb2JqZWN0YCB3aXRoIGl0cyBwcm90b3R5cGUgc2V0CiAgICAgICAqIHRvIHRoZSBnaXZlbiBgcHJvdG90eXBlYCBvYmplY3QuCiAgICAgICAqLwogICAgICBjaGFpbk9iamVjdChvYmplY3QsIHByb3RvdHlwZSkgewogICAgICAgIGlmIChvYmplY3QgJiYgcHJvdG90eXBlICYmIG9iamVjdCAhPT0gcHJvdG90eXBlKSB7CiAgICAgICAgICBvYmplY3QuX19wcm90b19fID0gcHJvdG90eXBlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgICB9CgogICAgICAvKiAqKioqIEJlZ2luIFRlbXBsYXRlICoqKiogKi8KCiAgICAgIC8qKgogICAgICAgKiBDYWxscyBgaW1wb3J0Tm9kZWAgb24gdGhlIGBjb250ZW50YCBvZiB0aGUgYHRlbXBsYXRlYCBzcGVjaWZpZWQgYW5kCiAgICAgICAqIHJldHVybnMgYSBkb2N1bWVudCBmcmFnbWVudCBjb250YWluaW5nIHRoZSBpbXBvcnRlZCBjb250ZW50LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge0hUTUxUZW1wbGF0ZUVsZW1lbnR9IHRlbXBsYXRlIEhUTUwgdGVtcGxhdGUgZWxlbWVudCB0byBpbnN0YW5jZS4KICAgICAgICogQHJldHVybiB7IURvY3VtZW50RnJhZ21lbnR9IERvY3VtZW50IGZyYWdtZW50IGNvbnRhaW5pbmcgdGhlIGltcG9ydGVkCiAgICAgICAqICAgdGVtcGxhdGUgY29udGVudC4KICAgICAgKi8KICAgICAgaW5zdGFuY2VUZW1wbGF0ZSh0ZW1wbGF0ZSkgewogICAgICAgIGxldCBjb250ZW50ID0gdGhpcy5jb25zdHJ1Y3Rvci5fY29udGVudEZvclRlbXBsYXRlKHRlbXBsYXRlKTsKICAgICAgICBsZXQgZG9tID0gLyoqIEB0eXBlIHshRG9jdW1lbnRGcmFnbWVudH0gKi8KICAgICAgICAgIChkb2N1bWVudC5pbXBvcnROb2RlKGNvbnRlbnQsIHRydWUpKTsKICAgICAgICByZXR1cm4gZG9tOwogICAgICB9CgogICAgICAvKiAqKioqIEJlZ2luIEV2ZW50cyAqKioqICovCgoKCiAgICAgIC8qKgogICAgICAgKiBEaXNwYXRjaGVzIGEgY3VzdG9tIGV2ZW50IHdpdGggYW4gb3B0aW9uYWwgZGV0YWlsIHZhbHVlLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBOYW1lIG9mIGV2ZW50IHR5cGUuCiAgICAgICAqIEBwYXJhbSB7Kj19IGRldGFpbCBEZXRhaWwgdmFsdWUgY29udGFpbmluZyBldmVudC1zcGVjaWZpYwogICAgICAgKiAgIHBheWxvYWQuCiAgICAgICAqIEBwYXJhbSB7eyBidWJibGVzOiAoYm9vbGVhbnx1bmRlZmluZWQpLCBjYW5jZWxhYmxlOiAoYm9vbGVhbnx1bmRlZmluZWQpLCBjb21wb3NlZDogKGJvb2xlYW58dW5kZWZpbmVkKSB9PX0KICAgICAgICogIG9wdGlvbnMgT2JqZWN0IHNwZWNpZnlpbmcgb3B0aW9ucy4gIFRoZXNlIG1heSBpbmNsdWRlOgogICAgICAgKiAgYGJ1YmJsZXNgIChib29sZWFuLCBkZWZhdWx0cyB0byBgdHJ1ZWApLAogICAgICAgKiAgYGNhbmNlbGFibGVgIChib29sZWFuLCBkZWZhdWx0cyB0byBmYWxzZSksIGFuZAogICAgICAgKiAgYG5vZGVgIG9uIHdoaWNoIHRvIGZpcmUgdGhlIGV2ZW50IChIVE1MRWxlbWVudCwgZGVmYXVsdHMgdG8gYHRoaXNgKS4KICAgICAgICogQHJldHVybiB7IUV2ZW50fSBUaGUgbmV3IGV2ZW50IHRoYXQgd2FzIGZpcmVkLgogICAgICAgKi8KICAgICAgZmlyZSh0eXBlLCBkZXRhaWwsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBkZXRhaWwgPSAoZGV0YWlsID09PSBudWxsIHx8IGRldGFpbCA9PT0gdW5kZWZpbmVkKSA/IHt9IDogZGV0YWlsOwogICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudCh0eXBlLCB7CiAgICAgICAgICBidWJibGVzOiBvcHRpb25zLmJ1YmJsZXMgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBvcHRpb25zLmJ1YmJsZXMsCiAgICAgICAgICBjYW5jZWxhYmxlOiBCb29sZWFuKG9wdGlvbnMuY2FuY2VsYWJsZSksCiAgICAgICAgICBjb21wb3NlZDogb3B0aW9ucy5jb21wb3NlZCA9PT0gdW5kZWZpbmVkID8gdHJ1ZTogb3B0aW9ucy5jb21wb3NlZAogICAgICAgIH0pOwogICAgICAgIGV2ZW50LmRldGFpbCA9IGRldGFpbDsKICAgICAgICBsZXQgbm9kZSA9IG9wdGlvbnMubm9kZSB8fCB0aGlzOwogICAgICAgIG5vZGUuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgcmV0dXJuIGV2ZW50OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIGFkZCBhbiBldmVudCBsaXN0ZW5lciBvbiBhIGdpdmVuIGVsZW1lbnQsCiAgICAgICAqIGxhdGUgYm91bmQgdG8gYSBuYW1lZCBtZXRob2Qgb24gdGhpcyBlbGVtZW50LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge0VsZW1lbnR9IG5vZGUgRWxlbWVudCB0byBhZGQgZXZlbnQgbGlzdGVuZXIgdG8uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgTmFtZSBvZiBldmVudCB0byBsaXN0ZW4gZm9yLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZSBOYW1lIG9mIGhhbmRsZXIgbWV0aG9kIG9uIGB0aGlzYCB0byBjYWxsLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgbGlzdGVuKG5vZGUsIGV2ZW50TmFtZSwgbWV0aG9kTmFtZSkgewogICAgICAgIG5vZGUgPSAvKiogQHR5cGUgeyFFbGVtZW50fSAqLyAobm9kZSB8fCB0aGlzKTsKICAgICAgICBsZXQgaGJsID0gdGhpcy5fX2JvdW5kTGlzdGVuZXJzIHx8CiAgICAgICAgICAodGhpcy5fX2JvdW5kTGlzdGVuZXJzID0gbmV3IFdlYWtNYXAoKSk7CiAgICAgICAgbGV0IGJsID0gaGJsLmdldChub2RlKTsKICAgICAgICBpZiAoIWJsKSB7CiAgICAgICAgICBibCA9IHt9OwogICAgICAgICAgaGJsLnNldChub2RlLCBibCk7CiAgICAgICAgfQogICAgICAgIGxldCBrZXkgPSBldmVudE5hbWUgKyBtZXRob2ROYW1lOwogICAgICAgIGlmICghYmxba2V5XSkgewogICAgICAgICAgYmxba2V5XSA9IHRoaXMuX2FkZE1ldGhvZEV2ZW50TGlzdGVuZXJUb05vZGUoCiAgICAgICAgICAgIG5vZGUsIGV2ZW50TmFtZSwgbWV0aG9kTmFtZSwgdGhpcyk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIHJlbW92ZSBhbiBldmVudCBsaXN0ZW5lciBmcm9tIGEgZ2l2ZW4gZWxlbWVudCwKICAgICAgICogbGF0ZSBib3VuZCB0byBhIG5hbWVkIG1ldGhvZCBvbiB0aGlzIGVsZW1lbnQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZSBFbGVtZW50IHRvIHJlbW92ZSBldmVudCBsaXN0ZW5lciBmcm9tLgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lIE5hbWUgb2YgZXZlbnQgdG8gc3RvcCBsaXN0ZW5pbmcgdG8uCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIE5hbWUgb2YgaGFuZGxlciBtZXRob2Qgb24gYHRoaXNgIHRvIG5vdCBjYWxsCiAgICAgICBhbnltb3JlLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgdW5saXN0ZW4obm9kZSwgZXZlbnROYW1lLCBtZXRob2ROYW1lKSB7CiAgICAgICAgbm9kZSA9IC8qKiBAdHlwZSB7IUVsZW1lbnR9ICovIChub2RlIHx8IHRoaXMpOwogICAgICAgIGxldCBibCA9IHRoaXMuX19ib3VuZExpc3RlbmVycyAmJiB0aGlzLl9fYm91bmRMaXN0ZW5lcnMuZ2V0KG5vZGUpOwogICAgICAgIGxldCBrZXkgPSBldmVudE5hbWUgKyBtZXRob2ROYW1lOwogICAgICAgIGxldCBoYW5kbGVyID0gYmwgJiYgYmxba2V5XTsKICAgICAgICBpZiAoaGFuZGxlcikgewogICAgICAgICAgdGhpcy5fcmVtb3ZlRXZlbnRMaXN0ZW5lckZyb21Ob2RlKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlcik7CiAgICAgICAgICBibFtrZXldID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZSBzY3JvbGxpbmcgYmVoYXZpb3IgdG8gYWxsIGRpcmVjdGlvbiwgb25lIGRpcmVjdGlvbiwgb3Igbm9uZS4KICAgICAgICoKICAgICAgICogVmFsaWQgc2Nyb2xsIGRpcmVjdGlvbnM6CiAgICAgICAqICAgLSAnYWxsJzogc2Nyb2xsIGluIGFueSBkaXJlY3Rpb24KICAgICAgICogICAtICd4Jzogc2Nyb2xsIG9ubHkgaW4gdGhlICd4JyBkaXJlY3Rpb24KICAgICAgICogICAtICd5Jzogc2Nyb2xsIG9ubHkgaW4gdGhlICd5JyBkaXJlY3Rpb24KICAgICAgICogICAtICdub25lJzogZGlzYWJsZSBzY3JvbGxpbmcgZm9yIHRoaXMgbm9kZQogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZz19IGRpcmVjdGlvbiBEaXJlY3Rpb24gdG8gYWxsb3cgc2Nyb2xsaW5nCiAgICAgICAqIERlZmF1bHRzIHRvIGBhbGxgLgogICAgICAgKiBAcGFyYW0ge0VsZW1lbnQ9fSBub2RlIEVsZW1lbnQgdG8gYXBwbHkgc2Nyb2xsIGRpcmVjdGlvbiBzZXR0aW5nLgogICAgICAgKiBEZWZhdWx0cyB0byBgdGhpc2AuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBzZXRTY3JvbGxEaXJlY3Rpb24oZGlyZWN0aW9uLCBub2RlKSB7CiAgICAgICAgUG9seW1lci5HZXN0dXJlcy5zZXRUb3VjaEFjdGlvbigvKiogQHR5cGUge0VsZW1lbnR9ICovIChub2RlIHx8IHRoaXMpLCBESVJFQ1RJT05fTUFQW2RpcmVjdGlvbl0gfHwgJ2F1dG8nKTsKICAgICAgfQogICAgICAvKiAqKioqIEVuZCBFdmVudHMgKioqKiAqLwoKICAgICAgLyoqCiAgICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBydW4gYHF1ZXJ5U2VsZWN0b3JgIG9uIHRoaXMgbG9jYWwgRE9NIHNjb3BlLgogICAgICAgKgogICAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGBQb2x5bWVyLmRvbSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3Ioc2xjdHIpYC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNsY3RyIFNlbGVjdG9yIHRvIHJ1biBvbiB0aGlzIGxvY2FsIERPTSBzY29wZQogICAgICAgKiBAcmV0dXJuIHtFbGVtZW50fSBFbGVtZW50IGZvdW5kIGJ5IHRoZSBzZWxlY3Rvciwgb3IgbnVsbCBpZiBub3QgZm91bmQuCiAgICAgICAqLwogICAgICAkJChzbGN0cikgewogICAgICAgIHJldHVybiB0aGlzLnJvb3QucXVlcnlTZWxlY3RvcihzbGN0cik7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm4gdGhlIGVsZW1lbnQgd2hvc2UgbG9jYWwgZG9tIHdpdGhpbiB3aGljaCB0aGlzIGVsZW1lbnQKICAgICAgICogaXMgY29udGFpbmVkLiBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvcgogICAgICAgKiBgdGhpcy5nZXRSb290Tm9kZSgpLmhvc3RgLgogICAgICAgKiBAdGhpcyB7RWxlbWVudH0KICAgICAgICovCiAgICAgIGdldCBkb21Ib3N0KCkgewogICAgICAgIGxldCByb290ID0gdGhpcy5nZXRSb290Tm9kZSgpOwogICAgICAgIHJldHVybiAocm9vdCBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpID8gLyoqIEB0eXBlIHtTaGFkb3dSb290fSAqLyAocm9vdCkuaG9zdCA6IHJvb3Q7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBGb3JjZSB0aGlzIGVsZW1lbnQgdG8gZGlzdHJpYnV0ZSBpdHMgY2hpbGRyZW4gdG8gaXRzIGxvY2FsIGRvbS4KICAgICAgICogVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBhcyBvZiBQb2x5bWVyIDIuMC4yIGFuZCBpcyBwcm92aWRlZCBvbmx5CiAgICAgICAqIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGRpc3RyaWJ1dGVDb250ZW50KCkgewogICAgICAgIGlmICh3aW5kb3cuU2hhZHlET00gJiYgdGhpcy5zaGFkb3dSb290KSB7CiAgICAgICAgICBTaGFkeURPTS5mbHVzaCgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBsaXN0IG9mIG5vZGVzIHRoYXQgYXJlIHRoZSBlZmZlY3RpdmUgY2hpbGROb2Rlcy4gVGhlIGVmZmVjdGl2ZQogICAgICAgKiBjaGlsZE5vZGVzIGxpc3QgaXMgdGhlIHNhbWUgYXMgdGhlIGVsZW1lbnQncyBjaGlsZE5vZGVzIGV4Y2VwdCB0aGF0CiAgICAgICAqIGFueSBgPGNvbnRlbnQ+YCBlbGVtZW50cyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgbGlzdCBvZiBub2RlcyBkaXN0cmlidXRlZAogICAgICAgKiB0byB0aGUgYDxjb250ZW50PmAsIHRoZSByZXN1bHQgb2YgaXRzIGBnZXREaXN0cmlidXRlZE5vZGVzYCBtZXRob2QuCiAgICAgICAqIEByZXR1cm4geyFBcnJheTwhTm9kZT59IExpc3Qgb2YgZWZmZWN0aXZlIGNoaWxkIG5vZGVzLgogICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30gTGVnYWN5RWxlbWVudE1peGluIG11c3QgYmUgYXBwbGllZCB0byBhbiBIVE1MRWxlbWVudAogICAgICAgKi8KICAgICAgZ2V0RWZmZWN0aXZlQ2hpbGROb2RlcygpIHsKICAgICAgICBjb25zdCB0aGlzRWwgPSAvKiogQHR5cGUge0VsZW1lbnR9ICovICh0aGlzKTsKICAgICAgICBjb25zdCBkb21BcGkgPSAvKiogQHR5cGUge1BvbHltZXIuRG9tQXBpfSAqLyhQb2x5bWVyLmRvbSh0aGlzRWwpKTsKICAgICAgICByZXR1cm4gZG9tQXBpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBsaXN0IG9mIG5vZGVzIGRpc3RyaWJ1dGVkIHdpdGhpbiB0aGlzIGVsZW1lbnQgdGhhdCBtYXRjaAogICAgICAgKiBgc2VsZWN0b3JgLiBUaGVzZSBjYW4gYmUgZG9tIGNoaWxkcmVuIG9yIGVsZW1lbnRzIGRpc3RyaWJ1dGVkIHRvCiAgICAgICAqIGNoaWxkcmVuIHRoYXQgYXJlIGluc2VydGlvbiBwb2ludHMuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBTZWxlY3RvciB0byBydW4uCiAgICAgICAqIEByZXR1cm4geyFBcnJheTwhTm9kZT59IExpc3Qgb2YgZGlzdHJpYnV0ZWQgZWxlbWVudHMgdGhhdCBtYXRjaCBzZWxlY3Rvci4KICAgICAgICogQHN1cHByZXNzIHtpbnZhbGlkQ2FzdHN9IExlZ2FjeUVsZW1lbnRNaXhpbiBtdXN0IGJlIGFwcGxpZWQgdG8gYW4gSFRNTEVsZW1lbnQKICAgICAgICovCiAgICAgIHF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyhzZWxlY3RvcikgewogICAgICAgIGNvbnN0IHRoaXNFbCA9IC8qKiBAdHlwZSB7RWxlbWVudH0gKi8gKHRoaXMpOwogICAgICAgIGNvbnN0IGRvbUFwaSA9IC8qKiBAdHlwZSB7UG9seW1lci5Eb21BcGl9ICovKFBvbHltZXIuZG9tKHRoaXNFbCkpOwogICAgICAgIHJldHVybiBkb21BcGkucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHNlbGVjdG9yKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBlZmZlY3RpdmUgY2hpbGRyZW4uIFRoZSBlZmZlY3RpdmUKICAgICAgICogY2hpbGRyZW4gbGlzdCBpcyB0aGUgc2FtZSBhcyB0aGUgZWxlbWVudCdzIGNoaWxkcmVuIGV4Y2VwdCB0aGF0CiAgICAgICAqIGFueSBgPGNvbnRlbnQ+YCBlbGVtZW50cyBhcmUgcmVwbGFjZWQgd2l0aCB0aGUgbGlzdCBvZiBlbGVtZW50cwogICAgICAgKiBkaXN0cmlidXRlZCB0byB0aGUgYDxjb250ZW50PmAuCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4geyFBcnJheTwhTm9kZT59IExpc3Qgb2YgZWZmZWN0aXZlIGNoaWxkcmVuLgogICAgICAgKi8KICAgICAgZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKSB7CiAgICAgICAgbGV0IGxpc3QgPSB0aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKTsKICAgICAgICByZXR1cm4gbGlzdC5maWx0ZXIoZnVuY3Rpb24oLyoqIEB0eXBlIHshTm9kZX0gKi8gbikgewogICAgICAgICAgcmV0dXJuIChuLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSk7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIG9mIHRleHQgY29udGVudCB0aGF0IGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZQogICAgICAgKiB0ZXh0IGNvbnRlbnQncyBvZiB0aGUgZWxlbWVudCdzIGVmZmVjdGl2ZSBjaGlsZE5vZGVzICh0aGUgZWxlbWVudHMKICAgICAgICogcmV0dXJuZWQgYnkgPGEgaHJlZj0iI2dldEVmZmVjdGl2ZUNoaWxkTm9kZXM+Z2V0RWZmZWN0aXZlQ2hpbGROb2RlczwvYT4uCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gTGlzdCBvZiBlZmZlY3RpdmUgY2hpbGRyZW4uCiAgICAgICAqLwogICAgICBnZXRFZmZlY3RpdmVUZXh0Q29udGVudCgpIHsKICAgICAgICBsZXQgY24gPSB0aGlzLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKTsKICAgICAgICBsZXQgdGMgPSBbXTsKICAgICAgICBmb3IgKGxldCBpPTAsIGM7IChjID0gY25baV0pOyBpKyspIHsKICAgICAgICAgIGlmIChjLm5vZGVUeXBlICE9PSBOb2RlLkNPTU1FTlRfTk9ERSkgewogICAgICAgICAgICB0Yy5wdXNoKGMudGV4dENvbnRlbnQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGMuam9pbignJyk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBmaXJzdCBlZmZlY3RpdmUgY2hpbGROb2RlIHdpdGhpbiB0aGlzIGVsZW1lbnQgdGhhdAogICAgICAgKiBtYXRjaCBgc2VsZWN0b3JgLiBUaGVzZSBjYW4gYmUgZG9tIGNoaWxkIG5vZGVzIG9yIGVsZW1lbnRzIGRpc3RyaWJ1dGVkCiAgICAgICAqIHRvIGNoaWxkcmVuIHRoYXQgYXJlIGluc2VydGlvbiBwb2ludHMuCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBTZWxlY3RvciB0byBydW4uCiAgICAgICAqIEByZXR1cm4ge05vZGV9IEZpcnN0IGVmZmVjdGl2ZSBjaGlsZCBub2RlIHRoYXQgbWF0Y2hlcyBzZWxlY3Rvci4KICAgICAgICovCiAgICAgIHF1ZXJ5RWZmZWN0aXZlQ2hpbGRyZW4oc2VsZWN0b3IpIHsKICAgICAgICBsZXQgZSQgPSB0aGlzLnF1ZXJ5RGlzdHJpYnV0ZWRFbGVtZW50cyhzZWxlY3Rvcik7CiAgICAgICAgcmV0dXJuIGUkICYmIGUkWzBdOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgZWZmZWN0aXZlIGNoaWxkTm9kZXMgd2l0aGluIHRoaXMgZWxlbWVudCB0aGF0CiAgICAgICAqIG1hdGNoIGBzZWxlY3RvcmAuIFRoZXNlIGNhbiBiZSBkb20gY2hpbGQgbm9kZXMgb3IgZWxlbWVudHMgZGlzdHJpYnV0ZWQKICAgICAgICogdG8gY2hpbGRyZW4gdGhhdCBhcmUgaW5zZXJ0aW9uIHBvaW50cy4KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNlbGVjdG9yIFNlbGVjdG9yIHRvIHJ1bi4KICAgICAgICogQHJldHVybiB7IUFycmF5PCFOb2RlPn0gTGlzdCBvZiBlZmZlY3RpdmUgY2hpbGQgbm9kZXMgdGhhdCBtYXRjaCBzZWxlY3Rvci4KICAgICAgICovCiAgICAgIHF1ZXJ5QWxsRWZmZWN0aXZlQ2hpbGRyZW4oc2VsZWN0b3IpIHsKICAgICAgICByZXR1cm4gdGhpcy5xdWVyeURpc3RyaWJ1dGVkRWxlbWVudHMoc2VsZWN0b3IpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUmV0dXJucyBhIGxpc3Qgb2Ygbm9kZXMgZGlzdHJpYnV0ZWQgdG8gdGhpcyBlbGVtZW50J3MgYDxzbG90PmAuCiAgICAgICAqCiAgICAgICAqIElmIHRoaXMgZWxlbWVudCBjb250YWlucyBtb3JlIHRoYW4gb25lIGA8c2xvdD5gIGluIGl0cyBsb2NhbCBET00sCiAgICAgICAqIGFuIG9wdGlvbmFsIHNlbGVjdG9yIG1heSBiZSBwYXNzZWQgdG8gY2hvb3NlIHRoZSBkZXNpcmVkIGNvbnRlbnQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gc2xjdHIgQ1NTIHNlbGVjdG9yIHRvIGNob29zZSB0aGUgZGVzaXJlZAogICAgICAgKiAgIGA8c2xvdD5gLiAgRGVmYXVsdHMgdG8gYGNvbnRlbnRgLgogICAgICAgKiBAcmV0dXJuIHshQXJyYXk8IU5vZGU+fSBMaXN0IG9mIGRpc3RyaWJ1dGVkIG5vZGVzIGZvciB0aGUgYDxzbG90PmAuCiAgICAgICAqLwogICAgICBnZXRDb250ZW50Q2hpbGROb2RlcyhzbGN0cikgewogICAgICAgIGxldCBjb250ZW50ID0gdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3Ioc2xjdHIgfHwgJ3Nsb3QnKTsKICAgICAgICByZXR1cm4gY29udGVudCA/IC8qKiBAdHlwZSB7UG9seW1lci5Eb21BcGl9ICovKFBvbHltZXIuZG9tKGNvbnRlbnQpKS5nZXREaXN0cmlidXRlZE5vZGVzKCkgOiBbXTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGVsZW1lbnQgY2hpbGRyZW4gZGlzdHJpYnV0ZWQgdG8gdGhpcyBlbGVtZW50J3MKICAgICAgICogYDxzbG90PmAuCiAgICAgICAqCiAgICAgICAqIElmIHRoaXMgZWxlbWVudCBjb250YWlucyBtb3JlIHRoYW4gb25lIGA8c2xvdD5gIGluIGl0cwogICAgICAgKiBsb2NhbCBET00sIGFuIG9wdGlvbmFsIHNlbGVjdG9yIG1heSBiZSBwYXNzZWQgdG8gY2hvb3NlIHRoZSBkZXNpcmVkCiAgICAgICAqIGNvbnRlbnQuICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gYGdldENvbnRlbnRDaGlsZE5vZGVzYCBpbiB0aGF0IG9ubHkKICAgICAgICogZWxlbWVudHMgYXJlIHJldHVybmVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZz19IHNsY3RyIENTUyBzZWxlY3RvciB0byBjaG9vc2UgdGhlIGRlc2lyZWQKICAgICAgICogICBgPGNvbnRlbnQ+YC4gIERlZmF1bHRzIHRvIGBjb250ZW50YC4KICAgICAgICogQHJldHVybiB7IUFycmF5PCFIVE1MRWxlbWVudD59IExpc3Qgb2YgZGlzdHJpYnV0ZWQgbm9kZXMgZm9yIHRoZQogICAgICAgKiAgIGA8c2xvdD5gLgogICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30KICAgICAgICovCiAgICAgIGdldENvbnRlbnRDaGlsZHJlbihzbGN0cikgewogICAgICAgIGxldCBjaGlsZHJlbiA9IC8qKiBAdHlwZSB7IUFycmF5PCFIVE1MRWxlbWVudD59ICovKHRoaXMuZ2V0Q29udGVudENoaWxkTm9kZXMoc2xjdHIpLmZpbHRlcihmdW5jdGlvbihuKSB7CiAgICAgICAgICByZXR1cm4gKG4ubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKTsKICAgICAgICB9KSk7CiAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ2hlY2tzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBpbiB0aGlzIGVsZW1lbnQncyBsaWdodCBET00gdHJlZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHs/Tm9kZX0gbm9kZSBUaGUgZWxlbWVudCB0byBiZSBjaGVja2VkLgogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIG5vZGUgaXMgaW4gdGhpcyBlbGVtZW50J3MgbGlnaHQgRE9NIHRyZWUuCiAgICAgICAqIEBzdXBwcmVzcyB7aW52YWxpZENhc3RzfSBMZWdhY3lFbGVtZW50TWl4aW4gbXVzdCBiZSBhcHBsaWVkIHRvIGFuIEhUTUxFbGVtZW50CiAgICAgICAqLwogICAgICBpc0xpZ2h0RGVzY2VuZGFudChub2RlKSB7CiAgICAgICAgY29uc3QgdGhpc05vZGUgPSAvKiogQHR5cGUge05vZGV9ICovICh0aGlzKTsKICAgICAgICByZXR1cm4gdGhpc05vZGUgIT09IG5vZGUgJiYgdGhpc05vZGUuY29udGFpbnMobm9kZSkgJiYKICAgICAgICAgIHRoaXNOb2RlLmdldFJvb3ROb2RlKCkgPT09IG5vZGUuZ2V0Um9vdE5vZGUoKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENoZWNrcyB3aGV0aGVyIGFuIGVsZW1lbnQgaXMgaW4gdGhpcyBlbGVtZW50J3MgbG9jYWwgRE9NIHRyZWUuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IUVsZW1lbnR9IG5vZGUgVGhlIGVsZW1lbnQgdG8gYmUgY2hlY2tlZC4KICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBub2RlIGlzIGluIHRoaXMgZWxlbWVudCdzIGxvY2FsIERPTSB0cmVlLgogICAgICAgKi8KICAgICAgaXNMb2NhbERlc2NlbmRhbnQobm9kZSkgewogICAgICAgIHJldHVybiB0aGlzLnJvb3QgPT09IG5vZGUuZ2V0Um9vdE5vZGUoKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE5vLW9wIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gVGhpcyBzaG91bGQgbm93IGJlIGhhbmRsZWQgYnkKICAgICAgICogU2hhZHlDc3MgbGlicmFyeS4KICAgICAgICogQHBhcmFtICB7Kn0gY29udGFpbmVyIFVudXNlZAogICAgICAgKiBAcGFyYW0gIHsqfSBzaG91bGRPYnNlcnZlIFVudXNlZAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgc2NvcGVTdWJ0cmVlKGNvbnRhaW5lciwgc2hvdWxkT2JzZXJ2ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSBjb21wdXRlZCBzdHlsZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHByb3BlcnR5LgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgVGhlIGNzcyBwcm9wZXJ0eSBuYW1lLgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbXB1dGVkIGNzcyBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGhlIGdpdmVuCiAgICAgICAqIGBwcm9wZXJ0eWAuCiAgICAgICAqIEBzdXBwcmVzcyB7aW52YWxpZENhc3RzfSBMZWdhY3lFbGVtZW50TWl4aW4gbXVzdCBiZSBhcHBsaWVkIHRvIGFuIEhUTUxFbGVtZW50CiAgICAgICAqLwogICAgICBnZXRDb21wdXRlZFN0eWxlVmFsdWUocHJvcGVydHkpIHsKICAgICAgICByZXR1cm4gc3R5bGVJbnRlcmZhY2UuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKC8qKiBAdHlwZSB7IUVsZW1lbnR9ICovKHRoaXMpLCBwcm9wZXJ0eSk7CiAgICAgIH0KCiAgICAgIC8vIGRlYm91bmNlCgogICAgICAvKioKICAgICAgICogQ2FsbCBgZGVib3VuY2VgIHRvIGNvbGxhcHNlIG11bHRpcGxlIHJlcXVlc3RzIGZvciBhIG5hbWVkIHRhc2sgaW50bwogICAgICAgKiBvbmUgaW52b2NhdGlvbiB3aGljaCBpcyBtYWRlIGFmdGVyIHRoZSB3YWl0IHRpbWUgaGFzIGVsYXBzZWQgd2l0aAogICAgICAgKiBubyBuZXcgcmVxdWVzdC4gIElmIG5vIHdhaXQgdGltZSBpcyBnaXZlbiwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkCiAgICAgICAqIGF0IG1pY3JvdGFzayB0aW1pbmcgKGd1YXJhbnRlZWQgYmVmb3JlIHBhaW50KS4KICAgICAgICoKICAgICAgICogICAgIGRlYm91bmNlZENsaWNrQWN0aW9uKGUpIHsKICAgICAgICogICAgICAgLy8gd2lsbCBub3QgY2FsbCBgcHJvY2Vzc0NsaWNrYCBtb3JlIHRoYW4gb25jZSBwZXIgMTAwbXMKICAgICAgICogICAgICAgdGhpcy5kZWJvdW5jZSgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICogICAgICAgIHRoaXMucHJvY2Vzc0NsaWNrKCk7CiAgICAgICAqICAgICAgIH0gMTAwKTsKICAgICAgICogICAgIH0KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGpvYk5hbWUgU3RyaW5nIHRvIGlkZW50aWZ5IHRoZSBkZWJvdW5jZSBqb2IuCiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKTp2b2lkfSBjYWxsYmFjayBGdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCAod2l0aCBgdGhpc2AKICAgICAgICogICBjb250ZXh0KSB3aGVuIHRoZSB3YWl0IHRpbWUgZWxhcHNlcy4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHdhaXQgT3B0aW9uYWwgd2FpdCB0aW1lIGluIG1pbGxpc2Vjb25kcyAobXMpIGFmdGVyIHRoZQogICAgICAgKiAgIGxhc3Qgc2lnbmFsIHRoYXQgbXVzdCBlbGFwc2UgYmVmb3JlIGludm9raW5nIGBjYWxsYmFja2AKICAgICAgICogQHJldHVybiB7IU9iamVjdH0gUmV0dXJucyBhIGRlYm91bmNlciBvYmplY3Qgb24gd2hpY2ggZXhpc3RzIHRoZQogICAgICAgKiBmb2xsb3dpbmcgbWV0aG9kczogYGlzQWN0aXZlKClgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZGVib3VuY2VyIGlzCiAgICAgICAqIGFjdGl2ZTsgYGNhbmNlbCgpYCBjYW5jZWxzIHRoZSBkZWJvdW5jZXIgaWYgaXQgaXMgYWN0aXZlOwogICAgICAgKiBgZmx1c2goKWAgaW1tZWRpYXRlbHkgaW52b2tlcyB0aGUgZGVib3VuY2VkIGNhbGxiYWNrIGlmIHRoZSBkZWJvdW5jZXIKICAgICAgICogaXMgYWN0aXZlLgogICAgICAgKi8KICAgICAgZGVib3VuY2Uoam9iTmFtZSwgY2FsbGJhY2ssIHdhaXQpIHsKICAgICAgICB0aGlzLl9kZWJvdW5jZXJzID0gdGhpcy5fZGVib3VuY2VycyB8fCB7fTsKICAgICAgICByZXR1cm4gdGhpcy5fZGVib3VuY2Vyc1tqb2JOYW1lXSA9IFBvbHltZXIuRGVib3VuY2VyLmRlYm91bmNlKAogICAgICAgICAgICAgIHRoaXMuX2RlYm91bmNlcnNbam9iTmFtZV0KICAgICAgICAgICAgLCB3YWl0ID4gMCA/IFBvbHltZXIuQXN5bmMudGltZU91dC5hZnRlcih3YWl0KSA6IFBvbHltZXIuQXN5bmMubWljcm9UYXNrCiAgICAgICAgICAgICwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgYSBuYW1lZCBkZWJvdW5jZXIgaXMgYWN0aXZlLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gam9iTmFtZSBUaGUgbmFtZSBvZiB0aGUgZGVib3VuY2VyIHN0YXJ0ZWQgd2l0aCBgZGVib3VuY2VgCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGRlYm91bmNlciBpcyBhY3RpdmUgKGhhcyBub3QgeWV0IGZpcmVkKS4KICAgICAgICovCiAgICAgIGlzRGVib3VuY2VyQWN0aXZlKGpvYk5hbWUpIHsKICAgICAgICB0aGlzLl9kZWJvdW5jZXJzID0gdGhpcy5fZGVib3VuY2VycyB8fCB7fTsKICAgICAgICBsZXQgZGVib3VuY2VyID0gdGhpcy5fZGVib3VuY2Vyc1tqb2JOYW1lXTsKICAgICAgICByZXR1cm4gISEoZGVib3VuY2VyICYmIGRlYm91bmNlci5pc0FjdGl2ZSgpKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEltbWVkaWF0ZWx5IGNhbGxzIHRoZSBkZWJvdW5jZXIgYGNhbGxiYWNrYCBhbmQgaW5hY3RpdmF0ZXMgaXQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JOYW1lIFRoZSBuYW1lIG9mIHRoZSBkZWJvdW5jZXIgc3RhcnRlZCB3aXRoIGBkZWJvdW5jZWAKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGZsdXNoRGVib3VuY2VyKGpvYk5hbWUpIHsKICAgICAgICB0aGlzLl9kZWJvdW5jZXJzID0gdGhpcy5fZGVib3VuY2VycyB8fCB7fTsKICAgICAgICBsZXQgZGVib3VuY2VyID0gdGhpcy5fZGVib3VuY2Vyc1tqb2JOYW1lXTsKICAgICAgICBpZiAoZGVib3VuY2VyKSB7CiAgICAgICAgICBkZWJvdW5jZXIuZmx1c2goKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDYW5jZWxzIGFuIGFjdGl2ZSBkZWJvdW5jZXIuICBUaGUgYGNhbGxiYWNrYCB3aWxsIG5vdCBiZSBjYWxsZWQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBqb2JOYW1lIFRoZSBuYW1lIG9mIHRoZSBkZWJvdW5jZXIgc3RhcnRlZCB3aXRoIGBkZWJvdW5jZWAKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNhbmNlbERlYm91bmNlcihqb2JOYW1lKSB7CiAgICAgICAgdGhpcy5fZGVib3VuY2VycyA9IHRoaXMuX2RlYm91bmNlcnMgfHwge307CiAgICAgICAgbGV0IGRlYm91bmNlciA9IHRoaXMuX2RlYm91bmNlcnNbam9iTmFtZV07CiAgICAgICAgaWYgKGRlYm91bmNlcikgewogICAgICAgICAgZGVib3VuY2VyLmNhbmNlbCgpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJ1bnMgYSBjYWxsYmFjayBmdW5jdGlvbiBhc3luY2hyb25vdXNseS4KICAgICAgICoKICAgICAgICogQnkgZGVmYXVsdCAoaWYgbm8gd2FpdFRpbWUgaXMgc3BlY2lmaWVkKSwgYXN5bmMgY2FsbGJhY2tzIGFyZSBydW4gYXQKICAgICAgICogbWljcm90YXNrIHRpbWluZywgd2hpY2ggd2lsbCBvY2N1ciBiZWZvcmUgcGFpbnQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IUZ1bmN0aW9ufSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcnVuLCBib3VuZCB0byBgdGhpc2AuCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gd2FpdFRpbWUgVGltZSB0byB3YWl0IGJlZm9yZSBjYWxsaW5nIHRoZQogICAgICAgKiAgIGBjYWxsYmFja2AuICBJZiB1bnNwZWNpZmllZCBvciAwLCB0aGUgY2FsbGJhY2sgd2lsbCBiZSBydW4gYXQgbWljcm90YXNrCiAgICAgICAqICAgdGltaW5nIChiZWZvcmUgcGFpbnQpLgogICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IEhhbmRsZSB0aGF0IG1heSBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgYXN5bmMgam9iLgogICAgICAgKi8KICAgICAgYXN5bmMoY2FsbGJhY2ssIHdhaXRUaW1lKSB7CiAgICAgICAgcmV0dXJuIHdhaXRUaW1lID4gMCA/IFBvbHltZXIuQXN5bmMudGltZU91dC5ydW4oY2FsbGJhY2suYmluZCh0aGlzKSwgd2FpdFRpbWUpIDoKICAgICAgICAgICAgflBvbHltZXIuQXN5bmMubWljcm9UYXNrLnJ1bihjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENhbmNlbHMgYW4gYXN5bmMgb3BlcmF0aW9uIHN0YXJ0ZWQgd2l0aCBgYXN5bmNgLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gaGFuZGxlIEhhbmRsZSByZXR1cm5lZCBmcm9tIG9yaWdpbmFsIGBhc3luY2AgY2FsbCB0bwogICAgICAgKiAgIGNhbmNlbC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNhbmNlbEFzeW5jKGhhbmRsZSkgewogICAgICAgIGhhbmRsZSA8IDAgPyBQb2x5bWVyLkFzeW5jLm1pY3JvVGFzay5jYW5jZWwofmhhbmRsZSkgOgogICAgICAgICAgICBQb2x5bWVyLkFzeW5jLnRpbWVPdXQuY2FuY2VsKGhhbmRsZSk7CiAgICAgIH0KCiAgICAgIC8vIG90aGVyCgogICAgICAvKioKICAgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBjcmVhdGluZyBhbiBlbGVtZW50IGFuZCBjb25maWd1cmluZyBpdC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBIVE1MIGVsZW1lbnQgdGFnIHRvIGNyZWF0ZS4KICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBwcm9wcyBPYmplY3Qgb2YgcHJvcGVydGllcyB0byBjb25maWd1cmUgb24gdGhlCiAgICAgICAqICAgIGluc3RhbmNlLgogICAgICAgKiBAcmV0dXJuIHshRWxlbWVudH0gTmV3bHkgY3JlYXRlZCBhbmQgY29uZmlndXJlZCBlbGVtZW50LgogICAgICAgKi8KICAgICAgY3JlYXRlKHRhZywgcHJvcHMpIHsKICAgICAgICBsZXQgZWx0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgICAgIGlmIChwcm9wcykgewogICAgICAgICAgaWYgKGVsdC5zZXRQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgIGVsdC5zZXRQcm9wZXJ0aWVzKHByb3BzKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZvciAobGV0IG4gaW4gcHJvcHMpIHsKICAgICAgICAgICAgICBlbHRbbl0gPSBwcm9wc1tuXTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZWx0OwogICAgICB9CgogICAgICAvKioKICAgICAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciBpbXBvcnRpbmcgYW4gSFRNTCBkb2N1bWVudCBpbXBlcmF0aXZlbHkuCiAgICAgICAqCiAgICAgICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBuZXcgYDxsaW5rIHJlbD0iaW1wb3J0Ij5gIGVsZW1lbnQgd2l0aAogICAgICAgKiB0aGUgcHJvdmlkZWQgVVJMIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBkb2N1bWVudCB0byBzdGFydCBsb2FkaW5nLgogICAgICAgKiBJbiB0aGUgYG9ubG9hZGAgY2FsbGJhY2ssIHRoZSBgaW1wb3J0YCBwcm9wZXJ0eSBvZiB0aGUgYGxpbmtgCiAgICAgICAqIGVsZW1lbnQgd2lsbCBjb250YWluIHRoZSBpbXBvcnRlZCBkb2N1bWVudCBjb250ZW50cy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGhyZWYgVVJMIHRvIGRvY3VtZW50IHRvIGxvYWQuCiAgICAgICAqIEBwYXJhbSB7P2Z1bmN0aW9uKCFFdmVudCk6dm9pZD19IG9ubG9hZCBDYWxsYmFjayB0byBub3RpZnkgd2hlbiBhbiBpbXBvcnQgc3VjY2Vzc2Z1bGx5CiAgICAgICAqICAgbG9hZGVkLgogICAgICAgKiBAcGFyYW0gez9mdW5jdGlvbighRXJyb3JFdmVudCk6dm9pZD19IG9uZXJyb3IgQ2FsbGJhY2sgdG8gbm90aWZ5IHdoZW4gYW4gaW1wb3J0CiAgICAgICAqICAgdW5zdWNjZXNzZnVsbHkgbG9hZGVkLgogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRBc3luYyBUcnVlIGlmIHRoZSBpbXBvcnQgc2hvdWxkIGJlIGxvYWRlZCBgYXN5bmNgLgogICAgICAgKiAgIERlZmF1bHRzIHRvIGBmYWxzZWAuCiAgICAgICAqIEByZXR1cm4geyFIVE1MTGlua0VsZW1lbnR9IFRoZSBsaW5rIGVsZW1lbnQgZm9yIHRoZSBVUkwgdG8gYmUgbG9hZGVkLgogICAgICAgKi8KICAgICAgaW1wb3J0SHJlZihocmVmLCBvbmxvYWQsIG9uZXJyb3IsIG9wdEFzeW5jKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnMKICAgICAgICBsZXQgbG9hZEZuID0gb25sb2FkID8gb25sb2FkLmJpbmQodGhpcykgOiBudWxsOwogICAgICAgIGxldCBlcnJvckZuID0gb25lcnJvciA/IG9uZXJyb3IuYmluZCh0aGlzKSA6IG51bGw7CiAgICAgICAgcmV0dXJuIFBvbHltZXIuaW1wb3J0SHJlZihocmVmLCBsb2FkRm4sIGVycm9yRm4sIG9wdEFzeW5jKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFBvbHlmaWxsIGZvciBFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzLCB3aGljaCBpcyBzb21ldGltZXMgc3RpbGwKICAgICAgICogcHJlZml4ZWQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciBTZWxlY3RvciB0byB0ZXN0LgogICAgICAgKiBAcGFyYW0geyFFbGVtZW50PX0gbm9kZSBFbGVtZW50IHRvIHRlc3QgdGhlIHNlbGVjdG9yIGFnYWluc3QuCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IuCiAgICAgICAqLwogICAgICBlbGVtZW50TWF0Y2hlcyhzZWxlY3Rvciwgbm9kZSkgewogICAgICAgIHJldHVybiBQb2x5bWVyLmRvbS5tYXRjaGVzU2VsZWN0b3IoLyoqIEB0eXBlIHshRWxlbWVudH0gKi8gKG5vZGUgfHwgdGhpcyksIHNlbGVjdG9yKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFRvZ2dsZXMgYW4gSFRNTCBhdHRyaWJ1dGUgb24gb3Igb2ZmLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBIVE1MIGF0dHJpYnV0ZSBuYW1lCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGJvb2wgQm9vbGVhbiB0byBmb3JjZSB0aGUgYXR0cmlidXRlIG9uIG9yIG9mZi4KICAgICAgICogICAgV2hlbiB1bnNwZWNpZmllZCwgdGhlIHN0YXRlIG9mIHRoZSBhdHRyaWJ1dGUgd2lsbCBiZSByZXZlcnNlZC4KICAgICAgICogQHBhcmFtIHtFbGVtZW50PX0gbm9kZSBOb2RlIHRvIHRhcmdldC4gIERlZmF1bHRzIHRvIGB0aGlzYC4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIHRvZ2dsZUF0dHJpYnV0ZShuYW1lLCBib29sLCBub2RlKSB7CiAgICAgICAgbm9kZSA9IC8qKiBAdHlwZSB7RWxlbWVudH0gKi8gKG5vZGUgfHwgdGhpcyk7CiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICAgICAgYm9vbCA9ICFub2RlLmhhc0F0dHJpYnV0ZShuYW1lKTsKICAgICAgICB9CiAgICAgICAgaWYgKGJvb2wpIHsKICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgfQogICAgICB9CgoKICAgICAgLyoqCiAgICAgICAqIFRvZ2dsZXMgYSBDU1MgY2xhc3Mgb24gb3Igb2ZmLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBDU1MgY2xhc3MgbmFtZQogICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBib29sIEJvb2xlYW4gdG8gZm9yY2UgdGhlIGNsYXNzIG9uIG9yIG9mZi4KICAgICAgICogICAgV2hlbiB1bnNwZWNpZmllZCwgdGhlIHN0YXRlIG9mIHRoZSBjbGFzcyB3aWxsIGJlIHJldmVyc2VkLgogICAgICAgKiBAcGFyYW0ge0VsZW1lbnQ9fSBub2RlIE5vZGUgdG8gdGFyZ2V0LiAgRGVmYXVsdHMgdG8gYHRoaXNgLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgdG9nZ2xlQ2xhc3MobmFtZSwgYm9vbCwgbm9kZSkgewogICAgICAgIG5vZGUgPSAvKiogQHR5cGUge0VsZW1lbnR9ICovIChub2RlIHx8IHRoaXMpOwogICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgICAgIGJvb2wgPSAhbm9kZS5jbGFzc0xpc3QuY29udGFpbnMobmFtZSk7CiAgICAgICAgfQogICAgICAgIGlmIChib29sKSB7CiAgICAgICAgICBub2RlLmNsYXNzTGlzdC5hZGQobmFtZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5vZGUuY2xhc3NMaXN0LnJlbW92ZShuYW1lKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDcm9zcy1wbGF0Zm9ybSBoZWxwZXIgZm9yIHNldHRpbmcgYW4gZWxlbWVudCdzIENTUyBgdHJhbnNmb3JtYCBwcm9wZXJ0eS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zZm9ybVRleHQgVHJhbnNmb3JtIHNldHRpbmcuCiAgICAgICAqIEBwYXJhbSB7RWxlbWVudD19IG5vZGUgRWxlbWVudCB0byBhcHBseSB0aGUgdHJhbnNmb3JtIHRvLgogICAgICAgKiBEZWZhdWx0cyB0byBgdGhpc2AKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIHRyYW5zZm9ybSh0cmFuc2Zvcm1UZXh0LCBub2RlKSB7CiAgICAgICAgbm9kZSA9IC8qKiBAdHlwZSB7RWxlbWVudH0gKi8gKG5vZGUgfHwgdGhpcyk7CiAgICAgICAgbm9kZS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm1UZXh0OwogICAgICAgIG5vZGUuc3R5bGUudHJhbnNmb3JtID0gdHJhbnNmb3JtVGV4dDsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIENyb3NzLXBsYXRmb3JtIGhlbHBlciBmb3Igc2V0dGluZyBhbiBlbGVtZW50J3MgQ1NTIGB0cmFuc2xhdGUzZGAKICAgICAgICogcHJvcGVydHkuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IFggb2Zmc2V0LgogICAgICAgKiBAcGFyYW0ge251bWJlcn0geSBZIG9mZnNldC4KICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHogWiBvZmZzZXQuCiAgICAgICAqIEBwYXJhbSB7RWxlbWVudD19IG5vZGUgRWxlbWVudCB0byBhcHBseSB0aGUgdHJhbnNmb3JtIHRvLgogICAgICAgKiBEZWZhdWx0cyB0byBgdGhpc2AuCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICB0cmFuc2xhdGUzZCh4LCB5LCB6LCBub2RlKSB7CiAgICAgICAgbm9kZSA9IC8qKiBAdHlwZSB7RWxlbWVudH0gKi8gKG5vZGUgfHwgdGhpcyk7CiAgICAgICAgdGhpcy50cmFuc2Zvcm0oJ3RyYW5zbGF0ZTNkKCcgKyB4ICsgJywnICsgeSArICcsJyArIHogKyAnKScsIG5vZGUpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gYW4gYXJyYXksIGlmIGl0IGV4aXN0cy4KICAgICAgICoKICAgICAgICogSWYgdGhlIGFycmF5IGlzIHNwZWNpZmllZCBieSBwYXRoLCBhIGNoYW5nZSBub3RpZmljYXRpb24gaXMKICAgICAgICogZ2VuZXJhdGVkLCBzbyB0aGF0IG9ic2VydmVycywgZGF0YSBiaW5kaW5ncyBhbmQgY29tcHV0ZWQKICAgICAgICogcHJvcGVydGllcyB3YXRjaGluZyB0aGF0IHBhdGggY2FuIHVwZGF0ZS4KICAgICAgICoKICAgICAgICogSWYgdGhlIGFycmF5IGlzIHBhc3NlZCBkaXJlY3RseSwgKipubyBjaGFuZ2UKICAgICAgICogbm90aWZpY2F0aW9uIGlzIGdlbmVyYXRlZCoqLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZyB8ICFBcnJheTxudW1iZXJ8c3RyaW5nPn0gYXJyYXlPclBhdGggUGF0aCB0byBhcnJheSBmcm9tIHdoaWNoIHRvIHJlbW92ZSB0aGUgaXRlbQogICAgICAgKiAgIChvciB0aGUgYXJyYXkgaXRzZWxmKS4KICAgICAgICogQHBhcmFtIHsqfSBpdGVtIEl0ZW0gdG8gcmVtb3ZlLgogICAgICAgKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgY29udGFpbmluZyBpdGVtIHJlbW92ZWQuCiAgICAgICAqLwogICAgICBhcnJheURlbGV0ZShhcnJheU9yUGF0aCwgaXRlbSkgewogICAgICAgIGxldCBpbmRleDsKICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhcnJheU9yUGF0aCkpIHsKICAgICAgICAgIGluZGV4ID0gYXJyYXlPclBhdGguaW5kZXhPZihpdGVtKTsKICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheU9yUGF0aC5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBsZXQgYXJyID0gUG9seW1lci5QYXRoLmdldCh0aGlzLCBhcnJheU9yUGF0aCk7CiAgICAgICAgICBpbmRleCA9IGFyci5pbmRleE9mKGl0ZW0pOwogICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3BsaWNlKGFycmF5T3JQYXRoLCBpbmRleCwgMSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CgogICAgICAvLyBsb2dnaW5nCgogICAgICAvKioKICAgICAgICogRmFjYWRlcyBgY29uc29sZS5sb2dgL2B3YXJuYC9gZXJyb3JgIGFzIG92ZXJyaWRlIHBvaW50LgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGV2ZWwgT25lIG9mICdsb2cnLCAnd2FybicsICdlcnJvcicKICAgICAgICogQHBhcmFtIHtBcnJheX0gYXJncyBBcnJheSBvZiBzdHJpbmdzIG9yIG9iamVjdHMgdG8gbG9nCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfbG9nZ2VyKGxldmVsLCBhcmdzKSB7CiAgICAgICAgLy8gYWNjZXB0IFsnZm9vJywgJ2JhciddIGFuZCBbWydmb28nLCAnYmFyJ11dCiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJncykgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShhcmdzWzBdKSkgewogICAgICAgICAgYXJncyA9IGFyZ3NbMF07CiAgICAgICAgfQogICAgICAgIHN3aXRjaChsZXZlbCkgewogICAgICAgICAgY2FzZSAnbG9nJzoKICAgICAgICAgIGNhc2UgJ3dhcm4nOgogICAgICAgICAgY2FzZSAnZXJyb3InOgogICAgICAgICAgICBjb25zb2xlW2xldmVsXSguLi5hcmdzKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBGYWNhZGVzIGBjb25zb2xlLmxvZ2AgYXMgYW4gb3ZlcnJpZGUgcG9pbnQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7Li4uKn0gYXJncyBBcnJheSBvZiBzdHJpbmdzIG9yIG9iamVjdHMgdG8gbG9nCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBfbG9nKC4uLmFyZ3MpIHsKICAgICAgICB0aGlzLl9sb2dnZXIoJ2xvZycsIGFyZ3MpOwogICAgICB9CgogICAgICAvKioKICAgICAgICogRmFjYWRlcyBgY29uc29sZS53YXJuYCBhcyBhbiBvdmVycmlkZSBwb2ludC4KICAgICAgICoKICAgICAgICogQHBhcmFtIHsuLi4qfSBhcmdzIEFycmF5IG9mIHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBsb2cKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIF93YXJuKC4uLmFyZ3MpIHsKICAgICAgICB0aGlzLl9sb2dnZXIoJ3dhcm4nLCBhcmdzKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEZhY2FkZXMgYGNvbnNvbGUuZXJyb3JgIGFzIGFuIG92ZXJyaWRlIHBvaW50LgogICAgICAgKgogICAgICAgKiBAcGFyYW0gey4uLip9IGFyZ3MgQXJyYXkgb2Ygc3RyaW5ncyBvciBvYmplY3RzIHRvIGxvZwogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX2Vycm9yKC4uLmFyZ3MpIHsKICAgICAgICB0aGlzLl9sb2dnZXIoJ2Vycm9yJywgYXJncyk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBGb3JtYXRzIGEgbWVzc2FnZSB1c2luZyB0aGUgZWxlbWVudCB0eXBlIGFuIGEgbWV0aG9kIG5hbWUuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2ROYW1lIE1ldGhvZCBuYW1lIHRvIGFzc29jaWF0ZSB3aXRoIG1lc3NhZ2UKICAgICAgICogQHBhcmFtIHsuLi4qfSBhcmdzIEFycmF5IG9mIHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBsb2cKICAgICAgICogQHJldHVybiB7QXJyYXl9IEFycmF5IHdpdGggZm9ybWF0dGluZyBpbmZvcm1hdGlvbiBmb3IgYGNvbnNvbGVgCiAgICAgICAqICAgbG9nZ2luZy4KICAgICAgICovCiAgICAgIF9sb2dmKG1ldGhvZE5hbWUsIC4uLmFyZ3MpIHsKICAgICAgICByZXR1cm4gWydbJXM6OiVzXScsIHRoaXMuaXMsIG1ldGhvZE5hbWUsIC4uLmFyZ3NdOwogICAgICB9CgogICAgfQoKICAgIExlZ2FjeUVsZW1lbnQucHJvdG90eXBlLmlzID0gJyc7CgogICAgcmV0dXJuIExlZ2FjeUVsZW1lbnQ7CgogIH0pOwoKfSkoKTsKCgoKICAoZnVuY3Rpb24oKSB7CgogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGNvbnN0IGxpZmVjeWNsZVByb3BzID0gewogICAgICBhdHRhY2hlZDogdHJ1ZSwKICAgICAgZGV0YWNoZWQ6IHRydWUsCiAgICAgIHJlYWR5OiB0cnVlLAogICAgICBjcmVhdGVkOiB0cnVlLAogICAgICBiZWZvcmVSZWdpc3RlcjogdHJ1ZSwKICAgICAgcmVnaXN0ZXJlZDogdHJ1ZSwKICAgICAgYXR0cmlidXRlQ2hhbmdlZDogdHJ1ZSwKICAgICAgbGlzdGVuZXJzOiB0cnVlLAogICAgICBob3N0QXR0cmlidXRlczogdHJ1ZQogICAgfTsKCiAgICBjb25zdCBleGNsdWRlT25JbmZvID0gewogICAgICBhdHRhY2hlZDogdHJ1ZSwKICAgICAgZGV0YWNoZWQ6IHRydWUsCiAgICAgIHJlYWR5OiB0cnVlLAogICAgICBjcmVhdGVkOiB0cnVlLAogICAgICBiZWZvcmVSZWdpc3RlcjogdHJ1ZSwKICAgICAgcmVnaXN0ZXJlZDogdHJ1ZSwKICAgICAgYXR0cmlidXRlQ2hhbmdlZDogdHJ1ZSwKICAgICAgYmVoYXZpb3JzOiB0cnVlLAogICAgICBfbm9BY2Nlc3NvcnM6IHRydWUKICAgIH07CgogICAgY29uc3QgZXhjbHVkZU9uQmVoYXZpb3JzID0gT2JqZWN0LmFzc2lnbih7CiAgICAgIGxpc3RlbmVyczogdHJ1ZSwKICAgICAgaG9zdEF0dHJpYnV0ZXM6IHRydWUsCiAgICAgIHByb3BlcnRpZXM6IHRydWUsCiAgICAgIG9ic2VydmVyczogdHJ1ZSwKICAgIH0sIGV4Y2x1ZGVPbkluZm8pOwoKICAgIGZ1bmN0aW9uIGNvcHlQcm9wZXJ0aWVzKHNvdXJjZSwgdGFyZ2V0LCBleGNsdWRlUHJvcHMpIHsKICAgICAgY29uc3Qgbm9BY2Nlc3NvcnMgPSBzb3VyY2UuX25vQWNjZXNzb3JzOwogICAgICBmb3IgKGxldCBwIGluIHNvdXJjZSkgewogICAgICAgIGlmICghKHAgaW4gZXhjbHVkZVByb3BzKSkgewogICAgICAgICAgaWYgKG5vQWNjZXNzb3JzKSB7CiAgICAgICAgICAgIHRhcmdldFtwXSA9IHNvdXJjZVtwXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxldCBwZCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBwKTsKICAgICAgICAgICAgaWYgKHBkKSB7CiAgICAgICAgICAgICAgLy8gZW5zdXJlIHByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSBzbyB0aGF0IGEgbGF0ZXIgYmVoYXZpb3IgY2FuCiAgICAgICAgICAgICAgLy8gcmUtY29uZmlndXJlIGl0LgogICAgICAgICAgICAgIHBkLmNvbmZpZ3VyYWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcCwgcGQpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBsaWVzIGEgImxlZ2FjeSIgYmVoYXZpb3Igb3IgYXJyYXkgb2YgYmVoYXZpb3JzIHRvIHRoZSBwcm92aWRlZCBjbGFzcy4KICAgICAqCiAgICAgKiBOb3RlOiB0aGlzIG1ldGhvZCB3aWxsIGF1dG9tYXRpY2FsbHkgYWxzbyBhcHBseSB0aGUgYFBvbHltZXIuTGVnYWN5RWxlbWVudE1peGluYAogICAgICogdG8gZW5zdXJlIHRoYXQgYW55IGxlZ2FjeSBiZWhhdmlvcnMgY2FuIHJlbHkgb24gbGVnYWN5IFBvbHltZXIgQVBJIG9uCiAgICAgKiB0aGUgdW5kZXJseWluZyBlbGVtZW50LgogICAgICoKICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0geyFPYmplY3R8IUFycmF5PCFPYmplY3Q+fSBiZWhhdmlvcnMgQmVoYXZpb3Igb2JqZWN0IG9yIGFycmF5IG9mIGJlaGF2aW9ycy4KICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3OlQpfSBrbGFzcyBFbGVtZW50IGNsYXNzLgogICAgICogQHJldHVybiB7ZnVuY3Rpb24obmV3OlQpfSBSZXR1cm5zIGEgbmV3IEVsZW1lbnQgY2xhc3MgZXh0ZW5kZWQgYnkgdGhlCiAgICAgKiBwYXNzZWQgaW4gYGJlaGF2aW9yc2AgYW5kIGFsc28gYnkgYFBvbHltZXIuTGVnYWN5RWxlbWVudE1peGluYC4KICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0cywgY2hlY2tUeXBlc30KICAgICAqLwogICAgZnVuY3Rpb24gbWl4aW5CZWhhdmlvcnMoYmVoYXZpb3JzLCBrbGFzcykgewogICAgICByZXR1cm4gR2VuZXJhdGVDbGFzc0Zyb21JbmZvKHt9LCBQb2x5bWVyLkxlZ2FjeUVsZW1lbnRNaXhpbihrbGFzcyksIGJlaGF2aW9ycyk7CiAgICB9CgogICAgLy8gTk9URToKICAgIC8vIDEueAogICAgLy8gQmVoYXZpb3JzIHdlcmUgbWl4ZWQgaW4gKmluIHJldmVyc2Ugb3JkZXIqIGFuZCBkZS1kdXBlZCBvbiB0aGUgZmx5LgogICAgLy8gVGhlIHJ1bGUgd2FzIHRoYXQgYmVoYXZpb3IgcHJvcGVydGllcyB3ZXJlIGNvcGllZCBvbnRvIHRoZSBlbGVtZW50CiAgICAvLyBwcm90b3R5cGUgaWYgYW5kIG9ubHkgaWYgdGhlIHByb3BlcnR5IGRpZCBub3QgYWxyZWFkeSBleGlzdC4KICAgIC8vIEdpdmVuOiBQb2x5bWVyeyBiZWhhdmlvcnM6IFtBLCBCLCBDLCBBLCBCXX0sIHByb3BlcnR5IGNvcHkgb3JkZXIgd2FzOgogICAgLy8gKDEpLCBCLCAoMiksIEEsICgzKSBDLiBUaGlzIG1lYW5zIHByb3RvdHlwZSBwcm9wZXJ0aWVzIHdpbiBvdmVyCiAgICAvLyBCIHByb3BlcnRpZXMgd2luIG92ZXIgQSB3aW4gb3ZlciBDLiBUaGlzIG1pcnJvcnMgd2hhdCB3b3VsZCBoYXBwZW4KICAgIC8vIHdpdGggaW5oZXJpdGFuY2UgaWYgZWxlbWVudCBleHRlbmRlZCBCIGV4dGVuZGVkIEEgZXh0ZW5kZWQgQy4KICAgIC8vCiAgICAvLyBBZ2FpbiBnaXZlbiwgUG9seW1lcnsgYmVoYXZpb3JzOiBbQSwgQiwgQywgQSwgQl19LCB0aGUgcmVzdWx0aW5nCiAgICAvLyBgYmVoYXZpb3JzYCBhcnJheSB3YXMgW0MsIEEsIEJdLgogICAgLy8gQmVoYXZpb3IgbGlmZWN5Y2xlIG1ldGhvZHMgd2VyZSBjYWxsZWQgaW4gYmVoYXZpb3IgYXJyYXkgb3JkZXIKICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBlbGVtZW50LCBlLmcuICgxKSBDLmNyZWF0ZWQsICgyKSBBLmNyZWF0ZWQsCiAgICAvLyAoMykgQi5jcmVhdGVkLCAoNCkgZWxlbWVudC5jcmVhdGVkLiBUaGVyZSB3YXMgbm8gc3VwcG9ydCBmb3IKICAgIC8vIHN1cGVyLCBhbmQgInN1cGVyLWJlaGF2aW9yIiBtZXRob2RzIHdlcmUgY2FsbGFibGUgb25seSBieSBuYW1lKS4KICAgIC8vCiAgICAvLyAyLngKICAgIC8vIEJlaGF2aW9ycyBhcmUgbWFkZSBpbnRvIHByb3BlciBtaXhpbnMgd2hpY2ggbGl2ZSBpbiB0aGUKICAgIC8vIGVsZW1lbnQncyBwcm90b3R5cGUgY2hhaW4uIEJlaGF2aW9ycyBhcmUgcGxhY2VkIGluIHRoZSBlbGVtZW50IHByb3RvdHlwZQogICAgLy8gZWxkZXN0IHRvIHlvdW5nZXN0IGFuZCBkZS1kdXBlZCB5b3VuZ2VzdCB0byBvbGRlc3Q6CiAgICAvLyBTbywgZmlyc3QgW0EsIEIsIEMsIEEsIEJdIGJlY29tZXMgW0MsIEEsIEJdIHRoZW4sCiAgICAvLyB0aGUgZWxlbWVudCBwcm90b3R5cGUgYmVjb21lcyAob2xkZXN0KSAoMSkgUG9seW1lci5FbGVtZW50LCAoMikgY2xhc3MoQyksCiAgICAvLyAoMykgY2xhc3MoQSksICg0KSBjbGFzcyhCKSwgKDUpIGNsYXNzKFBvbHltZXIoey4uLn0pKS4KICAgIC8vIFJlc3VsdDoKICAgIC8vIFRoaXMgbWVhbnMgZWxlbWVudCBwcm9wZXJ0aWVzIHdpbiBvdmVyIEIgcHJvcGVydGllcyB3aW4gb3ZlciBBIHdpbgogICAgLy8gb3ZlciBDLiAoc2FtZSBhcyAxLngpCiAgICAvLyBJZiBsaWZlY3ljbGUgaXMgY2FsbGVkIChzdXBlciB0aGVuIG1lKSwgb3JkZXIgaXMKICAgIC8vICgxKSBDLmNyZWF0ZWQsICgyKSBBLmNyZWF0ZWQsICgzKSBCLmNyZWF0ZWQsICg0KSBlbGVtZW50LmNyZWF0ZWQKICAgIC8vIChhZ2FpbiBzYW1lIGFzIDEueCkKICAgIGZ1bmN0aW9uIGFwcGx5QmVoYXZpb3JzKHByb3RvLCBiZWhhdmlvcnMsIGxpZmVjeWNsZSkgewogICAgICBmb3IgKGxldCBpPTA7IGk8YmVoYXZpb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgYXBwbHlJbmZvKHByb3RvLCBiZWhhdmlvcnNbaV0sIGxpZmVjeWNsZSwgZXhjbHVkZU9uQmVoYXZpb3JzKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGFwcGx5SW5mbyhwcm90bywgaW5mbywgbGlmZWN5Y2xlLCBleGNsdWRlUHJvcHMpIHsKICAgICAgY29weVByb3BlcnRpZXMoaW5mbywgcHJvdG8sIGV4Y2x1ZGVQcm9wcyk7CiAgICAgIGZvciAobGV0IHAgaW4gbGlmZWN5Y2xlUHJvcHMpIHsKICAgICAgICBpZiAoaW5mb1twXSkgewogICAgICAgICAgbGlmZWN5Y2xlW3BdID0gbGlmZWN5Y2xlW3BdIHx8IFtdOwogICAgICAgICAgbGlmZWN5Y2xlW3BdLnB1c2goaW5mb1twXSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0ge0FycmF5fSBiZWhhdmlvcnMgTGlzdCBvZiBiZWhhdmlvcnMgdG8gZmxhdHRlbi4KICAgICAqIEBwYXJhbSB7QXJyYXk9fSBsaXN0IFRhcmdldCBsaXN0IHRvIGZsYXR0ZW4gYmVoYXZpb3JzIGludG8uCiAgICAgKiBAcGFyYW0ge0FycmF5PX0gZXhjbHVkZSBMaXN0IG9mIGJlaGF2aW9ycyB0byBleGNsdWRlIGZyb20gdGhlIGxpc3QuCiAgICAgKiBAcmV0dXJuIHshQXJyYXl9IFJldHVybnMgdGhlIGxpc3Qgb2YgZmxhdHRlbmVkIGJlaGF2aW9ycy4KICAgICAqLwogICAgZnVuY3Rpb24gZmxhdHRlbkJlaGF2aW9ycyhiZWhhdmlvcnMsIGxpc3QsIGV4Y2x1ZGUpIHsKICAgICAgbGlzdCA9IGxpc3QgfHwgW107CiAgICAgIGZvciAobGV0IGk9YmVoYXZpb3JzLmxlbmd0aC0xOyBpID49IDA7IGktLSkgewogICAgICAgIGxldCBiID0gYmVoYXZpb3JzW2ldOwogICAgICAgIGlmIChiKSB7CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShiKSkgewogICAgICAgICAgICBmbGF0dGVuQmVoYXZpb3JzKGIsIGxpc3QpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gZGVkdXAKICAgICAgICAgICAgaWYgKGxpc3QuaW5kZXhPZihiKSA8IDAgJiYgKCFleGNsdWRlIHx8IGV4Y2x1ZGUuaW5kZXhPZihiKSA8IDApKSB7CiAgICAgICAgICAgICAgbGlzdC51bnNoaWZ0KGIpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvbnNvbGUud2FybignYmVoYXZpb3IgaXMgbnVsbCwgY2hlY2sgZm9yIG1pc3Npbmcgb3IgNDA0IGltcG9ydCcpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gbGlzdDsKICAgIH0KCiAgICAvKiBOb3RlIGFib3V0IGNvbnN0cnVjdGlvbiBhbmQgZXh0ZW5zaW9uIG9mIGxlZ2FjeSBjbGFzc2VzLgogICAgICBbQ2hhbmdlZCBpbiBRNCAyMDE4IHRvIG9wdGltaXplIHBlcmZvcm1hbmNlLl0KCiAgICAgIFdoZW4gY2FsbGluZyBgUG9seW1lcmAgb3IgYG1peGluQmVoYXZpb3JzYCwgdGhlIGdlbmVyYXRlZCBjbGFzcyBiZWxvdyBpcwogICAgICBtYWRlLiBUaGUgbGlzdCBvZiBiZWhhdmlvcnMgd2FzIHByZXZpb3VzbHkgbWFkZSBpbnRvIG9uZSBnZW5lcmF0ZWQgY2xhc3MgcGVyCiAgICAgIGJlaGF2aW9yLCBidXQgdGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UgYXMgYmVoYXZpb3JzIGFyZSBub3cgY2FsbGVkCiAgICAgIG1hbnVhbGx5LiBOb3RlLCB0aGVyZSBtYXkgKnN0aWxsKiBiZSBtdWx0aXBsZSBnZW5lcmF0ZWQgY2xhc3NlcyBpbiB0aGUKICAgICAgZWxlbWVudCdzIHByb3RvdHlwZSBjaGFpbiBpZiBleHRlbnNpb24gaXMgdXNlZCB3aXRoIGBtaXhpbkJlaGF2aW9yc2AuCgogICAgICBUaGUgZ2VuZXJhdGVkIGNsYXNzIGlzIGRpcmVjdGx5IHRpZWQgdG8gdGhlIGluZm8gb2JqZWN0IGFuZCBiZWhhdmlvcnMKICAgICAgdXNlZCB0byBjcmVhdGUgaXQuIFRoYXQgbGlzdCBvZiBiZWhhdmlvcnMgaXMgZmlsdGVyZWQgc28gaXQncyBvbmx5IHRoZQogICAgICBiZWhhdmlvcnMgbm90IGFjdGl2ZSBvbiB0aGUgc3VwZXJjbGFzcy4gSW4gb3JkZXIgdG8gY2FsbCB0aHJvdWdoIHRvIHRoZQogICAgICBlbnRpcmUgbGlzdCBvZiBsaWZlY3ljbGUgbWV0aG9kcywgaXQncyBpbXBvcnRhbnQgdG8gY2FsbCBgc3VwZXJgLgoKICAgICAgVGhlIGVsZW1lbnQncyBgcHJvcGVydGllc2AgYW5kIGBvYnNlcnZlcnNgIGFyZSBjb250cm9sbGVkIHZpYSB0aGUgZmluYWxpemF0aW9uCiAgICAgIG1lY2hhbmlzbSBwcm92aWRlZCBieSBgUHJvcGVydGllc01peGluYC4gYFByb3BlcnRpZXNgIGFuZCBgb2JzZXJ2ZXJzYCBhcmUKICAgICAgY29sbGVjdGVkIGJ5IG1hbnVhbGx5IHRyYXZlcnNpbmcgdGhlIHByb3RvdHlwZSBjaGFpbiBhbmQgbWVyZ2luZy4KCiAgICAgIFRvIGxpbWl0IGNoYW5nZXMsIHRoZSBgX3JlZ2lzdGVyZWRgIG1ldGhvZCBpcyBjYWxsZWQgdmlhIGBfaW5pdGlhbGl6ZVByb3BlcnRpZXNgCiAgICAgIGFuZCBub3QgYF9maW5hbGl6ZUNsYXNzYC4KICAgICovCiAgICAvKioKICAgICAqIEBwYXJhbSB7IVBvbHltZXJJbml0fSBpbmZvIFBvbHltZXIgaW5mbyBvYmplY3QKICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24obmV3OkhUTUxFbGVtZW50KX0gQmFzZSBiYXNlIGNsYXNzIHRvIGV4dGVuZCB3aXRoIGluZm8gb2JqZWN0CiAgICAgKiBAcGFyYW0ge09iamVjdH0gYmVoYXZpb3JzIGJlaGF2aW9ycyB0byBjb3B5IGludG8gdGhlIGVsZW1lbnQKICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKG5ldzpIVE1MRWxlbWVudCl9IEdlbmVyYXRlZCBjbGFzcwogICAgICogQHN1cHByZXNzIHtjaGVja1R5cGVzfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gR2VuZXJhdGVDbGFzc0Zyb21JbmZvKGluZm8sIEJhc2UsIGJlaGF2aW9ycykgewoKICAgICAgLy8gbWFuYWdlcyBiZWhhdmlvciBhbmQgbGlmZWN5Y2xlIHByb2Nlc3NpbmcgKGZpbGxlZCBpbiBhZnRlciBjbGFzcyBkZWZpbml0aW9uKQogICAgICBsZXQgYmVoYXZpb3JMaXN0OwogICAgICBjb25zdCBsaWZlY3ljbGUgPSB7fTsKCiAgICAgIC8qKiBAcHJpdmF0ZSAqLwogICAgICBjbGFzcyBQb2x5bWVyR2VuZXJhdGVkIGV4dGVuZHMgQmFzZSB7CgogICAgICAgIC8vIGV4cGxpY2l0bHkgbm90IGNhbGxpbmcgc3VwZXIuX2ZpbmFsaXplQ2xhc3MKICAgICAgICBzdGF0aWMgX2ZpbmFsaXplQ2xhc3MoKSB7CiAgICAgICAgICAvLyBpZiBjYWxsaW5nIHZpYSBhIHN1YmNsYXNzIHRoYXQgaGFzbid0IGJlZW4gZ2VuZXJhdGVkLCBwYXNzIHRocm91Z2ggdG8gc3VwZXIKICAgICAgICAgIGlmICghdGhpcy5oYXNPd25Qcm9wZXJ0eSh3aW5kb3cuSlNDb21waWxlcl9yZW5hbWVQcm9wZXJ0eSgnZ2VuZXJhdGVkRnJvbScsIHRoaXMpKSkgewogICAgICAgICAgICBzdXBlci5fZmluYWxpemVDbGFzcygpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gaW50ZXJsZWF2ZSBwcm9wZXJ0aWVzIGFuZCBvYnNlcnZlcnMgcGVyIGJlaGF2aW9yIGFuZCBgaW5mb2AKICAgICAgICAgICAgaWYgKGJlaGF2aW9yTGlzdCkgewogICAgICAgICAgICAgIGZvciAobGV0IGk9MCwgYjsgaSA8IGJlaGF2aW9yTGlzdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYiA9IGJlaGF2aW9yTGlzdFtpXTsKICAgICAgICAgICAgICAgIGlmIChiLnByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQcm9wZXJ0aWVzKGIucHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYi5vYnNlcnZlcnMpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVPYnNlcnZlcnMoYi5vYnNlcnZlcnMsIGIucHJvcGVydGllcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpbmZvLnByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICB0aGlzLmNyZWF0ZVByb3BlcnRpZXMoaW5mby5wcm9wZXJ0aWVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW5mby5vYnNlcnZlcnMpIHsKICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU9ic2VydmVycyhpbmZvLm9ic2VydmVycywgaW5mby5wcm9wZXJ0aWVzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdG8gcHJlcGFyZSB0aGUgZWxlbWVudCB0ZW1wbGF0ZQogICAgICAgICAgICB0aGlzLl9wcmVwYXJlVGVtcGxhdGUoKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHsKICAgICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB7fTsKICAgICAgICAgIGlmIChiZWhhdmlvckxpc3QpIHsKICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgYmVoYXZpb3JMaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwcm9wZXJ0aWVzLCBiZWhhdmlvckxpc3RbaV0ucHJvcGVydGllcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIE9iamVjdC5hc3NpZ24ocHJvcGVydGllcywgaW5mby5wcm9wZXJ0aWVzKTsKICAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljIGdldCBvYnNlcnZlcnMoKSB7CiAgICAgICAgICBsZXQgb2JzZXJ2ZXJzID0gW107CiAgICAgICAgICBpZiAoYmVoYXZpb3JMaXN0KSB7CiAgICAgICAgICAgIGZvciAobGV0IGk9MCwgYjsgaSA8IGJlaGF2aW9yTGlzdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGIgPSBiZWhhdmlvckxpc3RbaV07CiAgICAgICAgICAgICAgaWYgKGIub2JzZXJ2ZXJzKSB7CiAgICAgICAgICAgICAgICBvYnNlcnZlcnMgPSBvYnNlcnZlcnMuY29uY2F0KGIub2JzZXJ2ZXJzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChpbmZvLm9ic2VydmVycykgewogICAgICAgICAgICBvYnNlcnZlcnMgPSBvYnNlcnZlcnMuY29uY2F0KGluZm8ub2JzZXJ2ZXJzKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBvYnNlcnZlcnM7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqLwogICAgICAgIGNyZWF0ZWQoKSB7CiAgICAgICAgICBzdXBlci5jcmVhdGVkKCk7CiAgICAgICAgICBjb25zdCBsaXN0ID0gbGlmZWN5Y2xlLmNyZWF0ZWQ7CiAgICAgICAgICBpZiAobGlzdCkgewogICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgbGlzdFtpXS5jYWxsKHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqLwogICAgICAgIF9yZWdpc3RlcmVkKCkgewogICAgICAgICAgLyogTk9URTogYGJlZm9yZVJlZ2lzdGVyYCBpcyBjYWxsZWQgaGVyZSBmb3IgYmMsIGJ1dCB0aGUgYmVoYXZpb3IKICAgICAgICAgICAgaXMgZGlmZmVyZW50IHRoYW4gaW4gMS54LiBJbiAxLjAsIHRoZSBtZXRob2Qgd2FzIGNhbGxlZCAqYWZ0ZXIqCiAgICAgICAgICAgIG1peGluZyBwcm90b3R5cGVzIHRvZ2V0aGVyIGJ1dCAqYmVmb3JlKiBwcm9jZXNzaW5nIG9mIG1ldGEtb2JqZWN0cy4KICAgICAgICAgICAgSG93ZXZlciwgZHluYW1pYyBlZmZlY3RzIGNhbiBzdGlsbCBiZSBzZXQgaGVyZSBhbmQgY2FuIGJlIGRvbmUgZWl0aGVyCiAgICAgICAgICAgIGluIGBiZWZvcmVSZWdpc3RlcmAgb3IgYHJlZ2lzdGVyZWRgLiBJdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc2V0CiAgICAgICAgICAgIGBpc2AgaW4gYGJlZm9yZVJlZ2lzdGVyYCBhcyB5b3UgY291bGQgaW4gMS54LgogICAgICAgICAgKi8KICAgICAgICAgIC8vIG9ubHkgcHJvY2VlZCBpZiB0aGUgZ2VuZXJhdGVkIGNsYXNzJyBwcm90b3R5cGUgaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQuCiAgICAgICAgICBjb25zdCBnZW5lcmF0ZWRQcm90byA9IFBvbHltZXJHZW5lcmF0ZWQucHJvdG90eXBlOwogICAgICAgICAgaWYgKCFnZW5lcmF0ZWRQcm90by5oYXNPd25Qcm9wZXJ0eSgnX19oYXNSZWdpc3RlckZpbmlzaGVkJykpIHsKICAgICAgICAgICAgZ2VuZXJhdGVkUHJvdG8uX19oYXNSZWdpc3RlckZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgICAgLy8gZW5zdXJlIHN1cGVyY2xhc3MgaXMgcmVnaXN0ZXJlZCBmaXJzdC4KICAgICAgICAgICAgc3VwZXIuX3JlZ2lzdGVyZWQoKTsKICAgICAgICAgICAgLy8gY29weSBwcm9wZXJ0aWVzIG9udG8gdGhlIGdlbmVyYXRlZCBjbGFzcyBsYXppbHkgaWYgd2UncmUgb3B0aW1pemluZywKICAgICAgICAgICAgaWYgKFBvbHltZXIubGVnYWN5T3B0aW1pemF0aW9ucykgewogICAgICAgICAgICAgIGNvcHlQcm9wZXJ0aWVzVG9Qcm90byhnZW5lcmF0ZWRQcm90byk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gbWFrZSBzdXJlIGxlZ2FjeSBsaWZlY3ljbGUgaXMgY2FsbGVkIG9uIHRoZSAqZWxlbWVudConcyBwcm90b3R5cGUKICAgICAgICAgICAgLy8gYW5kIG5vdCB0aGUgZ2VuZXJhdGVkIGNsYXNzIHByb3RvdHlwZTsgaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4KICAgICAgICAgICAgLy8gZXh0ZW5kZWQsIHRoZXNlIGFyZSAqbm90KiB0aGUgc2FtZS4KICAgICAgICAgICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7CiAgICAgICAgICAgIGxldCBsaXN0ID0gbGlmZWN5Y2xlLmJlZm9yZVJlZ2lzdGVyOwogICAgICAgICAgICBpZiAobGlzdCkgewogICAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGxpc3RbaV0uY2FsbChwcm90byk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGxpc3QgPSBsaWZlY3ljbGUucmVnaXN0ZXJlZDsKICAgICAgICAgICAgaWYgKGxpc3QpIHsKICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBsaXN0W2ldLmNhbGwocHJvdG8pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBfYXBwbHlMaXN0ZW5lcnMoKSB7CiAgICAgICAgICBzdXBlci5fYXBwbHlMaXN0ZW5lcnMoKTsKICAgICAgICAgIGNvbnN0IGxpc3QgPSBsaWZlY3ljbGUubGlzdGVuZXJzOwogICAgICAgICAgaWYgKGxpc3QpIHsKICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IGxpc3RbaV07CiAgICAgICAgICAgICAgaWYgKGxpc3RlbmVycykgewogICAgICAgICAgICAgICAgZm9yIChsZXQgbCBpbiBsaXN0ZW5lcnMpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkTWV0aG9kRXZlbnRMaXN0ZW5lclRvTm9kZSh0aGlzLCBsLCBsaXN0ZW5lcnNbbF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gbm90ZTogZXhjZXB0aW9uIHRvICJzdXBlciB0aGVuIG1lIiBydWxlOwogICAgICAgIC8vIGRvIHdvcmsgYmVmb3JlIGNhbGxpbmcgc3VwZXIgc28gdGhhdCBzdXBlciBhdHRyaWJ1dGVzCiAgICAgICAgLy8gb25seSBhcHBseSBpZiBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgLyoqCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBfZW5zdXJlQXR0cmlidXRlcygpIHsKICAgICAgICAgIGNvbnN0IGxpc3QgPSBsaWZlY3ljbGUuaG9zdEF0dHJpYnV0ZXM7CiAgICAgICAgICBpZiAobGlzdCkgewogICAgICAgICAgICBmb3IgKGxldCBpPWxpc3QubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgICAgICAgY29uc3QgaG9zdEF0dHJpYnV0ZXMgPSBsaXN0W2ldOwogICAgICAgICAgICAgIGZvciAobGV0IGEgaW4gaG9zdEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5fZW5zdXJlQXR0cmlidXRlKGEsIGhvc3RBdHRyaWJ1dGVzW2FdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgc3VwZXIuX2Vuc3VyZUF0dHJpYnV0ZXMoKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAgICovCiAgICAgICAgcmVhZHkoKSB7CiAgICAgICAgICBzdXBlci5yZWFkeSgpOwogICAgICAgICAgbGV0IGxpc3QgPSBsaWZlY3ljbGUucmVhZHk7CiAgICAgICAgICBpZiAobGlzdCkgewogICAgICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgbGlzdFtpXS5jYWxsKHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqLwogICAgICAgIGF0dGFjaGVkKCkgewogICAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKICAgICAgICAgIGxldCBsaXN0ID0gbGlmZWN5Y2xlLmF0dGFjaGVkOwogICAgICAgICAgaWYgKGxpc3QpIHsKICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIGxpc3RbaV0uY2FsbCh0aGlzKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICAgKi8KICAgICAgICBkZXRhY2hlZCgpIHsKICAgICAgICAgIHN1cGVyLmRldGFjaGVkKCk7CiAgICAgICAgICBsZXQgbGlzdCA9IGxpZmVjeWNsZS5kZXRhY2hlZDsKICAgICAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBsaXN0W2ldLmNhbGwodGhpcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEltcGxlbWVudHMgbmF0aXZlIEN1c3RvbSBFbGVtZW50cyBgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrYCB0bwogICAgICAgICAqIHNldCBhbiBhdHRyaWJ1dGUgdmFsdWUgdG8gYSBwcm9wZXJ0eSB2aWEgYF9hdHRyaWJ1dGVUb1Byb3BlcnR5YC4KICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgYXR0cmlidXRlIHRoYXQgY2hhbmdlZAogICAgICAgICAqIEBwYXJhbSB7P3N0cmluZ30gb2xkIE9sZCBhdHRyaWJ1dGUgdmFsdWUKICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IHZhbHVlIE5ldyBhdHRyaWJ1dGUgdmFsdWUKICAgICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgICAqLwogICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQobmFtZSwgb2xkLCB2YWx1ZSkgewogICAgICAgICAgc3VwZXIuYXR0cmlidXRlQ2hhbmdlZCgpOwogICAgICAgICAgbGV0IGxpc3QgPSBsaWZlY3ljbGUuYXR0cmlidXRlQ2hhbmdlZDsKICAgICAgICAgIGlmIChsaXN0KSB7CiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBsaXN0W2ldLmNhbGwodGhpcywgbmFtZSwgb2xkLCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIGFwcGx5IGJlaGF2aW9ycywgbm90ZSBhY3R1YWwgY29weWluZyBpcyBkb25lIGxhemlseSBhdCBmaXJzdCBpbnN0YW5jZSBjcmVhdGlvbgogICAgICBpZiAoYmVoYXZpb3JzKSB7CiAgICAgICAgLy8gTk9URTogZW5zdXJlIHRoZSBiZWhhdmlvciBpcyBleHRlbmRpbmcgYSBjbGFzcyB3aXRoCiAgICAgICAgLy8gbGVnYWN5IGVsZW1lbnQgYXBpLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZSBiZWhhdmlvcnMgZXhwZWN0IHRvIGJlIGFibGUKICAgICAgICAvLyB0byBhY2Nlc3MgMS54IGxlZ2FjeSBhcGkuCiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGJlaGF2aW9ycykpIHsKICAgICAgICAgIGJlaGF2aW9ycyA9IFtiZWhhdmlvcnNdOwogICAgICAgIH0KICAgICAgICBsZXQgc3VwZXJCZWhhdmlvcnMgPSBCYXNlLnByb3RvdHlwZS5iZWhhdmlvcnM7CiAgICAgICAgLy8gZ2V0IGZsYXR0ZW5lZCwgZGVkdXBlZCBsaXN0IG9mIGJlaGF2aW9ycyAqbm90KiBhbHJlYWR5IG9uIHN1cGVyIGNsYXNzCiAgICAgICAgYmVoYXZpb3JMaXN0ID0gZmxhdHRlbkJlaGF2aW9ycyhiZWhhdmlvcnMsIG51bGwsIHN1cGVyQmVoYXZpb3JzKTsKICAgICAgICBQb2x5bWVyR2VuZXJhdGVkLnByb3RvdHlwZS5iZWhhdmlvcnMgPSBzdXBlckJlaGF2aW9ycyA/CiAgICAgICAgICBzdXBlckJlaGF2aW9ycy5jb25jYXQoYmVoYXZpb3JzKSA6IGJlaGF2aW9yTGlzdDsKICAgICAgfQoKICAgICAgY29uc3QgY29weVByb3BlcnRpZXNUb1Byb3RvID0gKHByb3RvKSA9PiB7CiAgICAgICAgaWYgKGJlaGF2aW9yTGlzdCkgewogICAgICAgICAgYXBwbHlCZWhhdmlvcnMocHJvdG8sIGJlaGF2aW9yTGlzdCwgbGlmZWN5Y2xlKTsKICAgICAgICB9CiAgICAgICAgYXBwbHlJbmZvKHByb3RvLCBpbmZvLCBsaWZlY3ljbGUsIGV4Y2x1ZGVPbkluZm8pOwogICAgICB9OwoKICAgICAgLy8gY29weSBwcm9wZXJ0aWVzIGlmIHdlJ3JlIG5vdCBvcHRpbWl6aW5nCiAgICAgIGlmICghUG9seW1lci5sZWdhY3lPcHRpbWl6YXRpb25zKSB7CiAgICAgICAgY29weVByb3BlcnRpZXNUb1Byb3RvKFBvbHltZXJHZW5lcmF0ZWQucHJvdG90eXBlKTsKICAgICAgfQoKICAgICAgUG9seW1lckdlbmVyYXRlZC5nZW5lcmF0ZWRGcm9tID0gaW5mbzsKCiAgICAgIHJldHVybiBQb2x5bWVyR2VuZXJhdGVkOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGVzIGEgY2xhc3MgdGhhdCBleHRlbmRzIGBQb2x5bWVyLkxlZ2FjeUVsZW1lbnRgIGJhc2VkIG9uIHRoZQogICAgICogcHJvdmlkZWQgaW5mbyBvYmplY3QuICBNZXRhZGF0YSBvYmplY3RzIG9uIHRoZSBgaW5mb2Agb2JqZWN0CiAgICAgKiAoYHByb3BlcnRpZXNgLCBgb2JzZXJ2ZXJzYCwgYGxpc3RlbmVyc2AsIGBiZWhhdmlvcnNgLCBgaXNgKSBhcmUgdXNlZAogICAgICogZm9yIFBvbHltZXIncyBtZXRhLXByb2dyYW1taW5nIHN5c3RlbXMsIGFuZCBhbnkgZnVuY3Rpb25zIGFyZSBjb3BpZWQKICAgICAqIHRvIHRoZSBnZW5lcmF0ZWQgY2xhc3MuCiAgICAgKgogICAgICogVmFsaWQgIm1ldGFkYXRhIiB2YWx1ZXMgYXJlIGFzIGZvbGxvd3M6CiAgICAgKgogICAgICogYGlzYDogU3RyaW5nIHByb3ZpZGluZyB0aGUgdGFnIG5hbWUgdG8gcmVnaXN0ZXIgdGhlIGVsZW1lbnQgdW5kZXIuIEluCiAgICAgKiBhZGRpdGlvbiwgaWYgYSBgZG9tLW1vZHVsZWAgd2l0aCB0aGUgc2FtZSBpZCBleGlzdHMsIHRoZSBmaXJzdCB0ZW1wbGF0ZQogICAgICogaW4gdGhhdCBgZG9tLW1vZHVsZWAgd2lsbCBiZSBzdGFtcGVkIGludG8gdGhlIHNoYWRvdyByb290IG9mIHRoaXMgZWxlbWVudCwKICAgICAqIHdpdGggc3VwcG9ydCBmb3IgZGVjbGFyYXRpdmUgZXZlbnQgbGlzdGVuZXJzIChgb24tLi4uYCksIFBvbHltZXIgZGF0YQogICAgICogYmluZGluZ3MgKGBbWy4uLl1dYCBhbmQgYHt7Li4ufX1gKSwgYW5kIGlkLWJhc2VkIG5vZGUgZmluZGluZyBpbnRvCiAgICAgKiBgdGhpcy4kYC4KICAgICAqCiAgICAgKiBgcHJvcGVydGllc2A6IE9iamVjdCBkZXNjcmliaW5nIHByb3BlcnR5LXJlbGF0ZWQgbWV0YWRhdGEgdXNlZCBieSBQb2x5bWVyCiAgICAgKiBmZWF0dXJlcyAoa2V5OiBwcm9wZXJ0eSBuYW1lcywgdmFsdWU6IG9iamVjdCBjb250YWluaW5nIHByb3BlcnR5IG1ldGFkYXRhKS4KICAgICAqIFZhbGlkIGtleXMgaW4gcGVyLXByb3BlcnR5IG1ldGFkYXRhIGluY2x1ZGU6CiAgICAgKiAtIGB0eXBlYCAoU3RyaW5nfE51bWJlcnxPYmplY3R8QXJyYXl8Li4uKTogVXNlZCBieQogICAgICogICBgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrYCB0byBkZXRlcm1pbmUgaG93IHN0cmluZy1iYXNlZCBhdHRyaWJ1dGVzCiAgICAgKiAgIGFyZSBkZXNlcmlhbGl6ZWQgdG8gSmF2YVNjcmlwdCBwcm9wZXJ0eSB2YWx1ZXMuCiAgICAgKiAtIGBub3RpZnlgIChib29sZWFuKTogQ2F1c2VzIGEgY2hhbmdlIGluIHRoZSBwcm9wZXJ0eSB0byBmaXJlIGEKICAgICAqICAgbm9uLWJ1YmJsaW5nIGV2ZW50IGNhbGxlZCBgPHByb3BlcnR5Pi1jaGFuZ2VkYC4gRWxlbWVudHMgdGhhdCBoYXZlCiAgICAgKiAgIGVuYWJsZWQgdHdvLXdheSBiaW5kaW5nIHRvIHRoZSBwcm9wZXJ0eSB1c2UgdGhpcyBldmVudCB0byBvYnNlcnZlIGNoYW5nZXMuCiAgICAgKiAtIGByZWFkT25seWAgKGJvb2xlYW4pOiBDcmVhdGVzIGEgZ2V0dGVyIGZvciB0aGUgcHJvcGVydHksIGJ1dCBubyBzZXR0ZXIuCiAgICAgKiAgIFRvIHNldCBhIHJlYWQtb25seSBwcm9wZXJ0eSwgdXNlIHRoZSBwcml2YXRlIHNldHRlciBtZXRob2QKICAgICAqICAgYF9zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpYC4KICAgICAqIC0gYG9ic2VydmVyYCAoc3RyaW5nKTogT2JzZXJ2ZXIgbWV0aG9kIG5hbWUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuCiAgICAgKiAgIHRoZSBwcm9wZXJ0eSBjaGFuZ2VzLiBUaGUgYXJndW1lbnRzIG9mIHRoZSBtZXRob2QgYXJlCiAgICAgKiAgIGAodmFsdWUsIHByZXZpb3VzVmFsdWUpYC4KICAgICAqIC0gYGNvbXB1dGVkYCAoc3RyaW5nKTogU3RyaW5nIGRlc2NyaWJpbmcgbWV0aG9kIGFuZCBkZXBlbmRlbnQgcHJvcGVydGllcwogICAgICogICBmb3IgY29tcHV0aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IChlLmcuIGAnY29tcHV0ZUZvbyhiYXIsIHpvdCknYCkuCiAgICAgKiAgIENvbXB1dGVkIHByb3BlcnRpZXMgYXJlIHJlYWQtb25seSBieSBkZWZhdWx0IGFuZCBjYW4gb25seSBiZSBjaGFuZ2VkCiAgICAgKiAgIHZpYSB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjb21wdXRpbmcgbWV0aG9kLgogICAgICoKICAgICAqIGBvYnNlcnZlcnNgOiBBcnJheSBvZiBzdHJpbmdzIGRlc2NyaWJpbmcgbXVsdGktcHJvcGVydHkgb2JzZXJ2ZXIgbWV0aG9kcwogICAgICogIGFuZCB0aGVpciBkZXBlbmRlbnQgcHJvcGVydGllcyAoZS5nLiBgJ29ic2VydmVBQkMoYSwgYiwgYyknYCkuCiAgICAgKgogICAgICogYGxpc3RlbmVyc2A6IE9iamVjdCBkZXNjcmliaW5nIGV2ZW50IGxpc3RlbmVycyB0byBiZSBhZGRlZCB0byBlYWNoCiAgICAgKiAgaW5zdGFuY2Ugb2YgdGhpcyBlbGVtZW50IChrZXk6IGV2ZW50IG5hbWUsIHZhbHVlOiBtZXRob2QgbmFtZSkuCiAgICAgKgogICAgICogYGJlaGF2aW9yc2A6IEFycmF5IG9mIGFkZGl0aW9uYWwgYGluZm9gIG9iamVjdHMgY29udGFpbmluZyBtZXRhZGF0YQogICAgICogYW5kIGNhbGxiYWNrcyBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlIGBpbmZvYCBvYmplY3QgaGVyZSB3aGljaCBhcmUKICAgICAqIG1lcmdlZCBpbnRvIHRoaXMgZWxlbWVudC4KICAgICAqCiAgICAgKiBgaG9zdEF0dHJpYnV0ZXNgOiBPYmplY3QgbGlzdGluZyBhdHRyaWJ1dGVzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGhvc3QKICAgICAqICBvbmNlIGNyZWF0ZWQgKGtleTogYXR0cmlidXRlIG5hbWUsIHZhbHVlOiBhdHRyaWJ1dGUgdmFsdWUpLiAgVmFsdWVzCiAgICAgKiAgYXJlIHNlcmlhbGl6ZWQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIHZhbHVlLiAgSG9zdCBhdHRyaWJ1dGVzIHNob3VsZAogICAgICogIGdlbmVyYWxseSBiZSBsaW1pdGVkIHRvIGF0dHJpYnV0ZXMgc3VjaCBhcyBgdGFiSW5kZXhgIGFuZCBgYXJpYS0uLi5gLgogICAgICogIEF0dHJpYnV0ZXMgaW4gYGhvc3RBdHRyaWJ1dGVzYCBhcmUgb25seSBhcHBsaWVkIGlmIGEgdXNlci1zdXBwbGllZAogICAgICogIGF0dHJpYnV0ZSBpcyBub3QgYWxyZWFkeSBwcmVzZW50IChhdHRyaWJ1dGVzIGluIG1hcmt1cCBvdmVycmlkZQogICAgICogIGBob3N0QXR0cmlidXRlc2ApLgogICAgICoKICAgICAqIEluIGFkZGl0aW9uLCB0aGUgZm9sbG93aW5nIFBvbHltZXItc3BlY2lmaWMgY2FsbGJhY2tzIG1heSBiZSBwcm92aWRlZDoKICAgICAqIC0gYHJlZ2lzdGVyZWRgOiBjYWxsZWQgYWZ0ZXIgZmlyc3QgaW5zdGFuY2Ugb2YgdGhpcyBlbGVtZW50LAogICAgICogLSBgY3JlYXRlZGA6IGNhbGxlZCBkdXJpbmcgYGNvbnN0cnVjdG9yYAogICAgICogLSBgYXR0YWNoZWRgOiBjYWxsZWQgZHVyaW5nIGBjb25uZWN0ZWRDYWxsYmFja2AKICAgICAqIC0gYGRldGFjaGVkYDogY2FsbGVkIGR1cmluZyBgZGlzY29ubmVjdGVkQ2FsbGJhY2tgCiAgICAgKiAtIGByZWFkeWA6IGNhbGxlZCBiZWZvcmUgZmlyc3QgYGF0dGFjaGVkYCwgYWZ0ZXIgYWxsIHByb3BlcnRpZXMgb2YKICAgICAqICAgdGhpcyBlbGVtZW50IGhhdmUgYmVlbiBwcm9wYWdhdGVkIHRvIGl0cyB0ZW1wbGF0ZSBhbmQgYWxsIG9ic2VydmVycwogICAgICogICBoYXZlIHJ1bgogICAgICoKICAgICAqIEBwYXJhbSB7IVBvbHltZXJJbml0fSBpbmZvIE9iamVjdCBjb250YWluaW5nIFBvbHltZXIgbWV0YWRhdGEgYW5kIGZ1bmN0aW9ucwogICAgICogICB0byBiZWNvbWUgY2xhc3MgbWV0aG9kcy4KICAgICAqIEB0ZW1wbGF0ZSBUCiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKFQpOlR9IG1peGluIE9wdGlvbmFsIG1peGluIHRvIGFwcGx5IHRvIGxlZ2FjeSBiYXNlIGNsYXNzCiAgICAgKiAgIGJlZm9yZSBleHRlbmRpbmcgd2l0aCBQb2x5bWVyIG1ldGFwcm9ncmFtbWluZy4KICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKG5ldzpIVE1MRWxlbWVudCl9IEdlbmVyYXRlZCBjbGFzcwogICAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgICAqLwogICAgUG9seW1lci5DbGFzcyA9IGZ1bmN0aW9uKGluZm8sIG1peGluKSB7CiAgICAgIGlmICghaW5mbykgewogICAgICAgIGNvbnNvbGUud2FybignUG9seW1lci5DbGFzcyByZXF1aXJlcyBgaW5mb2AgYXJndW1lbnQnKTsKICAgICAgfQogICAgICBsZXQga2xhc3MgPSBtaXhpbiA/IG1peGluKFBvbHltZXIuTGVnYWN5RWxlbWVudE1peGluKEhUTUxFbGVtZW50KSkgOgogICAgICAgICAgUG9seW1lci5MZWdhY3lFbGVtZW50TWl4aW4oSFRNTEVsZW1lbnQpOwogICAgICBrbGFzcyA9IEdlbmVyYXRlQ2xhc3NGcm9tSW5mbyhpbmZvLCBrbGFzcywgaW5mby5iZWhhdmlvcnMpOwogICAgICBpZiAoaW5mby5fZW5hYmxlRGlzYWJsZVVwZ3JhZGUpIHsKICAgICAgICBrbGFzcyA9IFBvbHltZXIuRGlzYWJsZVVwZ3JhZGVNaXhpbihrbGFzcyk7CiAgICAgIH0KICAgICAgLy8gZGVjb3JhdGUga2xhc3Mgd2l0aCByZWdpc3RyYXRpb24gaW5mbwogICAgICBrbGFzcy5pcyA9IGtsYXNzLnByb3RvdHlwZS5pcyA9IGluZm8uaXM7CiAgICAgIHJldHVybiBrbGFzczsKICAgIH07CgogICAgUG9seW1lci5taXhpbkJlaGF2aW9ycyA9IG1peGluQmVoYXZpb3JzOwoKICB9KSgpOwoKCgoKICAoZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLyoqCiAgICAgKiBMZWdhY3kgY2xhc3MgZmFjdG9yeSBhbmQgcmVnaXN0cmF0aW9uIGhlbHBlciBmb3IgZGVmaW5pbmcgUG9seW1lcgogICAgICogZWxlbWVudHMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgZXF1aXZhbGVudCB0bwogICAgICogYGN1c3RvbUVsZW1lbnRzLmRlZmluZShpbmZvLmlzLCBQb2x5bWVyLkNsYXNzKGluZm8pKTtgCiAgICAgKgogICAgICogU2VlIGBQb2x5bWVyLkNsYXNzYCBmb3IgZGV0YWlscyBvbiB2YWxpZCBsZWdhY3kgbWV0YWRhdGEgZm9ybWF0IGZvciBgaW5mb2AuCiAgICAgKgogICAgICogQGdsb2JhbAogICAgICogQG92ZXJyaWRlCiAgICAgKiBAZnVuY3Rpb24gUG9seW1lcgogICAgICogQHBhcmFtIHshUG9seW1lckluaXR9IGluZm8gT2JqZWN0IGNvbnRhaW5pbmcgUG9seW1lciBtZXRhZGF0YSBhbmQgZnVuY3Rpb25zCiAgICAgKiAgIHRvIGJlY29tZSBjbGFzcyBtZXRob2RzLgogICAgICogQHJldHVybiB7ZnVuY3Rpb24obmV3OiBIVE1MRWxlbWVudCl9IEdlbmVyYXRlZCBjbGFzcwogICAgICogQHN1cHByZXNzIHtkdXBsaWNhdGUsIGludmFsaWRDYXN0cywgY2hlY2tUeXBlc30KICAgICAqLwogICAgd2luZG93LlBvbHltZXIuX3BvbHltZXJGbiA9IGZ1bmN0aW9uKGluZm8pIHsKICAgICAgLy8gaWYgaW5wdXQgaXMgYSBgY2xhc3NgIChha2EgYSBmdW5jdGlvbiB3aXRoIGEgcHJvdG90eXBlKSwgdXNlIHRoZSBwcm90b3R5cGUKICAgICAgLy8gcmVtZW1iZXIgdGhhdCB0aGUgYGNvbnN0cnVjdG9yYCB3aWxsIG5ldmVyIGJlIGNhbGxlZAogICAgICBsZXQga2xhc3M7CiAgICAgIGlmICh0eXBlb2YgaW5mbyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGtsYXNzID0gaW5mbzsKICAgICAgfSBlbHNlIHsKICAgICAgICBrbGFzcyA9IFBvbHltZXIuQ2xhc3MoaW5mbyk7CiAgICAgIH0KICAgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKGtsYXNzLmlzLCAvKiogQHR5cGUgeyFIVE1MRWxlbWVudH0gKi8oa2xhc3MpKTsKICAgICAgcmV0dXJuIGtsYXNzOwogICAgfTsKCiAgfSkoKTsKCgoKKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLy8gQ29tbW9uIGltcGxlbWVudGF0aW9uIGZvciBtaXhpbiAmIGJlaGF2aW9yCiAgZnVuY3Rpb24gbXV0YWJsZVByb3BlcnR5Q2hhbmdlKGluc3QsIHByb3BlcnR5LCB2YWx1ZSwgb2xkLCBtdXRhYmxlRGF0YSkgewogICAgbGV0IGlzT2JqZWN0OwogICAgaWYgKG11dGFibGVEYXRhKSB7CiAgICAgIGlzT2JqZWN0ID0gKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpOwogICAgICAvLyBQdWxsIGBvbGRgIGZvciBPYmplY3RzIGZyb20gdGVtcCBjYWNoZSwgYnV0IHRyZWF0IGBudWxsYCBhcyBhIHByaW1pdGl2ZQogICAgICBpZiAoaXNPYmplY3QpIHsKICAgICAgICBvbGQgPSBpbnN0Ll9fZGF0YVRlbXBbcHJvcGVydHldOwogICAgICB9CiAgICB9CiAgICAvLyBTdHJpY3QgZXF1YWxpdHkgY2hlY2ssIGJ1dCByZXR1cm4gZmFsc2UgZm9yIE5hTj09PU5hTgogICAgbGV0IHNob3VsZENoYW5nZSA9IChvbGQgIT09IHZhbHVlICYmIChvbGQgPT09IG9sZCB8fCB2YWx1ZSA9PT0gdmFsdWUpKTsKICAgIC8vIE9iamVjdHMgYXJlIHN0b3JlZCBpbiB0ZW1wb3JhcnkgY2FjaGUgKGNsZWFyZWQgYXQgZW5kIG9mCiAgICAvLyB0dXJuKSwgd2hpY2ggaXMgdXNlZCBmb3IgZGlydHktY2hlY2tpbmcKICAgIGlmIChpc09iamVjdCAmJiBzaG91bGRDaGFuZ2UpIHsKICAgICAgaW5zdC5fX2RhdGFUZW1wW3Byb3BlcnR5XSA9IHZhbHVlOwogICAgfQogICAgcmV0dXJuIHNob3VsZENoYW5nZTsKICB9CgogIC8qKgogICAqIEVsZW1lbnQgY2xhc3MgbWl4aW4gdG8gc2tpcCBzdHJpY3QgZGlydHktY2hlY2tpbmcgZm9yIG9iamVjdHMgYW5kIGFycmF5cwogICAqIChhbHdheXMgY29uc2lkZXIgdGhlbSB0byBiZSAiZGlydHkiKSwgZm9yIHVzZSBvbiBlbGVtZW50cyB1dGlsaXppbmcKICAgKiBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgCiAgICoKICAgKiBCeSBkZWZhdWx0LCBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIHBlcmZvcm1zIHN0cmljdCBkaXJ0eSBjaGVja2luZyBvbgogICAqIG9iamVjdHMsIHdoaWNoIG1lYW5zIHRoYXQgYW55IGRlZXAgbW9kaWZpY2F0aW9ucyB0byBhbiBvYmplY3Qgb3IgYXJyYXkgd2lsbAogICAqIG5vdCBiZSBwcm9wYWdhdGVkIHVubGVzcyAiaW1tdXRhYmxlIiBkYXRhIHBhdHRlcm5zIGFyZSB1c2VkIChpLmUuIGFsbCBvYmplY3QKICAgKiByZWZlcmVuY2VzIGZyb20gdGhlIHJvb3QgdG8gdGhlIG11dGF0aW9uIHdlcmUgY2hhbmdlZCkuCiAgICoKICAgKiBQb2x5bWVyIGFsc28gcHJvdmlkZXMgYSBwcm9wcmlldGFyeSBkYXRhIG11dGF0aW9uIGFuZCBwYXRoIG5vdGlmaWNhdGlvbiBBUEkKICAgKiAoZS5nLiBgbm90aWZ5UGF0aGAsIGBzZXRgLCBhbmQgYXJyYXkgbXV0YXRpb24gQVBJJ3MpIHRoYXQgYWxsb3cgZWZmaWNpZW50CiAgICogbXV0YXRpb24gYW5kIG5vdGlmaWNhdGlvbiBvZiBkZWVwIGNoYW5nZXMgaW4gYW4gb2JqZWN0IGdyYXBoIHRvIGFsbCBlbGVtZW50cwogICAqIGJvdW5kIHRvIHRoZSBzYW1lIG9iamVjdCBncmFwaC4KICAgKgogICAqIEluIGNhc2VzIHdoZXJlIG5laXRoZXIgaW1tdXRhYmxlIHBhdHRlcm5zIG5vciB0aGUgZGF0YSBtdXRhdGlvbiBBUEkgY2FuIGJlCiAgICogdXNlZCwgYXBwbHlpbmcgdGhpcyBtaXhpbiB3aWxsIGNhdXNlIFBvbHltZXIgdG8gc2tpcCBkaXJ0eSBjaGVja2luZyBmb3IKICAgKiBvYmplY3RzIGFuZCBhcnJheXMgKGFsd2F5cyBjb25zaWRlciB0aGVtIHRvIGJlICJkaXJ0eSIpLiAgVGhpcyBhbGxvd3MgYQogICAqIHVzZXIgdG8gbWFrZSBhIGRlZXAgbW9kaWZpY2F0aW9uIHRvIGEgYm91bmQgb2JqZWN0IGdyYXBoLCBhbmQgdGhlbiBlaXRoZXIKICAgKiBzaW1wbHkgcmUtc2V0IHRoZSBvYmplY3QgKGUuZy4gYHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zYCkgb3IgY2FsbCBgbm90aWZ5UGF0aGAKICAgKiAoZS5nLiBgdGhpcy5ub3RpZnlQYXRoKCdpdGVtcycpYCkgdG8gdXBkYXRlIHRoZSB0cmVlLiAgTm90ZSB0aGF0IGFsbAogICAqIGVsZW1lbnRzIHRoYXQgd2lzaCB0byBiZSB1cGRhdGVkIGJhc2VkIG9uIGRlZXAgbXV0YXRpb25zIG11c3QgYXBwbHkgdGhpcwogICAqIG1peGluIG9yIG90aGVyd2lzZSBza2lwIHN0cmljdCBkaXJ0eSBjaGVja2luZyBmb3Igb2JqZWN0cy9hcnJheXMuCiAgICogU3BlY2lmaWNhbGx5LCBhbnkgZWxlbWVudHMgaW4gdGhlIGJpbmRpbmcgdHJlZSBiZXR3ZWVuIHRoZSBzb3VyY2Ugb2YgYQogICAqIG11dGF0aW9uIGFuZCB0aGUgY29uc3VtcHRpb24gb2YgaXQgbXVzdCBhcHBseSB0aGlzIG1peGluIG9yIGVuYWJsZSB0aGUKICAgKiBgUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhYCBtaXhpbi4KICAgKgogICAqIEluIG9yZGVyIHRvIG1ha2UgdGhlIGRpcnR5IGNoZWNrIHN0cmF0ZWd5IGNvbmZpZ3VyYWJsZSwgc2VlCiAgICogYFBvbHltZXIuT3B0aW9uYWxNdXRhYmxlRGF0YWAuCiAgICoKICAgKiBOb3RlLCB0aGUgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIHByb3BhZ2F0aW5nIGxhcmdlIG9iamVjdCBncmFwaHMKICAgKiB3aWxsIGJlIHdvcnNlIGFzIG9wcG9zZWQgdG8gdXNpbmcgc3RyaWN0IGRpcnR5IGNoZWNraW5nIHdpdGggaW1tdXRhYmxlCiAgICogcGF0dGVybnMgb3IgUG9seW1lcidzIHBhdGggbm90aWZpY2F0aW9uIEFQSS4KICAgKgogICAqIEBtaXhpbkZ1bmN0aW9uCiAgICogQHBvbHltZXIKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IEVsZW1lbnQgY2xhc3MgbWl4aW4gdG8gc2tpcCBzdHJpY3QgZGlydHktY2hlY2tpbmcgZm9yIG9iamVjdHMKICAgKiAgIGFuZCBhcnJheXMKICAgKi8KICBQb2x5bWVyLk11dGFibGVEYXRhID0gUG9seW1lci5kZWR1cGluZ01peGluKHN1cGVyQ2xhc3MgPT4gewoKICAgIC8qKgogICAgICogQHBvbHltZXIKICAgICAqIEBtaXhpbkNsYXNzCiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9NdXRhYmxlRGF0YX0KICAgICAqLwogICAgY2xhc3MgTXV0YWJsZURhdGEgZXh0ZW5kcyBzdXBlckNsYXNzIHsKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIHRvIHByb3ZpZGUgb3B0aW9uIGZvciBza2lwcGluZwogICAgICAgKiBzdHJpY3QgZXF1YWxpdHkgY2hlY2tpbmcgZm9yIE9iamVjdHMgYW5kIEFycmF5cy4KICAgICAgICoKICAgICAgICogVGhpcyBtZXRob2QgcHVsbHMgdGhlIHZhbHVlIHRvIGRpcnR5IGNoZWNrIGFnYWluc3QgZnJvbSB0aGUgYF9fZGF0YVRlbXBgCiAgICAgICAqIGNhY2hlIChyYXRoZXIgdGhhbiB0aGUgbm9ybWFsIGBfX2RhdGFgIGNhY2hlKSBmb3IgT2JqZWN0cy4gIFNpbmNlIHRoZSB0ZW1wCiAgICAgICAqIGNhY2hlIGlzIGNsZWFyZWQgYXQgdGhlIGVuZCBvZiBhIHR1cm4sIHRoaXMgaW1wbGVtZW50YXRpb24gYWxsb3dzCiAgICAgICAqIHNpZGUtZWZmZWN0cyBvZiBkZWVwIG9iamVjdCBjaGFuZ2VzIHRvIGJlIHByb2Nlc3NlZCBieSByZS1zZXR0aW5nIHRoZQogICAgICAgKiBzYW1lIG9iamVjdCAodXNpbmcgdGhlIHRlbXAgY2FjaGUgYXMgYW4gaW4tdHVybiBiYWNrc3RvcCB0byBwcmV2ZW50CiAgICAgICAqIGN5Y2xlcyBkdWUgdG8gMi13YXkgbm90aWZpY2F0aW9uKS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBOZXcgcHJvcGVydHkgdmFsdWUKICAgICAgICogQHBhcmFtIHsqfSBvbGQgUHJldmlvdXMgcHJvcGVydHkgdmFsdWUKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBjaGFuZ2UKICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5LCB2YWx1ZSwgb2xkKSB7CiAgICAgICAgcmV0dXJuIG11dGFibGVQcm9wZXJ0eUNoYW5nZSh0aGlzLCBwcm9wZXJ0eSwgdmFsdWUsIG9sZCwgdHJ1ZSk7CiAgICAgIH0KCiAgICB9CgogICAgcmV0dXJuIE11dGFibGVEYXRhOwoKICB9KTsKCgogIC8qKgogICAqIEVsZW1lbnQgY2xhc3MgbWl4aW4gdG8gYWRkIHRoZSBvcHRpb25hbCBhYmlsaXR5IHRvIHNraXAgc3RyaWN0CiAgICogZGlydHktY2hlY2tpbmcgZm9yIG9iamVjdHMgYW5kIGFycmF5cyAoYWx3YXlzIGNvbnNpZGVyIHRoZW0gdG8gYmUKICAgKiAiZGlydHkiKSBieSBzZXR0aW5nIGEgYG11dGFibGUtZGF0YWAgYXR0cmlidXRlIG9uIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAgICoKICAgKiBCeSBkZWZhdWx0LCBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIHBlcmZvcm1zIHN0cmljdCBkaXJ0eSBjaGVja2luZyBvbgogICAqIG9iamVjdHMsIHdoaWNoIG1lYW5zIHRoYXQgYW55IGRlZXAgbW9kaWZpY2F0aW9ucyB0byBhbiBvYmplY3Qgb3IgYXJyYXkgd2lsbAogICAqIG5vdCBiZSBwcm9wYWdhdGVkIHVubGVzcyAiaW1tdXRhYmxlIiBkYXRhIHBhdHRlcm5zIGFyZSB1c2VkIChpLmUuIGFsbCBvYmplY3QKICAgKiByZWZlcmVuY2VzIGZyb20gdGhlIHJvb3QgdG8gdGhlIG11dGF0aW9uIHdlcmUgY2hhbmdlZCkuCiAgICoKICAgKiBQb2x5bWVyIGFsc28gcHJvdmlkZXMgYSBwcm9wcmlldGFyeSBkYXRhIG11dGF0aW9uIGFuZCBwYXRoIG5vdGlmaWNhdGlvbiBBUEkKICAgKiAoZS5nLiBgbm90aWZ5UGF0aGAsIGBzZXRgLCBhbmQgYXJyYXkgbXV0YXRpb24gQVBJJ3MpIHRoYXQgYWxsb3cgZWZmaWNpZW50CiAgICogbXV0YXRpb24gYW5kIG5vdGlmaWNhdGlvbiBvZiBkZWVwIGNoYW5nZXMgaW4gYW4gb2JqZWN0IGdyYXBoIHRvIGFsbCBlbGVtZW50cwogICAqIGJvdW5kIHRvIHRoZSBzYW1lIG9iamVjdCBncmFwaC4KICAgKgogICAqIEluIGNhc2VzIHdoZXJlIG5laXRoZXIgaW1tdXRhYmxlIHBhdHRlcm5zIG5vciB0aGUgZGF0YSBtdXRhdGlvbiBBUEkgY2FuIGJlCiAgICogdXNlZCwgYXBwbHlpbmcgdGhpcyBtaXhpbiB3aWxsIGFsbG93IFBvbHltZXIgdG8gc2tpcCBkaXJ0eSBjaGVja2luZyBmb3IKICAgKiBvYmplY3RzIGFuZCBhcnJheXMgKGFsd2F5cyBjb25zaWRlciB0aGVtIHRvIGJlICJkaXJ0eSIpLiAgVGhpcyBhbGxvd3MgYQogICAqIHVzZXIgdG8gbWFrZSBhIGRlZXAgbW9kaWZpY2F0aW9uIHRvIGEgYm91bmQgb2JqZWN0IGdyYXBoLCBhbmQgdGhlbiBlaXRoZXIKICAgKiBzaW1wbHkgcmUtc2V0IHRoZSBvYmplY3QgKGUuZy4gYHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zYCkgb3IgY2FsbCBgbm90aWZ5UGF0aGAKICAgKiAoZS5nLiBgdGhpcy5ub3RpZnlQYXRoKCdpdGVtcycpYCkgdG8gdXBkYXRlIHRoZSB0cmVlLiAgTm90ZSB0aGF0IGFsbAogICAqIGVsZW1lbnRzIHRoYXQgd2lzaCB0byBiZSB1cGRhdGVkIGJhc2VkIG9uIGRlZXAgbXV0YXRpb25zIG11c3QgYXBwbHkgdGhpcwogICAqIG1peGluIG9yIG90aGVyd2lzZSBza2lwIHN0cmljdCBkaXJ0eSBjaGVja2luZyBmb3Igb2JqZWN0cy9hcnJheXMuCiAgICogU3BlY2lmaWNhbGx5LCBhbnkgZWxlbWVudHMgaW4gdGhlIGJpbmRpbmcgdHJlZSBiZXR3ZWVuIHRoZSBzb3VyY2Ugb2YgYQogICAqIG11dGF0aW9uIGFuZCB0aGUgY29uc3VtcHRpb24gb2YgaXQgbXVzdCBlbmFibGUgdGhpcyBtaXhpbiBvciBhcHBseSB0aGUKICAgKiBgUG9seW1lci5NdXRhYmxlRGF0YWAgbWl4aW4uCiAgICoKICAgKiBXaGlsZSB0aGlzIG1peGluIGFkZHMgdGhlIGFiaWxpdHkgdG8gZm9yZ28gT2JqZWN0L0FycmF5IGRpcnR5IGNoZWNraW5nLAogICAqIHRoZSBgbXV0YWJsZURhdGFgIGZsYWcgZGVmYXVsdHMgdG8gZmFsc2UgYW5kIG11c3QgYmUgc2V0IG9uIHRoZSBpbnN0YW5jZS4KICAgKgogICAqIE5vdGUsIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgcHJvcGFnYXRpbmcgbGFyZ2Ugb2JqZWN0IGdyYXBocwogICAqIHdpbGwgYmUgd29yc2UgYnkgcmVseWluZyBvbiBgbXV0YWJsZURhdGE6IHRydWVgIGFzIG9wcG9zZWQgdG8gdXNpbmcKICAgKiBzdHJpY3QgZGlydHkgY2hlY2tpbmcgd2l0aCBpbW11dGFibGUgcGF0dGVybnMgb3IgUG9seW1lcidzIHBhdGggbm90aWZpY2F0aW9uCiAgICogQVBJLgogICAqCiAgICogQG1peGluRnVuY3Rpb24KICAgKiBAcG9seW1lcgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgRWxlbWVudCBjbGFzcyBtaXhpbiB0byBvcHRpb25hbGx5IHNraXAgc3RyaWN0IGRpcnR5LWNoZWNraW5nCiAgICogICBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzCiAgICovCiAgUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhID0gUG9seW1lci5kZWR1cGluZ01peGluKHN1cGVyQ2xhc3MgPT4gewoKICAgIC8qKgogICAgICogQG1peGluQ2xhc3MKICAgICAqIEBwb2x5bWVyCiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9PcHRpb25hbE11dGFibGVEYXRhfQogICAgICovCiAgICBjbGFzcyBPcHRpb25hbE11dGFibGVEYXRhIGV4dGVuZHMgc3VwZXJDbGFzcyB7CgogICAgICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIC8qKgogICAgICAgICAgICogSW5zdGFuY2UtbGV2ZWwgZmxhZyBmb3IgY29uZmlndXJpbmcgdGhlIGRpcnR5LWNoZWNraW5nIHN0cmF0ZWd5CiAgICAgICAgICAgKiBmb3IgdGhpcyBlbGVtZW50LiAgV2hlbiB0cnVlLCBPYmplY3RzIGFuZCBBcnJheXMgd2lsbCBza2lwIGRpcnR5CiAgICAgICAgICAgKiBjaGVja2luZywgb3RoZXJ3aXNlIHN0cmljdCBlcXVhbGl0eSBjaGVja2luZyB3aWxsIGJlIHVzZWQuCiAgICAgICAgICAgKi8KICAgICAgICAgIG11dGFibGVEYXRhOiBCb29sZWFuCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIHRvIHByb3ZpZGUgb3B0aW9uIGZvciBza2lwcGluZwogICAgICAgKiBzdHJpY3QgZXF1YWxpdHkgY2hlY2tpbmcgZm9yIE9iamVjdHMgYW5kIEFycmF5cy4KICAgICAgICoKICAgICAgICogV2hlbiBgdGhpcy5tdXRhYmxlRGF0YWAgaXMgdHJ1ZSBvbiB0aGlzIGluc3RhbmNlLCB0aGlzIG1ldGhvZAogICAgICAgKiBwdWxscyB0aGUgdmFsdWUgdG8gZGlydHkgY2hlY2sgYWdhaW5zdCBmcm9tIHRoZSBgX19kYXRhVGVtcGAgY2FjaGUKICAgICAgICogKHJhdGhlciB0aGFuIHRoZSBub3JtYWwgYF9fZGF0YWAgY2FjaGUpIGZvciBPYmplY3RzLiAgU2luY2UgdGhlIHRlbXAKICAgICAgICogY2FjaGUgaXMgY2xlYXJlZCBhdCB0aGUgZW5kIG9mIGEgdHVybiwgdGhpcyBpbXBsZW1lbnRhdGlvbiBhbGxvd3MKICAgICAgICogc2lkZS1lZmZlY3RzIG9mIGRlZXAgb2JqZWN0IGNoYW5nZXMgdG8gYmUgcHJvY2Vzc2VkIGJ5IHJlLXNldHRpbmcgdGhlCiAgICAgICAqIHNhbWUgb2JqZWN0ICh1c2luZyB0aGUgdGVtcCBjYWNoZSBhcyBhbiBpbi10dXJuIGJhY2tzdG9wIHRvIHByZXZlbnQKICAgICAgICogY3ljbGVzIGR1ZSB0byAyLXdheSBub3RpZmljYXRpb24pLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgUHJvcGVydHkgbmFtZQogICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIE5ldyBwcm9wZXJ0eSB2YWx1ZQogICAgICAgKiBAcGFyYW0geyp9IG9sZCBQcmV2aW91cyBwcm9wZXJ0eSB2YWx1ZQogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91bGQgYmUgY29uc2lkZXJlZCBhIGNoYW5nZQogICAgICAgKiBAcHJvdGVjdGVkCiAgICAgICAqLwogICAgICBfc2hvdWxkUHJvcGVydHlDaGFuZ2UocHJvcGVydHksIHZhbHVlLCBvbGQpIHsKICAgICAgICByZXR1cm4gbXV0YWJsZVByb3BlcnR5Q2hhbmdlKHRoaXMsIHByb3BlcnR5LCB2YWx1ZSwgb2xkLCB0aGlzLm11dGFibGVEYXRhKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBPcHRpb25hbE11dGFibGVEYXRhOwoKICB9KTsKCiAgLy8gRXhwb3J0IGZvciB1c2UgYnkgbGVnYWN5IGJlaGF2aW9yCiAgUG9seW1lci5NdXRhYmxlRGF0YS5fbXV0YWJsZVByb3BlcnR5Q2hhbmdlID0gbXV0YWJsZVByb3BlcnR5Q2hhbmdlOwoKfSkoKTsKCgogIChmdW5jdGlvbigpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvLyBCYXNlIGNsYXNzIGZvciBIVE1MVGVtcGxhdGVFbGVtZW50IGV4dGVuc2lvbiB0aGF0IGhhcyBwcm9wZXJ0eSBlZmZlY3RzCiAgICAvLyBtYWNoaW5lcnkgZm9yIHByb3BhZ2F0aW5nIGhvc3QgcHJvcGVydGllcyB0byBjaGlsZHJlbi4gVGhpcyBpcyBhbiBFUzUKICAgIC8vIGNsYXNzIG9ubHkgYmVjYXVzZSBCYWJlbCAoaW5jb3JyZWN0bHkpIHJlcXVpcmVzIHN1cGVyKCkgaW4gdGhlIGNsYXNzCiAgICAvLyBjb25zdHJ1Y3RvciBldmVuIHRob3VnaCBubyBgdGhpc2AgaXMgdXNlZCBhbmQgaXQgcmV0dXJucyBhbiBpbnN0YW5jZS4KICAgIGxldCBuZXdJbnN0YW5jZSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAY29uc3RydWN0b3IKICAgICAqIEBleHRlbmRzIHtIVE1MVGVtcGxhdGVFbGVtZW50fQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gSFRNTFRlbXBsYXRlRWxlbWVudEV4dGVuc2lvbigpIHsgcmV0dXJuIG5ld0luc3RhbmNlOyB9CiAgICBIVE1MVGVtcGxhdGVFbGVtZW50RXh0ZW5zaW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSFRNTFRlbXBsYXRlRWxlbWVudC5wcm90b3R5cGUsIHsKICAgICAgY29uc3RydWN0b3I6IHsKICAgICAgICB2YWx1ZTogSFRNTFRlbXBsYXRlRWxlbWVudEV4dGVuc2lvbiwKICAgICAgICB3cml0YWJsZTogdHJ1ZQogICAgICB9CiAgICB9KTsKCiAgICAvKioKICAgICAqIEBjb25zdHJ1Y3RvcgogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfUHJvcGVydHlFZmZlY3RzfQogICAgICogQGV4dGVuZHMge0hUTUxUZW1wbGF0ZUVsZW1lbnRFeHRlbnNpb259CiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdCBEYXRhVGVtcGxhdGUgPSBQb2x5bWVyLlByb3BlcnR5RWZmZWN0cyhIVE1MVGVtcGxhdGVFbGVtZW50RXh0ZW5zaW9uKTsKCiAgICAvKioKICAgICAqIEBjb25zdHJ1Y3RvcgogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfTXV0YWJsZURhdGF9CiAgICAgKiBAZXh0ZW5kcyB7RGF0YVRlbXBsYXRlfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3QgTXV0YWJsZURhdGFUZW1wbGF0ZSA9IFBvbHltZXIuTXV0YWJsZURhdGEoRGF0YVRlbXBsYXRlKTsKCiAgICAvLyBBcHBsaWVzIGEgRGF0YVRlbXBsYXRlIHN1YmNsYXNzIHRvIGEgPHRlbXBsYXRlPiBpbnN0YW5jZQogICAgZnVuY3Rpb24gdXBncmFkZVRlbXBsYXRlKHRlbXBsYXRlLCBjb25zdHJ1Y3RvcikgewogICAgICBuZXdJbnN0YW5jZSA9IHRlbXBsYXRlOwogICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGVtcGxhdGUsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSk7CiAgICAgIG5ldyBjb25zdHJ1Y3RvcigpOwogICAgICBuZXdJbnN0YW5jZSA9IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBCYXNlIGNsYXNzIGZvciBUZW1wbGF0ZUluc3RhbmNlLgogICAgICogQGNvbnN0cnVjdG9yCiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0eUVmZmVjdHN9CiAgICAgKiBAcHJpdmF0ZQogICAgICovCiAgICBjb25zdCBiYXNlID0gUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHMoY2xhc3Mge30pOwoKICAgIC8qKgogICAgICogQHBvbHltZXIKICAgICAqIEBjdXN0b21FbGVtZW50CiAgICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuUHJvcGVydHlFZmZlY3RzCiAgICAgKiBAdW5yZXN0cmljdGVkCiAgICAgKi8KICAgIGNsYXNzIFRlbXBsYXRlSW5zdGFuY2VCYXNlIGV4dGVuZHMgYmFzZSB7CiAgICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLl9jb25maWd1cmVQcm9wZXJ0aWVzKHByb3BzKTsKICAgICAgICB0aGlzLnJvb3QgPSB0aGlzLl9zdGFtcFRlbXBsYXRlKHRoaXMuX19kYXRhSG9zdCk7CiAgICAgICAgLy8gU2F2ZSBsaXN0IG9mIHN0YW1wZWQgY2hpbGRyZW4KICAgICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID0gW107CiAgICAgICAgZm9yIChsZXQgbiA9IHRoaXMucm9vdC5maXJzdENoaWxkOyBuOyBuPW4ubmV4dFNpYmxpbmcpIHsKICAgICAgICAgIGNoaWxkcmVuLnB1c2gobik7CiAgICAgICAgICBuLl9fdGVtcGxhdGl6ZUluc3RhbmNlID0gdGhpczsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMuX190ZW1wbGF0aXplT3duZXIgJiYKICAgICAgICAgIHRoaXMuX190ZW1wbGF0aXplT3duZXIuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSB7CiAgICAgICAgICB0aGlzLl9zaG93SGlkZUNoaWxkcmVuKHRydWUpOwogICAgICAgIH0KICAgICAgICAvLyBGbHVzaCBwcm9wcyBvbmx5IHdoZW4gcHJvcHMgYXJlIHBhc3NlZCBpZiBpbnN0YW5jZSBwcm9wcyBleGlzdAogICAgICAgIC8vIG9yIHdoZW4gdGhlcmUgaXNuJ3QgaW5zdGFuY2UgcHJvcHMuCiAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9fdGVtcGxhdGl6ZU9wdGlvbnM7CiAgICAgICAgaWYgKChwcm9wcyAmJiBvcHRpb25zLmluc3RhbmNlUHJvcHMpIHx8ICFvcHRpb25zLmluc3RhbmNlUHJvcHMpIHsKICAgICAgICAgIHRoaXMuX2VuYWJsZVByb3BlcnRpZXMoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIENvbmZpZ3VyZSB0aGUgZ2l2ZW4gYHByb3BzYCBieSBjYWxsaW5nIGBfc2V0UGVuZGluZ1Byb3BlcnR5YC4gQWxzbwogICAgICAgKiBzZXRzIGFueSBwcm9wZXJ0aWVzIHN0b3JlZCBpbiBgX19ob3N0UHJvcHNgLgogICAgICAgKiBAcHJpdmF0ZQogICAgICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHMgT2JqZWN0IG9mIHByb3BlcnR5IG5hbWUtdmFsdWUgcGFpcnMgdG8gc2V0LgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX2NvbmZpZ3VyZVByb3BlcnRpZXMocHJvcHMpIHsKICAgICAgICBsZXQgb3B0aW9ucyA9IHRoaXMuX190ZW1wbGF0aXplT3B0aW9uczsKICAgICAgICBpZiAob3B0aW9ucy5mb3J3YXJkSG9zdFByb3ApIHsKICAgICAgICAgIGZvciAobGV0IGhwcm9wIGluIHRoaXMuX19ob3N0UHJvcHMpIHsKICAgICAgICAgICAgdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KGhwcm9wLCB0aGlzLl9fZGF0YUhvc3RbJ19ob3N0XycgKyBocHJvcF0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBBbnkgaW5zdGFuY2UgcHJvcHMgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3RvciB3aWxsIG92ZXJ3cml0ZSBob3N0IHByb3BzOwogICAgICAgIC8vIG5vcm1hbGx5IHRoaXMgd291bGQgYmUgYSB1c2VyIGVycm9yIGJ1dCB3ZSBkb24ndCBzcGVjaWZpY2FsbHkgZmlsdGVyIHRoZW0KICAgICAgICBmb3IgKGxldCBpcHJvcCBpbiBwcm9wcykgewogICAgICAgICAgdGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5KGlwcm9wLCBwcm9wc1tpcHJvcF0pOwogICAgICAgIH0KICAgICAgfQogICAgICAvKioKICAgICAgICogRm9yd2FyZHMgYSBob3N0IHByb3BlcnR5IHRvIHRoaXMgaW5zdGFuY2UuICBUaGlzIG1ldGhvZCBzaG91bGQgYmUKICAgICAgICogY2FsbGVkIG9uIGluc3RhbmNlcyBmcm9tIHRoZSBgb3B0aW9ucy5mb3J3YXJkSG9zdFByb3BgIGNhbGxiYWNrCiAgICAgICAqIHRvIHByb3BhZ2F0ZSBjaGFuZ2VzIG9mIGhvc3QgcHJvcGVydGllcyB0byBlYWNoIGluc3RhbmNlLgogICAgICAgKgogICAgICAgKiBOb3RlIHRoaXMgbWV0aG9kIGVucXVldWVzIHRoZSBjaGFuZ2UsIHdoaWNoIGFyZSBmbHVzaGVkIGFzIGEgYmF0Y2guCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIFByb3BlcnR5IG9yIHBhdGggbmFtZQogICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIG9mIHRoZSBwcm9wZXJ0eSB0byBmb3J3YXJkCiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBmb3J3YXJkSG9zdFByb3AocHJvcCwgdmFsdWUpIHsKICAgICAgICBpZiAodGhpcy5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKHByb3AsIHZhbHVlLCBmYWxzZSwgdHJ1ZSkpIHsKICAgICAgICAgIHRoaXMuX19kYXRhSG9zdC5fZW5xdWV1ZUNsaWVudCh0aGlzKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBPdmVycmlkZSBwb2ludCBmb3IgYWRkaW5nIGN1c3RvbSBvciBzaW11bGF0ZWQgZXZlbnQgaGFuZGxpbmcuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUgTm9kZSB0byBhZGQgZXZlbnQgbGlzdGVuZXIgdG8KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZSBOYW1lIG9mIGV2ZW50CiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oIUV2ZW50KTp2b2lkfSBoYW5kbGVyIExpc3RlbmVyIGZ1bmN0aW9uIHRvIGFkZAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgX2FkZEV2ZW50TGlzdGVuZXJUb05vZGUobm9kZSwgZXZlbnROYW1lLCBoYW5kbGVyKSB7CiAgICAgICAgaWYgKHRoaXMuX21ldGhvZEhvc3QgJiYgdGhpcy5fX3RlbXBsYXRpemVPcHRpb25zLnBhcmVudE1vZGVsKSB7CiAgICAgICAgICAvLyBJZiB0aGlzIGluc3RhbmNlIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgcGFyZW50IG1vZGVsLCBkZWNvcmF0ZQogICAgICAgICAgLy8gZXZlbnRzIHRoaXMgdGVtcGxhdGUgaW5zdGFuY2UgYXMgYG1vZGVsYAogICAgICAgICAgdGhpcy5fbWV0aG9kSG9zdC5fYWRkRXZlbnRMaXN0ZW5lclRvTm9kZShub2RlLCBldmVudE5hbWUsIChlKSA9PiB7CiAgICAgICAgICAgIGUubW9kZWwgPSB0aGlzOwogICAgICAgICAgICBoYW5kbGVyKGUpOwogICAgICAgICAgfSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIE90aGVyd2lzZSBkZWxlZ2F0ZSB0byB0aGUgdGVtcGxhdGUncyBob3N0ICh3aGljaCBjb3VsZCBiZSkKICAgICAgICAgIC8vIGFub3RoZXIgdGVtcGxhdGUgaW5zdGFuY2UKICAgICAgICAgIGxldCB0ZW1wbGF0ZUhvc3QgPSB0aGlzLl9fZGF0YUhvc3QuX19kYXRhSG9zdDsKICAgICAgICAgIGlmICh0ZW1wbGF0ZUhvc3QpIHsKICAgICAgICAgICAgdGVtcGxhdGVIb3N0Ll9hZGRFdmVudExpc3RlbmVyVG9Ob2RlKG5vZGUsIGV2ZW50TmFtZSwgaGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBTaG93cyBvciBoaWRlcyB0aGUgdGVtcGxhdGUgaW5zdGFuY2UgdG9wIGxldmVsIGNoaWxkIGVsZW1lbnRzLiBGb3IKICAgICAgICogdGV4dCBub2RlcywgYHRleHRDb250ZW50YCBpcyByZW1vdmVkIHdoaWxlICJoaWRkZW4iIGFuZCByZXBsYWNlZCB3aGVuCiAgICAgICAqICJzaG93bi4iCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaGlkZSBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSBjaGlsZHJlbjsKICAgICAgICogc2V0IHRvIGZhbHNlIHRvIHNob3cgdGhlbS4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX3Nob3dIaWRlQ2hpbGRyZW4oaGlkZSkgewogICAgICAgIGxldCBjID0gdGhpcy5jaGlsZHJlbjsKICAgICAgICBmb3IgKGxldCBpPTA7IGk8Yy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGV0IG4gPSBjW2ldOwogICAgICAgICAgLy8gSWdub3JlIG5vbi1jaGFuZ2VzCiAgICAgICAgICBpZiAoQm9vbGVhbihoaWRlKSAhPSBCb29sZWFuKG4uX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fKSkgewogICAgICAgICAgICBpZiAobi5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHsKICAgICAgICAgICAgICBpZiAoaGlkZSkgewogICAgICAgICAgICAgICAgbi5fX3BvbHltZXJUZXh0Q29udGVudF9fID0gbi50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgIG4udGV4dENvbnRlbnQgPSAnJzsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbi50ZXh0Q29udGVudCA9IG4uX19wb2x5bWVyVGV4dENvbnRlbnRfXzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIHJlbW92ZSBhbmQgcmVwbGFjZSBzbG90CiAgICAgICAgICAgIH0gZWxzZSBpZiAobi5sb2NhbE5hbWUgPT09ICdzbG90JykgewogICAgICAgICAgICAgIGlmIChoaWRlKSB7CiAgICAgICAgICAgICAgICBuLl9fcG9seW1lclJlcGxhY2VkX18gPSBkb2N1bWVudC5jcmVhdGVDb21tZW50KCdoaWRkZW4tc2xvdCcpOwogICAgICAgICAgICAgICAgbi5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLl9fcG9seW1lclJlcGxhY2VkX18sIG4pOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXBsYWNlID0gbi5fX3BvbHltZXJSZXBsYWNlZF9fOwogICAgICAgICAgICAgICAgaWYgKHJlcGxhY2UpIHsKICAgICAgICAgICAgICAgICAgcmVwbGFjZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuLCByZXBsYWNlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgaWYgKG4uc3R5bGUpIHsKICAgICAgICAgICAgICBpZiAoaGlkZSkgewogICAgICAgICAgICAgICAgbi5fX3BvbHltZXJEaXNwbGF5X18gPSBuLnN0eWxlLmRpc3BsYXk7CiAgICAgICAgICAgICAgICBuLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG4uc3R5bGUuZGlzcGxheSA9IG4uX19wb2x5bWVyRGlzcGxheV9fOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgbi5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18gPSBoaWRlOwogICAgICAgICAgaWYgKG4uX3Nob3dIaWRlQ2hpbGRyZW4pIHsKICAgICAgICAgICAgbi5fc2hvd0hpZGVDaGlsZHJlbihoaWRlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIE92ZXJyaWRlcyBkZWZhdWx0IHByb3BlcnR5LWVmZmVjdHMgaW1wbGVtZW50YXRpb24gdG8gaW50ZXJjZXB0CiAgICAgICAqIHRleHRDb250ZW50IGJpbmRpbmdzIHdoaWxlIGNoaWxkcmVuIGFyZSAiaGlkZGVuIiBhbmQgY2FjaGUgaW4KICAgICAgICogcHJpdmF0ZSBzdG9yYWdlIGZvciBsYXRlciByZXRyaWV2YWwuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7IU5vZGV9IG5vZGUgVGhlIG5vZGUgdG8gc2V0IGEgcHJvcGVydHkgb24KICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgVGhlIHByb3BlcnR5IHRvIHNldAogICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHByb3RlY3RlZAogICAgICAgKi8KICAgICAgX3NldFVubWFuYWdlZFByb3BlcnR5VG9Ob2RlKG5vZGUsIHByb3AsIHZhbHVlKSB7CiAgICAgICAgaWYgKG5vZGUuX19oaWRlVGVtcGxhdGVDaGlsZHJlbl9fICYmCiAgICAgICAgICAgIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5URVhUX05PREUgJiYgcHJvcCA9PSAndGV4dENvbnRlbnQnKSB7CiAgICAgICAgICBub2RlLl9fcG9seW1lclRleHRDb250ZW50X18gPSB2YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc3VwZXIuX3NldFVubWFuYWdlZFByb3BlcnR5VG9Ob2RlKG5vZGUsIHByb3AsIHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLyoqCiAgICAgICAqIEZpbmQgdGhlIHBhcmVudCBtb2RlbCBvZiB0aGlzIHRlbXBsYXRlIGluc3RhbmNlLiAgVGhlIHBhcmVudCBtb2RlbAogICAgICAgKiBpcyBlaXRoZXIgYW5vdGhlciB0ZW1wbGF0aXplIGluc3RhbmNlIHRoYXQgaGFkIG9wdGlvbiBgcGFyZW50TW9kZWw6IHRydWVgLAogICAgICAgKiBvciBlbHNlIHRoZSBob3N0IGVsZW1lbnQuCiAgICAgICAqCiAgICAgICAqIEByZXR1cm4geyFQb2x5bWVyX1Byb3BlcnR5RWZmZWN0c30gVGhlIHBhcmVudCBtb2RlbCBvZiB0aGlzIGluc3RhbmNlCiAgICAgICAqLwogICAgICBnZXQgcGFyZW50TW9kZWwoKSB7CiAgICAgICAgbGV0IG1vZGVsID0gdGhpcy5fX3BhcmVudE1vZGVsOwogICAgICAgIGlmICghbW9kZWwpIHsKICAgICAgICAgIGxldCBvcHRpb25zOwogICAgICAgICAgbW9kZWwgPSB0aGlzOwogICAgICAgICAgZG8gewogICAgICAgICAgICAvLyBBIHRlbXBsYXRlIGluc3RhbmNlJ3MgYF9fZGF0YUhvc3RgIGlzIGEgPHRlbXBsYXRlPgogICAgICAgICAgICAvLyBgbW9kZWwuX19kYXRhSG9zdC5fX2RhdGFIb3N0YCBpcyB0aGUgdGVtcGxhdGUncyBob3N0CiAgICAgICAgICAgIG1vZGVsID0gbW9kZWwuX19kYXRhSG9zdC5fX2RhdGFIb3N0OwogICAgICAgICAgfSB3aGlsZSAoKG9wdGlvbnMgPSBtb2RlbC5fX3RlbXBsYXRpemVPcHRpb25zKSAmJiAhb3B0aW9ucy5wYXJlbnRNb2RlbCk7CiAgICAgICAgICB0aGlzLl9fcGFyZW50TW9kZWwgPSBtb2RlbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG1vZGVsOwogICAgICB9CgogICAgICAvKioKICAgICAgICogU3R1YiBvZiBIVE1MRWxlbWVudCdzIGBkaXNwYXRjaEV2ZW50YCwgc28gdGhhdCBlZmZlY3RzIHRoYXQgbWF5CiAgICAgICAqIGRpc3BhdGNoIGV2ZW50cyBzYWZlbHkgbm8tb3AuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50IEV2ZW50IHRvIGRpc3BhdGNoCiAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IEFsd2F5cyB0cnVlLgogICAgICAgKi8KICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFycwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIC8qKiBAdHlwZSB7IURhdGFUZW1wbGF0ZX0gKi8KICAgIFRlbXBsYXRlSW5zdGFuY2VCYXNlLnByb3RvdHlwZS5fX2RhdGFIb3N0OwogICAgLyoqIEB0eXBlIHshVGVtcGxhdGl6ZU9wdGlvbnN9ICovCiAgICBUZW1wbGF0ZUluc3RhbmNlQmFzZS5wcm90b3R5cGUuX190ZW1wbGF0aXplT3B0aW9uczsKICAgIC8qKiBAdHlwZSB7IVBvbHltZXJfUHJvcGVydHlFZmZlY3RzfSAqLwogICAgVGVtcGxhdGVJbnN0YW5jZUJhc2UucHJvdG90eXBlLl9tZXRob2RIb3N0OwogICAgLyoqIEB0eXBlIHshT2JqZWN0fSAqLwogICAgVGVtcGxhdGVJbnN0YW5jZUJhc2UucHJvdG90eXBlLl9fdGVtcGxhdGl6ZU93bmVyOwogICAgLyoqIEB0eXBlIHshT2JqZWN0fSAqLwogICAgVGVtcGxhdGVJbnN0YW5jZUJhc2UucHJvdG90eXBlLl9faG9zdFByb3BzOwoKICAgIC8qKgogICAgICogQGNvbnN0cnVjdG9yCiAgICAgKiBAZXh0ZW5kcyB7VGVtcGxhdGVJbnN0YW5jZUJhc2V9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9NdXRhYmxlRGF0YX0KICAgICAqIEBwcml2YXRlCiAgICAgKi8KICAgIGNvbnN0IE11dGFibGVUZW1wbGF0ZUluc3RhbmNlQmFzZSA9IFBvbHltZXIuTXV0YWJsZURhdGEoVGVtcGxhdGVJbnN0YW5jZUJhc2UpOwoKICAgIGZ1bmN0aW9uIGZpbmRNZXRob2RIb3N0KHRlbXBsYXRlKSB7CiAgICAgIC8vIFRlY2huaWNhbGx5IHRoaXMgc2hvdWxkIGJlIHRoZSBvd25lciBvZiB0aGUgb3V0ZXJtb3N0IHRlbXBsYXRlLgogICAgICAvLyBJbiBzaGFkb3cgZG9tLCB0aGlzIGlzIGFsd2F5cyBnZXRSb290Tm9kZSgpLmhvc3QsIGJ1dCB3ZSBjYW4KICAgICAgLy8gYXBwcm94aW1hdGUgdGhpcyB2aWEgY29vcGVyYXRpb24gd2l0aCBvdXIgZGF0YUhvc3QgYWx3YXlzIHNldHRpbmcKICAgICAgLy8gYF9tZXRob2RIb3N0YCBhcyBsb25nIGFzIHRoZXJlIHdlcmUgYmluZGluZ3MgKG9yIGlkJ3MpIG9uIHRoaXMKICAgICAgLy8gaW5zdGFuY2UgY2F1c2luZyBpdCB0byBnZXQgYSBkYXRhSG9zdC4KICAgICAgbGV0IHRlbXBsYXRlSG9zdCA9IHRlbXBsYXRlLl9fZGF0YUhvc3Q7CiAgICAgIHJldHVybiB0ZW1wbGF0ZUhvc3QgJiYgdGVtcGxhdGVIb3N0Ll9tZXRob2RIb3N0IHx8IHRlbXBsYXRlSG9zdDsKICAgIH0KCiAgICAvKiBlc2xpbnQtZGlzYWJsZSB2YWxpZC1qc2RvYyAqLwogICAgLyoqCiAgICAgKiBAc3VwcHJlc3Mge21pc3NpbmdQcm9wZXJ0aWVzfSBjbGFzcy5wcm90b3R5cGUgaXMgbm90IGRlZmluZWQgZm9yIHNvbWUgcmVhc29uCiAgICAgKi8KICAgIGZ1bmN0aW9uIGNyZWF0ZVRlbXBsYXRpemVyQ2xhc3ModGVtcGxhdGUsIHRlbXBsYXRlSW5mbywgb3B0aW9ucykgewogICAgICAvLyBBbm9ueW1vdXMgY2xhc3MgY3JlYXRlZCBieSB0aGUgdGVtcGxhdGl6ZQogICAgICBsZXQgYmFzZSA9IG9wdGlvbnMubXV0YWJsZURhdGEgPwogICAgICAgIE11dGFibGVUZW1wbGF0ZUluc3RhbmNlQmFzZSA6IFRlbXBsYXRlSW5zdGFuY2VCYXNlOwogICAgICAvLyBBZmZvcmRhbmNlIGZvciBnbG9iYWwgbWl4aW5zIG9udG8gVGVtcGxhdGl6ZUluc3RhbmNlCiAgICAgIGlmIChQb2x5bWVyLlRlbXBsYXRpemUubWl4aW4pIHsKICAgICAgICBiYXNlID0gUG9seW1lci5UZW1wbGF0aXplLm1peGluKGJhc2UpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBAY29uc3RydWN0b3IKICAgICAgICogQGV4dGVuZHMge2Jhc2V9CiAgICAgICAqIEBwcml2YXRlCiAgICAgICAqLwogICAgICBsZXQga2xhc3MgPSBjbGFzcyBleHRlbmRzIGJhc2UgeyB9OwogICAgICBrbGFzcy5wcm90b3R5cGUuX190ZW1wbGF0aXplT3B0aW9ucyA9IG9wdGlvbnM7CiAgICAgIGtsYXNzLnByb3RvdHlwZS5fYmluZFRlbXBsYXRlKHRlbXBsYXRlKTsKICAgICAgYWRkTm90aWZ5RWZmZWN0cyhrbGFzcywgdGVtcGxhdGUsIHRlbXBsYXRlSW5mbywgb3B0aW9ucyk7CiAgICAgIHJldHVybiBrbGFzczsKICAgIH0KCiAgICAvKioKICAgICAqIEBzdXBwcmVzcyB7bWlzc2luZ1Byb3BlcnRpZXN9IGNsYXNzLnByb3RvdHlwZSBpcyBub3QgZGVmaW5lZCBmb3Igc29tZSByZWFzb24KICAgICAqLwogICAgZnVuY3Rpb24gYWRkUHJvcGFnYXRlRWZmZWN0cyh0ZW1wbGF0ZSwgdGVtcGxhdGVJbmZvLCBvcHRpb25zKSB7CiAgICAgIGxldCB1c2VyRm9yd2FyZEhvc3RQcm9wID0gb3B0aW9ucy5mb3J3YXJkSG9zdFByb3A7CiAgICAgIGlmICh1c2VyRm9yd2FyZEhvc3RQcm9wKSB7CiAgICAgICAgLy8gUHJvdmlkZSBkYXRhIEFQSSBhbmQgcHJvcGVydHkgZWZmZWN0cyBvbiBtZW1vaXplZCB0ZW1wbGF0ZSBjbGFzcwogICAgICAgIGxldCBrbGFzcyA9IHRlbXBsYXRlSW5mby50ZW1wbGF0aXplVGVtcGxhdGVDbGFzczsKICAgICAgICBpZiAoIWtsYXNzKSB7CiAgICAgICAgICBsZXQgYmFzZSA9IG9wdGlvbnMubXV0YWJsZURhdGEgPyBNdXRhYmxlRGF0YVRlbXBsYXRlIDogRGF0YVRlbXBsYXRlOwogICAgICAgICAgLyoqIEBwcml2YXRlICovCiAgICAgICAgICBrbGFzcyA9IHRlbXBsYXRlSW5mby50ZW1wbGF0aXplVGVtcGxhdGVDbGFzcyA9CiAgICAgICAgICAgIGNsYXNzIFRlbXBsYXRpemVkVGVtcGxhdGUgZXh0ZW5kcyBiYXNlIHt9OwogICAgICAgICAgLy8gQWRkIHRlbXBsYXRlIC0gPmluc3RhbmNlcyBlZmZlY3RzCiAgICAgICAgICAvLyBhbmQgaG9zdCA8LSB0ZW1wbGF0ZSBlZmZlY3RzCiAgICAgICAgICBsZXQgaG9zdFByb3BzID0gdGVtcGxhdGVJbmZvLmhvc3RQcm9wczsKICAgICAgICAgIGZvciAobGV0IHByb3AgaW4gaG9zdFByb3BzKSB7CiAgICAgICAgICAgIGtsYXNzLnByb3RvdHlwZS5fYWRkUHJvcGVydHlFZmZlY3QoJ19ob3N0XycgKyBwcm9wLAogICAgICAgICAgICAgIGtsYXNzLnByb3RvdHlwZS5QUk9QRVJUWV9FRkZFQ1RfVFlQRVMuUFJPUEFHQVRFLAogICAgICAgICAgICAgIHtmbjogY3JlYXRlRm9yd2FyZEhvc3RQcm9wRWZmZWN0KHByb3AsIHVzZXJGb3J3YXJkSG9zdFByb3ApfSk7CiAgICAgICAgICAgIGtsYXNzLnByb3RvdHlwZS5fY3JlYXRlTm90aWZ5aW5nUHJvcGVydHkoJ19ob3N0XycgKyBwcm9wKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdXBncmFkZVRlbXBsYXRlKHRlbXBsYXRlLCBrbGFzcyk7CiAgICAgICAgLy8gTWl4IGFueSBwcmUtYm91bmQgZGF0YSBpbnRvIF9fZGF0YTsgbm8gbmVlZCB0byBmbHVzaCB0aGlzIHRvCiAgICAgICAgLy8gaW5zdGFuY2VzIHNpbmNlIHRoZXkgcHVsbCBmcm9tIHRoZSB0ZW1wbGF0ZSBhdCBpbnN0YW5jZS10aW1lCiAgICAgICAgaWYgKHRlbXBsYXRlLl9fZGF0YVByb3RvKSB7CiAgICAgICAgICAvLyBOb3RlLCBnZW5lcmFsbHkgYF9fZGF0YVByb3RvYCBjb3VsZCBiZSBjaGFpbmVkLCBidXQgaXQncyBndWFyYW50ZWVkCiAgICAgICAgICAvLyB0byBub3QgYmUgc2luY2UgdGhpcyBpcyBhIHZhbmlsbGEgdGVtcGxhdGUgd2UganVzdCBhZGRlZCBlZmZlY3RzIHRvCiAgICAgICAgICBPYmplY3QuYXNzaWduKHRlbXBsYXRlLl9fZGF0YSwgdGVtcGxhdGUuX19kYXRhUHJvdG8pOwogICAgICAgIH0KICAgICAgICAvLyBDbGVhciBhbnkgcGVuZGluZyBkYXRhIGZvciBwZXJmb3JtYW5jZQogICAgICAgIHRlbXBsYXRlLl9fZGF0YVRlbXAgPSB7fTsKICAgICAgICB0ZW1wbGF0ZS5fX2RhdGFQZW5kaW5nID0gbnVsbDsKICAgICAgICB0ZW1wbGF0ZS5fX2RhdGFPbGQgPSBudWxsOwogICAgICAgIHRlbXBsYXRlLl9lbmFibGVQcm9wZXJ0aWVzKCk7CiAgICAgIH0KICAgIH0KICAgIC8qIGVzbGludC1lbmFibGUgdmFsaWQtanNkb2MgKi8KCiAgICBmdW5jdGlvbiBjcmVhdGVGb3J3YXJkSG9zdFByb3BFZmZlY3QoaG9zdFByb3AsIHVzZXJGb3J3YXJkSG9zdFByb3ApIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uIGZvcndhcmRIb3N0UHJvcCh0ZW1wbGF0ZSwgcHJvcCwgcHJvcHMpIHsKICAgICAgICB1c2VyRm9yd2FyZEhvc3RQcm9wLmNhbGwodGVtcGxhdGUuX190ZW1wbGF0aXplT3duZXIsCiAgICAgICAgICBwcm9wLnN1YnN0cmluZygnX2hvc3RfJy5sZW5ndGgpLCBwcm9wc1twcm9wXSk7CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gYWRkTm90aWZ5RWZmZWN0cyhrbGFzcywgdGVtcGxhdGUsIHRlbXBsYXRlSW5mbywgb3B0aW9ucykgewogICAgICBsZXQgaG9zdFByb3BzID0gdGVtcGxhdGVJbmZvLmhvc3RQcm9wcyB8fCB7fTsKICAgICAgZm9yIChsZXQgaXByb3AgaW4gb3B0aW9ucy5pbnN0YW5jZVByb3BzKSB7CiAgICAgICAgZGVsZXRlIGhvc3RQcm9wc1tpcHJvcF07CiAgICAgICAgbGV0IHVzZXJOb3RpZnlJbnN0YW5jZVByb3AgPSBvcHRpb25zLm5vdGlmeUluc3RhbmNlUHJvcDsKICAgICAgICBpZiAodXNlck5vdGlmeUluc3RhbmNlUHJvcCkgewogICAgICAgICAga2xhc3MucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdChpcHJvcCwKICAgICAgICAgICAga2xhc3MucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5OT1RJRlksCiAgICAgICAgICAgIHtmbjogY3JlYXRlTm90aWZ5SW5zdGFuY2VQcm9wRWZmZWN0KGlwcm9wLCB1c2VyTm90aWZ5SW5zdGFuY2VQcm9wKX0pOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAob3B0aW9ucy5mb3J3YXJkSG9zdFByb3AgJiYgdGVtcGxhdGUuX19kYXRhSG9zdCkgewogICAgICAgIGZvciAobGV0IGhwcm9wIGluIGhvc3RQcm9wcykgewogICAgICAgICAga2xhc3MucHJvdG90eXBlLl9hZGRQcm9wZXJ0eUVmZmVjdChocHJvcCwKICAgICAgICAgICAga2xhc3MucHJvdG90eXBlLlBST1BFUlRZX0VGRkVDVF9UWVBFUy5OT1RJRlksCiAgICAgICAgICAgIHtmbjogY3JlYXRlTm90aWZ5SG9zdFByb3BFZmZlY3QoKX0pOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZU5vdGlmeUluc3RhbmNlUHJvcEVmZmVjdChpbnN0UHJvcCwgdXNlck5vdGlmeUluc3RhbmNlUHJvcCkgewogICAgICByZXR1cm4gZnVuY3Rpb24gbm90aWZ5SW5zdGFuY2VQcm9wKGluc3QsIHByb3AsIHByb3BzKSB7CiAgICAgICAgdXNlck5vdGlmeUluc3RhbmNlUHJvcC5jYWxsKGluc3QuX190ZW1wbGF0aXplT3duZXIsCiAgICAgICAgICBpbnN0LCBwcm9wLCBwcm9wc1twcm9wXSk7CiAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlTm90aWZ5SG9zdFByb3BFZmZlY3QoKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbiBub3RpZnlIb3N0UHJvcChpbnN0LCBwcm9wLCBwcm9wcykgewogICAgICAgIGluc3QuX19kYXRhSG9zdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKCdfaG9zdF8nICsgcHJvcCwgcHJvcHNbcHJvcF0sIHRydWUsIHRydWUpOwogICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTW9kdWxlIGZvciBwcmVwYXJpbmcgYW5kIHN0YW1waW5nIGluc3RhbmNlcyBvZiB0ZW1wbGF0ZXMgdGhhdCB1dGlsaXplCiAgICAgKiBQb2x5bWVyJ3MgZGF0YS1iaW5kaW5nIGFuZCBkZWNsYXJhdGl2ZSBldmVudCBsaXN0ZW5lciBmZWF0dXJlcy4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICoKICAgICAqICAgICAvLyBHZXQgYSB0ZW1wbGF0ZSBmcm9tIHNvbWV3aGVyZSwgZS5nLiBsaWdodCBET00KICAgICAqICAgICBsZXQgdGVtcGxhdGUgPSB0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJyk7CiAgICAgKiAgICAgLy8gUHJlcGFyZSB0aGUgdGVtcGxhdGUKICAgICAqICAgICBsZXQgVGVtcGxhdGVDbGFzcyA9IFBvbHltZXIuVGVtcGxhdGl6ZS50ZW1wbGF0aXplKHRlbXBsYXRlKTsKICAgICAqICAgICAvLyBJbnN0YW5jZSB0aGUgdGVtcGxhdGUgd2l0aCBhbiBpbml0aWFsIGRhdGEgbW9kZWwKICAgICAqICAgICBsZXQgaW5zdGFuY2UgPSBuZXcgVGVtcGxhdGVDbGFzcyh7bXlQcm9wOiAnaW5pdGlhbCd9KTsKICAgICAqICAgICAvLyBJbnNlcnQgdGhlIGluc3RhbmNlJ3MgRE9NIHNvbWV3aGVyZSwgZS5nLiBlbGVtZW50J3Mgc2hhZG93IERPTQogICAgICogICAgIHRoaXMuc2hhZG93Um9vdC5hcHBlbmRDaGlsZChpbnN0YW5jZS5yb290KTsKICAgICAqICAgICAvLyBDaGFuZ2luZyBhIHByb3BlcnR5IG9uIHRoZSBpbnN0YW5jZSB3aWxsIHByb3BhZ2F0ZSB0byBiaW5kaW5ncwogICAgICogICAgIC8vIGluIHRoZSB0ZW1wbGF0ZQogICAgICogICAgIGluc3RhbmNlLm15UHJvcCA9ICduZXcgdmFsdWUnOwogICAgICoKICAgICAqIFRoZSBgb3B0aW9uc2AgZGljdGlvbmFyeSBwYXNzZWQgdG8gYHRlbXBsYXRpemVgIGFsbG93cyBmb3IgY3VzdG9taXppbmcKICAgICAqIGZlYXR1cmVzIG9mIHRoZSBnZW5lcmF0ZWQgdGVtcGxhdGUgY2xhc3MsIGluY2x1ZGluZyBob3cgb3V0ZXItc2NvcGUgaG9zdAogICAgICogcHJvcGVydGllcyBzaG91bGQgYmUgZm9yd2FyZGVkIGludG8gdGVtcGxhdGUgaW5zdGFuY2VzLCBob3cgYW55IGluc3RhbmNlCiAgICAgKiBwcm9wZXJ0aWVzIGFkZGVkIGludG8gdGhlIHRlbXBsYXRlJ3Mgc2NvcGUgc2hvdWxkIGJlIG5vdGlmaWVkIG91dCB0bwogICAgICogdGhlIGhvc3QsIGFuZCB3aGV0aGVyIHRoZSBpbnN0YW5jZSBzaG91bGQgYmUgZGVjb3JhdGVkIGFzIGEgInBhcmVudCBtb2RlbCIKICAgICAqIG9mIGFueSBldmVudCBoYW5kbGVycy4KICAgICAqCiAgICAgKiAgICAgLy8gQ3VzdG9taXplIHByb3BlcnR5IGZvcndhcmRpbmcgYW5kIGV2ZW50IG1vZGVsIGRlY29yYXRpb24KICAgICAqICAgICBsZXQgVGVtcGxhdGVDbGFzcyA9IFBvbHltZXIuVGVtcGxhdGl6ZS50ZW1wbGF0aXplKHRlbXBsYXRlLCB0aGlzLCB7CiAgICAgKiAgICAgICBwYXJlbnRNb2RlbDogdHJ1ZSwKICAgICAqICAgICAgIGZvcndhcmRIb3N0UHJvcChwcm9wZXJ0eSwgdmFsdWUpIHsuLi59LAogICAgICogICAgICAgaW5zdGFuY2VQcm9wczogey4uLn0sCiAgICAgKiAgICAgICBub3RpZnlJbnN0YW5jZVByb3AoaW5zdGFuY2UsIHByb3BlcnR5LCB2YWx1ZSkgey4uLn0sCiAgICAgKiAgICAgfSk7CiAgICAgKgogICAgICogQG5hbWVzcGFjZQogICAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgICAqIEBzdW1tYXJ5IE1vZHVsZSBmb3IgcHJlcGFyaW5nIGFuZCBzdGFtcGluZyBpbnN0YW5jZXMgb2YgdGVtcGxhdGVzCiAgICAgKiAgIHV0aWxpemluZyBQb2x5bWVyIHRlbXBsYXRpbmcgZmVhdHVyZXMuCiAgICAgKi8KICAgIFBvbHltZXIuVGVtcGxhdGl6ZSA9IHsKCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIGFuIGFub255bW91cyBgUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHNgIGNsYXNzIGJvdW5kIHRvIHRoZQogICAgICAgKiBgPHRlbXBsYXRlPmAgcHJvdmlkZWQuICBJbnN0YW5jaW5nIHRoZSBjbGFzcyB3aWxsIHJlc3VsdCBpbiB0aGUKICAgICAgICogdGVtcGxhdGUgYmVpbmcgc3RhbXBlZCBpbnRvIGEgZG9jdW1lbnQgZnJhZ21lbnQgc3RvcmVkIGFzIHRoZSBpbnN0YW5jZSdzCiAgICAgICAqIGByb290YCBwcm9wZXJ0eSwgYWZ0ZXIgd2hpY2ggaXQgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSBET00uCiAgICAgICAqCiAgICAgICAqIFRlbXBsYXRlcyBtYXkgdXRpbGl6ZSBhbGwgUG9seW1lciBkYXRhLWJpbmRpbmcgZmVhdHVyZXMgYXMgd2VsbCBhcwogICAgICAgKiBkZWNsYXJhdGl2ZSBldmVudCBsaXN0ZW5lcnMuICBFdmVudCBsaXN0ZW5lcnMgYW5kIGlubGluZSBjb21wdXRpbmcKICAgICAgICogZnVuY3Rpb25zIGluIHRoZSB0ZW1wbGF0ZSB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgaG9zdCBvZiB0aGUgdGVtcGxhdGUuCiAgICAgICAqCiAgICAgICAqIFRoZSBjb25zdHJ1Y3RvciByZXR1cm5lZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCBkaWN0aW9uYXJ5IG9mIGluaXRpYWwKICAgICAgICogcHJvcGVydHkgdmFsdWVzIHRvIHByb3BhZ2F0ZSBpbnRvIHRlbXBsYXRlIGJpbmRpbmdzLiAgQWRkaXRpb25hbGx5CiAgICAgICAqIGhvc3QgcHJvcGVydGllcyBjYW4gYmUgZm9yd2FyZGVkIGluLCBhbmQgaW5zdGFuY2UgcHJvcGVydGllcyBjYW4gYmUKICAgICAgICogbm90aWZpZWQgb3V0IGJ5IHByb3ZpZGluZyBvcHRpb25hbCBjYWxsYmFja3MgaW4gdGhlIGBvcHRpb25zYCBkaWN0aW9uYXJ5LgogICAgICAgKgogICAgICAgKiBWYWxpZCBjb25maWd1cmF0aW9uIGluIGBvcHRpb25zYCBhcmUgYXMgZm9sbG93czoKICAgICAgICoKICAgICAgICogLSBgZm9yd2FyZEhvc3RQcm9wKHByb3BlcnR5LCB2YWx1ZSlgOiBDYWxsZWQgd2hlbiBhIHByb3BlcnR5IHJlZmVyZW5jZWQKICAgICAgICogICBpbiB0aGUgdGVtcGxhdGUgY2hhbmdlZCBvbiB0aGUgdGVtcGxhdGUncyBob3N0LiBBcyB0aGlzIGxpYnJhcnkgZG9lcwogICAgICAgKiAgIG5vdCByZXRhaW4gcmVmZXJlbmNlcyB0byB0ZW1wbGF0ZXMgaW5zdGFuY2VkIGJ5IHRoZSB1c2VyLCBpdCBpcyB0aGUKICAgICAgICogICB0ZW1wbGF0aXplIG93bmVyJ3MgcmVzcG9uc2liaWxpdHkgdG8gZm9yd2FyZCBob3N0IHByb3BlcnR5IGNoYW5nZXMgaW50bwogICAgICAgKiAgIHVzZXItc3RhbXBlZCBpbnN0YW5jZXMuICBUaGUgYGluc3RhbmNlLmZvcndhcmRIb3N0UHJvcChwcm9wZXJ0eSwgdmFsdWUpYAogICAgICAgKiAgICBtZXRob2Qgb24gdGhlIGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgYmUgY2FsbGVkIHRvIGZvcndhcmQgaG9zdAogICAgICAgKiAgIHByb3BlcnRpZXMgaW50byB0aGUgdGVtcGxhdGUgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBwcm9wZXJ0eS1jaGFuZ2VkCiAgICAgICAqICAgbm90aWZpY2F0aW9ucy4gQW55IHByb3BlcnRpZXMgcmVmZXJlbmNlZCBpbiB0aGUgdGVtcGxhdGUgdGhhdCBhcmUgbm90CiAgICAgICAqICAgZGVmaW5lZCBpbiBgaW5zdGFuY2VQcm9wc2Agd2lsbCBiZSBub3RpZmllZCB1cCB0byB0aGUgdGVtcGxhdGUncyBob3N0CiAgICAgICAqICAgYXV0b21hdGljYWxseS4KICAgICAgICogLSBgaW5zdGFuY2VQcm9wc2A6IERpY3Rpb25hcnkgb2YgcHJvcGVydHkgbmFtZXMgdGhhdCB3aWxsIGJlIGFkZGVkCiAgICAgICAqICAgdG8gdGhlIGluc3RhbmNlIGJ5IHRoZSB0ZW1wbGF0aXplIG93bmVyLiAgVGhlc2UgcHJvcGVydGllcyBzaGFkb3cgYW55CiAgICAgICAqICAgaG9zdCBwcm9wZXJ0aWVzLCBhbmQgY2hhbmdlcyB3aXRoaW4gdGhlIHRlbXBsYXRlIHRvIHRoZXNlIHByb3BlcnRpZXMKICAgICAgICogICB3aWxsIHJlc3VsdCBpbiBgbm90aWZ5SW5zdGFuY2VQcm9wYCBiZWluZyBjYWxsZWQuCiAgICAgICAqIC0gYG11dGFibGVEYXRhYDogV2hlbiBgdHJ1ZWAsIHRoZSBnZW5lcmF0ZWQgY2xhc3Mgd2lsbCBza2lwIHN0cmljdAogICAgICAgKiAgIGRpcnR5LWNoZWNraW5nIGZvciBvYmplY3RzIGFuZCBhcnJheXMgKGFsd2F5cyBjb25zaWRlciB0aGVtIHRvIGJlCiAgICAgICAqICAgImRpcnR5IikuCiAgICAgICAqIC0gYG5vdGlmeUluc3RhbmNlUHJvcChpbnN0YW5jZSwgcHJvcGVydHksIHZhbHVlKWA6IENhbGxlZCB3aGVuCiAgICAgICAqICAgYW4gaW5zdGFuY2UgcHJvcGVydHkgY2hhbmdlcy4gIFVzZXJzIG1heSBjaG9vc2UgdG8gY2FsbCBgbm90aWZ5UGF0aGAKICAgICAgICogICBvbiBlLmcuIHRoZSBvd25lciB0byBub3RpZnkgdGhlIGNoYW5nZS4KICAgICAgICogLSBgcGFyZW50TW9kZWxgOiBXaGVuIGB0cnVlYCwgZXZlbnRzIGhhbmRsZWQgYnkgZGVjbGFyYXRpdmUgZXZlbnQgbGlzdGVuZXJzCiAgICAgICAqICAgKGBvbi1ldmVudD0iaGFuZGxlciJgKSB3aWxsIGJlIGRlY29yYXRlZCB3aXRoIGEgYG1vZGVsYCBwcm9wZXJ0eSBwb2ludGluZwogICAgICAgKiAgIHRvIHRoZSB0ZW1wbGF0ZSBpbnN0YW5jZSB0aGF0IHN0YW1wZWQgaXQuICBJdCB3aWxsIGFsc28gYmUgcmV0dXJuZWQKICAgICAgICogICBmcm9tIGBpbnN0YW5jZS5wYXJlbnRNb2RlbGAgaW4gY2FzZXMgd2hlcmUgdGVtcGxhdGUgaW5zdGFuY2UgbmVzdGluZwogICAgICAgKiAgIGNhdXNlcyBhbiBpbm5lciBtb2RlbCB0byBzaGFkb3cgYW4gb3V0ZXIgbW9kZWwuCiAgICAgICAqCiAgICAgICAqIEFsbCBjYWxsYmFja3MgYXJlIGNhbGxlZCBib3VuZCB0byB0aGUgYG93bmVyYC4gQW55IGNvbnRleHQKICAgICAgICogbmVlZGVkIGZvciB0aGUgY2FsbGJhY2tzIChzdWNoIGFzIHJlZmVyZW5jZXMgdG8gYGluc3RhbmNlc2Agc3RhbXBlZCkKICAgICAgICogc2hvdWxkIGJlIHN0b3JlZCBvbiB0aGUgYG93bmVyYCBzdWNoIHRoYXQgdGhleSBjYW4gYmUgcmV0cmlldmVkIHZpYQogICAgICAgKiBgdGhpc2AuCiAgICAgICAqCiAgICAgICAqIFdoZW4gYG9wdGlvbnMuZm9yd2FyZEhvc3RQcm9wYCBpcyBkZWNsYXJlZCBhcyBhbiBvcHRpb24sIGFueSBwcm9wZXJ0aWVzCiAgICAgICAqIHJlZmVyZW5jZWQgaW4gdGhlIHRlbXBsYXRlIHdpbGwgYmUgYXV0b21hdGljYWxseSBmb3J3YXJkZWQgZnJvbSB0aGUgaG9zdCBvZgogICAgICAgKiB0aGUgYDx0ZW1wbGF0ZT5gIHRvIGluc3RhbmNlcywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFueSBwcm9wZXJ0aWVzIGxpc3RlZCBpbgogICAgICAgKiB0aGUgYG9wdGlvbnMuaW5zdGFuY2VQcm9wc2Agb2JqZWN0LiAgYGluc3RhbmNlUHJvcHNgIGFyZSBhc3N1bWVkIHRvIGJlCiAgICAgICAqIG1hbmFnZWQgYnkgdGhlIG93bmVyIG9mIHRoZSBpbnN0YW5jZXMsIGVpdGhlciBwYXNzZWQgaW50byB0aGUgY29uc3RydWN0b3IKICAgICAgICogb3Igc2V0IGFmdGVyIHRoZSBmYWN0LiAgTm90ZSwgYW55IHByb3BlcnRpZXMgcGFzc2VkIGludG8gdGhlIGNvbnN0cnVjdG9yIHdpbGwKICAgICAgICogYWx3YXlzIGJlIHNldCB0byB0aGUgaW5zdGFuY2UgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IHdvdWxkIG5vcm1hbGx5CiAgICAgICAqIGJlIGZvcndhcmRlZCBmcm9tIHRoZSBob3N0KS4KICAgICAgICoKICAgICAgICogTm90ZSB0aGF0IGB0ZW1wbGF0aXplKClgIGNhbiBiZSBydW4gb25seSBvbmNlIGZvciBhIGdpdmVuIGA8dGVtcGxhdGU+YC4KICAgICAgICogRnVydGhlciBjYWxscyB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4gQWxzbywgdGhlcmUgaXMgYSBzcGVjaWFsCiAgICAgICAqIGJlaGF2aW9yIGlmIHRoZSB0ZW1wbGF0ZSB3YXMgZHVwbGljYXRlZCB0aHJvdWdoIGEgbWVjaGFuaXNtIHN1Y2ggYXMKICAgICAgICogYDxkb20tcmVwZWF0PmAgb3IgYDx0ZXN0LWZpeHR1cmU+YC4gSW4gdGhpcyBjYXNlLCBhbGwgY2FsbHMgdG8KICAgICAgICogYHRlbXBsYXRpemUoKWAgcmV0dXJuIHRoZSBzYW1lIGNsYXNzIGZvciBhbGwgZHVwbGljYXRlcyBvZiBhIHRlbXBsYXRlLgogICAgICAgKiBUaGUgY2xhc3MgcmV0dXJuZWQgZnJvbSBgdGVtcGxhdGl6ZSgpYCBpcyBnZW5lcmF0ZWQgb25seSBvbmNlIHVzaW5nCiAgICAgICAqIHRoZSBgb3B0aW9uc2AgZnJvbSB0aGUgZmlyc3QgY2FsbC4gVGhpcyBtZWFucyB0aGF0IGFueSBgb3B0aW9uc2AKICAgICAgICogcHJvdmlkZWQgdG8gc3Vic2VxdWVudCBjYWxscyB3aWxsIGJlIGlnbm9yZWQuIFRoZXJlZm9yZSwgaXQgaXMgdmVyeQogICAgICAgKiBpbXBvcnRhbnQgbm90IHRvIGNsb3NlIG92ZXIgYW55IHZhcmlhYmxlcyBpbnNpZGUgdGhlIGNhbGxiYWNrcy4gQWxzbywKICAgICAgICogYXJyb3cgZnVuY3Rpb25zIG11c3QgYmUgYXZvaWRlZCBiZWNhdXNlIHRoZXkgYmluZCB0aGUgb3V0ZXIgYHRoaXNgLgogICAgICAgKiBJbnNpZGUgdGhlIGNhbGxiYWNrcywgYW55IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gY2FuIGJlIGFjY2Vzc2VkCiAgICAgICAqIHRocm91Z2ggYHRoaXNgLCB3aGljaCBwb2ludHMgdG8gdGhlIGBvd25lcmAuCiAgICAgICAqCiAgICAgICAqIEBtZW1iZXJvZiBQb2x5bWVyLlRlbXBsYXRpemUKICAgICAgICogQHBhcmFtIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGVtcGxhdGUgdG8gdGVtcGxhdGl6ZQogICAgICAgKiBAcGFyYW0ge1BvbHltZXJfUHJvcGVydHlFZmZlY3RzPX0gb3duZXIgT3duZXIgb2YgdGhlIHRlbXBsYXRlIGluc3RhbmNlczsKICAgICAgICogICBhbnkgb3B0aW9uYWwgY2FsbGJhY2tzIHdpbGwgYmUgYm91bmQgdG8gdGhpcyBvd25lci4KICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBvcHRpb25zIE9wdGlvbnMgZGljdGlvbmFyeSAoc2VlIHN1bW1hcnkgZm9yIGRldGFpbHMpCiAgICAgICAqIEByZXR1cm4ge2Z1bmN0aW9uKG5ldzpUZW1wbGF0ZUluc3RhbmNlQmFzZSl9IEdlbmVyYXRlZCBjbGFzcyBib3VuZCB0byB0aGUgdGVtcGxhdGUKICAgICAgICogICBwcm92aWRlZAogICAgICAgKiBAc3VwcHJlc3Mge2ludmFsaWRDYXN0c30KICAgICAgICovCiAgICAgIHRlbXBsYXRpemUodGVtcGxhdGUsIG93bmVyLCBvcHRpb25zKSB7CiAgICAgICAgLy8gVW5kZXIgc3RyaWN0VGVtcGxhdGVQb2xpY3ksIHRoZSB0ZW1wbGF0aXplZCBlbGVtZW50IG11c3QgYmUgb3duZWQKICAgICAgICAvLyBieSBhICh0cnVzdGVkKSBQb2x5bWVyIGVsZW1lbnQsIGluZGljYXRlZCBieSBleGlzdGVuY2Ugb2YgX21ldGhvZEhvc3Q7CiAgICAgICAgLy8gZS5nLiBmb3IgZG9tLWlmICYgZG9tLXJlcGVhdCBpbiBtYWluIGRvY3VtZW50LCBfbWV0aG9kSG9zdCBpcyBudWxsCiAgICAgICAgaWYgKFBvbHltZXIuc3RyaWN0VGVtcGxhdGVQb2xpY3kgJiYgIWZpbmRNZXRob2RIb3N0KHRlbXBsYXRlKSkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdHJpY3RUZW1wbGF0ZVBvbGljeTogdGVtcGxhdGUgb3duZXIgbm90IHRydXN0ZWQnKTsKICAgICAgICB9CiAgICAgICAgb3B0aW9ucyA9IC8qKiBAdHlwZSB7IVRlbXBsYXRpemVPcHRpb25zfSAqLyhvcHRpb25zIHx8IHt9KTsKICAgICAgICBpZiAodGVtcGxhdGUuX190ZW1wbGF0aXplT3duZXIpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQSA8dGVtcGxhdGU+IGNhbiBvbmx5IGJlIHRlbXBsYXRpemVkIG9uY2UnKTsKICAgICAgICB9CiAgICAgICAgdGVtcGxhdGUuX190ZW1wbGF0aXplT3duZXIgPSBvd25lcjsKICAgICAgICBjb25zdCBjdG9yID0gb3duZXIgPyBvd25lci5jb25zdHJ1Y3RvciA6IFRlbXBsYXRlSW5zdGFuY2VCYXNlOwogICAgICAgIGxldCB0ZW1wbGF0ZUluZm8gPSBjdG9yLl9wYXJzZVRlbXBsYXRlKHRlbXBsYXRlKTsKICAgICAgICAvLyBHZXQgbWVtb2l6ZWQgYmFzZSBjbGFzcyBmb3IgdGhlIHByb3RvdHlwaWNhbCB0ZW1wbGF0ZSwgd2hpY2gKICAgICAgICAvLyBpbmNsdWRlcyBwcm9wZXJ0eSBlZmZlY3RzIGZvciBiaW5kaW5nIHRlbXBsYXRlICYgZm9yd2FyZGluZwogICAgICAgIGxldCBiYXNlQ2xhc3MgPSB0ZW1wbGF0ZUluZm8udGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3M7CiAgICAgICAgaWYgKCFiYXNlQ2xhc3MpIHsKICAgICAgICAgIGJhc2VDbGFzcyA9IGNyZWF0ZVRlbXBsYXRpemVyQ2xhc3ModGVtcGxhdGUsIHRlbXBsYXRlSW5mbywgb3B0aW9ucyk7CiAgICAgICAgICB0ZW1wbGF0ZUluZm8udGVtcGxhdGl6ZUluc3RhbmNlQ2xhc3MgPSBiYXNlQ2xhc3M7CiAgICAgICAgfQogICAgICAgIC8vIEhvc3QgcHJvcGVydHkgZm9yd2FyZGluZyBtdXN0IGJlIGluc3RhbGxlZCBvbnRvIHRlbXBsYXRlIGluc3RhbmNlCiAgICAgICAgYWRkUHJvcGFnYXRlRWZmZWN0cyh0ZW1wbGF0ZSwgdGVtcGxhdGVJbmZvLCBvcHRpb25zKTsKICAgICAgICAvLyBTdWJjbGFzcyBiYXNlIGNsYXNzIGFuZCBhZGQgcmVmZXJlbmNlIGZvciB0aGlzIHNwZWNpZmljIHRlbXBsYXRlCiAgICAgICAgLyoqIEBwcml2YXRlICovCiAgICAgICAgbGV0IGtsYXNzID0gY2xhc3MgVGVtcGxhdGVJbnN0YW5jZSBleHRlbmRzIGJhc2VDbGFzcyB7fTsKICAgICAgICBrbGFzcy5wcm90b3R5cGUuX21ldGhvZEhvc3QgPSBmaW5kTWV0aG9kSG9zdCh0ZW1wbGF0ZSk7CiAgICAgICAga2xhc3MucHJvdG90eXBlLl9fZGF0YUhvc3QgPSB0ZW1wbGF0ZTsKICAgICAgICBrbGFzcy5wcm90b3R5cGUuX190ZW1wbGF0aXplT3duZXIgPSBvd25lcjsKICAgICAgICBrbGFzcy5wcm90b3R5cGUuX19ob3N0UHJvcHMgPSB0ZW1wbGF0ZUluZm8uaG9zdFByb3BzOwogICAgICAgIGtsYXNzID0gLyoqIEB0eXBlIHtmdW5jdGlvbihuZXc6VGVtcGxhdGVJbnN0YW5jZUJhc2UpfSAqLyhrbGFzcyk7IC8vZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWFzc2lnbgogICAgICAgIHJldHVybiBrbGFzczsKICAgICAgfSwKCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSAibW9kZWwiIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGVsZW1lbnQsIHdoaWNoCiAgICAgICAqIHNlcnZlcyBhcyB0aGUgYmluZGluZyBzY29wZSBmb3IgdGhlIHRlbXBsYXRlIGluc3RhbmNlIHRoZSBlbGVtZW50IGlzCiAgICAgICAqIGNvbnRhaW5lZCBpbi4gQSB0ZW1wbGF0ZSBtb2RlbCBpcyBhbiBpbnN0YW5jZSBvZgogICAgICAgKiBgVGVtcGxhdGVJbnN0YW5jZUJhc2VgLCBhbmQgc2hvdWxkIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSBkYXRhCiAgICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlbXBsYXRlIGluc3RhbmNlLgogICAgICAgKgogICAgICAgKiBFeGFtcGxlOgogICAgICAgKgogICAgICAgKiAgIGxldCBtb2RlbCA9IG1vZGVsRm9yRWxlbWVudChlbCk7CiAgICAgICAqICAgaWYgKG1vZGVsLmluZGV4IDwgMTApIHsKICAgICAgICogICAgIG1vZGVsLnNldCgnaXRlbS5jaGVja2VkJywgdHJ1ZSk7CiAgICAgICAqICAgfQogICAgICAgKgogICAgICAgKiBAbWVtYmVyb2YgUG9seW1lci5UZW1wbGF0aXplCiAgICAgICAqIEBwYXJhbSB7SFRNTFRlbXBsYXRlRWxlbWVudH0gdGVtcGxhdGUgVGhlIG1vZGVsIHdpbGwgYmUgcmV0dXJuZWQgZm9yCiAgICAgICAqICAgZWxlbWVudHMgc3RhbXBlZCBmcm9tIHRoaXMgdGVtcGxhdGUKICAgICAgICogQHBhcmFtIHtOb2RlPX0gbm9kZSBOb2RlIGZvciB3aGljaCB0byByZXR1cm4gYSB0ZW1wbGF0ZSBtb2RlbC4KICAgICAgICogQHJldHVybiB7VGVtcGxhdGVJbnN0YW5jZUJhc2V9IFRlbXBsYXRlIGluc3RhbmNlIHJlcHJlc2VudGluZyB0aGUKICAgICAgICogICBiaW5kaW5nIHNjb3BlIGZvciB0aGUgZWxlbWVudAogICAgICAgKi8KICAgICAgbW9kZWxGb3JFbGVtZW50KHRlbXBsYXRlLCBub2RlKSB7CiAgICAgICAgbGV0IG1vZGVsOwogICAgICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAvLyBBbiBlbGVtZW50IHdpdGggYSBfX3RlbXBsYXRpemVJbnN0YW5jZSBtYXJrcyB0aGUgdG9wIGJvdW5kYXJ5CiAgICAgICAgICAvLyBvZiBhIHNjb3BlOyB3YWxrIHVwIHVudGlsIHdlIGZpbmQgb25lLCBhbmQgdGhlbiBlbnN1cmUgdGhhdAogICAgICAgICAgLy8gaXRzIF9fZGF0YUhvc3QgbWF0Y2hlcyBgdGhpc2AsIG1lYW5pbmcgdGhpcyBkb20tcmVwZWF0IHN0YW1wZWQgaXQKICAgICAgICAgIGlmICgobW9kZWwgPSBub2RlLl9fdGVtcGxhdGl6ZUluc3RhbmNlKSkgewogICAgICAgICAgICAvLyBGb3VuZCBhbiBlbGVtZW50IHN0YW1wZWQgYnkgYW5vdGhlciB0ZW1wbGF0ZTsga2VlcCB3YWxraW5nIHVwCiAgICAgICAgICAgIC8vIGZyb20gaXRzIF9fZGF0YUhvc3QKICAgICAgICAgICAgaWYgKG1vZGVsLl9fZGF0YUhvc3QgIT0gdGVtcGxhdGUpIHsKICAgICAgICAgICAgICBub2RlID0gbW9kZWwuX19kYXRhSG9zdDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gbW9kZWw7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFN0aWxsIGluIGEgdGVtcGxhdGUgc2NvcGUsIGtlZXAgZ29pbmcgdXAgdW50aWwKICAgICAgICAgICAgLy8gYSBfX3RlbXBsYXRpemVJbnN0YW5jZSBpcyBmb3VuZAogICAgICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgfQogICAgfTsKCiAgICBQb2x5bWVyLlRlbXBsYXRlSW5zdGFuY2VCYXNlID0gVGVtcGxhdGVJbnN0YW5jZUJhc2U7CgogIH0pKCk7CgoKCiAgKGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIGxldCBUZW1wbGF0ZUluc3RhbmNlQmFzZSA9IFBvbHltZXIuVGVtcGxhdGVJbnN0YW5jZUJhc2U7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUKCiAgICAvKioKICAgICAqIEB0eXBlZGVmIHt7CiAgICAgKiAgIF90ZW1wbGF0aXplclRlbXBsYXRlOiBIVE1MVGVtcGxhdGVFbGVtZW50LAogICAgICogICBfcGFyZW50TW9kZWw6IGJvb2xlYW4sCiAgICAgKiAgIF9pbnN0YW5jZVByb3BzOiBPYmplY3QsCiAgICAgKiAgIF9mb3J3YXJkSG9zdFByb3BWMjogRnVuY3Rpb24sCiAgICAgKiAgIF9ub3RpZnlJbnN0YW5jZVByb3BWMjogRnVuY3Rpb24sCiAgICAgKiAgIGN0b3I6IFRlbXBsYXRlSW5zdGFuY2VCYXNlCiAgICAgKiB9fQogICAgICovCiAgICBsZXQgVGVtcGxhdGl6ZXJVc2VyOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lCgogICAgLyoqCiAgICAgKiBUaGUgYFBvbHltZXIuVGVtcGxhdGl6ZXJgIGJlaGF2aW9yIGFkZHMgbWV0aG9kcyB0byBnZW5lcmF0ZSBpbnN0YW5jZXMgb2YKICAgICAqIHRlbXBsYXRlcyB0aGF0IGFyZSBlYWNoIG1hbmFnZWQgYnkgYW4gYW5vbnltb3VzIGBQb2x5bWVyLlByb3BlcnR5RWZmZWN0c2AKICAgICAqIGluc3RhbmNlIHdoZXJlIGRhdGEtYmluZGluZ3MgaW4gdGhlIHN0YW1wZWQgdGVtcGxhdGUgY29udGVudCBhcmUgYm91bmQgdG8KICAgICAqIGFjY2Vzc29ycyBvbiBpdHNlbGYuCiAgICAgKgogICAgICogVGhpcyBiZWhhdmlvciBpcyBwcm92aWRlZCBpbiBQb2x5bWVyIDIueCBhcyBhIGh5YnJpZC1lbGVtZW50IGNvbnZlbmllbmNlCiAgICAgKiBvbmx5LiAgRm9yIG5vbi1oeWJyaWQgdXNhZ2UsIHRoZSBgUG9seW1lci5UZW1wbGF0aXplYCBsaWJyYXJ5CiAgICAgKiBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgogICAgICoKICAgICAqIEV4YW1wbGU6CiAgICAgKgogICAgICogICAgIC8vIEdldCBhIHRlbXBsYXRlIGZyb20gc29tZXdoZXJlLCBlLmcuIGxpZ2h0IERPTQogICAgICogICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKTsKICAgICAqICAgICAvLyBQcmVwYXJlIHRoZSB0ZW1wbGF0ZQogICAgICogICAgIHRoaXMudGVtcGxhdGl6ZSh0ZW1wbGF0ZSk7CiAgICAgKiAgICAgLy8gSW5zdGFuY2UgdGhlIHRlbXBsYXRlIHdpdGggYW4gaW5pdGlhbCBkYXRhIG1vZGVsCiAgICAgKiAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5zdGFtcCh7bXlQcm9wOiAnaW5pdGlhbCd9KTsKICAgICAqICAgICAvLyBJbnNlcnQgdGhlIGluc3RhbmNlJ3MgRE9NIHNvbWV3aGVyZSwgZS5nLiBsaWdodCBET00KICAgICAqICAgICBQb2x5bWVyLmRvbSh0aGlzKS5hcHBlbmRDaGlsZChpbnN0YW5jZS5yb290KTsKICAgICAqICAgICAvLyBDaGFuZ2luZyBhIHByb3BlcnR5IG9uIHRoZSBpbnN0YW5jZSB3aWxsIHByb3BhZ2F0ZSB0byBiaW5kaW5ncwogICAgICogICAgIC8vIGluIHRoZSB0ZW1wbGF0ZQogICAgICogICAgIGluc3RhbmNlLm15UHJvcCA9ICduZXcgdmFsdWUnOwogICAgICoKICAgICAqIFVzZXJzIG9mIGBUZW1wbGF0aXplcmAgbWF5IG5lZWQgdG8gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgYWJzdHJhY3QKICAgICAqIEFQSSdzIHRvIGRldGVybWluZSBob3cgcHJvcGVydGllcyBhbmQgcGF0aHMgZnJvbSB0aGUgaG9zdCBzaG91bGQgYmUKICAgICAqIGZvcndhcmRlZCBpbnRvIHRvIGluc3RhbmNlczoKICAgICAqCiAgICAgKiAgICAgX2ZvcndhcmRIb3N0UHJvcFYyOiBmdW5jdGlvbihwcm9wLCB2YWx1ZSkKICAgICAqCiAgICAgKiBMaWtld2lzZSwgdXNlcnMgbWF5IGltcGxlbWVudCB0aGVzZSBhZGRpdGlvbmFsIGFic3RyYWN0IEFQSSdzIHRvIGRldGVybWluZQogICAgICogaG93IGluc3RhbmNlLXNwZWNpZmljIHByb3BlcnRpZXMgdGhhdCBjaGFuZ2Ugb24gdGhlIGluc3RhbmNlIHNob3VsZCBiZQogICAgICogZm9yd2FyZGVkIG91dCB0byB0aGUgaG9zdCwgaWYgbmVjZXNzYXJ5LgogICAgICoKICAgICAqICAgICBfbm90aWZ5SW5zdGFuY2VQcm9wVjI6IGZ1bmN0aW9uKGluc3QsIHByb3AsIHZhbHVlKQogICAgICoKICAgICAqIEluIG9yZGVyIHRvIGRldGVybWluZSB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbnN0YW5jZS1zcGVjaWZpYyBhbmQgcmVxdWlyZQogICAgICogY3VzdG9tIG5vdGlmaWNhdGlvbiB2aWEgYF9ub3RpZnlJbnN0YW5jZVByb3BgLCBkZWZpbmUgYW4gYF9pbnN0YW5jZVByb3BzYAogICAgICogb2JqZWN0IGNvbnRhaW5pbmcga2V5cyBmb3IgZWFjaCBpbnN0YW5jZSBwcm9wLCBmb3IgZXhhbXBsZToKICAgICAqCiAgICAgKiAgICAgX2luc3RhbmNlUHJvcHM6IHsKICAgICAqICAgICAgIGl0ZW06IHRydWUsCiAgICAgKiAgICAgICBpbmRleDogdHJ1ZQogICAgICogICAgIH0KICAgICAqCiAgICAgKiBBbnkgcHJvcGVydGllcyB1c2VkIGluIHRoZSB0ZW1wbGF0ZSB0aGF0IGFyZSBub3QgZGVmaW5lZCBpbiBfaW5zdGFuY2VQcm9wCiAgICAgKiB3aWxsIGJlIGZvcndhcmRlZCBvdXQgdG8gdGhlIFRlbXBsYXRpemUgYG93bmVyYCBhdXRvbWF0aWNhbGx5LgogICAgICoKICAgICAqIFVzZXJzIG1heSBhbHNvIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIGFic3RyYWN0IGZ1bmN0aW9uIHRvIHNob3cgb3IKICAgICAqIGhpZGUgYW55IERPTSBnZW5lcmF0ZWQgdXNpbmcgYHN0YW1wYDoKICAgICAqCiAgICAgKiAgICAgX3Nob3dIaWRlQ2hpbGRyZW46IGZ1bmN0aW9uKHNob3VsZEhpZGUpCiAgICAgKgogICAgICogTm90ZSB0aGF0IHNvbWUgY2FsbGJhY2tzIGFyZSBzdWZmaXhlZCB3aXRoIGBWMmAgaW4gdGhlIFBvbHltZXIgMi54IGJlaGF2aW9yCiAgICAgKiBhcyB0aGUgaW1wbGVtZW50YXRpb25zIHdpbGwgbmVlZCB0byBkaWZmZXIgZnJvbSB0aGUgY2FsbGJhY2tzIHJlcXVpcmVkCiAgICAgKiBieSB0aGUgMS54IFRlbXBsYXRpemVyIEFQSSBkdWUgdG8gY2hhbmdlcyBpbiB0aGUgYFRlbXBsYXRlSW5zdGFuY2VgIEFQSQogICAgICogYmV0d2VlbiB2ZXJzaW9ucyAxLnggYW5kIDIueC4KICAgICAqCiAgICAgKiBAcG9seW1lckJlaGF2aW9yCiAgICAgKi8KICAgIFBvbHltZXIuVGVtcGxhdGl6ZXIgPSB7CgogICAgICAvKioKICAgICAgICogR2VuZXJhdGVzIGFuIGFub255bW91cyBgVGVtcGxhdGVJbnN0YW5jZWAgY2xhc3MgKHN0b3JlZCBhcyBgdGhpcy5jdG9yYCkKICAgICAgICogZm9yIHRoZSBwcm92aWRlZCB0ZW1wbGF0ZS4gIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgb25jZSBwZXIKICAgICAgICogdGVtcGxhdGUgdG8gcHJlcGFyZSBhbiBlbGVtZW50IGZvciBzdGFtcGluZyB0aGUgdGVtcGxhdGUsIGZvbGxvd2VkCiAgICAgICAqIGJ5IGBzdGFtcGAgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgb2YgdGhlIHRlbXBsYXRlLgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyFIVE1MVGVtcGxhdGVFbGVtZW50fSB0ZW1wbGF0ZSBUZW1wbGF0ZSB0byBwcmVwYXJlCiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG11dGFibGVEYXRhIFdoZW4gYHRydWVgLCB0aGUgZ2VuZXJhdGVkIGNsYXNzIHdpbGwgc2tpcAogICAgICAgKiAgIHN0cmljdCBkaXJ0eS1jaGVja2luZyBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzIChhbHdheXMgY29uc2lkZXIgdGhlbSB0bwogICAgICAgKiAgIGJlICJkaXJ0eSIpLiBEZWZhdWx0cyB0byBmYWxzZS4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICogQHRoaXMge1RlbXBsYXRpemVyVXNlcn0KICAgICAgICovCiAgICAgIHRlbXBsYXRpemUodGVtcGxhdGUsIG11dGFibGVEYXRhKSB7CiAgICAgICAgdGhpcy5fdGVtcGxhdGl6ZXJUZW1wbGF0ZSA9IHRlbXBsYXRlOwogICAgICAgIHRoaXMuY3RvciA9IFBvbHltZXIuVGVtcGxhdGl6ZS50ZW1wbGF0aXplKHRlbXBsYXRlLCB0aGlzLCB7CiAgICAgICAgICBtdXRhYmxlRGF0YTogQm9vbGVhbihtdXRhYmxlRGF0YSksCiAgICAgICAgICBwYXJlbnRNb2RlbDogdGhpcy5fcGFyZW50TW9kZWwsCiAgICAgICAgICBpbnN0YW5jZVByb3BzOiB0aGlzLl9pbnN0YW5jZVByb3BzLAogICAgICAgICAgZm9yd2FyZEhvc3RQcm9wOiB0aGlzLl9mb3J3YXJkSG9zdFByb3BWMiwKICAgICAgICAgIG5vdGlmeUluc3RhbmNlUHJvcDogdGhpcy5fbm90aWZ5SW5zdGFuY2VQcm9wVjIKICAgICAgICB9KTsKICAgICAgfSwKCiAgICAgIC8qKgogICAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSB0ZW1wbGF0ZSBwcmVwYXJlZCBieSBgdGVtcGxhdGl6ZWAuICBUaGUgb2JqZWN0CiAgICAgICAqIHJldHVybmVkIGlzIGFuIGluc3RhbmNlIG9mIHRoZSBhbm9ueW1vdXMgY2xhc3MgZ2VuZXJhdGVkIGJ5IGB0ZW1wbGF0aXplYAogICAgICAgKiB3aG9zZSBgcm9vdGAgcHJvcGVydHkgaXMgYSBkb2N1bWVudCBmcmFnbWVudCBjb250YWluaW5nIG5ld2x5IGNsb25lZAogICAgICAgKiB0ZW1wbGF0ZSBjb250ZW50LCBhbmQgd2hpY2ggaGFzIHByb3BlcnR5IGFjY2Vzc29ycyBjb3JyZXNwb25kaW5nIHRvCiAgICAgICAqIHByb3BlcnRpZXMgcmVmZXJlbmNlZCBpbiB0ZW1wbGF0ZSBiaW5kaW5ncy4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtPYmplY3Q9fSBtb2RlbCBPYmplY3QgY29udGFpbmluZyBpbml0aWFsIHByb3BlcnR5IHZhbHVlcyB0bwogICAgICAgKiAgIHBvcHVsYXRlIGludG8gdGhlIHRlbXBsYXRlIGJpbmRpbmdzLgogICAgICAgKiBAcmV0dXJuIHtUZW1wbGF0ZUluc3RhbmNlQmFzZX0gUmV0dXJucyB0aGUgY3JlYXRlZCBpbnN0YW5jZSBvZgogICAgICAgKiB0aGUgdGVtcGxhdGUgcHJlcGFyZWQgYnkgYHRlbXBsYXRpemVgLgogICAgICAgKiBAdGhpcyB7VGVtcGxhdGl6ZXJVc2VyfQogICAgICAgKi8KICAgICAgc3RhbXAobW9kZWwpIHsKICAgICAgICByZXR1cm4gbmV3IHRoaXMuY3Rvcihtb2RlbCk7CiAgICAgIH0sCgogICAgICAvKioKICAgICAgICogUmV0dXJucyB0aGUgdGVtcGxhdGUgIm1vZGVsIiAoYFRlbXBsYXRlSW5zdGFuY2VgKSBhc3NvY2lhdGVkIHdpdGgKICAgICAgICogYSBnaXZlbiBlbGVtZW50LCB3aGljaCBzZXJ2ZXMgYXMgdGhlIGJpbmRpbmcgc2NvcGUgZm9yIHRoZSB0ZW1wbGF0ZQogICAgICAgKiBpbnN0YW5jZSB0aGUgZWxlbWVudCBpcyBjb250YWluZWQgaW4uICBBIHRlbXBsYXRlIG1vZGVsIHNob3VsZCBiZSB1c2VkCiAgICAgICAqIHRvIG1hbmlwdWxhdGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0ZW1wbGF0ZSBpbnN0YW5jZS4KICAgICAgICoKICAgICAgICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWwgRWxlbWVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgdGVtcGxhdGUgbW9kZWwuCiAgICAgICAqIEByZXR1cm4ge1RlbXBsYXRlSW5zdGFuY2VCYXNlfSBNb2RlbCByZXByZXNlbnRpbmcgdGhlIGJpbmRpbmcgc2NvcGUgZm9yCiAgICAgICAqICAgdGhlIGVsZW1lbnQuCiAgICAgICAqIEB0aGlzIHtUZW1wbGF0aXplclVzZXJ9CiAgICAgICAqLwogICAgICBtb2RlbEZvckVsZW1lbnQoZWwpIHsKICAgICAgICByZXR1cm4gUG9seW1lci5UZW1wbGF0aXplLm1vZGVsRm9yRWxlbWVudCh0aGlzLl90ZW1wbGF0aXplclRlbXBsYXRlLCBlbCk7CiAgICAgIH0KICAgIH07CgogIH0pKCk7CgoKCiAgKGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qKgogICAgICogQGNvbnN0cnVjdG9yCiAgICAgKiBAZXh0ZW5kcyB7SFRNTEVsZW1lbnR9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9Qcm9wZXJ0eUVmZmVjdHN9CiAgICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9PcHRpb25hbE11dGFibGVEYXRhfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfR2VzdHVyZUV2ZW50TGlzdGVuZXJzfQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgY29uc3QgZG9tQmluZEJhc2UgPQogICAgICBQb2x5bWVyLkdlc3R1cmVFdmVudExpc3RlbmVycygKICAgICAgICBQb2x5bWVyLk9wdGlvbmFsTXV0YWJsZURhdGEoCiAgICAgICAgICBQb2x5bWVyLlByb3BlcnR5RWZmZWN0cyhIVE1MRWxlbWVudCkpKTsKCiAgICAvKioKICAgICAqIEN1c3RvbSBlbGVtZW50IHRvIGFsbG93IHVzaW5nIFBvbHltZXIncyB0ZW1wbGF0ZSBmZWF0dXJlcyAoZGF0YSBiaW5kaW5nLAogICAgICogZGVjbGFyYXRpdmUgZXZlbnQgbGlzdGVuZXJzLCBldGMuKSBpbiB0aGUgbWFpbiBkb2N1bWVudCB3aXRob3V0IGRlZmluaW5nCiAgICAgKiBhIG5ldyBjdXN0b20gZWxlbWVudC4KICAgICAqCiAgICAgKiBgPHRlbXBsYXRlPmAgdGFncyB1dGlsaXppbmcgYmluZGluZ3MgbWF5IGJlIHdyYXBwZWQgd2l0aCB0aGUgYDxkb20tYmluZD5gCiAgICAgKiBlbGVtZW50LCB3aGljaCB3aWxsIGltbWVkaWF0ZWx5IHN0YW1wIHRoZSB3cmFwcGVkIHRlbXBsYXRlIGludG8gdGhlIG1haW4KICAgICAqIGRvY3VtZW50IGFuZCBiaW5kIGVsZW1lbnRzIHRvIHRoZSBgZG9tLWJpbmRgIGVsZW1lbnQgaXRzZWxmIGFzIHRoZQogICAgICogYmluZGluZyBzY29wZS4KICAgICAqCiAgICAgKiBAcG9seW1lcgogICAgICogQGN1c3RvbUVsZW1lbnQKICAgICAqIEBhcHBsaWVzTWl4aW4gUG9seW1lci5Qcm9wZXJ0eUVmZmVjdHMKICAgICAqIEBhcHBsaWVzTWl4aW4gUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhCiAgICAgKiBAYXBwbGllc01peGluIFBvbHltZXIuR2VzdHVyZUV2ZW50TGlzdGVuZXJzCiAgICAgKiBAZXh0ZW5kcyB7ZG9tQmluZEJhc2V9CiAgICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAgICogQHN1bW1hcnkgQ3VzdG9tIGVsZW1lbnQgdG8gYWxsb3cgdXNpbmcgUG9seW1lcidzIHRlbXBsYXRlIGZlYXR1cmVzIChkYXRhCiAgICAgKiAgIGJpbmRpbmcsIGRlY2xhcmF0aXZlIGV2ZW50IGxpc3RlbmVycywgZXRjLikgaW4gdGhlIG1haW4gZG9jdW1lbnQuCiAgICAgKi8KICAgIGNsYXNzIERvbUJpbmQgZXh0ZW5kcyBkb21CaW5kQmFzZSB7CgogICAgICBzdGF0aWMgZ2V0IG9ic2VydmVkQXR0cmlidXRlcygpIHsgcmV0dXJuIFsnbXV0YWJsZS1kYXRhJ107IH0KCiAgICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgIHN1cGVyKCk7CiAgICAgICAgaWYgKFBvbHltZXIuc3RyaWN0VGVtcGxhdGVQb2xpY3kpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgc3RyaWN0VGVtcGxhdGVQb2xpY3k6IGRvbS1iaW5kIG5vdCBhbGxvd2VkYCk7CiAgICAgICAgfQogICAgICAgIHRoaXMucm9vdCA9IG51bGw7CiAgICAgICAgdGhpcy4kID0gbnVsbDsKICAgICAgICB0aGlzLl9fY2hpbGRyZW4gPSBudWxsOwogICAgICB9CgogICAgICAvKiogQHJldHVybiB7dm9pZH0gKi8KICAgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKCkgewogICAgICAgIC8vIGFzc3VtZXMgb25seSBvbmUgb2JzZXJ2ZWQgYXR0cmlidXRlCiAgICAgICAgdGhpcy5tdXRhYmxlRGF0YSA9IHRydWU7CiAgICAgIH0KCiAgICAgIC8qKiBAcmV0dXJuIHt2b2lkfSAqLwogICAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICAgfQoKICAgICAgLyoqIEByZXR1cm4ge3ZvaWR9ICovCiAgICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICAgIHRoaXMuX19yZW1vdmVDaGlsZHJlbigpOwogICAgICB9CgogICAgICBfX2luc2VydENoaWxkcmVuKCkgewogICAgICAgIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5yb290LCB0aGlzKTsKICAgICAgfQoKICAgICAgX19yZW1vdmVDaGlsZHJlbigpIHsKICAgICAgICBpZiAodGhpcy5fX2NoaWxkcmVuKSB7CiAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5fX2NoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLl9fY2hpbGRyZW5baV0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIEZvcmNlcyB0aGUgZWxlbWVudCB0byByZW5kZXIgaXRzIGNvbnRlbnQuIFRoaXMgaXMgdHlwaWNhbGx5IG9ubHkKICAgICAgICogbmVjZXNzYXJ5IHRvIGNhbGwgaWYgSFRNTEltcG9ydHMgd2l0aCB0aGUgYXN5bmMgYXR0cmlidXRlIGFyZSB1c2VkLgogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgcmVuZGVyKCkgewogICAgICAgIGxldCB0ZW1wbGF0ZTsKICAgICAgICBpZiAoIXRoaXMuX19jaGlsZHJlbikgewogICAgICAgICAgdGVtcGxhdGUgPSAvKiogQHR5cGUge0hUTUxUZW1wbGF0ZUVsZW1lbnR9ICovKHRlbXBsYXRlIHx8IHRoaXMucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKSk7CiAgICAgICAgICBpZiAoIXRlbXBsYXRlKSB7CiAgICAgICAgICAgIC8vIFdhaXQgdW50aWwgY2hpbGRMaXN0IGNoYW5nZXMgYW5kIHRlbXBsYXRlIHNob3VsZCBiZSB0aGVyZSBieSB0aGVuCiAgICAgICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHsKICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IC8qKiBAdHlwZSB7SFRNTFRlbXBsYXRlRWxlbWVudH0gKi8odGhpcy5xdWVyeVNlbGVjdG9yKCd0ZW1wbGF0ZScpKTsKICAgICAgICAgICAgICBpZiAodGVtcGxhdGUpIHsKICAgICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZG9tLWJpbmQgcmVxdWlyZXMgYSA8dGVtcGxhdGU+IGNoaWxkJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLCB7Y2hpbGRMaXN0OiB0cnVlfSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMucm9vdCA9IHRoaXMuX3N0YW1wVGVtcGxhdGUodGVtcGxhdGUpOwogICAgICAgICAgdGhpcy4kID0gdGhpcy5yb290LiQ7CiAgICAgICAgICB0aGlzLl9fY2hpbGRyZW4gPSBbXTsKICAgICAgICAgIGZvciAobGV0IG49dGhpcy5yb290LmZpcnN0Q2hpbGQ7IG47IG49bi5uZXh0U2libGluZykgewogICAgICAgICAgICB0aGlzLl9fY2hpbGRyZW5bdGhpcy5fX2NoaWxkcmVuLmxlbmd0aF0gPSBuOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5fZW5hYmxlUHJvcGVydGllcygpOwogICAgICAgIH0KICAgICAgICB0aGlzLl9faW5zZXJ0Q2hpbGRyZW4oKTsKICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkb20tY2hhbmdlJywgewogICAgICAgICAgYnViYmxlczogdHJ1ZSwKICAgICAgICAgIGNvbXBvc2VkOiB0cnVlCiAgICAgICAgfSkpOwogICAgICB9CgogICAgfQoKICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZG9tLWJpbmQnLCBEb21CaW5kKTsKCiAgICAvKiogQGNvbnN0ICovCiAgICBQb2x5bWVyLkRvbUJpbmQgPSBEb21CaW5kOwoKICB9KSgpOwoKCgogIChmdW5jdGlvbigpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKioKICAgICAqIENsYXNzIHJlcHJlc2VudGluZyBhIHN0YXRpYyBzdHJpbmcgdmFsdWUgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZmlsdGVyCiAgICAgKiBzdHJpbmdzIGJ5IGFzc2V0aW5nIHRoYXQgdGhleSBoYXZlIGJlZW4gY3JlYXRlZCB2aWEgdGhpcyBjbGFzcy4gVGhlCiAgICAgKiBgdmFsdWVgIHByb3BlcnR5IHJldHVybnMgdGhlIHN0cmluZyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLgogICAgICovCiAgICBjbGFzcyBMaXRlcmFsU3RyaW5nIHsKICAgICAgY29uc3RydWN0b3Ioc3RyaW5nKSB7CiAgICAgICAgLyoqIEB0eXBlIHtzdHJpbmd9ICovCiAgICAgICAgdGhpcy52YWx1ZSA9IHN0cmluZy50b1N0cmluZygpOwogICAgICB9CiAgICAgIC8qKgogICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IExpdGVyYWxTdHJpbmcgc3RyaW5nIHZhbHVlCiAgICAgICAqLwogICAgICB0b1N0cmluZygpIHsKICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHsqfSB2YWx1ZSBPYmplY3QgdG8gc3RyaW5naWZ5IGludG8gSFRNTAogICAgICogQHJldHVybiB7c3RyaW5nfSBIVE1MIHN0cmluZ2lmaWVkIGZvcm0gb2YgYG9iamAKICAgICAqLwogICAgZnVuY3Rpb24gbGl0ZXJhbFZhbHVlKHZhbHVlKSB7CiAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIExpdGVyYWxTdHJpbmcpIHsKICAgICAgICByZXR1cm4gLyoqIEB0eXBlIHshTGl0ZXJhbFN0cmluZ30gKi8odmFsdWUpLnZhbHVlOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgbm9uLWxpdGVyYWwgdmFsdWUgcGFzc2VkIHRvIFBvbHltZXIuaHRtbExpdGVyYWw6ICR7dmFsdWV9YCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgT2JqZWN0IHRvIHN0cmluZ2lmeSBpbnRvIEhUTUwKICAgICAqIEByZXR1cm4ge3N0cmluZ30gSFRNTCBzdHJpbmdpZmllZCBmb3JtIG9mIGBvYmpgCiAgICAgKi8KICAgIGZ1bmN0aW9uIGh0bWxWYWx1ZSh2YWx1ZSkgewogICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBIVE1MVGVtcGxhdGVFbGVtZW50KSB7CiAgICAgICAgcmV0dXJuIC8qKiBAdHlwZSB7IUhUTUxUZW1wbGF0ZUVsZW1lbnQgfSAqLyh2YWx1ZSkuaW5uZXJIVE1MOwogICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgTGl0ZXJhbFN0cmluZykgewogICAgICAgIHJldHVybiBsaXRlcmFsVmFsdWUodmFsdWUpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcihgbm9uLXRlbXBsYXRlIHZhbHVlIHBhc3NlZCB0byBQb2x5bWVyLmh0bWw6ICR7dmFsdWV9YCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEEgdGVtcGxhdGUgbGl0ZXJhbCB0YWcgdGhhdCBjcmVhdGVzIGFuIEhUTUwgPHRlbXBsYXRlPiBlbGVtZW50IGZyb20gdGhlCiAgICAgKiBjb250ZW50cyBvZiB0aGUgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgYWxsb3dzIHlvdSB0byB3cml0ZSBhIFBvbHltZXIgVGVtcGxhdGUgaW4gSmF2YVNjcmlwdC4KICAgICAqCiAgICAgKiBUZW1wbGF0ZXMgY2FuIGJlIGNvbXBvc2VkIGJ5IGludGVycG9sYXRpbmcgYEhUTUxUZW1wbGF0ZUVsZW1lbnRgcyBpbgogICAgICogZXhwcmVzc2lvbnMgaW4gdGhlIEphdmFTY3JpcHQgdGVtcGxhdGUgbGl0ZXJhbC4gVGhlIG5lc3RlZCB0ZW1wbGF0ZSdzCiAgICAgKiBgaW5uZXJIVE1MYCBpcyBpbmNsdWRlZCBpbiB0aGUgY29udGFpbmluZyB0ZW1wbGF0ZS4gIFRoZSBvbmx5IG90aGVyCiAgICAgKiB2YWx1ZXMgYWxsb3dlZCBpbiBleHByZXNzaW9ucyBhcmUgdGhvc2UgcmV0dXJuZWQgZnJvbSBgUG9seW1lci5odG1sTGl0ZXJhbGAKICAgICAqIHdoaWNoIGVuc3VyZXMgb25seSBsaXRlcmFsIHZhbHVlcyBmcm9tIEpTIHNvdXJjZSBldmVyIHJlYWNoIHRoZSBIVE1MLCB0bwogICAgICogZ3VhcmQgYWdhaW5zdCBYU1Mgcmlza3MuCiAgICAgKgogICAgICogQWxsIG90aGVyIHZhbHVlcyBhcmUgZGlzYWxsb3dlZCBpbiBleHByZXNzaW9ucyB0byBoZWxwIHByZXZlbnQgWFNTCiAgICAgKiBhdHRhY2tzOyBob3dldmVyLCBgUG9seW1lci5odG1sTGl0ZXJhbGAgY2FuIGJlIHVzZWQgdG8gY29tcG9zZSBzdGF0aWMKICAgICAqIHN0cmluZyB2YWx1ZXMgaW50byB0ZW1wbGF0ZXMuIFRoaXMgaXMgdXNlZnVsIHRvIGNvbXBvc2Ugc3RyaW5ncyBpbnRvCiAgICAgKiBwbGFjZXMgdGhhdCBkbyBub3QgYWNjZXB0IGh0bWwsIGxpa2UgdGhlIGNzcyB0ZXh0IG9mIGEgYHN0eWxlYAogICAgICogZWxlbWVudC4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICoKICAgICAqICAgICBzdGF0aWMgZ2V0IHRlbXBsYXRlKCkgewogICAgICogICAgICAgcmV0dXJuIFBvbHltZXIuaHRtbGAKICAgICAqICAgICAgICAgPHN0eWxlPjpob3N0eyBjb250ZW50OiIuLi4iIH08L3N0eWxlPgogICAgICogICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3dlZCI+JHt0aGlzLnBhcnRpYWxUZW1wbGF0ZX08L2Rpdj4KICAgICAqICAgICAgICAgJHtzdXBlci50ZW1wbGF0ZX0KICAgICAqICAgICAgIGA7CiAgICAgKiAgICAgfQogICAgICogICAgIHN0YXRpYyBnZXQgcGFydGlhbFRlbXBsYXRlKCkgeyByZXR1cm4gUG9seW1lci5odG1sYDxzcGFuPlBhcnRpYWwhPC9zcGFuPmA7IH0KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAgICogQHBhcmFtIHshSVRlbXBsYXRlQXJyYXl9IHN0cmluZ3MgQ29uc3RhbnQgcGFydHMgb2YgdGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWwKICAgICAqIEBwYXJhbSB7Li4uKn0gdmFsdWVzIFZhcmlhYmxlIHBhcnRzIG9mIHRhZ2dlZCB0ZW1wbGF0ZSBsaXRlcmFsCiAgICAgKiBAcmV0dXJuIHshSFRNTFRlbXBsYXRlRWxlbWVudH0gQ29uc3RydWN0ZWQgSFRNTFRlbXBsYXRlRWxlbWVudAogICAgICovCiAgICBQb2x5bWVyLmh0bWwgPSBmdW5jdGlvbiBodG1sKHN0cmluZ3MsIC4uLnZhbHVlcykgewogICAgICBjb25zdCB0ZW1wbGF0ZSA9IC8qKiBAdHlwZSB7IUhUTUxUZW1wbGF0ZUVsZW1lbnR9ICovKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJykpOwogICAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSB2YWx1ZXMucmVkdWNlKChhY2MsIHYsIGlkeCkgPT4KICAgICAgICAgIGFjYyArIGh0bWxWYWx1ZSh2KSArIHN0cmluZ3NbaWR4ICsgMV0sIHN0cmluZ3NbMF0pOwogICAgICByZXR1cm4gdGVtcGxhdGU7CiAgICB9OwoKICAgIC8qKgogICAgICogQW4gaHRtbCBsaXRlcmFsIHRhZyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggYFBvbHltZXIuaHRtbGAgdG8gY29tcG9zZS4KICAgICAqIGEgbGl0ZXJhbCBzdHJpbmcuCiAgICAgKgogICAgICogRXhhbXBsZToKICAgICAqCiAgICAgKiAgICAgc3RhdGljIGdldCB0ZW1wbGF0ZSgpIHsKICAgICAqICAgICAgIHJldHVybiBQb2x5bWVyLmh0bWxgCiAgICAgKiAgICAgICAgIDxzdHlsZT4KICAgICAqICAgICAgICAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB9CiAgICAgKiAgICAgICAgICAgJHtzdHlsZVRlbXBsYXRlfQogICAgICogICAgICAgICA8L3N0eWxlPgogICAgICogICAgICAgICA8ZGl2IGNsYXNzPSJzaGFkb3dlZCI+JHtzdGF0aWNWYWx1ZX08L2Rpdj4KICAgICAqICAgICAgICAgJHtzdXBlci50ZW1wbGF0ZX0KICAgICAqICAgICAgIGA7CiAgICAgKiAgICAgfQogICAgICogICAgIHN0YXRpYyBnZXQgc3R5bGVUZW1wbGF0ZSgpIHsgcmV0dXJuIFBvbHltZXIuaHRtbExpdGVyYWxgLnNoYWRvd2VkIHsgYmFja2dyb3VuZDogZ3JheTsgfWA7IH0KICAgICAqCiAgICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAgICogQHBhcmFtIHshSVRlbXBsYXRlQXJyYXl9IHN0cmluZ3MgQ29uc3RhbnQgcGFydHMgb2YgdGFnZ2VkIHRlbXBsYXRlIGxpdGVyYWwKICAgICAqIEBwYXJhbSB7Li4uKn0gdmFsdWVzIFZhcmlhYmxlIHBhcnRzIG9mIHRhZ2dlZCB0ZW1wbGF0ZSBsaXRlcmFsCiAgICAgKiBAcmV0dXJuIHshTGl0ZXJhbFN0cmluZ30gQ29uc3RydWN0ZWQgbGl0ZXJhbCBzdHJpbmcKICAgICAqLwogICAgUG9seW1lci5odG1sTGl0ZXJhbCA9IGZ1bmN0aW9uKHN0cmluZ3MsIC4uLnZhbHVlcykgewogICAgICByZXR1cm4gbmV3IExpdGVyYWxTdHJpbmcodmFsdWVzLnJlZHVjZSgoYWNjLCB2LCBpZHgpID0+CiAgICAgICAgICBhY2MgKyBsaXRlcmFsVmFsdWUodikgKyBzdHJpbmdzW2lkeCArIDFdLCBzdHJpbmdzWzBdKSk7CiAgICB9OwogIH0pKCk7CgoKKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogQmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIHRoZSBjb3JlIEFQSSBmb3IgUG9seW1lcidzIG1ldGEtcHJvZ3JhbW1pbmcKICAgKiBmZWF0dXJlcyBpbmNsdWRpbmcgdGVtcGxhdGUgc3RhbXBpbmcsIGRhdGEtYmluZGluZywgYXR0cmlidXRlIGRlc2VyaWFsaXphdGlvbiwKICAgKiBhbmQgcHJvcGVydHkgY2hhbmdlIG9ic2VydmF0aW9uLgogICAqCiAgICogQGN1c3RvbUVsZW1lbnQKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBjb25zdHJ1Y3RvcgogICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX0VsZW1lbnRNaXhpbn0KICAgKiBAZXh0ZW5kcyB7SFRNTEVsZW1lbnR9CiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLkVsZW1lbnRNaXhpbgogICAqIEBzdW1tYXJ5IEN1c3RvbSBlbGVtZW50IGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyB0aGUgY29yZSBBUEkgZm9yIFBvbHltZXIncwogICAqICAga2V5IG1ldGEtcHJvZ3JhbW1pbmcgZmVhdHVyZXMgaW5jbHVkaW5nIHRlbXBsYXRlIHN0YW1waW5nLCBkYXRhLWJpbmRpbmcsCiAgICogICBhdHRyaWJ1dGUgZGVzZXJpYWxpemF0aW9uLCBhbmQgcHJvcGVydHkgY2hhbmdlIG9ic2VydmF0aW9uCiAgICovCiAgUG9seW1lci5FbGVtZW50ID0gUG9seW1lci5FbGVtZW50TWl4aW4oSFRNTEVsZW1lbnQpOwoKICAvLyBOT1RFOiB0aGlzIGlzIGhlcmUgZm9yIG1vZHVsaXplciB0byBleHBvcnQgYGh0bWxgIGZvciB0aGUgbW9kdWxlIHZlcnNpb24gb2YgdGhpcyBmaWxlCiAgUG9seW1lci5odG1sID0gUG9seW1lci5odG1sOwp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIGxldCBUZW1wbGF0ZUluc3RhbmNlQmFzZSA9IFBvbHltZXIuVGVtcGxhdGVJbnN0YW5jZUJhc2U7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUKCiAgLyoqCiAgICogQGNvbnN0cnVjdG9yCiAgICogQGltcGxlbWVudHMge1BvbHltZXJfT3B0aW9uYWxNdXRhYmxlRGF0YX0KICAgKiBAZXh0ZW5kcyB7UG9seW1lci5FbGVtZW50fQogICAqIEBwcml2YXRlCiAgICovCiAgY29uc3QgZG9tUmVwZWF0QmFzZSA9IFBvbHltZXIuT3B0aW9uYWxNdXRhYmxlRGF0YShQb2x5bWVyLkVsZW1lbnQpOwoKICAvKioKICAgKiBUaGUgYDxkb20tcmVwZWF0PmAgZWxlbWVudCB3aWxsIGF1dG9tYXRpY2FsbHkgc3RhbXAgYW5kIGJpbmRzIG9uZSBpbnN0YW5jZQogICAqIG9mIHRlbXBsYXRlIGNvbnRlbnQgdG8gZWFjaCBvYmplY3QgaW4gYSB1c2VyLXByb3ZpZGVkIGFycmF5LgogICAqIGBkb20tcmVwZWF0YCBhY2NlcHRzIGFuIGBpdGVtc2AgcHJvcGVydHksIGFuZCBvbmUgaW5zdGFuY2Ugb2YgdGhlIHRlbXBsYXRlCiAgICogaXMgc3RhbXBlZCBmb3IgZWFjaCBpdGVtIGludG8gdGhlIERPTSBhdCB0aGUgbG9jYXRpb24gb2YgdGhlIGBkb20tcmVwZWF0YAogICAqIGVsZW1lbnQuICBUaGUgYGl0ZW1gIHByb3BlcnR5IHdpbGwgYmUgc2V0IG9uIGVhY2ggaW5zdGFuY2UncyBiaW5kaW5nCiAgICogc2NvcGUsIHRodXMgdGVtcGxhdGVzIHNob3VsZCBiaW5kIHRvIHN1Yi1wcm9wZXJ0aWVzIG9mIGBpdGVtYC4KICAgKgogICAqIEV4YW1wbGU6CiAgICoKICAgKiBgYGBodG1sCiAgICogPGRvbS1tb2R1bGUgaWQ9ImVtcGxveWVlLWxpc3QiPgogICAqCiAgICogICA8dGVtcGxhdGU+CiAgICoKICAgKiAgICAgPGRpdj4gRW1wbG95ZWUgbGlzdDogPC9kaXY+CiAgICogICAgIDxkb20tcmVwZWF0IGl0ZW1zPSJ7e2VtcGxveWVlc319Ij4KICAgKiAgICAgICA8dGVtcGxhdGU+CiAgICogICAgICAgICA8ZGl2PkZpcnN0IG5hbWU6IDxzcGFuPnt7aXRlbS5maXJzdH19PC9zcGFuPjwvZGl2PgogICAqICAgICAgICAgPGRpdj5MYXN0IG5hbWU6IDxzcGFuPnt7aXRlbS5sYXN0fX08L3NwYW4+PC9kaXY+CiAgICogICAgICAgPC90ZW1wbGF0ZT4KICAgKiAgICAgPC9kb20tcmVwZWF0PgogICAqCiAgICogICA8L3RlbXBsYXRlPgogICAqCiAgICogPC9kb20tbW9kdWxlPgogICAqIGBgYAogICAqCiAgICogV2l0aCB0aGUgZm9sbG93aW5nIGN1c3RvbSBlbGVtZW50IGRlZmluaXRpb246CiAgICoKICAgKiBgYGBqcwogICAqIGNsYXNzIEVtcGxveWVlTGlzdCBleHRlbmRzIFBvbHltZXIuRWxlbWVudCB7CiAgICogICBzdGF0aWMgZ2V0IGlzKCkgeyByZXR1cm4gJ2VtcGxveWVlLWxpc3QnOyB9CiAgICogICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7CiAgICogICAgIHJldHVybiB7CiAgICogICAgICAgZW1wbG95ZWVzOiB7CiAgICogICAgICAgICB2YWx1ZSgpIHsKICAgKiAgICAgICAgICAgcmV0dXJuIFsKICAgKiAgICAgICAgICAgICB7Zmlyc3Q6ICdCb2InLCBsYXN0OiAnU21pdGgnfSwKICAgKiAgICAgICAgICAgICB7Zmlyc3Q6ICdTYWxseScsIGxhc3Q6ICdKb2huc29uJ30sCiAgICogICAgICAgICAgICAgLi4uCiAgICogICAgICAgICAgIF07CiAgICogICAgICAgICB9CiAgICogICAgICAgfQogICAqICAgICB9OwogICAqICAgfQogICAqIH0KICAgKiBgYGAKICAgKgogICAqIE5vdGlmaWNhdGlvbnMgZm9yIGNoYW5nZXMgdG8gaXRlbXMgc3ViLXByb3BlcnRpZXMgd2lsbCBiZSBmb3J3YXJkZWQgdG8gdGVtcGxhdGUKICAgKiBpbnN0YW5jZXMsIHdoaWNoIHdpbGwgdXBkYXRlIHZpYSB0aGUgbm9ybWFsIHN0cnVjdHVyZWQgZGF0YSBub3RpZmljYXRpb24gc3lzdGVtLgogICAqCiAgICogTXV0YXRpb25zIHRvIHRoZSBgaXRlbXNgIGFycmF5IGl0c2VsZiBzaG91bGQgYmUgbWFkZSB1c2luZyB0aGUgQXJyYXkKICAgKiBtdXRhdGlvbiBBUEkncyBvbiBgUG9seW1lci5CYXNlYCAoYHB1c2hgLCBgcG9wYCwgYHNwbGljZWAsIGBzaGlmdGAsCiAgICogYHVuc2hpZnRgKSwgYW5kIHRlbXBsYXRlIGluc3RhbmNlcyB3aWxsIGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBkYXRhIGluIHRoZQogICAqIGFycmF5LgogICAqCiAgICogRXZlbnRzIGNhdWdodCBieSBldmVudCBoYW5kbGVycyB3aXRoaW4gdGhlIGBkb20tcmVwZWF0YCB0ZW1wbGF0ZSB3aWxsIGJlCiAgICogZGVjb3JhdGVkIHdpdGggYSBgbW9kZWxgIHByb3BlcnR5LCB3aGljaCByZXByZXNlbnRzIHRoZSBiaW5kaW5nIHNjb3BlIGZvcgogICAqIGVhY2ggdGVtcGxhdGUgaW5zdGFuY2UuICBUaGUgbW9kZWwgaXMgYW4gaW5zdGFuY2Ugb2YgUG9seW1lci5CYXNlLCBhbmQgc2hvdWxkCiAgICogYmUgdXNlZCB0byBtYW5pcHVsYXRlIGRhdGEgb24gdGhlIGluc3RhbmNlLCBmb3IgZXhhbXBsZQogICAqIGBldmVudC5tb2RlbC5zZXQoJ2l0ZW0uY2hlY2tlZCcsIHRydWUpO2AuCiAgICoKICAgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgbW9kZWwgZm9yIGEgdGVtcGxhdGUgaW5zdGFuY2UgZm9yIGFuIGVsZW1lbnQgc3RhbXBlZCBieQogICAqIGEgYGRvbS1yZXBlYXRgIGNhbiBiZSBvYnRhaW5lZCB1c2luZyB0aGUgYG1vZGVsRm9yRWxlbWVudGAgQVBJIG9uIHRoZQogICAqIGBkb20tcmVwZWF0YCB0aGF0IHN0YW1wZWQgaXQsIGZvciBleGFtcGxlCiAgICogYHRoaXMuJC5kb21SZXBlYXQubW9kZWxGb3JFbGVtZW50KGV2ZW50LnRhcmdldCkuc2V0KCdpdGVtLmNoZWNrZWQnLCB0cnVlKTtgLgogICAqIFRoaXMgbWF5IGJlIHVzZWZ1bCBmb3IgbWFuaXB1bGF0aW5nIGluc3RhbmNlIGRhdGEgb2YgZXZlbnQgdGFyZ2V0cyBvYnRhaW5lZAogICAqIGJ5IGV2ZW50IGhhbmRsZXJzIG9uIHBhcmVudHMgb2YgdGhlIGBkb20tcmVwZWF0YCAoZXZlbnQgZGVsZWdhdGlvbikuCiAgICoKICAgKiBBIHZpZXctc3BlY2lmaWMgZmlsdGVyL3NvcnQgbWF5IGJlIGFwcGxpZWQgdG8gZWFjaCBgZG9tLXJlcGVhdGAgYnkgc3VwcGx5aW5nIGEKICAgKiBgZmlsdGVyYCBhbmQvb3IgYHNvcnRgIHByb3BlcnR5LiAgVGhpcyBtYXkgYmUgYSBzdHJpbmcgdGhhdCBuYW1lcyBhIGZ1bmN0aW9uIG9uCiAgICogdGhlIGhvc3QsIG9yIGEgZnVuY3Rpb24gbWF5IGJlIGFzc2lnbmVkIHRvIHRoZSBwcm9wZXJ0eSBkaXJlY3RseS4gIFRoZSBmdW5jdGlvbnMKICAgKiBzaG91bGQgaW1wbGVtZW50ZWQgZm9sbG93aW5nIHRoZSBzdGFuZGFyZCBgQXJyYXlgIGZpbHRlci9zb3J0IEFQSS4KICAgKgogICAqIEluIG9yZGVyIHRvIHJlLXJ1biB0aGUgZmlsdGVyIG9yIHNvcnQgZnVuY3Rpb25zIGJhc2VkIG9uIGNoYW5nZXMgdG8gc3ViLWZpZWxkcwogICAqIG9mIGBpdGVtc2AsIHRoZSBgb2JzZXJ2ZWAgcHJvcGVydHkgbWF5IGJlIHNldCBhcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mCiAgICogYGl0ZW1gIHN1Yi1maWVsZHMgdGhhdCBzaG91bGQgY2F1c2UgYSByZS1maWx0ZXIvc29ydCB3aGVuIG1vZGlmaWVkLiAgSWYKICAgKiB0aGUgZmlsdGVyIG9yIHNvcnQgZnVuY3Rpb24gZGVwZW5kcyBvbiBwcm9wZXJ0aWVzIG5vdCBjb250YWluZWQgaW4gYGl0ZW1zYCwKICAgKiB0aGUgdXNlciBzaG91bGQgb2JzZXJ2ZSBjaGFuZ2VzIHRvIHRob3NlIHByb3BlcnRpZXMgYW5kIGNhbGwgYHJlbmRlcmAgdG8gdXBkYXRlCiAgICogdGhlIHZpZXcgYmFzZWQgb24gdGhlIGRlcGVuZGVuY3kgY2hhbmdlLgogICAqCiAgICogRm9yIGV4YW1wbGUsIGZvciBhbiBgZG9tLXJlcGVhdGAgd2l0aCBhIGZpbHRlciBvZiB0aGUgZm9sbG93aW5nOgogICAqCiAgICogYGBganMKICAgKiBpc0VuZ2luZWVyKGl0ZW0pIHsKICAgKiAgIHJldHVybiBpdGVtLnR5cGUgPT0gJ2VuZ2luZWVyJyB8fCBpdGVtLm1hbmFnZXIudHlwZSA9PSAnZW5naW5lZXInOwogICAqIH0KICAgKiBgYGAKICAgKgogICAqIFRoZW4gdGhlIGBvYnNlcnZlYCBwcm9wZXJ0eSBzaG91bGQgYmUgY29uZmlndXJlZCBhcyBmb2xsb3dzOgogICAqCiAgICogYGBgaHRtbAogICAqIDxkb20tcmVwZWF0IGl0ZW1zPSJ7e2VtcGxveWVlc319IiBmaWx0ZXI9ImlzRW5naW5lZXIiIG9ic2VydmU9InR5cGUgbWFuYWdlci50eXBlIj4KICAgKiBgYGAKICAgKgogICAqIEBjdXN0b21FbGVtZW50CiAgICogQHBvbHltZXIKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBleHRlbmRzIHtkb21SZXBlYXRCYXNlfQogICAqIEBhcHBsaWVzTWl4aW4gUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhCiAgICogQHN1bW1hcnkgQ3VzdG9tIGVsZW1lbnQgZm9yIHN0YW1waW5nIGluc3RhbmNlIG9mIGEgdGVtcGxhdGUgYm91bmQgdG8KICAgKiAgIGl0ZW1zIGluIGFuIGFycmF5LgogICAqLwogIGNsYXNzIERvbVJlcGVhdCBleHRlbmRzIGRvbVJlcGVhdEJhc2UgewoKICAgIC8vIE5vdCBuZWVkZWQgdG8gZmluZCB0ZW1wbGF0ZTsgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGUgYW5hbHl6ZXIKICAgIC8vIGNhbiBmaW5kIHRoZSB0YWcgbmFtZSBmcm9tIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBjYWxsCiAgICBzdGF0aWMgZ2V0IGlzKCkgeyByZXR1cm4gJ2RvbS1yZXBlYXQnOyB9CgogICAgc3RhdGljIGdldCB0ZW1wbGF0ZSgpIHsgcmV0dXJuIG51bGw7IH0KCiAgICBzdGF0aWMgZ2V0IHByb3BlcnRpZXMoKSB7CgogICAgICAvKioKICAgICAgICogRmlyZWQgd2hlbmV2ZXIgRE9NIGlzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhpcyB0ZW1wbGF0ZSAoYnkKICAgICAgICogZGVmYXVsdCwgcmVuZGVyaW5nIG9jY3VycyBsYXppbHkpLiAgVG8gZm9yY2UgaW1tZWRpYXRlIHJlbmRlcmluZywgY2FsbAogICAgICAgKiBgcmVuZGVyYC4KICAgICAgICoKICAgICAgICogQGV2ZW50IGRvbS1jaGFuZ2UKICAgICAgICovCiAgICAgIHJldHVybiB7CgogICAgICAgIC8qKgogICAgICAgICAqIEFuIGFycmF5IGNvbnRhaW5pbmcgaXRlbXMgZGV0ZXJtaW5pbmcgaG93IG1hbnkgaW5zdGFuY2VzIG9mIHRoZSB0ZW1wbGF0ZQogICAgICAgICAqIHRvIHN0YW1wIGFuZCB0aGF0IHRoYXQgZWFjaCB0ZW1wbGF0ZSBpbnN0YW5jZSBzaG91bGQgYmluZCB0by4KICAgICAgICAgKi8KICAgICAgICBpdGVtczogewogICAgICAgICAgdHlwZTogQXJyYXkKICAgICAgICB9LAoKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgdG8gYWRkIHRvIHRoZSBiaW5kaW5nIHNjb3BlIGZvciB0aGUgYXJyYXkKICAgICAgICAgKiBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIHRlbXBsYXRlIGluc3RhbmNlLgogICAgICAgICAqLwogICAgICAgIGFzOiB7CiAgICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgICB2YWx1ZTogJ2l0ZW0nCiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGFkZCB0byB0aGUgYmluZGluZyBzY29wZSB3aXRoIHRoZSBpbmRleAogICAgICAgICAqIG9mIHRoZSBpbnN0YW5jZSBpbiB0aGUgc29ydGVkIGFuZCBmaWx0ZXJlZCBsaXN0IG9mIHJlbmRlcmVkIGl0ZW1zLgogICAgICAgICAqIE5vdGUsIGZvciB0aGUgaW5kZXggaW4gdGhlIGB0aGlzLml0ZW1zYCBhcnJheSwgdXNlIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICAgKiBgaXRlbXNJbmRleEFzYCBwcm9wZXJ0eS4KICAgICAgICAgKi8KICAgICAgICBpbmRleEFzOiB7CiAgICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgICB2YWx1ZTogJ2luZGV4JwogICAgICAgIH0sCgogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBhZGQgdG8gdGhlIGJpbmRpbmcgc2NvcGUgd2l0aCB0aGUgaW5kZXgKICAgICAgICAgKiBvZiB0aGUgaW5zdGFuY2UgaW4gdGhlIGB0aGlzLml0ZW1zYCBhcnJheS4gTm90ZSwgZm9yIHRoZSBpbmRleCBvZgogICAgICAgICAqIHRoaXMgaW5zdGFuY2UgaW4gdGhlIHNvcnRlZCBhbmQgZmlsdGVyZWQgbGlzdCBvZiByZW5kZXJlZCBpdGVtcywKICAgICAgICAgKiB1c2UgdGhlIHZhbHVlIG9mIHRoZSBgaW5kZXhBc2AgcHJvcGVydHkuCiAgICAgICAgICovCiAgICAgICAgaXRlbXNJbmRleEFzOiB7CiAgICAgICAgICB0eXBlOiBTdHJpbmcsCiAgICAgICAgICB2YWx1ZTogJ2l0ZW1zSW5kZXgnCiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogQSBmdW5jdGlvbiB0aGF0IHNob3VsZCBkZXRlcm1pbmUgdGhlIHNvcnQgb3JkZXIgb2YgdGhlIGl0ZW1zLiAgVGhpcwogICAgICAgICAqIHByb3BlcnR5IHNob3VsZCBlaXRoZXIgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcsIGluZGljYXRpbmcgYSBtZXRob2QKICAgICAgICAgKiBuYW1lIG9uIHRoZSBlbGVtZW50J3MgaG9zdCwgb3IgZWxzZSBiZSBhbiBhY3R1YWwgZnVuY3Rpb24uICBUaGUKICAgICAgICAgKiBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggdGhlIHNvcnQgZnVuY3Rpb24gcGFzc2VkIHRvIGBBcnJheS5zb3J0YC4KICAgICAgICAgKiBVc2luZyBhIHNvcnQgZnVuY3Rpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgdW5kZXJseWluZyBgaXRlbXNgIGFycmF5LgogICAgICAgICAqLwogICAgICAgIHNvcnQ6IHsKICAgICAgICAgIHR5cGU6IEZ1bmN0aW9uLAogICAgICAgICAgb2JzZXJ2ZXI6ICdfX3NvcnRDaGFuZ2VkJwogICAgICAgIH0sCgogICAgICAgIC8qKgogICAgICAgICAqIEEgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgaXRlbXMgb3V0IG9mIHRoZSB2aWV3LiAgVGhpcwogICAgICAgICAqIHByb3BlcnR5IHNob3VsZCBlaXRoZXIgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcsIGluZGljYXRpbmcgYSBtZXRob2QKICAgICAgICAgKiBuYW1lIG9uIHRoZSBlbGVtZW50J3MgaG9zdCwgb3IgZWxzZSBiZSBhbiBhY3R1YWwgZnVuY3Rpb24uICBUaGUKICAgICAgICAgKiBmdW5jdGlvbiBzaG91bGQgbWF0Y2ggdGhlIHNvcnQgZnVuY3Rpb24gcGFzc2VkIHRvIGBBcnJheS5maWx0ZXJgLgogICAgICAgICAqIFVzaW5nIGEgZmlsdGVyIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHVuZGVybHlpbmcgYGl0ZW1zYCBhcnJheS4KICAgICAgICAgKi8KICAgICAgICBmaWx0ZXI6IHsKICAgICAgICAgIHR5cGU6IEZ1bmN0aW9uLAogICAgICAgICAgb2JzZXJ2ZXI6ICdfX2ZpbHRlckNoYW5nZWQnCiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogV2hlbiB1c2luZyBhIGBmaWx0ZXJgIG9yIGBzb3J0YCBmdW5jdGlvbiwgdGhlIGBvYnNlcnZlYCBwcm9wZXJ0eQogICAgICAgICAqIHNob3VsZCBiZSBzZXQgdG8gYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgbmFtZXMgb2YgaXRlbQogICAgICAgICAqIHN1Yi1maWVsZHMgdGhhdCBzaG91bGQgdHJpZ2dlciBhIHJlLXNvcnQgb3IgcmUtZmlsdGVyIHdoZW4gY2hhbmdlZC4KICAgICAgICAgKiBUaGVzZSBzaG91bGQgZ2VuZXJhbGx5IGJlIGZpZWxkcyBvZiBgaXRlbWAgdGhhdCB0aGUgc29ydCBvciBmaWx0ZXIKICAgICAgICAgKiBmdW5jdGlvbiBkZXBlbmRzIG9uLgogICAgICAgICAqLwogICAgICAgIG9ic2VydmU6IHsKICAgICAgICAgIHR5cGU6IFN0cmluZywKICAgICAgICAgIG9ic2VydmVyOiAnX19vYnNlcnZlQ2hhbmdlZCcKICAgICAgICB9LAoKICAgICAgICAvKioKICAgICAgICAgKiBXaGVuIHVzaW5nIGEgYGZpbHRlcmAgb3IgYHNvcnRgIGZ1bmN0aW9uLCB0aGUgYGRlbGF5YCBwcm9wZXJ0eQogICAgICAgICAqIGRldGVybWluZXMgYSBkZWJvdW5jZSB0aW1lIGluIG1zIGFmdGVyIGEgY2hhbmdlIHRvIG9ic2VydmVkIGl0ZW0KICAgICAgICAgKiBwcm9wZXJ0aWVzIHRoYXQgbXVzdCBwYXNzIGJlZm9yZSB0aGUgZmlsdGVyIG9yIHNvcnQgaXMgcmUtcnVuLgogICAgICAgICAqIFRoaXMgaXMgdXNlZnVsIGluIHJhdGUtbGltaXRpbmcgc2h1ZmZsaW5nIG9mIHRoZSB2aWV3IHdoZW4KICAgICAgICAgKiBpdGVtIGNoYW5nZXMgbWF5IGJlIGZyZXF1ZW50LgogICAgICAgICAqLwogICAgICAgIGRlbGF5OiBOdW1iZXIsCgogICAgICAgIC8qKgogICAgICAgICAqIENvdW50IG9mIGN1cnJlbnRseSByZW5kZXJlZCBpdGVtcyBhZnRlciBgZmlsdGVyYCAoaWYgYW55KSBoYXMgYmVlbiBhcHBsaWVkLgogICAgICAgICAqIElmICJjaHVua2luZyBtb2RlIiBpcyBlbmFibGVkLCBgcmVuZGVyZWRJdGVtQ291bnRgIGlzIHVwZGF0ZWQgZWFjaCB0aW1lIGEKICAgICAgICAgKiBzZXQgb2YgdGVtcGxhdGUgaW5zdGFuY2VzIGlzIHJlbmRlcmVkLgogICAgICAgICAqCiAgICAgICAgICovCiAgICAgICAgcmVuZGVyZWRJdGVtQ291bnQ6IHsKICAgICAgICAgIHR5cGU6IE51bWJlciwKICAgICAgICAgIG5vdGlmeTogdHJ1ZSwKICAgICAgICAgIHJlYWRPbmx5OiB0cnVlCiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogRGVmaW5lcyBhbiBpbml0aWFsIGNvdW50IG9mIHRlbXBsYXRlIGluc3RhbmNlcyB0byByZW5kZXIgYWZ0ZXIgc2V0dGluZwogICAgICAgICAqIHRoZSBgaXRlbXNgIGFycmF5LCBiZWZvcmUgdGhlIG5leHQgcGFpbnQsIGFuZCBwdXRzIHRoZSBgZG9tLXJlcGVhdGAKICAgICAgICAgKiBpbnRvICJjaHVua2luZyBtb2RlIi4gIFRoZSByZW1haW5pbmcgaXRlbXMgd2lsbCBiZSBjcmVhdGVkIGFuZCByZW5kZXJlZAogICAgICAgICAqIGluY3JlbWVudGFsbHkgYXQgZWFjaCBhbmltYXRpb24gZnJhbWUgdGhlcm9mIHVudGlsIGFsbCBpbnN0YW5jZXMgaGF2ZQogICAgICAgICAqIGJlZW4gcmVuZGVyZWQuCiAgICAgICAgICovCiAgICAgICAgaW5pdGlhbENvdW50OiB7CiAgICAgICAgICB0eXBlOiBOdW1iZXIsCiAgICAgICAgICBvYnNlcnZlcjogJ19faW5pdGlhbGl6ZUNodW5raW5nJwogICAgICAgIH0sCgogICAgICAgIC8qKgogICAgICAgICAqIFdoZW4gYGluaXRpYWxDb3VudGAgaXMgdXNlZCwgdGhpcyBwcm9wZXJ0eSBkZWZpbmVzIGEgZnJhbWUgcmF0ZSAoaW4KICAgICAgICAgKiBmcHMpIHRvIHRhcmdldCBieSB0aHJvdHRsaW5nIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIHJlbmRlcmVkIGVhY2gKICAgICAgICAgKiBmcmFtZSB0byBub3QgZXhjZWVkIHRoZSBidWRnZXQgZm9yIHRoZSB0YXJnZXQgZnJhbWUgcmF0ZS4gIFRoZQogICAgICAgICAqIGZyYW1lcmF0ZSBpcyBlZmZlY3RpdmVseSB0aGUgbnVtYmVyIG9mIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgcyB0aGF0CiAgICAgICAgICogaXQgdHJpZXMgdG8gYWxsb3cgdG8gYWN0dWFsbHkgZmlyZSBpbiBhIGdpdmVuIHNlY29uZC4gSXQgZG9lcyB0aGlzCiAgICAgICAgICogYnkgbWVhc3VyaW5nIHRoZSB0aW1lIGJldHdlZW4gYHJBRmBzIGFuZCBjb250aW51b3VzbHkgYWRqdXN0aW5nIHRoZQogICAgICAgICAqIG51bWJlciBvZiBpdGVtcyBjcmVhdGVkIGVhY2ggYHJBRmAgdG8gbWFpbnRhaW4gdGhlIHRhcmdldCBmcmFtZXJhdGUuCiAgICAgICAgICogU2V0dGluZyB0aGlzIHRvIGEgaGlnaGVyIG51bWJlciBhbGxvd3MgbG93ZXIgbGF0ZW5jeSBhbmQgaGlnaGVyCiAgICAgICAgICogdGhyb3VnaHB1dCBmb3IgZXZlbnQgaGFuZGxlcnMgYW5kIG90aGVyIHRhc2tzLCBidXQgcmVzdWx0cyBpbiBhCiAgICAgICAgICogbG9uZ2VyIHRpbWUgZm9yIHRoZSByZW1haW5pbmcgaXRlbXMgdG8gY29tcGxldGUgcmVuZGVyaW5nLgogICAgICAgICAqLwogICAgICAgIHRhcmdldEZyYW1lcmF0ZTogewogICAgICAgICAgdHlwZTogTnVtYmVyLAogICAgICAgICAgdmFsdWU6IDIwCiAgICAgICAgfSwKCiAgICAgICAgX3RhcmdldEZyYW1lVGltZTogewogICAgICAgICAgdHlwZTogTnVtYmVyLAogICAgICAgICAgY29tcHV0ZWQ6ICdfX2NvbXB1dGVGcmFtZVRpbWUodGFyZ2V0RnJhbWVyYXRlKScKICAgICAgICB9CgogICAgICB9OwoKICAgIH0KCiAgICBzdGF0aWMgZ2V0IG9ic2VydmVycygpIHsKICAgICAgcmV0dXJuIFsgJ19faXRlbXNDaGFuZ2VkKGl0ZW1zLiopJyBdOwogICAgfQoKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICBzdXBlcigpOwogICAgICB0aGlzLl9faW5zdGFuY2VzID0gW107CiAgICAgIHRoaXMuX19saW1pdCA9IEluZmluaXR5OwogICAgICB0aGlzLl9fcG9vbCA9IFtdOwogICAgICB0aGlzLl9fcmVuZGVyRGVib3VuY2VyID0gbnVsbDsKICAgICAgdGhpcy5fX2l0ZW1zSWR4VG9JbnN0SWR4ID0ge307CiAgICAgIHRoaXMuX19jaHVua0NvdW50ID0gbnVsbDsKICAgICAgdGhpcy5fX2xhc3RDaHVua1RpbWUgPSBudWxsOwogICAgICB0aGlzLl9fc29ydEZuID0gbnVsbDsKICAgICAgdGhpcy5fX2ZpbHRlckZuID0gbnVsbDsKICAgICAgdGhpcy5fX29ic2VydmVQYXRocyA9IG51bGw7CiAgICAgIHRoaXMuX19jdG9yID0gbnVsbDsKICAgICAgdGhpcy5fX2lzRGV0YWNoZWQgPSB0cnVlOwogICAgICB0aGlzLnRlbXBsYXRlID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICBzdXBlci5kaXNjb25uZWN0ZWRDYWxsYmFjaygpOwogICAgICB0aGlzLl9faXNEZXRhY2hlZCA9IHRydWU7CiAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdGhpcy5fX2RldGFjaEluc3RhbmNlKGkpOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgICAgc3VwZXIuY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgdGhpcy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAvLyBvbmx5IHBlcmZvcm0gYXR0YWNobWVudCBpZiB0aGUgZWxlbWVudCB3YXMgcHJldmlvdXNseSBkZXRhY2hlZC4KICAgICAgaWYgKHRoaXMuX19pc0RldGFjaGVkKSB7CiAgICAgICAgdGhpcy5fX2lzRGV0YWNoZWQgPSBmYWxzZTsKICAgICAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnROb2RlOwogICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLl9faW5zdGFuY2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLl9fYXR0YWNoSW5zdGFuY2UoaSwgcGFyZW50KTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBfX2Vuc3VyZVRlbXBsYXRpemVkKCkgewogICAgICAvLyBUZW1wbGF0aXppbmcgKGdlbmVyYXRpbmcgdGhlIGluc3RhbmNlIGNvbnN0cnVjdG9yKSBuZWVkcyB0byB3YWl0CiAgICAgIC8vIHVudGlsIHJlYWR5LCBzaW5jZSB3b24ndCBoYXZlIGl0cyB0ZW1wbGF0ZSBjb250ZW50IGhhbmRlZCBiYWNrIHRvCiAgICAgIC8vIGl0IHVudGlsIHRoZW4KICAgICAgaWYgKCF0aGlzLl9fY3RvcikgewogICAgICAgIGxldCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGUgPSAvKiogQHR5cGUge0hUTUxUZW1wbGF0ZUVsZW1lbnR9ICovKHRoaXMucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKSk7CiAgICAgICAgaWYgKCF0ZW1wbGF0ZSkgewogICAgICAgICAgLy8gLy8gV2FpdCB1bnRpbCBjaGlsZExpc3QgY2hhbmdlcyBhbmQgdGVtcGxhdGUgc2hvdWxkIGJlIHRoZXJlIGJ5IHRoZW4KICAgICAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHsKICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKSkgewogICAgICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgICB0aGlzLl9fcmVuZGVyKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkb20tcmVwZWF0IHJlcXVpcmVzIGEgPHRlbXBsYXRlPiBjaGlsZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcywge2NoaWxkTGlzdDogdHJ1ZX0pOwogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAvLyBUZW1wbGF0ZSBpbnN0YW5jZSBwcm9wcyB0aGF0IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIGZvcndhcmRpbmcKICAgICAgICBsZXQgaW5zdGFuY2VQcm9wcyA9IHt9OwogICAgICAgIGluc3RhbmNlUHJvcHNbdGhpcy5hc10gPSB0cnVlOwogICAgICAgIGluc3RhbmNlUHJvcHNbdGhpcy5pbmRleEFzXSA9IHRydWU7CiAgICAgICAgaW5zdGFuY2VQcm9wc1t0aGlzLml0ZW1zSW5kZXhBc10gPSB0cnVlOwogICAgICAgIHRoaXMuX19jdG9yID0gUG9seW1lci5UZW1wbGF0aXplLnRlbXBsYXRpemUodGVtcGxhdGUsIHRoaXMsIHsKICAgICAgICAgIG11dGFibGVEYXRhOiB0aGlzLm11dGFibGVEYXRhLAogICAgICAgICAgcGFyZW50TW9kZWw6IHRydWUsCiAgICAgICAgICBpbnN0YW5jZVByb3BzOiBpbnN0YW5jZVByb3BzLAogICAgICAgICAgLyoqCiAgICAgICAgICAgKiBAdGhpcyB7dGhpc30KICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIFByb3BlcnR5IHRvIHNldAogICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBzZXQgcHJvcGVydHkgdG8KICAgICAgICAgICAqLwogICAgICAgICAgZm9yd2FyZEhvc3RQcm9wOiBmdW5jdGlvbihwcm9wLCB2YWx1ZSkgewogICAgICAgICAgICBsZXQgaSQgPSB0aGlzLl9faW5zdGFuY2VzOwogICAgICAgICAgICBmb3IgKGxldCBpPTAsIGluc3Q7IChpPGkkLmxlbmd0aCkgJiYgKGluc3Q9aSRbaV0pOyBpKyspIHsKICAgICAgICAgICAgICBpbnN0LmZvcndhcmRIb3N0UHJvcChwcm9wLCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvKioKICAgICAgICAgICAqIEB0aGlzIHt0aGlzfQogICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IGluc3QgSW5zdGFuY2UgdG8gbm90aWZ5CiAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCBQcm9wZXJ0eSB0byBub3RpZnkKICAgICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gbm90aWZ5CiAgICAgICAgICAgKi8KICAgICAgICAgIG5vdGlmeUluc3RhbmNlUHJvcDogZnVuY3Rpb24oaW5zdCwgcHJvcCwgdmFsdWUpIHsKICAgICAgICAgICAgaWYgKFBvbHltZXIuUGF0aC5tYXRjaGVzKHRoaXMuYXMsIHByb3ApKSB7CiAgICAgICAgICAgICAgbGV0IGlkeCA9IGluc3RbdGhpcy5pdGVtc0luZGV4QXNdOwogICAgICAgICAgICAgIGlmIChwcm9wID09IHRoaXMuYXMpIHsKICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNbaWR4XSA9IHZhbHVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBsZXQgcGF0aCA9IFBvbHltZXIuUGF0aC50cmFuc2xhdGUodGhpcy5hcywgJ2l0ZW1zLicgKyBpZHgsIHByb3ApOwogICAgICAgICAgICAgIHRoaXMubm90aWZ5UGF0aChwYXRoLCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBfX2dldE1ldGhvZEhvc3QoKSB7CiAgICAgIC8vIFRlY2huaWNhbGx5IHRoaXMgc2hvdWxkIGJlIHRoZSBvd25lciBvZiB0aGUgb3V0ZXJtb3N0IHRlbXBsYXRlLgogICAgICAvLyBJbiBzaGFkb3cgZG9tLCB0aGlzIGlzIGFsd2F5cyBnZXRSb290Tm9kZSgpLmhvc3QsIGJ1dCB3ZSBjYW4KICAgICAgLy8gYXBwcm94aW1hdGUgdGhpcyB2aWEgY29vcGVyYXRpb24gd2l0aCBvdXIgZGF0YUhvc3QgYWx3YXlzIHNldHRpbmcKICAgICAgLy8gYF9tZXRob2RIb3N0YCBhcyBsb25nIGFzIHRoZXJlIHdlcmUgYmluZGluZ3MgKG9yIGlkJ3MpIG9uIHRoaXMKICAgICAgLy8gaW5zdGFuY2UgY2F1c2luZyBpdCB0byBnZXQgYSBkYXRhSG9zdC4KICAgICAgcmV0dXJuIHRoaXMuX19kYXRhSG9zdC5fbWV0aG9kSG9zdCB8fCB0aGlzLl9fZGF0YUhvc3Q7CiAgICB9CgogICAgX19mdW5jdGlvbkZyb21Qcm9wZXJ0eVZhbHVlKGZ1bmN0aW9uT3JNZXRob2ROYW1lKSB7CiAgICAgIGlmICh0eXBlb2YgZnVuY3Rpb25Pck1ldGhvZE5hbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgbGV0IG1ldGhvZE5hbWUgPSBmdW5jdGlvbk9yTWV0aG9kTmFtZTsKICAgICAgICBsZXQgb2JqID0gdGhpcy5fX2dldE1ldGhvZEhvc3QoKTsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiBvYmpbbWV0aG9kTmFtZV0uYXBwbHkob2JqLCBhcmd1bWVudHMpOyB9OwogICAgICB9CgogICAgICByZXR1cm4gZnVuY3Rpb25Pck1ldGhvZE5hbWU7CiAgICB9CgogICAgX19zb3J0Q2hhbmdlZChzb3J0KSB7CiAgICAgIHRoaXMuX19zb3J0Rm4gPSB0aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZShzb3J0KTsKICAgICAgaWYgKHRoaXMuaXRlbXMpIHsgdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpOyB9CiAgICB9CgogICAgX19maWx0ZXJDaGFuZ2VkKGZpbHRlcikgewogICAgICB0aGlzLl9fZmlsdGVyRm4gPSB0aGlzLl9fZnVuY3Rpb25Gcm9tUHJvcGVydHlWYWx1ZShmaWx0ZXIpOwogICAgICBpZiAodGhpcy5pdGVtcykgeyB0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcik7IH0KICAgIH0KCiAgICBfX2NvbXB1dGVGcmFtZVRpbWUocmF0ZSkgewogICAgICByZXR1cm4gTWF0aC5jZWlsKDEwMDAvcmF0ZSk7CiAgICB9CgogICAgX19pbml0aWFsaXplQ2h1bmtpbmcoKSB7CiAgICAgIGlmICh0aGlzLmluaXRpYWxDb3VudCkgewogICAgICAgIHRoaXMuX19saW1pdCA9IHRoaXMuaW5pdGlhbENvdW50OwogICAgICAgIHRoaXMuX19jaHVua0NvdW50ID0gdGhpcy5pbml0aWFsQ291bnQ7CiAgICAgICAgdGhpcy5fX2xhc3RDaHVua1RpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgfQogICAgfQoKICAgIF9fdHJ5UmVuZGVyQ2h1bmsoKSB7CiAgICAgIC8vIERlYm91bmNlZCBzbyB0aGF0IG11bHRpcGxlIGNhbGxzIHRocm91Z2ggYF9yZW5kZXJgIGJldHdlZW4gYW5pbWF0aW9uCiAgICAgIC8vIGZyYW1lcyBvbmx5IHF1ZXVlIG9uZSBuZXcgckFGIChlLmcuIGFycmF5IG11dGF0aW9uICYgY2h1bmtlZCByZW5kZXIpCiAgICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuX19saW1pdCA8IHRoaXMuaXRlbXMubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZXF1ZXN0UmVuZGVyQ2h1bmspOwogICAgICB9CiAgICB9CgogICAgX19yZXF1ZXN0UmVuZGVyQ2h1bmsoKSB7CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+dGhpcy5fX3JlbmRlckNodW5rKCkpOwogICAgfQoKICAgIF9fcmVuZGVyQ2h1bmsoKSB7CiAgICAgIC8vIFNpbXBsZSBhdXRvIGNodW5rU2l6ZSB0aHJvdHRsaW5nIGFsZ29yaXRobSBiYXNlZCBvbiBmZWVkYmFjayBsb29wOgogICAgICAvLyBtZWFzdXJlIGFjdHVhbCB0aW1lIGJldHdlZW4gZnJhbWVzIGFuZCBzY2FsZSBjaHVuayBjb3VudCBieSByYXRpbwogICAgICAvLyBvZiB0YXJnZXQvYWN0dWFsIGZyYW1lIHRpbWUKICAgICAgbGV0IGN1cnJDaHVua1RpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTsKICAgICAgbGV0IHJhdGlvID0gdGhpcy5fdGFyZ2V0RnJhbWVUaW1lIC8gKGN1cnJDaHVua1RpbWUgLSB0aGlzLl9fbGFzdENodW5rVGltZSk7CiAgICAgIHRoaXMuX19jaHVua0NvdW50ID0gTWF0aC5yb3VuZCh0aGlzLl9fY2h1bmtDb3VudCAqIHJhdGlvKSB8fCAxOwogICAgICB0aGlzLl9fbGltaXQgKz0gdGhpcy5fX2NodW5rQ291bnQ7CiAgICAgIHRoaXMuX19sYXN0Q2h1bmtUaW1lID0gY3VyckNodW5rVGltZTsKICAgICAgdGhpcy5fX2RlYm91bmNlUmVuZGVyKHRoaXMuX19yZW5kZXIpOwogICAgfQoKICAgIF9fb2JzZXJ2ZUNoYW5nZWQoKSB7CiAgICAgIHRoaXMuX19vYnNlcnZlUGF0aHMgPSB0aGlzLm9ic2VydmUgJiYKICAgICAgICB0aGlzLm9ic2VydmUucmVwbGFjZSgnLionLCAnLicpLnNwbGl0KCcgJyk7CiAgICB9CgogICAgX19pdGVtc0NoYW5nZWQoY2hhbmdlKSB7CiAgICAgIGlmICh0aGlzLml0ZW1zICYmICFBcnJheS5pc0FycmF5KHRoaXMuaXRlbXMpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdkb20tcmVwZWF0IGV4cGVjdGVkIGFycmF5IGZvciBgaXRlbXNgLCBmb3VuZCcsIHRoaXMuaXRlbXMpOwogICAgICB9CiAgICAgIC8vIElmIHBhdGggd2FzIHRvIGFuIGl0ZW0gKGUuZy4gJ2l0ZW1zLjMnIG9yICdpdGVtcy4zLmZvbycpLCBmb3J3YXJkIHRoZQogICAgICAvLyBwYXRoIHRvIHRoYXQgaW5zdGFuY2Ugc3luY2hyb25vdXNseSAocmV0dXJucyBmYWxzZSBmb3Igbm9uLWl0ZW0gcGF0aHMpCiAgICAgIGlmICghdGhpcy5fX2hhbmRsZUl0ZW1QYXRoKGNoYW5nZS5wYXRoLCBjaGFuZ2UudmFsdWUpKSB7CiAgICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgYXJyYXkgd2FzIHJlc2V0ICgnaXRlbXMnKSBvciBzcGxpY2VkICgnaXRlbXMuc3BsaWNlcycpLAogICAgICAgIC8vIHNvIHF1ZXVlIGEgZnVsbCByZWZyZXNoCiAgICAgICAgdGhpcy5fX2luaXRpYWxpemVDaHVua2luZygpOwogICAgICAgIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyKTsKICAgICAgfQogICAgfQoKICAgIF9faGFuZGxlT2JzZXJ2ZWRQYXRocyhwYXRoKSB7CiAgICAgIC8vIEhhbmRsZSBjYXNlcyB3aGVyZSBwYXRoIGNoYW5nZXMgc2hvdWxkIGNhdXNlIGEgcmUtc29ydC9maWx0ZXIKICAgICAgaWYgKHRoaXMuX19zb3J0Rm4gfHwgdGhpcy5fX2ZpbHRlckZuKSB7CiAgICAgICAgaWYgKCFwYXRoKSB7CiAgICAgICAgICAvLyBBbHdheXMgcmUtcmVuZGVyIGlmIHRoZSBpdGVtIGl0c2VsZiBjaGFuZ2VkCiAgICAgICAgICB0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlciwgdGhpcy5kZWxheSk7CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9fb2JzZXJ2ZVBhdGhzKSB7CiAgICAgICAgICAvLyBPdGhlcndpc2UsIHJlLXJlbmRlciBpZiB0aGUgcGF0aCBjaGFuZ2VkIG1hdGNoZXMgYW4gb2JzZXJ2ZWQgcGF0aAogICAgICAgICAgbGV0IHBhdGhzID0gdGhpcy5fX29ic2VydmVQYXRoczsKICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxwYXRocy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAocGF0aC5pbmRleE9mKHBhdGhzW2ldKSA9PT0gMCkgewogICAgICAgICAgICAgIHRoaXMuX19kZWJvdW5jZVJlbmRlcih0aGlzLl9fcmVuZGVyLCB0aGlzLmRlbGF5KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHtmdW5jdGlvbih0aGlzOkRvbVJlcGVhdCl9IGZuIEZ1bmN0aW9uIHRvIGRlYm91bmNlLgogICAgICogQHBhcmFtIHtudW1iZXI9fSBkZWxheSBEZWxheSBpbiBtcyB0byBkZWJvdW5jZSBieS4KICAgICAqLwogICAgX19kZWJvdW5jZVJlbmRlcihmbiwgZGVsYXkgPSAwKSB7CiAgICAgIHRoaXMuX19yZW5kZXJEZWJvdW5jZXIgPSBQb2x5bWVyLkRlYm91bmNlci5kZWJvdW5jZSgKICAgICAgICAgICAgdGhpcy5fX3JlbmRlckRlYm91bmNlcgogICAgICAgICAgLCBkZWxheSA+IDAgPyBQb2x5bWVyLkFzeW5jLnRpbWVPdXQuYWZ0ZXIoZGVsYXkpIDogUG9seW1lci5Bc3luYy5taWNyb1Rhc2sKICAgICAgICAgICwgZm4uYmluZCh0aGlzKSk7CiAgICAgIFBvbHltZXIuZW5xdWV1ZURlYm91bmNlcih0aGlzLl9fcmVuZGVyRGVib3VuY2VyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvcmNlcyB0aGUgZWxlbWVudCB0byByZW5kZXIgaXRzIGNvbnRlbnQuIE5vcm1hbGx5IHJlbmRlcmluZyBpcwogICAgICogYXN5bmNocm9ub3VzIHRvIGEgcHJvdm9raW5nIGNoYW5nZS4gVGhpcyBpcyBkb25lIGZvciBlZmZpY2llbmN5IHNvCiAgICAgKiB0aGF0IG11bHRpcGxlIGNoYW5nZXMgdHJpZ2dlciBvbmx5IGEgc2luZ2xlIHJlbmRlci4gVGhlIHJlbmRlciBtZXRob2QKICAgICAqIHNob3VsZCBiZSBjYWxsZWQgaWYsIGZvciBleGFtcGxlLCB0ZW1wbGF0ZSByZW5kZXJpbmcgaXMgcmVxdWlyZWQgdG8KICAgICAqIHZhbGlkYXRlIGFwcGxpY2F0aW9uIHN0YXRlLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgcmVuZGVyKCkgewogICAgICAvLyBRdWV1ZSB0aGlzIHJlcGVhdGVyLCB0aGVuIGZsdXNoIGFsbCBpbiBvcmRlcgogICAgICB0aGlzLl9fZGVib3VuY2VSZW5kZXIodGhpcy5fX3JlbmRlcik7CiAgICAgIFBvbHltZXIuZmx1c2goKTsKICAgIH0KCiAgICBfX3JlbmRlcigpIHsKICAgICAgaWYgKCF0aGlzLl9fZW5zdXJlVGVtcGxhdGl6ZWQoKSkgewogICAgICAgIC8vIE5vIHRlbXBsYXRlIGZvdW5kIHlldAogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLl9fYXBwbHlGdWxsUmVmcmVzaCgpOwogICAgICAvLyBSZXNldCB0aGUgcG9vbAogICAgICAvLyBUT0RPKGtzY2hhYWYpOiBSZXVzZSBwb29sIGFjcm9zcyB0dXJucyBhbmQgbmVzdGVkIHRlbXBsYXRlcwogICAgICAvLyBOb3cgdGhhdCBvYmplY3RzL2FycmF5cyBhcmUgcmUtZXZhbHVhdGVkIHdoZW4gc2V0LCB3ZSBjYW4gc2FmZWx5CiAgICAgIC8vIHJldXNlIHBvb2xlZCBpbnN0YW5jZXMgYWNyb3NzIHR1cm5zLCBob3dldmVyIHdlIHN0aWxsIG5lZWQgdG8gZGVjaWRlCiAgICAgIC8vIHNlbWFudGljcyByZWdhcmRpbmcgaG93IGxvbmcgdG8gaG9sZCwgaG93IG1hbnkgdG8gaG9sZCwgZXRjLgogICAgICB0aGlzLl9fcG9vbC5sZW5ndGggPSAwOwogICAgICAvLyBTZXQgcmVuZGVyZWQgaXRlbSBjb3VudAogICAgICB0aGlzLl9zZXRSZW5kZXJlZEl0ZW1Db3VudCh0aGlzLl9faW5zdGFuY2VzLmxlbmd0aCk7CiAgICAgIC8vIE5vdGlmeSB1c2VycwogICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkb20tY2hhbmdlJywgewogICAgICAgIGJ1YmJsZXM6IHRydWUsCiAgICAgICAgY29tcG9zZWQ6IHRydWUKICAgICAgfSkpOwogICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byByZW5kZXIgbW9yZSBpdGVtcwogICAgICB0aGlzLl9fdHJ5UmVuZGVyQ2h1bmsoKTsKICAgIH0KCiAgICBfX2FwcGx5RnVsbFJlZnJlc2goKSB7CiAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbXMgfHwgW107CiAgICAgIGxldCBpc250SWR4VG9JdGVtc0lkeCA9IG5ldyBBcnJheShpdGVtcy5sZW5ndGgpOwogICAgICBmb3IgKGxldCBpPTA7IGk8aXRlbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICBpc250SWR4VG9JdGVtc0lkeFtpXSA9IGk7CiAgICAgIH0KICAgICAgLy8gQXBwbHkgdXNlciBmaWx0ZXIKICAgICAgaWYgKHRoaXMuX19maWx0ZXJGbikgewogICAgICAgIGlzbnRJZHhUb0l0ZW1zSWR4ID0gaXNudElkeFRvSXRlbXNJZHguZmlsdGVyKChpLCBpZHgsIGFycmF5KSA9PgogICAgICAgICAgdGhpcy5fX2ZpbHRlckZuKGl0ZW1zW2ldLCBpZHgsIGFycmF5KSk7CiAgICAgIH0KICAgICAgLy8gQXBwbHkgdXNlciBzb3J0CiAgICAgIGlmICh0aGlzLl9fc29ydEZuKSB7CiAgICAgICAgaXNudElkeFRvSXRlbXNJZHguc29ydCgoYSwgYikgPT4gdGhpcy5fX3NvcnRGbihpdGVtc1thXSwgaXRlbXNbYl0pKTsKICAgICAgfQogICAgICAvLyBpdGVtcy0+aW5zdCBtYXAga2VwdCBmb3IgaXRlbSBwYXRoIGZvcndhcmRpbmcKICAgICAgY29uc3QgaXRlbXNJZHhUb0luc3RJZHggPSB0aGlzLl9faXRlbXNJZHhUb0luc3RJZHggPSB7fTsKICAgICAgbGV0IGluc3RJZHggPSAwOwogICAgICAvLyBHZW5lcmF0ZSBpbnN0YW5jZXMgYW5kIGFzc2lnbiBpdGVtcwogICAgICBjb25zdCBsaW1pdCA9IE1hdGgubWluKGlzbnRJZHhUb0l0ZW1zSWR4Lmxlbmd0aCwgdGhpcy5fX2xpbWl0KTsKICAgICAgZm9yICg7IGluc3RJZHg8bGltaXQ7IGluc3RJZHgrKykgewogICAgICAgIGxldCBpbnN0ID0gdGhpcy5fX2luc3RhbmNlc1tpbnN0SWR4XTsKICAgICAgICBsZXQgaXRlbUlkeCA9IGlzbnRJZHhUb0l0ZW1zSWR4W2luc3RJZHhdOwogICAgICAgIGxldCBpdGVtID0gaXRlbXNbaXRlbUlkeF07CiAgICAgICAgaXRlbXNJZHhUb0luc3RJZHhbaXRlbUlkeF0gPSBpbnN0SWR4OwogICAgICAgIGlmIChpbnN0KSB7CiAgICAgICAgICBpbnN0Ll9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5hcywgaXRlbSk7CiAgICAgICAgICBpbnN0Ll9zZXRQZW5kaW5nUHJvcGVydHkodGhpcy5pbmRleEFzLCBpbnN0SWR4KTsKICAgICAgICAgIGluc3QuX3NldFBlbmRpbmdQcm9wZXJ0eSh0aGlzLml0ZW1zSW5kZXhBcywgaXRlbUlkeCk7CiAgICAgICAgICBpbnN0Ll9mbHVzaFByb3BlcnRpZXMoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5fX2luc2VydEluc3RhbmNlKGl0ZW0sIGluc3RJZHgsIGl0ZW1JZHgpOwogICAgICAgIH0KICAgICAgfQogICAgICAvLyBSZW1vdmUgYW55IGV4dHJhIGluc3RhbmNlcyBmcm9tIHByZXZpb3VzIHN0YXRlCiAgICAgIGZvciAobGV0IGk9dGhpcy5fX2luc3RhbmNlcy5sZW5ndGgtMTsgaT49aW5zdElkeDsgaS0tKSB7CiAgICAgICAgdGhpcy5fX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKGkpOwogICAgICB9CiAgICB9CgogICAgX19kZXRhY2hJbnN0YW5jZShpZHgpIHsKICAgICAgbGV0IGluc3QgPSB0aGlzLl9faW5zdGFuY2VzW2lkeF07CiAgICAgIGZvciAobGV0IGk9MDsgaTxpbnN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IGVsID0gaW5zdC5jaGlsZHJlbltpXTsKICAgICAgICBpbnN0LnJvb3QuYXBwZW5kQ2hpbGQoZWwpOwogICAgICB9CiAgICAgIHJldHVybiBpbnN0OwogICAgfQoKICAgIF9fYXR0YWNoSW5zdGFuY2UoaWR4LCBwYXJlbnQpIHsKICAgICAgbGV0IGluc3QgPSB0aGlzLl9faW5zdGFuY2VzW2lkeF07CiAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoaW5zdC5yb290LCB0aGlzKTsKICAgIH0KCiAgICBfX2RldGFjaEFuZFJlbW92ZUluc3RhbmNlKGlkeCkgewogICAgICBsZXQgaW5zdCA9IHRoaXMuX19kZXRhY2hJbnN0YW5jZShpZHgpOwogICAgICBpZiAoaW5zdCkgewogICAgICAgIHRoaXMuX19wb29sLnB1c2goaW5zdCk7CiAgICAgIH0KICAgICAgdGhpcy5fX2luc3RhbmNlcy5zcGxpY2UoaWR4LCAxKTsKICAgIH0KCiAgICBfX3N0YW1wSW5zdGFuY2UoaXRlbSwgaW5zdElkeCwgaXRlbUlkeCkgewogICAgICBsZXQgbW9kZWwgPSB7fTsKICAgICAgbW9kZWxbdGhpcy5hc10gPSBpdGVtOwogICAgICBtb2RlbFt0aGlzLmluZGV4QXNdID0gaW5zdElkeDsKICAgICAgbW9kZWxbdGhpcy5pdGVtc0luZGV4QXNdID0gaXRlbUlkeDsKICAgICAgcmV0dXJuIG5ldyB0aGlzLl9fY3Rvcihtb2RlbCk7CiAgICB9CgogICAgX19pbnNlcnRJbnN0YW5jZShpdGVtLCBpbnN0SWR4LCBpdGVtSWR4KSB7CiAgICAgIGxldCBpbnN0ID0gdGhpcy5fX3Bvb2wucG9wKCk7CiAgICAgIGlmIChpbnN0KSB7CiAgICAgICAgLy8gVE9ETyhrc2NoYWFmKTogSWYgdGhlIHBvb2wgaXMgc2hhcmVkIGFjcm9zcyB0dXJucywgaG9zdFByb3BzCiAgICAgICAgLy8gbmVlZCB0byBiZSByZS1zZXQgdG8gcmV1c2VkIGluc3RhbmNlcyBpbiBhZGRpdGlvbiB0byBpdGVtCiAgICAgICAgaW5zdC5fc2V0UGVuZGluZ1Byb3BlcnR5KHRoaXMuYXMsIGl0ZW0pOwogICAgICAgIGluc3QuX3NldFBlbmRpbmdQcm9wZXJ0eSh0aGlzLmluZGV4QXMsIGluc3RJZHgpOwogICAgICAgIGluc3QuX3NldFBlbmRpbmdQcm9wZXJ0eSh0aGlzLml0ZW1zSW5kZXhBcywgaXRlbUlkeCk7CiAgICAgICAgaW5zdC5fZmx1c2hQcm9wZXJ0aWVzKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5zdCA9IHRoaXMuX19zdGFtcEluc3RhbmNlKGl0ZW0sIGluc3RJZHgsIGl0ZW1JZHgpOwogICAgICB9CiAgICAgIGxldCBiZWZvcmVSb3cgPSB0aGlzLl9faW5zdGFuY2VzW2luc3RJZHggKyAxXTsKICAgICAgbGV0IGJlZm9yZU5vZGUgPSBiZWZvcmVSb3cgPyBiZWZvcmVSb3cuY2hpbGRyZW5bMF0gOiB0aGlzOwogICAgICB0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGluc3Qucm9vdCwgYmVmb3JlTm9kZSk7CiAgICAgIHRoaXMuX19pbnN0YW5jZXNbaW5zdElkeF0gPSBpbnN0OwogICAgICByZXR1cm4gaW5zdDsKICAgIH0KCiAgICAvLyBJbXBsZW1lbnRzIGV4dGVuc2lvbiBwb2ludCBmcm9tIFRlbXBsYXRpemUgbWl4aW4KICAgIC8qKgogICAgICogU2hvd3Mgb3IgaGlkZXMgdGhlIHRlbXBsYXRlIGluc3RhbmNlIHRvcCBsZXZlbCBjaGlsZCBlbGVtZW50cy4gRm9yCiAgICAgKiB0ZXh0IG5vZGVzLCBgdGV4dENvbnRlbnRgIGlzIHJlbW92ZWQgd2hpbGUgImhpZGRlbiIgYW5kIHJlcGxhY2VkIHdoZW4KICAgICAqICJzaG93bi4iCiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGhpZGRlbiBTZXQgdG8gdHJ1ZSB0byBoaWRlIHRoZSBjaGlsZHJlbjsKICAgICAqIHNldCB0byBmYWxzZSB0byBzaG93IHRoZW0uCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICogQHByb3RlY3RlZAogICAgICovCiAgICBfc2hvd0hpZGVDaGlsZHJlbihoaWRkZW4pIHsKICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuX19pbnN0YW5jZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB0aGlzLl9faW5zdGFuY2VzW2ldLl9zaG93SGlkZUNoaWxkcmVuKGhpZGRlbik7CiAgICAgIH0KICAgIH0KCiAgICAvLyBDYWxsZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBhIGhvc3QgaXRlbXMuPGtleT4uPHBhdGg+IHBhdGggY2hhbmdlLAogICAgLy8gcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyBpdGVtLjxwYXRoPiBjaGFuZ2VzIHRvIGluc3QgZm9yIGtleQogICAgX19oYW5kbGVJdGVtUGF0aChwYXRoLCB2YWx1ZSkgewogICAgICBsZXQgaXRlbXNQYXRoID0gcGF0aC5zbGljZSg2KTsgLy8gJ2l0ZW1zLicubGVuZ3RoID09IDYKICAgICAgbGV0IGRvdCA9IGl0ZW1zUGF0aC5pbmRleE9mKCcuJyk7CiAgICAgIGxldCBpdGVtc0lkeCA9IGRvdCA8IDAgPyBpdGVtc1BhdGggOiBpdGVtc1BhdGguc3Vic3RyaW5nKDAsIGRvdCk7CiAgICAgIC8vIElmIHBhdGggd2FzIGluZGV4IGludG8gYXJyYXkuLi4KICAgICAgaWYgKGl0ZW1zSWR4ID09IHBhcnNlSW50KGl0ZW1zSWR4LCAxMCkpIHsKICAgICAgICBsZXQgaXRlbVN1YlBhdGggPSBkb3QgPCAwID8gJycgOiBpdGVtc1BhdGguc3Vic3RyaW5nKGRvdCsxKTsKICAgICAgICAvLyBJZiB0aGUgcGF0aCBpcyBvYnNlcnZlZCwgaXQgd2lsbCB0cmlnZ2VyIGEgZnVsbCByZWZyZXNoCiAgICAgICAgdGhpcy5fX2hhbmRsZU9ic2VydmVkUGF0aHMoaXRlbVN1YlBhdGgpOwogICAgICAgIC8vIE5vdGUsIGV2ZW4gaWYgYSBydWxsIHJlZnJlc2ggaXMgdHJpZ2dlcmVkLCBhbHdheXMgZG8gdGhlIHBhdGgKICAgICAgICAvLyBub3RpZmljYXRpb24gYmVjYXVzZSB1bmxlc3MgbXV0YWJsZURhdGEgaXMgdXNlZCBmb3IgZG9tLXJlcGVhdAogICAgICAgIC8vIGFuZCBhbGwgZWxlbWVudHMgaW4gdGhlIGluc3RhbmNlIHN1YnRyZWUsIGEgZnVsbCByZWZyZXNoIG1heQogICAgICAgIC8vIG5vdCB0cmlnZ2VyIHRoZSBwcm9wZXIgdXBkYXRlLgogICAgICAgIGxldCBpbnN0SWR4ID0gdGhpcy5fX2l0ZW1zSWR4VG9JbnN0SWR4W2l0ZW1zSWR4XTsKICAgICAgICBsZXQgaW5zdCA9IHRoaXMuX19pbnN0YW5jZXNbaW5zdElkeF07CiAgICAgICAgaWYgKGluc3QpIHsKICAgICAgICAgIGxldCBpdGVtUGF0aCA9IHRoaXMuYXMgKyAoaXRlbVN1YlBhdGggPyAnLicgKyBpdGVtU3ViUGF0aCA6ICcnKTsKICAgICAgICAgIC8vIFRoaXMgaXMgZWZmZWN0aXZlbHkgYG5vdGlmeVBhdGhgLCBidXQgYXZvaWRzIHNvbWUgb2YgdGhlIG92ZXJoZWFkCiAgICAgICAgICAvLyBvZiB0aGUgcHVibGljIEFQSQogICAgICAgICAgaW5zdC5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGl0ZW1QYXRoLCB2YWx1ZSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgaW5zdC5fZmx1c2hQcm9wZXJ0aWVzKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpdGVtIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGVsZW1lbnQgc3RhbXBlZCBieQogICAgICogdGhpcyBgZG9tLXJlcGVhdGAuCiAgICAgKgogICAgICogTm90ZSwgdG8gbW9kaWZ5IHN1Yi1wcm9wZXJ0aWVzIG9mIHRoZSBpdGVtLAogICAgICogYG1vZGVsRm9yRWxlbWVudChlbCkuc2V0KCdpdGVtLjxzdWItcHJvcD4nLCB2YWx1ZSlgCiAgICAgKiBzaG91bGQgYmUgdXNlZC4KICAgICAqCiAgICAgKiBAcGFyYW0geyFIVE1MRWxlbWVudH0gZWwgRWxlbWVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIHRoZSBpdGVtLgogICAgICogQHJldHVybiB7Kn0gSXRlbSBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnQuCiAgICAgKi8KICAgIGl0ZW1Gb3JFbGVtZW50KGVsKSB7CiAgICAgIGxldCBpbnN0YW5jZSA9IHRoaXMubW9kZWxGb3JFbGVtZW50KGVsKTsKICAgICAgcmV0dXJuIGluc3RhbmNlICYmIGluc3RhbmNlW3RoaXMuYXNdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5zdCBpbmRleCBmb3IgYSBnaXZlbiBlbGVtZW50IHN0YW1wZWQgYnkgdGhpcyBgZG9tLXJlcGVhdGAuCiAgICAgKiBJZiBgc29ydGAgaXMgcHJvdmlkZWQsIHRoZSBpbmRleCB3aWxsIHJlZmxlY3QgdGhlIHNvcnRlZCBvcmRlciAocmF0aGVyCiAgICAgKiB0aGFuIHRoZSBvcmlnaW5hbCBhcnJheSBvcmRlcikuCiAgICAgKgogICAgICogQHBhcmFtIHshSFRNTEVsZW1lbnR9IGVsIEVsZW1lbnQgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgaW5kZXguCiAgICAgKiBAcmV0dXJuIHs/bnVtYmVyfSBSb3cgaW5kZXggYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50IChub3RlIHRoaXMgbWF5CiAgICAgKiAgIG5vdCBjb3JyZXNwb25kIHRvIHRoZSBhcnJheSBpbmRleCBpZiBhIHVzZXIgYHNvcnRgIGlzIGFwcGxpZWQpLgogICAgICovCiAgICBpbmRleEZvckVsZW1lbnQoZWwpIHsKICAgICAgbGV0IGluc3RhbmNlID0gdGhpcy5tb2RlbEZvckVsZW1lbnQoZWwpOwogICAgICByZXR1cm4gaW5zdGFuY2UgJiYgaW5zdGFuY2VbdGhpcy5pbmRleEFzXTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRlbXBsYXRlICJtb2RlbCIgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gZWxlbWVudCwgd2hpY2gKICAgICAqIHNlcnZlcyBhcyB0aGUgYmluZGluZyBzY29wZSBmb3IgdGhlIHRlbXBsYXRlIGluc3RhbmNlIHRoZSBlbGVtZW50IGlzCiAgICAgKiBjb250YWluZWQgaW4uIEEgdGVtcGxhdGUgbW9kZWwgaXMgYW4gaW5zdGFuY2Ugb2YgYFBvbHltZXIuQmFzZWAsIGFuZAogICAgICogc2hvdWxkIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRlbXBsYXRlIGluc3RhbmNlLgogICAgICoKICAgICAqIEV4YW1wbGU6CiAgICAgKgogICAgICogICBsZXQgbW9kZWwgPSBtb2RlbEZvckVsZW1lbnQoZWwpOwogICAgICogICBpZiAobW9kZWwuaW5kZXggPCAxMCkgewogICAgICogICAgIG1vZGVsLnNldCgnaXRlbS5jaGVja2VkJywgdHJ1ZSk7CiAgICAgKiAgIH0KICAgICAqCiAgICAgKiBAcGFyYW0geyFIVE1MRWxlbWVudH0gZWwgRWxlbWVudCBmb3Igd2hpY2ggdG8gcmV0dXJuIGEgdGVtcGxhdGUgbW9kZWwuCiAgICAgKiBAcmV0dXJuIHtUZW1wbGF0ZUluc3RhbmNlQmFzZX0gTW9kZWwgcmVwcmVzZW50aW5nIHRoZSBiaW5kaW5nIHNjb3BlIGZvcgogICAgICogICB0aGUgZWxlbWVudC4KICAgICAqLwogICAgbW9kZWxGb3JFbGVtZW50KGVsKSB7CiAgICAgIHJldHVybiBQb2x5bWVyLlRlbXBsYXRpemUubW9kZWxGb3JFbGVtZW50KHRoaXMudGVtcGxhdGUsIGVsKTsKICAgIH0KCiAgfQoKICBjdXN0b21FbGVtZW50cy5kZWZpbmUoRG9tUmVwZWF0LmlzLCBEb21SZXBlYXQpOwoKICAvKiogQGNvbnN0ICovCiAgUG9seW1lci5Eb21SZXBlYXQgPSBEb21SZXBlYXQ7Cgp9KSgpOwoKCgoKKGZ1bmN0aW9uKCkgewogICd1c2Ugc3RyaWN0JzsKCiAgLyoqCiAgICogVGhlIGA8ZG9tLWlmPmAgZWxlbWVudCB3aWxsIHN0YW1wIGEgbGlnaHQtZG9tIGA8dGVtcGxhdGU+YCBjaGlsZCB3aGVuCiAgICogdGhlIGBpZmAgcHJvcGVydHkgYmVjb21lcyB0cnV0aHksIGFuZCB0aGUgdGVtcGxhdGUgY2FuIHVzZSBQb2x5bWVyCiAgICogZGF0YS1iaW5kaW5nIGFuZCBkZWNsYXJhdGl2ZSBldmVudCBmZWF0dXJlcyB3aGVuIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YKICAgKiBhIFBvbHltZXIgZWxlbWVudCdzIHRlbXBsYXRlLgogICAqCiAgICogV2hlbiBgaWZgIGJlY29tZXMgZmFsc3ksIHRoZSBzdGFtcGVkIGNvbnRlbnQgaXMgaGlkZGVuIGJ1dCBub3QKICAgKiByZW1vdmVkIGZyb20gZG9tLiBXaGVuIGBpZmAgc3Vic2VxdWVudGx5IGJlY29tZXMgdHJ1dGh5IGFnYWluLCB0aGUgY29udGVudAogICAqIGlzIHNpbXBseSByZS1zaG93bi4gVGhpcyBhcHByb2FjaCBpcyB1c2VkIGR1ZSB0byBpdHMgZmF2b3JhYmxlIHBlcmZvcm1hbmNlCiAgICogY2hhcmFjdGVyaXN0aWNzOiB0aGUgZXhwZW5zZSBvZiBjcmVhdGluZyB0ZW1wbGF0ZSBjb250ZW50IGlzIHBhaWQgb25seQogICAqIG9uY2UgYW5kIGxhemlseS4KICAgKgogICAqIFNldCB0aGUgYHJlc3RhbXBgIHByb3BlcnR5IHRvIHRydWUgdG8gZm9yY2UgdGhlIHN0YW1wZWQgY29udGVudCB0byBiZQogICAqIGNyZWF0ZWQgLyBkZXN0cm95ZWQgd2hlbiB0aGUgYGlmYCBjb25kaXRpb24gY2hhbmdlcy4KICAgKgogICAqIEBjdXN0b21FbGVtZW50CiAgICogQHBvbHltZXIKICAgKiBAZXh0ZW5kcyBQb2x5bWVyLkVsZW1lbnQKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IEN1c3RvbSBlbGVtZW50IHRoYXQgY29uZGl0aW9uYWxseSBzdGFtcHMgYW5kIGhpZGVzIG9yIHJlbW92ZXMKICAgKiAgIHRlbXBsYXRlIGNvbnRlbnQgYmFzZWQgb24gYSBib29sZWFuIGZsYWcuCiAgICovCiAgY2xhc3MgRG9tSWYgZXh0ZW5kcyBQb2x5bWVyLkVsZW1lbnQgewoKICAgIC8vIE5vdCBuZWVkZWQgdG8gZmluZCB0ZW1wbGF0ZTsgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGUgYW5hbHl6ZXIKICAgIC8vIGNhbiBmaW5kIHRoZSB0YWcgbmFtZSBmcm9tIGN1c3RvbUVsZW1lbnRzLmRlZmluZSBjYWxsCiAgICBzdGF0aWMgZ2V0IGlzKCkgeyByZXR1cm4gJ2RvbS1pZic7IH0KCiAgICBzdGF0aWMgZ2V0IHRlbXBsYXRlKCkgeyByZXR1cm4gbnVsbDsgfQoKICAgIHN0YXRpYyBnZXQgcHJvcGVydGllcygpIHsKCiAgICAgIHJldHVybiB7CgogICAgICAgIC8qKgogICAgICAgICAqIEZpcmVkIHdoZW5ldmVyIERPTSBpcyBhZGRlZCBvciByZW1vdmVkL2hpZGRlbiBieSB0aGlzIHRlbXBsYXRlIChieQogICAgICAgICAqIGRlZmF1bHQsIHJlbmRlcmluZyBvY2N1cnMgbGF6aWx5KS4gIFRvIGZvcmNlIGltbWVkaWF0ZSByZW5kZXJpbmcsIGNhbGwKICAgICAgICAgKiBgcmVuZGVyYC4KICAgICAgICAgKgogICAgICAgICAqIEBldmVudCBkb20tY2hhbmdlCiAgICAgICAgICovCgogICAgICAgIC8qKgogICAgICAgICAqIEEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyB0ZW1wbGF0ZSBzaG91bGQgc3RhbXAuCiAgICAgICAgICovCiAgICAgICAgaWY6IHsKICAgICAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgICAgICBvYnNlcnZlcjogJ19fZGVib3VuY2VSZW5kZXInCiAgICAgICAgfSwKCiAgICAgICAgLyoqCiAgICAgICAgICogV2hlbiB0cnVlLCBlbGVtZW50cyB3aWxsIGJlIHJlbW92ZWQgZnJvbSBET00gYW5kIGRpc2NhcmRlZCB3aGVuIGBpZmAKICAgICAgICAgKiBiZWNvbWVzIGZhbHNlIGFuZCByZS1jcmVhdGVkIGFuZCBhZGRlZCBiYWNrIHRvIHRoZSBET00gd2hlbiBgaWZgCiAgICAgICAgICogYmVjb21lcyB0cnVlLiAgQnkgZGVmYXVsdCwgc3RhbXBlZCBlbGVtZW50cyB3aWxsIGJlIGhpZGRlbiBidXQgbGVmdAogICAgICAgICAqIGluIHRoZSBET00gd2hlbiBgaWZgIGJlY29tZXMgZmFsc2UsIHdoaWNoIGlzIGdlbmVyYWxseSByZXN1bHRzCiAgICAgICAgICogaW4gYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgICAgICAqLwogICAgICAgIHJlc3RhbXA6IHsKICAgICAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgICAgICBvYnNlcnZlcjogJ19fZGVib3VuY2VSZW5kZXInCiAgICAgICAgfQoKICAgICAgfTsKCiAgICB9CgogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMuX19yZW5kZXJEZWJvdW5jZXIgPSBudWxsOwogICAgICB0aGlzLl9faW52YWxpZFByb3BzID0gbnVsbDsKICAgICAgdGhpcy5fX2luc3RhbmNlID0gbnVsbDsKICAgICAgdGhpcy5fbGFzdElmID0gZmFsc2U7CiAgICAgIHRoaXMuX19jdG9yID0gbnVsbDsKICAgIH0KCiAgICBfX2RlYm91bmNlUmVuZGVyKCkgewogICAgICAvLyBSZW5kZXIgaXMgYXN5bmMgZm9yIDIgcmVhc29uczoKICAgICAgLy8gMS4gVG8gZWxpbWluYXRlIGRvbSBjcmVhdGlvbiB0cmFzaGluZyBpZiB1c2VyIGNvZGUgdGhyYXNoZXMgYGlmYCBpbiB0aGUKICAgICAgLy8gICAgc2FtZSB0dXJuLiBUaGlzIHdhcyBtb3JlIGNvbW1vbiBpbiAxLnggd2hlcmUgYSBjb21wb3VuZCBjb21wdXRlZAogICAgICAvLyAgICBwcm9wZXJ0eSBjb3VsZCByZXN1bHQgaW4gdGhlIHJlc3VsdCBjaGFuZ2luZyBtdWx0aXBsZSB0aW1lcywgYnV0IGlzCiAgICAgIC8vICAgIG1pdGlnYXRlZCB0byBhIGxhcmdlIGV4dGVudCBieSBiYXRjaGVkIHByb3BlcnR5IHByb2Nlc3NpbmcgaW4gMi54LgogICAgICAvLyAyLiBUbyBhdm9pZCBkb3VibGUgb2JqZWN0IHByb3BhZ2F0aW9uIHdoZW4gYSBiYWcgaW5jbHVkaW5nIHZhbHVlcyBib3VuZAogICAgICAvLyAgICB0byB0aGUgYGlmYCBwcm9wZXJ0eSBhcyB3ZWxsIGFzIG9uZSBvciBtb3JlIGhvc3RQcm9wcyBjb3VsZCBlbnF1ZXVlCiAgICAgIC8vICAgIHRoZSA8ZG9tLWlmPiB0byBmbHVzaCBiZWZvcmUgdGhlIDx0ZW1wbGF0ZT4ncyBob3N0IHByb3BlcnR5CiAgICAgIC8vICAgIGZvcndhcmRpbmcuIEluIHRoYXQgc2NlbmFyaW8gY3JlYXRpbmcgYW4gaW5zdGFuY2Ugd291bGQgcmVzdWx0IGluCiAgICAgIC8vICAgIHRoZSBob3N0IHByb3BzIGJlaW5nIHNldCBvbmNlLCBhbmQgdGhlbiB0aGUgZW5xdWV1ZWQgY2hhbmdlcyBvbiB0aGUKICAgICAgLy8gICAgdGVtcGxhdGUgd291bGQgc2V0IHByb3BlcnRpZXMgYSBzZWNvbmQgdGltZSwgcG90ZW50aWFsbHkgY2F1c2luZyBhbgogICAgICAvLyAgICBvYmplY3QgdG8gYmUgc2V0IHRvIGFuIGluc3RhbmNlIG1vcmUgdGhhbiBvbmNlLiAgQ3JlYXRpbmcgdGhlCiAgICAgIC8vICAgIGluc3RhbmNlIGFzeW5jIGZyb20gZmx1c2hpbmcgZGF0YSBlbnN1cmVzIHRoaXMgZG9lc24ndCBoYXBwZW4uIElmCiAgICAgIC8vICAgIHdlIHdhbnRlZCBhIHN5bmMgb3B0aW9uIGluIHRoZSBmdXR1cmUsIHNpbXBseSBoYXZpbmcgPGRvbS1pZj4gZmx1c2gKICAgICAgLy8gICAgKG9yIGNsZWFyKSBpdHMgdGVtcGxhdGUncyBwZW5kaW5nIGhvc3QgcHJvcGVydGllcyBiZWZvcmUgY3JlYXRpbmcKICAgICAgLy8gICAgdGhlIGluc3RhbmNlIHdvdWxkIGFsc28gYXZvaWQgdGhlIHByb2JsZW0uCiAgICAgIHRoaXMuX19yZW5kZXJEZWJvdW5jZXIgPSBQb2x5bWVyLkRlYm91bmNlci5kZWJvdW5jZSgKICAgICAgICAgICAgdGhpcy5fX3JlbmRlckRlYm91bmNlcgogICAgICAgICAgLCBQb2x5bWVyLkFzeW5jLm1pY3JvVGFzawogICAgICAgICAgLCAoKSA9PiB0aGlzLl9fcmVuZGVyKCkpOwogICAgICBQb2x5bWVyLmVucXVldWVEZWJvdW5jZXIodGhpcy5fX3JlbmRlckRlYm91bmNlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICovCiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHsKICAgICAgc3VwZXIuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTsKICAgICAgaWYgKCF0aGlzLnBhcmVudE5vZGUgfHwKICAgICAgICAgICh0aGlzLnBhcmVudE5vZGUubm9kZVR5cGUgPT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFICYmCiAgICAgICAgICAgIXRoaXMucGFyZW50Tm9kZS5ob3N0KSkgewogICAgICAgIHRoaXMuX190ZWFyZG93bkluc3RhbmNlKCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKi8KICAgIGNvbm5lY3RlZENhbGxiYWNrKCkgewogICAgICBzdXBlci5jb25uZWN0ZWRDYWxsYmFjaygpOwogICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGlmICh0aGlzLmlmKSB7CiAgICAgICAgdGhpcy5fX2RlYm91bmNlUmVuZGVyKCk7CiAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEZvcmNlcyB0aGUgZWxlbWVudCB0byByZW5kZXIgaXRzIGNvbnRlbnQuIE5vcm1hbGx5IHJlbmRlcmluZyBpcwogICAgICogYXN5bmNocm9ub3VzIHRvIGEgcHJvdm9raW5nIGNoYW5nZS4gVGhpcyBpcyBkb25lIGZvciBlZmZpY2llbmN5IHNvCiAgICAgKiB0aGF0IG11bHRpcGxlIGNoYW5nZXMgdHJpZ2dlciBvbmx5IGEgc2luZ2xlIHJlbmRlci4gVGhlIHJlbmRlciBtZXRob2QKICAgICAqIHNob3VsZCBiZSBjYWxsZWQgaWYsIGZvciBleGFtcGxlLCB0ZW1wbGF0ZSByZW5kZXJpbmcgaXMgcmVxdWlyZWQgdG8KICAgICAqIHZhbGlkYXRlIGFwcGxpY2F0aW9uIHN0YXRlLgogICAgICogQHJldHVybiB7dm9pZH0KICAgICAqLwogICAgcmVuZGVyKCkgewogICAgICBQb2x5bWVyLmZsdXNoKCk7CiAgICB9CgogICAgX19yZW5kZXIoKSB7CiAgICAgIGlmICh0aGlzLmlmKSB7CiAgICAgICAgaWYgKCF0aGlzLl9fZW5zdXJlSW5zdGFuY2UoKSkgewogICAgICAgICAgLy8gTm8gdGVtcGxhdGUgZm91bmQgeWV0CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc3RhbXApIHsKICAgICAgICB0aGlzLl9fdGVhcmRvd25JbnN0YW5jZSgpOwogICAgICB9CiAgICAgIGlmICghdGhpcy5yZXN0YW1wICYmIHRoaXMuX19pbnN0YW5jZSkgewogICAgICAgIHRoaXMuX3Nob3dIaWRlQ2hpbGRyZW4oKTsKICAgICAgfQogICAgICBpZiAodGhpcy5pZiAhPSB0aGlzLl9sYXN0SWYpIHsKICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkb20tY2hhbmdlJywgewogICAgICAgICAgYnViYmxlczogdHJ1ZSwKICAgICAgICAgIGNvbXBvc2VkOiB0cnVlCiAgICAgICAgfSkpOwogICAgICAgIHRoaXMuX2xhc3RJZiA9IHRoaXMuaWY7CiAgICAgIH0KICAgIH0KCiAgICBfX2Vuc3VyZUluc3RhbmNlKCkgewogICAgICBsZXQgcGFyZW50Tm9kZSA9IHRoaXMucGFyZW50Tm9kZTsKICAgICAgLy8gR3VhcmQgYWdhaW5zdCBlbGVtZW50IGJlaW5nIGRldGFjaGVkIHdoaWxlIHJlbmRlciB3YXMgcXVldWVkCiAgICAgIGlmIChwYXJlbnROb2RlKSB7CiAgICAgICAgaWYgKCF0aGlzLl9fY3RvcikgewogICAgICAgICAgbGV0IHRlbXBsYXRlID0gLyoqIEB0eXBlIHtIVE1MVGVtcGxhdGVFbGVtZW50fSAqLyh0aGlzLnF1ZXJ5U2VsZWN0b3IoJ3RlbXBsYXRlJykpOwogICAgICAgICAgaWYgKCF0ZW1wbGF0ZSkgewogICAgICAgICAgICAvLyBXYWl0IHVudGlsIGNoaWxkTGlzdCBjaGFuZ2VzIGFuZCB0ZW1wbGF0ZSBzaG91bGQgYmUgdGhlcmUgYnkgdGhlbgogICAgICAgICAgICBsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7CiAgICAgICAgICAgICAgaWYgKHRoaXMucXVlcnlTZWxlY3RvcigndGVtcGxhdGUnKSkgewogICAgICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwogICAgICAgICAgICAgICAgdGhpcy5fX3JlbmRlcigpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RvbS1pZiByZXF1aXJlcyBhIDx0ZW1wbGF0ZT4gY2hpbGQnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMsIHtjaGlsZExpc3Q6IHRydWV9KTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5fX2N0b3IgPSBQb2x5bWVyLlRlbXBsYXRpemUudGVtcGxhdGl6ZSh0ZW1wbGF0ZSwgdGhpcywgewogICAgICAgICAgICAvLyBkb20taWYgdGVtcGxhdGl6ZXIgaW5zdGFuY2VzIHJlcXVpcmUgYG11dGFibGU6IHRydWVgLCBhcwogICAgICAgICAgICAvLyBgX19zeW5jSG9zdFByb3BlcnRpZXNgIHJlbGllcyBvbiB0aGF0IGJlaGF2aW9yIHRvIHN5bmMgb2JqZWN0cwogICAgICAgICAgICBtdXRhYmxlRGF0YTogdHJ1ZSwKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIFByb3BlcnR5IHRvIGZvcndhcmQKICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSBvZiBwcm9wZXJ0eQogICAgICAgICAgICAgKiBAdGhpcyB7dGhpc30KICAgICAgICAgICAgICovCiAgICAgICAgICAgIGZvcndhcmRIb3N0UHJvcDogZnVuY3Rpb24ocHJvcCwgdmFsdWUpIHsKICAgICAgICAgICAgICBpZiAodGhpcy5fX2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5pZikgewogICAgICAgICAgICAgICAgICB0aGlzLl9faW5zdGFuY2UuZm9yd2FyZEhvc3RQcm9wKHByb3AsIHZhbHVlKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gaW5zdGFuY2UgYnV0IGFyZSBzcXVlbGNoaW5nIGhvc3QgcHJvcGVydHkKICAgICAgICAgICAgICAgICAgLy8gZm9yd2FyZGluZyBkdWUgdG8gaWYgYmVpbmcgZmFsc2UsIG5vdGUgdGhlIGludmFsaWRhdGVkCiAgICAgICAgICAgICAgICAgIC8vIHByb3BlcnRpZXMgc28gYF9fc3luY0hvc3RQcm9wZXJ0aWVzYCBjYW4gc3luYyB0aGVtIHRoZSBuZXh0CiAgICAgICAgICAgICAgICAgIC8vIHRpbWUgYGlmYCBiZWNvbWVzIHRydWUKICAgICAgICAgICAgICAgICAgdGhpcy5fX2ludmFsaWRQcm9wcyA9IHRoaXMuX19pbnZhbGlkUHJvcHMgfHwgT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgICAgICAgICAgICAgdGhpcy5fX2ludmFsaWRQcm9wc1tQb2x5bWVyLlBhdGgucm9vdChwcm9wKV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGlmICghdGhpcy5fX2luc3RhbmNlKSB7CiAgICAgICAgICB0aGlzLl9faW5zdGFuY2UgPSBuZXcgdGhpcy5fX2N0b3IoKTsKICAgICAgICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX19pbnN0YW5jZS5yb290LCB0aGlzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5fX3N5bmNIb3N0UHJvcGVydGllcygpOwogICAgICAgICAgbGV0IGMkID0gdGhpcy5fX2luc3RhbmNlLmNoaWxkcmVuOwogICAgICAgICAgaWYgKGMkICYmIGMkLmxlbmd0aCkgewogICAgICAgICAgICAvLyBEZXRlY3QgY2FzZSB3aGVyZSBkb20taWYgd2FzIHJlLWF0dGFjaGVkIGluIG5ldyBwb3NpdGlvbgogICAgICAgICAgICBsZXQgbGFzdENoaWxkID0gdGhpcy5wcmV2aW91c1NpYmxpbmc7CiAgICAgICAgICAgIGlmIChsYXN0Q2hpbGQgIT09IGMkW2MkLmxlbmd0aC0xXSkgewogICAgICAgICAgICAgIGZvciAobGV0IGk9MCwgbjsgKGk8YyQubGVuZ3RoKSAmJiAobj1jJFtpXSk7IGkrKykgewogICAgICAgICAgICAgICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobiwgdGhpcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIF9fc3luY0hvc3RQcm9wZXJ0aWVzKCkgewogICAgICBsZXQgcHJvcHMgPSB0aGlzLl9faW52YWxpZFByb3BzOwogICAgICBpZiAocHJvcHMpIHsKICAgICAgICBmb3IgKGxldCBwcm9wIGluIHByb3BzKSB7CiAgICAgICAgICB0aGlzLl9faW5zdGFuY2UuX3NldFBlbmRpbmdQcm9wZXJ0eShwcm9wLCB0aGlzLl9fZGF0YUhvc3RbcHJvcF0pOwogICAgICAgIH0KICAgICAgICB0aGlzLl9faW52YWxpZFByb3BzID0gbnVsbDsKICAgICAgICB0aGlzLl9faW5zdGFuY2UuX2ZsdXNoUHJvcGVydGllcygpOwogICAgICB9CiAgICB9CgogICAgX190ZWFyZG93bkluc3RhbmNlKCkgewogICAgICBpZiAodGhpcy5fX2luc3RhbmNlKSB7CiAgICAgICAgbGV0IGMkID0gdGhpcy5fX2luc3RhbmNlLmNoaWxkcmVuOwogICAgICAgIGlmIChjJCAmJiBjJC5sZW5ndGgpIHsKICAgICAgICAgIC8vIHVzZSBmaXJzdCBjaGlsZCBwYXJlbnQsIGZvciBjYXNlIHdoZW4gZG9tLWlmIG1heSBoYXZlIGJlZW4gZGV0YWNoZWQKICAgICAgICAgIGxldCBwYXJlbnQgPSBjJFswXS5wYXJlbnROb2RlOwogICAgICAgICAgLy8gSW5zdGFuY2UgY2hpbGRyZW4gbWF5IGJlIGRpc2Nvbm5lY3RlZCBmcm9tIHBhcmVudHMgd2hlbiBkb20taWYKICAgICAgICAgIC8vIGRldGFjaGVzIGlmIGEgdHJlZSB3YXMgaW5uZXJIVE1MJ2VkCiAgICAgICAgICBpZiAocGFyZW50KSB7CiAgICAgICAgICAgIGZvciAobGV0IGk9MCwgbjsgKGk8YyQubGVuZ3RoKSAmJiAobj1jJFtpXSk7IGkrKykgewogICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChuKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB0aGlzLl9faW5zdGFuY2UgPSBudWxsOwogICAgICAgIHRoaXMuX19pbnZhbGlkUHJvcHMgPSBudWxsOwogICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTaG93cyBvciBoaWRlcyB0aGUgdGVtcGxhdGUgaW5zdGFuY2UgdG9wIGxldmVsIGNoaWxkIGVsZW1lbnRzLiBGb3IKICAgICAqIHRleHQgbm9kZXMsIGB0ZXh0Q29udGVudGAgaXMgcmVtb3ZlZCB3aGlsZSAiaGlkZGVuIiBhbmQgcmVwbGFjZWQgd2hlbgogICAgICogInNob3duLiIKICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgKiBAcHJvdGVjdGVkCiAgICAgKi8KICAgIF9zaG93SGlkZUNoaWxkcmVuKCkgewogICAgICBsZXQgaGlkZGVuID0gdGhpcy5fX2hpZGVUZW1wbGF0ZUNoaWxkcmVuX18gfHwgIXRoaXMuaWY7CiAgICAgIGlmICh0aGlzLl9faW5zdGFuY2UpIHsKICAgICAgICB0aGlzLl9faW5zdGFuY2UuX3Nob3dIaWRlQ2hpbGRyZW4oaGlkZGVuKTsKICAgICAgfQogICAgfQoKICB9CgogIGN1c3RvbUVsZW1lbnRzLmRlZmluZShEb21JZi5pcywgRG9tSWYpOwoKICAvKiogQGNvbnN0ICovCiAgUG9seW1lci5Eb21JZiA9IERvbUlmOwoKfSkoKTsKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICAvKioKICAgKiBFbGVtZW50IG1peGluIGZvciByZWNvcmRpbmcgZHluYW1pYyBhc3NvY2lhdGlvbnMgYmV0d2VlbiBpdGVtIHBhdGhzIGluIGEKICAgKiBtYXN0ZXIgYGl0ZW1zYCBhcnJheSBhbmQgYSBgc2VsZWN0ZWRgIGFycmF5IHN1Y2ggdGhhdCBwYXRoIGNoYW5nZXMgdG8gdGhlCiAgICogbWFzdGVyIGFycmF5IChhdCB0aGUgaG9zdCkgZWxlbWVudCBvciBlbHNld2hlcmUgdmlhIGRhdGEtYmluZGluZykgYXJlCiAgICogY29ycmVjdGx5IHByb3BhZ2F0ZWQgdG8gaXRlbXMgaW4gdGhlIHNlbGVjdGVkIGFycmF5IGFuZCB2aWNlLXZlcnNhLgogICAqCiAgICogVGhlIGBpdGVtc2AgcHJvcGVydHkgYWNjZXB0cyBhbiBhcnJheSBvZiB1c2VyIGRhdGEsIGFuZCB2aWEgdGhlCiAgICogYHNlbGVjdChpdGVtKWAgYW5kIGBkZXNlbGVjdChpdGVtKWAgQVBJLCB1cGRhdGVzIHRoZSBgc2VsZWN0ZWRgIHByb3BlcnR5CiAgICogd2hpY2ggbWF5IGJlIGJvdW5kIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGFueSBjaGFuZ2VzIHRvCiAgICogc3ViLWZpZWxkcyBvZiBgc2VsZWN0ZWRgIGl0ZW0ocykgd2lsbCBiZSBrZXB0IGluIHN5bmMgd2l0aCBpdGVtcyBpbiB0aGUKICAgKiBgaXRlbXNgIGFycmF5LiAgV2hlbiBgbXVsdGlgIGlzIGZhbHNlLCBgc2VsZWN0ZWRgIGlzIGEgcHJvcGVydHkKICAgKiByZXByZXNlbnRpbmcgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4gIFdoZW4gYG11bHRpYCBpcyB0cnVlLCBgc2VsZWN0ZWRgCiAgICogaXMgYW4gYXJyYXkgb2YgbXVsdGlwbHkgc2VsZWN0ZWQgaXRlbXMuCiAgICoKICAgKiBAcG9seW1lcgogICAqIEBtaXhpbkZ1bmN0aW9uCiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLkVsZW1lbnRNaXhpbgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgRWxlbWVudCBtaXhpbiBmb3IgcmVjb3JkaW5nIGR5bmFtaWMgYXNzb2NpYXRpb25zIGJldHdlZW4gaXRlbSBwYXRocyBpbiBhCiAgICogbWFzdGVyIGBpdGVtc2AgYXJyYXkgYW5kIGEgYHNlbGVjdGVkYCBhcnJheQogICAqLwogIGxldCBBcnJheVNlbGVjdG9yTWl4aW4gPSBQb2x5bWVyLmRlZHVwaW5nTWl4aW4oc3VwZXJDbGFzcyA9PiB7CgogICAgLyoqCiAgICAgKiBAY29uc3RydWN0b3IKICAgICAqIEBleHRlbmRzIHtzdXBlckNsYXNzfQogICAgICogQGltcGxlbWVudHMge1BvbHltZXJfRWxlbWVudE1peGlufQogICAgICogQHByaXZhdGUKICAgICAqLwogICAgbGV0IGVsZW1lbnRCYXNlID0gUG9seW1lci5FbGVtZW50TWl4aW4oc3VwZXJDbGFzcyk7CgogICAgLyoqCiAgICAgKiBAcG9seW1lcgogICAgICogQG1peGluQ2xhc3MKICAgICAqIEBpbXBsZW1lbnRzIHtQb2x5bWVyX0FycmF5U2VsZWN0b3JNaXhpbn0KICAgICAqIEB1bnJlc3RyaWN0ZWQKICAgICAqLwogICAgY2xhc3MgQXJyYXlTZWxlY3Rvck1peGluIGV4dGVuZHMgZWxlbWVudEJhc2UgewoKICAgICAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkgewoKICAgICAgICByZXR1cm4gewoKICAgICAgICAgIC8qKgogICAgICAgICAgICogQW4gYXJyYXkgY29udGFpbmluZyBpdGVtcyBmcm9tIHdoaWNoIHNlbGVjdGlvbiB3aWxsIGJlIG1hZGUuCiAgICAgICAgICAgKi8KICAgICAgICAgIGl0ZW1zOiB7CiAgICAgICAgICAgIHR5cGU6IEFycmF5LAogICAgICAgICAgfSwKCiAgICAgICAgICAvKioKICAgICAgICAgICAqIFdoZW4gYHRydWVgLCBtdWx0aXBsZSBpdGVtcyBtYXkgYmUgc2VsZWN0ZWQgYXQgb25jZSAoaW4gdGhpcyBjYXNlLAogICAgICAgICAgICogYHNlbGVjdGVkYCBpcyBhbiBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMpLiAgV2hlbiBgZmFsc2VgLAogICAgICAgICAgICogb25seSBvbmUgaXRlbSBtYXkgYmUgc2VsZWN0ZWQgYXQgYSB0aW1lLgogICAgICAgICAgICovCiAgICAgICAgICBtdWx0aTogewogICAgICAgICAgICB0eXBlOiBCb29sZWFuLAogICAgICAgICAgICB2YWx1ZTogZmFsc2UsCiAgICAgICAgICB9LAoKICAgICAgICAgIC8qKgogICAgICAgICAgICogV2hlbiBgbXVsdGlgIGlzIHRydWUsIHRoaXMgaXMgYW4gYXJyYXkgdGhhdCBjb250YWlucyBhbnkgc2VsZWN0ZWQuCiAgICAgICAgICAgKiBXaGVuIGBtdWx0aWAgaXMgZmFsc2UsIHRoaXMgaXMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLCBvciBgbnVsbGAKICAgICAgICAgICAqIGlmIG5vIGl0ZW0gaXMgc2VsZWN0ZWQuCiAgICAgICAgICAgKiBAdHlwZSB7PyhPYmplY3R8QXJyYXk8IU9iamVjdD4pfQogICAgICAgICAgICovCiAgICAgICAgICBzZWxlY3RlZDogewogICAgICAgICAgICB0eXBlOiBPYmplY3QsCiAgICAgICAgICAgIG5vdGlmeTogdHJ1ZQogICAgICAgICAgfSwKCiAgICAgICAgICAvKioKICAgICAgICAgICAqIFdoZW4gYG11bHRpYCBpcyBmYWxzZSwgdGhpcyBpcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0sIG9yIGBudWxsYAogICAgICAgICAgICogaWYgbm8gaXRlbSBpcyBzZWxlY3RlZC4KICAgICAgICAgICAqIEB0eXBlIHs/T2JqZWN0fQogICAgICAgICAgICovCiAgICAgICAgICBzZWxlY3RlZEl0ZW06IHsKICAgICAgICAgICAgdHlwZTogT2JqZWN0LAogICAgICAgICAgICBub3RpZnk6IHRydWUKICAgICAgICAgIH0sCgogICAgICAgICAgLyoqCiAgICAgICAgICAgKiBXaGVuIGB0cnVlYCwgY2FsbGluZyBgc2VsZWN0YCBvbiBhbiBpdGVtIHRoYXQgaXMgYWxyZWFkeSBzZWxlY3RlZAogICAgICAgICAgICogd2lsbCBkZXNlbGVjdCB0aGUgaXRlbS4KICAgICAgICAgICAqLwogICAgICAgICAgdG9nZ2xlOiB7CiAgICAgICAgICAgIHR5cGU6IEJvb2xlYW4sCiAgICAgICAgICAgIHZhbHVlOiBmYWxzZQogICAgICAgICAgfQoKICAgICAgICB9OwogICAgICB9CgogICAgICBzdGF0aWMgZ2V0IG9ic2VydmVycygpIHsKICAgICAgICByZXR1cm4gWydfX3VwZGF0ZVNlbGVjdGlvbihtdWx0aSwgaXRlbXMuKiknXTsKICAgICAgfQoKICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgc3VwZXIoKTsKICAgICAgICB0aGlzLl9fbGFzdEl0ZW1zID0gbnVsbDsKICAgICAgICB0aGlzLl9fbGFzdE11bHRpID0gbnVsbDsKICAgICAgICB0aGlzLl9fc2VsZWN0ZWRNYXAgPSBudWxsOwogICAgICB9CgogICAgICBfX3VwZGF0ZVNlbGVjdGlvbihtdWx0aSwgaXRlbXNJbmZvKSB7CiAgICAgICAgbGV0IHBhdGggPSBpdGVtc0luZm8ucGF0aDsKICAgICAgICBpZiAocGF0aCA9PSAnaXRlbXMnKSB7CiAgICAgICAgICAvLyBDYXNlIDEgLSBpdGVtcyBhcnJheSBjaGFuZ2VkLCBzbyBkaWZmIGFnYWluc3QgcHJldmlvdXMgYXJyYXkgYW5kCiAgICAgICAgICAvLyBkZXNlbGVjdCBhbnkgcmVtb3ZlZCBpdGVtcyBhbmQgYWRqdXN0IHNlbGVjdGVkIGluZGljZXMKICAgICAgICAgIGxldCBuZXdJdGVtcyA9IGl0ZW1zSW5mby5iYXNlIHx8IFtdOwogICAgICAgICAgbGV0IGxhc3RJdGVtcyA9IHRoaXMuX19sYXN0SXRlbXM7CiAgICAgICAgICBsZXQgbGFzdE11bHRpID0gdGhpcy5fX2xhc3RNdWx0aTsKICAgICAgICAgIGlmIChtdWx0aSAhPT0gbGFzdE11bHRpKSB7CiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3Rpb24oKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChsYXN0SXRlbXMpIHsKICAgICAgICAgICAgbGV0IHNwbGljZXMgPSBQb2x5bWVyLkFycmF5U3BsaWNlLmNhbGN1bGF0ZVNwbGljZXMobmV3SXRlbXMsIGxhc3RJdGVtcyk7CiAgICAgICAgICAgIHRoaXMuX19hcHBseVNwbGljZXMoc3BsaWNlcyk7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLl9fbGFzdEl0ZW1zID0gbmV3SXRlbXM7CiAgICAgICAgICB0aGlzLl9fbGFzdE11bHRpID0gbXVsdGk7CiAgICAgICAgfSBlbHNlIGlmIChpdGVtc0luZm8ucGF0aCA9PSAnaXRlbXMuc3BsaWNlcycpIHsKICAgICAgICAgIC8vIENhc2UgMiAtIGdvdCBzcGVjaWZpYyBzcGxpY2UgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgYXJyYXkgbXV0YXRpb246CiAgICAgICAgICAvLyBkZXNlbGVjdCBhbnkgcmVtb3ZlZCBpdGVtcyBhbmQgYWRqdXN0IHNlbGVjdGVkIGluZGljZXMKICAgICAgICAgIHRoaXMuX19hcHBseVNwbGljZXMoaXRlbXNJbmZvLnZhbHVlLmluZGV4U3BsaWNlcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIENhc2UgMyAtIGFuIGFycmF5IGVsZW1lbnQgd2FzIGNoYW5nZWQsIHNvIGRlc2VsZWN0IHRoZSBwcmV2aW91cwogICAgICAgICAgLy8gaXRlbSBmb3IgdGhhdCBpbmRleCBpZiBpdCB3YXMgcHJldmlvdXNseSBzZWxlY3RlZAogICAgICAgICAgbGV0IHBhcnQgPSBwYXRoLnNsaWNlKCdpdGVtcy4nLmxlbmd0aCk7CiAgICAgICAgICBsZXQgaWR4ID0gcGFyc2VJbnQocGFydCwgMTApOwogICAgICAgICAgaWYgKChwYXJ0LmluZGV4T2YoJy4nKSA8IDApICYmIHBhcnQgPT0gaWR4KSB7CiAgICAgICAgICAgIHRoaXMuX19kZXNlbGVjdENoYW5nZWRJZHgoaWR4KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAgIF9fYXBwbHlTcGxpY2VzKHNwbGljZXMpIHsKICAgICAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLl9fc2VsZWN0ZWRNYXA7CiAgICAgICAgLy8gQWRqdXN0IHNlbGVjdGVkIGluZGljZXMgYW5kIG1hcmsgcmVtb3ZhbHMKICAgICAgICBmb3IgKGxldCBpPTA7IGk8c3BsaWNlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgbGV0IHMgPSBzcGxpY2VzW2ldOwogICAgICAgICAgc2VsZWN0ZWQuZm9yRWFjaCgoaWR4LCBpdGVtKSA9PiB7CiAgICAgICAgICAgIGlmIChpZHggPCBzLmluZGV4KSB7CiAgICAgICAgICAgICAgLy8gbm8gY2hhbmdlCiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4ID49IHMuaW5kZXggKyBzLnJlbW92ZWQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgLy8gYWRqdXN0IGluZGV4CiAgICAgICAgICAgICAgc2VsZWN0ZWQuc2V0KGl0ZW0sIGlkeCArIHMuYWRkZWRDb3VudCAtIHMucmVtb3ZlZC5sZW5ndGgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIC8vIHJlbW92ZSBpbmRleAogICAgICAgICAgICAgIHNlbGVjdGVkLnNldChpdGVtLCAtMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHMuYWRkZWRDb3VudDsgaisrKSB7CiAgICAgICAgICAgIGxldCBpZHggPSBzLmluZGV4ICsgajsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkLmhhcyh0aGlzLml0ZW1zW2lkeF0pKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQuc2V0KHRoaXMuaXRlbXNbaWR4XSwgaWR4KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBVcGRhdGUgbGlua2VkIHBhdGhzCiAgICAgICAgdGhpcy5fX3VwZGF0ZUxpbmtzKCk7CiAgICAgICAgLy8gUmVtb3ZlIHNlbGVjdGVkIGl0ZW1zIHRoYXQgd2VyZSByZW1vdmVkIGZyb20gdGhlIGl0ZW1zIGFycmF5CiAgICAgICAgbGV0IHNpZHggPSAwOwogICAgICAgIHNlbGVjdGVkLmZvckVhY2goKGlkeCwgaXRlbSkgPT4gewogICAgICAgICAgaWYgKGlkeCA8IDApIHsKICAgICAgICAgICAgaWYgKHRoaXMubXVsdGkpIHsKICAgICAgICAgICAgICB0aGlzLnNwbGljZSgnc2VsZWN0ZWQnLCBzaWR4LCAxKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZEl0ZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlbGVjdGVkLmRlbGV0ZShpdGVtKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNpZHgrKzsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgX191cGRhdGVMaW5rcygpIHsKICAgICAgICB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzID0ge307CiAgICAgICAgaWYgKHRoaXMubXVsdGkpIHsKICAgICAgICAgIGxldCBzaWR4ID0gMDsKICAgICAgICAgIHRoaXMuX19zZWxlY3RlZE1hcC5mb3JFYWNoKGlkeCA9PiB7CiAgICAgICAgICAgIGlmIChpZHggPj0gMCkgewogICAgICAgICAgICAgIHRoaXMubGlua1BhdGhzKCdpdGVtcy4nICsgaWR4LCAnc2VsZWN0ZWQuJyArIHNpZHgrKyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLl9fc2VsZWN0ZWRNYXAuZm9yRWFjaChpZHggPT4gewogICAgICAgICAgICB0aGlzLmxpbmtQYXRocygnc2VsZWN0ZWQnLCAnaXRlbXMuJyArIGlkeCk7CiAgICAgICAgICAgIHRoaXMubGlua1BhdGhzKCdzZWxlY3RlZEl0ZW0nLCAnaXRlbXMuJyArIGlkeCk7CiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBDbGVhcnMgdGhlIHNlbGVjdGlvbiBzdGF0ZS4KICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGNsZWFyU2VsZWN0aW9uKCkgewogICAgICAgIC8vIFVuYmluZCBwcmV2aW91cyBzZWxlY3Rpb24KICAgICAgICB0aGlzLl9fZGF0YUxpbmtlZFBhdGhzID0ge307CiAgICAgICAgLy8gVGhlIHNlbGVjdGVkIG1hcCBzdG9yZXMgMyBwaWVjZXMgb2YgaW5mb3JtYXRpb246CiAgICAgICAgLy8ga2V5OiBpdGVtcyBhcnJheSBvYmplY3QKICAgICAgICAvLyB2YWx1ZTogaXRlbXMgYXJyYXkgaW5kZXgKICAgICAgICAvLyBvcmRlcjogc2VsZWN0ZWQgYXJyYXkgaW5kZXgKICAgICAgICB0aGlzLl9fc2VsZWN0ZWRNYXAgPSBuZXcgTWFwKCk7CiAgICAgICAgLy8gSW5pdGlhbGl6ZSBzZWxlY3Rpb24KICAgICAgICB0aGlzLnNlbGVjdGVkID0gdGhpcy5tdWx0aSA/IFtdIDogbnVsbDsKICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGl0ZW0gaXMgY3VycmVudGx5IHNlbGVjdGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyp9IGl0ZW0gSXRlbSBmcm9tIGBpdGVtc2AgYXJyYXkgdG8gdGVzdAogICAgICAgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIHRoZSBpdGVtIGlzIHNlbGVjdGVkCiAgICAgICAqLwogICAgICBpc1NlbGVjdGVkKGl0ZW0pIHsKICAgICAgICByZXR1cm4gdGhpcy5fX3NlbGVjdGVkTWFwLmhhcyhpdGVtKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgaXRlbSBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuCiAgICAgICAqCiAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZHggSW5kZXggZnJvbSBgaXRlbXNgIGFycmF5IHRvIHRlc3QKICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaXRlbSBpcyBzZWxlY3RlZAogICAgICAgKi8KICAgICAgaXNJbmRleFNlbGVjdGVkKGlkeCkgewogICAgICAgIHJldHVybiB0aGlzLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1tpZHhdKTsKICAgICAgfQoKICAgICAgX19kZXNlbGVjdENoYW5nZWRJZHgoaWR4KSB7CiAgICAgICAgbGV0IHNpZHggPSB0aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChpZHgpOwogICAgICAgIGlmIChzaWR4ID49IDApIHsKICAgICAgICAgIGxldCBpID0gMDsKICAgICAgICAgIHRoaXMuX19zZWxlY3RlZE1hcC5mb3JFYWNoKChpZHgsIGl0ZW0pID0+IHsKICAgICAgICAgICAgaWYgKHNpZHggPT0gaSsrKSB7CiAgICAgICAgICAgICAgdGhpcy5kZXNlbGVjdChpdGVtKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBfX3NlbGVjdGVkSW5kZXhGb3JJdGVtSW5kZXgoaWR4KSB7CiAgICAgICAgbGV0IHNlbGVjdGVkID0gdGhpcy5fX2RhdGFMaW5rZWRQYXRoc1snaXRlbXMuJyArIGlkeF07CiAgICAgICAgaWYgKHNlbGVjdGVkKSB7CiAgICAgICAgICByZXR1cm4gcGFyc2VJbnQoc2VsZWN0ZWQuc2xpY2UoJ3NlbGVjdGVkLicubGVuZ3RoKSwgMTApOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIERlc2VsZWN0cyB0aGUgZ2l2ZW4gaXRlbSBpZiBpdCBpcyBhbHJlYWR5IHNlbGVjdGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyp9IGl0ZW0gSXRlbSBmcm9tIGBpdGVtc2AgYXJyYXkgdG8gZGVzZWxlY3QKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIGRlc2VsZWN0KGl0ZW0pIHsKICAgICAgICBsZXQgaWR4ID0gdGhpcy5fX3NlbGVjdGVkTWFwLmdldChpdGVtKTsKICAgICAgICBpZiAoaWR4ID49IDApIHsKICAgICAgICAgIHRoaXMuX19zZWxlY3RlZE1hcC5kZWxldGUoaXRlbSk7CiAgICAgICAgICBsZXQgc2lkeDsKICAgICAgICAgIGlmICh0aGlzLm11bHRpKSB7CiAgICAgICAgICAgIHNpZHggPSB0aGlzLl9fc2VsZWN0ZWRJbmRleEZvckl0ZW1JbmRleChpZHgpOwogICAgICAgICAgfQogICAgICAgICAgdGhpcy5fX3VwZGF0ZUxpbmtzKCk7CiAgICAgICAgICBpZiAodGhpcy5tdWx0aSkgewogICAgICAgICAgICB0aGlzLnNwbGljZSgnc2VsZWN0ZWQnLCBzaWR4LCAxKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbSA9IG51bGw7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICAvKioKICAgICAgICogRGVzZWxlY3RzIHRoZSBnaXZlbiBpbmRleCBpZiBpdCBpcyBhbHJlYWR5IHNlbGVjdGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gaWR4IEluZGV4IGZyb20gYGl0ZW1zYCBhcnJheSB0byBkZXNlbGVjdAogICAgICAgKiBAcmV0dXJuIHt2b2lkfQogICAgICAgKi8KICAgICAgZGVzZWxlY3RJbmRleChpZHgpIHsKICAgICAgICB0aGlzLmRlc2VsZWN0KHRoaXMuaXRlbXNbaWR4XSk7CiAgICAgIH0KCiAgICAgIC8qKgogICAgICAgKiBTZWxlY3RzIHRoZSBnaXZlbiBpdGVtLiAgV2hlbiBgdG9nZ2xlYCBpcyB0cnVlLCB0aGlzIHdpbGwgYXV0b21hdGljYWxseQogICAgICAgKiBkZXNlbGVjdCB0aGUgaXRlbSBpZiBhbHJlYWR5IHNlbGVjdGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0geyp9IGl0ZW0gSXRlbSBmcm9tIGBpdGVtc2AgYXJyYXkgdG8gc2VsZWN0CiAgICAgICAqIEByZXR1cm4ge3ZvaWR9CiAgICAgICAqLwogICAgICBzZWxlY3QoaXRlbSkgewogICAgICAgIHRoaXMuc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKGl0ZW0pKTsKICAgICAgfQoKICAgICAgLyoqCiAgICAgICAqIFNlbGVjdHMgdGhlIGdpdmVuIGluZGV4LiAgV2hlbiBgdG9nZ2xlYCBpcyB0cnVlLCB0aGlzIHdpbGwgYXV0b21hdGljYWxseQogICAgICAgKiBkZXNlbGVjdCB0aGUgaXRlbSBpZiBhbHJlYWR5IHNlbGVjdGVkLgogICAgICAgKgogICAgICAgKiBAcGFyYW0ge251bWJlcn0gaWR4IEluZGV4IGZyb20gYGl0ZW1zYCBhcnJheSB0byBzZWxlY3QKICAgICAgICogQHJldHVybiB7dm9pZH0KICAgICAgICovCiAgICAgIHNlbGVjdEluZGV4KGlkeCkgewogICAgICAgIGxldCBpdGVtID0gdGhpcy5pdGVtc1tpZHhdOwogICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkKGl0ZW0pKSB7CiAgICAgICAgICBpZiAoIXRoaXMubXVsdGkpIHsKICAgICAgICAgICAgdGhpcy5fX3NlbGVjdGVkTWFwLmNsZWFyKCk7CiAgICAgICAgICB9CiAgICAgICAgICB0aGlzLl9fc2VsZWN0ZWRNYXAuc2V0KGl0ZW0sIGlkeCk7CiAgICAgICAgICB0aGlzLl9fdXBkYXRlTGlua3MoKTsKICAgICAgICAgIGlmICh0aGlzLm11bHRpKSB7CiAgICAgICAgICAgIHRoaXMucHVzaCgnc2VsZWN0ZWQnLCBpdGVtKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW07CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRvZ2dsZSkgewogICAgICAgICAgdGhpcy5kZXNlbGVjdEluZGV4KGlkeCk7CiAgICAgICAgfQogICAgICB9CgogICAgfQoKICAgIHJldHVybiBBcnJheVNlbGVjdG9yTWl4aW47CgogIH0pOwoKICAvLyBleHBvcnQgbWl4aW4KICBQb2x5bWVyLkFycmF5U2VsZWN0b3JNaXhpbiA9IEFycmF5U2VsZWN0b3JNaXhpbjsKCiAgLyoqCiAgICogQGNvbnN0cnVjdG9yCiAgICogQGV4dGVuZHMge1BvbHltZXIuRWxlbWVudH0KICAgKiBAaW1wbGVtZW50cyB7UG9seW1lcl9BcnJheVNlbGVjdG9yTWl4aW59CiAgICogQHByaXZhdGUKICAgKi8KICBsZXQgYmFzZUFycmF5U2VsZWN0b3IgPSBBcnJheVNlbGVjdG9yTWl4aW4oUG9seW1lci5FbGVtZW50KTsKCiAgLyoqCiAgICogRWxlbWVudCBpbXBsZW1lbnRpbmcgdGhlIGBQb2x5bWVyLkFycmF5U2VsZWN0b3JgIG1peGluLCB3aGljaCByZWNvcmRzCiAgICogZHluYW1pYyBhc3NvY2lhdGlvbnMgYmV0d2VlbiBpdGVtIHBhdGhzIGluIGEgbWFzdGVyIGBpdGVtc2AgYXJyYXkgYW5kIGEKICAgKiBgc2VsZWN0ZWRgIGFycmF5IHN1Y2ggdGhhdCBwYXRoIGNoYW5nZXMgdG8gdGhlIG1hc3RlciBhcnJheSAoYXQgdGhlIGhvc3QpCiAgICogZWxlbWVudCBvciBlbHNld2hlcmUgdmlhIGRhdGEtYmluZGluZykgYXJlIGNvcnJlY3RseSBwcm9wYWdhdGVkIHRvIGl0ZW1zCiAgICogaW4gdGhlIHNlbGVjdGVkIGFycmF5IGFuZCB2aWNlLXZlcnNhLgogICAqCiAgICogVGhlIGBpdGVtc2AgcHJvcGVydHkgYWNjZXB0cyBhbiBhcnJheSBvZiB1c2VyIGRhdGEsIGFuZCB2aWEgdGhlCiAgICogYHNlbGVjdChpdGVtKWAgYW5kIGBkZXNlbGVjdChpdGVtKWAgQVBJLCB1cGRhdGVzIHRoZSBgc2VsZWN0ZWRgIHByb3BlcnR5CiAgICogd2hpY2ggbWF5IGJlIGJvdW5kIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGFueSBjaGFuZ2VzIHRvCiAgICogc3ViLWZpZWxkcyBvZiBgc2VsZWN0ZWRgIGl0ZW0ocykgd2lsbCBiZSBrZXB0IGluIHN5bmMgd2l0aCBpdGVtcyBpbiB0aGUKICAgKiBgaXRlbXNgIGFycmF5LiAgV2hlbiBgbXVsdGlgIGlzIGZhbHNlLCBgc2VsZWN0ZWRgIGlzIGEgcHJvcGVydHkKICAgKiByZXByZXNlbnRpbmcgdGhlIGxhc3Qgc2VsZWN0ZWQgaXRlbS4gIFdoZW4gYG11bHRpYCBpcyB0cnVlLCBgc2VsZWN0ZWRgCiAgICogaXMgYW4gYXJyYXkgb2YgbXVsdGlwbHkgc2VsZWN0ZWQgaXRlbXMuCiAgICoKICAgKiBFeGFtcGxlOgogICAqCiAgICogYGBgaHRtbAogICAqIDxkb20tbW9kdWxlIGlkPSJlbXBsb3llZS1saXN0Ij4KICAgKgogICAqICAgPHRlbXBsYXRlPgogICAqCiAgICogICAgIDxkaXY+IEVtcGxveWVlIGxpc3Q6IDwvZGl2PgogICAqICAgICA8ZG9tLXJlcGVhdCBpZD0iZW1wbG95ZWVMaXN0IiBpdGVtcz0ie3tlbXBsb3llZXN9fSI+CiAgICogICAgICAgPHRlbXBsYXRlPgogICAqICAgICAgICAgPGRpdj5GaXJzdCBuYW1lOiA8c3Bhbj57e2l0ZW0uZmlyc3R9fTwvc3Bhbj48L2Rpdj4KICAgKiAgICAgICAgICAgPGRpdj5MYXN0IG5hbWU6IDxzcGFuPnt7aXRlbS5sYXN0fX08L3NwYW4+PC9kaXY+CiAgICogICAgICAgICAgIDxidXR0b24gb24tY2xpY2s9InRvZ2dsZVNlbGVjdGlvbiI+U2VsZWN0PC9idXR0b24+CiAgICogICAgICAgPC90ZW1wbGF0ZT4KICAgKiAgICAgPC9kb20tcmVwZWF0PgogICAqCiAgICogICAgIDxhcnJheS1zZWxlY3RvciBpZD0ic2VsZWN0b3IiIGl0ZW1zPSJ7e2VtcGxveWVlc319IiBzZWxlY3RlZD0ie3tzZWxlY3RlZH19IiBtdWx0aSB0b2dnbGU+PC9hcnJheS1zZWxlY3Rvcj4KICAgKgogICAqICAgICA8ZGl2PiBTZWxlY3RlZCBlbXBsb3llZXM6IDwvZGl2PgogICAqICAgICA8ZG9tLXJlcGVhdCBpdGVtcz0ie3tzZWxlY3RlZH19Ij4KICAgKiAgICAgICA8dGVtcGxhdGU+CiAgICogICAgICAgICA8ZGl2PkZpcnN0IG5hbWU6IDxzcGFuPnt7aXRlbS5maXJzdH19PC9zcGFuPjwvZGl2PgogICAqICAgICAgICAgPGRpdj5MYXN0IG5hbWU6IDxzcGFuPnt7aXRlbS5sYXN0fX08L3NwYW4+PC9kaXY+CiAgICogICAgICAgPC90ZW1wbGF0ZT4KICAgKiAgICAgPC9kb20tcmVwZWF0PgogICAqCiAgICogICA8L3RlbXBsYXRlPgogICAqCiAgICogPC9kb20tbW9kdWxlPgogICAqIGBgYAogICAqCiAgICogYGBganMKICAgKmNsYXNzIEVtcGxveWVlTGlzdCBleHRlbmRzIFBvbHltZXIuRWxlbWVudCB7CiAgICogIHN0YXRpYyBnZXQgaXMoKSB7IHJldHVybiAnZW1wbG95ZWUtbGlzdCc7IH0KICAgKiAgc3RhdGljIGdldCBwcm9wZXJ0aWVzKCkgewogICAqICAgIHJldHVybiB7CiAgICogICAgICBlbXBsb3llZXM6IHsKICAgKiAgICAgICAgdmFsdWUoKSB7CiAgICogICAgICAgICAgcmV0dXJuIFsKICAgKiAgICAgICAgICAgIHtmaXJzdDogJ0JvYicsIGxhc3Q6ICdTbWl0aCd9LAogICAqICAgICAgICAgICAge2ZpcnN0OiAnU2FsbHknLCBsYXN0OiAnSm9obnNvbid9LAogICAqICAgICAgICAgICAgLi4uCiAgICogICAgICAgICAgXTsKICAgKiAgICAgICAgfQogICAqICAgICAgfQogICAqICAgIH07CiAgICogIH0KICAgKiAgdG9nZ2xlU2VsZWN0aW9uKGUpIHsKICAgKiAgICBsZXQgaXRlbSA9IHRoaXMuJC5lbXBsb3llZUxpc3QuaXRlbUZvckVsZW1lbnQoZS50YXJnZXQpOwogICAqICAgIHRoaXMuJC5zZWxlY3Rvci5zZWxlY3QoaXRlbSk7CiAgICogIH0KICAgKn0KICAgKiBgYGAKICAgKgogICAqIEBwb2x5bWVyCiAgICogQGN1c3RvbUVsZW1lbnQKICAgKiBAZXh0ZW5kcyB7YmFzZUFycmF5U2VsZWN0b3J9CiAgICogQGFwcGxpZXNNaXhpbiBQb2x5bWVyLkFycmF5U2VsZWN0b3JNaXhpbgogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgQ3VzdG9tIGVsZW1lbnQgdGhhdCBsaW5rcyBwYXRocyBiZXR3ZWVuIGFuIGlucHV0IGBpdGVtc2AgYXJyYXkgYW5kCiAgICogICBhbiBvdXRwdXQgYHNlbGVjdGVkYCBpdGVtIG9yIGFycmF5IGJhc2VkIG9uIGNhbGxzIHRvIGl0cyBzZWxlY3Rpb24gQVBJLgogICAqLwogIGNsYXNzIEFycmF5U2VsZWN0b3IgZXh0ZW5kcyBiYXNlQXJyYXlTZWxlY3RvciB7CiAgICAvLyBOb3QgbmVlZGVkIHRvIGZpbmQgdGVtcGxhdGU7IGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIGFuYWx5emVyCiAgICAvLyBjYW4gZmluZCB0aGUgdGFnIG5hbWUgZnJvbSBjdXN0b21FbGVtZW50cy5kZWZpbmUgY2FsbAogICAgc3RhdGljIGdldCBpcygpIHsgcmV0dXJuICdhcnJheS1zZWxlY3Rvcic7IH0KICB9CiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKEFycmF5U2VsZWN0b3IuaXMsIEFycmF5U2VsZWN0b3IpOwoKICAvKiogQGNvbnN0ICovCiAgUG9seW1lci5BcnJheVNlbGVjdG9yID0gQXJyYXlTZWxlY3RvcjsKCn0pKCk7CgoKKGZ1bmN0aW9uKCl7LyoKCkNvcHlyaWdodCAoYykgMjAxNyBUaGUgUG9seW1lciBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuClRoaXMgY29kZSBtYXkgb25seSBiZSB1c2VkIHVuZGVyIHRoZSBCU0Qgc3R5bGUgbGljZW5zZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vTElDRU5TRS50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBhdXRob3JzIG1heSBiZSBmb3VuZCBhdCBodHRwOi8vcG9seW1lci5naXRodWIuaW8vQVVUSE9SUy50eHQKVGhlIGNvbXBsZXRlIHNldCBvZiBjb250cmlidXRvcnMgbWF5IGJlIGZvdW5kIGF0IGh0dHA6Ly9wb2x5bWVyLmdpdGh1Yi5pby9DT05UUklCVVRPUlMudHh0CkNvZGUgZGlzdHJpYnV0ZWQgYnkgR29vZ2xlIGFzIHBhcnQgb2YgdGhlIHBvbHltZXIgcHJvamVjdCBpcyBhbHNvCnN1YmplY3QgdG8gYW4gYWRkaXRpb25hbCBJUCByaWdodHMgZ3JhbnQgZm91bmQgYXQgaHR0cDovL3BvbHltZXIuZ2l0aHViLmlvL1BBVEVOVFMudHh0CiovCid1c2Ugc3RyaWN0Jzt2YXIgYz1udWxsLGY9d2luZG93LkhUTUxJbXBvcnRzJiZ3aW5kb3cuSFRNTEltcG9ydHMud2hlblJlYWR5fHxudWxsLGc7ZnVuY3Rpb24gaChhKXtyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtmP2YoYSk6KGN8fChjPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGEpe2c9YX0pLCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP2coKTpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiZnKCl9KSksYy50aGVuKGZ1bmN0aW9uKCl7YSYmYSgpfSkpfSl9O3ZhciBrPW51bGwsbD1udWxsO2Z1bmN0aW9uIG0oKXt0aGlzLmN1c3RvbVN0eWxlcz1bXTt0aGlzLmVucXVldWVkPSExO2goZnVuY3Rpb24oKXt3aW5kb3cuU2hhZHlDU1MuZmx1c2hDdXN0b21TdHlsZXMmJndpbmRvdy5TaGFkeUNTUy5mbHVzaEN1c3RvbVN0eWxlcygpfSl9ZnVuY3Rpb24gbihhKXshYS5lbnF1ZXVlZCYmbCYmKGEuZW5xdWV1ZWQ9ITAsaChsKSl9bS5wcm90b3R5cGUuYz1mdW5jdGlvbihhKXthLl9fc2VlbkJ5U2hhZHlDU1N8fChhLl9fc2VlbkJ5U2hhZHlDU1M9ITAsdGhpcy5jdXN0b21TdHlsZXMucHVzaChhKSxuKHRoaXMpKX07bS5wcm90b3R5cGUuYj1mdW5jdGlvbihhKXtpZihhLl9fc2hhZHlDU1NDYWNoZWRTdHlsZSlyZXR1cm4gYS5fX3NoYWR5Q1NTQ2FjaGVkU3R5bGU7dmFyIGI7YS5nZXRTdHlsZT9iPWEuZ2V0U3R5bGUoKTpiPWE7cmV0dXJuIGJ9OwptLnByb3RvdHlwZS5hPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuY3VzdG9tU3R5bGVzLGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXTtpZighZC5fX3NoYWR5Q1NTQ2FjaGVkU3R5bGUpe3ZhciBlPXRoaXMuYihkKTtlJiYoZT1lLl9fYXBwbGllZEVsZW1lbnR8fGUsayYmayhlKSxkLl9fc2hhZHlDU1NDYWNoZWRTdHlsZT1lKX19cmV0dXJuIGF9O20ucHJvdG90eXBlLmFkZEN1c3RvbVN0eWxlPW0ucHJvdG90eXBlLmM7bS5wcm90b3R5cGUuZ2V0U3R5bGVGb3JDdXN0b21TdHlsZT1tLnByb3RvdHlwZS5iO20ucHJvdG90eXBlLnByb2Nlc3NTdHlsZXM9bS5wcm90b3R5cGUuYTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobS5wcm90b3R5cGUse3RyYW5zZm9ybUNhbGxiYWNrOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga30sc2V0OmZ1bmN0aW9uKGEpe2s9YX19LHZhbGlkYXRlQ2FsbGJhY2s6e2dldDpmdW5jdGlvbigpe3JldHVybiBsfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ITE7bHx8KGI9ITApO2w9YTtiJiZuKHRoaXMpfX19KTtmdW5jdGlvbiBwKGEsYil7Zm9yKHZhciBkIGluIGIpbnVsbD09PWQ/YS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShkKTphLnN0eWxlLnNldFByb3BlcnR5KGQsYltkXSl9O3ZhciBxPSEod2luZG93LlNoYWR5RE9NJiZ3aW5kb3cuU2hhZHlET00uaW5Vc2UpLHI7ZnVuY3Rpb24gdChhKXtyPWEmJmEuc2hpbWNzc3Byb3BlcnRpZXM/ITE6cXx8IShuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvNjAxfEVkZ2VcLzE1Lyl8fCF3aW5kb3cuQ1NTfHwhQ1NTLnN1cHBvcnRzfHwhQ1NTLnN1cHBvcnRzKCJib3gtc2hhZG93IiwiMCAwIDAgdmFyKC0tZm9vKSIpKX12YXIgdTt3aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5jc3NCdWlsZCYmKHU9d2luZG93LlNoYWR5Q1NTLmNzc0J1aWxkKTt2YXIgdj0hKCF3aW5kb3cuU2hhZHlDU1N8fCF3aW5kb3cuU2hhZHlDU1MuZGlzYWJsZVJ1bnRpbWUpOwp3aW5kb3cuU2hhZHlDU1MmJnZvaWQgMCE9PXdpbmRvdy5TaGFkeUNTUy5uYXRpdmVDc3M/cj13aW5kb3cuU2hhZHlDU1MubmF0aXZlQ3NzOndpbmRvdy5TaGFkeUNTUz8odCh3aW5kb3cuU2hhZHlDU1MpLHdpbmRvdy5TaGFkeUNTUz12b2lkIDApOnQod2luZG93LldlYkNvbXBvbmVudHMmJndpbmRvdy5XZWJDb21wb25lbnRzLmZsYWdzKTt2YXIgdz1yLHg9dTt2YXIgeT1uZXcgbTt3aW5kb3cuU2hhZHlDU1N8fCh3aW5kb3cuU2hhZHlDU1M9e3ByZXBhcmVUZW1wbGF0ZTpmdW5jdGlvbigpe30scHJlcGFyZVRlbXBsYXRlRG9tOmZ1bmN0aW9uKCl7fSxwcmVwYXJlVGVtcGxhdGVTdHlsZXM6ZnVuY3Rpb24oKXt9LHN0eWxlU3VidHJlZTpmdW5jdGlvbihhLGIpe3kuYSgpO3AoYSxiKX0sc3R5bGVFbGVtZW50OmZ1bmN0aW9uKCl7eS5hKCl9LHN0eWxlRG9jdW1lbnQ6ZnVuY3Rpb24oYSl7eS5hKCk7cChkb2N1bWVudC5ib2R5LGEpfSxnZXRDb21wdXRlZFN0eWxlVmFsdWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhKS5nZXRQcm9wZXJ0eVZhbHVlKGIpKT9hLnRyaW0oKToiIn0sZmx1c2hDdXN0b21TdHlsZXM6ZnVuY3Rpb24oKXt9LG5hdGl2ZUNzczp3LG5hdGl2ZVNoYWRvdzpxLGNzc0J1aWxkOngsZGlzYWJsZVJ1bnRpbWU6dn0pO3dpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZT15O30pLmNhbGwodGhpcyk7CgoKCgooZnVuY3Rpb24oKSB7CiAgJ3VzZSBzdHJpY3QnOwoKICBjb25zdCBhdHRyID0gJ2luY2x1ZGUnOwoKICBjb25zdCBDdXN0b21TdHlsZUludGVyZmFjZSA9IHdpbmRvdy5TaGFkeUNTUy5DdXN0b21TdHlsZUludGVyZmFjZTsKCiAgLyoqCiAgICogQ3VzdG9tIGVsZW1lbnQgZm9yIGRlZmluaW5nIHN0eWxlcyBpbiB0aGUgbWFpbiBkb2N1bWVudCB0aGF0IGNhbiB0YWtlCiAgICogYWR2YW50YWdlIG9mIFtzaGFkeSBET01dKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzKSBzaGltcwogICAqIGZvciBzdHlsZSBlbmNhcHN1bGF0aW9uLCBjdXN0b20gcHJvcGVydGllcywgYW5kIGN1c3RvbSBtaXhpbnMuCiAgICoKICAgKiAtIERvY3VtZW50IHN0eWxlcyBkZWZpbmVkIGluIGEgYDxjdXN0b20tc3R5bGU+YCBhcmUgc2hpbW1lZCB0byBlbnN1cmUgdGhleQogICAqICAgZG8gbm90IGxlYWsgaW50byBsb2NhbCBET00gd2hlbiBydW5uaW5nIG9uIGJyb3dzZXJzIHdpdGhvdXQgbmF0aXZlCiAgICogICBTaGFkb3cgRE9NLgogICAqIC0gQ3VzdG9tIHByb3BlcnRpZXMgY2FuIGJlIGRlZmluZWQgaW4gYSBgPGN1c3RvbS1zdHlsZT5gLiBVc2UgdGhlIGBodG1sYCBzZWxlY3RvcgogICAqICAgdG8gZGVmaW5lIGN1c3RvbSBwcm9wZXJ0aWVzIHRoYXQgYXBwbHkgdG8gYWxsIGN1c3RvbSBlbGVtZW50cy4KICAgKiAtIEN1c3RvbSBtaXhpbnMgY2FuIGJlIGRlZmluZWQgaW4gYSBgPGN1c3RvbS1zdHlsZT5gLCBpZiB5b3UgaW1wb3J0IHRoZSBvcHRpb25hbAogICAqICAgW2FwcGx5IHNoaW1dKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL3NoYWR5Y3NzI2Fib3V0LWFwcGx5c2hpbSkKICAgKiAgIChgc2hhZHljc3MvYXBwbHktc2hpbS5odG1sYCkuCiAgICoKICAgKiBUbyB1c2U6CiAgICoKICAgKiAtIEltcG9ydCBgY3VzdG9tLXN0eWxlLmh0bWxgLgogICAqIC0gUGxhY2UgYSBgPGN1c3RvbS1zdHlsZT5gIGVsZW1lbnQgaW4gdGhlIG1haW4gZG9jdW1lbnQsIHdyYXBwaW5nIGFuIGlubGluZSBgPHN0eWxlPmAgdGFnIHRoYXQKICAgKiAgIGNvbnRhaW5zIHRoZSBDU1MgcnVsZXMgeW91IHdhbnQgdG8gc2hpbS4KICAgKgogICAqIEZvciBleGFtcGxlOgogICAqCiAgICogYGBgaHRtbAogICAqIDwhLS0gaW1wb3J0IGFwcGx5IHNoaW0tLW9ubHkgcmVxdWlyZWQgaWYgdXNpbmcgbWl4aW5zIC0tPgogICAqIDxsaW5rIHJlbD0iaW1wb3J0IiBocmVmPSJib3dlcl9jb21wb25lbnRzL3NoYWR5Y3NzL2FwcGx5LXNoaW0uaHRtbCI+CiAgICogPCEtLSBpbXBvcnQgY3VzdG9tLXN0eWxlIGVsZW1lbnQgLS0+CiAgICogPGxpbmsgcmVsPSJpbXBvcnQiIGhyZWY9ImJvd2VyX2NvbXBvbmVudHMvcG9seW1lci9saWIvZWxlbWVudHMvY3VzdG9tLXN0eWxlLmh0bWwiPgogICAqCiAgICogPGN1c3RvbS1zdHlsZT4KICAgKiAgIDxzdHlsZT4KICAgKiAgICAgaHRtbCB7CiAgICogICAgICAgLS1jdXN0b20tY29sb3I6IGJsdWU7CiAgICogICAgICAgLS1jdXN0b20tbWl4aW46IHsKICAgKiAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAqICAgICAgICAgY29sb3I6IHJlZDsKICAgKiAgICAgICB9OwogICAqICAgICB9CiAgICogICA8L3N0eWxlPgogICAqIDwvY3VzdG9tLXN0eWxlPgogICAqIGBgYAogICAqCiAgICogQGN1c3RvbUVsZW1lbnQKICAgKiBAZXh0ZW5kcyBIVE1MRWxlbWVudAogICAqIEBtZW1iZXJvZiBQb2x5bWVyCiAgICogQHN1bW1hcnkgQ3VzdG9tIGVsZW1lbnQgZm9yIGRlZmluaW5nIHN0eWxlcyBpbiB0aGUgbWFpbiBkb2N1bWVudCB0aGF0IGNhbgogICAqICAgdGFrZSBhZHZhbnRhZ2Ugb2YgUG9seW1lcidzIHN0eWxlIHNjb3BpbmcgYW5kIGN1c3RvbSBwcm9wZXJ0aWVzIHNoaW1zLgogICAqLwogIGNsYXNzIEN1c3RvbVN0eWxlIGV4dGVuZHMgSFRNTEVsZW1lbnQgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMuX3N0eWxlID0gbnVsbDsKICAgICAgQ3VzdG9tU3R5bGVJbnRlcmZhY2UuYWRkQ3VzdG9tU3R5bGUodGhpcyk7CiAgICB9CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxpZ2h0LURPTSBgPHN0eWxlPmAgY2hpbGQgdGhpcyBlbGVtZW50IHdyYXBzLiAgVXBvbiBmaXJzdAogICAgICogY2FsbCBhbnkgc3R5bGUgbW9kdWxlcyByZWZlcmVuY2VkIHZpYSB0aGUgYGluY2x1ZGVgIGF0dHJpYnV0ZSB3aWxsIGJlCiAgICAgKiBjb25jYXRlbmF0ZWQgdG8gdGhpcyBlbGVtZW50J3MgYDxzdHlsZT5gLgogICAgICoKICAgICAqIEByZXR1cm4ge0hUTUxTdHlsZUVsZW1lbnR9IFRoaXMgZWxlbWVudCdzIGxpZ2h0LURPTSBgPHN0eWxlPmAKICAgICAqLwogICAgZ2V0U3R5bGUoKSB7CiAgICAgIGlmICh0aGlzLl9zdHlsZSkgewogICAgICAgIHJldHVybiB0aGlzLl9zdHlsZTsKICAgICAgfQogICAgICBjb25zdCBzdHlsZSA9IC8qKiBAdHlwZSB7SFRNTFN0eWxlRWxlbWVudH0gKi8odGhpcy5xdWVyeVNlbGVjdG9yKCdzdHlsZScpKTsKICAgICAgaWYgKCFzdHlsZSkgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGU7CiAgICAgIGNvbnN0IGluY2x1ZGUgPSBzdHlsZS5nZXRBdHRyaWJ1dGUoYXR0cik7CiAgICAgIGlmIChpbmNsdWRlKSB7CiAgICAgICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKGF0dHIpOwogICAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gUG9seW1lci5TdHlsZUdhdGhlci5jc3NGcm9tTW9kdWxlcyhpbmNsdWRlKSArIHN0eWxlLnRleHRDb250ZW50OwogICAgICB9CiAgICAgIC8qCiAgICAgIEhUTUwgSW1wb3J0cyBzdHlsaW5nIHRoZSBtYWluIGRvY3VtZW50IGFyZSBkZXByZWNhdGVkIGluIENocm9tZQogICAgICBodHRwczovL2NyYnVnLmNvbS81MjM5NTIKCiAgICAgIElmIHRoaXMgZWxlbWVudCBpcyBub3QgaW4gdGhlIG1haW4gZG9jdW1lbnQsIHRoZW4gaXQgbXVzdCBiZSBpbiBhbiBIVE1MIEltcG9ydCBkb2N1bWVudC4KICAgICAgSW4gdGhhdCBjYXNlLCBtb3ZlIHRoZSBjdXN0b20gc3R5bGUgdG8gdGhlIG1haW4gZG9jdW1lbnQuCgogICAgICBUaGUgb3JkZXJpbmcgb2YgYDxjdXN0b20tc3R5bGU+YCBzaG91bGQgc3RheSB0aGUgc2FtZSBhcyB3aGVuIGxvYWRlZCBieSBIVE1MIEltcG9ydHMsIGJ1dCB0aGVyZSBtYXkgYmUgb2RkCiAgICAgIGNhc2VzIG9mIG9yZGVyaW5nIHcuci50IHRoZSBtYWluIGRvY3VtZW50IHN0eWxlcy4KICAgICAgKi8KICAgICAgaWYgKHRoaXMub3duZXJEb2N1bWVudCAhPT0gd2luZG93LmRvY3VtZW50KSB7CiAgICAgICAgd2luZG93LmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX3N0eWxlOwogICAgfQogIH0KCiAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnY3VzdG9tLXN0eWxlJywgQ3VzdG9tU3R5bGUpOwoKICAvKiogQGNvbnN0ICovCiAgUG9seW1lci5DdXN0b21TdHlsZSA9IEN1c3RvbVN0eWxlOwp9KSgpOwoKCihmdW5jdGlvbigpIHsKICAndXNlIHN0cmljdCc7CgogIGxldCBtdXRhYmxlUHJvcGVydHlDaGFuZ2U7CiAgLyoqIEBzdXBwcmVzcyB7bWlzc2luZ1Byb3BlcnRpZXN9ICovCiAgKCgpID0+IHsKICAgIG11dGFibGVQcm9wZXJ0eUNoYW5nZSA9IFBvbHltZXIuTXV0YWJsZURhdGEuX211dGFibGVQcm9wZXJ0eUNoYW5nZTsKICB9KSgpOwoKICAvKioKICAgKiBMZWdhY3kgZWxlbWVudCBiZWhhdmlvciB0byBza2lwIHN0cmljdCBkaXJ0eS1jaGVja2luZyBmb3Igb2JqZWN0cyBhbmQgYXJyYXlzLAogICAqIChhbHdheXMgY29uc2lkZXIgdGhlbSB0byBiZSAiZGlydHkiKSBmb3IgdXNlIG9uIGxlZ2FjeSBBUEkgUG9seW1lciBlbGVtZW50cy4KICAgKgogICAqIEJ5IGRlZmF1bHQsIGBQb2x5bWVyLlByb3BlcnR5RWZmZWN0c2AgcGVyZm9ybXMgc3RyaWN0IGRpcnR5IGNoZWNraW5nIG9uCiAgICogb2JqZWN0cywgd2hpY2ggbWVhbnMgdGhhdCBhbnkgZGVlcCBtb2RpZmljYXRpb25zIHRvIGFuIG9iamVjdCBvciBhcnJheSB3aWxsCiAgICogbm90IGJlIHByb3BhZ2F0ZWQgdW5sZXNzICJpbW11dGFibGUiIGRhdGEgcGF0dGVybnMgYXJlIHVzZWQgKGkuZS4gYWxsIG9iamVjdAogICAqIHJlZmVyZW5jZXMgZnJvbSB0aGUgcm9vdCB0byB0aGUgbXV0YXRpb24gd2VyZSBjaGFuZ2VkKS4KICAgKgogICAqIFBvbHltZXIgYWxzbyBwcm92aWRlcyBhIHByb3ByaWV0YXJ5IGRhdGEgbXV0YXRpb24gYW5kIHBhdGggbm90aWZpY2F0aW9uIEFQSQogICAqIChlLmcuIGBub3RpZnlQYXRoYCwgYHNldGAsIGFuZCBhcnJheSBtdXRhdGlvbiBBUEkncykgdGhhdCBhbGxvdyBlZmZpY2llbnQKICAgKiBtdXRhdGlvbiBhbmQgbm90aWZpY2F0aW9uIG9mIGRlZXAgY2hhbmdlcyBpbiBhbiBvYmplY3QgZ3JhcGggdG8gYWxsIGVsZW1lbnRzCiAgICogYm91bmQgdG8gdGhlIHNhbWUgb2JqZWN0IGdyYXBoLgogICAqCiAgICogSW4gY2FzZXMgd2hlcmUgbmVpdGhlciBpbW11dGFibGUgcGF0dGVybnMgbm9yIHRoZSBkYXRhIG11dGF0aW9uIEFQSSBjYW4gYmUKICAgKiB1c2VkLCBhcHBseWluZyB0aGlzIG1peGluIHdpbGwgY2F1c2UgUG9seW1lciB0byBza2lwIGRpcnR5IGNoZWNraW5nIGZvcgogICAqIG9iamVjdHMgYW5kIGFycmF5cyAoYWx3YXlzIGNvbnNpZGVyIHRoZW0gdG8gYmUgImRpcnR5IikuICBUaGlzIGFsbG93cyBhCiAgICogdXNlciB0byBtYWtlIGEgZGVlcCBtb2RpZmljYXRpb24gdG8gYSBib3VuZCBvYmplY3QgZ3JhcGgsIGFuZCB0aGVuIGVpdGhlcgogICAqIHNpbXBseSByZS1zZXQgdGhlIG9iamVjdCAoZS5nLiBgdGhpcy5pdGVtcyA9IHRoaXMuaXRlbXNgKSBvciBjYWxsIGBub3RpZnlQYXRoYAogICAqIChlLmcuIGB0aGlzLm5vdGlmeVBhdGgoJ2l0ZW1zJylgKSB0byB1cGRhdGUgdGhlIHRyZWUuICBOb3RlIHRoYXQgYWxsCiAgICogZWxlbWVudHMgdGhhdCB3aXNoIHRvIGJlIHVwZGF0ZWQgYmFzZWQgb24gZGVlcCBtdXRhdGlvbnMgbXVzdCBhcHBseSB0aGlzCiAgICogbWl4aW4gb3Igb3RoZXJ3aXNlIHNraXAgc3RyaWN0IGRpcnR5IGNoZWNraW5nIGZvciBvYmplY3RzL2FycmF5cy4KICAgKiBTcGVjaWZpY2FsbHksIGFueSBlbGVtZW50cyBpbiB0aGUgYmluZGluZyB0cmVlIGJldHdlZW4gdGhlIHNvdXJjZSBvZiBhCiAgICogbXV0YXRpb24gYW5kIHRoZSBjb25zdW1wdGlvbiBvZiBpdCBtdXN0IGFwcGx5IHRoaXMgYmVoYXZpb3Igb3IgZW5hYmxlIHRoZQogICAqIGBQb2x5bWVyLk9wdGlvbmFsTXV0YWJsZURhdGFCZWhhdmlvcmAuCiAgICoKICAgKiBJbiBvcmRlciB0byBtYWtlIHRoZSBkaXJ0eSBjaGVjayBzdHJhdGVneSBjb25maWd1cmFibGUsIHNlZQogICAqIGBQb2x5bWVyLk9wdGlvbmFsTXV0YWJsZURhdGFCZWhhdmlvcmAuCiAgICoKICAgKiBOb3RlLCB0aGUgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzIG9mIHByb3BhZ2F0aW5nIGxhcmdlIG9iamVjdCBncmFwaHMKICAgKiB3aWxsIGJlIHdvcnNlIGFzIG9wcG9zZWQgdG8gdXNpbmcgc3RyaWN0IGRpcnR5IGNoZWNraW5nIHdpdGggaW1tdXRhYmxlCiAgICogcGF0dGVybnMgb3IgUG9seW1lcidzIHBhdGggbm90aWZpY2F0aW9uIEFQSS4KICAgKgogICAqIEBwb2x5bWVyQmVoYXZpb3IKICAgKiBAbWVtYmVyb2YgUG9seW1lcgogICAqIEBzdW1tYXJ5IEJlaGF2aW9yIHRvIHNraXAgc3RyaWN0IGRpcnR5LWNoZWNraW5nIGZvciBvYmplY3RzIGFuZAogICAqICAgYXJyYXlzCiAgICovCiAgUG9seW1lci5NdXRhYmxlRGF0YUJlaGF2aW9yID0gewoKICAgIC8qKgogICAgICogT3ZlcnJpZGVzIGBQb2x5bWVyLlByb3BlcnR5RWZmZWN0c2AgdG8gcHJvdmlkZSBvcHRpb24gZm9yIHNraXBwaW5nCiAgICAgKiBzdHJpY3QgZXF1YWxpdHkgY2hlY2tpbmcgZm9yIE9iamVjdHMgYW5kIEFycmF5cy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBwdWxscyB0aGUgdmFsdWUgdG8gZGlydHkgY2hlY2sgYWdhaW5zdCBmcm9tIHRoZSBgX19kYXRhVGVtcGAKICAgICAqIGNhY2hlIChyYXRoZXIgdGhhbiB0aGUgbm9ybWFsIGBfX2RhdGFgIGNhY2hlKSBmb3IgT2JqZWN0cy4gIFNpbmNlIHRoZSB0ZW1wCiAgICAgKiBjYWNoZSBpcyBjbGVhcmVkIGF0IHRoZSBlbmQgb2YgYSB0dXJuLCB0aGlzIGltcGxlbWVudGF0aW9uIGFsbG93cwogICAgICogc2lkZS1lZmZlY3RzIG9mIGRlZXAgb2JqZWN0IGNoYW5nZXMgdG8gYmUgcHJvY2Vzc2VkIGJ5IHJlLXNldHRpbmcgdGhlCiAgICAgKiBzYW1lIG9iamVjdCAodXNpbmcgdGhlIHRlbXAgY2FjaGUgYXMgYW4gaW4tdHVybiBiYWNrc3RvcCB0byBwcmV2ZW50CiAgICAgKiBjeWNsZXMgZHVlIHRvIDItd2F5IG5vdGlmaWNhdGlvbikuCiAgICAgKgogICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgTmV3IHByb3BlcnR5IHZhbHVlCiAgICAgKiBAcGFyYW0geyp9IG9sZCBQcmV2aW91cyBwcm9wZXJ0eSB2YWx1ZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBjaGFuZ2UKICAgICAqIEBwcm90ZWN0ZWQKICAgICAqLwogICAgX3Nob3VsZFByb3BlcnR5Q2hhbmdlKHByb3BlcnR5LCB2YWx1ZSwgb2xkKSB7CiAgICAgIHJldHVybiBtdXRhYmxlUHJvcGVydHlDaGFuZ2UodGhpcywgcHJvcGVydHksIHZhbHVlLCBvbGQsIHRydWUpOwogICAgfQogIH07CgogIC8qKgogICAqIExlZ2FjeSBlbGVtZW50IGJlaGF2aW9yIHRvIGFkZCB0aGUgb3B0aW9uYWwgYWJpbGl0eSB0byBza2lwIHN0cmljdAogICAqIGRpcnR5LWNoZWNraW5nIGZvciBvYmplY3RzIGFuZCBhcnJheXMgKGFsd2F5cyBjb25zaWRlciB0aGVtIHRvIGJlCiAgICogImRpcnR5IikgYnkgc2V0dGluZyBhIGBtdXRhYmxlLWRhdGFgIGF0dHJpYnV0ZSBvbiBhbiBlbGVtZW50IGluc3RhbmNlLgogICAqCiAgICogQnkgZGVmYXVsdCwgYFBvbHltZXIuUHJvcGVydHlFZmZlY3RzYCBwZXJmb3JtcyBzdHJpY3QgZGlydHkgY2hlY2tpbmcgb24KICAgKiBvYmplY3RzLCB3aGljaCBtZWFucyB0aGF0IGFueSBkZWVwIG1vZGlmaWNhdGlvbnMgdG8gYW4gb2JqZWN0IG9yIGFycmF5IHdpbGwKICAgKiBub3QgYmUgcHJvcGFnYXRlZCB1bmxlc3MgImltbXV0YWJsZSIgZGF0YSBwYXR0ZXJucyBhcmUgdXNlZCAoaS5lLiBhbGwgb2JqZWN0CiAgICogcmVmZXJlbmNlcyBmcm9tIHRoZSByb290IHRvIHRoZSBtdXRhdGlvbiB3ZXJlIGNoYW5nZWQpLgogICAqCiAgICogUG9seW1lciBhbHNvIHByb3ZpZGVzIGEgcHJvcHJpZXRhcnkgZGF0YSBtdXRhdGlvbiBhbmQgcGF0aCBub3RpZmljYXRpb24gQVBJCiAgICogKGUuZy4gYG5vdGlmeVBhdGhgLCBgc2V0YCwgYW5kIGFycmF5IG11dGF0aW9uIEFQSSdzKSB0aGF0IGFsbG93IGVmZmljaWVudAogICAqIG11dGF0aW9uIGFuZCBub3RpZmljYXRpb24gb2YgZGVlcCBjaGFuZ2VzIGluIGFuIG9iamVjdCBncmFwaCB0byBhbGwgZWxlbWVudHMKICAgKiBib3VuZCB0byB0aGUgc2FtZSBvYmplY3QgZ3JhcGguCiAgICoKICAgKiBJbiBjYXNlcyB3aGVyZSBuZWl0aGVyIGltbXV0YWJsZSBwYXR0ZXJucyBub3IgdGhlIGRhdGEgbXV0YXRpb24gQVBJIGNhbiBiZQogICAqIHVzZWQsIGFwcGx5aW5nIHRoaXMgbWl4aW4gd2lsbCBhbGxvdyBQb2x5bWVyIHRvIHNraXAgZGlydHkgY2hlY2tpbmcgZm9yCiAgICogb2JqZWN0cyBhbmQgYXJyYXlzIChhbHdheXMgY29uc2lkZXIgdGhlbSB0byBiZSAiZGlydHkiKS4gIFRoaXMgYWxsb3dzIGEKICAgKiB1c2VyIHRvIG1ha2UgYSBkZWVwIG1vZGlmaWNhdGlvbiB0byBhIGJvdW5kIG9iamVjdCBncmFwaCwgYW5kIHRoZW4gZWl0aGVyCiAgICogc2ltcGx5IHJlLXNldCB0aGUgb2JqZWN0IChlLmcuIGB0aGlzLml0ZW1zID0gdGhpcy5pdGVtc2ApIG9yIGNhbGwgYG5vdGlmeVBhdGhgCiAgICogKGUuZy4gYHRoaXMubm90aWZ5UGF0aCgnaXRlbXMnKWApIHRvIHVwZGF0ZSB0aGUgdHJlZS4gIE5vdGUgdGhhdCBhbGwKICAgKiBlbGVtZW50cyB0aGF0IHdpc2ggdG8gYmUgdXBkYXRlZCBiYXNlZCBvbiBkZWVwIG11dGF0aW9ucyBtdXN0IGFwcGx5IHRoaXMKICAgKiBtaXhpbiBvciBvdGhlcndpc2Ugc2tpcCBzdHJpY3QgZGlydHkgY2hlY2tpbmcgZm9yIG9iamVjdHMvYXJyYXlzLgogICAqIFNwZWNpZmljYWxseSwgYW55IGVsZW1lbnRzIGluIHRoZSBiaW5kaW5nIHRyZWUgYmV0d2VlbiB0aGUgc291cmNlIG9mIGEKICAgKiBtdXRhdGlvbiBhbmQgdGhlIGNvbnN1bXB0aW9uIG9mIGl0IG11c3QgZW5hYmxlIHRoaXMgYmVoYXZpb3Igb3IgYXBwbHkgdGhlCiAgICogYFBvbHltZXIuT3B0aW9uYWxNdXRhYmxlRGF0YUJlaGF2aW9yYC4KICAgKgogICAqIFdoaWxlIHRoaXMgYmVoYXZpb3IgYWRkcyB0aGUgYWJpbGl0eSB0byBmb3JnbyBPYmplY3QvQXJyYXkgZGlydHkgY2hlY2tpbmcsCiAgICogdGhlIGBtdXRhYmxlRGF0YWAgZmxhZyBkZWZhdWx0cyB0byBmYWxzZSBhbmQgbXVzdCBiZSBzZXQgb24gdGhlIGluc3RhbmNlLgogICAqCiAgICogTm90ZSwgdGhlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiBwcm9wYWdhdGluZyBsYXJnZSBvYmplY3QgZ3JhcGhzCiAgICogd2lsbCBiZSB3b3JzZSBieSByZWx5aW5nIG9uIGBtdXRhYmxlRGF0YTogdHJ1ZWAgYXMgb3Bwb3NlZCB0byB1c2luZwogICAqIHN0cmljdCBkaXJ0eSBjaGVja2luZyB3aXRoIGltbXV0YWJsZSBwYXR0ZXJucyBvciBQb2x5bWVyJ3MgcGF0aCBub3RpZmljYXRpb24KICAgKiBBUEkuCiAgICoKICAgKiBAcG9seW1lckJlaGF2aW9yCiAgICogQG1lbWJlcm9mIFBvbHltZXIKICAgKiBAc3VtbWFyeSBCZWhhdmlvciB0byBvcHRpb25hbGx5IHNraXAgc3RyaWN0IGRpcnR5LWNoZWNraW5nIGZvciBvYmplY3RzIGFuZAogICAqICAgYXJyYXlzCiAgICovCiAgUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhQmVoYXZpb3IgPSB7CgogICAgcHJvcGVydGllczogewogICAgICAvKioKICAgICAgICogSW5zdGFuY2UtbGV2ZWwgZmxhZyBmb3IgY29uZmlndXJpbmcgdGhlIGRpcnR5LWNoZWNraW5nIHN0cmF0ZWd5CiAgICAgICAqIGZvciB0aGlzIGVsZW1lbnQuICBXaGVuIHRydWUsIE9iamVjdHMgYW5kIEFycmF5cyB3aWxsIHNraXAgZGlydHkKICAgICAgICogY2hlY2tpbmcsIG90aGVyd2lzZSBzdHJpY3QgZXF1YWxpdHkgY2hlY2tpbmcgd2lsbCBiZSB1c2VkLgogICAgICAgKi8KICAgICAgbXV0YWJsZURhdGE6IEJvb2xlYW4KICAgIH0sCgogICAgLyoqCiAgICAgKiBPdmVycmlkZXMgYFBvbHltZXIuUHJvcGVydHlFZmZlY3RzYCB0byBza2lwIHN0cmljdCBlcXVhbGl0eSBjaGVja2luZwogICAgICogZm9yIE9iamVjdHMgYW5kIEFycmF5cy4KICAgICAqCiAgICAgKiBQdWxscyB0aGUgdmFsdWUgdG8gZGlydHkgY2hlY2sgYWdhaW5zdCBmcm9tIHRoZSBgX19kYXRhVGVtcGAgY2FjaGUKICAgICAqIChyYXRoZXIgdGhhbiB0aGUgbm9ybWFsIGBfX2RhdGFgIGNhY2hlKSBmb3IgT2JqZWN0cy4gIFNpbmNlIHRoZSB0ZW1wCiAgICAgKiBjYWNoZSBpcyBjbGVhcmVkIGF0IHRoZSBlbmQgb2YgYSB0dXJuLCB0aGlzIGltcGxlbWVudGF0aW9uIGFsbG93cwogICAgICogc2lkZS1lZmZlY3RzIG9mIGRlZXAgb2JqZWN0IGNoYW5nZXMgdG8gYmUgcHJvY2Vzc2VkIGJ5IHJlLXNldHRpbmcgdGhlCiAgICAgKiBzYW1lIG9iamVjdCAodXNpbmcgdGhlIHRlbXAgY2FjaGUgYXMgYW4gaW4tdHVybiBiYWNrc3RvcCB0byBwcmV2ZW50CiAgICAgKiBjeWNsZXMgZHVlIHRvIDItd2F5IG5vdGlmaWNhdGlvbikuCiAgICAgKgogICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFByb3BlcnR5IG5hbWUKICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgTmV3IHByb3BlcnR5IHZhbHVlCiAgICAgKiBAcGFyYW0geyp9IG9sZCBQcmV2aW91cyBwcm9wZXJ0eSB2YWx1ZQogICAgICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBjaGFuZ2UKICAgICAqIEB0aGlzIHt0aGlzfQogICAgICogQHByb3RlY3RlZAogICAgICovCiAgICBfc2hvdWxkUHJvcGVydHlDaGFuZ2UocHJvcGVydHksIHZhbHVlLCBvbGQpIHsKICAgICAgcmV0dXJuIG11dGFibGVQcm9wZXJ0eUNoYW5nZSh0aGlzLCBwcm9wZXJ0eSwgdmFsdWUsIG9sZCwgdGhpcy5tdXRhYmxlRGF0YSk7CiAgICB9CiAgfTsKCn0pKCk7CgoKCiAgLy8gYmMKICBQb2x5bWVyLkJhc2UgPSBQb2x5bWVyLkxlZ2FjeUVsZW1lbnRNaXhpbihIVE1MRWxlbWVudCkucHJvdG90eXBlOwoKICAvLyBOT1RFOiB0aGlzIGlzIGhlcmUgZm9yIG1vZHVsaXplciB0byBleHBvcnQgYGh0bWxgIGZvciB0aGUgbW9kdWxlIHZlcnNpb24gb2YgdGhpcyBmaWxlCiAgUG9seW1lci5odG1sID0gUG9seW1lci5odG1sOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tZmxleC1sYXlvdXQvaXJvbi1mbGV4LWxheW91dC5odG1sLmpzCihmdW5jdGlvbigpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7Yi50ZXh0Q29udGVudD0iW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYil9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tYTExeS1rZXlzLWJlaGF2aW9yL2lyb24tYTExeS1rZXlzLWJlaGF2aW9yLmh0bWwuanMKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYih3LEMpe3ZhciBGPSIiO2lmKHcpaWYodz13LnRvTG93ZXJDYXNlKCksIiAiPT09d3x8QS50ZXN0KHcpKUY9InNwYWNlIjtlbHNlIGlmKHkudGVzdCh3KSlGPSJlc2MiO2Vsc2UgaWYoMT09dy5sZW5ndGgpe2lmKCFDfHxxLnRlc3QodykpRj13fWVsc2UgRj14LnRlc3Qodyk/dy5yZXBsYWNlKCJhcnJvdyIsIiIpOiJtdWx0aXBseSI9PXc/IioiOnc7cmV0dXJuIEZ9ZnVuY3Rpb24gZCh3KXt2YXIgQz0iIjt3JiYodyBpbiBwP0M9cFt3XTp1LnRlc3Qodyk/KHc9cGFyc2VJbnQody5yZXBsYWNlKCJVKyIsIjB4IiksMTYpLEM9U3RyaW5nLmZyb21DaGFyQ29kZSh3KS50b0xvd2VyQ2FzZSgpKTpDPXcudG9Mb3dlckNhc2UoKSk7cmV0dXJuIEN9ZnVuY3Rpb24gZih3KXt2YXIgQz0iIjtOdW1iZXIodykmJihDPTY1PD13JiY5MD49dz9TdHJpbmcuZnJvbUNoYXJDb2RlKDMyK3cpOjExMjw9dyYmMTIzPj13PyJmIisody0xMTIrMSk6NDg8PXcmJjU3Pj13PwpTdHJpbmcody00OCk6OTY8PXcmJjEwNT49dz9TdHJpbmcody05Nik6bVt3XSk7cmV0dXJuIEN9ZnVuY3Rpb24gaCh3LEMpe3JldHVybiB3LmtleT9iKHcua2V5LEMpOncuZGV0YWlsJiZ3LmRldGFpbC5rZXk/Yih3LmRldGFpbC5rZXksQyk6ZCh3LmtleUlkZW50aWZpZXIpfHxmKHcua2V5Q29kZSl8fCIifWZ1bmN0aW9uIGsodyxDKXtyZXR1cm4gaChDLHcuaGFzTW9kaWZpZXJzKT09PXcua2V5JiYoIXcuaGFzTW9kaWZpZXJzfHwhIUMuc2hpZnRLZXk9PT0hIXcuc2hpZnRLZXkmJiEhQy5jdHJsS2V5PT09ISF3LmN0cmxLZXkmJiEhQy5hbHRLZXk9PT0hIXcuYWx0S2V5JiYhIUMubWV0YUtleT09PSEhdy5tZXRhS2V5KX1mdW5jdGlvbiB0KHcpe3JldHVybiAxPT09dy5sZW5ndGg/e2NvbWJvOncsa2V5OncsZXZlbnQ6ImtleWRvd24ifTp3LnNwbGl0KCIrIikucmVkdWNlKGZ1bmN0aW9uKEMsRil7dmFyIEQ9Ri5zcGxpdCgiOiIpO0Y9RFswXTtEPURbMV07RiBpbiBuPyhDW25bRl1dPSEwLApDLmhhc01vZGlmaWVycz0hMCk6KEMua2V5PUYsQy5ldmVudD1EfHwia2V5ZG93biIpO3JldHVybiBDfSx7Y29tYm86dy5zcGxpdCgiOiIpLnNoaWZ0KCl9KX1mdW5jdGlvbiBsKHcpe3JldHVybiB3LnRyaW0oKS5zcGxpdCgiICIpLm1hcChmdW5jdGlvbihDKXtyZXR1cm4gdChDKX0pfXZhciBwPXsiVSswMDA4IjoiYmFja3NwYWNlIiwiVSswMDA5IjoidGFiIiwiVSswMDFCIjoiZXNjIiwiVSswMDIwIjoic3BhY2UiLCJVKzAwN0YiOiJkZWwifSxtPXs4OiJiYWNrc3BhY2UiLDk6InRhYiIsMTM6ImVudGVyIiwyNzoiZXNjIiwzMzoicGFnZXVwIiwzNDoicGFnZWRvd24iLDM1OiJlbmQiLDM2OiJob21lIiwzMjoic3BhY2UiLDM3OiJsZWZ0IiwzODoidXAiLDM5OiJyaWdodCIsNDA6ImRvd24iLDQ2OiJkZWwiLDEwNjoiKiJ9LG49e3NoaWZ0OiJzaGlmdEtleSIsY3RybDoiY3RybEtleSIsYWx0OiJhbHRLZXkiLG1ldGE6Im1ldGFLZXkifSxxPS9bYS16MC05Kl0vLHU9L1VcKy8seD0vXmFycm93LywKQT0vXnNwYWNlKGJhcik/Lyx5PS9eZXNjYXBlJC87UG9seW1lci5Jcm9uQTExeUtleXNCZWhhdmlvcj17cHJvcGVydGllczp7a2V5RXZlbnRUYXJnZXQ6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSxzdG9wS2V5Ym9hcmRFdmVudFByb3BhZ2F0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9ib3VuZEtleUhhbmRsZXJzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfaW1wZXJhdGl2ZUtleUJpbmRpbmdzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX19LG9ic2VydmVyczpbIl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKGtleUV2ZW50VGFyZ2V0LCBfYm91bmRLZXlIYW5kbGVycykiXSxrZXlCaW5kaW5nczp7fSxyZWdpc3RlcmVkOmZ1bmN0aW9uKCl7dGhpcy5fcHJlcEtleUJpbmRpbmdzKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fbGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91bmxpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LAphZGRPd25LZXlCaW5kaW5nOmZ1bmN0aW9uKHcsQyl7dGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzW3ddPUM7dGhpcy5fcHJlcEtleUJpbmRpbmdzKCk7dGhpcy5fcmVzZXRLZXlFdmVudExpc3RlbmVycygpfSxyZW1vdmVPd25LZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2ltcGVyYXRpdmVLZXlCaW5kaW5ncz17fTt0aGlzLl9wcmVwS2V5QmluZGluZ3MoKTt0aGlzLl9yZXNldEtleUV2ZW50TGlzdGVuZXJzKCl9LGtleWJvYXJkRXZlbnRNYXRjaGVzS2V5czpmdW5jdGlvbih3LEMpe0M9bChDKTtmb3IodmFyIEY9MDtGPEMubGVuZ3RoOysrRilpZihrKENbRl0sdykpcmV0dXJuITA7cmV0dXJuITF9LF9jb2xsZWN0S2V5QmluZGluZ3M6ZnVuY3Rpb24oKXt2YXIgdz10aGlzLmJlaGF2aW9ycy5tYXAoZnVuY3Rpb24oQyl7cmV0dXJuIEMua2V5QmluZGluZ3N9KTstMT09PXcuaW5kZXhPZih0aGlzLmtleUJpbmRpbmdzKSYmdy5wdXNoKHRoaXMua2V5QmluZGluZ3MpO3JldHVybiB3fSwKX3ByZXBLZXlCaW5kaW5nczpmdW5jdGlvbigpe3RoaXMuX2tleUJpbmRpbmdzPXt9O3RoaXMuX2NvbGxlY3RLZXlCaW5kaW5ncygpLmZvckVhY2goZnVuY3Rpb24oRil7Zm9yKHZhciBEIGluIEYpdGhpcy5fYWRkS2V5QmluZGluZyhELEZbRF0pfSx0aGlzKTtmb3IodmFyIHcgaW4gdGhpcy5faW1wZXJhdGl2ZUtleUJpbmRpbmdzKXRoaXMuX2FkZEtleUJpbmRpbmcodyx0aGlzLl9pbXBlcmF0aXZlS2V5QmluZGluZ3Nbd10pO2Zvcih2YXIgQyBpbiB0aGlzLl9rZXlCaW5kaW5ncyl0aGlzLl9rZXlCaW5kaW5nc1tDXS5zb3J0KGZ1bmN0aW9uKEYsRCl7Rj1GWzBdLmhhc01vZGlmaWVycztyZXR1cm4gRj09PURbMF0uaGFzTW9kaWZpZXJzPzA6Rj8tMToxfSl9LF9hZGRLZXlCaW5kaW5nOmZ1bmN0aW9uKHcsQyl7bCh3KS5mb3JFYWNoKGZ1bmN0aW9uKEYpe3RoaXMuX2tleUJpbmRpbmdzW0YuZXZlbnRdPXRoaXMuX2tleUJpbmRpbmdzW0YuZXZlbnRdfHxbXTt0aGlzLl9rZXlCaW5kaW5nc1tGLmV2ZW50XS5wdXNoKFtGLApDXSl9LHRoaXMpfSxfcmVzZXRLZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnMoKTt0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2xpc3RlbktleUV2ZW50TGlzdGVuZXJzKCl9LF9saXN0ZW5LZXlFdmVudExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMua2V5RXZlbnRUYXJnZXQmJk9iamVjdC5rZXlzKHRoaXMuX2tleUJpbmRpbmdzKS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3ZhciBDPXRoaXMuX29uS2V5QmluZGluZ0V2ZW50LmJpbmQodGhpcyx0aGlzLl9rZXlCaW5kaW5nc1t3XSk7dGhpcy5fYm91bmRLZXlIYW5kbGVycy5wdXNoKFt0aGlzLmtleUV2ZW50VGFyZ2V0LHcsQ10pO3RoaXMua2V5RXZlbnRUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcih3LEMpfSx0aGlzKX0sX3VubGlzdGVuS2V5RXZlbnRMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHcsQyxGO3RoaXMuX2JvdW5kS2V5SGFuZGxlcnMubGVuZ3RoOyl3PXRoaXMuX2JvdW5kS2V5SGFuZGxlcnMucG9wKCksCkM9d1swXSxGPXdbMV0sdz13WzJdLEMucmVtb3ZlRXZlbnRMaXN0ZW5lcihGLHcpfSxfb25LZXlCaW5kaW5nRXZlbnQ6ZnVuY3Rpb24odyxDKXt0aGlzLnN0b3BLZXlib2FyZEV2ZW50UHJvcGFnYXRpb24mJkMuc3RvcFByb3BhZ2F0aW9uKCk7aWYoIUMuZGVmYXVsdFByZXZlbnRlZClmb3IodmFyIEY9MDtGPHcubGVuZ3RoO0YrKyl7dmFyIEQ9d1tGXVswXSxCPXdbRl1bMV07aWYoayhELEMpJiYodGhpcy5fdHJpZ2dlcktleUhhbmRsZXIoRCxCLEMpLEMuZGVmYXVsdFByZXZlbnRlZCkpYnJlYWt9fSxfdHJpZ2dlcktleUhhbmRsZXI6ZnVuY3Rpb24odyxDLEYpe3ZhciBEPU9iamVjdC5jcmVhdGUodyk7RC5rZXlib2FyZEV2ZW50PUY7dz1uZXcgQ3VzdG9tRXZlbnQody5ldmVudCx7ZGV0YWlsOkQsY2FuY2VsYWJsZTohMH0pO3RoaXNbQ10uY2FsbCh0aGlzLHcpO3cuZGVmYXVsdFByZXZlbnRlZCYmRi5wcmV2ZW50RGVmYXVsdCgpfX19KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tYmVoYXZpb3JzL2lyb24tY29udHJvbC1zdGF0ZS5odG1sLmpzClBvbHltZXIuSXJvbkNvbnRyb2xTdGF0ZT17cHJvcGVydGllczp7Zm9jdXNlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwLG9ic2VydmVyOiJfZGlzYWJsZWRDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9vbGRUYWJJbmRleDp7dHlwZTpTdHJpbmd9LF9ib3VuZEZvY3VzQmx1ckhhbmRsZXI6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZm9jdXNCbHVySGFuZGxlci5iaW5kKHRoaXMpfX0sX19oYW5kbGVFdmVudFJldGFyZ2V0aW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5zaGFkb3dSb290JiYhUG9seW1lci5FbGVtZW50fX19LG9ic2VydmVyczpbIl9jaGFuZ2VkQ29udHJvbFN0YXRlKGZvY3VzZWQsIGRpc2FibGVkKSJdLHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsCnRoaXMuX2JvdW5kRm9jdXNCbHVySGFuZGxlciwhMCk7dGhpcy5hZGRFdmVudExpc3RlbmVyKCJibHVyIix0aGlzLl9ib3VuZEZvY3VzQmx1ckhhbmRsZXIsITApfSxfZm9jdXNCbHVySGFuZGxlcjpmdW5jdGlvbihiKXtpZihQb2x5bWVyLkVsZW1lbnQpdGhpcy5fc2V0Rm9jdXNlZCgiZm9jdXMiPT09Yi50eXBlKTtlbHNlIGlmKGIudGFyZ2V0PT09dGhpcyl0aGlzLl9zZXRGb2N1c2VkKCJmb2N1cyI9PT1iLnR5cGUpO2Vsc2UgaWYodGhpcy5fX2hhbmRsZUV2ZW50UmV0YXJnZXRpbmcpe3ZhciBkPVBvbHltZXIuZG9tKGIpLmxvY2FsVGFyZ2V0O3RoaXMuaXNMaWdodERlc2NlbmRhbnQoZCl8fHRoaXMuZmlyZShiLnR5cGUse3NvdXJjZUV2ZW50OmJ9LHtub2RlOnRoaXMsYnViYmxlczpiLmJ1YmJsZXMsY2FuY2VsYWJsZTpiLmNhbmNlbGFibGV9KX19LF9kaXNhYmxlZENoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtZGlzYWJsZWQiLGI/InRydWUiOiJmYWxzZSIpOwp0aGlzLnN0eWxlLnBvaW50ZXJFdmVudHM9Yj8ibm9uZSI6IiI7Yj8odGhpcy5fb2xkVGFiSW5kZXg9dGhpcy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IiksdGhpcy5fc2V0Rm9jdXNlZCghMSksdGhpcy50YWJJbmRleD0tMSx0aGlzLmJsdXIoKSk6dm9pZCAwIT09dGhpcy5fb2xkVGFiSW5kZXgmJihudWxsPT09dGhpcy5fb2xkVGFiSW5kZXg/dGhpcy5yZW1vdmVBdHRyaWJ1dGUoInRhYmluZGV4Iik6dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4Iix0aGlzLl9vbGRUYWJJbmRleCkpfSxfY2hhbmdlZENvbnRyb2xTdGF0ZTpmdW5jdGlvbigpe3RoaXMuX2NvbnRyb2xTdGF0ZUNoYW5nZWQmJnRoaXMuX2NvbnRyb2xTdGF0ZUNoYW5nZWQoKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tYmVoYXZpb3JzL2lyb24tYnV0dG9uLXN0YXRlLmh0bWwuanMKUG9seW1lci5Jcm9uQnV0dG9uU3RhdGVJbXBsPXtwcm9wZXJ0aWVzOntwcmVzc2VkOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITAsdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG9ic2VydmVyOiJfcHJlc3NlZENoYW5nZWQifSx0b2dnbGVzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxhY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxwb2ludGVyRG93bjp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwLHZhbHVlOiExfSxyZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkOnt0eXBlOkJvb2xlYW4scmVhZE9ubHk6ITB9LGFyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLXByZXNzZWQiLG9ic2VydmVyOiJfYXJpYUFjdGl2ZUF0dHJpYnV0ZUNoYW5nZWQifX0sbGlzdGVuZXJzOntkb3duOiJfZG93bkhhbmRsZXIiLHVwOiJfdXBIYW5kbGVyIix0YXA6Il90YXBIYW5kbGVyIn0sCm9ic2VydmVyczpbIl9mb2N1c0NoYW5nZWQoZm9jdXNlZCkiLCJfYWN0aXZlQ2hhbmdlZChhY3RpdmUsIGFyaWFBY3RpdmVBdHRyaWJ1dGUpIl0sa2V5QmluZGluZ3M6eyJlbnRlcjprZXlkb3duIjoiX2FzeW5jQ2xpY2siLCJzcGFjZTprZXlkb3duIjoiX3NwYWNlS2V5RG93bkhhbmRsZXIiLCJzcGFjZTprZXl1cCI6Il9zcGFjZUtleVVwSGFuZGxlciJ9LF9tb3VzZUV2ZW50UmU6L15tb3VzZS8sX3RhcEhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLnRvZ2dsZXM/dGhpcy5fdXNlckFjdGl2YXRlKCF0aGlzLmFjdGl2ZSk6dGhpcy5hY3RpdmU9ITF9LF9mb2N1c0NoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5fZGV0ZWN0S2V5Ym9hcmRGb2N1cyhiKTtifHx0aGlzLl9zZXRQcmVzc2VkKCExKX0sX2RldGVjdEtleWJvYXJkRm9jdXM6ZnVuY3Rpb24oYil7dGhpcy5fc2V0UmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCghdGhpcy5wb2ludGVyRG93biYmYil9LF91c2VyQWN0aXZhdGU6ZnVuY3Rpb24oYil7dGhpcy5hY3RpdmUhPT0KYiYmKHRoaXMuYWN0aXZlPWIsdGhpcy5maXJlKCJjaGFuZ2UiKSl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX3NldFBvaW50ZXJEb3duKCEwKTt0aGlzLl9zZXRQcmVzc2VkKCEwKTt0aGlzLl9zZXRSZWNlaXZlZEZvY3VzRnJvbUtleWJvYXJkKCExKX0sX3VwSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX3NldFBvaW50ZXJEb3duKCExKTt0aGlzLl9zZXRQcmVzc2VkKCExKX0sX3NwYWNlS2V5RG93bkhhbmRsZXI6ZnVuY3Rpb24oYil7Yj1iLmRldGFpbC5rZXlib2FyZEV2ZW50O3ZhciBkPVBvbHltZXIuZG9tKGIpLmxvY2FsVGFyZ2V0O3RoaXMuaXNMaWdodERlc2NlbmRhbnQoZCl8fChiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLl9zZXRQcmVzc2VkKCEwKSl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbihiKXtiPVBvbHltZXIuZG9tKGIuZGV0YWlsLmtleWJvYXJkRXZlbnQpLmxvY2FsVGFyZ2V0O3RoaXMuaXNMaWdodERlc2NlbmRhbnQoYil8fAoodGhpcy5wcmVzc2VkJiZ0aGlzLl9hc3luY0NsaWNrKCksdGhpcy5fc2V0UHJlc3NlZCghMSkpfSxfYXN5bmNDbGljazpmdW5jdGlvbigpe3RoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLmNsaWNrKCl9LDEpfSxfcHJlc3NlZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLl9jaGFuZ2VkQnV0dG9uU3RhdGUoKX0sX2FyaWFBY3RpdmVBdHRyaWJ1dGVDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7ZCYmZCE9YiYmdGhpcy5oYXNBdHRyaWJ1dGUoZCkmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGQpfSxfYWN0aXZlQ2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLnRvZ2dsZXM/dGhpcy5zZXRBdHRyaWJ1dGUodGhpcy5hcmlhQWN0aXZlQXR0cmlidXRlLGI/InRydWUiOiJmYWxzZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKHRoaXMuYXJpYUFjdGl2ZUF0dHJpYnV0ZSk7dGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jb250cm9sU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5kaXNhYmxlZD90aGlzLl9zZXRQcmVzc2VkKCExKToKdGhpcy5fY2hhbmdlZEJ1dHRvblN0YXRlKCl9LF9jaGFuZ2VkQnV0dG9uU3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9idXR0b25TdGF0ZUNoYW5nZWQmJnRoaXMuX2J1dHRvblN0YXRlQ2hhbmdlZCgpfX07UG9seW1lci5Jcm9uQnV0dG9uU3RhdGU9W1BvbHltZXIuSXJvbkExMXlLZXlzQmVoYXZpb3IsUG9seW1lci5Jcm9uQnV0dG9uU3RhdGVJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1yaXBwbGUvcGFwZXItcmlwcGxlLmh0bWwuanMKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihoKXt0aGlzLmVsZW1lbnQ9aDt0aGlzLndpZHRoPXRoaXMuYm91bmRpbmdSZWN0LndpZHRoO3RoaXMuaGVpZ2h0PXRoaXMuYm91bmRpbmdSZWN0LmhlaWdodDt0aGlzLnNpemU9TWF0aC5tYXgodGhpcy53aWR0aCx0aGlzLmhlaWdodCl9ZnVuY3Rpb24gZChoKXt0aGlzLmVsZW1lbnQ9aDt0aGlzLmNvbG9yPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGgpLmNvbG9yO3RoaXMud2F2ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLndhdmVDb250YWluZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy53YXZlLnN0eWxlLmJhY2tncm91bmRDb2xvcj10aGlzLmNvbG9yO3RoaXMud2F2ZS5jbGFzc0xpc3QuYWRkKCJ3YXZlIik7dGhpcy53YXZlQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoIndhdmUtY29udGFpbmVyIik7UG9seW1lci5kb20odGhpcy53YXZlQ29udGFpbmVyKS5hcHBlbmRDaGlsZCh0aGlzLndhdmUpO3RoaXMucmVzZXRJbnRlcmFjdGlvblN0YXRlKCl9CnZhciBmPXtkaXN0YW5jZTpmdW5jdGlvbihoLGssdCxsKXtoLT10O2stPWw7cmV0dXJuIE1hdGguc3FydChoKmgrayprKX0sbm93OndpbmRvdy5wZXJmb3JtYW5jZSYmd2luZG93LnBlcmZvcm1hbmNlLm5vdz93aW5kb3cucGVyZm9ybWFuY2Uubm93LmJpbmQod2luZG93LnBlcmZvcm1hbmNlKTpEYXRlLm5vd307Yi5wcm90b3R5cGU9e2dldCBib3VuZGluZ1JlY3QoKXtyZXR1cm4gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfSxmdXJ0aGVzdENvcm5lckRpc3RhbmNlRnJvbTpmdW5jdGlvbihoLGspe3ZhciB0PWYuZGlzdGFuY2UoaCxrLDAsMCksbD1mLmRpc3RhbmNlKGgsayx0aGlzLndpZHRoLDApLHA9Zi5kaXN0YW5jZShoLGssMCx0aGlzLmhlaWdodCk7aD1mLmRpc3RhbmNlKGgsayx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtyZXR1cm4gTWF0aC5tYXgodCxsLHAsaCl9fTtkLk1BWF9SQURJVVM9MzAwO2QucHJvdG90eXBlPXtnZXQgcmVjZW50ZXJzKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5yZWNlbnRlcnN9LApnZXQgY2VudGVyKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jZW50ZXJ9LGdldCBtb3VzZURvd25FbGFwc2VkKCl7aWYoIXRoaXMubW91c2VEb3duU3RhcnQpcmV0dXJuIDA7dmFyIGg9Zi5ub3coKS10aGlzLm1vdXNlRG93blN0YXJ0O3RoaXMubW91c2VVcFN0YXJ0JiYoaC09dGhpcy5tb3VzZVVwRWxhcHNlZCk7cmV0dXJuIGh9LGdldCBtb3VzZVVwRWxhcHNlZCgpe3JldHVybiB0aGlzLm1vdXNlVXBTdGFydD9mLm5vdygpLXRoaXMubW91c2VVcFN0YXJ0OjB9LGdldCBtb3VzZURvd25FbGFwc2VkU2Vjb25kcygpe3JldHVybiB0aGlzLm1vdXNlRG93bkVsYXBzZWQvMUUzfSxnZXQgbW91c2VVcEVsYXBzZWRTZWNvbmRzKCl7cmV0dXJuIHRoaXMubW91c2VVcEVsYXBzZWQvMUUzfSxnZXQgbW91c2VJbnRlcmFjdGlvblNlY29uZHMoKXtyZXR1cm4gdGhpcy5tb3VzZURvd25FbGFwc2VkU2Vjb25kcyt0aGlzLm1vdXNlVXBFbGFwc2VkU2Vjb25kc30sZ2V0IGluaXRpYWxPcGFjaXR5KCl7cmV0dXJuIHRoaXMuZWxlbWVudC5pbml0aWFsT3BhY2l0eX0sCmdldCBvcGFjaXR5RGVjYXlWZWxvY2l0eSgpe3JldHVybiB0aGlzLmVsZW1lbnQub3BhY2l0eURlY2F5VmVsb2NpdHl9LGdldCByYWRpdXMoKXt2YXIgaD0xLjEqTWF0aC5taW4oTWF0aC5zcXJ0KHRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aCp0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgrdGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodCp0aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0KSxkLk1BWF9SQURJVVMpKzU7cmV0dXJuIE1hdGguYWJzKGgqKDEtTWF0aC5wb3coODAsLSh0aGlzLm1vdXNlSW50ZXJhY3Rpb25TZWNvbmRzLygxLjEtaC9kLk1BWF9SQURJVVMqLjIpKSkpKX0sZ2V0IG9wYWNpdHkoKXtyZXR1cm4gdGhpcy5tb3VzZVVwU3RhcnQ/TWF0aC5tYXgoMCx0aGlzLmluaXRpYWxPcGFjaXR5LXRoaXMubW91c2VVcEVsYXBzZWRTZWNvbmRzKnRoaXMub3BhY2l0eURlY2F5VmVsb2NpdHkpOnRoaXMuaW5pdGlhbE9wYWNpdHl9LGdldCBvdXRlck9wYWNpdHkoKXtyZXR1cm4gTWF0aC5tYXgoMCwKTWF0aC5taW4oLjMqdGhpcy5tb3VzZVVwRWxhcHNlZFNlY29uZHMsdGhpcy5vcGFjaXR5KSl9LGdldCBpc09wYWNpdHlGdWxseURlY2F5ZWQoKXtyZXR1cm4uMDE+dGhpcy5vcGFjaXR5JiZ0aGlzLnJhZGl1cz49TWF0aC5taW4odGhpcy5tYXhSYWRpdXMsZC5NQVhfUkFESVVTKX0sZ2V0IGlzUmVzdGluZ0F0TWF4UmFkaXVzKCl7cmV0dXJuIHRoaXMub3BhY2l0eT49dGhpcy5pbml0aWFsT3BhY2l0eSYmdGhpcy5yYWRpdXM+PU1hdGgubWluKHRoaXMubWF4UmFkaXVzLGQuTUFYX1JBRElVUyl9LGdldCBpc0FuaW1hdGlvbkNvbXBsZXRlKCl7cmV0dXJuIHRoaXMubW91c2VVcFN0YXJ0P3RoaXMuaXNPcGFjaXR5RnVsbHlEZWNheWVkOnRoaXMuaXNSZXN0aW5nQXRNYXhSYWRpdXN9LGdldCB0cmFuc2xhdGlvbkZyYWN0aW9uKCl7cmV0dXJuIE1hdGgubWluKDEsdGhpcy5yYWRpdXMvdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUqMi9NYXRoLnNxcnQoMikpfSxnZXQgeE5vdygpe3JldHVybiB0aGlzLnhFbmQ/CnRoaXMueFN0YXJ0K3RoaXMudHJhbnNsYXRpb25GcmFjdGlvbioodGhpcy54RW5kLXRoaXMueFN0YXJ0KTp0aGlzLnhTdGFydH0sZ2V0IHlOb3coKXtyZXR1cm4gdGhpcy55RW5kP3RoaXMueVN0YXJ0K3RoaXMudHJhbnNsYXRpb25GcmFjdGlvbioodGhpcy55RW5kLXRoaXMueVN0YXJ0KTp0aGlzLnlTdGFydH0sZ2V0IGlzTW91c2VEb3duKCl7cmV0dXJuIHRoaXMubW91c2VEb3duU3RhcnQmJiF0aGlzLm1vdXNlVXBTdGFydH0scmVzZXRJbnRlcmFjdGlvblN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5zbGlkZURpc3RhbmNlPXRoaXMueUVuZD10aGlzLnhFbmQ9dGhpcy55U3RhcnQ9dGhpcy54U3RhcnQ9dGhpcy5tb3VzZVVwU3RhcnQ9dGhpcy5tb3VzZURvd25TdGFydD10aGlzLm1heFJhZGl1cz0wO3RoaXMuY29udGFpbmVyTWV0cmljcz1uZXcgYih0aGlzLmVsZW1lbnQpfSxkcmF3OmZ1bmN0aW9uKCl7dGhpcy53YXZlLnN0eWxlLm9wYWNpdHk9dGhpcy5vcGFjaXR5O3ZhciBoPXRoaXMucmFkaXVzLwoodGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUvMik7dmFyIGs9dGhpcy54Tm93LXRoaXMuY29udGFpbmVyTWV0cmljcy53aWR0aC8yO3ZhciB0PXRoaXMueU5vdy10aGlzLmNvbnRhaW5lck1ldHJpY3MuaGVpZ2h0LzI7dGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0idHJhbnNsYXRlKCIraysicHgsICIrdCsicHgpIjt0aGlzLndhdmVDb250YWluZXIuc3R5bGUudHJhbnNmb3JtPSJ0cmFuc2xhdGUzZCgiK2srInB4LCAiK3QrInB4LCAwKSI7dGhpcy53YXZlLnN0eWxlLndlYmtpdFRyYW5zZm9ybT0ic2NhbGUoIitoKyIsIitoKyIpIjt0aGlzLndhdmUuc3R5bGUudHJhbnNmb3JtPSJzY2FsZTNkKCIraCsiLCIraCsiLDEpIn0sZG93bkFjdGlvbjpmdW5jdGlvbihoKXt2YXIgaz10aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgvMix0PXRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMjt0aGlzLnJlc2V0SW50ZXJhY3Rpb25TdGF0ZSgpO3RoaXMubW91c2VEb3duU3RhcnQ9CmYubm93KCk7dGhpcy5jZW50ZXI/KHRoaXMueFN0YXJ0PWssdGhpcy55U3RhcnQ9dCx0aGlzLnNsaWRlRGlzdGFuY2U9Zi5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSk6KHRoaXMueFN0YXJ0PWg/aC5kZXRhaWwueC10aGlzLmNvbnRhaW5lck1ldHJpY3MuYm91bmRpbmdSZWN0LmxlZnQ6dGhpcy5jb250YWluZXJNZXRyaWNzLndpZHRoLzIsdGhpcy55U3RhcnQ9aD9oLmRldGFpbC55LXRoaXMuY29udGFpbmVyTWV0cmljcy5ib3VuZGluZ1JlY3QudG9wOnRoaXMuY29udGFpbmVyTWV0cmljcy5oZWlnaHQvMik7dGhpcy5yZWNlbnRlcnMmJih0aGlzLnhFbmQ9ayx0aGlzLnlFbmQ9dCx0aGlzLnNsaWRlRGlzdGFuY2U9Zi5kaXN0YW5jZSh0aGlzLnhTdGFydCx0aGlzLnlTdGFydCx0aGlzLnhFbmQsdGhpcy55RW5kKSk7dGhpcy5tYXhSYWRpdXM9dGhpcy5jb250YWluZXJNZXRyaWNzLmZ1cnRoZXN0Q29ybmVyRGlzdGFuY2VGcm9tKHRoaXMueFN0YXJ0LAp0aGlzLnlTdGFydCk7dGhpcy53YXZlQ29udGFpbmVyLnN0eWxlLnRvcD0odGhpcy5jb250YWluZXJNZXRyaWNzLmhlaWdodC10aGlzLmNvbnRhaW5lck1ldHJpY3Muc2l6ZSkvMisicHgiO3RoaXMud2F2ZUNvbnRhaW5lci5zdHlsZS5sZWZ0PSh0aGlzLmNvbnRhaW5lck1ldHJpY3Mud2lkdGgtdGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUpLzIrInB4Ijt0aGlzLndhdmVDb250YWluZXIuc3R5bGUud2lkdGg9dGhpcy5jb250YWluZXJNZXRyaWNzLnNpemUrInB4Ijt0aGlzLndhdmVDb250YWluZXIuc3R5bGUuaGVpZ2h0PXRoaXMuY29udGFpbmVyTWV0cmljcy5zaXplKyJweCJ9LHVwQWN0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc01vdXNlRG93biYmKHRoaXMubW91c2VVcFN0YXJ0PWYubm93KCkpfSxyZW1vdmU6ZnVuY3Rpb24oKXtQb2x5bWVyLmRvbSh0aGlzLndhdmVDb250YWluZXIucGFyZW50Tm9kZSkucmVtb3ZlQ2hpbGQodGhpcy53YXZlQ29udGFpbmVyKX19O1BvbHltZXIoe2lzOiJwYXBlci1yaXBwbGUiLApiZWhhdmlvcnM6W1BvbHltZXIuSXJvbkExMXlLZXlzQmVoYXZpb3JdLHByb3BlcnRpZXM6e2luaXRpYWxPcGFjaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouMjV9LG9wYWNpdHlEZWNheVZlbG9jaXR5Ont0eXBlOk51bWJlcix2YWx1ZTouOH0scmVjZW50ZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNlbnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyaXBwbGVzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxhbmltYXRpbmc6e3R5cGU6Qm9vbGVhbixyZWFkT25seTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9LGhvbGREb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9ob2xkRG93bkNoYW5nZWQifSxub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYW5pbWF0aW5nOnt0eXBlOkJvb2xlYW59LF9ib3VuZEFuaW1hdGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hbmltYXRlLmJpbmQodGhpcyl9fX0sCmdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5rZXlFdmVudFRhcmdldH0sa2V5QmluZGluZ3M6eyJlbnRlcjprZXlkb3duIjoiX29uRW50ZXJLZXlkb3duIiwic3BhY2U6a2V5ZG93biI6Il9vblNwYWNlS2V5ZG93biIsInNwYWNlOmtleXVwIjoiX29uU3BhY2VLZXl1cCJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5rZXlFdmVudFRhcmdldD0xMT09dGhpcy5wYXJlbnROb2RlLm5vZGVUeXBlP1BvbHltZXIuZG9tKHRoaXMpLmdldE93bmVyUm9vdCgpLmhvc3Q6dGhpcy5wYXJlbnROb2RlO3RoaXMubGlzdGVuKGgsInVwIiwidWlVcEFjdGlvbiIpO3RoaXMubGlzdGVuKGgsImRvd24iLCJ1aURvd25BY3Rpb24iKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMua2V5RXZlbnRUYXJnZXQsInVwIiwidWlVcEFjdGlvbiIpO3RoaXMudW5saXN0ZW4odGhpcy5rZXlFdmVudFRhcmdldCwiZG93biIsInVpRG93bkFjdGlvbiIpO3RoaXMua2V5RXZlbnRUYXJnZXQ9Cm51bGx9LGdldCBzaG91bGRLZWVwQW5pbWF0aW5nKCl7Zm9yKHZhciBoPTA7aDx0aGlzLnJpcHBsZXMubGVuZ3RoOysraClpZighdGhpcy5yaXBwbGVzW2hdLmlzQW5pbWF0aW9uQ29tcGxldGUpcmV0dXJuITA7cmV0dXJuITF9LHNpbXVsYXRlZFJpcHBsZTpmdW5jdGlvbigpe3RoaXMuZG93bkFjdGlvbihudWxsKTt0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy51cEFjdGlvbigpfSwxKX0sdWlEb3duQWN0aW9uOmZ1bmN0aW9uKGgpe3RoaXMubm9pbmt8fHRoaXMuZG93bkFjdGlvbihoKX0sZG93bkFjdGlvbjpmdW5jdGlvbihoKXt0aGlzLmhvbGREb3duJiYwPHRoaXMucmlwcGxlcy5sZW5ndGh8fCh0aGlzLmFkZFJpcHBsZSgpLmRvd25BY3Rpb24oaCksdGhpcy5fYW5pbWF0aW5nfHwodGhpcy5fYW5pbWF0aW5nPSEwLHRoaXMuYW5pbWF0ZSgpKSl9LHVpVXBBY3Rpb246ZnVuY3Rpb24oaCl7dGhpcy5ub2lua3x8dGhpcy51cEFjdGlvbihoKX0sdXBBY3Rpb246ZnVuY3Rpb24oaCl7dGhpcy5ob2xkRG93bnx8Cih0aGlzLnJpcHBsZXMuZm9yRWFjaChmdW5jdGlvbihrKXtrLnVwQWN0aW9uKGgpfSksdGhpcy5fYW5pbWF0aW5nPSEwLHRoaXMuYW5pbWF0ZSgpKX0sb25BbmltYXRpb25Db21wbGV0ZTpmdW5jdGlvbigpe3RoaXMuX2FuaW1hdGluZz0hMTt0aGlzLiQuYmFja2dyb3VuZC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bnVsbDt0aGlzLmZpcmUoInRyYW5zaXRpb25lbmQiKX0sYWRkUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIGg9bmV3IGQodGhpcyk7UG9seW1lci5kb20odGhpcy4kLndhdmVzKS5hcHBlbmRDaGlsZChoLndhdmVDb250YWluZXIpO3RoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLmJhY2tncm91bmRDb2xvcj1oLmNvbG9yO3RoaXMucmlwcGxlcy5wdXNoKGgpO3RoaXMuX3NldEFuaW1hdGluZyghMCk7cmV0dXJuIGh9LHJlbW92ZVJpcHBsZTpmdW5jdGlvbihoKXt2YXIgaz10aGlzLnJpcHBsZXMuaW5kZXhPZihoKTswPmt8fCh0aGlzLnJpcHBsZXMuc3BsaWNlKGssMSksaC5yZW1vdmUoKSwKdGhpcy5yaXBwbGVzLmxlbmd0aHx8dGhpcy5fc2V0QW5pbWF0aW5nKCExKSl9LGFuaW1hdGU6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbmltYXRpbmcpe3ZhciBoO2ZvcihoPTA7aDx0aGlzLnJpcHBsZXMubGVuZ3RoOysraCl7dmFyIGs9dGhpcy5yaXBwbGVzW2hdO2suZHJhdygpO3RoaXMuJC5iYWNrZ3JvdW5kLnN0eWxlLm9wYWNpdHk9ay5vdXRlck9wYWNpdHk7ay5pc09wYWNpdHlGdWxseURlY2F5ZWQmJiFrLmlzUmVzdGluZ0F0TWF4UmFkaXVzJiZ0aGlzLnJlbW92ZVJpcHBsZShrKX1pZih0aGlzLnNob3VsZEtlZXBBbmltYXRpbmd8fDAhPT10aGlzLnJpcHBsZXMubGVuZ3RoKXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fYm91bmRBbmltYXRlKTtlbHNlIHRoaXMub25BbmltYXRpb25Db21wbGV0ZSgpfX0sX29uRW50ZXJLZXlkb3duOmZ1bmN0aW9uKCl7dGhpcy51aURvd25BY3Rpb24oKTt0aGlzLmFzeW5jKHRoaXMudWlVcEFjdGlvbiwxKX0sX29uU3BhY2VLZXlkb3duOmZ1bmN0aW9uKCl7dGhpcy51aURvd25BY3Rpb24oKX0sCl9vblNwYWNlS2V5dXA6ZnVuY3Rpb24oKXt0aGlzLnVpVXBBY3Rpb24oKX0sX2hvbGREb3duQ2hhbmdlZDpmdW5jdGlvbihoLGspe3ZvaWQgMCE9PWsmJihoP3RoaXMuZG93bkFjdGlvbigpOnRoaXMudXBBY3Rpb24oKSl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWJlaGF2aW9ycy9wYXBlci1yaXBwbGUtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLlBhcGVyUmlwcGxlQmVoYXZpb3I9e3Byb3BlcnRpZXM6e25vaW5rOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9ub2lua0NoYW5nZWQifSxfcmlwcGxlQ29udGFpbmVyOnt0eXBlOk9iamVjdH19LF9idXR0b25TdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZvY3VzZWQmJnRoaXMuZW5zdXJlUmlwcGxlKCl9LF9kb3duSGFuZGxlcjpmdW5jdGlvbihiKXtQb2x5bWVyLklyb25CdXR0b25TdGF0ZUltcGwuX2Rvd25IYW5kbGVyLmNhbGwodGhpcyxiKTt0aGlzLnByZXNzZWQmJnRoaXMuZW5zdXJlUmlwcGxlKGIpfSxlbnN1cmVSaXBwbGU6ZnVuY3Rpb24oYil7aWYoIXRoaXMuaGFzUmlwcGxlKCkpe3RoaXMuX3JpcHBsZT10aGlzLl9jcmVhdGVSaXBwbGUoKTt0aGlzLl9yaXBwbGUubm9pbms9dGhpcy5ub2luazt2YXIgZD10aGlzLl9yaXBwbGVDb250YWluZXJ8fHRoaXMucm9vdDtkJiZQb2x5bWVyLmRvbShkKS5hcHBlbmRDaGlsZCh0aGlzLl9yaXBwbGUpO2lmKGIpe2Q9ClBvbHltZXIuZG9tKHRoaXMuX3JpcHBsZUNvbnRhaW5lcnx8dGhpcyk7dmFyIGY9UG9seW1lci5kb20oYikucm9vdFRhcmdldDtkLmRlZXBDb250YWlucyhmKSYmdGhpcy5fcmlwcGxlLnVpRG93bkFjdGlvbihiKX19fSxnZXRSaXBwbGU6ZnVuY3Rpb24oKXt0aGlzLmVuc3VyZVJpcHBsZSgpO3JldHVybiB0aGlzLl9yaXBwbGV9LGhhc1JpcHBsZTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fcmlwcGxlfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcGVyLXJpcHBsZSIpfSxfbm9pbmtDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuaGFzUmlwcGxlKCkmJih0aGlzLl9yaXBwbGUubm9pbms9Yil9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1iZWhhdmlvcnMvcGFwZXItYnV0dG9uLWJlaGF2aW9yLmh0bWwuanMKUG9seW1lci5QYXBlckJ1dHRvbkJlaGF2aW9ySW1wbD17cHJvcGVydGllczp7ZWxldmF0aW9uOnt0eXBlOk51bWJlcixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAscmVhZE9ubHk6ITB9fSxvYnNlcnZlcnM6WyJfY2FsY3VsYXRlRWxldmF0aW9uKGZvY3VzZWQsIGRpc2FibGVkLCBhY3RpdmUsIHByZXNzZWQsIHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIiwiX2NvbXB1dGVLZXlib2FyZENsYXNzKHJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImJ1dHRvbiIsdGFiaW5kZXg6IjAiLGFuaW1hdGVkOiEwfSxfY2FsY3VsYXRlRWxldmF0aW9uOmZ1bmN0aW9uKCl7dmFyIGI9MTt0aGlzLmRpc2FibGVkP2I9MDp0aGlzLmFjdGl2ZXx8dGhpcy5wcmVzc2VkP2I9NDp0aGlzLnJlY2VpdmVkRm9jdXNGcm9tS2V5Ym9hcmQmJihiPTMpO3RoaXMuX3NldEVsZXZhdGlvbihiKX0sX2NvbXB1dGVLZXlib2FyZENsYXNzOmZ1bmN0aW9uKGIpe3RoaXMudG9nZ2xlQ2xhc3MoImtleWJvYXJkLWZvY3VzIiwKYil9LF9zcGFjZUtleURvd25IYW5kbGVyOmZ1bmN0aW9uKGIpe1BvbHltZXIuSXJvbkJ1dHRvblN0YXRlSW1wbC5fc3BhY2VLZXlEb3duSGFuZGxlci5jYWxsKHRoaXMsYik7dGhpcy5oYXNSaXBwbGUoKSYmMT50aGlzLmdldFJpcHBsZSgpLnJpcHBsZXMubGVuZ3RoJiZ0aGlzLl9yaXBwbGUudWlEb3duQWN0aW9uKCl9LF9zcGFjZUtleVVwSGFuZGxlcjpmdW5jdGlvbihiKXtQb2x5bWVyLklyb25CdXR0b25TdGF0ZUltcGwuX3NwYWNlS2V5VXBIYW5kbGVyLmNhbGwodGhpcyxiKTt0aGlzLmhhc1JpcHBsZSgpJiZ0aGlzLl9yaXBwbGUudWlVcEFjdGlvbigpfX07UG9seW1lci5QYXBlckJ1dHRvbkJlaGF2aW9yPVtQb2x5bWVyLklyb25CdXR0b25TdGF0ZSxQb2x5bWVyLklyb25Db250cm9sU3RhdGUsUG9seW1lci5QYXBlclJpcHBsZUJlaGF2aW9yLFBvbHltZXIuUGFwZXJCdXR0b25CZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWJ1dHRvbi9wYXBlci1idXR0b24uaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItYnV0dG9uIixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJCdXR0b25CZWhhdmlvcl0scHJvcGVydGllczp7cmFpc2VkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExLG9ic2VydmVyOiJfY2FsY3VsYXRlRWxldmF0aW9uIn19LF9jYWxjdWxhdGVFbGV2YXRpb246ZnVuY3Rpb24oKXt0aGlzLnJhaXNlZD9Qb2x5bWVyLlBhcGVyQnV0dG9uQmVoYXZpb3JJbXBsLl9jYWxjdWxhdGVFbGV2YXRpb24uYXBwbHkodGhpcyk6dGhpcy5fc2V0RWxldmF0aW9uKDApfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tbWV0YS9pcm9uLW1ldGEuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyLklyb25NZXRhPWZ1bmN0aW9uKGQpe1BvbHltZXIuSXJvbk1ldGFbIiAiXShkKTt0aGlzLnR5cGU9ZCYmZC50eXBlfHwiZGVmYXVsdCI7dGhpcy5rZXk9ZCYmZC5rZXk7ZCYmInZhbHVlImluIGQmJih0aGlzLnZhbHVlPWQudmFsdWUpfTtQb2x5bWVyLklyb25NZXRhWyIgIl09ZnVuY3Rpb24oKXt9O1BvbHltZXIuSXJvbk1ldGEudHlwZXM9e307UG9seW1lci5Jcm9uTWV0YS5wcm90b3R5cGU9e2dldCB2YWx1ZSgpe3ZhciBkPXRoaXMudHlwZSxmPXRoaXMua2V5O2lmKGQmJmYpcmV0dXJuIFBvbHltZXIuSXJvbk1ldGEudHlwZXNbZF0mJlBvbHltZXIuSXJvbk1ldGEudHlwZXNbZF1bZl19LHNldCB2YWx1ZShkKXt2YXIgZj10aGlzLnR5cGUsaD10aGlzLmtleTtmJiZoJiYoZj1Qb2x5bWVyLklyb25NZXRhLnR5cGVzW2ZdPVBvbHltZXIuSXJvbk1ldGEudHlwZXNbZl18fHt9LG51bGw9PWQ/ZGVsZXRlIGZbaF06ZltoXT1kKX0sZ2V0IGxpc3QoKXtpZih0aGlzLnR5cGUpe3ZhciBkPQpQb2x5bWVyLklyb25NZXRhLnR5cGVzW3RoaXMudHlwZV07cmV0dXJuIGQ/T2JqZWN0LmtleXMoZCkubWFwKGZ1bmN0aW9uKGYpe3JldHVybiBiW3RoaXMudHlwZV1bZl19LHRoaXMpOltdfX0sYnlLZXk6ZnVuY3Rpb24oZCl7dGhpcy5rZXk9ZDtyZXR1cm4gdGhpcy52YWx1ZX19O3ZhciBiPVBvbHltZXIuSXJvbk1ldGEudHlwZXM7UG9seW1lcih7aXM6Imlyb24tbWV0YSIscHJvcGVydGllczp7dHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSxrZXk6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxmOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9zZWxmQ2hhbmdlZCJ9LF9fbWV0YTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfX2NvbXB1dGVNZXRhKHR5cGUsIGtleSwgdmFsdWUpIn19LGhvc3RBdHRyaWJ1dGVzOntoaWRkZW46ITB9LF9fY29tcHV0ZU1ldGE6ZnVuY3Rpb24oZCxmLGgpe2Q9bmV3IFBvbHltZXIuSXJvbk1ldGEoe3R5cGU6ZCwKa2V5OmZ9KTt2b2lkIDAhPT1oJiZoIT09ZC52YWx1ZT9kLnZhbHVlPWg6dGhpcy52YWx1ZSE9PWQudmFsdWUmJih0aGlzLnZhbHVlPWQudmFsdWUpO3JldHVybiBkfSxnZXQgbGlzdCgpe3JldHVybiB0aGlzLl9fbWV0YSYmdGhpcy5fX21ldGEubGlzdH0sX3NlbGZDaGFuZ2VkOmZ1bmN0aW9uKGQpe2QmJih0aGlzLnZhbHVlPXRoaXMpfSxieUtleTpmdW5jdGlvbihkKXtyZXR1cm4obmV3IFBvbHltZXIuSXJvbk1ldGEoe3R5cGU6dGhpcy50eXBlLGtleTpkfSkpLnZhbHVlfX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLXZhbGlkYXRhYmxlLWJlaGF2aW9yL2lyb24tdmFsaWRhdGFibGUtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLklyb25WYWxpZGF0YWJsZUJlaGF2aW9yTWV0YT1udWxsOwpQb2x5bWVyLklyb25WYWxpZGF0YWJsZUJlaGF2aW9yPXtwcm9wZXJ0aWVzOnt2YWxpZGF0b3I6e3R5cGU6U3RyaW5nfSxpbnZhbGlkOntub3RpZnk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2ludmFsaWRDaGFuZ2VkIn19LHJlZ2lzdGVyZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLklyb25WYWxpZGF0YWJsZUJlaGF2aW9yTWV0YT1uZXcgUG9seW1lci5Jcm9uTWV0YSh7dHlwZToidmFsaWRhdG9yIn0pfSxfaW52YWxpZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaW52YWxpZCIsInRydWUiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIil9LGdldCBfdmFsaWRhdG9yKCl7cmV0dXJuIFBvbHltZXIuSXJvblZhbGlkYXRhYmxlQmVoYXZpb3JNZXRhJiZQb2x5bWVyLklyb25WYWxpZGF0YWJsZUJlaGF2aW9yTWV0YS5ieUtleSh0aGlzLnZhbGlkYXRvcil9LGhhc1ZhbGlkYXRvcjpmdW5jdGlvbigpe3JldHVybiBudWxsIT0KdGhpcy5fdmFsaWRhdG9yfSx2YWxpZGF0ZTpmdW5jdGlvbihiKXt0aGlzLmludmFsaWQ9dm9pZCAwPT09YiYmdm9pZCAwIT09dGhpcy52YWx1ZT8hdGhpcy5fZ2V0VmFsaWRpdHkodGhpcy52YWx1ZSk6IXRoaXMuX2dldFZhbGlkaXR5KGIpO3JldHVybiF0aGlzLmludmFsaWR9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5oYXNWYWxpZGF0b3IoKT90aGlzLl92YWxpZGF0b3IudmFsaWRhdGUoYik6ITB9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWZvcm0tZWxlbWVudC1iZWhhdmlvci9pcm9uLWZvcm0tZWxlbWVudC1iZWhhdmlvci5odG1sLmpzClBvbHltZXIuSXJvbkZvcm1FbGVtZW50QmVoYXZpb3I9e3Byb3BlcnRpZXM6e25hbWU6e3R5cGU6U3RyaW5nfSx2YWx1ZTp7bm90aWZ5OiEwLHR5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfcGFyZW50Rm9ybTp7dHlwZTpPYmplY3R9fSxhdHRhY2hlZDpmdW5jdGlvbigpe1BvbHltZXIuRWxlbWVudHx8dGhpcy5maXJlKCJpcm9uLWZvcm0tZWxlbWVudC1yZWdpc3RlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpeyFQb2x5bWVyLkVsZW1lbnQmJnRoaXMuX3BhcmVudEZvcm0mJnRoaXMuX3BhcmVudEZvcm0uZmlyZSgiaXJvbi1mb3JtLWVsZW1lbnQtdW5yZWdpc3RlciIse3RhcmdldDp0aGlzfSl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWNoZWNrZWQtZWxlbWVudC1iZWhhdmlvci9pcm9uLWNoZWNrZWQtZWxlbWVudC1iZWhhdmlvci5odG1sLmpzClBvbHltZXIuSXJvbkNoZWNrZWRFbGVtZW50QmVoYXZpb3JJbXBsPXtwcm9wZXJ0aWVzOntjaGVja2VkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLG5vdGlmeTohMCxvYnNlcnZlcjoiX2NoZWNrZWRDaGFuZ2VkIn0sdG9nZ2xlczp7dHlwZTpCb29sZWFuLHZhbHVlOiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sdmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvbiIsb2JzZXJ2ZXI6Il92YWx1ZUNoYW5nZWQifX0sb2JzZXJ2ZXJzOlsiX3JlcXVpcmVkQ2hhbmdlZChyZXF1aXJlZCkiXSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faGFzSXJvbkNoZWNrZWRFbGVtZW50QmVoYXZpb3I9ITB9LF9nZXRWYWxpZGl0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc2FibGVkfHwhdGhpcy5yZXF1aXJlZHx8dGhpcy5jaGVja2VkfSxfcmVxdWlyZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5yZXF1aXJlZD90aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1yZXF1aXJlZCIsCiJ0cnVlIik6dGhpcy5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtcmVxdWlyZWQiKX0sX2NoZWNrZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmU9dGhpcy5jaGVja2VkO3RoaXMuZmlyZSgiaXJvbi1jaGFuZ2UiKX0sX3ZhbHVlQ2hhbmdlZDpmdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMudmFsdWV8fG51bGw9PT10aGlzLnZhbHVlKXRoaXMudmFsdWU9Im9uIn19O1BvbHltZXIuSXJvbkNoZWNrZWRFbGVtZW50QmVoYXZpb3I9W1BvbHltZXIuSXJvbkZvcm1FbGVtZW50QmVoYXZpb3IsUG9seW1lci5Jcm9uVmFsaWRhdGFibGVCZWhhdmlvcixQb2x5bWVyLklyb25DaGVja2VkRWxlbWVudEJlaGF2aW9ySW1wbF07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItYmVoYXZpb3JzL3BhcGVyLWlua3ktZm9jdXMtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLlBhcGVySW5reUZvY3VzQmVoYXZpb3JJbXBsPXtvYnNlcnZlcnM6WyJfZm9jdXNlZENoYW5nZWQocmVjZWl2ZWRGb2N1c0Zyb21LZXlib2FyZCkiXSxfZm9jdXNlZENoYW5nZWQ6ZnVuY3Rpb24oYil7YiYmdGhpcy5lbnN1cmVSaXBwbGUoKTt0aGlzLmhhc1JpcHBsZSgpJiYodGhpcy5fcmlwcGxlLmhvbGREb3duPWIpfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7dmFyIGI9UG9seW1lci5QYXBlclJpcHBsZUJlaGF2aW9yLl9jcmVhdGVSaXBwbGUoKTtiLmlkPSJpbmsiO2Iuc2V0QXR0cmlidXRlKCJjZW50ZXIiLCIiKTtiLmNsYXNzTGlzdC5hZGQoImNpcmNsZSIpO3JldHVybiBifX07UG9seW1lci5QYXBlcklua3lGb2N1c0JlaGF2aW9yPVtQb2x5bWVyLklyb25CdXR0b25TdGF0ZSxQb2x5bWVyLklyb25Db250cm9sU3RhdGUsUG9seW1lci5QYXBlclJpcHBsZUJlaGF2aW9yLFBvbHltZXIuUGFwZXJJbmt5Rm9jdXNCZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWJlaGF2aW9ycy9wYXBlci1jaGVja2VkLWVsZW1lbnQtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLlBhcGVyQ2hlY2tlZEVsZW1lbnRCZWhhdmlvckltcGw9e19jaGVja2VkQ2hhbmdlZDpmdW5jdGlvbigpe1BvbHltZXIuSXJvbkNoZWNrZWRFbGVtZW50QmVoYXZpb3JJbXBsLl9jaGVja2VkQ2hhbmdlZC5jYWxsKHRoaXMpO3RoaXMuaGFzUmlwcGxlKCkmJih0aGlzLmNoZWNrZWQ/dGhpcy5fcmlwcGxlLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsIiIpOnRoaXMuX3JpcHBsZS5yZW1vdmVBdHRyaWJ1dGUoImNoZWNrZWQiKSl9LF9idXR0b25TdGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLlBhcGVyUmlwcGxlQmVoYXZpb3IuX2J1dHRvblN0YXRlQ2hhbmdlZC5jYWxsKHRoaXMpOyF0aGlzLmRpc2FibGVkJiZ0aGlzLmlzQXR0YWNoZWQmJih0aGlzLmNoZWNrZWQ9dGhpcy5hY3RpdmUpfX07ClBvbHltZXIuUGFwZXJDaGVja2VkRWxlbWVudEJlaGF2aW9yPVtQb2x5bWVyLlBhcGVySW5reUZvY3VzQmVoYXZpb3IsUG9seW1lci5Jcm9uQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcixQb2x5bWVyLlBhcGVyQ2hlY2tlZEVsZW1lbnRCZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWNoZWNrYm94L3BhcGVyLWNoZWNrYm94Lmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWNoZWNrYm94IixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJDaGVja2VkRWxlbWVudEJlaGF2aW9yXSxob3N0QXR0cmlidXRlczp7cm9sZToiY2hlY2tib3giLCJhcmlhLWNoZWNrZWQiOiExLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e2FyaWFBY3RpdmVBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJhcmlhLWNoZWNrZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLlJlbmRlclN0YXR1cy5hZnRlck5leHRSZW5kZXIodGhpcyxmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtaW5rLXNpemUiKS50cmltKCkpe3ZhciBiPXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItY2hlY2tib3gtc2l6ZSIpLnRyaW0oKSxkPSJweCIsZj1iLm1hdGNoKC9bQS1aYS16XSskLyk7bnVsbCE9PWYmJihkPWZbMF0pO2I9cGFyc2VGbG9hdChiKTsKZj04LzMqYjsicHgiPT09ZCYmKGY9TWF0aC5mbG9vcihmKSxmJTIhPT1iJTImJmYrKyk7dGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLWNoZWNrYm94LWluay1zaXplIjpmK2R9KX19KX0sX2NvbXB1dGVDaGVja2JveENsYXNzOmZ1bmN0aW9uKGIsZCl7dmFyIGY9IiI7YiYmKGYrPSJjaGVja2VkICIpO2QmJihmKz0iaW52YWxpZCIpO3JldHVybiBmfSxfY29tcHV0ZUNoZWNrbWFya0NsYXNzOmZ1bmN0aW9uKGIpe3JldHVybiBiPyIiOiJoaWRkZW4ifSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5jaGVja2JveENvbnRhaW5lcjtyZXR1cm4gUG9seW1lci5QYXBlcklua3lGb2N1c0JlaGF2aW9ySW1wbC5fY3JlYXRlUmlwcGxlLmNhbGwodGhpcyl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vaXJvbi1pY29uL2lyb24taWNvbi5odG1sLmpzClBvbHltZXIoe2lzOiJpcm9uLWljb24iLHByb3BlcnRpZXM6e2ljb246e3R5cGU6U3RyaW5nfSx0aGVtZTp7dHlwZTpTdHJpbmd9LHNyYzp7dHlwZTpTdHJpbmd9LF9tZXRhOnt2YWx1ZTpQb2x5bWVyLkJhc2UuY3JlYXRlKCJpcm9uLW1ldGEiLHt0eXBlOiJpY29uc2V0In0pfX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUljb24oX21ldGEsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZUljb24odGhlbWUsIGlzQXR0YWNoZWQpIiwiX3NyY0NoYW5nZWQoc3JjLCBpc0F0dGFjaGVkKSIsIl9pY29uQ2hhbmdlZChpY29uLCBpc0F0dGFjaGVkKSJdLF9ERUZBVUxUX0lDT05TRVQ6Imljb25zIixfaWNvbkNoYW5nZWQ6ZnVuY3Rpb24oYil7Yj0oYnx8IiIpLnNwbGl0KCI6Iik7dGhpcy5faWNvbk5hbWU9Yi5wb3AoKTt0aGlzLl9pY29uc2V0TmFtZT1iLnBvcCgpfHx0aGlzLl9ERUZBVUxUX0lDT05TRVQ7dGhpcy5fdXBkYXRlSWNvbigpfSxfc3JjQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUljb24oKX0sCl91c2VzSWNvbnNldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmljb258fCF0aGlzLnNyY30sX3VwZGF0ZUljb246ZnVuY3Rpb24oKXt0aGlzLl91c2VzSWNvbnNldCgpPyh0aGlzLl9pbWcmJnRoaXMuX2ltZy5wYXJlbnROb2RlJiZQb2x5bWVyLmRvbSh0aGlzLnJvb3QpLnJlbW92ZUNoaWxkKHRoaXMuX2ltZyksIiI9PT10aGlzLl9pY29uTmFtZT90aGlzLl9pY29uc2V0JiZ0aGlzLl9pY29uc2V0LnJlbW92ZUljb24odGhpcyk6dGhpcy5faWNvbnNldE5hbWUmJnRoaXMuX21ldGEmJigodGhpcy5faWNvbnNldD10aGlzLl9tZXRhLmJ5S2V5KHRoaXMuX2ljb25zZXROYW1lKSk/KHRoaXMuX2ljb25zZXQuYXBwbHlJY29uKHRoaXMsdGhpcy5faWNvbk5hbWUsdGhpcy50aGVtZSksdGhpcy51bmxpc3Rlbih3aW5kb3csImlyb24taWNvbnNldC1hZGRlZCIsIl91cGRhdGVJY29uIikpOnRoaXMubGlzdGVuKHdpbmRvdywiaXJvbi1pY29uc2V0LWFkZGVkIiwiX3VwZGF0ZUljb24iKSkpOih0aGlzLl9pY29uc2V0JiYKdGhpcy5faWNvbnNldC5yZW1vdmVJY29uKHRoaXMpLHRoaXMuX2ltZ3x8KHRoaXMuX2ltZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSx0aGlzLl9pbWcuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuX2ltZy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuX2ltZy5kcmFnZ2FibGU9ITEpLHRoaXMuX2ltZy5zcmM9dGhpcy5zcmMsUG9seW1lci5kb20odGhpcy5yb290KS5hcHBlbmRDaGlsZCh0aGlzLl9pbWcpKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWExMXktYW5ub3VuY2VyL2lyb24tYTExeS1hbm5vdW5jZXIuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyLklyb25BMTF5QW5ub3VuY2VyPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLklyb25BMTF5QW5ub3VuY2VyPVBvbHltZXIoe2lzOiJpcm9uLWExMXktYW5ub3VuY2VyIixwcm9wZXJ0aWVzOnttb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToicG9saXRlIn0sX3RleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0sY3JlYXRlZDpmdW5jdGlvbigpe1BvbHltZXIuSXJvbkExMXlBbm5vdW5jZXIuaW5zdGFuY2V8fChQb2x5bWVyLklyb25BMTF5QW5ub3VuY2VyLmluc3RhbmNlPXRoaXMpO2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiaXJvbi1hbm5vdW5jZSIsdGhpcy5fb25Jcm9uQW5ub3VuY2UuYmluZCh0aGlzKSl9LGFubm91bmNlOmZ1bmN0aW9uKGIpe3RoaXMuX3RleHQ9IiI7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuX3RleHQ9Yn0sMTAwKX0sX29uSXJvbkFubm91bmNlOmZ1bmN0aW9uKGIpe2IuZGV0YWlsJiZiLmRldGFpbC50ZXh0JiZ0aGlzLmFubm91bmNlKGIuZGV0YWlsLnRleHQpfX0pOwpQb2x5bWVyLklyb25BMTF5QW5ub3VuY2VyLmluc3RhbmNlPW51bGw7UG9seW1lci5Jcm9uQTExeUFubm91bmNlci5yZXF1ZXN0QXZhaWxhYmlsaXR5PWZ1bmN0aW9uKCl7UG9seW1lci5Jcm9uQTExeUFubm91bmNlci5pbnN0YW5jZXx8KFBvbHltZXIuSXJvbkExMXlBbm5vdW5jZXIuaW5zdGFuY2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaXJvbi1hMTF5LWFubm91bmNlciIpKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFBvbHltZXIuSXJvbkExMXlBbm5vdW5jZXIuaW5zdGFuY2UpfX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vaXJvbi1pbnB1dC9pcm9uLWlucHV0Lmh0bWwuanMKUG9seW1lcih7aXM6Imlyb24taW5wdXQiLGJlaGF2aW9yczpbUG9seW1lci5Jcm9uVmFsaWRhdGFibGVCZWhhdmlvcl0scHJvcGVydGllczp7YmluZFZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sdmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVZhbHVlKGJpbmRWYWx1ZSkifSxhbGxvd2VkUGF0dGVybjp7dHlwZTpTdHJpbmd9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5wdXRFbGVtZW50Ok9iamVjdH0sb2JzZXJ2ZXJzOlsiX2JpbmRWYWx1ZUNoYW5nZWQoYmluZFZhbHVlLCBfaW5wdXRFbGVtZW50KSJdLGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0IixrZXlwcmVzczoiX29uS2V5cHJlc3MifSxjcmVhdGVkOmZ1bmN0aW9uKCl7UG9seW1lci5Jcm9uQTExeUFubm91bmNlci5yZXF1ZXN0QXZhaWxhYmlsaXR5KCk7dGhpcy5fcHJldmlvdXNWYWxpZElucHV0PSIiO3RoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0hMX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlcj0KUG9seW1lci5kb20odGhpcykub2JzZXJ2ZU5vZGVzKGZ1bmN0aW9uKCl7dGhpcy5faW5pdFNsb3R0ZWRJbnB1dCgpfS5iaW5kKHRoaXMpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlciYmKFBvbHltZXIuZG9tKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKSx0aGlzLl9vYnNlcnZlcj1udWxsKX0sZ2V0IGlucHV0RWxlbWVudCgpe3JldHVybiB0aGlzLl9pbnB1dEVsZW1lbnR9LF9pbml0U2xvdHRlZElucHV0OmZ1bmN0aW9uKCl7dGhpcy5faW5wdXRFbGVtZW50PXRoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKVswXTt0aGlzLmlucHV0RWxlbWVudCYmdGhpcy5pbnB1dEVsZW1lbnQudmFsdWUmJih0aGlzLmJpbmRWYWx1ZT10aGlzLmlucHV0RWxlbWVudC52YWx1ZSk7dGhpcy5maXJlKCJpcm9uLWlucHV0LXJlYWR5Iil9LGdldCBfcGF0dGVyblJlZ0V4cCgpe2lmKHRoaXMuYWxsb3dlZFBhdHRlcm4pdmFyIGI9bmV3IFJlZ0V4cCh0aGlzLmFsbG93ZWRQYXR0ZXJuKTsKZWxzZSBzd2l0Y2godGhpcy5pbnB1dEVsZW1lbnQudHlwZSl7Y2FzZSAibnVtYmVyIjpiPS9bMC05LixlLV0vfXJldHVybiBifSxfYmluZFZhbHVlQ2hhbmdlZDpmdW5jdGlvbihiLGQpe2QmJih2b2lkIDA9PT1iP2QudmFsdWU9bnVsbDpiIT09ZC52YWx1ZSYmKHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlPWIpLHRoaXMuYXV0b1ZhbGlkYXRlJiZ0aGlzLnZhbGlkYXRlKCksdGhpcy5maXJlKCJiaW5kLXZhbHVlLWNoYW5nZWQiLHt2YWx1ZTpifSkpfSxfb25JbnB1dDpmdW5jdGlvbigpeyF0aGlzLmFsbG93ZWRQYXR0ZXJufHx0aGlzLl9wYXR0ZXJuQWxyZWFkeUNoZWNrZWR8fHRoaXMuX2NoZWNrUGF0dGVyblZhbGlkaXR5KCl8fCh0aGlzLl9hbm5vdW5jZUludmFsaWRDaGFyYWN0ZXIoIkludmFsaWQgc3RyaW5nIG9mIGNoYXJhY3RlcnMgbm90IGVudGVyZWQuIiksdGhpcy5pbnB1dEVsZW1lbnQudmFsdWU9dGhpcy5fcHJldmlvdXNWYWxpZElucHV0KTt0aGlzLmJpbmRWYWx1ZT10aGlzLl9wcmV2aW91c1ZhbGlkSW5wdXQ9CnRoaXMuaW5wdXRFbGVtZW50LnZhbHVlO3RoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0hMX0sX2lzUHJpbnRhYmxlOmZ1bmN0aW9uKGIpe3ZhciBkPTE5PT1iLmtleUNvZGV8fDIwPT1iLmtleUNvZGV8fDQ1PT1iLmtleUNvZGV8fDQ2PT1iLmtleUNvZGV8fDE0ND09Yi5rZXlDb2RlfHwxNDU9PWIua2V5Q29kZXx8MzI8Yi5rZXlDb2RlJiY0MT5iLmtleUNvZGV8fDExMTxiLmtleUNvZGUmJjEyND5iLmtleUNvZGU7cmV0dXJuISg4PT1iLmtleUNvZGV8fDk9PWIua2V5Q29kZXx8MTM9PWIua2V5Q29kZXx8Mjc9PWIua2V5Q29kZSkmJiEoMD09Yi5jaGFyQ29kZSYmZCl9LF9vbktleXByZXNzOmZ1bmN0aW9uKGIpe2lmKHRoaXMuYWxsb3dlZFBhdHRlcm58fCJudW1iZXIiPT09dGhpcy5pbnB1dEVsZW1lbnQudHlwZSl7dmFyIGQ9dGhpcy5fcGF0dGVyblJlZ0V4cDtpZihkJiYhKGIubWV0YUtleXx8Yi5jdHJsS2V5fHxiLmFsdEtleSkpe3RoaXMuX3BhdHRlcm5BbHJlYWR5Q2hlY2tlZD0KITA7dmFyIGY9U3RyaW5nLmZyb21DaGFyQ29kZShiLmNoYXJDb2RlKTt0aGlzLl9pc1ByaW50YWJsZShiKSYmIWQudGVzdChmKSYmKGIucHJldmVudERlZmF1bHQoKSx0aGlzLl9hbm5vdW5jZUludmFsaWRDaGFyYWN0ZXIoIkludmFsaWQgY2hhcmFjdGVyICIrZisiIG5vdCBlbnRlcmVkLiIpKX19fSxfY2hlY2tQYXR0ZXJuVmFsaWRpdHk6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9wYXR0ZXJuUmVnRXhwO2lmKCFiKXJldHVybiEwO2Zvcih2YXIgZD0wO2Q8dGhpcy5pbnB1dEVsZW1lbnQudmFsdWUubGVuZ3RoO2QrKylpZighYi50ZXN0KHRoaXMuaW5wdXRFbGVtZW50LnZhbHVlW2RdKSlyZXR1cm4hMTtyZXR1cm4hMH0sdmFsaWRhdGU6ZnVuY3Rpb24oKXtpZighdGhpcy5pbnB1dEVsZW1lbnQpcmV0dXJuIHRoaXMuaW52YWxpZD0hMSwhMDt2YXIgYj10aGlzLmlucHV0RWxlbWVudC5jaGVja1ZhbGlkaXR5KCk7YiYmKHRoaXMucmVxdWlyZWQmJiIiPT09dGhpcy5iaW5kVmFsdWU/Yj0hMToKdGhpcy5oYXNWYWxpZGF0b3IoKSYmKGI9UG9seW1lci5Jcm9uVmFsaWRhdGFibGVCZWhhdmlvci52YWxpZGF0ZS5jYWxsKHRoaXMsdGhpcy5iaW5kVmFsdWUpKSk7dGhpcy5pbnZhbGlkPSFiO3RoaXMuZmlyZSgiaXJvbi1pbnB1dC12YWxpZGF0ZSIpO3JldHVybiBifSxfYW5ub3VuY2VJbnZhbGlkQ2hhcmFjdGVyOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgiaXJvbi1hbm5vdW5jZSIse3RleHQ6Yn0pfSxfY29tcHV0ZVZhbHVlOmZ1bmN0aW9uKGIpe3JldHVybiBifX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWlucHV0L3BhcGVyLWlucHV0LWJlaGF2aW9yLmh0bWwuanMKUG9seW1lci5QYXBlcklucHV0SGVscGVyPXt9O1BvbHltZXIuUGFwZXJJbnB1dEhlbHBlci5OZXh0TGFiZWxJRD0xO1BvbHltZXIuUGFwZXJJbnB1dEhlbHBlci5OZXh0QWRkb25JRD0xO1BvbHltZXIuUGFwZXJJbnB1dEhlbHBlci5OZXh0SW5wdXRJRD0xOwpQb2x5bWVyLlBhcGVySW5wdXRCZWhhdmlvckltcGw9e3Byb3BlcnRpZXM6e2xhYmVsOnt0eXBlOlN0cmluZ30sdmFsdWU6e25vdGlmeTohMCx0eXBlOlN0cmluZ30sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saW52YWxpZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sYWxsb3dlZFBhdHRlcm46e3R5cGU6U3RyaW5nfSx0eXBlOnt0eXBlOlN0cmluZ30sbGlzdDp7dHlwZTpTdHJpbmd9LHBhdHRlcm46e3R5cGU6U3RyaW5nfSxyZXF1aXJlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxlcnJvck1lc3NhZ2U6e3R5cGU6U3RyaW5nfSxjaGFyQ291bnRlcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0xhYmVsRmxvYXQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvVmFsaWRhdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdmFsaWRhdG9yOnt0eXBlOlN0cmluZ30sYXV0b2NvbXBsZXRlOnt0eXBlOlN0cmluZywKdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfYXV0b2ZvY3VzQ2hhbmdlZCJ9LGlucHV0bW9kZTp7dHlwZTpTdHJpbmd9LG1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1pbjp7dHlwZTpTdHJpbmd9LG1heDp7dHlwZTpTdHJpbmd9LHN0ZXA6e3R5cGU6U3RyaW5nfSxuYW1lOnt0eXBlOlN0cmluZ30scGxhY2Vob2xkZXI6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxyZWFkb25seTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzaXplOnt0eXBlOk51bWJlcn0sYXV0b2NhcGl0YWxpemU6e3R5cGU6U3RyaW5nLHZhbHVlOiJub25lIn0sYXV0b2NvcnJlY3Q6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmYifSxhdXRvc2F2ZTp7dHlwZTpTdHJpbmd9LHJlc3VsdHM6e3R5cGU6TnVtYmVyfSxhY2NlcHQ6e3R5cGU6U3RyaW5nfSxtdWx0aXBsZTp7dHlwZTpCb29sZWFufSxfYXJpYURlc2NyaWJlZEJ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sCl9hcmlhTGFiZWxsZWRCeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LF9pbnB1dElkOnt0eXBlOlN0cmluZyx2YWx1ZToiIn19LGxpc3RlbmVyczp7ImFkZG9uLWF0dGFjaGVkIjoiX29uQWRkb25BdHRhY2hlZCJ9LGtleUJpbmRpbmdzOnsic2hpZnQrdGFiOmtleWRvd24iOiJfb25TaGlmdFRhYkRvd24ifSxob3N0QXR0cmlidXRlczp7dGFiaW5kZXg6MH0sZ2V0IGlucHV0RWxlbWVudCgpe3RoaXMuJHx8KHRoaXMuJD17fSk7dGhpcy4kLmlucHV0fHwodGhpcy5fZ2VuZXJhdGVJbnB1dElkKCksdGhpcy4kLmlucHV0PXRoaXMuJCQoIiMiK3RoaXMuX2lucHV0SWQpKTtyZXR1cm4gdGhpcy4kLmlucHV0fSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnR9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90eXBlc1RoYXRIYXZlVGV4dD0iZGF0ZSBkYXRldGltZSBkYXRldGltZS1sb2NhbCBtb250aCB0aW1lIHdlZWsgZmlsZSIuc3BsaXQoIiAiKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpOwohUG9seW1lci5FbGVtZW50JiZ0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuaW5wdXRFbGVtZW50LnR5cGUpJiYodGhpcy5hbHdheXNGbG9hdExhYmVsPSEwKX0sX2FwcGVuZFN0cmluZ1dpdGhTcGFjZTpmdW5jdGlvbihiLGQpe3JldHVybiBiP2IrIiAiK2Q6ZH0sX29uQWRkb25BdHRhY2hlZDpmdW5jdGlvbihiKXtiPVBvbHltZXIuZG9tKGIpLnJvb3RUYXJnZXQ7aWYoYi5pZCl0aGlzLl9hcmlhRGVzY3JpYmVkQnk9dGhpcy5fYXBwZW5kU3RyaW5nV2l0aFNwYWNlKHRoaXMuX2FyaWFEZXNjcmliZWRCeSxiLmlkKTtlbHNle3ZhciBkPSJwYXBlci1pbnB1dC1hZGQtb24tIitQb2x5bWVyLlBhcGVySW5wdXRIZWxwZXIuTmV4dEFkZG9uSUQrKztiLmlkPWQ7dGhpcy5fYXJpYURlc2NyaWJlZEJ5PXRoaXMuX2FwcGVuZFN0cmluZ1dpdGhTcGFjZSh0aGlzLl9hcmlhRGVzY3JpYmVkQnksZCl9fSx2YWxpZGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlucHV0RWxlbWVudC52YWxpZGF0ZSgpfSwKX2ZvY3VzQmx1ckhhbmRsZXI6ZnVuY3Rpb24oYil7UG9seW1lci5Jcm9uQ29udHJvbFN0YXRlLl9mb2N1c0JsdXJIYW5kbGVyLmNhbGwodGhpcyxiKTt0aGlzLmZvY3VzZWQmJiF0aGlzLl9zaGlmdFRhYlByZXNzZWQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQuZm9jdXMoKX0sX29uU2hpZnRUYWJEb3duOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iik7dGhpcy5fc2hpZnRUYWJQcmVzc2VkPSEwO3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIik7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsYik7dGhpcy5fc2hpZnRUYWJQcmVzc2VkPSExfSwxKX0sX2hhbmRsZUF1dG9WYWxpZGF0ZTpmdW5jdGlvbigpe3RoaXMuYXV0b1ZhbGlkYXRlJiZ0aGlzLnZhbGlkYXRlKCl9LHVwZGF0ZVZhbHVlQW5kUHJlc2VydmVDYXJldDpmdW5jdGlvbihiKXt0cnl7dmFyIGQ9CnRoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0O3RoaXMudmFsdWU9Yjt0aGlzLmlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydD1kO3RoaXMuaW5wdXRFbGVtZW50LnNlbGVjdGlvbkVuZD1kfWNhdGNoKGYpe3RoaXMudmFsdWU9Yn19LF9jb21wdXRlQWx3YXlzRmxvYXRMYWJlbDpmdW5jdGlvbihiLGQpe3JldHVybiBkfHxifSxfdXBkYXRlQXJpYUxhYmVsbGVkQnk6ZnVuY3Rpb24oKXt2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3IoImxhYmVsIik7aWYoYil7aWYoYi5pZCl2YXIgZD1iLmlkO2Vsc2UgZD0icGFwZXItaW5wdXQtbGFiZWwtIitQb2x5bWVyLlBhcGVySW5wdXRIZWxwZXIuTmV4dExhYmVsSUQrKyxiLmlkPWQ7dGhpcy5fYXJpYUxhYmVsbGVkQnk9ZH1lbHNlIHRoaXMuX2FyaWFMYWJlbGxlZEJ5PSIifSxfZ2VuZXJhdGVJbnB1dElkOmZ1bmN0aW9uKCl7dGhpcy5faW5wdXRJZCYmIiIhPT10aGlzLl9pbnB1dElkfHwodGhpcy5faW5wdXRJZD0KImlucHV0LSIrUG9seW1lci5QYXBlcklucHV0SGVscGVyLk5leHRJbnB1dElEKyspfSxfb25DaGFuZ2U6ZnVuY3Rpb24oYil7dGhpcy5zaGFkb3dSb290JiZ0aGlzLmZpcmUoYi50eXBlLHtzb3VyY2VFdmVudDpifSx7bm9kZTp0aGlzLGJ1YmJsZXM6Yi5idWJibGVzLGNhbmNlbGFibGU6Yi5jYW5jZWxhYmxlfSl9LF9hdXRvZm9jdXNDaGFuZ2VkOmZ1bmN0aW9uKCl7aWYodGhpcy5hdXRvZm9jdXMmJnRoaXMuX2ZvY3VzYWJsZUVsZW1lbnQpe3ZhciBiPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7YiBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZiIT09ZG9jdW1lbnQuYm9keSYmYiE9PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5mb2N1cygpfX19O1BvbHltZXIuUGFwZXJJbnB1dEJlaGF2aW9yPVtQb2x5bWVyLklyb25Db250cm9sU3RhdGUsUG9seW1lci5Jcm9uQTExeUtleXNCZWhhdmlvcixQb2x5bWVyLlBhcGVySW5wdXRCZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWlucHV0L3BhcGVyLWlucHV0LWFkZG9uLWJlaGF2aW9yLmh0bWwuanMKUG9seW1lci5QYXBlcklucHV0QWRkb25CZWhhdmlvcj17YXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImFkZG9uLWF0dGFjaGVkIil9LHVwZGF0ZTpmdW5jdGlvbigpe319OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWlucHV0L3BhcGVyLWlucHV0LWNoYXItY291bnRlci5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1pbnB1dC1jaGFyLWNvdW50ZXIiLGJlaGF2aW9yczpbUG9seW1lci5QYXBlcklucHV0QWRkb25CZWhhdmlvcl0scHJvcGVydGllczp7X2NoYXJDb3VudGVyU3RyOnt0eXBlOlN0cmluZyx2YWx1ZToiMCJ9fSx1cGRhdGU6ZnVuY3Rpb24oYil7aWYoYi5pbnB1dEVsZW1lbnQpe2IudmFsdWU9Yi52YWx1ZXx8IiI7dmFyIGQ9Yi52YWx1ZS50b1N0cmluZygpLmxlbmd0aC50b1N0cmluZygpO2IuaW5wdXRFbGVtZW50Lmhhc0F0dHJpYnV0ZSgibWF4bGVuZ3RoIikmJihkKz0iLyIrYi5pbnB1dEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJtYXhsZW5ndGgiKSk7dGhpcy5fY2hhckNvdW50ZXJTdHI9ZH19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItaW5wdXQvcGFwZXItaW5wdXQtY29udGFpbmVyLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWlucHV0LWNvbnRhaW5lciIscHJvcGVydGllczp7bm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGFsd2F5c0Zsb2F0TGFiZWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYXR0ckZvclZhbHVlOnt0eXBlOlN0cmluZyx2YWx1ZToiYmluZC12YWx1ZSJ9LGF1dG9WYWxpZGF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbnZhbGlkOntvYnNlcnZlcjoiX2ludmFsaWRDaGFuZ2VkIix0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZvY3VzZWQ6e3JlYWRPbmx5OiEwLHR5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITB9LF9hZGRvbnM6e3R5cGU6QXJyYXl9LF9pbnB1dEhhc0NvbnRlbnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2lucHV0U2VsZWN0b3I6e3R5cGU6U3RyaW5nLHZhbHVlOiJpbnB1dCxpcm9uLWlucHV0LHRleHRhcmVhLC5wYXBlci1pbnB1dC1pbnB1dCJ9LF9ib3VuZE9uRm9jdXM6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25Gb2N1cy5iaW5kKHRoaXMpfX0sCl9ib3VuZE9uQmx1cjp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbkJsdXIuYmluZCh0aGlzKX19LF9ib3VuZE9uSW5wdXQ6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25JbnB1dC5iaW5kKHRoaXMpfX0sX2JvdW5kVmFsdWVDaGFuZ2VkOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29uVmFsdWVDaGFuZ2VkLmJpbmQodGhpcyl9fX0sbGlzdGVuZXJzOnsiYWRkb24tYXR0YWNoZWQiOiJfb25BZGRvbkF0dGFjaGVkIiwiaXJvbi1pbnB1dC12YWxpZGF0ZSI6Il9vbklyb25JbnB1dFZhbGlkYXRlIn0sZ2V0IF92YWx1ZUNoYW5nZWRFdmVudCgpe3JldHVybiB0aGlzLmF0dHJGb3JWYWx1ZSsiLWNoYW5nZWQifSxnZXQgX3Byb3BlcnR5Rm9yVmFsdWUoKXtyZXR1cm4gUG9seW1lci5DYXNlTWFwLmRhc2hUb0NhbWVsQ2FzZSh0aGlzLmF0dHJGb3JWYWx1ZSl9LGdldCBfaW5wdXRFbGVtZW50KCl7cmV0dXJuIFBvbHltZXIuZG9tKHRoaXMpLnF1ZXJ5U2VsZWN0b3IodGhpcy5faW5wdXRTZWxlY3Rvcil9LApnZXQgX2lucHV0RWxlbWVudFZhbHVlKCl7cmV0dXJuIHRoaXMuX2lucHV0RWxlbWVudFt0aGlzLl9wcm9wZXJ0eUZvclZhbHVlXXx8dGhpcy5faW5wdXRFbGVtZW50LnZhbHVlfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGU9ITA7dGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9ib3VuZE9uRm9jdXMsITApO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fYm91bmRPbkJsdXIsITApfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuYXR0ckZvclZhbHVlP3RoaXMuX2lucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHRoaXMuX3ZhbHVlQ2hhbmdlZEV2ZW50LHRoaXMuX2JvdW5kVmFsdWVDaGFuZ2VkKTp0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImlucHV0Iix0aGlzLl9vbklucHV0KTt0aGlzLl9pbnB1dEVsZW1lbnRWYWx1ZSYmIiIhPXRoaXMuX2lucHV0RWxlbWVudFZhbHVlPwp0aGlzLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLl9pbnB1dEVsZW1lbnQpOnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCl9LF9vbkFkZG9uQXR0YWNoZWQ6ZnVuY3Rpb24oYil7dGhpcy5fYWRkb25zfHwodGhpcy5fYWRkb25zPVtdKTtiPWIudGFyZ2V0Oy0xPT09dGhpcy5fYWRkb25zLmluZGV4T2YoYikmJih0aGlzLl9hZGRvbnMucHVzaChiKSx0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2hhbmRsZVZhbHVlKHRoaXMuX2lucHV0RWxlbWVudCkpfSxfb25Gb2N1czpmdW5jdGlvbigpe3RoaXMuX3NldEZvY3VzZWQoITApfSxfb25CbHVyOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Rm9jdXNlZCghMSk7dGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUodGhpcy5faW5wdXRFbGVtZW50KX0sX29uSW5wdXQ6ZnVuY3Rpb24oYil7dGhpcy5faGFuZGxlVmFsdWVBbmRBdXRvVmFsaWRhdGUoYi50YXJnZXQpfSxfb25WYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oYil7dmFyIGQ9CmIudGFyZ2V0O2lmKHRoaXMuX19pc0ZpcnN0VmFsdWVVcGRhdGUmJih0aGlzLl9faXNGaXJzdFZhbHVlVXBkYXRlPSExLHZvaWQgMD09PWQudmFsdWV8fCIiPT09ZC52YWx1ZSkpcmV0dXJuO3RoaXMuX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlKGIudGFyZ2V0KX0sX2hhbmRsZVZhbHVlOmZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuX2lucHV0RWxlbWVudFZhbHVlO2R8fDA9PT1kfHwibnVtYmVyIj09PWIudHlwZSYmIWIuY2hlY2tWYWxpZGl0eSgpP3RoaXMuX2lucHV0SGFzQ29udGVudD0hMDp0aGlzLl9pbnB1dEhhc0NvbnRlbnQ9ITE7dGhpcy51cGRhdGVBZGRvbnMoe2lucHV0RWxlbWVudDpiLHZhbHVlOmQsaW52YWxpZDp0aGlzLmludmFsaWR9KX0sX2hhbmRsZVZhbHVlQW5kQXV0b1ZhbGlkYXRlOmZ1bmN0aW9uKGIpe3RoaXMuYXV0b1ZhbGlkYXRlJiZiJiYodGhpcy5pbnZhbGlkPSEoYi52YWxpZGF0ZT9iLnZhbGlkYXRlKHRoaXMuX2lucHV0RWxlbWVudFZhbHVlKTpiLmNoZWNrVmFsaWRpdHkoKSkpOwp0aGlzLl9oYW5kbGVWYWx1ZShiKX0sX29uSXJvbklucHV0VmFsaWRhdGU6ZnVuY3Rpb24oKXt0aGlzLmludmFsaWQ9dGhpcy5faW5wdXRFbGVtZW50LmludmFsaWR9LF9pbnZhbGlkQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2FkZG9ucyYmdGhpcy51cGRhdGVBZGRvbnMoe2ludmFsaWQ6dGhpcy5pbnZhbGlkfSl9LHVwZGF0ZUFkZG9uczpmdW5jdGlvbihiKXtmb3IodmFyIGQsZj0wO2Q9dGhpcy5fYWRkb25zW2ZdO2YrKylkLnVwZGF0ZShiKX0sX2NvbXB1dGVJbnB1dENvbnRlbnRDbGFzczpmdW5jdGlvbihiLGQsZixoLGspe3ZhciB0PSJpbnB1dC1jb250ZW50IjtiPyhrJiYodCs9IiBsYWJlbC1pcy1oaWRkZW4iKSxoJiYodCs9IiBpcy1pbnZhbGlkIikpOihiPXRoaXMucXVlcnlTZWxlY3RvcigibGFiZWwiKSxkfHxrPyh0Kz0iIGxhYmVsLWlzLWZsb2F0aW5nIix0aGlzLiQubGFiZWxBbmRJbnB1dENvbnRhaW5lci5zdHlsZS5wb3NpdGlvbj0ic3RhdGljIixoP3QrPSIgaXMtaW52YWxpZCI6CmYmJih0Kz0iIGxhYmVsLWlzLWhpZ2hsaWdodGVkIikpOihiJiYodGhpcy4kLmxhYmVsQW5kSW5wdXRDb250YWluZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaCYmKHQrPSIgaXMtaW52YWxpZCIpKSk7ZiYmKHQrPSIgZm9jdXNlZCIpO3JldHVybiB0fSxfY29tcHV0ZVVuZGVybGluZUNsYXNzOmZ1bmN0aW9uKGIsZCl7dmFyIGY9InVuZGVybGluZSI7ZD9mKz0iIGlzLWludmFsaWQiOmImJihmKz0iIGlzLWhpZ2hsaWdodGVkIik7cmV0dXJuIGZ9LF9jb21wdXRlQWRkT25Db250ZW50Q2xhc3M6ZnVuY3Rpb24oYixkKXt2YXIgZj0iYWRkLW9uLWNvbnRlbnQiO2Q/Zis9IiBpcy1pbnZhbGlkIjpiJiYoZis9IiBpcy1oaWdobGlnaHRlZCIpO3JldHVybiBmfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWlucHV0L3BhcGVyLWlucHV0LWVycm9yLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWlucHV0LWVycm9yIixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJJbnB1dEFkZG9uQmVoYXZpb3JdLHByb3BlcnRpZXM6e2ludmFsaWQ6e3JlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx0eXBlOkJvb2xlYW59fSx1cGRhdGU6ZnVuY3Rpb24oYil7dGhpcy5fc2V0SW52YWxpZChiLmludmFsaWQpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWlucHV0L3BhcGVyLWlucHV0Lmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWlucHV0IixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJJbnB1dEJlaGF2aW9yLFBvbHltZXIuSXJvbkZvcm1FbGVtZW50QmVoYXZpb3JdLHByb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOlN0cmluZ319LGJlZm9yZVJlZ2lzdGVyOmZ1bmN0aW9uKCl7dmFyIGI9ImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24taW5wdXQiKS5faW5pdFNsb3R0ZWRJbnB1dD8idjEiOiJ2MCIsZD1Qb2x5bWVyLkRvbU1vZHVsZS5pbXBvcnQoInBhcGVyLWlucHV0IiwidGVtcGxhdGUiKTtiPVBvbHltZXIuRG9tTW9kdWxlLmltcG9ydCgicGFwZXItaW5wdXQiLCJ0ZW1wbGF0ZSMiK2IpOyhkPWQuY29udGVudC5xdWVyeVNlbGVjdG9yKCIjdGVtcGxhdGUtcGxhY2Vob2xkZXIiKSkmJmQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYi5jb250ZW50LGQpfSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gUG9seW1lci5FbGVtZW50P3RoaXMuaW5wdXRFbGVtZW50Ll9pbnB1dEVsZW1lbnQ6CnRoaXMuaW5wdXRFbGVtZW50fSxsaXN0ZW5lcnM6eyJpcm9uLWlucHV0LXJlYWR5IjoiX29uSXJvbklucHV0UmVhZHkifSxfb25Jcm9uSW5wdXRSZWFkeTpmdW5jdGlvbigpe3RoaXMuJC5uYXRpdmVJbnB1dHx8KHRoaXMuJC5uYXRpdmVJbnB1dD10aGlzLiQkKCJpbnB1dCIpKTt0aGlzLmlucHV0RWxlbWVudCYmLTEhPT10aGlzLl90eXBlc1RoYXRIYXZlVGV4dC5pbmRleE9mKHRoaXMuJC5uYXRpdmVJbnB1dC50eXBlKSYmKHRoaXMuYWx3YXlzRmxvYXRMYWJlbD0hMCk7dGhpcy5pbnB1dEVsZW1lbnQuYmluZFZhbHVlJiZ0aGlzLiQuY29udGFpbmVyLl9oYW5kbGVWYWx1ZUFuZEF1dG9WYWxpZGF0ZSh0aGlzLmlucHV0RWxlbWVudCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vaXJvbi1maXQtYmVoYXZpb3IvaXJvbi1maXQtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLklyb25GaXRCZWhhdmlvcj17cHJvcGVydGllczp7c2l6aW5nVGFyZ2V0Ont0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0sZml0SW50bzp7dHlwZTpPYmplY3QsdmFsdWU6d2luZG93fSxub092ZXJsYXA6e3R5cGU6Qm9vbGVhbn0scG9zaXRpb25UYXJnZXQ6e3R5cGU6RWxlbWVudH0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZ30sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmd9LGR5bmFtaWNBbGlnbjp7dHlwZTpCb29sZWFufSxob3Jpem9udGFsT2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMH0sdmVydGljYWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxhdXRvRml0T25BdHRhY2g6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2ZpdEluZm86e3R5cGU6T2JqZWN0fX0sZ2V0IF9maXRXaWR0aCgpe3JldHVybiB0aGlzLmZpdEludG89PT13aW5kb3c/dGhpcy5maXRJbnRvLmlubmVyV2lkdGg6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRofSwKZ2V0IF9maXRIZWlnaHQoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93P3RoaXMuZml0SW50by5pbm5lckhlaWdodDp0aGlzLmZpdEludG8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0fSxnZXQgX2ZpdExlZnQoKXtyZXR1cm4gdGhpcy5maXRJbnRvPT09d2luZG93PzA6dGhpcy5maXRJbnRvLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9LGdldCBfZml0VG9wKCl7cmV0dXJuIHRoaXMuZml0SW50bz09PXdpbmRvdz8wOnRoaXMuZml0SW50by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3B9LGdldCBfZGVmYXVsdFBvc2l0aW9uVGFyZ2V0KCl7dmFyIGI9UG9seW1lci5kb20odGhpcykucGFyZW50Tm9kZTtiJiZiLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiYoYj1iLmhvc3QpO3JldHVybiBifSxnZXQgX2xvY2FsZUhvcml6b250YWxBbGlnbigpe2lmKHRoaXMuX2lzUlRMKXtpZigicmlnaHQiPT09dGhpcy5ob3Jpem9udGFsQWxpZ24pcmV0dXJuImxlZnQiOwppZigibGVmdCI9PT10aGlzLmhvcml6b250YWxBbGlnbilyZXR1cm4icmlnaHQifXJldHVybiB0aGlzLmhvcml6b250YWxBbGlnbn0sZ2V0IF9fc2hvdWxkUG9zaXRpb24oKXtyZXR1cm4odGhpcy5ob3Jpem9udGFsQWxpZ258fHRoaXMudmVydGljYWxBbGlnbikmJnRoaXMucG9zaXRpb25UYXJnZXR9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7InVuZGVmaW5lZCI9PT10eXBlb2YgdGhpcy5faXNSVEwmJih0aGlzLl9pc1JUTD0icnRsIj09d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcykuZGlyZWN0aW9uKTt0aGlzLnBvc2l0aW9uVGFyZ2V0PXRoaXMucG9zaXRpb25UYXJnZXR8fHRoaXMuX2RlZmF1bHRQb3NpdGlvblRhcmdldDt0aGlzLmF1dG9GaXRPbkF0dGFjaCYmKCJub25lIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLmRpc3BsYXk/c2V0VGltZW91dChmdW5jdGlvbigpe3RoaXMuZml0KCl9LmJpbmQodGhpcykpOih3aW5kb3cuU2hhZHlET00mJlNoYWR5RE9NLmZsdXNoKCksCnRoaXMuZml0KCkpKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fZGVmZXJyZWRGaXQmJihjbGVhclRpbWVvdXQodGhpcy5fX2RlZmVycmVkRml0KSx0aGlzLl9fZGVmZXJyZWRGaXQ9bnVsbCl9LGZpdDpmdW5jdGlvbigpe3RoaXMucG9zaXRpb24oKTt0aGlzLmNvbnN0cmFpbigpO3RoaXMuY2VudGVyKCl9LF9kaXNjb3ZlckluZm86ZnVuY3Rpb24oKXtpZighdGhpcy5fZml0SW5mbyl7dmFyIGI9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyksZD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnNpemluZ1RhcmdldCk7dGhpcy5fZml0SW5mbz17aW5saW5lU3R5bGU6e3RvcDp0aGlzLnN0eWxlLnRvcHx8IiIsbGVmdDp0aGlzLnN0eWxlLmxlZnR8fCIiLHBvc2l0aW9uOnRoaXMuc3R5bGUucG9zaXRpb258fCIifSxzaXplcklubGluZVN0eWxlOnttYXhXaWR0aDp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5tYXhXaWR0aHx8IiIsbWF4SGVpZ2h0OnRoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heEhlaWdodHx8CiIiLGJveFNpemluZzp0aGlzLnNpemluZ1RhcmdldC5zdHlsZS5ib3hTaXppbmd8fCIifSxwb3NpdGlvbmVkQnk6e3ZlcnRpY2FsbHk6ImF1dG8iIT09Yi50b3A/InRvcCI6ImF1dG8iIT09Yi5ib3R0b20/ImJvdHRvbSI6bnVsbCxob3Jpem9udGFsbHk6ImF1dG8iIT09Yi5sZWZ0PyJsZWZ0IjoiYXV0byIhPT1iLnJpZ2h0PyJyaWdodCI6bnVsbH0sc2l6ZWRCeTp7aGVpZ2h0OiJub25lIiE9PWQubWF4SGVpZ2h0LHdpZHRoOiJub25lIiE9PWQubWF4V2lkdGgsbWluV2lkdGg6cGFyc2VJbnQoZC5taW5XaWR0aCwxMCl8fDAsbWluSGVpZ2h0OnBhcnNlSW50KGQubWluSGVpZ2h0LDEwKXx8MH0sbWFyZ2luOnt0b3A6cGFyc2VJbnQoYi5tYXJnaW5Ub3AsMTApfHwwLHJpZ2h0OnBhcnNlSW50KGIubWFyZ2luUmlnaHQsMTApfHwwLGJvdHRvbTpwYXJzZUludChiLm1hcmdpbkJvdHRvbSwxMCl8fDAsbGVmdDpwYXJzZUludChiLm1hcmdpbkxlZnQsMTApfHwwfX19fSxyZXNldEZpdDpmdW5jdGlvbigpe3ZhciBiPQp0aGlzLl9maXRJbmZvfHx7fSxkO2ZvcihkIGluIGIuc2l6ZXJJbmxpbmVTdHlsZSl0aGlzLnNpemluZ1RhcmdldC5zdHlsZVtkXT1iLnNpemVySW5saW5lU3R5bGVbZF07Zm9yKGQgaW4gYi5pbmxpbmVTdHlsZSl0aGlzLnN0eWxlW2RdPWIuaW5saW5lU3R5bGVbZF07dGhpcy5fZml0SW5mbz1udWxsfSxyZWZpdDpmdW5jdGlvbigpe3ZhciBiPXRoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbExlZnQsZD10aGlzLnNpemluZ1RhcmdldC5zY3JvbGxUb3A7dGhpcy5yZXNldEZpdCgpO3RoaXMuZml0KCk7dGhpcy5zaXppbmdUYXJnZXQuc2Nyb2xsTGVmdD1iO3RoaXMuc2l6aW5nVGFyZ2V0LnNjcm9sbFRvcD1kfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXMuX19zaG91bGRQb3NpdGlvbil7dGhpcy5fZGlzY292ZXJJbmZvKCk7dGhpcy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dGhpcy5zdHlsZS5sZWZ0PSIwcHgiOwp0aGlzLnN0eWxlLnRvcD0iMHB4Ijt2YXIgYj10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGQ9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMucG9zaXRpb25UYXJnZXQpLGY9dGhpcy5fX2dldE5vcm1hbGl6ZWRSZWN0KHRoaXMuZml0SW50byksaD10aGlzLl9maXRJbmZvLm1hcmdpbixrPXRoaXMuX19nZXRQb3NpdGlvbih0aGlzLl9sb2NhbGVIb3Jpem9udGFsQWxpZ24sdGhpcy52ZXJ0aWNhbEFsaWduLHt3aWR0aDpiLndpZHRoK2gubGVmdCtoLnJpZ2h0LGhlaWdodDpiLmhlaWdodCtoLnRvcCtoLmJvdHRvbX0sYixkLGYpO2Q9ay5sZWZ0K2gubGVmdDtrPWsudG9wK2gudG9wO3ZhciB0PU1hdGgubWluKGYucmlnaHQtaC5yaWdodCxkK2Iud2lkdGgpLGw9TWF0aC5taW4oZi5ib3R0b20taC5ib3R0b20saytiLmhlaWdodCk7ZD1NYXRoLm1heChmLmxlZnQraC5sZWZ0LE1hdGgubWluKGQsdC10aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpKTtrPU1hdGgubWF4KGYudG9wKwpoLnRvcCxNYXRoLm1pbihrLGwtdGhpcy5fZml0SW5mby5zaXplZEJ5Lm1pbkhlaWdodCkpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLm1heFdpZHRoPU1hdGgubWF4KHQtZCx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluV2lkdGgpKyJweCI7dGhpcy5zaXppbmdUYXJnZXQuc3R5bGUubWF4SGVpZ2h0PU1hdGgubWF4KGwtayx0aGlzLl9maXRJbmZvLnNpemVkQnkubWluSGVpZ2h0KSsicHgiO3RoaXMuc3R5bGUubGVmdD1kLWIubGVmdCsicHgiO3RoaXMuc3R5bGUudG9wPWstYi50b3ArInB4In19LGNvbnN0cmFpbjpmdW5jdGlvbigpe2lmKCF0aGlzLl9fc2hvdWxkUG9zaXRpb24pe3RoaXMuX2Rpc2NvdmVySW5mbygpO3ZhciBiPXRoaXMuX2ZpdEluZm87Yi5wb3NpdGlvbmVkQnkudmVydGljYWxseXx8KHRoaXMuc3R5bGUucG9zaXRpb249ImZpeGVkIix0aGlzLnN0eWxlLnRvcD0iMHB4Iik7Yi5wb3NpdGlvbmVkQnkuaG9yaXpvbnRhbGx5fHwodGhpcy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLAp0aGlzLnN0eWxlLmxlZnQ9IjBweCIpO3RoaXMuc2l6aW5nVGFyZ2V0LnN0eWxlLmJveFNpemluZz0iYm9yZGVyLWJveCI7dmFyIGQ9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtiLnNpemVkQnkuaGVpZ2h0fHx0aGlzLl9fc2l6ZURpbWVuc2lvbihkLGIucG9zaXRpb25lZEJ5LnZlcnRpY2FsbHksInRvcCIsImJvdHRvbSIsIkhlaWdodCIpO2Iuc2l6ZWRCeS53aWR0aHx8dGhpcy5fX3NpemVEaW1lbnNpb24oZCxiLnBvc2l0aW9uZWRCeS5ob3Jpem9udGFsbHksImxlZnQiLCJyaWdodCIsIldpZHRoIil9fSxfc2l6ZURpbWVuc2lvbjpmdW5jdGlvbihiLGQsZixoLGspe3RoaXMuX19zaXplRGltZW5zaW9uKGIsZCxmLGgsayl9LF9fc2l6ZURpbWVuc2lvbjpmdW5jdGlvbihiLGQsZixoLGspe3ZhciB0PXRoaXMuX2ZpdEluZm8sbD10aGlzLl9fZ2V0Tm9ybWFsaXplZFJlY3QodGhpcy5maXRJbnRvKTtsPSJXaWR0aCI9PT1rP2wud2lkdGg6bC5oZWlnaHQ7ZD1kPT09aDt2YXIgcD0KIm9mZnNldCIrazt0aGlzLnNpemluZ1RhcmdldC5zdHlsZVsibWF4IitrXT1sLXQubWFyZ2luW2Q/ZjpoXS0oZD9sLWJbaF06YltmXSktKHRoaXNbcF0tdGhpcy5zaXppbmdUYXJnZXRbcF0pKyJweCJ9LGNlbnRlcjpmdW5jdGlvbigpe2lmKCF0aGlzLl9fc2hvdWxkUG9zaXRpb24pe3RoaXMuX2Rpc2NvdmVySW5mbygpO3ZhciBiPXRoaXMuX2ZpdEluZm8ucG9zaXRpb25lZEJ5O2lmKCFiLnZlcnRpY2FsbHl8fCFiLmhvcml6b250YWxseSl7dGhpcy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiO2IudmVydGljYWxseXx8KHRoaXMuc3R5bGUudG9wPSIwcHgiKTtiLmhvcml6b250YWxseXx8KHRoaXMuc3R5bGUubGVmdD0iMHB4Iik7dmFyIGQ9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmPXRoaXMuX19nZXROb3JtYWxpemVkUmVjdCh0aGlzLmZpdEludG8pO2IudmVydGljYWxseXx8KHRoaXMuc3R5bGUudG9wPWYudG9wLWQudG9wKyhmLmhlaWdodC1kLmhlaWdodCkvMisicHgiKTtiLmhvcml6b250YWxseXx8Cih0aGlzLnN0eWxlLmxlZnQ9Zi5sZWZ0LWQubGVmdCsoZi53aWR0aC1kLndpZHRoKS8yKyJweCIpfX19LF9fZ2V0Tm9ybWFsaXplZFJlY3Q6ZnVuY3Rpb24oYil7cmV0dXJuIGI9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGI9PT13aW5kb3c/e3RvcDowLGxlZnQ6MCx3aWR0aDp3aW5kb3cuaW5uZXJXaWR0aCxoZWlnaHQ6d2luZG93LmlubmVySGVpZ2h0LHJpZ2h0OndpbmRvdy5pbm5lcldpZHRoLGJvdHRvbTp3aW5kb3cuaW5uZXJIZWlnaHR9OmIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9LF9fZ2V0T2Zmc2NyZWVuQXJlYTpmdW5jdGlvbihiLGQsZil7cmV0dXJuIE1hdGguYWJzKE1hdGgubWluKDAsYi50b3ApK01hdGgubWluKDAsZi5ib3R0b20tKGIudG9wK2QuaGVpZ2h0KSkpKmQud2lkdGgrTWF0aC5hYnMoTWF0aC5taW4oMCxiLmxlZnQpK01hdGgubWluKDAsZi5yaWdodC0oYi5sZWZ0K2Qud2lkdGgpKSkqZC5oZWlnaHR9LF9fZ2V0UG9zaXRpb246ZnVuY3Rpb24oYixkLApmLGgsayx0KXt2YXIgbD1be3ZlcnRpY2FsQWxpZ246InRvcCIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ay50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OmsubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDprLnRvcCt0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ay5yaWdodC1mLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH0se3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJsZWZ0Iix0b3A6ay5ib3R0b20tZi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldCxsZWZ0OmsubGVmdCt0aGlzLmhvcml6b250YWxPZmZzZXR9LHt2ZXJ0aWNhbEFsaWduOiJib3R0b20iLGhvcml6b250YWxBbGlnbjoicmlnaHQiLHRvcDprLmJvdHRvbS1mLmhlaWdodC10aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ay5yaWdodC1mLndpZHRoLXRoaXMuaG9yaXpvbnRhbE9mZnNldH1dOwppZih0aGlzLm5vT3ZlcmxhcCl7Zm9yKHZhciBwPTAsbT1sLmxlbmd0aDtwPG07cCsrKXt2YXIgbj17fSxxO2ZvcihxIGluIGxbcF0pbltxXT1sW3BdW3FdO2wucHVzaChuKX1sWzBdLnRvcD1sWzFdLnRvcCs9ay5oZWlnaHQ7bFsyXS50b3A9bFszXS50b3AtPWsuaGVpZ2h0O2xbNF0ubGVmdD1sWzZdLmxlZnQrPWsud2lkdGg7bFs1XS5sZWZ0PWxbN10ubGVmdC09ay53aWR0aH1kPSJhdXRvIj09PWQ/bnVsbDpkO2I9ImF1dG8iPT09Yj9udWxsOmI7YiYmImNlbnRlciIhPT1ifHwobC5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ay50b3ArdGhpcy52ZXJ0aWNhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ay5oZWlnaHQ6MCksbGVmdDprLmxlZnQtaC53aWR0aC8yK2sud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSxsLnB1c2goe3ZlcnRpY2FsQWxpZ246ImJvdHRvbSIsaG9yaXpvbnRhbEFsaWduOiJjZW50ZXIiLHRvcDprLmJvdHRvbS0KZi5oZWlnaHQtdGhpcy52ZXJ0aWNhbE9mZnNldC0odGhpcy5ub092ZXJsYXA/ay5oZWlnaHQ6MCksbGVmdDprLmxlZnQtaC53aWR0aC8yK2sud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KSk7ZCYmIm1pZGRsZSIhPT1kfHwobC5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoibGVmdCIsdG9wOmsudG9wLWguaGVpZ2h0LzIray5oZWlnaHQvMit0aGlzLnZlcnRpY2FsT2Zmc2V0LGxlZnQ6ay5sZWZ0K3RoaXMuaG9yaXpvbnRhbE9mZnNldCsodGhpcy5ub092ZXJsYXA/ay53aWR0aDowKX0pLGwucHVzaCh7dmVydGljYWxBbGlnbjoibWlkZGxlIixob3Jpem9udGFsQWxpZ246InJpZ2h0Iix0b3A6ay50b3AtaC5oZWlnaHQvMitrLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDprLnJpZ2h0LWYud2lkdGgtdGhpcy5ob3Jpem9udGFsT2Zmc2V0LSh0aGlzLm5vT3ZlcmxhcD9rLndpZHRoOjApfSkpOyJtaWRkbGUiPT09ZCYmImNlbnRlciI9PT0KYiYmbC5wdXNoKHt2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGhvcml6b250YWxBbGlnbjoiY2VudGVyIix0b3A6ay50b3AtaC5oZWlnaHQvMitrLmhlaWdodC8yK3RoaXMudmVydGljYWxPZmZzZXQsbGVmdDprLmxlZnQtaC53aWR0aC8yK2sud2lkdGgvMit0aGlzLmhvcml6b250YWxPZmZzZXR9KTtmb3IocD0wO3A8bC5sZW5ndGg7cCsrKXtoPWxbcF07az1oLnZlcnRpY2FsQWxpZ249PT1kO209aC5ob3Jpem9udGFsQWxpZ249PT1iO2lmKCF0aGlzLmR5bmFtaWNBbGlnbiYmIXRoaXMubm9PdmVybGFwJiZrJiZtKXt2YXIgdT1oO2JyZWFrfW49KCFkfHxrKSYmKCFifHxtKTtpZih0aGlzLmR5bmFtaWNBbGlnbnx8bil7aC5vZmZzY3JlZW5BcmVhPXRoaXMuX19nZXRPZmZzY3JlZW5BcmVhKGgsZix0KTtpZigwPT09aC5vZmZzY3JlZW5BcmVhJiZuKXt1PWg7YnJlYWt9dT11fHxoO249aC5vZmZzY3JlZW5BcmVhLXUub2Zmc2NyZWVuQXJlYTtpZigwPm58fDA9PT1uJiYoa3x8bSkpdT1ofX1yZXR1cm4gdX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tcmVzaXphYmxlLWJlaGF2aW9yL2lyb24tcmVzaXphYmxlLWJlaGF2aW9yLmh0bWwuanMKUG9seW1lci5Jcm9uUmVzaXphYmxlQmVoYXZpb3I9e3Byb3BlcnRpZXM6e19wYXJlbnRSZXNpemFibGU6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfcGFyZW50UmVzaXphYmxlQ2hhbmdlZCJ9LF9ub3RpZnlpbmdEZXNjZW5kYW50Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxsaXN0ZW5lcnM6eyJpcm9uLXJlcXVlc3QtcmVzaXplLW5vdGlmaWNhdGlvbnMiOiJfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnMifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXM9W107dGhpcy5fYm91bmROb3RpZnlSZXNpemU9dGhpcy5ub3RpZnlSZXNpemUuYmluZCh0aGlzKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucygpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3BhcmVudFJlc2l6YWJsZT90aGlzLl9wYXJlbnRSZXNpemFibGUuc3RvcFJlc2l6ZU5vdGlmaWNhdGlvbnNGb3IodGhpcyk6d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsCnRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKTt0aGlzLl9wYXJlbnRSZXNpemFibGU9bnVsbH0sbm90aWZ5UmVzaXplOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuZm9yRWFjaChmdW5jdGlvbihiKXt0aGlzLnJlc2l6ZXJTaG91bGROb3RpZnkoYikmJnRoaXMuX25vdGlmeURlc2NlbmRhbnQoYil9LHRoaXMpLHRoaXMuX2ZpcmVSZXNpemUoKSl9LGFzc2lnblBhcmVudFJlc2l6YWJsZTpmdW5jdGlvbihiKXt0aGlzLl9wYXJlbnRSZXNpemFibGU9Yn0sc3RvcFJlc2l6ZU5vdGlmaWNhdGlvbnNGb3I6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZihiKTstMTxkJiYodGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuc3BsaWNlKGQsMSksdGhpcy51bmxpc3RlbihiLCJpcm9uLXJlc2l6ZSIsIl9vbkRlc2NlbmRhbnRJcm9uUmVzaXplIikpfSxyZXNpemVyU2hvdWxkTm90aWZ5OmZ1bmN0aW9uKCl7cmV0dXJuITB9LApfb25EZXNjZW5kYW50SXJvblJlc2l6ZTpmdW5jdGlvbihiKXt0aGlzLl9ub3RpZnlpbmdEZXNjZW5kYW50P2Iuc3RvcFByb3BhZ2F0aW9uKCk6UG9seW1lci5TZXR0aW5ncy51c2VTaGFkb3d8fHRoaXMuX2ZpcmVSZXNpemUoKX0sX2ZpcmVSZXNpemU6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImlyb24tcmVzaXplIixudWxsLHtub2RlOnRoaXMsYnViYmxlczohMX0pfSxfb25Jcm9uUmVxdWVzdFJlc2l6ZU5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGQ9UG9seW1lci5kb20oYikucm9vdFRhcmdldDtkIT09dGhpcyYmKC0xPT09dGhpcy5faW50ZXJlc3RlZFJlc2l6YWJsZXMuaW5kZXhPZihkKSYmKHRoaXMuX2ludGVyZXN0ZWRSZXNpemFibGVzLnB1c2goZCksdGhpcy5saXN0ZW4oZCwiaXJvbi1yZXNpemUiLCJfb25EZXNjZW5kYW50SXJvblJlc2l6ZSIpKSxkLmFzc2lnblBhcmVudFJlc2l6YWJsZSh0aGlzKSx0aGlzLl9ub3RpZnlEZXNjZW5kYW50KGQpLGIuc3RvcFByb3BhZ2F0aW9uKCkpfSwKX3BhcmVudFJlc2l6YWJsZUNoYW5nZWQ6ZnVuY3Rpb24oYil7YiYmd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5fYm91bmROb3RpZnlSZXNpemUpfSxfbm90aWZ5RGVzY2VuZGFudDpmdW5jdGlvbihiKXt0aGlzLmlzQXR0YWNoZWQmJih0aGlzLl9ub3RpZnlpbmdEZXNjZW5kYW50PSEwLGIubm90aWZ5UmVzaXplKCksdGhpcy5fbm90aWZ5aW5nRGVzY2VuZGFudD0hMSl9LF9yZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9uczpmdW5jdGlvbigpe2lmKHRoaXMuaXNBdHRhY2hlZClpZigibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlKXt2YXIgYj10aGlzLl9yZXF1ZXN0UmVzaXplTm90aWZpY2F0aW9ucy5iaW5kKHRoaXMpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uIGYoKXtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJyZWFkeXN0YXRlY2hhbmdlIixmKTtiKCl9KX1lbHNlIHRoaXMuZmlyZSgiaXJvbi1yZXF1ZXN0LXJlc2l6ZS1ub3RpZmljYXRpb25zIiwKbnVsbCx7bm9kZTp0aGlzLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMH0pLHRoaXMuX3BhcmVudFJlc2l6YWJsZXx8KHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMuX2JvdW5kTm90aWZ5UmVzaXplKSx0aGlzLm5vdGlmeVJlc2l6ZSgpKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tb3ZlcmxheS1iZWhhdmlvci9pcm9uLW92ZXJsYXktYmFja2Ryb3AuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoiaXJvbi1vdmVybGF5LWJhY2tkcm9wIixwcm9wZXJ0aWVzOntvcGVuZWQ6e3JlZmxlY3RUb0F0dHJpYnV0ZTohMCx0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIn19LGxpc3RlbmVyczp7dHJhbnNpdGlvbmVuZDoiX29uVHJhbnNpdGlvbmVuZCJ9LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLl9fb3BlbmVkUmFmPW51bGx9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuX29wZW5lZENoYW5nZWQodGhpcy5vcGVuZWQpfSxwcmVwYXJlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLnBhcmVudE5vZGUmJlBvbHltZXIuZG9tKGRvY3VtZW50LmJvZHkpLmFwcGVuZENoaWxkKHRoaXMpfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITF9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWR8fHRoaXMucGFyZW50Tm9kZSE9PQpkb2N1bWVudC5ib2R5fHxQb2x5bWVyLmRvbSh0aGlzLnBhcmVudE5vZGUpLnJlbW92ZUNoaWxkKHRoaXMpfSxfb25UcmFuc2l0aW9uZW5kOmZ1bmN0aW9uKGIpe2ImJmIudGFyZ2V0PT09dGhpcyYmdGhpcy5jb21wbGV0ZSgpfSxfb3BlbmVkQ2hhbmdlZDpmdW5jdGlvbihiKXtiP3RoaXMucHJlcGFyZSgpOihiPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLCIwcyIhPT1iLnRyYW5zaXRpb25EdXJhdGlvbiYmMCE9Yi5vcGFjaXR5fHx0aGlzLmNvbXBsZXRlKCkpO3RoaXMuaXNBdHRhY2hlZCYmKHRoaXMuX19vcGVuZWRSYWYmJih3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fX29wZW5lZFJhZiksdGhpcy5fX29wZW5lZFJhZj1udWxsKSx0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCx0aGlzLl9fb3BlbmVkUmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXt0aGlzLl9fb3BlbmVkUmFmPW51bGw7dGhpcy50b2dnbGVDbGFzcygib3BlbmVkIiwKdGhpcy5vcGVuZWQpfS5iaW5kKHRoaXMpKSl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tb3ZlcmxheS1iZWhhdmlvci9pcm9uLW92ZXJsYXktbWFuYWdlci5odG1sLmpzClBvbHltZXIuSXJvbk92ZXJsYXlNYW5hZ2VyQ2xhc3M9ZnVuY3Rpb24oKXt0aGlzLl9vdmVybGF5cz1bXTt0aGlzLl9taW5pbXVtWj0xMDE7dGhpcy5fYmFja2Ryb3BFbGVtZW50PW51bGw7UG9seW1lci5HZXN0dXJlcy5hZGQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCJ0YXAiLGZ1bmN0aW9uKCl7fSk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidGFwIix0aGlzLl9vbkNhcHR1cmVDbGljay5iaW5kKHRoaXMpLCEwKTtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsdGhpcy5fb25DYXB0dXJlRm9jdXMuYmluZCh0aGlzKSwhMCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsdGhpcy5fb25DYXB0dXJlS2V5RG93bi5iaW5kKHRoaXMpLCEwKX07ClBvbHltZXIuSXJvbk92ZXJsYXlNYW5hZ2VyQ2xhc3MucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQb2x5bWVyLklyb25PdmVybGF5TWFuYWdlckNsYXNzLGdldCBiYWNrZHJvcEVsZW1lbnQoKXt0aGlzLl9iYWNrZHJvcEVsZW1lbnR8fCh0aGlzLl9iYWNrZHJvcEVsZW1lbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaXJvbi1vdmVybGF5LWJhY2tkcm9wIikpO3JldHVybiB0aGlzLl9iYWNrZHJvcEVsZW1lbnR9LGdldCBkZWVwQWN0aXZlRWxlbWVudCgpe3ZhciBiPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7YiYmITEhPT1iIGluc3RhbmNlb2YgRWxlbWVudHx8KGI9ZG9jdW1lbnQuYm9keSk7Zm9yKDtiLnJvb3QmJlBvbHltZXIuZG9tKGIucm9vdCkuYWN0aXZlRWxlbWVudDspYj1Qb2x5bWVyLmRvbShiLnJvb3QpLmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIGJ9LF9icmluZ092ZXJsYXlBdEluZGV4VG9Gcm9udDpmdW5jdGlvbihiKXt2YXIgZD10aGlzLl9vdmVybGF5c1tiXTtpZihkKXt2YXIgZj0KdGhpcy5fb3ZlcmxheXMubGVuZ3RoLTEsaD10aGlzLl9vdmVybGF5c1tmXTtoJiZ0aGlzLl9zaG91bGRCZUJlaGluZE92ZXJsYXkoZCxoKSYmZi0tO2lmKCEoYj49Zikpe2g9TWF0aC5tYXgodGhpcy5jdXJyZW50T3ZlcmxheVooKSx0aGlzLl9taW5pbXVtWik7Zm9yKHRoaXMuX2dldFooZCk8PWgmJnRoaXMuX2FwcGx5T3ZlcmxheVooZCxoKTtiPGY7KXRoaXMuX292ZXJsYXlzW2JdPXRoaXMuX292ZXJsYXlzW2IrMV0sYisrO3RoaXMuX292ZXJsYXlzW2ZdPWR9fX0sYWRkT3JSZW1vdmVPdmVybGF5OmZ1bmN0aW9uKGIpe2Iub3BlbmVkP3RoaXMuYWRkT3ZlcmxheShiKTp0aGlzLnJlbW92ZU92ZXJsYXkoYil9LGFkZE92ZXJsYXk6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZihiKTtpZigwPD1kKXRoaXMuX2JyaW5nT3ZlcmxheUF0SW5kZXhUb0Zyb250KGQpO2Vsc2V7ZD10aGlzLl9vdmVybGF5cy5sZW5ndGg7dmFyIGY9dGhpcy5fb3ZlcmxheXNbZC0xXSxoPQpNYXRoLm1heCh0aGlzLl9nZXRaKGYpLHRoaXMuX21pbmltdW1aKSxrPXRoaXMuX2dldFooYik7ZiYmdGhpcy5fc2hvdWxkQmVCZWhpbmRPdmVybGF5KGIsZikmJih0aGlzLl9hcHBseU92ZXJsYXlaKGYsaCksZC0tLGg9TWF0aC5tYXgodGhpcy5fZ2V0Wih0aGlzLl9vdmVybGF5c1tkLTFdKSx0aGlzLl9taW5pbXVtWikpO2s8PWgmJnRoaXMuX2FwcGx5T3ZlcmxheVooYixoKTt0aGlzLl9vdmVybGF5cy5zcGxpY2UoZCwwLGIpfXRoaXMudHJhY2tCYWNrZHJvcCgpfSxyZW1vdmVPdmVybGF5OmZ1bmN0aW9uKGIpe2I9dGhpcy5fb3ZlcmxheXMuaW5kZXhPZihiKTstMSE9PWImJih0aGlzLl9vdmVybGF5cy5zcGxpY2UoYiwxKSx0aGlzLnRyYWNrQmFja2Ryb3AoKSl9LGN1cnJlbnRPdmVybGF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX292ZXJsYXlzW3RoaXMuX292ZXJsYXlzLmxlbmd0aC0xXX0sY3VycmVudE92ZXJsYXlaOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFoodGhpcy5jdXJyZW50T3ZlcmxheSgpKX0sCmVuc3VyZU1pbmltdW1aOmZ1bmN0aW9uKGIpe3RoaXMuX21pbmltdW1aPU1hdGgubWF4KHRoaXMuX21pbmltdW1aLGIpfSxmb2N1c092ZXJsYXk6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmN1cnJlbnRPdmVybGF5KCk7YiYmYi5fYXBwbHlGb2N1cygpfSx0cmFja0JhY2tkcm9wOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5fb3ZlcmxheVdpdGhCYWNrZHJvcCgpO2lmKGJ8fHRoaXMuX2JhY2tkcm9wRWxlbWVudCl0aGlzLmJhY2tkcm9wRWxlbWVudC5zdHlsZS56SW5kZXg9dGhpcy5fZ2V0WihiKS0xLHRoaXMuYmFja2Ryb3BFbGVtZW50Lm9wZW5lZD0hIWIsdGhpcy5iYWNrZHJvcEVsZW1lbnQucHJlcGFyZSgpfSxnZXRCYWNrZHJvcHM6ZnVuY3Rpb24oKXtmb3IodmFyIGI9W10sZD0wO2Q8dGhpcy5fb3ZlcmxheXMubGVuZ3RoO2QrKyl0aGlzLl9vdmVybGF5c1tkXS53aXRoQmFja2Ryb3AmJmIucHVzaCh0aGlzLl9vdmVybGF5c1tkXSk7cmV0dXJuIGJ9LGJhY2tkcm9wWjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRaKHRoaXMuX292ZXJsYXlXaXRoQmFja2Ryb3AoKSktCjF9LF9vdmVybGF5V2l0aEJhY2tkcm9wOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPXRoaXMuX292ZXJsYXlzLmxlbmd0aC0xOzA8PWI7Yi0tKWlmKHRoaXMuX292ZXJsYXlzW2JdLndpdGhCYWNrZHJvcClyZXR1cm4gdGhpcy5fb3ZlcmxheXNbYl19LF9nZXRaOmZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuX21pbmltdW1aO2ImJihiPU51bWJlcihiLnN0eWxlLnpJbmRleHx8d2luZG93LmdldENvbXB1dGVkU3R5bGUoYikuekluZGV4KSxiPT09YiYmKGQ9YikpO3JldHVybiBkfSxfc2V0WjpmdW5jdGlvbihiLGQpe2Iuc3R5bGUuekluZGV4PWR9LF9hcHBseU92ZXJsYXlaOmZ1bmN0aW9uKGIsZCl7dGhpcy5fc2V0WihiLGQrMil9LF9vdmVybGF5SW5QYXRoOmZ1bmN0aW9uKGIpe2I9Ynx8W107Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspaWYoYltkXS5fbWFuYWdlcj09PXRoaXMpcmV0dXJuIGJbZF19LF9vbkNhcHR1cmVDbGljazpmdW5jdGlvbihiKXt2YXIgZD10aGlzLl9vdmVybGF5cy5sZW5ndGgtCjE7aWYoLTEhPT1kKWZvcih2YXIgZj1Qb2x5bWVyLmRvbShiKS5wYXRoLGg7KGg9dGhpcy5fb3ZlcmxheXNbZF0pJiZ0aGlzLl9vdmVybGF5SW5QYXRoKGYpIT09aDspaWYoaC5fb25DYXB0dXJlQ2xpY2soYiksaC5hbGxvd0NsaWNrVGhyb3VnaClkLS07ZWxzZSBicmVha30sX29uQ2FwdHVyZUZvY3VzOmZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuY3VycmVudE92ZXJsYXkoKTtkJiZkLl9vbkNhcHR1cmVGb2N1cyhiKX0sX29uQ2FwdHVyZUtleURvd246ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5jdXJyZW50T3ZlcmxheSgpO2QmJihQb2x5bWVyLklyb25BMTF5S2V5c0JlaGF2aW9yLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyhiLCJlc2MiKT9kLl9vbkNhcHR1cmVFc2MoYik6UG9seW1lci5Jcm9uQTExeUtleXNCZWhhdmlvci5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXMoYiwidGFiIikmJmQuX29uQ2FwdHVyZVRhYihiKSl9LF9zaG91bGRCZUJlaGluZE92ZXJsYXk6ZnVuY3Rpb24oYixkKXtyZXR1cm4hYi5hbHdheXNPblRvcCYmCmQuYWx3YXlzT25Ub3B9fTtQb2x5bWVyLklyb25PdmVybGF5TWFuYWdlcj1uZXcgUG9seW1lci5Jcm9uT3ZlcmxheU1hbmFnZXJDbGFzczsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLW92ZXJsYXktYmVoYXZpb3IvaXJvbi1zY3JvbGwtbWFuYWdlci5odG1sLmpzCihmdW5jdGlvbigpe3ZhciBiPTAsZD0wLGY9bnVsbCxoPVtdLGs9WyJ3aGVlbCIsIm1vdXNld2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiXTtQb2x5bWVyLklyb25TY3JvbGxNYW5hZ2VyPXtnZXQgY3VycmVudExvY2tpbmdFbGVtZW50KCl7cmV0dXJuIHRoaXMuX2xvY2tpbmdFbGVtZW50c1t0aGlzLl9sb2NraW5nRWxlbWVudHMubGVuZ3RoLTFdfSxlbGVtZW50SXNTY3JvbGxMb2NrZWQ6ZnVuY3Rpb24odCl7dmFyIGw9dGhpcy5jdXJyZW50TG9ja2luZ0VsZW1lbnQ7aWYodm9pZCAwPT09bClyZXR1cm4hMTtpZih0aGlzLl9oYXNDYWNoZWRMb2NrZWRFbGVtZW50KHQpKXJldHVybiEwO2lmKHRoaXMuX2hhc0NhY2hlZFVubG9ja2VkRWxlbWVudCh0KSlyZXR1cm4hMTsobD0hIWwmJmwhPT10JiYhdGhpcy5fY29tcG9zZWRUcmVlQ29udGFpbnMobCx0KSk/dGhpcy5fbG9ja2VkRWxlbWVudENhY2hlLnB1c2godCk6dGhpcy5fdW5sb2NrZWRFbGVtZW50Q2FjaGUucHVzaCh0KTsKcmV0dXJuIGx9LHB1c2hTY3JvbGxMb2NrOmZ1bmN0aW9uKHQpezA8PXRoaXMuX2xvY2tpbmdFbGVtZW50cy5pbmRleE9mKHQpfHwoMD09PXRoaXMuX2xvY2tpbmdFbGVtZW50cy5sZW5ndGgmJnRoaXMuX2xvY2tTY3JvbGxJbnRlcmFjdGlvbnMoKSx0aGlzLl9sb2NraW5nRWxlbWVudHMucHVzaCh0KSx0aGlzLl9sb2NrZWRFbGVtZW50Q2FjaGU9W10sdGhpcy5fdW5sb2NrZWRFbGVtZW50Q2FjaGU9W10pfSxyZW1vdmVTY3JvbGxMb2NrOmZ1bmN0aW9uKHQpe3Q9dGhpcy5fbG9ja2luZ0VsZW1lbnRzLmluZGV4T2YodCk7LTEhPT10JiYodGhpcy5fbG9ja2luZ0VsZW1lbnRzLnNwbGljZSh0LDEpLHRoaXMuX2xvY2tlZEVsZW1lbnRDYWNoZT1bXSx0aGlzLl91bmxvY2tlZEVsZW1lbnRDYWNoZT1bXSwwPT09dGhpcy5fbG9ja2luZ0VsZW1lbnRzLmxlbmd0aCYmdGhpcy5fdW5sb2NrU2Nyb2xsSW50ZXJhY3Rpb25zKCkpfSxfbG9ja2luZ0VsZW1lbnRzOltdLF9sb2NrZWRFbGVtZW50Q2FjaGU6bnVsbCwKX3VubG9ja2VkRWxlbWVudENhY2hlOm51bGwsX2hhc0NhY2hlZExvY2tlZEVsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuLTE8dGhpcy5fbG9ja2VkRWxlbWVudENhY2hlLmluZGV4T2YodCl9LF9oYXNDYWNoZWRVbmxvY2tlZEVsZW1lbnQ6ZnVuY3Rpb24odCl7cmV0dXJuLTE8dGhpcy5fdW5sb2NrZWRFbGVtZW50Q2FjaGUuaW5kZXhPZih0KX0sX2NvbXBvc2VkVHJlZUNvbnRhaW5zOmZ1bmN0aW9uKHQsbCl7dmFyIHAsbTtpZih0LmNvbnRhaW5zKGwpKXJldHVybiEwO3Q9UG9seW1lci5kb20odCkucXVlcnlTZWxlY3RvckFsbCgiY29udGVudCxzbG90Iik7Zm9yKHA9MDtwPHQubGVuZ3RoOysrcCl7dmFyIG49UG9seW1lci5kb20odFtwXSkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpO2ZvcihtPTA7bTxuLmxlbmd0aDsrK20paWYoblttXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZ0aGlzLl9jb21wb3NlZFRyZWVDb250YWlucyhuW21dLGwpKXJldHVybiEwfXJldHVybiExfSxfc2Nyb2xsSW50ZXJhY3Rpb25IYW5kbGVyOmZ1bmN0aW9uKHQpe3QuY2FuY2VsYWJsZSYmCnRoaXMuX3Nob3VsZFByZXZlbnRTY3JvbGxpbmcodCkmJnQucHJldmVudERlZmF1bHQoKTt0LnRhcmdldFRvdWNoZXMmJih0PXQudGFyZ2V0VG91Y2hlc1swXSxiPXQucGFnZVgsZD10LnBhZ2VZKX0sX2xvY2tTY3JvbGxJbnRlcmFjdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXI9dGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyfHx0aGlzLl9zY3JvbGxJbnRlcmFjdGlvbkhhbmRsZXIuYmluZCh0aGlzKTtmb3IodmFyIHQ9MCxsPWsubGVuZ3RoO3Q8bDt0KyspZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihrW3RdLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcix7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSl9LF91bmxvY2tTY3JvbGxJbnRlcmFjdGlvbnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxsPWsubGVuZ3RoO3Q8bDt0KyspZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihrW3RdLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcix7Y2FwdHVyZTohMCxwYXNzaXZlOiExfSl9LApfc2hvdWxkUHJldmVudFNjcm9sbGluZzpmdW5jdGlvbih0KXt2YXIgbD1Qb2x5bWVyLmRvbSh0KS5yb290VGFyZ2V0OyJ0b3VjaG1vdmUiIT09dC50eXBlJiZmIT09bCYmKGY9bCxoPXRoaXMuX2dldFNjcm9sbGFibGVOb2RlcyhQb2x5bWVyLmRvbSh0KS5wYXRoKSk7aWYoIWgubGVuZ3RoKXJldHVybiEwO2lmKCJ0b3VjaHN0YXJ0Ij09PXQudHlwZSlyZXR1cm4hMTt0PXRoaXMuX2dldFNjcm9sbEluZm8odCk7cmV0dXJuIXRoaXMuX2dldFNjcm9sbGluZ05vZGUoaCx0LmRlbHRhWCx0LmRlbHRhWSl9LF9nZXRTY3JvbGxhYmxlTm9kZXM6ZnVuY3Rpb24odCl7Zm9yKHZhciBsPVtdLHA9dC5pbmRleE9mKHRoaXMuY3VycmVudExvY2tpbmdFbGVtZW50KSxtPTA7bTw9cDttKyspaWYodFttXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXt2YXIgbj10W21dLHE9bi5zdHlsZTsic2Nyb2xsIiE9PXEub3ZlcmZsb3cmJiJhdXRvIiE9PXEub3ZlcmZsb3cmJihxPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG4pKTsKInNjcm9sbCIhPT1xLm92ZXJmbG93JiYiYXV0byIhPT1xLm92ZXJmbG93fHxsLnB1c2gobil9cmV0dXJuIGx9LF9nZXRTY3JvbGxpbmdOb2RlOmZ1bmN0aW9uKHQsbCxwKXtpZihsfHxwKWZvcih2YXIgbT1NYXRoLmFicyhwKT49TWF0aC5hYnMobCksbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcT10W25dO2lmKG0/MD5wPzA8cS5zY3JvbGxUb3A6cS5zY3JvbGxUb3A8cS5zY3JvbGxIZWlnaHQtcS5jbGllbnRIZWlnaHQ6MD5sPzA8cS5zY3JvbGxMZWZ0OnEuc2Nyb2xsTGVmdDxxLnNjcm9sbFdpZHRoLXEuY2xpZW50V2lkdGgpcmV0dXJuIHF9fSxfZ2V0U2Nyb2xsSW5mbzpmdW5jdGlvbih0KXt2YXIgbD17ZGVsdGFYOnQuZGVsdGFYLGRlbHRhWTp0LmRlbHRhWX07ImRlbHRhWCJpbiB0fHwoIndoZWVsRGVsdGFYImluIHQmJiJ3aGVlbERlbHRhWSJpbiB0PyhsLmRlbHRhWD0tdC53aGVlbERlbHRhWCxsLmRlbHRhWT0tdC53aGVlbERlbHRhWSk6IndoZWVsRGVsdGEiaW4gdD8obC5kZWx0YVg9CjAsbC5kZWx0YVk9LXQud2hlZWxEZWx0YSk6ImF4aXMiaW4gdD8obC5kZWx0YVg9MT09PXQuYXhpcz90LmRldGFpbDowLGwuZGVsdGFZPTI9PT10LmF4aXM/dC5kZXRhaWw6MCk6dC50YXJnZXRUb3VjaGVzJiYodD10LnRhcmdldFRvdWNoZXNbMF0sbC5kZWx0YVg9Yi10LnBhZ2VYLGwuZGVsdGFZPWQtdC5wYWdlWSkpO3JldHVybiBsfX19KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tb3ZlcmxheS1iZWhhdmlvci9pcm9uLWZvY3VzYWJsZXMtaGVscGVyLmh0bWwuanMKKGZ1bmN0aW9uKCl7dmFyIGI9RWxlbWVudC5wcm90b3R5cGUsZD1iLm1hdGNoZXN8fGIubWF0Y2hlc1NlbGVjdG9yfHxiLm1vek1hdGNoZXNTZWxlY3Rvcnx8Yi5tc01hdGNoZXNTZWxlY3Rvcnx8Yi5vTWF0Y2hlc1NlbGVjdG9yfHxiLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtQb2x5bWVyLklyb25Gb2N1c2FibGVzSGVscGVyPXtnZXRUYWJiYWJsZU5vZGVzOmZ1bmN0aW9uKGYpe3ZhciBoPVtdO3JldHVybiB0aGlzLl9jb2xsZWN0VGFiYmFibGVOb2RlcyhmLGgpP3RoaXMuX3NvcnRCeVRhYkluZGV4KGgpOmh9LGlzRm9jdXNhYmxlOmZ1bmN0aW9uKGYpe3JldHVybiBkLmNhbGwoZiwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIGJ1dHRvbiwgb2JqZWN0Iik/ZC5jYWxsKGYsIjpub3QoW2Rpc2FibGVkXSkiKTpkLmNhbGwoZiwiYVtocmVmXSwgYXJlYVtocmVmXSwgaWZyYW1lLCBbdGFiaW5kZXhdLCBbY29udGVudEVkaXRhYmxlXSIpfSxpc1RhYmJhYmxlOmZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLmlzRm9jdXNhYmxlKGYpJiYKZC5jYWxsKGYsJzpub3QoW3RhYmluZGV4XHgzZCItMSJdKScpJiZ0aGlzLl9pc1Zpc2libGUoZil9LF9ub3JtYWxpemVkVGFiSW5kZXg6ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuaXNGb2N1c2FibGUoZik/KGY9Zi5nZXRBdHRyaWJ1dGUoInRhYmluZGV4Iil8fDAsTnVtYmVyKGYpKTotMX0sX2NvbGxlY3RUYWJiYWJsZU5vZGVzOmZ1bmN0aW9uKGYsaCl7aWYoZi5ub2RlVHlwZSE9PU5vZGUuRUxFTUVOVF9OT0RFfHwhdGhpcy5faXNWaXNpYmxlKGYpKXJldHVybiExO3ZhciBrPXRoaXMuX25vcm1hbGl6ZWRUYWJJbmRleChmKSx0PTA8azswPD1rJiZoLnB1c2goZik7Zj0iY29udGVudCI9PT1mLmxvY2FsTmFtZXx8InNsb3QiPT09Zi5sb2NhbE5hbWU/UG9seW1lci5kb20oZikuZ2V0RGlzdHJpYnV0ZWROb2RlcygpOlBvbHltZXIuZG9tKGYucm9vdHx8ZikuY2hpbGRyZW47Zm9yKGs9MDtrPGYubGVuZ3RoO2srKyl0PXRoaXMuX2NvbGxlY3RUYWJiYWJsZU5vZGVzKGZba10saCl8fHQ7CnJldHVybiB0fSxfaXNWaXNpYmxlOmZ1bmN0aW9uKGYpe3ZhciBoPWYuc3R5bGU7cmV0dXJuImhpZGRlbiIhPT1oLnZpc2liaWxpdHkmJiJub25lIiE9PWguZGlzcGxheT8oaD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShmKSwiaGlkZGVuIiE9PWgudmlzaWJpbGl0eSYmIm5vbmUiIT09aC5kaXNwbGF5KTohMX0sX3NvcnRCeVRhYkluZGV4OmZ1bmN0aW9uKGYpe3ZhciBoPWYubGVuZ3RoO2lmKDI+aClyZXR1cm4gZjt2YXIgaz1NYXRoLmNlaWwoaC8yKTtoPXRoaXMuX3NvcnRCeVRhYkluZGV4KGYuc2xpY2UoMCxrKSk7Zj10aGlzLl9zb3J0QnlUYWJJbmRleChmLnNsaWNlKGspKTtyZXR1cm4gdGhpcy5fbWVyZ2VTb3J0QnlUYWJJbmRleChoLGYpfSxfbWVyZ2VTb3J0QnlUYWJJbmRleDpmdW5jdGlvbihmLGgpe2Zvcih2YXIgaz1bXTswPGYubGVuZ3RoJiYwPGgubGVuZ3RoOyl0aGlzLl9oYXNMb3dlclRhYk9yZGVyKGZbMF0saFswXSk/ay5wdXNoKGguc2hpZnQoKSk6ay5wdXNoKGYuc2hpZnQoKSk7CnJldHVybiBrLmNvbmNhdChmLGgpfSxfaGFzTG93ZXJUYWJPcmRlcjpmdW5jdGlvbihmLGgpe2Y9TWF0aC5tYXgoZi50YWJJbmRleCwwKTtoPU1hdGgubWF4KGgudGFiSW5kZXgsMCk7cmV0dXJuIDA9PT1mfHwwPT09aD9oPmY6Zj5ofX19KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tb3ZlcmxheS1iZWhhdmlvci9pcm9uLW92ZXJsYXktYmVoYXZpb3IuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyLklyb25PdmVybGF5QmVoYXZpb3JJbXBsPXtwcm9wZXJ0aWVzOntvcGVuZWQ6e29ic2VydmVyOiJfb3BlbmVkQ2hhbmdlZCIsdHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0sY2FuY2VsZWQ6e29ic2VydmVyOiJfY2FuY2VsZWRDaGFuZ2VkIixyZWFkT25seTohMCx0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LHdpdGhCYWNrZHJvcDp7b2JzZXJ2ZXI6Il93aXRoQmFja2Ryb3BDaGFuZ2VkIix0eXBlOkJvb2xlYW59LG5vQXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LG5vQ2FuY2VsT25Fc2NLZXk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9DYW5jZWxPbk91dHNpZGVDbGljazp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxjbG9zaW5nUmVhc29uOnt0eXBlOk9iamVjdH0scmVzdG9yZUZvY3VzT25DbG9zZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGxvd0NsaWNrVGhyb3VnaDp7dHlwZTpCb29sZWFufSxhbHdheXNPblRvcDp7dHlwZTpCb29sZWFufSwKc2Nyb2xsQWN0aW9uOnt0eXBlOlN0cmluZ30sX21hbmFnZXI6e3R5cGU6T2JqZWN0LHZhbHVlOlBvbHltZXIuSXJvbk92ZXJsYXlNYW5hZ2VyfSxfZm9jdXNlZENoaWxkOnt0eXBlOk9iamVjdH19LGxpc3RlbmVyczp7Imlyb24tcmVzaXplIjoiX29uSXJvblJlc2l6ZSJ9LG9ic2VydmVyczpbIl9fdXBkYXRlU2Nyb2xsT2JzZXJ2ZXJzKGlzQXR0YWNoZWQsIG9wZW5lZCwgc2Nyb2xsQWN0aW9uKSJdLGdldCBiYWNrZHJvcEVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fbWFuYWdlci5iYWNrZHJvcEVsZW1lbnR9LGdldCBfZm9jdXNOb2RlKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWRDaGlsZHx8UG9seW1lci5kb20odGhpcykucXVlcnlTZWxlY3RvcigiW2F1dG9mb2N1c10iKXx8dGhpc30sZ2V0IF9mb2N1c2FibGVOb2Rlcygpe3JldHVybiBQb2x5bWVyLklyb25Gb2N1c2FibGVzSGVscGVyLmdldFRhYmJhYmxlTm9kZXModGhpcyl9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PQp0aGlzLl9faXNBbmltYXRpbmc9ITE7dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZT10aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU9bnVsbDt0aGlzLl9fcmFmcz17fTt0aGlzLl9fc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxMZWZ0PXRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGw7dGhpcy5fX29uQ2FwdHVyZVNjcm9sbD10aGlzLl9fb25DYXB0dXJlU2Nyb2xsLmJpbmQodGhpcyk7dGhpcy5fX3Jvb3ROb2Rlcz1udWxsO3RoaXMuX2Vuc3VyZVNldHVwKCl9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuX29wZW5lZENoYW5nZWQodGhpcy5vcGVuZWQpO3RoaXMuX29ic2VydmVyPVBvbHltZXIuZG9tKHRoaXMpLm9ic2VydmVOb2Rlcyh0aGlzLl9vbk5vZGVzQ2hhbmdlKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLmRvbSh0aGlzKS51bm9ic2VydmVOb2Rlcyh0aGlzLl9vYnNlcnZlcik7dGhpcy5fb2JzZXJ2ZXI9bnVsbDtmb3IodmFyIGIgaW4gdGhpcy5fX3JhZnMpbnVsbCE9PQp0aGlzLl9fcmFmc1tiXSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fX3JhZnNbYl0pO3RoaXMuX19yYWZzPXt9O3RoaXMuX21hbmFnZXIucmVtb3ZlT3ZlcmxheSh0aGlzKTt0aGlzLl9faXNBbmltYXRpbmcmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKToodGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpKSl9LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMuX3NldENhbmNlbGVkKCExKTt0aGlzLm9wZW5lZD0hdGhpcy5vcGVuZWR9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLl9zZXRDYW5jZWxlZCghMSk7dGhpcy5vcGVuZWQ9ITB9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0Q2FuY2VsZWQoITEpO3RoaXMub3BlbmVkPSExfSxjYW5jZWw6ZnVuY3Rpb24oYil7dGhpcy5maXJlKCJpcm9uLW92ZXJsYXktY2FuY2VsZWQiLGIse2NhbmNlbGFibGU6ITB9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fc2V0Q2FuY2VsZWQoITApLHRoaXMub3BlbmVkPQohMSl9LGludmFsaWRhdGVUYWJiYWJsZXM6ZnVuY3Rpb24oKXt0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPXRoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZT1udWxsfSxfZW5zdXJlU2V0dXA6ZnVuY3Rpb24oKXt0aGlzLl9vdmVybGF5U2V0dXB8fCh0aGlzLl9vdmVybGF5U2V0dXA9ITAsdGhpcy5zdHlsZS5vdXRsaW5lPSJub25lIix0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUiKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oYil7Yj90aGlzLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKTp0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCJ0cnVlIik7dGhpcy5pc0F0dGFjaGVkJiYodGhpcy5fX2lzQW5pbWF0aW5nPSEwLHRoaXMuX19kZXJhZigiX19vcGVuZWRDaGFuZ2VkIix0aGlzLl9fb3BlbmVkQ2hhbmdlZCkpfSxfY2FuY2VsZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5jbG9zaW5nUmVhc29uPXRoaXMuY2xvc2luZ1JlYXNvbnx8e307dGhpcy5jbG9zaW5nUmVhc29uLmNhbmNlbGVkPQp0aGlzLmNhbmNlbGVkfSxfd2l0aEJhY2tkcm9wQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMud2l0aEJhY2tkcm9wJiYhdGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/KHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIiksdGhpcy5fX3Nob3VsZFJlbW92ZVRhYkluZGV4PSEwKTp0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXgmJih0aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSx0aGlzLl9fc2hvdWxkUmVtb3ZlVGFiSW5kZXg9ITEpO3RoaXMub3BlbmVkJiZ0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX21hbmFnZXIudHJhY2tCYWNrZHJvcCgpfSxfcHJlcGFyZVJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuX19yZXN0b3JlRm9jdXNOb2RlPXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQ7dGhpcy5fcHJlcGFyZVBvc2l0aW9uaW5nKCk7dGhpcy5yZWZpdCgpO3RoaXMuX2ZpbmlzaFBvc2l0aW9uaW5nKCk7dGhpcy5ub0F1dG9Gb2N1cyYmZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PQp0aGlzLl9mb2N1c05vZGUmJih0aGlzLl9mb2N1c05vZGUuYmx1cigpLHRoaXMuX19yZXN0b3JlRm9jdXNOb2RlLmZvY3VzKCkpfSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCl9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKX0sX2ZpbmlzaFJlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMubm90aWZ5UmVzaXplKCk7dGhpcy5fX2lzQW5pbWF0aW5nPSExO3RoaXMuZmlyZSgiaXJvbi1vdmVybGF5LW9wZW5lZCIpfSxfZmluaXNoUmVuZGVyQ2xvc2VkOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLnN0eWxlLnpJbmRleD0iIjt0aGlzLm5vdGlmeVJlc2l6ZSgpO3RoaXMuX19pc0FuaW1hdGluZz0hMTt0aGlzLmZpcmUoImlyb24tb3ZlcmxheS1jbG9zZWQiLHRoaXMuY2xvc2luZ1JlYXNvbil9LF9wcmVwYXJlUG9zaXRpb25pbmc6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnRyYW5zaXRpb249CnRoaXMuc3R5bGUud2Via2l0VHJhbnNpdGlvbj0ibm9uZSI7dGhpcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5zdHlsZS53ZWJraXRUcmFuc2Zvcm09Im5vbmUiO3RoaXMuc3R5bGUuZGlzcGxheT0iIn0sX2ZpbmlzaFBvc2l0aW9uaW5nOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcDt0aGlzLnN0eWxlLnRyYW5zaXRpb249dGhpcy5zdHlsZS53ZWJraXRUcmFuc2l0aW9uPSIiO3RoaXMuc3R5bGUudHJhbnNmb3JtPXRoaXMuc3R5bGUud2Via2l0VHJhbnNmb3JtPSIiO3RoaXMuc3R5bGUuZGlzcGxheT0iIjt0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcH0sX2FwcGx5Rm9jdXM6ZnVuY3Rpb24oKXtpZih0aGlzLm9wZW5lZCl0aGlzLm5vQXV0b0ZvY3VzfHx0aGlzLl9mb2N1c05vZGUuZm9jdXMoKTtlbHNle3RoaXMuX2ZvY3VzTm9kZS5ibHVyKCk7dGhpcy5fZm9jdXNlZENoaWxkPW51bGw7aWYodGhpcy5yZXN0b3JlRm9jdXNPbkNsb3NlJiYKdGhpcy5fX3Jlc3RvcmVGb2N1c05vZGUpe3ZhciBiPXRoaXMuX21hbmFnZXIuZGVlcEFjdGl2ZUVsZW1lbnQ7KGI9PT1kb2N1bWVudC5ib2R5fHxQb2x5bWVyLmRvbSh0aGlzKS5kZWVwQ29udGFpbnMoYikpJiZ0aGlzLl9fcmVzdG9yZUZvY3VzTm9kZS5mb2N1cygpfXRoaXMuX19yZXN0b3JlRm9jdXNOb2RlPW51bGw7KGI9dGhpcy5fbWFuYWdlci5jdXJyZW50T3ZlcmxheSgpKSYmdGhpcyE9PWImJmIuX2FwcGx5Rm9jdXMoKX19LF9vbkNhcHR1cmVDbGljazpmdW5jdGlvbihiKXt0aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2t8fHRoaXMuY2FuY2VsKGIpfSxfb25DYXB0dXJlRm9jdXM6ZnVuY3Rpb24oYil7aWYodGhpcy53aXRoQmFja2Ryb3Ape3ZhciBkPVBvbHltZXIuZG9tKGIpLnBhdGg7LTE9PT1kLmluZGV4T2YodGhpcyk/KGIuc3RvcFByb3BhZ2F0aW9uKCksdGhpcy5fYXBwbHlGb2N1cygpKTp0aGlzLl9mb2N1c2VkQ2hpbGQ9ZFswXX19LF9vbkNhcHR1cmVFc2M6ZnVuY3Rpb24oYil7dGhpcy5ub0NhbmNlbE9uRXNjS2V5fHwKdGhpcy5jYW5jZWwoYil9LF9vbkNhcHR1cmVUYWI6ZnVuY3Rpb24oYil7aWYodGhpcy53aXRoQmFja2Ryb3Ape3RoaXMuX19lbnN1cmVGaXJzdExhc3RGb2N1c2FibGVzKCk7dmFyIGQ9Yi5zaGlmdEtleSxmPWQ/dGhpcy5fX2ZpcnN0Rm9jdXNhYmxlTm9kZTp0aGlzLl9fbGFzdEZvY3VzYWJsZU5vZGU7ZD1kP3RoaXMuX19sYXN0Rm9jdXNhYmxlTm9kZTp0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlO2lmKGY9PT1kKWY9ITA7ZWxzZXt2YXIgaD10aGlzLl9tYW5hZ2VyLmRlZXBBY3RpdmVFbGVtZW50O2Y9aD09PWZ8fGg9PT10aGlzfWYmJihiLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZm9jdXNlZENoaWxkPWQsdGhpcy5fYXBwbHlGb2N1cygpKX19LF9vbklyb25SZXNpemU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCYmIXRoaXMuX19pc0FuaW1hdGluZyYmdGhpcy5fX2RlcmFmKCJyZWZpdCIsdGhpcy5yZWZpdCl9LF9vbk5vZGVzQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJiF0aGlzLl9faXNBbmltYXRpbmcmJgoodGhpcy5pbnZhbGlkYXRlVGFiYmFibGVzKCksdGhpcy5ub3RpZnlSZXNpemUoKSl9LF9fZW5zdXJlRmlyc3RMYXN0Rm9jdXNhYmxlczpmdW5jdGlvbigpe2lmKCF0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlfHwhdGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlKXt2YXIgYj10aGlzLl9mb2N1c2FibGVOb2Rlczt0aGlzLl9fZmlyc3RGb2N1c2FibGVOb2RlPWJbMF07dGhpcy5fX2xhc3RGb2N1c2FibGVOb2RlPWJbYi5sZW5ndGgtMV19fSxfX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD8odGhpcy5fcHJlcGFyZVJlbmRlck9wZW5lZCgpLHRoaXMuX21hbmFnZXIuYWRkT3ZlcmxheSh0aGlzKSx0aGlzLl9hcHBseUZvY3VzKCksdGhpcy5fcmVuZGVyT3BlbmVkKCkpOih0aGlzLl9tYW5hZ2VyLnJlbW92ZU92ZXJsYXkodGhpcyksdGhpcy5fYXBwbHlGb2N1cygpLHRoaXMuX3JlbmRlckNsb3NlZCgpKX0sX19kZXJhZjpmdW5jdGlvbihiLGQpe3ZhciBmPXRoaXMuX19yYWZzOwpudWxsIT09ZltiXSYmY2FuY2VsQW5pbWF0aW9uRnJhbWUoZltiXSk7ZltiXT1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKXtmW2JdPW51bGw7ZC5jYWxsKHRoaXMpfS5iaW5kKHRoaXMpKX0sX191cGRhdGVTY3JvbGxPYnNlcnZlcnM6ZnVuY3Rpb24oYixkLGYpe2ImJmQmJnRoaXMuX19pc1ZhbGlkU2Nyb2xsQWN0aW9uKGYpPygibG9jayI9PT1mJiYodGhpcy5fX3NhdmVTY3JvbGxQb3NpdGlvbigpLFBvbHltZXIuSXJvblNjcm9sbE1hbmFnZXIucHVzaFNjcm9sbExvY2sodGhpcykpLHRoaXMuX19hZGRTY3JvbGxMaXN0ZW5lcnMoKSk6KFBvbHltZXIuSXJvblNjcm9sbE1hbmFnZXIucmVtb3ZlU2Nyb2xsTG9jayh0aGlzKSx0aGlzLl9fcmVtb3ZlU2Nyb2xsTGlzdGVuZXJzKCkpfSxfX2FkZFNjcm9sbExpc3RlbmVyczpmdW5jdGlvbigpe2lmKCF0aGlzLl9fcm9vdE5vZGVzKXt0aGlzLl9fcm9vdE5vZGVzPVtdO2lmKFBvbHltZXIuU2V0dGluZ3MudXNlU2hhZG93KWZvcih2YXIgYj0KdGhpcztiOyliLm5vZGVUeXBlPT09Tm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFJiZiLmhvc3QmJnRoaXMuX19yb290Tm9kZXMucHVzaChiKSxiPWIuaG9zdHx8Yi5hc3NpZ25lZFNsb3R8fGIucGFyZW50Tm9kZTt0aGlzLl9fcm9vdE5vZGVzLnB1c2goZG9jdW1lbnQpfXRoaXMuX19yb290Tm9kZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9LHRoaXMpfSxfX3JlbW92ZVNjcm9sbExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX19yb290Tm9kZXMmJnRoaXMuX19yb290Tm9kZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fX29uQ2FwdHVyZVNjcm9sbCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9LHRoaXMpO3RoaXMuaXNBdHRhY2hlZHx8KHRoaXMuX19yb290Tm9kZXM9bnVsbCl9LF9faXNWYWxpZFNjcm9sbEFjdGlvbjpmdW5jdGlvbihiKXtyZXR1cm4ibG9jayI9PT0KYnx8InJlZml0Ij09PWJ8fCJjYW5jZWwiPT09Yn0sX19vbkNhcHR1cmVTY3JvbGw6ZnVuY3Rpb24oYil7aWYoISh0aGlzLl9faXNBbmltYXRpbmd8fDA8PVBvbHltZXIuZG9tKGIpLnBhdGguaW5kZXhPZih0aGlzKSkpc3dpdGNoKHRoaXMuc2Nyb2xsQWN0aW9uKXtjYXNlICJsb2NrIjp0aGlzLl9fcmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7YnJlYWs7Y2FzZSAicmVmaXQiOnRoaXMuX19kZXJhZigicmVmaXQiLHRoaXMucmVmaXQpO2JyZWFrO2Nhc2UgImNhbmNlbCI6dGhpcy5jYW5jZWwoYil9fSxfX3NhdmVTY3JvbGxQb3NpdGlvbjpmdW5jdGlvbigpe2RvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnQ/KHRoaXMuX19zY3JvbGxUb3A9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3AsdGhpcy5fX3Njcm9sbExlZnQ9ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxMZWZ0KToodGhpcy5fX3Njcm9sbFRvcD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLApkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCksdGhpcy5fX3Njcm9sbExlZnQ9TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0KSl9LF9fcmVzdG9yZVNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7ZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudD8oZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3A9dGhpcy5fX3Njcm9sbFRvcCxkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbExlZnQ9dGhpcy5fX3Njcm9sbExlZnQpOihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wPWRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPXRoaXMuX19zY3JvbGxUb3AsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ9ZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0PXRoaXMuX19zY3JvbGxMZWZ0KX19O1BvbHltZXIuSXJvbk92ZXJsYXlCZWhhdmlvcj1bUG9seW1lci5Jcm9uRml0QmVoYXZpb3IsUG9seW1lci5Jcm9uUmVzaXphYmxlQmVoYXZpb3IsClBvbHltZXIuSXJvbk92ZXJsYXlCZWhhdmlvckltcGxdfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9uZW9uLWFuaW1hdGlvbi9uZW9uLWFuaW1hdGFibGUtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLk5lb25BbmltYXRhYmxlQmVoYXZpb3I9e3Byb3BlcnRpZXM6e2FuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGVudHJ5QW5pbWF0aW9uOntvYnNlcnZlcjoiX2VudHJ5QW5pbWF0aW9uQ2hhbmdlZCIsdHlwZTpTdHJpbmd9LGV4aXRBbmltYXRpb246e29ic2VydmVyOiJfZXhpdEFuaW1hdGlvbkNoYW5nZWQiLHR5cGU6U3RyaW5nfX0sX2VudHJ5QW5pbWF0aW9uQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYW5pbWF0aW9uQ29uZmlnPXRoaXMuYW5pbWF0aW9uQ29uZmlnfHx7fTt0aGlzLmFuaW1hdGlvbkNvbmZpZy5lbnRyeT1be25hbWU6dGhpcy5lbnRyeUFuaW1hdGlvbixub2RlOnRoaXN9XX0sX2V4aXRBbmltYXRpb25DaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5hbmltYXRpb25Db25maWc9dGhpcy5hbmltYXRpb25Db25maWd8fHt9O3RoaXMuYW5pbWF0aW9uQ29uZmlnLmV4aXQ9W3tuYW1lOnRoaXMuZXhpdEFuaW1hdGlvbixub2RlOnRoaXN9XX0sX2NvcHlQcm9wZXJ0aWVzOmZ1bmN0aW9uKGIsCmQpe2Zvcih2YXIgZiBpbiBkKWJbZl09ZFtmXX0sX2Nsb25lQ29uZmlnOmZ1bmN0aW9uKGIpe3ZhciBkPXtpc0Nsb25lOiEwfTt0aGlzLl9jb3B5UHJvcGVydGllcyhkLGIpO3JldHVybiBkfSxfZ2V0QW5pbWF0aW9uQ29uZmlnUmVjdXJzaXZlOmZ1bmN0aW9uKGIsZCxmKXtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZylpZih0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSYmImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLmFuaW1hdGlvbkNvbmZpZy52YWx1ZSl0aGlzLl93YXJuKHRoaXMuX2xvZ2YoInBsYXlBbmltYXRpb24iLCJQbGVhc2UgcHV0ICdhbmltYXRpb25Db25maWcnIGluc2lkZSBvZiB5b3VyIGNvbXBvbmVudHMgJ3Byb3BlcnRpZXMnIG9iamVjdCBpbnN0ZWFkIG9mIG91dHNpZGUgb2YgaXQuIikpO2Vsc2V7dmFyIGg9Yj90aGlzLmFuaW1hdGlvbkNvbmZpZ1tiXTp0aGlzLmFuaW1hdGlvbkNvbmZpZztBcnJheS5pc0FycmF5KGgpfHwoaD1baF0pO2lmKGgpZm9yKHZhciBrLHQ9MDtrPQpoW3RdO3QrKylpZihrLmFuaW1hdGFibGUpay5hbmltYXRhYmxlLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoay50eXBlfHxiLGQsZik7ZWxzZSBpZihrLmlkKXt2YXIgbD1kW2suaWRdO2w/KGwuaXNDbG9uZXx8KGRbay5pZF09dGhpcy5fY2xvbmVDb25maWcobCksbD1kW2suaWRdKSx0aGlzLl9jb3B5UHJvcGVydGllcyhsLGspKTpkW2suaWRdPWt9ZWxzZSBmLnB1c2goayl9fSxnZXRBbmltYXRpb25Db25maWc6ZnVuY3Rpb24oYil7dmFyIGQ9e30sZj1bXTt0aGlzLl9nZXRBbmltYXRpb25Db25maWdSZWN1cnNpdmUoYixkLGYpO2Zvcih2YXIgaCBpbiBkKWYucHVzaChkW2hdKTtyZXR1cm4gZn19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL25lb24tYW5pbWF0aW9uL25lb24tYW5pbWF0aW9uLXJ1bm5lci1iZWhhdmlvci5odG1sLmpzClBvbHltZXIuTmVvbkFuaW1hdGlvblJ1bm5lckJlaGF2aW9ySW1wbD17X2NvbmZpZ3VyZUFuaW1hdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGQ9W10sZj1bXTtpZigwPGIubGVuZ3RoKWZvcih2YXIgaCxrPTA7aD1iW2tdO2srKyl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChoLm5hbWUpO2lmKHQuaXNOZW9uQW5pbWF0aW9uKXt2YXIgbD1udWxsO3QuY29uZmlndXJlfHwodC5jb25maWd1cmU9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0pO2w9dC5jb25maWd1cmUoaCk7Zi5wdXNoKHtyZXN1bHQ6bCxjb25maWc6aH0pfWVsc2UgY29uc29sZS53YXJuKHRoaXMuaXMrIjoiLGgubmFtZSwibm90IGZvdW5kISIpfWZvcihiPTA7YjxmLmxlbmd0aDtiKyspe2w9ZltiXS5yZXN1bHQ7aD1mW2JdLmNvbmZpZzt0cnl7ImZ1bmN0aW9uIiE9dHlwZW9mIGwuY2FuY2VsJiYobD1kb2N1bWVudC50aW1lbGluZS5wbGF5KGwpKX1jYXRjaChwKXtsPW51bGwsY29uc29sZS53YXJuKCJDb3VsZG50IHBsYXkiLAoiKCIsaC5uYW1lLCIpLiIscCl9bCYmZC5wdXNoKHtuZW9uQW5pbWF0aW9uOnQsY29uZmlnOmgsYW5pbWF0aW9uOmx9KX1yZXR1cm4gZH0sX3Nob3VsZENvbXBsZXRlOmZ1bmN0aW9uKGIpe2Zvcih2YXIgZD0hMCxmPTA7ZjxiLmxlbmd0aDtmKyspaWYoImZpbmlzaGVkIiE9YltmXS5hbmltYXRpb24ucGxheVN0YXRlKXtkPSExO2JyZWFrfXJldHVybiBkfSxfY29tcGxldGU6ZnVuY3Rpb24oYil7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspYltkXS5uZW9uQW5pbWF0aW9uLmNvbXBsZXRlKGJbZF0uY29uZmlnKTtmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKWJbZF0uYW5pbWF0aW9uLmNhbmNlbCgpfSxwbGF5QW5pbWF0aW9uOmZ1bmN0aW9uKGIsZCl7dmFyIGY9dGhpcy5nZXRBbmltYXRpb25Db25maWcoYik7aWYoZil7dGhpcy5fYWN0aXZlPXRoaXMuX2FjdGl2ZXx8e307dGhpcy5fYWN0aXZlW2JdJiYodGhpcy5fY29tcGxldGUodGhpcy5fYWN0aXZlW2JdKSxkZWxldGUgdGhpcy5fYWN0aXZlW2JdKTsKdmFyIGg9dGhpcy5fY29uZmlndXJlQW5pbWF0aW9ucyhmKTtpZigwPT1oLmxlbmd0aCl0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZCx7YnViYmxlczohMX0pO2Vsc2UgZm9yKHRoaXMuX2FjdGl2ZVtiXT1oLGY9MDtmPGgubGVuZ3RoO2YrKyloW2ZdLmFuaW1hdGlvbi5vbmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuX3Nob3VsZENvbXBsZXRlKGgpJiYodGhpcy5fY29tcGxldGUoaCksZGVsZXRlIHRoaXMuX2FjdGl2ZVtiXSx0aGlzLmZpcmUoIm5lb24tYW5pbWF0aW9uLWZpbmlzaCIsZCx7YnViYmxlczohMX0pKX0uYmluZCh0aGlzKX19LGNhbmNlbEFuaW1hdGlvbjpmdW5jdGlvbigpe2Zvcih2YXIgYiBpbiB0aGlzLl9hY3RpdmUpe3ZhciBkPXRoaXMuX2FjdGl2ZVtiXSxmO2ZvcihmIGluIGQpZFtmXS5hbmltYXRpb24uY2FuY2VsKCl9dGhpcy5fYWN0aXZlPXt9fX07ClBvbHltZXIuTmVvbkFuaW1hdGlvblJ1bm5lckJlaGF2aW9yPVtQb2x5bWVyLk5lb25BbmltYXRhYmxlQmVoYXZpb3IsUG9seW1lci5OZW9uQW5pbWF0aW9uUnVubmVyQmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWRyb3Bkb3duL2lyb24tZHJvcGRvd24tc2Nyb2xsLW1hbmFnZXIuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyLklyb25Ecm9wZG93blNjcm9sbE1hbmFnZXI9UG9seW1lci5Jcm9uU2Nyb2xsTWFuYWdlcn0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vaXJvbi1kcm9wZG93bi9pcm9uLWRyb3Bkb3duLmh0bWwuanMKKGZ1bmN0aW9uKCl7UG9seW1lcih7aXM6Imlyb24tZHJvcGRvd24iLGJlaGF2aW9yczpbUG9seW1lci5Jcm9uQ29udHJvbFN0YXRlLFBvbHltZXIuSXJvbkExMXlLZXlzQmVoYXZpb3IsUG9seW1lci5Jcm9uT3ZlcmxheUJlaGF2aW9yLFBvbHltZXIuTmVvbkFuaW1hdGlvblJ1bm5lckJlaGF2aW9yXSxwcm9wZXJ0aWVzOntob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sb3BlbkFuaW1hdGlvbkNvbmZpZzp7dHlwZTpPYmplY3R9LGNsb3NlQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdH0sZm9jdXNUYXJnZXQ6e3R5cGU6T2JqZWN0fSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sYWxsb3dPdXRzaWRlU2Nyb2xsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9hbGxvd091dHNpZGVTY3JvbGxDaGFuZ2VkIn19LApsaXN0ZW5lcnM6eyJuZW9uLWFuaW1hdGlvbi1maW5pc2giOiJfb25OZW9uQW5pbWF0aW9uRmluaXNoIn0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZU92ZXJsYXlQb3NpdGlvbihwb3NpdGlvblRhcmdldCwgdmVydGljYWxBbGlnbiwgaG9yaXpvbnRhbEFsaWduLCB2ZXJ0aWNhbE9mZnNldCwgaG9yaXpvbnRhbE9mZnNldCkiXSxnZXQgY29udGFpbmVkRWxlbWVudCgpe2Zvcih2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGQ9MCxmPWIubGVuZ3RoO2Q8ZjtkKyspaWYoYltkXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiBiW2RdfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsQWN0aW9ufHwodGhpcy5zY3JvbGxBY3Rpb249dGhpcy5hbGxvd091dHNpZGVTY3JvbGw/InJlZml0IjoibG9jayIpO3RoaXMuX3JlYWRpZWQ9ITB9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5zaXppbmdUYXJnZXQmJnRoaXMuc2l6aW5nVGFyZ2V0IT09CnRoaXN8fCh0aGlzLnNpemluZ1RhcmdldD10aGlzLmNvbnRhaW5lZEVsZW1lbnR8fHRoaXMpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuY2FuY2VsQW5pbWF0aW9uKCl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQmJnRoaXMuZGlzYWJsZWQ/dGhpcy5jYW5jZWwoKToodGhpcy5jYW5jZWxBbmltYXRpb24oKSx0aGlzLl91cGRhdGVBbmltYXRpb25Db25maWcoKSxQb2x5bWVyLklyb25PdmVybGF5QmVoYXZpb3JJbXBsLl9vcGVuZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LF9yZW5kZXJPcGVuZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLm9wZW4/KHRoaXMuJC5jb250ZW50V3JhcHBlci5jbGFzc0xpc3QuYWRkKCJhbmltYXRpbmciKSx0aGlzLnBsYXlBbmltYXRpb24oIm9wZW4iKSk6UG9seW1lci5Jcm9uT3ZlcmxheUJlaGF2aW9ySW1wbC5fcmVuZGVyT3BlbmVkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sCl9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXshdGhpcy5ub0FuaW1hdGlvbnMmJnRoaXMuYW5pbWF0aW9uQ29uZmlnLmNsb3NlPyh0aGlzLiQuY29udGVudFdyYXBwZXIuY2xhc3NMaXN0LmFkZCgiYW5pbWF0aW5nIiksdGhpcy5wbGF5QW5pbWF0aW9uKCJjbG9zZSIpKTpQb2x5bWVyLklyb25PdmVybGF5QmVoYXZpb3JJbXBsLl9yZW5kZXJDbG9zZWQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy4kLmNvbnRlbnRXcmFwcGVyLmNsYXNzTGlzdC5yZW1vdmUoImFuaW1hdGluZyIpO3RoaXMub3BlbmVkP3RoaXMuX2ZpbmlzaFJlbmRlck9wZW5lZCgpOnRoaXMuX2ZpbmlzaFJlbmRlckNsb3NlZCgpfSxfdXBkYXRlQW5pbWF0aW9uQ29uZmlnOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPXRoaXMuY29udGFpbmVkRWxlbWVudCxkPVtdLmNvbmNhdCh0aGlzLm9wZW5BbmltYXRpb25Db25maWd8fFtdKS5jb25jYXQodGhpcy5jbG9zZUFuaW1hdGlvbkNvbmZpZ3x8CltdKSxmPTA7ZjxkLmxlbmd0aDtmKyspZFtmXS5ub2RlPWI7dGhpcy5hbmltYXRpb25Db25maWc9e29wZW46dGhpcy5vcGVuQW5pbWF0aW9uQ29uZmlnLGNsb3NlOnRoaXMuY2xvc2VBbmltYXRpb25Db25maWd9fSxfdXBkYXRlT3ZlcmxheVBvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkJiZ0aGlzLm5vdGlmeVJlc2l6ZSgpfSxfYWxsb3dPdXRzaWRlU2Nyb2xsQ2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLl9yZWFkaWVkJiYoYj90aGlzLnNjcm9sbEFjdGlvbiYmImxvY2siIT09dGhpcy5zY3JvbGxBY3Rpb258fCh0aGlzLnNjcm9sbEFjdGlvbj0icmVmaXQiKTp0aGlzLnNjcm9sbEFjdGlvbj0ibG9jayIpfSxfYXBwbHlGb2N1czpmdW5jdGlvbigpe3ZhciBiPXRoaXMuZm9jdXNUYXJnZXR8fHRoaXMuY29udGFpbmVkRWxlbWVudDtiJiZ0aGlzLm9wZW5lZCYmIXRoaXMubm9BdXRvRm9jdXM/Yi5mb2N1cygpOlBvbHltZXIuSXJvbk92ZXJsYXlCZWhhdmlvckltcGwuX2FwcGx5Rm9jdXMuYXBwbHkodGhpcywKYXJndW1lbnRzKX19KX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vbmVvbi1hbmltYXRpb24vbmVvbi1hbmltYXRpb24tYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLk5lb25BbmltYXRpb25CZWhhdmlvcj17cHJvcGVydGllczp7YW5pbWF0aW9uVGltaW5nOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybntkdXJhdGlvbjo1MDAsZWFzaW5nOiJjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpIixmaWxsOiJib3RoIn19fX0saXNOZW9uQW5pbWF0aW9uOiEwLGNyZWF0ZWQ6ZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmFuaW1hdGV8fGNvbnNvbGUud2FybigiTm8gd2ViIGFuaW1hdGlvbnMgZGV0ZWN0ZWQuIFRoaXMgZWxlbWVudCB3aWxsIG5vdCBmdW5jdGlvbiB3aXRob3V0IGEgd2ViIGFuaW1hdGlvbnMgcG9seWZpbGwuIil9LHRpbWluZ0Zyb21Db25maWc6ZnVuY3Rpb24oYil7aWYoYi50aW1pbmcpZm9yKHZhciBkIGluIGIudGltaW5nKXRoaXMuYW5pbWF0aW9uVGltaW5nW2RdPWIudGltaW5nW2RdO3JldHVybiB0aGlzLmFuaW1hdGlvblRpbWluZ30sc2V0UHJlZml4ZWRQcm9wZXJ0eTpmdW5jdGlvbihiLGQsZil7Zm9yKHZhciBoPQp7dHJhbnNmb3JtOlsid2Via2l0VHJhbnNmb3JtIl0sdHJhbnNmb3JtT3JpZ2luOlsibW96VHJhbnNmb3JtT3JpZ2luIiwid2Via2l0VHJhbnNmb3JtT3JpZ2luIl19W2RdLGssdD0wO2s9aFt0XTt0KyspYi5zdHlsZVtrXT1mO2Iuc3R5bGVbZF09Zn0sY29tcGxldGU6ZnVuY3Rpb24oKXt9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9uZW9uLWFuaW1hdGlvbi9hbmltYXRpb25zL2ZhZGUtaW4tYW5pbWF0aW9uLmh0bWwuanMKUG9seW1lcih7aXM6ImZhZGUtaW4tYW5pbWF0aW9uIixiZWhhdmlvcnM6W1BvbHltZXIuTmVvbkFuaW1hdGlvbkJlaGF2aW9yXSxjb25maWd1cmU6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoYi5ub2RlLFt7b3BhY2l0eToiMCJ9LHtvcGFjaXR5OiIxIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyhiKSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vbmVvbi1hbmltYXRpb24vYW5pbWF0aW9ucy9mYWRlLW91dC1hbmltYXRpb24uaHRtbC5qcwpQb2x5bWVyKHtpczoiZmFkZS1vdXQtYW5pbWF0aW9uIixiZWhhdmlvcnM6W1BvbHltZXIuTmVvbkFuaW1hdGlvbkJlaGF2aW9yXSxjb25maWd1cmU6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoYi5ub2RlLFt7b3BhY2l0eToiMSJ9LHtvcGFjaXR5OiIwIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyhiKSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItbWVudS1idXR0b24vcGFwZXItbWVudS1idXR0b24tYW5pbWF0aW9ucy5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1tZW51LWdyb3ctaGVpZ2h0LWFuaW1hdGlvbiIsYmVoYXZpb3JzOltQb2x5bWVyLk5lb25BbmltYXRpb25CZWhhdmlvcl0sY29uZmlndXJlOmZ1bmN0aW9uKGIpe3ZhciBkPWIubm9kZSxmPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O3JldHVybiB0aGlzLl9lZmZlY3Q9bmV3IEtleWZyYW1lRWZmZWN0KGQsW3toZWlnaHQ6Zi8yKyJweCJ9LHtoZWlnaHQ6ZisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGIpKX19KTtQb2x5bWVyKHtpczoicGFwZXItbWVudS1ncm93LXdpZHRoLWFuaW1hdGlvbiIsYmVoYXZpb3JzOltQb2x5bWVyLk5lb25BbmltYXRpb25CZWhhdmlvcl0sY29uZmlndXJlOmZ1bmN0aW9uKGIpe3ZhciBkPWIubm9kZSxmPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZCxbe3dpZHRoOmYvMisicHgifSx7d2lkdGg6ZisicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGIpKX19KTsKUG9seW1lcih7aXM6InBhcGVyLW1lbnUtc2hyaW5rLXdpZHRoLWFuaW1hdGlvbiIsYmVoYXZpb3JzOltQb2x5bWVyLk5lb25BbmltYXRpb25CZWhhdmlvcl0sY29uZmlndXJlOmZ1bmN0aW9uKGIpe3ZhciBkPWIubm9kZSxmPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZCxbe3dpZHRoOmYrInB4In0se3dpZHRoOmYtZi8yMCsicHgifV0sdGhpcy50aW1pbmdGcm9tQ29uZmlnKGIpKX19KTsKUG9seW1lcih7aXM6InBhcGVyLW1lbnUtc2hyaW5rLWhlaWdodC1hbmltYXRpb24iLGJlaGF2aW9yczpbUG9seW1lci5OZW9uQW5pbWF0aW9uQmVoYXZpb3JdLGNvbmZpZ3VyZTpmdW5jdGlvbihiKXt2YXIgZD1iLm5vZGUsZj1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDt0aGlzLnNldFByZWZpeGVkUHJvcGVydHkoZCwidHJhbnNmb3JtT3JpZ2luIiwiMCAwIik7cmV0dXJuIHRoaXMuX2VmZmVjdD1uZXcgS2V5ZnJhbWVFZmZlY3QoZCxbe2hlaWdodDpmKyJweCIsdHJhbnNmb3JtOiJ0cmFuc2xhdGVZKDApIn0se2hlaWdodDpmLzIrInB4Iix0cmFuc2Zvcm06InRyYW5zbGF0ZVkoLTIwcHgpIn1dLHRoaXMudGltaW5nRnJvbUNvbmZpZyhiKSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItbWVudS1idXR0b24vcGFwZXItbWVudS1idXR0b24uaHRtbC5qcwooZnVuY3Rpb24oKXt2YXIgYj17QU5JTUFUSU9OX0NVQklDX0JFWklFUjoiY3ViaWMtYmV6aWVyKC4zLC45NSwuNSwxKSIsTUFYX0FOSU1BVElPTl9USU1FX01TOjQwMH07UG9seW1lci5QYXBlck1lbnVCdXR0b249ZnVuY3Rpb24oKXt9O1BvbHltZXIuUGFwZXJNZW51QnV0dG9uLnByb3RvdHlwZS5yZWdpc3RlcmVkPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuYWRkT3duS2V5QmluZGluZz1mdW5jdGlvbigpe307UG9seW1lci5QYXBlck1lbnVCdXR0b24ucHJvdG90eXBlLnJlbW92ZU93bktleUJpbmRpbmdzPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUua2V5Ym9hcmRFdmVudE1hdGNoZXNLZXlzPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX2NvbGxlY3RLZXlCaW5kaW5ncz1mdW5jdGlvbigpe307UG9seW1lci5QYXBlck1lbnVCdXR0b24ucHJvdG90eXBlLl9wcmVwS2V5QmluZGluZ3M9CmZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX2FkZEtleUJpbmRpbmc9ZnVuY3Rpb24oKXt9O1BvbHltZXIuUGFwZXJNZW51QnV0dG9uLnByb3RvdHlwZS5fcmVzZXRLZXlFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe307UG9seW1lci5QYXBlck1lbnVCdXR0b24ucHJvdG90eXBlLl9saXN0ZW5LZXlFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe307UG9seW1lci5QYXBlck1lbnVCdXR0b24ucHJvdG90eXBlLl91bmxpc3RlbktleUV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX29uS2V5QmluZGluZ0V2ZW50PWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX3RyaWdnZXJLZXlIYW5kbGVyPWZ1bmN0aW9uKCl7fTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX2ZvY3VzQmx1ckhhbmRsZXI9ZnVuY3Rpb24oZCl7aWYoUG9seW1lci5FbGVtZW50KXRoaXMuX3NldEZvY3VzZWQoImZvY3VzIj09PQpkLnR5cGUpO2Vsc2UgaWYoZC50YXJnZXQ9PT10aGlzKXRoaXMuX3NldEZvY3VzZWQoImZvY3VzIj09PWQudHlwZSk7ZWxzZSBpZih0aGlzLl9faGFuZGxlRXZlbnRSZXRhcmdldGluZyl7dmFyIGY9UG9seW1lci5kb20oZCkubG9jYWxUYXJnZXQ7dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChmKXx8dGhpcy5maXJlKGQudHlwZSx7c291cmNlRXZlbnQ6ZH0se25vZGU6dGhpcyxidWJibGVzOmQuYnViYmxlcyxjYW5jZWxhYmxlOmQuY2FuY2VsYWJsZX0pfX07UG9seW1lci5QYXBlck1lbnVCdXR0b24ucHJvdG90eXBlLl9jaGFuZ2VkQ29udHJvbFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCYmdGhpcy5fY29udHJvbFN0YXRlQ2hhbmdlZCgpfTtQb2x5bWVyLlBhcGVyTWVudUJ1dHRvbi5wcm90b3R5cGUuX3NldEZvY3VzZWQ9ZnVuY3Rpb24oKXt9O1BvbHltZXIuUGFwZXJNZW51QnV0dG9uPVBvbHltZXIoe2lzOiJwYXBlci1tZW51LWJ1dHRvbiIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25BMTF5S2V5c0JlaGF2aW9yLApQb2x5bWVyLklyb25Db250cm9sU3RhdGVdLHByb3BlcnRpZXM6e29wZW5lZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMCxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0IixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHZlcnRpY2FsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJ0b3AiLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZHluYW1pY0FsaWduOnt0eXBlOkJvb2xlYW59LGhvcml6b250YWxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSx2ZXJ0aWNhbE9mZnNldDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG5vT3ZlcmxhcDp7dHlwZTpCb29sZWFufSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saWdub3JlU2VsZWN0Ont0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGNsb3NlT25BY3RpdmF0ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxvcGVuQW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCwKdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5be25hbWU6ImZhZGUtaW4tYW5pbWF0aW9uIix0aW1pbmc6e2RlbGF5OjEwMCxkdXJhdGlvbjoyMDB9fSx7bmFtZToicGFwZXItbWVudS1ncm93LXdpZHRoLWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246MTUwLGVhc2luZzpiLkFOSU1BVElPTl9DVUJJQ19CRVpJRVJ9fSx7bmFtZToicGFwZXItbWVudS1ncm93LWhlaWdodC1hbmltYXRpb24iLHRpbWluZzp7ZGVsYXk6MTAwLGR1cmF0aW9uOjI3NSxlYXNpbmc6Yi5BTklNQVRJT05fQ1VCSUNfQkVaSUVSfX1dfX0sY2xvc2VBbmltYXRpb25Db25maWc6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW3tuYW1lOiJmYWRlLW91dC1hbmltYXRpb24iLHRpbWluZzp7ZHVyYXRpb246MTUwfX0se25hbWU6InBhcGVyLW1lbnUtc2hyaW5rLXdpZHRoLWFuaW1hdGlvbiIsdGltaW5nOntkZWxheToxMDAsZHVyYXRpb246NTAsZWFzaW5nOmIuQU5JTUFUSU9OX0NVQklDX0JFWklFUn19LAp7bmFtZToicGFwZXItbWVudS1zaHJpbmstaGVpZ2h0LWFuaW1hdGlvbiIsdGltaW5nOntkdXJhdGlvbjoyMDAsZWFzaW5nOiJlYXNlLWluIn19XX19LGFsbG93T3V0c2lkZVNjcm9sbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LF9kcm9wZG93bkNvbnRlbnQ6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oYXNwb3B1cCI6InRydWUifSxsaXN0ZW5lcnM6eyJpcm9uLWFjdGl2YXRlIjoiX29uSXJvbkFjdGl2YXRlIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0In0sZ2V0IGNvbnRlbnRFbGVtZW50KCl7Zm9yKHZhciBkPVBvbHltZXIuZG9tKHRoaXMuJC5jb250ZW50KS5nZXREaXN0cmlidXRlZE5vZGVzKCksZj0wLGg9ZC5sZW5ndGg7ZjxoO2YrKylpZihkW2ZdLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIGRbZl19LHRvZ2dsZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkPwp0aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCl9LG9wZW46ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkfHx0aGlzLiQuZHJvcGRvd24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5kcm9wZG93bi5jbG9zZSgpfSxfb25Jcm9uU2VsZWN0OmZ1bmN0aW9uKCl7dGhpcy5pZ25vcmVTZWxlY3R8fHRoaXMuY2xvc2UoKX0sX29uSXJvbkFjdGl2YXRlOmZ1bmN0aW9uKCl7dGhpcy5jbG9zZU9uQWN0aXZhdGUmJnRoaXMuY2xvc2UoKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oZCxmKXtkPyh0aGlzLl9kcm9wZG93bkNvbnRlbnQ9dGhpcy5jb250ZW50RWxlbWVudCx0aGlzLmZpcmUoInBhcGVyLWRyb3Bkb3duLW9wZW4iKSk6bnVsbCE9ZiYmdGhpcy5maXJlKCJwYXBlci1kcm9wZG93bi1jbG9zZSIpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGQpe1BvbHltZXIuSXJvbkNvbnRyb2xTdGF0ZS5fZGlzYWJsZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkJiZ0aGlzLm9wZW5lZCYmCnRoaXMuY2xvc2UoKX0sX19vbklyb25PdmVybGF5Q2FuY2VsZWQ6ZnVuY3Rpb24oZCl7dmFyIGY9dGhpcy4kLnRyaWdnZXI7LTE8UG9seW1lci5kb20oZC5kZXRhaWwpLnBhdGguaW5kZXhPZihmKSYmZC5wcmV2ZW50RGVmYXVsdCgpfX0pO09iamVjdC5rZXlzKGIpLmZvckVhY2goZnVuY3Rpb24oZCl7UG9seW1lci5QYXBlck1lbnVCdXR0b25bZF09YltkXX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWljb25zZXQtc3ZnL2lyb24taWNvbnNldC1zdmcuaHRtbC5qcwpQb2x5bWVyKHtpczoiaXJvbi1pY29uc2V0LXN2ZyIscHJvcGVydGllczp7bmFtZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9uYW1lQ2hhbmdlZCJ9LHNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjI0fSxydGxNaXJyb3Jpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sdXNlR2xvYmFsUnRsQXR0cmlidXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YT1uZXcgUG9seW1lci5Jcm9uTWV0YSh7dHlwZToiaWNvbnNldCIsa2V5Om51bGwsdmFsdWU6bnVsbH0pfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LGdldEljb25OYW1lczpmdW5jdGlvbigpe3RoaXMuX2ljb25zPXRoaXMuX2NyZWF0ZUljb25NYXAoKTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5faWNvbnMpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5uYW1lKyI6IitifSx0aGlzKX0sYXBwbHlJY29uOmZ1bmN0aW9uKGIsZCl7dGhpcy5yZW1vdmVJY29uKGIpOwppZihkPXRoaXMuX2Nsb25lSWNvbihkLHRoaXMucnRsTWlycm9yaW5nJiZ0aGlzLl90YXJnZXRJc1JUTChiKSkpe3ZhciBmPVBvbHltZXIuZG9tKGIucm9vdHx8Yik7Zi5pbnNlcnRCZWZvcmUoZCxmLmNoaWxkTm9kZXNbMF0pO3JldHVybiBiLl9zdmdJY29uPWR9cmV0dXJuIG51bGx9LHJlbW92ZUljb246ZnVuY3Rpb24oYil7Yi5fc3ZnSWNvbiYmKFBvbHltZXIuZG9tKGIucm9vdHx8YikucmVtb3ZlQ2hpbGQoYi5fc3ZnSWNvbiksYi5fc3ZnSWNvbj1udWxsKX0sX3RhcmdldElzUlRMOmZ1bmN0aW9uKGIpe251bGw9PXRoaXMuX190YXJnZXRJc1JUTCYmKHRoaXMudXNlR2xvYmFsUnRsQXR0cmlidXRlP3RoaXMuX190YXJnZXRJc1JUTD0icnRsIj09PShkb2N1bWVudC5ib2R5JiZkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZSgiZGlyIik/ZG9jdW1lbnQuYm9keTpkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldEF0dHJpYnV0ZSgiZGlyIik6KGImJmIubm9kZVR5cGUhPT1Ob2RlLkVMRU1FTlRfTk9ERSYmCihiPWIuaG9zdCksdGhpcy5fX3RhcmdldElzUlRMPWImJiJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUoYikuZGlyZWN0aW9uKSk7cmV0dXJuIHRoaXMuX190YXJnZXRJc1JUTH0sX25hbWVDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5fbWV0YS52YWx1ZT1udWxsO3RoaXMuX21ldGEua2V5PXRoaXMubmFtZTt0aGlzLl9tZXRhLnZhbHVlPXRoaXM7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuZmlyZSgiaXJvbi1pY29uc2V0LWFkZGVkIix0aGlzLHtub2RlOndpbmRvd30pfSl9LF9jcmVhdGVJY29uTWFwOmZ1bmN0aW9uKCl7dmFyIGI9T2JqZWN0LmNyZWF0ZShudWxsKTtQb2x5bWVyLmRvbSh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJbaWRdIikuZm9yRWFjaChmdW5jdGlvbihkKXtiW2QuaWRdPWR9KTtyZXR1cm4gYn0sX2Nsb25lSWNvbjpmdW5jdGlvbihiLGQpe3RoaXMuX2ljb25zPXRoaXMuX2ljb25zfHx0aGlzLl9jcmVhdGVJY29uTWFwKCk7cmV0dXJuIHRoaXMuX3ByZXBhcmVTdmdDbG9uZSh0aGlzLl9pY29uc1tiXSwKdGhpcy5zaXplLGQpfSxfcHJlcGFyZVN2Z0Nsb25lOmZ1bmN0aW9uKGIsZCxmKXtpZihiKXtiPWIuY2xvbmVOb2RlKCEwKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwic3ZnIik7ZD1iLmdldEF0dHJpYnV0ZSgidmlld0JveCIpfHwiMCAwICIrZCsiICIrZDt2YXIgaz0icG9pbnRlci1ldmVudHM6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyI7ZiYmYi5oYXNBdHRyaWJ1dGUoIm1pcnJvci1pbi1ydGwiKSYmKGsrPSItd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgtMSwxKTt0cmFuc2Zvcm06c2NhbGUoLTEsMSk7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7Iik7aC5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLGQpO2guc2V0QXR0cmlidXRlKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQgbWVldCIpO2guc2V0QXR0cmlidXRlKCJmb2N1c2FibGUiLCJmYWxzZSIpO2guc3R5bGUuY3NzVGV4dD0KaztoLmFwcGVuZENoaWxkKGIpLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKTtyZXR1cm4gaH1yZXR1cm4gbnVsbH19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1kcm9wZG93bi1tZW51L3BhcGVyLWRyb3Bkb3duLW1lbnUuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoicGFwZXItZHJvcGRvd24tbWVudSIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25CdXR0b25TdGF0ZSxQb2x5bWVyLklyb25Db250cm9sU3RhdGUsUG9seW1lci5Jcm9uRm9ybUVsZW1lbnRCZWhhdmlvcixQb2x5bWVyLklyb25WYWxpZGF0YWJsZUJlaGF2aW9yXSxwcm9wZXJ0aWVzOntzZWxlY3RlZEl0ZW1MYWJlbDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMCxyZWFkT25seTohMH0sdmFsdWU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sbGFiZWw6e3R5cGU6U3RyaW5nfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmd9LGVycm9yTWVzc2FnZTp7dHlwZTpTdHJpbmd9LG9wZW5lZDp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTohMSxvYnNlcnZlcjoiX29wZW5lZENoYW5nZWQifSxhbGxvd091dHNpZGVTY3JvbGw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9MYWJlbEZsb2F0Ont0eXBlOkJvb2xlYW4sCnZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sYWx3YXlzRmxvYXRMYWJlbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxub0FuaW1hdGlvbnM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0saG9yaXpvbnRhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToicmlnaHQifSx2ZXJ0aWNhbEFsaWduOnt0eXBlOlN0cmluZyx2YWx1ZToidG9wIn0sdmVydGljYWxPZmZzZXQ6TnVtYmVyLGR5bmFtaWNBbGlnbjp7dHlwZTpCb29sZWFufSxyZXN0b3JlRm9jdXNPbkNsb3NlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9fSxsaXN0ZW5lcnM6e3RhcDoiX29uVGFwIn0sa2V5QmluZGluZ3M6eyJ1cCBkb3duIjoib3BlbiIsZXNjOiJjbG9zZSJ9LGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJjb21ib2JveCIsImFyaWEtYXV0b2NvbXBsZXRlIjoibm9uZSIsImFyaWEtaGFzcG9wdXAiOiJ0cnVlIn0sb2JzZXJ2ZXJzOlsiX3NlbGVjdGVkSXRlbUNoYW5nZWQoc2VsZWN0ZWRJdGVtKSJdLGF0dGFjaGVkOmZ1bmN0aW9uKCl7dmFyIGI9CnRoaXMuY29udGVudEVsZW1lbnQ7YiYmYi5zZWxlY3RlZEl0ZW0mJnRoaXMuX3NldFNlbGVjdGVkSXRlbShiLnNlbGVjdGVkSXRlbSl9LGdldCBjb250ZW50RWxlbWVudCgpe2Zvcih2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzLiQuY29udGVudCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpLGQ9MCxmPWIubGVuZ3RoO2Q8ZjtkKyspaWYoYltkXS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFKXJldHVybiBiW2RdfSxvcGVuOmZ1bmN0aW9uKCl7dGhpcy4kLm1lbnVCdXR0b24ub3BlbigpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuJC5tZW51QnV0dG9uLmNsb3NlKCl9LF9vbklyb25TZWxlY3Q6ZnVuY3Rpb24oYil7dGhpcy5fc2V0U2VsZWN0ZWRJdGVtKGIuZGV0YWlsLml0ZW0pfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24oKXt0aGlzLl9zZXRTZWxlY3RlZEl0ZW0obnVsbCl9LF9vblRhcDpmdW5jdGlvbihiKXtQb2x5bWVyLkdlc3R1cmVzLmZpbmRPcmlnaW5hbFRhcmdldChiKT09PXRoaXMmJgp0aGlzLm9wZW4oKX0sX3NlbGVjdGVkSXRlbUNoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy52YWx1ZT1iPWI/Yi5sYWJlbHx8Yi5nZXRBdHRyaWJ1dGUoImxhYmVsIil8fGIudGV4dENvbnRlbnQudHJpbSgpOiIiO3RoaXMuX3NldFNlbGVjdGVkSXRlbUxhYmVsKGIpfSxfY29tcHV0ZU1lbnVWZXJ0aWNhbE9mZnNldDpmdW5jdGlvbihiLGQpe3JldHVybiBkP2Q6Yj8tNDo4fSxfZ2V0VmFsaWRpdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZHx8IXRoaXMucmVxdWlyZWR8fHRoaXMucmVxdWlyZWQmJiEhdGhpcy52YWx1ZX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wZW5lZD8idHJ1ZSI6ImZhbHNlIixkPXRoaXMuY29udGVudEVsZW1lbnQ7ZCYmZC5zZXRBdHRyaWJ1dGUoImFyaWEtZXhwYW5kZWQiLGIpfX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLXNlbGVjdG9yL2lyb24tc2VsZWN0aW9uLmh0bWwuanMKUG9seW1lci5Jcm9uU2VsZWN0aW9uPWZ1bmN0aW9uKGIpe3RoaXMuc2VsZWN0aW9uPVtdO3RoaXMuc2VsZWN0Q2FsbGJhY2s9Yn07ClBvbHltZXIuSXJvblNlbGVjdGlvbi5wcm90b3R5cGU9e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm11bHRpP3RoaXMuc2VsZWN0aW9uLnNsaWNlKCk6dGhpcy5zZWxlY3Rpb25bMF19LGNsZWFyOmZ1bmN0aW9uKGIpe3RoaXMuc2VsZWN0aW9uLnNsaWNlKCkuZm9yRWFjaChmdW5jdGlvbihkKXsoIWJ8fDA+Yi5pbmRleE9mKGQpKSYmdGhpcy5zZXRJdGVtU2VsZWN0ZWQoZCwhMSl9LHRoaXMpfSxpc1NlbGVjdGVkOmZ1bmN0aW9uKGIpe3JldHVybiAwPD10aGlzLnNlbGVjdGlvbi5pbmRleE9mKGIpfSxzZXRJdGVtU2VsZWN0ZWQ6ZnVuY3Rpb24oYixkKXtpZihudWxsIT1iJiZkIT09dGhpcy5pc1NlbGVjdGVkKGIpKXtpZihkKXRoaXMuc2VsZWN0aW9uLnB1c2goYik7ZWxzZXt2YXIgZj10aGlzLnNlbGVjdGlvbi5pbmRleE9mKGIpOzA8PWYmJnRoaXMuc2VsZWN0aW9uLnNwbGljZShmLDEpfXRoaXMuc2VsZWN0Q2FsbGJhY2smJnRoaXMuc2VsZWN0Q2FsbGJhY2soYixkKX19LHNlbGVjdDpmdW5jdGlvbihiKXt0aGlzLm11bHRpPwp0aGlzLnRvZ2dsZShiKTp0aGlzLmdldCgpIT09YiYmKHRoaXMuc2V0SXRlbVNlbGVjdGVkKHRoaXMuZ2V0KCksITEpLHRoaXMuc2V0SXRlbVNlbGVjdGVkKGIsITApKX0sdG9nZ2xlOmZ1bmN0aW9uKGIpe3RoaXMuc2V0SXRlbVNlbGVjdGVkKGIsIXRoaXMuaXNTZWxlY3RlZChiKSl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLXNlbGVjdG9yL2lyb24tc2VsZWN0YWJsZS5odG1sLmpzClBvbHltZXIuSXJvblNlbGVjdGFibGVCZWhhdmlvcj17cHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxzZWxlY3RlZDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0sYWN0aXZhdGVFdmVudDp7dHlwZTpTdHJpbmcsdmFsdWU6InRhcCIsb2JzZXJ2ZXI6Il9hY3RpdmF0ZUV2ZW50Q2hhbmdlZCJ9LHNlbGVjdGFibGU6U3RyaW5nLHNlbGVjdGVkQ2xhc3M6e3R5cGU6U3RyaW5nLHZhbHVlOiJpcm9uLXNlbGVjdGVkIn0sc2VsZWN0ZWRBdHRyaWJ1dGU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGZhbGxiYWNrU2VsZWN0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxpdGVtczp7dHlwZTpBcnJheSxyZWFkT25seTohMCxub3RpZnk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9leGNsdWRlZExvY2FsTmFtZXM6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue3RlbXBsYXRlOjEsCiJkb20tYmluZCI6MSwiZG9tLWlmIjoxLCJkb20tcmVwZWF0IjoxfX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlQXR0ckZvclNlbGVjdGVkKGF0dHJGb3JTZWxlY3RlZCkiLCJfdXBkYXRlU2VsZWN0ZWQoc2VsZWN0ZWQpIiwiX2NoZWNrRmFsbGJhY2soZmFsbGJhY2tTZWxlY3Rpb24pIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX2JpbmRGaWx0ZXJJdGVtPXRoaXMuX2ZpbHRlckl0ZW0uYmluZCh0aGlzKTt0aGlzLl9zZWxlY3Rpb249bmV3IFBvbHltZXIuSXJvblNlbGVjdGlvbih0aGlzLl9hcHBseVNlbGVjdGlvbi5iaW5kKHRoaXMpKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlcj10aGlzLl9vYnNlcnZlSXRlbXModGhpcyk7dGhpcy5fYWRkTGlzdGVuZXIodGhpcy5hY3RpdmF0ZUV2ZW50KX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlciYmUG9seW1lci5kb20odGhpcykudW5vYnNlcnZlTm9kZXModGhpcy5fb2JzZXJ2ZXIpO3RoaXMuX3JlbW92ZUxpc3RlbmVyKHRoaXMuYWN0aXZhdGVFdmVudCl9LAppbmRleE9mOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLml0ZW1zP3RoaXMuaXRlbXMuaW5kZXhPZihiKTotMX0sc2VsZWN0OmZ1bmN0aW9uKGIpe3RoaXMuc2VsZWN0ZWQ9Yn0sc2VsZWN0UHJldmlvdXM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLml0ZW1zLmxlbmd0aDtiPShOdW1iZXIodGhpcy5fdmFsdWVUb0luZGV4KHRoaXMuc2VsZWN0ZWQpKS0xK2IpJWI7dGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoYil9LHNlbGVjdE5leHQ6ZnVuY3Rpb24oKXt2YXIgYj0oTnVtYmVyKHRoaXMuX3ZhbHVlVG9JbmRleCh0aGlzLnNlbGVjdGVkKSkrMSkldGhpcy5pdGVtcy5sZW5ndGg7dGhpcy5zZWxlY3RlZD10aGlzLl9pbmRleFRvVmFsdWUoYil9LHNlbGVjdEluZGV4OmZ1bmN0aW9uKGIpe3RoaXMuc2VsZWN0KHRoaXMuX2luZGV4VG9WYWx1ZShiKSl9LGZvcmNlU3luY2hyb25vdXNJdGVtVXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXImJiJmdW5jdGlvbiI9PT10eXBlb2YgdGhpcy5fb2JzZXJ2ZXIuZmx1c2g/CnRoaXMuX29ic2VydmVyLmZsdXNoKCk6dGhpcy5fdXBkYXRlSXRlbXMoKX0sZ2V0IF9zaG91bGRVcGRhdGVTZWxlY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5zZWxlY3RlZH0sX2NoZWNrRmFsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVTZWxlY3RlZCgpfSxfYWRkTGlzdGVuZXI6ZnVuY3Rpb24oYil7dGhpcy5saXN0ZW4odGhpcyxiLCJfYWN0aXZhdGVIYW5kbGVyIil9LF9yZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbihiKXt0aGlzLnVubGlzdGVuKHRoaXMsYiwiX2FjdGl2YXRlSGFuZGxlciIpfSxfYWN0aXZhdGVFdmVudENoYW5nZWQ6ZnVuY3Rpb24oYixkKXt0aGlzLl9yZW1vdmVMaXN0ZW5lcihkKTt0aGlzLl9hZGRMaXN0ZW5lcihiKX0sX3VwZGF0ZUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGI9UG9seW1lci5kb20odGhpcykucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKHRoaXMuc2VsZWN0YWJsZXx8IioiKTtiPUFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChiLHRoaXMuX2JpbmRGaWx0ZXJJdGVtKTsKdGhpcy5fc2V0SXRlbXMoYil9LF91cGRhdGVBdHRyRm9yU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5fdmFsdWVGb3JJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtKSl9LF91cGRhdGVTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX3NlbGVjdFNlbGVjdGVkKHRoaXMuc2VsZWN0ZWQpfSxfc2VsZWN0U2VsZWN0ZWQ6ZnVuY3Rpb24oKXtpZih0aGlzLml0ZW1zKXt2YXIgYj10aGlzLl92YWx1ZVRvSXRlbSh0aGlzLnNlbGVjdGVkKTtiP3RoaXMuX3NlbGVjdGlvbi5zZWxlY3QoYik6dGhpcy5fc2VsZWN0aW9uLmNsZWFyKCk7dGhpcy5mYWxsYmFja1NlbGVjdGlvbiYmdGhpcy5pdGVtcy5sZW5ndGgmJnZvaWQgMD09PXRoaXMuX3NlbGVjdGlvbi5nZXQoKSYmKHRoaXMuc2VsZWN0ZWQ9dGhpcy5mYWxsYmFja1NlbGVjdGlvbil9fSxfZmlsdGVySXRlbTpmdW5jdGlvbihiKXtyZXR1cm4hdGhpcy5fZXhjbHVkZWRMb2NhbE5hbWVzW2IubG9jYWxOYW1lXX0sCl92YWx1ZVRvSXRlbTpmdW5jdGlvbihiKXtyZXR1cm4gbnVsbD09Yj9udWxsOnRoaXMuaXRlbXNbdGhpcy5fdmFsdWVUb0luZGV4KGIpXX0sX3ZhbHVlVG9JbmRleDpmdW5jdGlvbihiKXtpZih0aGlzLmF0dHJGb3JTZWxlY3RlZClmb3IodmFyIGQ9MCxmO2Y9dGhpcy5pdGVtc1tkXTtkKyspe2lmKHRoaXMuX3ZhbHVlRm9ySXRlbShmKT09YilyZXR1cm4gZH1lbHNlIHJldHVybiBOdW1iZXIoYil9LF9pbmRleFRvVmFsdWU6ZnVuY3Rpb24oYil7aWYodGhpcy5hdHRyRm9yU2VsZWN0ZWQpe2lmKGI9dGhpcy5pdGVtc1tiXSlyZXR1cm4gdGhpcy5fdmFsdWVGb3JJdGVtKGIpfWVsc2UgcmV0dXJuIGJ9LF92YWx1ZUZvckl0ZW06ZnVuY3Rpb24oYil7aWYoIWIpcmV0dXJuIG51bGw7aWYoIXRoaXMuYXR0ckZvclNlbGVjdGVkKXJldHVybiBiPXRoaXMuaW5kZXhPZihiKSwtMT09PWI/bnVsbDpiO3ZhciBkPWJbUG9seW1lci5DYXNlTWFwLmRhc2hUb0NhbWVsQ2FzZSh0aGlzLmF0dHJGb3JTZWxlY3RlZCldOwpyZXR1cm4gdm9pZCAwIT1kP2Q6Yi5nZXRBdHRyaWJ1dGUodGhpcy5hdHRyRm9yU2VsZWN0ZWQpfSxfYXBwbHlTZWxlY3Rpb246ZnVuY3Rpb24oYixkKXt0aGlzLnNlbGVjdGVkQ2xhc3MmJnRoaXMudG9nZ2xlQ2xhc3ModGhpcy5zZWxlY3RlZENsYXNzLGQsYik7dGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSYmdGhpcy50b2dnbGVBdHRyaWJ1dGUodGhpcy5zZWxlY3RlZEF0dHJpYnV0ZSxkLGIpO3RoaXMuX3NlbGVjdGlvbkNoYW5nZSgpO3RoaXMuZmlyZSgiaXJvbi0iKyhkPyJzZWxlY3QiOiJkZXNlbGVjdCIpLHtpdGVtOmJ9KX0sX3NlbGVjdGlvbkNoYW5nZTpmdW5jdGlvbigpe3RoaXMuX3NldFNlbGVjdGVkSXRlbSh0aGlzLl9zZWxlY3Rpb24uZ2V0KCkpfSxfb2JzZXJ2ZUl0ZW1zOmZ1bmN0aW9uKGIpe3JldHVybiBQb2x5bWVyLmRvbShiKS5vYnNlcnZlTm9kZXMoZnVuY3Rpb24oZCl7dGhpcy5fdXBkYXRlSXRlbXMoKTt0aGlzLl91cGRhdGVTZWxlY3RlZCgpO3RoaXMuZmlyZSgiaXJvbi1pdGVtcy1jaGFuZ2VkIiwKZCx7YnViYmxlczohMSxjYW5jZWxhYmxlOiExfSl9KX0sX2FjdGl2YXRlSGFuZGxlcjpmdW5jdGlvbihiKXtiPWIudGFyZ2V0O2Zvcih2YXIgZD10aGlzLml0ZW1zO2ImJmIhPXRoaXM7KXt2YXIgZj1kLmluZGV4T2YoYik7aWYoMDw9Zil7ZD10aGlzLl9pbmRleFRvVmFsdWUoZik7dGhpcy5faXRlbUFjdGl2YXRlKGQsYik7YnJlYWt9Yj1iLnBhcmVudE5vZGV9fSxfaXRlbUFjdGl2YXRlOmZ1bmN0aW9uKGIsZCl7dGhpcy5maXJlKCJpcm9uLWFjdGl2YXRlIix7c2VsZWN0ZWQ6YixpdGVtOmR9LHtjYW5jZWxhYmxlOiEwfSkuZGVmYXVsdFByZXZlbnRlZHx8dGhpcy5zZWxlY3QoYil9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLXNlbGVjdG9yL2lyb24tbXVsdGktc2VsZWN0YWJsZS5odG1sLmpzClBvbHltZXIuSXJvbk11bHRpU2VsZWN0YWJsZUJlaGF2aW9ySW1wbD17cHJvcGVydGllczp7bXVsdGk6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoibXVsdGlDaGFuZ2VkIn0sc2VsZWN0ZWRWYWx1ZXM6e3R5cGU6QXJyYXksbm90aWZ5OiEwLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzZWxlY3RlZEl0ZW1zOnt0eXBlOkFycmF5LHJlYWRPbmx5OiEwLG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl91cGRhdGVTZWxlY3RlZChzZWxlY3RlZFZhbHVlcy5zcGxpY2VzKSJdLHNlbGVjdDpmdW5jdGlvbihiKXt0aGlzLm11bHRpP3RoaXMuX3RvZ2dsZVNlbGVjdGVkKGIpOnRoaXMuc2VsZWN0ZWQ9Yn0sbXVsdGlDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuX3NlbGVjdGlvbi5tdWx0aT1iO3RoaXMuX3VwZGF0ZVNlbGVjdGVkKCl9LGdldCBfc2hvdWxkVXBkYXRlU2VsZWN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMuc2VsZWN0ZWR8fApudWxsIT10aGlzLnNlbGVjdGVkVmFsdWVzJiZ0aGlzLnNlbGVjdGVkVmFsdWVzLmxlbmd0aH0sX3VwZGF0ZUF0dHJGb3JTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMubXVsdGk/dGhpcy5zZWxlY3RlZEl0ZW1zJiYwPHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGgmJih0aGlzLnNlbGVjdGVkVmFsdWVzPXRoaXMuc2VsZWN0ZWRJdGVtcy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuX2luZGV4VG9WYWx1ZSh0aGlzLmluZGV4T2YoYikpfSx0aGlzKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIG51bGwhPWJ9LHRoaXMpKTpQb2x5bWVyLklyb25TZWxlY3RhYmxlQmVoYXZpb3IuX3VwZGF0ZUF0dHJGb3JTZWxlY3RlZC5hcHBseSh0aGlzKX0sX3VwZGF0ZVNlbGVjdGVkOmZ1bmN0aW9uKCl7dGhpcy5tdWx0aT90aGlzLl9zZWxlY3RNdWx0aSh0aGlzLnNlbGVjdGVkVmFsdWVzKTp0aGlzLl9zZWxlY3RTZWxlY3RlZCh0aGlzLnNlbGVjdGVkKX0sX3NlbGVjdE11bHRpOmZ1bmN0aW9uKGIpe2I9CmJ8fFtdO2I9KHRoaXMuX3ZhbHVlc1RvSXRlbXMoYil8fFtdKS5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuIG51bGwhPT1mJiZ2b2lkIDAhPT1mfSk7dGhpcy5fc2VsZWN0aW9uLmNsZWFyKGIpO2Zvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKXRoaXMuX3NlbGVjdGlvbi5zZXRJdGVtU2VsZWN0ZWQoYltkXSwhMCk7dGhpcy5mYWxsYmFja1NlbGVjdGlvbiYmIXRoaXMuX3NlbGVjdGlvbi5nZXQoKS5sZW5ndGgmJnRoaXMuX3ZhbHVlVG9JdGVtKHRoaXMuZmFsbGJhY2tTZWxlY3Rpb24pJiZ0aGlzLnNlbGVjdCh0aGlzLmZhbGxiYWNrU2VsZWN0aW9uKX0sX3NlbGVjdGlvbkNoYW5nZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMuX3NlbGVjdGlvbi5nZXQoKTt0aGlzLm11bHRpPyh0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKGIpLHRoaXMuX3NldFNlbGVjdGVkSXRlbShiLmxlbmd0aD9iWzBdOm51bGwpKTpudWxsIT09YiYmdm9pZCAwIT09Yj8odGhpcy5fc2V0U2VsZWN0ZWRJdGVtcyhbYl0pLAp0aGlzLl9zZXRTZWxlY3RlZEl0ZW0oYikpOih0aGlzLl9zZXRTZWxlY3RlZEl0ZW1zKFtdKSx0aGlzLl9zZXRTZWxlY3RlZEl0ZW0obnVsbCkpfSxfdG9nZ2xlU2VsZWN0ZWQ6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5zZWxlY3RlZFZhbHVlcy5pbmRleE9mKGIpOzA+ZD90aGlzLnB1c2goInNlbGVjdGVkVmFsdWVzIixiKTp0aGlzLnNwbGljZSgic2VsZWN0ZWRWYWx1ZXMiLGQsMSl9LF92YWx1ZXNUb0l0ZW1zOmZ1bmN0aW9uKGIpe3JldHVybiBudWxsPT1iP251bGw6Yi5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIHRoaXMuX3ZhbHVlVG9JdGVtKGQpfSx0aGlzKX19O1BvbHltZXIuSXJvbk11bHRpU2VsZWN0YWJsZUJlaGF2aW9yPVtQb2x5bWVyLklyb25TZWxlY3RhYmxlQmVoYXZpb3IsUG9seW1lci5Jcm9uTXVsdGlTZWxlY3RhYmxlQmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLW1lbnUtYmVoYXZpb3IvaXJvbi1tZW51LWJlaGF2aW9yLmh0bWwuanMKUG9seW1lci5Jcm9uTWVudUJlaGF2aW9ySW1wbD17cHJvcGVydGllczp7Zm9jdXNlZEl0ZW06e29ic2VydmVyOiJfZm9jdXNlZEl0ZW1DaGFuZ2VkIixyZWFkT25seTohMCx0eXBlOk9iamVjdH0sYXR0ckZvckl0ZW1UaXRsZTp7dHlwZTpTdHJpbmd9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9kaXNhYmxlZENoYW5nZWQifX0sX01PRElGSUVSX0tFWVM6IkFsdCBBbHRHcmFwaCBDYXBzTG9jayBDb250cm9sIEZuIEZuTG9jayBIeXBlciBNZXRhIE51bUxvY2sgT1MgU2Nyb2xsTG9jayBTaGlmdCBTdXBlciBTeW1ib2wgU3ltYm9sTG9jayIuc3BsaXQoIiAiKSxfU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVM6MUUzLF9wcmV2aW91c1RhYkluZGV4OjAsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im1lbnUifSxvYnNlcnZlcnM6WyJfdXBkYXRlTXVsdGlzZWxlY3RhYmxlKG11bHRpKSJdLGxpc3RlbmVyczp7Zm9jdXM6Il9vbkZvY3VzIixrZXlkb3duOiJfb25LZXlkb3duIiwKImlyb24taXRlbXMtY2hhbmdlZCI6Il9vbklyb25JdGVtc0NoYW5nZWQifSxrZXlCaW5kaW5nczp7dXA6Il9vblVwS2V5Iixkb3duOiJfb25Eb3duS2V5Iixlc2M6Il9vbkVzY0tleSIsInNoaWZ0K3RhYjprZXlkb3duIjoiX29uU2hpZnRUYWJEb3duIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFRhYmluZGljZXMoKX0sc2VsZWN0OmZ1bmN0aW9uKGIpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCk7dmFyIGQ9dGhpcy5fdmFsdWVUb0l0ZW0oYik7ZCYmZC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil8fCh0aGlzLl9zZXRGb2N1c2VkSXRlbShkKSxQb2x5bWVyLklyb25NdWx0aVNlbGVjdGFibGVCZWhhdmlvckltcGwuc2VsZWN0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LF9yZXNldFRhYmluZGljZXM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm11bHRpPwp0aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IixkPT09Yj8iMCI6Ii0xIil9LHRoaXMpfSxfdXBkYXRlTXVsdGlzZWxlY3RhYmxlOmZ1bmN0aW9uKGIpe2I/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwidHJ1ZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIpfSxfZm9jdXNXaXRoS2V5Ym9hcmRFdmVudDpmdW5jdGlvbihiKXtpZigtMT09PXRoaXMuX01PRElGSUVSX0tFWVMuaW5kZXhPZihiLmtleSkpe3RoaXMuY2FuY2VsRGVib3VuY2VyKCJfY2xlYXJTZWFyY2hUZXh0Iik7dmFyIGQ9dGhpcy5fc2VhcmNoVGV4dHx8IiI7ZCs9KGIua2V5JiYxPT1iLmtleS5sZW5ndGg/Yi5rZXk6U3RyaW5nLmZyb21DaGFyQ29kZShiLmtleUNvZGUpKS50b0xvY2FsZUxvd2VyQ2FzZSgpOwpiPWQubGVuZ3RoO2Zvcih2YXIgZj0wLGg7aD10aGlzLml0ZW1zW2ZdO2YrKylpZighaC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe3ZhciBrPXRoaXMuYXR0ckZvckl0ZW1UaXRsZXx8InRleHRDb250ZW50IjtrPShoW2tdfHxoLmdldEF0dHJpYnV0ZShrKXx8IiIpLnRyaW0oKTtpZighKGsubGVuZ3RoPGIpJiZrLnNsaWNlKDAsYikudG9Mb2NhbGVMb3dlckNhc2UoKT09ZCl7dGhpcy5fc2V0Rm9jdXNlZEl0ZW0oaCk7YnJlYWt9fXRoaXMuX3NlYXJjaFRleHQ9ZDt0aGlzLmRlYm91bmNlKCJfY2xlYXJTZWFyY2hUZXh0Iix0aGlzLl9jbGVhclNlYXJjaFRleHQsdGhpcy5fU0VBUkNIX1JFU0VUX1RJTUVPVVRfTVMpfX0sX2NsZWFyU2VhcmNoVGV4dDpmdW5jdGlvbigpe3RoaXMuX3NlYXJjaFRleHQ9IiJ9LF9mb2N1c1ByZXZpb3VzOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPXRoaXMuaXRlbXMubGVuZ3RoLGQ9TnVtYmVyKHRoaXMuaW5kZXhPZih0aGlzLmZvY3VzZWRJdGVtKSksZj0xO2Y8CmIrMTtmKyspe3ZhciBoPXRoaXMuaXRlbXNbKGQtZitiKSViXTtpZighaC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpe3ZhciBrPVBvbHltZXIuZG9tKGgpLmdldE93bmVyUm9vdCgpfHxkb2N1bWVudDt0aGlzLl9zZXRGb2N1c2VkSXRlbShoKTtpZihQb2x5bWVyLmRvbShrKS5hY3RpdmVFbGVtZW50PT1oKWJyZWFrfX19LF9mb2N1c05leHQ6ZnVuY3Rpb24oKXtmb3IodmFyIGI9dGhpcy5pdGVtcy5sZW5ndGgsZD1OdW1iZXIodGhpcy5pbmRleE9mKHRoaXMuZm9jdXNlZEl0ZW0pKSxmPTE7ZjxiKzE7ZisrKXt2YXIgaD10aGlzLml0ZW1zWyhkK2YpJWJdO2lmKCFoLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7dmFyIGs9UG9seW1lci5kb20oaCkuZ2V0T3duZXJSb290KCl8fGRvY3VtZW50O3RoaXMuX3NldEZvY3VzZWRJdGVtKGgpO2lmKFBvbHltZXIuZG9tKGspLmFjdGl2ZUVsZW1lbnQ9PWgpYnJlYWt9fX0sX2FwcGx5U2VsZWN0aW9uOmZ1bmN0aW9uKGIsZCl7ZD9iLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsCiJ0cnVlIik6Yi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiKTtQb2x5bWVyLklyb25TZWxlY3RhYmxlQmVoYXZpb3IuX2FwcGx5U2VsZWN0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX2ZvY3VzZWRJdGVtQ2hhbmdlZDpmdW5jdGlvbihiLGQpe2QmJmQuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIi0xIik7IWJ8fGIuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHx0aGlzLmRpc2FibGVkfHwoYi5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiMCIpLGIuZm9jdXMoKSl9LF9vbklyb25JdGVtc0NoYW5nZWQ6ZnVuY3Rpb24oYil7Yi5kZXRhaWwuYWRkZWROb2Rlcy5sZW5ndGgmJnRoaXMuX3Jlc2V0VGFiaW5kaWNlcygpfSxfb25TaGlmdFRhYkRvd246ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKTtQb2x5bWVyLklyb25NZW51QmVoYXZpb3JJbXBsLl9zaGlmdFRhYlByZXNzZWQ9ITA7dGhpcy5fc2V0Rm9jdXNlZEl0ZW0obnVsbCk7dGhpcy5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwKIi0xIik7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsYik7UG9seW1lci5Jcm9uTWVudUJlaGF2aW9ySW1wbC5fc2hpZnRUYWJQcmVzc2VkPSExfSwxKX0sX29uRm9jdXM6ZnVuY3Rpb24oYil7IVBvbHltZXIuSXJvbk1lbnVCZWhhdmlvckltcGwuX3NoaWZ0VGFiUHJlc3NlZCYmKGI9UG9seW1lci5kb20oYikucm9vdFRhcmdldCxiPT09dGhpc3x8InVuZGVmaW5lZCI9PT10eXBlb2YgYi50YWJJbmRleHx8dGhpcy5pc0xpZ2h0RGVzY2VuZGFudChiKSkmJih0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYz10aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5tdWx0aT90aGlzLnNlbGVjdGVkSXRlbXMmJnRoaXMuc2VsZWN0ZWRJdGVtc1swXTp0aGlzLnNlbGVjdGVkSXRlbTt0aGlzLl9zZXRGb2N1c2VkSXRlbShudWxsKTtkP3RoaXMuX3NldEZvY3VzZWRJdGVtKGQpOnRoaXMuaXRlbXNbMF0mJnRoaXMuX2ZvY3VzTmV4dCgpfSkpfSxfb25VcEtleTpmdW5jdGlvbihiKXt0aGlzLl9mb2N1c1ByZXZpb3VzKCk7CmIuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uRG93bktleTpmdW5jdGlvbihiKXt0aGlzLl9mb2N1c05leHQoKTtiLmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LF9vbkVzY0tleTpmdW5jdGlvbigpe3ZhciBiPXRoaXMuZm9jdXNlZEl0ZW07YiYmYi5ibHVyKCl9LF9vbktleWRvd246ZnVuY3Rpb24oYil7dGhpcy5rZXlib2FyZEV2ZW50TWF0Y2hlc0tleXMoYiwidXAgZG93biBlc2MiKXx8dGhpcy5fZm9jdXNXaXRoS2V5Ym9hcmRFdmVudChiKTtiLnN0b3BQcm9wYWdhdGlvbigpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKGIpe1BvbHltZXIuSXJvblNlbGVjdGFibGVCZWhhdmlvci5fYWN0aXZhdGVIYW5kbGVyLmNhbGwodGhpcyxiKTtiLnN0b3BQcm9wYWdhdGlvbigpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGIpe2I/KHRoaXMuX3ByZXZpb3VzVGFiSW5kZXg9dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iik/dGhpcy50YWJJbmRleDoKMCx0aGlzLnJlbW92ZUF0dHJpYnV0ZSgidGFiaW5kZXgiKSk6dGhpcy5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fHRoaXMuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsdGhpcy5fcHJldmlvdXNUYWJJbmRleCl9fTtQb2x5bWVyLklyb25NZW51QmVoYXZpb3JJbXBsLl9zaGlmdFRhYlByZXNzZWQ9ITE7UG9seW1lci5Jcm9uTWVudUJlaGF2aW9yPVtQb2x5bWVyLklyb25NdWx0aVNlbGVjdGFibGVCZWhhdmlvcixQb2x5bWVyLklyb25BMTF5S2V5c0JlaGF2aW9yLFBvbHltZXIuSXJvbk1lbnVCZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWxpc3Rib3gvcGFwZXItbGlzdGJveC5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIoe2lzOiJwYXBlci1saXN0Ym94IixiZWhhdmlvcnM6W1BvbHltZXIuSXJvbk1lbnVCZWhhdmlvcl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imxpc3Rib3gifX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1pdGVtL3BhcGVyLWl0ZW0tYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLlBhcGVySXRlbUJlaGF2aW9ySW1wbD17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6Im9wdGlvbiIsdGFiaW5kZXg6IjAifX07UG9seW1lci5QYXBlckl0ZW1CZWhhdmlvcj1bUG9seW1lci5Jcm9uQnV0dG9uU3RhdGUsUG9seW1lci5Jcm9uQ29udHJvbFN0YXRlLFBvbHltZXIuUGFwZXJJdGVtQmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1pdGVtL3BhcGVyLWl0ZW0uaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItaXRlbSIsYmVoYXZpb3JzOltQb2x5bWVyLlBhcGVySXRlbUJlaGF2aW9yXX0pOwoKLyoKCiBMb2Rhc2ggPGh0dHBzOi8vbG9kYXNoLmNvbS8+CiBDb3B5cmlnaHQgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pzLmZvdW5kYXRpb24vPgogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPgogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT4KIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9ycwoqLwooZnVuY3Rpb24oKXt2YXIgdW5kZWZpbmVkO3ZhciBWRVJTSU9OPSI0LjE3LjUiO3ZhciBMQVJHRV9BUlJBWV9TSVpFPTIwMDt2YXIgQ09SRV9FUlJPUl9URVhUPSJVbnN1cHBvcnRlZCBjb3JlLWpzIHVzZS4gVHJ5IGh0dHBzOi8vbnBtcy5pby9zZWFyY2g/cVx4M2Rwb255ZmlsbC4iLEZVTkNfRVJST1JfVEVYVD0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7dmFyIEhBU0hfVU5ERUZJTkVEPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjt2YXIgTUFYX01FTU9JWkVfU0laRT01MDA7dmFyIFBMQUNFSE9MREVSPSJfX2xvZGFzaF9wbGFjZWhvbGRlcl9fIjt2YXIgQ0xPTkVfREVFUF9GTEFHPTEsQ0xPTkVfRkxBVF9GTEFHPTIsQ0xPTkVfU1lNQk9MU19GTEFHPTQ7dmFyIENPTVBBUkVfUEFSVElBTF9GTEFHPTEsQ09NUEFSRV9VTk9SREVSRURfRkxBRz0yO3ZhciBXUkFQX0JJTkRfRkxBRz0xLFdSQVBfQklORF9LRVlfRkxBRz0yLFdSQVBfQ1VSUllfQk9VTkRfRkxBRz00LFdSQVBfQ1VSUllfRkxBRz0KOCxXUkFQX0NVUlJZX1JJR0hUX0ZMQUc9MTYsV1JBUF9QQVJUSUFMX0ZMQUc9MzIsV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUc9NjQsV1JBUF9BUllfRkxBRz0xMjgsV1JBUF9SRUFSR19GTEFHPTI1NixXUkFQX0ZMSVBfRkxBRz01MTI7dmFyIERFRkFVTFRfVFJVTkNfTEVOR1RIPTMwLERFRkFVTFRfVFJVTkNfT01JU1NJT049Ii4uLiI7dmFyIEhPVF9DT1VOVD04MDAsSE9UX1NQQU49MTY7dmFyIExBWllfRklMVEVSX0ZMQUc9MSxMQVpZX01BUF9GTEFHPTIsTEFaWV9XSElMRV9GTEFHPTM7dmFyIElORklOSVRZPTEvMCxNQVhfU0FGRV9JTlRFR0VSPTkwMDcxOTkyNTQ3NDA5OTEsTUFYX0lOVEVHRVI9MS43OTc2OTMxMzQ4NjIzMTU3RTMwOCxOQU49MC8wO3ZhciBNQVhfQVJSQVlfTEVOR1RIPTQyOTQ5NjcyOTUsTUFYX0FSUkFZX0lOREVYPU1BWF9BUlJBWV9MRU5HVEgtMSxIQUxGX01BWF9BUlJBWV9MRU5HVEg9TUFYX0FSUkFZX0xFTkdUSD4+PjE7dmFyIHdyYXBGbGFncz1bWyJhcnkiLApXUkFQX0FSWV9GTEFHXSxbImJpbmQiLFdSQVBfQklORF9GTEFHXSxbImJpbmRLZXkiLFdSQVBfQklORF9LRVlfRkxBR10sWyJjdXJyeSIsV1JBUF9DVVJSWV9GTEFHXSxbImN1cnJ5UmlnaHQiLFdSQVBfQ1VSUllfUklHSFRfRkxBR10sWyJmbGlwIixXUkFQX0ZMSVBfRkxBR10sWyJwYXJ0aWFsIixXUkFQX1BBUlRJQUxfRkxBR10sWyJwYXJ0aWFsUmlnaHQiLFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHXSxbInJlYXJnIixXUkFQX1JFQVJHX0ZMQUddXTt2YXIgYXJnc1RhZz0iW29iamVjdCBBcmd1bWVudHNdIixhcnJheVRhZz0iW29iamVjdCBBcnJheV0iLGFzeW5jVGFnPSJbb2JqZWN0IEFzeW5jRnVuY3Rpb25dIixib29sVGFnPSJbb2JqZWN0IEJvb2xlYW5dIixkYXRlVGFnPSJbb2JqZWN0IERhdGVdIixkb21FeGNUYWc9IltvYmplY3QgRE9NRXhjZXB0aW9uXSIsZXJyb3JUYWc9IltvYmplY3QgRXJyb3JdIixmdW5jVGFnPSJbb2JqZWN0IEZ1bmN0aW9uXSIsZ2VuVGFnPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsCm1hcFRhZz0iW29iamVjdCBNYXBdIixudW1iZXJUYWc9IltvYmplY3QgTnVtYmVyXSIsbnVsbFRhZz0iW29iamVjdCBOdWxsXSIsb2JqZWN0VGFnPSJbb2JqZWN0IE9iamVjdF0iLHByb21pc2VUYWc9IltvYmplY3QgUHJvbWlzZV0iLHByb3h5VGFnPSJbb2JqZWN0IFByb3h5XSIscmVnZXhwVGFnPSJbb2JqZWN0IFJlZ0V4cF0iLHNldFRhZz0iW29iamVjdCBTZXRdIixzdHJpbmdUYWc9IltvYmplY3QgU3RyaW5nXSIsc3ltYm9sVGFnPSJbb2JqZWN0IFN5bWJvbF0iLHVuZGVmaW5lZFRhZz0iW29iamVjdCBVbmRlZmluZWRdIix3ZWFrTWFwVGFnPSJbb2JqZWN0IFdlYWtNYXBdIix3ZWFrU2V0VGFnPSJbb2JqZWN0IFdlYWtTZXRdIjt2YXIgYXJyYXlCdWZmZXJUYWc9IltvYmplY3QgQXJyYXlCdWZmZXJdIixkYXRhVmlld1RhZz0iW29iamVjdCBEYXRhVmlld10iLGZsb2F0MzJUYWc9IltvYmplY3QgRmxvYXQzMkFycmF5XSIsZmxvYXQ2NFRhZz0iW29iamVjdCBGbG9hdDY0QXJyYXldIiwKaW50OFRhZz0iW29iamVjdCBJbnQ4QXJyYXldIixpbnQxNlRhZz0iW29iamVjdCBJbnQxNkFycmF5XSIsaW50MzJUYWc9IltvYmplY3QgSW50MzJBcnJheV0iLHVpbnQ4VGFnPSJbb2JqZWN0IFVpbnQ4QXJyYXldIix1aW50OENsYW1wZWRUYWc9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIix1aW50MTZUYWc9IltvYmplY3QgVWludDE2QXJyYXldIix1aW50MzJUYWc9IltvYmplY3QgVWludDMyQXJyYXldIjt2YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmc9L1xiX19wIFwrPSAnJzsvZyxyZUVtcHR5U3RyaW5nTWlkZGxlPS9cYihfX3AgXCs9KSAnJyBcKy9nLHJlRW1wdHlTdHJpbmdUcmFpbGluZz0vKF9fZVwoLio/XCl8XGJfX3RcKSkgXCtcbicnOy9nO3ZhciByZUVzY2FwZWRIdG1sPS8mKD86YW1wfGx0fGd0fHF1b3R8IzM5KTsvZyxyZVVuZXNjYXBlZEh0bWw9L1smPD4iJ10vZyxyZUhhc0VzY2FwZWRIdG1sPVJlZ0V4cChyZUVzY2FwZWRIdG1sLnNvdXJjZSkscmVIYXNVbmVzY2FwZWRIdG1sPQpSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7dmFyIHJlRXNjYXBlPS88JS0oW1xzXFNdKz8pJT4vZyxyZUV2YWx1YXRlPS88JShbXHNcU10rPyklPi9nLHJlSW50ZXJwb2xhdGU9LzwlPShbXHNcU10rPyklPi9nO3ZhciByZUlzRGVlcFByb3A9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8scmVJc1BsYWluUHJvcD0vXlx3KiQvLHJlUHJvcE5hbWU9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2c7dmFyIHJlUmVnRXhwQ2hhcj0vW1xcXiQuKis/KClbXF17fXxdL2cscmVIYXNSZWdFeHBDaGFyPVJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTt2YXIgcmVUcmltPS9eXHMrfFxzKyQvZyxyZVRyaW1TdGFydD0vXlxzKy8scmVUcmltRW5kPS9ccyskLzt2YXIgcmVXcmFwQ29tbWVudD0vXHsoPzpcblwvXCogXFt3cmFwcGVkIHdpdGggLitcXSBcKlwvKT9cbj8vLApyZVdyYXBEZXRhaWxzPS9ce1xuXC9cKiBcW3dyYXBwZWQgd2l0aCAoLispXF0gXCovLHJlU3BsaXREZXRhaWxzPS8sPyAmIC87dmFyIHJlQXNjaWlXb3JkPS9bXlx4MDAtXHgyZlx4M2EtXHg0MFx4NWItXHg2MFx4N2ItXHg3Zl0rL2c7dmFyIHJlRXNjYXBlQ2hhcj0vXFwoXFwpPy9nO3ZhciByZUVzVGVtcGxhdGU9L1wkXHsoW15cXH1dKig/OlxcLlteXFx9XSopKilcfS9nO3ZhciByZUZsYWdzPS9cdyokLzt2YXIgcmVJc0JhZEhleD0vXlstK10weFswLTlhLWZdKyQvaTt2YXIgcmVJc0JpbmFyeT0vXjBiWzAxXSskL2k7dmFyIHJlSXNIb3N0Q3Rvcj0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLzt2YXIgcmVJc09jdGFsPS9eMG9bMC03XSskL2k7dmFyIHJlSXNVaW50PS9eKD86MHxbMS05XVxkKikkLzt2YXIgcmVMYXRpbj0vW1x4YzAtXHhkNlx4ZDgtXHhmNlx4ZjgtXHhmZlx1MDEwMC1cdTAxN2ZdL2c7dmFyIHJlTm9NYXRjaD0vKCReKS87dmFyIHJlVW5lc2NhcGVkU3RyaW5nPQovWydcblxyXHUyMDI4XHUyMDI5XFxdL2c7dmFyIHJzQXN0cmFsUmFuZ2U9IlxcdWQ4MDAtXFx1ZGZmZiIscnNDb21ib01hcmtzUmFuZ2U9IlxcdTAzMDAtXFx1MDM2ZiIscmVDb21ib0hhbGZNYXJrc1JhbmdlPSJcXHVmZTIwLVxcdWZlMmYiLHJzQ29tYm9TeW1ib2xzUmFuZ2U9IlxcdTIwZDAtXFx1MjBmZiIscnNDb21ib1JhbmdlPXJzQ29tYm9NYXJrc1JhbmdlK3JlQ29tYm9IYWxmTWFya3NSYW5nZStyc0NvbWJvU3ltYm9sc1JhbmdlLHJzRGluZ2JhdFJhbmdlPSJcXHUyNzAwLVxcdTI3YmYiLHJzTG93ZXJSYW5nZT0iYS16XFx4ZGYtXFx4ZjZcXHhmOC1cXHhmZiIscnNNYXRoT3BSYW5nZT0iXFx4YWNcXHhiMVxceGQ3XFx4ZjciLHJzTm9uQ2hhclJhbmdlPSJcXHgwMC1cXHgyZlxceDNhLVxceDQwXFx4NWItXFx4NjBcXHg3Yi1cXHhiZiIscnNQdW5jdHVhdGlvblJhbmdlPSJcXHUyMDAwLVxcdTIwNmYiLHJzU3BhY2VSYW5nZT0iIFxcdFxceDBiXFxmXFx4YTBcXHVmZWZmXFxuXFxyXFx1MjAyOFxcdTIwMjlcXHUxNjgwXFx1MTgwZVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDNcXHUyMDA0XFx1MjAwNVxcdTIwMDZcXHUyMDA3XFx1MjAwOFxcdTIwMDlcXHUyMDBhXFx1MjAyZlxcdTIwNWZcXHUzMDAwIiwKcnNVcHBlclJhbmdlPSJBLVpcXHhjMC1cXHhkNlxceGQ4LVxceGRlIixyc1ZhclJhbmdlPSJcXHVmZTBlXFx1ZmUwZiIscnNCcmVha1JhbmdlPXJzTWF0aE9wUmFuZ2UrcnNOb25DaGFyUmFuZ2UrcnNQdW5jdHVhdGlvblJhbmdlK3JzU3BhY2VSYW5nZTt2YXIgcnNBcG9zPSJbJ1x1MjAxOV0iLHJzQXN0cmFsPSJbIityc0FzdHJhbFJhbmdlKyJdIixyc0JyZWFrPSJbIityc0JyZWFrUmFuZ2UrIl0iLHJzQ29tYm89IlsiK3JzQ29tYm9SYW5nZSsiXSIscnNEaWdpdHM9IlxcZCsiLHJzRGluZ2JhdD0iWyIrcnNEaW5nYmF0UmFuZ2UrIl0iLHJzTG93ZXI9IlsiK3JzTG93ZXJSYW5nZSsiXSIscnNNaXNjPSJbXiIrcnNBc3RyYWxSYW5nZStyc0JyZWFrUmFuZ2UrcnNEaWdpdHMrcnNEaW5nYmF0UmFuZ2UrcnNMb3dlclJhbmdlK3JzVXBwZXJSYW5nZSsiXSIscnNGaXR6PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLHJzTW9kaWZpZXI9Iig/OiIrcnNDb21ibysifCIrcnNGaXR6KyIpIixyc05vbkFzdHJhbD0KIlteIityc0FzdHJhbFJhbmdlKyJdIixyc1JlZ2lvbmFsPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9Iixyc1N1cnJQYWlyPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixyc1VwcGVyPSJbIityc1VwcGVyUmFuZ2UrIl0iLHJzWldKPSJcXHUyMDBkIjt2YXIgcnNNaXNjTG93ZXI9Iig/OiIrcnNMb3dlcisifCIrcnNNaXNjKyIpIixyc01pc2NVcHBlcj0iKD86Iityc1VwcGVyKyJ8Iityc01pc2MrIikiLHJzT3B0Q29udHJMb3dlcj0iKD86Iityc0Fwb3MrIig/OmR8bGx8bXxyZXxzfHR8dmUpKT8iLHJzT3B0Q29udHJVcHBlcj0iKD86Iityc0Fwb3MrIig/OkR8TEx8TXxSRXxTfFR8VkUpKT8iLHJlT3B0TW9kPXJzTW9kaWZpZXIrIj8iLHJzT3B0VmFyPSJbIityc1ZhclJhbmdlKyJdPyIscnNPcHRKb2luPSIoPzoiK3JzWldKKyIoPzoiK1tyc05vbkFzdHJhbCxyc1JlZ2lvbmFsLHJzU3VyclBhaXJdLmpvaW4oInwiKSsiKSIrcnNPcHRWYXIrcmVPcHRNb2QrCiIpKiIscnNPcmRMb3dlcj0iXFxkKig/OjFzdHwybmR8M3JkfCg/IVsxMjNdKVxcZHRoKSg/XHgzZFxcYnxbQS1aX10pIixyc09yZFVwcGVyPSJcXGQqKD86MVNUfDJORHwzUkR8KD8hWzEyM10pXFxkVEgpKD9ceDNkXFxifFthLXpfXSkiLHJzU2VxPXJzT3B0VmFyK3JlT3B0TW9kK3JzT3B0Sm9pbixyc0Vtb2ppPSIoPzoiK1tyc0RpbmdiYXQscnNSZWdpb25hbCxyc1N1cnJQYWlyXS5qb2luKCJ8IikrIikiK3JzU2VxLHJzU3ltYm9sPSIoPzoiK1tyc05vbkFzdHJhbCtyc0NvbWJvKyI/Iixyc0NvbWJvLHJzUmVnaW9uYWwscnNTdXJyUGFpcixyc0FzdHJhbF0uam9pbigifCIpKyIpIjt2YXIgcmVBcG9zPVJlZ0V4cChyc0Fwb3MsImciKTt2YXIgcmVDb21ib01hcms9UmVnRXhwKHJzQ29tYm8sImciKTt2YXIgcmVVbmljb2RlPVJlZ0V4cChyc0ZpdHorIig/XHgzZCIrcnNGaXR6KyIpfCIrcnNTeW1ib2wrcnNTZXEsImciKTt2YXIgcmVVbmljb2RlV29yZD1SZWdFeHAoW3JzVXBwZXIrIj8iKwpyc0xvd2VyKyIrIityc09wdENvbnRyTG93ZXIrIig/XHgzZCIrW3JzQnJlYWsscnNVcHBlciwiJCJdLmpvaW4oInwiKSsiKSIscnNNaXNjVXBwZXIrIisiK3JzT3B0Q29udHJVcHBlcisiKD9ceDNkIitbcnNCcmVhayxyc1VwcGVyK3JzTWlzY0xvd2VyLCIkIl0uam9pbigifCIpKyIpIixyc1VwcGVyKyI/Iityc01pc2NMb3dlcisiKyIrcnNPcHRDb250ckxvd2VyLHJzVXBwZXIrIisiK3JzT3B0Q29udHJVcHBlcixyc09yZFVwcGVyLHJzT3JkTG93ZXIscnNEaWdpdHMscnNFbW9qaV0uam9pbigifCIpLCJnIik7dmFyIHJlSGFzVW5pY29kZT1SZWdFeHAoIlsiK3JzWldKK3JzQXN0cmFsUmFuZ2UrcnNDb21ib1JhbmdlK3JzVmFyUmFuZ2UrIl0iKTt2YXIgcmVIYXNVbmljb2RlV29yZD0vW2Etel1bQS1aXXxbQS1aXXsyLH1bYS16XXxbMC05XVthLXpBLVpdfFthLXpBLVpdWzAtOV18W15hLXpBLVowLTkgXS87dmFyIGNvbnRleHRQcm9wcz1bIkFycmF5IiwiQnVmZmVyIiwiRGF0YVZpZXciLAoiRGF0ZSIsIkVycm9yIiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiRnVuY3Rpb24iLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIk1hcCIsIk1hdGgiLCJPYmplY3QiLCJQcm9taXNlIiwiUmVnRXhwIiwiU2V0IiwiU3RyaW5nIiwiU3ltYm9sIiwiVHlwZUVycm9yIiwiVWludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJVaW50MzJBcnJheSIsIldlYWtNYXAiLCJfIiwiY2xlYXJUaW1lb3V0IiwiaXNGaW5pdGUiLCJwYXJzZUludCIsInNldFRpbWVvdXQiXTt2YXIgdGVtcGxhdGVDb3VudGVyPS0xO3ZhciB0eXBlZEFycmF5VGFncz17fTt0eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXT10eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXT10eXBlZEFycmF5VGFnc1tpbnQ4VGFnXT10eXBlZEFycmF5VGFnc1tpbnQxNlRhZ109dHlwZWRBcnJheVRhZ3NbaW50MzJUYWddPXR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXT10eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddPQp0eXBlZEFycmF5VGFnc1t1aW50MTZUYWddPXR5cGVkQXJyYXlUYWdzW3VpbnQzMlRhZ109dHJ1ZTt0eXBlZEFycmF5VGFnc1thcmdzVGFnXT10eXBlZEFycmF5VGFnc1thcnJheVRhZ109dHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddPXR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddPXR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXT10eXBlZEFycmF5VGFnc1tkYXRlVGFnXT10eXBlZEFycmF5VGFnc1tlcnJvclRhZ109dHlwZWRBcnJheVRhZ3NbZnVuY1RhZ109dHlwZWRBcnJheVRhZ3NbbWFwVGFnXT10eXBlZEFycmF5VGFnc1tudW1iZXJUYWddPXR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ109dHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXT10eXBlZEFycmF5VGFnc1tzZXRUYWddPXR5cGVkQXJyYXlUYWdzW3N0cmluZ1RhZ109dHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ109ZmFsc2U7dmFyIGNsb25lYWJsZVRhZ3M9e307Y2xvbmVhYmxlVGFnc1thcmdzVGFnXT1jbG9uZWFibGVUYWdzW2FycmF5VGFnXT0KY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ109Y2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ109Y2xvbmVhYmxlVGFnc1tib29sVGFnXT1jbG9uZWFibGVUYWdzW2RhdGVUYWddPWNsb25lYWJsZVRhZ3NbZmxvYXQzMlRhZ109Y2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXT1jbG9uZWFibGVUYWdzW2ludDhUYWddPWNsb25lYWJsZVRhZ3NbaW50MTZUYWddPWNsb25lYWJsZVRhZ3NbaW50MzJUYWddPWNsb25lYWJsZVRhZ3NbbWFwVGFnXT1jbG9uZWFibGVUYWdzW251bWJlclRhZ109Y2xvbmVhYmxlVGFnc1tvYmplY3RUYWddPWNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXT1jbG9uZWFibGVUYWdzW3NldFRhZ109Y2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddPWNsb25lYWJsZVRhZ3Nbc3ltYm9sVGFnXT1jbG9uZWFibGVUYWdzW3VpbnQ4VGFnXT1jbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ109Y2xvbmVhYmxlVGFnc1t1aW50MTZUYWddPWNsb25lYWJsZVRhZ3NbdWludDMyVGFnXT10cnVlOwpjbG9uZWFibGVUYWdzW2Vycm9yVGFnXT1jbG9uZWFibGVUYWdzW2Z1bmNUYWddPWNsb25lYWJsZVRhZ3Nbd2Vha01hcFRhZ109ZmFsc2U7dmFyIGRlYnVycmVkTGV0dGVycz17Ilx1MDBjMCI6IkEiLCJcdTAwYzEiOiJBIiwiXHUwMGMyIjoiQSIsIlx1MDBjMyI6IkEiLCJcdTAwYzQiOiJBIiwiXHUwMGM1IjoiQSIsIlx1MDBlMCI6ImEiLCJcdTAwZTEiOiJhIiwiXHUwMGUyIjoiYSIsIlx1MDBlMyI6ImEiLCJcdTAwZTQiOiJhIiwiXHUwMGU1IjoiYSIsIlx1MDBjNyI6IkMiLCJcdTAwZTciOiJjIiwiXHUwMGQwIjoiRCIsIlx1MDBmMCI6ImQiLCJcdTAwYzgiOiJFIiwiXHUwMGM5IjoiRSIsIlx1MDBjYSI6IkUiLCJcdTAwY2IiOiJFIiwiXHUwMGU4IjoiZSIsIlx1MDBlOSI6ImUiLCJcdTAwZWEiOiJlIiwiXHUwMGViIjoiZSIsIlx1MDBjYyI6IkkiLCJcdTAwY2QiOiJJIiwiXHUwMGNlIjoiSSIsIlx1MDBjZiI6IkkiLCJcdTAwZWMiOiJpIiwiXHUwMGVkIjoiaSIsIlx1MDBlZSI6ImkiLAoiXHUwMGVmIjoiaSIsIlx1MDBkMSI6Ik4iLCJcdTAwZjEiOiJuIiwiXHUwMGQyIjoiTyIsIlx1MDBkMyI6Ik8iLCJcdTAwZDQiOiJPIiwiXHUwMGQ1IjoiTyIsIlx1MDBkNiI6Ik8iLCJcdTAwZDgiOiJPIiwiXHUwMGYyIjoibyIsIlx1MDBmMyI6Im8iLCJcdTAwZjQiOiJvIiwiXHUwMGY1IjoibyIsIlx1MDBmNiI6Im8iLCJcdTAwZjgiOiJvIiwiXHUwMGQ5IjoiVSIsIlx1MDBkYSI6IlUiLCJcdTAwZGIiOiJVIiwiXHUwMGRjIjoiVSIsIlx1MDBmOSI6InUiLCJcdTAwZmEiOiJ1IiwiXHUwMGZiIjoidSIsIlx1MDBmYyI6InUiLCJcdTAwZGQiOiJZIiwiXHUwMGZkIjoieSIsIlx1MDBmZiI6InkiLCJcdTAwYzYiOiJBZSIsIlx1MDBlNiI6ImFlIiwiXHUwMGRlIjoiVGgiLCJcdTAwZmUiOiJ0aCIsIlx1MDBkZiI6InNzIiwiXHUwMTAwIjoiQSIsIlx1MDEwMiI6IkEiLCJcdTAxMDQiOiJBIiwiXHUwMTAxIjoiYSIsIlx1MDEwMyI6ImEiLCJcdTAxMDUiOiJhIiwiXHUwMTA2IjoiQyIsIlx1MDEwOCI6IkMiLAoiXHUwMTBhIjoiQyIsIlx1MDEwYyI6IkMiLCJcdTAxMDciOiJjIiwiXHUwMTA5IjoiYyIsIlx1MDEwYiI6ImMiLCJcdTAxMGQiOiJjIiwiXHUwMTBlIjoiRCIsIlx1MDExMCI6IkQiLCJcdTAxMGYiOiJkIiwiXHUwMTExIjoiZCIsIlx1MDExMiI6IkUiLCJcdTAxMTQiOiJFIiwiXHUwMTE2IjoiRSIsIlx1MDExOCI6IkUiLCJcdTAxMWEiOiJFIiwiXHUwMTEzIjoiZSIsIlx1MDExNSI6ImUiLCJcdTAxMTciOiJlIiwiXHUwMTE5IjoiZSIsIlx1MDExYiI6ImUiLCJcdTAxMWMiOiJHIiwiXHUwMTFlIjoiRyIsIlx1MDEyMCI6IkciLCJcdTAxMjIiOiJHIiwiXHUwMTFkIjoiZyIsIlx1MDExZiI6ImciLCJcdTAxMjEiOiJnIiwiXHUwMTIzIjoiZyIsIlx1MDEyNCI6IkgiLCJcdTAxMjYiOiJIIiwiXHUwMTI1IjoiaCIsIlx1MDEyNyI6ImgiLCJcdTAxMjgiOiJJIiwiXHUwMTJhIjoiSSIsIlx1MDEyYyI6IkkiLCJcdTAxMmUiOiJJIiwiXHUwMTMwIjoiSSIsIlx1MDEyOSI6ImkiLCJcdTAxMmIiOiJpIiwKIlx1MDEyZCI6ImkiLCJcdTAxMmYiOiJpIiwiXHUwMTMxIjoiaSIsIlx1MDEzNCI6IkoiLCJcdTAxMzUiOiJqIiwiXHUwMTM2IjoiSyIsIlx1MDEzNyI6ImsiLCJcdTAxMzgiOiJrIiwiXHUwMTM5IjoiTCIsIlx1MDEzYiI6IkwiLCJcdTAxM2QiOiJMIiwiXHUwMTNmIjoiTCIsIlx1MDE0MSI6IkwiLCJcdTAxM2EiOiJsIiwiXHUwMTNjIjoibCIsIlx1MDEzZSI6ImwiLCJcdTAxNDAiOiJsIiwiXHUwMTQyIjoibCIsIlx1MDE0MyI6Ik4iLCJcdTAxNDUiOiJOIiwiXHUwMTQ3IjoiTiIsIlx1MDE0YSI6Ik4iLCJcdTAxNDQiOiJuIiwiXHUwMTQ2IjoibiIsIlx1MDE0OCI6Im4iLCJcdTAxNGIiOiJuIiwiXHUwMTRjIjoiTyIsIlx1MDE0ZSI6Ik8iLCJcdTAxNTAiOiJPIiwiXHUwMTRkIjoibyIsIlx1MDE0ZiI6Im8iLCJcdTAxNTEiOiJvIiwiXHUwMTU0IjoiUiIsIlx1MDE1NiI6IlIiLCJcdTAxNTgiOiJSIiwiXHUwMTU1IjoiciIsIlx1MDE1NyI6InIiLCJcdTAxNTkiOiJyIiwiXHUwMTVhIjoiUyIsCiJcdTAxNWMiOiJTIiwiXHUwMTVlIjoiUyIsIlx1MDE2MCI6IlMiLCJcdTAxNWIiOiJzIiwiXHUwMTVkIjoicyIsIlx1MDE1ZiI6InMiLCJcdTAxNjEiOiJzIiwiXHUwMTYyIjoiVCIsIlx1MDE2NCI6IlQiLCJcdTAxNjYiOiJUIiwiXHUwMTYzIjoidCIsIlx1MDE2NSI6InQiLCJcdTAxNjciOiJ0IiwiXHUwMTY4IjoiVSIsIlx1MDE2YSI6IlUiLCJcdTAxNmMiOiJVIiwiXHUwMTZlIjoiVSIsIlx1MDE3MCI6IlUiLCJcdTAxNzIiOiJVIiwiXHUwMTY5IjoidSIsIlx1MDE2YiI6InUiLCJcdTAxNmQiOiJ1IiwiXHUwMTZmIjoidSIsIlx1MDE3MSI6InUiLCJcdTAxNzMiOiJ1IiwiXHUwMTc0IjoiVyIsIlx1MDE3NSI6InciLCJcdTAxNzYiOiJZIiwiXHUwMTc3IjoieSIsIlx1MDE3OCI6IlkiLCJcdTAxNzkiOiJaIiwiXHUwMTdiIjoiWiIsIlx1MDE3ZCI6IloiLCJcdTAxN2EiOiJ6IiwiXHUwMTdjIjoieiIsIlx1MDE3ZSI6InoiLCJcdTAxMzIiOiJJSiIsIlx1MDEzMyI6ImlqIiwiXHUwMTUyIjoiT2UiLAoiXHUwMTUzIjoib2UiLCJcdTAxNDkiOiInbiIsIlx1MDE3ZiI6InMifTt2YXIgaHRtbEVzY2FwZXM9eyJceDI2IjoiXHgyNmFtcDsiLCJceDNjIjoiXHgyNmx0OyIsIlx4M2UiOiJceDI2Z3Q7IiwnIic6Ilx4MjZxdW90OyIsIiciOiJceDI2IzM5OyJ9O3ZhciBodG1sVW5lc2NhcGVzPXsiXHgyNmFtcDsiOiJceDI2IiwiXHgyNmx0OyI6Ilx4M2MiLCJceDI2Z3Q7IjoiXHgzZSIsIlx4MjZxdW90OyI6JyInLCJceDI2IzM5OyI6IicifTt2YXIgc3RyaW5nRXNjYXBlcz17IlxcIjoiXFwiLCInIjoiJyIsIlxuIjoibiIsIlxyIjoiciIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifTt2YXIgZnJlZVBhcnNlRmxvYXQ9cGFyc2VGbG9hdCxmcmVlUGFyc2VJbnQ9cGFyc2VJbnQ7dmFyIGZyZWVHbG9iYWw9dHlwZW9mIGdsb2JhbD09Im9iamVjdCImJmdsb2JhbCYmZ2xvYmFsLk9iamVjdD09PU9iamVjdCYmZ2xvYmFsO3ZhciBmcmVlU2VsZj10eXBlb2Ygc2VsZj09Im9iamVjdCImJgpzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZjt2YXIgcm9vdD1mcmVlR2xvYmFsfHxmcmVlU2VsZnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTt2YXIgZnJlZUV4cG9ydHM9dHlwZW9mIGV4cG9ydHM9PSJvYmplY3QiJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0czt2YXIgZnJlZU1vZHVsZT1mcmVlRXhwb3J0cyYmdHlwZW9mIG1vZHVsZT09Im9iamVjdCImJm1vZHVsZSYmIW1vZHVsZS5ub2RlVHlwZSYmbW9kdWxlO3ZhciBtb2R1bGVFeHBvcnRzPWZyZWVNb2R1bGUmJmZyZWVNb2R1bGUuZXhwb3J0cz09PWZyZWVFeHBvcnRzO3ZhciBmcmVlUHJvY2Vzcz1tb2R1bGVFeHBvcnRzJiZmcmVlR2xvYmFsLnByb2Nlc3M7dmFyIG5vZGVVdGlsPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBmcmVlUHJvY2VzcyYmZnJlZVByb2Nlc3MuYmluZGluZyYmZnJlZVByb2Nlc3MuYmluZGluZygidXRpbCIpfWNhdGNoKGUpe319KCk7dmFyIG5vZGVJc0FycmF5QnVmZmVyPW5vZGVVdGlsJiYKbm9kZVV0aWwuaXNBcnJheUJ1ZmZlcixub2RlSXNEYXRlPW5vZGVVdGlsJiZub2RlVXRpbC5pc0RhdGUsbm9kZUlzTWFwPW5vZGVVdGlsJiZub2RlVXRpbC5pc01hcCxub2RlSXNSZWdFeHA9bm9kZVV0aWwmJm5vZGVVdGlsLmlzUmVnRXhwLG5vZGVJc1NldD1ub2RlVXRpbCYmbm9kZVV0aWwuaXNTZXQsbm9kZUlzVHlwZWRBcnJheT1ub2RlVXRpbCYmbm9kZVV0aWwuaXNUeXBlZEFycmF5O2Z1bmN0aW9uIGFwcGx5KGZ1bmMsdGhpc0FyZyxhcmdzKXtzd2l0Y2goYXJncy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcpO2Nhc2UgMTpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsYXJnc1swXSk7Y2FzZSAyOnJldHVybiBmdW5jLmNhbGwodGhpc0FyZyxhcmdzWzBdLGFyZ3NbMV0pO2Nhc2UgMzpyZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsYXJnc1swXSxhcmdzWzFdLGFyZ3NbMl0pfXJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsYXJncyl9ZnVuY3Rpb24gYXJyYXlBZ2dyZWdhdG9yKGFycmF5LApzZXR0ZXIsaXRlcmF0ZWUsYWNjdW11bGF0b3Ipe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07c2V0dGVyKGFjY3VtdWxhdG9yLHZhbHVlLGl0ZXJhdGVlKHZhbHVlKSxhcnJheSl9cmV0dXJuIGFjY3VtdWxhdG9yfWZ1bmN0aW9uIGFycmF5RWFjaChhcnJheSxpdGVyYXRlZSl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aClpZihpdGVyYXRlZShhcnJheVtpbmRleF0saW5kZXgsYXJyYXkpPT09ZmFsc2UpYnJlYWs7cmV0dXJuIGFycmF5fWZ1bmN0aW9uIGFycmF5RWFjaFJpZ2h0KGFycmF5LGl0ZXJhdGVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3doaWxlKGxlbmd0aC0tKWlmKGl0ZXJhdGVlKGFycmF5W2xlbmd0aF0sbGVuZ3RoLGFycmF5KT09PWZhbHNlKWJyZWFrOwpyZXR1cm4gYXJyYXl9ZnVuY3Rpb24gYXJyYXlFdmVyeShhcnJheSxwcmVkaWNhdGUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpaWYoIXByZWRpY2F0ZShhcnJheVtpbmRleF0saW5kZXgsYXJyYXkpKXJldHVybiBmYWxzZTtyZXR1cm4gdHJ1ZX1mdW5jdGlvbiBhcnJheUZpbHRlcihhcnJheSxwcmVkaWNhdGUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGgscmVzSW5kZXg9MCxyZXN1bHQ9W107d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYocHJlZGljYXRlKHZhbHVlLGluZGV4LGFycmF5KSlyZXN1bHRbcmVzSW5kZXgrK109dmFsdWV9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LHZhbHVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3JldHVybiEhbGVuZ3RoJiZiYXNlSW5kZXhPZihhcnJheSwKdmFsdWUsMCk+LTF9ZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksdmFsdWUsY29tcGFyYXRvcil7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aClpZihjb21wYXJhdG9yKHZhbHVlLGFycmF5W2luZGV4XSkpcmV0dXJuIHRydWU7cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGFycmF5TWFwKGFycmF5LGl0ZXJhdGVlKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoLHJlc3VsdD1BcnJheShsZW5ndGgpO3doaWxlKCsraW5kZXg8bGVuZ3RoKXJlc3VsdFtpbmRleF09aXRlcmF0ZWUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSx2YWx1ZXMpe3ZhciBpbmRleD0tMSxsZW5ndGg9dmFsdWVzLmxlbmd0aCxvZmZzZXQ9YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKWFycmF5W29mZnNldCtpbmRleF09CnZhbHVlc1tpbmRleF07cmV0dXJuIGFycmF5fWZ1bmN0aW9uIGFycmF5UmVkdWNlKGFycmF5LGl0ZXJhdGVlLGFjY3VtdWxhdG9yLGluaXRBY2N1bSl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZihpbml0QWNjdW0mJmxlbmd0aClhY2N1bXVsYXRvcj1hcnJheVsrK2luZGV4XTt3aGlsZSgrK2luZGV4PGxlbmd0aClhY2N1bXVsYXRvcj1pdGVyYXRlZShhY2N1bXVsYXRvcixhcnJheVtpbmRleF0saW5kZXgsYXJyYXkpO3JldHVybiBhY2N1bXVsYXRvcn1mdW5jdGlvbiBhcnJheVJlZHVjZVJpZ2h0KGFycmF5LGl0ZXJhdGVlLGFjY3VtdWxhdG9yLGluaXRBY2N1bSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZihpbml0QWNjdW0mJmxlbmd0aClhY2N1bXVsYXRvcj1hcnJheVstLWxlbmd0aF07d2hpbGUobGVuZ3RoLS0pYWNjdW11bGF0b3I9aXRlcmF0ZWUoYWNjdW11bGF0b3IsYXJyYXlbbGVuZ3RoXSxsZW5ndGgsYXJyYXkpOwpyZXR1cm4gYWNjdW11bGF0b3J9ZnVuY3Rpb24gYXJyYXlTb21lKGFycmF5LHByZWRpY2F0ZSl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aClpZihwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KSlyZXR1cm4gdHJ1ZTtyZXR1cm4gZmFsc2V9dmFyIGFzY2lpU2l6ZT1iYXNlUHJvcGVydHkoImxlbmd0aCIpO2Z1bmN0aW9uIGFzY2lpVG9BcnJheShzdHJpbmcpe3JldHVybiBzdHJpbmcuc3BsaXQoIiIpfWZ1bmN0aW9uIGFzY2lpV29yZHMoc3RyaW5nKXtyZXR1cm4gc3RyaW5nLm1hdGNoKHJlQXNjaWlXb3JkKXx8W119ZnVuY3Rpb24gYmFzZUZpbmRLZXkoY29sbGVjdGlvbixwcmVkaWNhdGUsZWFjaEZ1bmMpe3ZhciByZXN1bHQ7ZWFjaEZ1bmMoY29sbGVjdGlvbixmdW5jdGlvbih2YWx1ZSxrZXksY29sbGVjdGlvbil7aWYocHJlZGljYXRlKHZhbHVlLGtleSxjb2xsZWN0aW9uKSl7cmVzdWx0PWtleTsKcmV0dXJuIGZhbHNlfX0pO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSxwcmVkaWNhdGUsZnJvbUluZGV4LGZyb21SaWdodCl7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGgsaW5kZXg9ZnJvbUluZGV4Kyhmcm9tUmlnaHQ/MTotMSk7d2hpbGUoZnJvbVJpZ2h0P2luZGV4LS06KytpbmRleDxsZW5ndGgpaWYocHJlZGljYXRlKGFycmF5W2luZGV4XSxpbmRleCxhcnJheSkpcmV0dXJuIGluZGV4O3JldHVybi0xfWZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7cmV0dXJuIHZhbHVlPT09dmFsdWU/c3RyaWN0SW5kZXhPZihhcnJheSx2YWx1ZSxmcm9tSW5kZXgpOmJhc2VGaW5kSW5kZXgoYXJyYXksYmFzZUlzTmFOLGZyb21JbmRleCl9ZnVuY3Rpb24gYmFzZUluZGV4T2ZXaXRoKGFycmF5LHZhbHVlLGZyb21JbmRleCxjb21wYXJhdG9yKXt2YXIgaW5kZXg9ZnJvbUluZGV4LTEsbGVuZ3RoPWFycmF5Lmxlbmd0aDt3aGlsZSgrK2luZGV4PApsZW5ndGgpaWYoY29tcGFyYXRvcihhcnJheVtpbmRleF0sdmFsdWUpKXJldHVybiBpbmRleDtyZXR1cm4tMX1mdW5jdGlvbiBiYXNlSXNOYU4odmFsdWUpe3JldHVybiB2YWx1ZSE9PXZhbHVlfWZ1bmN0aW9uIGJhc2VNZWFuKGFycmF5LGl0ZXJhdGVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3JldHVybiBsZW5ndGg/YmFzZVN1bShhcnJheSxpdGVyYXRlZSkvbGVuZ3RoOk5BTn1mdW5jdGlvbiBiYXNlUHJvcGVydHkoa2V5KXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gb2JqZWN0PT1udWxsP3VuZGVmaW5lZDpvYmplY3Rba2V5XX19ZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KXtyZXR1cm4gZnVuY3Rpb24oa2V5KXtyZXR1cm4gb2JqZWN0PT1udWxsP3VuZGVmaW5lZDpvYmplY3Rba2V5XX19ZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLGl0ZXJhdGVlLGFjY3VtdWxhdG9yLGluaXRBY2N1bSxlYWNoRnVuYyl7ZWFjaEZ1bmMoY29sbGVjdGlvbiwKZnVuY3Rpb24odmFsdWUsaW5kZXgsY29sbGVjdGlvbil7YWNjdW11bGF0b3I9aW5pdEFjY3VtPyhpbml0QWNjdW09ZmFsc2UsdmFsdWUpOml0ZXJhdGVlKGFjY3VtdWxhdG9yLHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pfSk7cmV0dXJuIGFjY3VtdWxhdG9yfWZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksY29tcGFyZXIpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoO2FycmF5LnNvcnQoY29tcGFyZXIpO3doaWxlKGxlbmd0aC0tKWFycmF5W2xlbmd0aF09YXJyYXlbbGVuZ3RoXS52YWx1ZTtyZXR1cm4gYXJyYXl9ZnVuY3Rpb24gYmFzZVN1bShhcnJheSxpdGVyYXRlZSl7dmFyIHJlc3VsdCxpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgY3VycmVudD1pdGVyYXRlZShhcnJheVtpbmRleF0pO2lmKGN1cnJlbnQhPT11bmRlZmluZWQpcmVzdWx0PXJlc3VsdD09PXVuZGVmaW5lZD9jdXJyZW50OnJlc3VsdCtjdXJyZW50fXJldHVybiByZXN1bHR9CmZ1bmN0aW9uIGJhc2VUaW1lcyhuLGl0ZXJhdGVlKXt2YXIgaW5kZXg9LTEscmVzdWx0PUFycmF5KG4pO3doaWxlKCsraW5kZXg8bilyZXN1bHRbaW5kZXhdPWl0ZXJhdGVlKGluZGV4KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGJhc2VUb1BhaXJzKG9iamVjdCxwcm9wcyl7cmV0dXJuIGFycmF5TWFwKHByb3BzLGZ1bmN0aW9uKGtleSl7cmV0dXJuW2tleSxvYmplY3Rba2V5XV19KX1mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYyl7cmV0dXJuIGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gZnVuYyh2YWx1ZSl9fWZ1bmN0aW9uIGJhc2VWYWx1ZXMob2JqZWN0LHByb3BzKXtyZXR1cm4gYXJyYXlNYXAocHJvcHMsZnVuY3Rpb24oa2V5KXtyZXR1cm4gb2JqZWN0W2tleV19KX1mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSxrZXkpe3JldHVybiBjYWNoZS5oYXMoa2V5KX1mdW5jdGlvbiBjaGFyc1N0YXJ0SW5kZXgoc3RyU3ltYm9scyxjaHJTeW1ib2xzKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXN0clN5bWJvbHMubGVuZ3RoOwp3aGlsZSgrK2luZGV4PGxlbmd0aCYmYmFzZUluZGV4T2YoY2hyU3ltYm9scyxzdHJTeW1ib2xzW2luZGV4XSwwKT4tMSk7cmV0dXJuIGluZGV4fWZ1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scyxjaHJTeW1ib2xzKXt2YXIgaW5kZXg9c3RyU3ltYm9scy5sZW5ndGg7d2hpbGUoaW5kZXgtLSYmYmFzZUluZGV4T2YoY2hyU3ltYm9scyxzdHJTeW1ib2xzW2luZGV4XSwwKT4tMSk7cmV0dXJuIGluZGV4fWZ1bmN0aW9uIGNvdW50SG9sZGVycyhhcnJheSxwbGFjZWhvbGRlcil7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGgscmVzdWx0PTA7d2hpbGUobGVuZ3RoLS0paWYoYXJyYXlbbGVuZ3RoXT09PXBsYWNlaG9sZGVyKSsrcmVzdWx0O3JldHVybiByZXN1bHR9dmFyIGRlYnVyckxldHRlcj1iYXNlUHJvcGVydHlPZihkZWJ1cnJlZExldHRlcnMpO3ZhciBlc2NhcGVIdG1sQ2hhcj1iYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7ZnVuY3Rpb24gZXNjYXBlU3RyaW5nQ2hhcihjaHIpe3JldHVybiJcXCIrCnN0cmluZ0VzY2FwZXNbY2hyXX1mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3Qsa2V5KXtyZXR1cm4gb2JqZWN0PT1udWxsP3VuZGVmaW5lZDpvYmplY3Rba2V5XX1mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZyl7cmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyl9ZnVuY3Rpb24gaGFzVW5pY29kZVdvcmQoc3RyaW5nKXtyZXR1cm4gcmVIYXNVbmljb2RlV29yZC50ZXN0KHN0cmluZyl9ZnVuY3Rpb24gaXRlcmF0b3JUb0FycmF5KGl0ZXJhdG9yKXt2YXIgZGF0YSxyZXN1bHQ9W107d2hpbGUoIShkYXRhPWl0ZXJhdG9yLm5leHQoKSkuZG9uZSlyZXN1bHQucHVzaChkYXRhLnZhbHVlKTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKXt2YXIgaW5kZXg9LTEscmVzdWx0PUFycmF5KG1hcC5zaXplKTttYXAuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSxrZXkpe3Jlc3VsdFsrK2luZGV4XT1ba2V5LHZhbHVlXX0pO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gb3ZlckFyZyhmdW5jLAp0cmFuc2Zvcm0pe3JldHVybiBmdW5jdGlvbihhcmcpe3JldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKX19ZnVuY3Rpb24gcmVwbGFjZUhvbGRlcnMoYXJyYXkscGxhY2Vob2xkZXIpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoLHJlc0luZGV4PTAscmVzdWx0PVtdO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9YXJyYXlbaW5kZXhdO2lmKHZhbHVlPT09cGxhY2Vob2xkZXJ8fHZhbHVlPT09UExBQ0VIT0xERVIpe2FycmF5W2luZGV4XT1QTEFDRUhPTERFUjtyZXN1bHRbcmVzSW5kZXgrK109aW5kZXh9fXJldHVybiByZXN1bHR9ZnVuY3Rpb24gc2FmZUdldChvYmplY3Qsa2V5KXtyZXR1cm4ga2V5PT0iX19wcm90b19fIj91bmRlZmluZWQ6b2JqZWN0W2tleV19ZnVuY3Rpb24gc2V0VG9BcnJheShzZXQpe3ZhciBpbmRleD0tMSxyZXN1bHQ9QXJyYXkoc2V0LnNpemUpO3NldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtyZXN1bHRbKytpbmRleF09dmFsdWV9KTsKcmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBzZXRUb1BhaXJzKHNldCl7dmFyIGluZGV4PS0xLHJlc3VsdD1BcnJheShzZXQuc2l6ZSk7c2V0LmZvckVhY2goZnVuY3Rpb24odmFsdWUpe3Jlc3VsdFsrK2luZGV4XT1bdmFsdWUsdmFsdWVdfSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7dmFyIGluZGV4PWZyb21JbmRleC0xLGxlbmd0aD1hcnJheS5sZW5ndGg7d2hpbGUoKytpbmRleDxsZW5ndGgpaWYoYXJyYXlbaW5kZXhdPT09dmFsdWUpcmV0dXJuIGluZGV4O3JldHVybi0xfWZ1bmN0aW9uIHN0cmljdExhc3RJbmRleE9mKGFycmF5LHZhbHVlLGZyb21JbmRleCl7dmFyIGluZGV4PWZyb21JbmRleCsxO3doaWxlKGluZGV4LS0paWYoYXJyYXlbaW5kZXhdPT09dmFsdWUpcmV0dXJuIGluZGV4O3JldHVybiBpbmRleH1mdW5jdGlvbiBzdHJpbmdTaXplKHN0cmluZyl7cmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKT91bmljb2RlU2l6ZShzdHJpbmcpOgphc2NpaVNpemUoc3RyaW5nKX1mdW5jdGlvbiBzdHJpbmdUb0FycmF5KHN0cmluZyl7cmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKT91bmljb2RlVG9BcnJheShzdHJpbmcpOmFzY2lpVG9BcnJheShzdHJpbmcpfXZhciB1bmVzY2FwZUh0bWxDaGFyPWJhc2VQcm9wZXJ0eU9mKGh0bWxVbmVzY2FwZXMpO2Z1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZyl7dmFyIHJlc3VsdD1yZVVuaWNvZGUubGFzdEluZGV4PTA7d2hpbGUocmVVbmljb2RlLnRlc3Qoc3RyaW5nKSkrK3Jlc3VsdDtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHVuaWNvZGVUb0FycmF5KHN0cmluZyl7cmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpfHxbXX1mdW5jdGlvbiB1bmljb2RlV29yZHMoc3RyaW5nKXtyZXR1cm4gc3RyaW5nLm1hdGNoKHJlVW5pY29kZVdvcmQpfHxbXX12YXIgcnVuSW5Db250ZXh0PWZ1bmN0aW9uIHJ1bkluQ29udGV4dChjb250ZXh0KXtjb250ZXh0PWNvbnRleHQ9PW51bGw/cm9vdDpfLmRlZmF1bHRzKHJvb3QuT2JqZWN0KCksCmNvbnRleHQsXy5waWNrKHJvb3QsY29udGV4dFByb3BzKSk7dmFyIEFycmF5PWNvbnRleHQuQXJyYXksRGF0ZT1jb250ZXh0LkRhdGUsRXJyb3I9Y29udGV4dC5FcnJvcixGdW5jdGlvbj1jb250ZXh0LkZ1bmN0aW9uLE1hdGg9Y29udGV4dC5NYXRoLE9iamVjdD1jb250ZXh0Lk9iamVjdCxSZWdFeHA9Y29udGV4dC5SZWdFeHAsU3RyaW5nPWNvbnRleHQuU3RyaW5nLFR5cGVFcnJvcj1jb250ZXh0LlR5cGVFcnJvcjt2YXIgYXJyYXlQcm90bz1BcnJheS5wcm90b3R5cGUsZnVuY1Byb3RvPUZ1bmN0aW9uLnByb3RvdHlwZSxvYmplY3RQcm90bz1PYmplY3QucHJvdG90eXBlO3ZhciBjb3JlSnNEYXRhPWNvbnRleHRbIl9fY29yZS1qc19zaGFyZWRfXyJdO3ZhciBmdW5jVG9TdHJpbmc9ZnVuY1Byb3RvLnRvU3RyaW5nO3ZhciBoYXNPd25Qcm9wZXJ0eT1vYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTt2YXIgaWRDb3VudGVyPTA7dmFyIG1hc2tTcmNLZXk9ZnVuY3Rpb24oKXt2YXIgdWlkPQovW14uXSskLy5leGVjKGNvcmVKc0RhdGEmJmNvcmVKc0RhdGEua2V5cyYmY29yZUpzRGF0YS5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIHVpZD8iU3ltYm9sKHNyYylfMS4iK3VpZDoiIn0oKTt2YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmc9b2JqZWN0UHJvdG8udG9TdHJpbmc7dmFyIG9iamVjdEN0b3JTdHJpbmc9ZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTt2YXIgb2xkRGFzaD1yb290Ll87dmFyIHJlSXNOYXRpdmU9UmVnRXhwKCJeIitmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsIlxcJFx4MjYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dmFyIEJ1ZmZlcj1tb2R1bGVFeHBvcnRzP2NvbnRleHQuQnVmZmVyOnVuZGVmaW5lZCxTeW1ib2w9Y29udGV4dC5TeW1ib2wsVWludDhBcnJheT1jb250ZXh0LlVpbnQ4QXJyYXksYWxsb2NVbnNhZmU9CkJ1ZmZlcj9CdWZmZXIuYWxsb2NVbnNhZmU6dW5kZWZpbmVkLGdldFByb3RvdHlwZT1vdmVyQXJnKE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpLG9iamVjdENyZWF0ZT1PYmplY3QuY3JlYXRlLHByb3BlcnR5SXNFbnVtZXJhYmxlPW9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlLHNwbGljZT1hcnJheVByb3RvLnNwbGljZSxzcHJlYWRhYmxlU3ltYm9sPVN5bWJvbD9TeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlOnVuZGVmaW5lZCxzeW1JdGVyYXRvcj1TeW1ib2w/U3ltYm9sLml0ZXJhdG9yOnVuZGVmaW5lZCxzeW1Ub1N0cmluZ1RhZz1TeW1ib2w/U3ltYm9sLnRvU3RyaW5nVGFnOnVuZGVmaW5lZDt2YXIgZGVmaW5lUHJvcGVydHk9ZnVuY3Rpb24oKXt0cnl7dmFyIGZ1bmM9Z2V0TmF0aXZlKE9iamVjdCwiZGVmaW5lUHJvcGVydHkiKTtmdW5jKHt9LCIiLHt9KTtyZXR1cm4gZnVuY31jYXRjaChlKXt9fSgpO3ZhciBjdHhDbGVhclRpbWVvdXQ9Y29udGV4dC5jbGVhclRpbWVvdXQhPT0Kcm9vdC5jbGVhclRpbWVvdXQmJmNvbnRleHQuY2xlYXJUaW1lb3V0LGN0eE5vdz1EYXRlJiZEYXRlLm5vdyE9PXJvb3QuRGF0ZS5ub3cmJkRhdGUubm93LGN0eFNldFRpbWVvdXQ9Y29udGV4dC5zZXRUaW1lb3V0IT09cm9vdC5zZXRUaW1lb3V0JiZjb250ZXh0LnNldFRpbWVvdXQ7dmFyIG5hdGl2ZUNlaWw9TWF0aC5jZWlsLG5hdGl2ZUZsb29yPU1hdGguZmxvb3IsbmF0aXZlR2V0U3ltYm9scz1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLG5hdGl2ZUlzQnVmZmVyPUJ1ZmZlcj9CdWZmZXIuaXNCdWZmZXI6dW5kZWZpbmVkLG5hdGl2ZUlzRmluaXRlPWNvbnRleHQuaXNGaW5pdGUsbmF0aXZlSm9pbj1hcnJheVByb3RvLmpvaW4sbmF0aXZlS2V5cz1vdmVyQXJnKE9iamVjdC5rZXlzLE9iamVjdCksbmF0aXZlTWF4PU1hdGgubWF4LG5hdGl2ZU1pbj1NYXRoLm1pbixuYXRpdmVOb3c9RGF0ZS5ub3csbmF0aXZlUGFyc2VJbnQ9Y29udGV4dC5wYXJzZUludCxuYXRpdmVSYW5kb209Ck1hdGgucmFuZG9tLG5hdGl2ZVJldmVyc2U9YXJyYXlQcm90by5yZXZlcnNlO3ZhciBEYXRhVmlldz1nZXROYXRpdmUoY29udGV4dCwiRGF0YVZpZXciKSxNYXA9Z2V0TmF0aXZlKGNvbnRleHQsIk1hcCIpLFByb21pc2U9Z2V0TmF0aXZlKGNvbnRleHQsIlByb21pc2UiKSxTZXQ9Z2V0TmF0aXZlKGNvbnRleHQsIlNldCIpLFdlYWtNYXA9Z2V0TmF0aXZlKGNvbnRleHQsIldlYWtNYXAiKSxuYXRpdmVDcmVhdGU9Z2V0TmF0aXZlKE9iamVjdCwiY3JlYXRlIik7dmFyIG1ldGFNYXA9V2Vha01hcCYmbmV3IFdlYWtNYXA7dmFyIHJlYWxOYW1lcz17fTt2YXIgZGF0YVZpZXdDdG9yU3RyaW5nPXRvU291cmNlKERhdGFWaWV3KSxtYXBDdG9yU3RyaW5nPXRvU291cmNlKE1hcCkscHJvbWlzZUN0b3JTdHJpbmc9dG9Tb3VyY2UoUHJvbWlzZSksc2V0Q3RvclN0cmluZz10b1NvdXJjZShTZXQpLHdlYWtNYXBDdG9yU3RyaW5nPXRvU291cmNlKFdlYWtNYXApO3ZhciBzeW1ib2xQcm90bz1TeW1ib2w/ClN5bWJvbC5wcm90b3R5cGU6dW5kZWZpbmVkLHN5bWJvbFZhbHVlT2Y9c3ltYm9sUHJvdG8/c3ltYm9sUHJvdG8udmFsdWVPZjp1bmRlZmluZWQsc3ltYm9sVG9TdHJpbmc9c3ltYm9sUHJvdG8/c3ltYm9sUHJvdG8udG9TdHJpbmc6dW5kZWZpbmVkO2Z1bmN0aW9uIGxvZGFzaCh2YWx1ZSl7aWYoaXNPYmplY3RMaWtlKHZhbHVlKSYmIWlzQXJyYXkodmFsdWUpJiYhKHZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIpKXtpZih2YWx1ZSBpbnN0YW5jZW9mIExvZGFzaFdyYXBwZXIpcmV0dXJuIHZhbHVlO2lmKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIl9fd3JhcHBlZF9fIikpcmV0dXJuIHdyYXBwZXJDbG9uZSh2YWx1ZSl9cmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHZhbHVlKX12YXIgYmFzZUNyZWF0ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIG9iamVjdCgpe31yZXR1cm4gZnVuY3Rpb24ocHJvdG8pe2lmKCFpc09iamVjdChwcm90bykpcmV0dXJue307aWYob2JqZWN0Q3JlYXRlKXJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pOwpvYmplY3QucHJvdG90eXBlPXByb3RvO3ZhciByZXN1bHQ9bmV3IG9iamVjdDtvYmplY3QucHJvdG90eXBlPXVuZGVmaW5lZDtyZXR1cm4gcmVzdWx0fX0oKTtmdW5jdGlvbiBiYXNlTG9kYXNoKCl7fWZ1bmN0aW9uIExvZGFzaFdyYXBwZXIodmFsdWUsY2hhaW5BbGwpe3RoaXMuX193cmFwcGVkX189dmFsdWU7dGhpcy5fX2FjdGlvbnNfXz1bXTt0aGlzLl9fY2hhaW5fXz0hIWNoYWluQWxsO3RoaXMuX19pbmRleF9fPTA7dGhpcy5fX3ZhbHVlc19fPXVuZGVmaW5lZH1sb2Rhc2gudGVtcGxhdGVTZXR0aW5ncz17ImVzY2FwZSI6cmVFc2NhcGUsImV2YWx1YXRlIjpyZUV2YWx1YXRlLCJpbnRlcnBvbGF0ZSI6cmVJbnRlcnBvbGF0ZSwidmFyaWFibGUiOiIiLCJpbXBvcnRzIjp7Il8iOmxvZGFzaH19O2xvZGFzaC5wcm90b3R5cGU9YmFzZUxvZGFzaC5wcm90b3R5cGU7bG9kYXNoLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1sb2Rhc2g7TG9kYXNoV3JhcHBlci5wcm90b3R5cGU9YmFzZUNyZWF0ZShiYXNlTG9kYXNoLnByb3RvdHlwZSk7CkxvZGFzaFdyYXBwZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPUxvZGFzaFdyYXBwZXI7ZnVuY3Rpb24gTGF6eVdyYXBwZXIodmFsdWUpe3RoaXMuX193cmFwcGVkX189dmFsdWU7dGhpcy5fX2FjdGlvbnNfXz1bXTt0aGlzLl9fZGlyX189MTt0aGlzLl9fZmlsdGVyZWRfXz1mYWxzZTt0aGlzLl9faXRlcmF0ZWVzX189W107dGhpcy5fX3Rha2VDb3VudF9fPU1BWF9BUlJBWV9MRU5HVEg7dGhpcy5fX3ZpZXdzX189W119ZnVuY3Rpb24gbGF6eUNsb25lKCl7dmFyIHJlc3VsdD1uZXcgTGF6eVdyYXBwZXIodGhpcy5fX3dyYXBwZWRfXyk7cmVzdWx0Ll9fYWN0aW9uc19fPWNvcHlBcnJheSh0aGlzLl9fYWN0aW9uc19fKTtyZXN1bHQuX19kaXJfXz10aGlzLl9fZGlyX187cmVzdWx0Ll9fZmlsdGVyZWRfXz10aGlzLl9fZmlsdGVyZWRfXztyZXN1bHQuX19pdGVyYXRlZXNfXz1jb3B5QXJyYXkodGhpcy5fX2l0ZXJhdGVlc19fKTtyZXN1bHQuX190YWtlQ291bnRfXz10aGlzLl9fdGFrZUNvdW50X187CnJlc3VsdC5fX3ZpZXdzX189Y29weUFycmF5KHRoaXMuX192aWV3c19fKTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGxhenlSZXZlcnNlKCl7aWYodGhpcy5fX2ZpbHRlcmVkX18pe3ZhciByZXN1bHQ9bmV3IExhenlXcmFwcGVyKHRoaXMpO3Jlc3VsdC5fX2Rpcl9fPS0xO3Jlc3VsdC5fX2ZpbHRlcmVkX189dHJ1ZX1lbHNle3Jlc3VsdD10aGlzLmNsb25lKCk7cmVzdWx0Ll9fZGlyX18qPS0xfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gbGF6eVZhbHVlKCl7dmFyIGFycmF5PXRoaXMuX193cmFwcGVkX18udmFsdWUoKSxkaXI9dGhpcy5fX2Rpcl9fLGlzQXJyPWlzQXJyYXkoYXJyYXkpLGlzUmlnaHQ9ZGlyPDAsYXJyTGVuZ3RoPWlzQXJyP2FycmF5Lmxlbmd0aDowLHZpZXc9Z2V0VmlldygwLGFyckxlbmd0aCx0aGlzLl9fdmlld3NfXyksc3RhcnQ9dmlldy5zdGFydCxlbmQ9dmlldy5lbmQsbGVuZ3RoPWVuZC1zdGFydCxpbmRleD1pc1JpZ2h0P2VuZDpzdGFydC0xLGl0ZXJhdGVlcz10aGlzLl9faXRlcmF0ZWVzX18sCml0ZXJMZW5ndGg9aXRlcmF0ZWVzLmxlbmd0aCxyZXNJbmRleD0wLHRha2VDb3VudD1uYXRpdmVNaW4obGVuZ3RoLHRoaXMuX190YWtlQ291bnRfXyk7aWYoIWlzQXJyfHwhaXNSaWdodCYmYXJyTGVuZ3RoPT1sZW5ndGgmJnRha2VDb3VudD09bGVuZ3RoKXJldHVybiBiYXNlV3JhcHBlclZhbHVlKGFycmF5LHRoaXMuX19hY3Rpb25zX18pO3ZhciByZXN1bHQ9W107b3V0ZXI6d2hpbGUobGVuZ3RoLS0mJnJlc0luZGV4PHRha2VDb3VudCl7aW5kZXgrPWRpcjt2YXIgaXRlckluZGV4PS0xLHZhbHVlPWFycmF5W2luZGV4XTt3aGlsZSgrK2l0ZXJJbmRleDxpdGVyTGVuZ3RoKXt2YXIgZGF0YT1pdGVyYXRlZXNbaXRlckluZGV4XSxpdGVyYXRlZT1kYXRhLml0ZXJhdGVlLHR5cGU9ZGF0YS50eXBlLGNvbXB1dGVkPWl0ZXJhdGVlKHZhbHVlKTtpZih0eXBlPT1MQVpZX01BUF9GTEFHKXZhbHVlPWNvbXB1dGVkO2Vsc2UgaWYoIWNvbXB1dGVkKWlmKHR5cGU9PUxBWllfRklMVEVSX0ZMQUcpY29udGludWUgb3V0ZXI7CmVsc2UgYnJlYWsgb3V0ZXJ9cmVzdWx0W3Jlc0luZGV4KytdPXZhbHVlfXJldHVybiByZXN1bHR9TGF6eVdyYXBwZXIucHJvdG90eXBlPWJhc2VDcmVhdGUoYmFzZUxvZGFzaC5wcm90b3R5cGUpO0xhenlXcmFwcGVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MYXp5V3JhcHBlcjtmdW5jdGlvbiBIYXNoKGVudHJpZXMpe3ZhciBpbmRleD0tMSxsZW5ndGg9ZW50cmllcz09bnVsbD8wOmVudHJpZXMubGVuZ3RoO3RoaXMuY2xlYXIoKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIGVudHJ5PWVudHJpZXNbaW5kZXhdO3RoaXMuc2V0KGVudHJ5WzBdLGVudHJ5WzFdKX19ZnVuY3Rpb24gaGFzaENsZWFyKCl7dGhpcy5fX2RhdGFfXz1uYXRpdmVDcmVhdGU/bmF0aXZlQ3JlYXRlKG51bGwpOnt9O3RoaXMuc2l6ZT0wfWZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KXt2YXIgcmVzdWx0PXRoaXMuaGFzKGtleSkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07dGhpcy5zaXplLT1yZXN1bHQ/MTowOwpyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGhhc2hHZXQoa2V5KXt2YXIgZGF0YT10aGlzLl9fZGF0YV9fO2lmKG5hdGl2ZUNyZWF0ZSl7dmFyIHJlc3VsdD1kYXRhW2tleV07cmV0dXJuIHJlc3VsdD09PUhBU0hfVU5ERUZJTkVEP3VuZGVmaW5lZDpyZXN1bHR9cmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSxrZXkpP2RhdGFba2V5XTp1bmRlZmluZWR9ZnVuY3Rpb24gaGFzaEhhcyhrZXkpe3ZhciBkYXRhPXRoaXMuX19kYXRhX187cmV0dXJuIG5hdGl2ZUNyZWF0ZT9kYXRhW2tleV0hPT11bmRlZmluZWQ6aGFzT3duUHJvcGVydHkuY2FsbChkYXRhLGtleSl9ZnVuY3Rpb24gaGFzaFNldChrZXksdmFsdWUpe3ZhciBkYXRhPXRoaXMuX19kYXRhX187dGhpcy5zaXplKz10aGlzLmhhcyhrZXkpPzA6MTtkYXRhW2tleV09bmF0aXZlQ3JlYXRlJiZ2YWx1ZT09PXVuZGVmaW5lZD9IQVNIX1VOREVGSU5FRDp2YWx1ZTtyZXR1cm4gdGhpc31IYXNoLnByb3RvdHlwZS5jbGVhcj1oYXNoQ2xlYXI7Ckhhc2gucHJvdG90eXBlWyJkZWxldGUiXT1oYXNoRGVsZXRlO0hhc2gucHJvdG90eXBlLmdldD1oYXNoR2V0O0hhc2gucHJvdG90eXBlLmhhcz1oYXNoSGFzO0hhc2gucHJvdG90eXBlLnNldD1oYXNoU2V0O2Z1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWVudHJpZXM9PW51bGw/MDplbnRyaWVzLmxlbmd0aDt0aGlzLmNsZWFyKCk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBlbnRyeT1lbnRyaWVzW2luZGV4XTt0aGlzLnNldChlbnRyeVswXSxlbnRyeVsxXSl9fWZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCl7dGhpcy5fX2RhdGFfXz1bXTt0aGlzLnNpemU9MH1mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KXt2YXIgZGF0YT10aGlzLl9fZGF0YV9fLGluZGV4PWFzc29jSW5kZXhPZihkYXRhLGtleSk7aWYoaW5kZXg8MClyZXR1cm4gZmFsc2U7dmFyIGxhc3RJbmRleD1kYXRhLmxlbmd0aC0xO2lmKGluZGV4PT1sYXN0SW5kZXgpZGF0YS5wb3AoKTsKZWxzZSBzcGxpY2UuY2FsbChkYXRhLGluZGV4LDEpOy0tdGhpcy5zaXplO3JldHVybiB0cnVlfWZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpe3ZhciBkYXRhPXRoaXMuX19kYXRhX18saW5kZXg9YXNzb2NJbmRleE9mKGRhdGEsa2V5KTtyZXR1cm4gaW5kZXg8MD91bmRlZmluZWQ6ZGF0YVtpbmRleF1bMV19ZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSl7cmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLGtleSk+LTF9ZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSx2YWx1ZSl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXyxpbmRleD1hc3NvY0luZGV4T2YoZGF0YSxrZXkpO2lmKGluZGV4PDApeysrdGhpcy5zaXplO2RhdGEucHVzaChba2V5LHZhbHVlXSl9ZWxzZSBkYXRhW2luZGV4XVsxXT12YWx1ZTtyZXR1cm4gdGhpc31MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyPWxpc3RDYWNoZUNsZWFyO0xpc3RDYWNoZS5wcm90b3R5cGVbImRlbGV0ZSJdPWxpc3RDYWNoZURlbGV0ZTtMaXN0Q2FjaGUucHJvdG90eXBlLmdldD0KbGlzdENhY2hlR2V0O0xpc3RDYWNoZS5wcm90b3R5cGUuaGFzPWxpc3RDYWNoZUhhcztMaXN0Q2FjaGUucHJvdG90eXBlLnNldD1saXN0Q2FjaGVTZXQ7ZnVuY3Rpb24gTWFwQ2FjaGUoZW50cmllcyl7dmFyIGluZGV4PS0xLGxlbmd0aD1lbnRyaWVzPT1udWxsPzA6ZW50cmllcy5sZW5ndGg7dGhpcy5jbGVhcigpO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgZW50cnk9ZW50cmllc1tpbmRleF07dGhpcy5zZXQoZW50cnlbMF0sZW50cnlbMV0pfX1mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCl7dGhpcy5zaXplPTA7dGhpcy5fX2RhdGFfXz17Imhhc2giOm5ldyBIYXNoLCJtYXAiOm5ldyAoTWFwfHxMaXN0Q2FjaGUpLCJzdHJpbmciOm5ldyBIYXNofX1mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpe3ZhciByZXN1bHQ9Z2V0TWFwRGF0YSh0aGlzLGtleSlbImRlbGV0ZSJdKGtleSk7dGhpcy5zaXplLT1yZXN1bHQ/MTowO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KXtyZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLAprZXkpLmdldChrZXkpfWZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSl7cmV0dXJuIGdldE1hcERhdGEodGhpcyxrZXkpLmhhcyhrZXkpfWZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSx2YWx1ZSl7dmFyIGRhdGE9Z2V0TWFwRGF0YSh0aGlzLGtleSksc2l6ZT1kYXRhLnNpemU7ZGF0YS5zZXQoa2V5LHZhbHVlKTt0aGlzLnNpemUrPWRhdGEuc2l6ZT09c2l6ZT8wOjE7cmV0dXJuIHRoaXN9TWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyPW1hcENhY2hlQ2xlYXI7TWFwQ2FjaGUucHJvdG90eXBlWyJkZWxldGUiXT1tYXBDYWNoZURlbGV0ZTtNYXBDYWNoZS5wcm90b3R5cGUuZ2V0PW1hcENhY2hlR2V0O01hcENhY2hlLnByb3RvdHlwZS5oYXM9bWFwQ2FjaGVIYXM7TWFwQ2FjaGUucHJvdG90eXBlLnNldD1tYXBDYWNoZVNldDtmdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpe3ZhciBpbmRleD0tMSxsZW5ndGg9dmFsdWVzPT1udWxsPzA6dmFsdWVzLmxlbmd0aDt0aGlzLl9fZGF0YV9fPW5ldyBNYXBDYWNoZTsKd2hpbGUoKytpbmRleDxsZW5ndGgpdGhpcy5hZGQodmFsdWVzW2luZGV4XSl9ZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpe3RoaXMuX19kYXRhX18uc2V0KHZhbHVlLEhBU0hfVU5ERUZJTkVEKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBzZXRDYWNoZUhhcyh2YWx1ZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKX1TZXRDYWNoZS5wcm90b3R5cGUuYWRkPVNldENhY2hlLnByb3RvdHlwZS5wdXNoPXNldENhY2hlQWRkO1NldENhY2hlLnByb3RvdHlwZS5oYXM9c2V0Q2FjaGVIYXM7ZnVuY3Rpb24gU3RhY2soZW50cmllcyl7dmFyIGRhdGE9dGhpcy5fX2RhdGFfXz1uZXcgTGlzdENhY2hlKGVudHJpZXMpO3RoaXMuc2l6ZT1kYXRhLnNpemV9ZnVuY3Rpb24gc3RhY2tDbGVhcigpe3RoaXMuX19kYXRhX189bmV3IExpc3RDYWNoZTt0aGlzLnNpemU9MH1mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpe3ZhciBkYXRhPXRoaXMuX19kYXRhX18scmVzdWx0PWRhdGFbImRlbGV0ZSJdKGtleSk7CnRoaXMuc2l6ZT1kYXRhLnNpemU7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBzdGFja0dldChrZXkpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpfWZ1bmN0aW9uIHN0YWNrSGFzKGtleSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSl9ZnVuY3Rpb24gc3RhY2tTZXQoa2V5LHZhbHVlKXt2YXIgZGF0YT10aGlzLl9fZGF0YV9fO2lmKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpe3ZhciBwYWlycz1kYXRhLl9fZGF0YV9fO2lmKCFNYXB8fHBhaXJzLmxlbmd0aDxMQVJHRV9BUlJBWV9TSVpFLTEpe3BhaXJzLnB1c2goW2tleSx2YWx1ZV0pO3RoaXMuc2l6ZT0rK2RhdGEuc2l6ZTtyZXR1cm4gdGhpc31kYXRhPXRoaXMuX19kYXRhX189bmV3IE1hcENhY2hlKHBhaXJzKX1kYXRhLnNldChrZXksdmFsdWUpO3RoaXMuc2l6ZT1kYXRhLnNpemU7cmV0dXJuIHRoaXN9U3RhY2sucHJvdG90eXBlLmNsZWFyPXN0YWNrQ2xlYXI7U3RhY2sucHJvdG90eXBlWyJkZWxldGUiXT1zdGFja0RlbGV0ZTsKU3RhY2sucHJvdG90eXBlLmdldD1zdGFja0dldDtTdGFjay5wcm90b3R5cGUuaGFzPXN0YWNrSGFzO1N0YWNrLnByb3RvdHlwZS5zZXQ9c3RhY2tTZXQ7ZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSxpbmhlcml0ZWQpe3ZhciBpc0Fycj1pc0FycmF5KHZhbHVlKSxpc0FyZz0haXNBcnImJmlzQXJndW1lbnRzKHZhbHVlKSxpc0J1ZmY9IWlzQXJyJiYhaXNBcmcmJmlzQnVmZmVyKHZhbHVlKSxpc1R5cGU9IWlzQXJyJiYhaXNBcmcmJiFpc0J1ZmYmJmlzVHlwZWRBcnJheSh2YWx1ZSksc2tpcEluZGV4ZXM9aXNBcnJ8fGlzQXJnfHxpc0J1ZmZ8fGlzVHlwZSxyZXN1bHQ9c2tpcEluZGV4ZXM/YmFzZVRpbWVzKHZhbHVlLmxlbmd0aCxTdHJpbmcpOltdLGxlbmd0aD1yZXN1bHQubGVuZ3RoO2Zvcih2YXIga2V5IGluIHZhbHVlKWlmKChpbmhlcml0ZWR8fGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsa2V5KSkmJiEoc2tpcEluZGV4ZXMmJihrZXk9PSJsZW5ndGgifHxpc0J1ZmYmJihrZXk9PQoib2Zmc2V0Inx8a2V5PT0icGFyZW50Iil8fGlzVHlwZSYmKGtleT09ImJ1ZmZlciJ8fGtleT09ImJ5dGVMZW5ndGgifHxrZXk9PSJieXRlT2Zmc2V0Iil8fGlzSW5kZXgoa2V5LGxlbmd0aCkpKSlyZXN1bHQucHVzaChrZXkpO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gYXJyYXlTYW1wbGUoYXJyYXkpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoO3JldHVybiBsZW5ndGg/YXJyYXlbYmFzZVJhbmRvbSgwLGxlbmd0aC0xKV06dW5kZWZpbmVkfWZ1bmN0aW9uIGFycmF5U2FtcGxlU2l6ZShhcnJheSxuKXtyZXR1cm4gc2h1ZmZsZVNlbGYoY29weUFycmF5KGFycmF5KSxiYXNlQ2xhbXAobiwwLGFycmF5Lmxlbmd0aCkpfWZ1bmN0aW9uIGFycmF5U2h1ZmZsZShhcnJheSl7cmV0dXJuIHNodWZmbGVTZWxmKGNvcHlBcnJheShhcnJheSkpfWZ1bmN0aW9uIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LGtleSx2YWx1ZSl7aWYodmFsdWUhPT11bmRlZmluZWQmJiFlcShvYmplY3Rba2V5XSx2YWx1ZSl8fAp2YWx1ZT09PXVuZGVmaW5lZCYmIShrZXkgaW4gb2JqZWN0KSliYXNlQXNzaWduVmFsdWUob2JqZWN0LGtleSx2YWx1ZSl9ZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LGtleSx2YWx1ZSl7dmFyIG9ialZhbHVlPW9iamVjdFtrZXldO2lmKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qsa2V5KSYmZXEob2JqVmFsdWUsdmFsdWUpKXx8dmFsdWU9PT11bmRlZmluZWQmJiEoa2V5IGluIG9iamVjdCkpYmFzZUFzc2lnblZhbHVlKG9iamVjdCxrZXksdmFsdWUpfWZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSxrZXkpe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoO3doaWxlKGxlbmd0aC0tKWlmKGVxKGFycmF5W2xlbmd0aF1bMF0sa2V5KSlyZXR1cm4gbGVuZ3RoO3JldHVybi0xfWZ1bmN0aW9uIGJhc2VBZ2dyZWdhdG9yKGNvbGxlY3Rpb24sc2V0dGVyLGl0ZXJhdGVlLGFjY3VtdWxhdG9yKXtiYXNlRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlLGtleSxjb2xsZWN0aW9uKXtzZXR0ZXIoYWNjdW11bGF0b3IsCnZhbHVlLGl0ZXJhdGVlKHZhbHVlKSxjb2xsZWN0aW9uKX0pO3JldHVybiBhY2N1bXVsYXRvcn1mdW5jdGlvbiBiYXNlQXNzaWduKG9iamVjdCxzb3VyY2Upe3JldHVybiBvYmplY3QmJmNvcHlPYmplY3Qoc291cmNlLGtleXMoc291cmNlKSxvYmplY3QpfWZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3Qsc291cmNlKXtyZXR1cm4gb2JqZWN0JiZjb3B5T2JqZWN0KHNvdXJjZSxrZXlzSW4oc291cmNlKSxvYmplY3QpfWZ1bmN0aW9uIGJhc2VBc3NpZ25WYWx1ZShvYmplY3Qsa2V5LHZhbHVlKXtpZihrZXk9PSJfX3Byb3RvX18iJiZkZWZpbmVQcm9wZXJ0eSlkZWZpbmVQcm9wZXJ0eShvYmplY3Qsa2V5LHsiY29uZmlndXJhYmxlIjp0cnVlLCJlbnVtZXJhYmxlIjp0cnVlLCJ2YWx1ZSI6dmFsdWUsIndyaXRhYmxlIjp0cnVlfSk7ZWxzZSBvYmplY3Rba2V5XT12YWx1ZX1mdW5jdGlvbiBiYXNlQXQob2JqZWN0LHBhdGhzKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXBhdGhzLmxlbmd0aCxyZXN1bHQ9CkFycmF5KGxlbmd0aCksc2tpcD1vYmplY3Q9PW51bGw7d2hpbGUoKytpbmRleDxsZW5ndGgpcmVzdWx0W2luZGV4XT1za2lwP3VuZGVmaW5lZDpnZXQob2JqZWN0LHBhdGhzW2luZGV4XSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlQ2xhbXAobnVtYmVyLGxvd2VyLHVwcGVyKXtpZihudW1iZXI9PT1udW1iZXIpe2lmKHVwcGVyIT09dW5kZWZpbmVkKW51bWJlcj1udW1iZXI8PXVwcGVyP251bWJlcjp1cHBlcjtpZihsb3dlciE9PXVuZGVmaW5lZCludW1iZXI9bnVtYmVyPj1sb3dlcj9udW1iZXI6bG93ZXJ9cmV0dXJuIG51bWJlcn1mdW5jdGlvbiBiYXNlQ2xvbmUodmFsdWUsYml0bWFzayxjdXN0b21pemVyLGtleSxvYmplY3Qsc3RhY2spe3ZhciByZXN1bHQsaXNEZWVwPWJpdG1hc2smQ0xPTkVfREVFUF9GTEFHLGlzRmxhdD1iaXRtYXNrJkNMT05FX0ZMQVRfRkxBRyxpc0Z1bGw9Yml0bWFzayZDTE9ORV9TWU1CT0xTX0ZMQUc7aWYoY3VzdG9taXplcilyZXN1bHQ9b2JqZWN0PwpjdXN0b21pemVyKHZhbHVlLGtleSxvYmplY3Qsc3RhY2spOmN1c3RvbWl6ZXIodmFsdWUpO2lmKHJlc3VsdCE9PXVuZGVmaW5lZClyZXR1cm4gcmVzdWx0O2lmKCFpc09iamVjdCh2YWx1ZSkpcmV0dXJuIHZhbHVlO3ZhciBpc0Fycj1pc0FycmF5KHZhbHVlKTtpZihpc0Fycil7cmVzdWx0PWluaXRDbG9uZUFycmF5KHZhbHVlKTtpZighaXNEZWVwKXJldHVybiBjb3B5QXJyYXkodmFsdWUscmVzdWx0KX1lbHNle3ZhciB0YWc9Z2V0VGFnKHZhbHVlKSxpc0Z1bmM9dGFnPT1mdW5jVGFnfHx0YWc9PWdlblRhZztpZihpc0J1ZmZlcih2YWx1ZSkpcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLGlzRGVlcCk7aWYodGFnPT1vYmplY3RUYWd8fHRhZz09YXJnc1RhZ3x8aXNGdW5jJiYhb2JqZWN0KXtyZXN1bHQ9aXNGbGF0fHxpc0Z1bmM/e306aW5pdENsb25lT2JqZWN0KHZhbHVlKTtpZighaXNEZWVwKXJldHVybiBpc0ZsYXQ/Y29weVN5bWJvbHNJbih2YWx1ZSxiYXNlQXNzaWduSW4ocmVzdWx0LAp2YWx1ZSkpOmNvcHlTeW1ib2xzKHZhbHVlLGJhc2VBc3NpZ24ocmVzdWx0LHZhbHVlKSl9ZWxzZXtpZighY2xvbmVhYmxlVGFnc1t0YWddKXJldHVybiBvYmplY3Q/dmFsdWU6e307cmVzdWx0PWluaXRDbG9uZUJ5VGFnKHZhbHVlLHRhZyxpc0RlZXApfX1zdGFja3x8KHN0YWNrPW5ldyBTdGFjayk7dmFyIHN0YWNrZWQ9c3RhY2suZ2V0KHZhbHVlKTtpZihzdGFja2VkKXJldHVybiBzdGFja2VkO3N0YWNrLnNldCh2YWx1ZSxyZXN1bHQpO2lmKGlzU2V0KHZhbHVlKSl7dmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSl7cmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsYml0bWFzayxjdXN0b21pemVyLHN1YlZhbHVlLHZhbHVlLHN0YWNrKSl9KTtyZXR1cm4gcmVzdWx0fWlmKGlzTWFwKHZhbHVlKSl7dmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSxrZXkpe3Jlc3VsdC5zZXQoa2V5LGJhc2VDbG9uZShzdWJWYWx1ZSxiaXRtYXNrLGN1c3RvbWl6ZXIsa2V5LHZhbHVlLApzdGFjaykpfSk7cmV0dXJuIHJlc3VsdH12YXIga2V5c0Z1bmM9aXNGdWxsP2lzRmxhdD9nZXRBbGxLZXlzSW46Z2V0QWxsS2V5czppc0ZsYXQ/a2V5c0luOmtleXM7dmFyIHByb3BzPWlzQXJyP3VuZGVmaW5lZDprZXlzRnVuYyh2YWx1ZSk7YXJyYXlFYWNoKHByb3BzfHx2YWx1ZSxmdW5jdGlvbihzdWJWYWx1ZSxrZXkpe2lmKHByb3BzKXtrZXk9c3ViVmFsdWU7c3ViVmFsdWU9dmFsdWVba2V5XX1hc3NpZ25WYWx1ZShyZXN1bHQsa2V5LGJhc2VDbG9uZShzdWJWYWx1ZSxiaXRtYXNrLGN1c3RvbWl6ZXIsa2V5LHZhbHVlLHN0YWNrKSl9KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGJhc2VDb25mb3Jtcyhzb3VyY2Upe3ZhciBwcm9wcz1rZXlzKHNvdXJjZSk7cmV0dXJuIGZ1bmN0aW9uKG9iamVjdCl7cmV0dXJuIGJhc2VDb25mb3Jtc1RvKG9iamVjdCxzb3VyY2UscHJvcHMpfX1mdW5jdGlvbiBiYXNlQ29uZm9ybXNUbyhvYmplY3Qsc291cmNlLHByb3BzKXt2YXIgbGVuZ3RoPXByb3BzLmxlbmd0aDsKaWYob2JqZWN0PT1udWxsKXJldHVybiFsZW5ndGg7b2JqZWN0PU9iamVjdChvYmplY3QpO3doaWxlKGxlbmd0aC0tKXt2YXIga2V5PXByb3BzW2xlbmd0aF0scHJlZGljYXRlPXNvdXJjZVtrZXldLHZhbHVlPW9iamVjdFtrZXldO2lmKHZhbHVlPT09dW5kZWZpbmVkJiYhKGtleSBpbiBvYmplY3QpfHwhcHJlZGljYXRlKHZhbHVlKSlyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZnVuY3Rpb24gYmFzZURlbGF5KGZ1bmMsd2FpdCxhcmdzKXtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmdW5jLmFwcGx5KHVuZGVmaW5lZCxhcmdzKX0sd2FpdCl9ZnVuY3Rpb24gYmFzZURpZmZlcmVuY2UoYXJyYXksdmFsdWVzLGl0ZXJhdGVlLGNvbXBhcmF0b3Ipe3ZhciBpbmRleD0tMSxpbmNsdWRlcz1hcnJheUluY2x1ZGVzLGlzQ29tbW9uPXRydWUsbGVuZ3RoPWFycmF5Lmxlbmd0aCwKcmVzdWx0PVtdLHZhbHVlc0xlbmd0aD12YWx1ZXMubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuIHJlc3VsdDtpZihpdGVyYXRlZSl2YWx1ZXM9YXJyYXlNYXAodmFsdWVzLGJhc2VVbmFyeShpdGVyYXRlZSkpO2lmKGNvbXBhcmF0b3Ipe2luY2x1ZGVzPWFycmF5SW5jbHVkZXNXaXRoO2lzQ29tbW9uPWZhbHNlfWVsc2UgaWYodmFsdWVzLmxlbmd0aD49TEFSR0VfQVJSQVlfU0laRSl7aW5jbHVkZXM9Y2FjaGVIYXM7aXNDb21tb249ZmFsc2U7dmFsdWVzPW5ldyBTZXRDYWNoZSh2YWx1ZXMpfW91dGVyOndoaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgdmFsdWU9YXJyYXlbaW5kZXhdLGNvbXB1dGVkPWl0ZXJhdGVlPT1udWxsP3ZhbHVlOml0ZXJhdGVlKHZhbHVlKTt2YWx1ZT1jb21wYXJhdG9yfHx2YWx1ZSE9PTA/dmFsdWU6MDtpZihpc0NvbW1vbiYmY29tcHV0ZWQ9PT1jb21wdXRlZCl7dmFyIHZhbHVlc0luZGV4PXZhbHVlc0xlbmd0aDt3aGlsZSh2YWx1ZXNJbmRleC0tKWlmKHZhbHVlc1t2YWx1ZXNJbmRleF09PT0KY29tcHV0ZWQpY29udGludWUgb3V0ZXI7cmVzdWx0LnB1c2godmFsdWUpfWVsc2UgaWYoIWluY2x1ZGVzKHZhbHVlcyxjb21wdXRlZCxjb21wYXJhdG9yKSlyZXN1bHQucHVzaCh2YWx1ZSl9cmV0dXJuIHJlc3VsdH12YXIgYmFzZUVhY2g9Y3JlYXRlQmFzZUVhY2goYmFzZUZvck93bik7dmFyIGJhc2VFYWNoUmlnaHQ9Y3JlYXRlQmFzZUVhY2goYmFzZUZvck93blJpZ2h0LHRydWUpO2Z1bmN0aW9uIGJhc2VFdmVyeShjb2xsZWN0aW9uLHByZWRpY2F0ZSl7dmFyIHJlc3VsdD10cnVlO2Jhc2VFYWNoKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUsaW5kZXgsY29sbGVjdGlvbil7cmVzdWx0PSEhcHJlZGljYXRlKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pO3JldHVybiByZXN1bHR9KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGJhc2VFeHRyZW11bShhcnJheSxpdGVyYXRlZSxjb21wYXJhdG9yKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5Lmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPQphcnJheVtpbmRleF0sY3VycmVudD1pdGVyYXRlZSh2YWx1ZSk7aWYoY3VycmVudCE9bnVsbCYmKGNvbXB1dGVkPT09dW5kZWZpbmVkP2N1cnJlbnQ9PT1jdXJyZW50JiYhaXNTeW1ib2woY3VycmVudCk6Y29tcGFyYXRvcihjdXJyZW50LGNvbXB1dGVkKSkpdmFyIGNvbXB1dGVkPWN1cnJlbnQscmVzdWx0PXZhbHVlfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZUZpbGwoYXJyYXksdmFsdWUsc3RhcnQsZW5kKXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDtzdGFydD10b0ludGVnZXIoc3RhcnQpO2lmKHN0YXJ0PDApc3RhcnQ9LXN0YXJ0Pmxlbmd0aD8wOmxlbmd0aCtzdGFydDtlbmQ9ZW5kPT09dW5kZWZpbmVkfHxlbmQ+bGVuZ3RoP2xlbmd0aDp0b0ludGVnZXIoZW5kKTtpZihlbmQ8MCllbmQrPWxlbmd0aDtlbmQ9c3RhcnQ+ZW5kPzA6dG9MZW5ndGgoZW5kKTt3aGlsZShzdGFydDxlbmQpYXJyYXlbc3RhcnQrK109dmFsdWU7cmV0dXJuIGFycmF5fWZ1bmN0aW9uIGJhc2VGaWx0ZXIoY29sbGVjdGlvbiwKcHJlZGljYXRlKXt2YXIgcmVzdWx0PVtdO2Jhc2VFYWNoKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUsaW5kZXgsY29sbGVjdGlvbil7aWYocHJlZGljYXRlKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pKXJlc3VsdC5wdXNoKHZhbHVlKX0pO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksZGVwdGgscHJlZGljYXRlLGlzU3RyaWN0LHJlc3VsdCl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheS5sZW5ndGg7cHJlZGljYXRlfHwocHJlZGljYXRlPWlzRmxhdHRlbmFibGUpO3Jlc3VsdHx8KHJlc3VsdD1bXSk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYoZGVwdGg+MCYmcHJlZGljYXRlKHZhbHVlKSlpZihkZXB0aD4xKWJhc2VGbGF0dGVuKHZhbHVlLGRlcHRoLTEscHJlZGljYXRlLGlzU3RyaWN0LHJlc3VsdCk7ZWxzZSBhcnJheVB1c2gocmVzdWx0LHZhbHVlKTtlbHNlIGlmKCFpc1N0cmljdClyZXN1bHRbcmVzdWx0Lmxlbmd0aF09CnZhbHVlfXJldHVybiByZXN1bHR9dmFyIGJhc2VGb3I9Y3JlYXRlQmFzZUZvcigpO3ZhciBiYXNlRm9yUmlnaHQ9Y3JlYXRlQmFzZUZvcih0cnVlKTtmdW5jdGlvbiBiYXNlRm9yT3duKG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdCYmYmFzZUZvcihvYmplY3QsaXRlcmF0ZWUsa2V5cyl9ZnVuY3Rpb24gYmFzZUZvck93blJpZ2h0KG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdCYmYmFzZUZvclJpZ2h0KG9iamVjdCxpdGVyYXRlZSxrZXlzKX1mdW5jdGlvbiBiYXNlRnVuY3Rpb25zKG9iamVjdCxwcm9wcyl7cmV0dXJuIGFycmF5RmlsdGVyKHByb3BzLGZ1bmN0aW9uKGtleSl7cmV0dXJuIGlzRnVuY3Rpb24ob2JqZWN0W2tleV0pfSl9ZnVuY3Rpb24gYmFzZUdldChvYmplY3QscGF0aCl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PTAsbGVuZ3RoPXBhdGgubGVuZ3RoO3doaWxlKG9iamVjdCE9bnVsbCYmaW5kZXg8bGVuZ3RoKW9iamVjdD1vYmplY3RbdG9LZXkocGF0aFtpbmRleCsrXSldOwpyZXR1cm4gaW5kZXgmJmluZGV4PT1sZW5ndGg/b2JqZWN0OnVuZGVmaW5lZH1mdW5jdGlvbiBiYXNlR2V0QWxsS2V5cyhvYmplY3Qsa2V5c0Z1bmMsc3ltYm9sc0Z1bmMpe3ZhciByZXN1bHQ9a2V5c0Z1bmMob2JqZWN0KTtyZXR1cm4gaXNBcnJheShvYmplY3QpP3Jlc3VsdDphcnJheVB1c2gocmVzdWx0LHN5bWJvbHNGdW5jKG9iamVjdCkpfWZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpe2lmKHZhbHVlPT1udWxsKXJldHVybiB2YWx1ZT09PXVuZGVmaW5lZD91bmRlZmluZWRUYWc6bnVsbFRhZztyZXR1cm4gc3ltVG9TdHJpbmdUYWcmJnN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSk/Z2V0UmF3VGFnKHZhbHVlKTpvYmplY3RUb1N0cmluZyh2YWx1ZSl9ZnVuY3Rpb24gYmFzZUd0KHZhbHVlLG90aGVyKXtyZXR1cm4gdmFsdWU+b3RoZXJ9ZnVuY3Rpb24gYmFzZUhhcyhvYmplY3Qsa2V5KXtyZXR1cm4gb2JqZWN0IT1udWxsJiZoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwKa2V5KX1mdW5jdGlvbiBiYXNlSGFzSW4ob2JqZWN0LGtleSl7cmV0dXJuIG9iamVjdCE9bnVsbCYma2V5IGluIE9iamVjdChvYmplY3QpfWZ1bmN0aW9uIGJhc2VJblJhbmdlKG51bWJlcixzdGFydCxlbmQpe3JldHVybiBudW1iZXI+PW5hdGl2ZU1pbihzdGFydCxlbmQpJiZudW1iZXI8bmF0aXZlTWF4KHN0YXJ0LGVuZCl9ZnVuY3Rpb24gYmFzZUludGVyc2VjdGlvbihhcnJheXMsaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluY2x1ZGVzPWNvbXBhcmF0b3I/YXJyYXlJbmNsdWRlc1dpdGg6YXJyYXlJbmNsdWRlcyxsZW5ndGg9YXJyYXlzWzBdLmxlbmd0aCxvdGhMZW5ndGg9YXJyYXlzLmxlbmd0aCxvdGhJbmRleD1vdGhMZW5ndGgsY2FjaGVzPUFycmF5KG90aExlbmd0aCksbWF4TGVuZ3RoPUluZmluaXR5LHJlc3VsdD1bXTt3aGlsZShvdGhJbmRleC0tKXt2YXIgYXJyYXk9YXJyYXlzW290aEluZGV4XTtpZihvdGhJbmRleCYmaXRlcmF0ZWUpYXJyYXk9YXJyYXlNYXAoYXJyYXksCmJhc2VVbmFyeShpdGVyYXRlZSkpO21heExlbmd0aD1uYXRpdmVNaW4oYXJyYXkubGVuZ3RoLG1heExlbmd0aCk7Y2FjaGVzW290aEluZGV4XT0hY29tcGFyYXRvciYmKGl0ZXJhdGVlfHxsZW5ndGg+PTEyMCYmYXJyYXkubGVuZ3RoPj0xMjApP25ldyBTZXRDYWNoZShvdGhJbmRleCYmYXJyYXkpOnVuZGVmaW5lZH1hcnJheT1hcnJheXNbMF07dmFyIGluZGV4PS0xLHNlZW49Y2FjaGVzWzBdO291dGVyOndoaWxlKCsraW5kZXg8bGVuZ3RoJiZyZXN1bHQubGVuZ3RoPG1heExlbmd0aCl7dmFyIHZhbHVlPWFycmF5W2luZGV4XSxjb21wdXRlZD1pdGVyYXRlZT9pdGVyYXRlZSh2YWx1ZSk6dmFsdWU7dmFsdWU9Y29tcGFyYXRvcnx8dmFsdWUhPT0wP3ZhbHVlOjA7aWYoIShzZWVuP2NhY2hlSGFzKHNlZW4sY29tcHV0ZWQpOmluY2x1ZGVzKHJlc3VsdCxjb21wdXRlZCxjb21wYXJhdG9yKSkpe290aEluZGV4PW90aExlbmd0aDt3aGlsZSgtLW90aEluZGV4KXt2YXIgY2FjaGU9Y2FjaGVzW290aEluZGV4XTsKaWYoIShjYWNoZT9jYWNoZUhhcyhjYWNoZSxjb21wdXRlZCk6aW5jbHVkZXMoYXJyYXlzW290aEluZGV4XSxjb21wdXRlZCxjb21wYXJhdG9yKSkpY29udGludWUgb3V0ZXJ9aWYoc2VlbilzZWVuLnB1c2goY29tcHV0ZWQpO3Jlc3VsdC5wdXNoKHZhbHVlKX19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlSW52ZXJ0ZXIob2JqZWN0LHNldHRlcixpdGVyYXRlZSxhY2N1bXVsYXRvcil7YmFzZUZvck93bihvYmplY3QsZnVuY3Rpb24odmFsdWUsa2V5LG9iamVjdCl7c2V0dGVyKGFjY3VtdWxhdG9yLGl0ZXJhdGVlKHZhbHVlKSxrZXksb2JqZWN0KX0pO3JldHVybiBhY2N1bXVsYXRvcn1mdW5jdGlvbiBiYXNlSW52b2tlKG9iamVjdCxwYXRoLGFyZ3Mpe3BhdGg9Y2FzdFBhdGgocGF0aCxvYmplY3QpO29iamVjdD1wYXJlbnQob2JqZWN0LHBhdGgpO3ZhciBmdW5jPW9iamVjdD09bnVsbD9vYmplY3Q6b2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtyZXR1cm4gZnVuYz09bnVsbD91bmRlZmluZWQ6CmFwcGx5KGZ1bmMsb2JqZWN0LGFyZ3MpfWZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJmJhc2VHZXRUYWcodmFsdWUpPT1hcmdzVGFnfWZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PWFycmF5QnVmZmVyVGFnfWZ1bmN0aW9uIGJhc2VJc0RhdGUodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09ZGF0ZVRhZ31mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSxvdGhlcixiaXRtYXNrLGN1c3RvbWl6ZXIsc3RhY2spe2lmKHZhbHVlPT09b3RoZXIpcmV0dXJuIHRydWU7aWYodmFsdWU9PW51bGx8fG90aGVyPT1udWxsfHwhaXNPYmplY3RMaWtlKHZhbHVlKSYmIWlzT2JqZWN0TGlrZShvdGhlcikpcmV0dXJuIHZhbHVlIT09dmFsdWUmJm90aGVyIT09b3RoZXI7cmV0dXJuIGJhc2VJc0VxdWFsRGVlcCh2YWx1ZSwKb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGJhc2VJc0VxdWFsLHN0YWNrKX1mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LG90aGVyLGJpdG1hc2ssY3VzdG9taXplcixlcXVhbEZ1bmMsc3RhY2spe3ZhciBvYmpJc0Fycj1pc0FycmF5KG9iamVjdCksb3RoSXNBcnI9aXNBcnJheShvdGhlciksb2JqVGFnPW9iaklzQXJyP2FycmF5VGFnOmdldFRhZyhvYmplY3QpLG90aFRhZz1vdGhJc0Fycj9hcnJheVRhZzpnZXRUYWcob3RoZXIpO29ialRhZz1vYmpUYWc9PWFyZ3NUYWc/b2JqZWN0VGFnOm9ialRhZztvdGhUYWc9b3RoVGFnPT1hcmdzVGFnP29iamVjdFRhZzpvdGhUYWc7dmFyIG9iaklzT2JqPW9ialRhZz09b2JqZWN0VGFnLG90aElzT2JqPW90aFRhZz09b2JqZWN0VGFnLGlzU2FtZVRhZz1vYmpUYWc9PW90aFRhZztpZihpc1NhbWVUYWcmJmlzQnVmZmVyKG9iamVjdCkpe2lmKCFpc0J1ZmZlcihvdGhlcikpcmV0dXJuIGZhbHNlO29iaklzQXJyPXRydWU7b2JqSXNPYmo9CmZhbHNlfWlmKGlzU2FtZVRhZyYmIW9iaklzT2JqKXtzdGFja3x8KHN0YWNrPW5ldyBTdGFjayk7cmV0dXJuIG9iaklzQXJyfHxpc1R5cGVkQXJyYXkob2JqZWN0KT9lcXVhbEFycmF5cyhvYmplY3Qsb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayk6ZXF1YWxCeVRhZyhvYmplY3Qsb3RoZXIsb2JqVGFnLGJpdG1hc2ssY3VzdG9taXplcixlcXVhbEZ1bmMsc3RhY2spfWlmKCEoYml0bWFzayZDT01QQVJFX1BBUlRJQUxfRkxBRykpe3ZhciBvYmpJc1dyYXBwZWQ9b2JqSXNPYmomJmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCJfX3dyYXBwZWRfXyIpLG90aElzV3JhcHBlZD1vdGhJc09iaiYmaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwiX193cmFwcGVkX18iKTtpZihvYmpJc1dyYXBwZWR8fG90aElzV3JhcHBlZCl7dmFyIG9ialVud3JhcHBlZD1vYmpJc1dyYXBwZWQ/b2JqZWN0LnZhbHVlKCk6b2JqZWN0LG90aFVud3JhcHBlZD1vdGhJc1dyYXBwZWQ/b3RoZXIudmFsdWUoKToKb3RoZXI7c3RhY2t8fChzdGFjaz1uZXcgU3RhY2spO3JldHVybiBlcXVhbEZ1bmMob2JqVW53cmFwcGVkLG90aFVud3JhcHBlZCxiaXRtYXNrLGN1c3RvbWl6ZXIsc3RhY2spfX1pZighaXNTYW1lVGFnKXJldHVybiBmYWxzZTtzdGFja3x8KHN0YWNrPW5ldyBTdGFjayk7cmV0dXJuIGVxdWFsT2JqZWN0cyhvYmplY3Qsb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayl9ZnVuY3Rpb24gYmFzZUlzTWFwKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmZ2V0VGFnKHZhbHVlKT09bWFwVGFnfWZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCxzb3VyY2UsbWF0Y2hEYXRhLGN1c3RvbWl6ZXIpe3ZhciBpbmRleD1tYXRjaERhdGEubGVuZ3RoLGxlbmd0aD1pbmRleCxub0N1c3RvbWl6ZXI9IWN1c3RvbWl6ZXI7aWYob2JqZWN0PT1udWxsKXJldHVybiFsZW5ndGg7b2JqZWN0PU9iamVjdChvYmplY3QpO3doaWxlKGluZGV4LS0pe3ZhciBkYXRhPW1hdGNoRGF0YVtpbmRleF07CmlmKG5vQ3VzdG9taXplciYmZGF0YVsyXT9kYXRhWzFdIT09b2JqZWN0W2RhdGFbMF1dOiEoZGF0YVswXWluIG9iamVjdCkpcmV0dXJuIGZhbHNlfXdoaWxlKCsraW5kZXg8bGVuZ3RoKXtkYXRhPW1hdGNoRGF0YVtpbmRleF07dmFyIGtleT1kYXRhWzBdLG9ialZhbHVlPW9iamVjdFtrZXldLHNyY1ZhbHVlPWRhdGFbMV07aWYobm9DdXN0b21pemVyJiZkYXRhWzJdKXtpZihvYmpWYWx1ZT09PXVuZGVmaW5lZCYmIShrZXkgaW4gb2JqZWN0KSlyZXR1cm4gZmFsc2V9ZWxzZXt2YXIgc3RhY2s9bmV3IFN0YWNrO2lmKGN1c3RvbWl6ZXIpdmFyIHJlc3VsdD1jdXN0b21pemVyKG9ialZhbHVlLHNyY1ZhbHVlLGtleSxvYmplY3Qsc291cmNlLHN0YWNrKTtpZighKHJlc3VsdD09PXVuZGVmaW5lZD9iYXNlSXNFcXVhbChzcmNWYWx1ZSxvYmpWYWx1ZSxDT01QQVJFX1BBUlRJQUxfRkxBR3xDT01QQVJFX1VOT1JERVJFRF9GTEFHLGN1c3RvbWl6ZXIsc3RhY2spOnJlc3VsdCkpcmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX0KZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKXtpZighaXNPYmplY3QodmFsdWUpfHxpc01hc2tlZCh2YWx1ZSkpcmV0dXJuIGZhbHNlO3ZhciBwYXR0ZXJuPWlzRnVuY3Rpb24odmFsdWUpP3JlSXNOYXRpdmU6cmVJc0hvc3RDdG9yO3JldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKX1mdW5jdGlvbiBiYXNlSXNSZWdFeHAodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09cmVnZXhwVGFnfWZ1bmN0aW9uIGJhc2VJc1NldCh2YWx1ZSl7cmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkmJmdldFRhZyh2YWx1ZSk9PXNldFRhZ31mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmaXNMZW5ndGgodmFsdWUubGVuZ3RoKSYmISF0eXBlZEFycmF5VGFnc1tiYXNlR2V0VGFnKHZhbHVlKV19ZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PSJmdW5jdGlvbiIpcmV0dXJuIHZhbHVlOwppZih2YWx1ZT09bnVsbClyZXR1cm4gaWRlbnRpdHk7aWYodHlwZW9mIHZhbHVlPT0ib2JqZWN0IilyZXR1cm4gaXNBcnJheSh2YWx1ZSk/YmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSx2YWx1ZVsxXSk6YmFzZU1hdGNoZXModmFsdWUpO3JldHVybiBwcm9wZXJ0eSh2YWx1ZSl9ZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KXtpZighaXNQcm90b3R5cGUob2JqZWN0KSlyZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO3ZhciByZXN1bHQ9W107Zm9yKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpaWYoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qsa2V5KSYma2V5IT0iY29uc3RydWN0b3IiKXJlc3VsdC5wdXNoKGtleSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCl7aWYoIWlzT2JqZWN0KG9iamVjdCkpcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO3ZhciBpc1Byb3RvPWlzUHJvdG90eXBlKG9iamVjdCkscmVzdWx0PVtdO2Zvcih2YXIga2V5IGluIG9iamVjdClpZighKGtleT09CiJjb25zdHJ1Y3RvciImJihpc1Byb3RvfHwhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3Qsa2V5KSkpKXJlc3VsdC5wdXNoKGtleSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlTHQodmFsdWUsb3RoZXIpe3JldHVybiB2YWx1ZTxvdGhlcn1mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24saXRlcmF0ZWUpe3ZhciBpbmRleD0tMSxyZXN1bHQ9aXNBcnJheUxpa2UoY29sbGVjdGlvbik/QXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpOltdO2Jhc2VFYWNoKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUsa2V5LGNvbGxlY3Rpb24pe3Jlc3VsdFsrK2luZGV4XT1pdGVyYXRlZSh2YWx1ZSxrZXksY29sbGVjdGlvbil9KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGJhc2VNYXRjaGVzKHNvdXJjZSl7dmFyIG1hdGNoRGF0YT1nZXRNYXRjaERhdGEoc291cmNlKTtpZihtYXRjaERhdGEubGVuZ3RoPT0xJiZtYXRjaERhdGFbMF1bMl0pcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKG1hdGNoRGF0YVswXVswXSwKbWF0Y2hEYXRhWzBdWzFdKTtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gb2JqZWN0PT09c291cmNlfHxiYXNlSXNNYXRjaChvYmplY3Qsc291cmNlLG1hdGNoRGF0YSl9fWZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCxzcmNWYWx1ZSl7aWYoaXNLZXkocGF0aCkmJmlzU3RyaWN0Q29tcGFyYWJsZShzcmNWYWx1ZSkpcmV0dXJuIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKHRvS2V5KHBhdGgpLHNyY1ZhbHVlKTtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXt2YXIgb2JqVmFsdWU9Z2V0KG9iamVjdCxwYXRoKTtyZXR1cm4gb2JqVmFsdWU9PT11bmRlZmluZWQmJm9ialZhbHVlPT09c3JjVmFsdWU/aGFzSW4ob2JqZWN0LHBhdGgpOmJhc2VJc0VxdWFsKHNyY1ZhbHVlLG9ialZhbHVlLENPTVBBUkVfUEFSVElBTF9GTEFHfENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpfX1mdW5jdGlvbiBiYXNlTWVyZ2Uob2JqZWN0LHNvdXJjZSxzcmNJbmRleCxjdXN0b21pemVyLHN0YWNrKXtpZihvYmplY3Q9PT0Kc291cmNlKXJldHVybjtiYXNlRm9yKHNvdXJjZSxmdW5jdGlvbihzcmNWYWx1ZSxrZXkpe2lmKGlzT2JqZWN0KHNyY1ZhbHVlKSl7c3RhY2t8fChzdGFjaz1uZXcgU3RhY2spO2Jhc2VNZXJnZURlZXAob2JqZWN0LHNvdXJjZSxrZXksc3JjSW5kZXgsYmFzZU1lcmdlLGN1c3RvbWl6ZXIsc3RhY2spfWVsc2V7dmFyIG5ld1ZhbHVlPWN1c3RvbWl6ZXI/Y3VzdG9taXplcihzYWZlR2V0KG9iamVjdCxrZXkpLHNyY1ZhbHVlLGtleSsiIixvYmplY3Qsc291cmNlLHN0YWNrKTp1bmRlZmluZWQ7aWYobmV3VmFsdWU9PT11bmRlZmluZWQpbmV3VmFsdWU9c3JjVmFsdWU7YXNzaWduTWVyZ2VWYWx1ZShvYmplY3Qsa2V5LG5ld1ZhbHVlKX19LGtleXNJbil9ZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3Qsc291cmNlLGtleSxzcmNJbmRleCxtZXJnZUZ1bmMsY3VzdG9taXplcixzdGFjayl7dmFyIG9ialZhbHVlPXNhZmVHZXQob2JqZWN0LGtleSksc3JjVmFsdWU9c2FmZUdldChzb3VyY2UsCmtleSksc3RhY2tlZD1zdGFjay5nZXQoc3JjVmFsdWUpO2lmKHN0YWNrZWQpe2Fzc2lnbk1lcmdlVmFsdWUob2JqZWN0LGtleSxzdGFja2VkKTtyZXR1cm59dmFyIG5ld1ZhbHVlPWN1c3RvbWl6ZXI/Y3VzdG9taXplcihvYmpWYWx1ZSxzcmNWYWx1ZSxrZXkrIiIsb2JqZWN0LHNvdXJjZSxzdGFjayk6dW5kZWZpbmVkO3ZhciBpc0NvbW1vbj1uZXdWYWx1ZT09PXVuZGVmaW5lZDtpZihpc0NvbW1vbil7dmFyIGlzQXJyPWlzQXJyYXkoc3JjVmFsdWUpLGlzQnVmZj0haXNBcnImJmlzQnVmZmVyKHNyY1ZhbHVlKSxpc1R5cGVkPSFpc0FyciYmIWlzQnVmZiYmaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtuZXdWYWx1ZT1zcmNWYWx1ZTtpZihpc0Fycnx8aXNCdWZmfHxpc1R5cGVkKWlmKGlzQXJyYXkob2JqVmFsdWUpKW5ld1ZhbHVlPW9ialZhbHVlO2Vsc2UgaWYoaXNBcnJheUxpa2VPYmplY3Qob2JqVmFsdWUpKW5ld1ZhbHVlPWNvcHlBcnJheShvYmpWYWx1ZSk7ZWxzZSBpZihpc0J1ZmYpe2lzQ29tbW9uPQpmYWxzZTtuZXdWYWx1ZT1jbG9uZUJ1ZmZlcihzcmNWYWx1ZSx0cnVlKX1lbHNlIGlmKGlzVHlwZWQpe2lzQ29tbW9uPWZhbHNlO25ld1ZhbHVlPWNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSx0cnVlKX1lbHNlIG5ld1ZhbHVlPVtdO2Vsc2UgaWYoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSl8fGlzQXJndW1lbnRzKHNyY1ZhbHVlKSl7bmV3VmFsdWU9b2JqVmFsdWU7aWYoaXNBcmd1bWVudHMob2JqVmFsdWUpKW5ld1ZhbHVlPXRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO2Vsc2UgaWYoIWlzT2JqZWN0KG9ialZhbHVlKXx8c3JjSW5kZXgmJmlzRnVuY3Rpb24ob2JqVmFsdWUpKW5ld1ZhbHVlPWluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSl9ZWxzZSBpc0NvbW1vbj1mYWxzZX1pZihpc0NvbW1vbil7c3RhY2suc2V0KHNyY1ZhbHVlLG5ld1ZhbHVlKTttZXJnZUZ1bmMobmV3VmFsdWUsc3JjVmFsdWUsc3JjSW5kZXgsY3VzdG9taXplcixzdGFjayk7c3RhY2tbImRlbGV0ZSJdKHNyY1ZhbHVlKX1hc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwKa2V5LG5ld1ZhbHVlKX1mdW5jdGlvbiBiYXNlTnRoKGFycmF5LG4pe3ZhciBsZW5ndGg9YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuO24rPW48MD9sZW5ndGg6MDtyZXR1cm4gaXNJbmRleChuLGxlbmd0aCk/YXJyYXlbbl06dW5kZWZpbmVkfWZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24saXRlcmF0ZWVzLG9yZGVycyl7dmFyIGluZGV4PS0xO2l0ZXJhdGVlcz1hcnJheU1hcChpdGVyYXRlZXMubGVuZ3RoP2l0ZXJhdGVlczpbaWRlbnRpdHldLGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk7dmFyIHJlc3VsdD1iYXNlTWFwKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUsa2V5LGNvbGxlY3Rpb24pe3ZhciBjcml0ZXJpYT1hcnJheU1hcChpdGVyYXRlZXMsZnVuY3Rpb24oaXRlcmF0ZWUpe3JldHVybiBpdGVyYXRlZSh2YWx1ZSl9KTtyZXR1cm57ImNyaXRlcmlhIjpjcml0ZXJpYSwiaW5kZXgiOisraW5kZXgsInZhbHVlIjp2YWx1ZX19KTtyZXR1cm4gYmFzZVNvcnRCeShyZXN1bHQsCmZ1bmN0aW9uKG9iamVjdCxvdGhlcil7cmV0dXJuIGNvbXBhcmVNdWx0aXBsZShvYmplY3Qsb3RoZXIsb3JkZXJzKX0pfWZ1bmN0aW9uIGJhc2VQaWNrKG9iamVjdCxwYXRocyl7cmV0dXJuIGJhc2VQaWNrQnkob2JqZWN0LHBhdGhzLGZ1bmN0aW9uKHZhbHVlLHBhdGgpe3JldHVybiBoYXNJbihvYmplY3QscGF0aCl9KX1mdW5jdGlvbiBiYXNlUGlja0J5KG9iamVjdCxwYXRocyxwcmVkaWNhdGUpe3ZhciBpbmRleD0tMSxsZW5ndGg9cGF0aHMubGVuZ3RoLHJlc3VsdD17fTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHBhdGg9cGF0aHNbaW5kZXhdLHZhbHVlPWJhc2VHZXQob2JqZWN0LHBhdGgpO2lmKHByZWRpY2F0ZSh2YWx1ZSxwYXRoKSliYXNlU2V0KHJlc3VsdCxjYXN0UGF0aChwYXRoLG9iamVjdCksdmFsdWUpfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZVByb3BlcnR5RGVlcChwYXRoKXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gYmFzZUdldChvYmplY3QscGF0aCl9fQpmdW5jdGlvbiBiYXNlUHVsbEFsbChhcnJheSx2YWx1ZXMsaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluZGV4T2Y9Y29tcGFyYXRvcj9iYXNlSW5kZXhPZldpdGg6YmFzZUluZGV4T2YsaW5kZXg9LTEsbGVuZ3RoPXZhbHVlcy5sZW5ndGgsc2Vlbj1hcnJheTtpZihhcnJheT09PXZhbHVlcyl2YWx1ZXM9Y29weUFycmF5KHZhbHVlcyk7aWYoaXRlcmF0ZWUpc2Vlbj1hcnJheU1hcChhcnJheSxiYXNlVW5hcnkoaXRlcmF0ZWUpKTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIGZyb21JbmRleD0wLHZhbHVlPXZhbHVlc1tpbmRleF0sY29tcHV0ZWQ9aXRlcmF0ZWU/aXRlcmF0ZWUodmFsdWUpOnZhbHVlO3doaWxlKChmcm9tSW5kZXg9aW5kZXhPZihzZWVuLGNvbXB1dGVkLGZyb21JbmRleCxjb21wYXJhdG9yKSk+LTEpe2lmKHNlZW4hPT1hcnJheSlzcGxpY2UuY2FsbChzZWVuLGZyb21JbmRleCwxKTtzcGxpY2UuY2FsbChhcnJheSxmcm9tSW5kZXgsMSl9fXJldHVybiBhcnJheX1mdW5jdGlvbiBiYXNlUHVsbEF0KGFycmF5LAppbmRleGVzKXt2YXIgbGVuZ3RoPWFycmF5P2luZGV4ZXMubGVuZ3RoOjAsbGFzdEluZGV4PWxlbmd0aC0xO3doaWxlKGxlbmd0aC0tKXt2YXIgaW5kZXg9aW5kZXhlc1tsZW5ndGhdO2lmKGxlbmd0aD09bGFzdEluZGV4fHxpbmRleCE9PXByZXZpb3VzKXt2YXIgcHJldmlvdXM9aW5kZXg7aWYoaXNJbmRleChpbmRleCkpc3BsaWNlLmNhbGwoYXJyYXksaW5kZXgsMSk7ZWxzZSBiYXNlVW5zZXQoYXJyYXksaW5kZXgpfX1yZXR1cm4gYXJyYXl9ZnVuY3Rpb24gYmFzZVJhbmRvbShsb3dlcix1cHBlcil7cmV0dXJuIGxvd2VyK25hdGl2ZUZsb29yKG5hdGl2ZVJhbmRvbSgpKih1cHBlci1sb3dlcisxKSl9ZnVuY3Rpb24gYmFzZVJhbmdlKHN0YXJ0LGVuZCxzdGVwLGZyb21SaWdodCl7dmFyIGluZGV4PS0xLGxlbmd0aD1uYXRpdmVNYXgobmF0aXZlQ2VpbCgoZW5kLXN0YXJ0KS8oc3RlcHx8MSkpLDApLHJlc3VsdD1BcnJheShsZW5ndGgpO3doaWxlKGxlbmd0aC0tKXtyZXN1bHRbZnJvbVJpZ2h0PwpsZW5ndGg6KytpbmRleF09c3RhcnQ7c3RhcnQrPXN0ZXB9cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlUmVwZWF0KHN0cmluZyxuKXt2YXIgcmVzdWx0PSIiO2lmKCFzdHJpbmd8fG48MXx8bj5NQVhfU0FGRV9JTlRFR0VSKXJldHVybiByZXN1bHQ7ZG97aWYobiUyKXJlc3VsdCs9c3RyaW5nO249bmF0aXZlRmxvb3Iobi8yKTtpZihuKXN0cmluZys9c3RyaW5nfXdoaWxlKG4pO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZVJlc3QoZnVuYyxzdGFydCl7cmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsc3RhcnQsaWRlbnRpdHkpLGZ1bmMrIiIpfWZ1bmN0aW9uIGJhc2VTYW1wbGUoY29sbGVjdGlvbil7cmV0dXJuIGFycmF5U2FtcGxlKHZhbHVlcyhjb2xsZWN0aW9uKSl9ZnVuY3Rpb24gYmFzZVNhbXBsZVNpemUoY29sbGVjdGlvbixuKXt2YXIgYXJyYXk9dmFsdWVzKGNvbGxlY3Rpb24pO3JldHVybiBzaHVmZmxlU2VsZihhcnJheSxiYXNlQ2xhbXAobiwwLGFycmF5Lmxlbmd0aCkpfQpmdW5jdGlvbiBiYXNlU2V0KG9iamVjdCxwYXRoLHZhbHVlLGN1c3RvbWl6ZXIpe2lmKCFpc09iamVjdChvYmplY3QpKXJldHVybiBvYmplY3Q7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRoLmxlbmd0aCxsYXN0SW5kZXg9bGVuZ3RoLTEsbmVzdGVkPW9iamVjdDt3aGlsZShuZXN0ZWQhPW51bGwmJisraW5kZXg8bGVuZ3RoKXt2YXIga2V5PXRvS2V5KHBhdGhbaW5kZXhdKSxuZXdWYWx1ZT12YWx1ZTtpZihpbmRleCE9bGFzdEluZGV4KXt2YXIgb2JqVmFsdWU9bmVzdGVkW2tleV07bmV3VmFsdWU9Y3VzdG9taXplcj9jdXN0b21pemVyKG9ialZhbHVlLGtleSxuZXN0ZWQpOnVuZGVmaW5lZDtpZihuZXdWYWx1ZT09PXVuZGVmaW5lZCluZXdWYWx1ZT1pc09iamVjdChvYmpWYWx1ZSk/b2JqVmFsdWU6aXNJbmRleChwYXRoW2luZGV4KzFdKT9bXTp7fX1hc3NpZ25WYWx1ZShuZXN0ZWQsa2V5LG5ld1ZhbHVlKTtuZXN0ZWQ9bmVzdGVkW2tleV19cmV0dXJuIG9iamVjdH0KdmFyIGJhc2VTZXREYXRhPSFtZXRhTWFwP2lkZW50aXR5OmZ1bmN0aW9uKGZ1bmMsZGF0YSl7bWV0YU1hcC5zZXQoZnVuYyxkYXRhKTtyZXR1cm4gZnVuY307dmFyIGJhc2VTZXRUb1N0cmluZz0hZGVmaW5lUHJvcGVydHk/aWRlbnRpdHk6ZnVuY3Rpb24oZnVuYyxzdHJpbmcpe3JldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCJ0b1N0cmluZyIseyJjb25maWd1cmFibGUiOnRydWUsImVudW1lcmFibGUiOmZhbHNlLCJ2YWx1ZSI6Y29uc3RhbnQoc3RyaW5nKSwid3JpdGFibGUiOnRydWV9KX07ZnVuY3Rpb24gYmFzZVNodWZmbGUoY29sbGVjdGlvbil7cmV0dXJuIHNodWZmbGVTZWxmKHZhbHVlcyhjb2xsZWN0aW9uKSl9ZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LHN0YXJ0LGVuZCl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheS5sZW5ndGg7aWYoc3RhcnQ8MClzdGFydD0tc3RhcnQ+bGVuZ3RoPzA6bGVuZ3RoK3N0YXJ0O2VuZD1lbmQ+bGVuZ3RoP2xlbmd0aDplbmQ7aWYoZW5kPDApZW5kKz0KbGVuZ3RoO2xlbmd0aD1zdGFydD5lbmQ/MDplbmQtc3RhcnQ+Pj4wO3N0YXJ0Pj4+PTA7dmFyIHJlc3VsdD1BcnJheShsZW5ndGgpO3doaWxlKCsraW5kZXg8bGVuZ3RoKXJlc3VsdFtpbmRleF09YXJyYXlbaW5kZXgrc3RhcnRdO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gYmFzZVNvbWUoY29sbGVjdGlvbixwcmVkaWNhdGUpe3ZhciByZXN1bHQ7YmFzZUVhY2goY29sbGVjdGlvbixmdW5jdGlvbih2YWx1ZSxpbmRleCxjb2xsZWN0aW9uKXtyZXN1bHQ9cHJlZGljYXRlKHZhbHVlLGluZGV4LGNvbGxlY3Rpb24pO3JldHVybiFyZXN1bHR9KTtyZXR1cm4hIXJlc3VsdH1mdW5jdGlvbiBiYXNlU29ydGVkSW5kZXgoYXJyYXksdmFsdWUscmV0SGlnaGVzdCl7dmFyIGxvdz0wLGhpZ2g9YXJyYXk9PW51bGw/bG93OmFycmF5Lmxlbmd0aDtpZih0eXBlb2YgdmFsdWU9PSJudW1iZXIiJiZ2YWx1ZT09PXZhbHVlJiZoaWdoPD1IQUxGX01BWF9BUlJBWV9MRU5HVEgpe3doaWxlKGxvdzxoaWdoKXt2YXIgbWlkPQpsb3craGlnaD4+PjEsY29tcHV0ZWQ9YXJyYXlbbWlkXTtpZihjb21wdXRlZCE9PW51bGwmJiFpc1N5bWJvbChjb21wdXRlZCkmJihyZXRIaWdoZXN0P2NvbXB1dGVkPD12YWx1ZTpjb21wdXRlZDx2YWx1ZSkpbG93PW1pZCsxO2Vsc2UgaGlnaD1taWR9cmV0dXJuIGhpZ2h9cmV0dXJuIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LHZhbHVlLGlkZW50aXR5LHJldEhpZ2hlc3QpfWZ1bmN0aW9uIGJhc2VTb3J0ZWRJbmRleEJ5KGFycmF5LHZhbHVlLGl0ZXJhdGVlLHJldEhpZ2hlc3Qpe3ZhbHVlPWl0ZXJhdGVlKHZhbHVlKTt2YXIgbG93PTAsaGlnaD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aCx2YWxJc05hTj12YWx1ZSE9PXZhbHVlLHZhbElzTnVsbD12YWx1ZT09PW51bGwsdmFsSXNTeW1ib2w9aXNTeW1ib2wodmFsdWUpLHZhbElzVW5kZWZpbmVkPXZhbHVlPT09dW5kZWZpbmVkO3doaWxlKGxvdzxoaWdoKXt2YXIgbWlkPW5hdGl2ZUZsb29yKChsb3craGlnaCkvMiksY29tcHV0ZWQ9Cml0ZXJhdGVlKGFycmF5W21pZF0pLG90aElzRGVmaW5lZD1jb21wdXRlZCE9PXVuZGVmaW5lZCxvdGhJc051bGw9Y29tcHV0ZWQ9PT1udWxsLG90aElzUmVmbGV4aXZlPWNvbXB1dGVkPT09Y29tcHV0ZWQsb3RoSXNTeW1ib2w9aXNTeW1ib2woY29tcHV0ZWQpO2lmKHZhbElzTmFOKXZhciBzZXRMb3c9cmV0SGlnaGVzdHx8b3RoSXNSZWZsZXhpdmU7ZWxzZSBpZih2YWxJc1VuZGVmaW5lZClzZXRMb3c9b3RoSXNSZWZsZXhpdmUmJihyZXRIaWdoZXN0fHxvdGhJc0RlZmluZWQpO2Vsc2UgaWYodmFsSXNOdWxsKXNldExvdz1vdGhJc1JlZmxleGl2ZSYmb3RoSXNEZWZpbmVkJiYocmV0SGlnaGVzdHx8IW90aElzTnVsbCk7ZWxzZSBpZih2YWxJc1N5bWJvbClzZXRMb3c9b3RoSXNSZWZsZXhpdmUmJm90aElzRGVmaW5lZCYmIW90aElzTnVsbCYmKHJldEhpZ2hlc3R8fCFvdGhJc1N5bWJvbCk7ZWxzZSBpZihvdGhJc051bGx8fG90aElzU3ltYm9sKXNldExvdz1mYWxzZTtlbHNlIHNldExvdz0KcmV0SGlnaGVzdD9jb21wdXRlZDw9dmFsdWU6Y29tcHV0ZWQ8dmFsdWU7aWYoc2V0TG93KWxvdz1taWQrMTtlbHNlIGhpZ2g9bWlkfXJldHVybiBuYXRpdmVNaW4oaGlnaCxNQVhfQVJSQVlfSU5ERVgpfWZ1bmN0aW9uIGJhc2VTb3J0ZWRVbmlxKGFycmF5LGl0ZXJhdGVlKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPWFycmF5Lmxlbmd0aCxyZXNJbmRleD0wLHJlc3VsdD1bXTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPWFycmF5W2luZGV4XSxjb21wdXRlZD1pdGVyYXRlZT9pdGVyYXRlZSh2YWx1ZSk6dmFsdWU7aWYoIWluZGV4fHwhZXEoY29tcHV0ZWQsc2Vlbikpe3ZhciBzZWVuPWNvbXB1dGVkO3Jlc3VsdFtyZXNJbmRleCsrXT12YWx1ZT09PTA/MDp2YWx1ZX19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBiYXNlVG9OdW1iZXIodmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09Im51bWJlciIpcmV0dXJuIHZhbHVlO2lmKGlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gTkFOO3JldHVybit2YWx1ZX0KZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKXtpZih0eXBlb2YgdmFsdWU9PSJzdHJpbmciKXJldHVybiB2YWx1ZTtpZihpc0FycmF5KHZhbHVlKSlyZXR1cm4gYXJyYXlNYXAodmFsdWUsYmFzZVRvU3RyaW5nKSsiIjtpZihpc1N5bWJvbCh2YWx1ZSkpcmV0dXJuIHN5bWJvbFRvU3RyaW5nP3N5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpOiIiO3ZhciByZXN1bHQ9dmFsdWUrIiI7cmV0dXJuIHJlc3VsdD09IjAiJiYxL3ZhbHVlPT0tSU5GSU5JVFk/Ii0wIjpyZXN1bHR9ZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGluZGV4PS0xLGluY2x1ZGVzPWFycmF5SW5jbHVkZXMsbGVuZ3RoPWFycmF5Lmxlbmd0aCxpc0NvbW1vbj10cnVlLHJlc3VsdD1bXSxzZWVuPXJlc3VsdDtpZihjb21wYXJhdG9yKXtpc0NvbW1vbj1mYWxzZTtpbmNsdWRlcz1hcnJheUluY2x1ZGVzV2l0aH1lbHNlIGlmKGxlbmd0aD49TEFSR0VfQVJSQVlfU0laRSl7dmFyIHNldD0KaXRlcmF0ZWU/bnVsbDpjcmVhdGVTZXQoYXJyYXkpO2lmKHNldClyZXR1cm4gc2V0VG9BcnJheShzZXQpO2lzQ29tbW9uPWZhbHNlO2luY2x1ZGVzPWNhY2hlSGFzO3NlZW49bmV3IFNldENhY2hlfWVsc2Ugc2Vlbj1pdGVyYXRlZT9bXTpyZXN1bHQ7b3V0ZXI6d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF0sY29tcHV0ZWQ9aXRlcmF0ZWU/aXRlcmF0ZWUodmFsdWUpOnZhbHVlO3ZhbHVlPWNvbXBhcmF0b3J8fHZhbHVlIT09MD92YWx1ZTowO2lmKGlzQ29tbW9uJiZjb21wdXRlZD09PWNvbXB1dGVkKXt2YXIgc2VlbkluZGV4PXNlZW4ubGVuZ3RoO3doaWxlKHNlZW5JbmRleC0tKWlmKHNlZW5bc2VlbkluZGV4XT09PWNvbXB1dGVkKWNvbnRpbnVlIG91dGVyO2lmKGl0ZXJhdGVlKXNlZW4ucHVzaChjb21wdXRlZCk7cmVzdWx0LnB1c2godmFsdWUpfWVsc2UgaWYoIWluY2x1ZGVzKHNlZW4sY29tcHV0ZWQsY29tcGFyYXRvcikpe2lmKHNlZW4hPT1yZXN1bHQpc2Vlbi5wdXNoKGNvbXB1dGVkKTsKcmVzdWx0LnB1c2godmFsdWUpfX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGJhc2VVbnNldChvYmplY3QscGF0aCl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7b2JqZWN0PXBhcmVudChvYmplY3QscGF0aCk7cmV0dXJuIG9iamVjdD09bnVsbHx8ZGVsZXRlIG9iamVjdFt0b0tleShsYXN0KHBhdGgpKV19ZnVuY3Rpb24gYmFzZVVwZGF0ZShvYmplY3QscGF0aCx1cGRhdGVyLGN1c3RvbWl6ZXIpe3JldHVybiBiYXNlU2V0KG9iamVjdCxwYXRoLHVwZGF0ZXIoYmFzZUdldChvYmplY3QscGF0aCkpLGN1c3RvbWl6ZXIpfWZ1bmN0aW9uIGJhc2VXaGlsZShhcnJheSxwcmVkaWNhdGUsaXNEcm9wLGZyb21SaWdodCl7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGgsaW5kZXg9ZnJvbVJpZ2h0P2xlbmd0aDotMTt3aGlsZSgoZnJvbVJpZ2h0P2luZGV4LS06KytpbmRleDxsZW5ndGgpJiZwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLGluZGV4LGFycmF5KSk7cmV0dXJuIGlzRHJvcD9iYXNlU2xpY2UoYXJyYXksCmZyb21SaWdodD8wOmluZGV4LGZyb21SaWdodD9pbmRleCsxOmxlbmd0aCk6YmFzZVNsaWNlKGFycmF5LGZyb21SaWdodD9pbmRleCsxOjAsZnJvbVJpZ2h0P2xlbmd0aDppbmRleCl9ZnVuY3Rpb24gYmFzZVdyYXBwZXJWYWx1ZSh2YWx1ZSxhY3Rpb25zKXt2YXIgcmVzdWx0PXZhbHVlO2lmKHJlc3VsdCBpbnN0YW5jZW9mIExhenlXcmFwcGVyKXJlc3VsdD1yZXN1bHQudmFsdWUoKTtyZXR1cm4gYXJyYXlSZWR1Y2UoYWN0aW9ucyxmdW5jdGlvbihyZXN1bHQsYWN0aW9uKXtyZXR1cm4gYWN0aW9uLmZ1bmMuYXBwbHkoYWN0aW9uLnRoaXNBcmcsYXJyYXlQdXNoKFtyZXN1bHRdLGFjdGlvbi5hcmdzKSl9LHJlc3VsdCl9ZnVuY3Rpb24gYmFzZVhvcihhcnJheXMsaXRlcmF0ZWUsY29tcGFyYXRvcil7dmFyIGxlbmd0aD1hcnJheXMubGVuZ3RoO2lmKGxlbmd0aDwyKXJldHVybiBsZW5ndGg/YmFzZVVuaXEoYXJyYXlzWzBdKTpbXTt2YXIgaW5kZXg9LTEscmVzdWx0PUFycmF5KGxlbmd0aCk7CndoaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgYXJyYXk9YXJyYXlzW2luZGV4XSxvdGhJbmRleD0tMTt3aGlsZSgrK290aEluZGV4PGxlbmd0aClpZihvdGhJbmRleCE9aW5kZXgpcmVzdWx0W2luZGV4XT1iYXNlRGlmZmVyZW5jZShyZXN1bHRbaW5kZXhdfHxhcnJheSxhcnJheXNbb3RoSW5kZXhdLGl0ZXJhdGVlLGNvbXBhcmF0b3IpfXJldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihyZXN1bHQsMSksaXRlcmF0ZWUsY29tcGFyYXRvcil9ZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcyx2YWx1ZXMsYXNzaWduRnVuYyl7dmFyIGluZGV4PS0xLGxlbmd0aD1wcm9wcy5sZW5ndGgsdmFsc0xlbmd0aD12YWx1ZXMubGVuZ3RoLHJlc3VsdD17fTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPWluZGV4PHZhbHNMZW5ndGg/dmFsdWVzW2luZGV4XTp1bmRlZmluZWQ7YXNzaWduRnVuYyhyZXN1bHQscHJvcHNbaW5kZXhdLHZhbHVlKX1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNhc3RBcnJheUxpa2VPYmplY3QodmFsdWUpe3JldHVybiBpc0FycmF5TGlrZU9iamVjdCh2YWx1ZSk/CnZhbHVlOltdfWZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZT09ImZ1bmN0aW9uIj92YWx1ZTppZGVudGl0eX1mdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSxvYmplY3Qpe2lmKGlzQXJyYXkodmFsdWUpKXJldHVybiB2YWx1ZTtyZXR1cm4gaXNLZXkodmFsdWUsb2JqZWN0KT9bdmFsdWVdOnN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpfXZhciBjYXN0UmVzdD1iYXNlUmVzdDtmdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksc3RhcnQsZW5kKXt2YXIgbGVuZ3RoPWFycmF5Lmxlbmd0aDtlbmQ9ZW5kPT09dW5kZWZpbmVkP2xlbmd0aDplbmQ7cmV0dXJuIXN0YXJ0JiZlbmQ+PWxlbmd0aD9hcnJheTpiYXNlU2xpY2UoYXJyYXksc3RhcnQsZW5kKX12YXIgY2xlYXJUaW1lb3V0PWN0eENsZWFyVGltZW91dHx8ZnVuY3Rpb24oaWQpe3JldHVybiByb290LmNsZWFyVGltZW91dChpZCl9O2Z1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlcixpc0RlZXApe2lmKGlzRGVlcClyZXR1cm4gYnVmZmVyLnNsaWNlKCk7CnZhciBsZW5ndGg9YnVmZmVyLmxlbmd0aCxyZXN1bHQ9YWxsb2NVbnNhZmU/YWxsb2NVbnNhZmUobGVuZ3RoKTpuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7YnVmZmVyLmNvcHkocmVzdWx0KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpe3ZhciByZXN1bHQ9bmV3IGFycmF5QnVmZmVyLmNvbnN0cnVjdG9yKGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgpOyhuZXcgVWludDhBcnJheShyZXN1bHQpKS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsaXNEZWVwKXt2YXIgYnVmZmVyPWlzRGVlcD9jbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcik6ZGF0YVZpZXcuYnVmZmVyO3JldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLGRhdGFWaWV3LmJ5dGVPZmZzZXQsZGF0YVZpZXcuYnl0ZUxlbmd0aCl9ZnVuY3Rpb24gY2xvbmVSZWdFeHAocmVnZXhwKXt2YXIgcmVzdWx0PQpuZXcgcmVnZXhwLmNvbnN0cnVjdG9yKHJlZ2V4cC5zb3VyY2UscmVGbGFncy5leGVjKHJlZ2V4cCkpO3Jlc3VsdC5sYXN0SW5kZXg9cmVnZXhwLmxhc3RJbmRleDtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNsb25lU3ltYm9sKHN5bWJvbCl7cmV0dXJuIHN5bWJvbFZhbHVlT2Y/T2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKTp7fX1mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSxpc0RlZXApe3ZhciBidWZmZXI9aXNEZWVwP2Nsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpOnR5cGVkQXJyYXkuYnVmZmVyO3JldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsdHlwZWRBcnJheS5ieXRlT2Zmc2V0LHR5cGVkQXJyYXkubGVuZ3RoKX1mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLG90aGVyKXtpZih2YWx1ZSE9PW90aGVyKXt2YXIgdmFsSXNEZWZpbmVkPXZhbHVlIT09dW5kZWZpbmVkLHZhbElzTnVsbD12YWx1ZT09PQpudWxsLHZhbElzUmVmbGV4aXZlPXZhbHVlPT09dmFsdWUsdmFsSXNTeW1ib2w9aXNTeW1ib2wodmFsdWUpO3ZhciBvdGhJc0RlZmluZWQ9b3RoZXIhPT11bmRlZmluZWQsb3RoSXNOdWxsPW90aGVyPT09bnVsbCxvdGhJc1JlZmxleGl2ZT1vdGhlcj09PW90aGVyLG90aElzU3ltYm9sPWlzU3ltYm9sKG90aGVyKTtpZighb3RoSXNOdWxsJiYhb3RoSXNTeW1ib2wmJiF2YWxJc1N5bWJvbCYmdmFsdWU+b3RoZXJ8fHZhbElzU3ltYm9sJiZvdGhJc0RlZmluZWQmJm90aElzUmVmbGV4aXZlJiYhb3RoSXNOdWxsJiYhb3RoSXNTeW1ib2x8fHZhbElzTnVsbCYmb3RoSXNEZWZpbmVkJiZvdGhJc1JlZmxleGl2ZXx8IXZhbElzRGVmaW5lZCYmb3RoSXNSZWZsZXhpdmV8fCF2YWxJc1JlZmxleGl2ZSlyZXR1cm4gMTtpZighdmFsSXNOdWxsJiYhdmFsSXNTeW1ib2wmJiFvdGhJc1N5bWJvbCYmdmFsdWU8b3RoZXJ8fG90aElzU3ltYm9sJiZ2YWxJc0RlZmluZWQmJnZhbElzUmVmbGV4aXZlJiYhdmFsSXNOdWxsJiYKIXZhbElzU3ltYm9sfHxvdGhJc051bGwmJnZhbElzRGVmaW5lZCYmdmFsSXNSZWZsZXhpdmV8fCFvdGhJc0RlZmluZWQmJnZhbElzUmVmbGV4aXZlfHwhb3RoSXNSZWZsZXhpdmUpcmV0dXJuLTF9cmV0dXJuIDB9ZnVuY3Rpb24gY29tcGFyZU11bHRpcGxlKG9iamVjdCxvdGhlcixvcmRlcnMpe3ZhciBpbmRleD0tMSxvYmpDcml0ZXJpYT1vYmplY3QuY3JpdGVyaWEsb3RoQ3JpdGVyaWE9b3RoZXIuY3JpdGVyaWEsbGVuZ3RoPW9iakNyaXRlcmlhLmxlbmd0aCxvcmRlcnNMZW5ndGg9b3JkZXJzLmxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHJlc3VsdD1jb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSxvdGhDcml0ZXJpYVtpbmRleF0pO2lmKHJlc3VsdCl7aWYoaW5kZXg+PW9yZGVyc0xlbmd0aClyZXR1cm4gcmVzdWx0O3ZhciBvcmRlcj1vcmRlcnNbaW5kZXhdO3JldHVybiByZXN1bHQqKG9yZGVyPT0iZGVzYyI/LTE6MSl9fXJldHVybiBvYmplY3QuaW5kZXgtCm90aGVyLmluZGV4fWZ1bmN0aW9uIGNvbXBvc2VBcmdzKGFyZ3MscGFydGlhbHMsaG9sZGVycyxpc0N1cnJpZWQpe3ZhciBhcmdzSW5kZXg9LTEsYXJnc0xlbmd0aD1hcmdzLmxlbmd0aCxob2xkZXJzTGVuZ3RoPWhvbGRlcnMubGVuZ3RoLGxlZnRJbmRleD0tMSxsZWZ0TGVuZ3RoPXBhcnRpYWxzLmxlbmd0aCxyYW5nZUxlbmd0aD1uYXRpdmVNYXgoYXJnc0xlbmd0aC1ob2xkZXJzTGVuZ3RoLDApLHJlc3VsdD1BcnJheShsZWZ0TGVuZ3RoK3JhbmdlTGVuZ3RoKSxpc1VuY3VycmllZD0haXNDdXJyaWVkO3doaWxlKCsrbGVmdEluZGV4PGxlZnRMZW5ndGgpcmVzdWx0W2xlZnRJbmRleF09cGFydGlhbHNbbGVmdEluZGV4XTt3aGlsZSgrK2FyZ3NJbmRleDxob2xkZXJzTGVuZ3RoKWlmKGlzVW5jdXJyaWVkfHxhcmdzSW5kZXg8YXJnc0xlbmd0aClyZXN1bHRbaG9sZGVyc1thcmdzSW5kZXhdXT1hcmdzW2FyZ3NJbmRleF07d2hpbGUocmFuZ2VMZW5ndGgtLSlyZXN1bHRbbGVmdEluZGV4KytdPQphcmdzW2FyZ3NJbmRleCsrXTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNvbXBvc2VBcmdzUmlnaHQoYXJncyxwYXJ0aWFscyxob2xkZXJzLGlzQ3VycmllZCl7dmFyIGFyZ3NJbmRleD0tMSxhcmdzTGVuZ3RoPWFyZ3MubGVuZ3RoLGhvbGRlcnNJbmRleD0tMSxob2xkZXJzTGVuZ3RoPWhvbGRlcnMubGVuZ3RoLHJpZ2h0SW5kZXg9LTEscmlnaHRMZW5ndGg9cGFydGlhbHMubGVuZ3RoLHJhbmdlTGVuZ3RoPW5hdGl2ZU1heChhcmdzTGVuZ3RoLWhvbGRlcnNMZW5ndGgsMCkscmVzdWx0PUFycmF5KHJhbmdlTGVuZ3RoK3JpZ2h0TGVuZ3RoKSxpc1VuY3VycmllZD0haXNDdXJyaWVkO3doaWxlKCsrYXJnc0luZGV4PHJhbmdlTGVuZ3RoKXJlc3VsdFthcmdzSW5kZXhdPWFyZ3NbYXJnc0luZGV4XTt2YXIgb2Zmc2V0PWFyZ3NJbmRleDt3aGlsZSgrK3JpZ2h0SW5kZXg8cmlnaHRMZW5ndGgpcmVzdWx0W29mZnNldCtyaWdodEluZGV4XT1wYXJ0aWFsc1tyaWdodEluZGV4XTt3aGlsZSgrK2hvbGRlcnNJbmRleDwKaG9sZGVyc0xlbmd0aClpZihpc1VuY3VycmllZHx8YXJnc0luZGV4PGFyZ3NMZW5ndGgpcmVzdWx0W29mZnNldCtob2xkZXJzW2hvbGRlcnNJbmRleF1dPWFyZ3NbYXJnc0luZGV4KytdO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSxhcnJheSl7dmFyIGluZGV4PS0xLGxlbmd0aD1zb3VyY2UubGVuZ3RoO2FycmF5fHwoYXJyYXk9QXJyYXkobGVuZ3RoKSk7d2hpbGUoKytpbmRleDxsZW5ndGgpYXJyYXlbaW5kZXhdPXNvdXJjZVtpbmRleF07cmV0dXJuIGFycmF5fWZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLHByb3BzLG9iamVjdCxjdXN0b21pemVyKXt2YXIgaXNOZXc9IW9iamVjdDtvYmplY3R8fChvYmplY3Q9e30pO3ZhciBpbmRleD0tMSxsZW5ndGg9cHJvcHMubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIga2V5PXByb3BzW2luZGV4XTt2YXIgbmV3VmFsdWU9Y3VzdG9taXplcj9jdXN0b21pemVyKG9iamVjdFtrZXldLHNvdXJjZVtrZXldLAprZXksb2JqZWN0LHNvdXJjZSk6dW5kZWZpbmVkO2lmKG5ld1ZhbHVlPT09dW5kZWZpbmVkKW5ld1ZhbHVlPXNvdXJjZVtrZXldO2lmKGlzTmV3KWJhc2VBc3NpZ25WYWx1ZShvYmplY3Qsa2V5LG5ld1ZhbHVlKTtlbHNlIGFzc2lnblZhbHVlKG9iamVjdCxrZXksbmV3VmFsdWUpfXJldHVybiBvYmplY3R9ZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLG9iamVjdCl7cmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLGdldFN5bWJvbHMoc291cmNlKSxvYmplY3QpfWZ1bmN0aW9uIGNvcHlTeW1ib2xzSW4oc291cmNlLG9iamVjdCl7cmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLGdldFN5bWJvbHNJbihzb3VyY2UpLG9iamVjdCl9ZnVuY3Rpb24gY3JlYXRlQWdncmVnYXRvcihzZXR0ZXIsaW5pdGlhbGl6ZXIpe3JldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLGl0ZXJhdGVlKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5QWdncmVnYXRvcjpiYXNlQWdncmVnYXRvcixhY2N1bXVsYXRvcj0KaW5pdGlhbGl6ZXI/aW5pdGlhbGl6ZXIoKTp7fTtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLHNldHRlcixnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSxhY2N1bXVsYXRvcil9fWZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKXtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LHNvdXJjZXMpe3ZhciBpbmRleD0tMSxsZW5ndGg9c291cmNlcy5sZW5ndGgsY3VzdG9taXplcj1sZW5ndGg+MT9zb3VyY2VzW2xlbmd0aC0xXTp1bmRlZmluZWQsZ3VhcmQ9bGVuZ3RoPjI/c291cmNlc1syXTp1bmRlZmluZWQ7Y3VzdG9taXplcj1hc3NpZ25lci5sZW5ndGg+MyYmdHlwZW9mIGN1c3RvbWl6ZXI9PSJmdW5jdGlvbiI/KGxlbmd0aC0tLGN1c3RvbWl6ZXIpOnVuZGVmaW5lZDtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoc291cmNlc1swXSxzb3VyY2VzWzFdLGd1YXJkKSl7Y3VzdG9taXplcj1sZW5ndGg8Mz91bmRlZmluZWQ6Y3VzdG9taXplcjtsZW5ndGg9MX1vYmplY3Q9T2JqZWN0KG9iamVjdCk7CndoaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgc291cmNlPXNvdXJjZXNbaW5kZXhdO2lmKHNvdXJjZSlhc3NpZ25lcihvYmplY3Qsc291cmNlLGluZGV4LGN1c3RvbWl6ZXIpfXJldHVybiBvYmplY3R9KX1mdW5jdGlvbiBjcmVhdGVCYXNlRWFjaChlYWNoRnVuYyxmcm9tUmlnaHQpe3JldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLGl0ZXJhdGVlKXtpZihjb2xsZWN0aW9uPT1udWxsKXJldHVybiBjb2xsZWN0aW9uO2lmKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSlyZXR1cm4gZWFjaEZ1bmMoY29sbGVjdGlvbixpdGVyYXRlZSk7dmFyIGxlbmd0aD1jb2xsZWN0aW9uLmxlbmd0aCxpbmRleD1mcm9tUmlnaHQ/bGVuZ3RoOi0xLGl0ZXJhYmxlPU9iamVjdChjb2xsZWN0aW9uKTt3aGlsZShmcm9tUmlnaHQ/aW5kZXgtLTorK2luZGV4PGxlbmd0aClpZihpdGVyYXRlZShpdGVyYWJsZVtpbmRleF0saW5kZXgsaXRlcmFibGUpPT09ZmFsc2UpYnJlYWs7cmV0dXJuIGNvbGxlY3Rpb259fWZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0LAppdGVyYXRlZSxrZXlzRnVuYyl7dmFyIGluZGV4PS0xLGl0ZXJhYmxlPU9iamVjdChvYmplY3QpLHByb3BzPWtleXNGdW5jKG9iamVjdCksbGVuZ3RoPXByb3BzLmxlbmd0aDt3aGlsZShsZW5ndGgtLSl7dmFyIGtleT1wcm9wc1tmcm9tUmlnaHQ/bGVuZ3RoOisraW5kZXhdO2lmKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sa2V5LGl0ZXJhYmxlKT09PWZhbHNlKWJyZWFrfXJldHVybiBvYmplY3R9fWZ1bmN0aW9uIGNyZWF0ZUJpbmQoZnVuYyxiaXRtYXNrLHRoaXNBcmcpe3ZhciBpc0JpbmQ9Yml0bWFzayZXUkFQX0JJTkRfRkxBRyxDdG9yPWNyZWF0ZUN0b3IoZnVuYyk7ZnVuY3Rpb24gd3JhcHBlcigpe3ZhciBmbj10aGlzJiZ0aGlzIT09cm9vdCYmdGhpcyBpbnN0YW5jZW9mIHdyYXBwZXI/Q3RvcjpmdW5jO3JldHVybiBmbi5hcHBseShpc0JpbmQ/dGhpc0FyZzp0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIHdyYXBwZXJ9ZnVuY3Rpb24gY3JlYXRlQ2FzZUZpcnN0KG1ldGhvZE5hbWUpe3JldHVybiBmdW5jdGlvbihzdHJpbmcpe3N0cmluZz0KdG9TdHJpbmcoc3RyaW5nKTt2YXIgc3RyU3ltYm9scz1oYXNVbmljb2RlKHN0cmluZyk/c3RyaW5nVG9BcnJheShzdHJpbmcpOnVuZGVmaW5lZDt2YXIgY2hyPXN0clN5bWJvbHM/c3RyU3ltYm9sc1swXTpzdHJpbmcuY2hhckF0KDApO3ZhciB0cmFpbGluZz1zdHJTeW1ib2xzP2Nhc3RTbGljZShzdHJTeW1ib2xzLDEpLmpvaW4oIiIpOnN0cmluZy5zbGljZSgxKTtyZXR1cm4gY2hyW21ldGhvZE5hbWVdKCkrdHJhaWxpbmd9fWZ1bmN0aW9uIGNyZWF0ZUNvbXBvdW5kZXIoY2FsbGJhY2spe3JldHVybiBmdW5jdGlvbihzdHJpbmcpe3JldHVybiBhcnJheVJlZHVjZSh3b3JkcyhkZWJ1cnIoc3RyaW5nKS5yZXBsYWNlKHJlQXBvcywiIikpLGNhbGxiYWNrLCIiKX19ZnVuY3Rpb24gY3JlYXRlQ3RvcihDdG9yKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYXJncz1hcmd1bWVudHM7c3dpdGNoKGFyZ3MubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyBDdG9yO2Nhc2UgMTpyZXR1cm4gbmV3IEN0b3IoYXJnc1swXSk7CmNhc2UgMjpyZXR1cm4gbmV3IEN0b3IoYXJnc1swXSxhcmdzWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSxhcmdzWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSxhcmdzWzJdLGFyZ3NbM10pO2Nhc2UgNTpyZXR1cm4gbmV3IEN0b3IoYXJnc1swXSxhcmdzWzFdLGFyZ3NbMl0sYXJnc1szXSxhcmdzWzRdKTtjYXNlIDY6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSxhcmdzWzJdLGFyZ3NbM10sYXJnc1s0XSxhcmdzWzVdKTtjYXNlIDc6cmV0dXJuIG5ldyBDdG9yKGFyZ3NbMF0sYXJnc1sxXSxhcmdzWzJdLGFyZ3NbM10sYXJnc1s0XSxhcmdzWzVdLGFyZ3NbNl0pfXZhciB0aGlzQmluZGluZz1iYXNlQ3JlYXRlKEN0b3IucHJvdG90eXBlKSxyZXN1bHQ9Q3Rvci5hcHBseSh0aGlzQmluZGluZyxhcmdzKTtyZXR1cm4gaXNPYmplY3QocmVzdWx0KT9yZXN1bHQ6dGhpc0JpbmRpbmd9fWZ1bmN0aW9uIGNyZWF0ZUN1cnJ5KGZ1bmMsCmJpdG1hc2ssYXJpdHkpe3ZhciBDdG9yPWNyZWF0ZUN0b3IoZnVuYyk7ZnVuY3Rpb24gd3JhcHBlcigpe3ZhciBsZW5ndGg9YXJndW1lbnRzLmxlbmd0aCxhcmdzPUFycmF5KGxlbmd0aCksaW5kZXg9bGVuZ3RoLHBsYWNlaG9sZGVyPWdldEhvbGRlcih3cmFwcGVyKTt3aGlsZShpbmRleC0tKWFyZ3NbaW5kZXhdPWFyZ3VtZW50c1tpbmRleF07dmFyIGhvbGRlcnM9bGVuZ3RoPDMmJmFyZ3NbMF0hPT1wbGFjZWhvbGRlciYmYXJnc1tsZW5ndGgtMV0hPT1wbGFjZWhvbGRlcj9bXTpyZXBsYWNlSG9sZGVycyhhcmdzLHBsYWNlaG9sZGVyKTtsZW5ndGgtPWhvbGRlcnMubGVuZ3RoO2lmKGxlbmd0aDxhcml0eSlyZXR1cm4gY3JlYXRlUmVjdXJyeShmdW5jLGJpdG1hc2ssY3JlYXRlSHlicmlkLHdyYXBwZXIucGxhY2Vob2xkZXIsdW5kZWZpbmVkLGFyZ3MsaG9sZGVycyx1bmRlZmluZWQsdW5kZWZpbmVkLGFyaXR5LWxlbmd0aCk7dmFyIGZuPXRoaXMmJnRoaXMhPT1yb290JiZ0aGlzIGluc3RhbmNlb2YKd3JhcHBlcj9DdG9yOmZ1bmM7cmV0dXJuIGFwcGx5KGZuLHRoaXMsYXJncyl9cmV0dXJuIHdyYXBwZXJ9ZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKXtyZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbixwcmVkaWNhdGUsZnJvbUluZGV4KXt2YXIgaXRlcmFibGU9T2JqZWN0KGNvbGxlY3Rpb24pO2lmKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSl7dmFyIGl0ZXJhdGVlPWdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKTtjb2xsZWN0aW9uPWtleXMoY29sbGVjdGlvbik7cHJlZGljYXRlPWZ1bmN0aW9uKGtleSl7cmV0dXJuIGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sa2V5LGl0ZXJhYmxlKX19dmFyIGluZGV4PWZpbmRJbmRleEZ1bmMoY29sbGVjdGlvbixwcmVkaWNhdGUsZnJvbUluZGV4KTtyZXR1cm4gaW5kZXg+LTE/aXRlcmFibGVbaXRlcmF0ZWU/Y29sbGVjdGlvbltpbmRleF06aW5kZXhdOnVuZGVmaW5lZH19ZnVuY3Rpb24gY3JlYXRlRmxvdyhmcm9tUmlnaHQpe3JldHVybiBmbGF0UmVzdChmdW5jdGlvbihmdW5jcyl7dmFyIGxlbmd0aD0KZnVuY3MubGVuZ3RoLGluZGV4PWxlbmd0aCxwcmVyZXE9TG9kYXNoV3JhcHBlci5wcm90b3R5cGUudGhydTtpZihmcm9tUmlnaHQpZnVuY3MucmV2ZXJzZSgpO3doaWxlKGluZGV4LS0pe3ZhciBmdW5jPWZ1bmNzW2luZGV4XTtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7aWYocHJlcmVxJiYhd3JhcHBlciYmZ2V0RnVuY05hbWUoZnVuYyk9PSJ3cmFwcGVyIil2YXIgd3JhcHBlcj1uZXcgTG9kYXNoV3JhcHBlcihbXSx0cnVlKX1pbmRleD13cmFwcGVyP2luZGV4Omxlbmd0aDt3aGlsZSgrK2luZGV4PGxlbmd0aCl7ZnVuYz1mdW5jc1tpbmRleF07dmFyIGZ1bmNOYW1lPWdldEZ1bmNOYW1lKGZ1bmMpLGRhdGE9ZnVuY05hbWU9PSJ3cmFwcGVyIj9nZXREYXRhKGZ1bmMpOnVuZGVmaW5lZDtpZihkYXRhJiZpc0xhemlhYmxlKGRhdGFbMF0pJiZkYXRhWzFdPT0oV1JBUF9BUllfRkxBR3xXUkFQX0NVUlJZX0ZMQUd8V1JBUF9QQVJUSUFMX0ZMQUd8CldSQVBfUkVBUkdfRkxBRykmJiFkYXRhWzRdLmxlbmd0aCYmZGF0YVs5XT09MSl3cmFwcGVyPXdyYXBwZXJbZ2V0RnVuY05hbWUoZGF0YVswXSldLmFwcGx5KHdyYXBwZXIsZGF0YVszXSk7ZWxzZSB3cmFwcGVyPWZ1bmMubGVuZ3RoPT0xJiZpc0xhemlhYmxlKGZ1bmMpP3dyYXBwZXJbZnVuY05hbWVdKCk6d3JhcHBlci50aHJ1KGZ1bmMpfXJldHVybiBmdW5jdGlvbigpe3ZhciBhcmdzPWFyZ3VtZW50cyx2YWx1ZT1hcmdzWzBdO2lmKHdyYXBwZXImJmFyZ3MubGVuZ3RoPT0xJiZpc0FycmF5KHZhbHVlKSlyZXR1cm4gd3JhcHBlci5wbGFudCh2YWx1ZSkudmFsdWUoKTt2YXIgaW5kZXg9MCxyZXN1bHQ9bGVuZ3RoP2Z1bmNzW2luZGV4XS5hcHBseSh0aGlzLGFyZ3MpOnZhbHVlO3doaWxlKCsraW5kZXg8bGVuZ3RoKXJlc3VsdD1mdW5jc1tpbmRleF0uY2FsbCh0aGlzLHJlc3VsdCk7cmV0dXJuIHJlc3VsdH19KX1mdW5jdGlvbiBjcmVhdGVIeWJyaWQoZnVuYyxiaXRtYXNrLHRoaXNBcmcsCnBhcnRpYWxzLGhvbGRlcnMscGFydGlhbHNSaWdodCxob2xkZXJzUmlnaHQsYXJnUG9zLGFyeSxhcml0eSl7dmFyIGlzQXJ5PWJpdG1hc2smV1JBUF9BUllfRkxBRyxpc0JpbmQ9Yml0bWFzayZXUkFQX0JJTkRfRkxBRyxpc0JpbmRLZXk9Yml0bWFzayZXUkFQX0JJTkRfS0VZX0ZMQUcsaXNDdXJyaWVkPWJpdG1hc2smKFdSQVBfQ1VSUllfRkxBR3xXUkFQX0NVUlJZX1JJR0hUX0ZMQUcpLGlzRmxpcD1iaXRtYXNrJldSQVBfRkxJUF9GTEFHLEN0b3I9aXNCaW5kS2V5P3VuZGVmaW5lZDpjcmVhdGVDdG9yKGZ1bmMpO2Z1bmN0aW9uIHdyYXBwZXIoKXt2YXIgbGVuZ3RoPWFyZ3VtZW50cy5sZW5ndGgsYXJncz1BcnJheShsZW5ndGgpLGluZGV4PWxlbmd0aDt3aGlsZShpbmRleC0tKWFyZ3NbaW5kZXhdPWFyZ3VtZW50c1tpbmRleF07aWYoaXNDdXJyaWVkKXZhciBwbGFjZWhvbGRlcj1nZXRIb2xkZXIod3JhcHBlciksaG9sZGVyc0NvdW50PWNvdW50SG9sZGVycyhhcmdzLHBsYWNlaG9sZGVyKTsKaWYocGFydGlhbHMpYXJncz1jb21wb3NlQXJncyhhcmdzLHBhcnRpYWxzLGhvbGRlcnMsaXNDdXJyaWVkKTtpZihwYXJ0aWFsc1JpZ2h0KWFyZ3M9Y29tcG9zZUFyZ3NSaWdodChhcmdzLHBhcnRpYWxzUmlnaHQsaG9sZGVyc1JpZ2h0LGlzQ3VycmllZCk7bGVuZ3RoLT1ob2xkZXJzQ291bnQ7aWYoaXNDdXJyaWVkJiZsZW5ndGg8YXJpdHkpe3ZhciBuZXdIb2xkZXJzPXJlcGxhY2VIb2xkZXJzKGFyZ3MscGxhY2Vob2xkZXIpO3JldHVybiBjcmVhdGVSZWN1cnJ5KGZ1bmMsYml0bWFzayxjcmVhdGVIeWJyaWQsd3JhcHBlci5wbGFjZWhvbGRlcix0aGlzQXJnLGFyZ3MsbmV3SG9sZGVycyxhcmdQb3MsYXJ5LGFyaXR5LWxlbmd0aCl9dmFyIHRoaXNCaW5kaW5nPWlzQmluZD90aGlzQXJnOnRoaXMsZm49aXNCaW5kS2V5P3RoaXNCaW5kaW5nW2Z1bmNdOmZ1bmM7bGVuZ3RoPWFyZ3MubGVuZ3RoO2lmKGFyZ1BvcylhcmdzPXJlb3JkZXIoYXJncyxhcmdQb3MpO2Vsc2UgaWYoaXNGbGlwJiZsZW5ndGg+CjEpYXJncy5yZXZlcnNlKCk7aWYoaXNBcnkmJmFyeTxsZW5ndGgpYXJncy5sZW5ndGg9YXJ5O2lmKHRoaXMmJnRoaXMhPT1yb290JiZ0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcilmbj1DdG9yfHxjcmVhdGVDdG9yKGZuKTtyZXR1cm4gZm4uYXBwbHkodGhpc0JpbmRpbmcsYXJncyl9cmV0dXJuIHdyYXBwZXJ9ZnVuY3Rpb24gY3JlYXRlSW52ZXJ0ZXIoc2V0dGVyLHRvSXRlcmF0ZWUpe3JldHVybiBmdW5jdGlvbihvYmplY3QsaXRlcmF0ZWUpe3JldHVybiBiYXNlSW52ZXJ0ZXIob2JqZWN0LHNldHRlcix0b0l0ZXJhdGVlKGl0ZXJhdGVlKSx7fSl9fWZ1bmN0aW9uIGNyZWF0ZU1hdGhPcGVyYXRpb24ob3BlcmF0b3IsZGVmYXVsdFZhbHVlKXtyZXR1cm4gZnVuY3Rpb24odmFsdWUsb3RoZXIpe3ZhciByZXN1bHQ7aWYodmFsdWU9PT11bmRlZmluZWQmJm90aGVyPT09dW5kZWZpbmVkKXJldHVybiBkZWZhdWx0VmFsdWU7aWYodmFsdWUhPT11bmRlZmluZWQpcmVzdWx0PXZhbHVlO2lmKG90aGVyIT09CnVuZGVmaW5lZCl7aWYocmVzdWx0PT09dW5kZWZpbmVkKXJldHVybiBvdGhlcjtpZih0eXBlb2YgdmFsdWU9PSJzdHJpbmcifHx0eXBlb2Ygb3RoZXI9PSJzdHJpbmciKXt2YWx1ZT1iYXNlVG9TdHJpbmcodmFsdWUpO290aGVyPWJhc2VUb1N0cmluZyhvdGhlcil9ZWxzZXt2YWx1ZT1iYXNlVG9OdW1iZXIodmFsdWUpO290aGVyPWJhc2VUb051bWJlcihvdGhlcil9cmVzdWx0PW9wZXJhdG9yKHZhbHVlLG90aGVyKX1yZXR1cm4gcmVzdWx0fX1mdW5jdGlvbiBjcmVhdGVPdmVyKGFycmF5RnVuYyl7cmV0dXJuIGZsYXRSZXN0KGZ1bmN0aW9uKGl0ZXJhdGVlcyl7aXRlcmF0ZWVzPWFycmF5TWFwKGl0ZXJhdGVlcyxiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO3JldHVybiBiYXNlUmVzdChmdW5jdGlvbihhcmdzKXt2YXIgdGhpc0FyZz10aGlzO3JldHVybiBhcnJheUZ1bmMoaXRlcmF0ZWVzLGZ1bmN0aW9uKGl0ZXJhdGVlKXtyZXR1cm4gYXBwbHkoaXRlcmF0ZWUsdGhpc0FyZyxhcmdzKX0pfSl9KX0KZnVuY3Rpb24gY3JlYXRlUGFkZGluZyhsZW5ndGgsY2hhcnMpe2NoYXJzPWNoYXJzPT09dW5kZWZpbmVkPyIgIjpiYXNlVG9TdHJpbmcoY2hhcnMpO3ZhciBjaGFyc0xlbmd0aD1jaGFycy5sZW5ndGg7aWYoY2hhcnNMZW5ndGg8MilyZXR1cm4gY2hhcnNMZW5ndGg/YmFzZVJlcGVhdChjaGFycyxsZW5ndGgpOmNoYXJzO3ZhciByZXN1bHQ9YmFzZVJlcGVhdChjaGFycyxuYXRpdmVDZWlsKGxlbmd0aC9zdHJpbmdTaXplKGNoYXJzKSkpO3JldHVybiBoYXNVbmljb2RlKGNoYXJzKT9jYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShyZXN1bHQpLDAsbGVuZ3RoKS5qb2luKCIiKTpyZXN1bHQuc2xpY2UoMCxsZW5ndGgpfWZ1bmN0aW9uIGNyZWF0ZVBhcnRpYWwoZnVuYyxiaXRtYXNrLHRoaXNBcmcscGFydGlhbHMpe3ZhciBpc0JpbmQ9Yml0bWFzayZXUkFQX0JJTkRfRkxBRyxDdG9yPWNyZWF0ZUN0b3IoZnVuYyk7ZnVuY3Rpb24gd3JhcHBlcigpe3ZhciBhcmdzSW5kZXg9LTEsYXJnc0xlbmd0aD0KYXJndW1lbnRzLmxlbmd0aCxsZWZ0SW5kZXg9LTEsbGVmdExlbmd0aD1wYXJ0aWFscy5sZW5ndGgsYXJncz1BcnJheShsZWZ0TGVuZ3RoK2FyZ3NMZW5ndGgpLGZuPXRoaXMmJnRoaXMhPT1yb290JiZ0aGlzIGluc3RhbmNlb2Ygd3JhcHBlcj9DdG9yOmZ1bmM7d2hpbGUoKytsZWZ0SW5kZXg8bGVmdExlbmd0aClhcmdzW2xlZnRJbmRleF09cGFydGlhbHNbbGVmdEluZGV4XTt3aGlsZShhcmdzTGVuZ3RoLS0pYXJnc1tsZWZ0SW5kZXgrK109YXJndW1lbnRzWysrYXJnc0luZGV4XTtyZXR1cm4gYXBwbHkoZm4saXNCaW5kP3RoaXNBcmc6dGhpcyxhcmdzKX1yZXR1cm4gd3JhcHBlcn1mdW5jdGlvbiBjcmVhdGVSYW5nZShmcm9tUmlnaHQpe3JldHVybiBmdW5jdGlvbihzdGFydCxlbmQsc3RlcCl7aWYoc3RlcCYmdHlwZW9mIHN0ZXAhPSJudW1iZXIiJiZpc0l0ZXJhdGVlQ2FsbChzdGFydCxlbmQsc3RlcCkpZW5kPXN0ZXA9dW5kZWZpbmVkO3N0YXJ0PXRvRmluaXRlKHN0YXJ0KTtpZihlbmQ9PT0KdW5kZWZpbmVkKXtlbmQ9c3RhcnQ7c3RhcnQ9MH1lbHNlIGVuZD10b0Zpbml0ZShlbmQpO3N0ZXA9c3RlcD09PXVuZGVmaW5lZD9zdGFydDxlbmQ/MTotMTp0b0Zpbml0ZShzdGVwKTtyZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LGVuZCxzdGVwLGZyb21SaWdodCl9fWZ1bmN0aW9uIGNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24ob3BlcmF0b3Ipe3JldHVybiBmdW5jdGlvbih2YWx1ZSxvdGhlcil7aWYoISh0eXBlb2YgdmFsdWU9PSJzdHJpbmciJiZ0eXBlb2Ygb3RoZXI9PSJzdHJpbmciKSl7dmFsdWU9dG9OdW1iZXIodmFsdWUpO290aGVyPXRvTnVtYmVyKG90aGVyKX1yZXR1cm4gb3BlcmF0b3IodmFsdWUsb3RoZXIpfX1mdW5jdGlvbiBjcmVhdGVSZWN1cnJ5KGZ1bmMsYml0bWFzayx3cmFwRnVuYyxwbGFjZWhvbGRlcix0aGlzQXJnLHBhcnRpYWxzLGhvbGRlcnMsYXJnUG9zLGFyeSxhcml0eSl7dmFyIGlzQ3Vycnk9Yml0bWFzayZXUkFQX0NVUlJZX0ZMQUcsbmV3SG9sZGVycz1pc0N1cnJ5Pwpob2xkZXJzOnVuZGVmaW5lZCxuZXdIb2xkZXJzUmlnaHQ9aXNDdXJyeT91bmRlZmluZWQ6aG9sZGVycyxuZXdQYXJ0aWFscz1pc0N1cnJ5P3BhcnRpYWxzOnVuZGVmaW5lZCxuZXdQYXJ0aWFsc1JpZ2h0PWlzQ3Vycnk/dW5kZWZpbmVkOnBhcnRpYWxzO2JpdG1hc2t8PWlzQ3Vycnk/V1JBUF9QQVJUSUFMX0ZMQUc6V1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUc7Yml0bWFzayY9fihpc0N1cnJ5P1dSQVBfUEFSVElBTF9SSUdIVF9GTEFHOldSQVBfUEFSVElBTF9GTEFHKTtpZighKGJpdG1hc2smV1JBUF9DVVJSWV9CT1VORF9GTEFHKSliaXRtYXNrJj1+KFdSQVBfQklORF9GTEFHfFdSQVBfQklORF9LRVlfRkxBRyk7dmFyIG5ld0RhdGE9W2Z1bmMsYml0bWFzayx0aGlzQXJnLG5ld1BhcnRpYWxzLG5ld0hvbGRlcnMsbmV3UGFydGlhbHNSaWdodCxuZXdIb2xkZXJzUmlnaHQsYXJnUG9zLGFyeSxhcml0eV07dmFyIHJlc3VsdD13cmFwRnVuYy5hcHBseSh1bmRlZmluZWQsbmV3RGF0YSk7aWYoaXNMYXppYWJsZShmdW5jKSlzZXREYXRhKHJlc3VsdCwKbmV3RGF0YSk7cmVzdWx0LnBsYWNlaG9sZGVyPXBsYWNlaG9sZGVyO3JldHVybiBzZXRXcmFwVG9TdHJpbmcocmVzdWx0LGZ1bmMsYml0bWFzayl9ZnVuY3Rpb24gY3JlYXRlUm91bmQobWV0aG9kTmFtZSl7dmFyIGZ1bmM9TWF0aFttZXRob2ROYW1lXTtyZXR1cm4gZnVuY3Rpb24obnVtYmVyLHByZWNpc2lvbil7bnVtYmVyPXRvTnVtYmVyKG51bWJlcik7cHJlY2lzaW9uPXByZWNpc2lvbj09bnVsbD8wOm5hdGl2ZU1pbih0b0ludGVnZXIocHJlY2lzaW9uKSwyOTIpO2lmKHByZWNpc2lvbil7dmFyIHBhaXI9KHRvU3RyaW5nKG51bWJlcikrImUiKS5zcGxpdCgiZSIpLHZhbHVlPWZ1bmMocGFpclswXSsiZSIrKCtwYWlyWzFdK3ByZWNpc2lvbikpO3BhaXI9KHRvU3RyaW5nKHZhbHVlKSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKyhwYWlyWzBdKyJlIisoK3BhaXJbMV0tcHJlY2lzaW9uKSl9cmV0dXJuIGZ1bmMobnVtYmVyKX19dmFyIGNyZWF0ZVNldD0hKFNldCYmMS9zZXRUb0FycmF5KG5ldyBTZXQoWywKLTBdKSlbMV09PUlORklOSVRZKT9ub29wOmZ1bmN0aW9uKHZhbHVlcyl7cmV0dXJuIG5ldyBTZXQodmFsdWVzKX07ZnVuY3Rpb24gY3JlYXRlVG9QYWlycyhrZXlzRnVuYyl7cmV0dXJuIGZ1bmN0aW9uKG9iamVjdCl7dmFyIHRhZz1nZXRUYWcob2JqZWN0KTtpZih0YWc9PW1hcFRhZylyZXR1cm4gbWFwVG9BcnJheShvYmplY3QpO2lmKHRhZz09c2V0VGFnKXJldHVybiBzZXRUb1BhaXJzKG9iamVjdCk7cmV0dXJuIGJhc2VUb1BhaXJzKG9iamVjdCxrZXlzRnVuYyhvYmplY3QpKX19ZnVuY3Rpb24gY3JlYXRlV3JhcChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzLGFyZ1BvcyxhcnksYXJpdHkpe3ZhciBpc0JpbmRLZXk9Yml0bWFzayZXUkFQX0JJTkRfS0VZX0ZMQUc7aWYoIWlzQmluZEtleSYmdHlwZW9mIGZ1bmMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO3ZhciBsZW5ndGg9cGFydGlhbHM/cGFydGlhbHMubGVuZ3RoOgowO2lmKCFsZW5ndGgpe2JpdG1hc2smPX4oV1JBUF9QQVJUSUFMX0ZMQUd8V1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpO3BhcnRpYWxzPWhvbGRlcnM9dW5kZWZpbmVkfWFyeT1hcnk9PT11bmRlZmluZWQ/YXJ5Om5hdGl2ZU1heCh0b0ludGVnZXIoYXJ5KSwwKTthcml0eT1hcml0eT09PXVuZGVmaW5lZD9hcml0eTp0b0ludGVnZXIoYXJpdHkpO2xlbmd0aC09aG9sZGVycz9ob2xkZXJzLmxlbmd0aDowO2lmKGJpdG1hc2smV1JBUF9QQVJUSUFMX1JJR0hUX0ZMQUcpe3ZhciBwYXJ0aWFsc1JpZ2h0PXBhcnRpYWxzLGhvbGRlcnNSaWdodD1ob2xkZXJzO3BhcnRpYWxzPWhvbGRlcnM9dW5kZWZpbmVkfXZhciBkYXRhPWlzQmluZEtleT91bmRlZmluZWQ6Z2V0RGF0YShmdW5jKTt2YXIgbmV3RGF0YT1bZnVuYyxiaXRtYXNrLHRoaXNBcmcscGFydGlhbHMsaG9sZGVycyxwYXJ0aWFsc1JpZ2h0LGhvbGRlcnNSaWdodCxhcmdQb3MsYXJ5LGFyaXR5XTtpZihkYXRhKW1lcmdlRGF0YShuZXdEYXRhLApkYXRhKTtmdW5jPW5ld0RhdGFbMF07Yml0bWFzaz1uZXdEYXRhWzFdO3RoaXNBcmc9bmV3RGF0YVsyXTtwYXJ0aWFscz1uZXdEYXRhWzNdO2hvbGRlcnM9bmV3RGF0YVs0XTthcml0eT1uZXdEYXRhWzldPW5ld0RhdGFbOV09PT11bmRlZmluZWQ/aXNCaW5kS2V5PzA6ZnVuYy5sZW5ndGg6bmF0aXZlTWF4KG5ld0RhdGFbOV0tbGVuZ3RoLDApO2lmKCFhcml0eSYmYml0bWFzayYoV1JBUF9DVVJSWV9GTEFHfFdSQVBfQ1VSUllfUklHSFRfRkxBRykpYml0bWFzayY9fihXUkFQX0NVUlJZX0ZMQUd8V1JBUF9DVVJSWV9SSUdIVF9GTEFHKTtpZighYml0bWFza3x8Yml0bWFzaz09V1JBUF9CSU5EX0ZMQUcpdmFyIHJlc3VsdD1jcmVhdGVCaW5kKGZ1bmMsYml0bWFzayx0aGlzQXJnKTtlbHNlIGlmKGJpdG1hc2s9PVdSQVBfQ1VSUllfRkxBR3x8Yml0bWFzaz09V1JBUF9DVVJSWV9SSUdIVF9GTEFHKXJlc3VsdD1jcmVhdGVDdXJyeShmdW5jLGJpdG1hc2ssYXJpdHkpO2Vsc2UgaWYoKGJpdG1hc2s9PQpXUkFQX1BBUlRJQUxfRkxBR3x8Yml0bWFzaz09KFdSQVBfQklORF9GTEFHfFdSQVBfUEFSVElBTF9GTEFHKSkmJiFob2xkZXJzLmxlbmd0aClyZXN1bHQ9Y3JlYXRlUGFydGlhbChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyk7ZWxzZSByZXN1bHQ9Y3JlYXRlSHlicmlkLmFwcGx5KHVuZGVmaW5lZCxuZXdEYXRhKTt2YXIgc2V0dGVyPWRhdGE/YmFzZVNldERhdGE6c2V0RGF0YTtyZXR1cm4gc2V0V3JhcFRvU3RyaW5nKHNldHRlcihyZXN1bHQsbmV3RGF0YSksZnVuYyxiaXRtYXNrKX1mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLHNyY1ZhbHVlLGtleSxvYmplY3Qpe2lmKG9ialZhbHVlPT09dW5kZWZpbmVkfHxlcShvYmpWYWx1ZSxvYmplY3RQcm90b1trZXldKSYmIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LGtleSkpcmV0dXJuIHNyY1ZhbHVlO3JldHVybiBvYmpWYWx1ZX1mdW5jdGlvbiBjdXN0b21EZWZhdWx0c01lcmdlKG9ialZhbHVlLHNyY1ZhbHVlLAprZXksb2JqZWN0LHNvdXJjZSxzdGFjayl7aWYoaXNPYmplY3Qob2JqVmFsdWUpJiZpc09iamVjdChzcmNWYWx1ZSkpe3N0YWNrLnNldChzcmNWYWx1ZSxvYmpWYWx1ZSk7YmFzZU1lcmdlKG9ialZhbHVlLHNyY1ZhbHVlLHVuZGVmaW5lZCxjdXN0b21EZWZhdWx0c01lcmdlLHN0YWNrKTtzdGFja1siZGVsZXRlIl0oc3JjVmFsdWUpfXJldHVybiBvYmpWYWx1ZX1mdW5jdGlvbiBjdXN0b21PbWl0Q2xvbmUodmFsdWUpe3JldHVybiBpc1BsYWluT2JqZWN0KHZhbHVlKT91bmRlZmluZWQ6dmFsdWV9ZnVuY3Rpb24gZXF1YWxBcnJheXMoYXJyYXksb3RoZXIsYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayl7dmFyIGlzUGFydGlhbD1iaXRtYXNrJkNPTVBBUkVfUEFSVElBTF9GTEFHLGFyckxlbmd0aD1hcnJheS5sZW5ndGgsb3RoTGVuZ3RoPW90aGVyLmxlbmd0aDtpZihhcnJMZW5ndGghPW90aExlbmd0aCYmIShpc1BhcnRpYWwmJm90aExlbmd0aD5hcnJMZW5ndGgpKXJldHVybiBmYWxzZTsKdmFyIHN0YWNrZWQ9c3RhY2suZ2V0KGFycmF5KTtpZihzdGFja2VkJiZzdGFjay5nZXQob3RoZXIpKXJldHVybiBzdGFja2VkPT1vdGhlcjt2YXIgaW5kZXg9LTEscmVzdWx0PXRydWUsc2Vlbj1iaXRtYXNrJkNPTVBBUkVfVU5PUkRFUkVEX0ZMQUc/bmV3IFNldENhY2hlOnVuZGVmaW5lZDtzdGFjay5zZXQoYXJyYXksb3RoZXIpO3N0YWNrLnNldChvdGhlcixhcnJheSk7d2hpbGUoKytpbmRleDxhcnJMZW5ndGgpe3ZhciBhcnJWYWx1ZT1hcnJheVtpbmRleF0sb3RoVmFsdWU9b3RoZXJbaW5kZXhdO2lmKGN1c3RvbWl6ZXIpdmFyIGNvbXBhcmVkPWlzUGFydGlhbD9jdXN0b21pemVyKG90aFZhbHVlLGFyclZhbHVlLGluZGV4LG90aGVyLGFycmF5LHN0YWNrKTpjdXN0b21pemVyKGFyclZhbHVlLG90aFZhbHVlLGluZGV4LGFycmF5LG90aGVyLHN0YWNrKTtpZihjb21wYXJlZCE9PXVuZGVmaW5lZCl7aWYoY29tcGFyZWQpY29udGludWU7cmVzdWx0PWZhbHNlO2JyZWFrfWlmKHNlZW4pe2lmKCFhcnJheVNvbWUob3RoZXIsCmZ1bmN0aW9uKG90aFZhbHVlLG90aEluZGV4KXtpZighY2FjaGVIYXMoc2VlbixvdGhJbmRleCkmJihhcnJWYWx1ZT09PW90aFZhbHVlfHxlcXVhbEZ1bmMoYXJyVmFsdWUsb3RoVmFsdWUsYml0bWFzayxjdXN0b21pemVyLHN0YWNrKSkpcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCl9KSl7cmVzdWx0PWZhbHNlO2JyZWFrfX1lbHNlIGlmKCEoYXJyVmFsdWU9PT1vdGhWYWx1ZXx8ZXF1YWxGdW5jKGFyclZhbHVlLG90aFZhbHVlLGJpdG1hc2ssY3VzdG9taXplcixzdGFjaykpKXtyZXN1bHQ9ZmFsc2U7YnJlYWt9fXN0YWNrWyJkZWxldGUiXShhcnJheSk7c3RhY2tbImRlbGV0ZSJdKG90aGVyKTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LG90aGVyLHRhZyxiaXRtYXNrLGN1c3RvbWl6ZXIsZXF1YWxGdW5jLHN0YWNrKXtzd2l0Y2godGFnKXtjYXNlIGRhdGFWaWV3VGFnOmlmKG9iamVjdC5ieXRlTGVuZ3RoIT1vdGhlci5ieXRlTGVuZ3RofHxvYmplY3QuYnl0ZU9mZnNldCE9Cm90aGVyLmJ5dGVPZmZzZXQpcmV0dXJuIGZhbHNlO29iamVjdD1vYmplY3QuYnVmZmVyO290aGVyPW90aGVyLmJ1ZmZlcjtjYXNlIGFycmF5QnVmZmVyVGFnOmlmKG9iamVjdC5ieXRlTGVuZ3RoIT1vdGhlci5ieXRlTGVuZ3RofHwhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSlyZXR1cm4gZmFsc2U7cmV0dXJuIHRydWU7Y2FzZSBib29sVGFnOmNhc2UgZGF0ZVRhZzpjYXNlIG51bWJlclRhZzpyZXR1cm4gZXEoK29iamVjdCwrb3RoZXIpO2Nhc2UgZXJyb3JUYWc6cmV0dXJuIG9iamVjdC5uYW1lPT1vdGhlci5uYW1lJiZvYmplY3QubWVzc2FnZT09b3RoZXIubWVzc2FnZTtjYXNlIHJlZ2V4cFRhZzpjYXNlIHN0cmluZ1RhZzpyZXR1cm4gb2JqZWN0PT1vdGhlcisiIjtjYXNlIG1hcFRhZzp2YXIgY29udmVydD1tYXBUb0FycmF5O2Nhc2Ugc2V0VGFnOnZhciBpc1BhcnRpYWw9Yml0bWFzayZDT01QQVJFX1BBUlRJQUxfRkxBRztjb252ZXJ0fHwKKGNvbnZlcnQ9c2V0VG9BcnJheSk7aWYob2JqZWN0LnNpemUhPW90aGVyLnNpemUmJiFpc1BhcnRpYWwpcmV0dXJuIGZhbHNlO3ZhciBzdGFja2VkPXN0YWNrLmdldChvYmplY3QpO2lmKHN0YWNrZWQpcmV0dXJuIHN0YWNrZWQ9PW90aGVyO2JpdG1hc2t8PUNPTVBBUkVfVU5PUkRFUkVEX0ZMQUc7c3RhY2suc2V0KG9iamVjdCxvdGhlcik7dmFyIHJlc3VsdD1lcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksY29udmVydChvdGhlciksYml0bWFzayxjdXN0b21pemVyLGVxdWFsRnVuYyxzdGFjayk7c3RhY2tbImRlbGV0ZSJdKG9iamVjdCk7cmV0dXJuIHJlc3VsdDtjYXNlIHN5bWJvbFRhZzppZihzeW1ib2xWYWx1ZU9mKXJldHVybiBzeW1ib2xWYWx1ZU9mLmNhbGwob2JqZWN0KT09c3ltYm9sVmFsdWVPZi5jYWxsKG90aGVyKX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZXF1YWxPYmplY3RzKG9iamVjdCxvdGhlcixiaXRtYXNrLGN1c3RvbWl6ZXIsZXF1YWxGdW5jLHN0YWNrKXt2YXIgaXNQYXJ0aWFsPQpiaXRtYXNrJkNPTVBBUkVfUEFSVElBTF9GTEFHLG9ialByb3BzPWdldEFsbEtleXMob2JqZWN0KSxvYmpMZW5ndGg9b2JqUHJvcHMubGVuZ3RoLG90aFByb3BzPWdldEFsbEtleXMob3RoZXIpLG90aExlbmd0aD1vdGhQcm9wcy5sZW5ndGg7aWYob2JqTGVuZ3RoIT1vdGhMZW5ndGgmJiFpc1BhcnRpYWwpcmV0dXJuIGZhbHNlO3ZhciBpbmRleD1vYmpMZW5ndGg7d2hpbGUoaW5kZXgtLSl7dmFyIGtleT1vYmpQcm9wc1tpbmRleF07aWYoIShpc1BhcnRpYWw/a2V5IGluIG90aGVyOmhhc093blByb3BlcnR5LmNhbGwob3RoZXIsa2V5KSkpcmV0dXJuIGZhbHNlfXZhciBzdGFja2VkPXN0YWNrLmdldChvYmplY3QpO2lmKHN0YWNrZWQmJnN0YWNrLmdldChvdGhlcikpcmV0dXJuIHN0YWNrZWQ9PW90aGVyO3ZhciByZXN1bHQ9dHJ1ZTtzdGFjay5zZXQob2JqZWN0LG90aGVyKTtzdGFjay5zZXQob3RoZXIsb2JqZWN0KTt2YXIgc2tpcEN0b3I9aXNQYXJ0aWFsO3doaWxlKCsraW5kZXg8b2JqTGVuZ3RoKXtrZXk9Cm9ialByb3BzW2luZGV4XTt2YXIgb2JqVmFsdWU9b2JqZWN0W2tleV0sb3RoVmFsdWU9b3RoZXJba2V5XTtpZihjdXN0b21pemVyKXZhciBjb21wYXJlZD1pc1BhcnRpYWw/Y3VzdG9taXplcihvdGhWYWx1ZSxvYmpWYWx1ZSxrZXksb3RoZXIsb2JqZWN0LHN0YWNrKTpjdXN0b21pemVyKG9ialZhbHVlLG90aFZhbHVlLGtleSxvYmplY3Qsb3RoZXIsc3RhY2spO2lmKCEoY29tcGFyZWQ9PT11bmRlZmluZWQ/b2JqVmFsdWU9PT1vdGhWYWx1ZXx8ZXF1YWxGdW5jKG9ialZhbHVlLG90aFZhbHVlLGJpdG1hc2ssY3VzdG9taXplcixzdGFjayk6Y29tcGFyZWQpKXtyZXN1bHQ9ZmFsc2U7YnJlYWt9c2tpcEN0b3J8fChza2lwQ3Rvcj1rZXk9PSJjb25zdHJ1Y3RvciIpfWlmKHJlc3VsdCYmIXNraXBDdG9yKXt2YXIgb2JqQ3Rvcj1vYmplY3QuY29uc3RydWN0b3Isb3RoQ3Rvcj1vdGhlci5jb25zdHJ1Y3RvcjtpZihvYmpDdG9yIT1vdGhDdG9yJiYoImNvbnN0cnVjdG9yImluIG9iamVjdCYmImNvbnN0cnVjdG9yImluCm90aGVyKSYmISh0eXBlb2Ygb2JqQ3Rvcj09ImZ1bmN0aW9uIiYmb2JqQ3RvciBpbnN0YW5jZW9mIG9iakN0b3ImJnR5cGVvZiBvdGhDdG9yPT0iZnVuY3Rpb24iJiZvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpcmVzdWx0PWZhbHNlfXN0YWNrWyJkZWxldGUiXShvYmplY3QpO3N0YWNrWyJkZWxldGUiXShvdGhlcik7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBmbGF0UmVzdChmdW5jKXtyZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYyx1bmRlZmluZWQsZmxhdHRlbiksZnVuYysiIil9ZnVuY3Rpb24gZ2V0QWxsS2V5cyhvYmplY3Qpe3JldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3Qsa2V5cyxnZXRTeW1ib2xzKX1mdW5jdGlvbiBnZXRBbGxLZXlzSW4ob2JqZWN0KXtyZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LGtleXNJbixnZXRTeW1ib2xzSW4pfXZhciBnZXREYXRhPSFtZXRhTWFwP25vb3A6ZnVuY3Rpb24oZnVuYyl7cmV0dXJuIG1ldGFNYXAuZ2V0KGZ1bmMpfTsKZnVuY3Rpb24gZ2V0RnVuY05hbWUoZnVuYyl7dmFyIHJlc3VsdD1mdW5jLm5hbWUrIiIsYXJyYXk9cmVhbE5hbWVzW3Jlc3VsdF0sbGVuZ3RoPWhhc093blByb3BlcnR5LmNhbGwocmVhbE5hbWVzLHJlc3VsdCk/YXJyYXkubGVuZ3RoOjA7d2hpbGUobGVuZ3RoLS0pe3ZhciBkYXRhPWFycmF5W2xlbmd0aF0sb3RoZXJGdW5jPWRhdGEuZnVuYztpZihvdGhlckZ1bmM9PW51bGx8fG90aGVyRnVuYz09ZnVuYylyZXR1cm4gZGF0YS5uYW1lfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gZ2V0SG9sZGVyKGZ1bmMpe3ZhciBvYmplY3Q9aGFzT3duUHJvcGVydHkuY2FsbChsb2Rhc2gsInBsYWNlaG9sZGVyIik/bG9kYXNoOmZ1bmM7cmV0dXJuIG9iamVjdC5wbGFjZWhvbGRlcn1mdW5jdGlvbiBnZXRJdGVyYXRlZSgpe3ZhciByZXN1bHQ9bG9kYXNoLml0ZXJhdGVlfHxpdGVyYXRlZTtyZXN1bHQ9cmVzdWx0PT09aXRlcmF0ZWU/YmFzZUl0ZXJhdGVlOnJlc3VsdDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8KcmVzdWx0KGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0pOnJlc3VsdH1mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCxrZXkpe3ZhciBkYXRhPW1hcC5fX2RhdGFfXztyZXR1cm4gaXNLZXlhYmxlKGtleSk/ZGF0YVt0eXBlb2Yga2V5PT0ic3RyaW5nIj8ic3RyaW5nIjoiaGFzaCJdOmRhdGEubWFwfWZ1bmN0aW9uIGdldE1hdGNoRGF0YShvYmplY3Qpe3ZhciByZXN1bHQ9a2V5cyhvYmplY3QpLGxlbmd0aD1yZXN1bHQubGVuZ3RoO3doaWxlKGxlbmd0aC0tKXt2YXIga2V5PXJlc3VsdFtsZW5ndGhdLHZhbHVlPW9iamVjdFtrZXldO3Jlc3VsdFtsZW5ndGhdPVtrZXksdmFsdWUsaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKV19cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LGtleSl7dmFyIHZhbHVlPWdldFZhbHVlKG9iamVjdCxrZXkpO3JldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpP3ZhbHVlOnVuZGVmaW5lZH1mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpe3ZhciBpc093bj0KaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSxzeW1Ub1N0cmluZ1RhZyksdGFnPXZhbHVlW3N5bVRvU3RyaW5nVGFnXTt0cnl7dmFsdWVbc3ltVG9TdHJpbmdUYWddPXVuZGVmaW5lZDt2YXIgdW5tYXNrZWQ9dHJ1ZX1jYXRjaChlKXt9dmFyIHJlc3VsdD1uYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtpZih1bm1hc2tlZClpZihpc093bil2YWx1ZVtzeW1Ub1N0cmluZ1RhZ109dGFnO2Vsc2UgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtyZXR1cm4gcmVzdWx0fXZhciBnZXRTeW1ib2xzPSFuYXRpdmVHZXRTeW1ib2xzP3N0dWJBcnJheTpmdW5jdGlvbihvYmplY3Qpe2lmKG9iamVjdD09bnVsbClyZXR1cm5bXTtvYmplY3Q9T2JqZWN0KG9iamVjdCk7cmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSxmdW5jdGlvbihzeW1ib2wpe3JldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCxzeW1ib2wpfSl9O3ZhciBnZXRTeW1ib2xzSW49CiFuYXRpdmVHZXRTeW1ib2xzP3N0dWJBcnJheTpmdW5jdGlvbihvYmplY3Qpe3ZhciByZXN1bHQ9W107d2hpbGUob2JqZWN0KXthcnJheVB1c2gocmVzdWx0LGdldFN5bWJvbHMob2JqZWN0KSk7b2JqZWN0PWdldFByb3RvdHlwZShvYmplY3QpfXJldHVybiByZXN1bHR9O3ZhciBnZXRUYWc9YmFzZUdldFRhZztpZihEYXRhVmlldyYmZ2V0VGFnKG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMSkpKSE9ZGF0YVZpZXdUYWd8fE1hcCYmZ2V0VGFnKG5ldyBNYXApIT1tYXBUYWd8fFByb21pc2UmJmdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkhPXByb21pc2VUYWd8fFNldCYmZ2V0VGFnKG5ldyBTZXQpIT1zZXRUYWd8fFdlYWtNYXAmJmdldFRhZyhuZXcgV2Vha01hcCkhPXdlYWtNYXBUYWcpZ2V0VGFnPWZ1bmN0aW9uKHZhbHVlKXt2YXIgcmVzdWx0PWJhc2VHZXRUYWcodmFsdWUpLEN0b3I9cmVzdWx0PT1vYmplY3RUYWc/dmFsdWUuY29uc3RydWN0b3I6dW5kZWZpbmVkLGN0b3JTdHJpbmc9CkN0b3I/dG9Tb3VyY2UoQ3Rvcik6IiI7aWYoY3RvclN0cmluZylzd2l0Y2goY3RvclN0cmluZyl7Y2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6cmV0dXJuIGRhdGFWaWV3VGFnO2Nhc2UgbWFwQ3RvclN0cmluZzpyZXR1cm4gbWFwVGFnO2Nhc2UgcHJvbWlzZUN0b3JTdHJpbmc6cmV0dXJuIHByb21pc2VUYWc7Y2FzZSBzZXRDdG9yU3RyaW5nOnJldHVybiBzZXRUYWc7Y2FzZSB3ZWFrTWFwQ3RvclN0cmluZzpyZXR1cm4gd2Vha01hcFRhZ31yZXR1cm4gcmVzdWx0fTtmdW5jdGlvbiBnZXRWaWV3KHN0YXJ0LGVuZCx0cmFuc2Zvcm1zKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXRyYW5zZm9ybXMubGVuZ3RoO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgZGF0YT10cmFuc2Zvcm1zW2luZGV4XSxzaXplPWRhdGEuc2l6ZTtzd2l0Y2goZGF0YS50eXBlKXtjYXNlICJkcm9wIjpzdGFydCs9c2l6ZTticmVhaztjYXNlICJkcm9wUmlnaHQiOmVuZC09c2l6ZTticmVhaztjYXNlICJ0YWtlIjplbmQ9bmF0aXZlTWluKGVuZCwKc3RhcnQrc2l6ZSk7YnJlYWs7Y2FzZSAidGFrZVJpZ2h0IjpzdGFydD1uYXRpdmVNYXgoc3RhcnQsZW5kLXNpemUpO2JyZWFrfX1yZXR1cm57InN0YXJ0IjpzdGFydCwiZW5kIjplbmR9fWZ1bmN0aW9uIGdldFdyYXBEZXRhaWxzKHNvdXJjZSl7dmFyIG1hdGNoPXNvdXJjZS5tYXRjaChyZVdyYXBEZXRhaWxzKTtyZXR1cm4gbWF0Y2g/bWF0Y2hbMV0uc3BsaXQocmVTcGxpdERldGFpbHMpOltdfWZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LHBhdGgsaGFzRnVuYyl7cGF0aD1jYXN0UGF0aChwYXRoLG9iamVjdCk7dmFyIGluZGV4PS0xLGxlbmd0aD1wYXRoLmxlbmd0aCxyZXN1bHQ9ZmFsc2U7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBrZXk9dG9LZXkocGF0aFtpbmRleF0pO2lmKCEocmVzdWx0PW9iamVjdCE9bnVsbCYmaGFzRnVuYyhvYmplY3Qsa2V5KSkpYnJlYWs7b2JqZWN0PW9iamVjdFtrZXldfWlmKHJlc3VsdHx8KytpbmRleCE9bGVuZ3RoKXJldHVybiByZXN1bHQ7bGVuZ3RoPQpvYmplY3Q9PW51bGw/MDpvYmplY3QubGVuZ3RoO3JldHVybiEhbGVuZ3RoJiZpc0xlbmd0aChsZW5ndGgpJiZpc0luZGV4KGtleSxsZW5ndGgpJiYoaXNBcnJheShvYmplY3QpfHxpc0FyZ3VtZW50cyhvYmplY3QpKX1mdW5jdGlvbiBpbml0Q2xvbmVBcnJheShhcnJheSl7dmFyIGxlbmd0aD1hcnJheS5sZW5ndGgscmVzdWx0PW5ldyBhcnJheS5jb25zdHJ1Y3RvcihsZW5ndGgpO2lmKGxlbmd0aCYmdHlwZW9mIGFycmF5WzBdPT0ic3RyaW5nIiYmaGFzT3duUHJvcGVydHkuY2FsbChhcnJheSwiaW5kZXgiKSl7cmVzdWx0LmluZGV4PWFycmF5LmluZGV4O3Jlc3VsdC5pbnB1dD1hcnJheS5pbnB1dH1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3Qpe3JldHVybiB0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yPT0iZnVuY3Rpb24iJiYhaXNQcm90b3R5cGUob2JqZWN0KT9iYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKTp7fX1mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsCnRhZyxpc0RlZXApe3ZhciBDdG9yPW9iamVjdC5jb25zdHJ1Y3Rvcjtzd2l0Y2godGFnKXtjYXNlIGFycmF5QnVmZmVyVGFnOnJldHVybiBjbG9uZUFycmF5QnVmZmVyKG9iamVjdCk7Y2FzZSBib29sVGFnOmNhc2UgZGF0ZVRhZzpyZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7Y2FzZSBkYXRhVmlld1RhZzpyZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsaXNEZWVwKTtjYXNlIGZsb2F0MzJUYWc6Y2FzZSBmbG9hdDY0VGFnOmNhc2UgaW50OFRhZzpjYXNlIGludDE2VGFnOmNhc2UgaW50MzJUYWc6Y2FzZSB1aW50OFRhZzpjYXNlIHVpbnQ4Q2xhbXBlZFRhZzpjYXNlIHVpbnQxNlRhZzpjYXNlIHVpbnQzMlRhZzpyZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCxpc0RlZXApO2Nhc2UgbWFwVGFnOnJldHVybiBuZXcgQ3RvcjtjYXNlIG51bWJlclRhZzpjYXNlIHN0cmluZ1RhZzpyZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtjYXNlIHJlZ2V4cFRhZzpyZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTsKY2FzZSBzZXRUYWc6cmV0dXJuIG5ldyBDdG9yO2Nhc2Ugc3ltYm9sVGFnOnJldHVybiBjbG9uZVN5bWJvbChvYmplY3QpfX1mdW5jdGlvbiBpbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsZGV0YWlscyl7dmFyIGxlbmd0aD1kZXRhaWxzLmxlbmd0aDtpZighbGVuZ3RoKXJldHVybiBzb3VyY2U7dmFyIGxhc3RJbmRleD1sZW5ndGgtMTtkZXRhaWxzW2xhc3RJbmRleF09KGxlbmd0aD4xPyJceDI2ICI6IiIpK2RldGFpbHNbbGFzdEluZGV4XTtkZXRhaWxzPWRldGFpbHMuam9pbihsZW5ndGg+Mj8iLCAiOiIgIik7cmV0dXJuIHNvdXJjZS5yZXBsYWNlKHJlV3JhcENvbW1lbnQsIntcbi8qIFt3cmFwcGVkIHdpdGggIitkZXRhaWxzKyJdICovXG4iKX1mdW5jdGlvbiBpc0ZsYXR0ZW5hYmxlKHZhbHVlKXtyZXR1cm4gaXNBcnJheSh2YWx1ZSl8fGlzQXJndW1lbnRzKHZhbHVlKXx8ISEoc3ByZWFkYWJsZVN5bWJvbCYmdmFsdWUmJnZhbHVlW3NwcmVhZGFibGVTeW1ib2xdKX1mdW5jdGlvbiBpc0luZGV4KHZhbHVlLApsZW5ndGgpe3ZhciB0eXBlPXR5cGVvZiB2YWx1ZTtsZW5ndGg9bGVuZ3RoPT1udWxsP01BWF9TQUZFX0lOVEVHRVI6bGVuZ3RoO3JldHVybiEhbGVuZ3RoJiYodHlwZT09Im51bWJlciJ8fHR5cGUhPSJzeW1ib2wiJiZyZUlzVWludC50ZXN0KHZhbHVlKSkmJih2YWx1ZT4tMSYmdmFsdWUlMT09MCYmdmFsdWU8bGVuZ3RoKX1mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSxpbmRleCxvYmplY3Qpe2lmKCFpc09iamVjdChvYmplY3QpKXJldHVybiBmYWxzZTt2YXIgdHlwZT10eXBlb2YgaW5kZXg7aWYodHlwZT09Im51bWJlciI/aXNBcnJheUxpa2Uob2JqZWN0KSYmaXNJbmRleChpbmRleCxvYmplY3QubGVuZ3RoKTp0eXBlPT0ic3RyaW5nIiYmaW5kZXggaW4gb2JqZWN0KXJldHVybiBlcShvYmplY3RbaW5kZXhdLHZhbHVlKTtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gaXNLZXkodmFsdWUsb2JqZWN0KXtpZihpc0FycmF5KHZhbHVlKSlyZXR1cm4gZmFsc2U7dmFyIHR5cGU9dHlwZW9mIHZhbHVlOwppZih0eXBlPT0ibnVtYmVyInx8dHlwZT09InN5bWJvbCJ8fHR5cGU9PSJib29sZWFuInx8dmFsdWU9PW51bGx8fGlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gdHJ1ZTtyZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKXx8IXJlSXNEZWVwUHJvcC50ZXN0KHZhbHVlKXx8b2JqZWN0IT1udWxsJiZ2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KX1mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpe3ZhciB0eXBlPXR5cGVvZiB2YWx1ZTtyZXR1cm4gdHlwZT09InN0cmluZyJ8fHR5cGU9PSJudW1iZXIifHx0eXBlPT0ic3ltYm9sInx8dHlwZT09ImJvb2xlYW4iP3ZhbHVlIT09Il9fcHJvdG9fXyI6dmFsdWU9PT1udWxsfWZ1bmN0aW9uIGlzTGF6aWFibGUoZnVuYyl7dmFyIGZ1bmNOYW1lPWdldEZ1bmNOYW1lKGZ1bmMpLG90aGVyPWxvZGFzaFtmdW5jTmFtZV07aWYodHlwZW9mIG90aGVyIT0iZnVuY3Rpb24ifHwhKGZ1bmNOYW1lIGluIExhenlXcmFwcGVyLnByb3RvdHlwZSkpcmV0dXJuIGZhbHNlOwppZihmdW5jPT09b3RoZXIpcmV0dXJuIHRydWU7dmFyIGRhdGE9Z2V0RGF0YShvdGhlcik7cmV0dXJuISFkYXRhJiZmdW5jPT09ZGF0YVswXX1mdW5jdGlvbiBpc01hc2tlZChmdW5jKXtyZXR1cm4hIW1hc2tTcmNLZXkmJm1hc2tTcmNLZXkgaW4gZnVuY312YXIgaXNNYXNrYWJsZT1jb3JlSnNEYXRhP2lzRnVuY3Rpb246c3R1YkZhbHNlO2Z1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKXt2YXIgQ3Rvcj12YWx1ZSYmdmFsdWUuY29uc3RydWN0b3IscHJvdG89dHlwZW9mIEN0b3I9PSJmdW5jdGlvbiImJkN0b3IucHJvdG90eXBlfHxvYmplY3RQcm90bztyZXR1cm4gdmFsdWU9PT1wcm90b31mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpe3JldHVybiB2YWx1ZT09PXZhbHVlJiYhaXNPYmplY3QodmFsdWUpfWZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSxzcmNWYWx1ZSl7cmV0dXJuIGZ1bmN0aW9uKG9iamVjdCl7aWYob2JqZWN0PT1udWxsKXJldHVybiBmYWxzZTsKcmV0dXJuIG9iamVjdFtrZXldPT09c3JjVmFsdWUmJihzcmNWYWx1ZSE9PXVuZGVmaW5lZHx8a2V5IGluIE9iamVjdChvYmplY3QpKX19ZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKXt2YXIgcmVzdWx0PW1lbW9pemUoZnVuYyxmdW5jdGlvbihrZXkpe2lmKGNhY2hlLnNpemU9PT1NQVhfTUVNT0laRV9TSVpFKWNhY2hlLmNsZWFyKCk7cmV0dXJuIGtleX0pO3ZhciBjYWNoZT1yZXN1bHQuY2FjaGU7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBtZXJnZURhdGEoZGF0YSxzb3VyY2Upe3ZhciBiaXRtYXNrPWRhdGFbMV0sc3JjQml0bWFzaz1zb3VyY2VbMV0sbmV3Qml0bWFzaz1iaXRtYXNrfHNyY0JpdG1hc2ssaXNDb21tb249bmV3Qml0bWFzazwoV1JBUF9CSU5EX0ZMQUd8V1JBUF9CSU5EX0tFWV9GTEFHfFdSQVBfQVJZX0ZMQUcpO3ZhciBpc0NvbWJvPXNyY0JpdG1hc2s9PVdSQVBfQVJZX0ZMQUcmJmJpdG1hc2s9PVdSQVBfQ1VSUllfRkxBR3x8c3JjQml0bWFzaz09V1JBUF9BUllfRkxBRyYmCmJpdG1hc2s9PVdSQVBfUkVBUkdfRkxBRyYmZGF0YVs3XS5sZW5ndGg8PXNvdXJjZVs4XXx8c3JjQml0bWFzaz09KFdSQVBfQVJZX0ZMQUd8V1JBUF9SRUFSR19GTEFHKSYmc291cmNlWzddLmxlbmd0aDw9c291cmNlWzhdJiZiaXRtYXNrPT1XUkFQX0NVUlJZX0ZMQUc7aWYoIShpc0NvbW1vbnx8aXNDb21ibykpcmV0dXJuIGRhdGE7aWYoc3JjQml0bWFzayZXUkFQX0JJTkRfRkxBRyl7ZGF0YVsyXT1zb3VyY2VbMl07bmV3Qml0bWFza3w9Yml0bWFzayZXUkFQX0JJTkRfRkxBRz8wOldSQVBfQ1VSUllfQk9VTkRfRkxBR312YXIgdmFsdWU9c291cmNlWzNdO2lmKHZhbHVlKXt2YXIgcGFydGlhbHM9ZGF0YVszXTtkYXRhWzNdPXBhcnRpYWxzP2NvbXBvc2VBcmdzKHBhcnRpYWxzLHZhbHVlLHNvdXJjZVs0XSk6dmFsdWU7ZGF0YVs0XT1wYXJ0aWFscz9yZXBsYWNlSG9sZGVycyhkYXRhWzNdLFBMQUNFSE9MREVSKTpzb3VyY2VbNF19dmFsdWU9c291cmNlWzVdO2lmKHZhbHVlKXtwYXJ0aWFscz0KZGF0YVs1XTtkYXRhWzVdPXBhcnRpYWxzP2NvbXBvc2VBcmdzUmlnaHQocGFydGlhbHMsdmFsdWUsc291cmNlWzZdKTp2YWx1ZTtkYXRhWzZdPXBhcnRpYWxzP3JlcGxhY2VIb2xkZXJzKGRhdGFbNV0sUExBQ0VIT0xERVIpOnNvdXJjZVs2XX12YWx1ZT1zb3VyY2VbN107aWYodmFsdWUpZGF0YVs3XT12YWx1ZTtpZihzcmNCaXRtYXNrJldSQVBfQVJZX0ZMQUcpZGF0YVs4XT1kYXRhWzhdPT1udWxsP3NvdXJjZVs4XTpuYXRpdmVNaW4oZGF0YVs4XSxzb3VyY2VbOF0pO2lmKGRhdGFbOV09PW51bGwpZGF0YVs5XT1zb3VyY2VbOV07ZGF0YVswXT1zb3VyY2VbMF07ZGF0YVsxXT1uZXdCaXRtYXNrO3JldHVybiBkYXRhfWZ1bmN0aW9uIG5hdGl2ZUtleXNJbihvYmplY3Qpe3ZhciByZXN1bHQ9W107aWYob2JqZWN0IT1udWxsKWZvcih2YXIga2V5IGluIE9iamVjdChvYmplY3QpKXJlc3VsdC5wdXNoKGtleSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSl7cmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpfQpmdW5jdGlvbiBvdmVyUmVzdChmdW5jLHN0YXJ0LHRyYW5zZm9ybSl7c3RhcnQ9bmF0aXZlTWF4KHN0YXJ0PT09dW5kZWZpbmVkP2Z1bmMubGVuZ3RoLTE6c3RhcnQsMCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzLGluZGV4PS0xLGxlbmd0aD1uYXRpdmVNYXgoYXJncy5sZW5ndGgtc3RhcnQsMCksYXJyYXk9QXJyYXkobGVuZ3RoKTt3aGlsZSgrK2luZGV4PGxlbmd0aClhcnJheVtpbmRleF09YXJnc1tzdGFydCtpbmRleF07aW5kZXg9LTE7dmFyIG90aGVyQXJncz1BcnJheShzdGFydCsxKTt3aGlsZSgrK2luZGV4PHN0YXJ0KW90aGVyQXJnc1tpbmRleF09YXJnc1tpbmRleF07b3RoZXJBcmdzW3N0YXJ0XT10cmFuc2Zvcm0oYXJyYXkpO3JldHVybiBhcHBseShmdW5jLHRoaXMsb3RoZXJBcmdzKX19ZnVuY3Rpb24gcGFyZW50KG9iamVjdCxwYXRoKXtyZXR1cm4gcGF0aC5sZW5ndGg8Mj9vYmplY3Q6YmFzZUdldChvYmplY3QsYmFzZVNsaWNlKHBhdGgsMCwtMSkpfQpmdW5jdGlvbiByZW9yZGVyKGFycmF5LGluZGV4ZXMpe3ZhciBhcnJMZW5ndGg9YXJyYXkubGVuZ3RoLGxlbmd0aD1uYXRpdmVNaW4oaW5kZXhlcy5sZW5ndGgsYXJyTGVuZ3RoKSxvbGRBcnJheT1jb3B5QXJyYXkoYXJyYXkpO3doaWxlKGxlbmd0aC0tKXt2YXIgaW5kZXg9aW5kZXhlc1tsZW5ndGhdO2FycmF5W2xlbmd0aF09aXNJbmRleChpbmRleCxhcnJMZW5ndGgpP29sZEFycmF5W2luZGV4XTp1bmRlZmluZWR9cmV0dXJuIGFycmF5fXZhciBzZXREYXRhPXNob3J0T3V0KGJhc2VTZXREYXRhKTt2YXIgc2V0VGltZW91dD1jdHhTZXRUaW1lb3V0fHxmdW5jdGlvbihmdW5jLHdhaXQpe3JldHVybiByb290LnNldFRpbWVvdXQoZnVuYyx3YWl0KX07dmFyIHNldFRvU3RyaW5nPXNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7ZnVuY3Rpb24gc2V0V3JhcFRvU3RyaW5nKHdyYXBwZXIscmVmZXJlbmNlLGJpdG1hc2spe3ZhciBzb3VyY2U9cmVmZXJlbmNlKyIiO3JldHVybiBzZXRUb1N0cmluZyh3cmFwcGVyLAppbnNlcnRXcmFwRGV0YWlscyhzb3VyY2UsdXBkYXRlV3JhcERldGFpbHMoZ2V0V3JhcERldGFpbHMoc291cmNlKSxiaXRtYXNrKSkpfWZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpe3ZhciBjb3VudD0wLGxhc3RDYWxsZWQ9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgc3RhbXA9bmF0aXZlTm93KCkscmVtYWluaW5nPUhPVF9TUEFOLShzdGFtcC1sYXN0Q2FsbGVkKTtsYXN0Q2FsbGVkPXN0YW1wO2lmKHJlbWFpbmluZz4wKXtpZigrK2NvdW50Pj1IT1RfQ09VTlQpcmV0dXJuIGFyZ3VtZW50c1swXX1lbHNlIGNvdW50PTA7cmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHNodWZmbGVTZWxmKGFycmF5LHNpemUpe3ZhciBpbmRleD0tMSxsZW5ndGg9YXJyYXkubGVuZ3RoLGxhc3RJbmRleD1sZW5ndGgtMTtzaXplPXNpemU9PT11bmRlZmluZWQ/bGVuZ3RoOnNpemU7d2hpbGUoKytpbmRleDxzaXplKXt2YXIgcmFuZD1iYXNlUmFuZG9tKGluZGV4LGxhc3RJbmRleCksCnZhbHVlPWFycmF5W3JhbmRdO2FycmF5W3JhbmRdPWFycmF5W2luZGV4XTthcnJheVtpbmRleF09dmFsdWV9YXJyYXkubGVuZ3RoPXNpemU7cmV0dXJuIGFycmF5fXZhciBzdHJpbmdUb1BhdGg9bWVtb2l6ZUNhcHBlZChmdW5jdGlvbihzdHJpbmcpe3ZhciByZXN1bHQ9W107aWYoc3RyaW5nLmNoYXJDb2RlQXQoMCk9PT00NilyZXN1bHQucHVzaCgiIik7c3RyaW5nLnJlcGxhY2UocmVQcm9wTmFtZSxmdW5jdGlvbihtYXRjaCxudW1iZXIscXVvdGUsc3ViU3RyaW5nKXtyZXN1bHQucHVzaChxdW90ZT9zdWJTdHJpbmcucmVwbGFjZShyZUVzY2FwZUNoYXIsIiQxIik6bnVtYmVyfHxtYXRjaCl9KTtyZXR1cm4gcmVzdWx0fSk7ZnVuY3Rpb24gdG9LZXkodmFsdWUpe2lmKHR5cGVvZiB2YWx1ZT09InN0cmluZyJ8fGlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gdmFsdWU7dmFyIHJlc3VsdD12YWx1ZSsiIjtyZXR1cm4gcmVzdWx0PT0iMCImJjEvdmFsdWU9PS1JTkZJTklUWT8iLTAiOnJlc3VsdH0KZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYyl7aWYoZnVuYyE9bnVsbCl7dHJ5e3JldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKX1jYXRjaChlKXt9dHJ5e3JldHVybiBmdW5jKyIifWNhdGNoKGUkMCl7fX1yZXR1cm4iIn1mdW5jdGlvbiB1cGRhdGVXcmFwRGV0YWlscyhkZXRhaWxzLGJpdG1hc2spe2FycmF5RWFjaCh3cmFwRmxhZ3MsZnVuY3Rpb24ocGFpcil7dmFyIHZhbHVlPSJfLiIrcGFpclswXTtpZihiaXRtYXNrJnBhaXJbMV0mJiFhcnJheUluY2x1ZGVzKGRldGFpbHMsdmFsdWUpKWRldGFpbHMucHVzaCh2YWx1ZSl9KTtyZXR1cm4gZGV0YWlscy5zb3J0KCl9ZnVuY3Rpb24gd3JhcHBlckNsb25lKHdyYXBwZXIpe2lmKHdyYXBwZXIgaW5zdGFuY2VvZiBMYXp5V3JhcHBlcilyZXR1cm4gd3JhcHBlci5jbG9uZSgpO3ZhciByZXN1bHQ9bmV3IExvZGFzaFdyYXBwZXIod3JhcHBlci5fX3dyYXBwZWRfXyx3cmFwcGVyLl9fY2hhaW5fXyk7cmVzdWx0Ll9fYWN0aW9uc19fPWNvcHlBcnJheSh3cmFwcGVyLl9fYWN0aW9uc19fKTsKcmVzdWx0Ll9faW5kZXhfXz13cmFwcGVyLl9faW5kZXhfXztyZXN1bHQuX192YWx1ZXNfXz13cmFwcGVyLl9fdmFsdWVzX187cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBjaHVuayhhcnJheSxzaXplLGd1YXJkKXtpZihndWFyZD9pc0l0ZXJhdGVlQ2FsbChhcnJheSxzaXplLGd1YXJkKTpzaXplPT09dW5kZWZpbmVkKXNpemU9MTtlbHNlIHNpemU9bmF0aXZlTWF4KHRvSW50ZWdlcihzaXplKSwwKTt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGh8fHNpemU8MSlyZXR1cm5bXTt2YXIgaW5kZXg9MCxyZXNJbmRleD0wLHJlc3VsdD1BcnJheShuYXRpdmVDZWlsKGxlbmd0aC9zaXplKSk7d2hpbGUoaW5kZXg8bGVuZ3RoKXJlc3VsdFtyZXNJbmRleCsrXT1iYXNlU2xpY2UoYXJyYXksaW5kZXgsaW5kZXgrPXNpemUpO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gY29tcGFjdChhcnJheSl7dmFyIGluZGV4PS0xLGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aCwKcmVzSW5kZXg9MCxyZXN1bHQ9W107d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYodmFsdWUpcmVzdWx0W3Jlc0luZGV4KytdPXZhbHVlfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gY29uY2F0KCl7dmFyIGxlbmd0aD1hcmd1bWVudHMubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuW107dmFyIGFyZ3M9QXJyYXkobGVuZ3RoLTEpLGFycmF5PWFyZ3VtZW50c1swXSxpbmRleD1sZW5ndGg7d2hpbGUoaW5kZXgtLSlhcmdzW2luZGV4LTFdPWFyZ3VtZW50c1tpbmRleF07cmV0dXJuIGFycmF5UHVzaChpc0FycmF5KGFycmF5KT9jb3B5QXJyYXkoYXJyYXkpOlthcnJheV0sYmFzZUZsYXR0ZW4oYXJncywxKSl9dmFyIGRpZmZlcmVuY2U9YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXksdmFsdWVzKXtyZXR1cm4gaXNBcnJheUxpa2VPYmplY3QoYXJyYXkpP2Jhc2VEaWZmZXJlbmNlKGFycmF5LGJhc2VGbGF0dGVuKHZhbHVlcywxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpKToKW119KTt2YXIgZGlmZmVyZW5jZUJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LHZhbHVlcyl7dmFyIGl0ZXJhdGVlPWxhc3QodmFsdWVzKTtpZihpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpaXRlcmF0ZWU9dW5kZWZpbmVkO3JldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSk/YmFzZURpZmZlcmVuY2UoYXJyYXksYmFzZUZsYXR0ZW4odmFsdWVzLDEsaXNBcnJheUxpa2VPYmplY3QsdHJ1ZSksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOltdfSk7dmFyIGRpZmZlcmVuY2VXaXRoPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LHZhbHVlcyl7dmFyIGNvbXBhcmF0b3I9bGFzdCh2YWx1ZXMpO2lmKGlzQXJyYXlMaWtlT2JqZWN0KGNvbXBhcmF0b3IpKWNvbXBhcmF0b3I9dW5kZWZpbmVkO3JldHVybiBpc0FycmF5TGlrZU9iamVjdChhcnJheSk/YmFzZURpZmZlcmVuY2UoYXJyYXksYmFzZUZsYXR0ZW4odmFsdWVzLDEsaXNBcnJheUxpa2VPYmplY3QsdHJ1ZSksdW5kZWZpbmVkLGNvbXBhcmF0b3IpOgpbXX0pO2Z1bmN0aW9uIGRyb3AoYXJyYXksbixndWFyZCl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXJldHVybltdO249Z3VhcmR8fG49PT11bmRlZmluZWQ/MTp0b0ludGVnZXIobik7cmV0dXJuIGJhc2VTbGljZShhcnJheSxuPDA/MDpuLGxlbmd0aCl9ZnVuY3Rpb24gZHJvcFJpZ2h0KGFycmF5LG4sZ3VhcmQpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aClyZXR1cm5bXTtuPWd1YXJkfHxuPT09dW5kZWZpbmVkPzE6dG9JbnRlZ2VyKG4pO249bGVuZ3RoLW47cmV0dXJuIGJhc2VTbGljZShhcnJheSwwLG48MD8wOm4pfWZ1bmN0aW9uIGRyb3BSaWdodFdoaWxlKGFycmF5LHByZWRpY2F0ZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVdoaWxlKGFycmF5LGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSx0cnVlLHRydWUpOltdfWZ1bmN0aW9uIGRyb3BXaGlsZShhcnJheSxwcmVkaWNhdGUpe3JldHVybiBhcnJheSYmCmFycmF5Lmxlbmd0aD9iYXNlV2hpbGUoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLHRydWUpOltdfWZ1bmN0aW9uIGZpbGwoYXJyYXksdmFsdWUsc3RhcnQsZW5kKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuW107aWYoc3RhcnQmJnR5cGVvZiBzdGFydCE9Im51bWJlciImJmlzSXRlcmF0ZWVDYWxsKGFycmF5LHZhbHVlLHN0YXJ0KSl7c3RhcnQ9MDtlbmQ9bGVuZ3RofXJldHVybiBiYXNlRmlsbChhcnJheSx2YWx1ZSxzdGFydCxlbmQpfWZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSxwcmVkaWNhdGUsZnJvbUluZGV4KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuLTE7dmFyIGluZGV4PWZyb21JbmRleD09bnVsbD8wOnRvSW50ZWdlcihmcm9tSW5kZXgpO2lmKGluZGV4PDApaW5kZXg9bmF0aXZlTWF4KGxlbmd0aCtpbmRleCwwKTtyZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwKZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGluZGV4KX1mdW5jdGlvbiBmaW5kTGFzdEluZGV4KGFycmF5LHByZWRpY2F0ZSxmcm9tSW5kZXgpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7aWYoIWxlbmd0aClyZXR1cm4tMTt2YXIgaW5kZXg9bGVuZ3RoLTE7aWYoZnJvbUluZGV4IT09dW5kZWZpbmVkKXtpbmRleD10b0ludGVnZXIoZnJvbUluZGV4KTtpbmRleD1mcm9tSW5kZXg8MD9uYXRpdmVNYXgobGVuZ3RoK2luZGV4LDApOm5hdGl2ZU1pbihpbmRleCxsZW5ndGgtMSl9cmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpLGluZGV4LHRydWUpfWZ1bmN0aW9uIGZsYXR0ZW4oYXJyYXkpe3ZhciBsZW5ndGg9YXJyYXk9PW51bGw/MDphcnJheS5sZW5ndGg7cmV0dXJuIGxlbmd0aD9iYXNlRmxhdHRlbihhcnJheSwxKTpbXX1mdW5jdGlvbiBmbGF0dGVuRGVlcChhcnJheSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDsKcmV0dXJuIGxlbmd0aD9iYXNlRmxhdHRlbihhcnJheSxJTkZJTklUWSk6W119ZnVuY3Rpb24gZmxhdHRlbkRlcHRoKGFycmF5LGRlcHRoKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuW107ZGVwdGg9ZGVwdGg9PT11bmRlZmluZWQ/MTp0b0ludGVnZXIoZGVwdGgpO3JldHVybiBiYXNlRmxhdHRlbihhcnJheSxkZXB0aCl9ZnVuY3Rpb24gZnJvbVBhaXJzKHBhaXJzKXt2YXIgaW5kZXg9LTEsbGVuZ3RoPXBhaXJzPT1udWxsPzA6cGFpcnMubGVuZ3RoLHJlc3VsdD17fTt3aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHBhaXI9cGFpcnNbaW5kZXhdO3Jlc3VsdFtwYWlyWzBdXT1wYWlyWzFdfXJldHVybiByZXN1bHR9ZnVuY3Rpb24gaGVhZChhcnJheSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YXJyYXlbMF06dW5kZWZpbmVkfWZ1bmN0aW9uIGluZGV4T2YoYXJyYXksdmFsdWUsZnJvbUluZGV4KXt2YXIgbGVuZ3RoPWFycmF5PT0KbnVsbD8wOmFycmF5Lmxlbmd0aDtpZighbGVuZ3RoKXJldHVybi0xO3ZhciBpbmRleD1mcm9tSW5kZXg9PW51bGw/MDp0b0ludGVnZXIoZnJvbUluZGV4KTtpZihpbmRleDwwKWluZGV4PW5hdGl2ZU1heChsZW5ndGgraW5kZXgsMCk7cmV0dXJuIGJhc2VJbmRleE9mKGFycmF5LHZhbHVlLGluZGV4KX1mdW5jdGlvbiBpbml0aWFsKGFycmF5KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3JldHVybiBsZW5ndGg/YmFzZVNsaWNlKGFycmF5LDAsLTEpOltdfXZhciBpbnRlcnNlY3Rpb249YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKXt2YXIgbWFwcGVkPWFycmF5TWFwKGFycmF5cyxjYXN0QXJyYXlMaWtlT2JqZWN0KTtyZXR1cm4gbWFwcGVkLmxlbmd0aCYmbWFwcGVkWzBdPT09YXJyYXlzWzBdP2Jhc2VJbnRlcnNlY3Rpb24obWFwcGVkKTpbXX0pO3ZhciBpbnRlcnNlY3Rpb25CeT1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3ZhciBpdGVyYXRlZT1sYXN0KGFycmF5cyksCm1hcHBlZD1hcnJheU1hcChhcnJheXMsY2FzdEFycmF5TGlrZU9iamVjdCk7aWYoaXRlcmF0ZWU9PT1sYXN0KG1hcHBlZCkpaXRlcmF0ZWU9dW5kZWZpbmVkO2Vsc2UgbWFwcGVkLnBvcCgpO3JldHVybiBtYXBwZWQubGVuZ3RoJiZtYXBwZWRbMF09PT1hcnJheXNbMF0/YmFzZUludGVyc2VjdGlvbihtYXBwZWQsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOltdfSk7dmFyIGludGVyc2VjdGlvbldpdGg9YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKXt2YXIgY29tcGFyYXRvcj1sYXN0KGFycmF5cyksbWFwcGVkPWFycmF5TWFwKGFycmF5cyxjYXN0QXJyYXlMaWtlT2JqZWN0KTtjb21wYXJhdG9yPXR5cGVvZiBjb21wYXJhdG9yPT0iZnVuY3Rpb24iP2NvbXBhcmF0b3I6dW5kZWZpbmVkO2lmKGNvbXBhcmF0b3IpbWFwcGVkLnBvcCgpO3JldHVybiBtYXBwZWQubGVuZ3RoJiZtYXBwZWRbMF09PT1hcnJheXNbMF0/YmFzZUludGVyc2VjdGlvbihtYXBwZWQsdW5kZWZpbmVkLGNvbXBhcmF0b3IpOgpbXX0pO2Z1bmN0aW9uIGpvaW4oYXJyYXksc2VwYXJhdG9yKXtyZXR1cm4gYXJyYXk9PW51bGw/IiI6bmF0aXZlSm9pbi5jYWxsKGFycmF5LHNlcGFyYXRvcil9ZnVuY3Rpb24gbGFzdChhcnJheSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtyZXR1cm4gbGVuZ3RoP2FycmF5W2xlbmd0aC0xXTp1bmRlZmluZWR9ZnVuY3Rpb24gbGFzdEluZGV4T2YoYXJyYXksdmFsdWUsZnJvbUluZGV4KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuLTE7dmFyIGluZGV4PWxlbmd0aDtpZihmcm9tSW5kZXghPT11bmRlZmluZWQpe2luZGV4PXRvSW50ZWdlcihmcm9tSW5kZXgpO2luZGV4PWluZGV4PDA/bmF0aXZlTWF4KGxlbmd0aCtpbmRleCwwKTpuYXRpdmVNaW4oaW5kZXgsbGVuZ3RoLTEpfXJldHVybiB2YWx1ZT09PXZhbHVlP3N0cmljdExhc3RJbmRleE9mKGFycmF5LHZhbHVlLGluZGV4KTpiYXNlRmluZEluZGV4KGFycmF5LApiYXNlSXNOYU4saW5kZXgsdHJ1ZSl9ZnVuY3Rpb24gbnRoKGFycmF5LG4pe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VOdGgoYXJyYXksdG9JbnRlZ2VyKG4pKTp1bmRlZmluZWR9dmFyIHB1bGw9YmFzZVJlc3QocHVsbEFsbCk7ZnVuY3Rpb24gcHVsbEFsbChhcnJheSx2YWx1ZXMpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoJiZ2YWx1ZXMmJnZhbHVlcy5sZW5ndGg/YmFzZVB1bGxBbGwoYXJyYXksdmFsdWVzKTphcnJheX1mdW5jdGlvbiBwdWxsQWxsQnkoYXJyYXksdmFsdWVzLGl0ZXJhdGVlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aCYmdmFsdWVzJiZ2YWx1ZXMubGVuZ3RoP2Jhc2VQdWxsQWxsKGFycmF5LHZhbHVlcyxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk6YXJyYXl9ZnVuY3Rpb24gcHVsbEFsbFdpdGgoYXJyYXksdmFsdWVzLGNvbXBhcmF0b3Ipe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoJiZ2YWx1ZXMmJnZhbHVlcy5sZW5ndGg/YmFzZVB1bGxBbGwoYXJyYXksCnZhbHVlcyx1bmRlZmluZWQsY29tcGFyYXRvcik6YXJyYXl9dmFyIHB1bGxBdD1mbGF0UmVzdChmdW5jdGlvbihhcnJheSxpbmRleGVzKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoLHJlc3VsdD1iYXNlQXQoYXJyYXksaW5kZXhlcyk7YmFzZVB1bGxBdChhcnJheSxhcnJheU1hcChpbmRleGVzLGZ1bmN0aW9uKGluZGV4KXtyZXR1cm4gaXNJbmRleChpbmRleCxsZW5ndGgpPytpbmRleDppbmRleH0pLnNvcnQoY29tcGFyZUFzY2VuZGluZykpO3JldHVybiByZXN1bHR9KTtmdW5jdGlvbiByZW1vdmUoYXJyYXkscHJlZGljYXRlKXt2YXIgcmVzdWx0PVtdO2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpcmV0dXJuIHJlc3VsdDt2YXIgaW5kZXg9LTEsaW5kZXhlcz1bXSxsZW5ndGg9YXJyYXkubGVuZ3RoO3ByZWRpY2F0ZT1nZXRJdGVyYXRlZShwcmVkaWNhdGUsMyk7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciB2YWx1ZT1hcnJheVtpbmRleF07aWYocHJlZGljYXRlKHZhbHVlLAppbmRleCxhcnJheSkpe3Jlc3VsdC5wdXNoKHZhbHVlKTtpbmRleGVzLnB1c2goaW5kZXgpfX1iYXNlUHVsbEF0KGFycmF5LGluZGV4ZXMpO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gcmV2ZXJzZShhcnJheSl7cmV0dXJuIGFycmF5PT1udWxsP2FycmF5Om5hdGl2ZVJldmVyc2UuY2FsbChhcnJheSl9ZnVuY3Rpb24gc2xpY2UoYXJyYXksc3RhcnQsZW5kKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuW107aWYoZW5kJiZ0eXBlb2YgZW5kIT0ibnVtYmVyIiYmaXNJdGVyYXRlZUNhbGwoYXJyYXksc3RhcnQsZW5kKSl7c3RhcnQ9MDtlbmQ9bGVuZ3RofWVsc2V7c3RhcnQ9c3RhcnQ9PW51bGw/MDp0b0ludGVnZXIoc3RhcnQpO2VuZD1lbmQ9PT11bmRlZmluZWQ/bGVuZ3RoOnRvSW50ZWdlcihlbmQpfXJldHVybiBiYXNlU2xpY2UoYXJyYXksc3RhcnQsZW5kKX1mdW5jdGlvbiBzb3J0ZWRJbmRleChhcnJheSx2YWx1ZSl7cmV0dXJuIGJhc2VTb3J0ZWRJbmRleChhcnJheSwKdmFsdWUpfWZ1bmN0aW9uIHNvcnRlZEluZGV4QnkoYXJyYXksdmFsdWUsaXRlcmF0ZWUpe3JldHVybiBiYXNlU29ydGVkSW5kZXhCeShhcnJheSx2YWx1ZSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSl9ZnVuY3Rpb24gc29ydGVkSW5kZXhPZihhcnJheSx2YWx1ZSl7dmFyIGxlbmd0aD1hcnJheT09bnVsbD8wOmFycmF5Lmxlbmd0aDtpZihsZW5ndGgpe3ZhciBpbmRleD1iYXNlU29ydGVkSW5kZXgoYXJyYXksdmFsdWUpO2lmKGluZGV4PGxlbmd0aCYmZXEoYXJyYXlbaW5kZXhdLHZhbHVlKSlyZXR1cm4gaW5kZXh9cmV0dXJuLTF9ZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4KGFycmF5LHZhbHVlKXtyZXR1cm4gYmFzZVNvcnRlZEluZGV4KGFycmF5LHZhbHVlLHRydWUpfWZ1bmN0aW9uIHNvcnRlZExhc3RJbmRleEJ5KGFycmF5LHZhbHVlLGl0ZXJhdGVlKXtyZXR1cm4gYmFzZVNvcnRlZEluZGV4QnkoYXJyYXksdmFsdWUsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMiksdHJ1ZSl9ZnVuY3Rpb24gc29ydGVkTGFzdEluZGV4T2YoYXJyYXksCnZhbHVlKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKGxlbmd0aCl7dmFyIGluZGV4PWJhc2VTb3J0ZWRJbmRleChhcnJheSx2YWx1ZSx0cnVlKS0xO2lmKGVxKGFycmF5W2luZGV4XSx2YWx1ZSkpcmV0dXJuIGluZGV4fXJldHVybi0xfWZ1bmN0aW9uIHNvcnRlZFVuaXEoYXJyYXkpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VTb3J0ZWRVbmlxKGFycmF5KTpbXX1mdW5jdGlvbiBzb3J0ZWRVbmlxQnkoYXJyYXksaXRlcmF0ZWUpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VTb3J0ZWRVbmlxKGFycmF5LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpKTpbXX1mdW5jdGlvbiB0YWlsKGFycmF5KXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO3JldHVybiBsZW5ndGg/YmFzZVNsaWNlKGFycmF5LDEsbGVuZ3RoKTpbXX1mdW5jdGlvbiB0YWtlKGFycmF5LG4sZ3VhcmQpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpcmV0dXJuW107Cm49Z3VhcmR8fG49PT11bmRlZmluZWQ/MTp0b0ludGVnZXIobik7cmV0dXJuIGJhc2VTbGljZShhcnJheSwwLG48MD8wOm4pfWZ1bmN0aW9uIHRha2VSaWdodChhcnJheSxuLGd1YXJkKXt2YXIgbGVuZ3RoPWFycmF5PT1udWxsPzA6YXJyYXkubGVuZ3RoO2lmKCFsZW5ndGgpcmV0dXJuW107bj1ndWFyZHx8bj09PXVuZGVmaW5lZD8xOnRvSW50ZWdlcihuKTtuPWxlbmd0aC1uO3JldHVybiBiYXNlU2xpY2UoYXJyYXksbjwwPzA6bixsZW5ndGgpfWZ1bmN0aW9uIHRha2VSaWdodFdoaWxlKGFycmF5LHByZWRpY2F0ZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVdoaWxlKGFycmF5LGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSxmYWxzZSx0cnVlKTpbXX1mdW5jdGlvbiB0YWtlV2hpbGUoYXJyYXkscHJlZGljYXRlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlV2hpbGUoYXJyYXksZ2V0SXRlcmF0ZWUocHJlZGljYXRlLDMpKTpbXX12YXIgdW5pb249YmFzZVJlc3QoZnVuY3Rpb24oYXJyYXlzKXtyZXR1cm4gYmFzZVVuaXEoYmFzZUZsYXR0ZW4oYXJyYXlzLAoxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpKX0pO3ZhciB1bmlvbkJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGl0ZXJhdGVlPWxhc3QoYXJyYXlzKTtpZihpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpaXRlcmF0ZWU9dW5kZWZpbmVkO3JldHVybiBiYXNlVW5pcShiYXNlRmxhdHRlbihhcnJheXMsMSxpc0FycmF5TGlrZU9iamVjdCx0cnVlKSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSl9KTt2YXIgdW5pb25XaXRoPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGNvbXBhcmF0b3I9bGFzdChhcnJheXMpO2NvbXBhcmF0b3I9dHlwZW9mIGNvbXBhcmF0b3I9PSJmdW5jdGlvbiI/Y29tcGFyYXRvcjp1bmRlZmluZWQ7cmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywxLGlzQXJyYXlMaWtlT2JqZWN0LHRydWUpLHVuZGVmaW5lZCxjb21wYXJhdG9yKX0pO2Z1bmN0aW9uIHVuaXEoYXJyYXkpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VVbmlxKGFycmF5KToKW119ZnVuY3Rpb24gdW5pcUJ5KGFycmF5LGl0ZXJhdGVlKXtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlVW5pcShhcnJheSxnZXRJdGVyYXRlZShpdGVyYXRlZSwyKSk6W119ZnVuY3Rpb24gdW5pcVdpdGgoYXJyYXksY29tcGFyYXRvcil7Y29tcGFyYXRvcj10eXBlb2YgY29tcGFyYXRvcj09ImZ1bmN0aW9uIj9jb21wYXJhdG9yOnVuZGVmaW5lZDtyZXR1cm4gYXJyYXkmJmFycmF5Lmxlbmd0aD9iYXNlVW5pcShhcnJheSx1bmRlZmluZWQsY29tcGFyYXRvcik6W119ZnVuY3Rpb24gdW56aXAoYXJyYXkpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpcmV0dXJuW107dmFyIGxlbmd0aD0wO2FycmF5PWFycmF5RmlsdGVyKGFycmF5LGZ1bmN0aW9uKGdyb3VwKXtpZihpc0FycmF5TGlrZU9iamVjdChncm91cCkpe2xlbmd0aD1uYXRpdmVNYXgoZ3JvdXAubGVuZ3RoLGxlbmd0aCk7cmV0dXJuIHRydWV9fSk7cmV0dXJuIGJhc2VUaW1lcyhsZW5ndGgsZnVuY3Rpb24oaW5kZXgpe3JldHVybiBhcnJheU1hcChhcnJheSwKYmFzZVByb3BlcnR5KGluZGV4KSl9KX1mdW5jdGlvbiB1bnppcFdpdGgoYXJyYXksaXRlcmF0ZWUpe2lmKCEoYXJyYXkmJmFycmF5Lmxlbmd0aCkpcmV0dXJuW107dmFyIHJlc3VsdD11bnppcChhcnJheSk7aWYoaXRlcmF0ZWU9PW51bGwpcmV0dXJuIHJlc3VsdDtyZXR1cm4gYXJyYXlNYXAocmVzdWx0LGZ1bmN0aW9uKGdyb3VwKXtyZXR1cm4gYXBwbHkoaXRlcmF0ZWUsdW5kZWZpbmVkLGdyb3VwKX0pfXZhciB3aXRob3V0PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5LHZhbHVlcyl7cmV0dXJuIGlzQXJyYXlMaWtlT2JqZWN0KGFycmF5KT9iYXNlRGlmZmVyZW5jZShhcnJheSx2YWx1ZXMpOltdfSk7dmFyIHhvcj1iYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3JldHVybiBiYXNlWG9yKGFycmF5RmlsdGVyKGFycmF5cyxpc0FycmF5TGlrZU9iamVjdCkpfSk7dmFyIHhvckJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGl0ZXJhdGVlPWxhc3QoYXJyYXlzKTtpZihpc0FycmF5TGlrZU9iamVjdChpdGVyYXRlZSkpaXRlcmF0ZWU9CnVuZGVmaW5lZDtyZXR1cm4gYmFzZVhvcihhcnJheUZpbHRlcihhcnJheXMsaXNBcnJheUxpa2VPYmplY3QpLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpKX0pO3ZhciB4b3JXaXRoPWJhc2VSZXN0KGZ1bmN0aW9uKGFycmF5cyl7dmFyIGNvbXBhcmF0b3I9bGFzdChhcnJheXMpO2NvbXBhcmF0b3I9dHlwZW9mIGNvbXBhcmF0b3I9PSJmdW5jdGlvbiI/Y29tcGFyYXRvcjp1bmRlZmluZWQ7cmV0dXJuIGJhc2VYb3IoYXJyYXlGaWx0ZXIoYXJyYXlzLGlzQXJyYXlMaWtlT2JqZWN0KSx1bmRlZmluZWQsY29tcGFyYXRvcil9KTt2YXIgemlwPWJhc2VSZXN0KHVuemlwKTtmdW5jdGlvbiB6aXBPYmplY3QocHJvcHMsdmFsdWVzKXtyZXR1cm4gYmFzZVppcE9iamVjdChwcm9wc3x8W10sdmFsdWVzfHxbXSxhc3NpZ25WYWx1ZSl9ZnVuY3Rpb24gemlwT2JqZWN0RGVlcChwcm9wcyx2YWx1ZXMpe3JldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzfHxbXSx2YWx1ZXN8fFtdLGJhc2VTZXQpfXZhciB6aXBXaXRoPQpiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpe3ZhciBsZW5ndGg9YXJyYXlzLmxlbmd0aCxpdGVyYXRlZT1sZW5ndGg+MT9hcnJheXNbbGVuZ3RoLTFdOnVuZGVmaW5lZDtpdGVyYXRlZT10eXBlb2YgaXRlcmF0ZWU9PSJmdW5jdGlvbiI/KGFycmF5cy5wb3AoKSxpdGVyYXRlZSk6dW5kZWZpbmVkO3JldHVybiB1bnppcFdpdGgoYXJyYXlzLGl0ZXJhdGVlKX0pO2Z1bmN0aW9uIGNoYWluKHZhbHVlKXt2YXIgcmVzdWx0PWxvZGFzaCh2YWx1ZSk7cmVzdWx0Ll9fY2hhaW5fXz10cnVlO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gdGFwKHZhbHVlLGludGVyY2VwdG9yKXtpbnRlcmNlcHRvcih2YWx1ZSk7cmV0dXJuIHZhbHVlfWZ1bmN0aW9uIHRocnUodmFsdWUsaW50ZXJjZXB0b3Ipe3JldHVybiBpbnRlcmNlcHRvcih2YWx1ZSl9dmFyIHdyYXBwZXJBdD1mbGF0UmVzdChmdW5jdGlvbihwYXRocyl7dmFyIGxlbmd0aD1wYXRocy5sZW5ndGgsc3RhcnQ9bGVuZ3RoP3BhdGhzWzBdOjAsdmFsdWU9CnRoaXMuX193cmFwcGVkX18saW50ZXJjZXB0b3I9ZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gYmFzZUF0KG9iamVjdCxwYXRocyl9O2lmKGxlbmd0aD4xfHx0aGlzLl9fYWN0aW9uc19fLmxlbmd0aHx8ISh2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKXx8IWlzSW5kZXgoc3RhcnQpKXJldHVybiB0aGlzLnRocnUoaW50ZXJjZXB0b3IpO3ZhbHVlPXZhbHVlLnNsaWNlKHN0YXJ0LCtzdGFydCsobGVuZ3RoPzE6MCkpO3ZhbHVlLl9fYWN0aW9uc19fLnB1c2goeyJmdW5jIjp0aHJ1LCJhcmdzIjpbaW50ZXJjZXB0b3JdLCJ0aGlzQXJnIjp1bmRlZmluZWR9KTtyZXR1cm4obmV3IExvZGFzaFdyYXBwZXIodmFsdWUsdGhpcy5fX2NoYWluX18pKS50aHJ1KGZ1bmN0aW9uKGFycmF5KXtpZihsZW5ndGgmJiFhcnJheS5sZW5ndGgpYXJyYXkucHVzaCh1bmRlZmluZWQpO3JldHVybiBhcnJheX0pfSk7ZnVuY3Rpb24gd3JhcHBlckNoYWluKCl7cmV0dXJuIGNoYWluKHRoaXMpfWZ1bmN0aW9uIHdyYXBwZXJDb21taXQoKXtyZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIodGhpcy52YWx1ZSgpLAp0aGlzLl9fY2hhaW5fXyl9ZnVuY3Rpb24gd3JhcHBlck5leHQoKXtpZih0aGlzLl9fdmFsdWVzX189PT11bmRlZmluZWQpdGhpcy5fX3ZhbHVlc19fPXRvQXJyYXkodGhpcy52YWx1ZSgpKTt2YXIgZG9uZT10aGlzLl9faW5kZXhfXz49dGhpcy5fX3ZhbHVlc19fLmxlbmd0aCx2YWx1ZT1kb25lP3VuZGVmaW5lZDp0aGlzLl9fdmFsdWVzX19bdGhpcy5fX2luZGV4X18rK107cmV0dXJueyJkb25lIjpkb25lLCJ2YWx1ZSI6dmFsdWV9fWZ1bmN0aW9uIHdyYXBwZXJUb0l0ZXJhdG9yKCl7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gd3JhcHBlclBsYW50KHZhbHVlKXt2YXIgcmVzdWx0LHBhcmVudD10aGlzO3doaWxlKHBhcmVudCBpbnN0YW5jZW9mIGJhc2VMb2Rhc2gpe3ZhciBjbG9uZT13cmFwcGVyQ2xvbmUocGFyZW50KTtjbG9uZS5fX2luZGV4X189MDtjbG9uZS5fX3ZhbHVlc19fPXVuZGVmaW5lZDtpZihyZXN1bHQpcHJldmlvdXMuX193cmFwcGVkX189Y2xvbmU7ZWxzZSByZXN1bHQ9Y2xvbmU7CnZhciBwcmV2aW91cz1jbG9uZTtwYXJlbnQ9cGFyZW50Ll9fd3JhcHBlZF9ffXByZXZpb3VzLl9fd3JhcHBlZF9fPXZhbHVlO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gd3JhcHBlclJldmVyc2UoKXt2YXIgdmFsdWU9dGhpcy5fX3dyYXBwZWRfXztpZih2YWx1ZSBpbnN0YW5jZW9mIExhenlXcmFwcGVyKXt2YXIgd3JhcHBlZD12YWx1ZTtpZih0aGlzLl9fYWN0aW9uc19fLmxlbmd0aCl3cmFwcGVkPW5ldyBMYXp5V3JhcHBlcih0aGlzKTt3cmFwcGVkPXdyYXBwZWQucmV2ZXJzZSgpO3dyYXBwZWQuX19hY3Rpb25zX18ucHVzaCh7ImZ1bmMiOnRocnUsImFyZ3MiOltyZXZlcnNlXSwidGhpc0FyZyI6dW5kZWZpbmVkfSk7cmV0dXJuIG5ldyBMb2Rhc2hXcmFwcGVyKHdyYXBwZWQsdGhpcy5fX2NoYWluX18pfXJldHVybiB0aGlzLnRocnUocmV2ZXJzZSl9ZnVuY3Rpb24gd3JhcHBlclZhbHVlKCl7cmV0dXJuIGJhc2VXcmFwcGVyVmFsdWUodGhpcy5fX3dyYXBwZWRfXyx0aGlzLl9fYWN0aW9uc19fKX0KdmFyIGNvdW50Qnk9Y3JlYXRlQWdncmVnYXRvcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHJlc3VsdCxrZXkpKSsrcmVzdWx0W2tleV07ZWxzZSBiYXNlQXNzaWduVmFsdWUocmVzdWx0LGtleSwxKX0pO2Z1bmN0aW9uIGV2ZXJ5KGNvbGxlY3Rpb24scHJlZGljYXRlLGd1YXJkKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5RXZlcnk6YmFzZUV2ZXJ5O2lmKGd1YXJkJiZpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLHByZWRpY2F0ZSxndWFyZCkpcHJlZGljYXRlPXVuZGVmaW5lZDtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKHByZWRpY2F0ZSwzKSl9ZnVuY3Rpb24gZmlsdGVyKGNvbGxlY3Rpb24scHJlZGljYXRlKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5RmlsdGVyOmJhc2VGaWx0ZXI7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixnZXRJdGVyYXRlZShwcmVkaWNhdGUsMykpfXZhciBmaW5kPQpjcmVhdGVGaW5kKGZpbmRJbmRleCk7dmFyIGZpbmRMYXN0PWNyZWF0ZUZpbmQoZmluZExhc3RJbmRleCk7ZnVuY3Rpb24gZmxhdE1hcChjb2xsZWN0aW9uLGl0ZXJhdGVlKXtyZXR1cm4gYmFzZUZsYXR0ZW4obWFwKGNvbGxlY3Rpb24saXRlcmF0ZWUpLDEpfWZ1bmN0aW9uIGZsYXRNYXBEZWVwKGNvbGxlY3Rpb24saXRlcmF0ZWUpe3JldHVybiBiYXNlRmxhdHRlbihtYXAoY29sbGVjdGlvbixpdGVyYXRlZSksSU5GSU5JVFkpfWZ1bmN0aW9uIGZsYXRNYXBEZXB0aChjb2xsZWN0aW9uLGl0ZXJhdGVlLGRlcHRoKXtkZXB0aD1kZXB0aD09PXVuZGVmaW5lZD8xOnRvSW50ZWdlcihkZXB0aCk7cmV0dXJuIGJhc2VGbGF0dGVuKG1hcChjb2xsZWN0aW9uLGl0ZXJhdGVlKSxkZXB0aCl9ZnVuY3Rpb24gZm9yRWFjaChjb2xsZWN0aW9uLGl0ZXJhdGVlKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5RWFjaDpiYXNlRWFjaDtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLAozKSl9ZnVuY3Rpb24gZm9yRWFjaFJpZ2h0KGNvbGxlY3Rpb24saXRlcmF0ZWUpe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlFYWNoUmlnaHQ6YmFzZUVhY2hSaWdodDtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpKX12YXIgZ3JvdXBCeT1jcmVhdGVBZ2dyZWdhdG9yKGZ1bmN0aW9uKHJlc3VsdCx2YWx1ZSxrZXkpe2lmKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LGtleSkpcmVzdWx0W2tleV0ucHVzaCh2YWx1ZSk7ZWxzZSBiYXNlQXNzaWduVmFsdWUocmVzdWx0LGtleSxbdmFsdWVdKX0pO2Z1bmN0aW9uIGluY2x1ZGVzKGNvbGxlY3Rpb24sdmFsdWUsZnJvbUluZGV4LGd1YXJkKXtjb2xsZWN0aW9uPWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pP2NvbGxlY3Rpb246dmFsdWVzKGNvbGxlY3Rpb24pO2Zyb21JbmRleD1mcm9tSW5kZXgmJiFndWFyZD90b0ludGVnZXIoZnJvbUluZGV4KTowO3ZhciBsZW5ndGg9Y29sbGVjdGlvbi5sZW5ndGg7CmlmKGZyb21JbmRleDwwKWZyb21JbmRleD1uYXRpdmVNYXgobGVuZ3RoK2Zyb21JbmRleCwwKTtyZXR1cm4gaXNTdHJpbmcoY29sbGVjdGlvbik/ZnJvbUluZGV4PD1sZW5ndGgmJmNvbGxlY3Rpb24uaW5kZXhPZih2YWx1ZSxmcm9tSW5kZXgpPi0xOiEhbGVuZ3RoJiZiYXNlSW5kZXhPZihjb2xsZWN0aW9uLHZhbHVlLGZyb21JbmRleCk+LTF9dmFyIGludm9rZU1hcD1iYXNlUmVzdChmdW5jdGlvbihjb2xsZWN0aW9uLHBhdGgsYXJncyl7dmFyIGluZGV4PS0xLGlzRnVuYz10eXBlb2YgcGF0aD09ImZ1bmN0aW9uIixyZXN1bHQ9aXNBcnJheUxpa2UoY29sbGVjdGlvbik/QXJyYXkoY29sbGVjdGlvbi5sZW5ndGgpOltdO2Jhc2VFYWNoKGNvbGxlY3Rpb24sZnVuY3Rpb24odmFsdWUpe3Jlc3VsdFsrK2luZGV4XT1pc0Z1bmM/YXBwbHkocGF0aCx2YWx1ZSxhcmdzKTpiYXNlSW52b2tlKHZhbHVlLHBhdGgsYXJncyl9KTtyZXR1cm4gcmVzdWx0fSk7dmFyIGtleUJ5PWNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LAp2YWx1ZSxrZXkpe2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsa2V5LHZhbHVlKX0pO2Z1bmN0aW9uIG1hcChjb2xsZWN0aW9uLGl0ZXJhdGVlKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5TWFwOmJhc2VNYXA7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixnZXRJdGVyYXRlZShpdGVyYXRlZSwzKSl9ZnVuY3Rpb24gb3JkZXJCeShjb2xsZWN0aW9uLGl0ZXJhdGVlcyxvcmRlcnMsZ3VhcmQpe2lmKGNvbGxlY3Rpb249PW51bGwpcmV0dXJuW107aWYoIWlzQXJyYXkoaXRlcmF0ZWVzKSlpdGVyYXRlZXM9aXRlcmF0ZWVzPT1udWxsP1tdOltpdGVyYXRlZXNdO29yZGVycz1ndWFyZD91bmRlZmluZWQ6b3JkZXJzO2lmKCFpc0FycmF5KG9yZGVycykpb3JkZXJzPW9yZGVycz09bnVsbD9bXTpbb3JkZXJzXTtyZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbixpdGVyYXRlZXMsb3JkZXJzKX12YXIgcGFydGl0aW9uPWNyZWF0ZUFnZ3JlZ2F0b3IoZnVuY3Rpb24ocmVzdWx0LHZhbHVlLAprZXkpe3Jlc3VsdFtrZXk/MDoxXS5wdXNoKHZhbHVlKX0sZnVuY3Rpb24oKXtyZXR1cm5bW10sW11dfSk7ZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24saXRlcmF0ZWUsYWNjdW11bGF0b3Ipe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlSZWR1Y2U6YmFzZVJlZHVjZSxpbml0QWNjdW09YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBmdW5jKGNvbGxlY3Rpb24sZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsNCksYWNjdW11bGF0b3IsaW5pdEFjY3VtLGJhc2VFYWNoKX1mdW5jdGlvbiByZWR1Y2VSaWdodChjb2xsZWN0aW9uLGl0ZXJhdGVlLGFjY3VtdWxhdG9yKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5UmVkdWNlUmlnaHQ6YmFzZVJlZHVjZSxpbml0QWNjdW09YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiBmdW5jKGNvbGxlY3Rpb24sZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsNCksYWNjdW11bGF0b3IsaW5pdEFjY3VtLGJhc2VFYWNoUmlnaHQpfWZ1bmN0aW9uIHJlamVjdChjb2xsZWN0aW9uLApwcmVkaWNhdGUpe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlGaWx0ZXI6YmFzZUZpbHRlcjtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uLG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUsMykpKX1mdW5jdGlvbiBzYW1wbGUoY29sbGVjdGlvbil7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheVNhbXBsZTpiYXNlU2FtcGxlO3JldHVybiBmdW5jKGNvbGxlY3Rpb24pfWZ1bmN0aW9uIHNhbXBsZVNpemUoY29sbGVjdGlvbixuLGd1YXJkKXtpZihndWFyZD9pc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLG4sZ3VhcmQpOm49PT11bmRlZmluZWQpbj0xO2Vsc2Ugbj10b0ludGVnZXIobik7dmFyIGZ1bmM9aXNBcnJheShjb2xsZWN0aW9uKT9hcnJheVNhbXBsZVNpemU6YmFzZVNhbXBsZVNpemU7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixuKX1mdW5jdGlvbiBzaHVmZmxlKGNvbGxlY3Rpb24pe3ZhciBmdW5jPWlzQXJyYXkoY29sbGVjdGlvbik/YXJyYXlTaHVmZmxlOgpiYXNlU2h1ZmZsZTtyZXR1cm4gZnVuYyhjb2xsZWN0aW9uKX1mdW5jdGlvbiBzaXplKGNvbGxlY3Rpb24pe2lmKGNvbGxlY3Rpb249PW51bGwpcmV0dXJuIDA7aWYoaXNBcnJheUxpa2UoY29sbGVjdGlvbikpcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pP3N0cmluZ1NpemUoY29sbGVjdGlvbik6Y29sbGVjdGlvbi5sZW5ndGg7dmFyIHRhZz1nZXRUYWcoY29sbGVjdGlvbik7aWYodGFnPT1tYXBUYWd8fHRhZz09c2V0VGFnKXJldHVybiBjb2xsZWN0aW9uLnNpemU7cmV0dXJuIGJhc2VLZXlzKGNvbGxlY3Rpb24pLmxlbmd0aH1mdW5jdGlvbiBzb21lKGNvbGxlY3Rpb24scHJlZGljYXRlLGd1YXJkKXt2YXIgZnVuYz1pc0FycmF5KGNvbGxlY3Rpb24pP2FycmF5U29tZTpiYXNlU29tZTtpZihndWFyZCYmaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbixwcmVkaWNhdGUsZ3VhcmQpKXByZWRpY2F0ZT11bmRlZmluZWQ7cmV0dXJuIGZ1bmMoY29sbGVjdGlvbixnZXRJdGVyYXRlZShwcmVkaWNhdGUsCjMpKX12YXIgc29ydEJ5PWJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24saXRlcmF0ZWVzKXtpZihjb2xsZWN0aW9uPT1udWxsKXJldHVybltdO3ZhciBsZW5ndGg9aXRlcmF0ZWVzLmxlbmd0aDtpZihsZW5ndGg+MSYmaXNJdGVyYXRlZUNhbGwoY29sbGVjdGlvbixpdGVyYXRlZXNbMF0saXRlcmF0ZWVzWzFdKSlpdGVyYXRlZXM9W107ZWxzZSBpZihsZW5ndGg+MiYmaXNJdGVyYXRlZUNhbGwoaXRlcmF0ZWVzWzBdLGl0ZXJhdGVlc1sxXSxpdGVyYXRlZXNbMl0pKWl0ZXJhdGVlcz1baXRlcmF0ZWVzWzBdXTtyZXR1cm4gYmFzZU9yZGVyQnkoY29sbGVjdGlvbixiYXNlRmxhdHRlbihpdGVyYXRlZXMsMSksW10pfSk7dmFyIG5vdz1jdHhOb3d8fGZ1bmN0aW9uKCl7cmV0dXJuIHJvb3QuRGF0ZS5ub3coKX07ZnVuY3Rpb24gYWZ0ZXIobixmdW5jKXtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7bj10b0ludGVnZXIobik7CnJldHVybiBmdW5jdGlvbigpe2lmKC0tbjwxKXJldHVybiBmdW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gYXJ5KGZ1bmMsbixndWFyZCl7bj1ndWFyZD91bmRlZmluZWQ6bjtuPWZ1bmMmJm49PW51bGw/ZnVuYy5sZW5ndGg6bjtyZXR1cm4gY3JlYXRlV3JhcChmdW5jLFdSQVBfQVJZX0ZMQUcsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLG4pfWZ1bmN0aW9uIGJlZm9yZShuLGZ1bmMpe3ZhciByZXN1bHQ7aWYodHlwZW9mIGZ1bmMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO249dG9JbnRlZ2VyKG4pO3JldHVybiBmdW5jdGlvbigpe2lmKC0tbj4wKXJlc3VsdD1mdW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihuPD0xKWZ1bmM9dW5kZWZpbmVkO3JldHVybiByZXN1bHR9fXZhciBiaW5kPWJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsdGhpc0FyZyxwYXJ0aWFscyl7dmFyIGJpdG1hc2s9V1JBUF9CSU5EX0ZMQUc7CmlmKHBhcnRpYWxzLmxlbmd0aCl7dmFyIGhvbGRlcnM9cmVwbGFjZUhvbGRlcnMocGFydGlhbHMsZ2V0SG9sZGVyKGJpbmQpKTtiaXRtYXNrfD1XUkFQX1BBUlRJQUxfRkxBR31yZXR1cm4gY3JlYXRlV3JhcChmdW5jLGJpdG1hc2ssdGhpc0FyZyxwYXJ0aWFscyxob2xkZXJzKX0pO3ZhciBiaW5kS2V5PWJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCxrZXkscGFydGlhbHMpe3ZhciBiaXRtYXNrPVdSQVBfQklORF9GTEFHfFdSQVBfQklORF9LRVlfRkxBRztpZihwYXJ0aWFscy5sZW5ndGgpe3ZhciBob2xkZXJzPXJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLGdldEhvbGRlcihiaW5kS2V5KSk7Yml0bWFza3w9V1JBUF9QQVJUSUFMX0ZMQUd9cmV0dXJuIGNyZWF0ZVdyYXAoa2V5LGJpdG1hc2ssb2JqZWN0LHBhcnRpYWxzLGhvbGRlcnMpfSk7ZnVuY3Rpb24gY3VycnkoZnVuYyxhcml0eSxndWFyZCl7YXJpdHk9Z3VhcmQ/dW5kZWZpbmVkOmFyaXR5O3ZhciByZXN1bHQ9Y3JlYXRlV3JhcChmdW5jLApXUkFQX0NVUlJZX0ZMQUcsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCxhcml0eSk7cmVzdWx0LnBsYWNlaG9sZGVyPWN1cnJ5LnBsYWNlaG9sZGVyO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gY3VycnlSaWdodChmdW5jLGFyaXR5LGd1YXJkKXthcml0eT1ndWFyZD91bmRlZmluZWQ6YXJpdHk7dmFyIHJlc3VsdD1jcmVhdGVXcmFwKGZ1bmMsV1JBUF9DVVJSWV9SSUdIVF9GTEFHLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsYXJpdHkpO3Jlc3VsdC5wbGFjZWhvbGRlcj1jdXJyeVJpZ2h0LnBsYWNlaG9sZGVyO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gZGVib3VuY2UoZnVuYyx3YWl0LG9wdGlvbnMpe3ZhciBsYXN0QXJncyxsYXN0VGhpcyxtYXhXYWl0LHJlc3VsdCx0aW1lcklkLGxhc3RDYWxsVGltZSxsYXN0SW52b2tlVGltZT0wLGxlYWRpbmc9ZmFsc2UsbWF4aW5nPWZhbHNlLHRyYWlsaW5nPXRydWU7CmlmKHR5cGVvZiBmdW5jIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTt3YWl0PXRvTnVtYmVyKHdhaXQpfHwwO2lmKGlzT2JqZWN0KG9wdGlvbnMpKXtsZWFkaW5nPSEhb3B0aW9ucy5sZWFkaW5nO21heGluZz0ibWF4V2FpdCJpbiBvcHRpb25zO21heFdhaXQ9bWF4aW5nP25hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpfHwwLHdhaXQpOm1heFdhaXQ7dHJhaWxpbmc9InRyYWlsaW5nImluIG9wdGlvbnM/ISFvcHRpb25zLnRyYWlsaW5nOnRyYWlsaW5nfWZ1bmN0aW9uIGludm9rZUZ1bmModGltZSl7dmFyIGFyZ3M9bGFzdEFyZ3MsdGhpc0FyZz1sYXN0VGhpcztsYXN0QXJncz1sYXN0VGhpcz11bmRlZmluZWQ7bGFzdEludm9rZVRpbWU9dGltZTtyZXN1bHQ9ZnVuYy5hcHBseSh0aGlzQXJnLGFyZ3MpO3JldHVybiByZXN1bHR9ZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSl7bGFzdEludm9rZVRpbWU9dGltZTt0aW1lcklkPXNldFRpbWVvdXQodGltZXJFeHBpcmVkLAp3YWl0KTtyZXR1cm4gbGVhZGluZz9pbnZva2VGdW5jKHRpbWUpOnJlc3VsdH1mdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpe3ZhciB0aW1lU2luY2VMYXN0Q2FsbD10aW1lLWxhc3RDYWxsVGltZSx0aW1lU2luY2VMYXN0SW52b2tlPXRpbWUtbGFzdEludm9rZVRpbWUsdGltZVdhaXRpbmc9d2FpdC10aW1lU2luY2VMYXN0Q2FsbDtyZXR1cm4gbWF4aW5nP25hdGl2ZU1pbih0aW1lV2FpdGluZyxtYXhXYWl0LXRpbWVTaW5jZUxhc3RJbnZva2UpOnRpbWVXYWl0aW5nfWZ1bmN0aW9uIHNob3VsZEludm9rZSh0aW1lKXt2YXIgdGltZVNpbmNlTGFzdENhbGw9dGltZS1sYXN0Q2FsbFRpbWUsdGltZVNpbmNlTGFzdEludm9rZT10aW1lLWxhc3RJbnZva2VUaW1lO3JldHVybiBsYXN0Q2FsbFRpbWU9PT11bmRlZmluZWR8fHRpbWVTaW5jZUxhc3RDYWxsPj13YWl0fHx0aW1lU2luY2VMYXN0Q2FsbDwwfHxtYXhpbmcmJnRpbWVTaW5jZUxhc3RJbnZva2U+PW1heFdhaXR9ZnVuY3Rpb24gdGltZXJFeHBpcmVkKCl7dmFyIHRpbWU9Cm5vdygpO2lmKHNob3VsZEludm9rZSh0aW1lKSlyZXR1cm4gdHJhaWxpbmdFZGdlKHRpbWUpO3RpbWVySWQ9c2V0VGltZW91dCh0aW1lckV4cGlyZWQscmVtYWluaW5nV2FpdCh0aW1lKSl9ZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpe3RpbWVySWQ9dW5kZWZpbmVkO2lmKHRyYWlsaW5nJiZsYXN0QXJncylyZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtsYXN0QXJncz1sYXN0VGhpcz11bmRlZmluZWQ7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBjYW5jZWwoKXtpZih0aW1lcklkIT09dW5kZWZpbmVkKWNsZWFyVGltZW91dCh0aW1lcklkKTtsYXN0SW52b2tlVGltZT0wO2xhc3RBcmdzPWxhc3RDYWxsVGltZT1sYXN0VGhpcz10aW1lcklkPXVuZGVmaW5lZH1mdW5jdGlvbiBmbHVzaCgpe3JldHVybiB0aW1lcklkPT09dW5kZWZpbmVkP3Jlc3VsdDp0cmFpbGluZ0VkZ2Uobm93KCkpfWZ1bmN0aW9uIGRlYm91bmNlZCgpe3ZhciB0aW1lPW5vdygpLGlzSW52b2tpbmc9c2hvdWxkSW52b2tlKHRpbWUpOwpsYXN0QXJncz1hcmd1bWVudHM7bGFzdFRoaXM9dGhpcztsYXN0Q2FsbFRpbWU9dGltZTtpZihpc0ludm9raW5nKXtpZih0aW1lcklkPT09dW5kZWZpbmVkKXJldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO2lmKG1heGluZyl7dGltZXJJZD1zZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCx3YWl0KTtyZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpfX1pZih0aW1lcklkPT09dW5kZWZpbmVkKXRpbWVySWQ9c2V0VGltZW91dCh0aW1lckV4cGlyZWQsd2FpdCk7cmV0dXJuIHJlc3VsdH1kZWJvdW5jZWQuY2FuY2VsPWNhbmNlbDtkZWJvdW5jZWQuZmx1c2g9Zmx1c2g7cmV0dXJuIGRlYm91bmNlZH12YXIgZGVmZXI9YmFzZVJlc3QoZnVuY3Rpb24oZnVuYyxhcmdzKXtyZXR1cm4gYmFzZURlbGF5KGZ1bmMsMSxhcmdzKX0pO3ZhciBkZWxheT1iYXNlUmVzdChmdW5jdGlvbihmdW5jLHdhaXQsYXJncyl7cmV0dXJuIGJhc2VEZWxheShmdW5jLHRvTnVtYmVyKHdhaXQpfHwwLGFyZ3MpfSk7CmZ1bmN0aW9uIGZsaXAoZnVuYyl7cmV0dXJuIGNyZWF0ZVdyYXAoZnVuYyxXUkFQX0ZMSVBfRkxBRyl9ZnVuY3Rpb24gbWVtb2l6ZShmdW5jLHJlc29sdmVyKXtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uInx8cmVzb2x2ZXIhPW51bGwmJnR5cGVvZiByZXNvbHZlciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7dmFyIG1lbW9pemVkPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzLGtleT1yZXNvbHZlcj9yZXNvbHZlci5hcHBseSh0aGlzLGFyZ3MpOmFyZ3NbMF0sY2FjaGU9bWVtb2l6ZWQuY2FjaGU7aWYoY2FjaGUuaGFzKGtleSkpcmV0dXJuIGNhY2hlLmdldChrZXkpO3ZhciByZXN1bHQ9ZnVuYy5hcHBseSh0aGlzLGFyZ3MpO21lbW9pemVkLmNhY2hlPWNhY2hlLnNldChrZXkscmVzdWx0KXx8Y2FjaGU7cmV0dXJuIHJlc3VsdH07bWVtb2l6ZWQuY2FjaGU9bmV3IChtZW1vaXplLkNhY2hlfHxNYXBDYWNoZSk7cmV0dXJuIG1lbW9pemVkfQptZW1vaXplLkNhY2hlPU1hcENhY2hlO2Z1bmN0aW9uIG5lZ2F0ZShwcmVkaWNhdGUpe2lmKHR5cGVvZiBwcmVkaWNhdGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO3JldHVybiBmdW5jdGlvbigpe3ZhciBhcmdzPWFyZ3VtZW50cztzd2l0Y2goYXJncy5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyk7Y2FzZSAxOnJldHVybiFwcmVkaWNhdGUuY2FsbCh0aGlzLGFyZ3NbMF0pO2Nhc2UgMjpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyxhcmdzWzBdLGFyZ3NbMV0pO2Nhc2UgMzpyZXR1cm4hcHJlZGljYXRlLmNhbGwodGhpcyxhcmdzWzBdLGFyZ3NbMV0sYXJnc1syXSl9cmV0dXJuIXByZWRpY2F0ZS5hcHBseSh0aGlzLGFyZ3MpfX1mdW5jdGlvbiBvbmNlKGZ1bmMpe3JldHVybiBiZWZvcmUoMixmdW5jKX12YXIgb3ZlckFyZ3M9Y2FzdFJlc3QoZnVuY3Rpb24oZnVuYyx0cmFuc2Zvcm1zKXt0cmFuc2Zvcm1zPXRyYW5zZm9ybXMubGVuZ3RoPT0KMSYmaXNBcnJheSh0cmFuc2Zvcm1zWzBdKT9hcnJheU1hcCh0cmFuc2Zvcm1zWzBdLGJhc2VVbmFyeShnZXRJdGVyYXRlZSgpKSk6YXJyYXlNYXAoYmFzZUZsYXR0ZW4odHJhbnNmb3JtcywxKSxiYXNlVW5hcnkoZ2V0SXRlcmF0ZWUoKSkpO3ZhciBmdW5jc0xlbmd0aD10cmFuc2Zvcm1zLmxlbmd0aDtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7dmFyIGluZGV4PS0xLGxlbmd0aD1uYXRpdmVNaW4oYXJncy5sZW5ndGgsZnVuY3NMZW5ndGgpO3doaWxlKCsraW5kZXg8bGVuZ3RoKWFyZ3NbaW5kZXhdPXRyYW5zZm9ybXNbaW5kZXhdLmNhbGwodGhpcyxhcmdzW2luZGV4XSk7cmV0dXJuIGFwcGx5KGZ1bmMsdGhpcyxhcmdzKX0pfSk7dmFyIHBhcnRpYWw9YmFzZVJlc3QoZnVuY3Rpb24oZnVuYyxwYXJ0aWFscyl7dmFyIGhvbGRlcnM9cmVwbGFjZUhvbGRlcnMocGFydGlhbHMsZ2V0SG9sZGVyKHBhcnRpYWwpKTtyZXR1cm4gY3JlYXRlV3JhcChmdW5jLFdSQVBfUEFSVElBTF9GTEFHLAp1bmRlZmluZWQscGFydGlhbHMsaG9sZGVycyl9KTt2YXIgcGFydGlhbFJpZ2h0PWJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMscGFydGlhbHMpe3ZhciBob2xkZXJzPXJlcGxhY2VIb2xkZXJzKHBhcnRpYWxzLGdldEhvbGRlcihwYXJ0aWFsUmlnaHQpKTtyZXR1cm4gY3JlYXRlV3JhcChmdW5jLFdSQVBfUEFSVElBTF9SSUdIVF9GTEFHLHVuZGVmaW5lZCxwYXJ0aWFscyxob2xkZXJzKX0pO3ZhciByZWFyZz1mbGF0UmVzdChmdW5jdGlvbihmdW5jLGluZGV4ZXMpe3JldHVybiBjcmVhdGVXcmFwKGZ1bmMsV1JBUF9SRUFSR19GTEFHLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLGluZGV4ZXMpfSk7ZnVuY3Rpb24gcmVzdChmdW5jLHN0YXJ0KXtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7c3RhcnQ9c3RhcnQ9PT11bmRlZmluZWQ/c3RhcnQ6dG9JbnRlZ2VyKHN0YXJ0KTtyZXR1cm4gYmFzZVJlc3QoZnVuYyxzdGFydCl9CmZ1bmN0aW9uIHNwcmVhZChmdW5jLHN0YXJ0KXtpZih0eXBlb2YgZnVuYyE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7c3RhcnQ9c3RhcnQ9PW51bGw/MDpuYXRpdmVNYXgodG9JbnRlZ2VyKHN0YXJ0KSwwKTtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7dmFyIGFycmF5PWFyZ3Nbc3RhcnRdLG90aGVyQXJncz1jYXN0U2xpY2UoYXJncywwLHN0YXJ0KTtpZihhcnJheSlhcnJheVB1c2gob3RoZXJBcmdzLGFycmF5KTtyZXR1cm4gYXBwbHkoZnVuYyx0aGlzLG90aGVyQXJncyl9KX1mdW5jdGlvbiB0aHJvdHRsZShmdW5jLHdhaXQsb3B0aW9ucyl7dmFyIGxlYWRpbmc9dHJ1ZSx0cmFpbGluZz10cnVlO2lmKHR5cGVvZiBmdW5jIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtpZihpc09iamVjdChvcHRpb25zKSl7bGVhZGluZz0ibGVhZGluZyJpbiBvcHRpb25zPyEhb3B0aW9ucy5sZWFkaW5nOgpsZWFkaW5nO3RyYWlsaW5nPSJ0cmFpbGluZyJpbiBvcHRpb25zPyEhb3B0aW9ucy50cmFpbGluZzp0cmFpbGluZ31yZXR1cm4gZGVib3VuY2UoZnVuYyx3YWl0LHsibGVhZGluZyI6bGVhZGluZywibWF4V2FpdCI6d2FpdCwidHJhaWxpbmciOnRyYWlsaW5nfSl9ZnVuY3Rpb24gdW5hcnkoZnVuYyl7cmV0dXJuIGFyeShmdW5jLDEpfWZ1bmN0aW9uIHdyYXAodmFsdWUsd3JhcHBlcil7cmV0dXJuIHBhcnRpYWwoY2FzdEZ1bmN0aW9uKHdyYXBwZXIpLHZhbHVlKX1mdW5jdGlvbiBjYXN0QXJyYXkoKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bXTt2YXIgdmFsdWU9YXJndW1lbnRzWzBdO3JldHVybiBpc0FycmF5KHZhbHVlKT92YWx1ZTpbdmFsdWVdfWZ1bmN0aW9uIGNsb25lKHZhbHVlKXtyZXR1cm4gYmFzZUNsb25lKHZhbHVlLENMT05FX1NZTUJPTFNfRkxBRyl9ZnVuY3Rpb24gY2xvbmVXaXRoKHZhbHVlLGN1c3RvbWl6ZXIpe2N1c3RvbWl6ZXI9dHlwZW9mIGN1c3RvbWl6ZXI9PQoiZnVuY3Rpb24iP2N1c3RvbWl6ZXI6dW5kZWZpbmVkO3JldHVybiBiYXNlQ2xvbmUodmFsdWUsQ0xPTkVfU1lNQk9MU19GTEFHLGN1c3RvbWl6ZXIpfWZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSl7cmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSxDTE9ORV9ERUVQX0ZMQUd8Q0xPTkVfU1lNQk9MU19GTEFHKX1mdW5jdGlvbiBjbG9uZURlZXBXaXRoKHZhbHVlLGN1c3RvbWl6ZXIpe2N1c3RvbWl6ZXI9dHlwZW9mIGN1c3RvbWl6ZXI9PSJmdW5jdGlvbiI/Y3VzdG9taXplcjp1bmRlZmluZWQ7cmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSxDTE9ORV9ERUVQX0ZMQUd8Q0xPTkVfU1lNQk9MU19GTEFHLGN1c3RvbWl6ZXIpfWZ1bmN0aW9uIGNvbmZvcm1zVG8ob2JqZWN0LHNvdXJjZSl7cmV0dXJuIHNvdXJjZT09bnVsbHx8YmFzZUNvbmZvcm1zVG8ob2JqZWN0LHNvdXJjZSxrZXlzKHNvdXJjZSkpfWZ1bmN0aW9uIGVxKHZhbHVlLG90aGVyKXtyZXR1cm4gdmFsdWU9PT1vdGhlcnx8dmFsdWUhPT12YWx1ZSYmCm90aGVyIT09b3RoZXJ9dmFyIGd0PWNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oYmFzZUd0KTt2YXIgZ3RlPWNyZWF0ZVJlbGF0aW9uYWxPcGVyYXRpb24oZnVuY3Rpb24odmFsdWUsb3RoZXIpe3JldHVybiB2YWx1ZT49b3RoZXJ9KTt2YXIgaXNBcmd1bWVudHM9YmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/YmFzZUlzQXJndW1lbnRzOmZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwiY2FsbGVlIikmJiFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCJjYWxsZWUiKX07dmFyIGlzQXJyYXk9QXJyYXkuaXNBcnJheTt2YXIgaXNBcnJheUJ1ZmZlcj1ub2RlSXNBcnJheUJ1ZmZlcj9iYXNlVW5hcnkobm9kZUlzQXJyYXlCdWZmZXIpOmJhc2VJc0FycmF5QnVmZmVyO2Z1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKXtyZXR1cm4gdmFsdWUhPW51bGwmJmlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkmJgohaXNGdW5jdGlvbih2YWx1ZSl9ZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZpc0FycmF5TGlrZSh2YWx1ZSl9ZnVuY3Rpb24gaXNCb29sZWFuKHZhbHVlKXtyZXR1cm4gdmFsdWU9PT10cnVlfHx2YWx1ZT09PWZhbHNlfHxpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09Ym9vbFRhZ312YXIgaXNCdWZmZXI9bmF0aXZlSXNCdWZmZXJ8fHN0dWJGYWxzZTt2YXIgaXNEYXRlPW5vZGVJc0RhdGU/YmFzZVVuYXJ5KG5vZGVJc0RhdGUpOmJhc2VJc0RhdGU7ZnVuY3Rpb24gaXNFbGVtZW50KHZhbHVlKXtyZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSYmdmFsdWUubm9kZVR5cGU9PT0xJiYhaXNQbGFpbk9iamVjdCh2YWx1ZSl9ZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSl7aWYodmFsdWU9PW51bGwpcmV0dXJuIHRydWU7aWYoaXNBcnJheUxpa2UodmFsdWUpJiYoaXNBcnJheSh2YWx1ZSl8fHR5cGVvZiB2YWx1ZT09CiJzdHJpbmcifHx0eXBlb2YgdmFsdWUuc3BsaWNlPT0iZnVuY3Rpb24ifHxpc0J1ZmZlcih2YWx1ZSl8fGlzVHlwZWRBcnJheSh2YWx1ZSl8fGlzQXJndW1lbnRzKHZhbHVlKSkpcmV0dXJuIXZhbHVlLmxlbmd0aDt2YXIgdGFnPWdldFRhZyh2YWx1ZSk7aWYodGFnPT1tYXBUYWd8fHRhZz09c2V0VGFnKXJldHVybiF2YWx1ZS5zaXplO2lmKGlzUHJvdG90eXBlKHZhbHVlKSlyZXR1cm4hYmFzZUtleXModmFsdWUpLmxlbmd0aDtmb3IodmFyIGtleSBpbiB2YWx1ZSlpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLGtleSkpcmV0dXJuIGZhbHNlO3JldHVybiB0cnVlfWZ1bmN0aW9uIGlzRXF1YWwodmFsdWUsb3RoZXIpe3JldHVybiBiYXNlSXNFcXVhbCh2YWx1ZSxvdGhlcil9ZnVuY3Rpb24gaXNFcXVhbFdpdGgodmFsdWUsb3RoZXIsY3VzdG9taXplcil7Y3VzdG9taXplcj10eXBlb2YgY3VzdG9taXplcj09ImZ1bmN0aW9uIj9jdXN0b21pemVyOnVuZGVmaW5lZDt2YXIgcmVzdWx0PQpjdXN0b21pemVyP2N1c3RvbWl6ZXIodmFsdWUsb3RoZXIpOnVuZGVmaW5lZDtyZXR1cm4gcmVzdWx0PT09dW5kZWZpbmVkP2Jhc2VJc0VxdWFsKHZhbHVlLG90aGVyLHVuZGVmaW5lZCxjdXN0b21pemVyKTohIXJlc3VsdH1mdW5jdGlvbiBpc0Vycm9yKHZhbHVlKXtpZighaXNPYmplY3RMaWtlKHZhbHVlKSlyZXR1cm4gZmFsc2U7dmFyIHRhZz1iYXNlR2V0VGFnKHZhbHVlKTtyZXR1cm4gdGFnPT1lcnJvclRhZ3x8dGFnPT1kb21FeGNUYWd8fHR5cGVvZiB2YWx1ZS5tZXNzYWdlPT0ic3RyaW5nIiYmdHlwZW9mIHZhbHVlLm5hbWU9PSJzdHJpbmciJiYhaXNQbGFpbk9iamVjdCh2YWx1ZSl9ZnVuY3Rpb24gaXNGaW5pdGUodmFsdWUpe3JldHVybiB0eXBlb2YgdmFsdWU9PSJudW1iZXIiJiZuYXRpdmVJc0Zpbml0ZSh2YWx1ZSl9ZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSl7aWYoIWlzT2JqZWN0KHZhbHVlKSlyZXR1cm4gZmFsc2U7dmFyIHRhZz1iYXNlR2V0VGFnKHZhbHVlKTtyZXR1cm4gdGFnPT0KZnVuY1RhZ3x8dGFnPT1nZW5UYWd8fHRhZz09YXN5bmNUYWd8fHRhZz09cHJveHlUYWd9ZnVuY3Rpb24gaXNJbnRlZ2VyKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT0ibnVtYmVyIiYmdmFsdWU9PXRvSW50ZWdlcih2YWx1ZSl9ZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpe3JldHVybiB0eXBlb2YgdmFsdWU9PSJudW1iZXIiJiZ2YWx1ZT4tMSYmdmFsdWUlMT09MCYmdmFsdWU8PU1BWF9TQUZFX0lOVEVHRVJ9ZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpe3ZhciB0eXBlPXR5cGVvZiB2YWx1ZTtyZXR1cm4gdmFsdWUhPW51bGwmJih0eXBlPT0ib2JqZWN0Inx8dHlwZT09ImZ1bmN0aW9uIil9ZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKXtyZXR1cm4gdmFsdWUhPW51bGwmJnR5cGVvZiB2YWx1ZT09Im9iamVjdCJ9dmFyIGlzTWFwPW5vZGVJc01hcD9iYXNlVW5hcnkobm9kZUlzTWFwKTpiYXNlSXNNYXA7ZnVuY3Rpb24gaXNNYXRjaChvYmplY3Qsc291cmNlKXtyZXR1cm4gb2JqZWN0PT09CnNvdXJjZXx8YmFzZUlzTWF0Y2gob2JqZWN0LHNvdXJjZSxnZXRNYXRjaERhdGEoc291cmNlKSl9ZnVuY3Rpb24gaXNNYXRjaFdpdGgob2JqZWN0LHNvdXJjZSxjdXN0b21pemVyKXtjdXN0b21pemVyPXR5cGVvZiBjdXN0b21pemVyPT0iZnVuY3Rpb24iP2N1c3RvbWl6ZXI6dW5kZWZpbmVkO3JldHVybiBiYXNlSXNNYXRjaChvYmplY3Qsc291cmNlLGdldE1hdGNoRGF0YShzb3VyY2UpLGN1c3RvbWl6ZXIpfWZ1bmN0aW9uIGlzTmFOKHZhbHVlKXtyZXR1cm4gaXNOdW1iZXIodmFsdWUpJiZ2YWx1ZSE9K3ZhbHVlfWZ1bmN0aW9uIGlzTmF0aXZlKHZhbHVlKXtpZihpc01hc2thYmxlKHZhbHVlKSl0aHJvdyBuZXcgRXJyb3IoQ09SRV9FUlJPUl9URVhUKTtyZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKX1mdW5jdGlvbiBpc051bGwodmFsdWUpe3JldHVybiB2YWx1ZT09PW51bGx9ZnVuY3Rpb24gaXNOaWwodmFsdWUpe3JldHVybiB2YWx1ZT09bnVsbH1mdW5jdGlvbiBpc051bWJlcih2YWx1ZSl7cmV0dXJuIHR5cGVvZiB2YWx1ZT09CiJudW1iZXIifHxpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09bnVtYmVyVGFnfWZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpe2lmKCFpc09iamVjdExpa2UodmFsdWUpfHxiYXNlR2V0VGFnKHZhbHVlKSE9b2JqZWN0VGFnKXJldHVybiBmYWxzZTt2YXIgcHJvdG89Z2V0UHJvdG90eXBlKHZhbHVlKTtpZihwcm90bz09PW51bGwpcmV0dXJuIHRydWU7dmFyIEN0b3I9aGFzT3duUHJvcGVydHkuY2FsbChwcm90bywiY29uc3RydWN0b3IiKSYmcHJvdG8uY29uc3RydWN0b3I7cmV0dXJuIHR5cGVvZiBDdG9yPT0iZnVuY3Rpb24iJiZDdG9yIGluc3RhbmNlb2YgQ3RvciYmZnVuY1RvU3RyaW5nLmNhbGwoQ3Rvcik9PW9iamVjdEN0b3JTdHJpbmd9dmFyIGlzUmVnRXhwPW5vZGVJc1JlZ0V4cD9iYXNlVW5hcnkobm9kZUlzUmVnRXhwKTpiYXNlSXNSZWdFeHA7ZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih2YWx1ZSl7cmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkmJnZhbHVlPj0KLU1BWF9TQUZFX0lOVEVHRVImJnZhbHVlPD1NQVhfU0FGRV9JTlRFR0VSfXZhciBpc1NldD1ub2RlSXNTZXQ/YmFzZVVuYXJ5KG5vZGVJc1NldCk6YmFzZUlzU2V0O2Z1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT0ic3RyaW5nInx8IWlzQXJyYXkodmFsdWUpJiZpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09c3RyaW5nVGFnfWZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKXtyZXR1cm4gdHlwZW9mIHZhbHVlPT0ic3ltYm9sInx8aXNPYmplY3RMaWtlKHZhbHVlKSYmYmFzZUdldFRhZyh2YWx1ZSk9PXN5bWJvbFRhZ312YXIgaXNUeXBlZEFycmF5PW5vZGVJc1R5cGVkQXJyYXk/YmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpOmJhc2VJc1R5cGVkQXJyYXk7ZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpe3JldHVybiB2YWx1ZT09PXVuZGVmaW5lZH1mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiYKZ2V0VGFnKHZhbHVlKT09d2Vha01hcFRhZ31mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpe3JldHVybiBpc09iamVjdExpa2UodmFsdWUpJiZiYXNlR2V0VGFnKHZhbHVlKT09d2Vha1NldFRhZ312YXIgbHQ9Y3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihiYXNlTHQpO3ZhciBsdGU9Y3JlYXRlUmVsYXRpb25hbE9wZXJhdGlvbihmdW5jdGlvbih2YWx1ZSxvdGhlcil7cmV0dXJuIHZhbHVlPD1vdGhlcn0pO2Z1bmN0aW9uIHRvQXJyYXkodmFsdWUpe2lmKCF2YWx1ZSlyZXR1cm5bXTtpZihpc0FycmF5TGlrZSh2YWx1ZSkpcmV0dXJuIGlzU3RyaW5nKHZhbHVlKT9zdHJpbmdUb0FycmF5KHZhbHVlKTpjb3B5QXJyYXkodmFsdWUpO2lmKHN5bUl0ZXJhdG9yJiZ2YWx1ZVtzeW1JdGVyYXRvcl0pcmV0dXJuIGl0ZXJhdG9yVG9BcnJheSh2YWx1ZVtzeW1JdGVyYXRvcl0oKSk7dmFyIHRhZz1nZXRUYWcodmFsdWUpLGZ1bmM9dGFnPT1tYXBUYWc/bWFwVG9BcnJheTp0YWc9PXNldFRhZz9zZXRUb0FycmF5Ogp2YWx1ZXM7cmV0dXJuIGZ1bmModmFsdWUpfWZ1bmN0aW9uIHRvRmluaXRlKHZhbHVlKXtpZighdmFsdWUpcmV0dXJuIHZhbHVlPT09MD92YWx1ZTowO3ZhbHVlPXRvTnVtYmVyKHZhbHVlKTtpZih2YWx1ZT09PUlORklOSVRZfHx2YWx1ZT09PS1JTkZJTklUWSl7dmFyIHNpZ249dmFsdWU8MD8tMToxO3JldHVybiBzaWduKk1BWF9JTlRFR0VSfXJldHVybiB2YWx1ZT09PXZhbHVlP3ZhbHVlOjB9ZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKXt2YXIgcmVzdWx0PXRvRmluaXRlKHZhbHVlKSxyZW1haW5kZXI9cmVzdWx0JTE7cmV0dXJuIHJlc3VsdD09PXJlc3VsdD9yZW1haW5kZXI/cmVzdWx0LXJlbWFpbmRlcjpyZXN1bHQ6MH1mdW5jdGlvbiB0b0xlbmd0aCh2YWx1ZSl7cmV0dXJuIHZhbHVlP2Jhc2VDbGFtcCh0b0ludGVnZXIodmFsdWUpLDAsTUFYX0FSUkFZX0xFTkdUSCk6MH1mdW5jdGlvbiB0b051bWJlcih2YWx1ZSl7aWYodHlwZW9mIHZhbHVlPT0ibnVtYmVyIilyZXR1cm4gdmFsdWU7CmlmKGlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gTkFOO2lmKGlzT2JqZWN0KHZhbHVlKSl7dmFyIG90aGVyPXR5cGVvZiB2YWx1ZS52YWx1ZU9mPT0iZnVuY3Rpb24iP3ZhbHVlLnZhbHVlT2YoKTp2YWx1ZTt2YWx1ZT1pc09iamVjdChvdGhlcik/b3RoZXIrIiI6b3RoZXJ9aWYodHlwZW9mIHZhbHVlIT0ic3RyaW5nIilyZXR1cm4gdmFsdWU9PT0wP3ZhbHVlOit2YWx1ZTt2YWx1ZT12YWx1ZS5yZXBsYWNlKHJlVHJpbSwiIik7dmFyIGlzQmluYXJ5PXJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7cmV0dXJuIGlzQmluYXJ5fHxyZUlzT2N0YWwudGVzdCh2YWx1ZSk/ZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLGlzQmluYXJ5PzI6OCk6cmVJc0JhZEhleC50ZXN0KHZhbHVlKT9OQU46K3ZhbHVlfWZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpe3JldHVybiBjb3B5T2JqZWN0KHZhbHVlLGtleXNJbih2YWx1ZSkpfWZ1bmN0aW9uIHRvU2FmZUludGVnZXIodmFsdWUpe3JldHVybiB2YWx1ZT8KYmFzZUNsYW1wKHRvSW50ZWdlcih2YWx1ZSksLU1BWF9TQUZFX0lOVEVHRVIsTUFYX1NBRkVfSU5URUdFUik6dmFsdWU9PT0wP3ZhbHVlOjB9ZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpe3JldHVybiB2YWx1ZT09bnVsbD8iIjpiYXNlVG9TdHJpbmcodmFsdWUpfXZhciBhc3NpZ249Y3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LHNvdXJjZSl7aWYoaXNQcm90b3R5cGUoc291cmNlKXx8aXNBcnJheUxpa2Uoc291cmNlKSl7Y29weU9iamVjdChzb3VyY2Usa2V5cyhzb3VyY2UpLG9iamVjdCk7cmV0dXJufWZvcih2YXIga2V5IGluIHNvdXJjZSlpZihoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSxrZXkpKWFzc2lnblZhbHVlKG9iamVjdCxrZXksc291cmNlW2tleV0pfSk7dmFyIGFzc2lnbkluPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Upe2NvcHlPYmplY3Qoc291cmNlLGtleXNJbihzb3VyY2UpLG9iamVjdCl9KTt2YXIgYXNzaWduSW5XaXRoPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwKc291cmNlLHNyY0luZGV4LGN1c3RvbWl6ZXIpe2NvcHlPYmplY3Qoc291cmNlLGtleXNJbihzb3VyY2UpLG9iamVjdCxjdXN0b21pemVyKX0pO3ZhciBhc3NpZ25XaXRoPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Usc3JjSW5kZXgsY3VzdG9taXplcil7Y29weU9iamVjdChzb3VyY2Usa2V5cyhzb3VyY2UpLG9iamVjdCxjdXN0b21pemVyKX0pO3ZhciBhdD1mbGF0UmVzdChiYXNlQXQpO2Z1bmN0aW9uIGNyZWF0ZShwcm90b3R5cGUscHJvcGVydGllcyl7dmFyIHJlc3VsdD1iYXNlQ3JlYXRlKHByb3RvdHlwZSk7cmV0dXJuIHByb3BlcnRpZXM9PW51bGw/cmVzdWx0OmJhc2VBc3NpZ24ocmVzdWx0LHByb3BlcnRpZXMpfXZhciBkZWZhdWx0cz1iYXNlUmVzdChmdW5jdGlvbihvYmplY3Qsc291cmNlcyl7b2JqZWN0PU9iamVjdChvYmplY3QpO3ZhciBpbmRleD0tMTt2YXIgbGVuZ3RoPXNvdXJjZXMubGVuZ3RoO3ZhciBndWFyZD1sZW5ndGg+Mj9zb3VyY2VzWzJdOgp1bmRlZmluZWQ7aWYoZ3VhcmQmJmlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sc291cmNlc1sxXSxndWFyZCkpbGVuZ3RoPTE7d2hpbGUoKytpbmRleDxsZW5ndGgpe3ZhciBzb3VyY2U9c291cmNlc1tpbmRleF07dmFyIHByb3BzPWtleXNJbihzb3VyY2UpO3ZhciBwcm9wc0luZGV4PS0xO3ZhciBwcm9wc0xlbmd0aD1wcm9wcy5sZW5ndGg7d2hpbGUoKytwcm9wc0luZGV4PHByb3BzTGVuZ3RoKXt2YXIga2V5PXByb3BzW3Byb3BzSW5kZXhdO3ZhciB2YWx1ZT1vYmplY3Rba2V5XTtpZih2YWx1ZT09PXVuZGVmaW5lZHx8ZXEodmFsdWUsb2JqZWN0UHJvdG9ba2V5XSkmJiFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCxrZXkpKW9iamVjdFtrZXldPXNvdXJjZVtrZXldfX1yZXR1cm4gb2JqZWN0fSk7dmFyIGRlZmF1bHRzRGVlcD1iYXNlUmVzdChmdW5jdGlvbihhcmdzKXthcmdzLnB1c2godW5kZWZpbmVkLGN1c3RvbURlZmF1bHRzTWVyZ2UpO3JldHVybiBhcHBseShtZXJnZVdpdGgsCnVuZGVmaW5lZCxhcmdzKX0pO2Z1bmN0aW9uIGZpbmRLZXkob2JqZWN0LHByZWRpY2F0ZSl7cmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCxnZXRJdGVyYXRlZShwcmVkaWNhdGUsMyksYmFzZUZvck93bil9ZnVuY3Rpb24gZmluZExhc3RLZXkob2JqZWN0LHByZWRpY2F0ZSl7cmV0dXJuIGJhc2VGaW5kS2V5KG9iamVjdCxnZXRJdGVyYXRlZShwcmVkaWNhdGUsMyksYmFzZUZvck93blJpZ2h0KX1mdW5jdGlvbiBmb3JJbihvYmplY3QsaXRlcmF0ZWUpe3JldHVybiBvYmplY3Q9PW51bGw/b2JqZWN0OmJhc2VGb3Iob2JqZWN0LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpLGtleXNJbil9ZnVuY3Rpb24gZm9ySW5SaWdodChvYmplY3QsaXRlcmF0ZWUpe3JldHVybiBvYmplY3Q9PW51bGw/b2JqZWN0OmJhc2VGb3JSaWdodChvYmplY3QsZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMyksa2V5c0luKX1mdW5jdGlvbiBmb3JPd24ob2JqZWN0LGl0ZXJhdGVlKXtyZXR1cm4gb2JqZWN0JiZiYXNlRm9yT3duKG9iamVjdCwKZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMykpfWZ1bmN0aW9uIGZvck93blJpZ2h0KG9iamVjdCxpdGVyYXRlZSl7cmV0dXJuIG9iamVjdCYmYmFzZUZvck93blJpZ2h0KG9iamVjdCxnZXRJdGVyYXRlZShpdGVyYXRlZSwzKSl9ZnVuY3Rpb24gZnVuY3Rpb25zKG9iamVjdCl7cmV0dXJuIG9iamVjdD09bnVsbD9bXTpiYXNlRnVuY3Rpb25zKG9iamVjdCxrZXlzKG9iamVjdCkpfWZ1bmN0aW9uIGZ1bmN0aW9uc0luKG9iamVjdCl7cmV0dXJuIG9iamVjdD09bnVsbD9bXTpiYXNlRnVuY3Rpb25zKG9iamVjdCxrZXlzSW4ob2JqZWN0KSl9ZnVuY3Rpb24gZ2V0KG9iamVjdCxwYXRoLGRlZmF1bHRWYWx1ZSl7dmFyIHJlc3VsdD1vYmplY3Q9PW51bGw/dW5kZWZpbmVkOmJhc2VHZXQob2JqZWN0LHBhdGgpO3JldHVybiByZXN1bHQ9PT11bmRlZmluZWQ/ZGVmYXVsdFZhbHVlOnJlc3VsdH1mdW5jdGlvbiBoYXMob2JqZWN0LHBhdGgpe3JldHVybiBvYmplY3QhPW51bGwmJmhhc1BhdGgob2JqZWN0LApwYXRoLGJhc2VIYXMpfWZ1bmN0aW9uIGhhc0luKG9iamVjdCxwYXRoKXtyZXR1cm4gb2JqZWN0IT1udWxsJiZoYXNQYXRoKG9iamVjdCxwYXRoLGJhc2VIYXNJbil9dmFyIGludmVydD1jcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZih2YWx1ZSE9bnVsbCYmdHlwZW9mIHZhbHVlLnRvU3RyaW5nIT0iZnVuY3Rpb24iKXZhbHVlPW5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO3Jlc3VsdFt2YWx1ZV09a2V5fSxjb25zdGFudChpZGVudGl0eSkpO3ZhciBpbnZlcnRCeT1jcmVhdGVJbnZlcnRlcihmdW5jdGlvbihyZXN1bHQsdmFsdWUsa2V5KXtpZih2YWx1ZSE9bnVsbCYmdHlwZW9mIHZhbHVlLnRvU3RyaW5nIT0iZnVuY3Rpb24iKXZhbHVlPW5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO2lmKGhhc093blByb3BlcnR5LmNhbGwocmVzdWx0LHZhbHVlKSlyZXN1bHRbdmFsdWVdLnB1c2goa2V5KTtlbHNlIHJlc3VsdFt2YWx1ZV09W2tleV19LApnZXRJdGVyYXRlZSk7dmFyIGludm9rZT1iYXNlUmVzdChiYXNlSW52b2tlKTtmdW5jdGlvbiBrZXlzKG9iamVjdCl7cmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCk/YXJyYXlMaWtlS2V5cyhvYmplY3QpOmJhc2VLZXlzKG9iamVjdCl9ZnVuY3Rpb24ga2V5c0luKG9iamVjdCl7cmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCk/YXJyYXlMaWtlS2V5cyhvYmplY3QsdHJ1ZSk6YmFzZUtleXNJbihvYmplY3QpfWZ1bmN0aW9uIG1hcEtleXMob2JqZWN0LGl0ZXJhdGVlKXt2YXIgcmVzdWx0PXt9O2l0ZXJhdGVlPWdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpO2Jhc2VGb3JPd24ob2JqZWN0LGZ1bmN0aW9uKHZhbHVlLGtleSxvYmplY3Qpe2Jhc2VBc3NpZ25WYWx1ZShyZXN1bHQsaXRlcmF0ZWUodmFsdWUsa2V5LG9iamVjdCksdmFsdWUpfSk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiBtYXBWYWx1ZXMob2JqZWN0LGl0ZXJhdGVlKXt2YXIgcmVzdWx0PXt9O2l0ZXJhdGVlPWdldEl0ZXJhdGVlKGl0ZXJhdGVlLAozKTtiYXNlRm9yT3duKG9iamVjdCxmdW5jdGlvbih2YWx1ZSxrZXksb2JqZWN0KXtiYXNlQXNzaWduVmFsdWUocmVzdWx0LGtleSxpdGVyYXRlZSh2YWx1ZSxrZXksb2JqZWN0KSl9KTtyZXR1cm4gcmVzdWx0fXZhciBtZXJnZT1jcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3Qsc291cmNlLHNyY0luZGV4KXtiYXNlTWVyZ2Uob2JqZWN0LHNvdXJjZSxzcmNJbmRleCl9KTt2YXIgbWVyZ2VXaXRoPWNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCxzb3VyY2Usc3JjSW5kZXgsY3VzdG9taXplcil7YmFzZU1lcmdlKG9iamVjdCxzb3VyY2Usc3JjSW5kZXgsY3VzdG9taXplcil9KTt2YXIgb21pdD1mbGF0UmVzdChmdW5jdGlvbihvYmplY3QscGF0aHMpe3ZhciByZXN1bHQ9e307aWYob2JqZWN0PT1udWxsKXJldHVybiByZXN1bHQ7dmFyIGlzRGVlcD1mYWxzZTtwYXRocz1hcnJheU1hcChwYXRocyxmdW5jdGlvbihwYXRoKXtwYXRoPWNhc3RQYXRoKHBhdGgsb2JqZWN0KTtpc0RlZXB8fAooaXNEZWVwPXBhdGgubGVuZ3RoPjEpO3JldHVybiBwYXRofSk7Y29weU9iamVjdChvYmplY3QsZ2V0QWxsS2V5c0luKG9iamVjdCkscmVzdWx0KTtpZihpc0RlZXApcmVzdWx0PWJhc2VDbG9uZShyZXN1bHQsQ0xPTkVfREVFUF9GTEFHfENMT05FX0ZMQVRfRkxBR3xDTE9ORV9TWU1CT0xTX0ZMQUcsY3VzdG9tT21pdENsb25lKTt2YXIgbGVuZ3RoPXBhdGhzLmxlbmd0aDt3aGlsZShsZW5ndGgtLSliYXNlVW5zZXQocmVzdWx0LHBhdGhzW2xlbmd0aF0pO3JldHVybiByZXN1bHR9KTtmdW5jdGlvbiBvbWl0Qnkob2JqZWN0LHByZWRpY2F0ZSl7cmV0dXJuIHBpY2tCeShvYmplY3QsbmVnYXRlKGdldEl0ZXJhdGVlKHByZWRpY2F0ZSkpKX12YXIgcGljaz1mbGF0UmVzdChmdW5jdGlvbihvYmplY3QscGF0aHMpe3JldHVybiBvYmplY3Q9PW51bGw/e306YmFzZVBpY2sob2JqZWN0LHBhdGhzKX0pO2Z1bmN0aW9uIHBpY2tCeShvYmplY3QscHJlZGljYXRlKXtpZihvYmplY3Q9PW51bGwpcmV0dXJue307CnZhciBwcm9wcz1hcnJheU1hcChnZXRBbGxLZXlzSW4ob2JqZWN0KSxmdW5jdGlvbihwcm9wKXtyZXR1cm5bcHJvcF19KTtwcmVkaWNhdGU9Z2V0SXRlcmF0ZWUocHJlZGljYXRlKTtyZXR1cm4gYmFzZVBpY2tCeShvYmplY3QscHJvcHMsZnVuY3Rpb24odmFsdWUscGF0aCl7cmV0dXJuIHByZWRpY2F0ZSh2YWx1ZSxwYXRoWzBdKX0pfWZ1bmN0aW9uIHJlc3VsdChvYmplY3QscGF0aCxkZWZhdWx0VmFsdWUpe3BhdGg9Y2FzdFBhdGgocGF0aCxvYmplY3QpO3ZhciBpbmRleD0tMSxsZW5ndGg9cGF0aC5sZW5ndGg7aWYoIWxlbmd0aCl7bGVuZ3RoPTE7b2JqZWN0PXVuZGVmaW5lZH13aGlsZSgrK2luZGV4PGxlbmd0aCl7dmFyIHZhbHVlPW9iamVjdD09bnVsbD91bmRlZmluZWQ6b2JqZWN0W3RvS2V5KHBhdGhbaW5kZXhdKV07aWYodmFsdWU9PT11bmRlZmluZWQpe2luZGV4PWxlbmd0aDt2YWx1ZT1kZWZhdWx0VmFsdWV9b2JqZWN0PWlzRnVuY3Rpb24odmFsdWUpP3ZhbHVlLmNhbGwob2JqZWN0KToKdmFsdWV9cmV0dXJuIG9iamVjdH1mdW5jdGlvbiBzZXQob2JqZWN0LHBhdGgsdmFsdWUpe3JldHVybiBvYmplY3Q9PW51bGw/b2JqZWN0OmJhc2VTZXQob2JqZWN0LHBhdGgsdmFsdWUpfWZ1bmN0aW9uIHNldFdpdGgob2JqZWN0LHBhdGgsdmFsdWUsY3VzdG9taXplcil7Y3VzdG9taXplcj10eXBlb2YgY3VzdG9taXplcj09ImZ1bmN0aW9uIj9jdXN0b21pemVyOnVuZGVmaW5lZDtyZXR1cm4gb2JqZWN0PT1udWxsP29iamVjdDpiYXNlU2V0KG9iamVjdCxwYXRoLHZhbHVlLGN1c3RvbWl6ZXIpfXZhciB0b1BhaXJzPWNyZWF0ZVRvUGFpcnMoa2V5cyk7dmFyIHRvUGFpcnNJbj1jcmVhdGVUb1BhaXJzKGtleXNJbik7ZnVuY3Rpb24gdHJhbnNmb3JtKG9iamVjdCxpdGVyYXRlZSxhY2N1bXVsYXRvcil7dmFyIGlzQXJyPWlzQXJyYXkob2JqZWN0KSxpc0Fyckxpa2U9aXNBcnJ8fGlzQnVmZmVyKG9iamVjdCl8fGlzVHlwZWRBcnJheShvYmplY3QpO2l0ZXJhdGVlPWdldEl0ZXJhdGVlKGl0ZXJhdGVlLAo0KTtpZihhY2N1bXVsYXRvcj09bnVsbCl7dmFyIEN0b3I9b2JqZWN0JiZvYmplY3QuY29uc3RydWN0b3I7aWYoaXNBcnJMaWtlKWFjY3VtdWxhdG9yPWlzQXJyP25ldyBDdG9yOltdO2Vsc2UgaWYoaXNPYmplY3Qob2JqZWN0KSlhY2N1bXVsYXRvcj1pc0Z1bmN0aW9uKEN0b3IpP2Jhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpOnt9O2Vsc2UgYWNjdW11bGF0b3I9e319KGlzQXJyTGlrZT9hcnJheUVhY2g6YmFzZUZvck93bikob2JqZWN0LGZ1bmN0aW9uKHZhbHVlLGluZGV4LG9iamVjdCl7cmV0dXJuIGl0ZXJhdGVlKGFjY3VtdWxhdG9yLHZhbHVlLGluZGV4LG9iamVjdCl9KTtyZXR1cm4gYWNjdW11bGF0b3J9ZnVuY3Rpb24gdW5zZXQob2JqZWN0LHBhdGgpe3JldHVybiBvYmplY3Q9PW51bGw/dHJ1ZTpiYXNlVW5zZXQob2JqZWN0LHBhdGgpfWZ1bmN0aW9uIHVwZGF0ZShvYmplY3QscGF0aCx1cGRhdGVyKXtyZXR1cm4gb2JqZWN0PT1udWxsP29iamVjdDpiYXNlVXBkYXRlKG9iamVjdCwKcGF0aCxjYXN0RnVuY3Rpb24odXBkYXRlcikpfWZ1bmN0aW9uIHVwZGF0ZVdpdGgob2JqZWN0LHBhdGgsdXBkYXRlcixjdXN0b21pemVyKXtjdXN0b21pemVyPXR5cGVvZiBjdXN0b21pemVyPT0iZnVuY3Rpb24iP2N1c3RvbWl6ZXI6dW5kZWZpbmVkO3JldHVybiBvYmplY3Q9PW51bGw/b2JqZWN0OmJhc2VVcGRhdGUob2JqZWN0LHBhdGgsY2FzdEZ1bmN0aW9uKHVwZGF0ZXIpLGN1c3RvbWl6ZXIpfWZ1bmN0aW9uIHZhbHVlcyhvYmplY3Qpe3JldHVybiBvYmplY3Q9PW51bGw/W106YmFzZVZhbHVlcyhvYmplY3Qsa2V5cyhvYmplY3QpKX1mdW5jdGlvbiB2YWx1ZXNJbihvYmplY3Qpe3JldHVybiBvYmplY3Q9PW51bGw/W106YmFzZVZhbHVlcyhvYmplY3Qsa2V5c0luKG9iamVjdCkpfWZ1bmN0aW9uIGNsYW1wKG51bWJlcixsb3dlcix1cHBlcil7aWYodXBwZXI9PT11bmRlZmluZWQpe3VwcGVyPWxvd2VyO2xvd2VyPXVuZGVmaW5lZH1pZih1cHBlciE9PXVuZGVmaW5lZCl7dXBwZXI9CnRvTnVtYmVyKHVwcGVyKTt1cHBlcj11cHBlcj09PXVwcGVyP3VwcGVyOjB9aWYobG93ZXIhPT11bmRlZmluZWQpe2xvd2VyPXRvTnVtYmVyKGxvd2VyKTtsb3dlcj1sb3dlcj09PWxvd2VyP2xvd2VyOjB9cmV0dXJuIGJhc2VDbGFtcCh0b051bWJlcihudW1iZXIpLGxvd2VyLHVwcGVyKX1mdW5jdGlvbiBpblJhbmdlKG51bWJlcixzdGFydCxlbmQpe3N0YXJ0PXRvRmluaXRlKHN0YXJ0KTtpZihlbmQ9PT11bmRlZmluZWQpe2VuZD1zdGFydDtzdGFydD0wfWVsc2UgZW5kPXRvRmluaXRlKGVuZCk7bnVtYmVyPXRvTnVtYmVyKG51bWJlcik7cmV0dXJuIGJhc2VJblJhbmdlKG51bWJlcixzdGFydCxlbmQpfWZ1bmN0aW9uIHJhbmRvbShsb3dlcix1cHBlcixmbG9hdGluZyl7aWYoZmxvYXRpbmcmJnR5cGVvZiBmbG9hdGluZyE9ImJvb2xlYW4iJiZpc0l0ZXJhdGVlQ2FsbChsb3dlcix1cHBlcixmbG9hdGluZykpdXBwZXI9ZmxvYXRpbmc9dW5kZWZpbmVkO2lmKGZsb2F0aW5nPT09dW5kZWZpbmVkKWlmKHR5cGVvZiB1cHBlcj09CiJib29sZWFuIil7ZmxvYXRpbmc9dXBwZXI7dXBwZXI9dW5kZWZpbmVkfWVsc2UgaWYodHlwZW9mIGxvd2VyPT0iYm9vbGVhbiIpe2Zsb2F0aW5nPWxvd2VyO2xvd2VyPXVuZGVmaW5lZH1pZihsb3dlcj09PXVuZGVmaW5lZCYmdXBwZXI9PT11bmRlZmluZWQpe2xvd2VyPTA7dXBwZXI9MX1lbHNle2xvd2VyPXRvRmluaXRlKGxvd2VyKTtpZih1cHBlcj09PXVuZGVmaW5lZCl7dXBwZXI9bG93ZXI7bG93ZXI9MH1lbHNlIHVwcGVyPXRvRmluaXRlKHVwcGVyKX1pZihsb3dlcj51cHBlcil7dmFyIHRlbXA9bG93ZXI7bG93ZXI9dXBwZXI7dXBwZXI9dGVtcH1pZihmbG9hdGluZ3x8bG93ZXIlMXx8dXBwZXIlMSl7dmFyIHJhbmQ9bmF0aXZlUmFuZG9tKCk7cmV0dXJuIG5hdGl2ZU1pbihsb3dlcityYW5kKih1cHBlci1sb3dlcitmcmVlUGFyc2VGbG9hdCgiMWUtIisoKHJhbmQrIiIpLmxlbmd0aC0xKSkpLHVwcGVyKX1yZXR1cm4gYmFzZVJhbmRvbShsb3dlcix1cHBlcil9dmFyIGNhbWVsQ2FzZT0KY3JlYXRlQ29tcG91bmRlcihmdW5jdGlvbihyZXN1bHQsd29yZCxpbmRleCl7d29yZD13b3JkLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHJlc3VsdCsoaW5kZXg/Y2FwaXRhbGl6ZSh3b3JkKTp3b3JkKX0pO2Z1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKXtyZXR1cm4gdXBwZXJGaXJzdCh0b1N0cmluZyhzdHJpbmcpLnRvTG93ZXJDYXNlKCkpfWZ1bmN0aW9uIGRlYnVycihzdHJpbmcpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3JldHVybiBzdHJpbmcmJnN0cmluZy5yZXBsYWNlKHJlTGF0aW4sZGVidXJyTGV0dGVyKS5yZXBsYWNlKHJlQ29tYm9NYXJrLCIiKX1mdW5jdGlvbiBlbmRzV2l0aChzdHJpbmcsdGFyZ2V0LHBvc2l0aW9uKXtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTt0YXJnZXQ9YmFzZVRvU3RyaW5nKHRhcmdldCk7dmFyIGxlbmd0aD1zdHJpbmcubGVuZ3RoO3Bvc2l0aW9uPXBvc2l0aW9uPT09dW5kZWZpbmVkP2xlbmd0aDpiYXNlQ2xhbXAodG9JbnRlZ2VyKHBvc2l0aW9uKSwKMCxsZW5ndGgpO3ZhciBlbmQ9cG9zaXRpb247cG9zaXRpb24tPXRhcmdldC5sZW5ndGg7cmV0dXJuIHBvc2l0aW9uPj0wJiZzdHJpbmcuc2xpY2UocG9zaXRpb24sZW5kKT09dGFyZ2V0fWZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO3JldHVybiBzdHJpbmcmJnJlSGFzVW5lc2NhcGVkSHRtbC50ZXN0KHN0cmluZyk/c3RyaW5nLnJlcGxhY2UocmVVbmVzY2FwZWRIdG1sLGVzY2FwZUh0bWxDaGFyKTpzdHJpbmd9ZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZyl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cmV0dXJuIHN0cmluZyYmcmVIYXNSZWdFeHBDaGFyLnRlc3Qoc3RyaW5nKT9zdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsIlxcJFx4MjYiKTpzdHJpbmd9dmFyIGtlYmFiQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXtyZXR1cm4gcmVzdWx0KyhpbmRleD8iLSI6IiIpK3dvcmQudG9Mb3dlckNhc2UoKX0pOwp2YXIgbG93ZXJDYXNlPWNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LHdvcmQsaW5kZXgpe3JldHVybiByZXN1bHQrKGluZGV4PyIgIjoiIikrd29yZC50b0xvd2VyQ2FzZSgpfSk7dmFyIGxvd2VyRmlyc3Q9Y3JlYXRlQ2FzZUZpcnN0KCJ0b0xvd2VyQ2FzZSIpO2Z1bmN0aW9uIHBhZChzdHJpbmcsbGVuZ3RoLGNoYXJzKXtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtsZW5ndGg9dG9JbnRlZ2VyKGxlbmd0aCk7dmFyIHN0ckxlbmd0aD1sZW5ndGg/c3RyaW5nU2l6ZShzdHJpbmcpOjA7aWYoIWxlbmd0aHx8c3RyTGVuZ3RoPj1sZW5ndGgpcmV0dXJuIHN0cmluZzt2YXIgbWlkPShsZW5ndGgtc3RyTGVuZ3RoKS8yO3JldHVybiBjcmVhdGVQYWRkaW5nKG5hdGl2ZUZsb29yKG1pZCksY2hhcnMpK3N0cmluZytjcmVhdGVQYWRkaW5nKG5hdGl2ZUNlaWwobWlkKSxjaGFycyl9ZnVuY3Rpb24gcGFkRW5kKHN0cmluZyxsZW5ndGgsY2hhcnMpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpOwpsZW5ndGg9dG9JbnRlZ2VyKGxlbmd0aCk7dmFyIHN0ckxlbmd0aD1sZW5ndGg/c3RyaW5nU2l6ZShzdHJpbmcpOjA7cmV0dXJuIGxlbmd0aCYmc3RyTGVuZ3RoPGxlbmd0aD9zdHJpbmcrY3JlYXRlUGFkZGluZyhsZW5ndGgtc3RyTGVuZ3RoLGNoYXJzKTpzdHJpbmd9ZnVuY3Rpb24gcGFkU3RhcnQoc3RyaW5nLGxlbmd0aCxjaGFycyl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7bGVuZ3RoPXRvSW50ZWdlcihsZW5ndGgpO3ZhciBzdHJMZW5ndGg9bGVuZ3RoP3N0cmluZ1NpemUoc3RyaW5nKTowO3JldHVybiBsZW5ndGgmJnN0ckxlbmd0aDxsZW5ndGg/Y3JlYXRlUGFkZGluZyhsZW5ndGgtc3RyTGVuZ3RoLGNoYXJzKStzdHJpbmc6c3RyaW5nfWZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZyxyYWRpeCxndWFyZCl7aWYoZ3VhcmR8fHJhZGl4PT1udWxsKXJhZGl4PTA7ZWxzZSBpZihyYWRpeClyYWRpeD0rcmFkaXg7cmV0dXJuIG5hdGl2ZVBhcnNlSW50KHRvU3RyaW5nKHN0cmluZykucmVwbGFjZShyZVRyaW1TdGFydCwKIiIpLHJhZGl4fHwwKX1mdW5jdGlvbiByZXBlYXQoc3RyaW5nLG4sZ3VhcmQpe2lmKGd1YXJkP2lzSXRlcmF0ZWVDYWxsKHN0cmluZyxuLGd1YXJkKTpuPT09dW5kZWZpbmVkKW49MTtlbHNlIG49dG9JbnRlZ2VyKG4pO3JldHVybiBiYXNlUmVwZWF0KHRvU3RyaW5nKHN0cmluZyksbil9ZnVuY3Rpb24gcmVwbGFjZSgpe3ZhciBhcmdzPWFyZ3VtZW50cyxzdHJpbmc9dG9TdHJpbmcoYXJnc1swXSk7cmV0dXJuIGFyZ3MubGVuZ3RoPDM/c3RyaW5nOnN0cmluZy5yZXBsYWNlKGFyZ3NbMV0sYXJnc1syXSl9dmFyIHNuYWtlQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXtyZXR1cm4gcmVzdWx0KyhpbmRleD8iXyI6IiIpK3dvcmQudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHNwbGl0KHN0cmluZyxzZXBhcmF0b3IsbGltaXQpe2lmKGxpbWl0JiZ0eXBlb2YgbGltaXQhPSJudW1iZXIiJiZpc0l0ZXJhdGVlQ2FsbChzdHJpbmcsc2VwYXJhdG9yLGxpbWl0KSlzZXBhcmF0b3I9CmxpbWl0PXVuZGVmaW5lZDtsaW1pdD1saW1pdD09PXVuZGVmaW5lZD9NQVhfQVJSQVlfTEVOR1RIOmxpbWl0Pj4+MDtpZighbGltaXQpcmV0dXJuW107c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7aWYoc3RyaW5nJiYodHlwZW9mIHNlcGFyYXRvcj09InN0cmluZyJ8fHNlcGFyYXRvciE9bnVsbCYmIWlzUmVnRXhwKHNlcGFyYXRvcikpKXtzZXBhcmF0b3I9YmFzZVRvU3RyaW5nKHNlcGFyYXRvcik7aWYoIXNlcGFyYXRvciYmaGFzVW5pY29kZShzdHJpbmcpKXJldHVybiBjYXN0U2xpY2Uoc3RyaW5nVG9BcnJheShzdHJpbmcpLDAsbGltaXQpfXJldHVybiBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yLGxpbWl0KX12YXIgc3RhcnRDYXNlPWNyZWF0ZUNvbXBvdW5kZXIoZnVuY3Rpb24ocmVzdWx0LHdvcmQsaW5kZXgpe3JldHVybiByZXN1bHQrKGluZGV4PyIgIjoiIikrdXBwZXJGaXJzdCh3b3JkKX0pO2Z1bmN0aW9uIHN0YXJ0c1dpdGgoc3RyaW5nLHRhcmdldCxwb3NpdGlvbil7c3RyaW5nPQp0b1N0cmluZyhzdHJpbmcpO3Bvc2l0aW9uPXBvc2l0aW9uPT1udWxsPzA6YmFzZUNsYW1wKHRvSW50ZWdlcihwb3NpdGlvbiksMCxzdHJpbmcubGVuZ3RoKTt0YXJnZXQ9YmFzZVRvU3RyaW5nKHRhcmdldCk7cmV0dXJuIHN0cmluZy5zbGljZShwb3NpdGlvbixwb3NpdGlvbit0YXJnZXQubGVuZ3RoKT09dGFyZ2V0fWZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZyxvcHRpb25zLGd1YXJkKXt2YXIgc2V0dGluZ3M9bG9kYXNoLnRlbXBsYXRlU2V0dGluZ3M7aWYoZ3VhcmQmJmlzSXRlcmF0ZWVDYWxsKHN0cmluZyxvcHRpb25zLGd1YXJkKSlvcHRpb25zPXVuZGVmaW5lZDtzdHJpbmc9dG9TdHJpbmcoc3RyaW5nKTtvcHRpb25zPWFzc2lnbkluV2l0aCh7fSxvcHRpb25zLHNldHRpbmdzLGN1c3RvbURlZmF1bHRzQXNzaWduSW4pO3ZhciBpbXBvcnRzPWFzc2lnbkluV2l0aCh7fSxvcHRpb25zLmltcG9ydHMsc2V0dGluZ3MuaW1wb3J0cyxjdXN0b21EZWZhdWx0c0Fzc2lnbkluKSxpbXBvcnRzS2V5cz0Ka2V5cyhpbXBvcnRzKSxpbXBvcnRzVmFsdWVzPWJhc2VWYWx1ZXMoaW1wb3J0cyxpbXBvcnRzS2V5cyk7dmFyIGlzRXNjYXBpbmcsaXNFdmFsdWF0aW5nLGluZGV4PTAsaW50ZXJwb2xhdGU9b3B0aW9ucy5pbnRlcnBvbGF0ZXx8cmVOb01hdGNoLHNvdXJjZT0iX19wICtceDNkICciO3ZhciByZURlbGltaXRlcnM9UmVnRXhwKChvcHRpb25zLmVzY2FwZXx8cmVOb01hdGNoKS5zb3VyY2UrInwiK2ludGVycG9sYXRlLnNvdXJjZSsifCIrKGludGVycG9sYXRlPT09cmVJbnRlcnBvbGF0ZT9yZUVzVGVtcGxhdGU6cmVOb01hdGNoKS5zb3VyY2UrInwiKyhvcHRpb25zLmV2YWx1YXRlfHxyZU5vTWF0Y2gpLnNvdXJjZSsifCQiLCJnIik7dmFyIHNvdXJjZVVSTD0iLy8jIHNvdXJjZVVSTFx4M2QiKygic291cmNlVVJMImluIG9wdGlvbnM/b3B0aW9ucy5zb3VyY2VVUkw6ImxvZGFzaC50ZW1wbGF0ZVNvdXJjZXNbIisgKyt0ZW1wbGF0ZUNvdW50ZXIrIl0iKSsiXG4iO3N0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywKZnVuY3Rpb24obWF0Y2gsZXNjYXBlVmFsdWUsaW50ZXJwb2xhdGVWYWx1ZSxlc1RlbXBsYXRlVmFsdWUsZXZhbHVhdGVWYWx1ZSxvZmZzZXQpe2ludGVycG9sYXRlVmFsdWV8fChpbnRlcnBvbGF0ZVZhbHVlPWVzVGVtcGxhdGVWYWx1ZSk7c291cmNlKz1zdHJpbmcuc2xpY2UoaW5kZXgsb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLGVzY2FwZVN0cmluZ0NoYXIpO2lmKGVzY2FwZVZhbHVlKXtpc0VzY2FwaW5nPXRydWU7c291cmNlKz0iJyArXG5fX2UoIitlc2NhcGVWYWx1ZSsiKSArXG4nIn1pZihldmFsdWF0ZVZhbHVlKXtpc0V2YWx1YXRpbmc9dHJ1ZTtzb3VyY2UrPSInO1xuIitldmFsdWF0ZVZhbHVlKyI7XG5fX3AgK1x4M2QgJyJ9aWYoaW50ZXJwb2xhdGVWYWx1ZSlzb3VyY2UrPSInICtcbigoX190IFx4M2QgKCIraW50ZXJwb2xhdGVWYWx1ZSsiKSkgXHgzZFx4M2QgbnVsbCA/ICcnIDogX190KSArXG4nIjtpbmRleD1vZmZzZXQrbWF0Y2gubGVuZ3RoO3JldHVybiBtYXRjaH0pOwpzb3VyY2UrPSInO1xuIjt2YXIgdmFyaWFibGU9b3B0aW9ucy52YXJpYWJsZTtpZighdmFyaWFibGUpc291cmNlPSJ3aXRoIChvYmopIHtcbiIrc291cmNlKyJcbn1cbiI7c291cmNlPShpc0V2YWx1YXRpbmc/c291cmNlLnJlcGxhY2UocmVFbXB0eVN0cmluZ0xlYWRpbmcsIiIpOnNvdXJjZSkucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCIkMSIpLnJlcGxhY2UocmVFbXB0eVN0cmluZ1RyYWlsaW5nLCIkMTsiKTtzb3VyY2U9ImZ1bmN0aW9uKCIrKHZhcmlhYmxlfHwib2JqIikrIikge1xuIisodmFyaWFibGU/IiI6Im9iaiB8fCAob2JqIFx4M2Qge30pO1xuIikrInZhciBfX3QsIF9fcCBceDNkICcnIisoaXNFc2NhcGluZz8iLCBfX2UgXHgzZCBfLmVzY2FwZSI6IiIpKyhpc0V2YWx1YXRpbmc/IiwgX19qIFx4M2QgQXJyYXkucHJvdG90eXBlLmpvaW47XG4iKyJmdW5jdGlvbiBwcmludCgpIHsgX19wICtceDNkIF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cbiI6IjtcbiIpK3NvdXJjZSsKInJldHVybiBfX3Bcbn0iO3ZhciByZXN1bHQ9YXR0ZW1wdChmdW5jdGlvbigpe3JldHVybiBGdW5jdGlvbihpbXBvcnRzS2V5cyxzb3VyY2VVUkwrInJldHVybiAiK3NvdXJjZSkuYXBwbHkodW5kZWZpbmVkLGltcG9ydHNWYWx1ZXMpfSk7cmVzdWx0LnNvdXJjZT1zb3VyY2U7aWYoaXNFcnJvcihyZXN1bHQpKXRocm93IHJlc3VsdDtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHRvTG93ZXIodmFsdWUpe3JldHVybiB0b1N0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKX1mdW5jdGlvbiB0b1VwcGVyKHZhbHVlKXtyZXR1cm4gdG9TdHJpbmcodmFsdWUpLnRvVXBwZXJDYXNlKCl9ZnVuY3Rpb24gdHJpbShzdHJpbmcsY2hhcnMsZ3VhcmQpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO2lmKHN0cmluZyYmKGd1YXJkfHxjaGFycz09PXVuZGVmaW5lZCkpcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbSwiIik7aWYoIXN0cmluZ3x8IShjaGFycz1iYXNlVG9TdHJpbmcoY2hhcnMpKSlyZXR1cm4gc3RyaW5nOwp2YXIgc3RyU3ltYm9scz1zdHJpbmdUb0FycmF5KHN0cmluZyksY2hyU3ltYm9scz1zdHJpbmdUb0FycmF5KGNoYXJzKSxzdGFydD1jaGFyc1N0YXJ0SW5kZXgoc3RyU3ltYm9scyxjaHJTeW1ib2xzKSxlbmQ9Y2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLGNoclN5bWJvbHMpKzE7cmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLHN0YXJ0LGVuZCkuam9pbigiIil9ZnVuY3Rpb24gdHJpbUVuZChzdHJpbmcsY2hhcnMsZ3VhcmQpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO2lmKHN0cmluZyYmKGd1YXJkfHxjaGFycz09PXVuZGVmaW5lZCkpcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbUVuZCwiIik7aWYoIXN0cmluZ3x8IShjaGFycz1iYXNlVG9TdHJpbmcoY2hhcnMpKSlyZXR1cm4gc3RyaW5nO3ZhciBzdHJTeW1ib2xzPXN0cmluZ1RvQXJyYXkoc3RyaW5nKSxlbmQ9Y2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLHN0cmluZ1RvQXJyYXkoY2hhcnMpKSsxO3JldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywKMCxlbmQpLmpvaW4oIiIpfWZ1bmN0aW9uIHRyaW1TdGFydChzdHJpbmcsY2hhcnMsZ3VhcmQpe3N0cmluZz10b1N0cmluZyhzdHJpbmcpO2lmKHN0cmluZyYmKGd1YXJkfHxjaGFycz09PXVuZGVmaW5lZCkpcmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlVHJpbVN0YXJ0LCIiKTtpZighc3RyaW5nfHwhKGNoYXJzPWJhc2VUb1N0cmluZyhjaGFycykpKXJldHVybiBzdHJpbmc7dmFyIHN0clN5bWJvbHM9c3RyaW5nVG9BcnJheShzdHJpbmcpLHN0YXJ0PWNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLHN0cmluZ1RvQXJyYXkoY2hhcnMpKTtyZXR1cm4gY2FzdFNsaWNlKHN0clN5bWJvbHMsc3RhcnQpLmpvaW4oIiIpfWZ1bmN0aW9uIHRydW5jYXRlKHN0cmluZyxvcHRpb25zKXt2YXIgbGVuZ3RoPURFRkFVTFRfVFJVTkNfTEVOR1RILG9taXNzaW9uPURFRkFVTFRfVFJVTkNfT01JU1NJT047aWYoaXNPYmplY3Qob3B0aW9ucykpe3ZhciBzZXBhcmF0b3I9InNlcGFyYXRvciJpbiBvcHRpb25zPwpvcHRpb25zLnNlcGFyYXRvcjpzZXBhcmF0b3I7bGVuZ3RoPSJsZW5ndGgiaW4gb3B0aW9ucz90b0ludGVnZXIob3B0aW9ucy5sZW5ndGgpOmxlbmd0aDtvbWlzc2lvbj0ib21pc3Npb24iaW4gb3B0aW9ucz9iYXNlVG9TdHJpbmcob3B0aW9ucy5vbWlzc2lvbik6b21pc3Npb259c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7dmFyIHN0ckxlbmd0aD1zdHJpbmcubGVuZ3RoO2lmKGhhc1VuaWNvZGUoc3RyaW5nKSl7dmFyIHN0clN5bWJvbHM9c3RyaW5nVG9BcnJheShzdHJpbmcpO3N0ckxlbmd0aD1zdHJTeW1ib2xzLmxlbmd0aH1pZihsZW5ndGg+PXN0ckxlbmd0aClyZXR1cm4gc3RyaW5nO3ZhciBlbmQ9bGVuZ3RoLXN0cmluZ1NpemUob21pc3Npb24pO2lmKGVuZDwxKXJldHVybiBvbWlzc2lvbjt2YXIgcmVzdWx0PXN0clN5bWJvbHM/Y2FzdFNsaWNlKHN0clN5bWJvbHMsMCxlbmQpLmpvaW4oIiIpOnN0cmluZy5zbGljZSgwLGVuZCk7aWYoc2VwYXJhdG9yPT09dW5kZWZpbmVkKXJldHVybiByZXN1bHQrCm9taXNzaW9uO2lmKHN0clN5bWJvbHMpZW5kKz1yZXN1bHQubGVuZ3RoLWVuZDtpZihpc1JlZ0V4cChzZXBhcmF0b3IpKXtpZihzdHJpbmcuc2xpY2UoZW5kKS5zZWFyY2goc2VwYXJhdG9yKSl7dmFyIG1hdGNoLHN1YnN0cmluZz1yZXN1bHQ7aWYoIXNlcGFyYXRvci5nbG9iYWwpc2VwYXJhdG9yPVJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLHRvU3RyaW5nKHJlRmxhZ3MuZXhlYyhzZXBhcmF0b3IpKSsiZyIpO3NlcGFyYXRvci5sYXN0SW5kZXg9MDt3aGlsZShtYXRjaD1zZXBhcmF0b3IuZXhlYyhzdWJzdHJpbmcpKXZhciBuZXdFbmQ9bWF0Y2guaW5kZXg7cmVzdWx0PXJlc3VsdC5zbGljZSgwLG5ld0VuZD09PXVuZGVmaW5lZD9lbmQ6bmV3RW5kKX19ZWxzZSBpZihzdHJpbmcuaW5kZXhPZihiYXNlVG9TdHJpbmcoc2VwYXJhdG9yKSxlbmQpIT1lbmQpe3ZhciBpbmRleD1yZXN1bHQubGFzdEluZGV4T2Yoc2VwYXJhdG9yKTtpZihpbmRleD4tMSlyZXN1bHQ9cmVzdWx0LnNsaWNlKDAsaW5kZXgpfXJldHVybiByZXN1bHQrCm9taXNzaW9ufWZ1bmN0aW9uIHVuZXNjYXBlKHN0cmluZyl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cmV0dXJuIHN0cmluZyYmcmVIYXNFc2NhcGVkSHRtbC50ZXN0KHN0cmluZyk/c3RyaW5nLnJlcGxhY2UocmVFc2NhcGVkSHRtbCx1bmVzY2FwZUh0bWxDaGFyKTpzdHJpbmd9dmFyIHVwcGVyQ2FzZT1jcmVhdGVDb21wb3VuZGVyKGZ1bmN0aW9uKHJlc3VsdCx3b3JkLGluZGV4KXtyZXR1cm4gcmVzdWx0KyhpbmRleD8iICI6IiIpK3dvcmQudG9VcHBlckNhc2UoKX0pO3ZhciB1cHBlckZpcnN0PWNyZWF0ZUNhc2VGaXJzdCgidG9VcHBlckNhc2UiKTtmdW5jdGlvbiB3b3JkcyhzdHJpbmcscGF0dGVybixndWFyZCl7c3RyaW5nPXRvU3RyaW5nKHN0cmluZyk7cGF0dGVybj1ndWFyZD91bmRlZmluZWQ6cGF0dGVybjtpZihwYXR0ZXJuPT09dW5kZWZpbmVkKXJldHVybiBoYXNVbmljb2RlV29yZChzdHJpbmcpP3VuaWNvZGVXb3JkcyhzdHJpbmcpOmFzY2lpV29yZHMoc3RyaW5nKTtyZXR1cm4gc3RyaW5nLm1hdGNoKHBhdHRlcm4pfHwKW119dmFyIGF0dGVtcHQ9YmFzZVJlc3QoZnVuY3Rpb24oZnVuYyxhcmdzKXt0cnl7cmV0dXJuIGFwcGx5KGZ1bmMsdW5kZWZpbmVkLGFyZ3MpfWNhdGNoKGUpe3JldHVybiBpc0Vycm9yKGUpP2U6bmV3IEVycm9yKGUpfX0pO3ZhciBiaW5kQWxsPWZsYXRSZXN0KGZ1bmN0aW9uKG9iamVjdCxtZXRob2ROYW1lcyl7YXJyYXlFYWNoKG1ldGhvZE5hbWVzLGZ1bmN0aW9uKGtleSl7a2V5PXRvS2V5KGtleSk7YmFzZUFzc2lnblZhbHVlKG9iamVjdCxrZXksYmluZChvYmplY3Rba2V5XSxvYmplY3QpKX0pO3JldHVybiBvYmplY3R9KTtmdW5jdGlvbiBjb25kKHBhaXJzKXt2YXIgbGVuZ3RoPXBhaXJzPT1udWxsPzA6cGFpcnMubGVuZ3RoLHRvSXRlcmF0ZWU9Z2V0SXRlcmF0ZWUoKTtwYWlycz0hbGVuZ3RoP1tdOmFycmF5TWFwKHBhaXJzLGZ1bmN0aW9uKHBhaXIpe2lmKHR5cGVvZiBwYWlyWzFdIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtyZXR1cm5bdG9JdGVyYXRlZShwYWlyWzBdKSwKcGFpclsxXV19KTtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7dmFyIGluZGV4PS0xO3doaWxlKCsraW5kZXg8bGVuZ3RoKXt2YXIgcGFpcj1wYWlyc1tpbmRleF07aWYoYXBwbHkocGFpclswXSx0aGlzLGFyZ3MpKXJldHVybiBhcHBseShwYWlyWzFdLHRoaXMsYXJncyl9fSl9ZnVuY3Rpb24gY29uZm9ybXMoc291cmNlKXtyZXR1cm4gYmFzZUNvbmZvcm1zKGJhc2VDbG9uZShzb3VyY2UsQ0xPTkVfREVFUF9GTEFHKSl9ZnVuY3Rpb24gY29uc3RhbnQodmFsdWUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2YWx1ZX19ZnVuY3Rpb24gZGVmYXVsdFRvKHZhbHVlLGRlZmF1bHRWYWx1ZSl7cmV0dXJuIHZhbHVlPT1udWxsfHx2YWx1ZSE9PXZhbHVlP2RlZmF1bHRWYWx1ZTp2YWx1ZX12YXIgZmxvdz1jcmVhdGVGbG93KCk7dmFyIGZsb3dSaWdodD1jcmVhdGVGbG93KHRydWUpO2Z1bmN0aW9uIGlkZW50aXR5KHZhbHVlKXtyZXR1cm4gdmFsdWV9ZnVuY3Rpb24gaXRlcmF0ZWUoZnVuYyl7cmV0dXJuIGJhc2VJdGVyYXRlZSh0eXBlb2YgZnVuYz09CiJmdW5jdGlvbiI/ZnVuYzpiYXNlQ2xvbmUoZnVuYyxDTE9ORV9ERUVQX0ZMQUcpKX1mdW5jdGlvbiBtYXRjaGVzKHNvdXJjZSl7cmV0dXJuIGJhc2VNYXRjaGVzKGJhc2VDbG9uZShzb3VyY2UsQ0xPTkVfREVFUF9GTEFHKSl9ZnVuY3Rpb24gbWF0Y2hlc1Byb3BlcnR5KHBhdGgsc3JjVmFsdWUpe3JldHVybiBiYXNlTWF0Y2hlc1Byb3BlcnR5KHBhdGgsYmFzZUNsb25lKHNyY1ZhbHVlLENMT05FX0RFRVBfRkxBRykpfXZhciBtZXRob2Q9YmFzZVJlc3QoZnVuY3Rpb24ocGF0aCxhcmdzKXtyZXR1cm4gZnVuY3Rpb24ob2JqZWN0KXtyZXR1cm4gYmFzZUludm9rZShvYmplY3QscGF0aCxhcmdzKX19KTt2YXIgbWV0aG9kT2Y9YmFzZVJlc3QoZnVuY3Rpb24ob2JqZWN0LGFyZ3Mpe3JldHVybiBmdW5jdGlvbihwYXRoKXtyZXR1cm4gYmFzZUludm9rZShvYmplY3QscGF0aCxhcmdzKX19KTtmdW5jdGlvbiBtaXhpbihvYmplY3Qsc291cmNlLG9wdGlvbnMpe3ZhciBwcm9wcz1rZXlzKHNvdXJjZSksCm1ldGhvZE5hbWVzPWJhc2VGdW5jdGlvbnMoc291cmNlLHByb3BzKTtpZihvcHRpb25zPT1udWxsJiYhKGlzT2JqZWN0KHNvdXJjZSkmJihtZXRob2ROYW1lcy5sZW5ndGh8fCFwcm9wcy5sZW5ndGgpKSl7b3B0aW9ucz1zb3VyY2U7c291cmNlPW9iamVjdDtvYmplY3Q9dGhpczttZXRob2ROYW1lcz1iYXNlRnVuY3Rpb25zKHNvdXJjZSxrZXlzKHNvdXJjZSkpfXZhciBjaGFpbj0hKGlzT2JqZWN0KG9wdGlvbnMpJiYiY2hhaW4iaW4gb3B0aW9ucyl8fCEhb3B0aW9ucy5jaGFpbixpc0Z1bmM9aXNGdW5jdGlvbihvYmplY3QpO2FycmF5RWFjaChtZXRob2ROYW1lcyxmdW5jdGlvbihtZXRob2ROYW1lKXt2YXIgZnVuYz1zb3VyY2VbbWV0aG9kTmFtZV07b2JqZWN0W21ldGhvZE5hbWVdPWZ1bmM7aWYoaXNGdW5jKW9iamVjdC5wcm90b3R5cGVbbWV0aG9kTmFtZV09ZnVuY3Rpb24oKXt2YXIgY2hhaW5BbGw9dGhpcy5fX2NoYWluX187aWYoY2hhaW58fGNoYWluQWxsKXt2YXIgcmVzdWx0PQpvYmplY3QodGhpcy5fX3dyYXBwZWRfXyksYWN0aW9ucz1yZXN1bHQuX19hY3Rpb25zX189Y29weUFycmF5KHRoaXMuX19hY3Rpb25zX18pO2FjdGlvbnMucHVzaCh7ImZ1bmMiOmZ1bmMsImFyZ3MiOmFyZ3VtZW50cywidGhpc0FyZyI6b2JqZWN0fSk7cmVzdWx0Ll9fY2hhaW5fXz1jaGFpbkFsbDtyZXR1cm4gcmVzdWx0fXJldHVybiBmdW5jLmFwcGx5KG9iamVjdCxhcnJheVB1c2goW3RoaXMudmFsdWUoKV0sYXJndW1lbnRzKSl9fSk7cmV0dXJuIG9iamVjdH1mdW5jdGlvbiBub0NvbmZsaWN0KCl7aWYocm9vdC5fPT09dGhpcylyb290Ll89b2xkRGFzaDtyZXR1cm4gdGhpc31mdW5jdGlvbiBub29wKCl7fWZ1bmN0aW9uIG50aEFyZyhuKXtuPXRvSW50ZWdlcihuKTtyZXR1cm4gYmFzZVJlc3QoZnVuY3Rpb24oYXJncyl7cmV0dXJuIGJhc2VOdGgoYXJncyxuKX0pfXZhciBvdmVyPWNyZWF0ZU92ZXIoYXJyYXlNYXApO3ZhciBvdmVyRXZlcnk9Y3JlYXRlT3ZlcihhcnJheUV2ZXJ5KTsKdmFyIG92ZXJTb21lPWNyZWF0ZU92ZXIoYXJyYXlTb21lKTtmdW5jdGlvbiBwcm9wZXJ0eShwYXRoKXtyZXR1cm4gaXNLZXkocGF0aCk/YmFzZVByb3BlcnR5KHRvS2V5KHBhdGgpKTpiYXNlUHJvcGVydHlEZWVwKHBhdGgpfWZ1bmN0aW9uIHByb3BlcnR5T2Yob2JqZWN0KXtyZXR1cm4gZnVuY3Rpb24ocGF0aCl7cmV0dXJuIG9iamVjdD09bnVsbD91bmRlZmluZWQ6YmFzZUdldChvYmplY3QscGF0aCl9fXZhciByYW5nZT1jcmVhdGVSYW5nZSgpO3ZhciByYW5nZVJpZ2h0PWNyZWF0ZVJhbmdlKHRydWUpO2Z1bmN0aW9uIHN0dWJBcnJheSgpe3JldHVybltdfWZ1bmN0aW9uIHN0dWJGYWxzZSgpe3JldHVybiBmYWxzZX1mdW5jdGlvbiBzdHViT2JqZWN0KCl7cmV0dXJue319ZnVuY3Rpb24gc3R1YlN0cmluZygpe3JldHVybiIifWZ1bmN0aW9uIHN0dWJUcnVlKCl7cmV0dXJuIHRydWV9ZnVuY3Rpb24gdGltZXMobixpdGVyYXRlZSl7bj10b0ludGVnZXIobik7aWYobjwxfHxuPk1BWF9TQUZFX0lOVEVHRVIpcmV0dXJuW107CnZhciBpbmRleD1NQVhfQVJSQVlfTEVOR1RILGxlbmd0aD1uYXRpdmVNaW4obixNQVhfQVJSQVlfTEVOR1RIKTtpdGVyYXRlZT1nZXRJdGVyYXRlZShpdGVyYXRlZSk7bi09TUFYX0FSUkFZX0xFTkdUSDt2YXIgcmVzdWx0PWJhc2VUaW1lcyhsZW5ndGgsaXRlcmF0ZWUpO3doaWxlKCsraW5kZXg8bilpdGVyYXRlZShpbmRleCk7cmV0dXJuIHJlc3VsdH1mdW5jdGlvbiB0b1BhdGgodmFsdWUpe2lmKGlzQXJyYXkodmFsdWUpKXJldHVybiBhcnJheU1hcCh2YWx1ZSx0b0tleSk7cmV0dXJuIGlzU3ltYm9sKHZhbHVlKT9bdmFsdWVdOmNvcHlBcnJheShzdHJpbmdUb1BhdGgodG9TdHJpbmcodmFsdWUpKSl9ZnVuY3Rpb24gdW5pcXVlSWQocHJlZml4KXt2YXIgaWQ9KytpZENvdW50ZXI7cmV0dXJuIHRvU3RyaW5nKHByZWZpeCkraWR9dmFyIGFkZD1jcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKGF1Z2VuZCxhZGRlbmQpe3JldHVybiBhdWdlbmQrYWRkZW5kfSwwKTt2YXIgY2VpbD1jcmVhdGVSb3VuZCgiY2VpbCIpOwp2YXIgZGl2aWRlPWNyZWF0ZU1hdGhPcGVyYXRpb24oZnVuY3Rpb24oZGl2aWRlbmQsZGl2aXNvcil7cmV0dXJuIGRpdmlkZW5kL2Rpdmlzb3J9LDEpO3ZhciBmbG9vcj1jcmVhdGVSb3VuZCgiZmxvb3IiKTtmdW5jdGlvbiBtYXgoYXJyYXkpe3JldHVybiBhcnJheSYmYXJyYXkubGVuZ3RoP2Jhc2VFeHRyZW11bShhcnJheSxpZGVudGl0eSxiYXNlR3QpOnVuZGVmaW5lZH1mdW5jdGlvbiBtYXhCeShhcnJheSxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZUV4dHJlbXVtKGFycmF5LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpLGJhc2VHdCk6dW5kZWZpbmVkfWZ1bmN0aW9uIG1lYW4oYXJyYXkpe3JldHVybiBiYXNlTWVhbihhcnJheSxpZGVudGl0eSl9ZnVuY3Rpb24gbWVhbkJ5KGFycmF5LGl0ZXJhdGVlKXtyZXR1cm4gYmFzZU1lYW4oYXJyYXksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpfWZ1bmN0aW9uIG1pbihhcnJheSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/CmJhc2VFeHRyZW11bShhcnJheSxpZGVudGl0eSxiYXNlTHQpOnVuZGVmaW5lZH1mdW5jdGlvbiBtaW5CeShhcnJheSxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZUV4dHJlbXVtKGFycmF5LGdldEl0ZXJhdGVlKGl0ZXJhdGVlLDIpLGJhc2VMdCk6dW5kZWZpbmVkfXZhciBtdWx0aXBseT1jcmVhdGVNYXRoT3BlcmF0aW9uKGZ1bmN0aW9uKG11bHRpcGxpZXIsbXVsdGlwbGljYW5kKXtyZXR1cm4gbXVsdGlwbGllciptdWx0aXBsaWNhbmR9LDEpO3ZhciByb3VuZD1jcmVhdGVSb3VuZCgicm91bmQiKTt2YXIgc3VidHJhY3Q9Y3JlYXRlTWF0aE9wZXJhdGlvbihmdW5jdGlvbihtaW51ZW5kLHN1YnRyYWhlbmQpe3JldHVybiBtaW51ZW5kLXN1YnRyYWhlbmR9LDApO2Z1bmN0aW9uIHN1bShhcnJheSl7cmV0dXJuIGFycmF5JiZhcnJheS5sZW5ndGg/YmFzZVN1bShhcnJheSxpZGVudGl0eSk6MH1mdW5jdGlvbiBzdW1CeShhcnJheSxpdGVyYXRlZSl7cmV0dXJuIGFycmF5JiYKYXJyYXkubGVuZ3RoP2Jhc2VTdW0oYXJyYXksZ2V0SXRlcmF0ZWUoaXRlcmF0ZWUsMikpOjB9bG9kYXNoLmFmdGVyPWFmdGVyO2xvZGFzaC5hcnk9YXJ5O2xvZGFzaC5hc3NpZ249YXNzaWduO2xvZGFzaC5hc3NpZ25Jbj1hc3NpZ25Jbjtsb2Rhc2guYXNzaWduSW5XaXRoPWFzc2lnbkluV2l0aDtsb2Rhc2guYXNzaWduV2l0aD1hc3NpZ25XaXRoO2xvZGFzaC5hdD1hdDtsb2Rhc2guYmVmb3JlPWJlZm9yZTtsb2Rhc2guYmluZD1iaW5kO2xvZGFzaC5iaW5kQWxsPWJpbmRBbGw7bG9kYXNoLmJpbmRLZXk9YmluZEtleTtsb2Rhc2guY2FzdEFycmF5PWNhc3RBcnJheTtsb2Rhc2guY2hhaW49Y2hhaW47bG9kYXNoLmNodW5rPWNodW5rO2xvZGFzaC5jb21wYWN0PWNvbXBhY3Q7bG9kYXNoLmNvbmNhdD1jb25jYXQ7bG9kYXNoLmNvbmQ9Y29uZDtsb2Rhc2guY29uZm9ybXM9Y29uZm9ybXM7bG9kYXNoLmNvbnN0YW50PWNvbnN0YW50O2xvZGFzaC5jb3VudEJ5PWNvdW50Qnk7bG9kYXNoLmNyZWF0ZT0KY3JlYXRlO2xvZGFzaC5jdXJyeT1jdXJyeTtsb2Rhc2guY3VycnlSaWdodD1jdXJyeVJpZ2h0O2xvZGFzaC5kZWJvdW5jZT1kZWJvdW5jZTtsb2Rhc2guZGVmYXVsdHM9ZGVmYXVsdHM7bG9kYXNoLmRlZmF1bHRzRGVlcD1kZWZhdWx0c0RlZXA7bG9kYXNoLmRlZmVyPWRlZmVyO2xvZGFzaC5kZWxheT1kZWxheTtsb2Rhc2guZGlmZmVyZW5jZT1kaWZmZXJlbmNlO2xvZGFzaC5kaWZmZXJlbmNlQnk9ZGlmZmVyZW5jZUJ5O2xvZGFzaC5kaWZmZXJlbmNlV2l0aD1kaWZmZXJlbmNlV2l0aDtsb2Rhc2guZHJvcD1kcm9wO2xvZGFzaC5kcm9wUmlnaHQ9ZHJvcFJpZ2h0O2xvZGFzaC5kcm9wUmlnaHRXaGlsZT1kcm9wUmlnaHRXaGlsZTtsb2Rhc2guZHJvcFdoaWxlPWRyb3BXaGlsZTtsb2Rhc2guZmlsbD1maWxsO2xvZGFzaC5maWx0ZXI9ZmlsdGVyO2xvZGFzaC5mbGF0TWFwPWZsYXRNYXA7bG9kYXNoLmZsYXRNYXBEZWVwPWZsYXRNYXBEZWVwO2xvZGFzaC5mbGF0TWFwRGVwdGg9ZmxhdE1hcERlcHRoOwpsb2Rhc2guZmxhdHRlbj1mbGF0dGVuO2xvZGFzaC5mbGF0dGVuRGVlcD1mbGF0dGVuRGVlcDtsb2Rhc2guZmxhdHRlbkRlcHRoPWZsYXR0ZW5EZXB0aDtsb2Rhc2guZmxpcD1mbGlwO2xvZGFzaC5mbG93PWZsb3c7bG9kYXNoLmZsb3dSaWdodD1mbG93UmlnaHQ7bG9kYXNoLmZyb21QYWlycz1mcm9tUGFpcnM7bG9kYXNoLmZ1bmN0aW9ucz1mdW5jdGlvbnM7bG9kYXNoLmZ1bmN0aW9uc0luPWZ1bmN0aW9uc0luO2xvZGFzaC5ncm91cEJ5PWdyb3VwQnk7bG9kYXNoLmluaXRpYWw9aW5pdGlhbDtsb2Rhc2guaW50ZXJzZWN0aW9uPWludGVyc2VjdGlvbjtsb2Rhc2guaW50ZXJzZWN0aW9uQnk9aW50ZXJzZWN0aW9uQnk7bG9kYXNoLmludGVyc2VjdGlvbldpdGg9aW50ZXJzZWN0aW9uV2l0aDtsb2Rhc2guaW52ZXJ0PWludmVydDtsb2Rhc2guaW52ZXJ0Qnk9aW52ZXJ0Qnk7bG9kYXNoLmludm9rZU1hcD1pbnZva2VNYXA7bG9kYXNoLml0ZXJhdGVlPWl0ZXJhdGVlO2xvZGFzaC5rZXlCeT0Ka2V5Qnk7bG9kYXNoLmtleXM9a2V5cztsb2Rhc2gua2V5c0luPWtleXNJbjtsb2Rhc2gubWFwPW1hcDtsb2Rhc2gubWFwS2V5cz1tYXBLZXlzO2xvZGFzaC5tYXBWYWx1ZXM9bWFwVmFsdWVzO2xvZGFzaC5tYXRjaGVzPW1hdGNoZXM7bG9kYXNoLm1hdGNoZXNQcm9wZXJ0eT1tYXRjaGVzUHJvcGVydHk7bG9kYXNoLm1lbW9pemU9bWVtb2l6ZTtsb2Rhc2gubWVyZ2U9bWVyZ2U7bG9kYXNoLm1lcmdlV2l0aD1tZXJnZVdpdGg7bG9kYXNoLm1ldGhvZD1tZXRob2Q7bG9kYXNoLm1ldGhvZE9mPW1ldGhvZE9mO2xvZGFzaC5taXhpbj1taXhpbjtsb2Rhc2gubmVnYXRlPW5lZ2F0ZTtsb2Rhc2gubnRoQXJnPW50aEFyZztsb2Rhc2gub21pdD1vbWl0O2xvZGFzaC5vbWl0Qnk9b21pdEJ5O2xvZGFzaC5vbmNlPW9uY2U7bG9kYXNoLm9yZGVyQnk9b3JkZXJCeTtsb2Rhc2gub3Zlcj1vdmVyO2xvZGFzaC5vdmVyQXJncz1vdmVyQXJncztsb2Rhc2gub3ZlckV2ZXJ5PW92ZXJFdmVyeTtsb2Rhc2gub3ZlclNvbWU9Cm92ZXJTb21lO2xvZGFzaC5wYXJ0aWFsPXBhcnRpYWw7bG9kYXNoLnBhcnRpYWxSaWdodD1wYXJ0aWFsUmlnaHQ7bG9kYXNoLnBhcnRpdGlvbj1wYXJ0aXRpb247bG9kYXNoLnBpY2s9cGljaztsb2Rhc2gucGlja0J5PXBpY2tCeTtsb2Rhc2gucHJvcGVydHk9cHJvcGVydHk7bG9kYXNoLnByb3BlcnR5T2Y9cHJvcGVydHlPZjtsb2Rhc2gucHVsbD1wdWxsO2xvZGFzaC5wdWxsQWxsPXB1bGxBbGw7bG9kYXNoLnB1bGxBbGxCeT1wdWxsQWxsQnk7bG9kYXNoLnB1bGxBbGxXaXRoPXB1bGxBbGxXaXRoO2xvZGFzaC5wdWxsQXQ9cHVsbEF0O2xvZGFzaC5yYW5nZT1yYW5nZTtsb2Rhc2gucmFuZ2VSaWdodD1yYW5nZVJpZ2h0O2xvZGFzaC5yZWFyZz1yZWFyZztsb2Rhc2gucmVqZWN0PXJlamVjdDtsb2Rhc2gucmVtb3ZlPXJlbW92ZTtsb2Rhc2gucmVzdD1yZXN0O2xvZGFzaC5yZXZlcnNlPXJldmVyc2U7bG9kYXNoLnNhbXBsZVNpemU9c2FtcGxlU2l6ZTtsb2Rhc2guc2V0PXNldDtsb2Rhc2guc2V0V2l0aD0Kc2V0V2l0aDtsb2Rhc2guc2h1ZmZsZT1zaHVmZmxlO2xvZGFzaC5zbGljZT1zbGljZTtsb2Rhc2guc29ydEJ5PXNvcnRCeTtsb2Rhc2guc29ydGVkVW5pcT1zb3J0ZWRVbmlxO2xvZGFzaC5zb3J0ZWRVbmlxQnk9c29ydGVkVW5pcUJ5O2xvZGFzaC5zcGxpdD1zcGxpdDtsb2Rhc2guc3ByZWFkPXNwcmVhZDtsb2Rhc2gudGFpbD10YWlsO2xvZGFzaC50YWtlPXRha2U7bG9kYXNoLnRha2VSaWdodD10YWtlUmlnaHQ7bG9kYXNoLnRha2VSaWdodFdoaWxlPXRha2VSaWdodFdoaWxlO2xvZGFzaC50YWtlV2hpbGU9dGFrZVdoaWxlO2xvZGFzaC50YXA9dGFwO2xvZGFzaC50aHJvdHRsZT10aHJvdHRsZTtsb2Rhc2gudGhydT10aHJ1O2xvZGFzaC50b0FycmF5PXRvQXJyYXk7bG9kYXNoLnRvUGFpcnM9dG9QYWlycztsb2Rhc2gudG9QYWlyc0luPXRvUGFpcnNJbjtsb2Rhc2gudG9QYXRoPXRvUGF0aDtsb2Rhc2gudG9QbGFpbk9iamVjdD10b1BsYWluT2JqZWN0O2xvZGFzaC50cmFuc2Zvcm09CnRyYW5zZm9ybTtsb2Rhc2gudW5hcnk9dW5hcnk7bG9kYXNoLnVuaW9uPXVuaW9uO2xvZGFzaC51bmlvbkJ5PXVuaW9uQnk7bG9kYXNoLnVuaW9uV2l0aD11bmlvbldpdGg7bG9kYXNoLnVuaXE9dW5pcTtsb2Rhc2gudW5pcUJ5PXVuaXFCeTtsb2Rhc2gudW5pcVdpdGg9dW5pcVdpdGg7bG9kYXNoLnVuc2V0PXVuc2V0O2xvZGFzaC51bnppcD11bnppcDtsb2Rhc2gudW56aXBXaXRoPXVuemlwV2l0aDtsb2Rhc2gudXBkYXRlPXVwZGF0ZTtsb2Rhc2gudXBkYXRlV2l0aD11cGRhdGVXaXRoO2xvZGFzaC52YWx1ZXM9dmFsdWVzO2xvZGFzaC52YWx1ZXNJbj12YWx1ZXNJbjtsb2Rhc2gud2l0aG91dD13aXRob3V0O2xvZGFzaC53b3Jkcz13b3Jkcztsb2Rhc2gud3JhcD13cmFwO2xvZGFzaC54b3I9eG9yO2xvZGFzaC54b3JCeT14b3JCeTtsb2Rhc2gueG9yV2l0aD14b3JXaXRoO2xvZGFzaC56aXA9emlwO2xvZGFzaC56aXBPYmplY3Q9emlwT2JqZWN0O2xvZGFzaC56aXBPYmplY3REZWVwPQp6aXBPYmplY3REZWVwO2xvZGFzaC56aXBXaXRoPXppcFdpdGg7bG9kYXNoLmVudHJpZXM9dG9QYWlycztsb2Rhc2guZW50cmllc0luPXRvUGFpcnNJbjtsb2Rhc2guZXh0ZW5kPWFzc2lnbkluO2xvZGFzaC5leHRlbmRXaXRoPWFzc2lnbkluV2l0aDttaXhpbihsb2Rhc2gsbG9kYXNoKTtsb2Rhc2guYWRkPWFkZDtsb2Rhc2guYXR0ZW1wdD1hdHRlbXB0O2xvZGFzaC5jYW1lbENhc2U9Y2FtZWxDYXNlO2xvZGFzaC5jYXBpdGFsaXplPWNhcGl0YWxpemU7bG9kYXNoLmNlaWw9Y2VpbDtsb2Rhc2guY2xhbXA9Y2xhbXA7bG9kYXNoLmNsb25lPWNsb25lO2xvZGFzaC5jbG9uZURlZXA9Y2xvbmVEZWVwO2xvZGFzaC5jbG9uZURlZXBXaXRoPWNsb25lRGVlcFdpdGg7bG9kYXNoLmNsb25lV2l0aD1jbG9uZVdpdGg7bG9kYXNoLmNvbmZvcm1zVG89Y29uZm9ybXNUbztsb2Rhc2guZGVidXJyPWRlYnVycjtsb2Rhc2guZGVmYXVsdFRvPWRlZmF1bHRUbztsb2Rhc2guZGl2aWRlPWRpdmlkZTtsb2Rhc2guZW5kc1dpdGg9CmVuZHNXaXRoO2xvZGFzaC5lcT1lcTtsb2Rhc2guZXNjYXBlPWVzY2FwZTtsb2Rhc2guZXNjYXBlUmVnRXhwPWVzY2FwZVJlZ0V4cDtsb2Rhc2guZXZlcnk9ZXZlcnk7bG9kYXNoLmZpbmQ9ZmluZDtsb2Rhc2guZmluZEluZGV4PWZpbmRJbmRleDtsb2Rhc2guZmluZEtleT1maW5kS2V5O2xvZGFzaC5maW5kTGFzdD1maW5kTGFzdDtsb2Rhc2guZmluZExhc3RJbmRleD1maW5kTGFzdEluZGV4O2xvZGFzaC5maW5kTGFzdEtleT1maW5kTGFzdEtleTtsb2Rhc2guZmxvb3I9Zmxvb3I7bG9kYXNoLmZvckVhY2g9Zm9yRWFjaDtsb2Rhc2guZm9yRWFjaFJpZ2h0PWZvckVhY2hSaWdodDtsb2Rhc2guZm9ySW49Zm9ySW47bG9kYXNoLmZvckluUmlnaHQ9Zm9ySW5SaWdodDtsb2Rhc2guZm9yT3duPWZvck93bjtsb2Rhc2guZm9yT3duUmlnaHQ9Zm9yT3duUmlnaHQ7bG9kYXNoLmdldD1nZXQ7bG9kYXNoLmd0PWd0O2xvZGFzaC5ndGU9Z3RlO2xvZGFzaC5oYXM9aGFzO2xvZGFzaC5oYXNJbj1oYXNJbjsKbG9kYXNoLmhlYWQ9aGVhZDtsb2Rhc2guaWRlbnRpdHk9aWRlbnRpdHk7bG9kYXNoLmluY2x1ZGVzPWluY2x1ZGVzO2xvZGFzaC5pbmRleE9mPWluZGV4T2Y7bG9kYXNoLmluUmFuZ2U9aW5SYW5nZTtsb2Rhc2guaW52b2tlPWludm9rZTtsb2Rhc2guaXNBcmd1bWVudHM9aXNBcmd1bWVudHM7bG9kYXNoLmlzQXJyYXk9aXNBcnJheTtsb2Rhc2guaXNBcnJheUJ1ZmZlcj1pc0FycmF5QnVmZmVyO2xvZGFzaC5pc0FycmF5TGlrZT1pc0FycmF5TGlrZTtsb2Rhc2guaXNBcnJheUxpa2VPYmplY3Q9aXNBcnJheUxpa2VPYmplY3Q7bG9kYXNoLmlzQm9vbGVhbj1pc0Jvb2xlYW47bG9kYXNoLmlzQnVmZmVyPWlzQnVmZmVyO2xvZGFzaC5pc0RhdGU9aXNEYXRlO2xvZGFzaC5pc0VsZW1lbnQ9aXNFbGVtZW50O2xvZGFzaC5pc0VtcHR5PWlzRW1wdHk7bG9kYXNoLmlzRXF1YWw9aXNFcXVhbDtsb2Rhc2guaXNFcXVhbFdpdGg9aXNFcXVhbFdpdGg7bG9kYXNoLmlzRXJyb3I9aXNFcnJvcjtsb2Rhc2guaXNGaW5pdGU9CmlzRmluaXRlO2xvZGFzaC5pc0Z1bmN0aW9uPWlzRnVuY3Rpb247bG9kYXNoLmlzSW50ZWdlcj1pc0ludGVnZXI7bG9kYXNoLmlzTGVuZ3RoPWlzTGVuZ3RoO2xvZGFzaC5pc01hcD1pc01hcDtsb2Rhc2guaXNNYXRjaD1pc01hdGNoO2xvZGFzaC5pc01hdGNoV2l0aD1pc01hdGNoV2l0aDtsb2Rhc2guaXNOYU49aXNOYU47bG9kYXNoLmlzTmF0aXZlPWlzTmF0aXZlO2xvZGFzaC5pc05pbD1pc05pbDtsb2Rhc2guaXNOdWxsPWlzTnVsbDtsb2Rhc2guaXNOdW1iZXI9aXNOdW1iZXI7bG9kYXNoLmlzT2JqZWN0PWlzT2JqZWN0O2xvZGFzaC5pc09iamVjdExpa2U9aXNPYmplY3RMaWtlO2xvZGFzaC5pc1BsYWluT2JqZWN0PWlzUGxhaW5PYmplY3Q7bG9kYXNoLmlzUmVnRXhwPWlzUmVnRXhwO2xvZGFzaC5pc1NhZmVJbnRlZ2VyPWlzU2FmZUludGVnZXI7bG9kYXNoLmlzU2V0PWlzU2V0O2xvZGFzaC5pc1N0cmluZz1pc1N0cmluZztsb2Rhc2guaXNTeW1ib2w9aXNTeW1ib2w7bG9kYXNoLmlzVHlwZWRBcnJheT0KaXNUeXBlZEFycmF5O2xvZGFzaC5pc1VuZGVmaW5lZD1pc1VuZGVmaW5lZDtsb2Rhc2guaXNXZWFrTWFwPWlzV2Vha01hcDtsb2Rhc2guaXNXZWFrU2V0PWlzV2Vha1NldDtsb2Rhc2guam9pbj1qb2luO2xvZGFzaC5rZWJhYkNhc2U9a2ViYWJDYXNlO2xvZGFzaC5sYXN0PWxhc3Q7bG9kYXNoLmxhc3RJbmRleE9mPWxhc3RJbmRleE9mO2xvZGFzaC5sb3dlckNhc2U9bG93ZXJDYXNlO2xvZGFzaC5sb3dlckZpcnN0PWxvd2VyRmlyc3Q7bG9kYXNoLmx0PWx0O2xvZGFzaC5sdGU9bHRlO2xvZGFzaC5tYXg9bWF4O2xvZGFzaC5tYXhCeT1tYXhCeTtsb2Rhc2gubWVhbj1tZWFuO2xvZGFzaC5tZWFuQnk9bWVhbkJ5O2xvZGFzaC5taW49bWluO2xvZGFzaC5taW5CeT1taW5CeTtsb2Rhc2guc3R1YkFycmF5PXN0dWJBcnJheTtsb2Rhc2guc3R1YkZhbHNlPXN0dWJGYWxzZTtsb2Rhc2guc3R1Yk9iamVjdD1zdHViT2JqZWN0O2xvZGFzaC5zdHViU3RyaW5nPXN0dWJTdHJpbmc7bG9kYXNoLnN0dWJUcnVlPQpzdHViVHJ1ZTtsb2Rhc2gubXVsdGlwbHk9bXVsdGlwbHk7bG9kYXNoLm50aD1udGg7bG9kYXNoLm5vQ29uZmxpY3Q9bm9Db25mbGljdDtsb2Rhc2gubm9vcD1ub29wO2xvZGFzaC5ub3c9bm93O2xvZGFzaC5wYWQ9cGFkO2xvZGFzaC5wYWRFbmQ9cGFkRW5kO2xvZGFzaC5wYWRTdGFydD1wYWRTdGFydDtsb2Rhc2gucGFyc2VJbnQ9cGFyc2VJbnQ7bG9kYXNoLnJhbmRvbT1yYW5kb207bG9kYXNoLnJlZHVjZT1yZWR1Y2U7bG9kYXNoLnJlZHVjZVJpZ2h0PXJlZHVjZVJpZ2h0O2xvZGFzaC5yZXBlYXQ9cmVwZWF0O2xvZGFzaC5yZXBsYWNlPXJlcGxhY2U7bG9kYXNoLnJlc3VsdD1yZXN1bHQ7bG9kYXNoLnJvdW5kPXJvdW5kO2xvZGFzaC5ydW5JbkNvbnRleHQ9cnVuSW5Db250ZXh0O2xvZGFzaC5zYW1wbGU9c2FtcGxlO2xvZGFzaC5zaXplPXNpemU7bG9kYXNoLnNuYWtlQ2FzZT1zbmFrZUNhc2U7bG9kYXNoLnNvbWU9c29tZTtsb2Rhc2guc29ydGVkSW5kZXg9c29ydGVkSW5kZXg7bG9kYXNoLnNvcnRlZEluZGV4Qnk9CnNvcnRlZEluZGV4Qnk7bG9kYXNoLnNvcnRlZEluZGV4T2Y9c29ydGVkSW5kZXhPZjtsb2Rhc2guc29ydGVkTGFzdEluZGV4PXNvcnRlZExhc3RJbmRleDtsb2Rhc2guc29ydGVkTGFzdEluZGV4Qnk9c29ydGVkTGFzdEluZGV4Qnk7bG9kYXNoLnNvcnRlZExhc3RJbmRleE9mPXNvcnRlZExhc3RJbmRleE9mO2xvZGFzaC5zdGFydENhc2U9c3RhcnRDYXNlO2xvZGFzaC5zdGFydHNXaXRoPXN0YXJ0c1dpdGg7bG9kYXNoLnN1YnRyYWN0PXN1YnRyYWN0O2xvZGFzaC5zdW09c3VtO2xvZGFzaC5zdW1CeT1zdW1CeTtsb2Rhc2gudGVtcGxhdGU9dGVtcGxhdGU7bG9kYXNoLnRpbWVzPXRpbWVzO2xvZGFzaC50b0Zpbml0ZT10b0Zpbml0ZTtsb2Rhc2gudG9JbnRlZ2VyPXRvSW50ZWdlcjtsb2Rhc2gudG9MZW5ndGg9dG9MZW5ndGg7bG9kYXNoLnRvTG93ZXI9dG9Mb3dlcjtsb2Rhc2gudG9OdW1iZXI9dG9OdW1iZXI7bG9kYXNoLnRvU2FmZUludGVnZXI9dG9TYWZlSW50ZWdlcjtsb2Rhc2gudG9TdHJpbmc9CnRvU3RyaW5nO2xvZGFzaC50b1VwcGVyPXRvVXBwZXI7bG9kYXNoLnRyaW09dHJpbTtsb2Rhc2gudHJpbUVuZD10cmltRW5kO2xvZGFzaC50cmltU3RhcnQ9dHJpbVN0YXJ0O2xvZGFzaC50cnVuY2F0ZT10cnVuY2F0ZTtsb2Rhc2gudW5lc2NhcGU9dW5lc2NhcGU7bG9kYXNoLnVuaXF1ZUlkPXVuaXF1ZUlkO2xvZGFzaC51cHBlckNhc2U9dXBwZXJDYXNlO2xvZGFzaC51cHBlckZpcnN0PXVwcGVyRmlyc3Q7bG9kYXNoLmVhY2g9Zm9yRWFjaDtsb2Rhc2guZWFjaFJpZ2h0PWZvckVhY2hSaWdodDtsb2Rhc2guZmlyc3Q9aGVhZDttaXhpbihsb2Rhc2gsZnVuY3Rpb24oKXt2YXIgc291cmNlPXt9O2Jhc2VGb3JPd24obG9kYXNoLGZ1bmN0aW9uKGZ1bmMsbWV0aG9kTmFtZSl7aWYoIWhhc093blByb3BlcnR5LmNhbGwobG9kYXNoLnByb3RvdHlwZSxtZXRob2ROYW1lKSlzb3VyY2VbbWV0aG9kTmFtZV09ZnVuY30pO3JldHVybiBzb3VyY2V9KCkseyJjaGFpbiI6ZmFsc2V9KTtsb2Rhc2guVkVSU0lPTj0KVkVSU0lPTjthcnJheUVhY2goWyJiaW5kIiwiYmluZEtleSIsImN1cnJ5IiwiY3VycnlSaWdodCIsInBhcnRpYWwiLCJwYXJ0aWFsUmlnaHQiXSxmdW5jdGlvbihtZXRob2ROYW1lKXtsb2Rhc2hbbWV0aG9kTmFtZV0ucGxhY2Vob2xkZXI9bG9kYXNofSk7YXJyYXlFYWNoKFsiZHJvcCIsInRha2UiXSxmdW5jdGlvbihtZXRob2ROYW1lLGluZGV4KXtMYXp5V3JhcHBlci5wcm90b3R5cGVbbWV0aG9kTmFtZV09ZnVuY3Rpb24obil7bj1uPT09dW5kZWZpbmVkPzE6bmF0aXZlTWF4KHRvSW50ZWdlcihuKSwwKTt2YXIgcmVzdWx0PXRoaXMuX19maWx0ZXJlZF9fJiYhaW5kZXg/bmV3IExhenlXcmFwcGVyKHRoaXMpOnRoaXMuY2xvbmUoKTtpZihyZXN1bHQuX19maWx0ZXJlZF9fKXJlc3VsdC5fX3Rha2VDb3VudF9fPW5hdGl2ZU1pbihuLHJlc3VsdC5fX3Rha2VDb3VudF9fKTtlbHNlIHJlc3VsdC5fX3ZpZXdzX18ucHVzaCh7InNpemUiOm5hdGl2ZU1pbihuLE1BWF9BUlJBWV9MRU5HVEgpLAoidHlwZSI6bWV0aG9kTmFtZSsocmVzdWx0Ll9fZGlyX188MD8iUmlnaHQiOiIiKX0pO3JldHVybiByZXN1bHR9O0xhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lKyJSaWdodCJdPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnJldmVyc2UoKVttZXRob2ROYW1lXShuKS5yZXZlcnNlKCl9fSk7YXJyYXlFYWNoKFsiZmlsdGVyIiwibWFwIiwidGFrZVdoaWxlIl0sZnVuY3Rpb24obWV0aG9kTmFtZSxpbmRleCl7dmFyIHR5cGU9aW5kZXgrMSxpc0ZpbHRlcj10eXBlPT1MQVpZX0ZJTFRFUl9GTEFHfHx0eXBlPT1MQVpZX1dISUxFX0ZMQUc7TGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKGl0ZXJhdGVlKXt2YXIgcmVzdWx0PXRoaXMuY2xvbmUoKTtyZXN1bHQuX19pdGVyYXRlZXNfXy5wdXNoKHsiaXRlcmF0ZWUiOmdldEl0ZXJhdGVlKGl0ZXJhdGVlLDMpLCJ0eXBlIjp0eXBlfSk7cmVzdWx0Ll9fZmlsdGVyZWRfXz1yZXN1bHQuX19maWx0ZXJlZF9ffHwKaXNGaWx0ZXI7cmV0dXJuIHJlc3VsdH19KTthcnJheUVhY2goWyJoZWFkIiwibGFzdCJdLGZ1bmN0aW9uKG1ldGhvZE5hbWUsaW5kZXgpe3ZhciB0YWtlTmFtZT0idGFrZSIrKGluZGV4PyJSaWdodCI6IiIpO0xhenlXcmFwcGVyLnByb3RvdHlwZVttZXRob2ROYW1lXT1mdW5jdGlvbigpe3JldHVybiB0aGlzW3Rha2VOYW1lXSgxKS52YWx1ZSgpWzBdfX0pO2FycmF5RWFjaChbImluaXRpYWwiLCJ0YWlsIl0sZnVuY3Rpb24obWV0aG9kTmFtZSxpbmRleCl7dmFyIGRyb3BOYW1lPSJkcm9wIisoaW5kZXg/IiI6IlJpZ2h0Iik7TGF6eVdyYXBwZXIucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19maWx0ZXJlZF9fP25ldyBMYXp5V3JhcHBlcih0aGlzKTp0aGlzW2Ryb3BOYW1lXSgxKX19KTtMYXp5V3JhcHBlci5wcm90b3R5cGUuY29tcGFjdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcihpZGVudGl0eSl9O0xhenlXcmFwcGVyLnByb3RvdHlwZS5maW5kPQpmdW5jdGlvbihwcmVkaWNhdGUpe3JldHVybiB0aGlzLmZpbHRlcihwcmVkaWNhdGUpLmhlYWQoKX07TGF6eVdyYXBwZXIucHJvdG90eXBlLmZpbmRMYXN0PWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLmZpbmQocHJlZGljYXRlKX07TGF6eVdyYXBwZXIucHJvdG90eXBlLmludm9rZU1hcD1iYXNlUmVzdChmdW5jdGlvbihwYXRoLGFyZ3Mpe2lmKHR5cGVvZiBwYXRoPT0iZnVuY3Rpb24iKXJldHVybiBuZXcgTGF6eVdyYXBwZXIodGhpcyk7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gYmFzZUludm9rZSh2YWx1ZSxwYXRoLGFyZ3MpfSl9KTtMYXp5V3JhcHBlci5wcm90b3R5cGUucmVqZWN0PWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMuZmlsdGVyKG5lZ2F0ZShnZXRJdGVyYXRlZShwcmVkaWNhdGUpKSl9O0xhenlXcmFwcGVyLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihzdGFydCxlbmQpe3N0YXJ0PXRvSW50ZWdlcihzdGFydCk7CnZhciByZXN1bHQ9dGhpcztpZihyZXN1bHQuX19maWx0ZXJlZF9fJiYoc3RhcnQ+MHx8ZW5kPDApKXJldHVybiBuZXcgTGF6eVdyYXBwZXIocmVzdWx0KTtpZihzdGFydDwwKXJlc3VsdD1yZXN1bHQudGFrZVJpZ2h0KC1zdGFydCk7ZWxzZSBpZihzdGFydClyZXN1bHQ9cmVzdWx0LmRyb3Aoc3RhcnQpO2lmKGVuZCE9PXVuZGVmaW5lZCl7ZW5kPXRvSW50ZWdlcihlbmQpO3Jlc3VsdD1lbmQ8MD9yZXN1bHQuZHJvcFJpZ2h0KC1lbmQpOnJlc3VsdC50YWtlKGVuZC1zdGFydCl9cmV0dXJuIHJlc3VsdH07TGF6eVdyYXBwZXIucHJvdG90eXBlLnRha2VSaWdodFdoaWxlPWZ1bmN0aW9uKHByZWRpY2F0ZSl7cmV0dXJuIHRoaXMucmV2ZXJzZSgpLnRha2VXaGlsZShwcmVkaWNhdGUpLnJldmVyc2UoKX07TGF6eVdyYXBwZXIucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWtlKE1BWF9BUlJBWV9MRU5HVEgpfTtiYXNlRm9yT3duKExhenlXcmFwcGVyLnByb3RvdHlwZSwKZnVuY3Rpb24oZnVuYyxtZXRob2ROYW1lKXt2YXIgY2hlY2tJdGVyYXRlZT0vXig/OmZpbHRlcnxmaW5kfG1hcHxyZWplY3QpfFdoaWxlJC8udGVzdChtZXRob2ROYW1lKSxpc1Rha2VyPS9eKD86aGVhZHxsYXN0KSQvLnRlc3QobWV0aG9kTmFtZSksbG9kYXNoRnVuYz1sb2Rhc2hbaXNUYWtlcj8idGFrZSIrKG1ldGhvZE5hbWU9PSJsYXN0Ij8iUmlnaHQiOiIiKTptZXRob2ROYW1lXSxyZXRVbndyYXBwZWQ9aXNUYWtlcnx8L15maW5kLy50ZXN0KG1ldGhvZE5hbWUpO2lmKCFsb2Rhc2hGdW5jKXJldHVybjtsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7dmFyIHZhbHVlPXRoaXMuX193cmFwcGVkX18sYXJncz1pc1Rha2VyP1sxXTphcmd1bWVudHMsaXNMYXp5PXZhbHVlIGluc3RhbmNlb2YgTGF6eVdyYXBwZXIsaXRlcmF0ZWU9YXJnc1swXSx1c2VMYXp5PWlzTGF6eXx8aXNBcnJheSh2YWx1ZSk7dmFyIGludGVyY2VwdG9yPWZ1bmN0aW9uKHZhbHVlKXt2YXIgcmVzdWx0PQpsb2Rhc2hGdW5jLmFwcGx5KGxvZGFzaCxhcnJheVB1c2goW3ZhbHVlXSxhcmdzKSk7cmV0dXJuIGlzVGFrZXImJmNoYWluQWxsP3Jlc3VsdFswXTpyZXN1bHR9O2lmKHVzZUxhenkmJmNoZWNrSXRlcmF0ZWUmJnR5cGVvZiBpdGVyYXRlZT09ImZ1bmN0aW9uIiYmaXRlcmF0ZWUubGVuZ3RoIT0xKWlzTGF6eT11c2VMYXp5PWZhbHNlO3ZhciBjaGFpbkFsbD10aGlzLl9fY2hhaW5fXyxpc0h5YnJpZD0hIXRoaXMuX19hY3Rpb25zX18ubGVuZ3RoLGlzVW53cmFwcGVkPXJldFVud3JhcHBlZCYmIWNoYWluQWxsLG9ubHlMYXp5PWlzTGF6eSYmIWlzSHlicmlkO2lmKCFyZXRVbndyYXBwZWQmJnVzZUxhenkpe3ZhbHVlPW9ubHlMYXp5P3ZhbHVlOm5ldyBMYXp5V3JhcHBlcih0aGlzKTt2YXIgcmVzdWx0PWZ1bmMuYXBwbHkodmFsdWUsYXJncyk7cmVzdWx0Ll9fYWN0aW9uc19fLnB1c2goeyJmdW5jIjp0aHJ1LCJhcmdzIjpbaW50ZXJjZXB0b3JdLCJ0aGlzQXJnIjp1bmRlZmluZWR9KTtyZXR1cm4gbmV3IExvZGFzaFdyYXBwZXIocmVzdWx0LApjaGFpbkFsbCl9aWYoaXNVbndyYXBwZWQmJm9ubHlMYXp5KXJldHVybiBmdW5jLmFwcGx5KHRoaXMsYXJncyk7cmVzdWx0PXRoaXMudGhydShpbnRlcmNlcHRvcik7cmV0dXJuIGlzVW53cmFwcGVkP2lzVGFrZXI/cmVzdWx0LnZhbHVlKClbMF06cmVzdWx0LnZhbHVlKCk6cmVzdWx0fX0pO2FycmF5RWFjaChbInBvcCIsInB1c2giLCJzaGlmdCIsInNvcnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24obWV0aG9kTmFtZSl7dmFyIGZ1bmM9YXJyYXlQcm90b1ttZXRob2ROYW1lXSxjaGFpbk5hbWU9L14oPzpwdXNofHNvcnR8dW5zaGlmdCkkLy50ZXN0KG1ldGhvZE5hbWUpPyJ0YXAiOiJ0aHJ1IixyZXRVbndyYXBwZWQ9L14oPzpwb3B8c2hpZnQpJC8udGVzdChtZXRob2ROYW1lKTtsb2Rhc2gucHJvdG90eXBlW21ldGhvZE5hbWVdPWZ1bmN0aW9uKCl7dmFyIGFyZ3M9YXJndW1lbnRzO2lmKHJldFVud3JhcHBlZCYmIXRoaXMuX19jaGFpbl9fKXt2YXIgdmFsdWU9dGhpcy52YWx1ZSgpOwpyZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKT92YWx1ZTpbXSxhcmdzKX1yZXR1cm4gdGhpc1tjaGFpbk5hbWVdKGZ1bmN0aW9uKHZhbHVlKXtyZXR1cm4gZnVuYy5hcHBseShpc0FycmF5KHZhbHVlKT92YWx1ZTpbXSxhcmdzKX0pfX0pO2Jhc2VGb3JPd24oTGF6eVdyYXBwZXIucHJvdG90eXBlLGZ1bmN0aW9uKGZ1bmMsbWV0aG9kTmFtZSl7dmFyIGxvZGFzaEZ1bmM9bG9kYXNoW21ldGhvZE5hbWVdO2lmKGxvZGFzaEZ1bmMpe3ZhciBrZXk9bG9kYXNoRnVuYy5uYW1lKyIiLG5hbWVzPXJlYWxOYW1lc1trZXldfHwocmVhbE5hbWVzW2tleV09W10pO25hbWVzLnB1c2goeyJuYW1lIjptZXRob2ROYW1lLCJmdW5jIjpsb2Rhc2hGdW5jfSl9fSk7cmVhbE5hbWVzW2NyZWF0ZUh5YnJpZCh1bmRlZmluZWQsV1JBUF9CSU5EX0tFWV9GTEFHKS5uYW1lXT1beyJuYW1lIjoid3JhcHBlciIsImZ1bmMiOnVuZGVmaW5lZH1dO0xhenlXcmFwcGVyLnByb3RvdHlwZS5jbG9uZT1sYXp5Q2xvbmU7CkxhenlXcmFwcGVyLnByb3RvdHlwZS5yZXZlcnNlPWxhenlSZXZlcnNlO0xhenlXcmFwcGVyLnByb3RvdHlwZS52YWx1ZT1sYXp5VmFsdWU7bG9kYXNoLnByb3RvdHlwZS5hdD13cmFwcGVyQXQ7bG9kYXNoLnByb3RvdHlwZS5jaGFpbj13cmFwcGVyQ2hhaW47bG9kYXNoLnByb3RvdHlwZS5jb21taXQ9d3JhcHBlckNvbW1pdDtsb2Rhc2gucHJvdG90eXBlLm5leHQ9d3JhcHBlck5leHQ7bG9kYXNoLnByb3RvdHlwZS5wbGFudD13cmFwcGVyUGxhbnQ7bG9kYXNoLnByb3RvdHlwZS5yZXZlcnNlPXdyYXBwZXJSZXZlcnNlO2xvZGFzaC5wcm90b3R5cGUudG9KU09OPWxvZGFzaC5wcm90b3R5cGUudmFsdWVPZj1sb2Rhc2gucHJvdG90eXBlLnZhbHVlPXdyYXBwZXJWYWx1ZTtsb2Rhc2gucHJvdG90eXBlLmZpcnN0PWxvZGFzaC5wcm90b3R5cGUuaGVhZDtpZihzeW1JdGVyYXRvcilsb2Rhc2gucHJvdG90eXBlW3N5bUl0ZXJhdG9yXT13cmFwcGVyVG9JdGVyYXRvcjtyZXR1cm4gbG9kYXNofTsKdmFyIF89cnVuSW5Db250ZXh0KCk7aWYodHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kKXtyb290Ll89XztkZWZpbmUoZnVuY3Rpb24oKXtyZXR1cm4gX30pfWVsc2UgaWYoZnJlZU1vZHVsZSl7KGZyZWVNb2R1bGUuZXhwb3J0cz1fKS5fPV87ZnJlZUV4cG9ydHMuXz1ffWVsc2Ugcm9vdC5fPV99KS5jYWxsKHRoaXMpOwovLyMgc291cmNlVVJMPWJ1aWxkOi8vdnotc29ydGluZy9zb3J0aW5nLmpzCnZhciByYzsKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoayx0KXtsZXQgbDsoZnVuY3Rpb24obSl7bVttLk5BVFVSQUw9MF09Ik5BVFVSQUwiO21bbS5SRUFMPTFdPSJSRUFMIjttW20uRVhQT05FTlRfU0lHTj0yXT0iRVhQT05FTlRfU0lHTiI7bVttLkVYUE9ORU5UPTNdPSJFWFBPTkVOVCJ9KShsfHwobD17fSkpO2xldCBwPWwuTkFUVVJBTDtmb3IoO3Q8ay5sZW5ndGg7dCsrKWlmKHA9PT1sLk5BVFVSQUwpaWYoIi4iPT09a1t0XSlwPWwuUkVBTDtlbHNlIGlmKCJlIj09PWtbdF18fCJFIj09PWtbdF0pcD1sLkVYUE9ORU5UX1NJR047ZWxzZXtpZighZihrW3RdKSlicmVha31lbHNlIGlmKHA9PT1sLlJFQUwpaWYoImUiPT09a1t0XXx8IkUiPT09a1t0XSlwPWwuRVhQT05FTlRfU0lHTjtlbHNle2lmKCFmKGtbdF0pKWJyZWFrfWVsc2UgaWYocD09PWwuRVhQT05FTlRfU0lHTilpZihmKGtbdF0pfHwiKyI9PT1rW3RdfHwiLSI9PT1rW3RdKXA9bC5FWFBPTkVOVDtlbHNlIGJyZWFrO2Vsc2UgaWYocD09PWwuRVhQT05FTlQmJgohZihrW3RdKSlicmVhaztyZXR1cm4gdH1mdW5jdGlvbiBmKGspe3JldHVybiIwIjw9ayYmIjkiPj1rfWZ1bmN0aW9uIGgoayl7cmV0dXJuIi8iPT09a3x8Il8iPT09a3x8ZihrKX1iLmNvbXBhcmVUYWdOYW1lcz1mdW5jdGlvbihrLHQpe2xldCBsPTAscD0wO2Zvcig7Oyl7aWYobD09PWsubGVuZ3RoKXJldHVybiBwPT09dC5sZW5ndGg/MDotMTtpZihwPT09dC5sZW5ndGgpcmV0dXJuIDE7aWYoZihrW2xdKSYmZih0W3BdKSl7dmFyIG09bCxuPXA7bD1kKGssbCsxKTtwPWQodCxwKzEpO209cGFyc2VGbG9hdChrLnNsaWNlKG0sbCkpO249cGFyc2VGbG9hdCh0LnNsaWNlKG4scCkpO2lmKG08bilyZXR1cm4tMTtpZihtPm4pcmV0dXJuIDF9ZWxzZXtpZihoKGtbbF0pKXtpZighaCh0W3BdKSlyZXR1cm4tMX1lbHNle2lmKGgodFtwXSkpcmV0dXJuIDE7aWYoa1tsXTx0W3BdKXJldHVybi0xO2lmKGtbbF0+dFtwXSlyZXR1cm4gMX1sKys7cCsrfX19fSkocmN8fChyYz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJhY2tlbmQvcmVxdWVzdE1hbmFnZXIuanMKdmFyIHZjOwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChxLHUseCxBKXtjb25zdCB5PW5ldyBYTUxIdHRwUmVxdWVzdDt5Lm9wZW4ocSx1KTt4JiYoeS53aXRoQ3JlZGVudGlhbHM9eCk7QSYmeS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLEEpO3JldHVybiB5fWZ1bmN0aW9uIGYocSl7Y29uc3QgdT1uZXcgbTtpZighcSlyZXR1cm4gdS5tZXRob2RUeXBlPXAuR0VULHU7dS5tZXRob2RUeXBlPXAuUE9TVDt1LmJvZHk9aChxKTtyZXR1cm4gdX1mdW5jdGlvbiBoKHEpe2NvbnN0IHU9bmV3IEZvcm1EYXRhO2ZvcihsZXQgeCBpbiBxKXgmJnUuYXBwZW5kKHgscVt4XSk7cmV0dXJuIHV9Y2xhc3MgayBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLm5hbWU9IlJlcXVlc3RDYW5jZWxsYXRpb25FcnJvciJ9fWIuUmVxdWVzdENhbmNlbGxhdGlvbkVycm9yPWs7Y2xhc3MgdCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHEpe3N1cGVyKHEpO3RoaXMubmFtZT0KIkludmFsaWRSZXF1ZXN0T3B0aW9uc0Vycm9yIjtPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyx0LnByb3RvdHlwZSl9fWIuSW52YWxpZFJlcXVlc3RPcHRpb25zRXJyb3I9dDtjbGFzcyBsIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IocSx1KXtzdXBlcigpO3RoaXMubWVzc2FnZT1gUmVxdWVzdE5ldHdvcmtFcnJvcjogJHtxLnN0YXR1c30gYXQgJHt1fWA7dGhpcy5uYW1lPSJSZXF1ZXN0TmV0d29ya0Vycm9yIjt0aGlzLnJlcT1xO3RoaXMudXJsPXV9fWIuUmVxdWVzdE5ldHdvcmtFcnJvcj1sO2xldCBwOyhmdW5jdGlvbihxKXtxLkdFVD0iR0VUIjtxLlBPU1Q9IlBPU1QifSkocD1iLkh0dHBNZXRob2RUeXBlfHwoYi5IdHRwTWV0aG9kVHlwZT17fSkpO2NsYXNzIG17dmFsaWRhdGUoKXtpZih0aGlzLm1ldGhvZFR5cGU9PT1wLkdFVCYmdGhpcy5ib2R5KXRocm93IG5ldyB0KCJib2R5IG11c3QgYmUgbWlzc2luZyBmb3IgYSBHRVQgcmVxdWVzdC4iKTt9fWIuUmVxdWVzdE9wdGlvbnM9Cm07Y2xhc3Mgbntjb25zdHJ1Y3RvcihxPTFFMyx1PTMpe3RoaXMuX3F1ZXVlPVtdO3RoaXMuX25BY3RpdmVSZXF1ZXN0cz0wO3RoaXMuX25TaW11bHRhbmVvdXNSZXF1ZXN0cz1xO3RoaXMuX21heFJldHJpZXM9dX1yZXF1ZXN0KHEsdSl7dT1mKHUpO3JldHVybiB0aGlzLnJlcXVlc3RXaXRoT3B0aW9ucyhxLHUpfXJlcXVlc3RXaXRoT3B0aW9ucyhxLHUpe3UudmFsaWRhdGUoKTtyZXR1cm4obmV3IFByb21pc2UoKHgsQSk9Pnt0aGlzLl9xdWV1ZS5wdXNoKHtyZXNvbHZlOngscmVqZWN0OkF9KTt0aGlzLmxhdW5jaFJlcXVlc3RzKCl9KSkudGhlbigoKT0+dGhpcy5wcm9taXNlV2l0aFJldHJpZXMocSx0aGlzLl9tYXhSZXRyaWVzLHUpKS50aGVuKHg9Pnt0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLTt0aGlzLmxhdW5jaFJlcXVlc3RzKCk7cmV0dXJuIHh9LHg9PnsiUmVxdWVzdE5ldHdvcmtFcnJvciI9PT14Lm5hbWUmJih0aGlzLl9uQWN0aXZlUmVxdWVzdHMtLSx0aGlzLmxhdW5jaFJlcXVlc3RzKCkpOwpyZXR1cm4gUHJvbWlzZS5yZWplY3QoeCl9KX1mZXRjaChxLHUpe3JldHVybihuZXcgUHJvbWlzZSgoeCxBKT0+e3RoaXMuX3F1ZXVlLnB1c2goe3Jlc29sdmU6eCxyZWplY3Q6QX0pO3RoaXMubGF1bmNoUmVxdWVzdHMoKX0pKS50aGVuKCgpPT57bGV0IHg9MTtyZXR1cm4gbmV3IFByb21pc2UoQT0+e2NvbnN0IHk9KCk9PntmZXRjaChxLHUpLnRoZW4odz0+eyF3Lm9rJiZ0aGlzLl9tYXhSZXRyaWVzPng/KHgrKyx5KCkpOihBKHcpLHRoaXMuX25BY3RpdmVSZXF1ZXN0cy0tLHRoaXMubGF1bmNoUmVxdWVzdHMoKSl9KX07eSgpfSl9KX1jbGVhclF1ZXVlKCl7Zm9yKDswPHRoaXMuX3F1ZXVlLmxlbmd0aDspdGhpcy5fcXVldWUucG9wKCkucmVqZWN0KG5ldyBrKCJSZXF1ZXN0IGNhbmNlbGxlZCBieSBjbGVhclF1ZXVlIikpfWFjdGl2ZVJlcXVlc3RzKCl7cmV0dXJuIHRoaXMuX25BY3RpdmVSZXF1ZXN0c31vdXRzdGFuZGluZ1JlcXVlc3RzKCl7cmV0dXJuIHRoaXMuX25BY3RpdmVSZXF1ZXN0cysKdGhpcy5fcXVldWUubGVuZ3RofWxhdW5jaFJlcXVlc3RzKCl7Zm9yKDt0aGlzLl9uQWN0aXZlUmVxdWVzdHM8dGhpcy5fblNpbXVsdGFuZW91c1JlcXVlc3RzJiYwPHRoaXMuX3F1ZXVlLmxlbmd0aDspdGhpcy5fbkFjdGl2ZVJlcXVlc3RzKyssdGhpcy5fcXVldWUucG9wKCkucmVzb2x2ZSgpfXByb21pc2VXaXRoUmV0cmllcyhxLHUseCl7cmV0dXJuIHRoaXMuX3Byb21pc2VGcm9tVXJsKHEseCkudGhlbihBPT5BLEE9PjA8dT90aGlzLnByb21pc2VXaXRoUmV0cmllcyhxLHUtMSx4KTpQcm9taXNlLnJlamVjdChBKSl9X3Byb21pc2VGcm9tVXJsKHEsdSl7cmV0dXJuIG5ldyBQcm9taXNlKCh4LEEpPT57Y29uc3QgeT1kKHUubWV0aG9kVHlwZSxxLHUud2l0aENyZWRlbnRpYWxzLHUuY29udGVudFR5cGUpO3kub25sb2FkPWZ1bmN0aW9uKCl7MjAwPT09eS5zdGF0dXM/eChKU09OLnBhcnNlKHkucmVzcG9uc2VUZXh0KSk6QShuZXcgbCh5LHEpKX07eS5vbmVycm9yPWZ1bmN0aW9uKCl7QShuZXcgbCh5LApxKSl9O3UuYm9keT95LnNlbmQodS5ib2R5KTp5LnNlbmQoKX0pfX1iLlJlcXVlc3RNYW5hZ2VyPW59KSh2Y3x8KHZjPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtYmFja2VuZC91cmxQYXRoSGVscGVycy5qcwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChmKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGYpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpfWIuYWRkUGFyYW1zPWZ1bmN0aW9uKGYsaCl7dmFyIGs9T2JqZWN0LmtleXMoaCkuc29ydCgpLmZpbHRlcihsPT52b2lkIDAhPT1oW2xdKTtpZighay5sZW5ndGgpcmV0dXJuIGY7Y29uc3QgdD0tMSE9PWYuaW5kZXhPZigiPyIpPyJceDI2IjoiPyI7az1bXS5jb25jYXQoLi4uay5tYXAobD0+e2NvbnN0IHA9aFtsXTtyZXR1cm4oQXJyYXkuaXNBcnJheShwKT9wOltwXSkubWFwKG09PmAke2x9PSR7ZChtKX1gKX0pKS5qb2luKCJceDI2Iik7cmV0dXJuIGYrdCtrfX0pKHZjfHwodmM9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1iYWNrZW5kL3JvdXRlci5qcwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCh0PSJkYXRhIixsPW5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkpeyIvIj09PXRbdC5sZW5ndGgtMV0mJih0PXQuc2xpY2UoMCx0Lmxlbmd0aC0xKSk7cmV0dXJue2Vudmlyb25tZW50OigpPT5mKHQsIi9lbnZpcm9ubWVudCIpLGV4cGVyaW1lbnRzOigpPT5mKHQsIi9leHBlcmltZW50cyIpLHBsdWdpblJvdXRlOihwLG0sbik9PmYodCsiL3BsdWdpbiIsYC8ke3B9JHttfWAsbikscGx1Z2luc0xpc3Rpbmc6KCk9PmYodCwiL3BsdWdpbnNfbGlzdGluZyIsaCh7WyJleHBlcmltZW50YWxQbHVnaW4iXTpsLmdldEFsbCgiZXhwZXJpbWVudGFsUGx1Z2luIil9KSkscnVuczooKT0+Zih0LCIvcnVucyIpLHJ1bnNGb3JFeHBlcmltZW50OnA9PmYodCwiL2V4cGVyaW1lbnRfcnVucyIsaCh7ZXhwZXJpbWVudDpTdHJpbmcocCl9KSl9fWZ1bmN0aW9uIGYodCxsLHA9bmV3IFVSTFNlYXJjaFBhcmFtcyl7dCs9bDtTdHJpbmcocCkmJgoobD1sLmluY2x1ZGVzKCI/Iik/Ilx4MjYiOiI/Iix0Kz1sK1N0cmluZyhwKSk7cmV0dXJuIHR9ZnVuY3Rpb24gaCh0PXt9KXtjb25zdCBsPU9iamVjdC5rZXlzKHQpLnNvcnQoKS5maWx0ZXIobT0+dFttXSkscD1uZXcgVVJMU2VhcmNoUGFyYW1zO2wuZm9yRWFjaChtPT57Y29uc3Qgbj10W21dOyhBcnJheS5pc0FycmF5KG4pP246W25dKS5mb3JFYWNoKHE9PnAuYXBwZW5kKG0scSkpfSk7cmV0dXJuIHB9bGV0IGs9ZCgpO2IuY3JlYXRlUm91dGVyPWQ7Yi5nZXRSb3V0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4ga307Yi5zZXRSb3V0ZXI9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBFcnJvcigiUm91dGVyIHJlcXVpcmVkLCBidXQgZ290OiAiK3QpO2s9dH07Yi5jcmVhdGVTZWFyY2hQYXJhbT1ofSkodmN8fCh2Yz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJhY2tlbmQvYmFzZVN0b3JlLmpzCihmdW5jdGlvbihiKXtjbGFzcyBke2NvbnN0cnVjdG9yKGgpe3RoaXMubGlzdGVuZXI9aH19Yi5MaXN0ZW5LZXk9ZDtjbGFzcyBme2NvbnN0cnVjdG9yKCl7dGhpcy5yZXF1ZXN0TWFuYWdlcj1uZXcgYi5SZXF1ZXN0TWFuYWdlcigxKTt0aGlzLl9saXN0ZW5lcnM9bmV3IFNldDt0aGlzLmluaXRpYWxpemVkPSExfXJlZnJlc2goKXtyZXR1cm4gdGhpcy5sb2FkKCkudGhlbigoKT0+e3RoaXMuaW5pdGlhbGl6ZWQ9ITB9KX1hZGRMaXN0ZW5lcihoKXtoPW5ldyBkKGgpO3RoaXMuX2xpc3RlbmVycy5hZGQoaCk7cmV0dXJuIGh9cmVtb3ZlTGlzdGVuZXJCeUtleShoKXt0aGlzLl9saXN0ZW5lcnMuZGVsZXRlKGgpfWVtaXRDaGFuZ2UoKXt0aGlzLl9saXN0ZW5lcnMuZm9yRWFjaChoPT57dHJ5e2gubGlzdGVuZXIoKX1jYXRjaChrKXt9fSl9fWIuQmFzZVN0b3JlPWZ9KSh2Y3x8KHZjPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtYmFja2VuZC9lbnZpcm9ubWVudFN0b3JlLmpzCihmdW5jdGlvbihiKXtjbGFzcyBkIGV4dGVuZHMgYi5CYXNlU3RvcmV7bG9hZCgpe2NvbnN0IGY9Yi5nZXRSb3V0ZXIoKS5lbnZpcm9ubWVudCgpO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoZikudGhlbihoPT57Y29uc3Qgaz17ZGF0YUxvY2F0aW9uOmguZGF0YV9sb2NhdGlvbix3aW5kb3dUaXRsZTpoLndpbmRvd190aXRsZX07dm9pZCAwIT09aC5leHBlcmltZW50X25hbWUmJihrLmV4cGVyaW1lbnROYW1lPWguZXhwZXJpbWVudF9uYW1lKTt2b2lkIDAhPT1oLmV4cGVyaW1lbnRfZGVzY3JpcHRpb24mJihrLmV4cGVyaW1lbnREZXNjcmlwdGlvbj1oLmV4cGVyaW1lbnRfZGVzY3JpcHRpb24pO3ZvaWQgMCE9PWguY3JlYXRpb25fdGltZSYmKGsuY3JlYXRpb25UaW1lPWguY3JlYXRpb25fdGltZSk7Xy5pc0VxdWFsKHRoaXMuZW52aXJvbm1lbnQsayl8fCh0aGlzLmVudmlyb25tZW50PWssdGhpcy5lbWl0Q2hhbmdlKCkpfSl9Z2V0RGF0YUxvY2F0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/CnRoaXMuZW52aXJvbm1lbnQuZGF0YUxvY2F0aW9uOiIifWdldFdpbmRvd1RpdGxlKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC53aW5kb3dUaXRsZToiIn1nZXRFeHBlcmltZW50TmFtZSgpe3JldHVybiB0aGlzLmVudmlyb25tZW50P3RoaXMuZW52aXJvbm1lbnQuZXhwZXJpbWVudE5hbWU6IiJ9Z2V0RXhwZXJpbWVudERlc2NyaXB0aW9uKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5leHBlcmltZW50RGVzY3JpcHRpb246IiJ9Z2V0Q3JlYXRpb25UaW1lKCl7cmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ/dGhpcy5lbnZpcm9ubWVudC5jcmVhdGlvblRpbWU6bnVsbH19Yi5FbnZpcm9ubWVudFN0b3JlPWQ7Yi5lbnZpcm9ubWVudFN0b3JlPW5ldyBkfSkodmN8fCh2Yz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJhY2tlbmQvZXhwZXJpbWVudHNTdG9yZS5qcwooZnVuY3Rpb24oYil7Y2xhc3MgZCBleHRlbmRzIGIuQmFzZVN0b3Jle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLl9leHBlcmltZW50cz1bXX1sb2FkKCl7Y29uc3QgZj1iLmdldFJvdXRlcigpLmV4cGVyaW1lbnRzKCk7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChmKS50aGVuKGg9PntfLmlzRXF1YWwodGhpcy5fZXhwZXJpbWVudHMsaCl8fCh0aGlzLl9leHBlcmltZW50cz1oLHRoaXMuZW1pdENoYW5nZSgpKX0pfWdldEV4cGVyaW1lbnRzKCl7cmV0dXJuIHRoaXMuX2V4cGVyaW1lbnRzLnNsaWNlKCl9fWIuRXhwZXJpbWVudHNTdG9yZT1kO2IuZXhwZXJpbWVudHNTdG9yZT1uZXcgZH0pKHZjfHwodmM9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1iYWNrZW5kL3J1bnNTdG9yZS5qcwooZnVuY3Rpb24oYil7Y2xhc3MgZCBleHRlbmRzIGIuQmFzZVN0b3Jle2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt0aGlzLl9ydW5zPVtdfWxvYWQoKXtjb25zdCBmPWIuZ2V0Um91dGVyKCkucnVucygpO3JldHVybiB0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoZikudGhlbihoPT57Xy5pc0VxdWFsKHRoaXMuX3J1bnMsaCl8fCh0aGlzLl9ydW5zPWgsdGhpcy5lbWl0Q2hhbmdlKCkpfSl9Z2V0UnVucygpe3JldHVybiB0aGlzLl9ydW5zLnNsaWNlKCl9fWIuUnVuc1N0b3JlPWQ7Yi5ydW5zU3RvcmU9bmV3IGR9KSh2Y3x8KHZjPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtYmFja2VuZC9iYWNrZW5kLmpzCihmdW5jdGlvbihiKXtiLlRZUEVTPVtdO2IuZ2V0UnVuc05hbWVkPWZ1bmN0aW9uKGQpe3JldHVybiBfLmtleXMoZCkuc29ydChyYy5jb21wYXJlVGFnTmFtZXMpfTtiLmdldFRhZ3M9ZnVuY3Rpb24oZCl7cmV0dXJuIF8udW5pb24uYXBwbHkobnVsbCxfLnZhbHVlcyhkKSkuc29ydChyYy5jb21wYXJlVGFnTmFtZXMpfTtiLmZpbHRlclRhZ3M9ZnVuY3Rpb24oZCxmKXtsZXQgaD1bXTtmLmZvckVhY2goaz0+aD1oLmNvbmNhdChkW2tdKSk7cmV0dXJuIF8udW5pcShoKS5zb3J0KHJjLmNvbXBhcmVUYWdOYW1lcyl9fSkodmN8fCh2Yz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJhY2tlbmQvY2FuY2VsbGVyLmpzCihmdW5jdGlvbihiKXtjbGFzcyBke2NvbnN0cnVjdG9yKCl7dGhpcy5jYW5jZWxsYXRpb25Db3VudD0wfWNhbmNlbGxhYmxlKGYpe2NvbnN0IGg9dGhpcy5jYW5jZWxsYXRpb25Db3VudDtyZXR1cm4gaz0+Zih7dmFsdWU6ayxjYW5jZWxsZWQ6dGhpcy5jYW5jZWxsYXRpb25Db3VudCE9PWh9KX1jYW5jZWxBbGwoKXt0aGlzLmNhbmNlbGxhdGlvbkNvdW50Kyt9fWIuQ2FuY2VsbGVyPWR9KSh2Y3x8KHZjPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtYmFja2VuZC90Zi1iYWNrZW5kLXBvbHltZXIuanMKKGZ1bmN0aW9uKGIpe1BvbHltZXIoe2lzOiJ0Zi1iYWNrZW5kIixfdGVtcGxhdGU6bnVsbCx0Zl9iYWNrZW5kOmJ9KX0pKHZjfHwodmM9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1jYXRlZ29yaXphdGlvbi11dGlscy9jYXRlZ29yaXphdGlvblV0aWxzLmpzCnZhciAkYzsKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQobSxuKXtjb25zdCBxPSgoKT0+e3RyeXtyZXR1cm4gbmV3IFJlZ0V4cChuKX1jYXRjaCh1KXtyZXR1cm4gbnVsbH19KSgpO3JldHVybntuYW1lOm4sbWV0YWRhdGE6e3R5cGU6cC5TRUFSQ0hfUkVTVUxUUyx2YWxpZFJlZ2V4OiEhcSx1bml2ZXJzYWxSZWdleDoiLioiPT09bn0saXRlbXM6cT9tLmZpbHRlcih1PT51Lm1hdGNoKHEpKTpbXX19ZnVuY3Rpb24gZihtLG49Ii8iKXtjb25zdCBxPVtdLHU9e307bS5mb3JFYWNoKHg9Pnt2YXIgQT14LmluZGV4T2Yobik7QT0wPD1BP3guc2xpY2UoMCxBKTp4O2lmKCF1W0FdKXtjb25zdCB5PXtuYW1lOkEsbWV0YWRhdGE6e3R5cGU6cC5QUkVGSVhfR1JPVVB9LGl0ZW1zOltdfTt1W0FdPXk7cS5wdXNoKHkpfXVbQV0uaXRlbXMucHVzaCh4KX0pO3JldHVybiBxfWZ1bmN0aW9uIGgobSxuPSIiKXtuPVtkKG0sbildO209ZihtKTtyZXR1cm5bXS5jb25jYXQobixtKX1mdW5jdGlvbiBrKG0sbixxKXtjb25zdCB1PQp2Yy5nZXRUYWdzKG0pO3E9aCh1LHEpO2NvbnN0IHg9dChfLnBpY2sobSxuKSk7cmV0dXJuIHEubWFwKCh7bmFtZTpBLG1ldGFkYXRhOnksaXRlbXM6d30pPT4oe25hbWU6QSxtZXRhZGF0YTp5LGl0ZW1zOncubWFwKEM9Pih7dGFnOkMscnVuczooeC5nZXQoQyl8fFtdKS5zbGljZSgpfSkpfSkpfWZ1bmN0aW9uIHQobSl7Y29uc3Qgbj1uZXcgTWFwO09iamVjdC5rZXlzKG0pLmZvckVhY2gocT0+e21bcV0uZm9yRWFjaCh1PT57Y29uc3QgeD1uLmdldCh1KXx8W107eC5wdXNoKHEpO24uc2V0KHUseCl9KX0pO3JldHVybiBufWZ1bmN0aW9uIGwobSxuKXtjb25zdCBxPXJjLmNvbXBhcmVUYWdOYW1lcyhtLnRhZyxuLnRhZyk7cmV0dXJuIDAhPXE/cTpyYy5jb21wYXJlVGFnTmFtZXMobS5ydW4sbi5ydW4pfWxldCBwOyhmdW5jdGlvbihtKXttW20uU0VBUkNIX1JFU1VMVFM9MF09IlNFQVJDSF9SRVNVTFRTIjttW20uUFJFRklYX0dST1VQPTFdPSJQUkVGSVhfR1JPVVAifSkocD1iLkNhdGVnb3J5VHlwZXx8CihiLkNhdGVnb3J5VHlwZT17fSkpO2IuY2F0ZWdvcml6ZUJ5U2VhcmNoUXVlcnk9ZDtiLmNhdGVnb3JpemVCeVByZWZpeD1mO2IuY2F0ZWdvcml6ZT1oO2IuY2F0ZWdvcml6ZVRhZ3M9aztiLmNhdGVnb3JpemVSdW5UYWdDb21iaW5hdGlvbnM9ZnVuY3Rpb24obSxuLHEpe3JldHVybiBrKG0sbixxKS5tYXAoZnVuY3Rpb24odSl7Y29uc3QgeD1fLmZsYXR0ZW4odS5pdGVtcy5tYXAoKHt0YWc6QSxydW5zOnl9KT0+eS5tYXAodz0+KHt0YWc6QSxydW46d30pKSkpO3guc29ydChsKTtyZXR1cm57bmFtZTp1Lm5hbWUsbWV0YWRhdGE6dS5tZXRhZGF0YSxpdGVtczp4fX0pfX0pKCRjfHwoJGM9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1nbG9iYWxzL2dsb2JhbHMuanMKdmFyIGFkOyhmdW5jdGlvbihiKXtsZXQgZD0hMTtiLnNldFVzZUhhc2g9ZnVuY3Rpb24oaCl7ZD1ofTtiLnVzZUhhc2g9ZnVuY3Rpb24oKXtyZXR1cm4gZH07bGV0IGY9IiI7Yi5zZXRGYWtlSGFzaD1mdW5jdGlvbihoKXtmPWh9O2IuZ2V0RmFrZUhhc2g9ZnVuY3Rpb24oKXtyZXR1cm4gZn19KShhZHx8KGFkPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ2xvYmFscy9nbG9iYWxzLXBvbHltZXIuanMKKGZ1bmN0aW9uKGIpe1BvbHltZXIoe2lzOiJ0Zi1nbG9iYWxzIixfdGVtcGxhdGU6bnVsbCx0Zl9nbG9iYWxzOmJ9KX0pKGFkfHwoYWQ9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1zdG9yYWdlL2xpc3RlbmVycy5qcwp2YXIgcGQ7CihmdW5jdGlvbihiKXtjbGFzcyBke2NvbnN0cnVjdG9yKGspe3RoaXMubGlzdGVuZXI9a319Yi5MaXN0ZW5LZXk9ZDtjb25zdCBmPW5ldyBTZXQsaD1uZXcgU2V0O3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJoYXNoY2hhbmdlIiwoKT0+e2YuZm9yRWFjaChrPT5rLmxpc3RlbmVyKCkpfSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInN0b3JhZ2UiLCgpPT57aC5mb3JFYWNoKGs9PmsubGlzdGVuZXIoKSl9KTtiLmFkZEhhc2hMaXN0ZW5lcj1mdW5jdGlvbihrKXtrPW5ldyBkKGspO2YuYWRkKGspO3JldHVybiBrfTtiLmFkZFN0b3JhZ2VMaXN0ZW5lcj1mdW5jdGlvbihrKXtrPW5ldyBkKGspO2guYWRkKGspO3JldHVybiBrfTtiLmZpcmVTdG9yYWdlQ2hhbmdlZD1mdW5jdGlvbigpe2guZm9yRWFjaChrPT5rLmxpc3RlbmVyKCkpfTtiLnJlbW92ZUhhc2hMaXN0ZW5lckJ5S2V5PWZ1bmN0aW9uKGspe2YuZGVsZXRlKGspfTtiLnJlbW92ZVN0b3JhZ2VMaXN0ZW5lckJ5S2V5PWZ1bmN0aW9uKGspe2guZGVsZXRlKGspfX0pKHBkfHwKKHBkPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtc3RvcmFnZS9zdG9yYWdlLmpzCihmdW5jdGlvbihiKXtmdW5jdGlvbiBkKG4scSl7ZnVuY3Rpb24gdSh3LEM9e30pe2NvbnN0IHtkZWZhdWx0VmFsdWU6Rix1c2VMb2NhbFN0b3JhZ2U6RD0hMX09Qzt3PUQ/d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHcpOmwoaCgpKVt3XTtyZXR1cm4gdm9pZCAwPT13P18uY2xvbmVEZWVwKEYpOm4odyl9ZnVuY3Rpb24geCh3LEMsRj17fSl7Y29uc3Qge2RlZmF1bHRWYWx1ZTpELHVzZUxvY2FsU3RvcmFnZTpCPSExLHVzZUxvY2F0aW9uUmVwbGFjZTpJPSExfT1GO0Y9cShDKTtCPyh3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0odyxGKSxiLmZpcmVTdG9yYWdlQ2hhbmdlZCgpKTpfLmlzRXF1YWwoQyx1KHcse3VzZUxvY2FsU3RvcmFnZTpCfSkpfHwoXy5pc0VxdWFsKEMsRCk/cCh3KTooQz1sKGgoKSksQ1t3XT1GLGsodChDKSxJKSkpfWNvbnN0IEE9W10seT1bXTtyZXR1cm57Z2V0OnUsc2V0OngsZ2V0SW5pdGlhbGl6ZXI6ZnVuY3Rpb24odyxDKXtjb25zdCBGPU9iamVjdC5hc3NpZ24oe2RlZmF1bHRWYWx1ZTpDLmRlZmF1bHRWYWx1ZSwKcG9seW1lclByb3BlcnR5OncsdXNlTG9jYWxTdG9yYWdlOiExfSxDKTtyZXR1cm4gZnVuY3Rpb24oKXtjb25zdCBEPWYodGhpcyx3KSxCPSgpPT57Y29uc3QgTj11KEQsRik7Xy5pc0VxdWFsKE4sdGhpc1tGLnBvbHltZXJQcm9wZXJ0eV0pfHwodGhpc1tGLnBvbHltZXJQcm9wZXJ0eV09Til9LEk9KEYudXNlTG9jYWxTdG9yYWdlP2IuYWRkU3RvcmFnZUxpc3RlbmVyOmIuYWRkSGFzaExpc3RlbmVyKSgoKT0+QigpKTtGLnVzZUxvY2FsU3RvcmFnZT95LnB1c2goSSk6QS5wdXNoKEkpO0IoKTtyZXR1cm4gdGhpc1tGLnBvbHltZXJQcm9wZXJ0eV19fSxnZXRPYnNlcnZlcjpmdW5jdGlvbih3LEMpe2NvbnN0IEY9T2JqZWN0LmFzc2lnbih7ZGVmYXVsdFZhbHVlOkMuZGVmYXVsdFZhbHVlLHBvbHltZXJQcm9wZXJ0eTp3LHVzZUxvY2FsU3RvcmFnZTohMX0sQyk7cmV0dXJuIGZ1bmN0aW9uKCl7Y29uc3QgRD1mKHRoaXMsdyk7eChELHRoaXNbRi5wb2x5bWVyUHJvcGVydHldLEYpfX0sZGlzcG9zZUJpbmRpbmc6ZnVuY3Rpb24oKXtBLmZvckVhY2godz0+CmIucmVtb3ZlSGFzaExpc3RlbmVyQnlLZXkodykpO3kuZm9yRWFjaCh3PT5iLnJlbW92ZVN0b3JhZ2VMaXN0ZW5lckJ5S2V5KHcpKX19fWZ1bmN0aW9uIGYobixxKXtuPW5bYi5ESVNBTUJJR1VBVE9SXTtyZXR1cm4obnVsbD09bj9bcV06W24scV0pLmpvaW4oIi4iKX1mdW5jdGlvbiBoKCl7cmV0dXJuIGFkLnVzZUhhc2goKT93aW5kb3cubG9jYXRpb24uaGFzaC5zbGljZSgxKTphZC5nZXRGYWtlSGFzaCgpfWZ1bmN0aW9uIGsobixxPSExKXthZC51c2VIYXNoKCk/cT93aW5kb3cubG9jYXRpb24ucmVwbGFjZSgiIyIrbik6d2luZG93LmxvY2F0aW9uLmhhc2g9bjphZC5zZXRGYWtlSGFzaChuKX1mdW5jdGlvbiB0KG4pe2xldCBxPSIiO3ZvaWQgMCE9PW5bYi5UQUJdJiYocSs9bltiLlRBQl0pO2NvbnN0IHU9T2JqZWN0LmtleXMobikubWFwKHg9Plt4LG5beF1dKS5maWx0ZXIoeD0+eFswXSE9PWIuVEFCKS5tYXAoeD0+ZW5jb2RlVVJJQ29tcG9uZW50KHhbMF0pKyJceDNkIitlbmNvZGVVUklDb21wb25lbnQoeFsxXSkpLmpvaW4oIlx4MjYiKTsKcmV0dXJuIDA8dS5sZW5ndGg/cSsiXHgyNiIrdTpxfWZ1bmN0aW9uIGwobil7Y29uc3QgcT17fTtuLnNwbGl0KCJceDI2IikuZm9yRWFjaCh1PT57dT11LnNwbGl0KCJceDNkIik7MT09PXUubGVuZ3RoP3FbYi5UQUJdPXVbMF06Mj09PXUubGVuZ3RoJiYocVtkZWNvZGVVUklDb21wb25lbnQodVswXSldPWRlY29kZVVSSUNvbXBvbmVudCh1WzFdKSl9KTtyZXR1cm4gcX1mdW5jdGlvbiBwKG4pe2NvbnN0IHE9bChoKCkpO2RlbGV0ZSBxW25dO2sodChxKSl9Yi5UQUI9Il9fdGFiX18iO2IuRElTQU1CSUdVQVRPUj0iZGlzYW1iaWd1YXRvciI7Yi51cmxEaWN0PWwoaCgpKTtiLmFkZEhhc2hMaXN0ZW5lcigoKT0+e2IudXJsRGljdD1sKGgoKSl9KTt2YXIgbT1kKG49Pm4sbj0+bik7Yi5nZXRTdHJpbmc9bS5nZXQ7Yi5zZXRTdHJpbmc9bS5zZXQ7Yi5nZXRTdHJpbmdJbml0aWFsaXplcj1tLmdldEluaXRpYWxpemVyO2IuZ2V0U3RyaW5nT2JzZXJ2ZXI9bS5nZXRPYnNlcnZlcjtiLmRpc3Bvc2VTdHJpbmdCaW5kaW5nPQptLmRpc3Bvc2VCaW5kaW5nO209ZChuPT4idHJ1ZSI9PT1uPyEwOiJmYWxzZSI9PT1uPyExOnZvaWQgMCxuPT5uLnRvU3RyaW5nKCkpO2IuZ2V0Qm9vbGVhbj1tLmdldDtiLnNldEJvb2xlYW49bS5zZXQ7Yi5nZXRCb29sZWFuSW5pdGlhbGl6ZXI9bS5nZXRJbml0aWFsaXplcjtiLmdldEJvb2xlYW5PYnNlcnZlcj1tLmdldE9ic2VydmVyO2IuZGlzcG9zZUJvb2xlYW5CaW5kaW5nPW0uZGlzcG9zZUJpbmRpbmc7bT1kKG49PituLG49Pm4udG9TdHJpbmcoKSk7Yi5nZXROdW1iZXI9bS5nZXQ7Yi5zZXROdW1iZXI9bS5zZXQ7Yi5nZXROdW1iZXJJbml0aWFsaXplcj1tLmdldEluaXRpYWxpemVyO2IuZ2V0TnVtYmVyT2JzZXJ2ZXI9bS5nZXRPYnNlcnZlcjtiLmRpc3Bvc2VOdW1iZXJCaW5kaW5nPW0uZGlzcG9zZUJpbmRpbmc7bT1kKG49PkpTT04ucGFyc2UoYXRvYihuKSksbj0+YnRvYShKU09OLnN0cmluZ2lmeShuKSkpO2IuZ2V0T2JqZWN0PW0uZ2V0O2Iuc2V0T2JqZWN0PW0uc2V0O2IuZ2V0T2JqZWN0SW5pdGlhbGl6ZXI9Cm0uZ2V0SW5pdGlhbGl6ZXI7Yi5nZXRPYmplY3RPYnNlcnZlcj1tLmdldE9ic2VydmVyO2IuZGlzcG9zZU9iamVjdEJpbmRpbmc9bS5kaXNwb3NlQmluZGluZztiLm1ha2VCaW5kaW5ncz1kO2IubWlncmF0ZUxlZ2FjeVVSTFNjaGVtZT1mdW5jdGlvbigpe2NvbnN0IG49bmV3IFNldCgiZXhhbXBsZXNQYXRoIGhpZGVNb2RlbFBhbmUyIG1vZGVsTmFtZTEgbW9kZWxOYW1lMiBpbmZlcmVuY2VBZGRyZXNzMSBpbmZlcmVuY2VBZGRyZXNzMiBtb2RlbFR5cGUgbW9kZWxWZXJzaW9uMSBtb2RlbFZlcnNpb24yIG1vZGVsU2lnbmF0dXJlMSBtb2RlbFNpZ25hdHVyZTIgbWF4RXhhbXBsZXMgbGFiZWxWb2NhYlBhdGggbXVsdGlDbGFzcyBzZXF1ZW5jZUV4YW1wbGVzIG1heENsYXNzZXNUb0Rpc3BsYXkgc2FtcGxpbmdPZGRzIHVzZVByZWRpY3RBcGkgcHJlZGljdElucHV0VGVuc29yIHByZWRpY3RPdXRwdXRUZW5zb3IiLnNwbGl0KCIgIikpLHE9bChoKCkpO2lmKCJ3aGF0aWYiPT09cVtiLlRBQl0pZm9yKGxldCB1IG9mIG4pdSBpbgpxJiYocVtgcC53aGF0aWYuJHt1fWBdPXFbdV0pO2sodChxKSk7dGhpcy51cmxEaWN0PXF9fSkocGR8fChwZD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLXN0b3JhZ2UvdGYtc3RvcmFnZS1wb2x5bWVyLmpzCihmdW5jdGlvbihiKXtQb2x5bWVyKHtpczoidGYtc3RvcmFnZSIsX3RlbXBsYXRlOm51bGwsdGZfc3RvcmFnZTpifSl9KShwZHx8KHBkPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtY2F0ZWdvcml6YXRpb24tdXRpbHMvdGYtdGFnLWZpbHRlcmVyLmh0bWwuanMKUG9seW1lcih7aXM6InRmLXRhZy1maWx0ZXJlciIscHJvcGVydGllczp7dGFnRmlsdGVyOnt0eXBlOlN0cmluZyxub3RpZnk6ITAsY29tcHV0ZWQ6Il9jb21wdXRlVGFnRmlsdGVyKF90YWdGaWx0ZXIpIn0sX3RhZ0ZpbHRlcjp7dHlwZTpTdHJpbmcsdmFsdWU6cGQuZ2V0U3RyaW5nSW5pdGlhbGl6ZXIoInRhZ0ZpbHRlciIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITEscG9seW1lclByb3BlcnR5OiJfdGFnRmlsdGVyIn0pLG9ic2VydmVyOiJfdGFnRmlsdGVyT2JzZXJ2ZXIifX0sX3RhZ0ZpbHRlck9ic2VydmVyOnBkLmdldFN0cmluZ09ic2VydmVyKCJ0YWdGaWx0ZXIiLHtkZWZhdWx0VmFsdWU6IiIsdXNlTG9jYWxTdG9yYWdlOiExLHBvbHltZXJQcm9wZXJ0eToiX3RhZ0ZpbHRlciJ9KSxfY29tcHV0ZVRhZ0ZpbHRlcigpe3JldHVybiB0aGlzLl90YWdGaWx0ZXJ9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZGFzaGJvYXJkLWNvbW1vbi9hcnJheS11cGRhdGUtaGVscGVyLmpzCnZhciBxZDsoZnVuY3Rpb24oYil7Yi5BcnJheVVwZGF0ZUhlbHBlcj17dXBkYXRlQXJyYXlQcm9wKGQsZixoKXtsZXQgaz10aGlzLmdldChkKTtpZighQXJyYXkuaXNBcnJheShmKSl0aHJvdyBSYW5nZUVycm9yKGBFeHBlY3RlZCBuZXcgdmFsdWUgdG8gJyR7ZH0nIHRvIGJlIGFuIGFycmF5LmApO0FycmF5LmlzQXJyYXkoayl8fChrPVtdLHRoaXMuc2V0KGQsaykpO2NvbnN0IHQ9bmV3IFNldChmLm1hcCgobSxuKT0+aChtLG4pKSk7bGV0IGw9MCxwPTA7Zm9yKDtsPGsubGVuZ3RoJiZwPGYubGVuZ3RoOyl0LmhhcyhoKGtbbF0sbCkpPyhoKGtbbF0sbCk9PWgoZltwXSxwKT90aGlzLnNldChgJHtkfS4ke2x9YCxmW3BdKTp0aGlzLnNwbGljZShkLGwsMCxmW3BdKSxwKyssbCsrKTp0aGlzLnNwbGljZShkLGwsMSk7bDxrLmxlbmd0aCYmdGhpcy5zcGxpY2UoZCxsKTtwPGYubGVuZ3RoJiZ0aGlzLnB1c2goZCwuLi5mLnNsaWNlKHApKX19fSkocWR8fChxZD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRhc2hib2FyZC1jb21tb24vdGYtZGFzaGJvYXJkLWxheW91dC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1kYXNoYm9hcmQtbGF5b3V0In0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRhc2hib2FyZC1jb21tb24vdGYtb3B0aW9uLXNlbGVjdG9yLmh0bWwuanMKUG9seW1lcih7aXM6InRmLW9wdGlvbi1zZWxlY3RvciIscHJvcGVydGllczp7bmFtZTpTdHJpbmcsc2VsZWN0ZWRJZDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfc2VsZWN0ZWRJZENoYW5nZWQifX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goZnVuY3Rpb24oYil7dGhpcy5saXN0ZW4oYiwidGFwIiwiX3NlbGVjdFRhcmdldCIpfS5iaW5kKHRoaXMpKX0pfSxfc2VsZWN0VGFyZ2V0OmZ1bmN0aW9uKGIpe3RoaXMuc2VsZWN0ZWRJZD1iLmN1cnJlbnRUYXJnZXQuaWR9LF9zZWxlY3RlZElkQ2hhbmdlZDpmdW5jdGlvbigpe3ZhciBiPXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiIyIrdGhpcy5zZWxlY3RlZElkKTtiJiYodGhpcy5nZXRFZmZlY3RpdmVDaGlsZHJlbigpLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpfSksYi5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWNvbGxhcHNlL2lyb24tY29sbGFwc2UuaHRtbC5qcwpQb2x5bWVyKHtpczoiaXJvbi1jb2xsYXBzZSIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25SZXNpemFibGVCZWhhdmlvcl0scHJvcGVydGllczp7aG9yaXpvbnRhbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfaG9yaXpvbnRhbENoYW5nZWQifSxvcGVuZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9vcGVuZWRDaGFuZ2VkIn0sdHJhbnNpdGlvbmluZzp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCxyZWFkT25seTohMH0sbm9BbmltYXRpb246e3R5cGU6Qm9vbGVhbn0sX2Rlc2lyZWRTaXplOnt0eXBlOlN0cmluZyx2YWx1ZToiIn19LGdldCBkaW1lbnNpb24oKXtyZXR1cm4gdGhpcy5ob3Jpem9udGFsPyJ3aWR0aCI6ImhlaWdodCJ9LGdldCBfZGltZW5zaW9uTWF4KCl7cmV0dXJuIHRoaXMuaG9yaXpvbnRhbD8ibWF4V2lkdGgiOiJtYXhIZWlnaHQifSxnZXQgX2RpbWVuc2lvbk1heENzcygpe3JldHVybiB0aGlzLmhvcml6b250YWw/Im1heC13aWR0aCI6CiJtYXgtaGVpZ2h0In0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6Imdyb3VwIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0sbGlzdGVuZXJzOnt0cmFuc2l0aW9uZW5kOiJfb25UcmFuc2l0aW9uRW5kIn0sdG9nZ2xlOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9IXRoaXMub3BlbmVkfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ9ITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZD0hMX0sdXBkYXRlU2l6ZTpmdW5jdGlvbihiLGQpe2I9ImF1dG8iPT09Yj8iIjpiO2Q9ZCYmIXRoaXMubm9BbmltYXRpb24mJnRoaXMuaXNBdHRhY2hlZCYmdGhpcy5fZGVzaXJlZFNpemUhPT1iO3RoaXMuX2Rlc2lyZWRTaXplPWI7dGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSk7ZCYmKGQ9dGhpcy5fY2FsY1NpemUoKSwiIj09PWImJih0aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09IiIsYj10aGlzLl9jYWxjU2l6ZSgpKSx0aGlzLnN0eWxlW3RoaXMuX2RpbWVuc2lvbk1heF09ZCx0aGlzLnNjcm9sbFRvcD0KdGhpcy5zY3JvbGxUb3AsdGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMCksZD1iIT09ZCk7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPWI7ZHx8dGhpcy5fdHJhbnNpdGlvbkVuZCgpfSxlbmFibGVUcmFuc2l0aW9uOmZ1bmN0aW9uKGIpe1BvbHltZXIuQmFzZS5fd2FybigiYGVuYWJsZVRyYW5zaXRpb24oKWAgaXMgZGVwcmVjYXRlZCwgdXNlIGBub0FuaW1hdGlvbmAgaW5zdGVhZC4iKTt0aGlzLm5vQW5pbWF0aW9uPSFifSxfdXBkYXRlVHJhbnNpdGlvbjpmdW5jdGlvbihiKXt0aGlzLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbj1iJiYhdGhpcy5ub0FuaW1hdGlvbj8iIjoiMHMifSxfaG9yaXpvbnRhbENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnRyYW5zaXRpb25Qcm9wZXJ0eT10aGlzLl9kaW1lbnNpb25NYXhDc3M7dGhpcy5zdHlsZVsibWF4V2lkdGgiPT09dGhpcy5fZGltZW5zaW9uTWF4PyJtYXhIZWlnaHQiOiJtYXhXaWR0aCJdPSIiO3RoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8KImF1dG8iOiIwcHgiLCExKX0sX29wZW5lZENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCF0aGlzLm9wZW5lZCk7dGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMCk7dGhpcy50b2dnbGVDbGFzcygiaXJvbi1jb2xsYXBzZS1jbG9zZWQiLCExKTt0aGlzLnRvZ2dsZUNsYXNzKCJpcm9uLWNvbGxhcHNlLW9wZW5lZCIsITEpO3RoaXMudXBkYXRlU2l6ZSh0aGlzLm9wZW5lZD8iYXV0byI6IjBweCIsITApO3RoaXMub3BlbmVkJiZ0aGlzLmZvY3VzKCl9LF90cmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZVt0aGlzLl9kaW1lbnNpb25NYXhdPXRoaXMuX2Rlc2lyZWRTaXplO3RoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2UtY2xvc2VkIiwhdGhpcy5vcGVuZWQpO3RoaXMudG9nZ2xlQ2xhc3MoImlyb24tY29sbGFwc2Utb3BlbmVkIix0aGlzLm9wZW5lZCk7dGhpcy5fdXBkYXRlVHJhbnNpdGlvbighMSk7dGhpcy5ub3RpZnlSZXNpemUoKTsKdGhpcy5fc2V0VHJhbnNpdGlvbmluZyghMSl9LF9vblRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oYil7UG9seW1lci5kb20oYikucm9vdFRhcmdldD09PXRoaXMmJnRoaXMuX3RyYW5zaXRpb25FbmQoKX0sX2NhbGNTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbdGhpcy5kaW1lbnNpb25dKyJweCJ9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtcGFnaW5hdGVkLXZpZXcvdGYtZG9tLXJlcGVhdC5odG1sLmpzCnZhciBKZDsKKGZ1bmN0aW9uKGIpe2IuVGZEb21SZXBlYXRCZWhhdmlvcj1bcWQuQXJyYXlVcGRhdGVIZWxwZXIse3Byb3BlcnRpZXM6e2FzOnt0eXBlOlN0cmluZyx2YWx1ZToiaXRlbSJ9LF9jb250ZW50QWN0aXZlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LF9kb21Cb290c3RyYXBwZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2N0b3I6e3R5cGU6RnVuY3Rpb24sdmFsdWU6KCk9Pm51bGx9LF9yZW5kZXJlZEl0ZW1zOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX3JlbmRlcmVkVGVtcGxhdGVJbnN0Ont0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IE1hcH0sX2xydUNhY2hlZEl0ZW1zOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IE1hcH0sX2NhY2hlU2l6ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MTB9LF9nZXRJdGVtS2V5Ont0eXBlOkZ1bmN0aW9uLHZhbHVlOigpPT5kPT5KU09OLnN0cmluZ2lmeShkKX19LG9ic2VydmVyczpbIl9ib290c3RyYXBEb20oX2l0ZW1zUmVuZGVyZWQsIGlzQXR0YWNoZWQpIiwiX3VwZGF0ZURvbShfcmVuZGVyZWRJdGVtcy4qLCBfZG9tQm9vdHN0cmFwcGVkKSIsCiJfdXBkYXRlQWN0aXZlKF9jb250ZW50QWN0aXZlKSIsIl90cmltQ2FjaGUoX2NhY2hlU2l6ZSkiXSxzZXRDYWNoZVNpemUoZCl7dGhpcy5fY2FjaGVTaXplPWR9LHNldEdldEl0ZW1LZXkoZCl7dGhpcy5fZ2V0SXRlbUtleT1kfSx1cGRhdGVEb20oZCl7dGhpcy51cGRhdGVBcnJheVByb3AoIl9yZW5kZXJlZEl0ZW1zIixkLHRoaXMuX2dldEl0ZW1LZXkpfSxfZW5zdXJlVGVtcGxhdGl6ZWQoKXtpZighdGhpcy5pc0F0dGFjaGVkKXJldHVybiExO3RoaXMuX2N0b3J8fCh0aGlzLl9jdG9yPVBvbHltZXIuVGVtcGxhdGl6ZS50ZW1wbGF0aXplKHRoaXMucXVlcnlTZWxlY3RvcigidGVtcGxhdGUiKSx0aGlzLHtwYXJlbnRNb2RlbDohMCxpbnN0YW5jZVByb3BzOntbdGhpcy5hc106ITAsYWN0aXZlOnRoaXMuX2NvbnRlbnRBY3RpdmV9LGZvcndhcmRIb3N0UHJvcDpmdW5jdGlvbihkLGYpe3RoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmZvckVhY2goaD0+e2guZm9yd2FyZEhvc3RQcm9wKGQsCmYpfSl9fSkpO3JldHVybiEwfSxfYm9vdHN0cmFwRG9tKCl7dGhpcy5faXRlbXNSZW5kZXJlZCYmdGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKSYmIXRoaXMuX2RvbUJvb3RzdHJhcHBlZCYmKEFycmF5LmZyb20odGhpcy5jaGlsZHJlbikuZm9yRWFjaChkPT57UG9seW1lci5kb20odGhpcykucmVtb3ZlQ2hpbGQoZCl9KSx0aGlzLl9scnVDYWNoZWRJdGVtcy5jbGVhcigpLHRoaXMuX3JlbmRlcmVkSXRlbXMuZm9yRWFjaCgoZCxmKT0+dGhpcy5faW5zZXJ0SXRlbShkLGYpKSx0aGlzLl9kb21Cb290c3RyYXBwZWQ9ITApfSxfdXBkYXRlQWN0aXZlKCl7dGhpcy5fZG9tQm9vdHN0cmFwcGVkJiZBcnJheS5mcm9tKHRoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnZhbHVlcygpKS5mb3JFYWNoKGQ9PntkLm5vdGlmeVBhdGgoImFjdGl2ZSIsdGhpcy5fY29udGVudEFjdGl2ZSl9KX0sX3VwZGF0ZURvbShkKXtpZih0aGlzLl9kb21Cb290c3RyYXBwZWQmJiJfcmVuZGVyZWRJdGVtcyIhPWQucGF0aCYmCiJfcmVuZGVyZWRJdGVtcy5sZW5ndGgiIT1kLnBhdGgpaWYoIl9yZW5kZXJlZEl0ZW1zLnNwbGljZXMiPT09ZC5wYXRoKWQudmFsdWUuaW5kZXhTcGxpY2VzLmZvckVhY2goZj0+e2NvbnN0IGg9Zi5pbmRleCxrPWYuYWRkZWRDb3VudCx0PWYub2JqZWN0O2YucmVtb3ZlZC5mb3JFYWNoKGw9Pnt0aGlzLl9yZW1vdmVJdGVtKGwsdGhpcy5jaGlsZHJlbltoXSl9KTt0LnNsaWNlKGgsaCtrKS5mb3JFYWNoKChsLHApPT50aGlzLl9pbnNlcnRJdGVtKGwsaCtwKSk7dGhpcy5fdHJpbUNhY2hlKCl9KTtlbHNle2NvbnN0IGY9dGhpcy5fZ2V0SXRlbUtleShkLnZhbHVlKTt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5oYXMoZik/dGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KGYpLm5vdGlmeVBhdGgodGhpcy5hcyxkLnZhbHVlKTpjb25zb2xlLndhcm4oYEV4cGVjdGVkICcke2Z9JyB0byBleGlzdCBpbiB0aGUgRE9NIGJ1dCBgKyJjb3VsZCBub3QgZmluZCBvbmUuIil9fSxfaW5zZXJ0SXRlbShkLApmKXtpZighdGhpcy5fZW5zdXJlVGVtcGxhdGl6ZWQoKSl0aHJvdyBFcnJvcigiRXhwZWN0ZWQgdGVtcGxhdGl6ZWQgYmVmb3JlIGluc2VydGluZyBhbiBpdGVtIik7Y29uc3QgaD10aGlzLl9nZXRJdGVtS2V5KGQpO2lmKHRoaXMuX2xydUNhY2hlZEl0ZW1zLmhhcyhoKSlkPXRoaXMuX2xydUNhY2hlZEl0ZW1zLmdldChoKSx0aGlzLl9scnVDYWNoZWRJdGVtcy5kZWxldGUoaCksdGhpcy5fcmVuZGVyZWRUZW1wbGF0ZUluc3QuZ2V0KGgpLm5vdGlmeVBhdGgoImFjdGl2ZSIsdGhpcy5fY29udGVudEFjdGl2ZSk7ZWxzZXtjb25zdCBrPW5ldyB0aGlzLl9jdG9yKHtbdGhpcy5hc106ZCxhY3RpdmU6dGhpcy5fY29udGVudEFjdGl2ZX0pO2Q9ay5yb290O3RoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LnNldChoLGspfXRoaXMuY2hpbGRyZW5bZl0/UG9seW1lci5kb20odGhpcykuaW5zZXJ0QmVmb3JlKGQsdGhpcy5jaGlsZHJlbltmXSk6KChkLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/CkFycmF5LmZyb20oZC5jaGlsZHJlbik6W2RdKS5mb3JFYWNoKGs9Pmsuc2V0QXR0cmlidXRlKCJzbG90IiwiaXRlbXMiKSksUG9seW1lci5kb20odGhpcykuYXBwZW5kQ2hpbGQoZCkpfSxfcmVtb3ZlSXRlbShkLGYpe1BvbHltZXIuZG9tKGYucGFyZW50Tm9kZSkucmVtb3ZlQ2hpbGQoZik7ZD10aGlzLl9nZXRJdGVtS2V5KGQpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLnNldChkLGYpO3RoaXMuX3JlbmRlcmVkVGVtcGxhdGVJbnN0LmdldChkKS5ub3RpZnlQYXRoKCJhY3RpdmUiLCExKX0sX3RyaW1DYWNoZSgpe2Zvcig7dGhpcy5fbHJ1Q2FjaGVkSXRlbXMuc2l6ZT50aGlzLl9jYWNoZVNpemU7KXtjb25zdCBbZF09dGhpcy5fbHJ1Q2FjaGVkSXRlbXMua2V5cygpO3RoaXMuX2xydUNhY2hlZEl0ZW1zLmRlbGV0ZShkKTt0aGlzLl9yZW5kZXJlZFRlbXBsYXRlSW5zdC5kZWxldGUoZCl9fX1dfSkoSmR8fChKZD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLXBhZ2luYXRlZC12aWV3L3BhZ2luYXRlZFZpZXdTdG9yZS5qcwp2YXIgbmU7CihmdW5jdGlvbihiKXtsZXQgZD1udWxsO2NvbnN0IGY9bmV3IFNldDtiLmFkZExpbWl0TGlzdGVuZXI9ZnVuY3Rpb24oaCl7Zi5hZGQoaCl9O2IucmVtb3ZlTGltaXRMaXN0ZW5lcj1mdW5jdGlvbihoKXtmLmRlbGV0ZShoKX07Yi5nZXRMaW1pdD1mdW5jdGlvbigpe251bGw9PWQmJihkPXBkLmdldE51bWJlcigiVEYuVGVuc29yQm9hcmQuUGFnaW5hdGVkVmlldy5saW1pdCIse3VzZUxvY2FsU3RvcmFnZTohMH0pLG51bGw9PWR8fCFpc0Zpbml0ZShkKXx8MD49ZCkmJihkPTEyKTtyZXR1cm4gZH07Yi5zZXRMaW1pdD1mdW5jdGlvbihoKXtpZihoIT09TWF0aC5mbG9vcihoKSl0aHJvdyBFcnJvcihgbGltaXQgbXVzdCBiZSBhbiBpbnRlZ2VyLCBidXQgZ290OiAke2h9YCk7aWYoMD49aCl0aHJvdyBFcnJvcihgbGltaXQgbXVzdCBiZSBwb3NpdGl2ZSwgYnV0IGdvdDogJHtofWApO2ghPT1kJiYoZD1oLHBkLnNldE51bWJlcigiVEYuVGVuc29yQm9hcmQuUGFnaW5hdGVkVmlldy5saW1pdCIsZCwKe3VzZUxvY2FsU3RvcmFnZTohMH0pLGYuZm9yRWFjaChrPT57aygpfSkpfX0pKG5lfHwobmU9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1wYWdpbmF0ZWQtdmlldy90Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZS5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1wYWdpbmF0ZWQtdmlldy1zdG9yZSIsX3RlbXBsYXRlOm51bGwsdGZfcGFnaW5hdGVkX3ZpZXc6bmV9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1wYWdpbmF0ZWQtdmlldy90Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldyIscHJvcGVydGllczp7Y2F0ZWdvcnk6T2JqZWN0LGluaXRpYWxPcGVuZWQ6Qm9vbGVhbixvcGVuZWQ6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAscmVhZE9ubHk6ITB9LF9jb250ZW50QWN0aXZlOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlQ29udGVudEFjdGl2ZShvcGVuZWQpIn0sZGlzYWJsZVBhZ2luYXRpb246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2NvdW50Ont0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVDb3VudChjYXRlZ29yeS5pdGVtcy4qKSJ9LF9oYXNNdWx0aXBsZTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUhhc011bHRpcGxlKF9jb3VudCkifSxfcGFuZVJlbmRlcmVkOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlUGFuZVJlbmRlcmVkKGNhdGVnb3J5KSIsb2JzZXJ2ZXI6Il9vblBhbmVSZW5kZXJlZENoYW5nZWQifSxfaXRlbXNSZW5kZXJlZDp7dHlwZTpCb29sZWFuLApjb21wdXRlZDoiX2NvbXB1dGVJdGVtc1JlbmRlcmVkKG9wZW5lZCwgX3BhbmVSZW5kZXJlZCkifSxfaXNTZWFyY2hSZXN1bHRzOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNTZWFyY2hSZXN1bHRzKGNhdGVnb3J5Lm1ldGFkYXRhLnR5cGUpIn0sX2lzSW52YWxpZFNlYXJjaFJlc3VsdHM6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVJc0ludmFsaWRTZWFyY2hSZXN1bHRzKGNhdGVnb3J5Lm1ldGFkYXRhKSJ9LF9pc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5Ont0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSXNVbml2ZXJzYWxTZWFyY2hRdWVyeShjYXRlZ29yeS5tZXRhZGF0YSkifSxnZXRDYXRlZ29yeUl0ZW1LZXk6e3R5cGU6RnVuY3Rpb24sdmFsdWU6KCk9PmI9PkpTT04uc3RyaW5naWZ5KGIpLG9ic2VydmVyOiJfZ2V0Q2F0ZWdvcnlJdGVtS2V5Q2hhbmdlZCJ9LF9saW1pdDp7dHlwZTpOdW1iZXIsdmFsdWU6MTIsb2JzZXJ2ZXI6Il9saW1pdENoYW5nZWQifSwKX2FjdGl2ZUluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowfSxfY3VycmVudFBhZ2U6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZUN1cnJlbnRQYWdlKF9saW1pdCwgX2FjdGl2ZUluZGV4KSJ9LF9wYWdlQ291bnQ6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VDb3VudChjYXRlZ29yeS5pdGVtcy4qLCBfbGltaXQpIn0sX211bHRpcGxlUGFnZXNFeGlzdDp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZU11bHRpcGxlUGFnZXNFeGlzdChfcGFnZUNvdW50LCBkaXNhYmxlUGFnaW5hdGlvbikifSxfaGFzUHJldmlvdXNQYWdlOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSGFzUHJldmlvdXNQYWdlKF9jdXJyZW50UGFnZSkifSxfaGFzTmV4dFBhZ2U6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIYXNOZXh0UGFnZShfY3VycmVudFBhZ2UsIF9wYWdlQ291bnQpIn0sX2lucHV0V2lkdGg6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUlucHV0V2lkdGgoX3BhZ2VDb3VudCkiLApvYnNlcnZlcjoiX3VwZGF0ZUlucHV0V2lkdGgifSxfcGFnZUlucHV0VmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVBhZ2VJbnB1dFZhbHVlKF9wYWdlSW5wdXRGb2N1c2VkLCBfcGFnZUlucHV0UmF3VmFsdWUsIF9jdXJyZW50UGFnZSkiLG9ic2VydmVyOiJfdXBkYXRlUGFnZUlucHV0VmFsdWUifSxfcGFnZUlucHV0UmF3VmFsdWU6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxfcGFnZUlucHV0Rm9jdXNlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sb2JzZXJ2ZXJzOlsiX2NsYW1wQWN0aXZlSW5kZXgoY2F0ZWdvcnkuaXRlbXMuKikiLCJfdXBkYXRlUmVuZGVyZWRJdGVtcyhfaXRlbXNSZW5kZXJlZCwgY2F0ZWdvcnkuaXRlbXMuKiwgX2xpbWl0LCBfYWN0aXZlSW5kZXgsIF9wYWdlQ291bnQsIGRpc2FibGVQYWdpbmF0aW9uKSJdLGJlaGF2aW9yczpbSmQuVGZEb21SZXBlYXRCZWhhdmlvcl0sX2NvbXB1dGVDb3VudCgpe3JldHVybiB0aGlzLmNhdGVnb3J5Lml0ZW1zLmxlbmd0aH0sCl9jb21wdXRlSGFzTXVsdGlwbGUoKXtyZXR1cm4gMTx0aGlzLl9jb3VudH0sX3RvZ2dsZVBhbmUoKXt0aGlzLl9zZXRPcGVuZWQoIXRoaXMub3BlbmVkKX0sX2NvbXB1dGVDb250ZW50QWN0aXZlKCl7cmV0dXJuIHRoaXMub3BlbmVkfSxfb25QYW5lUmVuZGVyZWRDaGFuZ2VkKGIsZCl7YiYmYiE9PWQmJnRoaXMuJC5pZlJlbmRlcmVkLnJlbmRlcigpfSxfY29tcHV0ZVBhbmVSZW5kZXJlZChiKXtyZXR1cm4hKGIubWV0YWRhdGEudHlwZT09PSRjLkNhdGVnb3J5VHlwZS5TRUFSQ0hfUkVTVUxUUyYmIiI9PT1iLm5hbWUpfSxfY29tcHV0ZUl0ZW1zUmVuZGVyZWQoKXtyZXR1cm4gdGhpcy5fcGFuZVJlbmRlcmVkJiZ0aGlzLm9wZW5lZH0sX2NvbXB1dGVJc1NlYXJjaFJlc3VsdHMoYil7cmV0dXJuIGI9PT0kYy5DYXRlZ29yeVR5cGUuU0VBUkNIX1JFU1VMVFN9LF9jb21wdXRlSXNJbnZhbGlkU2VhcmNoUmVzdWx0cyhiKXtyZXR1cm4gYi50eXBlPT09JGMuQ2F0ZWdvcnlUeXBlLlNFQVJDSF9SRVNVTFRTJiYKIWIudmFsaWRSZWdleH0sX2NvbXB1dGVJc1VuaXZlcnNhbFNlYXJjaFF1ZXJ5KGIpe3JldHVybiBiLnR5cGU9PT0kYy5DYXRlZ29yeVR5cGUuU0VBUkNIX1JFU1VMVFMmJmIudW5pdmVyc2FsUmVnZXh9LF9pc0NvbXBvc2l0ZVNlYXJjaCgpe2NvbnN0IGI9dGhpcy5jYXRlZ29yeS5tZXRhZGF0YS50eXBlO3JldHVybiB0aGlzLmNhdGVnb3J5Lm1ldGFkYXRhLmNvbXBvc2l0ZVNlYXJjaCYmYj09PSRjLkNhdGVnb3J5VHlwZS5TRUFSQ0hfUkVTVUxUU30scmVhZHkoKXt0aGlzLl9zZXRPcGVuZWQobnVsbD09dGhpcy5pbml0aWFsT3BlbmVkPyEwOnRoaXMuaW5pdGlhbE9wZW5lZCk7dGhpcy5fbGltaXRMaXN0ZW5lcj0oKT0+e3RoaXMuc2V0KCJfbGltaXQiLG5lLmdldExpbWl0KCkpfTtuZS5hZGRMaW1pdExpc3RlbmVyKHRoaXMuX2xpbWl0TGlzdGVuZXIpO3RoaXMuX2xpbWl0TGlzdGVuZXIoKX0sZGV0YWNoZWQoKXtuZS5yZW1vdmVMaW1pdExpc3RlbmVyKHRoaXMuX2xpbWl0TGlzdGVuZXIpfSwKX3VwZGF0ZVJlbmRlcmVkSXRlbXMoYixkLGYsaCxrLHQpe2ImJihiPU1hdGguZmxvb3IoaC9mKSxkPXRoaXMuY2F0ZWdvcnkuaXRlbXN8fFtdLHRoaXMudXBkYXRlRG9tKHQ/ZDpkLnNsaWNlKGIqZiwoYisxKSpmKSx0aGlzLmdldENhdGVnb3J5SXRlbUtleSkpfSxfbGltaXRDaGFuZ2VkKGIpe3RoaXMuc2V0Q2FjaGVTaXplKDIqYil9LF9nZXRDYXRlZ29yeUl0ZW1LZXlDaGFuZ2VkKCl7dGhpcy5zZXRHZXRJdGVtS2V5KHRoaXMuZ2V0Q2F0ZWdvcnlJdGVtS2V5KX0sX2NvbXB1dGVDdXJyZW50UGFnZShiLGQpe3JldHVybiBNYXRoLmZsb29yKGQvYikrMX0sX2NvbXB1dGVQYWdlQ291bnQoYixkKXtyZXR1cm4gdGhpcy5jYXRlZ29yeT9NYXRoLmNlaWwodGhpcy5jYXRlZ29yeS5pdGVtcy5sZW5ndGgvZCk6MH0sX2NvbXB1dGVNdWx0aXBsZVBhZ2VzRXhpc3QoYixkKXtyZXR1cm4hZCYmMTxifSxfY29tcHV0ZUhhc1ByZXZpb3VzUGFnZShiKXtyZXR1cm4gMTxifSxfY29tcHV0ZUhhc05leHRQYWdlKGIsCmQpe3JldHVybiBiPGR9LF9jb21wdXRlSW5wdXRXaWR0aChiKXtyZXR1cm5gY2FsYygke2IudG9TdHJpbmcoKS5sZW5ndGh9ZW0gKyAyMHB4KWB9LF9zZXRBY3RpdmVJbmRleChiKXtjb25zdCBkPSh0aGlzLmNhdGVnb3J5Lml0ZW1zfHxbXSkubGVuZ3RoLTE7Yj5kJiYoYj1kKTswPmImJihiPTApO3RoaXMuc2V0KCJfYWN0aXZlSW5kZXgiLGIpfSxfY2xhbXBBY3RpdmVJbmRleCgpe3RoaXMuX3NldEFjdGl2ZUluZGV4KHRoaXMuX2FjdGl2ZUluZGV4KX0sX3BlcmZvcm1QcmV2aW91c1BhZ2UoKXt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9hY3RpdmVJbmRleC10aGlzLl9saW1pdCl9LF9wZXJmb3JtTmV4dFBhZ2UoKXt0aGlzLl9zZXRBY3RpdmVJbmRleCh0aGlzLl9hY3RpdmVJbmRleCt0aGlzLl9saW1pdCl9LF9jb21wdXRlUGFnZUlucHV0VmFsdWUoYixkLGYpe3JldHVybiBiP2Q6Zi50b1N0cmluZygpfSxfaGFuZGxlUGFnZUlucHV0RXZlbnQoYil7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsCmIudGFyZ2V0LnZhbHVlKTtiPU51bWJlcihiLnRhcmdldC52YWx1ZXx8TmFOKTtpc05hTihiKXx8dGhpcy5fc2V0QWN0aXZlSW5kZXgodGhpcy5fbGltaXQqKE1hdGgubWF4KDEsTWF0aC5taW4oYix0aGlzLl9wYWdlQ291bnQpKS0xKSl9LF9oYW5kbGVQYWdlQ2hhbmdlRXZlbnQoKXt0aGlzLnNldCgiX3BhZ2VJbnB1dFJhd1ZhbHVlIix0aGlzLl9jdXJyZW50UGFnZS50b1N0cmluZygpKX0sX2hhbmRsZVBhZ2VGb2N1c0V2ZW50KCl7dGhpcy5zZXQoIl9wYWdlSW5wdXRSYXdWYWx1ZSIsdGhpcy5fcGFnZUlucHV0VmFsdWUpO3RoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITApfSxfaGFuZGxlUGFnZUJsdXJFdmVudCgpe3RoaXMuc2V0KCJfcGFnZUlucHV0Rm9jdXNlZCIsITEpfSxfdXBkYXRlUGFnZUlucHV0VmFsdWUoYil7Y29uc3QgZD10aGlzLiQkKCIjcGFnZS1pbnB1dCBpbnB1dCIpO2QmJihkLnZhbHVlPWIpfSxfdXBkYXRlSW5wdXRXaWR0aCgpe3RoaXMudXBkYXRlU3R5bGVzKHsiLS10Zi1jYXRlZ29yeS1wYWdpbmF0ZWQtdmlldy1wYWdlLWlucHV0LXdpZHRoIjp0aGlzLl9pbnB1dFdpZHRofSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItZGlhbG9nLWJlaGF2aW9yL3BhcGVyLWRpYWxvZy1iZWhhdmlvci5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIuUGFwZXJEaWFsb2dCZWhhdmlvckltcGw9e2hvc3RBdHRyaWJ1dGVzOntyb2xlOiJkaWFsb2ciLHRhYmluZGV4OiItMSJ9LHByb3BlcnRpZXM6e21vZGFsOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9fcmVhZGllZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sb2JzZXJ2ZXJzOlsiX21vZGFsQ2hhbmdlZChtb2RhbCwgX19yZWFkaWVkKSJdLGxpc3RlbmVyczp7dGFwOiJfb25EaWFsb2dDbGljayJ9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fX3ByZXZOb0NhbmNlbE9uT3V0c2lkZUNsaWNrPXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljazt0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5O3RoaXMuX19wcmV2V2l0aEJhY2tkcm9wPXRoaXMud2l0aEJhY2tkcm9wO3RoaXMuX19yZWFkaWVkPSEwfSxfbW9kYWxDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7ZCYmKGI/KHRoaXMuX19wcmV2Tm9DYW5jZWxPbk91dHNpZGVDbGljaz0KdGhpcy5ub0NhbmNlbE9uT3V0c2lkZUNsaWNrLHRoaXMuX19wcmV2Tm9DYW5jZWxPbkVzY0tleT10aGlzLm5vQ2FuY2VsT25Fc2NLZXksdGhpcy5fX3ByZXZXaXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AsdGhpcy53aXRoQmFja2Ryb3A9dGhpcy5ub0NhbmNlbE9uRXNjS2V5PXRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljaz0hMCk6KHRoaXMubm9DYW5jZWxPbk91dHNpZGVDbGljaz10aGlzLm5vQ2FuY2VsT25PdXRzaWRlQ2xpY2smJnRoaXMuX19wcmV2Tm9DYW5jZWxPbk91dHNpZGVDbGljayx0aGlzLm5vQ2FuY2VsT25Fc2NLZXk9dGhpcy5ub0NhbmNlbE9uRXNjS2V5JiZ0aGlzLl9fcHJldk5vQ2FuY2VsT25Fc2NLZXksdGhpcy53aXRoQmFja2Ryb3A9dGhpcy53aXRoQmFja2Ryb3AmJnRoaXMuX19wcmV2V2l0aEJhY2tkcm9wKSl9LF91cGRhdGVDbG9zaW5nUmVhc29uQ29uZmlybWVkOmZ1bmN0aW9uKGIpe3RoaXMuY2xvc2luZ1JlYXNvbj10aGlzLmNsb3NpbmdSZWFzb258fAp7fTt0aGlzLmNsb3NpbmdSZWFzb24uY29uZmlybWVkPWJ9LF9vbkRpYWxvZ0NsaWNrOmZ1bmN0aW9uKGIpe2Zvcih2YXIgZD1Qb2x5bWVyLmRvbShiKS5wYXRoLGY9MCxoPWQuaW5kZXhPZih0aGlzKTtmPGg7ZisrKXt2YXIgaz1kW2ZdO2lmKGsuaGFzQXR0cmlidXRlJiYoay5oYXNBdHRyaWJ1dGUoImRpYWxvZy1kaXNtaXNzIil8fGsuaGFzQXR0cmlidXRlKCJkaWFsb2ctY29uZmlybSIpKSl7dGhpcy5fdXBkYXRlQ2xvc2luZ1JlYXNvbkNvbmZpcm1lZChrLmhhc0F0dHJpYnV0ZSgiZGlhbG9nLWNvbmZpcm0iKSk7dGhpcy5jbG9zZSgpO2Iuc3RvcFByb3BhZ2F0aW9uKCk7YnJlYWt9fX19O1BvbHltZXIuUGFwZXJEaWFsb2dCZWhhdmlvcj1bUG9seW1lci5Jcm9uT3ZlcmxheUJlaGF2aW9yLFBvbHltZXIuUGFwZXJEaWFsb2dCZWhhdmlvckltcGxdfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1kaWFsb2cvcGFwZXItZGlhbG9nLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWRpYWxvZyIsYmVoYXZpb3JzOltQb2x5bWVyLlBhcGVyRGlhbG9nQmVoYXZpb3IsUG9seW1lci5OZW9uQW5pbWF0aW9uUnVubmVyQmVoYXZpb3JdLGxpc3RlbmVyczp7Im5lb24tYW5pbWF0aW9uLWZpbmlzaCI6Il9vbk5lb25BbmltYXRpb25GaW5pc2gifSxfcmVuZGVyT3BlbmVkOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxBbmltYXRpb24oKTt0aGlzLnBsYXlBbmltYXRpb24oImVudHJ5Iil9LF9yZW5kZXJDbG9zZWQ6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbEFuaW1hdGlvbigpO3RoaXMucGxheUFuaW1hdGlvbigiZXhpdCIpfSxfb25OZW9uQW5pbWF0aW9uRmluaXNoOmZ1bmN0aW9uKCl7dGhpcy5vcGVuZWQ/dGhpcy5fZmluaXNoUmVuZGVyT3BlbmVkKCk6dGhpcy5fZmluaXNoUmVuZGVyQ2xvc2VkKCl9fSk7CgovLyBodHRwczovL2QzanMub3JnIHY1LjcuMCBDb3B5cmlnaHQgMjAxOCBNaWtlIEJvc3RvY2sKIWZ1bmN0aW9uKHQsbil7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9uKGV4cG9ydHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyJdLG4pOm4odC5kMz10LmQzfHx7fSl9KHRoaXMsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4odCxuKXtyZXR1cm4gdDxuPy0xOnQ+bj8xOnQ+PW4/MDpOYU59ZnVuY3Rpb24gZSh0KXt2YXIgZTtyZXR1cm4gMT09PXQubGVuZ3RoJiYoZT10LHQ9ZnVuY3Rpb24odCxyKXtyZXR1cm4gbihlKHQpLHIpfSkse2xlZnQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKTwwP3I9bysxOmk9b31yZXR1cm4gcn0scmlnaHQ6ZnVuY3Rpb24obixlLHIsaSl7Zm9yKG51bGw9PXImJihyPTApLG51bGw9PWkmJihpPW4ubGVuZ3RoKTtyPGk7KXt2YXIgbz1yK2k+Pj4xO3QobltvXSxlKT4wP2k9bzpyPW8rMX1yZXR1cm4gcn19fXZhciByPWUobiksaT1yLnJpZ2h0LG89ci5sZWZ0O2Z1bmN0aW9uIGEodCxuKXtyZXR1cm5bdCxuXX1mdW5jdGlvbiB1KHQpe3JldHVybiBudWxsPT09dD9OYU46K3R9ZnVuY3Rpb24gZih0LG4pe3ZhciBlLHIsaT10Lmxlbmd0aCxvPTAsYT0tMSxmPTAsYz0wO2lmKG51bGw9PW4pZm9yKDsrK2E8aTspaXNOYU4oZT11KHRbYV0pKXx8KGMrPShyPWUtZikqKGUtKGYrPXIvKytvKSkpO2Vsc2UgZm9yKDsrK2E8aTspaXNOYU4oZT11KG4odFthXSxhLHQpKSl8fChjKz0ocj1lLWYpKihlLShmKz1yLysrbykpKTtpZihvPjEpcmV0dXJuIGMvKG8tMSl9ZnVuY3Rpb24gYyh0LG4pe3ZhciBlPWYodCxuKTtyZXR1cm4gZT9NYXRoLnNxcnQoZSk6ZX1mdW5jdGlvbiBzKHQsbil7dmFyIGUscixpLG89dC5sZW5ndGgsYT0tMTtpZihudWxsPT1uKXtmb3IoOysrYTxvOylpZihudWxsIT0oZT10W2FdKSYmZT49ZSlmb3Iocj1pPWU7KythPG87KW51bGwhPShlPXRbYV0pJiYocj5lJiYocj1lKSxpPGUmJihpPWUpKX1lbHNlIGZvcig7KythPG87KWlmKG51bGwhPShlPW4odFthXSxhLHQpKSYmZT49ZSlmb3Iocj1pPWU7KythPG87KW51bGwhPShlPW4odFthXSxhLHQpKSYmKHI+ZSYmKHI9ZSksaTxlJiYoaT1lKSk7cmV0dXJuW3IsaV19dmFyIGw9QXJyYXkucHJvdG90eXBlLGg9bC5zbGljZSxkPWwubWFwO2Z1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHYodCl7cmV0dXJuIHR9ZnVuY3Rpb24gZyh0LG4sZSl7dD0rdCxuPStuLGU9KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8obj10LHQ9MCwxKTppPDM/MTorZTtmb3IodmFyIHI9LTEsaT0wfE1hdGgubWF4KDAsTWF0aC5jZWlsKChuLXQpL2UpKSxvPW5ldyBBcnJheShpKTsrK3I8aTspb1tyXT10K3IqZTtyZXR1cm4gb312YXIgeT1NYXRoLnNxcnQoNTApLF89TWF0aC5zcXJ0KDEwKSxiPU1hdGguc3FydCgyKTtmdW5jdGlvbiBtKHQsbixlKXt2YXIgcixpLG8sYSx1PS0xO2lmKGU9K2UsKHQ9K3QpPT09KG49K24pJiZlPjApcmV0dXJuW3RdO2lmKChyPW48dCkmJihpPXQsdD1uLG49aSksMD09PShhPXgodCxuLGUpKXx8IWlzRmluaXRlKGEpKXJldHVybltdO2lmKGE+MClmb3IodD1NYXRoLmNlaWwodC9hKSxuPU1hdGguZmxvb3Iobi9hKSxvPW5ldyBBcnJheShpPU1hdGguY2VpbChuLXQrMSkpOysrdTxpOylvW3VdPSh0K3UpKmE7ZWxzZSBmb3IodD1NYXRoLmZsb29yKHQqYSksbj1NYXRoLmNlaWwobiphKSxvPW5ldyBBcnJheShpPU1hdGguY2VpbCh0LW4rMSkpOysrdTxpOylvW3VdPSh0LXUpL2E7cmV0dXJuIHImJm8ucmV2ZXJzZSgpLG99ZnVuY3Rpb24geCh0LG4sZSl7dmFyIHI9KG4tdCkvTWF0aC5tYXgoMCxlKSxpPU1hdGguZmxvb3IoTWF0aC5sb2cocikvTWF0aC5MTjEwKSxvPXIvTWF0aC5wb3coMTAsaSk7cmV0dXJuIGk+PTA/KG8+PXk/MTA6bz49Xz81Om8+PWI/MjoxKSpNYXRoLnBvdygxMCxpKTotTWF0aC5wb3coMTAsLWkpLyhvPj15PzEwOm8+PV8/NTpvPj1iPzI6MSl9ZnVuY3Rpb24gdyh0LG4sZSl7dmFyIHI9TWF0aC5hYnMobi10KS9NYXRoLm1heCgwLGUpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhyKS9NYXRoLkxOMTApKSxvPXIvaTtyZXR1cm4gbz49eT9pKj0xMDpvPj1fP2kqPTU6bz49YiYmKGkqPTIpLG48dD8taTppfWZ1bmN0aW9uIE0odCl7cmV0dXJuIE1hdGguY2VpbChNYXRoLmxvZyh0Lmxlbmd0aCkvTWF0aC5MTjIpKzF9ZnVuY3Rpb24gQSh0LG4sZSl7aWYobnVsbD09ZSYmKGU9dSkscj10Lmxlbmd0aCl7aWYoKG49K24pPD0wfHxyPDIpcmV0dXJuK2UodFswXSwwLHQpO2lmKG4+PTEpcmV0dXJuK2UodFtyLTFdLHItMSx0KTt2YXIgcixpPShyLTEpKm4sbz1NYXRoLmZsb29yKGkpLGE9K2UodFtvXSxvLHQpO3JldHVybiBhKygrZSh0W28rMV0sbysxLHQpLWEpKihpLW8pfX1mdW5jdGlvbiBUKHQsbil7dmFyIGUscixpPXQubGVuZ3RoLG89LTE7aWYobnVsbD09bil7Zm9yKDsrK288aTspaWYobnVsbCE9KGU9dFtvXSkmJmU+PWUpZm9yKHI9ZTsrK288aTspbnVsbCE9KGU9dFtvXSkmJmU+ciYmKHI9ZSl9ZWxzZSBmb3IoOysrbzxpOylpZihudWxsIT0oZT1uKHRbb10sbyx0KSkmJmU+PWUpZm9yKHI9ZTsrK288aTspbnVsbCE9KGU9bih0W29dLG8sdCkpJiZlPnImJihyPWUpO3JldHVybiByfWZ1bmN0aW9uIE4odCl7Zm9yKHZhciBuLGUscixpPXQubGVuZ3RoLG89LTEsYT0wOysrbzxpOylhKz10W29dLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkoYSk7LS1pPj0wOylmb3Iobj0ocj10W2ldKS5sZW5ndGg7LS1uPj0wOyllWy0tYV09cltuXTtyZXR1cm4gZX1mdW5jdGlvbiBTKHQsbil7dmFyIGUscixpPXQubGVuZ3RoLG89LTE7aWYobnVsbD09bil7Zm9yKDsrK288aTspaWYobnVsbCE9KGU9dFtvXSkmJmU+PWUpZm9yKHI9ZTsrK288aTspbnVsbCE9KGU9dFtvXSkmJnI+ZSYmKHI9ZSl9ZWxzZSBmb3IoOysrbzxpOylpZihudWxsIT0oZT1uKHRbb10sbyx0KSkmJmU+PWUpZm9yKHI9ZTsrK288aTspbnVsbCE9KGU9bih0W29dLG8sdCkpJiZyPmUmJihyPWUpO3JldHVybiByfWZ1bmN0aW9uIEUodCl7aWYoIShpPXQubGVuZ3RoKSlyZXR1cm5bXTtmb3IodmFyIG49LTEsZT1TKHQsaykscj1uZXcgQXJyYXkoZSk7KytuPGU7KWZvcih2YXIgaSxvPS0xLGE9cltuXT1uZXcgQXJyYXkoaSk7KytvPGk7KWFbb109dFtvXVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBrKHQpe3JldHVybiB0Lmxlbmd0aH12YXIgQz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gUCh0KXtyZXR1cm4gdH12YXIgej0xLFI9MixMPTMsRD00LFU9MWUtNjtmdW5jdGlvbiBxKHQpe3JldHVybiJ0cmFuc2xhdGUoIisodCsuNSkrIiwwKSJ9ZnVuY3Rpb24gTyh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCsuNSkrIikifWZ1bmN0aW9uIFkoKXtyZXR1cm4hdGhpcy5fX2F4aXN9ZnVuY3Rpb24gQih0LG4pe3ZhciBlPVtdLHI9bnVsbCxpPW51bGwsbz02LGE9Nix1PTMsZj10PT09enx8dD09PUQ/LTE6MSxjPXQ9PT1EfHx0PT09Uj8ieCI6InkiLHM9dD09PXp8fHQ9PT1MP3E6TztmdW5jdGlvbiBsKGwpe3ZhciBoPW51bGw9PXI/bi50aWNrcz9uLnRpY2tzLmFwcGx5KG4sZSk6bi5kb21haW4oKTpyLGQ9bnVsbD09aT9uLnRpY2tGb3JtYXQ/bi50aWNrRm9ybWF0LmFwcGx5KG4sZSk6UDppLHA9TWF0aC5tYXgobywwKSt1LHY9bi5yYW5nZSgpLGc9K3ZbMF0rLjUseT0rdlt2Lmxlbmd0aC0xXSsuNSxfPShuLmJhbmR3aWR0aD9mdW5jdGlvbih0KXt2YXIgbj1NYXRoLm1heCgwLHQuYmFuZHdpZHRoKCktMSkvMjtyZXR1cm4gdC5yb3VuZCgpJiYobj1NYXRoLnJvdW5kKG4pKSxmdW5jdGlvbihlKXtyZXR1cm4rdChlKStufX06ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybit0KG4pfX0pKG4uY29weSgpKSxiPWwuc2VsZWN0aW9uP2wuc2VsZWN0aW9uKCk6bCxtPWIuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLHg9Yi5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShoLG4pLm9yZGVyKCksdz14LmV4aXQoKSxNPXguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxBPXguc2VsZWN0KCJsaW5lIiksVD14LnNlbGVjdCgidGV4dCIpO209bS5tZXJnZShtLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSx4PXgubWVyZ2UoTSksQT1BLm1lcmdlKE0uYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihjKyIyIixmKm8pKSxUPVQubWVyZ2UoTS5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihjLGYqcCkuYXR0cigiZHkiLHQ9PT16PyIwZW0iOnQ9PT1MPyIwLjcxZW0iOiIwLjMyZW0iKSksbCE9PWImJihtPW0udHJhbnNpdGlvbihsKSx4PXgudHJhbnNpdGlvbihsKSxBPUEudHJhbnNpdGlvbihsKSxUPVQudHJhbnNpdGlvbihsKSx3PXcudHJhbnNpdGlvbihsKS5hdHRyKCJvcGFjaXR5IixVKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PV8odCkpP3ModCk6dGhpcy5nZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIpfSksTS5hdHRyKCJvcGFjaXR5IixVKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIHMobiYmaXNGaW5pdGUobj1uKHQpKT9uOl8odCkpfSkpLHcucmVtb3ZlKCksbS5hdHRyKCJkIix0PT09RHx8dD09Uj9hPyJNIitmKmErIiwiK2crIkgwLjVWIit5KyJIIitmKmE6Ik0wLjUsIitnKyJWIit5OmE/Ik0iK2crIiwiK2YqYSsiVjAuNUgiK3krIlYiK2YqYToiTSIrZysiLDAuNUgiK3kpLHguYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0KXtyZXR1cm4gcyhfKHQpKX0pLEEuYXR0cihjKyIyIixmKm8pLFQuYXR0cihjLGYqcCkudGV4dChkKSxiLmZpbHRlcihZKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIix0PT09Uj8ic3RhcnQiOnQ9PT1EPyJlbmQiOiJtaWRkbGUiKSxiLmVhY2goZnVuY3Rpb24oKXt0aGlzLl9fYXhpcz1ffSl9cmV0dXJuIGwuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxsKTpufSxsLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIGU9Qy5jYWxsKGFyZ3VtZW50cyksbH0sbC50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/W106Qy5jYWxsKHQpLGwpOmUuc2xpY2UoKX0sbC50aWNrVmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDpDLmNhbGwodCksbCk6ciYmci5zbGljZSgpfSxsLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dCxsKTppfSxsLnRpY2tTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWE9K3QsbCk6b30sbC50aWNrU2l6ZUlubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSt0LGwpOm99LGwudGlja1NpemVPdXRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0rdCxsKTphfSxsLnRpY2tQYWRkaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSt0LGwpOnV9LGx9dmFyIEY9e3ZhbHVlOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gSSgpe2Zvcih2YXIgdCxuPTAsZT1hcmd1bWVudHMubGVuZ3RoLHI9e307bjxlOysrbil7aWYoISh0PWFyZ3VtZW50c1tuXSsiIil8fHQgaW4gcil0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgdHlwZTogIit0KTtyW3RdPVtdfXJldHVybiBuZXcgSChyKX1mdW5jdGlvbiBIKHQpe3RoaXMuXz10fWZ1bmN0aW9uIGoodCxuKXtmb3IodmFyIGUscj0wLGk9dC5sZW5ndGg7cjxpOysrcilpZigoZT10W3JdKS5uYW1lPT09bilyZXR1cm4gZS52YWx1ZX1mdW5jdGlvbiBYKHQsbixlKXtmb3IodmFyIHI9MCxpPXQubGVuZ3RoO3I8aTsrK3IpaWYodFtyXS5uYW1lPT09bil7dFtyXT1GLHQ9dC5zbGljZSgwLHIpLmNvbmNhdCh0LnNsaWNlKHIrMSkpO2JyZWFrfXJldHVybiBudWxsIT1lJiZ0LnB1c2goe25hbWU6bix2YWx1ZTplfSksdH1ILnByb3RvdHlwZT1JLnByb3RvdHlwZT17Y29uc3RydWN0b3I6SCxvbjpmdW5jdGlvbih0LG4pe3ZhciBlLHIsaT10aGlzLl8sbz0ocj1pLCh0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGU9dC5pbmRleE9mKCIuIik7aWYoZT49MCYmKG49dC5zbGljZShlKzEpLHQ9dC5zbGljZSgwLGUpKSx0JiYhci5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtyZXR1cm57dHlwZTp0LG5hbWU6bn19KSksYT0tMSx1PW8ubGVuZ3RoO2lmKCEoYXJndW1lbnRzLmxlbmd0aDwyKSl7aWYobnVsbCE9biYmImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGNhbGxiYWNrOiAiK24pO2Zvcig7KythPHU7KWlmKGU9KHQ9b1thXSkudHlwZSlpW2VdPVgoaVtlXSx0Lm5hbWUsbik7ZWxzZSBpZihudWxsPT1uKWZvcihlIGluIGkpaVtlXT1YKGlbZV0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfWZvcig7KythPHU7KWlmKChlPSh0PW9bYV0pLnR5cGUpJiYoZT1qKGlbZV0sdC5uYW1lKSkpcmV0dXJuIGV9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD17fSxuPXRoaXMuXztmb3IodmFyIGUgaW4gbil0W2VdPW5bZV0uc2xpY2UoKTtyZXR1cm4gbmV3IEgodCl9LGNhbGw6ZnVuY3Rpb24odCxuKXtpZigoZT1hcmd1bWVudHMubGVuZ3RoLTIpPjApZm9yKHZhciBlLHIsaT1uZXcgQXJyYXkoZSksbz0wO288ZTsrK28paVtvXT1hcmd1bWVudHNbbysyXTtpZighdGhpcy5fLmhhc093blByb3BlcnR5KHQpKXRocm93IG5ldyBFcnJvcigidW5rbm93biB0eXBlOiAiK3QpO2ZvcihvPTAsZT0ocj10aGlzLl9bdF0pLmxlbmd0aDtvPGU7KytvKXJbb10udmFsdWUuYXBwbHkobixpKX0sYXBwbHk6ZnVuY3Rpb24odCxuLGUpe2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKHZhciByPXRoaXMuX1t0XSxpPTAsbz1yLmxlbmd0aDtpPG87KytpKXJbaV0udmFsdWUuYXBwbHkobixlKX19O3ZhciBHPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixWPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix4aHRtbDpHLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gJCh0KXt2YXIgbj10Kz0iIixlPW4uaW5kZXhPZigiOiIpO3JldHVybiBlPj0wJiYieG1sbnMiIT09KG49dC5zbGljZSgwLGUpKSYmKHQ9dC5zbGljZShlKzEpKSxWLmhhc093blByb3BlcnR5KG4pP3tzcGFjZTpWW25dLGxvY2FsOnR9OnR9ZnVuY3Rpb24gVyh0KXt2YXIgbj0kKHQpO3JldHVybihuLmxvY2FsP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLm93bmVyRG9jdW1lbnQsZT10aGlzLm5hbWVzcGFjZVVSSTtyZXR1cm4gZT09PUcmJm4uZG9jdW1lbnRFbGVtZW50Lm5hbWVzcGFjZVVSST09PUc/bi5jcmVhdGVFbGVtZW50KHQpOm4uY3JlYXRlRWxlbWVudE5TKGUsdCl9fSkobil9ZnVuY3Rpb24gWigpe31mdW5jdGlvbiBRKHQpe3JldHVybiBudWxsPT10P1o6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yKHQpfX1mdW5jdGlvbiBKKCl7cmV0dXJuW119ZnVuY3Rpb24gSyh0KXtyZXR1cm4gbnVsbD09dD9KOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbCh0KX19dmFyIHR0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KXt2YXIgbnQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2lmKCFudC5tYXRjaGVzKXt2YXIgZXQ9bnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxudC5tc01hdGNoZXNTZWxlY3Rvcnx8bnQubW96TWF0Y2hlc1NlbGVjdG9yfHxudC5vTWF0Y2hlc1NlbGVjdG9yO3R0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBldC5jYWxsKHRoaXMsdCl9fX19dmFyIHJ0PXR0O2Z1bmN0aW9uIGl0KHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIG90KHQsbil7dGhpcy5vd25lckRvY3VtZW50PXQub3duZXJEb2N1bWVudCx0aGlzLm5hbWVzcGFjZVVSST10Lm5hbWVzcGFjZVVSSSx0aGlzLl9uZXh0PW51bGwsdGhpcy5fcGFyZW50PXQsdGhpcy5fX2RhdGFfXz1ufW90LnByb3RvdHlwZT17Y29uc3RydWN0b3I6b3QsYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCx0aGlzLl9uZXh0KX0saW5zZXJ0QmVmb3JlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXMuX3BhcmVudC5pbnNlcnRCZWZvcmUodCxuKX0scXVlcnlTZWxlY3RvcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3IodCl9LHF1ZXJ5U2VsZWN0b3JBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcmVudC5xdWVyeVNlbGVjdG9yQWxsKHQpfX07dmFyIGF0PSIkIjtmdW5jdGlvbiB1dCh0LG4sZSxyLGksbyl7Zm9yKHZhciBhLHU9MCxmPW4ubGVuZ3RoLGM9by5sZW5ndGg7dTxjOysrdSkoYT1uW3VdKT8oYS5fX2RhdGFfXz1vW3VdLHJbdV09YSk6ZVt1XT1uZXcgb3QodCxvW3VdKTtmb3IoO3U8ZjsrK3UpKGE9blt1XSkmJihpW3VdPWEpfWZ1bmN0aW9uIGZ0KHQsbixlLHIsaSxvLGEpe3ZhciB1LGYsYyxzPXt9LGw9bi5sZW5ndGgsaD1vLmxlbmd0aCxkPW5ldyBBcnJheShsKTtmb3IodT0wO3U8bDsrK3UpKGY9blt1XSkmJihkW3VdPWM9YXQrYS5jYWxsKGYsZi5fX2RhdGFfXyx1LG4pLGMgaW4gcz9pW3VdPWY6c1tjXT1mKTtmb3IodT0wO3U8aDsrK3UpKGY9c1tjPWF0K2EuY2FsbCh0LG9bdV0sdSxvKV0pPyhyW3VdPWYsZi5fX2RhdGFfXz1vW3VdLHNbY109bnVsbCk6ZVt1XT1uZXcgb3QodCxvW3VdKTtmb3IodT0wO3U8bDsrK3UpKGY9blt1XSkmJnNbZFt1XV09PT1mJiYoaVt1XT1mKX1mdW5jdGlvbiBjdCh0LG4pe3JldHVybiB0PG4/LTE6dD5uPzE6dD49bj8wOk5hTn1mdW5jdGlvbiBzdCh0KXtyZXR1cm4gdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHQuZG9jdW1lbnQmJnR8fHQuZGVmYXVsdFZpZXd9ZnVuY3Rpb24gbHQodCxuKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG4pfHxzdCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShuKX1mdW5jdGlvbiBodCh0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLyl9ZnVuY3Rpb24gZHQodCl7cmV0dXJuIHQuY2xhc3NMaXN0fHxuZXcgcHQodCl9ZnVuY3Rpb24gcHQodCl7dGhpcy5fbm9kZT10LHRoaXMuX25hbWVzPWh0KHQuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9ZnVuY3Rpb24gdnQodCxuKXtmb3IodmFyIGU9ZHQodCkscj0tMSxpPW4ubGVuZ3RoOysrcjxpOyllLmFkZChuW3JdKX1mdW5jdGlvbiBndCh0LG4pe2Zvcih2YXIgZT1kdCh0KSxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWUucmVtb3ZlKG5bcl0pfWZ1bmN0aW9uIHl0KCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBfdCgpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIGJ0KCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIG10KCl7dGhpcy5wcmV2aW91c1NpYmxpbmcmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcyx0aGlzLnBhcmVudE5vZGUuZmlyc3RDaGlsZCl9ZnVuY3Rpb24geHQoKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiB3dCgpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTt0JiZ0LnJlbW92ZUNoaWxkKHRoaXMpfWZ1bmN0aW9uIE10KCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5jbG9uZU5vZGUoITEpLHRoaXMubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIEF0KCl7cmV0dXJuIHRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5jbG9uZU5vZGUoITApLHRoaXMubmV4dFNpYmxpbmcpfXB0LnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKHQpe3RoaXMuX25hbWVzLmluZGV4T2YodCk8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX25hbWVzLmluZGV4T2YodCk7bj49MCYmKHRoaXMuX25hbWVzLnNwbGljZShuLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07dmFyIFR0PXt9Oyh0LmV2ZW50PW51bGwsInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCkmJigib25tb3VzZWVudGVyImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8KFR0PXttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0In0pKTtmdW5jdGlvbiBOdCh0LG4sZSl7cmV0dXJuIHQ9U3QodCxuLGUpLGZ1bmN0aW9uKG4pe3ZhciBlPW4ucmVsYXRlZFRhcmdldDtlJiYoZT09PXRoaXN8fDgmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0aGlzKSl8fHQuY2FsbCh0aGlzLG4pfX1mdW5jdGlvbiBTdChuLGUscil7cmV0dXJuIGZ1bmN0aW9uKGkpe3ZhciBvPXQuZXZlbnQ7dC5ldmVudD1pO3RyeXtuLmNhbGwodGhpcyx0aGlzLl9fZGF0YV9fLGUscil9ZmluYWxseXt0LmV2ZW50PW99fX1mdW5jdGlvbiBFdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLl9fb247aWYobil7Zm9yKHZhciBlLHI9MCxpPS0xLG89bi5sZW5ndGg7cjxvOysrcillPW5bcl0sdC50eXBlJiZlLnR5cGUhPT10LnR5cGV8fGUubmFtZSE9PXQubmFtZT9uWysraV09ZTp0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS50eXBlLGUubGlzdGVuZXIsZS5jYXB0dXJlKTsrK2k/bi5sZW5ndGg9aTpkZWxldGUgdGhpcy5fX29ufX19ZnVuY3Rpb24ga3QodCxuLGUpe3ZhciByPVR0Lmhhc093blByb3BlcnR5KHQudHlwZSk/TnQ6U3Q7cmV0dXJuIGZ1bmN0aW9uKGksbyxhKXt2YXIgdSxmPXRoaXMuX19vbixjPXIobixvLGEpO2lmKGYpZm9yKHZhciBzPTAsbD1mLmxlbmd0aDtzPGw7KytzKWlmKCh1PWZbc10pLnR5cGU9PT10LnR5cGUmJnUubmFtZT09PXQubmFtZSlyZXR1cm4gdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHUudHlwZSx1Lmxpc3RlbmVyLHUuY2FwdHVyZSksdGhpcy5hZGRFdmVudExpc3RlbmVyKHUudHlwZSx1Lmxpc3RlbmVyPWMsdS5jYXB0dXJlPWUpLHZvaWQodS52YWx1ZT1uKTt0aGlzLmFkZEV2ZW50TGlzdGVuZXIodC50eXBlLGMsZSksdT17dHlwZTp0LnR5cGUsbmFtZTp0Lm5hbWUsdmFsdWU6bixsaXN0ZW5lcjpjLGNhcHR1cmU6ZX0sZj9mLnB1c2godSk6dGhpcy5fX29uPVt1XX19ZnVuY3Rpb24gQ3QobixlLHIsaSl7dmFyIG89dC5ldmVudDtuLnNvdXJjZUV2ZW50PXQuZXZlbnQsdC5ldmVudD1uO3RyeXtyZXR1cm4gZS5hcHBseShyLGkpfWZpbmFsbHl7dC5ldmVudD1vfX1mdW5jdGlvbiBQdCh0LG4sZSl7dmFyIHI9c3QodCksaT1yLkN1c3RvbUV2ZW50OyJmdW5jdGlvbiI9PXR5cGVvZiBpP2k9bmV3IGkobixlKTooaT1yLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLGU/KGkuaW5pdEV2ZW50KG4sZS5idWJibGVzLGUuY2FuY2VsYWJsZSksaS5kZXRhaWw9ZS5kZXRhaWwpOmkuaW5pdEV2ZW50KG4sITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9dmFyIHp0PVtudWxsXTtmdW5jdGlvbiBSdCh0LG4pe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9bn1mdW5jdGlvbiBMdCgpe3JldHVybiBuZXcgUnQoW1tkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdXSx6dCl9ZnVuY3Rpb24gRHQodCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBSdChbW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCldXSxbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSk6bmV3IFJ0KFtbdF1dLHp0KX1SdC5wcm90b3R5cGU9THQucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpSdCxzZWxlY3Q6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PVEodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSlmb3IodmFyIG8sYSx1PW5baV0sZj11Lmxlbmd0aCxjPXJbaV09bmV3IEFycmF5KGYpLHM9MDtzPGY7KytzKShvPXVbc10pJiYoYT10LmNhbGwobyxvLl9fZGF0YV9fLHMsdSkpJiYoIl9fZGF0YV9fImluIG8mJihhLl9fZGF0YV9fPW8uX19kYXRhX18pLGNbc109YSk7cmV0dXJuIG5ldyBSdChyLHRoaXMuX3BhcmVudHMpfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIiE9dHlwZW9mIHQmJih0PUsodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPVtdLGk9W10sbz0wO288ZTsrK28pZm9yKHZhciBhLHU9bltvXSxmPXUubGVuZ3RoLGM9MDtjPGY7KytjKShhPXVbY10pJiYoci5wdXNoKHQuY2FsbChhLGEuX19kYXRhX18sYyx1KSksaS5wdXNoKGEpKTtyZXR1cm4gbmV3IFJ0KHIsaSl9LGZpbHRlcjpmdW5jdGlvbih0KXsiZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9cnQodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT1uLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlOysraSlmb3IodmFyIG8sYT1uW2ldLHU9YS5sZW5ndGgsZj1yW2ldPVtdLGM9MDtjPHU7KytjKShvPWFbY10pJiZ0LmNhbGwobyxvLl9fZGF0YV9fLGMsYSkmJmYucHVzaChvKTtyZXR1cm4gbmV3IFJ0KHIsdGhpcy5fcGFyZW50cyl9LGRhdGE6ZnVuY3Rpb24odCxuKXtpZighdClyZXR1cm4gcD1uZXcgQXJyYXkodGhpcy5zaXplKCkpLHM9LTEsdGhpcy5lYWNoKGZ1bmN0aW9uKHQpe3BbKytzXT10fSkscDt2YXIgZSxyPW4/ZnQ6dXQsaT10aGlzLl9wYXJlbnRzLG89dGhpcy5fZ3JvdXBzOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYoZT10LHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZX0pO2Zvcih2YXIgYT1vLmxlbmd0aCx1PW5ldyBBcnJheShhKSxmPW5ldyBBcnJheShhKSxjPW5ldyBBcnJheShhKSxzPTA7czxhOysrcyl7dmFyIGw9aVtzXSxoPW9bc10sZD1oLmxlbmd0aCxwPXQuY2FsbChsLGwmJmwuX19kYXRhX18scyxpKSx2PXAubGVuZ3RoLGc9ZltzXT1uZXcgQXJyYXkodikseT11W3NdPW5ldyBBcnJheSh2KTtyKGwsaCxnLHksY1tzXT1uZXcgQXJyYXkoZCkscCxuKTtmb3IodmFyIF8sYixtPTAseD0wO208djsrK20paWYoXz1nW21dKXtmb3IobT49eCYmKHg9bSsxKTshKGI9eVt4XSkmJisreDx2Oyk7Xy5fbmV4dD1ifHxudWxsfX1yZXR1cm4odT1uZXcgUnQodSxpKSkuX2VudGVyPWYsdS5fZXhpdD1jLHV9LGVudGVyOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBSdCh0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChpdCksdGhpcy5fcGFyZW50cyl9LGV4aXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJ0KHRoaXMuX2V4aXR8fHRoaXMuX2dyb3Vwcy5tYXAoaXQpLHRoaXMuX3BhcmVudHMpfSxtZXJnZTpmdW5jdGlvbih0KXtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9dC5fZ3JvdXBzLHI9bi5sZW5ndGgsaT1lLmxlbmd0aCxvPU1hdGgubWluKHIsaSksYT1uZXcgQXJyYXkociksdT0wO3U8bzsrK3UpZm9yKHZhciBmLGM9blt1XSxzPWVbdV0sbD1jLmxlbmd0aCxoPWFbdV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShmPWNbZF18fHNbZF0pJiYoaFtkXT1mKTtmb3IoO3U8cjsrK3UpYVt1XT1uW3VdO3JldHVybiBuZXcgUnQoYSx0aGlzLl9wYXJlbnRzKX0sb3JkZXI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLG49LTEsZT10Lmxlbmd0aDsrK248ZTspZm9yKHZhciByLGk9dFtuXSxvPWkubGVuZ3RoLTEsYT1pW29dOy0tbz49MDspKHI9aVtvXSkmJihhJiZhIT09ci5uZXh0U2libGluZyYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLGEpLGE9cik7cmV0dXJuIHRoaXN9LHNvcnQ6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuLGUpe3JldHVybiBuJiZlP3Qobi5fX2RhdGFfXyxlLl9fZGF0YV9fKTohbi0hZX10fHwodD1jdCk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPWUubGVuZ3RoLGk9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKXtmb3IodmFyIGEsdT1lW29dLGY9dS5sZW5ndGgsYz1pW29dPW5ldyBBcnJheShmKSxzPTA7czxmOysrcykoYT11W3NdKSYmKGNbc109YSk7Yy5zb3J0KG4pfXJldHVybiBuZXcgUnQoaSx0aGlzLl9wYXJlbnRzKS5vcmRlcigpfSxjYWxsOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzWzBdO3JldHVybiBhcmd1bWVudHNbMF09dGhpcyx0LmFwcGx5KG51bGwsYXJndW1lbnRzKSx0aGlzfSxub2RlczpmdW5jdGlvbigpe3ZhciB0PW5ldyBBcnJheSh0aGlzLnNpemUoKSksbj0tMTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dFsrK25dPXRoaXN9KSx0fSxub2RlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxuPTAsZT10Lmxlbmd0aDtuPGU7KytuKWZvcih2YXIgcj10W25dLGk9MCxvPXIubGVuZ3RoO2k8bzsrK2kpe3ZhciBhPXJbaV07aWYoYSlyZXR1cm4gYX1yZXR1cm4gbnVsbH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeysrdH0pLHR9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMubm9kZSgpfSxlYWNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl9ncm91cHMsZT0wLHI9bi5sZW5ndGg7ZTxyOysrZSlmb3IodmFyIGksbz1uW2VdLGE9MCx1PW8ubGVuZ3RoO2E8dTsrK2EpKGk9b1thXSkmJnQuY2FsbChpLGkuX19kYXRhX18sYSxvKTtyZXR1cm4gdGhpc30sYXR0cjpmdW5jdGlvbih0LG4pe3ZhciBlPSQodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgcj10aGlzLm5vZGUoKTtyZXR1cm4gZS5sb2NhbD9yLmdldEF0dHJpYnV0ZU5TKGUuc3BhY2UsZS5sb2NhbCk6ci5nZXRBdHRyaWJ1dGUoZSl9cmV0dXJuIHRoaXMuZWFjaCgobnVsbD09bj9lLmxvY2FsP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX06ImZ1bmN0aW9uIj09dHlwZW9mIG4/ZS5sb2NhbD9mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpOnRoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUpfX06ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtudWxsPT1lP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQsZSl9fTplLmxvY2FsP2Z1bmN0aW9uKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwsbil9fTpmdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc2V0QXR0cmlidXRlKHQsbil9fSkoZSxuKSl9LHN0eWxlOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP3RoaXMuZWFjaCgobnVsbD09bj9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX06ImZ1bmN0aW9uIj09dHlwZW9mIG4/ZnVuY3Rpb24odCxuLGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PXI/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQscixlKX19OmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbixlKX19KSh0LG4sbnVsbD09ZT8iIjplKSk6bHQodGhpcy5ub2RlKCksdCl9LHByb3BlcnR5OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKG51bGw9PW4/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbdF19fToiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO251bGw9PWU/ZGVsZXRlIHRoaXNbdF06dGhpc1t0XT1lfX06ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPW59fSkodCxuKSk6dGhpcy5ub2RlKClbdF19LGNsYXNzZWQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1odCh0KyIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgcj1kdCh0aGlzLm5vZGUoKSksaT0tMSxvPWUubGVuZ3RoOysraTxvOylpZighci5jb250YWlucyhlW2ldKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbigpeyhuLmFwcGx5KHRoaXMsYXJndW1lbnRzKT92dDpndCkodGhpcyx0KX19Om4/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dnQodGhpcyx0KX19OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2d0KHRoaXMsdCl9fSkoZSxuKSl9LHRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKG51bGw9PXQ/eXQ6KCJmdW5jdGlvbiI9PXR5cGVvZiB0P2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9bnVsbD09bj8iIjpufX06ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy50ZXh0Q29udGVudD10fX0pKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH0saHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2gobnVsbD09dD9fdDooImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5pbm5lckhUTUw9bnVsbD09bj8iIjpufX06ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5pbm5lckhUTUw9dH19KSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfSxyYWlzZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goYnQpfSxsb3dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2gobXQpfSxhcHBlbmQ6ZnVuY3Rpb24odCl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpXKHQpO3JldHVybiB0aGlzLnNlbGVjdChmdW5jdGlvbigpe3JldHVybiB0aGlzLmFwcGVuZENoaWxkKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pfSxpbnNlcnQ6ZnVuY3Rpb24odCxuKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlcodCkscj1udWxsPT1uP3h0OiJmdW5jdGlvbiI9PXR5cGVvZiBuP246UShuKTtyZXR1cm4gdGhpcy5zZWxlY3QoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnNlcnRCZWZvcmUoZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksci5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fG51bGwpfSl9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2god3QpfSxjbG9uZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD9BdDpNdCl9LGRhdHVtOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMucHJvcGVydHkoIl9fZGF0YV9fIix0KTp0aGlzLm5vZGUoKS5fX2RhdGFfX30sb246ZnVuY3Rpb24odCxuLGUpe3ZhciByLGksbz1mdW5jdGlvbih0KXtyZXR1cm4gdC50cmltKCkuc3BsaXQoL158XHMrLykubWFwKGZ1bmN0aW9uKHQpe3ZhciBuPSIiLGU9dC5pbmRleE9mKCIuIik7cmV0dXJuIGU+PTAmJihuPXQuc2xpY2UoZSsxKSx0PXQuc2xpY2UoMCxlKSkse3R5cGU6dCxuYW1lOm59fSl9KHQrIiIpLGE9by5sZW5ndGg7aWYoIShhcmd1bWVudHMubGVuZ3RoPDIpKXtmb3IodT1uP2t0OkV0LG51bGw9PWUmJihlPSExKSxyPTA7cjxhOysrcil0aGlzLmVhY2godShvW3JdLG4sZSkpO3JldHVybiB0aGlzfXZhciB1PXRoaXMubm9kZSgpLl9fb247aWYodSlmb3IodmFyIGYsYz0wLHM9dS5sZW5ndGg7YzxzOysrYylmb3Iocj0wLGY9dVtjXTtyPGE7KytyKWlmKChpPW9bcl0pLnR5cGU9PT1mLnR5cGUmJmkubmFtZT09PWYubmFtZSlyZXR1cm4gZi52YWx1ZX0sZGlzcGF0Y2g6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdGhpcy5lYWNoKCgiZnVuY3Rpb24iPT10eXBlb2Ygbj9mdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBQdCh0aGlzLHQsbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX06ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gUHQodGhpcyx0LG4pfX0pKHQsbikpfX07dmFyIFV0PTA7ZnVuY3Rpb24gcXQoKXtyZXR1cm4gbmV3IE90fWZ1bmN0aW9uIE90KCl7dGhpcy5fPSJAIisoKytVdCkudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIFl0KCl7Zm9yKHZhciBuLGU9dC5ldmVudDtuPWUuc291cmNlRXZlbnQ7KWU9bjtyZXR1cm4gZX1mdW5jdGlvbiBCdCh0LG4pe3ZhciBlPXQub3duZXJTVkdFbGVtZW50fHx0O2lmKGUuY3JlYXRlU1ZHUG9pbnQpe3ZhciByPWUuY3JlYXRlU1ZHUG9pbnQoKTtyZXR1cm4gci54PW4uY2xpZW50WCxyLnk9bi5jbGllbnRZLFsocj1yLm1hdHJpeFRyYW5zZm9ybSh0LmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSkpLngsci55XX12YXIgaT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybltuLmNsaWVudFgtaS5sZWZ0LXQuY2xpZW50TGVmdCxuLmNsaWVudFktaS50b3AtdC5jbGllbnRUb3BdfWZ1bmN0aW9uIEZ0KHQpe3ZhciBuPVl0KCk7cmV0dXJuIG4uY2hhbmdlZFRvdWNoZXMmJihuPW4uY2hhbmdlZFRvdWNoZXNbMF0pLEJ0KHQsbil9ZnVuY3Rpb24gSXQodCxuLGUpe2FyZ3VtZW50cy5sZW5ndGg8MyYmKGU9bixuPVl0KCkuY2hhbmdlZFRvdWNoZXMpO2Zvcih2YXIgcixpPTAsbz1uP24ubGVuZ3RoOjA7aTxvOysraSlpZigocj1uW2ldKS5pZGVudGlmaWVyPT09ZSlyZXR1cm4gQnQodCxyKTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBIdCgpe3QuZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24ganQoKXt0LmV2ZW50LnByZXZlbnREZWZhdWx0KCksdC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBYdCh0KXt2YXIgbj10LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlPUR0KHQpLm9uKCJkcmFnc3RhcnQuZHJhZyIsanQsITApOyJvbnNlbGVjdHN0YXJ0ImluIG4/ZS5vbigic2VsZWN0c3RhcnQuZHJhZyIsanQsITApOihuLl9fbm9zZWxlY3Q9bi5zdHlsZS5Nb3pVc2VyU2VsZWN0LG4uc3R5bGUuTW96VXNlclNlbGVjdD0ibm9uZSIpfWZ1bmN0aW9uIEd0KHQsbil7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1EdCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLG51bGwpO24mJihyLm9uKCJjbGljay5kcmFnIixqdCwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe3Iub24oImNsaWNrLmRyYWciLG51bGwpfSwwKSksIm9uc2VsZWN0c3RhcnQiaW4gZT9yLm9uKCJzZWxlY3RzdGFydC5kcmFnIixudWxsKTooZS5zdHlsZS5Nb3pVc2VyU2VsZWN0PWUuX19ub3NlbGVjdCxkZWxldGUgZS5fX25vc2VsZWN0KX1mdW5jdGlvbiBWdCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gJHQodCxuLGUscixpLG8sYSx1LGYsYyl7dGhpcy50YXJnZXQ9dCx0aGlzLnR5cGU9bix0aGlzLnN1YmplY3Q9ZSx0aGlzLmlkZW50aWZpZXI9cix0aGlzLmFjdGl2ZT1pLHRoaXMueD1vLHRoaXMueT1hLHRoaXMuZHg9dSx0aGlzLmR5PWYsdGhpcy5fPWN9ZnVuY3Rpb24gV3QoKXtyZXR1cm4hdC5ldmVudC5idXR0b259ZnVuY3Rpb24gWnQoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIFF0KG4pe3JldHVybiBudWxsPT1uP3t4OnQuZXZlbnQueCx5OnQuZXZlbnQueX06bn1mdW5jdGlvbiBKdCgpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiBLdCh0LG4sZSl7dC5wcm90b3R5cGU9bi5wcm90b3R5cGU9ZSxlLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gdG4odCxuKXt2YXIgZT1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIHIgaW4gbillW3JdPW5bcl07cmV0dXJuIGV9ZnVuY3Rpb24gbm4oKXt9T3QucHJvdG90eXBlPXF0LnByb3RvdHlwZT17Y29uc3RydWN0b3I6T3QsZ2V0OmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLl87IShuIGluIHQpOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm47cmV0dXJuIHRbbl19LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiB0W3RoaXMuX109bn0scmVtb3ZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl8gaW4gdCYmZGVsZXRlIHRbdGhpcy5fXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ffX0sJHQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fLm9uLmFwcGx5KHRoaXMuXyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcy5fP3RoaXM6dH07dmFyIGVuPSJcXHMqKFsrLV0/XFxkKylcXHMqIixybj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIixvbj0iXFxzKihbKy1dP1xcZCpcXC4/XFxkKyg/OltlRV1bKy1dP1xcZCspPyklXFxzKiIsYW49L14jKFswLTlhLWZdezN9KSQvLHVuPS9eIyhbMC05YS1mXXs2fSkkLyxmbj1uZXcgUmVnRXhwKCJecmdiXFwoIitbZW4sZW4sZW5dKyJcXCkkIiksY249bmV3IFJlZ0V4cCgiXnJnYlxcKCIrW29uLG9uLG9uXSsiXFwpJCIpLHNuPW5ldyBSZWdFeHAoIl5yZ2JhXFwoIitbZW4sZW4sZW4scm5dKyJcXCkkIiksbG49bmV3IFJlZ0V4cCgiXnJnYmFcXCgiK1tvbixvbixvbixybl0rIlxcKSQiKSxobj1uZXcgUmVnRXhwKCJeaHNsXFwoIitbcm4sb24sb25dKyJcXCkkIiksZG49bmV3IFJlZ0V4cCgiXmhzbGFcXCgiK1tybixvbixvbixybl0rIlxcKSQiKSxwbj17YWxpY2VibHVlOjE1NzkyMzgzLGFudGlxdWV3aGl0ZToxNjQ0NDM3NSxhcXVhOjY1NTM1LGFxdWFtYXJpbmU6ODM4ODU2NCxhenVyZToxNTc5NDE3NSxiZWlnZToxNjExOTI2MCxiaXNxdWU6MTY3NzAyNDQsYmxhY2s6MCxibGFuY2hlZGFsbW9uZDoxNjc3MjA0NSxibHVlOjI1NSxibHVldmlvbGV0OjkwNTUyMDIsYnJvd246MTA4MjQyMzQsYnVybHl3b29kOjE0NTk2MjMxLGNhZGV0Ymx1ZTo2MjY2NTI4LGNoYXJ0cmV1c2U6ODM4ODM1MixjaG9jb2xhdGU6MTM3ODk0NzAsY29yYWw6MTY3NDQyNzIsY29ybmZsb3dlcmJsdWU6NjU5MTk4MSxjb3Juc2lsazoxNjc3NTM4OCxjcmltc29uOjE0NDIzMTAwLGN5YW46NjU1MzUsZGFya2JsdWU6MTM5LGRhcmtjeWFuOjM1NzIzLGRhcmtnb2xkZW5yb2Q6MTIwOTI5MzksZGFya2dyYXk6MTExMTkwMTcsZGFya2dyZWVuOjI1NjAwLGRhcmtncmV5OjExMTE5MDE3LGRhcmtraGFraToxMjQzMzI1OSxkYXJrbWFnZW50YTo5MTA5NjQzLGRhcmtvbGl2ZWdyZWVuOjU1OTc5OTksZGFya29yYW5nZToxNjc0NzUyMCxkYXJrb3JjaGlkOjEwMDQwMDEyLGRhcmtyZWQ6OTEwOTUwNCxkYXJrc2FsbW9uOjE1MzA4NDEwLGRhcmtzZWFncmVlbjo5NDE5OTE5LGRhcmtzbGF0ZWJsdWU6NDczNDM0NyxkYXJrc2xhdGVncmF5OjMxMDA0OTUsZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LGxlbW9uY2hpZmZvbjoxNjc3NTg4NSxsaWdodGJsdWU6MTEzOTMyNTQsbGlnaHRjb3JhbDoxNTc2MTUzNixsaWdodGN5YW46MTQ3NDU1OTksbGlnaHRnb2xkZW5yb2R5ZWxsb3c6MTY0NDgyMTAsbGlnaHRncmF5OjEzODgyMzIzLGxpZ2h0Z3JlZW46OTQ5ODI1NixsaWdodGdyZXk6MTM4ODIzMjMsbGlnaHRwaW5rOjE2NzU4NDY1LGxpZ2h0c2FsbW9uOjE2NzUyNzYyLGxpZ2h0c2VhZ3JlZW46MjE0Mjg5MCxsaWdodHNreWJsdWU6ODkwMDM0NixsaWdodHNsYXRlZ3JheTo3ODMzNzUzLGxpZ2h0c2xhdGVncmV5Ojc4MzM3NTMsbGlnaHRzdGVlbGJsdWU6MTE1ODQ3MzQsbGlnaHR5ZWxsb3c6MTY3NzcxODQsbGltZTo2NTI4MCxsaW1lZ3JlZW46MzMyOTMzMCxsaW5lbjoxNjQ0NTY3MCxtYWdlbnRhOjE2NzExOTM1LG1hcm9vbjo4Mzg4NjA4LG1lZGl1bWFxdWFtYXJpbmU6NjczNzMyMixtZWRpdW1ibHVlOjIwNSxtZWRpdW1vcmNoaWQ6MTIyMTE2NjcsbWVkaXVtcHVycGxlOjk2NjI2ODMsbWVkaXVtc2VhZ3JlZW46Mzk3ODA5NyxtZWRpdW1zbGF0ZWJsdWU6ODA4Nzc5MCxtZWRpdW1zcHJpbmdncmVlbjo2NDE1NCxtZWRpdW10dXJxdW9pc2U6NDc3MjMwMCxtZWRpdW12aW9sZXRyZWQ6MTMwNDcxNzMsbWlkbmlnaHRibHVlOjE2NDQ5MTIsbWludGNyZWFtOjE2MTIxODUwLG1pc3R5cm9zZToxNjc3MDI3Myxtb2NjYXNpbjoxNjc3MDIyOSxuYXZham93aGl0ZToxNjc2ODY4NSxuYXZ5OjEyOCxvbGRsYWNlOjE2NjQzNTU4LG9saXZlOjg0MjEzNzYsb2xpdmVkcmFiOjcwNDg3Mzksb3JhbmdlOjE2NzUzOTIwLG9yYW5nZXJlZDoxNjcyOTM0NCxvcmNoaWQ6MTQzMTU3MzQscGFsZWdvbGRlbnJvZDoxNTY1NzEzMCxwYWxlZ3JlZW46MTAwMjU4ODAscGFsZXR1cnF1b2lzZToxMTUyOTk2NixwYWxldmlvbGV0cmVkOjE0MzgxMjAzLHBhcGF5YXdoaXA6MTY3NzMwNzcscGVhY2hwdWZmOjE2NzY3NjczLHBlcnU6MTM0Njg5OTEscGluazoxNjc2MTAzNSxwbHVtOjE0NTI0NjM3LHBvd2RlcmJsdWU6MTE1OTE5MTAscHVycGxlOjgzODg3MzYscmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fTtmdW5jdGlvbiB2bih0KXt2YXIgbjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKG49YW4uZXhlYyh0KSk/bmV3IG1uKChuPXBhcnNlSW50KG5bMV0sMTYpKT4+OCYxNXxuPj40JjI0MCxuPj40JjE1fDI0MCZuLCgxNSZuKTw8NHwxNSZuLDEpOihuPXVuLmV4ZWModCkpP2duKHBhcnNlSW50KG5bMV0sMTYpKToobj1mbi5leGVjKHQpKT9uZXcgbW4oblsxXSxuWzJdLG5bM10sMSk6KG49Y24uZXhlYyh0KSk/bmV3IG1uKDI1NSpuWzFdLzEwMCwyNTUqblsyXS8xMDAsMjU1Km5bM10vMTAwLDEpOihuPXNuLmV4ZWModCkpP3luKG5bMV0sblsyXSxuWzNdLG5bNF0pOihuPWxuLmV4ZWModCkpP3luKDI1NSpuWzFdLzEwMCwyNTUqblsyXS8xMDAsMjU1Km5bM10vMTAwLG5bNF0pOihuPWhuLmV4ZWModCkpP3duKG5bMV0sblsyXS8xMDAsblszXS8xMDAsMSk6KG49ZG4uZXhlYyh0KSk/d24oblsxXSxuWzJdLzEwMCxuWzNdLzEwMCxuWzRdKTpwbi5oYXNPd25Qcm9wZXJ0eSh0KT9nbihwblt0XSk6InRyYW5zcGFyZW50Ij09PXQ/bmV3IG1uKE5hTixOYU4sTmFOLDApOm51bGx9ZnVuY3Rpb24gZ24odCl7cmV0dXJuIG5ldyBtbih0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnQsMSl9ZnVuY3Rpb24geW4odCxuLGUscil7cmV0dXJuIHI8PTAmJih0PW49ZT1OYU4pLG5ldyBtbih0LG4sZSxyKX1mdW5jdGlvbiBfbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIG5ufHwodD12bih0KSksdD9uZXcgbW4oKHQ9dC5yZ2IoKSkucix0LmcsdC5iLHQub3BhY2l0eSk6bmV3IG1ufWZ1bmN0aW9uIGJuKHQsbixlLHIpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9fbih0KTpuZXcgbW4odCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIG1uKHQsbixlLHIpe3RoaXMucj0rdCx0aGlzLmc9K24sdGhpcy5iPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiB4bih0KXtyZXR1cm4oKHQ9TWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpKTwxNj8iMCI6IiIpK3QudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIHduKHQsbixlLHIpe3JldHVybiByPD0wP3Q9bj1lPU5hTjplPD0wfHxlPj0xP3Q9bj1OYU46bjw9MCYmKHQ9TmFOKSxuZXcgQW4odCxuLGUscil9ZnVuY3Rpb24gTW4odCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBbilyZXR1cm4gbmV3IEFuKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIG5ufHwodD12bih0KSksIXQpcmV0dXJuIG5ldyBBbjtpZih0IGluc3RhbmNlb2YgQW4pcmV0dXJuIHQ7dmFyIG49KHQ9dC5yZ2IoKSkuci8yNTUsZT10LmcvMjU1LHI9dC5iLzI1NSxpPU1hdGgubWluKG4sZSxyKSxvPU1hdGgubWF4KG4sZSxyKSxhPU5hTix1PW8taSxmPShvK2kpLzI7cmV0dXJuIHU/KGE9bj09PW8/KGUtcikvdSs2KihlPHIpOmU9PT1vPyhyLW4pL3UrMjoobi1lKS91KzQsdS89ZjwuNT9vK2k6Mi1vLWksYSo9NjApOnU9Zj4wJiZmPDE/MDphLG5ldyBBbihhLHUsZix0Lm9wYWNpdHkpfSh0KTpuZXcgQW4odCxuLGUsbnVsbD09cj8xOnIpfWZ1bmN0aW9uIEFuKHQsbixlLHIpe3RoaXMuaD0rdCx0aGlzLnM9K24sdGhpcy5sPStlLHRoaXMub3BhY2l0eT0rcn1mdW5jdGlvbiBUbih0LG4sZSl7cmV0dXJuIDI1NSoodDw2MD9uKyhlLW4pKnQvNjA6dDwxODA/ZTp0PDI0MD9uKyhlLW4pKigyNDAtdCkvNjA6bil9S3Qobm4sdm4se2Rpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkuaGV4KCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmdiKCkrIiJ9fSksS3QobW4sYm4sdG4obm4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/MS8uNzpNYXRoLnBvdygxLy43LHQpLG5ldyBtbih0aGlzLnIqdCx0aGlzLmcqdCx0aGlzLmIqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8uNzpNYXRoLnBvdyguNyx0KSxuZXcgbW4odGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGRpc3BsYXlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8PXRoaXMuciYmdGhpcy5yPD0yNTUmJjA8PXRoaXMuZyYmdGhpcy5nPD0yNTUmJjA8PXRoaXMuYiYmdGhpcy5iPD0yNTUmJjA8PXRoaXMub3BhY2l0eSYmdGhpcy5vcGFjaXR5PD0xfSxoZXg6ZnVuY3Rpb24oKXtyZXR1cm4iIyIreG4odGhpcy5yKSt4bih0aGlzLmcpK3huKHRoaXMuYil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcGFjaXR5O3JldHVybigxPT09KHQ9aXNOYU4odCk/MTpNYXRoLm1heCgwLE1hdGgubWluKDEsdCkpKT8icmdiKCI6InJnYmEoIikrTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0aGlzLnIpfHwwKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKHRoaXMuZyl8fDApKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQodGhpcy5iKXx8MCkpKygxPT09dD8iKSI6IiwgIit0KyIpIil9fSkpLEt0KEFuLE1uLHRuKG5uLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdD1udWxsPT10PzEvLjc6TWF0aC5wb3coMS8uNyx0KSxuZXcgQW4odGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8uNzpNYXRoLnBvdyguNyx0KSxuZXcgQW4odGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmglMzYwKzM2MCoodGhpcy5oPDApLG49aXNOYU4odCl8fGlzTmFOKHRoaXMucyk/MDp0aGlzLnMsZT10aGlzLmwscj1lKyhlPC41P2U6MS1lKSpuLGk9MiplLXI7cmV0dXJuIG5ldyBtbihUbih0Pj0yNDA/dC0yNDA6dCsxMjAsaSxyKSxUbih0LGksciksVG4odDwxMjA/dCsyNDA6dC0xMjAsaSxyKSx0aGlzLm9wYWNpdHkpfSxkaXNwbGF5YWJsZTpmdW5jdGlvbigpe3JldHVybigwPD10aGlzLnMmJnRoaXMuczw9MXx8aXNOYU4odGhpcy5zKSkmJjA8PXRoaXMubCYmdGhpcy5sPD0xJiYwPD10aGlzLm9wYWNpdHkmJnRoaXMub3BhY2l0eTw9MX19KSk7dmFyIE5uPU1hdGguUEkvMTgwLFNuPTE4MC9NYXRoLlBJLEVuPS45NjQyMixrbj0xLENuPS44MjUyMSxQbj00LzI5LHpuPTYvMjksUm49Myp6bip6bixMbj16bip6bip6bjtmdW5jdGlvbiBEbih0KXtpZih0IGluc3RhbmNlb2YgcW4pcmV0dXJuIG5ldyBxbih0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBqbil7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IHFuKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgbj10LmgqTm47cmV0dXJuIG5ldyBxbih0LmwsTWF0aC5jb3MobikqdC5jLE1hdGguc2luKG4pKnQuYyx0Lm9wYWNpdHkpfXQgaW5zdGFuY2VvZiBtbnx8KHQ9X24odCkpO3ZhciBlLHIsaT1Gbih0LnIpLG89Rm4odC5nKSxhPUZuKHQuYiksdT1PbigoLjIyMjUwNDUqaSsuNzE2ODc4NipvKy4wNjA2MTY5KmEpL2tuKTtyZXR1cm4gaT09PW8mJm89PT1hP2U9cj11OihlPU9uKCguNDM2MDc0NyppKy4zODUwNjQ5Km8rLjE0MzA4MDQqYSkvRW4pLHI9T24oKC4wMTM5MzIyKmkrLjA5NzEwNDUqbysuNzE0MTczMyphKS9DbikpLG5ldyBxbigxMTYqdS0xNiw1MDAqKGUtdSksMjAwKih1LXIpLHQub3BhY2l0eSl9ZnVuY3Rpb24gVW4odCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP0RuKHQpOm5ldyBxbih0LG4sZSxudWxsPT1yPzE6cil9ZnVuY3Rpb24gcW4odCxuLGUscil7dGhpcy5sPSt0LHRoaXMuYT0rbix0aGlzLmI9K2UsdGhpcy5vcGFjaXR5PStyfWZ1bmN0aW9uIE9uKHQpe3JldHVybiB0PkxuP01hdGgucG93KHQsMS8zKTp0L1JuK1BufWZ1bmN0aW9uIFluKHQpe3JldHVybiB0PnpuP3QqdCp0OlJuKih0LVBuKX1mdW5jdGlvbiBCbih0KXtyZXR1cm4gMjU1Kih0PD0uMDAzMTMwOD8xMi45Mip0OjEuMDU1Kk1hdGgucG93KHQsMS8yLjQpLS4wNTUpfWZ1bmN0aW9uIEZuKHQpe3JldHVybih0Lz0yNTUpPD0uMDQwNDU/dC8xMi45MjpNYXRoLnBvdygodCsuMDU1KS8xLjA1NSwyLjQpfWZ1bmN0aW9uIEluKHQpe2lmKHQgaW5zdGFuY2VvZiBqbilyZXR1cm4gbmV3IGpuKHQuaCx0LmMsdC5sLHQub3BhY2l0eSk7aWYodCBpbnN0YW5jZW9mIHFufHwodD1Ebih0KSksMD09PXQuYSYmMD09PXQuYilyZXR1cm4gbmV3IGpuKE5hTiwwLHQubCx0Lm9wYWNpdHkpO3ZhciBuPU1hdGguYXRhbjIodC5iLHQuYSkqU247cmV0dXJuIG5ldyBqbihuPDA/biszNjA6bixNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBIbih0LG4sZSxyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/SW4odCk6bmV3IGpuKHQsbixlLG51bGw9PXI/MTpyKX1mdW5jdGlvbiBqbih0LG4sZSxyKXt0aGlzLmg9K3QsdGhpcy5jPStuLHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K3J9S3QocW4sVW4sdG4obm4se2JyaWdodGVyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcW4odGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5hLHRoaXMuYix0aGlzLm9wYWNpdHkpfSxkYXJrZXI6ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBxbih0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LHJnYjpmdW5jdGlvbigpe3ZhciB0PSh0aGlzLmwrMTYpLzExNixuPWlzTmFOKHRoaXMuYSk/dDp0K3RoaXMuYS81MDAsZT1pc05hTih0aGlzLmIpP3Q6dC10aGlzLmIvMjAwO3JldHVybiBuZXcgbW4oQm4oMy4xMzM4NTYxKihuPUVuKlluKG4pKS0xLjYxNjg2NjcqKHQ9a24qWW4odCkpLS40OTA2MTQ2KihlPUNuKlluKGUpKSksQm4oLS45Nzg3Njg0Km4rMS45MTYxNDE1KnQrLjAzMzQ1NCplKSxCbiguMDcxOTQ1MypuLS4yMjg5OTE0KnQrMS40MDUyNDI3KmUpLHRoaXMub3BhY2l0eSl9fSkpLEt0KGpuLEhuLHRuKG5uLHticmlnaHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGpuKHRoaXMuaCx0aGlzLmMsdGhpcy5sKzE4KihudWxsPT10PzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgam4odGhpcy5oLHRoaXMuYyx0aGlzLmwtMTgqKG51bGw9PXQ/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2I6ZnVuY3Rpb24oKXtyZXR1cm4gRG4odGhpcykucmdiKCl9fSkpO3ZhciBYbj0tLjE0ODYxLEduPTEuNzgyNzcsVm49LS4yOTIyNywkbj0tLjkwNjQ5LFduPTEuOTcyOTQsWm49V24qJG4sUW49V24qR24sSm49R24qVm4tJG4qWG47ZnVuY3Rpb24gS24odCxuLGUscil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2Z1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiB0ZSlyZXR1cm4gbmV3IHRlKHQuaCx0LnMsdC5sLHQub3BhY2l0eSk7dCBpbnN0YW5jZW9mIG1ufHwodD1fbih0KSk7dmFyIG49dC5yLzI1NSxlPXQuZy8yNTUscj10LmIvMjU1LGk9KEpuKnIrWm4qbi1RbiplKS8oSm4rWm4tUW4pLG89ci1pLGE9KFduKihlLWkpLVZuKm8pLyRuLHU9TWF0aC5zcXJ0KGEqYStvKm8pLyhXbippKigxLWkpKSxmPXU/TWF0aC5hdGFuMihhLG8pKlNuLTEyMDpOYU47cmV0dXJuIG5ldyB0ZShmPDA/ZiszNjA6Zix1LGksdC5vcGFjaXR5KX0odCk6bmV3IHRlKHQsbixlLG51bGw9PXI/MTpyKX1mdW5jdGlvbiB0ZSh0LG4sZSxyKXt0aGlzLmg9K3QsdGhpcy5zPStuLHRoaXMubD0rZSx0aGlzLm9wYWNpdHk9K3J9ZnVuY3Rpb24gbmUodCxuLGUscixpKXt2YXIgbz10KnQsYT1vKnQ7cmV0dXJuKCgxLTMqdCszKm8tYSkqbisoNC02Km8rMyphKSplKygxKzMqdCszKm8tMyphKSpyK2EqaSkvNn1mdW5jdGlvbiBlZSh0KXt2YXIgbj10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lPD0wP2U9MDplPj0xPyhlPTEsbi0xKTpNYXRoLmZsb29yKGUqbiksaT10W3JdLG89dFtyKzFdLGE9cj4wP3Rbci0xXToyKmktbyx1PXI8bi0xP3RbcisyXToyKm8taTtyZXR1cm4gbmUoKGUtci9uKSpuLGEsaSxvLHUpfX1mdW5jdGlvbiByZSh0KXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9TWF0aC5mbG9vcigoKGUlPTEpPDA/KytlOmUpKm4pLGk9dFsocituLTEpJW5dLG89dFtyJW5dLGE9dFsocisxKSVuXSx1PXRbKHIrMiklbl07cmV0dXJuIG5lKChlLXIvbikqbixpLG8sYSx1KX19ZnVuY3Rpb24gaWUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIG9lKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0K2Uqbn19ZnVuY3Rpb24gYWUodCxuKXt2YXIgZT1uLXQ7cmV0dXJuIGU/b2UodCxlPjE4MHx8ZTwtMTgwP2UtMzYwKk1hdGgucm91bmQoZS8zNjApOmUpOmllKGlzTmFOKHQpP246dCl9ZnVuY3Rpb24gdWUodCl7cmV0dXJuIDE9PSh0PSt0KT9mZTpmdW5jdGlvbihuLGUpe3JldHVybiBlLW4/ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0PU1hdGgucG93KHQsZSksbj1NYXRoLnBvdyhuLGUpLXQsZT0xL2UsZnVuY3Rpb24ocil7cmV0dXJuIE1hdGgucG93KHQrcipuLGUpfX0obixlLHQpOmllKGlzTmFOKG4pP2U6bil9fWZ1bmN0aW9uIGZlKHQsbil7dmFyIGU9bi10O3JldHVybiBlP29lKHQsZSk6aWUoaXNOYU4odCk/bjp0KX1LdCh0ZSxLbix0bihubix7YnJpZ2h0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9bnVsbD09dD8xLy43Ok1hdGgucG93KDEvLjcsdCksbmV3IHRlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyOmZ1bmN0aW9uKHQpe3JldHVybiB0PW51bGw9PXQ/Ljc6TWF0aC5wb3coLjcsdCksbmV3IHRlKHRoaXMuaCx0aGlzLnMsdGhpcy5sKnQsdGhpcy5vcGFjaXR5KX0scmdiOmZ1bmN0aW9uKCl7dmFyIHQ9aXNOYU4odGhpcy5oKT8wOih0aGlzLmgrMTIwKSpObixuPSt0aGlzLmwsZT1pc05hTih0aGlzLnMpPzA6dGhpcy5zKm4qKDEtbikscj1NYXRoLmNvcyh0KSxpPU1hdGguc2luKHQpO3JldHVybiBuZXcgbW4oMjU1KihuK2UqKFhuKnIrR24qaSkpLDI1NSoobitlKihWbipyKyRuKmkpKSwyNTUqKG4rZSooV24qcikpLHRoaXMub3BhY2l0eSl9fSkpO3ZhciBjZT1mdW5jdGlvbiB0KG4pe3ZhciBlPXVlKG4pO2Z1bmN0aW9uIHIodCxuKXt2YXIgcj1lKCh0PWJuKHQpKS5yLChuPWJuKG4pKS5yKSxpPWUodC5nLG4uZyksbz1lKHQuYixuLmIpLGE9ZmUodC5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0LnI9cihuKSx0Lmc9aShuKSx0LmI9byhuKSx0Lm9wYWNpdHk9YShuKSx0KyIifX1yZXR1cm4gci5nYW1tYT10LHJ9KDEpO2Z1bmN0aW9uIHNlKHQpe3JldHVybiBmdW5jdGlvbihuKXt2YXIgZSxyLGk9bi5sZW5ndGgsbz1uZXcgQXJyYXkoaSksYT1uZXcgQXJyYXkoaSksdT1uZXcgQXJyYXkoaSk7Zm9yKGU9MDtlPGk7KytlKXI9Ym4obltlXSksb1tlXT1yLnJ8fDAsYVtlXT1yLmd8fDAsdVtlXT1yLmJ8fDA7cmV0dXJuIG89dChvKSxhPXQoYSksdT10KHUpLHIub3BhY2l0eT0xLGZ1bmN0aW9uKHQpe3JldHVybiByLnI9byh0KSxyLmc9YSh0KSxyLmI9dSh0KSxyKyIifX19dmFyIGxlPXNlKGVlKSxoZT1zZShyZSk7ZnVuY3Rpb24gZGUodCxuKXt2YXIgZSxyPW4/bi5sZW5ndGg6MCxpPXQ/TWF0aC5taW4ocix0Lmxlbmd0aCk6MCxvPW5ldyBBcnJheShpKSxhPW5ldyBBcnJheShyKTtmb3IoZT0wO2U8aTsrK2Upb1tlXT1tZSh0W2VdLG5bZV0pO2Zvcig7ZTxyOysrZSlhW2VdPW5bZV07cmV0dXJuIGZ1bmN0aW9uKHQpe2ZvcihlPTA7ZTxpOysrZSlhW2VdPW9bZV0odCk7cmV0dXJuIGF9fWZ1bmN0aW9uIHBlKHQsbil7dmFyIGU9bmV3IERhdGU7cmV0dXJuIG4tPXQ9K3QsZnVuY3Rpb24ocil7cmV0dXJuIGUuc2V0VGltZSh0K24qciksZX19ZnVuY3Rpb24gdmUodCxuKXtyZXR1cm4gbi09dD0rdCxmdW5jdGlvbihlKXtyZXR1cm4gdCtuKmV9fWZ1bmN0aW9uIGdlKHQsbil7dmFyIGUscj17fSxpPXt9O2ZvcihlIGluIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHR8fCh0PXt9KSxudWxsIT09biYmIm9iamVjdCI9PXR5cGVvZiBufHwobj17fSksbillIGluIHQ/cltlXT1tZSh0W2VdLG5bZV0pOmlbZV09bltlXTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKGUgaW4gcilpW2VdPXJbZV0odCk7cmV0dXJuIGl9fXZhciB5ZT0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csX2U9bmV3IFJlZ0V4cCh5ZS5zb3VyY2UsImciKTtmdW5jdGlvbiBiZSh0LG4pe3ZhciBlLHIsaSxvPXllLmxhc3RJbmRleD1fZS5sYXN0SW5kZXg9MCxhPS0xLHU9W10sZj1bXTtmb3IodCs9IiIsbis9IiI7KGU9eWUuZXhlYyh0KSkmJihyPV9lLmV4ZWMobikpOykoaT1yLmluZGV4KT5vJiYoaT1uLnNsaWNlKG8saSksdVthXT91W2FdKz1pOnVbKythXT1pKSwoZT1lWzBdKT09PShyPXJbMF0pP3VbYV0/dVthXSs9cjp1WysrYV09cjoodVsrK2FdPW51bGwsZi5wdXNoKHtpOmEseDp2ZShlLHIpfSkpLG89X2UubGFzdEluZGV4O3JldHVybiBvPG4ubGVuZ3RoJiYoaT1uLnNsaWNlKG8pLHVbYV0/dVthXSs9aTp1WysrYV09aSksdS5sZW5ndGg8Mj9mWzBdP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdChuKSsiIn19KGZbMF0ueCk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fShuKToobj1mLmxlbmd0aCxmdW5jdGlvbih0KXtmb3IodmFyIGUscj0wO3I8bjsrK3IpdVsoZT1mW3JdKS5pXT1lLngodCk7cmV0dXJuIHUuam9pbigiIil9KX1mdW5jdGlvbiBtZSh0LG4pe3ZhciBlLHI9dHlwZW9mIG47cmV0dXJuIG51bGw9PW58fCJib29sZWFuIj09PXI/aWUobik6KCJudW1iZXIiPT09cj92ZToic3RyaW5nIj09PXI/KGU9dm4obikpPyhuPWUsY2UpOmJlOm4gaW5zdGFuY2VvZiB2bj9jZTpuIGluc3RhbmNlb2YgRGF0ZT9wZTpBcnJheS5pc0FycmF5KG4pP2RlOiJmdW5jdGlvbiIhPXR5cGVvZiBuLnZhbHVlT2YmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLnRvU3RyaW5nfHxpc05hTihuKT9nZTp2ZSkodCxuKX1mdW5jdGlvbiB4ZSh0LG4pe3JldHVybiBuLT10PSt0LGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLnJvdW5kKHQrbiplKX19dmFyIHdlLE1lLEFlLFRlLE5lPTE4MC9NYXRoLlBJLFNlPXt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHJvdGF0ZTowLHNrZXdYOjAsc2NhbGVYOjEsc2NhbGVZOjF9O2Z1bmN0aW9uIEVlKHQsbixlLHIsaSxvKXt2YXIgYSx1LGY7cmV0dXJuKGE9TWF0aC5zcXJ0KHQqdCtuKm4pKSYmKHQvPWEsbi89YSksKGY9dCplK24qcikmJihlLT10KmYsci09bipmKSwodT1NYXRoLnNxcnQoZSplK3IqcikpJiYoZS89dSxyLz11LGYvPXUpLHQqcjxuKmUmJih0PS10LG49LW4sZj0tZixhPS1hKSx7dHJhbnNsYXRlWDppLHRyYW5zbGF0ZVk6byxyb3RhdGU6TWF0aC5hdGFuMihuLHQpKk5lLHNrZXdYOk1hdGguYXRhbihmKSpOZSxzY2FsZVg6YSxzY2FsZVk6dX19ZnVuY3Rpb24ga2UodCxuLGUscil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5sZW5ndGg/dC5wb3AoKSsiICI6IiJ9cmV0dXJuIGZ1bmN0aW9uKG8sYSl7dmFyIHU9W10sZj1bXTtyZXR1cm4gbz10KG8pLGE9dChhKSxmdW5jdGlvbih0LHIsaSxvLGEsdSl7aWYodCE9PWl8fHIhPT1vKXt2YXIgZj1hLnB1c2goInRyYW5zbGF0ZSgiLG51bGwsbixudWxsLGUpO3UucHVzaCh7aTpmLTQseDp2ZSh0LGkpfSx7aTpmLTIseDp2ZShyLG8pfSl9ZWxzZShpfHxvKSYmYS5wdXNoKCJ0cmFuc2xhdGUoIitpK24rbytlKX0oby50cmFuc2xhdGVYLG8udHJhbnNsYXRlWSxhLnRyYW5zbGF0ZVgsYS50cmFuc2xhdGVZLHUsZiksZnVuY3Rpb24odCxuLGUsbyl7dCE9PW4/KHQtbj4xODA/bis9MzYwOm4tdD4xODAmJih0Kz0zNjApLG8ucHVzaCh7aTplLnB1c2goaShlKSsicm90YXRlKCIsbnVsbCxyKS0yLHg6dmUodCxuKX0pKTpuJiZlLnB1c2goaShlKSsicm90YXRlKCIrbityKX0oby5yb3RhdGUsYS5yb3RhdGUsdSxmKSxmdW5jdGlvbih0LG4sZSxvKXt0IT09bj9vLnB1c2goe2k6ZS5wdXNoKGkoZSkrInNrZXdYKCIsbnVsbCxyKS0yLHg6dmUodCxuKX0pOm4mJmUucHVzaChpKGUpKyJza2V3WCgiK24rcil9KG8uc2tld1gsYS5za2V3WCx1LGYpLGZ1bmN0aW9uKHQsbixlLHIsbyxhKXtpZih0IT09ZXx8biE9PXIpe3ZhciB1PW8ucHVzaChpKG8pKyJzY2FsZSgiLG51bGwsIiwiLG51bGwsIikiKTthLnB1c2goe2k6dS00LHg6dmUodCxlKX0se2k6dS0yLHg6dmUobixyKX0pfWVsc2UgMT09PWUmJjE9PT1yfHxvLnB1c2goaShvKSsic2NhbGUoIitlKyIsIityKyIpIil9KG8uc2NhbGVYLG8uc2NhbGVZLGEuc2NhbGVYLGEuc2NhbGVZLHUsZiksbz1hPW51bGwsZnVuY3Rpb24odCl7Zm9yKHZhciBuLGU9LTEscj1mLmxlbmd0aDsrK2U8cjspdVsobj1mW2VdKS5pXT1uLngodCk7cmV0dXJuIHUuam9pbigiIil9fX12YXIgQ2U9a2UoZnVuY3Rpb24odCl7cmV0dXJuIm5vbmUiPT09dD9TZTood2V8fCh3ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSxNZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsQWU9ZG9jdW1lbnQuZGVmYXVsdFZpZXcpLHdlLnN0eWxlLnRyYW5zZm9ybT10LHQ9QWUuZ2V0Q29tcHV0ZWRTdHlsZShNZS5hcHBlbmRDaGlsZCh3ZSksbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNmb3JtIiksTWUucmVtb3ZlQ2hpbGQod2UpLEVlKCsodD10LnNsaWNlKDcsLTEpLnNwbGl0KCIsIikpWzBdLCt0WzFdLCt0WzJdLCt0WzNdLCt0WzRdLCt0WzVdKSl9LCJweCwgIiwicHgpIiwiZGVnKSIpLFBlPWtlKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1NlOihUZXx8KFRlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJnIikpLFRlLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIix0KSwodD1UZS50cmFuc2Zvcm0uYmFzZVZhbC5jb25zb2xpZGF0ZSgpKT9FZSgodD10Lm1hdHJpeCkuYSx0LmIsdC5jLHQuZCx0LmUsdC5mKTpTZSl9LCIsICIsIikiLCIpIiksemU9TWF0aC5TUVJUMixSZT0yLExlPTQsRGU9MWUtMTI7ZnVuY3Rpb24gVWUodCl7cmV0dXJuKCh0PU1hdGguZXhwKHQpKSsxL3QpLzJ9ZnVuY3Rpb24gcWUodCxuKXt2YXIgZSxyLGk9dFswXSxvPXRbMV0sYT10WzJdLHU9blswXSxmPW5bMV0sYz1uWzJdLHM9dS1pLGw9Zi1vLGg9cypzK2wqbDtpZihoPERlKXI9TWF0aC5sb2coYy9hKS96ZSxlPWZ1bmN0aW9uKHQpe3JldHVybltpK3QqcyxvK3QqbCxhKk1hdGguZXhwKHplKnQqcildfTtlbHNle3ZhciBkPU1hdGguc3FydChoKSxwPShjKmMtYSphK0xlKmgpLygyKmEqUmUqZCksdj0oYypjLWEqYS1MZSpoKS8oMipjKlJlKmQpLGc9TWF0aC5sb2coTWF0aC5zcXJ0KHAqcCsxKS1wKSx5PU1hdGgubG9nKE1hdGguc3FydCh2KnYrMSktdik7cj0oeS1nKS96ZSxlPWZ1bmN0aW9uKHQpe3ZhciBuLGU9dCpyLHU9VWUoZyksZj1hLyhSZSpkKSoodSoobj16ZSplK2csKChuPU1hdGguZXhwKDIqbikpLTEpLyhuKzEpKS1mdW5jdGlvbih0KXtyZXR1cm4oKHQ9TWF0aC5leHAodCkpLTEvdCkvMn0oZykpO3JldHVybltpK2YqcyxvK2YqbCxhKnUvVWUoemUqZStnKV19fXJldHVybiBlLmR1cmF0aW9uPTFlMypyLGV9ZnVuY3Rpb24gT2UodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9dCgobj1NbihuKSkuaCwoZT1NbihlKSkuaCksaT1mZShuLnMsZS5zKSxvPWZlKG4ubCxlLmwpLGE9ZmUobi5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuLmg9cih0KSxuLnM9aSh0KSxuLmw9byh0KSxuLm9wYWNpdHk9YSh0KSxuKyIifX19dmFyIFllPU9lKGFlKSxCZT1PZShmZSk7ZnVuY3Rpb24gRmUodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9dCgobj1IbihuKSkuaCwoZT1IbihlKSkuaCksaT1mZShuLmMsZS5jKSxvPWZlKG4ubCxlLmwpLGE9ZmUobi5vcGFjaXR5LGUub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuLmg9cih0KSxuLmM9aSh0KSxuLmw9byh0KSxuLm9wYWNpdHk9YSh0KSxuKyIifX19dmFyIEllPUZlKGFlKSxIZT1GZShmZSk7ZnVuY3Rpb24gamUodCl7cmV0dXJuIGZ1bmN0aW9uIG4oZSl7ZnVuY3Rpb24gcihuLHIpe3ZhciBpPXQoKG49S24obikpLmgsKHI9S24ocikpLmgpLG89ZmUobi5zLHIucyksYT1mZShuLmwsci5sKSx1PWZlKG4ub3BhY2l0eSxyLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gbi5oPWkodCksbi5zPW8odCksbi5sPWEoTWF0aC5wb3codCxlKSksbi5vcGFjaXR5PXUodCksbisiIn19cmV0dXJuIGU9K2Usci5nYW1tYT1uLHJ9KDEpfXZhciBYZT1qZShhZSksR2U9amUoZmUpO3ZhciBWZSwkZSxXZT0wLFplPTAsUWU9MCxKZT0xZTMsS2U9MCx0cj0wLG5yPTAsZXI9Im9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2Uubm93P3BlcmZvcm1hbmNlOkRhdGUscnI9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHdpbmRvdyk6ZnVuY3Rpb24odCl7c2V0VGltZW91dCh0LDE3KX07ZnVuY3Rpb24gaXIoKXtyZXR1cm4gdHJ8fChycihvciksdHI9ZXIubm93KCkrbnIpfWZ1bmN0aW9uIG9yKCl7dHI9MH1mdW5jdGlvbiBhcigpe3RoaXMuX2NhbGw9dGhpcy5fdGltZT10aGlzLl9uZXh0PW51bGx9ZnVuY3Rpb24gdXIodCxuLGUpe3ZhciByPW5ldyBhcjtyZXR1cm4gci5yZXN0YXJ0KHQsbixlKSxyfWZ1bmN0aW9uIGZyKCl7aXIoKSwrK1dlO2Zvcih2YXIgdCxuPVZlO247KSh0PXRyLW4uX3RpbWUpPj0wJiZuLl9jYWxsLmNhbGwobnVsbCx0KSxuPW4uX25leHQ7LS1XZX1mdW5jdGlvbiBjcigpe3RyPShLZT1lci5ub3coKSkrbnIsV2U9WmU9MDt0cnl7ZnIoKX1maW5hbGx5e1dlPTAsZnVuY3Rpb24oKXt2YXIgdCxuLGU9VmUscj0xLzA7Zm9yKDtlOyllLl9jYWxsPyhyPmUuX3RpbWUmJihyPWUuX3RpbWUpLHQ9ZSxlPWUuX25leHQpOihuPWUuX25leHQsZS5fbmV4dD1udWxsLGU9dD90Ll9uZXh0PW46VmU9bik7JGU9dCxscihyKX0oKSx0cj0wfX1mdW5jdGlvbiBzcigpe3ZhciB0PWVyLm5vdygpLG49dC1LZTtuPkplJiYobnItPW4sS2U9dCl9ZnVuY3Rpb24gbHIodCl7V2V8fChaZSYmKFplPWNsZWFyVGltZW91dChaZSkpLHQtdHI+MjQ/KHQ8MS8wJiYoWmU9c2V0VGltZW91dChjcix0LWVyLm5vdygpLW5yKSksUWUmJihRZT1jbGVhckludGVydmFsKFFlKSkpOihRZXx8KEtlPWVyLm5vdygpLFFlPXNldEludGVydmFsKHNyLEplKSksV2U9MSxycihjcikpKX1mdW5jdGlvbiBocih0LG4sZSl7dmFyIHI9bmV3IGFyO3JldHVybiBuPW51bGw9PW4/MDorbixyLnJlc3RhcnQoZnVuY3Rpb24oZSl7ci5zdG9wKCksdChlK24pfSxuLGUpLHJ9YXIucHJvdG90eXBlPXVyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6YXIscmVzdGFydDpmdW5jdGlvbih0LG4sZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2FsbGJhY2sgaXMgbm90IGEgZnVuY3Rpb24iKTtlPShudWxsPT1lP2lyKCk6K2UpKyhudWxsPT1uPzA6K24pLHRoaXMuX25leHR8fCRlPT09dGhpc3x8KCRlPyRlLl9uZXh0PXRoaXM6VmU9dGhpcywkZT10aGlzKSx0aGlzLl9jYWxsPXQsdGhpcy5fdGltZT1lLGxyKCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsJiYodGhpcy5fY2FsbD1udWxsLHRoaXMuX3RpbWU9MS8wLGxyKCkpfX07dmFyIGRyPUkoInN0YXJ0IiwiZW5kIiwiaW50ZXJydXB0IikscHI9W10sdnI9MCxncj0xLHlyPTIsX3I9Myxicj00LG1yPTUseHI9NjtmdW5jdGlvbiB3cih0LG4sZSxyLGksbyl7dmFyIGE9dC5fX3RyYW5zaXRpb247aWYoYSl7aWYoZSBpbiBhKXJldHVybn1lbHNlIHQuX190cmFuc2l0aW9uPXt9OyFmdW5jdGlvbih0LG4sZSl7dmFyIHIsaT10Ll9fdHJhbnNpdGlvbjtmdW5jdGlvbiBvKGYpe3ZhciBjLHMsbCxoO2lmKGUuc3RhdGUhPT1ncilyZXR1cm4gdSgpO2ZvcihjIGluIGkpaWYoKGg9aVtjXSkubmFtZT09PWUubmFtZSl7aWYoaC5zdGF0ZT09PV9yKXJldHVybiBocihvKTtoLnN0YXRlPT09YnI/KGguc3RhdGU9eHIsaC50aW1lci5zdG9wKCksaC5vbi5jYWxsKCJpbnRlcnJ1cHQiLHQsdC5fX2RhdGFfXyxoLmluZGV4LGguZ3JvdXApLGRlbGV0ZSBpW2NdKTorYzxuJiYoaC5zdGF0ZT14cixoLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtjXSl9aWYoaHIoZnVuY3Rpb24oKXtlLnN0YXRlPT09X3ImJihlLnN0YXRlPWJyLGUudGltZXIucmVzdGFydChhLGUuZGVsYXksZS50aW1lKSxhKGYpKX0pLGUuc3RhdGU9eXIsZS5vbi5jYWxsKCJzdGFydCIsdCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksZS5zdGF0ZT09PXlyKXtmb3IoZS5zdGF0ZT1fcixyPW5ldyBBcnJheShsPWUudHdlZW4ubGVuZ3RoKSxjPTAscz0tMTtjPGw7KytjKShoPWUudHdlZW5bY10udmFsdWUuY2FsbCh0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSkmJihyWysrc109aCk7ci5sZW5ndGg9cysxfX1mdW5jdGlvbiBhKG4pe2Zvcih2YXIgaT1uPGUuZHVyYXRpb24/ZS5lYXNlLmNhbGwobnVsbCxuL2UuZHVyYXRpb24pOihlLnRpbWVyLnJlc3RhcnQodSksZS5zdGF0ZT1tciwxKSxvPS0xLGE9ci5sZW5ndGg7KytvPGE7KXJbb10uY2FsbChudWxsLGkpO2Uuc3RhdGU9PT1tciYmKGUub24uY2FsbCgiZW5kIix0LHQuX19kYXRhX18sZS5pbmRleCxlLmdyb3VwKSx1KCkpfWZ1bmN0aW9uIHUoKXtmb3IodmFyIHIgaW4gZS5zdGF0ZT14cixlLnRpbWVyLnN0b3AoKSxkZWxldGUgaVtuXSxpKXJldHVybjtkZWxldGUgdC5fX3RyYW5zaXRpb259aVtuXT1lLGUudGltZXI9dXIoZnVuY3Rpb24odCl7ZS5zdGF0ZT1ncixlLnRpbWVyLnJlc3RhcnQobyxlLmRlbGF5LGUudGltZSksZS5kZWxheTw9dCYmbyh0LWUuZGVsYXkpfSwwLGUudGltZSl9KHQsZSx7bmFtZTpuLGluZGV4OnIsZ3JvdXA6aSxvbjpkcix0d2Vlbjpwcix0aW1lOm8udGltZSxkZWxheTpvLmRlbGF5LGR1cmF0aW9uOm8uZHVyYXRpb24sZWFzZTpvLmVhc2UsdGltZXI6bnVsbCxzdGF0ZTp2cn0pfWZ1bmN0aW9uIE1yKHQsbil7dmFyIGU9VHIodCxuKTtpZihlLnN0YXRlPnZyKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgc2NoZWR1bGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gQXIodCxuKXt2YXIgZT1Ucih0LG4pO2lmKGUuc3RhdGU+eXIpdGhyb3cgbmV3IEVycm9yKCJ0b28gbGF0ZTsgYWxyZWFkeSBzdGFydGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gVHIodCxuKXt2YXIgZT10Ll9fdHJhbnNpdGlvbjtpZighZXx8IShlPWVbbl0pKXRocm93IG5ldyBFcnJvcigidHJhbnNpdGlvbiBub3QgZm91bmQiKTtyZXR1cm4gZX1mdW5jdGlvbiBOcih0LG4pe3ZhciBlLHIsaSxvPXQuX190cmFuc2l0aW9uLGE9ITA7aWYobyl7Zm9yKGkgaW4gbj1udWxsPT1uP251bGw6bisiIixvKShlPW9baV0pLm5hbWU9PT1uPyhyPWUuc3RhdGU+eXImJmUuc3RhdGU8bXIsZS5zdGF0ZT14cixlLnRpbWVyLnN0b3AoKSxyJiZlLm9uLmNhbGwoImludGVycnVwdCIsdCx0Ll9fZGF0YV9fLGUuaW5kZXgsZS5ncm91cCksZGVsZXRlIG9baV0pOmE9ITE7YSYmZGVsZXRlIHQuX190cmFuc2l0aW9ufX1mdW5jdGlvbiBTcih0LG4sZSl7dmFyIHI9dC5faWQ7cmV0dXJuIHQuZWFjaChmdW5jdGlvbigpe3ZhciB0PUFyKHRoaXMscik7KHQudmFsdWV8fCh0LnZhbHVlPXt9KSlbbl09ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbih0KXtyZXR1cm4gVHIodCxyKS52YWx1ZVtuXX19ZnVuY3Rpb24gRXIodCxuKXt2YXIgZTtyZXR1cm4oIm51bWJlciI9PXR5cGVvZiBuP3ZlOm4gaW5zdGFuY2VvZiB2bj9jZTooZT12bihuKSk/KG49ZSxjZSk6YmUpKHQsbil9dmFyIGtyPUx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcjt2YXIgQ3I9MDtmdW5jdGlvbiBQcih0LG4sZSxyKXt0aGlzLl9ncm91cHM9dCx0aGlzLl9wYXJlbnRzPW4sdGhpcy5fbmFtZT1lLHRoaXMuX2lkPXJ9ZnVuY3Rpb24genIodCl7cmV0dXJuIEx0KCkudHJhbnNpdGlvbih0KX1mdW5jdGlvbiBScigpe3JldHVybisrQ3J9dmFyIExyPUx0LnByb3RvdHlwZTtmdW5jdGlvbiBEcih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdDotLXQqKDItdCkrMSkvMn1mdW5jdGlvbiBVcih0KXtyZXR1cm4oKHQqPTIpPD0xP3QqdCp0Oih0LT0yKSp0KnQrMikvMn1Qci5wcm90b3R5cGU9enIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpQcixzZWxlY3Q6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZSxlPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1RKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz1uZXcgQXJyYXkoaSksYT0wO2E8aTsrK2EpZm9yKHZhciB1LGYsYz1yW2FdLHM9Yy5sZW5ndGgsbD1vW2FdPW5ldyBBcnJheShzKSxoPTA7aDxzOysraCkodT1jW2hdKSYmKGY9dC5jYWxsKHUsdS5fX2RhdGFfXyxoLGMpKSYmKCJfX2RhdGFfXyJpbiB1JiYoZi5fX2RhdGFfXz11Ll9fZGF0YV9fKSxsW2hdPWYsd3IobFtoXSxuLGUsaCxsLFRyKHUsZSkpKTtyZXR1cm4gbmV3IFByKG8sdGhpcy5fcGFyZW50cyxuLGUpfSxzZWxlY3RBbGw6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fbmFtZSxlPXRoaXMuX2lkOyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1LKHQpKTtmb3IodmFyIHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz1bXSxhPVtdLHU9MDt1PGk7Kyt1KWZvcih2YXIgZixjPXJbdV0scz1jLmxlbmd0aCxsPTA7bDxzOysrbClpZihmPWNbbF0pe2Zvcih2YXIgaCxkPXQuY2FsbChmLGYuX19kYXRhX18sbCxjKSxwPVRyKGYsZSksdj0wLGc9ZC5sZW5ndGg7djxnOysrdikoaD1kW3ZdKSYmd3IoaCxuLGUsdixkLHApO28ucHVzaChkKSxhLnB1c2goZil9cmV0dXJuIG5ldyBQcihvLGEsbixlKX0sZmlsdGVyOmZ1bmN0aW9uKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1ydCh0KSk7Zm9yKHZhciBuPXRoaXMuX2dyb3VwcyxlPW4ubGVuZ3RoLHI9bmV3IEFycmF5KGUpLGk9MDtpPGU7KytpKWZvcih2YXIgbyxhPW5baV0sdT1hLmxlbmd0aCxmPXJbaV09W10sYz0wO2M8dTsrK2MpKG89YVtjXSkmJnQuY2FsbChvLG8uX19kYXRhX18sYyxhKSYmZi5wdXNoKG8pO3JldHVybiBuZXcgUHIocix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxtZXJnZTpmdW5jdGlvbih0KXtpZih0Ll9pZCE9PXRoaXMuX2lkKXRocm93IG5ldyBFcnJvcjtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGU9dC5fZ3JvdXBzLHI9bi5sZW5ndGgsaT1lLmxlbmd0aCxvPU1hdGgubWluKHIsaSksYT1uZXcgQXJyYXkociksdT0wO3U8bzsrK3UpZm9yKHZhciBmLGM9blt1XSxzPWVbdV0sbD1jLmxlbmd0aCxoPWFbdV09bmV3IEFycmF5KGwpLGQ9MDtkPGw7KytkKShmPWNbZF18fHNbZF0pJiYoaFtkXT1mKTtmb3IoO3U8cjsrK3UpYVt1XT1uW3VdO3JldHVybiBuZXcgUHIoYSx0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGtyKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX0sdHJhbnNpdGlvbjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9uYW1lLG49dGhpcy5faWQsZT1ScigpLHI9dGhpcy5fZ3JvdXBzLGk9ci5sZW5ndGgsbz0wO288aTsrK28pZm9yKHZhciBhLHU9cltvXSxmPXUubGVuZ3RoLGM9MDtjPGY7KytjKWlmKGE9dVtjXSl7dmFyIHM9VHIoYSxuKTt3cihhLHQsZSxjLHUse3RpbWU6cy50aW1lK3MuZGVsYXkrcy5kdXJhdGlvbixkZWxheTowLGR1cmF0aW9uOnMuZHVyYXRpb24sZWFzZTpzLmVhc2V9KX1yZXR1cm4gbmV3IFByKHIsdGhpcy5fcGFyZW50cyx0LGUpfSxjYWxsOkxyLmNhbGwsbm9kZXM6THIubm9kZXMsbm9kZTpMci5ub2RlLHNpemU6THIuc2l6ZSxlbXB0eTpMci5lbXB0eSxlYWNoOkxyLmVhY2gsb246ZnVuY3Rpb24odCxuKXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aDwyP1RyKHRoaXMubm9kZSgpLGUpLm9uLm9uKHQpOnRoaXMuZWFjaChmdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvPWZ1bmN0aW9uKHQpe3JldHVybih0KyIiKS50cmltKCkuc3BsaXQoL158XHMrLykuZXZlcnkoZnVuY3Rpb24odCl7dmFyIG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG4+PTAmJih0PXQuc2xpY2UoMCxuKSksIXR8fCJzdGFydCI9PT10fSl9KG4pP01yOkFyO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPW8odGhpcyx0KSx1PWEub247dSE9PXImJihpPShyPXUpLmNvcHkoKSkub24obixlKSxhLm9uPWl9fShlLHQsbikpfSxhdHRyOmZ1bmN0aW9uKHQsbil7dmFyIGU9JCh0KSxyPSJ0cmFuc2Zvcm0iPT09ZT9QZTpFcjtyZXR1cm4gdGhpcy5hdHRyVHdlZW4odCwiZnVuY3Rpb24iPT10eXBlb2Ygbj8oZS5sb2NhbD9mdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvO3JldHVybiBmdW5jdGlvbigpe3ZhciBhLHU9ZSh0aGlzKTtpZihudWxsIT11KXJldHVybihhPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKSk9PT11P251bGw6YT09PXImJnU9PT1pP286bz1uKHI9YSxpPXUpO3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19OmZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGEsdT1lKHRoaXMpO2lmKG51bGwhPXUpcmV0dXJuKGE9dGhpcy5nZXRBdHRyaWJ1dGUodCkpPT09dT9udWxsOmE9PT1yJiZ1PT09aT9vOm89bihyPWEsaT11KTt0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KX19KShlLHIsU3IodGhpcywiYXR0ci4iK3QsbikpOm51bGw9PW4/KGUubG9jYWw/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpfX06ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fSkoZSk6KGUubG9jYWw/ZnVuY3Rpb24odCxuLGUpe3ZhciByLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG89dGhpcy5nZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwpO3JldHVybiBvPT09ZT9udWxsOm89PT1yP2k6aT1uKHI9byxlKX19OmZ1bmN0aW9uKHQsbixlKXt2YXIgcixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBvPT09ZT9udWxsOm89PT1yP2k6aT1uKHI9byxlKX19KShlLHIsbisiIikpfSxhdHRyVHdlZW46ZnVuY3Rpb24odCxuKXt2YXIgZT0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZihudWxsPT1uKXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3ZhciByPSQodCk7cmV0dXJuIHRoaXMudHdlZW4oZSwoci5sb2NhbD9mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzLHI9bi5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe2Uuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLHIobikpfX1yZXR1cm4gZS5fdmFsdWU9bixlfTpmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUoKXt2YXIgZT10aGlzLHI9bi5hcHBseShlLGFyZ3VtZW50cyk7cmV0dXJuIHImJmZ1bmN0aW9uKG4pe2Uuc2V0QXR0cmlidXRlKHQscihuKSl9fXJldHVybiBlLl92YWx1ZT1uLGV9KShyLG4pKX0sc3R5bGU6ZnVuY3Rpb24odCxuLGUpe3ZhciByPSJ0cmFuc2Zvcm0iPT0odCs9IiIpP0NlOkVyO3JldHVybiBudWxsPT1uP3RoaXMuc3R5bGVUd2Vlbih0LGZ1bmN0aW9uKHQsbil7dmFyIGUscixpO3JldHVybiBmdW5jdGlvbigpe3ZhciBvPWx0KHRoaXMsdCksYT0odGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KSxsdCh0aGlzLHQpKTtyZXR1cm4gbz09PWE/bnVsbDpvPT09ZSYmYT09PXI/aTppPW4oZT1vLHI9YSl9fSh0LHIpKS5vbigiZW5kLnN0eWxlLiIrdCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX0odCkpOnRoaXMuc3R5bGVUd2Vlbih0LCJmdW5jdGlvbiI9PXR5cGVvZiBuP2Z1bmN0aW9uKHQsbixlKXt2YXIgcixpLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9bHQodGhpcyx0KSx1PWUodGhpcyk7cmV0dXJuIG51bGw9PXUmJih0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLHU9bHQodGhpcyx0KSksYT09PXU/bnVsbDphPT09ciYmdT09PWk/bzpvPW4ocj1hLGk9dSl9fSh0LHIsU3IodGhpcywic3R5bGUuIit0LG4pKTpmdW5jdGlvbih0LG4sZSl7dmFyIHIsaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1sdCh0aGlzLHQpO3JldHVybiBvPT09ZT9udWxsOm89PT1yP2k6aT1uKHI9byxlKX19KHQscixuKyIiKSxlKX0sc3R5bGVUd2VlbjpmdW5jdGlvbih0LG4sZSl7dmFyIHI9InN0eWxlLiIrKHQrPSIiKTtpZihhcmd1bWVudHMubGVuZ3RoPDIpcmV0dXJuKHI9dGhpcy50d2VlbihyKSkmJnIuX3ZhbHVlO2lmKG51bGw9PW4pcmV0dXJuIHRoaXMudHdlZW4ocixudWxsKTtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHRoaXMudHdlZW4ocixmdW5jdGlvbih0LG4sZSl7ZnVuY3Rpb24gcigpe3ZhciByPXRoaXMsaT1uLmFwcGx5KHIsYXJndW1lbnRzKTtyZXR1cm4gaSYmZnVuY3Rpb24obil7ci5zdHlsZS5zZXRQcm9wZXJ0eSh0LGkobiksZSl9fXJldHVybiByLl92YWx1ZT1uLHJ9KHQsbixudWxsPT1lPyIiOmUpKX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50d2VlbigidGV4dCIsImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PW51bGw9PW4/IiI6bn19KFNyKHRoaXMsInRleHQiLHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fShudWxsPT10PyIiOnQrIiIpKX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24oImVuZC5yZW1vdmUiLCh0PXRoaXMuX2lkLGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5wYXJlbnROb2RlO2Zvcih2YXIgZSBpbiB0aGlzLl9fdHJhbnNpdGlvbilpZigrZSE9PXQpcmV0dXJuO24mJm4ucmVtb3ZlQ2hpbGQodGhpcyl9KSk7dmFyIHR9LHR3ZWVuOmZ1bmN0aW9uKHQsbil7dmFyIGU9dGhpcy5faWQ7aWYodCs9IiIsYXJndW1lbnRzLmxlbmd0aDwyKXtmb3IodmFyIHIsaT1Ucih0aGlzLm5vZGUoKSxlKS50d2VlbixvPTAsYT1pLmxlbmd0aDtvPGE7KytvKWlmKChyPWlbb10pLm5hbWU9PT10KXJldHVybiByLnZhbHVlO3JldHVybiBudWxsfXJldHVybiB0aGlzLmVhY2goKG51bGw9PW4/ZnVuY3Rpb24odCxuKXt2YXIgZSxyO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPUFyKHRoaXMsdCksbz1pLnR3ZWVuO2lmKG8hPT1lKWZvcih2YXIgYT0wLHU9KHI9ZT1vKS5sZW5ndGg7YTx1OysrYSlpZihyW2FdLm5hbWU9PT1uKXsocj1yLnNsaWNlKCkpLnNwbGljZShhLDEpO2JyZWFrfWkudHdlZW49cn19OmZ1bmN0aW9uKHQsbixlKXt2YXIgcixpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1Bcih0aGlzLHQpLGE9by50d2VlbjtpZihhIT09cil7aT0ocj1hKS5zbGljZSgpO2Zvcih2YXIgdT17bmFtZTpuLHZhbHVlOmV9LGY9MCxjPWkubGVuZ3RoO2Y8YzsrK2YpaWYoaVtmXS5uYW1lPT09bil7aVtmXT11O2JyZWFrfWY9PT1jJiZpLnB1c2godSl9by50d2Vlbj1pfX0pKGUsdCxuKSl9LGRlbGF5OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtNcih0aGlzLHQpLmRlbGF5PStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19OmZ1bmN0aW9uKHQsbil7cmV0dXJuIG49K24sZnVuY3Rpb24oKXtNcih0aGlzLHQpLmRlbGF5PW59fSkobix0KSk6VHIodGhpcy5ub2RlKCksbikuZGVsYXl9LGR1cmF0aW9uOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgoImZ1bmN0aW9uIj09dHlwZW9mIHQ/ZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24oKXtBcih0aGlzLHQpLmR1cmF0aW9uPStuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19OmZ1bmN0aW9uKHQsbil7cmV0dXJuIG49K24sZnVuY3Rpb24oKXtBcih0aGlzLHQpLmR1cmF0aW9uPW59fSkobix0KSk6VHIodGhpcy5ub2RlKCksbikuZHVyYXRpb259LGVhc2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKGZ1bmN0aW9uKHQsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe0FyKHRoaXMsdCkuZWFzZT1ufX0obix0KSk6VHIodGhpcy5ub2RlKCksbikuZWFzZX19O3ZhciBxcj1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIE1hdGgucG93KHQsbil9cmV0dXJuIG49K24sZS5leHBvbmVudD10LGV9KDMpLE9yPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gMS1NYXRoLnBvdygxLXQsbil9cmV0dXJuIG49K24sZS5leHBvbmVudD10LGV9KDMpLFlyPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KHQsbik6Mi1NYXRoLnBvdygyLXQsbikpLzJ9cmV0dXJuIG49K24sZS5leHBvbmVudD10LGV9KDMpLEJyPU1hdGguUEksRnI9QnIvMjtmdW5jdGlvbiBJcih0KXtyZXR1cm4oMS1NYXRoLmNvcyhCcip0KSkvMn1mdW5jdGlvbiBIcih0KXtyZXR1cm4oKHQqPTIpPD0xP01hdGgucG93KDIsMTAqdC0xMCk6Mi1NYXRoLnBvdygyLDEwLTEwKnQpKS8yfWZ1bmN0aW9uIGpyKHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBYcj00LzExLEdyPTYvMTEsVnI9OC8xMSwkcj0uNzUsV3I9OS8xMSxacj0xMC8xMSxRcj0uOTM3NSxKcj0yMS8yMixLcj02My82NCx0aT0xL1hyL1hyO2Z1bmN0aW9uIG5pKHQpe3JldHVybih0PSt0KTxYcj90aSp0KnQ6dDxWcj90aSoodC09R3IpKnQrJHI6dDxacj90aSoodC09V3IpKnQrUXI6dGkqKHQtPUpyKSp0K0tyfXZhciBlaT1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIHQqdCooKG4rMSkqdC1uKX1yZXR1cm4gbj0rbixlLm92ZXJzaG9vdD10LGV9KDEuNzAxNTgpLHJpPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4tLXQqdCooKG4rMSkqdCtuKSsxfXJldHVybiBuPStuLGUub3ZlcnNob290PXQsZX0oMS43MDE1OCksaWk9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybigodCo9Mik8MT90KnQqKChuKzEpKnQtbik6KHQtPTIpKnQqKChuKzEpKnQrbikrMikvMn1yZXR1cm4gbj0rbixlLm92ZXJzaG9vdD10LGV9KDEuNzAxNTgpLG9pPTIqTWF0aC5QSSxhaT1mdW5jdGlvbiB0KG4sZSl7dmFyIHI9TWF0aC5hc2luKDEvKG49TWF0aC5tYXgoMSxuKSkpKihlLz1vaSk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gbipNYXRoLnBvdygyLDEwKi0tdCkqTWF0aC5zaW4oKHItdCkvZSl9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSpvaSl9LGkucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LGl9KDEsLjMpLHVpPWZ1bmN0aW9uIHQobixlKXt2YXIgcj1NYXRoLmFzaW4oMS8obj1NYXRoLm1heCgxLG4pKSkqKGUvPW9pKTtmdW5jdGlvbiBpKHQpe3JldHVybiAxLW4qTWF0aC5wb3coMiwtMTAqKHQ9K3QpKSpNYXRoLnNpbigodCtyKS9lKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24obil7cmV0dXJuIHQobixlKm9pKX0saS5wZXJpb2Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHQobixlKX0saX0oMSwuMyksZmk9ZnVuY3Rpb24gdChuLGUpe3ZhciByPU1hdGguYXNpbigxLyhuPU1hdGgubWF4KDEsbikpKSooZS89b2kpO2Z1bmN0aW9uIGkodCl7cmV0dXJuKCh0PTIqdC0xKTwwP24qTWF0aC5wb3coMiwxMCp0KSpNYXRoLnNpbigoci10KS9lKToyLW4qTWF0aC5wb3coMiwtMTAqdCkqTWF0aC5zaW4oKHIrdCkvZSkpLzJ9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKG4pe3JldHVybiB0KG4sZSpvaSl9LGkucGVyaW9kPWZ1bmN0aW9uKGUpe3JldHVybiB0KG4sZSl9LGl9KDEsLjMpLGNpPXt0aW1lOm51bGwsZGVsYXk6MCxkdXJhdGlvbjoyNTAsZWFzZTpVcn07ZnVuY3Rpb24gc2kodCxuKXtmb3IodmFyIGU7IShlPXQuX190cmFuc2l0aW9uKXx8IShlPWVbbl0pOylpZighKHQ9dC5wYXJlbnROb2RlKSlyZXR1cm4gY2kudGltZT1pcigpLGNpO3JldHVybiBlfUx0LnByb3RvdHlwZS5pbnRlcnJ1cHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe05yKHRoaXMsdCl9KX0sTHQucHJvdG90eXBlLnRyYW5zaXRpb249ZnVuY3Rpb24odCl7dmFyIG4sZTt0IGluc3RhbmNlb2YgUHI/KG49dC5faWQsdD10Ll9uYW1lKToobj1ScigpLChlPWNpKS50aW1lPWlyKCksdD1udWxsPT10P251bGw6dCsiIik7Zm9yKHZhciByPXRoaXMuX2dyb3VwcyxpPXIubGVuZ3RoLG89MDtvPGk7KytvKWZvcih2YXIgYSx1PXJbb10sZj11Lmxlbmd0aCxjPTA7YzxmOysrYykoYT11W2NdKSYmd3IoYSx0LG4sYyx1LGV8fHNpKGEsbikpO3JldHVybiBuZXcgUHIocix0aGlzLl9wYXJlbnRzLHQsbil9O3ZhciBsaT1bbnVsbF07ZnVuY3Rpb24gaGkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGRpKHQsbixlKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1uLHRoaXMuc2VsZWN0aW9uPWV9ZnVuY3Rpb24gcGkoKXt0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHZpKCl7dC5ldmVudC5wcmV2ZW50RGVmYXVsdCgpLHQuZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIGdpPXtuYW1lOiJkcmFnIn0seWk9e25hbWU6InNwYWNlIn0sX2k9e25hbWU6ImhhbmRsZSJ9LGJpPXtuYW1lOiJjZW50ZXIifSxtaT17bmFtZToieCIsaGFuZGxlczpbImUiLCJ3Il0ubWFwKEVpKSxpbnB1dDpmdW5jdGlvbih0LG4pe3JldHVybiB0JiZbW3RbMF0sblswXVsxXV0sW3RbMV0sblsxXVsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzBdLHRbMV1bMF1dfX0seGk9e25hbWU6InkiLGhhbmRsZXM6WyJuIiwicyJdLm1hcChFaSksaW5wdXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdCYmW1tuWzBdWzBdLHRbMF1dLFtuWzFdWzBdLHRbMV1dXX0sb3V0cHV0OmZ1bmN0aW9uKHQpe3JldHVybiB0JiZbdFswXVsxXSx0WzFdWzFdXX19LHdpPXtuYW1lOiJ4eSIsaGFuZGxlczpbIm4iLCJlIiwicyIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLm1hcChFaSksaW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdH19LE1pPXtvdmVybGF5OiJjcm9zc2hhaXIiLHNlbGVjdGlvbjoibW92ZSIsbjoibnMtcmVzaXplIixlOiJldy1yZXNpemUiLHM6Im5zLXJlc2l6ZSIsdzoiZXctcmVzaXplIixudzoibndzZS1yZXNpemUiLG5lOiJuZXN3LXJlc2l6ZSIsc2U6Im53c2UtcmVzaXplIixzdzoibmVzdy1yZXNpemUifSxBaT17ZToidyIsdzoiZSIsbnc6Im5lIixuZToibnciLHNlOiJzdyIsc3c6InNlIn0sVGk9e246InMiLHM6Im4iLG53OiJzdyIsbmU6InNlIixzZToibmUiLHN3OiJudyJ9LE5pPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjpudWxsLGU6MSxzOm51bGwsdzotMSxudzotMSxuZToxLHNlOjEsc3c6LTF9LFNpPXtvdmVybGF5OjEsc2VsZWN0aW9uOjEsbjotMSxlOm51bGwsczoxLHc6bnVsbCxudzotMSxuZTotMSxzZToxLHN3OjF9O2Z1bmN0aW9uIEVpKHQpe3JldHVybnt0eXBlOnR9fWZ1bmN0aW9uIGtpKCl7cmV0dXJuIXQuZXZlbnQuYnV0dG9ufWZ1bmN0aW9uIENpKCl7dmFyIHQ9dGhpcy5vd25lclNWR0VsZW1lbnR8fHRoaXM7cmV0dXJuW1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIFBpKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gemkodCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBSaShuKXt2YXIgZSxyPUNpLGk9a2ksbz1JKHUsInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxhPTY7ZnVuY3Rpb24gdSh0KXt2YXIgZT10LnByb3BlcnR5KCJfX2JydXNoIixoKS5zZWxlY3RBbGwoIi5vdmVybGF5IikuZGF0YShbRWkoIm92ZXJsYXkiKV0pO2UuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm92ZXJsYXkiKS5hdHRyKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmF0dHIoImN1cnNvciIsTWkub3ZlcmxheSkubWVyZ2UoZSkuZWFjaChmdW5jdGlvbigpe3ZhciB0PVBpKHRoaXMpLmV4dGVudDtEdCh0aGlzKS5hdHRyKCJ4Iix0WzBdWzBdKS5hdHRyKCJ5Iix0WzBdWzFdKS5hdHRyKCJ3aWR0aCIsdFsxXVswXS10WzBdWzBdKS5hdHRyKCJoZWlnaHQiLHRbMV1bMV0tdFswXVsxXSl9KSx0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLmRhdGEoW0VpKCJzZWxlY3Rpb24iKV0pLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJzZWxlY3Rpb24iKS5hdHRyKCJjdXJzb3IiLE1pLnNlbGVjdGlvbikuYXR0cigiZmlsbCIsIiM3NzciKS5hdHRyKCJmaWxsLW9wYWNpdHkiLC4zKS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigic2hhcGUtcmVuZGVyaW5nIiwiY3Jpc3BFZGdlcyIpO3ZhciByPXQuc2VsZWN0QWxsKCIuaGFuZGxlIikuZGF0YShuLmhhbmRsZXMsZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0pO3IuZXhpdCgpLnJlbW92ZSgpLHIuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24odCl7cmV0dXJuImhhbmRsZSBoYW5kbGUtLSIrdC50eXBlfSkuYXR0cigiY3Vyc29yIixmdW5jdGlvbih0KXtyZXR1cm4gTWlbdC50eXBlXX0pLHQuZWFjaChmKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKS5vbigibW91c2Vkb3duLmJydXNoIHRvdWNoc3RhcnQuYnJ1c2giLGwpfWZ1bmN0aW9uIGYoKXt2YXIgdD1EdCh0aGlzKSxuPVBpKHRoaXMpLnNlbGVjdGlvbjtuPyh0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixuWzBdWzBdKS5hdHRyKCJ5IixuWzBdWzFdKS5hdHRyKCJ3aWR0aCIsblsxXVswXS1uWzBdWzBdKS5hdHRyKCJoZWlnaHQiLG5bMV1bMV0tblswXVsxXSksdC5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlW3QudHlwZS5sZW5ndGgtMV0/blsxXVswXS1hLzI6blswXVswXS1hLzJ9KS5hdHRyKCJ5IixmdW5jdGlvbih0KXtyZXR1cm4icyI9PT10LnR5cGVbMF0/blsxXVsxXS1hLzI6blswXVsxXS1hLzJ9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24odCl7cmV0dXJuIm4iPT09dC50eXBlfHwicyI9PT10LnR5cGU/blsxXVswXS1uWzBdWzBdK2E6YX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuImUiPT09dC50eXBlfHwidyI9PT10LnR5cGU/blsxXVsxXS1uWzBdWzFdK2E6YX0pKTp0LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiwuaGFuZGxlIikuc3R5bGUoImRpc3BsYXkiLCJub25lIikuYXR0cigieCIsbnVsbCkuYXR0cigieSIsbnVsbCkuYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCl9ZnVuY3Rpb24gYyh0LG4pe3JldHVybiB0Ll9fYnJ1c2guZW1pdHRlcnx8bmV3IHModCxuKX1mdW5jdGlvbiBzKHQsbil7dGhpcy50aGF0PXQsdGhpcy5hcmdzPW4sdGhpcy5zdGF0ZT10Ll9fYnJ1c2gsdGhpcy5hY3RpdmU9MH1mdW5jdGlvbiBsKCl7aWYodC5ldmVudC50b3VjaGVzKXtpZih0LmV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aDx0LmV2ZW50LnRvdWNoZXMubGVuZ3RoKXJldHVybiB2aSgpfWVsc2UgaWYoZSlyZXR1cm47aWYoaS5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciByLG8sYSx1LHMsbCxoLGQscCx2LGcseSxfLGI9dGhpcyxtPXQuZXZlbnQudGFyZ2V0Ll9fZGF0YV9fLnR5cGUseD0ic2VsZWN0aW9uIj09PSh0LmV2ZW50Lm1ldGFLZXk/bT0ib3ZlcmxheSI6bSk/Z2k6dC5ldmVudC5hbHRLZXk/Ymk6X2ksdz1uPT09eGk/bnVsbDpOaVttXSxNPW49PT1taT9udWxsOlNpW21dLEE9UGkoYiksVD1BLmV4dGVudCxOPUEuc2VsZWN0aW9uLFM9VFswXVswXSxFPVRbMF1bMV0saz1UWzFdWzBdLEM9VFsxXVsxXSxQPXcmJk0mJnQuZXZlbnQuc2hpZnRLZXksej1GdChiKSxSPXosTD1jKGIsYXJndW1lbnRzKS5iZWZvcmVzdGFydCgpOyJvdmVybGF5Ij09PW0/QS5zZWxlY3Rpb249Tj1bW3I9bj09PXhpP1M6elswXSxhPW49PT1taT9FOnpbMV1dLFtzPW49PT14aT9rOnIsaD1uPT09bWk/QzphXV06KHI9TlswXVswXSxhPU5bMF1bMV0scz1OWzFdWzBdLGg9TlsxXVsxXSksbz1yLHU9YSxsPXMsZD1oO3ZhciBEPUR0KGIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLFU9RC5zZWxlY3RBbGwoIi5vdmVybGF5IikuYXR0cigiY3Vyc29yIixNaVttXSk7aWYodC5ldmVudC50b3VjaGVzKUQub24oInRvdWNobW92ZS5icnVzaCIsTywhMCkub24oInRvdWNoZW5kLmJydXNoIHRvdWNoY2FuY2VsLmJydXNoIixCLCEwKTtlbHNle3ZhciBxPUR0KHQuZXZlbnQudmlldykub24oImtleWRvd24uYnJ1c2giLGZ1bmN0aW9uKCl7c3dpdGNoKHQuZXZlbnQua2V5Q29kZSl7Y2FzZSAxNjpQPXcmJk07YnJlYWs7Y2FzZSAxODp4PT09X2kmJih3JiYocz1sLXAqdyxyPW8rcCp3KSxNJiYoaD1kLXYqTSxhPXUrdipNKSx4PWJpLFkoKSk7YnJlYWs7Y2FzZSAzMjp4IT09X2kmJnghPT1iaXx8KHc8MD9zPWwtcDp3PjAmJihyPW8tcCksTTwwP2g9ZC12Ok0+MCYmKGE9dS12KSx4PXlpLFUuYXR0cigiY3Vyc29yIixNaS5zZWxlY3Rpb24pLFkoKSk7YnJlYWs7ZGVmYXVsdDpyZXR1cm59dmkoKX0sITApLm9uKCJrZXl1cC5icnVzaCIsZnVuY3Rpb24oKXtzd2l0Y2godC5ldmVudC5rZXlDb2RlKXtjYXNlIDE2OlAmJih5PV89UD0hMSxZKCkpO2JyZWFrO2Nhc2UgMTg6eD09PWJpJiYodzwwP3M9bDp3PjAmJihyPW8pLE08MD9oPWQ6TT4wJiYoYT11KSx4PV9pLFkoKSk7YnJlYWs7Y2FzZSAzMjp4PT09eWkmJih0LmV2ZW50LmFsdEtleT8odyYmKHM9bC1wKncscj1vK3AqdyksTSYmKGg9ZC12Kk0sYT11K3YqTSkseD1iaSk6KHc8MD9zPWw6dz4wJiYocj1vKSxNPDA/aD1kOk0+MCYmKGE9dSkseD1faSksVS5hdHRyKCJjdXJzb3IiLE1pW21dKSxZKCkpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufXZpKCl9LCEwKS5vbigibW91c2Vtb3ZlLmJydXNoIixPLCEwKS5vbigibW91c2V1cC5icnVzaCIsQiwhMCk7WHQodC5ldmVudC52aWV3KX1waSgpLE5yKGIpLGYuY2FsbChiKSxMLnN0YXJ0KCl9ZnVuY3Rpb24gTygpe3ZhciB0PUZ0KGIpOyFQfHx5fHxffHwoTWF0aC5hYnModFswXS1SWzBdKT5NYXRoLmFicyh0WzFdLVJbMV0pP189ITA6eT0hMCksUj10LGc9ITAsdmkoKSxZKCl9ZnVuY3Rpb24gWSgpe3ZhciB0O3N3aXRjaChwPVJbMF0telswXSx2PVJbMV0telsxXSx4KXtjYXNlIHlpOmNhc2UgZ2k6dyYmKHA9TWF0aC5tYXgoUy1yLE1hdGgubWluKGstcyxwKSksbz1yK3AsbD1zK3ApLE0mJih2PU1hdGgubWF4KEUtYSxNYXRoLm1pbihDLWgsdikpLHU9YSt2LGQ9aCt2KTticmVhaztjYXNlIF9pOnc8MD8ocD1NYXRoLm1heChTLXIsTWF0aC5taW4oay1yLHApKSxvPXIrcCxsPXMpOnc+MCYmKHA9TWF0aC5tYXgoUy1zLE1hdGgubWluKGstcyxwKSksbz1yLGw9cytwKSxNPDA/KHY9TWF0aC5tYXgoRS1hLE1hdGgubWluKEMtYSx2KSksdT1hK3YsZD1oKTpNPjAmJih2PU1hdGgubWF4KEUtaCxNYXRoLm1pbihDLWgsdikpLHU9YSxkPWgrdik7YnJlYWs7Y2FzZSBiaTp3JiYobz1NYXRoLm1heChTLE1hdGgubWluKGssci1wKncpKSxsPU1hdGgubWF4KFMsTWF0aC5taW4oayxzK3AqdykpKSxNJiYodT1NYXRoLm1heChFLE1hdGgubWluKEMsYS12Kk0pKSxkPU1hdGgubWF4KEUsTWF0aC5taW4oQyxoK3YqTSkpKX1sPG8mJih3Kj0tMSx0PXIscj1zLHM9dCx0PW8sbz1sLGw9dCxtIGluIEFpJiZVLmF0dHIoImN1cnNvciIsTWlbbT1BaVttXV0pKSxkPHUmJihNKj0tMSx0PWEsYT1oLGg9dCx0PXUsdT1kLGQ9dCxtIGluIFRpJiZVLmF0dHIoImN1cnNvciIsTWlbbT1UaVttXV0pKSxBLnNlbGVjdGlvbiYmKE49QS5zZWxlY3Rpb24pLHkmJihvPU5bMF1bMF0sbD1OWzFdWzBdKSxfJiYodT1OWzBdWzFdLGQ9TlsxXVsxXSksTlswXVswXT09PW8mJk5bMF1bMV09PT11JiZOWzFdWzBdPT09bCYmTlsxXVsxXT09PWR8fChBLnNlbGVjdGlvbj1bW28sdV0sW2wsZF1dLGYuY2FsbChiKSxMLmJydXNoKCkpfWZ1bmN0aW9uIEIoKXtpZihwaSgpLHQuZXZlbnQudG91Y2hlcyl7aWYodC5ldmVudC50b3VjaGVzLmxlbmd0aClyZXR1cm47ZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2U9bnVsbH0sNTAwKSxELm9uKCJ0b3VjaG1vdmUuYnJ1c2ggdG91Y2hlbmQuYnJ1c2ggdG91Y2hjYW5jZWwuYnJ1c2giLG51bGwpfWVsc2UgR3QodC5ldmVudC52aWV3LGcpLHEub24oImtleWRvd24uYnJ1c2gga2V5dXAuYnJ1c2ggbW91c2Vtb3ZlLmJydXNoIG1vdXNldXAuYnJ1c2giLG51bGwpO0QuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKSxVLmF0dHIoImN1cnNvciIsTWkub3ZlcmxheSksQS5zZWxlY3Rpb24mJihOPUEuc2VsZWN0aW9uKSx6aShOKSYmKEEuc2VsZWN0aW9uPW51bGwsZi5jYWxsKGIpKSxMLmVuZCgpfX1mdW5jdGlvbiBoKCl7dmFyIHQ9dGhpcy5fX2JydXNofHx7c2VsZWN0aW9uOm51bGx9O3JldHVybiB0LmV4dGVudD1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LmRpbT1uLHR9cmV0dXJuIHUubW92ZT1mdW5jdGlvbih0LGUpe3Quc2VsZWN0aW9uP3Qub24oInN0YXJ0LmJydXNoIixmdW5jdGlvbigpe2ModGhpcyxhcmd1bWVudHMpLmJlZm9yZXN0YXJ0KCkuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIixmdW5jdGlvbigpe2ModGhpcyxhcmd1bWVudHMpLmVuZCgpfSkudHdlZW4oImJydXNoIixmdW5jdGlvbigpe3ZhciB0PXRoaXMscj10Ll9fYnJ1c2gsaT1jKHQsYXJndW1lbnRzKSxvPXIuc2VsZWN0aW9uLGE9bi5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLHIuZXh0ZW50KSx1PW1lKG8sYSk7ZnVuY3Rpb24gcyhuKXtyLnNlbGVjdGlvbj0xPT09biYmemkoYSk/bnVsbDp1KG4pLGYuY2FsbCh0KSxpLmJydXNoKCl9cmV0dXJuIG8mJmE/czpzKDEpfSk6dC5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLHI9dGhpcy5fX2JydXNoLGk9bi5pbnB1dCgiZnVuY3Rpb24iPT10eXBlb2YgZT9lLmFwcGx5KHRoaXMsdCk6ZSxyLmV4dGVudCksbz1jKHRoaXMsdCkuYmVmb3Jlc3RhcnQoKTtOcih0aGlzKSxyLnNlbGVjdGlvbj1udWxsPT1pfHx6aShpKT9udWxsOmksZi5jYWxsKHRoaXMpLG8uc3RhcnQoKS5icnVzaCgpLmVuZCgpfSl9LHMucHJvdG90eXBlPXtiZWZvcmVzdGFydDpmdW5jdGlvbigpe3JldHVybiAxPT0rK3RoaXMuYWN0aXZlJiYodGhpcy5zdGF0ZS5lbWl0dGVyPXRoaXMsdGhpcy5zdGFydGluZz0hMCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGluZyYmKHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIpKSx0aGlzfSxicnVzaDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVtaXQoImJydXNoIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihkZWxldGUgdGhpcy5zdGF0ZS5lbWl0dGVyLHRoaXMuZW1pdCgiZW5kIikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24odCl7Q3QobmV3IGRpKHUsdCxuLm91dHB1dCh0aGlzLnN0YXRlLnNlbGVjdGlvbikpLG8uYXBwbHksbyxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSx1LmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmhpKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSx1KTpyfSx1LmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmhpKCEhdCksdSk6aX0sdS5oYW5kbGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSt0LHUpOmF9LHUub249ZnVuY3Rpb24oKXt2YXIgdD1vLm9uLmFwcGx5KG8sYXJndW1lbnRzKTtyZXR1cm4gdD09PW8/dTp0fSx1fXZhciBMaT1NYXRoLmNvcyxEaT1NYXRoLnNpbixVaT1NYXRoLlBJLHFpPVVpLzIsT2k9MipVaSxZaT1NYXRoLm1heDt2YXIgQmk9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIEZpKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgSWk9TWF0aC5QSSxIaT0yKklpLGppPUhpLTFlLTY7ZnVuY3Rpb24gWGkoKXt0aGlzLl94MD10aGlzLl95MD10aGlzLl94MT10aGlzLl95MT1udWxsLHRoaXMuXz0iIn1mdW5jdGlvbiBHaSgpe3JldHVybiBuZXcgWGl9ZnVuY3Rpb24gVmkodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uICRpKHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBXaSh0KXtyZXR1cm4gdC5yYWRpdXN9ZnVuY3Rpb24gWmkodCl7cmV0dXJuIHQuc3RhcnRBbmdsZX1mdW5jdGlvbiBRaSh0KXtyZXR1cm4gdC5lbmRBbmdsZX1YaS5wcm90b3R5cGU9R2kucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpYaSxtb3ZlVG86ZnVuY3Rpb24odCxuKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K24pfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5feDEmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LG4pe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rbil9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxuLGUscil7dGhpcy5fKz0iUSIrICt0KyIsIisgK24rIiwiKyh0aGlzLl94MT0rZSkrIiwiKyh0aGlzLl95MT0rcil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxuLGUscixpLG8pe3RoaXMuXys9IkMiKyArdCsiLCIrICtuKyIsIisgK2UrIiwiKyArcisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPStvKX0sYXJjVG86ZnVuY3Rpb24odCxuLGUscixpKXt0PSt0LG49K24sZT0rZSxyPStyLGk9K2k7dmFyIG89dGhpcy5feDEsYT10aGlzLl95MSx1PWUtdCxmPXItbixjPW8tdCxzPWEtbixsPWMqYytzKnM7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKG51bGw9PT10aGlzLl94MSl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1uKTtlbHNlIGlmKGw+MWUtNilpZihNYXRoLmFicyhzKnUtZipjKT4xZS02JiZpKXt2YXIgaD1lLW8sZD1yLWEscD11KnUrZipmLHY9aCpoK2QqZCxnPU1hdGguc3FydChwKSx5PU1hdGguc3FydChsKSxfPWkqTWF0aC50YW4oKElpLU1hdGguYWNvcygocCtsLXYpLygyKmcqeSkpKS8yKSxiPV8veSxtPV8vZztNYXRoLmFicyhiLTEpPjFlLTYmJih0aGlzLl8rPSJMIisodCtiKmMpKyIsIisobitiKnMpKSx0aGlzLl8rPSJBIitpKyIsIitpKyIsMCwwLCIrICsocypoPmMqZCkrIiwiKyh0aGlzLl94MT10K20qdSkrIiwiKyh0aGlzLl95MT1uK20qZil9ZWxzZSB0aGlzLl8rPSJMIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1uKTtlbHNlO30sYXJjOmZ1bmN0aW9uKHQsbixlLHIsaSxvKXt0PSt0LG49K247dmFyIGE9KGU9K2UpKk1hdGguY29zKHIpLHU9ZSpNYXRoLnNpbihyKSxmPXQrYSxjPW4rdSxzPTFebyxsPW8/ci1pOmktcjtpZihlPDApdGhyb3cgbmV3IEVycm9yKCJuZWdhdGl2ZSByYWRpdXM6ICIrZSk7bnVsbD09PXRoaXMuX3gxP3RoaXMuXys9Ik0iK2YrIiwiK2M6KE1hdGguYWJzKHRoaXMuX3gxLWYpPjFlLTZ8fE1hdGguYWJzKHRoaXMuX3kxLWMpPjFlLTYpJiYodGhpcy5fKz0iTCIrZisiLCIrYyksZSYmKGw8MCYmKGw9bCVIaStIaSksbD5qaT90aGlzLl8rPSJBIitlKyIsIitlKyIsMCwxLCIrcysiLCIrKHQtYSkrIiwiKyhuLXUpKyJBIitlKyIsIitlKyIsMCwxLCIrcysiLCIrKHRoaXMuX3gxPWYpKyIsIisodGhpcy5feTE9Yyk6bD4xZS02JiYodGhpcy5fKz0iQSIrZSsiLCIrZSsiLDAsIisgKyhsPj1JaSkrIiwiK3MrIiwiKyh0aGlzLl94MT10K2UqTWF0aC5jb3MoaSkpKyIsIisodGhpcy5feTE9bitlKk1hdGguc2luKGkpKSkpfSxyZWN0OmZ1bmN0aW9uKHQsbixlLHIpe3RoaXMuXys9Ik0iKyh0aGlzLl94MD10aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MD10aGlzLl95MT0rbikrImgiKyArZSsidiIrICtyKyJoIistZSsiWiJ9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2Z1bmN0aW9uIEppKCl7fWZ1bmN0aW9uIEtpKHQsbil7dmFyIGU9bmV3IEppO2lmKHQgaW5zdGFuY2VvZiBKaSl0LmVhY2goZnVuY3Rpb24odCxuKXtlLnNldChuLHQpfSk7ZWxzZSBpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcixpPS0xLG89dC5sZW5ndGg7aWYobnVsbD09bilmb3IoOysraTxvOyllLnNldChpLHRbaV0pO2Vsc2UgZm9yKDsrK2k8bzspZS5zZXQobihyPXRbaV0saSx0KSxyKX1lbHNlIGlmKHQpZm9yKHZhciBhIGluIHQpZS5zZXQoYSx0W2FdKTtyZXR1cm4gZX1mdW5jdGlvbiB0bygpe3JldHVybnt9fWZ1bmN0aW9uIG5vKHQsbixlKXt0W25dPWV9ZnVuY3Rpb24gZW8oKXtyZXR1cm4gS2koKX1mdW5jdGlvbiBybyh0LG4sZSl7dC5zZXQobixlKX1mdW5jdGlvbiBpbygpe31KaS5wcm90b3R5cGU9S2kucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpKaSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIiQiK3QgaW4gdGhpc30sZ2V0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzWyIkIit0XX0sc2V0OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHRoaXNbIiQiK3RdPW4sdGhpc30scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBuPSIkIit0O3JldHVybiBuIGluIHRoaXMmJmRlbGV0ZSB0aGlzW25dfSxjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKSIkIj09PXRbMF0mJmRlbGV0ZSB0aGlzW3RdfSxrZXlzOmZ1bmN0aW9uKCl7dmFyIHQ9W107Zm9yKHZhciBuIGluIHRoaXMpIiQiPT09blswXSYmdC5wdXNoKG4uc2xpY2UoMSkpO3JldHVybiB0fSx2YWx1ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gdGhpcykiJCI9PT1uWzBdJiZ0LnB1c2godGhpc1tuXSk7cmV0dXJuIHR9LGVudHJpZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtmb3IodmFyIG4gaW4gdGhpcykiJCI9PT1uWzBdJiZ0LnB1c2goe2tleTpuLnNsaWNlKDEpLHZhbHVlOnRoaXNbbl19KTtyZXR1cm4gdH0sc2l6ZTpmdW5jdGlvbigpe3ZhciB0PTA7Zm9yKHZhciBuIGluIHRoaXMpIiQiPT09blswXSYmKyt0O3JldHVybiB0fSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzKWlmKCIkIj09PXRbMF0pcmV0dXJuITE7cmV0dXJuITB9LGVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBuIGluIHRoaXMpIiQiPT09blswXSYmdCh0aGlzW25dLG4uc2xpY2UoMSksdGhpcyl9fTt2YXIgb289S2kucHJvdG90eXBlO2Z1bmN0aW9uIGFvKHQsbil7dmFyIGU9bmV3IGlvO2lmKHQgaW5zdGFuY2VvZiBpbyl0LmVhY2goZnVuY3Rpb24odCl7ZS5hZGQodCl9KTtlbHNlIGlmKHQpe3ZhciByPS0xLGk9dC5sZW5ndGg7aWYobnVsbD09bilmb3IoOysrcjxpOyllLmFkZCh0W3JdKTtlbHNlIGZvcig7KytyPGk7KWUuYWRkKG4odFtyXSxyLHQpKX1yZXR1cm4gZX1pby5wcm90b3R5cGU9YW8ucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjppbyxoYXM6b28uaGFzLGFkZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpc1siJCIrKHQrPSIiKV09dCx0aGlzfSxyZW1vdmU6b28ucmVtb3ZlLGNsZWFyOm9vLmNsZWFyLHZhbHVlczpvby5rZXlzLHNpemU6b28uc2l6ZSxlbXB0eTpvby5lbXB0eSxlYWNoOm9vLmVhY2h9O3ZhciB1bz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gZm8odCxuKXtyZXR1cm4gdC1ufWZ1bmN0aW9uIGNvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBzbyh0LG4pe2Zvcih2YXIgZSxyPS0xLGk9bi5sZW5ndGg7KytyPGk7KWlmKGU9bG8odCxuW3JdKSlyZXR1cm4gZTtyZXR1cm4gMH1mdW5jdGlvbiBsbyh0LG4pe2Zvcih2YXIgZT1uWzBdLHI9blsxXSxpPS0xLG89MCxhPXQubGVuZ3RoLHU9YS0xO288YTt1PW8rKyl7dmFyIGY9dFtvXSxjPWZbMF0scz1mWzFdLGw9dFt1XSxoPWxbMF0sZD1sWzFdO2lmKGhvKGYsbCxuKSlyZXR1cm4gMDtzPnIhPWQ+ciYmZTwoaC1jKSooci1zKS8oZC1zKStjJiYoaT0taSl9cmV0dXJuIGl9ZnVuY3Rpb24gaG8odCxuLGUpe3ZhciByLGksbyxhO3JldHVybiBmdW5jdGlvbih0LG4sZSl7cmV0dXJuKG5bMF0tdFswXSkqKGVbMV0tdFsxXSk9PShlWzBdLXRbMF0pKihuWzFdLXRbMV0pfSh0LG4sZSkmJihpPXRbcj0rKHRbMF09PT1uWzBdKV0sbz1lW3JdLGE9bltyXSxpPD1vJiZvPD1hfHxhPD1vJiZvPD1pKX1mdW5jdGlvbiBwbygpe312YXIgdm89W1tdLFtbWzEsMS41XSxbLjUsMV1dXSxbW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbLjUsMV1dXSxbW1sxLC41XSxbMS41LDFdXV0sW1tbMSwxLjVdLFsuNSwxXV0sW1sxLC41XSxbMS41LDFdXV0sW1tbMSwuNV0sWzEsMS41XV1dLFtbWzEsLjVdLFsuNSwxXV1dLFtbWy41LDFdLFsxLC41XV1dLFtbWzEsMS41XSxbMSwuNV1dXSxbW1suNSwxXSxbMSwuNV1dLFtbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbMS41LDFdXV0sW1tbLjUsMV0sWzEsMS41XV1dLFtdXTtmdW5jdGlvbiBnbygpe3ZhciB0PTEsbj0xLGU9TSxyPXU7ZnVuY3Rpb24gaSh0KXt2YXIgbj1lKHQpO2lmKEFycmF5LmlzQXJyYXkobikpbj1uLnNsaWNlKCkuc29ydChmbyk7ZWxzZXt2YXIgcj1zKHQpLGk9clswXSxhPXJbMV07bj13KGksYSxuKSxuPWcoTWF0aC5mbG9vcihpL24pKm4sTWF0aC5mbG9vcihhL24pKm4sbil9cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKHQsbil9KX1mdW5jdGlvbiBvKGUsaSl7dmFyIG89W10sdT1bXTtyZXR1cm4gZnVuY3Rpb24oZSxyLGkpe3ZhciBvLHUsZixjLHMsbCxoPW5ldyBBcnJheSxkPW5ldyBBcnJheTtvPXU9LTEsYz1lWzBdPj1yLHZvW2M8PDFdLmZvckVhY2gocCk7Zm9yKDsrK288dC0xOylmPWMsYz1lW28rMV0+PXIsdm9bZnxjPDwxXS5mb3JFYWNoKHApO3ZvW2M8PDBdLmZvckVhY2gocCk7Zm9yKDsrK3U8bi0xOyl7Zm9yKG89LTEsYz1lW3UqdCt0XT49cixzPWVbdSp0XT49cix2b1tjPDwxfHM8PDJdLmZvckVhY2gocCk7KytvPHQtMTspZj1jLGM9ZVt1KnQrdCtvKzFdPj1yLGw9cyxzPWVbdSp0K28rMV0+PXIsdm9bZnxjPDwxfHM8PDJ8bDw8M10uZm9yRWFjaChwKTt2b1tjfHM8PDNdLmZvckVhY2gocCl9bz0tMSxzPWVbdSp0XT49cix2b1tzPDwyXS5mb3JFYWNoKHApO2Zvcig7KytvPHQtMTspbD1zLHM9ZVt1KnQrbysxXT49cix2b1tzPDwyfGw8PDNdLmZvckVhY2gocCk7ZnVuY3Rpb24gcCh0KXt2YXIgbixlLHI9W3RbMF1bMF0rbyx0WzBdWzFdK3VdLGY9W3RbMV1bMF0rbyx0WzFdWzFdK3VdLGM9YShyKSxzPWEoZik7KG49ZFtjXSk/KGU9aFtzXSk/KGRlbGV0ZSBkW24uZW5kXSxkZWxldGUgaFtlLnN0YXJ0XSxuPT09ZT8obi5yaW5nLnB1c2goZiksaShuLnJpbmcpKTpoW24uc3RhcnRdPWRbZS5lbmRdPXtzdGFydDpuLnN0YXJ0LGVuZDplLmVuZCxyaW5nOm4ucmluZy5jb25jYXQoZS5yaW5nKX0pOihkZWxldGUgZFtuLmVuZF0sbi5yaW5nLnB1c2goZiksZFtuLmVuZD1zXT1uKToobj1oW3NdKT8oZT1kW2NdKT8oZGVsZXRlIGhbbi5zdGFydF0sZGVsZXRlIGRbZS5lbmRdLG49PT1lPyhuLnJpbmcucHVzaChmKSxpKG4ucmluZykpOmhbZS5zdGFydF09ZFtuLmVuZF09e3N0YXJ0OmUuc3RhcnQsZW5kOm4uZW5kLHJpbmc6ZS5yaW5nLmNvbmNhdChuLnJpbmcpfSk6KGRlbGV0ZSBoW24uc3RhcnRdLG4ucmluZy51bnNoaWZ0KHIpLGhbbi5zdGFydD1jXT1uKTpoW2NdPWRbc109e3N0YXJ0OmMsZW5kOnMscmluZzpbcixmXX19dm9bczw8M10uZm9yRWFjaChwKX0oZSxpLGZ1bmN0aW9uKHQpe3IodCxlLGkpLGZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLGU9dC5sZW5ndGgscj10W2UtMV1bMV0qdFswXVswXS10W2UtMV1bMF0qdFswXVsxXTsrK248ZTspcis9dFtuLTFdWzFdKnRbbl1bMF0tdFtuLTFdWzBdKnRbbl1bMV07cmV0dXJuIHJ9KHQpPjA/by5wdXNoKFt0XSk6dS5wdXNoKHQpfSksdS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPTAscj1vLmxlbmd0aDtlPHI7KytlKWlmKC0xIT09c28oKG49b1tlXSlbMF0sdCkpcmV0dXJuIHZvaWQgbi5wdXNoKHQpfSkse3R5cGU6Ik11bHRpUG9seWdvbiIsdmFsdWU6aSxjb29yZGluYXRlczpvfX1mdW5jdGlvbiBhKG4pe3JldHVybiAyKm5bMF0rblsxXSoodCsxKSo0fWZ1bmN0aW9uIHUoZSxyLGkpe2UuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgbyxhPWVbMF0sdT1lWzFdLGY9MHxhLGM9MHx1LHM9cltjKnQrZl07YT4wJiZhPHQmJmY9PT1hJiYobz1yW2MqdCtmLTFdLGVbMF09YSsoaS1vKS8ocy1vKS0uNSksdT4wJiZ1PG4mJmM9PT11JiYobz1yWyhjLTEpKnQrZl0sZVsxXT11KyhpLW8pLyhzLW8pLS41KX0pfXJldHVybiBpLmNvbnRvdXI9byxpLnNpemU9ZnVuY3Rpb24oZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuW3Qsbl07dmFyIHI9TWF0aC5jZWlsKGVbMF0pLG89TWF0aC5jZWlsKGVbMV0pO2lmKCEocj4wJiZvPjApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9cixuPW8saX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9jbyh1by5jYWxsKHQpKTpjbyh0KSxpKTplfSxpLnNtb290aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10P3U6cG8saSk6cj09PXV9LGl9ZnVuY3Rpb24geW8odCxuLGUpe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsbz0xKyhlPDwxKSxhPTA7YTxpOysrYSlmb3IodmFyIHU9MCxmPTA7dTxyK2U7Kyt1KXU8ciYmKGYrPXQuZGF0YVt1K2Eqcl0pLHU+PWUmJih1Pj1vJiYoZi09dC5kYXRhW3UtbythKnJdKSxuLmRhdGFbdS1lK2Eqcl09Zi9NYXRoLm1pbih1KzEsci0xK28tdSxvKSl9ZnVuY3Rpb24gX28odCxuLGUpe2Zvcih2YXIgcj10LndpZHRoLGk9dC5oZWlnaHQsbz0xKyhlPDwxKSxhPTA7YTxyOysrYSlmb3IodmFyIHU9MCxmPTA7dTxpK2U7Kyt1KXU8aSYmKGYrPXQuZGF0YVthK3Uqcl0pLHU+PWUmJih1Pj1vJiYoZi09dC5kYXRhW2ErKHUtbykqcl0pLG4uZGF0YVthKyh1LWUpKnJdPWYvTWF0aC5taW4odSsxLGktMStvLXUsbykpfWZ1bmN0aW9uIGJvKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIG1vKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIHhvKCl7cmV0dXJuIDF9dmFyIHdvPXt9LE1vPXt9LEFvPTM0LFRvPTEwLE5vPTEzO2Z1bmN0aW9uIFNvKHQpe3JldHVybiBuZXcgRnVuY3Rpb24oImQiLCJyZXR1cm4geyIrdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCkrIjogZFsiK24rIl0ifSkuam9pbigiLCIpKyJ9Iil9ZnVuY3Rpb24gRW8odCl7dmFyIG49bmV3IFJlZ0V4cCgnWyInK3QrIlxuXHJdIiksZT10LmNoYXJDb2RlQXQoMCk7ZnVuY3Rpb24gcih0LG4pe3ZhciByLGk9W10sbz10Lmxlbmd0aCxhPTAsdT0wLGY9bzw9MCxjPSExO2Z1bmN0aW9uIHMoKXtpZihmKXJldHVybiBNbztpZihjKXJldHVybiBjPSExLHdvO3ZhciBuLHIsaT1hO2lmKHQuY2hhckNvZGVBdChpKT09PUFvKXtmb3IoO2ErKzxvJiZ0LmNoYXJDb2RlQXQoYSkhPT1Bb3x8dC5jaGFyQ29kZUF0KCsrYSk9PT1BbzspO3JldHVybihuPWEpPj1vP2Y9ITA6KHI9dC5jaGFyQ29kZUF0KGErKykpPT09VG8/Yz0hMDpyPT09Tm8mJihjPSEwLHQuY2hhckNvZGVBdChhKT09PVRvJiYrK2EpLHQuc2xpY2UoaSsxLG4tMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7YTxvOyl7aWYoKHI9dC5jaGFyQ29kZUF0KG49YSsrKSk9PT1UbyljPSEwO2Vsc2UgaWYocj09PU5vKWM9ITAsdC5jaGFyQ29kZUF0KGEpPT09VG8mJisrYTtlbHNlIGlmKHIhPT1lKWNvbnRpbnVlO3JldHVybiB0LnNsaWNlKGksbil9cmV0dXJuIGY9ITAsdC5zbGljZShpLG8pfWZvcih0LmNoYXJDb2RlQXQoby0xKT09PVRvJiYtLW8sdC5jaGFyQ29kZUF0KG8tMSk9PT1ObyYmLS1vOyhyPXMoKSkhPT1Nbzspe2Zvcih2YXIgbD1bXTtyIT09d28mJnIhPT1NbzspbC5wdXNoKHIpLHI9cygpO24mJm51bGw9PShsPW4obCx1KyspKXx8aS5wdXNoKGwpfXJldHVybiBpfWZ1bmN0aW9uIGkobil7cmV0dXJuIG4ubWFwKG8pLmpvaW4odCl9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gbnVsbD09dD8iIjpuLnRlc3QodCs9IiIpPyciJyt0LnJlcGxhY2UoLyIvZywnIiInKSsnIic6dH1yZXR1cm57cGFyc2U6ZnVuY3Rpb24odCxuKXt2YXIgZSxpLG89cih0LGZ1bmN0aW9uKHQscil7aWYoZSlyZXR1cm4gZSh0LHItMSk7aT10LGU9bj9mdW5jdGlvbih0LG4pe3ZhciBlPVNvKHQpO3JldHVybiBmdW5jdGlvbihyLGkpe3JldHVybiBuKGUociksaSx0KX19KHQsbik6U28odCl9KTtyZXR1cm4gby5jb2x1bW5zPWl8fFtdLG99LHBhcnNlUm93czpyLGZvcm1hdDpmdW5jdGlvbihuLGUpe3JldHVybiBudWxsPT1lJiYoZT1mdW5jdGlvbih0KXt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLGU9W107cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdClyIGluIG58fGUucHVzaChuW3JdPXIpfSksZX0obikpLFtlLm1hcChvKS5qb2luKHQpXS5jb25jYXQobi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBvKG5bdF0pfSkuam9pbih0KX0pKS5qb2luKCJcbiIpfSxmb3JtYXRSb3dzOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hcChpKS5qb2luKCJcbiIpfX19dmFyIGtvPUVvKCIsIiksQ289a28ucGFyc2UsUG89a28ucGFyc2VSb3dzLHpvPWtvLmZvcm1hdCxSbz1rby5mb3JtYXRSb3dzLExvPUVvKCJcdCIpLERvPUxvLnBhcnNlLFVvPUxvLnBhcnNlUm93cyxxbz1Mby5mb3JtYXQsT289TG8uZm9ybWF0Um93cztmdW5jdGlvbiBZbyh0KXtpZighdC5vayl0aHJvdyBuZXcgRXJyb3IodC5zdGF0dXMrIiAiK3Quc3RhdHVzVGV4dCk7cmV0dXJuIHQuYmxvYigpfWZ1bmN0aW9uIEJvKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5hcnJheUJ1ZmZlcigpfWZ1bmN0aW9uIEZvKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC50ZXh0KCl9ZnVuY3Rpb24gSW8odCxuKXtyZXR1cm4gZmV0Y2godCxuKS50aGVuKEZvKX1mdW5jdGlvbiBIbyh0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiAyPT09YXJndW1lbnRzLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIGUmJihyPWUsZT12b2lkIDApLElvKG4sZSkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gdChuLHIpfSl9fXZhciBqbz1IbyhDbyksWG89SG8oRG8pO2Z1bmN0aW9uIEdvKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5qc29uKCl9ZnVuY3Rpb24gVm8odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuIElvKG4sZSkudGhlbihmdW5jdGlvbihuKXtyZXR1cm4obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKG4sdCl9KX19dmFyICRvPVZvKCJhcHBsaWNhdGlvbi94bWwiKSxXbz1WbygidGV4dC9odG1sIiksWm89Vm8oImltYWdlL3N2Zyt4bWwiKTtmdW5jdGlvbiBRbyh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gSm8oKXtyZXR1cm4gMWUtNiooTWF0aC5yYW5kb20oKS0uNSl9ZnVuY3Rpb24gS28odCxuLGUscil7aWYoaXNOYU4obil8fGlzTmFOKGUpKXJldHVybiB0O3ZhciBpLG8sYSx1LGYsYyxzLGwsaCxkPXQuX3Jvb3QscD17ZGF0YTpyfSx2PXQuX3gwLGc9dC5feTAseT10Ll94MSxfPXQuX3kxO2lmKCFkKXJldHVybiB0Ll9yb290PXAsdDtmb3IoO2QubGVuZ3RoOylpZigoYz1uPj0obz0odit5KS8yKSk/dj1vOnk9bywocz1lPj0oYT0oZytfKS8yKSk/Zz1hOl89YSxpPWQsIShkPWRbbD1zPDwxfGNdKSlyZXR1cm4gaVtsXT1wLHQ7aWYodT0rdC5feC5jYWxsKG51bGwsZC5kYXRhKSxmPSt0Ll95LmNhbGwobnVsbCxkLmRhdGEpLG49PT11JiZlPT09ZilyZXR1cm4gcC5uZXh0PWQsaT9pW2xdPXA6dC5fcm9vdD1wLHQ7ZG97aT1pP2lbbF09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLChjPW4+PShvPSh2K3kpLzIpKT92PW86eT1vLChzPWU+PShhPShnK18pLzIpKT9nPWE6Xz1hfXdoaWxlKChsPXM8PDF8Yyk9PShoPShmPj1hKTw8MXx1Pj1vKSk7cmV0dXJuIGlbaF09ZCxpW2xdPXAsdH1mdW5jdGlvbiB0YSh0LG4sZSxyLGkpe3RoaXMubm9kZT10LHRoaXMueDA9bix0aGlzLnkwPWUsdGhpcy54MT1yLHRoaXMueTE9aX1mdW5jdGlvbiBuYSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBlYSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiByYSh0LG4sZSl7dmFyIHI9bmV3IGlhKG51bGw9PW4/bmE6bixudWxsPT1lP2VhOmUsTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gbnVsbD09dD9yOnIuYWRkQWxsKHQpfWZ1bmN0aW9uIGlhKHQsbixlLHIsaSxvKXt0aGlzLl94PXQsdGhpcy5feT1uLHRoaXMuX3gwPWUsdGhpcy5feTA9cix0aGlzLl94MT1pLHRoaXMuX3kxPW8sdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24gb2EodCl7Zm9yKHZhciBuPXtkYXRhOnQuZGF0YX0sZT1uO3Q9dC5uZXh0OyllPWUubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBufXZhciBhYT1yYS5wcm90b3R5cGU9aWEucHJvdG90eXBlO2Z1bmN0aW9uIHVhKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiBmYSh0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rpb24gY2EodCl7cmV0dXJuIHQuaW5kZXh9ZnVuY3Rpb24gc2EodCxuKXt2YXIgZT10LmdldChuKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIm1pc3Npbmc6ICIrbik7cmV0dXJuIGV9ZnVuY3Rpb24gbGEodCl7cmV0dXJuIHQueH1mdW5jdGlvbiBoYSh0KXtyZXR1cm4gdC55fWFhLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdCxuLGU9bmV3IGlhKHRoaXMuX3gsdGhpcy5feSx0aGlzLl94MCx0aGlzLl95MCx0aGlzLl94MSx0aGlzLl95MSkscj10aGlzLl9yb290O2lmKCFyKXJldHVybiBlO2lmKCFyLmxlbmd0aClyZXR1cm4gZS5fcm9vdD1vYShyKSxlO2Zvcih0PVt7c291cmNlOnIsdGFyZ2V0OmUuX3Jvb3Q9bmV3IEFycmF5KDQpfV07cj10LnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShuPXIuc291cmNlW2ldKSYmKG4ubGVuZ3RoP3QucHVzaCh7c291cmNlOm4sdGFyZ2V0OnIudGFyZ2V0W2ldPW5ldyBBcnJheSg0KX0pOnIudGFyZ2V0W2ldPW9hKG4pKTtyZXR1cm4gZX0sYWEuYWRkPWZ1bmN0aW9uKHQpe3ZhciBuPSt0aGlzLl94LmNhbGwobnVsbCx0KSxlPSt0aGlzLl95LmNhbGwobnVsbCx0KTtyZXR1cm4gS28odGhpcy5jb3ZlcihuLGUpLG4sZSx0KX0sYWEuYWRkQWxsPWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpLG89dC5sZW5ndGgsYT1uZXcgQXJyYXkobyksdT1uZXcgQXJyYXkobyksZj0xLzAsYz0xLzAscz0tMS8wLGw9LTEvMDtmb3IoZT0wO2U8bzsrK2UpaXNOYU4ocj0rdGhpcy5feC5jYWxsKG51bGwsbj10W2VdKSl8fGlzTmFOKGk9K3RoaXMuX3kuY2FsbChudWxsLG4pKXx8KGFbZV09cix1W2VdPWkscjxmJiYoZj1yKSxyPnMmJihzPXIpLGk8YyYmKGM9aSksaT5sJiYobD1pKSk7Zm9yKHM8ZiYmKGY9dGhpcy5feDAscz10aGlzLl94MSksbDxjJiYoYz10aGlzLl95MCxsPXRoaXMuX3kxKSx0aGlzLmNvdmVyKGYsYykuY292ZXIocyxsKSxlPTA7ZTxvOysrZSlLbyh0aGlzLGFbZV0sdVtlXSx0W2VdKTtyZXR1cm4gdGhpc30sYWEuY292ZXI9ZnVuY3Rpb24odCxuKXtpZihpc05hTih0PSt0KXx8aXNOYU4obj0rbikpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5feDAscj10aGlzLl95MCxpPXRoaXMuX3gxLG89dGhpcy5feTE7aWYoaXNOYU4oZSkpaT0oZT1NYXRoLmZsb29yKHQpKSsxLG89KHI9TWF0aC5mbG9vcihuKSkrMTtlbHNle2lmKCEoZT50fHx0Pml8fHI+bnx8bj5vKSlyZXR1cm4gdGhpczt2YXIgYSx1LGY9aS1lLGM9dGhpcy5fcm9vdDtzd2l0Y2godT0objwocitvKS8yKTw8MXx0PChlK2kpLzIpe2Nhc2UgMDpkb3soYT1uZXcgQXJyYXkoNCkpW3VdPWMsYz1hfXdoaWxlKG89cisoZio9MiksdD4oaT1lK2YpfHxuPm8pO2JyZWFrO2Nhc2UgMTpkb3soYT1uZXcgQXJyYXkoNCkpW3VdPWMsYz1hfXdoaWxlKG89cisoZio9MiksKGU9aS1mKT50fHxuPm8pO2JyZWFrO2Nhc2UgMjpkb3soYT1uZXcgQXJyYXkoNCkpW3VdPWMsYz1hfXdoaWxlKHI9by0oZio9MiksdD4oaT1lK2YpfHxyPm4pO2JyZWFrO2Nhc2UgMzpkb3soYT1uZXcgQXJyYXkoNCkpW3VdPWMsYz1hfXdoaWxlKHI9by0oZio9MiksKGU9aS1mKT50fHxyPm4pfXRoaXMuX3Jvb3QmJnRoaXMuX3Jvb3QubGVuZ3RoJiYodGhpcy5fcm9vdD1jKX1yZXR1cm4gdGhpcy5feDA9ZSx0aGlzLl95MD1yLHRoaXMuX3gxPWksdGhpcy5feTE9byx0aGlzfSxhYS5kYXRhPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMudmlzaXQoZnVuY3Rpb24obil7aWYoIW4ubGVuZ3RoKWRve3QucHVzaChuLmRhdGEpfXdoaWxlKG49bi5uZXh0KX0pLHR9LGFhLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX0sYWEuZmluZD1mdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvLGEsdSxmLGMscz10aGlzLl94MCxsPXRoaXMuX3kwLGg9dGhpcy5feDEsZD10aGlzLl95MSxwPVtdLHY9dGhpcy5fcm9vdDtmb3IodiYmcC5wdXNoKG5ldyB0YSh2LHMsbCxoLGQpKSxudWxsPT1lP2U9MS8wOihzPXQtZSxsPW4tZSxoPXQrZSxkPW4rZSxlKj1lKTtmPXAucG9wKCk7KWlmKCEoISh2PWYubm9kZSl8fChpPWYueDApPmh8fChvPWYueTApPmR8fChhPWYueDEpPHN8fCh1PWYueTEpPGwpKWlmKHYubGVuZ3RoKXt2YXIgZz0oaSthKS8yLHk9KG8rdSkvMjtwLnB1c2gobmV3IHRhKHZbM10sZyx5LGEsdSksbmV3IHRhKHZbMl0saSx5LGcsdSksbmV3IHRhKHZbMV0sZyxvLGEseSksbmV3IHRhKHZbMF0saSxvLGcseSkpLChjPShuPj15KTw8MXx0Pj1nKSYmKGY9cFtwLmxlbmd0aC0xXSxwW3AubGVuZ3RoLTFdPXBbcC5sZW5ndGgtMS1jXSxwW3AubGVuZ3RoLTEtY109Zil9ZWxzZXt2YXIgXz10LSt0aGlzLl94LmNhbGwobnVsbCx2LmRhdGEpLGI9bi0rdGhpcy5feS5jYWxsKG51bGwsdi5kYXRhKSxtPV8qXytiKmI7aWYobTxlKXt2YXIgeD1NYXRoLnNxcnQoZT1tKTtzPXQteCxsPW4teCxoPXQreCxkPW4reCxyPXYuZGF0YX19cmV0dXJuIHJ9LGFhLnJlbW92ZT1mdW5jdGlvbih0KXtpZihpc05hTihvPSt0aGlzLl94LmNhbGwobnVsbCx0KSl8fGlzTmFOKGE9K3RoaXMuX3kuY2FsbChudWxsLHQpKSlyZXR1cm4gdGhpczt2YXIgbixlLHIsaSxvLGEsdSxmLGMscyxsLGgsZD10aGlzLl9yb290LHA9dGhpcy5feDAsdj10aGlzLl95MCxnPXRoaXMuX3gxLHk9dGhpcy5feTE7aWYoIWQpcmV0dXJuIHRoaXM7aWYoZC5sZW5ndGgpZm9yKDs7KXtpZigoYz1vPj0odT0ocCtnKS8yKSk/cD11Omc9dSwocz1hPj0oZj0odit5KS8yKSk/dj1mOnk9ZixuPWQsIShkPWRbbD1zPDwxfGNdKSlyZXR1cm4gdGhpcztpZighZC5sZW5ndGgpYnJlYWs7KG5bbCsxJjNdfHxuW2wrMiYzXXx8bltsKzMmM10pJiYoZT1uLGg9bCl9Zm9yKDtkLmRhdGEhPT10OylpZihyPWQsIShkPWQubmV4dCkpcmV0dXJuIHRoaXM7cmV0dXJuKGk9ZC5uZXh0KSYmZGVsZXRlIGQubmV4dCxyPyhpP3IubmV4dD1pOmRlbGV0ZSByLm5leHQsdGhpcyk6bj8oaT9uW2xdPWk6ZGVsZXRlIG5bbF0sKGQ9blswXXx8blsxXXx8blsyXXx8blszXSkmJmQ9PT0oblszXXx8blsyXXx8blsxXXx8blswXSkmJiFkLmxlbmd0aCYmKGU/ZVtoXT1kOnRoaXMuX3Jvb3Q9ZCksdGhpcyk6KHRoaXMuX3Jvb3Q9aSx0aGlzKX0sYWEucmVtb3ZlQWxsPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLGU9dC5sZW5ndGg7bjxlOysrbil0aGlzLnJlbW92ZSh0W25dKTtyZXR1cm4gdGhpc30sYWEucm9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290fSxhYS5zaXplPWZ1bmN0aW9uKCl7dmFyIHQ9MDtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihuKXtpZighbi5sZW5ndGgpZG97Kyt0fXdoaWxlKG49bi5uZXh0KX0pLHR9LGFhLnZpc2l0PWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpLG8sYSx1PVtdLGY9dGhpcy5fcm9vdDtmb3IoZiYmdS5wdXNoKG5ldyB0YShmLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7bj11LnBvcCgpOylpZighdChmPW4ubm9kZSxyPW4ueDAsaT1uLnkwLG89bi54MSxhPW4ueTEpJiZmLmxlbmd0aCl7dmFyIGM9KHIrbykvMixzPShpK2EpLzI7KGU9ZlszXSkmJnUucHVzaChuZXcgdGEoZSxjLHMsbyxhKSksKGU9ZlsyXSkmJnUucHVzaChuZXcgdGEoZSxyLHMsYyxhKSksKGU9ZlsxXSkmJnUucHVzaChuZXcgdGEoZSxjLGksbyxzKSksKGU9ZlswXSkmJnUucHVzaChuZXcgdGEoZSxyLGksYyxzKSl9cmV0dXJuIHRoaXN9LGFhLnZpc2l0QWZ0ZXI9ZnVuY3Rpb24odCl7dmFyIG4sZT1bXSxyPVtdO2Zvcih0aGlzLl9yb290JiZlLnB1c2gobmV3IHRhKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPWUucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBvLGE9bi54MCx1PW4ueTAsZj1uLngxLGM9bi55MSxzPShhK2YpLzIsbD0odStjKS8yOyhvPWlbMF0pJiZlLnB1c2gobmV3IHRhKG8sYSx1LHMsbCkpLChvPWlbMV0pJiZlLnB1c2gobmV3IHRhKG8scyx1LGYsbCkpLChvPWlbMl0pJiZlLnB1c2gobmV3IHRhKG8sYSxsLHMsYykpLChvPWlbM10pJiZlLnB1c2gobmV3IHRhKG8scyxsLGYsYykpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspdChuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9LGFhLng9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fSxhYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX07dmFyIGRhPTEwLHBhPU1hdGguUEkqKDMtTWF0aC5zcXJ0KDUpKTtmdW5jdGlvbiB2YSh0LG4pe2lmKChlPSh0PW4/dC50b0V4cG9uZW50aWFsKG4tMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgZSxyPXQuc2xpY2UoMCxlKTtyZXR1cm5bci5sZW5ndGg+MT9yWzBdK3Iuc2xpY2UoMik6ciwrdC5zbGljZShlKzEpXX1mdW5jdGlvbiBnYSh0KXtyZXR1cm4odD12YShNYXRoLmFicyh0KSkpP3RbMV06TmFOfXZhciB5YSxfYT0vXig/OiguKT8oWzw+PV5dKSk/KFsrXC0oIF0pPyhbJCNdKT8oMCk/KFxkKyk/KCwpPyhcLlxkKyk/KH4pPyhbYS16JV0pPyQvaTtmdW5jdGlvbiBiYSh0KXtyZXR1cm4gbmV3IG1hKHQpfWZ1bmN0aW9uIG1hKHQpe2lmKCEobj1fYS5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBuO3RoaXMuZmlsbD1uWzFdfHwiICIsdGhpcy5hbGlnbj1uWzJdfHwiPiIsdGhpcy5zaWduPW5bM118fCItIix0aGlzLnN5bWJvbD1uWzRdfHwiIix0aGlzLnplcm89ISFuWzVdLHRoaXMud2lkdGg9bls2XSYmK25bNl0sdGhpcy5jb21tYT0hIW5bN10sdGhpcy5wcmVjaXNpb249bls4XSYmK25bOF0uc2xpY2UoMSksdGhpcy50cmltPSEhbls5XSx0aGlzLnR5cGU9blsxMF18fCIifWZ1bmN0aW9uIHhhKHQsbil7dmFyIGU9dmEodCxuKTtpZighZSlyZXR1cm4gdCsiIjt2YXIgcj1lWzBdLGk9ZVsxXTtyZXR1cm4gaTwwPyIwLiIrbmV3IEFycmF5KC1pKS5qb2luKCIwIikrcjpyLmxlbmd0aD5pKzE/ci5zbGljZSgwLGkrMSkrIi4iK3Iuc2xpY2UoaSsxKTpyK25ldyBBcnJheShpLXIubGVuZ3RoKzIpLmpvaW4oIjAiKX1iYS5wcm90b3R5cGU9bWEucHJvdG90eXBlLG1hLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGwrdGhpcy5hbGlnbit0aGlzLnNpZ24rdGhpcy5zeW1ib2wrKHRoaXMuemVybz8iMCI6IiIpKyhudWxsPT10aGlzLndpZHRoPyIiOk1hdGgubWF4KDEsMHx0aGlzLndpZHRoKSkrKHRoaXMuY29tbWE/IiwiOiIiKSsobnVsbD09dGhpcy5wcmVjaXNpb24/IiI6Ii4iK01hdGgubWF4KDAsMHx0aGlzLnByZWNpc2lvbikpKyh0aGlzLnRyaW0/In4iOiIiKSt0aGlzLnR5cGV9O3ZhciB3YT17IiUiOmZ1bmN0aW9uKHQsbil7cmV0dXJuKDEwMCp0KS50b0ZpeGVkKG4pfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDIpfSxjOmZ1bmN0aW9uKHQpe3JldHVybiB0KyIifSxkOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDEwKX0sZTpmdW5jdGlvbih0LG4pe3JldHVybiB0LnRvRXhwb25lbnRpYWwobil9LGY6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdC50b0ZpeGVkKG4pfSxnOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQudG9QcmVjaXNpb24obil9LG86ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucm91bmQodCkudG9TdHJpbmcoOCl9LHA6ZnVuY3Rpb24odCxuKXtyZXR1cm4geGEoMTAwKnQsbil9LHI6eGEsczpmdW5jdGlvbih0LG4pe3ZhciBlPXZhKHQsbik7aWYoIWUpcmV0dXJuIHQrIiI7dmFyIHI9ZVswXSxpPWVbMV0sbz1pLSh5YT0zKk1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihpLzMpKSkpKzEsYT1yLmxlbmd0aDtyZXR1cm4gbz09PWE/cjpvPmE/cituZXcgQXJyYXkoby1hKzEpLmpvaW4oIjAiKTpvPjA/ci5zbGljZSgwLG8pKyIuIityLnNsaWNlKG8pOiIwLiIrbmV3IEFycmF5KDEtbykuam9pbigiMCIpK3ZhKHQsTWF0aC5tYXgoMCxuK28tMSkpWzBdfSxYOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpfSx4OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX19O2Z1bmN0aW9uIE1hKHQpe3JldHVybiB0fXZhciBBYSxUYT1bInkiLCJ6IiwiYSIsImYiLCJwIiwibiIsIsK1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gTmEodCl7dmFyIG4sZSxyPXQuZ3JvdXBpbmcmJnQudGhvdXNhbmRzPyhuPXQuZ3JvdXBpbmcsZT10LnRob3VzYW5kcyxmdW5jdGlvbih0LHIpe2Zvcih2YXIgaT10Lmxlbmd0aCxvPVtdLGE9MCx1PW5bMF0sZj0wO2k+MCYmdT4wJiYoZit1KzE+ciYmKHU9TWF0aC5tYXgoMSxyLWYpKSxvLnB1c2godC5zdWJzdHJpbmcoaS09dSxpK3UpKSwhKChmKz11KzEpPnIpKTspdT1uW2E9KGErMSklbi5sZW5ndGhdO3JldHVybiBvLnJldmVyc2UoKS5qb2luKGUpfSk6TWEsaT10LmN1cnJlbmN5LG89dC5kZWNpbWFsLGE9dC5udW1lcmFscz9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihuKXtyZXR1cm4gdFsrbl19KX19KHQubnVtZXJhbHMpOk1hLHU9dC5wZXJjZW50fHwiJSI7ZnVuY3Rpb24gZih0KXt2YXIgbj0odD1iYSh0KSkuZmlsbCxlPXQuYWxpZ24sZj10LnNpZ24sYz10LnN5bWJvbCxzPXQuemVybyxsPXQud2lkdGgsaD10LmNvbW1hLGQ9dC5wcmVjaXNpb24scD10LnRyaW0sdj10LnR5cGU7Im4iPT09dj8oaD0hMCx2PSJnIik6d2Fbdl18fChudWxsPT1kJiYoZD0xMikscD0hMCx2PSJnIiksKHN8fCIwIj09PW4mJiI9Ij09PWUpJiYocz0hMCxuPSIwIixlPSI9Iik7dmFyIGc9IiQiPT09Yz9pWzBdOiIjIj09PWMmJi9bYm94WF0vLnRlc3Qodik/IjAiK3YudG9Mb3dlckNhc2UoKToiIix5PSIkIj09PWM/aVsxXTovWyVwXS8udGVzdCh2KT91OiIiLF89d2Fbdl0sYj0vW2RlZmdwcnMlXS8udGVzdCh2KTtmdW5jdGlvbiBtKHQpe3ZhciBpLHUsYyxtPWcseD15O2lmKCJjIj09PXYpeD1fKHQpK3gsdD0iIjtlbHNle3ZhciB3PSh0PSt0KTwwO2lmKHQ9XyhNYXRoLmFicyh0KSxkKSxwJiYodD1mdW5jdGlvbih0KXt0OmZvcih2YXIgbixlPXQubGVuZ3RoLHI9MSxpPS0xO3I8ZTsrK3Ipc3dpdGNoKHRbcl0pe2Nhc2UiLiI6aT1uPXI7YnJlYWs7Y2FzZSIwIjowPT09aSYmKGk9ciksbj1yO2JyZWFrO2RlZmF1bHQ6aWYoaT4wKXtpZighK3Rbcl0pYnJlYWsgdDtpPTB9fXJldHVybiBpPjA/dC5zbGljZSgwLGkpK3Quc2xpY2UobisxKTp0fSh0KSksdyYmMD09K3QmJih3PSExKSxtPSh3PyIoIj09PWY/ZjoiLSI6Ii0iPT09Znx8IigiPT09Zj8iIjpmKSttLHg9KCJzIj09PXY/VGFbOCt5YS8zXToiIikreCsodyYmIigiPT09Zj8iKSI6IiIpLGIpZm9yKGk9LTEsdT10Lmxlbmd0aDsrK2k8dTspaWYoNDg+KGM9dC5jaGFyQ29kZUF0KGkpKXx8Yz41Nyl7eD0oNDY9PT1jP28rdC5zbGljZShpKzEpOnQuc2xpY2UoaSkpK3gsdD10LnNsaWNlKDAsaSk7YnJlYWt9fWgmJiFzJiYodD1yKHQsMS8wKSk7dmFyIE09bS5sZW5ndGgrdC5sZW5ndGgreC5sZW5ndGgsQT1NPGw/bmV3IEFycmF5KGwtTSsxKS5qb2luKG4pOiIiO3N3aXRjaChoJiZzJiYodD1yKEErdCxBLmxlbmd0aD9sLXgubGVuZ3RoOjEvMCksQT0iIiksZSl7Y2FzZSI8Ijp0PW0rdCt4K0E7YnJlYWs7Y2FzZSI9Ijp0PW0rQSt0K3g7YnJlYWs7Y2FzZSJeIjp0PUEuc2xpY2UoMCxNPUEubGVuZ3RoPj4xKSttK3QreCtBLnNsaWNlKE0pO2JyZWFrO2RlZmF1bHQ6dD1BK20rdCt4fXJldHVybiBhKHQpfXJldHVybiBkPW51bGw9PWQ/NjovW2dwcnNdLy50ZXN0KHYpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsZCkpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsZCkpLG0udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdCsiIn0sbX1yZXR1cm57Zm9ybWF0OmYsZm9ybWF0UHJlZml4OmZ1bmN0aW9uKHQsbil7dmFyIGU9ZigoKHQ9YmEodCkpLnR5cGU9ImYiLHQpKSxyPTMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGdhKG4pLzMpKSksaT1NYXRoLnBvdygxMCwtciksbz1UYVs4K3IvM107cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKGkqdCkrb319fX1mdW5jdGlvbiBTYShuKXtyZXR1cm4gQWE9TmEobiksdC5mb3JtYXQ9QWEuZm9ybWF0LHQuZm9ybWF0UHJlZml4PUFhLmZvcm1hdFByZWZpeCxBYX1mdW5jdGlvbiBFYSh0KXtyZXR1cm4gTWF0aC5tYXgoMCwtZ2EoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBrYSh0LG4pe3JldHVybiBNYXRoLm1heCgwLDMqTWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGdhKG4pLzMpKSktZ2EoTWF0aC5hYnModCkpKX1mdW5jdGlvbiBDYSh0LG4pe3JldHVybiB0PU1hdGguYWJzKHQpLG49TWF0aC5hYnMobiktdCxNYXRoLm1heCgwLGdhKG4pLWdhKHQpKSsxfWZ1bmN0aW9uIFBhKCl7cmV0dXJuIG5ldyB6YX1mdW5jdGlvbiB6YSgpe3RoaXMucmVzZXQoKX1TYSh7ZGVjaW1hbDoiLiIsdGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KSx6YS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnphLHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zPXRoaXMudD0wfSxhZGQ6ZnVuY3Rpb24odCl7TGEoUmEsdCx0aGlzLnQpLExhKHRoaXMsUmEucyx0aGlzLnMpLHRoaXMucz90aGlzLnQrPVJhLnQ6dGhpcy5zPVJhLnR9LHZhbHVlT2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zfX07dmFyIFJhPW5ldyB6YTtmdW5jdGlvbiBMYSh0LG4sZSl7dmFyIHI9dC5zPW4rZSxpPXItbixvPXItaTt0LnQ9bi1vKyhlLWkpfXZhciBEYT0xZS02LFVhPTFlLTEyLHFhPU1hdGguUEksT2E9cWEvMixZYT1xYS80LEJhPTIqcWEsRmE9MTgwL3FhLElhPXFhLzE4MCxIYT1NYXRoLmFicyxqYT1NYXRoLmF0YW4sWGE9TWF0aC5hdGFuMixHYT1NYXRoLmNvcyxWYT1NYXRoLmNlaWwsJGE9TWF0aC5leHAsV2E9TWF0aC5sb2csWmE9TWF0aC5wb3csUWE9TWF0aC5zaW4sSmE9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gdD4wPzE6dDwwPy0xOjB9LEthPU1hdGguc3FydCx0dT1NYXRoLnRhbjtmdW5jdGlvbiBudSh0KXtyZXR1cm4gdD4xPzA6dDwtMT9xYTpNYXRoLmFjb3ModCl9ZnVuY3Rpb24gZXUodCl7cmV0dXJuIHQ+MT9PYTp0PC0xPy1PYTpNYXRoLmFzaW4odCl9ZnVuY3Rpb24gcnUodCl7cmV0dXJuKHQ9UWEodC8yKSkqdH1mdW5jdGlvbiBpdSgpe31mdW5jdGlvbiBvdSh0LG4pe3QmJnV1Lmhhc093blByb3BlcnR5KHQudHlwZSkmJnV1W3QudHlwZV0odCxuKX12YXIgYXU9e0ZlYXR1cmU6ZnVuY3Rpb24odCxuKXtvdSh0Lmdlb21ldHJ5LG4pfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmZlYXR1cmVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspb3UoZVtyXS5nZW9tZXRyeSxuKX19LHV1PXtTcGhlcmU6ZnVuY3Rpb24odCxuKXtuLnNwaGVyZSgpfSxQb2ludDpmdW5jdGlvbih0LG4pe3Q9dC5jb29yZGluYXRlcyxuLnBvaW50KHRbMF0sdFsxXSx0WzJdKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspdD1lW3JdLG4ucG9pbnQodFswXSx0WzFdLHRbMl0pfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7ZnUodC5jb29yZGluYXRlcyxuLDApfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWZ1KGVbcl0sbiwwKX0sUG9seWdvbjpmdW5jdGlvbih0LG4pe2N1KHQuY29vcmRpbmF0ZXMsbil9LE11bHRpUG9seWdvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspY3UoZVtyXSxuKX0sR2VvbWV0cnlDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuZ2VvbWV0cmllcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KW91KGVbcl0sbil9fTtmdW5jdGlvbiBmdSh0LG4sZSl7dmFyIHIsaT0tMSxvPXQubGVuZ3RoLWU7Zm9yKG4ubGluZVN0YXJ0KCk7KytpPG87KXI9dFtpXSxuLnBvaW50KHJbMF0sclsxXSxyWzJdKTtuLmxpbmVFbmQoKX1mdW5jdGlvbiBjdSh0LG4pe3ZhciBlPS0xLHI9dC5sZW5ndGg7Zm9yKG4ucG9seWdvblN0YXJ0KCk7KytlPHI7KWZ1KHRbZV0sbiwxKTtuLnBvbHlnb25FbmQoKX1mdW5jdGlvbiBzdSh0LG4pe3QmJmF1Lmhhc093blByb3BlcnR5KHQudHlwZSk/YXVbdC50eXBlXSh0LG4pOm91KHQsbil9dmFyIGx1LGh1LGR1LHB1LHZ1LGd1PVBhKCkseXU9UGEoKSxfdT17cG9pbnQ6aXUsbGluZVN0YXJ0Oml1LGxpbmVFbmQ6aXUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7Z3UucmVzZXQoKSxfdS5saW5lU3RhcnQ9YnUsX3UubGluZUVuZD1tdX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3ZhciB0PStndTt5dS5hZGQodDwwP0JhK3Q6dCksdGhpcy5saW5lU3RhcnQ9dGhpcy5saW5lRW5kPXRoaXMucG9pbnQ9aXV9LHNwaGVyZTpmdW5jdGlvbigpe3l1LmFkZChCYSl9fTtmdW5jdGlvbiBidSgpe191LnBvaW50PXh1fWZ1bmN0aW9uIG11KCl7d3UobHUsaHUpfWZ1bmN0aW9uIHh1KHQsbil7X3UucG9pbnQ9d3UsbHU9dCxodT1uLGR1PXQqPUlhLHB1PUdhKG49KG4qPUlhKS8yK1lhKSx2dT1RYShuKX1mdW5jdGlvbiB3dSh0LG4pe3ZhciBlPSh0Kj1JYSktZHUscj1lPj0wPzE6LTEsaT1yKmUsbz1HYShuPShuKj1JYSkvMitZYSksYT1RYShuKSx1PXZ1KmEsZj1wdSpvK3UqR2EoaSksYz11KnIqUWEoaSk7Z3UuYWRkKFhhKGMsZikpLGR1PXQscHU9byx2dT1hfWZ1bmN0aW9uIE11KHQpe3JldHVybltYYSh0WzFdLHRbMF0pLGV1KHRbMl0pXX1mdW5jdGlvbiBBdSh0KXt2YXIgbj10WzBdLGU9dFsxXSxyPUdhKGUpO3JldHVybltyKkdhKG4pLHIqUWEobiksUWEoZSldfWZ1bmN0aW9uIFR1KHQsbil7cmV0dXJuIHRbMF0qblswXSt0WzFdKm5bMV0rdFsyXSpuWzJdfWZ1bmN0aW9uIE51KHQsbil7cmV0dXJuW3RbMV0qblsyXS10WzJdKm5bMV0sdFsyXSpuWzBdLXRbMF0qblsyXSx0WzBdKm5bMV0tdFsxXSpuWzBdXX1mdW5jdGlvbiBTdSh0LG4pe3RbMF0rPW5bMF0sdFsxXSs9blsxXSx0WzJdKz1uWzJdfWZ1bmN0aW9uIEV1KHQsbil7cmV0dXJuW3RbMF0qbix0WzFdKm4sdFsyXSpuXX1mdW5jdGlvbiBrdSh0KXt2YXIgbj1LYSh0WzBdKnRbMF0rdFsxXSp0WzFdK3RbMl0qdFsyXSk7dFswXS89bix0WzFdLz1uLHRbMl0vPW59dmFyIEN1LFB1LHp1LFJ1LEx1LER1LFV1LHF1LE91LFl1LEJ1LEZ1LEl1LEh1LGp1LFh1LEd1LFZ1LCR1LFd1LFp1LFF1LEp1LEt1LHRmLG5mLGVmPVBhKCkscmY9e3BvaW50Om9mLGxpbmVTdGFydDp1ZixsaW5lRW5kOmZmLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3JmLnBvaW50PWNmLHJmLmxpbmVTdGFydD1zZixyZi5saW5lRW5kPWxmLGVmLnJlc2V0KCksX3UucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtfdS5wb2x5Z29uRW5kKCkscmYucG9pbnQ9b2YscmYubGluZVN0YXJ0PXVmLHJmLmxpbmVFbmQ9ZmYsZ3U8MD8oQ3U9LSh6dT0xODApLFB1PS0oUnU9OTApKTplZj5EYT9SdT05MDplZjwtRGEmJihQdT0tOTApLFl1WzBdPUN1LFl1WzFdPXp1fX07ZnVuY3Rpb24gb2YodCxuKXtPdS5wdXNoKFl1PVtDdT10LHp1PXRdKSxuPFB1JiYoUHU9biksbj5SdSYmKFJ1PW4pfWZ1bmN0aW9uIGFmKHQsbil7dmFyIGU9QXUoW3QqSWEsbipJYV0pO2lmKHF1KXt2YXIgcj1OdShxdSxlKSxpPU51KFtyWzFdLC1yWzBdLDBdLHIpO2t1KGkpLGk9TXUoaSk7dmFyIG8sYT10LUx1LHU9YT4wPzE6LTEsZj1pWzBdKkZhKnUsYz1IYShhKT4xODA7Y14odSpMdTxmJiZmPHUqdCk/KG89aVsxXSpGYSk+UnUmJihSdT1vKTpjXih1Kkx1PChmPShmKzM2MCklMzYwLTE4MCkmJmY8dSp0KT8obz0taVsxXSpGYSk8UHUmJihQdT1vKToobjxQdSYmKFB1PW4pLG4+UnUmJihSdT1uKSksYz90PEx1P2hmKEN1LHQpPmhmKEN1LHp1KSYmKHp1PXQpOmhmKHQsenUpPmhmKEN1LHp1KSYmKEN1PXQpOnp1Pj1DdT8odDxDdSYmKEN1PXQpLHQ+enUmJih6dT10KSk6dD5MdT9oZihDdSx0KT5oZihDdSx6dSkmJih6dT10KTpoZih0LHp1KT5oZihDdSx6dSkmJihDdT10KX1lbHNlIE91LnB1c2goWXU9W0N1PXQsenU9dF0pO248UHUmJihQdT1uKSxuPlJ1JiYoUnU9bikscXU9ZSxMdT10fWZ1bmN0aW9uIHVmKCl7cmYucG9pbnQ9YWZ9ZnVuY3Rpb24gZmYoKXtZdVswXT1DdSxZdVsxXT16dSxyZi5wb2ludD1vZixxdT1udWxsfWZ1bmN0aW9uIGNmKHQsbil7aWYocXUpe3ZhciBlPXQtTHU7ZWYuYWRkKEhhKGUpPjE4MD9lKyhlPjA/MzYwOi0zNjApOmUpfWVsc2UgRHU9dCxVdT1uO191LnBvaW50KHQsbiksYWYodCxuKX1mdW5jdGlvbiBzZigpe191LmxpbmVTdGFydCgpfWZ1bmN0aW9uIGxmKCl7Y2YoRHUsVXUpLF91LmxpbmVFbmQoKSxIYShlZik+RGEmJihDdT0tKHp1PTE4MCkpLFl1WzBdPUN1LFl1WzFdPXp1LHF1PW51bGx9ZnVuY3Rpb24gaGYodCxuKXtyZXR1cm4obi09dCk8MD9uKzM2MDpufWZ1bmN0aW9uIGRmKHQsbil7cmV0dXJuIHRbMF0tblswXX1mdW5jdGlvbiBwZih0LG4pe3JldHVybiB0WzBdPD10WzFdP3RbMF08PW4mJm48PXRbMV06bjx0WzBdfHx0WzFdPG59dmFyIHZmPXtzcGhlcmU6aXUscG9pbnQ6Z2YsbGluZVN0YXJ0Ol9mLGxpbmVFbmQ6eGYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dmYubGluZVN0YXJ0PXdmLHZmLmxpbmVFbmQ9TWZ9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2Zi5saW5lU3RhcnQ9X2YsdmYubGluZUVuZD14Zn19O2Z1bmN0aW9uIGdmKHQsbil7dCo9SWE7dmFyIGU9R2Eobio9SWEpO3lmKGUqR2EodCksZSpRYSh0KSxRYShuKSl9ZnVuY3Rpb24geWYodCxuLGUpe0l1Kz0odC1JdSkvKytCdSxIdSs9KG4tSHUpL0J1LGp1Kz0oZS1qdSkvQnV9ZnVuY3Rpb24gX2YoKXt2Zi5wb2ludD1iZn1mdW5jdGlvbiBiZih0LG4pe3QqPUlhO3ZhciBlPUdhKG4qPUlhKTtLdT1lKkdhKHQpLHRmPWUqUWEodCksbmY9UWEobiksdmYucG9pbnQ9bWYseWYoS3UsdGYsbmYpfWZ1bmN0aW9uIG1mKHQsbil7dCo9SWE7dmFyIGU9R2Eobio9SWEpLHI9ZSpHYSh0KSxpPWUqUWEodCksbz1RYShuKSxhPVhhKEthKChhPXRmKm8tbmYqaSkqYSsoYT1uZipyLUt1Km8pKmErKGE9S3UqaS10ZipyKSphKSxLdSpyK3RmKmkrbmYqbyk7RnUrPWEsWHUrPWEqKEt1KyhLdT1yKSksR3UrPWEqKHRmKyh0Zj1pKSksVnUrPWEqKG5mKyhuZj1vKSkseWYoS3UsdGYsbmYpfWZ1bmN0aW9uIHhmKCl7dmYucG9pbnQ9Z2Z9ZnVuY3Rpb24gd2YoKXt2Zi5wb2ludD1BZn1mdW5jdGlvbiBNZigpe1RmKFF1LEp1KSx2Zi5wb2ludD1nZn1mdW5jdGlvbiBBZih0LG4pe1F1PXQsSnU9bix0Kj1JYSxuKj1JYSx2Zi5wb2ludD1UZjt2YXIgZT1HYShuKTtLdT1lKkdhKHQpLHRmPWUqUWEodCksbmY9UWEobikseWYoS3UsdGYsbmYpfWZ1bmN0aW9uIFRmKHQsbil7dCo9SWE7dmFyIGU9R2Eobio9SWEpLHI9ZSpHYSh0KSxpPWUqUWEodCksbz1RYShuKSxhPXRmKm8tbmYqaSx1PW5mKnItS3UqbyxmPUt1KmktdGYqcixjPUthKGEqYSt1KnUrZipmKSxzPWV1KGMpLGw9YyYmLXMvYzskdSs9bCphLFd1Kz1sKnUsWnUrPWwqZixGdSs9cyxYdSs9cyooS3UrKEt1PXIpKSxHdSs9cyoodGYrKHRmPWkpKSxWdSs9cyoobmYrKG5mPW8pKSx5ZihLdSx0ZixuZil9ZnVuY3Rpb24gTmYodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIFNmKHQsbil7ZnVuY3Rpb24gZShlLHIpe3JldHVybiBlPXQoZSxyKSxuKGVbMF0sZVsxXSl9cmV0dXJuIHQuaW52ZXJ0JiZuLmludmVydCYmKGUuaW52ZXJ0PWZ1bmN0aW9uKGUscil7cmV0dXJuKGU9bi5pbnZlcnQoZSxyKSkmJnQuaW52ZXJ0KGVbMF0sZVsxXSl9KSxlfWZ1bmN0aW9uIEVmKHQsbil7cmV0dXJuW3Q+cWE/dC1CYTp0PC1xYT90K0JhOnQsbl19ZnVuY3Rpb24ga2YodCxuLGUpe3JldHVybih0JT1CYSk/bnx8ZT9TZihQZih0KSx6ZihuLGUpKTpQZih0KTpufHxlP3pmKG4sZSk6RWZ9ZnVuY3Rpb24gQ2YodCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7cmV0dXJuWyhuKz10KT5xYT9uLUJhOm48LXFhP24rQmE6bixlXX19ZnVuY3Rpb24gUGYodCl7dmFyIG49Q2YodCk7cmV0dXJuIG4uaW52ZXJ0PUNmKC10KSxufWZ1bmN0aW9uIHpmKHQsbil7dmFyIGU9R2EodCkscj1RYSh0KSxpPUdhKG4pLG89UWEobik7ZnVuY3Rpb24gYSh0LG4pe3ZhciBhPUdhKG4pLHU9R2EodCkqYSxmPVFhKHQpKmEsYz1RYShuKSxzPWMqZSt1KnI7cmV0dXJuW1hhKGYqaS1zKm8sdSplLWMqciksZXUocyppK2YqbyldfXJldHVybiBhLmludmVydD1mdW5jdGlvbih0LG4pe3ZhciBhPUdhKG4pLHU9R2EodCkqYSxmPVFhKHQpKmEsYz1RYShuKSxzPWMqaS1mKm87cmV0dXJuW1hhKGYqaStjKm8sdSplK3MqciksZXUocyplLXUqcildfSxhfWZ1bmN0aW9uIFJmKHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuKG49dChuWzBdKklhLG5bMV0qSWEpKVswXSo9RmEsblsxXSo9RmEsbn1yZXR1cm4gdD1rZih0WzBdKklhLHRbMV0qSWEsdC5sZW5ndGg+Mj90WzJdKklhOjApLG4uaW52ZXJ0PWZ1bmN0aW9uKG4pe3JldHVybihuPXQuaW52ZXJ0KG5bMF0qSWEsblsxXSpJYSkpWzBdKj1GYSxuWzFdKj1GYSxufSxufWZ1bmN0aW9uIExmKHQsbixlLHIsaSxvKXtpZihlKXt2YXIgYT1HYShuKSx1PVFhKG4pLGY9ciplO251bGw9PWk/KGk9bityKkJhLG89bi1mLzIpOihpPURmKGEsaSksbz1EZihhLG8pLChyPjA/aTxvOmk+bykmJihpKz1yKkJhKSk7Zm9yKHZhciBjLHM9aTtyPjA/cz5vOnM8bztzLT1mKWM9TXUoW2EsLXUqR2EocyksLXUqUWEocyldKSx0LnBvaW50KGNbMF0sY1sxXSl9fWZ1bmN0aW9uIERmKHQsbil7KG49QXUobikpWzBdLT10LGt1KG4pO3ZhciBlPW51KC1uWzFdKTtyZXR1cm4oKC1uWzJdPDA/LWU6ZSkrQmEtRGEpJUJhfWZ1bmN0aW9uIFVmKCl7dmFyIHQsbj1bXTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24obixlKXt0LnB1c2goW24sZV0pfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtuLnB1c2godD1bXSl9LGxpbmVFbmQ6aXUscmVqb2luOmZ1bmN0aW9uKCl7bi5sZW5ndGg+MSYmbi5wdXNoKG4ucG9wKCkuY29uY2F0KG4uc2hpZnQoKSkpfSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgZT1uO3JldHVybiBuPVtdLHQ9bnVsbCxlfX19ZnVuY3Rpb24gcWYodCxuKXtyZXR1cm4gSGEodFswXS1uWzBdKTxEYSYmSGEodFsxXS1uWzFdKTxEYX1mdW5jdGlvbiBPZih0LG4sZSxyKXt0aGlzLng9dCx0aGlzLno9bix0aGlzLm89ZSx0aGlzLmU9cix0aGlzLnY9ITEsdGhpcy5uPXRoaXMucD1udWxsfWZ1bmN0aW9uIFlmKHQsbixlLHIsaSl7dmFyIG8sYSx1PVtdLGY9W107aWYodC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCEoKG49dC5sZW5ndGgtMSk8PTApKXt2YXIgbixlLHI9dFswXSxhPXRbbl07aWYocWYocixhKSl7Zm9yKGkubGluZVN0YXJ0KCksbz0wO288bjsrK28paS5wb2ludCgocj10W29dKVswXSxyWzFdKTtpLmxpbmVFbmQoKX1lbHNlIHUucHVzaChlPW5ldyBPZihyLHQsbnVsbCwhMCkpLGYucHVzaChlLm89bmV3IE9mKHIsbnVsbCxlLCExKSksdS5wdXNoKGU9bmV3IE9mKGEsdCxudWxsLCExKSksZi5wdXNoKGUubz1uZXcgT2YoYSxudWxsLGUsITApKX19KSx1Lmxlbmd0aCl7Zm9yKGYuc29ydChuKSxCZih1KSxCZihmKSxvPTAsYT1mLmxlbmd0aDtvPGE7KytvKWZbb10uZT1lPSFlO2Zvcih2YXIgYyxzLGw9dVswXTs7KXtmb3IodmFyIGg9bCxkPSEwO2gudjspaWYoKGg9aC5uKT09PWwpcmV0dXJuO2M9aC56LGkubGluZVN0YXJ0KCk7ZG97aWYoaC52PWguby52PSEwLGguZSl7aWYoZClmb3Iobz0wLGE9Yy5sZW5ndGg7bzxhOysrbylpLnBvaW50KChzPWNbb10pWzBdLHNbMV0pO2Vsc2UgcihoLngsaC5uLngsMSxpKTtoPWgubn1lbHNle2lmKGQpZm9yKGM9aC5wLnosbz1jLmxlbmd0aC0xO28+PTA7LS1vKWkucG9pbnQoKHM9Y1tvXSlbMF0sc1sxXSk7ZWxzZSByKGgueCxoLnAueCwtMSxpKTtoPWgucH1jPShoPWgubykueixkPSFkfXdoaWxlKCFoLnYpO2kubGluZUVuZCgpfX19ZnVuY3Rpb24gQmYodCl7aWYobj10Lmxlbmd0aCl7Zm9yKHZhciBuLGUscj0wLGk9dFswXTsrK3I8bjspaS5uPWU9dFtyXSxlLnA9aSxpPWU7aS5uPWU9dFswXSxlLnA9aX19RWYuaW52ZXJ0PUVmO3ZhciBGZj1QYSgpO2Z1bmN0aW9uIElmKHQsbil7dmFyIGU9blswXSxyPW5bMV0saT1RYShyKSxvPVtRYShlKSwtR2EoZSksMF0sYT0wLHU9MDtGZi5yZXNldCgpLDE9PT1pP3I9T2ErRGE6LTE9PT1pJiYocj0tT2EtRGEpO2Zvcih2YXIgZj0wLGM9dC5sZW5ndGg7ZjxjOysrZilpZihsPShzPXRbZl0pLmxlbmd0aClmb3IodmFyIHMsbCxoPXNbbC0xXSxkPWhbMF0scD1oWzFdLzIrWWEsdj1RYShwKSxnPUdhKHApLHk9MDt5PGw7Kyt5LGQ9Yix2PXgsZz13LGg9Xyl7dmFyIF89c1t5XSxiPV9bMF0sbT1fWzFdLzIrWWEseD1RYShtKSx3PUdhKG0pLE09Yi1kLEE9TT49MD8xOi0xLFQ9QSpNLE49VD5xYSxTPXYqeDtpZihGZi5hZGQoWGEoUypBKlFhKFQpLGcqdytTKkdhKFQpKSksYSs9Tj9NK0EqQmE6TSxOXmQ+PWVeYj49ZSl7dmFyIEU9TnUoQXUoaCksQXUoXykpO2t1KEUpO3ZhciBrPU51KG8sRSk7a3Uoayk7dmFyIEM9KE5eTT49MD8tMToxKSpldShrWzJdKTsocj5DfHxyPT09QyYmKEVbMF18fEVbMV0pKSYmKHUrPU5eTT49MD8xOi0xKX19cmV0dXJuKGE8LURhfHxhPERhJiZGZjwtRGEpXjEmdX1mdW5jdGlvbiBIZih0LG4sZSxyKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIG8sYSx1LGY9bihpKSxjPVVmKCkscz1uKGMpLGw9ITEsaD17cG9pbnQ6ZCxsaW5lU3RhcnQ6dixsaW5lRW5kOmcscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7aC5wb2ludD15LGgubGluZVN0YXJ0PV8saC5saW5lRW5kPWIsYT1bXSxvPVtdfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7aC5wb2ludD1kLGgubGluZVN0YXJ0PXYsaC5saW5lRW5kPWcsYT1OKGEpO3ZhciB0PUlmKG8scik7YS5sZW5ndGg/KGx8fChpLnBvbHlnb25TdGFydCgpLGw9ITApLFlmKGEsWGYsdCxlLGkpKTp0JiYobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpKSxsJiYoaS5wb2x5Z29uRW5kKCksbD0hMSksYT1vPW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe2kucG9seWdvblN0YXJ0KCksaS5saW5lU3RhcnQoKSxlKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpLGkucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gZChuLGUpe3QobixlKSYmaS5wb2ludChuLGUpfWZ1bmN0aW9uIHAodCxuKXtmLnBvaW50KHQsbil9ZnVuY3Rpb24gdigpe2gucG9pbnQ9cCxmLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGcoKXtoLnBvaW50PWQsZi5saW5lRW5kKCl9ZnVuY3Rpb24geSh0LG4pe3UucHVzaChbdCxuXSkscy5wb2ludCh0LG4pfWZ1bmN0aW9uIF8oKXtzLmxpbmVTdGFydCgpLHU9W119ZnVuY3Rpb24gYigpe3kodVswXVswXSx1WzBdWzFdKSxzLmxpbmVFbmQoKTt2YXIgdCxuLGUscixmPXMuY2xlYW4oKSxoPWMucmVzdWx0KCksZD1oLmxlbmd0aDtpZih1LnBvcCgpLG8ucHVzaCh1KSx1PW51bGwsZClpZigxJmYpe2lmKChuPShlPWhbMF0pLmxlbmd0aC0xKT4wKXtmb3IobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSx0PTA7dDxuOysrdClpLnBvaW50KChyPWVbdF0pWzBdLHJbMV0pO2kubGluZUVuZCgpfX1lbHNlIGQ+MSYmMiZmJiZoLnB1c2goaC5wb3AoKS5jb25jYXQoaC5zaGlmdCgpKSksYS5wdXNoKGguZmlsdGVyKGpmKSl9cmV0dXJuIGh9fWZ1bmN0aW9uIGpmKHQpe3JldHVybiB0Lmxlbmd0aD4xfWZ1bmN0aW9uIFhmKHQsbil7cmV0dXJuKCh0PXQueClbMF08MD90WzFdLU9hLURhOk9hLXRbMV0pLSgobj1uLngpWzBdPDA/blsxXS1PYS1EYTpPYS1uWzFdKX12YXIgR2Y9SGYoZnVuY3Rpb24oKXtyZXR1cm4hMH0sZnVuY3Rpb24odCl7dmFyIG4sZT1OYU4scj1OYU4saT1OYU47cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksbj0xfSxwb2ludDpmdW5jdGlvbihvLGEpe3ZhciB1PW8+MD9xYTotcWEsZj1IYShvLWUpO0hhKGYtcWEpPERhPyh0LnBvaW50KGUscj0ocithKS8yPjA/T2E6LU9hKSx0LnBvaW50KGksciksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KHUsciksdC5wb2ludChvLHIpLG49MCk6aSE9PXUmJmY+PXFhJiYoSGEoZS1pKTxEYSYmKGUtPWkqRGEpLEhhKG8tdSk8RGEmJihvLT11KkRhKSxyPWZ1bmN0aW9uKHQsbixlLHIpe3ZhciBpLG8sYT1RYSh0LWUpO3JldHVybiBIYShhKT5EYT9qYSgoUWEobikqKG89R2EocikpKlFhKGUpLVFhKHIpKihpPUdhKG4pKSpRYSh0KSkvKGkqbyphKSk6KG4rcikvMn0oZSxyLG8sYSksdC5wb2ludChpLHIpLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludCh1LHIpLG49MCksdC5wb2ludChlPW8scj1hKSxpPXV9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0LmxpbmVFbmQoKSxlPXI9TmFOfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiAyLW59fX0sZnVuY3Rpb24odCxuLGUscil7dmFyIGk7aWYobnVsbD09dClpPWUqT2Esci5wb2ludCgtcWEsaSksci5wb2ludCgwLGkpLHIucG9pbnQocWEsaSksci5wb2ludChxYSwwKSxyLnBvaW50KHFhLC1pKSxyLnBvaW50KDAsLWkpLHIucG9pbnQoLXFhLC1pKSxyLnBvaW50KC1xYSwwKSxyLnBvaW50KC1xYSxpKTtlbHNlIGlmKEhhKHRbMF0tblswXSk+RGEpe3ZhciBvPXRbMF08blswXT9xYTotcWE7aT1lKm8vMixyLnBvaW50KC1vLGkpLHIucG9pbnQoMCxpKSxyLnBvaW50KG8saSl9ZWxzZSByLnBvaW50KG5bMF0sblsxXSl9LFstcWEsLU9hXSk7ZnVuY3Rpb24gVmYodCl7dmFyIG49R2EodCksZT02KklhLHI9bj4wLGk9SGEobik+RGE7ZnVuY3Rpb24gbyh0LGUpe3JldHVybiBHYSh0KSpHYShlKT5ufWZ1bmN0aW9uIGEodCxlLHIpe3ZhciBpPVsxLDAsMF0sbz1OdShBdSh0KSxBdShlKSksYT1UdShvLG8pLHU9b1swXSxmPWEtdSp1O2lmKCFmKXJldHVybiFyJiZ0O3ZhciBjPW4qYS9mLHM9LW4qdS9mLGw9TnUoaSxvKSxoPUV1KGksYyk7U3UoaCxFdShvLHMpKTt2YXIgZD1sLHA9VHUoaCxkKSx2PVR1KGQsZCksZz1wKnAtdiooVHUoaCxoKS0xKTtpZighKGc8MCkpe3ZhciB5PUthKGcpLF89RXUoZCwoLXAteSkvdik7aWYoU3UoXyxoKSxfPU11KF8pLCFyKXJldHVybiBfO3ZhciBiLG09dFswXSx4PWVbMF0sdz10WzFdLE09ZVsxXTt4PG0mJihiPW0sbT14LHg9Yik7dmFyIEE9eC1tLFQ9SGEoQS1xYSk8RGE7aWYoIVQmJk08dyYmKGI9dyx3PU0sTT1iKSxUfHxBPERhP1Q/dytNPjBeX1sxXTwoSGEoX1swXS1tKTxEYT93Ok0pOnc8PV9bMV0mJl9bMV08PU06QT5xYV4obTw9X1swXSYmX1swXTw9eCkpe3ZhciBOPUV1KGQsKC1wK3kpL3YpO3JldHVybiBTdShOLGgpLFtfLE11KE4pXX19fWZ1bmN0aW9uIHUobixlKXt2YXIgaT1yP3Q6cWEtdCxvPTA7cmV0dXJuIG48LWk/b3w9MTpuPmkmJihvfD0yKSxlPC1pP298PTQ6ZT5pJiYob3w9OCksb31yZXR1cm4gSGYobyxmdW5jdGlvbih0KXt2YXIgbixlLGYsYyxzO3JldHVybntsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtjPWY9ITEscz0xfSxwb2ludDpmdW5jdGlvbihsLGgpe3ZhciBkLHA9W2wsaF0sdj1vKGwsaCksZz1yP3Y/MDp1KGwsaCk6dj91KGwrKGw8MD9xYTotcWEpLGgpOjA7aWYoIW4mJihjPWY9dikmJnQubGluZVN0YXJ0KCksdiE9PWYmJighKGQ9YShuLHApKXx8cWYobixkKXx8cWYocCxkKSkmJihwWzBdKz1EYSxwWzFdKz1EYSx2PW8ocFswXSxwWzFdKSksdiE9PWYpcz0wLHY/KHQubGluZVN0YXJ0KCksZD1hKHAsbiksdC5wb2ludChkWzBdLGRbMV0pKTooZD1hKG4scCksdC5wb2ludChkWzBdLGRbMV0pLHQubGluZUVuZCgpKSxuPWQ7ZWxzZSBpZihpJiZuJiZyXnYpe3ZhciB5O2cmZXx8ISh5PWEocCxuLCEwKSl8fChzPTAscj8odC5saW5lU3RhcnQoKSx0LnBvaW50KHlbMF1bMF0seVswXVsxXSksdC5wb2ludCh5WzFdWzBdLHlbMV1bMV0pLHQubGluZUVuZCgpKToodC5wb2ludCh5WzFdWzBdLHlbMV1bMV0pLHQubGluZUVuZCgpLHQubGluZVN0YXJ0KCksdC5wb2ludCh5WzBdWzBdLHlbMF1bMV0pKSl9IXZ8fG4mJnFmKG4scCl8fHQucG9pbnQocFswXSxwWzFdKSxuPXAsZj12LGU9Z30sbGluZUVuZDpmdW5jdGlvbigpe2YmJnQubGluZUVuZCgpLG49bnVsbH0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gc3woYyYmZik8PDF9fX0sZnVuY3Rpb24obixyLGksbyl7TGYobyx0LGUsaSxuLHIpfSxyP1swLC10XTpbLXFhLHQtcWFdKX12YXIgJGY9MWU5LFdmPS0kZjtmdW5jdGlvbiBaZih0LG4sZSxyKXtmdW5jdGlvbiBpKGksbyl7cmV0dXJuIHQ8PWkmJmk8PWUmJm48PW8mJm88PXJ9ZnVuY3Rpb24gbyhpLG8sdSxjKXt2YXIgcz0wLGw9MDtpZihudWxsPT1pfHwocz1hKGksdSkpIT09KGw9YShvLHUpKXx8ZihpLG8pPDBedT4wKWRve2MucG9pbnQoMD09PXN8fDM9PT1zP3Q6ZSxzPjE/cjpuKX13aGlsZSgocz0ocyt1KzQpJTQpIT09bCk7ZWxzZSBjLnBvaW50KG9bMF0sb1sxXSl9ZnVuY3Rpb24gYShyLGkpe3JldHVybiBIYShyWzBdLXQpPERhP2k+MD8wOjM6SGEoclswXS1lKTxEYT9pPjA/MjoxOkhhKHJbMV0tbik8RGE/aT4wPzE6MDppPjA/MzoyfWZ1bmN0aW9uIHUodCxuKXtyZXR1cm4gZih0Lngsbi54KX1mdW5jdGlvbiBmKHQsbil7dmFyIGU9YSh0LDEpLHI9YShuLDEpO3JldHVybiBlIT09cj9lLXI6MD09PWU/blsxXS10WzFdOjE9PT1lP3RbMF0tblswXToyPT09ZT90WzFdLW5bMV06blswXS10WzBdfXJldHVybiBmdW5jdGlvbihhKXt2YXIgZixjLHMsbCxoLGQscCx2LGcseSxfLGI9YSxtPVVmKCkseD17cG9pbnQ6dyxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt4LnBvaW50PU0sYyYmYy5wdXNoKHM9W10pO3k9ITAsZz0hMSxwPXY9TmFOfSxsaW5lRW5kOmZ1bmN0aW9uKCl7ZiYmKE0obCxoKSxkJiZnJiZtLnJlam9pbigpLGYucHVzaChtLnJlc3VsdCgpKSk7eC5wb2ludD13LGcmJmIubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtiPW0sZj1bXSxjPVtdLF89ITB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt2YXIgbj1mdW5jdGlvbigpe2Zvcih2YXIgbj0wLGU9MCxpPWMubGVuZ3RoO2U8aTsrK2UpZm9yKHZhciBvLGEsdT1jW2VdLGY9MSxzPXUubGVuZ3RoLGw9dVswXSxoPWxbMF0sZD1sWzFdO2Y8czsrK2Ypbz1oLGE9ZCxsPXVbZl0saD1sWzBdLGQ9bFsxXSxhPD1yP2Q+ciYmKGgtbykqKHItYSk+KGQtYSkqKHQtbykmJisrbjpkPD1yJiYoaC1vKSooci1hKTwoZC1hKSoodC1vKSYmLS1uO3JldHVybiBufSgpLGU9XyYmbixpPShmPU4oZikpLmxlbmd0aDsoZXx8aSkmJihhLnBvbHlnb25TdGFydCgpLGUmJihhLmxpbmVTdGFydCgpLG8obnVsbCxudWxsLDEsYSksYS5saW5lRW5kKCkpLGkmJllmKGYsdSxuLG8sYSksYS5wb2x5Z29uRW5kKCkpO2I9YSxmPWM9cz1udWxsfX07ZnVuY3Rpb24gdyh0LG4pe2kodCxuKSYmYi5wb2ludCh0LG4pfWZ1bmN0aW9uIE0obyxhKXt2YXIgdT1pKG8sYSk7aWYoYyYmcy5wdXNoKFtvLGFdKSx5KWw9byxoPWEsZD11LHk9ITEsdSYmKGIubGluZVN0YXJ0KCksYi5wb2ludChvLGEpKTtlbHNlIGlmKHUmJmcpYi5wb2ludChvLGEpO2Vsc2V7dmFyIGY9W3A9TWF0aC5tYXgoV2YsTWF0aC5taW4oJGYscCkpLHY9TWF0aC5tYXgoV2YsTWF0aC5taW4oJGYsdikpXSxtPVtvPU1hdGgubWF4KFdmLE1hdGgubWluKCRmLG8pKSxhPU1hdGgubWF4KFdmLE1hdGgubWluKCRmLGEpKV07IWZ1bmN0aW9uKHQsbixlLHIsaSxvKXt2YXIgYSx1PXRbMF0sZj10WzFdLGM9MCxzPTEsbD1uWzBdLXUsaD1uWzFdLWY7aWYoYT1lLXUsbHx8IShhPjApKXtpZihhLz1sLGw8MCl7aWYoYTxjKXJldHVybjthPHMmJihzPWEpfWVsc2UgaWYobD4wKXtpZihhPnMpcmV0dXJuO2E+YyYmKGM9YSl9aWYoYT1pLXUsbHx8IShhPDApKXtpZihhLz1sLGw8MCl7aWYoYT5zKXJldHVybjthPmMmJihjPWEpfWVsc2UgaWYobD4wKXtpZihhPGMpcmV0dXJuO2E8cyYmKHM9YSl9aWYoYT1yLWYsaHx8IShhPjApKXtpZihhLz1oLGg8MCl7aWYoYTxjKXJldHVybjthPHMmJihzPWEpfWVsc2UgaWYoaD4wKXtpZihhPnMpcmV0dXJuO2E+YyYmKGM9YSl9aWYoYT1vLWYsaHx8IShhPDApKXtpZihhLz1oLGg8MCl7aWYoYT5zKXJldHVybjthPmMmJihjPWEpfWVsc2UgaWYoaD4wKXtpZihhPGMpcmV0dXJuO2E8cyYmKHM9YSl9cmV0dXJuIGM+MCYmKHRbMF09dStjKmwsdFsxXT1mK2MqaCksczwxJiYoblswXT11K3MqbCxuWzFdPWYrcypoKSwhMH19fX19KGYsbSx0LG4sZSxyKT91JiYoYi5saW5lU3RhcnQoKSxiLnBvaW50KG8sYSksXz0hMSk6KGd8fChiLmxpbmVTdGFydCgpLGIucG9pbnQoZlswXSxmWzFdKSksYi5wb2ludChtWzBdLG1bMV0pLHV8fGIubGluZUVuZCgpLF89ITEpfXA9byx2PWEsZz11fXJldHVybiB4fX12YXIgUWYsSmYsS2YsdGM9UGEoKSxuYz17c3BoZXJlOml1LHBvaW50Oml1LGxpbmVTdGFydDpmdW5jdGlvbigpe25jLnBvaW50PXJjLG5jLmxpbmVFbmQ9ZWN9LGxpbmVFbmQ6aXUscG9seWdvblN0YXJ0Oml1LHBvbHlnb25FbmQ6aXV9O2Z1bmN0aW9uIGVjKCl7bmMucG9pbnQ9bmMubGluZUVuZD1pdX1mdW5jdGlvbiByYyh0LG4pe1FmPXQqPUlhLEpmPVFhKG4qPUlhKSxLZj1HYShuKSxuYy5wb2ludD1pY31mdW5jdGlvbiBpYyh0LG4pe3QqPUlhO3ZhciBlPVFhKG4qPUlhKSxyPUdhKG4pLGk9SGEodC1RZiksbz1HYShpKSxhPXIqUWEoaSksdT1LZiplLUpmKnIqbyxmPUpmKmUrS2YqcipvO3RjLmFkZChYYShLYShhKmErdSp1KSxmKSksUWY9dCxKZj1lLEtmPXJ9ZnVuY3Rpb24gb2ModCl7cmV0dXJuIHRjLnJlc2V0KCksc3UodCxuYyksK3RjfXZhciBhYz1bbnVsbCxudWxsXSx1Yz17dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6YWN9O2Z1bmN0aW9uIGZjKHQsbil7cmV0dXJuIGFjWzBdPXQsYWNbMV09bixvYyh1Yyl9dmFyIGNjPXtGZWF0dXJlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGxjKHQuZ2VvbWV0cnksbil9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuZmVhdHVyZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihsYyhlW3JdLmdlb21ldHJ5LG4pKXJldHVybiEwO3JldHVybiExfX0sc2M9e1NwaGVyZTpmdW5jdGlvbigpe3JldHVybiEwfSxQb2ludDpmdW5jdGlvbih0LG4pe3JldHVybiBoYyh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXQuY29vcmRpbmF0ZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihoYyhlW3JdLG4pKXJldHVybiEwO3JldHVybiExfSxMaW5lU3RyaW5nOmZ1bmN0aW9uKHQsbil7cmV0dXJuIGRjKHQuY29vcmRpbmF0ZXMsbil9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10LmNvb3JkaW5hdGVzLHI9LTEsaT1lLmxlbmd0aDsrK3I8aTspaWYoZGMoZVtyXSxuKSlyZXR1cm4hMDtyZXR1cm4hMX0sUG9seWdvbjpmdW5jdGlvbih0LG4pe3JldHVybiBwYyh0LmNvb3JkaW5hdGVzLG4pfSxNdWx0aVBvbHlnb246ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9dC5jb29yZGluYXRlcyxyPS0xLGk9ZS5sZW5ndGg7KytyPGk7KWlmKHBjKGVbcl0sbikpcmV0dXJuITA7cmV0dXJuITF9LEdlb21ldHJ5Q29sbGVjdGlvbjpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT10Lmdlb21ldHJpZXMscj0tMSxpPWUubGVuZ3RoOysrcjxpOylpZihsYyhlW3JdLG4pKXJldHVybiEwO3JldHVybiExfX07ZnVuY3Rpb24gbGModCxuKXtyZXR1cm4hKCF0fHwhc2MuaGFzT3duUHJvcGVydHkodC50eXBlKSkmJnNjW3QudHlwZV0odCxuKX1mdW5jdGlvbiBoYyh0LG4pe3JldHVybiAwPT09ZmModCxuKX1mdW5jdGlvbiBkYyh0LG4pe3ZhciBlPWZjKHRbMF0sdFsxXSk7cmV0dXJuIGZjKHRbMF0sbikrZmMobix0WzFdKTw9ZStEYX1mdW5jdGlvbiBwYyh0LG4pe3JldHVybiEhSWYodC5tYXAodmMpLGdjKG4pKX1mdW5jdGlvbiB2Yyh0KXtyZXR1cm4odD10Lm1hcChnYykpLnBvcCgpLHR9ZnVuY3Rpb24gZ2ModCl7cmV0dXJuW3RbMF0qSWEsdFsxXSpJYV19ZnVuY3Rpb24geWModCxuLGUpe3ZhciByPWcodCxuLURhLGUpLmNvbmNhdChuKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHIubWFwKGZ1bmN0aW9uKG4pe3JldHVyblt0LG5dfSl9fWZ1bmN0aW9uIF9jKHQsbixlKXt2YXIgcj1nKHQsbi1EYSxlKS5jb25jYXQobik7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiByLm1hcChmdW5jdGlvbihuKXtyZXR1cm5bbix0XX0pfX1mdW5jdGlvbiBiYygpe3ZhciB0LG4sZSxyLGksbyxhLHUsZixjLHMsbCxoPTEwLGQ9aCxwPTkwLHY9MzYwLHk9Mi41O2Z1bmN0aW9uIF8oKXtyZXR1cm57dHlwZToiTXVsdGlMaW5lU3RyaW5nIixjb29yZGluYXRlczpiKCl9fWZ1bmN0aW9uIGIoKXtyZXR1cm4gZyhWYShyL3ApKnAsZSxwKS5tYXAocykuY29uY2F0KGcoVmEodS92KSp2LGEsdikubWFwKGwpKS5jb25jYXQoZyhWYShuL2gpKmgsdCxoKS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIEhhKHQlcCk+RGF9KS5tYXAoZikpLmNvbmNhdChnKFZhKG8vZCkqZCxpLGQpLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gSGEodCV2KT5EYX0pLm1hcChjKSl9cmV0dXJuIF8ubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYigpLm1hcChmdW5jdGlvbih0KXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6dH19KX0sXy5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltzKHIpLmNvbmNhdChsKGEpLnNsaWNlKDEpLHMoZSkucmV2ZXJzZSgpLnNsaWNlKDEpLGwodSkucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxfLmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLmV4dGVudE1ham9yKHQpLmV4dGVudE1pbm9yKHQpOl8uZXh0ZW50TWlub3IoKX0sXy5leHRlbnRNYWpvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdFswXVswXSxlPSt0WzFdWzBdLHU9K3RbMF1bMV0sYT0rdFsxXVsxXSxyPmUmJih0PXIscj1lLGU9dCksdT5hJiYodD11LHU9YSxhPXQpLF8ucHJlY2lzaW9uKHkpKTpbW3IsdV0sW2UsYV1dfSxfLmV4dGVudE1pbm9yPWZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPStlWzBdWzBdLHQ9K2VbMV1bMF0sbz0rZVswXVsxXSxpPStlWzFdWzFdLG4+dCYmKGU9bixuPXQsdD1lKSxvPmkmJihlPW8sbz1pLGk9ZSksXy5wcmVjaXNpb24oeSkpOltbbixvXSxbdCxpXV19LF8uc3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9fLnN0ZXBNYWpvcih0KS5zdGVwTWlub3IodCk6Xy5zdGVwTWlub3IoKX0sXy5zdGVwTWFqb3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9K3RbMF0sdj0rdFsxXSxfKTpbcCx2XX0sXy5zdGVwTWlub3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K3RbMF0sZD0rdFsxXSxfKTpbaCxkXX0sXy5wcmVjaXNpb249ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9K2gsZj15YyhvLGksOTApLGM9X2Mobix0LHkpLHM9eWModSxhLDkwKSxsPV9jKHIsZSx5KSxfKTp5fSxfLmV4dGVudE1ham9yKFtbLTE4MCwtOTArRGFdLFsxODAsOTAtRGFdXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC1EYV0sWzE4MCw4MCtEYV1dKX1mdW5jdGlvbiBtYyh0KXtyZXR1cm4gdH12YXIgeGMsd2MsTWMsQWMsVGM9UGEoKSxOYz1QYSgpLFNjPXtwb2ludDppdSxsaW5lU3RhcnQ6aXUsbGluZUVuZDppdSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtTYy5saW5lU3RhcnQ9RWMsU2MubGluZUVuZD1QY30scG9seWdvbkVuZDpmdW5jdGlvbigpe1NjLmxpbmVTdGFydD1TYy5saW5lRW5kPVNjLnBvaW50PWl1LFRjLmFkZChIYShOYykpLE5jLnJlc2V0KCl9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVRjLzI7cmV0dXJuIFRjLnJlc2V0KCksdH19O2Z1bmN0aW9uIEVjKCl7U2MucG9pbnQ9a2N9ZnVuY3Rpb24ga2ModCxuKXtTYy5wb2ludD1DYyx4Yz1NYz10LHdjPUFjPW59ZnVuY3Rpb24gQ2ModCxuKXtOYy5hZGQoQWMqdC1NYypuKSxNYz10LEFjPW59ZnVuY3Rpb24gUGMoKXtDYyh4Yyx3Yyl9dmFyIHpjPTEvMCxSYz16YyxMYz0temMsRGM9TGMsVWM9e3BvaW50OmZ1bmN0aW9uKHQsbil7dDx6YyYmKHpjPXQpO3Q+TGMmJihMYz10KTtuPFJjJiYoUmM9bik7bj5EYyYmKERjPW4pfSxsaW5lU3RhcnQ6aXUsbGluZUVuZDppdSxwb2x5Z29uU3RhcnQ6aXUscG9seWdvbkVuZDppdSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1bW3pjLFJjXSxbTGMsRGNdXTtyZXR1cm4gTGM9RGM9LShSYz16Yz0xLzApLHR9fTt2YXIgcWMsT2MsWWMsQmMsRmM9MCxJYz0wLEhjPTAsamM9MCxYYz0wLEdjPTAsVmM9MCwkYz0wLFdjPTAsWmM9e3BvaW50OlFjLGxpbmVTdGFydDpKYyxsaW5lRW5kOm5zLHBvbHlnb25TdGFydDpmdW5jdGlvbigpe1pjLmxpbmVTdGFydD1lcyxaYy5saW5lRW5kPXJzfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7WmMucG9pbnQ9UWMsWmMubGluZVN0YXJ0PUpjLFpjLmxpbmVFbmQ9bnN9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PVdjP1tWYy9XYywkYy9XY106R2M/W2pjL0djLFhjL0djXTpIYz9bRmMvSGMsSWMvSGNdOltOYU4sTmFOXTtyZXR1cm4gRmM9SWM9SGM9amM9WGM9R2M9VmM9JGM9V2M9MCx0fX07ZnVuY3Rpb24gUWModCxuKXtGYys9dCxJYys9biwrK0hjfWZ1bmN0aW9uIEpjKCl7WmMucG9pbnQ9S2N9ZnVuY3Rpb24gS2ModCxuKXtaYy5wb2ludD10cyxRYyhZYz10LEJjPW4pfWZ1bmN0aW9uIHRzKHQsbil7dmFyIGU9dC1ZYyxyPW4tQmMsaT1LYShlKmUrcipyKTtqYys9aSooWWMrdCkvMixYYys9aSooQmMrbikvMixHYys9aSxRYyhZYz10LEJjPW4pfWZ1bmN0aW9uIG5zKCl7WmMucG9pbnQ9UWN9ZnVuY3Rpb24gZXMoKXtaYy5wb2ludD1pc31mdW5jdGlvbiBycygpe29zKHFjLE9jKX1mdW5jdGlvbiBpcyh0LG4pe1pjLnBvaW50PW9zLFFjKHFjPVljPXQsT2M9QmM9bil9ZnVuY3Rpb24gb3ModCxuKXt2YXIgZT10LVljLHI9bi1CYyxpPUthKGUqZStyKnIpO2pjKz1pKihZYyt0KS8yLFhjKz1pKihCYytuKS8yLEdjKz1pLFZjKz0oaT1CYyp0LVljKm4pKihZYyt0KSwkYys9aSooQmMrbiksV2MrPTMqaSxRYyhZYz10LEJjPW4pfWZ1bmN0aW9uIGFzKHQpe3RoaXMuX2NvbnRleHQ9dH1hcy5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYWRpdXM9dCx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA9PT10aGlzLl9saW5lJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pLHRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX2NvbnRleHQubGluZVRvKHQsbik7YnJlYWs7ZGVmYXVsdDp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0K3RoaXMuX3JhZGl1cyxuKSx0aGlzLl9jb250ZXh0LmFyYyh0LG4sdGhpcy5fcmFkaXVzLDAsQmEpfX0scmVzdWx0Oml1fTt2YXIgdXMsZnMsY3Msc3MsbHMsaHM9UGEoKSxkcz17cG9pbnQ6aXUsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7ZHMucG9pbnQ9cHN9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt1cyYmdnMoZnMsY3MpLGRzLnBvaW50PWl1fSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt1cz0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3VzPW51bGx9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PStocztyZXR1cm4gaHMucmVzZXQoKSx0fX07ZnVuY3Rpb24gcHModCxuKXtkcy5wb2ludD12cyxmcz1zcz10LGNzPWxzPW59ZnVuY3Rpb24gdnModCxuKXtzcy09dCxscy09bixocy5hZGQoS2Eoc3Mqc3MrbHMqbHMpKSxzcz10LGxzPW59ZnVuY3Rpb24gZ3MoKXt0aGlzLl9zdHJpbmc9W119ZnVuY3Rpb24geXModCl7cmV0dXJuIm0wLCIrdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIistMip0KyJhIit0KyIsIit0KyIgMCAxLDEgMCwiKzIqdCsieiJ9ZnVuY3Rpb24gX3ModCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPW5ldyBicztmb3IodmFyIHIgaW4gdCllW3JdPXRbcl07cmV0dXJuIGUuc3RyZWFtPW4sZX19ZnVuY3Rpb24gYnMoKXt9ZnVuY3Rpb24gbXModCxuLGUpe3ZhciByPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG51bGwhPXImJnQuY2xpcEV4dGVudChudWxsKSxzdShlLHQuc3RyZWFtKFVjKSksbihVYy5yZXN1bHQoKSksbnVsbCE9ciYmdC5jbGlwRXh0ZW50KHIpLHR9ZnVuY3Rpb24geHModCxuLGUpe3JldHVybiBtcyh0LGZ1bmN0aW9uKGUpe3ZhciByPW5bMV1bMF0tblswXVswXSxpPW5bMV1bMV0tblswXVsxXSxvPU1hdGgubWluKHIvKGVbMV1bMF0tZVswXVswXSksaS8oZVsxXVsxXS1lWzBdWzFdKSksYT0rblswXVswXSsoci1vKihlWzFdWzBdK2VbMF1bMF0pKS8yLHU9K25bMF1bMV0rKGktbyooZVsxXVsxXStlWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpvKS50cmFuc2xhdGUoW2EsdV0pfSxlKX1mdW5jdGlvbiB3cyh0LG4sZSl7cmV0dXJuIHhzKHQsW1swLDBdLG5dLGUpfWZ1bmN0aW9uIE1zKHQsbixlKXtyZXR1cm4gbXModCxmdW5jdGlvbihlKXt2YXIgcj0rbixpPXIvKGVbMV1bMF0tZVswXVswXSksbz0oci1pKihlWzFdWzBdK2VbMF1bMF0pKS8yLGE9LWkqZVswXVsxXTt0LnNjYWxlKDE1MCppKS50cmFuc2xhdGUoW28sYV0pfSxlKX1mdW5jdGlvbiBBcyh0LG4sZSl7cmV0dXJuIG1zKHQsZnVuY3Rpb24oZSl7dmFyIHI9K24saT1yLyhlWzFdWzFdLWVbMF1bMV0pLG89LWkqZVswXVswXSxhPShyLWkqKGVbMV1bMV0rZVswXVsxXSkpLzI7dC5zY2FsZSgxNTAqaSkudHJhbnNsYXRlKFtvLGFdKX0sZSl9Z3MucHJvdG90eXBlPXtfcmFkaXVzOjQuNSxfY2lyY2xlOnlzKDQuNSkscG9pbnRSYWRpdXM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ9K3QpIT09dGhpcy5fcmFkaXVzJiYodGhpcy5fcmFkaXVzPXQsdGhpcy5fY2lyY2xlPW51bGwpLHRoaXN9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7MD09PXRoaXMuX2xpbmUmJnRoaXMuX3N0cmluZy5wdXNoKCJaIiksdGhpcy5fcG9pbnQ9TmFOfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixuKSx0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9zdHJpbmcucHVzaCgiTCIsdCwiLCIsbik7YnJlYWs7ZGVmYXVsdDpudWxsPT10aGlzLl9jaXJjbGUmJih0aGlzLl9jaXJjbGU9eXModGhpcy5fcmFkaXVzKSksdGhpcy5fc3RyaW5nLnB1c2goIk0iLHQsIiwiLG4sdGhpcy5fY2lyY2xlKX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9cmV0dXJuIG51bGx9fSxicy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmJzLHBvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5zdHJlYW0ucG9pbnQodCxuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25FbmQoKX19O3ZhciBUcz0xNixOcz1HYSgzMCpJYSk7ZnVuY3Rpb24gU3ModCxuKXtyZXR1cm4rbj9mdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUocixpLG8sYSx1LGYsYyxzLGwsaCxkLHAsdixnKXt2YXIgeT1jLXIsXz1zLWksYj15KnkrXypfO2lmKGI+NCpuJiZ2LS0pe3ZhciBtPWEraCx4PXUrZCx3PWYrcCxNPUthKG0qbSt4Kngrdyp3KSxBPWV1KHcvPU0pLFQ9SGEoSGEodyktMSk8RGF8fEhhKG8tbCk8RGE/KG8rbCkvMjpYYSh4LG0pLE49dChULEEpLFM9TlswXSxFPU5bMV0saz1TLXIsQz1FLWksUD1fKmsteSpDOyhQKlAvYj5ufHxIYSgoeSprK18qQykvYi0uNSk+LjN8fGEqaCt1KmQrZipwPE5zKSYmKGUocixpLG8sYSx1LGYsUyxFLFQsbS89TSx4Lz1NLHcsdixnKSxnLnBvaW50KFMsRSksZShTLEUsVCxtLHgsdyxjLHMsbCxoLGQscCx2LGcpKX19cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByLGksbyxhLHUsZixjLHMsbCxoLGQscCx2PXtwb2ludDpnLGxpbmVTdGFydDp5LGxpbmVFbmQ6Yixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25TdGFydCgpLHYubGluZVN0YXJ0PW19LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtuLnBvbHlnb25FbmQoKSx2LmxpbmVTdGFydD15fX07ZnVuY3Rpb24gZyhlLHIpe2U9dChlLHIpLG4ucG9pbnQoZVswXSxlWzFdKX1mdW5jdGlvbiB5KCl7cz1OYU4sdi5wb2ludD1fLG4ubGluZVN0YXJ0KCl9ZnVuY3Rpb24gXyhyLGkpe3ZhciBvPUF1KFtyLGldKSxhPXQocixpKTtlKHMsbCxjLGgsZCxwLHM9YVswXSxsPWFbMV0sYz1yLGg9b1swXSxkPW9bMV0scD1vWzJdLFRzLG4pLG4ucG9pbnQocyxsKX1mdW5jdGlvbiBiKCl7di5wb2ludD1nLG4ubGluZUVuZCgpfWZ1bmN0aW9uIG0oKXt5KCksdi5wb2ludD14LHYubGluZUVuZD13fWZ1bmN0aW9uIHgodCxuKXtfKHI9dCxuKSxpPXMsbz1sLGE9aCx1PWQsZj1wLHYucG9pbnQ9X31mdW5jdGlvbiB3KCl7ZShzLGwsYyxoLGQscCxpLG8scixhLHUsZixUcyxuKSx2LmxpbmVFbmQ9YixiKCl9cmV0dXJuIHZ9fSh0LG4pOmZ1bmN0aW9uKHQpe3JldHVybiBfcyh7cG9pbnQ6ZnVuY3Rpb24obixlKXtuPXQobixlKSx0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfSh0KX12YXIgRXM9X3Moe3BvaW50OmZ1bmN0aW9uKHQsbil7dGhpcy5zdHJlYW0ucG9pbnQodCpJYSxuKklhKX19KTtmdW5jdGlvbiBrcyh0LG4sZSxyKXt2YXIgaT1HYShyKSxvPVFhKHIpLGE9aSp0LHU9byp0LGY9aS90LGM9by90LHM9KG8qZS1pKm4pL3QsbD0obypuK2kqZSkvdDtmdW5jdGlvbiBoKHQscil7cmV0dXJuW2EqdC11KnIrbixlLXUqdC1hKnJdfXJldHVybiBoLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVybltmKnQtYypuK3MsbC1jKnQtZipuXX0saH1mdW5jdGlvbiBDcyh0KXtyZXR1cm4gUHMoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKCl9ZnVuY3Rpb24gUHModCl7dmFyIG4sZSxyLGksbyxhLHUsZixjLHMsbD0xNTAsaD00ODAsZD0yNTAscD0wLHY9MCxnPTAseT0wLF89MCxiPTAsbT1udWxsLHg9R2Ysdz1udWxsLE09bWMsQT0uNTtmdW5jdGlvbiBUKHQpe3JldHVybiBmKHRbMF0qSWEsdFsxXSpJYSl9ZnVuY3Rpb24gTih0KXtyZXR1cm4odD1mLmludmVydCh0WzBdLHRbMV0pKSYmW3RbMF0qRmEsdFsxXSpGYV19ZnVuY3Rpb24gUygpe3ZhciB0PWtzKGwsMCwwLGIpLmFwcGx5KG51bGwsbihwLHYpKSxyPShiP2tzOmZ1bmN0aW9uKHQsbixlKXtmdW5jdGlvbiByKHIsaSl7cmV0dXJuW24rdCpyLGUtdCppXX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24ocixpKXtyZXR1cm5bKHItbikvdCwoZS1pKS90XX0scn0pKGwsaC10WzBdLGQtdFsxXSxiKTtyZXR1cm4gZT1rZihnLHksXyksdT1TZihuLHIpLGY9U2YoZSx1KSxhPVNzKHUsQSksRSgpfWZ1bmN0aW9uIEUoKXtyZXR1cm4gYz1zPW51bGwsVH1yZXR1cm4gVC5zdHJlYW09ZnVuY3Rpb24odCl7cmV0dXJuIGMmJnM9PT10P2M6Yz1FcyhmdW5jdGlvbih0KXtyZXR1cm4gX3Moe3BvaW50OmZ1bmN0aW9uKG4sZSl7dmFyIHI9dChuLGUpO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChyWzBdLHJbMV0pfX0pfShlKSh4KGEoTShzPXQpKSkpKX0sVC5wcmVjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PXQsbT12b2lkIDAsRSgpKTp4fSxULnBvc3RjbGlwPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPXQsdz1yPWk9bz1udWxsLEUoKSk6TX0sVC5jbGlwQW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9K3Q/VmYobT10KklhKToobT1udWxsLEdmKSxFKCkpOm0qRmF9LFQuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT1udWxsPT10Pyh3PXI9aT1vPW51bGwsbWMpOlpmKHc9K3RbMF1bMF0scj0rdFswXVsxXSxpPSt0WzFdWzBdLG89K3RbMV1bMV0pLEUoKSk6bnVsbD09dz9udWxsOltbdyxyXSxbaSxvXV19LFQuc2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3QsUygpKTpsfSxULnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0rdFswXSxkPSt0WzFdLFMoKSk6W2gsZF19LFQuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPXRbMF0lMzYwKklhLHY9dFsxXSUzNjAqSWEsUygpKTpbcCpGYSx2KkZhXX0sVC5yb3RhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9dFswXSUzNjAqSWEseT10WzFdJTM2MCpJYSxfPXQubGVuZ3RoPjI/dFsyXSUzNjAqSWE6MCxTKCkpOltnKkZhLHkqRmEsXypGYV19LFQuYW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9dCUzNjAqSWEsUygpKTpiKkZhfSxULnByZWNpc2lvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT1Tcyh1LEE9dCp0KSxFKCkpOkthKEEpfSxULmZpdEV4dGVudD1mdW5jdGlvbih0LG4pe3JldHVybiB4cyhULHQsbil9LFQuZml0U2l6ZT1mdW5jdGlvbih0LG4pe3JldHVybiB3cyhULHQsbil9LFQuZml0V2lkdGg9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTXMoVCx0LG4pfSxULmZpdEhlaWdodD1mdW5jdGlvbih0LG4pe3JldHVybiBBcyhULHQsbil9LGZ1bmN0aW9uKCl7cmV0dXJuIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksVC5pbnZlcnQ9bi5pbnZlcnQmJk4sUygpfX1mdW5jdGlvbiB6cyh0KXt2YXIgbj0wLGU9cWEvMyxyPVBzKHQpLGk9cihuLGUpO3JldHVybiBpLnBhcmFsbGVscz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKG49dFswXSpJYSxlPXRbMV0qSWEpOltuKkZhLGUqRmFdfSxpfWZ1bmN0aW9uIFJzKHQsbil7dmFyIGU9UWEodCkscj0oZStRYShuKSkvMjtpZihIYShyKTxEYSlyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49R2EodCk7ZnVuY3Rpb24gZSh0LGUpe3JldHVyblt0Km4sUWEoZSkvbl19cmV0dXJuIGUuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuW3QvbixldShlKm4pXX0sZX0odCk7dmFyIGk9MStlKigyKnItZSksbz1LYShpKS9yO2Z1bmN0aW9uIGEodCxuKXt2YXIgZT1LYShpLTIqcipRYShuKSkvcjtyZXR1cm5bZSpRYSh0Kj1yKSxvLWUqR2EodCldfXJldHVybiBhLmludmVydD1mdW5jdGlvbih0LG4pe3ZhciBlPW8tbjtyZXR1cm5bWGEodCxIYShlKSkvcipKYShlKSxldSgoaS0odCp0K2UqZSkqcipyKS8oMipyKSldfSxhfWZ1bmN0aW9uIExzKCl7cmV0dXJuIHpzKFJzKS5zY2FsZSgxNTUuNDI0KS5jZW50ZXIoWzAsMzMuNjQ0Ml0pfWZ1bmN0aW9uIERzKCl7cmV0dXJuIExzKCkucGFyYWxsZWxzKFsyOS41LDQ1LjVdKS5zY2FsZSgxMDcwKS50cmFuc2xhdGUoWzQ4MCwyNTBdKS5yb3RhdGUoWzk2LDBdKS5jZW50ZXIoWy0uNiwzOC43XSl9ZnVuY3Rpb24gVXModCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9R2EobiksaT1HYShlKSxvPXQocippKTtyZXR1cm5bbyppKlFhKG4pLG8qUWEoZSldfX1mdW5jdGlvbiBxcyh0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj1LYShuKm4rZSplKSxpPXQociksbz1RYShpKSxhPUdhKGkpO3JldHVybltYYShuKm8sciphKSxldShyJiZlKm8vcildfX12YXIgT3M9VXMoZnVuY3Rpb24odCl7cmV0dXJuIEthKDIvKDErdCkpfSk7T3MuaW52ZXJ0PXFzKGZ1bmN0aW9uKHQpe3JldHVybiAyKmV1KHQvMil9KTt2YXIgWXM9VXMoZnVuY3Rpb24odCl7cmV0dXJuKHQ9bnUodCkpJiZ0L1FhKHQpfSk7ZnVuY3Rpb24gQnModCxuKXtyZXR1cm5bdCxXYSh0dSgoT2ErbikvMikpXX1mdW5jdGlvbiBGcyh0KXt2YXIgbixlLHIsaT1Dcyh0KSxvPWkuY2VudGVyLGE9aS5zY2FsZSx1PWkudHJhbnNsYXRlLGY9aS5jbGlwRXh0ZW50LGM9bnVsbDtmdW5jdGlvbiBzKCl7dmFyIG89cWEqYSgpLHU9aShSZihpLnJvdGF0ZSgpKS5pbnZlcnQoWzAsMF0pKTtyZXR1cm4gZihudWxsPT1jP1tbdVswXS1vLHVbMV0tb10sW3VbMF0rbyx1WzFdK29dXTp0PT09QnM/W1tNYXRoLm1heCh1WzBdLW8sYyksbl0sW01hdGgubWluKHVbMF0rbyxlKSxyXV06W1tjLE1hdGgubWF4KHVbMV0tbyxuKV0sW2UsTWF0aC5taW4odVsxXStvLHIpXV0pfXJldHVybiBpLnNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhKHQpLHMoKSk6YSgpfSxpLnRyYW5zbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odSh0KSxzKCkpOnUoKX0saS5jZW50ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8odCkscygpKTpvKCl9LGkuY2xpcEV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9jPW49ZT1yPW51bGw6KGM9K3RbMF1bMF0sbj0rdFswXVsxXSxlPSt0WzFdWzBdLHI9K3RbMV1bMV0pLHMoKSk6bnVsbD09Yz9udWxsOltbYyxuXSxbZSxyXV19LHMoKX1mdW5jdGlvbiBJcyh0KXtyZXR1cm4gdHUoKE9hK3QpLzIpfWZ1bmN0aW9uIEhzKHQsbil7dmFyIGU9R2EodCkscj10PT09bj9RYSh0KTpXYShlL0dhKG4pKS9XYShJcyhuKS9Jcyh0KSksaT1lKlphKElzKHQpLHIpL3I7aWYoIXIpcmV0dXJuIEJzO2Z1bmN0aW9uIG8odCxuKXtpPjA/bjwtT2ErRGEmJihuPS1PYStEYSk6bj5PYS1EYSYmKG49T2EtRGEpO3ZhciBlPWkvWmEoSXMobikscik7cmV0dXJuW2UqUWEocip0KSxpLWUqR2Eocip0KV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9aS1uLG89SmEocikqS2EodCp0K2UqZSk7cmV0dXJuW1hhKHQsSGEoZSkpL3IqSmEoZSksMipqYShaYShpL28sMS9yKSktT2FdfSxvfWZ1bmN0aW9uIGpzKHQsbil7cmV0dXJuW3Qsbl19ZnVuY3Rpb24gWHModCxuKXt2YXIgZT1HYSh0KSxyPXQ9PT1uP1FhKHQpOihlLUdhKG4pKS8obi10KSxpPWUvcit0O2lmKEhhKHIpPERhKXJldHVybiBqcztmdW5jdGlvbiBvKHQsbil7dmFyIGU9aS1uLG89cip0O3JldHVybltlKlFhKG8pLGktZSpHYShvKV19cmV0dXJuIG8uaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGU9aS1uO3JldHVybltYYSh0LEhhKGUpKS9yKkphKGUpLGktSmEocikqS2EodCp0K2UqZSldfSxvfVlzLmludmVydD1xcyhmdW5jdGlvbih0KXtyZXR1cm4gdH0pLEJzLmludmVydD1mdW5jdGlvbih0LG4pe3JldHVyblt0LDIqamEoJGEobikpLU9hXX0sanMuaW52ZXJ0PWpzO3ZhciBHcz0xLjM0MDI2NCxWcz0tLjA4MTEwNiwkcz04OTNlLTYsV3M9LjAwMzc5Nixacz1LYSgzKS8yO2Z1bmN0aW9uIFFzKHQsbil7dmFyIGU9ZXUoWnMqUWEobikpLHI9ZSplLGk9cipyKnI7cmV0dXJuW3QqR2EoZSkvKFpzKihHcyszKlZzKnIraSooNyokcys5KldzKnIpKSksZSooR3MrVnMqcitpKigkcytXcypyKSldfWZ1bmN0aW9uIEpzKHQsbil7dmFyIGU9R2Eobikscj1HYSh0KSplO3JldHVybltlKlFhKHQpL3IsUWEobikvcl19ZnVuY3Rpb24gS3ModCxuLGUscil7cmV0dXJuIDE9PT10JiYxPT09biYmMD09PWUmJjA9PT1yP21jOl9zKHtwb2ludDpmdW5jdGlvbihpLG8pe3RoaXMuc3RyZWFtLnBvaW50KGkqdCtlLG8qbityKX19KX1mdW5jdGlvbiB0bCh0LG4pe3ZhciBlPW4qbixyPWUqZTtyZXR1cm5bdCooLjg3MDctLjEzMTk3OSplK3IqKHIqKC4wMDM5NzEqZS0uMDAxNTI5KnIpLS4wMTM3OTEpKSxuKigxLjAwNzIyNitlKiguMDE1MDg1K3IqKC4wMjg4NzQqZS0uMDQ0NDc1LS4wMDU5MTYqcikpKV19ZnVuY3Rpb24gbmwodCxuKXtyZXR1cm5bR2EobikqUWEodCksUWEobildfWZ1bmN0aW9uIGVsKHQsbil7dmFyIGU9R2Eobikscj0xK0dhKHQpKmU7cmV0dXJuW2UqUWEodCkvcixRYShuKS9yXX1mdW5jdGlvbiBybCh0LG4pe3JldHVybltXYSh0dSgoT2ErbikvMikpLC10XX1mdW5jdGlvbiBpbCh0LG4pe3JldHVybiB0LnBhcmVudD09PW4ucGFyZW50PzE6Mn1mdW5jdGlvbiBvbCh0LG4pe3JldHVybiB0K24ueH1mdW5jdGlvbiBhbCh0LG4pe3JldHVybiBNYXRoLm1heCh0LG4ueSl9ZnVuY3Rpb24gdWwodCl7dmFyIG49MCxlPXQuY2hpbGRyZW4scj1lJiZlLmxlbmd0aDtpZihyKWZvcig7LS1yPj0wOyluKz1lW3JdLnZhbHVlO2Vsc2Ugbj0xO3QudmFsdWU9bn1mdW5jdGlvbiBmbCh0LG4pe3ZhciBlLHIsaSxvLGEsdT1uZXcgaGwodCksZj0rdC52YWx1ZSYmKHUudmFsdWU9dC52YWx1ZSksYz1bdV07Zm9yKG51bGw9PW4mJihuPWNsKTtlPWMucG9wKCk7KWlmKGYmJihlLnZhbHVlPStlLmRhdGEudmFsdWUpLChpPW4oZS5kYXRhKSkmJihhPWkubGVuZ3RoKSlmb3IoZS5jaGlsZHJlbj1uZXcgQXJyYXkoYSksbz1hLTE7bz49MDstLW8pYy5wdXNoKHI9ZS5jaGlsZHJlbltvXT1uZXcgaGwoaVtvXSkpLHIucGFyZW50PWUsci5kZXB0aD1lLmRlcHRoKzE7cmV0dXJuIHUuZWFjaEJlZm9yZShsbCl9ZnVuY3Rpb24gY2wodCl7cmV0dXJuIHQuY2hpbGRyZW59ZnVuY3Rpb24gc2wodCl7dC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIGxsKHQpe3ZhciBuPTA7ZG97dC5oZWlnaHQ9bn13aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrbil9ZnVuY3Rpb24gaGwodCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9UXMuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlLHI9bixpPXIqcixvPWkqaSppLGE9MDthPDEyJiYobz0oaT0oci09ZT0ociooR3MrVnMqaStvKigkcytXcyppKSktbikvKEdzKzMqVnMqaStvKig3KiRzKzkqV3MqaSkpKSpyKSppKmksIShIYShlKTxVYSkpOysrYSk7cmV0dXJuW1pzKnQqKEdzKzMqVnMqaStvKig3KiRzKzkqV3MqaSkpL0dhKHIpLGV1KFFhKHIpL1pzKV19LEpzLmludmVydD1xcyhqYSksdGwuaW52ZXJ0PWZ1bmN0aW9uKHQsbil7dmFyIGUscj1uLGk9MjU7ZG97dmFyIG89cipyLGE9bypvO3ItPWU9KHIqKDEuMDA3MjI2K28qKC4wMTUwODUrYSooLjAyODg3NCpvLS4wNDQ0NzUtLjAwNTkxNiphKSkpLW4pLygxLjAwNzIyNitvKiguMDQ1MjU1K2EqKC4yNTk4NjYqby0uMzExMzI1LS4wMDU5MTYqMTEqYSkpKX13aGlsZShIYShlKT5EYSYmLS1pPjApO3JldHVyblt0LyguODcwNysobz1yKnIpKihvKihvKm8qbyooLjAwMzk3MS0uMDAxNTI5Km8pLS4wMTM3OTEpLS4xMzE5NzkpKSxyXX0sbmwuaW52ZXJ0PXFzKGV1KSxlbC5pbnZlcnQ9cXMoZnVuY3Rpb24odCl7cmV0dXJuIDIqamEodCl9KSxybC5pbnZlcnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5bLW4sMipqYSgkYSh0KSktT2FdfSxobC5wcm90b3R5cGU9ZmwucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpobCxjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2hBZnRlcih1bCl9LGVhY2g6ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGksbz10aGlzLGE9W29dO2Rve2ZvcihuPWEucmV2ZXJzZSgpLGE9W107bz1uLnBvcCgpOylpZih0KG8pLGU9by5jaGlsZHJlbilmb3Iocj0wLGk9ZS5sZW5ndGg7cjxpOysrcilhLnB1c2goZVtyXSl9d2hpbGUoYS5sZW5ndGgpO3JldHVybiB0aGlzfSxlYWNoQWZ0ZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGUscixpPXRoaXMsbz1baV0sYT1bXTtpPW8ucG9wKCk7KWlmKGEucHVzaChpKSxuPWkuY2hpbGRyZW4pZm9yKGU9MCxyPW4ubGVuZ3RoO2U8cjsrK2Upby5wdXNoKG5bZV0pO2Zvcig7aT1hLnBvcCgpOyl0KGkpO3JldHVybiB0aGlzfSxlYWNoQmVmb3JlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9dGhpcyxpPVtyXTtyPWkucG9wKCk7KWlmKHQociksbj1yLmNoaWxkcmVuKWZvcihlPW4ubGVuZ3RoLTE7ZT49MDstLWUpaS5wdXNoKG5bZV0pO3JldHVybiB0aGlzfSxzdW06ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaEFmdGVyKGZ1bmN0aW9uKG4pe2Zvcih2YXIgZT0rdChuLmRhdGEpfHwwLHI9bi5jaGlsZHJlbixpPXImJnIubGVuZ3RoOy0taT49MDspZSs9cltpXS52YWx1ZTtuLnZhbHVlPWV9KX0sc29ydDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG4pe24uY2hpbGRyZW4mJm4uY2hpbGRyZW4uc29ydCh0KX0pfSxwYXRoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLGU9ZnVuY3Rpb24odCxuKXtpZih0PT09bilyZXR1cm4gdDt2YXIgZT10LmFuY2VzdG9ycygpLHI9bi5hbmNlc3RvcnMoKSxpPW51bGw7Zm9yKHQ9ZS5wb3AoKSxuPXIucG9wKCk7dD09PW47KWk9dCx0PWUucG9wKCksbj1yLnBvcCgpO3JldHVybiBpfShuLHQpLHI9W25dO24hPT1lOyluPW4ucGFyZW50LHIucHVzaChuKTtmb3IodmFyIGk9ci5sZW5ndGg7dCE9PWU7KXIuc3BsaWNlKGksMCx0KSx0PXQucGFyZW50O3JldHVybiByfSxhbmNlc3RvcnM6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxuPVt0XTt0PXQucGFyZW50OyluLnB1c2godCk7cmV0dXJuIG59LGRlc2NlbmRhbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihuKXt0LnB1c2gobil9KSx0fSxsZWF2ZXM6ZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy5lYWNoQmVmb3JlKGZ1bmN0aW9uKG4pe24uY2hpbGRyZW58fHQucHVzaChuKX0pLHR9LGxpbmtzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPVtdO3JldHVybiB0LmVhY2goZnVuY3Rpb24oZSl7ZSE9PXQmJm4ucHVzaCh7c291cmNlOmUucGFyZW50LHRhcmdldDplfSl9KSxufSxjb3B5OmZ1bmN0aW9uKCl7cmV0dXJuIGZsKHRoaXMpLmVhY2hCZWZvcmUoc2wpfX07dmFyIGRsPUFycmF5LnByb3RvdHlwZS5zbGljZTtmdW5jdGlvbiBwbCh0KXtmb3IodmFyIG4sZSxyPTAsaT0odD1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyPXQubGVuZ3RoO3I7KWU9TWF0aC5yYW5kb20oKSpyLS18MCxuPXRbcl0sdFtyXT10W2VdLHRbZV09bjtyZXR1cm4gdH0oZGwuY2FsbCh0KSkpLmxlbmd0aCxvPVtdO3I8aTspbj10W3JdLGUmJnlsKGUsbik/KytyOihlPWJsKG89dmwobyxuKSkscj0wKTtyZXR1cm4gZX1mdW5jdGlvbiB2bCh0LG4pe3ZhciBlLHI7aWYoX2wobix0KSlyZXR1cm5bbl07Zm9yKGU9MDtlPHQubGVuZ3RoOysrZSlpZihnbChuLHRbZV0pJiZfbChtbCh0W2VdLG4pLHQpKXJldHVyblt0W2VdLG5dO2ZvcihlPTA7ZTx0Lmxlbmd0aC0xOysrZSlmb3Iocj1lKzE7cjx0Lmxlbmd0aDsrK3IpaWYoZ2wobWwodFtlXSx0W3JdKSxuKSYmZ2wobWwodFtlXSxuKSx0W3JdKSYmZ2wobWwodFtyXSxuKSx0W2VdKSYmX2woeGwodFtlXSx0W3JdLG4pLHQpKXJldHVyblt0W2VdLHRbcl0sbl07dGhyb3cgbmV3IEVycm9yfWZ1bmN0aW9uIGdsKHQsbil7dmFyIGU9dC5yLW4ucixyPW4ueC10LngsaT1uLnktdC55O3JldHVybiBlPDB8fGUqZTxyKnIraSppfWZ1bmN0aW9uIHlsKHQsbil7dmFyIGU9dC5yLW4ucisxZS02LHI9bi54LXQueCxpPW4ueS10Lnk7cmV0dXJuIGU+MCYmZSplPnIqcitpKml9ZnVuY3Rpb24gX2wodCxuKXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoOysrZSlpZigheWwodCxuW2VdKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBibCh0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpyZXR1cm57eDoobj10WzBdKS54LHk6bi55LHI6bi5yfTtjYXNlIDI6cmV0dXJuIG1sKHRbMF0sdFsxXSk7Y2FzZSAzOnJldHVybiB4bCh0WzBdLHRbMV0sdFsyXSl9dmFyIG59ZnVuY3Rpb24gbWwodCxuKXt2YXIgZT10Lngscj10LnksaT10LnIsbz1uLngsYT1uLnksdT1uLnIsZj1vLWUsYz1hLXIscz11LWksbD1NYXRoLnNxcnQoZipmK2MqYyk7cmV0dXJue3g6KGUrbytmL2wqcykvMix5OihyK2ErYy9sKnMpLzIscjoobCtpK3UpLzJ9fWZ1bmN0aW9uIHhsKHQsbixlKXt2YXIgcj10LngsaT10Lnksbz10LnIsYT1uLngsdT1uLnksZj1uLnIsYz1lLngscz1lLnksbD1lLnIsaD1yLWEsZD1yLWMscD1pLXUsdj1pLXMsZz1mLW8seT1sLW8sXz1yKnIraSppLW8qbyxiPV8tYSphLXUqdStmKmYsbT1fLWMqYy1zKnMrbCpsLHg9ZCpwLWgqdix3PShwKm0tdipiKS8oMip4KS1yLE09KHYqZy1wKnkpL3gsQT0oZCpiLWgqbSkvKDIqeCktaSxUPShoKnktZCpnKS94LE49TSpNK1QqVC0xLFM9Mioobyt3Kk0rQSpUKSxFPXcqdytBKkEtbypvLGs9LShOPyhTK01hdGguc3FydChTKlMtNCpOKkUpKS8oMipOKTpFL1MpO3JldHVybnt4OnIrdytNKmsseTppK0ErVCprLHI6a319ZnVuY3Rpb24gd2wodCxuLGUpe3ZhciByLGksbyxhLHU9dC54LW4ueCxmPXQueS1uLnksYz11KnUrZipmO2M/KGk9bi5yK2UucixpKj1pLGE9dC5yK2UucixpPihhKj1hKT8ocj0oYythLWkpLygyKmMpLG89TWF0aC5zcXJ0KE1hdGgubWF4KDAsYS9jLXIqcikpLGUueD10Lngtcip1LW8qZixlLnk9dC55LXIqZitvKnUpOihyPShjK2ktYSkvKDIqYyksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxpL2MtcipyKSksZS54PW4ueCtyKnUtbypmLGUueT1uLnkrcipmK28qdSkpOihlLng9bi54K2UucixlLnk9bi55KX1mdW5jdGlvbiBNbCh0LG4pe3ZhciBlPXQucituLnItMWUtNixyPW4ueC10LngsaT1uLnktdC55O3JldHVybiBlPjAmJmUqZT5yKnIraSppfWZ1bmN0aW9uIEFsKHQpe3ZhciBuPXQuXyxlPXQubmV4dC5fLHI9bi5yK2UucixpPShuLngqZS5yK2UueCpuLnIpL3Isbz0obi55KmUucitlLnkqbi5yKS9yO3JldHVybiBpKmkrbypvfWZ1bmN0aW9uIFRsKHQpe3RoaXMuXz10LHRoaXMubmV4dD1udWxsLHRoaXMucHJldmlvdXM9bnVsbH1mdW5jdGlvbiBObCh0KXtpZighKGk9dC5sZW5ndGgpKXJldHVybiAwO3ZhciBuLGUscixpLG8sYSx1LGYsYyxzLGw7aWYoKG49dFswXSkueD0wLG4ueT0wLCEoaT4xKSlyZXR1cm4gbi5yO2lmKGU9dFsxXSxuLng9LWUucixlLng9bi5yLGUueT0wLCEoaT4yKSlyZXR1cm4gbi5yK2Uucjt3bChlLG4scj10WzJdKSxuPW5ldyBUbChuKSxlPW5ldyBUbChlKSxyPW5ldyBUbChyKSxuLm5leHQ9ci5wcmV2aW91cz1lLGUubmV4dD1uLnByZXZpb3VzPXIsci5uZXh0PWUucHJldmlvdXM9bjt0OmZvcih1PTM7dTxpOysrdSl7d2wobi5fLGUuXyxyPXRbdV0pLHI9bmV3IFRsKHIpLGY9ZS5uZXh0LGM9bi5wcmV2aW91cyxzPWUuXy5yLGw9bi5fLnI7ZG97aWYoczw9bCl7aWYoTWwoZi5fLHIuXykpe2U9ZixuLm5leHQ9ZSxlLnByZXZpb3VzPW4sLS11O2NvbnRpbnVlIHR9cys9Zi5fLnIsZj1mLm5leHR9ZWxzZXtpZihNbChjLl8sci5fKSl7KG49YykubmV4dD1lLGUucHJldmlvdXM9biwtLXU7Y29udGludWUgdH1sKz1jLl8ucixjPWMucHJldmlvdXN9fXdoaWxlKGYhPT1jLm5leHQpO2ZvcihyLnByZXZpb3VzPW4sci5uZXh0PWUsbi5uZXh0PWUucHJldmlvdXM9ZT1yLG89QWwobik7KHI9ci5uZXh0KSE9PWU7KShhPUFsKHIpKTxvJiYobj1yLG89YSk7ZT1uLm5leHR9Zm9yKG49W2UuX10scj1lOyhyPXIubmV4dCkhPT1lOyluLnB1c2goci5fKTtmb3Iocj1wbChuKSx1PTA7dTxpOysrdSkobj10W3VdKS54LT1yLngsbi55LT1yLnk7cmV0dXJuIHIucn1mdW5jdGlvbiBTbCh0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIHR9ZnVuY3Rpb24gRWwoKXtyZXR1cm4gMH1mdW5jdGlvbiBrbCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gQ2wodCl7cmV0dXJuIE1hdGguc3FydCh0LnZhbHVlKX1mdW5jdGlvbiBQbCh0KXtyZXR1cm4gZnVuY3Rpb24obil7bi5jaGlsZHJlbnx8KG4ucj1NYXRoLm1heCgwLCt0KG4pfHwwKSl9fWZ1bmN0aW9uIHpsKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHI9ZS5jaGlsZHJlbil7dmFyIHIsaSxvLGE9ci5sZW5ndGgsdT10KGUpKm58fDA7aWYodSlmb3IoaT0wO2k8YTsrK2kpcltpXS5yKz11O2lmKG89TmwociksdSlmb3IoaT0wO2k8YTsrK2kpcltpXS5yLT11O2Uucj1vK3V9fX1mdW5jdGlvbiBSbCh0KXtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGU9bi5wYXJlbnQ7bi5yKj10LGUmJihuLng9ZS54K3Qqbi54LG4ueT1lLnkrdCpuLnkpfX1mdW5jdGlvbiBMbCh0KXt0LngwPU1hdGgucm91bmQodC54MCksdC55MD1NYXRoLnJvdW5kKHQueTApLHQueDE9TWF0aC5yb3VuZCh0LngxKSx0LnkxPU1hdGgucm91bmQodC55MSl9ZnVuY3Rpb24gRGwodCxuLGUscixpKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHU9LTEsZj1hLmxlbmd0aCxjPXQudmFsdWUmJihyLW4pL3QudmFsdWU7Kyt1PGY7KShvPWFbdV0pLnkwPWUsby55MT1pLG8ueDA9bixvLngxPW4rPW8udmFsdWUqY312YXIgVWw9IiQiLHFsPXtkZXB0aDotMX0sT2w9e307ZnVuY3Rpb24gWWwodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gQmwodCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gRmwodCxuKXtyZXR1cm4gdC5wYXJlbnQ9PT1uLnBhcmVudD8xOjJ9ZnVuY3Rpb24gSWwodCl7dmFyIG49dC5jaGlsZHJlbjtyZXR1cm4gbj9uWzBdOnQudH1mdW5jdGlvbiBIbCh0KXt2YXIgbj10LmNoaWxkcmVuO3JldHVybiBuP25bbi5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIGpsKHQsbixlKXt2YXIgcj1lLyhuLmktdC5pKTtuLmMtPXIsbi5zKz1lLHQuYys9cixuLnorPWUsbi5tKz1lfWZ1bmN0aW9uIFhsKHQsbixlKXtyZXR1cm4gdC5hLnBhcmVudD09PW4ucGFyZW50P3QuYTplfWZ1bmN0aW9uIEdsKHQsbil7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPW59ZnVuY3Rpb24gVmwodCxuLGUscixpKXtmb3IodmFyIG8sYT10LmNoaWxkcmVuLHU9LTEsZj1hLmxlbmd0aCxjPXQudmFsdWUmJihpLWUpL3QudmFsdWU7Kyt1PGY7KShvPWFbdV0pLngwPW4sby54MT1yLG8ueTA9ZSxvLnkxPWUrPW8udmFsdWUqY31HbC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShobC5wcm90b3R5cGUpO3ZhciAkbD0oMStNYXRoLnNxcnQoNSkpLzI7ZnVuY3Rpb24gV2wodCxuLGUscixpLG8pe2Zvcih2YXIgYSx1LGYsYyxzLGwsaCxkLHAsdixnLHk9W10sXz1uLmNoaWxkcmVuLGI9MCxtPTAseD1fLmxlbmd0aCx3PW4udmFsdWU7Yjx4Oyl7Zj1pLWUsYz1vLXI7ZG97cz1fW20rK10udmFsdWV9d2hpbGUoIXMmJm08eCk7Zm9yKGw9aD1zLGc9cypzKih2PU1hdGgubWF4KGMvZixmL2MpLyh3KnQpKSxwPU1hdGgubWF4KGgvZyxnL2wpO208eDsrK20pe2lmKHMrPXU9X1ttXS52YWx1ZSx1PGwmJihsPXUpLHU+aCYmKGg9dSksZz1zKnMqdiwoZD1NYXRoLm1heChoL2csZy9sKSk+cCl7cy09dTticmVha31wPWR9eS5wdXNoKGE9e3ZhbHVlOnMsZGljZTpmPGMsY2hpbGRyZW46Xy5zbGljZShiLG0pfSksYS5kaWNlP0RsKGEsZSxyLGksdz9yKz1jKnMvdzpvKTpWbChhLGUscix3P2UrPWYqcy93Omksbyksdy09cyxiPW19cmV0dXJuIHl9dmFyIFpsPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUscixpLG8pe1dsKG4sdCxlLHIsaSxvKX1yZXR1cm4gZS5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxlfSgkbCk7dmFyIFFsPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUscixpLG8pe2lmKChhPXQuX3NxdWFyaWZ5KSYmYS5yYXRpbz09PW4pZm9yKHZhciBhLHUsZixjLHMsbD0tMSxoPWEubGVuZ3RoLGQ9dC52YWx1ZTsrK2w8aDspe2ZvcihmPSh1PWFbbF0pLmNoaWxkcmVuLGM9dS52YWx1ZT0wLHM9Zi5sZW5ndGg7YzxzOysrYyl1LnZhbHVlKz1mW2NdLnZhbHVlO3UuZGljZT9EbCh1LGUscixpLHIrPShvLXIpKnUudmFsdWUvZCk6VmwodSxlLHIsZSs9KGktZSkqdS52YWx1ZS9kLG8pLGQtPXUudmFsdWV9ZWxzZSB0Ll9zcXVhcmlmeT1hPVdsKG4sdCxlLHIsaSxvKSxhLnJhdGlvPW59cmV0dXJuIGUucmF0aW89ZnVuY3Rpb24obil7cmV0dXJuIHQoKG49K24pPjE/bjoxKX0sZX0oJGwpO2Z1bmN0aW9uIEpsKHQsbil7cmV0dXJuIHRbMF0tblswXXx8dFsxXS1uWzFdfWZ1bmN0aW9uIEtsKHQpe2Zvcih2YXIgbixlLHIsaT10Lmxlbmd0aCxvPVswLDFdLGE9Mix1PTI7dTxpOysrdSl7Zm9yKDthPjEmJihuPXRbb1thLTJdXSxlPXRbb1thLTFdXSxyPXRbdV0sKGVbMF0tblswXSkqKHJbMV0tblsxXSktKGVbMV0tblsxXSkqKHJbMF0tblswXSk8PTApOyktLWE7b1thKytdPXV9cmV0dXJuIG8uc2xpY2UoMCxhKX1mdW5jdGlvbiB0aCgpe3JldHVybiBNYXRoLnJhbmRvbSgpfXZhciBuaD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdD1udWxsPT10PzA6K3QsZT1udWxsPT1lPzE6K2UsMT09PWFyZ3VtZW50cy5sZW5ndGg/KGU9dCx0PTApOmUtPXQsZnVuY3Rpb24oKXtyZXR1cm4gbigpKmUrdH19cmV0dXJuIGUuc291cmNlPXQsZX0odGgpLGVoPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0LGUpe3ZhciByLGk7cmV0dXJuIHQ9bnVsbD09dD8wOit0LGU9bnVsbD09ZT8xOitlLGZ1bmN0aW9uKCl7dmFyIG87aWYobnVsbCE9cilvPXIscj1udWxsO2Vsc2UgZG97cj0yKm4oKS0xLG89MipuKCktMSxpPXIqcitvKm99d2hpbGUoIWl8fGk+MSk7cmV0dXJuIHQrZSpvKk1hdGguc3FydCgtMipNYXRoLmxvZyhpKS9pKX19cmV0dXJuIGUuc291cmNlPXQsZX0odGgpLHJoPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSgpe3ZhciB0PWVoLnNvdXJjZShuKS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguZXhwKHQoKSl9fXJldHVybiBlLnNvdXJjZT10LGV9KHRoKSxpaD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBlPTAscj0wO3I8dDsrK3IpZSs9bigpO3JldHVybiBlfX1yZXR1cm4gZS5zb3VyY2U9dCxlfSh0aCksb2g9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3ZhciBlPWloLnNvdXJjZShuKSh0KTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZSgpL3R9fXJldHVybiBlLnNvdXJjZT10LGV9KHRoKSxhaD1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuLU1hdGgubG9nKDEtbigpKS90fX1yZXR1cm4gZS5zb3VyY2U9dCxlfSh0aCksdWg9QXJyYXkucHJvdG90eXBlLGZoPXVoLm1hcCxjaD11aC5zbGljZSxzaD17bmFtZToiaW1wbGljaXQifTtmdW5jdGlvbiBsaCh0KXt2YXIgbj1LaSgpLGU9W10scj1zaDtmdW5jdGlvbiBpKGkpe3ZhciBvPWkrIiIsYT1uLmdldChvKTtpZighYSl7aWYociE9PXNoKXJldHVybiByO24uc2V0KG8sYT1lLnB1c2goaSkpfXJldHVybiB0WyhhLTEpJXQubGVuZ3RoXX1yZXR1cm4gdD1udWxsPT10P1tdOmNoLmNhbGwodCksaS5kb21haW49ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLG49S2koKTtmb3IodmFyIHIsbyxhPS0xLHU9dC5sZW5ndGg7KythPHU7KW4uaGFzKG89KHI9dFthXSkrIiIpfHxuLnNldChvLGUucHVzaChyKSk7cmV0dXJuIGl9LGkucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9Y2guY2FsbChuKSxpKTp0LnNsaWNlKCl9LGkudW5rbm93bj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10LGkpOnJ9LGkuY29weT1mdW5jdGlvbigpe3JldHVybiBsaCgpLmRvbWFpbihlKS5yYW5nZSh0KS51bmtub3duKHIpfSxpfWZ1bmN0aW9uIGhoKCl7dmFyIHQsbixlPWxoKCkudW5rbm93bih2b2lkIDApLHI9ZS5kb21haW4saT1lLnJhbmdlLG89WzAsMV0sYT0hMSx1PTAsZj0wLGM9LjU7ZnVuY3Rpb24gcygpe3ZhciBlPXIoKS5sZW5ndGgscz1vWzFdPG9bMF0sbD1vW3MtMF0saD1vWzEtc107dD0oaC1sKS9NYXRoLm1heCgxLGUtdSsyKmYpLGEmJih0PU1hdGguZmxvb3IodCkpLGwrPShoLWwtdCooZS11KSkqYyxuPXQqKDEtdSksYSYmKGw9TWF0aC5yb3VuZChsKSxuPU1hdGgucm91bmQobikpO3ZhciBkPWcoZSkubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBsK3Qqbn0pO3JldHVybiBpKHM/ZC5yZXZlcnNlKCk6ZCl9cmV0dXJuIGRlbGV0ZSBlLnVua25vd24sZS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIodCkscygpKTpyKCl9LGUucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89Wyt0WzBdLCt0WzFdXSxzKCkpOm8uc2xpY2UoKX0sZS5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBvPVsrdFswXSwrdFsxXV0sYT0hMCxzKCl9LGUuYmFuZHdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIG59LGUuc3RlcD1mdW5jdGlvbigpe3JldHVybiB0fSxlLnJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSEhdCxzKCkpOmF9LGUucGFkZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1mPU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSkscygpKTp1fSxlLnBhZGRpbmdJbm5lcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLHMoKSk6dX0sZS5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSxzKCkpOmZ9LGUuYWxpZ249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKSxzKCkpOmN9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBoaCgpLmRvbWFpbihyKCkpLnJhbmdlKG8pLnJvdW5kKGEpLnBhZGRpbmdJbm5lcih1KS5wYWRkaW5nT3V0ZXIoZikuYWxpZ24oYyl9LHMoKX1mdW5jdGlvbiBkaCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gcGgodCl7cmV0dXJuK3R9dmFyIHZoPVswLDFdO2Z1bmN0aW9uIGdoKHQsbil7cmV0dXJuKG4tPXQ9K3QpP2Z1bmN0aW9uKGUpe3JldHVybihlLXQpL259OmRoKG4pfWZ1bmN0aW9uIHloKHQsbixlLHIpe3ZhciBpPXRbMF0sbz10WzFdLGE9blswXSx1PW5bMV07cmV0dXJuIG88aT8oaT1lKG8saSksYT1yKHUsYSkpOihpPWUoaSxvKSxhPXIoYSx1KSksZnVuY3Rpb24odCl7cmV0dXJuIGEoaSh0KSl9fWZ1bmN0aW9uIF9oKHQsbixlLHIpe3ZhciBvPU1hdGgubWluKHQubGVuZ3RoLG4ubGVuZ3RoKS0xLGE9bmV3IEFycmF5KG8pLHU9bmV3IEFycmF5KG8pLGY9LTE7Zm9yKHRbb108dFswXSYmKHQ9dC5zbGljZSgpLnJldmVyc2UoKSxuPW4uc2xpY2UoKS5yZXZlcnNlKCkpOysrZjxvOylhW2ZdPWUodFtmXSx0W2YrMV0pLHVbZl09cihuW2ZdLG5bZisxXSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciBlPWkodCxuLDEsbyktMTtyZXR1cm4gdVtlXShhW2VdKG4pKX19ZnVuY3Rpb24gYmgodCxuKXtyZXR1cm4gbi5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSl9ZnVuY3Rpb24gbWgodCxuKXt2YXIgZSxyLGksbz12aCxhPXZoLHU9bWUsZj0hMTtmdW5jdGlvbiBjKCl7cmV0dXJuIGU9TWF0aC5taW4oby5sZW5ndGgsYS5sZW5ndGgpPjI/X2g6eWgscj1pPW51bGwsc31mdW5jdGlvbiBzKG4pe3JldHVybihyfHwocj1lKG8sYSxmP2Z1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciByPXQobj0rbixlPStlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQ8PW4/MDp0Pj1lPzE6cih0KX19fSh0KTp0LHUpKSkoK24pfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4oaXx8KGk9ZShhLG8sZ2gsZj9mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj10KG49K24sZT0rZSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0PD0wP246dD49MT9lOnIodCl9fX0obik6bikpKSgrdCl9LHMuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPWZoLmNhbGwodCxwaCksYygpKTpvLnNsaWNlKCl9LHMucmFuZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9Y2guY2FsbCh0KSxjKCkpOmEuc2xpY2UoKX0scy5yYW5nZVJvdW5kPWZ1bmN0aW9uKHQpe3JldHVybiBhPWNoLmNhbGwodCksdT14ZSxjKCl9LHMuY2xhbXA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ISF0LGMoKSk6Zn0scy5pbnRlcnBvbGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT10LGMoKSk6dX0sYygpfWZ1bmN0aW9uIHhoKG4pe3ZhciBlPW4uZG9tYWluO3JldHVybiBuLnRpY2tzPWZ1bmN0aW9uKHQpe3ZhciBuPWUoKTtyZXR1cm4gbShuWzBdLG5bbi5sZW5ndGgtMV0sbnVsbD09dD8xMDp0KX0sbi50aWNrRm9ybWF0PWZ1bmN0aW9uKG4scil7cmV0dXJuIGZ1bmN0aW9uKG4sZSxyKXt2YXIgaSxvPW5bMF0sYT1uW24ubGVuZ3RoLTFdLHU9dyhvLGEsbnVsbD09ZT8xMDplKTtzd2l0Y2goKHI9YmEobnVsbD09cj8iLGYiOnIpKS50eXBlKXtjYXNlInMiOnZhciBmPU1hdGgubWF4KE1hdGguYWJzKG8pLE1hdGguYWJzKGEpKTtyZXR1cm4gbnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9a2EodSxmKSl8fChyLnByZWNpc2lvbj1pKSx0LmZvcm1hdFByZWZpeChyLGYpO2Nhc2UiIjpjYXNlImUiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlInIiOm51bGwhPXIucHJlY2lzaW9ufHxpc05hTihpPUNhKHUsTWF0aC5tYXgoTWF0aC5hYnMobyksTWF0aC5hYnMoYSkpKSl8fChyLnByZWNpc2lvbj1pLSgiZSI9PT1yLnR5cGUpKTticmVhaztjYXNlImYiOmNhc2UiJSI6bnVsbCE9ci5wcmVjaXNpb258fGlzTmFOKGk9RWEodSkpfHwoci5wcmVjaXNpb249aS0yKigiJSI9PT1yLnR5cGUpKX1yZXR1cm4gdC5mb3JtYXQocil9KGUoKSxuLHIpfSxuLm5pY2U9ZnVuY3Rpb24odCl7bnVsbD09dCYmKHQ9MTApO3ZhciByLGk9ZSgpLG89MCxhPWkubGVuZ3RoLTEsdT1pW29dLGY9aVthXTtyZXR1cm4gZjx1JiYocj11LHU9ZixmPXIscj1vLG89YSxhPXIpLChyPXgodSxmLHQpKT4wP3I9eCh1PU1hdGguZmxvb3IodS9yKSpyLGY9TWF0aC5jZWlsKGYvcikqcix0KTpyPDAmJihyPXgodT1NYXRoLmNlaWwodSpyKS9yLGY9TWF0aC5mbG9vcihmKnIpL3IsdCkpLHI+MD8oaVtvXT1NYXRoLmZsb29yKHUvcikqcixpW2FdPU1hdGguY2VpbChmL3IpKnIsZShpKSk6cjwwJiYoaVtvXT1NYXRoLmNlaWwodSpyKS9yLGlbYV09TWF0aC5mbG9vcihmKnIpL3IsZShpKSksbn0sbn1mdW5jdGlvbiB3aCh0LG4pe3ZhciBlLHI9MCxpPSh0PXQuc2xpY2UoKSkubGVuZ3RoLTEsbz10W3JdLGE9dFtpXTtyZXR1cm4gYTxvJiYoZT1yLHI9aSxpPWUsZT1vLG89YSxhPWUpLHRbcl09bi5mbG9vcihvKSx0W2ldPW4uY2VpbChhKSx0fWZ1bmN0aW9uIE1oKHQsbil7cmV0dXJuKG49TWF0aC5sb2cobi90KSk/ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUvdCkvbn06ZGgobil9ZnVuY3Rpb24gQWgodCxuKXtyZXR1cm4gdDwwP2Z1bmN0aW9uKGUpe3JldHVybi1NYXRoLnBvdygtbixlKSpNYXRoLnBvdygtdCwxLWUpfTpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5wb3cobixlKSpNYXRoLnBvdyh0LDEtZSl9fWZ1bmN0aW9uIFRoKHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiBOaCh0KXtyZXR1cm4gMTA9PT10P1RoOnQ9PT1NYXRoLkU/TWF0aC5leHA6ZnVuY3Rpb24obil7cmV0dXJuIE1hdGgucG93KHQsbil9fWZ1bmN0aW9uIFNoKHQpe3JldHVybiB0PT09TWF0aC5FP01hdGgubG9nOjEwPT09dCYmTWF0aC5sb2cxMHx8Mj09PXQmJk1hdGgubG9nMnx8KHQ9TWF0aC5sb2codCksZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubG9nKG4pL3R9KX1mdW5jdGlvbiBFaCh0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuLXQoLW4pfX1mdW5jdGlvbiBraCh0LG4pe3JldHVybiB0PDA/LU1hdGgucG93KC10LG4pOk1hdGgucG93KHQsbil9ZnVuY3Rpb24gQ2goKXt2YXIgdD0xLG49bWgoZnVuY3Rpb24obixlKXtyZXR1cm4oZT1raChlLHQpLShuPWtoKG4sdCkpKT9mdW5jdGlvbihyKXtyZXR1cm4oa2gocix0KS1uKS9lfTpkaChlKX0sZnVuY3Rpb24obixlKXtyZXR1cm4gZT1raChlLHQpLShuPWtoKG4sdCkpLGZ1bmN0aW9uKHIpe3JldHVybiBraChuK2UqciwxL3QpfX0pLGU9bi5kb21haW47cmV0dXJuIG4uZXhwb25lbnQ9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K24sZShlKCkpKTp0fSxuLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gYmgobixDaCgpLmV4cG9uZW50KHQpKX0seGgobil9dmFyIFBoPW5ldyBEYXRlLHpoPW5ldyBEYXRlO2Z1bmN0aW9uIFJoKHQsbixlLHIpe2Z1bmN0aW9uIGkobil7cmV0dXJuIHQobj1uZXcgRGF0ZSgrbikpLG59cmV0dXJuIGkuZmxvb3I9aSxpLmNlaWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZT1uZXcgRGF0ZShlLTEpKSxuKGUsMSksdChlKSxlfSxpLnJvdW5kPWZ1bmN0aW9uKHQpe3ZhciBuPWkodCksZT1pLmNlaWwodCk7cmV0dXJuIHQtbjxlLXQ/bjplfSxpLm9mZnNldD1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQ9bmV3IERhdGUoK3QpLG51bGw9PWU/MTpNYXRoLmZsb29yKGUpKSx0fSxpLnJhbmdlPWZ1bmN0aW9uKGUscixvKXt2YXIgYSx1PVtdO2lmKGU9aS5jZWlsKGUpLG89bnVsbD09bz8xOk1hdGguZmxvb3IobyksIShlPHImJm8+MCkpcmV0dXJuIHU7ZG97dS5wdXNoKGE9bmV3IERhdGUoK2UpKSxuKGUsbyksdChlKX13aGlsZShhPGUmJmU8cik7cmV0dXJuIHV9LGkuZmlsdGVyPWZ1bmN0aW9uKGUpe3JldHVybiBSaChmdW5jdGlvbihuKXtpZihuPj1uKWZvcig7dChuKSwhZShuKTspbi5zZXRUaW1lKG4tMSl9LGZ1bmN0aW9uKHQscil7aWYodD49dClpZihyPDApZm9yKDsrK3I8PTA7KWZvcig7bih0LC0xKSwhZSh0KTspO2Vsc2UgZm9yKDstLXI+PTA7KWZvcig7bih0LDEpLCFlKHQpOyk7fSl9LGUmJihpLmNvdW50PWZ1bmN0aW9uKG4scil7cmV0dXJuIFBoLnNldFRpbWUoK24pLHpoLnNldFRpbWUoK3IpLHQoUGgpLHQoemgpLE1hdGguZmxvb3IoZShQaCx6aCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/aS5maWx0ZXIocj9mdW5jdGlvbihuKXtyZXR1cm4gcihuKSV0PT0wfTpmdW5jdGlvbihuKXtyZXR1cm4gaS5jb3VudCgwLG4pJXQ9PTB9KTppOm51bGx9KSxpfXZhciBMaD1SaChmdW5jdGlvbigpe30sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3Qrbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuIG4tdH0pO0xoLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksaXNGaW5pdGUodCkmJnQ+MD90PjE/UmgoZnVuY3Rpb24obil7bi5zZXRUaW1lKE1hdGguZmxvb3Iobi90KSp0KX0sZnVuY3Rpb24obixlKXtuLnNldFRpbWUoK24rZSp0KX0sZnVuY3Rpb24obixlKXtyZXR1cm4oZS1uKS90fSk6TGg6bnVsbH07dmFyIERoPUxoLnJhbmdlLFVoPTZlNCxxaD02MDQ4ZTUsT2g9UmgoZnVuY3Rpb24odCl7dC5zZXRUaW1lKDFlMypNYXRoLmZsb29yKHQvMWUzKSl9LGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0KzFlMypuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS8xZTN9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ1NlY29uZHMoKX0pLFloPU9oLnJhbmdlLEJoPVJoKGZ1bmN0aW9uKHQpe3Quc2V0VGltZShNYXRoLmZsb29yKHQvVWgpKlVoKX0sZnVuY3Rpb24odCxuKXt0LnNldFRpbWUoK3QrbipVaCl9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdCkvVWh9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldE1pbnV0ZXMoKX0pLEZoPUJoLnJhbmdlLEloPVJoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZ2V0VGltZXpvbmVPZmZzZXQoKSpVaCUzNmU1O248MCYmKG4rPTM2ZTUpLHQuc2V0VGltZSgzNmU1Kk1hdGguZmxvb3IoKCt0LW4pLzM2ZTUpK24pfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCszNmU1Km4pfSxmdW5jdGlvbih0LG4pe3JldHVybihuLXQpLzM2ZTV9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEhvdXJzKCl9KSxIaD1JaC5yYW5nZSxqaD1SaChmdW5jdGlvbih0KXt0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0RGF0ZSh0LmdldERhdGUoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10LShuLmdldFRpbWV6b25lT2Zmc2V0KCktdC5nZXRUaW1lem9uZU9mZnNldCgpKSpVaCkvODY0ZTV9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldERhdGUoKS0xfSksWGg9amgucmFuZ2U7ZnVuY3Rpb24gR2godCl7cmV0dXJuIFJoKGZ1bmN0aW9uKG4pe24uc2V0RGF0ZShuLmdldERhdGUoKS0obi5nZXREYXkoKSs3LXQpJTcpLG4uc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzcqbil9LGZ1bmN0aW9uKHQsbil7cmV0dXJuKG4tdC0obi5nZXRUaW1lem9uZU9mZnNldCgpLXQuZ2V0VGltZXpvbmVPZmZzZXQoKSkqVWgpL3FofSl9dmFyIFZoPUdoKDApLCRoPUdoKDEpLFdoPUdoKDIpLFpoPUdoKDMpLFFoPUdoKDQpLEpoPUdoKDUpLEtoPUdoKDYpLHRkPVZoLnJhbmdlLG5kPSRoLnJhbmdlLGVkPVdoLnJhbmdlLHJkPVpoLnJhbmdlLGlkPVFoLnJhbmdlLG9kPUpoLnJhbmdlLGFkPUtoLnJhbmdlLHVkPVJoKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0TW9udGgodC5nZXRNb250aCgpK24pfSxmdW5jdGlvbih0LG4pe3JldHVybiBuLmdldE1vbnRoKCktdC5nZXRNb250aCgpKzEyKihuLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pLGZkPXVkLnJhbmdlLGNkPVJoKGZ1bmN0aW9uKHQpe3Quc2V0TW9udGgoMCwxKSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpK24pfSxmdW5jdGlvbih0LG4pe3JldHVybiBuLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRGdWxsWWVhcigpfSk7Y2QuZXZlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIGlzRmluaXRlKHQ9TWF0aC5mbG9vcih0KSkmJnQ+MD9SaChmdW5jdGlvbihuKXtuLnNldEZ1bGxZZWFyKE1hdGguZmxvb3Iobi5nZXRGdWxsWWVhcigpL3QpKnQpLG4uc2V0TW9udGgoMCwxKSxuLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihuLGUpe24uc2V0RnVsbFllYXIobi5nZXRGdWxsWWVhcigpK2UqdCl9KTpudWxsfTt2YXIgc2Q9Y2QucmFuZ2UsbGQ9UmgoZnVuY3Rpb24odCl7dC5zZXRVVENTZWNvbmRzKDAsMCl9LGZ1bmN0aW9uKHQsbil7dC5zZXRUaW1lKCt0K24qVWgpfSxmdW5jdGlvbih0LG4pe3JldHVybihuLXQpL1VofSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENNaW51dGVzKCl9KSxoZD1sZC5yYW5nZSxkZD1SaChmdW5jdGlvbih0KXt0LnNldFVUQ01pbnV0ZXMoMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0VGltZSgrdCszNmU1Km4pfSxmdW5jdGlvbih0LG4pe3JldHVybihuLXQpLzM2ZTV9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0hvdXJzKCl9KSxwZD1kZC5yYW5nZSx2ZD1SaChmdW5jdGlvbih0KXt0LnNldFVUQ0hvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LG4pe3Quc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS84NjRlNX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRGF0ZSgpLTF9KSxnZD12ZC5yYW5nZTtmdW5jdGlvbiB5ZCh0KXtyZXR1cm4gUmgoZnVuY3Rpb24obil7bi5zZXRVVENEYXRlKG4uZ2V0VVRDRGF0ZSgpLShuLmdldFVUQ0RheSgpKzctdCklNyksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ0RhdGUodC5nZXRVVENEYXRlKCkrNypuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4obi10KS9xaH0pfXZhciBfZD15ZCgwKSxiZD15ZCgxKSxtZD15ZCgyKSx4ZD15ZCgzKSx3ZD15ZCg0KSxNZD15ZCg1KSxBZD15ZCg2KSxUZD1fZC5yYW5nZSxOZD1iZC5yYW5nZSxTZD1tZC5yYW5nZSxFZD14ZC5yYW5nZSxrZD13ZC5yYW5nZSxDZD1NZC5yYW5nZSxQZD1BZC5yYW5nZSx6ZD1SaChmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsxMioobi5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KSxSZD16ZC5yYW5nZSxMZD1SaChmdW5jdGlvbih0KXt0LnNldFVUQ01vbnRoKDAsMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxuKXt0LnNldFVUQ0Z1bGxZZWFyKHQuZ2V0VVRDRnVsbFllYXIoKStuKX0sZnVuY3Rpb24odCxuKXtyZXR1cm4gbi5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDRnVsbFllYXIoKX0pO0xkLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiBpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpJiZ0PjA/UmgoZnVuY3Rpb24obil7bi5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKG4uZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxuLnNldFVUQ01vbnRoKDAsMSksbi5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24obixlKXtuLnNldFVUQ0Z1bGxZZWFyKG4uZ2V0VVRDRnVsbFllYXIoKStlKnQpfSk6bnVsbH07dmFyIERkPUxkLnJhbmdlO2Z1bmN0aW9uIFVkKHQpe2lmKDA8PXQueSYmdC55PDEwMCl7dmFyIG49bmV3IERhdGUoLTEsdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpO3JldHVybiBuLnNldEZ1bGxZZWFyKHQueSksbn1yZXR1cm4gbmV3IERhdGUodC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKX1mdW5jdGlvbiBxZCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBuPW5ldyBEYXRlKERhdGUuVVRDKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSk7cmV0dXJuIG4uc2V0VVRDRnVsbFllYXIodC55KSxufXJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh0LnksdC5tLHQuZCx0LkgsdC5NLHQuUyx0LkwpKX1mdW5jdGlvbiBPZCh0KXtyZXR1cm57eTp0LG06MCxkOjEsSDowLE06MCxTOjAsTDowfX1mdW5jdGlvbiBZZCh0KXt2YXIgbj10LmRhdGVUaW1lLGU9dC5kYXRlLHI9dC50aW1lLGk9dC5wZXJpb2RzLG89dC5kYXlzLGE9dC5zaG9ydERheXMsdT10Lm1vbnRocyxmPXQuc2hvcnRNb250aHMsYz1WZChpKSxzPSRkKGkpLGw9VmQobyksaD0kZChvKSxkPVZkKGEpLHA9JGQoYSksdj1WZCh1KSxnPSRkKHUpLHk9VmQoZiksXz0kZChmKSxiPXthOmZ1bmN0aW9uKHQpe3JldHVybiBhW3QuZ2V0RGF5KCldfSxBOmZ1bmN0aW9uKHQpe3JldHVybiBvW3QuZ2V0RGF5KCldfSxiOmZ1bmN0aW9uKHQpe3JldHVybiBmW3QuZ2V0TW9udGgoKV19LEI6ZnVuY3Rpb24odCl7cmV0dXJuIHVbdC5nZXRNb250aCgpXX0sYzpudWxsLGQ6cHAsZTpwcCxmOmJwLEg6dnAsSTpncCxqOnlwLEw6X3AsbTptcCxNOnhwLHA6ZnVuY3Rpb24odCl7cmV0dXJuIGlbKyh0LmdldEhvdXJzKCk+PTEyKV19LFE6V3AsczpacCxTOndwLHU6TXAsVTpBcCxWOlRwLHc6TnAsVzpTcCx4Om51bGwsWDpudWxsLHk6RXAsWTprcCxaOkNwLCIlIjokcH0sbT17YTpmdW5jdGlvbih0KXtyZXR1cm4gYVt0LmdldFVUQ0RheSgpXX0sQTpmdW5jdGlvbih0KXtyZXR1cm4gb1t0LmdldFVUQ0RheSgpXX0sYjpmdW5jdGlvbih0KXtyZXR1cm4gZlt0LmdldFVUQ01vbnRoKCldfSxCOmZ1bmN0aW9uKHQpe3JldHVybiB1W3QuZ2V0VVRDTW9udGgoKV19LGM6bnVsbCxkOlBwLGU6UHAsZjpVcCxIOnpwLEk6UnAsajpMcCxMOkRwLG06cXAsTTpPcCxwOmZ1bmN0aW9uKHQpe3JldHVybiBpWysodC5nZXRVVENIb3VycygpPj0xMildfSxROldwLHM6WnAsUzpZcCx1OkJwLFU6RnAsVjpJcCx3OkhwLFc6anAseDpudWxsLFg6bnVsbCx5OlhwLFk6R3AsWjpWcCwiJSI6JHB9LHg9e2E6ZnVuY3Rpb24odCxuLGUpe3ZhciByPWQuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC53PXBbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX0sQTpmdW5jdGlvbih0LG4sZSl7dmFyIHI9bC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0Lnc9aFtyWzBdLnRvTG93ZXJDYXNlKCldLGUrclswXS5sZW5ndGgpOi0xfSxiOmZ1bmN0aW9uKHQsbixlKXt2YXIgcj15LmV4ZWMobi5zbGljZShlKSk7cmV0dXJuIHI/KHQubT1fW3JbMF0udG9Mb3dlckNhc2UoKV0sZStyWzBdLmxlbmd0aCk6LTF9LEI6ZnVuY3Rpb24odCxuLGUpe3ZhciByPXYuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5tPWdbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX0sYzpmdW5jdGlvbih0LGUscil7cmV0dXJuIEEodCxuLGUscil9LGQ6aXAsZTppcCxmOnNwLEg6YXAsSTphcCxqOm9wLEw6Y3AsbTpycCxNOnVwLHA6ZnVuY3Rpb24odCxuLGUpe3ZhciByPWMuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5wPXNbclswXS50b0xvd2VyQ2FzZSgpXSxlK3JbMF0ubGVuZ3RoKTotMX0sUTpocCxzOmRwLFM6ZnAsdTpaZCxVOlFkLFY6SmQsdzpXZCxXOktkLHg6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBBKHQsZSxuLHIpfSxYOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gQSh0LHIsbixlKX0seTpucCxZOnRwLFo6ZXAsIiUiOmxwfTtmdW5jdGlvbiB3KHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByLGksbyxhPVtdLHU9LTEsZj0wLGM9dC5sZW5ndGg7Zm9yKGUgaW5zdGFuY2VvZiBEYXRlfHwoZT1uZXcgRGF0ZSgrZSkpOysrdTxjOykzNz09PXQuY2hhckNvZGVBdCh1KSYmKGEucHVzaCh0LnNsaWNlKGYsdSkpLG51bGwhPShpPUZkW3I9dC5jaGFyQXQoKyt1KV0pP3I9dC5jaGFyQXQoKyt1KTppPSJlIj09PXI/IiAiOiIwIiwobz1uW3JdKSYmKHI9byhlLGkpKSxhLnB1c2gociksZj11KzEpO3JldHVybiBhLnB1c2godC5zbGljZShmLHUpKSxhLmpvaW4oIiIpfX1mdW5jdGlvbiBNKHQsbil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByLGksbz1PZCgxOTAwKTtpZihBKG8sdCxlKz0iIiwwKSE9ZS5sZW5ndGgpcmV0dXJuIG51bGw7aWYoIlEiaW4gbylyZXR1cm4gbmV3IERhdGUoby5RKTtpZigicCJpbiBvJiYoby5IPW8uSCUxMisxMipvLnApLCJWImluIG8pe2lmKG8uVjwxfHxvLlY+NTMpcmV0dXJuIG51bGw7InciaW4gb3x8KG8udz0xKSwiWiJpbiBvPyhpPShyPXFkKE9kKG8ueSkpKS5nZXRVVENEYXkoKSxyPWk+NHx8MD09PWk/YmQuY2VpbChyKTpiZChyKSxyPXZkLm9mZnNldChyLDcqKG8uVi0xKSksby55PXIuZ2V0VVRDRnVsbFllYXIoKSxvLm09ci5nZXRVVENNb250aCgpLG8uZD1yLmdldFVUQ0RhdGUoKSsoby53KzYpJTcpOihpPShyPW4oT2Qoby55KSkpLmdldERheSgpLHI9aT40fHwwPT09aT8kaC5jZWlsKHIpOiRoKHIpLHI9amgub2Zmc2V0KHIsNyooby5WLTEpKSxvLnk9ci5nZXRGdWxsWWVhcigpLG8ubT1yLmdldE1vbnRoKCksby5kPXIuZ2V0RGF0ZSgpKyhvLncrNiklNyl9ZWxzZSgiVyJpbiBvfHwiVSJpbiBvKSYmKCJ3ImluIG98fChvLnc9InUiaW4gbz9vLnUlNzoiVyJpbiBvPzE6MCksaT0iWiJpbiBvP3FkKE9kKG8ueSkpLmdldFVUQ0RheSgpOm4oT2Qoby55KSkuZ2V0RGF5KCksby5tPTAsby5kPSJXImluIG8/KG8udys2KSU3Kzcqby5XLShpKzUpJTc6by53Kzcqby5VLShpKzYpJTcpO3JldHVybiJaImluIG8/KG8uSCs9by5aLzEwMHwwLG8uTSs9by5aJTEwMCxxZChvKSk6bihvKX19ZnVuY3Rpb24gQSh0LG4sZSxyKXtmb3IodmFyIGksbyxhPTAsdT1uLmxlbmd0aCxmPWUubGVuZ3RoO2E8dTspe2lmKHI+PWYpcmV0dXJuLTE7aWYoMzc9PT0oaT1uLmNoYXJDb2RlQXQoYSsrKSkpe2lmKGk9bi5jaGFyQXQoYSsrKSwhKG89eFtpIGluIEZkP24uY2hhckF0KGErKyk6aV0pfHwocj1vKHQsZSxyKSk8MClyZXR1cm4tMX1lbHNlIGlmKGkhPWUuY2hhckNvZGVBdChyKyspKXJldHVybi0xfXJldHVybiByfXJldHVybiBiLng9dyhlLGIpLGIuWD13KHIsYiksYi5jPXcobixiKSxtLng9dyhlLG0pLG0uWD13KHIsbSksbS5jPXcobixtKSx7Zm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBuPXcodCs9IiIsYik7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49TSh0Kz0iIixVZCk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0sdXRjRm9ybWF0OmZ1bmN0aW9uKHQpe3ZhciBuPXcodCs9IiIsbSk7cmV0dXJuIG4udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdH0sbn0sdXRjUGFyc2U6ZnVuY3Rpb24odCl7dmFyIG49TSh0LHFkKTtyZXR1cm4gbi50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0fSxufX19dmFyIEJkLEZkPXsiLSI6IiIsXzoiICIsMDoiMCJ9LElkPS9eXHMqXGQrLyxIZD0vXiUvLGpkPS9bXFxeJCorP3xbXF0oKS57fV0vZztmdW5jdGlvbiBYZCh0LG4sZSl7dmFyIHI9dDwwPyItIjoiIixpPShyPy10OnQpKyIiLG89aS5sZW5ndGg7cmV0dXJuIHIrKG88ZT9uZXcgQXJyYXkoZS1vKzEpLmpvaW4obikraTppKX1mdW5jdGlvbiBHZCh0KXtyZXR1cm4gdC5yZXBsYWNlKGpkLCJcXCQmIil9ZnVuY3Rpb24gVmQodCl7cmV0dXJuIG5ldyBSZWdFeHAoIl4oPzoiK3QubWFwKEdkKS5qb2luKCJ8IikrIikiLCJpIil9ZnVuY3Rpb24gJGQodCl7Zm9yKHZhciBuPXt9LGU9LTEscj10Lmxlbmd0aDsrK2U8cjspblt0W2VdLnRvTG93ZXJDYXNlKCldPWU7cmV0dXJuIG59ZnVuY3Rpb24gV2QodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMSkpO3JldHVybiByPyh0Lnc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gWmQodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMSkpO3JldHVybiByPyh0LnU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gUWQodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0LlU9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gSmQodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0LlY9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gS2QodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0Llc9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdHAodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrNCkpO3JldHVybiByPyh0Lnk9K3JbMF0sZStyWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gbnAodCxuLGUpe3ZhciByPUlkLmV4ZWMobi5zbGljZShlLGUrMikpO3JldHVybiByPyh0Lnk9K3JbMF0rKCtyWzBdPjY4PzE5MDA6MmUzKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBlcCh0LG4sZSl7dmFyIHI9L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMobi5zbGljZShlLGUrNikpO3JldHVybiByPyh0Llo9clsxXT8wOi0oclsyXSsoclszXXx8IjAwIikpLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHJwKHQsbixlKXt2YXIgcj1JZC5leGVjKG4uc2xpY2UoZSxlKzIpKTtyZXR1cm4gcj8odC5tPXJbMF0tMSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBpcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBvcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KHQubT0wLHQuZD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBhcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuSD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB1cCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuTT0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBmcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSsyKSk7cmV0dXJuIHI/KHQuUz0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBjcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSszKSk7cmV0dXJuIHI/KHQuTD0rclswXSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBzcCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUsZSs2KSk7cmV0dXJuIHI/KHQuTD1NYXRoLmZsb29yKHJbMF0vMWUzKSxlK3JbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBscCh0LG4sZSl7dmFyIHI9SGQuZXhlYyhuLnNsaWNlKGUsZSsxKSk7cmV0dXJuIHI/ZStyWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBocCh0LG4sZSl7dmFyIHI9SWQuZXhlYyhuLnNsaWNlKGUpKTtyZXR1cm4gcj8odC5RPStyWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIGRwKHQsbixlKXt2YXIgcj1JZC5leGVjKG4uc2xpY2UoZSkpO3JldHVybiByPyh0LlE9MWUzKityWzBdLGUrclswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIHBwKHQsbil7cmV0dXJuIFhkKHQuZ2V0RGF0ZSgpLG4sMil9ZnVuY3Rpb24gdnAodCxuKXtyZXR1cm4gWGQodC5nZXRIb3VycygpLG4sMil9ZnVuY3Rpb24gZ3AodCxuKXtyZXR1cm4gWGQodC5nZXRIb3VycygpJTEyfHwxMixuLDIpfWZ1bmN0aW9uIHlwKHQsbil7cmV0dXJuIFhkKDEramguY291bnQoY2QodCksdCksbiwzKX1mdW5jdGlvbiBfcCh0LG4pe3JldHVybiBYZCh0LmdldE1pbGxpc2Vjb25kcygpLG4sMyl9ZnVuY3Rpb24gYnAodCxuKXtyZXR1cm4gX3AodCxuKSsiMDAwIn1mdW5jdGlvbiBtcCh0LG4pe3JldHVybiBYZCh0LmdldE1vbnRoKCkrMSxuLDIpfWZ1bmN0aW9uIHhwKHQsbil7cmV0dXJuIFhkKHQuZ2V0TWludXRlcygpLG4sMil9ZnVuY3Rpb24gd3AodCxuKXtyZXR1cm4gWGQodC5nZXRTZWNvbmRzKCksbiwyKX1mdW5jdGlvbiBNcCh0KXt2YXIgbj10LmdldERheSgpO3JldHVybiAwPT09bj83Om59ZnVuY3Rpb24gQXAodCxuKXtyZXR1cm4gWGQoVmguY291bnQoY2QodCksdCksbiwyKX1mdW5jdGlvbiBUcCh0LG4pe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIHQ9ZT49NHx8MD09PWU/UWgodCk6UWguY2VpbCh0KSxYZChRaC5jb3VudChjZCh0KSx0KSsoND09PWNkKHQpLmdldERheSgpKSxuLDIpfWZ1bmN0aW9uIE5wKHQpe3JldHVybiB0LmdldERheSgpfWZ1bmN0aW9uIFNwKHQsbil7cmV0dXJuIFhkKCRoLmNvdW50KGNkKHQpLHQpLG4sMil9ZnVuY3Rpb24gRXAodCxuKXtyZXR1cm4gWGQodC5nZXRGdWxsWWVhcigpJTEwMCxuLDIpfWZ1bmN0aW9uIGtwKHQsbil7cmV0dXJuIFhkKHQuZ2V0RnVsbFllYXIoKSUxZTQsbiw0KX1mdW5jdGlvbiBDcCh0KXt2YXIgbj10LmdldFRpbWV6b25lT2Zmc2V0KCk7cmV0dXJuKG4+MD8iLSI6KG4qPS0xLCIrIikpK1hkKG4vNjB8MCwiMCIsMikrWGQobiU2MCwiMCIsMil9ZnVuY3Rpb24gUHAodCxuKXtyZXR1cm4gWGQodC5nZXRVVENEYXRlKCksbiwyKX1mdW5jdGlvbiB6cCh0LG4pe3JldHVybiBYZCh0LmdldFVUQ0hvdXJzKCksbiwyKX1mdW5jdGlvbiBScCh0LG4pe3JldHVybiBYZCh0LmdldFVUQ0hvdXJzKCklMTJ8fDEyLG4sMil9ZnVuY3Rpb24gTHAodCxuKXtyZXR1cm4gWGQoMSt2ZC5jb3VudChMZCh0KSx0KSxuLDMpfWZ1bmN0aW9uIERwKHQsbil7cmV0dXJuIFhkKHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksbiwzKX1mdW5jdGlvbiBVcCh0LG4pe3JldHVybiBEcCh0LG4pKyIwMDAifWZ1bmN0aW9uIHFwKHQsbil7cmV0dXJuIFhkKHQuZ2V0VVRDTW9udGgoKSsxLG4sMil9ZnVuY3Rpb24gT3AodCxuKXtyZXR1cm4gWGQodC5nZXRVVENNaW51dGVzKCksbiwyKX1mdW5jdGlvbiBZcCh0LG4pe3JldHVybiBYZCh0LmdldFVUQ1NlY29uZHMoKSxuLDIpfWZ1bmN0aW9uIEJwKHQpe3ZhciBuPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIDA9PT1uPzc6bn1mdW5jdGlvbiBGcCh0LG4pe3JldHVybiBYZChfZC5jb3VudChMZCh0KSx0KSxuLDIpfWZ1bmN0aW9uIElwKHQsbil7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gdD1lPj00fHwwPT09ZT93ZCh0KTp3ZC5jZWlsKHQpLFhkKHdkLmNvdW50KExkKHQpLHQpKyg0PT09TGQodCkuZ2V0VVRDRGF5KCkpLG4sMil9ZnVuY3Rpb24gSHAodCl7cmV0dXJuIHQuZ2V0VVRDRGF5KCl9ZnVuY3Rpb24ganAodCxuKXtyZXR1cm4gWGQoYmQuY291bnQoTGQodCksdCksbiwyKX1mdW5jdGlvbiBYcCh0LG4pe3JldHVybiBYZCh0LmdldFVUQ0Z1bGxZZWFyKCklMTAwLG4sMil9ZnVuY3Rpb24gR3AodCxuKXtyZXR1cm4gWGQodC5nZXRVVENGdWxsWWVhcigpJTFlNCxuLDQpfWZ1bmN0aW9uIFZwKCl7cmV0dXJuIiswMDAwIn1mdW5jdGlvbiAkcCgpe3JldHVybiIlIn1mdW5jdGlvbiBXcCh0KXtyZXR1cm4rdH1mdW5jdGlvbiBacCh0KXtyZXR1cm4gTWF0aC5mbG9vcigrdC8xZTMpfWZ1bmN0aW9uIFFwKG4pe3JldHVybiBCZD1ZZChuKSx0LnRpbWVGb3JtYXQ9QmQuZm9ybWF0LHQudGltZVBhcnNlPUJkLnBhcnNlLHQudXRjRm9ybWF0PUJkLnV0Y0Zvcm1hdCx0LnV0Y1BhcnNlPUJkLnV0Y1BhcnNlLEJkfVFwKHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7dmFyIEpwPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP2Z1bmN0aW9uKHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9OnQudXRjRm9ybWF0KCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKTt2YXIgS3A9K25ldyBEYXRlKCIyMDAwLTAxLTAxVDAwOjAwOjAwLjAwMFoiKT9mdW5jdGlvbih0KXt2YXIgbj1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4obik/bnVsbDpufTp0LnV0Y1BhcnNlKCIlWS0lbS0lZFQlSDolTTolUy4lTFoiKSx0dj0xZTMsbnY9NjAqdHYsZXY9NjAqbnYscnY9MjQqZXYsaXY9Nypydixvdj0zMCpydixhdj0zNjUqcnY7ZnVuY3Rpb24gdXYodCl7cmV0dXJuIG5ldyBEYXRlKHQpfWZ1bmN0aW9uIGZ2KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT8rdDorbmV3IERhdGUoK3QpfWZ1bmN0aW9uIGN2KHQsbixyLGksbyxhLHUsZixjKXt2YXIgcz1taChnaCx2ZSksbD1zLmludmVydCxoPXMuZG9tYWluLGQ9YygiLiVMIikscD1jKCI6JVMiKSx2PWMoIiVJOiVNIiksZz1jKCIlSSAlcCIpLHk9YygiJWEgJWQiKSxfPWMoIiViICVkIiksYj1jKCIlQiIpLG09YygiJVkiKSx4PVtbdSwxLHR2XSxbdSw1LDUqdHZdLFt1LDE1LDE1KnR2XSxbdSwzMCwzMCp0dl0sW2EsMSxudl0sW2EsNSw1Km52XSxbYSwxNSwxNSpudl0sW2EsMzAsMzAqbnZdLFtvLDEsZXZdLFtvLDMsMypldl0sW28sNiw2KmV2XSxbbywxMiwxMipldl0sW2ksMSxydl0sW2ksMiwyKnJ2XSxbciwxLGl2XSxbbiwxLG92XSxbbiwzLDMqb3ZdLFt0LDEsYXZdXTtmdW5jdGlvbiBNKGUpe3JldHVybih1KGUpPGU/ZDphKGUpPGU/cDpvKGUpPGU/djppKGUpPGU/ZzpuKGUpPGU/cihlKTxlP3k6Xzp0KGUpPGU/YjptKShlKX1mdW5jdGlvbiBBKG4scixpLG8pe2lmKG51bGw9PW4mJihuPTEwKSwibnVtYmVyIj09dHlwZW9mIG4pe3ZhciBhPU1hdGguYWJzKGktcikvbix1PWUoZnVuY3Rpb24odCl7cmV0dXJuIHRbMl19KS5yaWdodCh4LGEpO3U9PT14Lmxlbmd0aD8obz13KHIvYXYsaS9hdixuKSxuPXQpOnU/KG89KHU9eFthL3hbdS0xXVsyXTx4W3VdWzJdL2E/dS0xOnVdKVsxXSxuPXVbMF0pOihvPU1hdGgubWF4KHcocixpLG4pLDEpLG49Zil9cmV0dXJuIG51bGw9PW8/bjpuLmV2ZXJ5KG8pfXJldHVybiBzLmludmVydD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IERhdGUobCh0KSl9LHMuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2goZmguY2FsbCh0LGZ2KSk6aCgpLm1hcCh1dil9LHMudGlja3M9ZnVuY3Rpb24odCxuKXt2YXIgZSxyPWgoKSxpPXJbMF0sbz1yW3IubGVuZ3RoLTFdLGE9bzxpO3JldHVybiBhJiYoZT1pLGk9byxvPWUpLGU9KGU9QSh0LGksbyxuKSk/ZS5yYW5nZShpLG8rMSk6W10sYT9lLnJldmVyc2UoKTplfSxzLnRpY2tGb3JtYXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09bj9NOmMobil9LHMubmljZT1mdW5jdGlvbih0LG4pe3ZhciBlPWgoKTtyZXR1cm4odD1BKHQsZVswXSxlW2UubGVuZ3RoLTFdLG4pKT9oKHdoKGUsdCkpOnN9LHMuY29weT1mdW5jdGlvbigpe3JldHVybiBiaChzLGN2KHQsbixyLGksbyxhLHUsZixjKSl9LHN9ZnVuY3Rpb24gc3YodCl7Zm9yKHZhciBuPXQubGVuZ3RoLzZ8MCxlPW5ldyBBcnJheShuKSxyPTA7cjxuOyllW3JdPSIjIit0LnNsaWNlKDYqciw2Kisrcik7cmV0dXJuIGV9dmFyIGx2PXN2KCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxodj1zdigiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IiksZHY9c3YoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLHB2PXN2KCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSx2dj1zdigiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksZ3Y9c3YoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLHl2PXN2KCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxfdj1zdigiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksYnY9c3YoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpO2Z1bmN0aW9uIG12KHQpe3JldHVybiBsZSh0W3QubGVuZ3RoLTFdKX12YXIgeHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZDhiMzY1ZjVmNWY1NWFiNGFjIiwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxIiwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxIiwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIikubWFwKHN2KSx3dj1tdih4diksTXY9bmV3IEFycmF5KDMpLmNvbmNhdCgiYWY4ZGMzZjdmN2Y3N2ZiZjdiIiwiN2IzMjk0YzJhNWNmYTZkYmEwMDA4ODM3IiwiN2IzMjk0YzJhNWNmZjdmN2Y3YTZkYmEwMDA4ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzYWY4ZGMzZTdkNGU4ZjdmN2Y3ZDlmMGQzN2ZiZjdiMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3IiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIiwiNDAwMDRiNzYyYTgzOTk3MGFiYzJhNWNmZTdkNGU4ZjdmN2Y3ZDlmMGQzYTZkYmEwNWFhZTYxMWI3ODM3MDA0NDFiIikubWFwKHN2KSxBdj1tdihNdiksVHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTlhM2M5ZjdmN2Y3YTFkNzZhIiwiZDAxYzhiZjFiNmRhYjhlMTg2NGRhYzI2IiwiZDAxYzhiZjFiNmRhZjdmN2Y3YjhlMTg2NGRhYzI2IiwiYzUxYjdkZTlhM2M5ZmRlMGVmZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZTlhM2M5ZmRlMGVmZjdmN2Y3ZTZmNWQwYTFkNzZhNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxIiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IiwiOGUwMTUyYzUxYjdkZGU3N2FlZjFiNmRhZmRlMGVmZjdmN2Y3ZTZmNWQwYjhlMTg2N2ZiYzQxNGQ5MjIxMjc2NDE5IikubWFwKHN2KSxOdj1tdihUdiksU3Y9bmV3IEFycmF5KDMpLmNvbmNhdCgiOTk4ZWMzZjdmN2Y3ZjFhMzQwIiwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxIiwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxIiwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IikubWFwKHN2KSxFdj1tdihTdiksa3Y9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZjdmN2Y3NjdhOWNmIiwiY2EwMDIwZjRhNTgyOTJjNWRlMDU3MWIwIiwiY2EwMDIwZjRhNTgyZjdmN2Y3OTJjNWRlMDU3MWIwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZWY4YTYyZmRkYmM3ZjdmN2Y3ZDFlNWYwNjdhOWNmMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZjdmN2Y3ZDFlNWYwOTJjNWRlNDM5M2MzMjE2NmFjMDUzMDYxIikubWFwKHN2KSxDdj1tdihrdiksUHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWY4YTYyZmZmZmZmOTk5OTk5IiwiY2EwMDIwZjRhNTgyYmFiYWJhNDA0MDQwIiwiY2EwMDIwZjRhNTgyZmZmZmZmYmFiYWJhNDA0MDQwIiwiYjIxODJiZWY4YTYyZmRkYmM3ZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZWY4YTYyZmRkYmM3ZmZmZmZmZTBlMGUwOTk5OTk5NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIiwiNjcwMDFmYjIxODJiZDY2MDRkZjRhNTgyZmRkYmM3ZmZmZmZmZTBlMGUwYmFiYWJhODc4Nzg3NGQ0ZDRkMWExYTFhIikubWFwKHN2KSx6dj1tdihQdiksUnY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFiZmRiIiwiZDcxOTFjZmRhZTYxYWJkOWU5MmM3YmI2IiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkOWU5MmM3YmI2IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZmZmZmJmZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IikubWFwKHN2KSxMdj1tdihSdiksRHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFjZjYwIiwiZDcxOTFjZmRhZTYxYTZkOTZhMWE5NjQxIiwiZDcxOTFjZmRhZTYxZmZmZmJmYTZkOTZhMWE5NjQxIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZmM4ZDU5ZmVlMDhiZmZmZmJmZDllZjhiOTFjZjYwMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwIiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZDllZjhiYTZkOTZhNjZiZDYzMWE5ODUwMDA2ODM3IikubWFwKHN2KSxVdj1tdihEdikscXY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTlkNTk0IiwiZDcxOTFjZmRhZTYxYWJkZGE0MmI4M2JhIiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkZGE0MmI4M2JhIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZmM4ZDU5ZmVlMDhiZmZmZmJmZTZmNTk4OTlkNTk0MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIiwiOWUwMTQyZDUzZTRmZjQ2ZDQzZmRhZTYxZmVlMDhiZmZmZmJmZTZmNTk4YWJkZGE0NjZjMmE1MzI4OGJkNWU0ZmEyIikubWFwKHN2KSxPdj1tdihxdiksWXY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWY5OTlkOGM5MmNhMjVmIiwiZWRmOGZiYjJlMmUyNjZjMmE0MjM4YjQ1IiwiZWRmOGZiYjJlMmUyNjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKHN2KSxCdj1tdihZdiksRnY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBlY2Y0OWViY2RhODg1NmE3IiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg0MTlkIiwiZWRmOGZiYjNjZGUzOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2ODg1NmE3ODEwZjdjIiwiZWRmOGZiYmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkNmUwMTZiIiwiZjdmY2ZkZTBlY2Y0YmZkM2U2OWViY2RhOGM5NmM2OGM2YmIxODg0MTlkODEwZjdjNGQwMDRiIikubWFwKHN2KSxJdj1tdihGdiksSHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTBmM2RiYThkZGI1NDNhMmNhIiwiZjBmOWU4YmFlNGJjN2JjY2M0MmI4Y2JlIiwiZjBmOWU4YmFlNGJjN2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NDNhMmNhMDg2OGFjIiwiZjBmOWU4Y2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg1ODllIiwiZjdmY2YwZTBmM2RiY2NlYmM1YThkZGI1N2JjY2M0NGViM2QzMmI4Y2JlMDg2OGFjMDg0MDgxIikubWFwKHN2KSxqdj1tdihIdiksWHY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlOGM4ZmRiYjg0ZTM0YTMzIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZDczMDFmIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmYjMwMDAwN2YwMDAwIikubWFwKHN2KSxHdj1tdihYdiksVnY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlMmYwYTZiZGRiMWM5MDk5IiwiZjZlZmY3YmRjOWUxNjdhOWNmMDI4MThhIiwiZjZlZmY3YmRjOWUxNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMWM5MDk5MDE2YzU5IiwiZjZlZmY3ZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2NDUwIiwiZmZmN2ZiZWNlMmYwZDBkMWU2YTZiZGRiNjdhOWNmMzY5MGMwMDI4MThhMDE2YzU5MDE0NjM2IikubWFwKHN2KSwkdj1tdihWdiksV3Y9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWNlN2YyYTZiZGRiMmI4Y2JlIiwiZjFlZWY2YmRjOWUxNzRhOWNmMDU3MGIwIiwiZjFlZWY2YmRjOWUxNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMmI4Y2JlMDQ1YThkIiwiZjFlZWY2ZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDM0ZTdiIiwiZmZmN2ZiZWNlN2YyZDBkMWU2YTZiZGRiNzRhOWNmMzY5MGMwMDU3MGIwMDQ1YThkMDIzODU4IikubWFwKHN2KSxadj1tdihXdiksUXY9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTdlMWVmYzk5NGM3ZGQxYzc3IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwY2UxMjU2IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTgwMDQzNjcwMDFmIikubWFwKHN2KSxKdj1tdihRdiksS3Y9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmRlMGRkZmE5ZmI1YzUxYjhhIiwiZmVlYmUyZmJiNGI5Zjc2OGExYWUwMTdlIiwiZmVlYmUyZmJiNGI5Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExYzUxYjhhN2EwMTc3IiwiZmVlYmUyZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3IiwiZmZmN2YzZmRlMGRkZmNjNWMwZmE5ZmI1Zjc2OGExZGQzNDk3YWUwMTdlN2EwMTc3NDkwMDZhIikubWFwKHN2KSx0Zz1tdihLdiksbmc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWRmOGIxN2ZjZGJiMmM3ZmI4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MjI1ZWE4IiwiZmZmZmNjYTFkYWI0NDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MmM3ZmI4MjUzNDk0IiwiZmZmZmNjYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MGMyYzg0IiwiZmZmZmQ5ZWRmOGIxYzdlOWI0N2ZjZGJiNDFiNmM0MWQ5MWMwMjI1ZWE4MjUzNDk0MDgxZDU4IikubWFwKHN2KSxlZz1tdihuZykscmc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjdmY2I5YWRkZDhlMzFhMzU0IiwiZmZmZmNjYzJlNjk5NzhjNjc5MjM4NDQzIiwiZmZmZmNjYzJlNjk5NzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA2ODM3MDA0NTI5IikubWFwKHN2KSxpZz1tdihyZyksb2c9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZmN2JjZmVjNDRmZDk1ZjBlIiwiZmZmZmQ0ZmVkOThlZmU5OTI5Y2M0YzAyIiwiZmZmZmQ0ZmVkOThlZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZDk1ZjBlOTkzNDA0IiwiZmZmZmQ0ZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOGMyZDA0IiwiZmZmZmU1ZmZmN2JjZmVlMzkxZmVjNDRmZmU5OTI5ZWM3MDE0Y2M0YzAyOTkzNDA0NjYyNTA2IikubWFwKHN2KSxhZz1tdihvZyksdWc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmZlZGEwZmViMjRjZjAzYjIwIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZTMxYTFjIiwiZmZmZmIyZmVjYzVjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZjAzYjIwYmQwMDI2IiwiZmZmZmIyZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYjEwMDI2IiwiZmZmZmNjZmZlZGEwZmVkOTc2ZmViMjRjZmQ4ZDNjZmM0ZTJhZTMxYTFjYmQwMDI2ODAwMDI2IikubWFwKHN2KSxmZz1tdih1ZyksY2c9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKHN2KSxzZz1tdihjZyksbGc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWUwYTFkOTliMzFhMzU0IiwiZWRmOGU5YmFlNGIzNzRjNDc2MjM4YjQ1IiwiZWRmOGU5YmFlNGIzNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2MzFhMzU0MDA2ZDJjIiwiZWRmOGU5YzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA1YTMyIiwiZjdmY2Y1ZTVmNWUwYzdlOWMwYTFkOTliNzRjNDc2NDFhYjVkMjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKHN2KSxoZz1tdihsZyksZGc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjBmMGYwYmRiZGJkNjM2MzYzIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NTI1MjUyIiwiZjdmN2Y3Y2NjY2NjOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NjM2MzYzMjUyNTI1IiwiZjdmN2Y3ZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1IiwiZmZmZmZmZjBmMGYwZDlkOWQ5YmRiZGJkOTY5Njk2NzM3MzczNTI1MjUyMjUyNTI1MDAwMDAwIikubWFwKHN2KSxwZz1tdihkZyksdmc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWZlZGY1YmNiZGRjNzU2YmIxIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkIikubWFwKHN2KSxnZz1tdih2ZykseWc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlMGQyZmM5MjcyZGUyZDI2IiwiZmVlNWQ5ZmNhZTkxZmI2YTRhY2IxODFkIiwiZmVlNWQ5ZmNhZTkxZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZGUyZDI2YTUwZjE1IiwiZmVlNWQ5ZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkOTkwMDBkIiwiZmZmNWYwZmVlMGQyZmNiYmExZmM5MjcyZmI2YTRhZWYzYjJjY2IxODFkYTUwZjE1NjcwMDBkIikubWFwKHN2KSxfZz1tdih5ZyksYmc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlNmNlZmRhZTZiZTY1NTBkIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZDk0NzAxIiwiZmVlZGRlZmRiZTg1ZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZTY1NTBkYTYzNjAzIiwiZmVlZGRlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxOGMyZDA0IiwiZmZmNWViZmVlNmNlZmRkMGEyZmRhZTZiZmQ4ZDNjZjE2OTEzZDk0ODAxYTYzNjAzN2YyNzA0IikubWFwKHN2KSxtZz1tdihiZykseGc9R2UoS24oMzAwLC41LDApLEtuKC0yNDAsLjUsMSkpLHdnPUdlKEtuKC0xMDAsLjc1LC4zNSksS24oODAsMS41LC44KSksTWc9R2UoS24oMjYwLC43NSwuMzUpLEtuKDgwLDEuNSwuOCkpLEFnPUtuKCk7dmFyIFRnPWJuKCksTmc9TWF0aC5QSS8zLFNnPTIqTWF0aC5QSS8zO2Z1bmN0aW9uIEVnKHQpe3ZhciBuPXQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdFtNYXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKGUqbikpKV19fXZhciBrZz1FZyhzdigiNDQwMTU0NDQwMjU2NDUwNDU3NDUwNTU5NDYwNzVhNDYwODVjNDYwYTVkNDYwYjVlNDcwZDYwNDcwZTYxNDcxMDYzNDcxMTY0NDcxMzY1NDgxNDY3NDgxNjY4NDgxNzY5NDgxODZhNDgxYTZjNDgxYjZkNDgxYzZlNDgxZDZmNDgxZjcwNDgyMDcxNDgyMTczNDgyMzc0NDgyNDc1NDgyNTc2NDgyNjc3NDgyODc4NDgyOTc5NDcyYTdhNDcyYzdhNDcyZDdiNDcyZTdjNDcyZjdkNDYzMDdlNDYzMjdlNDYzMzdmNDYzNDgwNDUzNTgxNDUzNzgxNDUzODgyNDQzOTgzNDQzYTgzNDQzYjg0NDMzZDg0NDMzZTg1NDIzZjg1NDI0MDg2NDI0MTg2NDE0Mjg3NDE0NDg3NDA0NTg4NDA0Njg4M2Y0Nzg4M2Y0ODg5M2U0OTg5M2U0YTg5M2U0YzhhM2Q0ZDhhM2Q0ZThhM2M0ZjhhM2M1MDhiM2I1MThiM2I1MjhiM2E1MzhiM2E1NDhjMzk1NThjMzk1NjhjMzg1ODhjMzg1OThjMzc1YThjMzc1YjhkMzY1YzhkMzY1ZDhkMzU1ZThkMzU1ZjhkMzQ2MDhkMzQ2MThkMzM2MjhkMzM2MzhkMzI2NDhlMzI2NThlMzE2NjhlMzE2NzhlMzE2ODhlMzA2OThlMzA2YThlMmY2YjhlMmY2YzhlMmU2ZDhlMmU2ZThlMmU2ZjhlMmQ3MDhlMmQ3MThlMmM3MThlMmM3MjhlMmM3MzhlMmI3NDhlMmI3NThlMmE3NjhlMmE3NzhlMmE3ODhlMjk3OThlMjk3YThlMjk3YjhlMjg3YzhlMjg3ZDhlMjc3ZThlMjc3ZjhlMjc4MDhlMjY4MThlMjY4MjhlMjY4MjhlMjU4MzhlMjU4NDhlMjU4NThlMjQ4NjhlMjQ4NzhlMjM4ODhlMjM4OThlMjM4YThkMjI4YjhkMjI4YzhkMjI4ZDhkMjE4ZThkMjE4ZjhkMjE5MDhkMjE5MThjMjA5MjhjMjA5MjhjMjA5MzhjMWY5NDhjMWY5NThiMWY5NjhiMWY5NzhiMWY5ODhiMWY5OThhMWY5YThhMWU5YjhhMWU5Yzg5MWU5ZDg5MWY5ZTg5MWY5Zjg4MWZhMDg4MWZhMTg4MWZhMTg3MWZhMjg3MjBhMzg2MjBhNDg2MjFhNTg1MjFhNjg1MjJhNzg1MjJhODg0MjNhOTgzMjRhYTgzMjVhYjgyMjVhYzgyMjZhZDgxMjdhZDgxMjhhZTgwMjlhZjdmMmFiMDdmMmNiMTdlMmRiMjdkMmViMzdjMmZiNDdjMzFiNTdiMzJiNjdhMzRiNjc5MzViNzc5MzdiODc4MzhiOTc3M2FiYTc2M2JiYjc1M2RiYzc0M2ZiYzczNDBiZDcyNDJiZTcxNDRiZjcwNDZjMDZmNDhjMTZlNGFjMTZkNGNjMjZjNGVjMzZiNTBjNDZhNTJjNTY5NTRjNTY4NTZjNjY3NThjNzY1NWFjODY0NWNjODYzNWVjOTYyNjBjYTYwNjNjYjVmNjVjYjVlNjdjYzVjNjljZDViNmNjZDVhNmVjZTU4NzBjZjU3NzNkMDU2NzVkMDU0NzdkMTUzN2FkMTUxN2NkMjUwN2ZkMzRlODFkMzRkODRkNDRiODZkNTQ5ODlkNTQ4OGJkNjQ2OGVkNjQ1OTBkNzQzOTNkNzQxOTVkODQwOThkODNlOWJkOTNjOWRkOTNiYTBkYTM5YTJkYTM3YTVkYjM2YThkYjM0YWFkYzMyYWRkYzMwYjBkZDJmYjJkZDJkYjVkZTJiYjhkZTI5YmFkZTI4YmRkZjI2YzBkZjI1YzJkZjIzYzVlMDIxYzhlMDIwY2FlMTFmY2RlMTFkZDBlMTFjZDJlMjFiZDVlMjFhZDhlMjE5ZGFlMzE5ZGRlMzE4ZGZlMzE4ZTJlNDE4ZTVlNDE5ZTdlNDE5ZWFlNTFhZWNlNTFiZWZlNTFjZjFlNTFkZjRlNjFlZjZlNjIwZjhlNjIxZmJlNzIzZmRlNzI1IikpLENnPUVnKHN2KCIwMDAwMDQwMTAwMDUwMTAxMDYwMTAxMDgwMjAxMDkwMjAyMGIwMjAyMGQwMzAzMGYwMzAzMTIwNDA0MTQwNTA0MTYwNjA1MTgwNjA1MWEwNzA2MWMwODA3MWUwOTA3MjAwYTA4MjIwYjA5MjQwYzA5MjYwZDBhMjkwZTBiMmIxMDBiMmQxMTBjMmYxMjBkMzExMzBkMzQxNDBlMzYxNTBlMzgxNjBmM2IxODBmM2QxOTEwM2YxYTEwNDIxYzEwNDQxZDExNDcxZTExNDkyMDExNGIyMTExNGUyMjExNTAyNDEyNTMyNTEyNTUyNzEyNTgyOTExNWEyYTExNWMyYzExNWYyZDExNjEyZjExNjMzMTExNjUzMzEwNjczNDEwNjkzNjEwNmIzODEwNmMzOTBmNmUzYjBmNzAzZDBmNzEzZjBmNzI0MDBmNzQ0MjBmNzU0NDBmNzY0NTEwNzc0NzEwNzg0OTEwNzg0YTEwNzk0YzExN2E0ZTExN2I0ZjEyN2I1MTEyN2M1MjEzN2M1NDEzN2Q1NjE0N2Q1NzE1N2U1OTE1N2U1YTE2N2U1YzE2N2Y1ZDE3N2Y1ZjE4N2Y2MDE4ODA2MjE5ODA2NDFhODA2NTFhODA2NzFiODA2ODFjODE2YTFjODE2YjFkODE2ZDFkODE2ZTFlODE3MDFmODE3MjFmODE3MzIwODE3NTIxODE3NjIxODE3ODIyODE3OTIyODI3YjIzODI3YzIzODI3ZTI0ODI4MDI1ODI4MTI1ODE4MzI2ODE4NDI2ODE4NjI3ODE4ODI3ODE4OTI4ODE4YjI5ODE4YzI5ODE4ZTJhODE5MDJhODE5MTJiODE5MzJiODA5NDJjODA5NjJjODA5ODJkODA5OTJkODA5YjJlN2Y5YzJlN2Y5ZTJmN2ZhMDJmN2ZhMTMwN2VhMzMwN2VhNTMxN2VhNjMxN2RhODMyN2RhYTMzN2RhYjMzN2NhZDM0N2NhZTM0N2JiMDM1N2JiMjM1N2JiMzM2N2FiNTM2N2FiNzM3NzliODM3NzliYTM4NzhiYzM5NzhiZDM5NzdiZjNhNzdjMDNhNzZjMjNiNzVjNDNjNzVjNTNjNzRjNzNkNzNjODNlNzNjYTNlNzJjYzNmNzFjZDQwNzFjZjQwNzBkMDQxNmZkMjQyNmZkMzQzNmVkNTQ0NmRkNjQ1NmNkODQ1NmNkOTQ2NmJkYjQ3NmFkYzQ4NjlkZTQ5NjhkZjRhNjhlMDRjNjdlMjRkNjZlMzRlNjVlNDRmNjRlNTUwNjRlNzUyNjNlODUzNjJlOTU0NjJlYTU2NjFlYjU3NjBlYzU4NjBlZDVhNWZlZTViNWVlZjVkNWVmMDVmNWVmMTYwNWRmMjYyNWRmMjY0NWNmMzY1NWNmNDY3NWNmNDY5NWNmNTZiNWNmNjZjNWNmNjZlNWNmNzcwNWNmNzcyNWNmODc0NWNmODc2NWNmOTc4NWRmOTc5NWRmOTdiNWRmYTdkNWVmYTdmNWVmYTgxNWZmYjgzNWZmYjg1NjBmYjg3NjFmYzg5NjFmYzhhNjJmYzhjNjNmYzhlNjRmYzkwNjVmZDkyNjZmZDk0NjdmZDk2NjhmZDk4NjlmZDlhNmFmZDliNmJmZTlkNmNmZTlmNmRmZWExNmVmZWEzNmZmZWE1NzFmZWE3NzJmZWE5NzNmZWFhNzRmZWFjNzZmZWFlNzdmZWIwNzhmZWIyN2FmZWI0N2JmZWI2N2NmZWI3N2VmZWI5N2ZmZWJiODFmZWJkODJmZWJmODRmZWMxODVmZWMyODdmZWM0ODhmZWM2OGFmZWM4OGNmZWNhOGRmZWNjOGZmZWNkOTBmZWNmOTJmZWQxOTRmZWQzOTVmZWQ1OTdmZWQ3OTlmZWQ4OWFmZGRhOWNmZGRjOWVmZGRlYTBmZGUwYTFmZGUyYTNmZGUzYTVmZGU1YTdmZGU3YTlmZGU5YWFmZGViYWNmY2VjYWVmY2VlYjBmY2YwYjJmY2YyYjRmY2Y0YjZmY2Y2YjhmY2Y3YjlmY2Y5YmJmY2ZiYmRmY2ZkYmYiKSksUGc9RWcoc3YoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwYTAyMDIwYzAyMDIwZTAzMDIxMDA0MDMxMjA0MDMxNDA1MDQxNzA2MDQxOTA3MDUxYjA4MDUxZDA5MDYxZjBhMDcyMjBiMDcyNDBjMDgyNjBkMDgyOTBlMDkyYjEwMDkyZDExMGEzMDEyMGEzMjE0MGIzNDE1MGIzNzE2MGIzOTE4MGMzYzE5MGMzZTFiMGM0MTFjMGM0MzFlMGM0NTFmMGM0ODIxMGM0YTIzMGM0YzI0MGM0ZjI2MGM1MTI4MGI1MzI5MGI1NTJiMGI1NzJkMGI1OTJmMGE1YjMxMGE1YzMyMGE1ZTM0MGE1ZjM2MDk2MTM4MDk2MjM5MDk2MzNiMDk2NDNkMDk2NTNlMDk2NjQwMGE2NzQyMGE2ODQ0MGE2ODQ1MGE2OTQ3MGI2YTQ5MGI2YTRhMGM2YjRjMGM2YjRkMGQ2YzRmMGQ2YzUxMGU2YzUyMGU2ZDU0MGY2ZDU1MGY2ZDU3MTA2ZTU5MTA2ZTVhMTE2ZTVjMTI2ZTVkMTI2ZTVmMTM2ZTYxMTM2ZTYyMTQ2ZTY0MTU2ZTY1MTU2ZTY3MTY2ZTY5MTY2ZTZhMTc2ZTZjMTg2ZTZkMTg2ZTZmMTk2ZTcxMTk2ZTcyMWE2ZTc0MWE2ZTc1MWI2ZTc3MWM2ZDc4MWM2ZDdhMWQ2ZDdjMWQ2ZDdkMWU2ZDdmMWU2YzgwMWY2YzgyMjA2Yzg0MjA2Yjg1MjE2Yjg3MjE2Yjg4MjI2YThhMjI2YThjMjM2OThkMjM2OThmMjQ2OTkwMjU2ODkyMjU2ODkzMjY2Nzk1MjY2Nzk3Mjc2Njk4Mjc2NjlhMjg2NTliMjk2NDlkMjk2NDlmMmE2M2EwMmE2M2EyMmI2MmEzMmM2MWE1MmM2MGE2MmQ2MGE4MmU1ZmE5MmU1ZWFiMmY1ZWFkMzA1ZGFlMzA1Y2IwMzE1YmIxMzI1YWIzMzI1YWI0MzM1OWI2MzQ1OGI3MzU1N2I5MzU1NmJhMzY1NWJjMzc1NGJkMzg1M2JmMzk1MmMwM2E1MWMxM2E1MGMzM2I0ZmM0M2M0ZWM2M2Q0ZGM3M2U0Y2M4M2Y0YmNhNDA0YWNiNDE0OWNjNDI0OGNlNDM0N2NmNDQ0NmQwNDU0NWQyNDY0NGQzNDc0M2Q0NDg0MmQ1NGE0MWQ3NGIzZmQ4NGMzZWQ5NGQzZGRhNGUzY2RiNTAzYmRkNTEzYWRlNTIzOGRmNTMzN2UwNTUzNmUxNTYzNWUyNTczNGUzNTkzM2U0NWEzMWU1NWMzMGU2NWQyZmU3NWUyZWU4NjAyZGU5NjEyYmVhNjMyYWViNjQyOWViNjYyOGVjNjcyNmVkNjkyNWVlNmEyNGVmNmMyM2VmNmUyMWYwNmYyMGYxNzExZmYxNzMxZGYyNzQxY2YzNzYxYmYzNzgxOWY0NzkxOGY1N2IxN2Y1N2QxNWY2N2UxNGY2ODAxM2Y3ODIxMmY3ODQxMGY4ODUwZmY4ODcwZWY4ODkwY2Y5OGIwYmY5OGMwYWY5OGUwOWZhOTAwOGZhOTIwN2ZhOTQwN2ZiOTYwNmZiOTcwNmZiOTkwNmZiOWIwNmZiOWQwN2ZjOWYwN2ZjYTEwOGZjYTMwOWZjYTUwYWZjYTYwY2ZjYTgwZGZjYWEwZmZjYWMxMWZjYWUxMmZjYjAxNGZjYjIxNmZjYjQxOGZiYjYxYWZiYjgxZGZiYmExZmZiYmMyMWZiYmUyM2ZhYzAyNmZhYzIyOGZhYzQyYWZhYzYyZGY5YzcyZmY5YzkzMmY5Y2IzNWY4Y2QzN2Y4Y2YzYWY3ZDEzZGY3ZDM0MGY2ZDU0M2Y2ZDc0NmY1ZDk0OWY1ZGI0Y2Y0ZGQ0ZmY0ZGY1M2Y0ZTE1NmYzZTM1YWYzZTU1ZGYyZTY2MWYyZTg2NWYyZWE2OWYxZWM2ZGYxZWQ3MWYxZWY3NWYxZjE3OWYyZjI3ZGYyZjQ4MmYzZjU4NmYzZjY4YWY0Zjg4ZWY1Zjk5MmY2ZmE5NmY4ZmI5YWY5ZmM5ZGZhZmRhMWZjZmZhNCIpKSx6Zz1FZyhzdigiMGQwODg3MTAwNzg4MTMwNzg5MTYwNzhhMTkwNjhjMWIwNjhkMWQwNjhlMjAwNjhmMjIwNjkwMjQwNjkxMjYwNTkxMjgwNTkyMmEwNTkzMmMwNTk0MmUwNTk1MmYwNTk2MzEwNTk3MzMwNTk3MzUwNDk4MzcwNDk5MzgwNDlhM2EwNDlhM2MwNDliM2UwNDljM2YwNDljNDEwNDlkNDMwMzllNDQwMzllNDYwMzlmNDgwMzlmNDkwM2EwNGIwM2ExNGMwMmExNGUwMmEyNTAwMmEyNTEwMmEzNTMwMmEzNTUwMmE0NTYwMWE0NTgwMWE0NTkwMWE1NWIwMWE1NWMwMWE2NWUwMWE2NjAwMWE2NjEwMGE3NjMwMGE3NjQwMGE3NjYwMGE3NjcwMGE4NjkwMGE4NmEwMGE4NmMwMGE4NmUwMGE4NmYwMGE4NzEwMGE4NzIwMWE4NzQwMWE4NzUwMWE4NzcwMWE4NzgwMWE4N2EwMmE4N2IwMmE4N2QwM2E4N2UwM2E4ODAwNGE4ODEwNGE3ODMwNWE3ODQwNWE3ODYwNmE2ODcwN2E2ODgwOGE2OGEwOWE1OGIwYWE1OGQwYmE1OGUwY2E0OGYwZGE0OTEwZWEzOTIwZmEzOTQxMGEyOTUxMWExOTYxM2ExOTgxNGEwOTkxNTlmOWExNjlmOWMxNzllOWQxODlkOWUxOTlkYTAxYTljYTExYjliYTIxZDlhYTMxZTlhYTUxZjk5YTYyMDk4YTcyMTk3YTgyMjk2YWEyMzk1YWIyNDk0YWMyNjk0YWQyNzkzYWUyODkyYjAyOTkxYjEyYTkwYjIyYjhmYjMyYzhlYjQyZThkYjUyZjhjYjYzMDhiYjczMThhYjgzMjg5YmEzMzg4YmIzNDg4YmMzNTg3YmQzNzg2YmUzODg1YmYzOTg0YzAzYTgzYzEzYjgyYzIzYzgxYzMzZDgwYzQzZTdmYzU0MDdlYzY0MTdkYzc0MjdjYzg0MzdiYzk0NDdhY2E0NTdhY2I0Njc5Y2M0Nzc4Y2M0OTc3Y2Q0YTc2Y2U0Yjc1Y2Y0Yzc0ZDA0ZDczZDE0ZTcyZDI0ZjcxZDM1MTcxZDQ1MjcwZDU1MzZmZDU1NDZlZDY1NTZkZDc1NjZjZDg1NzZiZDk1ODZhZGE1YTZhZGE1YjY5ZGI1YzY4ZGM1ZDY3ZGQ1ZTY2ZGU1ZjY1ZGU2MTY0ZGY2MjYzZTA2MzYzZTE2NDYyZTI2NTYxZTI2NjYwZTM2ODVmZTQ2OTVlZTU2YTVkZTU2YjVkZTY2YzVjZTc2ZTViZTc2ZjVhZTg3MDU5ZTk3MTU4ZTk3MjU3ZWE3NDU3ZWI3NTU2ZWI3NjU1ZWM3NzU0ZWQ3OTUzZWQ3YTUyZWU3YjUxZWY3YzUxZWY3ZTUwZjA3ZjRmZjA4MDRlZjE4MTRkZjE4MzRjZjI4NDRiZjM4NTRiZjM4NzRhZjQ4ODQ5ZjQ4OTQ4ZjU4YjQ3ZjU4YzQ2ZjY4ZDQ1ZjY4ZjQ0Zjc5MDQ0Zjc5MTQzZjc5MzQyZjg5NDQxZjg5NTQwZjk5NzNmZjk5ODNlZjk5YTNlZmE5YjNkZmE5YzNjZmE5ZTNiZmI5ZjNhZmJhMTM5ZmJhMjM4ZmNhMzM4ZmNhNTM3ZmNhNjM2ZmNhODM1ZmNhOTM0ZmRhYjMzZmRhYzMzZmRhZTMyZmRhZjMxZmRiMTMwZmRiMjJmZmRiNDJmZmRiNTJlZmViNzJkZmViODJjZmViYTJjZmViYjJiZmViZDJhZmViZTJhZmVjMDI5ZmRjMjI5ZmRjMzI4ZmRjNTI3ZmRjNjI3ZmRjODI3ZmRjYTI2ZmRjYjI2ZmNjZDI1ZmNjZTI1ZmNkMDI1ZmNkMjI1ZmJkMzI0ZmJkNTI0ZmJkNzI0ZmFkODI0ZmFkYTI0ZjlkYzI0ZjlkZDI1ZjhkZjI1ZjhlMTI1ZjdlMjI1ZjdlNDI1ZjZlNjI2ZjZlODI2ZjVlOTI2ZjVlYjI3ZjRlZDI3ZjNlZTI3ZjNmMDI3ZjJmMjI3ZjFmNDI2ZjFmNTI1ZjBmNzI0ZjBmOTIxIikpO2Z1bmN0aW9uIFJnKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX12YXIgTGc9TWF0aC5hYnMsRGc9TWF0aC5hdGFuMixVZz1NYXRoLmNvcyxxZz1NYXRoLm1heCxPZz1NYXRoLm1pbixZZz1NYXRoLnNpbixCZz1NYXRoLnNxcnQsRmc9MWUtMTIsSWc9TWF0aC5QSSxIZz1JZy8yLGpnPTIqSWc7ZnVuY3Rpb24gWGcodCl7cmV0dXJuIHQ+PTE/SGc6dDw9LTE/LUhnOk1hdGguYXNpbih0KX1mdW5jdGlvbiBHZyh0KXtyZXR1cm4gdC5pbm5lclJhZGl1c31mdW5jdGlvbiBWZyh0KXtyZXR1cm4gdC5vdXRlclJhZGl1c31mdW5jdGlvbiAkZyh0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIFdnKHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIFpnKHQpe3JldHVybiB0JiZ0LnBhZEFuZ2xlfWZ1bmN0aW9uIFFnKHQsbixlLHIsaSxvLGEpe3ZhciB1PXQtZSxmPW4tcixjPShhP286LW8pL0JnKHUqdStmKmYpLHM9YypmLGw9LWMqdSxoPXQrcyxkPW4rbCxwPWUrcyx2PXIrbCxnPShoK3ApLzIseT0oZCt2KS8yLF89cC1oLGI9di1kLG09XypfK2IqYix4PWktbyx3PWgqdi1wKmQsTT0oYjwwPy0xOjEpKkJnKHFnKDAseCp4Km0tdyp3KSksQT0odypiLV8qTSkvbSxUPSgtdypfLWIqTSkvbSxOPSh3KmIrXypNKS9tLFM9KC13Kl8rYipNKS9tLEU9QS1nLGs9VC15LEM9Ti1nLFA9Uy15O3JldHVybiBFKkUrayprPkMqQytQKlAmJihBPU4sVD1TKSx7Y3g6QSxjeTpULHgwMTotcyx5MDE6LWwseDExOkEqKGkveC0xKSx5MTE6VCooaS94LTEpfX1mdW5jdGlvbiBKZyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gS2codCl7cmV0dXJuIG5ldyBKZyh0KX1mdW5jdGlvbiB0eSh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBueSh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBleSgpe3ZhciB0PXR5LG49bnksZT1SZyghMCkscj1udWxsLGk9S2csbz1udWxsO2Z1bmN0aW9uIGEoYSl7dmFyIHUsZixjLHM9YS5sZW5ndGgsbD0hMTtmb3IobnVsbD09ciYmKG89aShjPUdpKCkpKSx1PTA7dTw9czsrK3UpISh1PHMmJmUoZj1hW3VdLHUsYSkpPT09bCYmKChsPSFsKT9vLmxpbmVTdGFydCgpOm8ubGluZUVuZCgpKSxsJiZvLnBvaW50KCt0KGYsdSxhKSwrbihmLHUsYSkpO2lmKGMpcmV0dXJuIG89bnVsbCxjKyIifHxudWxsfXJldHVybiBhLng9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpSZygrbiksYSk6dH0sYS55PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGEpOm59LGEuZGVmaW5lZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCEhdCksYSk6ZX0sYS5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10LG51bGwhPXImJihvPWkocikpLGEpOml9LGEuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obnVsbD09dD9yPW89bnVsbDpvPWkocj10KSxhKTpyfSxhfWZ1bmN0aW9uIHJ5KCl7dmFyIHQ9dHksbj1udWxsLGU9UmcoMCkscj1ueSxpPVJnKCEwKSxvPW51bGwsYT1LZyx1PW51bGw7ZnVuY3Rpb24gZihmKXt2YXIgYyxzLGwsaCxkLHA9Zi5sZW5ndGgsdj0hMSxnPW5ldyBBcnJheShwKSx5PW5ldyBBcnJheShwKTtmb3IobnVsbD09byYmKHU9YShkPUdpKCkpKSxjPTA7Yzw9cDsrK2Mpe2lmKCEoYzxwJiZpKGg9ZltjXSxjLGYpKT09PXYpaWYodj0hdilzPWMsdS5hcmVhU3RhcnQoKSx1LmxpbmVTdGFydCgpO2Vsc2V7Zm9yKHUubGluZUVuZCgpLHUubGluZVN0YXJ0KCksbD1jLTE7bD49czstLWwpdS5wb2ludChnW2xdLHlbbF0pO3UubGluZUVuZCgpLHUuYXJlYUVuZCgpfXYmJihnW2NdPSt0KGgsYyxmKSx5W2NdPStlKGgsYyxmKSx1LnBvaW50KG4/K24oaCxjLGYpOmdbY10scj8rcihoLGMsZik6eVtjXSkpfWlmKGQpcmV0dXJuIHU9bnVsbCxkKyIifHxudWxsfWZ1bmN0aW9uIGMoKXtyZXR1cm4gZXkoKS5kZWZpbmVkKGkpLmN1cnZlKGEpLmNvbnRleHQobyl9cmV0dXJuIGYueD1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOlJnKCtlKSxuPW51bGwsZik6dH0sZi54MD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlJnKCtuKSxmKTp0fSxmLngxPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxmKTpufSxmLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpSZygrdCkscj1udWxsLGYpOmV9LGYueTA9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpSZygrdCksZik6ZX0sZi55MT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10P251bGw6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpSZygrdCksZik6cn0sZi5saW5lWDA9Zi5saW5lWTA9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShlKX0sZi5saW5lWTE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngodCkueShyKX0sZi5saW5lWDE9ZnVuY3Rpb24oKXtyZXR1cm4gYygpLngobikueShlKX0sZi5kZWZpbmVkPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoISF0KSxmKTppfSxmLmN1cnZlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQsbnVsbCE9byYmKHU9YShvKSksZik6YX0sZi5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P289dT1udWxsOnU9YShvPXQpLGYpOm99LGZ9ZnVuY3Rpb24gaXkodCxuKXtyZXR1cm4gbjx0Py0xOm4+dD8xOm4+PXQ/MDpOYU59ZnVuY3Rpb24gb3kodCl7cmV0dXJuIHR9SmcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsbil9fX07dmFyIGF5PWZ5KEtnKTtmdW5jdGlvbiB1eSh0KXt0aGlzLl9jdXJ2ZT10fWZ1bmN0aW9uIGZ5KHQpe2Z1bmN0aW9uIG4obil7cmV0dXJuIG5ldyB1eSh0KG4pKX1yZXR1cm4gbi5fY3VydmU9dCxufWZ1bmN0aW9uIGN5KHQpe3ZhciBuPXQuY3VydmU7cmV0dXJuIHQuYW5nbGU9dC54LGRlbGV0ZSB0LngsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5jdXJ2ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKGZ5KHQpKTpuKCkuX2N1cnZlfSx0fWZ1bmN0aW9uIHN5KCl7cmV0dXJuIGN5KGV5KCkuY3VydmUoYXkpKX1mdW5jdGlvbiBseSgpe3ZhciB0PXJ5KCkuY3VydmUoYXkpLG49dC5jdXJ2ZSxlPXQubGluZVgwLHI9dC5saW5lWDEsaT10LmxpbmVZMCxvPXQubGluZVkxO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQuc3RhcnRBbmdsZT10LngwLGRlbGV0ZSB0LngwLHQuZW5kQW5nbGU9dC54MSxkZWxldGUgdC54MSx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0LmlubmVyUmFkaXVzPXQueTAsZGVsZXRlIHQueTAsdC5vdXRlclJhZGl1cz10LnkxLGRlbGV0ZSB0LnkxLHQubGluZVN0YXJ0QW5nbGU9ZnVuY3Rpb24oKXtyZXR1cm4gY3koZSgpKX0sZGVsZXRlIHQubGluZVgwLHQubGluZUVuZEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIGN5KHIoKSl9LGRlbGV0ZSB0LmxpbmVYMSx0LmxpbmVJbm5lclJhZGl1cz1mdW5jdGlvbigpe3JldHVybiBjeShpKCkpfSxkZWxldGUgdC5saW5lWTAsdC5saW5lT3V0ZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gY3kobygpKX0sZGVsZXRlIHQubGluZVkxLHQuY3VydmU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihmeSh0KSk6bigpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBoeSh0LG4pe3JldHVyblsobj0rbikqTWF0aC5jb3ModC09TWF0aC5QSS8yKSxuKk1hdGguc2luKHQpXX11eS5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFTdGFydCgpfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUuYXJlYUVuZCgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl9jdXJ2ZS5wb2ludChuKk1hdGguc2luKHQpLG4qLU1hdGguY29zKHQpKX19O3ZhciBkeT1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gcHkodCl7cmV0dXJuIHQuc291cmNlfWZ1bmN0aW9uIHZ5KHQpe3JldHVybiB0LnRhcmdldH1mdW5jdGlvbiBneSh0KXt2YXIgbj1weSxlPXZ5LHI9dHksaT1ueSxvPW51bGw7ZnVuY3Rpb24gYSgpe3ZhciBhLHU9ZHkuY2FsbChhcmd1bWVudHMpLGY9bi5hcHBseSh0aGlzLHUpLGM9ZS5hcHBseSh0aGlzLHUpO2lmKG98fChvPWE9R2koKSksdChvLCtyLmFwcGx5KHRoaXMsKHVbMF09Zix1KSksK2kuYXBwbHkodGhpcyx1KSwrci5hcHBseSh0aGlzLCh1WzBdPWMsdSkpLCtpLmFwcGx5KHRoaXMsdSkpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGEpOm59LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsYSk6ZX0sYS54PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGEpOnJ9LGEueT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxhKTppfSxhLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89bnVsbD09dD9udWxsOnQsYSk6b30sYX1mdW5jdGlvbiB5eSh0LG4sZSxyLGkpe3QubW92ZVRvKG4sZSksdC5iZXppZXJDdXJ2ZVRvKG49KG4rcikvMixlLG4saSxyLGkpfWZ1bmN0aW9uIF95KHQsbixlLHIsaSl7dC5tb3ZlVG8obixlKSx0LmJlemllckN1cnZlVG8obixlPShlK2kpLzIscixlLHIsaSl9ZnVuY3Rpb24gYnkodCxuLGUscixpKXt2YXIgbz1oeShuLGUpLGE9aHkobixlPShlK2kpLzIpLHU9aHkocixlKSxmPWh5KHIsaSk7dC5tb3ZlVG8ob1swXSxvWzFdKSx0LmJlemllckN1cnZlVG8oYVswXSxhWzFdLHVbMF0sdVsxXSxmWzBdLGZbMV0pfXZhciBteT17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuL0lnKTt0Lm1vdmVUbyhlLDApLHQuYXJjKDAsMCxlLDAsamcpfX0seHk9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQobi81KS8yO3QubW92ZVRvKC0zKmUsLWUpLHQubGluZVRvKC1lLC1lKSx0LmxpbmVUbygtZSwtMyplKSx0LmxpbmVUbyhlLC0zKmUpLHQubGluZVRvKGUsLWUpLHQubGluZVRvKDMqZSwtZSksdC5saW5lVG8oMyplLGUpLHQubGluZVRvKGUsZSksdC5saW5lVG8oZSwzKmUpLHQubGluZVRvKC1lLDMqZSksdC5saW5lVG8oLWUsZSksdC5saW5lVG8oLTMqZSxlKSx0LmNsb3NlUGF0aCgpfX0sd3k9TWF0aC5zcXJ0KDEvMyksTXk9Mip3eSxBeT17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuL015KSxyPWUqd3k7dC5tb3ZlVG8oMCwtZSksdC5saW5lVG8ociwwKSx0LmxpbmVUbygwLGUpLHQubGluZVRvKC1yLDApLHQuY2xvc2VQYXRoKCl9fSxUeT1NYXRoLnNpbihJZy8xMCkvTWF0aC5zaW4oNypJZy8xMCksTnk9TWF0aC5zaW4oamcvMTApKlR5LFN5PS1NYXRoLmNvcyhqZy8xMCkqVHksRXk9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT1NYXRoLnNxcnQoLjg5MDgxMzA5MTUyOTI4NTIqbikscj1OeSplLGk9U3kqZTt0Lm1vdmVUbygwLC1lKSx0LmxpbmVUbyhyLGkpO2Zvcih2YXIgbz0xO288NTsrK28pe3ZhciBhPWpnKm8vNSx1PU1hdGguY29zKGEpLGY9TWF0aC5zaW4oYSk7dC5saW5lVG8oZiplLC11KmUpLHQubGluZVRvKHUqci1mKmksZipyK3UqaSl9dC5jbG9zZVBhdGgoKX19LGt5PXtkcmF3OmZ1bmN0aW9uKHQsbil7dmFyIGU9TWF0aC5zcXJ0KG4pLHI9LWUvMjt0LnJlY3QocixyLGUsZSl9fSxDeT1NYXRoLnNxcnQoMyksUHk9e2RyYXc6ZnVuY3Rpb24odCxuKXt2YXIgZT0tTWF0aC5zcXJ0KG4vKDMqQ3kpKTt0Lm1vdmVUbygwLDIqZSksdC5saW5lVG8oLUN5KmUsLWUpLHQubGluZVRvKEN5KmUsLWUpLHQuY2xvc2VQYXRoKCl9fSx6eT1NYXRoLnNxcnQoMykvMixSeT0xL01hdGguc3FydCgxMiksTHk9MyooUnkvMisxKSxEeT17ZHJhdzpmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguc3FydChuL0x5KSxyPWUvMixpPWUqUnksbz1yLGE9ZSpSeStlLHU9LW8sZj1hO3QubW92ZVRvKHIsaSksdC5saW5lVG8obyxhKSx0LmxpbmVUbyh1LGYpLHQubGluZVRvKC0uNSpyLXp5KmksenkqcistLjUqaSksdC5saW5lVG8oLS41Km8tenkqYSx6eSpvKy0uNSphKSx0LmxpbmVUbygtLjUqdS16eSpmLHp5KnUrLS41KmYpLHQubGluZVRvKC0uNSpyK3p5KmksLS41KmktenkqciksdC5saW5lVG8oLS41Km8renkqYSwtLjUqYS16eSpvKSx0LmxpbmVUbygtLjUqdSt6eSpmLC0uNSpmLXp5KnUpLHQuY2xvc2VQYXRoKCl9fSxVeT1bbXkseHksQXksa3ksRXksUHksRHldO2Z1bmN0aW9uIHF5KCl7fWZ1bmN0aW9uIE95KHQsbixlKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErbikvNiwodC5feTArNCp0Ll95MStlKS82KX1mdW5jdGlvbiBZeSh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gQnkodCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIEZ5KHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBJeSh0LG4pe3RoaXMuX2Jhc2lzPW5ldyBZeSh0KSx0aGlzLl9iZXRhPW59WXkucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzpPeSh0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDpPeSh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1ufX0sQnkucHJvdG90eXBlPXthcmVhU3RhcnQ6cXksYXJlYUVuZDpxeSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gyLHRoaXMuX3kyKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMjp0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDIrMip0aGlzLl94MykvMywodGhpcy5feTIrMip0aGlzLl95MykvMyksdGhpcy5fY29udGV4dC5saW5lVG8oKHRoaXMuX3gzKzIqdGhpcy5feDIpLzMsKHRoaXMuX3kzKzIqdGhpcy5feTIpLzMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpfX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mj10LHRoaXMuX3kyPW47YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g0PXQsdGhpcy5feTQ9bix0aGlzLl9jb250ZXh0Lm1vdmVUbygodGhpcy5feDArNCp0aGlzLl94MSt0KS82LCh0aGlzLl95MCs0KnRoaXMuX3kxK24pLzYpO2JyZWFrO2RlZmF1bHQ6T3kodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LEZ5LnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe3N3aXRjaCh0PSt0LG49K24sdGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO3ZhciBlPSh0aGlzLl94MCs0KnRoaXMuX3gxK3QpLzYscj0odGhpcy5feTArNCp0aGlzLl95MStuKS82O3RoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSxyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6T3kodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9bn19LEl5LnByb3RvdHlwZT17bGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feD1bXSx0aGlzLl95PVtdLHRoaXMuX2Jhc2lzLmxpbmVTdGFydCgpfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5feCxuPXRoaXMuX3ksZT10Lmxlbmd0aC0xO2lmKGU+MClmb3IodmFyIHIsaT10WzBdLG89blswXSxhPXRbZV0taSx1PW5bZV0tbyxmPS0xOysrZjw9ZTspcj1mL2UsdGhpcy5fYmFzaXMucG9pbnQodGhpcy5fYmV0YSp0W2ZdKygxLXRoaXMuX2JldGEpKihpK3IqYSksdGhpcy5fYmV0YSpuW2ZdKygxLXRoaXMuX2JldGEpKihvK3IqdSkpO3RoaXMuX3g9dGhpcy5feT1udWxsLHRoaXMuX2Jhc2lzLmxpbmVFbmQoKX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrbil9fTt2YXIgSHk9ZnVuY3Rpb24gdChuKXtmdW5jdGlvbiBlKHQpe3JldHVybiAxPT09bj9uZXcgWXkodCk6bmV3IEl5KHQsbil9cmV0dXJuIGUuYmV0YT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC44NSk7ZnVuY3Rpb24gankodCxuLGUpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLW4pLHQuX3kyK3QuX2sqKHQuX3kxLWUpLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBYeSh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9WHkucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOmp5KHRoaXMsdGhpcy5feDEsdGhpcy5feTEpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtzd2l0Y2godD0rdCxuPStuLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxuKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPW47YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpqeSh0aGlzLHQsbil9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIEd5PWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbmV3IFh5KHQsbil9cmV0dXJuIGUudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KDApO2Z1bmN0aW9uIFZ5KHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtbikvNn1WeS5wcm90b3R5cGU9e2FyZWFTdGFydDpxeSxhcmVhRW5kOnF5LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1uO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9bik7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1uO2JyZWFrO2RlZmF1bHQ6ankodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciAkeT1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBWeSh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtmdW5jdGlvbiBXeSh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLW4pLzZ9V3kucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXsodGhpcy5fbGluZXx8MCE9PXRoaXMuX2xpbmUmJjM9PT10aGlzLl9wb2ludCkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTE7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLl9wb2ludD00O2RlZmF1bHQ6ankodGhpcyx0LG4pfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBaeT1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG5ldyBXeSh0LG4pfXJldHVybiBlLnRlbnNpb249ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSgwKTtmdW5jdGlvbiBReSh0LG4sZSl7dmFyIHI9dC5feDEsaT10Ll95MSxvPXQuX3gyLGE9dC5feTI7aWYodC5fbDAxX2E+Rmcpe3ZhciB1PTIqdC5fbDAxXzJhKzMqdC5fbDAxX2EqdC5fbDEyX2ErdC5fbDEyXzJhLGY9Myp0Ll9sMDFfYSoodC5fbDAxX2ErdC5fbDEyX2EpO3I9KHIqdS10Ll94MCp0Ll9sMTJfMmErdC5feDIqdC5fbDAxXzJhKS9mLGk9KGkqdS10Ll95MCp0Ll9sMTJfMmErdC5feTIqdC5fbDAxXzJhKS9mfWlmKHQuX2wyM19hPkZnKXt2YXIgYz0yKnQuX2wyM18yYSszKnQuX2wyM19hKnQuX2wxMl9hK3QuX2wxMl8yYSxzPTMqdC5fbDIzX2EqKHQuX2wyM19hK3QuX2wxMl9hKTtvPShvKmMrdC5feDEqdC5fbDIzXzJhLW4qdC5fbDEyXzJhKS9zLGE9KGEqYyt0Ll95MSp0Ll9sMjNfMmEtZSp0Ll9sMTJfMmEpL3N9dC5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHIsaSxvLGEsdC5feDIsdC5feTIpfWZ1bmN0aW9uIEp5KHQsbil7dGhpcy5fY29udGV4dD10LHRoaXMuX2FscGhhPW59SnkucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hPXRoaXMuX2wyM19hPXRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhPXRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXtpZih0PSt0LG49K24sdGhpcy5fcG9pbnQpe3ZhciBlPXRoaXMuX3gyLXQscj10aGlzLl95Mi1uO3RoaXMuX2wyM19hPU1hdGguc3FydCh0aGlzLl9sMjNfMmE9TWF0aC5wb3coZSplK3Iqcix0aGlzLl9hbHBoYSkpfXN3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDpReSh0aGlzLHQsbil9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciBLeT1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG4/bmV3IEp5KHQsbik6bmV3IFh5KHQsMCl9cmV0dXJuIGUuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSguNSk7ZnVuY3Rpb24gdF8odCxuKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9bn10Xy5wcm90b3R5cGU9e2FyZWFTdGFydDpxeSxhcmVhRW5kOnF5LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWs7Y2FzZSAyOnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KX19LHBvaW50OmZ1bmN0aW9uKHQsbil7aWYodD0rdCxuPStuLHRoaXMuX3BvaW50KXt2YXIgZT10aGlzLl94Mi10LHI9dGhpcy5feTItbjt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KGUqZStyKnIsdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX3gzPXQsdGhpcy5feTM9bjticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94ND10LHRoaXMuX3k0PW4pO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLHRoaXMuX3g1PXQsdGhpcy5feTU9bjticmVhaztkZWZhdWx0OlF5KHRoaXMsdCxuKX10aGlzLl9sMDFfYT10aGlzLl9sMTJfYSx0aGlzLl9sMTJfYT10aGlzLl9sMjNfYSx0aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhLHRoaXMuX2wxMl8yYT10aGlzLl9sMjNfMmEsdGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1ufX07dmFyIG5fPWZ1bmN0aW9uIHQobil7ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbj9uZXcgdF8odCxuKTpuZXcgVnkodCwwKX1yZXR1cm4gZS5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LGV9KC41KTtmdW5jdGlvbiBlXyh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1ufWVfLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYzPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LG4pe2lmKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7dmFyIGU9dGhpcy5feDItdCxyPXRoaXMuX3kyLW47dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhlKmUrcipyLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpReSh0aGlzLHQsbil9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9bn19O3ZhciByXz1mdW5jdGlvbiB0KG4pe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG4/bmV3IGVfKHQsbik6bmV3IFd5KHQsMCl9cmV0dXJuIGUuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxlfSguNSk7ZnVuY3Rpb24gaV8odCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIG9fKHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBhXyh0LG4sZSl7dmFyIHI9dC5feDEtdC5feDAsaT1uLXQuX3gxLG89KHQuX3kxLXQuX3kwKS8ocnx8aTwwJiYtMCksYT0oZS10Ll95MSkvKGl8fHI8MCYmLTApLHU9KG8qaSthKnIpLyhyK2kpO3JldHVybihvXyhvKStvXyhhKSkqTWF0aC5taW4oTWF0aC5hYnMobyksTWF0aC5hYnMoYSksLjUqTWF0aC5hYnModSkpfHwwfWZ1bmN0aW9uIHVfKHQsbil7dmFyIGU9dC5feDEtdC5feDA7cmV0dXJuIGU/KDMqKHQuX3kxLXQuX3kwKS9lLW4pLzI6bn1mdW5jdGlvbiBmXyh0LG4sZSl7dmFyIHI9dC5feDAsaT10Ll95MCxvPXQuX3gxLGE9dC5feTEsdT0oby1yKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhyK3UsaSt1Km4sby11LGEtdSplLG8sYSl9ZnVuY3Rpb24gY18odCl7dGhpcy5fY29udGV4dD10fWZ1bmN0aW9uIHNfKHQpe3RoaXMuX2NvbnRleHQ9bmV3IGxfKHQpfWZ1bmN0aW9uIGxfKHQpe3RoaXMuX2NvbnRleHQ9dH1mdW5jdGlvbiBoXyh0KXt0aGlzLl9jb250ZXh0PXR9ZnVuY3Rpb24gZF8odCl7dmFyIG4sZSxyPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkociksbz1uZXcgQXJyYXkociksYT1uZXcgQXJyYXkocik7Zm9yKGlbMF09MCxvWzBdPTIsYVswXT10WzBdKzIqdFsxXSxuPTE7bjxyLTE7KytuKWlbbl09MSxvW25dPTQsYVtuXT00KnRbbl0rMip0W24rMV07Zm9yKGlbci0xXT0yLG9bci0xXT03LGFbci0xXT04KnRbci0xXSt0W3JdLG49MTtuPHI7KytuKWU9aVtuXS9vW24tMV0sb1tuXS09ZSxhW25dLT1lKmFbbi0xXTtmb3IoaVtyLTFdPWFbci0xXS9vW3ItMV0sbj1yLTI7bj49MDstLW4paVtuXT0oYVtuXS1pW24rMV0pL29bbl07Zm9yKG9bci0xXT0odFtyXStpW3ItMV0pLzIsbj0wO248ci0xOysrbilvW25dPTIqdFtuKzFdLWlbbisxXTtyZXR1cm5baSxvXX1mdW5jdGlvbiBwXyh0LG4pe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl90PW59ZnVuY3Rpb24gdl8odCxuKXtpZigoaT10Lmxlbmd0aCk+MSlmb3IodmFyIGUscixpLG89MSxhPXRbblswXV0sdT1hLmxlbmd0aDtvPGk7KytvKWZvcihyPWEsYT10W25bb11dLGU9MDtlPHU7KytlKWFbZV1bMV0rPWFbZV1bMF09aXNOYU4ocltlXVsxXSk/cltlXVswXTpyW2VdWzFdfWZ1bmN0aW9uIGdfKHQpe2Zvcih2YXIgbj10Lmxlbmd0aCxlPW5ldyBBcnJheShuKTstLW4+PTA7KWVbbl09bjtyZXR1cm4gZX1mdW5jdGlvbiB5Xyh0LG4pe3JldHVybiB0W25dfWZ1bmN0aW9uIF9fKHQpe3ZhciBuPXQubWFwKGJfKTtyZXR1cm4gZ18odCkuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBuW3RdLW5bZV19KX1mdW5jdGlvbiBiXyh0KXtmb3IodmFyIG4sZT0wLHI9LTEsaT10Lmxlbmd0aDsrK3I8aTspKG49K3Rbcl1bMV0pJiYoZSs9bik7cmV0dXJuIGV9ZnVuY3Rpb24gbV8odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIHhfKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIHdfKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIE1fKCl7dGhpcy5fPW51bGx9ZnVuY3Rpb24gQV8odCl7dC5VPXQuQz10Lkw9dC5SPXQuUD10Lk49bnVsbH1mdW5jdGlvbiBUXyh0LG4pe3ZhciBlPW4scj1uLlIsaT1lLlU7aT9pLkw9PT1lP2kuTD1yOmkuUj1yOnQuXz1yLHIuVT1pLGUuVT1yLGUuUj1yLkwsZS5SJiYoZS5SLlU9ZSksci5MPWV9ZnVuY3Rpb24gTl8odCxuKXt2YXIgZT1uLHI9bi5MLGk9ZS5VO2k/aS5MPT09ZT9pLkw9cjppLlI9cjp0Ll89cixyLlU9aSxlLlU9cixlLkw9ci5SLGUuTCYmKGUuTC5VPWUpLHIuUj1lfWZ1bmN0aW9uIFNfKHQpe2Zvcig7dC5MOyl0PXQuTDtyZXR1cm4gdH1mdW5jdGlvbiBFXyh0LG4sZSxyKXt2YXIgaT1bbnVsbCxudWxsXSxvPUpfLnB1c2goaSktMTtyZXR1cm4gaS5sZWZ0PXQsaS5yaWdodD1uLGUmJkNfKGksdCxuLGUpLHImJkNfKGksbix0LHIpLFpfW3QuaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLFpfW24uaW5kZXhdLmhhbGZlZGdlcy5wdXNoKG8pLGl9ZnVuY3Rpb24ga18odCxuLGUpe3ZhciByPVtuLGVdO3JldHVybiByLmxlZnQ9dCxyfWZ1bmN0aW9uIENfKHQsbixlLHIpe3RbMF18fHRbMV0/dC5sZWZ0PT09ZT90WzFdPXI6dFswXT1yOih0WzBdPXIsdC5sZWZ0PW4sdC5yaWdodD1lKX1mdW5jdGlvbiBQXyh0LG4sZSxyLGkpe3ZhciBvLGE9dFswXSx1PXRbMV0sZj1hWzBdLGM9YVsxXSxzPTAsbD0xLGg9dVswXS1mLGQ9dVsxXS1jO2lmKG89bi1mLGh8fCEobz4wKSl7aWYoby89aCxoPDApe2lmKG88cylyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGg+MCl7aWYobz5sKXJldHVybjtvPnMmJihzPW8pfWlmKG89ci1mLGh8fCEobzwwKSl7aWYoby89aCxoPDApe2lmKG8+bClyZXR1cm47bz5zJiYocz1vKX1lbHNlIGlmKGg+MCl7aWYobzxzKXJldHVybjtvPGwmJihsPW8pfWlmKG89ZS1jLGR8fCEobz4wKSl7aWYoby89ZCxkPDApe2lmKG88cylyZXR1cm47bzxsJiYobD1vKX1lbHNlIGlmKGQ+MCl7aWYobz5sKXJldHVybjtvPnMmJihzPW8pfWlmKG89aS1jLGR8fCEobzwwKSl7aWYoby89ZCxkPDApe2lmKG8+bClyZXR1cm47bz5zJiYocz1vKX1lbHNlIGlmKGQ+MCl7aWYobzxzKXJldHVybjtvPGwmJihsPW8pfXJldHVybiEocz4wfHxsPDEpfHwocz4wJiYodFswXT1bZitzKmgsYytzKmRdKSxsPDEmJih0WzFdPVtmK2wqaCxjK2wqZF0pLCEwKX19fX19ZnVuY3Rpb24gel8odCxuLGUscixpKXt2YXIgbz10WzFdO2lmKG8pcmV0dXJuITA7dmFyIGEsdSxmPXRbMF0sYz10LmxlZnQscz10LnJpZ2h0LGw9Y1swXSxoPWNbMV0sZD1zWzBdLHA9c1sxXSx2PShsK2QpLzIsZz0oaCtwKS8yO2lmKHA9PT1oKXtpZih2PG58fHY+PXIpcmV0dXJuO2lmKGw+ZCl7aWYoZil7aWYoZlsxXT49aSlyZXR1cm59ZWxzZSBmPVt2LGVdO289W3YsaV19ZWxzZXtpZihmKXtpZihmWzFdPGUpcmV0dXJufWVsc2UgZj1bdixpXTtvPVt2LGVdfX1lbHNlIGlmKHU9Zy0oYT0obC1kKS8ocC1oKSkqdixhPC0xfHxhPjEpaWYobD5kKXtpZihmKXtpZihmWzFdPj1pKXJldHVybn1lbHNlIGY9WyhlLXUpL2EsZV07bz1bKGktdSkvYSxpXX1lbHNle2lmKGYpe2lmKGZbMV08ZSlyZXR1cm59ZWxzZSBmPVsoaS11KS9hLGldO289WyhlLXUpL2EsZV19ZWxzZSBpZihoPHApe2lmKGYpe2lmKGZbMF0+PXIpcmV0dXJufWVsc2UgZj1bbixhKm4rdV07bz1bcixhKnIrdV19ZWxzZXtpZihmKXtpZihmWzBdPG4pcmV0dXJufWVsc2UgZj1bcixhKnIrdV07bz1bbixhKm4rdV19cmV0dXJuIHRbMF09Zix0WzFdPW8sITB9ZnVuY3Rpb24gUl8odCxuKXt2YXIgZT10LnNpdGUscj1uLmxlZnQsaT1uLnJpZ2h0O3JldHVybiBlPT09aSYmKGk9cixyPWUpLGk/TWF0aC5hdGFuMihpWzFdLXJbMV0saVswXS1yWzBdKTooZT09PXI/KHI9blsxXSxpPW5bMF0pOihyPW5bMF0saT1uWzFdKSxNYXRoLmF0YW4yKHJbMF0taVswXSxpWzFdLXJbMV0pKX1mdW5jdGlvbiBMXyh0LG4pe3JldHVybiBuWysobi5sZWZ0IT09dC5zaXRlKV19ZnVuY3Rpb24gRF8odCxuKXtyZXR1cm4gblsrKG4ubGVmdD09PXQuc2l0ZSldfWlfLnByb3RvdHlwZT17YXJlYVN0YXJ0OnF5LGFyZWFFbmQ6cXksbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX3BvaW50JiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxwb2ludDpmdW5jdGlvbih0LG4pe3Q9K3Qsbj0rbix0aGlzLl9wb2ludD90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOih0aGlzLl9wb2ludD0xLHRoaXMuX2NvbnRleHQubW92ZVRvKHQsbikpfX0sY18ucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5fdDA9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94MSx0aGlzLl95MSk7YnJlYWs7Y2FzZSAzOmZfKHRoaXMsdGhpcy5fdDAsdV8odGhpcyx0aGlzLl90MCkpfSh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PXRoaXMuX3BvaW50KSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1OYU47aWYobj0rbiwodD0rdCkhPT10aGlzLl94MXx8biE9PXRoaXMuX3kxKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxuKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LG4pO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zLGZfKHRoaXMsdV8odGhpcyxlPWFfKHRoaXMsdCxuKSksZSk7YnJlYWs7ZGVmYXVsdDpmXyh0aGlzLHRoaXMuX3QwLGU9YV8odGhpcyx0LG4pKX10aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPW4sdGhpcy5fdDA9ZX19fSwoc18ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoY18ucHJvdG90eXBlKSkucG9pbnQ9ZnVuY3Rpb24odCxuKXtjXy5wcm90b3R5cGUucG9pbnQuY2FsbCh0aGlzLG4sdCl9LGxfLnByb3RvdHlwZT17bW92ZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5tb3ZlVG8obix0KX0sY2xvc2VQYXRoOmZ1bmN0aW9uKCl7dGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKX0sbGluZVRvOmZ1bmN0aW9uKHQsbil7dGhpcy5fY29udGV4dC5saW5lVG8obix0KX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbih0LG4sZSxyLGksbyl7dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG4sdCxyLGUsbyxpKX19LGhfLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsbj10aGlzLl95LGU9dC5sZW5ndGg7aWYoZSlpZih0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRbMF0sblswXSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odFswXSxuWzBdKSwyPT09ZSl0aGlzLl9jb250ZXh0LmxpbmVUbyh0WzFdLG5bMV0pO2Vsc2UgZm9yKHZhciByPWRfKHQpLGk9ZF8obiksbz0wLGE9MTthPGU7KytvLCsrYSl0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oclswXVtvXSxpWzBdW29dLHJbMV1bb10saVsxXVtvXSx0W2FdLG5bYV0pOyh0aGlzLl9saW5lfHwwIT09dGhpcy5fbGluZSYmMT09PWUpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lLHRoaXMuX3g9dGhpcy5feT1udWxsfSxwb2ludDpmdW5jdGlvbih0LG4pe3RoaXMuX3gucHVzaCgrdCksdGhpcy5feS5wdXNoKCtuKX19LHBfLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiYyPT09dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fDAhPT10aGlzLl9saW5lJiYxPT09dGhpcy5fcG9pbnQpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsbil7c3dpdGNoKHQ9K3Qsbj0rbix0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LG4pOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsbik7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDppZih0aGlzLl90PD0wKXRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsbiksdGhpcy5fY29udGV4dC5saW5lVG8odCxuKTtlbHNle3ZhciBlPXRoaXMuX3gqKDEtdGhpcy5fdCkrdCp0aGlzLl90O3RoaXMuX2NvbnRleHQubGluZVRvKGUsdGhpcy5feSksdGhpcy5fY29udGV4dC5saW5lVG8oZSxuKX19dGhpcy5feD10LHRoaXMuX3k9bn19LE1fLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TV8saW5zZXJ0OmZ1bmN0aW9uKHQsbil7dmFyIGUscixpO2lmKHQpe2lmKG4uUD10LG4uTj10Lk4sdC5OJiYodC5OLlA9biksdC5OPW4sdC5SKXtmb3IodD10LlI7dC5MOyl0PXQuTDt0Lkw9bn1lbHNlIHQuUj1uO2U9dH1lbHNlIHRoaXMuXz8odD1TXyh0aGlzLl8pLG4uUD1udWxsLG4uTj10LHQuUD10Lkw9bixlPXQpOihuLlA9bi5OPW51bGwsdGhpcy5fPW4sZT1udWxsKTtmb3Iobi5MPW4uUj1udWxsLG4uVT1lLG4uQz0hMCx0PW47ZSYmZS5DOyllPT09KHI9ZS5VKS5MPyhpPXIuUikmJmkuQz8oZS5DPWkuQz0hMSxyLkM9ITAsdD1yKToodD09PWUuUiYmKFRfKHRoaXMsZSksZT0odD1lKS5VKSxlLkM9ITEsci5DPSEwLE5fKHRoaXMscikpOihpPXIuTCkmJmkuQz8oZS5DPWkuQz0hMSxyLkM9ITAsdD1yKToodD09PWUuTCYmKE5fKHRoaXMsZSksZT0odD1lKS5VKSxlLkM9ITEsci5DPSEwLFRfKHRoaXMscikpLGU9dC5VO3RoaXMuXy5DPSExfSxyZW1vdmU6ZnVuY3Rpb24odCl7dC5OJiYodC5OLlA9dC5QKSx0LlAmJih0LlAuTj10Lk4pLHQuTj10LlA9bnVsbDt2YXIgbixlLHIsaT10LlUsbz10LkwsYT10LlI7aWYoZT1vP2E/U18oYSk6bzphLGk/aS5MPT09dD9pLkw9ZTppLlI9ZTp0aGlzLl89ZSxvJiZhPyhyPWUuQyxlLkM9dC5DLGUuTD1vLG8uVT1lLGUhPT1hPyhpPWUuVSxlLlU9dC5VLHQ9ZS5SLGkuTD10LGUuUj1hLGEuVT1lKTooZS5VPWksaT1lLHQ9ZS5SKSk6KHI9dC5DLHQ9ZSksdCYmKHQuVT1pKSwhcilpZih0JiZ0LkMpdC5DPSExO2Vsc2V7ZG97aWYodD09PXRoaXMuXylicmVhaztpZih0PT09aS5MKXtpZigobj1pLlIpLkMmJihuLkM9ITEsaS5DPSEwLFRfKHRoaXMsaSksbj1pLlIpLG4uTCYmbi5MLkN8fG4uUiYmbi5SLkMpe24uUiYmbi5SLkN8fChuLkwuQz0hMSxuLkM9ITAsTl8odGhpcyxuKSxuPWkuUiksbi5DPWkuQyxpLkM9bi5SLkM9ITEsVF8odGhpcyxpKSx0PXRoaXMuXzticmVha319ZWxzZSBpZigobj1pLkwpLkMmJihuLkM9ITEsaS5DPSEwLE5fKHRoaXMsaSksbj1pLkwpLG4uTCYmbi5MLkN8fG4uUiYmbi5SLkMpe24uTCYmbi5MLkN8fChuLlIuQz0hMSxuLkM9ITAsVF8odGhpcyxuKSxuPWkuTCksbi5DPWkuQyxpLkM9bi5MLkM9ITEsTl8odGhpcyxpKSx0PXRoaXMuXzticmVha31uLkM9ITAsdD1pLGk9aS5VfXdoaWxlKCF0LkMpO3QmJih0LkM9ITEpfX19O3ZhciBVXyxxXz1bXTtmdW5jdGlvbiBPXygpe0FfKHRoaXMpLHRoaXMueD10aGlzLnk9dGhpcy5hcmM9dGhpcy5zaXRlPXRoaXMuY3k9bnVsbH1mdW5jdGlvbiBZXyh0KXt2YXIgbj10LlAsZT10Lk47aWYobiYmZSl7dmFyIHI9bi5zaXRlLGk9dC5zaXRlLG89ZS5zaXRlO2lmKHIhPT1vKXt2YXIgYT1pWzBdLHU9aVsxXSxmPXJbMF0tYSxjPXJbMV0tdSxzPW9bMF0tYSxsPW9bMV0tdSxoPTIqKGYqbC1jKnMpO2lmKCEoaD49LXRiKSl7dmFyIGQ9ZipmK2MqYyxwPXMqcytsKmwsdj0obCpkLWMqcCkvaCxnPShmKnAtcypkKS9oLHk9cV8ucG9wKCl8fG5ldyBPXzt5LmFyYz10LHkuc2l0ZT1pLHkueD12K2EseS55PSh5LmN5PWcrdSkrTWF0aC5zcXJ0KHYqditnKmcpLHQuY2lyY2xlPXk7Zm9yKHZhciBfPW51bGwsYj1RXy5fO2I7KWlmKHkueTxiLnl8fHkueT09PWIueSYmeS54PD1iLngpe2lmKCFiLkwpe189Yi5QO2JyZWFrfWI9Yi5MfWVsc2V7aWYoIWIuUil7Xz1iO2JyZWFrfWI9Yi5SfVFfLmluc2VydChfLHkpLF98fChVXz15KX19fX1mdW5jdGlvbiBCXyh0KXt2YXIgbj10LmNpcmNsZTtuJiYobi5QfHwoVV89bi5OKSxRXy5yZW1vdmUobikscV8ucHVzaChuKSxBXyhuKSx0LmNpcmNsZT1udWxsKX12YXIgRl89W107ZnVuY3Rpb24gSV8oKXtBXyh0aGlzKSx0aGlzLmVkZ2U9dGhpcy5zaXRlPXRoaXMuY2lyY2xlPW51bGx9ZnVuY3Rpb24gSF8odCl7dmFyIG49Rl8ucG9wKCl8fG5ldyBJXztyZXR1cm4gbi5zaXRlPXQsbn1mdW5jdGlvbiBqXyh0KXtCXyh0KSxXXy5yZW1vdmUodCksRl8ucHVzaCh0KSxBXyh0KX1mdW5jdGlvbiBYXyh0KXt2YXIgbj10LmNpcmNsZSxlPW4ueCxyPW4uY3ksaT1bZSxyXSxvPXQuUCxhPXQuTix1PVt0XTtqXyh0KTtmb3IodmFyIGY9bztmLmNpcmNsZSYmTWF0aC5hYnMoZS1mLmNpcmNsZS54KTxLXyYmTWF0aC5hYnMoci1mLmNpcmNsZS5jeSk8S187KW89Zi5QLHUudW5zaGlmdChmKSxqXyhmKSxmPW87dS51bnNoaWZ0KGYpLEJfKGYpO2Zvcih2YXIgYz1hO2MuY2lyY2xlJiZNYXRoLmFicyhlLWMuY2lyY2xlLngpPEtfJiZNYXRoLmFicyhyLWMuY2lyY2xlLmN5KTxLXzspYT1jLk4sdS5wdXNoKGMpLGpfKGMpLGM9YTt1LnB1c2goYyksQl8oYyk7dmFyIHMsbD11Lmxlbmd0aDtmb3Iocz0xO3M8bDsrK3MpYz11W3NdLGY9dVtzLTFdLENfKGMuZWRnZSxmLnNpdGUsYy5zaXRlLGkpO2Y9dVswXSwoYz11W2wtMV0pLmVkZ2U9RV8oZi5zaXRlLGMuc2l0ZSxudWxsLGkpLFlfKGYpLFlfKGMpfWZ1bmN0aW9uIEdfKHQpe2Zvcih2YXIgbixlLHIsaSxvPXRbMF0sYT10WzFdLHU9V18uXzt1OylpZigocj1WXyh1LGEpLW8pPktfKXU9dS5MO2Vsc2V7aWYoISgoaT1vLSRfKHUsYSkpPktfKSl7cj4tS18/KG49dS5QLGU9dSk6aT4tS18/KG49dSxlPXUuTik6bj1lPXU7YnJlYWt9aWYoIXUuUil7bj11O2JyZWFrfXU9dS5SfSFmdW5jdGlvbih0KXtaX1t0LmluZGV4XT17c2l0ZTp0LGhhbGZlZGdlczpbXX19KHQpO3ZhciBmPUhfKHQpO2lmKFdfLmluc2VydChuLGYpLG58fGUpe2lmKG49PT1lKXJldHVybiBCXyhuKSxlPUhfKG4uc2l0ZSksV18uaW5zZXJ0KGYsZSksZi5lZGdlPWUuZWRnZT1FXyhuLnNpdGUsZi5zaXRlKSxZXyhuKSx2b2lkIFlfKGUpO2lmKGUpe0JfKG4pLEJfKGUpO3ZhciBjPW4uc2l0ZSxzPWNbMF0sbD1jWzFdLGg9dFswXS1zLGQ9dFsxXS1sLHA9ZS5zaXRlLHY9cFswXS1zLGc9cFsxXS1sLHk9MiooaCpnLWQqdiksXz1oKmgrZCpkLGI9dip2K2cqZyxtPVsoZypfLWQqYikveStzLChoKmItdipfKS95K2xdO0NfKGUuZWRnZSxjLHAsbSksZi5lZGdlPUVfKGMsdCxudWxsLG0pLGUuZWRnZT1FXyh0LHAsbnVsbCxtKSxZXyhuKSxZXyhlKX1lbHNlIGYuZWRnZT1FXyhuLnNpdGUsZi5zaXRlKX19ZnVuY3Rpb24gVl8odCxuKXt2YXIgZT10LnNpdGUscj1lWzBdLGk9ZVsxXSxvPWktbjtpZighbylyZXR1cm4gcjt2YXIgYT10LlA7aWYoIWEpcmV0dXJuLTEvMDt2YXIgdT0oZT1hLnNpdGUpWzBdLGY9ZVsxXSxjPWYtbjtpZighYylyZXR1cm4gdTt2YXIgcz11LXIsbD0xL28tMS9jLGg9cy9jO3JldHVybiBsPygtaCtNYXRoLnNxcnQoaCpoLTIqbCoocypzLygtMipjKS1mK2MvMitpLW8vMikpKS9sK3I6KHIrdSkvMn1mdW5jdGlvbiAkXyh0LG4pe3ZhciBlPXQuTjtpZihlKXJldHVybiBWXyhlLG4pO3ZhciByPXQuc2l0ZTtyZXR1cm4gclsxXT09PW4/clswXToxLzB9dmFyIFdfLFpfLFFfLEpfLEtfPTFlLTYsdGI9MWUtMTI7ZnVuY3Rpb24gbmIodCxuKXtyZXR1cm4gblsxXS10WzFdfHxuWzBdLXRbMF19ZnVuY3Rpb24gZWIodCxuKXt2YXIgZSxyLGksbz10LnNvcnQobmIpLnBvcCgpO2ZvcihKXz1bXSxaXz1uZXcgQXJyYXkodC5sZW5ndGgpLFdfPW5ldyBNXyxRXz1uZXcgTV87OylpZihpPVVfLG8mJighaXx8b1sxXTxpLnl8fG9bMV09PT1pLnkmJm9bMF08aS54KSlvWzBdPT09ZSYmb1sxXT09PXJ8fChHXyhvKSxlPW9bMF0scj1vWzFdKSxvPXQucG9wKCk7ZWxzZXtpZighaSlicmVhaztYXyhpLmFyYyl9aWYoZnVuY3Rpb24oKXtmb3IodmFyIHQsbixlLHIsaT0wLG89Wl8ubGVuZ3RoO2k8bzsrK2kpaWYoKHQ9Wl9baV0pJiYocj0obj10LmhhbGZlZGdlcykubGVuZ3RoKSl7dmFyIGE9bmV3IEFycmF5KHIpLHU9bmV3IEFycmF5KHIpO2ZvcihlPTA7ZTxyOysrZSlhW2VdPWUsdVtlXT1SXyh0LEpfW25bZV1dKTtmb3IoYS5zb3J0KGZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbbl0tdVt0XX0pLGU9MDtlPHI7KytlKXVbZV09blthW2VdXTtmb3IoZT0wO2U8cjsrK2UpbltlXT11W2VdfX0oKSxuKXt2YXIgYT0rblswXVswXSx1PStuWzBdWzFdLGY9K25bMV1bMF0sYz0rblsxXVsxXTshZnVuY3Rpb24odCxuLGUscil7Zm9yKHZhciBpLG89Sl8ubGVuZ3RoO28tLTspel8oaT1KX1tvXSx0LG4sZSxyKSYmUF8oaSx0LG4sZSxyKSYmKE1hdGguYWJzKGlbMF1bMF0taVsxXVswXSk+S198fE1hdGguYWJzKGlbMF1bMV0taVsxXVsxXSk+S18pfHxkZWxldGUgSl9bb119KGEsdSxmLGMpLGZ1bmN0aW9uKHQsbixlLHIpe3ZhciBpLG8sYSx1LGYsYyxzLGwsaCxkLHAsdixnPVpfLmxlbmd0aCx5PSEwO2ZvcihpPTA7aTxnOysraSlpZihvPVpfW2ldKXtmb3IoYT1vLnNpdGUsdT0oZj1vLmhhbGZlZGdlcykubGVuZ3RoO3UtLTspSl9bZlt1XV18fGYuc3BsaWNlKHUsMSk7Zm9yKHU9MCxjPWYubGVuZ3RoO3U8YzspcD0oZD1EXyhvLEpfW2ZbdV1dKSlbMF0sdj1kWzFdLGw9KHM9TF8obyxKX1tmWysrdSVjXV0pKVswXSxoPXNbMV0sKE1hdGguYWJzKHAtbCk+S198fE1hdGguYWJzKHYtaCk+S18pJiYoZi5zcGxpY2UodSwwLEpfLnB1c2goa18oYSxkLE1hdGguYWJzKHAtdCk8S18mJnItdj5LXz9bdCxNYXRoLmFicyhsLXQpPEtfP2g6cl06TWF0aC5hYnModi1yKTxLXyYmZS1wPktfP1tNYXRoLmFicyhoLXIpPEtfP2w6ZSxyXTpNYXRoLmFicyhwLWUpPEtfJiZ2LW4+S18/W2UsTWF0aC5hYnMobC1lKTxLXz9oOm5dOk1hdGguYWJzKHYtbik8S18mJnAtdD5LXz9bTWF0aC5hYnMoaC1uKTxLXz9sOnQsbl06bnVsbCkpLTEpLCsrYyk7YyYmKHk9ITEpfWlmKHkpe3ZhciBfLGIsbSx4PTEvMDtmb3IoaT0wLHk9bnVsbDtpPGc7KytpKShvPVpfW2ldKSYmKG09KF89KGE9by5zaXRlKVswXS10KSpfKyhiPWFbMV0tbikqYik8eCYmKHg9bSx5PW8pO2lmKHkpe3ZhciB3PVt0LG5dLE09W3Qscl0sQT1bZSxyXSxUPVtlLG5dO3kuaGFsZmVkZ2VzLnB1c2goSl8ucHVzaChrXyhhPXkuc2l0ZSx3LE0pKS0xLEpfLnB1c2goa18oYSxNLEEpKS0xLEpfLnB1c2goa18oYSxBLFQpKS0xLEpfLnB1c2goa18oYSxULHcpKS0xKX19Zm9yKGk9MDtpPGc7KytpKShvPVpfW2ldKSYmKG8uaGFsZmVkZ2VzLmxlbmd0aHx8ZGVsZXRlIFpfW2ldKX0oYSx1LGYsYyl9dGhpcy5lZGdlcz1KXyx0aGlzLmNlbGxzPVpfLFdfPVFfPUpfPVpfPW51bGx9ZnVuY3Rpb24gcmIodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWZ1bmN0aW9uIGliKHQsbixlKXt0aGlzLnRhcmdldD10LHRoaXMudHlwZT1uLHRoaXMudHJhbnNmb3JtPWV9ZnVuY3Rpb24gb2IodCxuLGUpe3RoaXMuaz10LHRoaXMueD1uLHRoaXMueT1lfWViLnByb3RvdHlwZT17Y29uc3RydWN0b3I6ZWIscG9seWdvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLm1hcChmdW5jdGlvbihuKXt2YXIgZT1uLmhhbGZlZGdlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExfKG4sdFtlXSl9KTtyZXR1cm4gZS5kYXRhPW4uc2l0ZS5kYXRhLGV9KX0sdHJpYW5nbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9W10sbj10aGlzLmVkZ2VzO3JldHVybiB0aGlzLmNlbGxzLmZvckVhY2goZnVuY3Rpb24oZSxyKXtpZihvPShpPWUuaGFsZmVkZ2VzKS5sZW5ndGgpZm9yKHZhciBpLG8sYSx1LGYsYyxzPWUuc2l0ZSxsPS0xLGg9bltpW28tMV1dLGQ9aC5sZWZ0PT09cz9oLnJpZ2h0OmgubGVmdDsrK2w8bzspYT1kLGQ9KGg9bltpW2xdXSkubGVmdD09PXM/aC5yaWdodDpoLmxlZnQsYSYmZCYmcjxhLmluZGV4JiZyPGQuaW5kZXgmJihmPWEsYz1kLCgodT1zKVswXS1jWzBdKSooZlsxXS11WzFdKS0odVswXS1mWzBdKSooY1sxXS11WzFdKTwwKSYmdC5wdXNoKFtzLmRhdGEsYS5kYXRhLGQuZGF0YV0pfSksdH0sbGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGdlcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQucmlnaHR9KS5tYXAoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LmxlZnQuZGF0YSx0YXJnZXQ6dC5yaWdodC5kYXRhfX0pfSxmaW5kOmZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIHIsaSxvPXRoaXMsYT1vLl9mb3VuZHx8MCx1PW8uY2VsbHMubGVuZ3RoOyEoaT1vLmNlbGxzW2FdKTspaWYoKythPj11KXJldHVybiBudWxsO3ZhciBmPXQtaS5zaXRlWzBdLGM9bi1pLnNpdGVbMV0scz1mKmYrYypjO2Rve2k9by5jZWxsc1tyPWFdLGE9bnVsbCxpLmhhbGZlZGdlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPW8uZWRnZXNbZV0sdT1yLmxlZnQ7aWYodSE9PWkuc2l0ZSYmdXx8KHU9ci5yaWdodCkpe3ZhciBmPXQtdVswXSxjPW4tdVsxXSxsPWYqZitjKmM7bDxzJiYocz1sLGE9dS5pbmRleCl9fSl9d2hpbGUobnVsbCE9PWEpO3JldHVybiBvLl9mb3VuZD1yLG51bGw9PWV8fHM8PWUqZT9pLnNpdGU6bnVsbH19LG9iLnByb3RvdHlwZT17Y29uc3RydWN0b3I6b2Isc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10P3RoaXM6bmV3IG9iKHRoaXMuayp0LHRoaXMueCx0aGlzLnkpfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCxuKXtyZXR1cm4gMD09PXQmMD09PW4/dGhpczpuZXcgb2IodGhpcy5rLHRoaXMueCt0aGlzLmsqdCx0aGlzLnkrdGhpcy5rKm4pfSxhcHBseTpmdW5jdGlvbih0KXtyZXR1cm5bdFswXSp0aGlzLmsrdGhpcy54LHRbMV0qdGhpcy5rK3RoaXMueV19LGFwcGx5WDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy54fSxhcHBseVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdGhpcy5rK3RoaXMueX0saW52ZXJ0OmZ1bmN0aW9uKHQpe3JldHVyblsodFswXS10aGlzLngpL3RoaXMuaywodFsxXS10aGlzLnkpL3RoaXMua119LGludmVydFg6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy54KS90aGlzLmt9LGludmVydFk6ZnVuY3Rpb24odCl7cmV0dXJuKHQtdGhpcy55KS90aGlzLmt9LHJlc2NhbGVYOmZ1bmN0aW9uKHQpe3JldHVybiB0LmNvcHkoKS5kb21haW4odC5yYW5nZSgpLm1hcCh0aGlzLmludmVydFgsdGhpcykubWFwKHQuaW52ZXJ0LHQpKX0scmVzY2FsZVk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WSx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIit0aGlzLngrIiwiK3RoaXMueSsiKSBzY2FsZSgiK3RoaXMuaysiKSJ9fTt2YXIgYWI9bmV3IG9iKDEsMCwwKTtmdW5jdGlvbiB1Yih0KXtyZXR1cm4gdC5fX3pvb218fGFifWZ1bmN0aW9uIGZiKCl7dC5ldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBjYigpe3QuZXZlbnQucHJldmVudERlZmF1bHQoKSx0LmV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHNiKCl7cmV0dXJuIXQuZXZlbnQuYnV0dG9ufWZ1bmN0aW9uIGxiKCl7dmFyIHQsbixlPXRoaXM7cmV0dXJuIGUgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PShlPWUub3duZXJTVkdFbGVtZW50fHxlKS53aWR0aC5iYXNlVmFsLnZhbHVlLG49ZS5oZWlnaHQuYmFzZVZhbC52YWx1ZSk6KHQ9ZS5jbGllbnRXaWR0aCxuPWUuY2xpZW50SGVpZ2h0KSxbWzAsMF0sW3Qsbl1dfWZ1bmN0aW9uIGhiKCl7cmV0dXJuIHRoaXMuX196b29tfHxhYn1mdW5jdGlvbiBkYigpe3JldHVybi10LmV2ZW50LmRlbHRhWSoodC5ldmVudC5kZWx0YU1vZGU/MTIwOjEpLzUwMH1mdW5jdGlvbiBwYigpe3JldHVybiJvbnRvdWNoc3RhcnQiaW4gdGhpc31mdW5jdGlvbiB2Yih0LG4sZSl7dmFyIHI9dC5pbnZlcnRYKG5bMF1bMF0pLWVbMF1bMF0saT10LmludmVydFgoblsxXVswXSktZVsxXVswXSxvPXQuaW52ZXJ0WShuWzBdWzFdKS1lWzBdWzFdLGE9dC5pbnZlcnRZKG5bMV1bMV0pLWVbMV1bMV07cmV0dXJuIHQudHJhbnNsYXRlKGk+cj8ocitpKS8yOk1hdGgubWluKDAscil8fE1hdGgubWF4KDAsaSksYT5vPyhvK2EpLzI6TWF0aC5taW4oMCxvKXx8TWF0aC5tYXgoMCxhKSl9dWIucHJvdG90eXBlPW9iLnByb3RvdHlwZSx0LnZlcnNpb249IjUuNy4wIix0LmJpc2VjdD1pLHQuYmlzZWN0UmlnaHQ9aSx0LmJpc2VjdExlZnQ9byx0LmFzY2VuZGluZz1uLHQuYmlzZWN0b3I9ZSx0LmNyb3NzPWZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG8sdSxmPXQubGVuZ3RoLGM9bi5sZW5ndGgscz1uZXcgQXJyYXkoZipjKTtmb3IobnVsbD09ZSYmKGU9YSkscj1vPTA7cjxmOysrcilmb3IodT10W3JdLGk9MDtpPGM7KytpLCsrbylzW29dPWUodSxuW2ldKTtyZXR1cm4gc30sdC5kZXNjZW5kaW5nPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG48dD8tMTpuPnQ/MTpuPj10PzA6TmFOfSx0LmRldmlhdGlvbj1jLHQuZXh0ZW50PXMsdC5oaXN0b2dyYW09ZnVuY3Rpb24oKXt2YXIgdD12LG49cyxlPU07ZnVuY3Rpb24gcihyKXt2YXIgbyxhLHU9ci5sZW5ndGgsZj1uZXcgQXJyYXkodSk7Zm9yKG89MDtvPHU7KytvKWZbb109dChyW29dLG8scik7dmFyIGM9bihmKSxzPWNbMF0sbD1jWzFdLGg9ZShmLHMsbCk7QXJyYXkuaXNBcnJheShoKXx8KGg9dyhzLGwsaCksaD1nKE1hdGguY2VpbChzL2gpKmgsbCxoKSk7Zm9yKHZhciBkPWgubGVuZ3RoO2hbMF08PXM7KWguc2hpZnQoKSwtLWQ7Zm9yKDtoW2QtMV0+bDspaC5wb3AoKSwtLWQ7dmFyIHAsdj1uZXcgQXJyYXkoZCsxKTtmb3Iobz0wO288PWQ7KytvKShwPXZbb109W10pLngwPW8+MD9oW28tMV06cyxwLngxPW88ZD9oW29dOmw7Zm9yKG89MDtvPHU7KytvKXM8PShhPWZbb10pJiZhPD1sJiZ2W2koaCxhLDAsZCldLnB1c2gocltvXSk7cmV0dXJuIHZ9cmV0dXJuIHIudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpwKG4pLHIpOnR9LHIuZG9tYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cChbdFswXSx0WzFdXSkscik6bn0sci50aHJlc2hvbGRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6QXJyYXkuaXNBcnJheSh0KT9wKGguY2FsbCh0KSk6cCh0KSxyKTplfSxyfSx0LnRocmVzaG9sZEZyZWVkbWFuRGlhY29uaXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PWQuY2FsbCh0LHUpLnNvcnQobiksTWF0aC5jZWlsKChyLWUpLygyKihBKHQsLjc1KS1BKHQsLjI1KSkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdC50aHJlc2hvbGRTY290dD1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIE1hdGguY2VpbCgoZS1uKS8oMy41KmModCkqTWF0aC5wb3codC5sZW5ndGgsLTEvMykpKX0sdC50aHJlc2hvbGRTdHVyZ2VzPU0sdC5tYXg9VCx0Lm1lYW49ZnVuY3Rpb24odCxuKXt2YXIgZSxyPXQubGVuZ3RoLGk9cixvPS0xLGE9MDtpZihudWxsPT1uKWZvcig7KytvPHI7KWlzTmFOKGU9dSh0W29dKSk/LS1pOmErPWU7ZWxzZSBmb3IoOysrbzxyOylpc05hTihlPXUobih0W29dLG8sdCkpKT8tLWk6YSs9ZTtpZihpKXJldHVybiBhL2l9LHQubWVkaWFuPWZ1bmN0aW9uKHQsZSl7dmFyIHIsaT10Lmxlbmd0aCxvPS0xLGE9W107aWYobnVsbD09ZSlmb3IoOysrbzxpOylpc05hTihyPXUodFtvXSkpfHxhLnB1c2gocik7ZWxzZSBmb3IoOysrbzxpOylpc05hTihyPXUoZSh0W29dLG8sdCkpKXx8YS5wdXNoKHIpO3JldHVybiBBKGEuc29ydChuKSwuNSl9LHQubWVyZ2U9Tix0Lm1pbj1TLHQucGFpcnM9ZnVuY3Rpb24odCxuKXtudWxsPT1uJiYobj1hKTtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLTEsaT10WzBdLG89bmV3IEFycmF5KHI8MD8wOnIpO2U8cjspb1tlXT1uKGksaT10WysrZV0pO3JldHVybiBvfSx0LnBlcm11dGU9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9bi5sZW5ndGgscj1uZXcgQXJyYXkoZSk7ZS0tOylyW2VdPXRbbltlXV07cmV0dXJuIHJ9LHQucXVhbnRpbGU9QSx0LnJhbmdlPWcsdC5zY2FuPWZ1bmN0aW9uKHQsZSl7aWYocj10Lmxlbmd0aCl7dmFyIHIsaSxvPTAsYT0wLHU9dFthXTtmb3IobnVsbD09ZSYmKGU9bik7KytvPHI7KShlKGk9dFtvXSx1KTwwfHwwIT09ZSh1LHUpKSYmKHU9aSxhPW8pO3JldHVybiAwPT09ZSh1LHUpP2E6dm9pZCAwfX0sdC5zaHVmZmxlPWZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIHIsaSxvPShudWxsPT1lP3QubGVuZ3RoOmUpLShuPW51bGw9PW4/MDorbik7bzspaT1NYXRoLnJhbmRvbSgpKm8tLXwwLHI9dFtvK25dLHRbbytuXT10W2krbl0sdFtpK25dPXI7cmV0dXJuIHR9LHQuc3VtPWZ1bmN0aW9uKHQsbil7dmFyIGUscj10Lmxlbmd0aCxpPS0xLG89MDtpZihudWxsPT1uKWZvcig7KytpPHI7KShlPSt0W2ldKSYmKG8rPWUpO2Vsc2UgZm9yKDsrK2k8cjspKGU9K24odFtpXSxpLHQpKSYmKG8rPWUpO3JldHVybiBvfSx0LnRpY2tzPW0sdC50aWNrSW5jcmVtZW50PXgsdC50aWNrU3RlcD13LHQudHJhbnNwb3NlPUUsdC52YXJpYW5jZT1mLHQuemlwPWZ1bmN0aW9uKCl7cmV0dXJuIEUoYXJndW1lbnRzKX0sdC5heGlzVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBCKHosdCl9LHQuYXhpc1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBCKFIsdCl9LHQuYXhpc0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gQihMLHQpfSx0LmF4aXNMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBCKEQsdCl9LHQuYnJ1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gUmkod2kpfSx0LmJydXNoWD1mdW5jdGlvbigpe3JldHVybiBSaShtaSl9LHQuYnJ1c2hZPWZ1bmN0aW9uKCl7cmV0dXJuIFJpKHhpKX0sdC5icnVzaFNlbGVjdGlvbj1mdW5jdGlvbih0KXt2YXIgbj10Ll9fYnJ1c2g7cmV0dXJuIG4/bi5kaW0ub3V0cHV0KG4uc2VsZWN0aW9uKTpudWxsfSx0LmNob3JkPWZ1bmN0aW9uKCl7dmFyIHQ9MCxuPW51bGwsZT1udWxsLHI9bnVsbDtmdW5jdGlvbiBpKGkpe3ZhciBvLGEsdSxmLGMscyxsPWkubGVuZ3RoLGg9W10sZD1nKGwpLHA9W10sdj1bXSx5PXYuZ3JvdXBzPW5ldyBBcnJheShsKSxfPW5ldyBBcnJheShsKmwpO2ZvcihvPTAsYz0tMTsrK2M8bDspe2ZvcihhPTAscz0tMTsrK3M8bDspYSs9aVtjXVtzXTtoLnB1c2goYSkscC5wdXNoKGcobCkpLG8rPWF9Zm9yKG4mJmQuc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBuKGhbdF0saFtlXSl9KSxlJiZwLmZvckVhY2goZnVuY3Rpb24odCxuKXt0LnNvcnQoZnVuY3Rpb24odCxyKXtyZXR1cm4gZShpW25dW3RdLGlbbl1bcl0pfSl9KSxmPShvPVlpKDAsT2ktdCpsKS9vKT90Ok9pL2wsYT0wLGM9LTE7KytjPGw7KXtmb3IodT1hLHM9LTE7KytzPGw7KXt2YXIgYj1kW2NdLG09cFtiXVtzXSx4PWlbYl1bbV0sdz1hLE09YSs9eCpvO19bbSpsK2JdPXtpbmRleDpiLHN1YmluZGV4Om0sc3RhcnRBbmdsZTp3LGVuZEFuZ2xlOk0sdmFsdWU6eH19eVtiXT17aW5kZXg6YixzdGFydEFuZ2xlOnUsZW5kQW5nbGU6YSx2YWx1ZTpoW2JdfSxhKz1mfWZvcihjPS0xOysrYzxsOylmb3Iocz1jLTE7KytzPGw7KXt2YXIgQT1fW3MqbCtjXSxUPV9bYypsK3NdOyhBLnZhbHVlfHxULnZhbHVlKSYmdi5wdXNoKEEudmFsdWU8VC52YWx1ZT97c291cmNlOlQsdGFyZ2V0OkF9Ontzb3VyY2U6QSx0YXJnZXQ6VH0pfXJldHVybiByP3Yuc29ydChyKTp2fXJldHVybiBpLnBhZEFuZ2xlPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PVlpKDAsbiksaSk6dH0saS5zb3J0R3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsaSk6bn0saS5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXQsaSk6ZX0saS5zb3J0Q2hvcmRzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhudWxsPT10P3I9bnVsbDoobj10LHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbih0LnNvdXJjZS52YWx1ZSt0LnRhcmdldC52YWx1ZSxlLnNvdXJjZS52YWx1ZStlLnRhcmdldC52YWx1ZSl9KS5fPXQsaSk6ciYmci5fO3ZhciBufSxpfSx0LnJpYmJvbj1mdW5jdGlvbigpe3ZhciB0PVZpLG49JGksZT1XaSxyPVppLGk9UWksbz1udWxsO2Z1bmN0aW9uIGEoKXt2YXIgYSx1PUJpLmNhbGwoYXJndW1lbnRzKSxmPXQuYXBwbHkodGhpcyx1KSxjPW4uYXBwbHkodGhpcyx1KSxzPStlLmFwcGx5KHRoaXMsKHVbMF09Zix1KSksbD1yLmFwcGx5KHRoaXMsdSktcWksaD1pLmFwcGx5KHRoaXMsdSktcWksZD1zKkxpKGwpLHA9cypEaShsKSx2PStlLmFwcGx5KHRoaXMsKHVbMF09Yyx1KSksZz1yLmFwcGx5KHRoaXMsdSktcWkseT1pLmFwcGx5KHRoaXMsdSktcWk7aWYob3x8KG89YT1HaSgpKSxvLm1vdmVUbyhkLHApLG8uYXJjKDAsMCxzLGwsaCksbD09PWcmJmg9PT15fHwoby5xdWFkcmF0aWNDdXJ2ZVRvKDAsMCx2KkxpKGcpLHYqRGkoZykpLG8uYXJjKDAsMCx2LGcseSkpLG8ucXVhZHJhdGljQ3VydmVUbygwLDAsZCxwKSxvLmNsb3NlUGF0aCgpLGEpcmV0dXJuIG89bnVsbCxhKyIifHxudWxsfXJldHVybiBhLnJhZGl1cz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZpKCt0KSxhKTplfSxhLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpGaSgrdCksYSk6cn0sYS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OkZpKCt0KSxhKTppfSxhLnNvdXJjZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGEpOnR9LGEudGFyZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsYSk6bn0sYS5jb250ZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPW51bGw9PXQ/bnVsbDp0LGEpOm99LGF9LHQubmVzdD1mdW5jdGlvbigpe3ZhciB0LG4sZSxyPVtdLGk9W107ZnVuY3Rpb24gbyhlLGksYSx1KXtpZihpPj1yLmxlbmd0aClyZXR1cm4gbnVsbCE9dCYmZS5zb3J0KHQpLG51bGwhPW4/bihlKTplO2Zvcih2YXIgZixjLHMsbD0tMSxoPWUubGVuZ3RoLGQ9cltpKytdLHA9S2koKSx2PWEoKTsrK2w8aDspKHM9cC5nZXQoZj1kKGM9ZVtsXSkrIiIpKT9zLnB1c2goYyk6cC5zZXQoZixbY10pO3JldHVybiBwLmVhY2goZnVuY3Rpb24odCxuKXt1KHYsbixvKHQsaSxhLHUpKX0pLHZ9cmV0dXJuIGU9e29iamVjdDpmdW5jdGlvbih0KXtyZXR1cm4gbyh0LDAsdG8sbm8pfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIG8odCwwLGVvLHJvKX0sZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdChlLG8pe2lmKCsrbz5yLmxlbmd0aClyZXR1cm4gZTt2YXIgYSx1PWlbby0xXTtyZXR1cm4gbnVsbCE9biYmbz49ci5sZW5ndGg/YT1lLmVudHJpZXMoKTooYT1bXSxlLmVhY2goZnVuY3Rpb24obixlKXthLnB1c2goe2tleTplLHZhbHVlczp0KG4sbyl9KX0pKSxudWxsIT11P2Euc29ydChmdW5jdGlvbih0LG4pe3JldHVybiB1KHQua2V5LG4ua2V5KX0pOmF9KG8odCwwLGVvLHJvKSwwKX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiByLnB1c2godCksZX0sc29ydEtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIGlbci5sZW5ndGgtMV09dCxlfSxzb3J0VmFsdWVzOmZ1bmN0aW9uKG4pe3JldHVybiB0PW4sZX0scm9sbHVwOmZ1bmN0aW9uKHQpe3JldHVybiBuPXQsZX19fSx0LnNldD1hbyx0Lm1hcD1LaSx0LmtleXM9ZnVuY3Rpb24odCl7dmFyIG49W107Zm9yKHZhciBlIGluIHQpbi5wdXNoKGUpO3JldHVybiBufSx0LnZhbHVlcz1mdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2godFtlXSk7cmV0dXJuIG59LHQuZW50cmllcz1mdW5jdGlvbih0KXt2YXIgbj1bXTtmb3IodmFyIGUgaW4gdCluLnB1c2goe2tleTplLHZhbHVlOnRbZV19KTtyZXR1cm4gbn0sdC5jb2xvcj12bix0LnJnYj1ibix0LmhzbD1Nbix0LmxhYj1Vbix0LmhjbD1Ibix0LmxjaD1mdW5jdGlvbih0LG4sZSxyKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/SW4odCk6bmV3IGpuKGUsbix0LG51bGw9PXI/MTpyKX0sdC5ncmF5PWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyBxbih0LDAsMCxudWxsPT1uPzE6bil9LHQuY3ViZWhlbGl4PUtuLHQuY29udG91cnM9Z28sdC5jb250b3VyRGVuc2l0eT1mdW5jdGlvbigpe3ZhciB0PWJvLG49bW8sZT14byxyPTk2MCxpPTUwMCxvPTIwLGE9Mix1PTMqbyxmPXIrMip1Pj5hLGM9aSsyKnU+PmEscz1jbygyMCk7ZnVuY3Rpb24gbChyKXt2YXIgaT1uZXcgRmxvYXQzMkFycmF5KGYqYyksbD1uZXcgRmxvYXQzMkFycmF5KGYqYyk7ci5mb3JFYWNoKGZ1bmN0aW9uKHIsbyxzKXt2YXIgbD0rdChyLG8scykrdT4+YSxoPStuKHIsbyxzKSt1Pj5hLGQ9K2UocixvLHMpO2w+PTAmJmw8ZiYmaD49MCYmaDxjJiYoaVtsK2gqZl0rPWQpfSkseW8oe3dpZHRoOmYsaGVpZ2h0OmMsZGF0YTppfSx7d2lkdGg6ZixoZWlnaHQ6YyxkYXRhOmx9LG8+PmEpLF9vKHt3aWR0aDpmLGhlaWdodDpjLGRhdGE6bH0se3dpZHRoOmYsaGVpZ2h0OmMsZGF0YTppfSxvPj5hKSx5byh7d2lkdGg6ZixoZWlnaHQ6YyxkYXRhOml9LHt3aWR0aDpmLGhlaWdodDpjLGRhdGE6bH0sbz4+YSksX28oe3dpZHRoOmYsaGVpZ2h0OmMsZGF0YTpsfSx7d2lkdGg6ZixoZWlnaHQ6YyxkYXRhOml9LG8+PmEpLHlvKHt3aWR0aDpmLGhlaWdodDpjLGRhdGE6aX0se3dpZHRoOmYsaGVpZ2h0OmMsZGF0YTpsfSxvPj5hKSxfbyh7d2lkdGg6ZixoZWlnaHQ6YyxkYXRhOmx9LHt3aWR0aDpmLGhlaWdodDpjLGRhdGE6aX0sbz4+YSk7dmFyIGQ9cyhpKTtpZighQXJyYXkuaXNBcnJheShkKSl7dmFyIHA9VChpKTtkPXcoMCxwLGQpLChkPWcoMCxNYXRoLmZsb29yKHAvZCkqZCxkKSkuc2hpZnQoKX1yZXR1cm4gZ28oKS50aHJlc2hvbGRzKGQpLnNpemUoW2YsY10pKGkpLm1hcChoKX1mdW5jdGlvbiBoKHQpe3JldHVybiB0LnZhbHVlKj1NYXRoLnBvdygyLC0yKmEpLHQuY29vcmRpbmF0ZXMuZm9yRWFjaChkKSx0fWZ1bmN0aW9uIGQodCl7dC5mb3JFYWNoKHApfWZ1bmN0aW9uIHAodCl7dC5mb3JFYWNoKHYpfWZ1bmN0aW9uIHYodCl7dFswXT10WzBdKk1hdGgucG93KDIsYSktdSx0WzFdPXRbMV0qTWF0aC5wb3coMixhKS11fWZ1bmN0aW9uIHkoKXtyZXR1cm4gZj1yKzIqKHU9MypvKT4+YSxjPWkrMip1Pj5hLGx9cmV0dXJuIGwueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOmNvKCtuKSxsKTp0fSxsLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjbygrdCksbCk6bn0sbC53ZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpjbygrdCksbCk6ZX0sbC5zaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybltyLGldO3ZhciBuPU1hdGguY2VpbCh0WzBdKSxlPU1hdGguY2VpbCh0WzFdKTtpZighKG4+PTB8fG4+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHI9bixpPWUseSgpfSxsLmNlbGxTaXplPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiAxPDxhO2lmKCEoKHQ9K3QpPj0xKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgY2VsbCBzaXplIik7cmV0dXJuIGE9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMikseSgpfSxsLnRocmVzaG9sZHM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpBcnJheS5pc0FycmF5KHQpP2NvKHVvLmNhbGwodCkpOmNvKHQpLGwpOnN9LGwuYmFuZHdpZHRoPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBNYXRoLnNxcnQobyoobysxKSk7aWYoISgodD0rdCk+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBiYW5kd2lkdGgiKTtyZXR1cm4gbz1NYXRoLnJvdW5kKChNYXRoLnNxcnQoNCp0KnQrMSktMSkvMikseSgpfSxsfSx0LmRpc3BhdGNoPUksdC5kcmFnPWZ1bmN0aW9uKCl7dmFyIG4sZSxyLGksbz1XdCxhPVp0LHU9UXQsZj1KdCxjPXt9LHM9SSgic3RhcnQiLCJkcmFnIiwiZW5kIiksbD0wLGg9MDtmdW5jdGlvbiBkKHQpe3Qub24oIm1vdXNlZG93bi5kcmFnIixwKS5maWx0ZXIoZikub24oInRvdWNoc3RhcnQuZHJhZyIseSkub24oInRvdWNobW92ZS5kcmFnIixfKS5vbigidG91Y2hlbmQuZHJhZyB0b3VjaGNhbmNlbC5kcmFnIixiKS5zdHlsZSgidG91Y2gtYWN0aW9uIiwibm9uZSIpLnN0eWxlKCItd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IiLCJyZ2JhKDAsMCwwLDApIil9ZnVuY3Rpb24gcCgpe2lmKCFpJiZvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHU9bSgibW91c2UiLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpLEZ0LHRoaXMsYXJndW1lbnRzKTt1JiYoRHQodC5ldmVudC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLHYsITApLm9uKCJtb3VzZXVwLmRyYWciLGcsITApLFh0KHQuZXZlbnQudmlldyksSHQoKSxyPSExLG49dC5ldmVudC5jbGllbnRYLGU9dC5ldmVudC5jbGllbnRZLHUoInN0YXJ0IikpfX1mdW5jdGlvbiB2KCl7aWYoanQoKSwhcil7dmFyIGk9dC5ldmVudC5jbGllbnRYLW4sbz10LmV2ZW50LmNsaWVudFktZTtyPWkqaStvKm8+aH1jLm1vdXNlKCJkcmFnIil9ZnVuY3Rpb24gZygpe0R0KHQuZXZlbnQudmlldykub24oIm1vdXNlbW92ZS5kcmFnIG1vdXNldXAuZHJhZyIsbnVsbCksR3QodC5ldmVudC52aWV3LHIpLGp0KCksYy5tb3VzZSgiZW5kIil9ZnVuY3Rpb24geSgpe2lmKG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgbixlLHI9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxpPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLHU9ci5sZW5ndGg7Zm9yKG49MDtuPHU7KytuKShlPW0ocltuXS5pZGVudGlmaWVyLGksSXQsdGhpcyxhcmd1bWVudHMpKSYmKEh0KCksZSgic3RhcnQiKSl9fWZ1bmN0aW9uIF8oKXt2YXIgbixlLHI9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxpPXIubGVuZ3RoO2ZvcihuPTA7bjxpOysrbikoZT1jW3Jbbl0uaWRlbnRpZmllcl0pJiYoanQoKSxlKCJkcmFnIikpfWZ1bmN0aW9uIGIoKXt2YXIgbixlLHI9dC5ldmVudC5jaGFuZ2VkVG91Y2hlcyxvPXIubGVuZ3RoO2ZvcihpJiZjbGVhclRpbWVvdXQoaSksaT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aT1udWxsfSw1MDApLG49MDtuPG87KytuKShlPWNbcltuXS5pZGVudGlmaWVyXSkmJihIdCgpLGUoImVuZCIpKX1mdW5jdGlvbiBtKG4sZSxyLGksbyl7dmFyIGEsZixoLHA9cihlLG4pLHY9cy5jb3B5KCk7aWYoQ3QobmV3ICR0KGQsImJlZm9yZXN0YXJ0IixhLG4sbCxwWzBdLHBbMV0sMCwwLHYpLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPSh0LmV2ZW50LnN1YmplY3Q9YT11LmFwcGx5KGksbykpJiYoZj1hLngtcFswXXx8MCxoPWEueS1wWzFdfHwwLCEwKX0pKXJldHVybiBmdW5jdGlvbiB0KHUpe3ZhciBzLGc9cDtzd2l0Y2godSl7Y2FzZSJzdGFydCI6Y1tuXT10LHM9bCsrO2JyZWFrO2Nhc2UiZW5kIjpkZWxldGUgY1tuXSwtLWw7Y2FzZSJkcmFnIjpwPXIoZSxuKSxzPWx9Q3QobmV3ICR0KGQsdSxhLG4scyxwWzBdK2YscFsxXStoLHBbMF0tZ1swXSxwWzFdLWdbMV0sdiksdi5hcHBseSx2LFt1LGksb10pfX1yZXR1cm4gZC5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWdCghIXQpLGQpOm99LGQuY29udGFpbmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VnQodCksZCk6YX0sZC5zdWJqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6VnQodCksZCk6dX0sZC50b3VjaGFibGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpWdCghIXQpLGQpOmZ9LGQub249ZnVuY3Rpb24oKXt2YXIgdD1zLm9uLmFwcGx5KHMsYXJndW1lbnRzKTtyZXR1cm4gdD09PXM/ZDp0fSxkLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9KHQ9K3QpKnQsZCk6TWF0aC5zcXJ0KGgpfSxkfSx0LmRyYWdEaXNhYmxlPVh0LHQuZHJhZ0VuYWJsZT1HdCx0LmRzdkZvcm1hdD1Fbyx0LmNzdlBhcnNlPUNvLHQuY3N2UGFyc2VSb3dzPVBvLHQuY3N2Rm9ybWF0PXpvLHQuY3N2Rm9ybWF0Um93cz1Sbyx0LnRzdlBhcnNlPURvLHQudHN2UGFyc2VSb3dzPVVvLHQudHN2Rm9ybWF0PXFvLHQudHN2Rm9ybWF0Um93cz1Pbyx0LmVhc2VMaW5lYXI9ZnVuY3Rpb24odCl7cmV0dXJuK3R9LHQuZWFzZVF1YWQ9RHIsdC5lYXNlUXVhZEluPWZ1bmN0aW9uKHQpe3JldHVybiB0KnR9LHQuZWFzZVF1YWRPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQqKDItdCl9LHQuZWFzZVF1YWRJbk91dD1Ecix0LmVhc2VDdWJpYz1Vcix0LmVhc2VDdWJpY0luPWZ1bmN0aW9uKHQpe3JldHVybiB0KnQqdH0sdC5lYXNlQ3ViaWNPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuLS10KnQqdCsxfSx0LmVhc2VDdWJpY0luT3V0PVVyLHQuZWFzZVBvbHk9WXIsdC5lYXNlUG9seUluPXFyLHQuZWFzZVBvbHlPdXQ9T3IsdC5lYXNlUG9seUluT3V0PVlyLHQuZWFzZVNpbj1Jcix0LmVhc2VTaW5Jbj1mdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLmNvcyh0KkZyKX0sdC5lYXNlU2luT3V0PWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0KkZyKX0sdC5lYXNlU2luSW5PdXQ9SXIsdC5lYXNlRXhwPUhyLHQuZWFzZUV4cEluPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdygyLDEwKnQtMTApfSx0LmVhc2VFeHBPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5wb3coMiwtMTAqdCl9LHQuZWFzZUV4cEluT3V0PUhyLHQuZWFzZUNpcmNsZT1qcix0LmVhc2VDaXJjbGVJbj1mdW5jdGlvbih0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfSx0LmVhc2VDaXJjbGVPdXQ9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCgxLSAtLXQqdCl9LHQuZWFzZUNpcmNsZUluT3V0PWpyLHQuZWFzZUJvdW5jZT1uaSx0LmVhc2VCb3VuY2VJbj1mdW5jdGlvbih0KXtyZXR1cm4gMS1uaSgxLXQpfSx0LmVhc2VCb3VuY2VPdXQ9bmksdC5lYXNlQm91bmNlSW5PdXQ9ZnVuY3Rpb24odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLW5pKDEtdCk6bmkodC0xKSsxKS8yfSx0LmVhc2VCYWNrPWlpLHQuZWFzZUJhY2tJbj1laSx0LmVhc2VCYWNrT3V0PXJpLHQuZWFzZUJhY2tJbk91dD1paSx0LmVhc2VFbGFzdGljPXVpLHQuZWFzZUVsYXN0aWNJbj1haSx0LmVhc2VFbGFzdGljT3V0PXVpLHQuZWFzZUVsYXN0aWNJbk91dD1maSx0LmJsb2I9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZmV0Y2godCxuKS50aGVuKFlvKX0sdC5idWZmZXI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZmV0Y2godCxuKS50aGVuKEJvKX0sdC5kc3Y9ZnVuY3Rpb24odCxuLGUscil7Mz09PWFyZ3VtZW50cy5sZW5ndGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlJiYocj1lLGU9dm9pZCAwKTt2YXIgaT1Fbyh0KTtyZXR1cm4gSW8obixlKS50aGVuKGZ1bmN0aW9uKHQpe3JldHVybiBpLnBhcnNlKHQscil9KX0sdC5jc3Y9am8sdC50c3Y9WG8sdC5pbWFnZT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlLHIpe3ZhciBpPW5ldyBJbWFnZTtmb3IodmFyIG8gaW4gbilpW29dPW5bb107aS5vbmVycm9yPXIsaS5vbmxvYWQ9ZnVuY3Rpb24oKXtlKGkpfSxpLnNyYz10fSl9LHQuanNvbj1mdW5jdGlvbih0LG4pe3JldHVybiBmZXRjaCh0LG4pLnRoZW4oR28pfSx0LnRleHQ9SW8sdC54bWw9JG8sdC5odG1sPVdvLHQuc3ZnPVpvLHQuZm9yY2VDZW50ZXI9ZnVuY3Rpb24odCxuKXt2YXIgZTtmdW5jdGlvbiByKCl7dmFyIHIsaSxvPWUubGVuZ3RoLGE9MCx1PTA7Zm9yKHI9MDtyPG87KytyKWErPShpPWVbcl0pLngsdSs9aS55O2ZvcihhPWEvby10LHU9dS9vLW4scj0wO3I8bzsrK3IpKGk9ZVtyXSkueC09YSxpLnktPXV9cmV0dXJuIG51bGw9PXQmJih0PTApLG51bGw9PW4mJihuPTApLHIuaW5pdGlhbGl6ZT1mdW5jdGlvbih0KXtlPXR9LHIueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rbixyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3Qscik6bn0scn0sdC5mb3JjZUNvbGxpZGU9ZnVuY3Rpb24odCl7dmFyIG4sZSxyPTEsaT0xO2Z1bmN0aW9uIG8oKXtmb3IodmFyIHQsbyx1LGYsYyxzLGwsaD1uLmxlbmd0aCxkPTA7ZDxpOysrZClmb3Iobz1yYShuLHVhLGZhKS52aXNpdEFmdGVyKGEpLHQ9MDt0PGg7Kyt0KXU9blt0XSxzPWVbdS5pbmRleF0sbD1zKnMsZj11LngrdS52eCxjPXUueSt1LnZ5LG8udmlzaXQocCk7ZnVuY3Rpb24gcCh0LG4sZSxpLG8pe3ZhciBhPXQuZGF0YSxoPXQucixkPXMraDtpZighYSlyZXR1cm4gbj5mK2R8fGk8Zi1kfHxlPmMrZHx8bzxjLWQ7aWYoYS5pbmRleD51LmluZGV4KXt2YXIgcD1mLWEueC1hLnZ4LHY9Yy1hLnktYS52eSxnPXAqcCt2KnY7ZzxkKmQmJigwPT09cCYmKGcrPShwPUpvKCkpKnApLDA9PT12JiYoZys9KHY9Sm8oKSkqdiksZz0oZC0oZz1NYXRoLnNxcnQoZykpKS9nKnIsdS52eCs9KHAqPWcpKihkPShoKj1oKS8obCtoKSksdS52eSs9KHYqPWcpKmQsYS52eC09cCooZD0xLWQpLGEudnktPXYqZCl9fX1mdW5jdGlvbiBhKHQpe2lmKHQuZGF0YSlyZXR1cm4gdC5yPWVbdC5kYXRhLmluZGV4XTtmb3IodmFyIG49dC5yPTA7bjw0Oysrbil0W25dJiZ0W25dLnI+dC5yJiYodC5yPXRbbl0ucil9ZnVuY3Rpb24gdSgpe2lmKG4pe3ZhciByLGksbz1uLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkobykscj0wO3I8bzsrK3IpaT1uW3JdLGVbaS5pbmRleF09K3QoaSxyLG4pfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UW8obnVsbD09dD8xOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dCx1KCl9LG8uaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxvKTppfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt0LG8pOnJ9LG8ucmFkaXVzPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246UW8oK24pLHUoKSxvKTp0fSxvfSx0LmZvcmNlTGluaz1mdW5jdGlvbih0KXt2YXIgbixlLHIsaSxvLGE9Y2EsdT1mdW5jdGlvbih0KXtyZXR1cm4gMS9NYXRoLm1pbihpW3Quc291cmNlLmluZGV4XSxpW3QudGFyZ2V0LmluZGV4XSl9LGY9UW8oMzApLGM9MTtmdW5jdGlvbiBzKHIpe2Zvcih2YXIgaT0wLGE9dC5sZW5ndGg7aTxjOysraSlmb3IodmFyIHUsZixzLGwsaCxkLHAsdj0wO3Y8YTsrK3YpZj0odT10W3ZdKS5zb3VyY2UsbD0ocz11LnRhcmdldCkueCtzLnZ4LWYueC1mLnZ4fHxKbygpLGg9cy55K3MudnktZi55LWYudnl8fEpvKCksbCo9ZD0oKGQ9TWF0aC5zcXJ0KGwqbCtoKmgpKS1lW3ZdKS9kKnIqblt2XSxoKj1kLHMudngtPWwqKHA9b1t2XSkscy52eS09aCpwLGYudngrPWwqKHA9MS1wKSxmLnZ5Kz1oKnB9ZnVuY3Rpb24gbCgpe2lmKHIpe3ZhciB1LGYsYz1yLmxlbmd0aCxzPXQubGVuZ3RoLGw9S2kocixhKTtmb3IodT0wLGk9bmV3IEFycmF5KGMpO3U8czsrK3UpKGY9dFt1XSkuaW5kZXg9dSwib2JqZWN0IiE9dHlwZW9mIGYuc291cmNlJiYoZi5zb3VyY2U9c2EobCxmLnNvdXJjZSkpLCJvYmplY3QiIT10eXBlb2YgZi50YXJnZXQmJihmLnRhcmdldD1zYShsLGYudGFyZ2V0KSksaVtmLnNvdXJjZS5pbmRleF09KGlbZi5zb3VyY2UuaW5kZXhdfHwwKSsxLGlbZi50YXJnZXQuaW5kZXhdPShpW2YudGFyZ2V0LmluZGV4XXx8MCkrMTtmb3IodT0wLG89bmV3IEFycmF5KHMpO3U8czsrK3UpZj10W3VdLG9bdV09aVtmLnNvdXJjZS5pbmRleF0vKGlbZi5zb3VyY2UuaW5kZXhdK2lbZi50YXJnZXQuaW5kZXhdKTtuPW5ldyBBcnJheShzKSxoKCksZT1uZXcgQXJyYXkocyksZCgpfX1mdW5jdGlvbiBoKCl7aWYocilmb3IodmFyIGU9MCxpPXQubGVuZ3RoO2U8aTsrK2UpbltlXT0rdSh0W2VdLGUsdCl9ZnVuY3Rpb24gZCgpe2lmKHIpZm9yKHZhciBuPTAsaT10Lmxlbmd0aDtuPGk7KytuKWVbbl09K2YodFtuXSxuLHQpfXJldHVybiBudWxsPT10JiYodD1bXSkscy5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe3I9dCxsKCl9LHMubGlua3M9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9bixsKCkscyk6dH0scy5pZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10LHMpOmF9LHMuaXRlcmF0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0rdCxzKTpjfSxzLnN0cmVuZ3RoPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UW8oK3QpLGgoKSxzKTp1fSxzLmRpc3RhbmNlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UW8oK3QpLGQoKSxzKTpmfSxzfSx0LmZvcmNlTWFueUJvZHk9ZnVuY3Rpb24oKXt2YXIgdCxuLGUscixpPVFvKC0zMCksbz0xLGE9MS8wLHU9LjgxO2Z1bmN0aW9uIGYocil7dmFyIGksbz10Lmxlbmd0aCxhPXJhKHQsbGEsaGEpLnZpc2l0QWZ0ZXIocyk7Zm9yKGU9cixpPTA7aTxvOysraSluPXRbaV0sYS52aXNpdChsKX1mdW5jdGlvbiBjKCl7aWYodCl7dmFyIG4sZSxvPXQubGVuZ3RoO2ZvcihyPW5ldyBBcnJheShvKSxuPTA7bjxvOysrbillPXRbbl0scltlLmluZGV4XT0raShlLG4sdCl9fWZ1bmN0aW9uIHModCl7dmFyIG4sZSxpLG8sYSx1PTAsZj0wO2lmKHQubGVuZ3RoKXtmb3IoaT1vPWE9MDthPDQ7KythKShuPXRbYV0pJiYoZT1NYXRoLmFicyhuLnZhbHVlKSkmJih1Kz1uLnZhbHVlLGYrPWUsaSs9ZSpuLngsbys9ZSpuLnkpO3QueD1pL2YsdC55PW8vZn1lbHNleyhuPXQpLng9bi5kYXRhLngsbi55PW4uZGF0YS55O2Rve3UrPXJbbi5kYXRhLmluZGV4XX13aGlsZShuPW4ubmV4dCl9dC52YWx1ZT11fWZ1bmN0aW9uIGwodCxpLGYsYyl7aWYoIXQudmFsdWUpcmV0dXJuITA7dmFyIHM9dC54LW4ueCxsPXQueS1uLnksaD1jLWksZD1zKnMrbCpsO2lmKGgqaC91PGQpcmV0dXJuIGQ8YSYmKDA9PT1zJiYoZCs9KHM9Sm8oKSkqcyksMD09PWwmJihkKz0obD1KbygpKSpsKSxkPG8mJihkPU1hdGguc3FydChvKmQpKSxuLnZ4Kz1zKnQudmFsdWUqZS9kLG4udnkrPWwqdC52YWx1ZSplL2QpLCEwO2lmKCEodC5sZW5ndGh8fGQ+PWEpKXsodC5kYXRhIT09bnx8dC5uZXh0KSYmKDA9PT1zJiYoZCs9KHM9Sm8oKSkqcyksMD09PWwmJihkKz0obD1KbygpKSpsKSxkPG8mJihkPU1hdGguc3FydChvKmQpKSk7ZG97dC5kYXRhIT09biYmKGg9clt0LmRhdGEuaW5kZXhdKmUvZCxuLnZ4Kz1zKmgsbi52eSs9bCpoKX13aGlsZSh0PXQubmV4dCl9fXJldHVybiBmLmluaXRpYWxpemU9ZnVuY3Rpb24obil7dD1uLGMoKX0sZi5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFvKCt0KSxjKCksZik6aX0sZi5kaXN0YW5jZU1pbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz10KnQsZik6TWF0aC5zcXJ0KG8pfSxmLmRpc3RhbmNlTWF4PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPXQqdCxmKTpNYXRoLnNxcnQoYSl9LGYudGhldGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dCp0LGYpOk1hdGguc3FydCh1KX0sZn0sdC5mb3JjZVJhZGlhbD1mdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvLGE9UW8oLjEpO2Z1bmN0aW9uIHUodCl7Zm9yKHZhciBhPTAsdT1yLmxlbmd0aDthPHU7KythKXt2YXIgZj1yW2FdLGM9Zi54LW58fDFlLTYscz1mLnktZXx8MWUtNixsPU1hdGguc3FydChjKmMrcypzKSxoPShvW2FdLWwpKmlbYV0qdC9sO2YudngrPWMqaCxmLnZ5Kz1zKmh9fWZ1bmN0aW9uIGYoKXtpZihyKXt2YXIgbixlPXIubGVuZ3RoO2ZvcihpPW5ldyBBcnJheShlKSxvPW5ldyBBcnJheShlKSxuPTA7bjxlOysrbilvW25dPSt0KHJbbl0sbixyKSxpW25dPWlzTmFOKG9bbl0pPzA6K2EocltuXSxuLHIpfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UW8oK3QpKSxudWxsPT1uJiYobj0wKSxudWxsPT1lJiYoZT0wKSx1LmluaXRpYWxpemU9ZnVuY3Rpb24odCl7cj10LGYoKX0sdS5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFvKCt0KSxmKCksdSk6YX0sdS5yYWRpdXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpRbygrbiksZigpLHUpOnR9LHUueD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdCx1KTpufSx1Lnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsdSk6ZX0sdX0sdC5mb3JjZVNpbXVsYXRpb249ZnVuY3Rpb24odCl7dmFyIG4sZT0xLHI9LjAwMSxpPTEtTWF0aC5wb3cociwxLzMwMCksbz0wLGE9LjYsdT1LaSgpLGY9dXIocyksYz1JKCJ0aWNrIiwiZW5kIik7ZnVuY3Rpb24gcygpe2woKSxjLmNhbGwoInRpY2siLG4pLGU8ciYmKGYuc3RvcCgpLGMuY2FsbCgiZW5kIixuKSl9ZnVuY3Rpb24gbCgpe3ZhciBuLHIsZj10Lmxlbmd0aDtmb3IoZSs9KG8tZSkqaSx1LmVhY2goZnVuY3Rpb24odCl7dChlKX0pLG49MDtuPGY7KytuKW51bGw9PShyPXRbbl0pLmZ4P3IueCs9ci52eCo9YTooci54PXIuZngsci52eD0wKSxudWxsPT1yLmZ5P3IueSs9ci52eSo9YTooci55PXIuZnksci52eT0wKX1mdW5jdGlvbiBoKCl7Zm9yKHZhciBuLGU9MCxyPXQubGVuZ3RoO2U8cjsrK2Upe2lmKChuPXRbZV0pLmluZGV4PWUsaXNOYU4obi54KXx8aXNOYU4obi55KSl7dmFyIGk9ZGEqTWF0aC5zcXJ0KGUpLG89ZSpwYTtuLng9aSpNYXRoLmNvcyhvKSxuLnk9aSpNYXRoLnNpbihvKX0oaXNOYU4obi52eCl8fGlzTmFOKG4udnkpKSYmKG4udng9bi52eT0wKX19ZnVuY3Rpb24gZChuKXtyZXR1cm4gbi5pbml0aWFsaXplJiZuLmluaXRpYWxpemUodCksbn1yZXR1cm4gbnVsbD09dCYmKHQ9W10pLGgoKSxuPXt0aWNrOmwscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBmLnJlc3RhcnQocyksbn0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBmLnN0b3AoKSxufSxub2RlczpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1lLGgoKSx1LmVhY2goZCksbik6dH0sYWxwaGE6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3Qsbik6ZX0sYWxwaGFNaW46ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K3Qsbik6cn0sYWxwaGFEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdCxuKToraX0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3Qsbik6b30sdmVsb2NpdHlEZWNheTpmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0xLXQsbik6MS1hfSxmb3JjZTpmdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KG51bGw9PWU/dS5yZW1vdmUodCk6dS5zZXQodCxkKGUpKSxuKTp1LmdldCh0KX0sZmluZDpmdW5jdGlvbihuLGUscil7dmFyIGksbyxhLHUsZixjPTAscz10Lmxlbmd0aDtmb3IobnVsbD09cj9yPTEvMDpyKj1yLGM9MDtjPHM7KytjKShhPShpPW4tKHU9dFtjXSkueCkqaSsobz1lLXUueSkqbyk8ciYmKGY9dSxyPWEpO3JldHVybiBmfSxvbjpmdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/KGMub24odCxlKSxuKTpjLm9uKHQpfX19LHQuZm9yY2VYPWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpPVFvKC4xKTtmdW5jdGlvbiBvKHQpe2Zvcih2YXIgaSxvPTAsYT1uLmxlbmd0aDtvPGE7KytvKShpPW5bb10pLnZ4Kz0ocltvXS1pLngpKmVbb10qdH1mdW5jdGlvbiBhKCl7aWYobil7dmFyIG8sYT1uLmxlbmd0aDtmb3IoZT1uZXcgQXJyYXkoYSkscj1uZXcgQXJyYXkoYSksbz0wO288YTsrK28pZVtvXT1pc05hTihyW29dPSt0KG5bb10sbyxuKSk/MDoraShuW29dLG8sbil9fXJldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1RbyhudWxsPT10PzA6K3QpKSxvLmluaXRpYWxpemU9ZnVuY3Rpb24odCl7bj10LGEoKX0sby5zdHJlbmd0aD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlFvKCt0KSxhKCksbyk6aX0sby54PWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSJmdW5jdGlvbiI9PXR5cGVvZiBuP246UW8oK24pLGEoKSxvKTp0fSxvfSx0LmZvcmNlWT1mdW5jdGlvbih0KXt2YXIgbixlLHIsaT1RbyguMSk7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIGksbz0wLGE9bi5sZW5ndGg7bzxhOysrbykoaT1uW29dKS52eSs9KHJbb10taS55KSplW29dKnR9ZnVuY3Rpb24gYSgpe2lmKG4pe3ZhciBvLGE9bi5sZW5ndGg7Zm9yKGU9bmV3IEFycmF5KGEpLHI9bmV3IEFycmF5KGEpLG89MDtvPGE7KytvKWVbb109aXNOYU4ocltvXT0rdChuW29dLG8sbikpPzA6K2kobltvXSxvLG4pfX1yZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdCYmKHQ9UW8obnVsbD09dD8wOit0KSksby5pbml0aWFsaXplPWZ1bmN0aW9uKHQpe249dCxhKCl9LG8uc3RyZW5ndGg9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpRbygrdCksYSgpLG8pOml9LG8ueT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlFvKCtuKSxhKCksbyk6dH0sb30sdC5mb3JtYXREZWZhdWx0TG9jYWxlPVNhLHQuZm9ybWF0TG9jYWxlPU5hLHQuZm9ybWF0U3BlY2lmaWVyPWJhLHQucHJlY2lzaW9uRml4ZWQ9RWEsdC5wcmVjaXNpb25QcmVmaXg9a2EsdC5wcmVjaXNpb25Sb3VuZD1DYSx0Lmdlb0FyZWE9ZnVuY3Rpb24odCl7cmV0dXJuIHl1LnJlc2V0KCksc3UodCxfdSksMip5dX0sdC5nZW9Cb3VuZHM9ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGksbyxhLHU7aWYoUnU9enU9LShDdT1QdT0xLzApLE91PVtdLHN1KHQscmYpLGU9T3UubGVuZ3RoKXtmb3IoT3Uuc29ydChkZiksbj0xLG89W3I9T3VbMF1dO248ZTsrK24pcGYociwoaT1PdVtuXSlbMF0pfHxwZihyLGlbMV0pPyhoZihyWzBdLGlbMV0pPmhmKHJbMF0sclsxXSkmJihyWzFdPWlbMV0pLGhmKGlbMF0sclsxXSk+aGYoclswXSxyWzFdKSYmKHJbMF09aVswXSkpOm8ucHVzaChyPWkpO2ZvcihhPS0xLzAsbj0wLHI9b1tlPW8ubGVuZ3RoLTFdO248PWU7cj1pLCsrbilpPW9bbl0sKHU9aGYoclsxXSxpWzBdKSk+YSYmKGE9dSxDdT1pWzBdLHp1PXJbMV0pfXJldHVybiBPdT1ZdT1udWxsLEN1PT09MS8wfHxQdT09PTEvMD9bW05hTixOYU5dLFtOYU4sTmFOXV06W1tDdSxQdV0sW3p1LFJ1XV19LHQuZ2VvQ2VudHJvaWQ9ZnVuY3Rpb24odCl7QnU9RnU9SXU9SHU9anU9WHU9R3U9VnU9JHU9V3U9WnU9MCxzdSh0LHZmKTt2YXIgbj0kdSxlPVd1LHI9WnUsaT1uKm4rZSplK3IqcjtyZXR1cm4gaTxVYSYmKG49WHUsZT1HdSxyPVZ1LEZ1PERhJiYobj1JdSxlPUh1LHI9anUpLChpPW4qbitlKmUrcipyKTxVYSk/W05hTixOYU5dOltYYShlLG4pKkZhLGV1KHIvS2EoaSkpKkZhXX0sdC5nZW9DaXJjbGU9ZnVuY3Rpb24oKXt2YXIgdCxuLGU9TmYoWzAsMF0pLHI9TmYoOTApLGk9TmYoNiksbz17cG9pbnQ6ZnVuY3Rpb24oZSxyKXt0LnB1c2goZT1uKGUscikpLGVbMF0qPUZhLGVbMV0qPUZhfX07ZnVuY3Rpb24gYSgpe3ZhciBhPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHU9ci5hcHBseSh0aGlzLGFyZ3VtZW50cykqSWEsZj1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpJYTtyZXR1cm4gdD1bXSxuPWtmKC1hWzBdKklhLC1hWzFdKklhLDApLmludmVydCxMZihvLHUsZiwxKSxhPXt0eXBlOiJQb2x5Z29uIixjb29yZGluYXRlczpbdF19LHQ9bj1udWxsLGF9cmV0dXJuIGEuY2VudGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6TmYoWyt0WzBdLCt0WzFdXSksYSk6ZX0sYS5yYWRpdXM9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpOZigrdCksYSk6cn0sYS5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpOZigrdCksYSk6aX0sYX0sdC5nZW9DbGlwQW50aW1lcmlkaWFuPUdmLHQuZ2VvQ2xpcENpcmNsZT1WZix0Lmdlb0NsaXBFeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgdCxuLGUscj0wLGk9MCxvPTk2MCxhPTUwMDtyZXR1cm4gZT17c3RyZWFtOmZ1bmN0aW9uKGUpe3JldHVybiB0JiZuPT09ZT90OnQ9WmYocixpLG8sYSkobj1lKX0sZXh0ZW50OmZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSt1WzBdWzBdLGk9K3VbMF1bMV0sbz0rdVsxXVswXSxhPSt1WzFdWzFdLHQ9bj1udWxsLGUpOltbcixpXSxbbyxhXV19fX0sdC5nZW9DbGlwUmVjdGFuZ2xlPVpmLHQuZ2VvQ29udGFpbnM9ZnVuY3Rpb24odCxuKXtyZXR1cm4odCYmY2MuaGFzT3duUHJvcGVydHkodC50eXBlKT9jY1t0LnR5cGVdOmxjKSh0LG4pfSx0Lmdlb0Rpc3RhbmNlPWZjLHQuZ2VvR3JhdGljdWxlPWJjLHQuZ2VvR3JhdGljdWxlMTA9ZnVuY3Rpb24oKXtyZXR1cm4gYmMoKSgpfSx0Lmdlb0ludGVycG9sYXRlPWZ1bmN0aW9uKHQsbil7dmFyIGU9dFswXSpJYSxyPXRbMV0qSWEsaT1uWzBdKklhLG89blsxXSpJYSxhPUdhKHIpLHU9UWEociksZj1HYShvKSxjPVFhKG8pLHM9YSpHYShlKSxsPWEqUWEoZSksaD1mKkdhKGkpLGQ9ZipRYShpKSxwPTIqZXUoS2EocnUoby1yKSthKmYqcnUoaS1lKSkpLHY9UWEocCksZz1wP2Z1bmN0aW9uKHQpe3ZhciBuPVFhKHQqPXApL3YsZT1RYShwLXQpL3Yscj1lKnMrbipoLGk9ZSpsK24qZCxvPWUqdStuKmM7cmV0dXJuW1hhKGkscikqRmEsWGEobyxLYShyKnIraSppKSkqRmFdfTpmdW5jdGlvbigpe3JldHVybltlKkZhLHIqRmFdfTtyZXR1cm4gZy5kaXN0YW5jZT1wLGd9LHQuZ2VvTGVuZ3RoPW9jLHQuZ2VvUGF0aD1mdW5jdGlvbih0LG4pe3ZhciBlLHIsaT00LjU7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmKCJmdW5jdGlvbiI9PXR5cGVvZiBpJiZyLnBvaW50UmFkaXVzKCtpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksc3UodCxlKHIpKSksci5yZXN1bHQoKX1yZXR1cm4gby5hcmVhPWZ1bmN0aW9uKHQpe3JldHVybiBzdSh0LGUoU2MpKSxTYy5yZXN1bHQoKX0sby5tZWFzdXJlPWZ1bmN0aW9uKHQpe3JldHVybiBzdSh0LGUoZHMpKSxkcy5yZXN1bHQoKX0sby5ib3VuZHM9ZnVuY3Rpb24odCl7cmV0dXJuIHN1KHQsZShVYykpLFVjLnJlc3VsdCgpfSxvLmNlbnRyb2lkPWZ1bmN0aW9uKHQpe3JldHVybiBzdSh0LGUoWmMpKSxaYy5yZXN1bHQoKX0sby5wcm9qZWN0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PW4/KHQ9bnVsbCxtYyk6KHQ9bikuc3RyZWFtLG8pOnR9LG8uY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1udWxsPT10PyhuPW51bGwsbmV3IGdzKTpuZXcgYXMobj10KSwiZnVuY3Rpb24iIT10eXBlb2YgaSYmci5wb2ludFJhZGl1cyhpKSxvKTpufSxvLnBvaW50UmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6KHIucG9pbnRSYWRpdXMoK3QpLCt0KSxvKTppfSxvLnByb2plY3Rpb24odCkuY29udGV4dChuKX0sdC5nZW9BbGJlcnM9RHMsdC5nZW9BbGJlcnNVc2E9ZnVuY3Rpb24oKXt2YXIgdCxuLGUscixpLG8sYT1EcygpLHU9THMoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGY9THMoKS5yb3RhdGUoWzE1NywwXSkuY2VudGVyKFstMywxOS45XSkucGFyYWxsZWxzKFs4LDE4XSksYz17cG9pbnQ6ZnVuY3Rpb24odCxuKXtvPVt0LG5dfX07ZnVuY3Rpb24gcyh0KXt2YXIgbj10WzBdLGE9dFsxXTtyZXR1cm4gbz1udWxsLGUucG9pbnQobixhKSxvfHwoci5wb2ludChuLGEpLG8pfHwoaS5wb2ludChuLGEpLG8pfWZ1bmN0aW9uIGwoKXtyZXR1cm4gdD1uPW51bGwsc31yZXR1cm4gcy5pbnZlcnQ9ZnVuY3Rpb24odCl7dmFyIG49YS5zY2FsZSgpLGU9YS50cmFuc2xhdGUoKSxyPSh0WzBdLWVbMF0pL24saT0odFsxXS1lWzFdKS9uO3JldHVybihpPj0uMTImJmk8LjIzNCYmcj49LS40MjUmJnI8LS4yMTQ/dTppPj0uMTY2JiZpPC4yMzQmJnI+PS0uMjE0JiZyPC0uMTE1P2Y6YSkuaW52ZXJ0KHQpfSxzLnN0cmVhbT1mdW5jdGlvbihlKXtyZXR1cm4gdCYmbj09PWU/dDoocj1bYS5zdHJlYW0obj1lKSx1LnN0cmVhbShlKSxmLnN0cmVhbShlKV0saT1yLmxlbmd0aCx0PXtwb2ludDpmdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0tMTsrK2U8aTspcltlXS5wb2ludCh0LG4pfSxzcGhlcmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9LTE7Kyt0PGk7KXJbdF0uc3BoZXJlKCl9LGxpbmVTdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uU3RhcnQoKX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0tMTsrK3Q8aTspclt0XS5wb2x5Z29uRW5kKCl9fSk7dmFyIHIsaX0scy5wcmVjaXNpb249ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEucHJlY2lzaW9uKHQpLHUucHJlY2lzaW9uKHQpLGYucHJlY2lzaW9uKHQpLGwoKSk6YS5wcmVjaXNpb24oKX0scy5zY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYS5zY2FsZSh0KSx1LnNjYWxlKC4zNSp0KSxmLnNjYWxlKHQpLHMudHJhbnNsYXRlKGEudHJhbnNsYXRlKCkpKTphLnNjYWxlKCl9LHMudHJhbnNsYXRlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhLnRyYW5zbGF0ZSgpO3ZhciBuPWEuc2NhbGUoKSxvPSt0WzBdLHM9K3RbMV07cmV0dXJuIGU9YS50cmFuc2xhdGUodCkuY2xpcEV4dGVudChbW28tLjQ1NSpuLHMtLjIzOCpuXSxbbysuNDU1Km4scysuMjM4Km5dXSkuc3RyZWFtKGMpLHI9dS50cmFuc2xhdGUoW28tLjMwNypuLHMrLjIwMSpuXSkuY2xpcEV4dGVudChbW28tLjQyNSpuK0RhLHMrLjEyKm4rRGFdLFtvLS4yMTQqbi1EYSxzKy4yMzQqbi1EYV1dKS5zdHJlYW0oYyksaT1mLnRyYW5zbGF0ZShbby0uMjA1Km4scysuMjEyKm5dKS5jbGlwRXh0ZW50KFtbby0uMjE0Km4rRGEscysuMTY2Km4rRGFdLFtvLS4xMTUqbi1EYSxzKy4yMzQqbi1EYV1dKS5zdHJlYW0oYyksbCgpfSxzLmZpdEV4dGVudD1mdW5jdGlvbih0LG4pe3JldHVybiB4cyhzLHQsbil9LHMuZml0U2l6ZT1mdW5jdGlvbih0LG4pe3JldHVybiB3cyhzLHQsbil9LHMuZml0V2lkdGg9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTXMocyx0LG4pfSxzLmZpdEhlaWdodD1mdW5jdGlvbih0LG4pe3JldHVybiBBcyhzLHQsbil9LHMuc2NhbGUoMTA3MCl9LHQuZ2VvQXppbXV0aGFsRXF1YWxBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIENzKE9zKS5zY2FsZSgxMjQuNzUpLmNsaXBBbmdsZSgxNzkuOTk5KX0sdC5nZW9BemltdXRoYWxFcXVhbEFyZWFSYXc9T3MsdC5nZW9BemltdXRoYWxFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiBDcyhZcykuc2NhbGUoNzkuNDE4OCkuY2xpcEFuZ2xlKDE3OS45OTkpfSx0Lmdlb0F6aW11dGhhbEVxdWlkaXN0YW50UmF3PVlzLHQuZ2VvQ29uaWNDb25mb3JtYWw9ZnVuY3Rpb24oKXtyZXR1cm4genMoSHMpLnNjYWxlKDEwOS41KS5wYXJhbGxlbHMoWzMwLDMwXSl9LHQuZ2VvQ29uaWNDb25mb3JtYWxSYXc9SHMsdC5nZW9Db25pY0VxdWFsQXJlYT1Mcyx0Lmdlb0NvbmljRXF1YWxBcmVhUmF3PVJzLHQuZ2VvQ29uaWNFcXVpZGlzdGFudD1mdW5jdGlvbigpe3JldHVybiB6cyhYcykuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX0sdC5nZW9Db25pY0VxdWlkaXN0YW50UmF3PVhzLHQuZ2VvRXF1YWxFYXJ0aD1mdW5jdGlvbigpe3JldHVybiBDcyhRcykuc2NhbGUoMTc3LjE1OCl9LHQuZ2VvRXF1YWxFYXJ0aFJhdz1Rcyx0Lmdlb0VxdWlyZWN0YW5ndWxhcj1mdW5jdGlvbigpe3JldHVybiBDcyhqcykuc2NhbGUoMTUyLjYzKX0sdC5nZW9FcXVpcmVjdGFuZ3VsYXJSYXc9anMsdC5nZW9Hbm9tb25pYz1mdW5jdGlvbigpe3JldHVybiBDcyhKcykuc2NhbGUoMTQ0LjA0OSkuY2xpcEFuZ2xlKDYwKX0sdC5nZW9Hbm9tb25pY1Jhdz1Kcyx0Lmdlb0lkZW50aXR5PWZ1bmN0aW9uKCl7dmFyIHQsbixlLHIsaSxvLGE9MSx1PTAsZj0wLGM9MSxzPTEsbD1tYyxoPW51bGwsZD1tYztmdW5jdGlvbiBwKCl7cmV0dXJuIHI9aT1udWxsLG99cmV0dXJuIG89e3N0cmVhbTpmdW5jdGlvbih0KXtyZXR1cm4gciYmaT09PXQ/cjpyPWwoZChpPXQpKX0scG9zdGNsaXA6ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9cixoPXQ9bj1lPW51bGwscCgpKTpkfSxjbGlwRXh0ZW50OmZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPW51bGw9PXI/KGg9dD1uPWU9bnVsbCxtYyk6WmYoaD0rclswXVswXSx0PStyWzBdWzFdLG49K3JbMV1bMF0sZT0rclsxXVsxXSkscCgpKTpudWxsPT1oP251bGw6W1toLHRdLFtuLGVdXX0sc2NhbGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9S3MoKGE9K3QpKmMsYSpzLHUsZikscCgpKTphfSx0cmFuc2xhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9S3MoYSpjLGEqcyx1PSt0WzBdLGY9K3RbMV0pLHAoKSk6W3UsZl19LHJlZmxlY3RYOmZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPUtzKGEqKGM9dD8tMToxKSxhKnMsdSxmKSxwKCkpOmM8MH0scmVmbGVjdFk6ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9S3MoYSpjLGEqKHM9dD8tMToxKSx1LGYpLHAoKSk6czwwfSxmaXRFeHRlbnQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4geHMobyx0LG4pfSxmaXRTaXplOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHdzKG8sdCxuKX0sZml0V2lkdGg6ZnVuY3Rpb24odCxuKXtyZXR1cm4gTXMobyx0LG4pfSxmaXRIZWlnaHQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gQXMobyx0LG4pfX19LHQuZ2VvUHJvamVjdGlvbj1Dcyx0Lmdlb1Byb2plY3Rpb25NdXRhdG9yPVBzLHQuZ2VvTWVyY2F0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gRnMoQnMpLnNjYWxlKDk2MS9CYSl9LHQuZ2VvTWVyY2F0b3JSYXc9QnMsdC5nZW9OYXR1cmFsRWFydGgxPWZ1bmN0aW9uKCl7cmV0dXJuIENzKHRsKS5zY2FsZSgxNzUuMjk1KX0sdC5nZW9OYXR1cmFsRWFydGgxUmF3PXRsLHQuZ2VvT3J0aG9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIENzKG5sKS5zY2FsZSgyNDkuNSkuY2xpcEFuZ2xlKDkwK0RhKX0sdC5nZW9PcnRob2dyYXBoaWNSYXc9bmwsdC5nZW9TdGVyZW9ncmFwaGljPWZ1bmN0aW9uKCl7cmV0dXJuIENzKGVsKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfSx0Lmdlb1N0ZXJlb2dyYXBoaWNSYXc9ZWwsdC5nZW9UcmFuc3ZlcnNlTWVyY2F0b3I9ZnVuY3Rpb24oKXt2YXIgdD1GcyhybCksbj10LmNlbnRlcixlPXQucm90YXRlO3JldHVybiB0LmNlbnRlcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9uKFstdFsxXSx0WzBdXSk6Wyh0PW4oKSlbMV0sLXRbMF1dfSx0LnJvdGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lKFt0WzBdLHRbMV0sdC5sZW5ndGg+Mj90WzJdKzkwOjkwXSk6Wyh0PWUoKSlbMF0sdFsxXSx0WzJdLTkwXX0sZShbMCwwLDkwXSkuc2NhbGUoMTU5LjE1NSl9LHQuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yUmF3PXJsLHQuZ2VvUm90YXRpb249UmYsdC5nZW9TdHJlYW09c3UsdC5nZW9UcmFuc2Zvcm09ZnVuY3Rpb24odCl7cmV0dXJue3N0cmVhbTpfcyh0KX19LHQuY2x1c3Rlcj1mdW5jdGlvbigpe3ZhciB0PWlsLG49MSxlPTEscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBvLGE9MDtpLmVhY2hBZnRlcihmdW5jdGlvbihuKXt2YXIgZT1uLmNoaWxkcmVuO2U/KG4ueD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2Uob2wsMCkvdC5sZW5ndGh9KGUpLG4ueT1mdW5jdGlvbih0KXtyZXR1cm4gMSt0LnJlZHVjZShhbCwwKX0oZSkpOihuLng9bz9hKz10KG4sbyk6MCxuLnk9MCxvPW4pfSk7dmFyIHU9ZnVuY3Rpb24odCl7Zm9yKHZhciBuO249dC5jaGlsZHJlbjspdD1uWzBdO3JldHVybiB0fShpKSxmPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbjtuPXQuY2hpbGRyZW47KXQ9bltuLmxlbmd0aC0xXTtyZXR1cm4gdH0oaSksYz11LngtdCh1LGYpLzIscz1mLngrdChmLHUpLzI7cmV0dXJuIGkuZWFjaEFmdGVyKHI/ZnVuY3Rpb24odCl7dC54PSh0LngtaS54KSpuLHQueT0oaS55LXQueSkqZX06ZnVuY3Rpb24odCl7dC54PSh0LngtYykvKHMtYykqbix0Lnk9KDEtKGkueT90LnkvaS55OjEpKSplfSl9cmV0dXJuIGkuc2VwYXJhdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1uLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0hMSxuPSt0WzBdLGU9K3RbMV0saSk6cj9udWxsOltuLGVdfSxpLm5vZGVTaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEwLG49K3RbMF0sZT0rdFsxXSxpKTpyP1tuLGVdOm51bGx9LGl9LHQuaGllcmFyY2h5PWZsLHQucGFjaz1mdW5jdGlvbigpe3ZhciB0PW51bGwsbj0xLGU9MSxyPUVsO2Z1bmN0aW9uIGkoaSl7cmV0dXJuIGkueD1uLzIsaS55PWUvMix0P2kuZWFjaEJlZm9yZShQbCh0KSkuZWFjaEFmdGVyKHpsKHIsLjUpKS5lYWNoQmVmb3JlKFJsKDEpKTppLmVhY2hCZWZvcmUoUGwoQ2wpKS5lYWNoQWZ0ZXIoemwoRWwsMSkpLmVhY2hBZnRlcih6bChyLGkuci9NYXRoLm1pbihuLGUpKSkuZWFjaEJlZm9yZShSbChNYXRoLm1pbihuLGUpLygyKmkucikpKSxpfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1udWxsPT0oZT1uKT9udWxsOlNsKGUpLGkpOnQ7dmFyIGV9LGkuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rdFswXSxlPSt0WzFdLGkpOltuLGVdfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDprbCgrdCksaSk6cn0saX0sdC5wYWNrU2libGluZ3M9ZnVuY3Rpb24odCl7cmV0dXJuIE5sKHQpLHR9LHQucGFja0VuY2xvc2U9cGwsdC5wYXJ0aXRpb249ZnVuY3Rpb24oKXt2YXIgdD0xLG49MSxlPTAscj0hMTtmdW5jdGlvbiBpKGkpe3ZhciBvPWkuaGVpZ2h0KzE7cmV0dXJuIGkueDA9aS55MD1lLGkueDE9dCxpLnkxPW4vbyxpLmVhY2hCZWZvcmUoZnVuY3Rpb24odCxuKXtyZXR1cm4gZnVuY3Rpb24ocil7ci5jaGlsZHJlbiYmRGwocixyLngwLHQqKHIuZGVwdGgrMSkvbixyLngxLHQqKHIuZGVwdGgrMikvbik7dmFyIGk9ci54MCxvPXIueTAsYT1yLngxLWUsdT1yLnkxLWU7YTxpJiYoaT1hPShpK2EpLzIpLHU8byYmKG89dT0obyt1KS8yKSxyLngwPWksci55MD1vLHIueDE9YSxyLnkxPXV9fShuLG8pKSxyJiZpLmVhY2hCZWZvcmUoTGwpLGl9cmV0dXJuIGkucm91bmQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ISF0LGkpOnJ9LGkuc2l6ZT1mdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rZVswXSxuPStlWzFdLGkpOlt0LG5dfSxpLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3QsaSk6ZX0saX0sdC5zdHJhdGlmeT1mdW5jdGlvbigpe3ZhciB0PVlsLG49Qmw7ZnVuY3Rpb24gZShlKXt2YXIgcixpLG8sYSx1LGYsYyxzPWUubGVuZ3RoLGw9bmV3IEFycmF5KHMpLGg9e307Zm9yKGk9MDtpPHM7KytpKXI9ZVtpXSx1PWxbaV09bmV3IGhsKHIpLG51bGwhPShmPXQocixpLGUpKSYmKGYrPSIiKSYmKGhbYz1VbCsodS5pZD1mKV09YyBpbiBoP09sOnUpO2ZvcihpPTA7aTxzOysraSlpZih1PWxbaV0sbnVsbCE9KGY9bihlW2ldLGksZSkpJiYoZis9IiIpKXtpZighKGE9aFtVbCtmXSkpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nOiAiK2YpO2lmKGE9PT1PbCl0aHJvdyBuZXcgRXJyb3IoImFtYmlndW91czogIitmKTthLmNoaWxkcmVuP2EuY2hpbGRyZW4ucHVzaCh1KTphLmNoaWxkcmVuPVt1XSx1LnBhcmVudD1hfWVsc2V7aWYobyl0aHJvdyBuZXcgRXJyb3IoIm11bHRpcGxlIHJvb3RzIik7bz11fWlmKCFvKXRocm93IG5ldyBFcnJvcigibm8gcm9vdCIpO2lmKG8ucGFyZW50PXFsLG8uZWFjaEJlZm9yZShmdW5jdGlvbih0KXt0LmRlcHRoPXQucGFyZW50LmRlcHRoKzEsLS1zfSkuZWFjaEJlZm9yZShsbCksby5wYXJlbnQ9bnVsbCxzPjApdGhyb3cgbmV3IEVycm9yKCJjeWNsZSIpO3JldHVybiBvfXJldHVybiBlLmlkPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PVNsKG4pLGUpOnR9LGUucGFyZW50SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49U2wodCksZSk6bn0sZX0sdC50cmVlPWZ1bmN0aW9uKCl7dmFyIHQ9Rmwsbj0xLGU9MSxyPW51bGw7ZnVuY3Rpb24gaShpKXt2YXIgZj1mdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyLGksbyxhPW5ldyBHbCh0LDApLHU9W2FdO249dS5wb3AoKTspaWYocj1uLl8uY2hpbGRyZW4pZm9yKG4uY2hpbGRyZW49bmV3IEFycmF5KG89ci5sZW5ndGgpLGk9by0xO2k+PTA7LS1pKXUucHVzaChlPW4uY2hpbGRyZW5baV09bmV3IEdsKHJbaV0saSkpLGUucGFyZW50PW47cmV0dXJuKGEucGFyZW50PW5ldyBHbChudWxsLDApKS5jaGlsZHJlbj1bYV0sYX0oaSk7aWYoZi5lYWNoQWZ0ZXIobyksZi5wYXJlbnQubT0tZi56LGYuZWFjaEJlZm9yZShhKSxyKWkuZWFjaEJlZm9yZSh1KTtlbHNle3ZhciBjPWkscz1pLGw9aTtpLmVhY2hCZWZvcmUoZnVuY3Rpb24odCl7dC54PGMueCYmKGM9dCksdC54PnMueCYmKHM9dCksdC5kZXB0aD5sLmRlcHRoJiYobD10KX0pO3ZhciBoPWM9PT1zPzE6dChjLHMpLzIsZD1oLWMueCxwPW4vKHMueCtoK2QpLHY9ZS8obC5kZXB0aHx8MSk7aS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHQpe3QueD0odC54K2QpKnAsdC55PXQuZGVwdGgqdn0pfXJldHVybiBpfWZ1bmN0aW9uIG8obil7dmFyIGU9bi5jaGlsZHJlbixyPW4ucGFyZW50LmNoaWxkcmVuLGk9bi5pP3Jbbi5pLTFdOm51bGw7aWYoZSl7IWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPTAscj0wLGk9dC5jaGlsZHJlbixvPWkubGVuZ3RoOy0tbz49MDspKG49aVtvXSkueis9ZSxuLm0rPWUsZSs9bi5zKyhyKz1uLmMpfShuKTt2YXIgbz0oZVswXS56K2VbZS5sZW5ndGgtMV0ueikvMjtpPyhuLno9aS56K3Qobi5fLGkuXyksbi5tPW4uei1vKTpuLno9b31lbHNlIGkmJihuLno9aS56K3Qobi5fLGkuXykpO24ucGFyZW50LkE9ZnVuY3Rpb24obixlLHIpe2lmKGUpe2Zvcih2YXIgaSxvPW4sYT1uLHU9ZSxmPW8ucGFyZW50LmNoaWxkcmVuWzBdLGM9by5tLHM9YS5tLGw9dS5tLGg9Zi5tO3U9SGwodSksbz1JbChvKSx1JiZvOylmPUlsKGYpLChhPUhsKGEpKS5hPW4sKGk9dS56K2wtby56LWMrdCh1Ll8sby5fKSk+MCYmKGpsKFhsKHUsbixyKSxuLGkpLGMrPWkscys9aSksbCs9dS5tLGMrPW8ubSxoKz1mLm0scys9YS5tO3UmJiFIbChhKSYmKGEudD11LGEubSs9bC1zKSxvJiYhSWwoZikmJihmLnQ9byxmLm0rPWMtaCxyPW4pfXJldHVybiByfShuLGksbi5wYXJlbnQuQXx8clswXSl9ZnVuY3Rpb24gYSh0KXt0Ll8ueD10LnordC5wYXJlbnQubSx0Lm0rPXQucGFyZW50Lm19ZnVuY3Rpb24gdSh0KXt0LngqPW4sdC55PXQuZGVwdGgqZX1yZXR1cm4gaS5zZXBhcmF0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW4saSk6dH0saS5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSExLG49K3RbMF0sZT0rdFsxXSxpKTpyP251bGw6W24sZV19LGkubm9kZVNpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ITAsbj0rdFswXSxlPSt0WzFdLGkpOnI/W24sZV06bnVsbH0saX0sdC50cmVlbWFwPWZ1bmN0aW9uKCl7dmFyIHQ9Wmwsbj0hMSxlPTEscj0xLGk9WzBdLG89RWwsYT1FbCx1PUVsLGY9RWwsYz1FbDtmdW5jdGlvbiBzKHQpe3JldHVybiB0LngwPXQueTA9MCx0LngxPWUsdC55MT1yLHQuZWFjaEJlZm9yZShsKSxpPVswXSxuJiZ0LmVhY2hCZWZvcmUoTGwpLHR9ZnVuY3Rpb24gbChuKXt2YXIgZT1pW24uZGVwdGhdLHI9bi54MCtlLHM9bi55MCtlLGw9bi54MS1lLGg9bi55MS1lO2w8ciYmKHI9bD0ocitsKS8yKSxoPHMmJihzPWg9KHMraCkvMiksbi54MD1yLG4ueTA9cyxuLngxPWwsbi55MT1oLG4uY2hpbGRyZW4mJihlPWlbbi5kZXB0aCsxXT1vKG4pLzIscis9YyhuKS1lLHMrPWEobiktZSwobC09dShuKS1lKTxyJiYocj1sPShyK2wpLzIpLChoLT1mKG4pLWUpPHMmJihzPWg9KHMraCkvMiksdChuLHIscyxsLGgpKX1yZXR1cm4gcy5yb3VuZD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hIXQscyk6bn0scy5zaXplPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt0WzBdLHI9K3RbMV0scyk6W2Uscl19LHMudGlsZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1TbChuKSxzKTp0fSxzLnBhZGRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/cy5wYWRkaW5nSW5uZXIodCkucGFkZGluZ091dGVyKHQpOnMucGFkZGluZ0lubmVyKCl9LHMucGFkZGluZ0lubmVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2woK3QpLHMpOm99LHMucGFkZGluZ091dGVyPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3MucGFkZGluZ1RvcCh0KS5wYWRkaW5nUmlnaHQodCkucGFkZGluZ0JvdHRvbSh0KS5wYWRkaW5nTGVmdCh0KTpzLnBhZGRpbmdUb3AoKX0scy5wYWRkaW5nVG9wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2woK3QpLHMpOmF9LHMucGFkZGluZ1JpZ2h0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2woK3QpLHMpOnV9LHMucGFkZGluZ0JvdHRvbT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OmtsKCt0KSxzKTpmfSxzLnBhZGRpbmdMZWZ0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6a2woK3QpLHMpOmN9LHN9LHQudHJlZW1hcEJpbmFyeT1mdW5jdGlvbih0LG4sZSxyLGkpe3ZhciBvLGEsdT10LmNoaWxkcmVuLGY9dS5sZW5ndGgsYz1uZXcgQXJyYXkoZisxKTtmb3IoY1swXT1hPW89MDtvPGY7KytvKWNbbysxXT1hKz11W29dLnZhbHVlOyFmdW5jdGlvbiB0KG4sZSxyLGksbyxhLGYpe2lmKG4+PWUtMSl7dmFyIHM9dVtuXTtyZXR1cm4gcy54MD1pLHMueTA9byxzLngxPWEsdm9pZChzLnkxPWYpfWZvcih2YXIgbD1jW25dLGg9ci8yK2wsZD1uKzEscD1lLTE7ZDxwOyl7dmFyIHY9ZCtwPj4+MTtjW3ZdPGg/ZD12KzE6cD12fWgtY1tkLTFdPGNbZF0taCYmbisxPGQmJi0tZDt2YXIgZz1jW2RdLWwseT1yLWc7aWYoYS1pPmYtbyl7dmFyIF89KGkqeSthKmcpL3I7dChuLGQsZyxpLG8sXyxmKSx0KGQsZSx5LF8sbyxhLGYpfWVsc2V7dmFyIGI9KG8qeStmKmcpL3I7dChuLGQsZyxpLG8sYSxiKSx0KGQsZSx5LGksYixhLGYpfX0oMCxmLHQudmFsdWUsbixlLHIsaSl9LHQudHJlZW1hcERpY2U9RGwsdC50cmVlbWFwU2xpY2U9VmwsdC50cmVlbWFwU2xpY2VEaWNlPWZ1bmN0aW9uKHQsbixlLHIsaSl7KDEmdC5kZXB0aD9WbDpEbCkodCxuLGUscixpKX0sdC50cmVlbWFwU3F1YXJpZnk9WmwsdC50cmVlbWFwUmVzcXVhcmlmeT1RbCx0LmludGVycG9sYXRlPW1lLHQuaW50ZXJwb2xhdGVBcnJheT1kZSx0LmludGVycG9sYXRlQmFzaXM9ZWUsdC5pbnRlcnBvbGF0ZUJhc2lzQ2xvc2VkPXJlLHQuaW50ZXJwb2xhdGVEYXRlPXBlLHQuaW50ZXJwb2xhdGVEaXNjcmV0ZT1mdW5jdGlvbih0KXt2YXIgbj10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihuLTEsTWF0aC5mbG9vcihlKm4pKSldfX0sdC5pbnRlcnBvbGF0ZUh1ZT1mdW5jdGlvbih0LG4pe3ZhciBlPWFlKCt0LCtuKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49ZSh0KTtyZXR1cm4gbi0zNjAqTWF0aC5mbG9vcihuLzM2MCl9fSx0LmludGVycG9sYXRlTnVtYmVyPXZlLHQuaW50ZXJwb2xhdGVPYmplY3Q9Z2UsdC5pbnRlcnBvbGF0ZVJvdW5kPXhlLHQuaW50ZXJwb2xhdGVTdHJpbmc9YmUsdC5pbnRlcnBvbGF0ZVRyYW5zZm9ybUNzcz1DZSx0LmludGVycG9sYXRlVHJhbnNmb3JtU3ZnPVBlLHQuaW50ZXJwb2xhdGVab29tPXFlLHQuaW50ZXJwb2xhdGVSZ2I9Y2UsdC5pbnRlcnBvbGF0ZVJnYkJhc2lzPWxlLHQuaW50ZXJwb2xhdGVSZ2JCYXNpc0Nsb3NlZD1oZSx0LmludGVycG9sYXRlSHNsPVllLHQuaW50ZXJwb2xhdGVIc2xMb25nPUJlLHQuaW50ZXJwb2xhdGVMYWI9ZnVuY3Rpb24odCxuKXt2YXIgZT1mZSgodD1Vbih0KSkubCwobj1VbihuKSkubCkscj1mZSh0LmEsbi5hKSxpPWZlKHQuYixuLmIpLG89ZmUodC5vcGFjaXR5LG4ub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmw9ZShuKSx0LmE9cihuKSx0LmI9aShuKSx0Lm9wYWNpdHk9byhuKSx0KyIifX0sdC5pbnRlcnBvbGF0ZUhjbD1JZSx0LmludGVycG9sYXRlSGNsTG9uZz1IZSx0LmludGVycG9sYXRlQ3ViZWhlbGl4PVhlLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXhMb25nPUdlLHQucGllY2V3aXNlPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPTAscj1uLmxlbmd0aC0xLGk9blswXSxvPW5ldyBBcnJheShyPDA/MDpyKTtlPHI7KW9bZV09dChpLGk9blsrK2VdKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49TWF0aC5tYXgoMCxNYXRoLm1pbihyLTEsTWF0aC5mbG9vcih0Kj1yKSkpO3JldHVybiBvW25dKHQtbil9fSx0LnF1YW50aXplPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPW5ldyBBcnJheShuKSxyPTA7cjxuOysrcillW3JdPXQoci8obi0xKSk7cmV0dXJuIGV9LHQucGF0aD1HaSx0LnBvbHlnb25BcmVhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPS0xLHI9dC5sZW5ndGgsaT10W3ItMV0sbz0wOysrZTxyOyluPWksaT10W2VdLG8rPW5bMV0qaVswXS1uWzBdKmlbMV07cmV0dXJuIG8vMn0sdC5wb2x5Z29uQ2VudHJvaWQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGUscj0tMSxpPXQubGVuZ3RoLG89MCxhPTAsdT10W2ktMV0sZj0wOysrcjxpOyluPXUsdT10W3JdLGYrPWU9blswXSp1WzFdLXVbMF0qblsxXSxvKz0oblswXSt1WzBdKSplLGErPShuWzFdK3VbMV0pKmU7cmV0dXJuW28vKGYqPTMpLGEvZl19LHQucG9seWdvbkh1bGw9ZnVuY3Rpb24odCl7aWYoKGU9dC5sZW5ndGgpPDMpcmV0dXJuIG51bGw7dmFyIG4sZSxyPW5ldyBBcnJheShlKSxpPW5ldyBBcnJheShlKTtmb3Iobj0wO248ZTsrK24pcltuXT1bK3Rbbl1bMF0sK3Rbbl1bMV0sbl07Zm9yKHIuc29ydChKbCksbj0wO248ZTsrK24paVtuXT1bcltuXVswXSwtcltuXVsxXV07dmFyIG89S2wociksYT1LbChpKSx1PWFbMF09PT1vWzBdLGY9YVthLmxlbmd0aC0xXT09PW9bby5sZW5ndGgtMV0sYz1bXTtmb3Iobj1vLmxlbmd0aC0xO24+PTA7LS1uKWMucHVzaCh0W3Jbb1tuXV1bMl1dKTtmb3Iobj0rdTtuPGEubGVuZ3RoLWY7KytuKWMucHVzaCh0W3JbYVtuXV1bMl1dKTtyZXR1cm4gY30sdC5wb2x5Z29uQ29udGFpbnM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGUscixpPXQubGVuZ3RoLG89dFtpLTFdLGE9blswXSx1PW5bMV0sZj1vWzBdLGM9b1sxXSxzPSExLGw9MDtsPGk7KytsKWU9KG89dFtsXSlbMF0sKHI9b1sxXSk+dSE9Yz51JiZhPChmLWUpKih1LXIpLyhjLXIpK2UmJihzPSFzKSxmPWUsYz1yO3JldHVybiBzfSx0LnBvbHlnb25MZW5ndGg9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGUscj0tMSxpPXQubGVuZ3RoLG89dFtpLTFdLGE9b1swXSx1PW9bMV0sZj0wOysrcjxpOyluPWEsZT11LG4tPWE9KG89dFtyXSlbMF0sZS09dT1vWzFdLGYrPU1hdGguc3FydChuKm4rZSplKTtyZXR1cm4gZn0sdC5xdWFkdHJlZT1yYSx0LnJhbmRvbVVuaWZvcm09bmgsdC5yYW5kb21Ob3JtYWw9ZWgsdC5yYW5kb21Mb2dOb3JtYWw9cmgsdC5yYW5kb21CYXRlcz1vaCx0LnJhbmRvbUlyd2luSGFsbD1paCx0LnJhbmRvbUV4cG9uZW50aWFsPWFoLHQuc2NhbGVCYW5kPWhoLHQuc2NhbGVQb2ludD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB0KG4pe3ZhciBlPW4uY29weTtyZXR1cm4gbi5wYWRkaW5nPW4ucGFkZGluZ091dGVyLGRlbGV0ZSBuLnBhZGRpbmdJbm5lcixkZWxldGUgbi5wYWRkaW5nT3V0ZXIsbi5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoZSgpKX0sbn0oaGgoKS5wYWRkaW5nSW5uZXIoMSkpfSx0LnNjYWxlSWRlbnRpdHk9ZnVuY3Rpb24gdCgpe3ZhciBuPVswLDFdO2Z1bmN0aW9uIGUodCl7cmV0dXJuK3R9cmV0dXJuIGUuaW52ZXJ0PWUsZS5kb21haW49ZS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1maC5jYWxsKHQscGgpLGUpOm4uc2xpY2UoKX0sZS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4obil9LHhoKGUpfSx0LnNjYWxlTGluZWFyPWZ1bmN0aW9uIHQoKXt2YXIgbj1taChnaCx2ZSk7cmV0dXJuIG4uY29weT1mdW5jdGlvbigpe3JldHVybiBiaChuLHQoKSl9LHhoKG4pfSx0LnNjYWxlTG9nPWZ1bmN0aW9uIG4oKXt2YXIgZT1taChNaCxBaCkuZG9tYWluKFsxLDEwXSkscj1lLmRvbWFpbixpPTEwLG89U2goMTApLGE9TmgoMTApO2Z1bmN0aW9uIHUoKXtyZXR1cm4gbz1TaChpKSxhPU5oKGkpLHIoKVswXTwwJiYobz1FaChvKSxhPUVoKGEpKSxlfXJldHVybiBlLmJhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9K3QsdSgpKTppfSxlLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocih0KSx1KCkpOnIoKX0sZS50aWNrcz1mdW5jdGlvbih0KXt2YXIgbixlPXIoKSx1PWVbMF0sZj1lW2UubGVuZ3RoLTFdOyhuPWY8dSkmJihoPXUsdT1mLGY9aCk7dmFyIGMscyxsLGg9byh1KSxkPW8oZikscD1udWxsPT10PzEwOit0LHY9W107aWYoIShpJTEpJiZkLWg8cCl7aWYoaD1NYXRoLnJvdW5kKGgpLTEsZD1NYXRoLnJvdW5kKGQpKzEsdT4wKXtmb3IoO2g8ZDsrK2gpZm9yKHM9MSxjPWEoaCk7czxpOysrcylpZighKChsPWMqcyk8dSkpe2lmKGw+ZilicmVhazt2LnB1c2gobCl9fWVsc2UgZm9yKDtoPGQ7KytoKWZvcihzPWktMSxjPWEoaCk7cz49MTstLXMpaWYoISgobD1jKnMpPHUpKXtpZihsPmYpYnJlYWs7di5wdXNoKGwpfX1lbHNlIHY9bShoLGQsTWF0aC5taW4oZC1oLHApKS5tYXAoYSk7cmV0dXJuIG4/di5yZXZlcnNlKCk6dn0sZS50aWNrRm9ybWF0PWZ1bmN0aW9uKG4scil7aWYobnVsbD09ciYmKHI9MTA9PT1pPyIuMGUiOiIsIiksImZ1bmN0aW9uIiE9dHlwZW9mIHImJihyPXQuZm9ybWF0KHIpKSxuPT09MS8wKXJldHVybiByO251bGw9PW4mJihuPTEwKTt2YXIgdT1NYXRoLm1heCgxLGkqbi9lLnRpY2tzKCkubGVuZ3RoKTtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49dC9hKE1hdGgucm91bmQobyh0KSkpO3JldHVybiBuKmk8aS0uNSYmKG4qPWkpLG48PXU/cih0KToiIn19LGUubmljZT1mdW5jdGlvbigpe3JldHVybiByKHdoKHIoKSx7Zmxvb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGEoTWF0aC5mbG9vcihvKHQpKSl9LGNlaWw6ZnVuY3Rpb24odCl7cmV0dXJuIGEoTWF0aC5jZWlsKG8odCkpKX19KSl9LGUuY29weT1mdW5jdGlvbigpe3JldHVybiBiaChlLG4oKS5iYXNlKGkpKX0sZX0sdC5zY2FsZU9yZGluYWw9bGgsdC5zY2FsZUltcGxpY2l0PXNoLHQuc2NhbGVQb3c9Q2gsdC5zY2FsZVNxcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gQ2goKS5leHBvbmVudCguNSl9LHQuc2NhbGVRdWFudGlsZT1mdW5jdGlvbiB0KCl7dmFyIGU9W10scj1bXSxvPVtdO2Z1bmN0aW9uIGEoKXt2YXIgdD0wLG49TWF0aC5tYXgoMSxyLmxlbmd0aCk7Zm9yKG89bmV3IEFycmF5KG4tMSk7Kyt0PG47KW9bdC0xXT1BKGUsdC9uKTtyZXR1cm4gdX1mdW5jdGlvbiB1KHQpe2lmKCFpc05hTih0PSt0KSlyZXR1cm4gcltpKG8sdCldfXJldHVybiB1LmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgbj1yLmluZGV4T2YodCk7cmV0dXJuIG48MD9bTmFOLE5hTl06W24+MD9vW24tMV06ZVswXSxuPG8ubGVuZ3RoP29bbl06ZVtlLmxlbmd0aC0xXV19LHUuZG9tYWluPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBlLnNsaWNlKCk7ZT1bXTtmb3IodmFyIHIsaT0wLG89dC5sZW5ndGg7aTxvOysraSludWxsPT0ocj10W2ldKXx8aXNOYU4ocj0rcil8fGUucHVzaChyKTtyZXR1cm4gZS5zb3J0KG4pLGEoKX0sdS5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1jaC5jYWxsKHQpLGEoKSk6ci5zbGljZSgpfSx1LnF1YW50aWxlcz1mdW5jdGlvbigpe3JldHVybiBvLnNsaWNlKCl9LHUuY29weT1mdW5jdGlvbigpe3JldHVybiB0KCkuZG9tYWluKGUpLnJhbmdlKHIpfSx1fSx0LnNjYWxlUXVhbnRpemU9ZnVuY3Rpb24gdCgpe3ZhciBuPTAsZT0xLHI9MSxvPVsuNV0sYT1bMCwxXTtmdW5jdGlvbiB1KHQpe2lmKHQ8PXQpcmV0dXJuIGFbaShvLHQsMCxyKV19ZnVuY3Rpb24gZigpe3ZhciB0PS0xO2ZvcihvPW5ldyBBcnJheShyKTsrK3Q8cjspb1t0XT0oKHQrMSkqZS0odC1yKSpuKS8ocisxKTtyZXR1cm4gdX1yZXR1cm4gdS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K3RbMF0sZT0rdFsxXSxmKCkpOltuLGVdfSx1LnJhbmdlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPShhPWNoLmNhbGwodCkpLmxlbmd0aC0xLGYoKSk6YS5zbGljZSgpfSx1LmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgaT1hLmluZGV4T2YodCk7cmV0dXJuIGk8MD9bTmFOLE5hTl06aTwxP1tuLG9bMF1dOmk+PXI/W29bci0xXSxlXTpbb1tpLTFdLG9baV1dfSx1LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpLmRvbWFpbihbbixlXSkucmFuZ2UoYSl9LHhoKHUpfSx0LnNjYWxlVGhyZXNob2xkPWZ1bmN0aW9uIHQoKXt2YXIgbj1bLjVdLGU9WzAsMV0scj0xO2Z1bmN0aW9uIG8odCl7aWYodDw9dClyZXR1cm4gZVtpKG4sdCwwLHIpXX1yZXR1cm4gby5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49Y2guY2FsbCh0KSxyPU1hdGgubWluKG4ubGVuZ3RoLGUubGVuZ3RoLTEpLG8pOm4uc2xpY2UoKX0sby5yYW5nZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1jaC5jYWxsKHQpLHI9TWF0aC5taW4obi5sZW5ndGgsZS5sZW5ndGgtMSksbyk6ZS5zbGljZSgpfSxvLmludmVydEV4dGVudD1mdW5jdGlvbih0KXt2YXIgcj1lLmluZGV4T2YodCk7cmV0dXJuW25bci0xXSxuW3JdXX0sby5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQoKS5kb21haW4obikucmFuZ2UoZSl9LG99LHQuc2NhbGVUaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIGN2KGNkLHVkLFZoLGpoLEloLEJoLE9oLExoLHQudGltZUZvcm1hdCkuZG9tYWluKFtuZXcgRGF0ZSgyZTMsMCwxKSxuZXcgRGF0ZSgyZTMsMCwyKV0pfSx0LnNjYWxlVXRjPWZ1bmN0aW9uKCl7cmV0dXJuIGN2KExkLHpkLF9kLHZkLGRkLGxkLE9oLExoLHQudXRjRm9ybWF0KS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSl9LHQuc2NhbGVTZXF1ZW50aWFsPWZ1bmN0aW9uIHQobil7dmFyIGU9MCxyPTEsaT0xLG89ITE7ZnVuY3Rpb24gYSh0KXt2YXIgcj0odC1lKSppO3JldHVybiBuKG8/TWF0aC5tYXgoMCxNYXRoLm1pbigxLHIpKTpyKX1yZXR1cm4gYS5kb21haW49ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K3RbMF0scj0rdFsxXSxpPWU9PT1yPzA6MS8oci1lKSxhKTpbZSxyXX0sYS5jbGFtcD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0hIXQsYSk6b30sYS5pbnRlcnBvbGF0b3I9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49dCxhKTpufSxhLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gdChuKS5kb21haW4oW2Uscl0pLmNsYW1wKG8pfSx4aChhKX0sdC5zY2FsZURpdmVyZ2luZz1mdW5jdGlvbiB0KG4pe3ZhciBlPTAscj0uNSxpPTEsbz0xLGE9MSx1PSExO2Z1bmN0aW9uIGYodCl7dmFyIGU9LjUrKCh0PSt0KS1yKSoodDxyP286YSk7cmV0dXJuIG4odT9NYXRoLm1heCgwLE1hdGgubWluKDEsZSkpOmUpfXJldHVybiBmLmRvbWFpbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rdFswXSxyPSt0WzFdLGk9K3RbMl0sbz1lPT09cj8wOi41LyhyLWUpLGE9cj09PWk/MDouNS8oaS1yKSxmKTpbZSxyLGldfSxmLmNsYW1wPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSEhdCxmKTp1fSxmLmludGVycG9sYXRvcj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10LGYpOm59LGYuY29weT1mdW5jdGlvbigpe3JldHVybiB0KG4pLmRvbWFpbihbZSxyLGldKS5jbGFtcCh1KX0seGgoZil9LHQuc2NoZW1lQ2F0ZWdvcnkxMD1sdix0LnNjaGVtZUFjY2VudD1odix0LnNjaGVtZURhcmsyPWR2LHQuc2NoZW1lUGFpcmVkPXB2LHQuc2NoZW1lUGFzdGVsMT12dix0LnNjaGVtZVBhc3RlbDI9Z3YsdC5zY2hlbWVTZXQxPXl2LHQuc2NoZW1lU2V0Mj1fdix0LnNjaGVtZVNldDM9YnYsdC5pbnRlcnBvbGF0ZUJyQkc9d3YsdC5zY2hlbWVCckJHPXh2LHQuaW50ZXJwb2xhdGVQUkduPUF2LHQuc2NoZW1lUFJHbj1Ndix0LmludGVycG9sYXRlUGlZRz1Odix0LnNjaGVtZVBpWUc9VHYsdC5pbnRlcnBvbGF0ZVB1T3I9RXYsdC5zY2hlbWVQdU9yPVN2LHQuaW50ZXJwb2xhdGVSZEJ1PUN2LHQuc2NoZW1lUmRCdT1rdix0LmludGVycG9sYXRlUmRHeT16dix0LnNjaGVtZVJkR3k9UHYsdC5pbnRlcnBvbGF0ZVJkWWxCdT1Mdix0LnNjaGVtZVJkWWxCdT1Sdix0LmludGVycG9sYXRlUmRZbEduPVV2LHQuc2NoZW1lUmRZbEduPUR2LHQuaW50ZXJwb2xhdGVTcGVjdHJhbD1Pdix0LnNjaGVtZVNwZWN0cmFsPXF2LHQuaW50ZXJwb2xhdGVCdUduPUJ2LHQuc2NoZW1lQnVHbj1Zdix0LmludGVycG9sYXRlQnVQdT1Jdix0LnNjaGVtZUJ1UHU9RnYsdC5pbnRlcnBvbGF0ZUduQnU9anYsdC5zY2hlbWVHbkJ1PUh2LHQuaW50ZXJwb2xhdGVPclJkPUd2LHQuc2NoZW1lT3JSZD1Ydix0LmludGVycG9sYXRlUHVCdUduPSR2LHQuc2NoZW1lUHVCdUduPVZ2LHQuaW50ZXJwb2xhdGVQdUJ1PVp2LHQuc2NoZW1lUHVCdT1Xdix0LmludGVycG9sYXRlUHVSZD1Kdix0LnNjaGVtZVB1UmQ9UXYsdC5pbnRlcnBvbGF0ZVJkUHU9dGcsdC5zY2hlbWVSZFB1PUt2LHQuaW50ZXJwb2xhdGVZbEduQnU9ZWcsdC5zY2hlbWVZbEduQnU9bmcsdC5pbnRlcnBvbGF0ZVlsR249aWcsdC5zY2hlbWVZbEduPXJnLHQuaW50ZXJwb2xhdGVZbE9yQnI9YWcsdC5zY2hlbWVZbE9yQnI9b2csdC5pbnRlcnBvbGF0ZVlsT3JSZD1mZyx0LnNjaGVtZVlsT3JSZD11Zyx0LmludGVycG9sYXRlQmx1ZXM9c2csdC5zY2hlbWVCbHVlcz1jZyx0LmludGVycG9sYXRlR3JlZW5zPWhnLHQuc2NoZW1lR3JlZW5zPWxnLHQuaW50ZXJwb2xhdGVHcmV5cz1wZyx0LnNjaGVtZUdyZXlzPWRnLHQuaW50ZXJwb2xhdGVQdXJwbGVzPWdnLHQuc2NoZW1lUHVycGxlcz12Zyx0LmludGVycG9sYXRlUmVkcz1fZyx0LnNjaGVtZVJlZHM9eWcsdC5pbnRlcnBvbGF0ZU9yYW5nZXM9bWcsdC5zY2hlbWVPcmFuZ2VzPWJnLHQuaW50ZXJwb2xhdGVDdWJlaGVsaXhEZWZhdWx0PXhnLHQuaW50ZXJwb2xhdGVSYWluYm93PWZ1bmN0aW9uKHQpeyh0PDB8fHQ+MSkmJih0LT1NYXRoLmZsb29yKHQpKTt2YXIgbj1NYXRoLmFicyh0LS41KTtyZXR1cm4gQWcuaD0zNjAqdC0xMDAsQWcucz0xLjUtMS41Km4sQWcubD0uOC0uOSpuLEFnKyIifSx0LmludGVycG9sYXRlV2FybT13Zyx0LmludGVycG9sYXRlQ29vbD1NZyx0LmludGVycG9sYXRlU2luZWJvdz1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gdD0oLjUtdCkqTWF0aC5QSSxUZy5yPTI1NSoobj1NYXRoLnNpbih0KSkqbixUZy5nPTI1NSoobj1NYXRoLnNpbih0K05nKSkqbixUZy5iPTI1NSoobj1NYXRoLnNpbih0K1NnKSkqbixUZysiIn0sdC5pbnRlcnBvbGF0ZVZpcmlkaXM9a2csdC5pbnRlcnBvbGF0ZU1hZ21hPUNnLHQuaW50ZXJwb2xhdGVJbmZlcm5vPVBnLHQuaW50ZXJwb2xhdGVQbGFzbWE9emcsdC5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIER0KFcodCkuY2FsbChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKX0sdC5jcmVhdG9yPVcsdC5sb2NhbD1xdCx0Lm1hdGNoZXI9cnQsdC5tb3VzZT1GdCx0Lm5hbWVzcGFjZT0kLHQubmFtZXNwYWNlcz1WLHQuY2xpZW50UG9pbnQ9QnQsdC5zZWxlY3Q9RHQsdC5zZWxlY3RBbGw9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P25ldyBSdChbZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyBSdChbbnVsbD09dD9bXTp0XSx6dCl9LHQuc2VsZWN0aW9uPUx0LHQuc2VsZWN0b3I9USx0LnNlbGVjdG9yQWxsPUssdC5zdHlsZT1sdCx0LnRvdWNoPUl0LHQudG91Y2hlcz1mdW5jdGlvbih0LG4pe251bGw9PW4mJihuPVl0KCkudG91Y2hlcyk7Zm9yKHZhciBlPTAscj1uP24ubGVuZ3RoOjAsaT1uZXcgQXJyYXkocik7ZTxyOysrZSlpW2VdPUJ0KHQsbltlXSk7cmV0dXJuIGl9LHQud2luZG93PXN0LHQuY3VzdG9tRXZlbnQ9Q3QsdC5hcmM9ZnVuY3Rpb24oKXt2YXIgdD1HZyxuPVZnLGU9UmcoMCkscj1udWxsLGk9JGcsbz1XZyxhPVpnLHU9bnVsbDtmdW5jdGlvbiBmKCl7dmFyIGYsYyxzLGw9K3QuYXBwbHkodGhpcyxhcmd1bWVudHMpLGg9K24uYXBwbHkodGhpcyxhcmd1bWVudHMpLGQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyktSGcscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1IZyx2PUxnKHAtZCksZz1wPmQ7aWYodXx8KHU9Zj1HaSgpKSxoPGwmJihjPWgsaD1sLGw9YyksaD5GZylpZih2PmpnLUZnKXUubW92ZVRvKGgqVWcoZCksaCpZZyhkKSksdS5hcmMoMCwwLGgsZCxwLCFnKSxsPkZnJiYodS5tb3ZlVG8obCpVZyhwKSxsKllnKHApKSx1LmFyYygwLDAsbCxwLGQsZykpO2Vsc2V7dmFyIHksXyxiPWQsbT1wLHg9ZCx3PXAsTT12LEE9dixUPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLzIsTj1UPkZnJiYocj8rci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6QmcobCpsK2gqaCkpLFM9T2coTGcoaC1sKS8yLCtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSksRT1TLGs9UztpZihOPkZnKXt2YXIgQz1YZyhOL2wqWWcoVCkpLFA9WGcoTi9oKllnKFQpKTsoTS09MipDKT5GZz8oeCs9Qyo9Zz8xOi0xLHctPUMpOihNPTAseD13PShkK3ApLzIpLChBLT0yKlApPkZnPyhiKz1QKj1nPzE6LTEsbS09UCk6KEE9MCxiPW09KGQrcCkvMil9dmFyIHo9aCpVZyhiKSxSPWgqWWcoYiksTD1sKlVnKHcpLEQ9bCpZZyh3KTtpZihTPkZnKXt2YXIgVT1oKlVnKG0pLHE9aCpZZyhtKSxPPWwqVWcoeCksWT1sKllnKHgpO2lmKHY8SWcpe3ZhciBCPU0+Rmc/ZnVuY3Rpb24odCxuLGUscixpLG8sYSx1KXt2YXIgZj1lLXQsYz1yLW4scz1hLWksbD11LW8saD0ocyoobi1vKS1sKih0LWkpKS8obCpmLXMqYyk7cmV0dXJuW3QraCpmLG4raCpjXX0oeixSLE8sWSxVLHEsTCxEKTpbTCxEXSxGPXotQlswXSxJPVItQlsxXSxIPVUtQlswXSxqPXEtQlsxXSxYPTEvWWcoKChzPShGKkgrSSpqKS8oQmcoRipGK0kqSSkqQmcoSCpIK2oqaikpKT4xPzA6czwtMT9JZzpNYXRoLmFjb3MocykpLzIpLEc9QmcoQlswXSpCWzBdK0JbMV0qQlsxXSk7RT1PZyhTLChsLUcpLyhYLTEpKSxrPU9nKFMsKGgtRykvKFgrMSkpfX1BPkZnP2s+Rmc/KHk9UWcoTyxZLHosUixoLGssZyksXz1RZyhVLHEsTCxELGgsayxnKSx1Lm1vdmVUbyh5LmN4K3kueDAxLHkuY3kreS55MDEpLGs8Uz91LmFyYyh5LmN4LHkuY3ksayxEZyh5LnkwMSx5LngwMSksRGcoXy55MDEsXy54MDEpLCFnKToodS5hcmMoeS5jeCx5LmN5LGssRGcoeS55MDEseS54MDEpLERnKHkueTExLHkueDExKSwhZyksdS5hcmMoMCwwLGgsRGcoeS5jeSt5LnkxMSx5LmN4K3kueDExKSxEZyhfLmN5K18ueTExLF8uY3grXy54MTEpLCFnKSx1LmFyYyhfLmN4LF8uY3ksayxEZyhfLnkxMSxfLngxMSksRGcoXy55MDEsXy54MDEpLCFnKSkpOih1Lm1vdmVUbyh6LFIpLHUuYXJjKDAsMCxoLGIsbSwhZykpOnUubW92ZVRvKHosUiksbD5GZyYmTT5GZz9FPkZnPyh5PVFnKEwsRCxVLHEsbCwtRSxnKSxfPVFnKHosUixPLFksbCwtRSxnKSx1LmxpbmVUbyh5LmN4K3kueDAxLHkuY3kreS55MDEpLEU8Uz91LmFyYyh5LmN4LHkuY3ksRSxEZyh5LnkwMSx5LngwMSksRGcoXy55MDEsXy54MDEpLCFnKToodS5hcmMoeS5jeCx5LmN5LEUsRGcoeS55MDEseS54MDEpLERnKHkueTExLHkueDExKSwhZyksdS5hcmMoMCwwLGwsRGcoeS5jeSt5LnkxMSx5LmN4K3kueDExKSxEZyhfLmN5K18ueTExLF8uY3grXy54MTEpLGcpLHUuYXJjKF8uY3gsXy5jeSxFLERnKF8ueTExLF8ueDExKSxEZyhfLnkwMSxfLngwMSksIWcpKSk6dS5hcmMoMCwwLGwsdyx4LGcpOnUubGluZVRvKEwsRCl9ZWxzZSB1Lm1vdmVUbygwLDApO2lmKHUuY2xvc2VQYXRoKCksZilyZXR1cm4gdT1udWxsLGYrIiJ8fG51bGx9cmV0dXJuIGYuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgZT0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIscj0oK2kuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArby5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItSWcvMjtyZXR1cm5bVWcocikqZSxZZyhyKSplXX0sZi5pbm5lclJhZGl1cz1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlJnKCtuKSxmKTp0fSxmLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGYpOm59LGYuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGYpOmV9LGYucGFkUmFkaXVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW51bGw9PXQ/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxmKTpyfSxmLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpSZygrdCksZik6aX0sZi5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxmKTpvfSxmLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGYpOmF9LGYuY29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1udWxsPT10P251bGw6dCxmKTp1fSxmfSx0LmFyZWE9cnksdC5saW5lPWV5LHQucGllPWZ1bmN0aW9uKCl7dmFyIHQ9b3ksbj1peSxlPW51bGwscj1SZygwKSxpPVJnKGpnKSxvPVJnKDApO2Z1bmN0aW9uIGEoYSl7dmFyIHUsZixjLHMsbCxoPWEubGVuZ3RoLGQ9MCxwPW5ldyBBcnJheShoKSx2PW5ldyBBcnJheShoKSxnPStyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx5PU1hdGgubWluKGpnLE1hdGgubWF4KC1qZyxpLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1nKSksXz1NYXRoLm1pbihNYXRoLmFicyh5KS9oLG8uYXBwbHkodGhpcyxhcmd1bWVudHMpKSxiPV8qKHk8MD8tMToxKTtmb3IodT0wO3U8aDsrK3UpKGw9dltwW3VdPXVdPSt0KGFbdV0sdSxhKSk+MCYmKGQrPWwpO2ZvcihudWxsIT1uP3Auc29ydChmdW5jdGlvbih0LGUpe3JldHVybiBuKHZbdF0sdltlXSl9KTpudWxsIT1lJiZwLnNvcnQoZnVuY3Rpb24odCxuKXtyZXR1cm4gZShhW3RdLGFbbl0pfSksdT0wLGM9ZD8oeS1oKmIpL2Q6MDt1PGg7Kyt1LGc9cylmPXBbdV0scz1nKygobD12W2ZdKT4wP2wqYzowKStiLHZbZl09e2RhdGE6YVtmXSxpbmRleDp1LHZhbHVlOmwsc3RhcnRBbmdsZTpnLGVuZEFuZ2xlOnMscGFkQW5nbGU6X307cmV0dXJuIHZ9cmV0dXJuIGEudmFsdWU9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpSZygrbiksYSk6dH0sYS5zb3J0VmFsdWVzPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXQsZT1udWxsLGEpOm59LGEuc29ydD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10LG49bnVsbCxhKTplfSxhLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpSZygrdCksYSk6cn0sYS5lbmRBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxhKTppfSxhLnBhZEFuZ2xlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGEpOm99LGF9LHQuYXJlYVJhZGlhbD1seSx0LnJhZGlhbEFyZWE9bHksdC5saW5lUmFkaWFsPXN5LHQucmFkaWFsTGluZT1zeSx0LnBvaW50UmFkaWFsPWh5LHQubGlua0hvcml6b250YWw9ZnVuY3Rpb24oKXtyZXR1cm4gZ3koeXkpfSx0LmxpbmtWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiBneShfeSl9LHQubGlua1JhZGlhbD1mdW5jdGlvbigpe3ZhciB0PWd5KGJ5KTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnJhZGl1cz10LnksZGVsZXRlIHQueSx0fSx0LnN5bWJvbD1mdW5jdGlvbigpe3ZhciB0PVJnKG15KSxuPVJnKDY0KSxlPW51bGw7ZnVuY3Rpb24gcigpe3ZhciByO2lmKGV8fChlPXI9R2koKSksdC5hcHBseSh0aGlzLGFyZ3VtZW50cykuZHJhdyhlLCtuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkscilyZXR1cm4gZT1udWxsLHIrIiJ8fG51bGx9cmV0dXJuIHIudHlwZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOlJnKG4pLHIpOnR9LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0iZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKCt0KSxyKTpufSxyLmNvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOnQscik6ZX0scn0sdC5zeW1ib2xzPVV5LHQuc3ltYm9sQ2lyY2xlPW15LHQuc3ltYm9sQ3Jvc3M9eHksdC5zeW1ib2xEaWFtb25kPUF5LHQuc3ltYm9sU3F1YXJlPWt5LHQuc3ltYm9sU3Rhcj1FeSx0LnN5bWJvbFRyaWFuZ2xlPVB5LHQuc3ltYm9sV3llPUR5LHQuY3VydmVCYXNpc0Nsb3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEJ5KHQpfSx0LmN1cnZlQmFzaXNPcGVuPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRnkodCl9LHQuY3VydmVCYXNpcz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFl5KHQpfSx0LmN1cnZlQnVuZGxlPUh5LHQuY3VydmVDYXJkaW5hbENsb3NlZD0keSx0LmN1cnZlQ2FyZGluYWxPcGVuPVp5LHQuY3VydmVDYXJkaW5hbD1HeSx0LmN1cnZlQ2F0bXVsbFJvbUNsb3NlZD1uXyx0LmN1cnZlQ2F0bXVsbFJvbU9wZW49cl8sdC5jdXJ2ZUNhdG11bGxSb209S3ksdC5jdXJ2ZUxpbmVhckNsb3NlZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGlfKHQpfSx0LmN1cnZlTGluZWFyPUtnLHQuY3VydmVNb25vdG9uZVg9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBjXyh0KX0sdC5jdXJ2ZU1vbm90b25lWT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHNfKHQpfSx0LmN1cnZlTmF0dXJhbD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IGhfKHQpfSx0LmN1cnZlU3RlcD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHBfKHQsLjUpfSx0LmN1cnZlU3RlcEFmdGVyPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcF8odCwxKX0sdC5jdXJ2ZVN0ZXBCZWZvcmU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBwXyh0LDApfSx0LnN0YWNrPWZ1bmN0aW9uKCl7dmFyIHQ9UmcoW10pLG49Z18sZT12XyxyPXlfO2Z1bmN0aW9uIGkoaSl7dmFyIG8sYSx1PXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGY9aS5sZW5ndGgsYz11Lmxlbmd0aCxzPW5ldyBBcnJheShjKTtmb3Iobz0wO288YzsrK28pe2Zvcih2YXIgbCxoPXVbb10sZD1zW29dPW5ldyBBcnJheShmKSxwPTA7cDxmOysrcClkW3BdPWw9WzAsK3IoaVtwXSxoLHAsaSldLGwuZGF0YT1pW3BdO2Qua2V5PWh9Zm9yKG89MCxhPW4ocyk7bzxjOysrbylzW2Fbb11dLmluZGV4PW87cmV0dXJuIGUocyxhKSxzfXJldHVybiBpLmtleXM9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bjpSZyhkeS5jYWxsKG4pKSxpKTp0fSxpLnZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6UmcoK3QpLGkpOnJ9LGkub3JkZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49bnVsbD09dD9nXzoiZnVuY3Rpb24iPT10eXBlb2YgdD90OlJnKGR5LmNhbGwodCkpLGkpOm59LGkub2Zmc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW51bGw9PXQ/dl86dCxpKTplfSxpfSx0LnN0YWNrT2Zmc2V0RXhwYW5kPWZ1bmN0aW9uKHQsbil7aWYoKHI9dC5sZW5ndGgpPjApe2Zvcih2YXIgZSxyLGksbz0wLGE9dFswXS5sZW5ndGg7bzxhOysrbyl7Zm9yKGk9ZT0wO2U8cjsrK2UpaSs9dFtlXVtvXVsxXXx8MDtpZihpKWZvcihlPTA7ZTxyOysrZSl0W2VdW29dWzFdLz1pfXZfKHQsbil9fSx0LnN0YWNrT2Zmc2V0RGl2ZXJnaW5nPWZ1bmN0aW9uKHQsbil7aWYoKHU9dC5sZW5ndGgpPjEpZm9yKHZhciBlLHIsaSxvLGEsdSxmPTAsYz10W25bMF1dLmxlbmd0aDtmPGM7KytmKWZvcihvPWE9MCxlPTA7ZTx1OysrZSkoaT0ocj10W25bZV1dW2ZdKVsxXS1yWzBdKT49MD8oclswXT1vLHJbMV09bys9aSk6aTwwPyhyWzFdPWEsclswXT1hKz1pKTpyWzBdPW99LHQuc3RhY2tPZmZzZXROb25lPXZfLHQuc3RhY2tPZmZzZXRTaWxob3VldHRlPWZ1bmN0aW9uKHQsbil7aWYoKGU9dC5sZW5ndGgpPjApe2Zvcih2YXIgZSxyPTAsaT10W25bMF1dLG89aS5sZW5ndGg7cjxvOysrcil7Zm9yKHZhciBhPTAsdT0wO2E8ZTsrK2EpdSs9dFthXVtyXVsxXXx8MDtpW3JdWzFdKz1pW3JdWzBdPS11LzJ9dl8odCxuKX19LHQuc3RhY2tPZmZzZXRXaWdnbGU9ZnVuY3Rpb24odCxuKXtpZigoaT10Lmxlbmd0aCk+MCYmKHI9KGU9dFtuWzBdXSkubGVuZ3RoKT4wKXtmb3IodmFyIGUscixpLG89MCxhPTE7YTxyOysrYSl7Zm9yKHZhciB1PTAsZj0wLGM9MDt1PGk7Kyt1KXtmb3IodmFyIHM9dFtuW3VdXSxsPXNbYV1bMV18fDAsaD0obC0oc1thLTFdWzFdfHwwKSkvMixkPTA7ZDx1OysrZCl7dmFyIHA9dFtuW2RdXTtoKz0ocFthXVsxXXx8MCktKHBbYS0xXVsxXXx8MCl9Zis9bCxjKz1oKmx9ZVthLTFdWzFdKz1lW2EtMV1bMF09byxmJiYoby09Yy9mKX1lW2EtMV1bMV0rPWVbYS0xXVswXT1vLHZfKHQsbil9fSx0LnN0YWNrT3JkZXJBc2NlbmRpbmc9X18sdC5zdGFja09yZGVyRGVzY2VuZGluZz1mdW5jdGlvbih0KXtyZXR1cm4gX18odCkucmV2ZXJzZSgpfSx0LnN0YWNrT3JkZXJJbnNpZGVPdXQ9ZnVuY3Rpb24odCl7dmFyIG4sZSxyPXQubGVuZ3RoLGk9dC5tYXAoYl8pLG89Z18odCkuc29ydChmdW5jdGlvbih0LG4pe3JldHVybiBpW25dLWlbdF19KSxhPTAsdT0wLGY9W10sYz1bXTtmb3Iobj0wO248cjsrK24pZT1vW25dLGE8dT8oYSs9aVtlXSxmLnB1c2goZSkpOih1Kz1pW2VdLGMucHVzaChlKSk7cmV0dXJuIGMucmV2ZXJzZSgpLmNvbmNhdChmKX0sdC5zdGFja09yZGVyTm9uZT1nXyx0LnN0YWNrT3JkZXJSZXZlcnNlPWZ1bmN0aW9uKHQpe3JldHVybiBnXyh0KS5yZXZlcnNlKCl9LHQudGltZUludGVydmFsPVJoLHQudGltZU1pbGxpc2Vjb25kPUxoLHQudGltZU1pbGxpc2Vjb25kcz1EaCx0LnV0Y01pbGxpc2Vjb25kPUxoLHQudXRjTWlsbGlzZWNvbmRzPURoLHQudGltZVNlY29uZD1PaCx0LnRpbWVTZWNvbmRzPVloLHQudXRjU2Vjb25kPU9oLHQudXRjU2Vjb25kcz1ZaCx0LnRpbWVNaW51dGU9QmgsdC50aW1lTWludXRlcz1GaCx0LnRpbWVIb3VyPUloLHQudGltZUhvdXJzPUhoLHQudGltZURheT1qaCx0LnRpbWVEYXlzPVhoLHQudGltZVdlZWs9VmgsdC50aW1lV2Vla3M9dGQsdC50aW1lU3VuZGF5PVZoLHQudGltZVN1bmRheXM9dGQsdC50aW1lTW9uZGF5PSRoLHQudGltZU1vbmRheXM9bmQsdC50aW1lVHVlc2RheT1XaCx0LnRpbWVUdWVzZGF5cz1lZCx0LnRpbWVXZWRuZXNkYXk9WmgsdC50aW1lV2VkbmVzZGF5cz1yZCx0LnRpbWVUaHVyc2RheT1RaCx0LnRpbWVUaHVyc2RheXM9aWQsdC50aW1lRnJpZGF5PUpoLHQudGltZUZyaWRheXM9b2QsdC50aW1lU2F0dXJkYXk9S2gsdC50aW1lU2F0dXJkYXlzPWFkLHQudGltZU1vbnRoPXVkLHQudGltZU1vbnRocz1mZCx0LnRpbWVZZWFyPWNkLHQudGltZVllYXJzPXNkLHQudXRjTWludXRlPWxkLHQudXRjTWludXRlcz1oZCx0LnV0Y0hvdXI9ZGQsdC51dGNIb3Vycz1wZCx0LnV0Y0RheT12ZCx0LnV0Y0RheXM9Z2QsdC51dGNXZWVrPV9kLHQudXRjV2Vla3M9VGQsdC51dGNTdW5kYXk9X2QsdC51dGNTdW5kYXlzPVRkLHQudXRjTW9uZGF5PWJkLHQudXRjTW9uZGF5cz1OZCx0LnV0Y1R1ZXNkYXk9bWQsdC51dGNUdWVzZGF5cz1TZCx0LnV0Y1dlZG5lc2RheT14ZCx0LnV0Y1dlZG5lc2RheXM9RWQsdC51dGNUaHVyc2RheT13ZCx0LnV0Y1RodXJzZGF5cz1rZCx0LnV0Y0ZyaWRheT1NZCx0LnV0Y0ZyaWRheXM9Q2QsdC51dGNTYXR1cmRheT1BZCx0LnV0Y1NhdHVyZGF5cz1QZCx0LnV0Y01vbnRoPXpkLHQudXRjTW9udGhzPVJkLHQudXRjWWVhcj1MZCx0LnV0Y1llYXJzPURkLHQudGltZUZvcm1hdERlZmF1bHRMb2NhbGU9UXAsdC50aW1lRm9ybWF0TG9jYWxlPVlkLHQuaXNvRm9ybWF0PUpwLHQuaXNvUGFyc2U9S3AsdC5ub3c9aXIsdC50aW1lcj11cix0LnRpbWVyRmx1c2g9ZnIsdC50aW1lb3V0PWhyLHQuaW50ZXJ2YWw9ZnVuY3Rpb24odCxuLGUpe3ZhciByPW5ldyBhcixpPW47cmV0dXJuIG51bGw9PW4/KHIucmVzdGFydCh0LG4sZSkscik6KG49K24sZT1udWxsPT1lP2lyKCk6K2Usci5yZXN0YXJ0KGZ1bmN0aW9uIG8oYSl7YSs9aSxyLnJlc3RhcnQobyxpKz1uLGUpLHQoYSl9LG4sZSkscil9LHQudHJhbnNpdGlvbj16cix0LmFjdGl2ZT1mdW5jdGlvbih0LG4pe3ZhciBlLHIsaT10Ll9fdHJhbnNpdGlvbjtpZihpKWZvcihyIGluIG49bnVsbD09bj9udWxsOm4rIiIsaSlpZigoZT1pW3JdKS5zdGF0ZT5nciYmZS5uYW1lPT09bilyZXR1cm4gbmV3IFByKFtbdF1dLGxpLG4sK3IpO3JldHVybiBudWxsfSx0LmludGVycnVwdD1Ocix0LnZvcm9ub2k9ZnVuY3Rpb24oKXt2YXIgdD14XyxuPXdfLGU9bnVsbDtmdW5jdGlvbiByKHIpe3JldHVybiBuZXcgZWIoci5tYXAoZnVuY3Rpb24oZSxpKXt2YXIgbz1bTWF0aC5yb3VuZCh0KGUsaSxyKS9LXykqS18sTWF0aC5yb3VuZChuKGUsaSxyKS9LXykqS19dO3JldHVybiBvLmluZGV4PWksby5kYXRhPWUsb30pLGUpfXJldHVybiByLnBvbHlnb25zPWZ1bmN0aW9uKHQpe3JldHVybiByKHQpLnBvbHlnb25zKCl9LHIubGlua3M9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkubGlua3MoKX0sci50cmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCkudHJpYW5nbGVzKCl9LHIueD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uOm1fKCtuKSxyKTp0fSxyLnk9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDptXygrdCkscik6bn0sci5leHRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bnVsbD09dD9udWxsOltbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dLHIpOmUmJltbZVswXVswXSxlWzBdWzFdXSxbZVsxXVswXSxlWzFdWzFdXV19LHIuc2l6ZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1udWxsPT10P251bGw6W1swLDBdLFsrdFswXSwrdFsxXV1dLHIpOmUmJltlWzFdWzBdLWVbMF1bMF0sZVsxXVsxXS1lWzBdWzFdXX0scn0sdC56b29tPWZ1bmN0aW9uKCl7dmFyIG4sZSxyPXNiLGk9bGIsbz12YixhPWRiLHU9cGIsZj1bMCwxLzBdLGM9W1stMS8wLC0xLzBdLFsxLzAsMS8wXV0scz0yNTAsbD1xZSxoPVtdLGQ9SSgic3RhcnQiLCJ6b29tIiwiZW5kIikscD01MDAsdj0xNTAsZz0wO2Z1bmN0aW9uIHkodCl7dC5wcm9wZXJ0eSgiX196b29tIixoYikub24oIndoZWVsLnpvb20iLEEpLm9uKCJtb3VzZWRvd24uem9vbSIsVCkub24oImRibGNsaWNrLnpvb20iLE4pLmZpbHRlcih1KS5vbigidG91Y2hzdGFydC56b29tIixTKS5vbigidG91Y2htb3ZlLnpvb20iLEUpLm9uKCJ0b3VjaGVuZC56b29tIHRvdWNoY2FuY2VsLnpvb20iLGspLnN0eWxlKCJ0b3VjaC1hY3Rpb24iLCJub25lIikuc3R5bGUoIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIsInJnYmEoMCwwLDAsMCkiKX1mdW5jdGlvbiBfKHQsbil7cmV0dXJuKG49TWF0aC5tYXgoZlswXSxNYXRoLm1pbihmWzFdLG4pKSk9PT10Lms/dDpuZXcgb2Iobix0LngsdC55KX1mdW5jdGlvbiBiKHQsbixlKXt2YXIgcj1uWzBdLWVbMF0qdC5rLGk9blsxXS1lWzFdKnQuaztyZXR1cm4gcj09PXQueCYmaT09PXQueT90Om5ldyBvYih0LmsscixpKX1mdW5jdGlvbiBtKHQpe3JldHVyblsoK3RbMF1bMF0rICt0WzFdWzBdKS8yLCgrdFswXVsxXSsgK3RbMV1bMV0pLzJdfWZ1bmN0aW9uIHgodCxuLGUpe3Qub24oInN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7dyh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsZnVuY3Rpb24oKXt3KHRoaXMsYXJndW1lbnRzKS5lbmQoKX0pLnR3ZWVuKCJ6b29tIixmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cyxyPXcodGhpcyx0KSxvPWkuYXBwbHkodGhpcyx0KSxhPWV8fG0obyksdT1NYXRoLm1heChvWzFdWzBdLW9bMF1bMF0sb1sxXVsxXS1vWzBdWzFdKSxmPXRoaXMuX196b29tLGM9ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLHQpOm4scz1sKGYuaW52ZXJ0KGEpLmNvbmNhdCh1L2YuayksYy5pbnZlcnQoYSkuY29uY2F0KHUvYy5rKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe2lmKDE9PT10KXQ9YztlbHNle3ZhciBuPXModCksZT11L25bMl07dD1uZXcgb2IoZSxhWzBdLW5bMF0qZSxhWzFdLW5bMV0qZSl9ci56b29tKG51bGwsdCl9fSl9ZnVuY3Rpb24gdyh0LG4pe2Zvcih2YXIgZSxyPTAsaT1oLmxlbmd0aDtyPGk7KytyKWlmKChlPWhbcl0pLnRoYXQ9PT10KXJldHVybiBlO3JldHVybiBuZXcgTSh0LG4pfWZ1bmN0aW9uIE0odCxuKXt0aGlzLnRoYXQ9dCx0aGlzLmFyZ3M9bix0aGlzLmluZGV4PS0xLHRoaXMuYWN0aXZlPTAsdGhpcy5leHRlbnQ9aS5hcHBseSh0LG4pfWZ1bmN0aW9uIEEoKXtpZihyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIHQ9dyh0aGlzLGFyZ3VtZW50cyksbj10aGlzLl9fem9vbSxlPU1hdGgubWF4KGZbMF0sTWF0aC5taW4oZlsxXSxuLmsqTWF0aC5wb3coMixhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpKSxpPUZ0KHRoaXMpO2lmKHQud2hlZWwpdC5tb3VzZVswXVswXT09PWlbMF0mJnQubW91c2VbMF1bMV09PT1pWzFdfHwodC5tb3VzZVsxXT1uLmludmVydCh0Lm1vdXNlWzBdPWkpKSxjbGVhclRpbWVvdXQodC53aGVlbCk7ZWxzZXtpZihuLms9PT1lKXJldHVybjt0Lm1vdXNlPVtpLG4uaW52ZXJ0KGkpXSxOcih0aGlzKSx0LnN0YXJ0KCl9Y2IoKSx0LndoZWVsPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LndoZWVsPW51bGwsdC5lbmQoKX0sdiksdC56b29tKCJtb3VzZSIsbyhiKF8obixlKSx0Lm1vdXNlWzBdLHQubW91c2VbMV0pLHQuZXh0ZW50LGMpKX19ZnVuY3Rpb24gVCgpe2lmKCFlJiZyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG49dyh0aGlzLGFyZ3VtZW50cyksaT1EdCh0LmV2ZW50LnZpZXcpLm9uKCJtb3VzZW1vdmUuem9vbSIsZnVuY3Rpb24oKXtpZihjYigpLCFuLm1vdmVkKXt2YXIgZT10LmV2ZW50LmNsaWVudFgtdSxyPXQuZXZlbnQuY2xpZW50WS1mO24ubW92ZWQ9ZSplK3Iqcj5nfW4uem9vbSgibW91c2UiLG8oYihuLnRoYXQuX196b29tLG4ubW91c2VbMF09RnQobi50aGF0KSxuLm1vdXNlWzFdKSxuLmV4dGVudCxjKSl9LCEwKS5vbigibW91c2V1cC56b29tIixmdW5jdGlvbigpe2kub24oIm1vdXNlbW92ZS56b29tIG1vdXNldXAuem9vbSIsbnVsbCksR3QodC5ldmVudC52aWV3LG4ubW92ZWQpLGNiKCksbi5lbmQoKX0sITApLGE9RnQodGhpcyksdT10LmV2ZW50LmNsaWVudFgsZj10LmV2ZW50LmNsaWVudFk7WHQodC5ldmVudC52aWV3KSxmYigpLG4ubW91c2U9W2EsdGhpcy5fX3pvb20uaW52ZXJ0KGEpXSxOcih0aGlzKSxuLnN0YXJ0KCl9fWZ1bmN0aW9uIE4oKXtpZihyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl7dmFyIG49dGhpcy5fX3pvb20sZT1GdCh0aGlzKSxhPW4uaW52ZXJ0KGUpLHU9bi5rKih0LmV2ZW50LnNoaWZ0S2V5Py41OjIpLGY9byhiKF8obix1KSxlLGEpLGkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGMpO2NiKCkscz4wP0R0KHRoaXMpLnRyYW5zaXRpb24oKS5kdXJhdGlvbihzKS5jYWxsKHgsZixlKTpEdCh0aGlzKS5jYWxsKHkudHJhbnNmb3JtLGYpfX1mdW5jdGlvbiBTKCl7aWYoci5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciBlLGksbyxhLHU9dyh0aGlzLGFyZ3VtZW50cyksZj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGM9Zi5sZW5ndGg7Zm9yKGZiKCksaT0wO2k8YzsrK2kpYT1bYT1JdCh0aGlzLGYsKG89ZltpXSkuaWRlbnRpZmllciksdGhpcy5fX3pvb20uaW52ZXJ0KGEpLG8uaWRlbnRpZmllcl0sdS50b3VjaDA/dS50b3VjaDF8fCh1LnRvdWNoMT1hKToodS50b3VjaDA9YSxlPSEwKTtpZihuJiYobj1jbGVhclRpbWVvdXQobiksIXUudG91Y2gxKSlyZXR1cm4gdS5lbmQoKSx2b2lkKChhPUR0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIikpJiZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKSk7ZSYmKG49c2V0VGltZW91dChmdW5jdGlvbigpe249bnVsbH0scCksTnIodGhpcyksdS5zdGFydCgpKX19ZnVuY3Rpb24gRSgpe3ZhciBlLHIsaSxhLHU9dyh0aGlzLGFyZ3VtZW50cyksZj10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLHM9Zi5sZW5ndGg7Zm9yKGNiKCksbiYmKG49Y2xlYXJUaW1lb3V0KG4pKSxlPTA7ZTxzOysrZSlpPUl0KHRoaXMsZiwocj1mW2VdKS5pZGVudGlmaWVyKSx1LnRvdWNoMCYmdS50b3VjaDBbMl09PT1yLmlkZW50aWZpZXI/dS50b3VjaDBbMF09aTp1LnRvdWNoMSYmdS50b3VjaDFbMl09PT1yLmlkZW50aWZpZXImJih1LnRvdWNoMVswXT1pKTtpZihyPXUudGhhdC5fX3pvb20sdS50b3VjaDEpe3ZhciBsPXUudG91Y2gwWzBdLGg9dS50b3VjaDBbMV0sZD11LnRvdWNoMVswXSxwPXUudG91Y2gxWzFdLHY9KHY9ZFswXS1sWzBdKSp2Kyh2PWRbMV0tbFsxXSkqdixnPShnPXBbMF0taFswXSkqZysoZz1wWzFdLWhbMV0pKmc7cj1fKHIsTWF0aC5zcXJ0KHYvZykpLGk9WyhsWzBdK2RbMF0pLzIsKGxbMV0rZFsxXSkvMl0sYT1bKGhbMF0rcFswXSkvMiwoaFsxXStwWzFdKS8yXX1lbHNle2lmKCF1LnRvdWNoMClyZXR1cm47aT11LnRvdWNoMFswXSxhPXUudG91Y2gwWzFdfXUuem9vbSgidG91Y2giLG8oYihyLGksYSksdS5leHRlbnQsYykpfWZ1bmN0aW9uIGsoKXt2YXIgbixyLGk9dyh0aGlzLGFyZ3VtZW50cyksbz10LmV2ZW50LmNoYW5nZWRUb3VjaGVzLGE9by5sZW5ndGg7Zm9yKGZiKCksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2U9bnVsbH0scCksbj0wO248YTsrK24pcj1vW25dLGkudG91Y2gwJiZpLnRvdWNoMFsyXT09PXIuaWRlbnRpZmllcj9kZWxldGUgaS50b3VjaDA6aS50b3VjaDEmJmkudG91Y2gxWzJdPT09ci5pZGVudGlmaWVyJiZkZWxldGUgaS50b3VjaDE7aS50b3VjaDEmJiFpLnRvdWNoMCYmKGkudG91Y2gwPWkudG91Y2gxLGRlbGV0ZSBpLnRvdWNoMSksaS50b3VjaDA/aS50b3VjaDBbMV09dGhpcy5fX3pvb20uaW52ZXJ0KGkudG91Y2gwWzBdKTppLmVuZCgpfXJldHVybiB5LnRyYW5zZm9ybT1mdW5jdGlvbih0LG4pe3ZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dDtlLnByb3BlcnR5KCJfX3pvb20iLGhiKSx0IT09ZT94KHQsbik6ZS5pbnRlcnJ1cHQoKS5lYWNoKGZ1bmN0aW9uKCl7dyh0aGlzLGFyZ3VtZW50cykuc3RhcnQoKS56b29tKG51bGwsImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bikuZW5kKCl9KX0seS5zY2FsZUJ5PWZ1bmN0aW9uKHQsbil7eS5zY2FsZVRvKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fX3pvb20uayooImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6bil9KX0seS5zY2FsZVRvPWZ1bmN0aW9uKHQsbil7eS50cmFuc2Zvcm0odCxmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9dGhpcy5fX3pvb20scj1tKHQpLGE9ZS5pbnZlcnQociksdT0iZnVuY3Rpb24iPT10eXBlb2Ygbj9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpuO3JldHVybiBvKGIoXyhlLHUpLHIsYSksdCxjKX0pfSx5LnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKHQsbixlKXt5LnRyYW5zZm9ybSh0LGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcy5fX3pvb20udHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBuP24uYXBwbHkodGhpcyxhcmd1bWVudHMpOm4sImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6ZSksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyksYyl9KX0seS50cmFuc2xhdGVUbz1mdW5jdGlvbih0LG4sZSl7eS50cmFuc2Zvcm0odCxmdW5jdGlvbigpe3ZhciB0PWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dGhpcy5fX3pvb20sYT1tKHQpO3JldHVybiBvKGFiLnRyYW5zbGF0ZShhWzBdLGFbMV0pLnNjYWxlKHIuaykudHJhbnNsYXRlKCJmdW5jdGlvbiI9PXR5cGVvZiBuPy1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotbiwiZnVuY3Rpb24iPT10eXBlb2YgZT8tZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LWUpLHQsYyl9KX0sTS5wcm90b3R5cGU9e3N0YXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIDE9PSsrdGhpcy5hY3RpdmUmJih0aGlzLmluZGV4PWgucHVzaCh0aGlzKS0xLHRoaXMuZW1pdCgic3RhcnQiKSksdGhpc30sem9vbTpmdW5jdGlvbih0LG4pe3JldHVybiB0aGlzLm1vdXNlJiYibW91c2UiIT09dCYmKHRoaXMubW91c2VbMV09bi5pbnZlcnQodGhpcy5tb3VzZVswXSkpLHRoaXMudG91Y2gwJiYidG91Y2giIT09dCYmKHRoaXMudG91Y2gwWzFdPW4uaW52ZXJ0KHRoaXMudG91Y2gwWzBdKSksdGhpcy50b3VjaDEmJiJ0b3VjaCIhPT10JiYodGhpcy50b3VjaDFbMV09bi5pbnZlcnQodGhpcy50b3VjaDFbMF0pKSx0aGlzLnRoYXQuX196b29tPW4sdGhpcy5lbWl0KCJ6b29tIiksdGhpc30sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PS0tdGhpcy5hY3RpdmUmJihoLnNwbGljZSh0aGlzLmluZGV4LDEpLHRoaXMuaW5kZXg9LTEsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbih0KXtDdChuZXcgaWIoeSx0LHRoaXMudGhhdC5fX3pvb20pLGQuYXBwbHksZCxbdCx0aGlzLnRoYXQsdGhpcy5hcmdzXSl9fSx5LndoZWVsRGVsdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyYigrdCkseSk6YX0seS5maWx0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpyYighIXQpLHkpOnJ9LHkudG91Y2hhYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6cmIoISF0KSx5KTp1fSx5LmV4dGVudD1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0iZnVuY3Rpb24iPT10eXBlb2YgdD90OnJiKFtbK3RbMF1bMF0sK3RbMF1bMV1dLFsrdFsxXVswXSwrdFsxXVsxXV1dKSx5KTppfSx5LnNjYWxlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmWzBdPSt0WzBdLGZbMV09K3RbMV0seSk6W2ZbMF0sZlsxXV19LHkudHJhbnNsYXRlRXh0ZW50PWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjWzBdWzBdPSt0WzBdWzBdLGNbMV1bMF09K3RbMV1bMF0sY1swXVsxXT0rdFswXVsxXSxjWzFdWzFdPSt0WzFdWzFdLHkpOltbY1swXVswXSxjWzBdWzFdXSxbY1sxXVswXSxjWzFdWzFdXV19LHkuY29uc3RyYWluPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXQseSk6b30seS5kdXJhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0rdCx5KTpzfSx5LmludGVycG9sYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXQseSk6bH0seS5vbj1mdW5jdGlvbigpe3ZhciB0PWQub24uYXBwbHkoZCxhcmd1bWVudHMpO3JldHVybiB0PT09ZD95OnR9LHkuY2xpY2tEaXN0YW5jZT1mdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0odD0rdCkqdCx5KTpNYXRoLnNxcnQoZyl9LHl9LHQuem9vbVRyYW5zZm9ybT11Yix0Lnpvb21JZGVudGl0eT1hYixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1jb2xvci1zY2FsZS9wYWxldHRlcy5qcwp2YXIgcGY7CihmdW5jdGlvbihiKXtiLnBhbGV0dGVzPXtnb29nbGVTdGFuZGFyZDoiI2RiNDQzNyAjZmY3MDQzICNmNGI0MDAgIzBmOWQ1OCAjMDA3OTZiICMwMGFjYzEgIzQyODVmNCAjNWM2YmMwICNhYjQ3YmMiLnNwbGl0KCIgIiksZ29vZ2xlQ29vbDoiIzllOWQyNCAjMGY5ZDU4ICMwMDc5NmIgIzAwYWNjMSAjNDI4NWY0ICM1YzZiYzAgIzYwN2Q4YiIuc3BsaXQoIiAiKSxnb29nbGVXYXJtOiIjNzk1NTQ4ICNhYjQ3YmMgI2YwNjI5MiAjYzIxODViICNkYjQ0MzcgI2ZmNzA0MyAjZjRiNDAwIi5zcGxpdCgiICIpLGdvb2dsZUNvbG9yQmxpbmRBc3Npc3Q6IiNmZjcwNDMgIzAwQUNDMSAjQUI0N0JDICMyQTU2QzYgIzBiODA0MyAjRjdDQjREICNjMGNhMzMgIzVlMzViMSAjQTUyNzE0Ii5zcGxpdCgiICIpLHRlbnNvcmJvYXJkQ29sb3JCbGluZEFzc2lzdDoiI2ZmNzA0MyAjMDA3N2JiICNjYzMzMTEgIzMzYmJlZSAjZWUzMzc3ICMwMDk5ODggI2JiYmJiYiIuc3BsaXQoIiAiKSxjb2xvckJsaW5kQXNzaXN0MToiIzQ0NzdhYSAjNDRhYWFhICNhYWFhNDQgI2FhNzc0NCAjYWE0NDU1ICNhYTQ0ODgiLnNwbGl0KCIgIiksY29sb3JCbGluZEFzc2lzdDI6IiM4OGNjZWUgIzQ0YWE5OSAjMTE3NzMzICM5OTk5MzMgI2RkY2M3NyAjY2M2Njc3ICM4ODIyNTUgI2FhNDQ5OSIuc3BsaXQoIiAiKSwKY29sb3JCbGluZEFzc2lzdDM6IiMzMzIyODggIzY2OTljYyAjODhjY2VlICM0NGFhOTkgIzExNzczMyAjOTk5OTMzICNkZGNjNzcgI2NjNjY3NyAjYWE0NDY2ICM4ODIyNTUgIzY2MTEwMCAjYWE0NDk5Ii5zcGxpdCgiICIpLGNvbG9yQmxpbmRBc3Npc3Q0OiIjNDQ3N2FhICM2NmNjZWUgIzIyODgzMyAjY2NiYjQ0ICNlZTY2NzcgI2FhMzM3NyAjYmJiYmJiIi5zcGxpdCgiICIpLGNvbG9yQmxpbmRBc3Npc3Q1OiIjRkY2REI2ICM5MjAwMDAgIzkyNDkwMCAjREJEMTAwICMyNEZGMjQgIzAwNkREQiAjNDkwMDkyIi5zcGxpdCgiICIpLG1sZGFzaDoiI0U0N0VBRCAjRjQ2NDBEICNGQUEzMDAgI0Y1RTYzNiAjMDBBMDc3ICMwMDc3QjggIzAwQjdFRCIuc3BsaXQoIiAiKX07Yi5zdGFuZGFyZD1iLnBhbGV0dGVzLnRlbnNvcmJvYXJkQ29sb3JCbGluZEFzc2lzdH0pKHBmfHwocGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1jb2xvci1zY2FsZS9jb2xvclNjYWxlLmpzCihmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGgsayl7ZnVuY3Rpb24gdCgpe2wuc2V0RG9tYWluKGsoKSl9Y29uc3QgbD1uZXcgZjtoLmFkZExpc3RlbmVyKHQpO3QoKTtyZXR1cm4gcD0+bC5nZXRDb2xvcihwKX1jbGFzcyBme2NvbnN0cnVjdG9yKGg9Yi5zdGFuZGFyZCl7dGhpcy5wYWxldHRlPWg7dGhpcy5pZGVudGlmaWVycz1kMy5tYXAoKX1zZXREb21haW4oaCl7dGhpcy5pZGVudGlmaWVycz1kMy5tYXAoKTtoLmZvckVhY2goKGssdCk9Pnt0aGlzLmlkZW50aWZpZXJzLnNldChrLHRoaXMucGFsZXR0ZVt0JXRoaXMucGFsZXR0ZS5sZW5ndGhdKX0pfWdldENvbG9yKGgpe2lmKCF0aGlzLmlkZW50aWZpZXJzLmhhcyhoKSl0aHJvdyBFcnJvcihgU3RyaW5nICR7aH0gd2FzIG5vdCBpbiB0aGUgZG9tYWluLmApO3JldHVybiB0aGlzLmlkZW50aWZpZXJzLmdldChoKX19Yi5Db2xvclNjYWxlPWY7Yi5ydW5zQ29sb3JTY2FsZT1kKHZjLnJ1bnNTdG9yZSwoKT0+dmMucnVuc1N0b3JlLmdldFJ1bnMoKSk7CmIuZXhwZXJpbWVudHNDb2xvclNjYWxlPWQodmMuZXhwZXJpbWVudHNTdG9yZSwoKT0+dmMuZXhwZXJpbWVudHNTdG9yZS5nZXRFeHBlcmltZW50cygpLm1hcCgoe25hbWU6aH0pPT5oKSl9KShwZnx8KHBmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItaWNvbi1idXR0b24vcGFwZXItaWNvbi1idXR0b24uaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItaWNvbi1idXR0b24iLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJidXR0b24iLHRhYmluZGV4OiIwIn0sYmVoYXZpb3JzOltQb2x5bWVyLlBhcGVySW5reUZvY3VzQmVoYXZpb3JdLHByb3BlcnRpZXM6e3NyYzp7dHlwZTpTdHJpbmd9LGljb246e3R5cGU6U3RyaW5nfSxhbHQ6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfYWx0Q2hhbmdlZCJ9fSxfYWx0Q2hhbmdlZDpmdW5jdGlvbihiLGQpe3ZhciBmPXRoaXMuZ2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIik7ZiYmZCE9Znx8dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGIpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRhc2hib2FyZC1jb21tb24vdGYtbXVsdGktY2hlY2tib3guanMKKGZ1bmN0aW9uKCl7UG9seW1lcih7aXM6InRmLW11bHRpLWNoZWNrYm94Iixwcm9wZXJ0aWVzOntuYW1lczp7dHlwZTpBcnJheSx2YWx1ZTooKT0+W119LGNvbG9yaW5nOnt0eXBlOk9iamVjdCx2YWx1ZTp7Z2V0Q29sb3I6KCk9PiIifX0scmVnZXg6e3R5cGU6U3RyaW5nLG5vdGlmeTohMCx2YWx1ZToiIn0sX3JlZ2V4Ont0eXBlOk9iamVjdCxjb21wdXRlZDoiX21ha2VSZWdleChyZWdleCkifSxuYW1lc01hdGNoaW5nUmVnZXg6e3R5cGU6QXJyYXksY29tcHV0ZWQ6ImNvbXB1dGVOYW1lc01hdGNoaW5nUmVnZXgobmFtZXMuKiwgX3JlZ2V4KSJ9LHNlbGVjdGlvblN0YXRlOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6KCk9Pih7fSl9LG91dFNlbGVjdGVkOnt0eXBlOkFycmF5LG5vdGlmeTohMCxjb21wdXRlZDoiY29tcHV0ZU91dFNlbGVjdGVkKG5hbWVzTWF0Y2hpbmdSZWdleC4qLCBzZWxlY3Rpb25TdGF0ZS4qKSJ9LG1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ6e3R5cGU6TnVtYmVyLAp2YWx1ZTo0MH0sX2RlYm91bmNlZFJlZ2V4Q2hhbmdlOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3ZhciBiPV8uZGVib3VuY2UoZD0+e3RoaXMucmVnZXg9ZH0sMTUwLHtsZWFkaW5nOiExfSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy4kJCgiI25hbWVzLXJlZ2V4IikudmFsdWU7IiI9PWQ/dGhpcy5hc3luYygoKT0+e3RoaXMucmVnZXg9ZH0sMzApOmIoZCl9fX19LG9ic2VydmVyczpbIl9zZXRJc29sYXRvckljb24oc2VsZWN0aW9uU3RhdGUsIG5hbWVzKSJdLF9tYWtlUmVnZXg6ZnVuY3Rpb24oYil7dHJ5e3JldHVybiBuZXcgUmVnRXhwKGIpfWNhdGNoKGQpe3JldHVybiBudWxsfX0sX3NldElzb2xhdG9ySWNvbjpmdW5jdGlvbigpe3ZhciBiPXRoaXMuc2VsZWN0aW9uU3RhdGUsZD1fLmZpbHRlcihfLnZhbHVlcyhiKSkubGVuZ3RoO0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuaXNvbGF0b3IiKSkuZm9yRWFjaChmdW5jdGlvbihmKXtmLmljb249CjE9PT1kJiZiW2YubmFtZV0/InJhZGlvLWJ1dHRvbi1jaGVja2VkIjoicmFkaW8tYnV0dG9uLXVuY2hlY2tlZCJ9KX0sY29tcHV0ZU5hbWVzTWF0Y2hpbmdSZWdleDpmdW5jdGlvbigpe2NvbnN0IGI9dGhpcy5fcmVnZXg7cmV0dXJuIGI/dGhpcy5uYW1lcy5maWx0ZXIoZD0+Yi50ZXN0KGQpKTp0aGlzLm5hbWVzfSxjb21wdXRlT3V0U2VsZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnNlbGVjdGlvblN0YXRlLGQ9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXgubGVuZ3RoPD10aGlzLm1heE5hbWVzVG9FbmFibGVCeURlZmF1bHQ7cmV0dXJuIHRoaXMubmFtZXNNYXRjaGluZ1JlZ2V4LmZpbHRlcihmPT5udWxsPT1iW2ZdP2Q6YltmXSl9LHN5bmNocm9uaXplQ29sb3JzOmZ1bmN0aW9uKCl7dGhpcy5fc2V0SXNvbGF0b3JJY29uKCk7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInBhcGVyLWNoZWNrYm94IikuZm9yRWFjaChiPT57Y29uc3QgZD10aGlzLmNvbG9yaW5nLmdldENvbG9yKGIubmFtZSk7CmIudXBkYXRlU3R5bGVzKHsiLS1wYXBlci1jaGVja2JveC1jaGVja2VkLWNvbG9yIjpkLCItLXBhcGVyLWNoZWNrYm94LWNoZWNrZWQtaW5rLWNvbG9yIjpkLCItLXBhcGVyLWNoZWNrYm94LXVuY2hlY2tlZC1jb2xvciI6ZCwiLS1wYXBlci1jaGVja2JveC11bmNoZWNrZWQtaW5rLWNvbG9yIjpkfSl9KTt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmlzb2xhdG9yIikuZm9yRWFjaChiPT57Y29uc3QgZD10aGlzLmNvbG9yaW5nLmdldENvbG9yKGIubmFtZSk7Yi5zdHlsZS5jb2xvcj1kfSk7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMudXBkYXRlU3R5bGVzKCl9KX0sX2lzb2xhdGVOYW1lOmZ1bmN0aW9uKGIpe3ZhciBkPVBvbHltZXIuZG9tKGIpLmxvY2FsVGFyZ2V0Lm5hbWUsZj17fTt0aGlzLm5hbWVzLmZvckVhY2goZnVuY3Rpb24oaCl7ZltoXT1oPT1kfSk7dGhpcy5zZWxlY3Rpb25TdGF0ZT1mfSxfY2hlY2tib3hDaGFuZ2U6ZnVuY3Rpb24oYil7Yj0KUG9seW1lci5kb20oYikubG9jYWxUYXJnZXQ7Y29uc3QgZD1fLmNsb25lKHRoaXMuc2VsZWN0aW9uU3RhdGUpO2RbYi5uYW1lXT1iLmNoZWNrZWQ7dGhpcy5zZWxlY3Rpb25TdGF0ZT1kfSxfaXNDaGVja2VkOmZ1bmN0aW9uKGIpe3JldHVybi0xIT10aGlzLm91dFNlbGVjdGVkLmluZGV4T2YoYil9LHRvZ2dsZUFsbDpmdW5jdGlvbigpe2NvbnN0IGI9dGhpcy5uYW1lc01hdGNoaW5nUmVnZXguc29tZShmPT50aGlzLm91dFNlbGVjdGVkLmluY2x1ZGVzKGYpKSxkPXt9O3RoaXMubmFtZXMuZm9yRWFjaChmPT57ZFtmXT0hYn0pO3RoaXMuc2VsZWN0aW9uU3RhdGU9ZH19KX0pKHFkfHwocWQ9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ydW5zLXNlbGVjdG9yL3RmLXdici1zdHJpbmcuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtd2JyLXN0cmluZyIscHJvcGVydGllczp7dmFsdWU6U3RyaW5nLF9wYXJ0czp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2NvbXB1dGVQYXJ0cyh2YWx1ZSkifX0sX2NvbXB1dGVQYXJ0cyhiKXtjb25zdCBkPVtdLGY9L1svPV8sLV0vO2ZvcihudWxsPT1iJiYoYj0iIik7Oyl7Y29uc3QgaD1iLnNlYXJjaChmKTtpZigtMT09PWgpe2QucHVzaChiKTticmVha31lbHNlIGQucHVzaChiLnNsaWNlKDAsaCsxKSksYj1iLnNsaWNlKGgrMSl9cmV0dXJuIGR9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtcnVucy1zZWxlY3Rvci90Zi1ydW5zLXNlbGVjdG9yLmh0bWwuanMKUG9seW1lcih7aXM6InRmLXJ1bnMtc2VsZWN0b3IiLHByb3BlcnRpZXM6e3J1blNlbGVjdGlvblN0YXRlOnt0eXBlOk9iamVjdCxvYnNlcnZlcjoiX3N0b3JlUnVuU2VsZWN0aW9uU3RhdGUiLHZhbHVlOnBkLmdldE9iamVjdEluaXRpYWxpemVyKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pfSxyZWdleElucHV0Ont0eXBlOlN0cmluZyx2YWx1ZTpwZC5nZXRTdHJpbmdJbml0aWFsaXplcigicmVnZXhJbnB1dCIse2RlZmF1bHRWYWx1ZToiIn0pLG9ic2VydmVyOiJfcmVnZXhPYnNlcnZlciJ9LHNlbGVjdGVkUnVuczp7dHlwZTpBcnJheSxub3RpZnk6ITB9LHJ1bnM6QXJyYXksZGF0YUxvY2F0aW9uOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LF9jbGlwcGVkRGF0YUxvY2F0aW9uOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2dldENsaXBwZWREYXRhTG9jYXRpb24oZGF0YUxvY2F0aW9uLCBfZGF0YUxvY2F0aW9uQ2xpcExlbmd0aCkifSxfZGF0YUxvY2F0aW9uQ2xpcExlbmd0aDp7dHlwZTpOdW1iZXIsCnZhbHVlOjI1MCxyZWFkT25seTohMH0sY29sb3Jpbmc6e3R5cGU6T2JqZWN0LHZhbHVlOntnZXRDb2xvcjpwZi5ydW5zQ29sb3JTY2FsZX19fSxhdHRhY2hlZCgpe3RoaXMuX3J1blN0b3JlTGlzdGVuZXI9dmMucnVuc1N0b3JlLmFkZExpc3RlbmVyKCgpPT57dGhpcy5zZXQoInJ1bnMiLHZjLnJ1bnNTdG9yZS5nZXRSdW5zKCkpfSk7dGhpcy5zZXQoInJ1bnMiLHZjLnJ1bnNTdG9yZS5nZXRSdW5zKCkpO3RoaXMuX2VudlN0b3JlTGlzdGVuZXI9dmMuZW52aXJvbm1lbnRTdG9yZS5hZGRMaXN0ZW5lcigoKT0+e3RoaXMuc2V0KCJkYXRhTG9jYXRpb24iLHZjLmVudmlyb25tZW50U3RvcmUuZ2V0RGF0YUxvY2F0aW9uKCkpfSk7dGhpcy5zZXQoImRhdGFMb2NhdGlvbiIsdmMuZW52aXJvbm1lbnRTdG9yZS5nZXREYXRhTG9jYXRpb24oKSl9LGRldGFjaGVkKCl7dmMucnVuc1N0b3JlLnJlbW92ZUxpc3RlbmVyQnlLZXkodGhpcy5fcnVuU3RvcmVMaXN0ZW5lcik7dmMuZW52aXJvbm1lbnRTdG9yZS5yZW1vdmVMaXN0ZW5lckJ5S2V5KHRoaXMuX2VudlN0b3JlTGlzdGVuZXIpfSwKX3RvZ2dsZUFsbDpmdW5jdGlvbigpe3RoaXMuJC5tdWx0aUNoZWNrYm94LnRvZ2dsZUFsbCgpfSxfZ2V0Q2xpcHBlZERhdGFMb2NhdGlvbjpmdW5jdGlvbihiLGQpe2lmKHZvaWQgMCE9PWImJiEoYi5sZW5ndGg+ZCkpcmV0dXJuIGJ9LF9vcGVuRGF0YUxvY2F0aW9uRGlhbG9nOmZ1bmN0aW9uKGIpe2IucHJldmVudERlZmF1bHQoKTt0aGlzLiQkKCIjZGF0YS1sb2NhdGlvbi1kaWFsb2ciKS5vcGVuKCl9LF9zaG91bGRTaG93RXhwYW5kRGF0YUxvY2F0aW9uQnV0dG9uKGIsZCl7cmV0dXJuIGImJmIubGVuZ3RoPmR9LF9zdG9yZVJ1blNlbGVjdGlvblN0YXRlOnBkLmdldE9iamVjdE9ic2VydmVyKCJydW5TZWxlY3Rpb25TdGF0ZSIse2RlZmF1bHRWYWx1ZTp7fX0pLF9yZWdleE9ic2VydmVyOnBkLmdldFN0cmluZ09ic2VydmVyKCJyZWdleElucHV0Iix7ZGVmYXVsdFZhbHVlOiIifSl9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi10ZW5zb3Jib2FyZC9yZWdpc3RyeS5qcwp2YXIgcWY7CihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7ZC5OT1RfTE9BREVEPSJOT1RfTE9BREVEIjtkLkxPQURFRD0iTE9BREVEIjtkLkZBSUxFRD0iRkFJTEVEIn0pKGIuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZXx8KGIuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZT17fSkpO2IuZGFzaGJvYXJkUmVnaXN0cnk9e307Yi5yZWdpc3RlckRhc2hib2FyZD1mdW5jdGlvbigpe3ZhciBkPXtwbHVnaW46ImJlaG9sZGVyIixlbGVtZW50TmFtZToidGYtYmVob2xkZXItZGFzaGJvYXJkIixzaG91bGRSZW1vdmVEb206ITB9O2lmKCFkLnBsdWdpbil0aHJvdyBFcnJvcigiRGFzaGJvYXJkLnBsdWdpbiBtdXN0IGJlIHByZXNlbnQiKTtpZighZC5lbGVtZW50TmFtZSl0aHJvdyBFcnJvcigiRGFzaGJvYXJkLmVsZW1lbnROYW1lIG11c3QgYmUgcHJlc2VudCIpO2lmKGQucGx1Z2luIGluIGIuZGFzaGJvYXJkUmVnaXN0cnkpdGhyb3cgRXJyb3IoYFBsdWdpbiBhbHJlYWR5IHJlZ2lzdGVyZWQ6ICR7ZC5wbHVnaW59YCk7ZC50YWJOYW1lfHwKKGQudGFiTmFtZT1kLnBsdWdpbik7Yi5kYXNoYm9hcmRSZWdpc3RyeVtkLnBsdWdpbl09ZH19KShxZnx8KHFmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtdXRpbHMvdXRpbHMuanMKdmFyIHJmOwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChmLGgsayl7cmV0dXJuIDE9PT1mP2g6a31iLmFnZ3JlZ2F0ZVRhZ0luZm89ZnVuY3Rpb24oZixoKXtsZXQgaz12b2lkIDA7Y29uc3QgdD17fTtPYmplY3Qua2V5cyhmKS5mb3JFYWNoKHA9Pntjb25zdCBtPWZbcF07dm9pZCAwPT09ayYmKGs9bS5kaXNwbGF5TmFtZSk7ayE9PW0uZGlzcGxheU5hbWUmJihrPW51bGwpO3ZvaWQgMD09PXRbbS5kZXNjcmlwdGlvbl0mJih0W20uZGVzY3JpcHRpb25dPVtdKTt0W20uZGVzY3JpcHRpb25dLnB1c2gocCl9KTtoPW51bGwhPWs/azpoO2NvbnN0IGw9KCgpPT57Y29uc3QgcD1PYmplY3Qua2V5cyh0KTtyZXR1cm4gMD09PXAubGVuZ3RoPyIiOjE9PT1wLmxlbmd0aD9wWzBdOmAkeyJceDNjcFx4M2VceDNjc3Ryb25nXHgzZU11bHRpcGxlIGRlc2NyaXB0aW9uczpceDNjL3N0cm9uZ1x4M2VceDNjL3BceDNlIn08dWw+JHtwLm1hcChtPT57Y29uc3Qgbj10W21dLm1hcCh1PT5gPGNvZGU+JHt1LnJlcGxhY2UoLzwvZywiXHgyNmx0OyIpLnJlcGxhY2UoLz4vZywKIlx4MjZndDsiKS5yZXBsYWNlKC8mL2csIlx4MjZhbXA7Iil9PC9jb2RlPmApLHE9MjxuLmxlbmd0aD9uLnNsaWNlKDAsbi5sZW5ndGgtMSkuam9pbigiLCAiKSsiLCBhbmQgIituW24ubGVuZ3RoLTFdOm4uam9pbigiIGFuZCAiKTtyZXR1cm5gPGxpPjxwPkZvciAke2Qobi5sZW5ndGgsInJ1biIsInJ1bnMiKX0gJHtxfTo8L3A+JHttfTwvbGk+YH0pLmpvaW4oIiIpfTwvdWw+YH0pKCk7cmV0dXJue2Rpc3BsYXlOYW1lOmgsZGVzY3JpcHRpb246bH19fSkocmZ8fChyZj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLXNwaW5uZXIvcGFwZXItc3Bpbm5lci1iZWhhdmlvci5odG1sLmpzClBvbHltZXIuUGFwZXJTcGlubmVyQmVoYXZpb3I9e3Byb3BlcnRpZXM6e2FjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX19hY3RpdmVDaGFuZ2VkIn0sYWx0Ont0eXBlOlN0cmluZyx2YWx1ZToibG9hZGluZyIsb2JzZXJ2ZXI6Il9fYWx0Q2hhbmdlZCJ9LF9fY29vbGluZ0Rvd246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX19LF9fY29tcHV0ZUNvbnRhaW5lckNsYXNzZXM6ZnVuY3Rpb24oYixkKXtyZXR1cm5bYnx8ZD8iYWN0aXZlIjoiIixkPyJjb29sZG93biI6IiJdLmpvaW4oIiAiKX0sX19hY3RpdmVDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7dGhpcy5fX3NldEFyaWFIaWRkZW4oIWIpO3RoaXMuX19jb29saW5nRG93bj0hYiYmZH0sX19hbHRDaGFuZ2VkOmZ1bmN0aW9uKGIpeyJsb2FkaW5nIj09PWI/dGhpcy5hbHQ9dGhpcy5nZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiKXx8YjoodGhpcy5fX3NldEFyaWFIaWRkZW4oIiI9PT0KYiksdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGIpKX0sX19zZXRBcmlhSGlkZGVuOmZ1bmN0aW9uKGIpe2I/dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpOnRoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfSxfX3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fX2Nvb2xpbmdEb3duPXRoaXMuYWN0aXZlPSExfX07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItc3Bpbm5lci9wYXBlci1zcGlubmVyLWxpdGUuaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItc3Bpbm5lci1saXRlIixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJTcGlubmVyQmVoYXZpb3JdfSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZGFzaGJvYXJkLWNvbW1vbi9kYXRhLWxvYWRlci1iZWhhdmlvci5qcwooZnVuY3Rpb24oYil7bGV0IGQ7KGZ1bmN0aW9uKGYpe2ZbZi5MT0FESU5HPTBdPSJMT0FESU5HIjtmW2YuTE9BREVEPTFdPSJMT0FERUQifSkoZHx8KGQ9e30pKTtiLkRhdGFMb2FkZXJCZWhhdmlvcj17cHJvcGVydGllczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9sb2FkRGF0YUlmQWN0aXZlIn0sbG9hZEtleTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LGRhdGFUb0xvYWQ6e3R5cGU6QXJyYXksdmFsdWU6KCk9PltdfSxnZXREYXRhTG9hZE5hbWU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6KCk9PmY9PlN0cmluZyhmKX0sbG9hZERhdGFDYWxsYmFjazpGdW5jdGlvbixyZXF1ZXN0RGF0YTp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmPT50aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodGhpcy5nZXREYXRhTG9hZFVybChmKSl9fSxnZXREYXRhTG9hZFVybDpGdW5jdGlvbixkYXRhTG9hZGluZzp7dHlwZTpCb29sZWFuLHJlYWRPbmx5OiEwLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCwKdmFsdWU6ITF9LF9kYXRhTG9hZFN0YXRlOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IE1hcH0sX2NhbmNlbGxlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5DYW5jZWxsZXJ9LF9sb2FkRGF0YUFzeW5jOnt0eXBlOk51bWJlcix2YWx1ZTpudWxsfX0sb2JzZXJ2ZXJzOlsiX2RhdGFUb0xvYWRDaGFuZ2VkKGlzQXR0YWNoZWQsIGRhdGFUb0xvYWQuKikiXSxvbkxvYWRGaW5pc2goKXt9LHJlbG9hZCgpe3RoaXMuX2RhdGFMb2FkU3RhdGUuY2xlYXIoKTt0aGlzLl9sb2FkRGF0YSgpfSxyZXNldCgpe251bGwhPXRoaXMuX2xvYWREYXRhQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCk7dGhpcy5fY2FuY2VsbGVyJiZ0aGlzLl9jYW5jZWxsZXIuY2FuY2VsQWxsKCk7dGhpcy5fZGF0YUxvYWRTdGF0ZSYmdGhpcy5fZGF0YUxvYWRTdGF0ZS5jbGVhcigpO3RoaXMuaXNBdHRhY2hlZCYmdGhpcy5fbG9hZERhdGEoKX0sCl9kYXRhVG9Mb2FkQ2hhbmdlZCgpe3RoaXMuaXNBdHRhY2hlZCYmdGhpcy5fbG9hZERhdGEoKX0sY3JlYXRlZCgpe3RoaXMuX2xvYWREYXRhPV8udGhyb3R0bGUodGhpcy5fbG9hZERhdGFJbXBsLDEwMCx7bGVhZGluZzohMCx0cmFpbGluZzohMH0pfSxkZXRhY2hlZCgpe251bGwhPXRoaXMuX2xvYWREYXRhQXN5bmMmJih0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX2xvYWREYXRhQXN5bmMpLHRoaXMuX2xvYWREYXRhQXN5bmM9bnVsbCl9LF9sb2FkRGF0YUlmQWN0aXZlKCl7dGhpcy5hY3RpdmUmJnRoaXMuX2xvYWREYXRhKCl9LF9sb2FkRGF0YUltcGwoKXt0aGlzLmFjdGl2ZSYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fbG9hZERhdGFBc3luYyksdGhpcy5fbG9hZERhdGFBc3luYz10aGlzLmFzeW5jKHRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZShmPT57aWYoIWYuY2FuY2VsbGVkKXJldHVybiB0aGlzLl9zZXREYXRhTG9hZGluZyghMCksZj10aGlzLmRhdGFUb0xvYWQuZmlsdGVyKGg9Pgp7aD10aGlzLmdldERhdGFMb2FkTmFtZShoKTtyZXR1cm4hdGhpcy5fZGF0YUxvYWRTdGF0ZS5oYXMoaCl9KS5tYXAoaD0+e2NvbnN0IGs9dGhpcy5nZXREYXRhTG9hZE5hbWUoaCk7dGhpcy5fZGF0YUxvYWRTdGF0ZS5zZXQoayxkLkxPQURJTkcpO3JldHVybiB0aGlzLnJlcXVlc3REYXRhKGgpLnRoZW4odGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKHQ9Pnt0LmNhbmNlbGxlZHx8KHRoaXMuX2RhdGFMb2FkU3RhdGUuc2V0KGssZC5MT0FERUQpLHRoaXMubG9hZERhdGFDYWxsYmFjayh0aGlzLGgsdC52YWx1ZSkpO3JldHVybiBrfSkpfSksUHJvbWlzZS5hbGwoZikudGhlbih0aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoaD0+e2lmKCFoLmNhbmNlbGxlZCl7Y29uc3Qgaz1uZXcgU2V0KGgudmFsdWUpO2lmKHRoaXMuZGF0YVRvTG9hZC5zb21lKHQ9PmsuaGFzKHRoaXMuZ2V0RGF0YUxvYWROYW1lKHQpKSkpdGhpcy5vbkxvYWRGaW5pc2goKX1BcnJheS5mcm9tKHRoaXMuX2RhdGFMb2FkU3RhdGUudmFsdWVzKCkpLnNvbWUoaz0+Cms9PT1kLkxPQURJTkcpfHx0aGlzLl9zZXREYXRhTG9hZGluZyghMSl9KSwoKT0+e30pLnRoZW4odGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKCh7Y2FuY2VsbGVkOmh9KT0+e2h8fCh0aGlzLl9sb2FkRGF0YUFzeW5jPW51bGwpfSkpfSkpKX19fSkocWR8fChxZD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWltcG9ydHMvcGxvdHRhYmxlLmpzCi8qCiBNSVQKIE1JVAogQGZpbGVvdmVydmlldyBJbXBsZW1lbnRzIHRoZSBTaWduYXR1cmUgQVBJIHRvIGhlbHAgaW4gY29tcGFyaW5nIHdoZW4gdHdvCiBQbG90dGFibGUgb2JqZWN0cyBoYXZlICJjaGFuZ2VkIi4KCiBNZW1vaXphdGlvbiBpbiBQbG90dGFibGUgaXMgY29tcGxpY2F0ZWQgYnkgbXV0YWJsZSBzY2FsZXMgYW5kIGRhdGFzZXRzLiBXZSBjYW5ub3Qgc2ltcGx5CiByZWZlcmVuY2UgY29tcGFyZSB0d28gZS5nLiBzY2FsZXMgc2luY2UgaXQgbWF5IGhhdmUgaW50ZXJuYWxseSBtdXRhdGVkLiBUbyByZXNvbHZlIHRoaXMsCiB3ZSB3cml0ZSBhIHJlY3Vyc2l2ZSBTaWduYXR1cmUgaW50ZXJmYWNlIHRoYXQgaG9sZHMgYW4gaW1tdXRhYmxlIHNuYXBzaG90IG9mIHdoYXRldmVyCiBzdGF0ZSB0aGUgc2NhbGUvZGF0YSB3YXMgaW4gYXQgdGhlIHRpbWUuIFRoZW4gb24gbWVtb2l6ZWQgZnVuY3Rpb24gaW52b2NhdGlvbiB3ZSBzaWduIHRoZQogbmV3IGlucHV0cyBhbmQgY29tcGFyZSB0aGUgc2lnbmF0dXJlcyB0byBkZWNpZGUgaWYgd2Ugc2hvdWxkIHJlY29tcHV0ZS4KCiBXZSBtdXN0IGhhbmQtd3JpdGUgYSBzaWduYXR1cmUgZm9yIGVhY2ggY3VzdG9tIGNsYXNzIHdlIHdpc2ggdG8gc3VwcG9ydC4KIE1JVAoKIEBmaWxlb3ZlcnZpZXcgbWFudWFsbHkgYWRkIGQzLXNlbGVjdGlvbi1tdWx0aSB0byBkMyBkZWZhdWx0IGJ1bmRsZS4gTW9zdCBvZiB0aGlzIGNvZGUgaXMKIGNvcGllZCBmcm9tIGQzLXNlbGVjdGlvbi1tdWx0aUAxLjAuMC4KIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZDMvZDMtc2VsZWN0aW9uLW11bHRpL2lzc3Vlcy8xMSBmb3Igd2h5IHdlIGhhdmUgdG8gZG8gdGhpcwogTUlUCiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBjb252ZW5pZW50IHRodW5rIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgY29tbW9uIGNhc2UKIG9mIGNyZWF0aW5nIGEgbWVtb2l6ZWQgZnVuY3Rpb24gdGhhdCB0YWtlcyBpdHMgaW5wdXRzIGZyb20gbXV0YWJsZSBjbGFzcyBwcm9wZXJ0aWVzLgogTUlUCiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgYSBmdW5jdGlvbiBtZW1vaXplciB1c2luZyB0aGUgU2lnbmF0dXJlIEFQSS4KIFBsb3R0YWJsZSAzLjcuMCAoaHR0cHM6Ly9naXRodWIuY29tL3BhbGFudGlyL3Bsb3R0YWJsZSkKIENvcHlyaWdodCAyMDE0LTIwMTcgUGFsYW50aXIgVGVjaG5vbG9naWVzCiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9wYWxhbnRpci9wbG90dGFibGUvYmxvYi9tYXN0ZXIvTElDRU5TRSkKIGlzLXBsYWluLW9iamVjdCA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtcGxhaW4tb2JqZWN0PgoKIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBKb24gU2NobGlua2VydC4KIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KIGlzb2JqZWN0IDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pc29iamVjdD4KCiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuCiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCiovCihmdW5jdGlvbihiLGQpeyJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1kKHJlcXVpcmUoImQzIikpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImQzIl0sZCk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlBsb3R0YWJsZT1kKHJlcXVpcmUoImQzIikpOmIuUGxvdHRhYmxlPWQoYi5kMyl9KSh0aGlzLGZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihkKXtmdW5jdGlvbiBmKGspe2lmKGhba10pcmV0dXJuIGhba10uZXhwb3J0czt2YXIgdD1oW2tdPXtpOmssbDohMSxleHBvcnRzOnt9fTtkW2tdLmNhbGwodC5leHBvcnRzLHQsdC5leHBvcnRzLGYpO3QubD0hMDtyZXR1cm4gdC5leHBvcnRzfXZhciBoPXt9O2YubT1kO2YuYz1oO2YuaT1mdW5jdGlvbihrKXtyZXR1cm4ga307Zi5kPWZ1bmN0aW9uKGssdCxsKXtmLm8oayx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGssCnQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpsfSl9O2Yubj1mdW5jdGlvbihrKXt2YXIgdD1rJiZrLl9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4ga1siZGVmYXVsdCJdfTpmdW5jdGlvbigpe3JldHVybiBrfTtmLmQodCwiYSIsdCk7cmV0dXJuIHR9O2Yubz1mdW5jdGlvbihrLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoayx0KX07Zi5wPSIiO3JldHVybiBmKGYucz0xNDApfShbZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ZD1oKDEwNyk7Zi5BcnJheT1kO2Q9aCgxMTApO2YuQ29sb3I9ZDtkPWgoNTUpO2YuRE9NPWQ7ZD1oKDU2KTtmLk1hdGg9ZDtkPWgoMTEzKTtmLk9iamVjdD1kO2Q9aCg1Nyk7Zi5SVHJlZT1kO2Q9aCgxMTUpO2YuU3RhY2tpbmc9ZDtkPWgoMzUpO2YuV2luZG93PWQ7ayhoKDEwOCkpO2soaCgxMDkpKTtrKGgoMTIpKTsKayhoKDExMSkpO2soaCgxMTIpKTtrKGgoNTgpKTtrKGgoMTE2KSl9LGZ1bmN0aW9uKGQpe2QuZXhwb3J0cz1ifSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayhGLEQsQil7dmFyIEk9RC5hY2Nlc3NvcjtEPUQuc2NhbGU7aWYobnVsbD09RClyZXR1cm5bXTt2YXIgTj1GLmRhdGEoKTtudWxsIT1CJiYoTj1OLmZpbHRlcihmdW5jdGlvbihPLEgpe3JldHVybiBCKE8sSCxGKX0pKTtOPU4ubWFwKGZ1bmN0aW9uKE8sSCl7cmV0dXJuIEkoTyxILEYpfSk7cmV0dXJuIEQuZXh0ZW50T2ZWYWx1ZXMoTil9dmFyIHQ9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKEYsRCl7ZnVuY3Rpb24gQigpe3RoaXMuY29uc3RydWN0b3I9Rn1mb3IodmFyIEkgaW4gRClELmhhc093blByb3BlcnR5KEkpJiYoRltJXT1EW0ldKTtGLnByb3RvdHlwZT1udWxsPT09RD9PYmplY3QuY3JlYXRlKEQpOihCLnByb3RvdHlwZT1ELnByb3RvdHlwZSxuZXcgQil9LGw9aCgxKSxwPWgoNyk7ZD1oKDQpO3ZhciBtPQpoKDE4KSxuPWgoNikscT1oKDkpLHU9aCgyMCkseD1oKDApLEE9aCgxMikseT1oKDEwKSx3PWgoNTEpLEM9aCg1Mik7Zi5SZW5kZXJlcj15Lm1ha2VFbnVtKFsic3ZnIiwiY2FudmFzIl0pO2g9ZnVuY3Rpb24oRil7ZnVuY3Rpb24gRCgpe3ZhciBCPUYuY2FsbCh0aGlzKXx8dGhpcztCLl9kYXRhQ2hhbmdlZD0hMTtCLl9hdHRyRXh0ZW50cz17fTtCLl9hbmltYXRlPSExO0IuX2FuaW1hdG9ycz17fTtCLl9wcm9wZXJ0eUV4dGVudHM9e307Qi5fcmVzZXRFbnRpdHlTdG9yZT1mdW5jdGlvbigpe0IuX2NhY2hlZEVudGl0eVN0b3JlPXZvaWQgMH07Qi5fb3ZlcmZsb3dIaWRkZW49ITA7Qi5hZGRDbGFzcygicGxvdCIpO0IuX2RhdGFzZXRUb0RyYXdlcj1uZXcgeC5NYXA7Qi5fYXR0ckJpbmRpbmdzPWwubWFwKCk7Qi5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcj1mdW5jdGlvbihOLE8pe3JldHVybiBCLl9pbmNsdWRlZFZhbHVlc0ZvclNjYWxlKE4sTyl9O0IuX3JlbmRlckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIEIucmVuZGVyKCl9OwpCLl9vbkRhdGFzZXRVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBCLl9vbkRhdGFzZXRVcGRhdGUoKX07Qi5fcHJvcGVydHlCaW5kaW5ncz1sLm1hcCgpO3ZhciBJPShuZXcgcC5FYXNpbmcpLm1heFRvdGFsRHVyYXRpb24oRC5fQU5JTUFUSU9OX01BWF9EVVJBVElPTik7Qi5hbmltYXRvcih3LkFuaW1hdG9yLk1BSU4sSSk7Qi5hbmltYXRvcih3LkFuaW1hdG9yLlJFU0VULG5ldyBwLk51bGwpO0IuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZT14LldpbmRvdy5kZWJvdW5jZShDLkRlZmVycmVkUmVuZGVyZXIuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZLEIuX3Jlc2V0RW50aXR5U3RvcmUpO3JldHVybiBCfXQoRCxGKTtELmdldFRvdGFsRHJhd1RpbWU9ZnVuY3Rpb24oQixJKXtyZXR1cm4gSS5yZWR1Y2UoZnVuY3Rpb24oTixPKXtyZXR1cm4gTitPLmFuaW1hdG9yLnRvdGFsVGltZShCLmxlbmd0aCl9LDApfTtELmFwcGx5RHJhd1N0ZXBzPWZ1bmN0aW9uKEIsSSl7cmV0dXJuIEIubWFwKGZ1bmN0aW9uKE4pe3ZhciBPPQpOLmF0dHJUb1Byb2plY3RvcixIPXt9O09iamVjdC5rZXlzKE8pLmZvckVhY2goZnVuY3Rpb24oSyl7SFtLXT1mdW5jdGlvbihNLEwpe3JldHVybiBPW0tdKE0sTCxJKX19KTtyZXR1cm57YXR0clRvQXBwbGllZFByb2plY3RvcjpILGFuaW1hdG9yOk4uYW5pbWF0b3J9fSl9O0QucHJvdG90eXBlLmFuY2hvcj1mdW5jdGlvbihCKXtCPUEuY29lcmNlRXh0ZXJuYWxEMyhCKTtGLnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLEIpO3RoaXMuX2RhdGFDaGFuZ2VkPSEwO3RoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKTt0aGlzLl91cGRhdGVFeHRlbnRzKCk7cmV0dXJuIHRoaXN9O0QucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3ZhciBCPXRoaXM7dGhpcy5faXNTZXR1cHx8KEYucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpLG51bGwhPXRoaXMuX2NhbnZhcyYmdGhpcy5fYXBwZW5kQ2FudmFzTm9kZSgpLHRoaXMuX3JlbmRlckFyZWE9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgicmVuZGVyLWFyZWEiLAohMCksdGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oSSl7cmV0dXJuIEIuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldChJKX0pKX07RC5wcm90b3R5cGUuX2FwcGVuZENhbnZhc05vZGU9ZnVuY3Rpb24oKXt2YXIgQj10aGlzLmVsZW1lbnQoKS5zZWxlY3QoIi5wbG90LWNhbnZhcy1jb250YWluZXIiKTtCLmVtcHR5KCkmJihCPXRoaXMuZWxlbWVudCgpLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgicGxvdC1jYW52YXMtY29udGFpbmVyIiwhMCksQi5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fY2FudmFzLm5vZGUoKSkpfTtELnByb3RvdHlwZS5zZXRCb3VuZHM9ZnVuY3Rpb24oQixJLE4sTyl7Ri5wcm90b3R5cGUuc2V0Qm91bmRzLmNhbGwodGhpcyxCLEksTixPKTt0aGlzLl9yZXNldEVudGl0eVN0b3JlKCk7bnVsbCE9dGhpcy5fY2FudmFzJiYodGhpcy5fYnVmZmVyQ2FudmFzJiYhdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQmJih0aGlzLl9idWZmZXJDYW52YXMuYXR0cigid2lkdGgiLAp0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiKSksdGhpcy5fYnVmZmVyQ2FudmFzLmF0dHIoImhlaWdodCIsdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIpKSwoTj10aGlzLl9idWZmZXJDYW52YXMubm9kZSgpLmdldENvbnRleHQoIjJkIikpJiZOLmRyYXdJbWFnZSh0aGlzLl9jYW52YXMubm9kZSgpLDAsMCksdGhpcy5fYnVmZmVyQ2FudmFzVmFsaWQ9ITApLE49bnVsbCE9d2luZG93LmRldmljZVBpeGVsUmF0aW8/d2luZG93LmRldmljZVBpeGVsUmF0aW86MSx0aGlzLl9jYW52YXMuYXR0cigid2lkdGgiLEIqTiksdGhpcy5fY2FudmFzLmF0dHIoImhlaWdodCIsSSpOKSxPPXRoaXMuX2NhbnZhcy5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKSkmJihPLnNldFRyYW5zZm9ybShOLDAsMCxOLDAsMCksdGhpcy5fYnVmZmVyQ2FudmFzJiZPLmRyYXdJbWFnZSh0aGlzLl9idWZmZXJDYW52YXMubm9kZSgpLDAsMCxCLEkpKX07RC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBCPXRoaXM7CkYucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTt0aGlzLl9zY2FsZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKEkpe3JldHVybiBJLm9mZlVwZGF0ZShCLl9yZW5kZXJDYWxsYmFjayl9KTt0aGlzLmRhdGFzZXRzKFtdKX07RC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihCKXtCPXRoaXMuX2RhdGFzZXRUb0RyYXdlci5nZXQoQik7InN2ZyI9PT10aGlzLnJlbmRlcmVyKCk/Qi51c2VTVkcodGhpcy5fcmVuZGVyQXJlYSk6Qi51c2VDYW52YXModGhpcy5fY2FudmFzKTtyZXR1cm4gQn07RC5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgbi5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgcS5TVkdEcmF3ZXIoInBhdGgiLCIiKX0sZnVuY3Rpb24oQil7cmV0dXJuIG5ldyBtLkNhbnZhc0RyYXdlcihCLGZ1bmN0aW9uKCl7fSl9KX07RC5wcm90b3R5cGUuX2dldEFuaW1hdG9yPWZ1bmN0aW9uKEIpe3JldHVybiB0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCk/CnRoaXMuX2FuaW1hdG9yc1tCXXx8bmV3IHAuTnVsbDpuZXcgcC5OdWxsfTtELnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlRXh0ZW50cygpO3RoaXMuX2RhdGFDaGFuZ2VkPSEwO3RoaXMuX3Jlc2V0RW50aXR5U3RvcmUoKTt0aGlzLnJlbmRlckxvd1ByaW9yaXR5KCl9O0QucHJvdG90eXBlLmF0dHI9ZnVuY3Rpb24oQixJLE4pe2lmKG51bGw9PUkpcmV0dXJuIHRoaXMuX2F0dHJCaW5kaW5ncy5nZXQoQik7dGhpcy5fYmluZEF0dHIoQixJLE4pO3RoaXMucmVuZGVyKCk7cmV0dXJuIHRoaXN9O0QucHJvdG90eXBlLl9iaW5kUHJvcGVydHk9ZnVuY3Rpb24oQixJLE4sTyl7dmFyIEg9dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoQik7SD1udWxsIT1IP0guc2NhbGU6bnVsbDt0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLnNldChCLHthY2Nlc3NvcjoiZnVuY3Rpb24iPT09dHlwZW9mIEk/STpmdW5jdGlvbigpe3JldHVybiBJfSxzY2FsZTpOLHBvc3RTY2FsZTpPfSk7Cm51bGwhPUgmJnRoaXMuX3VuaW5zdGFsbFNjYWxlRm9yS2V5KEgsQik7bnVsbCE9TiYmdGhpcy5faW5zdGFsbFNjYWxlRm9yS2V5KE4sQik7dGhpcy5fY2xlYXJBdHRyVG9Qcm9qZWN0b3JDYWNoZSgpfTtELnByb3RvdHlwZS5fYmluZEF0dHI9ZnVuY3Rpb24oQixJLE4pe3ZhciBPPXRoaXMuX2F0dHJCaW5kaW5ncy5nZXQoQik7Tz1udWxsIT1PP08uc2NhbGU6bnVsbDt0aGlzLl9hdHRyQmluZGluZ3Muc2V0KEIse2FjY2Vzc29yOiJmdW5jdGlvbiI9PT10eXBlb2YgST9JOmZ1bmN0aW9uKCl7cmV0dXJuIEl9LHNjYWxlOk59KTtudWxsIT1PJiZ0aGlzLl91bmluc3RhbGxTY2FsZUZvcktleShPLEIpO251bGwhPU4mJnRoaXMuX2luc3RhbGxTY2FsZUZvcktleShOLEIpO3RoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKX07RC5wcm90b3R5cGUuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGU9ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fY2FjaGVkQXR0clRvUHJvamVjdG9yfTtELnByb3RvdHlwZS5fZ2V0QXR0clRvUHJvamVjdG9yPQpmdW5jdGlvbigpe251bGw9PXRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3RvciYmKHRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3Rvcj10aGlzLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3RvcigpKTtyZXR1cm4geC5PYmplY3QuYXNzaWduKHt9LHRoaXMuX2NhY2hlZEF0dHJUb1Byb2plY3Rvcil9O0QucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj1mdW5jdGlvbigpe3ZhciBCPXt9O3RoaXMuX2F0dHJCaW5kaW5ncy5lYWNoKGZ1bmN0aW9uKE4sTyl7QltPXT1ELl9zY2FsZWRBY2Nlc3NvcihOKX0pO3ZhciBJPXRoaXMuX3Byb3BlcnR5UHJvamVjdG9ycygpO09iamVjdC5rZXlzKEkpLmZvckVhY2goZnVuY3Rpb24oTil7bnVsbD09QltOXSYmKEJbTl09SVtOXSl9KTtyZXR1cm4gQn07RC5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXtGLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3RoaXMuX2lzQW5jaG9yZWQmJih0aGlzLl9wYWludCgpLAp0aGlzLl9kYXRhQ2hhbmdlZD0hMSk7cmV0dXJuIHRoaXN9O0QucHJvdG90eXBlLnJlbmRlckxvd1ByaW9yaXR5PWZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyQ2FsbGJhY2soKX07RC5wcm90b3R5cGUuYW5pbWF0ZWQ9ZnVuY3Rpb24oQil7aWYobnVsbD09QilyZXR1cm4gdGhpcy5fYW5pbWF0ZTt0aGlzLl9hbmltYXRlPUI7cmV0dXJuIHRoaXN9O0QucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe0YucHJvdG90eXBlLmRldGFjaC5jYWxsKHRoaXMpO3RoaXMuX3VwZGF0ZUV4dGVudHMoKTtyZXR1cm4gdGhpc307RC5wcm90b3R5cGUuX3NjYWxlcz1mdW5jdGlvbigpe3ZhciBCPVtdO3RoaXMuX2F0dHJCaW5kaW5ncy5lYWNoKGZ1bmN0aW9uKEkpe0k9SS5zY2FsZTtudWxsIT1JJiYtMT09PUIuaW5kZXhPZihJKSYmQi5wdXNoKEkpfSk7dGhpcy5fcHJvcGVydHlCaW5kaW5ncy5lYWNoKGZ1bmN0aW9uKEkpe0k9SS5zY2FsZTtudWxsIT1JJiYtMT09PUIuaW5kZXhPZihJKSYmQi5wdXNoKEkpfSk7CnJldHVybiBCfTtELnByb3RvdHlwZS5fdXBkYXRlRXh0ZW50cz1mdW5jdGlvbigpe3ZhciBCPXRoaXM7dGhpcy5fcmVzZXRFbnRpdHlTdG9yZSgpO3RoaXMuX3NjYWxlcygpLmZvckVhY2goZnVuY3Rpb24oSSl7cmV0dXJuIEkuYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcihCLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKX0pfTtELnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH07RC5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvckF0dHI9ZnVuY3Rpb24oQil7dmFyIEk9dGhpcztudWxsPT10aGlzLl9hdHRyRXh0ZW50c1tCXSYmKHRoaXMuX2F0dHJFeHRlbnRzW0JdPXUubWVtVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4gSS5kYXRhc2V0cygpfSxmdW5jdGlvbigpe3JldHVybiBJLl9hdHRyQmluZGluZ3MuZ2V0KEIpfSxmdW5jdGlvbihOLE8pe3JldHVybiBudWxsPT1PfHxudWxsPT1PLmFjY2Vzc29yP251bGw6Ti5tYXAoZnVuY3Rpb24oSCl7cmV0dXJuIGsoSCwKTyxudWxsKX0pfSkpO3JldHVybiB0aGlzLl9hdHRyRXh0ZW50c1tCXSgpfTtELnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oQil7dmFyIEk9dGhpcztudWxsPT10aGlzLl9wcm9wZXJ0eUV4dGVudHNbQl0mJih0aGlzLl9wcm9wZXJ0eUV4dGVudHNbQl09dS5tZW1UaHVuayhmdW5jdGlvbigpe3JldHVybiBJLmRhdGFzZXRzKCl9LGZ1bmN0aW9uKCl7cmV0dXJuIEkuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KEIpfSxmdW5jdGlvbigpe3JldHVybiBJLl9maWx0ZXJGb3JQcm9wZXJ0eShCKX0sZnVuY3Rpb24oTixPLEgpe3JldHVybiBudWxsPT1PfHxudWxsPT1PLmFjY2Vzc29yP251bGw6Ti5tYXAoZnVuY3Rpb24oSyl7cmV0dXJuIGsoSyxPLEgpfSl9KSk7cmV0dXJuIHRoaXMuX3Byb3BlcnR5RXh0ZW50c1tCXSgpfTtELnByb3RvdHlwZS5faW5jbHVkZWRWYWx1ZXNGb3JTY2FsZT1mdW5jdGlvbihCLEkpe3ZhciBOPXRoaXM7aWYoIXRoaXMuX2lzQW5jaG9yZWQmJgohSSlyZXR1cm5bXTt2YXIgTz1bXTt0aGlzLl9hdHRyQmluZGluZ3MuZWFjaChmdW5jdGlvbihILEspe0guc2NhbGU9PT1CJiYoSD1OLmdldEV4dGVudHNGb3JBdHRyKEspLG51bGwhPUgmJihPPU8uY29uY2F0KGwubWVyZ2UoSCkpKSl9KTt0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmVhY2goZnVuY3Rpb24oSCxLKXtILnNjYWxlPT09QiYmKEg9Ti5nZXRFeHRlbnRzRm9yUHJvcGVydHkoSyksbnVsbCE9SCYmKE89Ty5jb25jYXQobC5tZXJnZShIKSkpKX0pO3JldHVybiBPfTtELnByb3RvdHlwZS5hbmltYXRvcj1mdW5jdGlvbihCLEkpe2lmKHZvaWQgMD09PUkpcmV0dXJuIHRoaXMuX2FuaW1hdG9yc1tCXTt0aGlzLl9hbmltYXRvcnNbQl09STtyZXR1cm4gdGhpc307RC5wcm90b3R5cGUucmVuZGVyZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09dGhpcy5fY2FudmFzPyJzdmciOiJjYW52YXMifTtELnByb3RvdHlwZS5hZGREYXRhc2V0PWZ1bmN0aW9uKEIpe3RoaXMuX2FkZERhdGFzZXQoQik7CnRoaXMuX29uRGF0YXNldFVwZGF0ZSgpfTtELnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbihCKXt0aGlzLl9yZW1vdmVEYXRhc2V0KEIpO3ZhciBJPXRoaXMuX2NyZWF0ZURyYXdlcihCKTt0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuc2V0KEIsSSk7dGhpcy5faXNTZXR1cCYmdGhpcy5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0KEIpO0Iub25VcGRhdGUodGhpcy5fb25EYXRhc2V0VXBkYXRlQ2FsbGJhY2spO3JldHVybiB0aGlzfTtELnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKEIpe3RoaXMuX3JlbW92ZURhdGFzZXQoQik7dGhpcy5fb25EYXRhc2V0VXBkYXRlKCl9O0QucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKEIpe2lmKC0xPT09dGhpcy5kYXRhc2V0cygpLmluZGV4T2YoQikpcmV0dXJuIHRoaXM7dGhpcy5fcmVtb3ZlRGF0YXNldE5vZGVzKEIpO0Iub2ZmVXBkYXRlKHRoaXMuX29uRGF0YXNldFVwZGF0ZUNhbGxiYWNrKTt0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZGVsZXRlKEIpOwpyZXR1cm4gdGhpc307RC5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcz1mdW5jdGlvbihCKXt0aGlzLl9kYXRhc2V0VG9EcmF3ZXIuZ2V0KEIpLnJlbW92ZSgpfTtELnByb3RvdHlwZS5kYXRhc2V0cz1mdW5jdGlvbihCKXt2YXIgST10aGlzLE49W107dGhpcy5fZGF0YXNldFRvRHJhd2VyLmZvckVhY2goZnVuY3Rpb24oTyxIKXtyZXR1cm4gTi5wdXNoKEgpfSk7aWYobnVsbD09QilyZXR1cm4gTjtOLmZvckVhY2goZnVuY3Rpb24oTyl7cmV0dXJuIEkuX3JlbW92ZURhdGFzZXQoTyl9KTtCLmZvckVhY2goZnVuY3Rpb24oTyl7cmV0dXJuIEkuX2FkZERhdGFzZXQoTyl9KTt0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKTtyZXR1cm4gdGhpc307RC5wcm90b3R5cGUuX2dlbmVyYXRlRHJhd1N0ZXBzPWZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IHAuTnVsbH1dfTtELnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PQpmdW5jdGlvbigpe307RC5wcm90b3R5cGUuX2J1aWxkTGlnaHR3ZWlnaHRQbG90RW50aXRpZXM9ZnVuY3Rpb24oQil7dmFyIEk9dGhpcyxOPVtdO0IuZm9yRWFjaChmdW5jdGlvbihPLEgpe3ZhciBLPUkuX2RhdGFzZXRUb0RyYXdlci5nZXQoTyksTT0wO08uZGF0YSgpLmZvckVhY2goZnVuY3Rpb24oTCxRKXt2YXIgVD1JLl9waXhlbFBvaW50KEwsUSxPKTt4Lk1hdGguaXNOYU4oVC54KXx8eC5NYXRoLmlzTmFOKFQueSl8fChOLnB1c2goe2RhdHVtOkwsZ2V0IHBvc2l0aW9uKCl7cmV0dXJuIEkuX3BpeGVsUG9pbnQuY2FsbChJLEwsUSxPKX0saW5kZXg6USxkYXRhc2V0Ok8sZGF0YXNldEluZGV4OkgsY29tcG9uZW50OkksZHJhd2VyOkssdmFsaWREYXR1bUluZGV4Ok19KSxNKyspfSl9KTtyZXR1cm4gTn07RC5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgQj1uZXcgeC5NYXA7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oSSl7cmV0dXJuIEIuc2V0KEksCkkuZGF0YSgpKX0pO3JldHVybiBCfTtELnByb3RvdHlwZS5fcGFpbnQ9ZnVuY3Rpb24oKXt2YXIgQj10aGlzO2RlbGV0ZSB0aGlzLl9jYWNoZWRBdHRyVG9Qcm9qZWN0b3I7dmFyIEk9dGhpcy5fZ2VuZXJhdGVEcmF3U3RlcHMoKSxOPXRoaXMuX2dldERhdGFUb0RyYXcoKSxPPXRoaXMuZGF0YXNldHMoKS5tYXAoZnVuY3Rpb24oSyl7cmV0dXJuIEIuX2RhdGFzZXRUb0RyYXdlci5nZXQoSyl9KTtpZigiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSl7dmFyIEg9dGhpcy5fY2FudmFzLm5vZGUoKTtILmdldENvbnRleHQoIjJkIikuY2xlYXJSZWN0KDAsMCxILmNsaWVudFdpZHRoLEguY2xpZW50SGVpZ2h0KTt0aGlzLl9idWZmZXJDYW52YXNWYWxpZD0hMX10aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihLLE0pe3ZhciBMPUQuYXBwbHlEcmF3U3RlcHMoSSxLKTtPW01dLmRyYXcoTi5nZXQoSyksTCl9KTtIPXRoaXMuZGF0YXNldHMoKS5tYXAoZnVuY3Rpb24oSyl7cmV0dXJuIEQuZ2V0VG90YWxEcmF3VGltZShOLmdldChLKSwKSSl9KTtIPXguTWF0aC5tYXgoSCwwKTt0aGlzLl9hZGRpdGlvbmFsUGFpbnQoSCl9O0QucHJvdG90eXBlLnNlbGVjdGlvbnM9ZnVuY3Rpb24oQil7dmFyIEk9dGhpczt2b2lkIDA9PT1CJiYoQj10aGlzLmRhdGFzZXRzKCkpO2lmKCJjYW52YXMiPT09dGhpcy5yZW5kZXJlcigpKXJldHVybiBsLnNlbGVjdEFsbCgpO3ZhciBOPVtdO0IuZm9yRWFjaChmdW5jdGlvbihPKXtPPUkuX2RhdGFzZXRUb0RyYXdlci5nZXQoTyk7bnVsbCE9TyYmKE89Ty5nZXRWaXN1YWxQcmltaXRpdmVzKCksTi5wdXNoLmFwcGx5KE4sTykpfSk7cmV0dXJuIGwuc2VsZWN0QWxsKE4pfTtELnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihCKXt2YXIgST10aGlzO3JldHVybiB0aGlzLl9nZXRFbnRpdHlTdG9yZShCKS5lbnRpdGllcygpLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gSS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KE4pfSl9O0QucHJvdG90eXBlLl9nZXRFbnRpdHlTdG9yZT1mdW5jdGlvbihCKXtmdW5jdGlvbiBJKEgpe3JldHVybiBOLl9lbnRpdHlCb3VuZHMoSCl9CnZhciBOPXRoaXM7aWYodm9pZCAwIT09Qil7dmFyIE89bmV3IHguRW50aXR5U3RvcmU7Ty5hZGRBbGwodGhpcy5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcyhCKSxJLHRoaXMuX2xvY2FsT3JpZ2luQm91bmRzKCkpO3JldHVybiBPfXZvaWQgMD09PXRoaXMuX2NhY2hlZEVudGl0eVN0b3JlJiYoTz1uZXcgeC5FbnRpdHlTdG9yZSxPLmFkZEFsbCh0aGlzLl9idWlsZExpZ2h0d2VpZ2h0UGxvdEVudGl0aWVzKHRoaXMuZGF0YXNldHMoKSksSSx0aGlzLl9sb2NhbE9yaWdpbkJvdW5kcygpKSx0aGlzLl9jYWNoZWRFbnRpdHlTdG9yZT1PKTtyZXR1cm4gdGhpcy5fY2FjaGVkRW50aXR5U3RvcmV9O0QucHJvdG90eXBlLl9sb2NhbE9yaWdpbkJvdW5kcz1mdW5jdGlvbigpe3JldHVybnt0b3BMZWZ0Ont4OjAseTowfSxib3R0b21SaWdodDp7eDp0aGlzLndpZHRoKCkseTp0aGlzLmhlaWdodCgpfX19O0QucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24oQil7Qj10aGlzLl9waXhlbFBvaW50KEIuZGF0dW0sCkIuaW5kZXgsQi5kYXRhc2V0KTtyZXR1cm57eDpCLngseTpCLnksd2lkdGg6MCxoZWlnaHQ6MH19O0QucHJvdG90eXBlLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHk9ZnVuY3Rpb24oQil7cmV0dXJue2JvdW5kczp0aGlzLl9lbnRpdHlCb3VuZHMoQiksY29tcG9uZW50OkIuY29tcG9uZW50LGRhdGFzZXQ6Qi5kYXRhc2V0LGRhdGFzZXRJbmRleDpCLmRhdGFzZXRJbmRleCxkYXR1bTpCLmRhdHVtLGluZGV4OkIuaW5kZXgscG9zaXRpb246Qi5wb3NpdGlvbixzZWxlY3Rpb246bC5zZWxlY3QoQi5kcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlcygpW0IudmFsaWREYXR1bUluZGV4XSl9fTtELnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoInBsb3RzIG11c3QgaW1wbGVtZW50IGVudGl0aWVzQXQiKTt9O0QucHJvdG90eXBlLmVudGl0eU5lYXJlc3Q9ZnVuY3Rpb24oQil7Qj10aGlzLl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0eU5lYXJlc3QoQik7CnJldHVybiB2b2lkIDA9PT1CP3ZvaWQgMDp0aGlzLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoQil9O0QucHJvdG90eXBlLmVudGl0aWVzSW49ZnVuY3Rpb24oQixJKXtyZXR1cm4gdGhpcy5lbnRpdGllc0luQm91bmRzKG51bGw9PUk/e3g6Qi50b3BMZWZ0LngseTpCLnRvcExlZnQueSx3aWR0aDpCLmJvdHRvbVJpZ2h0LngtQi50b3BMZWZ0LngsaGVpZ2h0OkIuYm90dG9tUmlnaHQueS1CLnRvcExlZnQueX06e3g6Qi5taW4seTpJLm1pbix3aWR0aDpCLm1heC1CLm1pbixoZWlnaHQ6SS5tYXgtSS5taW59KX07RC5wcm90b3R5cGUuZW50aXRpZXNJbkJvdW5kcz1mdW5jdGlvbihCKXt2YXIgST10aGlzO2lmKEI9dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luQm91bmRzKEIpKXJldHVybiBCLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gSS5fbGlnaHR3ZWlnaHRQbG90RW50aXR5VG9QbG90RW50aXR5KE4pfSl9O0QucHJvdG90eXBlLmVudGl0aWVzSW5YQm91bmRzPQpmdW5jdGlvbihCKXt2YXIgST10aGlzO2lmKEI9dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWEJvdW5kcyhCKSlyZXR1cm4gQi5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIEkuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShOKX0pfTtELnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbihCKXt2YXIgST10aGlzO2lmKEI9dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllc0luWUJvdW5kcyhCKSlyZXR1cm4gQi5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIEkuX2xpZ2h0d2VpZ2h0UGxvdEVudGl0eVRvUGxvdEVudGl0eShOKX0pfTtELnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24oQil7Qi5vZmZVcGRhdGUodGhpcy5fcmVuZGVyQ2FsbGJhY2spO0Iub2ZmVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSk7Qi5yZW1vdmVJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfTsKRC5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleT1mdW5jdGlvbihCKXtCLm9uVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKTtCLm9uVXBkYXRlKHRoaXMuX2RlZmVycmVkUmVzZXRFbnRpdHlTdG9yZSk7Qi5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyKHRoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXIpfTtELnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7cmV0dXJue319O0QuX3NjYWxlZEFjY2Vzc29yPWZ1bmN0aW9uKEIpe3ZhciBJPUIuc2NhbGUsTj1CLmFjY2Vzc29yLE89Qi5wb3N0U2NhbGUsSD1udWxsPT1JP046ZnVuY3Rpb24oSyxNLEwpe3JldHVybiBJLnNjYWxlKE4oSyxNLEwpKX07cmV0dXJuIG51bGw9PU8/SDpmdW5jdGlvbihLLE0sTCl7cmV0dXJuIE8oSChLLE0sTCksSyxNLEwpfX07RC5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MH19O0QucHJvdG90eXBlLl9hbmltYXRlT25OZXh0UmVuZGVyPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbmltYXRlJiZ0aGlzLl9kYXRhQ2hhbmdlZH07cmV0dXJuIER9KGQuQ29tcG9uZW50KTtoLl9BTklNQVRJT05fTUFYX0RVUkFUSU9OPTYwMDtmLlBsb3Q9aH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsocCl7Zm9yKHZhciBtIGluIHApZi5oYXNPd25Qcm9wZXJ0eShtKXx8KGZbbV09cFttXSl9ZD1oKDEwNSk7Zi5UaWNrR2VuZXJhdG9ycz1kO2soaCg1NCkpO2soaCgxMDEpKTtrKGgoMTAyKSk7ayhoKDEwMykpO2soaCgxMDQpKTtrKGgoMTA2KSk7dmFyIHQ9aCg1NCksbD1oKDExKTtmLmlzVHJhbnNmb3JtYWJsZT1mdW5jdGlvbihwKXtyZXR1cm4gcCBpbnN0YW5jZW9mIGwuUXVhbnRpdGF0aXZlU2NhbGV8fHAgaW5zdGFuY2VvZiB0LkNhdGVnb3J5fX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoMSksdD1oKDMwKSxsPWgoMCkscD1oKDEyKTtkPWgoMTApO2YuWEFsaWdubWVudD1kLm1ha2VFbnVtKFsibGVmdCIsImNlbnRlciIsInJpZ2h0Il0pOwpmLllBbGlnbm1lbnQ9ZC5tYWtlRW51bShbInRvcCIsImNlbnRlciIsImJvdHRvbSJdKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbSgpe3RoaXMuX292ZXJmbG93SGlkZGVuPSExO3RoaXMuX29yaWdpbj17eDowLHk6MH07dGhpcy5feEFsaWdubWVudD0ibGVmdCI7dGhpcy5feUFsaWdubWVudD0idG9wIjt0aGlzLl9pc0FuY2hvcmVkPXRoaXMuX2lzU2V0dXA9ITE7dGhpcy5fY3NzQ2xhc3Nlcz1uZXcgbC5TZXQ7dGhpcy5fZGVzdHJveWVkPSExO3RoaXMuX29uQW5jaG9yQ2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O3RoaXMuX29uRGV0YWNoQ2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O3RoaXMuX2Nzc0NsYXNzZXMuYWRkKCJjb21wb25lbnQiKX1tLnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24obil7bj1wLmNvZXJjZUV4dGVybmFsRDMobik7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IEVycm9yKCJDYW4ndCByZXVzZSBkZXN0cm95KCktZWQgQ29tcG9uZW50cyEiKTt0aGlzLmlzUm9vdCgpJiYKKHRoaXMuX3Jvb3RFbGVtZW50PW4sdGhpcy5fcm9vdEVsZW1lbnQuY2xhc3NlZCgicGxvdHRhYmxlIiwhMCkpO251bGwhPXRoaXMuX2VsZW1lbnQ/bi5ub2RlKCkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudC5ub2RlKCkpOih0aGlzLl9lbGVtZW50PW4uYXBwZW5kKCJkaXYiKSx0aGlzLl9zZXR1cCgpKTt0aGlzLl9pc0FuY2hvcmVkPSEwO3RoaXMuX29uQW5jaG9yQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9uQW5jaG9yPWZ1bmN0aW9uKG4pe3RoaXMuX2lzQW5jaG9yZWQmJm4odGhpcyk7dGhpcy5fb25BbmNob3JDYWxsYmFja3MuYWRkKG4pfTttLnByb3RvdHlwZS5vZmZBbmNob3I9ZnVuY3Rpb24obil7dGhpcy5fb25BbmNob3JDYWxsYmFja3MuZGVsZXRlKG4pfTttLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuX2lzU2V0dXB8fCh0aGlzLl9jc3NDbGFzc2VzLmZvckVhY2goZnVuY3Rpb24ocSl7bi5fZWxlbWVudC5jbGFzc2VkKHEsCiEwKX0pLHRoaXMuX2Nzc0NsYXNzZXM9bmV3IGwuU2V0LHRoaXMuX2JhY2tncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImJhY2tncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fY29udGVudD10aGlzLl9lbGVtZW50LmFwcGVuZCgic3ZnIikuY2xhc3NlZCgiY29udGVudCIsITApLHRoaXMuX2ZvcmVncm91bmRDb250YWluZXI9dGhpcy5fZWxlbWVudC5hcHBlbmQoInN2ZyIpLmNsYXNzZWQoImZvcmVncm91bmQtY29udGFpbmVyIiwhMCksdGhpcy5fb3ZlcmZsb3dIaWRkZW4/dGhpcy5fY29udGVudC5jbGFzc2VkKCJjb21wb25lbnQtb3ZlcmZsb3ctaGlkZGVuIiwhMCk6dGhpcy5fY29udGVudC5jbGFzc2VkKCJjb21wb25lbnQtb3ZlcmZsb3ctdmlzaWJsZSIsITApLHRoaXMuX2lzU2V0dXA9ITApfTttLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbigpe3JldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfX07bS5wcm90b3R5cGUuY29tcHV0ZUxheW91dD0KZnVuY3Rpb24obixxLHUpe2lmKG51bGw9PW58fG51bGw9PXF8fG51bGw9PXUpe2lmKG51bGw9PXRoaXMuX2VsZW1lbnQpdGhyb3cgRXJyb3IoImFuY2hvcigpIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBjb21wdXRlTGF5b3V0KCkiKTtpZihudWxsIT10aGlzLl9yb290RWxlbWVudCluPXt4OjAseTowfSx1PXRoaXMuX3Jvb3RFbGVtZW50Lm5vZGUoKSxxPWwuRE9NLmVsZW1lbnRXaWR0aCh1KSx1PWwuRE9NLmVsZW1lbnRIZWlnaHQodSk7ZWxzZSB0aHJvdyBFcnJvcigibnVsbCBhcmd1bWVudHMgY2Fubm90IGJlIHBhc3NlZCB0byBjb21wdXRlTGF5b3V0KCkgb24gYSBub24tcm9vdCwgdW5hbmNob3JlZCBub2RlIik7fXZhciB4PXRoaXMuX3NpemVGcm9tT2ZmZXIocSx1KSxBPXguaGVpZ2h0O3g9eC53aWR0aDt0aGlzLnNldEJvdW5kcyh4LEEsbi54KyhxLXgpKm0uX3hBbGlnblRvUHJvcG9ydGlvblt0aGlzLl94QWxpZ25tZW50XSxuLnkrKHUtQSkqbS5feUFsaWduVG9Qcm9wb3J0aW9uW3RoaXMuX3lBbGlnbm1lbnRdKTsKcmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnNldEJvdW5kcz1mdW5jdGlvbihuLHEsdSx4KXt2b2lkIDA9PT11JiYodT0wKTt2b2lkIDA9PT14JiYoeD0wKTt0aGlzLl93aWR0aD1uO3RoaXMuX2hlaWdodD1xO3RoaXMuX29yaWdpbj17eDp1LHk6eH07bnVsbCE9dGhpcy5fZWxlbWVudCYmdGhpcy5fZWxlbWVudC5zdHlsZXMoe2xlZnQ6dSsicHgiLGhlaWdodDpxKyJweCIsdG9wOngrInB4Iix3aWR0aDpuKyJweCJ9KTtudWxsIT10aGlzLl9yZXNpemVIYW5kbGVyJiZ0aGlzLl9yZXNpemVIYW5kbGVyKHt3aWR0aDpuLGhlaWdodDpxfSl9O20ucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKG4scSl7dmFyIHU9dGhpcy5yZXF1ZXN0ZWRTcGFjZShuLHEpO3JldHVybnt3aWR0aDp0aGlzLmZpeGVkV2lkdGgoKT9NYXRoLm1pbihuLHUubWluV2lkdGgpOm4saGVpZ2h0OnRoaXMuZml4ZWRIZWlnaHQoKT9NYXRoLm1pbihxLHUubWluSGVpZ2h0KTpxfX07bS5wcm90b3R5cGUucmVuZGVyPQpmdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJjA8PXRoaXMud2lkdGgoKSYmMDw9dGhpcy5oZWlnaHQoKSYmdC5yZWdpc3RlclRvUmVuZGVyKHRoaXMpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5yZW5kZXJMb3dQcmlvcml0eT1mdW5jdGlvbigpe3RoaXMucmVuZGVyKCl9O20ucHJvdG90eXBlLl9zY2hlZHVsZUNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24oKXt0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9pc1NldHVwJiZ0LnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyKHRoaXMpfTttLnByb3RvdHlwZS5vblJlc2l6ZT1mdW5jdGlvbihuKXt0aGlzLl9yZXNpemVIYW5kbGVyPW47cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2lzU2V0dXAmJih0aGlzLmlzUm9vdCgpP3RoaXMuX3NjaGVkdWxlQ29tcHV0ZUxheW91dCgpOgp0aGlzLnBhcmVudCgpLnJlZHJhdygpKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7fTttLnByb3RvdHlwZS5yZW5kZXJUbz1mdW5jdGlvbihuKXt0aGlzLmRldGFjaCgpO2lmKG51bGwhPW4pe249InN0cmluZyI9PT10eXBlb2Ygbj9rLnNlbGVjdChuKTpuIGluc3RhbmNlb2YgRWxlbWVudD9rLnNlbGVjdChuKTpwLmNvZXJjZUV4dGVybmFsRDMobik7aWYoIW4ubm9kZSgpfHxudWxsPT1uLm5vZGUoKS5ub2RlTmFtZSl0aHJvdyBFcnJvcigiUGxvdHRhYmxlIHJlcXVpcmVzIGEgdmFsaWQgRWxlbWVudCB0byByZW5kZXJUbyIpO2lmKCJzdmciPT09bi5ub2RlKCkubm9kZU5hbWUpdGhyb3cgRXJyb3IoIlBsb3R0YWJsZSAzLnggYW5kIGxhdGVyIGNhbiBvbmx5IHJlbmRlclRvIGFuIEhUTUwgY29tcG9uZW50OyBwYXNzIGEgZGl2IGluc3RlYWQhIik7dGhpcy5hbmNob3Iobil9aWYobnVsbD09dGhpcy5fZWxlbWVudCl0aHJvdyBFcnJvcigiSWYgYSBDb21wb25lbnQgaGFzIG5ldmVyIGJlZW4gcmVuZGVyZWQgYmVmb3JlLCB0aGVuIHJlbmRlclRvIG11c3QgYmUgZ2l2ZW4gYSBub2RlIHRvIHJlbmRlciB0bywgb3IgYSBkMy5TZWxlY3Rpb24sIG9yIGEgc2VsZWN0b3Igc3RyaW5nIik7CnQucmVnaXN0ZXJUb0NvbXB1dGVMYXlvdXRBbmRSZW5kZXIodGhpcyk7dC5mbHVzaCgpfTttLnByb3RvdHlwZS54QWxpZ25tZW50PWZ1bmN0aW9uKG4pe2lmKG51bGw9PW4pcmV0dXJuIHRoaXMuX3hBbGlnbm1lbnQ7bj1uLnRvTG93ZXJDYXNlKCk7aWYobnVsbD09bS5feEFsaWduVG9Qcm9wb3J0aW9uW25dKXRocm93IEVycm9yKCJVbnN1cHBvcnRlZCBhbGlnbm1lbnQ6ICIrbik7dGhpcy5feEFsaWdubWVudD1uO3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLnlBbGlnbm1lbnQ9ZnVuY3Rpb24obil7aWYobnVsbD09bilyZXR1cm4gdGhpcy5feUFsaWdubWVudDtuPW4udG9Mb3dlckNhc2UoKTtpZihudWxsPT1tLl95QWxpZ25Ub1Byb3BvcnRpb25bbl0pdGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIGFsaWdubWVudDogIituKTt0aGlzLl95QWxpZ25tZW50PW47dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24obil7cmV0dXJuIG51bGw9PQpuPyExOm51bGw9PXRoaXMuX2VsZW1lbnQ/dGhpcy5fY3NzQ2xhc3Nlcy5oYXMobik6dGhpcy5fZWxlbWVudC5jbGFzc2VkKG4pfTttLnByb3RvdHlwZS5hZGRDbGFzcz1mdW5jdGlvbihuKXtudWxsIT1uJiYobnVsbD09dGhpcy5fZWxlbWVudD90aGlzLl9jc3NDbGFzc2VzLmFkZChuKTp0aGlzLl9lbGVtZW50LmNsYXNzZWQobiwhMCkpfTttLnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbihuKXtudWxsIT1uJiYobnVsbD09dGhpcy5fZWxlbWVudD90aGlzLl9jc3NDbGFzc2VzLmRlbGV0ZShuKTp0aGlzLl9lbGVtZW50LmNsYXNzZWQobiwhMSkpfTttLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITF9O20ucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITF9O20ucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe3RoaXMucGFyZW50KG51bGwpO3RoaXMuX2lzQW5jaG9yZWQmJnRoaXMuX2VsZW1lbnQucmVtb3ZlKCk7dGhpcy5faXNBbmNob3JlZD0KITE7dGhpcy5fb25EZXRhY2hDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUub25EZXRhY2g9ZnVuY3Rpb24obil7dGhpcy5fb25EZXRhY2hDYWxsYmFja3MuYWRkKG4pfTttLnByb3RvdHlwZS5vZmZEZXRhY2g9ZnVuY3Rpb24obil7dGhpcy5fb25EZXRhY2hDYWxsYmFja3MuZGVsZXRlKG4pfTttLnByb3RvdHlwZS5wYXJlbnQ9ZnVuY3Rpb24obil7aWYodm9pZCAwPT09bilyZXR1cm4gdGhpcy5fcGFyZW50O2lmKG51bGwhPT1uJiYhbi5oYXModGhpcykpdGhyb3cgRXJyb3IoIlBhc3NlZCBpbnZhbGlkIHBhcmVudCIpO3RoaXMuX3BhcmVudD1uO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5ib3VuZHM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLm9yaWdpbigpO3JldHVybnt0b3BMZWZ0Om4sYm90dG9tUmlnaHQ6e3g6bi54K3RoaXMud2lkdGgoKSx5Om4ueSt0aGlzLmhlaWdodCgpfX19O20ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95ZWQ9CiEwO3RoaXMuZGV0YWNoKCl9O20ucHJvdG90eXBlLndpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dpZHRofTttLnByb3RvdHlwZS5oZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faGVpZ2h0fTttLnByb3RvdHlwZS5vcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm57eDp0aGlzLl9vcmlnaW4ueCx5OnRoaXMuX29yaWdpbi55fX07bS5wcm90b3R5cGUub3JpZ2luVG9Sb290PWZ1bmN0aW9uKCl7Zm9yKHZhciBuPXRoaXMub3JpZ2luKCkscT10aGlzLnBhcmVudCgpO251bGwhPXE7KXt2YXIgdT1xLm9yaWdpbigpO24ueCs9dS54O24ueSs9dS55O3E9cS5wYXJlbnQoKX1yZXR1cm4gbn07bS5wcm90b3R5cGUucm9vdD1mdW5jdGlvbigpe2Zvcih2YXIgbj10aGlzOyFuLmlzUm9vdCgpOyluPW4ucGFyZW50KCk7cmV0dXJuIG59O20ucHJvdG90eXBlLmlzUm9vdD1mdW5jdGlvbigpe3JldHVybiBudWxsPT10aGlzLnBhcmVudCgpfTttLnByb3RvdHlwZS5mb3JlZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvcmVncm91bmRDb250YWluZXJ9OwptLnByb3RvdHlwZS5jb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NvbnRlbnR9O20ucHJvdG90eXBlLmVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxlbWVudH07bS5wcm90b3R5cGUucm9vdEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290KCkuX3Jvb3RFbGVtZW50fTttLnByb3RvdHlwZS5iYWNrZ3JvdW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JhY2tncm91bmRDb250YWluZXJ9O3JldHVybiBtfSgpO2QuX3hBbGlnblRvUHJvcG9ydGlvbj17bGVmdDowLGNlbnRlcjouNSxyaWdodDoxfTtkLl95QWxpZ25Ub1Byb3BvcnRpb249e3RvcDowLGNlbnRlcjouNSxib3R0b206MX07Zi5Db21wb25lbnQ9ZH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ayhoKDU5KSk7ayhoKDYyKSk7ayhoKDEzMykpO2soaCgyMSkpO2soaCg2NCkpO2soaCg2NikpfSwKZnVuY3Rpb24oZCxmKXtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChrLHQpe3RoaXMuX3N2Z0RyYXdlckZhY3Rvcnk9azt0aGlzLl9jYW52YXNEcmF3ZXJGYWN0b3J5PXR9aC5wcm90b3R5cGUudXNlU1ZHPWZ1bmN0aW9uKGspe251bGwhPXRoaXMuX2N1cnJlbnREcmF3ZXImJnRoaXMuX2N1cnJlbnREcmF3ZXIucmVtb3ZlKCk7dmFyIHQ9dGhpcy5fc3ZnRHJhd2VyRmFjdG9yeSgpO3QuYXR0YWNoVG8oayk7dGhpcy5fY3VycmVudERyYXdlcj10fTtoLnByb3RvdHlwZS51c2VDYW52YXM9ZnVuY3Rpb24oayl7bnVsbCE9dGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKTt0aGlzLl9jdXJyZW50RHJhd2VyPXRoaXMuX2NhbnZhc0RyYXdlckZhY3Rvcnkoay5ub2RlKCkuZ2V0Q29udGV4dCgiMmQiKSl9O2gucHJvdG90eXBlLmdldERyYXdlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyfTtoLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXtudWxsIT0KdGhpcy5fY3VycmVudERyYXdlciYmdGhpcy5fY3VycmVudERyYXdlci5yZW1vdmUoKX07aC5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihrLHQpe3RoaXMuX2N1cnJlbnREcmF3ZXIuZHJhdyhrLHQpfTtoLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2N1cnJlbnREcmF3ZXIuZ2V0VmlzdWFsUHJpbWl0aXZlcygpfTtoLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKGspe3JldHVybiB0aGlzLl9jdXJyZW50RHJhd2VyLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXgoayl9O3JldHVybiBofSgpO2YuUHJveHlEcmF3ZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ayhoKDcwKSk7ayhoKDcxKSl9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHApe3ZvaWQgMD09PXAmJihwPTMpO3QocCk7cmV0dXJuIGZ1bmN0aW9uKG0pe3JldHVybiBtLnRvRml4ZWQocCl9fQpmdW5jdGlvbiB0KHApe2lmKDA+cHx8MjA8cCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjAiKTtpZihwIT09TWF0aC5mbG9vcihwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiRm9ybWF0dGVyIHByZWNpc2lvbiBtdXN0IGJlIGFuIGludGVnZXIiKTt9dmFyIGw9aCgxKTtmLmN1cnJlbmN5PWZ1bmN0aW9uKHAsbSxuKXt2b2lkIDA9PT1wJiYocD0yKTt2b2lkIDA9PT1tJiYobT0iJCIpO3ZvaWQgMD09PW4mJihuPSEwKTt2YXIgcT1rKHApO3JldHVybiBmdW5jdGlvbih1KXt2YXIgeD1xKE1hdGguYWJzKHUpKTsiIiE9PXgmJih4PW4/bSt4OngrbSwwPnUmJih4PSItIit4KSk7cmV0dXJuIHh9fTtmLmZpeGVkPWs7Zi5nZW5lcmFsPWZ1bmN0aW9uKCl7dmFyIHA7dm9pZCAwPT09cCYmKHA9Myk7dChwKTtyZXR1cm4gZnVuY3Rpb24obSl7aWYoIm51bWJlciI9PT10eXBlb2YgbSl7dmFyIG49TWF0aC5wb3coMTAscCk7cmV0dXJuIFN0cmluZyhNYXRoLnJvdW5kKG0qCm4pL24pfXJldHVybiBTdHJpbmcobSl9fTtmLmlkZW50aXR5PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybiBTdHJpbmcocCl9fTtmLnBlcmNlbnRhZ2U9ZnVuY3Rpb24ocCl7dm9pZCAwPT09cCYmKHA9MCk7dmFyIG09ayhwKTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHE9bi50b1N0cmluZygpO3E9TWF0aC5wb3coMTAscS5sZW5ndGgtKHEuaW5kZXhPZigiLiIpKzEpKTtyZXR1cm4gbShwYXJzZUludCgoMTAwKm4qcSkudG9TdHJpbmcoKSwxMCkvcSkrIiUifX07Zi5zaVN1ZmZpeD1mdW5jdGlvbihwKXt2b2lkIDA9PT1wJiYocD0zKTt0KHApO3JldHVybiBmdW5jdGlvbihtKXtyZXR1cm4gbC5mb3JtYXQoIi4iK3ArInMiKShtKX19O2Yuc2hvcnRTY2FsZT1mdW5jdGlvbihwKXt2b2lkIDA9PT1wJiYocD0zKTt0KHApO3ZhciBtPWwuZm9ybWF0KCIuIitwKyJlIiksbj1sLmZvcm1hdCgiLiIrcCsiZiIpLHE9TWF0aC5wb3coMTAsMTgpLHU9TWF0aC5wb3coMTAsLXApOwpyZXR1cm4gZnVuY3Rpb24oeCl7dmFyIEE9TWF0aC5hYnMoeCk7aWYoKEE8dXx8QT49cSkmJjAhPT1BKXJldHVybiBtKHgpO2Zvcih2YXIgeT0tMTtBPj1NYXRoLnBvdygxRTMseSsyKSYmND55Oyl5Kys7QT0tMT09PXk/bih4KTpuKHgvTWF0aC5wb3coMUUzLHkrMSkpKyJLTUJUUSJbeV07aWYoMDx4JiYiMTAwMCI9PT1BLnN1YnN0cigwLDQpfHwwPngmJiItMTAwMCI9PT1BLnN1YnN0cigwLDUpKTQ+eT8oeSsrLEE9bih4L01hdGgucG93KDFFMyx5KzEpKSsiS01CVFEiW3ldKTpBPW0oeCk7cmV0dXJuIEF9fTtmLm11bHRpVGltZT1mdW5jdGlvbigpe3ZhciBwPVt7c3BlY2lmaWVyOiIuJUwiLHByZWRpY2F0ZTpmdW5jdGlvbihtKXtyZXR1cm4gMCE9PW0uZ2V0TWlsbGlzZWNvbmRzKCl9fSx7c3BlY2lmaWVyOiI6JVMiLHByZWRpY2F0ZTpmdW5jdGlvbihtKXtyZXR1cm4gMCE9PW0uZ2V0U2Vjb25kcygpfX0se3NwZWNpZmllcjoiJUk6JU0iLHByZWRpY2F0ZTpmdW5jdGlvbihtKXtyZXR1cm4gMCE9PQptLmdldE1pbnV0ZXMoKX19LHtzcGVjaWZpZXI6IiVJICVwIixwcmVkaWNhdGU6ZnVuY3Rpb24obSl7cmV0dXJuIDAhPT1tLmdldEhvdXJzKCl9fSx7c3BlY2lmaWVyOiIlYSAlZCIscHJlZGljYXRlOmZ1bmN0aW9uKG0pe3JldHVybiAwIT09bS5nZXREYXkoKSYmMSE9PW0uZ2V0RGF0ZSgpfX0se3NwZWNpZmllcjoiJWIgJWQiLHByZWRpY2F0ZTpmdW5jdGlvbihtKXtyZXR1cm4gMSE9PW0uZ2V0RGF0ZSgpfX0se3NwZWNpZmllcjoiJWIiLHByZWRpY2F0ZTpmdW5jdGlvbihtKXtyZXR1cm4gMCE9PW0uZ2V0TW9udGgoKX19XTtyZXR1cm4gZnVuY3Rpb24obSl7dmFyIG49cC5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEucHJlZGljYXRlKG0pfSk7cmV0dXJuIGwudGltZUZvcm1hdCgwPG4ubGVuZ3RoP25bMF0uc3BlY2lmaWVyOiIlWSIpKG0pfX07Zi50aW1lPWZ1bmN0aW9uKHApe3JldHVybiBsLnRpbWVGb3JtYXQocCl9fSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9aCgxKSx0PWgoMCk7CmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKHAsbSl7dGhpcy5fcm9vdD1rLnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKTt0aGlzLl9jbGFzc05hbWU9bTt0aGlzLl9zdmdFbGVtZW50TmFtZT1wfWwucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24ocCxtKXt2YXIgbj10aGlzO3RoaXMuX2NyZWF0ZUFuZERlc3Ryb3lET01FbGVtZW50cyhwKTt2YXIgcT0wO20uZm9yRWFjaChmdW5jdGlvbih1KXt0LldpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIG4uX2RyYXdTdGVwKHUpfSxxKTtxKz11LmFuaW1hdG9yLnRvdGFsVGltZShwLmxlbmd0aCl9KX07bC5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe251bGw9PXRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2RlcyYmKHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlcz10aGlzLl9zZWxlY3Rpb24ubm9kZXMoKSk7cmV0dXJuIHRoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlc307CmwucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXg9ZnVuY3Rpb24ocCl7cmV0dXJuIHRoaXMuZ2V0VmlzdWFsUHJpbWl0aXZlcygpW3BdfTtsLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt0aGlzLl9yb290LnJlbW92ZSgpfTtsLnByb3RvdHlwZS5hdHRhY2hUbz1mdW5jdGlvbihwKXtwLm5vZGUoKS5hcHBlbmRDaGlsZCh0aGlzLl9yb290Lm5vZGUoKSl9O2wucHJvdG90eXBlLmdldFJvb3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH07bC5wcm90b3R5cGUuc2VsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3ZnRWxlbWVudE5hbWV9O2wucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7fTtsLnByb3RvdHlwZS5fY3JlYXRlQW5kRGVzdHJveURPTUVsZW1lbnRzPWZ1bmN0aW9uKHApe3A9cC5maWx0ZXIoZnVuY3Rpb24obSl7cmV0dXJuIG51bGwhPW19KTtwPXRoaXMuX3Jvb3Quc2VsZWN0QWxsKHRoaXMuc2VsZWN0b3IoKSkuZGF0YShwKTsKdGhpcy5fc2VsZWN0aW9uPXAuZW50ZXIoKS5hcHBlbmQodGhpcy5fc3ZnRWxlbWVudE5hbWUpLm1lcmdlKHApO3AuZXhpdCgpLnJlbW92ZSgpO3RoaXMuX2NhY2hlZFZpc3VhbFByaW1pdGl2ZXNOb2Rlcz1udWxsO251bGwhPXRoaXMuX2NsYXNzTmFtZSYmdGhpcy5fc2VsZWN0aW9uLmNsYXNzZWQodGhpcy5fY2xhc3NOYW1lLCEwKTt0aGlzLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzKHRoaXMuX3NlbGVjdGlvbil9O2wucHJvdG90eXBlLl9kcmF3U3RlcD1mdW5jdGlvbihwKXt2YXIgbT10aGlzO1siZmlsbCIsInN0cm9rZSJdLmZvckVhY2goZnVuY3Rpb24obil7bnVsbCE9cC5hdHRyVG9BcHBsaWVkUHJvamVjdG9yW25dJiZtLl9zZWxlY3Rpb24uYXR0cihuLHAuYXR0clRvQXBwbGllZFByb2plY3RvcltuXSl9KTtwLmFuaW1hdG9yLmFuaW1hdGUodGhpcy5fc2VsZWN0aW9uLHAuYXR0clRvQXBwbGllZFByb2plY3Rvcik7bnVsbCE9dGhpcy5fY2xhc3NOYW1lJiZ0aGlzLl9zZWxlY3Rpb24uY2xhc3NlZCh0aGlzLl9jbGFzc05hbWUsCiEwKX07cmV0dXJuIGx9KCk7Zi5TVkdEcmF3ZXI9ZH0sZnVuY3Rpb24oZCxmKXtmLm1ha2VFbnVtPWZ1bmN0aW9uKGgpe3JldHVybiBoLnJlZHVjZShmdW5jdGlvbihrLHQpe2tbdF09dDtyZXR1cm4ga30se30pfX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihtLG4pe2Z1bmN0aW9uIHEoKXt0aGlzLmNvbnN0cnVjdG9yPW19Zm9yKHZhciB1IGluIG4pbi5oYXNPd25Qcm9wZXJ0eSh1KSYmKG1bdV09blt1XSk7bS5wcm90b3R5cGU9bnVsbD09PW4/T2JqZWN0LmNyZWF0ZShuKToocS5wcm90b3R5cGU9bi5wcm90b3R5cGUsbmV3IHEpfSx0PWgoMSksbD1oKDI2KSxwPWgoMCk7ZD1mdW5jdGlvbihtKXtmdW5jdGlvbiBuKCl7dmFyIHE9bS5jYWxsKHRoaXMpfHx0aGlzO3EuX3RpY2tHZW5lcmF0b3I9ZnVuY3Rpb24odSl7cmV0dXJuIHUuZGVmYXVsdFRpY2tzKCl9O3EuX3BhZFByb3BvcnRpb249LjA1O3EuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD0KITA7cS5fcGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcnM9bmV3IHAuU2V0O3JldHVybiBxfWsobixtKTtuLnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7dGhpcy5fZG9tYWluTWF4PXRoaXMuX2RvbWFpbk1pbj1udWxsO20ucHJvdG90eXBlLmF1dG9Eb21haW4uY2FsbCh0aGlzKX07bi5wcm90b3R5cGUuX2F1dG9Eb21haW5JZkF1dG9tYXRpY01vZGU9ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLl9kb21haW5NaW4mJm51bGwhPXRoaXMuX2RvbWFpbk1heCl0aGlzLl9zZXREb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NYXhdKTtlbHNle3ZhciBxPXRoaXMuX2dldEV4dGVudCgpO251bGwhPXRoaXMuX2RvbWFpbk1pbj8ocT1xWzFdLHRoaXMuX2RvbWFpbk1pbj49cSYmKHE9dGhpcy5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW4oW3RoaXMuX2RvbWFpbk1pbix0aGlzLl9kb21haW5NaW5dKVsxXSksdGhpcy5fc2V0RG9tYWluKFt0aGlzLl9kb21haW5NaW4scV0pKToKbnVsbCE9dGhpcy5fZG9tYWluTWF4PyhxPXFbMF0sdGhpcy5fZG9tYWluTWF4PD1xJiYocT10aGlzLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbihbdGhpcy5fZG9tYWluTWF4LHRoaXMuX2RvbWFpbk1heF0pWzBdKSx0aGlzLl9zZXREb21haW4oW3EsdGhpcy5fZG9tYWluTWF4XSkpOm0ucHJvdG90eXBlLl9hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlLmNhbGwodGhpcyl9fTtuLnByb3RvdHlwZS5fZ2V0VW5ib3VuZGVkRXh0ZW50PWZ1bmN0aW9uKHEpe3ZvaWQgMD09PXEmJihxPSExKTtxPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKHEpO3ZhciB1PXRoaXMuX2RlZmF1bHRFeHRlbnQoKTswIT09cS5sZW5ndGgmJihxPVtwLk1hdGgubWluKHEsdVswXSkscC5NYXRoLm1heChxLHVbMV0pXSx1PXRoaXMuX3BhZERvbWFpbihxKSk7cmV0dXJuIHV9O24ucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXt2YXIgcT10aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoKTtudWxsIT10aGlzLl9kb21haW5NaW4mJgoocVswXT10aGlzLl9kb21haW5NaW4pO251bGwhPXRoaXMuX2RvbWFpbk1heCYmKHFbMV09dGhpcy5fZG9tYWluTWF4KTtyZXR1cm4gcX07bi5wcm90b3R5cGUuYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcj1mdW5jdGlvbihxKXt0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5hZGQocSk7dGhpcy5fYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpfTtuLnByb3RvdHlwZS5yZW1vdmVQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyPWZ1bmN0aW9uKHEpe3RoaXMuX3BhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXJzLmRlbGV0ZShxKTt0aGlzLl9hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCl9O24ucHJvdG90eXBlLnBhZFByb3BvcnRpb249ZnVuY3Rpb24ocSl7aWYobnVsbD09cSlyZXR1cm4gdGhpcy5fcGFkUHJvcG9ydGlvbjtpZigwPnEpdGhyb3cgRXJyb3IoInBhZFByb3BvcnRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiKTt0aGlzLl9wYWRQcm9wb3J0aW9uPXE7dGhpcy5fYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpOwpyZXR1cm4gdGhpc307bi5wcm90b3R5cGUuX3BhZERvbWFpbj1mdW5jdGlvbihxKXt2YXIgdT10aGlzO2lmKHFbMF0udmFsdWVPZigpPT09cVsxXS52YWx1ZU9mKCkpcmV0dXJuIHRoaXMuX2V4cGFuZFNpbmdsZVZhbHVlRG9tYWluKHEpO2lmKDA9PT10aGlzLl9wYWRQcm9wb3J0aW9uKXJldHVybiBxO3ZhciB4PXRoaXMuX3BhZFByb3BvcnRpb24vMixBPXFbMF0seT1xWzFdLHc9ITEsQz0hMTt0aGlzLl9wYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVycy5mb3JFYWNoKGZ1bmN0aW9uKEQpe0QodSkuZm9yRWFjaChmdW5jdGlvbihCKXtCLnZhbHVlT2YoKT09PUEudmFsdWVPZigpJiYodz0hMCk7Qi52YWx1ZU9mKCk9PT15LnZhbHVlT2YoKSYmKEM9ITApfSl9KTt2YXIgRj10aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKTt0aGlzLl9iYWNraW5nU2NhbGVEb21haW4ocSk7cT13P0E6dGhpcy5pbnZlcnQodGhpcy5zY2FsZShBKS0odGhpcy5zY2FsZSh5KS10aGlzLnNjYWxlKEEpKSp4KTt4PUM/Cnk6dGhpcy5pbnZlcnQodGhpcy5zY2FsZSh5KSsodGhpcy5zY2FsZSh5KS10aGlzLnNjYWxlKEEpKSp4KTt0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oRik7cmV0dXJuIHRoaXMuX3NuYXBwaW5nRG9tYWluRW5hYmxlZD90aGlzLl9uaWNlRG9tYWluKFtxLHhdKTpbcSx4XX07bi5wcm90b3R5cGUuc25hcHBpbmdEb21haW5FbmFibGVkPWZ1bmN0aW9uKHEpe251bGwhPXEmJih0aGlzLl9zbmFwcGluZ0RvbWFpbkVuYWJsZWQ9cSx0aGlzLl9hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCkpfTtuLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24ocSl7cmV0dXJuIHF9O24ucHJvdG90eXBlLmludmVydD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnQiKTt9O24ucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbihxKXtudWxsIT1xJiYodGhpcy5fZG9tYWluTWluPXFbMF0sdGhpcy5fZG9tYWluTWF4PXFbMV0pOwpyZXR1cm4gbS5wcm90b3R5cGUuZG9tYWluLmNhbGwodGhpcyxxKX07bi5wcm90b3R5cGUuZG9tYWluTWluPWZ1bmN0aW9uKHEpe2lmKG51bGw9PXEpcmV0dXJuIHRoaXMuZG9tYWluKClbMF07dGhpcy5fZG9tYWluTWluPXE7dGhpcy5fYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZSgpO3JldHVybiB0aGlzfTtuLnByb3RvdHlwZS5kb21haW5NYXg9ZnVuY3Rpb24ocSl7aWYobnVsbD09cSlyZXR1cm4gdGhpcy5kb21haW4oKVsxXTt0aGlzLl9kb21haW5NYXg9cTt0aGlzLl9hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCk7cmV0dXJuIHRoaXN9O24ucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKHEpe3E9dC5leHRlbnQocS5maWx0ZXIoZnVuY3Rpb24odSl7cmV0dXJuIHAuTWF0aC5pc1ZhbGlkTnVtYmVyKCt1KX0pKTtyZXR1cm4gbnVsbD09cVswXXx8bnVsbD09cVsxXT9bXTpxfTtuLnByb3RvdHlwZS56b29tPWZ1bmN0aW9uKHEsdSl7dmFyIHg9dGhpczt0aGlzLmRvbWFpbih0aGlzLnJhbmdlKCkubWFwKGZ1bmN0aW9uKEEpe3JldHVybiB4LmludmVydChsLnpvb21PdXQoQSwKcSx1KSl9KSl9O24ucHJvdG90eXBlLnBhbj1mdW5jdGlvbihxKXt2YXIgdT10aGlzO3RoaXMuZG9tYWluKHRoaXMucmFuZ2UoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHUuaW52ZXJ0KHgrcSl9KSl9O24ucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2NhbGVUcmFuc2Zvcm1hdGlvbiIpO307bi5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBpbnZlcnRlZFRyYW5zZm9ybWF0aW9uIik7fTtuLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBnZXRUcmFuc2Zvcm1hdGlvbkV4dGVudCIpO307bi5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25Eb21haW49ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4iKTsKfTtuLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBzZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbiIpO307bi5wcm90b3R5cGUuX3NldERvbWFpbj1mdW5jdGlvbihxKXtmdW5jdGlvbiB1KHgpe3JldHVybiBwLk1hdGguaXNOYU4oeCl8fEluZmluaXR5PT09eHx8LUluZmluaXR5PT09eH11KHFbMF0pfHx1KHFbMV0pP3AuV2luZG93Lndhcm4oIldhcm5pbmc6IFF1YW50aXRhdGl2ZVNjYWxlcyBjYW5ub3QgdGFrZSBOYU4gb3IgSW5maW5pdHkgYXMgYSBkb21haW4gdmFsdWUuIElnbm9yaW5nLiIpOm0ucHJvdG90eXBlLl9zZXREb21haW4uY2FsbCh0aGlzLHEpfTtuLnByb3RvdHlwZS5kZWZhdWx0VGlja3M9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldERlZmF1bHRUaWNrcyIpO307bi5wcm90b3R5cGUudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdGlja0dlbmVyYXRvcih0aGlzKX07Cm4ucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9uaWNlRG9tYWluIik7fTtuLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJTdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZSBfZGVmYXVsdEV4dGVudCIpO307bi5wcm90b3R5cGUudGlja0dlbmVyYXRvcj1mdW5jdGlvbigpe3ZhciBxPVBsb3R0YWJsZS5TY2FsZXMuVGlja0dlbmVyYXRvcnMuaW50ZWdlclRpY2tHZW5lcmF0b3IoKTtudWxsIT1xJiYodGhpcy5fdGlja0dlbmVyYXRvcj1xKX07cmV0dXJuIG59KGgoMTcpLlNjYWxlKTtkLl9ERUZBVUxUX05VTV9USUNLUz0xMDtmLlF1YW50aXRhdGl2ZVNjYWxlPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDEpO2YuY29lcmNlRXh0ZXJuYWxEMz1mdW5jdGlvbih0KXtpZihudWxsPT10LmF0dHJzKXtpZihudWxsPT10Lm5vZGVzKXt2YXIgbD1bXTt0LmVhY2goZnVuY3Rpb24oKXtsLnB1c2godGhpcyl9KTsKcmV0dXJuIGsuc2VsZWN0QWxsKGwpfXJldHVybiBrLnNlbGVjdEFsbCh0Lm5vZGVzKCkpfXJldHVybiB0fX0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ayhoKDgzKSk7ayhoKDg0KSk7ayhoKDg1KSl9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHQpe2Zvcih2YXIgbCBpbiB0KWYuaGFzT3duUHJvcGVydHkobCl8fChmW2xdPXRbbF0pfWsoaCg0NCkpO2soaCg0NSkpO2soaCg0NikpO2soaCgxOCkpO2soaCg2KSk7ayhoKDMzKSk7ayhoKDM0KSk7ayhoKDQ3KSk7ayhoKDkpKTtrKGgoNDgpKX0sZnVuY3Rpb24oZCxmKXtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaCgpe3ZhciBrPXRoaXM7dGhpcy5fYW5jaG9yQ2FsbGJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIGsuX2FuY2hvcih0KX07dGhpcy5fZW5hYmxlZD0hMH1oLnByb3RvdHlwZS5hdHRhY2hUbz1mdW5jdGlvbihrKXt0aGlzLl9kaXNjb25uZWN0KCk7CnRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG89azt0aGlzLl9jb25uZWN0KCk7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLmRldGFjaEZyb209ZnVuY3Rpb24oKXt0aGlzLmRldGFjaCgpfTtoLnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLl9kaXNjb25uZWN0KCk7dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbz1udWxsO3JldHVybiB0aGlzfTtoLnByb3RvdHlwZS5lbmFibGVkPWZ1bmN0aW9uKGspe2lmKG51bGw9PWspcmV0dXJuIHRoaXMuX2VuYWJsZWQ7KHRoaXMuX2VuYWJsZWQ9ayk/dGhpcy5fY29ubmVjdCgpOnRoaXMuX2Rpc2Nvbm5lY3QoKTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQ9ITB9O2gucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3RoaXMuX2lzQW5jaG9yZWQ9ITF9O2gucHJvdG90eXBlLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlPWZ1bmN0aW9uKGspe3ZhciB0PXRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8ub3JpZ2luVG9Sb290KCk7CnJldHVybnt4OmsueC10LngseTprLnktdC55fX07aC5wcm90b3R5cGUuX2lzSW5zaWRlQ29tcG9uZW50PWZ1bmN0aW9uKGspe3JldHVybiAwPD1rLngmJjA8PWsueSYmay54PD10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLndpZHRoKCkmJmsueTw9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX07aC5wcm90b3R5cGUuX2Nvbm5lY3Q9ZnVuY3Rpb24oKXtpZih0aGlzLmVuYWJsZWQoKSYmbnVsbCE9dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyYmIXRoaXMuX2lzQW5jaG9yZWQpdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5vbkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9O2gucHJvdG90eXBlLl9kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5faXNBbmNob3JlZCYmdGhpcy5fdW5hbmNob3IoKTtudWxsIT10aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvJiZ0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLm9mZkFuY2hvcih0aGlzLl9hbmNob3JDYWxsYmFjayl9O3JldHVybiBofSgpOwpmLkludGVyYWN0aW9uPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obixxKXtmdW5jdGlvbiB1KCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufWZvcih2YXIgeCBpbiBxKXEuaGFzT3duUHJvcGVydHkoeCkmJihuW3hdPXFbeF0pO24ucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX0sdD1oKDMpLGw9aCgwKSxwPWgoNTIpLG09aCgyKTtkPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHEoKXt2YXIgdT1uLmNhbGwodGhpcyl8fHRoaXM7dS5fYXV0b0FkanVzdFhTY2FsZURvbWFpbj0hMTt1Ll9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPSExO3UuX2RlZmVycmVkUmVuZGVyaW5nPSExO3UuX2FwcGx5RGVmZXJyZWRSZW5kZXJpbmdUcmFuc2Zvcm09ZnVuY3Rpb24oeCxBLHksdyl7dS5faXNBbmNob3JlZCYmKG51bGwhPXUuX3JlbmRlckFyZWEmJnUuX3JlbmRlckFyZWEuYXR0cigidHJhbnNmb3JtIiwKInRyYW5zbGF0ZSgiK3grIiwgIitBKyIpIHNjYWxlKCIreSsiLCAiK3crIikiKSxudWxsIT11Ll9jYW52YXMmJnUuX2NhbnZhcy5zdHlsZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIreCsicHgsICIrQSsicHgpIHNjYWxlKCIreSsiLCAiK3crIikiKSl9O3UuYWRkQ2xhc3MoInh5LXBsb3QiKTt1Ll9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIHUuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YKCl9O3UuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gdS5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKX07dS5fcmVuZGVyQ2FsbGJhY2s9ZnVuY3Rpb24oKXtpZih1LmRlZmVycmVkUmVuZGVyaW5nKCkpe3ZhciB4PXUueCgpJiZ1LngoKS5zY2FsZSxBPXUueSgpJiZ1LnkoKS5zY2FsZTt1Ll9kZWZlcnJlZFJlbmRlcmVyLnVwZGF0ZURvbWFpbnMoeCxBKX1lbHNlIHUucmVuZGVyKCl9Owp1Ll9kZWZlcnJlZFJlbmRlcmVyPW5ldyBwLkRlZmVycmVkUmVuZGVyZXIoZnVuY3Rpb24oKXtyZXR1cm4gdS5yZW5kZXIoKX0sdS5fYXBwbHlEZWZlcnJlZFJlbmRlcmluZ1RyYW5zZm9ybSk7cmV0dXJuIHV9ayhxLG4pO3EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMuZGVmZXJyZWRSZW5kZXJpbmcoKSYmdGhpcy5fZGVmZXJyZWRSZW5kZXJlci5yZXNldFRyYW5zZm9ybXMoKTtyZXR1cm4gbi5wcm90b3R5cGUucmVuZGVyLmNhbGwodGhpcyl9O3EucHJvdG90eXBlLmRlZmVycmVkUmVuZGVyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmVycmVkUmVuZGVyaW5nfTtxLnByb3RvdHlwZS54PWZ1bmN0aW9uKHUseCxBKXtpZihudWxsPT11KXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChxLl9YX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KHEuX1hfS0VZLHUseCxBKTt1PXRoaXMud2lkdGgoKTtudWxsIT14JiZudWxsIT11JiZ4LnJhbmdlKFswLHVdKTsKdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUueT1mdW5jdGlvbih1LHgsQSl7aWYobnVsbD09dSlyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQocS5fWV9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShxLl9ZX0tFWSx1LHgsQSk7dT10aGlzLmhlaWdodCgpO251bGwhPXgmJm51bGwhPXUmJih4IGluc3RhbmNlb2YgdC5DYXRlZ29yeT94LnJhbmdlKFswLHVdKTp4LnJhbmdlKFt1LDBdKSk7dGhpcy5fYXV0b0FkanVzdFhTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKHUpe3JldHVybiJ4Ij09PXUmJnRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW4/dGhpcy5fbWFrZUZpbHRlckJ5UHJvcGVydHkoInkiKToKInkiPT09dSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj90aGlzLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eSgieCIpOm51bGx9O3EucHJvdG90eXBlLl9tYWtlRmlsdGVyQnlQcm9wZXJ0eT1mdW5jdGlvbih1KXt1PXRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHUpO2lmKG51bGwhPXUpe3ZhciB4PXUuYWNjZXNzb3IsQT11LnNjYWxlO2lmKG51bGwhPUEpcmV0dXJuIGZ1bmN0aW9uKHksdyxDKXt2YXIgRj1BLnJhbmdlKCk7cmV0dXJuIGwuTWF0aC5pblJhbmdlKEEuc2NhbGUoeCh5LHcsQykpLEZbMF0sRlsxXSl9fXJldHVybiBudWxsfTtxLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24odSx4KXtuLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLHUseCk7dS5vZmZVcGRhdGUoeD09PXEuX1hfS0VZP3RoaXMuX2FkanVzdFlEb21haW5PbkNoYW5nZUZyb21YQ2FsbGJhY2s6dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVlDYWxsYmFjayl9OwpxLnByb3RvdHlwZS5faW5zdGFsbFNjYWxlRm9yS2V5PWZ1bmN0aW9uKHUseCl7bi5wcm90b3R5cGUuX2luc3RhbGxTY2FsZUZvcktleS5jYWxsKHRoaXMsdSx4KTt1Lm9uVXBkYXRlKHg9PT1xLl9YX0tFWT90aGlzLl9hZGp1c3RZRG9tYWluT25DaGFuZ2VGcm9tWENhbGxiYWNrOnRoaXMuX2FkanVzdFhEb21haW5PbkNoYW5nZUZyb21ZQ2FsbGJhY2spfTtxLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bi5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO3RoaXMueCgpLnNjYWxlJiZ0aGlzLngoKS5zY2FsZS5vZmZVcGRhdGUodGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVhDYWxsYmFjayk7dGhpcy55KCkuc2NhbGUmJnRoaXMueSgpLnNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWUNhbGxiYWNrKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuYXV0b3JhbmdlTW9kZT1mdW5jdGlvbih1KXtpZihudWxsPT11KXJldHVybiB0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPwoieCI6dGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbj8ieSI6Im5vbmUiO3N3aXRjaCh1KXtjYXNlICJ4Ijp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSEwO3RoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITE7dGhpcy5fYWRqdXN0WERvbWFpbk9uQ2hhbmdlRnJvbVkoKTticmVhaztjYXNlICJ5Ijp0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluPSExO3RoaXMuX2F1dG9BZGp1c3RZU2NhbGVEb21haW49ITA7dGhpcy5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVgoKTticmVhaztjYXNlICJub25lIjp0aGlzLl9hdXRvQWRqdXN0WVNjYWxlRG9tYWluPXRoaXMuX2F1dG9BZGp1c3RYU2NhbGVEb21haW49ITE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiSW52YWxpZCBzY2FsZSBuYW1lICciK3UrIicsIG11c3QgYmUgJ3gnLCAneScgb3IgJ25vbmUnIik7fXJldHVybiB0aGlzfTtxLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHUseCxBKXtuLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcywKdSx4LEEpO3U9KHU9dGhpcy54KCkpJiZ1LnNjYWxlO251bGwhPXUmJnUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk7dT0odT10aGlzLnkoKSkmJnUuc2NhbGU7bnVsbCE9dSYmKHUgaW5zdGFuY2VvZiB0LkNhdGVnb3J5P3UucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pOnUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuX3VwZGF0ZVhFeHRlbnRzQW5kQXV0b2RvbWFpbj1mdW5jdGlvbigpe3ZhciB1PXRoaXMueCgpLnNjYWxlO251bGwhPXUmJnUuYXV0b0RvbWFpbigpfTtxLnByb3RvdHlwZS5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluPWZ1bmN0aW9uKCl7dmFyIHU9dGhpcy55KCkuc2NhbGU7bnVsbCE9dSYmdS5hdXRvRG9tYWluKCl9O3EucHJvdG90eXBlLnNob3dBbGxEYXRhPWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlWEV4dGVudHNBbmRBdXRvZG9tYWluKCk7dGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCk7cmV0dXJuIHRoaXN9OwpxLnByb3RvdHlwZS5fYWRqdXN0WURvbWFpbk9uQ2hhbmdlRnJvbVg9ZnVuY3Rpb24oKXt0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSYmdGhpcy5fYXV0b0FkanVzdFlTY2FsZURvbWFpbiYmdGhpcy5fdXBkYXRlWUV4dGVudHNBbmRBdXRvZG9tYWluKCl9O3EucHJvdG90eXBlLl9hZGp1c3RYRG9tYWluT25DaGFuZ2VGcm9tWT1mdW5jdGlvbigpe3RoaXMuX3Byb2plY3RvcnNSZWFkeSgpJiZ0aGlzLl9hdXRvQWRqdXN0WFNjYWxlRG9tYWluJiZ0aGlzLl91cGRhdGVYRXh0ZW50c0FuZEF1dG9kb21haW4oKX07cS5wcm90b3R5cGUuX3Byb2plY3RvcnNSZWFkeT1mdW5jdGlvbigpe3ZhciB1PXRoaXMueCgpLHg9dGhpcy55KCk7cmV0dXJuIG51bGwhPXUmJm51bGwhPXUuYWNjZXNzb3ImJm51bGwhPXgmJm51bGwhPXguYWNjZXNzb3J9O3EucHJvdG90eXBlLl9waXhlbFBvaW50PWZ1bmN0aW9uKHUseCxBKXt2YXIgeT1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx3PW0uUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpOwpyZXR1cm57eDp5KHUseCxBKSx5OncodSx4LEEpfX07cS5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXtmdW5jdGlvbiB1KHksdyxDKXt2YXIgRj1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHgueCgpKSh5LHcsQyk7eT1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHgueSgpKSh5LHcsQyk7cmV0dXJuIGwuTWF0aC5pc1ZhbGlkTnVtYmVyKEYpJiZsLk1hdGguaXNWYWxpZE51bWJlcih5KX12YXIgeD10aGlzLEE9bi5wcm90b3R5cGUuX2dldERhdGFUb0RyYXcuY2FsbCh0aGlzKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbih5KXtBLnNldCh5LEEuZ2V0KHkpLmZpbHRlcihmdW5jdGlvbih3LEMpe3JldHVybiB1KHcsQyx5KX0pKX0pO3JldHVybiBBfTtyZXR1cm4gcX0obS5QbG90KTtkLl9YX0tFWT0ieCI7ZC5fWV9LRVk9InkiO2YuWFlQbG90PWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDApO2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9CiEwO3RoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITE7dGhpcy5fdXBkYXRlSWQ9MDt0aGlzLl9jYWxsYmFja3M9bmV3IGsuQ2FsbGJhY2tTZXQ7dGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnM9bmV3IGsuU2V0fXQucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3QucHJvdG90eXBlLl9nZXRBbGxJbmNsdWRlZFZhbHVlcz1mdW5jdGlvbihsKXt2YXIgcD10aGlzO3ZvaWQgMD09PWwmJihsPSExKTt2YXIgbT1bXTt0aGlzLl9pbmNsdWRlZFZhbHVlc1Byb3ZpZGVycy5mb3JFYWNoKGZ1bmN0aW9uKG4pe249bihwLGwpO209bS5jb25jYXQobil9KTtyZXR1cm4gbX07dC5wcm90b3R5cGUuX2dldEV4dGVudD1mdW5jdGlvbigpe3JldHVybltdfTt0LnByb3RvdHlwZS5vblVwZGF0ZT1mdW5jdGlvbihsKXt0aGlzLl9jYWxsYmFja3MuYWRkKGwpO3JldHVybiB0aGlzfTt0LnByb3RvdHlwZS5vZmZVcGRhdGU9ZnVuY3Rpb24obCl7dGhpcy5fY2FsbGJhY2tzLmRlbGV0ZShsKTsKcmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKys7dGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9O3QucHJvdG90eXBlLmF1dG9Eb21haW49ZnVuY3Rpb24oKXt0aGlzLl9hdXRvRG9tYWluQXV0b21hdGljYWxseT0hMDt0aGlzLl9zZXREb21haW4odGhpcy5fZ2V0RXh0ZW50KCkpfTt0LnByb3RvdHlwZS5fYXV0b0RvbWFpbklmQXV0b21hdGljTW9kZT1mdW5jdGlvbigpe3RoaXMuX2F1dG9Eb21haW5BdXRvbWF0aWNhbGx5JiZ0aGlzLmF1dG9Eb21haW4oKX07dC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgc2NhbGUiKTt9O3QucHJvdG90eXBlLnRpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9O3QucHJvdG90eXBlLmRvbWFpbj1mdW5jdGlvbihsKXtpZihudWxsPT1sKXJldHVybiB0aGlzLl9nZXREb21haW4oKTsKdGhpcy5fYXV0b0RvbWFpbkF1dG9tYXRpY2FsbHk9ITE7dGhpcy5fc2V0RG9tYWluKGwpO3JldHVybiB0aGlzfTt0LnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoIlN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIF9nZXREb21haW4iKTt9O3QucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24obCl7dGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzc3x8KHRoaXMuX2RvbWFpbk1vZGlmaWNhdGlvbkluUHJvZ3Jlc3M9ITAsdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKGwpLHRoaXMuX2Rpc3BhdGNoVXBkYXRlKCksdGhpcy5fZG9tYWluTW9kaWZpY2F0aW9uSW5Qcm9ncmVzcz0hMSl9O3QucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2JhY2tpbmdEb21haW4iKTt9O3QucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKGwpe2lmKG51bGw9PWwpcmV0dXJuIHRoaXMuX2dldFJhbmdlKCk7CnRoaXMuX3NldFJhbmdlKGwpO3JldHVybiB0aGlzfTt0LnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX2dldFJhbmdlIik7fTt0LnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgX3NldFJhbmdlIik7fTt0LnByb3RvdHlwZS5hZGRJbmNsdWRlZFZhbHVlc1Byb3ZpZGVyPWZ1bmN0aW9uKGwpe3RoaXMuX2luY2x1ZGVkVmFsdWVzUHJvdmlkZXJzLmFkZChsKTt0aGlzLl9hdXRvRG9tYWluSWZBdXRvbWF0aWNNb2RlKCk7cmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLnJlbW92ZUluY2x1ZGVkVmFsdWVzUHJvdmlkZXI9ZnVuY3Rpb24obCl7dGhpcy5faW5jbHVkZWRWYWx1ZXNQcm92aWRlcnMuZGVsZXRlKGwpO3RoaXMuX2F1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKX07dC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9OwpyZXR1cm4gdH0oKTtmLlNjYWxlPWR9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHEsdSx4LEEpe2Zvcih2YXIgeT17fSx3PTA7dzx1Lmxlbmd0aDt3Kyspe3ZhciBDPXVbd107cS5oYXNPd25Qcm9wZXJ0eShDKSYmKHlbQ109cVtDXSh4LEEpKX1yZXR1cm4geX1mdW5jdGlvbiB0KHEpe3JldHVybihudWxsIT1xWyJzdHJva2Utb3BhY2l0eSJdP3BhcnNlRmxvYXQocVsic3Ryb2tlLW9wYWNpdHkiXSk6MSkqKG51bGwhPXEub3BhY2l0eT9wYXJzZUZsb2F0KHEub3BhY2l0eSk6MSl9ZnVuY3Rpb24gbChxKXtyZXR1cm4obnVsbCE9cVsiZmlsbC1vcGFjaXR5Il0/cGFyc2VGbG9hdChxWyJmaWxsLW9wYWNpdHkiXSk6MSkqKG51bGwhPXEub3BhY2l0eT9wYXJzZUZsb2F0KHEub3BhY2l0eSk6MSl9ZnVuY3Rpb24gcChxKXtyZXR1cm4gbnVsbCE9cVsic3Ryb2tlLXdpZHRoIl0/cGFyc2VGbG9hdChxWyJzdHJva2Utd2lkdGgiXSk6MX1mdW5jdGlvbiBtKHEsdSl7aWYodS5zdHJva2Upe3EubGluZVdpZHRoPQpwKHUpO3ZhciB4PW4uY29sb3IodS5zdHJva2UpO3gub3BhY2l0eSo9dCh1KTtxLnN0cm9rZVN0eWxlPXgudG9TdHJpbmcoKTtxLnN0cm9rZSgpfXUuZmlsbCYmKHg9bi5jb2xvcih1LmZpbGwpLHgub3BhY2l0eSo9bCh1KSxxLmZpbGxTdHlsZT14LnRvU3RyaW5nKCkscS5maWxsKCkpfXZhciBuPWgoMSk7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHEodSx4KXt0aGlzLl9jb250ZXh0PXU7dGhpcy5fZHJhd1N0ZXA9eH1xLnByb3RvdHlwZS5nZXREcmF3U3RlcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmF3U3RlcH07cS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbih1LHgpe3g9eFt4Lmxlbmd0aC0xXS5hdHRyVG9BcHBsaWVkUHJvamVjdG9yO3RoaXMuX2NvbnRleHQuc2F2ZSgpO3RoaXMuX2RyYXdTdGVwKHRoaXMuX2NvbnRleHQsdSx4KTt0aGlzLl9jb250ZXh0LnJlc3RvcmUoKX07cS5wcm90b3R5cGUuZ2V0VmlzdWFsUHJpbWl0aXZlcz1mdW5jdGlvbigpe3JldHVybltdfTtxLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PQpmdW5jdGlvbigpe3JldHVybiBudWxsfTtxLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oKXt9O3JldHVybiBxfSgpO2YuQ2FudmFzRHJhd2VyPWQ7Zi5Db250ZXh0U3R5bGVBdHRycz0iZmlsbC1vcGFjaXR5IGZpbGwgb3BhY2l0eSBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggc3Ryb2tlIi5zcGxpdCgiICIpO2YucmVzb2x2ZUF0dHJpYnV0ZXNTdWJzZXRXaXRoU3R5bGVzPWZ1bmN0aW9uKHEsdSx4LEEpe3JldHVybiBrKHEsZi5Db250ZXh0U3R5bGVBdHRycy5jb25jYXQodSkseCxBKX07Zi5yZXNvbHZlQXR0cmlidXRlcz1rO2YuZ2V0U3Ryb2tlV2lkdGg9cDtmLnJlbmRlckFyZWE9ZnVuY3Rpb24ocSx1LHgsQSl7cS5zYXZlKCk7cS5iZWdpblBhdGgoKTt1LmNvbnRleHQocSk7dSh4KTtxLmxpbmVKb2luPSJyb3VuZCI7bShxLEEpO3EucmVzdG9yZSgpfTtmLnJlbmRlckxpbmU9ZnVuY3Rpb24ocSx1LHgsQSl7cS5zYXZlKCk7cS5iZWdpblBhdGgoKTt1LmNvbnRleHQocSk7dSh4KTsKcS5saW5lSm9pbj0icm91bmQiO20ocSxBKTtxLnJlc3RvcmUoKX07Zi5yZW5kZXJQYXRoV2l0aFN0eWxlPW19LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHQpe2Zvcih2YXIgbCBpbiB0KWYuaGFzT3duUHJvcGVydHkobCl8fChmW2xdPXRbbF0pfWsoaCg1MCkpO2soaCgyNykpO2soaCg1MSkpO2soaCg5MykpO2soaCg1MykpO2soaCg5NCkpO2soaCg5NSkpO2soaCg5NikpO2soaCg5NykpO2soaCg5OCkpO2soaCg5OSkpO2soaCgxMDApKX0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ayhoKDkyKSk7ayhoKDkxKSk7ZD1oKDQ5KTtmLnNpZ249ZC5zaWdufSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh0KXtmb3IodmFyIGwgaW4gdClmLmhhc093blByb3BlcnR5KGwpfHwoZltsXT10W2xdKX1rKGgoMTM0KSk7ayhoKDEzNSkpO2soaCgxMzYpKTtrKGgoMTM3KSl9LGZ1bmN0aW9uKGQsCmYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKG4scSl7ZnVuY3Rpb24gdSgpe3RoaXMuY29uc3RydWN0b3I9bn1mb3IodmFyIHggaW4gcSlxLmhhc093blByb3BlcnR5KHgpJiYoblt4XT1xW3hdKTtuLnByb3RvdHlwZT1udWxsPT09cT9PYmplY3QuY3JlYXRlKHEpOih1LnByb3RvdHlwZT1xLnByb3RvdHlwZSxuZXcgdSl9LHQ9aCgxKSxsPWgoNSk7ZD1oKDQpO3ZhciBwPWgoOCksbT1oKDApO2g9aCgxMCk7Zi5BeGlzT3JpZW50YXRpb249aC5tYWtlRW51bShbImJvdHRvbSIsImxlZnQiLCJyaWdodCIsInRvcCJdKTtoPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHEodSx4KXt2YXIgQT1uLmNhbGwodGhpcyl8fHRoaXM7QS5fZW5kVGlja0xlbmd0aD01O0EuX2lubmVyVGlja0xlbmd0aD01O0EuX3RpY2tMYWJlbFBhZGRpbmc9MTA7QS5fbWFyZ2luPTE1O0EuX3Nob3dFbmRUaWNrTGFiZWxzPSExO0EuX2Fubm90YXRpb25zRW5hYmxlZD0hMTtBLl9hbm5vdGF0aW9uVGllckNvdW50PQoxO2lmKG51bGw9PXV8fG51bGw9PXgpdGhyb3cgRXJyb3IoIkF4aXMgcmVxdWlyZXMgYSBzY2FsZSBhbmQgb3JpZW50YXRpb24iKTtBLl9zY2FsZT11O0Eub3JpZW50YXRpb24oeCk7QS5fc2V0RGVmYXVsdEFsaWdubWVudCgpO0EuYWRkQ2xhc3MoImF4aXMiKTtBLmlzSG9yaXpvbnRhbCgpP0EuYWRkQ2xhc3MoIngtYXhpcyIpOkEuYWRkQ2xhc3MoInktYXhpcyIpO0EuZm9ybWF0dGVyKHAuaWRlbnRpdHkoKSk7QS5fcmVzY2FsZUNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIEEuX3Jlc2NhbGUoKX07QS5fc2NhbGUub25VcGRhdGUoQS5fcmVzY2FsZUNhbGxiYWNrKTtBLl9hbm5vdGF0ZWRUaWNrcz1bXTtBLl9hbm5vdGF0aW9uRm9ybWF0dGVyPXAuaWRlbnRpdHkoKTtyZXR1cm4gQX1rKHEsbik7cS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe24ucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTt0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVzY2FsZUNhbGxiYWNrKX07CnEucHJvdG90eXBlLnRpY2tMYWJlbERhdGFPbkVsZW1lbnQ9ZnVuY3Rpb24odSl7aWYobnVsbCE9dSl7Zm9yKHZhciB4O251bGwhPXUmJnUuY2xhc3NMaXN0JiZ2b2lkIDA9PT14Oyl1LmNsYXNzTGlzdC5jb250YWlucyhxLlRJQ0tfTEFCRUxfQ0xBU1MpP3g9dTp1PXUucGFyZW50Tm9kZTtyZXR1cm4gdm9pZCAwPT09dT92b2lkIDA6dC5zZWxlY3QodSkuZGF0dW0oKX19O3EucHJvdG90eXBlLl9jb21wdXRlV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCl9O3EucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heExhYmVsVGlja0xlbmd0aCgpfTtxLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbigpe3ZhciB1PTAseD0wO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpe2lmKHg9dGhpcy5fY29tcHV0ZUhlaWdodCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpKXt2YXIgQT0KdGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQrMipxLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkc7eCs9QSp0aGlzLmFubm90YXRpb25UaWVyQ291bnQoKX19ZWxzZSB1PXRoaXMuX2NvbXB1dGVXaWR0aCgpK3RoaXMuX21hcmdpbix0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpJiYoQT10aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCsyKnEuX0FOTk9UQVRJT05fTEFCRUxfUEFERElORyx1Kz1BKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpKTtyZXR1cm57bWluV2lkdGg6dSxtaW5IZWlnaHQ6eH19O3EucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCl9O3EucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0hvcml6b250YWwoKX07cS5wcm90b3R5cGUuX3Jlc2NhbGU9ZnVuY3Rpb24oKXt0aGlzLnJlbmRlcigpfTtxLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PQpmdW5jdGlvbih1LHgsQSl7bi5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsdSx4LEEpO3RoaXMuaXNIb3Jpem9udGFsKCk/dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5fc2NhbGUucmFuZ2UoW3RoaXMuaGVpZ2h0KCksMF0pO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbih1LHgpe3ZhciBBPXRoaXMucmVxdWVzdGVkU3BhY2UodSx4KTtyZXR1cm4gdGhpcy5pc0hvcml6b250YWwoKT97d2lkdGg6dSxoZWlnaHQ6QS5taW5IZWlnaHR9OntoZWlnaHQ6eCx3aWR0aDpBLm1pbldpZHRofX07cS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7bi5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dGhpcy5fdGlja01hcmtDb250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChxLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApO3RoaXMuX3RpY2tMYWJlbENvbnRhaW5lcj0KdGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZChxLlRJQ0tfTEFCRUxfQ0xBU1MrIi1jb250YWluZXIiLCEwKTt0aGlzLl9iYXNlbGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApO3RoaXMuX2Fubm90YXRpb25Db250YWluZXI9dGhpcy5jb250ZW50KCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1jb250YWluZXIiLCEwKTt0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tbGluZS1jb250YWluZXIiLCEwKTt0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLmFwcGVuZCgiZyIpLmNsYXNzZWQoImFubm90YXRpb24tY2lyY2xlLWNvbnRhaW5lciIsITApO3RoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIsITApO3ZhciB1PXRoaXMuX2Fubm90YXRpb25Db250YWluZXIuYXBwZW5kKCJnIikuY2xhc3NlZCgiYW5ub3RhdGlvbi1sYWJlbC1jb250YWluZXIiLAohMCk7dT1uZXcgbC5TdmdDb250ZXh0KHUubm9kZSgpKTt0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXI9bmV3IGwuQ2FjaGVNZWFzdXJlcih1KTt0aGlzLl9hbm5vdGF0aW9uV3JpdGVyPW5ldyBsLldyaXRlcih0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIsdSl9O3EucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuW119O3EucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIHU9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLHg9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitxLlRJQ0tfTUFSS19DTEFTUykuZGF0YSh1KSxBPXguZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKHEuVElDS19NQVJLX0NMQVNTLCEwKS5tZXJnZSh4KTtBLmF0dHJzKHRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpKTt0LnNlbGVjdChBLm5vZGVzKClbMF0pLmNsYXNzZWQocS5FTkRfVElDS19NQVJLX0NMQVNTLCEwKS5hdHRycyh0aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goITApKTsKdC5zZWxlY3QoQS5ub2RlcygpW3UubGVuZ3RoLTFdKS5jbGFzc2VkKHEuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCkuYXR0cnModGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCEwKSk7eC5leGl0KCkucmVtb3ZlKCk7dGhpcy5fYmFzZWxpbmUuYXR0cnModGhpcy5fZ2VuZXJhdGVCYXNlbGluZUF0dHJIYXNoKCkpO3RoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5fZHJhd0Fubm90YXRpb25zKCk6dGhpcy5fcmVtb3ZlQW5ub3RhdGlvbnMoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuYW5ub3RhdGVkVGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5ub3RhdGVkVGlja3N9O3EucHJvdG90eXBlLmFubm90YXRpb25Gb3JtYXR0ZXI9ZnVuY3Rpb24odSl7aWYobnVsbD09dSlyZXR1cm4gdGhpcy5fYW5ub3RhdGlvbkZvcm1hdHRlcjt0aGlzLl9hbm5vdGF0aW9uRm9ybWF0dGVyPXU7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuYW5ub3RhdGlvbnNFbmFibGVkPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uc0VuYWJsZWR9O3EucHJvdG90eXBlLmFubm90YXRpb25UaWVyQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYW5ub3RhdGlvblRpZXJDb3VudH07cS5wcm90b3R5cGUuX2RyYXdBbm5vdGF0aW9ucz1mdW5jdGlvbigpe2Z1bmN0aW9uIHUoYWEpe3N3aXRjaChDLm9yaWVudGF0aW9uKCkpe2Nhc2UgImJvdHRvbSI6Y2FzZSAicmlnaHQiOnJldHVybiB5KGFhKTtjYXNlICJ0b3AiOmNhc2UgImxlZnQiOnJldHVybiB5KGFhKS1ELmdldChhYSkuaGVpZ2h0fX1mdW5jdGlvbiB4KGFhKXtyZXR1cm4gTy5oYXMoYWEpPyJoaWRkZW4iOiJ2aXNpYmxlIn1mdW5jdGlvbiBBKGFhKXtyZXR1cm4gQy5fc2NhbGUuc2NhbGUoYWEpfWZ1bmN0aW9uIHkoYWEpe3N3aXRjaChDLm9yaWVudGF0aW9uKCkpe2Nhc2UgImJvdHRvbSI6Y2FzZSAicmlnaHQiOnJldHVybiBOLmdldChhYSkqSStLO2Nhc2UgInRvcCI6Y2FzZSAibGVmdCI6cmV0dXJuIEgtCkstTi5nZXQoYWEpKkl9fWZ1bmN0aW9uIHcoYWEsbGEsWil7YWE9YWEuc2VsZWN0QWxsKCIuIitaKS5kYXRhKEIpO2xhPWFhLmVudGVyKCkuYXBwZW5kKGxhKS5jbGFzc2VkKFosITApLm1lcmdlKGFhKTthYS5leGl0KCkucmVtb3ZlKCk7cmV0dXJuIGxhfXZhciBDPXRoaXMsRj1xLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkcsRD1uZXcgbS5NYXAsQj10aGlzLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyKCk7Qi5mb3JFYWNoKGZ1bmN0aW9uKGFhKXt2YXIgbGE9Qy5fYW5ub3RhdGlvbk1lYXN1cmVyLm1lYXN1cmUoQy5hbm5vdGF0aW9uRm9ybWF0dGVyKCkoYWEpKTtELnNldChhYSx7d2lkdGg6bGEud2lkdGgrMipGLGhlaWdodDpsYS5oZWlnaHQrMipGfSl9KTt2YXIgST10aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCsyKkYsTj10aGlzLl9hbm5vdGF0aW9uVG9UaWVyKEQpLE89bmV3IG0uU2V0LEg9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLmhlaWdodCgpOgp0aGlzLndpZHRoKCksSz10aGlzLl9jb3JlU2l6ZSgpLE09TWF0aC5taW4odGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCksTWF0aC5mbG9vcigoSC1LKS9JKSk7Ti5mb3JFYWNoKGZ1bmN0aW9uKGFhLGxhKXsoLTE9PT1hYXx8YWE+PU0pJiZPLmFkZChsYSl9KTtzd2l0Y2godGhpcy5vcmllbnRhdGlvbigpKXtjYXNlICJib3R0b20iOmNhc2UgInJpZ2h0Ijp2YXIgTD0wO2JyZWFrO2Nhc2UgInRvcCI6TD10aGlzLmhlaWdodCgpO2JyZWFrO2Nhc2UgImxlZnQiOkw9dGhpcy53aWR0aCgpfXZhciBRPXRoaXMuaXNIb3Jpem9udGFsKCk7dyh0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdCgiLmFubm90YXRpb24tbGluZS1jb250YWluZXIiKSwibGluZSIscS5BTk5PVEFUSU9OX0xJTkVfQ0xBU1MpLmF0dHJzKHt4MTpRP0E6TCx4MjpRP0E6eSx5MTpRP0w6QSx5MjpRP3k6QSx2aXNpYmlsaXR5Onh9KTt3KHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1jaXJjbGUtY29udGFpbmVyIiksCiJjaXJjbGUiLHEuQU5OT1RBVElPTl9DSVJDTEVfQ0xBU1MpLmF0dHJzKHtjeDpRP0E6TCxjeTpRP0w6QSxyOjN9KTt3KHRoaXMuX2Fubm90YXRpb25Db250YWluZXIuc2VsZWN0KCIuYW5ub3RhdGlvbi1yZWN0LWNvbnRhaW5lciIpLCJyZWN0IixxLkFOTk9UQVRJT05fUkVDVF9DTEFTUykuYXR0cnMoe3g6UT9BOnUseTpRP3U6QSx3aWR0aDpRP2Z1bmN0aW9uKGFhKXtyZXR1cm4gRC5nZXQoYWEpLndpZHRofTpmdW5jdGlvbihhYSl7cmV0dXJuIEQuZ2V0KGFhKS5oZWlnaHR9LGhlaWdodDpRP2Z1bmN0aW9uKGFhKXtyZXR1cm4gRC5nZXQoYWEpLmhlaWdodH06ZnVuY3Rpb24oYWEpe3JldHVybiBELmdldChhYSkud2lkdGh9LHZpc2liaWxpdHk6eH0pO3ZhciBUPXRoaXMuX2Fubm90YXRpb25Xcml0ZXIsWD10aGlzLmFubm90YXRpb25Gb3JtYXR0ZXIoKTtMPXcodGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3QoIi5hbm5vdGF0aW9uLWxhYmVsLWNvbnRhaW5lciIpLCJnIixxLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1MpOwpMLnNlbGVjdEFsbCgiLnRleHQtY29udGFpbmVyIikucmVtb3ZlKCk7TC5hdHRycyh7dHJhbnNmb3JtOmZ1bmN0aW9uKGFhKXt2YXIgbGE9UT9BKGFhKTp1KGFhKTthYT1RP3UoYWEpOkEoYWEpO3JldHVybiJ0cmFuc2xhdGUoIitsYSsiLCIrYWErIikifSx2aXNpYmlsaXR5Onh9KS5lYWNoKGZ1bmN0aW9uKGFhKXtULndyaXRlKFgoYWEpLFE/RC5nZXQoYWEpLndpZHRoOkQuZ2V0KGFhKS5oZWlnaHQsUT9ELmdldChhYSkuaGVpZ2h0OkQuZ2V0KGFhKS53aWR0aCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIix0ZXh0Um90YXRpb246UT8wOjkwfSx0LnNlbGVjdCh0aGlzKS5ub2RlKCkpfSl9O3EucHJvdG90eXBlLl9hbm5vdGF0ZWRUaWNrc1RvUmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHU9dGhpcyx4PXRoaXMuX3NjYWxlLnJhbmdlKCk7cmV0dXJuIG0uQXJyYXkudW5pcSh0aGlzLmFubm90YXRlZFRpY2tzKCkuZmlsdGVyKGZ1bmN0aW9uKEEpe3JldHVybiBudWxsPT1BPyExOm0uTWF0aC5pblJhbmdlKHUuX3NjYWxlLnNjYWxlKEEpLAp4WzBdLHhbMV0pfSkpfTtxLnByb3RvdHlwZS5fY29yZVNpemU9ZnVuY3Rpb24oKXt2YXIgdT10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLHg9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLl9jb21wdXRlSGVpZ2h0KCk6dGhpcy5fY29tcHV0ZVdpZHRoKCk7cmV0dXJuIE1hdGgubWluKHgsdSl9O3EucHJvdG90eXBlLl9hbm5vdGF0aW9uVGllckhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uTWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCsyKnEuX0FOTk9UQVRJT05fTEFCRUxfUEFERElOR307cS5wcm90b3R5cGUuX2Fubm90YXRpb25Ub1RpZXI9ZnVuY3Rpb24odSl7dmFyIHg9dGhpcyxBPVtbXV0seT1uZXcgbS5NYXAsdz10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpO3RoaXMuX2Fubm90YXRlZFRpY2tzVG9SZW5kZXIoKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3ZhciBGPXguX3NjYWxlLnNjYWxlKEMpLApEPXUuZ2V0KEMpLndpZHRoO2lmKDA+Rnx8RitEPncpeS5zZXQoQywtMSk7ZWxzZXtmb3IodmFyIEI9ZnVuY3Rpb24oTil7cmV0dXJuIEFbTl0uc29tZShmdW5jdGlvbihPKXt2YXIgSD14Ll9zY2FsZS5zY2FsZShPKTtPPXUuZ2V0KE8pLndpZHRoO3JldHVybiBGK0Q+PUgmJkY8PUgrT30pfSxJPTA7QihJKTspSSsrLEEubGVuZ3RoPT09SSYmQS5wdXNoKFtdKTtBW0ldLnB1c2goQyk7eS5zZXQoQyxJKX19KTtyZXR1cm4geX07cS5wcm90b3R5cGUuX3JlbW92ZUFubm90YXRpb25zPWZ1bmN0aW9uKCl7dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLWxpbmUiKS5yZW1vdmUoKTt0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tY2lyY2xlIikucmVtb3ZlKCk7dGhpcy5fYW5ub3RhdGlvbkNvbnRhaW5lci5zZWxlY3RBbGwoIi5hbm5vdGF0aW9uLXJlY3QiKS5yZW1vdmUoKTt0aGlzLl9hbm5vdGF0aW9uQ29udGFpbmVyLnNlbGVjdEFsbCgiLmFubm90YXRpb24tbGFiZWwiKS5yZW1vdmUoKX07CnEucHJvdG90eXBlLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2g9ZnVuY3Rpb24oKXt2YXIgdT17eDE6MCx5MTowLHgyOjAseTI6MH07c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlICJib3R0b20iOnUueDI9dGhpcy53aWR0aCgpO2JyZWFrO2Nhc2UgInRvcCI6dS54Mj10aGlzLndpZHRoKCk7dS55MT10aGlzLmhlaWdodCgpO3UueTI9dGhpcy5oZWlnaHQoKTticmVhaztjYXNlICJsZWZ0Ijp1LngxPXRoaXMud2lkdGgoKTt1LngyPXRoaXMud2lkdGgoKTt1LnkyPXRoaXMuaGVpZ2h0KCk7YnJlYWs7Y2FzZSAicmlnaHQiOnUueTI9dGhpcy5oZWlnaHQoKX1yZXR1cm4gdX07cS5wcm90b3R5cGUuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaD1mdW5jdGlvbih1KXtmdW5jdGlvbiB4KHcpe3JldHVybiBBLl9zY2FsZS5zY2FsZSh3KX12YXIgQT10aGlzO3ZvaWQgMD09PXUmJih1PSExKTt2YXIgeT17eDE6MCx5MTowLHgyOjAseTI6MH07dGhpcy5pc0hvcml6b250YWwoKT8oeS54MT0KeCx5LngyPXgpOih5LnkxPXgseS55Mj14KTt1PXU/dGhpcy5fZW5kVGlja0xlbmd0aDp0aGlzLl9pbm5lclRpY2tMZW5ndGg7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlICJib3R0b20iOnkueTI9dTticmVhaztjYXNlICJ0b3AiOnkueTE9dGhpcy5oZWlnaHQoKTt5LnkyPXRoaXMuaGVpZ2h0KCktdTticmVhaztjYXNlICJsZWZ0Ijp5LngxPXRoaXMud2lkdGgoKTt5LngyPXRoaXMud2lkdGgoKS11O2JyZWFrO2Nhc2UgInJpZ2h0Ijp5LngyPXV9cmV0dXJuIHl9O3EucHJvdG90eXBlLl9zZXREZWZhdWx0QWxpZ25tZW50PWZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX29yaWVudGF0aW9uKXtjYXNlICJib3R0b20iOnRoaXMueUFsaWdubWVudCgidG9wIik7YnJlYWs7Y2FzZSAidG9wIjp0aGlzLnlBbGlnbm1lbnQoImJvdHRvbSIpO2JyZWFrO2Nhc2UgImxlZnQiOnRoaXMueEFsaWdubWVudCgicmlnaHQiKTticmVhaztjYXNlICJyaWdodCI6dGhpcy54QWxpZ25tZW50KCJsZWZ0Iil9fTsKcS5wcm90b3R5cGUuaXNIb3Jpem9udGFsPWZ1bmN0aW9uKCl7cmV0dXJuInRvcCI9PT10aGlzLl9vcmllbnRhdGlvbnx8ImJvdHRvbSI9PT10aGlzLl9vcmllbnRhdGlvbn07cS5wcm90b3R5cGUuZ2V0U2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2NhbGV9O3EucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih1KXtpZihudWxsPT11KXJldHVybiB0aGlzLl9mb3JtYXR0ZXI7dGhpcy5fZm9ybWF0dGVyPXU7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuaW5uZXJUaWNrTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lubmVyVGlja0xlbmd0aH07cS5wcm90b3R5cGUuZW5kVGlja0xlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmRUaWNrTGVuZ3RofTtxLnByb3RvdHlwZS5fbWF4TGFiZWxUaWNrTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2hvd0VuZFRpY2tMYWJlbHMoKT9NYXRoLm1heCh0aGlzLmlubmVyVGlja0xlbmd0aCgpLAp0aGlzLmVuZFRpY2tMZW5ndGgoKSk6dGhpcy5pbm5lclRpY2tMZW5ndGgoKX07cS5wcm90b3R5cGUudGlja0xhYmVsUGFkZGluZz1mdW5jdGlvbih1KXtpZihudWxsPT11KXJldHVybiB0aGlzLl90aWNrTGFiZWxQYWRkaW5nO2lmKDA+dSl0aHJvdyBFcnJvcigidGljayBsYWJlbCBwYWRkaW5nIG11c3QgYmUgcG9zaXRpdmUiKTt0aGlzLl90aWNrTGFiZWxQYWRkaW5nPXU7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUubWFyZ2luPWZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpcmV0dXJuIHRoaXMuX21hcmdpbjtpZigwPnUpdGhyb3cgRXJyb3IoIm1hcmdpbiBzaXplIG11c3QgYmUgcG9zaXRpdmUiKTt0aGlzLl9tYXJnaW49dTt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih1KXtpZihudWxsPT11KXJldHVybiB0aGlzLl9vcmllbnRhdGlvbjt1PXUudG9Mb3dlckNhc2UoKTtpZigidG9wIiE9PXUmJiJib3R0b20iIT09CnUmJiJsZWZ0IiE9PXUmJiJyaWdodCIhPT11KXRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCBvcmllbnRhdGlvbiIpO3RoaXMuX29yaWVudGF0aW9uPXU7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuc2hvd0VuZFRpY2tMYWJlbHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2hvd0VuZFRpY2tMYWJlbHN9O3EucHJvdG90eXBlLl9zaG93QWxsVGlja01hcmtzPWZ1bmN0aW9uKCl7dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitxLlRJQ0tfTUFSS19DTEFTUykuZWFjaChmdW5jdGlvbigpe3Quc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpfSl9O3EucHJvdG90eXBlLl9zaG93QWxsVGlja0xhYmVscz1mdW5jdGlvbigpe3RoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3EuVElDS19MQUJFTF9DTEFTUykuZWFjaChmdW5jdGlvbigpe3Quc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpfSl9OwpxLnByb3RvdHlwZS5faGlkZU92ZXJmbG93aW5nVGlja0xhYmVscz1mdW5jdGlvbigpe3ZhciB1PXRoaXMuZWxlbWVudCgpLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4PXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3EuVElDS19MQUJFTF9DTEFTUyk7eC5lbXB0eSgpfHx4LmVhY2goZnVuY3Rpb24oKXttLkRPTS5jbGllbnRSZWN0SW5zaWRlKHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdSl8fHQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KX07cS5wcm90b3R5cGUuX2hpZGVUaWNrTWFya3NXaXRob3V0TGFiZWw9ZnVuY3Rpb24oKXt2YXIgdT10aGlzLl90aWNrTWFya0NvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3EuVElDS19NQVJLX0NMQVNTKSx4PXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK3EuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIEE9dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTsKcmV0dXJuImluaGVyaXQiPT09QXx8InZpc2libGUiPT09QX0pLmRhdGEoKTt1LmVhY2goZnVuY3Rpb24oQSl7LTE9PT14LmluZGV4T2YoQSkmJnQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9KX07cS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7bi5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyk7dGhpcy5fYW5ub3RhdGlvbk1lYXN1cmVyLnJlc2V0KCl9O3JldHVybiBxfShkLkNvbXBvbmVudCk7aC5FTkRfVElDS19NQVJLX0NMQVNTPSJlbmQtdGljay1tYXJrIjtoLlRJQ0tfTUFSS19DTEFTUz0idGljay1tYXJrIjtoLlRJQ0tfTEFCRUxfQ0xBU1M9InRpY2stbGFiZWwiO2guQU5OT1RBVElPTl9MSU5FX0NMQVNTPSJhbm5vdGF0aW9uLWxpbmUiO2guQU5OT1RBVElPTl9SRUNUX0NMQVNTPSJhbm5vdGF0aW9uLXJlY3QiO2guQU5OT1RBVElPTl9DSVJDTEVfQ0xBU1M9ImFubm90YXRpb24tY2lyY2xlIjtoLkFOTk9UQVRJT05fTEFCRUxfQ0xBU1M9CiJhbm5vdGF0aW9uLWxhYmVsIjtoLl9BTk5PVEFUSU9OX0xBQkVMX1BBRERJTkc9NDtmLkF4aXM9aH0sZnVuY3Rpb24oZCxmKXtmLlNIT1dfV0FSTklOR1M9ITA7Zi5BRERfVElUTEVfRUxFTUVOVFM9ITB9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDApO2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbj17fTt0aGlzLl9ldmVudFRhcmdldD1kb2N1bWVudDt0aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0PXt9O3RoaXMuX2Nvbm5lY3RlZD0hMX10LnByb3RvdHlwZS5faGFzTm9DYWxsYmFja3M9ZnVuY3Rpb24oKXtmb3IodmFyIGw9T2JqZWN0LmtleXModGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldCkscD0wO3A8bC5sZW5ndGg7cCsrKWlmKDAhPT10aGlzLl9ldmVudE5hbWVUb0NhbGxiYWNrU2V0W2xbcF1dLnNpemUpcmV0dXJuITE7cmV0dXJuITB9O3QucHJvdG90eXBlLl9jb25uZWN0PWZ1bmN0aW9uKCl7dmFyIGw9dGhpczsKdGhpcy5fY29ubmVjdGVkfHwoT2JqZWN0LmtleXModGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbikuZm9yRWFjaChmdW5jdGlvbihwKXtsLl9ldmVudFRhcmdldC5hZGRFdmVudExpc3RlbmVyKHAsbC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwXSl9KSx0aGlzLl9jb25uZWN0ZWQ9ITApfTt0LnByb3RvdHlwZS5fZGlzY29ubmVjdD1mdW5jdGlvbigpe3ZhciBsPXRoaXM7dGhpcy5fY29ubmVjdGVkJiZ0aGlzLl9oYXNOb0NhbGxiYWNrcygpJiYoT2JqZWN0LmtleXModGhpcy5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbikuZm9yRWFjaChmdW5jdGlvbihwKXtsLl9ldmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKHAsbC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwXSl9KSx0aGlzLl9jb25uZWN0ZWQ9ITEpfTt0LnByb3RvdHlwZS5fYWRkQ2FsbGJhY2tGb3JFdmVudD1mdW5jdGlvbihsLHApe251bGw9PXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbbF0mJgoodGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFtsXT1uZXcgay5DYWxsYmFja1NldCk7dGhpcy5fZXZlbnROYW1lVG9DYWxsYmFja1NldFtsXS5hZGQocCk7dGhpcy5fY29ubmVjdCgpfTt0LnByb3RvdHlwZS5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudD1mdW5jdGlvbihsLHApe251bGwhPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbbF0mJnRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbbF0uZGVsZXRlKHApO3RoaXMuX2Rpc2Nvbm5lY3QoKX07dC5wcm90b3R5cGUuX2NhbGxDYWxsYmFja3NGb3JFdmVudD1mdW5jdGlvbihsKXtmb3IodmFyIHA9W10sbT0xO208YXJndW1lbnRzLmxlbmd0aDttKyspcFttLTFdPWFyZ3VtZW50c1ttXTttPXRoaXMuX2V2ZW50TmFtZVRvQ2FsbGJhY2tTZXRbbF07bnVsbCE9bSYmbS5jYWxsQ2FsbGJhY2tzLmFwcGx5KG0scCl9O3JldHVybiB0fSgpO2YuRGlzcGF0Y2hlcj1kfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh0KXtmb3IodmFyIGwgaW4gdClmLmhhc093blByb3BlcnR5KGwpfHwKKGZbbF09dFtsXSl9ayhoKDg3KSk7ayhoKDg4KSk7ayhoKDQwKSk7ayhoKDg5KSk7ayhoKDkwKSk7ZD1oKDI2KTtmLnpvb21PdXQ9ZC56b29tT3V0fSxmdW5jdGlvbihkLGYpe2Z1bmN0aW9uIGgobixxLHUpe3JldHVybiB1LSh1LW4pKnF9ZnVuY3Rpb24gayhuLHEsdSl7cmV0dXJuKG4qcS11KS8ocS0xKX1mdW5jdGlvbiB0KG4scSx1LHgpe3ZhciBBPTE8cTt1PUE/eDp1O2lmKG51bGw9PXUpcmV0dXJuIHE7bj1uLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7cmV0dXJuKEE/TWF0aC5taW46TWF0aC5tYXgpKHEsdS9NYXRoLmFicyhuWzFdLW5bMF0pKX1mdW5jdGlvbiBsKG4scSx1LHgsQSl7aWYoMT49cSlyZXR1cm57Y2VudGVyUG9pbnQ6dSx6b29tQW1vdW50OnF9O2lmKG51bGw9PXgmJm51bGw9PUEpcmV0dXJue2NlbnRlclBvaW50OnUsem9vbUFtb3VudDpxfTt2YXIgeT1wKG4pLHc9bShuKSxDPXc/SW5maW5pdHk6LUluZmluaXR5O3c9dz8tSW5maW5pdHk6SW5maW5pdHk7eD1udWxsPT0KeD9DOng7QT1udWxsPT1BP3c6QTt3PW4uZ2V0VHJhbnNmb3JtYXRpb25Eb21haW4oKTtDPXdbMF07dz13WzFdO0E9bi5zY2FsZVRyYW5zZm9ybWF0aW9uKEEpO3c9bi5zY2FsZVRyYW5zZm9ybWF0aW9uKHcpO3ZhciBGPWgodyxxLHUpO3g9bi5zY2FsZVRyYW5zZm9ybWF0aW9uKHgpO249bi5zY2FsZVRyYW5zZm9ybWF0aW9uKEMpO0M9aChuLHEsdSk7cmV0dXJuIE1hdGguYWJzKEYtQyk+TWF0aC5hYnMoQS14KT8ocT0oQS14KS8ody1uKSwxIT09cT97Y2VudGVyUG9pbnQ6ayh3LHEsQSksem9vbUFtb3VudDpxfTp7Y2VudGVyUG9pbnQ6dSx6b29tQW1vdW50OnF9KTpGPkEhPXk/e2NlbnRlclBvaW50OmsodyxxLEEpLHpvb21BbW91bnQ6cX06Qzx4IT15P3tjZW50ZXJQb2ludDprKG4scSx4KSx6b29tQW1vdW50OnF9OntjZW50ZXJQb2ludDp1LHpvb21BbW91bnQ6cX19ZnVuY3Rpb24gcChuKXtuPW4ucmFuZ2UoKTtyZXR1cm4gblsxXTxuWzBdfWZ1bmN0aW9uIG0obil7bj1uLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7CnJldHVybiBuWzFdPG5bMF19Zi56b29tT3V0PWg7Zi5jb25zdHJhaW5lZFpvb209ZnVuY3Rpb24obixxLHUseCxBLHksdyl7cT10KG4scSx4LEEpO3JldHVybiBsKG4scSx1LHksdyl9O2YuY29uc3RyYWluWm9vbUV4dGVudHM9dDtmLmNvbnN0cmFpblpvb21WYWx1ZXM9bDtmLmNvbnN0cmFpbmVkVHJhbnNsYXRpb249ZnVuY3Rpb24obixxLHUseCl7dmFyIEE9bi5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpLHk9QVswXSx3PUFbMV07QT1wKG4pOzA8cSE9PUE/KHU9eCxudWxsIT11JiYoeT1uLnNjYWxlVHJhbnNmb3JtYXRpb24odyksbj1uLnNjYWxlVHJhbnNmb3JtYXRpb24odSkscT0oQT9NYXRoLm1heDpNYXRoLm1pbikoeStxLG4pLXkpKTpudWxsIT11JiYoeT1uLnNjYWxlVHJhbnNmb3JtYXRpb24oeSksbj1uLnNjYWxlVHJhbnNmb3JtYXRpb24odSkscT0oQT9NYXRoLm1pbjpNYXRoLm1heCkoeStxLG4pLXkpO3JldHVybiBxfX0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsoSSwKTixPKXt2YXIgSD1JLnNjYWxlO2lmKEggaW5zdGFuY2VvZiB5LkNhdGVnb3J5KU89SC5yYW5nZUJhbmQoKTtlbHNle3ZhciBLPUkuYWNjZXNzb3I7ST1sLnNldChDLkFycmF5LmZsYXR0ZW4oTi5tYXAoZnVuY3Rpb24oTSl7cmV0dXJuIE0uZGF0YSgpLm1hcChmdW5jdGlvbihMLFEpe3JldHVybiBLKEwsUSxNKX0pLmZpbHRlcihmdW5jdGlvbihMKXtyZXR1cm4gbnVsbCE9TH0pLm1hcChmdW5jdGlvbihMKXtyZXR1cm4gTC52YWx1ZU9mKCl9KX0pKSkudmFsdWVzKCkubWFwKGZ1bmN0aW9uKE0pe3JldHVybitNfSk7SS5zb3J0KGZ1bmN0aW9uKE0sTCl7cmV0dXJuIE0tTH0pO0k9SS5tYXAoZnVuY3Rpb24oTSl7cmV0dXJuIEguc2NhbGUoTSl9KTtJPWwucGFpcnMoSSk7Tz1DLk1hdGgubWluKEksZnVuY3Rpb24oTSl7cmV0dXJuIE1hdGguYWJzKE1bMV0tTVswXSl9LE8qQi5fU0lOR0xFX0JBUl9ESU1FTlNJT05fUkFUSU8pO08qPUIuX0JBUl9USElDS05FU1NfUkFUSU99cmV0dXJuIE99CnZhciB0PXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihJLE4pe2Z1bmN0aW9uIE8oKXt0aGlzLmNvbnN0cnVjdG9yPUl9Zm9yKHZhciBIIGluIE4pTi5oYXNPd25Qcm9wZXJ0eShIKSYmKElbSF09TltIXSk7SS5wcm90b3R5cGU9bnVsbD09PU4/T2JqZWN0LmNyZWF0ZShOKTooTy5wcm90b3R5cGU9Ti5wcm90b3R5cGUsbmV3IE8pfSxsPWgoMSkscD1oKDUpLG09aCg3KSxuPWgoOCkscT1oKDE0KSx1PWgoNikseD1oKDM0KSxBPWgoMjApLHk9aCgzKSx3PWgoMTEpLEM9aCgwKTtkPWgoMTApO3ZhciBGPWgoMTkpLEQ9aCgyKTtoPWgoMTYpO2YuQmFyT3JpZW50YXRpb249ZC5tYWtlRW51bShbInZlcnRpY2FsIiwiaG9yaXpvbnRhbCJdKTtmLkxhYmVsc1Bvc2l0aW9uPWQubWFrZUVudW0oWyJzdGFydCIsIm1pZGRsZSIsImVuZCIsIm91dHNpZGUiXSk7Zi5CYXJBbGlnbm1lbnQ9ZC5tYWtlRW51bShbInN0YXJ0IiwibWlkZGxlIiwiZW5kIl0pO3ZhciBCPWZ1bmN0aW9uKEkpe2Z1bmN0aW9uIE4oTyl7dm9pZCAwPT09Ck8mJihPPSJ2ZXJ0aWNhbCIpO3ZhciBIPUkuY2FsbCh0aGlzKXx8dGhpcztILl9sYWJlbEZvcm1hdHRlcj1uLmlkZW50aXR5KCk7SC5fbGFiZWxzRW5hYmxlZD0hMTtILl9sYWJlbHNQb3NpdGlvbj1mLkxhYmVsc1Bvc2l0aW9uLmVuZDtILl9oaWRlQmFyc0lmQW55QXJlVG9vV2lkZT0hMDtILl9iYXJBbGlnbm1lbnQ9Im1pZGRsZSI7SC5fY29tcHV0ZUJhclBpeGVsVGhpY2tuZXNzPUEubWVtb2l6ZShrKTtILl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSEwO0guYWRkQ2xhc3MoImJhci1wbG90Iik7aWYoInZlcnRpY2FsIiE9PU8mJiJob3Jpem9udGFsIiE9PU8pdGhyb3cgRXJyb3IoTysiIGlzIG5vdCBhIHZhbGlkIG9yaWVudGF0aW9uIGZvciBQbG90cy5CYXIiKTtILl9pc1ZlcnRpY2FsPSJ2ZXJ0aWNhbCI9PT1PO0guYW5pbWF0b3IoImJhc2VsaW5lIixuZXcgbS5OdWxsKTtILmF0dHIoImZpbGwiLChuZXcgeS5Db2xvcikucmFuZ2UoKVswXSk7SC5hdHRyKE4uX0JBUl9USElDS05FU1NfS0VZLApmdW5jdGlvbigpe3JldHVybiBILl9iYXJQaXhlbFRoaWNrbmVzcygpfSk7SC5fbGFiZWxDb25maWc9bmV3IEMuTWFwO0guX2Jhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltILmJhc2VsaW5lVmFsdWUoKV19O3JldHVybiBIfXQoTixJKTtOLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKE8sSCxLKXtJLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxPLEgsSyk7dGhpcy5fdXBkYXRlRXh0ZW50cygpO3JldHVybiB0aGlzfTtOLnByb3RvdHlwZS54PWZ1bmN0aW9uKE8sSCl7aWYobnVsbD09TylyZXR1cm4gSS5wcm90b3R5cGUueC5jYWxsKHRoaXMpO251bGw9PUg/SS5wcm90b3R5cGUueC5jYWxsKHRoaXMsTyk6SS5wcm90b3R5cGUueC5jYWxsKHRoaXMsTyxIKTt0aGlzLl91cGRhdGVUaGlja25lc3NBdHRyKCk7dGhpcy5fdXBkYXRlTGVuZ3RoU2NhbGUoKTtyZXR1cm4gdGhpc307Ti5wcm90b3R5cGUueT1mdW5jdGlvbihPLEgpe2lmKG51bGw9PQpPKXJldHVybiBJLnByb3RvdHlwZS55LmNhbGwodGhpcyk7bnVsbD09SD9JLnByb3RvdHlwZS55LmNhbGwodGhpcyxPKTpJLnByb3RvdHlwZS55LmNhbGwodGhpcyxPLEgpO3RoaXMuX3VwZGF0ZUxlbmd0aFNjYWxlKCk7cmV0dXJuIHRoaXN9O04ucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpOnRoaXMueCgpfTtOLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueCgpOnRoaXMueSgpfTtOLnByb3RvdHlwZS5iYXJFbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoTi5fQkFSX0VORF9LRVkpfTtOLnByb3RvdHlwZS5iYXJBbGlnbm1lbnQ9ZnVuY3Rpb24oTyl7aWYobnVsbD09TylyZXR1cm4gdGhpcy5fYmFyQWxpZ25tZW50O3RoaXMuX2JhckFsaWdubWVudD1PO3RoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKTt0aGlzLnJlbmRlcigpOwpyZXR1cm4gdGhpc307Ti5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD8idmVydGljYWwiOiJob3Jpem9udGFsIn07Ti5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgdS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgeC5SZWN0YW5nbGVTVkdEcmF3ZXIoTi5fQkFSX0FSRUFfQ0xBU1MpfSxmdW5jdGlvbihPKXtyZXR1cm4gbmV3IHEuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyKE8pfSl9O04ucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe0kucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3RoaXMuX2Jhc2VsaW5lPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiYmFzZWxpbmUiLCEwKX07Ti5wcm90b3R5cGUuYmFzZWxpbmVWYWx1ZT1mdW5jdGlvbigpe2lmKG51bGwhPXRoaXMuX2Jhc2VsaW5lVmFsdWUpcmV0dXJuIHRoaXMuX2Jhc2VsaW5lVmFsdWU7aWYoIXRoaXMuX3Byb2plY3RvcnNSZWFkeSgpKXJldHVybiAwOwp2YXIgTz10aGlzLmxlbmd0aCgpLnNjYWxlO3JldHVybiBPP08gaW5zdGFuY2VvZiB5LlRpbWU/bmV3IERhdGUoMCk6MDowfTtOLnByb3RvdHlwZS5hZGREYXRhc2V0PWZ1bmN0aW9uKE8pe0kucHJvdG90eXBlLmFkZERhdGFzZXQuY2FsbCh0aGlzLE8pfTtOLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbihPKXtJLnByb3RvdHlwZS5fYWRkRGF0YXNldC5jYWxsKHRoaXMsTyk7cmV0dXJuIHRoaXN9O04ucHJvdG90eXBlLnJlbW92ZURhdGFzZXQ9ZnVuY3Rpb24oTyl7SS5wcm90b3R5cGUucmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsTyl9O04ucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKE8pe0kucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0LmNhbGwodGhpcyxPKTtyZXR1cm4gdGhpc307Ti5wcm90b3R5cGUuZGF0YXNldHM9ZnVuY3Rpb24oTyl7aWYobnVsbD09TylyZXR1cm4gSS5wcm90b3R5cGUuZGF0YXNldHMuY2FsbCh0aGlzKTtJLnByb3RvdHlwZS5kYXRhc2V0cy5jYWxsKHRoaXMsCk8pO3JldHVybiB0aGlzfTtOLnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKE8sSCl7aWYobnVsbD09TylyZXR1cm4gdGhpcy5fbGFiZWxzRW5hYmxlZDt0aGlzLl9sYWJlbHNFbmFibGVkPU87bnVsbCE9SCYmKHRoaXMuX2xhYmVsc1Bvc2l0aW9uPUgpO3RoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtOLnByb3RvdHlwZS5sYWJlbEZvcm1hdHRlcj1mdW5jdGlvbihPKXtpZihudWxsPT1PKXJldHVybiB0aGlzLl9sYWJlbEZvcm1hdHRlcjt0aGlzLl9sYWJlbEZvcm1hdHRlcj1PO3RoaXMuX2NsZWFyQXR0clRvUHJvamVjdG9yQ2FjaGUoKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtOLnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0PWZ1bmN0aW9uKE8pe3ZhciBIPUkucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQuY2FsbCh0aGlzLE8pLEs9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKE4uX0xBQkVMX0FSRUFfQ0xBU1MsCiEwKSxNPW5ldyBwLlN2Z0NvbnRleHQoSy5ub2RlKCkpLEw9bmV3IHAuQ2FjaGVNZWFzdXJlcihNKTtNPW5ldyBwLldyaXRlcihMLE0pO3RoaXMuX2xhYmVsQ29uZmlnLnNldChPLHtsYWJlbEFyZWE6SyxtZWFzdXJlcjpMLHdyaXRlcjpNfSk7cmV0dXJuIEh9O04ucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXM9ZnVuY3Rpb24oTyl7SS5wcm90b3R5cGUuX3JlbW92ZURhdGFzZXROb2Rlcy5jYWxsKHRoaXMsTyk7dmFyIEg9dGhpcy5fbGFiZWxDb25maWcuZ2V0KE8pO251bGwhPUgmJihILmxhYmVsQXJlYS5yZW1vdmUoKSx0aGlzLl9sYWJlbENvbmZpZy5kZWxldGUoTykpfTtOLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0PWZ1bmN0aW9uKE8pe3ZhciBIPXRoaXM7cmV0dXJuIHRoaXMuX2NvbXB1dGVCYXJQaXhlbFRoaWNrbmVzcy5kb0xvY2tlZChmdW5jdGlvbigpe2Z1bmN0aW9uIEsoY2Esa2EsWSxFYSl7cmV0dXJuIEguX3BpeGVsUG9pbnRCYXIoYWEoY2Esa2EsWSksbGEsRWEpfQp2YXIgTT1ILl9pc1ZlcnRpY2FsP08ueDpPLnksTD1ILl9pc1ZlcnRpY2FsP08ueTpPLngsUT1ILmJvdW5kcygpLFQ9e21pbjowLG1heDpRLmJvdHRvbVJpZ2h0LngtUS50b3BMZWZ0Lnh9LFg9e21pbjowLG1heDpRLmJvdHRvbVJpZ2h0LnktUS50b3BMZWZ0Lnl9LGFhPUQuUGxvdC5fc2NhbGVkQWNjZXNzb3IoSC5sZW5ndGgoKSksbGE9SC5sZW5ndGgoKS5zY2FsZS5zY2FsZShILmJhc2VsaW5lVmFsdWUoKSksWj1JbmZpbml0eSxiYT1JbmZpbml0eSxlYTtILl9nZXRFbnRpdHlTdG9yZSgpLmVudGl0aWVzKCkuZm9yRWFjaChmdW5jdGlvbihjYSl7dmFyIGthPUguX2VudGl0eUJvdW5kcyhjYSk7aWYoQy5ET00uaW50ZXJzZWN0c0JCb3goVCxYLGthKSl7dmFyIFk9MCxFYT0wO2lmKCFDLkRPTS5pbnRlcnNlY3RzQkJveChPLngsTy55LGthLC41KSl7RWE9SyhjYS5kYXR1bSxjYS5pbmRleCxjYS5kYXRhc2V0LGthKTtZPU1hdGguYWJzKE0tKEguX2lzVmVydGljYWw/RWEueDpFYS55KSk7CnZhciB2YT1ILl9pc1ZlcnRpY2FsP2thLnk6a2EueDtrYT12YSsoSC5faXNWZXJ0aWNhbD9rYS5oZWlnaHQ6a2Eud2lkdGgpO0VhPUw+PXZhLS41JiZMPD1rYSsuNT8wOk1hdGguYWJzKEwtKEguX2lzVmVydGljYWw/RWEueTpFYS54KSl9aWYoWTxafHxZPT09WiYmRWE8YmEpZWE9Y2EsWj1ZLGJhPUVhfX0pO2lmKHZvaWQgMCE9PWVhKXJldHVybiBILl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoZWEpfSl9O04ucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24oTyl7cmV0dXJuIHRoaXMuX2VudGl0aWVzSW50ZXJzZWN0aW5nKE8ueCxPLnkpfTtOLnByb3RvdHlwZS5fZW50aXRpZXNJbnRlcnNlY3Rpbmc9ZnVuY3Rpb24oTyxIKXt2YXIgSz10aGlzLE09W107dGhpcy5fZ2V0RW50aXR5U3RvcmUoKS5lbnRpdGllcygpLmZvckVhY2goZnVuY3Rpb24oTCl7Qy5ET00uaW50ZXJzZWN0c0JCb3goTyxILEsuX2VudGl0eUJvdW5kcyhMKSkmJk0ucHVzaChLLl9saWdodHdlaWdodFBsb3RFbnRpdHlUb1Bsb3RFbnRpdHkoTCkpfSk7CnJldHVybiBNfTtOLnByb3RvdHlwZS5fdXBkYXRlTGVuZ3RoU2NhbGU9ZnVuY3Rpb24oKXtpZih0aGlzLl9wcm9qZWN0b3JzUmVhZHkoKSl7dmFyIE89dGhpcy5sZW5ndGgoKS5zY2FsZTtPIGluc3RhbmNlb2Ygdy5RdWFudGl0YXRpdmVTY2FsZSYmKE8uYWRkUGFkZGluZ0V4Y2VwdGlvbnNQcm92aWRlcih0aGlzLl9iYXNlbGluZVZhbHVlUHJvdmlkZXIpLE8uYWRkSW5jbHVkZWRWYWx1ZXNQcm92aWRlcih0aGlzLl9iYXNlbGluZVZhbHVlUHJvdmlkZXIpKX19O04ucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7dmFyIE89dGhpczt0aGlzLl9iYXJQaXhlbFRoaWNrbmVzcygpO3JldHVybiB0aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3MuZG9Mb2NrZWQoZnVuY3Rpb24oKXtyZXR1cm4gSS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbChPKX0pfTtOLnByb3RvdHlwZS5fYWRkaXRpb25hbFBhaW50PWZ1bmN0aW9uKE8pe3ZhciBIPXRoaXMsSz10aGlzLmxlbmd0aCgpLnNjYWxlLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKTsKSz17eDE6dGhpcy5faXNWZXJ0aWNhbD8wOksseTE6dGhpcy5faXNWZXJ0aWNhbD9LOjAseDI6dGhpcy5faXNWZXJ0aWNhbD90aGlzLndpZHRoKCk6Syx5Mjp0aGlzLl9pc1ZlcnRpY2FsP0s6dGhpcy5oZWlnaHQoKX07dGhpcy5fZ2V0QW5pbWF0b3IoImJhc2VsaW5lIikuYW5pbWF0ZSh0aGlzLl9iYXNlbGluZSxLKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihNKXtyZXR1cm4gSC5fbGFiZWxDb25maWcuZ2V0KE0pLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pO3RoaXMuX2xhYmVsc0VuYWJsZWQmJkMuV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gSC5fZHJhd0xhYmVscygpfSxPKX07Ti5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5PWZ1bmN0aW9uKE8pe3ZhciBIPXRoaXMsSz1JLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLE8pO2lmKCJ4Ij09PU8mJnRoaXMuX2lzVmVydGljYWwpTz10aGlzLngoKTsKZWxzZXtpZigieSIhPT1PfHx0aGlzLl9pc1ZlcnRpY2FsKXJldHVybiBLO089dGhpcy55KCl9aWYoIShPJiZPLnNjYWxlJiZPLnNjYWxlIGluc3RhbmNlb2Ygdy5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJuIEs7dmFyIE09Ty5zY2FsZSxMPXRoaXMuX2JhclBpeGVsVGhpY2tuZXNzKCk7cmV0dXJuIEs9Sy5tYXAoZnVuY3Rpb24oUSl7cmV0dXJuIGwuZXh0ZW50KFtNLmludmVydChILl9nZXRQb3NpdGlvbkF0dHIoTS5zY2FsZShRWzBdKSxMKSksTS5pbnZlcnQoSC5fZ2V0UG9zaXRpb25BdHRyKE0uc2NhbGUoUVswXSksTCkrTCksTS5pbnZlcnQoSC5fZ2V0UG9zaXRpb25BdHRyKE0uc2NhbGUoUVsxXSksTCkpLE0uaW52ZXJ0KEguX2dldFBvc2l0aW9uQXR0cihNLnNjYWxlKFFbMV0pLEwpK0wpXSl9KX07Ti5wcm90b3R5cGUuX2dldFBvc2l0aW9uQXR0cj1mdW5jdGlvbihPLEgpe3RoaXMuX2lzVmVydGljYWx8fChPLT1ILEgqPS0xKTtzd2l0Y2godGhpcy5fYmFyQWxpZ25tZW50KXtjYXNlICJzdGFydCI6cmV0dXJuIE87CmNhc2UgImVuZCI6cmV0dXJuIE8tSDtkZWZhdWx0OnJldHVybiBPLUgvMn19O04ucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIE89dGhpcyxIPXRoaXMuX2dldERhdGFUb0RyYXcoKSxLPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLE09dGhpcy5kYXRhc2V0cygpLnNvbWUoZnVuY3Rpb24oTCl7cmV0dXJuIEguZ2V0KEwpLnNvbWUoZnVuY3Rpb24oUSxUKXtyZXR1cm4gbnVsbD09UT8hMTpPLl9kcmF3TGFiZWwoUSxULEwsSyl9KX0pO3RoaXMuX2hpZGVCYXJzSWZBbnlBcmVUb29XaWRlJiZNJiZ0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihMKXtyZXR1cm4gTy5fbGFiZWxDb25maWcuZ2V0KEwpLmxhYmVsQXJlYS5zZWxlY3RBbGwoImciKS5yZW1vdmUoKX0pfTtOLnByb3RvdHlwZS5fZHJhd0xhYmVsPWZ1bmN0aW9uKE8sSCxLLE0pe3ZhciBMPXRoaXMuX2xhYmVsQ29uZmlnLmdldChLKSxRPUwubGFiZWxBcmVhLFQ9TC5tZWFzdXJlcjtMPUwud3JpdGVyOwp2YXIgWD10aGlzLmxlbmd0aCgpLmFjY2Vzc29yLGFhPVgoTyxILEspO1g9dGhpcy5sZW5ndGgoKS5zY2FsZTt2YXIgbGE9bnVsbCE9WD9YLnNjYWxlKGFhKTphYSxaPW51bGwhPVg/WC5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk6dGhpcy5iYXNlbGluZVZhbHVlKCksYmE9e3g6TS54KE8sSCxLKSx5Ok0ueShPLEgsSyl9O1g9e3dpZHRoOk0ud2lkdGgoTyxILEspLGhlaWdodDpNLmhlaWdodChPLEgsSyl9O2FhPXRoaXMuX2xhYmVsRm9ybWF0dGVyKGFhLE8sSCxLKTtUPVQubWVhc3VyZShhYSk7dmFyIGVhPXRoaXMuX3Nob3VsZFNob3dMYWJlbE9uQmFyKGJhLFgsVCk7YmE9dGhpcy5fY2FsY3VsYXRlTGFiZWxQcm9wZXJ0aWVzKGJhLFgsVCxlYSx0aGlzLl9pc1ZlcnRpY2FsP2xhPD1aOmxhPFopO2xhPWJhLmNvbnRhaW5lckRpbWVuc2lvbnM7Wj1iYS5sYWJlbENvbnRhaW5lck9yaWdpbjtiYT1iYS5hbGlnbm1lbnQ7Tz1NLmZpbGwoTyxILEspO1E9dGhpcy5fY3JlYXRlTGFiZWxDb250YWluZXIoUSwKWixlYSxPKTtMLndyaXRlKGFhLGxhLndpZHRoLGxhLmhlaWdodCx7eEFsaWduOmJhLngseUFsaWduOmJhLnl9LFEubm9kZSgpKTtyZXR1cm4gdGhpcy5faXNWZXJ0aWNhbD9YLndpZHRoPFQud2lkdGg6WC5oZWlnaHQ8VC5oZWlnaHR9O04ucHJvdG90eXBlLl9zaG91bGRTaG93TGFiZWxPbkJhcj1mdW5jdGlvbihPLEgsSyl7aWYodGhpcy5fbGFiZWxzUG9zaXRpb249PT1mLkxhYmVsc1Bvc2l0aW9uLm91dHNpZGUpcmV0dXJuITE7Tz10aGlzLl9pc1ZlcnRpY2FsP08ueTpPLng7dmFyIE09dGhpcy5faXNWZXJ0aWNhbD9ILmhlaWdodDpILndpZHRoO0g9dGhpcy5faXNWZXJ0aWNhbD90aGlzLmhlaWdodCgpOnRoaXMud2lkdGgoKTtLPXRoaXMuX2lzVmVydGljYWw/Sy5oZWlnaHQ6Sy53aWR0aDt2YXIgTD1PK007TD5IP009SC1POjA+TyYmKE09TCk7cmV0dXJuIEsrTi5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI8PU19O04ucHJvdG90eXBlLl9jYWxjdWxhdGVMYWJlbFByb3BlcnRpZXM9CmZ1bmN0aW9uKE8sSCxLLE0sTCl7ZnVuY3Rpb24gUShrYSl7c3dpdGNoKGthKXtjYXNlICJ0b3BMZWZ0IjpaPVQuX2lzVmVydGljYWw/InRvcCI6ImxlZnQiO2VhKz1OLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUjtjYSs9Ti5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI7YnJlYWs7Y2FzZSAiY2VudGVyIjpjYSs9KGFhK2xhKS8yO2JyZWFrO2Nhc2UgImJvdHRvbVJpZ2h0IjpaPVQuX2lzVmVydGljYWw/ImJvdHRvbSI6InJpZ2h0IixlYS09Ti5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIsY2ErPWJhLU4uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSLWxhfX12YXIgVD10aGlzLFg9dGhpcy5faXNWZXJ0aWNhbD9PLnk6Ty54LGFhPXRoaXMuX2lzVmVydGljYWw/SC5oZWlnaHQ6SC53aWR0aCxsYT10aGlzLl9pc1ZlcnRpY2FsP0suaGVpZ2h0Oksud2lkdGgsWj0iY2VudGVyIixiYT1hYSxlYT1YLGNhPVg7aWYoTSlzd2l0Y2godGhpcy5fbGFiZWxzUG9zaXRpb24pe2Nhc2UgZi5MYWJlbHNQb3NpdGlvbi5zdGFydDpMPwpRKCJib3R0b21SaWdodCIpOlEoInRvcExlZnQiKTticmVhaztjYXNlIGYuTGFiZWxzUG9zaXRpb24ubWlkZGxlOlEoImNlbnRlciIpO2JyZWFrO2Nhc2UgZi5MYWJlbHNQb3NpdGlvbi5lbmQ6TD9RKCJ0b3BMZWZ0Iik6USgiYm90dG9tUmlnaHQiKX1lbHNlIEw/KFo9dGhpcy5faXNWZXJ0aWNhbD8idG9wIjoibGVmdCIsYmE9YWErTi5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVIrbGEsZWEtPU4uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2xhLGNhLT1OLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUitsYSk6KFo9dGhpcy5faXNWZXJ0aWNhbD8iYm90dG9tIjoicmlnaHQiLGJhPWFhK04uX0xBQkVMX01BUkdJTl9JTlNJREVfQkFSK2xhLGNhKz1hYStOLl9MQUJFTF9NQVJHSU5fSU5TSURFX0JBUik7cmV0dXJue2NvbnRhaW5lckRpbWVuc2lvbnM6e3dpZHRoOnRoaXMuX2lzVmVydGljYWw/SC53aWR0aDpiYSxoZWlnaHQ6dGhpcy5faXNWZXJ0aWNhbD9iYTpILmhlaWdodH0sbGFiZWxDb250YWluZXJPcmlnaW46e3g6dGhpcy5faXNWZXJ0aWNhbD8KTy54OmVhLHk6dGhpcy5faXNWZXJ0aWNhbD9lYTpPLnl9LGxhYmVsT3JpZ2luOnt4OnRoaXMuX2lzVmVydGljYWw/Ty54K0gud2lkdGgvMi1LLndpZHRoLzI6Y2EseTp0aGlzLl9pc1ZlcnRpY2FsP2NhOk8ueStILmhlaWdodC8yLUsuaGVpZ2h0LzJ9LGFsaWdubWVudDp7eDp0aGlzLl9pc1ZlcnRpY2FsPyJjZW50ZXIiOloseTp0aGlzLl9pc1ZlcnRpY2FsP1o6ImNlbnRlciJ9fX07Ti5wcm90b3R5cGUuX2NyZWF0ZUxhYmVsQ29udGFpbmVyPWZ1bmN0aW9uKE8sSCxLLE0pe089Ty5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitILngrIiwgIitILnkrIikiKTtLPyhPLmNsYXNzZWQoIm9uLWJhci1sYWJlbCIsITApLEs9MS42KkMuQ29sb3IuY29udHJhc3QoIndoaXRlIixNKTxDLkNvbG9yLmNvbnRyYXN0KCJibGFjayIsTSksTy5jbGFzc2VkKEs/ImRhcmstbGFiZWwiOiJsaWdodC1sYWJlbCIsITApKTpPLmNsYXNzZWQoIm9mZi1iYXItbGFiZWwiLCEwKTtyZXR1cm4gT307Ck4ucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciBPPVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIEg9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksSz10aGlzLmxlbmd0aCgpLnNjYWxlLnNjYWxlKHRoaXMuYmFzZWxpbmVWYWx1ZSgpKSxNPXRoaXMuX2lzVmVydGljYWw/ImhlaWdodCI6IndpZHRoIjtIW3RoaXMuX2lzVmVydGljYWw/InkiOiJ4Il09ZnVuY3Rpb24oKXtyZXR1cm4gS307SFtNXT1mdW5jdGlvbigpe3JldHVybiAwfTtPLnB1c2goe2F0dHJUb1Byb2plY3RvcjpILGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEYuQW5pbWF0b3IuUkVTRVQpfSl9Ty5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoRi5BbmltYXRvci5NQUlOKX0pO3JldHVybiBPfTtOLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBPKGJhLAplYSxjYSl7cmV0dXJuIE1hdGguYWJzKE0tWChiYSxlYSxjYSkpfXZhciBIPXRoaXMsSz1JLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKSxNPXRoaXMubGVuZ3RoKCkuc2NhbGUuc2NhbGUodGhpcy5iYXNlbGluZVZhbHVlKCkpLEw9dGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiLFE9dGhpcy5faXNWZXJ0aWNhbD8ieCI6InkiLFQ9RC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnBvc2l0aW9uKCkpLFg9RC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLmxlbmd0aCgpKSxhYT1LW04uX0JBUl9USElDS05FU1NfS0VZXSxsYT1LLmdhcCxaPW51bGw9PWxhP2FhOmZ1bmN0aW9uKGJhLGVhLGNhKXtyZXR1cm4gYWEoYmEsZWEsY2EpLWxhKGJhLGVhLGNhKX07Sy53aWR0aD10aGlzLl9pc1ZlcnRpY2FsP1o6TztLLmhlaWdodD10aGlzLl9pc1ZlcnRpY2FsP086WjtLW0xdPWZ1bmN0aW9uKGJhLGVhLGNhKXtiYT1YKGJhLGVhLGNhKTtyZXR1cm4gYmE+TT9NOmJhfTsKS1tRXT1mdW5jdGlvbihiYSxlYSxjYSl7cmV0dXJuIEguX2dldFBvc2l0aW9uQXR0cihUKGJhLGVhLGNhKSxhYShiYSxlYSxjYSkpfTtyZXR1cm4gS307Ti5wcm90b3R5cGUuX3VwZGF0ZVRoaWNrbmVzc0F0dHI9ZnVuY3Rpb24oKXt2YXIgTz10aGlzLEg9dGhpcy5wb3NpdGlvbigpLEs9dGhpcy5iYXJFbmQoKTtudWxsIT1IJiZudWxsIT1LPyh0aGlzLl9maXhlZEJhclBpeGVsVGhpY2tuZXNzPSExLHRoaXMuYXR0cihOLl9CQVJfVEhJQ0tORVNTX0tFWSxmdW5jdGlvbihNLEwsUSl7dmFyIFQ9SC5hY2Nlc3NvcihNLEwsUSk7TT1LLmFjY2Vzc29yKE0sTCxRKTtUPUguc2NhbGU/SC5zY2FsZS5zY2FsZShUKTpUO009Sy5zY2FsZT9LLnNjYWxlLnNjYWxlKE0pOk07cmV0dXJuIE1hdGguYWJzKE0tVCl9KSk6KHRoaXMuX2ZpeGVkQmFyUGl4ZWxUaGlja25lc3M9ITAsdGhpcy5hdHRyKE4uX0JBUl9USElDS05FU1NfS0VZLGZ1bmN0aW9uKCl7cmV0dXJuIE8uX2JhclBpeGVsVGhpY2tuZXNzKCl9KSl9OwpOLnByb3RvdHlwZS5fYmFyUGl4ZWxUaGlja25lc3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZml4ZWRCYXJQaXhlbFRoaWNrbmVzcz90aGlzLl9wcm9qZWN0b3JzUmVhZHkoKT90aGlzLl9jb21wdXRlQmFyUGl4ZWxUaGlja25lc3ModGhpcy5wb3NpdGlvbigpLHRoaXMuZGF0YXNldHMoKSx0aGlzLl9pc1ZlcnRpY2FsP3RoaXMud2lkdGgoKTp0aGlzLmhlaWdodCgpKTowOjB9O04ucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKE8pe3ZvaWQgMD09PU8mJihPPXRoaXMuZGF0YXNldHMoKSk7cmV0dXJuIHRoaXMuX3Byb2plY3RvcnNSZWFkeSgpP0kucHJvdG90eXBlLmVudGl0aWVzLmNhbGwodGhpcyxPKTpbXX07Ti5wcm90b3R5cGUuX2VudGl0eUJvdW5kcz1mdW5jdGlvbihPKXtyZXR1cm4gdGhpcy5fcGl4ZWxCb3VuZHMoTy5kYXR1bSxPLmluZGV4LE8uZGF0YXNldCl9O04ucHJvdG90eXBlLl9waXhlbEJvdW5kcz1mdW5jdGlvbihPLEgsSyl7dmFyIE09dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCk7CnJldHVybnt4Ok0ueChPLEgsSykseTpNLnkoTyxILEspLHdpZHRoOk0ud2lkdGgoTyxILEspLGhlaWdodDpNLmhlaWdodChPLEgsSyl9fTtOLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihPLEgsSyl7dmFyIE09dGhpcy5fcGl4ZWxCb3VuZHMoTyxILEspO089KHRoaXMuX2lzVmVydGljYWw/RC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk6RC5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkpKE8sSCxLKTtIPSh0aGlzLl9pc1ZlcnRpY2FsP3RoaXMueSgpLnNjYWxlOnRoaXMueCgpLnNjYWxlKS5zY2FsZSh0aGlzLmJhc2VsaW5lVmFsdWUoKSk7cmV0dXJuIHRoaXMuX3BpeGVsUG9pbnRCYXIoTyxILE0pfTtOLnByb3RvdHlwZS5fcGl4ZWxQb2ludEJhcj1mdW5jdGlvbihPLEgsSyl7aWYodGhpcy5faXNWZXJ0aWNhbCl7dmFyIE09Sy54K0sud2lkdGgvMjtPPU88PUg/Sy55OksueStLLmhlaWdodH1lbHNlIE09Tz49SD9LLngrSy53aWR0aDpLLngsTz1LLnkrSy5oZWlnaHQvCjI7cmV0dXJue3g6TSx5Ok99fTtOLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXk9ZnVuY3Rpb24oTyxIKXtJLnByb3RvdHlwZS5fdW5pbnN0YWxsU2NhbGVGb3JLZXkuY2FsbCh0aGlzLE8sSCl9O04ucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dmFyIE89dGhpcyxIPW5ldyBDLk1hcCxLPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLE09dGhpcy53aWR0aCgpLEw9dGhpcy5oZWlnaHQoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihRKXt2YXIgVD1RLmRhdGEoKS5tYXAoZnVuY3Rpb24oWCxhYSl7cmV0dXJuIE8uX2lzRGF0dW1PblNjcmVlbihLLE0sTCxYLGFhLFEpP1g6bnVsbH0pO0guc2V0KFEsVCl9KTtyZXR1cm4gSH07Ti5wcm90b3R5cGUuX2lzRGF0dW1PblNjcmVlbj1mdW5jdGlvbihPLEgsSyxNLEwsUSl7dmFyIFQ9Ty54KE0sTCxRKSxYPU8ueShNLEwsUSksYWE9Ty53aWR0aChNLEwsUSk7Tz1PLmhlaWdodChNLEwsUSk7cmV0dXJuIEMuTWF0aC5pc1ZhbGlkTnVtYmVyKFQpJiYKQy5NYXRoLmlzVmFsaWROdW1iZXIoWCkmJkMuTWF0aC5pc1ZhbGlkTnVtYmVyKGFhKSYmQy5NYXRoLmlzVmFsaWROdW1iZXIoTyk/Qy5NYXRoLmJvdW5kc0ludGVyc2VjdHMoVCxYLGFhLE8sSCxLKTohMX07cmV0dXJuIE59KGguWFlQbG90KTtCLl9CQVJfVEhJQ0tORVNTX1JBVElPPS45NTtCLl9TSU5HTEVfQkFSX0RJTUVOU0lPTl9SQVRJTz0uNDtCLl9CQVJfQVJFQV9DTEFTUz0iYmFyLWFyZWEiO0IuX0JBUl9FTkRfS0VZPSJiYXJFbmQiO0IuX0JBUl9USElDS05FU1NfS0VZPSJ3aWR0aCI7Qi5fTEFCRUxfQVJFQV9DTEFTUz0iYmFyLWxhYmVsLXRleHQtYXJlYSI7Qi5fTEFCRUxfTUFSR0lOX0lOU0lERV9CQVI9MTA7Zi5CYXI9Qn0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih4LEEpe2Z1bmN0aW9uIHkoKXt0aGlzLmNvbnN0cnVjdG9yPXh9Zm9yKHZhciB3IGluIEEpQS5oYXNPd25Qcm9wZXJ0eSh3KSYmKHhbd109QVt3XSk7eC5wcm90b3R5cGU9Cm51bGw9PT1BP09iamVjdC5jcmVhdGUoQSk6KHkucHJvdG90eXBlPUEucHJvdG90eXBlLG5ldyB5KX0sdD1oKDEpLGw9aCg1KSxwPWgoOCksbT1oKDMpLG49aCgwKTtkPWgoMTApO3ZhciBxPWgoMjIpO2YuVGltZUludGVydmFsPWQubWFrZUVudW0oInNlY29uZCBtaW51dGUgaG91ciBkYXkgd2VlayBtb250aCB5ZWFyIi5zcGxpdCgiICIpKTtmLlRpbWVBeGlzT3JpZW50YXRpb249ZC5tYWtlRW51bShbInRvcCIsImJvdHRvbSJdKTtmLlRpZXJMYWJlbFBvc2l0aW9uPWQubWFrZUVudW0oWyJiZXR3ZWVuIiwiY2VudGVyIl0pO2g9ZnVuY3Rpb24oeCl7ZnVuY3Rpb24gQSh5LHcpe3k9eC5jYWxsKHRoaXMseSx3KXx8dGhpczt5Ll9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249bnVsbDt5Ll90aWVyTGFiZWxQb3NpdGlvbnM9W107eS5hZGRDbGFzcygidGltZS1heGlzIik7eS50aWNrTGFiZWxQYWRkaW5nKDUpO3kuYXhpc0NvbmZpZ3VyYXRpb25zKEEuX0RFRkFVTFRfVElNRV9BWElTX0NPTkZJR1VSQVRJT05TKTsKeS5hbm5vdGF0aW9uRm9ybWF0dGVyKHAudGltZSgiJWEgJWIgJWQsICVZIikpO3JldHVybiB5fWsoQSx4KTtBLnByb3RvdHlwZS50aWVyTGFiZWxQb3NpdGlvbnM9ZnVuY3Rpb24oeSl7aWYobnVsbD09eSlyZXR1cm4gdGhpcy5fdGllckxhYmVsUG9zaXRpb25zO2lmKCF5LmV2ZXJ5KGZ1bmN0aW9uKHcpe3JldHVybiJiZXR3ZWVuIj09PXcudG9Mb3dlckNhc2UoKXx8ImNlbnRlciI9PT13LnRvTG93ZXJDYXNlKCl9KSl0aHJvdyBFcnJvcigiVW5zdXBwb3J0ZWQgcG9zaXRpb24gZm9yIHRpZXIgbGFiZWxzIik7dGhpcy5fdGllckxhYmVsUG9zaXRpb25zPXk7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307QS5wcm90b3R5cGUubWF4VGltZUludGVydmFsUHJlY2lzaW9uPWZ1bmN0aW9uKHkpe2lmKG51bGw9PXkpcmV0dXJuIHRoaXMuX21heFRpbWVJbnRlcnZhbFByZWNpc2lvbjt0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb249eTt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTtBLnByb3RvdHlwZS5jdXJyZW50QXhpc0NvbmZpZ3VyYXRpb249CmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XX07QS5wcm90b3R5cGUuYXhpc0NvbmZpZ3VyYXRpb25zPWZ1bmN0aW9uKHkpe2lmKG51bGwhPXkpe3RoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucz15O3RoaXMuX251bVRpZXJzPW4uTWF0aC5tYXgodGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLm1hcChmdW5jdGlvbihGKXtyZXR1cm4gRi5sZW5ndGh9KSwwKTt0aGlzLl9pc0FuY2hvcmVkJiZ0aGlzLl9zZXR1cERvbUVsZW1lbnRzKCk7eT10aGlzLnRpZXJMYWJlbFBvc2l0aW9ucygpO2Zvcih2YXIgdz1bXSxDPTA7Qzx0aGlzLl9udW1UaWVycztDKyspdy5wdXNoKHlbQ118fCJiZXR3ZWVuIik7dGhpcy50aWVyTGFiZWxQb3NpdGlvbnModyk7dGhpcy5yZWRyYXcoKX19O0EucHJvdG90eXBlLl9nZXRNb3N0UHJlY2lzZUNvbmZpZ3VyYXRpb25JbmRleD0KZnVuY3Rpb24oKXt2YXIgeT10aGlzLHc9dGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zLmxlbmd0aDt0aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihDLEYpe0Y8dyYmQy5ldmVyeShmdW5jdGlvbihEKXtyZXR1cm4geS5fY2hlY2tUaW1lQXhpc1RpZXJDb25maWd1cmF0aW9uKEQpfSkmJih3PUYpfSk7dz09PXRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9ucy5sZW5ndGgmJihuLldpbmRvdy53YXJuKCJ6b29tZWQgb3V0IHRvbyBmYXI6IGNvdWxkIG5vdCBmaW5kIHN1aXRhYmxlIGludGVydmFsIHRvIGRpc3BsYXkgbGFiZWxzIiksLS13KTtyZXR1cm4gd307QS5wcm90b3R5cGUub3JpZW50YXRpb249ZnVuY3Rpb24oeSl7aWYoeSYmKCJyaWdodCI9PT15LnRvTG93ZXJDYXNlKCl8fCJsZWZ0Ij09PXkudG9Mb3dlckNhc2UoKSkpdGhyb3cgRXJyb3IoeSsiIGlzIG5vdCBhIHN1cHBvcnRlZCBvcmllbnRhdGlvbiBmb3IgVGltZUF4aXMgLSBvbmx5IGhvcml6b250YWwgb3JpZW50YXRpb25zIGFyZSBzdXBwb3J0ZWQiKTsKcmV0dXJuIHgucHJvdG90eXBlLm9yaWVudGF0aW9uLmNhbGwodGhpcyx5KX07QS5wcm90b3R5cGUuX2NvbXB1dGVIZWlnaHQ9ZnVuY3Rpb24oKXt2YXIgeT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0O3RoaXMuX3RpZXJIZWlnaHRzPVtdO2Zvcih2YXIgdz0wO3c8dGhpcy5fbnVtVGllcnM7dysrKXRoaXMuX3RpZXJIZWlnaHRzLnB1c2goeSt0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKSsoImJldHdlZW4iPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW3ddPzA6dGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkpKTtyZXR1cm4gdC5zdW0odGhpcy5fdGllckhlaWdodHMpfTtBLnByb3RvdHlwZS5fZ2V0SW50ZXJ2YWxMZW5ndGg9ZnVuY3Rpb24oeSl7dmFyIHc9dGhpcy5fc2NhbGUuZG9tYWluKClbMF07eT1tLlRpbWUudGltZUludGVydmFsVG9EM1RpbWUoeS5pbnRlcnZhbCkub2Zmc2V0KHcseS5zdGVwKTtyZXR1cm4geT50aGlzLl9zY2FsZS5kb21haW4oKVsxXT90aGlzLndpZHRoKCk6Ck1hdGguYWJzKHRoaXMuX3NjYWxlLnNjYWxlKHkpLXRoaXMuX3NjYWxlLnNjYWxlKHcpKX07QS5wcm90b3R5cGUuX21heFdpZHRoRm9ySW50ZXJ2YWw9ZnVuY3Rpb24oeSl7cmV0dXJuIHRoaXMuX21lYXN1cmVyLm1lYXN1cmUoeS5mb3JtYXR0ZXIoQS5fTE9OR19EQVRFKSkud2lkdGh9O0EucHJvdG90eXBlLl9jaGVja1RpbWVBeGlzVGllckNvbmZpZ3VyYXRpb249ZnVuY3Rpb24oeSl7aWYobnVsbCE9dGhpcy5fbWF4VGltZUludGVydmFsUHJlY2lzaW9uKXt2YXIgdz1BLl9TT1JURURfVElNRV9JTlRFUlZBTF9JTkRFWFt0aGlzLl9tYXhUaW1lSW50ZXJ2YWxQcmVjaXNpb25dLEM9QS5fU09SVEVEX1RJTUVfSU5URVJWQUxfSU5ERVhbeS5pbnRlcnZhbF07aWYobnVsbCE9dyYmbnVsbCE9QyYmQzx3KXJldHVybiExfXc9dGhpcy5fbWF4V2lkdGhGb3JJbnRlcnZhbCh5KSsyKnRoaXMudGlja0xhYmVsUGFkZGluZygpO3JldHVybiBNYXRoLm1pbih0aGlzLl9nZXRJbnRlcnZhbExlbmd0aCh5KSwKdGhpcy53aWR0aCgpKT49d307QS5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24oeSx3KXt2YXIgQz14LnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlci5jYWxsKHRoaXMseSx3KTt5PXRoaXMuX3RpZXJIZWlnaHRzLnJlZHVjZShmdW5jdGlvbihGLEQpe3JldHVybiBGK0Q+Qy5oZWlnaHQ/RjpGK0R9KTt3PXRoaXMubWFyZ2luKCkrKHRoaXMuYW5ub3RhdGlvbnNFbmFibGVkKCk/dGhpcy5hbm5vdGF0aW9uVGllckNvdW50KCkqdGhpcy5fYW5ub3RhdGlvblRpZXJIZWlnaHQoKTowKTtDLmhlaWdodD1NYXRoLm1pbihDLmhlaWdodCx5K3cpO3JldHVybiBDfTtBLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt4LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt0aGlzLl9zZXR1cERvbUVsZW1lbnRzKCl9O0EucHJvdG90eXBlLl9zZXR1cERvbUVsZW1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5jb250ZW50KCkuc2VsZWN0QWxsKCIuIitBLlRJTUVfQVhJU19USUVSX0NMQVNTKS5yZW1vdmUoKTsKdGhpcy5fdGllckxhYmVsQ29udGFpbmVycz1bXTt0aGlzLl90aWVyTWFya0NvbnRhaW5lcnM9W107dGhpcy5fdGllckJhc2VsaW5lcz1bXTt0aGlzLl90aWNrTGFiZWxDb250YWluZXIucmVtb3ZlKCk7dGhpcy5fYmFzZWxpbmUucmVtb3ZlKCk7Zm9yKHZhciB5PTA7eTx0aGlzLl9udW1UaWVyczsrK3kpe3ZhciB3PXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoQS5USU1FX0FYSVNfVElFUl9DTEFTUywhMCk7dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5wdXNoKHcuYXBwZW5kKCJnIikuY2xhc3NlZChxLkF4aXMuVElDS19MQUJFTF9DTEFTUysiLWNvbnRhaW5lciIsITApKTt0aGlzLl90aWVyTWFya0NvbnRhaW5lcnMucHVzaCh3LmFwcGVuZCgiZyIpLmNsYXNzZWQocS5BeGlzLlRJQ0tfTUFSS19DTEFTUysiLWNvbnRhaW5lciIsITApKTt0aGlzLl90aWVyQmFzZWxpbmVzLnB1c2gody5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJiYXNlbGluZSIsITApKX15PW5ldyBsLlN2Z0NvbnRleHQodGhpcy5fdGllckxhYmVsQ29udGFpbmVyc1swXS5ub2RlKCkpOwp0aGlzLl9tZWFzdXJlcj1uZXcgbC5DYWNoZU1lYXN1cmVyKHkpfTtBLnByb3RvdHlwZS5fZ2V0VGlja0ludGVydmFsVmFsdWVzPWZ1bmN0aW9uKHkpe3JldHVybiB0aGlzLl9zY2FsZS50aWNrSW50ZXJ2YWwoeS5pbnRlcnZhbCx5LnN0ZXApfTtBLnByb3RvdHlwZS5fZ2V0VGlja1ZhbHVlcz1mdW5jdGlvbigpe3ZhciB5PXRoaXM7cmV0dXJuIHRoaXMuX3Bvc3NpYmxlVGltZUF4aXNDb25maWd1cmF0aW9uc1t0aGlzLl9tb3N0UHJlY2lzZUNvbmZpZ0luZGV4XS5yZWR1Y2UoZnVuY3Rpb24odyxDKXtyZXR1cm4gdy5jb25jYXQoeS5fZ2V0VGlja0ludGVydmFsVmFsdWVzKEMpKX0sW10pfTtBLnByb3RvdHlwZS5fY2xlYW5UaWVycz1mdW5jdGlvbigpe2Zvcih2YXIgeT0wO3k8dGhpcy5fdGllckxhYmVsQ29udGFpbmVycy5sZW5ndGg7eSsrKXRoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbeV0uc2VsZWN0QWxsKCIuIitxLkF4aXMuVElDS19MQUJFTF9DTEFTUykucmVtb3ZlKCksdGhpcy5fdGllck1hcmtDb250YWluZXJzW3ldLnNlbGVjdEFsbCgiLiIrCnEuQXhpcy5USUNLX01BUktfQ0xBU1MpLnJlbW92ZSgpLHRoaXMuX3RpZXJCYXNlbGluZXNbeV0uc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX07QS5wcm90b3R5cGUuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uPWZ1bmN0aW9uKHkpe3k9dGhpcy5fc2NhbGUudGlja0ludGVydmFsKHkuaW50ZXJ2YWwseS5zdGVwKTt2YXIgdz10aGlzLl9zY2FsZS5kb21haW4oKSxDPXkubWFwKGZ1bmN0aW9uKEYpe3JldHVybiBGLnZhbHVlT2YoKX0pOy0xPT09Qy5pbmRleE9mKHdbMF0udmFsdWVPZigpKSYmeS51bnNoaWZ0KHdbMF0pOy0xPT09Qy5pbmRleE9mKHdbMV0udmFsdWVPZigpKSYmeS5wdXNoKHdbMV0pO3JldHVybiB5fTtBLnByb3RvdHlwZS5fcmVuZGVyVGllckxhYmVscz1mdW5jdGlvbih5LHcsQyl7dmFyIEY9dGhpcyxEPXRoaXMuX2dldFRpY2tWYWx1ZXNGb3JDb25maWd1cmF0aW9uKHcpLEI9W107ImJldHdlZW4iPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW0NdJiYKMT09PXcuc3RlcD9ELm1hcChmdW5jdGlvbihLLE0pe00rMT49RC5sZW5ndGh8fEIucHVzaChuZXcgRGF0ZSgoRFtNKzFdLnZhbHVlT2YoKS1EW01dLnZhbHVlT2YoKSkvMitEW01dLnZhbHVlT2YoKSkpfSk6Qj1EO3k9eS5zZWxlY3RBbGwoIi4iK3EuQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKEIsZnVuY3Rpb24oSyl7cmV0dXJuIFN0cmluZyhLLnZhbHVlT2YoKSl9KTt2YXIgST15LmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZChxLkF4aXMuVElDS19MQUJFTF9DTEFTUywhMCk7SS5hcHBlbmQoInRleHQiKTt2YXIgTj0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tDXXx8MT09PXcuc3RlcD8wOnRoaXMudGlja0xhYmVsUGFkZGluZygpO3ZhciBPPSJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpP3Quc3VtKHRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsQysxKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCk6ImNlbnRlciI9PT10aGlzLl90aWVyTGFiZWxQb3NpdGlvbnNbQ10/CnRoaXMuaGVpZ2h0KCktdC5zdW0odGhpcy5fdGllckhlaWdodHMuc2xpY2UoMCxDKSktdGhpcy50aWNrTGFiZWxQYWRkaW5nKCktdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCk6dGhpcy5oZWlnaHQoKS10LnN1bSh0aGlzLl90aWVySGVpZ2h0cy5zbGljZSgwLEMpKS10aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTtJPXkubWVyZ2UoSSk7dmFyIEg9SS5zZWxlY3RBbGwoInRleHQiKTswPEguc2l6ZSgpJiZILmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK04rIiwiK08rIikiKTt5LmV4aXQoKS5yZW1vdmUoKTtJLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oSyl7cmV0dXJuInRyYW5zbGF0ZSgiK0YuX3NjYWxlLnNjYWxlKEspKyIsMCkifSk7Qz0iY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1tDXXx8MT09PXcuc3RlcD8ibWlkZGxlIjoic3RhcnQiO0kuc2VsZWN0QWxsKCJ0ZXh0IikudGV4dCh3LmZvcm1hdHRlcikuc3R5bGUoInRleHQtYW5jaG9yIixDKX07QS5wcm90b3R5cGUuX3JlbmRlclRpY2tNYXJrcz0KZnVuY3Rpb24oeSx3KXt5PXRoaXMuX3RpZXJNYXJrQ29udGFpbmVyc1t3XS5zZWxlY3RBbGwoIi4iK3EuQXhpcy5USUNLX01BUktfQ0xBU1MpLmRhdGEoeSk7dmFyIEM9eS5lbnRlcigpLmFwcGVuZCgibGluZSIpLmNsYXNzZWQocS5BeGlzLlRJQ0tfTUFSS19DTEFTUywhMCkubWVyZ2UoeSksRj10aGlzLl9nZW5lcmF0ZVRpY2tNYXJrQXR0ckhhc2goKSxEPXRoaXMuX3RpZXJIZWlnaHRzLnNsaWNlKDAsdykucmVkdWNlKGZ1bmN0aW9uKEIsSSl7cmV0dXJuIEIrSX0sMCk7ImJvdHRvbSI9PT10aGlzLm9yaWVudGF0aW9uKCk/KEYueTE9RCxGLnkyPUQrKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW3ddP3RoaXMuaW5uZXJUaWNrTGVuZ3RoKCk6dGhpcy5fdGllckhlaWdodHNbd10pKTooRi55MT10aGlzLmhlaWdodCgpLUQsRi55Mj10aGlzLmhlaWdodCgpLShEKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1t3XT90aGlzLmlubmVyVGlja0xlbmd0aCgpOgp0aGlzLl90aWVySGVpZ2h0c1t3XSkpKTtDLmF0dHJzKEYpOyJib3R0b20iPT09dGhpcy5vcmllbnRhdGlvbigpPyhGLnkxPUQsRi55Mj1EKygiY2VudGVyIj09PXRoaXMuX3RpZXJMYWJlbFBvc2l0aW9uc1t3XT90aGlzLmVuZFRpY2tMZW5ndGgoKTp0aGlzLl90aWVySGVpZ2h0c1t3XSkpOihGLnkxPXRoaXMuaGVpZ2h0KCktRCxGLnkyPXRoaXMuaGVpZ2h0KCktKEQrKCJjZW50ZXIiPT09dGhpcy5fdGllckxhYmVsUG9zaXRpb25zW3ddP3RoaXMuZW5kVGlja0xlbmd0aCgpOnRoaXMuX3RpZXJIZWlnaHRzW3ddKSkpO3Quc2VsZWN0KEMubm9kZXMoKVswXSkuYXR0cnMoRik7dC5zZWxlY3QoQy5ub2RlcygpW0Muc2l6ZSgpLTFdKS5hdHRycyhGKTt0LnNlbGVjdChDLm5vZGVzKClbMF0pLmNsYXNzZWQocS5BeGlzLkVORF9USUNLX01BUktfQ0xBU1MsITApO3Quc2VsZWN0KEMubm9kZXMoKVtDLnNpemUoKS0xXSkuY2xhc3NlZChxLkF4aXMuRU5EX1RJQ0tfTUFSS19DTEFTUywhMCk7eS5leGl0KCkucmVtb3ZlKCl9OwpBLnByb3RvdHlwZS5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzPWZ1bmN0aW9uKHkpe3k9dGhpcy5fdGlja01hcmtDb250YWluZXIuc2VsZWN0QWxsKCIuIitxLkF4aXMuVElDS19NQVJLX0NMQVNTKS5kYXRhKHkpO3ZhciB3PXkuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKHEuQXhpcy5USUNLX01BUktfQ0xBU1MsITApLm1lcmdlKHkpLEM9dGhpcy5fZ2VuZXJhdGVUaWNrTWFya0F0dHJIYXNoKCk7Qy55Mj0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTp0aGlzLmhlaWdodCgpLXRoaXMudGlja0xhYmVsUGFkZGluZygpO3cuYXR0cnMoQyk7eS5leGl0KCkucmVtb3ZlKCl9O0EucHJvdG90eXBlLl9nZW5lcmF0ZUxhYmVsbGVzc1RpY2tzPWZ1bmN0aW9uKCl7cmV0dXJuIDE+dGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleD9bXTp0aGlzLl9nZXRUaWNrSW50ZXJ2YWxWYWx1ZXModGhpcy5fcG9zc2libGVUaW1lQXhpc0NvbmZpZ3VyYXRpb25zW3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXgtCjFdWzBdKX07QS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgeT10aGlzO3RoaXMuX21vc3RQcmVjaXNlQ29uZmlnSW5kZXg9dGhpcy5fZ2V0TW9zdFByZWNpc2VDb25maWd1cmF0aW9uSW5kZXgoKTt2YXIgdz10aGlzLl9wb3NzaWJsZVRpbWVBeGlzQ29uZmlndXJhdGlvbnNbdGhpcy5fbW9zdFByZWNpc2VDb25maWdJbmRleF07dGhpcy5fY2xlYW5UaWVycygpO3cuZm9yRWFjaChmdW5jdGlvbihJLE4pe3JldHVybiB5Ll9yZW5kZXJUaWVyTGFiZWxzKHkuX3RpZXJMYWJlbENvbnRhaW5lcnNbTl0sSSxOKX0pO2Zvcih2YXIgQz13Lm1hcChmdW5jdGlvbihJKXtyZXR1cm4geS5fZ2V0VGlja1ZhbHVlc0ZvckNvbmZpZ3VyYXRpb24oSSl9KSxGPTAsRD0wO0Q8TWF0aC5tYXgody5sZW5ndGgsMSk7KytEKXt2YXIgQj10aGlzLl9nZW5lcmF0ZUJhc2VsaW5lQXR0ckhhc2goKTtCLnkxKz0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT9GOi1GO0IueTI9Qi55MTsKdGhpcy5fdGllckJhc2VsaW5lc1tEXS5hdHRycyhCKS5zdHlsZSgidmlzaWJpbGl0eSIsImluaGVyaXQiKTtGKz10aGlzLl90aWVySGVpZ2h0c1tEXX1GPVtdO0Q9dGhpcy5fc2NhbGUuZG9tYWluKCk7RD10aGlzLl9zY2FsZS5zY2FsZShEWzFdKS10aGlzLl9zY2FsZS5zY2FsZShEWzBdKTsxLjUqdGhpcy5fZ2V0SW50ZXJ2YWxMZW5ndGgod1swXSk+PUQmJihGPXRoaXMuX2dlbmVyYXRlTGFiZWxsZXNzVGlja3MoKSk7dGhpcy5fcmVuZGVyTGFiZWxsZXNzVGlja01hcmtzKEYpO3RoaXMuX2hpZGVPdmVyZmxvd2luZ1RpZXJzKCk7Zm9yKEQ9MDtEPHcubGVuZ3RoOysrRCl0aGlzLl9yZW5kZXJUaWNrTWFya3MoQ1tEXSxEKSx0aGlzLl9oaWRlT3ZlcmxhcHBpbmdBbmRDdXRPZmZMYWJlbHMoRCk7dGhpcy5hbm5vdGF0aW9uc0VuYWJsZWQoKT90aGlzLl9kcmF3QW5ub3RhdGlvbnMoKTp0aGlzLl9yZW1vdmVBbm5vdGF0aW9ucygpO3JldHVybiB0aGlzfTtBLnByb3RvdHlwZS5faGlkZU92ZXJmbG93aW5nVGllcnM9CmZ1bmN0aW9uKCl7dmFyIHk9dGhpcyx3PXRoaXMuaGVpZ2h0KCksQz0wO3RoaXMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIrQS5USU1FX0FYSVNfVElFUl9DTEFTUykuYXR0cigidmlzaWJpbGl0eSIsZnVuY3Rpb24oRixEKXtDKz15Ll90aWVySGVpZ2h0c1tEXTtyZXR1cm4gQzw9dz8iaW5oZXJpdCI6ImhpZGRlbiJ9KX07QS5wcm90b3R5cGUuX2hpZGVPdmVybGFwcGluZ0FuZEN1dE9mZkxhYmVscz1mdW5jdGlvbih5KXtmdW5jdGlvbiB3KEkpe3JldHVybiBNYXRoLmZsb29yKEYubGVmdCk8PU1hdGguY2VpbChJLmxlZnQpJiZNYXRoLmZsb29yKEYudG9wKTw9TWF0aC5jZWlsKEkudG9wKSYmTWF0aC5mbG9vcihJLnJpZ2h0KTw9TWF0aC5jZWlsKEYubGVmdCtDLndpZHRoKCkpJiZNYXRoLmZsb29yKEkuYm90dG9tKTw9TWF0aC5jZWlsKEYudG9wK0MuaGVpZ2h0KCkpfXZhciBDPXRoaXMsRj10aGlzLmVsZW1lbnQoKS5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksRD10aGlzLl90aWVyTWFya0NvbnRhaW5lcnNbeV0uc2VsZWN0QWxsKCIuIisKcS5BeGlzLlRJQ0tfTUFSS19DTEFTUykuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIEk9dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4idmlzaWJsZSI9PT1JfHwiaW5oZXJpdCI9PT1JfSkubm9kZXMoKS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIEkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSxCO3RoaXMuX3RpZXJMYWJlbENvbnRhaW5lcnNbeV0uc2VsZWN0QWxsKCIuIitxLkF4aXMuVElDS19MQUJFTF9DTEFTUykuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIEk9dC5zZWxlY3QodGhpcykuc3R5bGUoInZpc2liaWxpdHkiKTtyZXR1cm4idmlzaWJsZSI9PT1JfHwiaW5oZXJpdCI9PT1JfSkuZWFjaChmdW5jdGlvbihJLE4pe0k9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt2YXIgTz10LnNlbGVjdCh0aGlzKSxIPURbTl0sSz1EW04rMV07Tj1udWxsIT1CJiZuLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoSSxCKTtIPW51bGwhPUgmJm4uRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChJLApIKTtLPW51bGwhPUsmJm4uRE9NLmNsaWVudFJlY3RzT3ZlcmxhcChJLEspOyF3KEkpfHxOfHxIfHxLP08uc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTooQj1JLE8uc3R5bGUoInZpc2liaWxpdHkiLCJpbmhlcml0IikpfSl9O0EucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3gucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZS5jYWxsKHRoaXMpO3RoaXMuX21lYXN1cmVyLnJlc2V0KCl9O3JldHVybiBBfShxLkF4aXMpO2guVElNRV9BWElTX1RJRVJfQ0xBU1M9InRpbWUtYXhpcy10aWVyIjtoLl9TT1JURURfVElNRV9JTlRFUlZBTF9JTkRFWD0odT17fSx1W2YuVGltZUludGVydmFsLnNlY29uZF09MCx1W2YuVGltZUludGVydmFsLm1pbnV0ZV09MSx1W2YuVGltZUludGVydmFsLmhvdXJdPTIsdVtmLlRpbWVJbnRlcnZhbC5kYXldPTMsdVtmLlRpbWVJbnRlcnZhbC53ZWVrXT00LHVbZi5UaW1lSW50ZXJ2YWwubW9udGhdPTUsdVtmLlRpbWVJbnRlcnZhbC55ZWFyXT0KNix1KTtoLl9ERUZBVUxUX1RJTUVfQVhJU19DT05GSUdVUkFUSU9OUz1bW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDo1LGZvcm1hdHRlcjpwLnRpbWUoIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDoxMCxmb3JtYXR0ZXI6cC50aW1lKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuc2Vjb25kLHN0ZXA6MTUsCmZvcm1hdHRlcjpwLnRpbWUoIiVJOiVNOiVTICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5zZWNvbmQsc3RlcDozMCxmb3JtYXR0ZXI6cC50aW1lKCIlSTolTTolUyAlcCIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6NSxmb3JtYXR0ZXI6cC50aW1lKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLApbe2ludGVydmFsOmYuVGltZUludGVydmFsLm1pbnV0ZSxzdGVwOjEwLGZvcm1hdHRlcjpwLnRpbWUoIiVJOiVNICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5taW51dGUsc3RlcDoxNSxmb3JtYXR0ZXI6cC50aW1lKCIlSTolTSAlcCIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwubWludXRlLHN0ZXA6MzAsZm9ybWF0dGVyOnAudGltZSgiJUk6JU0gJXAiKX0se2ludGVydmFsOmYuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLmhvdXIsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVJICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksCnN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiAlZSwgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuaG91cixzdGVwOjMsZm9ybWF0dGVyOnAudGltZSgiJUkgJXAiKX0se2ludGVydmFsOmYuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLmhvdXIsc3RlcDo2LGZvcm1hdHRlcjpwLnRpbWUoIiVJICVwIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5kYXksc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVlLCAlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5ob3VyLHN0ZXA6MTIsZm9ybWF0dGVyOnAudGltZSgiJUkgJXAiKX0se2ludGVydmFsOmYuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJUIgJWUsICVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLmRheSxzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJWEgJWUiKX0sCntpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJUIgJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwuZGF5LHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlZSIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVCICVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLm1vbnRoLHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlQiIpfSx7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjEsZm9ybWF0dGVyOnAudGltZSgiJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwubW9udGgsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiViIil9LHtpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjMsZm9ybWF0dGVyOnAudGltZSgiJWIiKX0sCntpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6MSxmb3JtYXR0ZXI6cC50aW1lKCIlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC5tb250aCxzdGVwOjYsZm9ybWF0dGVyOnAudGltZSgiJWIiKX0se2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoxLGZvcm1hdHRlcjpwLnRpbWUoIiV5Iil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDo1LGZvcm1hdHRlcjpwLnRpbWUoIiVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoyNSxmb3JtYXR0ZXI6cC50aW1lKCIlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAsZm9ybWF0dGVyOnAudGltZSgiJVkiKX1dLApbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoxMDAsZm9ybWF0dGVyOnAudGltZSgiJVkiKX1dLFt7aW50ZXJ2YWw6Zi5UaW1lSW50ZXJ2YWwueWVhcixzdGVwOjIwMCxmb3JtYXR0ZXI6cC50aW1lKCIlWSIpfV0sW3tpbnRlcnZhbDpmLlRpbWVJbnRlcnZhbC55ZWFyLHN0ZXA6NTAwLGZvcm1hdHRlcjpwLnRpbWUoIiVZIil9XSxbe2ludGVydmFsOmYuVGltZUludGVydmFsLnllYXIsc3RlcDoxRTMsZm9ybWF0dGVyOnAudGltZSgiJVkiKX1dXTtoLl9MT05HX0RBVEU9bmV3IERhdGUoOTk5OSw4LDI5LDEyLDU5LDk5OTkpO2YuVGltZT1oO3ZhciB1fSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKGwscCl7ZnVuY3Rpb24gbSgpe3RoaXMuY29uc3RydWN0b3I9bH1mb3IodmFyIG4gaW4gcClwLmhhc093blByb3BlcnR5KG4pJiYobFtuXT1wW25dKTtsLnByb3RvdHlwZT1udWxsPT09cD9PYmplY3QuY3JlYXRlKHApOihtLnByb3RvdHlwZT0KcC5wcm90b3R5cGUsbmV3IG0pfSx0PWgoMTIpO2Q9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gcCgpe3ZhciBtPWwuY2FsbCh0aGlzKXx8dGhpczttLl9kZXRhY2hDYWxsYmFjaz1mdW5jdGlvbihuKXtyZXR1cm4gbS5yZW1vdmUobil9O3JldHVybiBtfWsocCxsKTtwLnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24obSl7dmFyIG49dGhpczttPXQuY29lcmNlRXh0ZXJuYWxEMyhtKTtsLnByb3RvdHlwZS5hbmNob3IuY2FsbCh0aGlzLG0pO3RoaXMuX2ZvckVhY2goZnVuY3Rpb24ocSl7cmV0dXJuIHEuYW5jaG9yKG4uZWxlbWVudCgpKX0pO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLl9mb3JFYWNoKGZ1bmN0aW9uKG0pe3JldHVybiBtLnJlbmRlcigpfSk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmhhcz1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJoYXMoKSBpcyBub3QgaW1wbGVtZW50ZWQgb24gQ29tcG9uZW50Q29udGFpbmVyIik7fTtwLnByb3RvdHlwZS5fYWRvcHRBbmRBbmNob3I9CmZ1bmN0aW9uKG0pe20ucGFyZW50KHRoaXMpO20ub25EZXRhY2godGhpcy5fZGV0YWNoQ2FsbGJhY2spO3RoaXMuX2lzQW5jaG9yZWQmJm0uYW5jaG9yKHRoaXMuZWxlbWVudCgpKX07cC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKG0pe3RoaXMuaGFzKG0pJiYobS5vZmZEZXRhY2godGhpcy5fZGV0YWNoQ2FsbGJhY2spLHRoaXMuX3JlbW92ZShtKSxtLmRldGFjaCgpLHRoaXMucmVkcmF3KCkpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKCl7fTtwLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJfZm9yRWFjaCgpIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBDb21wb25lbnRDb250YWluZXIiKTt9O3AucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7dGhpcy5fZm9yRWFjaChmdW5jdGlvbihtKXtyZXR1cm4gbS5kZXN0cm95KCl9KX07cC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPQpmdW5jdGlvbigpe3RoaXMuX2ZvckVhY2goZnVuY3Rpb24obSl7cmV0dXJuIG0uaW52YWxpZGF0ZUNhY2hlKCl9KX07cmV0dXJuIHB9KGgoNCkuQ29tcG9uZW50KTtmLkNvbXBvbmVudENvbnRhaW5lcj1kfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayhBKXtuLmFkZChBKTttLmFkZChBKTt0KCl9ZnVuY3Rpb24gdCgpe3F8fChxPSEwLHgucmVuZGVyKCkpfXZhciBsPWgoMCk7ZD1oKDEwKTt2YXIgcD1oKDM5KSxtPW5ldyBsLlNldCxuPW5ldyBsLlNldCxxPSExLHU9ITE7Zi5Qb2xpY3k9ZC5tYWtlRW51bShbImltbWVkaWF0ZSIsImFuaW1hdGlvbkZyYW1lIiwidGltZW91dCJdKTt2YXIgeD1uZXcgcC5BbmltYXRpb25GcmFtZTtmLnJlbmRlclBvbGljeT1mdW5jdGlvbihBKXtpZihudWxsPT1BKXJldHVybiB4O3N3aXRjaChBKXtjYXNlIGYuUG9saWN5LmltbWVkaWF0ZTp4PW5ldyBwLkltbWVkaWF0ZTticmVhaztjYXNlIGYuUG9saWN5LmFuaW1hdGlvbkZyYW1lOng9bmV3IHAuQW5pbWF0aW9uRnJhbWU7CmJyZWFrO2Nhc2UgZi5Qb2xpY3kudGltZW91dDp4PW5ldyBwLlRpbWVvdXQ7YnJlYWs7ZGVmYXVsdDpsLldpbmRvdy53YXJuKCJVbnJlY29nbml6ZWQgcmVuZGVyUG9saWN5OiAiK0EpfX07Zi5yZWdpc3RlclRvUmVuZGVyPWZ1bmN0aW9uKEEpe3UmJmwuV2luZG93Lndhcm4oIlJlZ2lzdGVyZWQgdG8gcmVuZGVyIHdoaWxlIG90aGVyIGNvbXBvbmVudHMgYXJlIGZsdXNoaW5nOiByZXF1ZXN0IG1heSBiZSBpZ25vcmVkIik7bS5hZGQoQSk7dCgpfTtmLnJlZ2lzdGVyVG9Db21wdXRlTGF5b3V0QW5kUmVuZGVyPWs7Zi5yZWdpc3RlclRvQ29tcHV0ZUxheW91dD1mdW5jdGlvbihBKXtrKEEpfTtmLmZsdXNoPWZ1bmN0aW9uKCl7aWYocSl7bi5mb3JFYWNoKGZ1bmN0aW9uKHkpe3JldHVybiB5LmNvbXB1dGVMYXlvdXQoKX0pO20uZm9yRWFjaChmdW5jdGlvbih5KXtyZXR1cm4geS5yZW5kZXIoKX0pO3U9ITA7dmFyIEE9bmV3IGwuU2V0O20uZm9yRWFjaChmdW5jdGlvbih5KXt0cnl7eS5yZW5kZXJJbW1lZGlhdGVseSgpfWNhdGNoKHcpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgdzsKfSwwKSxBLmFkZCh5KX19KTtuPW5ldyBsLlNldDttPUE7dT1xPSExfX19LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDEpO2YuY2lyY2xlPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBrLnN5bWJvbCgpLnR5cGUoay5zeW1ib2xDaXJjbGUpLnNpemUoTWF0aC5QSSpNYXRoLnBvdyhsLzIsMikpfX07Zi5zcXVhcmU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIGsuc3ltYm9sKCkudHlwZShrLnN5bWJvbFNxdWFyZSkuc2l6ZShNYXRoLnBvdyhsLDIpKX19O2YuY3Jvc3M9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIGsuc3ltYm9sKCkudHlwZShrLnN5bWJvbENyb3NzKS5zaXplKDUvOSpNYXRoLnBvdyhsLDIpKX19O2YuZGlhbW9uZD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihsKXtyZXR1cm4gay5zeW1ib2woKS50eXBlKGsuc3ltYm9sRGlhbW9uZCkuc2l6ZShNYXRoLnRhbihNYXRoLlBJLzYpKk1hdGgucG93KGwsMikvCjIpfX07Zi50cmlhbmdsZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihsKXtyZXR1cm4gay5zeW1ib2woKS50eXBlKGsuc3ltYm9sVHJpYW5nbGUpLnNpemUoTWF0aC5zcXJ0KDMpKk1hdGgucG93KGwvMiwyKSl9fTtmLnN0YXI9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obCl7cmV0dXJuIGsuc3ltYm9sKCkudHlwZShrLnN5bWJvbFN0YXIpLnNpemUoLjg5MDgxMzA5MTUyOTI4NTIqTWF0aC5wb3cobC8yLDIpKX19O3ZhciB0PTMqKDEvTWF0aC5zcXJ0KDEyKS8yKzEpO2Yud3llPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGwpe3JldHVybiBrLnN5bWJvbCgpLnR5cGUoay5zeW1ib2xXeWUpLnNpemUodCpNYXRoLnBvdyhsLzIuNCwyKSl9fX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHUoKXt0aGlzLmNvbnN0cnVjdG9yPW59Zm9yKHZhciB4IGluIHEpcS5oYXNPd25Qcm9wZXJ0eSh4KSYmKG5beF09CnFbeF0pO24ucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX0sdD1oKDI1KSxsPWgoMCkscD1oKDEyKSxtPWgoMzcpO2Q9ZnVuY3Rpb24obil7ZnVuY3Rpb24gcSgpe3ZhciB1PW4uY2FsbCh0aGlzKXx8dGhpczt1Ll9kZXRlY3Rpb25SYWRpdXM9Mzt1Ll9yZXNpemFibGU9ITE7dS5fbW92YWJsZT0hMTt1Ll9oYXNDb3JuZXJzPSEwO3UuYWRkQ2xhc3MoImRyYWctYm94LWxheWVyIik7dS5fZHJhZ0ludGVyYWN0aW9uPW5ldyB0LkRyYWc7dS5fc2V0VXBDYWxsYmFja3MoKTt1Ll9kcmFnSW50ZXJhY3Rpb24uYXR0YWNoVG8odSk7dS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O3UuX2RyYWdDYWxsYmFja3M9bmV3IGwuQ2FsbGJhY2tTZXQ7dS5fZHJhZ0VuZENhbGxiYWNrcz1uZXcgbC5DYWxsYmFja1NldDtyZXR1cm4gdX1rKHEsbik7cS5wcm90b3R5cGUuX3NldFVwQ2FsbGJhY2tzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdShJLApOKXswPT09QiYmSS54PT09Ti54JiZJLnk9PT1OLnkmJnkuYm94VmlzaWJsZSghMSk7eS5fZHJhZ0VuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHkuYm91bmRzKCkpfWZ1bmN0aW9uIHgoSSxOKXtzd2l0Y2goQil7Y2FzZSAwOkYueD1OLng7Ri55PU4ueTticmVhaztjYXNlIDE6dy5ib3R0b20/Ri55PU4ueTp3LnRvcCYmKEMueT1OLnkpO3cucmlnaHQ/Ri54PU4ueDp3LmxlZnQmJihDLng9Ti54KTticmVhaztjYXNlIDI6ST1OLngtRC54O3ZhciBPPU4ueS1ELnk7Qy54Kz1JO0MueSs9TztGLngrPUk7Ri55Kz1PO0Q9Tn15Ll9zZXRCb3VuZHMoe3RvcExlZnQ6Qyxib3R0b21SaWdodDpGfSk7eS5feEJvdW5kc01vZGU9PT1tLlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9eS54U2NhbGUoKSYmeS5fc2V0WEV4dGVudChbeS54U2NhbGUoKS5pbnZlcnQoQy54KSx5LnhTY2FsZSgpLmludmVydChGLngpXSk7eS5feUJvdW5kc01vZGU9PT1tLlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9eS55U2NhbGUoKSYmCnkuX3NldFlFeHRlbnQoW3kueVNjYWxlKCkuaW52ZXJ0KEMueSkseS55U2NhbGUoKS5pbnZlcnQoRi55KV0pO3kucmVuZGVyKCk7eS5fZHJhZ0NhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHkuYm91bmRzKCkpfWZ1bmN0aW9uIEEoSSl7dz15Ll9nZXRSZXNpemluZ0VkZ2VzKEkpO3ZhciBOPXkuYm91bmRzKCk7Tj1OLnRvcExlZnQueDw9SS54JiZJLng8PU4uYm90dG9tUmlnaHQueCYmTi50b3BMZWZ0Lnk8PUkueSYmSS55PD1OLmJvdHRvbVJpZ2h0Lnk7eS5ib3hWaXNpYmxlKCkmJih3LnRvcHx8dy5ib3R0b218fHcubGVmdHx8dy5yaWdodCk/Qj0xOnkuYm94VmlzaWJsZSgpJiZ5Lm1vdmFibGUoKSYmTj9CPTI6KEI9MCx5Ll9zZXRCb3VuZHMoe3RvcExlZnQ6SSxib3R0b21SaWdodDpJfSkseS5feEJvdW5kc01vZGU9PT1tLlByb3BlcnR5TW9kZS5WQUxVRSYmbnVsbCE9eS54U2NhbGUoKSYmeS5fc2V0WEV4dGVudChbeS54U2NhbGUoKS5pbnZlcnQoSS54KSx5LnhTY2FsZSgpLmludmVydChJLngpXSksCnkuX3lCb3VuZHNNb2RlPT09bS5Qcm9wZXJ0eU1vZGUuVkFMVUUmJm51bGwhPXkueVNjYWxlKCkmJnkuX3NldFlFeHRlbnQoW3kueVNjYWxlKCkuaW52ZXJ0KEkueSkseS55U2NhbGUoKS5pbnZlcnQoSS55KV0pLHkucmVuZGVyKCkpO3kuYm94VmlzaWJsZSghMCk7Tj15LmJvdW5kcygpO0M9e3g6Ti50b3BMZWZ0LngseTpOLnRvcExlZnQueX07Rj17eDpOLmJvdHRvbVJpZ2h0LngseTpOLmJvdHRvbVJpZ2h0Lnl9O0Q9STt5Ll9kcmFnU3RhcnRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhOKX12YXIgeT10aGlzLHcsQyxGLEQsQj0wO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdTdGFydChBKTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnKHgpO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdFbmQodSk7dGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uPWZ1bmN0aW9uKCl7eS5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWdTdGFydChBKTt5Ll9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZyh4KTsKeS5fZHJhZ0ludGVyYWN0aW9uLm9mZkRyYWdFbmQodSk7eS5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpfX07cS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdSgpe3JldHVybiB4Ll9ib3guYXBwZW5kKCJsaW5lIikuc3R5bGVzKHtvcGFjaXR5OjAsc3Ryb2tlOiJwaW5rIiwicG9pbnRlci1ldmVudHMiOiJ2aXNpYmxlU3Ryb2tlIn0pfXZhciB4PXRoaXM7bi5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dGhpcy5fZGV0ZWN0aW9uRWRnZVQ9dSgpLmNsYXNzZWQoImRyYWctZWRnZS10YiIsITApO3RoaXMuX2RldGVjdGlvbkVkZ2VCPXUoKS5jbGFzc2VkKCJkcmFnLWVkZ2UtdGIiLCEwKTt0aGlzLl9kZXRlY3Rpb25FZGdlTD11KCkuY2xhc3NlZCgiZHJhZy1lZGdlLWxyIiwhMCk7dGhpcy5fZGV0ZWN0aW9uRWRnZVI9dSgpLmNsYXNzZWQoImRyYWctZWRnZS1sciIsITApO2lmKHRoaXMuX2hhc0Nvcm5lcnMpe3ZhciBBPWZ1bmN0aW9uKCl7cmV0dXJuIHguX2JveC5hcHBlbmQoImNpcmNsZSIpLnN0eWxlcyh7b3BhY2l0eTowLApmaWxsOiJwaW5rIiwicG9pbnRlci1ldmVudHMiOiJ2aXNpYmxlRmlsbCJ9KX07dGhpcy5fZGV0ZWN0aW9uQ29ybmVyVEw9QSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRsIiwhMCk7dGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFI9QSgpLmNsYXNzZWQoImRyYWctY29ybmVyLXRyIiwhMCk7dGhpcy5fZGV0ZWN0aW9uQ29ybmVyQkw9QSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJsIiwhMCk7dGhpcy5fZGV0ZWN0aW9uQ29ybmVyQlI9QSgpLmNsYXNzZWQoImRyYWctY29ybmVyLWJyIiwhMCl9fTtxLnByb3RvdHlwZS5fZ2V0UmVzaXppbmdFZGdlcz1mdW5jdGlvbih1KXt2YXIgeD17dG9wOiExLGJvdHRvbTohMSxsZWZ0OiExLHJpZ2h0OiExfTtpZighdGhpcy5yZXNpemFibGUoKSlyZXR1cm4geDt2YXIgQT10aGlzLmJvdW5kcygpLHk9QS50b3BMZWZ0Lnksdz1BLmJvdHRvbVJpZ2h0LnksQz1BLnRvcExlZnQueDtBPUEuYm90dG9tUmlnaHQueDt2YXIgRj10aGlzLl9kZXRlY3Rpb25SYWRpdXM7CkMtRjw9dS54JiZ1Lng8PUErRiYmKHgudG9wPXktRjw9dS55JiZ1Lnk8PXkrRix4LmJvdHRvbT13LUY8PXUueSYmdS55PD13K0YpO3ktRjw9dS55JiZ1Lnk8PXcrRiYmKHgubGVmdD1DLUY8PXUueCYmdS54PD1DK0YseC5yaWdodD1BLUY8PXUueCYmdS54PD1BK0YpO3JldHVybiB4fTtxLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe24ucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7aWYodGhpcy5ib3hWaXNpYmxlKCkpe3ZhciB1PXRoaXMuYm91bmRzKCkseD11LnRvcExlZnQueSxBPXUuYm90dG9tUmlnaHQueSx5PXUudG9wTGVmdC54O3U9dS5ib3R0b21SaWdodC54O3RoaXMuX2RldGVjdGlvbkVkZ2VULmF0dHJzKHt4MTp5LHkxOngseDI6dSx5Mjp4LCJzdHJva2Utd2lkdGgiOjIqdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSk7dGhpcy5fZGV0ZWN0aW9uRWRnZUIuYXR0cnMoe3gxOnkseTE6QSx4Mjp1LHkyOkEsInN0cm9rZS13aWR0aCI6MioKdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSk7dGhpcy5fZGV0ZWN0aW9uRWRnZUwuYXR0cnMoe3gxOnkseTE6eCx4Mjp5LHkyOkEsInN0cm9rZS13aWR0aCI6Mip0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KTt0aGlzLl9kZXRlY3Rpb25FZGdlUi5hdHRycyh7eDE6dSx5MTp4LHgyOnUseTI6QSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pO3RoaXMuX2hhc0Nvcm5lcnMmJih0aGlzLl9kZXRlY3Rpb25Db3JuZXJUTC5hdHRycyh7Y3g6eSxjeTp4LHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSksdGhpcy5fZGV0ZWN0aW9uQ29ybmVyVFIuYXR0cnMoe2N4OnUsY3k6eCxyOnRoaXMuX2RldGVjdGlvblJhZGl1c30pLHRoaXMuX2RldGVjdGlvbkNvcm5lckJMLmF0dHJzKHtjeDp5LGN5OkEscjp0aGlzLl9kZXRlY3Rpb25SYWRpdXN9KSx0aGlzLl9kZXRlY3Rpb25Db3JuZXJCUi5hdHRycyh7Y3g6dSxjeTpBLHI6dGhpcy5fZGV0ZWN0aW9uUmFkaXVzfSkpfXJldHVybiB0aGlzfTsKcS5wcm90b3R5cGUuZGV0ZWN0aW9uUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RldGVjdGlvblJhZGl1c307cS5wcm90b3R5cGUucmVzaXphYmxlPWZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpcmV0dXJuIHRoaXMuX3Jlc2l6YWJsZTt0aGlzLl9yZXNpemFibGU9dTt0aGlzLl9zZXRSZXNpemFibGVDbGFzc2VzKHUpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5fc2V0UmVzaXphYmxlQ2xhc3Nlcz1mdW5jdGlvbih1KXt1JiZ0aGlzLmVuYWJsZWQoKT8odGhpcy5hZGRDbGFzcygieC1yZXNpemFibGUiKSx0aGlzLmFkZENsYXNzKCJ5LXJlc2l6YWJsZSIpKToodGhpcy5yZW1vdmVDbGFzcygieC1yZXNpemFibGUiKSx0aGlzLnJlbW92ZUNsYXNzKCJ5LXJlc2l6YWJsZSIpKX07cS5wcm90b3R5cGUubW92YWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3ZhYmxlfTtxLnByb3RvdHlwZS5fc2V0TW92YWJsZUNsYXNzPWZ1bmN0aW9uKCl7dGhpcy5tb3ZhYmxlKCkmJnRoaXMuZW5hYmxlZCgpPwp0aGlzLmFkZENsYXNzKCJtb3ZhYmxlIik6dGhpcy5yZW1vdmVDbGFzcygibW92YWJsZSIpfTtxLnByb3RvdHlwZS5vbkRyYWdTdGFydD1mdW5jdGlvbih1KXt0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuYWRkKHUpfTtxLnByb3RvdHlwZS5vZmZEcmFnU3RhcnQ9ZnVuY3Rpb24odSl7dGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZSh1KX07cS5wcm90b3R5cGUub25EcmFnPWZ1bmN0aW9uKHUpe3RoaXMuX2RyYWdDYWxsYmFja3MuYWRkKHUpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5vZmZEcmFnPWZ1bmN0aW9uKHUpe3RoaXMuX2RyYWdDYWxsYmFja3MuZGVsZXRlKHUpfTtxLnByb3RvdHlwZS5vbkRyYWdFbmQ9ZnVuY3Rpb24odSl7dGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5hZGQodSl9O3EucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24odSl7dGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUodSl9O3EucHJvdG90eXBlLmRyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259OwpxLnByb3RvdHlwZS5lbmFibGVkPWZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpcmV0dXJuIHRoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKCk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQodSk7dGhpcy5fc2V0UmVzaXphYmxlQ2xhc3Nlcyh0aGlzLnJlc2l6YWJsZSgpKTt0aGlzLl9zZXRNb3ZhYmxlQ2xhc3MoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciB1PXRoaXM7bi5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO3RoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3JldHVybiB1Ll9kcmFnQ2FsbGJhY2tzLmRlbGV0ZSh4KX0pO3RoaXMuX2RyYWdDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbih4KXtyZXR1cm4gdS5fZHJhZ0NhbGxiYWNrcy5kZWxldGUoeCl9KTt0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24oeCl7cmV0dXJuIHUuX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHgpfSk7CnRoaXMuX2Rpc2Nvbm5lY3RJbnRlcmFjdGlvbigpfTtxLnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLl9yZXNldFN0YXRlKCk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmRldGFjaCgpO24ucHJvdG90eXBlLmRldGFjaC5jYWxsKHRoaXMpO3JldHVybiB0aGlzfTtxLnByb3RvdHlwZS5hbmNob3I9ZnVuY3Rpb24odSl7dT1wLmNvZXJjZUV4dGVybmFsRDModSk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpO24ucHJvdG90eXBlLmFuY2hvci5jYWxsKHRoaXMsdSk7cmV0dXJuIHRoaXN9O3EucHJvdG90eXBlLl9yZXNldFN0YXRlPWZ1bmN0aW9uKCl7dGhpcy5ib3VuZHMoe3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX0pfTtyZXR1cm4gcX0oaCg0MykuU2VsZWN0aW9uQm94TGF5ZXIpO2YuRHJhZ0JveExheWVyPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj0KcH1mb3IodmFyIHEgaW4gbSltLmhhc093blByb3BlcnR5KHEpJiYocFtxXT1tW3FdKTtwLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9LHQ9aCgxOCk7ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKCl7cmV0dXJuIHAuY2FsbCh0aGlzLCJwYXRoIiwibGluZSIpfHx0aGlzfWsobSxwKTttLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbihuKXtuLnN0eWxlKCJmaWxsIiwibm9uZSIpfTttLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXguY2FsbCh0aGlzLDApfTtyZXR1cm4gbX0oaCg5KS5TVkdEcmF3ZXIpO2YuTGluZVNWR0RyYXdlcj1kO3ZhciBsPVsib3BhY2l0eSIsInN0cm9rZS1vcGFjaXR5Iiwic3Ryb2tlLXdpZHRoIiwic3Ryb2tlIl07Zi5tYWtlTGluZUNhbnZhc0RyYXdTdGVwPQpmdW5jdGlvbihwKXtyZXR1cm4gZnVuY3Rpb24obSxuLHEpe3E9dC5yZXNvbHZlQXR0cmlidXRlcyhxLGwsblswXSwwKTt0LnJlbmRlckxpbmUobSxwKCksblswXSxxKX19fSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9cH1mb3IodmFyIHEgaW4gbSltLmhhc093blByb3BlcnR5KHEpJiYocFtxXT1tW3FdKTtwLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9LHQ9aCgxOCk7ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKG4pe3ZvaWQgMD09PW4mJihuPSIiKTt2YXIgcT1wLmNhbGwodGhpcywicmVjdCIsIiIpfHx0aGlzO3EuX3Jvb3RDbGFzc05hbWU9bjtxLl9yb290LmNsYXNzZWQocS5fcm9vdENsYXNzTmFtZSwhMCk7cmV0dXJuIHF9ayhtLHApO3JldHVybiBtfShoKDkpLlNWR0RyYXdlcik7Zi5SZWN0YW5nbGVTVkdEcmF3ZXI9CmQ7dmFyIGw9WyJ4IiwieSIsIndpZHRoIiwiaGVpZ2h0Il07Zi5SZWN0YW5nbGVDYW52YXNEcmF3U3RlcD1mdW5jdGlvbihwLG0sbil7cC5zYXZlKCk7bS5mb3JFYWNoKGZ1bmN0aW9uKHEsdSl7bnVsbCE9cSYmKHE9dC5yZXNvbHZlQXR0cmlidXRlc1N1YnNldFdpdGhTdHlsZXMobixsLHEsdSkscC5iZWdpblBhdGgoKSxwLnJlY3QocS54LHEueSxxLndpZHRoLHEuaGVpZ2h0KSx0LnJlbmRlclBhdGhXaXRoU3R5bGUocCxxKSl9KTtwLnJlc3RvcmUoKX07ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKG4pe3JldHVybiBwLmNhbGwodGhpcyxuLGYuUmVjdGFuZ2xlQ2FudmFzRHJhd1N0ZXApfHx0aGlzfWsobSxwKTtyZXR1cm4gbX0odC5DYW52YXNEcmF3ZXIpO2YuUmVjdGFuZ2xlQ2FudmFzRHJhd2VyPWR9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHApe2wuU0hPV19XQVJOSU5HUyYmY29uc29sZS53YXJuKHApfWZ1bmN0aW9uIHQocCxtKXtmb3IodmFyIG49W10scT0yO3E8YXJndW1lbnRzLmxlbmd0aDtxKyspbltxLQoyXT1hcmd1bWVudHNbcV07cmV0dXJuIDA9PT1tPyhwKG4pLC0xKTp3aW5kb3cuc2V0VGltZW91dChwLG0sbil9dmFyIGw9aCgyMyk7Zi53YXJuPWs7Zi5zZXRUaW1lb3V0PXQ7Zi5kZWJvdW5jZT1mdW5jdGlvbihwLG0sbil7ZnVuY3Rpb24gcSgpe20uYXBwbHkobix4KX12YXIgdT1udWxsLHg9W107cmV0dXJuIGZ1bmN0aW9uKCl7eD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO2NsZWFyVGltZW91dCh1KTt1PXQocSxwKX19O2YuZGVwcmVjYXRlZD1mdW5jdGlvbihwLG0sbil7dm9pZCAwPT09biYmKG49IiIpO2soIk1ldGhvZCAiK3ArIiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHZlcnNpb24gIittKyIuIFBsZWFzZSByZWZlciB0byB0aGUgcmVsZWFzZSBub3Rlcy4gIituKX19LGZ1bmN0aW9uKGQsZil7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoayl7dGhpcy5ydWxlcj1udWxsIT1rLmNyZWF0ZVJ1bGVyP2suY3JlYXRlUnVsZXIoKTprfWgucHJvdG90eXBlLm1lYXN1cmU9CmZ1bmN0aW9uKGspe3ZvaWQgMD09PWsmJihrPWguSEVJR0hUX1RFWFQpO3JldHVybiB0aGlzLnJ1bGVyKGspfTtyZXR1cm4gaH0oKTtkLkhFSUdIVF9URVhUPSJiZHBxbCI7Zi5BYnN0cmFjdE1lYXN1cmVyPWR9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHQpe2Zvcih2YXIgbCBpbiB0KWYuaGFzT3duUHJvcGVydHkobCl8fChmW2xdPXRbbF0pfWsoaCgzMikpO2soaCg3NCkpO2soaCg3NSkpO2soaCg0MSkpO2soaCg0MikpO2soaCg3NikpO2soaCg3NykpO2soaCg3OCkpO2soaCg3OSkpO2soaCg0MykpO2soaCg4MCkpO2soaCg4MSkpO2soaCg4MikpfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9aCgwKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChsLHApe3ZvaWQgMD09PWwmJihsPVtdKTt2b2lkIDA9PT1wJiYocD17fSk7dGhpcy5fdXBkYXRlSWQ9MDt0aGlzLl9kYXRhPWw7dGhpcy5fbWV0YWRhdGE9cDt0aGlzLl9jYWxsYmFja3M9bmV3IGsuQ2FsbGJhY2tTZXR9dC5wcm90b3R5cGUub25VcGRhdGU9CmZ1bmN0aW9uKGwpe3RoaXMuX2NhbGxiYWNrcy5hZGQobCk7cmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLm9mZlVwZGF0ZT1mdW5jdGlvbihsKXt0aGlzLl9jYWxsYmFja3MuZGVsZXRlKGwpO3JldHVybiB0aGlzfTt0LnByb3RvdHlwZS5kYXRhPWZ1bmN0aW9uKGwpe2lmKG51bGw9PWwpcmV0dXJuIHRoaXMuX2RhdGE7dGhpcy5fZGF0YT1sO3RoaXMuX2Rpc3BhdGNoVXBkYXRlKCk7cmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLm1ldGFkYXRhPWZ1bmN0aW9uKGwpe2lmKG51bGw9PWwpcmV0dXJuIHRoaXMuX21ldGFkYXRhO3RoaXMuX21ldGFkYXRhPWw7dGhpcy5fZGlzcGF0Y2hVcGRhdGUoKTtyZXR1cm4gdGhpc307dC5wcm90b3R5cGUudXBkYXRlSWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdXBkYXRlSWR9O3QucHJvdG90eXBlLl9kaXNwYXRjaFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUlkKys7dGhpcy5fY2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcyl9O3JldHVybiB0fSgpOwpmLkRhdGFzZXQ9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoMCksdD1oKDMwKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe31sLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt0LmZsdXNoKCl9O3JldHVybiBsfSgpO2YuSW1tZWRpYXRlPWQ7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXt9bC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7ay5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwodC5mbHVzaCl9O3JldHVybiBsfSgpO2YuQW5pbWF0aW9uRnJhbWU9ZDtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe3RoaXMuX3RpbWVvdXRNc2VjPWsuRE9NLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTfWwucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3NldFRpbWVvdXQodC5mbHVzaCx0aGlzLl90aW1lb3V0TXNlYyl9O3JldHVybiBsfSgpO2YuVGltZW91dD1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsCm0pe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXB9Zm9yKHZhciBxIGluIG0pbS5oYXNPd25Qcm9wZXJ0eShxKSYmKHBbcV09bVtxXSk7cC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfSx0PWgoMTMpLGw9aCgwKTtkPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIG0oKXt2YXIgbj1udWxsIT09cCYmcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7bi5fa2V5UHJlc3NDYWxsYmFja3M9e307bi5fa2V5UmVsZWFzZUNhbGxiYWNrcz17fTtuLl9tb3VzZU1vdmVDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiExfTtuLl9kb3duZWRLZXlzPW5ldyBsLlNldDtuLl9rZXlEb3duQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1KXtyZXR1cm4gbi5faGFuZGxlS2V5RG93bkV2ZW50KHEsdSl9O24uX2tleVVwQ2FsbGJhY2s9ZnVuY3Rpb24ocSl7cmV0dXJuIG4uX2hhbmRsZUtleVVwRXZlbnQocSl9O3JldHVybiBufWsobSxwKTsKbS5wcm90b3R5cGUuX2FuY2hvcj1mdW5jdGlvbihuKXtwLnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxuKTt0aGlzLl9wb3NpdGlvbkRpc3BhdGNoZXI9dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pO3RoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayk7dGhpcy5fa2V5RGlzcGF0Y2hlcj10LktleS5nZXREaXNwYXRjaGVyKCk7dGhpcy5fa2V5RGlzcGF0Y2hlci5vbktleURvd24odGhpcy5fa2V5RG93bkNhbGxiYWNrKTt0aGlzLl9rZXlEaXNwYXRjaGVyLm9uS2V5VXAodGhpcy5fa2V5VXBDYWxsYmFjayl9O20ucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3AucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpO3RoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spO3RoaXMuX3Bvc2l0aW9uRGlzcGF0Y2hlcj1udWxsOwp0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleURvd24odGhpcy5fa2V5RG93bkNhbGxiYWNrKTt0aGlzLl9rZXlEaXNwYXRjaGVyLm9mZktleVVwKHRoaXMuX2tleVVwQ2FsbGJhY2spO3RoaXMuX2tleURpc3BhdGNoZXI9bnVsbH07bS5wcm90b3R5cGUuX2hhbmRsZUtleURvd25FdmVudD1mdW5jdGlvbihuLHEpe3ZhciB1PXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UodGhpcy5fcG9zaXRpb25EaXNwYXRjaGVyLmxhc3RNb3VzZVBvc2l0aW9uKCkpO3RoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHUpJiYhcS5yZXBlYXQmJih0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1tuXSYmdGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbbl0uY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9kb3duZWRLZXlzLmFkZChuKSl9O20ucHJvdG90eXBlLl9oYW5kbGVLZXlVcEV2ZW50PWZ1bmN0aW9uKG4pe3RoaXMuX2Rvd25lZEtleXMuaGFzKG4pJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW25dJiZ0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW25dLmNhbGxDYWxsYmFja3Mobik7CnRoaXMuX2Rvd25lZEtleXMuZGVsZXRlKG4pfTttLnByb3RvdHlwZS5vbktleVByZXNzPWZ1bmN0aW9uKG4scSl7dGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbbl18fCh0aGlzLl9rZXlQcmVzc0NhbGxiYWNrc1tuXT1uZXcgbC5DYWxsYmFja1NldCk7dGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbbl0uYWRkKHEpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5vZmZLZXlQcmVzcz1mdW5jdGlvbihuLHEpe3RoaXMuX2tleVByZXNzQ2FsbGJhY2tzW25dLmRlbGV0ZShxKTswPT09dGhpcy5fa2V5UHJlc3NDYWxsYmFja3Nbbl0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVByZXNzQ2FsbGJhY2tzW25dO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5vbktleVJlbGVhc2U9ZnVuY3Rpb24obixxKXt0aGlzLl9rZXlSZWxlYXNlQ2FsbGJhY2tzW25dfHwodGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1tuXT1uZXcgbC5DYWxsYmFja1NldCk7dGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1tuXS5hZGQocSk7cmV0dXJuIHRoaXN9OwptLnByb3RvdHlwZS5vZmZLZXlSZWxlYXNlPWZ1bmN0aW9uKG4scSl7dGhpcy5fa2V5UmVsZWFzZUNhbGxiYWNrc1tuXS5kZWxldGUocSk7MD09PXRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3Nbbl0uc2l6ZSYmZGVsZXRlIHRoaXMuX2tleVJlbGVhc2VDYWxsYmFja3Nbbl07cmV0dXJuIHRoaXN9O3JldHVybiBtfShoKDE1KS5JbnRlcmFjdGlvbik7Zi5LZXk9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihsLHApe2Z1bmN0aW9uIG0oKXt0aGlzLmNvbnN0cnVjdG9yPWx9Zm9yKHZhciBuIGluIHApcC5oYXNPd25Qcm9wZXJ0eShuKSYmKGxbbl09cFtuXSk7bC5wcm90b3R5cGU9bnVsbD09PXA/T2JqZWN0LmNyZWF0ZShwKToobS5wcm90b3R5cGU9cC5wcm90b3R5cGUsbmV3IG0pfSx0PWgoMCk7ZD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKG0pe3ZvaWQgMD09PW0mJihtPVtdKTt2YXIgbj1sLmNhbGwodGhpcyl8fHRoaXM7bi5fY29tcG9uZW50cz0KW107bi5hZGRDbGFzcygiY29tcG9uZW50LWdyb3VwIik7bS5mb3JFYWNoKGZ1bmN0aW9uKHEpe3JldHVybiBuLmFwcGVuZChxKX0pO3JldHVybiBufWsocCxsKTtwLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbihtKXt0aGlzLmNvbXBvbmVudHMoKS5mb3JFYWNoKG0pfTtwLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24obSl7cmV0dXJuIDA8PXRoaXMuX2NvbXBvbmVudHMuaW5kZXhPZihtKX07cC5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24obSxuKXt2YXIgcT10aGlzLl9jb21wb25lbnRzLm1hcChmdW5jdGlvbih1KXtyZXR1cm4gdS5yZXF1ZXN0ZWRTcGFjZShtLG4pfSk7cmV0dXJue21pbldpZHRoOnQuTWF0aC5tYXgocSxmdW5jdGlvbih1KXtyZXR1cm4gdS5taW5XaWR0aH0sMCksbWluSGVpZ2h0OnQuTWF0aC5tYXgocSxmdW5jdGlvbih1KXtyZXR1cm4gdS5taW5IZWlnaHR9LDApfX07cC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihtLG4scSl7dmFyIHU9CnRoaXM7bC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsbSxuLHEpO3RoaXMuX2ZvckVhY2goZnVuY3Rpb24oeCl7eC5jb21wdXRlTGF5b3V0KHt4OjAseTowfSx1LndpZHRoKCksdS5oZWlnaHQoKSl9KTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuX3NpemVGcm9tT2ZmZXI9ZnVuY3Rpb24obSxuKXtyZXR1cm57d2lkdGg6bSxoZWlnaHQ6bn19O3AucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeShmdW5jdGlvbihtKXtyZXR1cm4gbS5maXhlZFdpZHRoKCl9KX07cC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5ldmVyeShmdW5jdGlvbihtKXtyZXR1cm4gbS5maXhlZEhlaWdodCgpfSl9O3AucHJvdG90eXBlLmNvbXBvbmVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50cy5zbGljZSgpfTtwLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24obSl7bnVsbD09Cm18fHRoaXMuaGFzKG0pfHwobS5kZXRhY2goKSx0aGlzLl9jb21wb25lbnRzLnB1c2gobSksdGhpcy5fYWRvcHRBbmRBbmNob3IobSksdGhpcy5yZWRyYXcoKSk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24obSl7bT10aGlzLl9jb21wb25lbnRzLmluZGV4T2YobSk7MDw9bSYmdGhpcy5fY29tcG9uZW50cy5zcGxpY2UobSwxKX07cmV0dXJuIHB9KGgoMjkpLkNvbXBvbmVudENvbnRhaW5lcik7Zi5Hcm91cD1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKGwscCl7ZnVuY3Rpb24gbSgpe3RoaXMuY29uc3RydWN0b3I9bH1mb3IodmFyIG4gaW4gcClwLmhhc093blByb3BlcnR5KG4pJiYobFtuXT1wW25dKTtsLnByb3RvdHlwZT1udWxsPT09cD9PYmplY3QuY3JlYXRlKHApOihtLnByb3RvdHlwZT1wLnByb3RvdHlwZSxuZXcgbSl9O2goMCk7ZD1oKDQpO3ZhciB0OyhmdW5jdGlvbihsKXtsW2wuVkFMVUU9MF09CiJWQUxVRSI7bFtsLlBJWEVMPTFdPSJQSVhFTCJ9KSh0fHwodD17fSkpO2Q9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gcChtKXt2YXIgbj1sLmNhbGwodGhpcyl8fHRoaXM7bi5fbW9kZT10LlZBTFVFO2lmKG0hPT1wLk9SSUVOVEFUSU9OX1ZFUlRJQ0FMJiZtIT09cC5PUklFTlRBVElPTl9IT1JJWk9OVEFMKXRocm93IEVycm9yKG0rIiBpcyBub3QgYSB2YWxpZCBvcmllbnRhdGlvbiBmb3IgR3VpZGVMaW5lTGF5ZXIiKTtuLl9vcmllbnRhdGlvbj1tO24uX292ZXJmbG93SGlkZGVuPSEwO24uYWRkQ2xhc3MoImd1aWRlLWxpbmUtbGF5ZXIiKTtuLl9pc1ZlcnRpY2FsKCk/bi5hZGRDbGFzcygidmVydGljYWwiKTpuLmFkZENsYXNzKCJob3Jpem9udGFsIik7bi5fc2NhbGVVcGRhdGVDYWxsYmFjaz1mdW5jdGlvbigpe24uX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKTtuLnJlbmRlcigpfTtyZXR1cm4gbn1rKHAsbCk7cC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7bC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7CnRoaXMuX2d1aWRlTGluZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5jbGFzc2VkKCJndWlkZS1saW5lIiwhMCl9O3AucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKG0sbil7cmV0dXJue3dpZHRoOm0saGVpZ2h0Om59fTtwLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmllbnRhdGlvbj09PXAuT1JJRU5UQVRJT05fVkVSVElDQUx9O3AucHJvdG90eXBlLmZpeGVkV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4hMH07cC5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4hMH07cC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihtLG4scSl7bC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsbSxuLHEpO251bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX2lzVmVydGljYWwoKT90aGlzLnNjYWxlKCkucmFuZ2UoWzAsdGhpcy53aWR0aCgpXSk6dGhpcy5zY2FsZSgpLnJhbmdlKFt0aGlzLmhlaWdodCgpLAowXSkpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2wucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dGhpcy5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpO3RoaXMuX2d1aWRlTGluZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKX0pO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZT1mdW5jdGlvbigpe251bGwhPXRoaXMuc2NhbGUoKSYmKHRoaXMuX21vZGU9PT10LlZBTFVFJiZudWxsIT10aGlzLnZhbHVlKCk/dGhpcy5fcGl4ZWxQb3NpdGlvbj0KdGhpcy5zY2FsZSgpLnNjYWxlKHRoaXMudmFsdWUoKSk6dGhpcy5fbW9kZT09PXQuUElYRUwmJm51bGwhPXRoaXMucGl4ZWxQb3NpdGlvbigpJiYodGhpcy5fdmFsdWU9dGhpcy5zY2FsZSgpLmludmVydCh0aGlzLnBpeGVsUG9zaXRpb24oKSkpKX07cC5wcm90b3R5cGUuX3NldFBpeGVsUG9zaXRpb25XaXRob3V0Q2hhbmdpbmdNb2RlPWZ1bmN0aW9uKG0pe3RoaXMuX3BpeGVsUG9zaXRpb249bTtudWxsIT10aGlzLnNjYWxlKCkmJih0aGlzLl92YWx1ZT10aGlzLnNjYWxlKCkuaW52ZXJ0KHRoaXMucGl4ZWxQb3NpdGlvbigpKSk7dGhpcy5yZW5kZXIoKX07cC5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24obSl7aWYobnVsbD09bSlyZXR1cm4gdGhpcy5fc2NhbGU7dmFyIG49dGhpcy5fc2NhbGU7bnVsbCE9biYmbi5vZmZVcGRhdGUodGhpcy5fc2NhbGVVcGRhdGVDYWxsYmFjayk7dGhpcy5fc2NhbGU9bTt0aGlzLl9zY2FsZS5vblVwZGF0ZSh0aGlzLl9zY2FsZVVwZGF0ZUNhbGxiYWNrKTsKdGhpcy5fc3luY1BpeGVsUG9zaXRpb25BbmRWYWx1ZSgpO3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLnZhbHVlPWZ1bmN0aW9uKG0pe2lmKG51bGw9PW0pcmV0dXJuIHRoaXMuX3ZhbHVlO3RoaXMuX3ZhbHVlPW07dGhpcy5fbW9kZT10LlZBTFVFO3RoaXMuX3N5bmNQaXhlbFBvc2l0aW9uQW5kVmFsdWUoKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5waXhlbFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BpeGVsUG9zaXRpb259O3AucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtsLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyk7bnVsbCE9dGhpcy5zY2FsZSgpJiZ0aGlzLnNjYWxlKCkub2ZmVXBkYXRlKHRoaXMuX3NjYWxlVXBkYXRlQ2FsbGJhY2spfTtyZXR1cm4gcH0oZC5Db21wb25lbnQpO2QuT1JJRU5UQVRJT05fVkVSVElDQUw9InZlcnRpY2FsIjtkLk9SSUVOVEFUSU9OX0hPUklaT05UQUw9Imhvcml6b250YWwiOwpmLkd1aWRlTGluZUxheWVyPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX0sdD1oKDApO2Q9aCg0KTt2YXIgbDsoZnVuY3Rpb24ocCl7cFtwLlZBTFVFPTBdPSJWQUxVRSI7cFtwLlBJWEVMPTFdPSJQSVhFTCJ9KShsPWYuUHJvcGVydHlNb2RlfHwoZi5Qcm9wZXJ0eU1vZGU9e30pKTtkPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIG0oKXt2YXIgbj1wLmNhbGwodGhpcyl8fHRoaXM7bi5fYm94VmlzaWJsZT0hMTtuLl9ib3hCb3VuZHM9e3RvcExlZnQ6e3g6MCx5OjB9LGJvdHRvbVJpZ2h0Ont4OjAseTowfX07bi5feEJvdW5kc01vZGU9bC5QSVhFTDtuLl95Qm91bmRzTW9kZT0KbC5QSVhFTDtuLmFkZENsYXNzKCJzZWxlY3Rpb24tYm94LWxheWVyIik7bi5fYWRqdXN0Qm91bmRzQ2FsbGJhY2s9ZnVuY3Rpb24oKXtuLnJlbmRlcigpfTtuLl9vdmVyZmxvd0hpZGRlbj0hMDtuLl94RXh0ZW50PVt2b2lkIDAsdm9pZCAwXTtuLl95RXh0ZW50PVt2b2lkIDAsdm9pZCAwXTtyZXR1cm4gbn1rKG0scCk7bS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dGhpcy5fYm94PXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInNlbGVjdGlvbi1ib3giLCEwKS5yZW1vdmUoKTt0aGlzLl9ib3hBcmVhPXRoaXMuX2JveC5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzZWxlY3Rpb24tYXJlYSIsITApfTttLnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlcj1mdW5jdGlvbihuLHEpe3JldHVybnt3aWR0aDpuLGhlaWdodDpxfX07bS5wcm90b3R5cGUuYm91bmRzPWZ1bmN0aW9uKG4pe2lmKG51bGw9PW4pcmV0dXJuIHRoaXMuX2dldEJvdW5kcygpOwp0aGlzLl9zZXRCb3VuZHMobik7dGhpcy5feUJvdW5kc01vZGU9dGhpcy5feEJvdW5kc01vZGU9bC5QSVhFTDt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKG4pe3RoaXMuX2JveEJvdW5kcz17dG9wTGVmdDp7eDpNYXRoLm1pbihuLnRvcExlZnQueCxuLmJvdHRvbVJpZ2h0LngpLHk6TWF0aC5taW4obi50b3BMZWZ0Lnksbi5ib3R0b21SaWdodC55KX0sYm90dG9tUmlnaHQ6e3g6TWF0aC5tYXgobi50b3BMZWZ0Lngsbi5ib3R0b21SaWdodC54KSx5Ok1hdGgubWF4KG4udG9wTGVmdC55LG4uYm90dG9tUmlnaHQueSl9fX07bS5wcm90b3R5cGUuX2dldEJvdW5kcz1mdW5jdGlvbigpe3JldHVybnt0b3BMZWZ0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09bC5QSVhFTD90aGlzLl9ib3hCb3VuZHMudG9wTGVmdC54Om51bGw9PXRoaXMuX3hTY2FsZT8wOk1hdGgubWluKHRoaXMueFNjYWxlKCkuc2NhbGUodGhpcy54RXh0ZW50KClbMF0pLAp0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWwuUElYRUw/dGhpcy5fYm94Qm91bmRzLnRvcExlZnQueTpudWxsPT10aGlzLl95U2NhbGU/MDpNYXRoLm1pbih0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzBdKSx0aGlzLnlTY2FsZSgpLnNjYWxlKHRoaXMueUV4dGVudCgpWzFdKSl9LGJvdHRvbVJpZ2h0Ont4OnRoaXMuX3hCb3VuZHNNb2RlPT09bC5QSVhFTD90aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueDpudWxsPT10aGlzLl94U2NhbGU/MDpNYXRoLm1heCh0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzBdKSx0aGlzLnhTY2FsZSgpLnNjYWxlKHRoaXMueEV4dGVudCgpWzFdKSkseTp0aGlzLl95Qm91bmRzTW9kZT09PWwuUElYRUw/dGhpcy5fYm94Qm91bmRzLmJvdHRvbVJpZ2h0Lnk6bnVsbD09dGhpcy5feVNjYWxlPzA6TWF0aC5tYXgodGhpcy55U2NhbGUoKS5zY2FsZSh0aGlzLnlFeHRlbnQoKVswXSksCnRoaXMueVNjYWxlKCkuc2NhbGUodGhpcy55RXh0ZW50KClbMV0pKX19fTttLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3AucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7aWYodGhpcy5fYm94VmlzaWJsZSl7dmFyIG49dGhpcy5ib3VuZHMoKSxxPW4udG9wTGVmdC55LHU9bi5ib3R0b21SaWdodC55LHg9bi50b3BMZWZ0Lng7bj1uLmJvdHRvbVJpZ2h0Lng7aWYoISh0Lk1hdGguaXNWYWxpZE51bWJlcihxKSYmdC5NYXRoLmlzVmFsaWROdW1iZXIodSkmJnQuTWF0aC5pc1ZhbGlkTnVtYmVyKHgpJiZ0Lk1hdGguaXNWYWxpZE51bWJlcihuKSkpdGhyb3cgRXJyb3IoImJvdW5kcyBoYXZlIG5vdCBiZWVuIHByb3Blcmx5IHNldCIpO3RoaXMuX2JveEFyZWEuYXR0cnMoe3gseTpxLHdpZHRoOm4teCxoZWlnaHQ6dS1xfSk7dGhpcy5jb250ZW50KCkubm9kZSgpLmFwcGVuZENoaWxkKHRoaXMuX2JveC5ub2RlKCkpfWVsc2UgdGhpcy5fYm94LnJlbW92ZSgpOwpyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuYm94VmlzaWJsZT1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl9ib3hWaXNpYmxlO3RoaXMuX2JveFZpc2libGU9bjt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9O20ucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9O20ucHJvdG90eXBlLnhTY2FsZT1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl94U2NhbGU7bnVsbCE9dGhpcy5feFNjYWxlJiZ0aGlzLl94U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKTt0aGlzLl94U2NhbGU9bjt0aGlzLl94Qm91bmRzTW9kZT1sLlZBTFVFO3RoaXMuX3hTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUueVNjYWxlPWZ1bmN0aW9uKG4pe2lmKG51bGw9PQpuKXJldHVybiB0aGlzLl95U2NhbGU7bnVsbCE9dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKTt0aGlzLl95U2NhbGU9bjt0aGlzLl95Qm91bmRzTW9kZT1sLlZBTFVFO3RoaXMuX3lTY2FsZS5vblVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUueEV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRYRXh0ZW50KCl9O20ucHJvdG90eXBlLl9nZXRYRXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3hCb3VuZHNNb2RlPT09bC5WQUxVRT90aGlzLl94RXh0ZW50Om51bGw9PXRoaXMuX3hTY2FsZT9bdm9pZCAwLHZvaWQgMF06W3RoaXMuX3hTY2FsZS5pbnZlcnQodGhpcy5fYm94Qm91bmRzLnRvcExlZnQueCksdGhpcy5feFNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMuYm90dG9tUmlnaHQueCldfTttLnByb3RvdHlwZS5fc2V0WEV4dGVudD0KZnVuY3Rpb24obil7dGhpcy5feEV4dGVudD1ufTttLnByb3RvdHlwZS55RXh0ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFlFeHRlbnQoKX07bS5wcm90b3R5cGUuX2dldFlFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUJvdW5kc01vZGU9PT1sLlZBTFVFP3RoaXMuX3lFeHRlbnQ6bnVsbD09dGhpcy5feVNjYWxlP1t2b2lkIDAsdm9pZCAwXTpbdGhpcy5feVNjYWxlLmludmVydCh0aGlzLl9ib3hCb3VuZHMudG9wTGVmdC55KSx0aGlzLl95U2NhbGUuaW52ZXJ0KHRoaXMuX2JveEJvdW5kcy5ib3R0b21SaWdodC55KV19O20ucHJvdG90eXBlLl9zZXRZRXh0ZW50PWZ1bmN0aW9uKG4pe3RoaXMuX3lFeHRlbnQ9bn07bS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3AucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTtudWxsIT10aGlzLl94U2NhbGUmJnRoaXMueFNjYWxlKCkub2ZmVXBkYXRlKHRoaXMuX2FkanVzdEJvdW5kc0NhbGxiYWNrKTtudWxsIT10aGlzLl95U2NhbGUmJgp0aGlzLnlTY2FsZSgpLm9mZlVwZGF0ZSh0aGlzLl9hZGp1c3RCb3VuZHNDYWxsYmFjayl9O3JldHVybiBtfShkLkNvbXBvbmVudCk7Zi5TZWxlY3Rpb25Cb3hMYXllcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsbCl7ZnVuY3Rpb24gcCgpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIG0gaW4gbClsLmhhc093blByb3BlcnR5KG0pJiYodFttXT1sW21dKTt0LnByb3RvdHlwZT1udWxsPT09bD9PYmplY3QuY3JlYXRlKGwpOihwLnByb3RvdHlwZT1sLnByb3RvdHlwZSxuZXcgcCl9O2Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbCgpe3JldHVybiB0LmNhbGwodGhpcywicGF0aCIsImFyYyBmaWxsIil8fHRoaXN9ayhsLHQpO2wucHJvdG90eXBlLl9hcHBseURlZmF1bHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKHApe3Auc3R5bGUoInN0cm9rZSIsIm5vbmUiKX07cmV0dXJuIGx9KGgoOSkuU1ZHRHJhd2VyKTtmLkFyY1NWR0RyYXdlcj0KZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGwpe2Z1bmN0aW9uIHAoKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBtIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShtKSYmKHRbbV09bFttXSk7dC5wcm90b3R5cGU9bnVsbD09PWw/T2JqZWN0LmNyZWF0ZShsKToocC5wcm90b3R5cGU9bC5wcm90b3R5cGUsbmV3IHApfTtkPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGwoKXtyZXR1cm4gdC5jYWxsKHRoaXMsInBhdGgiLCJhcmMgb3V0bGluZSIpfHx0aGlzfWsobCx0KTtsLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0QXR0cmlidXRlcz1mdW5jdGlvbihwKXtwLnN0eWxlKCJmaWxsIiwibm9uZSIpfTtyZXR1cm4gbH0oaCg5KS5TVkdEcmF3ZXIpO2YuQXJjT3V0bGluZVNWR0RyYXdlcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9CnB9Zm9yKHZhciBxIGluIG0pbS5oYXNPd25Qcm9wZXJ0eShxKSYmKHBbcV09bVtxXSk7cC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfSx0PWgoMTgpO2Q9ZnVuY3Rpb24ocCl7ZnVuY3Rpb24gbSgpe3JldHVybiBwLmNhbGwodGhpcywicGF0aCIsImFyZWEiKXx8dGhpc31rKG0scCk7bS5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdEF0dHJpYnV0ZXM9ZnVuY3Rpb24obil7bi5zdHlsZSgic3Ryb2tlIiwibm9uZSIpfTttLnByb3RvdHlwZS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4PWZ1bmN0aW9uKCl7cmV0dXJuIHAucHJvdG90eXBlLmdldFZpc3VhbFByaW1pdGl2ZUF0SW5kZXguY2FsbCh0aGlzLDApfTtyZXR1cm4gbX0oaCg5KS5TVkdEcmF3ZXIpO2YuQXJlYVNWR0RyYXdlcj1kO3ZhciBsPVsiZmlsbCIsIm9wYWNpdHkiLCJmaWxsLW9wYWNpdHkiXTtmLm1ha2VBcmVhQ2FudmFzRHJhd1N0ZXA9ZnVuY3Rpb24ocCl7cmV0dXJuIGZ1bmN0aW9uKG0sCm4scSl7cT10LnJlc29sdmVBdHRyaWJ1dGVzKHEsbCxuWzBdLDApO3QucmVuZGVyQXJlYShtLHAoKSxuWzBdLHEpfX19LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxsKXtmdW5jdGlvbiBwKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgbSBpbiBsKWwuaGFzT3duUHJvcGVydHkobSkmJih0W21dPWxbbV0pO3QucHJvdG90eXBlPW51bGw9PT1sP09iamVjdC5jcmVhdGUobCk6KHAucHJvdG90eXBlPWwucHJvdG90eXBlLG5ldyBwKX07ZD1mdW5jdGlvbih0KXtmdW5jdGlvbiBsKCl7cmV0dXJuIHQuY2FsbCh0aGlzLCJsaW5lIiwiIil8fHRoaXN9ayhsLHQpO3JldHVybiBsfShoKDkpLlNWR0RyYXdlcik7Zi5TZWdtZW50U1ZHRHJhd2VyPWR9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKG4scSx1LHgsQSl7cmV0dXJuIDA8PXUrQSYmdS1BPD1uJiYwPD14K0EmJngtQTw9cX1mdW5jdGlvbiB0KG4scSx1KXtpZihudWxsPT1uKXJldHVybiExOwpmb3IodmFyIHg9MDt4PHUubGVuZ3RoO3grKyl7dmFyIEE9dVt4XTtpZihuW0FdIT1xW0FdKXJldHVybiExfXJldHVybiEwfXZhciBsPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHUoKXt0aGlzLmNvbnN0cnVjdG9yPW59Zm9yKHZhciB4IGluIHEpcS5oYXNPd25Qcm9wZXJ0eSh4KSYmKG5beF09cVt4XSk7bi5wcm90b3R5cGU9bnVsbD09PXE/T2JqZWN0LmNyZWF0ZShxKToodS5wcm90b3R5cGU9cS5wcm90b3R5cGUsbmV3IHUpfSxwPWgoODYpLG09aCgxOCk7ZD1mdW5jdGlvbihuKXtmdW5jdGlvbiBxKCl7cmV0dXJuIG4uY2FsbCh0aGlzLCJwYXRoIiwic3ltYm9sIil8fHRoaXN9bChxLG4pO3JldHVybiBxfShoKDkpLlNWR0RyYXdlcik7Zi5TeW1ib2xTVkdEcmF3ZXI9ZDtmLm1ha2VTeW1ib2xDYW52YXNEcmF3U3RlcD1mdW5jdGlvbihuLHEsdSl7dmFyIHg9dGhpcztyZXR1cm4gZnVuY3Rpb24oQSx5LHcpe3ZhciBDPUEuY2FudmFzLEY9Qy5jbGllbnRXaWR0aDsKQz1DLmNsaWVudEhlaWdodDtmb3IodmFyIEQ9bmV3IHAuQ2FudmFzQnVmZmVyKDAsMCksQj1xKCksST11KCksTj1udWxsLE89bnVsbCxIPW51bGwsSz0wO0s8eS5sZW5ndGg7SysrKXt2YXIgTT15W0tdO2lmKG51bGwhPU0pe3ZhciBMPW0ucmVzb2x2ZUF0dHJpYnV0ZXNTdWJzZXRXaXRoU3R5bGVzKHcsWyJ4IiwieSJdLE0sSyksUT1JKE0sSyxuKTtpZihrKEYsQyxMLngsTC55LFEpKXt2YXIgVD10KE4sTCxtLkNvbnRleHRTdHlsZUF0dHJzKTtNPUIoTSxLLHguX2RhdGFzZXQpO1QmJkg9PVEmJk89PU18fChOPW0uZ2V0U3Ryb2tlV2lkdGgoTCksTj1RK04rMSwoTj5ELnNjcmVlbldpZHRofHxOPkQuc2NyZWVuSGVpZ2h0KSYmRC5yZXNpemUoTixOLCEwKSxELmNsZWFyKCksTj1ELmN0eCxOLmJlZ2luUGF0aCgpLE0oUSkuY29udGV4dChOKShudWxsKSxOLmNsb3NlUGF0aCgpLG0ucmVuZGVyUGF0aFdpdGhTdHlsZShOLEwpLE89TSxIPVEsTj1MKTtELmJsaXRDZW50ZXIoQSxMLngsTC55KX19fX19fSwKZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsoRCl7cmV0dXJuIEQgaW5zdGFuY2VvZiB5P0Q6RCBpbnN0YW5jZW9mIERhdGU/cChELnZhbHVlT2YoKSk6RCBpbnN0YW5jZW9mIEEuU2NhbGU/dChEKTpEIGluc3RhbmNlb2YgeC5EYXRhc2V0P2woRCk6dShEKT9uKEQpOkFycmF5LmlzQXJyYXkoRCk/bShEKTpwKEQpfWZ1bmN0aW9uIHQoRCl7RD17ZG9tYWluOkQuZG9tYWluKCkscmFuZ2U6RC5yYW5nZSgpLHVwZGF0ZUlkOkQudXBkYXRlSWQoKSxyZWY6cChEKX07cmV0dXJuIG4oRCl9ZnVuY3Rpb24gbChEKXtEPXtyZWY6cChEKSx1cGRhdGVJZDpELnVwZGF0ZUlkKCl9O3JldHVybiBuKEQpfWZ1bmN0aW9uIHAoRCl7cmV0dXJuIG5ldyBDKEQpfWZ1bmN0aW9uIG0oRCl7cmV0dXJuIG5ldyB3KEQubWFwKGZ1bmN0aW9uKEIpe3JldHVybiBrKEIpfSkpfWZ1bmN0aW9uIG4oRCl7dmFyIEI9e30sSTtmb3IoSSBpbiBEKUQuaGFzT3duUHJvcGVydHkoSSkmJihCW0ldPWsoRFtJXSkpO3JldHVybiBuZXcgRihCKX0KdmFyIHE9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKEQsQil7ZnVuY3Rpb24gSSgpe3RoaXMuY29uc3RydWN0b3I9RH1mb3IodmFyIE4gaW4gQilCLmhhc093blByb3BlcnR5KE4pJiYoRFtOXT1CW05dKTtELnByb3RvdHlwZT1udWxsPT09Qj9PYmplY3QuY3JlYXRlKEIpOihJLnByb3RvdHlwZT1CLnByb3RvdHlwZSxuZXcgSSl9LHU9aCgxMjgpLHg9aCgzOCksQT1oKDE3KTtmLnNpZ249aztmLnNpZ25TY2FsZT10O2Yuc2lnbkRhdGFzZXQ9bDtmLnNpZ25SZWY9cDtmLnNpZ25BcnJheT1tO2Yuc2lnbk9iaj1uO3ZhciB5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRCgpe31ELnByb3RvdHlwZS5pc0RpZmZlcmVudD1mdW5jdGlvbihCKXtyZXR1cm4gQiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/dGhpcy5pc1NpZ25hdHVyZURpZmZlcmVudChCKTohMH07cmV0dXJuIER9KCk7Zi5TaWduYXR1cmU9eTt2YXIgdz1mdW5jdGlvbihEKXtmdW5jdGlvbiBCKEkpe3ZhciBOPUQuY2FsbCh0aGlzKXx8CnRoaXM7Ti5hcnJheT1JO3JldHVybiBOfXEoQixEKTtCLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbihJKXtpZihJLmFycmF5Lmxlbmd0aCE9PXRoaXMuYXJyYXkubGVuZ3RoKXJldHVybiEwO2Zvcih2YXIgTj0wO048dGhpcy5hcnJheS5sZW5ndGg7TisrKWlmKHRoaXMuYXJyYXlbTl0uaXNEaWZmZXJlbnQoSS5hcnJheVtOXSkpcmV0dXJuITA7cmV0dXJuITF9O3JldHVybiBCfSh5KTtmLkFycmF5U2lnbmF0dXJlPXc7dmFyIEM9ZnVuY3Rpb24oRCl7ZnVuY3Rpb24gQihJKXt2YXIgTj1ELmNhbGwodGhpcyl8fHRoaXM7Ti5yZWY9STtyZXR1cm4gTn1xKEIsRCk7Qi5wcm90b3R5cGUuaXNTaWduYXR1cmVEaWZmZXJlbnQ9ZnVuY3Rpb24oSSl7cmV0dXJuIHRoaXMucmVmIT09SS5yZWZ9O3JldHVybiBCfSh5KTtmLlJlZmVyZW5jZVNpZ25hdHVyZT1DO3ZhciBGPWZ1bmN0aW9uKEQpe2Z1bmN0aW9uIEIoSSl7dmFyIE49RC5jYWxsKHRoaXMpfHx0aGlzO04ub2JqPQpJO3JldHVybiBOfXEoQixEKTtCLnByb3RvdHlwZS5pc1NpZ25hdHVyZURpZmZlcmVudD1mdW5jdGlvbihJKXt2YXIgTj1PYmplY3Qua2V5cyh0aGlzLm9iaiksTz1PYmplY3Qua2V5cyhJLm9iaik7aWYoTi5sZW5ndGghPT1PLmxlbmd0aClyZXR1cm4hMDtmb3IoTz0wO088Ti5sZW5ndGg7TysrKXt2YXIgSD1OW09dO2lmKCFJLm9iai5oYXNPd25Qcm9wZXJ0eShIKXx8dGhpcy5vYmpbSF0uaXNEaWZmZXJlbnQoSS5vYmpbSF0pKXJldHVybiEwfXJldHVybiExfTtyZXR1cm4gQn0oeSk7Zi5PYmplY3RTaWduYXR1cmU9Rn0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih5LHcpe2Z1bmN0aW9uIEMoKXt0aGlzLmNvbnN0cnVjdG9yPXl9Zm9yKHZhciBGIGluIHcpdy5oYXNPd25Qcm9wZXJ0eShGKSYmKHlbRl09d1tGXSk7eS5wcm90b3R5cGU9bnVsbD09PXc/T2JqZWN0LmNyZWF0ZSh3KTooQy5wcm90b3R5cGU9dy5wcm90b3R5cGUsbmV3IEMpfSwKdD1oKDEpLGw9aCgzKSxwPWgoMCksbT1oKDE0KSxuPWgoNDYpLHE9aCg2KSx1PWgoMzMpLHg9aCgxOSk7ZD1oKDUzKTt2YXIgQT1oKDIpO2g9ZnVuY3Rpb24oeSl7ZnVuY3Rpb24gdygpe3ZhciBDPXkuY2FsbCh0aGlzKXx8dGhpcztDLmFkZENsYXNzKCJhcmVhLXBsb3QiKTtDLnkwKDApO0MuYXR0cigiZmlsbC1vcGFjaXR5IiwuMjUpO0MuYXR0cigiZmlsbCIsKG5ldyBsLkNvbG9yKS5yYW5nZSgpWzBdKTtDLl9saW5lRHJhd2Vycz1uZXcgcC5NYXA7cmV0dXJuIEN9ayh3LHkpO3cucHJvdG90eXBlLnk9ZnVuY3Rpb24oQyxGKXtpZihudWxsPT1DKXJldHVybiB5LnByb3RvdHlwZS55LmNhbGwodGhpcyk7bnVsbD09Rj95LnByb3RvdHlwZS55LmNhbGwodGhpcyxDKTp5LnByb3RvdHlwZS55LmNhbGwodGhpcyxDLEYpO251bGwhPUYmJihDPXRoaXMueTAoKS5hY2Nlc3NvcixudWxsIT1DJiZ0aGlzLl9iaW5kUHJvcGVydHkody5fWTBfS0VZLEMsRiksdGhpcy5fdXBkYXRlWVNjYWxlKCkpOwpyZXR1cm4gdGhpc307dy5wcm90b3R5cGUueTA9ZnVuY3Rpb24oQyl7aWYobnVsbD09QylyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQody5fWTBfS0VZKTt2YXIgRj10aGlzLnkoKTt0aGlzLl9iaW5kUHJvcGVydHkody5fWTBfS0VZLEMsRiYmRi5zY2FsZSk7dGhpcy5fdXBkYXRlWVNjYWxlKCk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3kucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKTt0aGlzLl91cGRhdGVZU2NhbGUoKX07dy5wcm90b3R5cGUuX2FkZERhdGFzZXQ9ZnVuY3Rpb24oQyl7dmFyIEY9dGhpczt0aGlzLl9saW5lRHJhd2Vycy5zZXQoQyxuZXcgbS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgdS5MaW5lU1ZHRHJhd2VyfSxmdW5jdGlvbihEKXtyZXR1cm4gbmV3IG0uQ2FudmFzRHJhd2VyKEQsdS5tYWtlTGluZUNhbnZhc0RyYXdTdGVwKGZ1bmN0aW9uKCl7dmFyIEI9CkEuUGxvdC5fc2NhbGVkQWNjZXNzb3IoRi54KCkpLEk9QS5QbG90Ll9zY2FsZWRBY2Nlc3NvcihGLnkoKSk7cmV0dXJuIEYuX2QzTGluZUZhY3RvcnkoQyxCLEkpfSkpfSkpO3kucHJvdG90eXBlLl9hZGREYXRhc2V0LmNhbGwodGhpcyxDKTtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldD1mdW5jdGlvbihDKXt5LnByb3RvdHlwZS5fY3JlYXRlTm9kZXNGb3JEYXRhc2V0LmNhbGwodGhpcyxDKTtDPXRoaXMuX2xpbmVEcmF3ZXJzLmdldChDKTsic3ZnIj09PXRoaXMucmVuZGVyZXIoKT9DLnVzZVNWRyh0aGlzLl9yZW5kZXJBcmVhKTpDLnVzZUNhbnZhcyh0aGlzLl9jYW52YXMpO3JldHVybiBDfTt3LnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKEMpe3kucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLEMpO3RoaXMuX2xpbmVEcmF3ZXJzLmdldChDKS5yZW1vdmUoKX07dy5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD0KZnVuY3Rpb24oKXt2YXIgQz10aGlzLEY9dGhpcy5fZ2VuZXJhdGVMaW5lRHJhd1N0ZXBzKCksRD10aGlzLl9nZXREYXRhVG9EcmF3KCk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oQil7dmFyIEk9QS5QbG90LmFwcGx5RHJhd1N0ZXBzKEYsQik7Qy5fbGluZURyYXdlcnMuZ2V0KEIpLmRyYXcoRC5nZXQoQiksSSl9KX07dy5wcm90b3R5cGUuX2dlbmVyYXRlTGluZURyYXdTdGVwcz1mdW5jdGlvbigpe3ZhciBDPVtdO2lmKHRoaXMuX2FuaW1hdGVPbk5leHRSZW5kZXIoKSl7dmFyIEY9dGhpcy5fZ2VuZXJhdGVMaW5lQXR0clRvUHJvamVjdG9yKCk7Ri5kPXRoaXMuX2NvbnN0cnVjdExpbmVQcm9qZWN0b3IoQS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksdGhpcy5fZ2V0UmVzZXRZRnVuY3Rpb24oKSk7Qy5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6RixhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcih4LkFuaW1hdG9yLlJFU0VUKX0pfUMucHVzaCh7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dlbmVyYXRlTGluZUF0dHJUb1Byb2plY3RvcigpLAphbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcih4LkFuaW1hdG9yLk1BSU4pfSk7cmV0dXJuIEN9O3cucHJvdG90eXBlLl9nZW5lcmF0ZUxpbmVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgQz10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtDLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3RvcihBLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxBLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSk7cmV0dXJuIEN9O3cucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oQyl7dmFyIEY9dGhpcztyZXR1cm4gbmV3IHEuUHJveHlEcmF3ZXIoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4uQXJlYVNWR0RyYXdlcn0sZnVuY3Rpb24oRCl7cmV0dXJuIG5ldyBtLkNhbnZhc0RyYXdlcihELG4ubWFrZUFyZWFDYW52YXNEcmF3U3RlcChmdW5jdGlvbigpe3ZhciBCPUEuUGxvdC5fc2NhbGVkQWNjZXNzb3IoRi54KCkpLEk9QS5QbG90Ll9zY2FsZWRBY2Nlc3NvcihGLnkoKSksCk49QS5QbG90Ll9zY2FsZWRBY2Nlc3NvcihGLnkwKCkpO3JldHVybiBGLl9jcmVhdGVBcmVhR2VuZXJhdG9yKEIsSSxOLEYuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoQixJKSxDKX0pKX0pfTt3LnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgQz1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBGPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO0YuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKEEuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLHRoaXMuX2dldFJlc2V0WUZ1bmN0aW9uKCksQS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkwKCkpKTtDLnB1c2goe2F0dHJUb1Byb2plY3RvcjpGLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKHguQW5pbWF0b3IuUkVTRVQpfSl9Qy5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoeC5BbmltYXRvci5NQUlOKX0pOwpyZXR1cm4gQ307dy5wcm90b3R5cGUuX3VwZGF0ZVlTY2FsZT1mdW5jdGlvbigpe3ZhciBDPXRoaXMuZ2V0RXh0ZW50c0ZvclByb3BlcnR5KCJ5MCIpO0M9cC5BcnJheS51bmlxKHAuQXJyYXkuZmxhdHRlbihDKSk7dmFyIEY9MT09PUMubGVuZ3RoP0NbMF06bnVsbDtDPShDPXRoaXMueSgpKSYmQy5zY2FsZTtudWxsIT1DJiYobnVsbCE9dGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXImJihDLnJlbW92ZVBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fY29uc3RhbnRCYXNlbGluZVZhbHVlUHJvdmlkZXIpLHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyPW51bGwpLG51bGwhPUYmJih0aGlzLl9jb25zdGFudEJhc2VsaW5lVmFsdWVQcm92aWRlcj1mdW5jdGlvbigpe3JldHVybltGXX0sQy5hZGRQYWRkaW5nRXhjZXB0aW9uc1Byb3ZpZGVyKHRoaXMuX2NvbnN0YW50QmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSkpfTt3LnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249CmZ1bmN0aW9uKCl7cmV0dXJuIEEuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55MCgpKX07dy5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBDPXkucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKTtDLmQ9dGhpcy5fY29uc3RydWN0QXJlYVByb2plY3RvcihBLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxBLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxBLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueTAoKSkpO3JldHVybiBDfTt3LnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKEMpe3ZhciBGPXRoaXM7dm9pZCAwPT09QyYmKEM9dGhpcy5kYXRhc2V0cygpKTtpZigiY2FudmFzIj09PXRoaXMucmVuZGVyZXIoKSlyZXR1cm4gdC5zZWxlY3RBbGwoKTt2YXIgRD15LnByb3RvdHlwZS5zZWxlY3Rpb25zLmNhbGwodGhpcyxDKS5ub2RlcygpO0MubWFwKGZ1bmN0aW9uKEIpe3JldHVybiBGLl9saW5lRHJhd2Vycy5nZXQoQil9KS5maWx0ZXIoZnVuY3Rpb24oQil7cmV0dXJuIG51bGwhPQpCfSkuZm9yRWFjaChmdW5jdGlvbihCKXtyZXR1cm4gRC5wdXNoLmFwcGx5KEQsQi5nZXRWaXN1YWxQcmltaXRpdmVzKCkpfSk7cmV0dXJuIHQuc2VsZWN0QWxsKEQpfTt3LnByb3RvdHlwZS5fY29uc3RydWN0QXJlYVByb2plY3Rvcj1mdW5jdGlvbihDLEYsRCl7dmFyIEI9dGhpcyxJPXRoaXMuX2NyZWF0ZURlZmluZWRQcm9qZWN0b3IoQS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksQS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSkpO3JldHVybiBmdW5jdGlvbihOLE8sSCl7cmV0dXJuIEIuX2NyZWF0ZUFyZWFHZW5lcmF0b3IoQyxGLEQsSSxIKShOKX19O3cucHJvdG90eXBlLl9jcmVhdGVEZWZpbmVkUHJvamVjdG9yPWZ1bmN0aW9uKEMsRil7cmV0dXJuIGZ1bmN0aW9uKEQsQixJKXt2YXIgTj1DKEQsQixJKTtEPUYoRCxCLEkpO3JldHVybiBwLk1hdGguaXNWYWxpZE51bWJlcihOKSYmcC5NYXRoLmlzVmFsaWROdW1iZXIoRCl9fTt3LnByb3RvdHlwZS5fY3JlYXRlQXJlYUdlbmVyYXRvcj0KZnVuY3Rpb24oQyxGLEQsQixJKXt2YXIgTj10aGlzLl9nZXRDdXJ2ZUZhY3RvcnkoKTtyZXR1cm4gdC5hcmVhKCkueChmdW5jdGlvbihPLEgpe3JldHVybiBDKE8sSCxJKX0pLnkxKGZ1bmN0aW9uKE8sSCl7cmV0dXJuIEYoTyxILEkpfSkueTAoZnVuY3Rpb24oTyxIKXtyZXR1cm4gRChPLEgsSSl9KS5jdXJ2ZShOKS5kZWZpbmVkKGZ1bmN0aW9uKE8sSCl7cmV0dXJuIEIoTyxILEkpfSl9O3JldHVybiB3fShkLkxpbmUpO2guX1kwX0tFWT0ieTAiO2YuQXJlYT1ofSxmdW5jdGlvbihkLGYpeyhmdW5jdGlvbihoKXtoLk1BSU49Im1haW4iO2guUkVTRVQ9InJlc2V0In0pKGYuQW5pbWF0b3J8fChmLkFuaW1hdG9yPXt9KSl9LGZ1bmN0aW9uKGQsZil7dmFyIGg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBrKCl7dmFyIHQ9dGhpczt0aGlzLnRyYW5zbGF0ZT10aGlzLnNjYWxlPTA7dGhpcy5jYWNoZWREb21haW49W251bGwsbnVsbF07dGhpcy5sYXN0U2VlbkRvbWFpbj1bbnVsbCxudWxsXTt0aGlzLnVwZGF0ZURvbWFpbj0KZnVuY3Rpb24obCl7dC5sYXN0U2VlbkRvbWFpbj1sLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCk7dmFyIHA9bC5zY2FsZVRyYW5zZm9ybWF0aW9uKHQuY2FjaGVkRG9tYWluWzFdKS1sLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLG09bC5zY2FsZVRyYW5zZm9ybWF0aW9uKHQubGFzdFNlZW5Eb21haW5bMV0pLWwuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKTt0LnNjYWxlPXAvbXx8MTt0LnRyYW5zbGF0ZT1sLnNjYWxlVHJhbnNmb3JtYXRpb24odC5jYWNoZWREb21haW5bMF0pLWwuc2NhbGVUcmFuc2Zvcm1hdGlvbih0Lmxhc3RTZWVuRG9tYWluWzBdKSp0LnNjYWxlfHwwfX1rLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuc2NhbGU9MTt0aGlzLnRyYW5zbGF0ZT0wO3RoaXMuY2FjaGVkRG9tYWluPXRoaXMubGFzdFNlZW5Eb21haW59O2sucHJvdG90eXBlLnNldERvbWFpbj1mdW5jdGlvbih0KXt0aGlzLmNhY2hlZERvbWFpbj0KdC5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbigpfTtyZXR1cm4ga30oKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gayh0LGwpe3ZhciBwPXRoaXM7dGhpcy5yZW5kZXJDYWxsYmFjaz10O3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjaz1sO3RoaXMuZG9tYWluVHJhbnNmb3JtWD1uZXcgaDt0aGlzLmRvbWFpblRyYW5zZm9ybVk9bmV3IGg7dGhpcy5yZW5kZXJEZWZlcnJlZD1mdW5jdGlvbigpe3AuYXBwbHlUcmFuc2Zvcm0oKTtjbGVhclRpbWVvdXQocC50aW1lb3V0VG9rZW4pO3AudGltZW91dFRva2VuPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtwLnJlbmRlckNhbGxiYWNrKCl9LGsuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZKX19ay5wcm90b3R5cGUuc2V0RG9tYWlucz1mdW5jdGlvbih0LGwpe3QmJnRoaXMuZG9tYWluVHJhbnNmb3JtWC5zZXREb21haW4odCk7bCYmdGhpcy5kb21haW5UcmFuc2Zvcm1ZLnNldERvbWFpbihsKTt0aGlzLnJlbmRlckRlZmVycmVkKCl9O2sucHJvdG90eXBlLnVwZGF0ZURvbWFpbnM9CmZ1bmN0aW9uKHQsbCl7dCYmdGhpcy5kb21haW5UcmFuc2Zvcm1YLnVwZGF0ZURvbWFpbih0KTtsJiZ0aGlzLmRvbWFpblRyYW5zZm9ybVkudXBkYXRlRG9tYWluKGwpO3RoaXMucmVuZGVyRGVmZXJyZWQoKX07ay5wcm90b3R5cGUucmVzZXRUcmFuc2Zvcm1zPWZ1bmN0aW9uKCl7dGhpcy5kb21haW5UcmFuc2Zvcm1YLnJlc2V0KCk7dGhpcy5kb21haW5UcmFuc2Zvcm1ZLnJlc2V0KCk7dGhpcy5hcHBseVRyYW5zZm9ybSgpfTtrLnByb3RvdHlwZS5hcHBseVRyYW5zZm9ybT1mdW5jdGlvbigpe3RoaXMuYXBwbHlUcmFuc2Zvcm1DYWxsYmFjayh0aGlzLmRvbWFpblRyYW5zZm9ybVgudHJhbnNsYXRlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS50cmFuc2xhdGUsdGhpcy5kb21haW5UcmFuc2Zvcm1YLnNjYWxlLHRoaXMuZG9tYWluVHJhbnNmb3JtWS5zY2FsZSl9O3JldHVybiBrfSgpO2QuREVGRVJSRURfUkVOREVSSU5HX0RFTEFZPTIwMDtmLkRlZmVycmVkUmVuZGVyZXI9ZH0sZnVuY3Rpb24oZCwKZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oQyxGKXtmdW5jdGlvbiBEKCl7dGhpcy5jb25zdHJ1Y3Rvcj1DfWZvcih2YXIgQiBpbiBGKUYuaGFzT3duUHJvcGVydHkoQikmJihDW0JdPUZbQl0pO0MucHJvdG90eXBlPW51bGw9PT1GP09iamVjdC5jcmVhdGUoRik6KEQucHJvdG90eXBlPUYucHJvdG90eXBlLG5ldyBEKX0sdD1oKDEpLGw9aCg3KSxwPWgoMTQpLG09aCg2KSxuPWgoMzMpLHE9aCgzKSx1PWgoMTEpLHg9aCgwKTtkPWgoMTApO3ZhciBBPWgoMTkpLHk9aCgyKTtoPWgoMTYpO3ZhciB3PXtsaW5lYXI6dC5jdXJ2ZUxpbmVhcixsaW5lYXJDbG9zZWQ6dC5jdXJ2ZUxpbmVhckNsb3NlZCxzdGVwOnQuY3VydmVTdGVwLHN0ZXBCZWZvcmU6dC5jdXJ2ZVN0ZXBCZWZvcmUsc3RlcEFmdGVyOnQuY3VydmVTdGVwQWZ0ZXIsYmFzaXM6dC5jdXJ2ZUJhc2lzLGJhc2lzT3Blbjp0LmN1cnZlQmFzaXNPcGVuLGJhc2lzQ2xvc2VkOnQuY3VydmVCYXNpc0Nsb3NlZCwKYnVuZGxlOnQuY3VydmVCdW5kbGUsY2FyZGluYWw6dC5jdXJ2ZUNhcmRpbmFsLGNhcmRpbmFsT3Blbjp0LmN1cnZlQ2FyZGluYWxPcGVuLGNhcmRpbmFsQ2xvc2VkOnQuY3VydmVDYXJkaW5hbENsb3NlZCxtb25vdG9uZTp0LmN1cnZlTW9ub3RvbmVYfTtmLkN1cnZlTmFtZT1kLm1ha2VFbnVtKCJsaW5lYXIgbGluZWFyQ2xvc2VkIHN0ZXAgc3RlcEJlZm9yZSBzdGVwQWZ0ZXIgYmFzaXMgYmFzaXNPcGVuIGJhc2lzQ2xvc2VkIGJ1bmRsZSBjYXJkaW5hbCBjYXJkaW5hbE9wZW4gY2FyZGluYWxDbG9zZWQgbW9ub3RvbmUiLnNwbGl0KCIgIikpO2g9ZnVuY3Rpb24oQyl7ZnVuY3Rpb24gRigpe3ZhciBEPUMuY2FsbCh0aGlzKXx8dGhpcztELl9jdXJ2ZT0ibGluZWFyIjtELl9hdXRvcmFuZ2VTbW9vdGg9ITE7RC5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQ9ITA7RC5fY29sbGFwc2VEZW5zZVZlcnRpY2FsTGluZXNFbmFibGVkPSExO0QuX2Rvd25zYW1wbGluZ0VuYWJsZWQ9ITE7RC5hZGRDbGFzcygibGluZS1wbG90Iik7CnZhciBCPW5ldyBsLkVhc2luZztCLnN0ZXBEdXJhdGlvbih5LlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO0IuZWFzaW5nTW9kZSgiZXhwSW5PdXQiKTtCLm1heFRvdGFsRHVyYXRpb24oeS5QbG90Ll9BTklNQVRJT05fTUFYX0RVUkFUSU9OKTtELmFuaW1hdG9yKEEuQW5pbWF0b3IuTUFJTixCKTtELmF0dHIoInN0cm9rZSIsKG5ldyBxLkNvbG9yKS5yYW5nZSgpWzBdKTtELmF0dHIoInN0cm9rZS13aWR0aCIsIjJweCIpO3JldHVybiBEfWsoRixDKTtGLnByb3RvdHlwZS54PWZ1bmN0aW9uKEQsQixJKXtpZihudWxsPT1EKXJldHVybiBDLnByb3RvdHlwZS54LmNhbGwodGhpcyk7Qy5wcm90b3R5cGUueC5jYWxsKHRoaXMsRCxCLEkpO3RoaXMuX3NldFNjYWxlU25hcHBpbmcoKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUueT1mdW5jdGlvbihELEIsSSl7aWYobnVsbD09RClyZXR1cm4gQy5wcm90b3R5cGUueS5jYWxsKHRoaXMpO0MucHJvdG90eXBlLnkuY2FsbCh0aGlzLEQsQiwKSSk7dGhpcy5fc2V0U2NhbGVTbmFwcGluZygpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlPWZ1bmN0aW9uKEQpe2lmKG51bGw9PUQpcmV0dXJuIEMucHJvdG90eXBlLmF1dG9yYW5nZU1vZGUuY2FsbCh0aGlzKTtDLnByb3RvdHlwZS5hdXRvcmFuZ2VNb2RlLmNhbGwodGhpcyxEKTt0aGlzLl9zZXRTY2FsZVNuYXBwaW5nKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmF1dG9yYW5nZVNtb290aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdXRvcmFuZ2VTbW9vdGh9O0YucHJvdG90eXBlLl9zZXRTY2FsZVNuYXBwaW5nPWZ1bmN0aW9uKCl7IngiPT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkmJnRoaXMueCgpJiZ0aGlzLngoKS5zY2FsZSYmdGhpcy54KCkuc2NhbGUgaW5zdGFuY2VvZiB1LlF1YW50aXRhdGl2ZVNjYWxlJiZ0aGlzLngoKS5zY2FsZS5zbmFwcGluZ0RvbWFpbkVuYWJsZWQoIXRoaXMuYXV0b3JhbmdlU21vb3RoKCkpOyJ5Ij09PXRoaXMuYXV0b3JhbmdlTW9kZSgpJiYKdGhpcy55KCkmJnRoaXMueSgpLnNjYWxlJiZ0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIHUuUXVhbnRpdGF0aXZlU2NhbGUmJnRoaXMueSgpLnNjYWxlLnNuYXBwaW5nRG9tYWluRW5hYmxlZCghdGhpcy5hdXRvcmFuZ2VTbW9vdGgoKSl9O0YucHJvdG90eXBlLmN1cnZlPWZ1bmN0aW9uKEQpe2lmKG51bGw9PUQpcmV0dXJuIHRoaXMuX2N1cnZlO3RoaXMuX2N1cnZlPUQ7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kb3duc2FtcGxpbmdFbmFibGVkfTtGLnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbihEKXtpZihudWxsPT1EKXJldHVybiB0aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZDt0aGlzLl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1EO3RoaXMucmVuZGVyKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmNvbGxhcHNlRGVuc2VMaW5lc0VuYWJsZWQ9CmZ1bmN0aW9uKEQpe2lmKG51bGw9PUQpcmV0dXJuIHRoaXMuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZDt0aGlzLl9jb2xsYXBzZURlbnNlVmVydGljYWxMaW5lc0VuYWJsZWQ9RDt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKEQpe3ZhciBCPXRoaXM7cmV0dXJuIG5ldyBtLlByb3h5RHJhd2VyKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuLkxpbmVTVkdEcmF3ZXJ9LGZ1bmN0aW9uKEkpe3JldHVybiBuZXcgcC5DYW52YXNEcmF3ZXIoSSxuLm1ha2VMaW5lQ2FudmFzRHJhd1N0ZXAoZnVuY3Rpb24oKXtyZXR1cm4gQi5fZDNMaW5lRmFjdG9yeShEKX0pKX0pfTtGLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oRCl7dmFyIEI9Qy5wcm90b3R5cGUuZ2V0RXh0ZW50c0ZvclByb3BlcnR5LmNhbGwodGhpcyxEKTtpZighdGhpcy5fYXV0b3JhbmdlU21vb3RofHx0aGlzLmF1dG9yYW5nZU1vZGUoKSE9PQpEfHwieCIhPT10aGlzLmF1dG9yYW5nZU1vZGUoKSYmInkiIT09dGhpcy5hdXRvcmFuZ2VNb2RlKCkpcmV0dXJuIEI7RD10aGlzLl9nZXRFZGdlSW50ZXJzZWN0aW9uUG9pbnRzKCk7dmFyIEk9InkiPT09dGhpcy5hdXRvcmFuZ2VNb2RlKCk/RC5sZWZ0LmNvbmNhdChELnJpZ2h0KS5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIE4ueX0pOkQudG9wLmNvbmNhdChELmJvdHRvbSkubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLnh9KTtyZXR1cm4gQi5tYXAoZnVuY3Rpb24oTil7cmV0dXJuIHQuZXh0ZW50KHQubWVyZ2UoW04sSV0pKX0pfTtGLnByb3RvdHlwZS5fZ2V0RWRnZUludGVyc2VjdGlvblBvaW50cz1mdW5jdGlvbigpe3ZhciBEPXRoaXM7aWYoISh0aGlzLnkoKS5zY2FsZSBpbnN0YW5jZW9mIHUuUXVhbnRpdGF0aXZlU2NhbGUmJnRoaXMueCgpLnNjYWxlIGluc3RhbmNlb2YgdS5RdWFudGl0YXRpdmVTY2FsZSkpcmV0dXJue2xlZnQ6W10scmlnaHQ6W10sdG9wOltdLGJvdHRvbTpbXX07CnZhciBCPXRoaXMueSgpLnNjYWxlLEk9dGhpcy54KCkuc2NhbGUsTj17bGVmdDpbXSxyaWdodDpbXSx0b3A6W10sYm90dG9tOltdfSxPPUkuc2NhbGUoSS5kb21haW4oKVswXSksSD1JLnNjYWxlKEkuZG9tYWluKClbMV0pLEs9Qi5zY2FsZShCLmRvbWFpbigpWzBdKSxNPUIuc2NhbGUoQi5kb21haW4oKVsxXSk7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oTCl7Zm9yKHZhciBRPUwuZGF0YSgpLFQsWCxhYSxsYSxaLGJhLGVhLGNhPTE7Y2E8US5sZW5ndGg7Y2ErKylsYT1iYXx8SS5zY2FsZShELngoKS5hY2Nlc3NvcihRW2NhLTFdLGNhLTEsTCkpLFo9ZWF8fEIuc2NhbGUoRC55KCkuYWNjZXNzb3IoUVtjYS0xXSxjYS0xLEwpKSxiYT1JLnNjYWxlKEQueCgpLmFjY2Vzc29yKFFbY2FdLGNhLEwpKSxlYT1CLnNjYWxlKEQueSgpLmFjY2Vzc29yKFFbY2FdLGNhLEwpKSxsYTxPPT09Tzw9YmEmJihUPU8tbGEsWD1iYS1sYSxhYT1lYS1aLFQ9VCphYS9YLE4ubGVmdC5wdXNoKHt4Ok8sCnk6Qi5pbnZlcnQoWitUKX0pKSxsYTxIPT09SDw9YmEmJihUPUgtbGEsWD1iYS1sYSxhYT1lYS1aLFQ9VCphYS9YLE4ucmlnaHQucHVzaCh7eDpILHk6Qi5pbnZlcnQoWitUKX0pKSxaPE09PT1NPD1lYSYmKFg9YmEtbGEsVD1NLVosYWE9ZWEtWixUPVQqWC9hYSxOLnRvcC5wdXNoKHt4OkkuaW52ZXJ0KGxhK1QpLHk6TX0pKSxaPEs9PT1LPD1lYSYmKFg9YmEtbGEsVD1LLVosYWE9ZWEtWixUPVQqWC9hYSxOLmJvdHRvbS5wdXNoKHt4OkkuaW52ZXJ0KGxhK1QpLHk6S30pKX0pO3JldHVybiBOfTtGLnByb3RvdHlwZS5fZ2V0UmVzZXRZRnVuY3Rpb249ZnVuY3Rpb24oKXt2YXIgRD10aGlzLnkoKS5zY2FsZS5kb21haW4oKSxCPU1hdGgubWF4KERbMF0sRFsxXSk7RD1NYXRoLm1pbihEWzBdLERbMV0pO0I9MD5CJiZCfHwwPEQmJkR8fDA7dmFyIEk9dGhpcy55KCkuc2NhbGUuc2NhbGUoQik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIEl9fTtGLnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9CmZ1bmN0aW9uKCl7dmFyIEQ9W107aWYodGhpcy5fYW5pbWF0ZU9uTmV4dFJlbmRlcigpKXt2YXIgQj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtCLmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3Rvcih5LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx0aGlzLl9nZXRSZXNldFlGdW5jdGlvbigpKTtELnB1c2goe2F0dHJUb1Byb2plY3RvcjpCLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKEEuQW5pbWF0b3IuUkVTRVQpfSl9RC5wdXNoKHthdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoQS5BbmltYXRvci5NQUlOKX0pO3JldHVybiBEfTtGLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgRD1DLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3IuY2FsbCh0aGlzKTtPYmplY3Qua2V5cyhEKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe2lmKCJkIiE9PQpCKXt2YXIgST1EW0JdO0RbQl09ZnVuY3Rpb24oTixPLEgpe3JldHVybiAwPE4ubGVuZ3RoP0koTlswXSxPLEgpOm51bGx9fX0pO3JldHVybiBEfTtGLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKEQpe0Q9dGhpcy5lbnRpdHlOZWFyZXN0QnlYVGhlblkoRCk7cmV0dXJuIG51bGwhPUQ/W0RdOltdfTtGLnByb3RvdHlwZS5lbnRpdHlOZWFyZXN0QnlYVGhlblk9ZnVuY3Rpb24oRCl7dmFyIEI9SW5maW5pdHksST1JbmZpbml0eSxOLE89dGhpcy5ib3VuZHMoKTt0aGlzLmVudGl0aWVzKCkuZm9yRWFjaChmdW5jdGlvbihIKXtpZih4Lk1hdGgud2l0aGluKEgucG9zaXRpb24sTykpe3ZhciBLPU1hdGguYWJzKEQueC1ILnBvc2l0aW9uLngpLE09TWF0aC5hYnMoRC55LUgucG9zaXRpb24ueSk7aWYoSzxCfHxLPT09QiYmTTxJKU49SCxCPUssST1NfX0pO3JldHVybiBOfTtGLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIEQ9Qy5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpOwpELmQ9dGhpcy5fY29uc3RydWN0TGluZVByb2plY3Rvcih5LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSx5LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSk7cmV0dXJuIER9O0YucHJvdG90eXBlLl9jb25zdHJ1Y3RMaW5lUHJvamVjdG9yPWZ1bmN0aW9uKEQsQil7dmFyIEk9dGhpcztyZXR1cm4gZnVuY3Rpb24oTixPLEgpe3JldHVybiBJLl9kM0xpbmVGYWN0b3J5KEgsRCxCKShOKX19O0YucHJvdG90eXBlLl9kM0xpbmVGYWN0b3J5PWZ1bmN0aW9uKEQsQixJKXtmdW5jdGlvbiBOKE8sSCxLKXt2YXIgTT1CKE8sSCxLKTtPPUkoTyxILEspO3JldHVybiB4Lk1hdGguaXNWYWxpZE51bWJlcihNKSYmeC5NYXRoLmlzVmFsaWROdW1iZXIoTyl9dm9pZCAwPT09QiYmKEI9eS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSkpO3ZvaWQgMD09PUkmJihJPXkuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpKTtyZXR1cm4gdC5saW5lKCkueChmdW5jdGlvbihPLEgpe3JldHVybiBCKE8sCkgsRCl9KS55KGZ1bmN0aW9uKE8sSCl7cmV0dXJuIEkoTyxILEQpfSkuY3VydmUodGhpcy5fZ2V0Q3VydmVGYWN0b3J5KCkpLmRlZmluZWQoZnVuY3Rpb24oTyxIKXtyZXR1cm4gTihPLEgsRCl9KX07Ri5wcm90b3R5cGUuX2dldEN1cnZlRmFjdG9yeT1mdW5jdGlvbigpe3ZhciBEPXRoaXMuY3VydmUoKTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBEPyhEPXdbRF0sbnVsbD09RD93LmxpbmVhcjpEKTpEfTtGLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciBEPXRoaXMsQj1uZXcgeC5NYXA7dGhpcy5kYXRhc2V0cygpLmZvckVhY2goZnVuY3Rpb24oSSl7dmFyIE49SS5kYXRhKCk7aWYoRC5fY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWR8fEQuX2Rvd25zYW1wbGluZ0VuYWJsZWQpe3ZhciBPPU4ubWFwKGZ1bmN0aW9uKEgsSyl7cmV0dXJuIEt9KTtELl9jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZCYmKE89RC5fZmlsdGVyQ3JvcHBlZFJlbmRlcmluZyhJLE8pKTtELl9kb3duc2FtcGxpbmdFbmFibGVkJiYKKE89RC5fZmlsdGVyRG93bnNhbXBsaW5nKEksTykpO0QuX2NvbGxhcHNlRGVuc2VWZXJ0aWNhbExpbmVzRW5hYmxlZCYmKE89RC5fZmlsdGVyRGVuc2VMaW5lcyhJLE8pKTtCLnNldChJLFtPLm1hcChmdW5jdGlvbihIKXtyZXR1cm4gTltIXX0pXSl9ZWxzZSBCLnNldChJLFtOXSl9KTtyZXR1cm4gQn07Ri5wcm90b3R5cGUuX2ZpbHRlckNyb3BwZWRSZW5kZXJpbmc9ZnVuY3Rpb24oRCxCKXtmdW5jdGlvbiBJKGFhLGxhKXtyZXR1cm4geC5NYXRoLmluUmFuZ2UoYWEsMCxOLndpZHRoKCkpJiZ4Lk1hdGguaW5SYW5nZShsYSwwLE4uaGVpZ2h0KCkpfWZvcih2YXIgTj10aGlzLE89eS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksSD15LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxLPUQuZGF0YSgpLE09W10sTD0wO0w8Qi5sZW5ndGg7TCsrKXt2YXIgUT1PKEtbQltMXV0sQltMXSxEKSxUPUgoS1tCW0xdXSxCW0xdLEQpO1E9SShRLFQpO2lmKCFRJiZudWxsIT1CW0wtCjFdJiZudWxsIT1LW0JbTC0xXV0pe1Q9TyhLW0JbTC0xXV0sQltMLTFdLEQpO3ZhciBYPUgoS1tCW0wtMV1dLEJbTC0xXSxEKTtRPVF8fEkoVCxYKX1RfHxudWxsPT1CW0wrMV18fG51bGw9PUtbQltMKzFdXXx8KFQ9TyhLW0JbTCsxXV0sQltMKzFdLEQpLFg9SChLW0JbTCsxXV0sQltMKzFdLEQpLFE9UXx8SShULFgpKTtRJiZNLnB1c2goQltMXSl9cmV0dXJuIE19O0YucHJvdG90eXBlLl9maWx0ZXJEb3duc2FtcGxpbmc9ZnVuY3Rpb24oRCxCKXtmdW5jdGlvbiBJKGVhLGNhKXt2YXIga2E9TyhOW0JbZWFdXSxCW2VhXSxEKSxZPUgoTltCW2VhXV0sQltlYV0sRCksRWE9TyhOW0JbZWErMV1dLEJbZWErMV0sRCk7ZWE9SChOW0JbZWErMV1dLEJbZWErMV0sRCk7cmV0dXJuIEluZmluaXR5PT09Y2E/TWF0aC5mbG9vcihrYSk9PT1NYXRoLmZsb29yKEVhKTpNYXRoLmZsb29yKGVhKT09PU1hdGguZmxvb3IoWSsoRWEta2EpKmNhKX1pZigwPT09Qi5sZW5ndGgpcmV0dXJuW107Zm9yKHZhciBOPQpELmRhdGEoKSxPPXkuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLEg9eS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksSz1bQlswXV0sTT0wO008Qi5sZW5ndGgtMTspe3ZhciBMPUJbTV0sUT1PKE5bQltNXV0sQltNXSxEKSxUPUgoTltCW01dXSxCW01dLEQpLFg9TyhOW0JbTSsxXV0sQltNKzFdLEQpLGFhPUgoTltCW00rMV1dLEJbTSsxXSxEKTthYT1NYXRoLmZsb29yKFEpPT09TWF0aC5mbG9vcihYKT9JbmZpbml0eTooYWEtVCkvKFgtUSk7WD1CW01dO1Q9SW5maW5pdHk9PT1hYT9UOlE7UT1YO2Zvcih2YXIgbGE9VCxaPSEwO008Qi5sZW5ndGgtMSYmKFp8fEkoTSxhYSkpOyl7TSsrO1o9ITE7dmFyIGJhPUluZmluaXR5PT09YWE/SChOW0JbTV1dLEJbTV0sRCk6TyhOW0JbTV1dLEJbTV0sRCk7YmE+bGEmJihsYT1iYSxRPUJbTV0pO2JhPFQmJihUPWJhLFg9QltNXSl9YWE9QltNXTtYIT09TCYmSy5wdXNoKFgpO1EhPT1YJiZRIT09TCYmSy5wdXNoKFEpO2FhIT09CkwmJmFhIT09WCYmYWEhPT1RJiZLLnB1c2goYWEpfXJldHVybiBLfTtGLnByb3RvdHlwZS5fZmlsdGVyRGVuc2VMaW5lcz1mdW5jdGlvbihELEIpe2lmKDA9PT1CLmxlbmd0aClyZXR1cm5bXTt2YXIgST1ELmRhdGEoKSxOPXkuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLE89eS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7cmV0dXJuIHRoaXMuX2J1Y2tldEJ5WChELEIsZnVuY3Rpb24oSCl7cmV0dXJuIE4oSVtIXSxILEQpfSxmdW5jdGlvbihIKXtyZXR1cm4gTyhJW0hdLEgsRCl9KX07Ri5wcm90b3R5cGUuX2J1Y2tldEJ5WD1mdW5jdGlvbihELEIsSSxOKXt2YXIgTz1bXTtEPUQuZGF0YSgpO2Zvcih2YXIgSD1udWxsLEs9MDtLPD1CLmxlbmd0aDsrK0spe3ZhciBNPUJbS107aWYobnVsbCE9RFtNXSl7dmFyIEw9TWF0aC5mbG9vcihJKE0pKSxRPU4oTSk7bnVsbD09SD9IPW5ldyB4LkJ1Y2tldChNLEwsUSk6SC5pc0luQnVja2V0KEwpP0guYWRkVG9CdWNrZXQoUSwKTSk6KE8ucHVzaC5hcHBseShPLEguZ2V0VW5pcXVlSW5kaWNlcygpKSxIPW5ldyB4LkJ1Y2tldChNLEwsUSkpfX1udWxsIT1IJiZPLnB1c2guYXBwbHkoTyxILmdldFVuaXF1ZUluZGljZXMoKSk7cmV0dXJuIE99O3JldHVybiBGfShoLlhZUGxvdCk7Zi5MaW5lPWh9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obixxKXtmdW5jdGlvbiB1KCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufWZvcih2YXIgeCBpbiBxKXEuaGFzT3duUHJvcGVydHkoeCkmJihuW3hdPXFbeF0pO24ucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX0sdD1oKDEpLGw9aCgyNikscD1oKDApLG09WzAsMV07ZD1mdW5jdGlvbihuKXtmdW5jdGlvbiBxKCl7dmFyIHU9bi5jYWxsKHRoaXMpfHx0aGlzO3UuX3JhbmdlPVswLDFdO3UuX2QzU2NhbGU9dC5zY2FsZUJhbmQoKTt1Ll9kM1NjYWxlLnJhbmdlKG0pOwp1Ll9kM1RyYW5zZm9ybWF0aW9uU2NhbGU9dC5zY2FsZUxpbmVhcigpO3UuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4obSk7dS5faW5uZXJQYWRkaW5nPXEuX2NvbnZlcnRUb1Bsb3R0YWJsZUlubmVyUGFkZGluZygpO3UuX291dGVyUGFkZGluZz1xLl9jb252ZXJ0VG9QbG90dGFibGVPdXRlclBhZGRpbmcoKTtyZXR1cm4gdX1rKHEsbik7cS5wcm90b3R5cGUuY2xvbmVXaXRob3V0UHJvdmlkZXJzPWZ1bmN0aW9uKCl7dmFyIHU9KG5ldyBxKS5kb21haW4odGhpcy5kb21haW4oKSkucmFuZ2UodGhpcy5yYW5nZSgpKS5pbm5lclBhZGRpbmcodGhpcy5pbm5lclBhZGRpbmcoKSkub3V0ZXJQYWRkaW5nKHRoaXMub3V0ZXJQYWRkaW5nKCkpO3UuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbigpKTtyZXR1cm4gdX07cS5wcm90b3R5cGUuZXh0ZW50T2ZWYWx1ZXM9ZnVuY3Rpb24odSl7cmV0dXJuIHAuQXJyYXkudW5pcSh1KX07CnEucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcC5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfTtxLnByb3RvdHlwZS5kb21haW49ZnVuY3Rpb24odSl7cmV0dXJuIG4ucHJvdG90eXBlLmRvbWFpbi5jYWxsKHRoaXMsdSl9O3EucHJvdG90eXBlLmludmVydFJhbmdlPWZ1bmN0aW9uKCl7dmFyIHUseD10aGlzO3ZvaWQgMD09PXUmJih1PXRoaXMucmFuZ2UoKSk7dmFyIEE9dGhpcy5fZDNTY2FsZS5iYW5kd2lkdGgoKSx5PXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih1WzBdKSx3PXRoaXMuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbih1WzFdKTt1PXRoaXMuX2QzU2NhbGUuZG9tYWluKCk7dmFyIEM9dS5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIHguX2QzU2NhbGUoRikrQS8yfSk7eT10LmJpc2VjdChDLHkpO3c9dC5iaXNlY3QoQyx3KTtyZXR1cm4gdS5zbGljZSh5LHcpfTtxLnByb3RvdHlwZS5yYW5nZT1mdW5jdGlvbih1KXtyZXR1cm4gbi5wcm90b3R5cGUucmFuZ2UuY2FsbCh0aGlzLAp1KX07cS5fY29udmVydFRvUGxvdHRhYmxlSW5uZXJQYWRkaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIDEvLjctMX07cS5fY29udmVydFRvUGxvdHRhYmxlT3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKCl7cmV0dXJuLjUvLjd9O3EucHJvdG90eXBlLl9zZXRCYW5kcz1mdW5jdGlvbigpe3ZhciB1PTEtMS8oMSt0aGlzLmlubmVyUGFkZGluZygpKSx4PXRoaXMub3V0ZXJQYWRkaW5nKCkvKDErdGhpcy5pbm5lclBhZGRpbmcoKSk7dGhpcy5fZDNTY2FsZS5wYWRkaW5nSW5uZXIodSk7dGhpcy5fZDNTY2FsZS5wYWRkaW5nT3V0ZXIoeCl9O3EucHJvdG90eXBlLnJhbmdlQmFuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXNjYWxlQmFuZCh0aGlzLl9kM1NjYWxlLmJhbmR3aWR0aCgpKX07cS5wcm90b3R5cGUuc3RlcFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Jlc2NhbGVCYW5kKHRoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkqKDErdGhpcy5pbm5lclBhZGRpbmcoKSkpfTtxLnByb3RvdHlwZS50aWNrcz0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21haW4oKX07cS5wcm90b3R5cGUuaW5uZXJQYWRkaW5nPWZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpcmV0dXJuIHRoaXMuX2lubmVyUGFkZGluZzt0aGlzLl9pbm5lclBhZGRpbmc9dTt0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSk7dGhpcy5fZGlzcGF0Y2hVcGRhdGUoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUub3V0ZXJQYWRkaW5nPWZ1bmN0aW9uKHUpe2lmKG51bGw9PXUpcmV0dXJuIHRoaXMuX291dGVyUGFkZGluZzt0aGlzLl9vdXRlclBhZGRpbmc9dTt0aGlzLnJhbmdlKHRoaXMucmFuZ2UoKSk7dGhpcy5fZGlzcGF0Y2hVcGRhdGUoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24odSl7dT10aGlzLl9kM1NjYWxlKHUpK3RoaXMuX2QzU2NhbGUuYmFuZHdpZHRoKCkvMjtyZXR1cm4gdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlKHUpfTtxLnByb3RvdHlwZS56b29tPWZ1bmN0aW9uKHUseCl7dmFyIEE9dGhpczsKdGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UoKS5tYXAoZnVuY3Rpb24oeSl7cmV0dXJuIEEuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQobC56b29tT3V0KHksdSx4KSl9KSk7dGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX07cS5wcm90b3R5cGUucGFuPWZ1bmN0aW9uKHUpe3ZhciB4PXRoaXM7dGhpcy5fZDNUcmFuc2Zvcm1hdGlvblNjYWxlLmRvbWFpbih0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUucmFuZ2UoKS5tYXAoZnVuY3Rpb24oQSl7cmV0dXJuIHguX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQoQSt1KX0pKTt0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfTtxLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHUpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUodSl9O3EucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24odSl7cmV0dXJuIHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5pbnZlcnQodSl9OwpxLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiBtfTtxLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUuZG9tYWluKCl9O3EucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHUpe3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5kb21haW4odSk7dGhpcy5fZGlzcGF0Y2hVcGRhdGUoKX07cS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX07cS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbih1KXtpZihudWxsPT11KXJldHVybiB0aGlzLl9kM1NjYWxlLmRvbWFpbigpO3RoaXMuX2QzU2NhbGUuZG9tYWluKHUpO3RoaXMuX3NldEJhbmRzKCk7cmV0dXJuIHRoaXN9O3EucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yYW5nZX07CnEucHJvdG90eXBlLl9zZXRSYW5nZT1mdW5jdGlvbih1KXt0aGlzLl9yYW5nZT11O3RoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZS5yYW5nZSh1KTt0aGlzLl9zZXRCYW5kcygpfTtxLnByb3RvdHlwZS5fcmVzY2FsZUJhbmQ9ZnVuY3Rpb24odSl7cmV0dXJuIE1hdGguYWJzKHRoaXMuX2QzVHJhbnNmb3JtYXRpb25TY2FsZSh1KS10aGlzLl9kM1RyYW5zZm9ybWF0aW9uU2NhbGUoMCkpfTtyZXR1cm4gcX0oaCgxNykuU2NhbGUpO2YuQ2F0ZWdvcnk9ZH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodyl7dHJ5e3ZhciBDPXcubm9kZSgpLmdldEJCb3goKX1jYXRjaChGKXtDPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fXJldHVybiBDfWZ1bmN0aW9uIHQodyl7aWYoIm51bWJlciI9PT10eXBlb2YgdylyZXR1cm57bWluOncsbWF4Ond9O2lmKHcgaW5zdGFuY2VvZiBPYmplY3QmJiJtaW4iaW4gdyYmIm1heCJpbiB3KXJldHVybiB3O3Rocm93IEVycm9yKCJpbnB1dCAnIit3KyInIGNhbid0IGJlIHBhcnNlZCBhcyBhbiBSYW5nZSIpOwp9ZnVuY3Rpb24gbCh3LEMpe3c9dy5nZXRQcm9wZXJ0eVZhbHVlKEMpO3JldHVybiBwYXJzZUZsb2F0KHcpfHwwfWZ1bmN0aW9uIHAodyl7aWYobnVsbD09d3x8Im5vbmUiPT09dylyZXR1cm4gbnVsbDt3PXcubWF0Y2goQSk7aWYobnVsbD09d3x8Mj53Lmxlbmd0aClyZXR1cm4gbnVsbDt3PXdbMV0uc3BsaXQoeSkubWFwKGZ1bmN0aW9uKEMpe3JldHVybiBwYXJzZUZsb2F0KEMpfSk7cmV0dXJuIDYhPXcubGVuZ3RoP251bGw6d312YXIgbT1oKDEpLG49TWF0aDtmLmNvbnRhaW5zPWZ1bmN0aW9uKHcsQyl7Zm9yKDtudWxsIT1DJiZDIT09dzspQz1DLnBhcmVudE5vZGU7cmV0dXJuIEM9PT13fTtmLmVsZW1lbnRCQm94PWs7Zi5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24odyl7cmV0dXJuIHcgaW5zdGFuY2VvZiBTVkdFbGVtZW50P2sobS5zZWxlY3QodykpOncgaW5zdGFuY2VvZiBIVE1MRWxlbWVudD8odz13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHt4OncubGVmdCx5OncudG9wLHdpZHRoOncud2lkdGgsCmhlaWdodDp3LmhlaWdodH0pOnt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9fTtmLlNDUkVFTl9SRUZSRVNIX1JBVEVfTUlMTElTRUNPTkRTPTFFMy82MDtmLnJlcXVlc3RBbmltYXRpb25GcmFtZVBvbHlmaWxsPWZ1bmN0aW9uKHcpe251bGwhPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWU/d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh3KTpzZXRUaW1lb3V0KHcsZi5TQ1JFRU5fUkVGUkVTSF9SQVRFX01JTExJU0VDT05EUyl9O2YuZWxlbWVudFdpZHRoPWZ1bmN0aW9uKHcpe3c9dyBpbnN0YW5jZW9mIG0uc2VsZWN0aW9uP3cubm9kZSgpOnc7dz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3KTtyZXR1cm4gbCh3LCJ3aWR0aCIpK2wodywicGFkZGluZy1sZWZ0IikrbCh3LCJwYWRkaW5nLXJpZ2h0IikrbCh3LCJib3JkZXItbGVmdC13aWR0aCIpK2wodywiYm9yZGVyLXJpZ2h0LXdpZHRoIil9O2YuZWxlbWVudEhlaWdodD1mdW5jdGlvbih3KXt3PXcgaW5zdGFuY2VvZiBtLnNlbGVjdGlvbj8Kdy5ub2RlKCk6dzt3PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHcpO3JldHVybiBsKHcsImhlaWdodCIpK2wodywicGFkZGluZy10b3AiKStsKHcsInBhZGRpbmctYm90dG9tIikrbCh3LCJib3JkZXItdG9wLXdpZHRoIikrbCh3LCJib3JkZXItYm90dG9tLXdpZHRoIil9O3ZhciBxPS90cmFuc2xhdGVccypcKFxzKigoPzpbLStdP1swLTldKlwuP1swLTldKykpKD86KD86KD86XHMrLD9ccyopfCg/OixccyopKSgoPzpbLStdP1swLTldKlwuP1swLTldKykpKT9ccypcKS8sdT0vcm90YXRlXHMqXChccyooKD86Wy0rXT9bMC05XSpcLj9bMC05XSspKVxzKlwpLyx4PS9zY2FsZVxzKlwoXHMqKCg/OlstK10/WzAtOV0qXC4/WzAtOV0rKSkoPzooPzooPzpccyssP1xzKil8KD86LFxzKikpKCg/OlstK10/WzAtOV0qXC4/WzAtOV0rKSkpP1xzKlwpLztmLmdldFRyYW5zbGF0ZVZhbHVlcz1mdW5jdGlvbih3KXt3PXEuZXhlYyh3LmF0dHIoInRyYW5zZm9ybSIpKTtpZihudWxsIT13KXt2YXIgQz0Kd1syXTtyZXR1cm5bK3dbMV0sKyh2b2lkIDA9PT1DPzA6QyldfXJldHVyblswLDBdfTtmLmdldFJvdGF0ZT1mdW5jdGlvbih3KXt3PXUuZXhlYyh3LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9dz8rd1sxXTowfTtmLmdldFNjYWxlVmFsdWVzPWZ1bmN0aW9uKHcpe3ZhciBDPXguZXhlYyh3LmF0dHIoInRyYW5zZm9ybSIpKTtyZXR1cm4gbnVsbCE9Qz8odz1DWzFdLEM9Q1syXSxbK3csbnVsbD09Qz8rdzorQ10pOlswLDBdfTtmLmNsaWVudFJlY3RzT3ZlcmxhcD1mdW5jdGlvbih3LEMpe3JldHVybiBuLmZsb29yKHcucmlnaHQpPD1uLmNlaWwoQy5sZWZ0KXx8bi5jZWlsKHcubGVmdCk+PW4uZmxvb3IoQy5yaWdodCl8fG4uZmxvb3Iody5ib3R0b20pPD1uLmNlaWwoQy50b3ApfHxuLmNlaWwody50b3ApPj1uLmZsb29yKEMuYm90dG9tKT8hMTohMH07Zi5leHBhbmRSZWN0PWZ1bmN0aW9uKHcsQyl7cmV0dXJue2xlZnQ6dy5sZWZ0LUMsdG9wOncudG9wLUMscmlnaHQ6dy5yaWdodCsKQyxib3R0b206dy5ib3R0b20rQyx3aWR0aDp3LndpZHRoKzIqQyxoZWlnaHQ6dy5oZWlnaHQrMipDfX07Zi5jbGllbnRSZWN0SW5zaWRlPWZ1bmN0aW9uKHcsQyl7cmV0dXJuIG4uZmxvb3IoQy5sZWZ0KTw9bi5jZWlsKHcubGVmdCkmJm4uZmxvb3IoQy50b3ApPD1uLmNlaWwody50b3ApJiZuLmZsb29yKHcucmlnaHQpPD1uLmNlaWwoQy5yaWdodCkmJm4uZmxvb3Iody5ib3R0b20pPD1uLmNlaWwoQy5ib3R0b20pfTtmLmludGVyc2VjdHNCQm94PWZ1bmN0aW9uKHcsQyxGLEQpe3ZvaWQgMD09PUQmJihEPS41KTt3PXQodyk7Qz10KEMpO3JldHVybiBGLngrRi53aWR0aD49dy5taW4tRCYmRi54PD13Lm1heCtEJiZGLnkrRi5oZWlnaHQ+PUMubWluLUQmJkYueTw9Qy5tYXgrRH07Zi5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycz1mdW5jdGlvbih3KXtmb3IodmFyIEM9W107dyYmdyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50OylDLnB1c2godyksdz13LnBhcmVudEVsZW1lbnQ7cmV0dXJuIEN9OwpmLmdldEVsZW1lbnRUcmFuc2Zvcm09ZnVuY3Rpb24odyl7dz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh3LG51bGwpO3c9dy5nZXRQcm9wZXJ0eVZhbHVlKCItd2Via2l0LXRyYW5zZm9ybSIpfHx3LmdldFByb3BlcnR5VmFsdWUoIi1tb3otdHJhbnNmb3JtIil8fHcuZ2V0UHJvcGVydHlWYWx1ZSgiLW1zLXRyYW5zZm9ybSIpfHx3LmdldFByb3BlcnR5VmFsdWUoIi1vLXRyYW5zZm9ybSIpfHx3LmdldFByb3BlcnR5VmFsdWUoInRyYW5zZm9ybSIpO3JldHVybiBwKHcpfTt2YXIgQT0vXm1hdHJpeFwoKFteKV0rKVwpJC8seT0vWywgXSsvfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh1LHgpe3JldHVyblt1WzBdKnhbMF0rdVsyXSp4WzFdLHVbMV0qeFswXSt1WzNdKnhbMV0sdVswXSp4WzJdK3VbMl0qeFszXSx1WzFdKnhbMl0rdVszXSp4WzNdLHVbMF0qeFs0XSt1WzJdKnhbNV0rdVs0XSx1WzFdKnhbNF0rdVszXSp4WzVdK3VbNV1dfWZ1bmN0aW9uIHQodSx4KXtyZXR1cm5bdVswXSwKdVsxXSx1WzJdLHVbM10sdVswXSp4WzBdK3VbMl0qeFsxXSt1WzRdLHVbMV0qeFswXSt1WzNdKnhbMV0rdVs1XV19ZnVuY3Rpb24gbCh1KXt2YXIgeD11WzBdKnVbM10tdVsxXSp1WzJdO2lmKDA9PT14KXRocm93IEVycm9yKCJzaW5ndWxhciBtYXRyaXgiKTt4PTEveDtyZXR1cm5beCp1WzNdLHgqLXVbMV0seCotdVsyXSx4KnVbMF0seCooLXVbM10qdVs0XSt1WzJdKnVbNV0pLHgqKHVbMV0qdVs0XSstdVswXSp1WzVdKV19dmFyIHA9aCgxKSxtPWgoNTUpLG49TWF0aCxxPVsxLDAsMCwxLDAsMF07Zi5pblJhbmdlPWZ1bmN0aW9uKHUseCxBKXtyZXR1cm4gbi5taW4oeCxBKTw9dSYmdTw9bi5tYXgoeCxBKX07Zi5jbGFtcD1mdW5jdGlvbih1LHgsQSl7cmV0dXJuIG4ubWluKG4ubWF4KHgsdSksQSl9O2YubWF4PWZ1bmN0aW9uKHUseCxBKXt2YXIgeT0iZnVuY3Rpb24iPT09dHlwZW9mIHg/eDpudWxsO3g9bnVsbD09eT94OkE7dT1udWxsPT15P3AubWF4KHUpOnAubWF4KHUseSk7cmV0dXJuIHZvaWQgMCE9PQp1P3U6eH07Zi5taW49ZnVuY3Rpb24odSx4LEEpe3ZhciB5PSJmdW5jdGlvbiI9PT10eXBlb2YgeD94Om51bGw7eD1udWxsPT15P3g6QTt1PW51bGw9PXk/cC5taW4odSk6cC5taW4odSx5KTtyZXR1cm4gdm9pZCAwIT09dT91Onh9O2YuaXNOYU49ZnVuY3Rpb24odSl7cmV0dXJuIHUhPT11fTtmLmlzVmFsaWROdW1iZXI9ZnVuY3Rpb24odSl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdSYmMT51LXV9O2YucmFuZ2U9ZnVuY3Rpb24odSx4LEEpe3ZvaWQgMD09PUEmJihBPTEpO2lmKDA9PT1BKXRocm93IEVycm9yKCJzdGVwIGNhbm5vdCBiZSAwIik7eD1uLm1heChuLmNlaWwoKHgtdSkvQSksMCk7Zm9yKHZhciB5PVtdLHc9MDt3PHg7Kyt3KXlbd109dStBKnc7cmV0dXJuIHl9O2YuZGlzdGFuY2VTcXVhcmVkPWZ1bmN0aW9uKHUseCl7cmV0dXJuIG4ucG93KHgueS11LnksMikrbi5wb3coeC54LXUueCwyKX07Zi5kZWdyZWVzVG9SYWRpYW5zPWZ1bmN0aW9uKHUpe3JldHVybiB1LzM2MCoKbi5QSSoyfTtmLndpdGhpbj1mdW5jdGlvbih1LHgpe3JldHVybiB4LnRvcExlZnQueDw9dS54JiZ4LmJvdHRvbVJpZ2h0Lng+PXUueCYmeC50b3BMZWZ0Lnk8PXUueSYmeC5ib3R0b21SaWdodC55Pj11Lnl9O2YuYm91bmRzSW50ZXJzZWN0cz1mdW5jdGlvbih1LHgsQSx5LHcsQyl7cmV0dXJuIHU8PTArdyYmMDw9dStBJiZ4PD0wK0MmJjA8PXgreX07Zi5nZXRDdW11bGF0aXZlVHJhbnNmb3JtPWZ1bmN0aW9uKHUpe3U9bS5nZXRIdG1sRWxlbWVudEFuY2VzdG9ycyh1KTtmb3IodmFyIHg9cSxBPW51bGwseT0wO3k8dS5sZW5ndGg7eSsrKXt2YXIgdz11W3ldLEM9bS5nZXRFbGVtZW50VHJhbnNmb3JtKHcpO2lmKG51bGwhPUMpe3ZhciBGPXcuY2xpZW50V2lkdGgvMixEPXcuY2xpZW50SGVpZ2h0LzI7eD10KHgsW0YsRF0pO3g9ayh4LGwoQykpO3g9dCh4LFstRiwtRF0pfUM9dy5zY3JvbGxMZWZ0O0Y9dy5zY3JvbGxUb3A7aWYobnVsbD09PUF8fHc9PT1BKUMtPXcub2Zmc2V0TGVmdCt3LmNsaWVudExlZnQsCkYtPXcub2Zmc2V0VG9wK3cuY2xpZW50VG9wLEE9dy5vZmZzZXRQYXJlbnQ7eD10KHgsW0MsRl0pfXJldHVybiB4fTtmLm11bHRpcGx5TWF0cml4PWs7Zi5wcmVtdWx0aXBseVRyYW5zbGF0ZT1mdW5jdGlvbih1LHgpe3JldHVyblt4WzBdLHhbMV0seFsyXSx4WzNdLHhbNF0rdVswXSx4WzVdK3VbMV1dfTtmLm11bHRpcGx5VHJhbnNsYXRlPXQ7Zi5pbnZlcnRNYXRyaXg9bDtmLmFwcGx5VHJhbnNmb3JtPWZ1bmN0aW9uKHUseCl7cmV0dXJue3g6dVswXSp4LngrdVsyXSp4LnkrdVs0XSx5OnVbMV0qeC54K3VbM10qeC55K3VbNV19fX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPW5ldyAoaCgxMTQpLlNwbGl0U3RyYXRlZ3lMaW5lYXIpO2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBwKG0sbil7dm9pZCAwPT09bSYmKG09NSk7dm9pZCAwPT09biYmKG49ayk7dGhpcy5tYXhOb2RlQ2hpbGRyZW49bTt0aGlzLnNwbGl0U3RyYXRlZ3k9bjt0aGlzLnJvb3Q9bmV3IHQoITApO3RoaXMuc2l6ZT0wfXAucHJvdG90eXBlLmdldFJvb3Q9CmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucm9vdH07cC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnJvb3Q9bmV3IHQoITApO3RoaXMuc2l6ZT0wfTtwLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24obSxuKXtmb3IodmFyIHE9dGhpcy5yb290OyFxLmxlYWY7KXE9cS5zdWJ0cmVlKG0pO209dC52YWx1ZU5vZGUobSxuKTtxLmluc2VydChtKTtmb3IodGhpcy5zaXplKz0xO3Eub3ZlcmZsb3codGhpcy5tYXhOb2RlQ2hpbGRyZW4pOylxPXEuc3BsaXQodGhpcy5zcGxpdFN0cmF0ZWd5KSxudWxsPT1xLnBhcmVudCYmKHRoaXMucm9vdD1xKX07cC5wcm90b3R5cGUubG9jYXRlPWZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLnF1ZXJ5KGZ1bmN0aW9uKG4pe3JldHVybiBuLmNvbnRhaW5zKG0pfSl9O3AucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5xdWVyeShmdW5jdGlvbihuKXtyZXR1cm4gbC5pc0JvdW5kc092ZXJsYXBCb3VuZHMobixtKX0pfTtwLnByb3RvdHlwZS5pbnRlcnNlY3RYPQpmdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5xdWVyeShmdW5jdGlvbihuKXtyZXR1cm4gbC5pc0JvdW5kc092ZXJsYXBYKG4sbSl9KX07cC5wcm90b3R5cGUuaW50ZXJzZWN0WT1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5xdWVyeShmdW5jdGlvbihuKXtyZXR1cm4gbC5pc0JvdW5kc092ZXJsYXBZKG4sbSl9KX07cC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24obSl7dmFyIG49W107aWYobnVsbCE9dGhpcy5yb290LmJvdW5kcyYmIW0odGhpcy5yb290LmJvdW5kcykpcmV0dXJuIG47Zm9yKHZhciBxPVt0aGlzLnJvb3RdOzA8cS5sZW5ndGg7KWZvcih2YXIgdT1xLnNoaWZ0KCkseD0wO3g8dS5lbnRyaWVzLmxlbmd0aDt4Kyspe3ZhciBBPXUuZW50cmllc1t4XTttKEEuYm91bmRzKSYmKHUubGVhZj9uLnB1c2goQS52YWx1ZSk6cS5wdXNoKEEpKX1yZXR1cm4gbn07cmV0dXJuIHB9KCk7Zi5SVHJlZT1kO3ZhciB0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcChtKXt0aGlzLmxlYWY9bTt0aGlzLmJvdW5kcz0KbnVsbDt0aGlzLmVudHJpZXM9W107dGhpcy52YWx1ZT10aGlzLnBhcmVudD1udWxsfXAudmFsdWVOb2RlPWZ1bmN0aW9uKG0sbil7dmFyIHE9bmV3IHAoITApO3EuYm91bmRzPW07cS52YWx1ZT1uO3JldHVybiBxfTtwLnByb3RvdHlwZS5vdmVyZmxvdz1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5lbnRyaWVzLmxlbmd0aD5tfTtwLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24obSl7dGhpcy5lbnRyaWVzLnB1c2gobSk7bS5wYXJlbnQ9dGhpcztmb3IodmFyIG49dGhpcztudWxsIT1uOyluLmJvdW5kcz1sLnVuaW9uQWxsKFtuLmJvdW5kcyxtLmJvdW5kc10pLG49bi5wYXJlbnR9O3AucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihtKXttPXRoaXMuZW50cmllcy5pbmRleE9mKG0pO2lmKDA8PW0pZm9yKHRoaXMuZW50cmllcy5zcGxpY2UobSwxKSxtPXRoaXM7bnVsbCE9bTspbS5ib3VuZHM9bC51bmlvbkFsbChtLmVudHJpZXMubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBuLmJvdW5kc30pKSwKbT1tLnBhcmVudDtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuc3VidHJlZT1mdW5jdGlvbihtKXtmb3IodmFyIG49bnVsbCxxPTA7cTx0aGlzLmVudHJpZXMubGVuZ3RoO3ErKyl7dmFyIHU9dGhpcy5lbnRyaWVzW3FdLHg9dS51bmlvbkFyZWFEaWZmZXJlbmNlKG0pO2lmKEluZmluaXR5Pnh8fEluZmluaXR5PT09eCYmbnVsbCE9biYmdS5lbnRyaWVzLmxlbmd0aDxuLmVudHJpZXMubGVuZ3RoKW49dX1yZXR1cm4gbn07cC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24obSl7bnVsbCE9dGhpcy5wYXJlbnQmJnRoaXMucGFyZW50LnJlbW92ZSh0aGlzKTt2YXIgbj1bbmV3IHAodGhpcy5sZWFmKSxuZXcgcCh0aGlzLmxlYWYpXTttLnNwbGl0KHRoaXMuZW50cmllcyxuKTttPW51bGwhPXRoaXMucGFyZW50P3RoaXMucGFyZW50Om5ldyBwKCExKTttLmluc2VydChuWzBdKTttLmluc2VydChuWzFdKTtyZXR1cm4gbX07cC5wcm90b3R5cGUudW5pb25BcmVhRGlmZmVyZW5jZT1mdW5jdGlvbihtKXtyZXR1cm4gTWF0aC5hYnMobC51bmlvbih0aGlzLmJvdW5kcywKbSkuYXJlYSgpLXRoaXMuYm91bmRzLmFyZWEoKSl9O3AucHJvdG90eXBlLm1heERlcHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVhZj8xOjErdGhpcy5lbnRyaWVzLm1hcChmdW5jdGlvbihtKXtyZXR1cm4gbS5tYXhEZXB0aCgpfSkucmVkdWNlKGZ1bmN0aW9uKG0sbil7cmV0dXJuIE1hdGgubWF4KG0sbil9KX07cmV0dXJuIHB9KCk7Zi5SVHJlZU5vZGU9dDt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHAobSxuLHEsdSl7dGhpcy54bD1tO3RoaXMueWw9bjt0aGlzLnhoPXE7dGhpcy55aD11O3RoaXMud2lkdGg9dGhpcy54aC10aGlzLnhsO3RoaXMuaGVpZ2h0PXRoaXMueWgtdGhpcy55bH1wLnh5d2g9ZnVuY3Rpb24obSxuLHEsdSl7cmV0dXJuIG5ldyBwKG0sbixtK3Esbit1KX07cC5lbnRpdHlCb3VuZHM9ZnVuY3Rpb24obSl7cmV0dXJuIG5ldyBwKG0ueCxtLnksbS54K20ud2lkdGgsbS55K20uaGVpZ2h0KX07cC5ib3VuZHM9ZnVuY3Rpb24obSl7cmV0dXJuIHAucG9pbnRQYWlyKG0udG9wTGVmdCwKbS5ib3R0b21SaWdodCl9O3AucG9pbnRQYWlyPWZ1bmN0aW9uKG0sbil7cmV0dXJuIG5ldyBwKE1hdGgubWluKG0ueCxuLngpLE1hdGgubWluKG0ueSxuLnkpLE1hdGgubWF4KG0ueCxuLngpLE1hdGgubWF4KG0ueSxuLnkpKX07cC5wb2ludHM9ZnVuY3Rpb24obSl7aWYoMj5tLmxlbmd0aCl0aHJvdyBFcnJvcigibmVlZCBhdCBsZWFzdCAyIHBvaW50cyB0byBjcmVhdGUgYm91bmRzIik7dmFyIG49bS5tYXAoZnVuY3Rpb24ocSl7cmV0dXJuIHEueH0pO209bS5tYXAoZnVuY3Rpb24ocSl7cmV0dXJuIHEueX0pO3JldHVybiBuZXcgcChuLnJlZHVjZShmdW5jdGlvbihxLHUpe3JldHVybiBNYXRoLm1pbihxLHUpfSksbS5yZWR1Y2UoZnVuY3Rpb24ocSx1KXtyZXR1cm4gTWF0aC5taW4ocSx1KX0pLG4ucmVkdWNlKGZ1bmN0aW9uKHEsdSl7cmV0dXJuIE1hdGgubWF4KHEsdSl9KSxtLnJlZHVjZShmdW5jdGlvbihxLHUpe3JldHVybiBNYXRoLm1heChxLHUpfSkpfTtwLnVuaW9uPWZ1bmN0aW9uKG0sCm4pe3JldHVybiBuZXcgcChNYXRoLm1pbihtLnhsLG4ueGwpLE1hdGgubWluKG0ueWwsbi55bCksTWF0aC5tYXgobS54aCxuLnhoKSxNYXRoLm1heChtLnloLG4ueWgpKX07cC51bmlvbkFsbD1mdW5jdGlvbihtKXttPW0uZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBudWxsIT1ufSk7cmV0dXJuIDA9PT1tLmxlbmd0aD9udWxsOm0ucmVkdWNlKGZ1bmN0aW9uKG4scSl7cmV0dXJuIHAudW5pb24obixxKX0pfTtwLmlzQm91bmRzT3ZlcmxhcEJvdW5kcz1mdW5jdGlvbihtLG4pe3JldHVybiBwLmlzQm91bmRzT3ZlcmxhcFgobSxuKSYmcC5pc0JvdW5kc092ZXJsYXBZKG0sbil9O3AuaXNCb3VuZHNPdmVybGFwWD1mdW5jdGlvbihtLG4pe3JldHVybiEobS54aDxuLnhsKSYmIShtLnhsPm4ueGgpfTtwLmlzQm91bmRzT3ZlcmxhcFk9ZnVuY3Rpb24obSxuKXtyZXR1cm4hKG0ueWg8bi55bCkmJiEobS55bD5uLnloKX07cC5wcm90b3R5cGUuYXJlYT1mdW5jdGlvbigpe251bGw9PXRoaXMuYXJlYUNhY2hlZCYmCih0aGlzLmFyZWFDYWNoZWQ9KHRoaXMueGgtdGhpcy54bCkqKHRoaXMueWgtdGhpcy55bCkpO3JldHVybiB0aGlzLmFyZWFDYWNoZWR9O3AucHJvdG90eXBlLmNvbnRhaW5zPWZ1bmN0aW9uKG0pe3JldHVybiB0aGlzLnhsPD1tLngmJnRoaXMueGg+PW0ueCYmdGhpcy55bDw9bS55JiZ0aGlzLnloPj1tLnl9O3JldHVybiBwfSgpO2YuUlRyZWVCb3VuZHM9bH0sZnVuY3Rpb24oZCxmKXtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaCgpeyJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93LlNldD90aGlzLl9lczZTZXQ9bmV3IHdpbmRvdy5TZXQ6dGhpcy5fdmFsdWVzPVtdO3RoaXMuc2l6ZT0wfWgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihrKXtpZihudWxsIT10aGlzLl9lczZTZXQpcmV0dXJuIHRoaXMuX2VzNlNldC5hZGQoayksdGhpcy5zaXplPXRoaXMuX2VzNlNldC5zaXplLHRoaXM7dGhpcy5oYXMoayl8fCh0aGlzLl92YWx1ZXMucHVzaChrKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCk7CnJldHVybiB0aGlzfTtoLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oayl7aWYobnVsbCE9dGhpcy5fZXM2U2V0KXJldHVybiBrPXRoaXMuX2VzNlNldC5kZWxldGUoayksdGhpcy5zaXplPXRoaXMuX2VzNlNldC5zaXplLGs7az10aGlzLl92YWx1ZXMuaW5kZXhPZihrKTtyZXR1cm4tMSE9PWs/KHRoaXMuX3ZhbHVlcy5zcGxpY2UoaywxKSx0aGlzLnNpemU9dGhpcy5fdmFsdWVzLmxlbmd0aCwhMCk6ITF9O2gucHJvdG90eXBlLmhhcz1mdW5jdGlvbihrKXtyZXR1cm4gbnVsbCE9dGhpcy5fZXM2U2V0P3RoaXMuX2VzNlNldC5oYXMoayk6LTEhPT10aGlzLl92YWx1ZXMuaW5kZXhPZihrKX07aC5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihrLHQpe3ZhciBsPXRoaXM7bnVsbCE9dGhpcy5fZXM2U2V0P3RoaXMuX2VzNlNldC5mb3JFYWNoKGZ1bmN0aW9uKHAsbSl7cmV0dXJuIGsuY2FsbCh0LHAsbSxsKX0sdCk6dGhpcy5fdmFsdWVzLmZvckVhY2goZnVuY3Rpb24ocCl7ay5jYWxsKHQsCnAscCxsKX0pfTtyZXR1cm4gaH0oKTtmLlNldD1kfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh0KXtmb3IodmFyIGwgaW4gdClmLmhhc093blByb3BlcnR5KGwpfHwoZltsXT10W2xdKX1rKGgoMTMxKSk7ayhoKDEzMCkpfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKGwscCl7ZnVuY3Rpb24gbSgpe3RoaXMuY29uc3RydWN0b3I9bH1mb3IodmFyIG4gaW4gcClwLmhhc093blByb3BlcnR5KG4pJiYobFtuXT1wW25dKTtsLnByb3RvdHlwZT1udWxsPT09cD9PYmplY3QuY3JlYXRlKHApOihtLnByb3RvdHlwZT1wLnByb3RvdHlwZSxuZXcgbSl9LHQ9aCgyMSk7ZD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKG0sbil7dmFyIHE9bC5jYWxsKHRoaXMsbSxuKXx8dGhpcztxLmNhY2hlPW5ldyB0LkNhY2hlKGZ1bmN0aW9uKHUpe3JldHVybiBxLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlKHUpfSk7cmV0dXJuIHF9ayhwLGwpO3AucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyTm90RnJvbUNhY2hlPQpmdW5jdGlvbihtKXtyZXR1cm4gbC5wcm90b3R5cGUuX21lYXN1cmVDaGFyYWN0ZXIuY2FsbCh0aGlzLG0pfTtwLnByb3RvdHlwZS5fbWVhc3VyZUNoYXJhY3Rlcj1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5jYWNoZS5nZXQobSl9O3AucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5jYWNoZS5jbGVhcigpfTtyZXR1cm4gcH0oaCg2MSkuQ2hhcmFjdGVyTWVhc3VyZXIpO2YuQ2FjaGVDaGFyYWN0ZXJNZWFzdXJlcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsbCl7ZnVuY3Rpb24gcCgpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIG0gaW4gbClsLmhhc093blByb3BlcnR5KG0pJiYodFttXT1sW21dKTt0LnByb3RvdHlwZT1udWxsPT09bD9PYmplY3QuY3JlYXRlKGwpOihwLnByb3RvdHlwZT1sLnByb3RvdHlwZSxuZXcgcCl9O2Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbCgpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8CnRoaXN9ayhsLHQpO2wucHJvdG90eXBlLl9tZWFzdXJlQ2hhcmFjdGVyPWZ1bmN0aW9uKHApe3JldHVybiB0LnByb3RvdHlwZS5fbWVhc3VyZUxpbmUuY2FsbCh0aGlzLHApfTtsLnByb3RvdHlwZS5fbWVhc3VyZUxpbmU9ZnVuY3Rpb24ocCl7dmFyIG09dGhpcztwPXAuc3BsaXQoIiIpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbS5fbWVhc3VyZUNoYXJhY3RlcihuKX0pO3JldHVybntoZWlnaHQ6cC5yZWR1Y2UoZnVuY3Rpb24obixxKXtyZXR1cm4gTWF0aC5tYXgobixxLmhlaWdodCl9LDApLHdpZHRoOnAucmVkdWNlKGZ1bmN0aW9uKG4scSl7cmV0dXJuIG4rcS53aWR0aH0sMCl9fTtyZXR1cm4gbH0oaCg2MykuTWVhc3VyZXIpO2YuQ2hhcmFjdGVyTWVhc3VyZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsodCl7Zm9yKHZhciBsIGluIHQpZi5oYXNPd25Qcm9wZXJ0eShsKXx8KGZbbF09dFtsXSl9ayhoKDM2KSk7ayhoKDYwKSk7ayhoKDEzMikpO2soaCg2MSkpO2soaCg2MykpfSwKZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihsLHApe2Z1bmN0aW9uIG0oKXt0aGlzLmNvbnN0cnVjdG9yPWx9Zm9yKHZhciBuIGluIHApcC5oYXNPd25Qcm9wZXJ0eShuKSYmKGxbbl09cFtuXSk7bC5wcm90b3R5cGU9bnVsbD09PXA/T2JqZWN0LmNyZWF0ZShwKToobS5wcm90b3R5cGU9cC5wcm90b3R5cGUsbmV3IG0pfSx0PWgoMzYpO2Q9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gcChtLG4pe3ZvaWQgMD09PW4mJihuPSExKTttPWwuY2FsbCh0aGlzLG0pfHx0aGlzO20udXNlR3VhcmRzPW47cmV0dXJuIG19ayhwLGwpO3AucHJvdG90eXBlLl9hZGRHdWFyZHM9ZnVuY3Rpb24obSl7cmV0dXJuIHQuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCttK3QuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVH07cC5wcm90b3R5cGUuX21lYXN1cmVMaW5lPWZ1bmN0aW9uKG0pe3ZhciBuO3ZvaWQgMD09PW4mJihuPSExKTtuPXRoaXMudXNlR3VhcmRzfHwKbnx8L15bXHQgXSQvLnRlc3QobSk7bT1sLnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxuP3RoaXMuX2FkZEd1YXJkcyhtKTptKTttLndpZHRoLT1uPzIqdGhpcy5nZXRHdWFyZFdpZHRoKCk6MDtyZXR1cm4gbX07cC5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihtKXt2YXIgbj10aGlzO3ZvaWQgMD09PW0mJihtPXQuQWJzdHJhY3RNZWFzdXJlci5IRUlHSFRfVEVYVCk7aWYoIiI9PT1tLnRyaW0oKSlyZXR1cm57d2lkdGg6MCxoZWlnaHQ6MH07bT1tLnRyaW0oKS5zcGxpdCgiXG4iKS5tYXAoZnVuY3Rpb24ocSl7cmV0dXJuIG4uX21lYXN1cmVMaW5lKHEpfSk7cmV0dXJue2hlaWdodDptLnJlZHVjZShmdW5jdGlvbihxLHUpe3JldHVybiBxK3UuaGVpZ2h0fSwwKSx3aWR0aDptLnJlZHVjZShmdW5jdGlvbihxLHUpe3JldHVybiBNYXRoLm1heChxLHUud2lkdGgpfSwwKX19O3AucHJvdG90eXBlLmdldEd1YXJkV2lkdGg9ZnVuY3Rpb24oKXtudWxsPT10aGlzLmd1YXJkV2lkdGgmJgoodGhpcy5ndWFyZFdpZHRoPWwucHJvdG90eXBlLm1lYXN1cmUuY2FsbCh0aGlzKS53aWR0aCk7cmV0dXJuIHRoaXMuZ3VhcmRXaWR0aH07cmV0dXJuIHB9KHQuQWJzdHJhY3RNZWFzdXJlcik7Zi5NZWFzdXJlcj1kfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh0KXtmb3IodmFyIGwgaW4gdClmLmhhc093blByb3BlcnR5KGwpfHwoZltsXT10W2xdKX1rKGgoMTM4KSk7ayhoKDY1KSl9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDIxKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMubWF4TGluZXMoSW5maW5pdHkpO3RoaXMudGV4dFRyaW1taW5nKCk7dGhpcy5hbGxvd0JyZWFraW5nV29yZHMoKTt0aGlzLl90b2tlbml6ZXI9bmV3IGsuVG9rZW5pemVyO3RoaXMuX2JyZWFraW5nQ2hhcmFjdGVyPSItIn10LnByb3RvdHlwZS5tYXhMaW5lcz1mdW5jdGlvbihsKXtpZihudWxsPT1sKXJldHVybiB0aGlzLl9tYXhMaW5lczt0aGlzLl9tYXhMaW5lcz1sO3JldHVybiB0aGlzfTsKdC5wcm90b3R5cGUudGV4dFRyaW1taW5nPWZ1bmN0aW9uKCl7dGhpcy5fdGV4dFRyaW1taW5nPSJlbGxpcHNpcyJ9O3QucHJvdG90eXBlLmFsbG93QnJlYWtpbmdXb3Jkcz1mdW5jdGlvbigpe3RoaXMuX2FsbG93QnJlYWtpbmdXb3Jkcz0hMH07dC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbihsLHAsbSxuKXt2YXIgcT10aGlzO3ZvaWQgMD09PW4mJihuPUluZmluaXR5KTt2YXIgdT17bm9Ccm9rZVdvcmRzOjAsbm9MaW5lczowLG9yaWdpbmFsVGV4dDpsLHRydW5jYXRlZFRleHQ6IiIsd3JhcHBlZFRleHQ6IiJ9O209e2F2YWlsYWJsZUxpbmVzOk1hdGgubWluKE1hdGguZmxvb3Iobi9wLm1lYXN1cmUoKS5oZWlnaHQpLHRoaXMuX21heExpbmVzKSxhdmFpbGFibGVXaWR0aDptLGNhbkZpdFRleHQ6ITAsY3VycmVudExpbmU6IiIsd3JhcHBpbmc6dX07dmFyIHg9bC5zcGxpdCgiXG4iKTtyZXR1cm4geC5yZWR1Y2UoZnVuY3Rpb24oQSx5LHcpe3JldHVybiBxLmJyZWFrTGluZVRvRml0V2lkdGgoQSwKeSx3IT09eC5sZW5ndGgtMSxwKX0sbSkud3JhcHBpbmd9O3QucHJvdG90eXBlLmJyZWFrTGluZVRvRml0V2lkdGg9ZnVuY3Rpb24obCxwLG0sbil7dmFyIHE9dGhpcztsLmNhbkZpdFRleHR8fCIiPT09bC53cmFwcGluZy50cnVuY2F0ZWRUZXh0fHwobC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz0iXG4iKTtsPXRoaXMuX3Rva2VuaXplci50b2tlbml6ZShwKS5yZWR1Y2UoZnVuY3Rpb24odSx4KXtyZXR1cm4gcS53cmFwTmV4dFRva2VuKHgsdSxuKX0sbCk7cD1rLlN0cmluZ01ldGhvZHMudHJpbUVuZChsLmN1cnJlbnRMaW5lKTtsLndyYXBwaW5nLm5vTGluZXMrPSsoIiIhPT1wKTtsLndyYXBwaW5nLm5vTGluZXM9PT1sLmF2YWlsYWJsZUxpbmVzJiYibm9uZSIhPT10aGlzLl90ZXh0VHJpbW1pbmcmJm0/bC5jYW5GaXRUZXh0PSExOmwud3JhcHBpbmcud3JhcHBlZFRleHQrPXA7bC5jdXJyZW50TGluZT0iXG4iO3JldHVybiBsfTt0LnByb3RvdHlwZS5jYW5GaXRUb2tlbj1mdW5jdGlvbihsLApwLG0pe3ZhciBuPXRoaXMscT10aGlzLl9hbGxvd0JyZWFraW5nV29yZHM/bC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHUseCl7cmV0dXJuIHghPT1sLmxlbmd0aC0xP3Urbi5fYnJlYWtpbmdDaGFyYWN0ZXI6dX0pOltsXTtyZXR1cm4gbS5tZWFzdXJlKGwpLndpZHRoPD1wfHxxLmV2ZXJ5KGZ1bmN0aW9uKHUpe3JldHVybiBtLm1lYXN1cmUodSkud2lkdGg8PXB9KX07dC5wcm90b3R5cGUuYWRkRWxsaXBzaXM9ZnVuY3Rpb24obCxwLG0pe2lmKCJub25lIj09PXRoaXMuX3RleHRUcmltbWluZylyZXR1cm57cmVtYWluaW5nVG9rZW46IiIsd3JhcHBlZFRva2VuOmx9O3ZhciBuPWwuc3Vic3RyaW5nKDApLnRyaW0oKSxxPW0ubWVhc3VyZShuKS53aWR0aCx1PW0ubWVhc3VyZSgiLi4uIikud2lkdGgseD0wPGwubGVuZ3RoJiYiXG4iPT09bFswXT8iXG4iOiIiO2lmKHA8PXUpcmV0dXJue3JlbWFpbmluZ1Rva2VuOmwsd3JhcHBlZFRva2VuOngrIi4uLiIuc3Vic3RyKDAsTWF0aC5mbG9vcihwLwoodS8zKSkpfTtmb3IoO3ErdT5wOyluPWsuU3RyaW5nTWV0aG9kcy50cmltRW5kKG4uc3Vic3RyKDAsbi5sZW5ndGgtMSkpLHE9bS5tZWFzdXJlKG4pLndpZHRoO3JldHVybntyZW1haW5pbmdUb2tlbjprLlN0cmluZ01ldGhvZHMudHJpbUVuZChsLnN1YnN0cmluZyhuLmxlbmd0aCksIi0iKS50cmltKCksd3JhcHBlZFRva2VuOngrbisiLi4uIn19O3QucHJvdG90eXBlLndyYXBOZXh0VG9rZW49ZnVuY3Rpb24obCxwLG0pe2lmKCFwLmNhbkZpdFRleHR8fHAuYXZhaWxhYmxlTGluZXM9PT1wLndyYXBwaW5nLm5vTGluZXN8fCF0aGlzLmNhbkZpdFRva2VuKGwscC5hdmFpbGFibGVXaWR0aCxtKSlyZXR1cm4gdGhpcy5maW5pc2hXcmFwcGluZyhsLHAsbSk7Zm9yKDtsOyl7dmFyIG49dGhpcy5icmVha1Rva2VuVG9GaXRJbldpZHRoKGwscC5jdXJyZW50TGluZSxwLmF2YWlsYWJsZVdpZHRoLG0pO3AuY3VycmVudExpbmU9bi5saW5lO2w9bi5yZW1haW5pbmdUb2tlbjtpZihudWxsIT1sKWlmKHAud3JhcHBpbmcubm9Ccm9rZVdvcmRzKz0KK24uYnJlYWtXb3JkLCsrcC53cmFwcGluZy5ub0xpbmVzLHAuYXZhaWxhYmxlTGluZXM9PT1wLndyYXBwaW5nLm5vTGluZXMpe209dGhpcy5hZGRFbGxpcHNpcyhwLmN1cnJlbnRMaW5lLHAuYXZhaWxhYmxlV2lkdGgsbSk7cC53cmFwcGluZy53cmFwcGVkVGV4dCs9bS53cmFwcGVkVG9rZW47cC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1tLnJlbWFpbmluZ1Rva2VuK2w7cC5jdXJyZW50TGluZT0iXG4iO2JyZWFrfWVsc2UgcC53cmFwcGluZy53cmFwcGVkVGV4dCs9ay5TdHJpbmdNZXRob2RzLnRyaW1FbmQocC5jdXJyZW50TGluZSkscC5jdXJyZW50TGluZT0iXG4ifXJldHVybiBwfTt0LnByb3RvdHlwZS5maW5pc2hXcmFwcGluZz1mdW5jdGlvbihsLHAsbSl7cC5jYW5GaXRUZXh0JiZwLmF2YWlsYWJsZUxpbmVzIT09cC53cmFwcGluZy5ub0xpbmVzJiZ0aGlzLl9hbGxvd0JyZWFraW5nV29yZHMmJiJub25lIiE9PXRoaXMuX3RleHRUcmltbWluZz8obT10aGlzLmFkZEVsbGlwc2lzKHAuY3VycmVudExpbmUrCmwscC5hdmFpbGFibGVXaWR0aCxtKSxwLndyYXBwaW5nLndyYXBwZWRUZXh0Kz1tLndyYXBwZWRUb2tlbixwLndyYXBwaW5nLnRydW5jYXRlZFRleHQrPW0ucmVtYWluaW5nVG9rZW4scC53cmFwcGluZy5ub0Jyb2tlV29yZHMrPSsobS5yZW1haW5pbmdUb2tlbi5sZW5ndGg8bC5sZW5ndGgpLHAud3JhcHBpbmcubm9MaW5lcys9KygwPG0ud3JhcHBlZFRva2VuLmxlbmd0aCkscC5jdXJyZW50TGluZT0iIik6cC53cmFwcGluZy50cnVuY2F0ZWRUZXh0Kz1sO3AuY2FuRml0VGV4dD0hMTtyZXR1cm4gcH07dC5wcm90b3R5cGUuYnJlYWtUb2tlblRvRml0SW5XaWR0aD1mdW5jdGlvbihsLHAsbSxuKXtpZih2b2lkIDA9PT1xKXZhciBxPXRoaXMuX2JyZWFraW5nQ2hhcmFjdGVyO2lmKG4ubWVhc3VyZShwK2wpLndpZHRoPD1tKXJldHVybnticmVha1dvcmQ6ITEsbGluZTpwK2wscmVtYWluaW5nVG9rZW46bnVsbH07aWYoIiI9PT1sLnRyaW0oKSlyZXR1cm57YnJlYWtXb3JkOiExLGxpbmU6cCwKcmVtYWluaW5nVG9rZW46IiJ9O2lmKCF0aGlzLl9hbGxvd0JyZWFraW5nV29yZHMpcmV0dXJue2JyZWFrV29yZDohMSxsaW5lOnAscmVtYWluaW5nVG9rZW46bH07Zm9yKHZhciB1PTA7dTxsLmxlbmd0aDspaWYobi5tZWFzdXJlKHArbC5zdWJzdHJpbmcoMCx1KzEpK3EpLndpZHRoPD1tKSsrdTtlbHNlIGJyZWFrO209IiI7MDx1JiYobT1xKTtyZXR1cm57YnJlYWtXb3JkOjA8dSxsaW5lOnArbC5zdWJzdHJpbmcoMCx1KSttLHJlbWFpbmluZ1Rva2VuOmwuc3Vic3RyaW5nKHUpfX07cmV0dXJuIHR9KCk7Zi5XcmFwcGVyPWR9LGZ1bmN0aW9uKGQsZixoKXsoZnVuY3Rpb24oayl7Zm9yKHZhciB0IGluIGspZi5oYXNPd25Qcm9wZXJ0eSh0KXx8KGZbdF09a1t0XSl9KShoKDEzOSkpfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayh0KXtmb3IodmFyIGwgaW4gdClmLmhhc093blByb3BlcnR5KGwpfHwoZltsXT10W2xdKX1rKGgoNzIpKTtrKGgoNzMpKTtrKGgoMjgpKX0sZnVuY3Rpb24oZCwKZil7Zi52ZXJzaW9uPSIzLjcuMCJ9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHcsQyl7cmV0dXJuIHcuZWFjaChmdW5jdGlvbigpe3ZhciBGPUMuYXBwbHkodGhpcyxhcmd1bWVudHMpLEQ9eS5zZWxlY3QodGhpcyksQjtmb3IoQiBpbiBGKUQuYXR0cihCLEZbQl0pfSl9ZnVuY3Rpb24gdCh3LEMpe2Zvcih2YXIgRiBpbiBDKXcuYXR0cihGLENbRl0pO3JldHVybiB3fWZ1bmN0aW9uIGwodyxDLEYpe3JldHVybiB3LmVhY2goZnVuY3Rpb24oKXt2YXIgRD1DLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxCPXkuc2VsZWN0KHRoaXMpLEk7Zm9yKEkgaW4gRClCLnN0eWxlKEksRFtJXSxGKX0pfWZ1bmN0aW9uIHAodyxDLEYpe2Zvcih2YXIgRCBpbiBDKXcuc3R5bGUoRCxDW0RdLEYpO3JldHVybiB3fWZ1bmN0aW9uIG0odyxDKXtyZXR1cm4gdy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEY9Qy5hcHBseSh0aGlzLGFyZ3VtZW50cyksRD15LnNlbGVjdCh0aGlzKSxCO2ZvcihCIGluIEYpRC5wcm9wZXJ0eShCLApGW0JdKX0pfWZ1bmN0aW9uIG4odyxDKXtmb3IodmFyIEYgaW4gQyl3LnByb3BlcnR5KEYsQ1tGXSk7cmV0dXJuIHd9ZnVuY3Rpb24gcSh3LEMpe3JldHVybiB3LmVhY2goZnVuY3Rpb24oKXt2YXIgRj1DLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxEPXkuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odyksQjtmb3IoQiBpbiBGKUQuYXR0cihCLEZbQl0pfSl9ZnVuY3Rpb24gdSh3LEMpe2Zvcih2YXIgRiBpbiBDKXcuYXR0cihGLENbRl0pO3JldHVybiB3fWZ1bmN0aW9uIHgodyxDLEYpe3JldHVybiB3LmVhY2goZnVuY3Rpb24oKXt2YXIgRD1DLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxCPXkuc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24odyksSTtmb3IoSSBpbiBEKUIuc3R5bGUoSSxEW0ldLEYpfSl9ZnVuY3Rpb24gQSh3LEMsRil7Zm9yKHZhciBEIGluIEMpdy5zdHlsZShELENbRF0sRik7cmV0dXJuIHd9dmFyIHk9ZD1oKDEpO3kuc2VsZWN0aW9uLnByb3RvdHlwZS5hdHRycz1mdW5jdGlvbih3KXtyZXR1cm4oImZ1bmN0aW9uIj09PQp0eXBlb2Ygdz9rOnQpKHRoaXMsdyl9O3kuc2VsZWN0aW9uLnByb3RvdHlwZS5zdHlsZXM9ZnVuY3Rpb24odyl7cmV0dXJuKCJmdW5jdGlvbiI9PT10eXBlb2Ygdz9sOnApKHRoaXMsdywiIil9O3kuc2VsZWN0aW9uLnByb3RvdHlwZS5wcm9wZXJ0aWVzPWZ1bmN0aW9uKHcpe3JldHVybigiZnVuY3Rpb24iPT09dHlwZW9mIHc/bTpuKSh0aGlzLHcpfTtkLnRyYW5zaXRpb24ucHJvdG90eXBlLmF0dHJzPWZ1bmN0aW9uKHcpe3JldHVybigiZnVuY3Rpb24iPT09dHlwZW9mIHc/cTp1KSh0aGlzLHcpfTtkLnRyYW5zaXRpb24ucHJvdG90eXBlLnN0eWxlcz1mdW5jdGlvbih3KXtyZXR1cm4oImZ1bmN0aW9uIj09PXR5cGVvZiB3P3g6QSkodGhpcyx3LCIiKX19LGZ1bmN0aW9uKGQsZixoKXtkPWgoMTE3KTt2YXIgaz1oKDEyKTtoPWgoMTApO3ZhciB0PXtsaW5lYXI6ZC5lYXNlTGluZWFyLHF1YWQ6ZC5lYXNlUXVhZCxxdWFkSW46ZC5lYXNlUXVhZEluLHF1YWRPdXQ6ZC5lYXNlUXVhZE91dCwKcXVhZEluT3V0OmQuZWFzZVF1YWRJbk91dCxjdWJpYzpkLmVhc2VDdWJpYyxjdWJpY0luOmQuZWFzZUN1YmljSW4sY3ViaWNPdXQ6ZC5lYXNlQ3ViaWNPdXQsY3ViaWNJbk91dDpkLmVhc2VDdWJpY0luT3V0LHBvbHk6ZC5lYXNlUG9seSxwb2x5SW46ZC5lYXNlUG9seUluLHBvbHlPdXQ6ZC5lYXNlUG9seU91dCxwb2x5SW5PdXQ6ZC5lYXNlUG9seUluT3V0LHNpbjpkLmVhc2VTaW4sc2luSW46ZC5lYXNlU2luSW4sc2luT3V0OmQuZWFzZVNpbk91dCxzaW5Jbk91dDpkLmVhc2VTaW5Jbk91dCxleHA6ZC5lYXNlRXhwLGV4cEluOmQuZWFzZUV4cEluLGV4cE91dDpkLmVhc2VFeHBPdXQsZXhwSW5PdXQ6ZC5lYXNlRXhwSW5PdXQsY2lyY2xlOmQuZWFzZUNpcmNsZSxjaXJjbGVJbjpkLmVhc2VDaXJjbGVJbixjaXJjbGVPdXQ6ZC5lYXNlQ2lyY2xlT3V0LGNpcmNsZUluT3V0OmQuZWFzZUNpcmNsZUluT3V0LGJvdW5jZTpkLmVhc2VCb3VuY2UsYm91bmNlSW46ZC5lYXNlQm91bmNlSW4sYm91bmNlT3V0OmQuZWFzZUJvdW5jZU91dCwKYm91bmNlSW5PdXQ6ZC5lYXNlQm91bmNlSW5PdXQsYmFjazpkLmVhc2VCYWNrLGJhY2tJbjpkLmVhc2VCYWNrSW4sYmFja091dDpkLmVhc2VCYWNrT3V0LGJhY2tJbk91dDpkLmVhc2VCYWNrSW5PdXQsZWxhc3RpYzpkLmVhc2VFbGFzdGljLGVsYXN0aWNJbjpkLmVhc2VFbGFzdGljSW4sZWxhc3RpY091dDpkLmVhc2VFbGFzdGljT3V0LGVsYXN0aWNJbk91dDpkLmVhc2VFbGFzdGljSW5PdXR9O2YuRWFzZU5hbWU9aC5tYWtlRW51bSgibGluZWFyIHF1YWQgcXVhZEluIHF1YWRPdXQgcXVhZEluT3V0IGN1YmljIGN1YmljSW4gY3ViaWNPdXQgY3ViaWNJbk91dCBwb2x5IHBvbHlJbiBwb2x5T3V0IHBvbHlJbk91dCBzaW4gc2luSW4gc2luT3V0IHNpbkluT3V0IGV4cCBleHBJbiBleHBPdXQgZXhwSW5PdXQgY2lyY2xlIGNpcmNsZUluIGNpcmNsZU91dCBjaXJjbGVJbk91dCBib3VuY2UgYm91bmNlSW4gYm91bmNlT3V0IGJvdW5jZUluT3V0IGJhY2sgYmFja0luIGJhY2tPdXQgYmFja0luT3V0IGVsYXN0aWMgZWxhc3RpY0luIGVsYXN0aWNPdXQgZWxhc3RpY0luT3V0Ii5zcGxpdCgiICIpKTsKaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGwoKXt0aGlzLl9zdGFydERlbGF5PWwuX0RFRkFVTFRfU1RBUlRfREVMQVlfTUlMTElTRUNPTkRTO3RoaXMuX3N0ZXBEdXJhdGlvbj1sLl9ERUZBVUxUX1NURVBfRFVSQVRJT05fTUlMTElTRUNPTkRTO3RoaXMuX3N0ZXBEZWxheT1sLl9ERUZBVUxUX0lURVJBVElWRV9ERUxBWV9NSUxMSVNFQ09ORFM7dGhpcy5fbWF4VG90YWxEdXJhdGlvbj1sLl9ERUZBVUxUX01BWF9UT1RBTF9EVVJBVElPTl9NSUxMSVNFQ09ORFM7dGhpcy5fZWFzaW5nTW9kZT1sLl9ERUZBVUxUX0VBU0lOR19NT0RFfWwucHJvdG90eXBlLnRvdGFsVGltZT1mdW5jdGlvbihwKXt2YXIgbT10aGlzLl9nZXRBZGp1c3RlZEl0ZXJhdGl2ZURlbGF5KHApO3JldHVybiB0aGlzLnN0YXJ0RGVsYXkoKSttKk1hdGgubWF4KHAtMSwwKSt0aGlzLnN0ZXBEdXJhdGlvbigpfTtsLnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKHAsbSl7dmFyIG49dGhpcztwPWsuY29lcmNlRXh0ZXJuYWxEMyhwKTsKdmFyIHE9cC5zaXplKCksdT10aGlzLl9nZXRBZGp1c3RlZEl0ZXJhdGl2ZURlbGF5KHEpO3JldHVybiBwLnRyYW5zaXRpb24oKS5lYXNlKHRoaXMuX2dldEVhc2VGYWN0b3J5KCkpLmR1cmF0aW9uKHRoaXMuc3RlcER1cmF0aW9uKCkpLmRlbGF5KGZ1bmN0aW9uKHgsQSl7cmV0dXJuIG4uc3RhcnREZWxheSgpK3UqQX0pLmF0dHJzKG0pfTtsLnByb3RvdHlwZS5zdGFydERlbGF5PWZ1bmN0aW9uKHApe2lmKG51bGw9PXApcmV0dXJuIHRoaXMuX3N0YXJ0RGVsYXk7dGhpcy5fc3RhcnREZWxheT1wO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5zdGVwRHVyYXRpb249ZnVuY3Rpb24ocCl7aWYobnVsbD09cClyZXR1cm4gTWF0aC5taW4odGhpcy5fc3RlcER1cmF0aW9uLHRoaXMuX21heFRvdGFsRHVyYXRpb24pO3RoaXMuX3N0ZXBEdXJhdGlvbj1wO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5zdGVwRGVsYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlcERlbGF5fTtsLnByb3RvdHlwZS5tYXhUb3RhbER1cmF0aW9uPQpmdW5jdGlvbihwKXtpZihudWxsPT1wKXJldHVybiB0aGlzLl9tYXhUb3RhbER1cmF0aW9uO3RoaXMuX21heFRvdGFsRHVyYXRpb249cDtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuZWFzaW5nTW9kZT1mdW5jdGlvbihwKXtpZihudWxsPT1wKXJldHVybiB0aGlzLl9lYXNpbmdNb2RlO3RoaXMuX2Vhc2luZ01vZGU9cDtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUuX2dldEVhc2VGYWN0b3J5PWZ1bmN0aW9uKCl7dmFyIHA9dGhpcy5lYXNpbmdNb2RlKCk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgcD8ocD10W3BdLG51bGw9PXA/dC5saW5lYXI6cCk6cH07bC5wcm90b3R5cGUuX2dldEFkanVzdGVkSXRlcmF0aXZlRGVsYXk9ZnVuY3Rpb24ocCl7dmFyIG09dGhpcy5tYXhUb3RhbER1cmF0aW9uKCktdGhpcy5zdGVwRHVyYXRpb24oKTttPU1hdGgubWF4KG0sMCk7cD1tL01hdGgubWF4KHAtMSwxKTtyZXR1cm4gTWF0aC5taW4odGhpcy5zdGVwRGVsYXkoKSxwKX07cmV0dXJuIGx9KCk7aC5fREVGQVVMVF9TVEFSVF9ERUxBWV9NSUxMSVNFQ09ORFM9CjA7aC5fREVGQVVMVF9TVEVQX0RVUkFUSU9OX01JTExJU0VDT05EUz0zMDA7aC5fREVGQVVMVF9JVEVSQVRJVkVfREVMQVlfTUlMTElTRUNPTkRTPTE1O2guX0RFRkFVTFRfTUFYX1RPVEFMX0RVUkFUSU9OX01JTExJU0VDT05EUz1JbmZpbml0eTtoLl9ERUZBVUxUX0VBU0lOR19NT0RFPSJleHBPdXQiO2YuRWFzaW5nPWh9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDEyKTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe310LnByb3RvdHlwZS50b3RhbFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gMH07dC5wcm90b3R5cGUuYW5pbWF0ZT1mdW5jdGlvbihsLHApe2w9ay5jb2VyY2VFeHRlcm5hbEQzKGwpO3JldHVybiBsLmF0dHJzKHApfTtyZXR1cm4gdH0oKTtmLk51bGw9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihxLHUpe2Z1bmN0aW9uIHgoKXt0aGlzLmNvbnN0cnVjdG9yPXF9Zm9yKHZhciBBIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShBKSYmCihxW0FdPXVbQV0pO3EucHJvdG90eXBlPW51bGw9PT11P09iamVjdC5jcmVhdGUodSk6KHgucHJvdG90eXBlPXUucHJvdG90eXBlLG5ldyB4KX0sdD1oKDEpLGw9aCg1KSxwPWgoNCksbT1oKDApLG49aCgyMik7ZD1mdW5jdGlvbihxKXtmdW5jdGlvbiB1KHgsQSl7dm9pZCAwPT09QSYmKEE9ImJvdHRvbSIpO3g9cS5jYWxsKHRoaXMseCxBKXx8dGhpczt4Ll90aWNrTGFiZWxBbmdsZT0wO3guX3RpY2tMYWJlbFNoZWFyQW5nbGU9MDt4LmFkZENsYXNzKCJjYXRlZ29yeS1heGlzIik7cmV0dXJuIHh9ayh1LHEpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSwiX3dyYXBwZXIiLHtnZXQ6ZnVuY3Rpb24oKXt2YXIgeD1uZXcgbC5XcmFwcGVyO251bGwhPXRoaXMuX3RpY2tMYWJlbE1heExpbmVzJiZ4Lm1heExpbmVzKHRoaXMuX3RpY2tMYWJlbE1heExpbmVzKTtyZXR1cm4geH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodS5wcm90b3R5cGUsCiJfd3JpdGVyIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLldyaXRlcih0aGlzLl9tZWFzdXJlcix0aGlzLl90eXBlc2V0dGVyQ29udGV4dCx0aGlzLl93cmFwcGVyKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt1LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtxLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt0aGlzLl90eXBlc2V0dGVyQ29udGV4dD1uZXcgbC5TdmdDb250ZXh0KHRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5ub2RlKCkpO3RoaXMuX21lYXN1cmVyPW5ldyBsLkNhY2hlTWVhc3VyZXIodGhpcy5fdHlwZXNldHRlckNvbnRleHQpfTt1LnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlZHJhdygpfTt1LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih4LEEpe3ZhciB5PXRoaXMuaXNIb3Jpem9udGFsKCk/MDp0aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCksdz10aGlzLmlzSG9yaXpvbnRhbCgpPwp0aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpK3RoaXMubWFyZ2luKCk6MDtpZigwPT09dGhpcy5fc2NhbGUuZG9tYWluKCkubGVuZ3RoKXJldHVybnttaW5XaWR0aDowLG1pbkhlaWdodDowfTtpZih0aGlzLmFubm90YXRpb25zRW5hYmxlZCgpKXt2YXIgQz10aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpKnRoaXMuYW5ub3RhdGlvblRpZXJDb3VudCgpO3RoaXMuaXNIb3Jpem9udGFsKCk/dys9Qzp5Kz1DfXg9dGhpcy5fbWVhc3VyZVRpY2tMYWJlbHMoeCxBKTtyZXR1cm57bWluV2lkdGg6eC51c2VkV2lkdGgreSxtaW5IZWlnaHQ6eC51c2VkSGVpZ2h0K3d9fTt1LnByb3RvdHlwZS5fY29yZVNpemU9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmlzSG9yaXpvbnRhbCgpP3RoaXMuaGVpZ2h0KCk6dGhpcy53aWR0aCgpLEE9dGhpcy5pc0hvcml6b250YWwoKT90aGlzLnJlcXVlc3RlZFNwYWNlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKS5taW5IZWlnaHQ6dGhpcy5yZXF1ZXN0ZWRTcGFjZSh0aGlzLndpZHRoKCksCnRoaXMuaGVpZ2h0KCkpLm1pbldpZHRoLHk9dGhpcy5tYXJnaW4oKSt0aGlzLl9hbm5vdGF0aW9uVGllckhlaWdodCgpO3JldHVybiBNYXRoLm1pbihBLXkseCl9O3UucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG93bnNhbXBsZUluZm8oKS5kb21haW59O3UucHJvdG90eXBlLl9zaXplRnJvbU9mZmVyPWZ1bmN0aW9uKHgsQSl7cmV0dXJuIHAuQ29tcG9uZW50LnByb3RvdHlwZS5fc2l6ZUZyb21PZmZlci5jYWxsKHRoaXMseCxBKX07dS5wcm90b3R5cGUuZ2V0RG93bnNhbXBsZUluZm89ZnVuY3Rpb24oeCl7dmFyIEE7dm9pZCAwPT09eCYmKHg9dGhpcy5fc2NhbGUpO3ZvaWQgMD09PUEmJihBPXguaW52ZXJ0UmFuZ2UoKSk7dmFyIHk9TWF0aC5jZWlsKHUuX01JTklNVU1fV0lEVEhfUEVSX0xBQkVMX1BYKigwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/MToxL01hdGguY29zKHRoaXMuX3RpY2tMYWJlbFNoZWFyQW5nbGUvMTgwKk1hdGguUEkpKS8KeC5zdGVwV2lkdGgoKSk7cmV0dXJue2RvbWFpbjpBLmZpbHRlcihmdW5jdGlvbih3LEMpe3JldHVybiAwPT09QyV5fSksc3RlcFdpZHRoOnkqeC5zdGVwV2lkdGgoKX19O3UucHJvdG90eXBlLnRpY2tMYWJlbEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbEFuZ2xlO3Rocm93IEVycm9yKCJBbmdsZSB1bmRlZmluZWQgbm90IHN1cHBvcnRlZDsgb25seSAwLCA5MCwgYW5kIC05MCBhcmUgdmFsaWQgdmFsdWVzIik7fTt1LnByb3RvdHlwZS50aWNrTGFiZWxTaGVhckFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RpY2tMYWJlbFNoZWFyQW5nbGV9O3UucHJvdG90eXBlLnRpY2tMYWJlbE1heFdpZHRoPWZ1bmN0aW9uKHgpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl90aWNrTGFiZWxNYXhXaWR0aDt0aGlzLl90aWNrTGFiZWxNYXhXaWR0aD14O3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O3UucHJvdG90eXBlLnRpY2tMYWJlbE1heExpbmVzPQpmdW5jdGlvbih4KXtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fdGlja0xhYmVsTWF4TGluZXM7dGhpcy5fdGlja0xhYmVsTWF4TGluZXM9eDt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTt1LnByb3RvdHlwZS5fdGlja1NwYWNlUmVxdWlyZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCkrdGhpcy50aWNrTGFiZWxQYWRkaW5nKCl9O3UucHJvdG90eXBlLl9kcmF3VGlja3M9ZnVuY3Rpb24oeCxBKXt2YXIgeT10aGlzO3N3aXRjaCh0aGlzLnRpY2tMYWJlbEFuZ2xlKCkpe2Nhc2UgMDp2YXIgdz17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iix0b3A6ImNlbnRlciIsYm90dG9tOiJjZW50ZXIifTt2YXIgQz17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6ImJvdHRvbSIsYm90dG9tOiJ0b3AifTticmVhaztjYXNlIDkwOnc9e2xlZnQ6ImNlbnRlciIscmlnaHQ6ImNlbnRlciIsdG9wOiJyaWdodCIsYm90dG9tOiJsZWZ0In07CkM9e2xlZnQ6InRvcCIscmlnaHQ6ImJvdHRvbSIsdG9wOiJjZW50ZXIiLGJvdHRvbToiY2VudGVyIn07YnJlYWs7Y2FzZSAtOTA6dz17bGVmdDoiY2VudGVyIixyaWdodDoiY2VudGVyIix0b3A6ImxlZnQiLGJvdHRvbToicmlnaHQifSxDPXtsZWZ0OiJib3R0b20iLHJpZ2h0OiJ0b3AiLHRvcDoiY2VudGVyIixib3R0b206ImNlbnRlciJ9fUEuZWFjaChmdW5jdGlvbihGKXt2YXIgRD10LnNlbGVjdCh0aGlzKSxCPXkuaXNIb3Jpem9udGFsKCk/eDp5LndpZHRoKCkteS5fdGlja1NwYWNlUmVxdWlyZWQoKSxJPXkuaXNIb3Jpem9udGFsKCk/eS5oZWlnaHQoKS15Ll90aWNrU3BhY2VSZXF1aXJlZCgpOngsTj17eEFsaWduOndbeS5vcmllbnRhdGlvbigpXSx5QWxpZ246Q1t5Lm9yaWVudGF0aW9uKCldLHRleHRSb3RhdGlvbjp5LnRpY2tMYWJlbEFuZ2xlKCksdGV4dFNoZWFyOnkudGlja0xhYmVsU2hlYXJBbmdsZSgpfTtpZihudWxsIT15Ll90aWNrTGFiZWxNYXhXaWR0aCl7aWYoImxlZnQiPT09Cnkub3JpZW50YXRpb24oKSYmQj55Ll90aWNrTGFiZWxNYXhXaWR0aCl7dmFyIE89Qi15Ll90aWNrTGFiZWxNYXhXaWR0aDtPPUQuYXR0cigidHJhbnNmb3JtIikrIiB0cmFuc2xhdGUoIitPKyIsIDApIjtELmF0dHIoInRyYW5zZm9ybSIsTyl9Qj1NYXRoLm1pbihCLHkuX3RpY2tMYWJlbE1heFdpZHRoKX15Ll93cml0ZXIud3JpdGUoeS5mb3JtYXR0ZXIoKShGKSxCLEksTixELm5vZGUoKSl9KX07dS5wcm90b3R5cGUuX21lYXN1cmVUaWNrTGFiZWxzPWZ1bmN0aW9uKHgsQSl7dmFyIHk9dGhpcyx3PXRoaXMuX3NjYWxlLmNsb25lV2l0aG91dFByb3ZpZGVycygpLnJhbmdlKFswLHRoaXMuaXNIb3Jpem9udGFsKCk/eDpBXSksQz10aGlzLmdldERvd25zYW1wbGVJbmZvKHcpO3c9Qy5kb21haW47Qz1DLnN0ZXBXaWR0aDt2YXIgRj14LXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCk7dGhpcy5pc0hvcml6b250YWwoKSYmKEY9QywwIT09dGhpcy5fdGlja0xhYmVsQW5nbGUmJihGPUEtdGhpcy5fdGlja1NwYWNlUmVxdWlyZWQoKSksCkY9TWF0aC5tYXgoRiwwKSk7dmFyIEQ9Qzt0aGlzLmlzSG9yaXpvbnRhbCgpJiYoRD1BLXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCksMCE9PXRoaXMuX3RpY2tMYWJlbEFuZ2xlJiYoRD14LXRoaXMuX3RpY2tTcGFjZVJlcXVpcmVkKCkpLEQ9TWF0aC5tYXgoRCwwKSk7bnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4V2lkdGgmJihGPU1hdGgubWluKEYsdGhpcy5fdGlja0xhYmVsTWF4V2lkdGgpKTtBPXcubWFwKGZ1bmN0aW9uKEIpe3JldHVybiB5Ll93cmFwcGVyLndyYXAoeS5mb3JtYXR0ZXIoKShCKSx5Ll9tZWFzdXJlcixGLEQpfSk7eD10aGlzLmlzSG9yaXpvbnRhbCgpJiYwPT09dGhpcy5fdGlja0xhYmVsQW5nbGU/dC5zdW06bS5NYXRoLm1heDt3PXRoaXMuaXNIb3Jpem9udGFsKCkmJjA9PT10aGlzLl90aWNrTGFiZWxBbmdsZT9tLk1hdGgubWF4OnQuc3VtO3g9eChBLGZ1bmN0aW9uKEIpe3JldHVybiB5Ll9tZWFzdXJlci5tZWFzdXJlKEIud3JhcHBlZFRleHQpLndpZHRofSwwKTsKQT13KEEsZnVuY3Rpb24oQil7cmV0dXJuIHkuX21lYXN1cmVyLm1lYXN1cmUoQi53cmFwcGVkVGV4dCkuaGVpZ2h0fSwwKTswIT09dGhpcy5fdGlja0xhYmVsQW5nbGUmJihBPVtBLHhdLHg9QVswXSxBPUFbMV0pO3JldHVybnt1c2VkV2lkdGg6eCx1c2VkSGVpZ2h0OkF9fTt1LnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB4PXRoaXM7cS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgQT10aGlzLl9zY2FsZSx5PXRoaXMuZ2V0RG93bnNhbXBsZUluZm8oQSksdz15LmRvbWFpbixDPXk9eS5zdGVwV2lkdGg7dGhpcy5pc0hvcml6b250YWwoKSYmbnVsbCE9dGhpcy5fdGlja0xhYmVsTWF4V2lkdGgmJihDPU1hdGgubWluKEMsdGhpcy5fdGlja0xhYmVsTWF4V2lkdGgpKTt3PXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK24uQXhpcy5USUNLX0xBQkVMX0NMQVNTKS5kYXRhKHcpO3ZhciBGPXcuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKG4uQXhpcy5USUNLX0xBQkVMX0NMQVNTLAohMCkubWVyZ2Uodyk7dy5leGl0KCkucmVtb3ZlKCk7Ri5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEQpe3ZhciBCPUEuc2NhbGUoRCktQy8yO0Q9eC5pc0hvcml6b250YWwoKT9COjA7Qj14LmlzSG9yaXpvbnRhbCgpPzA6QjtyZXR1cm4idHJhbnNsYXRlKCIrRCsiLCIrQisiKSJ9KTtGLnRleHQoIiIpO3RoaXMuX2RyYXdUaWNrcyh5LEYpO3k9InJpZ2h0Ij09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjA7dz0iYm90dG9tIj09PXRoaXMub3JpZW50YXRpb24oKT90aGlzLl90aWNrU3BhY2VSZXF1aXJlZCgpOjA7dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3krIiwiK3crIikiKTt0aGlzLl9zaG93QWxsVGlja01hcmtzKCk7dGhpcy5fc2hvd0FsbFRpY2tMYWJlbHMoKTt0aGlzLl9oaWRlVGlja01hcmtzV2l0aG91dExhYmVsKCk7cmV0dXJuIHRoaXN9O3UucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9CmZ1bmN0aW9uKHgsQSx5KXtxLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyx4LEEseSk7dGhpcy5pc0hvcml6b250YWwoKXx8dGhpcy5fc2NhbGUucmFuZ2UoWzAsdGhpcy5oZWlnaHQoKV0pO3JldHVybiB0aGlzfTt1LnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGU9ZnVuY3Rpb24oKXtxLnByb3RvdHlwZS5pbnZhbGlkYXRlQ2FjaGUuY2FsbCh0aGlzKTt0aGlzLl9tZWFzdXJlci5yZXNldCgpfTtyZXR1cm4gdX0obi5BeGlzKTtkLl9NSU5JTVVNX1dJRFRIX1BFUl9MQUJFTF9QWD0xNTtmLkNhdGVnb3J5PWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocSx1KXtmdW5jdGlvbiB4KCl7dGhpcy5jb25zdHJ1Y3Rvcj1xfWZvcih2YXIgQSBpbiB1KXUuaGFzT3duUHJvcGVydHkoQSkmJihxW0FdPXVbQV0pO3EucHJvdG90eXBlPW51bGw9PT11P09iamVjdC5jcmVhdGUodSk6KHgucHJvdG90eXBlPXUucHJvdG90eXBlLG5ldyB4KX0sCnQ9aCgxKSxsPWgoNSkscD1oKDgpLG09aCgwKSxuPWgoMjIpO2Q9ZnVuY3Rpb24ocSl7ZnVuY3Rpb24gdSh4LEEpe3g9cS5jYWxsKHRoaXMseCxBKXx8dGhpczt4Ll90aWNrTGFiZWxQb3NpdGlvbmluZz0iY2VudGVyIjt4Ll91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj0hMTt4LmZvcm1hdHRlcihwLmdlbmVyYWwoKSk7cmV0dXJuIHh9ayh1LHEpO3UucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3EucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciB4PW5ldyBsLlN2Z0NvbnRleHQodGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLm5vZGUoKSxuLkF4aXMuVElDS19MQUJFTF9DTEFTUyk7dGhpcy5fbWVhc3VyZXI9bmV3IGwuQ2FjaGVNZWFzdXJlcih4KTt0aGlzLl93cmFwcGVyPShuZXcgbC5XcmFwcGVyKS5tYXhMaW5lcygxKX07dS5wcm90b3R5cGUuX2NvbXB1dGVXaWR0aD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuX3VzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uP3RoaXMuX2NvbXB1dGVBcHByb3hpbWF0ZVRleHRXaWR0aCgpOgp0aGlzLl9jb21wdXRlRXhhY3RUZXh0V2lkdGgoKTtyZXR1cm4iY2VudGVyIj09PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nP3RoaXMuX21heExhYmVsVGlja0xlbmd0aCgpK3RoaXMudGlja0xhYmVsUGFkZGluZygpK3g6TWF0aC5tYXgodGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCksdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkreCl9O3UucHJvdG90eXBlLl9jb21wdXRlRXhhY3RUZXh0V2lkdGg9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLEE9dGhpcy5fZ2V0VGlja1ZhbHVlcygpLm1hcChmdW5jdGlvbih5KXt5PXguZm9ybWF0dGVyKCkoeSk7cmV0dXJuIHguX21lYXN1cmVyLm1lYXN1cmUoeSkud2lkdGh9KTtyZXR1cm4gbS5NYXRoLm1heChBLDApfTt1LnByb3RvdHlwZS5fY29tcHV0ZUFwcHJveGltYXRlVGV4dFdpZHRoPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxBPXRoaXMuX2dldFRpY2tWYWx1ZXMoKSx5PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoIk0iKS53aWR0aDtBPUEubWFwKGZ1bmN0aW9uKHcpe3JldHVybiB4LmZvcm1hdHRlcigpKHcpLmxlbmd0aCoKeX0pO3JldHVybiBtLk1hdGgubWF4KEEsMCl9O3UucHJvdG90eXBlLl9jb21wdXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodDtyZXR1cm4iY2VudGVyIj09PXRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nP3RoaXMuX21heExhYmVsVGlja0xlbmd0aCgpK3RoaXMudGlja0xhYmVsUGFkZGluZygpK3g6TWF0aC5tYXgodGhpcy5fbWF4TGFiZWxUaWNrTGVuZ3RoKCksdGhpcy50aWNrTGFiZWxQYWRkaW5nKCkreCl9O3UucHJvdG90eXBlLl9nZXRUaWNrVmFsdWVzPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5fc2NhbGUsQT14LmRvbWFpbigpLHk9QVswXTw9QVsxXT9BWzBdOkFbMV0sdz1BWzBdPj1BWzFdP0FbMF06QVsxXTtyZXR1cm4geC50aWNrcygpLmZpbHRlcihmdW5jdGlvbihDKXtyZXR1cm4gQz49eSYmQzw9d30pfTt1LnByb3RvdHlwZS5fcmVzY2FsZT1mdW5jdGlvbigpe2lmKHRoaXMuX2lzU2V0dXApe2lmKCF0aGlzLmlzSG9yaXpvbnRhbCgpKXt2YXIgeD0KdGhpcy5fY29tcHV0ZVdpZHRoKCk7aWYoeD50aGlzLndpZHRoKCl8fHg8dGhpcy53aWR0aCgpLXRoaXMubWFyZ2luKCkpe3RoaXMucmVkcmF3KCk7cmV0dXJufX10aGlzLnJlbmRlcigpfX07dS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHk9ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3EucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dmFyIEE9e3g6MCx5OjAsZHg6IjBlbSIsZHk6IjAuM2VtIn0seT10aGlzLl9tYXhMYWJlbFRpY2tMZW5ndGgoKSx3PXRoaXMudGlja0xhYmVsUGFkZGluZygpLEM9Im1pZGRsZSIsRj0wLEQ9MCxCPTAsST0wO2lmKHRoaXMuaXNIb3Jpem9udGFsKCkpc3dpdGNoKHRoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nKXtjYXNlICJsZWZ0IjpDPSJlbmQiO0Y9LXc7ST13O2JyZWFrO2Nhc2UgImNlbnRlciI6ST15K3c7YnJlYWs7Y2FzZSAicmlnaHQiOkM9InN0YXJ0IixJPUY9d31lbHNlIHN3aXRjaCh0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyl7Y2FzZSAidG9wIjpBLmR5PQoiLTAuM2VtIjtCPXc7RD0tdzticmVhaztjYXNlICJjZW50ZXIiOkI9eSt3O2JyZWFrO2Nhc2UgImJvdHRvbSI6QS5keT0iMWVtIixEPUI9d315PXRoaXMuX2dlbmVyYXRlVGlja01hcmtBdHRySGFzaCgpO3N3aXRjaCh0aGlzLm9yaWVudGF0aW9uKCkpe2Nhc2UgImJvdHRvbSI6QS54PXkueDE7QS5keT0iMC45NWVtIjtEPXkueTErSTticmVhaztjYXNlICJ0b3AiOkEueD15LngxO0EuZHk9Ii0uMjVlbSI7RD15LnkxLUk7YnJlYWs7Y2FzZSAibGVmdCI6Qz0iZW5kIjtGPXkueDEtQjtBLnk9eS55MTticmVhaztjYXNlICJyaWdodCI6Qz0ic3RhcnQiLEY9eS54MStCLEEueT15LnkxfUI9dGhpcy5fZ2V0VGlja1ZhbHVlcygpO0I9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbi5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmRhdGEoQik7Qi5leGl0KCkucmVtb3ZlKCk7Qi5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmNsYXNzZWQobi5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MsCiEwKS5tZXJnZShCKS5zdHlsZSgidGV4dC1hbmNob3IiLEMpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaW5oZXJpdCIpLmF0dHJzKEEpLnRleHQoZnVuY3Rpb24oTil7cmV0dXJuIHguZm9ybWF0dGVyKCkoTil9KTt0aGlzLl90aWNrTGFiZWxDb250YWluZXIuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrRisiLCAiK0QrIikiKTt0aGlzLl9zaG93QWxsVGlja01hcmtzKCk7dGhpcy5zaG93RW5kVGlja0xhYmVscygpfHx0aGlzLl9oaWRlRW5kVGlja0xhYmVscygpO3RoaXMuX2hpZGVPdmVyZmxvd2luZ1RpY2tMYWJlbHMoKTt0aGlzLl9oaWRlT3ZlcmxhcHBpbmdUaWNrTGFiZWxzKCk7ImNlbnRlciIhPT10aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZyYmdGhpcy5faGlkZVRpY2tNYXJrc1dpdGhvdXRMYWJlbCgpO3JldHVybiB0aGlzfTt1LnByb3RvdHlwZS50aWNrTGFiZWxQb3NpdGlvbj1mdW5jdGlvbih4KXtpZihudWxsPT14KXJldHVybiB0aGlzLl90aWNrTGFiZWxQb3NpdGlvbmluZzsKeD14LnRvTG93ZXJDYXNlKCk7aWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYoImxlZnQiIT09eCYmImNlbnRlciIhPT14JiYicmlnaHQiIT09eCl0aHJvdyBFcnJvcih4KyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSBob3Jpem9udGFsIE51bWVyaWNBeGlzIik7fWVsc2UgaWYoInRvcCIhPT14JiYiY2VudGVyIiE9PXgmJiJib3R0b20iIT09eCl0aHJvdyBFcnJvcih4KyIgaXMgbm90IGEgdmFsaWQgdGljayBsYWJlbCBwb3NpdGlvbiBmb3IgYSB2ZXJ0aWNhbCBOdW1lcmljQXhpcyIpO3RoaXMuX3RpY2tMYWJlbFBvc2l0aW9uaW5nPXg7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307dS5wcm90b3R5cGUudXNlc1RleHRXaWR0aEFwcHJveGltYXRpb249ZnVuY3Rpb24oKXt0aGlzLl91c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbj0hMH07dS5wcm90b3R5cGUuX2hpZGVFbmRUaWNrTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5lbGVtZW50KCkubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLApBPXRoaXMuX3RpY2tMYWJlbENvbnRhaW5lci5zZWxlY3RBbGwoIi4iK24uQXhpcy5USUNLX0xBQkVMX0NMQVNTKTtpZigwIT09QS5zaXplKCkpe3ZhciB5PUEubm9kZXMoKVswXTttLkRPTS5jbGllbnRSZWN0SW5zaWRlKHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseCl8fHQuc2VsZWN0KHkpLnN0eWxlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7QT1BLm5vZGVzKClbQS5zaXplKCktMV07bS5ET00uY2xpZW50UmVjdEluc2lkZShBLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHgpfHx0LnNlbGVjdChBKS5zdHlsZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpfX07dS5wcm90b3R5cGUuX2hpZGVPdmVybGFwcGluZ1RpY2tMYWJlbHM9ZnVuY3Rpb24oKXtmb3IodmFyIHg9dGhpcy5fdGlja0xhYmVsQ29udGFpbmVyLnNlbGVjdEFsbCgiLiIrbi5BeGlzLlRJQ0tfTEFCRUxfQ0xBU1MpLmZpbHRlcihmdW5jdGlvbigpe3ZhciB3PXQuc2VsZWN0KHRoaXMpLnN0eWxlKCJ2aXNpYmlsaXR5Iik7cmV0dXJuImluaGVyaXQiPT09Cnd8fCJ2aXNpYmxlIj09PXd9KSxBPXgubm9kZXMoKS5tYXAoZnVuY3Rpb24odyl7cmV0dXJuIHcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9KSx5PTE7IXRoaXMuX2hhc092ZXJsYXBXaXRoSW50ZXJ2YWwoeSxBKSYmeTxBLmxlbmd0aDspeSs9MTt4LmVhY2goZnVuY3Rpb24odyxDKXt3PXQuc2VsZWN0KHRoaXMpOzAhPT1DJXkmJncuc3R5bGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKX0pfTt1LnByb3RvdHlwZS5faGFzT3ZlcmxhcFdpdGhJbnRlcnZhbD1mdW5jdGlvbih4LEEpe3ZhciB5PSJjZW50ZXIiPT09dGhpcy5fdGlja0xhYmVsUG9zaXRpb25pbmc/dGhpcy50aWNrTGFiZWxQYWRkaW5nKCk6Myp0aGlzLnRpY2tMYWJlbFBhZGRpbmcoKTtBPUEubWFwKGZ1bmN0aW9uKEMpe3JldHVybiBtLkRPTS5leHBhbmRSZWN0KEMseSl9KTtmb3IodmFyIHc9MDt3PEEubGVuZ3RoLXg7dys9eClpZihtLkRPTS5jbGllbnRSZWN0c092ZXJsYXAoQVt3XSxBW3creF0pKXJldHVybiExO3JldHVybiEwfTsKdS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7cS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyk7dGhpcy5fbWVhc3VyZXIucmVzZXQoKX07cmV0dXJuIHV9KG4uQXhpcyk7Zi5OdW1lcmljPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX07ZD1oKDQyKTt2YXIgdD1oKDI1KSxsPWgoMCk7aD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKG4pe2Z1bmN0aW9uIHEoKXt3JiYodz0hMSx5Ll9kcmFnRW5kQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoeSkpfWZ1bmN0aW9uIHUoQyxGKXt3JiYoeS5fc2V0UGl4ZWxQb3NpdGlvbldpdGhvdXRDaGFuZ2luZ01vZGUoeS5faXNWZXJ0aWNhbCgpPwpGLng6Ri55KSx5Ll9kcmFnQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoeSkpfWZ1bmN0aW9uIHgoQyl7QShDKSYmKHc9ITAseS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmNhbGxDYWxsYmFja3MoeSkpfWZ1bmN0aW9uIEEoQyl7cmV0dXJuIHkuX2lzVmVydGljYWwoKSYmeS5waXhlbFBvc2l0aW9uKCkteS5kZXRlY3Rpb25SYWRpdXMoKTw9Qy54JiZDLng8PXkucGl4ZWxQb3NpdGlvbigpK3kuZGV0ZWN0aW9uUmFkaXVzKCl8fCF5Ll9pc1ZlcnRpY2FsKCkmJnkucGl4ZWxQb3NpdGlvbigpLXkuZGV0ZWN0aW9uUmFkaXVzKCk8PUMueSYmQy55PD15LnBpeGVsUG9zaXRpb24oKSt5LmRldGVjdGlvblJhZGl1cygpfXZhciB5PXAuY2FsbCh0aGlzLG4pfHx0aGlzO3kuX2RldGVjdGlvblJhZGl1cz0zO3kuX2VuYWJsZWQ9ITA7eS5hZGRDbGFzcygiZHJhZy1saW5lLWxheWVyIik7eS5hZGRDbGFzcygiZW5hYmxlZCIpO3kuX2RyYWdJbnRlcmFjdGlvbj1uZXcgdC5EcmFnO3kuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyh5KTsKdmFyIHc9ITE7eS5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ1N0YXJ0KHgpO3kuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWcodSk7eS5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChxKTt5Ll9kaXNjb25uZWN0SW50ZXJhY3Rpb249ZnVuY3Rpb24oKXt5Ll9kcmFnSW50ZXJhY3Rpb24ub2ZmRHJhZ1N0YXJ0KHgpO3kuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnKHUpO3kuX2RyYWdJbnRlcmFjdGlvbi5vZmZEcmFnRW5kKHEpO3kuX2RyYWdJbnRlcmFjdGlvbi5kZXRhY2goKX07eS5fZHJhZ1N0YXJ0Q2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O3kuX2RyYWdDYWxsYmFja3M9bmV3IGwuQ2FsbGJhY2tTZXQ7eS5fZHJhZ0VuZENhbGxiYWNrcz1uZXcgbC5DYWxsYmFja1NldDtyZXR1cm4geX1rKG0scCk7bS5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dGhpcy5fZGV0ZWN0aW9uRWRnZT10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImxpbmUiKS5zdHlsZXMoe29wYWNpdHk6MCwKc3Ryb2tlOiJwaW5rIiwicG9pbnRlci1ldmVudHMiOiJ2aXNpYmxlU3Ryb2tlIn0pLmNsYXNzZWQoImRyYWctZWRnZSIsITApfTttLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3AucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dGhpcy5fZGV0ZWN0aW9uRWRnZS5hdHRycyh7eDE6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOjAseTE6dGhpcy5faXNWZXJ0aWNhbCgpPzA6dGhpcy5waXhlbFBvc2l0aW9uKCkseDI6dGhpcy5faXNWZXJ0aWNhbCgpP3RoaXMucGl4ZWxQb3NpdGlvbigpOnRoaXMud2lkdGgoKSx5Mjp0aGlzLl9pc1ZlcnRpY2FsKCk/dGhpcy5oZWlnaHQoKTp0aGlzLnBpeGVsUG9zaXRpb24oKSwic3Ryb2tlLXdpZHRoIjoyKnRoaXMuX2RldGVjdGlvblJhZGl1c30pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5kZXRlY3Rpb25SYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGV0ZWN0aW9uUmFkaXVzfTsKbS5wcm90b3R5cGUuZW5hYmxlZD1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl9lbmFibGVkOyh0aGlzLl9lbmFibGVkPW4pP3RoaXMuYWRkQ2xhc3MoImVuYWJsZWQiKTp0aGlzLnJlbW92ZUNsYXNzKCJlbmFibGVkIik7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmVuYWJsZWQobik7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9uRHJhZ1N0YXJ0PWZ1bmN0aW9uKG4pe3RoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5hZGQobil9O20ucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbihuKXt0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZGVsZXRlKG4pfTttLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ0NhbGxiYWNrcy5hZGQobik7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ0NhbGxiYWNrcy5kZWxldGUobil9O20ucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbihuKXt0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmFkZChuKX07Cm0ucHJvdG90eXBlLm9mZkRyYWdFbmQ9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ0VuZENhbGxiYWNrcy5kZWxldGUobil9O20ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3AucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTt0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbihxKXtyZXR1cm4gbi5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmRlbGV0ZShxKX0pO3RoaXMuX2RyYWdDYWxsYmFja3MuZm9yRWFjaChmdW5jdGlvbihxKXtyZXR1cm4gbi5fZHJhZ0NhbGxiYWNrcy5kZWxldGUocSl9KTt0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24ocSl7cmV0dXJuIG4uX2RyYWdFbmRDYWxsYmFja3MuZGVsZXRlKHEpfSk7dGhpcy5fZGlzY29ubmVjdEludGVyYWN0aW9uKCl9O3JldHVybiBtfShkLkd1aWRlTGluZUxheWVyKTtmLkRyYWdMaW5lTGF5ZXI9aH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsobCxwLG0pe3ZhciBuPQp7fTtpZih2b2lkIDAhPT1tKWZvcih2YXIgcT0wO3E8bS5sZW5ndGg7cSsrKW5bbVtxXV09bVtxLTFdO3JldHVybiBmdW5jdGlvbih1KXt2YXIgeD1sLnNjYWxlKHUpO2lmKCFwKXJldHVybiB4O3ZhciBBO3U9dm9pZCAwPT09blt1XT92b2lkIDA6bC5zY2FsZShuW3VdKTt2b2lkIDAhPT11JiYoQT11Kyh4LXUpLzIpO3JldHVybiBBfX12YXIgdD10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obCxwKXtmdW5jdGlvbiBtKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sfWZvcih2YXIgbiBpbiBwKXAuaGFzT3duUHJvcGVydHkobikmJihsW25dPXBbbl0pO2wucHJvdG90eXBlPW51bGw9PT1wP09iamVjdC5jcmVhdGUocCk6KG0ucHJvdG90eXBlPXAucHJvdG90eXBlLG5ldyBtKX07ZD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKG0sbil7dmFyIHE9bC5jYWxsKHRoaXMpfHx0aGlzO3EuYWRkQ2xhc3MoImdyaWRsaW5lcyIpO3EuX3hTY2FsZT1tO3EuX3lTY2FsZT1uO3EuX3JlbmRlckNhbGxiYWNrPQpmdW5jdGlvbigpe3JldHVybiBxLnJlbmRlcigpfTtpZihxLl94U2NhbGUpcS5feFNjYWxlLm9uVXBkYXRlKHEuX3JlbmRlckNhbGxiYWNrKTtpZihxLl95U2NhbGUpcS5feVNjYWxlLm9uVXBkYXRlKHEuX3JlbmRlckNhbGxiYWNrKTtyZXR1cm4gcX10KHAsbCk7cC5wcm90b3R5cGUuYmV0d2Vlblg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmV0d2Vlblh9O3AucHJvdG90eXBlLmJldHdlZW5ZPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2JldHdlZW5ZfTtwLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7bC5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO3RoaXMuX3hTY2FsZSYmdGhpcy5feFNjYWxlLm9mZlVwZGF0ZSh0aGlzLl9yZW5kZXJDYWxsYmFjayk7dGhpcy5feVNjYWxlJiZ0aGlzLl95U2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlbmRlckNhbGxiYWNrKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7bC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7CnRoaXMuX3hMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ4LWdyaWRsaW5lcyIsITApO3RoaXMuX3lMaW5lc0NvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKCJ5LWdyaWRsaW5lcyIsITApfTtwLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe2wucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5LmNhbGwodGhpcyk7dGhpcy5fcmVkcmF3WExpbmVzKCk7dGhpcy5fcmVkcmF3WUxpbmVzKCk7cmV0dXJuIHRoaXN9O3AucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24obSxuLHEpe2wucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLG0sbixxKTtudWxsIT10aGlzLl94U2NhbGUmJnRoaXMuX3hTY2FsZS5yYW5nZShbMCx0aGlzLndpZHRoKCldKTtudWxsIT10aGlzLl95U2NhbGUmJnRoaXMuX3lTY2FsZS5yYW5nZShbdGhpcy5oZWlnaHQoKSwwXSk7cmV0dXJuIHRoaXN9OwpwLnByb3RvdHlwZS5fcmVkcmF3WExpbmVzPWZ1bmN0aW9uKCl7aWYodGhpcy5feFNjYWxlKXt2YXIgbT10aGlzLmJldHdlZW5YKCksbj10aGlzLl94U2NhbGUudGlja3MoKS5zbGljZShtPzE6MCk7bj10aGlzLl94TGluZXNDb250YWluZXIuc2VsZWN0QWxsKCJsaW5lIikuZGF0YShuKTtuLmVudGVyKCkuYXBwZW5kKCJsaW5lIikubWVyZ2UobikuYXR0cigieDEiLGsodGhpcy5feFNjYWxlLG0sdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MSIsMCkuYXR0cigieDIiLGsodGhpcy5feFNjYWxlLG0sdGhpcy5feFNjYWxlLnRpY2tzKCkpKS5hdHRyKCJ5MiIsdGhpcy5oZWlnaHQoKSkuY2xhc3NlZCgiYmV0d2VlbmxpbmUiLG0pLmNsYXNzZWQoInplcm9saW5lIixmdW5jdGlvbihxKXtyZXR1cm4gMD09PXF9KTtuLmV4aXQoKS5yZW1vdmUoKX19O3AucHJvdG90eXBlLl9yZWRyYXdZTGluZXM9ZnVuY3Rpb24oKXtpZih0aGlzLl95U2NhbGUpe3ZhciBtPXRoaXMuYmV0d2VlblkoKSwKbj10aGlzLl95U2NhbGUudGlja3MoKS5zbGljZShtPzE6MCk7bj10aGlzLl95TGluZXNDb250YWluZXIuc2VsZWN0QWxsKCJsaW5lIikuZGF0YShuKTtuLmVudGVyKCkuYXBwZW5kKCJsaW5lIikubWVyZ2UobikuYXR0cigieDEiLDApLmF0dHIoInkxIixrKHRoaXMuX3lTY2FsZSxtLHRoaXMuX3lTY2FsZS50aWNrcygpKSkuYXR0cigieDIiLHRoaXMud2lkdGgoKSkuYXR0cigieTIiLGsodGhpcy5feVNjYWxlLG0sdGhpcy5feVNjYWxlLnRpY2tzKCkpKS5jbGFzc2VkKCJiZXR3ZWVubGluZSIsbSkuY2xhc3NlZCgiemVyb2xpbmUiLGZ1bmN0aW9uKHEpe3JldHVybiAwPT09cX0pO24uZXhpdCgpLnJlbW92ZSgpfX07cmV0dXJuIHB9KGgoNCkuQ29tcG9uZW50KTtmLkdyaWRsaW5lcz1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKG4scSl7ZnVuY3Rpb24gdSgpe3RoaXMuY29uc3RydWN0b3I9bn1mb3IodmFyIHggaW4gcSlxLmhhc093blByb3BlcnR5KHgpJiYKKG5beF09cVt4XSk7bi5wcm90b3R5cGU9bnVsbD09PXE/T2JqZWN0LmNyZWF0ZShxKToodS5wcm90b3R5cGU9cS5wcm90b3R5cGUsbmV3IHUpfSx0PWgoNSksbD1oKDIzKSxwPWgoOCksbT1oKDApO2Q9ZnVuY3Rpb24obil7ZnVuY3Rpb24gcSh1KXt2YXIgeD1uLmNhbGwodGhpcyl8fHRoaXM7eC5fdGV4dFBhZGRpbmc9NTtpZihudWxsPT11KXRocm93IEVycm9yKCJJbnRlcnBvbGF0ZWRDb2xvckxlZ2VuZCByZXF1aXJlcyBhIGludGVycG9sYXRlZENvbG9yU2NhbGUiKTt4Ll9zY2FsZT11O3guX3JlZHJhd0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIHgucmVkcmF3KCl9O3guX3NjYWxlLm9uVXBkYXRlKHguX3JlZHJhd0NhbGxiYWNrKTt4Ll9mb3JtYXR0ZXI9cC5nZW5lcmFsKCk7eC5fb3JpZW50YXRpb249Imhvcml6b250YWwiO3guX2V4cGFuZHM9ITE7eC5hZGRDbGFzcygibGVnZW5kIik7eC5hZGRDbGFzcygiaW50ZXJwb2xhdGVkLWNvbG9yLWxlZ2VuZCIpO3JldHVybiB4fWsocSwKbik7cS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe24ucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKTt0aGlzLl9zY2FsZS5vZmZVcGRhdGUodGhpcy5fcmVkcmF3Q2FsbGJhY2spfTtxLnByb3RvdHlwZS5mb3JtYXR0ZXI9ZnVuY3Rpb24odSl7aWYodm9pZCAwPT09dSlyZXR1cm4gdGhpcy5fZm9ybWF0dGVyO3RoaXMuX2Zvcm1hdHRlcj11O3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O3EucHJvdG90eXBlLmV4cGFuZHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZXhwYW5kc307cS5fZW5zdXJlT3JpZW50YXRpb249ZnVuY3Rpb24odSl7dT11LnRvTG93ZXJDYXNlKCk7aWYoImhvcml6b250YWwiPT09dXx8ImxlZnQiPT09dXx8InJpZ2h0Ij09PXUpcmV0dXJuIHU7dGhyb3cgRXJyb3IoJyInK3UrJyIgaXMgbm90IGEgdmFsaWQgb3JpZW50YXRpb24gZm9yIEludGVycG9sYXRlZENvbG9yTGVnZW5kJyk7fTtxLnByb3RvdHlwZS5vcmllbnRhdGlvbj1mdW5jdGlvbih1KXtpZihudWxsPT0KdSlyZXR1cm4gdGhpcy5fb3JpZW50YXRpb247dGhpcy5fb3JpZW50YXRpb249cS5fZW5zdXJlT3JpZW50YXRpb24odSk7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307cS5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8dGhpcy5faXNWZXJ0aWNhbCgpfTtxLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmV4cGFuZHMoKXx8IXRoaXMuX2lzVmVydGljYWwoKX07cS5wcm90b3R5cGUuX2dlbmVyYXRlVGlja3M9ZnVuY3Rpb24odSl7dm9pZCAwPT09dSYmKHU9cS5fREVGQVVMVF9OVU1fU1dBVENIRVMpO3ZhciB4PXRoaXMuX3NjYWxlLmRvbWFpbigpO2lmKDE9PT11KXJldHVyblt4WzBdXTtmb3IodmFyIEE9KHhbMV0teFswXSkvKHUtMSkseT1bXSx3PTA7dzx1O3crKyl5LnB1c2goeFswXStBKncpO3JldHVybiB5fTtxLnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXtuLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTsKdGhpcy5fc3dhdGNoQ29udGFpbmVyPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoInN3YXRjaC1jb250YWluZXIiLCEwKTt0aGlzLl9zd2F0Y2hCb3VuZGluZ0JveD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzd2F0Y2gtYm91bmRpbmctYm94IiwhMCk7dGhpcy5fbG93ZXJMYWJlbD10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKS5jbGFzc2VkKHEuTEVHRU5EX0xBQkVMX0NMQVNTLCEwKTt0aGlzLl91cHBlckxhYmVsPXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQocS5MRUdFTkRfTEFCRUxfQ0xBU1MsITApO3ZhciB1PW5ldyB0LlN2Z0NvbnRleHQodGhpcy5jb250ZW50KCkubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgdC5NZWFzdXJlcih1KTt0aGlzLl93cmFwcGVyPW5ldyB0LldyYXBwZXI7dGhpcy5fd3JpdGVyPW5ldyB0LldyaXRlcih0aGlzLl9tZWFzdXJlcix1LHRoaXMuX3dyYXBwZXIpfTtxLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT0KZnVuY3Rpb24oKXt2YXIgdT10aGlzLHg9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxBPXRoaXMuX3NjYWxlLmRvbWFpbigpLm1hcChmdW5jdGlvbihDKXtyZXR1cm4gdS5fbWVhc3VyZXIubWVhc3VyZSh1Ll9mb3JtYXR0ZXIoQykpLndpZHRofSkseT1xLl9ERUZBVUxUX05VTV9TV0FUQ0hFUztpZih0aGlzLl9pc1ZlcnRpY2FsKCkpe3ZhciB3PW0uTWF0aC5tYXgoQSwwKTtBPXgreCt0aGlzLl90ZXh0UGFkZGluZyt3K3RoaXMuX3RleHRQYWRkaW5nO3c9eSp4fWVsc2Ugdz14K3greCxBPXRoaXMuX3RleHRQYWRkaW5nK0FbMF0reSp4K0FbMV0rdGhpcy5fdGV4dFBhZGRpbmc7cmV0dXJue21pbldpZHRoOkEsbWluSGVpZ2h0Ond9fTtxLnByb3RvdHlwZS5faXNWZXJ0aWNhbD1mdW5jdGlvbigpe3JldHVybiJob3Jpem9udGFsIiE9PXRoaXMuX29yaWVudGF0aW9ufTtxLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT1mdW5jdGlvbigpe3ZhciB1PXRoaXM7bi5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTsKdmFyIHg9dGhpcy5fc2NhbGUuZG9tYWluKCksQT10aGlzLl9mb3JtYXR0ZXIoeFswXSkseT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKEEpLndpZHRoLHc9dGhpcy5fZm9ybWF0dGVyKHhbMV0pO3g9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSh3KS53aWR0aDt2YXIgQz10aGlzLl9tZWFzdXJlci5tZWFzdXJlKCkuaGVpZ2h0LEY9dGhpcy5fdGV4dFBhZGRpbmcsRD0wLEI9MCxJPTAsTj0wLE89e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LEg9e3hBbGlnbjoiY2VudGVyIix5QWxpZ246ImNlbnRlciIsdGV4dFJvdGF0aW9uOjB9LEs9e3g6MCx5OjAsd2lkdGg6MCxoZWlnaHQ6MH07aWYodGhpcy5faXNWZXJ0aWNhbCgpKXt2YXIgTT1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KCkpO3ZhciBMPU1hdGgubWF4KHkseCk7dmFyIFE9KHRoaXMud2lkdGgoKS1MLTIqdGhpcy5fdGV4dFBhZGRpbmcpLzI7eD1NYXRoLm1heCh0aGlzLndpZHRoKCktUS0yKkYtTCwwKTsKQz0xO3ZhciBUPWZ1bmN0aW9uKGFhLGxhKXtyZXR1cm4gdS5oZWlnaHQoKS0obGErMSl9O0gueUFsaWduPSJ0b3AiO0I9MDtPLnlBbGlnbj0iYm90dG9tIjtOPTA7aWYoImxlZnQiPT09dGhpcy5fb3JpZW50YXRpb24pe3ZhciBYPWZ1bmN0aW9uKCl7cmV0dXJuIEYrTCtGfTtILnhBbGlnbj0icmlnaHQiO0Q9LShRK3grRik7Ty54QWxpZ249InJpZ2h0IjtJPS0oUSt4K0YpfWVsc2UgWD1mdW5jdGlvbigpe3JldHVybiBRfSxILnhBbGlnbj0ibGVmdCIsRD1RK3grRixPLnhBbGlnbj0ibGVmdCIsST1RK3grRjtLLndpZHRoPXg7Sy5oZWlnaHQ9TSpDfWVsc2UgUT1NYXRoLm1heChGLCh0aGlzLmhlaWdodCgpLUMpLzIpLE09TWF0aC5tYXgoTWF0aC5mbG9vcih0aGlzLndpZHRoKCktNCpGLXkteCksMCkseD0xLEM9TWF0aC5tYXgodGhpcy5oZWlnaHQoKS0yKlEsMCksWD1mdW5jdGlvbihhYSxsYSl7cmV0dXJuIE1hdGguZmxvb3IoeSsyKkYpK2xhfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIFF9LApILnhBbGlnbj0icmlnaHQiLEQ9LUYsTy54QWxpZ249ImxlZnQiLEk9RixLLnk9USxLLndpZHRoPU0qeCxLLmhlaWdodD1DO0sueD1YKG51bGwsMCk7dGhpcy5fdXBwZXJMYWJlbC50ZXh0KCIiKTt0aGlzLl93cml0ZXIud3JpdGUodyx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxILHRoaXMuX3VwcGVyTGFiZWwubm9kZSgpKTt0aGlzLl91cHBlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0QrIiwgIitCKyIpIik7dGhpcy5fbG93ZXJMYWJlbC50ZXh0KCIiKTt0aGlzLl93cml0ZXIud3JpdGUoQSx0aGlzLndpZHRoKCksdGhpcy5oZWlnaHQoKSxPLHRoaXMuX2xvd2VyTGFiZWwubm9kZSgpKTt0aGlzLl9sb3dlckxhYmVsLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0krIiwgIitOKyIpIik7dGhpcy5fc3dhdGNoQm91bmRpbmdCb3guYXR0cnMoSyk7QT10aGlzLl9nZW5lcmF0ZVRpY2tzKE0pO0E9dGhpcy5fc3dhdGNoQ29udGFpbmVyLnNlbGVjdEFsbCgicmVjdC5zd2F0Y2giKS5kYXRhKEEpOwp3PUEuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5jbGFzc2VkKCJzd2F0Y2giLCEwKTtEPUEubWVyZ2Uodyk7QS5leGl0KCkucmVtb3ZlKCk7RC5hdHRycyh7ZmlsbDpmdW5jdGlvbihhYSl7cmV0dXJuIHUuX3NjYWxlLnNjYWxlKGFhKX0sd2lkdGg6eCxoZWlnaHQ6Qyx4OlgseTpULCJzaGFwZS1yZW5kZXJpbmciOiJjcmlzcEVkZ2VzIn0pO2wuQUREX1RJVExFX0VMRU1FTlRTJiZ3LmFwcGVuZCgidGl0bGUiKS50ZXh0KGZ1bmN0aW9uKGFhKXtyZXR1cm4gdS5fZm9ybWF0dGVyKGFhKX0pO3JldHVybiB0aGlzfTtyZXR1cm4gcX0oaCg0KS5Db21wb25lbnQpO2QuX0RFRkFVTFRfTlVNX1NXQVRDSEVTPTExO2QuTEVHRU5EX0xBQkVMX0NMQVNTPSJsZWdlbmQtbGFiZWwiO2YuSW50ZXJwb2xhdGVkQ29sb3JMZWdlbmQ9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihsLHApe2Z1bmN0aW9uIG0oKXt0aGlzLmNvbnN0cnVjdG9yPWx9Zm9yKHZhciBuIGluIHApcC5oYXNPd25Qcm9wZXJ0eShuKSYmCihsW25dPXBbbl0pO2wucHJvdG90eXBlPW51bGw9PT1wP09iamVjdC5jcmVhdGUocCk6KG0ucHJvdG90eXBlPXAucHJvdG90eXBlLG5ldyBtKX0sdD1oKDUpO2Q9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gcChtLG4pe3ZvaWQgMD09PW0mJihtPSIiKTt2b2lkIDA9PT1uJiYobj0wKTt2YXIgcT1sLmNhbGwodGhpcyl8fHRoaXM7cS5hZGRDbGFzcygibGFiZWwiKTtxLnRleHQobSk7cS5hbmdsZShuKTtxLnhBbGlnbm1lbnQoImNlbnRlciIpLnlBbGlnbm1lbnQoImNlbnRlciIpO3EuX3BhZGRpbmc9MDtyZXR1cm4gcX1rKHAsbCk7cC5wcm90b3R5cGUucmVxdWVzdGVkU3BhY2U9ZnVuY3Rpb24oKXt2YXIgbT10aGlzLl9tZWFzdXJlci5tZWFzdXJlKHRoaXMuX3RleHQpLG49KDA9PT10aGlzLmFuZ2xlKCk/bS53aWR0aDptLmhlaWdodCkrMip0aGlzLnBhZGRpbmcoKTttPSgwPT09dGhpcy5hbmdsZSgpP20uaGVpZ2h0Om0ud2lkdGgpKzIqdGhpcy5wYWRkaW5nKCk7cmV0dXJue21pbldpZHRoOm4sCm1pbkhlaWdodDptfX07cC5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7bC5wcm90b3R5cGUuX3NldHVwLmNhbGwodGhpcyk7dGhpcy5fdGV4dENvbnRhaW5lcj10aGlzLmNvbnRlbnQoKS5hcHBlbmQoImciKTt2YXIgbT1uZXcgdC5TdmdDb250ZXh0KHRoaXMuX3RleHRDb250YWluZXIubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgdC5DYWNoZU1lYXN1cmVyKG0pO3RoaXMuX3dyYXBwZXI9bmV3IHQuV3JhcHBlcjt0aGlzLl93cml0ZXI9bmV3IHQuV3JpdGVyKHRoaXMuX21lYXN1cmVyLG0sdGhpcy5fd3JhcHBlcik7dGhpcy50ZXh0KHRoaXMuX3RleHQpfTtwLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKG0pe2lmKG51bGw9PW0pcmV0dXJuIHRoaXMuX3RleHQ7aWYoInN0cmluZyIhPT10eXBlb2YgbSl0aHJvdyBFcnJvcigiTGFiZWwudGV4dCgpIG9ubHkgdGFrZXMgc3RyaW5ncyBhcyBpbnB1dCIpO3RoaXMuX3RleHQ9bTt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5hbmdsZT0KZnVuY3Rpb24obSl7aWYobnVsbD09bSlyZXR1cm4gdGhpcy5fYW5nbGU7bSU9MzYwOzE4MDxtP20tPTM2MDotMTgwPm0mJihtKz0zNjApO2lmKC05MD09PW18fDA9PT1tfHw5MD09PW0pdGhpcy5fYW5nbGU9bTtlbHNlIHRocm93IEVycm9yKG0rIiBpcyBub3QgYSB2YWxpZCBhbmdsZSBmb3IgTGFiZWwiKTt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5wYWRkaW5nPWZ1bmN0aW9uKG0pe2lmKG51bGw9PW0pcmV0dXJuIHRoaXMuX3BhZGRpbmc7bT0rbTtpZigwPm0pdGhyb3cgRXJyb3IobSsiIGlzIG5vdCBhIHZhbGlkIHBhZGRpbmcgdmFsdWUuIENhbm5vdCBiZSBsZXNzIHRoYW4gMC4iKTt0aGlzLl9wYWRkaW5nPW07dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuZml4ZWRXaWR0aD1mdW5jdGlvbigpe3JldHVybiEwfTtwLnByb3RvdHlwZS5maXhlZEhlaWdodD1mdW5jdGlvbigpe3JldHVybiEwfTtwLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseT0KZnVuY3Rpb24oKXtsLnByb3RvdHlwZS5yZW5kZXJJbW1lZGlhdGVseS5jYWxsKHRoaXMpO3RoaXMuX3RleHRDb250YWluZXIuc2VsZWN0QWxsKCJnIikucmVtb3ZlKCk7dmFyIG09dGhpcy5fbWVhc3VyZXIubWVhc3VyZSh0aGlzLl90ZXh0KSxuPU1hdGgubWF4KE1hdGgubWluKCh0aGlzLmhlaWdodCgpLW0uaGVpZ2h0KS8yLHRoaXMucGFkZGluZygpKSwwKTttPU1hdGgubWF4KE1hdGgubWluKCh0aGlzLndpZHRoKCktbS53aWR0aCkvMix0aGlzLnBhZGRpbmcoKSksMCk7dGhpcy5fdGV4dENvbnRhaW5lci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIittKyIsIituKyIpIik7bT10aGlzLndpZHRoKCktMiptO249dGhpcy5oZWlnaHQoKS0yKm47dmFyIHE9e3hBbGlnbjp0aGlzLnhBbGlnbm1lbnQoKSx5QWxpZ246dGhpcy55QWxpZ25tZW50KCksdGV4dFJvdGF0aW9uOnRoaXMuYW5nbGUoKX07dGhpcy5fd3JpdGVyLndyaXRlKHRoaXMuX3RleHQsbSxuLHEpO3JldHVybiB0aGlzfTsKcC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7bC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyk7dGhpcy5fbWVhc3VyZXIucmVzZXQoKX07cmV0dXJuIHB9KGgoNCkuQ29tcG9uZW50KTtmLkxhYmVsPWQ7aD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKG0sbil7bT1sLmNhbGwodGhpcyxtLG4pfHx0aGlzO20uYWRkQ2xhc3MocC5USVRMRV9MQUJFTF9DTEFTUyk7cmV0dXJuIG19ayhwLGwpO3JldHVybiBwfShkKTtoLlRJVExFX0xBQkVMX0NMQVNTPSJ0aXRsZS1sYWJlbCI7Zi5UaXRsZUxhYmVsPWg7ZD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKG0sbil7bT1sLmNhbGwodGhpcyxtLG4pfHx0aGlzO20uYWRkQ2xhc3MocC5BWElTX0xBQkVMX0NMQVNTKTtyZXR1cm4gbX1rKHAsbCk7cmV0dXJuIHB9KGQpO2QuQVhJU19MQUJFTF9DTEFTUz0iYXhpcy1sYWJlbCI7Zi5BeGlzTGFiZWw9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHwKZnVuY3Rpb24oQSx5KXtmdW5jdGlvbiB3KCl7dGhpcy5jb25zdHJ1Y3Rvcj1BfWZvcih2YXIgQyBpbiB5KXkuaGFzT3duUHJvcGVydHkoQykmJihBW0NdPXlbQ10pO0EucHJvdG90eXBlPW51bGw9PT15P09iamVjdC5jcmVhdGUoeSk6KHcucHJvdG90eXBlPXkucHJvdG90eXBlLG5ldyB3KX0sdD1oKDEpLGw9aCg1KSxwPWgoMjMpLG09aCg4KSxuPWgoMzEpLHE9aCgwKTtkPWgoNCk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKHksdyxDKXt2b2lkIDA9PT15JiYoeT1bXSk7dm9pZCAwPT09dyYmKHc9MCk7dm9pZCAwPT09QyYmKEM9SW5maW5pdHkpO3RoaXMuY29sdW1ucz15O3RoaXMuYm90dG9tUGFkZGluZz13O3RoaXMubWF4V2lkdGg9Q31BLnByb3RvdHlwZS5hZGRDb2x1bW49ZnVuY3Rpb24oeSl7dmFyIHc9eS53aWR0aCxDPXRoaXMuZ2V0V2lkdGhBdmFpbGFibGUoKTt5LndpZHRoPU1hdGgubWluKEMsdyk7dGhpcy5jb2x1bW5zLnB1c2goeSl9O0EucHJvdG90eXBlLmdldEJvdW5kcz0KZnVuY3Rpb24oeSl7Zm9yKHZhciB3PXRoaXMuY29sdW1uc1t5XSxDPTAsRj0wO0Y8eTtGKyspQys9dGhpcy5jb2x1bW5zW0ZdLndpZHRoO3JldHVybnt0b3BMZWZ0Ont4OkMseTowfSxib3R0b21SaWdodDp7eDpDK3cud2lkdGgseTp3LmhlaWdodH19fTtBLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gcS5NYXRoLm1heCh0aGlzLmNvbHVtbnMubWFwKGZ1bmN0aW9uKHkpe3JldHVybiB5LmhlaWdodH0pLDApK3RoaXMuYm90dG9tUGFkZGluZ307QS5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5taW4odGhpcy5jb2x1bW5zLnJlZHVjZShmdW5jdGlvbih5LHcpe3JldHVybiB5K3cud2lkdGh9LDApLHRoaXMubWF4V2lkdGgpfTtBLnByb3RvdHlwZS5nZXRXaWR0aEF2YWlsYWJsZT1mdW5jdGlvbigpe3ZhciB5PXRoaXMuZ2V0V2lkdGgoKTtyZXR1cm4gTWF0aC5tYXgodGhpcy5tYXhXaWR0aC15LDApfTtyZXR1cm4gQX0oKSx4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQSh5LAp3LEMsRil7dm9pZCAwPT09eSYmKHk9SW5maW5pdHkpO3ZvaWQgMD09PXcmJih3PUluZmluaXR5KTt2b2lkIDA9PT1DJiYoQz0wKTt2b2lkIDA9PT1GJiYoRj1bXSk7dGhpcy5tYXhXaWR0aD15O3RoaXMubWF4SGVpZ2h0PXc7dGhpcy5wYWRkaW5nPUM7dGhpcy5yb3dzPUZ9QS5wcm90b3R5cGUuYWRkUm93PWZ1bmN0aW9uKHkpe3kubWF4V2lkdGg9dGhpcy5tYXhXaWR0aC0yKnRoaXMucGFkZGluZzt0aGlzLnJvd3MucHVzaCh5KX07QS5wcm90b3R5cGUuZ2V0Q29sdW1uQm91bmRzPWZ1bmN0aW9uKHksdyl7dmFyIEM9dGhpcy5nZXRSb3dCb3VuZHMoeSk7eT10aGlzLnJvd3NbeV0uZ2V0Qm91bmRzKHcpO3kudG9wTGVmdC54Kz1DLnRvcExlZnQueDt5LmJvdHRvbVJpZ2h0LngrPUMudG9wTGVmdC54O3kudG9wTGVmdC55Kz1DLnRvcExlZnQueTt5LmJvdHRvbVJpZ2h0LnkrPUMudG9wTGVmdC55O3JldHVybiB5fTtBLnByb3RvdHlwZS5nZXRSb3dCb3VuZHM9ZnVuY3Rpb24oeSl7Zm9yKHZhciB3PQp0aGlzLnBhZGRpbmcsQz10aGlzLnBhZGRpbmcsRj0wO0Y8eTtGKyspQys9dGhpcy5yb3dzW0ZdLmdldEhlaWdodCgpO3JldHVybnt0b3BMZWZ0Ont4OncseTpDfSxib3R0b21SaWdodDp7eDp3K3RoaXMucm93c1t5XS5nZXRXaWR0aCgpLHk6Qyt0aGlzLnJvd3NbeV0uZ2V0SGVpZ2h0KCl9fX07QS5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHRoaXMucm93cy5yZWR1Y2UoZnVuY3Rpb24oeSx3KXtyZXR1cm4geSt3LmdldEhlaWdodCgpfSwwKSsyKnRoaXMucGFkZGluZyx0aGlzLm1heEhlaWdodCl9O0EucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWluKHEuTWF0aC5tYXgodGhpcy5yb3dzLm1hcChmdW5jdGlvbih5KXtyZXR1cm4geS5nZXRXaWR0aCgpfSksMCkrMip0aGlzLnBhZGRpbmcsdGhpcy5tYXhXaWR0aCl9O3JldHVybiBBfSgpO2Q9ZnVuY3Rpb24oQSl7ZnVuY3Rpb24geSh3KXt2YXIgQz1BLmNhbGwodGhpcyl8fAp0aGlzO0MuX3BhZGRpbmc9NTtDLl9yb3dCb3R0b21QYWRkaW5nPTM7Qy5hZGRDbGFzcygibGVnZW5kIik7Qy5tYXhFbnRyaWVzUGVyUm93KDEpO2lmKG51bGw9PXcpdGhyb3cgRXJyb3IoIkxlZ2VuZCByZXF1aXJlcyBhIGNvbG9yU2NhbGUiKTtDLl9jb2xvclNjYWxlPXc7Qy5fcmVkcmF3Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gQy5yZWRyYXcoKX07Qy5fY29sb3JTY2FsZS5vblVwZGF0ZShDLl9yZWRyYXdDYWxsYmFjayk7Qy5fZm9ybWF0dGVyPW0uaWRlbnRpdHkoKTtDLm1heExpbmVzUGVyRW50cnkoMSk7Qy54QWxpZ25tZW50KCJyaWdodCIpLnlBbGlnbm1lbnQoInRvcCIpO0MuY29tcGFyYXRvcihmdW5jdGlvbihGLEQpe3ZhciBCPUMuX2NvbG9yU2NhbGUuZG9tYWluKCkuc2xpY2UoKS5tYXAoZnVuY3Rpb24oSSl7cmV0dXJuIEMuX2Zvcm1hdHRlcihJKX0pO3JldHVybiBCLmluZGV4T2YoRiktQi5pbmRleE9mKEQpfSk7Qy5fc3ltYm9sRmFjdG9yeUFjY2Vzc29yPWZ1bmN0aW9uKCl7cmV0dXJuIG4uY2lyY2xlKCl9OwpDLl9zeW1ib2xPcGFjaXR5QWNjZXNzb3I9ZnVuY3Rpb24oKXtyZXR1cm4gMX07cmV0dXJuIEN9ayh5LEEpO3kucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe0EucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3ZhciB3PXRoaXMuY29udGVudCgpLmFwcGVuZCgiZyIpLmNsYXNzZWQoeS5MRUdFTkRfUk9XX0NMQVNTLCEwKTt3LmFwcGVuZCgiZyIpLmNsYXNzZWQoeS5MRUdFTkRfRU5UUllfQ0xBU1MsITApLmFwcGVuZCgidGV4dCIpO3c9bmV3IGwuU3ZnQ29udGV4dCh3Lm5vZGUoKSxudWxsLHAuQUREX1RJVExFX0VMRU1FTlRTKTt0aGlzLl9tZWFzdXJlcj1uZXcgbC5DYWNoZU1lYXN1cmVyKHcpO3RoaXMuX3dyYXBwZXI9KG5ldyBsLldyYXBwZXIpLm1heExpbmVzKHRoaXMubWF4TGluZXNQZXJFbnRyeSgpKTt0aGlzLl93cml0ZXI9bmV3IGwuV3JpdGVyKHRoaXMuX21lYXN1cmVyLHcsdGhpcy5fd3JhcHBlcil9O3kucHJvdG90eXBlLmZvcm1hdHRlcj1mdW5jdGlvbih3KXtpZihudWxsPT0KdylyZXR1cm4gdGhpcy5fZm9ybWF0dGVyO3RoaXMuX2Zvcm1hdHRlcj13O3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O3kucHJvdG90eXBlLm1heEVudHJpZXNQZXJSb3c9ZnVuY3Rpb24odyl7aWYobnVsbD09dylyZXR1cm4gdGhpcy5fbWF4RW50cmllc1BlclJvdzt0aGlzLl9tYXhFbnRyaWVzUGVyUm93PXc7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307eS5wcm90b3R5cGUubWF4TGluZXNQZXJFbnRyeT1mdW5jdGlvbih3KXtpZihudWxsPT13KXJldHVybiB0aGlzLl9tYXhMaW5lc1BlckVudHJ5O3RoaXMuX21heExpbmVzUGVyRW50cnk9dzt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTt5LnByb3RvdHlwZS5tYXhXaWR0aD1mdW5jdGlvbih3KXtpZihudWxsPT13KXJldHVybiB0aGlzLl9tYXhXaWR0aDt0aGlzLl9tYXhXaWR0aD13O3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O3kucHJvdG90eXBlLmNvbXBhcmF0b3I9ZnVuY3Rpb24odyl7bnVsbCE9dyYmKHRoaXMuX2NvbXBhcmF0b3I9CncsdGhpcy5yZWRyYXcoKSl9O3kucHJvdG90eXBlLmNvbG9yU2NhbGU9ZnVuY3Rpb24odyl7cmV0dXJuIG51bGwhPXc/KHRoaXMuX2NvbG9yU2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKSx0aGlzLl9jb2xvclNjYWxlPXcsdGhpcy5fY29sb3JTY2FsZS5vblVwZGF0ZSh0aGlzLl9yZWRyYXdDYWxsYmFjayksdGhpcy5yZWRyYXcoKSx0aGlzKTp0aGlzLl9jb2xvclNjYWxlfTt5LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7QS5wcm90b3R5cGUuZGVzdHJveS5jYWxsKHRoaXMpO3RoaXMuX2NvbG9yU2NhbGUub2ZmVXBkYXRlKHRoaXMuX3JlZHJhd0NhbGxiYWNrKX07eS5wcm90b3R5cGUuX2J1aWxkTGVnZW5kVGFibGU9ZnVuY3Rpb24odyxDKXt2YXIgRj10aGlzLEQ9dGhpcy5fbWVhc3VyZXIubWVhc3VyZSgpLmhlaWdodCxCPW5ldyB4KHcsQyx0aGlzLl9wYWRkaW5nKTt3PXRoaXMuX2NvbG9yU2NhbGUuZG9tYWluKCkuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKE4sCk8pe3JldHVybiBGLl9jb21wYXJhdG9yKEYuX2Zvcm1hdHRlcihOKSxGLl9mb3JtYXR0ZXIoTykpfSk7dmFyIEk9bmV3IHU7Qi5hZGRSb3coSSk7SS5ib3R0b21QYWRkaW5nPXRoaXMuX3Jvd0JvdHRvbVBhZGRpbmc7dy5mb3JFYWNoKGZ1bmN0aW9uKE4pe0kuY29sdW1ucy5sZW5ndGgvMj09PUYubWF4RW50cmllc1BlclJvdygpJiYoST1uZXcgdSxJLmJvdHRvbVBhZGRpbmc9Ri5fcm93Qm90dG9tUGFkZGluZyxCLmFkZFJvdyhJKSk7dmFyIE89SS5nZXRXaWR0aEF2YWlsYWJsZSgpLEg9Ri5fZm9ybWF0dGVyKE4pLEs9Ri5fbWVhc3VyZXIubWVhc3VyZShIKS53aWR0aDswPk8tRC1LJiYxPEkuY29sdW1ucy5sZW5ndGgmJihJPW5ldyB1LEkuYm90dG9tUGFkZGluZz1GLl9yb3dCb3R0b21QYWRkaW5nLEIuYWRkUm93KEkpKTtJLmFkZENvbHVtbih7d2lkdGg6RCxoZWlnaHQ6RCxkYXRhOntuYW1lOk4sdHlwZToic3ltYm9sIn19KTtPPUkuZ2V0V2lkdGhBdmFpbGFibGUoKTtPPU1hdGgubWluKE8sCkspO0YuX3dyYXBwZXIubWF4TGluZXMoRi5tYXhMaW5lc1BlckVudHJ5KCkpO0g9Ri5fd3JhcHBlci53cmFwKEgsRi5fbWVhc3VyZXIsTykubm9MaW5lcypEO0kuYWRkQ29sdW1uKHt3aWR0aDpPLGhlaWdodDpILGRhdGE6e25hbWU6Tix0eXBlOiJ0ZXh0In19KX0pO3JldHVybiBCfTt5LnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbih3LEMpe3c9dGhpcy5fYnVpbGRMZWdlbmRUYWJsZShxLk1hdGgubWluKFt0aGlzLm1heFdpZHRoKCksd10sdyksQyk7cmV0dXJue21pbkhlaWdodDp3LmdldEhlaWdodCgpLG1pbldpZHRoOncuZ2V0V2lkdGgoKX19O3kucHJvdG90eXBlLmVudGl0aWVzQXQ9ZnVuY3Rpb24odyl7dmFyIEM9dGhpcztpZighdGhpcy5faXNTZXR1cClyZXR1cm5bXTt2YXIgRj10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTtyZXR1cm4gRi5yb3dzLnJlZHVjZShmdW5jdGlvbihELEIsSSl7aWYoMCE9PUQubGVuZ3RoKXJldHVybiBEOwp2YXIgTj1GLmdldFJvd0JvdW5kcyhJKTtyZXR1cm4gcS5NYXRoLndpdGhpbih3LE4pP0IuY29sdW1ucy5yZWR1Y2UoZnVuY3Rpb24oTyxILEspe3ZhciBNPUYuZ2V0Q29sdW1uQm91bmRzKEksSyk7aWYocS5NYXRoLndpdGhpbih3LE0pKXtPPUMuY29udGVudCgpLnNlbGVjdEFsbCgiLiIreS5MRUdFTkRfUk9XX0NMQVNTKS5ub2RlcygpW0ldO0s9dC5zZWxlY3QoTykuc2VsZWN0QWxsKCIuIit5LkxFR0VORF9FTlRSWV9DTEFTUykubm9kZXMoKVtNYXRoLmZsb29yKEsvMildO3ZhciBMPXQuc2VsZWN0KEspLnNlbGVjdCgiLiIreS5MRUdFTkRfU1lNQk9MX0NMQVNTKTtNPXEuRE9NLmdldFRyYW5zbGF0ZVZhbHVlcyh0LnNlbGVjdChPKSk7TD1xLkRPTS5nZXRUcmFuc2xhdGVWYWx1ZXMoTCk7cmV0dXJuW3tib3VuZHM6cS5ET00uZWxlbWVudEJCb3godC5zZWxlY3QoTykpLGRhdHVtOkguZGF0YS5uYW1lLHBvc2l0aW9uOnt4Ok1bMF0rTFswXSx5Ok1bMV0rTFsxXX0sc2VsZWN0aW9uOnQuc2VsZWN0KEspLApjb21wb25lbnQ6Q31dfXJldHVybiBPfSxEKTpEfSxbXSl9O3kucHJvdG90eXBlLnJlbmRlckltbWVkaWF0ZWx5PWZ1bmN0aW9uKCl7QS5wcm90b3R5cGUucmVuZGVySW1tZWRpYXRlbHkuY2FsbCh0aGlzKTt2YXIgdz10aGlzLl9idWlsZExlZ2VuZFRhYmxlKHRoaXMud2lkdGgoKSx0aGlzLmhlaWdodCgpKTt0aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTt2YXIgQz10aGlzLmNvbnRlbnQoKS5zZWxlY3RBbGwoImcuIit5LkxFR0VORF9ST1dfQ0xBU1MpLmRhdGEody5yb3dzKSxGPUMuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHkuTEVHRU5EX1JPV19DTEFTUywhMCkubWVyZ2UoQyk7Qy5leGl0KCkucmVtb3ZlKCk7Ri5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEIsSSl7Qj13LmdldFJvd0JvdW5kcyhJKTtyZXR1cm4idHJhbnNsYXRlKCIrQi50b3BMZWZ0LngrIiwgIitCLnRvcExlZnQueSsiKSJ9KTt2YXIgRD10aGlzO0YuZWFjaChmdW5jdGlvbihCLEkpe2Zvcih2YXIgTj0KW10sTz0wO088Qi5jb2x1bW5zLmxlbmd0aDtPKz0yKU4ucHVzaChbQi5jb2x1bW5zW09dLEIuY29sdW1uc1tPKzFdXSk7Qj10LnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcuIit5LkxFR0VORF9FTlRSWV9DTEFTUykuZGF0YShOKTtOPUIuZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkKHkuTEVHRU5EX0VOVFJZX0NMQVNTLCEwKS5tZXJnZShCKTtOLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGZ1bmN0aW9uKEgpe0g9SFswXTtyZXR1cm4gRC5zeW1ib2woKShILmRhdGEubmFtZSxJKSguNipILmhlaWdodCkobnVsbCl9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEgpe0g9SFswXTtyZXR1cm4idHJhbnNsYXRlKCIrKHcuZ2V0Q29sdW1uQm91bmRzKEksdy5yb3dzW0ldLmNvbHVtbnMuaW5kZXhPZihIKSkudG9wTGVmdC54K0gud2lkdGgvMikrIiwgIitILmhlaWdodC8yKyIpIn0pLmF0dHIoImZpbGwiLGZ1bmN0aW9uKEgpe3JldHVybiBELl9jb2xvclNjYWxlLnNjYWxlKEhbMF0uZGF0YS5uYW1lKX0pLmF0dHIoIm9wYWNpdHkiLApmdW5jdGlvbihIKXtyZXR1cm4gRC5zeW1ib2xPcGFjaXR5KCkoSFswXS5kYXRhLm5hbWUsSSl9KS5jbGFzc2VkKHkuTEVHRU5EX1NZTUJPTF9DTEFTUywhMCk7Ti5hcHBlbmQoImciKS5jbGFzc2VkKCJ0ZXh0LWNvbnRhaW5lciIsITApLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oSCl7cmV0dXJuInRyYW5zbGF0ZSgiK3cuZ2V0Q29sdW1uQm91bmRzKEksdy5yb3dzW0ldLmNvbHVtbnMuaW5kZXhPZihIWzFdKSkudG9wTGVmdC54KyIsIDApIn0pLmVhY2goZnVuY3Rpb24oSCl7dmFyIEs9dC5zZWxlY3QodGhpcyk7SD1IWzFdO0QuX3dyaXRlci53cml0ZShELl9mb3JtYXR0ZXIoSC5kYXRhLm5hbWUpLEgud2lkdGgsRC5oZWlnaHQoKSx7eEFsaWduOiJsZWZ0Iix5QWxpZ246InRvcCIsdGV4dFJvdGF0aW9uOjB9LEsubm9kZSgpKX0pO0IuZXhpdCgpLnJlbW92ZSgpfSk7cmV0dXJuIHRoaXN9O3kucHJvdG90eXBlLnN5bWJvbD1mdW5jdGlvbih3KXtpZihudWxsPT13KXJldHVybiB0aGlzLl9zeW1ib2xGYWN0b3J5QWNjZXNzb3I7CnRoaXMuX3N5bWJvbEZhY3RvcnlBY2Nlc3Nvcj13O3RoaXMucmVuZGVyKCk7cmV0dXJuIHRoaXN9O3kucHJvdG90eXBlLnN5bWJvbE9wYWNpdHk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3ltYm9sT3BhY2l0eUFjY2Vzc29yfTt5LnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3kucHJvdG90eXBlLmZpeGVkSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuITB9O3kucHJvdG90eXBlLmludmFsaWRhdGVDYWNoZT1mdW5jdGlvbigpe3RoaXMuX21lYXN1cmVyLnJlc2V0KCl9O3JldHVybiB5fShkLkNvbXBvbmVudCk7ZC5MRUdFTkRfUk9XX0NMQVNTPSJsZWdlbmQtcm93IjtkLkxFR0VORF9FTlRSWV9DTEFTUz0ibGVnZW5kLWVudHJ5IjtkLkxFR0VORF9TWU1CT0xfQ0xBU1M9ImxlZ2VuZC1zeW1ib2wiO2YuTGVnZW5kPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj0KcH1mb3IodmFyIHEgaW4gbSltLmhhc093blByb3BlcnR5KHEpJiYocFtxXT1tW3FdKTtwLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9LHQ9aCgyKSxsPWgoMCk7ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKCl7cmV0dXJuIG51bGwhPT1wJiZwLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31rKG0scCk7bS5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbihuKXt2YXIgcSx1PUluZmluaXR5O3RoaXMuY29tcG9uZW50cygpLmZvckVhY2goZnVuY3Rpb24oeCl7eD14LmVudGl0eU5lYXJlc3Qobik7aWYobnVsbCE9eCl7dmFyIEE9bC5NYXRoLmRpc3RhbmNlU3F1YXJlZCh4LnBvc2l0aW9uLG4pO0E8PXUmJih1PUEscT14KX19KTtyZXR1cm4gcX07bS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKG4pe2lmKG51bGwhPW4mJiEobiBpbnN0YW5jZW9mIHQuUGxvdCkpdGhyb3cgRXJyb3IoIlBsb3QgR3JvdXAgb25seSBhY2NlcHRzIHBsb3RzIik7CnAucHJvdG90eXBlLmFwcGVuZC5jYWxsKHRoaXMsbik7cmV0dXJuIHRoaXN9O3JldHVybiBtfShoKDQxKS5Hcm91cCk7Zi5QbG90R3JvdXA9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihwLG0pe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXB9Zm9yKHZhciBxIGluIG0pbS5oYXNPd25Qcm9wZXJ0eShxKSYmKHBbcV09bVtxXSk7cC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfSx0PWgoMSksbD1oKDApO2Q9ZnVuY3Rpb24ocCl7ZnVuY3Rpb24gbShuKXt2b2lkIDA9PT1uJiYobj1bXSk7dmFyIHE9cC5jYWxsKHRoaXMpfHx0aGlzO3EuX3Jvd1BhZGRpbmc9MDtxLl9jb2x1bW5QYWRkaW5nPTA7cS5fcm93cz1bXTtxLl9yb3dXZWlnaHRzPVtdO3EuX2NvbHVtbldlaWdodHM9W107cS5fblJvd3M9MDtxLl9uQ29scz0wO3EuX2NhbGN1bGF0ZWRMYXlvdXQ9Cm51bGw7cS5hZGRDbGFzcygidGFibGUiKTtuLmZvckVhY2goZnVuY3Rpb24odSx4KXt1LmZvckVhY2goZnVuY3Rpb24oQSx5KXtudWxsIT1BJiZxLmFkZChBLHgseSl9KX0pO3JldHVybiBxfWsobSxwKTttLnByb3RvdHlwZS5fZm9yRWFjaD1mdW5jdGlvbihuKXtmb3IodmFyIHE9MDtxPHRoaXMuX25Sb3dzO3ErKylmb3IodmFyIHU9MDt1PHRoaXMuX25Db2xzO3UrKyludWxsIT10aGlzLl9yb3dzW3FdW3VdJiZuKHRoaXMuX3Jvd3NbcV1bdV0pfTttLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24obil7Zm9yKHZhciBxPTA7cTx0aGlzLl9uUm93cztxKyspZm9yKHZhciB1PTA7dTx0aGlzLl9uQ29sczt1KyspaWYodGhpcy5fcm93c1txXVt1XT09PW4pcmV0dXJuITA7cmV0dXJuITF9O20ucHJvdG90eXBlLmNvbXBvbmVudEF0PWZ1bmN0aW9uKG4scSl7cmV0dXJuIDA+bnx8bj49dGhpcy5fblJvd3N8fDA+cXx8cT49dGhpcy5fbkNvbHM/bnVsbDp0aGlzLl9yb3dzW25dW3FdfTttLnByb3RvdHlwZS5hZGQ9CmZ1bmN0aW9uKG4scSx1KXtpZihudWxsPT1uKXRocm93IEVycm9yKCJDYW5ub3QgYWRkIG51bGwgdG8gYSB0YWJsZSBjZWxsIik7aWYoIXRoaXMuaGFzKG4pKXtpZihudWxsIT0odGhpcy5fcm93c1txXSYmdGhpcy5fcm93c1txXVt1XSkpdGhyb3cgRXJyb3IoImNlbGwgaXMgb2NjdXBpZWQiKTtuLmRldGFjaCgpO3RoaXMuX25Sb3dzPU1hdGgubWF4KHErMSx0aGlzLl9uUm93cyk7dGhpcy5fbkNvbHM9TWF0aC5tYXgodSsxLHRoaXMuX25Db2xzKTt0aGlzLl9wYWRUYWJsZVRvU2l6ZSh0aGlzLl9uUm93cyx0aGlzLl9uQ29scyk7dGhpcy5fcm93c1txXVt1XT1uO3RoaXMuX2Fkb3B0QW5kQW5jaG9yKG4pO3RoaXMucmVkcmF3KCl9cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLl9yZW1vdmU9ZnVuY3Rpb24obil7Zm9yKHZhciBxPTA7cTx0aGlzLl9uUm93cztxKyspZm9yKHZhciB1PTA7dTx0aGlzLl9uQ29sczt1KyspaWYodGhpcy5fcm93c1txXVt1XT09PW4pe3RoaXMuX3Jvd3NbcV1bdV09Cm51bGw7cmV0dXJufX07bS5wcm90b3R5cGUuX2l0ZXJhdGVMYXlvdXQ9ZnVuY3Rpb24obixxLHUpe3ZvaWQgMD09PXUmJih1PSExKTt2YXIgeD10aGlzLl9yb3dzLEE9dC50cmFuc3Bvc2UodGhpcy5fcm93cyk7bi09dGhpcy5fY29sdW1uUGFkZGluZyoodGhpcy5fbkNvbHMtMSk7cS09dGhpcy5fcm93UGFkZGluZyoodGhpcy5fblJvd3MtMSk7eD1tLl9jYWxjQ29tcG9uZW50V2VpZ2h0cyh0aGlzLl9yb3dXZWlnaHRzLHgsZnVuY3Rpb24oTCl7cmV0dXJuIG51bGw9PUx8fEwuZml4ZWRIZWlnaHQoKX0pO0E9bS5fY2FsY0NvbXBvbmVudFdlaWdodHModGhpcy5fY29sdW1uV2VpZ2h0cyxBLGZ1bmN0aW9uKEwpe3JldHVybiBudWxsPT1MfHxMLmZpeGVkV2lkdGgoKX0pO3ZhciB5PUEubWFwKGZ1bmN0aW9uKEwpe3JldHVybiAwPT09TD8uNTpMfSksdz14Lm1hcChmdW5jdGlvbihMKXtyZXR1cm4gMD09PUw/LjU6TH0pO3k9bS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKHksbik7dmFyIEM9bS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKHcsCnEpLEY9bC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSgwLHRoaXMuX25Db2xzKSxEPWwuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uUm93cyk7dz0wO2Zvcih2YXIgQixJLE47Oyl7RD1sLkFycmF5LmFkZChELEMpO3k9bC5BcnJheS5hZGQoRix5KTtCPXRoaXMuX2RldGVybWluZUd1YXJhbnRlZXMoeSxELHUpO0Y9Qi5ndWFyYW50ZWVkV2lkdGhzO0Q9Qi5ndWFyYW50ZWVkSGVpZ2h0cztJPUIud2FudHNXaWR0aEFyci5zb21lKGZ1bmN0aW9uKEwpe3JldHVybiBMfSk7Tj1CLndhbnRzSGVpZ2h0QXJyLnNvbWUoZnVuY3Rpb24oTCl7cmV0dXJuIEx9KTt2YXIgTz1LLEg9TTt2YXIgSz1uLXQuc3VtKEIuZ3VhcmFudGVlZFdpZHRocyk7dmFyIE09cS10LnN1bShCLmd1YXJhbnRlZWRIZWlnaHRzKTt5PXZvaWQgMDtJPyh5PUIud2FudHNXaWR0aEFyci5tYXAoZnVuY3Rpb24oTCl7cmV0dXJuIEw/LjE6MH0pLHk9bC5BcnJheS5hZGQoeSxBKSk6eT1BO0M9dm9pZCAwO04/KEM9Qi53YW50c0hlaWdodEFyci5tYXAoZnVuY3Rpb24oTCl7cmV0dXJuIEw/Ci4xOjB9KSxDPWwuQXJyYXkuYWRkKEMseCkpOkM9eDt5PW0uX2NhbGNQcm9wb3J0aW9uYWxTcGFjZSh5LEspO0M9bS5fY2FsY1Byb3BvcnRpb25hbFNwYWNlKEMsTSk7dysrO0g9MDxNJiZNIT09SDtpZighKDA8SyYmSyE9PU98fEgpKWJyZWFrO2lmKDU8dylicmVha31LPW4tdC5zdW0oQi5ndWFyYW50ZWVkV2lkdGhzKTtNPXEtdC5zdW0oQi5ndWFyYW50ZWVkSGVpZ2h0cyk7eT1tLl9jYWxjUHJvcG9ydGlvbmFsU3BhY2UoQSxLKTtDPW0uX2NhbGNQcm9wb3J0aW9uYWxTcGFjZSh4LE0pO3JldHVybntjb2xQcm9wb3J0aW9uYWxTcGFjZTp5LHJvd1Byb3BvcnRpb25hbFNwYWNlOkMsZ3VhcmFudGVlZFdpZHRoczpCLmd1YXJhbnRlZWRXaWR0aHMsZ3VhcmFudGVlZEhlaWdodHM6Qi5ndWFyYW50ZWVkSGVpZ2h0cyx3YW50c1dpZHRoOkksd2FudHNIZWlnaHQ6Tn19O20ucHJvdG90eXBlLl9kZXRlcm1pbmVHdWFyYW50ZWVzPWZ1bmN0aW9uKG4scSx1KXt2b2lkIDA9PT11JiYodT0hMSk7dmFyIHg9CmwuQXJyYXkuY3JlYXRlRmlsbGVkQXJyYXkoMCx0aGlzLl9uQ29scyksQT1sLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsdGhpcy5fblJvd3MpLHk9bC5BcnJheS5jcmVhdGVGaWxsZWRBcnJheSghMSx0aGlzLl9uQ29scyksdz1sLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KCExLHRoaXMuX25Sb3dzKTt0aGlzLl9yb3dzLmZvckVhY2goZnVuY3Rpb24oQyxGKXtDLmZvckVhY2goZnVuY3Rpb24oRCxCKXtEPW51bGwhPUQ/RC5yZXF1ZXN0ZWRTcGFjZShuW0JdLHFbRl0pOnttaW5XaWR0aDowLG1pbkhlaWdodDowfTt4W0JdPU1hdGgubWF4KHhbQl0sdT9NYXRoLm1pbihELm1pbldpZHRoLG5bQl0pOkQubWluV2lkdGgpO0FbRl09TWF0aC5tYXgoQVtGXSx1P01hdGgubWluKEQubWluSGVpZ2h0LHFbRl0pOkQubWluSGVpZ2h0KTt2YXIgST1ELm1pbldpZHRoPm5bQl07eVtCXT15W0JdfHxJO0I9RC5taW5IZWlnaHQ+cVtGXTt3W0ZdPXdbRl18fEJ9KX0pO3JldHVybntndWFyYW50ZWVkV2lkdGhzOngsCmd1YXJhbnRlZWRIZWlnaHRzOkEsd2FudHNXaWR0aEFycjp5LHdhbnRzSGVpZ2h0QXJyOnd9fTttLnByb3RvdHlwZS5yZXF1ZXN0ZWRTcGFjZT1mdW5jdGlvbihuLHEpe3RoaXMuX2NhbGN1bGF0ZWRMYXlvdXQ9dGhpcy5faXRlcmF0ZUxheW91dChuLHEpO3JldHVybnttaW5XaWR0aDp0LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRXaWR0aHMpLG1pbkhlaWdodDp0LnN1bSh0aGlzLl9jYWxjdWxhdGVkTGF5b3V0Lmd1YXJhbnRlZWRIZWlnaHRzKX19O20ucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQ9ZnVuY3Rpb24obixxLHUpe3ZhciB4PXRoaXM7cC5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsbixxLHUpO249dC5zdW0odGhpcy5fY2FsY3VsYXRlZExheW91dC5ndWFyYW50ZWVkV2lkdGhzKTtxPXQuc3VtKHRoaXMuX2NhbGN1bGF0ZWRMYXlvdXQuZ3VhcmFudGVlZEhlaWdodHMpO3U9dGhpcy5fY2FsY3VsYXRlZExheW91dDtpZihuPnRoaXMud2lkdGgoKXx8CnE+dGhpcy5oZWlnaHQoKSl1PXRoaXMuX2l0ZXJhdGVMYXlvdXQodGhpcy53aWR0aCgpLHRoaXMuaGVpZ2h0KCksITApO3ZhciBBPTAseT1sLkFycmF5LmFkZCh1LnJvd1Byb3BvcnRpb25hbFNwYWNlLHUuZ3VhcmFudGVlZEhlaWdodHMpLHc9bC5BcnJheS5hZGQodS5jb2xQcm9wb3J0aW9uYWxTcGFjZSx1Lmd1YXJhbnRlZWRXaWR0aHMpO3RoaXMuX3Jvd3MuZm9yRWFjaChmdW5jdGlvbihDLEYpe3ZhciBEPTA7Qy5mb3JFYWNoKGZ1bmN0aW9uKEIsSSl7bnVsbCE9QiYmQi5jb21wdXRlTGF5b3V0KHt4OkQseTpBfSx3W0ldLHlbRl0pO0QrPXdbSV0reC5fY29sdW1uUGFkZGluZ30pO0ErPXlbRl0reC5fcm93UGFkZGluZ30pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5yb3dQYWRkaW5nPWZ1bmN0aW9uKG4pe2lmKG51bGw9PW4pcmV0dXJuIHRoaXMuX3Jvd1BhZGRpbmc7aWYoIWwuTWF0aC5pc1ZhbGlkTnVtYmVyKG4pfHwwPm4pdGhyb3cgRXJyb3IoInJvd1BhZGRpbmcgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTsKdGhpcy5fcm93UGFkZGluZz1uO3RoaXMucmVkcmF3KCk7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLmNvbHVtblBhZGRpbmc9ZnVuY3Rpb24obil7aWYobnVsbD09bilyZXR1cm4gdGhpcy5fY29sdW1uUGFkZGluZztpZighbC5NYXRoLmlzVmFsaWROdW1iZXIobil8fDA+bil0aHJvdyBFcnJvcigiY29sdW1uUGFkZGluZyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3RoaXMuX2NvbHVtblBhZGRpbmc9bjt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5yb3dXZWlnaHQ9ZnVuY3Rpb24obixxKXtpZihudWxsPT1xKXJldHVybiB0aGlzLl9yb3dXZWlnaHRzW25dO2lmKCFsLk1hdGguaXNWYWxpZE51bWJlcihxKXx8MD5xKXRocm93IEVycm9yKCJyb3dXZWlnaHQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBmaW5pdGUgdmFsdWUiKTt0aGlzLl9yb3dXZWlnaHRzW25dPXE7dGhpcy5yZWRyYXcoKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuY29sdW1uV2VpZ2h0PQpmdW5jdGlvbihuLHEpe2lmKG51bGw9PXEpcmV0dXJuIHRoaXMuX2NvbHVtbldlaWdodHNbbl07aWYoIWwuTWF0aC5pc1ZhbGlkTnVtYmVyKHEpfHwwPnEpdGhyb3cgRXJyb3IoImNvbHVtbldlaWdodCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGZpbml0ZSB2YWx1ZSIpO3RoaXMuX2NvbHVtbldlaWdodHNbbl09cTt0aGlzLnJlZHJhdygpO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5maXhlZFdpZHRoPWZ1bmN0aW9uKCl7dmFyIG49dC50cmFuc3Bvc2UodGhpcy5fcm93cyk7cmV0dXJuIG0uX2ZpeGVkU3BhY2UobixmdW5jdGlvbihxKXtyZXR1cm4gbnVsbD09cXx8cS5maXhlZFdpZHRoKCl9KX07bS5wcm90b3R5cGUuZml4ZWRIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbS5fZml4ZWRTcGFjZSh0aGlzLl9yb3dzLGZ1bmN0aW9uKG4pe3JldHVybiBudWxsPT1ufHxuLmZpeGVkSGVpZ2h0KCl9KX07bS5wcm90b3R5cGUuX3BhZFRhYmxlVG9TaXplPWZ1bmN0aW9uKG4scSl7Zm9yKHZhciB1PQowO3U8bjt1Kyspe3ZvaWQgMD09PXRoaXMuX3Jvd3NbdV0mJih0aGlzLl9yb3dzW3VdPVtdLHRoaXMuX3Jvd1dlaWdodHNbdV09bnVsbCk7Zm9yKHZhciB4PTA7eDxxO3grKyl2b2lkIDA9PT10aGlzLl9yb3dzW3VdW3hdJiYodGhpcy5fcm93c1t1XVt4XT1udWxsKX1mb3IoeD0wO3g8cTt4Kyspdm9pZCAwPT09dGhpcy5fY29sdW1uV2VpZ2h0c1t4XSYmKHRoaXMuX2NvbHVtbldlaWdodHNbeF09bnVsbCl9O20uX2NhbGNDb21wb25lbnRXZWlnaHRzPWZ1bmN0aW9uKG4scSx1KXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24oeCxBKXtyZXR1cm4gbnVsbCE9eD94OnFbQV0ubWFwKHUpLnJlZHVjZShmdW5jdGlvbih5LHcpe3JldHVybiB5JiZ3fSwhMCk/MDoxfSl9O20uX2NhbGNQcm9wb3J0aW9uYWxTcGFjZT1mdW5jdGlvbihuLHEpe3ZhciB1PXQuc3VtKG4pO3JldHVybiAwPT09dT9sLkFycmF5LmNyZWF0ZUZpbGxlZEFycmF5KDAsbi5sZW5ndGgpOm4ubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBxKgp4L3V9KX07bS5fZml4ZWRTcGFjZT1mdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHUoeCl7cmV0dXJuIHgucmVkdWNlKGZ1bmN0aW9uKEEseSl7cmV0dXJuIEEmJnl9LCEwKX1yZXR1cm4gdShuLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gdSh4Lm1hcChxKSl9KSl9O3JldHVybiBtfShoKDI5KS5Db21wb25lbnRDb250YWluZXIpO2YuVGFibGU9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGwpe2Z1bmN0aW9uIHAoKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBtIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShtKSYmKHRbbV09bFttXSk7dC5wcm90b3R5cGU9bnVsbD09PWw/T2JqZWN0LmNyZWF0ZShsKToocC5wcm90b3R5cGU9bC5wcm90b3R5cGUsbmV3IHApfTtkPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGwoKXt2YXIgcD10LmNhbGwodGhpcyl8fHRoaXM7cC5hZGRDbGFzcygieC1kcmFnLWJveC1sYXllciIpO3AuX2hhc0Nvcm5lcnM9ITE7CnJldHVybiBwfWsobCx0KTtsLnByb3RvdHlwZS5jb21wdXRlTGF5b3V0PWZ1bmN0aW9uKHAsbSxuKXt0LnByb3RvdHlwZS5jb21wdXRlTGF5b3V0LmNhbGwodGhpcyxwLG0sbik7dGhpcy5fc2V0Qm91bmRzKHRoaXMuYm91bmRzKCkpO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5fc2V0Qm91bmRzPWZ1bmN0aW9uKHApe3QucHJvdG90eXBlLl9zZXRCb3VuZHMuY2FsbCh0aGlzLHt0b3BMZWZ0Ont4OnAudG9wTGVmdC54LHk6MH0sYm90dG9tUmlnaHQ6e3g6cC5ib3R0b21SaWdodC54LHk6dGhpcy5oZWlnaHQoKX19KX07bC5wcm90b3R5cGUuX3NldFJlc2l6YWJsZUNsYXNzZXM9ZnVuY3Rpb24ocCl7cCYmdGhpcy5lbmFibGVkKCk/dGhpcy5hZGRDbGFzcygieC1yZXNpemFibGUiKTp0aGlzLnJlbW92ZUNsYXNzKCJ4LXJlc2l6YWJsZSIpfTtsLnByb3RvdHlwZS55U2NhbGU9ZnVuY3Rpb24ocCl7aWYobnVsbD09cClyZXR1cm4gdC5wcm90b3R5cGUueVNjYWxlLmNhbGwodGhpcyk7dGhyb3cgRXJyb3IoInlTY2FsZXMgY2Fubm90IGJlIHNldCBvbiBhbiBYRHJhZ0JveExheWVyIik7Cn07bC5wcm90b3R5cGUueUV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0LnByb3RvdHlwZS55RXh0ZW50LmNhbGwodGhpcyk7dGhyb3cgRXJyb3IoIlhEcmFnQm94TGF5ZXIgaGFzIG5vIHlFeHRlbnQiKTt9O3JldHVybiBsfShoKDMyKS5EcmFnQm94TGF5ZXIpO2YuWERyYWdCb3hMYXllcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHQsbCl7ZnVuY3Rpb24gcCgpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIG0gaW4gbClsLmhhc093blByb3BlcnR5KG0pJiYodFttXT1sW21dKTt0LnByb3RvdHlwZT1udWxsPT09bD9PYmplY3QuY3JlYXRlKGwpOihwLnByb3RvdHlwZT1sLnByb3RvdHlwZSxuZXcgcCl9O2Q9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbCgpe3ZhciBwPXQuY2FsbCh0aGlzKXx8dGhpcztwLmFkZENsYXNzKCJ5LWRyYWctYm94LWxheWVyIik7cC5faGFzQ29ybmVycz0hMTtyZXR1cm4gcH1rKGwsdCk7bC5wcm90b3R5cGUuY29tcHV0ZUxheW91dD0KZnVuY3Rpb24ocCxtLG4pe3QucHJvdG90eXBlLmNvbXB1dGVMYXlvdXQuY2FsbCh0aGlzLHAsbSxuKTt0aGlzLl9zZXRCb3VuZHModGhpcy5ib3VuZHMoKSk7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLl9zZXRCb3VuZHM9ZnVuY3Rpb24ocCl7dC5wcm90b3R5cGUuX3NldEJvdW5kcy5jYWxsKHRoaXMse3RvcExlZnQ6e3g6MCx5OnAudG9wTGVmdC55fSxib3R0b21SaWdodDp7eDp0aGlzLndpZHRoKCkseTpwLmJvdHRvbVJpZ2h0Lnl9fSl9O2wucHJvdG90eXBlLl9zZXRSZXNpemFibGVDbGFzc2VzPWZ1bmN0aW9uKHApe3AmJnRoaXMuZW5hYmxlZCgpP3RoaXMuYWRkQ2xhc3MoInktcmVzaXphYmxlIik6dGhpcy5yZW1vdmVDbGFzcygieS1yZXNpemFibGUiKX07bC5wcm90b3R5cGUueFNjYWxlPWZ1bmN0aW9uKHApe2lmKG51bGw9PXApcmV0dXJuIHQucHJvdG90eXBlLnhTY2FsZS5jYWxsKHRoaXMpO3Rocm93IEVycm9yKCJ4U2NhbGVzIGNhbm5vdCBiZSBzZXQgb24gYW4gWURyYWdCb3hMYXllciIpOwp9O2wucHJvdG90eXBlLnhFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm90b3R5cGUueEV4dGVudC5jYWxsKHRoaXMpO3Rocm93IEVycm9yKCJZRHJhZ0JveExheWVyIGhhcyBubyB4RXh0ZW50Iik7fTtyZXR1cm4gbH0oaCgzMikuRHJhZ0JveExheWVyKTtmLllEcmFnQm94TGF5ZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGwpe2Z1bmN0aW9uIHAoKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBtIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShtKSYmKHRbbV09bFttXSk7dC5wcm90b3R5cGU9bnVsbD09PWw/T2JqZWN0LmNyZWF0ZShsKToocC5wcm90b3R5cGU9bC5wcm90b3R5cGUsbmV3IHApfTtkPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGwoKXt2YXIgcD10LmNhbGwodGhpcyl8fHRoaXM7cC5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltsLl9LRVlET1dOX0VWRU5UX05BTUVdPWZ1bmN0aW9uKG0pe3JldHVybiBwLl9wcm9jZXNzS2V5ZG93bihtKX07CnAuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bbC5fS0VZVVBfRVZFTlRfTkFNRV09ZnVuY3Rpb24obSl7cmV0dXJuIHAuX3Byb2Nlc3NLZXl1cChtKX07cmV0dXJuIHB9ayhsLHQpO2wuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbigpe3ZhciBwPWRvY3VtZW50W2wuX0RJU1BBVENIRVJfS0VZXTtudWxsPT1wJiYocD1uZXcgbCxkb2N1bWVudFtsLl9ESVNQQVRDSEVSX0tFWV09cCk7cmV0dXJuIHB9O2wucHJvdG90eXBlLl9wcm9jZXNzS2V5ZG93bj1mdW5jdGlvbihwKXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobC5fS0VZRE9XTl9FVkVOVF9OQU1FLHAua2V5Q29kZSxwKX07bC5wcm90b3R5cGUuX3Byb2Nlc3NLZXl1cD1mdW5jdGlvbihwKXt0aGlzLl9jYWxsQ2FsbGJhY2tzRm9yRXZlbnQobC5fS0VZVVBfRVZFTlRfTkFNRSxwLmtleUNvZGUscCl9O2wucHJvdG90eXBlLm9uS2V5RG93bj1mdW5jdGlvbihwKXt0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KGwuX0tFWURPV05fRVZFTlRfTkFNRSwKcCl9O2wucHJvdG90eXBlLm9mZktleURvd249ZnVuY3Rpb24ocCl7dGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChsLl9LRVlET1dOX0VWRU5UX05BTUUscCl9O2wucHJvdG90eXBlLm9uS2V5VXA9ZnVuY3Rpb24ocCl7dGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChsLl9LRVlVUF9FVkVOVF9OQU1FLHApfTtsLnByb3RvdHlwZS5vZmZLZXlVcD1mdW5jdGlvbihwKXt0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KGwuX0tFWVVQX0VWRU5UX05BTUUscCl9O3JldHVybiBsfShoKDI0KS5EaXNwYXRjaGVyKTtkLl9ESVNQQVRDSEVSX0tFWT0iX19QbG90dGFibGVfRGlzcGF0Y2hlcl9LZXkiO2QuX0tFWURPV05fRVZFTlRfTkFNRT0ia2V5ZG93biI7ZC5fS0VZVVBfRVZFTlRfTkFNRT0ia2V5dXAiO2YuS2V5PWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obCxwKXtmdW5jdGlvbiBtKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sfWZvcih2YXIgbiBpbiBwKXAuaGFzT3duUHJvcGVydHkobikmJgoobFtuXT1wW25dKTtsLnByb3RvdHlwZT1udWxsPT09cD9PYmplY3QuY3JlYXRlKHApOihtLnByb3RvdHlwZT1wLnByb3RvdHlwZSxuZXcgbSl9LHQ9aCgwKTtkPWZ1bmN0aW9uKGwpe2Z1bmN0aW9uIHAobSl7ZnVuY3Rpb24gbih1KXtyZXR1cm4gcS5fbWVhc3VyZUFuZERpc3BhdGNoKG0sdSxwLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSwicGFnZSIpfXZhciBxPWwuY2FsbCh0aGlzKXx8dGhpcztxLl9sYXN0TW91c2VQb3NpdGlvbj17eDotMSx5Oi0xfTtxLl90cmFuc2xhdG9yPXQuZ2V0VHJhbnNsYXRvcihtKTtxLl9ldmVudFRvUHJvY2Vzc2luZ0Z1bmN0aW9uW3AuX01PVVNFT1ZFUl9FVkVOVF9OQU1FXT1uO3EuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcC5fTU9VU0VNT1ZFX0VWRU5UX05BTUVdPW47cS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwLl9NT1VTRU9VVF9FVkVOVF9OQU1FXT11PT57Y29uc29sZS5kZWJ1ZygibW9zdWVvdXQiLHUpO24odSl9O3EuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcC5fTU9VU0VET1dOX0VWRU5UX05BTUVdPQpmdW5jdGlvbih1KXtyZXR1cm4gcS5fbWVhc3VyZUFuZERpc3BhdGNoKG0sdSxwLl9NT1VTRURPV05fRVZFTlRfTkFNRSl9O3EuX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcC5fTU9VU0VVUF9FVkVOVF9OQU1FXT1mdW5jdGlvbih1KXtyZXR1cm4gcS5fbWVhc3VyZUFuZERpc3BhdGNoKG0sdSxwLl9NT1VTRVVQX0VWRU5UX05BTUUsInBhZ2UiKX07cS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwLl9XSEVFTF9FVkVOVF9OQU1FXT1mdW5jdGlvbih1KXtyZXR1cm4gcS5fbWVhc3VyZUFuZERpc3BhdGNoKG0sdSxwLl9XSEVFTF9FVkVOVF9OQU1FKX07cS5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwLl9EQkxDTElDS19FVkVOVF9OQU1FXT1mdW5jdGlvbih1KXtyZXR1cm4gcS5fbWVhc3VyZUFuZERpc3BhdGNoKG0sdSxwLl9EQkxDTElDS19FVkVOVF9OQU1FKX07cmV0dXJuIHF9ayhwLGwpO3AuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbihtKXt2YXIgbj1tLnJvb3QoKS5yb290RWxlbWVudCgpLApxPW5bcC5fRElTUEFUQ0hFUl9LRVldO251bGw9PXEmJihxPW5ldyBwKG0pLG5bcC5fRElTUEFUQ0hFUl9LRVldPXEpO3JldHVybiBxfTtwLnByb3RvdHlwZS5vbk1vdXNlTW92ZT1mdW5jdGlvbihtKXt0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHAuX01PVVNFTU9WRV9FVkVOVF9OQU1FLG0pfTtwLnByb3RvdHlwZS5vZmZNb3VzZU1vdmU9ZnVuY3Rpb24obSl7dGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChwLl9NT1VTRU1PVkVfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub25Nb3VzZURvd249ZnVuY3Rpb24obSl7dGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChwLl9NT1VTRURPV05fRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub2ZmTW91c2VEb3duPWZ1bmN0aW9uKG0pe3RoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQocC5fTU9VU0VET1dOX0VWRU5UX05BTUUsbSl9O3AucHJvdG90eXBlLm9uTW91c2VVcD1mdW5jdGlvbihtKXt0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHAuX01PVVNFVVBfRVZFTlRfTkFNRSwKbSl9O3AucHJvdG90eXBlLm9mZk1vdXNlVXA9ZnVuY3Rpb24obSl7dGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChwLl9NT1VTRVVQX0VWRU5UX05BTUUsbSl9O3AucHJvdG90eXBlLm9uV2hlZWw9ZnVuY3Rpb24obSl7dGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChwLl9XSEVFTF9FVkVOVF9OQU1FLG0pO3JldHVybiB0aGlzfTtwLnByb3RvdHlwZS5vZmZXaGVlbD1mdW5jdGlvbihtKXt0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHAuX1dIRUVMX0VWRU5UX05BTUUsbSl9O3AucHJvdG90eXBlLm9uRGJsQ2xpY2s9ZnVuY3Rpb24obSl7dGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChwLl9EQkxDTElDS19FVkVOVF9OQU1FLG0pfTtwLnByb3RvdHlwZS5vZmZEYmxDbGljaz1mdW5jdGlvbihtKXt0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHAuX0RCTENMSUNLX0VWRU5UX05BTUUsbSl9O3AucHJvdG90eXBlLl9tZWFzdXJlQW5kRGlzcGF0Y2g9ZnVuY3Rpb24obSxuLHEsCnUpe3ZvaWQgMD09PXUmJih1PSJlbGVtZW50Iik7aWYoInBhZ2UiIT09dSYmImVsZW1lbnQiIT09dSl0aHJvdyBFcnJvcigiSW52YWxpZCBzY29wZSAnIit1KyInLCBtdXN0IGJlICdlbGVtZW50JyBvciAncGFnZSciKTtpZigicGFnZSI9PT11fHx0aGlzLmV2ZW50SW5zaWRlKG0sbikpdGhpcy5fbGFzdE1vdXNlUG9zaXRpb249dGhpcy5fdHJhbnNsYXRvci5jb21wdXRlUG9zaXRpb24obi5jbGllbnRYLG4uY2xpZW50WSksdGhpcy5fY2FsbENhbGxiYWNrc0ZvckV2ZW50KHEsdGhpcy5sYXN0TW91c2VQb3NpdGlvbigpLG4pfTtwLnByb3RvdHlwZS5ldmVudEluc2lkZT1mdW5jdGlvbihtLG4pe3JldHVybiB0LlRyYW5zbGF0b3IuaXNFdmVudEluc2lkZShtLG4pfTtwLnByb3RvdHlwZS5sYXN0TW91c2VQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9sYXN0TW91c2VQb3NpdGlvbn07cmV0dXJuIHB9KGgoMjQpLkRpc3BhdGNoZXIpO2QuX0RJU1BBVENIRVJfS0VZPSJfX1Bsb3R0YWJsZV9EaXNwYXRjaGVyX01vdXNlIjsKZC5fTU9VU0VPVkVSX0VWRU5UX05BTUU9Im1vdXNlb3ZlciI7ZC5fTU9VU0VNT1ZFX0VWRU5UX05BTUU9Im1vdXNlbW92ZSI7ZC5fTU9VU0VPVVRfRVZFTlRfTkFNRT0ibW91c2VvdXQiO2QuX01PVVNFRE9XTl9FVkVOVF9OQU1FPSJtb3VzZWRvd24iO2QuX01PVVNFVVBfRVZFTlRfTkFNRT0ibW91c2V1cCI7ZC5fV0hFRUxfRVZFTlRfTkFNRT0id2hlZWwiO2QuX0RCTENMSUNLX0VWRU5UX05BTUU9ImRibGNsaWNrIjtmLk1vdXNlPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obCxwKXtmdW5jdGlvbiBtKCl7dGhpcy5jb25zdHJ1Y3Rvcj1sfWZvcih2YXIgbiBpbiBwKXAuaGFzT3duUHJvcGVydHkobikmJihsW25dPXBbbl0pO2wucHJvdG90eXBlPW51bGw9PT1wP09iamVjdC5jcmVhdGUocCk6KG0ucHJvdG90eXBlPXAucHJvdG90eXBlLG5ldyBtKX0sdD1oKDApO2Q9ZnVuY3Rpb24obCl7ZnVuY3Rpb24gcChtKXt2YXIgbj1sLmNhbGwodGhpcyl8fAp0aGlzO24uX3RyYW5zbGF0b3I9dC5nZXRUcmFuc2xhdG9yKG0pO24uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcC5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FXT1mdW5jdGlvbihxKXtyZXR1cm4gbi5fbWVhc3VyZUFuZERpc3BhdGNoKG0scSxwLl9UT1VDSFNUQVJUX0VWRU5UX05BTUUsInBhZ2UiKX07bi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwLl9UT1VDSE1PVkVfRVZFTlRfTkFNRV09ZnVuY3Rpb24ocSl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChtLHEscC5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsInBhZ2UiKX07bi5fZXZlbnRUb1Byb2Nlc3NpbmdGdW5jdGlvbltwLl9UT1VDSEVORF9FVkVOVF9OQU1FXT1mdW5jdGlvbihxKXtyZXR1cm4gbi5fbWVhc3VyZUFuZERpc3BhdGNoKG0scSxwLl9UT1VDSEVORF9FVkVOVF9OQU1FLCJwYWdlIil9O24uX2V2ZW50VG9Qcm9jZXNzaW5nRnVuY3Rpb25bcC5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRV09ZnVuY3Rpb24ocSl7cmV0dXJuIG4uX21lYXN1cmVBbmREaXNwYXRjaChtLApxLHAuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUUsInBhZ2UiKX07cmV0dXJuIG59ayhwLGwpO3AuZ2V0RGlzcGF0Y2hlcj1mdW5jdGlvbihtKXt2YXIgbj1tLnJvb3QoKS5yb290RWxlbWVudCgpLHE9bltwLl9ESVNQQVRDSEVSX0tFWV07bnVsbD09cSYmKHE9bmV3IHAobSksbltwLl9ESVNQQVRDSEVSX0tFWV09cSk7cmV0dXJuIHF9O3AucHJvdG90eXBlLm9uVG91Y2hTdGFydD1mdW5jdGlvbihtKXt0aGlzLl9hZGRDYWxsYmFja0ZvckV2ZW50KHAuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub2ZmVG91Y2hTdGFydD1mdW5jdGlvbihtKXt0aGlzLl9yZW1vdmVDYWxsYmFja0ZvckV2ZW50KHAuX1RPVUNIU1RBUlRfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub25Ub3VjaE1vdmU9ZnVuY3Rpb24obSl7dGhpcy5fYWRkQ2FsbGJhY2tGb3JFdmVudChwLl9UT1VDSE1PVkVfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub2ZmVG91Y2hNb3ZlPWZ1bmN0aW9uKG0pe3RoaXMuX3JlbW92ZUNhbGxiYWNrRm9yRXZlbnQocC5fVE9VQ0hNT1ZFX0VWRU5UX05BTUUsCm0pfTtwLnByb3RvdHlwZS5vblRvdWNoRW5kPWZ1bmN0aW9uKG0pe3RoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQocC5fVE9VQ0hFTkRfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub2ZmVG91Y2hFbmQ9ZnVuY3Rpb24obSl7dGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChwLl9UT1VDSEVORF9FVkVOVF9OQU1FLG0pfTtwLnByb3RvdHlwZS5vblRvdWNoQ2FuY2VsPWZ1bmN0aW9uKG0pe3RoaXMuX2FkZENhbGxiYWNrRm9yRXZlbnQocC5fVE9VQ0hDQU5DRUxfRVZFTlRfTkFNRSxtKX07cC5wcm90b3R5cGUub2ZmVG91Y2hDYW5jZWw9ZnVuY3Rpb24obSl7dGhpcy5fcmVtb3ZlQ2FsbGJhY2tGb3JFdmVudChwLl9UT1VDSENBTkNFTF9FVkVOVF9OQU1FLG0pfTtwLnByb3RvdHlwZS5fbWVhc3VyZUFuZERpc3BhdGNoPWZ1bmN0aW9uKG0sbixxLHUpe3ZvaWQgMD09PXUmJih1PSJlbGVtZW50Iik7aWYoInBhZ2UiIT09dSYmImVsZW1lbnQiIT09dSl0aHJvdyBFcnJvcigiSW52YWxpZCBzY29wZSAnIisKdSsiJywgbXVzdCBiZSAnZWxlbWVudCcgb3IgJ3BhZ2UnIik7aWYoImVsZW1lbnQiIT09dXx8dGhpcy5ldmVudEluc2lkZShtLG4pKXttPW4uY2hhbmdlZFRvdWNoZXM7dT17fTtmb3IodmFyIHg9W10sQT0wO0E8bS5sZW5ndGg7QSsrKXt2YXIgeT1tW0FdLHc9eS5pZGVudGlmaWVyO3k9dGhpcy5fdHJhbnNsYXRvci5jb21wdXRlUG9zaXRpb24oeS5jbGllbnRYLHkuY2xpZW50WSk7bnVsbCE9eSYmKHVbd109eSx4LnB1c2godykpfTA8eC5sZW5ndGgmJnRoaXMuX2NhbGxDYWxsYmFja3NGb3JFdmVudChxLHgsdSxuKX19O3AucHJvdG90eXBlLmV2ZW50SW5zaWRlPWZ1bmN0aW9uKG0sbil7cmV0dXJuIHQuVHJhbnNsYXRvci5pc0V2ZW50SW5zaWRlKG0sbil9O3JldHVybiBwfShoKDI0KS5EaXNwYXRjaGVyKTtkLl9ESVNQQVRDSEVSX0tFWT0iX19QbG90dGFibGVfRGlzcGF0Y2hlcl9Ub3VjaCI7ZC5fVE9VQ0hTVEFSVF9FVkVOVF9OQU1FPSJ0b3VjaHN0YXJ0IjtkLl9UT1VDSE1PVkVfRVZFTlRfTkFNRT0KInRvdWNobW92ZSI7ZC5fVE9VQ0hFTkRfRVZFTlRfTkFNRT0idG91Y2hlbmQiO2QuX1RPVUNIQ0FOQ0VMX0VWRU5UX05BTUU9InRvdWNoY2FuY2VsIjtmLlRvdWNoPWR9LGZ1bmN0aW9uKGQsZil7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoayx0LGwpe3ZvaWQgMD09PWwmJihsPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvKTt0aGlzLnNjcmVlbldpZHRoPWs7dGhpcy5zY3JlZW5IZWlnaHQ9dDt0aGlzLmRldmljZVBpeGVsUmF0aW89bDt0aGlzLnBpeGVsV2lkdGg9aypsO3RoaXMucGl4ZWxIZWlnaHQ9dCpsO3RoaXMuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpO3RoaXMuY3R4PXRoaXMuY2FudmFzLmdldENvbnRleHQoIjJkIik7aC5zaXplUGl4ZWxzKHRoaXMuY3R4LGssdCxsKX1oLnNpemVQaXhlbHM9ZnVuY3Rpb24oayx0LGwscCl7dmFyIG09ay5jYW52YXM7bS53aWR0aD10KnA7bS5oZWlnaHQ9bCpwO20uc3R5bGUud2lkdGg9dCsicHgiO20uc3R5bGUuaGVpZ2h0PQpsKyJweCI7ay5zZXRUcmFuc2Zvcm0oMSwwLDAsMSwwLDApO2suc2NhbGUocCxwKX07aC5wcm90b3R5cGUuYmxpdD1mdW5jdGlvbihrLHQsbCl7dm9pZCAwPT09dCYmKHQ9MCk7dm9pZCAwPT09bCYmKGw9MCk7ay5kcmF3SW1hZ2UodGhpcy5jYW52YXMsdCxsLHRoaXMuc2NyZWVuV2lkdGgsdGhpcy5zY3JlZW5IZWlnaHQpfTtoLnByb3RvdHlwZS5ibGl0Q2VudGVyPWZ1bmN0aW9uKGssdCxsKXt2b2lkIDA9PT10JiYodD0wKTt2b2lkIDA9PT1sJiYobD0wKTt0aGlzLmJsaXQoayxNYXRoLmZsb29yKHQtdGhpcy5zY3JlZW5XaWR0aC8yKSxNYXRoLmZsb29yKGwtdGhpcy5zY3JlZW5IZWlnaHQvMikpfTtoLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oayx0LGwpe3ZvaWQgMD09PWwmJihsPSExKTt2YXIgcD10aGlzLmRldmljZVBpeGVsUmF0aW87dGhpcy5zY3JlZW5XaWR0aD1rO3RoaXMuc2NyZWVuSGVpZ2h0PXQ7dGhpcy5waXhlbFdpZHRoPWsqcDt0aGlzLnBpeGVsSGVpZ2h0PXQqcDsKaC5zaXplUGl4ZWxzKHRoaXMuY3R4LGssdCxwKTtsJiZ0aGlzLmN0eC50cmFuc2xhdGUoay8yLGsvMik7cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKGspe3ZhciB0PXRoaXMucGl4ZWxXaWR0aCxsPXRoaXMucGl4ZWxIZWlnaHQscD10aGlzLmN0eDtwLnNhdmUoKTtwLnNldFRyYW5zZm9ybSgxLDAsMCwxLDAsMCk7bnVsbD09az9wLmNsZWFyUmVjdCgwLDAsdCxsKToocC5maWxsU3R5bGU9ayxwLmZpbGxSZWN0KDAsMCx0LGwpKTtwLnJlc3RvcmUoKTtyZXR1cm4gdGhpc307aC5wcm90b3R5cGUuZ2V0SW1hZ2VEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3R4LmdldEltYWdlRGF0YSgwLDAsdGhpcy5waXhlbFdpZHRoLHRoaXMucGl4ZWxIZWlnaHQpfTtyZXR1cm4gaH0oKTtmLkNhbnZhc0J1ZmZlcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9CnB9Zm9yKHZhciBxIGluIG0pbS5oYXNPd25Qcm9wZXJ0eShxKSYmKHBbcV09bVtxXSk7cC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfSx0PWgoMTMpLGw9aCgwKTtkPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIG0oKXt2YXIgbj1udWxsIT09cCYmcC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXM7bi5fY2xpY2tlZERvd249ITE7bi5fZG91YmxlQ2xpY2tpbmc9ITE7bi5fb25DbGlja0NhbGxiYWNrcz1uZXcgbC5DYWxsYmFja1NldDtuLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O24uX21vdXNlRG93bkNhbGxiYWNrPWZ1bmN0aW9uKHEpe3JldHVybiBuLl9oYW5kbGVDbGlja0Rvd24ocSl9O24uX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbihxLHUpe3JldHVybiBuLl9oYW5kbGVDbGlja1VwKHEsdSl9O24uX2RibENsaWNrQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1KXtyZXR1cm4gbi5faGFuZGxlRGJsQ2xpY2socSwKdSl9O24uX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbihxLHUpe3JldHVybiBuLl9oYW5kbGVDbGlja0Rvd24odVtxWzBdXSl9O24uX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1LHgpe3JldHVybiBuLl9oYW5kbGVDbGlja1VwKHVbcVswXV0seCl9O24uX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbi5fY2xpY2tlZERvd249ITF9O3JldHVybiBufWsobSxwKTttLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKG4pe3AucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLG4pO3RoaXMuX21vdXNlRGlzcGF0Y2hlcj10Lk1vdXNlLmdldERpc3BhdGNoZXIobik7dGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayk7dGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uRGJsQ2xpY2sodGhpcy5fZGJsQ2xpY2tDYWxsYmFjayk7CnRoaXMuX3RvdWNoRGlzcGF0Y2hlcj10LlRvdWNoLmdldERpc3BhdGNoZXIobik7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfTttLnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXtwLnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VEb3duKHRoaXMuX21vdXNlRG93bkNhbGxiYWNrKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmTW91c2VVcCh0aGlzLl9tb3VzZVVwQ2FsbGJhY2spO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZEYmxDbGljayh0aGlzLl9kYmxDbGlja0NhbGxiYWNrKTt0aGlzLl9tb3VzZURpc3BhdGNoZXI9bnVsbDt0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hTdGFydCh0aGlzLl90b3VjaFN0YXJ0Q2FsbGJhY2spOwp0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlcj1udWxsfTttLnByb3RvdHlwZS5faGFuZGxlQ2xpY2tEb3duPWZ1bmN0aW9uKG4pe249dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuKTt0aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKSYmKHRoaXMuX2NsaWNrZWREb3duPSEwLHRoaXMuX2NsaWNrZWRQb2ludD1uKX07bS5wcm90b3R5cGUuX2hhbmRsZUNsaWNrVXA9ZnVuY3Rpb24obixxKXt2YXIgdT10aGlzLHg9dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuKTt0aGlzLl9jbGlja2VkRG93biYmbS5fcG9pbnRzRXF1YWwoeCx0aGlzLl9jbGlja2VkUG9pbnQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dS5fZG91YmxlQ2xpY2tpbmd8fHUuX29uQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh4LApxKX0sMCk7dGhpcy5fY2xpY2tlZERvd249ITF9O20ucHJvdG90eXBlLl9oYW5kbGVEYmxDbGljaz1mdW5jdGlvbihuLHEpe3ZhciB1PXRoaXM7bj10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKG4pO3RoaXMuX2RvdWJsZUNsaWNraW5nPSEwO3RoaXMuX29uRG91YmxlQ2xpY2tDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuLHEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gdS5fZG91YmxlQ2xpY2tpbmc9ITF9LDApfTttLl9wb2ludHNFcXVhbD1mdW5jdGlvbihuLHEpe3JldHVybiBuLng9PT1xLngmJm4ueT09PXEueX07bS5wcm90b3R5cGUub25DbGljaz1mdW5jdGlvbihuKXt0aGlzLl9vbkNsaWNrQ2FsbGJhY2tzLmFkZChuKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUub2ZmQ2xpY2s9ZnVuY3Rpb24obil7dGhpcy5fb25DbGlja0NhbGxiYWNrcy5kZWxldGUobik7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9uRG91YmxlQ2xpY2s9ZnVuY3Rpb24obil7dGhpcy5fb25Eb3VibGVDbGlja0NhbGxiYWNrcy5hZGQobil9OwptLnByb3RvdHlwZS5vZmZEb3VibGVDbGljaz1mdW5jdGlvbihuKXt0aGlzLl9vbkRvdWJsZUNsaWNrQ2FsbGJhY2tzLmRlbGV0ZShuKTtyZXR1cm4gdGhpc307cmV0dXJuIG19KGgoMTUpLkludGVyYWN0aW9uKTtmLkNsaWNrPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX0sdD1oKDEzKSxsPWgoMCk7ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKCl7dmFyIG49bnVsbCE9PXAmJnAuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzO24uX2RyYWdnaW5nPSExO24uX2NvbnN0cmFpbmVkVG9Db21wb25lbnQ9ITA7bi5fbW91c2VGaWx0ZXI9bS5fREVGQVVMVF9NT1VTRV9GSUxURVI7Cm4uX2RyYWdTdGFydENhbGxiYWNrcz1uZXcgbC5DYWxsYmFja1NldDtuLl9kcmFnQ2FsbGJhY2tzPW5ldyBsLkNhbGxiYWNrU2V0O24uX2RyYWdFbmRDYWxsYmFja3M9bmV3IGwuQ2FsbGJhY2tTZXQ7bi5fbW91c2VEb3duQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1KXtyZXR1cm4gbi5fc3RhcnREcmFnKHEsdSl9O24uX21vdXNlTW92ZUNhbGxiYWNrPWZ1bmN0aW9uKHEpe3JldHVybiBuLl9kb0RyYWcocSl9O24uX21vdXNlVXBDYWxsYmFjaz1mdW5jdGlvbihxLHUpe3JldHVybiBuLl9lbmREcmFnKHEsdSl9O24uX3RvdWNoU3RhcnRDYWxsYmFjaz1mdW5jdGlvbihxLHUseCl7cmV0dXJuIG4uX3N0YXJ0RHJhZyh1W3FbMF1dLHgpfTtuLl90b3VjaE1vdmVDYWxsYmFjaz1mdW5jdGlvbihxLHUpe3JldHVybiBuLl9kb0RyYWcodVtxWzBdXSl9O24uX3RvdWNoRW5kQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1LHgpe3JldHVybiBuLl9lbmREcmFnKHVbcVswXV0seCl9O3JldHVybiBufWsobSxwKTttLnByb3RvdHlwZS5fYW5jaG9yPQpmdW5jdGlvbihuKXtwLnByb3RvdHlwZS5fYW5jaG9yLmNhbGwodGhpcyxuKTt0aGlzLl9tb3VzZURpc3BhdGNoZXI9dC5Nb3VzZS5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlRG93bih0aGlzLl9tb3VzZURvd25DYWxsYmFjayk7dGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub25Nb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyPXQuVG91Y2guZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9uVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaEVuZCh0aGlzLl90b3VjaEVuZENhbGxiYWNrKX07Cm0ucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3AucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZURvd24odGhpcy5fbW91c2VEb3duQ2FsbGJhY2spO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZVVwKHRoaXMuX21vdXNlVXBDYWxsYmFjayk7dGhpcy5fbW91c2VEaXNwYXRjaGVyPW51bGw7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hNb3ZlKHRoaXMuX3RvdWNoTW92ZUNhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub2ZmVG91Y2hFbmQodGhpcy5fdG91Y2hFbmRDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9O20ucHJvdG90eXBlLl90cmFuc2xhdGVBbmRDb25zdHJhaW49CmZ1bmN0aW9uKG4pe249dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuKTtyZXR1cm4gdGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD97eDpsLk1hdGguY2xhbXAobi54LDAsdGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpKSx5OmwuTWF0aC5jbGFtcChuLnksMCx0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLmhlaWdodCgpKX06bn07bS5wcm90b3R5cGUuX3N0YXJ0RHJhZz1mdW5jdGlvbihuLHEpe3EgaW5zdGFuY2VvZiBNb3VzZUV2ZW50JiYhdGhpcy5fbW91c2VGaWx0ZXIocSl8fChuPXRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UobiksdGhpcy5faXNJbnNpZGVDb21wb25lbnQobikmJihxLnByZXZlbnREZWZhdWx0KCksdGhpcy5fZHJhZ2dpbmc9ITAsdGhpcy5fZHJhZ09yaWdpbj1uLHRoaXMuX2RyYWdTdGFydENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKHRoaXMuX2RyYWdPcmlnaW4pKSl9O20ucHJvdG90eXBlLl9kb0RyYWc9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ2dpbmcmJgp0aGlzLl9kcmFnQ2FsbGJhY2tzLmNhbGxDYWxsYmFja3ModGhpcy5fZHJhZ09yaWdpbix0aGlzLl90cmFuc2xhdGVBbmRDb25zdHJhaW4obikpfTttLnByb3RvdHlwZS5fZW5kRHJhZz1mdW5jdGlvbihuLHEpe3EgaW5zdGFuY2VvZiBNb3VzZUV2ZW50JiYwIT09cS5idXR0b258fCF0aGlzLl9kcmFnZ2luZ3x8KHRoaXMuX2RyYWdnaW5nPSExLHRoaXMuX2RyYWdFbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcyh0aGlzLl9kcmFnT3JpZ2luLHRoaXMuX3RyYW5zbGF0ZUFuZENvbnN0cmFpbihuKSkpfTttLnByb3RvdHlwZS5jb25zdHJhaW5lZFRvQ29tcG9uZW50PWZ1bmN0aW9uKCl7dGhpcy5fY29uc3RyYWluZWRUb0NvbXBvbmVudD0hMX07bS5wcm90b3R5cGUubW91c2VGaWx0ZXI9ZnVuY3Rpb24obil7MCE9PWFyZ3VtZW50cy5sZW5ndGgmJih0aGlzLl9tb3VzZUZpbHRlcj1uKX07bS5wcm90b3R5cGUub25EcmFnU3RhcnQ9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ1N0YXJ0Q2FsbGJhY2tzLmFkZChuKX07Cm0ucHJvdG90eXBlLm9mZkRyYWdTdGFydD1mdW5jdGlvbihuKXt0aGlzLl9kcmFnU3RhcnRDYWxsYmFja3MuZGVsZXRlKG4pfTttLnByb3RvdHlwZS5vbkRyYWc9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ0NhbGxiYWNrcy5hZGQobik7cmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLm9mZkRyYWc9ZnVuY3Rpb24obil7dGhpcy5fZHJhZ0NhbGxiYWNrcy5kZWxldGUobil9O20ucHJvdG90eXBlLm9uRHJhZ0VuZD1mdW5jdGlvbihuKXt0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmFkZChuKX07bS5wcm90b3R5cGUub2ZmRHJhZ0VuZD1mdW5jdGlvbihuKXt0aGlzLl9kcmFnRW5kQ2FsbGJhY2tzLmRlbGV0ZShuKX07cmV0dXJuIG19KGgoMTUpLkludGVyYWN0aW9uKTtkLl9ERUZBVUxUX01PVVNFX0ZJTFRFUj1mdW5jdGlvbihwKXtyZXR1cm4gMD09PXAuYnV0dG9ufTtmLkRyYWc9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih1LHgpe2Z1bmN0aW9uIEEoKXt0aGlzLmNvbnN0cnVjdG9yPQp1fWZvcih2YXIgeSBpbiB4KXguaGFzT3duUHJvcGVydHkoeSkmJih1W3ldPXhbeV0pO3UucHJvdG90eXBlPW51bGw9PT14P09iamVjdC5jcmVhdGUoeCk6KEEucHJvdG90eXBlPXgucHJvdG90eXBlLG5ldyBBKX0sdD1oKDEpLGw9aCgxMykscD1oKDMpLG09aCgwKSxuPWgoMjUpO2Q9aCgxNSk7dmFyIHE9aCgyNik7aD1mdW5jdGlvbih1KXtmdW5jdGlvbiB4KEEseSl7dmFyIHc9dS5jYWxsKHRoaXMpfHx0aGlzO3cuX3doZWVsRmlsdGVyPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3cuX3doZWVsQ2FsbGJhY2s9ZnVuY3Rpb24oQyxGKXtyZXR1cm4gdy5faGFuZGxlV2hlZWxFdmVudChDLEYpfTt3Ll90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oQyxGKXtyZXR1cm4gdy5faGFuZGxlVG91Y2hTdGFydChDLEYpfTt3Ll90b3VjaE1vdmVDYWxsYmFjaz1mdW5jdGlvbihDLEYpe3JldHVybiB3Ll9oYW5kbGVQaW5jaChDLEYpfTt3Ll90b3VjaEVuZENhbGxiYWNrPWZ1bmN0aW9uKEMpe3JldHVybiB3Ll9oYW5kbGVUb3VjaEVuZChDKX07CncuX3RvdWNoQ2FuY2VsQ2FsbGJhY2s9ZnVuY3Rpb24oQyl7cmV0dXJuIHcuX2hhbmRsZVRvdWNoRW5kKEMpfTt3Ll9wYW5FbmRDYWxsYmFja3M9bmV3IG0uQ2FsbGJhY2tTZXQ7dy5fem9vbUVuZENhbGxiYWNrcz1uZXcgbS5DYWxsYmFja1NldDt3Ll9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzPW5ldyBtLkNhbGxiYWNrU2V0O3cuX3hTY2FsZXM9bmV3IG0uU2V0O3cuX3lTY2FsZXM9bmV3IG0uU2V0O3cuX2RyYWdJbnRlcmFjdGlvbj1uZXcgbi5EcmFnO3cuX3NldHVwRHJhZ0ludGVyYWN0aW9uKCk7dy5fdG91Y2hJZHM9dC5tYXAoKTt3Ll9taW5Eb21haW5FeHRlbnRzPW5ldyBtLk1hcDt3Ll9tYXhEb21haW5FeHRlbnRzPW5ldyBtLk1hcDt3Ll9taW5Eb21haW5WYWx1ZXM9bmV3IG0uTWFwO3cuX21heERvbWFpblZhbHVlcz1uZXcgbS5NYXA7bnVsbCE9QSYmdy5hZGRYU2NhbGUoQSk7bnVsbCE9eSYmdy5hZGRZU2NhbGUoeSk7cmV0dXJuIHd9ayh4LHUpO3gucHJvdG90eXBlLmRyYWdJbnRlcmFjdGlvbj0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZHJhZ0ludGVyYWN0aW9ufTt4LnByb3RvdHlwZS53aGVlbEZpbHRlcj1mdW5jdGlvbihBKXswIT09YXJndW1lbnRzLmxlbmd0aCYmKHRoaXMuX3doZWVsRmlsdGVyPUEpfTt4LnByb3RvdHlwZS5wYW49ZnVuY3Rpb24oQSl7dmFyIHk9dGhpczt0aGlzLnhTY2FsZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3cucGFuKHkuX2NvbnN0cmFpbmVkVHJhbnNsYXRpb24odyxBLngpKX0pO3RoaXMueVNjYWxlcygpLmZvckVhY2goZnVuY3Rpb24odyl7dy5wYW4oeS5fY29uc3RyYWluZWRUcmFuc2xhdGlvbih3LEEueSkpfSk7dGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCl9O3gucHJvdG90eXBlLnpvb209ZnVuY3Rpb24oQSx5LHcpe3ZhciBDPXRoaXM7dm9pZCAwPT09dyYmKHc9ITApO2lmKG51bGwhPXkpe3ZhciBGPXkueDt2YXIgRD15Lnk7dyYmKHRoaXMueFNjYWxlcygpLmZvckVhY2goZnVuY3Rpb24oQil7Qj1DLl9jb25zdHJhaW5lZFpvb20oQiwKQSxGKTtGPUIuY2VudGVyUG9pbnQ7QT1CLnpvb21BbW91bnR9KSx0aGlzLnlTY2FsZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKEIpe0I9Qy5fY29uc3RyYWluZWRab29tKEIsQSxEKTtEPUIuY2VudGVyUG9pbnQ7QT1CLnpvb21BbW91bnR9KSl9dGhpcy54U2NhbGVzKCkuZm9yRWFjaChmdW5jdGlvbihCKXt2YXIgST1CLnJhbmdlKCk7Qi56b29tKEEsbnVsbD09Rj8oSVsxXStJWzBdKS8yOkYpfSk7dGhpcy55U2NhbGVzKCkuZm9yRWFjaChmdW5jdGlvbihCKXt2YXIgST1CLnJhbmdlKCk7Qi56b29tKEEsbnVsbD09RD8oSVsxXStJWzBdKS8yOkQpfSk7dGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCk7cmV0dXJue3pvb21BbW91bnQ6QSxjZW50ZXJWYWx1ZTp7Y2VudGVyWDpGLGNlbnRlclk6RH19fTt4LnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKEEpe3UucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLEEpO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5hdHRhY2hUbyhBKTsKdGhpcy5fbW91c2VEaXNwYXRjaGVyPWwuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbCh0aGlzLl93aGVlbENhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXI9bC5Ub3VjaC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoU3RhcnQodGhpcy5fdG91Y2hTdGFydENhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaE1vdmUodGhpcy5fdG91Y2hNb3ZlQ2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vblRvdWNoQ2FuY2VsKHRoaXMuX3RvdWNoQ2FuY2VsQ2FsbGJhY2spfTt4LnByb3RvdHlwZS5fdW5hbmNob3I9ZnVuY3Rpb24oKXt1LnByb3RvdHlwZS5fdW5hbmNob3IuY2FsbCh0aGlzKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmV2hlZWwodGhpcy5fd2hlZWxDYWxsYmFjayk7CnRoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoTW92ZSh0aGlzLl90b3VjaE1vdmVDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyLm9mZlRvdWNoRW5kKHRoaXMuX3RvdWNoRW5kQ2FsbGJhY2spO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaENhbmNlbCh0aGlzLl90b3VjaENhbmNlbENhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXI9bnVsbDt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoKCl9O3gucHJvdG90eXBlLl9oYW5kbGVUb3VjaFN0YXJ0PWZ1bmN0aW9uKEEseSl7Zm9yKHZhciB3PTA7dzxBLmxlbmd0aCYmMj50aGlzLl90b3VjaElkcy5zaXplKCk7dysrKXt2YXIgQz1BW3ddO3RoaXMuX3RvdWNoSWRzLnNldChDLnRvU3RyaW5nKCksdGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZSh5W0NdKSl9fTsKeC5wcm90b3R5cGUuX2hhbmRsZVBpbmNoPWZ1bmN0aW9uKEEseSl7dmFyIHc9dGhpcztpZighKDI+dGhpcy5fdG91Y2hJZHMuc2l6ZSgpKSl7dmFyIEM9dGhpcy5fdG91Y2hJZHMudmFsdWVzKCk7aWYodGhpcy5faXNJbnNpZGVDb21wb25lbnQodGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShDWzBdKSkmJnRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KHRoaXMuX3RyYW5zbGF0ZVRvQ29tcG9uZW50U3BhY2UoQ1sxXSkpKXt2YXIgRj14Ll9wb2ludERpc3RhbmNlKENbMF0sQ1sxXSk7aWYoMCE9PUYpe0EuZm9yRWFjaChmdW5jdGlvbihPKXt3Ll90b3VjaElkcy5oYXMoTy50b1N0cmluZygpKSYmdy5fdG91Y2hJZHMuc2V0KE8udG9TdHJpbmcoKSx3Ll90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKHlbT10pKX0pO0E9dGhpcy5fdG91Y2hJZHMudmFsdWVzKCk7dmFyIEQ9eC5fcG9pbnREaXN0YW5jZShBWzBdLEFbMV0pO2lmKDAhPT1EKXt2YXIgQj1GL0QsST1BLm1hcChmdW5jdGlvbihPLApIKXtyZXR1cm57eDooTy54LUNbSF0ueCkvQix5OihPLnktQ1tIXS55KS9CfX0pO0Y9eC5jZW50ZXJQb2ludChDWzBdLENbMV0pO0Y9dGhpcy56b29tKEIsRik7QT1GLmNlbnRlclZhbHVlO3ZhciBOPUYuem9vbUFtb3VudDtGPUEuY2VudGVyWDtBPUEuY2VudGVyWTtEPUMubWFwKGZ1bmN0aW9uKE8sSCl7cmV0dXJue3g6SVtIXS54Kk4rTy54LHk6SVtIXS55Kk4rTy55fX0pO3RoaXMucGFuKHt4OkYtKERbMF0ueCtEWzFdLngpLzIseTpBLShEWzBdLnkrRFsxXS55KS8yfSl9fX19fTt4LmNlbnRlclBvaW50PWZ1bmN0aW9uKEEseSl7cmV0dXJue3g6KE1hdGgubWluKEEueCx5LngpK01hdGgubWF4KEEueCx5LngpKS8yLHk6KE1hdGgubWF4KEEueSx5LnkpK01hdGgubWluKEEueSx5LnkpKS8yfX07eC5fcG9pbnREaXN0YW5jZT1mdW5jdGlvbihBLHkpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coTWF0aC5tYXgoQS54LHkueCktTWF0aC5taW4oQS54LHkueCksMikrTWF0aC5wb3coTWF0aC5tYXgoQS55LAp5LnkpLU1hdGgubWluKEEueSx5LnkpLDIpKX07eC5wcm90b3R5cGUuX2hhbmRsZVRvdWNoRW5kPWZ1bmN0aW9uKEEpe3ZhciB5PXRoaXM7QS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3kuX3RvdWNoSWRzLnJlbW92ZSh3LnRvU3RyaW5nKCkpfSk7MDx0aGlzLl90b3VjaElkcy5zaXplKCkmJnRoaXMuX3pvb21FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfTt4LnByb3RvdHlwZS5faGFuZGxlV2hlZWxFdmVudD1mdW5jdGlvbihBLHkpe3RoaXMuX3doZWVsRmlsdGVyKHkpJiYoQT10aGlzLl90cmFuc2xhdGVUb0NvbXBvbmVudFNwYWNlKEEpLHRoaXMuX2lzSW5zaWRlQ29tcG9uZW50KEEpJiYoeS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuem9vbShNYXRoLnBvdygyLCgwIT09eS5kZWx0YVk/eS5kZWx0YVk6eS5kZWx0YVgpKih5LmRlbHRhTW9kZT94Ll9QSVhFTFNfUEVSX0xJTkU6MSkqLjAwMiksQSksdGhpcy5fem9vbUVuZENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKCkpKX07eC5wcm90b3R5cGUuX2NvbnN0cmFpbmVkWm9vbT0KZnVuY3Rpb24oQSx5LHcpe3JldHVybiBxLmNvbnN0cmFpbmVkWm9vbShBLHksdyx0aGlzLm1pbkRvbWFpbkV4dGVudChBKSx0aGlzLm1heERvbWFpbkV4dGVudChBKSx0aGlzLm1pbkRvbWFpblZhbHVlKEEpLHRoaXMubWF4RG9tYWluVmFsdWUoQSkpfTt4LnByb3RvdHlwZS5fY29uc3RyYWluZWRUcmFuc2xhdGlvbj1mdW5jdGlvbihBLHkpe3JldHVybiBxLmNvbnN0cmFpbmVkVHJhbnNsYXRpb24oQSx5LHRoaXMubWluRG9tYWluVmFsdWUoQSksdGhpcy5tYXhEb21haW5WYWx1ZShBKSl9O3gucHJvdG90eXBlLl9zZXR1cERyYWdJbnRlcmFjdGlvbj1mdW5jdGlvbigpe3ZhciBBPXRoaXM7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmNvbnN0cmFpbmVkVG9Db21wb25lbnQoKTt2YXIgeTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQoZnVuY3Rpb24oKXtyZXR1cm4geT1udWxsfSk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZyhmdW5jdGlvbih3LEMpezI8PUEuX3RvdWNoSWRzLnNpemUoKXx8CihBLnBhbih7eDoobnVsbD09eT93Lng6eS54KS1DLngseToobnVsbD09eT93Lnk6eS55KS1DLnl9KSx5PUMpfSk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZ0VuZChmdW5jdGlvbigpe3JldHVybiBBLl9wYW5FbmRDYWxsYmFja3MuY2FsbENhbGxiYWNrcygpfSl9O3gucHJvdG90eXBlLl9ub25MaW5lYXJTY2FsZVdpdGhFeHRlbnRzPWZ1bmN0aW9uKEEpe3JldHVybiBudWxsIT10aGlzLm1pbkRvbWFpbkV4dGVudChBKSYmbnVsbCE9dGhpcy5tYXhEb21haW5FeHRlbnQoQSkmJiEoQSBpbnN0YW5jZW9mIHAuTGluZWFyKSYmIShBIGluc3RhbmNlb2YgcC5UaW1lKX07eC5wcm90b3R5cGUueFNjYWxlcz1mdW5jdGlvbigpe3ZhciBBPVtdO3RoaXMuX3hTY2FsZXMuZm9yRWFjaChmdW5jdGlvbih5KXtBLnB1c2goeSl9KTtyZXR1cm4gQX07eC5wcm90b3R5cGUueVNjYWxlcz1mdW5jdGlvbigpe3ZhciBBPVtdO3RoaXMuX3lTY2FsZXMuZm9yRWFjaChmdW5jdGlvbih5KXtBLnB1c2goeSl9KTsKcmV0dXJuIEF9O3gucHJvdG90eXBlLmFkZFhTY2FsZT1mdW5jdGlvbihBKXt0aGlzLl94U2NhbGVzLmFkZChBKX07eC5wcm90b3R5cGUucmVtb3ZlWFNjYWxlPWZ1bmN0aW9uKEEpe3RoaXMuX3hTY2FsZXMuZGVsZXRlKEEpO3RoaXMuX21pbkRvbWFpbkV4dGVudHMuZGVsZXRlKEEpO3RoaXMuX21heERvbWFpbkV4dGVudHMuZGVsZXRlKEEpO3RoaXMuX21pbkRvbWFpblZhbHVlcy5kZWxldGUoQSk7dGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZShBKTtyZXR1cm4gdGhpc307eC5wcm90b3R5cGUuYWRkWVNjYWxlPWZ1bmN0aW9uKEEpe3RoaXMuX3lTY2FsZXMuYWRkKEEpfTt4LnByb3RvdHlwZS5yZW1vdmVZU2NhbGU9ZnVuY3Rpb24oQSl7dGhpcy5feVNjYWxlcy5kZWxldGUoQSk7dGhpcy5fbWluRG9tYWluRXh0ZW50cy5kZWxldGUoQSk7dGhpcy5fbWF4RG9tYWluRXh0ZW50cy5kZWxldGUoQSk7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZShBKTt0aGlzLl9tYXhEb21haW5WYWx1ZXMuZGVsZXRlKEEpOwpyZXR1cm4gdGhpc307eC5wcm90b3R5cGUubWluRG9tYWluRXh0ZW50PWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9taW5Eb21haW5FeHRlbnRzLmdldChBKX07eC5wcm90b3R5cGUubWF4RG9tYWluRXh0ZW50PWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9tYXhEb21haW5FeHRlbnRzLmdldChBKX07eC5wcm90b3R5cGUubWluRG9tYWluVmFsdWU9ZnVuY3Rpb24oQSx5KXtpZihudWxsPT15KXJldHVybiB0aGlzLl9taW5Eb21haW5WYWx1ZXMuZ2V0KEEpO3RoaXMuX21pbkRvbWFpblZhbHVlcy5zZXQoQSx5KTtyZXR1cm4gdGhpc307eC5wcm90b3R5cGUubWF4RG9tYWluVmFsdWU9ZnVuY3Rpb24oQSx5KXtpZihudWxsPT15KXJldHVybiB0aGlzLl9tYXhEb21haW5WYWx1ZXMuZ2V0KEEpO3RoaXMuX21heERvbWFpblZhbHVlcy5zZXQoQSx5KTtyZXR1cm4gdGhpc307eC5wcm90b3R5cGUuc2V0TWluTWF4RG9tYWluVmFsdWVzVG89ZnVuY3Rpb24oQSl7dGhpcy5fbWluRG9tYWluVmFsdWVzLmRlbGV0ZShBKTsKdGhpcy5fbWF4RG9tYWluVmFsdWVzLmRlbGV0ZShBKTt2YXIgeT1BLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCksdz15WzFdO3RoaXMubWluRG9tYWluVmFsdWUoQSx5WzBdKTt0aGlzLm1heERvbWFpblZhbHVlKEEsdyk7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLm9uUGFuRW5kPWZ1bmN0aW9uKEEpe3RoaXMuX3BhbkVuZENhbGxiYWNrcy5hZGQoQSl9O3gucHJvdG90eXBlLm9mZlBhbkVuZD1mdW5jdGlvbihBKXt0aGlzLl9wYW5FbmRDYWxsYmFja3MuZGVsZXRlKEEpO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS5vblpvb21FbmQ9ZnVuY3Rpb24oQSl7dGhpcy5fem9vbUVuZENhbGxiYWNrcy5hZGQoQSl9O3gucHJvdG90eXBlLm9mZlpvb21FbmQ9ZnVuY3Rpb24oQSl7dGhpcy5fem9vbUVuZENhbGxiYWNrcy5kZWxldGUoQSk7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLm9uUGFuWm9vbVVwZGF0ZT1mdW5jdGlvbihBKXt0aGlzLl9wYW5ab29tVXBkYXRlQ2FsbGJhY2tzLmFkZChBKTsKcmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLm9mZlBhblpvb21VcGRhdGU9ZnVuY3Rpb24oQSl7dGhpcy5fcGFuWm9vbVVwZGF0ZUNhbGxiYWNrcy5kZWxldGUoQSk7cmV0dXJuIHRoaXN9O3JldHVybiB4fShkLkludGVyYWN0aW9uKTtoLl9QSVhFTFNfUEVSX0xJTkU9MTIwO2YuUGFuWm9vbT1ofSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9cH1mb3IodmFyIHEgaW4gbSltLmhhc093blByb3BlcnR5KHEpJiYocFtxXT1tW3FdKTtwLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9LHQ9aCgxMyksbD1oKDApO2Q9ZnVuY3Rpb24ocCl7ZnVuY3Rpb24gbSgpe3ZhciBuPW51bGwhPT1wJiZwLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpcztuLl9vdmVyQ29tcG9uZW50PSExO24uX3BvaW50ZXJFbnRlckNhbGxiYWNrcz0KbmV3IGwuQ2FsbGJhY2tTZXQ7bi5fcG9pbnRlck1vdmVDYWxsYmFja3M9bmV3IGwuQ2FsbGJhY2tTZXQ7bi5fcG9pbnRlckV4aXRDYWxsYmFja3M9bmV3IGwuQ2FsbGJhY2tTZXQ7bi5fbW91c2VNb3ZlQ2FsbGJhY2s9ZnVuY3Rpb24ocSx1KXtyZXR1cm4gbi5faGFuZGxlTW91c2VFdmVudChxLHUpfTtuLl90b3VjaFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24ocSx1LHgpe3JldHVybiBuLl9oYW5kbGVUb3VjaEV2ZW50KHVbcVswXV0seCl9O3JldHVybiBufWsobSxwKTttLnByb3RvdHlwZS5fYW5jaG9yPWZ1bmN0aW9uKG4pe3AucHJvdG90eXBlLl9hbmNob3IuY2FsbCh0aGlzLG4pO3RoaXMuX21vdXNlRGlzcGF0Y2hlcj10Lk1vdXNlLmdldERpc3BhdGNoZXIodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyk7dGhpcy5fbW91c2VEaXNwYXRjaGVyLm9uTW91c2VNb3ZlKHRoaXMuX21vdXNlTW92ZUNhbGxiYWNrKTt0aGlzLl90b3VjaERpc3BhdGNoZXI9dC5Ub3VjaC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pOwp0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9O20ucHJvdG90eXBlLl91bmFuY2hvcj1mdW5jdGlvbigpe3AucHJvdG90eXBlLl91bmFuY2hvci5jYWxsKHRoaXMpO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vZmZNb3VzZU1vdmUodGhpcy5fbW91c2VNb3ZlQ2FsbGJhY2spO3RoaXMuX21vdXNlRGlzcGF0Y2hlcj1udWxsO3RoaXMuX3RvdWNoRGlzcGF0Y2hlci5vZmZUb3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyPW51bGx9O20ucHJvdG90eXBlLl9oYW5kbGVNb3VzZUV2ZW50PWZ1bmN0aW9uKG4scSl7cT10aGlzLl9tb3VzZURpc3BhdGNoZXIuZXZlbnRJbnNpZGUodGhpcy5fY29tcG9uZW50QXR0YWNoZWRUbyxxKTt0aGlzLl9oYW5kbGVQb2ludGVyRXZlbnQobixxKX07bS5wcm90b3R5cGUuX2hhbmRsZVRvdWNoRXZlbnQ9ZnVuY3Rpb24obixxKXtxPXRoaXMuX3RvdWNoRGlzcGF0Y2hlci5ldmVudEluc2lkZSh0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvLApxKTt0aGlzLl9oYW5kbGVQb2ludGVyRXZlbnQobixxKX07bS5wcm90b3R5cGUuX2hhbmRsZVBvaW50ZXJFdmVudD1mdW5jdGlvbihuLHEpe249dGhpcy5fdHJhbnNsYXRlVG9Db21wb25lbnRTcGFjZShuKTt2YXIgdT10aGlzLl9pc0luc2lkZUNvbXBvbmVudChuKTt1JiZxPyh0aGlzLl9vdmVyQ29tcG9uZW50fHx0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuY2FsbENhbGxiYWNrcyhuKSx0aGlzLl9wb2ludGVyTW92ZUNhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKG4pKTp0aGlzLl9vdmVyQ29tcG9uZW50JiZ0aGlzLl9wb2ludGVyRXhpdENhbGxiYWNrcy5jYWxsQ2FsbGJhY2tzKG4pO2NvbnNvbGUuZGVidWcodSxxLHRoaXMuX292ZXJDb21wb25lbnQpO3RoaXMuX292ZXJDb21wb25lbnQ9dSYmcX07bS5wcm90b3R5cGUub25Qb2ludGVyRW50ZXI9ZnVuY3Rpb24obil7dGhpcy5fcG9pbnRlckVudGVyQ2FsbGJhY2tzLmFkZChuKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUub2ZmUG9pbnRlckVudGVyPQpmdW5jdGlvbihuKXt0aGlzLl9wb2ludGVyRW50ZXJDYWxsYmFja3MuZGVsZXRlKG4pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5vblBvaW50ZXJNb3ZlPWZ1bmN0aW9uKG4pe3RoaXMuX3BvaW50ZXJNb3ZlQ2FsbGJhY2tzLmFkZChuKX07bS5wcm90b3R5cGUub2ZmUG9pbnRlck1vdmU9ZnVuY3Rpb24obil7dGhpcy5fcG9pbnRlck1vdmVDYWxsYmFja3MuZGVsZXRlKG4pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5vblBvaW50ZXJFeGl0PWZ1bmN0aW9uKG4pe3RoaXMuX3BvaW50ZXJFeGl0Q2FsbGJhY2tzLmFkZChuKX07bS5wcm90b3R5cGUub2ZmUG9pbnRlckV4aXQ9ZnVuY3Rpb24obil7dGhpcy5fcG9pbnRlckV4aXRDYWxsYmFja3MuZGVsZXRlKG4pO3JldHVybiB0aGlzfTtyZXR1cm4gbX0oaCgxNSkuSW50ZXJhY3Rpb24pO2YuUG9pbnRlcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9aCgyMCk7Zi5tZW1UaHVuaz1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxsPTA7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyl0W2xdPQphcmd1bWVudHNbbF07dmFyIHA9dC5zbGljZSgwLC0xKSxtPWsubWVtb2l6ZSh0W3QubGVuZ3RoLTFdKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHE9cC5tYXAoZnVuY3Rpb24odSl7cmV0dXJuIHUuYXBwbHkobil9KTtyZXR1cm4gbS5hcHBseSh2b2lkIDAscSl9fX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoNDkpO2YubWVtb2l6ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBsKCl7Zm9yKHZhciB1PVtdLHg9MDt4PGFyZ3VtZW50cy5sZW5ndGg7eCsrKXVbeF09YXJndW1lbnRzW3hdO2lmKG4pcmV0dXJuIG07eD1rLnNpZ25BcnJheSh1KTt2b2lkIDA9PT1wfHxwLmlzRGlmZmVyZW50KHgpPyhxJiZjb25zb2xlLmxvZygiY2FjaGUgbWlzcyEgY29tcHV0aW5nIikscD14LG09dC5hcHBseSh0aGlzLHUpKTpxJiZjb25zb2xlLmxvZygiY2FjaGUgaGl0ISIpO3JldHVybiBtfXZhciBwPXZvaWQgMCxtLG49ITEscT0hMTtsLmRvTG9ja2VkPWZ1bmN0aW9uKHUpe2lmKG4pdGhyb3cgRXJyb3IoIkxvY2tpbmcgYW4gYWxyZWFkeSBsb2NrZWQgbWVtb2l6ZSBmdW5jdGlvbiEiKTsKbj0hMDt1PXUuYXBwbHkodGhpcyk7bj0hMTtyZXR1cm4gdX07bC5sb2dQZXJmb3JtYW5jZT1mdW5jdGlvbih1KXt2b2lkIDA9PT11JiYodT0hMCk7cT11O3JldHVybiB0aGlzfTtyZXR1cm4gbH19LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obixxKXtmdW5jdGlvbiB1KCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufWZvcih2YXIgeCBpbiBxKXEuaGFzT3duUHJvcGVydHkoeCkmJihuW3hdPXFbeF0pO24ucHJvdG90eXBlPW51bGw9PT1xP09iamVjdC5jcmVhdGUocSk6KHUucHJvdG90eXBlPXEucHJvdG90eXBlLG5ldyB1KX0sdD1oKDMpLGw9aCgwKSxwPWgoMjcpLG09aCgyKTtkPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIHEodSl7dm9pZCAwPT09dSYmKHU9InZlcnRpY2FsIik7dT1uLmNhbGwodGhpcyx1KXx8dGhpczt1Ll9jbHVzdGVyT2Zmc2V0cz1uZXcgbC5NYXA7cmV0dXJuIHV9ayhxLG4pO3EucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvcj0KZnVuY3Rpb24oKXtmdW5jdGlvbiB1KCl7cmV0dXJuIHkucmFuZ2VCYW5kKCl9dmFyIHg9dGhpcyxBPW4ucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLHk9dGhpcy5fbWFrZUlubmVyU2NhbGUoKTtBLndpZHRoPXRoaXMuX2lzVmVydGljYWw/dTpBLndpZHRoO0EuaGVpZ2h0PXRoaXMuX2lzVmVydGljYWw/QS5oZWlnaHQ6dTt2YXIgdz1BLngsQz1BLnk7QS54PXRoaXMuX2lzVmVydGljYWw/ZnVuY3Rpb24oRixELEIpe3JldHVybiB3KEYsRCxCKSt4Ll9jbHVzdGVyT2Zmc2V0cy5nZXQoQil9OmZ1bmN0aW9uKEYsRCxCKXtyZXR1cm4gdyhGLEQsQil9O0EueT10aGlzLl9pc1ZlcnRpY2FsP2Z1bmN0aW9uKEYsRCxCKXtyZXR1cm4gQyhGLEQsQil9OmZ1bmN0aW9uKEYsRCxCKXtyZXR1cm4gQyhGLEQsQikreC5fY2x1c3Rlck9mZnNldHMuZ2V0KEIpfTtyZXR1cm4gQX07cS5wcm90b3R5cGUuX3VwZGF0ZUNsdXN0ZXJQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciB1PQp0aGlzLHg9dGhpcy5fbWFrZUlubmVyU2NhbGUoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihBLHkpe3JldHVybiB1Ll9jbHVzdGVyT2Zmc2V0cy5zZXQoQSx4LnNjYWxlKFN0cmluZyh5KSkteC5yYW5nZUJhbmQoKS8yKX0pfTtxLnByb3RvdHlwZS5fbWFrZUlubmVyU2NhbGU9ZnVuY3Rpb24oKXt2YXIgdT1uZXcgdC5DYXRlZ29yeTt1LmRvbWFpbih0aGlzLmRhdGFzZXRzKCkubWFwKGZ1bmN0aW9uKEEseSl7cmV0dXJuIFN0cmluZyh5KX0pKTt2YXIgeD1tLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuYXR0cihwLkJhci5fQkFSX1RISUNLTkVTU19LRVkpKTt1LnJhbmdlKFswLHgobnVsbCwwLG51bGwpXSk7cmV0dXJuIHV9O3EucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3PWZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQ2x1c3RlclBvc2l0aW9uKCk7cmV0dXJuIG4ucHJvdG90eXBlLl9nZXREYXRhVG9EcmF3LmNhbGwodGhpcyl9O3JldHVybiBxfShwLkJhcik7Zi5DbHVzdGVyZWRCYXI9CmR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oQyxGKXtmdW5jdGlvbiBEKCl7dGhpcy5jb25zdHJ1Y3Rvcj1DfWZvcih2YXIgQiBpbiBGKUYuaGFzT3duUHJvcGVydHkoQikmJihDW0JdPUZbQl0pO0MucHJvdG90eXBlPW51bGw9PT1GP09iamVjdC5jcmVhdGUoRik6KEQucHJvdG90eXBlPUYucHJvdG90eXBlLG5ldyBEKX0sdD1oKDEpLGw9aCg1KSxwPWgoNyksbT1oKDgpLG49aCgzKSxxPWgoMCksdT1oKDQ0KSx4PWgoNDUpLEE9aCg2KSx5PWgoMzUpLHc9aCgyKTtkPWZ1bmN0aW9uKEMpe2Z1bmN0aW9uIEYoKXt2YXIgRD1DLmNhbGwodGhpcyl8fHRoaXM7RC5fc3RhcnRBbmdsZT0wO0QuX2VuZEFuZ2xlPTIqTWF0aC5QSTtELl9sYWJlbEZvcm1hdHRlcj1tLmlkZW50aXR5KCk7RC5fbGFiZWxzRW5hYmxlZD0hMTtELmlubmVyUmFkaXVzKDApO0Qub3V0ZXJSYWRpdXMoZnVuY3Rpb24oKXt2YXIgQj1ELl9waWVDZW50ZXIoKTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoRC53aWR0aCgpLQpCLngsQi54KSxNYXRoLm1heChELmhlaWdodCgpLUIueSxCLnkpKX0pO0QuYWRkQ2xhc3MoInBpZS1wbG90Iik7RC5hdHRyKCJmaWxsIixmdW5jdGlvbihCLEkpe3JldHVybiBTdHJpbmcoSSl9LG5ldyBuLkNvbG9yKTtELl9zdHJva2VEcmF3ZXJzPW5ldyBxLk1hcDtyZXR1cm4gRH1rKEYsQyk7Ri5wcm90b3R5cGUuX3NldHVwPWZ1bmN0aW9uKCl7dmFyIEQ9dGhpcztDLnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt0aGlzLl9zdHJva2VEcmF3ZXJzLmZvckVhY2goZnVuY3Rpb24oQil7cmV0dXJuIEIuYXR0YWNoVG8oRC5fcmVuZGVyQXJlYSl9KX07Ri5wcm90b3R5cGUuY29tcHV0ZUxheW91dD1mdW5jdGlvbihELEIsSSl7Qy5wcm90b3R5cGUuY29tcHV0ZUxheW91dC5jYWxsKHRoaXMsRCxCLEkpO0Q9dGhpcy5fcGllQ2VudGVyKCk7dGhpcy5fcmVuZGVyQXJlYS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitELngrIiwiK0QueSsiKSIpO0Q9TWF0aC5taW4oTWF0aC5tYXgodGhpcy53aWR0aCgpLQpELngsRC54KSxNYXRoLm1heCh0aGlzLmhlaWdodCgpLUQueSxELnkpKTtudWxsIT10aGlzLmlubmVyUmFkaXVzKCkuc2NhbGUmJnRoaXMuaW5uZXJSYWRpdXMoKS5zY2FsZS5yYW5nZShbMCxEXSk7bnVsbCE9dGhpcy5vdXRlclJhZGl1cygpLnNjYWxlJiZ0aGlzLm91dGVyUmFkaXVzKCkuc2NhbGUucmFuZ2UoWzAsRF0pO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5hZGREYXRhc2V0PWZ1bmN0aW9uKEQpe0MucHJvdG90eXBlLmFkZERhdGFzZXQuY2FsbCh0aGlzLEQpfTtGLnByb3RvdHlwZS5fYWRkRGF0YXNldD1mdW5jdGlvbihEKXtpZigxPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gcS5XaW5kb3cud2FybigiT25seSBvbmUgZGF0YXNldCBpcyBzdXBwb3J0ZWQgaW4gUGllIHBsb3RzIiksdGhpczt0aGlzLl91cGRhdGVQaWVBbmdsZXMoKTt2YXIgQj1uZXcgeC5BcmNPdXRsaW5lU1ZHRHJhd2VyO3RoaXMuX2lzU2V0dXAmJkIuYXR0YWNoVG8odGhpcy5fcmVuZGVyQXJlYSk7CnRoaXMuX3N0cm9rZURyYXdlcnMuc2V0KEQsQik7Qy5wcm90b3R5cGUuX2FkZERhdGFzZXQuY2FsbCh0aGlzLEQpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5yZW1vdmVEYXRhc2V0PWZ1bmN0aW9uKEQpe0MucHJvdG90eXBlLnJlbW92ZURhdGFzZXQuY2FsbCh0aGlzLEQpfTtGLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldE5vZGVzPWZ1bmN0aW9uKEQpe0MucHJvdG90eXBlLl9yZW1vdmVEYXRhc2V0Tm9kZXMuY2FsbCh0aGlzLEQpO3RoaXMuX3N0cm9rZURyYXdlcnMuZ2V0KEQpLnJlbW92ZSgpfTtGLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldD1mdW5jdGlvbihEKXtDLnByb3RvdHlwZS5fcmVtb3ZlRGF0YXNldC5jYWxsKHRoaXMsRCk7dGhpcy5fc3RhcnRBbmdsZXM9W107dGhpcy5fZW5kQW5nbGVzPVtdO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5zZWxlY3Rpb25zPWZ1bmN0aW9uKEQpe3ZhciBCPXRoaXM7dm9pZCAwPT09RCYmKEQ9dGhpcy5kYXRhc2V0cygpKTt2YXIgST1DLnByb3RvdHlwZS5zZWxlY3Rpb25zLmNhbGwodGhpcywKRCkubm9kZXMoKTtELmZvckVhY2goZnVuY3Rpb24oTil7Tj1CLl9zdHJva2VEcmF3ZXJzLmdldChOKTtudWxsIT1OJiZJLnB1c2guYXBwbHkoSSxOLmdldFZpc3VhbFByaW1pdGl2ZXMoKSl9KTtyZXR1cm4gdC5zZWxlY3RBbGwoSSl9O0YucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXtDLnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlLmNhbGwodGhpcyk7dGhpcy5fdXBkYXRlUGllQW5nbGVzKCk7dGhpcy5yZW5kZXIoKX07Ri5wcm90b3R5cGUuX2NyZWF0ZURyYXdlcj1mdW5jdGlvbigpe3JldHVybiBuZXcgQS5Qcm94eURyYXdlcihmdW5jdGlvbigpe3JldHVybiBuZXcgdS5BcmNTVkdEcmF3ZXJ9LGZ1bmN0aW9uKCl7eS53YXJuKCJjYW52YXMgcmVuZGVyZXIgaXMgbm90IHN1cHBvcnRlZCBvbiBQaWUgUGxvdCEiKTtyZXR1cm4gbnVsbH0pfTtGLnByb3RvdHlwZS5lbnRpdGllcz1mdW5jdGlvbihEKXt2YXIgQj10aGlzO3ZvaWQgMD09PUQmJihEPXRoaXMuZGF0YXNldHMoKSk7CnJldHVybiBDLnByb3RvdHlwZS5lbnRpdGllcy5jYWxsKHRoaXMsRCkubWFwKGZ1bmN0aW9uKEkpe0kucG9zaXRpb24ueCs9Qi53aWR0aCgpLzI7SS5wb3NpdGlvbi55Kz1CLmhlaWdodCgpLzI7dmFyIE49dC5zZWxlY3QoQi5fc3Ryb2tlRHJhd2Vycy5nZXQoSS5kYXRhc2V0KS5nZXRWaXN1YWxQcmltaXRpdmVBdEluZGV4KEkuaW5kZXgpKTtJLnN0cm9rZVNlbGVjdGlvbj1OO3JldHVybiBJfSl9O0YucHJvdG90eXBlLnNlY3RvclZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KEYuX1NFQ1RPUl9WQUxVRV9LRVkpfTtGLnByb3RvdHlwZS5pbm5lclJhZGl1cz1mdW5jdGlvbihELEIpe2lmKG51bGw9PUQpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KEYuX0lOTkVSX1JBRElVU19LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShGLl9JTk5FUl9SQURJVVNfS0VZLEQsQik7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUub3V0ZXJSYWRpdXM9CmZ1bmN0aW9uKEQsQil7aWYobnVsbD09RClyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQoRi5fT1VURVJfUkFESVVTX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KEYuX09VVEVSX1JBRElVU19LRVksRCxCKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5zdGFydEFuZ2xlPWZ1bmN0aW9uKEQpe2lmKG51bGw9PUQpcmV0dXJuIHRoaXMuX3N0YXJ0QW5nbGU7dGhpcy5fc3RhcnRBbmdsZT1EO3RoaXMuX3VwZGF0ZVBpZUFuZ2xlcygpO3RoaXMucmVuZGVyKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmVuZEFuZ2xlPWZ1bmN0aW9uKEQpe2lmKG51bGw9PUQpcmV0dXJuIHRoaXMuX2VuZEFuZ2xlO3RoaXMuX2VuZEFuZ2xlPUQ7dGhpcy5fdXBkYXRlUGllQW5nbGVzKCk7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUubGFiZWxzRW5hYmxlZD1mdW5jdGlvbihEKXtpZihudWxsPT1EKXJldHVybiB0aGlzLl9sYWJlbHNFbmFibGVkOwp0aGlzLl9sYWJlbHNFbmFibGVkPUQ7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUubGFiZWxGb3JtYXR0ZXI9ZnVuY3Rpb24oRCl7aWYobnVsbD09RClyZXR1cm4gdGhpcy5fbGFiZWxGb3JtYXR0ZXI7dGhpcy5fbGFiZWxGb3JtYXR0ZXI9RDt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKEQpe3ZhciBCPXRoaXMud2lkdGgoKS8yLEk9dGhpcy5oZWlnaHQoKS8yO0Q9dGhpcy5fc2xpY2VJbmRleEZvclBvaW50KHt4OkQueC1CLHk6RC55LUl9KTtyZXR1cm4gbnVsbD09RD9bXTpbdGhpcy5lbnRpdGllcygpW0RdXX07Ri5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe3ZhciBEPXRoaXMsQj1DLnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksST13LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuaW5uZXJSYWRpdXMoKSksTj13LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMub3V0ZXJSYWRpdXMoKSk7CkIuZD1mdW5jdGlvbihPLEgsSyl7cmV0dXJuIHQuYXJjKCkuaW5uZXJSYWRpdXMoSShPLEgsSykpLm91dGVyUmFkaXVzKE4oTyxILEspKS5zdGFydEFuZ2xlKEQuX3N0YXJ0QW5nbGVzW0hdKS5lbmRBbmdsZShELl9lbmRBbmdsZXNbSF0pKE8sSCl9O3JldHVybiBCfTtGLnByb3RvdHlwZS5fdXBkYXRlUGllQW5nbGVzPWZ1bmN0aW9uKCl7aWYobnVsbCE9dGhpcy5zZWN0b3JWYWx1ZSgpJiYwIT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aCl7dmFyIEQ9dy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNlY3RvclZhbHVlKCkpLEI9dGhpcy5kYXRhc2V0cygpWzBdLEk9dGhpcy5fZ2V0RGF0YVRvRHJhdygpLmdldChCKTtJPXQucGllKCkuc29ydChudWxsKS5zdGFydEFuZ2xlKHRoaXMuX3N0YXJ0QW5nbGUpLmVuZEFuZ2xlKHRoaXMuX2VuZEFuZ2xlKS52YWx1ZShmdW5jdGlvbihOLE8pe3JldHVybiBEKE4sTyxCKX0pKEkpO3RoaXMuX3N0YXJ0QW5nbGVzPUkubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLnN0YXJ0QW5nbGV9KTsKdGhpcy5fZW5kQW5nbGVzPUkubWFwKGZ1bmN0aW9uKE4pe3JldHVybiBOLmVuZEFuZ2xlfSl9fTtGLnByb3RvdHlwZS5fcGllQ2VudGVyPWZ1bmN0aW9uKCl7dmFyIEQ9dGhpcy5fc3RhcnRBbmdsZTx0aGlzLl9lbmRBbmdsZT90aGlzLl9zdGFydEFuZ2xlOnRoaXMuX2VuZEFuZ2xlLEI9dGhpcy5fc3RhcnRBbmdsZTx0aGlzLl9lbmRBbmdsZT90aGlzLl9lbmRBbmdsZTp0aGlzLl9zdGFydEFuZ2xlLEk9TWF0aC5zaW4oRCk7RD1NYXRoLmNvcyhEKTt2YXIgTj1NYXRoLnNpbihCKTtCPU1hdGguY29zKEIpO3ZhciBPO2lmKDA8PUkmJjA8PU4paWYoMDw9RCYmMDw9Qil7dmFyIEg9RDt2YXIgSz1PPTA7dmFyIE09Tn1lbHNlIDA+RCYmMD5CPyhIPTAsTz0tQixLPTAsTT1JKTowPD1EJiYwPkI/KEg9RCxPPS1CLEs9MCxNPUkpOjA+RCYmMDw9QiYmKEs9Tz1IPTEsTT1NYXRoLm1heChJLE4pKTtlbHNlIDA8PUkmJjA+Tj8wPD1EJiYwPD1CPyhIPU1hdGgubWF4KEQsQiksTT1LPU89MSk6MD5EJiYKMD5CPyhIPTAsTz0xLEs9LU4sTT1JKTowPD1EJiYwPkI/KEg9RCxPPTEsSz0tTixNPTEpOjA+RCYmMDw9QiYmKEg9QixLPU89MSxNPUkpOjA+SSYmMDw9Tj8wPD1EJiYwPD1CPyhIPTEsTz0wLEs9LUksTT1OKTowPkQmJjA+Qj8oSD0xLE89TWF0aC5tYXgoLUQsLUIpLE09Sz0xKTowPD1EJiYwPkI/KEg9MSxPPS1CLEs9LUksTT0xKTowPkQmJjA8PUImJihIPTEsTz0tRCxLPTEsTT1OKTowPkkmJjA+TiYmKDA8PUQmJjA8PUI/KEg9QixPPTAsSz0tSSxNPTApOjA+RCYmMD5CPyhIPTAsTz0tRCxLPS1OLE09MCk6MDw9RCYmMD5CPyhPPUg9MSxLPU1hdGgubWF4KEQsLUIpLE09MSk6MD5EJiYwPD1CJiYoSD1CLE89LUQsSz0xLE09MCkpO3JldHVybnt4OjA9PUsrTT8wOksvKEsrTSkqdGhpcy53aWR0aCgpLHk6MD09SCtPPzA6SC8oSCtPKSp0aGlzLmhlaWdodCgpfX07Ri5wcm90b3R5cGUuX2dldERhdGFUb0RyYXc9ZnVuY3Rpb24oKXt2YXIgRD1DLnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdy5jYWxsKHRoaXMpOwppZigwPT09dGhpcy5kYXRhc2V0cygpLmxlbmd0aClyZXR1cm4gRDt2YXIgQj13LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2VjdG9yVmFsdWUoKSksST10aGlzLmRhdGFzZXRzKClbMF0sTj1ELmdldChJKS5maWx0ZXIoZnVuY3Rpb24oTyxIKXtyZXR1cm4gRi5faXNWYWxpZERhdGEoQihPLEgsSSkpfSk7RC5zZXQoSSxOKTtyZXR1cm4gRH07Ri5faXNWYWxpZERhdGE9ZnVuY3Rpb24oRCl7cmV0dXJuIHEuTWF0aC5pc1ZhbGlkTnVtYmVyKEQpJiYwPD1EfTtGLnByb3RvdHlwZS5fcGl4ZWxQb2ludD1mdW5jdGlvbihELEIsSSl7dmFyIE49dy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnNlY3RvclZhbHVlKCkpO2lmKCFGLl9pc1ZhbGlkRGF0YShOKEQsQixJKSkpcmV0dXJue3g6TmFOLHk6TmFOfTt2YXIgTz13LlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuaW5uZXJSYWRpdXMoKSkoRCxCLEkpO0Q9dy5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLm91dGVyUmFkaXVzKCkpKEQsCkIsSSk7Tz0oTytEKS8yO0Q9dC5waWUoKS5zb3J0KG51bGwpLnZhbHVlKGZ1bmN0aW9uKEgsSyl7SD1OKEgsSyxJKTtyZXR1cm4gRi5faXNWYWxpZERhdGEoSCk/SDowfSkuc3RhcnRBbmdsZSh0aGlzLl9zdGFydEFuZ2xlKS5lbmRBbmdsZSh0aGlzLl9lbmRBbmdsZSkoSS5kYXRhKCkpO0I9KERbQl0uc3RhcnRBbmdsZStEW0JdLmVuZEFuZ2xlKS8yO3JldHVybnt4Ok8qTWF0aC5zaW4oQikseTotTypNYXRoLmNvcyhCKX19O0YucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24oRCl7dmFyIEI9dGhpczt0aGlzLl9yZW5kZXJBcmVhLnNlbGVjdCgiLmxhYmVsLWFyZWEiKS5yZW1vdmUoKTt0aGlzLl9sYWJlbHNFbmFibGVkJiZxLldpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEIuX2RyYXdMYWJlbHMoKX0sRCk7dmFyIEk9dGhpcy5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHMoKSxOPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihPKXt2YXIgSD0Kdy5QbG90LmFwcGx5RHJhd1N0ZXBzKEksTyk7Qi5fc3Ryb2tlRHJhd2Vycy5nZXQoTykuZHJhdyhOLmdldChPKSxIKX0pfTtGLnByb3RvdHlwZS5fZ2VuZXJhdGVTdHJva2VEcmF3U3RlcHM9ZnVuY3Rpb24oKXtyZXR1cm5be2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjpuZXcgcC5OdWxsfV19O0YucHJvdG90eXBlLl9zbGljZUluZGV4Rm9yUG9pbnQ9ZnVuY3Rpb24oRCl7dmFyIEI9TWF0aC5zcXJ0KE1hdGgucG93KEQueCwyKStNYXRoLnBvdyhELnksMikpLEk9TWF0aC5hY29zKC1ELnkvQik7MD5ELngmJihJPTIqTWF0aC5QSS1JKTtmb3IoRD0wO0Q8dGhpcy5fc3RhcnRBbmdsZXMubGVuZ3RoO0QrKylpZih0aGlzLl9zdGFydEFuZ2xlc1tEXTxJJiZ0aGlzLl9lbmRBbmdsZXNbRF0+SSl7dmFyIE49RDticmVha31pZih2b2lkIDAhPT1OKXtEPXRoaXMuZGF0YXNldHMoKVswXTt2YXIgTz1ELmRhdGEoKVtOXTtJPXRoaXMuaW5uZXJSYWRpdXMoKS5hY2Nlc3NvcihPLApOLEQpO0Q9dGhpcy5vdXRlclJhZGl1cygpLmFjY2Vzc29yKE8sTixEKTtpZihCPkkmJkI8RClyZXR1cm4gTn1yZXR1cm4gbnVsbH07Ri5wcm90b3R5cGUuX2RyYXdMYWJlbHM9ZnVuY3Rpb24oKXt2YXIgRD10aGlzLEI9dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksST10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQoImxhYmVsLWFyZWEiLCEwKSxOPW5ldyBsLlN2Z0NvbnRleHQoSS5ub2RlKCkpLE89bmV3IGwuQ2FjaGVNZWFzdXJlcihOKSxIPW5ldyBsLldyaXRlcihPLE4pLEs9dGhpcy5kYXRhc2V0cygpWzBdO3RoaXMuX2dldERhdGFUb0RyYXcoKS5nZXQoSykuZm9yRWFjaChmdW5jdGlvbihNLEwpe3ZhciBRPUQuc2VjdG9yVmFsdWUoKS5hY2Nlc3NvcihNLEwsSyk7aWYocS5NYXRoLmlzVmFsaWROdW1iZXIoUSkpe1E9RC5fbGFiZWxGb3JtYXR0ZXIoUSxNLEwsSyk7dmFyIFQ9Ty5tZWFzdXJlKFEpLFg9KEQuX2VuZEFuZ2xlc1tMXStELl9zdGFydEFuZ2xlc1tMXSkvCjIsYWE9RC5vdXRlclJhZGl1cygpLmFjY2Vzc29yKE0sTCxLKTtELm91dGVyUmFkaXVzKCkuc2NhbGUmJihhYT1ELm91dGVyUmFkaXVzKCkuc2NhbGUuc2NhbGUoYWEpKTt2YXIgbGE9RC5pbm5lclJhZGl1cygpLmFjY2Vzc29yKE0sTCxLKTtELmlubmVyUmFkaXVzKCkuc2NhbGUmJihsYT1ELmlubmVyUmFkaXVzKCkuc2NhbGUuc2NhbGUobGEpKTtsYT0oYWErbGEpLzI7YWE9TWF0aC5zaW4oWCkqbGEtVC53aWR0aC8yO2xhPS1NYXRoLmNvcyhYKSpsYS1ULmhlaWdodC8yO3ZhciBaPVt7eDphYSx5OmxhfSx7eDphYSx5OmxhK1QuaGVpZ2h0fSx7eDphYStULndpZHRoLHk6bGF9LHt4OmFhK1Qud2lkdGgseTpsYStULmhlaWdodH1dOyhYPVouZXZlcnkoZnVuY3Rpb24oYmEpe3JldHVybiBNYXRoLmFicyhiYS54KTw9RC53aWR0aCgpLzImJk1hdGguYWJzKGJhLnkpPD1ELmhlaWdodCgpLzJ9KSkmJihYPVoubWFwKGZ1bmN0aW9uKGJhKXtyZXR1cm4gRC5fc2xpY2VJbmRleEZvclBvaW50KGJhKX0pLmV2ZXJ5KGZ1bmN0aW9uKGJhKXtyZXR1cm4gYmE9PT0KTH0pKTtNPUIuZmlsbChNLEwsSyk7TT0xLjYqcS5Db2xvci5jb250cmFzdCgid2hpdGUiLE0pPHEuQ29sb3IuY29udHJhc3QoImJsYWNrIixNKTthYT1JLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2FhKyIsIitsYSsiKSIpO2FhLmNsYXNzZWQoTT8iZGFyay1sYWJlbCI6ImxpZ2h0LWxhYmVsIiwhMCk7YWEuc3R5bGUoInZpc2liaWxpdHkiLFg/ImluaGVyaXQiOiJoaWRkZW4iKTtILndyaXRlKFEsVC53aWR0aCxULmhlaWdodCx7eEFsaWduOiJjZW50ZXIiLHlBbGlnbjoiY2VudGVyIn0sYWEubm9kZSgpKX19KX07cmV0dXJuIEZ9KHcuUGxvdCk7ZC5fSU5ORVJfUkFESVVTX0tFWT0iaW5uZXItcmFkaXVzIjtkLl9PVVRFUl9SQURJVVNfS0VZPSJvdXRlci1yYWRpdXMiO2QuX1NFQ1RPUl9WQUxVRV9LRVk9InNlY3Rvci12YWx1ZSI7Zi5QaWU9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih5LHcpe2Z1bmN0aW9uIEMoKXt0aGlzLmNvbnN0cnVjdG9yPQp5fWZvcih2YXIgRiBpbiB3KXcuaGFzT3duUHJvcGVydHkoRikmJih5W0ZdPXdbRl0pO3kucHJvdG90eXBlPW51bGw9PT13P09iamVjdC5jcmVhdGUodyk6KEMucHJvdG90eXBlPXcucHJvdG90eXBlLG5ldyBDKX0sdD1oKDEpLGw9aCg1KSxwPWgoNyksbT1oKDE0KSxuPWgoNikscT1oKDM0KSx1PWgoMykseD1oKDApLEE9aCgyKTtkPWZ1bmN0aW9uKHkpe2Z1bmN0aW9uIHcoKXt2YXIgQz15LmNhbGwodGhpcyl8fHRoaXM7Qy5fbGFiZWxzRW5hYmxlZD0hMTtDLl9sYWJlbD1udWxsO0MuYW5pbWF0b3IoInJlY3RhbmdsZXMiLG5ldyBwLk51bGwpO0MuYWRkQ2xhc3MoInJlY3RhbmdsZS1wbG90Iik7Qy5hdHRyKCJmaWxsIiwobmV3IHUuQ29sb3IpLnJhbmdlKClbMF0pO3JldHVybiBDfWsodyx5KTt3LnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuLlByb3h5RHJhd2VyKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBxLlJlY3RhbmdsZVNWR0RyYXdlcn0sZnVuY3Rpb24oQyl7cmV0dXJuIG5ldyBtLlJlY3RhbmdsZUNhbnZhc0RyYXdlcihDKX0pfTsKdy5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yPWZ1bmN0aW9uKCl7dmFyIEM9dGhpcyxGPXkucHJvdG90eXBlLl9nZW5lcmF0ZUF0dHJUb1Byb2plY3Rvci5jYWxsKHRoaXMpLEQ9QS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSksQj1GW3cuX1gyX0tFWV0sST1BLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueSgpKSxOPUZbdy5fWTJfS0VZXSxPPXRoaXMueCgpLnNjYWxlLEg9dGhpcy55KCkuc2NhbGU7bnVsbCE9Qj8oRi53aWR0aD1mdW5jdGlvbihLLE0sTCl7cmV0dXJuIE1hdGguYWJzKEIoSyxNLEwpLUQoSyxNLEwpKX0sRi54PWZ1bmN0aW9uKEssTSxMKXtyZXR1cm4gTWF0aC5taW4oQihLLE0sTCksRChLLE0sTCkpfSk6KEYud2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gQy5fcmVjdGFuZ2xlV2lkdGgoTyl9LEYueD1mdW5jdGlvbihLLE0sTCl7cmV0dXJuIEQoSyxNLEwpLS41KkYud2lkdGgoSyxNLEwpfSk7bnVsbCE9Tj8oRi5oZWlnaHQ9ZnVuY3Rpb24oSywKTSxMKXtyZXR1cm4gTWF0aC5hYnMoTihLLE0sTCktSShLLE0sTCkpfSxGLnk9ZnVuY3Rpb24oSyxNLEwpe3JldHVybiBNYXRoLm1heChOKEssTSxMKSxJKEssTSxMKSktRi5oZWlnaHQoSyxNLEwpfSk6KEYuaGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIEMuX3JlY3RhbmdsZVdpZHRoKEgpfSxGLnk9ZnVuY3Rpb24oSyxNLEwpe3JldHVybiBJKEssTSxMKS0uNSpGLmhlaWdodChLLE0sTCl9KTtkZWxldGUgRlt3Ll9YMl9LRVldO2RlbGV0ZSBGW3cuX1kyX0tFWV07cmV0dXJuIEZ9O3cucHJvdG90eXBlLl9nZW5lcmF0ZURyYXdTdGVwcz1mdW5jdGlvbigpe3JldHVyblt7YXR0clRvUHJvamVjdG9yOnRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLGFuaW1hdG9yOnRoaXMuX2dldEFuaW1hdG9yKCJyZWN0YW5nbGVzIil9XX07dy5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5PWZ1bmN0aW9uKEMpe3JldHVybiJ4MiI9PT1DP3kucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsCiJ4Iik6InkyIj09PUM/eS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieSIpOnkucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsQyl9O3cucHJvdG90eXBlLng9ZnVuY3Rpb24oQyxGLEQpe2lmKG51bGw9PUMpcmV0dXJuIHkucHJvdG90eXBlLnguY2FsbCh0aGlzKTtudWxsPT1GP3kucHJvdG90eXBlLnguY2FsbCh0aGlzLEMpOnkucHJvdG90eXBlLnguY2FsbCh0aGlzLEMsRixEKTtudWxsIT1GJiYoRD0oQz10aGlzLngyKCkpJiZDLmFjY2Vzc29yLG51bGwhPUQmJnRoaXMuX2JpbmRQcm9wZXJ0eSh3Ll9YMl9LRVksRCxGLEMucG9zdFNjYWxlKSk7RiBpbnN0YW5jZW9mIHUuQ2F0ZWdvcnkmJkYuaW5uZXJQYWRkaW5nKDApLm91dGVyUGFkZGluZygwKTtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUueDI9ZnVuY3Rpb24oQyxGKXtpZihudWxsPT1DKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh3Ll9YMl9LRVkpO3ZhciBEPQp0aGlzLngoKTt0aGlzLl9iaW5kUHJvcGVydHkody5fWDJfS0VZLEMsRCYmRC5zY2FsZSxGKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt3LnByb3RvdHlwZS55PWZ1bmN0aW9uKEMsRixEKXtpZihudWxsPT1DKXJldHVybiB5LnByb3RvdHlwZS55LmNhbGwodGhpcyk7bnVsbD09Rj95LnByb3RvdHlwZS55LmNhbGwodGhpcyxDKTp5LnByb3RvdHlwZS55LmNhbGwodGhpcyxDLEYsRCk7bnVsbCE9RiYmKEQ9KEM9dGhpcy55MigpKSYmQy5hY2Nlc3NvcixudWxsIT1EJiZ0aGlzLl9iaW5kUHJvcGVydHkody5fWTJfS0VZLEQsRixDLnBvc3RTY2FsZSkpO0YgaW5zdGFuY2VvZiB1LkNhdGVnb3J5JiZGLmlubmVyUGFkZGluZygwKS5vdXRlclBhZGRpbmcoMCk7cmV0dXJuIHRoaXN9O3cucHJvdG90eXBlLnkyPWZ1bmN0aW9uKEMsRil7aWYobnVsbD09QylyZXR1cm4gdGhpcy5fcHJvcGVydHlCaW5kaW5ncy5nZXQody5fWTJfS0VZKTt2YXIgRD10aGlzLnkoKTt0aGlzLl9iaW5kUHJvcGVydHkody5fWTJfS0VZLApDLEQmJkQuc2NhbGUsRik7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUuZW50aXRpZXNBdD1mdW5jdGlvbihDKXt2YXIgRj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcihmdW5jdGlvbihEKXt2YXIgQj1ELmRhdHVtLEk9RC5pbmRleCxOPUQuZGF0YXNldDtEPUYueChCLEksTik7dmFyIE89Ri55KEIsSSxOKSxIPUYud2lkdGgoQixJLE4pO0I9Ri5oZWlnaHQoQixJLE4pO3JldHVybiBEPD1DLngmJkMueDw9RCtIJiZPPD1DLnkmJkMueTw9TytCfSl9O3cucHJvdG90eXBlLl9lbnRpdHlCb3VuZHM9ZnVuY3Rpb24oQyl7cmV0dXJuIHRoaXMuX2VudGl0eUJCb3goQy5kYXR1bSxDLmluZGV4LEMuZGF0YXNldCx0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSl9O3cucHJvdG90eXBlLl9lbnRpdHlCQm94PWZ1bmN0aW9uKEMsRixELEIpe3JldHVybnt4OkIueChDLEYsRCkseTpCLnkoQyxGLEQpLHdpZHRoOkIud2lkdGgoQywKRixEKSxoZWlnaHQ6Qi5oZWlnaHQoQyxGLEQpfX07dy5wcm90b3R5cGUubGFiZWw9ZnVuY3Rpb24oQyl7aWYobnVsbD09QylyZXR1cm4gdGhpcy5fbGFiZWw7dGhpcy5fbGFiZWw9Qzt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt3LnByb3RvdHlwZS5sYWJlbHNFbmFibGVkPWZ1bmN0aW9uKEMpe2lmKG51bGw9PUMpcmV0dXJuIHRoaXMuX2xhYmVsc0VuYWJsZWQ7dGhpcy5fbGFiZWxzRW5hYmxlZD1DO3RoaXMucmVuZGVyKCk7cmV0dXJuIHRoaXN9O3cucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgQz15LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyk7bnVsbCE9dGhpcy54MigpJiYoQy54Mj1BLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueDIoKSkpO251bGwhPXRoaXMueTIoKSYmKEMueTI9QS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkyKCkpKTtyZXR1cm4gQ307dy5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24oQywKRixEKXt2YXIgQj10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxJPUIueChDLEYsRCksTj1CLnkoQyxGLEQpLE89Qi53aWR0aChDLEYsRCk7Qz1CLmhlaWdodChDLEYsRCk7cmV0dXJue3g6SStPLzIseTpOK0MvMn19O3cucHJvdG90eXBlLl9yZWN0YW5nbGVXaWR0aD1mdW5jdGlvbihDKXtpZihDIGluc3RhbmNlb2YgdS5DYXRlZ29yeSlyZXR1cm4gQy5yYW5nZUJhbmQoKTt2YXIgRj1DPT09dGhpcy54KCkuc2NhbGU/dGhpcy54KCkuYWNjZXNzb3I6dGhpcy55KCkuYWNjZXNzb3IsRD10LnNldCh4LkFycmF5LmZsYXR0ZW4odGhpcy5kYXRhc2V0cygpLm1hcChmdW5jdGlvbihOKXtyZXR1cm4gTi5kYXRhKCkubWFwKGZ1bmN0aW9uKE8sSCl7cmV0dXJuIEYoTyxILE4pLnZhbHVlT2YoKX0pfSkpKS52YWx1ZXMoKS5tYXAoZnVuY3Rpb24oTil7cmV0dXJuK059KSxCPXguTWF0aC5taW4oRCwwKTtEPXguTWF0aC5tYXgoRCwwKTt2YXIgST1DLnNjYWxlKEIpO3JldHVybihDLnNjYWxlKEQpLQpJKS9NYXRoLmFicyhELUIpfTt3LnByb3RvdHlwZS5fZ2V0RGF0YVRvRHJhdz1mdW5jdGlvbigpe3ZhciBDPW5ldyB4Lk1hcCxGPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3RoaXMuZGF0YXNldHMoKS5mb3JFYWNoKGZ1bmN0aW9uKEQpe3ZhciBCPUQuZGF0YSgpLm1hcChmdW5jdGlvbihJLE4pe3JldHVybiB4Lk1hdGguaXNWYWxpZE51bWJlcihGLngoSSxOLEQpKSYmeC5NYXRoLmlzVmFsaWROdW1iZXIoRi55KEksTixEKSkmJnguTWF0aC5pc1ZhbGlkTnVtYmVyKEYud2lkdGgoSSxOLEQpKSYmeC5NYXRoLmlzVmFsaWROdW1iZXIoRi5oZWlnaHQoSSxOLEQpKT9JOm51bGx9KTtDLnNldChELEIpfSk7cmV0dXJuIEN9O3cucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24oQyl7dmFyIEY9dGhpczt0aGlzLl9yZW5kZXJBcmVhLnNlbGVjdEFsbCgiLmxhYmVsLWFyZWEiKS5yZW1vdmUoKTt0aGlzLl9sYWJlbHNFbmFibGVkJiZudWxsIT10aGlzLmxhYmVsKCkmJnguV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gRi5fZHJhd0xhYmVscygpfSwKQyl9O3cucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIEM9dGhpcyxGPXRoaXMuX2dldERhdGFUb0RyYXcoKTt0aGlzLmRhdGFzZXRzKCkuZm9yRWFjaChmdW5jdGlvbihELEIpe3JldHVybiBDLl9kcmF3TGFiZWwoRixELEIpfSl9O3cucHJvdG90eXBlLl9kcmF3TGFiZWw9ZnVuY3Rpb24oQyxGLEQpe3ZhciBCPXRoaXMsST10aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxOPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJnIikuY2xhc3NlZCgibGFiZWwtYXJlYSIsITApLE89bmV3IGwuU3ZnQ29udGV4dChOLm5vZGUoKSksSD1uZXcgbC5DYWNoZU1lYXN1cmVyKE8pLEs9bmV3IGwuV3JpdGVyKEgsTyk7Tz10aGlzLngoKS5zY2FsZS5yYW5nZSgpO3ZhciBNPXRoaXMueSgpLnNjYWxlLnJhbmdlKCksTD1NYXRoLm1pbi5hcHBseShudWxsLE8pLFE9TWF0aC5tYXguYXBwbHkobnVsbCxPKSxUPU1hdGgubWluLmFwcGx5KG51bGwsTSksWD1NYXRoLm1heC5hcHBseShudWxsLApNKTtDLmdldChGKS5mb3JFYWNoKGZ1bmN0aW9uKGFhLGxhKXtpZihudWxsIT1hYSl7dmFyIFo9IiIrQi5sYWJlbCgpKGFhLGxhLEYpLGJhPUgubWVhc3VyZShaKSxlYT1JLngoYWEsbGEsRiksY2E9SS55KGFhLGxhLEYpLGthPUkud2lkdGgoYWEsbGEsRiksWT1JLmhlaWdodChhYSxsYSxGKTtiYS5oZWlnaHQ8PVkmJmJhLndpZHRoPD1rYSYmKFk9KFktYmEuaGVpZ2h0KS8yLGVhKz0oa2EtYmEud2lkdGgpLzIsY2ErPVksa2E9e21pbjplYSxtYXg6ZWErYmEud2lkdGh9LFk9e21pbjpjYSxtYXg6Y2ErYmEuaGVpZ2h0fSxrYS5taW48THx8a2EubWF4PlF8fFkubWluPFR8fFkubWF4Plh8fEIuX292ZXJsYXlMYWJlbChrYSxZLGxhLEQsQyl8fChhYT1JLmZpbGwoYWEsbGEsRiksYWE9MS42KnguQ29sb3IuY29udHJhc3QoIndoaXRlIixhYSk8eC5Db2xvci5jb250cmFzdCgiYmxhY2siLGFhKSxlYT1OLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2VhKyIsIisKY2ErIikiKSxlYS5jbGFzc2VkKGFhPyJkYXJrLWxhYmVsIjoibGlnaHQtbGFiZWwiLCEwKSxLLndyaXRlKFosYmEud2lkdGgsYmEuaGVpZ2h0LHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSxlYS5ub2RlKCkpKSl9fSl9O3cucHJvdG90eXBlLl9vdmVybGF5TGFiZWw9ZnVuY3Rpb24oQyxGLEQsQixJKXtmb3IodmFyIE49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksTz10aGlzLmRhdGFzZXRzKCksSD1CO0g8Ty5sZW5ndGg7SCsrKWZvcih2YXIgSz1PW0hdLE09SS5nZXQoSyksTD1IPT09Qj9EKzE6MDtMPE0ubGVuZ3RoO0wrKylpZih4LkRPTS5pbnRlcnNlY3RzQkJveChDLEYsdGhpcy5fZW50aXR5QkJveChNW0xdLEwsSyxOKSkpcmV0dXJuITA7cmV0dXJuITF9O3JldHVybiB3fShoKDE2KS5YWVBsb3QpO2QuX1gyX0tFWT0ieDIiO2QuX1kyX0tFWT0ieTIiO2YuUmVjdGFuZ2xlPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oeSwKdyl7ZnVuY3Rpb24gQygpe3RoaXMuY29uc3RydWN0b3I9eX1mb3IodmFyIEYgaW4gdyl3Lmhhc093blByb3BlcnR5KEYpJiYoeVtGXT13W0ZdKTt5LnByb3RvdHlwZT1udWxsPT09dz9PYmplY3QuY3JlYXRlKHcpOihDLnByb3RvdHlwZT13LnByb3RvdHlwZSxuZXcgQyl9LHQ9aCgzMSksbD1oKDYpLHA9aCg0OCksbT1oKDcpLG49aCgxNCkscT1oKDMpLHU9aCgwKSx4PWgoMTkpLEE9aCgyKTtkPWZ1bmN0aW9uKHkpe2Z1bmN0aW9uIHcoKXt2YXIgQz15LmNhbGwodGhpcyl8fHRoaXM7Qy5hZGRDbGFzcygic2NhdHRlci1wbG90Iik7dmFyIEY9bmV3IG0uRWFzaW5nO0Yuc3RhcnREZWxheSg1KTtGLnN0ZXBEdXJhdGlvbigyNTApO0YubWF4VG90YWxEdXJhdGlvbihBLlBsb3QuX0FOSU1BVElPTl9NQVhfRFVSQVRJT04pO0MuYW5pbWF0b3IoeC5BbmltYXRvci5NQUlOLEYpO0MuYXR0cigib3BhY2l0eSIsLjYpO0MuYXR0cigiZmlsbCIsKG5ldyBxLkNvbG9yKS5yYW5nZSgpWzBdKTtDLnNpemUoNik7CnZhciBEPXQuY2lyY2xlKCk7Qy5zeW1ib2woZnVuY3Rpb24oKXtyZXR1cm4gRH0pO3JldHVybiBDfWsodyx5KTt3LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcz1mdW5jdGlvbihDKXt2YXIgRj10aGlzO3JldHVybiB5LnByb3RvdHlwZS5fYnVpbGRMaWdodHdlaWdodFBsb3RFbnRpdGllcy5jYWxsKHRoaXMsQykubWFwKGZ1bmN0aW9uKEQpe3ZhciBCPUEuUGxvdC5fc2NhbGVkQWNjZXNzb3IoRi5zaXplKCkpKEQuZGF0dW0sRC5pbmRleCxELmRhdGFzZXQpO0QuZGlhbWV0ZXI9QjtyZXR1cm4gRH0pfTt3LnByb3RvdHlwZS5fY3JlYXRlRHJhd2VyPWZ1bmN0aW9uKEMpe3ZhciBGPXRoaXM7cmV0dXJuIG5ldyBsLlByb3h5RHJhd2VyKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwLlN5bWJvbFNWR0RyYXdlcn0sZnVuY3Rpb24oRCl7cmV0dXJuIG5ldyBuLkNhbnZhc0RyYXdlcihELHAubWFrZVN5bWJvbENhbnZhc0RyYXdTdGVwKEMsZnVuY3Rpb24oKXtyZXR1cm4gQS5QbG90Ll9zY2FsZWRBY2Nlc3NvcihGLnN5bWJvbCgpKX0sCmZ1bmN0aW9uKCl7cmV0dXJuIEEuUGxvdC5fc2NhbGVkQWNjZXNzb3IoRi5zaXplKCkpfSkpfSl9O3cucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oQyxGKXtpZihudWxsPT1DKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh3Ll9TSVpFX0tFWSk7dGhpcy5fYmluZFByb3BlcnR5KHcuX1NJWkVfS0VZLEMsRik7dGhpcy5yZW5kZXIoKTtyZXR1cm4gdGhpc307dy5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKEMpe2lmKG51bGw9PUMpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHcuX1NZTUJPTF9LRVkpO3RoaXMuX3Byb3BlcnR5QmluZGluZ3Muc2V0KHcuX1NZTUJPTF9LRVkse2FjY2Vzc29yOkN9KTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt3LnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9ZnVuY3Rpb24oKXt2YXIgQz1bXTtpZih0aGlzLl9hbmltYXRlT25OZXh0UmVuZGVyKCkpe3ZhciBGPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpLEQ9QS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnN5bWJvbCgpKTsKRi5kPWZ1bmN0aW9uKEIsSSxOKXtyZXR1cm4gRChCLEksTikoMCkobnVsbCl9O0MucHVzaCh7YXR0clRvUHJvamVjdG9yOkYsYW5pbWF0b3I6dGhpcy5fZ2V0QW5pbWF0b3IoeC5BbmltYXRvci5SRVNFVCl9KX1DLnB1c2goe2F0dHJUb1Byb2plY3Rvcjp0aGlzLl9nZXRBdHRyVG9Qcm9qZWN0b3IoKSxhbmltYXRvcjp0aGlzLl9nZXRBbmltYXRvcih4LkFuaW1hdG9yLk1BSU4pfSk7cmV0dXJuIEN9O3cucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnM9ZnVuY3Rpb24oKXt2YXIgQz15LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzLmNhbGwodGhpcyksRj1BLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMueCgpKSxEPUEuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy55KCkpO0MueD1GO0MueT1EO0MudHJhbnNmb3JtPWZ1bmN0aW9uKEIsSSxOKXtyZXR1cm4idHJhbnNsYXRlKCIrRihCLEksTikrIiwiK0QoQixJLE4pKyIpIn07Qy5kPXRoaXMuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcigpOwpyZXR1cm4gQ307dy5wcm90b3R5cGUuX2NvbnN0cnVjdFN5bWJvbEdlbmVyYXRvcj1mdW5jdGlvbigpe3ZhciBDPUEuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy5zeW1ib2woKSksRj1BLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKTtyZXR1cm4gZnVuY3Rpb24oRCxCLEkpe3JldHVybiBDKEQsQixJKShGKEQsQixJKSkobnVsbCl9fTt3LnByb3RvdHlwZS5fZW50aXR5Qm91bmRzPWZ1bmN0aW9uKEMpe3JldHVybnt4OkMucG9zaXRpb24ueC1DLmRpYW1ldGVyLzIseTpDLnBvc2l0aW9uLnktQy5kaWFtZXRlci8yLHdpZHRoOkMuZGlhbWV0ZXIsaGVpZ2h0OkMuZGlhbWV0ZXJ9fTt3LnByb3RvdHlwZS5fZW50aXR5VmlzaWJsZU9uUGxvdD1mdW5jdGlvbihDLEYpe3ZhciBEPXttaW46Ri50b3BMZWZ0LngsbWF4OkYuYm90dG9tUmlnaHQueH07Rj17bWluOkYudG9wTGVmdC55LG1heDpGLmJvdHRvbVJpZ2h0Lnl9O0M9dGhpcy5fZW50aXR5Qm91bmRzKEMpO3JldHVybiB1LkRPTS5pbnRlcnNlY3RzQkJveChELApGLEMpfTt3LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKEMpe3ZhciBGPUEuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLEQ9QS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSksQj1BLlBsb3QuX3NjYWxlZEFjY2Vzc29yKHRoaXMuc2l6ZSgpKTtyZXR1cm4gdGhpcy5lbnRpdGllcygpLmZpbHRlcihmdW5jdGlvbihJKXt2YXIgTj1JLmRhdHVtLE89SS5pbmRleCxIPUkuZGF0YXNldDtJPUYoTixPLEgpO3ZhciBLPUQoTixPLEgpO049QihOLE8sSCk7cmV0dXJuIEktTi8yPD1DLngmJkMueDw9SStOLzImJkstTi8yPD1DLnkmJkMueTw9SytOLzJ9KX07cmV0dXJuIHd9KGgoMTYpLlhZUGxvdCk7ZC5fU0laRV9LRVk9InNpemUiO2QuX1NZTUJPTF9LRVk9InN5bWJvbCI7Zi5TY2F0dGVyPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odSx4KXtmdW5jdGlvbiBBKCl7dGhpcy5jb25zdHJ1Y3Rvcj11fWZvcih2YXIgeSBpbiB4KXguaGFzT3duUHJvcGVydHkoeSkmJgoodVt5XT14W3ldKTt1LnByb3RvdHlwZT1udWxsPT09eD9PYmplY3QuY3JlYXRlKHgpOihBLnByb3RvdHlwZT14LnByb3RvdHlwZSxuZXcgQSl9LHQ9aCg3KSxsPWgoNikscD1oKDQ3KSxtPWgoMyksbj1oKDM1KSxxPWgoMik7ZD1mdW5jdGlvbih1KXtmdW5jdGlvbiB4KCl7dmFyIEE9dS5jYWxsKHRoaXMpfHx0aGlzO0EuYWRkQ2xhc3MoInNlZ21lbnQtcGxvdCIpO0EuYXR0cigic3Ryb2tlIiwobmV3IG0uQ29sb3IpLnJhbmdlKClbMF0pO0EuYXR0cigic3Ryb2tlLXdpZHRoIiwiMnB4Iik7cmV0dXJuIEF9ayh4LHUpO3gucHJvdG90eXBlLl9jcmVhdGVEcmF3ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGwuUHJveHlEcmF3ZXIoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAuU2VnbWVudFNWR0RyYXdlcn0sZnVuY3Rpb24oKXtuLndhcm4oImNhbnZhcyByZW5kZXJlciBpcyBub3Qgc3VwcG9ydGVkIG9uIFNlZ21lbnQgUGxvdCEiKTtyZXR1cm4gbnVsbH0pfTt4LnByb3RvdHlwZS5fZ2VuZXJhdGVEcmF3U3RlcHM9CmZ1bmN0aW9uKCl7cmV0dXJuW3thdHRyVG9Qcm9qZWN0b3I6dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCksYW5pbWF0b3I6bmV3IHQuTnVsbH1dfTt4LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHk9ZnVuY3Rpb24oQSl7cmV0dXJuIngyIj09PUE/dS5wcm90b3R5cGUuX2ZpbHRlckZvclByb3BlcnR5LmNhbGwodGhpcywieCIpOiJ5MiI9PT1BP3UucHJvdG90eXBlLl9maWx0ZXJGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsInkiKTp1LnByb3RvdHlwZS5fZmlsdGVyRm9yUHJvcGVydHkuY2FsbCh0aGlzLEEpfTt4LnByb3RvdHlwZS54PWZ1bmN0aW9uKEEseSl7aWYobnVsbD09QSlyZXR1cm4gdS5wcm90b3R5cGUueC5jYWxsKHRoaXMpO251bGw9PXk/dS5wcm90b3R5cGUueC5jYWxsKHRoaXMsQSk6KHUucHJvdG90eXBlLnguY2FsbCh0aGlzLEEseSksQT0oQT10aGlzLngyKCkpJiZBLmFjY2Vzc29yLG51bGwhPUEmJnRoaXMuX2JpbmRQcm9wZXJ0eSh4Ll9YMl9LRVksQSx5KSk7cmV0dXJuIHRoaXN9Owp4LnByb3RvdHlwZS54Mj1mdW5jdGlvbihBKXtpZihudWxsPT1BKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldCh4Ll9YMl9LRVkpO3ZhciB5PXRoaXMueCgpO3RoaXMuX2JpbmRQcm9wZXJ0eSh4Ll9YMl9LRVksQSx5JiZ5LnNjYWxlKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS55PWZ1bmN0aW9uKEEseSl7aWYobnVsbD09QSlyZXR1cm4gdS5wcm90b3R5cGUueS5jYWxsKHRoaXMpO251bGw9PXk/dS5wcm90b3R5cGUueS5jYWxsKHRoaXMsQSk6KHUucHJvdG90eXBlLnkuY2FsbCh0aGlzLEEseSksQT0oQT10aGlzLnkyKCkpJiZBLmFjY2Vzc29yLG51bGwhPUEmJnRoaXMuX2JpbmRQcm9wZXJ0eSh4Ll9ZMl9LRVksQSx5KSk7cmV0dXJuIHRoaXN9O3gucHJvdG90eXBlLnkyPWZ1bmN0aW9uKEEpe2lmKG51bGw9PUEpcmV0dXJuIHRoaXMuX3Byb3BlcnR5QmluZGluZ3MuZ2V0KHguX1kyX0tFWSk7dmFyIHk9dGhpcy55KCk7dGhpcy5fYmluZFByb3BlcnR5KHguX1kyX0tFWSwKQSx5JiZ5LnNjYWxlKTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS5fcHJvcGVydHlQcm9qZWN0b3JzPWZ1bmN0aW9uKCl7dmFyIEE9dS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycy5jYWxsKHRoaXMpO0EueDE9cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSk7QS54Mj1udWxsPT10aGlzLngyKCk/cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngoKSk6cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLngyKCkpO0EueTE9cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk7QS55Mj1udWxsPT10aGlzLnkyKCk/cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkoKSk6cS5QbG90Ll9zY2FsZWRBY2Nlc3Nvcih0aGlzLnkyKCkpO3JldHVybiBBfTt4LnByb3RvdHlwZS5lbnRpdGllc0F0PWZ1bmN0aW9uKEEpe0E9dGhpcy5lbnRpdHlOZWFyZXN0KEEpO3JldHVybiBudWxsIT1BP1tBXTpbXX07eC5wcm90b3R5cGUuZW50aXRpZXNJbj1mdW5jdGlvbihBLAp5KXtpZihudWxsPT15KXt2YXIgdz17bWluOkEudG9wTGVmdC54LG1heDpBLmJvdHRvbVJpZ2h0Lnh9O0E9e21pbjpBLnRvcExlZnQueSxtYXg6QS5ib3R0b21SaWdodC55fX1lbHNlIHc9QSxBPXk7cmV0dXJuIHRoaXMuX2VudGl0aWVzSW50ZXJzZWN0aW5nKHcsQSl9O3gucHJvdG90eXBlLl9lbnRpdGllc0ludGVyc2VjdGluZz1mdW5jdGlvbihBLHkpe3ZhciB3PXRoaXMsQz1bXSxGPXRoaXMuX2dldEF0dHJUb1Byb2plY3RvcigpO3RoaXMuZW50aXRpZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKEQpe3cuX2xpbmVJbnRlcnNlY3RzQm94KEQsQSx5LEYpJiZDLnB1c2goRCl9KTtyZXR1cm4gQ307eC5wcm90b3R5cGUuX2xpbmVJbnRlcnNlY3RzQm94PWZ1bmN0aW9uKEEseSx3LEMpe3ZhciBGPXRoaXMsRD1DLngxKEEuZGF0dW0sQS5pbmRleCxBLmRhdGFzZXQpLEI9Qy54MihBLmRhdHVtLEEuaW5kZXgsQS5kYXRhc2V0KSxJPUMueTEoQS5kYXR1bSxBLmluZGV4LEEuZGF0YXNldCk7QT1DLnkyKEEuZGF0dW0sCkEuaW5kZXgsQS5kYXRhc2V0KTtpZih5Lm1pbjw9RCYmRDw9eS5tYXgmJncubWluPD1JJiZJPD13Lm1heHx8eS5taW48PUImJkI8PXkubWF4JiZ3Lm1pbjw9QSYmQTw9dy5tYXgpcmV0dXJuITA7dmFyIE49e3g6RCx5Okl9LE89e3g6Qix5OkF9LEg9W3t4OnkubWluLHk6dy5taW59LHt4OnkubWluLHk6dy5tYXh9LHt4OnkubWF4LHk6dy5tYXh9LHt4OnkubWF4LHk6dy5taW59XTtyZXR1cm4gMDxILmZpbHRlcihmdW5jdGlvbihLLE0pe3JldHVybiAwIT09TT9GLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQoTixPLEssSFtNLTFdKSYmRi5fbGluZUludGVyc2VjdHNTZWdtZW50KEssSFtNLTFdLE4sTyk6ITF9KS5sZW5ndGh9O3gucHJvdG90eXBlLl9saW5lSW50ZXJzZWN0c1NlZ21lbnQ9ZnVuY3Rpb24oQSx5LHcsQyl7ZnVuY3Rpb24gRihELEIsSSl7cmV0dXJuKEIueC1ELngpKihJLnktQi55KS0oQi55LUQueSkqKEkueC1CLngpfXJldHVybiAwPkYoQSx5LHcpKkYoQSx5LEMpfTtyZXR1cm4geH0oaCgxNikuWFlQbG90KTsKZC5fWDJfS0VZPSJ4MiI7ZC5fWTJfS0VZPSJ5MiI7Zi5TZWdtZW50PWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocSx1KXtmdW5jdGlvbiB4KCl7dGhpcy5jb25zdHJ1Y3Rvcj1xfWZvcih2YXIgQSBpbiB1KXUuaGFzT3duUHJvcGVydHkoQSkmJihxW0FdPXVbQV0pO3EucHJvdG90eXBlPW51bGw9PT11P09iamVjdC5jcmVhdGUodSk6KHgucHJvdG90eXBlPXUucHJvdG90eXBlLG5ldyB4KX0sdD1oKDEpLGw9aCg3KSxwPWgoMjApLG09aCgwKTtkPWgoNTApO3ZhciBuPWgoMik7aD1mdW5jdGlvbihxKXtmdW5jdGlvbiB1KCl7dmFyIHg9cS5jYWxsKHRoaXMpfHx0aGlzO3guX3N0YWNraW5nUmVzdWx0PXAubWVtVGh1bmsoZnVuY3Rpb24oKXtyZXR1cm4geC5kYXRhc2V0cygpfSxmdW5jdGlvbigpe3JldHVybiB4LngoKS5hY2Nlc3Nvcn0sZnVuY3Rpb24oKXtyZXR1cm4geC55KCkuYWNjZXNzb3J9LGZ1bmN0aW9uKCl7cmV0dXJuIHguX3N0YWNraW5nT3JkZXJ9LApmdW5jdGlvbihBLHksdyxDKXtyZXR1cm4gbS5TdGFja2luZy5zdGFjayhBLHksdyxDKX0pO3guX3N0YWNrZWRFeHRlbnQ9cC5tZW1UaHVuayh4Ll9zdGFja2luZ1Jlc3VsdCxmdW5jdGlvbigpe3JldHVybiB4LngoKS5hY2Nlc3Nvcn0sZnVuY3Rpb24oKXtyZXR1cm4geC5fZmlsdGVyRm9yUHJvcGVydHkoInkiKX0sZnVuY3Rpb24oQSx5LHcpe3JldHVybiBtLlN0YWNraW5nLnN0YWNrZWRFeHRlbnQoQSx5LHcpfSk7eC5fYmFzZWxpbmVWYWx1ZT0wO3guX3N0YWNraW5nT3JkZXI9ImJvdHRvbXVwIjt4LmFkZENsYXNzKCJzdGFja2VkLWFyZWEtcGxvdCIpO3guYXR0cigiZmlsbC1vcGFjaXR5IiwxKTt4Ll9iYXNlbGluZVZhbHVlUHJvdmlkZXI9ZnVuY3Rpb24oKXtyZXR1cm5beC5fYmFzZWxpbmVWYWx1ZV19O3guY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQoITEpO3JldHVybiB4fWsodSxxKTt1LnByb3RvdHlwZS5jcm9wcGVkUmVuZGVyaW5nRW5hYmxlZD1mdW5jdGlvbih4KXtyZXR1cm4gbnVsbD09Cng/cS5wcm90b3R5cGUuY3JvcHBlZFJlbmRlcmluZ0VuYWJsZWQuY2FsbCh0aGlzKTp4PyhtLldpbmRvdy53YXJuKCJXYXJuaW5nOiBTdGFja2VkIEFyZWEgUGxvdCBkb2VzIG5vdCBzdXBwb3J0IGNyb3BwZWQgcmVuZGVyaW5nLiIpLHRoaXMpOnEucHJvdG90eXBlLmNyb3BwZWRSZW5kZXJpbmdFbmFibGVkLmNhbGwodGhpcyx4KX07dS5wcm90b3R5cGUuX2dldEFuaW1hdG9yPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBsLk51bGx9O3UucHJvdG90eXBlLl9zZXR1cD1mdW5jdGlvbigpe3EucHJvdG90eXBlLl9zZXR1cC5jYWxsKHRoaXMpO3RoaXMuX2Jhc2VsaW5lPXRoaXMuX3JlbmRlckFyZWEuYXBwZW5kKCJsaW5lIikuY2xhc3NlZCgiYmFzZWxpbmUiLCEwKX07dS5wcm90b3R5cGUueD1mdW5jdGlvbih4LEEpe2lmKG51bGw9PXgpcmV0dXJuIHEucHJvdG90eXBlLnguY2FsbCh0aGlzKTtudWxsPT1BP3EucHJvdG90eXBlLnguY2FsbCh0aGlzLHgpOnEucHJvdG90eXBlLnguY2FsbCh0aGlzLAp4LEEpO3RoaXMuX2NoZWNrU2FtZURvbWFpbigpO3JldHVybiB0aGlzfTt1LnByb3RvdHlwZS55PWZ1bmN0aW9uKHgsQSl7aWYobnVsbD09eClyZXR1cm4gcS5wcm90b3R5cGUueS5jYWxsKHRoaXMpO251bGw9PUE/cS5wcm90b3R5cGUueS5jYWxsKHRoaXMseCk6cS5wcm90b3R5cGUueS5jYWxsKHRoaXMseCxBKTt0aGlzLl9jaGVja1NhbWVEb21haW4oKTtyZXR1cm4gdGhpc307dS5wcm90b3R5cGUuc3RhY2tpbmdPcmRlcj1mdW5jdGlvbih4KXtpZihudWxsPT14KXJldHVybiB0aGlzLl9zdGFja2luZ09yZGVyO3RoaXMuX3N0YWNraW5nT3JkZXI9eDt0aGlzLl9vbkRhdGFzZXRVcGRhdGUoKTtyZXR1cm4gdGhpc307dS5wcm90b3R5cGUuZG93bnNhbXBsaW5nRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiBxLnByb3RvdHlwZS5kb3duc2FtcGxpbmdFbmFibGVkLmNhbGwodGhpcyl9O3UucHJvdG90eXBlLl9hZGRpdGlvbmFsUGFpbnQ9ZnVuY3Rpb24oKXt2YXIgeD10aGlzLnkoKS5zY2FsZS5zY2FsZSh0aGlzLl9iYXNlbGluZVZhbHVlKTsKeD17eDE6MCx5MTp4LHgyOnRoaXMud2lkdGgoKSx5Mjp4fTt0aGlzLl9nZXRBbmltYXRvcigiYmFzZWxpbmUiKS5hbmltYXRlKHRoaXMuX2Jhc2VsaW5lLHgpfTt1LnByb3RvdHlwZS5fdXBkYXRlWVNjYWxlPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy55KCk7eD14JiZ4LnNjYWxlO251bGwhPXgmJih4LmFkZFBhZGRpbmdFeGNlcHRpb25zUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSx4LmFkZEluY2x1ZGVkVmFsdWVzUHJvdmlkZXIodGhpcy5fYmFzZWxpbmVWYWx1ZVByb3ZpZGVyKSl9O3UucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLl9jaGVja1NhbWVEb21haW4oKTtxLnByb3RvdHlwZS5fb25EYXRhc2V0VXBkYXRlLmNhbGwodGhpcyk7cmV0dXJuIHRoaXN9O3UucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eT1mdW5jdGlvbih4KXtyZXR1cm4ieSI9PT14P1t0aGlzLl9zdGFja2VkRXh0ZW50KCldOnEucHJvdG90eXBlLmdldEV4dGVudHNGb3JQcm9wZXJ0eS5jYWxsKHRoaXMsCngpfTt1LnByb3RvdHlwZS5fY2hlY2tTYW1lRG9tYWluPWZ1bmN0aW9uKCl7aWYodGhpcy5fcHJvamVjdG9yc1JlYWR5KCkpe3ZhciB4PXRoaXMuZGF0YXNldHMoKSxBPXRoaXMueCgpLmFjY2Vzc29yLHk9eC5tYXAoZnVuY3Rpb24oQyl7cmV0dXJuIHQuc2V0KEMuZGF0YSgpLm1hcChmdW5jdGlvbihGLEQpe3JldHVybiBBKEYsRCxDKS50b1N0cmluZygpfSkpLnZhbHVlcygpfSksdz11Ll9kb21haW5LZXlzKHgsQSk7eS5zb21lKGZ1bmN0aW9uKEMpe3JldHVybiBDLmxlbmd0aCE9PXcubGVuZ3RofSkmJm0uV2luZG93Lndhcm4oInRoZSBkb21haW5zIGFjcm9zcyB0aGUgZGF0YXNldHMgYXJlIG5vdCB0aGUgc2FtZS4gUGxvdCBtYXkgcHJvZHVjZSB1bmludGVuZGVkIGJlaGF2aW9yLiIpfX07dS5fZG9tYWluS2V5cz1mdW5jdGlvbih4LEEpe3ZhciB5PXQuc2V0KCk7eC5mb3JFYWNoKGZ1bmN0aW9uKHcpe3cuZGF0YSgpLmZvckVhY2goZnVuY3Rpb24oQyxGKXt5LmFkZChBKEMsRix3KSl9KX0pOwpyZXR1cm4geS52YWx1ZXMoKX07dS5wcm90b3R5cGUuX3Byb3BlcnR5UHJvamVjdG9ycz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoRCxCLEkpe3JldHVybiBtLlN0YWNraW5nLm5vcm1hbGl6ZUtleShDKEQsQixJKSl9dmFyIEE9dGhpcyx5PXEucHJvdG90eXBlLl9wcm9wZXJ0eVByb2plY3RvcnMuY2FsbCh0aGlzKSx3PXRoaXMueSgpLmFjY2Vzc29yLEM9dGhpcy54KCkuYWNjZXNzb3IsRj10aGlzLl9zdGFja2luZ1Jlc3VsdCgpO3kuZD10aGlzLl9jb25zdHJ1Y3RBcmVhUHJvamVjdG9yKG4uUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy54KCkpLGZ1bmN0aW9uKEQsQixJKXtyZXR1cm4gQS55KCkuc2NhbGUuc2NhbGUoK3coRCxCLEkpK0YuZ2V0KEkpLmdldCh4KEQsQixJKSkub2Zmc2V0KX0sZnVuY3Rpb24oRCxCLEkpe3JldHVybiBBLnkoKS5zY2FsZS5zY2FsZShGLmdldChJKS5nZXQoeChELEIsSSkpLm9mZnNldCl9KTtyZXR1cm4geX07dS5wcm90b3R5cGUuX3BpeGVsUG9pbnQ9ZnVuY3Rpb24oeCwKQSx5KXt2YXIgdz1xLnByb3RvdHlwZS5fcGl4ZWxQb2ludC5jYWxsKHRoaXMseCxBLHkpLEM9dGhpcy54KCkuYWNjZXNzb3IoeCxBLHkpO3g9dGhpcy55KCkuYWNjZXNzb3IoeCxBLHkpO3k9dGhpcy55KCkuc2NhbGUuc2NhbGUoK3grdGhpcy5fc3RhY2tpbmdSZXN1bHQoKS5nZXQoeSkuZ2V0KG0uU3RhY2tpbmcubm9ybWFsaXplS2V5KEMpKS5vZmZzZXQpO3JldHVybnt4OncueCx5fX07cmV0dXJuIHV9KGQuQXJlYSk7Zi5TdGFja2VkQXJlYT1ofSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHUseCl7ZnVuY3Rpb24gQSgpe3RoaXMuY29uc3RydWN0b3I9dX1mb3IodmFyIHkgaW4geCl4Lmhhc093blByb3BlcnR5KHkpJiYodVt5XT14W3ldKTt1LnByb3RvdHlwZT1udWxsPT09eD9PYmplY3QuY3JlYXRlKHgpOihBLnByb3RvdHlwZT14LnByb3RvdHlwZSxuZXcgQSl9LHQ9aCg1KSxsPWgoOCkscD1oKDIwKSxtPWgoMCksbj1oKDI3KSxxPQpoKDIpO2Q9ZnVuY3Rpb24odSl7ZnVuY3Rpb24geChBKXt2b2lkIDA9PT1BJiYoQT0idmVydGljYWwiKTt2YXIgeT11LmNhbGwodGhpcyxBKXx8dGhpczt5Ll9leHRyZW1hRm9ybWF0dGVyPWwuaWRlbnRpdHkoKTt5Ll9zdGFja2luZ1Jlc3VsdD1wLm1lbVRodW5rKGZ1bmN0aW9uKCl7cmV0dXJuIHkuZGF0YXNldHMoKX0sZnVuY3Rpb24oKXtyZXR1cm4geS5wb3NpdGlvbigpLmFjY2Vzc29yfSxmdW5jdGlvbigpe3JldHVybiB5Lmxlbmd0aCgpLmFjY2Vzc29yfSxmdW5jdGlvbigpe3JldHVybiB5Ll9zdGFja2luZ09yZGVyfSxmdW5jdGlvbih3LEMsRixEKXtyZXR1cm4gbS5TdGFja2luZy5zdGFjayh3LEMsRixEKX0pO3kuX3N0YWNrZWRFeHRlbnQ9cC5tZW1UaHVuayh5Ll9zdGFja2luZ1Jlc3VsdCxmdW5jdGlvbigpe3JldHVybiB5LnBvc2l0aW9uKCkuYWNjZXNzb3J9LGZ1bmN0aW9uKCl7cmV0dXJuIHkuX2ZpbHRlckZvclByb3BlcnR5KHkuX2lzVmVydGljYWw/InkiOiJ4Iil9LGZ1bmN0aW9uKHcsCkMsRil7cmV0dXJuIG0uU3RhY2tpbmcuc3RhY2tlZEV4dGVudCh3LEMsRil9KTt5LmFkZENsYXNzKCJzdGFja2VkLWJhci1wbG90Iik7eS5fc3RhY2tpbmdPcmRlcj0iYm90dG9tdXAiO3JldHVybiB5fWsoeCx1KTt4LnByb3RvdHlwZS5zdGFja2luZ09yZGVyPWZ1bmN0aW9uKEEpe2lmKG51bGw9PUEpcmV0dXJuIHRoaXMuX3N0YWNraW5nT3JkZXI7dGhpcy5fc3RhY2tpbmdPcmRlcj1BO3RoaXMuX29uRGF0YXNldFVwZGF0ZSgpO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS5leHRyZW1hRm9ybWF0dGVyPWZ1bmN0aW9uKEEpe2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl9leHRyZW1hRm9ybWF0dGVyO3RoaXMuX2V4dHJlbWFGb3JtYXR0ZXI9QTt0aGlzLnJlbmRlcigpO3JldHVybiB0aGlzfTt4LnByb3RvdHlwZS5fc2V0dXA9ZnVuY3Rpb24oKXt1LnByb3RvdHlwZS5fc2V0dXAuY2FsbCh0aGlzKTt0aGlzLl9sYWJlbEFyZWE9dGhpcy5fcmVuZGVyQXJlYS5hcHBlbmQoImciKS5jbGFzc2VkKG4uQmFyLl9MQUJFTF9BUkVBX0NMQVNTLAohMCk7dmFyIEE9bmV3IHQuU3ZnQ29udGV4dCh0aGlzLl9sYWJlbEFyZWEubm9kZSgpKTt0aGlzLl9tZWFzdXJlcj1uZXcgdC5DYWNoZU1lYXN1cmVyKEEpO3RoaXMuX3dyaXRlcj1uZXcgdC5Xcml0ZXIodGhpcy5fbWVhc3VyZXIsQSl9O3gucHJvdG90eXBlLl9kcmF3TGFiZWxzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShPLEgpe3ZhciBLPXcuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yKCksTT13LndpZHRoKCksTD13LmhlaWdodCgpO08uZm9yRWFjaChmdW5jdGlvbihRKXtpZihRLmV4dGVudCE9PUMpe3ZhciBUPXcuZXh0cmVtYUZvcm1hdHRlcigpKFEuZXh0ZW50KSxYPXcuX21lYXN1cmVyLm1lYXN1cmUoVCksYWE9US5zdGFja2VkRGF0dW0sbGE9YWEub3JpZ2luYWxEYXR1bSxaPWFhLm9yaWdpbmFsSW5kZXg7YWE9YWEub3JpZ2luYWxEYXRhc2V0O3cuX2lzRGF0dW1PblNjcmVlbihLLE0sTCxsYSxaLGFhKSYmKGxhPXEuUGxvdC5fc2NhbGVkQWNjZXNzb3Iody5hdHRyKG4uQmFyLl9CQVJfVEhJQ0tORVNTX0tFWSkpKGxhLApaLGFhKSxaPUQuc2NhbGUoUS5leHRlbnQpLFE9dy5fZ2V0UG9zaXRpb25BdHRyKEYuc2NhbGUoUS5heGlzVmFsdWUpLGxhKStsYS8yLFE9SCh3Ll9pc1ZlcnRpY2FsP3t4OlEseTpafTp7eDpaLHk6UX0sWCxsYSksVD15KFQse3RvcExlZnQ6USxib3R0b21SaWdodDp7eDpRLngrWC53aWR0aCx5OlEueStYLmhlaWdodH19LGxhKSxOLnB1c2goVCkpfX0pfWZ1bmN0aW9uIHkoTyxILEspe3ZhciBNPUgudG9wTGVmdCxMPU0ueCxRPU0ueTtNPUguYm90dG9tUmlnaHQueC1ILnRvcExlZnQueDtIPUguYm90dG9tUmlnaHQueS1ILnRvcExlZnQueTtLPXcuX2lzVmVydGljYWw/TT5LOkg+SztLfHwoTD13Ll9sYWJlbEFyZWEuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTCsiLCAiK1ErIikiKSxMLmNsYXNzZWQoInN0YWNrZWQtYmFyLWxhYmVsIiwhMCksdy5fd3JpdGVyLndyaXRlKE8sTSxILHt4QWxpZ246ImNlbnRlciIseUFsaWduOiJjZW50ZXIifSxMLm5vZGUoKSkpOwpyZXR1cm4gS312YXIgdz10aGlzO3UucHJvdG90eXBlLl9kcmF3TGFiZWxzLmNhbGwodGhpcyk7dGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3ZhciBDPSt0aGlzLmJhc2VsaW5lVmFsdWUoKSxGPXRoaXMucG9zaXRpb24oKS5zY2FsZSxEPXRoaXMubGVuZ3RoKCkuc2NhbGUsQj1tLlN0YWNraW5nLnN0YWNrZWRFeHRlbnRzKHRoaXMuX3N0YWNraW5nUmVzdWx0KCkpLEk9Qi5taW5pbXVtRXh0ZW50cyxOPVtdO0EoQi5tYXhpbXVtRXh0ZW50cyxmdW5jdGlvbihPLEgpe3ZhciBLPXcuX2lzVmVydGljYWw/SC53aWR0aDpILmhlaWdodDtIPXcuX2lzVmVydGljYWw/SC5oZWlnaHQ6SC53aWR0aDtyZXR1cm57eDp3Ll9pc1ZlcnRpY2FsP08ueC1LLzI6Ty54K3guX0VYVFJFTUFfTEFCRUxfTUFSR0lOX0ZST01fQkFSLHk6dy5faXNWZXJ0aWNhbD9PLnktSDpPLnktSy8yfX0pO0EoSSxmdW5jdGlvbihPLEgpe3ZhciBLPXcuX2lzVmVydGljYWw/SC53aWR0aDpILmhlaWdodDsKSD13Ll9pc1ZlcnRpY2FsP0guaGVpZ2h0Okgud2lkdGg7cmV0dXJue3g6dy5faXNWZXJ0aWNhbD9PLngtSy8yOk8ueC1ILHk6dy5faXNWZXJ0aWNhbD9PLnkreC5fRVhUUkVNQV9MQUJFTF9NQVJHSU5fRlJPTV9CQVI6Ty55LUsvMn19KTtOLnNvbWUoZnVuY3Rpb24oTyl7cmV0dXJuIE99KSYmdGhpcy5fbGFiZWxBcmVhLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpfTt4LnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBBKE0sTCxRKXtyZXR1cm4gMD4rTyhNLEwsUSk/QyhNLEwsUSk6dyhNLEwsUSl9ZnVuY3Rpb24geShNLEwsUSl7cmV0dXJuIE1hdGguYWJzKHcoTSxMLFEpLUMoTSxMLFEpKX1mdW5jdGlvbiB3KE0sTCxRKXtyZXR1cm4gTi5zY2FsZSgrTyhNLEwsUSkrSy5nZXQoUSkuZ2V0KEYoTSxMLFEpKS5vZmZzZXQpfWZ1bmN0aW9uIEMoTSxMLFEpe3JldHVybiBOLnNjYWxlKEsuZ2V0KFEpLmdldChGKE0sTCxRKSkub2Zmc2V0KX1mdW5jdGlvbiBGKE0sCkwsUSl7cmV0dXJuIG0uU3RhY2tpbmcubm9ybWFsaXplS2V5KEgoTSxMLFEpKX12YXIgRD10aGlzLEI9dS5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksST10aGlzLl9pc1ZlcnRpY2FsPyJ5IjoieCIsTj10aGlzLmxlbmd0aCgpLnNjYWxlLE89dGhpcy5sZW5ndGgoKS5hY2Nlc3NvcixIPXRoaXMucG9zaXRpb24oKS5hY2Nlc3NvcixLPXRoaXMuX3N0YWNraW5nUmVzdWx0KCk7Qlt0aGlzLl9pc1ZlcnRpY2FsPyJoZWlnaHQiOiJ3aWR0aCJdPXk7QltJXT1mdW5jdGlvbihNLEwsUSl7cmV0dXJuIEQuX2lzVmVydGljYWw/QShNLEwsUSk6QShNLEwsUSkteShNLEwsUSl9O3JldHVybiBCfTt4LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24oQSl7cmV0dXJuIEE9PT0odGhpcy5faXNWZXJ0aWNhbD8ieSI6IngiKT9bdGhpcy5fc3RhY2tlZEV4dGVudCgpXTp1LnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLApBKX07eC5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlPWZ1bmN0aW9uKCl7dS5wcm90b3R5cGUuaW52YWxpZGF0ZUNhY2hlLmNhbGwodGhpcyk7dGhpcy5fbWVhc3VyZXIucmVzZXQoKX07cmV0dXJuIHh9KG4uQmFyKTtkLl9FWFRSRU1BX0xBQkVMX01BUkdJTl9GUk9NX0JBUj01O2YuU3RhY2tlZEJhcj1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKHAsbSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9cH1mb3IodmFyIHEgaW4gbSltLmhhc093blByb3BlcnR5KHEpJiYocFtxXT1tW3FdKTtwLnByb3RvdHlwZT1udWxsPT09bT9PYmplY3QuY3JlYXRlKG0pOihuLnByb3RvdHlwZT1tLnByb3RvdHlwZSxuZXcgbil9LHQ9aCgwKTtkPWgoMjcpO3ZhciBsPWgoMik7aD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKCl7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO24uX2Nvbm5lY3RvcnNFbmFibGVkPSExO24uYWRkQ2xhc3MoIndhdGVyZmFsbC1wbG90Iik7CnJldHVybiBufWsobSxwKTttLnByb3RvdHlwZS5jb25uZWN0b3JzRW5hYmxlZD1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl9jb25uZWN0b3JzRW5hYmxlZDt0aGlzLl9jb25uZWN0b3JzRW5hYmxlZD1uO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS50b3RhbD1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl9wcm9wZXJ0eUJpbmRpbmdzLmdldChtLl9UT1RBTF9LRVkpO3RoaXMuX2JpbmRQcm9wZXJ0eShtLl9UT1RBTF9LRVksbixudWxsKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuX2FkZGl0aW9uYWxQYWludD1mdW5jdGlvbihuKXt2YXIgcT10aGlzO3RoaXMuX2Nvbm5lY3RvckFyZWEuc2VsZWN0QWxsKCJsaW5lIikucmVtb3ZlKCk7dGhpcy5fY29ubmVjdG9yc0VuYWJsZWQmJnQuV2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gcS5fZHJhd0Nvbm5lY3RvcnMoKX0sbil9O20ucHJvdG90eXBlLl9jcmVhdGVOb2Rlc0ZvckRhdGFzZXQ9CmZ1bmN0aW9uKG4pe249cC5wcm90b3R5cGUuX2NyZWF0ZU5vZGVzRm9yRGF0YXNldC5jYWxsKHRoaXMsbik7dGhpcy5fY29ubmVjdG9yQXJlYT10aGlzLl9yZW5kZXJBcmVhLmFwcGVuZCgiZyIpLmNsYXNzZWQobS5fQ09OTkVDVE9SX0FSRUFfQ0xBU1MsITApO3JldHVybiBufTttLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHk9ZnVuY3Rpb24obil7cmV0dXJuInkiPT09bj9bdGhpcy5fZXh0ZW50XTpwLnByb3RvdHlwZS5nZXRFeHRlbnRzRm9yUHJvcGVydHkuY2FsbCh0aGlzLG4pfTttLnByb3RvdHlwZS5fZ2VuZXJhdGVBdHRyVG9Qcm9qZWN0b3I9ZnVuY3Rpb24oKXt2YXIgbj10aGlzLHE9cC5wcm90b3R5cGUuX2dlbmVyYXRlQXR0clRvUHJvamVjdG9yLmNhbGwodGhpcyksdT10aGlzLnkoKS5zY2FsZSx4PWwuUGxvdC5fc2NhbGVkQWNjZXNzb3IodGhpcy50b3RhbCgpKTtudWxsPT10aGlzLmF0dHIoInkiKSYmKHEueT1mdW5jdGlvbihBLHksdyl7dmFyIEM9bi55KCkuYWNjZXNzb3IoQSwKeSx3KTtpZih4KEEseSx3KSlyZXR1cm4gTWF0aC5taW4odS5zY2FsZShDKSx1LnNjYWxlKDApKTtBPW4uX3N1YnRvdGFsc1t5XTtpZigwPT09eSlyZXR1cm4gMD5DP3Uuc2NhbGUoQS1DKTp1LnNjYWxlKEEpO3k9bi5fc3VidG90YWxzW3ktMV07cmV0dXJuIEE+eT91LnNjYWxlKEEpOnUuc2NhbGUoeSl9KTtudWxsPT10aGlzLmF0dHIoImhlaWdodCIpJiYocS5oZWlnaHQ9ZnVuY3Rpb24oQSx5LHcpe3ZhciBDPXgoQSx5LHcpO0E9bi55KCkuYWNjZXNzb3IoQSx5LHcpO2lmKEMpcmV0dXJuIE1hdGguYWJzKHUuc2NhbGUoQSktdS5zY2FsZSgwKSk7Qz1uLl9zdWJ0b3RhbHNbeV07aWYoMD09PXkpcmV0dXJuIE1hdGguYWJzKHUuc2NhbGUoQyktdS5zY2FsZShDLUEpKTt5PW4uX3N1YnRvdGFsc1t5LTFdO3JldHVybiBNYXRoLmFicyh1LnNjYWxlKEMpLXUuc2NhbGUoeSkpfSk7cVsiY2xhc3MiXT1mdW5jdGlvbihBLHksdyl7dmFyIEM9IiI7bnVsbCE9bi5hdHRyKCJjbGFzcyIpJiYoQz1uLmF0dHIoImNsYXNzIikuYWNjZXNzb3IoQSwKeSx3KSsiICIpO2lmKHgoQSx5LHcpKXJldHVybiBDK20uX0JBUl9UT1RBTF9DTEFTUztBPW4ueSgpLmFjY2Vzc29yKEEseSx3KTtyZXR1cm4gQysoMDxBP20uX0JBUl9HUk9XVEhfQ0xBU1M6bS5fQkFSX0RFQ0xJTkVfQ0xBU1MpfTtyZXR1cm4gcX07bS5wcm90b3R5cGUuX29uRGF0YXNldFVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX3VwZGF0ZVN1YnRvdGFscygpO3AucHJvdG90eXBlLl9vbkRhdGFzZXRVcGRhdGUuY2FsbCh0aGlzKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuX2NhbGN1bGF0ZVN1YnRvdGFsc0FuZEV4dGVudD1mdW5jdGlvbihuKXt2YXIgcT10aGlzLHU9TnVtYmVyLk1BWF9WQUxVRSx4PU51bWJlci5NSU5fVkFMVUUsQT0wLHk9ITE7bi5kYXRhKCkuZm9yRWFjaChmdW5jdGlvbih3LEMpe3ZhciBGPXEueSgpLmFjY2Vzc29yKHcsQyxuKTsodz1xLnRvdGFsKCkuYWNjZXNzb3IodyxDLG4pKSYmMCE9PUN8fChBKz1GKTtxLl9zdWJ0b3RhbHMucHVzaChBKTtBPHUmJih1PQpBKTtBPngmJih4PUEpO3cmJihGPHUmJih1PUYpLEY+eCYmKHg9RikpO2lmKCF5JiZ3KXtDPUYtQTtmb3IoRj0wO0Y8cS5fc3VidG90YWxzLmxlbmd0aDtGKyspcS5fc3VidG90YWxzW0ZdKz1DO3k9ITA7QSs9Qzt1Kz1DO3grPUN9fSk7dGhpcy5fZXh0ZW50PVt1LHhdfTttLnByb3RvdHlwZS5fZHJhd0Nvbm5lY3RvcnM9ZnVuY3Rpb24oKXtmb3IodmFyIG49dGhpcy5fZ2V0QXR0clRvUHJvamVjdG9yKCkscT10aGlzLmRhdGFzZXRzKClbMF0sdT0xO3U8cS5kYXRhKCkubGVuZ3RoO3UrKyl7dmFyIHg9dS0xLEE9cS5kYXRhKClbdV0seT1xLmRhdGEoKVt4XTt5PW4ueCh5LHgscSk7dmFyIHc9bi54KEEsdSxxKStuLndpZHRoKEEsdSxxKSxDPW4ueShBLHUscSk7aWYoMDx0aGlzLl9zdWJ0b3RhbHNbdV0mJnRoaXMuX3N1YnRvdGFsc1t1XT50aGlzLl9zdWJ0b3RhbHNbeF18fDA+dGhpcy5fc3VidG90YWxzW3VdJiZ0aGlzLl9zdWJ0b3RhbHNbdV0+PXRoaXMuX3N1YnRvdGFsc1t4XSlDPW4ueShBLAp1LHEpK24uaGVpZ2h0KEEsdSxxKTt0aGlzLl9jb25uZWN0b3JBcmVhLmFwcGVuZCgibGluZSIpLmNsYXNzZWQobS5fQ09OTkVDVE9SX0NMQVNTLCEwKS5hdHRyKCJ4MSIseSkuYXR0cigieDIiLHcpLmF0dHIoInkxIixDKS5hdHRyKCJ5MiIsQyl9fTttLnByb3RvdHlwZS5fdXBkYXRlU3VidG90YWxzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5kYXRhc2V0cygpOzA8bi5sZW5ndGgmJihuPW5bbi5sZW5ndGgtMV0sdGhpcy5fc3VidG90YWxzPVtdLHRoaXMuX2NhbGN1bGF0ZVN1YnRvdGFsc0FuZEV4dGVudChuKSl9O3JldHVybiBtfShkLkJhcik7aC5fQkFSX0RFQ0xJTkVfQ0xBU1M9IndhdGVyZmFsbC1kZWNsaW5lIjtoLl9CQVJfR1JPV1RIX0NMQVNTPSJ3YXRlcmZhbGwtZ3Jvd3RoIjtoLl9CQVJfVE9UQUxfQ0xBU1M9IndhdGVyZmFsbC10b3RhbCI7aC5fQ09OTkVDVE9SX0NMQVNTPSJjb25uZWN0b3IiO2guX0NPTk5FQ1RPUl9BUkVBX0NMQVNTPSJjb25uZWN0b3ItYXJlYSI7aC5fVE9UQUxfS0VZPQoidG90YWwiO2YuV2F0ZXJmYWxsPWh9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX0sdD1oKDEpLGw9aCgwKTtkPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIG0obil7dmFyIHE9cC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChuKXtjYXNlIG51bGw6Y2FzZSB2b2lkIDA6bnVsbD09bS5fcGxvdHRhYmxlQ29sb3JDYWNoZSYmKG0uX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9bS5fZ2V0UGxvdHRhYmxlQ29sb3JzKCkpO249dC5zY2FsZU9yZGluYWwoKS5yYW5nZShtLl9wbG90dGFibGVDb2xvckNhY2hlKTticmVhaztjYXNlICJDYXRlZ29yeTEwIjpjYXNlICJjYXRlZ29yeTEwIjpjYXNlICIxMCI6bj0KdC5zY2FsZU9yZGluYWwodC5zY2hlbWVDYXRlZ29yeTEwKTticmVhaztjYXNlICJDYXRlZ29yeTIwIjpjYXNlICJjYXRlZ29yeTIwIjpjYXNlICIyMCI6bj10LnNjYWxlT3JkaW5hbCh0LnNjaGVtZUNhdGVnb3J5MjApO2JyZWFrO2Nhc2UgIkNhdGVnb3J5MjBiIjpjYXNlICJjYXRlZ29yeTIwYiI6Y2FzZSAiMjBiIjpuPXQuc2NhbGVPcmRpbmFsKHQuc2NoZW1lQ2F0ZWdvcnkyMGIpO2JyZWFrO2Nhc2UgIkNhdGVnb3J5MjBjIjpjYXNlICJjYXRlZ29yeTIwYyI6Y2FzZSAiMjBjIjpuPXQuc2NhbGVPcmRpbmFsKHQuc2NoZW1lQ2F0ZWdvcnkyMGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVuc3VwcG9ydGVkIENvbG9yU2NhbGUgdHlwZSIpO31xLl9kM1NjYWxlPW47cmV0dXJuIHF9ayhtLHApO20ucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKG4pe3JldHVybiBsLkFycmF5LnVuaXEobil9O20ucHJvdG90eXBlLl9nZXRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gbC5BcnJheS51bmlxKHRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkpfTsKbS5pbnZhbGlkYXRlQ29sb3JDYWNoZT1mdW5jdGlvbigpe20uX3Bsb3R0YWJsZUNvbG9yQ2FjaGU9bnVsbH07bS5fZ2V0UGxvdHRhYmxlQ29sb3JzPWZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHE9dC5zZWxlY3QoImJvZHkiKS5hcHBlbmQoInBsb3R0YWJsZS1jb2xvci10ZXN0ZXIiKSx1PWwuQ29sb3IuY29sb3JUZXN0KHEsIiIpLHg9MCxBPWwuQ29sb3IuY29sb3JUZXN0KHEsInBsb3R0YWJsZS1jb2xvcnMtMCIpO251bGwhPUEmJng8dGhpcy5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1MmJihBIT09dXx8QSE9PW5bbi5sZW5ndGgtMV0pOyluLnB1c2goQSkseCsrLEE9bC5Db2xvci5jb2xvclRlc3QocSwicGxvdHRhYmxlLWNvbG9ycy0iK3gpO3EucmVtb3ZlKCk7cmV0dXJuIG59O20ucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKG4pe3ZhciBxPXRoaXMuX2QzU2NhbGUobik7bj10aGlzLmRvbWFpbigpLmluZGV4T2Yobik7bj1NYXRoLmZsb29yKG4vdGhpcy5yYW5nZSgpLmxlbmd0aCk7CnJldHVybiBsLkNvbG9yLmxpZ2h0ZW5Db2xvcihxLE1hdGgubG9nKG4qbS5fTE9PUF9MSUdIVEVOX0ZBQ1RPUisxKSl9O20ucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9O20ucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24obil7aWYobnVsbD09bilyZXR1cm4gdGhpcy5fZDNTY2FsZS5kb21haW4oKTt0aGlzLl9kM1NjYWxlLmRvbWFpbihuKTtyZXR1cm4gdGhpc307bS5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX07bS5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKG4pe3RoaXMuX2QzU2NhbGUucmFuZ2Uobil9O3JldHVybiBtfShoKDE3KS5TY2FsZSk7ZC5fTE9PUF9MSUdIVEVOX0ZBQ1RPUj0xLjY7ZC5fTUFYSU1VTV9DT0xPUlNfRlJPTV9DU1M9MjU2O2YuQ29sb3I9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJgp0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX0sdD1oKDEpLGw9aCgwKTtkPWZ1bmN0aW9uKHApe2Z1bmN0aW9uIG0obil7dm9pZCAwPT09biYmKG49ImxpbmVhciIpO3ZhciBxPXAuY2FsbCh0aGlzKXx8dGhpcztzd2l0Y2gobil7Y2FzZSAibGluZWFyIjpxLl9jb2xvclNjYWxlPXQuc2NhbGVMaW5lYXIoKTticmVhaztjYXNlICJsb2ciOnEuX2NvbG9yU2NhbGU9dC5zY2FsZUxvZygpO2JyZWFrO2Nhc2UgInNxcnQiOnEuX2NvbG9yU2NhbGU9dC5zY2FsZVNxcnQoKTticmVhaztjYXNlICJwb3ciOnEuX2NvbG9yU2NhbGU9dC5zY2FsZVBvdygpfWlmKG51bGw9PXEuX2NvbG9yU2NhbGUpdGhyb3cgRXJyb3IoInVua25vd24gUXVhbnRpdGF0aXZlU2NhbGUgc2NhbGUgdHlwZSAiKwpuKTtxLnJhbmdlKG0uUkVEUyk7cmV0dXJuIHF9ayhtLHApO20ucHJvdG90eXBlLmV4dGVudE9mVmFsdWVzPWZ1bmN0aW9uKG4pe249dC5leHRlbnQobik7cmV0dXJuIG51bGw9PW5bMF18fG51bGw9PW5bMV0/W106bn07bS5wcm90b3R5cGUuX2QzSW50ZXJwb2xhdGVkU2NhbGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5yYW5nZShbMCwxXSkuaW50ZXJwb2xhdGUodGhpcy5faW50ZXJwb2xhdGVDb2xvcnMoKSl9O20ucHJvdG90eXBlLl9pbnRlcnBvbGF0ZUNvbG9ycz1mdW5jdGlvbigpe3ZhciBuPXRoaXMuX2NvbG9yUmFuZ2U7aWYoMj5uLmxlbmd0aCl0aHJvdyBFcnJvcigiQ29sb3Igc2NhbGUgYXJyYXlzIG11c3QgaGF2ZSBhdCBsZWFzdCB0d28gZWxlbWVudHMuIik7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHEpe3E9TWF0aC5tYXgoMCxNYXRoLm1pbigxLHEpKTtxKj1uLmxlbmd0aC0xO3ZhciB1PU1hdGguZmxvb3IocSkseD1xLXU7cmV0dXJuIHQuaW50ZXJwb2xhdGVMYWIoblt1XSwKbltNYXRoLmNlaWwocSldKSh4KX19fTttLnByb3RvdHlwZS5fcmVzZXRTY2FsZT1mdW5jdGlvbigpe3RoaXMuX2QzU2NhbGU9dGhpcy5fZDNJbnRlcnBvbGF0ZWRTY2FsZSgpO3RoaXMuX2F1dG9Eb21haW5JZkF1dG9tYXRpY01vZGUoKTt0aGlzLl9kaXNwYXRjaFVwZGF0ZSgpfTttLnByb3RvdHlwZS5hdXRvRG9tYWluPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKTswPG4ubGVuZ3RoJiZ0aGlzLl9zZXREb21haW4oW2wuTWF0aC5taW4obiwwKSxsLk1hdGgubWF4KG4sMCldKX07bS5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuX2QzU2NhbGUobil9O20ucHJvdG90eXBlLl9nZXREb21haW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYmFja2luZ1NjYWxlRG9tYWluKCl9O20ucHJvdG90eXBlLl9iYWNraW5nU2NhbGVEb21haW49ZnVuY3Rpb24obil7aWYobnVsbD09bilyZXR1cm4gdGhpcy5fZDNTY2FsZS5kb21haW4oKTt0aGlzLl9kM1NjYWxlLmRvbWFpbihuKTsKcmV0dXJuIHRoaXN9O20ucHJvdG90eXBlLl9nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb2xvclJhbmdlfTttLnByb3RvdHlwZS5fc2V0UmFuZ2U9ZnVuY3Rpb24obil7dGhpcy5fY29sb3JSYW5nZT1uO3RoaXMuX3Jlc2V0U2NhbGUoKX07cmV0dXJuIG19KGgoMTcpLlNjYWxlKTtkLlJFRFM9IiNGRkZGRkYgI0ZGRjZFMSAjRkVGNEMwICNGRUQ5NzYgI0ZFQjI0QyAjRkQ4RDNDICNGQzRFMkEgI0UzMUExQyAjQjEwMDI2Ii5zcGxpdCgiICIpO2QuQkxVRVM9IiNGRkZGRkYgI0NDRkZGRiAjQTVGRkZEICM4NUY3RkIgIzZFRDNFRiAjNTVBN0UwICM0MTdGRDAgIzI1NDVEMyAjMEIwMkUxIi5zcGxpdCgiICIpO2QuUE9TTkVHPSIjMEIwMkUxICMyNTQ1RDMgIzQxN0ZEMCAjNTVBN0UwICM2RUQzRUYgIzg1RjdGQiAjQTVGRkZEICNDQ0ZGRkYgI0ZGRkZGRiAjRkZGNkUxICNGRUY0QzAgI0ZFRDk3NiAjRkVCMjRDICNGRDhEM0MgI0ZDNEUyQSAjRTMxQTFDICNCMTAwMjYiLnNwbGl0KCIgIik7CmYuSW50ZXJwb2xhdGVkQ29sb3I9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihsLHApe2Z1bmN0aW9uIG0oKXt0aGlzLmNvbnN0cnVjdG9yPWx9Zm9yKHZhciBuIGluIHApcC5oYXNPd25Qcm9wZXJ0eShuKSYmKGxbbl09cFtuXSk7bC5wcm90b3R5cGU9bnVsbD09PXA/T2JqZWN0LmNyZWF0ZShwKToobS5wcm90b3R5cGU9cC5wcm90b3R5cGUsbmV3IG0pfSx0PWgoMSk7ZD1mdW5jdGlvbihsKXtmdW5jdGlvbiBwKCl7dmFyIG09bC5jYWxsKHRoaXMpfHx0aGlzO20uX2QzU2NhbGU9dC5zY2FsZUxpbmVhcigpO3JldHVybiBtfWsocCxsKTtwLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLDFdfTtwLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24obSl7cmV0dXJuIG1bMF09PT1tWzFdP1ttWzBdLTEsbVsxXSsxXTptfTtwLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5fZDNTY2FsZShtKX07CnAucHJvdG90eXBlLnNjYWxlVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuc2NhbGUobSl9O3AucHJvdG90eXBlLmludmVydGVkVHJhbnNmb3JtYXRpb249ZnVuY3Rpb24obSl7cmV0dXJuIHRoaXMuaW52ZXJ0KG0pfTtwLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRVbmJvdW5kZWRFeHRlbnQoITApfTtwLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbWFpbigpfTtwLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbihtKXt0aGlzLmRvbWFpbihtKX07cC5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX07cC5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbihtKXtpZihudWxsPT1tKXJldHVybiB0aGlzLl9kM1NjYWxlLmRvbWFpbigpOwp0aGlzLl9kM1NjYWxlLmRvbWFpbihtKTtyZXR1cm4gdGhpc307cC5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX07cC5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKG0pe3RoaXMuX2QzU2NhbGUucmFuZ2UobSl9O3AucHJvdG90eXBlLmludmVydD1mdW5jdGlvbihtKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQobSl9O3AucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKCl9O3AucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKG0sbil7cmV0dXJuIHRoaXMuX2QzU2NhbGUuY29weSgpLmRvbWFpbihtKS5uaWNlKG4pLmRvbWFpbigpfTtyZXR1cm4gcH0oaCgxMSkuUXVhbnRpdGF0aXZlU2NhbGUpO2YuTGluZWFyPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24obSxuKXtmdW5jdGlvbiBxKCl7dGhpcy5jb25zdHJ1Y3Rvcj0KbX1mb3IodmFyIHUgaW4gbiluLmhhc093blByb3BlcnR5KHUpJiYobVt1XT1uW3VdKTttLnByb3RvdHlwZT1udWxsPT09bj9PYmplY3QuY3JlYXRlKG4pOihxLnByb3RvdHlwZT1uLnByb3RvdHlwZSxuZXcgcSl9LHQ9aCgxKSxsPWgoMCkscD1oKDMpO2Q9ZnVuY3Rpb24obSl7ZnVuY3Rpb24gbihxKXt2b2lkIDA9PT1xJiYocT0xMCk7dmFyIHU9bS5jYWxsKHRoaXMpfHx0aGlzO3UuX2QzU2NhbGU9dC5zY2FsZUxpbmVhcigpO3UuX2Jhc2U9cTt1Ll9waXZvdD11Ll9iYXNlO3UuX3NldERvbWFpbih1Ll9kZWZhdWx0RXh0ZW50KCkpO2lmKDE+PXEpdGhyb3cgRXJyb3IoIk1vZGlmaWVkTG9nU2NhbGU6IFRoZSBiYXNlIG11c3QgYmUgXHgzZSAxIik7cmV0dXJuIHV9ayhuLG0pO24ucHJvdG90eXBlLl9hZGp1c3RlZExvZz1mdW5jdGlvbihxKXt2YXIgdT0wPnE/LTE6MTtxKj11O3E8dGhpcy5fcGl2b3QmJihxKz0odGhpcy5fcGl2b3QtcSkvdGhpcy5fcGl2b3QpO3E9TWF0aC5sb2cocSkvCk1hdGgubG9nKHRoaXMuX2Jhc2UpO3JldHVybiBxKnV9O24ucHJvdG90eXBlLl9pbnZlcnRlZEFkanVzdGVkTG9nPWZ1bmN0aW9uKHEpe3ZhciB1PTA+cT8tMToxO3E9TWF0aC5wb3codGhpcy5fYmFzZSxxKnUpO3E8dGhpcy5fcGl2b3QmJihxPXRoaXMuX3Bpdm90KihxLTEpLyh0aGlzLl9waXZvdC0xKSk7cmV0dXJuIHEqdX07bi5wcm90b3R5cGUuc2NhbGU9ZnVuY3Rpb24ocSl7cmV0dXJuIHRoaXMuX2QzU2NhbGUodGhpcy5fYWRqdXN0ZWRMb2cocSkpfTtuLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24ocSl7cmV0dXJuIHRoaXMuX2ludmVydGVkQWRqdXN0ZWRMb2codGhpcy5fZDNTY2FsZS5pbnZlcnQocSkpfTtuLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLnNjYWxlKHEpfTtuLnByb3RvdHlwZS5pbnZlcnRlZFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHEpe3JldHVybiB0aGlzLmludmVydChxKX07bi5wcm90b3R5cGUuZ2V0VHJhbnNmb3JtYXRpb25FeHRlbnQ9CmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCl9O24ucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9O24ucHJvdG90eXBlLnNldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKHEpe3RoaXMuZG9tYWluKHEpfTtuLnByb3RvdHlwZS5fZ2V0RG9tYWluPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3VudHJhbnNmb3JtZWREb21haW59O24ucHJvdG90eXBlLl9zZXREb21haW49ZnVuY3Rpb24ocSl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj1xO20ucHJvdG90eXBlLl9zZXREb21haW4uY2FsbCh0aGlzLFt0aGlzLl9hZGp1c3RlZExvZyhxWzBdKSx0aGlzLl9hZGp1c3RlZExvZyhxWzFdKV0pfTtuLnByb3RvdHlwZS5fYmFja2luZ1NjYWxlRG9tYWluPWZ1bmN0aW9uKHEpe2lmKG51bGw9PXEpcmV0dXJuIHRoaXMuX2QzU2NhbGUuZG9tYWluKCk7dGhpcy5fZDNTY2FsZS5kb21haW4ocSk7CnJldHVybiB0aGlzfTtuLnByb3RvdHlwZS50aWNrcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHEoRixELEIpe3JldHVybltGLEQsQl0uc29ydChmdW5jdGlvbihJLE4pe3JldHVybiBJLU59KVsxXX12YXIgdT1sLk1hdGgubWluKHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkseD1sLk1hdGgubWF4KHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCksQT1xKHUseCwtdGhpcy5fcGl2b3QpLHk9cSh1LHgsdGhpcy5fcGl2b3QpO0E9dGhpcy5fbG9nVGlja3MoLUEsLXUpLm1hcChmdW5jdGlvbihGKXtyZXR1cm4tRn0pLnJldmVyc2UoKTt5PXRoaXMuX2xvZ1RpY2tzKHkseCk7dmFyIHc9TWF0aC5tYXgodSwtdGhpcy5fcGl2b3QpLEM9TWF0aC5taW4oeCx0aGlzLl9waXZvdCk7dz10LnNjYWxlTGluZWFyKCkuZG9tYWluKFt3LENdKS50aWNrcyh0aGlzLl9ob3dNYW55VGlja3ModyxDKSk7QT1BLmNvbmNhdCh3KS5jb25jYXQoeSk7MT49QS5sZW5ndGgmJihBPXQuc2NhbGVMaW5lYXIoKS5kb21haW4oW3UsCnhdKS50aWNrcygpKTtyZXR1cm4gQX07bi5wcm90b3R5cGUuX2xvZ1RpY2tzPWZ1bmN0aW9uKHEsdSl7dmFyIHg9dGhpcyxBPXRoaXMuX2hvd01hbnlUaWNrcyhxLHUpO2lmKDA9PT1BKXJldHVybltdO3ZhciB5PU1hdGguZmxvb3IoTWF0aC5sb2cocSkvTWF0aC5sb2codGhpcy5fYmFzZSkpLHc9TWF0aC5jZWlsKE1hdGgubG9nKHUpL01hdGgubG9nKHRoaXMuX2Jhc2UpKTtBPXQucmFuZ2Uodyx5LC1NYXRoLmNlaWwoKHcteSkvQSkpO3k9dC5yYW5nZSh0aGlzLl9iYXNlLDEsLSh0aGlzLl9iYXNlLTEpKS5tYXAoTWF0aC5mbG9vcik7dmFyIEM9bC5BcnJheS51bmlxKHkpO0E9QS5tYXAoZnVuY3Rpb24oRil7cmV0dXJuIEMubWFwKGZ1bmN0aW9uKEQpe3JldHVybiBNYXRoLnBvdyh4Ll9iYXNlLEYtMSkqRH0pfSk7cmV0dXJuIGwuQXJyYXkuZmxhdHRlbihBKS5maWx0ZXIoZnVuY3Rpb24oRil7cmV0dXJuIHE8PUYmJkY8PXV9KS5zb3J0KGZ1bmN0aW9uKEYsRCl7cmV0dXJuIEYtRH0pfTsKbi5wcm90b3R5cGUuX2hvd01hbnlUaWNrcz1mdW5jdGlvbihxLHUpe3ZhciB4PXRoaXMuX2FkanVzdGVkTG9nKGwuTWF0aC5taW4odGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbiwwKSksQT10aGlzLl9hZGp1c3RlZExvZyhsLk1hdGgubWF4KHRoaXMuX3VudHJhbnNmb3JtZWREb21haW4sMCkpO3JldHVybiBNYXRoLmNlaWwoKHRoaXMuX2FkanVzdGVkTG9nKHUpLXRoaXMuX2FkanVzdGVkTG9nKHEpKS8oQS14KSpwLk1vZGlmaWVkTG9nLl9ERUZBVUxUX05VTV9USUNLUyl9O24ucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKHEpe3JldHVybiBxfTtuLnByb3RvdHlwZS5fZGVmYXVsdEV4dGVudD1mdW5jdGlvbigpe3JldHVyblswLHRoaXMuX2Jhc2VdfTtuLnByb3RvdHlwZS5fZXhwYW5kU2luZ2xlVmFsdWVEb21haW49ZnVuY3Rpb24ocSl7cmV0dXJuIHFbMF09PT1xWzFdPyhxPXFbMF0sMDxxP1txL3RoaXMuX2Jhc2UscSp0aGlzLl9iYXNlXTowPT09cT9bLXRoaXMuX2Jhc2UsCnRoaXMuX2Jhc2VdOltxKnRoaXMuX2Jhc2UscS90aGlzLl9iYXNlXSk6cX07bi5wcm90b3R5cGUuX2dldFJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2QzU2NhbGUucmFuZ2UoKX07bi5wcm90b3R5cGUuX3NldFJhbmdlPWZ1bmN0aW9uKHEpe3RoaXMuX2QzU2NhbGUucmFuZ2UocSl9O24ucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKCl9O3JldHVybiBufShoKDExKS5RdWFudGl0YXRpdmVTY2FsZSk7Zi5Nb2RpZmllZExvZz1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9aCgwKTtmLmludGVydmFsVGlja0dlbmVyYXRvcj1mdW5jdGlvbih0KXtpZigwPj10KXRocm93IEVycm9yKCJpbnRlcnZhbCBtdXN0IGJlIHBvc2l0aXZlIG51bWJlciIpO3JldHVybiBmdW5jdGlvbihsKXtsPWwuZG9tYWluKCk7dmFyIHA9TWF0aC5taW4obFswXSxsWzFdKTtsPU1hdGgubWF4KGxbMF0sbFsxXSk7dmFyIG09TWF0aC5jZWlsKHAvdCkqCnQ7cD0wPT09cCV0P1tdOltwXTt2YXIgbj1rLk1hdGgucmFuZ2UoMCxNYXRoLmZsb29yKChsLW0pL3QpKzEpLm1hcChmdW5jdGlvbihxKXtyZXR1cm4gbStxKnR9KTtyZXR1cm4gcC5jb25jYXQobikuY29uY2F0KDA9PT1sJXQ/W106W2xdKX19O2YuaW50ZWdlclRpY2tHZW5lcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGw9dC5kZWZhdWx0VGlja3MoKTtyZXR1cm4gbC5maWx0ZXIoZnVuY3Rpb24ocCxtKXtyZXR1cm4gMD09PXAlMXx8MD09PW18fG09PT1sLmxlbmd0aC0xfSl9fX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbihwLG0pe2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXB9Zm9yKHZhciBxIGluIG0pbS5oYXNPd25Qcm9wZXJ0eShxKSYmKHBbcV09bVtxXSk7cC5wcm90b3R5cGU9bnVsbD09PW0/T2JqZWN0LmNyZWF0ZShtKToobi5wcm90b3R5cGU9bS5wcm90b3R5cGUsbmV3IG4pfSx0PWgoMSksCmw9aCgyOCk7ZD1mdW5jdGlvbihwKXtmdW5jdGlvbiBtKCl7dmFyIG49cC5jYWxsKHRoaXMpfHx0aGlzO24uX2QzU2NhbGU9dC5zY2FsZVRpbWUoKTtuLmF1dG9Eb21haW4oKTtyZXR1cm4gbn1rKG0scCk7bS5wcm90b3R5cGUudGlja0ludGVydmFsPWZ1bmN0aW9uKG4scSl7dm9pZCAwPT09cSYmKHE9MSk7dmFyIHU9dC5zY2FsZVRpbWUoKTttLnRpbWVJbnRlcnZhbFRvRDNUaW1lKG4pLmV2ZXJ5KHEpO3UuZG9tYWluKHRoaXMuZG9tYWluKCkpO3UucmFuZ2UodGhpcy5yYW5nZSgpKTtyZXR1cm4gdS50aWNrcygpfTttLnByb3RvdHlwZS5fc2V0RG9tYWluPWZ1bmN0aW9uKG4pe2lmKG5bMV08blswXSl0aHJvdyBFcnJvcigiU2NhbGUuVGltZSBkb21haW4gdmFsdWVzIG11c3QgYmUgaW4gY2hyb25vbG9naWNhbCBvcmRlciIpO3JldHVybiBwLnByb3RvdHlwZS5fc2V0RG9tYWluLmNhbGwodGhpcyxuKX07bS5wcm90b3R5cGUuX2RlZmF1bHRFeHRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm5bbmV3IERhdGUoIjE5NzAtMDEtMDEiKSwKbmV3IERhdGUoIjE5NzAtMDEtMDIiKV19O20ucHJvdG90eXBlLl9leHBhbmRTaW5nbGVWYWx1ZURvbWFpbj1mdW5jdGlvbihuKXt2YXIgcT1uWzBdLmdldFRpbWUoKSx1PW5bMV0uZ2V0VGltZSgpO3JldHVybiBxPT09dT8obj1uZXcgRGF0ZShxKSxuLnNldERhdGUobi5nZXREYXRlKCktMSksdT1uZXcgRGF0ZSh1KSx1LnNldERhdGUodS5nZXREYXRlKCkrMSksW24sdV0pOm59O20ucHJvdG90eXBlLnNjYWxlPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9kM1NjYWxlKG4pfTttLnByb3RvdHlwZS5zY2FsZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLnNjYWxlKG5ldyBEYXRlKG4pKX07bS5wcm90b3R5cGUuaW52ZXJ0ZWRUcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5pbnZlcnQobikuZ2V0VGltZSgpfTttLnByb3RvdHlwZS5nZXRUcmFuc2Zvcm1hdGlvbkV4dGVudD1mdW5jdGlvbigpe3ZhciBuPXRoaXMuX2dldFVuYm91bmRlZEV4dGVudCghMCk7CnJldHVybltuWzBdLnZhbHVlT2YoKSxuWzFdLnZhbHVlT2YoKV19O20ucHJvdG90eXBlLmdldFRyYW5zZm9ybWF0aW9uRG9tYWluPWZ1bmN0aW9uKCl7dmFyIG49dGhpcy5kb21haW4oKTtyZXR1cm5bblswXS52YWx1ZU9mKCksblsxXS52YWx1ZU9mKCldfTttLnByb3RvdHlwZS5zZXRUcmFuc2Zvcm1hdGlvbkRvbWFpbj1mdW5jdGlvbihuKXt0aGlzLmRvbWFpbihbbmV3IERhdGUoblswXSksbmV3IERhdGUoblsxXSldKX07bS5wcm90b3R5cGUuX2dldERvbWFpbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYWNraW5nU2NhbGVEb21haW4oKX07bS5wcm90b3R5cGUuX2JhY2tpbmdTY2FsZURvbWFpbj1mdW5jdGlvbihuKXtpZihudWxsPT1uKXJldHVybiB0aGlzLl9kM1NjYWxlLmRvbWFpbigpO3RoaXMuX2QzU2NhbGUuZG9tYWluKG4pO3JldHVybiB0aGlzfTttLnByb3RvdHlwZS5fZ2V0UmFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5yYW5nZSgpfTttLnByb3RvdHlwZS5fc2V0UmFuZ2U9CmZ1bmN0aW9uKG4pe3RoaXMuX2QzU2NhbGUucmFuZ2Uobil9O20ucHJvdG90eXBlLmludmVydD1mdW5jdGlvbihuKXtyZXR1cm4gdGhpcy5fZDNTY2FsZS5pbnZlcnQobil9O20ucHJvdG90eXBlLmRlZmF1bHRUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kM1NjYWxlLnRpY2tzKCl9O20ucHJvdG90eXBlLl9uaWNlRG9tYWluPWZ1bmN0aW9uKG4pe3JldHVybiB0aGlzLl9kM1NjYWxlLmNvcHkoKS5kb21haW4obikubmljZSgpLmRvbWFpbigpfTttLnRpbWVJbnRlcnZhbFRvRDNUaW1lPWZ1bmN0aW9uKG4pe3N3aXRjaChuKXtjYXNlIGwuVGltZUludGVydmFsLnNlY29uZDpyZXR1cm4gdC50aW1lU2Vjb25kO2Nhc2UgbC5UaW1lSW50ZXJ2YWwubWludXRlOnJldHVybiB0LnRpbWVNaW51dGU7Y2FzZSBsLlRpbWVJbnRlcnZhbC5ob3VyOnJldHVybiB0LnRpbWVIb3VyO2Nhc2UgbC5UaW1lSW50ZXJ2YWwuZGF5OnJldHVybiB0LnRpbWVEYXk7Y2FzZSBsLlRpbWVJbnRlcnZhbC53ZWVrOnJldHVybiB0LnRpbWVXZWVrOwpjYXNlIGwuVGltZUludGVydmFsLm1vbnRoOnJldHVybiB0LnRpbWVNb250aDtjYXNlIGwuVGltZUludGVydmFsLnllYXI6cmV0dXJuIHQudGltZVllYXI7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVGltZUludGVydmFsIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdDogIituKTt9fTtyZXR1cm4gbX0oaCgxMSkuUXVhbnRpdGF0aXZlU2NhbGUpO2YuVGltZT1kfSxmdW5jdGlvbihkLGYsaCl7dmFyIGs9aCgxKSx0PUFycmF5O2YuYWRkPWZ1bmN0aW9uKGwscCl7aWYobC5sZW5ndGghPT1wLmxlbmd0aCl0aHJvdyBFcnJvcigiYXR0ZW1wdGVkIHRvIGFkZCBhcnJheXMgb2YgdW5lcXVhbCBsZW5ndGgiKTtyZXR1cm4gbC5tYXAoZnVuY3Rpb24obSxuKXtyZXR1cm4gbFtuXStwW25dfSl9O2YudW5pcT1mdW5jdGlvbihsKXt2YXIgcD1rLnNldCgpLG09W107bC5mb3JFYWNoKGZ1bmN0aW9uKG4pe3AuaGFzKFN0cmluZyhuKSl8fChwLmFkZChTdHJpbmcobikpLG0ucHVzaChuKSl9KTtyZXR1cm4gbX07CmYuZmxhdHRlbj1mdW5jdGlvbihsKXtyZXR1cm4gdC5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGwpfTtmLmNyZWF0ZUZpbGxlZEFycmF5PWZ1bmN0aW9uKGwscCl7Zm9yKHZhciBtPVtdLG49MDtuPHA7bisrKW1bbl09ImZ1bmN0aW9uIj09PXR5cGVvZiBsP2wobik6bDtyZXR1cm4gbX19LGZ1bmN0aW9uKGQsZil7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoayx0LGwpe3RoaXMubWF4SW5kZXg9dGhpcy5taW5JbmRleD10aGlzLmV4aXRJbmRleD10aGlzLmVudHJ5SW5kZXg9azt0aGlzLmJ1Y2tldFZhbHVlPXQ7dGhpcy5tYXhWYWx1ZT10aGlzLm1pblZhbHVlPWx9aC5wcm90b3R5cGUuaXNJbkJ1Y2tldD1mdW5jdGlvbihrKXtyZXR1cm4gaz09dGhpcy5idWNrZXRWYWx1ZX07aC5wcm90b3R5cGUuYWRkVG9CdWNrZXQ9ZnVuY3Rpb24oayx0KXtrPHRoaXMubWluVmFsdWUmJih0aGlzLm1pblZhbHVlPWssdGhpcy5taW5JbmRleD10KTtrPnRoaXMubWF4VmFsdWUmJih0aGlzLm1heFZhbHVlPQprLHRoaXMubWF4SW5kZXg9dCk7dGhpcy5leGl0SW5kZXg9dH07aC5wcm90b3R5cGUuZ2V0VW5pcXVlSW5kaWNlcz1mdW5jdGlvbigpe3ZhciBrPVt0aGlzLmVudHJ5SW5kZXgsdGhpcy5tYXhJbmRleCx0aGlzLm1pbkluZGV4LHRoaXMuZXhpdEluZGV4XTtyZXR1cm4gay5maWx0ZXIoZnVuY3Rpb24odCxsKXtyZXR1cm4gMD09bHx8dCE9a1tsLTFdfSl9O3JldHVybiBofSgpO2YuQnVja2V0PWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24odCxsKXtmdW5jdGlvbiBwKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgbSBpbiBsKWwuaGFzT3duUHJvcGVydHkobSkmJih0W21dPWxbbV0pO3QucHJvdG90eXBlPW51bGw9PT1sP09iamVjdC5jcmVhdGUobCk6KHAucHJvdG90eXBlPWwucHJvdG90eXBlLG5ldyBwKX07ZD1mdW5jdGlvbih0KXtmdW5jdGlvbiBsKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8CnRoaXN9ayhsLHQpO2wucHJvdG90eXBlLmNhbGxDYWxsYmFja3M9ZnVuY3Rpb24oKXtmb3IodmFyIHA9dGhpcyxtPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKW1bbl09YXJndW1lbnRzW25dO3RoaXMuZm9yRWFjaChmdW5jdGlvbihxKXtxLmFwcGx5KHAsbSl9KTtyZXR1cm4gdGhpc307cmV0dXJuIGx9KGgoNTgpLlNldCk7Zi5DYWxsYmFja1NldD1kfSxmdW5jdGlvbihkLGYsaCl7ZnVuY3Rpb24gayhwKXtmdW5jdGlvbiBtKHUpe3UvPTI1NTtyZXR1cm4uMDM5Mjg+PXU/dS8xMi45MjpsLnBvdygodSsuMDU1KS8xLjA1NSwyLjQpfXZhciBuPXQucmdiKHApO3A9bShuLnIpO3ZhciBxPW0obi5nKTtuPW0obi5iKTtyZXR1cm4uMjEyNipwKy43MTUyKnErLjA3MjIqbn12YXIgdD1oKDEpLGw9TWF0aDtmLmNvbnRyYXN0PWZ1bmN0aW9uKHAsbSl7cD1rKHApKy4wNTttPWsobSkrLjA1O3JldHVybiBwPm0/cC9tOm0vcH07Zi5saWdodGVuQ29sb3I9ZnVuY3Rpb24ocCxtKXtyZXR1cm4gdC5jb2xvcihwKS5icmlnaHRlcihtKS5yZ2IoKS50b1N0cmluZygpfTsKZi5jb2xvclRlc3Q9ZnVuY3Rpb24ocCxtKXtwLmNsYXNzZWQobSwhMCk7dmFyIG49cC5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIpO2lmKCJ0cmFuc3BhcmVudCI9PT1uKXJldHVybiBudWxsO249L1woKC4rKVwpLy5leGVjKG4pO2lmKCFuKXJldHVybiBudWxsO249blsxXS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihxKXtxPStxO3ZhciB1PXEudG9TdHJpbmcoMTYpO3JldHVybiAxNj5xPyIwIit1OnV9KTtpZig0PT09bi5sZW5ndGgmJiIwMCI9PT1uWzNdKXJldHVybiBudWxsO249IiMiK24uam9pbigiIik7cC5jbGFzc2VkKG0sITEpO3JldHVybiBufX0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoMSksdD1oKDU3KTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbCgpe3RoaXMuX2VudGl0aWVzPVtdO3RoaXMuX3J0cmVlPW5ldyB0LlJUcmVlO3RoaXMuX3RyZWU9ay5xdWFkdHJlZSgpLngoZnVuY3Rpb24ocCl7cmV0dXJuIE1hdGguZmxvb3IocC5wb3NpdGlvbi54KX0pLnkoZnVuY3Rpb24ocCl7cmV0dXJuIE1hdGguZmxvb3IocC5wb3NpdGlvbi55KX0pfQpsLnByb3RvdHlwZS5hZGRBbGw9ZnVuY3Rpb24ocCxtLG4peyh4PXRoaXMuX2VudGl0aWVzKS5wdXNoLmFwcGx5KHgscCk7aWYodm9pZCAwIT09bilmb3Iobj10LlJUcmVlQm91bmRzLmJvdW5kcyhuKSx4PTA7eDxwLmxlbmd0aDt4Kyspe3ZhciBxPXBbeF0sdT10LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhtKHEpKTt0LlJUcmVlQm91bmRzLmlzQm91bmRzT3ZlcmxhcEJvdW5kcyhuLHUpJiYodGhpcy5fdHJlZS5hZGQocSksdGhpcy5fcnRyZWUuaW5zZXJ0KHUscSkpfWVsc2UgZm9yKHRoaXMuX3RyZWUuYWRkQWxsKHApLHg9MDt4PHAubGVuZ3RoO3grKylxPXBbeF0sdT10LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhtKHEpKSx0aGlzLl9ydHJlZS5pbnNlcnQodSxxKTt2YXIgeH07bC5wcm90b3R5cGUuZW50aXR5TmVhcmVzdD1mdW5jdGlvbihwKXtyZXR1cm4gdGhpcy5fdHJlZS5maW5kKHAueCxwLnkpfTtsLnByb3RvdHlwZS5lbnRpdGllc0luQm91bmRzPWZ1bmN0aW9uKHApe3JldHVybiB0aGlzLl9ydHJlZS5pbnRlcnNlY3QodC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMocCkpfTsKbC5wcm90b3R5cGUuZW50aXRpZXNJblhCb3VuZHM9ZnVuY3Rpb24ocCl7cmV0dXJuIHRoaXMuX3J0cmVlLmludGVyc2VjdFgodC5SVHJlZUJvdW5kcy5lbnRpdHlCb3VuZHMocCkpfTtsLnByb3RvdHlwZS5lbnRpdGllc0luWUJvdW5kcz1mdW5jdGlvbihwKXtyZXR1cm4gdGhpcy5fcnRyZWUuaW50ZXJzZWN0WSh0LlJUcmVlQm91bmRzLmVudGl0eUJvdW5kcyhwKSl9O2wucHJvdG90eXBlLmVudGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VudGl0aWVzfTtyZXR1cm4gbH0oKTtmLkVudGl0eVN0b3JlPWR9LGZ1bmN0aW9uKGQsZixoKXt2YXIgaz1oKDU2KTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyJmdW5jdGlvbiI9PT10eXBlb2Ygd2luZG93Lk1hcD90aGlzLl9lczZNYXA9bmV3IHdpbmRvdy5NYXA6dGhpcy5fa2V5VmFsdWVQYWlycz1bXX10LnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24obCxwKXtpZihrLmlzTmFOKGwpKXRocm93IEVycm9yKCJOYU4gbWF5IG5vdCBiZSB1c2VkIGFzIGEga2V5IHRvIHRoZSBNYXAiKTsKaWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuc2V0KGwscCksdGhpcztmb3IodmFyIG09MDttPHRoaXMuX2tleVZhbHVlUGFpcnMubGVuZ3RoO20rKylpZih0aGlzLl9rZXlWYWx1ZVBhaXJzW21dLmtleT09PWwpcmV0dXJuIHRoaXMuX2tleVZhbHVlUGFpcnNbbV0udmFsdWU9cCx0aGlzO3RoaXMuX2tleVZhbHVlUGFpcnMucHVzaCh7a2V5OmwsdmFsdWU6cH0pO3JldHVybiB0aGlzfTt0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24obCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZ2V0KGwpO2Zvcih2YXIgcD0wO3A8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7cCsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbcF0ua2V5PT09bClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlyc1twXS52YWx1ZX07dC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGwpe2lmKG51bGwhPXRoaXMuX2VzNk1hcClyZXR1cm4gdGhpcy5fZXM2TWFwLmhhcyhsKTsKZm9yKHZhciBwPTA7cDx0aGlzLl9rZXlWYWx1ZVBhaXJzLmxlbmd0aDtwKyspaWYodGhpcy5fa2V5VmFsdWVQYWlyc1twXS5rZXk9PT1sKXJldHVybiEwO3JldHVybiExfTt0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGwscCl7dmFyIG09dGhpcztudWxsIT10aGlzLl9lczZNYXA/dGhpcy5fZXM2TWFwLmZvckVhY2goZnVuY3Rpb24obixxKXtyZXR1cm4gbC5jYWxsKHAsbixxLG0pfSxwKTp0aGlzLl9rZXlWYWx1ZVBhaXJzLmZvckVhY2goZnVuY3Rpb24obil7bC5jYWxsKHAsbi52YWx1ZSxuLmtleSxtKX0pfTt0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24obCl7aWYobnVsbCE9dGhpcy5fZXM2TWFwKXJldHVybiB0aGlzLl9lczZNYXAuZGVsZXRlKGwpO2Zvcih2YXIgcD0wO3A8dGhpcy5fa2V5VmFsdWVQYWlycy5sZW5ndGg7cCsrKWlmKHRoaXMuX2tleVZhbHVlUGFpcnNbcF0ua2V5PT09bClyZXR1cm4gdGhpcy5fa2V5VmFsdWVQYWlycy5zcGxpY2UocCwxKSwhMDtyZXR1cm4hMX07CnJldHVybiB0fSgpO2YuTWFwPWR9LGZ1bmN0aW9uKGQsZil7Zi5hc3NpZ249ZnVuY3Rpb24oKXtmb3IodmFyIGg9W10saz0wO2s8YXJndW1lbnRzLmxlbmd0aDtrKyspaFtrXT1hcmd1bWVudHNba107az17fTtmb3IodmFyIHQ9MDt0PGgubGVuZ3RoO3QrKylmb3IodmFyIGw9aFt0XSxwPTAsbT1PYmplY3Qua2V5cyhsKTtwPG0ubGVuZ3RoO3ArKyl7dmFyIG49bVtwXTtrW25dPWxbbl19cmV0dXJuIGt9fSxmdW5jdGlvbihkLGYpe2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBoKCl7fWgucHJvdG90eXBlLnNwbGl0PWZ1bmN0aW9uKGssdCl7Zm9yKHZhciBsPU1hdGguY2VpbChrLmxlbmd0aC8yKSxwPTA7cDxsO3ArKyl0WzBdLmluc2VydChrW3BdKTtmb3IocD1sO3A8ay5sZW5ndGg7cCsrKXRbMV0uaW5zZXJ0KGtbcF0pfTtyZXR1cm4gaH0oKTtmLlNwbGl0U3RyYXRlZ3lUcml2aWFsPWQ7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoKXt9aC5wcm90b3R5cGUuc3BsaXQ9ZnVuY3Rpb24oayx0KXtrPQprLnNsaWNlKCk7Zm9yKHRoaXMuY2hvb3NlRmlyc3RTcGxpdChrLHQpOzA8ay5sZW5ndGg7KXRoaXMuYWRkTmV4dChrLHQpfTtoLnByb3RvdHlwZS5jaG9vc2VGaXJzdFNwbGl0PWZ1bmN0aW9uKGssdCl7Zm9yKHZhciBsPTAscD0wLG09ay5sZW5ndGgtMSxuPWsubGVuZ3RoLTEscT0xO3E8ay5sZW5ndGgtMTtxKyspe3ZhciB1PWtbcV07dS5ib3VuZHMueGw+a1ttXS5ib3VuZHMueGw/bT1xOnUuYm91bmRzLnhoPGtbbF0uYm91bmRzLnhoJiYobD1xKTt1LmJvdW5kcy55bD5rW25dLmJvdW5kcy55bD9uPXE6dS5ib3VuZHMueWg8a1twXS5ib3VuZHMueWgmJihwPXEpfXA9TWF0aC5hYnMoa1tsXS5ib3VuZHMueGgta1ttXS5ib3VuZHMueGwpPk1hdGguYWJzKGtbcF0uYm91bmRzLnloLWtbbl0uYm91bmRzLnlsKT9bbCxtXTpbcCxuXTtsPXBbMF07cD1wWzFdO2w9PT1wJiYobD0wLHA9ay5sZW5ndGgtMSk7dFswXS5pbnNlcnQoay5zcGxpY2UoTWF0aC5tYXgobCxwKSwxKVswXSk7dFsxXS5pbnNlcnQoay5zcGxpY2UoTWF0aC5taW4obCwKcCksMSlbMF0pfTtoLnByb3RvdHlwZS5hZGROZXh0PWZ1bmN0aW9uKGssdCl7Zm9yKHZhciBsPW51bGwscD1udWxsLG09bnVsbCxuPTA7bjxrLmxlbmd0aDtuKyspe3ZhciBxPWtbbl0sdT10WzBdLnVuaW9uQXJlYURpZmZlcmVuY2UocS5ib3VuZHMpO3E9dFsxXS51bmlvbkFyZWFEaWZmZXJlbmNlKHEuYm91bmRzKTtpZih1PHB8fG51bGw9PWwpbD1uLHA9dSxtPXRbMF07cTxwJiYobD1uLHA9cSxtPXRbMV0pfW0uaW5zZXJ0KGsuc3BsaWNlKGwsMSlbMF0pfTtyZXR1cm4gaH0oKTtmLlNwbGl0U3RyYXRlZ3lMaW5lYXI9ZH0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsobSl7cmV0dXJuIFN0cmluZyhtKX12YXIgdD1oKDEpLGw9aCgwKTtkPWgoMTApO2YuSVN0YWNraW5nT3JkZXI9ZC5tYWtlRW51bShbInRvcGRvd24iLCJib3R0b211cCJdKTt2YXIgcD1NYXRoO2Yuc3RhY2s9ZnVuY3Rpb24obSxuLHEsdSl7dm9pZCAwPT09dSYmKHU9ImJvdHRvbXVwIik7dmFyIHg9dC5tYXAoKSxBPQp0Lm1hcCgpLHk9bmV3IGwuTWFwOyJ0b3Bkb3duIj09PXUmJihtPW0uc2xpY2UoKSxtLnJldmVyc2UoKSk7bS5mb3JFYWNoKGZ1bmN0aW9uKHcpe3ZhciBDPW5ldyBsLk1hcDt3LmRhdGEoKS5mb3JFYWNoKGZ1bmN0aW9uKEYsRCl7dmFyIEI9ayhuKEYsRCx3KSksST0rcShGLEQsdyksTj0wPD1JP3g6QTtpZihOLmhhcyhCKSl7dmFyIE89Ti5nZXQoQik7Ti5zZXQoQixPK0kpfWVsc2UgTz0wLE4uc2V0KEIsSSk7Qy5zZXQoQix7b2Zmc2V0Ok8sdmFsdWU6SSxheGlzVmFsdWU6bihGLEQsdyksb3JpZ2luYWxEYXR1bTpGLG9yaWdpbmFsRGF0YXNldDp3LG9yaWdpbmFsSW5kZXg6RH0pfSk7eS5zZXQodyxDKX0pO3JldHVybiB5fTtmLnN0YWNrZWRFeHRlbnRzPWZ1bmN0aW9uKG0pe3ZhciBuPW5ldyBsLk1hcCxxPW5ldyBsLk1hcDttLmZvckVhY2goZnVuY3Rpb24odSl7dS5mb3JFYWNoKGZ1bmN0aW9uKHgsQSl7dmFyIHk9bC5NYXRoLm1heChbeC5vZmZzZXQreC52YWx1ZSx4Lm9mZnNldF0sCngub2Zmc2V0KSx3PWwuTWF0aC5taW4oW3gub2Zmc2V0K3gudmFsdWUseC5vZmZzZXRdLHgub2Zmc2V0KSxDPXguYXhpc1ZhbHVlO24uaGFzKEEpP24uZ2V0KEEpLmV4dGVudDx5JiZuLnNldChBLHtleHRlbnQ6eSxheGlzVmFsdWU6QyxzdGFja2VkRGF0dW06eH0pOm4uc2V0KEEse2V4dGVudDp5LGF4aXNWYWx1ZTpDLHN0YWNrZWREYXR1bTp4fSk7cS5oYXMoQSk/cS5nZXQoQSkuZXh0ZW50PncmJnEuc2V0KEEse2V4dGVudDp3LGF4aXNWYWx1ZTpDLHN0YWNrZWREYXR1bTp4fSk6cS5zZXQoQSx7ZXh0ZW50OncsYXhpc1ZhbHVlOkMsc3RhY2tlZERhdHVtOnh9KX0pfSk7cmV0dXJue21heGltdW1FeHRlbnRzOm4sbWluaW11bUV4dGVudHM6cX19O2Yuc3RhY2tlZEV4dGVudD1mdW5jdGlvbihtLG4scSl7dmFyIHU9W107bS5mb3JFYWNoKGZ1bmN0aW9uKEEseSl7eS5kYXRhKCkuZm9yRWFjaChmdW5jdGlvbih3LEMpe2lmKG51bGw9PXF8fHEodyxDLHkpKXc9QS5nZXQoayhuKHcsQyx5KSkpLAp1LnB1c2gody52YWx1ZSt3Lm9mZnNldCl9KX0pO209bC5NYXRoLm1heCh1LDApO3ZhciB4PWwuTWF0aC5taW4odSwwKTtyZXR1cm5bcC5taW4oeCwwKSxwLm1heCgwLG0pXX07Zi5ub3JtYWxpemVLZXk9a30sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoMCk7Zi5nZXRUcmFuc2xhdG9yPWZ1bmN0aW9uKGwpe2w9bC5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCk7dmFyIHA9bC5fX1Bsb3R0YWJsZV9DbGllbnRUcmFuc2xhdG9yO251bGw9PXAmJihwPW5ldyB0KGwpLGwuX19QbG90dGFibGVfQ2xpZW50VHJhbnNsYXRvcj1wKTtyZXR1cm4gcH07dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKHApe3RoaXMuX3Jvb3RFbGVtZW50PXB9bC5wcm90b3R5cGUuY29tcHV0ZVBvc2l0aW9uPWZ1bmN0aW9uKHAsbSl7cD17eDpwLHk6bX07bT1rLk1hdGguZ2V0Q3VtdWxhdGl2ZVRyYW5zZm9ybSh0aGlzLl9yb290RWxlbWVudCk7cmV0dXJuIG51bGw9PW0/cDprLk1hdGguYXBwbHlUcmFuc2Zvcm0obSwKcCl9O2wuaXNFdmVudEluc2lkZT1mdW5jdGlvbihwLG0pe3JldHVybiBrLkRPTS5jb250YWlucyhwLnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSxtLnRhcmdldCl9O3JldHVybiBsfSgpO2YuVHJhbnNsYXRvcj10fSxmdW5jdGlvbihkLGYsaCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBrPWgoMTI0KTtoLmQoZiwiZWFzZUxpbmVhciIsZnVuY3Rpb24oKXtyZXR1cm4gay5hfSk7dmFyIHQ9aCgxMjYpO2guZChmLCJlYXNlUXVhZCIsZnVuY3Rpb24oKXtyZXR1cm4gdC5hfSk7aC5kKGYsImVhc2VRdWFkSW4iLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYn0pO2guZChmLCJlYXNlUXVhZE91dCIsZnVuY3Rpb24oKXtyZXR1cm4gdC5jfSk7aC5kKGYsImVhc2VRdWFkSW5PdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHQuYX0pO3ZhciBsPWgoMTIxKTtoLmQoZiwiZWFzZUN1YmljIixmdW5jdGlvbigpe3JldHVybiBsLmF9KTtoLmQoZiwiZWFzZUN1YmljSW4iLApmdW5jdGlvbigpe3JldHVybiBsLmJ9KTtoLmQoZiwiZWFzZUN1YmljT3V0IixmdW5jdGlvbigpe3JldHVybiBsLmN9KTtoLmQoZiwiZWFzZUN1YmljSW5PdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIGwuYX0pO3ZhciBwPWgoMTI1KTtoLmQoZiwiZWFzZVBvbHkiLGZ1bmN0aW9uKCl7cmV0dXJuIHAuYX0pO2guZChmLCJlYXNlUG9seUluIixmdW5jdGlvbigpe3JldHVybiBwLmJ9KTtoLmQoZiwiZWFzZVBvbHlPdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHAuY30pO2guZChmLCJlYXNlUG9seUluT3V0IixmdW5jdGlvbigpe3JldHVybiBwLmF9KTt2YXIgbT1oKDEyNyk7aC5kKGYsImVhc2VTaW4iLGZ1bmN0aW9uKCl7cmV0dXJuIG0uYX0pO2guZChmLCJlYXNlU2luSW4iLGZ1bmN0aW9uKCl7cmV0dXJuIG0uYn0pO2guZChmLCJlYXNlU2luT3V0IixmdW5jdGlvbigpe3JldHVybiBtLmN9KTtoLmQoZiwiZWFzZVNpbkluT3V0IixmdW5jdGlvbigpe3JldHVybiBtLmF9KTt2YXIgbj1oKDEyMyk7aC5kKGYsCiJlYXNlRXhwIixmdW5jdGlvbigpe3JldHVybiBuLmF9KTtoLmQoZiwiZWFzZUV4cEluIixmdW5jdGlvbigpe3JldHVybiBuLmJ9KTtoLmQoZiwiZWFzZUV4cE91dCIsZnVuY3Rpb24oKXtyZXR1cm4gbi5jfSk7aC5kKGYsImVhc2VFeHBJbk91dCIsZnVuY3Rpb24oKXtyZXR1cm4gbi5hfSk7dmFyIHE9aCgxMjApO2guZChmLCJlYXNlQ2lyY2xlIixmdW5jdGlvbigpe3JldHVybiBxLmF9KTtoLmQoZiwiZWFzZUNpcmNsZUluIixmdW5jdGlvbigpe3JldHVybiBxLmJ9KTtoLmQoZiwiZWFzZUNpcmNsZU91dCIsZnVuY3Rpb24oKXtyZXR1cm4gcS5jfSk7aC5kKGYsImVhc2VDaXJjbGVJbk91dCIsZnVuY3Rpb24oKXtyZXR1cm4gcS5hfSk7dmFyIHU9aCgxMTkpO2guZChmLCJlYXNlQm91bmNlIixmdW5jdGlvbigpe3JldHVybiB1LmF9KTtoLmQoZiwiZWFzZUJvdW5jZUluIixmdW5jdGlvbigpe3JldHVybiB1LmJ9KTtoLmQoZiwiZWFzZUJvdW5jZU91dCIsZnVuY3Rpb24oKXtyZXR1cm4gdS5hfSk7CmguZChmLCJlYXNlQm91bmNlSW5PdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHUuY30pO3ZhciB4PWgoMTE4KTtoLmQoZiwiZWFzZUJhY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHguYX0pO2guZChmLCJlYXNlQmFja0luIixmdW5jdGlvbigpe3JldHVybiB4LmJ9KTtoLmQoZiwiZWFzZUJhY2tPdXQiLGZ1bmN0aW9uKCl7cmV0dXJuIHguY30pO2guZChmLCJlYXNlQmFja0luT3V0IixmdW5jdGlvbigpe3JldHVybiB4LmF9KTt2YXIgQT1oKDEyMik7aC5kKGYsImVhc2VFbGFzdGljIixmdW5jdGlvbigpe3JldHVybiBBLmF9KTtoLmQoZiwiZWFzZUVsYXN0aWNJbiIsZnVuY3Rpb24oKXtyZXR1cm4gQS5ifSk7aC5kKGYsImVhc2VFbGFzdGljT3V0IixmdW5jdGlvbigpe3JldHVybiBBLmF9KTtoLmQoZiwiZWFzZUVsYXN0aWNJbk91dCIsZnVuY3Rpb24oKXtyZXR1cm4gQS5jfSl9LGZ1bmN0aW9uKGQsZixoKXtoLmQoZiwiYiIsZnVuY3Rpb24oKXtyZXR1cm4ga30pO2guZChmLCJjIixmdW5jdGlvbigpe3JldHVybiB0fSk7CmguZChmLCJhIixmdW5jdGlvbigpe3JldHVybiBsfSk7dmFyIGs9ZnVuY3Rpb24gbihtKXtmdW5jdGlvbiBxKHUpe3JldHVybiB1KnUqKChtKzEpKnUtbSl9bT0rbTtxLm92ZXJzaG9vdD1uO3JldHVybiBxfSgxLjcwMTU4KSx0PWZ1bmN0aW9uIHEobil7ZnVuY3Rpb24gdSh4KXtyZXR1cm4tLXgqeCooKG4rMSkqeCtuKSsxfW49K247dS5vdmVyc2hvb3Q9cTtyZXR1cm4gdX0oMS43MDE1OCksbD1mdW5jdGlvbiB1KHEpe2Z1bmN0aW9uIHgoQSl7cmV0dXJuKDE+KEEqPTIpP0EqQSooKHErMSkqQS1xKTooQS09MikqQSooKHErMSkqQStxKSsyKS8yfXE9K3E7eC5vdmVyc2hvb3Q9dTtyZXR1cm4geH0oMS43MDE1OCl9LGZ1bmN0aW9uKGQsZil7ZnVuY3Rpb24gaCh5KXtyZXR1cm4oeT0reSk8az9BKnkqeTp5PGw/QSooeS09dCkqeStwOnk8bj9BKih5LT1tKSp5K3E6QSooeS09dSkqeSt4fWYuYj1mdW5jdGlvbih5KXtyZXR1cm4gMS1oKDEteSl9O2YuYT1oO2YuYz1mdW5jdGlvbih5KXtyZXR1cm4oMT49Cih5Kj0yKT8xLWgoMS15KTpoKHktMSkrMSkvMn07dmFyIGs9NC8xMSx0PTYvMTEsbD04LzExLHA9Ljc1LG09OS8xMSxuPTEwLzExLHE9LjkzNzUsdT0yMS8yMix4PS45ODQzNzUsQT0xL2sva30sZnVuY3Rpb24oZCxmKXtmLmI9ZnVuY3Rpb24oaCl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtaCpoKX07Zi5jPWZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLnNxcnQoMS0gLS1oKmgpfTtmLmE9ZnVuY3Rpb24oaCl7cmV0dXJuKDE+PShoKj0yKT8xLU1hdGguc3FydCgxLWgqaCk6TWF0aC5zcXJ0KDEtKGgtPTIpKmgpKzEpLzJ9fSxmdW5jdGlvbihkLGYpe2YuYj1mdW5jdGlvbihoKXtyZXR1cm4gaCpoKmh9O2YuYz1mdW5jdGlvbihoKXtyZXR1cm4tLWgqaCpoKzF9O2YuYT1mdW5jdGlvbihoKXtyZXR1cm4oMT49KGgqPTIpP2gqaCpoOihoLT0yKSpoKmgrMikvMn19LGZ1bmN0aW9uKGQsZixoKXtoLmQoZiwiYiIsZnVuY3Rpb24oKXtyZXR1cm4gdH0pO2guZChmLCJhIixmdW5jdGlvbigpe3JldHVybiBsfSk7CmguZChmLCJjIixmdW5jdGlvbigpe3JldHVybiBwfSk7dmFyIGs9MipNYXRoLlBJLHQ9ZnVuY3Rpb24gdShuLHEpe2Z1bmN0aW9uIHgoeSl7cmV0dXJuIG4qTWF0aC5wb3coMiwxMCotLXkpKk1hdGguc2luKChBLXkpL3EpfXZhciBBPU1hdGguYXNpbigxLyhuPU1hdGgubWF4KDEsbikpKSoocS89ayk7eC5hbXBsaXR1ZGU9ZnVuY3Rpb24oeSl7cmV0dXJuIHUoeSxxKmspfTt4LnBlcmlvZD1mdW5jdGlvbih5KXtyZXR1cm4gdShuLHkpfTtyZXR1cm4geH0oMSwuMyksbD1mdW5jdGlvbiB4KHEsdSl7ZnVuY3Rpb24gQSh3KXtyZXR1cm4gMS1xKk1hdGgucG93KDIsLTEwKih3PSt3KSkqTWF0aC5zaW4oKHcreSkvdSl9dmFyIHk9TWF0aC5hc2luKDEvKHE9TWF0aC5tYXgoMSxxKSkpKih1Lz1rKTtBLmFtcGxpdHVkZT1mdW5jdGlvbih3KXtyZXR1cm4geCh3LHUqayl9O0EucGVyaW9kPWZ1bmN0aW9uKHcpe3JldHVybiB4KHEsdyl9O3JldHVybiBBfSgxLC4zKSxwPWZ1bmN0aW9uIEEodSx4KXtmdW5jdGlvbiB5KEMpe3JldHVybigwPgooQz0yKkMtMSk/dSpNYXRoLnBvdygyLDEwKkMpKk1hdGguc2luKCh3LUMpL3gpOjItdSpNYXRoLnBvdygyLC0xMCpDKSpNYXRoLnNpbigodytDKS94KSkvMn12YXIgdz1NYXRoLmFzaW4oMS8odT1NYXRoLm1heCgxLHUpKSkqKHgvPWspO3kuYW1wbGl0dWRlPWZ1bmN0aW9uKEMpe3JldHVybiBBKEMseCprKX07eS5wZXJpb2Q9ZnVuY3Rpb24oQyl7cmV0dXJuIEEodSxDKX07cmV0dXJuIHl9KDEsLjMpfSxmdW5jdGlvbihkLGYpe2YuYj1mdW5jdGlvbihoKXtyZXR1cm4gTWF0aC5wb3coMiwxMCpoLTEwKX07Zi5jPWZ1bmN0aW9uKGgpe3JldHVybiAxLU1hdGgucG93KDIsLTEwKmgpfTtmLmE9ZnVuY3Rpb24oaCl7cmV0dXJuKDE+PShoKj0yKT9NYXRoLnBvdygyLDEwKmgtMTApOjItTWF0aC5wb3coMiwxMC0xMCpoKSkvMn19LGZ1bmN0aW9uKGQsZil7Zi5hPWZ1bmN0aW9uKGgpe3JldHVybitofX0sZnVuY3Rpb24oZCxmLGgpe2guZChmLCJiIixmdW5jdGlvbigpe3JldHVybiBrfSk7aC5kKGYsCiJjIixmdW5jdGlvbigpe3JldHVybiB0fSk7aC5kKGYsImEiLGZ1bmN0aW9uKCl7cmV0dXJuIGx9KTt2YXIgaz1mdW5jdGlvbiBuKG0pe2Z1bmN0aW9uIHEodSl7cmV0dXJuIE1hdGgucG93KHUsbSl9bT0rbTtxLmV4cG9uZW50PW47cmV0dXJuIHF9KDMpLHQ9ZnVuY3Rpb24gcShuKXtmdW5jdGlvbiB1KHgpe3JldHVybiAxLU1hdGgucG93KDEteCxuKX1uPStuO3UuZXhwb25lbnQ9cTtyZXR1cm4gdX0oMyksbD1mdW5jdGlvbiB1KHEpe2Z1bmN0aW9uIHgoQSl7cmV0dXJuKDE+PShBKj0yKT9NYXRoLnBvdyhBLHEpOjItTWF0aC5wb3coMi1BLHEpKS8yfXE9K3E7eC5leHBvbmVudD11O3JldHVybiB4fSgzKX0sZnVuY3Rpb24oZCxmKXtmLmI9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqaH07Zi5jPWZ1bmN0aW9uKGgpe3JldHVybiBoKigyLWgpfTtmLmE9ZnVuY3Rpb24oaCl7cmV0dXJuKDE+PShoKj0yKT9oKmg6LS1oKigyLWgpKzEpLzJ9fSxmdW5jdGlvbihkLGYpe2YuYj1mdW5jdGlvbih0KXtyZXR1cm4gMS0KTWF0aC5jb3ModCprKX07Zi5jPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0KmspfTtmLmE9ZnVuY3Rpb24odCl7cmV0dXJuKDEtTWF0aC5jb3MoaCp0KSkvMn07dmFyIGg9TWF0aC5QSSxrPWgvMn0sZnVuY3Rpb24oZCxmLGgpe2Z1bmN0aW9uIGsobCl7cmV0dXJuITA9PT10KGwpJiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChsKX12YXIgdD1oKDEyOSk7ZC5leHBvcnRzPWZ1bmN0aW9uKGwpe2lmKCExPT09ayhsKSlyZXR1cm4hMTtsPWwuY29uc3RydWN0b3I7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBsKXJldHVybiExO2w9bC5wcm90b3R5cGU7cmV0dXJuITE9PT1rKGwpfHwhMT09PWwuaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKT8hMTohMH19LGZ1bmN0aW9uKGQpe2QuZXhwb3J0cz1mdW5jdGlvbihmKXtyZXR1cm4gbnVsbCE9ZiYmIm9iamVjdCI9PT10eXBlb2YgZiYmITE9PT1BcnJheS5pc0FycmF5KGYpfX0sZnVuY3Rpb24oZCwKZil7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoayx0LGwpe3ZvaWQgMD09PXQmJih0PTEwKTt2b2lkIDA9PT1sJiYobD17fSk7dmFyIHA9dGhpczt0aGlzLmN0eD1rO3RoaXMubGluZUhlaWdodD10O3RoaXMuc3R5bGU9bDt0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG0pe3AuY3R4LmZvbnQ9cC5zdHlsZS5mb250O3JldHVybnt3aWR0aDpwLmN0eC5tZWFzdXJlVGV4dChtKS53aWR0aCxoZWlnaHQ6cC5saW5lSGVpZ2h0fX19O3RoaXMuY3JlYXRlUGVuPWZ1bmN0aW9uKG0sbixxKXtudWxsPT1xJiYocT1wLmN0eCk7cS5zYXZlKCk7cS50cmFuc2xhdGUobi50cmFuc2xhdGVbMF0sbi50cmFuc2xhdGVbMV0pO3Eucm90YXRlKG4ucm90YXRlKk1hdGguUEkvMTgwKTtyZXR1cm4gcC5jcmVhdGVDYW52YXNQZW4ocSl9O3ZvaWQgMD09PXRoaXMuc3R5bGUuZmlsbCYmKHRoaXMuc3R5bGUuZmlsbD0iIzQ0NCIpfWgucHJvdG90eXBlLmNyZWF0ZUNhbnZhc1Blbj1mdW5jdGlvbihrKXt2YXIgdD0KdGhpcztyZXR1cm57ZGVzdHJveTpmdW5jdGlvbigpe2sucmVzdG9yZSgpfSx3cml0ZTpmdW5jdGlvbihsLHAsbSxuKXtrLnRleHRBbGlnbj1wO251bGwhPXQuc3R5bGUuZm9udCYmKGsuZm9udD10LnN0eWxlLmZvbnQpO251bGwhPXQuc3R5bGUuZmlsbCYmKGsuZmlsbFN0eWxlPXQuc3R5bGUuZmlsbCxrLmZpbGxUZXh0KGwsbSxuKSk7bnVsbCE9dC5zdHlsZS5zdHJva2UmJihrLnN0cm9rZVN0eWxlPXQuc3R5bGUuZmlsbCxrLnN0cm9rZVRleHQobCxtLG4pKX19fTtyZXR1cm4gaH0oKTtmLkNhbnZhc0NvbnRleHQ9ZH0sZnVuY3Rpb24oZCxmKXt2YXIgaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGsoKXt9ay5hcHBlbmQ9ZnVuY3Rpb24odCxsKXtmb3IodmFyIHA9W10sbT0yO208YXJndW1lbnRzLmxlbmd0aDttKyspcFttLTJdPWFyZ3VtZW50c1ttXTtwPWsuY3JlYXRlLmFwcGx5KGssW2xdLmNvbmNhdChwKSk7dC5hcHBlbmRDaGlsZChwKTtyZXR1cm4gcH07ay5jcmVhdGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBsPQpbXSxwPTE7cDxhcmd1bWVudHMubGVuZ3RoO3ArKylsW3AtMV09YXJndW1lbnRzW3BdO3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGsuU1ZHX05TLHQpO2suYWRkQ2xhc3Nlcy5hcHBseShrLFtwXS5jb25jYXQobCkpO3JldHVybiBwfTtrLmFkZENsYXNzZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBsPVtdLHA9MTtwPGFyZ3VtZW50cy5sZW5ndGg7cCsrKWxbcC0xXT1hcmd1bWVudHNbcF07bD1sLmZpbHRlcihmdW5jdGlvbihtKXtyZXR1cm4gbnVsbCE9bX0pO251bGwhPXQuY2xhc3NMaXN0P2wuZm9yRWFjaChmdW5jdGlvbihtKXt0LmNsYXNzTGlzdC5hZGQobSl9KTp0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLGwuam9pbigiICIpKX07ay5nZXREaW1lbnNpb25zPWZ1bmN0aW9uKHQpe2lmKHQuZ2V0QkJveCl0cnl7dmFyIGw9dC5nZXRCQm94KCk7cmV0dXJue3dpZHRoOmwud2lkdGgsaGVpZ2h0OmwuaGVpZ2h0fX1jYXRjaChwKXt9cmV0dXJue2hlaWdodDowLHdpZHRoOjB9fTtyZXR1cm4ga30oKTsKaC5TVkdfTlM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtmLlN2Z1V0aWxzPWg7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGsodCxsLHApe3ZvaWQgMD09PXAmJihwPSExKTt2YXIgbT10aGlzO3RoaXMuZWxlbWVudD10O3RoaXMuY2xhc3NOYW1lPWw7dGhpcy5hZGRUaXRsZUVsZW1lbnQ9cDt0aGlzLmNyZWF0ZVJ1bGVyPWZ1bmN0aW9uKCl7dmFyIG49bS5nZXRUZXh0RWxlbWVudHMobS5lbGVtZW50KSxxPW4ucGFyZW50RWxlbWVudCx1PW4uY29udGFpbmVyRWxlbWVudCx4PW4udGV4dEVsZW1lbnQ7cmV0dXJuIGZ1bmN0aW9uKEEpe3EuYXBwZW5kQ2hpbGQodSk7eC50ZXh0Q29udGVudD1BO0E9aC5nZXREaW1lbnNpb25zKHgpO3EucmVtb3ZlQ2hpbGQodSk7cmV0dXJuIEF9fTt0aGlzLmNyZWF0ZVBlbj1mdW5jdGlvbihuLHEsdSl7bnVsbD09dSYmKHU9bS5lbGVtZW50KTt1PWguYXBwZW5kKHUsImciLCJ0ZXh0LWNvbnRhaW5lciIsbS5jbGFzc05hbWUpO20uYWRkVGl0bGVFbGVtZW50JiYKKGguYXBwZW5kKHUsInRpdGxlIikudGV4dENvbnRlbnQ9bix1LnNldEF0dHJpYnV0ZSgidGl0bGUiLG4pKTtuPWguYXBwZW5kKHUsImciLCJ0ZXh0LWFyZWEiKTtuLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrcS50cmFuc2xhdGVbMF0rIiwiK3EudHJhbnNsYXRlWzFdKyIpcm90YXRlKCIrKHEucm90YXRlKyIpIikpO3JldHVybiBtLmNyZWF0ZVN2Z0xpbmVQZW4obil9fWsucHJvdG90eXBlLnNldEFkZFRpdGxlRWxlbWVudD1mdW5jdGlvbih0KXt0aGlzLmFkZFRpdGxlRWxlbWVudD10fTtrLnByb3RvdHlwZS5jcmVhdGVTdmdMaW5lUGVuPWZ1bmN0aW9uKHQpe3JldHVybnt3cml0ZTpmdW5jdGlvbihsLHAsbSxuKXt2YXIgcT1oLmFwcGVuZCh0LCJ0ZXh0IiwidGV4dC1saW5lIik7cS50ZXh0Q29udGVudD1sO3Euc2V0QXR0cmlidXRlKCJ0ZXh0LWFuY2hvciIscCk7cS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK20rIiwiK24rIikiKTtxLnNldEF0dHJpYnV0ZSgieSIsCiItMC4yNWVtIil9fX07ay5wcm90b3R5cGUuZ2V0VGV4dEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2lmKCJ0ZXh0Ij09PXQudGFnTmFtZSl7dmFyIGw9dC5wYXJlbnRFbGVtZW50O251bGw9PWwmJihsPXQucGFyZW50Tm9kZSk7bC5yZW1vdmVDaGlsZCh0KTtyZXR1cm57Y29udGFpbmVyRWxlbWVudDp0LHBhcmVudEVsZW1lbnQ6bCx0ZXh0RWxlbWVudDp0fX12YXIgcD10LnF1ZXJ5U2VsZWN0b3IoInRleHQiKTtpZihudWxsIT1wKXJldHVybiBsPXQucGFyZW50RWxlbWVudCxudWxsPT1sJiYobD10LnBhcmVudE5vZGUpLGwucmVtb3ZlQ2hpbGQodCkse2NvbnRhaW5lckVsZW1lbnQ6dCxwYXJlbnRFbGVtZW50OmwsdGV4dEVsZW1lbnQ6cH07bD1oLmNyZWF0ZSgidGV4dCIsdGhpcy5jbGFzc05hbWUpO3JldHVybntjb250YWluZXJFbGVtZW50OmwscGFyZW50RWxlbWVudDp0LHRleHRFbGVtZW50Omx9fTtyZXR1cm4ga30oKTtmLlN2Z0NvbnRleHQ9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPQp0aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24ocCxtKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj1wfWZvcih2YXIgcSBpbiBtKW0uaGFzT3duUHJvcGVydHkocSkmJihwW3FdPW1bcV0pO3AucHJvdG90eXBlPW51bGw9PT1tP09iamVjdC5jcmVhdGUobSk6KG4ucHJvdG90eXBlPW0ucHJvdG90eXBlLG5ldyBuKX0sdD1oKDIxKSxsPWgoMzYpO2Q9ZnVuY3Rpb24ocCl7ZnVuY3Rpb24gbShuKXt2YXIgcT1wLmNhbGwodGhpcyxuKXx8dGhpcztxLmRpbUNhY2hlPW5ldyB0LkNhY2hlKGZ1bmN0aW9uKHUpe3JldHVybiBxLl9tZWFzdXJlTm90RnJvbUNhY2hlKHUpfSk7cmV0dXJuIHF9ayhtLHApO20ucHJvdG90eXBlLl9tZWFzdXJlTm90RnJvbUNhY2hlPWZ1bmN0aW9uKG4pe3JldHVybiBwLnByb3RvdHlwZS5tZWFzdXJlLmNhbGwodGhpcyxuKX07bS5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihuKXt2b2lkIDA9PT1uJiYobj1sLkFic3RyYWN0TWVhc3VyZXIuSEVJR0hUX1RFWFQpOwpyZXR1cm4gdGhpcy5kaW1DYWNoZS5nZXQobil9O20ucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5kaW1DYWNoZS5jbGVhcigpO3AucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyl9O3JldHVybiBtfShoKDYwKS5DYWNoZUNoYXJhY3Rlck1lYXN1cmVyKTtmLkNhY2hlTWVhc3VyZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoNTkpLHQ9aCg2MiksbD1oKDY0KSxwPWgoNjYpO2Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKG4pe3RoaXMuY29udGV4dD1uO3RoaXMubWVhc3VyZXI9bmV3IHQuQ2FjaGVNZWFzdXJlcih0aGlzLmNvbnRleHQpO3RoaXMud3JhcHBlcj1uZXcgbC5XcmFwcGVyO3RoaXMud3JpdGVyPW5ldyBwLldyaXRlcih0aGlzLm1lYXN1cmVyLHRoaXMuY29udGV4dCx0aGlzLndyYXBwZXIpfW0uc3ZnPWZ1bmN0aW9uKG4scSx1KXtyZXR1cm4gbmV3IG0obmV3IGsuU3ZnQ29udGV4dChuLHEsdSkpfTttLmNhbnZhcz1mdW5jdGlvbihuLHEsdSl7cmV0dXJuIG5ldyBtKG5ldyBrLkNhbnZhc0NvbnRleHQobiwKcSx1KSl9O20ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKG4scSx1LHgsQSl7dGhpcy53cml0ZXIud3JpdGUobixxLHUseCxBKX07bS5wcm90b3R5cGUuY2xlYXJNZWFzdXJlckNhY2hlPWZ1bmN0aW9uKCl7dGhpcy5tZWFzdXJlci5yZXNldCgpfTtyZXR1cm4gbX0oKTtmLlR5cGVzZXR0ZXI9ZH0sZnVuY3Rpb24oZCxmKXtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gaChrKXt0aGlzLmNhY2hlPXt9O3RoaXMuY29tcHV0ZT1rfWgucHJvdG90eXBlLmdldD1mdW5jdGlvbihrKXt0aGlzLmNhY2hlLmhhc093blByb3BlcnR5KGspfHwodGhpcy5jYWNoZVtrXT10aGlzLmNvbXB1dGUoaykpO3JldHVybiB0aGlzLmNhY2hlW2tdfTtoLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuY2FjaGU9e307cmV0dXJuIHRoaXN9O3JldHVybiBofSgpO2YuQ2FjaGU9ZH0sZnVuY3Rpb24oZCxmKXtmLk1ldGhvZHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBoKCl7fWguYXJyYXlFcT1mdW5jdGlvbihrLHQpe2lmKG51bGw9PQprfHxudWxsPT10KXJldHVybiBrPT09dDtpZihrLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbD0wO2w8ay5sZW5ndGg7bCsrKWlmKGtbbF0hPT10W2xdKXJldHVybiExO3JldHVybiEwfTtoLm9iakVxPWZ1bmN0aW9uKGssdCl7aWYobnVsbD09a3x8bnVsbD09dClyZXR1cm4gaz09PXQ7dmFyIGw9T2JqZWN0LmtleXMoaykuc29ydCgpLHA9T2JqZWN0LmtleXModCkuc29ydCgpLG09bC5tYXAoZnVuY3Rpb24ocSl7cmV0dXJuIGtbcV19KSxuPXAubWFwKGZ1bmN0aW9uKHEpe3JldHVybiB0W3FdfSk7cmV0dXJuIGguYXJyYXlFcShsLHApJiZoLmFycmF5RXEobSxuKX07aC5zdHJpY3RFcT1mdW5jdGlvbihrLHQpe3JldHVybiBrPT09dH07aC5kZWZhdWx0cz1mdW5jdGlvbihrKXtmb3IodmFyIHQ9W10sbD0xO2w8YXJndW1lbnRzLmxlbmd0aDtsKyspdFtsLTFdPWFyZ3VtZW50c1tsXTtpZihudWxsPT1rKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpOwp2YXIgcD1PYmplY3Qoayk7dC5mb3JFYWNoKGZ1bmN0aW9uKG0pe2lmKG51bGwhPW0pZm9yKHZhciBuIGluIG0pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG0sbikmJihwW25dPW1bbl0pfSk7cmV0dXJuIHB9O3JldHVybiBofSgpfSxmdW5jdGlvbihkLGYpe2YuU3RyaW5nTWV0aG9kcz1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoKXt9aC5jb21iaW5lV2hpdGVzcGFjZT1mdW5jdGlvbihrKXtyZXR1cm4gay5yZXBsYWNlKC9bIFx0XSsvZywiICIpfTtoLmlzTm90RW1wdHlTdHJpbmc9ZnVuY3Rpb24oayl7cmV0dXJuIGsmJiIiIT09ay50cmltKCl9O2gudHJpbVN0YXJ0PWZ1bmN0aW9uKGssdCl7aWYoIWspcmV0dXJuIGs7az1rLnNwbGl0KCIiKTt2YXIgbD10P2Z1bmN0aW9uKHApe3JldHVybiBwLnNwbGl0KHQpLnNvbWUoaC5pc05vdEVtcHR5U3RyaW5nKX06aC5pc05vdEVtcHR5U3RyaW5nO3JldHVybiBrLnJlZHVjZShmdW5jdGlvbihwLG0pe3JldHVybiBsKHArbSk/CnArbTpwfSwiIil9O2gudHJpbUVuZD1mdW5jdGlvbihrLHQpe2lmKCFrKXJldHVybiBrO2s9ay5zcGxpdCgiIik7ay5yZXZlcnNlKCk7az1oLnRyaW1TdGFydChrLmpvaW4oIiIpLHQpLnNwbGl0KCIiKTtrLnJldmVyc2UoKTtyZXR1cm4gay5qb2luKCIiKX07cmV0dXJuIGh9KCl9LGZ1bmN0aW9uKGQsZil7ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoKXt0aGlzLldvcmREaXZpZGVyUmVnRXhwPS9cVy87dGhpcy5XaGl0ZXNwYWNlUmVnRXhwPS9ccy99aC5wcm90b3R5cGUudG9rZW5pemU9ZnVuY3Rpb24oayl7dmFyIHQ9dGhpcztyZXR1cm4gay5zcGxpdCgiIikucmVkdWNlKGZ1bmN0aW9uKGwscCl7cmV0dXJuIGwuc2xpY2UoMCwtMSkuY29uY2F0KHQuc2hvdWxkQ3JlYXRlTmV3VG9rZW4obFtsLmxlbmd0aC0xXSxwKSl9LFsiIl0pfTtoLnByb3RvdHlwZS5zaG91bGRDcmVhdGVOZXdUb2tlbj1mdW5jdGlvbihrLHQpe2lmKCFrKXJldHVyblt0XTt2YXIgbD1rW2subGVuZ3RoLTFdO3JldHVybiB0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdChsKSYmCnRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KHQpP1trK3RdOnRoaXMuV2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGwpfHx0aGlzLldoaXRlc3BhY2VSZWdFeHAudGVzdCh0KT9bayx0XTp0aGlzLldvcmREaXZpZGVyUmVnRXhwLnRlc3QobCl8fHRoaXMuV29yZERpdmlkZXJSZWdFeHAudGVzdCh0KT9sPT09dD9bayt0XTpbayx0XTpbayt0XX07cmV0dXJuIGh9KCk7Zi5Ub2tlbml6ZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbih0LGwpe2Z1bmN0aW9uIHAoKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBtIGluIGwpbC5oYXNPd25Qcm9wZXJ0eShtKSYmKHRbbV09bFttXSk7dC5wcm90b3R5cGU9bnVsbD09PWw/T2JqZWN0LmNyZWF0ZShsKToocC5wcm90b3R5cGU9bC5wcm90b3R5cGUsbmV3IHApfTtkPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGwoKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9ayhsLHQpO2wucHJvdG90eXBlLndyYXA9CmZ1bmN0aW9uKHAsbSxuLHEpe2Z1bmN0aW9uIHUoRCl7cmV0dXJuIHQucHJvdG90eXBlLndyYXAuY2FsbCh4LHAsbSxELHEpfXZhciB4PXRoaXM7dm9pZCAwPT09cSYmKHE9SW5maW5pdHkpO2lmKDE8cC5zcGxpdCgiXG4iKS5sZW5ndGgpdGhyb3cgRXJyb3IoIlNpbmdsZUxpbmVXcmFwcGVyIGlzIGRlc2lnbmVkIHRvIHdvcmsgb25seSBvbiBzaW5nbGUgbGluZSIpO3ZhciBBPXUobik7aWYoMj5BLm5vTGluZXMpcmV0dXJuIEE7Zm9yKHZhciB5PTAsdz0wO3c8bC5OT19XUkFQX0lURVJBVElPTlMmJm4+eTsrK3cpe3ZhciBDPShuK3kpLzIsRj11KEMpO3RoaXMuYXJlU2FtZVJlc3VsdHMoQSxGKT8obj1DLEE9Rik6eT1DfXJldHVybiBBfTtsLnByb3RvdHlwZS5hcmVTYW1lUmVzdWx0cz1mdW5jdGlvbihwLG0pe3JldHVybiBwLm5vTGluZXM9PT1tLm5vTGluZXMmJnAudHJ1bmNhdGVkVGV4dD09PW0udHJ1bmNhdGVkVGV4dH07cmV0dXJuIGx9KGgoNjUpLldyYXBwZXIpO2QuTk9fV1JBUF9JVEVSQVRJT05TPQo1O2YuU2luZ2xlTGluZVdyYXBwZXI9ZH0sZnVuY3Rpb24oZCxmLGgpe3ZhciBrPWgoMjEpLHQ9e3RleHRSb3RhdGlvbjowLHRleHRTaGVhcjowLHhBbGlnbjoibGVmdCIseUFsaWduOiJ0b3AifTtkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbChwLG0sbil7dGhpcy5fbWVhc3VyZXI9cDt0aGlzLl9wZW5GYWN0b3J5PW07dGhpcy5fd3JhcHBlcj1ufWwucHJvdG90eXBlLm1lYXN1cmVyPWZ1bmN0aW9uKHApe3RoaXMuX21lYXN1cmVyPXA7cmV0dXJuIHRoaXN9O2wucHJvdG90eXBlLndyYXBwZXI9ZnVuY3Rpb24ocCl7dGhpcy5fd3JhcHBlcj1wO3JldHVybiB0aGlzfTtsLnByb3RvdHlwZS5wZW5GYWN0b3J5PWZ1bmN0aW9uKHApe3RoaXMuX3BlbkZhY3Rvcnk9cDtyZXR1cm4gdGhpc307bC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24ocCxtLG4scSx1KXt2b2lkIDA9PT1xJiYocT17fSk7cT1rLk1ldGhvZHMuZGVmYXVsdHMoe30sdCxxKTtpZigtMT09PWwuU3VwcG9ydGVkUm90YXRpb24uaW5kZXhPZihxLnRleHRSb3RhdGlvbikpdGhyb3cgRXJyb3IoInVuc3VwcG9ydGVkIHJvdGF0aW9uIC0gIisKcS50ZXh0Um90YXRpb24rIi4gU3VwcG9ydGVkIHJvdGF0aW9ucyBhcmUgIitsLlN1cHBvcnRlZFJvdGF0aW9uLmpvaW4oIiwgIikpO2lmKG51bGwhPXEudGV4dFNoZWFyJiYtODA+cS50ZXh0U2hlYXJ8fDgwPHEudGV4dFNoZWFyKXRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCBzaGVhciBhbmdsZSAtICIrcS50ZXh0U2hlYXIrIi4gTXVzdCBiZSBiZXR3ZWVuIC04MCBhbmQgODAiKTt2YXIgeD00NTxNYXRoLmFicyhNYXRoLmFicyhxLnRleHRSb3RhdGlvbiktOTApLEE9eD9tOm4seT14P246bSx3PXEudGV4dFNoZWFyLEM9dypNYXRoLlBJLzE4MDt4PXRoaXMuX21lYXN1cmVyLm1lYXN1cmUoKS5oZWlnaHQ7dmFyIEY9eCpNYXRoLnRhbihDKTtBPUEvTWF0aC5jb3MoQyktTWF0aC5hYnMoRik7dmFyIEQ9eSpNYXRoLmNvcyhDKTt5PWsuU3RyaW5nTWV0aG9kcy5jb21iaW5lV2hpdGVzcGFjZShwKTt5PSh0aGlzLl93cmFwcGVyP3RoaXMuX3dyYXBwZXIud3JhcCh5LHRoaXMuX21lYXN1cmVyLApBLEQpLndyYXBwZWRUZXh0OnkpLnNwbGl0KCJcbiIpO0M9bC5YT2Zmc2V0RmFjdG9yW3EueEFsaWduXSpBKk1hdGguc2luKEMpLWwuWU9mZnNldEZhY3RvcltxLnlBbGlnbl0qKEQteS5sZW5ndGgqeCk7dz1xLnRleHRSb3RhdGlvbit3O3N3aXRjaChxLnRleHRSb3RhdGlvbil7Y2FzZSA5MDptPVttK0MsMF07YnJlYWs7Y2FzZSAtOTA6bT1bLUMsbl07YnJlYWs7Y2FzZSAxODA6bT1bbSxuK0NdO2JyZWFrO2RlZmF1bHQ6bT1bMCwtQ119cD10aGlzLl9wZW5GYWN0b3J5LmNyZWF0ZVBlbihwLHt0cmFuc2xhdGU6bSxyb3RhdGU6d30sdSk7dGhpcy53cml0ZUxpbmVzKHkscCxBLHgsRixxLnhBbGlnbik7bnVsbCE9cC5kZXN0cm95JiZwLmRlc3Ryb3koKX07bC5wcm90b3R5cGUud3JpdGVMaW5lcz1mdW5jdGlvbihwLG0sbixxLHUseCl7cC5mb3JFYWNoKGZ1bmN0aW9uKEEseSl7bS53cml0ZShBLGwuQW5jaG9yQ29udmVydGVyW3hdLCgwPHU/KHkrMSkqdTp5KnUpK24qbC5YT2Zmc2V0RmFjdG9yW3hdLAooeSsxKSpxKX0pfTtyZXR1cm4gbH0oKTtkLlN1cHBvcnRlZFJvdGF0aW9uPVstOTAsMCwxODAsOTBdO2QuQW5jaG9yQ29udmVydGVyPXtjZW50ZXI6Im1pZGRsZSIsbGVmdDoic3RhcnQiLHJpZ2h0OiJlbmQifTtkLlhPZmZzZXRGYWN0b3I9e2NlbnRlcjouNSxsZWZ0OjAscmlnaHQ6MX07ZC5ZT2Zmc2V0RmFjdG9yPXtib3R0b206MSxjZW50ZXI6LjUsdG9wOjB9O2YuV3JpdGVyPWR9LGZ1bmN0aW9uKGQsZixoKXtmdW5jdGlvbiBrKHQpe2Zvcih2YXIgbCBpbiB0KWYuaGFzT3duUHJvcGVydHkobCl8fChmW2xdPXRbbF0pfWgoNjkpO2Q9aCg3KTtmLkFuaW1hdG9ycz1kO2Q9aCg2Nyk7Zi5BeGVzPWQ7ZD1oKDM3KTtmLkNvbXBvbmVudHM9ZDtkPWgoMjMpO2YuQ29uZmlncz1kO2Q9aCg4KTtmLkZvcm1hdHRlcnM9ZDtkPWgoMzApO2YuUmVuZGVyQ29udHJvbGxlcj1kO2Q9aCgzOSk7Zi5SZW5kZXJQb2xpY2llcz1kO2Q9aCgzMSk7Zi5TeW1ib2xGYWN0b3JpZXM9ZDtkPWgoMTMpO2YuRGlzcGF0Y2hlcnM9CmQ7ZD1oKDE0KTtmLkRyYXdlcnM9ZDtkPWgoMjUpO2YuSW50ZXJhY3Rpb25zPWQ7ZD1oKDE5KTtmLlBsb3RzPWQ7ZD1oKDMpO2YuU2NhbGVzPWQ7ZD1oKDApO2YuVXRpbHM9ZDtrKGgoMjIpKTtkPWgoMjgpO2YuVGltZUludGVydmFsPWQuVGltZUludGVydmFsO2soaCg0KSk7ayhoKDI5KSk7ayhoKDM4KSk7ZD1oKDY4KTtmLnZlcnNpb249ZC52ZXJzaW9uO2soaCgyNCkpO2soaCg2KSk7ayhoKDE1KSk7ayhoKDQwKSk7ayhoKDE2KSk7ayhoKDIpKTtrKGgoMTEpKTtrKGgoMTcpKX1dKX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWNoYXJ0LWhlbHBlcnMvcGxvdHRhYmxlLWludGVyYWN0aW9ucy5qcwp2YXIgcmc7CihmdW5jdGlvbihiKXtmdW5jdGlvbiBkKG0pe2NvbnN0IG49W107Zm9yKDttJiZtIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7KWlmKG4ucHVzaChtKSxtLmFzc2lnbmVkU2xvdCltPW0uYXNzaWduZWRTbG90O2Vsc2UgaWYobS5wYXJlbnRFbGVtZW50KW09bS5wYXJlbnRFbGVtZW50O2Vsc2V7Y29uc3QgcT1tLnBhcmVudE5vZGU7bT1xIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudD9xLmhvc3Q6cSE9PW0/cTpudWxsfXJldHVybiBufWZ1bmN0aW9uIGYobSl7dmFyIG49ZChtKTttPWg7bGV0IHE9bnVsbDtmb3IoY29uc3QgeCBvZiBuKXtuPVBsb3R0YWJsZS5VdGlscy5ET00uZ2V0RWxlbWVudFRyYW5zZm9ybSh4KTtpZihudWxsIT1uKXt2YXIgdT14LmNsaWVudFdpZHRoLzI7Y29uc3QgQT14LmNsaWVudEhlaWdodC8yO209UGxvdHRhYmxlLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUobSxbdSxBXSk7bT1QbG90dGFibGUuVXRpbHMuTWF0aC5tdWx0aXBseU1hdHJpeChtLFBsb3R0YWJsZS5VdGlscy5NYXRoLmludmVydE1hdHJpeChuKSk7Cm09UGxvdHRhYmxlLlV0aWxzLk1hdGgubXVsdGlwbHlUcmFuc2xhdGUobSxbLXUsLUFdKX1uPXguc2Nyb2xsTGVmdDt1PXguc2Nyb2xsVG9wO2lmKG51bGw9PT1xfHx4PT09cSluLT14Lm9mZnNldExlZnQreC5jbGllbnRMZWZ0LHUtPXgub2Zmc2V0VG9wK3guY2xpZW50VG9wLHE9eC5vZmZzZXRQYXJlbnQ7bT1QbG90dGFibGUuVXRpbHMuTWF0aC5tdWx0aXBseVRyYW5zbGF0ZShtLFtuLHVdKX1yZXR1cm4gbX1jb25zdCBoPVsxLDAsMCwxLDAsMF07Y2xhc3MgayBleHRlbmRzIFBsb3R0YWJsZS5VdGlscy5UcmFuc2xhdG9ye2NvbXB1dGVQb3NpdGlvbihtLG4pe209e3g6bSx5Om59O249Zih0aGlzLl9yb290RWxlbWVudCk7cmV0dXJuIG51bGw9PW4/bTpQbG90dGFibGUuVXRpbHMuTWF0aC5hcHBseVRyYW5zZm9ybShuLG0pfX1jbGFzcyB0IGV4dGVuZHMgUGxvdHRhYmxlLkRpc3BhdGNoZXJzLk1vdXNle2NvbnN0cnVjdG9yKG0pe3N1cGVyKG0pO3RoaXMuX2V2ZW50VGFyZ2V0PW0ucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpOwp0aGlzLl90cmFuc2xhdG9yPW5ldyBrKG0ucm9vdCgpLnJvb3RFbGVtZW50KCkubm9kZSgpKX1zdGF0aWMgZ2V0RGlzcGF0Y2hlcihtKXtjb25zdCBuPW0ucm9vdCgpLnJvb3RFbGVtZW50KCk7bGV0IHE9blt0Ll9ESVNQQVRDSEVSX0tFWV07cXx8KHE9bmV3IHQobSksblt0Ll9ESVNQQVRDSEVSX0tFWV09cSk7cmV0dXJuIHF9fWNsYXNzIGwgZXh0ZW5kcyBQbG90dGFibGUuRGlzcGF0Y2hlcnMuVG91Y2h7Y29uc3RydWN0b3IobSl7c3VwZXIobSk7dGhpcy5fZXZlbnRUYXJnZXQ9bS5yb290KCkucm9vdEVsZW1lbnQoKS5ub2RlKCk7dGhpcy5fdHJhbnNsYXRvcj1uZXcgayhtLnJvb3QoKS5yb290RWxlbWVudCgpLm5vZGUoKSl9c3RhdGljIGdldERpc3BhdGNoZXIobSl7Y29uc3Qgbj1tLnJvb3QoKS5yb290RWxlbWVudCgpO2xldCBxPW5bbC5fRElTUEFUQ0hFUl9LRVldO3F8fChxPW5ldyBsKG0pLG5bbC5fRElTUEFUQ0hFUl9LRVldPXEpO3JldHVybiBxfX1QbG90dGFibGUuSW50ZXJhY3Rpb24ucHJvdG90eXBlLl9pc0luc2lkZUNvbXBvbmVudD0KZnVuY3Rpb24obSl7cmV0dXJuIDA8PW0ueCYmMDw9bS55JiZtLng8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby53aWR0aCgpJiZtLnk8dGhpcy5fY29tcG9uZW50QXR0YWNoZWRUby5oZWlnaHQoKX07Y2xhc3MgcCBleHRlbmRzIFBsb3R0YWJsZS5JbnRlcmFjdGlvbnMuUG9pbnRlcntfYW5jaG9yKCl7dGhpcy5faXNBbmNob3JlZD0hMDt0aGlzLl9tb3VzZURpc3BhdGNoZXI9dC5nZXREaXNwYXRjaGVyKHRoaXMuX2NvbXBvbmVudEF0dGFjaGVkVG8pO3RoaXMuX21vdXNlRGlzcGF0Y2hlci5vbk1vdXNlTW92ZSh0aGlzLl9tb3VzZU1vdmVDYWxsYmFjayk7dGhpcy5fdG91Y2hEaXNwYXRjaGVyPWwuZ2V0RGlzcGF0Y2hlcih0aGlzLl9jb21wb25lbnRBdHRhY2hlZFRvKTt0aGlzLl90b3VjaERpc3BhdGNoZXIub25Ub3VjaFN0YXJ0KHRoaXMuX3RvdWNoU3RhcnRDYWxsYmFjayl9fWIuUG9pbnRlckludGVyYWN0aW9uPXB9KShyZ3x8KHJnPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdnotY2hhcnQtaGVscGVycy92ei1jaGFydC1oZWxwZXJzLmpzCihmdW5jdGlvbihiKXtmdW5jdGlvbiBkKCl7bGV0IHQ9bmV3IFBsb3R0YWJsZS5TY2FsZXMuTGluZWFyO3QudGlja0dlbmVyYXRvcigpO2xldCBsPW5ldyBQbG90dGFibGUuQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpO2wuZm9ybWF0dGVyKGIuc3RlcEZvcm1hdHRlcik7cmV0dXJue3NjYWxlOnQsYXhpczpsLGFjY2Vzc29yOnA9PnAuc3RlcH19ZnVuY3Rpb24gZigpe2xldCB0PW5ldyBQbG90dGFibGUuU2NhbGVzLlRpbWU7cmV0dXJue3NjYWxlOnQsYXhpczpuZXcgUGxvdHRhYmxlLkF4ZXMuVGltZSh0LCJib3R0b20iKSxhY2Nlc3NvcjpsPT5sLndhbGxfdGltZX19ZnVuY3Rpb24gaCgpe2xldCB0PW5ldyBQbG90dGFibGUuU2NhbGVzLkxpbmVhcjtyZXR1cm57c2NhbGU6dCxheGlzOm5ldyBQbG90dGFibGUuQXhlcy5OdW1lcmljKHQsImJvdHRvbSIpLGFjY2Vzc29yOmIucmVsYXRpdmVBY2Nlc3Nvcn19Yi5TWU1CT0xTX0xJU1Q9W3tjaGFyYWN0ZXI6Ilx1MjVmYyIsbWV0aG9kOlBsb3R0YWJsZS5TeW1ib2xGYWN0b3JpZXMuc3F1YXJlfSwKe2NoYXJhY3RlcjoiXHUyNWM2IixtZXRob2Q6UGxvdHRhYmxlLlN5bWJvbEZhY3Rvcmllcy5kaWFtb25kfSx7Y2hhcmFjdGVyOiJcdTI1YjIiLG1ldGhvZDpQbG90dGFibGUuU3ltYm9sRmFjdG9yaWVzLnRyaWFuZ2xlfSx7Y2hhcmFjdGVyOiJcdTI2MDUiLG1ldGhvZDpQbG90dGFibGUuU3ltYm9sRmFjdG9yaWVzLnN0YXJ9LHtjaGFyYWN0ZXI6Ilx1MjcxYSIsbWV0aG9kOlBsb3R0YWJsZS5TeW1ib2xGYWN0b3JpZXMuY3Jvc3N9XTtsZXQgazsoZnVuY3Rpb24odCl7dC5TVEVQPSJzdGVwIjt0LlJFTEFUSVZFPSJyZWxhdGl2ZSI7dC5XQUxMX1RJTUU9IndhbGxfdGltZSJ9KShrPWIuWFR5cGV8fChiLlhUeXBlPXt9KSk7Yi5ZX1RPT0xUSVBfRk9STUFUVEVSX1BSRUNJU0lPTj00O2IuU1RFUF9GT1JNQVRURVJfUFJFQ0lTSU9OPTQ7Yi5ZX0FYSVNfRk9STUFUVEVSX1BSRUNJU0lPTj0zO2IuVE9PTFRJUF9ZX1BJWEVMX09GRlNFVD0yMDtiLlRPT0xUSVBfQ0lSQ0xFX1NJWkU9NDtiLk5BTl9TWU1CT0xfU0laRT0KNjtiLm11bHRpc2NhbGVGb3JtYXR0ZXI9ZnVuY3Rpb24odCl7cmV0dXJuIGw9PntsZXQgcD1NYXRoLmFicyhsKTsxRS0xNT5wJiYocD0wKTtyZXR1cm4oMUU0PD1wP2QzLmZvcm1hdCgiLiIrdCsifmUiKTowPHAmJi4wMT5wP2QzLmZvcm1hdCgiLiIrdCsifmUiKTpkMy5mb3JtYXQoIi4iK3QrIn5nIikpKGwpfX07Yi5jb21wdXRlRG9tYWluPWZ1bmN0aW9uKHQsbCl7dD10LmZpbHRlcihuPT5pc0Zpbml0ZShuKSk7aWYoMD09PXQubGVuZ3RoKXJldHVyblstLjEsMS4xXTtsPyh0PV8uc29ydEJ5KHQpLGw9ZDMucXVhbnRpbGUodCwuMDUpLHQ9ZDMucXVhbnRpbGUodCwuOTUpKToobD1kMy5taW4odCksdD1kMy5tYXgodCkpO2xldCBwLG09dC1sO3A9MD09PW0/MS4xKk1hdGguYWJzKGwpKzEuMTouMiptO2w9WzA8PWwmJmw8bT8tLjEqdDpsLXAsdCtwXTtyZXR1cm4gbD1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihsKS5uaWNlKCkuZG9tYWluKCl9O2IuYWNjZXNzb3JpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGw9PgpsW3RdfTtiLnN0ZXBGb3JtYXR0ZXI9ZDMuZm9ybWF0KGAuJHtiLlNURVBfRk9STUFUVEVSX1BSRUNJU0lPTn1+c2ApO2Iuc3RlcFg9ZDtiLnRpbWVGb3JtYXR0ZXI9UGxvdHRhYmxlLkZvcm1hdHRlcnMudGltZSgiJWEgJWIgJWUsICVIOiVNOiVTIik7Yi53YWxsWD1mO2IucmVsYXRpdmVBY2Nlc3Nvcj0odCxsLHApPT57aWYobnVsbCE9dC5yZWxhdGl2ZSlyZXR1cm4gdC5yZWxhdGl2ZTtsPXAuZGF0YSgpO3JldHVybigrdC53YWxsX3RpbWUtKDA8bC5sZW5ndGg/K2xbMF0ud2FsbF90aW1lOjApKS8zNkU1fTtiLnJlbGF0aXZlRm9ybWF0dGVyPXQ9PntsZXQgbD0iIixwPU1hdGguZmxvb3IodC8yNCk7dC09MjQqcDtwJiYobCs9cCsiZCAiKTtsZXQgbT1NYXRoLmZsb29yKHQpO3Q9NjAqKHQtbSk7aWYobXx8cClsKz1tKyJoICI7bGV0IG49TWF0aC5mbG9vcih0KTt0PTYwKih0LW4pO2lmKG58fG18fHApbCs9bisibSAiO3JldHVybiBsK01hdGguZmxvb3IodCkrInMifTtiLnJlbGF0aXZlWD0KaDtiLmdldFhDb21wb25lbnRzPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIGsuU1RFUDpyZXR1cm4gZCgpO2Nhc2Ugay5XQUxMX1RJTUU6cmV0dXJuIGYoKTtjYXNlIGsuUkVMQVRJVkU6cmV0dXJuIGgoKTtkZWZhdWx0OnRocm93IEVycm9yKCJpbnZhbGlkIHhUeXBlOiAiK3QpO319fSkocmd8fChyZz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWNoYXJ0LWhlbHBlcnMvdnotY2hhcnQtdG9vbHRpcC5qcwp2YXIgRWg7CihmdW5jdGlvbihiKXtsZXQgZDsoZnVuY3Rpb24oaCl7aC5BVVRPPSJhdXRvIjtoLkJPVFRPTT0iYm90dG9tIjtoLlJJR0hUPSJyaWdodCJ9KShkPWIuVG9vbHRpcFBvc2l0aW9ufHwoYi5Ub29sdGlwUG9zaXRpb249e30pKTtjb25zdCBmPXtib3hTaGFkb3c6IjAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIC4zKSIsb3BhY2l0eTowLHBvc2l0aW9uOiJmaXhlZCIsd2lsbENoYW5nZToidHJhbnNmb3JtIix6SW5kZXg6NX07UG9seW1lcih7aXM6InZ6LWNoYXJ0LXRvb2x0aXAiLF90ZW1wbGF0ZTpudWxsLHByb3BlcnRpZXM6e2NvbnRlbnRDb21wb25lbnROYW1lOlN0cmluZyxwb3NpdGlvbjp7dHlwZTpTdHJpbmcsdmFsdWU6ZC5BVVRPfSxtaW5EaXN0RnJvbUVkZ2U6e3R5cGU6TnVtYmVyLHZhbHVlOjE1fX0scmVhZHkoKXt0aGlzLl90dW5uZWw9dGhpcy5fcmFmPXRoaXMuX3N0eWxlQ2FjaGU9bnVsbH0sYXR0YWNoZWQoKXt0aGlzLl90dW5uZWw9dGhpcy5fY3JlYXRlVHVubmVsKCk7dGhpcy5faGlkZU9uQmx1cj0KKCk9Pntkb2N1bWVudC5oaWRkZW4mJnRoaXMuaGlkZSgpfTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsdGhpcy5faGlkZU9uQmx1cil9LGRldGFjaGVkKCl7dGhpcy5oaWRlKCk7dGhpcy5fcmVtb3ZlVHVubmVsKHRoaXMuX3R1bm5lbCk7dGhpcy5fdHVubmVsPW51bGw7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHRoaXMuX2hpZGVPbkJsdXIpfSxjb250ZW50KCl7cmV0dXJuIHRoaXMuX3R1bm5lbC5zaGFkb3dSb290fSxoaWRlKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JhZik7dGhpcy5fc3R5bGVDYWNoZT1udWxsO3RoaXMuX3R1bm5lbC5zdHlsZS5vcGFjaXR5PTB9LHVwZGF0ZUFuZFBvc2l0aW9uKGgpe3dpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpO3RoaXMuX3JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5pc0F0dGFjaGVkJiZ0aGlzLl9yZXBvc2l0aW9uSW1wbChoKX0pfSwKX3JlcG9zaXRpb25JbXBsKGgpe2NvbnN0IGs9dGhpcy5fdHVubmVsO2g9aC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCB0PWsuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbD13aW5kb3cuaW5uZXJIZWlnaHQscD1kb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLG09aC50b3Asbj1tK2guaGVpZ2h0LHE9dC5oZWlnaHQrcmcuVE9PTFRJUF9ZX1BJWEVMX09GRlNFVDtsZXQgdT1udWxsLHg9TWF0aC5tYXgodGhpcy5taW5EaXN0RnJvbUVkZ2UsaC5sZWZ0KSxBPW51bGwseT1tO3RoaXMucG9zaXRpb249PWQuUklHSFQ/eD1oLnJpZ2h0Oih5PW4rcmcuVE9PTFRJUF9ZX1BJWEVMX09GRlNFVCxwPHgrdC53aWR0aCt0aGlzLm1pbkRpc3RGcm9tRWRnZSYmKHg9bnVsbCxBPXRoaXMubWluRGlzdEZyb21FZGdlKSk7dGhpcy5wb3NpdGlvbj09ZC5BVVRPJiYwPGgudG9wLXEmJmw8aC50b3AraC5oZWlnaHQrcSYmKHk9bnVsbCx1PWwtbStyZy5UT09MVElQX1lfUElYRUxfT0ZGU0VUKTtoPXtvcGFjaXR5OjEsCmxlZnQ6eD9gJHt4fXB4YDpudWxsLHJpZ2h0OkE/YCR7QX1weGA6bnVsbCx0b3A6eT9gJHt5fXB4YDpudWxsLGJvdHRvbTp1P2Ake3V9cHhgOm51bGx9O18uaXNFcXVhbCh0aGlzLl9zdHlsZUNhY2hlLGgpfHwoT2JqZWN0LmFzc2lnbihrLnN0eWxlLGgpLHRoaXMuX3N0eWxlQ2FjaGU9aCl9LF9jcmVhdGVUdW5uZWwoKXtpZighdGhpcy5jb250ZW50Q29tcG9uZW50TmFtZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiUmVxdWlyZSBgY29udGVudENvbXBvbmVudE5hbWVgIHRvIGJlIGEgbmFtZSBvZiBhIFBvbHltZXIgY29tcG9uZW50Iik7Y29uc3QgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuY29udGVudENvbXBvbmVudE5hbWUpO09iamVjdC5hc3NpZ24oaC5zdHlsZSxmKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGgpO3JldHVybiBofSxfcmVtb3ZlVHVubmVsKGgpe2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoaCl9fSl9KShFaHx8KEVoPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdnotbGluZS1jaGFydC9kcmFnWm9vbUludGVyYWN0aW9uLmpzCnZhciBGaDsKKGZ1bmN0aW9uKGIpe2NsYXNzIGQgZXh0ZW5kcyBQbG90dGFibGUuQ29tcG9uZW50cy5TZWxlY3Rpb25Cb3hMYXllcntjb25zdHJ1Y3RvcihmLGgsayl7c3VwZXIoKTt0aGlzLmVhc2VGbj1kMy5lYXNlQ3ViaWNJbk91dDt0aGlzLl9hbmltYXRpb25UaW1lPTc1MDt0aGlzLnhTY2FsZShmKTt0aGlzLnlTY2FsZShoKTt0aGlzLl9kcmFnSW50ZXJhY3Rpb249bmV3IFBsb3R0YWJsZS5JbnRlcmFjdGlvbnMuRHJhZzt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uPW5ldyBQbG90dGFibGUuSW50ZXJhY3Rpb25zLkNsaWNrO3RoaXMuc2V0dXBDYWxsYmFja3MoKTt0aGlzLnVuem9vbU1ldGhvZD1rO3RoaXMub25EZXRhY2goKCk9Pnt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmRldGFjaEZyb20oKTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24uZGV0YWNoRnJvbSgpfSk7dGhpcy5vbkFuY2hvcigoKT0+e3RoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24uYXR0YWNoVG8odGhpcyk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLmF0dGFjaFRvKHRoaXMpfSl9aW50ZXJhY3Rpb25TdGFydChmKXt0aGlzLm9uU3RhcnQ9CmZ9aW50ZXJhY3Rpb25FbmQoZil7dGhpcy5vbkVuZD1mfWRyYWdJbnRlcmFjdGlvbigpe3JldHVybiB0aGlzLl9kcmFnSW50ZXJhY3Rpb259c2V0dXBDYWxsYmFja3MoKXtsZXQgZj0hMTt0aGlzLl9kcmFnSW50ZXJhY3Rpb24ub25EcmFnU3RhcnQoaD0+e3RoaXMuYm91bmRzKHt0b3BMZWZ0OmgsYm90dG9tUmlnaHQ6aH0pO3RoaXMub25TdGFydCgpfSk7dGhpcy5fZHJhZ0ludGVyYWN0aW9uLm9uRHJhZygoaCxrKT0+e3RoaXMuYm91bmRzKHt0b3BMZWZ0OmgsYm90dG9tUmlnaHQ6a30pO3RoaXMuYm94VmlzaWJsZSghMCk7Zj0hMH0pO3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5vbkRyYWdFbmQoKGgsayk9Pnt0aGlzLmJveFZpc2libGUoITEpO3RoaXMuYm91bmRzKHt0b3BMZWZ0OmgsYm90dG9tUmlnaHQ6a30pO2lmKGYpdGhpcy56b29tKCk7ZWxzZSB0aGlzLm9uRW5kKCk7Zj0hMX0pO3RoaXMuX2RvdWJsZUNsaWNrSW50ZXJhY3Rpb24ub25Eb3VibGVDbGljayh0aGlzLnVuem9vbS5iaW5kKHRoaXMpKX1hbmltYXRpb25UaW1lKGYpe2lmKG51bGw9PQpmKXJldHVybiB0aGlzLl9hbmltYXRpb25UaW1lO2lmKDA+Zil0aHJvdyBFcnJvcigiYW5pbWF0aW9uVGltZSBjYW5ub3QgYmUgbmVnYXRpdmUiKTt0aGlzLl9hbmltYXRpb25UaW1lPWY7cmV0dXJuIHRoaXN9ZWFzZShmKXtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGYpdGhyb3cgRXJyb3IoImVhc2UgZnVuY3Rpb24gbXVzdCBiZSBhIGZ1bmN0aW9uIik7MD09PWYoMCkmJjE9PT1mKDEpfHxQbG90dGFibGUuVXRpbHMuV2luZG93Lndhcm4oIkVhc2luZyBmdW5jdGlvbiBkb2VzIG5vdCBtYWludGFpbiBpbnZhcmlhbnQgZigwKVx4M2RceDNkMCBceDI2XHgyNiBmKDEpXHgzZFx4M2QxLiBCYWQgYmVoYXZpb3IgbWF5IHJlc3VsdC4iKTt0aGlzLmVhc2VGbj1mO3JldHVybiB0aGlzfXpvb20oKXtsZXQgZj10aGlzLnhFeHRlbnQoKVswXS52YWx1ZU9mKCksaD10aGlzLnhFeHRlbnQoKVsxXS52YWx1ZU9mKCksaz10aGlzLnlFeHRlbnQoKVsxXS52YWx1ZU9mKCksdD10aGlzLnlFeHRlbnQoKVswXS52YWx1ZU9mKCk7CmYhPT1oJiZrIT09dCYmdGhpcy5pbnRlcnBvbGF0ZVpvb20oZixoLGssdCl9dW56b29tKCl7dmFyIGY9dGhpcy54U2NhbGUoKTtmLl9kb21haW5NaW49bnVsbDtmLl9kb21haW5NYXg9bnVsbDtmPWYuX2dldEV4dGVudCgpO3RoaXMueFNjYWxlKCkuZG9tYWluKGYpO3RoaXMudW56b29tTWV0aG9kKCl9aXNab29taW5nKGYpe3RoaXMuX2RyYWdJbnRlcmFjdGlvbi5lbmFibGVkKCFmKTt0aGlzLl9kb3VibGVDbGlja0ludGVyYWN0aW9uLmVuYWJsZWQoIWYpfWludGVycG9sYXRlWm9vbShmLGgsayx0KXtsZXQgbD10aGlzLnhTY2FsZSgpLmRvbWFpbigpWzBdLnZhbHVlT2YoKSxwPXRoaXMueFNjYWxlKCkuZG9tYWluKClbMV0udmFsdWVPZigpLG09dGhpcy55U2NhbGUoKS5kb21haW4oKVswXS52YWx1ZU9mKCksbj10aGlzLnlTY2FsZSgpLmRvbWFpbigpWzFdLnZhbHVlT2YoKSxxPXRoaXMuZWFzZUZuLHU9KHksdyxDKT0+ZDMuaW50ZXJwb2xhdGVOdW1iZXIoeSx3KShxKEMpKTt0aGlzLmlzWm9vbWluZyghMCk7CmxldCB4PURhdGUubm93KCksQT0oKT0+e3ZhciB5PURhdGUubm93KCkteDt5PTA9PT10aGlzLl9hbmltYXRpb25UaW1lPzE6TWF0aC5taW4oMSx5L3RoaXMuX2FuaW1hdGlvblRpbWUpO2xldCB3PXUobCxmLHkpLEM9dShwLGgseSksRj11KG0sayx5KSxEPXUobix0LHkpO3RoaXMueFNjYWxlKCkuZG9tYWluKFt3LENdKTt0aGlzLnlTY2FsZSgpLmRvbWFpbihbRixEXSk7MT55P1Bsb3R0YWJsZS5VdGlscy5ET00ucmVxdWVzdEFuaW1hdGlvbkZyYW1lUG9seWZpbGwoQSk6KHRoaXMub25FbmQoKSx0aGlzLmlzWm9vbWluZyghMSkpfTtBKCl9fWIuRHJhZ1pvb21MYXllcj1kfSkoRmh8fChGaD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWxpbmUtY2hhcnQyL3Bhblpvb21EcmFnTGF5ZXIuanMKdmFyIEdoOwooZnVuY3Rpb24oYil7bGV0IGQ7KGZ1bmN0aW9uKGgpe2hbaC5OT05FPTBdPSJOT05FIjtoW2guRFJBR19aT09NSU5HPTFdPSJEUkFHX1pPT01JTkciO2hbaC5QQU5OSU5HPTJdPSJQQU5OSU5HIn0pKGR8fChkPXt9KSk7Y2xhc3MgZiBleHRlbmRzIFBsb3R0YWJsZS5Db21wb25lbnRzLkdyb3Vwe2NvbnN0cnVjdG9yKGgsayx0KXtzdXBlcigpO3RoaXMuc3RhdGU9ZC5OT05FO3RoaXMucGFuU3RhcnRDYWxsYmFjaz1uZXcgUGxvdHRhYmxlLlV0aWxzLkNhbGxiYWNrU2V0O3RoaXMucGFuRW5kQ2FsbGJhY2s9bmV3IFBsb3R0YWJsZS5VdGlscy5DYWxsYmFja1NldDt0aGlzLnBhblpvb209bmV3IFBsb3R0YWJsZS5JbnRlcmFjdGlvbnMuUGFuWm9vbShoLGspO3RoaXMucGFuWm9vbS5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcihwPT5mLmlzUGFuS2V5KHApJiYwPT09cC5idXR0b24pO3RoaXMucGFuWm9vbS53aGVlbEZpbHRlcih0aGlzLmNhblNjcm9sbFpvb20pO3RoaXMuZHJhZ1pvb21MYXllcj1uZXcgRmguRHJhZ1pvb21MYXllcihoLAprLHQpO3RoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5tb3VzZUZpbHRlcihwPT4hZi5pc1BhbktleShwKSYmMD09PXAuYnV0dG9uKTt0aGlzLmFwcGVuZCh0aGlzLmRyYWdab29tTGF5ZXIpO2NvbnN0IGw9dGhpcy5vbldoZWVsLmJpbmQodGhpcyk7dGhpcy5vbkFuY2hvcigoKT0+e3RoaXMuX21vdXNlRGlzcGF0Y2hlcj1QbG90dGFibGUuRGlzcGF0Y2hlcnMuTW91c2UuZ2V0RGlzcGF0Y2hlcih0aGlzKTt0aGlzLl9tb3VzZURpc3BhdGNoZXIub25XaGVlbChsKTt0aGlzLnBhblpvb20uYXR0YWNoVG8odGhpcyl9KTt0aGlzLm9uRGV0YWNoKCgpPT57dGhpcy5wYW5ab29tLmRldGFjaEZyb20oKTt0aGlzLl9tb3VzZURpc3BhdGNoZXImJih0aGlzLl9tb3VzZURpc3BhdGNoZXIub2ZmV2hlZWwobCksdGhpcy5fbW91c2VEaXNwYXRjaGVyPW51bGwpfSk7dGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ1N0YXJ0KCgpPT57dGhpcy5zdGF0ZT09ZC5OT05FJiYKdGhpcy5zZXRTdGF0ZShkLlBBTk5JTkcpfSk7dGhpcy5wYW5ab29tLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ0VuZCgoKT0+e3RoaXMuc3RhdGU9PWQuUEFOTklORyYmdGhpcy5zZXRTdGF0ZShkLk5PTkUpfSk7dGhpcy5kcmFnWm9vbUxheWVyLmRyYWdJbnRlcmFjdGlvbigpLm9uRHJhZ1N0YXJ0KCgpPT57dGhpcy5zdGF0ZT09ZC5OT05FJiZ0aGlzLnNldFN0YXRlKGQuRFJBR19aT09NSU5HKX0pO3RoaXMuZHJhZ1pvb21MYXllci5kcmFnSW50ZXJhY3Rpb24oKS5vbkRyYWdFbmQoKCk9Pnt0aGlzLnN0YXRlPT1kLkRSQUdfWk9PTUlORyYmdGhpcy5zZXRTdGF0ZShkLk5PTkUpfSl9b25XaGVlbChoLGspe2lmKCF0aGlzLmNhblNjcm9sbFpvb20oaykmJihoPXRoaXMuZWxlbWVudCgpLGguc2VsZWN0KCIuaGVscCIpLmVtcHR5KCkpKXt2YXIgdD1oLmFwcGVuZCgiZGl2IikuY2xhc3NlZCgiaGVscCIsITApO3QuYXBwZW5kKCJzcGFuIikudGV4dCgiQWx0ICsgU2Nyb2xsIHRvIFpvb20iKTsKdC5vbigiYW5pbWF0aW9uZW5kIiwoKT0+dm9pZCB0LnJlbW92ZSgpKX19c3RhdGljIGlzUGFuS2V5KGgpe3JldHVybiEhaC5hbHRLZXl8fCEhaC5zaGlmdEtleX1jYW5TY3JvbGxab29tKGgpe3JldHVybiBoLmFsdEtleX1zZXRTdGF0ZShoKXtpZih0aGlzLnN0YXRlIT1oKXt2YXIgaz10aGlzLnN0YXRlO3RoaXMuc3RhdGU9aDt0aGlzLnJvb3QoKS5yZW1vdmVDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGspKTt0aGlzLnJvb3QoKS5hZGRDbGFzcyh0aGlzLnN0YXRlQ2xhc3NOYW1lKGgpKTtrPT1kLlBBTk5JTkcmJnRoaXMucGFuRW5kQ2FsbGJhY2suY2FsbENhbGxiYWNrcygpO2g9PWQuUEFOTklORyYmdGhpcy5wYW5TdGFydENhbGxiYWNrLmNhbGxDYWxsYmFja3MoKX19c3RhdGVDbGFzc05hbWUoaCl7c3dpdGNoKGgpe2Nhc2UgZC5QQU5OSU5HOnJldHVybiJwYW5uaW5nIjtjYXNlIGQuRFJBR19aT09NSU5HOnJldHVybiJkcmFnLXpvb21pbmciO2RlZmF1bHQ6cmV0dXJuIiJ9fW9uUGFuU3RhcnQoaCl7dGhpcy5wYW5TdGFydENhbGxiYWNrLmFkZChoKX1vblBhbkVuZChoKXt0aGlzLnBhbkVuZENhbGxiYWNrLmFkZChoKX1vblNjcm9sbFpvb20oaCl7dGhpcy5wYW5ab29tLm9uWm9vbUVuZChoKX1vbkRyYWdab29tU3RhcnQoaCl7dGhpcy5kcmFnWm9vbUxheWVyLmludGVyYWN0aW9uU3RhcnQoaCl9b25EcmFnWm9vbUVuZChoKXt0aGlzLmRyYWdab29tTGF5ZXIuaW50ZXJhY3Rpb25FbmQoaCl9fQpiLlBhblpvb21EcmFnTGF5ZXI9Zn0pKEdofHwoR2g9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1saW5lLWNoYXJ0Mi90Zi1zY2FsZS5qcwooZnVuY3Rpb24oYil7Y2xhc3MgZCBleHRlbmRzIFBsb3R0YWJsZS5RdWFudGl0YXRpdmVTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyk7dGhpcy5faWdub3JlT3V0bGllcj0hMX1zZXRWYWx1ZVByb3ZpZGVyRm9yRG9tYWluKGYpe3RoaXMuX3ZhbHVlUHJvdmlkZXJGb3JEb21haW49Zn1pZ25vcmVPdXRsaWVyKGYpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGY/KHRoaXMuX2lnbm9yZU91dGxpZXI9Zix0aGlzKTp0aGlzLl9pZ25vcmVPdXRsaWVyfV9nZXRBbGxJbmNsdWRlZFZhbHVlcygpe2NvbnN0IGY9dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj90aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluKCk6W107cmV0dXJuIHRoaXMuZXh0ZW50T2ZWYWx1ZXMoZil9fWIuVGZTY2FsZT1kfSkoR2h8fChHaD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWxpbmUtY2hhcnQyL2xpbmVhci1zY2FsZS5qcwooZnVuY3Rpb24oYil7Y2xhc3MgZCBleHRlbmRzIFBsb3R0YWJsZS5TY2FsZXMuTGluZWFye2NvbnN0cnVjdG9yKCl7c3VwZXIoKTt0aGlzLl9pZ25vcmVPdXRsaWVyPSExO3RoaXMucGFkUHJvcG9ydGlvbiguMil9c2V0VmFsdWVQcm92aWRlckZvckRvbWFpbihmKXt0aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluPWZ9X25pY2VEb21haW4oZixoKXtjb25zdCBbayx0XT1mLGw9dC1rO2Y9MD09PWw/MS4xKk1hdGguYWJzKGspKzEuMTpsKnRoaXMucGFkUHJvcG9ydGlvbigpO3JldHVybiBzdXBlci5fbmljZURvbWFpbihbMDw9ayYmazxsPy0uMSp0OmstZix0K2ZdLGgpfV9nZXRVbmJvdW5kZWRFeHRlbnQoZil7Zj10aGlzLl9nZXRBbGxJbmNsdWRlZFZhbHVlcyhmKTtsZXQgaD10aGlzLl9kZWZhdWx0RXh0ZW50KCk7MCE9PWYubGVuZ3RoJiYoZj1bUGxvdHRhYmxlLlV0aWxzLk1hdGgubWluKGYsaFswXSksUGxvdHRhYmxlLlV0aWxzLk1hdGgubWF4KGYsaFsxXSldLGg9dGhpcy5fbmljZURvbWFpbihmKSk7CnJldHVybiBofV9nZXRBbGxJbmNsdWRlZFZhbHVlcygpe2NvbnN0IGY9dGhpcy5fdmFsdWVQcm92aWRlckZvckRvbWFpbj90aGlzLl92YWx1ZVByb3ZpZGVyRm9yRG9tYWluKCk6W107cmV0dXJuIHRoaXMuZXh0ZW50T2ZWYWx1ZXMoZil9ZXh0ZW50T2ZWYWx1ZXMoZil7dmFyIGg9Zj1mLmZpbHRlcihrPT5QbG90dGFibGUuVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKGspKTtpZih0aGlzLmlnbm9yZU91dGxpZXIoKSl7aD1mLnNvcnQoKGwscCk9PmwtcCk7Y29uc3Qgaz1kMy5xdWFudGlsZShoLC4wNSksdD1kMy5xdWFudGlsZShoLC45NSk7aD1mLmZpbHRlcihsPT5sPj1rJiZsPD10KX1mPWQzLmV4dGVudChoKTtyZXR1cm4gbnVsbD09ZlswXXx8bnVsbD09ZlsxXT9bXTpmfWlnbm9yZU91dGxpZXIoZil7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZj8odGhpcy5faWdub3JlT3V0bGllcj1mLHRoaXMpOnRoaXMuX2lnbm9yZU91dGxpZXJ9fWIuTGluZWFyU2NhbGU9ZH0pKEdofHwoR2g9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1saW5lLWNoYXJ0Mi9sb2ctc2NhbGUuanMKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoayl7cmV0dXJuIE1hdGgubG9nMTAoayl9ZnVuY3Rpb24gZihrKXtyZXR1cm4gTWF0aC5wb3coMTAsayl9Yi5NSU5fUE9TSVRJVkVfVkFMVUU9TWF0aC5wb3coMiwtMTA3NCk7Y2xhc3MgaCBleHRlbmRzIGIuVGZTY2FsZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7dGhpcy5fZDNMb2dTY2FsZT1kMy5zY2FsZUxvZygpO3RoaXMucGFkUHJvcG9ydGlvbiguMil9c2NhbGUoayl7cmV0dXJuIDA+PWs/TmFOOnRoaXMuX2QzTG9nU2NhbGUoayl9aW52ZXJ0KGspe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLmludmVydChrKX1zY2FsZVRyYW5zZm9ybWF0aW9uKGspe3JldHVybiB0aGlzLnNjYWxlKGspfWludmVydGVkVHJhbnNmb3JtYXRpb24oayl7cmV0dXJuIHRoaXMuaW52ZXJ0KGspfWdldFRyYW5zZm9ybWF0aW9uRG9tYWluKCl7cmV0dXJuIHRoaXMuZG9tYWluKCl9X2dldERvbWFpbigpe3JldHVybiB0aGlzLl91bnRyYW5zZm9ybWVkRG9tYWlufV9zZXREb21haW4oayl7dGhpcy5fdW50cmFuc2Zvcm1lZERvbWFpbj0Kaztjb25zdCBbdCxsXT1rO3N1cGVyLl9zZXREb21haW4oW01hdGgubWF4KGIuTUlOX1BPU0lUSVZFX1ZBTFVFLHQpLGxdKX1fbmljZURvbWFpbihrKXtjb25zdCBbdCxsXT1rO2s9TWF0aC5tYXgoZChiLk1JTl9QT1NJVElWRV9WQUxVRSksZCh0KSk7Y29uc3QgcD1kKGwpO3ZhciBtPXAtazttPW0/bSp0aGlzLnBhZFByb3BvcnRpb24oKToxO3JldHVybltmKE1hdGgubWF4KGQoYi5NSU5fUE9TSVRJVkVfVkFMVUUpLGstbSkpLGYocCttKV19X2dldFVuYm91bmRlZEV4dGVudChrKXtrPXRoaXMuX2dldEFsbEluY2x1ZGVkVmFsdWVzKGspO2xldCB0PXRoaXMuX2RlZmF1bHRFeHRlbnQoKTswIT09ay5sZW5ndGgmJihrPVtQbG90dGFibGUuVXRpbHMuTWF0aC5taW4oayx0WzBdKSxQbG90dGFibGUuVXRpbHMuTWF0aC5tYXgoayx0WzFdKV0sdD10aGlzLl9uaWNlRG9tYWluKGspKTtyZXR1cm4gdH1fZ2V0QWxsSW5jbHVkZWRWYWx1ZXMoKXtyZXR1cm4gc3VwZXIuX2dldEFsbEluY2x1ZGVkVmFsdWVzKCkubWFwKGs9PgowPGs/azpiLk1JTl9QT1NJVElWRV9WQUxVRSl9X2RlZmF1bHRFeHRlbnQoKXtyZXR1cm5bMSwxMF19X2JhY2tpbmdTY2FsZURvbWFpbihrKXtpZihudWxsPT1rKXJldHVybiB0aGlzLl9kM0xvZ1NjYWxlLmRvbWFpbigpO3RoaXMuX2QzTG9nU2NhbGUuZG9tYWluKGspO3JldHVybiB0aGlzfV9nZXRSYW5nZSgpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnJhbmdlKCl9X3NldFJhbmdlKGspe3RoaXMuX2QzTG9nU2NhbGUucmFuZ2Uoayl9ZGVmYXVsdFRpY2tzKCl7cmV0dXJuIHRoaXMuX2QzTG9nU2NhbGUudGlja3MoKX10aWNrcygpe3JldHVybiB0aGlzLl9kM0xvZ1NjYWxlLnRpY2tzKCl9ZXh0ZW50T2ZWYWx1ZXMoayl7bGV0IHQ9az1rLmZpbHRlcihsPT5QbG90dGFibGUuVXRpbHMuTWF0aC5pc1ZhbGlkTnVtYmVyKGwpJiYwPGwpO2lmKHRoaXMuaWdub3JlT3V0bGllcigpKXtrPWsubWFwKGQpLnNvcnQoKG0sbik9Pm0tbik7Y29uc3QgbD1kMy5xdWFudGlsZShrLC4wNSkscD1kMy5xdWFudGlsZShrLAouOTUpO3Q9ay5maWx0ZXIobT0+bT49bCYmbTw9cCkubWFwKGYpfWs9ZDMuZXh0ZW50KHQpO3JldHVybiBudWxsPT1rWzBdfHxudWxsPT1rWzFdP1tdOmt9fWIuTG9nU2NhbGU9aH0pKEdofHwoR2g9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1saW5lLWNoYXJ0Mi9saW5lLWNoYXJ0LmpzCihmdW5jdGlvbihiKXtsZXQgZDsoZnVuY3Rpb24oayl7a1trLlRFWFQ9MF09IlRFWFQiO2tbay5ET009MV09IkRPTSJ9KShkfHwoZD17fSkpO2xldCBmOyhmdW5jdGlvbihrKXtrLkxPRz0ibG9nIjtrLkxJTkVBUj0ibGluZWFyIn0pKGZ8fChmPXt9KSk7Y2xhc3MgaHtjb25zdHJ1Y3RvcihrLHQsbCxwLG0sbixxLHUseCxBLHkpe3RoaXMuc2VyaWVzTmFtZXM9W107dGhpcy5uYW1lMmRhdGFzZXRzPXt9O3RoaXMuY29sb3JTY2FsZT1wO3RoaXMudG9vbHRpcD1tO3RoaXMuZGF0YXNldHM9W107dGhpcy5faWdub3JlWU91dGxpZXJzPSExO3RoaXMubGFzdFBvaW50c0RhdGFzZXQ9bmV3IFBsb3R0YWJsZS5EYXRhc2V0O3RoaXMubmFuRGF0YXNldD1uZXcgUGxvdHRhYmxlLkRhdGFzZXQ7dGhpcy55VmFsdWVBY2Nlc3Nvcj10O3RoaXMuc3ltYm9sRnVuY3Rpb249QTt0aGlzLm9uRGF0YXNldENoYW5nZWQ9dGhpcy5fb25EYXRhc2V0Q2hhbmdlZC5iaW5kKHRoaXMpO3RoaXMuX2RlZmF1bHRYUmFuZ2U9CnU7dGhpcy5fZGVmYXVsdFlSYW5nZT14O3RoaXMudG9vbHRpcENvbHVtbnM9bjt0aGlzLmJ1aWxkQ2hhcnQoayxsLHEseSl9YnVpbGRDaGFydChrLHQsbCxwKXt0aGlzLmRlc3Ryb3koKTtrPWsoKTt0aGlzLnhBY2Nlc3Nvcj1rLmFjY2Vzc29yO3RoaXMueFNjYWxlPWsuc2NhbGU7dGhpcy54QXhpcz1rLmF4aXM7dGhpcy54QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZygzKTtwJiZ0aGlzLnhBeGlzLmZvcm1hdHRlcihwKTt0aGlzLnlTY2FsZT1oLmdldFlTY2FsZUZyb21UeXBlKHQpO3RoaXMueVNjYWxlLnNldFZhbHVlUHJvdmlkZXJGb3JEb21haW4oKCk9PnRoaXMuZ2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCkpO3RoaXMueUF4aXM9bmV3IFBsb3R0YWJsZS5BeGVzLk51bWVyaWModGhpcy55U2NhbGUsImxlZnQiKTtwPXJnLm11bHRpc2NhbGVGb3JtYXR0ZXIocmcuWV9BWElTX0ZPUk1BVFRFUl9QUkVDSVNJT04pO3RoaXMueUF4aXMubWFyZ2luKDApLnRpY2tMYWJlbFBhZGRpbmcoNSkuZm9ybWF0dGVyKHApOwp0aGlzLnlBeGlzLnVzZXNUZXh0V2lkdGhBcHByb3hpbWF0aW9uKCk7dGhpcy5maWxsQXJlYT1sO3A9bmV3IGIuUGFuWm9vbURyYWdMYXllcih0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSwoKT0+dGhpcy5yZXNldERvbWFpbigpKTt0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbj10aGlzLmNyZWF0ZVRvb2x0aXBJbnRlcmFjdGlvbihwKTt0aGlzLnRvb2x0aXBQb2ludHNDb21wb25lbnQ9bmV3IFBsb3R0YWJsZS5Db21wb25lbnQ7bD10aGlzLmJ1aWxkUGxvdCh0aGlzLnhTY2FsZSx0aGlzLnlTY2FsZSxsKTt0aGlzLmdyaWRsaW5lcz1uZXcgUGxvdHRhYmxlLkNvbXBvbmVudHMuR3JpZGxpbmVzKHRoaXMueFNjYWxlLHRoaXMueVNjYWxlKTtrPW51bGw7dCE9PWYuTE9HJiYoaz1uZXcgUGxvdHRhYmxlLkNvbXBvbmVudHMuR3VpZGVMaW5lTGF5ZXIoImhvcml6b250YWwiKSxrLnNjYWxlKHRoaXMueVNjYWxlKS52YWx1ZSgwKSk7dD1uZXcgUGxvdHRhYmxlLkNvbXBvbmVudHMuR3VpZGVMaW5lTGF5ZXIoInZlcnRpY2FsIik7CnQuc2NhbGUodGhpcy54U2NhbGUpLnZhbHVlKDApO3RoaXMuY2VudGVyPW5ldyBQbG90dGFibGUuQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsayx0LGwsdGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LHBdKTt0aGlzLmNlbnRlci5hZGRDbGFzcygibWFpbiIpO3RoaXMub3V0ZXI9bmV3IFBsb3R0YWJsZS5Db21wb25lbnRzLlRhYmxlKFtbdGhpcy55QXhpcyx0aGlzLmNlbnRlcl0sW251bGwsdGhpcy54QXhpc11dKX1idWlsZFBsb3Qoayx0LGwpe2wmJih0aGlzLm1hcmdpbkFyZWFQbG90PW5ldyBQbG90dGFibGUuUGxvdHMuQXJlYSx0aGlzLm1hcmdpbkFyZWFQbG90LngodGhpcy54QWNjZXNzb3IsayksdGhpcy5tYXJnaW5BcmVhUGxvdC55KGwuaGlnaGVyQWNjZXNzb3IsdCksdGhpcy5tYXJnaW5BcmVhUGxvdC55MChsLmxvd2VyQWNjZXNzb3IpLHRoaXMubWFyZ2luQXJlYVBsb3QuYXR0cigiZmlsbCIsKHEsdSx4KT0+dGhpcy5jb2xvclNjYWxlLnNjYWxlKHgubWV0YWRhdGEoKS5uYW1lKSksCnRoaXMubWFyZ2luQXJlYVBsb3QuYXR0cigiZmlsbC1vcGFjaXR5IiwuMyksdGhpcy5tYXJnaW5BcmVhUGxvdC5hdHRyKCJzdHJva2Utd2lkdGgiLDApKTt0aGlzLnNtb290aGVkQWNjZXNzb3I9cT0+cS5zbW9vdGhlZDtsPW5ldyBQbG90dGFibGUuUGxvdHMuTGluZTtsLngodGhpcy54QWNjZXNzb3Isayk7bC55KHRoaXMueVZhbHVlQWNjZXNzb3IsdCk7bC5hdHRyKCJzdHJva2UiLChxLHUseCk9PnRoaXMuY29sb3JTY2FsZS5zY2FsZSh4Lm1ldGFkYXRhKCkubmFtZSkpO3RoaXMubGluZVBsb3Q9bDt0aGlzLnNldHVwVG9vbHRpcHMobCk7bGV0IHA9bmV3IFBsb3R0YWJsZS5QbG90cy5MaW5lO3AueCh0aGlzLnhBY2Nlc3NvcixrKTtwLnkodGhpcy5zbW9vdGhlZEFjY2Vzc29yLHQpO3AuYXR0cigic3Ryb2tlIiwocSx1LHgpPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUoeC5tZXRhZGF0YSgpLm5hbWUpKTt0aGlzLnNtb290aExpbmVQbG90PXA7aWYodGhpcy5zeW1ib2xGdW5jdGlvbil7dmFyIG09Cm5ldyBQbG90dGFibGUuUGxvdHMuU2NhdHRlcjttLngodGhpcy54QWNjZXNzb3Isayk7bS55KHRoaXMueVZhbHVlQWNjZXNzb3IsdCk7bS5hdHRyKCJmaWxsIiwocSx1LHgpPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUoeC5tZXRhZGF0YSgpLm5hbWUpKTttLmF0dHIoIm9wYWNpdHkiLDEpO20uc2l6ZSgyKnJnLlRPT0xUSVBfQ0lSQ0xFX1NJWkUpO20uc3ltYm9sKChxLHUseCk9PnRoaXMuc3ltYm9sRnVuY3Rpb24oeC5tZXRhZGF0YSgpLm5hbWUpKTt0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdD1tfW09bmV3IFBsb3R0YWJsZS5QbG90cy5TY2F0dGVyO20ueCh0aGlzLnhBY2Nlc3NvcixrKTttLnkodGhpcy55VmFsdWVBY2Nlc3Nvcix0KTttLmF0dHIoImZpbGwiLHE9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShxLm5hbWUpKTttLmF0dHIoIm9wYWNpdHkiLDEpO20uc2l6ZSgyKnJnLlRPT0xUSVBfQ0lSQ0xFX1NJWkUpO20uZGF0YXNldHMoW3RoaXMubGFzdFBvaW50c0RhdGFzZXRdKTt0aGlzLnNjYXR0ZXJQbG90PQptO2xldCBuPW5ldyBQbG90dGFibGUuUGxvdHMuU2NhdHRlcjtuLngodGhpcy54QWNjZXNzb3Isayk7bi55KHE9PnEuZGlzcGxheVksdCk7bi5hdHRyKCJmaWxsIixxPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUocS5uYW1lKSk7bi5hdHRyKCJvcGFjaXR5IiwxKTtuLnNpemUoMipyZy5OQU5fU1lNQk9MX1NJWkUpO24uZGF0YXNldHMoW3RoaXMubmFuRGF0YXNldF0pO24uc3ltYm9sKFBsb3R0YWJsZS5TeW1ib2xGYWN0b3JpZXMudHJpYW5nbGUpO3RoaXMubmFuRGlzcGxheT1uO2s9W24sbSxwLGxdO3RoaXMubWFyZ2luQXJlYVBsb3QmJmsucHVzaCh0aGlzLm1hcmdpbkFyZWFQbG90KTt0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmay5wdXNoKHRoaXMubWFya2Vyc1NjYXR0ZXJQbG90KTtyZXR1cm4gbmV3IFBsb3R0YWJsZS5Db21wb25lbnRzLkdyb3VwKGspfV9vbkRhdGFzZXRDaGFuZ2VkKGspe3RoaXMuc21vb3RoaW5nRW5hYmxlZCYmdGhpcy5yZXNtb290aERhdGFzZXQoayk7dGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKX1pZ25vcmVZT3V0bGllcnMoayl7ayE9PQp0aGlzLl9pZ25vcmVZT3V0bGllcnMmJih0aGlzLl9pZ25vcmVZT3V0bGllcnM9ayx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpLHRoaXMueVNjYWxlLmlnbm9yZU91dGxpZXIoayksdGhpcy5yZXNldFlEb21haW4oKSl9Z2V0VmFsdWVzRm9yWUF4aXNEb21haW5Db21wdXRlKCl7Y29uc3Qgaz10aGlzLmdldEFjY2Vzc29yc0ZvckNvbXB1dGluZ1lSYW5nZSgpO3JldHVybiBfLmZsYXR0ZW5EZWVwKHRoaXMuZGF0YXNldHMubWFwKHQ9PmsubWFwKGw9PnQuZGF0YSgpLm1hcChwPT5sKHAsLTEsdCkpKSkpLmZpbHRlcihpc0Zpbml0ZSl9dXBkYXRlU3BlY2lhbERhdGFzZXRzKCl7Y29uc3Qgaz10aGlzLmdldFlBeGlzQWNjZXNzb3IoKTt2YXIgdD10aGlzLmRhdGFzZXRzLm1hcChsPT57bGV0IHA9bnVsbCxtPWwuZGF0YSgpLmZpbHRlcihuPT4haXNOYU4oayhuLC0xLGwpKSk7MDxtLmxlbmd0aCYmKHA9bVttLmxlbmd0aC0xXSxwLm5hbWU9bC5tZXRhZGF0YSgpLm5hbWUscC5yZWxhdGl2ZT0KcmcucmVsYXRpdmVBY2Nlc3NvcihwLC0xLGwpKTtyZXR1cm4gcH0pLmZpbHRlcihsPT5udWxsIT1sKTt0aGlzLmxhc3RQb2ludHNEYXRhc2V0LmRhdGEodCk7dGhpcy5tYXJrZXJzU2NhdHRlclBsb3QmJnRoaXMubWFya2Vyc1NjYXR0ZXJQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMubWFwKHRoaXMuY3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKSk7dD1fLmZsYXR0ZW4odGhpcy5kYXRhc2V0cy5tYXAobD0+e2xldCBwPW51bGwsbT1sLmRhdGEoKSxuPTA7Zm9yKDtuPG0ubGVuZ3RoJiZudWxsPT1wOylpc05hTihrKG1bbl0sLTEsbCkpfHwocD1rKG1bbl0sLTEsbCkpLG4rKztudWxsPT1wJiYocD0wKTtsZXQgcT1bXTtmb3Iobj0wO248bS5sZW5ndGg7bisrKWlzTmFOKGsobVtuXSwtMSxsKSk/KG1bbl0ubmFtZT1sLm1ldGFkYXRhKCkubmFtZSxtW25dLmRpc3BsYXlZPXAsbVtuXS5yZWxhdGl2ZT1yZy5yZWxhdGl2ZUFjY2Vzc29yKG1bbl0sLTEsbCkscS5wdXNoKG1bbl0pKToKcD1rKG1bbl0sLTEsbCk7cmV0dXJuIHF9KSk7dGhpcy5uYW5EYXRhc2V0LmRhdGEodCl9cmVzZXREb21haW4oKXt0aGlzLnJlc2V0WERvbWFpbigpO3RoaXMucmVzZXRZRG9tYWluKCl9cmVzZXRYRG9tYWluKCl7aWYobnVsbCE9dGhpcy5fZGVmYXVsdFhSYW5nZSl2YXIgaz10aGlzLl9kZWZhdWx0WFJhbmdlO2Vsc2Ugaz10aGlzLnhTY2FsZSxrLl9kb21haW5NaW49bnVsbCxrLl9kb21haW5NYXg9bnVsbCxrPWsuX2dldEV4dGVudCgpO3RoaXMueFNjYWxlLmRvbWFpbihrKX1yZXNldFlEb21haW4oKXtudWxsIT10aGlzLl9kZWZhdWx0WVJhbmdlP3RoaXMueVNjYWxlLmRvbWFpbih0aGlzLl9kZWZhdWx0WVJhbmdlKToodGhpcy55U2NhbGUuYXV0b0RvbWFpbigpLHRoaXMueVNjYWxlLmRvbWFpbih0aGlzLnlTY2FsZS5kb21haW4oKSkpfWdldEFjY2Vzc29yc0ZvckNvbXB1dGluZ1lSYW5nZSgpe2NvbnN0IGs9W3RoaXMuZ2V0WUF4aXNBY2Nlc3NvcigpXTt0aGlzLmZpbGxBcmVhJiZrLnB1c2godGhpcy5maWxsQXJlYS5sb3dlckFjY2Vzc29yLAp0aGlzLmZpbGxBcmVhLmhpZ2hlckFjY2Vzc29yKTtyZXR1cm4ga31nZXRZQXhpc0FjY2Vzc29yKCl7cmV0dXJuIHRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3I6dGhpcy55VmFsdWVBY2Nlc3Nvcn1jcmVhdGVUb29sdGlwSW50ZXJhY3Rpb24oayl7Y29uc3QgdD1uZXcgcmcuUG9pbnRlckludGVyYWN0aW9uLGw9KCk9Pnt0LmVuYWJsZWQoITEpO3RoaXMuaGlkZVRvb2x0aXBzKCl9LHA9KCk9PnQuZW5hYmxlZCghMCk7ay5vblBhblN0YXJ0KGwpO2sub25EcmFnWm9vbVN0YXJ0KGwpO2sub25QYW5FbmQocCk7ay5vbkRyYWdab29tRW5kKHApO2sub25TY3JvbGxab29tKCgpPT50aGlzLnVwZGF0ZVRvb2x0aXBDb250ZW50KHRoaXMuX2xhc3RNb3VzZVBvc2l0aW9uKSk7dC5vblBvaW50ZXJNb3ZlKG09Pnt0aGlzLl9sYXN0TW91c2VQb3NpdGlvbj1tO3RoaXMudXBkYXRlVG9vbHRpcENvbnRlbnQobSl9KTt0Lm9uUG9pbnRlckV4aXQoKCk9PnRoaXMuaGlkZVRvb2x0aXBzKCkpOwpyZXR1cm4gdH11cGRhdGVUb29sdGlwQ29udGVudChrKXt0aGlzLmxpbmVQbG90JiYod2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Rvb2x0aXBVcGRhdGVBbmltYXRpb25GcmFtZSksdGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntsZXQgdD17eDprLngseTprLnksZGF0dW06bnVsbCxkYXRhc2V0Om51bGx9LGw9dGhpcy5ncmlkbGluZXMuY29udGVudCgpLm5vZGUoKS5nZXRCQm94KCk7dmFyIHA9dGhpcy5saW5lUGxvdC5kYXRhc2V0cygpLm1hcCh1PT50aGlzLmZpbmRDbG9zZXN0UG9pbnQodCx1KSkuZmlsdGVyKEJvb2xlYW4pO2xldCBtPVBsb3R0YWJsZS5VdGlscy5ET00uaW50ZXJzZWN0c0JCb3gsbj1wLmZpbHRlcih1PT5tKHUueCx1LnksbCl8fGlzTmFOKHRoaXMueVZhbHVlQWNjZXNzb3IodS5kYXR1bSwwLHUuZGF0YXNldCkpKSxxPW4uZmlsdGVyKHU9PiFpc05hTih0aGlzLnlWYWx1ZUFjY2Vzc29yKHUuZGF0dW0sCjAsdS5kYXRhc2V0KSkpOzAhPT1wLmxlbmd0aD8odGhpcy5zY2F0dGVyUGxvdC5hdHRyKCJkaXNwbGF5Iiwibm9uZSIpLHA9dGhpcy50b29sdGlwUG9pbnRzQ29tcG9uZW50LmNvbnRlbnQoKS5zZWxlY3RBbGwoIi5wb2ludCIpLmRhdGEocSx1PT51LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKSxwLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5jbGFzc2VkKCJwb2ludCIsITApLHAuYXR0cigiciIscmcuVE9PTFRJUF9DSVJDTEVfU0laRSkuYXR0cigiY3giLHU9PnUueCkuYXR0cigiY3kiLHU9PnUueSkuc3R5bGUoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmaWxsIix1PT50aGlzLmNvbG9yU2NhbGUuc2NhbGUodS5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpLHAuZXhpdCgpLnJlbW92ZSgpLHRoaXMuZHJhd1Rvb2x0aXBzKG4sdCx0aGlzLnRvb2x0aXBDb2x1bW5zKSk6dGhpcy5oaWRlVG9vbHRpcHMoKX0pKX1oaWRlVG9vbHRpcHMoKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fdG9vbHRpcFVwZGF0ZUFuaW1hdGlvbkZyYW1lKTsKdGhpcy50b29sdGlwLmhpZGUoKTt0aGlzLnNjYXR0ZXJQbG90LmF0dHIoImRpc3BsYXkiLCJibG9jayIpO3RoaXMudG9vbHRpcFBvaW50c0NvbXBvbmVudC5jb250ZW50KCkuc2VsZWN0QWxsKCIucG9pbnQiKS5yZW1vdmUoKX1zZXR1cFRvb2x0aXBzKGspe2sub25EZXRhY2goKCk9Pnt0aGlzLnRvb2x0aXBJbnRlcmFjdGlvbi5kZXRhY2hGcm9tKCk7dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZW5hYmxlZCghMSl9KTtrLm9uQW5jaG9yKCgpPT57dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uYXR0YWNoVG8oayk7dGhpcy50b29sdGlwSW50ZXJhY3Rpb24uZW5hYmxlZCghMCl9KX1kcmF3VG9vbHRpcHMoayx0LGwpe2lmKGsubGVuZ3RoKXt2YXIgcD10aGlzLmNvbG9yU2NhbGU7bD1be3RpdGxlOiIiLHN0YXRpYzohMSxldmFsVHlwZTpkLkRPTSxldmFsdWF0ZSh5KXtkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJzcGFuIikuc3R5bGUoImJhY2tncm91bmQtY29sb3IiLCgpPT5wLnNjYWxlKHkuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWUpKTsKcmV0dXJuIiJ9LGVudGVyKHkpe2QzLnNlbGVjdCh0aGlzKS5hcHBlbmQoInNwYW4iKS5jbGFzc2VkKCJzd2F0Y2giLCEwKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsKCk9PnAuc2NhbGUoeS5kYXRhc2V0Lm1ldGFkYXRhKCkubmFtZSkpfX0sLi4ubF07dmFyIG09eT0+TWF0aC5wb3coeS54LXQueCwyKStNYXRoLnBvdyh5LnktdC55LDIpLG49Xy5taW4oay5tYXAobSkpLHE9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuc21vb3RoZWRBY2Nlc3Nvcjp0aGlzLnlWYWx1ZUFjY2Vzc29yO2s9ImFzY2VuZGluZyI9PT10aGlzLnRvb2x0aXBTb3J0aW5nTWV0aG9kP18uc29ydEJ5KGsseT0+cSh5LmRhdHVtLC0xLHkuZGF0YXNldCkpOiJkZXNjZW5kaW5nIj09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/Xy5zb3J0Qnkoayx5PT5xKHkuZGF0dW0sLTEseS5kYXRhc2V0KSkucmV2ZXJzZSgpOiJuZWFyZXN0Ij09PXRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2Q/Xy5zb3J0QnkoayxtKTprLnNsaWNlKDApLnJldmVyc2UoKTsKdmFyIHU9dGhpcyx4PWQzLnNlbGVjdCh0aGlzLnRvb2x0aXAuY29udGVudCgpKS5zZWxlY3QoInRhYmxlIiksQT14LnNlbGVjdCgidGhlYWQiKS5zZWxlY3RBbGwoInRoIikuZGF0YShsLHk9PnkudGl0bGUpO0EuZW50ZXIoKS5hcHBlbmQoInRoIikudGV4dCh5PT55LnRpdGxlKS5ub2RlcygpO0EuZXhpdCgpLnJlbW92ZSgpO2s9eC5zZWxlY3QoInRib2R5Iikuc2VsZWN0QWxsKCJ0ciIpLmRhdGEoayx5PT55LmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lKTtrLmNsYXNzZWQoImRpc3RhbnQiLHk9Pnt2YXIgdz15LmRhdGFzZXQuZGF0YSgpWzBdLEM9Xy5sYXN0KHkuZGF0YXNldC5kYXRhKCkpO3c9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IodywwLHkuZGF0YXNldCkpO0M9dGhpcy54U2NhbGUuc2NhbGUodGhpcy54QWNjZXNzb3IoQywwLHkuZGF0YXNldCkpO3k9dGhpcy5zbW9vdGhpbmdFbmFibGVkP3kuZGF0dW0uc21vb3RoZWQ6dGhpcy55VmFsdWVBY2Nlc3Nvcih5LmRhdHVtLAowLHkuZGF0YXNldCk7cmV0dXJuIHQueDx3fHx0Lng+Q3x8aXNOYU4oeSl9KS5jbGFzc2VkKCJjbG9zZXN0Iix5PT5tKHkpPT09bikuZWFjaChmdW5jdGlvbih5KXt1LmRyYXdUb29sdGlwUm93KHRoaXMsbCx5KX0pLm9yZGVyKCk7ay5leGl0KCkucmVtb3ZlKCk7ay5lbnRlcigpLmFwcGVuZCgidHIiKS5lYWNoKGZ1bmN0aW9uKHkpe3UuZHJhd1Rvb2x0aXBSb3codGhpcyxsLHkpfSkubm9kZXMoKTt0aGlzLnRvb2x0aXAudXBkYXRlQW5kUG9zaXRpb24odGhpcy50YXJnZXRTVkcubm9kZSgpKX1lbHNlIHRoaXMudG9vbHRpcC5oaWRlKCl9ZHJhd1Rvb2x0aXBSb3coayx0LGwpe2NvbnN0IHA9dGhpcztrPWQzLnNlbGVjdChrKS5zZWxlY3RBbGwoInRkIikuZGF0YSh0KTtrLmVhY2goZnVuY3Rpb24obSl7bS5zdGF0aWN8fHAuZHJhd1Rvb2x0aXBDb2x1bW4uY2FsbChwLHRoaXMsbSxsKX0pO2suZW50ZXIoKS5hcHBlbmQoInRkIikuZWFjaChmdW5jdGlvbihtKXttLmVudGVyJiZtLmVudGVyLmNhbGwodGhpcywKbCk7cC5kcmF3VG9vbHRpcENvbHVtbi5jYWxsKHAsdGhpcyxtLGwpfSl9ZHJhd1Rvb2x0aXBDb2x1bW4oayx0LGwpe2NvbnN0IHA9dGhpcy5zbW9vdGhpbmdFbmFibGVkO3QuZXZhbFR5cGU9PWQuRE9NP3QuZXZhbHVhdGUuY2FsbChrLGwse3Ntb290aGluZ0VuYWJsZWQ6cH0pOmQzLnNlbGVjdChrKS50ZXh0KHQuZXZhbHVhdGUuY2FsbChrLGwse3Ntb290aGluZ0VuYWJsZWQ6cH0pKX1maW5kQ2xvc2VzdFBvaW50KGssdCl7Y29uc3QgbD10LmRhdGEoKS5tYXAoKG4scSk9PnRoaXMueFNjYWxlLnNjYWxlKHRoaXMueEFjY2Vzc29yKG4scSx0KSkpO2xldCBwPV8uc29ydGVkSW5kZXgobCxrLngpO2lmKDA9PWwubGVuZ3RoKXJldHVybiBudWxsO3A9PT1sLmxlbmd0aD8tLXA6MCE9PXAmJihwPU1hdGguYWJzKGxbcC0xXS1rLngpPE1hdGguYWJzKGxbcF0tay54KT9wLTE6cCk7az10LmRhdGEoKVtwXTtjb25zdCBtPXRoaXMuc21vb3RoaW5nRW5hYmxlZD90aGlzLnNtb290aGVkQWNjZXNzb3IoaywKcCx0KTp0aGlzLnlWYWx1ZUFjY2Vzc29yKGsscCx0KTtyZXR1cm57eDpsW3BdLHk6dGhpcy55U2NhbGUuc2NhbGUobSksZGF0dW06ayxkYXRhc2V0OnR9fXJlc21vb3RoRGF0YXNldChrKXtsZXQgdD1rLmRhdGEoKTtjb25zdCBsPXRoaXMuc21vb3RoaW5nV2VpZ2h0O2xldCBwPTA8dC5sZW5ndGg/MDpOYU4sbT0wO2NvbnN0IG49dC5tYXAoKHUseCk9PnRoaXMueVZhbHVlQWNjZXNzb3IodSx4LGspKSxxPW4uZXZlcnkodT0+dT09blswXSk7dC5mb3JFYWNoKCh1LHgpPT57eD1uW3hdO3F8fCFOdW1iZXIuaXNGaW5pdGUoeCk/dS5zbW9vdGhlZD14OihwPXAqbCsoMS1sKSp4LG0rKyx4PTEsMSE9PWwmJih4PTEtTWF0aC5wb3cobCxtKSksdS5zbW9vdGhlZD1wL3gpfSl9Z2V0RGF0YXNldChrKXt2b2lkIDA9PT10aGlzLm5hbWUyZGF0YXNldHNba10mJih0aGlzLm5hbWUyZGF0YXNldHNba109bmV3IFBsb3R0YWJsZS5EYXRhc2V0KFtdLHtuYW1lOmssbWV0YTpudWxsfSkpO3JldHVybiB0aGlzLm5hbWUyZGF0YXNldHNba119c3RhdGljIGdldFlTY2FsZUZyb21UeXBlKGspe2lmKGs9PT0KZi5MT0cpcmV0dXJuIG5ldyBiLkxvZ1NjYWxlO2lmKGs9PT1mLkxJTkVBUilyZXR1cm4gbmV3IGIuTGluZWFyU2NhbGU7dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCB5U2NhbGUgdHlwZSAiK2spO31zZXRWaXNpYmxlU2VyaWVzKGspe3RoaXMuc2VyaWVzTmFtZXM9az1rLnNvcnQoKTtrLnJldmVyc2UoKTt0aGlzLmRhdGFzZXRzLmZvckVhY2godD0+dC5vZmZVcGRhdGUodGhpcy5vbkRhdGFzZXRDaGFuZ2VkKSk7dGhpcy5kYXRhc2V0cz1rLm1hcCh0PT50aGlzLmdldERhdGFzZXQodCkpO3RoaXMuZGF0YXNldHMuZm9yRWFjaCh0PT50Lm9uVXBkYXRlKHRoaXMub25EYXRhc2V0Q2hhbmdlZCkpO3RoaXMubGluZVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyk7dGhpcy5zbW9vdGhpbmdFbmFibGVkJiZ0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpO3RoaXMubWFyZ2luQXJlYVBsb3QmJnRoaXMubWFyZ2luQXJlYVBsb3QuZGF0YXNldHModGhpcy5kYXRhc2V0cyk7CnRoaXMudXBkYXRlU3BlY2lhbERhdGFzZXRzKCl9Y3JlYXRlU2FtcGxlZERhdGFzZXRGb3JNYXJrZXJzKGspe2NvbnN0IHQ9ay5kYXRhKCk7aWYoMjA+PXQubGVuZ3RoKXJldHVybiBrO2NvbnN0IGw9TWF0aC5jZWlsKHQubGVuZ3RoLzIwKSxwPUFycmF5KE1hdGguZmxvb3IodC5sZW5ndGgvbCkpO2ZvcihsZXQgbT0wLG49MDttPHAubGVuZ3RoO20rKyxuKz1sKXBbbV09dFtuXTtyZXR1cm4gbmV3IFBsb3R0YWJsZS5EYXRhc2V0KHAsay5tZXRhZGF0YSgpKX1zZXRTZXJpZXNEYXRhKGssdCl7dGhpcy5nZXREYXRhc2V0KGspLmRhdGEodCk7dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl9c2V0U2VyaWVzTWV0YWRhdGEoayx0KXt0PU9iamVjdC5hc3NpZ24oe30sdGhpcy5nZXREYXRhc2V0KGspLm1ldGFkYXRhKCkse21ldGE6dH0pO3RoaXMuZ2V0RGF0YXNldChrKS5tZXRhZGF0YSh0KX1zbW9vdGhpbmdVcGRhdGUoayl7dGhpcy5zbW9vdGhpbmdXZWlnaHQ9Cms7dGhpcy5kYXRhc2V0cy5mb3JFYWNoKHQ9PnRoaXMucmVzbW9vdGhEYXRhc2V0KHQpKTt0aGlzLnNtb290aGluZ0VuYWJsZWR8fCh0aGlzLmxpbmVQbG90LmFkZENsYXNzKCJnaG9zdCIpLHRoaXMuc2NhdHRlclBsb3QueSh0aGlzLnNtb290aGVkQWNjZXNzb3IsdGhpcy55U2NhbGUpLHRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMCx0aGlzLnNtb290aExpbmVQbG90LmRhdGFzZXRzKHRoaXMuZGF0YXNldHMpKTt0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QueSh0aGlzLmdldFlBeGlzQWNjZXNzb3IoKSx0aGlzLnlTY2FsZSk7dGhpcy51cGRhdGVTcGVjaWFsRGF0YXNldHMoKX1zbW9vdGhpbmdEaXNhYmxlKCl7dGhpcy5zbW9vdGhpbmdFbmFibGVkJiYodGhpcy5saW5lUGxvdC5yZW1vdmVDbGFzcygiZ2hvc3QiKSx0aGlzLnNjYXR0ZXJQbG90LnkodGhpcy55VmFsdWVBY2Nlc3Nvcix0aGlzLnlTY2FsZSksdGhpcy5zbW9vdGhMaW5lUGxvdC5kYXRhc2V0cyhbXSksCnRoaXMuc21vb3RoaW5nRW5hYmxlZD0hMSx0aGlzLnVwZGF0ZVNwZWNpYWxEYXRhc2V0cygpKTt0aGlzLm1hcmtlcnNTY2F0dGVyUGxvdCYmdGhpcy5tYXJrZXJzU2NhdHRlclBsb3QueSh0aGlzLmdldFlBeGlzQWNjZXNzb3IoKSx0aGlzLnlTY2FsZSl9c2V0VG9vbHRpcFNvcnRpbmdNZXRob2Qoayl7dGhpcy50b29sdGlwU29ydGluZ01ldGhvZD1rfXJlbmRlclRvKGspe3RoaXMudGFyZ2V0U1ZHPWs7dGhpcy5vdXRlci5yZW5kZXJUbyhrKTtudWxsIT10aGlzLl9kZWZhdWx0WFJhbmdlJiZ0aGlzLnJlc2V0WERvbWFpbigpO251bGwhPXRoaXMuX2RlZmF1bHRZUmFuZ2UmJnRoaXMucmVzZXRZRG9tYWluKCk7dGhpcy5tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl9cmVkcmF3KCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZik7dGhpcy5fcmVkcmF3UmFmPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLm1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0KCk7CnRoaXMub3V0ZXIucmVkcmF3KCl9KX1tZWFzdXJlQkJveEFuZE1heWJlSW52YWxpZGF0ZUxheW91dEluUmFmKCl7d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWYpO3RoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWY9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMubWVhc3VyZUJCb3hBbmRNYXliZUludmFsaWRhdGVMYXlvdXQoKX0pfW1lYXN1cmVCQm94QW5kTWF5YmVJbnZhbGlkYXRlTGF5b3V0KCl7aWYodGhpcy5fbGFzdERyYXdCQm94KXtjb25zdCBrPXRoaXMuX2xhc3REcmF3QkJveC53aWR0aCx7d2lkdGg6dH09dGhpcy50YXJnZXRTVkcubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOzA9PWsmJms8dCYmdGhpcy5vdXRlci5pbnZhbGlkYXRlQ2FjaGUoKX10aGlzLl9sYXN0RHJhd0JCb3g9dGhpcy50YXJnZXRTVkcubm9kZSgpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWRlc3Ryb3koKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmVkcmF3UmFmKTsKd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX2ludmFsaWRhdGVMYXlvdXRSYWYpO3RoaXMub3V0ZXImJnRoaXMub3V0ZXIuZGVzdHJveSgpfW9uQW5jaG9yKGspe2lmKHRoaXMub3V0ZXIpdGhpcy5vdXRlci5vbkFuY2hvcihrKX19Yi5MaW5lQ2hhcnQ9aH0pKEdofHwoR2g9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1saW5lLWNoYXJ0Mi92ei1saW5lLWNoYXJ0Mi5qcwooZnVuY3Rpb24oYil7Y29uc3QgZD1yZy5tdWx0aXNjYWxlRm9ybWF0dGVyKHJnLllfVE9PTFRJUF9GT1JNQVRURVJfUFJFQ0lTSU9OKSxmPWg9PmlzTmFOKGgpPyJOYU4iOmQoaCk7Yi5ERUZBVUxUX1RPT0xUSVBfQ09MVU1OUz1be3RpdGxlOiJOYW1lIixldmFsdWF0ZTpoPT5oLmRhdGFzZXQubWV0YWRhdGEoKS5uYW1lfSx7dGl0bGU6IlNtb290aGVkIixldmFsdWF0ZShoLGspe3JldHVybiBmKGsuc21vb3RoaW5nRW5hYmxlZD9oLmRhdHVtLnNtb290aGVkOmguZGF0dW0uc2NhbGFyKX19LHt0aXRsZToiVmFsdWUiLGV2YWx1YXRlOmg9PmYoaC5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6IlN0ZXAiLGV2YWx1YXRlOmg9PnJnLnN0ZXBGb3JtYXR0ZXIoaC5kYXR1bS5zdGVwKX0se3RpdGxlOiJUaW1lIixldmFsdWF0ZTpoPT5yZy50aW1lRm9ybWF0dGVyKGguZGF0dW0ud2FsbF90aW1lKX0se3RpdGxlOiJSZWxhdGl2ZSIsZXZhbHVhdGU6aD0+cmcucmVsYXRpdmVGb3JtYXR0ZXIocmcucmVsYXRpdmVBY2Nlc3NvcihoLmRhdHVtLAotMSxoLmRhdGFzZXQpKX1dO1BvbHltZXIoe2lzOiJ2ei1saW5lLWNoYXJ0MiIscHJvcGVydGllczp7Y29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IFBsb3R0YWJsZS5TY2FsZXMuQ29sb3IpLnJhbmdlKGQzLnNjaGVtZUNhdGVnb3J5MTApfX0sc3ltYm9sRnVuY3Rpb246T2JqZWN0LHNtb290aGluZ0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsdmFsdWU6ITF9LHNtb290aGluZ1dlaWdodDp7dHlwZTpOdW1iZXIsdmFsdWU6LjZ9LHhUeXBlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0seENvbXBvbmVudHNDcmVhdGlvbk1ldGhvZDp7dHlwZTpPYmplY3QsdmFsdWU6IiJ9LHhBeGlzRm9ybWF0dGVyOk9iamVjdCx5VmFsdWVBY2Nlc3Nvcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pmg9Pmguc2NhbGFyfSx0b29sdGlwQ29sdW1uczp7dHlwZTpBcnJheSx2YWx1ZTooKT0+Yi5ERUZBVUxUX1RPT0xUSVBfQ09MVU1OU30sZmlsbEFyZWE6T2JqZWN0LApkZWZhdWx0WFJhbmdlOkFycmF5LGRlZmF1bHRZUmFuZ2U6QXJyYXkseVNjYWxlVHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6ImxpbmVhciJ9LGlnbm9yZVlPdXRsaWVyczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSx0b29sdGlwU29ydGluZ01ldGhvZDp7dHlwZTpTdHJpbmcsdmFsdWU6ImRlZmF1bHQifSx0b29sdGlwUG9zaXRpb246e3R5cGU6U3RyaW5nLHZhbHVlOkVoLlRvb2x0aXBQb3NpdGlvbi5CT1RUT019LF9jaGFydDpPYmplY3QsX3Zpc2libGVTZXJpZXNDYWNoZTp7dHlwZTpBcnJheSx2YWx1ZTooKT0+W119LF9zZXJpZXNEYXRhQ2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT4oe30pfSxfc2VyaWVzTWV0YWRhdGFDYWNoZTp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pih7fSl9LF9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ6e3R5cGU6TnVtYmVyLHZhbHVlOm51bGx9fSxvYnNlcnZlcnM6WyJfbWFrZUNoYXJ0KHhDb21wb25lbnRzQ3JlYXRpb25NZXRob2QsIHhUeXBlLCB5VmFsdWVBY2Nlc3NvciwgeVNjYWxlVHlwZSwgdG9vbHRpcENvbHVtbnMsIGNvbG9yU2NhbGUsIGlzQXR0YWNoZWQpIiwKIl9yZWxvYWRGcm9tQ2FjaGUoX2NoYXJ0LCBfdmlzaWJsZVNlcmllc0NhY2hlKSIsIl9zbW9vdGhpbmdDaGFuZ2VkKHNtb290aGluZ0VuYWJsZWQsIHNtb290aGluZ1dlaWdodCwgX2NoYXJ0KSIsIl90b29sdGlwU29ydGluZ01ldGhvZENoYW5nZWQodG9vbHRpcFNvcnRpbmdNZXRob2QsIF9jaGFydCkiLCJfb3V0bGllcnNDaGFuZ2VkKGlnbm9yZVlPdXRsaWVycywgX2NoYXJ0KSJdLHJlYWR5KCl7dGhpcy5zY29wZVN1YnRyZWUodGhpcy4kLmNoYXJ0ZGl2LCEwKX0sYXR0YWNoZWQoKXtjb25zdCBoPXtjYXB0dXJlOiEwLHBhc3NpdmU6ITB9O3RoaXMuX2xpc3Rlbih0aGlzLCJtb3VzZWRvd24iLHRoaXMuX29uTW91c2VEb3duLmJpbmQodGhpcyksaCk7dGhpcy5fbGlzdGVuKHRoaXMsIm1vdXNldXAiLHRoaXMuX29uTW91c2VVcC5iaW5kKHRoaXMpLGgpO3RoaXMuX2xpc3Rlbih3aW5kb3csImtleWRvd24iLHRoaXMuX29uS2V5RG93bi5iaW5kKHRoaXMpLGgpO3RoaXMuX2xpc3Rlbih3aW5kb3csCiJrZXl1cCIsdGhpcy5fb25LZXlVcC5iaW5kKHRoaXMpLGgpfSxkZXRhY2hlZCgpe3RoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKTt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpO3RoaXMuX2xpc3RlbmVycyYmKHRoaXMuX2xpc3RlbmVycy5mb3JFYWNoKCh7bm9kZTpoLGV2ZW50TmFtZTprLGZ1bmM6dCxvcHRpb246bH0pPT57aC5yZW1vdmVFdmVudExpc3RlbmVyKGssdCxsKX0pLHRoaXMuX2xpc3RlbmVycy5jbGVhcigpKX0sX2xpc3RlbihoLGssdCxsPXt9KXt0aGlzLl9saXN0ZW5lcnN8fCh0aGlzLl9saXN0ZW5lcnM9bmV3IFNldCk7dGhpcy5fbGlzdGVuZXJzLmFkZCh7bm9kZTpoLGV2ZW50TmFtZTprLGZ1bmM6dCxvcHRpb246bH0pO2guYWRkRXZlbnRMaXN0ZW5lcihrLHQsbCl9LF9vbktleURvd24oaCl7dGhpcy50b2dnbGVDbGFzcygicGFua2V5IixiLlBhblpvb21EcmFnTGF5ZXIuaXNQYW5LZXkoaCkpfSxfb25LZXlVcChoKXt0aGlzLnRvZ2dsZUNsYXNzKCJwYW5rZXkiLApiLlBhblpvb21EcmFnTGF5ZXIuaXNQYW5LZXkoaCkpfSxfb25Nb3VzZURvd24oKXt0aGlzLnRvZ2dsZUNsYXNzKCJtb3VzZWRvd24iLCEwKX0sX29uTW91c2VVcCgpe3RoaXMudG9nZ2xlQ2xhc3MoIm1vdXNlZG93biIsITEpfSxzZXRWaXNpYmxlU2VyaWVzOmZ1bmN0aW9uKGgpe18uaXNFcXVhbCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGUsaCl8fCh0aGlzLl92aXNpYmxlU2VyaWVzQ2FjaGU9aCl9LHNldFNlcmllc0RhdGE6ZnVuY3Rpb24oaCxrKXt0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbaF09azt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0U2VyaWVzRGF0YShoLGspfSxzZXRTZXJpZXNNZXRhZGF0YShoLGspe3RoaXMuX3Nlcmllc01ldGFkYXRhQ2FjaGVbaF09azt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEoaCxrKX0scmVzZXREb21haW46ZnVuY3Rpb24oKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQucmVzZXREb21haW4oKX0scmVkcmF3OmZ1bmN0aW9uKCl7dGhpcy5fY2hhcnQmJgp0aGlzLl9jaGFydC5yZWRyYXcoKX0sX21ha2VDaGFydDpmdW5jdGlvbihoLGssdCxsLHAsbSl7a3x8aD9rJiYoaD0oKT0+cmcuZ2V0WENvbXBvbmVudHMoaykpOmg9cmcuc3RlcFg7bnVsbCE9PXRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkKSx0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbCk7dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbDtpZihoJiZ0aGlzLnlWYWx1ZUFjY2Vzc29yJiZ0aGlzLnRvb2x0aXBDb2x1bW5zKXt2YXIgbj1uZXcgYi5MaW5lQ2hhcnQoaCx0aGlzLnlWYWx1ZUFjY2Vzc29yLGwsbSx0aGlzLiQudG9vbHRpcCx0aGlzLnRvb2x0aXBDb2x1bW5zLHRoaXMuZmlsbEFyZWEsdGhpcy5kZWZhdWx0WFJhbmdlLHRoaXMuZGVmYXVsdFlSYW5nZSwKdGhpcy5zeW1ib2xGdW5jdGlvbix0aGlzLnhBeGlzRm9ybWF0dGVyKSxxPWQzLnNlbGVjdCh0aGlzLiQuY2hhcnRkaXYpO24ucmVuZGVyVG8ocSk7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LmRlc3Ryb3koKTt0aGlzLl9jaGFydD1uO3RoaXMuX2NoYXJ0Lm9uQW5jaG9yKCgpPT50aGlzLmZpcmUoImNoYXJ0LWF0dGFjaGVkIikpfX0sMzUwKX0sX3JlbG9hZEZyb21DYWNoZTpmdW5jdGlvbigpe3RoaXMuX2NoYXJ0JiYodGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlLmZvckVhY2goaD0+e3RoaXMuX2NoYXJ0LnNldFNlcmllc0RhdGEoaCx0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbaF18fFtdKX0pLHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5maWx0ZXIoaD0+dGhpcy5fc2VyaWVzTWV0YWRhdGFDYWNoZVtoXSkuZm9yRWFjaChoPT57dGhpcy5fY2hhcnQuc2V0U2VyaWVzTWV0YWRhdGEoaCx0aGlzLl9zZXJpZXNNZXRhZGF0YUNhY2hlW2hdKX0pLHRoaXMuX2NoYXJ0LnNldFZpc2libGVTZXJpZXModGhpcy5fdmlzaWJsZVNlcmllc0NhY2hlKSl9LApfc21vb3RoaW5nQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2NoYXJ0JiYodGhpcy5zbW9vdGhpbmdFbmFibGVkP3RoaXMuX2NoYXJ0LnNtb290aGluZ1VwZGF0ZSh0aGlzLnNtb290aGluZ1dlaWdodCk6dGhpcy5fY2hhcnQuc21vb3RoaW5nRGlzYWJsZSgpKX0sX291dGxpZXJzQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5pZ25vcmVZT3V0bGllcnModGhpcy5pZ25vcmVZT3V0bGllcnMpfSxfdG9vbHRpcFNvcnRpbmdNZXRob2RDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5fY2hhcnQmJnRoaXMuX2NoYXJ0LnNldFRvb2x0aXBTb3J0aW5nTWV0aG9kKHRoaXMudG9vbHRpcFNvcnRpbmdNZXRob2QpfSxnZXRFeHBvcnRlcigpe3JldHVybiBuZXcgYi5MaW5lQ2hhcnRFeHBvcnRlcih0aGlzLiQuY2hhcnRkaXYpfX0pfSkoR2h8fChHaD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWxpbmUtY2hhcnQyL3Z6LWxpbmUtY2hhcnQyLmh0bWwuanMKUG9seW1lcih7aXM6InZ6LWxpbmUtY2hhcnQtdG9vbHRpcCJ9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1saW5lLWNoYXJ0Mi9saW5lLWNoYXJ0LWV4cG9ydGVyLmpzCihmdW5jdGlvbihiKXtsZXQgZDsoZnVuY3Rpb24oayl7ay5HUk9VUD0iRyI7ay5ESVY9IkRJViI7ay5TVkc9IlNWRyI7ay5URVhUPSJURVhUIn0pKGR8fChkPXt9KSk7Y2xhc3MgZntjb25zdHJ1Y3RvcihrKXt0aGlzLnVuaXF1ZUlkPTA7dGhpcy5yb290PWt9ZXhwb3J0QXNTdHJpbmcoKXtjb25zdCBrPXRoaXMuY29udmVydCh0aGlzLnJvb3QpO2lmKCFrKXJldHVybiIiO2NvbnN0IHQ9dGhpcy5jcmVhdGVSb290U3ZnKCk7dC5hcHBlbmRDaGlsZChrKTtyZXR1cm4gdC5vdXRlckhUTUx9Y3JlYXRlVW5pcXVlSWQoKXtyZXR1cm5gJHsiY2xpcCJ9XyR7dGhpcy51bmlxdWVJZCsrfWB9Z2V0U2l6ZSgpe3JldHVybiB0aGlzLnJvb3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y3JlYXRlUm9vdFN2Zygpe2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3ZnIiksdD10aGlzLmdldFNpemUoKTtrLnNldEF0dHJpYnV0ZU5TKCJzdmciLCJ2aWV3Qm94IixgMCAwICR7dC53aWR0aH0gJHt0LmhlaWdodH1gKTsKay5zZXRBdHRyaWJ1dGUoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKTtyZXR1cm4ga31jb252ZXJ0KGspe2xldCB0PW51bGw7dmFyIGw9ay5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKGsubm9kZVR5cGUhPU5vZGUuRUxFTUVOVF9OT0RFfHxsIT1kLkRJViYmbCE9ZC5TVkcpdD1rLmNsb25lTm9kZSgpO2Vsc2V7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGQuR1JPVVApO3ZhciBwPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGspLG09cGFyc2VJbnQocC5sZWZ0LDEwKSxuPXBhcnNlSW50KHAudG9wLDEwKTtpZihtfHxuKWw9dGhpcy5jcmVhdGVVbmlxdWVJZCgpLHQuc2V0QXR0cmlidXRlKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHttfSwgJHtufSlgKSx0LnNldEF0dHJpYnV0ZSgiY2xpcC1wYXRoIixgdXJsKCMke2x9KWApLG49cGFyc2VJbnQocC5oZWlnaHQsMTApLG09ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicmVjdCIpLG0uc2V0QXR0cmlidXRlKCJ3aWR0aCIsClN0cmluZyhwYXJzZUludChwLndpZHRoLDEwKSkpLG0uc2V0QXR0cmlidXRlKCJoZWlnaHQiLFN0cmluZyhuKSkscD1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoInN2ZyIsImNsaXBQYXRoIikscC5pZD1sLHAuYXBwZW5kQ2hpbGQobSksdC5hcHBlbmRDaGlsZChwKX1BcnJheS5mcm9tKGsuY2hpbGROb2RlcykubWFwKHE9PnRoaXMuY29udmVydChxKSkuZmlsdGVyKEJvb2xlYW4pLmZvckVhY2gocT0+dC5hcHBlbmRDaGlsZChxKSk7cmV0dXJuIHQubm9kZU5hbWUudG9VcHBlckNhc2UoKT09ZC5HUk9VUCYmIXQuaGFzQ2hpbGROb2RlcygpfHx0aGlzLnNob3VsZE9taXROb2RlKGspP251bGw6dGhpcy5zdHJpcENsYXNzKHRoaXMudHJhbnNmZXJTdHlsZShrLHQpKX1zdHJpcENsYXNzKGspe2subm9kZVR5cGU9PU5vZGUuRUxFTUVOVF9OT0RFJiZrLnJlbW92ZUF0dHJpYnV0ZSgiY2xhc3MiKTtyZXR1cm4ga310cmFuc2ZlclN0eWxlKGssdCl7aWYodC5ub2RlVHlwZSE9Tm9kZS5FTEVNRU5UX05PREUpcmV0dXJuIHQ7CmNvbnN0IGw9dC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2s9d2luZG93LmdldENvbXB1dGVkU3R5bGUoayk7bD09ZC5URVhUJiZPYmplY3QuYXNzaWduKHQuc3R5bGUse2ZvbnRGYW1pbHk6ay5mb250RmFtaWx5LGZvbnRTaXplOmsuZm9udFNpemUsZm9udFdlaWdodDprLmZvbnRXZWlnaHR9KTtsIT1kLkdST1VQJiYodC5zZXRBdHRyaWJ1dGUoImZpbGwiLGsuZmlsbCksdC5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsay5zdHJva2UpLHQuc2V0QXR0cmlidXRlKCJzdHJva2Utd2lkdGgiLGsuc3Ryb2tlV2lkdGgpKTsiMSIhPWsub3BhY2l0eSYmdC5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLGsub3BhY2l0eSk7cmV0dXJuIHR9c2hvdWxkT21pdE5vZGUoKXtyZXR1cm4hMX19Yi5QbG90dGFibGVFeHBvcnRlcj1mO2NsYXNzIGggZXh0ZW5kcyBme3Nob3VsZE9taXROb2RlKGspe3JldHVybiBrLm5vZGVUeXBlPT1Ob2RlLkVMRU1FTlRfTk9ERT9rLmNsYXNzTGlzdC5jb250YWlucygic2NhdHRlci1wbG90Iik6CiExfX1iLkxpbmVDaGFydEV4cG9ydGVyPWh9KShHaHx8KEdoPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtbGluZS1jaGFydC1kYXRhLWxvYWRlci90Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyLmh0bWwuanMKKGZ1bmN0aW9uKCl7Y29uc3QgYj1bXSxkPWZ1bmN0aW9uKCl7cmV0dXJuIF8udGhyb3R0bGUoZnVuY3Rpb24gaCgpe2lmKDAhPWIubGVuZ3RoKXt2YXIgaz1iLnNoaWZ0KCk7ay5hY3RpdmUmJihrLnJlZHJhdygpLGsuX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlPSExKTt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWUoMCk7d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShoKX19LDEwMCl9KCk7UG9seW1lcih7aXM6InRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiLHByb3BlcnRpZXM6e2FjdGl2ZTp7dHlwZTpCb29sZWFuLG9ic2VydmVyOiJfZml4QmFkU3RhdGVXaGVuQWN0aXZlIn0sZGF0YVNlcmllczpBcnJheSxyZXF1ZXN0TWFuYWdlcjpPYmplY3QsbG9nU2NhbGVBY3RpdmU6e3R5cGU6Qm9vbGVhbixvYnNlcnZlcjoiX2xvZ1NjYWxlQ2hhbmdlZCJ9LHhDb21wb25lbnRzQ3JlYXRpb25NZXRob2Q6T2JqZWN0LHhUeXBlOlN0cmluZyx5VmFsdWVBY2Nlc3NvcjpPYmplY3QsZmlsbEFyZWE6T2JqZWN0LApzbW9vdGhpbmdFbmFibGVkOkJvb2xlYW4sc21vb3RoaW5nV2VpZ2h0Ok51bWJlcix0b29sdGlwQ29sdW1uczpBcnJheSx0b29sdGlwU29ydGluZ01ldGhvZDpTdHJpbmcsdG9vbHRpcFBvc2l0aW9uOlN0cmluZyxpZ25vcmVZT3V0bGllcnM6Qm9vbGVhbixkZWZhdWx0WFJhbmdlOkFycmF5LGRlZmF1bHRZUmFuZ2U6QXJyYXksc3ltYm9sRnVuY3Rpb246T2JqZWN0LGNvbG9yU2NhbGU6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT4oe3NjYWxlOnBmLnJ1bnNDb2xvclNjYWxlfSl9LF9yZXNldERvbWFpbk9uTmV4dExvYWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sX21heWJlUmVuZGVyZWRJbkJhZFN0YXRlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0sYmVoYXZpb3JzOltxZC5EYXRhTG9hZGVyQmVoYXZpb3JdLG9ic2VydmVyczpbIl9kYXRhU2VyaWVzQ2hhbmdlZChkYXRhU2VyaWVzLiopIiwiX2xvYWRLZXlDaGFuZ2VkKGxvYWRLZXkpIl0sb25Mb2FkRmluaXNoKCl7MDwKdGhpcy5kYXRhVG9Mb2FkLmxlbmd0aCYmdGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkJiYodGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSExLHRoaXMuJC5jaGFydC5yZXNldERvbWFpbigpKTt0aGlzLnJlZHJhdygpfSxkZXRhY2hlZCgpe2NhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlZHJhd1JhZil9LGV4cG9ydEFzU3ZnU3RyaW5nKCl7cmV0dXJuIHRoaXMuJC5jaGFydC5nZXRFeHBvcnRlcigpLmV4cG9ydEFzU3RyaW5nKCl9LHJlc2V0RG9tYWluKCl7dGhpcy4kLmNoYXJ0LnJlc2V0RG9tYWluKCl9LHNldFNlcmllc0RhdGEoZixoKXt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShmLGgpfSxzZXRTZXJpZXNNZXRhZGF0YShmLGgpe3RoaXMuJC5jaGFydC5zZXRTZXJpZXNNZXRhZGF0YShmLGgpfSxyZWRyYXcoKXtjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yZWRyYXdSYWYpO3RoaXMuX3JlZHJhd1JhZj13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57dGhpcy5hY3RpdmU/CnRoaXMuJC5jaGFydC5yZWRyYXcoKTp0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMH0pfSxfbG9hZEtleUNoYW5nZWQoKXt0aGlzLnJlc2V0KCk7dGhpcy5fcmVzZXREb21haW5Pbk5leHRMb2FkPSEwfSxfZGF0YVNlcmllc0NoYW5nZWQoKXt0aGlzLiQuY2hhcnQuc2V0VmlzaWJsZVNlcmllcyh0aGlzLmRhdGFTZXJpZXMpfSxfbG9nU2NhbGVDaGFuZ2VkKGYpe3RoaXMuJC5jaGFydC55U2NhbGVUeXBlPWY/ImxvZyI6ImxpbmVhciI7dGhpcy5yZWRyYXcoKX0sX2ZpeEJhZFN0YXRlV2hlbkFjdGl2ZSgpe3RoaXMuYWN0aXZlJiZ0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZSYmKGIucHVzaCh0aGlzKSxkKCkpfSxfb25DaGFydEF0dGFjaGVkKCl7dGhpcy5hY3RpdmV8fCh0aGlzLl9tYXliZVJlbmRlcmVkSW5CYWRTdGF0ZT0hMCl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWRpYWxvZy1zY3JvbGxhYmxlL3BhcGVyLWRpYWxvZy1zY3JvbGxhYmxlLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWRpYWxvZy1zY3JvbGxhYmxlIixwcm9wZXJ0aWVzOntkaWFsb2dFbGVtZW50Ont0eXBlOk9iamVjdH19LGdldCBzY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpcy4kLnNjcm9sbGFibGV9LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fZW5zdXJlVGFyZ2V0KCk7dGhpcy5jbGFzc0xpc3QuYWRkKCJuby1wYWRkaW5nIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZW5zdXJlVGFyZ2V0KCk7cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlU2Nyb2xsU3RhdGUuYmluZCh0aGlzKSl9LHVwZGF0ZVNjcm9sbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy50b2dnbGVDbGFzcygiaXMtc2Nyb2xsZWQiLDA8dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wKTt0aGlzLnRvZ2dsZUNsYXNzKCJjYW4tc2Nyb2xsIix0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ8dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsSGVpZ2h0KTt0aGlzLnRvZ2dsZUNsYXNzKCJzY3JvbGxlZC10by1ib3R0b20iLAp0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxUb3ArdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0SGVpZ2h0Pj10aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxIZWlnaHQpfSxfZW5zdXJlVGFyZ2V0OmZ1bmN0aW9uKCl7KHRoaXMuZGlhbG9nRWxlbWVudD10aGlzLmRpYWxvZ0VsZW1lbnR8fHRoaXMucGFyZW50RWxlbWVudCkmJnRoaXMuZGlhbG9nRWxlbWVudC5iZWhhdmlvcnMmJjA8PXRoaXMuZGlhbG9nRWxlbWVudC5iZWhhdmlvcnMuaW5kZXhPZihQb2x5bWVyLlBhcGVyRGlhbG9nQmVoYXZpb3JJbXBsKT8odGhpcy5kaWFsb2dFbGVtZW50LnNpemluZ1RhcmdldD10aGlzLnNjcm9sbFRhcmdldCx0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCJmaXQiKSk6dGhpcy5kaWFsb2dFbGVtZW50JiZ0aGlzLnNjcm9sbFRhcmdldC5jbGFzc0xpc3QuYWRkKCJmaXQiKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1tYXJrZG93bi12aWV3L3RmLW1hcmtkb3duLXZpZXcuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtbWFya2Rvd24tdmlldyIscHJvcGVydGllczp7aHRtbDp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9fSxhdHRhY2hlZCgpe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9Pnt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQubWFya2Rvd24sITApfSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtY2FyZC1oZWFkaW5nL3V0aWwuanMKdmFyIEhoOyhmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGYpe2lmKCFmKXJldHVybiBudWxsO2xldCBoPWYubWF0Y2goL14jKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pKFswLTlhLWZdezEsMn0pJC8pO2lmKCFoKXJldHVybiBudWxsO2lmKDQ9PWYubGVuZ3RoKWZvcihmPTE7Mz49ZjtmKyspaFtmXSs9aFtmXTtyZXR1cm5bcGFyc2VJbnQoaFsxXSwxNikscGFyc2VJbnQoaFsyXSwxNikscGFyc2VJbnQoaFszXSwxNildfWIuZm9ybWF0RGF0ZT1mdW5jdGlvbihmKXtyZXR1cm4gZj9mLnRvU3RyaW5nKCkucmVwbGFjZSgvR01ULVxkKyBcKChbXildKylcKS8sIiQxIik6IiJ9O2IucGlja1RleHRDb2xvcj1mdW5jdGlvbihmKXtyZXR1cm4oZj1kKGYpKT8xMjU8TWF0aC5yb3VuZCgoMjk5KmZbMF0rNTg3KmZbMV0rMTE0KmZbMl0pLzFFMyk/ImluaGVyaXQiOiIjZWVlIjoiaW5oZXJpdCJ9fSkoSGh8fChIaD17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWNhcmQtaGVhZGluZy90Zi1jYXJkLWhlYWRpbmcuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtY2FyZC1oZWFkaW5nIixwcm9wZXJ0aWVzOntkaXNwbGF5TmFtZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sdGFnOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxydW46e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGRlc2NyaXB0aW9uOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxjb2xvcjp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX3J1bkJhY2tncm91bmQ6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVJ1bkJhY2tncm91bmQoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9LF9ydW5Db2xvcjp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUnVuQ29sb3IoY29sb3IpIixyZWFkT25seTohMCxvYnNlcnZlcjoiX3VwZGF0ZUhlYWRpbmdTdHlsZSJ9LF9uYW1lTGFiZWw6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZU5hbWVMYWJlbChkaXNwbGF5TmFtZSwgdGFnKSJ9LF90YWdMYWJlbDp7dHlwZTpTdHJpbmcsCmNvbXB1dGVkOiJfY29tcHV0ZVRhZ0xhYmVsKGRpc3BsYXlOYW1lLCB0YWcpIn19LF91cGRhdGVIZWFkaW5nU3R5bGUoKXt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tdGYtY2FyZC1oZWFkaW5nLWJhY2tncm91bmQtY29sb3IiOnRoaXMuX3J1bkJhY2tncm91bmQsIi0tdGYtY2FyZC1oZWFkaW5nLWNvbG9yIjp0aGlzLl9ydW5Db2xvcn0pfSxfY29tcHV0ZVJ1bkJhY2tncm91bmQoYil7cmV0dXJuIGJ8fCJub25lIn0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gSGgucGlja1RleHRDb2xvcihiKX0sX2NvbXB1dGVOYW1lTGFiZWwoYixkKXtyZXR1cm4gYnx8ZHx8IiJ9LF9jb21wdXRlVGFnTGFiZWwoYixkKXtyZXR1cm4gZCYmZCE9PWI/ZDoiIn0sX3RvZ2dsZURlc2NyaXB0aW9uRGlhbG9nKGIpe3RoaXMuJC5kZXNjcmlwdGlvbkRpYWxvZy5wb3NpdGlvblRhcmdldD1iLnRhcmdldDt0aGlzLiQuZGVzY3JpcHRpb25EaWFsb2cudG9nZ2xlKCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZGFzaGJvYXJkLWNvbW1vbi90Zi1kb3dubG9hZGVyLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWRvd25sb2FkZXIiLHByb3BlcnRpZXM6e19ydW46e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxydW5zOkFycmF5LHRhZzpTdHJpbmcsdXJsRm46RnVuY3Rpb259LF9jc3ZVcmwoYixkLGYpe3JldHVybiBkP3ZjLmFkZFBhcmFtcyhmKGIsZCkse2Zvcm1hdDoiY3N2In0pOiIifSxfanNvblVybChiLGQsZil7cmV0dXJuIGQ/ZihiLGQpOiIifSxfY3N2TmFtZShiLGQpe3JldHVybiBkP2BydW4tJHtkfS10YWctJHtifS5jc3ZgOiIifSxfanNvbk5hbWUoYixkKXtyZXR1cm4gZD9gcnVuLSR7ZH0tdGFnLSR7Yn0uanNvbmA6IiJ9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtc2NhbGFyLWRhc2hib2FyZC90Zi1zY2FsYXItY2FyZC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1zY2FsYXItY2FyZCIscHJvcGVydGllczp7dGFnOlN0cmluZyxkYXRhVG9Mb2FkOkFycmF5LHhUeXBlOlN0cmluZyxhY3RpdmU6Qm9vbGVhbixpZ25vcmVZT3V0bGllcnM6Qm9vbGVhbixyZXF1ZXN0TWFuYWdlcjpPYmplY3Qsc2hvd0Rvd25MaW5rczpCb29sZWFuLHNtb290aGluZ0VuYWJsZWQ6Qm9vbGVhbixzbW9vdGhpbmdXZWlnaHQ6TnVtYmVyLHRhZ01ldGFkYXRhOk9iamVjdCxjb2xvclNjYWxlOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsfSx0b29sdGlwU29ydGluZ01ldGhvZDpTdHJpbmcsX2xvYWREYXRhQ2FsbGJhY2s6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKGIsZCxmKT0+e2Y9Zi5tYXAoaz0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMUUzKmtbMF0pLHN0ZXA6a1sxXSxzY2FsYXI6a1syXX0pKTtjb25zdCBoPXRoaXMuX2dldFNlcmllc05hbWVGcm9tRGF0dW0oZCk7Yi5zZXRTZXJpZXNNZXRhZGF0YShoLGQpO2Iuc2V0U2VyaWVzRGF0YShoLApmKX19LHJlYWRPbmx5OiEwfSxnZXREYXRhTG9hZFVybDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybih7dGFnOmIscnVuOmR9KT0+dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoInNjYWxhcnMiLCIvc2NhbGFycyIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOmIscnVuOmR9KSl9fSxfZG93bmxvYWRVcmxGbjp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybihiLGQpPT50aGlzLmdldERhdGFMb2FkVXJsKHt0YWc6YixydW46ZH0pfX0scmVxdWVzdERhdGE6RnVuY3Rpb24sX2dldERhdGFMb2FkTmFtZTp7dHlwZTpGdW5jdGlvbix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBiPT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGIpfX0sX2V4cGFuZGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfbG9nU2NhbGVBY3RpdmU6Qm9vbGVhbixfdG9vbHRpcENvbHVtbnM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtjb25zdCBiPQpHaC5ERUZBVUxUX1RPT0xUSVBfQ09MVU1OUy5zbGljZSgpLGQ9Yi5maW5kSW5kZXgoZj0+Ik5hbWUiPT1mLnRpdGxlKTtiLnNwbGljZShkLDEse3RpdGxlOiJOYW1lIixldmFsdWF0ZTpmPT57Zj1mLmRhdGFzZXQubWV0YWRhdGEoKS5tZXRhO3JldHVybiB0aGlzLl9nZXRTZXJpZXNEaXNwbGF5TmFtZUZyb21EYXR1bShmKX19KTtyZXR1cm4gYn19fSxyZWxvYWQoKXt0aGlzLiQkKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIikucmVsb2FkKCl9LHJlZHJhdygpe3RoaXMuJCQoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKS5yZWRyYXcoKX0sX3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKTt0aGlzLnJlZHJhdygpfSxfdG9nZ2xlTG9nU2NhbGUoKXt0aGlzLnNldCgiX2xvZ1NjYWxlQWN0aXZlIiwhdGhpcy5fbG9nU2NhbGVBY3RpdmUpfSxfcmVzZXREb21haW4oKXtjb25zdCBiPXRoaXMuJCQoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKTsKYiYmYi5yZXNldERvbWFpbigpfSxfdXBkYXRlRG93bmxvYWRMaW5rKCl7Y29uc3QgYj10aGlzLiQkKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIikuZXhwb3J0QXNTdmdTdHJpbmcoKTt0aGlzLiQkKCIjc3ZnTGluayIpLmhyZWY9YGRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsJHtidG9hKGIpfWB9LF9ydW5zRnJvbURhdGEoYil7cmV0dXJuIGIubWFwKGQ9PmQucnVuKX0sX2dldERhdGFTZXJpZXMoKXtyZXR1cm4gdGhpcy5kYXRhVG9Mb2FkLm1hcChiPT50aGlzLl9nZXRTZXJpZXNOYW1lRnJvbURhdHVtKGIpKX0sX2dldFNlcmllc05hbWVGcm9tRGF0dW0oe3J1bjpiLGV4cGVyaW1lbnQ6ZD17bmFtZToiX2RlZmF1bHQifX0pe3JldHVybiBKU09OLnN0cmluZ2lmeShbZC5uYW1lLGJdKX0sX2dldFNlcmllc0Rpc3BsYXlOYW1lRnJvbURhdHVtKGIpe3JldHVybiBiLnJ1bn0sX2dldENvbG9yU2NhbGUoKXtyZXR1cm4gbnVsbCE9PXRoaXMuY29sb3JTY2FsZT90aGlzLmNvbG9yU2NhbGU6CntzY2FsZTpiPT57WyxiXT1KU09OLnBhcnNlKGIpO3JldHVybiBwZi5ydW5zQ29sb3JTY2FsZShiKX19fX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tcmFuZ2UtYmVoYXZpb3IvaXJvbi1yYW5nZS1iZWhhdmlvci5odG1sLmpzClBvbHltZXIuSXJvblJhbmdlQmVoYXZpb3I9e3Byb3BlcnRpZXM6e3ZhbHVlOnt0eXBlOk51bWJlcix2YWx1ZTowLG5vdGlmeTohMCxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LG1pbjp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LG1heDp7dHlwZTpOdW1iZXIsdmFsdWU6MTAwLG5vdGlmeTohMH0sc3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MSxub3RpZnk6ITB9LHJhdGlvOnt0eXBlOk51bWJlcix2YWx1ZTowLHJlYWRPbmx5OiEwLG5vdGlmeTohMH19LG9ic2VydmVyczpbIl91cGRhdGUodmFsdWUsIG1pbiwgbWF4LCBzdGVwKSJdLF9jYWxjUmF0aW86ZnVuY3Rpb24oYil7cmV0dXJuKHRoaXMuX2NsYW1wVmFsdWUoYiktdGhpcy5taW4pLyh0aGlzLm1heC10aGlzLm1pbil9LF9jbGFtcFZhbHVlOmZ1bmN0aW9uKGIpe3JldHVybiBNYXRoLm1pbih0aGlzLm1heCxNYXRoLm1heCh0aGlzLm1pbix0aGlzLl9jYWxjU3RlcChiKSkpfSxfY2FsY1N0ZXA6ZnVuY3Rpb24oYil7Yj1wYXJzZUZsb2F0KGIpOwppZighdGhpcy5zdGVwKXJldHVybiBiO2I9TWF0aC5yb3VuZCgoYi10aGlzLm1pbikvdGhpcy5zdGVwKTtyZXR1cm4gMT50aGlzLnN0ZXA/Yi8oMS90aGlzLnN0ZXApK3RoaXMubWluOmIqdGhpcy5zdGVwK3RoaXMubWlufSxfdmFsaWRhdGVWYWx1ZTpmdW5jdGlvbigpe3ZhciBiPXRoaXMuX2NsYW1wVmFsdWUodGhpcy52YWx1ZSk7dGhpcy52YWx1ZT10aGlzLm9sZFZhbHVlPWlzTmFOKGIpP3RoaXMub2xkVmFsdWU6YjtyZXR1cm4gdGhpcy52YWx1ZSE9PWJ9LF91cGRhdGU6ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0ZVZhbHVlKCk7dGhpcy5fc2V0UmF0aW8oMTAwKnRoaXMuX2NhbGNSYXRpbyh0aGlzLnZhbHVlKSl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1wcm9ncmVzcy9wYXBlci1wcm9ncmVzcy5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1wcm9ncmVzcyIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25SYW5nZUJlaGF2aW9yXSxwcm9wZXJ0aWVzOntzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sc2Vjb25kYXJ5UmF0aW86e3R5cGU6TnVtYmVyLHZhbHVlOjAscmVhZE9ubHk6ITB9LGluZGV0ZXJtaW5hdGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX3RvZ2dsZUluZGV0ZXJtaW5hdGUifSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxvYnNlcnZlcjoiX2Rpc2FibGVkQ2hhbmdlZCJ9fSxvYnNlcnZlcnM6WyJfcHJvZ3Jlc3NDaGFuZ2VkKHNlY29uZGFyeVByb2dyZXNzLCB2YWx1ZSwgbWluLCBtYXgsIGluZGV0ZXJtaW5hdGUpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InByb2dyZXNzYmFyIn0sX3RvZ2dsZUluZGV0ZXJtaW5hdGU6ZnVuY3Rpb24oYil7dGhpcy50b2dnbGVDbGFzcygiaW5kZXRlcm1pbmF0ZSIsCmIsdGhpcy4kLnByaW1hcnlQcm9ncmVzcyl9LF90cmFuc2Zvcm1Qcm9ncmVzczpmdW5jdGlvbihiLGQpe2Iuc3R5bGUudHJhbnNmb3JtPWIuc3R5bGUud2Via2l0VHJhbnNmb3JtPSJzY2FsZVgoIitkLzEwMCsiKSJ9LF9tYWluUmF0aW9DaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5wcmltYXJ5UHJvZ3Jlc3MsYil9LF9wcm9ncmVzc0NoYW5nZWQ6ZnVuY3Rpb24oYixkLGYsaCxrKXtiPXRoaXMuX2NsYW1wVmFsdWUoYik7ZD10aGlzLl9jbGFtcFZhbHVlKGQpO3ZhciB0PTEwMCp0aGlzLl9jYWxjUmF0aW8oYiksbD0xMDAqdGhpcy5fY2FsY1JhdGlvKGQpO3RoaXMuX3NldFNlY29uZGFyeVJhdGlvKHQpO3RoaXMuX3RyYW5zZm9ybVByb2dyZXNzKHRoaXMuJC5zZWNvbmRhcnlQcm9ncmVzcyx0KTt0aGlzLl90cmFuc2Zvcm1Qcm9ncmVzcyh0aGlzLiQucHJpbWFyeVByb2dyZXNzLGwpO3RoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3M9YjtrP3RoaXMucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXZhbHVlbm93Iik6CnRoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93IixkKTt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsZik7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLGgpfSxfZGlzYWJsZWRDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLWRpc2FibGVkIixiPyJ0cnVlIjoiZmFsc2UiKX0sX2hpZGVTZWNvbmRhcnlQcm9ncmVzczpmdW5jdGlvbihiKXtyZXR1cm4gMD09PWJ9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItc2xpZGVyL3BhcGVyLXNsaWRlci5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1zbGlkZXIiLGJlaGF2aW9yczpbUG9seW1lci5Jcm9uQTExeUtleXNCZWhhdmlvcixQb2x5bWVyLklyb25Gb3JtRWxlbWVudEJlaGF2aW9yLFBvbHltZXIuUGFwZXJJbmt5Rm9jdXNCZWhhdmlvcixQb2x5bWVyLklyb25SYW5nZUJlaGF2aW9yXSxwcm9wZXJ0aWVzOntzbmFwczp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG5vdGlmeTohMH0scGluOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsbm90aWZ5OiEwfSxzZWNvbmRhcnlQcm9ncmVzczp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9zZWNvbmRhcnlQcm9ncmVzc0NoYW5nZWQifSxlZGl0YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbW1lZGlhdGVWYWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxyZWFkT25seTohMCxub3RpZnk6ITB9LG1heE1hcmtlcnM6e3R5cGU6TnVtYmVyLHZhbHVlOjAsbm90aWZ5OiEwfSxleHBhbmQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWFkT25seTohMH0sCmlnbm9yZUJhclRvdWNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGRyYWdnaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSx0cmFuc2l0aW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9LG1hcmtlcnM6e3R5cGU6QXJyYXkscmVhZE9ubHk6ITAsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxvYnNlcnZlcnM6WyJfdXBkYXRlS25vYih2YWx1ZSwgbWluLCBtYXgsIHNuYXBzLCBzdGVwKSIsIl92YWx1ZUNoYW5nZWQodmFsdWUpIiwiX2ltbWVkaWF0ZVZhbHVlQ2hhbmdlZChpbW1lZGlhdGVWYWx1ZSkiLCJfdXBkYXRlTWFya2VycyhtYXhNYXJrZXJzLCBtaW4sIG1heCwgc25hcHMpIl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InNsaWRlciIsdGFiaW5kZXg6MH0sa2V5QmluZGluZ3M6e2xlZnQ6Il9sZWZ0S2V5IixyaWdodDoiX3JpZ2h0S2V5IiwiZG93biBwYWdlZG93biBob21lIjoiX2RlY3JlbWVudEtleSIsInVwIHBhZ2V1cCBlbmQiOiJfaW5jcmVtZW50S2V5In0sCnJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5pZ25vcmVCYXJUb3VjaCYmUG9seW1lci5HZXN0dXJlcy5zZXRUb3VjaEFjdGlvbih0aGlzLiQuc2xpZGVyQmFyLCJhdXRvIil9LGluY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlK3RoaXMuc3RlcCl9LGRlY3JlbWVudDpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnZhbHVlLXRoaXMuc3RlcCl9LF91cGRhdGVLbm9iOmZ1bmN0aW9uKGIsZCxmKXt0aGlzLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW1pbiIsZCk7dGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLGYpO3RoaXMuc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93IixiKTt0aGlzLl9wb3NpdGlvbktub2IoMTAwKnRoaXMuX2NhbGNSYXRpbyhiKSl9LF92YWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoInZhbHVlLWNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9pbW1lZGlhdGVWYWx1ZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmRyYWdnaW5nPwp0aGlzLmZpcmUoImltbWVkaWF0ZS12YWx1ZS1jaGFuZ2UiLHtjb21wb3NlZDohMH0pOnRoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZX0sX3NlY29uZGFyeVByb2dyZXNzQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuc2Vjb25kYXJ5UHJvZ3Jlc3M9dGhpcy5fY2xhbXBWYWx1ZSh0aGlzLnNlY29uZGFyeVByb2dyZXNzKX0sX2V4cGFuZEtub2I6ZnVuY3Rpb24oKXt0aGlzLl9zZXRFeHBhbmQoITApfSxfcmVzZXRLbm9iOmZ1bmN0aW9uKCl7dGhpcy5jYW5jZWxEZWJvdW5jZXIoImV4cGFuZEtub2IiKTt0aGlzLl9zZXRFeHBhbmQoITEpfSxfcG9zaXRpb25Lbm9iOmZ1bmN0aW9uKGIpe3RoaXMuX3NldEltbWVkaWF0ZVZhbHVlKHRoaXMuX2NhbGNTdGVwKHRoaXMuX2NhbGNLbm9iUG9zaXRpb24oYikpKTt0aGlzLl9zZXRSYXRpbygxMDAqdGhpcy5fY2FsY1JhdGlvKHRoaXMuaW1tZWRpYXRlVmFsdWUpKTt0aGlzLiQuc2xpZGVyS25vYi5zdHlsZS5sZWZ0PXRoaXMucmF0aW8rIiUiO3RoaXMuZHJhZ2dpbmcmJgoodGhpcy5fa25vYnN0YXJ0eD10aGlzLnJhdGlvKnRoaXMuX3cvMTAwLHRoaXMudHJhbnNsYXRlM2QoMCwwLDAsdGhpcy4kLnNsaWRlcktub2IpKX0sX2NhbGNLbm9iUG9zaXRpb246ZnVuY3Rpb24oYil7cmV0dXJuKHRoaXMubWF4LXRoaXMubWluKSpiLzEwMCt0aGlzLm1pbn0sX29uVHJhY2s6ZnVuY3Rpb24oYil7Yi5zdG9wUHJvcGFnYXRpb24oKTtzd2l0Y2goYi5kZXRhaWwuc3RhdGUpe2Nhc2UgInN0YXJ0Ijp0aGlzLl90cmFja1N0YXJ0KGIpO2JyZWFrO2Nhc2UgInRyYWNrIjp0aGlzLl90cmFja1goYik7YnJlYWs7Y2FzZSAiZW5kIjp0aGlzLl90cmFja0VuZCgpfX0sX3RyYWNrU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9zZXRUcmFuc2l0aW5nKCExKTt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dGhpcy5fa25vYnN0YXJ0eD10aGlzLl9zdGFydHg9dGhpcy5feD10aGlzLnJhdGlvKnRoaXMuX3cvMTAwO3RoaXMuX21pbng9LXRoaXMuX3N0YXJ0eDt0aGlzLl9tYXh4PQp0aGlzLl93LXRoaXMuX3N0YXJ0eDt0aGlzLiQuc2xpZGVyS25vYi5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZyIpO3RoaXMuX3NldERyYWdnaW5nKCEwKX0sX3RyYWNrWDpmdW5jdGlvbihiKXt0aGlzLmRyYWdnaW5nfHx0aGlzLl90cmFja1N0YXJ0KGIpO3RoaXMuX3g9dGhpcy5fc3RhcnR4K01hdGgubWluKHRoaXMuX21heHgsTWF0aC5tYXgodGhpcy5fbWlueCxiLmRldGFpbC5keCoodGhpcy5faXNSVEw/LTE6MSkpKTt0aGlzLl9zZXRJbW1lZGlhdGVWYWx1ZSh0aGlzLl9jYWxjU3RlcCh0aGlzLl9jYWxjS25vYlBvc2l0aW9uKHRoaXMuX3gvdGhpcy5fdyoxMDApKSk7dGhpcy50cmFuc2xhdGUzZCh0aGlzLl9jYWxjUmF0aW8odGhpcy5pbW1lZGlhdGVWYWx1ZSkqdGhpcy5fdy10aGlzLl9rbm9ic3RhcnR4KyJweCIsMCwwLHRoaXMuJC5zbGlkZXJLbm9iKX0sX3RyYWNrRW5kOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kLnNsaWRlcktub2Iuc3R5bGU7dGhpcy4kLnNsaWRlcktub2IuY2xhc3NMaXN0LnJlbW92ZSgiZHJhZ2dpbmciKTsKdGhpcy5fc2V0RHJhZ2dpbmcoITEpO3RoaXMuX3Jlc2V0S25vYigpO3RoaXMudmFsdWU9dGhpcy5pbW1lZGlhdGVWYWx1ZTtiLnRyYW5zZm9ybT1iLndlYmtpdFRyYW5zZm9ybT0iIjt0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9LF9rbm9iZG93bjpmdW5jdGlvbihiKXt0aGlzLl9leHBhbmRLbm9iKCk7Yi5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuZm9jdXMoKX0sX2JhcnRyYWNrOmZ1bmN0aW9uKGIpe3RoaXMuX2FsbG93QmFyRXZlbnQoYikmJnRoaXMuX29uVHJhY2soYil9LF9iYXJjbGljazpmdW5jdGlvbihiKXt0aGlzLl93PXRoaXMuJC5zbGlkZXJCYXIub2Zmc2V0V2lkdGg7dmFyIGQ9dGhpcy4kLnNsaWRlckJhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtkPShiLmRldGFpbC54LWQubGVmdCkvdGhpcy5fdyoxMDA7dGhpcy5faXNSVEwmJihkPTEwMC1kKTt2YXIgZj10aGlzLnJhdGlvO3RoaXMuX3NldFRyYW5zaXRpbmcoITApO3RoaXMuX3Bvc2l0aW9uS25vYihkKTsKZj09PXRoaXMucmF0aW8mJnRoaXMuX3NldFRyYW5zaXRpbmcoITEpO3RoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLmZpcmUoImNoYW5nZSIse2NvbXBvc2VkOiEwfSl9KTtiLnByZXZlbnREZWZhdWx0KCk7dGhpcy5mb2N1cygpfSxfYmFyZG93bjpmdW5jdGlvbihiKXt0aGlzLl9hbGxvd0JhckV2ZW50KGIpJiYodGhpcy5kZWJvdW5jZSgiZXhwYW5kS25vYiIsdGhpcy5fZXhwYW5kS25vYiw2MCksdGhpcy5fYmFyY2xpY2soYikpfSxfa25vYlRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oYil7Yi50YXJnZXQ9PT10aGlzLiQuc2xpZGVyS25vYiYmdGhpcy5fc2V0VHJhbnNpdGluZyghMSl9LF91cGRhdGVNYXJrZXJzOmZ1bmN0aW9uKGIsZCxmLGgpe2h8fHRoaXMuX3NldE1hcmtlcnMoW10pO2Q9TWF0aC5yb3VuZCgoZi1kKS90aGlzLnN0ZXApO2Q+YiYmKGQ9Yik7aWYoMD5kfHwhaXNGaW5pdGUoZCkpZD0wO3RoaXMuX3NldE1hcmtlcnMoQXJyYXkoZCkpfSxfbWVyZ2VDbGFzc2VzOmZ1bmN0aW9uKGIpe3JldHVybiBPYmplY3Qua2V5cyhiKS5maWx0ZXIoZnVuY3Rpb24oZCl7cmV0dXJuIGJbZF19KS5qb2luKCIgIil9LApfZ2V0Q2xhc3NOYW1lczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tZXJnZUNsYXNzZXMoe2Rpc2FibGVkOnRoaXMuZGlzYWJsZWQscGluOnRoaXMucGluLHNuYXBzOnRoaXMuc25hcHMscmluZzp0aGlzLmltbWVkaWF0ZVZhbHVlPD10aGlzLm1pbixleHBhbmQ6dGhpcy5leHBhbmQsZHJhZ2dpbmc6dGhpcy5kcmFnZ2luZyx0cmFuc2l0aW5nOnRoaXMudHJhbnNpdGluZyxlZGl0YWJsZTp0aGlzLmVkaXRhYmxlfSl9LF9hbGxvd0JhckV2ZW50OmZ1bmN0aW9uKGIpe3JldHVybiF0aGlzLmlnbm9yZUJhclRvdWNofHxiLmRldGFpbC5zb3VyY2VFdmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnR9LGdldCBfaXNSVEwoKXt2b2lkIDA9PT10aGlzLl9faXNSVEwmJih0aGlzLl9faXNSVEw9InJ0bCI9PT13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzKS5kaXJlY3Rpb24pO3JldHVybiB0aGlzLl9faXNSVEx9LF9sZWZ0S2V5OmZ1bmN0aW9uKGIpe3RoaXMuX2lzUlRMP3RoaXMuX2luY3JlbWVudEtleShiKToKdGhpcy5fZGVjcmVtZW50S2V5KGIpfSxfcmlnaHRLZXk6ZnVuY3Rpb24oYil7dGhpcy5faXNSVEw/dGhpcy5fZGVjcmVtZW50S2V5KGIpOnRoaXMuX2luY3JlbWVudEtleShiKX0sX2luY3JlbWVudEtleTpmdW5jdGlvbihiKXt0aGlzLmRpc2FibGVkfHwoImVuZCI9PT1iLmRldGFpbC5rZXk/dGhpcy52YWx1ZT10aGlzLm1heDp0aGlzLmluY3JlbWVudCgpLHRoaXMuZmlyZSgiY2hhbmdlIiksYi5wcmV2ZW50RGVmYXVsdCgpKX0sX2RlY3JlbWVudEtleTpmdW5jdGlvbihiKXt0aGlzLmRpc2FibGVkfHwoImhvbWUiPT09Yi5kZXRhaWwua2V5P3RoaXMudmFsdWU9dGhpcy5taW46dGhpcy5kZWNyZW1lbnQoKSx0aGlzLmZpcmUoImNoYW5nZSIpLGIucHJldmVudERlZmF1bHQoKSl9LF9jaGFuZ2VWYWx1ZTpmdW5jdGlvbihiKXt0aGlzLnZhbHVlPWIudGFyZ2V0LnZhbHVlO3RoaXMuZmlyZSgiY2hhbmdlIix7Y29tcG9zZWQ6ITB9KX0sX2lucHV0S2V5RG93bjpmdW5jdGlvbihiKXtiLnN0b3BQcm9wYWdhdGlvbigpfSwKX2NyZWF0ZVJpcHBsZTpmdW5jdGlvbigpe3RoaXMuX3JpcHBsZUNvbnRhaW5lcj10aGlzLiQuc2xpZGVyS25vYjtyZXR1cm4gUG9seW1lci5QYXBlcklua3lGb2N1c0JlaGF2aW9ySW1wbC5fY3JlYXRlUmlwcGxlLmNhbGwodGhpcyl9LF9mb2N1c2VkQ2hhbmdlZDpmdW5jdGlvbihiKXtiJiZ0aGlzLmVuc3VyZVJpcHBsZSgpO3RoaXMuaGFzUmlwcGxlKCkmJih0aGlzLl9yaXBwbGUuc3R5bGUuZGlzcGxheT1iPyIiOiJub25lIix0aGlzLl9yaXBwbGUuaG9sZERvd249Yil9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtc2NhbGFyLWRhc2hib2FyZC90Zi1zbW9vdGhpbmctaW5wdXQuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtc21vb3RoaW5nLWlucHV0Iixwcm9wZXJ0aWVzOntzdGVwOk51bWJlcixtYXg6TnVtYmVyLG1pbjpOdW1iZXIsd2VpZ2h0Ont0eXBlOk51bWJlcix2YWx1ZTouNixub3RpZnk6ITB9LF9pbW1lZGlhdGVXZWlnaHROdW1iZXJGb3JQYXBlclNsaWRlcjp7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLG9ic2VydmVyOiJfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkIn0sX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dDp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLG9ic2VydmVyOiJfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Q2hhbmdlZCJ9fSxfdXBkYXRlV2VpZ2h0Ol8uZGVib3VuY2UoZnVuY3Rpb24oYil7dGhpcy53ZWlnaHQ9Yn0sMjUwKSxfaW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXJDaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy5faW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0PXRoaXMuX2ltbWVkaWF0ZVdlaWdodE51bWJlckZvclBhcGVyU2xpZGVyLnRvU3RyaW5nKCk7CnRoaXMuX3VwZGF0ZVdlaWdodC5jYWxsKHRoaXMsdGhpcy5faW1tZWRpYXRlV2VpZ2h0TnVtYmVyRm9yUGFwZXJTbGlkZXIpfSxfaW5wdXRXZWlnaHRTdHJpbmdGb3JQYXBlcklucHV0Q2hhbmdlZDpmdW5jdGlvbigpezA+K3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD90aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ9IjAiOjE8K3RoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dCYmKHRoaXMuX2lucHV0V2VpZ2h0U3RyaW5nRm9yUGFwZXJJbnB1dD0iMSIpO3ZhciBiPSt0aGlzLl9pbnB1dFdlaWdodFN0cmluZ0ZvclBhcGVySW5wdXQ7aXNOYU4oYil8fHRoaXMuX3VwZGF0ZVdlaWdodC5jYWxsKHRoaXMsYil9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtc2NhbGFyLWRhc2hib2FyZC90Zi1zY2FsYXItZGFzaGJvYXJkLmh0bWwuanMKUG9seW1lcih7aXM6InRmLXNjYWxhci1kYXNoYm9hcmQiLHByb3BlcnRpZXM6e19zaG93RG93bmxvYWRMaW5rczp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTpwZC5nZXRCb29sZWFuSW5pdGlhbGl6ZXIoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSxvYnNlcnZlcjoiX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXIifSxfc21vb3RoaW5nV2VpZ2h0Ont0eXBlOk51bWJlcixub3RpZnk6ITAsdmFsdWU6cGQuZ2V0TnVtYmVySW5pdGlhbGl6ZXIoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KSxvYnNlcnZlcjoiX3Ntb290aGluZ1dlaWdodE9ic2VydmVyIn0sX3Ntb290aGluZ0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVTbW9vdGhpbmdFbmFibGVkKF9zbW9vdGhpbmdXZWlnaHQpIn0sX2lnbm9yZVlPdXRsaWVyczp7dHlwZTpCb29sZWFuLHZhbHVlOnBkLmdldEJvb2xlYW5Jbml0aWFsaXplcigiX2lnbm9yZVlPdXRsaWVycyIsCntkZWZhdWx0VmFsdWU6ITAsdXNlTG9jYWxTdG9yYWdlOiEwfSksb2JzZXJ2ZXI6Il9pZ25vcmVZT3V0bGllcnNPYnNlcnZlciJ9LF94VHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6cmcuWFR5cGUuU1RFUH0sX3NlbGVjdGVkUnVuczp7dHlwZTpBcnJheSx2YWx1ZTooKT0+W119LF9ydW5Ub1RhZ0luZm86T2JqZWN0LF9kYXRhTm90Rm91bmQ6Qm9vbGVhbixfdGFnRmlsdGVyOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2NhdGVnb3JpZXNEb21SZWFkeTpCb29sZWFuLF9jYXRlZ29yaWVzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXX0sX2dldENhdGVnb3J5SXRlbUtleTp7dHlwZTpGdW5jdGlvbix2YWx1ZTooKT0+Yj0+Yi50YWd9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcig1MCl9fSxiZWhhdmlvcnM6W3FkLkFycmF5VXBkYXRlSGVscGVyXSxvYnNlcnZlcnM6WyJfdXBkYXRlQ2F0ZWdvcmllcyhfcnVuVG9UYWdJbmZvLCBfc2VsZWN0ZWRSdW5zLCBfdGFnRmlsdGVyLCBfY2F0ZWdvcmllc0RvbVJlYWR5KSJdLApfc2hvd0Rvd25sb2FkTGlua3NPYnNlcnZlcjpwZC5nZXRCb29sZWFuT2JzZXJ2ZXIoIl9zaG93RG93bmxvYWRMaW5rcyIse2RlZmF1bHRWYWx1ZTohMSx1c2VMb2NhbFN0b3JhZ2U6ITB9KSxfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXI6cGQuZ2V0TnVtYmVyT2JzZXJ2ZXIoIl9zbW9vdGhpbmdXZWlnaHQiLHtkZWZhdWx0VmFsdWU6LjZ9KSxfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXI6cGQuZ2V0Qm9vbGVhbk9ic2VydmVyKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pLF9jb21wdXRlU21vb3RoaW5nRW5hYmxlZChiKXtyZXR1cm4gMDxifSxfZ2V0Q2F0ZWdvcnlLZXkoYil7cmV0dXJuIGIubWV0YWRhdGEudHlwZT09JGMuQ2F0ZWdvcnlUeXBlLlNFQVJDSF9SRVNVTFRTPyIiOmIubmFtZX0sX3Nob3VsZE9wZW4oYil7cmV0dXJuIDI+PWJ9LHJlYWR5KCl7dGhpcy5yZWxvYWQoKX0scmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKT0+Cnt0aGlzLl9yZWxvYWRDaGFydHMoKX0pfSxfZmV0Y2hUYWdzKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgic2NhbGFycyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57aWYoIV8uaXNFcXVhbChkLHRoaXMuX3J1blRvVGFnSW5mbykpe3ZhciBmPV8ubWFwVmFsdWVzKGQsaD0+T2JqZWN0LmtleXMoaCkpO2Y9dmMuZ2V0VGFncyhmKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWYubGVuZ3RoKTt0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsZCk7dGhpcy5hc3luYygoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KX19KX0sX3JlbG9hZENoYXJ0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1zY2FsYXItY2FyZCIpLmZvckVhY2goYj0+e2IucmVsb2FkKCl9KX0sX3VwZGF0ZUNhdGVnb3JpZXMoYixkLGYpe2I9Xy5tYXBWYWx1ZXMoYixoPT5PYmplY3Qua2V5cyhoKSk7CmQ9JGMuY2F0ZWdvcml6ZVRhZ3MoYixkLGYpO2QuZm9yRWFjaChoPT57aC5pdGVtcz1oLml0ZW1zLm1hcChrPT4oe3RhZzprLnRhZyxzZXJpZXM6ay5ydW5zLm1hcCh0PT4oe3J1bjp0LHRhZzprLnRhZ30pKX0pKX0pO3RoaXMudXBkYXRlQXJyYXlQcm9wKCJfY2F0ZWdvcmllcyIsZCx0aGlzLl9nZXRDYXRlZ29yeUtleSl9LF90YWdNZXRhZGF0YShiLGQsZil7Y29uc3QgaD1mLnRhZyxrPXt9O2Yuc2VyaWVzLmZvckVhY2goKHtydW46cH0pPT57a1twXT1kW3BdW2hdfSk7Zj1oLnJlcGxhY2UoL1wvc2NhbGFyX3N1bW1hcnkkLywiIik7bGV0IHtkZXNjcmlwdGlvbjp0LGRpc3BsYXlOYW1lOmx9PXJmLmFnZ3JlZ2F0ZVRhZ0luZm8oayxmKTtiLm1ldGFkYXRhLnR5cGU9PSRjLkNhdGVnb3J5VHlwZS5QUkVGSVhfR1JPVVAmJmwuc3RhcnRzV2l0aChiLm5hbWUrIi8iKSYmKGw9bC5zbGljZShiLm5hbWUubGVuZ3RoKzEpKTtyZXR1cm57ZGVzY3JpcHRpb246dCxkaXNwbGF5TmFtZTpsfX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZC90Zi1jdXN0b20tc2NhbGFyLWhlbHBlcnMuanMKdmFyIFRpOwooZnVuY3Rpb24oYil7Y2xhc3MgZHtjb25zdHJ1Y3RvcihoLGssdCxsLHApe3RoaXMucnVuPWg7dGhpcy50YWc9azt0aGlzLm5hbWU9dDt0aGlzLnNjYWxhckRhdGE9bDt0aGlzLnN5bWJvbD1wfWdldE5hbWUoKXtyZXR1cm4gdGhpcy5uYW1lfXNldERhdGEoaCl7dGhpcy5zY2FsYXJEYXRhPWh9Z2V0RGF0YSgpe3JldHVybiB0aGlzLnNjYWxhckRhdGF9Z2V0UnVuKCl7cmV0dXJuIHRoaXMucnVufWdldFRhZygpe3JldHVybiB0aGlzLnRhZ31nZXRTeW1ib2woKXtyZXR1cm4gdGhpcy5zeW1ib2x9fWIuRGF0YVNlcmllcz1kO2IuZ2VuZXJhdGVEYXRhU2VyaWVzTmFtZT1mdW5jdGlvbihoLGspe3JldHVybmAke2t9ICgke2h9KWB9O2NsYXNzIGZ7Y29uc3RydWN0b3IoaCl7dGhpcy5ydW5CYXNlZENvbG9yU2NhbGU9aH1zY2FsZShoKXtyZXR1cm4gdGhpcy5ydW5CYXNlZENvbG9yU2NhbGUuc2NhbGUodGhpcy5wYXJzZVJ1bk5hbWUoaCkpfXBhcnNlUnVuTmFtZShoKXtyZXR1cm4oaD1oLm1hdGNoKC9cKCguKilcKSQvKSk/CmhbMV06IiJ9fWIuRGF0YVNlcmllc0NvbG9yU2NhbGU9Zn0pKFRpfHwoVGk9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1jdXN0b20tc2NhbGFyLWRhc2hib2FyZC90Zi1jdXN0b20tc2NhbGFyLW1hcmdpbi1jaGFydC1jYXJkLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQiLHByb3BlcnRpZXM6e3J1bnM6QXJyYXkseFR5cGU6U3RyaW5nLGFjdGl2ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiEwLHJlYWRPbmx5OiEwfSx0aXRsZTpTdHJpbmcsbWFyZ2luQ2hhcnRTZXJpZXM6QXJyYXksaWdub3JlWU91dGxpZXJzOkJvb2xlYW4scmVxdWVzdE1hbmFnZXI6T2JqZWN0LHNob3dEb3dubG9hZExpbmtzOkJvb2xlYW4sdGFnTWV0YWRhdGE6T2JqZWN0LHRvb2x0aXBTb3J0aW5nTWV0aG9kOlN0cmluZyxfY29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6bmV3IFRpLkRhdGFTZXJpZXNDb2xvclNjYWxlKHtzY2FsZTpwZi5ydW5zQ29sb3JTY2FsZX0pLHJlYWRPbmx5OiEwfSxfdGFnRmlsdGVyOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIobWFyZ2luQ2hhcnRTZXJpZXMpIn0sX3RhZ0ZpbHRlckludmFsaWQ6Qm9vbGVhbixfbmFtZVRvRGF0YVNlcmllczp7dHlwZTpPYmplY3QsCnZhbHVlOigpPT4oe30pfSxfc2VyaWVzTmFtZXM6e3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfY29tcHV0ZVNlcmllc05hbWVzKF9uYW1lVG9EYXRhU2VyaWVzLCBydW5zKSJ9LF9leHBhbmRlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2xvZ1NjYWxlQWN0aXZlOkJvb2xlYW4sX2RhdGFVcmw6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYj0+e2NvbnN0IGQ9dGhpcy5fdGFnRmlsdGVyO3JldHVybiB2Yy5hZGRQYXJhbXModmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL3NjYWxhcnMiKSx7dGFnOmQscnVuOmJ9KX19fSxfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfbWF0Y2hlc0xpc3RPcGVuZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3RpdGxlRGlzcGxheVN0cmluZzp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlVGl0bGVEaXNwbGF5U3RyaW5nKHRpdGxlKSJ9LApfZmlsbEFyZWE6e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLHZhbHVlOntsb3dlckFjY2Vzc29yOmI9PmIubG93ZXIsaGlnaGVyQWNjZXNzb3I6Yj0+Yi51cHBlcn19LF90b29sdGlwQ29sdW1uczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe2NvbnN0IGI9cmcubXVsdGlzY2FsZUZvcm1hdHRlcihyZy5ZX1RPT0xUSVBfRk9STUFUVEVSX1BSRUNJU0lPTiksZD1mPT5pc05hTihmKT8iTmFOIjpiKGYpO3JldHVyblt7dGl0bGU6Ik5hbWUiLGV2YWx1YXRlOmY9PmYuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWV9LHt0aXRsZToiVmFsdWUiLGV2YWx1YXRlOmY9PmQoZi5kYXR1bS5zY2FsYXIpfSx7dGl0bGU6Ikxvd2VyIE1hcmdpbiIsZXZhbHVhdGU6Zj0+ZChmLmRhdHVtLmxvd2VyKX0se3RpdGxlOiJVcHBlciBNYXJnaW4iLGV2YWx1YXRlOmY9PmQoZi5kYXR1bS51cHBlcil9LHt0aXRsZToiU3RlcCIsZXZhbHVhdGU6Zj0+cmcuc3RlcEZvcm1hdHRlcihmLmRhdHVtLnN0ZXApfSx7dGl0bGU6IlRpbWUiLApldmFsdWF0ZTpmPT5yZy50aW1lRm9ybWF0dGVyKGYuZGF0dW0ud2FsbF90aW1lKX0se3RpdGxlOiJSZWxhdGl2ZSIsZXZhbHVhdGU6Zj0+cmcucmVsYXRpdmVGb3JtYXR0ZXIocmcucmVsYXRpdmVBY2Nlc3NvcihmLmRhdHVtLC0xLGYuZGF0YXNldCkpfV19fSxfbWlzc2luZ1RhZ3M6e3R5cGU6QXJyYXksdmFsdWU6W119LF9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9zdGVwc01pc21hdGNoOk9iamVjdH0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZUNoYXJ0KF9uYW1lVG9EYXRhU2VyaWVzKSIsIl9yZWZyZXNoRGF0YVNlcmllcyhfdGFnRmlsdGVyKSJdLHJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9LHJlZHJhdygpe3RoaXMuJC5sb2FkZXIucmVkcmF3KCl9LF90b2dnbGVFeHBhbmRlZCgpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCk7dGhpcy5yZWRyYXcoKX0sX3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsCiF0aGlzLl9sb2dTY2FsZUFjdGl2ZSl9LF9yZXNldERvbWFpbigpe2NvbnN0IGI9dGhpcy4kLmxvYWRlcjtiJiZiLnJlc2V0RG9tYWluKCl9LF9jc3ZVcmwoYixkKXtpZighZClyZXR1cm4iIjtiPXRoaXMuX2Rvd25sb2FkRGF0YVVybChiLGQpO3JldHVybiB2Yy5hZGRQYXJhbXMoYix7Zm9ybWF0OiJjc3YifSl9LF9qc29uVXJsKGIsZCl7aWYoIWQpcmV0dXJuIiI7Yj10aGlzLl9kb3dubG9hZERhdGFVcmwoYixkKTtyZXR1cm4gdmMuYWRkUGFyYW1zKGIse2Zvcm1hdDoianNvbiJ9KX0sX2Rvd25sb2FkRGF0YVVybChiLGQpe2I9YltkXTtiPXt0YWc6Yi5nZXRUYWcoKSxydW46Yi5nZXRSdW4oKX07cmV0dXJuIHZjLmFkZFBhcmFtcyh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvZG93bmxvYWRfZGF0YSIpLGIpfSxfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbihiKXtyZXR1cm4oZCxmLGgpPT57aWYoaC5yZWdleF92YWxpZCl7dmFyIGs9Xy5jbG9uZSh0aGlzLl9uYW1lVG9EYXRhU2VyaWVzKSwKdD1bXTtfLmZvckVhY2goYixsPT57dmFyIHA9ITEsbT1oLnRhZ190b19ldmVudHNbbC52YWx1ZV07Y29uc3Qgbj1oLnRhZ190b19ldmVudHNbbC5sb3dlcl0scT1oLnRhZ190b19ldmVudHNbbC51cHBlcl07Xy5pc1VuZGVmaW5lZChtKSYmKHQucHVzaChsLnZhbHVlKSxwPSEwKTtfLmlzVW5kZWZpbmVkKG4pJiYodC5wdXNoKGwubG93ZXIpLHA9ITApO18uaXNVbmRlZmluZWQocSkmJih0LnB1c2gobC51cHBlcikscD0hMCk7aWYoIXApe3ZhciB1PXk9PnlbMV07aWYocD10aGlzLl9maW5kU3RlcE1pc21hdGNoKGwsbS5tYXAodSksbi5tYXAodSkscS5tYXAodSkpKXRoaXMuc2V0KCJfc3RlcHNNaXNtYXRjaCIscCk7ZWxzZXt2YXIgeD15PT55WzJdO3A9bS5tYXAoKHksdyk9Pih7d2FsbF90aW1lOm5ldyBEYXRlKDFFMyp5WzBdKSxzdGVwOnUoeSksc2NhbGFyOngoeSksbG93ZXI6eChuW3ddKSx1cHBlcjp4KHFbd10pfSkpO209VGkuZ2VuZXJhdGVEYXRhU2VyaWVzTmFtZShmLGwudmFsdWUpOwp2YXIgQT1rW21dO0E/QS5zZXREYXRhKHApOihsPXRoaXMuX2NyZWF0ZU5ld0RhdGFTZXJpZXMoZixsLnZhbHVlLG0scCksa1ttXT1sKX19fSk7dGhpcy5zZXQoIl9uYW1lVG9EYXRhU2VyaWVzIixrKTtkPV8uZmluZEluZGV4KHRoaXMuX21pc3NpbmdUYWdzLGw9PmwucnVuPT09Zik7aWYodC5sZW5ndGgmJjMhPXQubGVuZ3RoKXtjb25zdCBsPXtydW46Zix0YWdzOnR9OzA8PWQ/dGhpcy5zcGxpY2UoIl9taXNzaW5nVGFncyIsZCwxLGwpOnRoaXMucHVzaCgiX21pc3NpbmdUYWdzIixsKX1lbHNlIDA8PWQmJnRoaXMuc3BsaWNlKCJfbWlzc2luZ1RhZ3MiLGQsMSl9ZWxzZSB0aGlzLnNldCgiX3RhZ0ZpbHRlckludmFsaWQiLCEwKX19LF9maW5kU3RlcE1pc21hdGNoKGIsZCxmLGgpe3JldHVybiBfLmlzRXF1YWwoZixkKSYmXy5pc0VxdWFsKGgsZCk/bnVsbDp7c2VyaWVzT2JqZWN0OmIsdmFsdWVTdGVwczpkLGxvd2VyU3RlcHM6Zix1cHBlclN0ZXBzOmh9fSxfY3JlYXRlTmV3RGF0YVNlcmllcyhiLApkLGYsaCl7dGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbYl18PTA7ZD1uZXcgVGkuRGF0YVNlcmllcyhiLGQsZixoLHJnLlNZTUJPTFNfTElTVFt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtiXV0pO3RoaXMuX3J1blRvTmV4dEF2YWlsYWJsZVN5bWJvbEluZGV4W2JdPSh0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtiXSsxKSVyZy5TWU1CT0xTX0xJU1QubGVuZ3RoO3JldHVybiBkfSxfdXBkYXRlQ2hhcnQoYil7Xy5mb3JPd24oYixkPT57dGhpcy4kLmxvYWRlci5zZXRTZXJpZXNEYXRhKGQuZ2V0TmFtZSgpLGQuZ2V0RGF0YSgpKX0pfSxfY29tcHV0ZVNlcmllc05hbWVzKCl7Y29uc3QgYj1uZXcgU2V0KHRoaXMucnVucyk7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuX25hbWVUb0RhdGFTZXJpZXMpLmZpbHRlcigoWyxkXSk9PmIuaGFzKGQucnVuKSkubWFwKChbZF0pPT5kKX0sX2RldGVybWluZUNvbG9yKGIsZCl7cmV0dXJuIGIuc2NhbGUoZCl9LApfcmVmcmVzaERhdGFTZXJpZXMoKXt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLHt9KX0sX2NyZWF0ZVN5bWJvbEZ1bmN0aW9uKCl7cmV0dXJuIGI9PnRoaXMuX25hbWVUb0RhdGFTZXJpZXNbYl0uZ2V0U3ltYm9sKCkubWV0aG9kKCl9LF9kZXRlcm1pbmVTeW1ib2woYixkKXtyZXR1cm4gYltkXS5nZXRTeW1ib2woKS5jaGFyYWN0ZXJ9LF9jb21wdXRlVGFnRmlsdGVyKGIpe3JldHVybiBfLmZsYXR0ZW4oYi5tYXAoZD0+W2QudmFsdWUsZC5sb3dlcixkLnVwcGVyXSkpLm1hcChkPT4iKCIrdGhpcy5fZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKGQpKyIpIikuam9pbigifCIpfSxfZXNjYXBlUmVnZXhDaGFyYWN0ZXJzKGIpe3JldHVybiBiLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCJcXCRceDI2Iil9LF9nZXRUb2dnbGVDb2xsYXBzaWJsZUljb24oYil7cmV0dXJuIGI/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifSxfdG9nZ2xlTWF0Y2hlc09wZW4oKXt0aGlzLnNldCgiX21hdGNoZXNMaXN0T3BlbmVkIiwKIXRoaXMuX21hdGNoZXNMaXN0T3BlbmVkKX0sX2NvbXB1dGVUaXRsZURpc3BsYXlTdHJpbmcoYil7cmV0dXJuIGJ8fCJ1bnRpdGxlZCJ9LF9zZXBhcmF0ZVdpdGhDb21tYXMoYil7cmV0dXJuIGIuam9pbigiLCAiKX0sX3RvZ2dsZU1pc3NpbmdUYWdzQ29sbGFwc2libGVPcGVuKCl7dGhpcy5zZXQoIl9taXNzaW5nVGFnc0NvbGxhcHNpYmxlT3BlbmVkIiwhdGhpcy5fbWlzc2luZ1RhZ3NDb2xsYXBzaWJsZU9wZW5lZCl9LF9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCgpe2NvbnN0IGI9dGhpcy4kJCgiI21hdGNoLWxpc3QtcmVwZWF0Iik7YiYmdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXRjaC1saXN0LWVudHJ5IikuZm9yRWFjaChkPT57Y29uc3QgZj1iLml0ZW1Gb3JFbGVtZW50KGQpO2Quc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxmKX0pfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWN1c3RvbS1zY2FsYXItZGFzaGJvYXJkL3RmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkIixwcm9wZXJ0aWVzOntydW5zOkFycmF5LHhUeXBlOlN0cmluZyxhY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxyZWFkT25seTohMH0sdGl0bGU6U3RyaW5nLHRhZ1JlZ2V4ZXM6QXJyYXksaWdub3JlWU91dGxpZXJzOkJvb2xlYW4scmVxdWVzdE1hbmFnZXI6T2JqZWN0LHNob3dEb3dubG9hZExpbmtzOkJvb2xlYW4sc21vb3RoaW5nRW5hYmxlZDpCb29sZWFuLHNtb290aGluZ1dlaWdodDpOdW1iZXIsdGFnTWV0YWRhdGE6T2JqZWN0LHRvb2x0aXBTb3J0aW5nTWV0aG9kOlN0cmluZyxfY29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6bmV3IFRpLkRhdGFTZXJpZXNDb2xvclNjYWxlKHtzY2FsZTpwZi5ydW5zQ29sb3JTY2FsZX0pLHJlYWRPbmx5OiEwfSxfdGFnRmlsdGVyOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVUYWdGaWx0ZXIodGFnUmVnZXhlcykifSxfbmFtZVRvRGF0YVNlcmllczp7dHlwZTpPYmplY3QsCnZhbHVlOigpPT4oe30pfSxfc2VyaWVzTmFtZXM6e3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfY29tcHV0ZVNlcmllc05hbWVzKF9uYW1lVG9EYXRhU2VyaWVzLCBydW5zKSJ9LF9leHBhbmRlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2xvZ1NjYWxlQWN0aXZlOkJvb2xlYW4sX2RhdGFVcmw6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYj0+e2NvbnN0IGQ9dGhpcy5fdGFnRmlsdGVyO3JldHVybiB2Yy5hZGRQYXJhbXModmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImN1c3RvbV9zY2FsYXJzIiwiL3NjYWxhcnMiKSx7dGFnOmQscnVuOmJ9KX19fSxfcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXg6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfbWF0Y2hlc0xpc3RPcGVuZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3RpdGxlRGlzcGxheVN0cmluZzp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlVGl0bGVEaXNwbGF5U3RyaW5nKHRpdGxlKSJ9fSwKb2JzZXJ2ZXJzOlsiX3VwZGF0ZUNoYXJ0KF9uYW1lVG9EYXRhU2VyaWVzKSIsIl9yZWZyZXNoRGF0YVNlcmllcyhfdGFnRmlsdGVyKSJdLHJlbG9hZCgpe3RoaXMuJC5sb2FkZXIucmVsb2FkKCl9LHJlZHJhdygpe3RoaXMuJC5sb2FkZXIucmVkcmF3KCl9LF90b2dnbGVFeHBhbmRlZCgpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCk7dGhpcy5yZWRyYXcoKX0sX3RvZ2dsZUxvZ1NjYWxlKCl7dGhpcy5zZXQoIl9sb2dTY2FsZUFjdGl2ZSIsIXRoaXMuX2xvZ1NjYWxlQWN0aXZlKX0sX3Jlc2V0RG9tYWluKCl7Y29uc3QgYj10aGlzLiQubG9hZGVyO2ImJmIucmVzZXREb21haW4oKX0sX2NzdlVybChiLGQpe2lmKCFkKXJldHVybiIiO2I9dGhpcy5fZG93bmxvYWREYXRhVXJsKGIsZCk7cmV0dXJuIHZjLmFkZFBhcmFtcyhiLHtmb3JtYXQ6ImNzdiJ9KX0sX2pzb25VcmwoYixkKXtpZighZClyZXR1cm4iIjtiPXRoaXMuX2Rvd25sb2FkRGF0YVVybChiLGQpO3JldHVybiB2Yy5hZGRQYXJhbXMoYiwKe2Zvcm1hdDoianNvbiJ9KX0sX2Rvd25sb2FkRGF0YVVybChiLGQpe2I9YltkXTtiPXt0YWc6Yi5nZXRUYWcoKSxydW46Yi5nZXRSdW4oKX07cmV0dXJuIHZjLmFkZFBhcmFtcyh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvZG93bmxvYWRfZGF0YSIpLGIpfSxfY3JlYXRlUHJvY2Vzc0RhdGFGdW5jdGlvbigpe3JldHVybihiLGQsZik9PntpZihmLnJlZ2V4X3ZhbGlkKXtjb25zdCBoPV8uY2xvbmUodGhpcy5fbmFtZVRvRGF0YVNlcmllcyk7Xy5mb3JPd24oZi50YWdfdG9fZXZlbnRzLChrLHQpPT57Y29uc3QgbD1rLm1hcChtPT4oe3dhbGxfdGltZTpuZXcgRGF0ZSgxRTMqbVswXSksc3RlcDptWzFdLHNjYWxhcjptWzJdfSkpO2s9VGkuZ2VuZXJhdGVEYXRhU2VyaWVzTmFtZShkLHQpO2NvbnN0IHA9aFtrXTtwP3Auc2V0RGF0YShsKTooXy5pc1VuZGVmaW5lZCh0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtkXSkmJih0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtkXT0KMCksdD1uZXcgVGkuRGF0YVNlcmllcyhkLHQsayxsLHJnLlNZTUJPTFNfTElTVFt0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtkXV0pLGhba109dCx0aGlzLl9ydW5Ub05leHRBdmFpbGFibGVTeW1ib2xJbmRleFtkXT0odGhpcy5fcnVuVG9OZXh0QXZhaWxhYmxlU3ltYm9sSW5kZXhbZF0rMSklcmcuU1lNQk9MU19MSVNULmxlbmd0aCl9KTt0aGlzLnNldCgiX25hbWVUb0RhdGFTZXJpZXMiLGgpfX19LF91cGRhdGVDaGFydChiKXtPYmplY3QuZW50cmllcyhiKS5mb3JFYWNoKChbZCxmXSk9Pnt0aGlzLiQubG9hZGVyLnNldFNlcmllc0RhdGEoZCxmLmdldERhdGEoKSl9KX0sX2NvbXB1dGVTZWxlY3RlZFJ1bnNTZXQoYil7Y29uc3QgZD17fTtfLmZvckVhY2goYixmPT57ZFtmXT0xfSk7cmV0dXJuIGR9LF9jb21wdXRlU2VyaWVzTmFtZXMoKXtjb25zdCBiPW5ldyBTZXQodGhpcy5ydW5zKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModGhpcy5fbmFtZVRvRGF0YVNlcmllcykuZmlsdGVyKChbLApkXSk9PmIuaGFzKGQucnVuKSkubWFwKChbZF0pPT5kKX0sX2RldGVybWluZUNvbG9yKGIsZCl7cmV0dXJuIGIuc2NhbGUoZCl9LF9yZWZyZXNoRGF0YVNlcmllcygpe3RoaXMuc2V0KCJfbmFtZVRvRGF0YVNlcmllcyIse30pfSxfY3JlYXRlU3ltYm9sRnVuY3Rpb24oKXtyZXR1cm4gYj0+dGhpcy5fbmFtZVRvRGF0YVNlcmllc1tiXS5nZXRTeW1ib2woKS5tZXRob2QoKX0sX2RldGVybWluZVN5bWJvbChiLGQpe3JldHVybiBiW2RdLmdldFN5bWJvbCgpLmNoYXJhY3Rlcn0sX2NvbXB1dGVUYWdGaWx0ZXIoYil7cmV0dXJuIDE9PT1iLmxlbmd0aD9iWzBdOmIubWFwKGQ9PiIoIitkKyIpIikuam9pbigifCIpfSxfZ2V0VG9nZ2xlTWF0Y2hlc0ljb24oYil7cmV0dXJuIGI/ImV4cGFuZC1sZXNzIjoiZXhwYW5kLW1vcmUifSxfdG9nZ2xlTWF0Y2hlc09wZW4oKXt0aGlzLnNldCgiX21hdGNoZXNMaXN0T3BlbmVkIiwhdGhpcy5fbWF0Y2hlc0xpc3RPcGVuZWQpfSxfY29tcHV0ZVRpdGxlRGlzcGxheVN0cmluZyhiKXtyZXR1cm4gYnx8CiJ1bnRpdGxlZCJ9LF9tYXRjaExpc3RFbnRyeUNvbG9yVXBkYXRlZCgpe2NvbnN0IGI9dGhpcy4kJCgiI21hdGNoLWxpc3QtcmVwZWF0Iik7YiYmdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tYXRjaC1saXN0LWVudHJ5IikuZm9yRWFjaChkPT57Y29uc3QgZj1iLml0ZW1Gb3JFbGVtZW50KGQpO2Quc3R5bGUuY29sb3I9dGhpcy5fZGV0ZXJtaW5lQ29sb3IodGhpcy5fY29sb3JTY2FsZSxmKX0pfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWN1c3RvbS1zY2FsYXItZGFzaGJvYXJkL3RmLWN1c3RvbS1zY2FsYXItZGFzaGJvYXJkLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWN1c3RvbS1zY2FsYXItZGFzaGJvYXJkIixwcm9wZXJ0aWVzOntfcmVxdWVzdE1hbmFnZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuUmVxdWVzdE1hbmFnZXIoNTApfSxfY2FuY2VsbGVyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLkNhbmNlbGxlcn0sX3NlbGVjdGVkUnVuczpBcnJheSxfc2hvd0Rvd25sb2FkTGlua3M6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsdmFsdWU6cGQuZ2V0Qm9vbGVhbkluaXRpYWxpemVyKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSksb2JzZXJ2ZXI6Il9zaG93RG93bmxvYWRMaW5rc09ic2VydmVyIn0sX3Ntb290aGluZ0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVTbW9vdGhpbmdFbmFibGVkKF9zbW9vdGhpbmdXZWlnaHQpIn0sX3Ntb290aGluZ1dlaWdodDp7dHlwZTpOdW1iZXIsbm90aWZ5OiEwLHZhbHVlOnBkLmdldE51bWJlckluaXRpYWxpemVyKCJfc21vb3RoaW5nV2VpZ2h0IiwKe2RlZmF1bHRWYWx1ZTouNn0pLG9ic2VydmVyOiJfc21vb3RoaW5nV2VpZ2h0T2JzZXJ2ZXIifSxfaWdub3JlWU91dGxpZXJzOnt0eXBlOkJvb2xlYW4sdmFsdWU6cGQuZ2V0Qm9vbGVhbkluaXRpYWxpemVyKCJfaWdub3JlWU91dGxpZXJzIix7ZGVmYXVsdFZhbHVlOiEwLHVzZUxvY2FsU3RvcmFnZTohMH0pLG9ic2VydmVyOiJfaWdub3JlWU91dGxpZXJzT2JzZXJ2ZXIifSxfeFR5cGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJzdGVwIn0sX2xheW91dDpPYmplY3QsX2RhdGFOb3RGb3VuZDpCb29sZWFuLF9jYXRlZ29yaWVzOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfbWFrZUNhdGVnb3JpZXMoX2xheW91dCkifSxfb3BlbmVkQ2F0ZWdvcmllczp7dHlwZTpPYmplY3R9LF9hY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxyZWFkT25seTohMH19LHJlYWR5KCl7dGhpcy5yZWxvYWQoKX0scmVsb2FkKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5zTGlzdGluZygpLGQ9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKGY9Pgp7Zi5jYW5jZWxsZWR8fCh0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsIWYudmFsdWUuY3VzdG9tX3NjYWxhcnMpLHRoaXMuX2RhdGFOb3RGb3VuZHx8dGhpcy5fcmV0cmlldmVMYXlvdXRBbmREYXRhKCkpfSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKS50aGVuKGQpfSxfcmVsb2FkQ2hhcnRzKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWN1c3RvbS1zY2FsYXItbWFyZ2luLWNoYXJ0LWNhcmQsIHRmLWN1c3RvbS1zY2FsYXItbXVsdGktbGluZS1jaGFydC1jYXJkIikuZm9yRWFjaChiPT57Yi5yZWxvYWQoKX0pfSxfcmV0cmlldmVMYXlvdXRBbmREYXRhKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiY3VzdG9tX3NjYWxhcnMiLCIvbGF5b3V0IiksZD10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoZj0+e2YuY2FuY2VsbGVkfHwodGhpcy5zZXQoIl9sYXlvdXQiLGYudmFsdWUpLHRoaXMuX2RhdGFOb3RGb3VuZHx8dGhpcy5fcmVsb2FkQ2hhcnRzKCkpfSk7CnRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkKX0sX3Nob3dEb3dubG9hZExpbmtzT2JzZXJ2ZXI6cGQuZ2V0Qm9vbGVhbk9ic2VydmVyKCJfc2hvd0Rvd25sb2FkTGlua3MiLHtkZWZhdWx0VmFsdWU6ITEsdXNlTG9jYWxTdG9yYWdlOiEwfSksX3Ntb290aGluZ1dlaWdodE9ic2VydmVyOnBkLmdldE51bWJlck9ic2VydmVyKCJfc21vb3RoaW5nV2VpZ2h0Iix7ZGVmYXVsdFZhbHVlOi42fSksX2lnbm9yZVlPdXRsaWVyc09ic2VydmVyOnBkLmdldEJvb2xlYW5PYnNlcnZlcigiX2lnbm9yZVlPdXRsaWVycyIse2RlZmF1bHRWYWx1ZTohMCx1c2VMb2NhbFN0b3JhZ2U6ITB9KSxfY29tcHV0ZVNtb290aGluZ0VuYWJsZWQoYil7cmV0dXJuIDA8Yn0sX21ha2VDYXRlZ29yaWVzKGIpe2lmKCFiLmNhdGVnb3J5KXJldHVybltdO2xldCBkPSExO3RoaXMuX29wZW5lZENhdGVnb3JpZXN8fChkPSEwLHRoaXMuX29wZW5lZENhdGVnb3JpZXM9e30pO3JldHVybiBiLmNhdGVnb3J5Lm1hcChmPT4Ke2QmJiFmLmNsb3NlZCYmKHRoaXMuX29wZW5lZENhdGVnb3JpZXNbZi50aXRsZV09ITApO3JldHVybntuYW1lOmYudGl0bGUsaXRlbXM6Zi5jaGFydCxtZXRhZGF0YTp7b3BlbmVkOiEhdGhpcy5fb3BlbmVkQ2F0ZWdvcmllc1tmLnRpdGxlXX19fSl9LF9jYXRlZ29yeU9wZW5lZFRvZ2dsZWQoYil7Yj1iLnRhcmdldDtiLm9wZW5lZD90aGlzLl9vcGVuZWRDYXRlZ29yaWVzW2IuY2F0ZWdvcnkubmFtZV09ITA6ZGVsZXRlIHRoaXMuX29wZW5lZENhdGVnb3JpZXNbYi5jYXRlZ29yeS5uYW1lXX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1pbWFnZS1kYXNoYm9hcmQvdGYtaW1hZ2UtbG9hZGVyLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWltYWdlLWxvYWRlciIscHJvcGVydGllczp7cnVuOlN0cmluZyx0YWc6U3RyaW5nLHNhbXBsZTpOdW1iZXIsb2ZTYW1wbGVzOk51bWJlcix0YWdNZXRhZGF0YTpPYmplY3QsX3J1bkNvbG9yOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihydW4pIn0sYWN0dWFsU2l6ZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sYnJpZ2h0bmVzc0FkanVzdG1lbnQ6e3R5cGU6TnVtYmVyLHZhbHVlOi41fSxjb250cmFzdFBlcmNlbnRhZ2U6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LHJlcXVlc3RNYW5hZ2VyOk9iamVjdCxfbWV0YWRhdGFDYW5jZWxsZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuQ2FuY2VsbGVyfSxfaW1hZ2VDYW5jZWxsZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuQ2FuY2VsbGVyfSxfc3RlcHM6e3R5cGU6QXJyYXksdmFsdWU6W10sbm90aWZ5OiEwfSxfc3RlcEluZGV4Ont0eXBlOk51bWJlciwKbm90aWZ5OiEwfSxfY3VycmVudFN0ZXA6e3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfY29tcHV0ZUN1cnJlbnRTdGVwKF9zdGVwcywgX3N0ZXBJbmRleCkifSxfaGFzQXRMZWFzdE9uZVN0ZXA6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIYXNBdExlYXN0T25lU3RlcChfc3RlcHMpIn0sX2hhc011bHRpcGxlU3RlcHM6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIYXNNdWx0aXBsZVN0ZXBzKF9zdGVwcykifSxfc3RlcFZhbHVlOnt0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVTdGVwVmFsdWUoX2N1cnJlbnRTdGVwKSJ9LF9jdXJyZW50V2FsbFRpbWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUN1cnJlbnRXYWxsVGltZShfY3VycmVudFN0ZXApIn0sX21heFN0ZXBJbmRleDp7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9jb21wdXRlTWF4U3RlcEluZGV4KF9zdGVwcykifSxfc2FtcGxlVGV4dDp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlU2FtcGxlVGV4dChzYW1wbGUpIn0sCl9oYXNNdWx0aXBsZVNhbXBsZXM6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIYXNNdWx0aXBsZVNhbXBsZXMob2ZTYW1wbGVzKSJ9LF9pc0ltYWdlTG9hZGluZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sb2JzZXJ2ZXJzOlsicmVsb2FkKHJ1biwgdGFnKSIsIl91cGRhdGVJbWFnZVVybChfY3VycmVudFN0ZXAsIGJyaWdodG5lc3NBZGp1c3RtZW50LCBjb250cmFzdFBlcmNlbnRhZ2UpIl0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gcGYucnVuc0NvbG9yU2NhbGUoYil9LF9jb21wdXRlSGFzQXRMZWFzdE9uZVN0ZXAoYil7cmV0dXJuISFiJiYwPGIubGVuZ3RofSxfY29tcHV0ZUhhc011bHRpcGxlU3RlcHMoYil7cmV0dXJuISFiJiYxPGIubGVuZ3RofSxfY29tcHV0ZUN1cnJlbnRTdGVwKGIsZCl7cmV0dXJuIGJbZF18fG51bGx9LF9jb21wdXRlU3RlcFZhbHVlKGIpe3JldHVybiBiP2Iuc3RlcDowfSxfY29tcHV0ZUN1cnJlbnRXYWxsVGltZShiKXtyZXR1cm4gYj8KSGguZm9ybWF0RGF0ZShiLndhbGxfdGltZSk6IiJ9LF9jb21wdXRlTWF4U3RlcEluZGV4KGIpe3JldHVybiBiLmxlbmd0aC0xfSxfY29tcHV0ZVNhbXBsZVRleHQoYil7cmV0dXJuYCR7YisxfWB9LF9jb21wdXRlSGFzTXVsdGlwbGVTYW1wbGVzKGIpe3JldHVybiAxPGJ9LF9nZXRBcmlhRXhwYW5kZWQoKXtyZXR1cm4gdGhpcy5hY3R1YWxTaXplPyJ0cnVlIjoiZmFsc2UifSxhdHRhY2hlZCgpe3RoaXMuX2F0dGFjaGVkPSEwO3RoaXMucmVsb2FkKCl9LHJlbG9hZCgpe2lmKHRoaXMuX2F0dGFjaGVkKXt0aGlzLl9tZXRhZGF0YUNhbmNlbGxlci5jYW5jZWxBbGwoKTt2YXIgYj12Yy5hZGRQYXJhbXModmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImltYWdlcyIsIi9pbWFnZXMiKSx7dGFnOnRoaXMudGFnLHJ1bjp0aGlzLnJ1bixzYW1wbGU6dGhpcy5zYW1wbGV9KSxkPXRoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKGY9PntmLmNhbmNlbGxlZHx8KGY9Zi52YWx1ZS5tYXAodGhpcy5fY3JlYXRlU3RlcERhdHVtLmJpbmQodGhpcykpLAp0aGlzLnNldCgiX3N0ZXBzIixmKSx0aGlzLnNldCgiX3N0ZXBJbmRleCIsZi5sZW5ndGgtMSkpfSk7dGhpcy5yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGIpLnRoZW4oZCl9fSxfY3JlYXRlU3RlcERhdHVtKGIpe2xldCBkPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJpbWFnZXMiLCIvaW5kaXZpZHVhbEltYWdlIik7ZD12Yy5hZGRQYXJhbXMoZCx7dHM6Yi53YWxsX3RpbWV9KTtkKz0iXHgyNiIrYi5xdWVyeTtyZXR1cm57d2FsbF90aW1lOm5ldyBEYXRlKDFFMypiLndhbGxfdGltZSksc3RlcDpiLnN0ZXAsdXJsOmR9fSxfdXBkYXRlSW1hZ2VVcmwoYixkLGYpe2lmKGIpe3ZhciBoPW5ldyBJbWFnZTt0aGlzLl9pbWFnZUNhbmNlbGxlci5jYW5jZWxBbGwoKTtoLm9ubG9hZD1oLm9uZXJyb3I9dGhpcy5faW1hZ2VDYW5jZWxsZXIuY2FuY2VsbGFibGUoaz0+e2suY2FuY2VsbGVkfHwoaz10aGlzLiQkKCIjbWFpbi1pbWFnZS1jb250YWluZXIiKSxrLmlubmVySFRNTD0iIixQb2x5bWVyLmRvbShrKS5hcHBlbmRDaGlsZChoKSwKdGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITEpKX0pLmJpbmQodGhpcyk7aC5zdHlsZS5maWx0ZXI9YGNvbnRyYXN0KCR7Zn0lKSBgO2guc3R5bGUuZmlsdGVyKz1gYnJpZ2h0bmVzcygke2R9KWA7dGhpcy5zZXQoIl9pc0ltYWdlTG9hZGluZyIsITApO2guc3JjPWIudXJsfX0sX2hhbmRsZVRhcCgpe3RoaXMuc2V0KCJhY3R1YWxTaXplIiwhdGhpcy5hY3R1YWxTaXplKX0sX3RvTG9jYWxlU3RyaW5nKGIpe3JldHVybiBiLnRvTG9jYWxlU3RyaW5nKCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaW1hZ2UtZGFzaGJvYXJkL3RmLWltYWdlLWRhc2hib2FyZC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1pbWFnZS1kYXNoYm9hcmQiLHByb3BlcnRpZXM6e19zZWxlY3RlZFJ1bnM6QXJyYXksX3J1blRvVGFnSW5mbzpPYmplY3QsX2RhdGFOb3RGb3VuZDpCb29sZWFuLF9hY3R1YWxTaXplOkJvb2xlYW4sX2RlZmF1bHRCcmlnaHRuZXNzQWRqdXN0bWVudDp7dHlwZTpOdW1iZXIsdmFsdWU6MSxyZWFkT25seTohMH0sX2RlZmF1bHRDb250cmFzdFBlcmNlbnRhZ2U6e3R5cGU6TnVtYmVyLHZhbHVlOjEwMCxyZWFkT25seTohMH0sX2JyaWdodG5lc3NBZGp1c3RtZW50Ont0eXBlOk51bWJlcix2YWx1ZToxfSxfY29udHJhc3RQZXJjZW50YWdlOnt0eXBlOk51bWJlcix2YWx1ZToxMDB9LF90YWdGaWx0ZXI6U3RyaW5nLF9icmlnaHRuZXNzSXNEZWZhdWx0Ont0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlQnJpZ2h0bmVzc0lzRGVmYXVsdChfYnJpZ2h0bmVzc0FkanVzdG1lbnQpIn0sX2NvbnRyYXN0SXNEZWZhdWx0Ont0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlQ29udHJhc3RJc0RlZmF1bHQoX2NvbnRyYXN0UGVyY2VudGFnZSkifSwKX2NhdGVnb3JpZXNEb21SZWFkeTpCb29sZWFuLF9jYXRlZ29yaWVzOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfbWFrZUNhdGVnb3JpZXMoX3J1blRvVGFnSW5mbywgX3NlbGVjdGVkUnVucywgX3RhZ0ZpbHRlciwgX2NhdGVnb3JpZXNEb21SZWFkeSkifSxfcmVxdWVzdE1hbmFnZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuUmVxdWVzdE1hbmFnZXJ9fSxyZWFkeSgpe3RoaXMucmVsb2FkKCl9LHJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCk9Pnt0aGlzLl9yZWxvYWRJbWFnZXMoKX0pfSxfZmV0Y2hUYWdzKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiaW1hZ2VzIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKS50aGVuKGQ9PntpZighXy5pc0VxdWFsKGQsdGhpcy5fcnVuVG9UYWdJbmZvKSl7dmFyIGY9Xy5tYXBWYWx1ZXMoZCxoPT5PYmplY3Qua2V5cyhoKSk7Zj12Yy5nZXRUYWdzKGYpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwKMD09PWYubGVuZ3RoKTt0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsZCk7dGhpcy5hc3luYygoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KX19KX0sX3JlbG9hZEltYWdlcygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1pbWFnZS1sb2FkZXIiKS5mb3JFYWNoKGI9PntiLnJlbG9hZCgpfSl9LF9zaG91bGRPcGVuKGIpe3JldHVybiAyPj1ifSxfcmVzZXRCcmlnaHRuZXNzKCl7dGhpcy5fYnJpZ2h0bmVzc0FkanVzdG1lbnQ9dGhpcy5fZGVmYXVsdEJyaWdodG5lc3NBZGp1c3RtZW50fSxfcmVzZXRDb250cmFzdCgpe3RoaXMuX2NvbnRyYXN0UGVyY2VudGFnZT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfSxfY29tcHV0ZUJyaWdodG5lc3NJc0RlZmF1bHQoYil7cmV0dXJuIGI9PT10aGlzLl9kZWZhdWx0QnJpZ2h0bmVzc0FkanVzdG1lbnR9LF9jb21wdXRlQ29udHJhc3RJc0RlZmF1bHQoYil7cmV0dXJuIGI9PT10aGlzLl9kZWZhdWx0Q29udHJhc3RQZXJjZW50YWdlfSwKX21ha2VDYXRlZ29yaWVzKGIsZCxmKXtmdW5jdGlvbiBoKHQpe2NvbnN0IGw9Ylt0LnJ1bl1bdC50YWddLnNhbXBsZXM7cmV0dXJuIF8ucmFuZ2UobCkubWFwKHA9Pk9iamVjdC5hc3NpZ24oe30sdCx7c2FtcGxlOnAsb2ZTYW1wbGVzOmx9KSl9Y29uc3Qgaz1fLm1hcFZhbHVlcyhiLHQ9Pk9iamVjdC5rZXlzKHQpKTtyZXR1cm4gJGMuY2F0ZWdvcml6ZVJ1blRhZ0NvbWJpbmF0aW9ucyhrLGQsZikubWFwKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGgpKX0pKX0sX3RhZ01ldGFkYXRhKGIsZCxmKXtyZXR1cm4gYltkXVtmXX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1hdWRpby1kYXNoYm9hcmQvdGYtYXVkaW8tbG9hZGVyLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWF1ZGlvLWxvYWRlciIscHJvcGVydGllczp7cnVuOlN0cmluZyx0YWc6U3RyaW5nLHNhbXBsZTpOdW1iZXIsdG90YWxTYW1wbGVzOk51bWJlcix0YWdNZXRhZGF0YTpPYmplY3QsX3J1bkNvbG9yOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihydW4pIn0scmVxdWVzdE1hbmFnZXI6T2JqZWN0LF9tZXRhZGF0YUNhbmNlbGxlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5DYW5jZWxsZXJ9LF9zdGVwczp7dHlwZTpBcnJheSx2YWx1ZTooKT0+W119LF9zdGVwSW5kZXg6TnVtYmVyLF9oYXNBdExlYXN0T25lU3RlcDp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUhhc0F0TGVhc3RPbmVTdGVwKF9zdGVwcykifSxfaGFzTXVsdGlwbGVTdGVwczp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUhhc011bHRpcGxlU3RlcHMoX3N0ZXBzKSJ9LF9jdXJyZW50RGF0dW06e3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfY29tcHV0ZUN1cnJlbnREYXR1bShfc3RlcHMsIF9zdGVwSW5kZXgpIn0sCl9tYXhTdGVwSW5kZXg6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZU1heFN0ZXBJbmRleChfc3RlcHMpIn0sX3NhbXBsZVRleHQ6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZVNhbXBsZVRleHQoc2FtcGxlKSJ9LF9oYXNNdWx0aXBsZVNhbXBsZXM6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIYXNNdWx0aXBsZVNhbXBsZXModG90YWxTYW1wbGVzKSJ9fSxvYnNlcnZlcnM6WyJyZWxvYWQocnVuLCB0YWcpIl0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gcGYucnVuc0NvbG9yU2NhbGUoYil9LF9jb21wdXRlSGFzQXRMZWFzdE9uZVN0ZXAoYil7cmV0dXJuISFiJiYwPGIubGVuZ3RofSxfY29tcHV0ZUhhc011bHRpcGxlU3RlcHMoYil7cmV0dXJuISFiJiYxPGIubGVuZ3RofSxfY29tcHV0ZU1heFN0ZXBJbmRleChiKXtyZXR1cm4gYi5sZW5ndGgtMX0sX2NvbXB1dGVDdXJyZW50RGF0dW0oYixkKXtyZXR1cm4gYltkXX0sX2NvbXB1dGVTYW1wbGVUZXh0KGIpe3JldHVybmAke2IrCjF9YH0sX2NvbXB1dGVIYXNNdWx0aXBsZVNhbXBsZXMoYil7cmV0dXJuIDE8Yn0sYXR0YWNoZWQoKXt0aGlzLl9hdHRhY2hlZD0hMDt0aGlzLnJlbG9hZCgpfSxyZWxvYWQoKXtpZih0aGlzLl9hdHRhY2hlZCl7dGhpcy5fbWV0YWRhdGFDYW5jZWxsZXIuY2FuY2VsQWxsKCk7dmFyIGI9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImF1ZGlvIiwiL2F1ZGlvIixuZXcgVVJMU2VhcmNoUGFyYW1zKHt0YWc6dGhpcy50YWcscnVuOnRoaXMucnVuLHNhbXBsZTp0aGlzLnNhbXBsZX0pKSxkPXRoaXMuX21ldGFkYXRhQ2FuY2VsbGVyLmNhbmNlbGxhYmxlKGY9PntmLmNhbmNlbGxlZHx8KGY9Zi52YWx1ZS5tYXAodGhpcy5fY3JlYXRlU3RlcERhdHVtLmJpbmQodGhpcykpLHRoaXMuc2V0KCJfc3RlcHMiLGYpLHRoaXMuc2V0KCJfc3RlcEluZGV4IixmLmxlbmd0aC0xKSl9KTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkKX19LF9jcmVhdGVTdGVwRGF0dW0oYil7dmFyIGQ9Cm5ldyBVUkxTZWFyY2hQYXJhbXMoYi5xdWVyeSk7ZC5hcHBlbmQoInRzIixiLndhbGxfdGltZSk7ZD12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiYXVkaW8iLCIvaW5kaXZpZHVhbEF1ZGlvIixkKTtyZXR1cm57d2FsbF90aW1lOkhoLmZvcm1hdERhdGUobmV3IERhdGUoMUUzKmIud2FsbF90aW1lKSksc3RlcDpiLnN0ZXAsbGFiZWw6Yi5sYWJlbCxjb250ZW50VHlwZTpiLmNvbnRlbnRUeXBlLHVybDpkfX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1hdWRpby1kYXNoYm9hcmQvdGYtYXVkaW8tZGFzaGJvYXJkLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWF1ZGlvLWRhc2hib2FyZCIscHJvcGVydGllczp7X3NlbGVjdGVkUnVuczpBcnJheSxfcnVuVG9UYWdJbmZvOk9iamVjdCxfZGF0YU5vdEZvdW5kOkJvb2xlYW4sX3RhZ0ZpbHRlcjp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LF9jYXRlZ29yaWVzOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfbWFrZUNhdGVnb3JpZXMoX3J1blRvVGFnSW5mbywgX3NlbGVjdGVkUnVucywgX3RhZ0ZpbHRlcikifSxfcmVxdWVzdE1hbmFnZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuUmVxdWVzdE1hbmFnZXJ9fSxyZWFkeSgpe3RoaXMucmVsb2FkKCl9LHJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4oKCk9Pnt0aGlzLl9yZWxvYWRBdWRpbygpfSl9LF9mZXRjaFRhZ3MoKXtjb25zdCBiPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJhdWRpbyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57aWYoIV8uaXNFcXVhbChkLAp0aGlzLl9ydW5Ub1RhZ0luZm8pKXt2YXIgZj1fLm1hcFZhbHVlcyhkLGg9Pk9iamVjdC5rZXlzKGgpKTtmPXZjLmdldFRhZ3MoZik7dGhpcy5zZXQoIl9kYXRhTm90Rm91bmQiLDA9PT1mLmxlbmd0aCk7dGhpcy5zZXQoIl9ydW5Ub1RhZ0luZm8iLGQpfX0pfSxfcmVsb2FkQXVkaW8oKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtYXVkaW8tbG9hZGVyIikuZm9yRWFjaChiPT57Yi5yZWxvYWQoKX0pfSxfc2hvdWxkT3BlbihiKXtyZXR1cm4gMj49Yn0sX21ha2VDYXRlZ29yaWVzKGIsZCxmKXtmdW5jdGlvbiBoKHQpe2NvbnN0IGw9Ylt0LnJ1bl1bdC50YWddLnNhbXBsZXM7cmV0dXJuIF8ucmFuZ2UobCkubWFwKHA9Pk9iamVjdC5hc3NpZ24oe30sdCx7c2FtcGxlOnAsdG90YWxTYW1wbGVzOmx9KSl9Y29uc3Qgaz1fLm1hcFZhbHVlcyhiLHQ9Pk9iamVjdC5rZXlzKHQpKTtyZXR1cm4gJGMuY2F0ZWdvcml6ZVJ1blRhZ0NvbWJpbmF0aW9ucyhrLGQsZikubWFwKHQ9Pk9iamVjdC5hc3NpZ24oe30sCnQse2l0ZW1zOltdLmNvbmNhdC5hcHBseShbXSx0Lml0ZW1zLm1hcChoKSl9KSl9LF90YWdNZXRhZGF0YShiLGQsZil7cmV0dXJuIGJbZF1bZl19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vaXJvbi1hdXRvZ3Jvdy10ZXh0YXJlYS9pcm9uLWF1dG9ncm93LXRleHRhcmVhLmh0bWwuanMKUG9seW1lcih7aXM6Imlyb24tYXV0b2dyb3ctdGV4dGFyZWEiLGJlaGF2aW9yczpbUG9seW1lci5Jcm9uVmFsaWRhdGFibGVCZWhhdmlvcixQb2x5bWVyLklyb25Db250cm9sU3RhdGVdLHByb3BlcnRpZXM6e3ZhbHVlOntvYnNlcnZlcjoiX3ZhbHVlQ2hhbmdlZCIsdHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxiaW5kVmFsdWU6e29ic2VydmVyOiJfYmluZFZhbHVlQ2hhbmdlZCIsdHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxyb3dzOnt0eXBlOk51bWJlcix2YWx1ZToxLG9ic2VydmVyOiJfdXBkYXRlQ2FjaGVkIn0sbWF4Um93czp7dHlwZTpOdW1iZXIsdmFsdWU6MCxvYnNlcnZlcjoiX3VwZGF0ZUNhY2hlZCJ9LGF1dG9jb21wbGV0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZiJ9LGF1dG9mb2N1czp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxpbnB1dG1vZGU6e3R5cGU6U3RyaW5nfSxwbGFjZWhvbGRlcjp7dHlwZTpTdHJpbmd9LHJlYWRvbmx5Ont0eXBlOlN0cmluZ30scmVxdWlyZWQ6e3R5cGU6Qm9vbGVhbn0sCm1pbmxlbmd0aDp7dHlwZTpOdW1iZXJ9LG1heGxlbmd0aDp7dHlwZTpOdW1iZXJ9LGxhYmVsOnt0eXBlOlN0cmluZ319LGxpc3RlbmVyczp7aW5wdXQ6Il9vbklucHV0In0sZ2V0IHRleHRhcmVhKCl7cmV0dXJuIHRoaXMuJC50ZXh0YXJlYX0sZ2V0IHNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuJC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydH0sZ2V0IHNlbGVjdGlvbkVuZCgpe3JldHVybiB0aGlzLiQudGV4dGFyZWEuc2VsZWN0aW9uRW5kfSxzZXQgc2VsZWN0aW9uU3RhcnQoYil7dGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvblN0YXJ0PWJ9LHNldCBzZWxlY3Rpb25FbmQoYil7dGhpcy4kLnRleHRhcmVhLnNlbGVjdGlvbkVuZD1ifSxhdHRhY2hlZDpmdW5jdGlvbigpe25hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL2lQKD86W29hXWR8aG9uZSkvKSYmKHRoaXMuJC50ZXh0YXJlYS5zdHlsZS5tYXJnaW5MZWZ0PSItM3B4Iil9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kLnRleHRhcmVhLnZhbGlkaXR5LnZhbGlkOwpiJiYodGhpcy5yZXF1aXJlZCYmIiI9PT10aGlzLnZhbHVlP2I9ITE6dGhpcy5oYXNWYWxpZGF0b3IoKSYmKGI9UG9seW1lci5Jcm9uVmFsaWRhdGFibGVCZWhhdmlvci52YWxpZGF0ZS5jYWxsKHRoaXMsdGhpcy52YWx1ZSkpKTt0aGlzLmludmFsaWQ9IWI7dGhpcy5maXJlKCJpcm9uLWlucHV0LXZhbGlkYXRlIik7cmV0dXJuIGJ9LF9iaW5kVmFsdWVDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMudmFsdWU9Yn0sX3ZhbHVlQ2hhbmdlZDpmdW5jdGlvbihiKXt2YXIgZD10aGlzLnRleHRhcmVhO2QmJihkLnZhbHVlIT09YiYmKGQudmFsdWU9Ynx8MD09PWI/YjoiIiksdGhpcy5iaW5kVmFsdWU9Yix0aGlzLiQubWlycm9yLmlubmVySFRNTD10aGlzLl92YWx1ZUZvck1pcnJvcigpLHRoaXMuZmlyZSgiYmluZC12YWx1ZS1jaGFuZ2VkIix7dmFsdWU6dGhpcy5iaW5kVmFsdWV9KSl9LF9vbklucHV0OmZ1bmN0aW9uKGIpe3ZhciBkPVBvbHltZXIuZG9tKGIpLnBhdGg7dGhpcy52YWx1ZT1kP2RbMF0udmFsdWU6CmIudGFyZ2V0LnZhbHVlfSxfY29uc3RyYWluOmZ1bmN0aW9uKGIpe2I9Ynx8WyIiXTtmb3IoYj0wPHRoaXMubWF4Um93cyYmYi5sZW5ndGg+dGhpcy5tYXhSb3dzP2Iuc2xpY2UoMCx0aGlzLm1heFJvd3MpOmIuc2xpY2UoMCk7MDx0aGlzLnJvd3MmJmIubGVuZ3RoPHRoaXMucm93czspYi5wdXNoKCIiKTtyZXR1cm4gYi5qb2luKCJceDNjYnIvXHgzZSIpKyJceDI2IzE2MDsifSxfdmFsdWVGb3JNaXJyb3I6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnRleHRhcmVhO2lmKGIpcmV0dXJuIHRoaXMudG9rZW5zPWImJmIudmFsdWU/Yi52YWx1ZS5yZXBsYWNlKC8mL2dtLCJceDI2YW1wOyIpLnJlcGxhY2UoLyIvZ20sIlx4MjZxdW90OyIpLnJlcGxhY2UoLycvZ20sIlx4MjYjMzk7IikucmVwbGFjZSgvPC9nbSwiXHgyNmx0OyIpLnJlcGxhY2UoLz4vZ20sIlx4MjZndDsiKS5zcGxpdCgiXG4iKTpbIiJdLHRoaXMuX2NvbnN0cmFpbih0aGlzLnRva2Vucyl9LF91cGRhdGVDYWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLiQubWlycm9yLmlubmVySFRNTD0KdGhpcy5fY29uc3RyYWluKHRoaXMudG9rZW5zKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1pbnB1dC9wYXBlci10ZXh0YXJlYS5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci10ZXh0YXJlYSIsYmVoYXZpb3JzOltQb2x5bWVyLlBhcGVySW5wdXRCZWhhdmlvcixQb2x5bWVyLklyb25Gb3JtRWxlbWVudEJlaGF2aW9yXSxwcm9wZXJ0aWVzOntfYXJpYUxhYmVsbGVkQnk6e29ic2VydmVyOiJfYXJpYUxhYmVsbGVkQnlDaGFuZ2VkIix0eXBlOlN0cmluZ30sX2FyaWFEZXNjcmliZWRCeTp7b2JzZXJ2ZXI6Il9hcmlhRGVzY3JpYmVkQnlDaGFuZ2VkIix0eXBlOlN0cmluZ30sdmFsdWU6e3R5cGU6U3RyaW5nfSxyb3dzOnt0eXBlOk51bWJlcix2YWx1ZToxfSxtYXhSb3dzOnt0eXBlOk51bWJlcix2YWx1ZTowfX0sZ2V0IHNlbGVjdGlvblN0YXJ0KCl7cmV0dXJuIHRoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydH0sc2V0IHNlbGVjdGlvblN0YXJ0KGIpe3RoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25TdGFydD1ifSxnZXQgc2VsZWN0aW9uRW5kKCl7cmV0dXJuIHRoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25FbmR9LApzZXQgc2VsZWN0aW9uRW5kKGIpe3RoaXMuJC5pbnB1dC50ZXh0YXJlYS5zZWxlY3Rpb25FbmQ9Yn0sX2FyaWFMYWJlbGxlZEJ5Q2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLl9mb2N1c2FibGVFbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixiKX0sX2FyaWFEZXNjcmliZWRCeUNoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5fZm9jdXNhYmxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLGIpfSxnZXQgX2ZvY3VzYWJsZUVsZW1lbnQoKXtyZXR1cm4gdGhpcy5pbnB1dEVsZW1lbnQudGV4dGFyZWF9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItdG9hc3QvcGFwZXItdG9hc3QuaHRtbC5qcwooZnVuY3Rpb24oKXt2YXIgYj1udWxsO1BvbHltZXIoe2lzOiJwYXBlci10b2FzdCIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25PdmVybGF5QmVoYXZpb3JdLHByb3BlcnRpZXM6e2ZpdEludG86e3R5cGU6T2JqZWN0LHZhbHVlOndpbmRvdyxvYnNlcnZlcjoiX29uRml0SW50b0NoYW5nZWQifSxob3Jpem9udGFsQWxpZ246e3R5cGU6U3RyaW5nLHZhbHVlOiJsZWZ0In0sdmVydGljYWxBbGlnbjp7dHlwZTpTdHJpbmcsdmFsdWU6ImJvdHRvbSJ9LGR1cmF0aW9uOnt0eXBlOk51bWJlcix2YWx1ZTozRTN9LHRleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxub0NhbmNlbE9uT3V0c2lkZUNsaWNrOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LG5vQXV0b0ZvY3VzOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9fSxsaXN0ZW5lcnM6e3RyYW5zaXRpb25lbmQ6Il9fb25UcmFuc2l0aW9uRW5kIn0sZ2V0IHZpc2libGUoKXtQb2x5bWVyLkJhc2UuX3dhcm4oImB2aXNpYmxlYCBpcyBkZXByZWNhdGVkLCB1c2UgYG9wZW5lZGAgaW5zdGVhZCIpOwpyZXR1cm4gdGhpcy5vcGVuZWR9LGdldCBfY2FuQXV0b0Nsb3NlKCl7cmV0dXJuIDA8dGhpcy5kdXJhdGlvbiYmSW5maW5pdHkhPT10aGlzLmR1cmF0aW9ufSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5fYXV0b0Nsb3NlPW51bGw7UG9seW1lci5Jcm9uQTExeUFubm91bmNlci5yZXF1ZXN0QXZhaWxhYmlsaXR5KCl9LHNob3c6ZnVuY3Rpb24oZCl7InN0cmluZyI9PXR5cGVvZiBkJiYoZD17dGV4dDpkfSk7Zm9yKHZhciBmIGluIGQpMD09PWYuaW5kZXhPZigiXyIpP1BvbHltZXIuQmFzZS5fd2FybignVGhlIHByb3BlcnR5ICInK2YrJyIgaXMgcHJpdmF0ZSBhbmQgd2FzIG5vdCBzZXQuJyk6ZiBpbiB0aGlzP3RoaXNbZl09ZFtmXTpQb2x5bWVyLkJhc2UuX3dhcm4oJ1RoZSBwcm9wZXJ0eSAiJytmKyciIGlzIG5vdCB2YWxpZC4nKTt0aGlzLm9wZW4oKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuY2xvc2UoKX0sX19vblRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24oZCl7ZCYmZC50YXJnZXQ9PT0KdGhpcyYmIm9wYWNpdHkiPT09ZC5wcm9wZXJ0eU5hbWUmJih0aGlzLm9wZW5lZD90aGlzLl9maW5pc2hSZW5kZXJPcGVuZWQoKTp0aGlzLl9maW5pc2hSZW5kZXJDbG9zZWQoKSl9LF9vcGVuZWRDaGFuZ2VkOmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMuX2F1dG9DbG9zZSYmKHRoaXMuY2FuY2VsQXN5bmModGhpcy5fYXV0b0Nsb3NlKSx0aGlzLl9hdXRvQ2xvc2U9bnVsbCk7dGhpcy5vcGVuZWQ/KGImJmIhPT10aGlzJiZiLmNsb3NlKCksYj10aGlzLHRoaXMuZmlyZSgiaXJvbi1hbm5vdW5jZSIse3RleHQ6dGhpcy50ZXh0fSksdGhpcy5fY2FuQXV0b0Nsb3NlJiYodGhpcy5fYXV0b0Nsb3NlPXRoaXMuYXN5bmModGhpcy5jbG9zZSx0aGlzLmR1cmF0aW9uKSkpOmI9PT10aGlzJiYoYj1udWxsKTtQb2x5bWVyLklyb25PdmVybGF5QmVoYXZpb3JJbXBsLl9vcGVuZWRDaGFuZ2VkLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX3JlbmRlck9wZW5lZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LmFkZCgicGFwZXItdG9hc3Qtb3BlbiIpfSwKX3JlbmRlckNsb3NlZDpmdW5jdGlvbigpe3RoaXMuY2xhc3NMaXN0LnJlbW92ZSgicGFwZXItdG9hc3Qtb3BlbiIpfSxfb25GaXRJbnRvQ2hhbmdlZDpmdW5jdGlvbihkKXt0aGlzLnBvc2l0aW9uVGFyZ2V0PWR9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLXRvZ2dsZS1idXR0b24vcGFwZXItdG9nZ2xlLWJ1dHRvbi5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci10b2dnbGUtYnV0dG9uIixiZWhhdmlvcnM6W1BvbHltZXIuUGFwZXJDaGVja2VkRWxlbWVudEJlaGF2aW9yXSxob3N0QXR0cmlidXRlczp7cm9sZToiYnV0dG9uIiwiYXJpYS1wcmVzc2VkIjoiZmFsc2UiLHRhYmluZGV4OjB9LHByb3BlcnRpZXM6e30sbGlzdGVuZXJzOnt0cmFjazoiX29udHJhY2sifSxhdHRhY2hlZDpmdW5jdGlvbigpe1BvbHltZXIuUmVuZGVyU3RhdHVzLmFmdGVyTmV4dFJlbmRlcih0aGlzLGZ1bmN0aW9uKCl7UG9seW1lci5HZXN0dXJlcy5zZXRUb3VjaEFjdGlvbih0aGlzLCJwYW4teSIpfSl9LF9vbnRyYWNrOmZ1bmN0aW9uKGIpe2I9Yi5kZXRhaWw7InN0YXJ0Ij09PWIuc3RhdGU/dGhpcy5fdHJhY2tTdGFydChiKToidHJhY2siPT09Yi5zdGF0ZT90aGlzLl90cmFja01vdmUoYik6ImVuZCI9PT1iLnN0YXRlJiZ0aGlzLl90cmFja0VuZChiKX0sX3RyYWNrU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl93aWR0aD10aGlzLiQudG9nZ2xlQmFyLm9mZnNldFdpZHRoLwoyO3RoaXMuX3RyYWNrQ2hlY2tlZD10aGlzLmNoZWNrZWQ7dGhpcy4kLnRvZ2dsZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKCJkcmFnZ2luZyIpfSxfdHJhY2tNb3ZlOmZ1bmN0aW9uKGIpe2I9Yi5keDt0aGlzLl94PU1hdGgubWluKHRoaXMuX3dpZHRoLE1hdGgubWF4KDAsdGhpcy5fdHJhY2tDaGVja2VkP3RoaXMuX3dpZHRoK2I6YikpO3RoaXMudHJhbnNsYXRlM2QodGhpcy5feCsicHgiLDAsMCx0aGlzLiQudG9nZ2xlQnV0dG9uKTt0aGlzLl91c2VyQWN0aXZhdGUodGhpcy5feD50aGlzLl93aWR0aC8yKX0sX3RyYWNrRW5kOmZ1bmN0aW9uKCl7dGhpcy4kLnRvZ2dsZUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKCJkcmFnZ2luZyIpO3RoaXMudHJhbnNmb3JtKCIiLHRoaXMuJC50b2dnbGVCdXR0b24pfSxfY3JlYXRlUmlwcGxlOmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC50b2dnbGVCdXR0b247dmFyIGI9UG9seW1lci5QYXBlclJpcHBsZUJlaGF2aW9yLl9jcmVhdGVSaXBwbGUoKTsKYi5pZD0iaW5rIjtiLnNldEF0dHJpYnV0ZSgicmVjZW50ZXJzIiwiIik7Yi5jbGFzc0xpc3QuYWRkKCJjaXJjbGUiLCJ0b2dnbGUtaW5rIik7cmV0dXJuIGJ9fSk7CgooZnVuY3Rpb24oZil7aWYodHlwZW9mIGV4cG9ydHM9PT0ib2JqZWN0IiYmdHlwZW9mIG1vZHVsZSE9PSJ1bmRlZmluZWQiKW1vZHVsZS5leHBvcnRzPWYoKTtlbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kKWRlZmluZShbXSxmKTtlbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIilnPXdpbmRvdztlbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT0idW5kZWZpbmVkIilnPWdsb2JhbDtlbHNlIGlmKHR5cGVvZiBzZWxmIT09InVuZGVmaW5lZCIpZz1zZWxmO2Vsc2UgZz10aGlzO2cuZ3JhcGhsaWI9ZigpfX0pKGZ1bmN0aW9uKCl7dmFyIGRlZmluZSxtb2R1bGUsZXhwb3J0cztyZXR1cm4gZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PSJmdW5jdGlvbiImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTsKdmFyIGY9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbysiJyIpO3Rocm93IGYuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsZjt9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIGxpYj1yZXF1aXJlKCIuL2xpYiIpO21vZHVsZS5leHBvcnRzPXtHcmFwaDpsaWIuR3JhcGgsanNvbjpyZXF1aXJlKCIuL2xpYi9qc29uIiksYWxnOnJlcXVpcmUoIi4vbGliL2FsZyIpLHZlcnNpb246bGliLnZlcnNpb259fSx7Ii4vbGliIjoxNywiLi9saWIvYWxnIjo4LCIuL2xpYi9qc29uIjoxOH1dLAoyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuLi9sb2Rhc2giKTttb2R1bGUuZXhwb3J0cz1jb21wb25lbnRzO2Z1bmN0aW9uIGNvbXBvbmVudHMoZyl7dmFyIHZpc2l0ZWQ9e30sY21wdHM9W10sY21wdDtmdW5jdGlvbiBkZnModil7aWYoXy5oYXModmlzaXRlZCx2KSlyZXR1cm47dmlzaXRlZFt2XT10cnVlO2NtcHQucHVzaCh2KTtfLmVhY2goZy5zdWNjZXNzb3JzKHYpLGRmcyk7Xy5lYWNoKGcucHJlZGVjZXNzb3JzKHYpLGRmcyl9Xy5lYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtjbXB0PVtdO2Rmcyh2KTtpZihjbXB0Lmxlbmd0aCljbXB0cy5wdXNoKGNtcHQpfSk7cmV0dXJuIGNtcHRzfX0seyIuLi9sb2Rhc2giOjE5fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIik7bW9kdWxlLmV4cG9ydHM9ZGZzO2Z1bmN0aW9uIGRmcyhnLHZzLG9yZGVyKXtpZighXy5pc0FycmF5KHZzKSl2cz0KW3ZzXTt2YXIgbmF2aWdhdGlvbj0oZy5pc0RpcmVjdGVkKCk/Zy5zdWNjZXNzb3JzOmcubmVpZ2hib3JzKS5iaW5kKGcpO3ZhciBhY2M9W10sdmlzaXRlZD17fTtfLmVhY2godnMsZnVuY3Rpb24odil7aWYoIWcuaGFzTm9kZSh2KSl0aHJvdyBuZXcgRXJyb3IoIkdyYXBoIGRvZXMgbm90IGhhdmUgbm9kZTogIit2KTtkb0RmcyhnLHYsb3JkZXI9PT0icG9zdCIsdmlzaXRlZCxuYXZpZ2F0aW9uLGFjYyl9KTtyZXR1cm4gYWNjfWZ1bmN0aW9uIGRvRGZzKGcsdixwb3N0b3JkZXIsdmlzaXRlZCxuYXZpZ2F0aW9uLGFjYyl7aWYoIV8uaGFzKHZpc2l0ZWQsdikpe3Zpc2l0ZWRbdl09dHJ1ZTtpZighcG9zdG9yZGVyKWFjYy5wdXNoKHYpO18uZWFjaChuYXZpZ2F0aW9uKHYpLGZ1bmN0aW9uKHcpe2RvRGZzKGcsdyxwb3N0b3JkZXIsdmlzaXRlZCxuYXZpZ2F0aW9uLGFjYyl9KTtpZihwb3N0b3JkZXIpYWNjLnB1c2godil9fX0seyIuLi9sb2Rhc2giOjE5fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSwKbW9kdWxlLGV4cG9ydHMpe3ZhciBkaWprc3RyYT1yZXF1aXJlKCIuL2RpamtzdHJhIiksXz1yZXF1aXJlKCIuLi9sb2Rhc2giKTttb2R1bGUuZXhwb3J0cz1kaWprc3RyYUFsbDtmdW5jdGlvbiBkaWprc3RyYUFsbChnLHdlaWdodEZ1bmMsZWRnZUZ1bmMpe3JldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksZnVuY3Rpb24oYWNjLHYpe2FjY1t2XT1kaWprc3RyYShnLHYsd2VpZ2h0RnVuYyxlZGdlRnVuYyl9LHt9KX19LHsiLi4vbG9kYXNoIjoxOSwiLi9kaWprc3RyYSI6NX1dLDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpLFByaW9yaXR5UXVldWU9cmVxdWlyZSgiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZSIpO21vZHVsZS5leHBvcnRzPWRpamtzdHJhO3ZhciBERUZBVUxUX1dFSUdIVF9GVU5DPV8uY29uc3RhbnQoMSk7ZnVuY3Rpb24gZGlqa3N0cmEoZyxzb3VyY2Usd2VpZ2h0Rm4sZWRnZUZuKXtyZXR1cm4gcnVuRGlqa3N0cmEoZywKU3RyaW5nKHNvdXJjZSksd2VpZ2h0Rm58fERFRkFVTFRfV0VJR0hUX0ZVTkMsZWRnZUZufHxmdW5jdGlvbih2KXtyZXR1cm4gZy5vdXRFZGdlcyh2KX0pfWZ1bmN0aW9uIHJ1bkRpamtzdHJhKGcsc291cmNlLHdlaWdodEZuLGVkZ2VGbil7dmFyIHJlc3VsdHM9e30scHE9bmV3IFByaW9yaXR5UXVldWUsdix2RW50cnk7dmFyIHVwZGF0ZU5laWdoYm9ycz1mdW5jdGlvbihlZGdlKXt2YXIgdz1lZGdlLnYhPT12P2VkZ2UudjplZGdlLncsd0VudHJ5PXJlc3VsdHNbd10sd2VpZ2h0PXdlaWdodEZuKGVkZ2UpLGRpc3RhbmNlPXZFbnRyeS5kaXN0YW5jZSt3ZWlnaHQ7aWYod2VpZ2h0PDApdGhyb3cgbmV3IEVycm9yKCJkaWprc3RyYSBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBlZGdlIHdlaWdodHMuICIrIkJhZCBlZGdlOiAiK2VkZ2UrIiBXZWlnaHQ6ICIrd2VpZ2h0KTtpZihkaXN0YW5jZTx3RW50cnkuZGlzdGFuY2Upe3dFbnRyeS5kaXN0YW5jZT1kaXN0YW5jZTt3RW50cnkucHJlZGVjZXNzb3I9CnY7cHEuZGVjcmVhc2UodyxkaXN0YW5jZSl9fTtnLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbih2KXt2YXIgZGlzdGFuY2U9dj09PXNvdXJjZT8wOk51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXN1bHRzW3ZdPXtkaXN0YW5jZTpkaXN0YW5jZX07cHEuYWRkKHYsZGlzdGFuY2UpfSk7d2hpbGUocHEuc2l6ZSgpPjApe3Y9cHEucmVtb3ZlTWluKCk7dkVudHJ5PXJlc3VsdHNbdl07aWYodkVudHJ5LmRpc3RhbmNlPT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKWJyZWFrO2VkZ2VGbih2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyl9cmV0dXJuIHJlc3VsdHN9fSx7Ii4uL2RhdGEvcHJpb3JpdHktcXVldWUiOjE1LCIuLi9sb2Rhc2giOjE5fV0sNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksdGFyamFuPXJlcXVpcmUoIi4vdGFyamFuIik7bW9kdWxlLmV4cG9ydHM9ZmluZEN5Y2xlcztmdW5jdGlvbiBmaW5kQ3ljbGVzKGcpe3JldHVybiBfLmZpbHRlcih0YXJqYW4oZyksCmZ1bmN0aW9uKGNtcHQpe3JldHVybiBjbXB0Lmxlbmd0aD4xfHxjbXB0Lmxlbmd0aD09PTEmJmcuaGFzRWRnZShjbXB0WzBdLGNtcHRbMF0pfSl9fSx7Ii4uL2xvZGFzaCI6MTksIi4vdGFyamFuIjoxM31dLDc6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpO21vZHVsZS5leHBvcnRzPWZsb3lkV2Fyc2hhbGw7dmFyIERFRkFVTFRfV0VJR0hUX0ZVTkM9Xy5jb25zdGFudCgxKTtmdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGcsd2VpZ2h0Rm4sZWRnZUZuKXtyZXR1cm4gcnVuRmxveWRXYXJzaGFsbChnLHdlaWdodEZufHxERUZBVUxUX1dFSUdIVF9GVU5DLGVkZ2VGbnx8ZnVuY3Rpb24odil7cmV0dXJuIGcub3V0RWRnZXModil9KX1mdW5jdGlvbiBydW5GbG95ZFdhcnNoYWxsKGcsd2VpZ2h0Rm4sZWRnZUZuKXt2YXIgcmVzdWx0cz17fSxub2Rlcz1nLm5vZGVzKCk7bm9kZXMuZm9yRWFjaChmdW5jdGlvbih2KXtyZXN1bHRzW3ZdPQp7fTtyZXN1bHRzW3ZdW3ZdPXtkaXN0YW5jZTowfTtub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpe2lmKHYhPT13KXJlc3VsdHNbdl1bd109e2Rpc3RhbmNlOk51bWJlci5QT1NJVElWRV9JTkZJTklUWX19KTtlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKXt2YXIgdz1lZGdlLnY9PT12P2VkZ2UudzplZGdlLnYsZD13ZWlnaHRGbihlZGdlKTtyZXN1bHRzW3ZdW3ddPXtkaXN0YW5jZTpkLHByZWRlY2Vzc29yOnZ9fSl9KTtub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGspe3ZhciByb3dLPXJlc3VsdHNba107bm9kZXMuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgcm93ST1yZXN1bHRzW2ldO25vZGVzLmZvckVhY2goZnVuY3Rpb24oail7dmFyIGlrPXJvd0lba107dmFyIGtqPXJvd0tbal07dmFyIGlqPXJvd0lbal07dmFyIGFsdERpc3RhbmNlPWlrLmRpc3RhbmNlK2tqLmRpc3RhbmNlO2lmKGFsdERpc3RhbmNlPGlqLmRpc3RhbmNlKXtpai5kaXN0YW5jZT1hbHREaXN0YW5jZTtpai5wcmVkZWNlc3Nvcj0Ka2oucHJlZGVjZXNzb3J9fSl9KX0pO3JldHVybiByZXN1bHRzfX0seyIuLi9sb2Rhc2giOjE5fV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9e2NvbXBvbmVudHM6cmVxdWlyZSgiLi9jb21wb25lbnRzIiksZGlqa3N0cmE6cmVxdWlyZSgiLi9kaWprc3RyYSIpLGRpamtzdHJhQWxsOnJlcXVpcmUoIi4vZGlqa3N0cmEtYWxsIiksZmluZEN5Y2xlczpyZXF1aXJlKCIuL2ZpbmQtY3ljbGVzIiksZmxveWRXYXJzaGFsbDpyZXF1aXJlKCIuL2Zsb3lkLXdhcnNoYWxsIiksaXNBY3ljbGljOnJlcXVpcmUoIi4vaXMtYWN5Y2xpYyIpLHBvc3RvcmRlcjpyZXF1aXJlKCIuL3Bvc3RvcmRlciIpLHByZW9yZGVyOnJlcXVpcmUoIi4vcHJlb3JkZXIiKSxwcmltOnJlcXVpcmUoIi4vcHJpbSIpLHRhcmphbjpyZXF1aXJlKCIuL3RhcmphbiIpLHRvcHNvcnQ6cmVxdWlyZSgiLi90b3Bzb3J0Iil9fSx7Ii4vY29tcG9uZW50cyI6MiwiLi9kaWprc3RyYSI6NSwKIi4vZGlqa3N0cmEtYWxsIjo0LCIuL2ZpbmQtY3ljbGVzIjo2LCIuL2Zsb3lkLXdhcnNoYWxsIjo3LCIuL2lzLWFjeWNsaWMiOjksIi4vcG9zdG9yZGVyIjoxMCwiLi9wcmVvcmRlciI6MTEsIi4vcHJpbSI6MTIsIi4vdGFyamFuIjoxMywiLi90b3Bzb3J0IjoxNH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciB0b3Bzb3J0PXJlcXVpcmUoIi4vdG9wc29ydCIpO21vZHVsZS5leHBvcnRzPWlzQWN5Y2xpYztmdW5jdGlvbiBpc0FjeWNsaWMoZyl7dHJ5e3RvcHNvcnQoZyl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pcmV0dXJuIGZhbHNlO3Rocm93IGU7fXJldHVybiB0cnVlfX0seyIuL3RvcHNvcnQiOjE0fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBkZnM9cmVxdWlyZSgiLi9kZnMiKTttb2R1bGUuZXhwb3J0cz1wb3N0b3JkZXI7ZnVuY3Rpb24gcG9zdG9yZGVyKGcsdnMpe3JldHVybiBkZnMoZywKdnMsInBvc3QiKX19LHsiLi9kZnMiOjN9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIGRmcz1yZXF1aXJlKCIuL2RmcyIpO21vZHVsZS5leHBvcnRzPXByZW9yZGVyO2Z1bmN0aW9uIHByZW9yZGVyKGcsdnMpe3JldHVybiBkZnMoZyx2cywicHJlIil9fSx7Ii4vZGZzIjozfV0sMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpLEdyYXBoPXJlcXVpcmUoIi4uL2dyYXBoIiksUHJpb3JpdHlRdWV1ZT1yZXF1aXJlKCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlIik7bW9kdWxlLmV4cG9ydHM9cHJpbTtmdW5jdGlvbiBwcmltKGcsd2VpZ2h0RnVuYyl7dmFyIHJlc3VsdD1uZXcgR3JhcGgscGFyZW50cz17fSxwcT1uZXcgUHJpb3JpdHlRdWV1ZSx2O2Z1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKXt2YXIgdz1lZGdlLnY9PT12P2VkZ2UudzplZGdlLnYscHJpPXBxLnByaW9yaXR5KHcpO2lmKHByaSE9PQp1bmRlZmluZWQpe3ZhciBlZGdlV2VpZ2h0PXdlaWdodEZ1bmMoZWRnZSk7aWYoZWRnZVdlaWdodDxwcmkpe3BhcmVudHNbd109djtwcS5kZWNyZWFzZSh3LGVkZ2VXZWlnaHQpfX19aWYoZy5ub2RlQ291bnQoKT09PTApcmV0dXJuIHJlc3VsdDtfLmVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3BxLmFkZCh2LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7cmVzdWx0LnNldE5vZGUodil9KTtwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sMCk7dmFyIGluaXQ9ZmFsc2U7d2hpbGUocHEuc2l6ZSgpPjApe3Y9cHEucmVtb3ZlTWluKCk7aWYoXy5oYXMocGFyZW50cyx2KSlyZXN1bHQuc2V0RWRnZSh2LHBhcmVudHNbdl0pO2Vsc2UgaWYoaW5pdCl0aHJvdyBuZXcgRXJyb3IoIklucHV0IGdyYXBoIGlzIG5vdCBjb25uZWN0ZWQ6ICIrZyk7ZWxzZSBpbml0PXRydWU7Zy5ub2RlRWRnZXModikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpfXJldHVybiByZXN1bHR9fSx7Ii4uL2RhdGEvcHJpb3JpdHktcXVldWUiOjE1LAoiLi4vZ3JhcGgiOjE2LCIuLi9sb2Rhc2giOjE5fV0sMTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpO21vZHVsZS5leHBvcnRzPXRhcmphbjtmdW5jdGlvbiB0YXJqYW4oZyl7dmFyIGluZGV4PTAsc3RhY2s9W10sdmlzaXRlZD17fSxyZXN1bHRzPVtdO2Z1bmN0aW9uIGRmcyh2KXt2YXIgZW50cnk9dmlzaXRlZFt2XT17b25TdGFjazp0cnVlLGxvd2xpbms6aW5kZXgsaW5kZXg6aW5kZXgrK307c3RhY2sucHVzaCh2KTtnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KXtpZighXy5oYXModmlzaXRlZCx3KSl7ZGZzKHcpO2VudHJ5Lmxvd2xpbms9TWF0aC5taW4oZW50cnkubG93bGluayx2aXNpdGVkW3ddLmxvd2xpbmspfWVsc2UgaWYodmlzaXRlZFt3XS5vblN0YWNrKWVudHJ5Lmxvd2xpbms9TWF0aC5taW4oZW50cnkubG93bGluayx2aXNpdGVkW3ddLmluZGV4KX0pO2lmKGVudHJ5Lmxvd2xpbms9PT1lbnRyeS5pbmRleCl7dmFyIGNtcHQ9CltdLHc7ZG97dz1zdGFjay5wb3AoKTt2aXNpdGVkW3ddLm9uU3RhY2s9ZmFsc2U7Y21wdC5wdXNoKHcpfXdoaWxlKHYhPT13KTtyZXN1bHRzLnB1c2goY21wdCl9fWcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpe2lmKCFfLmhhcyh2aXNpdGVkLHYpKWRmcyh2KX0pO3JldHVybiByZXN1bHRzfX0seyIuLi9sb2Rhc2giOjE5fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpO21vZHVsZS5leHBvcnRzPXRvcHNvcnQ7dG9wc29ydC5DeWNsZUV4Y2VwdGlvbj1DeWNsZUV4Y2VwdGlvbjtmdW5jdGlvbiB0b3Bzb3J0KGcpe3ZhciB2aXNpdGVkPXt9LHN0YWNrPXt9LHJlc3VsdHM9W107ZnVuY3Rpb24gdmlzaXQobm9kZSl7aWYoXy5oYXMoc3RhY2ssbm9kZSkpdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uO2lmKCFfLmhhcyh2aXNpdGVkLG5vZGUpKXtzdGFja1tub2RlXT10cnVlO3Zpc2l0ZWRbbm9kZV09dHJ1ZTtfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksCnZpc2l0KTtkZWxldGUgc3RhY2tbbm9kZV07cmVzdWx0cy5wdXNoKG5vZGUpfX1fLmVhY2goZy5zaW5rcygpLHZpc2l0KTtpZihfLnNpemUodmlzaXRlZCkhPT1nLm5vZGVDb3VudCgpKXRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbjtyZXR1cm4gcmVzdWx0c31mdW5jdGlvbiBDeWNsZUV4Y2VwdGlvbigpe319LHsiLi4vbG9kYXNoIjoxOX1dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuLi9sb2Rhc2giKTttb2R1bGUuZXhwb3J0cz1Qcmlvcml0eVF1ZXVlO2Z1bmN0aW9uIFByaW9yaXR5UXVldWUoKXt0aGlzLl9hcnI9W107dGhpcy5fa2V5SW5kaWNlcz17fX1Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fyci5sZW5ndGh9O1ByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5rZXl9KX07UHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuaGFzPQpmdW5jdGlvbihrZXkpe3JldHVybiBfLmhhcyh0aGlzLl9rZXlJbmRpY2VzLGtleSl9O1ByaW9yaXR5UXVldWUucHJvdG90eXBlLnByaW9yaXR5PWZ1bmN0aW9uKGtleSl7dmFyIGluZGV4PXRoaXMuX2tleUluZGljZXNba2V5XTtpZihpbmRleCE9PXVuZGVmaW5lZClyZXR1cm4gdGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eX07UHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUubWluPWZ1bmN0aW9uKCl7aWYodGhpcy5zaXplKCk9PT0wKXRocm93IG5ldyBFcnJvcigiUXVldWUgdW5kZXJmbG93Iik7cmV0dXJuIHRoaXMuX2FyclswXS5rZXl9O1ByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZD1mdW5jdGlvbihrZXkscHJpb3JpdHkpe3ZhciBrZXlJbmRpY2VzPXRoaXMuX2tleUluZGljZXM7a2V5PVN0cmluZyhrZXkpO2lmKCFfLmhhcyhrZXlJbmRpY2VzLGtleSkpe3ZhciBhcnI9dGhpcy5fYXJyO3ZhciBpbmRleD1hcnIubGVuZ3RoO2tleUluZGljZXNba2V5XT1pbmRleDthcnIucHVzaCh7a2V5OmtleSwKcHJpb3JpdHk6cHJpb3JpdHl9KTt0aGlzLl9kZWNyZWFzZShpbmRleCk7cmV0dXJuIHRydWV9cmV0dXJuIGZhbHNlfTtQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgbWluPXRoaXMuX2Fyci5wb3AoKTtkZWxldGUgdGhpcy5fa2V5SW5kaWNlc1ttaW4ua2V5XTt0aGlzLl9oZWFwaWZ5KDApO3JldHVybiBtaW4ua2V5fTtQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZT1mdW5jdGlvbihrZXkscHJpb3JpdHkpe3ZhciBpbmRleD10aGlzLl9rZXlJbmRpY2VzW2tleV07aWYocHJpb3JpdHk+dGhpcy5fYXJyW2luZGV4XS5wcmlvcml0eSl0aHJvdyBuZXcgRXJyb3IoIk5ldyBwcmlvcml0eSBpcyBncmVhdGVyIHRoYW4gY3VycmVudCBwcmlvcml0eS4gIisiS2V5OiAiK2tleSsiIE9sZDogIit0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KyIgTmV3OiAiK3ByaW9yaXR5KTt0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5PQpwcmlvcml0eTt0aGlzLl9kZWNyZWFzZShpbmRleCl9O1ByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5PWZ1bmN0aW9uKGkpe3ZhciBhcnI9dGhpcy5fYXJyO3ZhciBsPTIqaSxyPWwrMSxsYXJnZXN0PWk7aWYobDxhcnIubGVuZ3RoKXtsYXJnZXN0PWFycltsXS5wcmlvcml0eTxhcnJbbGFyZ2VzdF0ucHJpb3JpdHk/bDpsYXJnZXN0O2lmKHI8YXJyLmxlbmd0aClsYXJnZXN0PWFycltyXS5wcmlvcml0eTxhcnJbbGFyZ2VzdF0ucHJpb3JpdHk/cjpsYXJnZXN0O2lmKGxhcmdlc3QhPT1pKXt0aGlzLl9zd2FwKGksbGFyZ2VzdCk7dGhpcy5faGVhcGlmeShsYXJnZXN0KX19fTtQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fZGVjcmVhc2U9ZnVuY3Rpb24oaW5kZXgpe3ZhciBhcnI9dGhpcy5fYXJyO3ZhciBwcmlvcml0eT1hcnJbaW5kZXhdLnByaW9yaXR5O3ZhciBwYXJlbnQ7d2hpbGUoaW5kZXghPT0wKXtwYXJlbnQ9aW5kZXg+PjE7aWYoYXJyW3BhcmVudF0ucHJpb3JpdHk8cHJpb3JpdHkpYnJlYWs7CnRoaXMuX3N3YXAoaW5kZXgscGFyZW50KTtpbmRleD1wYXJlbnR9fTtQcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5fc3dhcD1mdW5jdGlvbihpLGope3ZhciBhcnI9dGhpcy5fYXJyO3ZhciBrZXlJbmRpY2VzPXRoaXMuX2tleUluZGljZXM7dmFyIG9yaWdBcnJJPWFycltpXTt2YXIgb3JpZ0Fycko9YXJyW2pdO2FycltpXT1vcmlnQXJySjthcnJbal09b3JpZ0Fyckk7a2V5SW5kaWNlc1tvcmlnQXJySi5rZXldPWk7a2V5SW5kaWNlc1tvcmlnQXJySS5rZXldPWp9fSx7Ii4uL2xvZGFzaCI6MTl9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKTttb2R1bGUuZXhwb3J0cz1HcmFwaDt2YXIgREVGQVVMVF9FREdFX05BTUU9Ilx4MDAiLEdSQVBIX05PREU9Ilx4MDAiLEVER0VfS0VZX0RFTElNPSJcdTAwMDEiO2Z1bmN0aW9uIEdyYXBoKG9wdHMpe3RoaXMuX2lzRGlyZWN0ZWQ9Xy5oYXMob3B0cywiZGlyZWN0ZWQiKT9vcHRzLmRpcmVjdGVkOgp0cnVlO3RoaXMuX2lzTXVsdGlncmFwaD1fLmhhcyhvcHRzLCJtdWx0aWdyYXBoIik/b3B0cy5tdWx0aWdyYXBoOmZhbHNlO3RoaXMuX2lzQ29tcG91bmQ9Xy5oYXMob3B0cywiY29tcG91bmQiKT9vcHRzLmNvbXBvdW5kOmZhbHNlO3RoaXMuX2xhYmVsPXVuZGVmaW5lZDt0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49Xy5jb25zdGFudCh1bmRlZmluZWQpO3RoaXMuX2RlZmF1bHRFZGdlTGFiZWxGbj1fLmNvbnN0YW50KHVuZGVmaW5lZCk7dGhpcy5fbm9kZXM9e307aWYodGhpcy5faXNDb21wb3VuZCl7dGhpcy5fcGFyZW50PXt9O3RoaXMuX2NoaWxkcmVuPXt9O3RoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdPXt9fXRoaXMuX2luPXt9O3RoaXMuX3ByZWRzPXt9O3RoaXMuX291dD17fTt0aGlzLl9zdWNzPXt9O3RoaXMuX2VkZ2VPYmpzPXt9O3RoaXMuX2VkZ2VMYWJlbHM9e319R3JhcGgucHJvdG90eXBlLl9ub2RlQ291bnQ9MDtHcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudD0wO0dyYXBoLnByb3RvdHlwZS5pc0RpcmVjdGVkPQpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0RpcmVjdGVkfTtHcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzTXVsdGlncmFwaH07R3JhcGgucHJvdG90eXBlLmlzQ29tcG91bmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDb21wb3VuZH07R3JhcGgucHJvdG90eXBlLnNldEdyYXBoPWZ1bmN0aW9uKGxhYmVsKXt0aGlzLl9sYWJlbD1sYWJlbDtyZXR1cm4gdGhpc307R3JhcGgucHJvdG90eXBlLmdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhYmVsfTtHcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdE5vZGVMYWJlbD1mdW5jdGlvbihuZXdEZWZhdWx0KXtpZighXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKW5ld0RlZmF1bHQ9Xy5jb25zdGFudChuZXdEZWZhdWx0KTt0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm49bmV3RGVmYXVsdDtyZXR1cm4gdGhpc307R3JhcGgucHJvdG90eXBlLm5vZGVDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ub2RlQ291bnR9OwpHcmFwaC5wcm90b3R5cGUubm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gXy5rZXlzKHRoaXMuX25vZGVzKX07R3JhcGgucHJvdG90eXBlLnNvdXJjZXM9ZnVuY3Rpb24oKXt2YXIgc2VsZj10aGlzO3JldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksZnVuY3Rpb24odil7cmV0dXJuIF8uaXNFbXB0eShzZWxmLl9pblt2XSl9KX07R3JhcGgucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHNlbGY9dGhpcztyZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLGZ1bmN0aW9uKHYpe3JldHVybiBfLmlzRW1wdHkoc2VsZi5fb3V0W3ZdKX0pfTtHcmFwaC5wcm90b3R5cGUuc2V0Tm9kZXM9ZnVuY3Rpb24odnMsdmFsdWUpe3ZhciBhcmdzPWFyZ3VtZW50czt2YXIgc2VsZj10aGlzO18uZWFjaCh2cyxmdW5jdGlvbih2KXtpZihhcmdzLmxlbmd0aD4xKXNlbGYuc2V0Tm9kZSh2LHZhbHVlKTtlbHNlIHNlbGYuc2V0Tm9kZSh2KX0pO3JldHVybiB0aGlzfTtHcmFwaC5wcm90b3R5cGUuc2V0Tm9kZT0KZnVuY3Rpb24odix2YWx1ZSl7aWYoXy5oYXModGhpcy5fbm9kZXMsdikpe2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl0aGlzLl9ub2Rlc1t2XT12YWx1ZTtyZXR1cm4gdGhpc310aGlzLl9ub2Rlc1t2XT1hcmd1bWVudHMubGVuZ3RoPjE/dmFsdWU6dGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO2lmKHRoaXMuX2lzQ29tcG91bmQpe3RoaXMuX3BhcmVudFt2XT1HUkFQSF9OT0RFO3RoaXMuX2NoaWxkcmVuW3ZdPXt9O3RoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdW3ZdPXRydWV9dGhpcy5faW5bdl09e307dGhpcy5fcHJlZHNbdl09e307dGhpcy5fb3V0W3ZdPXt9O3RoaXMuX3N1Y3Nbdl09e307Kyt0aGlzLl9ub2RlQ291bnQ7cmV0dXJuIHRoaXN9O0dyYXBoLnByb3RvdHlwZS5ub2RlPWZ1bmN0aW9uKHYpe3JldHVybiB0aGlzLl9ub2Rlc1t2XX07R3JhcGgucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odil7cmV0dXJuIF8uaGFzKHRoaXMuX25vZGVzLHYpfTtHcmFwaC5wcm90b3R5cGUucmVtb3ZlTm9kZT0KZnVuY3Rpb24odil7dmFyIHNlbGY9dGhpcztpZihfLmhhcyh0aGlzLl9ub2Rlcyx2KSl7dmFyIHJlbW92ZUVkZ2U9ZnVuY3Rpb24oZSl7c2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKX07ZGVsZXRlIHRoaXMuX25vZGVzW3ZdO2lmKHRoaXMuX2lzQ29tcG91bmQpe3RoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO2RlbGV0ZSB0aGlzLl9wYXJlbnRbdl07Xy5lYWNoKHRoaXMuY2hpbGRyZW4odiksZnVuY3Rpb24oY2hpbGQpe3NlbGYuc2V0UGFyZW50KGNoaWxkKX0pO2RlbGV0ZSB0aGlzLl9jaGlsZHJlblt2XX1fLmVhY2goXy5rZXlzKHRoaXMuX2luW3ZdKSxyZW1vdmVFZGdlKTtkZWxldGUgdGhpcy5faW5bdl07ZGVsZXRlIHRoaXMuX3ByZWRzW3ZdO18uZWFjaChfLmtleXModGhpcy5fb3V0W3ZdKSxyZW1vdmVFZGdlKTtkZWxldGUgdGhpcy5fb3V0W3ZdO2RlbGV0ZSB0aGlzLl9zdWNzW3ZdOy0tdGhpcy5fbm9kZUNvdW50fXJldHVybiB0aGlzfTtHcmFwaC5wcm90b3R5cGUuc2V0UGFyZW50PQpmdW5jdGlvbih2LHBhcmVudCl7aWYoIXRoaXMuX2lzQ29tcG91bmQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaCIpO2lmKF8uaXNVbmRlZmluZWQocGFyZW50KSlwYXJlbnQ9R1JBUEhfTk9ERTtlbHNle3BhcmVudCs9IiI7Zm9yKHZhciBhbmNlc3Rvcj1wYXJlbnQ7IV8uaXNVbmRlZmluZWQoYW5jZXN0b3IpO2FuY2VzdG9yPXRoaXMucGFyZW50KGFuY2VzdG9yKSlpZihhbmNlc3Rvcj09PXYpdGhyb3cgbmV3IEVycm9yKCJTZXR0aW5nICIrcGFyZW50KyIgYXMgcGFyZW50IG9mICIrdisiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKHBhcmVudCl9dGhpcy5zZXROb2RlKHYpO3RoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO3RoaXMuX3BhcmVudFt2XT1wYXJlbnQ7dGhpcy5fY2hpbGRyZW5bcGFyZW50XVt2XT10cnVlO3JldHVybiB0aGlzfTtHcmFwaC5wcm90b3R5cGUuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0PQpmdW5jdGlvbih2KXtkZWxldGUgdGhpcy5fY2hpbGRyZW5bdGhpcy5fcGFyZW50W3ZdXVt2XX07R3JhcGgucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih2KXtpZih0aGlzLl9pc0NvbXBvdW5kKXt2YXIgcGFyZW50PXRoaXMuX3BhcmVudFt2XTtpZihwYXJlbnQhPT1HUkFQSF9OT0RFKXJldHVybiBwYXJlbnR9fTtHcmFwaC5wcm90b3R5cGUuY2hpbGRyZW49ZnVuY3Rpb24odil7aWYoXy5pc1VuZGVmaW5lZCh2KSl2PUdSQVBIX05PREU7aWYodGhpcy5faXNDb21wb3VuZCl7dmFyIGNoaWxkcmVuPXRoaXMuX2NoaWxkcmVuW3ZdO2lmKGNoaWxkcmVuKXJldHVybiBfLmtleXMoY2hpbGRyZW4pfWVsc2UgaWYodj09PUdSQVBIX05PREUpcmV0dXJuIHRoaXMubm9kZXMoKTtlbHNlIGlmKHRoaXMuaGFzTm9kZSh2KSlyZXR1cm5bXX07R3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycz1mdW5jdGlvbih2KXt2YXIgcHJlZHNWPXRoaXMuX3ByZWRzW3ZdO2lmKHByZWRzVilyZXR1cm4gXy5rZXlzKHByZWRzVil9OwpHcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycz1mdW5jdGlvbih2KXt2YXIgc3Vjc1Y9dGhpcy5fc3Vjc1t2XTtpZihzdWNzVilyZXR1cm4gXy5rZXlzKHN1Y3NWKX07R3JhcGgucHJvdG90eXBlLm5laWdoYm9ycz1mdW5jdGlvbih2KXt2YXIgcHJlZHM9dGhpcy5wcmVkZWNlc3NvcnModik7aWYocHJlZHMpcmV0dXJuIF8udW5pb24ocHJlZHMsdGhpcy5zdWNjZXNzb3JzKHYpKX07R3JhcGgucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih2KXt2YXIgbmVpZ2hib3JzO2lmKHRoaXMuaXNEaXJlY3RlZCgpKW5laWdoYm9ycz10aGlzLnN1Y2Nlc3NvcnModik7ZWxzZSBuZWlnaGJvcnM9dGhpcy5uZWlnaGJvcnModik7cmV0dXJuIG5laWdoYm9ycy5sZW5ndGg9PT0wfTtHcmFwaC5wcm90b3R5cGUuZmlsdGVyTm9kZXM9ZnVuY3Rpb24oZmlsdGVyKXt2YXIgY29weT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCwKY29tcG91bmQ6dGhpcy5faXNDb21wb3VuZH0pO2NvcHkuc2V0R3JhcGgodGhpcy5ncmFwaCgpKTt2YXIgc2VsZj10aGlzO18uZWFjaCh0aGlzLl9ub2RlcyxmdW5jdGlvbih2YWx1ZSx2KXtpZihmaWx0ZXIodikpY29weS5zZXROb2RlKHYsdmFsdWUpfSk7Xy5lYWNoKHRoaXMuX2VkZ2VPYmpzLGZ1bmN0aW9uKGUpe2lmKGNvcHkuaGFzTm9kZShlLnYpJiZjb3B5Lmhhc05vZGUoZS53KSljb3B5LnNldEVkZ2UoZSxzZWxmLmVkZ2UoZSkpfSk7dmFyIHBhcmVudHM9e307ZnVuY3Rpb24gZmluZFBhcmVudCh2KXt2YXIgcGFyZW50PXNlbGYucGFyZW50KHYpO2lmKHBhcmVudD09PXVuZGVmaW5lZHx8Y29weS5oYXNOb2RlKHBhcmVudCkpe3BhcmVudHNbdl09cGFyZW50O3JldHVybiBwYXJlbnR9ZWxzZSBpZihwYXJlbnQgaW4gcGFyZW50cylyZXR1cm4gcGFyZW50c1twYXJlbnRdO2Vsc2UgcmV0dXJuIGZpbmRQYXJlbnQocGFyZW50KX1pZih0aGlzLl9pc0NvbXBvdW5kKV8uZWFjaChjb3B5Lm5vZGVzKCksCmZ1bmN0aW9uKHYpe2NvcHkuc2V0UGFyZW50KHYsZmluZFBhcmVudCh2KSl9KTtyZXR1cm4gY29weX07R3JhcGgucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWw9ZnVuY3Rpb24obmV3RGVmYXVsdCl7aWYoIV8uaXNGdW5jdGlvbihuZXdEZWZhdWx0KSluZXdEZWZhdWx0PV8uY29uc3RhbnQobmV3RGVmYXVsdCk7dGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPW5ld0RlZmF1bHQ7cmV0dXJuIHRoaXN9O0dyYXBoLnByb3RvdHlwZS5lZGdlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWRnZUNvdW50fTtHcmFwaC5wcm90b3R5cGUuZWRnZXM9ZnVuY3Rpb24oKXtyZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpfTtHcmFwaC5wcm90b3R5cGUuc2V0UGF0aD1mdW5jdGlvbih2cyx2YWx1ZSl7dmFyIHNlbGY9dGhpcyxhcmdzPWFyZ3VtZW50cztfLnJlZHVjZSh2cyxmdW5jdGlvbih2LHcpe2lmKGFyZ3MubGVuZ3RoPjEpc2VsZi5zZXRFZGdlKHYsdyx2YWx1ZSk7ZWxzZSBzZWxmLnNldEVkZ2UodiwKdyk7cmV0dXJuIHd9KTtyZXR1cm4gdGhpc307R3JhcGgucHJvdG90eXBlLnNldEVkZ2U9ZnVuY3Rpb24oKXt2YXIgdix3LG5hbWUsdmFsdWUsdmFsdWVTcGVjaWZpZWQ9ZmFsc2UsYXJnMD1hcmd1bWVudHNbMF07aWYodHlwZW9mIGFyZzA9PT0ib2JqZWN0IiYmYXJnMCE9PW51bGwmJiJ2ImluIGFyZzApe3Y9YXJnMC52O3c9YXJnMC53O25hbWU9YXJnMC5uYW1lO2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yKXt2YWx1ZT1hcmd1bWVudHNbMV07dmFsdWVTcGVjaWZpZWQ9dHJ1ZX19ZWxzZXt2PWFyZzA7dz1hcmd1bWVudHNbMV07bmFtZT1hcmd1bWVudHNbM107aWYoYXJndW1lbnRzLmxlbmd0aD4yKXt2YWx1ZT1hcmd1bWVudHNbMl07dmFsdWVTcGVjaWZpZWQ9dHJ1ZX19dj0iIit2O3c9IiIrdztpZighXy5pc1VuZGVmaW5lZChuYW1lKSluYW1lPSIiK25hbWU7dmFyIGU9ZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsdix3LG5hbWUpO2lmKF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsCmUpKXtpZih2YWx1ZVNwZWNpZmllZCl0aGlzLl9lZGdlTGFiZWxzW2VdPXZhbHVlO3JldHVybiB0aGlzfWlmKCFfLmlzVW5kZWZpbmVkKG5hbWUpJiYhdGhpcy5faXNNdWx0aWdyYXBoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggXHgzZCBmYWxzZSIpO3RoaXMuc2V0Tm9kZSh2KTt0aGlzLnNldE5vZGUodyk7dGhpcy5fZWRnZUxhYmVsc1tlXT12YWx1ZVNwZWNpZmllZD92YWx1ZTp0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odix3LG5hbWUpO3ZhciBlZGdlT2JqPWVkZ2VBcmdzVG9PYmoodGhpcy5faXNEaXJlY3RlZCx2LHcsbmFtZSk7dj1lZGdlT2JqLnY7dz1lZGdlT2JqLnc7T2JqZWN0LmZyZWV6ZShlZGdlT2JqKTt0aGlzLl9lZGdlT2Jqc1tlXT1lZGdlT2JqO2luY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3ByZWRzW3ddLHYpO2luY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3N1Y3Nbdl0sdyk7dGhpcy5faW5bd11bZV09CmVkZ2VPYmo7dGhpcy5fb3V0W3ZdW2VdPWVkZ2VPYmo7dGhpcy5fZWRnZUNvdW50Kys7cmV0dXJuIHRoaXN9O0dyYXBoLnByb3RvdHlwZS5lZGdlPWZ1bmN0aW9uKHYsdyxuYW1lKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPT09MT9lZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6ZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsdix3LG5hbWUpO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdfTtHcmFwaC5wcm90b3R5cGUuaGFzRWRnZT1mdW5jdGlvbih2LHcsbmFtZSl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD09PTE/ZWRnZU9ialRvSWQodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOmVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLHYsdyxuYW1lKTtyZXR1cm4gXy5oYXModGhpcy5fZWRnZUxhYmVscyxlKX07R3JhcGgucHJvdG90eXBlLnJlbW92ZUVkZ2U9ZnVuY3Rpb24odix3LG5hbWUpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg9PT0xPwplZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLGFyZ3VtZW50c1swXSk6ZWRnZUFyZ3NUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsdix3LG5hbWUpLGVkZ2U9dGhpcy5fZWRnZU9ianNbZV07aWYoZWRnZSl7dj1lZGdlLnY7dz1lZGdlLnc7ZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbZV07ZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW2VdO2RlY3JlbWVudE9yUmVtb3ZlRW50cnkodGhpcy5fcHJlZHNbd10sdik7ZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9zdWNzW3ZdLHcpO2RlbGV0ZSB0aGlzLl9pblt3XVtlXTtkZWxldGUgdGhpcy5fb3V0W3ZdW2VdO3RoaXMuX2VkZ2VDb3VudC0tfXJldHVybiB0aGlzfTtHcmFwaC5wcm90b3R5cGUuaW5FZGdlcz1mdW5jdGlvbih2LHUpe3ZhciBpblY9dGhpcy5faW5bdl07aWYoaW5WKXt2YXIgZWRnZXM9Xy52YWx1ZXMoaW5WKTtpZighdSlyZXR1cm4gZWRnZXM7cmV0dXJuIF8uZmlsdGVyKGVkZ2VzLGZ1bmN0aW9uKGVkZ2Upe3JldHVybiBlZGdlLnY9PT0KdX0pfX07R3JhcGgucHJvdG90eXBlLm91dEVkZ2VzPWZ1bmN0aW9uKHYsdyl7dmFyIG91dFY9dGhpcy5fb3V0W3ZdO2lmKG91dFYpe3ZhciBlZGdlcz1fLnZhbHVlcyhvdXRWKTtpZighdylyZXR1cm4gZWRnZXM7cmV0dXJuIF8uZmlsdGVyKGVkZ2VzLGZ1bmN0aW9uKGVkZ2Upe3JldHVybiBlZGdlLnc9PT13fSl9fTtHcmFwaC5wcm90b3R5cGUubm9kZUVkZ2VzPWZ1bmN0aW9uKHYsdyl7dmFyIGluRWRnZXM9dGhpcy5pbkVkZ2VzKHYsdyk7aWYoaW5FZGdlcylyZXR1cm4gaW5FZGdlcy5jb25jYXQodGhpcy5vdXRFZGdlcyh2LHcpKX07ZnVuY3Rpb24gaW5jcmVtZW50T3JJbml0RW50cnkobWFwLGspe2lmKG1hcFtrXSltYXBba10rKztlbHNlIG1hcFtrXT0xfWZ1bmN0aW9uIGRlY3JlbWVudE9yUmVtb3ZlRW50cnkobWFwLGspe2lmKCEtLW1hcFtrXSlkZWxldGUgbWFwW2tdfWZ1bmN0aW9uIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLHZfLHdfLG5hbWUpe3ZhciB2PSIiK3ZfO3ZhciB3PQoiIit3XztpZighaXNEaXJlY3RlZCYmdj53KXt2YXIgdG1wPXY7dj13O3c9dG1wfXJldHVybiB2K0VER0VfS0VZX0RFTElNK3crRURHRV9LRVlfREVMSU0rKF8uaXNVbmRlZmluZWQobmFtZSk/REVGQVVMVF9FREdFX05BTUU6bmFtZSl9ZnVuY3Rpb24gZWRnZUFyZ3NUb09iaihpc0RpcmVjdGVkLHZfLHdfLG5hbWUpe3ZhciB2PSIiK3ZfO3ZhciB3PSIiK3dfO2lmKCFpc0RpcmVjdGVkJiZ2Pncpe3ZhciB0bXA9djt2PXc7dz10bXB9dmFyIGVkZ2VPYmo9e3Y6dix3Ond9O2lmKG5hbWUpZWRnZU9iai5uYW1lPW5hbWU7cmV0dXJuIGVkZ2VPYmp9ZnVuY3Rpb24gZWRnZU9ialRvSWQoaXNEaXJlY3RlZCxlZGdlT2JqKXtyZXR1cm4gZWRnZUFyZ3NUb0lkKGlzRGlyZWN0ZWQsZWRnZU9iai52LGVkZ2VPYmoudyxlZGdlT2JqLm5hbWUpfX0seyIuL2xvZGFzaCI6MTl9XSwxNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9e0dyYXBoOnJlcXVpcmUoIi4vZ3JhcGgiKSwKdmVyc2lvbjpyZXF1aXJlKCIuL3ZlcnNpb24iKX19LHsiLi9ncmFwaCI6MTYsIi4vdmVyc2lvbiI6MjB9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKSxHcmFwaD1yZXF1aXJlKCIuL2dyYXBoIik7bW9kdWxlLmV4cG9ydHM9e3dyaXRlOndyaXRlLHJlYWQ6cmVhZH07ZnVuY3Rpb24gd3JpdGUoZyl7dmFyIGpzb249e29wdGlvbnM6e2RpcmVjdGVkOmcuaXNEaXJlY3RlZCgpLG11bHRpZ3JhcGg6Zy5pc011bHRpZ3JhcGgoKSxjb21wb3VuZDpnLmlzQ29tcG91bmQoKX0sbm9kZXM6d3JpdGVOb2RlcyhnKSxlZGdlczp3cml0ZUVkZ2VzKGcpfTtpZighXy5pc1VuZGVmaW5lZChnLmdyYXBoKCkpKWpzb24udmFsdWU9Xy5jbG9uZShnLmdyYXBoKCkpO3JldHVybiBqc29ufWZ1bmN0aW9uIHdyaXRlTm9kZXMoZyl7cmV0dXJuIF8ubWFwKGcubm9kZXMoKSxmdW5jdGlvbih2KXt2YXIgbm9kZVZhbHVlPWcubm9kZSh2KSxwYXJlbnQ9CmcucGFyZW50KHYpLG5vZGU9e3Y6dn07aWYoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSlub2RlLnZhbHVlPW5vZGVWYWx1ZTtpZighXy5pc1VuZGVmaW5lZChwYXJlbnQpKW5vZGUucGFyZW50PXBhcmVudDtyZXR1cm4gbm9kZX0pfWZ1bmN0aW9uIHdyaXRlRWRnZXMoZyl7cmV0dXJuIF8ubWFwKGcuZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgZWRnZVZhbHVlPWcuZWRnZShlKSxlZGdlPXt2OmUudix3OmUud307aWYoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSllZGdlLm5hbWU9ZS5uYW1lO2lmKCFfLmlzVW5kZWZpbmVkKGVkZ2VWYWx1ZSkpZWRnZS52YWx1ZT1lZGdlVmFsdWU7cmV0dXJuIGVkZ2V9KX1mdW5jdGlvbiByZWFkKGpzb24pe3ZhciBnPShuZXcgR3JhcGgoanNvbi5vcHRpb25zKSkuc2V0R3JhcGgoanNvbi52YWx1ZSk7Xy5lYWNoKGpzb24ubm9kZXMsZnVuY3Rpb24oZW50cnkpe2cuc2V0Tm9kZShlbnRyeS52LGVudHJ5LnZhbHVlKTtpZihlbnRyeS5wYXJlbnQpZy5zZXRQYXJlbnQoZW50cnkudiwKZW50cnkucGFyZW50KX0pO18uZWFjaChqc29uLmVkZ2VzLGZ1bmN0aW9uKGVudHJ5KXtnLnNldEVkZ2Uoe3Y6ZW50cnkudix3OmVudHJ5LncsbmFtZTplbnRyeS5uYW1lfSxlbnRyeS52YWx1ZSl9KTtyZXR1cm4gZ319LHsiLi9ncmFwaCI6MTYsIi4vbG9kYXNoIjoxOX1dLDE5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgbG9kYXNoO2lmKHR5cGVvZiByZXF1aXJlPT09ImZ1bmN0aW9uIil0cnl7bG9kYXNoPXJlcXVpcmUoImxvZGFzaCIpfWNhdGNoKGUpe31pZighbG9kYXNoKWxvZGFzaD13aW5kb3cuXzttb2R1bGUuZXhwb3J0cz1sb2Rhc2h9LHsibG9kYXNoIjp1bmRlZmluZWR9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9IjIuMS41In0se31dfSx7fSxbMV0pKDEpfSk7CihmdW5jdGlvbihmKXtpZih0eXBlb2YgZXhwb3J0cz09PSJvYmplY3QiJiZ0eXBlb2YgbW9kdWxlIT09InVuZGVmaW5lZCIpbW9kdWxlLmV4cG9ydHM9ZigpO2Vsc2UgaWYodHlwZW9mIGRlZmluZT09PSJmdW5jdGlvbiImJmRlZmluZS5hbWQpZGVmaW5lKFtdLGYpO2Vsc2V7dmFyIGc7aWYodHlwZW9mIHdpbmRvdyE9PSJ1bmRlZmluZWQiKWc9d2luZG93O2Vsc2UgaWYodHlwZW9mIGdsb2JhbCE9PSJ1bmRlZmluZWQiKWc9Z2xvYmFsO2Vsc2UgaWYodHlwZW9mIHNlbGYhPT0idW5kZWZpbmVkIilnPXNlbGY7ZWxzZSBnPXRoaXM7Zy5kYWdyZT1mKCl9fSkoZnVuY3Rpb24oKXt2YXIgZGVmaW5lLG1vZHVsZSxleHBvcnRzO3JldHVybiBmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09ImZ1bmN0aW9uIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPQpuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIitvKyInIik7dGhyb3cgZi5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixmO312YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT0iZnVuY3Rpb24iJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXttb2R1bGUuZXhwb3J0cz17Z3JhcGhsaWI6cmVxdWlyZSgiLi9saWIvZ3JhcGhsaWIiKSxsYXlvdXQ6cmVxdWlyZSgiLi9saWIvbGF5b3V0IiksZGVidWc6cmVxdWlyZSgiLi9saWIvZGVidWciKSx1dGlsOnt0aW1lOnJlcXVpcmUoIi4vbGliL3V0aWwiKS50aW1lLG5vdGltZTpyZXF1aXJlKCIuL2xpYi91dGlsIikubm90aW1lfSwKdmVyc2lvbjpyZXF1aXJlKCIuL2xpYi92ZXJzaW9uIil9fSx7Ii4vbGliL2RlYnVnIjo2LCIuL2xpYi9ncmFwaGxpYiI6NywiLi9saWIvbGF5b3V0Ijo5LCIuL2xpYi91dGlsIjoyOSwiLi9saWIvdmVyc2lvbiI6MzB9XSwyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuL2xvZGFzaCIpLGdyZWVkeUZBUz1yZXF1aXJlKCIuL2dyZWVkeS1mYXMiKTttb2R1bGUuZXhwb3J0cz17cnVuOnJ1bix1bmRvOnVuZG99O2Z1bmN0aW9uIHJ1bihnKXt2YXIgZmFzPWcuZ3JhcGgoKS5hY3ljbGljZXI9PT0iZ3JlZWR5Ij9ncmVlZHlGQVMoZyx3ZWlnaHRGbihnKSk6ZGZzRkFTKGcpO18uZm9yRWFjaChmYXMsZnVuY3Rpb24oZSl7dmFyIGxhYmVsPWcuZWRnZShlKTtnLnJlbW92ZUVkZ2UoZSk7bGFiZWwuZm9yd2FyZE5hbWU9ZS5uYW1lO2xhYmVsLnJldmVyc2VkPXRydWU7Zy5zZXRFZGdlKGUudyxlLnYsbGFiZWwsXy51bmlxdWVJZCgicmV2IikpfSk7ZnVuY3Rpb24gd2VpZ2h0Rm4oZyl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBnLmVkZ2UoZSkud2VpZ2h0fX0KfWZ1bmN0aW9uIGRmc0ZBUyhnKXt2YXIgZmFzPVtdLHN0YWNrPXt9LHZpc2l0ZWQ9e307ZnVuY3Rpb24gZGZzKHYpe2lmKF8uaGFzKHZpc2l0ZWQsdikpcmV0dXJuO3Zpc2l0ZWRbdl09dHJ1ZTtzdGFja1t2XT10cnVlO18uZm9yRWFjaChnLm91dEVkZ2VzKHYpLGZ1bmN0aW9uKGUpe2lmKF8uaGFzKHN0YWNrLGUudykpZmFzLnB1c2goZSk7ZWxzZSBkZnMoZS53KX0pO2RlbGV0ZSBzdGFja1t2XX1fLmZvckVhY2goZy5ub2RlcygpLGRmcyk7cmV0dXJuIGZhc31mdW5jdGlvbiB1bmRvKGcpe18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7dmFyIGxhYmVsPWcuZWRnZShlKTtpZihsYWJlbC5yZXZlcnNlZCl7Zy5yZW1vdmVFZGdlKGUpO3ZhciBmb3J3YXJkTmFtZT1sYWJlbC5mb3J3YXJkTmFtZTtkZWxldGUgbGFiZWwucmV2ZXJzZWQ7ZGVsZXRlIGxhYmVsLmZvcndhcmROYW1lO2cuc2V0RWRnZShlLncsZS52LGxhYmVsLGZvcndhcmROYW1lKX19KX19LHsiLi9ncmVlZHktZmFzIjo4LAoiLi9sb2Rhc2giOjEwfV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKSx1dGlsPXJlcXVpcmUoIi4vdXRpbCIpO21vZHVsZS5leHBvcnRzPWFkZEJvcmRlclNlZ21lbnRzO2Z1bmN0aW9uIGFkZEJvcmRlclNlZ21lbnRzKGcpe2Z1bmN0aW9uIGRmcyh2KXt2YXIgY2hpbGRyZW49Zy5jaGlsZHJlbih2KSxub2RlPWcubm9kZSh2KTtpZihjaGlsZHJlbi5sZW5ndGgpXy5mb3JFYWNoKGNoaWxkcmVuLGRmcyk7aWYoXy5oYXMobm9kZSwibWluUmFuayIpKXtub2RlLmJvcmRlckxlZnQ9W107bm9kZS5ib3JkZXJSaWdodD1bXTtmb3IodmFyIHJhbms9bm9kZS5taW5SYW5rLG1heFJhbms9bm9kZS5tYXhSYW5rKzE7cmFuazxtYXhSYW5rOysrcmFuayl7YWRkQm9yZGVyTm9kZShnLCJib3JkZXJMZWZ0IiwiX2JsIix2LG5vZGUscmFuayk7YWRkQm9yZGVyTm9kZShnLCJib3JkZXJSaWdodCIsIl9iciIsdixub2RlLHJhbmspfX19Xy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwKZGZzKX1mdW5jdGlvbiBhZGRCb3JkZXJOb2RlKGcscHJvcCxwcmVmaXgsc2csc2dOb2RlLHJhbmspe3ZhciBsYWJlbD17d2lkdGg6MCxoZWlnaHQ6MCxyYW5rOnJhbmssYm9yZGVyVHlwZTpwcm9wfSxwcmV2PXNnTm9kZVtwcm9wXVtyYW5rLTFdLGN1cnI9dXRpbC5hZGREdW1teU5vZGUoZywiYm9yZGVyIixsYWJlbCxwcmVmaXgpO3NnTm9kZVtwcm9wXVtyYW5rXT1jdXJyO2cuc2V0UGFyZW50KGN1cnIsc2cpO2lmKHByZXYpZy5zZXRFZGdlKHByZXYsY3Vycix7d2VpZ2h0OjF9KX19LHsiLi9sb2Rhc2giOjEwLCIuL3V0aWwiOjI5fV0sNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKTttb2R1bGUuZXhwb3J0cz17YWRqdXN0OmFkanVzdCx1bmRvOnVuZG99O2Z1bmN0aW9uIGFkanVzdChnKXt2YXIgcmFua0Rpcj1nLmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpO2lmKHJhbmtEaXI9PT0ibHIifHxyYW5rRGlyPT09InJsIilzd2FwV2lkdGhIZWlnaHQoZyl9CmZ1bmN0aW9uIHVuZG8oZyl7dmFyIHJhbmtEaXI9Zy5ncmFwaCgpLnJhbmtkaXIudG9Mb3dlckNhc2UoKTtpZihyYW5rRGlyPT09ImJ0Inx8cmFua0Rpcj09PSJybCIpcmV2ZXJzZVkoZyk7aWYocmFua0Rpcj09PSJsciJ8fHJhbmtEaXI9PT0icmwiKXtzd2FwWFkoZyk7c3dhcFdpZHRoSGVpZ2h0KGcpfX1mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHQoZyl7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtzd2FwV2lkdGhIZWlnaHRPbmUoZy5ub2RlKHYpKX0pO18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7c3dhcFdpZHRoSGVpZ2h0T25lKGcuZWRnZShlKSl9KX1mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHRPbmUoYXR0cnMpe3ZhciB3PWF0dHJzLndpZHRoO2F0dHJzLndpZHRoPWF0dHJzLmhlaWdodDthdHRycy5oZWlnaHQ9d31mdW5jdGlvbiByZXZlcnNlWShnKXtfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3JldmVyc2VZT25lKGcubm9kZSh2KSl9KTtfLmZvckVhY2goZy5lZGdlcygpLApmdW5jdGlvbihlKXt2YXIgZWRnZT1nLmVkZ2UoZSk7Xy5mb3JFYWNoKGVkZ2UucG9pbnRzLHJldmVyc2VZT25lKTtpZihfLmhhcyhlZGdlLCJ5IikpcmV2ZXJzZVlPbmUoZWRnZSl9KX1mdW5jdGlvbiByZXZlcnNlWU9uZShhdHRycyl7YXR0cnMueT0tYXR0cnMueX1mdW5jdGlvbiBzd2FwWFkoZyl7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtzd2FwWFlPbmUoZy5ub2RlKHYpKX0pO18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7dmFyIGVkZ2U9Zy5lZGdlKGUpO18uZm9yRWFjaChlZGdlLnBvaW50cyxzd2FwWFlPbmUpO2lmKF8uaGFzKGVkZ2UsIngiKSlzd2FwWFlPbmUoZWRnZSl9KX1mdW5jdGlvbiBzd2FwWFlPbmUoYXR0cnMpe3ZhciB4PWF0dHJzLng7YXR0cnMueD1hdHRycy55O2F0dHJzLnk9eH19LHsiLi9sb2Rhc2giOjEwfV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9TGlzdDtmdW5jdGlvbiBMaXN0KCl7dmFyIHNlbnRpbmVsPQp7fTtzZW50aW5lbC5fbmV4dD1zZW50aW5lbC5fcHJldj1zZW50aW5lbDt0aGlzLl9zZW50aW5lbD1zZW50aW5lbH1MaXN0LnByb3RvdHlwZS5kZXF1ZXVlPWZ1bmN0aW9uKCl7dmFyIHNlbnRpbmVsPXRoaXMuX3NlbnRpbmVsLGVudHJ5PXNlbnRpbmVsLl9wcmV2O2lmKGVudHJ5IT09c2VudGluZWwpe3VubGluayhlbnRyeSk7cmV0dXJuIGVudHJ5fX07TGlzdC5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlbnRyeSl7dmFyIHNlbnRpbmVsPXRoaXMuX3NlbnRpbmVsO2lmKGVudHJ5Ll9wcmV2JiZlbnRyeS5fbmV4dCl1bmxpbmsoZW50cnkpO2VudHJ5Ll9uZXh0PXNlbnRpbmVsLl9uZXh0O3NlbnRpbmVsLl9uZXh0Ll9wcmV2PWVudHJ5O3NlbnRpbmVsLl9uZXh0PWVudHJ5O2VudHJ5Ll9wcmV2PXNlbnRpbmVsfTtMaXN0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBzdHJzPVtdLHNlbnRpbmVsPXRoaXMuX3NlbnRpbmVsLGN1cnI9c2VudGluZWwuX3ByZXY7d2hpbGUoY3VyciE9PQpzZW50aW5lbCl7c3Rycy5wdXNoKEpTT04uc3RyaW5naWZ5KGN1cnIsZmlsdGVyT3V0TGlua3MpKTtjdXJyPWN1cnIuX3ByZXZ9cmV0dXJuIlsiK3N0cnMuam9pbigiLCAiKSsiXSJ9O2Z1bmN0aW9uIHVubGluayhlbnRyeSl7ZW50cnkuX3ByZXYuX25leHQ9ZW50cnkuX25leHQ7ZW50cnkuX25leHQuX3ByZXY9ZW50cnkuX3ByZXY7ZGVsZXRlIGVudHJ5Ll9uZXh0O2RlbGV0ZSBlbnRyeS5fcHJldn1mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLHYpe2lmKGshPT0iX25leHQiJiZrIT09Il9wcmV2IilyZXR1cm4gdn19LHt9XSw2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuL2xvZGFzaCIpLHV0aWw9cmVxdWlyZSgiLi91dGlsIiksR3JhcGg9cmVxdWlyZSgiLi9ncmFwaGxpYiIpLkdyYXBoO21vZHVsZS5leHBvcnRzPXtkZWJ1Z09yZGVyaW5nOmRlYnVnT3JkZXJpbmd9O2Z1bmN0aW9uIGRlYnVnT3JkZXJpbmcoZyl7dmFyIGxheWVyTWF0cml4PQp1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7dmFyIGg9KG5ldyBHcmFwaCh7Y29tcG91bmQ6dHJ1ZSxtdWx0aWdyYXBoOnRydWV9KSkuc2V0R3JhcGgoe30pO18uZm9yRWFjaChnLm5vZGVzKCksZnVuY3Rpb24odil7aC5zZXROb2RlKHYse2xhYmVsOnZ9KTtoLnNldFBhcmVudCh2LCJsYXllciIrZy5ub2RlKHYpLnJhbmspfSk7Xy5mb3JFYWNoKGcuZWRnZXMoKSxmdW5jdGlvbihlKXtoLnNldEVkZ2UoZS52LGUudyx7fSxlLm5hbWUpfSk7Xy5mb3JFYWNoKGxheWVyTWF0cml4LGZ1bmN0aW9uKGxheWVyLGkpe3ZhciBsYXllclY9ImxheWVyIitpO2guc2V0Tm9kZShsYXllclYse3Jhbms6InNhbWUifSk7Xy5yZWR1Y2UobGF5ZXIsZnVuY3Rpb24odSx2KXtoLnNldEVkZ2UodSx2LHtzdHlsZToiaW52aXMifSk7cmV0dXJuIHZ9KX0pO3JldHVybiBofX0seyIuL2dyYXBobGliIjo3LCIuL2xvZGFzaCI6MTAsIi4vdXRpbCI6Mjl9XSw3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgZ3JhcGhsaWI7CmlmKHR5cGVvZiByZXF1aXJlPT09ImZ1bmN0aW9uIil0cnl7Z3JhcGhsaWI9cmVxdWlyZSgiZ3JhcGhsaWIiKX1jYXRjaChlKXt9aWYoIWdyYXBobGliKWdyYXBobGliPXdpbmRvdy5ncmFwaGxpYjttb2R1bGUuZXhwb3J0cz1ncmFwaGxpYn0seyJncmFwaGxpYiI6dW5kZWZpbmVkfV0sODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKSxHcmFwaD1yZXF1aXJlKCIuL2dyYXBobGliIikuR3JhcGgsTGlzdD1yZXF1aXJlKCIuL2RhdGEvbGlzdCIpO21vZHVsZS5leHBvcnRzPWdyZWVkeUZBUzt2YXIgREVGQVVMVF9XRUlHSFRfRk49Xy5jb25zdGFudCgxKTtmdW5jdGlvbiBncmVlZHlGQVMoZyx3ZWlnaHRGbil7aWYoZy5ub2RlQ291bnQoKTw9MSlyZXR1cm5bXTt2YXIgc3RhdGU9YnVpbGRTdGF0ZShnLHdlaWdodEZufHxERUZBVUxUX1dFSUdIVF9GTik7dmFyIHJlc3VsdHM9ZG9HcmVlZHlGQVMoc3RhdGUuZ3JhcGgsc3RhdGUuYnVja2V0cywKc3RhdGUuemVyb0lkeCk7cmV0dXJuIF8uZmxhdHRlbihfLm1hcChyZXN1bHRzLGZ1bmN0aW9uKGUpe3JldHVybiBnLm91dEVkZ2VzKGUudixlLncpfSksdHJ1ZSl9ZnVuY3Rpb24gZG9HcmVlZHlGQVMoZyxidWNrZXRzLHplcm9JZHgpe3ZhciByZXN1bHRzPVtdLHNvdXJjZXM9YnVja2V0c1tidWNrZXRzLmxlbmd0aC0xXSxzaW5rcz1idWNrZXRzWzBdO3ZhciBlbnRyeTt3aGlsZShnLm5vZGVDb3VudCgpKXt3aGlsZShlbnRyeT1zaW5rcy5kZXF1ZXVlKCkpcmVtb3ZlTm9kZShnLGJ1Y2tldHMsemVyb0lkeCxlbnRyeSk7d2hpbGUoZW50cnk9c291cmNlcy5kZXF1ZXVlKCkpcmVtb3ZlTm9kZShnLGJ1Y2tldHMsemVyb0lkeCxlbnRyeSk7aWYoZy5ub2RlQ291bnQoKSlmb3IodmFyIGk9YnVja2V0cy5sZW5ndGgtMjtpPjA7LS1pKXtlbnRyeT1idWNrZXRzW2ldLmRlcXVldWUoKTtpZihlbnRyeSl7cmVzdWx0cz1yZXN1bHRzLmNvbmNhdChyZW1vdmVOb2RlKGcsYnVja2V0cyx6ZXJvSWR4LAplbnRyeSx0cnVlKSk7YnJlYWt9fX1yZXR1cm4gcmVzdWx0c31mdW5jdGlvbiByZW1vdmVOb2RlKGcsYnVja2V0cyx6ZXJvSWR4LGVudHJ5LGNvbGxlY3RQcmVkZWNlc3NvcnMpe3ZhciByZXN1bHRzPWNvbGxlY3RQcmVkZWNlc3NvcnM/W106dW5kZWZpbmVkO18uZm9yRWFjaChnLmluRWRnZXMoZW50cnkudiksZnVuY3Rpb24oZWRnZSl7dmFyIHdlaWdodD1nLmVkZ2UoZWRnZSksdUVudHJ5PWcubm9kZShlZGdlLnYpO2lmKGNvbGxlY3RQcmVkZWNlc3NvcnMpcmVzdWx0cy5wdXNoKHt2OmVkZ2Uudix3OmVkZ2Uud30pO3VFbnRyeS5vdXQtPXdlaWdodDthc3NpZ25CdWNrZXQoYnVja2V0cyx6ZXJvSWR4LHVFbnRyeSl9KTtfLmZvckVhY2goZy5vdXRFZGdlcyhlbnRyeS52KSxmdW5jdGlvbihlZGdlKXt2YXIgd2VpZ2h0PWcuZWRnZShlZGdlKSx3PWVkZ2Uudyx3RW50cnk9Zy5ub2RlKHcpO3dFbnRyeVsiaW4iXS09d2VpZ2h0O2Fzc2lnbkJ1Y2tldChidWNrZXRzLHplcm9JZHgsd0VudHJ5KX0pOwpnLnJlbW92ZU5vZGUoZW50cnkudik7cmV0dXJuIHJlc3VsdHN9ZnVuY3Rpb24gYnVpbGRTdGF0ZShnLHdlaWdodEZuKXt2YXIgZmFzR3JhcGg9bmV3IEdyYXBoLG1heEluPTAsbWF4T3V0PTA7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtmYXNHcmFwaC5zZXROb2RlKHYse3Y6diwiaW4iOjAsb3V0OjB9KX0pO18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7dmFyIHByZXZXZWlnaHQ9ZmFzR3JhcGguZWRnZShlLnYsZS53KXx8MCx3ZWlnaHQ9d2VpZ2h0Rm4oZSksZWRnZVdlaWdodD1wcmV2V2VpZ2h0K3dlaWdodDtmYXNHcmFwaC5zZXRFZGdlKGUudixlLncsZWRnZVdlaWdodCk7bWF4T3V0PU1hdGgubWF4KG1heE91dCxmYXNHcmFwaC5ub2RlKGUudikub3V0Kz13ZWlnaHQpO21heEluPU1hdGgubWF4KG1heEluLGZhc0dyYXBoLm5vZGUoZS53KVsiaW4iXSs9d2VpZ2h0KX0pO3ZhciBidWNrZXRzPV8ucmFuZ2UobWF4T3V0K21heEluKzMpLm1hcChmdW5jdGlvbigpe3JldHVybiBuZXcgTGlzdH0pOwp2YXIgemVyb0lkeD1tYXhJbisxO18uZm9yRWFjaChmYXNHcmFwaC5ub2RlcygpLGZ1bmN0aW9uKHYpe2Fzc2lnbkJ1Y2tldChidWNrZXRzLHplcm9JZHgsZmFzR3JhcGgubm9kZSh2KSl9KTtyZXR1cm57Z3JhcGg6ZmFzR3JhcGgsYnVja2V0czpidWNrZXRzLHplcm9JZHg6emVyb0lkeH19ZnVuY3Rpb24gYXNzaWduQnVja2V0KGJ1Y2tldHMsemVyb0lkeCxlbnRyeSl7aWYoIWVudHJ5Lm91dClidWNrZXRzWzBdLmVucXVldWUoZW50cnkpO2Vsc2UgaWYoIWVudHJ5WyJpbiJdKWJ1Y2tldHNbYnVja2V0cy5sZW5ndGgtMV0uZW5xdWV1ZShlbnRyeSk7ZWxzZSBidWNrZXRzW2VudHJ5Lm91dC1lbnRyeVsiaW4iXSt6ZXJvSWR4XS5lbnF1ZXVlKGVudHJ5KX19LHsiLi9kYXRhL2xpc3QiOjUsIi4vZ3JhcGhsaWIiOjcsIi4vbG9kYXNoIjoxMH1dLDk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4vbG9kYXNoIiksYWN5Y2xpYz1yZXF1aXJlKCIuL2FjeWNsaWMiKSwKbm9ybWFsaXplPXJlcXVpcmUoIi4vbm9ybWFsaXplIikscmFuaz1yZXF1aXJlKCIuL3JhbmsiKSxub3JtYWxpemVSYW5rcz1yZXF1aXJlKCIuL3V0aWwiKS5ub3JtYWxpemVSYW5rcyxwYXJlbnREdW1teUNoYWlucz1yZXF1aXJlKCIuL3BhcmVudC1kdW1teS1jaGFpbnMiKSxyZW1vdmVFbXB0eVJhbmtzPXJlcXVpcmUoIi4vdXRpbCIpLnJlbW92ZUVtcHR5UmFua3MsbmVzdGluZ0dyYXBoPXJlcXVpcmUoIi4vbmVzdGluZy1ncmFwaCIpLGFkZEJvcmRlclNlZ21lbnRzPXJlcXVpcmUoIi4vYWRkLWJvcmRlci1zZWdtZW50cyIpLGNvb3JkaW5hdGVTeXN0ZW09cmVxdWlyZSgiLi9jb29yZGluYXRlLXN5c3RlbSIpLG9yZGVyPXJlcXVpcmUoIi4vb3JkZXIiKSxwb3NpdGlvbj1yZXF1aXJlKCIuL3Bvc2l0aW9uIiksdXRpbD1yZXF1aXJlKCIuL3V0aWwiKSxHcmFwaD1yZXF1aXJlKCIuL2dyYXBobGliIikuR3JhcGg7bW9kdWxlLmV4cG9ydHM9bGF5b3V0O2Z1bmN0aW9uIGxheW91dChnLG9wdHMpe3ZhciB0aW1lPQpvcHRzJiZvcHRzLmRlYnVnVGltaW5nP3V0aWwudGltZTp1dGlsLm5vdGltZTt0aW1lKCJsYXlvdXQiLGZ1bmN0aW9uKCl7dmFyIGxheW91dEdyYXBoPXRpbWUoIiAgYnVpbGRMYXlvdXRHcmFwaCIsZnVuY3Rpb24oKXtyZXR1cm4gYnVpbGRMYXlvdXRHcmFwaChnKX0pO3RpbWUoIiAgcnVuTGF5b3V0IixmdW5jdGlvbigpe3J1bkxheW91dChsYXlvdXRHcmFwaCx0aW1lKX0pO3RpbWUoIiAgdXBkYXRlSW5wdXRHcmFwaCIsZnVuY3Rpb24oKXt1cGRhdGVJbnB1dEdyYXBoKGcsbGF5b3V0R3JhcGgpfSl9KX1mdW5jdGlvbiBydW5MYXlvdXQoZyx0aW1lKXt0aW1lKCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyIsZnVuY3Rpb24oKXttYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpfSk7dGltZSgiICAgIHJlbW92ZVNlbGZFZGdlcyIsZnVuY3Rpb24oKXtyZW1vdmVTZWxmRWRnZXMoZyl9KTt0aW1lKCIgICAgYWN5Y2xpYyIsZnVuY3Rpb24oKXthY3ljbGljLnJ1bihnKX0pO3RpbWUoIiAgICBuZXN0aW5nR3JhcGgucnVuIiwKZnVuY3Rpb24oKXtuZXN0aW5nR3JhcGgucnVuKGcpfSk7dGltZSgiICAgIHJhbmsiLGZ1bmN0aW9uKCl7cmFuayh1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKSl9KTt0aW1lKCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsZnVuY3Rpb24oKXtpbmplY3RFZGdlTGFiZWxQcm94aWVzKGcpfSk7dGltZSgiICAgIHJlbW92ZUVtcHR5UmFua3MiLGZ1bmN0aW9uKCl7cmVtb3ZlRW1wdHlSYW5rcyhnKX0pO3RpbWUoIiAgICBuZXN0aW5nR3JhcGguY2xlYW51cCIsZnVuY3Rpb24oKXtuZXN0aW5nR3JhcGguY2xlYW51cChnKX0pO3RpbWUoIiAgICBub3JtYWxpemVSYW5rcyIsZnVuY3Rpb24oKXtub3JtYWxpemVSYW5rcyhnKX0pO3RpbWUoIiAgICBhc3NpZ25SYW5rTWluTWF4IixmdW5jdGlvbigpe2Fzc2lnblJhbmtNaW5NYXgoZyl9KTt0aW1lKCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyIsZnVuY3Rpb24oKXtyZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpfSk7dGltZSgiICAgIG5vcm1hbGl6ZS5ydW4iLApmdW5jdGlvbigpe25vcm1hbGl6ZS5ydW4oZyl9KTt0aW1lKCIgICAgcGFyZW50RHVtbXlDaGFpbnMiLGZ1bmN0aW9uKCl7cGFyZW50RHVtbXlDaGFpbnMoZyl9KTt0aW1lKCIgICAgYWRkQm9yZGVyU2VnbWVudHMiLGZ1bmN0aW9uKCl7YWRkQm9yZGVyU2VnbWVudHMoZyl9KTt0aW1lKCIgICAgb3JkZXIiLGZ1bmN0aW9uKCl7b3JkZXIoZyl9KTt0aW1lKCIgICAgaW5zZXJ0U2VsZkVkZ2VzIixmdW5jdGlvbigpe2luc2VydFNlbGZFZGdlcyhnKX0pO3RpbWUoIiAgICBhZGp1c3RDb29yZGluYXRlU3lzdGVtIixmdW5jdGlvbigpe2Nvb3JkaW5hdGVTeXN0ZW0uYWRqdXN0KGcpfSk7dGltZSgiICAgIHBvc2l0aW9uIixmdW5jdGlvbigpe3Bvc2l0aW9uKGcpfSk7dGltZSgiICAgIHBvc2l0aW9uU2VsZkVkZ2VzIixmdW5jdGlvbigpe3Bvc2l0aW9uU2VsZkVkZ2VzKGcpfSk7dGltZSgiICAgIHJlbW92ZUJvcmRlck5vZGVzIixmdW5jdGlvbigpe3JlbW92ZUJvcmRlck5vZGVzKGcpfSk7dGltZSgiICAgIG5vcm1hbGl6ZS51bmRvIiwKZnVuY3Rpb24oKXtub3JtYWxpemUudW5kbyhnKX0pO3RpbWUoIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsZnVuY3Rpb24oKXtmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKX0pO3RpbWUoIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbSIsZnVuY3Rpb24oKXtjb29yZGluYXRlU3lzdGVtLnVuZG8oZyl9KTt0aW1lKCIgICAgdHJhbnNsYXRlR3JhcGgiLGZ1bmN0aW9uKCl7dHJhbnNsYXRlR3JhcGgoZyl9KTt0aW1lKCIgICAgYXNzaWduTm9kZUludGVyc2VjdHMiLGZ1bmN0aW9uKCl7YXNzaWduTm9kZUludGVyc2VjdHMoZyl9KTt0aW1lKCIgICAgcmV2ZXJzZVBvaW50cyIsZnVuY3Rpb24oKXtyZXZlcnNlUG9pbnRzRm9yUmV2ZXJzZWRFZGdlcyhnKX0pO3RpbWUoIiAgICBhY3ljbGljLnVuZG8iLGZ1bmN0aW9uKCl7YWN5Y2xpYy51bmRvKGcpfSl9ZnVuY3Rpb24gdXBkYXRlSW5wdXRHcmFwaChpbnB1dEdyYXBoLGxheW91dEdyYXBoKXtfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciBpbnB1dExhYmVsPQppbnB1dEdyYXBoLm5vZGUodiksbGF5b3V0TGFiZWw9bGF5b3V0R3JhcGgubm9kZSh2KTtpZihpbnB1dExhYmVsKXtpbnB1dExhYmVsLng9bGF5b3V0TGFiZWwueDtpbnB1dExhYmVsLnk9bGF5b3V0TGFiZWwueTtpZihsYXlvdXRHcmFwaC5jaGlsZHJlbih2KS5sZW5ndGgpe2lucHV0TGFiZWwud2lkdGg9bGF5b3V0TGFiZWwud2lkdGg7aW5wdXRMYWJlbC5oZWlnaHQ9bGF5b3V0TGFiZWwuaGVpZ2h0fX19KTtfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBpbnB1dExhYmVsPWlucHV0R3JhcGguZWRnZShlKSxsYXlvdXRMYWJlbD1sYXlvdXRHcmFwaC5lZGdlKGUpO2lucHV0TGFiZWwucG9pbnRzPWxheW91dExhYmVsLnBvaW50cztpZihfLmhhcyhsYXlvdXRMYWJlbCwieCIpKXtpbnB1dExhYmVsLng9bGF5b3V0TGFiZWwueDtpbnB1dExhYmVsLnk9bGF5b3V0TGFiZWwueX19KTtpbnB1dEdyYXBoLmdyYXBoKCkud2lkdGg9bGF5b3V0R3JhcGguZ3JhcGgoKS53aWR0aDsKaW5wdXRHcmFwaC5ncmFwaCgpLmhlaWdodD1sYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodH12YXIgZ3JhcGhOdW1BdHRycz1bIm5vZGVzZXAiLCJlZGdlc2VwIiwicmFua3NlcCIsIm1hcmdpbngiLCJtYXJnaW55Il0sZ3JhcGhEZWZhdWx0cz17cmFua3NlcDo1MCxlZGdlc2VwOjIwLG5vZGVzZXA6NTAscmFua2RpcjoidGIifSxncmFwaEF0dHJzPVsiYWN5Y2xpY2VyIiwicmFua2VyIiwicmFua2RpciIsImFsaWduIl0sbm9kZU51bUF0dHJzPVsid2lkdGgiLCJoZWlnaHQiXSxub2RlRGVmYXVsdHM9e3dpZHRoOjAsaGVpZ2h0OjB9LGVkZ2VOdW1BdHRycz1bIm1pbmxlbiIsIndlaWdodCIsIndpZHRoIiwiaGVpZ2h0IiwibGFiZWxvZmZzZXQiXSxlZGdlRGVmYXVsdHM9e21pbmxlbjoxLHdlaWdodDoxLHdpZHRoOjAsaGVpZ2h0OjAsbGFiZWxvZmZzZXQ6MTAsbGFiZWxwb3M6InIifSxlZGdlQXR0cnM9WyJsYWJlbHBvcyJdO2Z1bmN0aW9uIGJ1aWxkTGF5b3V0R3JhcGgoaW5wdXRHcmFwaCl7dmFyIGc9Cm5ldyBHcmFwaCh7bXVsdGlncmFwaDp0cnVlLGNvbXBvdW5kOnRydWV9KSxncmFwaD1jYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ncmFwaCgpKTtnLnNldEdyYXBoKF8ubWVyZ2Uoe30sZ3JhcGhEZWZhdWx0cyxzZWxlY3ROdW1iZXJBdHRycyhncmFwaCxncmFwaE51bUF0dHJzKSxfLnBpY2soZ3JhcGgsZ3JhcGhBdHRycykpKTtfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciBub2RlPWNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLm5vZGUodikpO2cuc2V0Tm9kZSh2LF8uZGVmYXVsdHMoc2VsZWN0TnVtYmVyQXR0cnMobm9kZSxub2RlTnVtQXR0cnMpLG5vZGVEZWZhdWx0cykpO2cuc2V0UGFyZW50KHYsaW5wdXRHcmFwaC5wYXJlbnQodikpfSk7Xy5mb3JFYWNoKGlucHV0R3JhcGguZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgZWRnZT1jYW5vbmljYWxpemUoaW5wdXRHcmFwaC5lZGdlKGUpKTtnLnNldEVkZ2UoZSxfLm1lcmdlKHt9LGVkZ2VEZWZhdWx0cyxzZWxlY3ROdW1iZXJBdHRycyhlZGdlLAplZGdlTnVtQXR0cnMpLF8ucGljayhlZGdlLGVkZ2VBdHRycykpKX0pO3JldHVybiBnfWZ1bmN0aW9uIG1ha2VTcGFjZUZvckVkZ2VMYWJlbHMoZyl7dmFyIGdyYXBoPWcuZ3JhcGgoKTtncmFwaC5yYW5rc2VwLz0yO18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7dmFyIGVkZ2U9Zy5lZGdlKGUpO2VkZ2UubWlubGVuKj0yO2lmKGVkZ2UubGFiZWxwb3MudG9Mb3dlckNhc2UoKSE9PSJjIilpZihncmFwaC5yYW5rZGlyPT09IlRCInx8Z3JhcGgucmFua2Rpcj09PSJCVCIpZWRnZS53aWR0aCs9ZWRnZS5sYWJlbG9mZnNldDtlbHNlIGVkZ2UuaGVpZ2h0Kz1lZGdlLmxhYmVsb2Zmc2V0fSl9ZnVuY3Rpb24gaW5qZWN0RWRnZUxhYmVsUHJveGllcyhnKXtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBlZGdlPWcuZWRnZShlKTtpZihlZGdlLndpZHRoJiZlZGdlLmhlaWdodCl7dmFyIHY9Zy5ub2RlKGUudiksdz1nLm5vZGUoZS53KSxsYWJlbD17cmFuazoody5yYW5rLQp2LnJhbmspLzIrdi5yYW5rLGU6ZX07dXRpbC5hZGREdW1teU5vZGUoZywiZWRnZS1wcm94eSIsbGFiZWwsIl9lcCIpfX0pfWZ1bmN0aW9uIGFzc2lnblJhbmtNaW5NYXgoZyl7dmFyIG1heFJhbms9MDtfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciBub2RlPWcubm9kZSh2KTtpZihub2RlLmJvcmRlclRvcCl7bm9kZS5taW5SYW5rPWcubm9kZShub2RlLmJvcmRlclRvcCkucmFuaztub2RlLm1heFJhbms9Zy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKS5yYW5rO21heFJhbms9Xy5tYXgobWF4UmFuayxub2RlLm1heFJhbmspfX0pO2cuZ3JhcGgoKS5tYXhSYW5rPW1heFJhbmt9ZnVuY3Rpb24gcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKXtfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciBub2RlPWcubm9kZSh2KTtpZihub2RlLmR1bW15PT09ImVkZ2UtcHJveHkiKXtnLmVkZ2Uobm9kZS5lKS5sYWJlbFJhbms9bm9kZS5yYW5rO2cucmVtb3ZlTm9kZSh2KX19KX0KZnVuY3Rpb24gdHJhbnNsYXRlR3JhcGgoZyl7dmFyIG1pblg9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG1heFg9MCxtaW5ZPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxtYXhZPTAsZ3JhcGhMYWJlbD1nLmdyYXBoKCksbWFyZ2luWD1ncmFwaExhYmVsLm1hcmdpbnh8fDAsbWFyZ2luWT1ncmFwaExhYmVsLm1hcmdpbnl8fDA7ZnVuY3Rpb24gZ2V0RXh0cmVtZXMoYXR0cnMpe3ZhciB4PWF0dHJzLngseT1hdHRycy55LHc9YXR0cnMud2lkdGgsaD1hdHRycy5oZWlnaHQ7bWluWD1NYXRoLm1pbihtaW5YLHgtdy8yKTttYXhYPU1hdGgubWF4KG1heFgseCt3LzIpO21pblk9TWF0aC5taW4obWluWSx5LWgvMik7bWF4WT1NYXRoLm1heChtYXhZLHkraC8yKX1fLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe2dldEV4dHJlbWVzKGcubm9kZSh2KSl9KTtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBlZGdlPWcuZWRnZShlKTtpZihfLmhhcyhlZGdlLCJ4IikpZ2V0RXh0cmVtZXMoZWRnZSl9KTsKbWluWC09bWFyZ2luWDttaW5ZLT1tYXJnaW5ZO18uZm9yRWFjaChnLm5vZGVzKCksZnVuY3Rpb24odil7dmFyIG5vZGU9Zy5ub2RlKHYpO25vZGUueC09bWluWDtub2RlLnktPW1pbll9KTtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBlZGdlPWcuZWRnZShlKTtfLmZvckVhY2goZWRnZS5wb2ludHMsZnVuY3Rpb24ocCl7cC54LT1taW5YO3AueS09bWluWX0pO2lmKF8uaGFzKGVkZ2UsIngiKSllZGdlLngtPW1pblg7aWYoXy5oYXMoZWRnZSwieSIpKWVkZ2UueS09bWluWX0pO2dyYXBoTGFiZWwud2lkdGg9bWF4WC1taW5YK21hcmdpblg7Z3JhcGhMYWJlbC5oZWlnaHQ9bWF4WS1taW5ZK21hcmdpbll9ZnVuY3Rpb24gYXNzaWduTm9kZUludGVyc2VjdHMoZyl7Xy5mb3JFYWNoKGcuZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgZWRnZT1nLmVkZ2UoZSksbm9kZVY9Zy5ub2RlKGUudiksbm9kZVc9Zy5ub2RlKGUudykscDEscDI7aWYoIWVkZ2UucG9pbnRzKXtlZGdlLnBvaW50cz0KW107cDE9bm9kZVc7cDI9bm9kZVZ9ZWxzZXtwMT1lZGdlLnBvaW50c1swXTtwMj1lZGdlLnBvaW50c1tlZGdlLnBvaW50cy5sZW5ndGgtMV19ZWRnZS5wb2ludHMudW5zaGlmdCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVYscDEpKTtlZGdlLnBvaW50cy5wdXNoKHV0aWwuaW50ZXJzZWN0UmVjdChub2RlVyxwMikpfSl9ZnVuY3Rpb24gZml4dXBFZGdlTGFiZWxDb29yZHMoZyl7Xy5mb3JFYWNoKGcuZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgZWRnZT1nLmVkZ2UoZSk7aWYoXy5oYXMoZWRnZSwieCIpKXtpZihlZGdlLmxhYmVscG9zPT09ImwifHxlZGdlLmxhYmVscG9zPT09InIiKWVkZ2Uud2lkdGgtPWVkZ2UubGFiZWxvZmZzZXQ7c3dpdGNoKGVkZ2UubGFiZWxwb3Mpe2Nhc2UgImwiOmVkZ2UueC09ZWRnZS53aWR0aC8yK2VkZ2UubGFiZWxvZmZzZXQ7YnJlYWs7Y2FzZSAiciI6ZWRnZS54Kz1lZGdlLndpZHRoLzIrZWRnZS5sYWJlbG9mZnNldDticmVha319fSl9ZnVuY3Rpb24gcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZyl7Xy5mb3JFYWNoKGcuZWRnZXMoKSwKZnVuY3Rpb24oZSl7dmFyIGVkZ2U9Zy5lZGdlKGUpO2lmKGVkZ2UucmV2ZXJzZWQpZWRnZS5wb2ludHMucmV2ZXJzZSgpfSl9ZnVuY3Rpb24gcmVtb3ZlQm9yZGVyTm9kZXMoZyl7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtpZihnLmNoaWxkcmVuKHYpLmxlbmd0aCl7dmFyIG5vZGU9Zy5ub2RlKHYpLHQ9Zy5ub2RlKG5vZGUuYm9yZGVyVG9wKSxiPWcubm9kZShub2RlLmJvcmRlckJvdHRvbSksbD1nLm5vZGUoXy5sYXN0KG5vZGUuYm9yZGVyTGVmdCkpLHI9Zy5ub2RlKF8ubGFzdChub2RlLmJvcmRlclJpZ2h0KSk7bm9kZS53aWR0aD1NYXRoLmFicyhyLngtbC54KTtub2RlLmhlaWdodD1NYXRoLmFicyhiLnktdC55KTtub2RlLng9bC54K25vZGUud2lkdGgvMjtub2RlLnk9dC55K25vZGUuaGVpZ2h0LzJ9fSk7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtpZihnLm5vZGUodikuZHVtbXk9PT0iYm9yZGVyIilnLnJlbW92ZU5vZGUodil9KX1mdW5jdGlvbiByZW1vdmVTZWxmRWRnZXMoZyl7Xy5mb3JFYWNoKGcuZWRnZXMoKSwKZnVuY3Rpb24oZSl7aWYoZS52PT09ZS53KXt2YXIgbm9kZT1nLm5vZGUoZS52KTtpZighbm9kZS5zZWxmRWRnZXMpbm9kZS5zZWxmRWRnZXM9W107bm9kZS5zZWxmRWRnZXMucHVzaCh7ZTplLGxhYmVsOmcuZWRnZShlKX0pO2cucmVtb3ZlRWRnZShlKX19KX1mdW5jdGlvbiBpbnNlcnRTZWxmRWRnZXMoZyl7dmFyIGxheWVycz11dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7Xy5mb3JFYWNoKGxheWVycyxmdW5jdGlvbihsYXllcil7dmFyIG9yZGVyU2hpZnQ9MDtfLmZvckVhY2gobGF5ZXIsZnVuY3Rpb24odixpKXt2YXIgbm9kZT1nLm5vZGUodik7bm9kZS5vcmRlcj1pK29yZGVyU2hpZnQ7Xy5mb3JFYWNoKG5vZGUuc2VsZkVkZ2VzLGZ1bmN0aW9uKHNlbGZFZGdlKXt1dGlsLmFkZER1bW15Tm9kZShnLCJzZWxmZWRnZSIse3dpZHRoOnNlbGZFZGdlLmxhYmVsLndpZHRoLGhlaWdodDpzZWxmRWRnZS5sYWJlbC5oZWlnaHQscmFuazpub2RlLnJhbmssb3JkZXI6aSsgKytvcmRlclNoaWZ0LAplOnNlbGZFZGdlLmUsbGFiZWw6c2VsZkVkZ2UubGFiZWx9LCJfc2UiKX0pO2RlbGV0ZSBub2RlLnNlbGZFZGdlc30pfSl9ZnVuY3Rpb24gcG9zaXRpb25TZWxmRWRnZXMoZyl7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXt2YXIgbm9kZT1nLm5vZGUodik7aWYobm9kZS5kdW1teT09PSJzZWxmZWRnZSIpe3ZhciBzZWxmTm9kZT1nLm5vZGUobm9kZS5lLnYpLHg9c2VsZk5vZGUueCtzZWxmTm9kZS53aWR0aC8yLHk9c2VsZk5vZGUueSxkeD1ub2RlLngteCxkeT1zZWxmTm9kZS5oZWlnaHQvMjtnLnNldEVkZ2Uobm9kZS5lLG5vZGUubGFiZWwpO2cucmVtb3ZlTm9kZSh2KTtub2RlLmxhYmVsLnBvaW50cz1be3g6eCsyKmR4LzMseTp5LWR5fSx7eDp4KzUqZHgvNix5OnktZHl9LHt4OngrZHgseTp5fSx7eDp4KzUqZHgvNix5OnkrZHl9LHt4OngrMipkeC8zLHk6eStkeX1dO25vZGUubGFiZWwueD1ub2RlLng7bm9kZS5sYWJlbC55PW5vZGUueX19KX1mdW5jdGlvbiBzZWxlY3ROdW1iZXJBdHRycyhvYmosCmF0dHJzKXtyZXR1cm4gXy5tYXBWYWx1ZXMoXy5waWNrKG9iaixhdHRycyksTnVtYmVyKX1mdW5jdGlvbiBjYW5vbmljYWxpemUoYXR0cnMpe3ZhciBuZXdBdHRycz17fTtfLmZvckVhY2goYXR0cnMsZnVuY3Rpb24odixrKXtuZXdBdHRyc1trLnRvTG93ZXJDYXNlKCldPXZ9KTtyZXR1cm4gbmV3QXR0cnN9fSx7Ii4vYWN5Y2xpYyI6MiwiLi9hZGQtYm9yZGVyLXNlZ21lbnRzIjozLCIuL2Nvb3JkaW5hdGUtc3lzdGVtIjo0LCIuL2dyYXBobGliIjo3LCIuL2xvZGFzaCI6MTAsIi4vbmVzdGluZy1ncmFwaCI6MTEsIi4vbm9ybWFsaXplIjoxMiwiLi9vcmRlciI6MTcsIi4vcGFyZW50LWR1bW15LWNoYWlucyI6MjIsIi4vcG9zaXRpb24iOjI0LCIuL3JhbmsiOjI2LCIuL3V0aWwiOjI5fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBsb2Rhc2g7aWYodHlwZW9mIHJlcXVpcmU9PT0iZnVuY3Rpb24iKXRyeXtsb2Rhc2g9cmVxdWlyZSgibG9kYXNoIil9Y2F0Y2goZSl7fWlmKCFsb2Rhc2gpbG9kYXNoPQp3aW5kb3cuXzttb2R1bGUuZXhwb3J0cz1sb2Rhc2h9LHsibG9kYXNoIjp1bmRlZmluZWR9XSwxMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi9sb2Rhc2giKSx1dGlsPXJlcXVpcmUoIi4vdXRpbCIpO21vZHVsZS5leHBvcnRzPXtydW46cnVuLGNsZWFudXA6Y2xlYW51cH07ZnVuY3Rpb24gcnVuKGcpe3ZhciByb290PXV0aWwuYWRkRHVtbXlOb2RlKGcsInJvb3QiLHt9LCJfcm9vdCIpO3ZhciBkZXB0aHM9dHJlZURlcHRocyhnKTt2YXIgaGVpZ2h0PV8ubWF4KF8udmFsdWVzKGRlcHRocykpLTE7dmFyIG5vZGVTZXA9MipoZWlnaHQrMTtnLmdyYXBoKCkubmVzdGluZ1Jvb3Q9cm9vdDtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe2cuZWRnZShlKS5taW5sZW4qPW5vZGVTZXB9KTt2YXIgd2VpZ2h0PXN1bVdlaWdodHMoZykrMTtfLmZvckVhY2goZy5jaGlsZHJlbigpLGZ1bmN0aW9uKGNoaWxkKXtkZnMoZyxyb290LG5vZGVTZXAsCndlaWdodCxoZWlnaHQsZGVwdGhzLGNoaWxkKX0pO2cuZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1ub2RlU2VwfWZ1bmN0aW9uIGRmcyhnLHJvb3Qsbm9kZVNlcCx3ZWlnaHQsaGVpZ2h0LGRlcHRocyx2KXt2YXIgY2hpbGRyZW49Zy5jaGlsZHJlbih2KTtpZighY2hpbGRyZW4ubGVuZ3RoKXtpZih2IT09cm9vdClnLnNldEVkZ2Uocm9vdCx2LHt3ZWlnaHQ6MCxtaW5sZW46bm9kZVNlcH0pO3JldHVybn12YXIgdG9wPXV0aWwuYWRkQm9yZGVyTm9kZShnLCJfYnQiKSxib3R0b209dXRpbC5hZGRCb3JkZXJOb2RlKGcsIl9iYiIpLGxhYmVsPWcubm9kZSh2KTtnLnNldFBhcmVudCh0b3Asdik7bGFiZWwuYm9yZGVyVG9wPXRvcDtnLnNldFBhcmVudChib3R0b20sdik7bGFiZWwuYm9yZGVyQm90dG9tPWJvdHRvbTtfLmZvckVhY2goY2hpbGRyZW4sZnVuY3Rpb24oY2hpbGQpe2RmcyhnLHJvb3Qsbm9kZVNlcCx3ZWlnaHQsaGVpZ2h0LGRlcHRocyxjaGlsZCk7dmFyIGNoaWxkTm9kZT1nLm5vZGUoY2hpbGQpLApjaGlsZFRvcD1jaGlsZE5vZGUuYm9yZGVyVG9wP2NoaWxkTm9kZS5ib3JkZXJUb3A6Y2hpbGQsY2hpbGRCb3R0b209Y2hpbGROb2RlLmJvcmRlckJvdHRvbT9jaGlsZE5vZGUuYm9yZGVyQm90dG9tOmNoaWxkLHRoaXNXZWlnaHQ9Y2hpbGROb2RlLmJvcmRlclRvcD93ZWlnaHQ6Mip3ZWlnaHQsbWlubGVuPWNoaWxkVG9wIT09Y2hpbGRCb3R0b20/MTpoZWlnaHQtZGVwdGhzW3ZdKzE7Zy5zZXRFZGdlKHRvcCxjaGlsZFRvcCx7d2VpZ2h0OnRoaXNXZWlnaHQsbWlubGVuOm1pbmxlbixuZXN0aW5nRWRnZTp0cnVlfSk7Zy5zZXRFZGdlKGNoaWxkQm90dG9tLGJvdHRvbSx7d2VpZ2h0OnRoaXNXZWlnaHQsbWlubGVuOm1pbmxlbixuZXN0aW5nRWRnZTp0cnVlfSl9KTtpZighZy5wYXJlbnQodikpZy5zZXRFZGdlKHJvb3QsdG9wLHt3ZWlnaHQ6MCxtaW5sZW46aGVpZ2h0K2RlcHRoc1t2XX0pfWZ1bmN0aW9uIHRyZWVEZXB0aHMoZyl7dmFyIGRlcHRocz17fTtmdW5jdGlvbiBkZnModixkZXB0aCl7dmFyIGNoaWxkcmVuPQpnLmNoaWxkcmVuKHYpO2lmKGNoaWxkcmVuJiZjaGlsZHJlbi5sZW5ndGgpXy5mb3JFYWNoKGNoaWxkcmVuLGZ1bmN0aW9uKGNoaWxkKXtkZnMoY2hpbGQsZGVwdGgrMSl9KTtkZXB0aHNbdl09ZGVwdGh9Xy5mb3JFYWNoKGcuY2hpbGRyZW4oKSxmdW5jdGlvbih2KXtkZnModiwxKX0pO3JldHVybiBkZXB0aHN9ZnVuY3Rpb24gc3VtV2VpZ2h0cyhnKXtyZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLGZ1bmN0aW9uKGFjYyxlKXtyZXR1cm4gYWNjK2cuZWRnZShlKS53ZWlnaHR9LDApfWZ1bmN0aW9uIGNsZWFudXAoZyl7dmFyIGdyYXBoTGFiZWw9Zy5ncmFwaCgpO2cucmVtb3ZlTm9kZShncmFwaExhYmVsLm5lc3RpbmdSb290KTtkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBlZGdlPWcuZWRnZShlKTtpZihlZGdlLm5lc3RpbmdFZGdlKWcucmVtb3ZlRWRnZShlKX0pfX0seyIuL2xvZGFzaCI6MTAsIi4vdXRpbCI6Mjl9XSwKMTI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4vbG9kYXNoIiksdXRpbD1yZXF1aXJlKCIuL3V0aWwiKTttb2R1bGUuZXhwb3J0cz17cnVuOnJ1bix1bmRvOnVuZG99O2Z1bmN0aW9uIHJ1bihnKXtnLmdyYXBoKCkuZHVtbXlDaGFpbnM9W107Xy5mb3JFYWNoKGcuZWRnZXMoKSxmdW5jdGlvbihlZGdlKXtub3JtYWxpemVFZGdlKGcsZWRnZSl9KX1mdW5jdGlvbiBub3JtYWxpemVFZGdlKGcsZSl7dmFyIHY9ZS52LHZSYW5rPWcubm9kZSh2KS5yYW5rLHc9ZS53LHdSYW5rPWcubm9kZSh3KS5yYW5rLG5hbWU9ZS5uYW1lLGVkZ2VMYWJlbD1nLmVkZ2UoZSksbGFiZWxSYW5rPWVkZ2VMYWJlbC5sYWJlbFJhbms7aWYod1Jhbms9PT12UmFuaysxKXJldHVybjtnLnJlbW92ZUVkZ2UoZSk7dmFyIGR1bW15LGF0dHJzLGk7Zm9yKGk9MCwrK3ZSYW5rO3ZSYW5rPHdSYW5rOysraSwrK3ZSYW5rKXtlZGdlTGFiZWwucG9pbnRzPVtdO2F0dHJzPXt3aWR0aDowLApoZWlnaHQ6MCxlZGdlTGFiZWw6ZWRnZUxhYmVsLGVkZ2VPYmo6ZSxyYW5rOnZSYW5rfTtkdW1teT11dGlsLmFkZER1bW15Tm9kZShnLCJlZGdlIixhdHRycywiX2QiKTtpZih2UmFuaz09PWxhYmVsUmFuayl7YXR0cnMud2lkdGg9ZWRnZUxhYmVsLndpZHRoO2F0dHJzLmhlaWdodD1lZGdlTGFiZWwuaGVpZ2h0O2F0dHJzLmR1bW15PSJlZGdlLWxhYmVsIjthdHRycy5sYWJlbHBvcz1lZGdlTGFiZWwubGFiZWxwb3N9Zy5zZXRFZGdlKHYsZHVtbXkse3dlaWdodDplZGdlTGFiZWwud2VpZ2h0fSxuYW1lKTtpZihpPT09MClnLmdyYXBoKCkuZHVtbXlDaGFpbnMucHVzaChkdW1teSk7dj1kdW1teX1nLnNldEVkZ2Uodix3LHt3ZWlnaHQ6ZWRnZUxhYmVsLndlaWdodH0sbmFtZSl9ZnVuY3Rpb24gdW5kbyhnKXtfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLGZ1bmN0aW9uKHYpe3ZhciBub2RlPWcubm9kZSh2KSxvcmlnTGFiZWw9bm9kZS5lZGdlTGFiZWwsdztnLnNldEVkZ2Uobm9kZS5lZGdlT2JqLApvcmlnTGFiZWwpO3doaWxlKG5vZGUuZHVtbXkpe3c9Zy5zdWNjZXNzb3JzKHYpWzBdO2cucmVtb3ZlTm9kZSh2KTtvcmlnTGFiZWwucG9pbnRzLnB1c2goe3g6bm9kZS54LHk6bm9kZS55fSk7aWYobm9kZS5kdW1teT09PSJlZGdlLWxhYmVsIil7b3JpZ0xhYmVsLng9bm9kZS54O29yaWdMYWJlbC55PW5vZGUueTtvcmlnTGFiZWwud2lkdGg9bm9kZS53aWR0aDtvcmlnTGFiZWwuaGVpZ2h0PW5vZGUuaGVpZ2h0fXY9dztub2RlPWcubm9kZSh2KX19KX19LHsiLi9sb2Rhc2giOjEwLCIuL3V0aWwiOjI5fV0sMTM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpO21vZHVsZS5leHBvcnRzPWFkZFN1YmdyYXBoQ29uc3RyYWludHM7ZnVuY3Rpb24gYWRkU3ViZ3JhcGhDb25zdHJhaW50cyhnLGNnLHZzKXt2YXIgcHJldj17fSxyb290UHJldjtfLmZvckVhY2godnMsZnVuY3Rpb24odil7dmFyIGNoaWxkPWcucGFyZW50KHYpLHBhcmVudCwKcHJldkNoaWxkO3doaWxlKGNoaWxkKXtwYXJlbnQ9Zy5wYXJlbnQoY2hpbGQpO2lmKHBhcmVudCl7cHJldkNoaWxkPXByZXZbcGFyZW50XTtwcmV2W3BhcmVudF09Y2hpbGR9ZWxzZXtwcmV2Q2hpbGQ9cm9vdFByZXY7cm9vdFByZXY9Y2hpbGR9aWYocHJldkNoaWxkJiZwcmV2Q2hpbGQhPT1jaGlsZCl7Y2cuc2V0RWRnZShwcmV2Q2hpbGQsY2hpbGQpO3JldHVybn1jaGlsZD1wYXJlbnR9fSl9fSx7Ii4uL2xvZGFzaCI6MTB9XSwxNDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIik7bW9kdWxlLmV4cG9ydHM9YmFyeWNlbnRlcjtmdW5jdGlvbiBiYXJ5Y2VudGVyKGcsbW92YWJsZSl7cmV0dXJuIF8ubWFwKG1vdmFibGUsZnVuY3Rpb24odil7dmFyIGluVj1nLmluRWRnZXModik7aWYoIWluVi5sZW5ndGgpcmV0dXJue3Y6dn07ZWxzZXt2YXIgcmVzdWx0PV8ucmVkdWNlKGluVixmdW5jdGlvbihhY2MsZSl7dmFyIGVkZ2U9Zy5lZGdlKGUpLApub2RlVT1nLm5vZGUoZS52KTtyZXR1cm57c3VtOmFjYy5zdW0rZWRnZS53ZWlnaHQqbm9kZVUub3JkZXIsd2VpZ2h0OmFjYy53ZWlnaHQrZWRnZS53ZWlnaHR9fSx7c3VtOjAsd2VpZ2h0OjB9KTtyZXR1cm57djp2LGJhcnljZW50ZXI6cmVzdWx0LnN1bS9yZXN1bHQud2VpZ2h0LHdlaWdodDpyZXN1bHQud2VpZ2h0fX19KX19LHsiLi4vbG9kYXNoIjoxMH1dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuLi9sb2Rhc2giKSxHcmFwaD1yZXF1aXJlKCIuLi9ncmFwaGxpYiIpLkdyYXBoO21vZHVsZS5leHBvcnRzPWJ1aWxkTGF5ZXJHcmFwaDtmdW5jdGlvbiBidWlsZExheWVyR3JhcGgoZyxyYW5rLHJlbGF0aW9uc2hpcCl7dmFyIHJvb3Q9Y3JlYXRlUm9vdE5vZGUoZykscmVzdWx0PShuZXcgR3JhcGgoe2NvbXBvdW5kOnRydWV9KSkuc2V0R3JhcGgoe3Jvb3Q6cm9vdH0pLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odil7cmV0dXJuIGcubm9kZSh2KX0pOwpfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciBub2RlPWcubm9kZSh2KSxwYXJlbnQ9Zy5wYXJlbnQodik7aWYobm9kZS5yYW5rPT09cmFua3x8bm9kZS5taW5SYW5rPD1yYW5rJiZyYW5rPD1ub2RlLm1heFJhbmspe3Jlc3VsdC5zZXROb2RlKHYpO3Jlc3VsdC5zZXRQYXJlbnQodixwYXJlbnR8fHJvb3QpO18uZm9yRWFjaChnW3JlbGF0aW9uc2hpcF0odiksZnVuY3Rpb24oZSl7dmFyIHU9ZS52PT09dj9lLnc6ZS52LGVkZ2U9cmVzdWx0LmVkZ2UodSx2KSx3ZWlnaHQ9IV8uaXNVbmRlZmluZWQoZWRnZSk/ZWRnZS53ZWlnaHQ6MDtyZXN1bHQuc2V0RWRnZSh1LHYse3dlaWdodDpnLmVkZ2UoZSkud2VpZ2h0K3dlaWdodH0pfSk7aWYoXy5oYXMobm9kZSwibWluUmFuayIpKXJlc3VsdC5zZXROb2RlKHYse2JvcmRlckxlZnQ6bm9kZS5ib3JkZXJMZWZ0W3JhbmtdLGJvcmRlclJpZ2h0Om5vZGUuYm9yZGVyUmlnaHRbcmFua119KX19KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNyZWF0ZVJvb3ROb2RlKGcpe3ZhciB2Owp3aGlsZShnLmhhc05vZGUodj1fLnVuaXF1ZUlkKCJfcm9vdCIpKSk7cmV0dXJuIHZ9fSx7Ii4uL2dyYXBobGliIjo3LCIuLi9sb2Rhc2giOjEwfV0sMTY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4uL2xvZGFzaCIpO21vZHVsZS5leHBvcnRzPWNyb3NzQ291bnQ7ZnVuY3Rpb24gY3Jvc3NDb3VudChnLGxheWVyaW5nKXt2YXIgY2M9MDtmb3IodmFyIGk9MTtpPGxheWVyaW5nLmxlbmd0aDsrK2kpY2MrPXR3b0xheWVyQ3Jvc3NDb3VudChnLGxheWVyaW5nW2ktMV0sbGF5ZXJpbmdbaV0pO3JldHVybiBjY31mdW5jdGlvbiB0d29MYXllckNyb3NzQ291bnQoZyxub3J0aExheWVyLHNvdXRoTGF5ZXIpe3ZhciBzb3V0aFBvcz1fLnppcE9iamVjdChzb3V0aExheWVyLF8ubWFwKHNvdXRoTGF5ZXIsZnVuY3Rpb24odixpKXtyZXR1cm4gaX0pKTt2YXIgc291dGhFbnRyaWVzPV8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLGZ1bmN0aW9uKHYpe3JldHVybiBfLmNoYWluKGcub3V0RWRnZXModikpLm1hcChmdW5jdGlvbihlKXtyZXR1cm57cG9zOnNvdXRoUG9zW2Uud10sCndlaWdodDpnLmVkZ2UoZSkud2VpZ2h0fX0pLnNvcnRCeSgicG9zIikudmFsdWUoKX0pLHRydWUpO3ZhciBmaXJzdEluZGV4PTE7d2hpbGUoZmlyc3RJbmRleDxzb3V0aExheWVyLmxlbmd0aClmaXJzdEluZGV4PDw9MTt2YXIgdHJlZVNpemU9MipmaXJzdEluZGV4LTE7Zmlyc3RJbmRleC09MTt2YXIgdHJlZT1fLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLGZ1bmN0aW9uKCl7cmV0dXJuIDB9KTt2YXIgY2M9MDtfLmZvckVhY2goc291dGhFbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpe3ZhciBpbmRleD1lbnRyeS5wb3MrZmlyc3RJbmRleDt0cmVlW2luZGV4XSs9ZW50cnkud2VpZ2h0O3ZhciB3ZWlnaHRTdW09MDt3aGlsZShpbmRleD4wKXtpZihpbmRleCUyKXdlaWdodFN1bSs9dHJlZVtpbmRleCsxXTtpbmRleD1pbmRleC0xPj4xO3RyZWVbaW5kZXhdKz1lbnRyeS53ZWlnaHR9Y2MrPWVudHJ5LndlaWdodCp3ZWlnaHRTdW19KSk7cmV0dXJuIGNjfX0seyIuLi9sb2Rhc2giOjEwfV0sCjE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuLi9sb2Rhc2giKSxpbml0T3JkZXI9cmVxdWlyZSgiLi9pbml0LW9yZGVyIiksY3Jvc3NDb3VudD1yZXF1aXJlKCIuL2Nyb3NzLWNvdW50Iiksc29ydFN1YmdyYXBoPXJlcXVpcmUoIi4vc29ydC1zdWJncmFwaCIpLGJ1aWxkTGF5ZXJHcmFwaD1yZXF1aXJlKCIuL2J1aWxkLWxheWVyLWdyYXBoIiksYWRkU3ViZ3JhcGhDb25zdHJhaW50cz1yZXF1aXJlKCIuL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cyIpLEdyYXBoPXJlcXVpcmUoIi4uL2dyYXBobGliIikuR3JhcGgsdXRpbD1yZXF1aXJlKCIuLi91dGlsIik7bW9kdWxlLmV4cG9ydHM9b3JkZXI7ZnVuY3Rpb24gb3JkZXIoZyl7dmFyIG1heFJhbms9dXRpbC5tYXhSYW5rKGcpLGRvd25MYXllckdyYXBocz1idWlsZExheWVyR3JhcGhzKGcsXy5yYW5nZSgxLG1heFJhbmsrMSksImluRWRnZXMiKSx1cExheWVyR3JhcGhzPWJ1aWxkTGF5ZXJHcmFwaHMoZywKXy5yYW5nZShtYXhSYW5rLTEsLTEsLTEpLCJvdXRFZGdlcyIpO3ZhciBsYXllcmluZz1pbml0T3JkZXIoZyk7YXNzaWduT3JkZXIoZyxsYXllcmluZyk7dmFyIGJlc3RDQz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksYmVzdDtmb3IodmFyIGk9MCxsYXN0QmVzdD0wO2xhc3RCZXN0PDQ7KytpLCsrbGFzdEJlc3Qpe3N3ZWVwTGF5ZXJHcmFwaHMoaSUyP2Rvd25MYXllckdyYXBoczp1cExheWVyR3JhcGhzLGklND49Mik7bGF5ZXJpbmc9dXRpbC5idWlsZExheWVyTWF0cml4KGcpO3ZhciBjYz1jcm9zc0NvdW50KGcsbGF5ZXJpbmcpO2lmKGNjPGJlc3RDQyl7bGFzdEJlc3Q9MDtiZXN0PV8uY2xvbmVEZWVwKGxheWVyaW5nKTtiZXN0Q0M9Y2N9fWFzc2lnbk9yZGVyKGcsYmVzdCl9ZnVuY3Rpb24gYnVpbGRMYXllckdyYXBocyhnLHJhbmtzLHJlbGF0aW9uc2hpcCl7cmV0dXJuIF8ubWFwKHJhbmtzLGZ1bmN0aW9uKHJhbmspe3JldHVybiBidWlsZExheWVyR3JhcGgoZyxyYW5rLHJlbGF0aW9uc2hpcCl9KX0KZnVuY3Rpb24gc3dlZXBMYXllckdyYXBocyhsYXllckdyYXBocyxiaWFzUmlnaHQpe3ZhciBjZz1uZXcgR3JhcGg7Xy5mb3JFYWNoKGxheWVyR3JhcGhzLGZ1bmN0aW9uKGxnKXt2YXIgcm9vdD1sZy5ncmFwaCgpLnJvb3Q7dmFyIHNvcnRlZD1zb3J0U3ViZ3JhcGgobGcscm9vdCxjZyxiaWFzUmlnaHQpO18uZm9yRWFjaChzb3J0ZWQudnMsZnVuY3Rpb24odixpKXtsZy5ub2RlKHYpLm9yZGVyPWl9KTthZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLGNnLHNvcnRlZC52cyl9KX1mdW5jdGlvbiBhc3NpZ25PcmRlcihnLGxheWVyaW5nKXtfLmZvckVhY2gobGF5ZXJpbmcsZnVuY3Rpb24obGF5ZXIpe18uZm9yRWFjaChsYXllcixmdW5jdGlvbih2LGkpe2cubm9kZSh2KS5vcmRlcj1pfSl9KX19LHsiLi4vZ3JhcGhsaWIiOjcsIi4uL2xvZGFzaCI6MTAsIi4uL3V0aWwiOjI5LCIuL2FkZC1zdWJncmFwaC1jb25zdHJhaW50cyI6MTMsIi4vYnVpbGQtbGF5ZXItZ3JhcGgiOjE1LCIuL2Nyb3NzLWNvdW50IjoxNiwKIi4vaW5pdC1vcmRlciI6MTgsIi4vc29ydC1zdWJncmFwaCI6MjB9XSwxODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIik7bW9kdWxlLmV4cG9ydHM9aW5pdE9yZGVyO2Z1bmN0aW9uIGluaXRPcmRlcihnKXt2YXIgdmlzaXRlZD17fSxzaW1wbGVOb2Rlcz1fLmZpbHRlcihnLm5vZGVzKCksZnVuY3Rpb24odil7cmV0dXJuIWcuY2hpbGRyZW4odikubGVuZ3RofSksbWF4UmFuaz1fLm1heChfLm1hcChzaW1wbGVOb2RlcyxmdW5jdGlvbih2KXtyZXR1cm4gZy5ub2RlKHYpLnJhbmt9KSksbGF5ZXJzPV8ubWFwKF8ucmFuZ2UobWF4UmFuaysxKSxmdW5jdGlvbigpe3JldHVybltdfSk7ZnVuY3Rpb24gZGZzKHYpe2lmKF8uaGFzKHZpc2l0ZWQsdikpcmV0dXJuO3Zpc2l0ZWRbdl09dHJ1ZTt2YXIgbm9kZT1nLm5vZGUodik7bGF5ZXJzW25vZGUucmFua10ucHVzaCh2KTtfLmZvckVhY2goZy5zdWNjZXNzb3JzKHYpLGRmcyl9dmFyIG9yZGVyZWRWcz0KXy5zb3J0Qnkoc2ltcGxlTm9kZXMsZnVuY3Rpb24odil7cmV0dXJuIGcubm9kZSh2KS5yYW5rfSk7Xy5mb3JFYWNoKG9yZGVyZWRWcyxkZnMpO3JldHVybiBsYXllcnN9fSx7Ii4uL2xvZGFzaCI6MTB9XSwxOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIik7bW9kdWxlLmV4cG9ydHM9cmVzb2x2ZUNvbmZsaWN0cztmdW5jdGlvbiByZXNvbHZlQ29uZmxpY3RzKGVudHJpZXMsY2cpe3ZhciBtYXBwZWRFbnRyaWVzPXt9O18uZm9yRWFjaChlbnRyaWVzLGZ1bmN0aW9uKGVudHJ5LGkpe3ZhciB0bXA9bWFwcGVkRW50cmllc1tlbnRyeS52XT17aW5kZWdyZWU6MCwiaW4iOltdLG91dDpbXSx2czpbZW50cnkudl0saTppfTtpZighXy5pc1VuZGVmaW5lZChlbnRyeS5iYXJ5Y2VudGVyKSl7dG1wLmJhcnljZW50ZXI9ZW50cnkuYmFyeWNlbnRlcjt0bXAud2VpZ2h0PWVudHJ5LndlaWdodH19KTtfLmZvckVhY2goY2cuZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgZW50cnlWPQptYXBwZWRFbnRyaWVzW2Uudl0sZW50cnlXPW1hcHBlZEVudHJpZXNbZS53XTtpZighXy5pc1VuZGVmaW5lZChlbnRyeVYpJiYhXy5pc1VuZGVmaW5lZChlbnRyeVcpKXtlbnRyeVcuaW5kZWdyZWUrKztlbnRyeVYub3V0LnB1c2gobWFwcGVkRW50cmllc1tlLnddKX19KTt2YXIgc291cmNlU2V0PV8uZmlsdGVyKG1hcHBlZEVudHJpZXMsZnVuY3Rpb24oZW50cnkpe3JldHVybiFlbnRyeS5pbmRlZ3JlZX0pO3JldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KX1mdW5jdGlvbiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KXt2YXIgZW50cmllcz1bXTtmdW5jdGlvbiBoYW5kbGVJbih2RW50cnkpe3JldHVybiBmdW5jdGlvbih1RW50cnkpe2lmKHVFbnRyeS5tZXJnZWQpcmV0dXJuO2lmKF8uaXNVbmRlZmluZWQodUVudHJ5LmJhcnljZW50ZXIpfHxfLmlzVW5kZWZpbmVkKHZFbnRyeS5iYXJ5Y2VudGVyKXx8dUVudHJ5LmJhcnljZW50ZXI+PXZFbnRyeS5iYXJ5Y2VudGVyKW1lcmdlRW50cmllcyh2RW50cnksCnVFbnRyeSl9fWZ1bmN0aW9uIGhhbmRsZU91dCh2RW50cnkpe3JldHVybiBmdW5jdGlvbih3RW50cnkpe3dFbnRyeVsiaW4iXS5wdXNoKHZFbnRyeSk7aWYoLS13RW50cnkuaW5kZWdyZWU9PT0wKXNvdXJjZVNldC5wdXNoKHdFbnRyeSl9fXdoaWxlKHNvdXJjZVNldC5sZW5ndGgpe3ZhciBlbnRyeT1zb3VyY2VTZXQucG9wKCk7ZW50cmllcy5wdXNoKGVudHJ5KTtfLmZvckVhY2goZW50cnlbImluIl0ucmV2ZXJzZSgpLGhhbmRsZUluKGVudHJ5KSk7Xy5mb3JFYWNoKGVudHJ5Lm91dCxoYW5kbGVPdXQoZW50cnkpKX1yZXR1cm4gXy5jaGFpbihlbnRyaWVzKS5maWx0ZXIoZnVuY3Rpb24oZW50cnkpe3JldHVybiFlbnRyeS5tZXJnZWR9KS5tYXAoZnVuY3Rpb24oZW50cnkpe3JldHVybiBfLnBpY2soZW50cnksWyJ2cyIsImkiLCJiYXJ5Y2VudGVyIiwid2VpZ2h0Il0pfSkudmFsdWUoKX1mdW5jdGlvbiBtZXJnZUVudHJpZXModGFyZ2V0LHNvdXJjZSl7dmFyIHN1bT0wLHdlaWdodD0wOwppZih0YXJnZXQud2VpZ2h0KXtzdW0rPXRhcmdldC5iYXJ5Y2VudGVyKnRhcmdldC53ZWlnaHQ7d2VpZ2h0Kz10YXJnZXQud2VpZ2h0fWlmKHNvdXJjZS53ZWlnaHQpe3N1bSs9c291cmNlLmJhcnljZW50ZXIqc291cmNlLndlaWdodDt3ZWlnaHQrPXNvdXJjZS53ZWlnaHR9dGFyZ2V0LnZzPXNvdXJjZS52cy5jb25jYXQodGFyZ2V0LnZzKTt0YXJnZXQuYmFyeWNlbnRlcj1zdW0vd2VpZ2h0O3RhcmdldC53ZWlnaHQ9d2VpZ2h0O3RhcmdldC5pPU1hdGgubWluKHNvdXJjZS5pLHRhcmdldC5pKTtzb3VyY2UubWVyZ2VkPXRydWV9fSx7Ii4uL2xvZGFzaCI6MTB9XSwyMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksYmFyeWNlbnRlcj1yZXF1aXJlKCIuL2JhcnljZW50ZXIiKSxyZXNvbHZlQ29uZmxpY3RzPXJlcXVpcmUoIi4vcmVzb2x2ZS1jb25mbGljdHMiKSxzb3J0PXJlcXVpcmUoIi4vc29ydCIpO21vZHVsZS5leHBvcnRzPQpzb3J0U3ViZ3JhcGg7ZnVuY3Rpb24gc29ydFN1YmdyYXBoKGcsdixjZyxiaWFzUmlnaHQpe3ZhciBtb3ZhYmxlPWcuY2hpbGRyZW4odiksbm9kZT1nLm5vZGUodiksYmw9bm9kZT9ub2RlLmJvcmRlckxlZnQ6dW5kZWZpbmVkLGJyPW5vZGU/bm9kZS5ib3JkZXJSaWdodDp1bmRlZmluZWQsc3ViZ3JhcGhzPXt9O2lmKGJsKW1vdmFibGU9Xy5maWx0ZXIobW92YWJsZSxmdW5jdGlvbih3KXtyZXR1cm4gdyE9PWJsJiZ3IT09YnJ9KTt2YXIgYmFyeWNlbnRlcnM9YmFyeWNlbnRlcihnLG1vdmFibGUpO18uZm9yRWFjaChiYXJ5Y2VudGVycyxmdW5jdGlvbihlbnRyeSl7aWYoZy5jaGlsZHJlbihlbnRyeS52KS5sZW5ndGgpe3ZhciBzdWJncmFwaFJlc3VsdD1zb3J0U3ViZ3JhcGgoZyxlbnRyeS52LGNnLGJpYXNSaWdodCk7c3ViZ3JhcGhzW2VudHJ5LnZdPXN1YmdyYXBoUmVzdWx0O2lmKF8uaGFzKHN1YmdyYXBoUmVzdWx0LCJiYXJ5Y2VudGVyIikpbWVyZ2VCYXJ5Y2VudGVycyhlbnRyeSwKc3ViZ3JhcGhSZXN1bHQpfX0pO3ZhciBlbnRyaWVzPXJlc29sdmVDb25mbGljdHMoYmFyeWNlbnRlcnMsY2cpO2V4cGFuZFN1YmdyYXBocyhlbnRyaWVzLHN1YmdyYXBocyk7dmFyIHJlc3VsdD1zb3J0KGVudHJpZXMsYmlhc1JpZ2h0KTtpZihibCl7cmVzdWx0LnZzPV8uZmxhdHRlbihbYmwscmVzdWx0LnZzLGJyXSx0cnVlKTtpZihnLnByZWRlY2Vzc29ycyhibCkubGVuZ3RoKXt2YXIgYmxQcmVkPWcubm9kZShnLnByZWRlY2Vzc29ycyhibClbMF0pLGJyUHJlZD1nLm5vZGUoZy5wcmVkZWNlc3NvcnMoYnIpWzBdKTtpZighXy5oYXMocmVzdWx0LCJiYXJ5Y2VudGVyIikpe3Jlc3VsdC5iYXJ5Y2VudGVyPTA7cmVzdWx0LndlaWdodD0wfXJlc3VsdC5iYXJ5Y2VudGVyPShyZXN1bHQuYmFyeWNlbnRlcipyZXN1bHQud2VpZ2h0K2JsUHJlZC5vcmRlciticlByZWQub3JkZXIpLyhyZXN1bHQud2VpZ2h0KzIpO3Jlc3VsdC53ZWlnaHQrPTJ9fXJldHVybiByZXN1bHR9ZnVuY3Rpb24gZXhwYW5kU3ViZ3JhcGhzKGVudHJpZXMsCnN1YmdyYXBocyl7Xy5mb3JFYWNoKGVudHJpZXMsZnVuY3Rpb24oZW50cnkpe2VudHJ5LnZzPV8uZmxhdHRlbihlbnRyeS52cy5tYXAoZnVuY3Rpb24odil7aWYoc3ViZ3JhcGhzW3ZdKXJldHVybiBzdWJncmFwaHNbdl0udnM7cmV0dXJuIHZ9KSx0cnVlKX0pfWZ1bmN0aW9uIG1lcmdlQmFyeWNlbnRlcnModGFyZ2V0LG90aGVyKXtpZighXy5pc1VuZGVmaW5lZCh0YXJnZXQuYmFyeWNlbnRlcikpe3RhcmdldC5iYXJ5Y2VudGVyPSh0YXJnZXQuYmFyeWNlbnRlcip0YXJnZXQud2VpZ2h0K290aGVyLmJhcnljZW50ZXIqb3RoZXIud2VpZ2h0KS8odGFyZ2V0LndlaWdodCtvdGhlci53ZWlnaHQpO3RhcmdldC53ZWlnaHQrPW90aGVyLndlaWdodH1lbHNle3RhcmdldC5iYXJ5Y2VudGVyPW90aGVyLmJhcnljZW50ZXI7dGFyZ2V0LndlaWdodD1vdGhlci53ZWlnaHR9fX0seyIuLi9sb2Rhc2giOjEwLCIuL2JhcnljZW50ZXIiOjE0LCIuL3Jlc29sdmUtY29uZmxpY3RzIjoxOSwiLi9zb3J0IjoyMX1dLAoyMTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksdXRpbD1yZXF1aXJlKCIuLi91dGlsIik7bW9kdWxlLmV4cG9ydHM9c29ydDtmdW5jdGlvbiBzb3J0KGVudHJpZXMsYmlhc1JpZ2h0KXt2YXIgcGFydHM9dXRpbC5wYXJ0aXRpb24oZW50cmllcyxmdW5jdGlvbihlbnRyeSl7cmV0dXJuIF8uaGFzKGVudHJ5LCJiYXJ5Y2VudGVyIil9KTt2YXIgc29ydGFibGU9cGFydHMubGhzLHVuc29ydGFibGU9Xy5zb3J0QnkocGFydHMucmhzLGZ1bmN0aW9uKGVudHJ5KXtyZXR1cm4tZW50cnkuaX0pLHZzPVtdLHN1bT0wLHdlaWdodD0wLHZzSW5kZXg9MDtzb3J0YWJsZS5zb3J0KGNvbXBhcmVXaXRoQmlhcyghIWJpYXNSaWdodCkpO3ZzSW5kZXg9Y29uc3VtZVVuc29ydGFibGUodnMsdW5zb3J0YWJsZSx2c0luZGV4KTtfLmZvckVhY2goc29ydGFibGUsZnVuY3Rpb24oZW50cnkpe3ZzSW5kZXgrPWVudHJ5LnZzLmxlbmd0aDt2cy5wdXNoKGVudHJ5LnZzKTsKc3VtKz1lbnRyeS5iYXJ5Y2VudGVyKmVudHJ5LndlaWdodDt3ZWlnaHQrPWVudHJ5LndlaWdodDt2c0luZGV4PWNvbnN1bWVVbnNvcnRhYmxlKHZzLHVuc29ydGFibGUsdnNJbmRleCl9KTt2YXIgcmVzdWx0PXt2czpfLmZsYXR0ZW4odnMsdHJ1ZSl9O2lmKHdlaWdodCl7cmVzdWx0LmJhcnljZW50ZXI9c3VtL3dlaWdodDtyZXN1bHQud2VpZ2h0PXdlaWdodH1yZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIGNvbnN1bWVVbnNvcnRhYmxlKHZzLHVuc29ydGFibGUsaW5kZXgpe3ZhciBsYXN0O3doaWxlKHVuc29ydGFibGUubGVuZ3RoJiYobGFzdD1fLmxhc3QodW5zb3J0YWJsZSkpLmk8PWluZGV4KXt1bnNvcnRhYmxlLnBvcCgpO3ZzLnB1c2gobGFzdC52cyk7aW5kZXgrK31yZXR1cm4gaW5kZXh9ZnVuY3Rpb24gY29tcGFyZVdpdGhCaWFzKGJpYXMpe3JldHVybiBmdW5jdGlvbihlbnRyeVYsZW50cnlXKXtpZihlbnRyeVYuYmFyeWNlbnRlcjxlbnRyeVcuYmFyeWNlbnRlcilyZXR1cm4tMTtlbHNlIGlmKGVudHJ5Vi5iYXJ5Y2VudGVyPgplbnRyeVcuYmFyeWNlbnRlcilyZXR1cm4gMTtyZXR1cm4hYmlhcz9lbnRyeVYuaS1lbnRyeVcuaTplbnRyeVcuaS1lbnRyeVYuaX19fSx7Ii4uL2xvZGFzaCI6MTAsIi4uL3V0aWwiOjI5fV0sMjI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciBfPXJlcXVpcmUoIi4vbG9kYXNoIik7bW9kdWxlLmV4cG9ydHM9cGFyZW50RHVtbXlDaGFpbnM7ZnVuY3Rpb24gcGFyZW50RHVtbXlDaGFpbnMoZyl7dmFyIHBvc3RvcmRlck51bXM9cG9zdG9yZGVyKGcpO18uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsZnVuY3Rpb24odil7dmFyIG5vZGU9Zy5ub2RlKHYpLGVkZ2VPYmo9bm9kZS5lZGdlT2JqLHBhdGhEYXRhPWZpbmRQYXRoKGcscG9zdG9yZGVyTnVtcyxlZGdlT2JqLnYsZWRnZU9iai53KSxwYXRoPXBhdGhEYXRhLnBhdGgsbGNhPXBhdGhEYXRhLmxjYSxwYXRoSWR4PTAscGF0aFY9cGF0aFtwYXRoSWR4XSxhc2NlbmRpbmc9dHJ1ZTt3aGlsZSh2IT09ZWRnZU9iai53KXtub2RlPQpnLm5vZGUodik7aWYoYXNjZW5kaW5nKXt3aGlsZSgocGF0aFY9cGF0aFtwYXRoSWR4XSkhPT1sY2EmJmcubm9kZShwYXRoVikubWF4UmFuazxub2RlLnJhbmspcGF0aElkeCsrO2lmKHBhdGhWPT09bGNhKWFzY2VuZGluZz1mYWxzZX1pZighYXNjZW5kaW5nKXt3aGlsZShwYXRoSWR4PHBhdGgubGVuZ3RoLTEmJmcubm9kZShwYXRoVj1wYXRoW3BhdGhJZHgrMV0pLm1pblJhbms8PW5vZGUucmFuaylwYXRoSWR4Kys7cGF0aFY9cGF0aFtwYXRoSWR4XX1nLnNldFBhcmVudCh2LHBhdGhWKTt2PWcuc3VjY2Vzc29ycyh2KVswXX19KX1mdW5jdGlvbiBmaW5kUGF0aChnLHBvc3RvcmRlck51bXMsdix3KXt2YXIgdlBhdGg9W10sd1BhdGg9W10sbG93PU1hdGgubWluKHBvc3RvcmRlck51bXNbdl0ubG93LHBvc3RvcmRlck51bXNbd10ubG93KSxsaW09TWF0aC5tYXgocG9zdG9yZGVyTnVtc1t2XS5saW0scG9zdG9yZGVyTnVtc1t3XS5saW0pLHBhcmVudCxsY2E7cGFyZW50PXY7ZG97cGFyZW50PQpnLnBhcmVudChwYXJlbnQpO3ZQYXRoLnB1c2gocGFyZW50KX13aGlsZShwYXJlbnQmJihwb3N0b3JkZXJOdW1zW3BhcmVudF0ubG93Pmxvd3x8bGltPnBvc3RvcmRlck51bXNbcGFyZW50XS5saW0pKTtsY2E9cGFyZW50O3BhcmVudD13O3doaWxlKChwYXJlbnQ9Zy5wYXJlbnQocGFyZW50KSkhPT1sY2Epd1BhdGgucHVzaChwYXJlbnQpO3JldHVybntwYXRoOnZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpLGxjYTpsY2F9fWZ1bmN0aW9uIHBvc3RvcmRlcihnKXt2YXIgcmVzdWx0PXt9LGxpbT0wO2Z1bmN0aW9uIGRmcyh2KXt2YXIgbG93PWxpbTtfLmZvckVhY2goZy5jaGlsZHJlbih2KSxkZnMpO3Jlc3VsdFt2XT17bG93OmxvdyxsaW06bGltKyt9fV8uZm9yRWFjaChnLmNoaWxkcmVuKCksZGZzKTtyZXR1cm4gcmVzdWx0fX0seyIuL2xvZGFzaCI6MTB9XSwyMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksR3JhcGg9CnJlcXVpcmUoIi4uL2dyYXBobGliIikuR3JhcGgsdXRpbD1yZXF1aXJlKCIuLi91dGlsIik7bW9kdWxlLmV4cG9ydHM9e3Bvc2l0aW9uWDpwb3NpdGlvblgsZmluZFR5cGUxQ29uZmxpY3RzOmZpbmRUeXBlMUNvbmZsaWN0cyxmaW5kVHlwZTJDb25mbGljdHM6ZmluZFR5cGUyQ29uZmxpY3RzLGFkZENvbmZsaWN0OmFkZENvbmZsaWN0LGhhc0NvbmZsaWN0Omhhc0NvbmZsaWN0LHZlcnRpY2FsQWxpZ25tZW50OnZlcnRpY2FsQWxpZ25tZW50LGhvcml6b250YWxDb21wYWN0aW9uOmhvcml6b250YWxDb21wYWN0aW9uLGFsaWduQ29vcmRpbmF0ZXM6YWxpZ25Db29yZGluYXRlcyxmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudDpmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxiYWxhbmNlOmJhbGFuY2V9O2Z1bmN0aW9uIGZpbmRUeXBlMUNvbmZsaWN0cyhnLGxheWVyaW5nKXt2YXIgY29uZmxpY3RzPXt9O2Z1bmN0aW9uIHZpc2l0TGF5ZXIocHJldkxheWVyLGxheWVyKXt2YXIgazA9MCxzY2FuUG9zPQowLHByZXZMYXllckxlbmd0aD1wcmV2TGF5ZXIubGVuZ3RoLGxhc3ROb2RlPV8ubGFzdChsYXllcik7Xy5mb3JFYWNoKGxheWVyLGZ1bmN0aW9uKHYsaSl7dmFyIHc9ZmluZE90aGVySW5uZXJTZWdtZW50Tm9kZShnLHYpLGsxPXc/Zy5ub2RlKHcpLm9yZGVyOnByZXZMYXllckxlbmd0aDtpZih3fHx2PT09bGFzdE5vZGUpe18uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLGkrMSksZnVuY3Rpb24oc2Nhbk5vZGUpe18uZm9yRWFjaChnLnByZWRlY2Vzc29ycyhzY2FuTm9kZSksZnVuY3Rpb24odSl7dmFyIHVMYWJlbD1nLm5vZGUodSksdVBvcz11TGFiZWwub3JkZXI7aWYoKHVQb3M8azB8fGsxPHVQb3MpJiYhKHVMYWJlbC5kdW1teSYmZy5ub2RlKHNjYW5Ob2RlKS5kdW1teSkpYWRkQ29uZmxpY3QoY29uZmxpY3RzLHUsc2Nhbk5vZGUpfSl9KTtzY2FuUG9zPWkrMTtrMD1rMX19KTtyZXR1cm4gbGF5ZXJ9Xy5yZWR1Y2UobGF5ZXJpbmcsdmlzaXRMYXllcik7cmV0dXJuIGNvbmZsaWN0c30KZnVuY3Rpb24gZmluZFR5cGUyQ29uZmxpY3RzKGcsbGF5ZXJpbmcpe3ZhciBjb25mbGljdHM9e307ZnVuY3Rpb24gc2Nhbihzb3V0aCxzb3V0aFBvcyxzb3V0aEVuZCxwcmV2Tm9ydGhCb3JkZXIsbmV4dE5vcnRoQm9yZGVyKXt2YXIgdjtfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcyxzb3V0aEVuZCksZnVuY3Rpb24oaSl7dj1zb3V0aFtpXTtpZihnLm5vZGUodikuZHVtbXkpXy5mb3JFYWNoKGcucHJlZGVjZXNzb3JzKHYpLGZ1bmN0aW9uKHUpe3ZhciB1Tm9kZT1nLm5vZGUodSk7aWYodU5vZGUuZHVtbXkmJih1Tm9kZS5vcmRlcjxwcmV2Tm9ydGhCb3JkZXJ8fHVOb2RlLm9yZGVyPm5leHROb3J0aEJvcmRlcikpYWRkQ29uZmxpY3QoY29uZmxpY3RzLHUsdil9KX0pfWZ1bmN0aW9uIHZpc2l0TGF5ZXIobm9ydGgsc291dGgpe3ZhciBwcmV2Tm9ydGhQb3M9LTEsbmV4dE5vcnRoUG9zLHNvdXRoUG9zPTA7Xy5mb3JFYWNoKHNvdXRoLGZ1bmN0aW9uKHYsc291dGhMb29rYWhlYWQpe2lmKGcubm9kZSh2KS5kdW1teT09PQoiYm9yZGVyIil7dmFyIHByZWRlY2Vzc29ycz1nLnByZWRlY2Vzc29ycyh2KTtpZihwcmVkZWNlc3NvcnMubGVuZ3RoKXtuZXh0Tm9ydGhQb3M9Zy5ub2RlKHByZWRlY2Vzc29yc1swXSkub3JkZXI7c2Nhbihzb3V0aCxzb3V0aFBvcyxzb3V0aExvb2thaGVhZCxwcmV2Tm9ydGhQb3MsbmV4dE5vcnRoUG9zKTtzb3V0aFBvcz1zb3V0aExvb2thaGVhZDtwcmV2Tm9ydGhQb3M9bmV4dE5vcnRoUG9zfX1zY2FuKHNvdXRoLHNvdXRoUG9zLHNvdXRoLmxlbmd0aCxuZXh0Tm9ydGhQb3Msbm9ydGgubGVuZ3RoKX0pO3JldHVybiBzb3V0aH1fLnJlZHVjZShsYXllcmluZyx2aXNpdExheWVyKTtyZXR1cm4gY29uZmxpY3RzfWZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZyx2KXtpZihnLm5vZGUodikuZHVtbXkpcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSxmdW5jdGlvbih1KXtyZXR1cm4gZy5ub2RlKHUpLmR1bW15fSl9ZnVuY3Rpb24gYWRkQ29uZmxpY3QoY29uZmxpY3RzLAp2LHcpe2lmKHY+dyl7dmFyIHRtcD12O3Y9dzt3PXRtcH12YXIgY29uZmxpY3RzVj1jb25mbGljdHNbdl07aWYoIWNvbmZsaWN0c1YpY29uZmxpY3RzW3ZdPWNvbmZsaWN0c1Y9e307Y29uZmxpY3RzVlt3XT10cnVlfWZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cyx2LHcpe2lmKHY+dyl7dmFyIHRtcD12O3Y9dzt3PXRtcH1yZXR1cm4gXy5oYXMoY29uZmxpY3RzW3ZdLHcpfWZ1bmN0aW9uIHZlcnRpY2FsQWxpZ25tZW50KGcsbGF5ZXJpbmcsY29uZmxpY3RzLG5laWdoYm9yRm4pe3ZhciByb290PXt9LGFsaWduPXt9LHBvcz17fTtfLmZvckVhY2gobGF5ZXJpbmcsZnVuY3Rpb24obGF5ZXIpe18uZm9yRWFjaChsYXllcixmdW5jdGlvbih2LG9yZGVyKXtyb290W3ZdPXY7YWxpZ25bdl09djtwb3Nbdl09b3JkZXJ9KX0pO18uZm9yRWFjaChsYXllcmluZyxmdW5jdGlvbihsYXllcil7dmFyIHByZXZJZHg9LTE7Xy5mb3JFYWNoKGxheWVyLGZ1bmN0aW9uKHYpe3ZhciB3cz1uZWlnaGJvckZuKHYpOwppZih3cy5sZW5ndGgpe3dzPV8uc29ydEJ5KHdzLGZ1bmN0aW9uKHcpe3JldHVybiBwb3Nbd119KTt2YXIgbXA9KHdzLmxlbmd0aC0xKS8yO2Zvcih2YXIgaT1NYXRoLmZsb29yKG1wKSxpbD1NYXRoLmNlaWwobXApO2k8PWlsOysraSl7dmFyIHc9d3NbaV07aWYoYWxpZ25bdl09PT12JiZwcmV2SWR4PHBvc1t3XSYmIWhhc0NvbmZsaWN0KGNvbmZsaWN0cyx2LHcpKXthbGlnblt3XT12O2FsaWduW3ZdPXJvb3Rbdl09cm9vdFt3XTtwcmV2SWR4PXBvc1t3XX19fX0pfSk7cmV0dXJue3Jvb3Q6cm9vdCxhbGlnbjphbGlnbn19ZnVuY3Rpb24gaG9yaXpvbnRhbENvbXBhY3Rpb24oZyxsYXllcmluZyxyb290LGFsaWduLHJldmVyc2VTZXApe3ZhciB4cz17fSxibG9ja0c9YnVpbGRCbG9ja0dyYXBoKGcsbGF5ZXJpbmcscm9vdCxyZXZlcnNlU2VwKSxib3JkZXJUeXBlPXJldmVyc2VTZXA/ImJvcmRlckxlZnQiOiJib3JkZXJSaWdodCI7ZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsbmV4dE5vZGVzRnVuYyl7dmFyIHN0YWNrPQpibG9ja0cubm9kZXMoKTt2YXIgZWxlbT1zdGFjay5wb3AoKTt2YXIgdmlzaXRlZD17fTt3aGlsZShlbGVtKXtpZih2aXNpdGVkW2VsZW1dKXNldFhzRnVuYyhlbGVtKTtlbHNle3Zpc2l0ZWRbZWxlbV09dHJ1ZTtzdGFjay5wdXNoKGVsZW0pO3N0YWNrPXN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKX1lbGVtPXN0YWNrLnBvcCgpfX1mdW5jdGlvbiBwYXNzMShlbGVtKXt4c1tlbGVtXT1ibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLGUpe3JldHVybiBNYXRoLm1heChhY2MseHNbZS52XStibG9ja0cuZWRnZShlKSl9LDApfWZ1bmN0aW9uIHBhc3MyKGVsZW0pe3ZhciBtaW49YmxvY2tHLm91dEVkZ2VzKGVsZW0pLnJlZHVjZShmdW5jdGlvbihhY2MsZSl7cmV0dXJuIE1hdGgubWluKGFjYyx4c1tlLnddLWJsb2NrRy5lZGdlKGUpKX0sTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTt2YXIgbm9kZT1nLm5vZGUoZWxlbSk7aWYobWluIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZJiYKbm9kZS5ib3JkZXJUeXBlIT09Ym9yZGVyVHlwZSl4c1tlbGVtXT1NYXRoLm1heCh4c1tlbGVtXSxtaW4pfWl0ZXJhdGUocGFzczEsXy5iaW5kKGJsb2NrRy5wcmVkZWNlc3NvcnMsYmxvY2tHKSk7aXRlcmF0ZShwYXNzMixfLmJpbmQoYmxvY2tHLnN1Y2Nlc3NvcnMsYmxvY2tHKSk7Xy5mb3JFYWNoKGFsaWduLGZ1bmN0aW9uKHYpe3hzW3ZdPXhzW3Jvb3Rbdl1dfSk7cmV0dXJuIHhzfWZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLGxheWVyaW5nLHJvb3QscmV2ZXJzZVNlcCl7dmFyIGJsb2NrR3JhcGg9bmV3IEdyYXBoLGdyYXBoTGFiZWw9Zy5ncmFwaCgpLHNlcEZuPXNlcChncmFwaExhYmVsLm5vZGVzZXAsZ3JhcGhMYWJlbC5lZGdlc2VwLHJldmVyc2VTZXApO18uZm9yRWFjaChsYXllcmluZyxmdW5jdGlvbihsYXllcil7dmFyIHU7Xy5mb3JFYWNoKGxheWVyLGZ1bmN0aW9uKHYpe3ZhciB2Um9vdD1yb290W3ZdO2Jsb2NrR3JhcGguc2V0Tm9kZSh2Um9vdCk7aWYodSl7dmFyIHVSb290PQpyb290W3VdLHByZXZNYXg9YmxvY2tHcmFwaC5lZGdlKHVSb290LHZSb290KTtibG9ja0dyYXBoLnNldEVkZ2UodVJvb3QsdlJvb3QsTWF0aC5tYXgoc2VwRm4oZyx2LHUpLHByZXZNYXh8fDApKX11PXZ9KX0pO3JldHVybiBibG9ja0dyYXBofWZ1bmN0aW9uIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcseHNzKXtyZXR1cm4gXy5taW5CeShfLnZhbHVlcyh4c3MpLGZ1bmN0aW9uKHhzKXt2YXIgbWF4PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTt2YXIgbWluPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtfLmZvckluKHhzLGZ1bmN0aW9uKHgsdil7dmFyIGhhbGZXaWR0aD13aWR0aChnLHYpLzI7bWF4PU1hdGgubWF4KHgraGFsZldpZHRoLG1heCk7bWluPU1hdGgubWluKHgtaGFsZldpZHRoLG1pbil9KTtyZXR1cm4gbWF4LW1pbn0pfWZ1bmN0aW9uIGFsaWduQ29vcmRpbmF0ZXMoeHNzLGFsaWduVG8pe3ZhciBhbGlnblRvVmFscz1fLnZhbHVlcyhhbGlnblRvKSxhbGlnblRvTWluPQpfLm1pbihhbGlnblRvVmFscyksYWxpZ25Ub01heD1fLm1heChhbGlnblRvVmFscyk7Xy5mb3JFYWNoKFsidSIsImQiXSxmdW5jdGlvbih2ZXJ0KXtfLmZvckVhY2goWyJsIiwiciJdLGZ1bmN0aW9uKGhvcml6KXt2YXIgYWxpZ25tZW50PXZlcnQraG9yaXoseHM9eHNzW2FsaWdubWVudF0sZGVsdGE7aWYoeHM9PT1hbGlnblRvKXJldHVybjt2YXIgeHNWYWxzPV8udmFsdWVzKHhzKTtkZWx0YT1ob3Jpej09PSJsIj9hbGlnblRvTWluLV8ubWluKHhzVmFscyk6YWxpZ25Ub01heC1fLm1heCh4c1ZhbHMpO2lmKGRlbHRhKXhzc1thbGlnbm1lbnRdPV8ubWFwVmFsdWVzKHhzLGZ1bmN0aW9uKHgpe3JldHVybiB4K2RlbHRhfSl9KX0pfWZ1bmN0aW9uIGJhbGFuY2UoeHNzLGFsaWduKXtyZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLGZ1bmN0aW9uKGlnbm9yZSx2KXtpZihhbGlnbilyZXR1cm4geHNzW2FsaWduLnRvTG93ZXJDYXNlKCldW3ZdO2Vsc2V7dmFyIHhzPV8uc29ydEJ5KF8ubWFwKHhzcywKdikpO3JldHVybih4c1sxXSt4c1syXSkvMn19KX1mdW5jdGlvbiBwb3NpdGlvblgoZyl7dmFyIGxheWVyaW5nPXV0aWwuYnVpbGRMYXllck1hdHJpeChnKSxjb25mbGljdHM9Xy5tZXJnZShmaW5kVHlwZTFDb25mbGljdHMoZyxsYXllcmluZyksZmluZFR5cGUyQ29uZmxpY3RzKGcsbGF5ZXJpbmcpKTt2YXIgeHNzPXt9LGFkanVzdGVkTGF5ZXJpbmc7Xy5mb3JFYWNoKFsidSIsImQiXSxmdW5jdGlvbih2ZXJ0KXthZGp1c3RlZExheWVyaW5nPXZlcnQ9PT0idSI/bGF5ZXJpbmc6Xy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtfLmZvckVhY2goWyJsIiwiciJdLGZ1bmN0aW9uKGhvcml6KXtpZihob3Jpej09PSJyIilhZGp1c3RlZExheWVyaW5nPV8ubWFwKGFkanVzdGVkTGF5ZXJpbmcsZnVuY3Rpb24oaW5uZXIpe3JldHVybiBfLnZhbHVlcyhpbm5lcikucmV2ZXJzZSgpfSk7dmFyIG5laWdoYm9yRm49Xy5iaW5kKHZlcnQ9PT0idSI/Zy5wcmVkZWNlc3NvcnM6Zy5zdWNjZXNzb3JzLApnKTt2YXIgYWxpZ249dmVydGljYWxBbGlnbm1lbnQoZyxhZGp1c3RlZExheWVyaW5nLGNvbmZsaWN0cyxuZWlnaGJvckZuKTt2YXIgeHM9aG9yaXpvbnRhbENvbXBhY3Rpb24oZyxhZGp1c3RlZExheWVyaW5nLGFsaWduLnJvb3QsYWxpZ24uYWxpZ24saG9yaXo9PT0iciIpO2lmKGhvcml6PT09InIiKXhzPV8ubWFwVmFsdWVzKHhzLGZ1bmN0aW9uKHgpe3JldHVybi14fSk7eHNzW3ZlcnQraG9yaXpdPXhzfSl9KTt2YXIgc21hbGxlc3RXaWR0aD1maW5kU21hbGxlc3RXaWR0aEFsaWdubWVudChnLHhzcyk7YWxpZ25Db29yZGluYXRlcyh4c3Msc21hbGxlc3RXaWR0aCk7cmV0dXJuIGJhbGFuY2UoeHNzLGcuZ3JhcGgoKS5hbGlnbil9ZnVuY3Rpb24gc2VwKG5vZGVTZXAsZWRnZVNlcCxyZXZlcnNlU2VwKXtyZXR1cm4gZnVuY3Rpb24oZyx2LHcpe3ZhciB2TGFiZWw9Zy5ub2RlKHYpLHdMYWJlbD1nLm5vZGUodyksc3VtPTAsZGVsdGE7c3VtKz12TGFiZWwud2lkdGgvMjtpZihfLmhhcyh2TGFiZWwsCiJsYWJlbHBvcyIpKXN3aXRjaCh2TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSAibCI6ZGVsdGE9LXZMYWJlbC53aWR0aC8yO2JyZWFrO2Nhc2UgInIiOmRlbHRhPXZMYWJlbC53aWR0aC8yO2JyZWFrfWlmKGRlbHRhKXN1bSs9cmV2ZXJzZVNlcD9kZWx0YTotZGVsdGE7ZGVsdGE9MDtzdW0rPSh2TGFiZWwuZHVtbXk/ZWRnZVNlcDpub2RlU2VwKS8yO3N1bSs9KHdMYWJlbC5kdW1teT9lZGdlU2VwOm5vZGVTZXApLzI7c3VtKz13TGFiZWwud2lkdGgvMjtpZihfLmhhcyh3TGFiZWwsImxhYmVscG9zIikpc3dpdGNoKHdMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKXtjYXNlICJsIjpkZWx0YT13TGFiZWwud2lkdGgvMjticmVhaztjYXNlICJyIjpkZWx0YT0td0xhYmVsLndpZHRoLzI7YnJlYWt9aWYoZGVsdGEpc3VtKz1yZXZlcnNlU2VwP2RlbHRhOi1kZWx0YTtkZWx0YT0wO3JldHVybiBzdW19fWZ1bmN0aW9uIHdpZHRoKGcsdil7cmV0dXJuIGcubm9kZSh2KS53aWR0aH0KfSx7Ii4uL2dyYXBobGliIjo3LCIuLi9sb2Rhc2giOjEwLCIuLi91dGlsIjoyOX1dLDI0OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuLi9sb2Rhc2giKSx1dGlsPXJlcXVpcmUoIi4uL3V0aWwiKSxwb3NpdGlvblg9cmVxdWlyZSgiLi9iayIpLnBvc2l0aW9uWDttb2R1bGUuZXhwb3J0cz1wb3NpdGlvbjtmdW5jdGlvbiBwb3NpdGlvbihnKXtnPXV0aWwuYXNOb25Db21wb3VuZEdyYXBoKGcpO3Bvc2l0aW9uWShnKTtfLmZvckVhY2gocG9zaXRpb25YKGcpLGZ1bmN0aW9uKHgsdil7Zy5ub2RlKHYpLng9eH0pfWZ1bmN0aW9uIHBvc2l0aW9uWShnKXt2YXIgbGF5ZXJpbmc9dXRpbC5idWlsZExheWVyTWF0cml4KGcpLHJhbmtTZXA9Zy5ncmFwaCgpLnJhbmtzZXAscHJldlk9MDtfLmZvckVhY2gobGF5ZXJpbmcsZnVuY3Rpb24obGF5ZXIpe3ZhciBtYXhIZWlnaHQ9Xy5tYXgoXy5tYXAobGF5ZXIsZnVuY3Rpb24odil7cmV0dXJuIGcubm9kZSh2KS5oZWlnaHR9KSk7Cl8uZm9yRWFjaChsYXllcixmdW5jdGlvbih2KXtnLm5vZGUodikueT1wcmV2WSttYXhIZWlnaHQvMn0pO3ByZXZZKz1tYXhIZWlnaHQrcmFua1NlcH0pfX0seyIuLi9sb2Rhc2giOjEwLCIuLi91dGlsIjoyOSwiLi9iayI6MjN9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksR3JhcGg9cmVxdWlyZSgiLi4vZ3JhcGhsaWIiKS5HcmFwaCxzbGFjaz1yZXF1aXJlKCIuL3V0aWwiKS5zbGFjazttb2R1bGUuZXhwb3J0cz1mZWFzaWJsZVRyZWU7ZnVuY3Rpb24gZmVhc2libGVUcmVlKGcpe3ZhciB0PW5ldyBHcmFwaCh7ZGlyZWN0ZWQ6ZmFsc2V9KTt2YXIgc3RhcnQ9Zy5ub2RlcygpWzBdLHNpemU9Zy5ub2RlQ291bnQoKTt0LnNldE5vZGUoc3RhcnQse30pO3ZhciBlZGdlLGRlbHRhO3doaWxlKHRpZ2h0VHJlZSh0LGcpPHNpemUpe2VkZ2U9ZmluZE1pblNsYWNrRWRnZSh0LGcpO2RlbHRhPXQuaGFzTm9kZShlZGdlLnYpPwpzbGFjayhnLGVkZ2UpOi1zbGFjayhnLGVkZ2UpO3NoaWZ0UmFua3ModCxnLGRlbHRhKX1yZXR1cm4gdH1mdW5jdGlvbiB0aWdodFRyZWUodCxnKXtmdW5jdGlvbiBkZnModil7Xy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLGZ1bmN0aW9uKGUpe3ZhciBlZGdlVj1lLnYsdz12PT09ZWRnZVY/ZS53OmVkZ2VWO2lmKCF0Lmhhc05vZGUodykmJiFzbGFjayhnLGUpKXt0LnNldE5vZGUodyx7fSk7dC5zZXRFZGdlKHYsdyx7fSk7ZGZzKHcpfX0pfV8uZm9yRWFjaCh0Lm5vZGVzKCksZGZzKTtyZXR1cm4gdC5ub2RlQ291bnQoKX1mdW5jdGlvbiBmaW5kTWluU2xhY2tFZGdlKHQsZyl7cmV0dXJuIF8ubWluQnkoZy5lZGdlcygpLGZ1bmN0aW9uKGUpe2lmKHQuaGFzTm9kZShlLnYpIT09dC5oYXNOb2RlKGUudykpcmV0dXJuIHNsYWNrKGcsZSl9KX1mdW5jdGlvbiBzaGlmdFJhbmtzKHQsZyxkZWx0YSl7Xy5mb3JFYWNoKHQubm9kZXMoKSxmdW5jdGlvbih2KXtnLm5vZGUodikucmFuays9ZGVsdGF9KX0KfSx7Ii4uL2dyYXBobGliIjo3LCIuLi9sb2Rhc2giOjEwLCIuL3V0aWwiOjI4fV0sMjY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe3ZhciByYW5rVXRpbD1yZXF1aXJlKCIuL3V0aWwiKSxsb25nZXN0UGF0aD1yYW5rVXRpbC5sb25nZXN0UGF0aCxmZWFzaWJsZVRyZWU9cmVxdWlyZSgiLi9mZWFzaWJsZS10cmVlIiksbmV0d29ya1NpbXBsZXg9cmVxdWlyZSgiLi9uZXR3b3JrLXNpbXBsZXgiKTttb2R1bGUuZXhwb3J0cz1yYW5rO2Z1bmN0aW9uIHJhbmsoZyl7c3dpdGNoKGcuZ3JhcGgoKS5yYW5rZXIpe2Nhc2UgIm5ldHdvcmstc2ltcGxleCI6bmV0d29ya1NpbXBsZXhSYW5rZXIoZyk7YnJlYWs7Y2FzZSAidGlnaHQtdHJlZSI6dGlnaHRUcmVlUmFua2VyKGcpO2JyZWFrO2Nhc2UgImxvbmdlc3QtcGF0aCI6bG9uZ2VzdFBhdGhSYW5rZXIoZyk7YnJlYWs7ZGVmYXVsdDpuZXR3b3JrU2ltcGxleFJhbmtlcihnKX19dmFyIGxvbmdlc3RQYXRoUmFua2VyPWxvbmdlc3RQYXRoOwpmdW5jdGlvbiB0aWdodFRyZWVSYW5rZXIoZyl7bG9uZ2VzdFBhdGgoZyk7ZmVhc2libGVUcmVlKGcpfWZ1bmN0aW9uIG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpe25ldHdvcmtTaW1wbGV4KGcpfX0seyIuL2ZlYXNpYmxlLXRyZWUiOjI1LCIuL25ldHdvcmstc2ltcGxleCI6MjcsIi4vdXRpbCI6Mjh9XSwyNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIiksZmVhc2libGVUcmVlPXJlcXVpcmUoIi4vZmVhc2libGUtdHJlZSIpLHNsYWNrPXJlcXVpcmUoIi4vdXRpbCIpLnNsYWNrLGluaXRSYW5rPXJlcXVpcmUoIi4vdXRpbCIpLmxvbmdlc3RQYXRoLHByZW9yZGVyPXJlcXVpcmUoIi4uL2dyYXBobGliIikuYWxnLnByZW9yZGVyLHBvc3RvcmRlcj1yZXF1aXJlKCIuLi9ncmFwaGxpYiIpLmFsZy5wb3N0b3JkZXIsc2ltcGxpZnk9cmVxdWlyZSgiLi4vdXRpbCIpLnNpbXBsaWZ5O21vZHVsZS5leHBvcnRzPW5ldHdvcmtTaW1wbGV4OwpuZXR3b3JrU2ltcGxleC5pbml0TG93TGltVmFsdWVzPWluaXRMb3dMaW1WYWx1ZXM7bmV0d29ya1NpbXBsZXguaW5pdEN1dFZhbHVlcz1pbml0Q3V0VmFsdWVzO25ldHdvcmtTaW1wbGV4LmNhbGNDdXRWYWx1ZT1jYWxjQ3V0VmFsdWU7bmV0d29ya1NpbXBsZXgubGVhdmVFZGdlPWxlYXZlRWRnZTtuZXR3b3JrU2ltcGxleC5lbnRlckVkZ2U9ZW50ZXJFZGdlO25ldHdvcmtTaW1wbGV4LmV4Y2hhbmdlRWRnZXM9ZXhjaGFuZ2VFZGdlcztmdW5jdGlvbiBuZXR3b3JrU2ltcGxleChnKXtnPXNpbXBsaWZ5KGcpO2luaXRSYW5rKGcpO3ZhciB0PWZlYXNpYmxlVHJlZShnKTtpbml0TG93TGltVmFsdWVzKHQpO2luaXRDdXRWYWx1ZXModCxnKTt2YXIgZSxmO3doaWxlKGU9bGVhdmVFZGdlKHQpKXtmPWVudGVyRWRnZSh0LGcsZSk7ZXhjaGFuZ2VFZGdlcyh0LGcsZSxmKX19ZnVuY3Rpb24gaW5pdEN1dFZhbHVlcyh0LGcpe3ZhciB2cz1wb3N0b3JkZXIodCx0Lm5vZGVzKCkpO3ZzPXZzLnNsaWNlKDAsCnZzLmxlbmd0aC0xKTtfLmZvckVhY2godnMsZnVuY3Rpb24odil7YXNzaWduQ3V0VmFsdWUodCxnLHYpfSl9ZnVuY3Rpb24gYXNzaWduQ3V0VmFsdWUodCxnLGNoaWxkKXt2YXIgY2hpbGRMYWI9dC5ub2RlKGNoaWxkKSxwYXJlbnQ9Y2hpbGRMYWIucGFyZW50O3QuZWRnZShjaGlsZCxwYXJlbnQpLmN1dHZhbHVlPWNhbGNDdXRWYWx1ZSh0LGcsY2hpbGQpfWZ1bmN0aW9uIGNhbGNDdXRWYWx1ZSh0LGcsY2hpbGQpe3ZhciBjaGlsZExhYj10Lm5vZGUoY2hpbGQpLHBhcmVudD1jaGlsZExhYi5wYXJlbnQsY2hpbGRJc1RhaWw9dHJ1ZSxncmFwaEVkZ2U9Zy5lZGdlKGNoaWxkLHBhcmVudCksY3V0VmFsdWU9MDtpZighZ3JhcGhFZGdlKXtjaGlsZElzVGFpbD1mYWxzZTtncmFwaEVkZ2U9Zy5lZGdlKHBhcmVudCxjaGlsZCl9Y3V0VmFsdWU9Z3JhcGhFZGdlLndlaWdodDtfLmZvckVhY2goZy5ub2RlRWRnZXMoY2hpbGQpLGZ1bmN0aW9uKGUpe3ZhciBpc091dEVkZ2U9ZS52PT09Y2hpbGQsb3RoZXI9CmlzT3V0RWRnZT9lLnc6ZS52O2lmKG90aGVyIT09cGFyZW50KXt2YXIgcG9pbnRzVG9IZWFkPWlzT3V0RWRnZT09PWNoaWxkSXNUYWlsLG90aGVyV2VpZ2h0PWcuZWRnZShlKS53ZWlnaHQ7Y3V0VmFsdWUrPXBvaW50c1RvSGVhZD9vdGhlcldlaWdodDotb3RoZXJXZWlnaHQ7aWYoaXNUcmVlRWRnZSh0LGNoaWxkLG90aGVyKSl7dmFyIG90aGVyQ3V0VmFsdWU9dC5lZGdlKGNoaWxkLG90aGVyKS5jdXR2YWx1ZTtjdXRWYWx1ZSs9cG9pbnRzVG9IZWFkPy1vdGhlckN1dFZhbHVlOm90aGVyQ3V0VmFsdWV9fX0pO3JldHVybiBjdXRWYWx1ZX1mdW5jdGlvbiBpbml0TG93TGltVmFsdWVzKHRyZWUscm9vdCl7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJvb3Q9dHJlZS5ub2RlcygpWzBdO2Rmc0Fzc2lnbkxvd0xpbSh0cmVlLHt9LDEscm9vdCl9ZnVuY3Rpb24gZGZzQXNzaWduTG93TGltKHRyZWUsdmlzaXRlZCxuZXh0TGltLHYscGFyZW50KXt2YXIgbG93PW5leHRMaW0sbGFiZWw9dHJlZS5ub2RlKHYpOwp2aXNpdGVkW3ZdPXRydWU7Xy5mb3JFYWNoKHRyZWUubmVpZ2hib3JzKHYpLGZ1bmN0aW9uKHcpe2lmKCFfLmhhcyh2aXNpdGVkLHcpKW5leHRMaW09ZGZzQXNzaWduTG93TGltKHRyZWUsdmlzaXRlZCxuZXh0TGltLHcsdil9KTtsYWJlbC5sb3c9bG93O2xhYmVsLmxpbT1uZXh0TGltKys7aWYocGFyZW50KWxhYmVsLnBhcmVudD1wYXJlbnQ7ZWxzZSBkZWxldGUgbGFiZWwucGFyZW50O3JldHVybiBuZXh0TGltfWZ1bmN0aW9uIGxlYXZlRWRnZSh0cmVlKXtyZXR1cm4gXy5maW5kKHRyZWUuZWRnZXMoKSxmdW5jdGlvbihlKXtyZXR1cm4gdHJlZS5lZGdlKGUpLmN1dHZhbHVlPDB9KX1mdW5jdGlvbiBlbnRlckVkZ2UodCxnLGVkZ2Upe3ZhciB2PWVkZ2Uudix3PWVkZ2UudztpZighZy5oYXNFZGdlKHYsdykpe3Y9ZWRnZS53O3c9ZWRnZS52fXZhciB2TGFiZWw9dC5ub2RlKHYpLHdMYWJlbD10Lm5vZGUodyksdGFpbExhYmVsPXZMYWJlbCxmbGlwPWZhbHNlO2lmKHZMYWJlbC5saW0+d0xhYmVsLmxpbSl7dGFpbExhYmVsPQp3TGFiZWw7ZmxpcD10cnVlfXZhciBjYW5kaWRhdGVzPV8uZmlsdGVyKGcuZWRnZXMoKSxmdW5jdGlvbihlZGdlKXtyZXR1cm4gZmxpcD09PWlzRGVzY2VuZGFudCh0LHQubm9kZShlZGdlLnYpLHRhaWxMYWJlbCkmJmZsaXAhPT1pc0Rlc2NlbmRhbnQodCx0Lm5vZGUoZWRnZS53KSx0YWlsTGFiZWwpfSk7cmV0dXJuIF8ubWluQnkoY2FuZGlkYXRlcyxmdW5jdGlvbihlZGdlKXtyZXR1cm4gc2xhY2soZyxlZGdlKX0pfWZ1bmN0aW9uIGV4Y2hhbmdlRWRnZXModCxnLGUsZil7dmFyIHY9ZS52LHc9ZS53O3QucmVtb3ZlRWRnZSh2LHcpO3Quc2V0RWRnZShmLnYsZi53LHt9KTtpbml0TG93TGltVmFsdWVzKHQpO2luaXRDdXRWYWx1ZXModCxnKTt1cGRhdGVSYW5rcyh0LGcpfWZ1bmN0aW9uIHVwZGF0ZVJhbmtzKHQsZyl7dmFyIHJvb3Q9Xy5maW5kKHQubm9kZXMoKSxmdW5jdGlvbih2KXtyZXR1cm4hZy5ub2RlKHYpLnBhcmVudH0pLHZzPXByZW9yZGVyKHQscm9vdCk7dnM9dnMuc2xpY2UoMSk7Cl8uZm9yRWFjaCh2cyxmdW5jdGlvbih2KXt2YXIgcGFyZW50PXQubm9kZSh2KS5wYXJlbnQsZWRnZT1nLmVkZ2UodixwYXJlbnQpLGZsaXBwZWQ9ZmFsc2U7aWYoIWVkZ2Upe2VkZ2U9Zy5lZGdlKHBhcmVudCx2KTtmbGlwcGVkPXRydWV9Zy5ub2RlKHYpLnJhbms9Zy5ub2RlKHBhcmVudCkucmFuaysoZmxpcHBlZD9lZGdlLm1pbmxlbjotZWRnZS5taW5sZW4pfSl9ZnVuY3Rpb24gaXNUcmVlRWRnZSh0cmVlLHUsdil7cmV0dXJuIHRyZWUuaGFzRWRnZSh1LHYpfWZ1bmN0aW9uIGlzRGVzY2VuZGFudCh0cmVlLHZMYWJlbCxyb290TGFiZWwpe3JldHVybiByb290TGFiZWwubG93PD12TGFiZWwubGltJiZ2TGFiZWwubGltPD1yb290TGFiZWwubGltfX0seyIuLi9ncmFwaGxpYiI6NywiLi4vbG9kYXNoIjoxMCwiLi4vdXRpbCI6MjksIi4vZmVhc2libGUtdHJlZSI6MjUsIi4vdXRpbCI6Mjh9XSwyODpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7dmFyIF89cmVxdWlyZSgiLi4vbG9kYXNoIik7Cm1vZHVsZS5leHBvcnRzPXtsb25nZXN0UGF0aDpsb25nZXN0UGF0aCxzbGFjazpzbGFja307ZnVuY3Rpb24gbG9uZ2VzdFBhdGgoZyl7dmFyIHZpc2l0ZWQ9e307ZnVuY3Rpb24gZGZzKHYpe3ZhciBsYWJlbD1nLm5vZGUodik7aWYoXy5oYXModmlzaXRlZCx2KSlyZXR1cm4gbGFiZWwucmFuazt2aXNpdGVkW3ZdPXRydWU7dmFyIHJhbms9Xy5taW5CeShfLm1hcChnLm91dEVkZ2VzKHYpLGZ1bmN0aW9uKGUpe3JldHVybiBkZnMoZS53KS1nLmVkZ2UoZSkubWlubGVufSkpO2lmKHJhbms9PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl8fHJhbms9PT11bmRlZmluZWR8fHJhbms9PT1udWxsKXJhbms9MDtyZXR1cm4gbGFiZWwucmFuaz1yYW5rfV8uZm9yRWFjaChnLnNvdXJjZXMoKSxkZnMpfWZ1bmN0aW9uIHNsYWNrKGcsZSl7cmV0dXJuIGcubm9kZShlLncpLnJhbmstZy5ub2RlKGUudikucmFuay1nLmVkZ2UoZSkubWlubGVufX0seyIuLi9sb2Rhc2giOjEwfV0sMjk6W2Z1bmN0aW9uKHJlcXVpcmUsCm1vZHVsZSxleHBvcnRzKXt2YXIgXz1yZXF1aXJlKCIuL2xvZGFzaCIpLEdyYXBoPXJlcXVpcmUoIi4vZ3JhcGhsaWIiKS5HcmFwaDttb2R1bGUuZXhwb3J0cz17YWRkRHVtbXlOb2RlOmFkZER1bW15Tm9kZSxzaW1wbGlmeTpzaW1wbGlmeSxhc05vbkNvbXBvdW5kR3JhcGg6YXNOb25Db21wb3VuZEdyYXBoLHN1Y2Nlc3NvcldlaWdodHM6c3VjY2Vzc29yV2VpZ2h0cyxwcmVkZWNlc3NvcldlaWdodHM6cHJlZGVjZXNzb3JXZWlnaHRzLGludGVyc2VjdFJlY3Q6aW50ZXJzZWN0UmVjdCxidWlsZExheWVyTWF0cml4OmJ1aWxkTGF5ZXJNYXRyaXgsbm9ybWFsaXplUmFua3M6bm9ybWFsaXplUmFua3MscmVtb3ZlRW1wdHlSYW5rczpyZW1vdmVFbXB0eVJhbmtzLGFkZEJvcmRlck5vZGU6YWRkQm9yZGVyTm9kZSxtYXhSYW5rOm1heFJhbmsscGFydGl0aW9uOnBhcnRpdGlvbix0aW1lOnRpbWUsbm90aW1lOm5vdGltZX07ZnVuY3Rpb24gYWRkRHVtbXlOb2RlKGcsdHlwZSxhdHRycyxuYW1lKXt2YXIgdjsKZG8gdj1fLnVuaXF1ZUlkKG5hbWUpO3doaWxlKGcuaGFzTm9kZSh2KSk7YXR0cnMuZHVtbXk9dHlwZTtnLnNldE5vZGUodixhdHRycyk7cmV0dXJuIHZ9ZnVuY3Rpb24gc2ltcGxpZnkoZyl7dmFyIHNpbXBsaWZpZWQ9KG5ldyBHcmFwaCkuc2V0R3JhcGgoZy5ncmFwaCgpKTtfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3NpbXBsaWZpZWQuc2V0Tm9kZSh2LGcubm9kZSh2KSl9KTtfLmZvckVhY2goZy5lZGdlcygpLGZ1bmN0aW9uKGUpe3ZhciBzaW1wbGVMYWJlbD1zaW1wbGlmaWVkLmVkZ2UoZS52LGUudyl8fHt3ZWlnaHQ6MCxtaW5sZW46MX0sbGFiZWw9Zy5lZGdlKGUpO3NpbXBsaWZpZWQuc2V0RWRnZShlLnYsZS53LHt3ZWlnaHQ6c2ltcGxlTGFiZWwud2VpZ2h0K2xhYmVsLndlaWdodCxtaW5sZW46TWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLGxhYmVsLm1pbmxlbil9KX0pO3JldHVybiBzaW1wbGlmaWVkfWZ1bmN0aW9uIGFzTm9uQ29tcG91bmRHcmFwaChnKXt2YXIgc2ltcGxpZmllZD0KKG5ldyBHcmFwaCh7bXVsdGlncmFwaDpnLmlzTXVsdGlncmFwaCgpfSkpLnNldEdyYXBoKGcuZ3JhcGgoKSk7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXtpZighZy5jaGlsZHJlbih2KS5sZW5ndGgpc2ltcGxpZmllZC5zZXROb2RlKHYsZy5ub2RlKHYpKX0pO18uZm9yRWFjaChnLmVkZ2VzKCksZnVuY3Rpb24oZSl7c2ltcGxpZmllZC5zZXRFZGdlKGUsZy5lZGdlKGUpKX0pO3JldHVybiBzaW1wbGlmaWVkfWZ1bmN0aW9uIHN1Y2Nlc3NvcldlaWdodHMoZyl7dmFyIHdlaWdodE1hcD1fLm1hcChnLm5vZGVzKCksZnVuY3Rpb24odil7dmFyIHN1Y3M9e307Xy5mb3JFYWNoKGcub3V0RWRnZXModiksZnVuY3Rpb24oZSl7c3Vjc1tlLnddPShzdWNzW2Uud118fDApK2cuZWRnZShlKS53ZWlnaHR9KTtyZXR1cm4gc3Vjc30pO3JldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksd2VpZ2h0TWFwKX1mdW5jdGlvbiBwcmVkZWNlc3NvcldlaWdodHMoZyl7dmFyIHdlaWdodE1hcD1fLm1hcChnLm5vZGVzKCksCmZ1bmN0aW9uKHYpe3ZhciBwcmVkcz17fTtfLmZvckVhY2goZy5pbkVkZ2VzKHYpLGZ1bmN0aW9uKGUpe3ByZWRzW2Uudl09KHByZWRzW2Uudl18fDApK2cuZWRnZShlKS53ZWlnaHR9KTtyZXR1cm4gcHJlZHN9KTtyZXR1cm4gXy56aXBPYmplY3QoZy5ub2RlcygpLHdlaWdodE1hcCl9ZnVuY3Rpb24gaW50ZXJzZWN0UmVjdChyZWN0LHBvaW50KXt2YXIgeD1yZWN0Lng7dmFyIHk9cmVjdC55O3ZhciBkeD1wb2ludC54LXg7dmFyIGR5PXBvaW50LnkteTt2YXIgdz1yZWN0LndpZHRoLzI7dmFyIGg9cmVjdC5oZWlnaHQvMjtpZighZHgmJiFkeSl0aHJvdyBuZXcgRXJyb3IoIk5vdCBwb3NzaWJsZSB0byBmaW5kIGludGVyc2VjdGlvbiBpbnNpZGUgb2YgdGhlIHJlY3RhbmdsZSIpO3ZhciBzeCxzeTtpZihNYXRoLmFicyhkeSkqdz5NYXRoLmFicyhkeCkqaCl7aWYoZHk8MCloPS1oO3N4PWgqZHgvZHk7c3k9aH1lbHNle2lmKGR4PDApdz0tdztzeD13O3N5PXcqZHkvZHh9cmV0dXJue3g6eCsKc3gseTp5K3N5fX1mdW5jdGlvbiBidWlsZExheWVyTWF0cml4KGcpe3ZhciBsYXllcmluZz1fLm1hcChfLnJhbmdlKG1heFJhbmsoZykrMSksZnVuY3Rpb24oKXtyZXR1cm5bXX0pO18uZm9yRWFjaChnLm5vZGVzKCksZnVuY3Rpb24odil7dmFyIG5vZGU9Zy5ub2RlKHYpLHJhbms9bm9kZS5yYW5rO2lmKCFfLmlzVW5kZWZpbmVkKHJhbmspKWxheWVyaW5nW3JhbmtdW25vZGUub3JkZXJdPXZ9KTtyZXR1cm4gbGF5ZXJpbmd9ZnVuY3Rpb24gbm9ybWFsaXplUmFua3MoZyl7dmFyIG1pbj1fLm1pbkJ5KF8ubWFwKGcubm9kZXMoKSxmdW5jdGlvbih2KXtyZXR1cm4gZy5ub2RlKHYpLnJhbmt9KSk7Xy5mb3JFYWNoKGcubm9kZXMoKSxmdW5jdGlvbih2KXt2YXIgbm9kZT1nLm5vZGUodik7aWYoXy5oYXMobm9kZSwicmFuayIpKW5vZGUucmFuay09bWlufSl9ZnVuY3Rpb24gcmVtb3ZlRW1wdHlSYW5rcyhnKXt2YXIgb2Zmc2V0PV8ubWluQnkoXy5tYXAoZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3JldHVybiBnLm5vZGUodikucmFua30pKTsKdmFyIGxheWVycz1bXTtfLmZvckVhY2goZy5ub2RlcygpLGZ1bmN0aW9uKHYpe3ZhciByYW5rPWcubm9kZSh2KS5yYW5rLW9mZnNldDtpZighbGF5ZXJzW3JhbmtdKWxheWVyc1tyYW5rXT1bXTtsYXllcnNbcmFua10ucHVzaCh2KX0pO3ZhciBkZWx0YT0wLG5vZGVSYW5rRmFjdG9yPWcuZ3JhcGgoKS5ub2RlUmFua0ZhY3RvcjtfLmZvckVhY2gobGF5ZXJzLGZ1bmN0aW9uKHZzLGkpe2lmKF8uaXNVbmRlZmluZWQodnMpJiZpJW5vZGVSYW5rRmFjdG9yIT09MCktLWRlbHRhO2Vsc2UgaWYoZGVsdGEpXy5mb3JFYWNoKHZzLGZ1bmN0aW9uKHYpe2cubm9kZSh2KS5yYW5rKz1kZWx0YX0pfSl9ZnVuY3Rpb24gYWRkQm9yZGVyTm9kZShnLHByZWZpeCxyYW5rLG9yZGVyKXt2YXIgbm9kZT17d2lkdGg6MCxoZWlnaHQ6MH07aWYoYXJndW1lbnRzLmxlbmd0aD49NCl7bm9kZS5yYW5rPXJhbms7bm9kZS5vcmRlcj1vcmRlcn1yZXR1cm4gYWRkRHVtbXlOb2RlKGcsImJvcmRlciIsbm9kZSxwcmVmaXgpfQpmdW5jdGlvbiBtYXhSYW5rKGcpe3JldHVybiBfLm1heChfLm1hcChnLm5vZGVzKCksZnVuY3Rpb24odil7dmFyIHJhbms9Zy5ub2RlKHYpLnJhbms7aWYoIV8uaXNVbmRlZmluZWQocmFuaykpcmV0dXJuIHJhbmt9KSl9ZnVuY3Rpb24gcGFydGl0aW9uKGNvbGxlY3Rpb24sZm4pe3ZhciByZXN1bHQ9e2xoczpbXSxyaHM6W119O18uZm9yRWFjaChjb2xsZWN0aW9uLGZ1bmN0aW9uKHZhbHVlKXtpZihmbih2YWx1ZSkpcmVzdWx0Lmxocy5wdXNoKHZhbHVlKTtlbHNlIHJlc3VsdC5yaHMucHVzaCh2YWx1ZSl9KTtyZXR1cm4gcmVzdWx0fWZ1bmN0aW9uIHRpbWUobmFtZSxmbil7dmFyIHN0YXJ0PV8ubm93KCk7dHJ5e3JldHVybiBmbigpfWZpbmFsbHl7Y29uc29sZS5sb2cobmFtZSsiIHRpbWU6ICIrKF8ubm93KCktc3RhcnQpKyJtcyIpfX1mdW5jdGlvbiBub3RpbWUobmFtZSxmbil7cmV0dXJuIGZuKCl9fSx7Ii4vZ3JhcGhsaWIiOjcsIi4vbG9kYXNoIjoxMH1dLDMwOltmdW5jdGlvbihyZXF1aXJlLAptb2R1bGUsZXhwb3J0cyl7bW9kdWxlLmV4cG9ydHM9IjAuOC4yIn0se31dfSx7fSxbMV0pKDEpfSk7Ci8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vYW5ub3RhdGlvbi5qcwp2YXIgdGY7CihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpeyhmdW5jdGlvbihoKXtmdW5jdGlvbiBrKHEpe3JldHVybihkLnJlbmRlci5Bbm5vdGF0aW9uVHlwZVtxXXx8IiIpLnRvTG93ZXJDYXNlKCl8fG51bGx9ZnVuY3Rpb24gdChxLHUpe3UuYW5ub3RhdGlvblR5cGU9PT1kLnJlbmRlci5Bbm5vdGF0aW9uVHlwZS5TVU1NQVJZP2Yuc2VsZWN0T3JDcmVhdGVDaGlsZChxLCJ1c2UiKS5hdHRyKCJjbGFzcyIsInN1bW1hcnkiKS5hdHRyKCJ4bGluazpocmVmIiwiI3N1bW1hcnktaWNvbiIpLmF0dHIoImN1cnNvciIsInBvaW50ZXIiKToocT1mLm5vZGUuYnVpbGRTaGFwZShxLHUsZi5DbGFzcy5Bbm5vdGF0aW9uLk5PREUpLGYuc2VsZWN0T3JDcmVhdGVDaGlsZChxLCJ0aXRsZSIpLnRleHQodS5ub2RlLm5hbWUpKX1mdW5jdGlvbiBsKHEsdSl7bGV0IHg9dS5ub2RlLm5hbWUuc3BsaXQoIi8iKTtyZXR1cm4gcChxLHhbeC5sZW5ndGgtMV0sdSxudWxsKX1mdW5jdGlvbiBwKHEsdSwKeCxBKXtsZXQgeT1mLkNsYXNzLkFubm90YXRpb24uTEFCRUw7QSYmKHkrPSIgIitBKTtxPXEuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLHkpLmF0dHIoImR5IiwiLjM1ZW0iKS5hdHRyKCJ0ZXh0LWFuY2hvciIseC5pc0luPyJlbmQiOiJzdGFydCIpLnRleHQodSk7cmV0dXJuIGIuZ3JhcGguc2NlbmUubm9kZS5lbmZvcmNlTGFiZWxXaWR0aChxLC0xKX1mdW5jdGlvbiBtKHEsdSx4LEEpe3Eub24oIm1vdXNlb3ZlciIseT0+e0EuZmlyZSgiYW5ub3RhdGlvbi1oaWdobGlnaHQiLHtuYW1lOnkubm9kZS5uYW1lLGhvc3ROYW1lOnUubm9kZS5uYW1lfSl9KS5vbigibW91c2VvdXQiLHk9PntBLmZpcmUoImFubm90YXRpb24tdW5oaWdobGlnaHQiLHtuYW1lOnkubm9kZS5uYW1lLGhvc3ROYW1lOnUubm9kZS5uYW1lfSl9KS5vbigiY2xpY2siLHk9PntkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtBLmZpcmUoImFubm90YXRpb24tc2VsZWN0Iix7bmFtZTp5Lm5vZGUubmFtZSxob3N0TmFtZTp1Lm5vZGUubmFtZX0pfSk7CmlmKHguYW5ub3RhdGlvblR5cGUhPT1kLnJlbmRlci5Bbm5vdGF0aW9uVHlwZS5TVU1NQVJZJiZ4LmFubm90YXRpb25UeXBlIT09ZC5yZW5kZXIuQW5ub3RhdGlvblR5cGUuQ09OU1RBTlQpcS5vbigiY29udGV4dG1lbnUiLGYuY29udGV4dG1lbnUuZ2V0TWVudShBLGYubm9kZS5nZXRDb250ZXh0TWVudSh4Lm5vZGUsQSkpKX1mdW5jdGlvbiBuKHEsdSx4LEEpe2xldCB5PWQubGF5b3V0LmNvbXB1dGVDWFBvc2l0aW9uT2ZOb2RlU2hhcGUodSk7eC5yZW5kZXJOb2RlSW5mbyYmeC5hbm5vdGF0aW9uVHlwZSE9PWQucmVuZGVyLkFubm90YXRpb25UeXBlLkVMTElQU0lTJiZmLm5vZGUuc3R5bGl6ZShxLHgucmVuZGVyTm9kZUluZm8sQSxmLkNsYXNzLkFubm90YXRpb24uTk9ERSk7eC5hbm5vdGF0aW9uVHlwZT09PWQucmVuZGVyLkFubm90YXRpb25UeXBlLlNVTU1BUlkmJih4LndpZHRoKz0xMCk7cS5zZWxlY3QoInRleHQuIitmLkNsYXNzLkFubm90YXRpb24uTEFCRUwpLnRyYW5zaXRpb24oKS5hdHRyKCJ4IiwKeSt4LmR4Kyh4LmlzSW4/LTE6MSkqKHgud2lkdGgvMit4LmxhYmVsT2Zmc2V0KSkuYXR0cigieSIsdS55K3guZHkpO3Euc2VsZWN0KCJ1c2Uuc3VtbWFyeSIpLnRyYW5zaXRpb24oKS5hdHRyKCJ4Iix5K3guZHgtMykuYXR0cigieSIsdS55K3guZHktNik7Zi5wb3NpdGlvbkVsbGlwc2UocS5zZWxlY3QoIi4iK2YuQ2xhc3MuQW5ub3RhdGlvbi5OT0RFKyIgZWxsaXBzZSIpLHkreC5keCx1LnkreC5keSx4LndpZHRoLHguaGVpZ2h0KTtmLnBvc2l0aW9uUmVjdChxLnNlbGVjdCgiLiIrZi5DbGFzcy5Bbm5vdGF0aW9uLk5PREUrIiByZWN0IikseSt4LmR4LHUueSt4LmR5LHgud2lkdGgseC5oZWlnaHQpO2YucG9zaXRpb25SZWN0KHEuc2VsZWN0KCIuIitmLkNsYXNzLkFubm90YXRpb24uTk9ERSsiIHVzZSIpLHkreC5keCx1LnkreC5keSx4LndpZHRoLHguaGVpZ2h0KTtxLnNlbGVjdCgicGF0aC4iK2YuQ2xhc3MuQW5ub3RhdGlvbi5FREdFKS50cmFuc2l0aW9uKCkuYXR0cigiZCIsdz0+Cnt3PXcucG9pbnRzLm1hcChDPT4oe3g6Qy5keCt5LHk6Qy5keSt1Lnl9KSk7cmV0dXJuIGYuZWRnZS5pbnRlcnBvbGF0ZSh3KX0pfWguYnVpbGRHcm91cD1mdW5jdGlvbihxLHUseCxBKXtxPXEuc2VsZWN0QWxsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlc30pLmRhdGEodS5saXN0LHk9Pnkubm9kZS5uYW1lKTtxLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiZGF0YS1uYW1lIix5PT55Lm5vZGUubmFtZSkuZWFjaChmdW5jdGlvbih5KXtsZXQgdz1kMy5zZWxlY3QodGhpcyk7QS5hZGRBbm5vdGF0aW9uR3JvdXAoeSx4LHcpO2xldCBDPWYuQ2xhc3MuQW5ub3RhdGlvbi5FREdFLEY9eS5yZW5kZXJNZXRhZWRnZUluZm8mJnkucmVuZGVyTWV0YWVkZ2VJbmZvLm1ldGFlZGdlO0YmJiFGLm51bVJlZ3VsYXJFZGdlcyYmKEMrPSIgIitmLkNsYXNzLkFubm90YXRpb24uQ09OVFJPTF9FREdFKTtGJiZGLm51bVJlZkVkZ2VzJiYoQys9IiAiK2YuQ2xhc3MuRWRnZS5SRUZfTElORSk7CmYuZWRnZS5hcHBlbmRFZGdlKHcseSxBLEMpO3kuYW5ub3RhdGlvblR5cGUhPT1kLnJlbmRlci5Bbm5vdGF0aW9uVHlwZS5FTExJUFNJUz8obCh3LHkpLHQodyx5KSk6cCh3LHkubm9kZS5uYW1lLHksZi5DbGFzcy5Bbm5vdGF0aW9uLkVMTElQU0lTKX0pLm1lcmdlKHEpLmF0dHIoImNsYXNzIix5PT5mLkNsYXNzLkFubm90YXRpb24uR1JPVVArIiAiK2soeS5hbm5vdGF0aW9uVHlwZSkrIiAiK2Yubm9kZS5ub2RlQ2xhc3MoeSkpLmVhY2goZnVuY3Rpb24oeSl7bGV0IHc9ZDMuc2VsZWN0KHRoaXMpO24odyx4LHksQSk7eS5hbm5vdGF0aW9uVHlwZSE9PWQucmVuZGVyLkFubm90YXRpb25UeXBlLkVMTElQU0lTJiZtKHcseCx5LEEpfSk7cS5leGl0KCkuZWFjaChmdW5jdGlvbih5KXtsZXQgdz1kMy5zZWxlY3QodGhpcyk7QS5yZW1vdmVBbm5vdGF0aW9uR3JvdXAoeSx4LHcpfSkucmVtb3ZlKCk7cmV0dXJuIHF9fSkoZi5hbm5vdGF0aW9ufHwoZi5hbm5vdGF0aW9uPXt9KSl9KShkLnNjZW5lfHwKKGQuc2NlbmU9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL2NvbG9ycy5qcwooZnVuY3Rpb24oYil7Yi5DT0xPUlM9W3tuYW1lOiJHb29nbGUgQmx1ZSIsY29sb3I6IiM0MTg0ZjMiLGFjdGl2ZToiIzNhNTNjNSIsZGlzYWJsZWQ6IiNjYWQ4ZmMifSx7bmFtZToiR29vZ2xlIFJlZCIsY29sb3I6IiNkYjQ0MzciLGFjdGl2ZToiIzhmMmEwYyIsZGlzYWJsZWQ6IiNlOGM2YzEifSx7bmFtZToiR29vZ2xlIFllbGxvdyIsY29sb3I6IiNmNGI0MDAiLGFjdGl2ZToiI2RiOTIwMCIsZGlzYWJsZWQ6IiNmN2U4YjAifSx7bmFtZToiR29vZ2xlIEdyZWVuIixjb2xvcjoiIzBmOWQ1OCIsYWN0aXZlOiIjNDg4MDQ2IixkaXNhYmxlZDoiI2MyZTFjYyJ9LHtuYW1lOiJQdXJwbGUiLGNvbG9yOiIjYWE0NmJiIixhY3RpdmU6IiM1YzEzOTgiLGRpc2FibGVkOiIjZDdiY2U2In0se25hbWU6IlRlYWwiLGNvbG9yOiIjMDBhYmMwIixhY3RpdmU6IiM0NzgyOGUiLGRpc2FibGVkOiIjYzJlYWYyIn0se25hbWU6IkRlZXAgT3JhbmdlIixjb2xvcjoiI2ZmNmY0MiIsYWN0aXZlOiIjY2E0YTA2IiwKZGlzYWJsZWQ6IiNmMmNiYmEifSx7bmFtZToiTGltZSIsY29sb3I6IiM5ZDljMjMiLGFjdGl2ZToiIzdmNzcxZCIsZGlzYWJsZWQ6IiNmMWY0YzIifSx7bmFtZToiSW5kaWdvIixjb2xvcjoiIzViNmFiZiIsYWN0aXZlOiIjM2U0N2E5IixkaXNhYmxlZDoiI2M1YzhlOCJ9LHtuYW1lOiJQaW5rIixjb2xvcjoiI2VmNjE5MSIsYWN0aXZlOiIjY2ExYzYwIixkaXNhYmxlZDoiI2U5YjljZSJ9LHtuYW1lOiJEZWVwIFRlYWwiLGNvbG9yOiIjMDA3ODZhIixhY3RpdmU6IiMyYjRmNDMiLGRpc2FibGVkOiIjYmVkZWRhIn0se25hbWU6IkRlZXAgUGluayIsY29sb3I6IiNjMTE3NWEiLGFjdGl2ZToiIzc1MDg0ZiIsZGlzYWJsZWQ6IiNkZThjYWUifSx7bmFtZToiR3JheSIsY29sb3I6IiM5RTlFOUUiLGFjdGl2ZToiIzQyNDI0MiIsZGlzYWJsZWQ6IkY1RjVGNSJ9XS5yZWR1Y2UoKGQsZik9PntkW2YubmFtZV09ZjtyZXR1cm4gZH0se30pO2IuT1BfR1JPVVBfQ09MT1JTPVt7Y29sb3I6Ikdvb2dsZSBSZWQiLApncm91cHM6Imdlbl9sZWdhY3lfb3BzIGxlZ2FjeV9vcHMgbGVnYWN5X2Zsb2dzX2lucHV0IGxlZ2FjeV9pbWFnZV9pbnB1dCBsZWdhY3lfaW5wdXRfZXhhbXBsZV9pbnB1dCBsZWdhY3lfc2VxdWVuY2VfaW5wdXQgbGVnYWN5X3NldGlfaW5wdXRfaW5wdXQiLnNwbGl0KCIgIil9LHtjb2xvcjoiRGVlcCBPcmFuZ2UiLGdyb3VwczpbImNvbnN0YW50X29wcyJdfSx7Y29sb3I6IkluZGlnbyIsZ3JvdXBzOlsic3RhdGVfb3BzIl19LHtjb2xvcjoiUHVycGxlIixncm91cHM6WyJubl9vcHMiLCJubiJdfSx7Y29sb3I6Ikdvb2dsZSBHcmVlbiIsZ3JvdXBzOlsibWF0aF9vcHMiXX0se2NvbG9yOiJMaW1lIixncm91cHM6WyJhcnJheV9vcHMiXX0se2NvbG9yOiJUZWFsIixncm91cHM6WyJjb250cm9sX2Zsb3dfb3BzIiwiZGF0YV9mbG93X29wcyJdfSx7Y29sb3I6IlBpbmsiLGdyb3VwczpbInN1bW1hcnlfb3BzIl19LHtjb2xvcjoiRGVlcCBQaW5rIixncm91cHM6WyJpb19vcHMiXX1dLnJlZHVjZSgoZCwKZik9PntmLmdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2RbaF09Zi5jb2xvcn0pO3JldHVybiBkfSx7fSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL2NvbW1vbi5qcwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpeyhmdW5jdGlvbihmKXtmLk9QX0dSQVBIPSJvcF9ncmFwaCI7Zi5DT05DRVBUVUFMX0dSQVBIPSJjb25jZXB0dWFsX2dyYXBoIjtmLlBST0ZJTEU9InByb2ZpbGUifSkoZC5TZWxlY3Rpb25UeXBlfHwoZC5TZWxlY3Rpb25UeXBlPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWNvbW1vbi9jb250ZXh0bWVudS5qcwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpeyhmdW5jdGlvbihmKXsoZnVuY3Rpb24oaCl7ZnVuY3Rpb24gayh0KXtsZXQgbD0wLHA9MDtmb3IoO3QmJjA8PXQub2Zmc2V0TGVmdCYmMDw9dC5vZmZzZXRUb3A7KWwrPXQub2Zmc2V0TGVmdC10LnNjcm9sbExlZnQscCs9dC5vZmZzZXRUb3AtdC5zY3JvbGxUb3AsdD10Lm9mZnNldFBhcmVudDtyZXR1cm57bGVmdDpsLHRvcDpwfX1oLmdldE1lbnU9ZnVuY3Rpb24odCxsKXtjb25zdCBwPXQuZ2V0Q29udGV4dE1lbnUoKSxtPWQzLnNlbGVjdCh0LmdldENvbnRleHRNZW51KCkpO3JldHVybiBmdW5jdGlvbihuLHEpe2Z1bmN0aW9uIHUoeSl7eSYmeS5jb21wb3NlZFBhdGgoKS5pbmNsdWRlcyhwKXx8KG0uc3R5bGUoImRpc3BsYXkiLCJub25lIiksZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLHUse2NhcHR1cmU6ITB9KSl9bGV0IHg9ZDMuZXZlbnQ7Y29uc3QgQT1rKHQpO20uc3R5bGUoImRpc3BsYXkiLCJibG9jayIpLnN0eWxlKCJsZWZ0IiwKeC5jbGllbnRYLUEubGVmdCsxKyJweCIpLnN0eWxlKCJ0b3AiLHguY2xpZW50WS1BLnRvcCsxKyJweCIpO3gucHJldmVudERlZmF1bHQoKTt4LnN0b3BQcm9wYWdhdGlvbigpO2RvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIix1LHtjYXB0dXJlOiEwfSk7bS5odG1sKCIiKTttLmFwcGVuZCgidWwiKS5zZWxlY3RBbGwoImxpIikuZGF0YShsKS5lbnRlcigpLmFwcGVuZCgibGkiKS5vbigiY2xpY2siLHk9Pnt5LmFjdGlvbih0aGlzLG4scSk7dSgpfSkuaHRtbChmdW5jdGlvbih5KXtyZXR1cm4geS50aXRsZShuKX0pfX19KShmLmNvbnRleHRtZW51fHwoZi5jb250ZXh0bWVudT17fSkpfSkoZC5zY2VuZXx8KGQuc2NlbmU9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL2VkZ2UuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7KGZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGsoeSl7cmV0dXJuIHkuditkLkVER0VfS0VZX0RFTElNK3kud31mdW5jdGlvbiB0KHksdyl7dz13LmdldE5vZGVCeU5hbWUoeS52KTtpZihudWxsPT13Lm91dHB1dFNoYXBlc3x8Xy5pc0VtcHR5KHcub3V0cHV0U2hhcGVzKSlyZXR1cm4gbnVsbDt5PXcub3V0cHV0U2hhcGVzW3kub3V0cHV0VGVuc29yS2V5XTtyZXR1cm4gbnVsbD09eT9udWxsOjA9PT15Lmxlbmd0aD8ic2NhbGFyIjp5Lm1hcChDPT4tMT09PUM/Ij8iOkMpLmpvaW4oIlx1MDBkNyIpfWZ1bmN0aW9uIGwoeSx3KXtyZXR1cm4gdy5lZGdlTGFiZWxGdW5jdGlvbj93LmVkZ2VMYWJlbEZ1bmN0aW9uKHksdyk6MTx5LmJhc2VFZGdlTGlzdC5sZW5ndGg/eS5iYXNlRWRnZUxpc3QubGVuZ3RoKyIgdGVuc29ycyI6dCh5LmJhc2VFZGdlTGlzdFswXSx3KX1mdW5jdGlvbiBwKHksdyxDKXtjb25zdCBGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhiLmdyYXBoLnNjZW5lLlNWR19OQU1FU1BBQ0UsCiJwYXRoIik7Zm9yKGxldCBEPTE7RDx5Lmxlbmd0aDtEKyspaWYoRi5zZXRBdHRyaWJ1dGUoImQiLEMoeS5zbGljZSgwLEQpKSksRi5nZXRUb3RhbExlbmd0aCgpPncpcmV0dXJuIEQtMTtyZXR1cm4geS5sZW5ndGgtMX1mdW5jdGlvbiBtKHksdyxDKXt2YXIgRj1kMy5saW5lKCkueChOPT5OLngpLnkoTj0+Ti55KSxEPWQzLnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicGF0aCIpKS5hdHRyKCJkIixGKHkpKSxCPSt3LmF0dHIoIm1hcmtlcldpZHRoIiksST13LmF0dHIoInZpZXdCb3giKS5zcGxpdCgiICIpLm1hcChOdW1iZXIpO0k9SVsyXS1JWzBdO3c9K3cuYXR0cigicmVmWCIpO0Q9RC5ub2RlKCk7aWYoQylyZXR1cm4gQio9MS13L0ksQz1ELmdldFBvaW50QXRMZW5ndGgoQiksRj1wKHksQixGKSx5W0YtMV09e3g6Qy54LHk6Qy55fSx5LnNsaWNlKEYtMSk7Qz0xLXcvSTtCPUQuZ2V0VG90YWxMZW5ndGgoKS1CKkM7Qz0KRC5nZXRQb2ludEF0TGVuZ3RoKEIpO0Y9cCh5LEIsRik7eVtGXT17eDpDLngseTpDLnl9O3JldHVybiB5LnNsaWNlKDAsRisxKX1mdW5jdGlvbiBuKHksdyxDLEYpe0Y9Rnx8Zi5DbGFzcy5FZGdlLkxJTkU7dy5sYWJlbCYmdy5sYWJlbC5zdHJ1Y3R1cmFsJiYoRis9IiAiK2YuQ2xhc3MuRWRnZS5TVFJVQ1RVUkFMKTt3LmxhYmVsJiZ3LmxhYmVsLm1ldGFlZGdlJiZ3LmxhYmVsLm1ldGFlZGdlLm51bVJlZkVkZ2VzJiYoRis9IiAiK2YuQ2xhc3MuRWRnZS5SRUZFUkVOQ0VfRURHRSk7Qy5oYW5kbGVFZGdlU2VsZWN0ZWQmJihGKz0iICIrZi5DbGFzcy5FZGdlLlNFTEVDVEFCTEUpO2xldCBEPSJwYXRoXyIrayh3KTtpZihDLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbil2YXIgQj1DLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhGdW5jdGlvbih3LEYpO2Vsc2UgQj0xLG51bGwhPXcubGFiZWwmJm51bGwhPXcubGFiZWwubWV0YWVkZ2UmJihCPXcubGFiZWwubWV0YWVkZ2UudG90YWxTaXplKSwKQj1DLnJlbmRlckhpZXJhcmNoeS5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGUoQik7Rj15LmFwcGVuZCgicGF0aCIpLmF0dHIoImlkIixEKS5hdHRyKCJjbGFzcyIsRikuc3R5bGUoInN0cm9rZS13aWR0aCIsQisicHgiKTt3LmxhYmVsJiZ3LmxhYmVsLm1ldGFlZGdlJiYody5sYWJlbC5tZXRhZWRnZS5udW1SZWZFZGdlcz8oQj1gcmVmZXJlbmNlLWFycm93aGVhZC0ke0EoQil9YCxGLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7Qn0pYCksdy5sYWJlbC5zdGFydE1hcmtlcklkPUIpOihCPWBkYXRhZmxvdy1hcnJvd2hlYWQtJHtBKEIpfWAsRi5zdHlsZSgibWFya2VyLWVuZCIsYHVybCgjJHtCfSlgKSx3LmxhYmVsLmVuZE1hcmtlcklkPUIpKTtudWxsIT13LmxhYmVsJiZudWxsIT13LmxhYmVsLm1ldGFlZGdlJiYodz1sKHcubGFiZWwubWV0YWVkZ2UsQy5yZW5kZXJIaWVyYXJjaHkpLG51bGwhPXcmJnkuYXBwZW5kKCJ0ZXh0IikuYXBwZW5kKCJ0ZXh0UGF0aCIpLmF0dHIoInhsaW5rOmhyZWYiLAoiIyIrRCkuYXR0cigic3RhcnRPZmZzZXQiLCI1MCUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLnRleHQodykpfWZ1bmN0aW9uIHEoeSx3LEMsRixEKXtGPUMubGFiZWw7bGV0IEI9Ri5hZGpvaW5pbmdNZXRhZWRnZSxJPUYucG9pbnRzO3k9eS5zaGFkb3dSb290O0MubGFiZWwuc3RhcnRNYXJrZXJJZCYmKEk9bShJLGQzLnNlbGVjdCh5LnF1ZXJ5U2VsZWN0b3IoIiMiK0MubGFiZWwuc3RhcnRNYXJrZXJJZCkpLCEwKSk7Qy5sYWJlbC5lbmRNYXJrZXJJZCYmKEk9bShJLGQzLnNlbGVjdCh5LnF1ZXJ5U2VsZWN0b3IoIiMiK0MubGFiZWwuZW5kTWFya2VySWQpKSwhMSkpO2lmKCFCKXJldHVybiBkMy5pbnRlcnBvbGF0ZShELGguaW50ZXJwb2xhdGUoSSkpO2xldCBOPUIuZWRnZUdyb3VwLm5vZGUoKS5maXJzdENoaWxkLE89Ri5tZXRhZWRnZS5pbmJvdW5kO3JldHVybiBmdW5jdGlvbigpe2xldCBIPU4uZ2V0UG9pbnRBdExlbmd0aChPPwpOLmdldFRvdGFsTGVuZ3RoKCk6MCkubWF0cml4VHJhbnNmb3JtKE4uZ2V0Q1RNKCkpLm1hdHJpeFRyYW5zZm9ybSh3LmdldENUTSgpLmludmVyc2UoKSksSz1PPzA6SS5sZW5ndGgtMTtJW0tdLng9SC54O0lbS10ueT1ILnk7cmV0dXJuIGguaW50ZXJwb2xhdGUoSSl9fWZ1bmN0aW9uIHUoeSx3KXtkMy5zZWxlY3Qodykuc2VsZWN0KCJwYXRoLiIrZi5DbGFzcy5FZGdlLkxJTkUpLnRyYW5zaXRpb24oKS5hdHRyVHdlZW4oImQiLGZ1bmN0aW9uKEMsRixEKXtyZXR1cm4gcSh5LHRoaXMsQyxGLEQpfSl9ZnVuY3Rpb24geCh5LHcpe3kuY2xhc3NlZCgiZmFkZWQiLHcubGFiZWwuaXNGYWRlZE91dCk7dz13LmxhYmVsLm1ldGFlZGdlO3kuc2VsZWN0KCJwYXRoLiIrZi5DbGFzcy5FZGdlLkxJTkUpLmNsYXNzZWQoImNvbnRyb2wtZGVwIix3JiYhdy5udW1SZWd1bGFyRWRnZXMpfWguTUlOX0VER0VfV0lEVEg9Ljc1O2guTUFYX0VER0VfV0lEVEg9MTI7aC5FREdFX1dJRFRIX1NJWkVfQkFTRURfU0NBTEU9CmQzLnNjYWxlUG93KCkuZXhwb25lbnQoLjMpLmRvbWFpbihbMSw1RTZdKS5yYW5nZShbaC5NSU5fRURHRV9XSURUSCxoLk1BWF9FREdFX1dJRFRIXSkuY2xhbXAoITApO2xldCBBPWQzLnNjYWxlUXVhbnRpemUoKS5kb21haW4oW2guTUlOX0VER0VfV0lEVEgsaC5NQVhfRURHRV9XSURUSF0pLnJhbmdlKFsic21hbGwiLCJtZWRpdW0iLCJsYXJnZSIsInhsYXJnZSJdKTtoLmdldEVkZ2VLZXk9aztoLmJ1aWxkR3JvdXA9ZnVuY3Rpb24oeSx3LEMpe2xldCBGPVtdO0Y9Xy5yZWR1Y2Uody5lZGdlcygpLChELEIpPT57bGV0IEk9dy5lZGdlKEIpO0QucHVzaCh7djpCLnYsdzpCLncsbGFiZWw6SX0pO3JldHVybiBEfSxGKTt5PWYuc2VsZWN0T3JDcmVhdGVDaGlsZCh5LCJnIixmLkNsYXNzLkVkZ2UuQ09OVEFJTkVSKS5zZWxlY3RBbGwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGlsZE5vZGVzfSkuZGF0YShGLGspO3kuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsZi5DbGFzcy5FZGdlLkdST1VQKS5hdHRyKCJkYXRhLWVkZ2UiLAprKS5lYWNoKGZ1bmN0aW9uKEQpe2xldCBCPWQzLnNlbGVjdCh0aGlzKTtELmxhYmVsLmVkZ2VHcm91cD1CO0MuX2VkZ2VHcm91cEluZGV4W2soRCldPUI7aWYoQy5oYW5kbGVFZGdlU2VsZWN0ZWQpQi5vbigiY2xpY2siLEk9PntkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtDLmZpcmUoImVkZ2Utc2VsZWN0Iix7ZWRnZURhdGE6SSxlZGdlR3JvdXA6Qn0pfSk7bihCLEQsQyl9KS5tZXJnZSh5KS5lYWNoKGZ1bmN0aW9uKCl7dShDLHRoaXMpfSkuZWFjaChmdW5jdGlvbihEKXt4KGQzLnNlbGVjdCh0aGlzKSxELEMpfSk7eS5leGl0KCkuZWFjaChEPT57ZGVsZXRlIEMuX2VkZ2VHcm91cEluZGV4W2soRCldfSkucmVtb3ZlKCk7cmV0dXJuIHl9O2guZ2V0TGFiZWxGb3JCYXNlRWRnZT10O2guZ2V0TGFiZWxGb3JFZGdlPWw7aC5hcHBlbmRFZGdlPW47aC5pbnRlcnBvbGF0ZT1kMy5saW5lKCkuY3VydmUoZDMuY3VydmVCYXNpcykueCh5PT55LngpLnkoeT0+eS55KX0pKGYuZWRnZXx8KGYuZWRnZT0Ke30pKX0pKGQuc2NlbmV8fChkLnNjZW5lPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWNvbW1vbi9leHRlcm5zLmpzCgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL2dyYXBoLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZihILEssTSxMLFEpe3JldHVybihNP00rIi8iOiIiKSsoSCsoInVuZGVmaW5lZCIhPT10eXBlb2YgTCYmInVuZGVmaW5lZCIhPT10eXBlb2YgUT8iWyIrTCsiLSIrUSsiXSI6IiMiKStLKX1mdW5jdGlvbiBoKEgpe2lmKCFIKXJldHVybiBudWxsO2ZvcihsZXQgSz0wO0s8SC5sZW5ndGg7SysrKXtsZXQge2tleTpNLHZhbHVlOkx9PUhbS107aWYoIl9vdXRwdXRfc2hhcGVzIj09PU0pe2lmKCFMLmxpc3Quc2hhcGUpYnJlYWs7bGV0IFE9TC5saXN0LnNoYXBlLm1hcChUPT5ULnVua25vd25fcmFuaz9udWxsOm51bGw9PVQuZGltfHwxPT09VC5kaW0ubGVuZ3RoJiZudWxsPT1ULmRpbVswXS5zaXplP1tdOlQuZGltLm1hcChYPT5YLnNpemUpKTtILnNwbGljZShLLDEpO3JldHVybiBRfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBrKEgpe2lmKCFIKXJldHVybiBudWxsO2ZvcihsZXQgSz0wO0s8SC5sZW5ndGg7SysrKWlmKCJfWGxhQ2x1c3RlciI9PT0KSFtLXS5rZXkpcmV0dXJuIEhbS10udmFsdWUuc3x8bnVsbDtyZXR1cm4gbnVsbH1mdW5jdGlvbiB0KEgpe2xldCBLPVtdO18uZWFjaChILE09PntsZXQgTD0iXiI9PT1NWzBdO0wmJihNPU0uc3Vic3RyaW5nKDEpKTtsZXQgUT1NLFQ9IjAiLFg9TS5tYXRjaCgvKC4qKTooXHcrOlxkKykkLyk7aWYoWClRPVhbMV0sVD1YWzJdO2Vsc2UgaWYoWD1NLm1hdGNoKC8oLiopOihcZCspJC8pKVE9WFsxXSxUPVhbMl07MCE9PUsubGVuZ3RoJiZRPT09S1tLLmxlbmd0aC0xXS5uYW1lfHxLLnB1c2goe25hbWU6USxvdXRwdXRUZW5zb3JLZXk6VCxpc0NvbnRyb2xEZXBlbmRlbmN5Okx9KX0pO3JldHVybiBLfWZ1bmN0aW9uIGwoSCxLLE0sTCxRLFQpe0shPT1NLm5hbWUmJkguZWRnZXMucHVzaCh7djpLLHc6TS5uYW1lLG91dHB1dFRlbnNvcktleTpMLm91dHB1dFRlbnNvcktleSxpc0NvbnRyb2xEZXBlbmRlbmN5OkwuaXNDb250cm9sRGVwZW5kZW5jeSxpc1JlZmVyZW5jZUVkZ2U6ITA9PT1RLnJlZkVkZ2VzW00ub3ArCiIgIitUXX0pfWZ1bmN0aW9uIHAoSCxLLE0pe009TXx8e307bGV0IEw9bmV3IGdyYXBobGliLkdyYXBoKE0pO0wuc2V0R3JhcGgoe25hbWU6SCxyYW5rZGlyOk0ucmFua2Rpcnx8IkJUIix0eXBlOkt9KTtyZXR1cm4gTH1mdW5jdGlvbiBtKEgpe3JldHVybiBmdW5jdGlvbihLKXtmb3IobGV0IE09MDtNPEgubGVuZ3RoO00rKyl7bGV0IEw9bmV3IFJlZ0V4cChIW01dKTtpZigic3RyaW5nIj09PXR5cGVvZiBLLm9wJiZLLm9wLm1hdGNoKEwpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiBuKEgpe2xldCBLPUguc3BsaXQoZC5OQU1FU1BBQ0VfREVMSU0pO3JldHVybiBIK2QuTkFNRVNQQUNFX0RFTElNKyIoIitLW0subGVuZ3RoLTFdKyIpIn1mdW5jdGlvbiBxKEgsSyl7bGV0IE09e30sTD17fTtILnNvcnQoKTtmb3IobGV0IFE9MDtRPEgubGVuZ3RoLTE7KytRKXtsZXQgVD1IW1FdO18uZWFjaCh4KFQpLnNsaWNlKDAsLTEpLFg9PntMW1hdPSEwfSk7Zm9yKGxldCBYPVErMTtYPEgubGVuZ3RoOysrWCl7bGV0IGFhPQpIW1hdO2lmKF8uc3RhcnRzV2l0aChhYSxUKSl7aWYoYWEubGVuZ3RoPlQubGVuZ3RoJiZhYS5jaGFyQXQoVC5sZW5ndGgpPT09ZC5OQU1FU1BBQ0VfREVMSU0pe01bVF09bihUKTticmVha319ZWxzZSBicmVha319Xy5lYWNoKEssUT0+e1EgaW4gTCYmKE1bUV09bihRKSl9KTtyZXR1cm4gTX1mdW5jdGlvbiB1KEgpe2xldCBLPUgubm9kZXMoKS5tYXAoZnVuY3Rpb24oTSl7cmV0dXJuIEgubmVpZ2hib3JzKE0pLmxlbmd0aH0pO0suc29ydCgpO3JldHVybiBLfWZ1bmN0aW9uIHgoSCxLKXtsZXQgTT1bXSxMPUguaW5kZXhPZihkLk5BTUVTUEFDRV9ERUxJTSk7Zm9yKDswPD1MOylNLnB1c2goSC5zdWJzdHJpbmcoMCxMKSksTD1ILmluZGV4T2YoZC5OQU1FU1BBQ0VfREVMSU0sTCsxKTtLJiYoSz1LW0hdKSYmTS5wdXNoKEspO00ucHVzaChIKTtyZXR1cm4gTX1kLk5BTUVTUEFDRV9ERUxJTT0iLyI7ZC5ST09UX05BTUU9Il9fcm9vdF9fIjtkLkZVTkNUSU9OX0xJQlJBUllfTk9ERV9QUkVGSVg9CiJfX2Z1bmN0aW9uX2xpYnJhcnlfXyI7ZC5MQVJHRV9BVFRSU19LRVk9Il90b29fbGFyZ2VfYXR0cnMiO2QuTElNSVRfQVRUUl9TSVpFPTEwMjQ7ZC5FREdFX0tFWV9ERUxJTT0iLS0iO2xldCBBOyhmdW5jdGlvbihIKXtIW0guRlVMTD0wXT0iRlVMTCI7SFtILkVNQkVEREVEPTFdPSJFTUJFRERFRCI7SFtILk1FVEE9Ml09Ik1FVEEiO0hbSC5TRVJJRVM9M109IlNFUklFUyI7SFtILkNPUkU9NF09IkNPUkUiO0hbSC5TSEFET1c9NV09IlNIQURPVyI7SFtILkJSSURHRT02XT0iQlJJREdFIjtIW0guRURHRT03XT0iRURHRSJ9KShBPWQuR3JhcGhUeXBlfHwoZC5HcmFwaFR5cGU9e30pKTtsZXQgeTsoZnVuY3Rpb24oSCl7SFtILk1FVEE9MF09Ik1FVEEiO0hbSC5PUD0xXT0iT1AiO0hbSC5TRVJJRVM9Ml09IlNFUklFUyI7SFtILkJSSURHRT0zXT0iQlJJREdFIjtIW0guRUxMSVBTSVM9NF09IkVMTElQU0lTIn0pKHk9ZC5Ob2RlVHlwZXx8KGQuTm9kZVR5cGU9e30pKTtsZXQgdzsoZnVuY3Rpb24oSCl7SFtILklOQ0xVREU9CjBdPSJJTkNMVURFIjtIW0guRVhDTFVERT0xXT0iRVhDTFVERSI7SFtILlVOU1BFQ0lGSUVEPTJdPSJVTlNQRUNJRklFRCJ9KSh3PWQuSW5jbHVzaW9uVHlwZXx8KGQuSW5jbHVzaW9uVHlwZT17fSkpOyhmdW5jdGlvbihIKXtIW0guR1JPVVA9MF09IkdST1VQIjtIW0guVU5HUk9VUD0xXT0iVU5HUk9VUCJ9KShkLlNlcmllc0dyb3VwaW5nVHlwZXx8KGQuU2VyaWVzR3JvdXBpbmdUeXBlPXt9KSk7Y2xhc3MgQ3tjb25zdHJ1Y3Rvcigpe3RoaXMubm9kZXM9e307dGhpcy5lZGdlcz1bXX19ZC5TbGltR3JhcGg9QztjbGFzcyBGe2NvbnN0cnVjdG9yKEgpe3RoaXMudHlwZT15LkVMTElQU0lTO3RoaXMuaXNHcm91cE5vZGU9ITE7dGhpcy5jYXJkaW5hbGl0eT0xO3RoaXMuc3RhdHM9dGhpcy5wYXJlbnROb2RlPW51bGw7dGhpcy5zZXROdW1Nb3JlTm9kZXMoSCk7dGhpcy5pbmNsdWRlPXcuVU5TUEVDSUZJRUR9c2V0TnVtTW9yZU5vZGVzKEgpe3RoaXMubnVtTW9yZU5vZGVzPUg7dGhpcy5uYW1lPQoiLi4uICIrSCsiIG1vcmUifX1kLkVsbGlwc2lzTm9kZUltcGw9RjtjbGFzcyBEe2NvbnN0cnVjdG9yKEgpe3RoaXMub3A9SC5vcDt0aGlzLm5hbWU9SC5uYW1lO3RoaXMuZGV2aWNlPUguZGV2aWNlO3RoaXMuYXR0cj1ILmF0dHI7dGhpcy5pbnB1dHM9dChILmlucHV0KTt0aGlzLm91dHB1dFNoYXBlcz1oKEguYXR0cik7dGhpcy54bGFDbHVzdGVyPWsoSC5hdHRyKTt0aGlzLmNvbXBhdGlibGU9ITE7dGhpcy50eXBlPXkuT1A7dGhpcy5pc0dyb3VwTm9kZT0hMTt0aGlzLmNhcmRpbmFsaXR5PTE7dGhpcy5pbkVtYmVkZGluZ3M9W107dGhpcy5vdXRFbWJlZGRpbmdzPVtdO3RoaXMucGFyZW50Tm9kZT1udWxsO3RoaXMuaW5jbHVkZT13LlVOU1BFQ0lGSUVEO3RoaXMub3duaW5nU2VyaWVzPW51bGx9fWQuT3BOb2RlSW1wbD1EO2QuY3JlYXRlTWV0YW5vZGU9ZnVuY3Rpb24oSCxLPXt9KXtyZXR1cm4gbmV3IEkoSCxLKX07ZC5qb2luU3RhdHNJbmZvV2l0aEdyYXBoPWZ1bmN0aW9uKEgsSywKTSl7Xy5lYWNoKEgubm9kZXMsTD0+e0wuc3RhdHM9bnVsbH0pO18uZWFjaChLLmRldl9zdGF0cyxMPT57TSYmIU1bTC5kZXZpY2VdfHxfLmVhY2goTC5ub2RlX3N0YXRzLFE9PntsZXQgVD1RLm5vZGVfbmFtZSBpbiBILm5vZGVzP1Eubm9kZV9uYW1lOm4oUS5ub2RlX25hbWUpO2lmKFQgaW4gSC5ub2Rlcyl7dmFyIFg9MDtRLm1lbW9yeSYmXy5lYWNoKFEubWVtb3J5LGxhPT57bGEudG90YWxfYnl0ZXMmJigwPGxhLnRvdGFsX2J5dGVzP1grPU51bWJlcihsYS50b3RhbF9ieXRlcyk6Y29uc29sZS5sb2coImlnbm9yaW5nIG5lZ2F0aXZlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciAiK1QpKX0pO3ZhciBhYT1udWxsO1Eub3V0cHV0JiYoYWE9Xy5tYXAoUS5vdXRwdXQsbGE9Pl8ubWFwKGxhLnRlbnNvcl9kZXNjcmlwdGlvbi5zaGFwZS5kaW0sWj0+TnVtYmVyKFouc2l6ZSkpKSk7SC5ub2Rlc1tUXS5kZXZpY2U9TC5kZXZpY2U7bnVsbD09SC5ub2Rlc1tUXS5zdGF0cyYmKEgubm9kZXNbVF0uc3RhdHM9Cm5ldyBCKGFhKSk7SC5ub2Rlc1tUXS5zdGF0cy5hZGRCeXRlc0FsbG9jYXRpb24oWCk7US5hbGxfZW5kX3JlbF9taWNyb3MmJigwPFEuYWxsX2VuZF9yZWxfbWljcm9zP0gubm9kZXNbVF0uc3RhdHMuYWRkRXhlY3V0aW9uVGltZShRLmFsbF9zdGFydF9taWNyb3MsUS5hbGxfc3RhcnRfbWljcm9zK1EuYWxsX2VuZF9yZWxfbWljcm9zKTpjb25zb2xlLmxvZygiaWdub3JpbmcgbmVnYXRpdmUgcnVudGltZSBmb3IgIitUKSl9fSl9KX07Y2xhc3MgQntjb25zdHJ1Y3RvcihIKXt0aGlzLnRvdGFsQnl0ZXM9MDt0aGlzLm91dHB1dFNpemU9SH1hZGRFeGVjdXRpb25UaW1lKEgsSyl7dGhpcy5zdGFydFRpbWU9bnVsbCE9dGhpcy5zdGFydFRpbWU/TWF0aC5taW4odGhpcy5zdGFydFRpbWUsSCk6SDt0aGlzLmVuZFRpbWU9bnVsbCE9dGhpcy5lbmRUaW1lP01hdGgubWF4KHRoaXMuZW5kVGltZSxLKTpLfWFkZEJ5dGVzQWxsb2NhdGlvbihIKXt0aGlzLnRvdGFsQnl0ZXM9bnVsbCE9dGhpcy50b3RhbEJ5dGVzPwpNYXRoLm1heCh0aGlzLnRvdGFsQnl0ZXMsSCk6SH1jb21iaW5lKEgpe251bGwhPUgudG90YWxCeXRlcyYmKHRoaXMudG90YWxCeXRlcys9SC50b3RhbEJ5dGVzKTtudWxsIT1ILmdldFRvdGFsTWljcm9zKCkmJnRoaXMuYWRkRXhlY3V0aW9uVGltZShILnN0YXJ0VGltZSxILmVuZFRpbWUpfWdldFRvdGFsTWljcm9zKCl7cmV0dXJuIG51bGw9PXRoaXMuc3RhcnRUaW1lfHxudWxsPT10aGlzLmVuZFRpbWU/bnVsbDp0aGlzLmVuZFRpbWUtdGhpcy5zdGFydFRpbWV9fWQuTm9kZVN0YXRzPUI7Y2xhc3MgSXtjb25zdHJ1Y3RvcihILEs9e30pe3RoaXMubmFtZT1IO3RoaXMudHlwZT15Lk1FVEE7dGhpcy5kZXB0aD0xO3RoaXMuaXNHcm91cE5vZGU9ITA7dGhpcy5jYXJkaW5hbGl0eT0wO3RoaXMubWV0YWdyYXBoPXAoSCxBLk1FVEEsSyk7dGhpcy5icmlkZ2VncmFwaD1udWxsO3RoaXMub3BIaXN0b2dyYW09e307dGhpcy5kZXZpY2VIaXN0b2dyYW09e307dGhpcy54bGFDbHVzdGVySGlzdG9ncmFtPQp7fTt0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH07dGhpcy5wYXJlbnROb2RlPXRoaXMudGVtcGxhdGVJZD1udWxsO3RoaXMuaGFzTm9uQ29udHJvbEVkZ2VzPSExO3RoaXMuaW5jbHVkZT13LlVOU1BFQ0lGSUVEO3RoaXMuYXNzb2NpYXRlZEZ1bmN0aW9uPSIifWdldEZpcnN0Q2hpbGQoKXtyZXR1cm4gdGhpcy5tZXRhZ3JhcGgubm9kZSh0aGlzLm1ldGFncmFwaC5ub2RlcygpWzBdKX1nZXRSb290T3AoKXtsZXQgSD10aGlzLm5hbWUuc3BsaXQoIi8iKTtyZXR1cm4gdGhpcy5tZXRhZ3JhcGgubm9kZSh0aGlzLm5hbWUrIi8oIitIW0gubGVuZ3RoLTFdKyIpIil9bGVhdmVzKCl7bGV0IEg9W10sSz1bdGhpc10sTTtmb3IoO0subGVuZ3RoOyl7bGV0IEw9Sy5zaGlmdCgpO0wuaXNHcm91cE5vZGU/KE09TC5tZXRhZ3JhcGgsXy5lYWNoKE0ubm9kZXMoKSxRPT5LLnB1c2goTS5ub2RlKFEpKSkpOkgucHVzaChMLm5hbWUpfXJldHVybiBIfX0KZC5NZXRhbm9kZUltcGw9STtkLmNyZWF0ZU1ldGFlZGdlPWZ1bmN0aW9uKEgsSyl7cmV0dXJuIG5ldyBOKEgsSyl9O2NsYXNzIE57Y29uc3RydWN0b3IoSCxLKXt0aGlzLnY9SDt0aGlzLnc9Szt0aGlzLmJhc2VFZGdlTGlzdD1bXTt0aGlzLmluYm91bmQ9bnVsbDt0aGlzLnRvdGFsU2l6ZT10aGlzLm51bVJlZkVkZ2VzPXRoaXMubnVtQ29udHJvbEVkZ2VzPXRoaXMubnVtUmVndWxhckVkZ2VzPTB9YWRkQmFzZUVkZ2UoSCxLKXt0aGlzLmJhc2VFZGdlTGlzdC5wdXNoKEgpO0guaXNDb250cm9sRGVwZW5kZW5jeT90aGlzLm51bUNvbnRyb2xFZGdlcys9MTp0aGlzLm51bVJlZ3VsYXJFZGdlcys9MTtILmlzUmVmZXJlbmNlRWRnZSYmKHRoaXMubnVtUmVmRWRnZXMrPTEpO3RoaXMudG90YWxTaXplKz1OLmNvbXB1dGVTaXplT2ZFZGdlKEgsSyk7Sy5tYXhNZXRhRWRnZVNpemU9TWF0aC5tYXgoSy5tYXhNZXRhRWRnZVNpemUsdGhpcy50b3RhbFNpemUpfXN0YXRpYyBjb21wdXRlU2l6ZU9mRWRnZShILApLKXtsZXQgTT1LLm5vZGUoSC52KTtpZighTS5vdXRwdXRTaGFwZXMpcmV0dXJuIDE7Sy5oYXNTaGFwZUluZm89ITA7SD1PYmplY3Qua2V5cyhNLm91dHB1dFNoYXBlcykubWFwKEw9Pk0ub3V0cHV0U2hhcGVzW0xdKS5tYXAoTD0+bnVsbD09TD8xOkwucmVkdWNlKChRLFQpPT57LTE9PT1UJiYoVD0xKTtyZXR1cm4gUSpUfSwxKSk7cmV0dXJuIF8uc3VtKEgpfX1kLk1ldGFlZGdlSW1wbD1OO2QuY3JlYXRlU2VyaWVzTm9kZT1mdW5jdGlvbihILEssTSxMLFEsVCl7cmV0dXJuIG5ldyBPKEgsSyxNLEwsUSxUKX07ZC5nZXRTZXJpZXNOb2RlTmFtZT1mO2NsYXNzIE97Y29uc3RydWN0b3IoSCxLLE0sTCxRLFQpe3RoaXMubmFtZT1RfHxmKEgsSyxNKTt0aGlzLnR5cGU9eS5TRVJJRVM7dGhpcy5oYXNMb29wPSExO3RoaXMucHJlZml4PUg7dGhpcy5zdWZmaXg9Szt0aGlzLmNsdXN0ZXJJZD1MO3RoaXMuaWRzPVtdO3RoaXMucGFyZW50PU07dGhpcy5pc0dyb3VwTm9kZT0hMDt0aGlzLmNhcmRpbmFsaXR5PQowO3RoaXMubWV0YWdyYXBoPXAoUSxBLlNFUklFUyxUKTt0aGlzLnBhcmVudE5vZGU9dGhpcy5icmlkZ2VncmFwaD1udWxsO3RoaXMuZGV2aWNlSGlzdG9ncmFtPXt9O3RoaXMueGxhQ2x1c3Rlckhpc3RvZ3JhbT17fTt0aGlzLmNvbXBhdGliaWxpdHlIaXN0b2dyYW09e2NvbXBhdGlibGU6MCxpbmNvbXBhdGlibGU6MH07dGhpcy5oYXNOb25Db250cm9sRWRnZXM9ITE7dGhpcy5pbmNsdWRlPXcuVU5TUEVDSUZJRUR9fWQuRGVmYXVsdEJ1aWxkUGFyYW1zPXtlbmFibGVFbWJlZGRpbmc6ITAsaW5FbWJlZGRpbmdUeXBlczpbIkNvbnN0Il0sb3V0RW1iZWRkaW5nVHlwZXM6WyJeW2EtekEtWl0rU3VtbWFyeSQiXSxyZWZFZGdlczp7IkFzc2lnbiAwIjohMCwiQXNzaWduQWRkIDAiOiEwLCJBc3NpZ25TdWIgMCI6ITAsImFzc2lnbiAwIjohMCwiYXNzaWduX2FkZCAwIjohMCwiYXNzaWduX3N1YiAwIjohMCwiY291bnRfdXBfdG8gMCI6ITAsIlNjYXR0ZXJBZGQgMCI6ITAsIlNjYXR0ZXJTdWIgMCI6ITAsCiJTY2F0dGVyVXBkYXRlIDAiOiEwLCJzY2F0dGVyX2FkZCAwIjohMCwic2NhdHRlcl9zdWIgMCI6ITAsInNjYXR0ZXJfdXBkYXRlIDAiOiEwfX07ZC5idWlsZD1mdW5jdGlvbihILEssTSl7bGV0IEw9e30sUT17fSxUPXt9LFg9bShLLmluRW1iZWRkaW5nVHlwZXMpLGFhPW0oSy5vdXRFbWJlZGRpbmdUeXBlcyksbGE9W10sWj1ILm5vZGUsYmE9QXJyYXkoWi5sZW5ndGgpO3JldHVybiBiLmdyYXBoLnV0aWwucnVuQXN5bmNUYXNrKCJOb3JtYWxpemluZyBuYW1lcyIsMzAsKCk9PntsZXQgZWE9QXJyYXkoWi5sZW5ndGgpLGNhPTA7Y29uc3Qga2E9RWE9PntsZXQgdmE9bmV3IEQoRWEpO2lmKFgodmEpKXJldHVybiBsYS5wdXNoKHZhLm5hbWUpLExbdmEubmFtZV09dmE7aWYoYWEodmEpKXJldHVybiBsYS5wdXNoKHZhLm5hbWUpLFFbdmEubmFtZV09dmEsXy5lYWNoKHZhLmlucHV0cyx4YT0+e3hhPXhhLm5hbWU7VFt4YV09VFt4YV18fFtdO1RbeGFdLnB1c2godmEpfSksdmE7ZWFbY2FdPQp2YTtiYVtjYV09dmEubmFtZTtjYSsrO3JldHVybiB2YX07Xy5lYWNoKFosa2EpO2NvbnN0IFk9RWE9Pntjb25zdCB2YT1kLkZVTkNUSU9OX0xJQlJBUllfTk9ERV9QUkVGSVgrRWEuc2lnbmF0dXJlLm5hbWU7a2Eoe25hbWU6dmEsaW5wdXQ6W10sZGV2aWNlOiIiLG9wOiIiLGF0dHI6W119KTtpZihFYS5zaWduYXR1cmUuaW5wdXRfYXJnKXtsZXQgeWE9MDt2YXIgeGE9U2E9PntrYSh7bmFtZTp2YStkLk5BTUVTUEFDRV9ERUxJTStTYS5uYW1lLGlucHV0OltdLGRldmljZToiIixvcDoiaW5wdXRfYXJnIixhdHRyOlt7a2V5OiJUIix2YWx1ZTp7dHlwZTpTYS50eXBlfX1dfSkuZnVuY3Rpb25JbnB1dEluZGV4PXlhO3lhKyt9O0VhLnNpZ25hdHVyZS5pbnB1dF9hcmcubmFtZT94YShFYS5zaWduYXR1cmUuaW5wdXRfYXJnKTpfLmVhY2goRWEuc2lnbmF0dXJlLmlucHV0X2FyZyx4YSl9bGV0IEFhPTA7Y29uc3QgRmE9e307RWEuc2lnbmF0dXJlLm91dHB1dF9hcmcmJih4YT15YT0+e0ZhW3ZhKwpkLk5BTUVTUEFDRV9ERUxJTSt5YS5uYW1lXT1BYTtBYSsrfSxFYS5zaWduYXR1cmUub3V0cHV0X2FyZy5uYW1lP3hhKEVhLnNpZ25hdHVyZS5vdXRwdXRfYXJnKTpfLmVhY2goRWEuc2lnbmF0dXJlLm91dHB1dF9hcmcseGEpKTtfLmVhY2goRWEubm9kZV9kZWYseWE9Pnt5YS5uYW1lPXZhKyIvIit5YS5uYW1lOyJzdHJpbmciPT09dHlwZW9mIHlhLmlucHV0JiYoeWEuaW5wdXQ9W3lhLmlucHV0XSk7Y29uc3QgU2E9a2EoeWEpO18uaXNOdW1iZXIoRmFbeWEubmFtZV0pJiYoU2EuZnVuY3Rpb25PdXRwdXRJbmRleD1GYVt5YS5uYW1lXSk7Xy5lYWNoKFNhLmlucHV0cyxYYT0+e1hhLm5hbWU9dmErZC5OQU1FU1BBQ0VfREVMSU0rWGEubmFtZX0pfSl9O0gubGlicmFyeSYmSC5saWJyYXJ5LmZ1bmN0aW9uJiZfLmVhY2goSC5saWJyYXJ5LmZ1bmN0aW9uLFkpO2VhLnNwbGljZShjYSk7YmEuc3BsaWNlKGNhKTtyZXR1cm4gZWF9LE0pLnRoZW4oZWE9PmIuZ3JhcGgudXRpbC5ydW5Bc3luY1Rhc2soIkJ1aWxkaW5nIHRoZSBkYXRhIHN0cnVjdHVyZSIsCjcwLCgpPT57bGV0IGNhPXEoYmEsbGEpLGthPW5ldyBDO18uZWFjaChlYSxZPT57bGV0IEVhPWNhW1kubmFtZV18fFkubmFtZTtrYS5ub2Rlc1tFYV09WTtZLm5hbWUgaW4gVCYmKFkub3V0RW1iZWRkaW5ncz1UW1kubmFtZV0sXy5lYWNoKFkub3V0RW1iZWRkaW5ncyx2YT0+e3ZhLm5hbWU9Y2FbdmEubmFtZV18fHZhLm5hbWV9KSk7WS5uYW1lPUVhfSk7Xy5lYWNoKGVhLFk9PntfLmVhY2goWS5pbnB1dHMsKEVhLHZhKT0+e2xldCB4YT1FYS5uYW1lO2lmKHhhIGluIEwpe0VhPUxbeGFdO1kuaW5FbWJlZGRpbmdzLnB1c2goRWEpO2Zvcih2YXIgQWEgb2YgRWEuaW5wdXRzKWwoa2EsY2FbQWEubmFtZV18fEFhLm5hbWUsWSxBYSxLLHZhKX1lbHNlIGlmKHhhIGluIFEpe0FhPVFbeGFdO2ZvcihsZXQgRmEgb2YgQWEuaW5wdXRzKWwoa2EsY2FbRmEubmFtZV18fEZhLm5hbWUsWSxFYSxLLHZhKX1lbHNlIGwoa2EsY2FbeGFdfHx4YSxZLEVhLEssdmEpfSl9KTtfLmVhY2goTCxZPT57WS5uYW1lPQpjYVtZLm5hbWVdfHxZLm5hbWV9KTtyZXR1cm4ga2F9LE0pKX07ZC5jcmVhdGVHcmFwaD1wO2QuZ2V0U3RyaWN0TmFtZT1uO2QuaGFzU2ltaWxhckRlZ3JlZVNlcXVlbmNlPWZ1bmN0aW9uKEgsSyl7SD11KEgpO0s9dShLKTtmb3IobGV0IE09MDtNPEgubGVuZ3RoO00rKylpZihIW01dIT09S1tNXSlyZXR1cm4hMTtyZXR1cm4hMH07ZC5nZXRIaWVyYXJjaGljYWxQYXRoPXg7ZC5nZXRJbmNsdWRlTm9kZUJ1dHRvblN0cmluZz1mdW5jdGlvbihIKXtyZXR1cm4gSD09PWIuZ3JhcGguSW5jbHVzaW9uVHlwZS5FWENMVURFPyJBZGQgdG8gbWFpbiBncmFwaCI6IlJlbW92ZSBmcm9tIG1haW4gZ3JhcGgifTtkLmdldEdyb3VwU2VyaWVzTm9kZUJ1dHRvblN0cmluZz1mdW5jdGlvbihIKXtyZXR1cm4gSD09PWIuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLkdST1VQPyJVbmdyb3VwIHRoaXMgc2VyaWVzIG9mIG5vZGVzIjoiR3JvdXAgdGhpcyBzZXJpZXMgb2Ygbm9kZXMifTtkLnRvZ2dsZU5vZGVTZXJpZXNHcm91cD0KZnVuY3Rpb24oSCxLKXtIW0tdPUsgaW4gSCYmSFtLXSE9PWIuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLkdST1VQP2IuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLkdST1VQOmIuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLlVOR1JPVVB9fSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vaGllcmFyY2h5LmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgoeCxBLHksdyl7QT15P3guaW5FZGdlcyhBLm5hbWUpOngub3V0RWRnZXMoQS5uYW1lKTtfLmVhY2goQSxDPT57Qz14LmVkZ2UoQyk7KEMubnVtUmVndWxhckVkZ2VzP3cucmVndWxhcjp3LmNvbnRyb2wpLnB1c2goQyl9KX1mdW5jdGlvbiBrKHgsQSl7Y29uc3QgeT17fTtfLmVhY2goQS5ub2Rlcyx3PT57bGV0IEM9ZC5nZXRIaWVyYXJjaGljYWxQYXRoKHcubmFtZSksRj14LnJvb3Q7Ri5kZXB0aD1NYXRoLm1heChDLmxlbmd0aCxGLmRlcHRoKTt5W3cub3BdfHwoeVt3Lm9wXT1bXSk7eVt3Lm9wXS5wdXNoKHcpO2ZvcihsZXQgQj0wO0I8Qy5sZW5ndGg7QisrKXtGLmRlcHRoPU1hdGgubWF4KEYuZGVwdGgsQy5sZW5ndGgtQik7Ri5jYXJkaW5hbGl0eSs9dy5jYXJkaW5hbGl0eTtGLm9wSGlzdG9ncmFtW3cub3BdPShGLm9wSGlzdG9ncmFtW3cub3BdfHwwKSsxO251bGwhPXcuZGV2aWNlJiYoRi5kZXZpY2VIaXN0b2dyYW1bdy5kZXZpY2VdPQooRi5kZXZpY2VIaXN0b2dyYW1bdy5kZXZpY2VdfHwwKSsxKTtudWxsIT13LnhsYUNsdXN0ZXImJihGLnhsYUNsdXN0ZXJIaXN0b2dyYW1bdy54bGFDbHVzdGVyXT0oRi54bGFDbHVzdGVySGlzdG9ncmFtW3cueGxhQ2x1c3Rlcl18fDApKzEpO3cuY29tcGF0aWJsZT9GLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oRi5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6Ri5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oRi5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMTtfLmVhY2gody5pbkVtYmVkZGluZ3MsTj0+e04uY29tcGF0aWJsZT9GLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZT0oRi5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGV8fDApKzE6Ri5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZT0oRi5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8CjApKzF9KTtfLmVhY2gody5vdXRFbWJlZGRpbmdzLE49PntOLmNvbXBhdGlibGU/Ri5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU9KEYuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlfHwwKSsxOkYuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGU9KEYuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5pbmNvbXBhdGlibGV8fDApKzF9KTtpZihCPT09Qy5sZW5ndGgtMSlicmVhazt2YXIgRD1DW0JdO2xldCBJPXgubm9kZShEKTtJfHwoST1kLmNyZWF0ZU1ldGFub2RlKEQseC5ncmFwaE9wdGlvbnMpLEkucGFyZW50Tm9kZT1GLHguc2V0Tm9kZShELEkpLEYubWV0YWdyYXBoLnNldE5vZGUoRCxJKSwwPT09RC5pbmRleE9mKGIuZ3JhcGguRlVOQ1RJT05fTElCUkFSWV9OT0RFX1BSRUZJWCkmJkYubmFtZT09PWIuZ3JhcGguUk9PVF9OQU1FJiYoRD1ELnN1YnN0cmluZyhiLmdyYXBoLkZVTkNUSU9OX0xJQlJBUllfTk9ERV9QUkVGSVgubGVuZ3RoKSx5W0RdfHwKKHlbRF09W10pLHgubGlicmFyeUZ1bmN0aW9uc1tEXT17bm9kZTpJLHVzYWdlczp5W0RdfSxJLmFzc29jaWF0ZWRGdW5jdGlvbj1EKSk7Rj1JfXguc2V0Tm9kZSh3Lm5hbWUsdyk7dy5wYXJlbnROb2RlPUY7Ri5tZXRhZ3JhcGguc2V0Tm9kZSh3Lm5hbWUsdyk7Xy5lYWNoKHcuaW5FbWJlZGRpbmdzLGZ1bmN0aW9uKEIpe3guc2V0Tm9kZShCLm5hbWUsQik7Qi5wYXJlbnROb2RlPXd9KTtfLmVhY2gody5vdXRFbWJlZGRpbmdzLGZ1bmN0aW9uKEIpe3guc2V0Tm9kZShCLm5hbWUsQik7Qi5wYXJlbnROb2RlPXd9KX0pfWZ1bmN0aW9uIHQoeCxBKXtsZXQgeT14LmdldE5vZGVNYXAoKSx3PVtdLEM9W10sRj0oRCxCKT0+e2xldCBJPTA7Zm9yKDtEOylCW0krK109RC5uYW1lLEQ9RC5wYXJlbnROb2RlO3JldHVybiBJLTF9O18uZWFjaChBLmVkZ2VzLEQ9Pnt2YXIgQj1GKEEubm9kZXNbRC52XSx3KSxJPUYoQS5ub2Rlc1tELnddLEMpO2lmKC0xIT09QiYmLTEhPT1JKXtmb3IoO3dbQl09PT1DW0ldOylpZihCLS0sCkktLSwwPkJ8fDA+SSl0aHJvdyBFcnJvcigiTm8gZGlmZmVyZW5jZSBmb3VuZCBiZXR3ZWVuIGFuY2VzdG9yIHBhdGhzLiIpO3ZhciBOPXlbd1tCKzFdXTtCPXdbQl07ST1DW0ldO3ZhciBPPU4ubWV0YWdyYXBoLmVkZ2UoQixJKTtPfHwoTz1kLmNyZWF0ZU1ldGFlZGdlKEIsSSksTi5tZXRhZ3JhcGguc2V0RWRnZShCLEksTykpO04uaGFzTm9uQ29udHJvbEVkZ2VzfHxELmlzQ29udHJvbERlcGVuZGVuY3l8fChOLmhhc05vbkNvbnRyb2xFZGdlcz0hMCk7Ty5hZGRCYXNlRWRnZShELHgpfX0pfWZ1bmN0aW9uIGwoeCxBLHksdyxDLEYpe2xldCBEPXgubWV0YWdyYXBoO18uZWFjaChELm5vZGVzKCksQj0+e0I9RC5ub2RlKEIpO0IudHlwZT09PWIuZ3JhcGguTm9kZVR5cGUuTUVUQSYmbChCLEEseSx3LEMsRil9KTt4PXAoRCk7eD0oRj9uOm0pKHgsRCxBLmdyYXBoT3B0aW9ucyk7Xy5lYWNoKHgsZnVuY3Rpb24oQixJKXtsZXQgTj1CLm1ldGFncmFwaC5ub2RlcygpO18uZWFjaChOLE89Pgp7Tz1ELm5vZGUoTyk7Ty5vd25pbmdTZXJpZXN8fChPLm93bmluZ1Nlcmllcz1JKX0pO04ubGVuZ3RoPHcmJiEoQi5uYW1lIGluIEMpJiYoQ1tCLm5hbWVdPWIuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLlVOR1JPVVApO0IubmFtZSBpbiBDJiZDW0IubmFtZV09PT1iLmdyYXBoLlNlcmllc0dyb3VwaW5nVHlwZS5VTkdST1VQfHwoQS5zZXROb2RlKEksQiksRC5zZXROb2RlKEksQiksXy5lYWNoKE4sTz0+e2xldCBIPUQubm9kZShPKTtCLm1ldGFncmFwaC5zZXROb2RlKE8sSCk7Qi5wYXJlbnROb2RlPUgucGFyZW50Tm9kZTtCLmNhcmRpbmFsaXR5Kys7bnVsbCE9SC5kZXZpY2UmJihCLmRldmljZUhpc3RvZ3JhbVtILmRldmljZV09KEIuZGV2aWNlSGlzdG9ncmFtW0guZGV2aWNlXXx8MCkrMSk7bnVsbCE9SC54bGFDbHVzdGVyJiYoQi54bGFDbHVzdGVySGlzdG9ncmFtW0gueGxhQ2x1c3Rlcl09KEIueGxhQ2x1c3Rlckhpc3RvZ3JhbVtILnhsYUNsdXN0ZXJdfHwwKSsxKTtILmNvbXBhdGlibGU/CkIuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxO18uZWFjaChILmluRW1iZWRkaW5ncyxLPT57Sy5jb21wYXRpYmxlP0IuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPShCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlfHwwKSsxfSk7Xy5lYWNoKEgub3V0RW1iZWRkaW5ncyxLPT57Sy5jb21wYXRpYmxlP0IuY29tcGF0aWJpbGl0eUhpc3RvZ3JhbS5jb21wYXRpYmxlPShCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uY29tcGF0aWJsZXx8MCkrMTpCLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlPQooQi5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmluY29tcGF0aWJsZXx8MCkrMX0pO0gucGFyZW50Tm9kZT1CO3lbT109STtELnJlbW92ZU5vZGUoTyl9KSl9KX1mdW5jdGlvbiBwKHgpe3JldHVybiBfLnJlZHVjZSh4Lm5vZGVzKCksKEEseSk9Pnt5PXgubm9kZSh5KTtpZih5LnR5cGU9PT1kLk5vZGVUeXBlLk1FVEEpcmV0dXJuIEE7bGV0IHc9eS5vcDt3JiYoQVt3XT1BW3ddfHxbXSxBW3ddLnB1c2goeS5uYW1lKSk7cmV0dXJuIEF9LHt9KX1mdW5jdGlvbiBtKHgsQSx5KXtsZXQgdz17fTtfLmVhY2goeCxmdW5jdGlvbihDLEYpe2lmKCEoMT49Qy5sZW5ndGgpKXt2YXIgRD17fTtfLmVhY2goQyxmdW5jdGlvbihCKXt2YXIgST0iKiI9PT1CLmNoYXJBdChCLmxlbmd0aC0xKSxOPUIuc3BsaXQoIi8iKSxPPU5bTi5sZW5ndGgtMV07Tj1OLnNsaWNlKDAsTi5sZW5ndGgtMSkuam9pbigiLyIpO3ZhciBIPU8ubWF0Y2goL14oXEQqKV8oXGQrKSQvKTtsZXQgSz0iIjtIPyhPPUhbMV0sSD1IWzJdKToKKE89ST9PLnN1YnN0cigwLE8ubGVuZ3RoLTEpOk8sSD0wLEs9ST8iKiI6IiIpO0k9ZC5nZXRTZXJpZXNOb2RlTmFtZShPLEssTik7RFtJXT1EW0ldfHxbXTtCPWQuY3JlYXRlU2VyaWVzTm9kZShPLEssTiwrSCxCLHkpO0RbSV0ucHVzaChCKX0pO18uZWFjaChELGZ1bmN0aW9uKEIpe2lmKCEoMj5CLmxlbmd0aCkpe0Iuc29ydChmdW5jdGlvbihOLE8pe3JldHVybitOLmNsdXN0ZXJJZC0rTy5jbHVzdGVySWR9KTt2YXIgST1bQlswXV07Zm9yKGxldCBOPTE7TjxCLmxlbmd0aDtOKyspe2xldCBPPUJbTl07Ty5jbHVzdGVySWQ9PT1JW0kubGVuZ3RoLTFdLmNsdXN0ZXJJZCsxP0kucHVzaChPKToocShJLHcsK0YsQSx5KSxJPVtPXSl9cShJLHcsK0YsQSx5KX19KX19KTtyZXR1cm4gd31mdW5jdGlvbiBuKHgsQSx5KXtsZXQgdz17fTtfLmVhY2goeCxmdW5jdGlvbihDLEYpe2lmKCEoMT49Qy5sZW5ndGgpKXt2YXIgRD17fSxCPXt9O18uZWFjaChDLGZ1bmN0aW9uKE4pe2xldCBPPSIqIj09PQpOLmNoYXJBdChOLmxlbmd0aC0xKTt2YXIgSD1OLnNwbGl0KCIvIik7bGV0IEs9SFtILmxlbmd0aC0xXTtIPUguc2xpY2UoMCxILmxlbmd0aC0xKS5qb2luKCIvIik7Y29uc3QgTT0vKFxkKykvZzt2YXIgTDtsZXQgUSxULFgsYWE9MDtmb3IoO0w9TS5leGVjKEspOykrK2FhLFE9Sy5zbGljZSgwLEwuaW5kZXgpLFQ9TFswXSxMPUsuc2xpY2UoTC5pbmRleCtMWzBdLmxlbmd0aCksWD1kLmdldFNlcmllc05vZGVOYW1lKFEsTCxIKSxEW1hdPURbWF0sRFtYXXx8KERbWF09ZC5jcmVhdGVTZXJpZXNOb2RlKFEsTCxILCtULE4seSkpLERbWF0uaWRzLnB1c2goVCksQltOXT1CW05dfHxbXSxCW05dLnB1c2goW1gsVF0pOzE+YWEmJihRPU8/Sy5zdWJzdHIoMCxLLmxlbmd0aC0xKTpLLFQ9MCxMPU8/IioiOiIiLFg9ZC5nZXRTZXJpZXNOb2RlTmFtZShRLEwsSCksRFtYXT1EW1hdLERbWF18fChEW1hdPWQuY3JlYXRlU2VyaWVzTm9kZShRLEwsSCwrVCxOLHkpKSxEW1hdLmlkcy5wdXNoKFQpLEJbTl09CkJbTl18fFtdLEJbTl0ucHVzaChbWCxUXSkpfSk7dmFyIEk9e307Xy5lYWNoKEIsZnVuY3Rpb24oTixPKXtOLnNvcnQoZnVuY3Rpb24oTSxMKXtyZXR1cm4gRFtMWzBdXS5pZHMubGVuZ3RoLURbTVswXV0uaWRzLmxlbmd0aH0pO3ZhciBIPU5bMF1bMF07Tj1OWzBdWzFdO0lbSF09SVtIXXx8W107Y29uc3QgSz1PLnNwbGl0KCIvIik7Tz1kLmNyZWF0ZVNlcmllc05vZGUoRFtIXS5wcmVmaXgsRFtIXS5zdWZmaXgsSy5zbGljZSgwLEsubGVuZ3RoLTEpLmpvaW4oIi8iKSwrTixPLHkpO0lbSF0ucHVzaChPKX0pO18uZWFjaChJLGZ1bmN0aW9uKE4pe2lmKCEoMj5OLmxlbmd0aCkpe04uc29ydChmdW5jdGlvbihILEspe3JldHVybitILmNsdXN0ZXJJZC0rSy5jbHVzdGVySWR9KTt2YXIgTz1bTlswXV07Zm9yKGxldCBIPTE7SDxOLmxlbmd0aDtIKyspe2xldCBLPU5bSF07Sy5jbHVzdGVySWQ9PT1PW08ubGVuZ3RoLTFdLmNsdXN0ZXJJZCsxP08ucHVzaChLKToocShPLHcsK0YsQSx5KSxPPQpbS10pfXEoTyx3LCtGLEEseSl9fSl9fSk7cmV0dXJuIHd9ZnVuY3Rpb24gcSh4LEEseSx3LEMpe2lmKDE8eC5sZW5ndGgpe2xldCBGPWQuZ2V0U2VyaWVzTm9kZU5hbWUoeFswXS5wcmVmaXgseFswXS5zdWZmaXgseFswXS5wYXJlbnQseFswXS5jbHVzdGVySWQseFt4Lmxlbmd0aC0xXS5jbHVzdGVySWQpLEQ9ZC5jcmVhdGVTZXJpZXNOb2RlKHhbMF0ucHJlZml4LHhbMF0uc3VmZml4LHhbMF0ucGFyZW50LHksRixDKTtfLmVhY2goeCxmdW5jdGlvbihCKXtELmlkcy5wdXNoKEIuY2x1c3RlcklkKTtELm1ldGFncmFwaC5zZXROb2RlKEIubmFtZSx3Lm5vZGUoQi5uYW1lKSl9KTtBW0ZdPUR9fWNsYXNzIHV7Y29uc3RydWN0b3IoeCl7dGhpcy5oYXNTaGFwZUluZm89ITE7dGhpcy5tYXhNZXRhRWRnZVNpemU9MTt0aGlzLmdyYXBoT3B0aW9ucz14fHx7fTt0aGlzLmdyYXBoT3B0aW9ucy5jb21wb3VuZD0hMDt0aGlzLnJvb3Q9ZC5jcmVhdGVNZXRhbm9kZShkLlJPT1RfTkFNRSx0aGlzLmdyYXBoT3B0aW9ucyk7CnRoaXMubGlicmFyeUZ1bmN0aW9ucz17fTt0aGlzLnhsYUNsdXN0ZXJzPXRoaXMuZGV2aWNlcz10aGlzLnRlbXBsYXRlcz1udWxsO3RoaXMuaW5kZXg9e307dGhpcy5pbmRleFtkLlJPT1RfTkFNRV09dGhpcy5yb290O3RoaXMub3JkZXJpbmdzPXt9fWdldE5vZGVNYXAoKXtyZXR1cm4gdGhpcy5pbmRleH1ub2RlKHgpe3JldHVybiB0aGlzLmluZGV4W3hdfXNldE5vZGUoeCxBKXt0aGlzLmluZGV4W3hdPUF9Z2V0QnJpZGdlZ3JhcGgoeCl7dmFyIEE9dGhpcy5pbmRleFt4XTtpZighQSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSBpbiBoaWVyYXJjaHk6ICIreCk7aWYoISgibWV0YWdyYXBoImluIEEpKXJldHVybiBudWxsO2lmKEEuYnJpZGdlZ3JhcGgpcmV0dXJuIEEuYnJpZGdlZ3JhcGg7bGV0IHk9QS5icmlkZ2VncmFwaD1kLmNyZWF0ZUdyYXBoKCJCUklER0VHUkFQSCIsZC5HcmFwaFR5cGUuQlJJREdFLHRoaXMuZ3JhcGhPcHRpb25zKTtpZighKEEucGFyZW50Tm9kZSYmCiJtZXRhZ3JhcGgiaW4gQS5wYXJlbnROb2RlKSlyZXR1cm4geTt2YXIgdz1BLnBhcmVudE5vZGU7QT13Lm1ldGFncmFwaDt3PXRoaXMuZ2V0QnJpZGdlZ3JhcGgody5uYW1lKTtfLmVhY2goW0Esd10sQz0+e0MuZWRnZXMoKS5maWx0ZXIoRj0+Ri52PT09eHx8Ri53PT09eCkuZm9yRWFjaChGPT57bGV0IEQ9Ri53PT09eCxCPUMuZWRnZShGKTtfLmVhY2goQi5iYXNlRWRnZUxpc3QsST0+e2xldCBbTixPXT1EP1tJLncsRi52XTpbSS52LEYud107dmFyIEg9dGhpcy5nZXRDaGlsZE5hbWUoeCxOKTtIPXt2OkQ/TzpILHc6RD9IOk99O2xldCBLPXkuZWRnZShIKTtLfHwoSz1kLmNyZWF0ZU1ldGFlZGdlKEgudixILncpLEsuaW5ib3VuZD1ELHkuc2V0RWRnZShILnYsSC53LEspKTtLLmFkZEJhc2VFZGdlKEksdGhpcyl9KX0pfSk7cmV0dXJuIHl9Z2V0Q2hpbGROYW1lKHgsQSl7bGV0IHk9dGhpcy5pbmRleFtBXTtmb3IoO3k7KXtpZih5LnBhcmVudE5vZGUmJnkucGFyZW50Tm9kZS5uYW1lPT09CngpcmV0dXJuIHkubmFtZTt5PXkucGFyZW50Tm9kZX10aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgaW1tZWRpYXRlIGNoaWxkIGZvciBkZXNjZW5kYW50OiAiK0EpO31nZXRQcmVkZWNlc3NvcnMoeCl7bGV0IEE9dGhpcy5pbmRleFt4XTtpZighQSl0aHJvdyBFcnJvcigiQ291bGQgbm90IGZpbmQgbm9kZSB3aXRoIG5hbWU6ICIreCk7bGV0IHk9dGhpcy5nZXRPbmVXYXlFZGdlcyhBLCEwKTtBLmlzR3JvdXBOb2RlfHxfLmVhY2goQS5pbkVtYmVkZGluZ3Msdz0+e18uZWFjaChBLmlucHV0cyxDPT57aWYoQy5uYW1lPT09dy5uYW1lKXtsZXQgRj1uZXcgZC5NZXRhZWRnZUltcGwody5uYW1lLHgpO0YuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6Qy5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTpDLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjp3Lm5hbWUsdzp4fSx0aGlzKTt5LnJlZ3VsYXIucHVzaChGKX19KX0pO3JldHVybiB5fWdldFN1Y2Nlc3NvcnMoeCl7bGV0IEE9CnRoaXMuaW5kZXhbeF07aWYoIUEpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3gpO2xldCB5PXRoaXMuZ2V0T25lV2F5RWRnZXMoQSwhMSk7QS5pc0dyb3VwTm9kZXx8Xy5lYWNoKEEub3V0RW1iZWRkaW5ncyx3PT57Xy5lYWNoKHcuaW5wdXRzLEM9PntpZihDLm5hbWU9PT14KXtsZXQgRj1uZXcgZC5NZXRhZWRnZUltcGwoeCx3Lm5hbWUpO0YuYWRkQmFzZUVkZ2Uoe2lzQ29udHJvbERlcGVuZGVuY3k6Qy5pc0NvbnRyb2xEZXBlbmRlbmN5LG91dHB1dFRlbnNvcktleTpDLm91dHB1dFRlbnNvcktleSxpc1JlZmVyZW5jZUVkZ2U6ITEsdjp4LHc6dy5uYW1lfSx0aGlzKTt5LnJlZ3VsYXIucHVzaChGKX19KX0pO3JldHVybiB5fWdldE9uZVdheUVkZ2VzKHgsQSl7bGV0IHk9e2NvbnRyb2w6W10scmVndWxhcjpbXX07aWYoIXgucGFyZW50Tm9kZXx8IXgucGFyZW50Tm9kZS5pc0dyb3VwTm9kZSlyZXR1cm4geTt2YXIgdz14LnBhcmVudE5vZGU7bGV0IEM9CncubWV0YWdyYXBoO3c9dGhpcy5nZXRCcmlkZ2VncmFwaCh3Lm5hbWUpO2goQyx4LEEseSk7aCh3LHgsQSx5KTtyZXR1cm4geX1nZXRUb3BvbG9naWNhbE9yZGVyaW5nKHgpe3ZhciBBPXRoaXMuaW5kZXhbeF07aWYoIUEpdGhyb3cgRXJyb3IoIkNvdWxkIG5vdCBmaW5kIG5vZGUgd2l0aCBuYW1lOiAiK3gpO2lmKCFBLmlzR3JvdXBOb2RlKXJldHVybiBudWxsO2lmKHggaW4gdGhpcy5vcmRlcmluZ3MpcmV0dXJuIHRoaXMub3JkZXJpbmdzW3hdO2xldCB5PXt9LHc9e30sQz1BLm1ldGFncmFwaDtfLmVhY2goQy5lZGdlcygpLEQ9PntDLmVkZ2UoRCkubnVtUmVndWxhckVkZ2VzJiYoRC52IGluIHl8fCh5W0Qudl09W10pLHlbRC52XS5wdXNoKEQudyksd1tELnddPSEwKX0pO2xldCBGPV8uZGlmZmVyZW5jZShfLmtleXMoeSksXy5rZXlzKHcpKTt4PXRoaXMub3JkZXJpbmdzW3hdPXt9O2ZvcihBPTA7Ri5sZW5ndGg7KXtsZXQgRD1GLnNoaWZ0KCk7eFtEXT1BKys7Xy5lYWNoKHlbRF0sQj0+CkYucHVzaChCKSk7ZGVsZXRlIHlbRF19cmV0dXJuIHh9Z2V0VGVtcGxhdGVJbmRleCgpe2xldCB4PWQzLmtleXModGhpcy50ZW1wbGF0ZXMpLEE9ZDMuc2NhbGVPcmRpbmFsKCkuZG9tYWluKHgpLnJhbmdlKGQzLnJhbmdlKDAseC5sZW5ndGgpKTtyZXR1cm4geT0+QSh5KX19Zi5EZWZhdWx0SGllcmFyY2h5UGFyYW1zPXt2ZXJpZnlUZW1wbGF0ZTohMCxzZXJpZXNOb2RlTWluU2l6ZTo1LHNlcmllc01hcDp7fSxyYW5rRGlyZWN0aW9uOiJCVCIsdXNlR2VuZXJhbGl6ZWRTZXJpZXNQYXR0ZXJuczohMX07Zi5idWlsZD1mdW5jdGlvbih4LEEseSl7bGV0IHc9bmV3IHUoe3JhbmtkaXI6QS5yYW5rRGlyZWN0aW9ufSksQz17fTtyZXR1cm4gYi5ncmFwaC51dGlsLnJ1bkFzeW5jVGFzaygiQWRkaW5nIG5vZGVzIiwyMCwoKT0+e2xldCBGPXt9LEQ9e307Xy5lYWNoKHgubm9kZXMsQj0+e0IuZGV2aWNlJiYoRltCLmRldmljZV09ITApO0IueGxhQ2x1c3RlciYmKERbQi54bGFDbHVzdGVyXT0hMCl9KTsKdy5kZXZpY2VzPV8ua2V5cyhGKTt3LnhsYUNsdXN0ZXJzPV8ua2V5cyhEKTtrKHcseCl9LHkpLnRoZW4oKCk9PmIuZ3JhcGgudXRpbC5ydW5Bc3luY1Rhc2soIkRldGVjdCBzZXJpZXMiLDIwLCgpPT57MDxBLnNlcmllc05vZGVNaW5TaXplJiZsKHcucm9vdCx3LEMsQS5zZXJpZXNOb2RlTWluU2l6ZSxBLnNlcmllc01hcCxBLnVzZUdlbmVyYWxpemVkU2VyaWVzUGF0dGVybnMpfSx5KSkudGhlbigoKT0+Yi5ncmFwaC51dGlsLnJ1bkFzeW5jVGFzaygiQWRkaW5nIGVkZ2VzIiwzMCwoKT0+e3Qodyx4LEMpfSx5KSkudGhlbigoKT0+Yi5ncmFwaC51dGlsLnJ1bkFzeW5jVGFzaygiRmluZGluZyBzaW1pbGFyIHN1YmdyYXBocyIsMzAsKCk9Pnt3LnRlbXBsYXRlcz1kLnRlbXBsYXRlLmRldGVjdCh3LEEudmVyaWZ5VGVtcGxhdGUpfSx5KSkudGhlbigoKT0+dyl9O2Yuam9pbkFuZEFnZ3JlZ2F0ZVN0YXRzPWZ1bmN0aW9uKHgpe2xldCBBPXt9LHk9e307Xy5lYWNoKHgucm9vdC5sZWF2ZXMoKSwKdz0+e3c9eC5ub2RlKHcpO251bGwhPXcuZGV2aWNlJiYoQVt3LmRldmljZV09ITApO251bGwhPXcueGxhQ2x1c3RlciYmKHlbdy54bGFDbHVzdGVyXT0hMCl9KTt4LmRldmljZXM9Xy5rZXlzKEEpO3gueGxhQ2x1c3RlcnM9Xy5rZXlzKHkpO18uZWFjaCh4LmdldE5vZGVNYXAoKSx3PT57dy5pc0dyb3VwTm9kZSYmKHcuc3RhdHM9bmV3IGQuTm9kZVN0YXRzKG51bGwpLHcuZGV2aWNlSGlzdG9ncmFtPXt9KX0pO18uZWFjaCh4LnJvb3QubGVhdmVzKCksdz0+e2xldCBDPXc9eC5ub2RlKHcpO2Zvcig7bnVsbCE9Qy5wYXJlbnROb2RlOyl7aWYobnVsbCE9dy5kZXZpY2Upe3ZhciBGPUMucGFyZW50Tm9kZS5kZXZpY2VIaXN0b2dyYW07Rlt3LmRldmljZV09KEZbdy5kZXZpY2VdfHwwKSsxfW51bGwhPXcueGxhQ2x1c3RlciYmKEY9Qy5wYXJlbnROb2RlLnhsYUNsdXN0ZXJIaXN0b2dyYW0sRlt3LnhsYUNsdXN0ZXJdPShGW3cueGxhQ2x1c3Rlcl18fDApKzEpO251bGwhPXcuc3RhdHMmJkMucGFyZW50Tm9kZS5zdGF0cy5jb21iaW5lKHcuc3RhdHMpOwpDPUMucGFyZW50Tm9kZX19KX07Zi5nZXRJbmNvbXBhdGlibGVPcHM9ZnVuY3Rpb24oeCxBKXtsZXQgeT1bXSx3PXt9O18uZWFjaCh4LnJvb3QubGVhdmVzKCksQz0+e0M9eC5ub2RlKEMpO2lmKEMudHlwZT09ZC5Ob2RlVHlwZS5PUCl7aWYoIUMuY29tcGF0aWJsZSlpZihDLm93bmluZ1NlcmllcylpZihBJiZBLnNlcmllc01hcFtDLm93bmluZ1Nlcmllc109PT1iLmdyYXBoLlNlcmllc0dyb3VwaW5nVHlwZS5VTkdST1VQKXkucHVzaChDKTtlbHNle2lmKCF3W0Mub3duaW5nU2VyaWVzXSl7bGV0IEY9eC5ub2RlKEMub3duaW5nU2VyaWVzKTtGJiYod1tDLm93bmluZ1Nlcmllc109Rix5LnB1c2goRikpfX1lbHNlIHkucHVzaChDKTtfLmVhY2goQy5pbkVtYmVkZGluZ3MsRj0+e0YuY29tcGF0aWJsZXx8eS5wdXNoKEYpfSk7Xy5lYWNoKEMub3V0RW1iZWRkaW5ncyxGPT57Ri5jb21wYXRpYmxlfHx5LnB1c2goRil9KX19KTtyZXR1cm4geX19KShkLmhpZXJhcmNoeXx8KGQuaGllcmFyY2h5PQp7fSkpfSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vbGF5b3V0LmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgodyl7dy5ub2RlLmlzR3JvdXBOb2RlJiZ0KHcpO3cubm9kZS50eXBlPT09ZC5Ob2RlVHlwZS5NRVRBP3Aodyk6dy5ub2RlLnR5cGU9PT1kLk5vZGVUeXBlLlNFUklFUyYmbSh3KX1mdW5jdGlvbiBrKHcpe3cuaW5ib3hXaWR0aD0wPHcuaW5Bbm5vdGF0aW9ucy5saXN0Lmxlbmd0aD9mLlBBUkFNUy5hbm5vdGF0aW9ucy5pbmJveFdpZHRoOjA7dy5vdXRib3hXaWR0aD0wPHcub3V0QW5ub3RhdGlvbnMubGlzdC5sZW5ndGg/Zi5QQVJBTVMuYW5ub3RhdGlvbnMub3V0Ym94V2lkdGg6MDt3LmNvcmVCb3gud2lkdGg9dy53aWR0aDt3LmNvcmVCb3guaGVpZ2h0PXcuaGVpZ2h0O3cud2lkdGg9TWF0aC5tYXgody5jb3JlQm94LndpZHRoK3cuaW5ib3hXaWR0aCt3Lm91dGJveFdpZHRoLDMqdy5kaXNwbGF5TmFtZS5sZW5ndGgpfWZ1bmN0aW9uIHQodyl7bGV0IEM9dy5jb3JlR3JhcGgubm9kZXMoKS5tYXAoRj0+CncuY29yZUdyYXBoLm5vZGUoRikpLmNvbmNhdCh3Lmlzb2xhdGVkSW5FeHRyYWN0LHcuaXNvbGF0ZWRPdXRFeHRyYWN0LHcubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QpO18uZWFjaChDLEY9Pntzd2l0Y2goRi5ub2RlLnR5cGUpe2Nhc2UgZC5Ob2RlVHlwZS5PUDpfLmV4dGVuZChGLGYuUEFSQU1TLm5vZGVTaXplLm9wKTticmVhaztjYXNlIGQuTm9kZVR5cGUuQlJJREdFOl8uZXh0ZW5kKEYsZi5QQVJBTVMubm9kZVNpemUuYnJpZGdlKTticmVhaztjYXNlIGQuTm9kZVR5cGUuTUVUQTpGLmV4cGFuZGVkP2goRik6KF8uZXh0ZW5kKEYsZi5QQVJBTVMubm9kZVNpemUubWV0YSksRi5oZWlnaHQ9Zi5QQVJBTVMubm9kZVNpemUubWV0YS5oZWlnaHQoRi5ub2RlLmNhcmRpbmFsaXR5KSk7YnJlYWs7Y2FzZSBkLk5vZGVUeXBlLlNFUklFUzpGLmV4cGFuZGVkPyhfLmV4dGVuZChGLGYuUEFSQU1TLm5vZGVTaXplLnNlcmllcy5leHBhbmRlZCksaChGKSk6Xy5leHRlbmQoRixGLm5vZGUuaGFzTm9uQ29udHJvbEVkZ2VzPwpmLlBBUkFNUy5ub2RlU2l6ZS5zZXJpZXMudmVydGljYWw6Zi5QQVJBTVMubm9kZVNpemUuc2VyaWVzLmhvcml6b250YWwpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrRi5ub2RlLnR5cGUpO31GLmV4cGFuZGVkfHxrKEYpO24oRil9KX1mdW5jdGlvbiBsKHcsQyl7Xy5leHRlbmQody5ncmFwaCgpLHtub2Rlc2VwOkMubm9kZVNlcCxyYW5rc2VwOkMucmFua1NlcCxlZGdlc2VwOkMuZWRnZVNlcH0pO2xldCBGPVtdLEQ9W107Xy5lYWNoKHcubm9kZXMoKSxIPT57dy5ub2RlKEgpLm5vZGUudHlwZT09PWQuTm9kZVR5cGUuQlJJREdFP0YucHVzaChIKTpELnB1c2goSCl9KTtpZighRC5sZW5ndGgpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjB9O2RhZ3JlLmxheW91dCh3KTtsZXQgQj1JbmZpbml0eSxJPUluZmluaXR5LE49LUluZmluaXR5LE89LUluZmluaXR5O18uZWFjaChELEg9PntIPXcubm9kZShIKTt2YXIgSz0uNSpILndpZHRoLE09SC54LQpLO0s9SC54K0s7Qj1NPEI/TTpCO049Sz5OP0s6TjtLPS41KkguaGVpZ2h0O009SC55LUs7SD1ILnkrSztJPU08ST9NOkk7Tz1IPk8/SDpPfSk7Xy5lYWNoKHcuZWRnZXMoKSxIPT57SD13LmVkZ2UoSCk7aWYoIUguc3RydWN0dXJhbCl7dmFyIEs9dy5ub2RlKEgubWV0YWVkZ2UudiksTT13Lm5vZGUoSC5tZXRhZWRnZS53KTtpZigzPT09SC5wb2ludHMubGVuZ3RoJiZBKEgucG9pbnRzKSl7aWYobnVsbCE9Syl7dmFyIEw9Sy5leHBhbmRlZD9LLng6dShLKTtILnBvaW50c1swXS54PUx9bnVsbCE9TSYmKEw9TS5leHBhbmRlZD9NLng6dShNKSxILnBvaW50c1syXS54PUwpO0gucG9pbnRzPVtILnBvaW50c1swXSxILnBvaW50c1sxXV19TD1ILnBvaW50c1tILnBvaW50cy5sZW5ndGgtMl07bnVsbCE9TSYmKEgucG9pbnRzW0gucG9pbnRzLmxlbmd0aC0xXT15KEwsTSkpO009SC5wb2ludHNbMV07bnVsbCE9SyYmKEgucG9pbnRzWzBdPXkoTSxLKSk7Xy5lYWNoKEgucG9pbnRzLFE9PntCPVEueDwKQj9RLng6QjtOPVEueD5OP1EueDpOO0k9US55PEk/US55Okk7Tz1RLnk+Tz9RLnk6T30pfX0pO18uZWFjaCh3Lm5vZGVzKCksSD0+e0g9dy5ub2RlKEgpO0gueC09QjtILnktPUl9KTtfLmVhY2gody5lZGdlcygpLEg9PntfLmVhY2gody5lZGdlKEgpLnBvaW50cyxLPT57Sy54LT1CO0sueS09SX0pfSk7cmV0dXJue3dpZHRoOk4tQixoZWlnaHQ6Ty1JfX1mdW5jdGlvbiBwKHcpe2xldCBDPWYuUEFSQU1TLnN1YnNjZW5lLm1ldGE7Xy5leHRlbmQodyxDKTtfLmV4dGVuZCh3LmNvcmVCb3gsbCh3LmNvcmVHcmFwaCxmLlBBUkFNUy5ncmFwaC5tZXRhKSk7dmFyIEY9dy5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGg/Xy5tYXgody5pc29sYXRlZEluRXh0cmFjdCxCPT5CLndpZHRoKS53aWR0aDpudWxsO3cuaW5FeHRyYWN0Qm94LndpZHRoPW51bGwhPUY/RjowO3cuaW5FeHRyYWN0Qm94LmhlaWdodD1fLnJlZHVjZSh3Lmlzb2xhdGVkSW5FeHRyYWN0LChCLEksTik9PntOPTA8Tj9DLmV4dHJhY3RZT2Zmc2V0OgowO0kueD0wO0kueT1CK04rSS5oZWlnaHQvMjtyZXR1cm4gQitOK0kuaGVpZ2h0fSwwKTtGPXcuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aD9fLm1heCh3Lmlzb2xhdGVkT3V0RXh0cmFjdCxCPT5CLndpZHRoKS53aWR0aDpudWxsO3cub3V0RXh0cmFjdEJveC53aWR0aD1udWxsIT1GP0Y6MDt3Lm91dEV4dHJhY3RCb3guaGVpZ2h0PV8ucmVkdWNlKHcuaXNvbGF0ZWRPdXRFeHRyYWN0LChCLEksTik9PntOPTA8Tj9DLmV4dHJhY3RZT2Zmc2V0OjA7SS54PTA7SS55PUIrTitJLmhlaWdodC8yO3JldHVybiBCK04rSS5oZWlnaHR9LDApO0Y9dy5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5sZW5ndGg/Xy5tYXgody5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdCxCPT5CLndpZHRoKS53aWR0aDpudWxsO3cubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aD1udWxsIT1GP0Y6MDt3LmxpYnJhcnlGdW5jdGlvbnNCb3guaGVpZ2h0PV8ucmVkdWNlKHcubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QsKEIsSSwKTik9PntOPTA8Tj9DLmV4dHJhY3RZT2Zmc2V0OjA7SS54PTA7SS55PUIrTitJLmhlaWdodC8yO3JldHVybiBCK04rSS5oZWlnaHR9LDApO0Y9MDswPHcuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoJiZGKys7MDx3Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGgmJkYrKzswPHcubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoJiZGKys7MDx3LmNvcmVHcmFwaC5ub2RlQ291bnQoKSYmRisrO2xldCBEPWYuUEFSQU1TLnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQ7Rj0xPj1GPzA6RipEO3cuY29yZUJveC53aWR0aCs9TWF0aC5tYXgoZi5NSU5fQVVYX1dJRFRILHcuaW5FeHRyYWN0Qm94LndpZHRoK3cub3V0RXh0cmFjdEJveC53aWR0aCkrRit3LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgrRjt3LmNvcmVCb3guaGVpZ2h0PUMubGFiZWxIZWlnaHQrTWF0aC5tYXgody5pbkV4dHJhY3RCb3guaGVpZ2h0LHcuY29yZUJveC5oZWlnaHQsdy5saWJyYXJ5RnVuY3Rpb25zQm94LmhlaWdodCwKdy5vdXRFeHRyYWN0Qm94LmhlaWdodCk7dy53aWR0aD13LmNvcmVCb3gud2lkdGgrQy5wYWRkaW5nTGVmdCtDLnBhZGRpbmdSaWdodDt3LmhlaWdodD13LnBhZGRpbmdUb3Ardy5jb3JlQm94LmhlaWdodCt3LnBhZGRpbmdCb3R0b219ZnVuY3Rpb24gbSh3KXtsZXQgQz13LmNvcmVHcmFwaCxGPWYuUEFSQU1TLnN1YnNjZW5lLnNlcmllcztfLmV4dGVuZCh3LEYpO18uZXh0ZW5kKHcuY29yZUJveCxsKHcuY29yZUdyYXBoLGYuUEFSQU1TLmdyYXBoLnNlcmllcykpO18uZWFjaChDLm5vZGVzKCksRD0+e0Mubm9kZShEKS5leGNsdWRlZD0hMX0pO3cud2lkdGg9dy5jb3JlQm94LndpZHRoK0YucGFkZGluZ0xlZnQrRi5wYWRkaW5nUmlnaHQ7dy5oZWlnaHQ9dy5jb3JlQm94LmhlaWdodCtGLnBhZGRpbmdUb3ArRi5wYWRkaW5nQm90dG9tfWZ1bmN0aW9uIG4odyl7aWYoIXcuZXhwYW5kZWQpe3ZhciBDPXcuaW5Bbm5vdGF0aW9ucy5saXN0LEY9dy5vdXRBbm5vdGF0aW9ucy5saXN0O18uZWFjaChDLApLPT5xKEspKTtfLmVhY2goRixLPT5xKEspKTt2YXIgRD1mLlBBUkFNUy5hbm5vdGF0aW9ucyxCPV8ucmVkdWNlKEMsKEssTSxMKT0+e0w9MDxMP0QueU9mZnNldDowO00uZHg9LSh3LmNvcmVCb3gud2lkdGgrTS53aWR0aCkvMi1ELnhPZmZzZXQ7TS5keT1LK0wrTS5oZWlnaHQvMjtyZXR1cm4gSytMK00uaGVpZ2h0fSwwKTtfLmVhY2goQyxLPT57Sy5keS09Qi8yO0subGFiZWxPZmZzZXQ9RC5sYWJlbE9mZnNldH0pO3ZhciBJPV8ucmVkdWNlKEYsKEssTSxMKT0+e0w9MDxMP0QueU9mZnNldDowO00uZHg9KHcuY29yZUJveC53aWR0aCtNLndpZHRoKS8yK0QueE9mZnNldDtNLmR5PUsrTCtNLmhlaWdodC8yO3JldHVybiBLK0wrTS5oZWlnaHR9LDApO18uZWFjaChGLEs9PntLLmR5LT1JLzI7Sy5sYWJlbE9mZnNldD1ELmxhYmVsT2Zmc2V0fSk7dmFyIE49TWF0aC5taW4ody5oZWlnaHQvMi13LnJhZGl1cyxCLzIpO049MD5OPzA6Tjt2YXIgTz1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCwKQy5sZW5ndGgtMV0pLnJhbmdlKFstTixOXSk7Xy5lYWNoKEMsKEssTSk9PntLLnBvaW50cz1be2R4OksuZHgrSy53aWR0aC8yLGR5OksuZHl9LHtkeDotdy5jb3JlQm94LndpZHRoLzIsZHk6MTxDLmxlbmd0aD9PKE0pOjB9XX0pO049TWF0aC5taW4ody5oZWlnaHQvMi13LnJhZGl1cyxJLzIpO049MD5OPzA6Tjt2YXIgSD1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxGLmxlbmd0aC0xXSkucmFuZ2UoWy1OLE5dKTtfLmVhY2goRiwoSyxNKT0+e0sucG9pbnRzPVt7ZHg6dy5jb3JlQm94LndpZHRoLzIsZHk6MTxGLmxlbmd0aD9IKE0pOjB9LHtkeDpLLmR4LUsud2lkdGgvMixkeTpLLmR5fV19KTt3LmhlaWdodD1NYXRoLm1heCh3LmhlaWdodCxCLEkpfX1mdW5jdGlvbiBxKHcpe3N3aXRjaCh3LmFubm90YXRpb25UeXBlKXtjYXNlIGQucmVuZGVyLkFubm90YXRpb25UeXBlLkNPTlNUQU5UOl8uZXh0ZW5kKHcsZi5QQVJBTVMuY29uc3RhbnQuc2l6ZSk7YnJlYWs7Y2FzZSBkLnJlbmRlci5Bbm5vdGF0aW9uVHlwZS5TSE9SVENVVDppZih3Lm5vZGUudHlwZT09PQpkLk5vZGVUeXBlLk9QKV8uZXh0ZW5kKHcsZi5QQVJBTVMuc2hvcnRjdXRTaXplLm9wKTtlbHNlIGlmKHcubm9kZS50eXBlPT09ZC5Ob2RlVHlwZS5NRVRBKV8uZXh0ZW5kKHcsZi5QQVJBTVMuc2hvcnRjdXRTaXplLm1ldGEpO2Vsc2UgaWYody5ub2RlLnR5cGU9PT1kLk5vZGVUeXBlLlNFUklFUylfLmV4dGVuZCh3LGYuUEFSQU1TLnNob3J0Y3V0U2l6ZS5zZXJpZXMpO2Vsc2UgdGhyb3cgRXJyb3IoIkludmFsaWQgbm9kZSB0eXBlOiAiK3cubm9kZS50eXBlKTticmVhaztjYXNlIGQucmVuZGVyLkFubm90YXRpb25UeXBlLlNVTU1BUlk6Xy5leHRlbmQodyxmLlBBUkFNUy5jb25zdGFudC5zaXplKX19ZnVuY3Rpb24gdSh3KXtyZXR1cm4gdy5leHBhbmRlZD93Lng6dy54LXcud2lkdGgvMisody5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoP3cuaW5ib3hXaWR0aDowKSt3LmNvcmVCb3gud2lkdGgvMn1mdW5jdGlvbiB4KHcsQyl7cmV0dXJuIDE4MCpNYXRoLmF0YW4oKEMueS13LnkpLyhDLngtCncueCkpL01hdGguUEl9ZnVuY3Rpb24gQSh3KXtsZXQgQz14KHdbMF0sd1sxXSk7Zm9yKGxldCBGPTE7Rjx3Lmxlbmd0aC0xO0YrKyl7bGV0IEQ9eCh3W0ZdLHdbRisxXSk7aWYoMTxNYXRoLmFicyhELUMpKXJldHVybiExO0M9RH1yZXR1cm4hMH1mdW5jdGlvbiB5KHcsQyl7bGV0IEY9Qy5leHBhbmRlZD9DLng6dShDKSxEPUMueTt2YXIgQj13LngtRjt3PXcueS1EO2xldCBJPUMuZXhwYW5kZWQ/Qy53aWR0aDpDLmNvcmVCb3gud2lkdGgsTj1DLmV4cGFuZGVkP0MuaGVpZ2h0OkMuY29yZUJveC5oZWlnaHQ7TWF0aC5hYnModykqSS8yPk1hdGguYWJzKEIpKk4vMj8oMD53JiYoTj0tTiksQz0wPT09dz8wOk4vMipCL3csQj1OLzIpOigwPkImJihJPS1JKSxDPUkvMixCPTA9PT1CPzA6SS8yKncvQik7cmV0dXJue3g6RitDLHk6RCtCfX1mLlBBUkFNUz17YW5pbWF0aW9uOntkdXJhdGlvbjoyNTB9LGdyYXBoOnttZXRhOntub2RlU2VwOjUscmFua1NlcDoyNSxlZGdlU2VwOjV9LHNlcmllczp7bm9kZVNlcDo1LApyYW5rU2VwOjI1LGVkZ2VTZXA6NX0scGFkZGluZzp7cGFkZGluZ1RvcDo0MCxwYWRkaW5nTGVmdDoyMH19LHN1YnNjZW5lOnttZXRhOntwYWRkaW5nVG9wOjEwLHBhZGRpbmdCb3R0b206MTAscGFkZGluZ0xlZnQ6MTAscGFkZGluZ1JpZ2h0OjEwLGxhYmVsSGVpZ2h0OjIwLGV4dHJhY3RYT2Zmc2V0OjE1LGV4dHJhY3RZT2Zmc2V0OjIwfSxzZXJpZXM6e3BhZGRpbmdUb3A6MTAscGFkZGluZ0JvdHRvbToxMCxwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAsbGFiZWxIZWlnaHQ6MTB9fSxub2RlU2l6ZTp7bWV0YTp7cmFkaXVzOjUsd2lkdGg6NjAsbWF4TGFiZWxXaWR0aDo1MixoZWlnaHQ6ZDMuc2NhbGVMaW5lYXIoKS5kb21haW4oWzEsMjAwXSkucmFuZ2UoWzE1LDYwXSkuY2xhbXAoITApLGV4cGFuZEJ1dHRvblJhZGl1czozfSxvcDp7d2lkdGg6MTUsaGVpZ2h0OjYscmFkaXVzOjMsbGFiZWxPZmZzZXQ6LTgsbWF4TGFiZWxXaWR0aDozMH0sc2VyaWVzOntleHBhbmRlZDp7cmFkaXVzOjEwLApsYWJlbE9mZnNldDowfSx2ZXJ0aWNhbDp7d2lkdGg6MTYsaGVpZ2h0OjEzLGxhYmVsT2Zmc2V0Oi0xM30saG9yaXpvbnRhbDp7d2lkdGg6MjQsaGVpZ2h0OjgscmFkaXVzOjEwLGxhYmVsT2Zmc2V0Oi0xMH19LGJyaWRnZTp7d2lkdGg6MjAsaGVpZ2h0OjIwLHJhZGl1czoyLGxhYmVsT2Zmc2V0OjB9fSxzaG9ydGN1dFNpemU6e29wOnt3aWR0aDoxMCxoZWlnaHQ6NH0sbWV0YTp7d2lkdGg6MTIsaGVpZ2h0OjQscmFkaXVzOjF9LHNlcmllczp7d2lkdGg6MTQsaGVpZ2h0OjR9fSxhbm5vdGF0aW9uczp7aW5ib3hXaWR0aDo1MCxvdXRib3hXaWR0aDo1MCx4T2Zmc2V0OjEwLHlPZmZzZXQ6MyxsYWJlbE9mZnNldDoyLG1heExhYmVsV2lkdGg6MTIwfSxjb25zdGFudDp7c2l6ZTp7d2lkdGg6NCxoZWlnaHQ6NH19LHNlcmllczp7bWF4U3RhY2tDb3VudDozLHBhcmFsbGVsU3RhY2tPZmZzZXRSYXRpbzouMix0b3dlclN0YWNrT2Zmc2V0UmF0aW86LjV9LG1pbmltYXA6e3NpemU6MTUwfX07Zi5NSU5fQVVYX1dJRFRIPQoxNDA7Zi5sYXlvdXRTY2VuZT1oO2YuY29tcHV0ZUNYUG9zaXRpb25PZk5vZGVTaGFwZT11fSkoZC5sYXlvdXR8fChkLmxheW91dD17fSkpfSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vbG9hZGVyLmpzCnZhciBVaT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oYixkLGYsaCl7cmV0dXJuIG5ldyAoZnx8KGY9UHJvbWlzZSkpKGZ1bmN0aW9uKGssdCl7ZnVuY3Rpb24gbChuKXt0cnl7bShoLm5leHQobikpfWNhdGNoKHEpe3QocSl9fWZ1bmN0aW9uIHAobil7dHJ5e20oaFsidGhyb3ciXShuKSl9Y2F0Y2gocSl7dChxKX19ZnVuY3Rpb24gbShuKXtuLmRvbmU/ayhuLnZhbHVlKToobmV3IGYoZnVuY3Rpb24ocSl7cShuLnZhbHVlKX0pKS50aGVuKGwscCl9bSgoaD1oLmFwcGx5KGIsZHx8W10pKS5uZXh0KCkpfSl9OwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpeyhmdW5jdGlvbihmKXtmLmZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGg9ZnVuY3Rpb24oaCxrLHQsbD1uZXcgZC5vcC5UcHVDb21wYXRpYmlsaXR5UHJvdmlkZXIscD1kLmhpZXJhcmNoeS5EZWZhdWx0SGllcmFyY2h5UGFyYW1zKXtjb25zdCBtPWQudXRpbC5nZXRTdWJ0YXNrVHJhY2tlcihoLDIwLCJHcmFwaCIpLG49ZC51dGlsLmdldFN1YnRhc2tUcmFja2VyKGgsNTAsIk5hbWVzcGFjZSBoaWVyYXJjaHkiKTtyZXR1cm4gZC5wYXJzZXIuZmV0Y2hBbmRQYXJzZUdyYXBoRGF0YShrLHQsZC51dGlsLmdldFN1YnRhc2tUcmFja2VyKGgsMzAsIkRhdGEiKSkudGhlbihmdW5jdGlvbihxKXtpZighcS5ub2RlKXRocm93IEVycm9yKCJUaGUgZ3JhcGggaXMgZW1wdHkuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIFRlbnNvckZsb3cgY291bGQgbm90IHRyYWNlIGFueSBncmFwaC4gUGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS90ZW5zb3JmbG93L3RlbnNvcmJvYXJkL2lzc3Vlcy8xOTYxIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOwpyZXR1cm4gZC5idWlsZChxLGQuRGVmYXVsdEJ1aWxkUGFyYW1zLG0pfSwoKT0+e3Rocm93IEVycm9yKCJNYWxmb3JtZWQgR3JhcGhEZWYuIFRoaXMgY2FuIHNvbWV0aW1lcyBiZSBjYXVzZWQgYnkgYSBiYWQgbmV0d29yayBjb25uZWN0aW9uIG9yIGRpZmZpY3VsdHkgcmVjb25jaWxpbmcgbXVsdGlwbGUgR3JhcGhEZWZzOyBmb3IgdGhlIGxhdHRlciBjYXNlLCBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL3RlbnNvcmZsb3cvdGVuc29yYm9hcmQvaXNzdWVzLzE5MjkuIik7fSkudGhlbihxPT5VaSh0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24qKCl7ZC5vcC5jaGVja09wc0ZvckNvbXBhdGliaWxpdHkocSxsKTtjb25zdCB1PXlpZWxkIGQuaGllcmFyY2h5LmJ1aWxkKHEscCxuKTtyZXR1cm57Z3JhcGg6cSxncmFwaEhpZXJhcmNoeTp1fX0pKS5jYXRjaChxPT57aC5yZXBvcnRFcnJvcihgR3JhcGggdmlzdWFsaXphdGlvbiBmYWlsZWQuXG5cbiR7cX1gLHEpO3Rocm93IHE7Cn0pfX0pKGQubG9hZGVyfHwoZC5sb2FkZXI9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL25vZGUuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7KGZ1bmN0aW9uKGgpe2Z1bmN0aW9uIGsoWixiYSxlYSl7aWYoYmEubm9kZS5pc0dyb3VwTm9kZSl7aWYoYmEuZXhwYW5kZWQpcmV0dXJuIGYuYnVpbGRHcm91cChaLGJhLGVhLGYuQ2xhc3MuU3Vic2NlbmUuR1JPVVApO2Yuc2VsZWN0Q2hpbGQoWiwiZyIsZi5DbGFzcy5TdWJzY2VuZS5HUk9VUCkucmVtb3ZlKCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdChaLGJhKXtsZXQgZWE9YmEueC1iYS53aWR0aC8yK2JhLnBhZGRpbmdMZWZ0O2JhPWJhLnktYmEuaGVpZ2h0LzIrYmEucGFkZGluZ1RvcDtaPWYuc2VsZWN0Q2hpbGQoWiwiZyIsZi5DbGFzcy5TdWJzY2VuZS5HUk9VUCk7Zi50cmFuc2xhdGUoWixlYSxiYSl9ZnVuY3Rpb24gbChaLGJhLGVhKXtaPWYuc2VsZWN0T3JDcmVhdGVDaGlsZChaLCJnIixmLkNsYXNzLk5vZGUuQlVUVE9OX0NPTlRBSU5FUik7Zi5zZWxlY3RPckNyZWF0ZUNoaWxkKFosImNpcmNsZSIsZi5DbGFzcy5Ob2RlLkJVVFRPTl9DSVJDTEUpOwpmLnNlbGVjdE9yQ3JlYXRlQ2hpbGQoWiwicGF0aCIsZi5DbGFzcy5Ob2RlLkVYUEFORF9CVVRUT04pLmF0dHIoImQiLCJNMCwtMi4yIFYyLjIgTS0yLjIsMCBIMi4yIik7Zi5zZWxlY3RPckNyZWF0ZUNoaWxkKFosInBhdGgiLGYuQ2xhc3MuTm9kZS5DT0xMQVBTRV9CVVRUT04pLmF0dHIoImQiLCJNLTIuMiwwIEgyLjIiKTtaLm9uKCJjbGljayIsY2E9PntkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtlYS5maXJlKCJub2RlLXRvZ2dsZS1leHBhbmQiLHtuYW1lOmNhLm5vZGUubmFtZX0pfSk7Zi5wb3NpdGlvbkJ1dHRvbihaLGJhKX1mdW5jdGlvbiBwKFosYmEsZWEsY2Epe2lmKGNhKVouYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIik7ZWxzZXt2YXIga2E9Zi5jb250ZXh0bWVudS5nZXRNZW51KGVhLG0oYmEubm9kZSxlYSkpO1oub24oImRibGNsaWNrIixZPT57ZWEuZmlyZSgibm9kZS10b2dnbGUtZXhwYW5kIix7bmFtZTpZLm5vZGUubmFtZX0pfSkub24oIm1vdXNlb3ZlciIsClk9PntlYS5pc05vZGVFeHBhbmRlZChZKXx8ZWEuZmlyZSgibm9kZS1oaWdobGlnaHQiLHtuYW1lOlkubm9kZS5uYW1lfSl9KS5vbigibW91c2VvdXQiLFk9PntlYS5pc05vZGVFeHBhbmRlZChZKXx8ZWEuZmlyZSgibm9kZS11bmhpZ2hsaWdodCIse25hbWU6WS5ub2RlLm5hbWV9KX0pLm9uKCJjbGljayIsWT0+e2QzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2VhLmZpcmUoIm5vZGUtc2VsZWN0Iix7bmFtZTpZLm5vZGUubmFtZX0pfSkub24oImNvbnRleHRtZW51IiwoWSxFYSk9PntlYS5maXJlKCJub2RlLXNlbGVjdCIse25hbWU6WS5ub2RlLm5hbWV9KTtrYS5jYWxsKFksRWEpfSl9fWZ1bmN0aW9uIG0oWixiYSl7bGV0IGVhPVt7dGl0bGU6KCk9PmQuZ2V0SW5jbHVkZU5vZGVCdXR0b25TdHJpbmcoWi5pbmNsdWRlKSxhY3Rpb246KCk9PntiYS5maXJlKCJub2RlLXRvZ2dsZS1leHRyYWN0Iix7bmFtZTpaLm5hbWV9KX19XTtiYS5ub2RlQ29udGV4dE1lbnVJdGVtcyYmKGVhPWVhLmNvbmNhdChiYS5ub2RlQ29udGV4dE1lbnVJdGVtcykpOwpuKFopJiZlYS5wdXNoKHt0aXRsZTooKT0+eChaKSxhY3Rpb246KCk9PntiYS5maXJlKCJub2RlLXRvZ2dsZS1zZXJpZXNncm91cCIse25hbWU6cShaKX0pfX0pO3JldHVybiBlYX1mdW5jdGlvbiBuKFope3JldHVybiBudWxsIT09cShaKX1mdW5jdGlvbiBxKFope3JldHVybiBaP1oudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTP1oubmFtZTpaLnR5cGU9PT1kLk5vZGVUeXBlLk9QP1oub3duaW5nU2VyaWVzOm51bGw6bnVsbH1mdW5jdGlvbiB1KFope2xldCBiYT1udWxsO2lmKCFaKXJldHVybiBudWxsO1oudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTP2JhPVo6Wi5wYXJlbnROb2RlJiZaLnBhcmVudE5vZGUudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTJiYoYmE9Wi5wYXJlbnROb2RlKTtyZXR1cm4gYmF9ZnVuY3Rpb24geChaKXtyZXR1cm4gYi5ncmFwaC5nZXRHcm91cFNlcmllc05vZGVCdXR0b25TdHJpbmcobnVsbCE9PXUoWik/Yi5ncmFwaC5TZXJpZXNHcm91cGluZ1R5cGUuR1JPVVA6CmIuZ3JhcGguU2VyaWVzR3JvdXBpbmdUeXBlLlVOR1JPVVApfWZ1bmN0aW9uIEEoWixiYSxlYSl7dmFyIGNhPWJhLmRpc3BsYXlOYW1lO2xldCBrYT1iYS5ub2RlLnR5cGU9PT1kLk5vZGVUeXBlLk1FVEEmJiFiYS5leHBhbmRlZDtaPWYuc2VsZWN0T3JDcmVhdGVDaGlsZChaLCJ0ZXh0IixmLkNsYXNzLk5vZGUuTEFCRUwpO2xldCBZPVoubm9kZSgpO1kucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChZKTtaLmF0dHIoImR5IiwiLjM1ZW0iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpO2thJiYoY2EubGVuZ3RoPmVhLm1heE1ldGFub2RlTGFiZWxMZW5ndGgmJihjYT1jYS5zdWJzdHIoMCxlYS5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoLTIpKyIuLi4iKSxlYT13KGVhKSxaLmF0dHIoImZvbnQtc2l6ZSIsZWEoY2EubGVuZ3RoKSsicHgiKSk7Y2E9Wi50ZXh0KGNhKTt5KGNhLGJhLm5vZGUudHlwZSxiYSk7cmV0dXJuIFp9ZnVuY3Rpb24geShaLGJhLGVhKXtsZXQgY2E9Wi5ub2RlKCk7dmFyIGthPQpjYS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKTtsZXQgWT1jYS50ZXh0Q29udGVudCxFYT1udWxsO3N3aXRjaChiYSl7Y2FzZSBkLk5vZGVUeXBlLk1FVEE6ZWEmJiFlYS5leHBhbmRlZCYmKEVhPWQubGF5b3V0LlBBUkFNUy5ub2RlU2l6ZS5tZXRhLm1heExhYmVsV2lkdGgpO2JyZWFrO2Nhc2UgZC5Ob2RlVHlwZS5PUDpFYT1kLmxheW91dC5QQVJBTVMubm9kZVNpemUub3AubWF4TGFiZWxXaWR0aDticmVhaztjYXNlIC0xOkVhPWQubGF5b3V0LlBBUkFNUy5hbm5vdGF0aW9ucy5tYXhMYWJlbFdpZHRofWlmKCEobnVsbD09PUVhfHxrYTw9RWEpKXtmb3Ioa2E9MTtjYS5nZXRTdWJTdHJpbmdMZW5ndGgoMCxrYSk8RWE7KWthKys7YmE9Y2EudGV4dENvbnRlbnQuc3Vic3RyKDAsa2EpO2RvIGJhPWJhLnN1YnN0cigwLGJhLmxlbmd0aC0xKSxjYS50ZXh0Q29udGVudD1iYSsiLi4uIixrYT1jYS5nZXRDb21wdXRlZFRleHRMZW5ndGgoKTt3aGlsZShrYT5FYSYmMDxiYS5sZW5ndGgpO3JldHVybiBaLmFwcGVuZCgidGl0bGUiKS50ZXh0KFkpfX0KZnVuY3Rpb24gdyhaKXthYXx8KGFhPWQzLnNjYWxlTGluZWFyKCkuZG9tYWluKFtaLm1heE1ldGFub2RlTGFiZWxMZW5ndGhMYXJnZUZvbnQsWi5tYXhNZXRhbm9kZUxhYmVsTGVuZ3RoXSkucmFuZ2UoW1oubWF4TWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplLFoubWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplXSkuY2xhbXAoITApKTtyZXR1cm4gYWF9ZnVuY3Rpb24gQyhaLGJhLGVhLGNhKXtmLnNlbGVjdENoaWxkKFosInRleHQiLGYuQ2xhc3MuTm9kZS5MQUJFTCkudHJhbnNpdGlvbigpLmF0dHIoIngiLGJhKS5hdHRyKCJ5IixlYStjYSl9ZnVuY3Rpb24gRihaLGJhLGVhKXtaPWYuc2VsZWN0T3JDcmVhdGVDaGlsZChaLCJnIixlYSk7c3dpdGNoKGJhLm5vZGUudHlwZSl7Y2FzZSBkLk5vZGVUeXBlLk9QOmJhPWJhLm5vZGU7aWYoXy5pc051bWJlcihiYS5mdW5jdGlvbklucHV0SW5kZXgpfHxfLmlzTnVtYmVyKGJhLmZ1bmN0aW9uT3V0cHV0SW5kZXgpKXtmLnNlbGVjdE9yQ3JlYXRlQ2hpbGQoWiwKInBvbHlnb24iLGYuQ2xhc3MuTm9kZS5DT0xPUl9UQVJHRVQpO2JyZWFrfWYuc2VsZWN0T3JDcmVhdGVDaGlsZChaLCJlbGxpcHNlIixmLkNsYXNzLk5vZGUuQ09MT1JfVEFSR0VUKTticmVhaztjYXNlIGQuTm9kZVR5cGUuU0VSSUVTOmVhPSJhbm5vdGF0aW9uIjtiYS5jb3JlR3JhcGgmJihlYT1iYS5ub2RlLmhhc05vbkNvbnRyb2xFZGdlcz8idmVydGljYWwiOiJob3Jpem9udGFsIik7bGV0IGNhPVtmLkNsYXNzLk5vZGUuQ09MT1JfVEFSR0VUXTtiYS5pc0ZhZGVkT3V0JiZjYS5wdXNoKCJmYWRlZC1lbGxpcHNlIik7Zi5zZWxlY3RPckNyZWF0ZUNoaWxkKFosInVzZSIsY2EpLmF0dHIoInhsaW5rOmhyZWYiLCIjb3Atc2VyaWVzLSIrZWErIi1zdGFtcCIpO2Yuc2VsZWN0T3JDcmVhdGVDaGlsZChaLCJyZWN0IixmLkNsYXNzLk5vZGUuQ09MT1JfVEFSR0VUKS5hdHRyKCJyeCIsYmEucmFkaXVzKS5hdHRyKCJyeSIsYmEucmFkaXVzKTticmVhaztjYXNlIGQuTm9kZVR5cGUuQlJJREdFOmYuc2VsZWN0T3JDcmVhdGVDaGlsZChaLAoicmVjdCIsZi5DbGFzcy5Ob2RlLkNPTE9SX1RBUkdFVCkuYXR0cigicngiLGJhLnJhZGl1cykuYXR0cigicnkiLGJhLnJhZGl1cyk7YnJlYWs7Y2FzZSBkLk5vZGVUeXBlLk1FVEE6Zi5zZWxlY3RPckNyZWF0ZUNoaWxkKFosInJlY3QiLGYuQ2xhc3MuTm9kZS5DT0xPUl9UQVJHRVQpLmF0dHIoInJ4IixiYS5yYWRpdXMpLmF0dHIoInJ5IixiYS5yYWRpdXMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrYmEubm9kZS50eXBlKTt9cmV0dXJuIFp9ZnVuY3Rpb24gRChaKXtzd2l0Y2goWi5ub2RlLnR5cGUpe2Nhc2UgZC5Ob2RlVHlwZS5PUDpyZXR1cm4gZi5DbGFzcy5PUE5PREU7Y2FzZSBkLk5vZGVUeXBlLk1FVEE6cmV0dXJuIGYuQ2xhc3MuTUVUQU5PREU7Y2FzZSBkLk5vZGVUeXBlLlNFUklFUzpyZXR1cm4gZi5DbGFzcy5TRVJJRVNOT0RFO2Nhc2UgZC5Ob2RlVHlwZS5CUklER0U6cmV0dXJuIGYuQ2xhc3MuQlJJREdFTk9ERTtjYXNlIGQuTm9kZVR5cGUuRUxMSVBTSVM6cmV0dXJuIGYuQ2xhc3MuRUxMSVBTSVNOT0RFfXRocm93IEVycm9yKCJVbnJlY29nbml6ZWQgbm9kZSB0eXBlOiAiKwpaLm5vZGUudHlwZSk7fWZ1bmN0aW9uIEIoWixiYSl7dmFyIGVhPWYuc2VsZWN0Q2hpbGQoWiwiZyIsZi5DbGFzcy5Ob2RlLlNIQVBFKTtsZXQgY2E9ZC5sYXlvdXQuY29tcHV0ZUNYUG9zaXRpb25PZk5vZGVTaGFwZShiYSk7c3dpdGNoKGJhLm5vZGUudHlwZSl7Y2FzZSBkLk5vZGVUeXBlLk9QOntjb25zdCBrYT1iYS5ub2RlO18uaXNOdW1iZXIoa2EuZnVuY3Rpb25JbnB1dEluZGV4KXx8Xy5pc051bWJlcihrYS5mdW5jdGlvbk91dHB1dEluZGV4KT8oZWE9Zi5zZWxlY3RDaGlsZChlYSwicG9seWdvbiIpLGYucG9zaXRpb25UcmlhbmdsZShlYSxiYS54LGJhLnksYmEuY29yZUJveC53aWR0aCxiYS5jb3JlQm94LmhlaWdodCkpOihlYT1mLnNlbGVjdENoaWxkKGVhLCJlbGxpcHNlIiksZi5wb3NpdGlvbkVsbGlwc2UoZWEsY2EsYmEueSxiYS5jb3JlQm94LndpZHRoLGJhLmNvcmVCb3guaGVpZ2h0KSk7QyhaLGNhLGJhLnksYmEubGFiZWxPZmZzZXQpO2JyZWFrfWNhc2UgZC5Ob2RlVHlwZS5NRVRBOmVhPQplYS5zZWxlY3RBbGwoInJlY3QiKTtiYS5leHBhbmRlZD8oZi5wb3NpdGlvblJlY3QoZWEsYmEueCxiYS55LGJhLndpZHRoLGJhLmhlaWdodCksdChaLGJhKSxDKFosY2EsYmEueSwtYmEuaGVpZ2h0LzIrYmEubGFiZWxIZWlnaHQvMikpOihmLnBvc2l0aW9uUmVjdChlYSxjYSxiYS55LGJhLmNvcmVCb3gud2lkdGgsYmEuY29yZUJveC5oZWlnaHQpLEMoWixjYSxiYS55LDApKTticmVhaztjYXNlIGQuTm9kZVR5cGUuU0VSSUVTOmVhPWYuc2VsZWN0Q2hpbGQoZWEsInVzZSIpO2JhLmV4cGFuZGVkPyhmLnBvc2l0aW9uUmVjdChlYSxiYS54LGJhLnksYmEud2lkdGgsYmEuaGVpZ2h0KSx0KFosYmEpLEMoWixjYSxiYS55LC1iYS5oZWlnaHQvMitiYS5sYWJlbEhlaWdodC8yKSk6KGYucG9zaXRpb25SZWN0KGVhLGNhLGJhLnksYmEuY29yZUJveC53aWR0aCxiYS5jb3JlQm94LmhlaWdodCksQyhaLGNhLGJhLnksYmEubGFiZWxPZmZzZXQpKTticmVhaztjYXNlIGQuTm9kZVR5cGUuQlJJREdFOlo9CmYuc2VsZWN0Q2hpbGQoZWEsInJlY3QiKTtmLnBvc2l0aW9uUmVjdChaLGJhLngsYmEueSxiYS53aWR0aCxiYS5oZWlnaHQpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVucmVjb2duaXplZCBub2RlIHR5cGU6ICIrYmEubm9kZS50eXBlKTt9fWZ1bmN0aW9uIEkoWixiYSxlYSl7bGV0IGNhPWIuZ3JhcGgudXRpbC5lc2NhcGVRdWVyeVNlbGVjdG9yKFopO2lmKCFlYSlyZXR1cm5gdXJsKCMke2NhfSlgO2VhPWQzLnNlbGVjdChlYSk7bGV0IGthPWVhLnNlbGVjdCgiZGVmcyNfZ3JhcGgtZ3JhZGllbnRzIik7a2EuZW1wdHkoKSYmKGthPWVhLmFwcGVuZCgiZGVmcyIpLmF0dHIoImlkIiwiX2dyYXBoLWdyYWRpZW50cyIpKTtsZXQgWT1rYS5zZWxlY3QoImxpbmVhckdyYWRpZW50IyIrY2EpO2lmKFkuZW1wdHkoKSl7WT1rYS5hcHBlbmQoImxpbmVhckdyYWRpZW50IikuYXR0cigiaWQiLFopO1kuc2VsZWN0QWxsKCIqIikucmVtb3ZlKCk7bGV0IEVhPTA7Xy5lYWNoKGJhLHZhPT57bGV0IHhhPQp2YS5jb2xvcjtZLmFwcGVuZCgic3RvcCIpLmF0dHIoIm9mZnNldCIsRWEpLmF0dHIoInN0b3AtY29sb3IiLHhhKTtZLmFwcGVuZCgic3RvcCIpLmF0dHIoIm9mZnNldCIsRWErdmEucHJvcG9ydGlvbikuYXR0cigic3RvcC1jb2xvciIseGEpO0VhKz12YS5wcm9wb3J0aW9ufSl9cmV0dXJuYHVybCgjJHtjYX0pYH1mdW5jdGlvbiBOKFosYmEsZWEsY2Esa2Epe2xldCBZPWQucmVuZGVyLk1ldGFub2RlQ29sb3JzO3N3aXRjaChiYSl7Y2FzZSBsYS5TVFJVQ1RVUkU6cmV0dXJuIGVhLm5vZGUudHlwZT09PWQuTm9kZVR5cGUuTUVUQT8oYmE9ZWEubm9kZS50ZW1wbGF0ZUlkLG51bGw9PT1iYT9ZLlVOS05PV046WS5TVFJVQ1RVUkVfUEFMRVRURShaKGJhKSxjYSkpOmVhLm5vZGUudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTP2NhP1kuRVhQQU5ERURfQ09MT1I6IndoaXRlIjplYS5ub2RlLnR5cGU9PT1kLk5vZGVUeXBlLkJSSURHRT9lYS5zdHJ1Y3R1cmFsPyIjZjBlIjplYS5ub2RlLmluYm91bmQ/CiIjMGVmIjoiI2ZlMCI6Xy5pc051bWJlcihlYS5ub2RlLmZ1bmN0aW9uSW5wdXRJbmRleCk/IiM3OTU1NDgiOl8uaXNOdW1iZXIoZWEubm9kZS5mdW5jdGlvbk91dHB1dEluZGV4KT8iIzAwOTY4OCI6IndoaXRlIjtjYXNlIGxhLkRFVklDRTpyZXR1cm4gbnVsbD09ZWEuZGV2aWNlQ29sb3JzP1kuVU5LTk9XTjpjYT9ZLkVYUEFOREVEX0NPTE9SOkkoImRldmljZS0iK2VhLm5vZGUubmFtZSxlYS5kZXZpY2VDb2xvcnMsa2EpO2Nhc2UgbGEuWExBX0NMVVNURVI6cmV0dXJuIG51bGw9PWVhLnhsYUNsdXN0ZXJDb2xvcnM/WS5VTktOT1dOOmNhP1kuRVhQQU5ERURfQ09MT1I6SSgieGxhLSIrZWEubm9kZS5uYW1lLGVhLnhsYUNsdXN0ZXJDb2xvcnMsa2EpO2Nhc2UgbGEuQ09NUFVURV9USU1FOnJldHVybiBjYT9ZLkVYUEFOREVEX0NPTE9SOmVhLmNvbXB1dGVUaW1lQ29sb3J8fFkuVU5LTk9XTjtjYXNlIGxhLk1FTU9SWTpyZXR1cm4gY2E/WS5FWFBBTkRFRF9DT0xPUjplYS5tZW1vcnlDb2xvcnx8ClkuVU5LTk9XTjtjYXNlIGxhLk9QX0NPTVBBVElCSUxJVFk6cmV0dXJuIG51bGw9PWVhLmNvbXBhdGliaWxpdHlDb2xvcnM/WS5VTktOT1dOOmNhP1kuRVhQQU5ERURfQ09MT1I6SSgib3AtY29tcGF0LSIrZWEubm9kZS5uYW1lLGVhLmNvbXBhdGliaWxpdHlDb2xvcnMsa2EpO2RlZmF1bHQ6dGhyb3cgRXJyb3IoIlVua25vd24gY2FzZSB0byBjb2xvciBub2RlcyBieSIpO319ZnVuY3Rpb24gTyhaLGJhLGVhLGNhKXtjYT1jYXx8Zi5DbGFzcy5Ob2RlLlNIQVBFO2xldCBrYT1lYS5pc05vZGVTZWxlY3RlZChiYS5ub2RlLm5hbWUpLFk9YmEuaXNJbkV4dHJhY3R8fGJhLmlzT3V0RXh0cmFjdHx8YmEuaXNMaWJyYXJ5RnVuY3Rpb24sRWE9YmEuZXhwYW5kZWQmJmNhIT09Zi5DbGFzcy5Bbm5vdGF0aW9uLk5PREUsdmE9YmEuaXNGYWRlZE91dDtaLmNsYXNzZWQoImhpZ2hsaWdodGVkIixlYS5pc05vZGVIaWdobGlnaHRlZChiYS5ub2RlLm5hbWUpKTtaLmNsYXNzZWQoInNlbGVjdGVkIixrYSk7ClouY2xhc3NlZCgiZXh0cmFjdCIsWSk7Wi5jbGFzc2VkKCJleHBhbmRlZCIsRWEpO1ouY2xhc3NlZCgiZmFkZWQiLHZhKTtaPVouc2VsZWN0KCIuIitjYSsiIC4iK2YuQ2xhc3MuTm9kZS5DT0xPUl9UQVJHRVQpO2JhPU4oZWEudGVtcGxhdGVJbmRleCxsYVtlYS5jb2xvckJ5LnRvVXBwZXJDYXNlKCldLGJhLEVhLGVhLmdldEdyYXBoU3ZnUm9vdCgpKTtaLnN0eWxlKCJmaWxsIixiYSk7Wi5zdHlsZSgic3Ryb2tlIixrYT9udWxsOkgoYmEpKX1mdW5jdGlvbiBIKFope3JldHVybiJ1cmwiPT09Wi5zdWJzdHJpbmcoMCwzKT9kLnJlbmRlci5NZXRhbm9kZUNvbG9ycy5HUkFESUVOVF9PVVRMSU5FOmQzLnJnYihaKS5kYXJrZXIoKS50b1N0cmluZygpfWZ1bmN0aW9uIEsoWixiYSl7bGV0IGVhPVtdO1o9YmEuZ2V0Tm9kZUJ5TmFtZShaKTtpZihaIGluc3RhbmNlb2YgYi5ncmFwaC5PcE5vZGVJbXBsKXJldHVybltaXS5jb25jYXQoWi5pbkVtYmVkZGluZ3MpO1o9Wi5tZXRhZ3JhcGgubm9kZXMoKTsKXy5lYWNoKFosZnVuY3Rpb24oY2Epe2VhPWVhLmNvbmNhdChLKGNhLGJhKSl9KTtyZXR1cm4gZWF9ZnVuY3Rpb24gTShaLGJhLGVhLGNhKXtpZihjYVtlYS5uYW1lXSlyZXR1cm4gY2E7Y2FbZWEubmFtZV09ITA7dmFyIGthPWVhLmlucHV0cztsZXQgWT1YKGJhLGVhKTtkMy5zZWxlY3QoWikuc2VsZWN0KGAubm9kZVtkYXRhLW5hbWU9IiR7WS5uYW1lfSJdYCkuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0IiwhMCk7bGV0IEVhPXt9O18uZWFjaChrYSxmdW5jdGlvbihBYSl7QWE9YmEuZ2V0Tm9kZUJ5TmFtZShBYS5uYW1lKTtpZih2b2lkIDAhPT1BYSl7QWEgaW5zdGFuY2VvZiBkLk1ldGFub2RlSW1wbCYmKEFhPWIuZ3JhcGguZ2V0U3RyaWN0TmFtZShBYS5uYW1lKSxBYT1iYS5nZXROb2RlQnlOYW1lKEFhKSk7dmFyIEZhPVgoYmEsQWEpLHlhPUVhW0ZhLm5hbWVdO3lhP3lhLm9wTm9kZXMucHVzaChBYSk6RWFbRmEubmFtZV09e3Zpc2libGVQYXJlbnQ6RmEsb3BOb2RlczpbQWFdfX19KTsKbGV0IHZhPXt9LHhhPVtZXTt2YVtZLm5hbWVdPXt0cmFjZWQ6ITEsaW5kZXg6MCxjb25uZWN0aW9uRW5kcG9pbnRzOltdfTtlYT1ZO2ZvcihrYT0xO2VhLm5hbWUhPT1iLmdyYXBoLlJPT1RfTkFNRTtrYSsrKWVhPWVhLnBhcmVudE5vZGUsdmFbZWEubmFtZV09e3RyYWNlZDohMSxpbmRleDprYSxjb25uZWN0aW9uRW5kcG9pbnRzOltdfSx4YVtrYV09ZWE7Xy5mb3JPd24oRWEsZnVuY3Rpb24oQWEpe2xldCBGYT1BYS52aXNpYmxlUGFyZW50O18uZWFjaChBYS5vcE5vZGVzLGZ1bmN0aW9uKHlhKXtjYT1NKFosYmEseWEsY2EpfSk7RmEubmFtZSE9PVkubmFtZSYmTChaLEZhLHZhLHhhKX0pO3JldHVybiBjYX1mdW5jdGlvbiBMKFosYmEsZWEsY2Epe3ZhciBrYT1iYSxZPWJhO2ZvcihiYT1bXTshZWFba2EubmFtZV07KVkubmFtZSE9PWthLm5hbWUmJmJhLnB1c2goW1ksa2FdKSxZPWthLGthPWthLnBhcmVudE5vZGU7ZWE9ZWFba2EubmFtZV0uaW5kZXg7bGV0IEVhPWNhW01hdGgubWF4KGVhLQoxLDApXS5uYW1lO1k9a2E9WS5uYW1lO2NvbnN0IHZhPWQzLnNlbGVjdChaKTt2YS5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7WX0tLSR7RWF9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApO18uZWFjaChiYSxmdW5jdGlvbih4YSl7dmEuc2VsZWN0QWxsKGBbZGF0YS1lZGdlPSIke3hhWzBdLm5hbWV9LS0ke0VhfWArYH5+JHt4YVsxXS5uYW1lfX5+T1VUIl1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfSk7Zm9yKFo9MTtaPGVhO1orKyl2YS5zZWxlY3RBbGwoYFtkYXRhLWVkZ2U9IiR7a2F9fn4ke2NhW1pdLm5hbWV9YCtgfn5JTi0tJHtjYVtaLTFdLm5hbWV9Il1gKS5jbGFzc2VkKCJpbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfWZ1bmN0aW9uIFEoWixiYSl7bGV0IGVhPXt9O18uZWFjaChiYSxmdW5jdGlvbihjYSl7Y2E9Wi5nZXROb2RlQnlOYW1lKGNhKTtjYT1YKFosY2EpO2VhW2NhLm5hbWVdPWNhfSk7cmV0dXJuIGVhfWZ1bmN0aW9uIFQoWiwKYmEpe18uZm9yT3duKGJhLGZ1bmN0aW9uKGVhKXtmb3IoO2VhLm5hbWUhPT1iLmdyYXBoLlJPT1RfTkFNRTspe2NvbnN0IGNhPWQzLnNlbGVjdChaKS5zZWxlY3QoYC5ub2RlW2RhdGEtbmFtZT0iJHtlYS5uYW1lfSJdYCk7IWNhLm5vZGVzKCkubGVuZ3RofHxjYS5jbGFzc2VkKCJpbnB1dC1oaWdobGlnaHQiKXx8Y2EuY2xhc3NlZCgic2VsZWN0ZWQiKXx8Y2EuY2xhc3NlZCgib3AiKXx8Y2EuY2xhc3NlZCgiaW5wdXQtcGFyZW50IiwhMCk7ZWE9ZWEucGFyZW50Tm9kZX19KX1mdW5jdGlvbiBYKFosYmEpe2xldCBlYT0hMSxjYT1iYTtmb3IoOyFlYTspaWYoYmE9Y2EsY2E9YmEucGFyZW50Tm9kZSx2b2lkIDA9PT1jYSllYT0hMDtlbHNle2xldCBrYT1aLmdldFJlbmRlck5vZGVCeU5hbWUoY2EubmFtZSk7a2EmJihrYS5leHBhbmRlZHx8Y2EgaW5zdGFuY2VvZiBkLk9wTm9kZUltcGwpJiYoZWE9ITApfXJldHVybiBiYX1oLmJ1aWxkR3JvdXA9ZnVuY3Rpb24oWixiYSxlYSl7Wj1mLnNlbGVjdE9yQ3JlYXRlQ2hpbGQoWiwKImciLGYuQ2xhc3MuTm9kZS5DT05UQUlORVIpLnNlbGVjdEFsbChmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoaWxkTm9kZXN9KS5kYXRhKGJhLGNhPT5jYS5ub2RlLm5hbWUrIjoiK2NhLm5vZGUudHlwZSk7Wi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImRhdGEtbmFtZSIsY2E9PmNhLm5vZGUubmFtZSkuZWFjaChmdW5jdGlvbihjYSl7bGV0IGthPWQzLnNlbGVjdCh0aGlzKTtlYS5hZGROb2RlR3JvdXAoY2Eubm9kZS5uYW1lLGthKX0pLm1lcmdlKFopLmF0dHIoImNsYXNzIixjYT0+Zi5DbGFzcy5Ob2RlLkdST1VQKyIgIitEKGNhKSkuZWFjaChmdW5jdGlvbihjYSl7bGV0IGthPWQzLnNlbGVjdCh0aGlzKTt2YXIgWT1mLnNlbGVjdE9yQ3JlYXRlQ2hpbGQoa2EsImciLGYuQ2xhc3MuQW5ub3RhdGlvbi5JTkJPWCk7Zi5hbm5vdGF0aW9uLmJ1aWxkR3JvdXAoWSxjYS5pbkFubm90YXRpb25zLGNhLGVhKTtZPWYuc2VsZWN0T3JDcmVhdGVDaGlsZChrYSwiZyIsZi5DbGFzcy5Bbm5vdGF0aW9uLk9VVEJPWCk7CmYuYW5ub3RhdGlvbi5idWlsZEdyb3VwKFksY2Eub3V0QW5ub3RhdGlvbnMsY2EsZWEpO1k9RihrYSxjYSxmLkNsYXNzLk5vZGUuU0hBUEUpO2NhLm5vZGUuaXNHcm91cE5vZGUmJmwoWSxjYSxlYSk7cChZLGNhLGVhKTtrKGthLGNhLGVhKTtZPUEoa2EsY2EsZWEpO3AoWSxjYSxlYSxjYS5ub2RlLnR5cGU9PT1kLk5vZGVUeXBlLk1FVEEpO08oa2EsY2EsZWEpO0Ioa2EsY2EpfSk7Wi5leGl0KCkuZWFjaChmdW5jdGlvbihjYSl7ZWEucmVtb3ZlTm9kZUdyb3VwKGNhLm5vZGUubmFtZSk7bGV0IGthPWQzLnNlbGVjdCh0aGlzKTswPGNhLmluQW5ub3RhdGlvbnMubGlzdC5sZW5ndGgmJmthLnNlbGVjdCgiLiIrZi5DbGFzcy5Bbm5vdGF0aW9uLklOQk9YKS5zZWxlY3RBbGwoIi4iK2YuQ2xhc3MuQW5ub3RhdGlvbi5HUk9VUCkuZWFjaChZPT57ZWEucmVtb3ZlQW5ub3RhdGlvbkdyb3VwKFksY2EpfSk7MDxjYS5vdXRBbm5vdGF0aW9ucy5saXN0Lmxlbmd0aCYma2Euc2VsZWN0KCIuIitmLkNsYXNzLkFubm90YXRpb24uT1VUQk9YKS5zZWxlY3RBbGwoIi4iKwpmLkNsYXNzLkFubm90YXRpb24uR1JPVVApLmVhY2goWT0+e2VhLnJlbW92ZUFubm90YXRpb25Hcm91cChZLGNhKX0pfSkucmVtb3ZlKCk7cmV0dXJuIFp9O2guZ2V0Q29udGV4dE1lbnU9bTtoLmNhbkJlSW5TZXJpZXM9bjtoLmdldFNlcmllc05hbWU9cTtoLmdldEdyb3VwU2V0dGluZ0xhYmVsPXg7aC5lbmZvcmNlTGFiZWxXaWR0aD15O2xldCBhYT1udWxsO2guYnVpbGRTaGFwZT1GO2gubm9kZUNsYXNzPUQ7bGV0IGxhOyhmdW5jdGlvbihaKXtaW1ouU1RSVUNUVVJFPTBdPSJTVFJVQ1RVUkUiO1pbWi5ERVZJQ0U9MV09IkRFVklDRSI7WltaLlhMQV9DTFVTVEVSPTJdPSJYTEFfQ0xVU1RFUiI7WltaLkNPTVBVVEVfVElNRT0zXT0iQ09NUFVURV9USU1FIjtaW1ouTUVNT1JZPTRdPSJNRU1PUlkiO1pbWi5PUF9DT01QQVRJQklMSVRZPTVdPSJPUF9DT01QQVRJQklMSVRZIn0pKGxhPWguQ29sb3JCeXx8KGguQ29sb3JCeT17fSkpO2gucmVtb3ZlR3JhZGllbnREZWZpbml0aW9ucz1mdW5jdGlvbihaKXtkMy5zZWxlY3QoWikuc2VsZWN0KCJkZWZzI19ncmFwaC1ncmFkaWVudHMiKS5yZW1vdmUoKX07CmguZ2V0RmlsbEZvck5vZGU9TjtoLnN0eWxpemU9TztoLmdldFN0cm9rZUZvckZpbGw9SDtoLnVwZGF0ZUlucHV0VHJhY2U9ZnVuY3Rpb24oWixiYSxlYSxjYSl7Y29uc3Qga2E9ZDMuc2VsZWN0KFopO2thLnNlbGVjdEFsbCgiLmlucHV0LWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWhpZ2hsaWdodCIsITEpO2thLnNlbGVjdEFsbCgiLm5vbi1pbnB1dCIpLmNsYXNzZWQoIm5vbi1pbnB1dCIsITEpO2thLnNlbGVjdEFsbCgiLmlucHV0LXBhcmVudCIpLmNsYXNzZWQoImlucHV0LXBhcmVudCIsITEpO2thLnNlbGVjdEFsbCgiLmlucHV0LWNoaWxkIikuY2xhc3NlZCgiaW5wdXQtY2hpbGQiLCExKTtrYS5zZWxlY3RBbGwoIi5pbnB1dC1lZGdlLWhpZ2hsaWdodCIpLmNsYXNzZWQoImlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMSk7a2Euc2VsZWN0QWxsKCIubm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IikuY2xhc3NlZCgibm9uLWlucHV0LWVkZ2UtaGlnaGxpZ2h0IiwhMSk7a2Euc2VsZWN0QWxsKCIuaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIikuY2xhc3NlZCgiaW5wdXQtaGlnaGxpZ2h0LXNlbGVjdGVkIiwKITEpO2lmKGJhJiZjYSYmZWEpe2VhPUsoZWEsYmEpO3ZhciBZPXt9O18uZWFjaChlYSxmdW5jdGlvbihFYSl7WT1NKFosYmEsRWEsWSl9KTtlYT1PYmplY3Qua2V5cyhZKTtlYT1RKGJhLGVhKTtUKFosZWEpO2thLnNlbGVjdEFsbCgiZy5ub2RlOm5vdCguc2VsZWN0ZWQpOm5vdCguaW5wdXQtaGlnaGxpZ2h0KTpub3QoLmlucHV0LXBhcmVudCk6bm90KC5pbnB1dC1jaGlsZHJlbikiKS5jbGFzc2VkKCJub24taW5wdXQiLCEwKS5lYWNoKGZ1bmN0aW9uKEVhKXtrYS5zZWxlY3RBbGwoYFtkYXRhLW5hbWU9IiR7RWEubm9kZS5uYW1lfSJdYCkuY2xhc3NlZCgibm9uLWlucHV0IiwhMCl9KTtrYS5zZWxlY3RBbGwoImcuZWRnZTpub3QoLmlucHV0LWVkZ2UtaGlnaGxpZ2h0KSIpLmNsYXNzZWQoIm5vbi1pbnB1dC1lZGdlLWhpZ2hsaWdodCIsITApfX07aC5nZXRWaXNpYmxlUGFyZW50PVh9KShmLm5vZGV8fChmLm5vZGU9e30pKX0pKGQuc2NlbmV8fChkLnNjZW5lPXt9KSl9KShiLmdyYXBofHwKKGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vb3AuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7Y2xhc3MgaHtpc05vdFRwdU9wKGspe3JldHVybi0xIT1rLnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJjcHU6Iil8fC0xIT1rLnRvTG93ZXJDYXNlKCkuc2VhcmNoKCJncHU6Iik/ITA6LTE9PWsudG9Mb3dlckNhc2UoKS5zZWFyY2goInRwdSIpfW9wVmFsaWQoayl7cmV0dXJuIDA9PWsubmFtZS5zZWFyY2goZC5GVU5DVElPTl9MSUJSQVJZX05PREVfUFJFRklYKXx8IWsub3B8fGsuZGV2aWNlJiZ0aGlzLmlzTm90VHB1T3Aoay5kZXZpY2UpfHxrLmRldmljZSYmLTEhPWsuZGV2aWNlLnNlYXJjaCgiVFBVX1NZU1RFTSIpPyEwOl8uaW5jbHVkZXMoaC5XSElURUxJU1Qsay5vcCl9fWguV0hJVEVMSVNUPSJBYnMgQWNvcyBBY29zaCBBZGQgQWRkTiBBZGp1c3RDb250cmFzdHYyIEFkanVzdEh1ZSBBZGp1c3RTYXR1cmF0aW9uIEFsbCBBbmdsZSBBbnkgQXBwcm94aW1hdGVFcXVhbCBBcmdNYXggQXJnTWluIEFzaW4gQXNpbmggQXNzZXJ0IEFzc2lnbkFkZFZhcmlhYmxlT3AgQXNzaWduU3ViVmFyaWFibGVPcCBBc3NpZ25WYXJpYWJsZU9wIEF0YW4gQXRhbjIgQXRhbmggQXZnUG9vbCBBdmdQb29sM0QgQXZnUG9vbDNER3JhZCBBdmdQb29sR3JhZCBCYXRjaE1hdE11bCBCYXRjaFRvU3BhY2UgQmF0Y2hUb1NwYWNlTkQgQmlhc0FkZCBCaWFzQWRkR3JhZCBCaWFzQWRkVjEgQml0Y2FzdCBCaXR3aXNlQW5kIEJpdHdpc2VPciBCaXR3aXNlWG9yIEJyb2FkY2FzdEFyZ3MgQnJvYWRjYXN0R3JhZGllbnRBcmdzIEJ1Y2tldGl6ZSBDYXN0IENlaWwgQ2hlY2tOdW1lcmljcyBDaG9sZXNreSBDbGlwQnlWYWx1ZSBDb21wbGV4IENvbXBsZXhBYnMgQ29uY2F0IENvbmNhdE9mZnNldCBDb25jYXRWMiBDb25qIENvbmp1Z2F0ZVRyYW5zcG9zZSBDb25zdCBDb250cm9sVHJpZ2dlciBDb252MkQgQ29udjJEQmFja3Byb3BGaWx0ZXIgQ29udjJEQmFja3Byb3BJbnB1dCBDb252M0QgQ29udjNEQmFja3Byb3BGaWx0ZXJWMiBDb252M0RCYWNrcHJvcElucHV0VjIgQ29zIENvc2ggQ3Jvc3MgQ3Jvc3NSZXBsaWNhU3VtIEN1bXByb2QgQ3Vtc3VtIERlcHRoVG9TcGFjZSBEZXB0aHdpc2VDb252MmROYXRpdmUgRGVwdGh3aXNlQ29udjJkTmF0aXZlQmFja3Byb3BGaWx0ZXIgRGVwdGh3aXNlQ29udjJkTmF0aXZlQmFja3Byb3BJbnB1dCBEaWFnIERpYWdQYXJ0IERpZ2FtbWEgRGl2IER5bmFtaWNTdGl0Y2ggRWx1IEVsdUdyYWQgRW1wdHkgRXF1YWwgRXJmIEVyZmMgRXhwIEV4cGFuZERpbXMgRXhwbTEgRXh0cmFjdEltYWdlUGF0Y2hlcyBGRlQgRkZUMkQgRkZUM0QgRmFrZVF1YW50V2l0aE1pbk1heEFyZ3MgRmFrZVF1YW50V2l0aE1pbk1heEFyZ3NHcmFkaWVudCBGYWtlUXVhbnRXaXRoTWluTWF4VmFycyBGYWtlUXVhbnRXaXRoTWluTWF4VmFyc0dyYWRpZW50IEZpbGwgRmxvb3IgRmxvb3JEaXYgRmxvb3JNb2QgRnVzZWRCYXRjaE5vcm0gRnVzZWRCYXRjaE5vcm1HcmFkIEZ1c2VkQmF0Y2hOb3JtR3JhZFYyIEZ1c2VkQmF0Y2hOb3JtVjIgR2F0aGVyIEdhdGhlck5kIEdhdGhlclYyIEdldEl0ZW0gR3JlYXRlciBHcmVhdGVyRXF1YWwgSFNWVG9SR0IgSUZGVCBJRkZUMkQgSUZGVDNEIElSRkZUIElSRkZUMkQgSVJGRlQzRCBJZGVudGl0eSBJZGVudGl0eU4gSWYgSW1hZyBJbmZlZWREZXF1ZXVlIEluZmVlZERlcXVldWVUdXBsZSBJbnBsYWNlQWRkIElucGxhY2VVcGRhdGUgSW52IEludmVydCBJbnZlcnRQZXJtdXRhdGlvbiBJc0Zpbml0ZSBJc0luZiBJc05hbiBMMkxvc3MgTFJOIExSTkdyYWQgTGVmdFNoaWZ0IExlc3MgTGVzc0VxdWFsIExnYW1tYSBMaW5TcGFjZSBMaXN0RGlmZiBMb2cgTG9nMXAgTG9nU29mdG1heCBMb2dpY2FsQW5kIExvZ2ljYWxOb3QgTG9naWNhbE9yIE1hdE11bCBNYXRyaXhCYW5kUGFydCBNYXRyaXhEaWFnIE1hdHJpeERpYWdQYXJ0IE1hdHJpeFNldERpYWcgTWF0cml4VHJpYW5ndWxhclNvbHZlIE1heCBNYXhQb29sIE1heFBvb2wzRCBNYXhQb29sM0RHcmFkIE1heFBvb2wzREdyYWRHcmFkIE1heFBvb2xHcmFkIE1heFBvb2xHcmFkR3JhZCBNYXhQb29sR3JhZEdyYWRWMiBNYXhQb29sR3JhZFYyIE1heFBvb2xWMiBNYXhpbXVtIE1lYW4gTWluIE1pbmltdW0gTWlycm9yUGFkIE1vZCBNdWwgTXVsdGlub21pYWwgTmVnIE5vT3AgTm9uTWF4U3VwcHJlc3Npb25WNCBOb3RFcXVhbCBPbmVIb3QgT25lc0xpa2UgT3V0ZmVlZEVucXVldWUgT3V0ZmVlZEVucXVldWVUdXBsZSBQYWNrIFBhZCBQYWRWMiBQYXJhbGxlbER5bmFtaWNTdGl0Y2ggUGxhY2Vob2xkZXJXaXRoRGVmYXVsdCBQb3cgUHJldmVudEdyYWRpZW50IFByb2QgUXIgUXVhbnRpemVBbmREZXF1YW50aXplVjIgUXVhbnRpemVBbmREZXF1YW50aXplVjMgUkZGVCBSRkZUMkQgUkZGVDNEIFJHQlRvSFNWIFJhbmRvbVNodWZmbGUgUmFuZG9tU3RhbmRhcmROb3JtYWwgUmFuZG9tVW5pZm9ybSBSYW5kb21Vbmlmb3JtSW50IFJhbmdlIFJhbmsgUmVhZFZhcmlhYmxlT3AgUmVhbCBSZWFsRGl2IFJlY2lwcm9jYWwgUmVjaXByb2NhbEdyYWQgUmVjdlRQVUVtYmVkZGluZ0FjdGl2YXRpb25zIFJlbHUgUmVsdTYgUmVsdTZHcmFkIFJlbHVHcmFkIFJlc2hhcGUgUmVzaXplQmlsaW5lYXIgUmVzaXplQmlsaW5lYXJHcmFkIFJlc291cmNlQXBwbHlBZGFNYXggUmVzb3VyY2VBcHBseUFkYWRlbHRhIFJlc291cmNlQXBwbHlBZGFncmFkIFJlc291cmNlQXBwbHlBZGFncmFkREEgUmVzb3VyY2VBcHBseUFkYW0gUmVzb3VyY2VBcHBseUFkZFNpZ24gUmVzb3VyY2VBcHBseUNlbnRlcmVkUk1TUHJvcCBSZXNvdXJjZUFwcGx5RnRybCBSZXNvdXJjZUFwcGx5RnRybFYyIFJlc291cmNlQXBwbHlHcmFkaWVudERlc2NlbnQgUmVzb3VyY2VBcHBseU1vbWVudHVtIFJlc291cmNlQXBwbHlQb3dlclNpZ24gUmVzb3VyY2VBcHBseVByb3hpbWFsQWRhZ3JhZCBSZXNvdXJjZUFwcGx5UHJveGltYWxHcmFkaWVudERlc2NlbnQgUmVzb3VyY2VBcHBseVJNU1Byb3AgUmVzb3VyY2VHYXRoZXIgUmVzb3VyY2VTY2F0dGVyQWRkIFJlc291cmNlU2NhdHRlckRpdiBSZXNvdXJjZVNjYXR0ZXJNYXggUmVzb3VyY2VTY2F0dGVyTWluIFJlc291cmNlU2NhdHRlck11bCBSZXNvdXJjZVNjYXR0ZXJOZEFkZCBSZXNvdXJjZVNjYXR0ZXJOZFVwZGF0ZSBSZXNvdXJjZVNjYXR0ZXJTdWIgUmVzb3VyY2VTY2F0dGVyVXBkYXRlIFJlc291cmNlU3RyaWRlZFNsaWNlQXNzaWduIFJldmVyc2UgUmV2ZXJzZVNlcXVlbmNlIFJldmVyc2VWMiBSaWdodFNoaWZ0IFJpbnQgUm91bmQgUnNxcnQgUnNxcnRHcmFkIFNjYXR0ZXJOZCBTZWxlY3QgU2VsdSBTZWx1R3JhZCBTZW5kVFBVRW1iZWRkaW5nR3JhZGllbnRzIFNoYXBlIFNoYXBlTiBTaWdtb2lkIFNpZ21vaWRHcmFkIFNpZ24gU2luIFNpbmggU2l6ZSBTbGljZSBTbmFwc2hvdCBTb2Z0bWF4IFNvZnRtYXhDcm9zc0VudHJvcHlXaXRoTG9naXRzIFNvZnRwbHVzIFNvZnRwbHVzR3JhZCBTb2Z0c2lnbiBTb2Z0c2lnbkdyYWQgU3BhY2VUb0JhdGNoIFNwYWNlVG9CYXRjaE5EIFNwYWNlVG9EZXB0aCBTcGFyc2VNYXRNdWwgU3BhcnNlU29mdG1heENyb3NzRW50cm9weVdpdGhMb2dpdHMgU3BhcnNlVG9EZW5zZSBTcGxpdCBTcGxpdFYgU3FydCBTcXJ0R3JhZCBTcXVhcmUgU3F1YXJlZERpZmZlcmVuY2UgU3F1ZWV6ZSBTdGFja0Nsb3NlVjIgU3RhY2tQb3BWMiBTdGFja1B1c2hWMiBTdGFja1YyIFN0YXRlbGVzc0lmIFN0YXRlbGVzc1JhbmRvbU5vcm1hbCBTdGF0ZWxlc3NSYW5kb21Vbmlmb3JtIFN0YXRlbGVzc1RydW5jYXRlZE5vcm1hbCBTdGF0ZWxlc3NXaGlsZSBTdG9wR3JhZGllbnQgU3RyaWRlZFNsaWNlIFN0cmlkZWRTbGljZUdyYWQgU3ViIFN1bSBTeW1ib2xpY0dyYWRpZW50IFRQVUVtYmVkZGluZ0FjdGl2YXRpb25zIFRhbiBUYW5oIFRhbmhHcmFkIFRlbnNvckFycmF5Q2xvc2VWMyBUZW5zb3JBcnJheUNvbmNhdFYzIFRlbnNvckFycmF5R2F0aGVyVjMgVGVuc29yQXJyYXlHcmFkVjMgVGVuc29yQXJyYXlSZWFkVjMgVGVuc29yQXJyYXlTY2F0dGVyVjMgVGVuc29yQXJyYXlTaXplVjMgVGVuc29yQXJyYXlTcGxpdFYzIFRlbnNvckFycmF5VjMgVGVuc29yQXJyYXlXcml0ZVYzIFRpbGUgVG9wS1YyIFRyYW5zcG9zZSBUcnVuY2F0ZURpdiBUcnVuY2F0ZU1vZCBUcnVuY2F0ZWROb3JtYWwgVW5wYWNrIFVuc29ydGVkU2VnbWVudE1heCBVbnNvcnRlZFNlZ21lbnRNaW4gVW5zb3J0ZWRTZWdtZW50UHJvZCBVbnNvcnRlZFNlZ21lbnRTdW0gVmFySXNJbml0aWFsaXplZE9wIFZhcmlhYmxlU2hhcGUgV2hpbGUgWGxhRHluYW1pY1VwZGF0ZVNsaWNlIFhsYUhvc3RDb21wdXRlIFhsYUlmIFhsYVJlY3YgWGxhUmVkdWNlV2luZG93IFhsYVNlbmQgWGxhU29ydCBYbGFXaGlsZSBaZXJvc0xpa2UgRW50ZXIgRXhpdCBMb29wQ29uZCBNZXJnZSBOZXh0SXRlcmF0aW9uIFN3aXRjaCBfQXJnIF9QYXJhbGxlbENvbmNhdFVwZGF0ZSBfUmV0dmFsIF9UUFVDb21waWxlIF9UUFVFeGVjdXRlIFRQVUNvbXBpbGF0aW9uUmVzdWx0IFRQVVJlcGxpY2F0ZWRJbnB1dCBUUFVSZXBsaWNhdGVkT3V0cHV0IFRQVVJlcGxpY2F0ZU1ldGFkYXRhIE1lcmdlVjJDaGVja3BvaW50cyBSZXN0b3JlVjIgU2F2ZVYyIEFib3J0IEFzc2VydCBBc3NpZ24gUGxhY2Vob2xkZXIgUGxhY2Vob2xkZXJWMiBTaGFyZGVkRmlsZW5hbWUgU3RyaW5nSm9pbiBWYXJpYWJsZSBWYXJpYWJsZVYyIFZhckhhbmRsZU9wIEF1ZGlvU3VtbWFyeSBBdWRpb1N1bW1hcnlWMiBEZWJ1Z051bWVyaWNTdW1tYXJ5IEhpc3RvZ3JhbVN1bW1hcnkgSW1hZ2VTdW1tYXJ5IE1lcmdlU3VtbWFyeSBTY2FsYXJTdW1tYXJ5IFN0YXRzQWdncmVnYXRvclN1bW1hcnkiLnNwbGl0KCIgIik7CmYuVHB1Q29tcGF0aWJpbGl0eVByb3ZpZGVyPWg7Zi5jaGVja09wc0ZvckNvbXBhdGliaWxpdHk9ZnVuY3Rpb24oayx0KXtpZihudWxsPT09dCl0aHJvdyBFcnJvcigiQ29tcGF0aWJpbGl0eSBwcm92aWRlciByZXF1aXJlZCwgYnV0IGdvdDogIit0KTtfLmVhY2goay5ub2RlcyxsPT57bC5jb21wYXRpYmxlPXQub3BWYWxpZChsKTtfLmVhY2gobC5pbkVtYmVkZGluZ3MscD0+e3AuY29tcGF0aWJsZT10Lm9wVmFsaWQocCl9KTtfLmVhY2gobC5vdXRFbWJlZGRpbmdzLHA9PntwLmNvbXBhdGlibGU9dC5vcFZhbGlkKHApfSl9KX19KShkLm9wfHwoZC5vcD17fSkpfSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vcGFyc2VyLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgodSl7aWYoInRydWUiPT09dSlyZXR1cm4hMDtpZigiZmFsc2UiPT09dSlyZXR1cm4hMTtpZignIic9PT11WzBdKXJldHVybiB1LnN1YnN0cmluZygxLHUubGVuZ3RoLTEpO2xldCB4PXBhcnNlRmxvYXQodSk7cmV0dXJuIGlzTmFOKHgpP3U6eH1mdW5jdGlvbiBrKHUpe3JldHVybiBuZXcgUHJvbWlzZSgoeCxBKT0+e2ZldGNoKHUpLnRoZW4oeT0+e3kub2s/eS5hcnJheUJ1ZmZlcigpLnRoZW4oeCxBKTp5LnRleHQoKS50aGVuKEEsQSl9KX0pfWZ1bmN0aW9uIHQodSx4LEE9MUU2LHk9IlxuIil7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHcsQyl7ZnVuY3Rpb24gRihELEIsSSl7dmFyIE49ST49dS5ieXRlTGVuZ3RoO0I9Qi5zcGxpdCh5KTtCWzBdPUQrQlswXTtjb25zdCBPPU4/IiI6Qi5wb3AoKTtmb3IobGV0IEggb2YgQil0cnl7eChIKX1jYXRjaChLKXtDKEspO3JldHVybn1OP3coITApOgooRD1uZXcgQmxvYihbdS5zbGljZShJLEkrQSldKSxOPW5ldyBGaWxlUmVhZGVyLE4ub25sb2FkPWZ1bmN0aW9uKEgpe0YoTyxILnRhcmdldC5yZXN1bHQsSStBKX0sTi5yZWFkQXNUZXh0KEQpKX1GKCIiLCIiLDApfSl9ZnVuY3Rpb24gbCh1KXtyZXR1cm4gbSh1LG4pfWZ1bmN0aW9uIHAodSl7cmV0dXJuIG0odSxxKS50aGVuKHg9Pnguc3RlcF9zdGF0cyl9ZnVuY3Rpb24gbSh1LHgpe2Z1bmN0aW9uIEEoQil7bGV0IEk9Qi5pbmRleE9mKCI6IiksTj1CLnN1YnN0cmluZygwLEkpLnRyaW0oKTtCPWgoQi5zdWJzdHJpbmcoSSsyKS50cmltKCkpO3JldHVybntuYW1lOk4sdmFsdWU6Qn19ZnVuY3Rpb24geShCLEksTixPKXtsZXQgSD1CW0ldO251bGw9PUg/QltJXT1PLmpvaW4oIi4iKWluIHg/W05dOk46QXJyYXkuaXNBcnJheShIKT9ILnB1c2goTik6QltJXT1bSCxOXX1sZXQgdz17fSxDPVtdLEY9W10sRD13O3JldHVybiB0KHUsZnVuY3Rpb24oQil7aWYoQilzd2l0Y2goQj1CLnRyaW0oKSwKQltCLmxlbmd0aC0xXSl7Y2FzZSAieyI6Qj1CLnN1YnN0cmluZygwLEIubGVuZ3RoLTIpLnRyaW0oKTtsZXQgST17fTtDLnB1c2goRCk7Ri5wdXNoKEIpO3koRCxCLEksRik7RD1JO2JyZWFrO2Nhc2UgIn0iOkQ9Qy5wb3AoKTtGLnBvcCgpO2JyZWFrO2RlZmF1bHQ6Qj1BKEIpLHkoRCxCLm5hbWUsQi52YWx1ZSxGLmNvbmNhdChCLm5hbWUpKX19KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHd9KX1mLmZldGNoUGJUeHQ9aztmLmZldGNoQW5kUGFyc2VNZXRhZGF0YT1mdW5jdGlvbih1LHgpe3JldHVybiBiLmdyYXBoLnV0aWwucnVuVGFzaygoKT0+bnVsbD09dT9Qcm9taXNlLnJlc29sdmUobnVsbCk6ayh1KSx4KS50aGVuKEE9PmIuZ3JhcGgudXRpbC5ydW5Bc3luY1Byb21pc2VUYXNrKCJQYXJzaW5nIG1ldGFkYXRhLnBidHh0Iiw2MCwoKT0+bnVsbCE9QT9wKEEpOlByb21pc2UucmVzb2x2ZShudWxsKSx4KSl9O2YuZmV0Y2hBbmRQYXJzZUdyYXBoRGF0YT1mdW5jdGlvbih1LHgsQSl7cmV0dXJuIGIuZ3JhcGgudXRpbC5ydW5Bc3luY1Byb21pc2VUYXNrKCJSZWFkaW5nIGdyYXBoIHBidHh0IiwKNDAsKCk9Png/bmV3IFByb21pc2UoZnVuY3Rpb24oeSx3KXtsZXQgQz1uZXcgRmlsZVJlYWRlcjtDLm9ubG9hZD0oKT0+eShDLnJlc3VsdCk7Qy5vbmVycm9yPSgpPT53KEMuZXJyb3IpO0MucmVhZEFzQXJyYXlCdWZmZXIoeCl9KTprKHUpLEEpLnRoZW4oeT0+Yi5ncmFwaC51dGlsLnJ1bkFzeW5jUHJvbWlzZVRhc2soIlBhcnNpbmcgZ3JhcGgucGJ0eHQiLDYwLCgpPT5sKHkpLEEpKX07Zi5zdHJlYW1QYXJzZT10O2NvbnN0IG49eyJsaWJyYXJ5LmZ1bmN0aW9uIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuaW5wdXQiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5iIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuZiI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LmZ1bmMiOiEwLAoibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLmxpc3QuaSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnMiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUubGlzdC5zaGFwZSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnNoYXBlLmRpbSI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnRlbnNvciI6ITAsImxpYnJhcnkuZnVuY3Rpb24ubm9kZV9kZWYuYXR0ci52YWx1ZS5saXN0LnR5cGUiOiEwLCJsaWJyYXJ5LmZ1bmN0aW9uLm5vZGVfZGVmLmF0dHIudmFsdWUuc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci5zdHJpbmdfdmFsIjohMCwibGlicmFyeS5mdW5jdGlvbi5ub2RlX2RlZi5hdHRyLnZhbHVlLnRlbnNvci50ZW5zb3Jfc2hhcGUuZGltIjohMCwibGlicmFyeS5mdW5jdGlvbi5zaWduYXR1cmUuaW5wdXRfYXJnIjohMCwKImxpYnJhcnkuZnVuY3Rpb24uc2lnbmF0dXJlLm91dHB1dF9hcmciOiEwLCJsaWJyYXJ5LnZlcnNpb25zIjohMCxub2RlOiEwLCJub2RlLmlucHV0IjohMCwibm9kZS5hdHRyIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuYiI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LmYiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5mdW5jIjohMCwibm9kZS5hdHRyLnZhbHVlLmxpc3QuaSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnMiOiEwLCJub2RlLmF0dHIudmFsdWUubGlzdC5zaGFwZSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnNoYXBlLmRpbSI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnRlbnNvciI6ITAsIm5vZGUuYXR0ci52YWx1ZS5saXN0LnR5cGUiOiEwLCJub2RlLmF0dHIudmFsdWUuc2hhcGUuZGltIjohMCwibm9kZS5hdHRyLnZhbHVlLnRlbnNvci5zdHJpbmdfdmFsIjohMCwibm9kZS5hdHRyLnZhbHVlLnRlbnNvci50ZW5zb3Jfc2hhcGUuZGltIjohMH0scT17InN0ZXBfc3RhdHMuZGV2X3N0YXRzIjohMCwKInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMiOiEwLCJzdGVwX3N0YXRzLmRldl9zdGF0cy5ub2RlX3N0YXRzLm91dHB1dCI6ITAsInN0ZXBfc3RhdHMuZGV2X3N0YXRzLm5vZGVfc3RhdHMubWVtb3J5IjohMCwic3RlcF9zdGF0cy5kZXZfc3RhdHMubm9kZV9zdGF0cy5vdXRwdXQudGVuc29yX2Rlc2NyaXB0aW9uLnNoYXBlLmRpbSI6ITB9O2YucGFyc2VHcmFwaFBiVHh0PWw7Zi5wYXJzZVN0YXRzUGJUeHQ9cH0pKGQucGFyc2VyfHwoZC5wYXJzZXI9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL3Byb3RvLmpzCgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL3JlbmRlci5qcwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpeyhmdW5jdGlvbihmKXtmdW5jdGlvbiBoKEwsUSxULFgsYWEpe1E9bmV3IEkoUSxULFgsYWEsITApO0wuaW5Bbm5vdGF0aW9ucy5wdXNoKFEpfWZ1bmN0aW9uIGsoTCxRLFQsWCxhYSl7UT1uZXcgSShRLFQsWCxhYSwhMSk7TC5vdXRBbm5vdGF0aW9ucy5wdXNoKFEpfWZ1bmN0aW9uIHQoTCxRKXtfLmVhY2goTC5ub2RlcygpLFQ9PntUPUwubm9kZShUKTtULmV4cGFuZGVkPTE8UTtpZigwPFEpc3dpdGNoKFQubm9kZS50eXBlKXtjYXNlIGQuTm9kZVR5cGUuTUVUQTpjYXNlIGQuTm9kZVR5cGUuU0VSSUVTOmwoVCxRLTEpfX0pfWZ1bmN0aW9uIGwoTCxRKXtMLmNvcmVHcmFwaCYmdChMLmNvcmVHcmFwaCxRKX1mdW5jdGlvbiBwKEwsUSxUKXtsZXQgWD1MLm5vZGUoUSksYWE9TC5ub2RlKFQpLGxhPUwuZWRnZShRLFQpO2lmKFgubm9kZS5pbmNsdWRlIT09ZC5JbmNsdXNpb25UeXBlLklOQ0xVREUmJmFhLm5vZGUuaW5jbHVkZSE9PWQuSW5jbHVzaW9uVHlwZS5JTkNMVURFfHwKWC5ub2RlLmluY2x1ZGU9PT1kLkluY2x1c2lvblR5cGUuRVhDTFVERXx8YWEubm9kZS5pbmNsdWRlPT09ZC5JbmNsdXNpb25UeXBlLkVYQ0xVREUpayhYLGFhLm5vZGUsYWEsbGEsTi5TSE9SVENVVCksaChhYSxYLm5vZGUsWCxsYSxOLlNIT1JUQ1VUKSxMLnJlbW92ZUVkZ2UoUSxUKX1mdW5jdGlvbiBtKEwsUSxUKXtsZXQgWD1MLmNvcmVHcmFwaCxhYT1YLm5vZGUoUSk7YWEuaXNPdXRFeHRyYWN0PSEwO18uZWFjaChYLnByZWRlY2Vzc29ycyhRKSxsYT0+e3AoWCxsYSxRKX0pOyhGLmRldGFjaEFsbEVkZ2VzRm9ySGlnaERlZ3JlZXx8VCkmJl8uZWFjaChYLnN1Y2Nlc3NvcnMoUSksbGE9PntwKFgsUSxsYSl9KTswPT09WC5uZWlnaGJvcnMoUSkubGVuZ3RoJiYoYWEubm9kZS5pbmNsdWRlPWQuSW5jbHVzaW9uVHlwZS5FWENMVURFLEwuaXNvbGF0ZWRPdXRFeHRyYWN0LnB1c2goYWEpLFgucmVtb3ZlTm9kZShRKSl9ZnVuY3Rpb24gbihMLFEsVCl7bGV0IFg9TC5jb3JlR3JhcGgsYWE9Clgubm9kZShRKTthYS5pc0luRXh0cmFjdD0hMDtfLmVhY2goWC5zdWNjZXNzb3JzKFEpLGxhPT57cChYLFEsbGEpfSk7KEYuZGV0YWNoQWxsRWRnZXNGb3JIaWdoRGVncmVlfHxUKSYmXy5lYWNoKFgucHJlZGVjZXNzb3JzKFEpLGxhPT57cChYLGxhLFEpfSk7MD09PVgubmVpZ2hib3JzKFEpLmxlbmd0aCYmKGFhLm5vZGUuaW5jbHVkZT1kLkluY2x1c2lvblR5cGUuRVhDTFVERSxMLmlzb2xhdGVkSW5FeHRyYWN0LnB1c2goYWEpLFgucmVtb3ZlTm9kZShRKSl9ZnVuY3Rpb24gcShMLFEpe2lmKEwudHlwZT09PWQuTm9kZVR5cGUuT1ApZm9yKHZhciBUPTA7VDxRLmxlbmd0aDtUKyspe2lmKEwub3A9PT1RW1RdKXJldHVybiEwfWVsc2UgaWYoTC50eXBlPT09ZC5Ob2RlVHlwZS5NRVRBJiYoTD1MLmdldFJvb3RPcCgpKSlmb3IoVD0wO1Q8US5sZW5ndGg7VCsrKWlmKEwub3A9PT1RW1RdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHUoTCl7bGV0IFE9TC5jb3JlR3JhcGg7Xy5lYWNoKFEubm9kZXMoKSwKVD0+e1Eubm9kZShUKS5ub2RlLmluY2x1ZGUhPT1kLkluY2x1c2lvblR5cGUuRVhDTFVERXx8VC5zdGFydHNXaXRoKGIuZ3JhcGguRlVOQ1RJT05fTElCUkFSWV9OT0RFX1BSRUZJWCl8fChMLmNvcmVHcmFwaC5vdXRFZGdlcyhUKS5sZW5ndGg+TC5jb3JlR3JhcGguaW5FZGdlcyhUKS5sZW5ndGg/bShMLFQsITApOm4oTCxULCEwKSl9KX1mdW5jdGlvbiB4KEwpe2xldCBRPUwuY29yZUdyYXBoO18uZWFjaChRLm5vZGVzKCksVD0+e2xldCBYPVEubm9kZShUKTtYLm5vZGUuaW5jbHVkZT09PWQuSW5jbHVzaW9uVHlwZS5VTlNQRUNJRklFRCYmcShYLm5vZGUsRi5vdXRFeHRyYWN0VHlwZXMpJiZtKEwsVCl9KX1mdW5jdGlvbiBBKEwpe2xldCBRPUwuY29yZUdyYXBoO18uZWFjaChRLm5vZGVzKCksVD0+e2xldCBYPVEubm9kZShUKTtYLm5vZGUuaW5jbHVkZT09PWQuSW5jbHVzaW9uVHlwZS5VTlNQRUNJRklFRCYmcShYLm5vZGUsRi5pbkV4dHJhY3RUeXBlcykmJm4oTCxUKX0pfWZ1bmN0aW9uIHkoTCl7bGV0IFE9CkwuY29yZUdyYXBoLFQ9e30sWD17fSxhYT0wO18uZWFjaChRLm5vZGVzKCksa2E9PntpZihRLm5vZGUoa2EpLm5vZGUuaW5jbHVkZT09PWQuSW5jbHVzaW9uVHlwZS5VTlNQRUNJRklFRCl7dmFyIFk9Xy5yZWR1Y2UoUS5wcmVkZWNlc3NvcnMoa2EpLCh2YSx4YSk9Pnt4YT1RLmVkZ2UoeGEsa2EpLm1ldGFlZGdlO3JldHVybiB2YSsoeGEubnVtUmVndWxhckVkZ2VzPzE6MCl9LDApOzA9PT1ZJiYwPFEucHJlZGVjZXNzb3JzKGthKS5sZW5ndGgmJihZPVEucHJlZGVjZXNzb3JzKGthKS5sZW5ndGgpO3ZhciBFYT1fLnJlZHVjZShRLnN1Y2Nlc3NvcnMoa2EpLCh2YSx4YSk9Pnt4YT1RLmVkZ2Uoa2EseGEpLm1ldGFlZGdlO3JldHVybiB2YSsoeGEubnVtUmVndWxhckVkZ2VzPzE6MCl9LDApOzA9PT1FYSYmMDxRLnN1Y2Nlc3NvcnMoa2EpLmxlbmd0aCYmKEVhPVEuc3VjY2Vzc29ycyhrYSkubGVuZ3RoKTtUW2thXT1ZO1hba2FdPUVhO2FhKyt9fSk7aWYoIShhYTxGLm1pbk5vZGVDb3VudEZvckV4dHJhY3Rpb24pKXt2YXIgbGE9CkYubWluRGVncmVlRm9yRXh0cmFjdGlvbi0xLFo9TWF0aC5yb3VuZCguNzUqYWEpLGJhPU1hdGgucm91bmQoLjI1KmFhKSxlYT1PYmplY3Qua2V5cyhUKS5zb3J0KChrYSxZKT0+VFtrYV0tVFtZXSksY2E9VFtlYVtaXV07Y2E9Y2ErY2EtVFtlYVtiYV1dO2NhPU1hdGgubWF4KGNhLGxhKTtmb3IobGV0IGthPWFhLTE7VFtlYVtrYV1dPmNhO2thLS0pbihMLGVhW2thXSk7ZWE9T2JqZWN0LmtleXMoWCkuc29ydCgoa2EsWSk9Plhba2FdLVhbWV0pO1o9WFtlYVtaXV07YmE9Wis0KihaLVhbZWFbYmFdXSk7YmE9TWF0aC5tYXgoYmEsbGEpO2ZvcihsYT1hYS0xO1hbZWFbbGFdXT5iYTtsYS0tKShaPVEubm9kZShlYVtsYV0pKSYmIVouaXNJbkV4dHJhY3QmJm0oTCxlYVtsYV0pfX1mdW5jdGlvbiB3KEwpe2xldCBRPUwuY29yZUdyYXBoLFQ9e307Xy5lYWNoKFEuZWRnZXMoKSxYPT57US5lZGdlKFgpLm1ldGFlZGdlLm51bVJlZ3VsYXJFZGdlc3x8KChUW1gudl09VFtYLnZdfHxbXSkucHVzaChYKSwKKFRbWC53XT1UW1gud118fFtdKS5wdXNoKFgpKX0pO18uZWFjaChULFg9PntYLmxlbmd0aD5GLm1heENvbnRyb2xEZWdyZWUmJl8uZWFjaChYLGFhPT5wKFEsYWEudixhYS53KSl9KX1mdW5jdGlvbiBDKEwpe3UoTCk7Ri5vdXRFeHRyYWN0VHlwZXMmJngoTCk7Ri5pbkV4dHJhY3RUeXBlcyYmQShMKTt5KEwpO0YubWF4Q29udHJvbERlZ3JlZSYmdyhMKTtsZXQgUT1MLmNvcmVHcmFwaDtfLmVhY2goUS5ub2RlcygpLFQ9PntsZXQgWD1RLm5vZGUoVCk7dmFyIGFhPVEubmVpZ2hib3JzKFQpLmxlbmd0aDtpZihYLm5vZGUuaW5jbHVkZT09PWQuSW5jbHVzaW9uVHlwZS5VTlNQRUNJRklFRCYmMD09PWFhKXthYT0wPFgub3V0QW5ub3RhdGlvbnMubGlzdC5sZW5ndGg7bGV0IGxhPTA8WC5pbkFubm90YXRpb25zLmxpc3QubGVuZ3RoO1guaXNJbkV4dHJhY3Q/KEwuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChYKSxYLm5vZGUuaW5jbHVkZT1kLkluY2x1c2lvblR5cGUuRVhDTFVERSxRLnJlbW92ZU5vZGUoVCkpOgpYLmlzT3V0RXh0cmFjdD8oTC5pc29sYXRlZE91dEV4dHJhY3QucHVzaChYKSxYLm5vZGUuaW5jbHVkZT1kLkluY2x1c2lvblR5cGUuRVhDTFVERSxRLnJlbW92ZU5vZGUoVCkpOkYuZXh0cmFjdElzb2xhdGVkTm9kZXNXaXRoQW5ub3RhdGlvbnNPbk9uZVNpZGUmJihhYSYmIWxhPyhYLmlzSW5FeHRyYWN0PSEwLEwuaXNvbGF0ZWRJbkV4dHJhY3QucHVzaChYKSxYLm5vZGUuaW5jbHVkZT1kLkluY2x1c2lvblR5cGUuRVhDTFVERSxRLnJlbW92ZU5vZGUoVCkpOmxhJiYhYWEmJihYLmlzT3V0RXh0cmFjdD0hMCxMLmlzb2xhdGVkT3V0RXh0cmFjdC5wdXNoKFgpLFgubm9kZS5pbmNsdWRlPWQuSW5jbHVzaW9uVHlwZS5FWENMVURFLFEucmVtb3ZlTm9kZShUKSkpfX0pfWYuT3BOb2RlQ29sb3JzPXtERUZBVUxUX0ZJTEw6IiNmZmZmZmYiLERFRkFVTFRfU1RST0tFOiIjYjJiMmIyIixDT01QQVRJQkxFOiIjMGY5ZDU4IixJTkNPTVBBVElCTEU6IiNkYjQ0MzcifTtmLk1ldGFub2RlQ29sb3JzPQp7REVGQVVMVF9GSUxMOiIjZDlkOWQ5IixERUZBVUxUX1NUUk9LRToiI2E2YTZhNiIsU0FUVVJBVElPTjouNixMSUdIVE5FU1M6Ljg1LEVYUEFOREVEX0NPTE9SOiIjZjBmMGYwIixIVUVTOlsyMjAsMTAwLDE4MCw0MCwyMCwzNDAsMjYwLDMwMCwxNDAsNjBdLFNUUlVDVFVSRV9QQUxFVFRFKEwsUSl7dmFyIFQ9Zi5NZXRhbm9kZUNvbG9ycy5IVUVTO0w9VFtMJVQubGVuZ3RoXTtUPU1hdGguc2luKEwqTWF0aC5QSS8zNjApO3JldHVybiBkMy5oc2woTCwuMDEqKFE/MzA6OTAtNjAqVCksLjAxKihRPzk1OjgwKSkudG9TdHJpbmcoKX0sREVWSUNFX1BBTEVUVEUoTCl7cmV0dXJuIGYuTWV0YW5vZGVDb2xvcnMuU1RSVUNUVVJFX1BBTEVUVEUoTCl9LFhMQV9DTFVTVEVSX1BBTEVUVEUoTCl7cmV0dXJuIGYuTWV0YW5vZGVDb2xvcnMuU1RSVUNUVVJFX1BBTEVUVEUoTCl9LFVOS05PV046IiNlZWUiLEdSQURJRU5UX09VVExJTkU6IiM4ODgifTtmLlNlcmllc05vZGVDb2xvcnM9e0RFRkFVTFRfRklMTDoid2hpdGUiLApERUZBVUxUX1NUUk9LRToiI2IyYjJiMiJ9O2NvbnN0IEY9e2VuYWJsZUV4dHJhY3Rpb246ITAsbWluTm9kZUNvdW50Rm9yRXh0cmFjdGlvbjoxNSxtaW5EZWdyZWVGb3JFeHRyYWN0aW9uOjUsbWF4Q29udHJvbERlZ3JlZTo0LG1heEJyaWRnZVBhdGhEZWdyZWU6NCxvdXRFeHRyYWN0VHlwZXM6WyJOb09wIl0saW5FeHRyYWN0VHlwZXM6W10sZGV0YWNoQWxsRWRnZXNGb3JIaWdoRGVncmVlOiEwLGV4dHJhY3RJc29sYXRlZE5vZGVzV2l0aEFubm90YXRpb25zT25PbmVTaWRlOiEwLGVuYWJsZUJyaWRnZWdyYXBoOiEwLG1pbk1heENvbG9yczpbIiNmZmY1ZjAiLCIjZmI2YTRhIl0sbWF4QW5ub3RhdGlvbnM6NX0sRD1uZXcgUmVnRXhwKCJeKD86IitiLmdyYXBoLkZVTkNUSU9OX0xJQlJBUllfTk9ERV9QUkVGSVgrIik/KFxcdyspX1thLXowLTldezh9KD86X1xcZCspPyQiKTtjbGFzcyBCe2NvbnN0cnVjdG9yKEwsUSl7dGhpcy5oaWVyYXJjaHk9TDt0aGlzLmRpc3BsYXlpbmdTdGF0cz0KUTt0aGlzLmluZGV4PXt9O3RoaXMucmVuZGVyZWRPcE5hbWVzPVtdO3RoaXMuY29tcHV0ZVNjYWxlcygpO3RoaXMuaGFzU3ViaGllcmFyY2h5PXt9O3RoaXMucm9vdD1uZXcgTShMLnJvb3QsTC5ncmFwaE9wdGlvbnMpO3RoaXMuaW5kZXhbTC5yb290Lm5hbWVdPXRoaXMucm9vdDt0aGlzLnJlbmRlcmVkT3BOYW1lcy5wdXNoKEwucm9vdC5uYW1lKTt0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KEwucm9vdC5uYW1lKTt0aGlzLnJvb3QuZXhwYW5kZWQ9ITA7dGhpcy50cmFjZUlucHV0cz0hMX1jb21wdXRlU2NhbGVzKCl7dGhpcy5kZXZpY2VDb2xvck1hcD1kMy5zY2FsZU9yZGluYWwoKS5kb21haW4odGhpcy5oaWVyYXJjaHkuZGV2aWNlcykucmFuZ2UoXy5tYXAoZDMucmFuZ2UodGhpcy5oaWVyYXJjaHkuZGV2aWNlcy5sZW5ndGgpLGYuTWV0YW5vZGVDb2xvcnMuREVWSUNFX1BBTEVUVEUpKTt0aGlzLnhsYUNsdXN0ZXJDb2xvck1hcD1kMy5zY2FsZU9yZGluYWwoKS5kb21haW4odGhpcy5oaWVyYXJjaHkueGxhQ2x1c3RlcnMpLnJhbmdlKF8ubWFwKGQzLnJhbmdlKHRoaXMuaGllcmFyY2h5LnhsYUNsdXN0ZXJzLmxlbmd0aCksCmYuTWV0YW5vZGVDb2xvcnMuWExBX0NMVVNURVJfUEFMRVRURSkpO2xldCBMPXRoaXMuaGllcmFyY2h5LnJvb3QubWV0YWdyYXBoO3ZhciBRPWQzLm1heChMLm5vZGVzKCksVD0+e1Q9TC5ub2RlKFQpO2lmKG51bGwhPVQuc3RhdHMpcmV0dXJuIFQuc3RhdHMudG90YWxCeXRlc30pO3RoaXMubWVtb3J5VXNhZ2VTY2FsZT1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxRXSkucmFuZ2UoRi5taW5NYXhDb2xvcnMpO1E9ZDMubWF4KEwubm9kZXMoKSxUPT57VD1MLm5vZGUoVCk7aWYobnVsbCE9VC5zdGF0cylyZXR1cm4gVC5zdGF0cy5nZXRUb3RhbE1pY3JvcygpfSk7dGhpcy5jb21wdXRlVGltZVNjYWxlPWQzLnNjYWxlTGluZWFyKCkuZG9tYWluKFswLFFdKS5yYW5nZShGLm1pbk1heENvbG9ycyk7dGhpcy5lZGdlV2lkdGhTaXplZEJhc2VkU2NhbGU9dGhpcy5oaWVyYXJjaHkuaGFzU2hhcGVJbmZvP2Quc2NlbmUuZWRnZS5FREdFX1dJRFRIX1NJWkVfQkFTRURfU0NBTEU6ZDMuc2NhbGVMaW5lYXIoKS5kb21haW4oWzEsCnRoaXMuaGllcmFyY2h5Lm1heE1ldGFFZGdlU2l6ZV0pLnJhbmdlKFtkLnNjZW5lLmVkZ2UuTUlOX0VER0VfV0lEVEgsZC5zY2VuZS5lZGdlLk1BWF9FREdFX1dJRFRIXSl9Z2V0UmVuZGVyTm9kZUJ5TmFtZShMKXtyZXR1cm4gdGhpcy5pbmRleFtMXX1nZXROb2RlQnlOYW1lKEwpe3JldHVybiB0aGlzLmhpZXJhcmNoeS5ub2RlKEwpfWNvbG9ySGlzdG9ncmFtKEwsUSl7aWYoMDxPYmplY3Qua2V5cyhMKS5sZW5ndGgpe2NvbnN0IFQ9Xy5zdW0oT2JqZWN0LmtleXMoTCkubWFwKFg9PkxbWF0pKTtyZXR1cm4gT2JqZWN0LmtleXMoTCkubWFwKFg9Pih7Y29sb3I6UShYKSxwcm9wb3J0aW9uOkxbWF0vVH0pKX1jb25zb2xlLmluZm8oIm5vIHBhaXJzIGZvdW5kISIpO3JldHVybiBudWxsfWdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZShMKXtpZighTClyZXR1cm4gbnVsbDtpZihMIGluIHRoaXMuaW5kZXgpcmV0dXJuIHRoaXMuaW5kZXhbTF07dmFyIFE9dGhpcy5oaWVyYXJjaHkubm9kZShMKTsKaWYoIVEpcmV0dXJuIG51bGw7bGV0IFQ9US5pc0dyb3VwTm9kZT9uZXcgTShRLHRoaXMuaGllcmFyY2h5LmdyYXBoT3B0aW9ucyk6bmV3IEgoUSk7dGhpcy5pbmRleFtMXT1UO3RoaXMucmVuZGVyZWRPcE5hbWVzLnB1c2goTCk7US5zdGF0cyYmKFQubWVtb3J5Q29sb3I9dGhpcy5tZW1vcnlVc2FnZVNjYWxlKFEuc3RhdHMudG90YWxCeXRlcyksVC5jb21wdXRlVGltZUNvbG9yPXRoaXMuY29tcHV0ZVRpbWVTY2FsZShRLnN0YXRzLmdldFRvdGFsTWljcm9zKCkpKTtULmlzRmFkZWRPdXQ9dGhpcy5kaXNwbGF5aW5nU3RhdHMmJiFiLmdyYXBoLnV0aWwuaGFzRGlzcGxheWFibGVOb2RlU3RhdHMoUS5zdGF0cyk7dmFyIFg9bnVsbCxhYT1udWxsLGxhPW51bGw7aWYoUS5pc0dyb3VwTm9kZSl7WD1RLmRldmljZUhpc3RvZ3JhbTthYT1RLnhsYUNsdXN0ZXJIaXN0b2dyYW07dmFyIFo9US5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU7UT1RLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOwppZigwIT1afHwwIT1RKWxhPVovKForUSl9ZWxzZShaPVQubm9kZS5kZXZpY2UpJiYoWD17W1pdOjF9KSwoWj1ULm5vZGUueGxhQ2x1c3RlcikmJihhYT17W1pdOjF9KSxULm5vZGUudHlwZT09PWQuTm9kZVR5cGUuT1AmJihsYT1ULm5vZGUuY29tcGF0aWJsZT8xOjApO1gmJihULmRldmljZUNvbG9ycz10aGlzLmNvbG9ySGlzdG9ncmFtKFgsdGhpcy5kZXZpY2VDb2xvck1hcCkpO2FhJiYoVC54bGFDbHVzdGVyQ29sb3JzPXRoaXMuY29sb3JIaXN0b2dyYW0oYWEsdGhpcy54bGFDbHVzdGVyQ29sb3JNYXApKTtudWxsIT1sYSYmKFQuY29tcGF0aWJpbGl0eUNvbG9ycz1be2NvbG9yOmIuZ3JhcGgucmVuZGVyLk9wTm9kZUNvbG9ycy5DT01QQVRJQkxFLHByb3BvcnRpb246bGF9LHtjb2xvcjpiLmdyYXBoLnJlbmRlci5PcE5vZGVDb2xvcnMuSU5DT01QQVRJQkxFLHByb3BvcnRpb246MS1sYX1dKTtyZXR1cm4gdGhpcy5pbmRleFtMXX1nZXROZWFyZXN0VmlzaWJsZUFuY2VzdG9yKEwpe3ZhciBRPQpkLmdldEhpZXJhcmNoaWNhbFBhdGgoTCk7bGV0IFQ9MCxYPW51bGw7Zm9yKDtUPFEubGVuZ3RoJiYoTD1RW1RdLFg9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKEwpLFguZXhwYW5kZWQpO1QrKyk7cmV0dXJuIFQ9PVEubGVuZ3RoLTImJihRPVFbVCsxXSxYLmluQW5ub3RhdGlvbnMubm9kZU5hbWVzW1FdfHxYLm91dEFubm90YXRpb25zLm5vZGVOYW1lc1tRXSk/UTpMfXNldERlcHRoKEwpe2wodGhpcy5yb290LCtMKX1pc05vZGVBdXhpbGlhcnkoTCl7bGV0IFE9dGhpcy5nZXRSZW5kZXJOb2RlQnlOYW1lKEwubm9kZS5wYXJlbnROb2RlLm5hbWUpLFQ9Xy5maW5kKFEuaXNvbGF0ZWRJbkV4dHJhY3QsWD0+WC5ub2RlLm5hbWU9PT1MLm5vZGUubmFtZSk7aWYoVClyZXR1cm4hMDtUPV8uZmluZChRLmlzb2xhdGVkT3V0RXh0cmFjdCxYPT5YLm5vZGUubmFtZT09PUwubm9kZS5uYW1lKTtyZXR1cm4hIVR9Z2V0TmFtZXNPZlJlbmRlcmVkT3BzKCl7cmV0dXJuIHRoaXMucmVuZGVyZWRPcE5hbWVzfWNsb25lQW5kQWRkRnVuY3Rpb25PcE5vZGUoTCwKUSxULFgpe3ZhciBhYT1ULm5hbWUucmVwbGFjZShRLFgpO2xldCBsYT1MLm1ldGFncmFwaC5ub2RlKGFhKTtpZihsYSlyZXR1cm4gbGE7bGE9bmV3IGQuT3BOb2RlSW1wbCh7bmFtZTphYSxpbnB1dDpbXSxkZXZpY2U6VC5kZXZpY2Usb3A6VC5vcCxhdHRyOl8uY2xvbmVEZWVwKFQuYXR0cil9KTtsYS5jYXJkaW5hbGl0eT1ULmNhcmRpbmFsaXR5O2xhLmluY2x1ZGU9VC5pbmNsdWRlO2xhLm91dHB1dFNoYXBlcz1fLmNsb25lRGVlcChULm91dHB1dFNoYXBlcyk7bGEueGxhQ2x1c3Rlcj1ULnhsYUNsdXN0ZXI7bGEuZnVuY3Rpb25JbnB1dEluZGV4PVQuZnVuY3Rpb25JbnB1dEluZGV4O2xhLmZ1bmN0aW9uT3V0cHV0SW5kZXg9VC5mdW5jdGlvbk91dHB1dEluZGV4O2xhLmlucHV0cz1ULmlucHV0cy5tYXAoWj0+e2NvbnN0IGJhPV8uY2xvbmUoWik7YmEubmFtZT1aLm5hbWUucmVwbGFjZShRLFgpO3JldHVybiBiYX0pO2xhLnBhcmVudE5vZGU9TDtMLm1ldGFncmFwaC5zZXROb2RlKGxhLm5hbWUsCmxhKTt0aGlzLmhpZXJhcmNoeS5zZXROb2RlKGxhLm5hbWUsbGEpO2FhPVo9PnRoaXMuY2xvbmVBbmRBZGRGdW5jdGlvbk9wTm9kZShMLFEsWixYKTtsYS5pbkVtYmVkZGluZ3M9VC5pbkVtYmVkZGluZ3MubWFwKGFhKTtsYS5vdXRFbWJlZGRpbmdzPVQub3V0RW1iZWRkaW5ncy5tYXAoYWEpO3JldHVybiBsYX1jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlKEwsUSxULFgsYWEpe2NvbnN0IGxhPXt9O0w9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKEwsUSxULFgsYWEsbGEpO18uaXNFbXB0eShsYSl8fHRoaXMucGF0Y2hFZGdlc0Zyb21GdW5jdGlvbk91dHB1dHMoUSxsYSk7cmV0dXJuIEx9Y2xvbmVGdW5jdGlvbkxpYnJhcnlNZXRhbm9kZUhlbHBlcihMLFEsVCxYLGFhLGxhKXtjb25zdCBaPWIuZ3JhcGguY3JlYXRlTWV0YW5vZGUoVC5uYW1lLnJlcGxhY2UoWCxhYSkpO1ouZGVwdGg9VC5kZXB0aDtaLmNhcmRpbmFsaXR5PVQuY2FyZGluYWxpdHk7Wi50ZW1wbGF0ZUlkPQpULnRlbXBsYXRlSWQ7Wi5vcEhpc3RvZ3JhbT1fLmNsb25lKFQub3BIaXN0b2dyYW0pO1ouZGV2aWNlSGlzdG9ncmFtPV8uY2xvbmUoVC5kZXZpY2VIaXN0b2dyYW0pO1oueGxhQ2x1c3Rlckhpc3RvZ3JhbT1fLmNsb25lKFQueGxhQ2x1c3Rlckhpc3RvZ3JhbSk7Wi5oYXNOb25Db250cm9sRWRnZXM9VC5oYXNOb25Db250cm9sRWRnZXM7Wi5pbmNsdWRlPVQuaW5jbHVkZTtaLm5vZGVBdHRyaWJ1dGVzPV8uY2xvbmUoVC5ub2RlQXR0cmlidXRlcyk7Wi5hc3NvY2lhdGVkRnVuY3Rpb249VC5hc3NvY2lhdGVkRnVuY3Rpb247Xy5lYWNoKFQubWV0YWdyYXBoLm5vZGVzKCksYmE9PntiYT1ULm1ldGFncmFwaC5ub2RlKGJhKTtzd2l0Y2goYmEudHlwZSl7Y2FzZSBkLk5vZGVUeXBlLk1FVEE6YmE9dGhpcy5jbG9uZUZ1bmN0aW9uTGlicmFyeU1ldGFub2RlSGVscGVyKEwsUSxiYSxYLGFhLGxhKTtiYS5wYXJlbnROb2RlPVo7Wi5tZXRhZ3JhcGguc2V0Tm9kZShiYS5uYW1lLGJhKTt0aGlzLmhpZXJhcmNoeS5zZXROb2RlKGJhLm5hbWUsCmJhKTticmVhaztjYXNlIGQuTm9kZVR5cGUuT1A6YmE9dGhpcy5jbG9uZUFuZEFkZEZ1bmN0aW9uT3BOb2RlKFosWCxiYSxhYSk7Xy5pc051bWJlcihiYS5mdW5jdGlvbklucHV0SW5kZXgpJiZ0aGlzLnBhdGNoRWRnZXNJbnRvRnVuY3Rpb25JbnB1dHMoUSxiYSk7Xy5pc051bWJlcihiYS5mdW5jdGlvbk91dHB1dEluZGV4KSYmKGxhW2JhLmZ1bmN0aW9uT3V0cHV0SW5kZXhdPWJhKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybihiYS5uYW1lKyIgaXMgb2RkbHkgbmVpdGhlciBhIG1ldGFub2RlIG5vciBhbiBvcG5vZGUuIil9fSk7dGhpcy5jbG9uZUxpYnJhcnlNZXRhbm9kZUVkZ2VzKFQsWixYLGFhKTtyZXR1cm4gWn1jbG9uZUxpYnJhcnlNZXRhbm9kZUVkZ2VzKEwsUSxULFgpe18uZWFjaChMLm1ldGFncmFwaC5lZGdlcygpLGFhPT57YWE9TC5tZXRhZ3JhcGguZWRnZShhYSk7Y29uc3QgbGE9YWEudi5yZXBsYWNlKFQsWCksWj1hYS53LnJlcGxhY2UoVCxYKSxiYT1uZXcgZC5NZXRhZWRnZUltcGwobGEsClopO2JhLmluYm91bmQ9YWEuaW5ib3VuZDtiYS5udW1SZWd1bGFyRWRnZXM9YWEubnVtUmVndWxhckVkZ2VzO2JhLm51bUNvbnRyb2xFZGdlcz1hYS5udW1Db250cm9sRWRnZXM7YmEubnVtUmVmRWRnZXM9YWEubnVtUmVmRWRnZXM7YmEudG90YWxTaXplPWFhLnRvdGFsU2l6ZTthYS5iYXNlRWRnZUxpc3QmJihiYS5iYXNlRWRnZUxpc3Q9YWEuYmFzZUVkZ2VMaXN0Lm1hcChlYT0+e2NvbnN0IGNhPV8uY2xvbmUoZWEpO2NhLnY9ZWEudi5yZXBsYWNlKFQsWCk7Y2Eudz1lYS53LnJlcGxhY2UoVCxYKTtyZXR1cm4gY2F9KSk7US5tZXRhZ3JhcGgubm9kZShaKT9RLm1ldGFncmFwaC5zZXRFZGdlKGxhLFosYmEpOlEubWV0YWdyYXBoLnNldEVkZ2UoWixsYSxiYSl9KX1wYXRjaEVkZ2VzSW50b0Z1bmN0aW9uSW5wdXRzKEwsUSl7bGV0IFQ9TWF0aC5taW4oUS5mdW5jdGlvbklucHV0SW5kZXgsTC5pbnB1dHMubGVuZ3RoLTEpO2Zvcih2YXIgWD1fLmNsb25lKEwuaW5wdXRzW1RdKTtYLmlzQ29udHJvbERlcGVuZGVuY3k7KVQrKywKWD1MLmlucHV0c1tUXTtRLmlucHV0cy5wdXNoKFgpO1g9dGhpcy5oaWVyYXJjaHkuZ2V0UHJlZGVjZXNzb3JzKEwubmFtZSk7bGV0IGFhLGxhPTA7Xy5lYWNoKFgucmVndWxhcixaPT57bGErPVoubnVtUmVndWxhckVkZ2VzO2lmKGxhPlQpcmV0dXJuIGFhPVosITF9KTtfLmVhY2goYWEuYmFzZUVkZ2VMaXN0LFo9PntaLnc9PT1MLm5hbWUmJihaLnc9US5uYW1lKTtaLnY9PT1MLm5hbWUmJihaLnY9US5uYW1lKX0pfXBhdGNoRWRnZXNGcm9tRnVuY3Rpb25PdXRwdXRzKEwsUSl7Y29uc3QgVD10aGlzLmhpZXJhcmNoeS5nZXRTdWNjZXNzb3JzKEwubmFtZSk7Xy5lYWNoKFQucmVndWxhcixYPT57Xy5lYWNoKFguYmFzZUVkZ2VMaXN0LGFhPT57Y29uc3QgbGE9dGhpcy5oaWVyYXJjaHkubm9kZShhYS53KTtfLmVhY2gobGEuaW5wdXRzLFo9PntaLm5hbWU9PT1MLm5hbWUmJihaLm5hbWU9UVtaLm91dHB1dFRlbnNvcktleV0ubmFtZSxaLm91dHB1dFRlbnNvcktleT1hYS5vdXRwdXRUZW5zb3JLZXkpfSl9KTsKXy5lYWNoKFguYmFzZUVkZ2VMaXN0LGFhPT57YWEudj1RW2FhLm91dHB1dFRlbnNvcktleV0ubmFtZTthYS5vdXRwdXRUZW5zb3JLZXk9IjAifSl9KX1idWlsZFN1YmhpZXJhcmNoeShMKXtpZighKEwgaW4gdGhpcy5oYXNTdWJoaWVyYXJjaHkpKXt0aGlzLmhhc1N1YmhpZXJhcmNoeVtMXT0hMDt2YXIgUT10aGlzLmluZGV4W0xdO2lmKFEubm9kZS50eXBlPT09ZC5Ob2RlVHlwZS5NRVRBfHxRLm5vZGUudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTKXt2YXIgVD1RLm5vZGUubWV0YWdyYXBoLFg9US5jb3JlR3JhcGgsYWE9W10sbGE9W107Xy5pc0VtcHR5KHRoaXMuaGllcmFyY2h5LmxpYnJhcnlGdW5jdGlvbnMpfHwoXy5lYWNoKFQubm9kZXMoKSx4YT0+e2NvbnN0IEFhPVQubm9kZSh4YSksRmE9dGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9uc1tBYS5vcF07RmEmJjAhPT14YS5pbmRleE9mKGIuZ3JhcGguRlVOQ1RJT05fTElCUkFSWV9OT0RFX1BSRUZJWCkmJih4YT10aGlzLmNsb25lRnVuY3Rpb25MaWJyYXJ5TWV0YW5vZGUoVCwKQWEsRmEubm9kZSxGYS5ub2RlLm5hbWUsQWEubmFtZSksYWEucHVzaChBYSksbGEucHVzaCh4YSkpfSksXy5lYWNoKGxhLCh4YSxBYSk9PntBYT1hYVtBYV07eGEucGFyZW50Tm9kZT1BYS5wYXJlbnROb2RlO1Quc2V0Tm9kZShBYS5uYW1lLHhhKTt0aGlzLmhpZXJhcmNoeS5zZXROb2RlKEFhLm5hbWUseGEpfSkpO18uZWFjaChULm5vZGVzKCkseGE9PntsZXQgQWE9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoeGEpLEZhPUFhLm5vZGU7WC5zZXROb2RlKHhhLEFhKTtGYS5pc0dyb3VwTm9kZXx8KF8uZWFjaChGYS5pbkVtYmVkZGluZ3MseWE9PntsZXQgU2E9bmV3IEsobnVsbCksWGE9bmV3IEgoeWEpO2goQWEseWEsWGEsU2EsTi5DT05TVEFOVCk7dGhpcy5pbmRleFt5YS5uYW1lXT1YYX0pLF8uZWFjaChGYS5vdXRFbWJlZGRpbmdzLHlhPT57bGV0IFNhPW5ldyBLKG51bGwpLFhhPW5ldyBIKHlhKTtrKEFhLHlhLFhhLFNhLE4uU1VNTUFSWSk7dGhpcy5pbmRleFt5YS5uYW1lXT0KWGF9KSl9KTtfLmVhY2goVC5lZGdlcygpLHhhPT57dmFyIEFhPVQuZWRnZSh4YSk7QWE9bmV3IEsoQWEpO0FhLmlzRmFkZWRPdXQ9dGhpcy5pbmRleFt4YS52XS5pc0ZhZGVkT3V0fHx0aGlzLmluZGV4W3hhLnddLmlzRmFkZWRPdXQ7WC5zZXRFZGdlKHhhLnYseGEudyxBYSl9KTtGLmVuYWJsZUV4dHJhY3Rpb24mJlEubm9kZS50eXBlPT09ZC5Ob2RlVHlwZS5NRVRBJiZDKFEpO18uaXNFbXB0eSh0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zKXx8dGhpcy5idWlsZFN1YmhpZXJhcmNoaWVzRm9yTmVlZGVkRnVuY3Rpb25zKFQpO0w9PT1iLmdyYXBoLlJPT1RfTkFNRSYmXy5mb3JPd24odGhpcy5oaWVyYXJjaHkubGlicmFyeUZ1bmN0aW9ucyx4YT0+e3hhPXhhLm5vZGU7Y29uc3QgQWE9dGhpcy5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoeGEubmFtZSk7US5saWJyYXJ5RnVuY3Rpb25zRXh0cmFjdC5wdXNoKEFhKTtBYS5ub2RlLmluY2x1ZGU9ZC5JbmNsdXNpb25UeXBlLkVYQ0xVREU7ClgucmVtb3ZlTm9kZSh4YS5uYW1lKX0pO3ZhciBaPVEubm9kZS5wYXJlbnROb2RlO2lmKFope3ZhciBiYT10aGlzLmluZGV4W1oubmFtZV0sZWE9KHhhLC4uLkFhKT0+QWEuY29uY2F0KFt4YT8iSU4iOiJPVVQiXSkuam9pbigifn4iKSxjYT10aGlzLmhpZXJhcmNoeS5nZXRCcmlkZ2VncmFwaChMKSxrYT17fSxZPXt9LEVhPXt9O18uZWFjaChjYS5lZGdlcygpLHhhPT57bGV0IEFhPSEhVC5ub2RlKHhhLncpLEZhPUFhP3hhLnY6eGEudztjYS5lZGdlKHhhKS5udW1SZWd1bGFyRWRnZXM/QWE/WVtGYV09KFlbRmFdfHwwKSsxOmthW0ZhXT0oa2FbRmFdfHwwKSsxOkVhW0ZhXT0oRWFbRmFdfHwwKSsxfSk7dmFyIHZhPXRoaXMuaGllcmFyY2h5LmdldE5vZGVNYXAoKTtfLmVhY2goY2EuZWRnZXMoKSx4YT0+e3ZhciBBYT1jYS5lZGdlKHhhKTtsZXQgRmE9ISFULm5vZGUoeGEudyksW3lhLFNhXT1GYT9beGEudyx4YS52XTpbeGEudix4YS53XTt2YXIgWGE9dGhpcy5pbmRleFt5YV0sdWI9dGhpcy5pbmRleFtTYV0sCkJiPXViP3ViLm5vZGU6dmFbU2FdLHFiPSFBYS5udW1SZWd1bGFyRWRnZXMmJkVhW1NhXT5GLm1heENvbnRyb2xEZWdyZWUsWyx6Yl09RmE/W1EuaW5Bbm5vdGF0aW9ucyxYYS5pbkFubm90YXRpb25zXTpbUS5vdXRBbm5vdGF0aW9ucyxYYS5vdXRBbm5vdGF0aW9uc107bGV0IHZiPShGYT9ZOmthKVtTYV0+Ri5tYXhCcmlkZ2VQYXRoRGVncmVlO3hhPW51bGw7dmFyIEdiPSExO0YuZW5hYmxlQnJpZGdlZ3JhcGgmJiF2YiYmIXFiJiZYYS5pc0luQ29yZSgpJiYoR2I9TmI9PmJhLmNvcmVHcmFwaC5lZGdlKEZhP3t2Ok5iLHc6TH06e3Y6TCx3Ok5ifSksKHhhPUdiKFNhKSl8fCh4YT1HYihlYShGYSxTYSxaLm5hbWUpKSksR2I9ISF4YSk7WGE9ITE7aWYoeGEmJiFBYS5udW1SZWd1bGFyRWRnZXMpe1hhPXhhO2ZvcihxYj1iYS5ub2RlO1hhLmFkam9pbmluZ01ldGFlZGdlOylYYT1YYS5hZGpvaW5pbmdNZXRhZWRnZSxxYj1xYi5wYXJlbnROb2RlO3FiPXRoaXMuaGllcmFyY2h5LmdldFRvcG9sb2dpY2FsT3JkZXJpbmcocWIubmFtZSk7ClhhPVhhLm1ldGFlZGdlO1hhPXFiW1hhLnZdPnFiW1hhLnddfUdiJiYhWGE/KEJiPWVhKEZhLEwpLHViPWVhKEZhLFNhLEwpLHpiPVgubm9kZSh1YiksemJ8fChHYj1YLm5vZGUoQmIpLEdifHwoR2I9bmV3IEgoe25hbWU6QmIsdHlwZTpkLk5vZGVUeXBlLkJSSURHRSxpc0dyb3VwTm9kZTohMSxjYXJkaW5hbGl0eTowLHBhcmVudE5vZGU6bnVsbCxzdGF0czpudWxsLGluY2x1ZGU6ZC5JbmNsdXNpb25UeXBlLlVOU1BFQ0lGSUVELGluYm91bmQ6RmEsbm9kZUF0dHJpYnV0ZXM6e319KSx0aGlzLmluZGV4W0JiXT1HYixYLnNldE5vZGUoQmIsR2IpKSx6Yj1uZXcgSCh7bmFtZTp1Yix0eXBlOmQuTm9kZVR5cGUuQlJJREdFLGlzR3JvdXBOb2RlOiExLGNhcmRpbmFsaXR5OjEscGFyZW50Tm9kZTpudWxsLHN0YXRzOm51bGwsaW5jbHVkZTpkLkluY2x1c2lvblR5cGUuVU5TUEVDSUZJRUQsaW5ib3VuZDpGYSxub2RlQXR0cmlidXRlczp7fX0pLHRoaXMuaW5kZXhbdWJdPXpiLFguc2V0Tm9kZSh1YiwKemIpLFguc2V0UGFyZW50KHViLEJiKSxHYi5ub2RlLmNhcmRpbmFsaXR5KyspLEFhPW5ldyBLKEFhKSxBYS5hZGpvaW5pbmdNZXRhZWRnZT14YSxGYT9YLnNldEVkZ2UodWIseWEsQWEpOlguc2V0RWRnZSh5YSx1YixBYSkpOnpiLnB1c2gobmV3IEkoQmIsdWIsbmV3IEsoQWEpLE4uU0hPUlRDVVQsRmEpKX0pO18uZWFjaChbITAsITFdLHhhPT57bGV0IEFhPWVhKHhhLEwpLEZhPVgubm9kZShBYSk7RmEmJl8uZWFjaChYLm5vZGVzKCkseWE9PntpZihYLm5vZGUoeWEpLm5vZGUudHlwZSE9PWQuTm9kZVR5cGUuQlJJREdFJiYoeGE/IVgucHJlZGVjZXNzb3JzKHlhKS5sZW5ndGg6IVguc3VjY2Vzc29ycyh5YSkubGVuZ3RoKSl7dmFyIFNhPWVhKHhhLEwsIlNUUlVDVFVSQUxfVEFSR0VUIiksWGE9WC5ub2RlKFNhKTtYYXx8KFhhPW5ldyBIKHtuYW1lOlNhLHR5cGU6ZC5Ob2RlVHlwZS5CUklER0UsaXNHcm91cE5vZGU6ITEsY2FyZGluYWxpdHk6MSxwYXJlbnROb2RlOm51bGwsc3RhdHM6bnVsbCwKaW5jbHVkZTpkLkluY2x1c2lvblR5cGUuVU5TUEVDSUZJRUQsaW5ib3VuZDp4YSxub2RlQXR0cmlidXRlczp7fX0pLFhhLnN0cnVjdHVyYWw9ITAsdGhpcy5pbmRleFtTYV09WGEsWC5zZXROb2RlKFNhLFhhKSxGYS5ub2RlLmNhcmRpbmFsaXR5KyssWC5zZXRQYXJlbnQoU2EsQWEpKTtYYT1uZXcgSyhudWxsKTtYYS5zdHJ1Y3R1cmFsPSEwO1hhLndlaWdodC0tO3hhP1guc2V0RWRnZShTYSx5YSxYYSk6WC5zZXRFZGdlKHlhLFNhLFhhKX19KX0pfX19fWJ1aWxkU3ViaGllcmFyY2hpZXNGb3JOZWVkZWRGdW5jdGlvbnMoTCl7Xy5lYWNoKEwuZWRnZXMoKSxRPT57UT1MLmVkZ2UoUSk7UT1uZXcgSyhRKTtfLmZvckVhY2goUS5tZXRhZWRnZS5iYXNlRWRnZUxpc3QsVD0+e3ZhciBYPVQudi5zcGxpdChiLmdyYXBoLk5BTUVTUEFDRV9ERUxJTSk7Zm9yKHZhciBhYT1YLmxlbmd0aDswPD1hYTthYS0tKXtUPVguc2xpY2UoMCxhYSk7Y29uc3QgbGE9dGhpcy5oaWVyYXJjaHkubm9kZShULmpvaW4oYi5ncmFwaC5OQU1FU1BBQ0VfREVMSU0pKTsKaWYobGEpe2lmKGxhLnR5cGU9PT1kLk5vZGVUeXBlLk9QJiZ0aGlzLmhpZXJhcmNoeS5saWJyYXJ5RnVuY3Rpb25zW2xhLm9wXSlmb3IoWD0xO1g8VC5sZW5ndGg7WCsrKShhYT1ULnNsaWNlKDAsWCkuam9pbihiLmdyYXBoLk5BTUVTUEFDRV9ERUxJTSkpJiZ0aGlzLmJ1aWxkU3ViaGllcmFyY2h5KGFhKTticmVha319fSl9KX19Zi5SZW5kZXJHcmFwaEluZm89QjtjbGFzcyBJe2NvbnN0cnVjdG9yKEwsUSxULFgsYWEpe3RoaXMubm9kZT1MO3RoaXMucmVuZGVyTm9kZUluZm89UTt0aGlzLnJlbmRlck1ldGFlZGdlSW5mbz1UO3RoaXMuYW5ub3RhdGlvblR5cGU9WDt0aGlzLmhlaWdodD10aGlzLndpZHRoPXRoaXMuZHk9dGhpcy5keD0wO1QmJlQubWV0YWVkZ2UmJih0aGlzLnY9VC5tZXRhZWRnZS52LHRoaXMudz1ULm1ldGFlZGdlLncpO3RoaXMuaXNJbj1hYTt0aGlzLnBvaW50cz1bXX19Zi5Bbm5vdGF0aW9uPUk7bGV0IE47KGZ1bmN0aW9uKEwpe0xbTC5TSE9SVENVVD0wXT0iU0hPUlRDVVQiOwpMW0wuQ09OU1RBTlQ9MV09IkNPTlNUQU5UIjtMW0wuU1VNTUFSWT0yXT0iU1VNTUFSWSI7TFtMLkVMTElQU0lTPTNdPSJFTExJUFNJUyJ9KShOPWYuQW5ub3RhdGlvblR5cGV8fChmLkFubm90YXRpb25UeXBlPXt9KSk7Y2xhc3MgT3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdD1bXTt0aGlzLm5vZGVOYW1lcz17fX1wdXNoKEwpe2lmKCEoTC5ub2RlLm5hbWUgaW4gdGhpcy5ub2RlTmFtZXMpKWlmKHRoaXMubm9kZU5hbWVzW0wubm9kZS5uYW1lXT0hMCx0aGlzLmxpc3QubGVuZ3RoPEYubWF4QW5ub3RhdGlvbnMpdGhpcy5saXN0LnB1c2goTCk7ZWxzZXt2YXIgUT10aGlzLmxpc3RbdGhpcy5saXN0Lmxlbmd0aC0xXTtRLmFubm90YXRpb25UeXBlPT09Ti5FTExJUFNJUz8oTD1RLm5vZGUsTC5zZXROdW1Nb3JlTm9kZXMoKytMLm51bU1vcmVOb2RlcykpOihRPW5ldyBiLmdyYXBoLkVsbGlwc2lzTm9kZUltcGwoMSksdGhpcy5saXN0LnB1c2gobmV3IEkoUSxuZXcgSChRKSxudWxsLE4uRUxMSVBTSVMsCkwuaXNJbikpKX19fWYuQW5ub3RhdGlvbkxpc3Q9TztjbGFzcyBIe2NvbnN0cnVjdG9yKEwpe3RoaXMubm9kZT1MO3RoaXMuZXhwYW5kZWQ9ITE7dGhpcy5pbkFubm90YXRpb25zPW5ldyBPO3RoaXMub3V0QW5ub3RhdGlvbnM9bmV3IE87dGhpcy5vdXRib3hXaWR0aD10aGlzLmluYm94V2lkdGg9dGhpcy5oZWlnaHQ9dGhpcy53aWR0aD10aGlzLnk9dGhpcy54PTA7dGhpcy5zdHJ1Y3R1cmFsPXRoaXMuZXhjbHVkZWQ9ITE7dGhpcy5wYWRkaW5nQm90dG9tPXRoaXMucGFkZGluZ1JpZ2h0PXRoaXMucGFkZGluZ0xlZnQ9dGhpcy5wYWRkaW5nVG9wPXRoaXMubGFiZWxIZWlnaHQ9dGhpcy5yYWRpdXM9dGhpcy5sYWJlbE9mZnNldD0wO3RoaXMuaXNPdXRFeHRyYWN0PXRoaXMuaXNJbkV4dHJhY3Q9ITE7dGhpcy5jb3JlQm94PXt3aWR0aDowLGhlaWdodDowfTt0aGlzLmlzRmFkZWRPdXQ9ITE7dGhpcy5kaXNwbGF5TmFtZT1MLm5hbWUuc3Vic3RyaW5nKEwubmFtZS5sYXN0SW5kZXhPZihiLmdyYXBoLk5BTUVTUEFDRV9ERUxJTSkrCjEpO0wudHlwZT09PWQuTm9kZVR5cGUuTUVUQSYmTC5hc3NvY2lhdGVkRnVuY3Rpb24mJigoTD10aGlzLmRpc3BsYXlOYW1lLm1hdGNoKEQpKT90aGlzLmRpc3BsYXlOYW1lPUxbMV06Xy5zdGFydHNXaXRoKHRoaXMuZGlzcGxheU5hbWUsYi5ncmFwaC5GVU5DVElPTl9MSUJSQVJZX05PREVfUFJFRklYKSYmKHRoaXMuZGlzcGxheU5hbWU9dGhpcy5kaXNwbGF5TmFtZS5zdWJzdHJpbmcoYi5ncmFwaC5GVU5DVElPTl9MSUJSQVJZX05PREVfUFJFRklYLmxlbmd0aCkpKX1pc0luQ29yZSgpe3JldHVybiF0aGlzLmlzSW5FeHRyYWN0JiYhdGhpcy5pc091dEV4dHJhY3QmJiF0aGlzLmlzTGlicmFyeUZ1bmN0aW9ufX1mLlJlbmRlck5vZGVJbmZvPUg7Y2xhc3MgS3tjb25zdHJ1Y3RvcihMKXt0aGlzLm1ldGFlZGdlPUw7dGhpcy5hZGpvaW5pbmdNZXRhZWRnZT1udWxsO3RoaXMuc3RydWN0dXJhbD0hMTt0aGlzLndlaWdodD0xO3RoaXMuaXNGYWRlZE91dD0hMX19Zi5SZW5kZXJNZXRhZWRnZUluZm89Cks7Y2xhc3MgTSBleHRlbmRzIEh7Y29uc3RydWN0b3IoTCxRKXtzdXBlcihMKTtMPUwubWV0YWdyYXBoLmdyYXBoKCk7US5jb21wb3VuZD0hMDt0aGlzLmNvcmVHcmFwaD1kLmNyZWF0ZUdyYXBoKEwubmFtZSxkLkdyYXBoVHlwZS5DT1JFLFEpO3RoaXMuaW5FeHRyYWN0Qm94PXt3aWR0aDowLGhlaWdodDowfTt0aGlzLm91dEV4dHJhY3RCb3g9e3dpZHRoOjAsaGVpZ2h0OjB9O3RoaXMubGlicmFyeUZ1bmN0aW9uc0JveD17d2lkdGg6MCxoZWlnaHQ6MH07dGhpcy5pc29sYXRlZEluRXh0cmFjdD1bXTt0aGlzLmlzb2xhdGVkT3V0RXh0cmFjdD1bXTt0aGlzLmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0PVtdfX1mLlJlbmRlckdyb3VwTm9kZUluZm89TTtmLm1ha2VJbkV4dHJhY3Q9bjtmLm1hcEluZGV4VG9IdWU9ZnVuY3Rpb24oTCl7cmV0dXJuIDErNTc5LjI1NjE2Nzk3MjUqTCUzNTh9O2YuZXhwYW5kVW50aWxOb2RlSXNTaG93bj1mdW5jdGlvbihMLFEpe3ZhciBUPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2VuZSIpOwpRPVEuc3BsaXQoIi8iKTt2YXIgWD1RW1EubGVuZ3RoLTFdLm1hdGNoKC8oLiopOlx3Ky8pOzI9PT1YLmxlbmd0aCYmKFFbUS5sZW5ndGgtMV09WFsxXSk7WD1RWzBdO2xldCBhYT1MLmdldFJlbmRlck5vZGVCeU5hbWUoWCk7Zm9yKGxldCBsYT0xO2xhPFEubGVuZ3RoJiZhYS5ub2RlLnR5cGUhPT1iLmdyYXBoLk5vZGVUeXBlLk9QO2xhKyspTC5idWlsZFN1YmhpZXJhcmNoeShYKSxhYS5leHBhbmRlZD0hMCxULnNldE5vZGVFeHBhbmRlZChhYSksWCs9Ii8iK1FbbGFdLGFhPUwuZ2V0UmVuZGVyTm9kZUJ5TmFtZShYKTtyZXR1cm4gYWEubm9kZS5uYW1lfX0pKGQucmVuZGVyfHwoZC5yZW5kZXI9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL3NjZW5lLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgocSx1LHgsQSl7dmFyIHk9ayhxLHUseCk7aWYoIXkuZW1wdHkoKSlyZXR1cm4geTt1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHUpO2lmKHggaW5zdGFuY2VvZiBBcnJheSlmb3IoeT0wO3k8eC5sZW5ndGg7eSsrKXUuY2xhc3NMaXN0LmFkZCh4W3ldKTtlbHNlIHUuY2xhc3NMaXN0LmFkZCh4KTtBP3Eubm9kZSgpLmluc2VydEJlZm9yZSh1LEEpOnEubm9kZSgpLmFwcGVuZENoaWxkKHUpO3JldHVybiBkMy5zZWxlY3QodSkuZGF0dW0ocS5kYXR1bSgpKX1mdW5jdGlvbiBrKHEsdSx4KXtxPXEubm9kZSgpLmNoaWxkTm9kZXM7Zm9yKGxldCBBPTA7QTxxLmxlbmd0aDtBKyspe2xldCB5PXFbQV07aWYoeS50YWdOYW1lPT09dSlpZih4IGluc3RhbmNlb2YgQXJyYXkpe2xldCB3PSEwO2ZvcihsZXQgQz0wO0M8eC5sZW5ndGg7QysrKXc9dyYmeS5jbGFzc0xpc3QuY29udGFpbnMoeFtDXSk7CmlmKHcpcmV0dXJuIGQzLnNlbGVjdCh5KX1lbHNlIGlmKCF4fHx5LmNsYXNzTGlzdC5jb250YWlucyh4KSlyZXR1cm4gZDMuc2VsZWN0KHkpfXJldHVybiBkMy5zZWxlY3QobnVsbCl9ZnVuY3Rpb24gdChxLHUpe2xldCB4PXUubm9kZS50eXBlPT09ZC5Ob2RlVHlwZS5TRVJJRVM/MDpkLmxheW91dC5QQVJBTVMuc3Vic2NlbmUubWV0YS5sYWJlbEhlaWdodDtsKGsocSwiZyIsZi5DbGFzcy5TY2VuZS5DT1JFKSwwLHgpO3ZhciBBPTA8dS5pc29sYXRlZEluRXh0cmFjdC5sZW5ndGgseT0wPHUuaXNvbGF0ZWRPdXRFeHRyYWN0Lmxlbmd0aDtsZXQgdz0wPHUubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoLEM9ZC5sYXlvdXQuUEFSQU1TLnN1YnNjZW5lLm1ldGEuZXh0cmFjdFhPZmZzZXQsRj0wO0EmJihGKz11Lm91dEV4dHJhY3RCb3gud2lkdGgpO3kmJihGKz11Lm91dEV4dHJhY3RCb3gud2lkdGgpO0EmJihBPXUuY29yZUJveC53aWR0aCxBPUY8ZC5sYXlvdXQuTUlOX0FVWF9XSURUSD8KQS1kLmxheW91dC5NSU5fQVVYX1dJRFRIK3UuaW5FeHRyYWN0Qm94LndpZHRoLzI6QS11LmluRXh0cmFjdEJveC53aWR0aC8yLXUub3V0RXh0cmFjdEJveC53aWR0aC0oeT9DOjApLEE9QS11LmxpYnJhcnlGdW5jdGlvbnNCb3gud2lkdGgtKHc/QzowKSxsKGsocSwiZyIsZi5DbGFzcy5TY2VuZS5JTkVYVFJBQ1QpLEEseCkpO3kmJih5PXUuY29yZUJveC53aWR0aCx5PUY8ZC5sYXlvdXQuTUlOX0FVWF9XSURUSD95LWQubGF5b3V0Lk1JTl9BVVhfV0lEVEgrdS5vdXRFeHRyYWN0Qm94LndpZHRoLzI6eS11Lm91dEV4dHJhY3RCb3gud2lkdGgvMix5PXktdS5saWJyYXJ5RnVuY3Rpb25zQm94LndpZHRoLSh3P0M6MCksbChrKHEsImciLGYuQ2xhc3MuU2NlbmUuT1VURVhUUkFDVCkseSx4KSk7dyYmKHU9dS5jb3JlQm94LndpZHRoLXUubGlicmFyeUZ1bmN0aW9uc0JveC53aWR0aC8yLGwoayhxLCJnIixmLkNsYXNzLlNjZW5lLkZVTkNUSU9OX0xJQlJBUlkpLHUseCkpfWZ1bmN0aW9uIGwocSwKdSx4KXtudWxsIT1xLmF0dHIoInRyYW5zZm9ybSIpJiYocT1xLnRyYW5zaXRpb24oInBvc2l0aW9uIikpO3EuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdSsiLCIreCsiKSIpfWZ1bmN0aW9uIHAocSx1KXtyZXR1cm4gdT9xLnRvRml4ZWQoMCk6MTw9TWF0aC5hYnMocSk/cS50b0ZpeGVkKDEpOnEudG9FeHBvbmVudGlhbCgxKX1mdW5jdGlvbiBtKHEsdSx4LEEpe2xldCB5PSJEZXZpY2U6ICIrcS5kZXZpY2VfbmFtZSsiXG4iO3krPSJkdHlwZTogIitxLmR0eXBlKyJcbiI7bGV0IHc9IihzY2FsYXIpIjswPHEuc2hhcGUubGVuZ3RoJiYodz0iKCIrcS5zaGFwZS5qb2luKCIsIikrIikiKTt5PXkrKCJcbnNoYXBlOiAiK3crIlxuXG4jKGVsZW1lbnRzKTogIikrKHUrIlxuIik7cT1bXTtmb3IodT0wO3U8eC5sZW5ndGg7dSsrKTA8eFt1XSYmcS5wdXNoKCIjKCIrZi5oZWFsdGhQaWxsRW50cmllc1t1XS5sYWJlbCsiKTogIit4W3VdKTt5Kz1xLmpvaW4oIiwgIikrIlxuXG4iO0EubWF4Pj0KQS5taW4mJih5Kz0ibWluOiAiK0EubWluKyIsIG1heDogIitBLm1heCsiXG4iLHkrPSJtZWFuOiAiK0EubWVhbisiLCBzdGRkZXY6ICIrQS5zdGRkZXYpO3JldHVybiB5fWZ1bmN0aW9uIG4ocSx1LHgsQSx5PTYwLHc9MTAsQz0wLEYpe2QzLnNlbGVjdChxLnBhcmVudE5vZGUpLnNlbGVjdEFsbCgiLmhlYWx0aC1waWxsIikucmVtb3ZlKCk7aWYodSl7dmFyIEQ9dS52YWx1ZSxCPUQuc2xpY2UoMiw4KSxJPUJbMF0sTj1CWzFdLE89Qls1XSxIPURbMV0sSz17bWluOkRbOF0sbWF4OkRbOV0sbWVhbjpEWzEwXSxzdGRkZXY6TWF0aC5zcXJ0KERbMTFdKX07bnVsbD09eSYmKHk9NjApO251bGw9PXcmJih3PTEwKTtudWxsPT1DJiYoQz0wKTtudWxsIT14JiZ4Lm5vZGUudHlwZT09PWIuZ3JhcGguTm9kZVR5cGUuT1AmJih5Lz0yLHcvPTIpO0Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwiZyIpO0QuY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwiKTt2YXIgTT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoZi5TVkdfTkFNRVNQQUNFLAoiZGVmcyIpO0QuYXBwZW5kQ2hpbGQoTSk7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwibGluZWFyR3JhZGllbnQiKTtBPSJoZWFsdGgtcGlsbC1ncmFkaWVudC0iK0E7TC5zZXRBdHRyaWJ1dGUoImlkIixBKTt2YXIgUT0wLFQ9IjAlIjtmb3IobGV0IGFhPTA7YWE8Qi5sZW5ndGg7YWErKylpZihCW2FhXSl7USs9QlthYV07dmFyIFg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwic3RvcCIpO1guc2V0QXR0cmlidXRlKCJvZmZzZXQiLFQpO1guc2V0QXR0cmlidXRlKCJzdG9wLWNvbG9yIixmLmhlYWx0aFBpbGxFbnRyaWVzW2FhXS5iYWNrZ3JvdW5kX2NvbG9yKTtMLmFwcGVuZENoaWxkKFgpO1Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwic3RvcCIpO1g9MTAwKlEvSCsiJSI7VC5zZXRBdHRyaWJ1dGUoIm9mZnNldCIsWCk7VC5zZXRBdHRyaWJ1dGUoInN0b3AtY29sb3IiLGYuaGVhbHRoUGlsbEVudHJpZXNbYWFdLmJhY2tncm91bmRfY29sb3IpOwpMLmFwcGVuZENoaWxkKFQpO1Q9WH1NLmFwcGVuZENoaWxkKEwpO009ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwicmVjdCIpO00uc2V0QXR0cmlidXRlKCJmaWxsIiwidXJsKCMiK0ErIikiKTtNLnNldEF0dHJpYnV0ZSgid2lkdGgiLFN0cmluZyh5KSk7TS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsU3RyaW5nKHcpKTtNLnNldEF0dHJpYnV0ZSgieSIsU3RyaW5nKEMpKTtELmFwcGVuZENoaWxkKE0pO009ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKGYuU1ZHX05BTUVTUEFDRSwidGl0bGUiKTtNLnRleHRDb250ZW50PW0odSxILEIsSyk7RC5hcHBlbmRDaGlsZChNKTt1PSExO2lmKG51bGwhPXgmJihNPXgueC15LzIsdz14Lnktdy14LmhlaWdodC8yLTIsMD54LmxhYmVsT2Zmc2V0JiYodys9eC5sYWJlbE9mZnNldCksRC5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK00rIiwgIit3KyIpIiksKEJbMl18fEJbM118fEJbNF0pJiYoeD14Lm5vZGUuYXR0cikmJgp4Lmxlbmd0aCkpZm9yKEI9MDtCPHgubGVuZ3RoO0IrKylpZigiVCI9PT14W0JdLmtleSl7dT0oeD14W0JdLnZhbHVlLnR5cGUpJiYvXkRUXyhCT09MfElOVHxVSU5UKS8udGVzdCh4KTticmVha314PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhmLlNWR19OQU1FU1BBQ0UsInRleHQiKTtpZihOdW1iZXIuaXNGaW5pdGUoSy5taW4pJiZOdW1iZXIuaXNGaW5pdGUoSy5tYXgpKXtpZihCPXAoSy5taW4sdSksSz1wKEsubWF4LHUpLHgudGV4dENvbnRlbnQ9MTxIP0IrIiB+ICIrSzpCLDA8SXx8MDxOfHwwPE8peC50ZXh0Q29udGVudCs9IiAoIixIPVtdLDA8SSYmSC5wdXNoKGBOYU5cdTAwZDcke0l9YCksMDxOJiZILnB1c2goYC1cdTIyMWVcdTAwZDcke059YCksMDxPJiZILnB1c2goYCtcdTIyMWVcdTAwZDcke099YCkseC50ZXh0Q29udGVudCs9SC5qb2luKCI7ICIpKyIpIn1lbHNlIHgudGV4dENvbnRlbnQ9IihObyBmaW5pdGUgZWxlbWVudHMpIjt4LmNsYXNzTGlzdC5hZGQoImhlYWx0aC1waWxsLXN0YXRzIik7Cm51bGw9PUYmJihGPXkvMik7eC5zZXRBdHRyaWJ1dGUoIngiLFN0cmluZyhGKSk7eC5zZXRBdHRyaWJ1dGUoInkiLFN0cmluZyhDLTIpKTtELmFwcGVuZENoaWxkKHgpO1BvbHltZXIuZG9tKHEucGFyZW50Tm9kZSkuYXBwZW5kQ2hpbGQoRCl9fWYuU1ZHX05BTUVTUEFDRT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciO2YuQ2xhc3M9e05vZGU6e0NPTlRBSU5FUjoibm9kZXMiLEdST1VQOiJub2RlIixTSEFQRToibm9kZXNoYXBlIixDT0xPUl9UQVJHRVQ6Im5vZGVjb2xvcnRhcmdldCIsTEFCRUw6Im5vZGVsYWJlbCIsQlVUVE9OX0NPTlRBSU5FUjoiYnV0dG9uY29udGFpbmVyIixCVVRUT05fQ0lSQ0xFOiJidXR0b25jaXJjbGUiLEVYUEFORF9CVVRUT046ImV4cGFuZGJ1dHRvbiIsQ09MTEFQU0VfQlVUVE9OOiJjb2xsYXBzZWJ1dHRvbiJ9LEVkZ2U6e0NPTlRBSU5FUjoiZWRnZXMiLEdST1VQOiJlZGdlIixMSU5FOiJlZGdlbGluZSIsUkVGRVJFTkNFX0VER0U6InJlZmVyZW5jZWVkZ2UiLApSRUZfTElORToicmVmbGluZSIsU0VMRUNUQUJMRToic2VsZWN0YWJsZWVkZ2UiLFNFTEVDVEVEOiJzZWxlY3RlZGVkZ2UiLFNUUlVDVFVSQUw6InN0cnVjdHVyYWwifSxBbm5vdGF0aW9uOntPVVRCT1g6Im91dC1hbm5vdGF0aW9ucyIsSU5CT1g6ImluLWFubm90YXRpb25zIixHUk9VUDoiYW5ub3RhdGlvbiIsTk9ERToiYW5ub3RhdGlvbi1ub2RlIixFREdFOiJhbm5vdGF0aW9uLWVkZ2UiLENPTlRST0xfRURHRToiYW5ub3RhdGlvbi1jb250cm9sLWVkZ2UiLExBQkVMOiJhbm5vdGF0aW9uLWxhYmVsIixFTExJUFNJUzoiYW5ub3RhdGlvbi1lbGxpcHNpcyJ9LFNjZW5lOntHUk9VUDoic2NlbmUiLENPUkU6ImNvcmUiLEZVTkNUSU9OX0xJQlJBUlk6ImZ1bmN0aW9uLWxpYnJhcnkiLElORVhUUkFDVDoiaW4tZXh0cmFjdCIsT1VURVhUUkFDVDoib3V0LWV4dHJhY3QifSxTdWJzY2VuZTp7R1JPVVA6InN1YnNjZW5lIn0sT1BOT0RFOiJvcCIsTUVUQU5PREU6Im1ldGEiLFNFUklFU05PREU6InNlcmllcyIsCkJSSURHRU5PREU6ImJyaWRnZSIsRUxMSVBTSVNOT0RFOiJlbGxpcHNpcyJ9O2YuaGVhbHRoUGlsbEVudHJpZXM9W3tiYWNrZ3JvdW5kX2NvbG9yOiIjQ0MyRjJDIixsYWJlbDoiTmFOIn0se2JhY2tncm91bmRfY29sb3I6IiNGRjhEMDAiLGxhYmVsOiItXHUyMjFlIn0se2JhY2tncm91bmRfY29sb3I6IiNFQUVBRUEiLGxhYmVsOiItIn0se2JhY2tncm91bmRfY29sb3I6IiNBNUE1QTUiLGxhYmVsOiIwIn0se2JhY2tncm91bmRfY29sb3I6IiMyNjI2MjYiLGxhYmVsOiIrIn0se2JhY2tncm91bmRfY29sb3I6IiMwMDNFRDQiLGxhYmVsOiIrXHUyMjFlIn1dO2YuZml0PWZ1bmN0aW9uKHEsdSx4LEEpe3ZhciB5PXEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bGV0IHc9bnVsbDt0cnl7aWYodz11LmdldEJCb3goKSwwPT09dy53aWR0aClyZXR1cm59Y2F0Y2goQyl7cmV0dXJufXU9ZC5sYXlvdXQuUEFSQU1TLmdyYXBoO3k9ZDMuem9vbUlkZW50aXR5LnNjYWxlKC45Kk1hdGgubWluKHkud2lkdGgvCncud2lkdGgseS5oZWlnaHQvdy5oZWlnaHQsMikpLnRyYW5zbGF0ZSh1LnBhZGRpbmcucGFkZGluZ0xlZnQsdS5wYWRkaW5nLnBhZGRpbmdUb3ApO2QzLnNlbGVjdChxKS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5jYWxsKHgudHJhbnNmb3JtLHkpLm9uKCJlbmQuZml0dGVkIiwoKT0+e3gub24oImVuZC5maXR0ZWQiLG51bGwpO0EoKX0pfTtmLnBhblRvTm9kZT1mdW5jdGlvbihxLHUseCxBKXt4PWQzLnNlbGVjdCh1KS5zZWxlY3QoYFtkYXRhLW5hbWU9IiR7cX0iXWApLm5vZGUoKTtpZigheClyZXR1cm4gY29uc29sZS53YXJuKGBwYW5Ub05vZGUoKSBmYWlsZWQgZm9yIG5vZGUgbmFtZSAiJHtxfSJgKSwhMTt2YXIgeT14LmdldEJCb3goKSx3PXguZ2V0U2NyZWVuQ1RNKCk7cT11LmNyZWF0ZVNWR1BvaW50KCk7eD11LmNyZWF0ZVNWR1BvaW50KCk7cS54PXkueDtxLnk9eS55O3gueD15LngreS53aWR0aDt4Lnk9eS55K3kuaGVpZ2h0O3E9cS5tYXRyaXhUcmFuc2Zvcm0odyk7eD0KeC5tYXRyaXhUcmFuc2Zvcm0odyk7dz0oRixELEIsSSk9PiEoRj5CJiZEPEkpO3k9dS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtjb25zdCBDPXkudG9wK3kuaGVpZ2h0LTE1MDtyZXR1cm4gdyhxLngseC54LHkubGVmdCx5LmxlZnQreS53aWR0aC0zMjApfHx3KHEueSx4LnkseS50b3AsQyk/KHc9eS5sZWZ0K3kud2lkdGgvMi0ocS54K3gueCkvMixxPXkudG9wK3kuaGVpZ2h0LzItKHEueSt4LnkpLzIseD1kMy56b29tVHJhbnNmb3JtKHUpLGQzLnNlbGVjdCh1KS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5jYWxsKEEudHJhbnNsYXRlQnksdy94LmsscS94LmspLCEwKTohMX07Zi5zZWxlY3RPckNyZWF0ZUNoaWxkPWg7Zi5zZWxlY3RDaGlsZD1rO2YuYnVpbGRHcm91cD1mdW5jdGlvbihxLHUseCxBKXtBPUF8fGYuQ2xhc3MuU2NlbmUuR1JPVVA7bGV0IHk9ayhxLCJnIixBKS5lbXB0eSgpO3E9aChxLCJnIixBKTtBPWgocSwiZyIsZi5DbGFzcy5TY2VuZS5DT1JFKTtsZXQgdz1fLnJlZHVjZSh1LmNvcmVHcmFwaC5ub2RlcygpLAooQyxGKT0+e0Y9dS5jb3JlR3JhcGgubm9kZShGKTtGLmV4Y2x1ZGVkfHxDLnB1c2goRik7cmV0dXJuIEN9LFtdKTt1Lm5vZGUudHlwZT09PWQuTm9kZVR5cGUuU0VSSUVTJiZ3LnJldmVyc2UoKTtmLmVkZ2UuYnVpbGRHcm91cChBLHUuY29yZUdyYXBoLHgpO2Yubm9kZS5idWlsZEdyb3VwKEEsdyx4KTswPHUuaXNvbGF0ZWRJbkV4dHJhY3QubGVuZ3RoPyhBPWgocSwiZyIsZi5DbGFzcy5TY2VuZS5JTkVYVFJBQ1QpLGYubm9kZS5idWlsZEdyb3VwKEEsdS5pc29sYXRlZEluRXh0cmFjdCx4KSk6ayhxLCJnIixmLkNsYXNzLlNjZW5lLklORVhUUkFDVCkucmVtb3ZlKCk7MDx1Lmlzb2xhdGVkT3V0RXh0cmFjdC5sZW5ndGg/KEE9aChxLCJnIixmLkNsYXNzLlNjZW5lLk9VVEVYVFJBQ1QpLGYubm9kZS5idWlsZEdyb3VwKEEsdS5pc29sYXRlZE91dEV4dHJhY3QseCkpOmsocSwiZyIsZi5DbGFzcy5TY2VuZS5PVVRFWFRSQUNUKS5yZW1vdmUoKTswPHUubGlicmFyeUZ1bmN0aW9uc0V4dHJhY3QubGVuZ3RoPwooQT1oKHEsImciLGYuQ2xhc3MuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSksZi5ub2RlLmJ1aWxkR3JvdXAoQSx1LmxpYnJhcnlGdW5jdGlvbnNFeHRyYWN0LHgpKTprKHEsImciLGYuQ2xhc3MuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkucmVtb3ZlKCk7dChxLHUpO3kmJnEuYXR0cigib3BhY2l0eSIsMCkudHJhbnNpdGlvbigpLmF0dHIoIm9wYWNpdHkiLDEpO3JldHVybiBxfTtmLmFkZEdyYXBoQ2xpY2tMaXN0ZW5lcj1mdW5jdGlvbihxLHUpe2QzLnNlbGVjdChxKS5vbigiY2xpY2siLCgpPT57dS5maXJlKCJncmFwaC1zZWxlY3QiKX0pfTtmLnRyYW5zbGF0ZT1sO2YucG9zaXRpb25SZWN0PWZ1bmN0aW9uKHEsdSx4LEEseSl7cS50cmFuc2l0aW9uKCkuYXR0cigieCIsdS1BLzIpLmF0dHIoInkiLHgteS8yKS5hdHRyKCJ3aWR0aCIsQSkuYXR0cigiaGVpZ2h0Iix5KX07Zi5wb3NpdGlvblRyaWFuZ2xlPWZ1bmN0aW9uKHEsdSx4LEEseSl7eS89MjtBLz0yO3U9W1t1LHgteV0sW3UrQSwKeCt5XSxbdS1BLHgreV1dO3EudHJhbnNpdGlvbigpLmF0dHIoInBvaW50cyIsdS5tYXAodz0+dy5qb2luKCIsIikpLmpvaW4oIiAiKSl9O2YucG9zaXRpb25CdXR0b249ZnVuY3Rpb24ocSx1KXtsZXQgeD1kLmxheW91dC5jb21wdXRlQ1hQb3NpdGlvbk9mTm9kZVNoYXBlKHUpKyh1LmV4cGFuZGVkP3Uud2lkdGg6dS5jb3JlQm94LndpZHRoKS8yLTYsQT11LnktKHUuZXhwYW5kZWQ/dS5oZWlnaHQ6dS5jb3JlQm94LmhlaWdodCkvMis2O3Uubm9kZS50eXBlIT09ZC5Ob2RlVHlwZS5TRVJJRVN8fHUuZXhwYW5kZWR8fCh4Kz0xMCxBLT0yKTt1PSJ0cmFuc2xhdGUoIit4KyIsIitBKyIpIjtxLnNlbGVjdEFsbCgicGF0aCIpLnRyYW5zaXRpb24oKS5hdHRyKCJ0cmFuc2Zvcm0iLHUpO3Euc2VsZWN0KCJjaXJjbGUiKS50cmFuc2l0aW9uKCkuYXR0cih7Y3g6eCxjeTpBLHI6ZC5sYXlvdXQuUEFSQU1TLm5vZGVTaXplLm1ldGEuZXhwYW5kQnV0dG9uUmFkaXVzfSl9O2YucG9zaXRpb25FbGxpcHNlPQpmdW5jdGlvbihxLHUseCxBLHkpe3EudHJhbnNpdGlvbigpLmF0dHIoImN4Iix1KS5hdHRyKCJjeSIseCkuYXR0cigicngiLEEvMikuYXR0cigicnkiLHkvMil9O2YuaHVtYW5pemVIZWFsdGhQaWxsU3RhdD1wO2YuYWRkSGVhbHRoUGlsbD1uO2YuYWRkSGVhbHRoUGlsbHM9ZnVuY3Rpb24ocSx1LHgpe2lmKHUpe3ZhciBBPTE7ZDMuc2VsZWN0KHEpLnNlbGVjdEFsbCgiZy5ub2Rlc2hhcGUiKS5lYWNoKGZ1bmN0aW9uKHkpe2NvbnN0IHc9dVt5Lm5vZGUubmFtZV07bih0aGlzLHc/d1t4XTpudWxsLHksQSsrKX0pfX19KShkLnNjZW5lfHwoZC5zY2VuZT17fSkpfSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vdGVtcGxhdGUuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7ZnVuY3Rpb24gaChuKXtsZXQgcT1fLm1hcCh7ZGVwdGg6bi5kZXB0aCwifFZ8IjpuLm1ldGFncmFwaC5ub2RlcygpLmxlbmd0aCwifEV8IjpuLm1ldGFncmFwaC5lZGdlcygpLmxlbmd0aH0sZnVuY3Rpb24odSx4KXtyZXR1cm4geCsiXHgzZCIrdX0pLmpvaW4oIiAiKTtuPV8ubWFwKG4ub3BIaXN0b2dyYW0sZnVuY3Rpb24odSx4KXtyZXR1cm4geCsiXHgzZCIrdX0pLmpvaW4oIiwiKTtyZXR1cm4gcSsiIFtvcHNdICIrbn1mdW5jdGlvbiBrKG4pe2NvbnN0IHE9bi5nZXROb2RlTWFwKCk7bGV0IHU9T2JqZWN0LmtleXMocSkucmVkdWNlKCh4LEEpPT57Y29uc3QgeT1xW0FdO2lmKHkudHlwZSE9PWQuTm9kZVR5cGUuTUVUQSlyZXR1cm4geDtBPUEuc3BsaXQoIi8iKS5sZW5ndGgtMTtsZXQgdz1oKHkpLEM9eFt3XXx8e25vZGVzOltdLGxldmVsOkF9O3hbd109QztDLm5vZGVzLnB1c2goeSk7Qy5sZXZlbD5BJiYoQy5sZXZlbD0KQSk7cmV0dXJuIHh9LHt9KTtyZXR1cm4gT2JqZWN0LmtleXModSkubWFwKHg9Plt4LHVbeF1dKS5maWx0ZXIoKFsseF0pPT57eD14Lm5vZGVzO2lmKDE8eC5sZW5ndGgpcmV0dXJuITA7eD14WzBdO3JldHVybiB4LnR5cGU9PT1kLk5vZGVUeXBlLk1FVEEmJnguYXNzb2NpYXRlZEZ1bmN0aW9ufSkuc29ydCgoWyx4XSk9Pngubm9kZXNbMF0uZGVwdGgpfWZ1bmN0aW9uIHQobixxKXtyZXR1cm4gXy5yZWR1Y2UobixmdW5jdGlvbih1LHgpe2xldCBBPXhbMF0seT1bXTt4WzFdLm5vZGVzLmZvckVhY2goZnVuY3Rpb24odyl7Zm9yKGxldCBDPTA7Qzx5Lmxlbmd0aDtDKyspaWYoIXF8fHAoeVtDXS5tZXRhbm9kZS5tZXRhZ3JhcGgsdy5tZXRhZ3JhcGgpKXt3LnRlbXBsYXRlSWQ9eVtDXS5tZXRhbm9kZS50ZW1wbGF0ZUlkO3lbQ10ubWVtYmVycy5wdXNoKHcubmFtZSk7cmV0dXJufXcudGVtcGxhdGVJZD1BKyJbIit5Lmxlbmd0aCsiXSI7eS5wdXNoKHttZXRhbm9kZTp3LG1lbWJlcnM6W3cubmFtZV19KX0pOwp5LmZvckVhY2goZnVuY3Rpb24odyl7dVt3Lm1ldGFub2RlLnRlbXBsYXRlSWRdPXtsZXZlbDp4WzFdLmxldmVsLG5vZGVzOncubWVtYmVyc319KTtyZXR1cm4gdX0se30pfWZ1bmN0aW9uIGwobixxLHUpe3JldHVybiBfLnNvcnRCeShuLFt4PT5xLm5vZGUoeCkub3AseD0+cS5ub2RlKHgpLnRlbXBsYXRlSWQseD0+cS5uZWlnaGJvcnMoeCkubGVuZ3RoLHg9PnEucHJlZGVjZXNzb3JzKHgpLmxlbmd0aCx4PT5xLnN1Y2Nlc3NvcnMoeCkubGVuZ3RoLHg9Pnguc3Vic3RyKHUubGVuZ3RoKV0pfWZ1bmN0aW9uIHAobixxKXtmdW5jdGlvbiB1KEksTil7bGV0IE89SS5zdWJzdHIoeC5sZW5ndGgpLEg9Ti5zdWJzdHIoQS5sZW5ndGgpO2lmKHlbT11ed1tIXSlyZXR1cm4gY29uc29sZS53YXJuKCJkaWZmZXJlbnQgdmlzaXQgcGF0dGVybiIsIlsiK3grIl0iLE8sIlsiK0ErIl0iLEgpLCEwO3lbT118fCh5W09dPXdbSF09ITAsQy5wdXNoKHtuMTpJLG4yOk59KSk7cmV0dXJuITF9aWYoIWIuZ3JhcGguaGFzU2ltaWxhckRlZ3JlZVNlcXVlbmNlKG4sCnEpKXJldHVybiExO2xldCB4PW4uZ3JhcGgoKS5uYW1lLEE9cS5ncmFwaCgpLm5hbWUseT17fSx3PXt9LEM9W107dmFyIEY9bi5zb3VyY2VzKCksRD1xLnNvdXJjZXMoKTtpZihGLmxlbmd0aCE9PUQubGVuZ3RoKXJldHVybiBjb25zb2xlLmxvZygiZGlmZmVyZW50IHNvdXJjZSBsZW5ndGgiKSwhMTtGPWwoRixuLHgpO0Q9bChELHEsQSk7Zm9yKHZhciBCPTA7QjxGLmxlbmd0aDtCKyspaWYodShGW0JdLERbQl0pKXJldHVybiExO2Zvcig7MDxDLmxlbmd0aDspe0Q9Qy5wb3AoKTtpZighbShuLm5vZGUoRC5uMSkscS5ub2RlKEQubjIpKSlyZXR1cm4hMTtGPW4uc3VjY2Vzc29ycyhELm4xKTtEPXEuc3VjY2Vzc29ycyhELm4yKTtpZihGLmxlbmd0aCE9PUQubGVuZ3RoKXJldHVybiBjb25zb2xlLmxvZygiIyBvZiBzdWNjZXNzb3JzIG1pc21hdGNoIixGLEQpLCExO0Y9bChGLG4seCk7RD1sKEQscSxBKTtmb3IoQj0wO0I8Ri5sZW5ndGg7QisrKWlmKHUoRltCXSxEW0JdKSlyZXR1cm4hMX1yZXR1cm4hMH0KZnVuY3Rpb24gbShuLHEpe2lmKG4udHlwZT09PWQuTm9kZVR5cGUuTUVUQSlyZXR1cm4gbi50ZW1wbGF0ZUlkJiZxLnRlbXBsYXRlSWQmJm4udGVtcGxhdGVJZD09PXEudGVtcGxhdGVJZDtpZihuLnR5cGU9PT1kLk5vZGVUeXBlLk9QJiZxLnR5cGU9PT1kLk5vZGVUeXBlLk9QKXJldHVybiBuLm9wPT09cS5vcDtpZihuLnR5cGU9PT1kLk5vZGVUeXBlLlNFUklFUyYmcS50eXBlPT09ZC5Ob2RlVHlwZS5TRVJJRVMpe2xldCB1PW4ubWV0YWdyYXBoLm5vZGVDb3VudCgpO3JldHVybiB1PT09cS5tZXRhZ3JhcGgubm9kZUNvdW50KCkmJigwPT09dXx8bi5tZXRhZ3JhcGgubm9kZShuLm1ldGFncmFwaC5ub2RlcygpWzBdKS5vcD09PXEubWV0YWdyYXBoLm5vZGUocS5tZXRhZ3JhcGgubm9kZXMoKVswXSkub3ApfXJldHVybiExfWYuZGV0ZWN0PWZ1bmN0aW9uKG4scSl7bj1rKG4pO2xldCB1PXQobixxKTtyZXR1cm4gT2JqZWN0LmtleXModSkuc29ydCh4PT51W3hdLmxldmVsKS5yZWR1Y2UoKHgsCkEpPT57eFtBXT11W0FdO3JldHVybiB4fSx7fSl9fSkoZC50ZW1wbGF0ZXx8KGQudGVtcGxhdGU9e30pKX0pKGIuZ3JhcGh8fChiLmdyYXBoPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29tbW9uL3V0aWwuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7Zi50aW1lPWZ1bmN0aW9uKGgsayl7bGV0IHQ9RGF0ZS5ub3coKTtrPWsoKTtjb25zb2xlLmxvZyhoLCI6IixEYXRlLm5vdygpLXQsIm1zIik7cmV0dXJuIGt9O2YuZ2V0VHJhY2tlcj1mdW5jdGlvbihoKXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihrKXtoLnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTpoLnByb2dyZXNzLnZhbHVlLG1zZzprfSl9LHVwZGF0ZVByb2dyZXNzOmZ1bmN0aW9uKGspe2guc2V0KCJwcm9ncmVzcyIse3ZhbHVlOmgucHJvZ3Jlc3MudmFsdWUrayxtc2c6aC5wcm9ncmVzcy5tc2d9KX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24oayx0KXtjb25zb2xlLmVycm9yKHQuc3RhY2spO2guc2V0KCJwcm9ncmVzcyIse3ZhbHVlOmgucHJvZ3Jlc3MudmFsdWUsbXNnOmssZXJyb3I6ITB9KX19fTtmLmdldFN1YnRhc2tUcmFja2VyPWZ1bmN0aW9uKGgsayx0KXtyZXR1cm57c2V0TWVzc2FnZTpmdW5jdGlvbihsKXtoLnNldE1lc3NhZ2UodCsKIjogIitsKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24obCl7aC51cGRhdGVQcm9ncmVzcyhsKmsvMTAwKX0scmVwb3J0RXJyb3I6ZnVuY3Rpb24obCxwKXtoLnJlcG9ydEVycm9yKHQrIjogIitsLHApfX19O2YucnVuVGFzaz1mdW5jdGlvbihoLGspe2suc2V0TWVzc2FnZSgiUmVhZGluZyBtZXRhZGF0YSBwYnR4dCIpO3RyeXtsZXQgdD1iLmdyYXBoLnV0aWwudGltZSgiUmVhZGluZyBtZXRhZGF0YSBwYnR4dCIsaCk7ay51cGRhdGVQcm9ncmVzcyg0MCk7cmV0dXJuIHR9Y2F0Y2godCl7ay5yZXBvcnRFcnJvcigiRmFpbGVkIFJlYWRpbmcgbWV0YWRhdGEgcGJ0eHQiLHQpfX07Zi5ydW5Bc3luY1Rhc2s9ZnVuY3Rpb24oaCxrLHQsbCl7cmV0dXJuIG5ldyBQcm9taXNlKHA9PntsLnNldE1lc3NhZ2UoaCk7c2V0VGltZW91dChmdW5jdGlvbigpe3RyeXtsZXQgbT1iLmdyYXBoLnV0aWwudGltZShoLHQpO2wudXBkYXRlUHJvZ3Jlc3Moayk7cChtKX1jYXRjaChtKXtsLnJlcG9ydEVycm9yKCJGYWlsZWQgIisKaCxtKX19LDIwKX0pfTtmLnJ1bkFzeW5jUHJvbWlzZVRhc2s9ZnVuY3Rpb24oaCxrLHQsbCl7cmV0dXJuIG5ldyBQcm9taXNlKChwLG0pPT57ZnVuY3Rpb24gbihxKXtsLnJlcG9ydEVycm9yKCJGYWlsZWQgIitoLHEpO20ocSl9bC5zZXRNZXNzYWdlKGgpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0cnl7bGV0IHE9RGF0ZS5ub3coKTt0KCkudGhlbihmdW5jdGlvbih1KXtjb25zb2xlLmxvZyhoLCI6IixEYXRlLm5vdygpLXEsIm1zIik7bC51cGRhdGVQcm9ncmVzcyhrKTtwKHUpfSkuY2F0Y2gobil9Y2F0Y2gocSl7bihxKX19LDIwKX0pfTtmLmVzY2FwZVF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24oaCl7cmV0dXJuIGgucmVwbGFjZSgvKFs6LlxbXF0sL1xcXChcKV0pL2csIlxcJDEiKX07Zi5NRU1PUllfVU5JVFM9W3tzeW1ib2w6IkIifSx7c3ltYm9sOiJLQiIsbnVtVW5pdHM6MTAyNH0se3N5bWJvbDoiTUIiLG51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IkdCIixudW1Vbml0czoxMDI0fSx7c3ltYm9sOiJUQiIsCm51bVVuaXRzOjEwMjR9LHtzeW1ib2w6IlBCIixudW1Vbml0czoxMDI0fV07Zi5USU1FX1VOSVRTPVt7c3ltYm9sOiJcdTAwYjVzIn0se3N5bWJvbDoibXMiLG51bVVuaXRzOjFFM30se3N5bWJvbDoicyIsbnVtVW5pdHM6MUUzfSx7c3ltYm9sOiJtaW4iLG51bVVuaXRzOjYwfSx7c3ltYm9sOiJociIsbnVtVW5pdHM6NjB9LHtzeW1ib2w6ImRheXMiLG51bVVuaXRzOjI0fV07Zi5jb252ZXJ0VW5pdHNUb0h1bWFuUmVhZGFibGU9ZnVuY3Rpb24oaCxrLHQ9MCl7cmV0dXJuIHQrMTxrLmxlbmd0aCYmaD49a1t0KzFdLm51bVVuaXRzP2IuZ3JhcGgudXRpbC5jb252ZXJ0VW5pdHNUb0h1bWFuUmVhZGFibGUoaC9rW3QrMV0ubnVtVW5pdHMsayx0KzEpOk51bWJlcihoLnRvUHJlY2lzaW9uKDMpKSsiICIra1t0XS5zeW1ib2x9O2YuaGFzRGlzcGxheWFibGVOb2RlU3RhdHM9ZnVuY3Rpb24oaCl7cmV0dXJuIGgmJigwPGgudG90YWxCeXRlc3x8MDxoLmdldFRvdGFsTWljcm9zKCl8fGgub3V0cHV0U2l6ZSk/CiEwOiExfTtmLnJlbW92ZUNvbW1vblByZWZpeD1mdW5jdGlvbihoKXtpZigyPmgubGVuZ3RoKXJldHVybiBoO2xldCBrPTAsdD0wLGw9Xy5taW4oXy5tYXAoaCxwPT5wLmxlbmd0aCkpO2Zvcig7Oyl7aysrO2xldCBwPV8ubWFwKGgsbT0+bS5zdWJzdHJpbmcoMCxrKSk7aWYocC5ldmVyeSgobSxuKT0+MD09PW4/ITA6bT09PXBbbi0xXSkpe2lmKGs+PWwpcmV0dXJuIGg7dD1rfWVsc2UgYnJlYWt9cmV0dXJuIF8ubWFwKGgscD0+cC5zdWJzdHJpbmcodCkpfTtmLmNvbXB1dGVIdW1hbkZyaWVuZGx5VGltZT1mdW5jdGlvbihoKXtoPStuZXcgRGF0ZS0rbmV3IERhdGUoaC8xRTMpO3JldHVybiAzRTQ+aD8ianVzdCBub3ciOjZFND5oP01hdGguZmxvb3IoaC8xRTMpKyIgc2Vjb25kcyBhZ28iOjEyRTQ+aD8iYSBtaW51dGUgYWdvIjozNkU1Pmg/TWF0aC5mbG9vcihoLzZFNCkrIiBtaW51dGVzIGFnbyI6MT09TWF0aC5mbG9vcihoLzM2RTUpPyJhbiBob3VyIGFnbyI6ODY0RTU+aD9NYXRoLmZsb29yKGgvCjM2RTUpKyIgaG91cnMgYWdvIjoxNzI4RTU+aD8ieWVzdGVyZGF5IjpNYXRoLmZsb29yKGgvODY0RTUpKyIgZGF5cyBhZ28ifX0pKGQudXRpbHx8KGQudXRpbD17fSkpfSkoYi5ncmFwaHx8KGIuZ3JhcGg9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vbWluaW1hcC5qcwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpe2NsYXNzIGZ7Y29uc3RydWN0b3IoaCxrLHQsbCxwLG0pe3RoaXMuc3ZnPWg7dGhpcy5sYWJlbFBhZGRpbmc9bTt0aGlzLnpvb21HPWs7dGhpcy5tYWluWm9vbT10O3RoaXMubWF4V2FuZEg9cDtoPWQzLnNlbGVjdChsLnNoYWRvd1Jvb3QpO2xldCBuPWguc2VsZWN0KCJzdmciKSxxPW4uc2VsZWN0KCJyZWN0Iik7dGhpcy52aWV3cG9pbnRDb29yZD17eDowLHk6MH07az1kMy5kcmFnKCkuc3ViamVjdChPYmplY3QpLm9uKCJkcmFnIiwoKT0+e3RoaXMudmlld3BvaW50Q29vcmQueD1kMy5ldmVudC54O3RoaXMudmlld3BvaW50Q29vcmQueT1kMy5ldmVudC55O3RoaXMudXBkYXRlVmlld3BvaW50KCl9KTtxLmRhdHVtKHRoaXMudmlld3BvaW50Q29vcmQpLmNhbGwoayk7bi5vbigiY2xpY2siLCgpPT57aWYoIWQzLmV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpe3ZhciB1PU51bWJlcihxLmF0dHIoIndpZHRoIikpLHg9TnVtYmVyKHEuYXR0cigiaGVpZ2h0IikpLApBPWQzLm1vdXNlKG4ubm9kZSgpKTt0aGlzLnZpZXdwb2ludENvb3JkLng9QVswXS11LzI7dGhpcy52aWV3cG9pbnRDb29yZC55PUFbMV0teC8yO3RoaXMudXBkYXRlVmlld3BvaW50KCl9fSk7dGhpcy52aWV3cG9pbnQ9cS5ub2RlKCk7dGhpcy5taW5pbWFwU3ZnPW4ubm9kZSgpO3RoaXMubWluaW1hcD1sO3RoaXMuY2FudmFzPWguc2VsZWN0KCJjYW52YXMuZmlyc3QiKS5ub2RlKCk7dGhpcy5jYW52YXNCdWZmZXI9aC5zZWxlY3QoImNhbnZhcy5zZWNvbmQiKS5ub2RlKCk7dGhpcy5kb3dubG9hZENhbnZhcz1oLnNlbGVjdCgiY2FudmFzLmRvd25sb2FkIikubm9kZSgpO2QzLnNlbGVjdCh0aGlzLmRvd25sb2FkQ2FudmFzKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKTt0aGlzLnVwZGF0ZSgpfXVwZGF0ZVZpZXdwb2ludCgpe2QzLnNlbGVjdCh0aGlzLnZpZXdwb2ludCkuYXR0cigieCIsdGhpcy52aWV3cG9pbnRDb29yZC54KS5hdHRyKCJ5Iix0aGlzLnZpZXdwb2ludENvb3JkLnkpO2xldCBoPQotdGhpcy52aWV3cG9pbnRDb29yZC54KnRoaXMuc2NhbGVNYWluL3RoaXMuc2NhbGVNaW5pbWFwLGs9LXRoaXMudmlld3BvaW50Q29vcmQueSp0aGlzLnNjYWxlTWFpbi90aGlzLnNjYWxlTWluaW1hcDtkMy5zZWxlY3QodGhpcy5zdmcpLmNhbGwodGhpcy5tYWluWm9vbS50cmFuc2Zvcm0sZDMuem9vbUlkZW50aXR5LnRyYW5zbGF0ZShoLGspLnNjYWxlKHRoaXMuc2NhbGVNYWluKSl9dXBkYXRlKCl7bGV0IGg9bnVsbDt0cnl7aWYoaD10aGlzLnpvb21HLmdldEJCb3goKSwwPT09aC53aWR0aClyZXR1cm59Y2F0Y2godSl7cmV0dXJufXZhciBrPWQzLnNlbGVjdCgiI2dyYXBoZG93bmxvYWQiKTt0aGlzLmRvd25sb2FkPWsubm9kZSgpO2sub24oImNsaWNrIiwoKT0+e1VSTC5yZXZva2VPYmplY3RVUkwodGhpcy5kb3dubG9hZC5ocmVmKTt2YXIgdT10aGlzLmRvd25sb2FkQ2FudmFzLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7Y29uc3QgeD11LnNsaWNlKDAsdS5pbmRleE9mKCIsIikpO2lmKHguZW5kc1dpdGgoIjtiYXNlNjQiKSl7dmFyIEE9CmF0b2IodS5zbGljZSh1LmluZGV4T2YoIiwiKSsxKSk7dT0obmV3IFVpbnQ4QXJyYXkoQS5sZW5ndGgpKS5tYXAoKHksdyk9PkEuY2hhckNvZGVBdCh3KSk7dGhpcy5kb3dubG9hZC5ocmVmPVVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW3VdLHt0eXBlOiJpbWFnZS9wbmcifSkpfWVsc2UgY29uc29sZS53YXJuKGBub24tYmFzZTY0IGRhdGEgVVJMICgke3h9KTsgY2Fubm90IHVzZSBibG9iIGRvd25sb2FkYCksdGhpcy5kb3dubG9hZC5ocmVmPXV9KTtrPWQzLnNlbGVjdCh0aGlzLnN2Zyk7dmFyIHQ9IiIsbD10aGlzLnN2ZztsPShsLmdldFJvb3ROb2RlP2wuZ2V0Um9vdE5vZGUoKTp0aGlzLnN2Zy5wYXJlbnROb2RlKS5zdHlsZVNoZWV0cztmb3IodmFyIHA9MDtwPGwubGVuZ3RoO3ArKyl0cnl7dmFyIG09bFtwXS5jc3NSdWxlc3x8bFtwXS5ydWxlcztpZihudWxsIT1tKWZvcihsZXQgdT0wO3U8bS5sZW5ndGg7dSsrKXQrPW1bdV0uY3NzVGV4dC5yZXBsYWNlKC8gP3RmLVtcdy1dKyA/L2csCiIiKSsiXG4ifWNhdGNoKHUpe2lmKCJTZWN1cml0eUVycm9yIiE9PXUubmFtZSl0aHJvdyB1O31tPWsuYXBwZW5kKCJzdHlsZSIpO20udGV4dCh0KTt0PWQzLnNlbGVjdCh0aGlzLnpvb21HKTtsPXQuYXR0cigidHJhbnNmb3JtIik7dC5hdHRyKCJ0cmFuc2Zvcm0iLG51bGwpO2guaGVpZ2h0Kz1oLnk7aC53aWR0aCs9aC54O2guaGVpZ2h0Kz0yKnRoaXMubGFiZWxQYWRkaW5nO2gud2lkdGgrPTIqdGhpcy5sYWJlbFBhZGRpbmc7ay5hdHRyKCJ3aWR0aCIsaC53aWR0aCkuYXR0cigiaGVpZ2h0IixoLmhlaWdodCk7dGhpcy5zY2FsZU1pbmltYXA9dGhpcy5tYXhXYW5kSC9NYXRoLm1heChoLndpZHRoLGguaGVpZ2h0KTt0aGlzLm1pbmltYXBTaXplPXt3aWR0aDpoLndpZHRoKnRoaXMuc2NhbGVNaW5pbWFwLGhlaWdodDpoLmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcH07ZDMuc2VsZWN0KHRoaXMubWluaW1hcFN2ZykuYXR0cih0aGlzLm1pbmltYXBTaXplKTtkMy5zZWxlY3QodGhpcy5jYW52YXNCdWZmZXIpLmF0dHIodGhpcy5taW5pbWFwU2l6ZSk7CnA9ZDMuc2VsZWN0KHRoaXMuZG93bmxvYWRDYW52YXMpO3Auc3R5bGUoIndpZHRoIixoLndpZHRoKTtwLnN0eWxlKCJoZWlnaHQiLGguaGVpZ2h0KTtwLmF0dHIoIndpZHRoIiwzKmgud2lkdGgpO3AuYXR0cigiaGVpZ2h0IiwzKmguaGVpZ2h0KTtudWxsIT10aGlzLnRyYW5zbGF0ZSYmbnVsbCE9dGhpcy56b29tJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PnRoaXMuem9vbSgpKTtsZXQgbj0obmV3IFhNTFNlcmlhbGl6ZXIpLnNlcmlhbGl6ZVRvU3RyaW5nKHRoaXMuc3ZnKTttLnJlbW92ZSgpO2suYXR0cigid2lkdGgiLG51bGwpLmF0dHIoImhlaWdodCIsbnVsbCk7dC5hdHRyKCJ0cmFuc2Zvcm0iLGwpO2xldCBxPW5ldyBJbWFnZTtxLm9ubG9hZD0oKT0+e3ZhciB1PXRoaXMuY2FudmFzQnVmZmVyLmdldENvbnRleHQoIjJkIik7dS5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzQnVmZmVyLndpZHRoLHRoaXMuY2FudmFzQnVmZmVyLmhlaWdodCk7dS5kcmF3SW1hZ2UocSwwLDAsdGhpcy5taW5pbWFwU2l6ZS53aWR0aCwKdGhpcy5taW5pbWFwU2l6ZS5oZWlnaHQpO3JlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e2QzLnNlbGVjdCh0aGlzLmNhbnZhc0J1ZmZlcikuc3R5bGUoImRpc3BsYXkiLG51bGwpO2QzLnNlbGVjdCh0aGlzLmNhbnZhcykuc3R5bGUoImRpc3BsYXkiLCJub25lIik7W3RoaXMuY2FudmFzLHRoaXMuY2FudmFzQnVmZmVyXT1bdGhpcy5jYW52YXNCdWZmZXIsdGhpcy5jYW52YXNdfSk7dT10aGlzLmRvd25sb2FkQ2FudmFzLmdldENvbnRleHQoIjJkIik7dS5jbGVhclJlY3QoMCwwLHRoaXMuZG93bmxvYWRDYW52YXMud2lkdGgsdGhpcy5kb3dubG9hZENhbnZhcy5oZWlnaHQpO3UuZHJhd0ltYWdlKHEsMCwwLHRoaXMuZG93bmxvYWRDYW52YXMud2lkdGgsdGhpcy5kb3dubG9hZENhbnZhcy5oZWlnaHQpfTtxLm9uZXJyb3I9KCk9PntxLnNyYz1VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuXSx7dHlwZToiaW1hZ2Uvc3ZnK3htbDtjaGFyc2V0XHgzZHV0Zi04In0pKX07cS5zcmM9CiJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldFx4M2R1dGYtOCwiK2VuY29kZVVSSUNvbXBvbmVudChuKX16b29tKGgpe2lmKG51bGwhPXRoaXMuc2NhbGVNaW5pbWFwKXtoJiYodGhpcy50cmFuc2xhdGU9W2gueCxoLnldLHRoaXMuc2NhbGVNYWluPWguayk7dmFyIGs9dGhpcy5zdmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdD1kMy5zZWxlY3QodGhpcy52aWV3cG9pbnQpO3RoaXMudmlld3BvaW50Q29vcmQueD0tdGhpcy50cmFuc2xhdGVbMF0qdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47dGhpcy52aWV3cG9pbnRDb29yZC55PS10aGlzLnRyYW5zbGF0ZVsxXSp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbjtoPWsud2lkdGgqdGhpcy5zY2FsZU1pbmltYXAvdGhpcy5zY2FsZU1haW47az1rLmhlaWdodCp0aGlzLnNjYWxlTWluaW1hcC90aGlzLnNjYWxlTWFpbjt0LmF0dHIoIngiLHRoaXMudmlld3BvaW50Q29vcmQueCkuYXR0cigieSIsdGhpcy52aWV3cG9pbnRDb29yZC55KS5hdHRyKCJ3aWR0aCIsCmgpLmF0dHIoImhlaWdodCIsayk7dD10aGlzLm1pbmltYXBTaXplLndpZHRoO3ZhciBsPXRoaXMubWluaW1hcFNpemUuaGVpZ2h0LHA9dGhpcy52aWV3cG9pbnRDb29yZC54LG09dGhpcy52aWV3cG9pbnRDb29yZC55Oy44PihNYXRoLm1pbihNYXRoLm1heCgwLHAraCksdCktTWF0aC5taW4oTWF0aC5tYXgoMCxwKSx0KSkqKE1hdGgubWluKE1hdGgubWF4KDAsbStrKSxsKS1NYXRoLm1pbihNYXRoLm1heCgwLG0pLGwpKS8odCpsKT90aGlzLm1pbmltYXAuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik6dGhpcy5taW5pbWFwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfX19ZC5NaW5pbWFwPWZ9KShiLnNjZW5lfHwoYi5zY2VuZT17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoL3RmLWdyYXBoLW1pbmltYXAuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtZ3JhcGgtbWluaW1hcCIsaW5pdDpmdW5jdGlvbihiLGQsZixoLGspe3JldHVybiBuZXcgdGYuc2NlbmUuTWluaW1hcChiLGQsZix0aGlzLGgsayl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgvdGYtZ3JhcGgtc2NlbmUuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtZ3JhcGgtc2NlbmUiLHByb3BlcnRpZXM6e3JlbmRlckhpZXJhcmNoeTpPYmplY3QsbmFtZTpTdHJpbmcsY29sb3JCeTpTdHJpbmcsdHJhY2VJbnB1dHM6Qm9vbGVhbixfaGFzUmVuZGVySGllcmFyY2h5QmVlbkZpdE9uY2U6Qm9vbGVhbixfaXNBdHRhY2hlZDpCb29sZWFuLF96b29tOk9iamVjdCxoaWdobGlnaHRlZE5vZGU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfaGlnaGxpZ2h0ZWROb2RlQ2hhbmdlZCJ9LHNlbGVjdGVkTm9kZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9zZWxlY3RlZE5vZGVDaGFuZ2VkIn0saGFuZGxlRWRnZVNlbGVjdGVkOk9iamVjdCxfem9vbWVkOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9vblpvb21DaGFuZ2VkIix2YWx1ZTohMX0sX3pvb21TdGFydENvb3Jkczp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sX3pvb21UcmFuc2Zvcm06e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LF9tYXhab29tRGlzdGFuY2VGb3JDbGljazp7dHlwZTpOdW1iZXIsCnZhbHVlOjIwfSx0ZW1wbGF0ZUluZGV4OkZ1bmN0aW9uLG1pbmltYXA6T2JqZWN0LF9ub2RlR3JvdXBJbmRleDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19LF9hbm5vdGF0aW9uR3JvdXBJbmRleDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19LF9lZGdlR3JvdXBJbmRleDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57fX19LG1heE1ldGFub2RlTGFiZWxMZW5ndGhGb250U2l6ZTp7dHlwZTpOdW1iZXIsdmFsdWU6OX0sbWluTWV0YW5vZGVMYWJlbExlbmd0aEZvbnRTaXplOnt0eXBlOk51bWJlcix2YWx1ZTo2fSxtYXhNZXRhbm9kZUxhYmVsTGVuZ3RoTGFyZ2VGb250Ont0eXBlOk51bWJlcix2YWx1ZToxMX0sbWF4TWV0YW5vZGVMYWJlbExlbmd0aDp7dHlwZTpOdW1iZXIsdmFsdWU6MTh9LHByb2dyZXNzOk9iamVjdCxub2RlQ29udGV4dE1lbnVJdGVtczpBcnJheSxub2RlTmFtZXNUb0hlYWx0aFBpbGxzOk9iamVjdCwKaGVhbHRoUGlsbFN0ZXBJbmRleDpOdW1iZXJ9LG9ic2VydmVyczpbIl9jb2xvckJ5Q2hhbmdlZChjb2xvckJ5KSIsIl9yZW5kZXJIaWVyYXJjaHlDaGFuZ2VkKHJlbmRlckhpZXJhcmNoeSkiLCJfYW5pbWF0ZUFuZEZpdChfaXNBdHRhY2hlZCwgcmVuZGVySGllcmFyY2h5KSIsIl91cGRhdGVIZWFsdGhQaWxscyhub2RlTmFtZXNUb0hlYWx0aFBpbGxzLCBoZWFsdGhQaWxsU3RlcEluZGV4KSIsIl91cGRhdGVJbnB1dFRyYWNlKHRyYWNlSW5wdXRzLCBzZWxlY3RlZE5vZGUpIl0sZ2V0Tm9kZTpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShiKX0saXNOb2RlRXhwYW5kZWQ6ZnVuY3Rpb24oYil7cmV0dXJuIGIuZXhwYW5kZWR9LHNldE5vZGVFeHBhbmRlZDpmdW5jdGlvbigpe3RoaXMuX2J1aWxkKHRoaXMucmVuZGVySGllcmFyY2h5KTt0aGlzLl91cGRhdGVMYWJlbHMoIXRoaXMuX3pvb21lZCl9LHBhblRvTm9kZShiKXt0Zi5ncmFwaC5zY2VuZS5wYW5Ub05vZGUoYiwKdGhpcy4kLnN2Zyx0aGlzLiQucm9vdCx0aGlzLl96b29tKSYmKHRoaXMuX3pvb21lZD0hMCl9LGdldEdyYXBoU3ZnUm9vdCgpe3JldHVybiB0aGlzLiQuc3ZnfSxnZXRDb250ZXh0TWVudSgpe3JldHVybiB0aGlzLiQuY29udGV4dE1lbnV9LF9yZXNldFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5fbm9kZUdyb3VwSW5kZXg9e307dGhpcy5fYW5ub3RhdGlvbkdyb3VwSW5kZXg9e307dGhpcy5fZWRnZUdyb3VwSW5kZXg9e307dGhpcy5fdXBkYXRlTGFiZWxzKCExKTtkMy5zZWxlY3QodGhpcy4kLnN2Zykuc2VsZWN0KCIjcm9vdCIpLnNlbGVjdEFsbCgiKiIpLnJlbW92ZSgpO3RmLmdyYXBoLnNjZW5lLm5vZGUucmVtb3ZlR3JhZGllbnREZWZpbml0aW9ucyh0aGlzLiQuc3ZnKX0sX2J1aWxkOmZ1bmN0aW9uKGIpe3RoaXMudGVtcGxhdGVJbmRleD1iLmhpZXJhcmNoeS5nZXRUZW1wbGF0ZUluZGV4KCk7dGYuZ3JhcGgudXRpbC50aW1lKCJ0Zi1ncmFwaC1zY2VuZSAobGF5b3V0KToiLGZ1bmN0aW9uKCl7dGYuZ3JhcGgubGF5b3V0LmxheW91dFNjZW5lKGIucm9vdCwKdGhpcyl9LmJpbmQodGhpcykpO3RmLmdyYXBoLnV0aWwudGltZSgidGYtZ3JhcGgtc2NlbmUgKGJ1aWxkIHNjZW5lKToiLGZ1bmN0aW9uKCl7dGYuZ3JhcGguc2NlbmUuYnVpbGRHcm91cChkMy5zZWxlY3QodGhpcy4kLnJvb3QpLGIucm9vdCx0aGlzKTt0Zi5ncmFwaC5zY2VuZS5hZGRHcmFwaENsaWNrTGlzdGVuZXIodGhpcy4kLnN2Zyx0aGlzKTt0aGlzLl91cGRhdGVJbnB1dFRyYWNlKCl9LmJpbmQodGhpcykpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVIZWFsdGhQaWxscyh0aGlzLm5vZGVOYW1lc1RvSGVhbHRoUGlsbHMsdGhpcy5oZWFsdGhQaWxsU3RlcEluZGV4KTt0aGlzLm1pbmltYXAudXBkYXRlKCl9LmJpbmQodGhpcyksdGYuZ3JhcGgubGF5b3V0LlBBUkFNUy5hbmltYXRpb24uZHVyYXRpb24pfSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuX3pvb209ZDMuem9vbSgpLm9uKCJlbmQiLGZ1bmN0aW9uKCl7dGhpcy5fem9vbVN0YXJ0Q29vcmRzJiYoTWF0aC5zcXJ0KE1hdGgucG93KHRoaXMuX3pvb21TdGFydENvb3Jkcy54LQp0aGlzLl96b29tVHJhbnNmb3JtLngsMikrTWF0aC5wb3codGhpcy5fem9vbVN0YXJ0Q29vcmRzLnktdGhpcy5fem9vbVRyYW5zZm9ybS55LDIpKTx0aGlzLl9tYXhab29tRGlzdGFuY2VGb3JDbGljaz90aGlzLl9maXJlRW5hYmxlQ2xpY2soKTpzZXRUaW1lb3V0KHRoaXMuX2ZpcmVFbmFibGVDbGljay5iaW5kKHRoaXMpLDUwKSk7dGhpcy5fem9vbVN0YXJ0Q29vcmRzPW51bGx9LmJpbmQodGhpcykpLm9uKCJ6b29tIixmdW5jdGlvbigpe3RoaXMuX3pvb21UcmFuc2Zvcm09ZDMuZXZlbnQudHJhbnNmb3JtO3RoaXMuX3pvb21TdGFydENvb3Jkc3x8KHRoaXMuX3pvb21TdGFydENvb3Jkcz10aGlzLl96b29tVHJhbnNmb3JtLHRoaXMuZmlyZSgiZGlzYWJsZS1jbGljayIpKTt0aGlzLl96b29tZWQ9ITA7ZDMuc2VsZWN0KHRoaXMuJC5yb290KS5hdHRyKCJ0cmFuc2Zvcm0iLGQzLmV2ZW50LnRyYW5zZm9ybSk7dGhpcy5taW5pbWFwLnpvb20oZDMuZXZlbnQudHJhbnNmb3JtKX0uYmluZCh0aGlzKSk7CmQzLnNlbGVjdCh0aGlzLiQuc3ZnKS5jYWxsKHRoaXMuX3pvb20pLm9uKCJkYmxjbGljay56b29tIixudWxsKTtkMy5zZWxlY3Qod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpe3RoaXMubWluaW1hcC56b29tKCl9LmJpbmQodGhpcykpO3RoaXMubWluaW1hcD10aGlzLiQubWluaW1hcC5pbml0KHRoaXMuJC5zdmcsdGhpcy4kLnJvb3QsdGhpcy5fem9vbSx0Zi5ncmFwaC5sYXlvdXQuUEFSQU1TLm1pbmltYXAuc2l6ZSx0Zi5ncmFwaC5sYXlvdXQuUEFSQU1TLnN1YnNjZW5lLm1ldGEubGFiZWxIZWlnaHQpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITApfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuc2V0KCJfaXNBdHRhY2hlZCIsITEpfSxfcmVuZGVySGllcmFyY2h5Q2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZT0hMTt0aGlzLl9yZXNldFN0YXRlKCk7dGhpcy5fYnVpbGQoYil9LF9hbmltYXRlQW5kRml0OmZ1bmN0aW9uKGIpeyF0aGlzLl9oYXNSZW5kZXJIaWVyYXJjaHlCZWVuRml0T25jZSYmCmImJnNldFRpbWVvdXQodGhpcy5maXQuYmluZCh0aGlzKSx0Zi5ncmFwaC5sYXlvdXQuUEFSQU1TLmFuaW1hdGlvbi5kdXJhdGlvbil9LF91cGRhdGVMYWJlbHM6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy4kJCgiLnRpdGxlIiksZj1kLnN0eWxlLGg9dGhpcy4kJCgiLmF1eFRpdGxlIiksaz1oLnN0eWxlLHQ9dGhpcy4kJCgiLmZ1bmN0aW9uTGlicmFyeVRpdGxlIikuc3R5bGU7Y29uc3QgbD1kMy5zZWxlY3QodGhpcy4kLnN2Zyk7dmFyIHA9bC5zZWxlY3QoIi4iK3RmLmdyYXBoLnNjZW5lLkNsYXNzLlNjZW5lLkdST1VQKyJceDNlLiIrdGYuZ3JhcGguc2NlbmUuQ2xhc3MuU2NlbmUuQ09SRSkubm9kZSgpO2lmKGImJnAmJnRoaXMucHJvZ3Jlc3MmJjEwMD09PXRoaXMucHJvZ3Jlc3MudmFsdWUpe2I9bC5zZWxlY3QoIi4iK3RmLmdyYXBoLnNjZW5lLkNsYXNzLlNjZW5lLkdST1VQKyJceDNlLiIrdGYuZ3JhcGguc2NlbmUuQ2xhc3MuU2NlbmUuSU5FWFRSQUNUKS5ub2RlKCl8fGwuc2VsZWN0KCIuIisKdGYuZ3JhcGguc2NlbmUuQ2xhc3MuU2NlbmUuR1JPVVArIlx4M2UuIit0Zi5ncmFwaC5zY2VuZS5DbGFzcy5TY2VuZS5PVVRFWFRSQUNUKS5ub2RlKCk7dmFyIG09cC5nZXRDVE0oKS5lO3A9Yj9iLmdldENUTSgpLmU6bnVsbDtmLmRpc3BsYXk9ImlubGluZSI7Zi5sZWZ0PW0rInB4IjtudWxsIT09cCYmcCE9PW0/KGsuZGlzcGxheT0iaW5saW5lIixwPU1hdGgubWF4KG0rZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxwKSxrLmxlZnQ9cCsicHgiKTprLmRpc3BsYXk9Im5vbmUiO2Q9KGQ9bC5zZWxlY3QoIi4iK3RmLmdyYXBoLnNjZW5lLkNsYXNzLlNjZW5lLkdST1VQKyJceDNlLiIrdGYuZ3JhcGguc2NlbmUuQ2xhc3MuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSkubm9kZSgpKT9kLmdldENUTSgpLmU6bnVsbDtudWxsIT09ZCYmZCE9PXA/KHQuZGlzcGxheT0iaW5saW5lIixkPU1hdGgubWF4KHAraC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxkKSx0LmxlZnQ9ZCsicHgiKToKdC5kaXNwbGF5PSJub25lIn1lbHNlIGYuZGlzcGxheT0ibm9uZSIsay5kaXNwbGF5PSJub25lIix0LmRpc3BsYXk9Im5vbmUifSxfY29sb3JCeUNoYW5nZWQ6ZnVuY3Rpb24oKXtudWxsIT10aGlzLnJlbmRlckhpZXJhcmNoeSYmKF8uZWFjaCh0aGlzLl9ub2RlR3JvdXBJbmRleCwoYixkKT0+e3RoaXMuX3VwZGF0ZU5vZGVTdGF0ZShkKX0pLHRoaXMubWluaW1hcC51cGRhdGUoKSl9LGZpdDpmdW5jdGlvbigpe3RoaXMuX2hhc1JlbmRlckhpZXJhcmNoeUJlZW5GaXRPbmNlPSEwO3RmLmdyYXBoLnNjZW5lLmZpdCh0aGlzLiQuc3ZnLHRoaXMuJC5yb290LHRoaXMuX3pvb20sZnVuY3Rpb24oKXt0aGlzLl96b29tZWQ9ITF9LmJpbmQodGhpcykpfSxpc05vZGVTZWxlY3RlZDpmdW5jdGlvbihiKXtyZXR1cm4gYj09PXRoaXMuc2VsZWN0ZWROb2RlfSxpc05vZGVIaWdobGlnaHRlZDpmdW5jdGlvbihiKXtyZXR1cm4gYj09PXRoaXMuaGlnaGxpZ2h0ZWROb2RlfSxhZGRBbm5vdGF0aW9uR3JvdXA6ZnVuY3Rpb24oYiwKZCxmKXtiPWIubm9kZS5uYW1lO3RoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2JdPXRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2JdfHx7fTt0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtiXVtkLm5vZGUubmFtZV09Zn0sZ2V0QW5ub3RhdGlvbkdyb3Vwc0luZGV4OmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLl9hbm5vdGF0aW9uR3JvdXBJbmRleFtiXX0scmVtb3ZlQW5ub3RhdGlvbkdyb3VwOmZ1bmN0aW9uKGIsZCl7ZGVsZXRlIHRoaXMuX2Fubm90YXRpb25Hcm91cEluZGV4W2Iubm9kZS5uYW1lXVtkLm5vZGUubmFtZV19LGFkZE5vZGVHcm91cDpmdW5jdGlvbihiLGQpe3RoaXMuX25vZGVHcm91cEluZGV4W2JdPWR9LGdldE5vZGVHcm91cDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5fbm9kZUdyb3VwSW5kZXhbYl19LHJlbW92ZU5vZGVHcm91cDpmdW5jdGlvbihiKXtkZWxldGUgdGhpcy5fbm9kZUdyb3VwSW5kZXhbYl19LGFkZEVkZ2VHcm91cDpmdW5jdGlvbihiLGQpe3RoaXMuX2VkZ2VHcm91cEluZGV4W2JdPQpkfSxnZXRFZGdlR3JvdXA6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuX2VkZ2VHcm91cEluZGV4W2JdfSxfdXBkYXRlSGVhbHRoUGlsbHM6ZnVuY3Rpb24oYixkKXt0Zi5ncmFwaC5zY2VuZS5hZGRIZWFsdGhQaWxscyh0aGlzLiQuc3ZnLGIsZCl9LF91cGRhdGVOb2RlU3RhdGU6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5nZXROb2RlKGIpLGY9dGhpcy5nZXROb2RlR3JvdXAoYik7ZiYmdGYuZ3JhcGguc2NlbmUubm9kZS5zdHlsaXplKGYsZCx0aGlzKTtkLm5vZGUudHlwZT09PXRmLmdyYXBoLk5vZGVUeXBlLk1FVEEmJmQubm9kZS5hc3NvY2lhdGVkRnVuY3Rpb24mJiFkLmlzTGlicmFyeUZ1bmN0aW9uJiYoZj1kMy5zZWxlY3QoIi4iK3RmLmdyYXBoLnNjZW5lLkNsYXNzLlNjZW5lLkdST1VQKyJceDNlLiIrdGYuZ3JhcGguc2NlbmUuQ2xhc3MuU2NlbmUuRlVOQ1RJT05fTElCUkFSWSsnIGdbZGF0YS1uYW1lXHgzZCInKyh0Zi5ncmFwaC5GVU5DVElPTl9MSUJSQVJZX05PREVfUFJFRklYKwpkLm5vZGUuYXNzb2NpYXRlZEZ1bmN0aW9uKSsnIl0nKSx0Zi5ncmFwaC5zY2VuZS5ub2RlLnN0eWxpemUoZixkLHRoaXMpKTtfLmVhY2godGhpcy5nZXRBbm5vdGF0aW9uR3JvdXBzSW5kZXgoYiksaD0+e3RmLmdyYXBoLnNjZW5lLm5vZGUuc3R5bGl6ZShoLGQsdGhpcyx0Zi5ncmFwaC5zY2VuZS5DbGFzcy5Bbm5vdGF0aW9uLk5PREUpfSl9LF9zZWxlY3RlZE5vZGVDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7aWYoYiE9PWQmJihkJiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUoZCksYikpe3RoaXMubWluaW1hcC51cGRhdGUoKTtkPXRoaXMucmVuZGVySGllcmFyY2h5LmhpZXJhcmNoeS5ub2RlKGIpO2Zvcih2YXIgZj1bXTtudWxsIT1kLnBhcmVudE5vZGUmJmQucGFyZW50Tm9kZS5uYW1lIT10Zi5ncmFwaC5ST09UX05BTUU7KWQ9ZC5wYXJlbnROb2RlLGYucHVzaChkLm5hbWUpO3ZhciBoO18uZm9yRWFjaFJpZ2h0KGYsaz0+e3RoaXMucmVuZGVySGllcmFyY2h5LmJ1aWxkU3ViaGllcmFyY2h5KGspOwprPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUoayk7ay5ub2RlLmlzR3JvdXBOb2RlJiYhay5leHBhbmRlZCYmKGsuZXhwYW5kZWQ9ITAsaHx8KGg9aykpfSk7aCYmKHRoaXMuc2V0Tm9kZUV4cGFuZGVkKGgpLHRoaXMuX3pvb21lZD0hMCk7YiYmdGhpcy5fdXBkYXRlTm9kZVN0YXRlKGIpO3NldFRpbWVvdXQoKCk9Pnt0aGlzLnBhblRvTm9kZShiKX0sdGYuZ3JhcGgubGF5b3V0LlBBUkFNUy5hbmltYXRpb24uZHVyYXRpb24pfX0sX2hpZ2hsaWdodGVkTm9kZUNoYW5nZWQ6ZnVuY3Rpb24oYixkKXtiIT09ZCYmKGImJnRoaXMuX3VwZGF0ZU5vZGVTdGF0ZShiKSxkJiZ0aGlzLl91cGRhdGVOb2RlU3RhdGUoZCkpfSxfb25ab29tQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUxhYmVscyghdGhpcy5fem9vbWVkKX0sX2ZpcmVFbmFibGVDbGljazpmdW5jdGlvbigpe3RoaXMuZmlyZSgiZW5hYmxlLWNsaWNrIil9LF91cGRhdGVJbnB1dFRyYWNlOmZ1bmN0aW9uKCl7dGYuZ3JhcGguc2NlbmUubm9kZS51cGRhdGVJbnB1dFRyYWNlKHRoaXMuZ2V0R3JhcGhTdmdSb290KCksCnRoaXMucmVuZGVySGllcmFyY2h5LHRoaXMuc2VsZWN0ZWROb2RlLHRoaXMudHJhY2VJbnB1dHMpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoL3RmLWdyYXBoLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWdyYXBoIixwcm9wZXJ0aWVzOntncmFwaEhpZXJhcmNoeTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLG9ic2VydmVyOiJfZ3JhcGhDaGFuZ2VkIn0sYmFzaWNHcmFwaDpPYmplY3Qsc3RhdHM6T2JqZWN0LGRldmljZXNGb3JTdGF0czpPYmplY3QsaGllcmFyY2h5UGFyYW1zOk9iamVjdCxwcm9ncmVzczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSx0aXRsZTpTdHJpbmcsc2VsZWN0ZWROb2RlOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LHNlbGVjdGVkRWRnZTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxfbGFzdFNlbGVjdGVkRWRnZUdyb3VwOk9iamVjdCxoaWdobGlnaHRlZE5vZGU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sY29sb3JCeTpTdHJpbmcsY29sb3JCeVBhcmFtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwfSxyZW5kZXJIaWVyYXJjaHk6e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLG5vdGlmeTohMH0sdHJhY2VJbnB1dHM6Qm9vbGVhbiwKbm9kZUNvbnRleHRNZW51SXRlbXM6QXJyYXksX3JlbmRlckRlcHRoOnt0eXBlOk51bWJlcix2YWx1ZToxfSxfYWxsb3dHcmFwaFNlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxub2RlTmFtZXNUb0hlYWx0aFBpbGxzOk9iamVjdCxoZWFsdGhQaWxsU3RlcEluZGV4Ok51bWJlcixlZGdlV2lkdGhGdW5jdGlvbjp7dHlwZTpPYmplY3QsdmFsdWU6IiJ9LGhhbmRsZU5vZGVTZWxlY3RlZDp7dHlwZTpPYmplY3QsdmFsdWU6IiJ9LGVkZ2VMYWJlbEZ1bmN0aW9uOnt0eXBlOk9iamVjdCx2YWx1ZToiIn0saGFuZGxlRWRnZVNlbGVjdGVkOnt0eXBlOk9iamVjdCx2YWx1ZToiIn19LG9ic2VydmVyczpbIl9zdGF0c0NoYW5nZWQoc3RhdHMsIGRldmljZXNGb3JTdGF0cykiLCJfYnVpbGROZXdSZW5kZXJIaWVyYXJjaHkoZ3JhcGhIaWVyYXJjaHksIGVkZ2VXaWR0aEZ1bmN0aW9uLCBoYW5kbGVOb2RlU2VsZWN0ZWQsIGVkZ2VMYWJlbEZ1bmN0aW9uLCBoYW5kbGVFZGdlU2VsZWN0ZWQpIiwiX3NlbGVjdGVkTm9kZUNoYW5nZWQoc2VsZWN0ZWROb2RlKSIsCiJfc2VsZWN0ZWRFZGdlQ2hhbmdlZChzZWxlY3RlZEVkZ2UpIl0scGFuVG9Ob2RlKGIpe3RoaXMuJCQoInRmLWdyYXBoLXNjZW5lIikucGFuVG9Ob2RlKGIpfSxfYnVpbGROZXdSZW5kZXJIaWVyYXJjaHkoYil7YiYmdGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkoYil9LF9zdGF0c0NoYW5nZWQ6ZnVuY3Rpb24oYixkKXt0aGlzLmdyYXBoSGllcmFyY2h5JiYoYiYmZCYmKHRmLmdyYXBoLmpvaW5TdGF0c0luZm9XaXRoR3JhcGgodGhpcy5iYXNpY0dyYXBoLGIsZCksdGYuZ3JhcGguaGllcmFyY2h5LmpvaW5BbmRBZ2dyZWdhdGVTdGF0cyh0aGlzLmdyYXBoSGllcmFyY2h5KSksdGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkodGhpcy5ncmFwaEhpZXJhcmNoeSkpfSxfYnVpbGRSZW5kZXJIaWVyYXJjaHk6ZnVuY3Rpb24oYil7dGYuZ3JhcGgudXRpbC50aW1lKCJuZXcgdGYuZ3JhcGgucmVuZGVyLkhpZXJhcmNoeSIsZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGgpe3JldHVybnttaW5WYWx1ZTpoLmRvbWFpbigpWzBdLAptYXhWYWx1ZTpoLmRvbWFpbigpWzFdLHN0YXJ0Q29sb3I6aC5yYW5nZSgpWzBdLGVuZENvbG9yOmgucmFuZ2UoKVsxXX19aWYoYi5yb290LnR5cGU9PT10Zi5ncmFwaC5Ob2RlVHlwZS5NRVRBKXt2YXIgZj1uZXcgdGYuZ3JhcGgucmVuZGVyLlJlbmRlckdyYXBoSW5mbyhiLCEhdGhpcy5zdGF0cyk7Zi5lZGdlTGFiZWxGdW5jdGlvbj10aGlzLmVkZ2VMYWJlbEZ1bmN0aW9uO2YuZWRnZVdpZHRoRnVuY3Rpb249dGhpcy5lZGdlV2lkdGhGdW5jdGlvbjt0aGlzLl9zZXRDb2xvckJ5UGFyYW1zKHtjb21wdXRlX3RpbWU6ZChmLmNvbXB1dGVUaW1lU2NhbGUpLG1lbW9yeTpkKGYubWVtb3J5VXNhZ2VTY2FsZSksZGV2aWNlOl8ubWFwKGYuZGV2aWNlQ29sb3JNYXAuZG9tYWluKCksZnVuY3Rpb24oaCl7cmV0dXJue2RldmljZTpoLGNvbG9yOmYuZGV2aWNlQ29sb3JNYXAoaCl9fSkseGxhX2NsdXN0ZXI6Xy5tYXAoZi54bGFDbHVzdGVyQ29sb3JNYXAuZG9tYWluKCksZnVuY3Rpb24oaCl7cmV0dXJue3hsYV9jbHVzdGVyOmgsCmNvbG9yOmYueGxhQ2x1c3RlckNvbG9yTWFwKGgpfX0pfSk7dGhpcy5fc2V0UmVuZGVySGllcmFyY2h5KGYpO3RoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLmZpcmUoInJlbmRlcmVkIil9KX19LmJpbmQodGhpcykpfSxfZ2V0VmlzaWJsZTpmdW5jdGlvbihiKXtyZXR1cm4gYj90aGlzLnJlbmRlckhpZXJhcmNoeS5nZXROZWFyZXN0VmlzaWJsZUFuY2VzdG9yKGIpOmJ9LGxpc3RlbmVyczp7ImdyYXBoLXNlbGVjdCI6Il9ncmFwaFNlbGVjdGVkIiwiZGlzYWJsZS1jbGljayI6Il9kaXNhYmxlQ2xpY2siLCJlbmFibGUtY2xpY2siOiJfZW5hYmxlQ2xpY2siLCJub2RlLXRvZ2dsZS1leHBhbmQiOiJfbm9kZVRvZ2dsZUV4cGFuZCIsIm5vZGUtc2VsZWN0IjoiX25vZGVTZWxlY3RlZCIsIm5vZGUtaGlnaGxpZ2h0IjoiX25vZGVIaWdobGlnaHRlZCIsIm5vZGUtdW5oaWdobGlnaHQiOiJfbm9kZVVuaGlnaGxpZ2h0ZWQiLCJub2RlLXRvZ2dsZS1leHRyYWN0IjoiX25vZGVUb2dnbGVFeHRyYWN0IiwKIm5vZGUtdG9nZ2xlLXNlcmllc2dyb3VwIjoiX25vZGVUb2dnbGVTZXJpZXNHcm91cCIsImVkZ2Utc2VsZWN0IjoiX2VkZ2VTZWxlY3RlZCIsImFubm90YXRpb24tc2VsZWN0IjoiX25vZGVTZWxlY3RlZCIsImFubm90YXRpb24taGlnaGxpZ2h0IjoiX25vZGVIaWdobGlnaHRlZCIsImFubm90YXRpb24tdW5oaWdobGlnaHQiOiJfbm9kZVVuaGlnaGxpZ2h0ZWQifSxmaXQ6ZnVuY3Rpb24oKXt0aGlzLiQuc2NlbmUuZml0KCl9LF9ncmFwaENoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImdyYXBoLXNlbGVjdCIpfSxfZ3JhcGhTZWxlY3RlZDpmdW5jdGlvbigpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3QmJih0aGlzLnNldCgic2VsZWN0ZWROb2RlIixudWxsKSx0aGlzLnNldCgic2VsZWN0ZWRFZGdlIixudWxsKSk7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH0sX2Rpc2FibGVDbGljazpmdW5jdGlvbigpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3Q9ITF9LF9lbmFibGVDbGljazpmdW5jdGlvbigpe3RoaXMuX2FsbG93R3JhcGhTZWxlY3Q9CiEwfSxfc2VsZWN0ZWROb2RlQ2hhbmdlZChiKXt0aGlzLmhhbmRsZU5vZGVTZWxlY3RlZCYmdGhpcy5oYW5kbGVOb2RlU2VsZWN0ZWQoYil9LF9zZWxlY3RlZEVkZ2VDaGFuZ2VkKGIpe3RoaXMuX2Rlc2VsZWN0UHJldmlvdXNFZGdlKCk7YiYmKHRoaXMuX2xhc3RTZWxlY3RlZEVkZ2VHcm91cC5jbGFzc2VkKHRmLmdyYXBoLnNjZW5lLkNsYXNzLkVkZ2UuU0VMRUNURUQsITApLHRoaXMuX3VwZGF0ZU1hcmtlck9mU2VsZWN0ZWRFZGdlKGIpKTt0aGlzLmhhbmRsZUVkZ2VTZWxlY3RlZCYmdGhpcy5oYW5kbGVFZGdlU2VsZWN0ZWQoYil9LF9ub2RlU2VsZWN0ZWQ6ZnVuY3Rpb24oYil7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdCYmdGhpcy5zZXQoInNlbGVjdGVkTm9kZSIsYi5kZXRhaWwubmFtZSk7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH0sX2VkZ2VTZWxlY3RlZChiKXt0aGlzLl9hbGxvd0dyYXBoU2VsZWN0JiYodGhpcy5zZXQoIl9sYXN0U2VsZWN0ZWRFZGdlR3JvdXAiLGIuZGV0YWlsLmVkZ2VHcm91cCksCnRoaXMuc2V0KCJzZWxlY3RlZEVkZ2UiLGIuZGV0YWlsLmVkZ2VEYXRhKSk7dGhpcy5fYWxsb3dHcmFwaFNlbGVjdD0hMH0sX25vZGVIaWdobGlnaHRlZDpmdW5jdGlvbihiKXt0aGlzLnNldCgiaGlnaGxpZ2h0ZWROb2RlIixiLmRldGFpbC5uYW1lKX0sX25vZGVVbmhpZ2hsaWdodGVkOmZ1bmN0aW9uKCl7dGhpcy5zZXQoImhpZ2hsaWdodGVkTm9kZSIsbnVsbCl9LF9ub2RlVG9nZ2xlRXhwYW5kOmZ1bmN0aW9uKGIpe3RoaXMuX25vZGVTZWxlY3RlZChiKTtiPWIuZGV0YWlsLm5hbWU7dmFyIGQ9dGhpcy5yZW5kZXJIaWVyYXJjaHkuZ2V0UmVuZGVyTm9kZUJ5TmFtZShiKTtkLm5vZGUudHlwZSE9PXRmLmdyYXBoLk5vZGVUeXBlLk9QJiYodGhpcy5yZW5kZXJIaWVyYXJjaHkuYnVpbGRTdWJoaWVyYXJjaHkoYiksZC5leHBhbmRlZD0hZC5leHBhbmRlZCx0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy4kLnNjZW5lLnNldE5vZGVFeHBhbmRlZChkKX0sNzUpKX0sX25vZGVUb2dnbGVFeHRyYWN0OmZ1bmN0aW9uKGIpe3RoaXMubm9kZVRvZ2dsZUV4dHJhY3QoYi5kZXRhaWwubmFtZSl9LApub2RlVG9nZ2xlRXh0cmFjdDpmdW5jdGlvbihiKXtiPXRoaXMucmVuZGVySGllcmFyY2h5LmdldFJlbmRlck5vZGVCeU5hbWUoYik7Yi5ub2RlLmluY2x1ZGU9Yi5ub2RlLmluY2x1ZGU9PXRmLmdyYXBoLkluY2x1c2lvblR5cGUuSU5DTFVERT90Zi5ncmFwaC5JbmNsdXNpb25UeXBlLkVYQ0xVREU6Yi5ub2RlLmluY2x1ZGU9PXRmLmdyYXBoLkluY2x1c2lvblR5cGUuRVhDTFVERT90Zi5ncmFwaC5JbmNsdXNpb25UeXBlLklOQ0xVREU6dGhpcy5yZW5kZXJIaWVyYXJjaHkuaXNOb2RlQXV4aWxpYXJ5KGIpP3RmLmdyYXBoLkluY2x1c2lvblR5cGUuSU5DTFVERTp0Zi5ncmFwaC5JbmNsdXNpb25UeXBlLkVYQ0xVREU7dGhpcy5fYnVpbGRSZW5kZXJIaWVyYXJjaHkodGhpcy5ncmFwaEhpZXJhcmNoeSl9LF9ub2RlVG9nZ2xlU2VyaWVzR3JvdXA6ZnVuY3Rpb24oYil7dGhpcy5ub2RlVG9nZ2xlU2VyaWVzR3JvdXAoYi5kZXRhaWwubmFtZSl9LG5vZGVUb2dnbGVTZXJpZXNHcm91cDpmdW5jdGlvbihiKXt0Zi5ncmFwaC50b2dnbGVOb2RlU2VyaWVzR3JvdXAodGhpcy5oaWVyYXJjaHlQYXJhbXMuc2VyaWVzTWFwLApiKTt0aGlzLnNldCgicHJvZ3Jlc3MiLHt2YWx1ZTowLG1zZzoiIn0pO3RmLmdyYXBoLmhpZXJhcmNoeS5idWlsZCh0aGlzLmJhc2ljR3JhcGgsdGhpcy5oaWVyYXJjaHlQYXJhbXMsdGYuZ3JhcGgudXRpbC5nZXRTdWJ0YXNrVHJhY2tlcih0Zi5ncmFwaC51dGlsLmdldFRyYWNrZXIodGhpcyksMTAwLCJOYW1lc3BhY2UgaGllcmFyY2h5IikpLnRoZW4oZnVuY3Rpb24oZCl7dGhpcy5zZXQoImdyYXBoSGllcmFyY2h5IixkKTt0aGlzLl9idWlsZFJlbmRlckhpZXJhcmNoeSh0aGlzLmdyYXBoSGllcmFyY2h5KX0uYmluZCh0aGlzKSl9LF9kZXNlbGVjdFByZXZpb3VzRWRnZSgpe2QzLnNlbGVjdCgiLiIrdGYuZ3JhcGguc2NlbmUuQ2xhc3MuRWRnZS5TRUxFQ1RFRCkuY2xhc3NlZCh0Zi5ncmFwaC5zY2VuZS5DbGFzcy5FZGdlLlNFTEVDVEVELCExKS5lYWNoKGI9PntpZihiLmxhYmVsKXtjb25zdCBkPWQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoInBhdGguZWRnZWxpbmUiKTtiLmxhYmVsLnN0YXJ0TWFya2VySWQmJgpkLnN0eWxlKCJtYXJrZXItc3RhcnQiLGB1cmwoIyR7Yi5sYWJlbC5zdGFydE1hcmtlcklkfSlgKTtiLmxhYmVsLmVuZE1hcmtlcklkJiZkLnN0eWxlKCJtYXJrZXItZW5kIixgdXJsKCMke2IubGFiZWwuZW5kTWFya2VySWR9KWApfX0pfSxfdXBkYXRlTWFya2VyT2ZTZWxlY3RlZEVkZ2UoYil7aWYoYi5sYWJlbCl7dmFyIGQ9Yi5sYWJlbC5zdGFydE1hcmtlcklkfHxiLmxhYmVsLmVuZE1hcmtlcklkO2lmKGQpe2NvbnN0IGY9ZC5yZXBsYWNlKCJkYXRhZmxvdy0iLCJzZWxlY3RlZC0iKTtsZXQgaD10aGlzLiQkKCIjIitmKTtofHwoZD10aGlzLiQuc2NlbmUucXVlcnlTZWxlY3RvcigiIyIrZCksaD1kLmNsb25lTm9kZSghMCksaC5zZXRBdHRyaWJ1dGUoImlkIixmKSxoLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkLWFycm93aGVhZCIpLGQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChoKSk7Yj1iLmxhYmVsLnN0YXJ0TWFya2VySWQ/Im1hcmtlci1zdGFydCI6Im1hcmtlci1lbmQiO3RoaXMuX2xhc3RTZWxlY3RlZEVkZ2VHcm91cC5zZWxlY3RBbGwoInBhdGguZWRnZWxpbmUiKS5zdHlsZShiLApgdXJsKCMke2Z9KWApfX19LG5vdDpmdW5jdGlvbihiKXtyZXR1cm4hYn19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1sb2FkZXIvdGYtZ3JhcGgtbG9hZGVyLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKCl7UG9seW1lcih7aXM6InRmLWdyYXBoLWxvYWRlciIsX3RlbXBsYXRlOm51bGwscHJvcGVydGllczp7ZGF0YXNldHM6QXJyYXksc2VsZWN0ZWREYXRhOnt0eXBlOk51bWJlcix2YWx1ZTowfSxzZWxlY3RlZEZpbGU6T2JqZWN0LGNvbXBhdGliaWxpdHlQcm92aWRlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyBiLmdyYXBoLm9wLlRwdUNvbXBhdGliaWxpdHlQcm92aWRlcn0sb3ZlcnJpZGluZ0hpZXJhcmNoeVBhcmFtczp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pih7fSl9LHByb2dyZXNzOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LG91dEdyYXBoSGllcmFyY2h5Ont0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LG91dEdyYXBoOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LG91dEhpZXJhcmNoeVBhcmFtczp7dHlwZTpPYmplY3QscmVhZE9ubHk6ITAsbm90aWZ5OiEwfX0sb2JzZXJ2ZXJzOlsiX2xvYWREYXRhKGRhdGFzZXRzLCBzZWxlY3RlZERhdGEsIG92ZXJyaWRpbmdIaWVyYXJjaHlQYXJhbXMsIGNvbXBhdGliaWxpdHlQcm92aWRlcikiLAoiX2xvYWRGaWxlKHNlbGVjdGVkRmlsZSwgb3ZlcnJpZGluZ0hpZXJhcmNoeVBhcmFtcywgY29tcGF0aWJpbGl0eVByb3ZpZGVyKSJdLF9sb2FkRGF0YSgpe3RoaXMuZGVib3VuY2UoImxvYWQiLCgpPT57Y29uc3QgZj10aGlzLmRhdGFzZXRzW3RoaXMuc2VsZWN0ZWREYXRhXTtmJiZ0aGlzLl9wYXJzZUFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKGYucGF0aCl9KX0sX3BhcnNlQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgoZixoKXtjb25zdCBrPXRoaXMub3ZlcnJpZGluZ0hpZXJhcmNoeVBhcmFtcyx0PXRoaXMuY29tcGF0aWJpbGl0eVByb3ZpZGVyO3RoaXMucHJvZ3Jlc3M9e3ZhbHVlOjAsbXNnOiIifTtjb25zdCBsPWIuZ3JhcGgudXRpbC5nZXRUcmFja2VyKHRoaXMpLHA9T2JqZWN0LmFzc2lnbih7fSxiLmdyYXBoLmhpZXJhcmNoeS5EZWZhdWx0SGllcmFyY2h5UGFyYW1zLGspO2IuZ3JhcGgubG9hZGVyLmZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGgobCwKZixoLHQscCkudGhlbigoe2dyYXBoOm0sZ3JhcGhIaWVyYXJjaHk6bn0pPT57dGhpcy5fc2V0T3V0SGllcmFyY2h5UGFyYW1zKHApO3RoaXMuX3NldE91dEdyYXBoKG0pO3RoaXMuX3NldE91dEdyYXBoSGllcmFyY2h5KG4pfSl9LF9sb2FkRmlsZShmKXtpZihmKXtmPWYudGFyZ2V0O3ZhciBoPWYuZmlsZXNbMF07aCYmKGYudmFsdWU9IiIsdGhpcy5fcGFyc2VBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChudWxsLGgpKX19fSl9KShkLmxvYWRlcnx8KGQubG9hZGVyPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC9oZWFsdGgtcGlsbHMuanMKdmFyIFZpOwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChrLHQpe2lmKG51bGw9PWspdGhyb3cgRXJyb3IoYE1pc3NpbmcgcmVmVmFsdWUgZm9yIGNvbmRpdGlvbiAoJHt0fSkuYCk7fWZ1bmN0aW9uIGYoayl7cmV0dXJuIG51bGw9PWt8fDA9PWsubGVuZ3RofHwxIT09a1swXX1jb25zdCBoPXtJTkZfT1JfTkFOOntkZXNjcmlwdGlvbjoiQ29udGFpbnMgKy8tXHUyMjFlIG9yIE5hTiIscHJlZGljYXRlOms9PjA8a1syXXx8MDxrWzNdfHwwPGtbN119LElORjp7ZGVzY3JpcHRpb246IkNvbnRhaW5zICsvLVx1MjIxZSIscHJlZGljYXRlOms9PjA8a1szXXx8MDxrWzddfSxOQU46e2Rlc2NyaXB0aW9uOiJDb250YWlucyBOYU4iLHByZWRpY2F0ZTprPT4wPGtbMl19LE1BWF9HVDp7ZGVzY3JpcHRpb246Ik1heCBceDNlIixwcmVkaWNhdGU6KGssdCk9PntkKHQsIk1BWF9HVCIpO3JldHVybiBrWzldPnR9fSxNQVhfTFQ6e2Rlc2NyaXB0aW9uOiJNYXggXHgzYyIscHJlZGljYXRlOihrLHQpPT57ZCh0LCJNQVhfTFQiKTsKcmV0dXJuIGtbOV08dH19LE1JTl9HVDp7ZGVzY3JpcHRpb246Ik1pbiBceDNlIixwcmVkaWNhdGU6KGssdCk9PntkKHQsIk1JTl9HVCIpO3JldHVybiBrWzhdPnR9fSxNSU5fTFQ6e2Rlc2NyaXB0aW9uOiJNaW4gXHgzYyIscHJlZGljYXRlOihrLHQpPT57ZCh0LCJNSU5fTFQiKTtyZXR1cm4ga1s4XTx0fX0sTUVBTl9HVDp7ZGVzY3JpcHRpb246Ik1lYW4gXHgzZSIscHJlZGljYXRlOihrLHQpPT57ZCh0LCJNRUFOX0dUIik7cmV0dXJuIGtbMTBdPnR9fSxNRUFOX0xUOntkZXNjcmlwdGlvbjoiTWVhbiBceDNjIixwcmVkaWNhdGU6KGssdCk9PntkKHQsIk1FQU5fTFQiKTtyZXR1cm4ga1sxMF08dH19LFJBTkdFX0dUOntkZXNjcmlwdGlvbjoiTWF4IC0gTWluIFx4M2UiLHByZWRpY2F0ZTooayx0KT0+e2QodCwiUkFOR0VfR1QiKTtyZXR1cm4ga1s5XS1rWzhdPnR9fSxSQU5HRV9MVDp7ZGVzY3JpcHRpb246Ik1heCAtIE1pbiBceDNjIixwcmVkaWNhdGU6KGssdCk9PntkKHQsIlJBTkdFX0xUIik7CnJldHVybiBrWzldLWtbOF08dH19LFNURERFVl9HVDp7ZGVzY3JpcHRpb246IlN0YW5kYXJkIGRldmlhdGlvbiBceDNlIixwcmVkaWNhdGU6KGssdCk9PntkKHQsIlNURERFVl9HVCIpO3JldHVybiBNYXRoLnNxcnQoa1sxMV0pPnR9fSxTVERERVZfTFQ6e2Rlc2NyaXB0aW9uOiJTdGFuZGFyZCBkZXZpYXRpb24gXHgzYyIscHJlZGljYXRlOihrLHQpPT57ZCh0LCJTVERERVZfTFQiKTtyZXR1cm4gTWF0aC5zcXJ0KGtbMTFdKTx0fX19O2IudGVuc29yQ29uZGl0aW9uRGVzY3JpcHRpb24yS2V5PWZ1bmN0aW9uKGspe2Zvcihjb25zdCB0IGluIGgpaWYoaC5oYXNPd25Qcm9wZXJ0eSh0KSYmaFt0XS5kZXNjcmlwdGlvbj09PWspcmV0dXJuIHQ7cmV0dXJuIG51bGx9O2IuY2hlY2tIZWFsdGhQaWxsQWdhaW5zdFRlbnNvckNvbmRpdGlvbktleT1mdW5jdGlvbihrLHQsbCl7aWYoZih0KSlyZXR1cm4hMTtrPWhba10ucHJlZGljYXRlO3JldHVybiBrKHQsbCl9fSkoVml8fChWaT17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi1kZWJ1Z2dlci1jb250aW51ZS1kaWFsb2cuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtZGVidWdnZXItY29udGludWUtZGlhbG9nIixwcm9wZXJ0aWVzOntjb250aW51ZU51bTp7dHlwZTpOdW1iZXIsdmFsdWU6NX0sc2Vzc2lvblJ1bkdvOkZ1bmN0aW9uLHRlbnNvckNvbmRpdGlvbkdvOkZ1bmN0aW9uLGZvcmNlQ29udGludWF0aW9uU3RvcDpGdW5jdGlvbixfY29udGludWVCdXR0b25UZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiQ29udGludWUuLi4ifSxfY29udGludWVCdXR0b25Db250aW51ZVRleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJDb250aW51ZS4uLiIscmVhZG9ubHk6ITB9LF9jb250aW51ZUJ1dHRvblN0b3BUZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiU3RvcCBDb250aW51YXRpb24iLHJlYWRvbmx5OiEwfSxfc2VsZWN0ZWRUZW5zb3JDb25kaXRpb246U3RyaW5nLF90ZW5zb3JDb25kaXRpb25SZWZWYWx1ZTp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LF9pc1JlZlZhbHVlSW5wdXRIaWRkZW46e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCwKbm90aWZ5OiEwfX0sb2JzZXJ2ZXJzOlsiX29uU2VsZWN0ZWRUZW5zb3JDb25kaXRpb25DaGFuZ2VkKF9zZWxlY3RlZFRlbnNvckNvbmRpdGlvbikiXSxub3RpZnlDb250aW51YXRpb25TdG9wKCl7dGhpcy51cGRhdGVDb250aW51ZUJ1dHRvblRleHQoITEpfSxfb3BlbkRpYWxvZygpe3RoaXMuJC5jb250aW51ZURpYWxvZy5vcGVuKCl9LF9jbG9zZURpYWxvZygpe3RoaXMuJC5jb250aW51ZURpYWxvZy5jbG9zZSgpfSxfY29udGludWVCdXR0b25DYWxsYmFjaygpe3RoaXMuX2NvbnRpbnVlQnV0dG9uVGV4dD09PXRoaXMuX2NvbnRpbnVlQnV0dG9uU3RvcFRleHQ/dGhpcy5mb3JjZUNvbnRpbnVhdGlvblN0b3AoKTp0aGlzLl9vcGVuRGlhbG9nKCl9LHVwZGF0ZUNvbnRpbnVlQnV0dG9uVGV4dChiKXt0aGlzLnNldCgiX2NvbnRpbnVlQnV0dG9uVGV4dCIsYj90aGlzLl9jb250aW51ZUJ1dHRvblN0b3BUZXh0OnRoaXMuX2NvbnRpbnVlQnV0dG9uQ29udGludWVUZXh0KX0sX3Nlc3Npb25SdW5Hb0J1dHRvbkNhbGxiYWNrKCl7MDwKdGhpcy5jb250aW51ZU51bT8odGhpcy5zZXNzaW9uUnVuR28odGhpcy5jb250aW51ZU51bSksdGhpcy51cGRhdGVDb250aW51ZUJ1dHRvblRleHQoITApLHRoaXMuX2Nsb3NlRGlhbG9nKCkpOnRoaXMuc2V0KCJjb250aW51ZU51bSIsMSl9LF90ZW5zb3JDb250aW51ZUdvQnV0dG9uQ2FsbGJhY2soKXtpZihudWxsIT10aGlzLl9zZWxlY3RlZFRlbnNvckNvbmRpdGlvbil7dmFyIGI9VmkudGVuc29yQ29uZGl0aW9uRGVzY3JpcHRpb24yS2V5KHRoaXMuX3NlbGVjdGVkVGVuc29yQ29uZGl0aW9uKTtudWxsPT1iJiZjb25zb2xlLmVycm9yKCJJbnZhbGlkIFRlbnNvciBDb25kaXRpb24gbmFtZToiK3RoaXMuX3NlbGVjdGVkVGVuc29yQ29uZGl0aW9uKTt2YXIgZD1OdW1iZXIodGhpcy5fdGVuc29yQ29uZGl0aW9uUmVmVmFsdWUpO051bWJlci5pc0Zpbml0ZShkKT8odGhpcy50ZW5zb3JDb25kaXRpb25HbyhiLGQpLHRoaXMudXBkYXRlQ29udGludWVCdXR0b25UZXh0KCEwKSx0aGlzLl9jbG9zZURpYWxvZygpKToKdGhpcy5zZXQoIl90ZW5zb3JDb25kaXRpb25SZWZWYWx1ZSIsMCl9fSxfb25TZWxlY3RlZFRlbnNvckNvbmRpdGlvbkNoYW5nZWQoYil7Yj1WaS50ZW5zb3JDb25kaXRpb25EZXNjcmlwdGlvbjJLZXkoYik7dGhpcy5zZXQoIl9pc1JlZlZhbHVlSW5wdXRIaWRkZW4iLC0xIT09WyJJTkZfT1JfTkFOIiwiSU5GIiwiTkFOIl0uaW5kZXhPZihiKSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZGVidWdnZXItZGFzaGJvYXJkL3RmLWRlYnVnZ2VyLWluaXRpYWwtZGlhbG9nLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWRlYnVnZ2VyLWluaXRpYWwtZGlhbG9nIixwcm9wZXJ0aWVzOntfdGl0bGU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9jdXN0b21NZXNzYWdlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxfaGFzQ3VzdG9tTWVzc2FnZTp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUhhc0N1c3RvbU1lc3NhZ2UoX2N1c3RvbU1lc3NhZ2UpIn0sX2hvc3Q6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9wb3J0Ont0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxfb3Blbjp7dHlwZTpCb29sZWFufSxfaGlkZGVuOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlSGlkZGVuKF9vcGVuKSIscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0sb3BlbkRpYWxvZyhiLGQpe3RoaXMuc2V0KCJfdGl0bGUiLCJEZWJ1Z2dlciBpcyB3YWl0aW5nIGZvciBTZXNzaW9uLnJ1bigpIGNvbm5lY3Rpb25zLi4uIik7dGhpcy5zZXQoIl9jdXN0b21NZXNzYWdlIixudWxsKTt0aGlzLiQuZGlhbG9nLm9wZW4oKTsKbnVsbCE9YiYmbnVsbCE9ZCYmKHRoaXMuc2V0KCJfaG9zdCIsYiksdGhpcy5zZXQoIl9wb3J0IixkKSl9LGNsb3NlRGlhbG9nKCl7dGhpcy4kLmRpYWxvZy5jbG9zZSgpfSxvcGVuRGlzYWJsZWREaWFsb2coKXt0aGlzLnNldCgiX3RpdGxlIiwiRGVidWdnZXIgaXMgbm90IGVuYWJsZWQgaW4gdGhpcyBUZW5zb3JCb2FyZCBpbnN0YW5jZSIpO3RoaXMuc2V0KCJfY3VzdG9tTWVzc2FnZSIsIlRvIGVuYWJsZSB0aGUgZGVidWdnZXIgaW4gVGVuc29yQm9hcmQsIHVzZSB0aGUgZmxhZzogLS1kZWJ1Z2dlcl9wb3J0IFx4M2Nwb3J0X251bWJlclx4M2UiKTt0aGlzLiQuZGlhbG9nLm9wZW4oKX0sX2NvbXB1dGVIaWRkZW4oYil7cmV0dXJuIWJ9LF9jb21wdXRlSGFzQ3VzdG9tTWVzc2FnZShiKXtyZXR1cm4hXy5pc0VtcHR5KGIpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi1kZWJ1Z2dlci1yZXNpemVyLmh0bWwuanMKUG9seW1lcih7aXM6InRmLWRlYnVnZ2VyLXJlc2l6ZXIiLHByb3BlcnRpZXM6e2N1cnJlbnRMZW5ndGg6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sbWluTGVuZ3RoOk51bWJlcixtYXhMZW5ndGg6TnVtYmVyLGlzSG9yaXpvbnRhbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX3Jlc2l6ZXJJZGVudGlmaWVyOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfaXNWZXJ0aWNhbDp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUlzVmVydGljYWwoaXNIb3Jpem9udGFsKSIscmVmbGVjdFRvQXR0cmlidXRlOiEwLHJlYWRPbmx5OiEwfSxfZHJhZ1N0YXJ0UG9zaXRpb246TnVtYmVyLF9kcmFnU3RhcnRMZW5ndGg6TnVtYmVyLF9wcmV2aW91c01vdXNlTW92ZUNhbGxiYWNrOk9iamVjdCxfcHJldmlvdXNNb3VzZVVwQ2FsbGJhY2s6T2JqZWN0fSxsaXN0ZW5lcnM6e21vdXNlZG93bjoiX2hhbmRsZU1vdXNlRG93biJ9LApfaGFuZGxlTW91c2VEb3duKGIpe2IucHJldmVudERlZmF1bHQoKTt0aGlzLl9lbmREcmFnKCk7dGhpcy5fcHJldmlvdXNNb3VzZU1vdmVDYWxsYmFjaz1kPT57ZC5wcmV2ZW50RGVmYXVsdCgpO2Q9dGhpcy5fZHJhZ1N0YXJ0TGVuZ3RoKyh0aGlzLl9nZXRQb3NpdGlvblJlbGF0aXZlVG9WaWV3cG9ydChkKS10aGlzLl9kcmFnU3RhcnRQb3NpdGlvbik7ZD1NYXRoLm1heChkLHRoaXMubWluTGVuZ3RoKTtkPU1hdGgubWluKGQsdGhpcy5tYXhMZW5ndGgpO3RoaXMuc2V0KCJjdXJyZW50TGVuZ3RoIixkKX07dGhpcy5fcHJldmlvdXNNb3VzZVVwQ2FsbGJhY2s9ZD0+e2QucHJldmVudERlZmF1bHQoKTt0aGlzLl9lbmREcmFnKCl9O3RoaXMuc2V0KCJfZHJhZ1N0YXJ0UG9zaXRpb24iLHRoaXMuX2dldFBvc2l0aW9uUmVsYXRpdmVUb1ZpZXdwb3J0KGIpKTt0aGlzLnNldCgiX2RyYWdTdGFydExlbmd0aCIsdGhpcy5jdXJyZW50TGVuZ3RoKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsCnRoaXMuX3ByZXZpb3VzTW91c2VVcENhbGxiYWNrLCExKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLl9wcmV2aW91c01vdXNlTW92ZUNhbGxiYWNrLCExKX0sX2dldFBvc2l0aW9uUmVsYXRpdmVUb1ZpZXdwb3J0KGIpe3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbD9iLmNsaWVudFk6Yi5jbGllbnRYfSxfZW5kRHJhZygpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMuX3ByZXZpb3VzTW91c2VNb3ZlQ2FsbGJhY2ssITEpO3RoaXMuX3ByZXZpb3VzTW91c2VNb3ZlQ2FsbGJhY2s9bnVsbDt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsdGhpcy5fcHJldmlvdXNNb3VzZVVwQ2FsbGJhY2ssITEpO3RoaXMuX3ByZXZpb3VzTW91c2VVcENhbGxiYWNrPW51bGx9LF9jb21wdXRlSXNWZXJ0aWNhbChiKXtyZXR1cm4hYn19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1kZWJ1Z2dlci1kYXNoYm9hcmQvc2VsZWN0aW9uLXRyZWUtbm9kZS5qcwooZnVuY3Rpb24oYil7Yi5OT0RFX05BTUVfU0VQQVJBVE9SPSIvIjtiLkRFVklDRV9OQU1FX1BBVFRFUk49L15cL2pvYjpbQS1aYS16MC05X10rXC9yZXBsaWNhOlswLTlfXStcL3Rhc2s6WzAtOV0rXC9kZXZpY2U6W0EtWmEtejAtOV9dKzpbMC05XSsvO2xldCBkOyhmdW5jdGlvbihrKXtrW2suRU1QVFk9MF09IkVNUFRZIjtrW2suQ0hFQ0tFRD0xXT0iQ0hFQ0tFRCI7a1trLlBBUlRJQUw9Ml09IlBBUlRJQUwifSkoZD1iLkNoZWNrYm94U3RhdGV8fChiLkNoZWNrYm94U3RhdGU9e30pKTtiLnNwbGl0Tm9kZU5hbWU9ZnVuY3Rpb24oayl7bGV0IHQ9W107Y29uc3QgbD1rLm1hdGNoKGIuREVWSUNFX05BTUVfUEFUVEVSTik7bnVsbCE9bCYmKHQucHVzaChsWzBdKSwiLyIhPT1rW2xbMF0ubGVuZ3RoXSYmY29uc29sZS5lcnJvcignTm8gc2xhc2ggKCIvIikgYWZ0ZXIgZGV2aWNlIG5hbWUgaW4gbm9kZSBuYW1lOicsayksaz1rLnNsaWNlKGxbMF0ubGVuZ3RoKzEpKTtyZXR1cm4gdC5jb25jYXQoay5zcGxpdChiLk5PREVfTkFNRV9TRVBBUkFUT1IpKX07CmIuZ2V0Q2xlYW5Ob2RlTmFtZT1mdW5jdGlvbihrKXtsZXQgdD1rO2NvbnN0IGw9ay5tYXRjaChiLkRFVklDRV9OQU1FX1BBVFRFUk4pO251bGwhPWw/KHQubGVuZ3RoPmxbMF0ubGVuZ3RoJiYiLyIhPXRbbFswXS5sZW5ndGhdJiZjb25zb2xlLmVycm9yKCdObyBzbGFzaCAoIi8iKSBhZnRlciBkZXZpY2UgbmFtZSBpbiBub2RlIG5hbWU6JyxrKSx0PXQuc2xpY2UobFswXS5sZW5ndGgrMSkpOiIvIj09PXRbMF0mJih0PXQuc2xpY2UoMSkpO3QuaW5kZXhPZigiKSIpPT09dC5sZW5ndGgtMSYmKHQ9dC5zbGljZSgwLHQuaW5kZXhPZigiLygiKSkpO3JldHVybiB0fTtiLnNvcnRBbmRCYXNlRXhwYW5kRGVidWdXYXRjaGVzPWZ1bmN0aW9uKGspe2suc29ydCgobCxwKT0+bC5ub2RlX25hbWU8cC5ub2RlX25hbWU/LTE6bC5ub2RlX25hbWU+cC5ub2RlX25hbWU/MTpsLm91dHB1dF9zbG90LXAub3V0cHV0X3Nsb3QpO2ZvcihsZXQgbD0wO2w8ay5sZW5ndGg7KytsKXt2YXIgdD1rW2xdLm5vZGVfbmFtZSsKIi8iO2xldCBwPSExO2ZvcihsZXQgbT1sKzE7bTxrLmxlbmd0aDsrK20paWYoMD09PWtbbV0ubm9kZV9uYW1lLmluZGV4T2YodCkpe3A9ITA7YnJlYWt9cCYmKHQ9a1tsXS5ub2RlX25hbWUuc3BsaXQoIi8iKSxrW2xdLm5vZGVfbmFtZSs9Ii8oIit0W3QubGVuZ3RoLTFdKyIpIil9fTtiLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbj1mdW5jdGlvbihrKXtyZXR1cm4gay5lbmRzV2l0aCgiKSIpP2suc2xpY2UoMCxrLmxhc3RJbmRleE9mKCIvKCIpKTprfTtiLmFzc2VtYmxlRGV2aWNlQW5kTm9kZU5hbWVzPWZ1bmN0aW9uKGspe2NvbnN0IHQ9W251bGwsbnVsbF07aWYoa1swXS5tYXRjaChiLkRFVklDRV9OQU1FX1BBVFRFUk4pKXtsZXQgbD1rWzBdOyIvIj09PWxbbC5sZW5ndGgtMV0mJihsPWwuc2xpY2UoMCxsLmxlbmd0aC0xKSk7dFswXT1sO3RbMV09ay5zbGljZSgxKS5qb2luKCIvIil9ZWxzZSB0WzFdPWsuam9pbigiLyIpO3JldHVybiB0fTtsZXQgZjsoZnVuY3Rpb24oayl7a1trLk5vZGVOYW1lPQowXT0iTm9kZU5hbWUiO2tbay5PcFR5cGU9MV09Ik9wVHlwZSJ9KShmPWIuRGVidWdXYXRjaEZpbHRlck1vZGV8fChiLkRlYnVnV2F0Y2hGaWx0ZXJNb2RlPXt9KSk7Yi5maWx0ZXJEZWJ1Z1dhdGNoZXM9ZnVuY3Rpb24oayx0LGwpe2lmKHQ9PT1mLk5vZGVOYW1lKXJldHVybiBrLmZpbHRlcihwPT5wLm5vZGVfbmFtZS5tYXRjaChsKSk7aWYodD09PWYuT3BUeXBlKXJldHVybiBrLmZpbHRlcihwPT5wLm9wX3R5cGUubWF0Y2gobCkpfTtjbGFzcyBoe2NvbnN0cnVjdG9yKGssdCxsLHApe3RoaXMuZGVidWdXYXRjaENoYW5nZT10O3RoaXMuZGVidWdXYXRjaD1wO3RoaXMubmFtZT1rO3RoaXMuZGVidWdXYXRjaD1wO3RoaXMuY2hlY2tib3hTdGF0ZT1kLkVNUFRZO3RoaXMucGFyZW50PWw7dGhpcy5jaGlsZHJlbj17fTt0aGlzLmNoZWNrYm94PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcGVyLWNoZWNrYm94Iik7dGhpcy5jaGVja2JveC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCgpPT4Ke3RoaXMuX2hhbmRsZUNoYW5nZSgpfSwhMSl9X2hhbmRsZUNoYW5nZSgpe2lmKHRoaXMuYXZvaWRQcm9wYWdhdGlvbil0aGlzLmRlYnVnV2F0Y2gmJnRoaXMuZGVidWdXYXRjaENoYW5nZSh0aGlzLmRlYnVnV2F0Y2gsdGhpcy5pc0NoZWNrYm94Q2hlY2tlZCgpKTtlbHNlIGlmKHRoaXMuZGVidWdXYXRjaCl0aGlzLnNldENoZWNrYm94U3RhdGUodGhpcy5pc0NoZWNrYm94Q2hlY2tlZCgpP2QuQ0hFQ0tFRDpkLkVNUFRZLCEwKSx0aGlzLmlzQ2hlY2tib3hDaGVja2VkKCk/dGhpcy5zZXROb2Rlc0Fib3ZlVG9DaGVja2VkKCk6dGhpcy5zZXROb2Rlc0Fib3ZlVG9FbXB0eSgpLHRoaXMuZGVidWdXYXRjaENoYW5nZSh0aGlzLmRlYnVnV2F0Y2gsdGhpcy5pc0NoZWNrYm94Q2hlY2tlZCgpKTtlbHNlIGlmKHRoaXMuc2V0Q2hlY2tib3hTdGF0ZSh0aGlzLmlzQ2hlY2tib3hDaGVja2VkKCk/ZC5DSEVDS0VEOmQuRU1QVFksITApLHRoaXMuaXNDaGVja2JveENoZWNrZWQoKSl7Y29uc3QgdD1fLnZhbHVlcyh0aGlzLmNoaWxkcmVuKTsKZm9yKDt0Lmxlbmd0aDspe3ZhciBrPXQucG9wKCk7Xy5mb3JFYWNoKGsuY2hpbGRyZW4sbD0+dC5wdXNoKGwpKTtrLnNldENoZWNrYm94U3RhdGUoZC5DSEVDS0VELCEwKX10aGlzLnNldE5vZGVzQWJvdmVUb0NoZWNrZWQoKX1lbHNle2NvbnN0IHQ9Xy52YWx1ZXModGhpcy5jaGlsZHJlbik7Zm9yKDt0Lmxlbmd0aDspaz10LnBvcCgpLF8uZm9yRWFjaChrLmNoaWxkcmVuLGw9PnQucHVzaChsKSksay5zZXRDaGVja2JveFN0YXRlKGQuRU1QVFksITApO3RoaXMuc2V0Tm9kZXNBYm92ZVRvRW1wdHkoKX19aXNMZWFmKCl7cmV0dXJuISF0aGlzLmRlYnVnV2F0Y2h9c2V0VG9BbGxDaGVja2VkRXh0ZXJuYWxseSgpe3RoaXMuc2V0Q2hlY2tib3hTdGF0ZShkLkNIRUNLRUQpO3RoaXMuX2hhbmRsZUNoYW5nZSgpfXNldENoZWNrYm94U3RhdGUoayx0KXt0aGlzLmF2b2lkUHJvcGFnYXRpb249dDt0aGlzLmNoZWNrYm94U3RhdGU9azt0aGlzLmNoZWNrYm94LmNsYXNzTGlzdC50b2dnbGUoInBhcnRpYWwtY2hlY2tib3giLAprPT09ZC5QQVJUSUFMKTtrPT09ZC5DSEVDS0VEP3RoaXMuY2hlY2tib3guc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpOnRoaXMuY2hlY2tib3gucmVtb3ZlQXR0cmlidXRlKCJjaGVja2VkIik7dGhpcy5hdm9pZFByb3BhZ2F0aW9uPSExfWlzQ2hlY2tib3hDaGVja2VkKCl7cmV0dXJuIHRoaXMuY2hlY2tib3guaGFzQXR0cmlidXRlKCJjaGVja2VkIil9c2V0Tm9kZXNBYm92ZVRvQ2hlY2tlZCgpe2xldCBrPXRoaXMucGFyZW50LHQ9ITE7Zm9yKDtrOyl0P2suc2V0Q2hlY2tib3hTdGF0ZShkLlBBUlRJQUwsITApOih0PS0xIT09Xy5maW5kSW5kZXgoXy52YWx1ZXMoay5jaGlsZHJlbiksbD0+bC5jaGVja2JveFN0YXRlIT09ZC5DSEVDS0VEKSxrLnNldENoZWNrYm94U3RhdGUodD9kLlBBUlRJQUw6ZC5DSEVDS0VELCEwKSksaz1rLnBhcmVudH1zZXROb2Rlc0Fib3ZlVG9FbXB0eSgpe2xldCBrPXRoaXMucGFyZW50LHQ9ITE7Zm9yKDtrOyl0P2suc2V0Q2hlY2tib3hTdGF0ZShkLlBBUlRJQUwsCiEwKToodD0tMSE9PV8uZmluZEluZGV4KF8udmFsdWVzKGsuY2hpbGRyZW4pLGw9PmwuY2hlY2tib3hTdGF0ZSE9PWQuRU1QVFkpLGsuc2V0Q2hlY2tib3hTdGF0ZSh0P2QuUEFSVElBTDpkLkVNUFRZLCEwKSksaz1rLnBhcmVudH1zZXRMZXZlbERvbShrKXt0aGlzLmxldmVsRG9tPWt9fWIuU2VsZWN0aW9uVHJlZU5vZGU9aH0pKFZpfHwoVmk9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1kZWJ1Z2dlci1kYXNoYm9hcmQvdGYtb3Atc2VsZWN0b3IuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtb3Atc2VsZWN0b3IiLHByb3BlcnRpZXM6e2RlYnVnV2F0Y2hlczpBcnJheSxkZWJ1Z1dhdGNoQ2hhbmdlOk9iamVjdCxub2RlQ2xpY2tlZDpGdW5jdGlvbixmb3JjZUV4cGFuZEFuZENoZWNrTm9kZU5hbWU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGZvcmNlRXhwYW5kTm9kZU5hbWU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9zZWxlY3RlZERlYnVnV2F0Y2hNYXBwaW5nOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHt9KX0sX2xldmVsTmFtZTJDb250YWluZXI6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LF9sZXZlbE5hbWUyTm9kZTp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sX3dhdGNoSGllcmFyY2h5Ont0eXBlOk9iamVjdCxjb21wdXRlZDoiX2NvbXB1dGVXYXRjaEhpZXJhcmNoeShkZWJ1Z1dhdGNoZXMsIGRlYnVnV2F0Y2hDaGFuZ2UsIF9maWx0ZXJNb2RlLCBfZmlsdGVySW5wdXQpIn0sX2ZpbHRlck1vZGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJOb2RlIE5hbWUiLApub3RpZnk6ITB9LF9maWx0ZXJJbnB1dDp7dHlwZTpTdHJpbmcsdmFsdWU6IiIsbm90aWZ5OiEwfSxfaXNMb2FkaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9oaWdobGlnaHRlZExldmVsRG9tOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsfX0sb2JzZXJ2ZXJzOlsiX3JlbmRlckhpZXJhcmNoeVdpdGhUaW1lb3V0KF93YXRjaEhpZXJhcmNoeSwgZGVidWdXYXRjaENoYW5nZSkiLCJfaGFuZGxlRm9yY2VOb2RlRXhwYW5kQW5kQ2hlY2soZm9yY2VFeHBhbmRBbmRDaGVja05vZGVOYW1lKSIsIl9oYW5kbGVGb3JjZU5vZGVFeHBhbmQoZm9yY2VFeHBhbmROb2RlTmFtZSkiXSxfY29tcHV0ZVdhdGNoSGllcmFyY2h5KGIsZCxmLGgpe2g9aC50cmltKCk7bGV0IGs9YjtudWxsIT1mJiYwPGgubGVuZ3RoJiYoaz1WaS5maWx0ZXJEZWJ1Z1dhdGNoZXMoYixWaS5EZWJ1Z1dhdGNoRmlsdGVyTW9kZVtmLnJlcGxhY2UoL1xzL2csIiIpXSxuZXcgUmVnRXhwKGgpKSk7Y29uc3QgdD1uZXcgVmkuU2VsZWN0aW9uVHJlZU5vZGUoIiIsCmQpO3QuaXNSb290PSEwO18uZm9yRWFjaChrLGw9Pntjb25zdCBwPVZpLnNwbGl0Tm9kZU5hbWUobC5kZXZpY2VfbmFtZSsiLyIrbC5ub2RlX25hbWUpO2xldCBtPXQ7Xy5mb3JFYWNoKHAsKG4scSk9PntxPT09cC5sZW5ndGgtMT8ocT1uZXcgVmkuU2VsZWN0aW9uVHJlZU5vZGUobixkLG0sbCksbS5jaGlsZHJlbltuXT1xKToobS5jaGlsZHJlbltuXXx8KG0uY2hpbGRyZW5bbl09bmV3IFZpLlNlbGVjdGlvblRyZWVOb2RlKG4sZCxtKSksbT1tLmNoaWxkcmVuW25dKX0pfSk7cmV0dXJuIHR9LF9jbGVhclNlbGVjdG9ySGllcmFyY2h5KCl7Y29uc3QgYj10aGlzLiQkKCIjc2VsZWN0b3ItaGllcmFyY2h5Iik7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKX0sX3JlbmRlckhpZXJhcmNoeVdpdGhUaW1lb3V0KGIsZCxmLGgpe3RoaXMuX2lzTG9hZGluZ3x8KHRoaXMuc2V0KCJfaXNMb2FkaW5nIiwhMCksdGhpcy5fY2xlYXJTZWxlY3RvckhpZXJhcmNoeSgpLApzZXRUaW1lb3V0KCgpPT57dGhpcy5fcmVuZGVySGllcmFyY2h5KGIsZCxmLGgpfSwxMCkpfSxfcmVuZGVySGllcmFyY2h5KGIsZCl7dGhpcy5zZXQoIl9sZXZlbE5hbWUyQ29udGFpbmVyIix7fSk7dGhpcy5zZXQoIl9sZXZlbE5hbWUyTm9kZSIse30pO2I9dGhpcy5fcmVuZGVyTGV2ZWwobnVsbCxudWxsLGIsZCk7UG9seW1lci5kb20odGhpcy4kJCgiI3NlbGVjdG9yLWhpZXJhcmNoeSIpKS5hcHBlbmRDaGlsZChiKTt0aGlzLnNldCgiX2lzTG9hZGluZyIsITEpfSxfcmVuZGVyTGV2ZWwoYixkLGYsaCl7Y29uc3Qgaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtudWxsIT1iJiZrLnNldEF0dHJpYnV0ZSgibGV2ZWwtbmFtZSIsYik7bGV0IHQ7dD1udWxsPT1kP2I6ZCsiLyIrYjtQb2x5bWVyLmRvbShrKS5jbGFzc0xpc3QuYWRkKCJsZXZlbC1jb250YWluZXIiKTtjb25zdCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlyb24tY29sbGFwc2UiKTtpZihiKXt0aGlzLl9sZXZlbE5hbWUyQ29udGFpbmVyW3RdPQpsO2wucmVtb3ZlQXR0cmlidXRlKCJvcGVuZWQiKTtQb2x5bWVyLmRvbShrKS5jbGFzc0xpc3QuYWRkKCJpbmRlbnRlZC1sZXZlbC1jb250YWluZXIiKTtkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1BvbHltZXIuZG9tKGQpLmNsYXNzTGlzdC5hZGQoImxldmVsLXRpdGxlIik7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXBlci1pY29uLWJ1dHRvbiIpO1BvbHltZXIuZG9tKG4pLmNsYXNzTGlzdC5hZGQoIm5vZGUtZXhwYW5kLWJ1dHRvbiIpO2NvbnN0IHE9KCk9PntuLnNldEF0dHJpYnV0ZSgiaWNvbiIsbC5oYXNBdHRyaWJ1dGUoIm9wZW5lZCIpPyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIil9O24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57bC5oYXNBdHRyaWJ1dGUoIm9wZW5lZCIpP2wucmVtb3ZlQXR0cmlidXRlKCJvcGVuZWQiKTpsLnNldEF0dHJpYnV0ZSgib3BlbmVkIiwhMCk7cSgpfSwhMSk7cSgpO1BvbHltZXIuZG9tKGQpLmFwcGVuZENoaWxkKG4pOwpQb2x5bWVyLmRvbShkKS5hcHBlbmRDaGlsZChmLmNoZWNrYm94KTtmLnNldExldmVsRG9tKGQpO2NvbnN0IHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO1BvbHltZXIuZG9tKHUpLmNsYXNzTGlzdC5hZGQoImxldmVsLXRpdGxlLXRleHQiKTt1LnRleHRDb250ZW50PWI7UG9seW1lci5kb20oZCkuYXBwZW5kQ2hpbGQodSk7UG9seW1lci5kb20oaykuYXBwZW5kQ2hpbGQoZCk7KGIubWF0Y2goVmkuREVWSUNFX05BTUVfUEFUVEVSTil8fDE9PT1PYmplY3Qua2V5cyhmLmNoaWxkcmVuKS5sZW5ndGgpJiZsLnNldEF0dHJpYnV0ZSgib3BlbmVkIiwhMCl9ZWxzZSBsLnNldEF0dHJpYnV0ZSgib3BlbmVkIiwhMCk7Y29uc3QgcD1bXSxtPVtdO1BvbHltZXIuZG9tKGwpLmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtY29udGFpbmVyIik7Xy5mb3JFYWNoKGYuY2hpbGRyZW4sKG4scSk9Pntjb25zdCB1PW4uZGVidWdXYXRjaDt2YXIgeD10O251bGw9PXQmJih4PSIiKTt4Kz0iLyIrcTsKdGhpcy5fbGV2ZWxOYW1lMk5vZGVbeF09bjtudWxsIT10aGlzLl9zZWxlY3RlZERlYnVnV2F0Y2hNYXBwaW5nW3hdJiYobi5zZXRDaGVja2JveFN0YXRlKFZpLkNoZWNrYm94U3RhdGUuQ0hFQ0tFRCksbi5zZXROb2Rlc0Fib3ZlVG9DaGVja2VkKCkpO2lmKHUpe3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7UG9seW1lci5kb20oeCkuY2xhc3NMaXN0LmFkZCgib3AtZGVzY3JpcHRpb24iKTtuLmNoZWNrYm94LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIseT0+e3RoaXMuX2hhbmRsZUxlYWZOb2RlU2VsZWN0ZWQoaCx1LHkudGFyZ2V0LmNoZWNrZWQpfSwhMSk7UG9seW1lci5kb20oeCkuYXBwZW5kQ2hpbGQobi5jaGVja2JveCk7bi5zZXRMZXZlbERvbSh4KTt2YXIgQT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7QS50ZXh0Q29udGVudD0iWyIrdS5vcF90eXBlKyJdIjtBLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJvcC10eXBlIik7UG9seW1lci5kb20oeCkuYXBwZW5kQ2hpbGQoQSk7CkE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO0EudGV4dENvbnRlbnQ9cTtBLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJvcC10aXRsZS1sZWFmIik7QS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pntjb25zdCB5PXRoaXMuX2dldERldmljZUFuZE5vZGVOYW1lcyhxLGspO3RoaXMubm9kZUNsaWNrZWQoeVswXSx5WzFdKX0sITEpO1BvbHltZXIuZG9tKHgpLmFwcGVuZENoaWxkKEEpO20ucHVzaCh4KX1lbHNlIG4uY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix5PT57dGhpcy5faGFuZGxlTWV0YU5vZGVDaGFuZ2UobixoLHkudGFyZ2V0LmNoZWNrZWQpfSkscC5wdXNoKHRoaXMuX3JlbmRlckxldmVsKHEsdCxuLGgpKX0pO2I9bj0+e1BvbHltZXIuZG9tKGwpLmFwcGVuZENoaWxkKG4pfTtfLmZvckVhY2gobSxiKTtfLmZvckVhY2gocCxiKTtQb2x5bWVyLmRvbShrKS5hcHBlbmRDaGlsZChsKTtyZXR1cm4ga30sX2dldExlYWZEZWJ1Z1dhdGNoZXMoYixkKXtiLmRlYnVnV2F0Y2g/CmQucHVzaChiLmRlYnVnV2F0Y2gpOl8uZm9yRWFjaChiLmNoaWxkcmVuLGY9Pnt0aGlzLl9nZXRMZWFmRGVidWdXYXRjaGVzKGYsZCl9KX0sX2dldERldmljZUFuZE5vZGVOYW1lcyhiLGQpe2ZvcihiPVtiXTs7KXtjb25zdCBmPWQuZ2V0QXR0cmlidXRlKCJsZXZlbC1uYW1lIik7aWYobnVsbD09ZilicmVhaztlbHNlIGIucHVzaChmKTtkPVBvbHltZXIuZG9tKGQpLnBhcmVudE5vZGUucGFyZW50Tm9kZX1iLnJldmVyc2UoKTtyZXR1cm4gVmkuYXNzZW1ibGVEZXZpY2VBbmROb2RlTmFtZXMoYil9LF9oYW5kbGVNZXRhTm9kZUNoYW5nZShiLGQsZil7bGV0IGg9W107dGhpcy5fZ2V0TGVhZkRlYnVnV2F0Y2hlcyhiLGgpO18uZm9yRWFjaChoLGs9Pnt0aGlzLl9oYW5kbGVMZWFmTm9kZVNlbGVjdGVkKGQsayxmKX0pfSxfaGFuZGxlTGVhZk5vZGVTZWxlY3RlZChiLGQsZil7Y29uc3QgaD1kLmRldmljZV9uYW1lKyIvIitkLm5vZGVfbmFtZTtmP3RoaXMuX3NlbGVjdGVkRGVidWdXYXRjaE1hcHBpbmdbaF09CmQ6ZGVsZXRlIHRoaXMuX3NlbGVjdGVkRGVidWdXYXRjaE1hcHBpbmdbaF07YihkLGYpfSxfaGFuZGxlRm9yY2VOb2RlKGIsZCl7dGhpcy5zZXQoIl9maWx0ZXJJbnB1dCIsIiIpO3NldFRpbWVvdXQoKCk9PntpZihudWxsIT1iJiZudWxsIT10aGlzLl9sZXZlbE5hbWUyQ29udGFpbmVyKXt2YXIgZj1WaS5zcGxpdE5vZGVOYW1lKGIpO2ZvcihsZXQgaz0xO2s8PWYubGVuZ3RoOysrayl7dmFyIGg9Zi5zbGljZSgwLGspLmpvaW4oIi8iKTtjb25zdCB0PXRoaXMuX2xldmVsTmFtZTJOb2RlW2hdO251bGwhPXQmJm51bGwhPXQubGV2ZWxEb20mJnQubGV2ZWxEb20uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJjZW50ZXIiLGJlaGF2aW91cjoic21vb3RoIn0pO2s8Zi5sZW5ndGg/bnVsbCE9dGhpcy5fbGV2ZWxOYW1lMkNvbnRhaW5lcltoXSYmdGhpcy5fbGV2ZWxOYW1lMkNvbnRhaW5lcltoXS5zZXRBdHRyaWJ1dGUoIm9wZW5lZCIsITApOih0LmRlYnVnV2F0Y2h8fHRoaXMuX2hhbmRsZU1ldGFOb2RlQ2hhbmdlKHQsCnQuZGVidWdXYXRjaENoYW5nZSwhMCksZCYmKHQuc2V0VG9BbGxDaGVja2VkRXh0ZXJuYWxseSgpLChoPXQuZGVidWdXYXRjaCkmJm51bGw9PXRoaXMuX3NlbGVjdGVkRGVidWdXYXRjaE1hcHBpbmdbaC5ub2RlX25hbWVdJiYodGhpcy5fc2VsZWN0ZWREZWJ1Z1dhdGNoTWFwcGluZ1tiXT1oKSksbnVsbCE9dGhpcy5faGlnaGxpZ2h0ZWRMZXZlbERvbSYmdGhpcy5faGlnaGxpZ2h0ZWRMZXZlbERvbS5jbGFzc0xpc3QucmVtb3ZlKCJoaWdobGlnaHRlZCIpLHQubGV2ZWxEb20uY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0ZWQiKSx0aGlzLnNldCgiX2hpZ2hsaWdodGVkTGV2ZWxEb20iLHQubGV2ZWxEb20pKX19fSwyMCl9LF9oYW5kbGVGb3JjZU5vZGVFeHBhbmRBbmRDaGVjayhiKXt0aGlzLl9oYW5kbGVGb3JjZU5vZGUoYiwhMCl9LF9oYW5kbGVGb3JjZU5vZGVFeHBhbmQoYil7dGhpcy5faGFuZGxlRm9yY2VOb2RlKGIsITEpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi1zZXNzaW9uLXJ1bnMtdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1zZXNzaW9uLXJ1bnMtdmlldyIscHJvcGVydGllczp7bGF0ZXN0U2Vzc2lvblJ1bjpPYmplY3Qsc2Vzc2lvblJ1bktleVRvRGV2aWNlTmFtZXM6T2JqZWN0LHNvbGVBY3RpdmU6Qm9vbGVhbixub2RlT3JUZW5zb3JDbGlja2VkOkZ1bmN0aW9uLF9ydW5LZXkyQ291bnQ6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfcnVuS2V5Mk51bURldmljZXM6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfYWN0aXZlUnVuS2V5OlN0cmluZ30sb2JzZXJ2ZXJzOlsicmVuZGVyTGF0ZXN0KGxhdGVzdFNlc3Npb25SdW4pIiwic2V0U29sZUFjdGl2ZVN0YXR1cyhzb2xlQWN0aXZlKSJdLHJlbmRlckxhdGVzdChiKXtiPUpTT04uc3RyaW5naWZ5KGIpO3RoaXMuX3J1bktleTJDb3VudFtiXT12b2lkIDA9PT10aGlzLl9ydW5LZXkyQ291bnRbYl0/MTp0aGlzLl9ydW5LZXkyQ291bnRbYl0rMTt2b2lkIDA9PT10aGlzLl9ydW5LZXkyTnVtRGV2aWNlc1tiXSYmKHRoaXMuX3J1bktleTJOdW1EZXZpY2VzW2JdPQowKTt0aGlzLl9hY3RpdmVSdW5LZXk9Yjt0aGlzLl9yZW5kZXJTZXNzaW9uUnVuVGFibGUoKX0sdXBkYXRlTnVtRGV2aWNlcyhiKXtudWxsIT10aGlzLl9hY3RpdmVSdW5LZXkmJih0aGlzLl9ydW5LZXkyTnVtRGV2aWNlc1t0aGlzLl9hY3RpdmVSdW5LZXldPWIsdGhpcy5fcmVuZGVyU2Vzc2lvblJ1blRhYmxlKCkpfSxzZXRTb2xlQWN0aXZlU3RhdHVzKCl7dGhpcy5fcmVuZGVyU2Vzc2lvblJ1blRhYmxlKCl9LF9yZW5kZXJTZXNzaW9uUnVuVGFibGUoKXt0aGlzLl9jbGVhclRhYmxlKCk7dGhpcy5fcmVuZGVySGVhZGVyKCk7bGV0IGI7Zm9yKGNvbnN0IGYgaW4gdGhpcy5fcnVuS2V5MkNvdW50KWlmKHRoaXMuX3J1bktleTJDb3VudC5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGQ9SlNPTi5wYXJzZShmKTsoZD10aGlzLl9yZW5kZXJSb3coZCx0aGlzLl9ydW5LZXkyTnVtRGV2aWNlc1tmXSx0aGlzLl9ydW5LZXkyQ291bnRbZl0sdGhpcy5fYWN0aXZlUnVuS2V5PT09Zix0aGlzLnNvbGVBY3RpdmUpKSYmCihiPWQpfWImJihQb2x5bWVyLmRvbSh0aGlzLiQkKCIjc2Vzc2lvbi1ydW5zLXRhYmxlIikpLnBhcmVudE5vZGUucGFyZW50Tm9kZS5zY3JvbGxUb3A9Yi5vZmZzZXRUb3ApfSxfY2xlYXJUYWJsZSgpe2NvbnN0IGI9dGhpcy4kJCgiI3Nlc3Npb24tcnVucy10YWJsZSIpO2Zvcig7Yi5maXJzdENoaWxkOyliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9LF9yZW5kZXJIZWFkZXIoKXtjb25zdCBiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIiksZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpO2QudGV4dENvbnRlbnQ9IkZlZWRzIjtjb25zdCBmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Zi50ZXh0Q29udGVudD0iRmV0Y2hlcyI7Y29uc3QgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpO2gudGV4dENvbnRlbnQ9IlRhcmdldHMiO2NvbnN0IGs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgiKTtrLnRleHRDb250ZW50PSIjKERldmljZXMpIjtjb25zdCB0PQpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpO3QudGV4dENvbnRlbnQ9IkNvdW50IjtiLmFwcGVuZENoaWxkKGQpO2IuYXBwZW5kQ2hpbGQoZik7Yi5hcHBlbmRDaGlsZChoKTtiLmFwcGVuZENoaWxkKGspO2IuYXBwZW5kQ2hpbGQodCk7UG9seW1lci5kb20odGhpcy4kJCgiI3Nlc3Npb24tcnVucy10YWJsZSIpKS5hcHBlbmRDaGlsZChiKX0sX3JlbmRlclJvdyhiLGQsZixoLGspe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSxsPXRoaXMuX3JlbmRlckdyYXBoRWxlbWVudHMoYi5mZWVkcykscD10aGlzLl9yZW5kZXJHcmFwaEVsZW1lbnRzKGIuZmV0Y2hlcyk7Yj10aGlzLl9yZW5kZXJHcmFwaEVsZW1lbnRzKGIudGFyZ2V0cyk7Y29uc3QgbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO20udGV4dENvbnRlbnQ9ZDtkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7ZC50ZXh0Q29udGVudD1mO3QuYXBwZW5kQ2hpbGQobCk7dC5hcHBlbmRDaGlsZChwKTsKdC5hcHBlbmRDaGlsZChiKTt0LmFwcGVuZENoaWxkKG0pO3QuYXBwZW5kQ2hpbGQoZCk7aCYmKGs/dC5zZXRBdHRyaWJ1dGUoImNsYXNzIiwic29sZS1hY3RpdmUtc2Vzc2lvbi1ydW4iKTp0LnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJhY3RpdmUtc2Vzc2lvbi1ydW4iKSk7UG9seW1lci5kb20odGhpcy4kJCgiI3Nlc3Npb24tcnVucy10YWJsZSIpKS5hcHBlbmRDaGlsZCh0KTtpZihoKXJldHVybiB0fSxfcmVuZGVyR3JhcGhFbGVtZW50cyhiKXtjb25zdCBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Xy5mb3JFYWNoKGIsZj0+e2NvbnN0IGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aC50ZXh0Q29udGVudD1mO2guc2V0QXR0cmlidXRlKCJjbGFzcyIsIm5vZGUtb3ItdGVuc29yLWVsZW1lbnQiKTtoLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3RoaXMubm9kZU9yVGVuc29yQ2xpY2tlZChmKX0pO2QuYXBwZW5kQ2hpbGQoaCl9KTtyZXR1cm4gZH19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1kZWJ1Z2dlci1kYXNoYm9hcmQvdGYtc291cmNlLWNvZGUtdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1zb3VyY2UtY29kZS12aWV3Iixwcm9wZXJ0aWVzOntyZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sZm9jdXNOb2RlTmFtZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX29sZEZvY3VzTm9kZU5hbWU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LGRlYnVnV2F0Y2hlczp7dHlwZTpBcnJheSx2YWx1ZTpbXX0sbm9kZUNsaWNrZWQ6e3R5cGU6RnVuY3Rpb24sdmFsdWU6bnVsbH0sY29udGludWVUb05vZGU6e3R5cGU6RnVuY3Rpb24sdmFsdWU6bnVsbH0sX2hpZ2hsaWdodGVkRWxlbWVudHM6e3R5cGU6QXJyYXksdmFsdWU6W119LF9maWxlUGF0aFNlbGVjdGVkOk51bWJlcixfZnVsbEZpbGVQYXRoczp7dHlwZTpBcnJheSx2YWx1ZTpudWxsfSxfc2hvcnRGaWxlUGF0aHM6e3R5cGU6QXJyYXksdmFsdWU6bnVsbH0sX2ZpbGVMaW5lczp7dHlwZTpBcnJheSx2YWx1ZTpudWxsfSxfbm9kZU5hbWUyRGV2aWNlTmFtZTp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sCl9ub2RlTmFtZTJCYXNlRXhwYW5kZWROb2RlTmFtZTp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sX25vZGVOYW1lMk5vZGVFbGVtZW50czp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbH0sX25vZGVOYW1lMlN0YWNrVG9wTm9kZUVsZW1lbnQ6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LF9zZXRIaWdodGxpZ2h0T3JpZ2luTm9kZUVsZW1lbnQ6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LF9mdWxsU3RhY2tTaG93bjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfZnVsbFN0YWNrTm9kZU5hbWU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9yZW5kZXJEZWxheU1pbGxpczp7dHlwZTpOdW1iZXIsdmFsdWU6NTAscmVhZG9ubHk6ITB9fSxvYnNlcnZlcnM6WyJfcmVuZGVyRmlsZShfZmlsZVBhdGhTZWxlY3RlZCkiLCJfZm9jdXNPbk5vZGUoZm9jdXNOb2RlTmFtZSkiXSxyZW5kZXIoYil7bnVsbCE9YiYmdGhpcy5zZXQoIl9kZWJ1Z1dhdGNoZXMiLGIpO3RoaXMuX3F1ZXJ5U291cmNlQ29kZUVuZFBvaW50KHttb2RlOiJwYXRocyJ9KS50aGVuKGQ9Pgp7dGhpcy5zZXQoIl9mdWxsRmlsZVBhdGhzIixkLnBhdGhzKTtjb25zdCBmPWQucGF0aHMubWFwKGg9Pih7aWQ6aCxuYW1lOnRoaXMuX3Nob3J0ZW5QYXRoKGgsZC5wYXRocyl9KSk7dGhpcy5zZXQoIl9zaG9ydEZpbGVQYXRocyIsZik7MDxmLmxlbmd0aCYmdGhpcy5zZXQoIl9maWxlUGF0aFNlbGVjdGVkIiwwKX0pfSxfc2hvcnRlblBhdGgoYil7Yj1iLnJlcGxhY2UoL1xcL2csIi8iKTtiPWIuc3BsaXQoIi8iKTtyZXR1cm4gYltiLmxlbmd0aC0xXX0sX3JlbmRlckZpbGUoYil7aWYobnVsbCE9Yil7dmFyIGQ9dGhpcy5fc2hvcnRGaWxlUGF0aHNbYl0uaWQ7dGhpcy5fcXVlcnlTb3VyY2VDb2RlRW5kUG9pbnQoe21vZGU6ImNvbnRlbnQiLGZpbGVfcGF0aDpkfSkudGhlbihmPT57Y29uc3QgaD1bXSxrPWYuY29udGVudFtkXSx0PWYubGluZW5vX3RvX29wX25hbWVfYW5kX3N0YWNrX3BvcztmPXt9O2Zvcih2YXIgbCBpbiB0KXQuaGFzT3duUHJvcGVydHkobCkmJihmW2xdPXRbbF0ubGVuZ3RoKTsKdGhpcy5fZmlsdGVyRmlsZVRyYWNlYmFja3NCeURlYnVnV2F0Y2hlcyh0KTtmb3IobD0wO2w8ay5sZW5ndGg7KytsKXtjb25zdCBtPWwrMTtoLnB1c2goe2xpbmVubzptLG51bU5vZGVzOm51bGwhPXRbbV0/U3RyaW5nKHRbbV0ubGVuZ3RoKSsiLyIrU3RyaW5nKGZbbV0pKyIgXHUyNWJjIjoiIix0ZXh0OnRoaXMuX2h0bWxFc2NhcGUoa1tsXSl9KX10aGlzLnNldCgiX2ZpbGVMaW5lcyIsaCk7Y29uc3QgcD10aGlzO3NldFRpbWVvdXQoKCk9Pntjb25zdCBtPXt9LG49e307Zm9yKGNvbnN0IHUgaW4gdCl7aWYoIXQuaGFzT3duUHJvcGVydHkodSkpY29udGludWU7Zm9yKHZhciBxPXAuJCQoIiNzb3VyY2UtbGluZS1ub2Rlcy0iK3UpO3EuZmlyc3RDaGlsZDspcS5yZW1vdmVDaGlsZChxLmZpcnN0Q2hpbGQpO2NvbnN0IHg9dFt1XTt4LnNvcnQoZnVuY3Rpb24oQSx5KXtyZXR1cm4gQVswXTx5WzBdPy0xOkFbMF0+eVswXT8xOjB9KTtmb3IobGV0IEE9MDtBPHgubGVuZ3RoOysrQSl7Y29uc3QgeT0KeFtBXVswXSx3PXhbQV1bMV0sQz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtGLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJzb3VyY2UtbGluZS1ub2RlLWVudHRyeSIpO0Yuc2V0QXR0cmlidXRlKCJzb3VyY2VMaW5lbm8iLHUpO0YudGV4dENvbnRlbnQ9eTtGLmFkZEV2ZW50TGlzdGVuZXIoInRhcCIsKCk9Pnt0aGlzLm5vZGVDbGlja2VkKHRoaXMuX25vZGVOYW1lMkRldmljZU5hbWVbeV0sdGhpcy5fbm9kZU5hbWUyQmFzZUV4cGFuZGVkTm9kZU5hbWVbeV0sITApfSk7Y29uc3QgRD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwYXBlci1pY29uLWJ1dHRvbiIpO0Quc2V0QXR0cmlidXRlKCJpY29uIiwiZmlsdGVyLWxpc3QiKTtELnNldEF0dHJpYnV0ZSgidGl0bGUiLCJTaG93IHN0YWNrIik7RC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLCgpPT57dGhpcy5faGlnaGxpZ2h0Tm9kZUVsZW1lbnRzKHkpO3RoaXMuc2V0KCJfZnVsbFN0YWNrTm9kZU5hbWUiLAp5KTt0aGlzLnNldCgiX2Z1bGxTdGFja1Nob3duIiwhMCk7dGhpcy5fcG9wdWxhdGVGdWxsU3RhY2soeSx0aGlzLl9mdWxsRmlsZVBhdGhzW3RoaXMuX2ZpbGVQYXRoU2VsZWN0ZWRdLE51bWJlcih1KSl9KTtjb25zdCBCPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcGVyLWljb24tYnV0dG9uIik7Qi5zZXRBdHRyaWJ1dGUoImljb24iLCJmb3J3YXJkIik7Qi5zZXRBdHRyaWJ1dGUoInRpdGxlIiwiQ29udGludWUgdG8iKTtCLmFkZEV2ZW50TGlzdGVuZXIoInRhcCIsKCk9Pnt0aGlzLm5vZGVDbGlja2VkKHRoaXMuX25vZGVOYW1lMkRldmljZU5hbWVbeV0sdGhpcy5fbm9kZU5hbWUyQmFzZUV4cGFuZGVkTm9kZU5hbWVbeV0sITApO2NvbnN0IEk9dGhpcy5fbm9kZU5hbWUyRGV2aWNlTmFtZVt5XSxOPXRoaXMuX25vZGVOYW1lMkJhc2VFeHBhbmRlZE5vZGVOYW1lW3ldO3RoaXMuc2V0KCJfc2V0SGlnaHRsaWdodE9yaWdpbk5vZGVFbGVtZW50IixGKTt0aGlzLmNvbnRpbnVlVG9Ob2RlKEksCk4pfSk7Qy5hcHBlbmRDaGlsZChEKTtDLmFwcGVuZENoaWxkKEIpO0MuYXBwZW5kQ2hpbGQoRik7cS5hcHBlbmRDaGlsZChDKTttLmhhc093blByb3BlcnR5KHkpfHwobVt5XT1bXSk7bVt5XS5wdXNoKEYpO24uaGFzT3duUHJvcGVydHkoeSl8fChuW3ldPVtGLHddKTt3Pm5beV1bMV0mJihuW3ldPVtGLHddKX1xLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwhMCk7cT1wLiQkKCIjc291cmNlLWxpbmUtbm9kZS10b2dnbGUtIit1KTtudWxsPT1xLmdldEF0dHJpYnV0ZSgidGFwQ2FsbGJhY2tTZXQiKSYmKHEuYWRkRXZlbnRMaXN0ZW5lcigidGFwIiwoKT0+e3AuX3RvZ2dsZUxpbmVOb2RlcyhOdW1iZXIodSkpfSkscS5zZXRBdHRyaWJ1dGUoInRhcENhbGxiYWNrU2V0IiwhMCkpfXAuc2V0KCJfbm9kZU5hbWUyTm9kZUVsZW1lbnRzIixtKTtmb3IoY29uc3QgdSBpbiBuKW4uaGFzT3duUHJvcGVydHkodSkmJihuW3VdPW5bdV1bMF0pO3Auc2V0KCJfbm9kZU5hbWUyU3RhY2tUb3BOb2RlRWxlbWVudCIsCm4pfSx0aGlzLl9yZW5kZXJEZWxheU1pbGxpcyl9KX19LF90b2dnbGVMaW5lTm9kZXMoYixkPSExKXtiPXRoaXMuJCQoIiNzb3VyY2UtbGluZS1ub2Rlcy0iK2IpO251bGw9PWIuZ2V0QXR0cmlidXRlKCJoaWRkZW4iKSYmITAhPT1kP2Iuc2V0QXR0cmlidXRlKCJoaWRkZW4iLCEwKTpiLnJlbW92ZUF0dHJpYnV0ZSgiaGlkZGVuIil9LF9maWx0ZXJGaWxlVHJhY2ViYWNrc0J5RGVidWdXYXRjaGVzKGIpe2NvbnN0IGQ9dGhpcy5kZWJ1Z1dhdGNoZXMubWFwKGs9PlZpLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbihrLm5vZGVfbmFtZSkpLGY9e30saD17fTtmb3IoY29uc3QgayBvZiB0aGlzLmRlYnVnV2F0Y2hlcyl7Y29uc3QgdD1WaS5yZW1vdmVOb2RlTmFtZUJhc2VFeHBhbnNpb24oay5ub2RlX25hbWUpO2ZbdF09ay5kZXZpY2VfbmFtZTtoW3RdPWsubm9kZV9uYW1lfXRoaXMuc2V0KCJfbm9kZU5hbWUyRGV2aWNlTmFtZSIsZik7dGhpcy5zZXQoIl9ub2RlTmFtZTJCYXNlRXhwYW5kZWROb2RlTmFtZSIsCmgpO2Zvcihjb25zdCBrIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShrKSYmKGJba109YltrXS5maWx0ZXIodD0+Xy5pbmNsdWRlcyhkLHRbMF0pKSl9LF9xdWVyeVNvdXJjZUNvZGVFbmRQb2ludChiKXtjb25zdCBkPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi9zb3VyY2VfY29kZSIpO2I9dmMuYWRkUGFyYW1zKGQsYik7cmV0dXJuIHRoaXMucmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKX0sX2h0bWxFc2NhcGUoYil7cmV0dXJuIGIucmVwbGFjZSgvIC9nLCJcdTAwYTAiKX0sX2ZvY3VzT25Ob2RlKGIpe2lmKG51bGwhPWIpe3ZhciBkPXRoaXMuX3Nob3J0RmlsZVBhdGhzW3RoaXMuX2ZpbGVQYXRoU2VsZWN0ZWRdLmlkLGY9dGhpczt0aGlzLl9xdWVyeVNvdXJjZUNvZGVFbmRQb2ludCh7bW9kZToib3BfdHJhY2ViYWNrIixvcF9uYW1lOmJ9KS50aGVuKGg9Pntjb25zdCBrPWgub3BfdHJhY2ViYWNrW2JdO2g9W107Zm9yKGxldCBsPTA7bDxrLmxlbmd0aDsrK2wpe2NvbnN0IHA9CmtbbF1bMV07a1tsXVswXT09PWQmJmgucHVzaChwKX1mb3IodmFyIHQgb2YgZi5faGlnaGxpZ2h0ZWRFbGVtZW50cyl0LmNsYXNzTGlzdC5yZW1vdmUoImhpZ2hsaWdodGVkLXNvdXJjZS1saW5lIik7dD1bXTtmb3IoY29uc3QgbCBvZiBoKWg9dGhpcy4kJCgiI3NvdXJjZS1saW5lLSIrbCksdC5wdXNoKGgpLGguY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0ZWQtc291cmNlLWxpbmUiKSxmLl90b2dnbGVMaW5lTm9kZXMobCwhMCk7Zi5zZXQoIl9oaWdobGlnaHRlZEVsZW1lbnRzIix0KTt0aGlzLl9oaWdobGlnaHROb2RlRWxlbWVudHMoYil9KX19LF9oaWdobGlnaHROb2RlRWxlbWVudHMoYil7aWYobnVsbCE9dGhpcy5fb2xkRm9jdXNOb2RlTmFtZSlmb3IoY29uc3QgZCBvZiB0aGlzLl9ub2RlTmFtZTJOb2RlRWxlbWVudHNbdGhpcy5fb2xkRm9jdXNOb2RlTmFtZV0pZC5zdHlsZVsiZm9udC13ZWlnaHQiXT0ibm9ybWFsIjtmb3IoY29uc3QgZCBvZiB0aGlzLl9ub2RlTmFtZTJOb2RlRWxlbWVudHNbYl0pZC5zdHlsZVsiZm9udC13ZWlnaHQiXT0KImJvbGQiO251bGw9PXRoaXMuX3NldEhpZ2h0bGlnaHRPcmlnaW5Ob2RlRWxlbWVudD90aGlzLl9ub2RlTmFtZTJTdGFja1RvcE5vZGVFbGVtZW50W2JdLnNjcm9sbEludG9WaWV3KHtibG9jazoiY2VudGVyIixiZWhhdmlvdXI6InNtb290aCJ9KTp0aGlzLnNldCgiX3NldEhpZ2h0bGlnaHRPcmlnaW5Ob2RlRWxlbWVudCIsbnVsbCk7dGhpcy5zZXQoIl9vbGRGb2N1c05vZGVOYW1lIixiKX0sX3BvcHVsYXRlRnVsbFN0YWNrKGIsZCxmKXt0aGlzLl9xdWVyeVNvdXJjZUNvZGVFbmRQb2ludCh7bW9kZToib3BfdHJhY2ViYWNrIixvcF9uYW1lOmJ9KS50aGVuKGg9Pntjb25zdCBrPXRoaXMuJCQoIiNmdWxsLXN0YWNrLWNvbnRlbnQiKTtmb3IoO2suZmlyc3RDaGlsZDspay5yZW1vdmVDaGlsZChrLmZpcnN0Q2hpbGQpO2Zvcihjb25zdCB0IG9mIGgub3BfdHJhY2ViYWNrW2JdKXtjb25zdCBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikscD10WzBdLG09TnVtYmVyKHRbMV0pO2wudGV4dENvbnRlbnQ9CnArIjogIitTdHJpbmcobSk7Xy5pbmNsdWRlcyh0aGlzLl9mdWxsRmlsZVBhdGhzLHApPyhsLmNsYXNzTGlzdC5hZGQoInN0YWNrLWZyYW1lLWNsaWNrYWJsZSIpLGwuc3R5bGUuY29sb3I9ImJsdWUiLGwuc3R5bGVbInRleHQtZGVjb3JhdGlvbiJdPSJ1bmRlcmxpbmUiLGwuc3R5bGUuY3Vyc29yPSJwb2ludGVyIixwPT09ZCYmbT09PWYmJihsLnN0eWxlWyJmb250LXdlaWdodCJdPSJib2xkIiksbC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLCgpPT57dGhpcy5zZXQoIl9maWxlUGF0aFNlbGVjdGVkIix0aGlzLl9mdWxsRmlsZVBhdGhzLmluZGV4T2YocCkpO3NldFRpbWVvdXQoKCk9Pnt0aGlzLl90b2dnbGVMaW5lTm9kZXMobSwhMCk7Zm9yKGNvbnN0IG4gb2YgdGhpcy5fbm9kZU5hbWUyTm9kZUVsZW1lbnRzW2JdKU51bWJlcihuLmdldEF0dHJpYnV0ZSgic291cmNlTGluZW5vIikpPT09TnVtYmVyKG0pJiYobi5zY3JvbGxJbnRvVmlldyh7YmxvY2s6ImNlbnRlciIsYmVoYXZpb3VyOiJzbW9vdGgifSksCnRoaXMuc2V0KCJfc2V0SGlnaHRsaWdodE9yaWdpbk5vZGVFbGVtZW50IixsKSx0aGlzLl9oaWdobGlnaHROb2RlRWxlbWVudHMoYiksZD09PXAmJmY9PT1tfHx0aGlzLl9wb3B1bGF0ZUZ1bGxTdGFjayhiLHAsbSkpfSwyKnRoaXMuX3JlbmRlckRlbGF5TWlsbGlzKX0pKToobC5jbGFzc0xpc3QuYWRkKCJzdGFjay1mcmFtZS1ub25jbGlja2FibGUiKSxsLnN0eWxlLmNvbG9yPSIjNTU1Iik7ay5hcHBlbmRDaGlsZChsKX19KX0sX2Nsb3NlRnVsbFN0YWNrRGlhbG9nKCl7dGhpcy5zZXQoIl9mdWxsU3RhY2tTaG93biIsITEpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi10ZW5zb3ItZGF0YS1zdW1tYXJ5Lmh0bWwuanMKUG9seW1lcih7aXM6InRmLXRlbnNvci1kYXRhLXN1bW1hcnkiLHByb3BlcnRpZXM6e2xhdGVzdFRlbnNvckRhdGE6T2JqZWN0LGV4cGFuZEhhbmRsZXI6T2JqZWN0LGNvbnRpbnVlVG9DYWxsYmFjazpGdW5jdGlvbixoaWdobGlnaHRlZE5vZGVOYW1lOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSx0ZW5zb3JOYW1lQ2xpY2tlZDp7dHlwZTpGdW5jdGlvbix2YWx1ZTpudWxsfSxnZXRIZWFsdGhQaWxsOkZ1bmN0aW9uLF9oZWFsdGhQaWxsc0VuYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxub3RpZnk6ITB9LF93YXRjaEtleXM6e3R5cGU6QXJyYXksdmFsdWU6W119LF93YXRjaEtleTJEYXRhOnt0eXBlOk9iamVjdCx2YWx1ZTp7fX0sX3dhdGNoS2V5MkNvdW50Ont0eXBlOk9iamVjdCx2YWx1ZTp7fX0sX3dhdGNoS2V5MkV4cGFuZEhhbmRsZXI6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfd2F0Y2hLZXkyVmFsdWVTaG9ydDp7dHlwZTpPYmplY3QsdmFsdWU6e319LF93YXRjaEtleTJSb3c6e3R5cGU6T2JqZWN0LAp2YWx1ZTp7fX0sX2FjdGl2ZVdhdGNoS2V5OlN0cmluZyxfaGVhbHRoUGlsbFdpZHRoOnt0eXBlOk51bWJlcix2YWx1ZToyMDAscmVhZG9ubHk6ITB9LF9oZWFsdGhQaWxsSGVpZ2h0Ont0eXBlOk51bWJlcix2YWx1ZTozMixyZWFkb25seTohMH19LG9ic2VydmVyczpbIl9yZW5kZXJMYXRlc3QobGF0ZXN0VGVuc29yRGF0YSwgZXhwYW5kSGFuZGxlcikiLCJfaGlnaGxpZ2h0KGhpZ2hsaWdodGVkTm9kZU5hbWUpIl0sbGlzdGVuZXJzOnsic2hvdy1oZWFsdGgtcGlsbHMuY2hhbmdlIjoiX3Nob3dIZWFsdGhQaWxsc0NoYW5nZWQifSxyZWFkeSgpe3RoaXMuX3JlbmRlckhlYWx0aFBpbGxMZWdlbmQoKX0sZW5hYmxlSGVhbHRoUGlsbHMoKXt0aGlzLnNldCgiX2hlYWx0aFBpbGxzRW5hYmxlZCIsITApO3RoaXMuX3JlbmRlckhlYWx0aFBpbGxMZWdlbmQoKX0sX3Nob3dIZWFsdGhQaWxsc0NoYW5nZWQoKXt0aGlzLl9oZWFsdGhQaWxsc0VuYWJsZWQ/dGhpcy5fcmVuZGVySGVhbHRoUGlsbExlZ2VuZCgpOgp0aGlzLl9jbGVhckhlYWx0aFBpbGxMZWdlbmQoKTt0aGlzLl9yZW5kZXJBbGwoKX0sX3JlbmRlckFsbCgpe3RoaXMuX2NsZWFyVGVuc29yRGF0YVRhYmxlKCk7Zm9yKGNvbnN0IGIgb2YgdGhpcy5fd2F0Y2hLZXlzKXRoaXMuX3JlbmRlckxhdGVzdCh0aGlzLl93YXRjaEtleTJEYXRhW2JdLHRoaXMuX3dhdGNoS2V5MkV4cGFuZEhhbmRsZXJbYl0pfSxfdGVuc29yRGF0YTJXYXRjaEtleShiKXtyZXR1cm4gYi5kZXZpY2VOYW1lKyIvIitiLnRlbnNvck5hbWUrIjoiK2IuZGVidWdPcH0sX3JlbmRlckxhdGVzdChiLGQpe2lmKGIpe3ZhciBmPXRoaXMuX3RlbnNvckRhdGEyV2F0Y2hLZXkoYiksaD1udWxsOyJVbmluaXRpYWxpemVkIiE9PWIuZHR5cGUmJiJVbnN1cHBvcnRlZCIhPT1iLmR0eXBlJiYoaD0oKT0+ZChiKSk7dmFyIGs9bnVsbCE9Yi52YWx1ZT9KU09OLnN0cmluZ2lmeShiLnZhbHVlLCh0LGwpPT5sLnRvRml4ZWQ/TnVtYmVyKGwudG9GaXhlZCgzKSk6bCk6IihDbGljayB0byB2aWV3KSI7CnRoaXMuX3dhdGNoS2V5MkRhdGFbZl09YjstMT09PXRoaXMuX3dhdGNoS2V5cy5pbmRleE9mKGYpPyh0aGlzLl93YXRjaEtleXMucHVzaChmKSx0aGlzLl93YXRjaEtleTJDb3VudFtmXT0xKTp0aGlzLl93YXRjaEtleTJDb3VudFtmXSs9MTt0aGlzLl93YXRjaEtleTJFeHBhbmRIYW5kbGVyW2ZdPWg7dGhpcy5fd2F0Y2hLZXkyVmFsdWVTaG9ydFtmXT1rO3RoaXMuX2FjdGl2ZVdhdGNoS2V5PWY7dGhpcy5fcmVtb3ZlQWN0aXZlU3RhdHVzRnJvbUFsbFJvd3MoKTt0aGlzLl9yZW5kZXJSb3coZil9fSxfY2xlYXJUZW5zb3JEYXRhVGFibGUoKXtmb3IoY29uc3QgYiBpbiB0aGlzLl93YXRjaEtleTJSb3cpdGhpcy5fd2F0Y2hLZXkyUm93Lmhhc093blByb3BlcnR5KGIpJiYodGhpcy5fd2F0Y2hLZXkyUm93W2JdLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLl93YXRjaEtleTJSb3dbYl0pfSxfY2xlYXJUZW5zb3JEYXRhUm93KGIpe2Zvcig7Yi5maXJzdENoaWxkOyliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9LApfY2xlYXJIZWFsdGhQaWxsTGVnZW5kKCl7Y29uc3QgYj10aGlzLiQkKCIjaGVhbHRoLXBpbGwtbGVnZW5kIik7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKX0sX3JlbmRlckhlYWx0aFBpbGxMZWdlbmQoKXt0aGlzLl9jbGVhckhlYWx0aFBpbGxMZWdlbmQoKTtjb25zdCBiPXRoaXMuJCQoIiNoZWFsdGgtcGlsbC1sZWdlbmQiKTt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtkLnRleHRDb250ZW50PSJMZWdlbmQ6IjtiLmFwcGVuZENoaWxkKGQpO2Quc3R5bGVbIm1hcmdpbi1yaWdodCJdPSIwLjVlbSI7ZC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siO2ZvcihkPTA7ZDx0Zi5ncmFwaC5zY2VuZS5oZWFsdGhQaWxsRW50cmllcy5sZW5ndGg7KytkKXtjb25zdCBmPXRmLmdyYXBoLnNjZW5lLmhlYWx0aFBpbGxFbnRyaWVzW2RdLGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aC5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2siOwpoLnN0eWxlWyJtYXJnaW4tcmlnaHQiXT0iMC4yNWVtIjtjb25zdCBrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtrLnRleHRDb250ZW50PSJcdTI1YTAiO2suc3R5bGUuY29sb3I9Zi5iYWNrZ3JvdW5kX2NvbG9yO2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO3QudGV4dENvbnRlbnQ9Zi5sYWJlbDt0LnN0eWxlLmNvbG9yPWYuYmFja2dyb3VuZF9jb2xvcjtoLmFwcGVuZENoaWxkKGspO2guYXBwZW5kQ2hpbGQodCk7Yi5hcHBlbmRDaGlsZChoKX19LF9yZW1vdmVBY3RpdmVTdGF0dXNGcm9tQWxsUm93cygpe2Zvcihjb25zdCBiIGluIHRoaXMuX3dhdGNoS2V5MlJvdyl7aWYoIXRoaXMuX3dhdGNoS2V5MlJvdy5oYXNPd25Qcm9wZXJ0eShiKSljb250aW51ZTtjb25zdCBkPXRoaXMuX3dhdGNoS2V5MlJvd1tiXTtQb2x5bWVyLmRvbShkKS5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUtdGVuc29yIik7UG9seW1lci5kb20oZCkuY2xhc3NMaXN0LnJlbW92ZSgiaGlnaGxpZ2h0ZWQiKX19LApfcmVuZGVyUm93KGIpe2xldCBkLGY9ITE7bnVsbCE9dGhpcy5fd2F0Y2hLZXkyUm93W2JdPyhkPXRoaXMuX3dhdGNoS2V5MlJvd1tiXSx0aGlzLl9jbGVhclRlbnNvckRhdGFSb3coZCksZj0hMSk6KGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKSxmPSEwKTtjb25zdCBoPXRoaXMuX3dhdGNoS2V5MkRhdGFbYl0uZGV2aWNlTmFtZSxrPXRoaXMuX3dhdGNoS2V5MkRhdGFbYl0ubWF5YmVCYXNlRXhwYW5kZWROb2RlTmFtZSx0PWgrIi8iK2s7dmFyIGw9dGhpcy5fd2F0Y2hLZXkyQ291bnRbYl0scD10aGlzLl93YXRjaEtleTJEYXRhW2JdLnRlbnNvck5hbWUsbT10aGlzLl93YXRjaEtleTJEYXRhW2JdLmRlYnVnT3Asbj10aGlzLl93YXRjaEtleTJWYWx1ZVNob3J0W2JdO2NvbnN0IHE9dGhpcy5fd2F0Y2hLZXkyRXhwYW5kSGFuZGxlcltiXSx1PWI9PT10aGlzLl9hY3RpdmVXYXRjaEtleSx4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7UG9seW1lci5kb20oeCkuY2xhc3NMaXN0LmFkZCgidGVuc29yLW5hbWUiKTsKeC5zdHlsZVsidGV4dC1kZWNvcmF0aW9uIl09InVuZGVybGluZSI7eC5zdHlsZS5jdXJzb3I9InBvaW50ZXIiO3gudGV4dENvbnRlbnQ9cDt4LmFkZEV2ZW50TGlzdGVuZXIoInRhcCIsKCk9PntudWxsIT10aGlzLnRlbnNvck5hbWVDbGlja2VkJiZ0aGlzLnRlbnNvck5hbWVDbGlja2VkKGgsayl9KTtjb25zdCBBPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7QS50ZXh0Q29udGVudD1sO2NvbnN0IHk9dGhpcy5fd2F0Y2hLZXkyRGF0YVtiXS5kdHlwZTtsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Y29uc3Qgdz10aGlzLl93YXRjaEtleTJEYXRhW2JdLnNoYXBlO2wudGV4dENvbnRlbnQ9eTtjb25zdCBDPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Qy50ZXh0Q29udGVudD1KU09OLnN0cmluZ2lmeSh3KTtjb25zdCBGPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ri50ZXh0Q29udGVudD1uO1BvbHltZXIuZG9tKEYpLmNsYXNzTGlzdC5hZGQoInZhbHVlLWV4cGFuc2lvbi1saW5rIik7Cm51bGwhPXEmJihGLmFkZEV2ZW50TGlzdGVuZXIoInRhcCIscSwhMSksRi5zdHlsZVsidGV4dC1kZWNvcmF0aW9uIl09InVuZGVybGluZSIsRi5zdHlsZS5jdXJzb3I9InBvaW50ZXIiKTtuPW51bGw7bj10aGlzLl9oZWFsdGhQaWxsc0VuYWJsZWQ/dGhpcy5fcmVuZGVySGVhbHRoUGlsbChwKyI6IittLHtkZXZpY2VfbmFtZTpoLG5vZGVfbmFtZTprLGR0eXBlOnksc2hhcGU6dyx2YWx1ZTpudWxsfSxxKTpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpO3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTttPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBhcGVyLWljb24tYnV0dG9uIik7bS5zZXRBdHRyaWJ1dGUoImljb24iLCJmb3J3YXJkIik7bS5zZXRBdHRyaWJ1dGUoInRpdGxlIiwiQ29udGludWUgdG8iKTttLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3RoaXMuY29udGludWVUb0NhbGxiYWNrKGgsayl9KTtwLmFwcGVuZENoaWxkKG0pO2QuYXBwZW5kQ2hpbGQoeCk7CmQuYXBwZW5kQ2hpbGQoQSk7ZC5hcHBlbmRDaGlsZChsKTtkLmFwcGVuZENoaWxkKEMpO2QuYXBwZW5kQ2hpbGQoRik7ZC5hcHBlbmRDaGlsZChuKTtkLmFwcGVuZENoaWxkKHApO2Quc2V0QXR0cmlidXRlKCJub2RlTmFtZVdpdGhEZXZpY2UiLHQpO3UmJihQb2x5bWVyLmRvbShkKS5jbGFzc0xpc3QuYWRkKCJhY3RpdmUtdGVuc29yIiksUG9seW1lci5kb20oZCkuY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0ZWQiKSk7dGhpcy5fd2F0Y2hLZXkyUm93W2JdPWQ7ZiYmUG9seW1lci5kb20odGhpcy4kJCgiI3RlbnNvci1kYXRhLXRhYmxlIHRib2R5IikpLmFwcGVuZENoaWxkKGQpO2Quc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJlbmQiLGlubGluZToibmVhcmVzdCIsYmVoYXZpb3VyOiJzbW9vdGgifSl9LF9yZW5kZXJIZWFsdGhQaWxsKGIsZCxmKXtjb25zdCBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7UG9seW1lci5kb20oaCkuY2xhc3NMaXN0LmFkZCgiaGVhbHRoLXBpbGwiKTsKbnVsbCE9ZiYmaC5hZGRFdmVudExpc3RlbmVyKCJ0YXAiLGYsITEpO2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHRmLmdyYXBoLnNjZW5lLlNWR19OQU1FU1BBQ0UsInN2ZyIpO2Yuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy5faGVhbHRoUGlsbFdpZHRoKTtmLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLl9oZWFsdGhQaWxsSGVpZ2h0KTtjb25zdCBrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyh0Zi5ncmFwaC5zY2VuZS5TVkdfTkFNRVNQQUNFLCJnIik7Zi5hcHBlbmRDaGlsZChrKTtoLmFwcGVuZENoaWxkKGYpO2NvbnN0IHQ9InRkcC8iK2I7dGhpcy5nZXRIZWFsdGhQaWxsKGIsZC5kZXZpY2VfbmFtZSxkLm5vZGVfbmFtZSxsPT57bnVsbD09bD8oaC50ZXh0Q29udGVudD0iTi9BIixoLnN0eWxlLmNvbG9yPSJncmF5Iik6KGQudmFsdWU9bCx0Zi5ncmFwaC5zY2VuZS5hZGRIZWFsdGhQaWxsKGssZCxudWxsLHQsdGhpcy5faGVhbHRoUGlsbFdpZHRoLHRoaXMuX2hlYWx0aFBpbGxIZWlnaHQvCjIsdGhpcy5faGVhbHRoUGlsbEhlaWdodC8yLDApKX0pO3JldHVybiBofSxfaGlnaGxpZ2h0KGIpe1BvbHltZXIuZG9tKHRoaXMuJCQoIiN0ZW5zb3ItZGF0YS10YWJsZSIpKTtjb25zdCBkPVtdO2Zvcihjb25zdCBmIGluIHRoaXMuX3dhdGNoS2V5MlJvdyl7aWYoIXRoaXMuX3dhdGNoS2V5MlJvdy5oYXNPd25Qcm9wZXJ0eShmKSljb250aW51ZTtjb25zdCBoPXRoaXMuX3dhdGNoS2V5MlJvd1tmXTtudWxsIT1oLmdldEF0dHJpYnV0ZSYmKGguZ2V0QXR0cmlidXRlKCJub2RlTmFtZVdpdGhEZXZpY2UiKT09PWI/ZC5wdXNoKGgpOlBvbHltZXIuZG9tKGgpLmNsYXNzTGlzdC5yZW1vdmUoImhpZ2hsaWdodGVkIikpfWlmKG51bGwhPWIpZm9yKGI9MDtiPGQubGVuZ3RoOysrYilQb2x5bWVyLmRvbShkW2JdKS5jbGFzc0xpc3QuYWRkKCJoaWdobGlnaHRlZCIpLGRbYl0uc2Nyb2xsSW50b1ZpZXcoe2Jsb2NrOiJlbmQiLGlubGluZToibmVhcmVzdCIsYmVoYXZpb3VyOiJzbW9vdGgifSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGVuc29yLXdpZGdldC90ZW5zb3Jfd2lkZ2V0X2JpbmFyeS5qcwp2YXIgV2k9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihkLGYpe2I9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGgsayl7aC5fX3Byb3RvX189a318fGZ1bmN0aW9uKGgsayl7Zm9yKHZhciB0IGluIGspay5oYXNPd25Qcm9wZXJ0eSh0KSYmKGhbdF09a1t0XSl9O3JldHVybiBiKGQsZil9cmV0dXJuIGZ1bmN0aW9uKGQsZil7ZnVuY3Rpb24gaCgpe3RoaXMuY29uc3RydWN0b3I9ZH1iKGQsZik7ZC5wcm90b3R5cGU9bnVsbD09PWY/T2JqZWN0LmNyZWF0ZShmKTooaC5wcm90b3R5cGU9Zi5wcm90b3R5cGUsbmV3IGgpfX0oKSxYaT10aGlzJiZ0aGlzLl9fZ2VuZXJhdG9yfHxmdW5jdGlvbihiLGQpe2Z1bmN0aW9uIGYobil7cmV0dXJuIGZ1bmN0aW9uKHEpe3JldHVybiBoKFtuLHFdKX19ZnVuY3Rpb24gaChuKXtpZih0KXRocm93IG5ldyBUeXBlRXJyb3IoIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy4iKTsKZm9yKDtrOyl0cnl7aWYodD0xLGwmJihwPW5bMF0mMj9sWyJyZXR1cm4iXTpuWzBdP2xbInRocm93Il18fCgocD1sWyJyZXR1cm4iXSkmJnAuY2FsbChsKSwwKTpsLm5leHQpJiYhKHA9cC5jYWxsKGwsblsxXSkpLmRvbmUpcmV0dXJuIHA7aWYobD0wLHApbj1bblswXSYyLHAudmFsdWVdO3N3aXRjaChuWzBdKXtjYXNlIDA6Y2FzZSAxOnA9bjticmVhaztjYXNlIDQ6cmV0dXJuIGsubGFiZWwrKyx7dmFsdWU6blsxXSxkb25lOiExfTtjYXNlIDU6ay5sYWJlbCsrO2w9blsxXTtuPVswXTtjb250aW51ZTtjYXNlIDc6bj1rLm9wcy5wb3AoKTtrLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKHA9ay50cnlzLHA9MDxwLmxlbmd0aCYmcFtwLmxlbmd0aC0xXSkmJig2PT09blswXXx8Mj09PW5bMF0pKXtrPTA7Y29udGludWV9aWYoMz09PW5bMF0mJighcHx8blsxXT5wWzBdJiZuWzFdPHBbM10pKWsubGFiZWw9blsxXTtlbHNlIGlmKDY9PT1uWzBdJiZrLmxhYmVsPHBbMV0pay5sYWJlbD0KcFsxXSxwPW47ZWxzZSBpZihwJiZrLmxhYmVsPHBbMl0pay5sYWJlbD1wWzJdLGsub3BzLnB1c2gobik7ZWxzZXtwWzJdJiZrLm9wcy5wb3AoKTtrLnRyeXMucG9wKCk7Y29udGludWV9fW49ZC5jYWxsKGIsayl9Y2F0Y2gocSl7bj1bNixxXSxsPTB9ZmluYWxseXt0PXA9MH1pZihuWzBdJjUpdGhyb3cgblsxXTtyZXR1cm57dmFsdWU6blswXT9uWzFdOnZvaWQgMCxkb25lOiEwfX12YXIgaz17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYocFswXSYxKXRocm93IHBbMV07cmV0dXJuIHBbMV19LHRyeXM6W10sb3BzOltdfSx0LGwscCxtO3JldHVybiBtPXtuZXh0OmYoMCksInRocm93IjpmKDEpLCJyZXR1cm4iOmYoMil9LCJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiYobVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxtfSxZaT10aGlzJiZ0aGlzLl9fcmVhZHx8ZnVuY3Rpb24oYixkKXt2YXIgZj0iZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmYltTeW1ib2wuaXRlcmF0b3JdOwppZighZilyZXR1cm4gYjtiPWYuY2FsbChiKTt2YXIgaCxrPVtdO3RyeXtmb3IoOyh2b2lkIDA9PT1kfHwwPGQtLSkmJiEoaD1iLm5leHQoKSkuZG9uZTspay5wdXNoKGgudmFsdWUpfWNhdGNoKGwpe3ZhciB0PXtlcnJvcjpsfX1maW5hbGx5e3RyeXtoJiYhaC5kb25lJiYoZj1iWyJyZXR1cm4iXSkmJmYuY2FsbChiKX1maW5hbGx5e2lmKHQpdGhyb3cgdC5lcnJvcjt9fXJldHVybiBrfTsKKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihILEssTSxMKXtyZXR1cm4gbmV3IChNfHwoTT1Qcm9taXNlKSkoZnVuY3Rpb24oUSxUKXtmdW5jdGlvbiBYKFope3RyeXtsYShMLm5leHQoWikpfWNhdGNoKGJhKXtUKGJhKX19ZnVuY3Rpb24gYWEoWil7dHJ5e2xhKExbInRocm93Il0oWikpfWNhdGNoKGJhKXtUKGJhKX19ZnVuY3Rpb24gbGEoWil7Wi5kb25lP1EoWi52YWx1ZSk6KG5ldyBNKGZ1bmN0aW9uKGJhKXtiYShaLnZhbHVlKX0pKS50aGVuKFgsYWEpfWxhKChMPUwuYXBwbHkoSCxLfHxbXSkpLm5leHQoKSl9KX1mdW5jdGlvbiBkKEgpe3JldHVybiBudWxsIT09SC5tYXRjaCgvXmludFswLTldKyQvKXx8bnVsbCE9PUgubWF0Y2goL151aW50WzAtOV0rJC8pfWZ1bmN0aW9uIGYoSCl7cmV0dXJuIG51bGwhPT1ILm1hdGNoKC9eZmxvYXRbMC05XSskLyl8fG51bGwhPT1ILm1hdGNoKC9eYmZsb2F0WzAtOV0rJC8pfWZ1bmN0aW9uIGgoSCl7cmV0dXJuImJvb2wiPT09SC50b0xvd2VyQ2FzZSgpfHwKImJvb2xlYW4iPT09SC50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGsoSCl7cmV0dXJuInN0ciI9PT1ILnRvTG93ZXJDYXNlKCl8fCJzdHJpbmciPT09SC50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIHQoSCl7dmFyIEs9MTtILmZvckVhY2goZnVuY3Rpb24oTSl7Syo9TX0pO3JldHVybiBLfWZ1bmN0aW9uIGwoSCl7cmV0dXJuIDA9PT1ILmxlbmd0aD8ic2NhbGFyIjoiWyIrSCsiXSJ9ZnVuY3Rpb24gcChIKXt2YXIgSz17c2xpY2luZ0RpbXNBbmRJbmRpY2VzOltdLHZpZXdpbmdEaW1zOltdLHZlcnRpY2FsUmFuZ2U6bnVsbCxob3Jpem9udGFsUmFuZ2U6bnVsbH0sTT1ILmxlbmd0aDtpZigxPT09TSlLLnZpZXdpbmdEaW1zPVswXTtlbHNlIGlmKDE8TSl7aWYoMjxNKWZvcih2YXIgTD0wO0w8TS0yOysrTClLLnNsaWNpbmdEaW1zQW5kSW5kaWNlcy5wdXNoKHtkaW06TCxpbmRleDowPT09SFtMXT9udWxsOjB9KTtmb3IoTD1ILmxlbmd0aC0yO0w8SC5sZW5ndGg7KytMKUsudmlld2luZ0RpbXMucHVzaChMKX1yZXR1cm4gS30KZnVuY3Rpb24gbShILEspe2lmKEgudmlld2luZ0RpbXNbMF0hPT1LLnZpZXdpbmdEaW1zWzBdfHxILnZpZXdpbmdEaW1zWzFdIT09Sy52aWV3aW5nRGltc1sxXSlyZXR1cm4hMTtLPUguc2xpY2luZ0RpbXNBbmRJbmRpY2VzLm1hcChmdW5jdGlvbihNKXtyZXR1cm4gTS5kaW19KTtLLnNvcnQoKTtIPUguc2xpY2luZ0RpbXNBbmRJbmRpY2VzLm1hcChmdW5jdGlvbihNKXtyZXR1cm4gTS5kaW19KTtILnNvcnQoKTtyZXR1cm4gSlNPTi5zdHJpbmdpZnkoSyk9PT1KU09OLnN0cmluZ2lmeShIKX1mdW5jdGlvbiBuKEgpe3JldHVybiAyMD49SC5sZW5ndGg/SDpILnNsaWNlKDAsMTApKyIuLi4iK0guc2xpY2UoSC5sZW5ndGgtNyxILmxlbmd0aCl9ZnVuY3Rpb24gcShILEssTSxMKXt2b2lkIDA9PT1NJiYoTT0yKTtpZihpc05hTihIKSlyZXR1cm4iTmFOIjtpZigtSW5maW5pdHk9PT1IKXJldHVybiItXHUyMjFlIjtpZihJbmZpbml0eT09PUgpcmV0dXJuIitcdTIyMWUiO251bGw9PUwmJihMPQpNYXRoLmFicyhIKSxMPTFFMz5MJiYuMDE8PUx8fDA9PT1MPyJmaXhlZCI6ImV4cG9uZW50aWFsIik7cmV0dXJuIG51bGw9PUx8fCJmaXhlZCI9PT1MP0s/IiIrSDpILnRvRml4ZWQoTSk6SC50b0V4cG9uZW50aWFsKE0pfWZ1bmN0aW9uIHUoSCxLKXt2b2lkIDA9PT1LJiYoSz0hMCk7cmV0dXJuIEg/Sz8iVCI6IlRydWUiOks/IkYiOiJGYWxzZSJ9ZnVuY3Rpb24geChILEspe3ZvaWQgMD09PUsmJihLPTQpO3JldHVybiBudWxsPT09S3x8SC5sZW5ndGg8PUs/SDpILnNsaWNlKDAsSy0xKSsiXHUyMDI2In12YXIgQT1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoSyl7dGhpcy5pc1Nob3duPSExO3RoaXMuYmx1ckhpZGVGdW5jdGlvbj1udWxsO3RoaXMuZHJvcGRvd249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5kcm9wZG93bi5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93biIpO3RoaXMuZHJvcGRvd24uc3R5bGUucG9zaXRpb249ImZpeGVkIjt0aGlzLmRyb3Bkb3duLnN0eWxlLmRpc3BsYXk9CiJub25lIjtLLmFwcGVuZENoaWxkKHRoaXMuZHJvcGRvd24pfUgucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oSyxNLEwpe3ZhciBRPXRoaXM7TC5mb3JFYWNoKGZ1bmN0aW9uKFgpe3ZhciBhYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthYS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93bi1tZW51LWl0ZW0iKTthYS50ZXh0Q29udGVudD1YLmNhcHRpb247US5kcm9wZG93bi5hcHBlbmRDaGlsZChhYSk7WC5kaXNhYmxlZD9hYS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93bi1tZW51LWl0ZW0tZGlzYWJsZWQiKTooYWEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKGxhKXtsYS5zdG9wUHJvcGFnYXRpb24oKTtRLmRyb3Bkb3duLmNsaWNrKCk7aWYobnVsbCE9PVgub25DbGljaylYLm9uQ2xpY2sobGEpO1EuaGlkZSgpfSksYWEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24obGEpe2lmKG51bGwhPT0KWC5vbkhvdmVyKVgub25Ib3ZlcihsYSk7YWEuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kaW0tZHJvcGRvd24tbWVudS1pdGVtLWFjdGl2ZSIpfSksYWEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXthYS5jbGFzc0xpc3QucmVtb3ZlKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93bi1tZW51LWl0ZW0tYWN0aXZlIik7aWYobnVsbCE9PVgub25Ib3Zlcil7Zm9yKHZhciBsYT1bXSxaPTA7WjxhYS5jaGlsZHJlbi5sZW5ndGg7KytaKXt2YXIgYmE9YWEuY2hpbGRyZW5bWl07YmEuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93biIpJiZsYS5wdXNoKGJhKX1sYS5mb3JFYWNoKGZ1bmN0aW9uKGVhKXtyZXR1cm4gYWEucmVtb3ZlQ2hpbGQoZWEpfSl9fSkpfSk7dGhpcy5kcm9wZG93bi5zdHlsZS5kaXNwbGF5PSJibG9jayI7dGhpcy5kcm9wZG93bi5zdHlsZS50b3A9SysicHgiO3RoaXMuZHJvcGRvd24uc3R5bGUubGVmdD0KTSsicHgiO0w9dGhpcy5kcm9wZG93bi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt2YXIgVD1MLmxlZnQtTTt0aGlzLmRyb3Bkb3duLnN0eWxlLnRvcD0oSy0oTC50b3AtSykpLnRvRml4ZWQoMSkrInB4Ijt0aGlzLmRyb3Bkb3duLnN0eWxlLmxlZnQ9KE0tVCkudG9GaXhlZCgxKSsicHgiO3RoaXMuaXNTaG93bj0hMDt0aGlzLmJsdXJIaWRlRnVuY3Rpb249ZnVuY3Rpb24oKXtRLmhpZGUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLFEuYmx1ckhpZGVGdW5jdGlvbil9LDUwKX07SC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2Zvcih0aGlzLmRyb3Bkb3duLnN0eWxlLmRpc3BsYXk9Im5vbmUiO3RoaXMuZHJvcGRvd24uZmlyc3RDaGlsZDspdGhpcy5kcm9wZG93bi5yZW1vdmVDaGlsZCh0aGlzLmRyb3Bkb3duLmZpcnN0Q2hpbGQpO3RoaXMuaXNTaG93bj0hMTtudWxsIT10aGlzLmJsdXJIaWRlRnVuY3Rpb24mJndpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsCnRoaXMuYmx1ckhpZGVGdW5jdGlvbil9O0gucHJvdG90eXBlLnNob3duPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNTaG93bn07cmV0dXJuIEh9KCkseT1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoSyxNKXt2YXIgTD10aGlzO3RoaXMuY29uZmlnPUs7dGhpcy5wYXJlbnRFbGVtZW50PU07dGhpcy5iYXNlRmxhdE1lbnU9bmV3IEEodGhpcy5wYXJlbnRFbGVtZW50KTt0aGlzLmN1cnJlbnRDaG9pY2VTZWxlY3Rpb25zPXt9O3RoaXMuY29uZmlnLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oUSxUKXtudWxsIT1RLm9wdGlvbnMmJihMLmN1cnJlbnRDaG9pY2VTZWxlY3Rpb25zW1RdPVEuZGVmYXVsdFNlbGVjdGlvbil9KX1ILnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKEssTSl7dmFyIEw9dGhpcyxRPVtdO3RoaXMuY29uZmlnLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oVCxYKXt2YXIgYWE9e2NhcHRpb246VC5jYXB0aW9uLG9uQ2xpY2s6bnVsbCxvbkhvdmVyOm51bGx9O2lmKG51bGwhPVQub3B0aW9ucyl7dmFyIGxhPQpMLmN1cnJlbnRDaG9pY2VTZWxlY3Rpb25zW1hdO2FhLm9uSG92ZXI9ZnVuY3Rpb24oWil7dmFyIGJhPVoudGFyZ2V0LGVhPVtdO1Qub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGNhLGthKXtlYS5wdXNoKHtjYXB0aW9uOmthPT09bGE/Y2ErIiAoXHUyNzEzKSI6Y2Esb25DbGljazpmdW5jdGlvbigpe2xhIT09a2EmJihMLmN1cnJlbnRDaG9pY2VTZWxlY3Rpb25zW1hdPWthLFQuY2FsbGJhY2soa2EpKX0sb25Ib3ZlcjpudWxsfSl9KTtaPW5ldyBBKGJhKTtiYT1iYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtaLnNob3coYmEudG9wLGJhLnJpZ2h0LGVhKX19ZWxzZSBhYS5vbkNsaWNrPVQuY2FsbGJhY2s7bnVsbD09VC5pc0VuYWJsZWR8fFQuaXNFbmFibGVkKCl8fChhYS5kaXNhYmxlZD0hMCk7US5wdXNoKGFhKX0pO3RoaXMuYmFzZUZsYXRNZW51LnNob3coSyxNLFEpfTtILnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy5iYXNlRmxhdE1lbnUuaGlkZSgpfTtILnByb3RvdHlwZS5zaG93bj0KZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5iYXNlRmxhdE1lbnUuc2hvd24oKX07cmV0dXJuIEh9KCksdzsoZnVuY3Rpb24oSCl7SFtILlVQPTFdPSJVUCI7SFtILkRPV049Ml09IkRPV04iO0hbSC5MRUZUPTNdPSJMRUZUIjtIW0guUklHSFQ9NF09IlJJR0hUIn0pKHd8fCh3PXt9KSk7dmFyIEM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBIKEssTSxMLFEsVCxYKXt0aGlzLnNoYXBlPUs7dGhpcy5zbGljZURpbXM9W107dGhpcy5zbGljZUluZGljZXM9W107aWYoMD09PXQodGhpcy5zaGFwZSkpdGhyb3cgRXJyb3IoIlRlbnNvckVsZW1lbnRTZWxlY3Rpb24gZG9lc24ndCBzdXBwb3J0IHRlbnNvciB3aXRoIHplcm8gZWxlbWVudHMuIik7Zm9yKEs9MDtLPE0uc2xpY2luZ0RpbXNBbmRJbmRpY2VzLmxlbmd0aDsrK0spe3RoaXMuc2xpY2VEaW1zLnB1c2goTS5zbGljaW5nRGltc0FuZEluZGljZXNbS10uZGltKTt2YXIgYWE9TS5zbGljaW5nRGltc0FuZEluZGljZXNbS10uaW5kZXg7aWYobnVsbD09PQphYSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBUZW5zb3JFbGVtZW50U2VsZWN0aW9uIGR1ZSB0byB1bmRldGVybWluZWQgc2xpY2luZyBpbmRleCBhdCBkaW1lbnNpb24gIitLKTt0aGlzLnNsaWNlSW5kaWNlcy5wdXNoKGFhKX10aGlzLnJhbms9dGhpcy5zaGFwZS5sZW5ndGg7aWYoMDx0aGlzLnJhbmsmJnRoaXMuc2xpY2VEaW1zLmxlbmd0aD49dGhpcy5yYW5rKXRocm93IEVycm9yKCJFeHBlY3RlZCBzbGljZURpbXMgdG8gaGF2ZSBhIGxlbmd0aCBsZXNzIHRoYW4gcmFuayAiK3RoaXMucmFuaysiLCBidXQgZ290IGxlbmd0aCAiK3RoaXMuc2xpY2VEaW1zLmxlbmd0aCk7dGhpcy52aWV3RGltcz1bXTtmb3IoSz0wO0s8dGhpcy5yYW5rOysrSyktMT09PXRoaXMuc2xpY2VEaW1zLmluZGV4T2YoSykmJnRoaXMudmlld0RpbXMucHVzaChLKTtpZigyPHRoaXMudmlld0RpbXMubGVuZ3RoKXRocm93IEVycm9yKCJPbmx5IHNlbGVjdGlvbnMgaW4gMUQgYW5kIDJEIGFyZSBzdXBwb3J0ZWQuIik7CnRoaXMucm93U3RhcnQ9bnVsbD09TD8wOkw7dGhpcy5jb2xTdGFydD1udWxsPT1RPzA6UTt0aGlzLnJvd0NvdW50PW51bGw9PVQ/MTpUO3RoaXMuY29sQ291bnQ9bnVsbD09WD8xOlh9SC5wcm90b3R5cGUuZ2V0RWxlbWVudFN0YXR1cz1mdW5jdGlvbihLKXtpZihLLmxlbmd0aCE9PXRoaXMucmFuayl0aHJvdyBFcnJvcigiRXhwZWN0ZWQgaW5kaWNlcyB0byBoYXZlIGEgcmFuayBvZiAiK3RoaXMucmFuaysiLCBidXQgZ290ICIrKEsubGVuZ3RoKyIgKFsiK0srIl0pIikpO2Zvcih2YXIgTT0wO008Sy5sZW5ndGg7KytNKWlmKC0xIT09dGhpcy5zbGljZURpbXMuaW5kZXhPZihNKSYmS1tNXSE9PXRoaXMuc2xpY2VJbmRpY2VzW3RoaXMuc2xpY2VEaW1zLmluZGV4T2YoTSldKXJldHVybiBudWxsO009bnVsbDt2YXIgTD10aGlzLnJvd1N0YXJ0K3RoaXMucm93Q291bnQsUT10aGlzLmNvbFN0YXJ0K3RoaXMuY29sQ291bnQ7aWYoMD09PXRoaXMudmlld0RpbXMubGVuZ3RoKTA9PT1LLmxlbmd0aCYmCihNPXt0b3BFZGdlOiEwLGJvdHRvbUVkZ2U6ITAsbGVmdEVkZ2U6ITAscmlnaHRFZGdlOiEwfSk7ZWxzZSBpZigxPT09dGhpcy52aWV3RGltcy5sZW5ndGgpe3ZhciBUPXRoaXMudmlld0RpbXNbMF07S1tUXT49dGhpcy5yb3dTdGFydCYmS1tUXTxMJiYoTT17dG9wRWRnZTpLW1RdPT09dGhpcy5yb3dTdGFydCxib3R0b21FZGdlOktbVF09PT1MLTEsbGVmdEVkZ2U6ITAscmlnaHRFZGdlOiEwfSl9ZWxzZSBpZigyPT09dGhpcy52aWV3RGltcy5sZW5ndGgpe1Q9dGhpcy52aWV3RGltc1swXTt2YXIgWD10aGlzLnZpZXdEaW1zWzFdO0tbVF0+PXRoaXMucm93U3RhcnQmJktbVF08TCYmS1tYXT49dGhpcy5jb2xTdGFydCYmS1tYXTxRJiYoTT17dG9wRWRnZTpLW1RdPT09dGhpcy5yb3dTdGFydCxib3R0b21FZGdlOktbVF09PT1MLTEsbGVmdEVkZ2U6S1tYXT09PXRoaXMuY29sU3RhcnQscmlnaHRFZGdlOktbWF09PT1RLTF9KX1lbHNlIHRocm93IEVycm9yKCJVbmV4cGVjdGVkIGxlbmd0aCBvZiB2aWV3RGltczogIisKdGhpcy52aWV3RGltcyk7cmV0dXJuIE19O0gucHJvdG90eXBlLm1vdmU9ZnVuY3Rpb24oSyxNKXt2YXIgTD1udWxsO2lmKDA9PT10aGlzLnJhbmt8fDE9PT10aGlzLnJhbmsmJihLPT09dy5MRUZUfHxLPT09dy5SSUdIVCkpcmV0dXJuIG51bGw7aWYobnVsbD09PU0udmVydGljYWxSYW5nZXx8bnVsbD09PU0udmVydGljYWxSYW5nZVsxXSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIG1vdmUgZHVlIHRvIHVuZGV0ZXJtaW5lZCB2ZXJ0aWNhbCByYW5nZS4iKTtLPT09dy5VUD8wPHRoaXMucm93U3RhcnQmJih0aGlzLnJvd1N0YXJ0LS0sbnVsbCE9TS52ZXJ0aWNhbFJhbmdlJiZ0aGlzLnJvd1N0YXJ0PE0udmVydGljYWxSYW5nZVswXSYmKEw9dy5VUCkpOks9PT13LkRPV04/bnVsbCE9TS52aWV3aW5nRGltcyYmbnVsbCE9TS52aWV3aW5nRGltc1swXSYmdGhpcy5yb3dTdGFydDx0aGlzLnNoYXBlW00udmlld2luZ0RpbXNbMF1dLTEmJih0aGlzLnJvd1N0YXJ0KyssbnVsbCE9TS52ZXJ0aWNhbFJhbmdlJiYKdGhpcy5yb3dTdGFydD49TS52ZXJ0aWNhbFJhbmdlWzFdJiYoTD13LkRPV04pKTpLPT09dy5MRUZUPzA8dGhpcy5jb2xTdGFydCYmKHRoaXMuY29sU3RhcnQtLSxudWxsIT1NLmhvcml6b250YWxSYW5nZSYmdGhpcy5jb2xTdGFydDxNLmhvcml6b250YWxSYW5nZVswXSYmKEw9dy5MRUZUKSk6Sz09PXcuUklHSFQmJm51bGwhPU0udmlld2luZ0RpbXMmJm51bGwhPU0udmlld2luZ0RpbXNbMV0mJnRoaXMuY29sU3RhcnQ8dGhpcy5zaGFwZVtNLnZpZXdpbmdEaW1zWzFdXS0xJiYodGhpcy5jb2xTdGFydCsrLG51bGwhPU0uaG9yaXpvbnRhbFJhbmdlJiZ0aGlzLmNvbFN0YXJ0Pj1NLmhvcml6b250YWxSYW5nZVsxXSYmKEw9dy5SSUdIVCkpO3RoaXMuY29sQ291bnQ9dGhpcy5yb3dDb3VudD0xO3JldHVybiBMfTtILnByb3RvdHlwZS5nZXRSb3dTdGFydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvd1N0YXJ0fTtILnByb3RvdHlwZS5nZXRSb3dDb3VudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJvd0NvdW50fTsKSC5wcm90b3R5cGUuZ2V0Q29sU3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2xTdGFydH07SC5wcm90b3R5cGUuZ2V0Q29sQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2xDb3VudH07cmV0dXJuIEh9KCksRj1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoSyxNLEwpe3ZvaWQgMD09PUwmJihMPWZ1bmN0aW9uKCl7fSk7dGhpcy5yb290RGl2PUs7dGhpcy5zaGFwZT1NO3RoaXMub25TbGljaW5nU3BlY0NoYW5nZT1MO3RoaXMuZGltQ29udHJvbHM9W107dGhpcy5kaW1JbnB1dHM9W107dGhpcy5jb21tYXM9W107dGhpcy5kcm9wZG93bnM9W107dGhpcy5icmFja2V0RGl2cz1bbnVsbCxudWxsXTt0aGlzLmRpbUNvbnRyb2xzTGlzdGVuZXJBdHRhY2hlZD1bXTt0aGlzLnJhbms9dGhpcy5zaGFwZS5sZW5ndGg7aWYoMz50aGlzLnJhbmspdGhyb3cgRXJyb3IoIkRpbWVuc2lvbiBjb250cm9sIGlzIG5vdCBhcHBsaWNhYmxlIHRvIHRlbnNvciBzaGFwZXMgbGVzcyB0aGFuIDNEOiByZWNlaXZlZCAiKwoodGhpcy5yYW5rKyJEIHRlbnNvciBzaGFwZTogIikrKEpTT04uc3RyaW5naWZ5KHRoaXMuc2hhcGUpKyIuIikpO3RoaXMuY3JlYXRlQ29tcG9uZW50cygpO3RoaXMuc2xpY2luZ1NwZWM9cChNKX1ILnByb3RvdHlwZS5jcmVhdGVDb21wb25lbnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBLPXRoaXM7dGhpcy5yb290RGl2LmZpcnN0Q2hpbGQ7KXRoaXMucm9vdERpdi5yZW1vdmVDaGlsZCh0aGlzLnJvb3REaXYuZmlyc3RDaGlsZCk7dGhpcy5kaW1Db250cm9scz1bXTt0aGlzLmRpbUlucHV0cz1bXTt0aGlzLmNvbW1hcz1bXTt0aGlzLmRyb3Bkb3ducz1bXTt0aGlzLmRpbUNvbnRyb2xzTGlzdGVuZXJBdHRhY2hlZD1bXTt0aGlzLmJyYWNrZXREaXZzWzBdPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuYnJhY2tldERpdnNbMF0udGV4dENvbnRlbnQ9IlNsaWNpbmc6IFsiO3RoaXMuYnJhY2tldERpdnNbMF0uY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kaW0tYnJhY2tldHMiKTsKdGhpcy5yb290RGl2LmFwcGVuZENoaWxkKHRoaXMuYnJhY2tldERpdnNbMF0pO2Zvcih2YXIgTT0wO008dGhpcy5yYW5rOysrTSl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbSIpO0wudGl0bGU9IkRpbWVuc2lvbiAiK00rIjogc2l6ZVx4M2QiK3RoaXMuc2hhcGVbTV07dGhpcy5yb290RGl2LmFwcGVuZENoaWxkKEwpO3RoaXMuZGltQ29udHJvbHMucHVzaChMKTt0aGlzLmRpbUNvbnRyb2xzTGlzdGVuZXJBdHRhY2hlZC5wdXNoKCExKTtMPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7TC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbSIpO0wuc3R5bGUuZGlzcGxheT0ibm9uZSI7dGhpcy5yb290RGl2LmFwcGVuZENoaWxkKEwpO3RoaXMuZGltSW5wdXRzLnB1c2goTCk7TTx0aGlzLnJhbmstMSYmKEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksTC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1jb21tYSIpLApMLnRleHRDb250ZW50PSIsIix0aGlzLnJvb3REaXYuYXBwZW5kQ2hpbGQoTCksdGhpcy5jb21tYXMucHVzaChMKSk7TD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtMLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duIik7TC5zdHlsZS5kaXNwbGF5PSJub25lIjt0aGlzLnJvb3REaXYuYXBwZW5kQ2hpbGQoTCk7dGhpcy5kcm9wZG93bnMucHVzaChMKX10aGlzLmJyYWNrZXREaXZzWzFdPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuYnJhY2tldERpdnNbMV0udGV4dENvbnRlbnQ9Il0iO3RoaXMuYnJhY2tldERpdnNbMV0uY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kaW0tYnJhY2tldHMiKTt0aGlzLnJvb3REaXYuYXBwZW5kQ2hpbGQodGhpcy5icmFja2V0RGl2c1sxXSk7dGhpcy5yb290RGl2LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7Sy5jbGVhckFsbERyb3Bkb3ducygpfSl9O0gucHJvdG90eXBlLnJlbmRlcj0KZnVuY3Rpb24oSyl7ZnVuY3Rpb24gTShhYSl7dmFyIGxhPVguZGltQ29udHJvbHNbYWFdLFo9WC5kaW1JbnB1dHNbYWFdLGJhPVguZHJvcGRvd25zW2FhXTtpZigibm9uZSIhPT1aLnN0eWxlLmRpc3BsYXkpcmV0dXJuImNvbnRpbnVlIjt2YXIgZWE9WC5zaGFwZVthYV07aWYoLTEhPT1RLmluZGV4T2YoYWEpKXt2YXIgY2E9VFtRLmluZGV4T2YoYWEpXTtsYS50ZXh0Q29udGVudD1TdHJpbmcoY2EpO1ouY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kaW0iKTtaLnR5cGU9Im51bWJlciI7Wi5taW49IjAiO1oubWF4PVN0cmluZyhlYS0xKTtaLnZhbHVlPVN0cmluZyhjYSk7WC5kaW1Db250cm9sc0xpc3RlbmVyQXR0YWNoZWRbYWFdfHwobGEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7TC5jbGVhckFsbERyb3Bkb3ducygpO2xhLnN0eWxlLmRpc3BsYXk9Im5vbmUiO1ouc3R5bGUuZGlzcGxheT0iaW5saW5lLWJsb2NrIn0pLFouYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwKZnVuY3Rpb24oKXtpZihudWxsPT09TC5zbGljaW5nU3BlYyl0aHJvdyBFcnJvcigiU2xpY2luZyBjb250cm9sIGNoYW5nZSBjYWxsYmFjayBmYWlsZWQgZHVlIHRvIG1pc3Npbmcgc3BlYy4iKTt2YXIga2E9cGFyc2VJbnQoWi52YWx1ZSwxMCk7IWlzRmluaXRlKGthKXx8MD5rYXx8a2E+PWVhfHxNYXRoLmZsb29yKGVhKSE9ZWE/Wi52YWx1ZT1TdHJpbmcoTC5zbGljaW5nU3BlYy5zbGljaW5nRGltc0FuZEluZGljZXNbUS5pbmRleE9mKGFhKV0uaW5kZXgpOihMLnNsaWNpbmdTcGVjLnNsaWNpbmdEaW1zQW5kSW5kaWNlc1tRLmluZGV4T2YoYWEpXS5pbmRleD1rYSxsYS50ZXh0Q29udGVudD1TdHJpbmcoa2EpLEwub25TbGljaW5nU3BlY0NoYW5nZShMLnNsaWNpbmdTcGVjKSl9KSxaLmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLGZ1bmN0aW9uKCl7Wi5zdHlsZS5kaXNwbGF5PSJub25lIjtsYS5zdHlsZS5kaXNwbGF5PSJpbmxpbmUtYmxvY2sifSksWC5kaW1Db250cm9sc0xpc3RlbmVyQXR0YWNoZWRbYWFdPQohMCl9ZWxzZXtpZihYLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzBdPT09YWEpe2lmKG51bGw9PT1YLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2UpdGhyb3cgRXJyb3IoIk1pc3NpbmcgdmVydGljYWwgcmFuZ2UuIik7bGEudGV4dENvbnRlbnQ9Ilx1MjE5NSAiK1guc2xpY2luZ1NwZWMudmVydGljYWxSYW5nZVswXSsiOiIrWC5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzFdfWVsc2V7aWYobnVsbD09PVguc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlKXRocm93IEVycm9yKCJNaXNzaW5nIGhvcml6b250YWwgcmFuZ2UuIik7bGEudGV4dENvbnRlbnQ9Ilx1MjE5NCAiK1guc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlWzBdKyI6IitYLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVsxXX1sYS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbSIpO1guZGltQ29udHJvbHNMaXN0ZW5lckF0dGFjaGVkW2FhXXx8KGxhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe3ZhciBrYT0KbGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7TC5yZW5kZXJEcm9wZG93bk1lbnVJdGVtcyhiYSxrYS5ib3R0b20sa2EubGVmdCxhYSl9KSxYLmRpbUNvbnRyb2xzTGlzdGVuZXJBdHRhY2hlZFthYV09ITApfX12YXIgTD10aGlzO251bGwhPUsmJih0aGlzLnNsaWNpbmdTcGVjPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoSykpKTtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYyl0aHJvdyBFcnJvcigiU2xpY2luZyBjb250cm9sIHJlbmRlcmluZyBmYWlsZWQgZHVlIHRvIG1pc3Npbmcgc2xpY2luZyBzcGVjLiIpO3ZhciBRPXRoaXMuc2xpY2luZ1NwZWMuc2xpY2luZ0RpbXNBbmRJbmRpY2VzLm1hcChmdW5jdGlvbihhYSl7cmV0dXJuIGFhLmRpbX0pLFQ9dGhpcy5zbGljaW5nU3BlYy5zbGljaW5nRGltc0FuZEluZGljZXMubWFwKGZ1bmN0aW9uKGFhKXtyZXR1cm4gYWEuaW5kZXh9KSxYPXRoaXM7Zm9yKEs9MDtLPHRoaXMucmFuazsrK0spTShLKX07SC5wcm90b3R5cGUucmVuZGVyRHJvcGRvd25NZW51SXRlbXM9CmZ1bmN0aW9uKEssTSxMLFEpe2Z1bmN0aW9uIFQoZWEpe2lmKC0xPT09YWEuaW5kZXhPZihlYSl8fFE9PT1sYS5zbGljaW5nU3BlYy52aWV3aW5nRGltc1sxXSYmZWE8PWxhLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzBdfHxRPT1sYS5zbGljaW5nU3BlYy52aWV3aW5nRGltc1swXSYmZWE+PWxhLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzFdKXJldHVybiJjb250aW51ZSI7dmFyIGNhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2NhLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duLW1lbnUtaXRlbSIpO2NhLnRleHRDb250ZW50PSJTd2FwIHdpdGggZGltZW5zaW9uICIrZWE7Sy5hcHBlbmRDaGlsZChjYSk7Y2EuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24oKXtjYS5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1kcm9wZG93bi1tZW51LWl0ZW0tYWN0aXZlIik7WC5kaW1Db250cm9sc1tlYV0uY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kaW0taGlnaGxpZ2h0ZWQiKX0pOwpjYS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe2NhLmNsYXNzTGlzdC5yZW1vdmUoInRlbnNvci13aWRnZXQtZGltLWRyb3Bkb3duLW1lbnUtaXRlbS1hY3RpdmUiKTtYLmRpbUNvbnRyb2xzW2VhXS5jbGFzc0xpc3QucmVtb3ZlKCJ0ZW5zb3Itd2lkZ2V0LWRpbS1oaWdobGlnaHRlZCIpfSk7dmFyIGthPWxhLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzBdPT09UTtjYS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpZihudWxsPT09WC5zbGljaW5nU3BlYyl0aHJvdyBFcnJvcigiRGltZW5zaW9uIHN3YXBwaW5nIGZhaWxlZCBkdWUgdG8gbWlzc2luZyBzbGljaW5nIHNwZWMiKTt2YXIgWT1hYS5pbmRleE9mKGVhKTtYLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zW2thPzA6MV09ZWE7WC5zbGljaW5nU3BlYy5zbGljaW5nRGltc0FuZEluZGljZXNbWV09e2RpbTpRLGluZGV4OjB9O1guc2xpY2luZ1NwZWMudmVydGljYWxSYW5nZT1udWxsO1guc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlPQpudWxsO2lmKFgub25TbGljaW5nU3BlY0NoYW5nZSlYLm9uU2xpY2luZ1NwZWNDaGFuZ2UoWC5zbGljaW5nU3BlYyl9KX12YXIgWD10aGlzO2lmKG51bGw9PT10aGlzLnNsaWNpbmdTcGVjKXRocm93IEVycm9yKCJTbGljaW5nIGNvbnRyb2wgY2Fubm90IHJlbmRlciBkcm9wZG93biBtZW51IGl0ZW1zIGR1ZSB0byBtaXNzaW5nIHNsaWNpbmcgc3BlYy4iKTt0aGlzLmNsZWFyQWxsRHJvcGRvd25zKCk7Zm9yKHZhciBhYT10aGlzLnNsaWNpbmdTcGVjLnNsaWNpbmdEaW1zQW5kSW5kaWNlcy5tYXAoZnVuY3Rpb24oZWEpe3JldHVybiBlYS5kaW19KSxsYT10aGlzLFo9MDtaPHRoaXMucmFuazsrK1opVChaKTtLLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7Sy5zdHlsZS5kaXNwbGF5PSJub25lIn0pO2lmKEsuZmlyc3RDaGlsZCl7Sy5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiO0suc3R5bGUudG9wPU0rInB4IjtLLnN0eWxlLmxlZnQ9TCsicHgiO0suc3R5bGUuZGlzcGxheT0KImJsb2NrIjtaPUsuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIGJhPVoubGVmdC1MO0suc3R5bGUudG9wPShNLShaLnRvcC1NKSkudG9GaXhlZCgxKSsicHgiO0suc3R5bGUubGVmdD0oTC1iYSkudG9GaXhlZCgxKSsicHgifX07SC5wcm90b3R5cGUuc2V0U2xpY2luZ1NwZWM9ZnVuY3Rpb24oSyl7dGhpcy5zbGljaW5nU3BlYz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KEspKTtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYyl0aHJvdyBFcnJvcigiQ2Fubm90IHNldCBzbGljaW5nIHNwZWMgdG8gbnVsbC4iKTt0aGlzLnJlbmRlcih0aGlzLnNsaWNpbmdTcGVjKX07SC5wcm90b3R5cGUuY2xlYXJBbGxEcm9wZG93bnM9ZnVuY3Rpb24oKXt0aGlzLmRyb3Bkb3ducy5mb3JFYWNoKGZ1bmN0aW9uKEspe2lmKG51bGwhPUspe2Zvcig7Sy5maXJzdENoaWxkOylLLnJlbW92ZUNoaWxkKEsuZmlyc3RDaGlsZCk7Sy5zdHlsZS5kaXNwbGF5PSJub25lIn19KX07cmV0dXJuIEh9KCksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIEgoSyl7dGhpcy5jb25maWc9Cks7aWYoIWlzRmluaXRlKEsubWluKSl0aHJvdyBFcnJvcigibWluIHZhbHVlICgiK0subWluKyIpIGlzIG5vdCBmaW5pdGUiKTtpZighaXNGaW5pdGUoSy5tYXgpKXRocm93IEVycm9yKCJtYXggdmFsdWUgKCIrSy5tYXgrIikgaXMgbm90IGZpbml0ZSIpO2lmKEsubWF4PEsubWluKXRocm93IEVycm9yKCJtYXggKCIrSy5tYXgrIikgaXMgXHgzYyBtaW4gKCIrSy5taW4rIikiKTt9SC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKEssTSl7aWYodGhpcy5jb25maWcubWluIT09dGhpcy5jb25maWcubWF4KXt2YXIgTD1LLmdldENvbnRleHQoIjJkIik7aWYobnVsbCE9TCl7Zm9yKHZhciBRPUsud2lkdGgvMTAwLFQ9Sy5oZWlnaHQsWD0uNipULGFhPTA7MTAwPmFhOysrYWEpe3ZhciBsYT1RKmFhLFo9LjIqVCxiYT1ZaSh0aGlzLmdldFJHQihhYS8xMDAqKHRoaXMuY29uZmlnLm1heC10aGlzLmNvbmZpZy5taW4pK3RoaXMuY29uZmlnLm1pbiksMyksZWE9YmFbMF0sY2E9YmFbMV07YmE9YmFbMl07CkwuYmVnaW5QYXRoKCk7TC5maWxsU3R5bGU9InJnYmEoIitlYSsiLCAiK2NhKyIsICIrYmErIiwgMSkiO0wuZmlsbFJlY3QobGEsWixRLFgpO0wuc3Ryb2tlKCl9bnVsbCE9TSYmTT49dGhpcy5jb25maWcubWluJiZNPD10aGlzLmNvbmZpZy5tYXgmJihLPShNLXRoaXMuY29uZmlnLm1pbikvKHRoaXMuY29uZmlnLm1heC10aGlzLmNvbmZpZy5taW4pKksud2lkdGgsTC5iZWdpblBhdGgoKSxMLmZpbGxTdHlsZT0icmdiYSgwLCAwLCAwLCAxKSIsTC5tb3ZlVG8oSywuMipUKSxMLmxpbmVUbyhLLTQsMCksTC5saW5lVG8oSys0LDApLEwuZmlsbCgpLEwuYmVnaW5QYXRoKCksTC5tb3ZlVG8oSywuOCpUKSxMLmxpbmVUbyhLLTQsVCksTC5saW5lVG8oSys0LFQpLEwuZmlsbCgpKX19fTtyZXR1cm4gSH0oKSxCPWZ1bmN0aW9uKEgpe2Z1bmN0aW9uIEsoKXtyZXR1cm4gbnVsbCE9PUgmJkguYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfVdpKEssSCk7Sy5wcm90b3R5cGUuZ2V0UkdCPWZ1bmN0aW9uKE0pe2lmKGlzTmFOKE0pKXJldHVyblsyNTUsCjAsMF07aWYoIWlzRmluaXRlKE0pKXJldHVybiAwPE0/WzAsMCwyNTVdOlsyNTUsMTI3LjUsMF07TT10aGlzLmNvbmZpZy5taW49PT10aGlzLmNvbmZpZy5tYXg/LjU6KE0tdGhpcy5jb25maWcubWluKS8odGhpcy5jb25maWcubWF4LXRoaXMuY29uZmlnLm1pbik7TT1NYXRoLm1heChNYXRoLm1pbihNLDEpLDApO3JldHVyblsyNTUqTSwyNTUqTSwyNTUqTV19O3JldHVybiBLfShEKTtEPWZ1bmN0aW9uKEgpe2Z1bmN0aW9uIEsoKXtyZXR1cm4gbnVsbCE9PUgmJkguYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfVdpKEssSCk7Sy5wcm90b3R5cGUuZ2V0UkdCPWZ1bmN0aW9uKE0pe2lmKGlzTmFOKE0pKXJldHVybls2My43NSw2My43NSw2My43NV07aWYoIWlzRmluaXRlKE0pKXJldHVybiAwPk0/WzEyNy41LDEyNy41LDEyNy41XTpbMTkxLjI1LDE5MS4yNSwxOTEuMjVdO3ZhciBMPTAsUT0wLFQ9MDtNPXRoaXMuY29uZmlnLm1pbj09PXRoaXMuY29uZmlnLm1heD8uNTooTS10aGlzLmNvbmZpZy5taW4pLwoodGhpcy5jb25maWcubWF4LXRoaXMuY29uZmlnLm1pbik7TT1NYXRoLm1heChNYXRoLm1pbihNLDEpLDApOy4zNT49TT8oUT1NLy4zNSxUPTEpOi4zNTxNJiYuNjU+PU0/KEw9KE0tLjM1KS8oLjY1LS4zNSksUT0xLFQ9KC42NS1NKS8oLjY1LS4zNSkpOi42NTxNJiYoTD0xLFE9KDEtTSkvLjM1KTtyZXR1cm5bMjU1KkwsMjU1KlEsMjU1KlRdfTtyZXR1cm4gS30oRCk7dmFyIEk7KGZ1bmN0aW9uKEgpe0hbSC5URVhUPTFdPSJURVhUIjtIW0guSU1BR0U9Ml09IklNQUdFIn0pKEl8fChJPXt9KSk7dmFyIE49e0dyYXlzY2FsZTpCLEpldDpEfSxPPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSChLLE0sTCl7dGhpcy5yb290RWxlbWVudD1LO3RoaXMudGVuc29yVmlldz1NO3RoaXMuYmFzZVJ1bGVyVGljaz10aGlzLnRvcFJ1bGVyPXRoaXMudmFsdWVTZWN0aW9uPXRoaXMuc2xpY2luZ1NwZWNSb290PXRoaXMubWVudVRodW1iPXRoaXMuaW5mb1N1YnNlY3Rpb249dGhpcy5oZWFkZXJTZWN0aW9uPW51bGw7CnRoaXMudG9wUnVsZXJUaWNrcz1bXTt0aGlzLmxlZnRSdWxlclRpY2tzPVtdO3RoaXMudmFsdWVSb3dzPVtdO3RoaXMudmFsdWVEaXZzPVtdO3RoaXMuc2xpY2luZ0NvbnRyb2w9dGhpcy52YWx1ZVRvb2x0aXA9bnVsbDt0aGlzLmNvbHNDdXRvZmY9dGhpcy5yb3dzQ3V0b2ZmPSExO3RoaXMubWVudT10aGlzLm1lbnVDb25maWc9dGhpcy5zZWxlY3Rpb249bnVsbDt0aGlzLmNvbG9yTWFwTmFtZT0iR3JheXNjYWxlIjt0aGlzLmNvbG9yTWFwPW51bGw7dGhpcy5zaG93SW5kaWNlc09uVGlja3M9ITE7dGhpcy5pbWFnZUNlbGxTaXplPTE2O3RoaXMubWluSW1hZ2VDZWxsU2l6ZT00O3RoaXMubWF4SW1hZ2VDZWxsU2l6ZT00MDt0aGlzLnpvb21TdGVwUmF0aW89MS4yO3RoaXMubnVtZXJpY1N1bW1hcnk9bnVsbDt0aGlzLm9wdGlvbnM9THx8e307dGhpcy5zbGljaW5nU3BlYz1wKHRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlKTt0aGlzLnJhbms9dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGUubGVuZ3RoOwp0aGlzLnZhbHVlUmVuZGVyTW9kZT1JLlRFWFR9SC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGIodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFhpKHRoaXMsZnVuY3Rpb24oSyl7c3dpdGNoKEsubGFiZWwpe2Nhc2UgMDp0aGlzLnJvb3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQiKTt0aGlzLnJlbmRlckhlYWRlcigpO2lmKCEoZCh0aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZSl8fGYodGhpcy50ZW5zb3JWaWV3LnNwZWMuZHR5cGUpfHxoKHRoaXMudGVuc29yVmlldy5zcGVjLmR0eXBlKXx8ayh0aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZSkpKXRocm93IEVycm9yKCJSZW5kZXJpbmcgZHR5cGUgIit0aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZSsiIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiIpO3JldHVybls0LHRoaXMucmVuZGVyVmFsdWVzKCldO2Nhc2UgMTpyZXR1cm4gSy5zZW50KCksWzJdfX0pfSl9O0gucHJvdG90eXBlLnJlbmRlckhlYWRlcj0KZnVuY3Rpb24oKXtudWxsPT10aGlzLmhlYWRlclNlY3Rpb24mJih0aGlzLmhlYWRlclNlY3Rpb249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5oZWFkZXJTZWN0aW9uLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtaGVhZGVyIiksdGhpcy5yb290RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmhlYWRlclNlY3Rpb24pLHRoaXMuY3JlYXRlTWVudSgpKTt0aGlzLnJlbmRlckluZm8oKX07SC5wcm90b3R5cGUucmVuZGVySW5mbz1mdW5jdGlvbigpe2lmKG51bGw9PT10aGlzLmhlYWRlclNlY3Rpb24pdGhyb3cgRXJyb3IoIlJlbmRlcmluZyB0ZW5zb3IgaW5mbyBmYWlsZWQgZHVlIHRvIG1pc2luZyBoZWFkZXIgc2VjdGlvbiIpO251bGw9PXRoaXMuaW5mb1N1YnNlY3Rpb24mJih0aGlzLmluZm9TdWJzZWN0aW9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuaW5mb1N1YnNlY3Rpb24uY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1pbmZvIiksCnRoaXMuaGVhZGVyU2VjdGlvbi5hcHBlbmRDaGlsZCh0aGlzLmluZm9TdWJzZWN0aW9uKSk7Zm9yKDt0aGlzLmluZm9TdWJzZWN0aW9uLmZpcnN0Q2hpbGQ7KXRoaXMuaW5mb1N1YnNlY3Rpb24ucmVtb3ZlQ2hpbGQodGhpcy5pbmZvU3Vic2VjdGlvbi5maXJzdENoaWxkKTt0aGlzLnJlbmRlck5hbWUoKTt0aGlzLnJlbmRlckRUeXBlKCk7dGhpcy5yZW5kZXJTaGFwZSgpfTtILnByb3RvdHlwZS5yZW5kZXJOYW1lPWZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5pbmZvU3Vic2VjdGlvbil0aHJvdyBFcnJvcigiUmVuZGVyaW5nIHRlbnNvciBuYW1lIGZhaWxlZCBkdWUgdG8gbWlzc2luZyBpbmZvIHN1YnNlY3Rpb24uIik7aWYobnVsbCE9dGhpcy5vcHRpb25zLm5hbWUmJjAhPT10aGlzLm9wdGlvbnMubmFtZS5sZW5ndGgpe3ZhciBLPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0suY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC10ZW5zb3ItbmFtZSIpO0sudGV4dENvbnRlbnQ9Cm4odGhpcy5vcHRpb25zLm5hbWUpO0sudGl0bGU9dGhpcy5vcHRpb25zLm5hbWU7dGhpcy5pbmZvU3Vic2VjdGlvbi5hcHBlbmRDaGlsZChLKX19O0gucHJvdG90eXBlLnJlbmRlckRUeXBlPWZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5pbmZvU3Vic2VjdGlvbil0aHJvdyBFcnJvcigiUmVuZGVyaW5nIHRlbnNvciBkdHlwZSBmYWlsZWQgZHVlIHRvIG1pc3NpbmcgaW5mbyBzdWJzZWN0aW9uLiIpO3ZhciBLPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO0suY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC1kdHlwZSIpO3ZhciBNPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtNLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtZHR5cGUtbGFiZWwiKTtNLnRleHRDb250ZW50PSJkdHlwZToiO0suYXBwZW5kQ2hpbGQoTSk7TT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7TS50ZXh0Q29udGVudD10aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZTtLLmFwcGVuZENoaWxkKE0pOwp0aGlzLmluZm9TdWJzZWN0aW9uLmFwcGVuZENoaWxkKEspfTtILnByb3RvdHlwZS5yZW5kZXJTaGFwZT1mdW5jdGlvbigpe2lmKG51bGw9PXRoaXMuaW5mb1N1YnNlY3Rpb24pdGhyb3cgRXJyb3IoIlJlbmRlcmluZyB0ZW5zb3Igc2hhcGUgZmFpbGVkIGR1ZSB0byBtaXNzaW5nIGluZm8gc3Vic2VjdGlvbi4iKTt2YXIgSz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtLLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtc2hhcGUiKTt2YXIgTT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtNLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtc2hhcGUtbGFiZWwiKTtNLnRleHRDb250ZW50PSJzaGFwZToiO0suYXBwZW5kQ2hpbGQoTSk7TT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtNLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtc2hhcGUtdmFsdWUiKTtNLnRleHRDb250ZW50PWwodGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGUpO0suYXBwZW5kQ2hpbGQoTSk7CnRoaXMuaW5mb1N1YnNlY3Rpb24uYXBwZW5kQ2hpbGQoSyl9O0gucHJvdG90eXBlLmNyZWF0ZU1lbnU9ZnVuY3Rpb24oKXt2YXIgSz10aGlzO3RoaXMubWVudUNvbmZpZz17aXRlbXM6W119O2lmKGYodGhpcy50ZW5zb3JWaWV3LnNwZWMuZHR5cGUpfHxkKHRoaXMudGVuc29yVmlldy5zcGVjLmR0eXBlKXx8aCh0aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZSkpdGhpcy5tZW51Q29uZmlnLml0ZW1zLnB1c2goe2NhcHRpb246IlNlbGVjdCBkaXNwbGF5IG1vZGUuLi4iLG9wdGlvbnM6WyJUZXh0IiwiSW1hZ2UiXSxkZWZhdWx0U2VsZWN0aW9uOjAsY2FsbGJhY2s6ZnVuY3Rpb24oTSl7MD09PU0/KEsudmFsdWVSZW5kZXJNb2RlPUkuVEVYVCxLLnJlbmRlclZhbHVlcygpKTooSy52YWx1ZVJlbmRlck1vZGU9SS5JTUFHRSxLLnRlbnNvclZpZXcuZ2V0TnVtZXJpY1N1bW1hcnkoKS50aGVuKGZ1bmN0aW9uKEwpe0subnVtZXJpY1N1bW1hcnk9TDtLLnJlbmRlclZhbHVlcygpfSkpfX0pLHRoaXMubWVudUNvbmZpZy5pdGVtcy5wdXNoKHtjYXB0aW9uOiJTZWxlY3QgY29sb3IgbWFwLi4uIiwKb3B0aW9uczpPYmplY3Qua2V5cyhOKSxkZWZhdWx0U2VsZWN0aW9uOjAsY2FsbGJhY2s6ZnVuY3Rpb24oTSl7Sy5jb2xvck1hcE5hbWU9T2JqZWN0LmtleXMoTilbTV07Sy5yZW5kZXJWYWx1ZXMoKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIEsudmFsdWVSZW5kZXJNb2RlPT09SS5JTUFHRX19KSx0aGlzLm1lbnVDb25maWcuaXRlbXMucHVzaCh7Y2FwdGlvbjoiWm9vbSBpbiAoSW1hZ2UgbW9kZSkiLGNhbGxiYWNrOmZ1bmN0aW9uKCl7Sy56b29tSW5PbmVTdGVwQW5kUmVuZGVyVmFsdWVzKCl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiBLLnZhbHVlUmVuZGVyTW9kZT09PUkuSU1BR0V9fSksdGhpcy5tZW51Q29uZmlnLml0ZW1zLnB1c2goe2NhcHRpb246Ilpvb20gb3V0IChJbWFnZSBtb2RlKSIsY2FsbGJhY2s6ZnVuY3Rpb24oKXtLLnpvb21PdXRPbmVTdGVwQW5kUmVuZGVyVmFsdWVzKCl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiBLLnZhbHVlUmVuZGVyTW9kZT09PQpJLklNQUdFfX0pO251bGwhPT10aGlzLm1lbnVDb25maWcmJjA8dGhpcy5tZW51Q29uZmlnLml0ZW1zLmxlbmd0aCYmKHRoaXMubWVudT1uZXcgeSh0aGlzLm1lbnVDb25maWcsdGhpcy5oZWFkZXJTZWN0aW9uKSx0aGlzLnJlbmRlck1lbnVUaHVtYigpKX07SC5wcm90b3R5cGUuem9vbUluT25lU3RlcEFuZFJlbmRlclZhbHVlcz1mdW5jdGlvbigpe3RoaXMuaW1hZ2VDZWxsU2l6ZSp0aGlzLnpvb21TdGVwUmF0aW88PXRoaXMubWF4SW1hZ2VDZWxsU2l6ZSYmKHRoaXMuaW1hZ2VDZWxsU2l6ZSo9dGhpcy56b29tU3RlcFJhdGlvLHRoaXMucmVuZGVyVmFsdWVzKCkpfTtILnByb3RvdHlwZS56b29tT3V0T25lU3RlcEFuZFJlbmRlclZhbHVlcz1mdW5jdGlvbigpe3RoaXMuaW1hZ2VDZWxsU2l6ZS90aGlzLnpvb21TdGVwUmF0aW8+PXRoaXMubWluSW1hZ2VDZWxsU2l6ZSYmKHRoaXMuaW1hZ2VDZWxsU2l6ZS89dGhpcy56b29tU3RlcFJhdGlvLHRoaXMucmVuZGVyVmFsdWVzKCkpfTtILnByb3RvdHlwZS5yZW5kZXJNZW51VGh1bWI9CmZ1bmN0aW9uKCl7dmFyIEs9dGhpcztpZihudWxsPT10aGlzLmhlYWRlclNlY3Rpb24pdGhyb3cgRXJyb3IoIlJlbmRlcmluZyBtZW51IHRodW1iIGZhaWxlZCBkdWUgdG8gbWlzc2luZyBoZWFkZXIgc2VjdGlvbi4iKTt0aGlzLm1lbnVUaHVtYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLm1lbnVUaHVtYi50ZXh0Q29udGVudD0iXHUyMmVlIjt0aGlzLm1lbnVUaHVtYi5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LW1lbnUtdGh1bWIiKTt0aGlzLmhlYWRlclNlY3Rpb24uYXBwZW5kQ2hpbGQodGhpcy5tZW51VGh1bWIpO3RoaXMubWVudVRodW1iLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe2lmKG51bGwhPT1LLm1lbnUpaWYoSy5tZW51LnNob3duKCkpSy5tZW51LmhpZGUoKTtlbHNle3ZhciBNPUsubWVudVRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO0subWVudS5zaG93KE0uYm90dG9tLE0ubGVmdCl9fSl9O0gucHJvdG90eXBlLnJlbmRlclZhbHVlcz0KZnVuY3Rpb24oKXtyZXR1cm4gYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSz10aGlzO3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKE0pe3N3aXRjaChNLmxhYmVsKXtjYXNlIDA6cmV0dXJuIDI8dGhpcy5yYW5rJiZudWxsPT09dGhpcy5zbGljaW5nU3BlY1Jvb3QmJih0aGlzLnNsaWNpbmdTcGVjUm9vdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNsaWNpbmdTcGVjUm9vdC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LXNsaWNpbmctZ3JvdXAiKSx0aGlzLnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2xpY2luZ1NwZWNSb290KSksbnVsbD09dGhpcy52YWx1ZVNlY3Rpb24mJih0aGlzLnZhbHVlU2VjdGlvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnZhbHVlU2VjdGlvbi5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLXNlY3Rpb24iKSx0aGlzLnJvb3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudmFsdWVTZWN0aW9uKSwKdGhpcy52YWx1ZVNlY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGZ1bmN0aW9uKEwpe3JldHVybiBiKEssdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBRO3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKFQpe3N3aXRjaChULmxhYmVsKXtjYXNlIDA6UT0hMTtudWxsPT10aGlzLm9wdGlvbnMud2hlZWxab29tS2V5fHwiY3RybCI9PT10aGlzLm9wdGlvbnMud2hlZWxab29tS2V5P1E9TC5jdHJsS2V5OiJhbHQiPT09dGhpcy5vcHRpb25zLndoZWVsWm9vbUtleT9RPUwuYWx0S2V5OiJzaGlmdCI9PT10aGlzLm9wdGlvbnMud2hlZWxab29tS2V5JiYoUT1MLnNoaWZ0S2V5KTtpZihRJiZ0aGlzLnZhbHVlUmVuZGVyTW9kZT09PUkuSU1BR0UpcmV0dXJuIEwuc3RvcFByb3BhZ2F0aW9uKCksTC5wcmV2ZW50RGVmYXVsdCgpLDA8TC5kZWx0YVk/dGhpcy56b29tT3V0T25lU3RlcEFuZFJlbmRlclZhbHVlcygpOnRoaXMuem9vbUluT25lU3RlcEFuZFJlbmRlclZhbHVlcygpLFsyXTtpZihudWxsPT0KdGhpcy5zZWxlY3Rpb24pcmV0dXJuWzJdO0wuc3RvcFByb3BhZ2F0aW9uKCk7TC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuaGlkZVZhbHVlVG9vbHRpcCgpO3JldHVybls0LHRoaXMuc2Nyb2xsVXBPckRvd24oMDxMLmRlbHRhWT93LkRPV046dy5VUCldO2Nhc2UgMTpyZXR1cm4gVC5zZW50KCksWzJdfX0pfSl9KSx0aGlzLnZhbHVlU2VjdGlvbi50YWJJbmRleD0xMDI0LHRoaXMudmFsdWVTZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGZ1bmN0aW9uKEwpe3ZhciBRPVszOCw0MCwzNywzOV07aWYobnVsbCE9Sy5zZWxlY3Rpb24mJi0xIT09US5pbmRleE9mKEwua2V5Q29kZSkpe0wuc3RvcFByb3BhZ2F0aW9uKCk7TC5wcmV2ZW50RGVmYXVsdCgpO0suaGlkZVZhbHVlVG9vbHRpcCgpO3ZhciBUPVE9bnVsbDszOD09PUwua2V5Q29kZT9UPXcuVVA6NDA9PT1MLmtleUNvZGU/VD13LkRPV046Mzc9PT1MLmtleUNvZGU/VD13LkxFRlQ6Mzk9PT1MLmtleUNvZGUmJihUPXcuUklHSFQpOwpudWxsIT09VCYmKFE9Sy5zZWxlY3Rpb24ubW92ZShULEsuc2xpY2luZ1NwZWMpKTtudWxsPT09UT9LLnJlbmRlclNlbGVjdGlvbigpOlE9PT13LlVQfHxRPT09dy5ET1dOP0suc2Nyb2xsVXBPckRvd24oUSk6KFE9PT13LkxFRlR8fFE9PT13LlJJR0hUKSYmSy5zY3JvbGxMZWZ0T3JSaWdodChRKX19KSksdGhpcy5jbGVhclZhbHVlU2VjdGlvbigpLHRoaXMuY3JlYXRlVG9wUnVsZXIoKSx0aGlzLmNyZWF0ZUxlZnRSdWxlcigpLHRoaXMuY3JlYXRlVmFsdWVEaXZzKCksWzQsdGhpcy5yZW5kZXJSdWxlcnNBbmRWYWx1ZURpdnMoKV07Y2FzZSAxOnJldHVybiBNLnNlbnQoKSwyPHRoaXMucmFuayYmKHRoaXMuc2xpY2luZ0NvbnRyb2w9bmV3IEYodGhpcy5zbGljaW5nU3BlY1Jvb3QsdGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGUsZnVuY3Rpb24oTCl7cmV0dXJuIGIoSyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKCl7cmV0dXJuIFhpKHRoaXMsZnVuY3Rpb24oUSl7c3dpdGNoKFEubGFiZWwpe2Nhc2UgMDppZihtKHRoaXMuc2xpY2luZ1NwZWMsCkwpKXJldHVyblszLDJdO3RoaXMuc2xpY2luZ1NwZWM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShMKSk7cmV0dXJuWzQsdGhpcy5yZW5kZXIoKV07Y2FzZSAxOnJldHVybiBRLnNlbnQoKSxbMyw0XTtjYXNlIDI6cmV0dXJuIHRoaXMuc2xpY2luZ1NwZWM9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShMKSksWzQsdGhpcy5yZW5kZXJSdWxlcnNBbmRWYWx1ZURpdnMoKV07Y2FzZSAzOlEuc2VudCgpLFEubGFiZWw9NDtjYXNlIDQ6cmV0dXJuWzJdfX0pfSl9KSx0aGlzLnNsaWNpbmdDb250cm9sLnJlbmRlcih0aGlzLnNsaWNpbmdTcGVjKSksWzJdfX0pfSl9O0gucHJvdG90eXBlLmNsZWFyVmFsdWVTZWN0aW9uPWZ1bmN0aW9uKCl7aWYobnVsbCE9PXRoaXMudmFsdWVTZWN0aW9uKXtmb3IoO3RoaXMudmFsdWVTZWN0aW9uLmZpcnN0Q2hpbGQ7KXRoaXMudmFsdWVTZWN0aW9uLnJlbW92ZUNoaWxkKHRoaXMudmFsdWVTZWN0aW9uLmZpcnN0Q2hpbGQpO3RoaXMudG9wUnVsZXI9bnVsbDsKdGhpcy52YWx1ZVJvd3M9W119fTtILnByb3RvdHlwZS5jcmVhdGVUb3BSdWxlcj1mdW5jdGlvbigpe3ZhciBLPXRoaXM7aWYobnVsbD09PXRoaXMudmFsdWVTZWN0aW9uKXRocm93IEVycm9yKCJGYWlsZWQgdG8gY3JlYXRlIHRvcCBydWxlciBkdWUgdG8gbWlzc2luZyB2YWx1ZSBzZWN0aW9uLiIpO251bGw9PXRoaXMudG9wUnVsZXImJih0aGlzLnRvcFJ1bGVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMudG9wUnVsZXIuY2xhc3NMaXN0LmFkZCgidGVuZXNvci13aWRnZXQtdG9wLXJ1bGVyIiksdGhpcy50b3BSdWxlci5zdHlsZS53aGl0ZVNwYWNlPSJub3dyYXAiLHRoaXMudmFsdWVTZWN0aW9uLmFwcGVuZENoaWxkKHRoaXMudG9wUnVsZXIpLHRoaXMudG9wUnVsZXJUaWNrcz1bXSx0aGlzLnRvcFJ1bGVyLmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIixmdW5jdGlvbihYKXtyZXR1cm4gYihLLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWGkodGhpcyxmdW5jdGlvbihhYSl7c3dpdGNoKGFhLmxhYmVsKXtjYXNlIDA6aWYobnVsbD09CnRoaXMuc2VsZWN0aW9uKXJldHVyblsyXTtYLnN0b3BQcm9wYWdhdGlvbigpO1gucHJldmVudERlZmF1bHQoKTt0aGlzLmhpZGVWYWx1ZVRvb2x0aXAoKTtyZXR1cm5bNCx0aGlzLnNjcm9sbExlZnRPclJpZ2h0KDA8WC5kZWx0YVk/dy5SSUdIVDp3LkxFRlQpXTtjYXNlIDE6cmV0dXJuIGFhLnNlbnQoKSxbMl19fSl9KX0pKTtmb3IoO3RoaXMudG9wUnVsZXIuZmlyc3RDaGlsZDspdGhpcy50b3BSdWxlci5yZW1vdmVDaGlsZCh0aGlzLnRvcFJ1bGVyLmZpcnN0Q2hpbGQpO3RoaXMuYmFzZVJ1bGVyVGljaz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLmJhc2VSdWxlclRpY2suY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC10b3AtcnVsZXItdGljayIpO3RoaXMudG9wUnVsZXIuYXBwZW5kQ2hpbGQodGhpcy5iYXNlUnVsZXJUaWNrKTsyPD10aGlzLnJhbmsmJih0aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZT1bMCxudWxsXSk7dmFyIE09MT49dGhpcy5yYW5rPwoxOnRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlW3RoaXMuc2xpY2luZ1NwZWMudmlld2luZ0RpbXNbMV1dO3ZhciBMPXRoaXMucm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQ7dGhpcy5jb2xzQ3V0b2ZmPSExO2Zvcih2YXIgUT0wO1E8TTsrK1Epe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC10b3AtcnVsZXItdGljayIpO3RoaXMudmFsdWVSZW5kZXJNb2RlPT09SS5JTUFHRSYmKFQuc3R5bGUud2lkdGg9dGhpcy5pbWFnZUNlbGxTaXplKyJweCIpO3RoaXMudG9wUnVsZXIuYXBwZW5kQ2hpbGQoVCk7dGhpcy50b3BSdWxlclRpY2tzLnB1c2goVCk7aWYoVC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodD49TCl7aWYoMjw9dGhpcy5yYW5rKXtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2UpdGhyb3cgRXJyb3IoIk1pc3NpbmcgaG9yaXpvbnRhbCByYW5nZSBmb3IgIisKdGhpcy5yYW5rKyJEIHRlbnNvci4iKTt0aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVsxXT1RKzE7dGhpcy5jb2xzQ3V0b2ZmPSEwfWJyZWFrfX1pZighdGhpcy5jb2xzQ3V0b2ZmJiYyPD10aGlzLnJhbmspe2lmKG51bGw9PT10aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZSl0aHJvdyBFcnJvcigiTWlzc2luZyBob3Jpem9udGFsIHJhbmdlIGZvciAiK3RoaXMucmFuaysiRCB0ZW5zb3IuIik7dGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2VbMV09TX19O0gucHJvdG90eXBlLmNyZWF0ZUxlZnRSdWxlcj1mdW5jdGlvbigpe2lmKG51bGw9PT10aGlzLnZhbHVlU2VjdGlvbil0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsZWZ0IHJ1bGVyIGR1ZSB0byBtaXNzaW5nIHZhbHVlIHNlY3Rpb24uIik7dGhpcy52YWx1ZVJvd3M9W107dGhpcy5sZWZ0UnVsZXJUaWNrcz1bXTsxPD10aGlzLnJhbmsmJih0aGlzLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2U9ClswLG51bGxdKTt2YXIgSz0wPT09dGhpcy5yYW5rPzE6dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGVbdGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1swXV07dGhpcy5yb3dzQ3V0b2ZmPSExO2Zvcih2YXIgTT10aGlzLnJvb3RFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSxMPTA7TDxLOysrTCl7dmFyIFE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7US5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLXJvdyIpO3RoaXMudmFsdWVSZW5kZXJNb2RlPT09SS5JTUFHRSYmKFEuc3R5bGUuaGVpZ2h0PXRoaXMuaW1hZ2VDZWxsU2l6ZSsicHgiLFEuc3R5bGUubGluZUhlaWdodD10aGlzLmltYWdlQ2VsbFNpemUrInB4Iik7dGhpcy52YWx1ZVNlY3Rpb24uYXBwZW5kQ2hpbGQoUSk7dGhpcy52YWx1ZVJvd3MucHVzaChRKTt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtdG9wLXJ1bGVyLXRpY2siKTsKdGhpcy52YWx1ZVJlbmRlck1vZGU9PT1JLklNQUdFJiYoVC5zdHlsZS5oZWlnaHQ9dGhpcy5pbWFnZUNlbGxTaXplKyJweCIsVC5zdHlsZS5saW5lSGVpZ2h0PXRoaXMuaW1hZ2VDZWxsU2l6ZSsicHgiKTtRLmFwcGVuZENoaWxkKFQpO3RoaXMubGVmdFJ1bGVyVGlja3MucHVzaChUKTtpZihULmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbT49TSl7aWYoMTw9dGhpcy5yYW5rKXtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlKXRocm93IEVycm9yKCJNaXNzaW5nIHZlcnRpY2FsIHJhbmdlIGZvciAiK3RoaXMucmFuaysiRCB0ZW5zb3IuIik7dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzFdPUwrMTt0aGlzLnJvd3NDdXRvZmY9ITB9YnJlYWt9fWlmKCF0aGlzLnJvd3NDdXRvZmYmJjE8PXRoaXMucmFuayl7aWYobnVsbD09PXRoaXMuc2xpY2luZ1NwZWMudmVydGljYWxSYW5nZSl0aHJvdyBFcnJvcigiTWlzc2luZyB2ZXJ0aWNhbCByYW5nZSBmb3IgIisKdGhpcy5yYW5rKyJEIHRlbnNvci4iKTt0aGlzLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2VbMV09S319O0gucHJvdG90eXBlLmNyZWF0ZVZhbHVlRGl2cz1mdW5jdGlvbigpe2Z1bmN0aW9uIEsoYWEpe2Z1bmN0aW9uIGxhKGJhKXt2YXIgZWE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZWEuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS1kaXYiKTtULnZhbHVlUmVuZGVyTW9kZT09PUkuSU1BR0UmJihlYS5zdHlsZS53aWR0aD1ULmltYWdlQ2VsbFNpemUrInB4IixlYS5zdHlsZS5oZWlnaHQ9VC5pbWFnZUNlbGxTaXplKyJweCIsZWEuc3R5bGUubGluZUhlaWdodD1ULmltYWdlQ2VsbFNpemUrInB4Iik7VC52YWx1ZVJvd3NbYWFdLmFwcGVuZENoaWxkKGVhKTtULnZhbHVlRGl2c1thYV0ucHVzaChlYSk7ZWEuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7TS5zZWxlY3Rpb249bmV3IEMoTS50ZW5zb3JWaWV3LnNwZWMuc2hhcGUsTS5zbGljaW5nU3BlYywKbnVsbD09TS5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlfHxudWxsPT1NLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2VbMF0/MDpNLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2VbMF0rYWEsbnVsbD09TS5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2V8fG51bGw9PU0uc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlWzBdPzA6TS5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2VbMF0rYmEsMSwxKTtNLnJlbmRlclNlbGVjdGlvbigpfSk7ZWEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsZnVuY3Rpb24oKXt2YXIgY2E9ZWEuZ2V0QXR0cmlidXRlKCJkZXRhaWxlZC12YWx1ZSIpO2lmKG51bGwhPT1jYSl7dmFyIGthPU0ucm9vdEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksWT1lYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxFYT1ZLmJvdHRvbS1ZLnRvcCx2YT1ZLnJpZ2h0LVkubGVmdCx4YT1NLmNhbGN1bGF0ZUluZGljZXMoYWEsYmEpO00uZHJhd1ZhbHVlVG9vbHRpcCh4YSwKY2EsWS50b3Ata2EudG9wKy44KkVhLFkubGVmdC1rYS5sZWZ0Ky43NSp2YSl9fSk7ZWEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtNLmhpZGVWYWx1ZVRvb2x0aXAoKX0pfVQudmFsdWVEaXZzW2FhXT1bXTtmb3IodmFyIFo9MDtaPEw7KytaKWxhKFopfXZhciBNPXRoaXM7aWYobnVsbD09PXRoaXMudmFsdWVSb3dzKXRocm93IEVycm9yKCJWYWx1ZSByb3dzIGFyZSB1bmV4cGVjdGVkbHkgdW5pbml0aWFsaXplZC4iKTt0aGlzLnZhbHVlRGl2cz1bXTtmb3IodmFyIEw9dGhpcy50b3BSdWxlclRpY2tzLmxlbmd0aCxRPXRoaXMudmFsdWVSb3dzLmxlbmd0aCxUPXRoaXMsWD0wO1g8UTsrK1gpSyhYKX07SC5wcm90b3R5cGUucmVuZGVyVG9wUnVsZXI9ZnVuY3Rpb24oKXtpZigyPD10aGlzLnJhbmspZm9yKHZhciBLPXRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlW3RoaXMuc2xpY2luZ1NwZWMudmlld2luZ0RpbXNbMV1dLE09MDtNPHRoaXMudG9wUnVsZXJUaWNrcy5sZW5ndGg7KytNKXtpZihudWxsPT09CnRoaXMuc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlKXRocm93IEVycm9yKCJNaXNzaW5nIGhvcml6b250YWwgcmFuZ2UgZm9yICIrdGhpcy5yYW5rKyJEIHRlbnNvci4iKTt2YXIgTD10aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVswXStNO3RoaXMuc2hvd0luZGljZXNPblRpY2tzJiYodGhpcy50b3BSdWxlclRpY2tzW01dLnRleHRDb250ZW50PUw8Sz8iIitMOiIiKX19O0gucHJvdG90eXBlLnJlbmRlckxlZnRSdWxlcj1mdW5jdGlvbigpe2lmKDE8PXRoaXMucmFuaylmb3IodmFyIEs9dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGVbdGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1swXV0sTT0wO008dGhpcy5sZWZ0UnVsZXJUaWNrcy5sZW5ndGg7KytNKXtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlKXRocm93IEVycm9yKCJNaXNzaW5nIHZlcnRjaWFsIHJhbmdlIGZvciAiK3RoaXMucmFuaysiRCB0ZW5zb3IuIik7dmFyIEw9dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzBdKwpNO3RoaXMuc2hvd0luZGljZXNPblRpY2tzJiYodGhpcy5sZWZ0UnVsZXJUaWNrc1tNXS50ZXh0Q29udGVudD1MPEs/IiIrTDoiIil9fTtILnByb3RvdHlwZS5yZW5kZXJWYWx1ZURpdnM9ZnVuY3Rpb24oKXtyZXR1cm4gYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgSyxNLEwsUSxULFgsYWEsbGEsWixiYSxlYSxjYSxrYSxZLEVhLHZhLHhhO3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKEFhKXtzd2l0Y2goQWEubGFiZWwpe2Nhc2UgMDpyZXR1cm4gSz10aGlzLnZhbHVlRGl2cy5sZW5ndGgsTT10aGlzLnZhbHVlRGl2c1swXS5sZW5ndGgsWzQsdGhpcy50ZW5zb3JWaWV3LnZpZXcodGhpcy5zbGljaW5nU3BlYyldO2Nhc2UgMTpMPUFhLnNlbnQoKTswPT09dGhpcy5yYW5rP0w9W1tMXV06MT09PXRoaXMucmFuayYmKEw9TC5tYXAoZnVuY3Rpb24oRmEpe3JldHVybltGYV19KSk7UT10aGlzLmdldFZhbHVlQ2xhc3MoKTtUPXRoaXMudmFsdWVSZW5kZXJNb2RlO2lmKFQ9PT0KSS5JTUFHRSl7aWYobnVsbD09dGhpcy5udW1lcmljU3VtbWFyeSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIHJlbmRlciBpbWFnZSByZXByZXNlbnRhdGlvbiBvZiB0ZW5zb3IgZHVlIHRvIG1pc3NpbmcgbnVtZXJpYyBzdW1tYXJ5Iik7WD10aGlzLm51bWVyaWNTdW1tYXJ5O2FhPVgubWluaW11bTtsYT1YLm1heGltdW07aWYobnVsbD09YWF8fG51bGw9PWxhKXRocm93IEVycm9yKCJGYWlsZWQgdG8gcmVuZGVyIGltYWdlIHJlcHJlc2VudGF0aW9uIG9mIHRlbnNvciBkdWUgdG8gbWlzc2luZyBtaW5pbXVtIG9yIG1heGltdW0gdmFsdWVzIGluIG51bWVyaWMgc3VtbWFyeSIpO1o9e21pbjphYSxtYXg6bGF9O3RoaXMuY29sb3JNYXA9dGhpcy5jb2xvck1hcE5hbWUgaW4gTj9uZXcgTlt0aGlzLmNvbG9yTWFwTmFtZV0oWik6bmV3IEIoWil9Zm9yKGJhPTA7YmE8SzsrK2JhKWZvcihlYT0wO2VhPE07KytlYSljYT10aGlzLnZhbHVlRGl2c1tiYV1bZWFdLGJhPEwubGVuZ3RoJiZlYTxMW2JhXS5sZW5ndGg/CihrYT1MW2JhXVtlYV0sVD09PUkuSU1BR0U/KFk9WWkodGhpcy5jb2xvck1hcC5nZXRSR0Ioa2EpLDMpLEVhPVlbMF0sdmE9WVsxXSx4YT1ZWzJdLGNhLnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiKCIrRWErIiwgIit2YSsiLCAiK3hhKyIpIik6Im51bWVyaWMiPT09UT9jYS50ZXh0Q29udGVudD1xKGthLGQodGhpcy50ZW5zb3JWaWV3LnNwZWMuZHR5cGUpKToiYm9vbGVhbiI9PT1RP2NhLnRleHRDb250ZW50PXUoa2EpOiJzdHJpbmciPT09USYmKGNhLnRleHRDb250ZW50PXgoa2EpKSxjYS5zZXRBdHRyaWJ1dGUoImRldGFpbGVkLXZhbHVlIix0aGlzLmdldERldGFpbGVkVmFsdWVUb29sdGlwU3RyaW5nKGthKSkpOihjYS50ZXh0Q29udGVudD0iIixjYS5zZXRBdHRyaWJ1dGUoImRldGFpbGVkLXZhbHVlIiwiIikpO3RoaXMucmVuZGVyU2VsZWN0aW9uKCk7cmV0dXJuWzJdfX0pfSl9O0gucHJvdG90eXBlLmdldERldGFpbGVkVmFsdWVUb29sdGlwU3RyaW5nPWZ1bmN0aW9uKEspe3JldHVybiJib29sZWFuIj09PQp0aGlzLmdldFZhbHVlQ2xhc3MoKT91KEssITEpOiJzdHJpbmciPT09dGhpcy5nZXRWYWx1ZUNsYXNzKCk/Ikxlbmd0aC0iK0subGVuZ3RoKycgc3RyaW5nOiAiJyt4KEssNTAwKSsnIic6U3RyaW5nKEspfTtILnByb3RvdHlwZS5yZW5kZXJTZWxlY3Rpb249ZnVuY3Rpb24oKXtpZihudWxsIT10aGlzLnNlbGVjdGlvbilmb3IodmFyIEs9dGhpcy52YWx1ZURpdnMubGVuZ3RoLE09dGhpcy52YWx1ZURpdnNbMF0ubGVuZ3RoLEw9MDtMPEs7KytMKWZvcih2YXIgUT0wO1E8TTsrK1Epe3ZhciBUPXRoaXMudmFsdWVEaXZzW0xdW1FdO1QuY2xhc3NMaXN0LnJlbW92ZSgidGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uIik7VC5jbGFzc0xpc3QucmVtb3ZlKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tdG9wIik7VC5jbGFzc0xpc3QucmVtb3ZlKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tYm90dG9tIik7VC5jbGFzc0xpc3QucmVtb3ZlKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tbGVmdCIpOwpULmNsYXNzTGlzdC5yZW1vdmUoInRlbnNvci13aWRnZXQtdmFsdWUtZGl2LXNlbGVjdGlvbi1yaWdodCIpO3ZhciBYPXRoaXMuY2FsY3VsYXRlSW5kaWNlcyhMLFEpO1g9dGhpcy5zZWxlY3Rpb24uZ2V0RWxlbWVudFN0YXR1cyhYKTtudWxsIT09WCYmKFQuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uIiksWC50b3BFZGdlJiZULmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtdmFsdWUtZGl2LXNlbGVjdGlvbi10b3AiKSxYLmJvdHRvbUVkZ2UmJlQuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLWJvdHRvbSIpLFgubGVmdEVkZ2UmJlQuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS1kaXYtc2VsZWN0aW9uLWxlZnQiKSxYLnJpZ2h0RWRnZSYmVC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLWRpdi1zZWxlY3Rpb24tcmlnaHQiKSl9fTtILnByb3RvdHlwZS5jYWxjdWxhdGVJbmRpY2VzPQpmdW5jdGlvbihLLE0pe2Zvcih2YXIgTD1bXSxRPXRoaXMuc2xpY2luZ1NwZWMuc2xpY2luZ0RpbXNBbmRJbmRpY2VzLm1hcChmdW5jdGlvbihsYSl7cmV0dXJuIGxhLmRpbX0pLFQ9dGhpcy5zbGljaW5nU3BlYy5zbGljaW5nRGltc0FuZEluZGljZXMubWFwKGZ1bmN0aW9uKGxhKXtyZXR1cm4gbGEuaW5kZXh9KSxYPTA7WDx0aGlzLnJhbms7KytYKWlmKC0xIT09US5pbmRleE9mKFgpKXt2YXIgYWE9VFtRLmluZGV4T2YoWCldO2lmKG51bGw9PT1hYSl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNhbGN1bGF0ZSBpbmRpY2VzOiBVbmRldGVybWluZWQgaW5kZXggYXQgZGltZW5zaW9uICIrWCk7TC5wdXNoKGFhKX1lbHNlIGlmKFg9PT10aGlzLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzBdKXtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlfHxudWxsPT09dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzBdKXRocm93IEVycm9yKCJGYWlsZWQgdG8gY2FsY3VsYXRlIGluZGljZXMgZHVlIHRvIHVuZGVydGVybWluZWQgdmVydGljYWwgcmFuZ2UuIik7CkwucHVzaCh0aGlzLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2VbMF0rSyl9ZWxzZSBpZihYPT09dGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1sxXSl7aWYobnVsbD09PXRoaXMuc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlfHxudWxsPT09dGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2VbMF0pdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjYWxjdWxhdGUgaW5kaWNlcyBkdWUgdG8gdW5kZXJ0ZXJtaW5lZCB2ZXJ0aWNhbCByYW5nZS4iKTtMLnB1c2godGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2VbMF0rTSl9cmV0dXJuIEx9O0gucHJvdG90eXBlLmRyYXdWYWx1ZVRvb2x0aXA9ZnVuY3Rpb24oSyxNLEwsUSl7bnVsbD09PXRoaXMudmFsdWVUb29sdGlwJiYodGhpcy52YWx1ZVRvb2x0aXA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy52YWx1ZVRvb2x0aXAuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwIiksdGhpcy5yb290RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnZhbHVlVG9vbHRpcCkpOwpmb3IoO3RoaXMudmFsdWVUb29sdGlwLmZpcnN0Q2hpbGQ7KXRoaXMudmFsdWVUb29sdGlwLnJlbW92ZUNoaWxkKHRoaXMudmFsdWVUb29sdGlwLmZpcnN0Q2hpbGQpO3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuY2xhc3NMaXN0LmFkZCgidGVuc29yLXdpZGdldC12YWx1ZS10b29sdGlwLWluZGljZXMiKTtULnRleHRDb250ZW50PSJJbmRpY2VzOiAiK0pTT04uc3RyaW5naWZ5KEspO3RoaXMudmFsdWVUb29sdGlwLmFwcGVuZENoaWxkKFQpO0s9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Sy5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itd2lkZ2V0LXZhbHVlLXRvb2x0aXAtdmFsdWUiKTtLLnRleHRDb250ZW50PU07dGhpcy52YWx1ZVRvb2x0aXAuYXBwZW5kQ2hpbGQoSyk7dGhpcy52YWx1ZVRvb2x0aXAuc3R5bGUudG9wPUwrInB4Ijt0aGlzLnZhbHVlVG9vbHRpcC5zdHlsZS5sZWZ0PVErInB4Ijt0aGlzLnZhbHVlVG9vbHRpcC5zdHlsZS5kaXNwbGF5PSJibG9jayI7CnRoaXMudmFsdWVSZW5kZXJNb2RlPT1JLklNQUdFJiZudWxsIT10aGlzLmNvbG9yTWFwJiYoTD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxMLmNsYXNzTGlzdC5hZGQoInRlbnNvci13aWRnZXQtdmFsdWUtdG9vbHRpcC1jb2xvcmJhciIpLHRoaXMudmFsdWVUb29sdGlwLmFwcGVuZENoaWxkKEwpLHRoaXMuY29sb3JNYXAucmVuZGVyKEwscGFyc2VGbG9hdChNKSkpfTtILnByb3RvdHlwZS5oaWRlVmFsdWVUb29sdGlwPWZ1bmN0aW9uKCl7bnVsbCE9dGhpcy52YWx1ZVRvb2x0aXAmJih0aGlzLnZhbHVlVG9vbHRpcC5zdHlsZS5kaXNwbGF5PSJub25lIil9O0gucHJvdG90eXBlLnJlbmRlclJ1bGVyc0FuZFZhbHVlRGl2cz1mdW5jdGlvbigpe3JldHVybiBiKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKEspe3N3aXRjaChLLmxhYmVsKXtjYXNlIDA6cmV0dXJuIG51bGwhPXRoaXMuc2xpY2luZ0NvbnRyb2wmJnRoaXMuc2xpY2luZ0NvbnRyb2wuc2V0U2xpY2luZ1NwZWModGhpcy5zbGljaW5nU3BlYyksCnRoaXMuY2FsY3VsYXRlU2hvd0luZGljZXNPblJ1bGVyVGlja3MoKSx0aGlzLnJlbmRlclRvcFJ1bGVyKCksdGhpcy5yZW5kZXJMZWZ0UnVsZXIoKSxbNCx0aGlzLnJlbmRlclZhbHVlRGl2cygpXTtjYXNlIDE6cmV0dXJuIEsuc2VudCgpLFsyXX19KX0pfTtILnByb3RvdHlwZS5jYWxjdWxhdGVTaG93SW5kaWNlc09uUnVsZXJUaWNrcz1mdW5jdGlvbigpe2lmKDI8PXRoaXMucmFuayl7dmFyIEs9dGhpcy50b3BSdWxlclRpY2tzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuc2hvd0luZGljZXNPblRpY2tzPUsucmlnaHQtSy5sZWZ0PjkqTWF0aC5jZWlsKE1hdGgubG9nKHRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlW3RoaXMuc2xpY2luZ1NwZWMudmlld2luZ0RpbXNbMF1dKS9NYXRoLkxOMTApfWVsc2UgMT09PXRoaXMucmFuaz8oSz10aGlzLmxlZnRSdWxlclRpY2tzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuc2hvd0luZGljZXNPblRpY2tzPTE2PEsuYm90dG9tLQpLLnRvcCk6dGhpcy5zaG93SW5kaWNlc09uVGlja3M9ITF9O0gucHJvdG90eXBlLnNjcm9sbEhvcml6b250YWxseT1mdW5jdGlvbihLKXtyZXR1cm4gYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTSxMO3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKFEpe3N3aXRjaChRLmxhYmVsKXtjYXNlIDA6aWYoMT49dGhpcy5yYW5rKXJldHVyblsyXTtpZihudWxsPT09dGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2UpdGhyb3cgRXJyb3IoIk1pc3NpbmcgaG9yaXpvbnRhbCByYW5nZSBmb3IgIit0aGlzLnJhbmsrIkQgdGVuc29yLiIpO009dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGVbdGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1sxXV07aWYoMD5LfHxLPj1NKXRocm93IEVycm9yKCJJbmRleCBvdXQgb2YgYm91bmQ6ICIrSysiIGlzIG91dHNpZGUgWzAsICIrTSsiXSkiKTt0aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVswXT1LO3RoaXMuc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlWzFdPQpLK3RoaXMudG9wUnVsZXJUaWNrcy5sZW5ndGg7TD10aGlzLnRlbnNvclZpZXcuc3BlYy5zaGFwZVt0aGlzLnNsaWNpbmdTcGVjLnZpZXdpbmdEaW1zWzFdXTt0aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVsxXT5MJiYodGhpcy5zbGljaW5nU3BlYy5ob3Jpem9udGFsUmFuZ2VbMV09TCk7cmV0dXJuWzQsdGhpcy5yZW5kZXJSdWxlcnNBbmRWYWx1ZURpdnMoKV07Y2FzZSAxOnJldHVybiBRLnNlbnQoKSxbMl19fSl9KX07SC5wcm90b3R5cGUuc2Nyb2xsVmVydGljYWxseT1mdW5jdGlvbihLKXtyZXR1cm4gYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXt2YXIgTSxMO3JldHVybiBYaSh0aGlzLGZ1bmN0aW9uKFEpe3N3aXRjaChRLmxhYmVsKXtjYXNlIDA6aWYoMD09PXRoaXMucmFuaylyZXR1cm5bMl07aWYobnVsbD09PXRoaXMuc2xpY2luZ1NwZWMudmVydGljYWxSYW5nZSl0aHJvdyBFcnJvcigiTWlzc2luZyB2ZXJ0aWNhbCByYW5nZSBmb3IgIit0aGlzLnJhbmsrCiJEIHRlbnNvci4iKTtpZihudWxsPT09dGhpcy52YWx1ZVJvd3MpdGhyb3cgRXJyb3IoIlZlcnRpY2FsIHNjcm9sbGluZyBmYWlsZWQgZHVlIHRvIG1pc3NpbmcgdmFsdWUgcm93cy4iKTtNPXRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlW3RoaXMuc2xpY2luZ1NwZWMudmlld2luZ0RpbXNbMF1dO2lmKDA+S3x8Sz49TSl0aHJvdyBFcnJvcigiSW5kZXggb3V0IG9mIGJvdW5kOiAiK0srIiBpcyBvdXRzaWRlIFswLCAiK00rIl0pIik7dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzBdPUs7dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzFdPUsrdGhpcy52YWx1ZVJvd3MubGVuZ3RoO0w9dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGVbdGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1swXV07dGhpcy5zbGljaW5nU3BlYy52ZXJ0aWNhbFJhbmdlWzFdPkwmJih0aGlzLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2VbMV09TCk7cmV0dXJuWzQsdGhpcy5yZW5kZXJSdWxlcnNBbmRWYWx1ZURpdnMoKV07CmNhc2UgMTpyZXR1cm4gUS5zZW50KCksWzJdfX0pfSl9O0gucHJvdG90eXBlLnNjcm9sbFVwT3JEb3duPWZ1bmN0aW9uKEspe3JldHVybiBiKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBNLEwsUTtyZXR1cm4gWGkodGhpcyxmdW5jdGlvbihUKXtzd2l0Y2goVC5sYWJlbCl7Y2FzZSAwOmlmKDA9PT10aGlzLnJhbmt8fCF0aGlzLnJvd3NDdXRvZmYpcmV0dXJuWzJdO2lmKG51bGw9PT10aGlzLnNsaWNpbmdTcGVjLnZlcnRpY2FsUmFuZ2UpdGhyb3cgRXJyb3IoIk1pc3NpbmcgdmVydGljYWwgcmFuZ2UgZm9yICIrdGhpcy5yYW5rKyJEIHRlbnNvci4iKTtpZihudWxsPT09dGhpcy52YWx1ZVJvd3MpdGhyb3cgRXJyb3IoIlZlcnRpY2FsIHNjcm9sbGluZyBmYWlsZWQgZHVlIHRvIG1pc3NpbmcgdmFsdWUgcm93cy4iKTtNPXRoaXMuc2xpY2luZ1NwZWMudmVydGljYWxSYW5nZVswXTtpZihLIT09dy5ET1dOKXJldHVyblszLDNdO0w9dGhpcy52YWx1ZVJvd3MubGVuZ3RoLQoxO1E9dGhpcy50ZW5zb3JWaWV3LnNwZWMuc2hhcGVbdGhpcy5zbGljaW5nU3BlYy52aWV3aW5nRGltc1swXV0tTDtyZXR1cm4gTTxRP1s0LHRoaXMuc2Nyb2xsVmVydGljYWxseShNKzEpXTpbMywyXTtjYXNlIDE6VC5zZW50KCksVC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMyw1XTtjYXNlIDM6cmV0dXJuIDA8PU0tMT9bNCx0aGlzLnNjcm9sbFZlcnRpY2FsbHkoTS0xKV06WzMsNV07Y2FzZSA0OlQuc2VudCgpLFQubGFiZWw9NTtjYXNlIDU6cmV0dXJuWzJdfX0pfSl9O0gucHJvdG90eXBlLnNjcm9sbExlZnRPclJpZ2h0PWZ1bmN0aW9uKEspe3JldHVybiBiKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3ZhciBNLEwsUTtyZXR1cm4gWGkodGhpcyxmdW5jdGlvbihUKXtzd2l0Y2goVC5sYWJlbCl7Y2FzZSAwOmlmKDE+PXRoaXMucmFua3x8IXRoaXMuY29sc0N1dG9mZilyZXR1cm5bMl07aWYobnVsbD09PXRoaXMuc2xpY2luZ1NwZWMuaG9yaXpvbnRhbFJhbmdlKXRocm93IEVycm9yKCJIb3Jpem9udGFsIHNjcm9sbGluZyBmYWlsZWQgZHVlIHRvIG1pc3NpbmcgaG9yaXpvbnRhbCByYW5nZS4iKTsKTT10aGlzLnNsaWNpbmdTcGVjLmhvcml6b250YWxSYW5nZVswXTtpZihLIT09dy5SSUdIVClyZXR1cm5bMywzXTtMPXRoaXMudG9wUnVsZXJUaWNrcy5sZW5ndGgtMTtRPXRoaXMudGVuc29yVmlldy5zcGVjLnNoYXBlW3RoaXMuc2xpY2luZ1NwZWMudmlld2luZ0RpbXNbMV1dLUw7cmV0dXJuIE08UT9bNCx0aGlzLnNjcm9sbEhvcml6b250YWxseShNKzEpXTpbMywyXTtjYXNlIDE6VC5zZW50KCksVC5sYWJlbD0yO2Nhc2UgMjpyZXR1cm5bMyw1XTtjYXNlIDM6cmV0dXJuIDA8PU0tMT9bNCx0aGlzLnNjcm9sbEhvcml6b250YWxseShNLTEpXTpbMyw1XTtjYXNlIDQ6VC5zZW50KCksVC5sYWJlbD01O2Nhc2UgNTpyZXR1cm5bMl19fSl9KX07SC5wcm90b3R5cGUubmF2aWdhdGVUb0luZGljZXM9ZnVuY3Rpb24oKXtyZXR1cm4gYih0aGlzLHZvaWQgMCx2b2lkIDAsZnVuY3Rpb24oKXtyZXR1cm4gWGkodGhpcyxmdW5jdGlvbigpe3Rocm93IEVycm9yKCJuYXZpZ2F0ZVRvSW5kaWNlcygpIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuIik7Cn0pfSl9O0gucHJvdG90eXBlLmdldFZhbHVlQ2xhc3M9ZnVuY3Rpb24oKXt2YXIgSz10aGlzLnRlbnNvclZpZXcuc3BlYy5kdHlwZTtyZXR1cm4gZChLKXx8ZihLKT8ibnVtZXJpYyI6aChLKT8iYm9vbGVhbiI6InN0cmluZyJ9O3JldHVybiBIfSgpO0Q9T2JqZWN0LmZyZWV6ZSh7dGVuc29yV2lkZ2V0OmZ1bmN0aW9uKEgsSyxNKXtyZXR1cm4gbmV3IE8oSCxLLE0pfSxWRVJTSU9OOiIwLjAuMCJ9KTt3aW5kb3cudGVuc29yX3dpZGdldD1EfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1kZWJ1Z2dlci1kYXNoYm9hcmQvdGYtZGVidWdnZXItbGluZS1jaGFydC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1kZWJ1Z2dlci1saW5lLWNoYXJ0Iixwcm9wZXJ0aWVzOntkYXRhOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsfSxfZGVmYXVsdFNlcmllc05hbWU6e3R5cGU6U3RyaW5nLHZhbHVlOiJfX2RlYnVnZ2VyX2RhdGFfXyIscmVhZG9ubHk6ITB9LF9saW5lQ2hhcnRYQ29tcG9uZW50c0NyZWF0aW9uTWV0aG9kOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCx2YWx1ZTooKT0+KCk9Pntjb25zdCBiPW5ldyBQbG90dGFibGUuU2NhbGVzLkxpbmVhcjtyZXR1cm57c2NhbGU6YixheGlzOm5ldyBQbG90dGFibGUuQXhlcy5OdW1lcmljKGIsImJvdHRvbSIpLGFjY2Vzc29yOmQ9PmQuc3RlcH19fSxfbGluZUNoYXJ0WVZhbHVlQWNjZXNzb3I6e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLHZhbHVlOigpPT5iPT5iLnNjYWxhcn0sX2xpbmVDaGFydFRvb2x0aXBDb2x1bW5zOnt0eXBlOkFycmF5LHJlYWRPbmx5OiEwLHZhbHVlOigpPT5be3RpdGxlOiJOYW1lIixldmFsdWF0ZTpiPT4KInN0ZXBceDNkIitiLmRhdHVtLnN0ZXArIjsgc2NhbGFyXHgzZCAiK2IuZGF0dW0uc2NhbGFyfV19LF9saW5lQ2hhcnRTbW9vdGhpbmdFbmFibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9fSxvYnNlcnZlcnM6WyJyZW5kZXIoZGF0YSkiXSxyZW5kZXIoYil7aWYobnVsbCE9Yil7dmFyIGQ9dGhpcy4kJCgidnotbGluZS1jaGFydDIiKTtkLnNldFZpc2libGVTZXJpZXMoW3RoaXMuX2RlZmF1bHRTZXJpZXNOYW1lXSk7dmFyIGY9W10saD1iLng7Yj1iLnk7Zm9yKGxldCBrPTA7azxoLmxlbmd0aDsrK2spZi5wdXNoKHtzdGVwOmhba10sc2NhbGFyOmJba119KTtkLnNldFNlcmllc0RhdGEodGhpcy5fZGVmYXVsdFNlcmllc05hbWUsZil9fX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi10ZW5zb3ItdmFsdWUtdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi10ZW5zb3ItdmFsdWUtdmlldyIscHJvcGVydGllczp7dmlld0lkOlN0cmluZyx0ZW5zb3JOYW1lOlN0cmluZyxkZWJ1Z09wOlN0cmluZyxkZXZpY2VOYW1lOlN0cmluZyxtYXliZUJhc2VFeHBhbmRlZE5vZGVOYW1lOlN0cmluZyxzbGljaW5nOlN0cmluZyx0aW1lSW5kaWNlczpTdHJpbmcsZHR5cGU6U3RyaW5nLHNoYXBlOkFycmF5LGNvbnRpbnVlVG9CdXR0b25DYWxsYmFjazpPYmplY3QsY2xvc2VCdXR0b25DYWxsYmFjazpPYmplY3QsdGVuc29yTmFtZUNhbGxiYWNrOk9iamVjdCx0ZW5zb3JXaWRnZXQ6T2JqZWN0LGdldEhlYWx0aFBpbGw6RnVuY3Rpb24sX2lzVGVuc29yVmFsdWVTY2FsYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2lzVGVuc29yVmFsdWVMaW5lQ2hhcnQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2lzVGVuc29yVmFsdWVJbWFnZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfZGF0YVNjYWxhcjp7dHlwZTpOdW1iZXIsdmFsdWU6bnVsbH0sCl9saW5lQ2hhcnREYXRhOnt0eXBlOkFycmF5LHZhbHVlOm51bGx9LF9kYXRhSW1hZ2VTcmM6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcigxMCl9fSxvYnNlcnZlcnM6WyJfdXBkYXRlVGltZUluZGljZXNUb2dnbGUodGltZUluZGljZXMpIl0scmVuZGVyVGVuc29yVmFsdWUoKXtpZih0aGlzLnRlbnNvck5hbWUpaWYobnVsbD09dGhpcy5zbGljaW5nKXt0aGlzLnNldCgiX3VzZVRlbnNvcldpZGdldCIsITApO2NvbnN0IGQ9e3NwZWM6e2R0eXBlOnRoaXMuZHR5cGUsc2hhcGU6dGhpcy5zaGFwZX0sZ2V0OigpPT57dGhyb3cgRXJyb3IoInRlbnNvclZpZXcuZ2V0KCkgaXMgbm90IGltcGxlbWVudGVkIHlldC4iKTt9LHZpZXc6Zj0+e2NvbnN0IGg9dGhpcztyZXR1cm4gaGMoZnVuY3Rpb24qKCl7Y29uc3Qgaz1oLnNoYXBlLmxlbmd0aCx0PWYuc2xpY2luZ0RpbXNBbmRJbmRpY2VzLm1hcChtPT4KbS5kaW0pLGw9Zi5zbGljaW5nRGltc0FuZEluZGljZXMubWFwKG09Pm0uaW5kZXgpO2xldCBwPSJbIjtmb3IobGV0IG09MDttPGs7KyttKS0xIT09dC5pbmRleE9mKG0pP3ArPWAke2xbdC5pbmRleE9mKG0pXX1gOmYudmlld2luZ0RpbXNbMF09PT1tP3ArPWAke2YudmVydGljYWxSYW5nZVswXX06JHtmLnZlcnRpY2FsUmFuZ2VbMV19YDpmLnZpZXdpbmdEaW1zWzFdPT09bSYmKHArPWAke2YuaG9yaXpvbnRhbFJhbmdlWzBdfToke2YuaG9yaXpvbnRhbFJhbmdlWzFdfWApLG08ay0xJiYocCs9IiwiKTtwKz0iXSI7cmV0dXJuIG5ldyBQcm9taXNlKChtLG4pPT57Y29uc3QgcT1oLl9nZXRUZW5zb3JEYXRhVVJMKHt3YXRjaF9rZXk6aC50ZW5zb3JOYW1lKyI6IitoLmRlYnVnT3Asc2xpY2luZzpwLHRpbWVfaW5kaWNlczpoLnRpbWVJbmRpY2VzLG1hcHBpbmc6Im5vbmUifSk7aC5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChxKS50aGVuKHU9PntudWxsPT11LmVycm9yP20odS50ZW5zb3JfZGF0YVt1LnRlbnNvcl9kYXRhLmxlbmd0aC0KMV0pOm4odS5lcnJvcil9KS5jYXRjaCh1PT5uKHUpKX0pfSl9LGdldE51bWVyaWNTdW1tYXJ5OigpPT57Y29uc3QgZj10aGlzO3JldHVybiBoYyhmdW5jdGlvbiooKXtyZXR1cm4gbmV3IFByb21pc2UoKGgsayk9Pntjb25zdCB0PWYudGVuc29yTmFtZSsiOiIrZi5kZWJ1Z09wO2YuZ2V0SGVhbHRoUGlsbCh0LGYuZGV2aWNlTmFtZSxmLm1heWJlQmFzZUV4cGFuZGVkTm9kZU5hbWUsbD0+e251bGw9PWw/ayhgRmFpbGVkIHRvIGdldCBoZWFsdGggcGlsbCBmb3Igd2F0Y2gga2V5ICR7dH1gKTpoKHtlbGVtZW50Q291bnQ6bFsxXSxtaW5pbXVtOmxbOF0sbWF4aW11bTpsWzldfSl9KX0pfSl9fTtzZXRUaW1lb3V0KCgpPT57bnVsbD09dGhpcy50ZW5zb3JXaWRnZXQmJih0aGlzLnRlbnNvcldpZGdldD10ZW5zb3Jfd2lkZ2V0LnRlbnNvcldpZGdldCh0aGlzLiQkKCIjdGVuc29yLXdpZGdldCIpLGQse3doZWVsWm9vbUtleToiYWx0In0pKTt0aGlzLnRlbnNvcldpZGdldC5yZW5kZXIoKX0sCjEwKX1lbHNle3RoaXMuc2V0KCJfdXNlVGVuc29yV2lkZ2V0IiwhMSk7dmFyIGI9dGhpcy5fcmFua0Zyb21TbGljaW5nKHRoaXMuc2xpY2luZy50cmltKCkpO2NvbnN0IGQ9dGhpcy5faXNUaW1lSW5kaWNlc1NpbmdsZVN0ZXAodGhpcy50aW1lSW5kaWNlcyk7bGV0IGY9YjtpZighZCl7aWYoMTxiKXt0aGlzLl9zaG93VG9hc3QoIkhpc3RvcnkgZm9yIHRlbnNvcnMgXHgzZSAxRCBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTtyZXR1cm59Zis9MX1iPXRoaXMuX2dldFRlbnNvckRhdGFVUkwoe3dhdGNoX2tleTp0aGlzLnRlbnNvck5hbWUrIjoiK3RoaXMuZGVidWdPcCxzbGljaW5nOnRoaXMuc2xpY2luZyx0aW1lX2luZGljZXM6dGhpcy50aW1lSW5kaWNlcyxtYXBwaW5nOjI8PWY/ImltYWdlL3BuZyI6Im5vbmUifSk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKS50aGVuKGg9Pnt0aGlzLiQkKCIjZGVidWctb3AiKS50ZXh0Q29udGVudD10aGlzLl9jYWxjdWxhdGVEZWJ1Z09wVG9EaXNwbGF5KCk7CmlmKG51bGwhPWguZXJyb3IpdGhpcy5fc2hvd1RvYXN0KGguZXJyb3IudHlwZSsiOiAiK2guZXJyb3IubWVzc2FnZSk7ZWxzZSBpZihoPWQ/aC50ZW5zb3JfZGF0YVswXTpoLnRlbnNvcl9kYXRhLDA9PT1mKXRoaXMuX3NldFZpc3VhbGl6YXRpb25UeXBlKCJzY2FsYXIiKSx0aGlzLnNldCgiX2RhdGFTY2FsYXIiLGgpO2Vsc2UgaWYoMT09PWYpe3RoaXMuX3NldFZpc3VhbGl6YXRpb25UeXBlKCJsaW5lQ2hhcnQiKTtsZXQgaz17eDpbXSx5Omh9O2ZvcihsZXQgdD0wO3Q8aC5sZW5ndGg7Kyt0KWsueC5wdXNoKHQrMSk7dGhpcy5zZXQoIl9saW5lQ2hhcnREYXRhIixrKX1lbHNlIDI8PWY/KHRoaXMuX3NldFZpc3VhbGl6YXRpb25UeXBlKCJpbWFnZSIpLHRoaXMuc2V0KCJfZGF0YUltYWdlU3JjIiwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LCIraCkpOnRoaXMuX3Nob3dUb2FzdCgiVmlzdWFsaXphdGlvbiBvZiByYW5rLSIrZisiIHRlbnNvcnMgaXMgbm90IHlldCBzdXBwb3J0ZWQuIil9KX19LApyZWZyZXNoKCl7dGhpcy50ZW5zb3JOYW1lLnRyaW0oKSYmdGhpcy5yZW5kZXJUZW5zb3JWYWx1ZSgpfSxfZ2V0VGVuc29yRGF0YVVSTChiKXtjb25zdCBkPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsIi90ZW5zb3JfZGF0YSIpO3JldHVybiB2Yy5hZGRQYXJhbXMoZCxiKX0sX3JhbmtGcm9tU2xpY2luZyhiKXtiLnN0YXJ0c1dpdGgoIlsiKSYmKGI9Yi5zbGljZSgxLGIubGVuZ3RoLTEpKTtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIDA7e2I9Yi5zcGxpdCgiLCIpO2xldCBkPWIubGVuZ3RoO2Zvcihjb25zdCBmIG9mIGIpaXNOYU4oTnVtYmVyKGYpKXx8ZC0tO3JldHVybiBkfX0sX3NldFZpc3VhbGl6YXRpb25UeXBlKGIpeyJzY2FsYXIiPT09Yj8odGhpcy5zZXQoIl9pc1ZhbHVlU2NhbGFyIiwhMCksdGhpcy5zZXQoIl9pc1ZhbHVlTGluZUNoYXJ0IiwhMSksdGhpcy5zZXQoIl9pc1ZhbHVlSW1hZ2UiLCExKSk6ImxpbmVDaGFydCI9PT1iPyh0aGlzLnNldCgiX2lzVmFsdWVTY2FsYXIiLAohMSksdGhpcy5zZXQoIl9pc1ZhbHVlTGluZUNoYXJ0IiwhMCksdGhpcy5zZXQoIl9pc1ZhbHVlSW1hZ2UiLCExKSk6ImltYWdlIj09PWI/KHRoaXMuc2V0KCJfaXNWYWx1ZVNjYWxhciIsITEpLHRoaXMuc2V0KCJfaXNWYWx1ZUxpbmVDaGFydCIsITEpLHRoaXMuc2V0KCJfaXNWYWx1ZUltYWdlIiwhMCkpOmNvbnNvbGUuZXJyb3IoIkludmFsaWQgdmlzdWFsaXphdGlvblR5cGU6IixiKX0sX3RpbWVJbmRpY2VzVG9nZ2xlQnV0dG9uQ2FsbGJhY2soKXsiZnVsbCBoaXN0b3J5Ij09PVBvbHltZXIuZG9tKHRoaXMuJCQoIiN0aW1lLWluZGljZXMtdG9nZ2xlLWJ1dHRvbiIpKS50ZXh0Q29udGVudC50b0xvd2VyQ2FzZSgpP3RoaXMuc2V0KCJ0aW1lSW5kaWNlcyIsIjoiKTp0aGlzLnNldCgidGltZUluZGljZXMiLCItMSIpO3RoaXMucmVuZGVyVGVuc29yVmFsdWUoKX0sX3VwZGF0ZVRpbWVJbmRpY2VzVG9nZ2xlKGIpe3RoaXMuX2lzVGltZUluZGljZXNTaW5nbGVTdGVwKGIpP1BvbHltZXIuZG9tKHRoaXMuJCQoIiN0aW1lLWluZGljZXMtdG9nZ2xlLWJ1dHRvbiIpKS50ZXh0Q29udGVudD0KIkZ1bGwgSGlzdG9yeSI6UG9seW1lci5kb20odGhpcy4kJCgiI3RpbWUtaW5kaWNlcy10b2dnbGUtYnV0dG9uIikpLnRleHRDb250ZW50PSJMYXRlc3QgVGltZSBQb2ludCJ9LF9pc1RpbWVJbmRpY2VzU2luZ2xlU3RlcChiKXtiLnN0YXJ0c1dpdGgoIlsiKSYmKGI9Yi5zbGljZSgxLGIubGVuZ3RoLTEpKTtyZXR1cm4haXNOYU4oTnVtYmVyKGIpKX0sX2NhbGN1bGF0ZURlYnVnT3BUb0Rpc3BsYXkoKXtyZXR1cm4iRGVidWdJZGVudGl0eSI9PT10aGlzLmRlYnVnT3A/IiI6dGhpcy5kZWJ1Z09wfSxfc2hvd1RvYXN0KGIpe3RoaXMuJC50ZW5zb3JWYWx1ZVRvYXN0LnNldEF0dHJpYnV0ZSgidGV4dCIsYik7dGhpcy4kLnRlbnNvclZhbHVlVG9hc3Qub3BlbigpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC90Zi10ZW5zb3ItdmFsdWUtbXVsdGktdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi10ZW5zb3ItdmFsdWUtbXVsdGktdmlldyIscHJvcGVydGllczp7Y29udGludWVUb0NhbGxiYWNrOkZ1bmN0aW9uLHRlbnNvck5hbWVDbGlja2VkOkZ1bmN0aW9uLF90ZW5zb3JWaWV3Q291bnRlcjp7dHlwZTpOdW1iZXIsdmFsdWU6MH0sZ2V0SGVhbHRoUGlsbDpGdW5jdGlvbn0sYWRkVmlldyhiKXtjb25zdCBkPXRoaXMuJCQoIiNtdWx0aS10ZW5zb3Itdmlldy1jb250YWluZXIiKSxmPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRmLXRlbnNvci12YWx1ZS12aWV3Iik7Zi5zZXRBdHRyaWJ1dGUoImNsYXNzIiwiZGVidWdnZXItdGVuc29yLXZpZXciKTtmLnZpZXdJZD1iLnZpZXdJZDtmLnRlbnNvck5hbWU9Yi50ZW5zb3JOYW1lO2YuZGVidWdPcD1iLmRlYnVnT3A7Zi5kZXZpY2VOYW1lPWIuZGV2aWNlTmFtZTtmLm1heWJlQmFzZUV4cGFuZGVkTm9kZU5hbWU9Yi5tYXliZUJhc2VFeHBhbmRlZE5vZGVOYW1lO2YuZHR5cGU9Yi5kdHlwZTtmLnNoYXBlPWIuc2hhcGU7CmYuc2xpY2luZz1iLnNsaWNpbmc7Zi50aW1lSW5kaWNlcz1iLnRpbWVJbmRpY2VzO2YuY2xvc2VCdXR0b25DYWxsYmFjaz10aGlzLl9jcmVhdGVDbG9zZUJ1dHRvbkNhbGxiYWNrKGIudmlld0lkKTtmLmNvbnRpbnVlVG9CdXR0b25DYWxsYmFjaz0oKT0+e3RoaXMuY29udGludWVUb0NhbGxiYWNrKGIuZGV2aWNlTmFtZSxiLm1heWJlQmFzZUV4cGFuZGVkTm9kZU5hbWUpfTtmLnRlbnNvck5hbWVDYWxsYmFjaz0oKT0+e3RoaXMudGVuc29yTmFtZUNsaWNrZWQoYi5kZXZpY2VOYW1lLGIubWF5YmVCYXNlRXhwYW5kZWROb2RlTmFtZSl9O2YuZ2V0SGVhbHRoUGlsbD10aGlzLmdldEhlYWx0aFBpbGw7ZC5hcHBlbmRDaGlsZChmKTtmLnJlZnJlc2goKX0sZ2V0Vmlld3MoKXtjb25zdCBiPVtdO18uZm9yRWFjaCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmRlYnVnZ2VyLXRlbnNvci12aWV3IiksZD0+e2IucHVzaCh7dmlld0lkOmQudmlld0lkLHRlbnNvck5hbWU6ZC50ZW5zb3JOYW1lLApkZWJ1Z09wOmQuZGVidWdPcCxzbGljaW5nOmQuc2xpY2luZyx0aW1lSW5kaWNlczpkLnRpbWVJbmRpY2VzfSl9KTtyZXR1cm4gYn0scmVuZGVyVGVuc29yVmFsdWVzKCl7Xy5mb3JFYWNoKHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCIuZGVidWdnZXItdGVuc29yLXZpZXciKSxiPT57Yi5yZW5kZXJUZW5zb3JWYWx1ZSgpfSl9LF9yZWRyYXdWaWV3cyhiKXtjb25zdCBkPXRoaXMuJCQoIiNtdWx0aS10ZW5zb3Itdmlldy1jb250YWluZXIiKTtfLmZvckVhY2godGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5kZWJ1Z2dlci10ZW5zb3ItdmlldyIpLGY9PntkLnJlbW92ZUNoaWxkKGYpfSk7Xy5mb3JFYWNoKGIsZj0+e3RoaXMuYWRkVmlldyhmKX0pfSxfY3JlYXRlQ2xvc2VCdXR0b25DYWxsYmFjayhiKXtyZXR1cm4oKT0+e2NvbnN0IGQ9W10sZj10aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgiLmRlYnVnZ2VyLXRlbnNvci12aWV3Iik7Zm9yKGxldCBoPTA7aDxmLmxlbmd0aDsrK2gpe2NvbnN0IGs9CmZbaF07ay52aWV3SWQhPT1iJiZkLnB1c2goe3ZpZXdJZDprLnZpZXdJZCx0ZW5zb3JOYW1lOmsudGVuc29yTmFtZSxkZWJ1Z09wOmsuZGVidWdPcCxkdHlwZTprLmR0eXBlLHNoYXBlOmsuc2hhcGUsc2xpY2luZzprLnNsaWNpbmcsdGltZUluZGljZXM6ay50aW1lSW5kaWNlc30pfXRoaXMuX3JlZHJhd1ZpZXdzKGQpfX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1kZWJ1Z2dlci1kYXNoYm9hcmQvdGVuc29yLXNoYXBlLWhlbHBlci5qcwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChmLGgpe3JldHVybiBmPD1oPyI6OiI6Ijo6IitNYXRoLmNlaWwoZi9oKX1iLmdldERlZmF1bHRTbGljaW5nPWZ1bmN0aW9uKGYpe3JldHVybiAwPT09Zi5sZW5ndGg/IiI6MT09PWYubGVuZ3RoPyJbIitkKGZbMF0sMUUzKSsiXSI6Mj09PWYubGVuZ3RoPyJbIitkKGZbMF0sMjUwKSsiLCAiK2QoZlsxXSwyNTApKyJdIjpudWxsfTtiLnJhbmtGcm9tU2xpY2luZz1mdW5jdGlvbihmKXtmLnN0YXJ0c1dpdGgoIlsiKSYmKGY9Zi5zbGljZSgxLGYubGVuZ3RoLTEpKTtpZigwPT09Zi5sZW5ndGgpcmV0dXJuIDA7e2Y9Zi5zcGxpdCgiLCIpO2xldCBoPWYubGVuZ3RoO2Zvcihjb25zdCBrIG9mIGYpaXNOYU4oTnVtYmVyKGspKXx8aC0tO3JldHVybiBofX19KShWaXx8KFZpPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZGVidWdnZXItZGFzaGJvYXJkL3RmLWRlYnVnZ2VyLWRhc2hib2FyZC5odG1sLmpzCmNvbnN0IFppPSgpPT53aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0LEhrPSgpPT53aW5kb3cuaW5uZXJXaWR0aHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRofHxkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoLElrPShaaSgpLTcwKS8yOwpQb2x5bWVyKHtpczoidGYtZGVidWdnZXItZGFzaGJvYXJkIixwcm9wZXJ0aWVzOntfdG9wUmlnaHRUYWJzOnt0eXBlOkFycmF5LHZhbHVlOlt7aWQ6InRhYi1ydW50aW1lLWdyYXBocyIsbmFtZToiUnVudGltZSBHcmFwaHMifSx7aWQ6InRhYi10ZW5zb3ItdmFsdWVzIixuYW1lOiJUZW5zb3IgVmFsdWVzIn1dLHJlYWRvbmx5OiEwfSxfaXNUb3BSaWdodFJ1bnRpbWVHcmFwaHNBY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0sX2lzVG9wUmlnaHRUZW5zb3JWYWx1ZXNBY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3RvcFJpZ2h0U2VsZWN0ZWQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIwIixvYnNlcnZlcjoiX3RvcFJpZ2h0U2VsZWN0ZWRDaGFuZ2VkIn0sX2xvbmdQb2xsQ291bnQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zdGVwQnV0dG9uVGV4dDp7dHlwZTpTdHJpbmcsdmFsdWU6IlN0ZXAifSxfY29udGludWVCdXR0b25UZXh0Ont0eXBlOlN0cmluZyx2YWx1ZToiQ29udGludWUuLi4ifSwKX3RlbnNvclZpZXdJZENvdW50ZXI6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LGlzUmVsb2FkRGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxyZWFkT25seTohMH0sYWxyZWFkeVN0YXJ0ZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2N1cnJlbnRTZXNzaW9uUnVuSW5mbzp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX3Nlc3Npb25SdW5Ub3RhbENvdW50ZXI6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9zZXNzaW9uUnVuQ291bnRlcnM6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfc2Vzc2lvblJ1bktleTJEZXZpY2VOYW1lczp7dHlwZTpPYmplY3QsdmFsdWU6e319LF9hY3RpdmVTZXNzaW9uUnVuS2V5Ont0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxfYWN0aXZlU2Vzc2lvblJ1bkRldmljZXM6e3R5cGU6QXJyYXksdmFsdWU6W119LF9hY3RpdmVTZXNzaW9uUnVuTnVtRGV2aWNlczp7dHlwZTpOdW1iZXIsdmFsdWU6LTF9LF9hY3RpdmVSdW50aW1lR3JhcGhEZXZpY2VOYW1lOnt0eXBlOlN0cmluZywKdmFsdWU6bnVsbCxub3RpZnk6ITB9LF9oaWdobGlnaHROb2RlTmFtZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX2NvbnRpbnVlVG9UeXBlOnt0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2NvbnRpbnVlVG9Db3VudGVyOnt0eXBlOk51bWJlcix2YWx1ZTowfSxfY29udGludWVTdG9wOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9jb250aW51ZVRvVGFyZ2V0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sX2NvbnRpbnVlVG9Db3VudGVyVGFyZ2V0Ont0eXBlOk51bWJlcix2YWx1ZTotMX0sX2ZvcmNlRXhwYW5kQW5kQ2hlY2tOb2RlTmFtZTpTdHJpbmcsX2ZvcmNlRXhwYW5kTm9kZU5hbWU6U3RyaW5nLF9zb3VyY2VGb2N1c05vZGVOYW1lOlN0cmluZyxfc291cmNlQ29kZVNob3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9zaG93U291cmNlQ29kZUNoYW5nZWQifSxfZ3JhcGhQcm9ncmVzczp7dHlwZTpPYmplY3R9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9PgpuZXcgdmMuUmVxdWVzdE1hbmFnZXIoNTApfSxfYnVzeTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfbGVmdFBhbmVXaWR0aDp7dHlwZTpOdW1iZXIsdmFsdWU6cGQuZ2V0TnVtYmVySW5pdGlhbGl6ZXIoIl9sZWZ0UGFuZVdpZHRoIix7ZGVmYXVsdFZhbHVlOjQ1MH0pLG9ic2VydmVyOiJfbGVmdFBhbmVXaWR0aE9ic2VydmVyIn0sX21pbmxlZnRQYW5lV2lkdGg6e3R5cGU6TnVtYmVyLHZhbHVlOjQ1MCxyZWFkT25seTohMH0sX21heGxlZnRQYW5lV2lkdGg6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZU1heGxlZnRQYW5lV2lkdGgoX3dpbmRvd1dpZHRoLCBfbWF4TWFpbkNvbnRlbnRXaWR0aCwgX3Jlc2l6ZXJXaWR0aCkifSxfbWF4TWFpbkNvbnRlbnRXaWR0aDp7dHlwZTpOdW1iZXIsdmFsdWU6MzUwLHJlYWRPbmx5OiEwfSxfdG9wUmlnaHRRdWFkcmFudEhlaWdodDp7dHlwZTpOdW1iZXIsdmFsdWU6cGQuZ2V0TnVtYmVySW5pdGlhbGl6ZXIoIl90b3BSaWdodFF1YWRyYW50SGVpZ2h0IiwKe2RlZmF1bHRWYWx1ZTpJa30pLG9ic2VydmVyOiJfdG9wUmlnaHRRdWFkcmFudEhlaWdodE9ic2VydmVyIn0sX21pblRvcFJpZ2h0UXVhZHJhbnRIZWlnaHQ6e3R5cGU6TnVtYmVyLHZhbHVlOjIwMCxyZWFkT25seTohMH0sX21heFRvcFJpZ2h0UXVhZHJhbnRIZWlnaHQ6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZU1heFRvcFJpZ2h0UXVhZHJhbnRIZWlnaHQoX3dpbmRvd0hlaWdodCwgX3Jlc2l6ZXJXaWR0aCkifSxfcmVzaXplcldpZHRoOnt0eXBlOk51bWJlcix2YWx1ZTozMCxyZWFkT25seTohMH0sX3dpbmRvd1dpZHRoOk51bWJlcixfd2luZG93SGVpZ2h0Ok51bWJlcixfZGVidWdXYXRjaGVzOkFycmF5LF9sYXRlc3RTZXNzaW9uUnVuOk9iamVjdH0sb2JzZXJ2ZXJzOlsiX29uQWN0aXZlUnVudGltZUdyYXBoRGV2aWNlTmFtZUNoYW5nZShfYWN0aXZlUnVudGltZUdyYXBoRGV2aWNlTmFtZSkiLCJfc2l6ZURhc2hib2FyZFJlZ2lvbnMoX2xlZnRQYW5lV2lkdGgsIF90b3BSaWdodFF1YWRyYW50SGVpZ2h0LCBfd2luZG93V2lkdGgpIiwKIl9ncmFwaFByb2dyZXNzVXBkYXRlZChfZ3JhcGhQcm9ncmVzcykiXSxyZWFkeSgpe3RoaXMuX2hhbmRsZVdpbmRvd1Jlc2l6ZSgpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCgpPT57dGhpcy5faGFuZGxlV2luZG93UmVzaXplKCl9LCExKTt0aGlzLnJlbG9hZCgpfSxsb25nX3BvbGwoKXtjb25zdCBiPXtwb3M6Kyt0aGlzLl9sb25nUG9sbENvdW50fTtsZXQgZD12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiZGVidWdnZXIiLCIvY29tbSIpO2Q9dmMuYWRkUGFyYW1zKGQsYik7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChkKS50aGVuKGY9Pntjb25zdCBoPWYudHlwZTtmPWYuZGF0YTtpZigibWV0YSI9PT1oKXt2YXIgaz1mLnJ1bl9rZXksdD1rWzBdLnNwbGl0KCIsIiksbD1rWzFdLnNwbGl0KCIsIik7Y29uc3QgbT1rWzJdLnNwbGl0KCIsIik7dmFyIHA9dGhpcy5fYWN0aXZlU2Vzc2lvblJ1bktleTt0aGlzLnNldCgiX2FjdGl2ZVNlc3Npb25SdW5LZXkiLAprKTt0aGlzLnNldCgiX2xhdGVzdFNlc3Npb25SdW4iLHtmZWVkczp0LGZldGNoZXM6bCx0YXJnZXRzOm19KTt0aGlzLnNldCgiX3Nlc3Npb25SdW5Tb2xlQWN0aXZlIiwhMCk7dm9pZCAwPT09dGhpcy5fc2Vzc2lvblJ1bktleTJEZXZpY2VOYW1lc1trXT8odGhpcy5fc2Vzc2lvblJ1bktleTJEZXZpY2VOYW1lc1trXT1bXSx0aGlzLnNldCgiX2FjdGl2ZVNlc3Npb25SdW5EZXZpY2VzIixbXSkpOnRoaXMuc2V0KCJfYWN0aXZlU2Vzc2lvblJ1bkRldmljZXMiLHRoaXMuX3Nlc3Npb25SdW5LZXkyRGV2aWNlTmFtZXNba10pO3RoaXMuX2N1cnJlbnRTZXNzaW9uUnVuSW5mbz10PSJGZWVkczogIit0KyI7IEZldGNoZXM6ICIrbCsiOyBUYXJnZXRzOiAiK207dGhpcy5fc2Vzc2lvblJ1bkNvdW50ZXJzLmhhc093blByb3BlcnR5KHQpP3RoaXMuX3Nlc3Npb25SdW5Db3VudGVyc1t0XSs9MTp0aGlzLl9zZXNzaW9uUnVuQ291bnRlcnNbdF09MTt0aGlzLl9zZXNzaW9uUnVuVG90YWxDb3VudGVyKys7CnRoaXMuJC5pbml0aWFsRGlhbG9nLmNsb3NlRGlhbG9nKCk7dGhpcy5fY29udGludWVUb1R5cGUmJl8uaXNFcXVhbChwLGspfHwodGhpcy5fcHJvY2Vzc0dhdGVkR3JwY0RlYnVnT3BzKGssITEpLHRoaXMuX2Fubm91bmNlTmV3U2Vzc2lvblJ1bigpKX1lbHNlInRlbnNvciI9PT1oPyhrPWYuZGV2aWNlX25hbWUscD1mLm5vZGVfbmFtZSx0PWYubWF5YmVfYmFzZV9leHBhbmRlZF9ub2RlX25hbWUsdGhpcy5fYWN0aXZlUnVudGltZUdyYXBoRGV2aWNlTmFtZSE9az90aGlzLnNldCgiX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUiLGspOiF0aGlzLl9jb250aW51ZVRvVHlwZSYmdGhpcy5faXNUb3BSaWdodFJ1bnRpbWVHcmFwaHNBY3RpdmUmJih0aGlzLl9mb2N1c09uR3JhcGhOb2RlKGssdCksdGhpcy5zZXQoIl9mb3JjZUV4cGFuZE5vZGVOYW1lIixrKyIvIit0KSksdGhpcy5zZXQoIl9zZXNzaW9uUnVuU29sZUFjdGl2ZSIsITEpLGw9cCsiOiIrZi5vdXRwdXRfc2xvdCx0aGlzLnNldCgiX2xhdGVzdFRlbnNvckRhdGEiLAp7ZGV2aWNlTmFtZTprLHRlbnNvck5hbWU6bCxub2RlTmFtZTpwLG1heWJlQmFzZUV4cGFuZGVkTm9kZU5hbWU6dCxkZWJ1Z09wOmYuZGVidWdfb3AsZHR5cGU6Zi5kdHlwZSxzaGFwZTpmLnNoYXBlLHZhbHVlOmYudmFsdWVzfSksdGhpcy5fbWF5YmVVcGRhdGVUZW5zb3JWYWx1ZVZpZXdzKGwsZi5kZWJ1Z19vcCksdGhpcy5zZXQoIl9idXN5IiwhMSkpOmNvbnNvbGUuZXJyb3IoIkludmFsaWQgbG9uZy1wb2xsaW5nIHJlc3BvbnNlIHR5cGU6ICIsaCk7bnVsbCE9dGhpcy5fY29udGludWVUb1R5cGUmJnRoaXMuX3Byb2Nlc3NDb250aW51ZVRvKGgsZik7dGhpcy5sb25nX3BvbGwoKX0pfSxfcHJvY2Vzc0NvbnRpbnVlVG8oYixkKXt0aGlzLl9jb250aW51ZVN0b3A/dGhpcy5fY2xlYXJDb250aW51ZVRvKCk6IlNlc3Npb25SdW4iPT09dGhpcy5fY29udGludWVUb1R5cGU/dGhpcy5fcHJvY2Vzc0NvbnRpbnVlVG9TZXNzaW9uUnVuKCJtZXRhIj09PWIpOiJUZW5zb3JDb25kaXRpb24iPT09CnRoaXMuX2NvbnRpbnVlVG9UeXBlP3RoaXMuX3N0ZXAoKToib3AiPT09dGhpcy5fY29udGludWVUb1R5cGU/dGhpcy5fcHJvY2Vzc0NvbnRpbnVlVG9PcCgibWV0YSI9PT1iLGQpOm51bGwhPXRoaXMuX2NvbnRpbnVlVG9UeXBlJiYiIiE9PXRoaXMuX2NvbnRpbnVlVG9UeXBlJiZjb25zb2xlLmVycm9yKCJJbnZhbGlkIF9jb250aW51ZVRvVHlwZToiLHRoaXMuX2NvbnRpbnVlVG9UeXBlKX0sX3Byb2Nlc3NDb250aW51ZVRvU2Vzc2lvblJ1bihiKXtiJiZ0aGlzLnNldCgiX2NvbnRpbnVlVG9Db3VudGVyIix0aGlzLl9jb250aW51ZVRvQ291bnRlcisxKTt0aGlzLl9jb250aW51ZVRvQ291bnRlcjx0aGlzLl9jb250aW51ZVRvQ291bnRlclRhcmdldD90aGlzLl9zdGVwKCk6dGhpcy5fY2xlYXJDb250aW51ZVRvKCl9LF9wcm9jZXNzQ29udGludWVUb09wKGIsZCl7YiYmdGhpcy5fYW5ub3VuY2VOZXdTZXNzaW9uUnVuKCk7Yj1kLmRldmljZV9uYW1lO2Q9ZC5tYXliZV9iYXNlX2V4cGFuZGVkX25vZGVfbmFtZTsKY29uc3QgZj1udWxsPT1kP251bGw6VmkucmVtb3ZlTm9kZU5hbWVCYXNlRXhwYW5zaW9uKGQpO2IrIi8iK2Q9PT10aGlzLl9jb250aW51ZVRvVGFyZ2V0fHxiKyIvIitmPT09dGhpcy5fY29udGludWVUb1RhcmdldD8odGhpcy5fY2xlYXJDb250aW51ZVRvKCksdGhpcy5fc291cmNlQ29kZVNob3duJiZ0aGlzLnNldCgiX3NvdXJjZUZvY3VzTm9kZU5hbWUiLGYpKTp0aGlzLl9zdGVwKCl9LF9tYXliZVVwZGF0ZVRlbnNvclZhbHVlVmlld3MoYixkKXtjb25zdCBmPXRoaXMuJCQoIiN0ZW5zb3JWYWx1ZU11bHRpVmlldyIpO2lmKG51bGwhPWYpe3ZhciBoPSExO18uZm9yRWFjaChmLmdldFZpZXdzKCksaz0+e2lmKGsudGVuc29yTmFtZT09PWImJmsuZGVidWdPcD09PWQpcmV0dXJuIGg9ITAsITF9KTtoJiZmLnJlbmRlclRlbnNvclZhbHVlcygpfX0scmVsb2FkKCl7aWYoIXRoaXMuYWxyZWFkeVN0YXJ0ZWQpe3RoaXMuc2V0KCJhbHJlYWR5U3RhcnRlZCIsITApO3ZhciBiPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJkZWJ1Z2dlciIsCiIvZGVidWdnZXJfZ3JwY19ob3N0X3BvcnQiKTt0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGIpLnRoZW4oZD0+ezA8ZC5wb3J0Pyh0aGlzLiQuaW5pdGlhbERpYWxvZy5vcGVuRGlhbG9nKGQuaG9zdCxkLnBvcnQpLHRoaXMubG9uZ19wb2xsKCkpOnRoaXMuJC5pbml0aWFsRGlhbG9nLm9wZW5EaXNhYmxlZERpYWxvZygpfSl9fSxfc2hvd1NvdXJjZUNvZGVDaGFuZ2VkKCl7dGhpcy5fc291cmNlQ29kZVNob3duPyh0aGlzLiQkKCIjbm9kZS1lbnRyaWVzIikuc3R5bGUuaGVpZ2h0PSI0MCUiLHRoaXMuJC5zb3VyY2VDb2RlVmlldy5yZW5kZXIoKSk6dGhpcy4kJCgiI25vZGUtZW50cmllcyIpLnN0eWxlLmhlaWdodD0iODAlIn0sX3Nob3dUb2FzdChiKXt0aGlzLiQudG9hc3Quc2V0QXR0cmlidXRlKCJ0ZXh0IixiKTt0aGlzLiQudG9hc3Qub3BlbigpfSxfYW5ub3VuY2VOZXdTZXNzaW9uUnVuKCl7dGhpcy5fc2hvd1RvYXN0KCJTZXNzaW9uLnJ1bigpICMiK3RoaXMuX3Nlc3Npb25SdW5Ub3RhbENvdW50ZXIrCiIgaXMgc3RhcnRpbmcuIil9LF9kaXNwbGF5R3JhcGgoYixkKXtiPXtydW5fa2V5OkpTT04uc3RyaW5naWZ5KGIpLGRldmljZV9uYW1lOmR9O2I9dmMuYWRkUGFyYW1zKCIvZGF0YS9wbHVnaW4vZGVidWdnZXIvZGVidWdnZXJfZ3JhcGgiLGIpO3RoaXMuJC5sb2FkZXIuZGF0YXNldHM9W3tuYW1lOiIvZGVidWdnZXJfZ3JhcGgiLHBhdGg6Yn1dO3RoaXMuJC5sb2FkZXIuc2V0KCJzZWxlY3RlZERhdGFzZXQiLDApfSxfcHJvY2Vzc0dhdGVkR3JwY0RlYnVnT3BzKGIsZCl7ZD9jb25zb2xlLmxvZygiUG9sbGluZyBmb3IgZmlyc3QgR3JhcGhEZWYgZm9yIHJ1biBrZXk6IixiKTp0aGlzLnNldCgiX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUiLG51bGwpO3ZhciBmPXttb2RlOiJyZXRyaWV2ZV9hbGwiLHJ1bl9rZXk6SlNPTi5zdHJpbmdpZnkoYil9O2NvbnN0IGg9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2dhdGVkX2dycGMiKTtmPXZjLmFkZFBhcmFtcyhoLApmKTtsZXQgaz1bXTt0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGYpLnRoZW4odD0+e2lmKDA9PXQuZGV2aWNlX25hbWVzLmxlbmd0aClkfHx0aGlzLl9zdGVwKCksdGhpcy5fcHJvY2Vzc0dhdGVkR3JwY0RlYnVnT3BzKGIsITApO2Vsc2V7dmFyIGw9bnVsbDtmb3IoY29uc3QgcCBpbiB0LmdhdGVkX2dycGNfdGVuc29ycylpZih0LmdhdGVkX2dycGNfdGVuc29ycy5oYXNPd25Qcm9wZXJ0eShwKSl7LTE9PT10aGlzLl9zZXNzaW9uUnVuS2V5MkRldmljZU5hbWVzW2JdLmluZGV4T2YocCkmJih0aGlzLl9zZXNzaW9uUnVuS2V5MkRldmljZU5hbWVzW2JdLnB1c2gocCksdGhpcy4kLnNlc3Npb25SdW5zVmlldy51cGRhdGVOdW1EZXZpY2VzKHRoaXMuX3Nlc3Npb25SdW5LZXkyRGV2aWNlTmFtZXNbYl0ubGVuZ3RoKSk7dGhpcy5zZXQoIl9hY3RpdmVTZXNzaW9uUnVuRGV2aWNlcyIsdGhpcy5fc2Vzc2lvblJ1bktleTJEZXZpY2VOYW1lc1tiXS5zbGljZSgpKTtsPXRoaXMuX2FjdGl2ZVNlc3Npb25SdW5EZXZpY2VzW3RoaXMuX2FjdGl2ZVNlc3Npb25SdW5EZXZpY2VzLmxlbmd0aC0KMV07Y29uc3QgbT10LmdhdGVkX2dycGNfdGVuc29yc1twXTtmb3IobGV0IG49MDtuPG0ubGVuZ3RoOysrbilrLnB1c2goe2RldmljZV9uYW1lOnAsbm9kZV9uYW1lOm1bbl1bMF0sb3BfdHlwZTptW25dWzFdLG91dHB1dF9zbG90Om1bbl1bMl0sZGVidWdfb3A6bVtuXVszXX0pfW51bGwhPWwmJih0aGlzLnNldCgiX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUiLGwpLHQ9UG9seW1lci5kb20odGhpcy4kJCgiI2FjdGl2ZS1ydW50aW1lLWdyYXBoLWRldmljZS1uYW1lIikpLG51bGwhPXQmJnQuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsbCkpO1ZpLnNvcnRBbmRCYXNlRXhwYW5kRGVidWdXYXRjaGVzKGspO3RoaXMuc2V0KCJfZGVidWdXYXRjaGVzIixrKTt0aGlzLiQuc291cmNlQ29kZVZpZXcucmVuZGVyKGspfX0pfSxfY3JlYXRlRGVidWdXYXRjaENoYW5nZUhhbmRsZXIoKXtyZXR1cm4oYixkKT0+e2Q9ZD8iYnJlYWsiOiJkaXNhYmxlIjt0aGlzLl9yZXF1ZXN0QnJlYWtwb2ludFN0YXRlQ2hhbmdlKFZpLmdldENsZWFuTm9kZU5hbWUoYi5kZXZpY2VfbmFtZSsKIi8iK2Iubm9kZV9uYW1lKSxiLm91dHB1dF9zbG90LGIuZGVidWdfb3AsZCl9fSxfZm9jdXNPbkdyYXBoTm9kZShiLGQpe251bGwhPWImJnRoaXMuX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUhPT1iJiZ0aGlzLnNldCgiX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUiLGIpO3RoaXMuX3NldFRvcFJpZ2h0UnVudGltZUdyYXBoc1RvQWN0aXZlKCk7Y29uc3QgZj10aGlzLiQkKCIjZ3JhcGgiKTtpZihmLnNlbGVjdGVkTm9kZT09PWQpZi5wYW5Ub05vZGUoZCk7ZWxzZXtjb25zdCBoPWYuZ2V0KCJyZW5kZXJIaWVyYXJjaHkiKS5oaWVyYXJjaHkuZ2V0Tm9kZU1hcCgpO251bGw9PWhbZF0mJihkPVZpLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbihkKSk7bnVsbCE9aFtkXSYmZi5zZXQoInNlbGVjdGVkTm9kZSIsZCl9dGhpcy5zZXQoIl9oaWdobGlnaHROb2RlTmFtZSIsYisiLyIrZCl9LF9jcmVhdGVOb2RlQ2xpY2tlZEhhbmRsZXIoKXtyZXR1cm4oYixkLGYpPT57dGhpcy5fc291cmNlQ29kZVNob3duJiYKITAhPT1mJiZ0aGlzLnNldCgiX3NvdXJjZUZvY3VzTm9kZU5hbWUiLFZpLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbihkKSk7dGhpcy5fZm9jdXNPbkdyYXBoTm9kZShiLGQpO3RoaXMuc2V0KCJfZm9yY2VFeHBhbmROb2RlTmFtZSIsYisiLyIrZCl9fSxfY3JlYXRlRmVlZEZldGNoVGFyZ2V0Q2xpY2tlZEhhbmRsZXIoKXtyZXR1cm4gYj0+e2xldCBkPWI7LTEhPT1kLmluZGV4T2YoIjoiKSYmKGQ9ZC5zbGljZSgwLGQuaW5kZXhPZigiOiIpKSk7Yj1fLmZpbmQodGhpcy5fZGVidWdXYXRjaGVzLGY9PmYubm9kZV9uYW1lPT09ZHx8MD09PWYubm9kZV9uYW1lLmluZGV4T2YoZCkmJiIoIj09PWYubm9kZV9uYW1lW2QubGVuZ3RoXSk7bnVsbD09Yj90aGlzLl9zaG93VG9hc3QoIk5vZGUgJyIrZCsiJyBpcyBub3QgaW4gdGhlIHJ1bnRpbWUgZ3JhcGggb2YgdGhlIGN1cnJlbnQgU2Vzc2lvbi5ydW4gb3IgZG9lcyBub3QgaGF2ZSBhIGRlYnVnIG9wIGF0dGFjaGVkLiIpOnRoaXMuX2ZvY3VzT25HcmFwaE5vZGUoYi5kZXZpY2VfbmFtZSwKZCl9fSxfY3JlYXRlVGVuc29yRGF0YUV4cGFuZEhhbmRsZXIoKXtyZXR1cm4gYj0+e3RoaXMuX3NldFRvcFJpZ2h0VGVuc29yVmFsdWVzVG9BY3RpdmUoKTtzZXRUaW1lb3V0KCgpPT57dGhpcy4kJCgiI3RlbnNvclZhbHVlTXVsdGlWaWV3IikuYWRkVmlldyh7dmlld0lkOnRoaXMuX2NyZWF0ZVRlbnNvclZpZXdJZCgpLGRldmljZU5hbWU6Yi5kZXZpY2VOYW1lLHRlbnNvck5hbWU6Yi50ZW5zb3JOYW1lLG5vZGVOYW1lOmIubm9kZU5hbWUsbWF5YmVCYXNlRXhwYW5kZWROb2RlTmFtZTpiLm1heWJlQmFzZUV4cGFuZGVkTm9kZU5hbWUsZGVidWdPcDpiLmRlYnVnT3AsZHR5cGU6Yi5kdHlwZSxzaGFwZTpiLnNoYXBlLHNsaWNpbmc6VmkuZ2V0RGVmYXVsdFNsaWNpbmcoYi5zaGFwZSksdGltZUluZGljZXM6Ii0xIn0pfSwxMCl9fSxfY3JlYXRlVGVuc29yVmlld0lkKCl7Y29uc3QgYj0iZGVidWdnZXItdGVuc29yLXZpZXctIit0aGlzLl90ZW5zb3JWaWV3SWRDb3VudGVyO3RoaXMuX3RlbnNvclZpZXdJZENvdW50ZXIrKzsKcmV0dXJuIGJ9LF9jcmVhdGVOb2RlQ29udGV4dE1lbnVJdGVtcygpe3JldHVyblt7dGl0bGU6KCk9PiJFeHBhbmQgYW5kIGhpZ2hsaWdodCIsYWN0aW9uOmI9Pntjb25zdCBkPVZpLmdldENsZWFuTm9kZU5hbWUoYi5ub2RlLm5hbWUpO2I9dGhpcy5fYWN0aXZlUnVudGltZUdyYXBoRGV2aWNlTmFtZSsiLyIrYi5ub2RlLm5hbWU7dGhpcy5zZXQoIl9mb3JjZUV4cGFuZE5vZGVOYW1lIixiKTt0aGlzLnNldCgiX2hpZ2hsaWdodE5vZGVOYW1lIixiKTt0aGlzLl9zb3VyY2VDb2RlU2hvd24mJnRoaXMuc2V0KCJfc291cmNlRm9jdXNOb2RlTmFtZSIsVmkucmVtb3ZlTm9kZU5hbWVCYXNlRXhwYW5zaW9uKGQpKX19LHt0aXRsZTooKT0+IkFkZCBicmVha3BvaW50IixhY3Rpb246Yj0+e2NvbnN0IGQ9VmkuZ2V0Q2xlYW5Ob2RlTmFtZShiLm5vZGUubmFtZSk7dGhpcy5zZXQoIl9mb3JjZUV4cGFuZEFuZENoZWNrTm9kZU5hbWUiLHRoaXMuX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUrCiIvIitiLm5vZGUubmFtZSk7dGhpcy5fc291cmNlQ29kZVNob3duJiZ0aGlzLnNldCgiX3NvdXJjZUZvY3VzTm9kZU5hbWUiLFZpLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbihkKSl9fSx7dGl0bGU6KCk9PiJDb250aW51ZSB0byIsYWN0aW9uOmI9PnstMSE9PVsiX0FyZyIsIl9SZXR2YWwiXS5pbmRleE9mKGIubm9kZS5vcCk/dGhpcy5fc2hvd1RvYXN0KCdDYW5ub3QgY29udGludWUgdG8gbm9kZSAiJytiLm5vZGUubmFtZSsnIiwgZHVlIHRvIG9wIHR5cGUgIicrYi5ub2RlLm9wKyciLicpOnRoaXMuX2NvbnRpbnVlVG9Ob2RlKHRoaXMuX2FjdGl2ZVJ1bnRpbWVHcmFwaERldmljZU5hbWUsYi5ub2RlLm5hbWUpfX1dfSxfY3JlYXRlR2V0SGVhbHRoUGlsbCgpe3JldHVybihiLGQsZixoKT0+e3ZhciBrPXt3YXRjaF9rZXk6Yix0aW1lX2luZGljZXM6Ii0xIixtYXBwaW5nOiJoZWFsdGgtcGlsbCJ9O2NvbnN0IHQ9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwKIi90ZW5zb3JfZGF0YSIpO2s9dmMuYWRkUGFyYW1zKHQsayk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChrKS50aGVuKGw9PntsPWwudGVuc29yX2RhdGFbMF07aChsKTt0aGlzLl9jb25kaXRpb25hbEhlYWx0aFBpbGxTdG9wKGIsZCxmLGwpfSl9fSxfY29uZGl0aW9uYWxIZWFsdGhQaWxsU3RvcChiLGQsZixoKXtpZigiVGVuc29yQ29uZGl0aW9uIj09PXRoaXMuX2NvbnRpbnVlVG9UeXBlJiZWaS5jaGVja0hlYWx0aFBpbGxBZ2FpbnN0VGVuc29yQ29uZGl0aW9uS2V5KHRoaXMuX2NvbnRpbnVlVG9UYXJnZXQsaCx0aGlzLl9jb250aW51ZVRvQ291bnRlclRhcmdldCkpe3RoaXMuc2V0KCJfY29udGludWVTdG9wIiwhMCk7aD1WaS5yZW1vdmVOb2RlTmFtZUJhc2VFeHBhbnNpb24oZik7dGhpcy5fc291cmNlQ29kZVNob3duJiZ0aGlzLnNldCgiX3NvdXJjZUZvY3VzTm9kZU5hbWUiLGgpO3RoaXMuX2ZvY3VzT25HcmFwaE5vZGUoZCxmKTtjb25zdCBrPWQrIi8iK2Y7dGhpcy5zZXQoIl9mb3JjZUV4cGFuZE5vZGVOYW1lIiwKayk7c2V0VGltZW91dCgoKT0+e3RoaXMuc2V0KCJfaGlnaGxpZ2h0Tm9kZU5hbWUiLG51bGwpO3RoaXMuc2V0KCJfaGlnaGxpZ2h0Tm9kZU5hbWUiLGspfSwxMDApO3RoaXMuX3Nob3dUb2FzdCgnVGVuc29yIGNvbmRpdGlvbiAiJyt0aGlzLl9jb250aW51ZVRvVGFyZ2V0KyciIGlzIG1ldCBieSB3YXRjaCBrZXk6ICInK2IrJyIuXG5TdG9wcGluZyBjb250aW51YXRpb24uJyl9fSxfY29udGludWVUb05vZGUoYixkKXtjb25zdCBmPVZpLmdldENsZWFuTm9kZU5hbWUoZCk7Yj1iKyIvIitkO3RoaXMuX3JlcXVlc3RCcmVha3BvaW50U3RhdGVDaGFuZ2UoZiwwLCJEZWJ1Z0lkZW50aXR5IiwiYnJlYWsiKTt0aGlzLnNldCgiX2ZvcmNlRXhwYW5kQW5kQ2hlY2tOb2RlTmFtZSIsYik7dGhpcy5fc291cmNlQ29kZVNob3duJiZ0aGlzLnNldCgiX3NvdXJjZUZvY3VzTm9kZU5hbWUiLFZpLnJlbW92ZU5vZGVOYW1lQmFzZUV4cGFuc2lvbihmKSk7dGhpcy5fc2V0Q29udGludWVUbygib3AiLGIpOwp0aGlzLiQuY29udGludWVEaWFsb2cudXBkYXRlQ29udGludWVCdXR0b25UZXh0KCEwKTt0aGlzLl9zdGVwKCl9LF9jcmVhdGVDb250aW51ZVRvTm9kZUhhbmRsZXIoKXtyZXR1cm4oYixkKT0+e3RoaXMuX2NvbnRpbnVlVG9Ob2RlKGIsZCl9fSxfb25BY3RpdmVSdW50aW1lR3JhcGhEZXZpY2VOYW1lQ2hhbmdlKGIpe2NvbnN0IGQ9UG9seW1lci5kb20odGhpcy4kJCgiI3J1bnRpbWUtZ3JhcGgtZGV2aWNlLW5hbWUiKSk7aWYoMDx0aGlzLl9hY3RpdmVTZXNzaW9uUnVuRGV2aWNlcy5sZW5ndGgpe2xldCBmO2Y9YisoIiAoZGV2aWNlICIrKHRoaXMuX2FjdGl2ZVNlc3Npb25SdW5EZXZpY2VzLmluZGV4T2YoYikrMSkrIiBvZiAiK3RoaXMuX2FjdGl2ZVNlc3Npb25SdW5EZXZpY2VzLmxlbmd0aCsiKSIpO3RoaXMuX2lzVG9wUmlnaHRSdW50aW1lR3JhcGhzQWN0aXZlJiZudWxsIT1kJiYoZC50ZXh0Q29udGVudD1mKX1lbHNlIHRoaXMuX2lzVG9wUmlnaHRSdW50aW1lR3JhcGhzQWN0aXZlJiYKbnVsbCE9ZCYmKGQudGV4dENvbnRlbnQ9IldhaXRpbmcgZm9yIGRldmljZS4uLiIpO251bGwhPWImJnRoaXMuX2Rpc3BsYXlHcmFwaCh0aGlzLl9hY3RpdmVTZXNzaW9uUnVuS2V5LGIpfSxfc3RlcCgpe2lmKG51bGwhPXRoaXMuX2FjdGl2ZVNlc3Npb25SdW5LZXkpe3RoaXMuc2V0KCJfYnVzeSIsITApO3ZhciBiPXttb2RlOiJyZXRyaWV2ZV9kZXZpY2VfbmFtZXMiLHJ1bl9rZXk6SlNPTi5zdHJpbmdpZnkodGhpcy5fYWN0aXZlU2Vzc2lvblJ1bktleSl9LGQ9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2dhdGVkX2dycGMiKTtiPXZjLmFkZFBhcmFtcyhkLGIpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihmPT57bGV0IGg9ITE7Zm9yKGxldCBrPTA7azxmLmRldmljZV9uYW1lcy5sZW5ndGg7KytrKWlmKC0xPT09dGhpcy5fYWN0aXZlU2Vzc2lvblJ1bkRldmljZXMuaW5kZXhPZihmLmRldmljZV9uYW1lc1trXSkpe2g9ITA7YnJlYWt9Zj0KdmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2FjayIpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoZikudGhlbigoKT0+e2gmJnRoaXMuX3Byb2Nlc3NHYXRlZEdycGNEZWJ1Z09wcyh0aGlzLl9hY3RpdmVTZXNzaW9uUnVuS2V5LCExKX0pfSl9fSxfY3JlYXRlU2Vzc2lvblJ1bkdvKCl7cmV0dXJuIGI9Pnt0aGlzLl9zZXRDb250aW51ZVRvKCJTZXNzaW9uUnVuIix0aGlzLl9jdXJyZW50U2Vzc2lvblJ1bkluZm8sYik7dGhpcy5fc3RlcCgpfX0sX2NyZWF0ZVRlbnNvckNvbmRpdGlvbkdvKCl7cmV0dXJuKGIsZCk9Pnt0aGlzLl9zZXRDb250aW51ZVRvKCJUZW5zb3JDb25kaXRpb24iLGIsZCk7dGhpcy4kLnRlbnNvckRhdGFTdW1tYXJ5LmVuYWJsZUhlYWx0aFBpbGxzKCk7dGhpcy5fc3RlcCgpfX0sX2NyZWF0ZUZvcmNlQ29udGludWF0aW9uU3RvcCgpe3JldHVybigpPT57dGhpcy5fc2hvd1RvYXN0KCdDb250aW51YXRpb24gb2YgdHlwZSAiJyt0aGlzLl9jb250aW51ZVRvVHlwZSsKJyIgd2FzIGludGVycnVwdGVkIGJ5IHVzZXIuJyk7dGhpcy5zZXQoIl9jb250aW51ZVN0b3AiLCEwKX19LF9zZXRDb250aW51ZVRvKGIsZCxmPS0xKXt0aGlzLl9jb250aW51ZVRvVHlwZT1iO3RoaXMuX2NvbnRpbnVlVG9UYXJnZXQ9ZDt0aGlzLl9jb250aW51ZVRvQ291bnRlclRhcmdldD1mO3RoaXMuX2NvbnRpbnVlVG9Db3VudGVyPTA7dGhpcy5fY29udGludWVTdG9wPSExfSxfY2xlYXJDb250aW51ZVRvKCl7dGhpcy4kLmNvbnRpbnVlRGlhbG9nLm5vdGlmeUNvbnRpbnVhdGlvblN0b3AoKTt0aGlzLl9jb250aW51ZVRvVGFyZ2V0PXRoaXMuX2NvbnRpbnVlVG9UeXBlPSIiO3RoaXMuX2NvbnRpbnVlVG9Db3VudGVyVGFyZ2V0PS0xO3RoaXMuX2NvbnRpbnVlVG9Db3VudGVyPTA7dGhpcy5fY29udGludWVTdG9wPSExO3RoaXMuc2V0KCJfYnVzeSIsITEpfSxfY3JlYXRlQ29udGludWVUb0NhbGxiYWNrKCl7cmV0dXJuKGIsZCk9Pnt0aGlzLl9zZXRDb250aW51ZVRvKCJvcCIsYisiLyIrCmQpO3RoaXMuX3N0ZXAoKTt0aGlzLl9pc1RvcFJpZ2h0UnVudGltZUdyYXBoc0FjdGl2ZSYmdGhpcy5fZm9jdXNPbkdyYXBoTm9kZShiLGQpO3RoaXMuc2V0KCJfZm9yY2VFeHBhbmROb2RlTmFtZSIsYisiLyIrZCl9fSxfdG9wUmlnaHRTZWxlY3RlZENoYW5nZWQoYil7Yj10aGlzLl90b3BSaWdodFRhYnNbYl0uaWQ7dGhpcy5zZXQoIl9pc1RvcFJpZ2h0UnVudGltZUdyYXBoc0FjdGl2ZSIsInRhYi1ydW50aW1lLWdyYXBocyI9PT1iKTt0aGlzLnNldCgiX2lzVG9wUmlnaHRUZW5zb3JWYWx1ZXNBY3RpdmUiLCJ0YWItdGVuc29yLXZhbHVlcyI9PT1iKX0sX3NldFRvcFJpZ2h0UnVudGltZUdyYXBoc1RvQWN0aXZlKCl7dGhpcy5zZXQoIl90b3BSaWdodFNlbGVjdGVkIiwiMCIpO3RoaXMuc2V0KCJfaXNUb3BSaWdodFJ1bnRpbWVHcmFwaHNBY3RpdmUiLCEwKTt0aGlzLnNldCgiX2lzVG9wUmlnaHRUZW5zb3JWYWx1ZXNBY3RpdmUiLCExKX0sX3NldFRvcFJpZ2h0VGVuc29yVmFsdWVzVG9BY3RpdmUoKXt0aGlzLnNldCgiX3RvcFJpZ2h0U2VsZWN0ZWQiLAoiMSIpO3RoaXMuc2V0KCJfaXNUb3BSaWdodFJ1bnRpbWVHcmFwaHNBY3RpdmUiLCExKTt0aGlzLnNldCgiX2lzVG9wUmlnaHRUZW5zb3JWYWx1ZXNBY3RpdmUiLCEwKX0sX3JlcXVlc3RCcmVha3BvaW50U3RhdGVDaGFuZ2UoYixkLGYsaCl7Yj17bW9kZToic2V0X3N0YXRlIixub2RlX25hbWU6YixvdXRwdXRfc2xvdDpkLGRlYnVnX29wOmYsc3RhdGU6aH07ZD12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiZGVidWdnZXIiLCIvZ2F0ZWRfZ3JwYyIpO2I9dmMuYWRkUGFyYW1zKGQsYik7dGhpcy5zZXQoIl9idXN5IiwhMCk7dGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKS50aGVuKGs9Pnt0aGlzLnNldCgiX2J1c3kiLCExKTtjb25zb2xlLmxvZygiQnJlYWtwb2ludCBzZXRfc3RhdGUgcmVzcG9uc2U6ICIsayl9KX0sX2dyYXBoUHJvZ3Jlc3NVcGRhdGVkKGIpe2NvbnN0IGQ9dGhpcy4kJCgiI3RvcC1yaWdodC1wcm9ncmVzcy1iYXIiKTtudWxsPT10aGlzLl9sYXRlc3RTZXNzaW9uUnVuPwooZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwwKSx0aGlzLnNldCgiX2J1c3kiLCExKSk6KGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsYi52YWx1ZSksdGhpcy5zZXQoIl9idXN5IiwxMDA+Yi52YWx1ZSkpfSxfaGFuZGxlV2luZG93UmVzaXplKCl7dGhpcy5zZXQoIl93aW5kb3dXaWR0aCIsSGsoKSk7dGhpcy5zZXQoIl93aW5kb3dIZWlnaHQiLFppKCkpO3RoaXMuX3NpemVEYXNoYm9hcmRSZWdpb25zKHRoaXMuX2xlZnRQYW5lV2lkdGgsdGhpcy5fdG9wUmlnaHRRdWFkcmFudEhlaWdodCx0aGlzLl93aW5kb3dXaWR0aCl9LF9jb21wdXRlTWF4bGVmdFBhbmVXaWR0aChiLGQsZil7cmV0dXJuIGItZC1mfSxfY29tcHV0ZU1heFRvcFJpZ2h0UXVhZHJhbnRIZWlnaHQoYixkKXtyZXR1cm4gYi1kLTcwfSxfc2l6ZURhc2hib2FyZFJlZ2lvbnMoYixkLGYpe3RoaXMuJCQoIiNsZWZ0LXBhbmUiKS5zdHlsZS53aWR0aD1iKyJweCI7Yj1mLWItdGhpcy5fcmVzaXplcldpZHRoLTg7dGhpcy4kJCgiI2NlbnRlci1jb250ZW50Iikuc3R5bGUud2lkdGg9CmIrInB4IjtiPWQtdGhpcy5fcmVzaXplcldpZHRoO3RoaXMuJCQoIiN0b3AtcmlnaHQtcXVhZHJhbnQiKS5zdHlsZS5oZWlnaHQ9YisicHgiO3RoaXMuJCQoIiN0ZW5zb3ItZGF0YSIpLnN0eWxlLnRvcD1kKyJweCJ9LF9sZWZ0UGFuZVdpZHRoT2JzZXJ2ZXI6cGQuZ2V0TnVtYmVyT2JzZXJ2ZXIoIl9sZWZ0UGFuZVdpZHRoIix7ZGVmYXVsdFZhbHVlOjQ1MH0pLF90b3BSaWdodFF1YWRyYW50SGVpZ2h0T2JzZXJ2ZXI6cGQuZ2V0TnVtYmVyT2JzZXJ2ZXIoIl90b3BSaWdodFF1YWRyYW50SGVpZ2h0Iix7ZGVmYXVsdFZhbHVlOklrfSl9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1tYXRlcmlhbC9wYXBlci1tYXRlcmlhbC5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1tYXRlcmlhbCIscHJvcGVydGllczp7ZWxldmF0aW9uOnt0eXBlOk51bWJlcixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6MX0sYW5pbWF0ZWQ6e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITAsdmFsdWU6ITF9fX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWRlYnVnZ2VyLWRhdGEtY2FyZC90Zi1ncmFwaC1kZWJ1Z2dlci1kYXRhLWNhcmQuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtZ3JhcGgtZGVidWdnZXItZGF0YS1jYXJkIixwcm9wZXJ0aWVzOntyZW5kZXJIaWVyYXJjaHk6T2JqZWN0LGRlYnVnZ2VyTnVtZXJpY0FsZXJ0czp7dHlwZTpBcnJheSxub3RpZnk6ITB9LG5vZGVOYW1lc1RvSGVhbHRoUGlsbHM6T2JqZWN0LGhlYWx0aFBpbGxTdGVwSW5kZXg6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sc3BlY2lmaWNIZWFsdGhQaWxsU3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9LHNlbGVjdGVkTm9kZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxoaWdobGlnaHRlZE5vZGU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sc2VsZWN0ZWROb2RlSW5jbHVkZTp7dHlwZTpOdW1iZXIsbm90aWZ5OiEwfSxhcmVIZWFsdGhQaWxsc0xvYWRpbmc6Qm9vbGVhbixoZWFsdGhQaWxsRW50cmllczp7dHlwZTpBcnJheSx2YWx1ZTp0Zi5ncmFwaC5zY2VuZS5oZWFsdGhQaWxsRW50cmllcyxyZWFkT25seTohMH0saGVhbHRoUGlsbFZhbHVlc0ZvclNlbGVjdGVkTm9kZTp7dHlwZTpBcnJheSwKY29tcHV0ZWQ6Il9jb21wdXRlSGVhbHRoUGlsbEZvck5vZGUobm9kZU5hbWVzVG9IZWFsdGhQaWxscywgaGVhbHRoUGlsbFN0ZXBJbmRleCwgc2VsZWN0ZWROb2RlLCBhbGxTdGVwc01vZGVFbmFibGVkLCBhcmVIZWFsdGhQaWxsc0xvYWRpbmcpIn0sYWxsU3RlcHNNb2RlRW5hYmxlZDp7dHlwZTpCb29sZWFuLG5vdGlmeTohMH0sX2JpZ2dlc3RTdGVwRXZlclNlZW46e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfY29tcHV0ZUJpZ2dlc3RTdGVwRXZlclNlZW4obm9kZU5hbWVzVG9IZWFsdGhQaWxscykifSxfbWF4U3RlcEluZGV4Ont0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVNYXhTdGVwSW5kZXgobm9kZU5hbWVzVG9IZWFsdGhQaWxscykifSxfY3VycmVudFN0ZXBEaXNwbGF5VmFsdWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfY29tcHV0ZUN1cnJlbnRTdGVwRGlzcGxheVZhbHVlKG5vZGVOYW1lc1RvSGVhbHRoUGlsbHMsIGhlYWx0aFBpbGxTdGVwSW5kZXgsIGFsbFN0ZXBzTW9kZUVuYWJsZWQsIHNwZWNpZmljSGVhbHRoUGlsbFN0ZXAsIGFyZUhlYWx0aFBpbGxzTG9hZGluZykifX0sCm9ic2VydmVyczpbIl91cGRhdGVBbGVydHNMaXN0KGRlYnVnZ2VyTnVtZXJpY0FsZXJ0cykiXSxyZWFkeTpmdW5jdGlvbigpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWluQ29udGFpbmVyIiksZD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ0Zi1kYXNoYm9hcmQtbGF5b3V0IC5zY3JvbGxiYXIiKTtiJiZkJiYoYi5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIixkLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iKX0sX2hlYWx0aFBpbGxzQXZhaWxhYmxlOmZ1bmN0aW9uKGIsZCl7cmV0dXJuIGImJmR9LF9jb21wdXRlVGVuc29yQ291bnRTdHJpbmc6ZnVuY3Rpb24oYixkKXtyZXR1cm4gYj9iW2RdLnRvRml4ZWQoMCk6IiJ9LF9jb21wdXRlSGVhbHRoUGlsbEZvck5vZGU6ZnVuY3Rpb24oYixkLGYsaCxrKXtpZihrfHwhZilyZXR1cm4gbnVsbDtiPWJbZl07cmV0dXJuIGI/KGQ9YltoPzA6ZF0pP2QudmFsdWUuc2xpY2UoMiw4KTpudWxsOm51bGx9LF9jb21wdXRlQ3VycmVudFN0ZXBEaXNwbGF5VmFsdWU6ZnVuY3Rpb24oYiwKZCxmLGgsayl7aWYoZilyZXR1cm4gaC50b0ZpeGVkKDApO2lmKGspcmV0dXJuIDA7Zm9yKGxldCB0IGluIGIpcmV0dXJuIGJbdF1bZF0uc3RlcC50b0ZpeGVkKDApO3JldHVybiAwfSxfY29tcHV0ZUJpZ2dlc3RTdGVwRXZlclNlZW46ZnVuY3Rpb24oYil7Zm9yKGxldCBkIGluIGIpcmV0dXJuIGI9YltkXSxNYXRoLm1heCh0aGlzLl9iaWdnZXN0U3RlcEV2ZXJTZWVuLGJbYi5sZW5ndGgtMV0uc3RlcCk7cmV0dXJuIHRoaXMuX2JpZ2dlc3RTdGVwRXZlclNlZW58fDB9LF9jb21wdXRlTWF4U3RlcEluZGV4OmZ1bmN0aW9uKGIpe2ZvcihsZXQgZCBpbiBiKXJldHVybiBiW2RdLmxlbmd0aC0xO3JldHVybiAwfSxfaGFzRGVidWdnZXJOdW1lcmljQWxlcnRzOmZ1bmN0aW9uKGIpe3JldHVybiBiJiZiLmxlbmd0aH0sX3VwZGF0ZUFsZXJ0c0xpc3Q6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy4kJCgiI251bWVyaWMtYWxlcnRzLWJvZHkiKTtpZihkKXtkLmlubmVySFRNTD0iIjtmb3IodmFyIGY9CjA7ZjxiLmxlbmd0aDtmKyspe3ZhciBoPWJbZl0saz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpLHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTt0LmlubmVySFRNTD10Zi5ncmFwaC51dGlsLmNvbXB1dGVIdW1hbkZyaWVuZGx5VGltZShoLmZpcnN0X3RpbWVzdGFtcCk7dC5jbGFzc0xpc3QuYWRkKCJmaXJzdC1vZmZlbnNlLXRkIik7ay5hcHBlbmRDaGlsZCh0KTt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7dC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3ItZGV2aWNlLXRkIik7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5jbGFzc0xpc3QuYWRkKCJ0ZW5zb3Itc2VjdGlvbi13aXRoaW4tdGFibGUiKTtsLmlubmVySFRNTD1oLnRlbnNvcl9uYW1lO3RoaXMuX2FkZE9wRXhwYW5zaW9uTGlzdGVuZXIobCxoLnRlbnNvcl9uYW1lKTt0LmFwcGVuZENoaWxkKGwpO2w9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5jbGFzc0xpc3QuYWRkKCJkZXZpY2Utc2VjdGlvbi13aXRoaW4tdGFibGUiKTsKbC5pbm5lckhUTUw9IigiK2guZGV2aWNlX25hbWUrIikiO3QuYXBwZW5kQ2hpbGQobCk7ay5hcHBlbmRDaGlsZCh0KTt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NMaXN0LmFkZCgibWluaS1oZWFsdGgtcGlsbCIpO2w9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTtsLmNsYXNzTGlzdC5hZGQoIm1pbmktaGVhbHRoLXBpbGwtdGQiKTtsLmFwcGVuZENoaWxkKHQpO2suYXBwZW5kQ2hpbGQobCk7aC5uZWdfaW5mX2V2ZW50X2NvdW50JiYobD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxsLmNsYXNzTGlzdC5hZGQoIm5lZ2F0aXZlLWluZi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24iKSxsLmlubmVySFRNTD1oLm5lZ19pbmZfZXZlbnRfY291bnQsbC5zZXRBdHRyaWJ1dGUoInRpdGxlIixoLm5lZ19pbmZfZXZlbnRfY291bnQrIiBldmVudHMgd2l0aCAtXHUyMjFlIiksdC5hcHBlbmRDaGlsZChsKSk7aC5wb3NfaW5mX2V2ZW50X2NvdW50JiYobD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSwKbC5jbGFzc0xpc3QuYWRkKCJwb3NpdGl2ZS1pbmYtbWluaS1oZWFsdGgtcGlsbC1zZWN0aW9uIiksbC5pbm5lckhUTUw9aC5wb3NfaW5mX2V2ZW50X2NvdW50LGwuc2V0QXR0cmlidXRlKCJ0aXRsZSIsaC5wb3NfaW5mX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggK1x1MjIxZSIpLHQuYXBwZW5kQ2hpbGQobCkpO2gubmFuX2V2ZW50X2NvdW50JiYobD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxsLmNsYXNzTGlzdC5hZGQoIm5hbi1taW5pLWhlYWx0aC1waWxsLXNlY3Rpb24iKSxsLmlubmVySFRNTD1oLm5hbl9ldmVudF9jb3VudCxsLnNldEF0dHJpYnV0ZSgidGl0bGUiLGgubmFuX2V2ZW50X2NvdW50KyIgZXZlbnRzIHdpdGggTmFOIiksdC5hcHBlbmRDaGlsZChsKSk7UG9seW1lci5kb20oZCkuYXBwZW5kQ2hpbGQoayl9fX0sX2FkZE9wRXhwYW5zaW9uTGlzdGVuZXI6ZnVuY3Rpb24oYixkKXtiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3ZhciBmPXRmLmdyYXBoLnJlbmRlci5leHBhbmRVbnRpbE5vZGVJc1Nob3duKHRoaXMucmVuZGVySGllcmFyY2h5LApkKSxoLGs9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigidGYtZ3JhcGgtaW5mbyNncmFwaC1pbmZvIik7ayYmKGg9ay5zY3JvbGxIZWlnaHQtay5zY3JvbGxUb3ApO3ZhciB0PXRoaXMuc2VsZWN0ZWROb2RlO3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLGYpO2Y9KCk9PntrLnNjcm9sbFRvcD1rLnNjcm9sbEhlaWdodC1ofTtrJiYodD9mKCk6d2luZG93LnNldFRpbWVvdXQoZiwyMCkpfSl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tc2Nyb2xsLXRhcmdldC1iZWhhdmlvci9pcm9uLXNjcm9sbC10YXJnZXQtYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLklyb25TY3JvbGxUYXJnZXRCZWhhdmlvcj17cHJvcGVydGllczp7c2Nyb2xsVGFyZ2V0Ont0eXBlOkhUTUxFbGVtZW50LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlZmF1bHRTY3JvbGxUYXJnZXR9fX0sb2JzZXJ2ZXJzOlsiX3Njcm9sbFRhcmdldENoYW5nZWQoc2Nyb2xsVGFyZ2V0LCBpc0F0dGFjaGVkKSJdLF9zaG91bGRIYXZlTGlzdGVuZXI6ITAsX3Njcm9sbFRhcmdldENoYW5nZWQ6ZnVuY3Rpb24oYixkKXt0aGlzLl9vbGRTY3JvbGxUYXJnZXQmJih0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcighMSx0aGlzLl9vbGRTY3JvbGxUYXJnZXQpLHRoaXMuX29sZFNjcm9sbFRhcmdldD1udWxsKTtkJiYoImRvY3VtZW50Ij09PWI/dGhpcy5zY3JvbGxUYXJnZXQ9dGhpcy5fZG9jOiJzdHJpbmciPT09dHlwZW9mIGI/dGhpcy5zY3JvbGxUYXJnZXQ9KGQ9dGhpcy5kb21Ib3N0KSYmZC4kP2QuJFtiXTpQb2x5bWVyLmRvbSh0aGlzLm93bmVyRG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3IoIiMiKwpiKTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLl9vbGRTY3JvbGxUYXJnZXQ9Yix0aGlzLl90b2dnbGVTY3JvbGxMaXN0ZW5lcih0aGlzLl9zaG91bGRIYXZlTGlzdGVuZXIsYikpKX0sX3Njcm9sbEhhbmRsZXI6ZnVuY3Rpb24oKXt9LGdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzLl9kb2N9LGdldCBfZG9jKCl7cmV0dXJuIHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9LGdldCBfc2Nyb2xsVG9wKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT90aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cucGFnZVlPZmZzZXQ6dGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wOjB9LGdldCBfc2Nyb2xsTGVmdCgpe3JldHVybiB0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCk/dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnBhZ2VYT2Zmc2V0OnRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbExlZnQ6CjB9LHNldCBfc2Nyb2xsVG9wKGIpe3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5zY3JvbGxUbyh3aW5kb3cucGFnZVhPZmZzZXQsYik6dGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpJiYodGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wPWIpfSxzZXQgX3Njcm9sbExlZnQoYil7dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LnNjcm9sbFRvKGIsd2luZG93LnBhZ2VZT2Zmc2V0KTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PWIpfSxzY3JvbGw6ZnVuY3Rpb24oYixkKXt0aGlzLnNjcm9sbFRhcmdldD09PXRoaXMuX2RvYz93aW5kb3cuc2Nyb2xsVG8oYixkKTp0aGlzLl9pc1ZhbGlkU2Nyb2xsVGFyZ2V0KCkmJih0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PWIsdGhpcy5zY3JvbGxUYXJnZXQuc2Nyb2xsVG9wPWQpfSxnZXQgX3Njcm9sbFRhcmdldFdpZHRoKCl7cmV0dXJuIHRoaXMuX2lzVmFsaWRTY3JvbGxUYXJnZXQoKT8KdGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzLl9kb2M/d2luZG93LmlubmVyV2lkdGg6dGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0V2lkdGg6MH0sZ2V0IF9zY3JvbGxUYXJnZXRIZWlnaHQoKXtyZXR1cm4gdGhpcy5faXNWYWxpZFNjcm9sbFRhcmdldCgpP3RoaXMuc2Nyb2xsVGFyZ2V0PT09dGhpcy5fZG9jP3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQ6MH0sX2lzVmFsaWRTY3JvbGxUYXJnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zY3JvbGxUYXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sX3RvZ2dsZVNjcm9sbExpc3RlbmVyOmZ1bmN0aW9uKGIsZCl7ZD1kPT09dGhpcy5fZG9jP3dpbmRvdzpkO2I/dGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyfHwodGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyPXRoaXMuX3Njcm9sbEhhbmRsZXIuYmluZCh0aGlzKSxkLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5fYm91bmRTY3JvbGxIYW5kbGVyKSk6CnRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlciYmKGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLl9ib3VuZFNjcm9sbEhhbmRsZXIpLHRoaXMuX2JvdW5kU2Nyb2xsSGFuZGxlcj1udWxsKX0sdG9nZ2xlU2Nyb2xsTGlzdGVuZXI6ZnVuY3Rpb24oYil7dGhpcy5fc2hvdWxkSGF2ZUxpc3RlbmVyPWI7dGhpcy5fdG9nZ2xlU2Nyb2xsTGlzdGVuZXIoYix0aGlzLnNjcm9sbFRhcmdldCl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLWxpc3QvaXJvbi1saXN0Lmh0bWwuanMKKGZ1bmN0aW9uKCl7dmFyIGI9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpob25lfGFkOyg/OiBVOyk/IENQVSkgT1MgKFxkKykvKSxkPWImJjg8PWJbMV0sZj1udWxsIT1Qb2x5bWVyLmZsdXNoLGg9Zj9Qb2x5bWVyLkFzeW5jLmFuaW1hdGlvbkZyYW1lOjAsaz1mP1BvbHltZXIuQXN5bmMuaWRsZVBlcmlvZDoxLHQ9Zj9Qb2x5bWVyLkFzeW5jLm1pY3JvVGFzazoyO1BvbHltZXIuT3B0aW9uYWxNdXRhYmxlRGF0YUJlaGF2aW9yfHwoUG9seW1lci5PcHRpb25hbE11dGFibGVEYXRhQmVoYXZpb3I9e30pO1BvbHltZXIoe2lzOiJpcm9uLWxpc3QiLHByb3BlcnRpZXM6e2l0ZW1zOnt0eXBlOkFycmF5fSxhczp7dHlwZTpTdHJpbmcsdmFsdWU6Iml0ZW0ifSxpbmRleEFzOnt0eXBlOlN0cmluZyx2YWx1ZToiaW5kZXgifSxzZWxlY3RlZEFzOnt0eXBlOlN0cmluZyx2YWx1ZToic2VsZWN0ZWQifSxncmlkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwLApvYnNlcnZlcjoiX2dyaWRDaGFuZ2VkIn0sc2VsZWN0aW9uRW5hYmxlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RlZEl0ZW06e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sc2VsZWN0ZWRJdGVtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxtdWx0aVNlbGVjdGlvbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxPZmZzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9fSxvYnNlcnZlcnM6WyJfaXRlbXNDaGFuZ2VkKGl0ZW1zLiopIiwiX3NlbGVjdGlvbkVuYWJsZWRDaGFuZ2VkKHNlbGVjdGlvbkVuYWJsZWQpIiwiX211bHRpU2VsZWN0aW9uQ2hhbmdlZChtdWx0aVNlbGVjdGlvbikiLCJfc2V0T3ZlcmZsb3coc2Nyb2xsVGFyZ2V0LCBzY3JvbGxPZmZzZXQpIl0sYmVoYXZpb3JzOltQb2x5bWVyLlRlbXBsYXRpemVyLFBvbHltZXIuSXJvblJlc2l6YWJsZUJlaGF2aW9yLFBvbHltZXIuSXJvblNjcm9sbFRhcmdldEJlaGF2aW9yLFBvbHltZXIuT3B0aW9uYWxNdXRhYmxlRGF0YUJlaGF2aW9yXSwKX3JhdGlvOi41LF9zY3JvbGxlclBhZGRpbmdUb3A6MCxfc2Nyb2xsUG9zaXRpb246MCxfcGh5c2ljYWxTaXplOjAsX3BoeXNpY2FsQXZlcmFnZTowLF9waHlzaWNhbEF2ZXJhZ2VDb3VudDowLF9waHlzaWNhbFRvcDowLF92aXJ0dWFsQ291bnQ6MCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsX3BoeXNpY2FsSXRlbXM6bnVsbCxfcGh5c2ljYWxTaXplczpudWxsLF9maXJzdFZpc2libGVJbmRleFZhbDpudWxsLF9jb2xsZWN0aW9uOm51bGwsX2xhc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbWF4UGFnZXM6MixfZm9jdXNlZEl0ZW06bnVsbCxfZm9jdXNlZFZpcnR1YWxJbmRleDotMSxfZm9jdXNlZFBoeXNpY2FsSW5kZXg6LTEsX29mZnNjcmVlbkZvY3VzZWRJdGVtOm51bGwsX2ZvY3VzQmFja2ZpbGxJdGVtOm51bGwsX2l0ZW1zUGVyUm93OjEsX2l0ZW1XaWR0aDowLF9yb3dIZWlnaHQ6MCxfdGVtcGxhdGVDb3N0OjAsCl9wYXJlbnRNb2RlbDohMCxnZXQgX3BoeXNpY2FsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3BoeXNpY2FsU2l6ZX0sZ2V0IF9zY3JvbGxCb3R0b20oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfdmlydHVhbEVuZCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xfSxnZXQgX2hpZGRlbkNvbnRlbnRTaXplKCl7cmV0dXJuKHRoaXMuZ3JpZD90aGlzLl9waHlzaWNhbFJvd3MqdGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZSktdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfaXRlbXNQYXJlbnQoKXtyZXR1cm4gUG9seW1lci5kb20oUG9seW1lci5kb20odGhpcy5fdXNlclRlbXBsYXRlKS5wYXJlbnROb2RlKX0sZ2V0IF9tYXhTY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3ZpZXdwb3J0SGVpZ2h0K3RoaXMuX3Njcm9sbE9mZnNldH0sCmdldCBfbWF4VmlydHVhbFN0YXJ0KCl7dmFyIGw9dGhpcy5fY29udmVydEluZGV4VG9Db21wbGV0ZVJvdyh0aGlzLl92aXJ0dWFsQ291bnQpO3JldHVybiBNYXRoLm1heCgwLGwtdGhpcy5fcGh5c2ljYWxDb3VudCl9LHNldCBfdmlydHVhbFN0YXJ0KGwpe2w9dGhpcy5fY2xhbXAobCwwLHRoaXMuX21heFZpcnR1YWxTdGFydCk7dGhpcy5ncmlkJiYobC09bCV0aGlzLl9pdGVtc1BlclJvdyk7dGhpcy5fdmlydHVhbFN0YXJ0VmFsPWx9LGdldCBfdmlydHVhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3ZpcnR1YWxTdGFydFZhbHx8MH0sc2V0IF9waHlzaWNhbFN0YXJ0KGwpe2wlPXRoaXMuX3BoeXNpY2FsQ291bnQ7MD5sJiYobD10aGlzLl9waHlzaWNhbENvdW50K2wpO3RoaXMuZ3JpZCYmKGwtPWwldGhpcy5faXRlbXNQZXJSb3cpO3RoaXMuX3BoeXNpY2FsU3RhcnRWYWw9bH0sZ2V0IF9waHlzaWNhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU3RhcnRWYWx8fDB9LGdldCBfcGh5c2ljYWxFbmQoKXtyZXR1cm4odGhpcy5fcGh5c2ljYWxTdGFydCsKdGhpcy5fcGh5c2ljYWxDb3VudC0xKSV0aGlzLl9waHlzaWNhbENvdW50fSxzZXQgX3BoeXNpY2FsQ291bnQobCl7dGhpcy5fcGh5c2ljYWxDb3VudFZhbD1sfSxnZXQgX3BoeXNpY2FsQ291bnQoKXtyZXR1cm4gdGhpcy5fcGh5c2ljYWxDb3VudFZhbHx8MH0sZ2V0IF9vcHRQaHlzaWNhbFNpemUoKXtyZXR1cm4gMD09PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0P0luZmluaXR5OnRoaXMuX3ZpZXdwb3J0SGVpZ2h0KnRoaXMuX21heFBhZ2VzfSxnZXQgX2lzVmlzaWJsZSgpe3JldHVybiEoIXRoaXMub2Zmc2V0V2lkdGgmJiF0aGlzLm9mZnNldEhlaWdodCl9LGdldCBmaXJzdFZpc2libGVJbmRleCgpe3ZhciBsPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PWwpe3ZhciBwPXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD1sPXRoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihtLG4pe3ArPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChtKTsKaWYocD50aGlzLl9zY3JvbGxQb3NpdGlvbilyZXR1cm4gdGhpcy5ncmlkP24tbiV0aGlzLl9pdGVtc1BlclJvdzpuO2lmKHRoaXMuZ3JpZCYmdGhpcy5fdmlydHVhbENvdW50LTE9PT1uKXJldHVybiBuLW4ldGhpcy5faXRlbXNQZXJSb3d9KXx8MH1yZXR1cm4gbH0sZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKXt2YXIgbD10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsO2lmKG51bGw9PWwpe2lmKHRoaXMuZ3JpZClsPU1hdGgubWluKHRoaXMuX3ZpcnR1YWxDb3VudCx0aGlzLmZpcnN0VmlzaWJsZUluZGV4K3RoaXMuX2VzdFJvd3NJblZpZXcqdGhpcy5faXRlbXNQZXJSb3ctMSk7ZWxzZXt2YXIgcD10aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9zY3JvbGxPZmZzZXQ7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKG0sbil7cDx0aGlzLl9zY3JvbGxCb3R0b20mJihsPW4pO3ArPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChtKX0pfXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9bH1yZXR1cm4gbH0sCmdldCBfZGVmYXVsdFNjcm9sbFRhcmdldCgpe3JldHVybiB0aGlzfSxnZXQgX3ZpcnR1YWxSb3dDb3VudCgpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlydHVhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KX0sZ2V0IF9lc3RSb3dzSW5WaWV3KCl7cmV0dXJuIE1hdGguY2VpbCh0aGlzLl92aWV3cG9ydEhlaWdodC90aGlzLl9yb3dIZWlnaHQpfSxnZXQgX3BoeXNpY2FsUm93cygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfc2Nyb2xsT2Zmc2V0KCl7cmV0dXJuIHRoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcCt0aGlzLnNjcm9sbE9mZnNldH0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9kaWRGb2N1cy5iaW5kKHRoaXMpLCEwKX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kZWJvdW5jZSgiX3JlbmRlciIsdGhpcy5fcmVuZGVyLGgpO3RoaXMubGlzdGVuKHRoaXMsImlyb24tcmVzaXplIiwKIl9yZXNpemVIYW5kbGVyIik7dGhpcy5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpO3RoaXMudW5saXN0ZW4odGhpcywia2V5ZG93biIsIl9rZXlkb3duSGFuZGxlciIpfSxfc2V0T3ZlcmZsb3c6ZnVuY3Rpb24obCl7dGhpcy5zdHlsZS53ZWJraXRPdmVyZmxvd1Njcm9sbGluZz1sPT09dGhpcz8idG91Y2giOiIiO3RoaXMuc3R5bGUub3ZlcmZsb3dZPWw9PT10aGlzPyJhdXRvIjoiIjt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD10aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPW51bGw7dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixoKX0sdXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzOmZ1bmN0aW9uKCl7dmFyIGw9d2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcyk7dGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wPQp0aGlzLnNjcm9sbFRhcmdldD09PXRoaXM/MDpwYXJzZUludChsWyJwYWRkaW5nLXRvcCJdLDEwKTt0aGlzLl9pc1JUTD0icnRsIj09PWwuZGlyZWN0aW9uO3RoaXMuX3ZpZXdwb3J0V2lkdGg9dGhpcy4kLml0ZW1zLm9mZnNldFdpZHRoO3RoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodDt0aGlzLmdyaWQmJnRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCl9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIGw9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLl9tYXhTY3JvbGxUb3AsdGhpcy5fc2Nyb2xsVG9wKSkscD1sLXRoaXMuX3Njcm9sbFBvc2l0aW9uLG09MDw9cDt0aGlzLl9zY3JvbGxQb3NpdGlvbj1sO3RoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbDtNYXRoLmFicyhwKT50aGlzLl9waHlzaWNhbFNpemUmJjA8dGhpcy5fcGh5c2ljYWxTaXplPyhwLT10aGlzLl9zY3JvbGxPZmZzZXQsbT1NYXRoLnJvdW5kKHAvCnRoaXMuX3BoeXNpY2FsQXZlcmFnZSkqdGhpcy5faXRlbXNQZXJSb3csdGhpcy5fdmlydHVhbFN0YXJ0Kz1tLHRoaXMuX3BoeXNpY2FsU3RhcnQrPW0sdGhpcy5fcGh5c2ljYWxUb3A9TWF0aC5mbG9vcih0aGlzLl92aXJ0dWFsU3RhcnQvdGhpcy5faXRlbXNQZXJSb3cpKnRoaXMuX3BoeXNpY2FsQXZlcmFnZSx0aGlzLl91cGRhdGUoKSk6MDx0aGlzLl9waHlzaWNhbENvdW50JiYobD10aGlzLl9nZXRSZXVzYWJsZXMobSksbT8odGhpcy5fcGh5c2ljYWxUb3A9bC5waHlzaWNhbFRvcCx0aGlzLl92aXJ0dWFsU3RhcnQrPWwuaW5kZXhlcy5sZW5ndGgsdGhpcy5fcGh5c2ljYWxTdGFydCs9bC5pbmRleGVzLmxlbmd0aCk6KHRoaXMuX3ZpcnR1YWxTdGFydC09bC5pbmRleGVzLmxlbmd0aCx0aGlzLl9waHlzaWNhbFN0YXJ0LT1sLmluZGV4ZXMubGVuZ3RoKSx0aGlzLl91cGRhdGUobC5pbmRleGVzLG0/bnVsbDpsLmluZGV4ZXMpLHRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLAp0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZC5iaW5kKHRoaXMsMCksdCkpfSxfZ2V0UmV1c2FibGVzOmZ1bmN0aW9uKGwpe3ZhciBwPVtdLG09dGhpcy5faGlkZGVuQ29udGVudFNpemUqdGhpcy5fcmF0aW8sbj10aGlzLl92aXJ0dWFsU3RhcnQscT10aGlzLl92aXJ0dWFsRW5kLHU9dGhpcy5fcGh5c2ljYWxDb3VudCx4PXRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldDt2YXIgQT10aGlzLl9waHlzaWNhbEJvdHRvbSt0aGlzLl9zY3JvbGxPZmZzZXQ7dmFyIHk9dGhpcy5fc2Nyb2xsVG9wLHc9dGhpcy5fc2Nyb2xsQm90dG9tO2lmKGwpe3ZhciBDPXRoaXMuX3BoeXNpY2FsU3RhcnQ7QT15LXh9ZWxzZSBDPXRoaXMuX3BoeXNpY2FsRW5kLEEtPXc7Zm9yKDs7KXt2YXIgRj10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoQyk7QS09RjtpZihwLmxlbmd0aD49dXx8QTw9bSlicmVhaztpZihsKXtpZihxK3AubGVuZ3RoKzE+PXRoaXMuX3ZpcnR1YWxDb3VudClicmVhazsKaWYoeCtGPj15LXRoaXMuX3Njcm9sbE9mZnNldClicmVhaztwLnB1c2goQyk7eCs9RjtDPShDKzEpJXV9ZWxzZXtpZigwPj1uLXAubGVuZ3RoKWJyZWFrO2lmKHgrdGhpcy5fcGh5c2ljYWxTaXplLUY8PXcpYnJlYWs7cC5wdXNoKEMpO3gtPUY7Qz0wPT09Qz91LTE6Qy0xfX1yZXR1cm57aW5kZXhlczpwLHBoeXNpY2FsVG9wOngtdGhpcy5fc2Nyb2xsT2Zmc2V0fX0sX3VwZGF0ZTpmdW5jdGlvbihsLHApe2lmKCEobCYmMD09PWwubGVuZ3RofHwwPT09dGhpcy5fcGh5c2ljYWxDb3VudCkpe3RoaXMuX21hbmFnZUZvY3VzKCk7dGhpcy5fYXNzaWduTW9kZWxzKGwpO3RoaXMuX3VwZGF0ZU1ldHJpY3MobCk7aWYocClmb3IoO3AubGVuZ3RoOylsPXAucG9wKCksdGhpcy5fcGh5c2ljYWxUb3AtPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChsKTt0aGlzLl9wb3NpdGlvbkl0ZW1zKCk7dGhpcy5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9fSxfY3JlYXRlUG9vbDpmdW5jdGlvbihsKXt0aGlzLl9lbnN1cmVUZW1wbGF0aXplZCgpOwp2YXIgcCxtPUFycmF5KGwpO2ZvcihwPTA7cDxsO3ArKyl7dmFyIG49dGhpcy5zdGFtcChudWxsKTttW3BdPW4ucm9vdC5xdWVyeVNlbGVjdG9yKCIqIik7dGhpcy5faXRlbXNQYXJlbnQuYXBwZW5kQ2hpbGQobi5yb290KX1yZXR1cm4gbX0sX2lzQ2xpZW50RnVsbDpmdW5jdGlvbigpe3JldHVybiAwIT10aGlzLl9zY3JvbGxCb3R0b20mJnRoaXMuX3BoeXNpY2FsQm90dG9tLTE+PXRoaXMuX3Njcm9sbEJvdHRvbSYmdGhpcy5fcGh5c2ljYWxUb3A8PXRoaXMuX3Njcm9sbFBvc2l0aW9ufSxfaW5jcmVhc2VQb29sSWZOZWVkZWQ6ZnVuY3Rpb24obCl7bD10aGlzLl9jbGFtcCh0aGlzLl9waHlzaWNhbENvdW50K2wsMyx0aGlzLl92aXJ0dWFsQ291bnQtdGhpcy5fdmlydHVhbFN0YXJ0KTtsPXRoaXMuX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3cobCk7aWYodGhpcy5ncmlkKXt2YXIgcD1sJXRoaXMuX2l0ZW1zUGVyUm93O3AmJmwtcDw9dGhpcy5fcGh5c2ljYWxDb3VudCYmKGwrPXRoaXMuX2l0ZW1zUGVyUm93KTsKbC09cH1sLT10aGlzLl9waHlzaWNhbENvdW50O3A9TWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KTtpZighKDA+bCkpe2lmKDA8bCl7cD13aW5kb3cucGVyZm9ybWFuY2Uubm93KCk7W10ucHVzaC5hcHBseSh0aGlzLl9waHlzaWNhbEl0ZW1zLHRoaXMuX2NyZWF0ZVBvb2wobCkpO2Zvcih2YXIgbT0wO208bDttKyspdGhpcy5fcGh5c2ljYWxTaXplcy5wdXNoKDApO3RoaXMuX3BoeXNpY2FsQ291bnQrPWw7dGhpcy5fcGh5c2ljYWxTdGFydD50aGlzLl9waHlzaWNhbEVuZCYmdGhpcy5faXNJbmRleFJlbmRlcmVkKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpJiZ0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpPHRoaXMuX3BoeXNpY2FsRW5kJiYodGhpcy5fcGh5c2ljYWxTdGFydCs9bCk7dGhpcy5fdXBkYXRlKCk7dGhpcy5fdGVtcGxhdGVDb3N0PSh3aW5kb3cucGVyZm9ybWFuY2Uubm93KCktcCkvbDtwPU1hdGgucm91bmQoLjUqCnRoaXMuX3BoeXNpY2FsQ291bnQpfXRoaXMuX3ZpcnR1YWxFbmQ+PXRoaXMuX3ZpcnR1YWxDb3VudC0xfHwwPT09cHx8KHRoaXMuX2lzQ2xpZW50RnVsbCgpP3RoaXMuX3BoeXNpY2FsU2l6ZTx0aGlzLl9vcHRQaHlzaWNhbFNpemUmJnRoaXMuX2RlYm91bmNlKCJfaW5jcmVhc2VQb29sSWZOZWVkZWQiLHRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkLmJpbmQodGhpcyx0aGlzLl9jbGFtcChNYXRoLnJvdW5kKDUwL3RoaXMuX3RlbXBsYXRlQ29zdCksMSxwKSksayk6dGhpcy5fZGVib3VuY2UoIl9pbmNyZWFzZVBvb2xJZk5lZWRlZCIsdGhpcy5faW5jcmVhc2VQb29sSWZOZWVkZWQuYmluZCh0aGlzLHApLHQpKX19LF9yZW5kZXI6ZnVuY3Rpb24oKXtpZih0aGlzLmlzQXR0YWNoZWQmJnRoaXMuX2lzVmlzaWJsZSlpZigwIT09dGhpcy5fcGh5c2ljYWxDb3VudCl7dmFyIGw9dGhpcy5fZ2V0UmV1c2FibGVzKCEwKTt0aGlzLl9waHlzaWNhbFRvcD1sLnBoeXNpY2FsVG9wO3RoaXMuX3ZpcnR1YWxTdGFydCs9CmwuaW5kZXhlcy5sZW5ndGg7dGhpcy5fcGh5c2ljYWxTdGFydCs9bC5pbmRleGVzLmxlbmd0aDt0aGlzLl91cGRhdGUobC5pbmRleGVzKTt0aGlzLl91cGRhdGUoKTt0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKX1lbHNlIDA8dGhpcy5fdmlydHVhbENvdW50JiYodGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKSx0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgzKSl9LF9lbnN1cmVUZW1wbGF0aXplZDpmdW5jdGlvbigpe2lmKCF0aGlzLmN0b3Ipeyh0aGlzLl91c2VyVGVtcGxhdGU9dGhpcy5xdWVyeUVmZmVjdGl2ZUNoaWxkcmVuKCJ0ZW1wbGF0ZSIpKXx8Y29uc29sZS53YXJuKCJpcm9uLWxpc3QgcmVxdWlyZXMgYSB0ZW1wbGF0ZSB0byBiZSBwcm92aWRlZCBpbiBsaWdodC1kb20iKTt2YXIgbD17X19rZXlfXzohMH07bFt0aGlzLmFzXT0hMDtsW3RoaXMuaW5kZXhBc109ITA7bFt0aGlzLnNlbGVjdGVkQXNdPSEwO2wudGFiSW5kZXg9ITA7dGhpcy5faW5zdGFuY2VQcm9wcz0KbDt0aGlzLnRlbXBsYXRpemUodGhpcy5fdXNlclRlbXBsYXRlLHRoaXMubXV0YWJsZURhdGEpfX0sX2dyaWRDaGFuZ2VkOmZ1bmN0aW9uKGwscCl7InVuZGVmaW5lZCIhPT10eXBlb2YgcCYmKHRoaXMubm90aWZ5UmVzaXplKCksUG9seW1lci5mbHVzaD9Qb2x5bWVyLmZsdXNoKCk6UG9seW1lci5kb20uZmx1c2goKSxsJiZ0aGlzLl91cGRhdGVHcmlkTWV0cmljcygpKX0sX2l0ZW1zQ2hhbmdlZDpmdW5jdGlvbihsKXtpZigiaXRlbXMiPT09bC5wYXRoKXRoaXMuX3BoeXNpY2FsVG9wPXRoaXMuX3ZpcnR1YWxTdGFydD0wLHRoaXMuX3ZpcnR1YWxDb3VudD10aGlzLml0ZW1zP3RoaXMuaXRlbXMubGVuZ3RoOjAsdGhpcy5fY29sbGVjdGlvbj10aGlzLml0ZW1zJiZQb2x5bWVyLkNvbGxlY3Rpb24/UG9seW1lci5Db2xsZWN0aW9uLmdldCh0aGlzLml0ZW1zKTpudWxsLHRoaXMuX3BoeXNpY2FsSW5kZXhGb3JLZXk9e30sdGhpcy5fbGFzdFZpc2libGVJbmRleFZhbD10aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD0KbnVsbCx0aGlzLl9waHlzaWNhbENvdW50PXRoaXMuX3BoeXNpY2FsQ291bnR8fDAsdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9waHlzaWNhbEl0ZW1zfHxbXSx0aGlzLl9waHlzaWNhbFNpemVzPXRoaXMuX3BoeXNpY2FsU2l6ZXN8fFtdLHRoaXMuX3BoeXNpY2FsU3RhcnQ9MCx0aGlzLl9zY3JvbGxUb3A+dGhpcy5fc2Nyb2xsT2Zmc2V0JiZ0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKDApLHRoaXMuX3JlbW92ZUZvY3VzZWRJdGVtKCksdGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixoKTtlbHNlIGlmKCJpdGVtcy5zcGxpY2VzIj09PWwucGF0aCl7dGhpcy5fYWRqdXN0VmlydHVhbEluZGV4KGwudmFsdWUuaW5kZXhTcGxpY2VzKTt0aGlzLl92aXJ0dWFsQ291bnQ9dGhpcy5pdGVtcz90aGlzLml0ZW1zLmxlbmd0aDowO2lmKGwudmFsdWUuaW5kZXhTcGxpY2VzLnNvbWUoZnVuY3Rpb24obSl7cmV0dXJuIDA8bS5hZGRlZENvdW50fHwwPG0ucmVtb3ZlZC5sZW5ndGh9KSl7dmFyIHA9CnRoaXMuX2dldEFjdGl2ZUVsZW1lbnQoKTt0aGlzLmNvbnRhaW5zKHApJiZwLmJsdXIoKX1sPWwudmFsdWUuaW5kZXhTcGxpY2VzLnNvbWUoZnVuY3Rpb24obSl7cmV0dXJuIG0uaW5kZXgrbS5hZGRlZENvdW50Pj10aGlzLl92aXJ0dWFsU3RhcnQmJm0uaW5kZXg8PXRoaXMuX3ZpcnR1YWxFbmR9LHRoaXMpO3RoaXMuX2lzQ2xpZW50RnVsbCgpJiYhbHx8dGhpcy5fZGVib3VuY2UoIl9yZW5kZXIiLHRoaXMuX3JlbmRlcixoKX1lbHNlIml0ZW1zLmxlbmd0aCIhPT1sLnBhdGgmJnRoaXMuX2ZvcndhcmRJdGVtUGF0aChsLnBhdGgsbC52YWx1ZSl9LF9mb3J3YXJkSXRlbVBhdGg6ZnVuY3Rpb24obCxwKXtsPWwuc2xpY2UoNik7dmFyIG09bC5pbmRleE9mKCIuIik7LTE9PT1tJiYobT1sLmxlbmd0aCk7dmFyIG4scT10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSk7aWYoZil7dmFyIHU9cGFyc2VJbnQobC5zdWJzdHJpbmcoMCxtKSwxMCk7aWYobj10aGlzLl9pc0luZGV4UmVuZGVyZWQodSkpe3ZhciB4PQp0aGlzLl9nZXRQaHlzaWNhbEluZGV4KHUpO3ZhciBBPXRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbeF0pfWVsc2UgcSYmKEE9cSk7aWYoIUF8fEFbdGhpcy5pbmRleEFzXSE9PXUpcmV0dXJufWVsc2UgaWYodT1sLnN1YnN0cmluZygwLG0pLHEmJnEuX19rZXlfXz09PXUpQT1xO2Vsc2UgaWYoeD10aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5W3VdLEE9dGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t4XSksIUF8fEEuX19rZXlfXyE9PXUpcmV0dXJuO2w9bC5zdWJzdHJpbmcobSsxKTtsPXRoaXMuYXMrKGw/Ii4iK2w6IiIpO2Y/QS5fc2V0UGVuZGluZ1Byb3BlcnR5T3JQYXRoKGwscCwhMSwhMCk6QS5ub3RpZnlQYXRoKGwscCwhMCk7QS5fZmx1c2hQcm9wZXJ0aWVzJiZBLl9mbHVzaFByb3BlcnRpZXMoITApO24mJih0aGlzLl91cGRhdGVNZXRyaWNzKFt4XSksdGhpcy5fcG9zaXRpb25JdGVtcygpLHRoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpKX0sCl9hZGp1c3RWaXJ0dWFsSW5kZXg6ZnVuY3Rpb24obCl7bC5mb3JFYWNoKGZ1bmN0aW9uKHApe3AucmVtb3ZlZC5mb3JFYWNoKHRoaXMuX3JlbW92ZUl0ZW0sdGhpcyk7cC5pbmRleDx0aGlzLl92aXJ0dWFsU3RhcnQmJihwPU1hdGgubWF4KHAuYWRkZWRDb3VudC1wLnJlbW92ZWQubGVuZ3RoLHAuaW5kZXgtdGhpcy5fdmlydHVhbFN0YXJ0KSx0aGlzLl92aXJ0dWFsU3RhcnQrPXAsMDw9dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCYmKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrPXApKX0sdGhpcyl9LF9yZW1vdmVJdGVtOmZ1bmN0aW9uKGwpe3RoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdChsKTt0aGlzLl9mb2N1c2VkSXRlbSYmdGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fZm9jdXNlZEl0ZW0pW3RoaXMuYXNdPT09bCYmdGhpcy5fcmVtb3ZlRm9jdXNlZEl0ZW0oKX0sX2l0ZXJhdGVJdGVtczpmdW5jdGlvbihsLHApe3ZhciBtLG47aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgmJnApZm9yKG49CjA7bjxwLmxlbmd0aDtuKyspe3ZhciBxPXBbbl07dmFyIHU9dGhpcy5fY29tcHV0ZVZpZHgocSk7aWYobnVsbCE9KG09bC5jYWxsKHRoaXMscSx1KSkpcmV0dXJuIG19ZWxzZXtxPXRoaXMuX3BoeXNpY2FsU3RhcnQ7Zm9yKHU9dGhpcy5fdmlydHVhbFN0YXJ0O3E8dGhpcy5fcGh5c2ljYWxDb3VudDtxKyssdSsrKWlmKG51bGwhPShtPWwuY2FsbCh0aGlzLHEsdSkpKXJldHVybiBtO2ZvcihxPTA7cTx0aGlzLl9waHlzaWNhbFN0YXJ0O3ErKyx1KyspaWYobnVsbCE9KG09bC5jYWxsKHRoaXMscSx1KSkpcmV0dXJuIG19fSxfY29tcHV0ZVZpZHg6ZnVuY3Rpb24obCl7cmV0dXJuIGw+PXRoaXMuX3BoeXNpY2FsU3RhcnQ/dGhpcy5fdmlydHVhbFN0YXJ0KyhsLXRoaXMuX3BoeXNpY2FsU3RhcnQpOnRoaXMuX3ZpcnR1YWxTdGFydCsodGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl9waHlzaWNhbFN0YXJ0KStsfSxfYXNzaWduTW9kZWxzOmZ1bmN0aW9uKGwpe3RoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihwLAptKXt2YXIgbj10aGlzLl9waHlzaWNhbEl0ZW1zW3BdLHE9dGhpcy5pdGVtcyYmdGhpcy5pdGVtc1ttXTtpZihudWxsIT1xKXt2YXIgdT10aGlzLm1vZGVsRm9yRWxlbWVudChuKTt1Ll9fa2V5X189dGhpcy5fY29sbGVjdGlvbj90aGlzLl9jb2xsZWN0aW9uLmdldEtleShxKTpudWxsO3RoaXMuX2ZvcndhcmRQcm9wZXJ0eSh1LHRoaXMuYXMscSk7dGhpcy5fZm9yd2FyZFByb3BlcnR5KHUsdGhpcy5zZWxlY3RlZEFzLHRoaXMuJC5zZWxlY3Rvci5pc1NlbGVjdGVkKHEpKTt0aGlzLl9mb3J3YXJkUHJvcGVydHkodSx0aGlzLmluZGV4QXMsbSk7dGhpcy5fZm9yd2FyZFByb3BlcnR5KHUsInRhYkluZGV4Iix0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PT09bT8wOi0xKTt0aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5W3UuX19rZXlfX109cDt1Ll9mbHVzaFByb3BlcnRpZXMmJnUuX2ZsdXNoUHJvcGVydGllcyghMCk7bi5yZW1vdmVBdHRyaWJ1dGUoImhpZGRlbiIpfWVsc2Ugbi5zZXRBdHRyaWJ1dGUoImhpZGRlbiIsCiIiKX0sbCl9LF91cGRhdGVNZXRyaWNzOmZ1bmN0aW9uKGwpe1BvbHltZXIuZmx1c2g/UG9seW1lci5mbHVzaCgpOlBvbHltZXIuZG9tLmZsdXNoKCk7dmFyIHA9MCxtPTAsbj10aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCxxPXRoaXMuX3BoeXNpY2FsQXZlcmFnZTt0aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24odSl7bSs9dGhpcy5fcGh5c2ljYWxTaXplc1t1XTt0aGlzLl9waHlzaWNhbFNpemVzW3VdPXRoaXMuX3BoeXNpY2FsSXRlbXNbdV0ub2Zmc2V0SGVpZ2h0O3ArPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdV07dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQrPXRoaXMuX3BoeXNpY2FsU2l6ZXNbdV0/MTowfSxsKTt0aGlzLmdyaWQ/KHRoaXMuX3VwZGF0ZUdyaWRNZXRyaWNzKCksdGhpcy5fcGh5c2ljYWxTaXplPU1hdGguY2VpbCh0aGlzLl9waHlzaWNhbENvdW50L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9yb3dIZWlnaHQpOihtPTE9PT10aGlzLl9pdGVtc1BlclJvdz9tOgpNYXRoLmNlaWwodGhpcy5fcGh5c2ljYWxDb3VudC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5fcm93SGVpZ2h0LHRoaXMuX3BoeXNpY2FsU2l6ZT10aGlzLl9waHlzaWNhbFNpemUrcC1tLHRoaXMuX2l0ZW1zUGVyUm93PTEpO3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50IT09biYmKHRoaXMuX3BoeXNpY2FsQXZlcmFnZT1NYXRoLnJvdW5kKChxKm4rcCkvdGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQpKX0sX3VwZGF0ZUdyaWRNZXRyaWNzOmZ1bmN0aW9uKCl7dGhpcy5faXRlbVdpZHRoPTA8dGhpcy5fcGh5c2ljYWxDb3VudD90aGlzLl9waHlzaWNhbEl0ZW1zWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoOjIwMDt0aGlzLl9yb3dIZWlnaHQ9MDx0aGlzLl9waHlzaWNhbENvdW50P3RoaXMuX3BoeXNpY2FsSXRlbXNbMF0ub2Zmc2V0SGVpZ2h0OjIwMDt0aGlzLl9pdGVtc1BlclJvdz10aGlzLl9pdGVtV2lkdGg/TWF0aC5mbG9vcih0aGlzLl92aWV3cG9ydFdpZHRoL3RoaXMuX2l0ZW1XaWR0aCk6CnRoaXMuX2l0ZW1zUGVyUm93fSxfcG9zaXRpb25JdGVtczpmdW5jdGlvbigpe3RoaXMuX2FkanVzdFNjcm9sbFBvc2l0aW9uKCk7dmFyIGw9dGhpcy5fcGh5c2ljYWxUb3A7aWYodGhpcy5ncmlkKXt2YXIgcD0odGhpcy5fdmlld3BvcnRXaWR0aC10aGlzLl9pdGVtc1BlclJvdyp0aGlzLl9pdGVtV2lkdGgpLzI7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKG0sbil7dmFyIHE9TWF0aC5mbG9vcihuJXRoaXMuX2l0ZW1zUGVyUm93KnRoaXMuX2l0ZW1XaWR0aCtwKTt0aGlzLl9pc1JUTCYmKHEqPS0xKTt0aGlzLnRyYW5zbGF0ZTNkKHErInB4IixsKyJweCIsMCx0aGlzLl9waHlzaWNhbEl0ZW1zW21dKTt0aGlzLl9zaG91bGRSZW5kZXJOZXh0Um93KG4pJiYobCs9dGhpcy5fcm93SGVpZ2h0KX0pfWVsc2UgdGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKG0pe3RoaXMudHJhbnNsYXRlM2QoMCxsKyJweCIsMCx0aGlzLl9waHlzaWNhbEl0ZW1zW21dKTtsKz10aGlzLl9waHlzaWNhbFNpemVzW21dfSl9LApfZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50OmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmdyaWQ/dGhpcy5fY29tcHV0ZVZpZHgobCkldGhpcy5faXRlbXNQZXJSb3chPT10aGlzLl9pdGVtc1BlclJvdy0xPzA6dGhpcy5fcm93SGVpZ2h0OnRoaXMuX3BoeXNpY2FsU2l6ZXNbbF19LF9zaG91bGRSZW5kZXJOZXh0Um93OmZ1bmN0aW9uKGwpe3JldHVybiBsJXRoaXMuX2l0ZW1zUGVyUm93PT09dGhpcy5faXRlbXNQZXJSb3ctMX0sX2FkanVzdFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGw9MD09PXRoaXMuX3ZpcnR1YWxTdGFydD90aGlzLl9waHlzaWNhbFRvcDpNYXRoLm1pbih0aGlzLl9zY3JvbGxQb3NpdGlvbit0aGlzLl9waHlzaWNhbFRvcCwwKTtpZigwIT09bCl7dGhpcy5fcGh5c2ljYWxUb3AtPWw7dmFyIHA9dGhpcy5fc2Nyb2xsVG9wOyFkJiYwPHAmJnRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24ocC1sKX19LF9yZXNldFNjcm9sbFBvc2l0aW9uOmZ1bmN0aW9uKGwpe3RoaXMuc2Nyb2xsVGFyZ2V0JiYKMDw9bCYmKHRoaXMuX3Njcm9sbFBvc2l0aW9uPXRoaXMuX3Njcm9sbFRvcD1sKX0sX3VwZGF0ZVNjcm9sbGVyU2l6ZTpmdW5jdGlvbihsKXt0aGlzLl9lc3RTY3JvbGxIZWlnaHQ9dGhpcy5ncmlkP3RoaXMuX3ZpcnR1YWxSb3dDb3VudCp0aGlzLl9yb3dIZWlnaHQ6dGhpcy5fcGh5c2ljYWxCb3R0b20rTWF0aC5tYXgodGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3BoeXNpY2FsQ291bnQtdGhpcy5fdmlydHVhbFN0YXJ0LDApKnRoaXMuX3BoeXNpY2FsQXZlcmFnZTtpZigobD0obD0obD1sfHwwPT09dGhpcy5fc2Nyb2xsSGVpZ2h0KXx8dGhpcy5fc2Nyb2xsUG9zaXRpb24+PXRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9waHlzaWNhbFNpemUpfHx0aGlzLmdyaWQmJnRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ8dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0KXx8TWF0aC5hYnModGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3Njcm9sbEhlaWdodCk+PXRoaXMuX3ZpZXdwb3J0SGVpZ2h0KXRoaXMuJC5pdGVtcy5zdHlsZS5oZWlnaHQ9CnRoaXMuX2VzdFNjcm9sbEhlaWdodCsicHgiLHRoaXMuX3Njcm9sbEhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHR9LHNjcm9sbFRvSXRlbTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5zY3JvbGxUb0luZGV4KHRoaXMuaXRlbXMuaW5kZXhPZihsKSl9LHNjcm9sbFRvSW5kZXg6ZnVuY3Rpb24obCl7aWYoISgibnVtYmVyIiE9PXR5cGVvZiBsfHwwPmx8fGw+dGhpcy5pdGVtcy5sZW5ndGgtMSkmJihQb2x5bWVyLmZsdXNoP1BvbHltZXIuZmx1c2goKTpQb2x5bWVyLmRvbS5mbHVzaCgpLDAhPT10aGlzLl9waHlzaWNhbENvdW50KSl7bD10aGlzLl9jbGFtcChsLDAsdGhpcy5fdmlydHVhbENvdW50LTEpO2lmKCF0aGlzLl9pc0luZGV4UmVuZGVyZWQobCl8fGw+PXRoaXMuX21heFZpcnR1YWxTdGFydCl0aGlzLl92aXJ0dWFsU3RhcnQ9dGhpcy5ncmlkP2wtMip0aGlzLl9pdGVtc1BlclJvdzpsLTE7dGhpcy5fbWFuYWdlRm9jdXMoKTt0aGlzLl9hc3NpZ25Nb2RlbHMoKTt0aGlzLl91cGRhdGVNZXRyaWNzKCk7CnRoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7Zm9yKHZhciBwPXRoaXMuX3BoeXNpY2FsU3RhcnQsbT10aGlzLl92aXJ0dWFsU3RhcnQsbj0wLHE9dGhpcy5faGlkZGVuQ29udGVudFNpemU7bTxsJiZuPD1xOyluKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQocCkscD0ocCsxKSV0aGlzLl9waHlzaWNhbENvdW50LG0rKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApO3RoaXMuX3Bvc2l0aW9uSXRlbXMoKTt0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbE9mZnNldCtuKTt0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgwKTt0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGx9fSxfcmVzZXRBdmVyYWdlOmZ1bmN0aW9uKCl7dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQ9CnRoaXMuX3BoeXNpY2FsQXZlcmFnZT0wfSxfcmVzaXplSGFuZGxlcjpmdW5jdGlvbigpe3RoaXMuX2RlYm91bmNlKCJfcmVuZGVyIixmdW5jdGlvbigpe3RoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9bnVsbDt0aGlzLnVwZGF0ZVZpZXdwb3J0Qm91bmRhcmllcygpO3RoaXMuX2lzVmlzaWJsZT8odGhpcy50b2dnbGVTY3JvbGxMaXN0ZW5lcighMCksdGhpcy5fcmVzZXRBdmVyYWdlKCksdGhpcy5fcmVuZGVyKCkpOnRoaXMudG9nZ2xlU2Nyb2xsTGlzdGVuZXIoITEpfSxoKX0sc2VsZWN0SXRlbTpmdW5jdGlvbihsKXtyZXR1cm4gdGhpcy5zZWxlY3RJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YobCkpfSxzZWxlY3RJbmRleDpmdW5jdGlvbihsKXtpZighKDA+bHx8bD49dGhpcy5fdmlydHVhbENvdW50KSl7IXRoaXMubXVsdGlTZWxlY3Rpb24mJnRoaXMuc2VsZWN0ZWRJdGVtJiZ0aGlzLmNsZWFyU2VsZWN0aW9uKCk7aWYodGhpcy5faXNJbmRleFJlbmRlcmVkKGwpKXt2YXIgcD0KdGhpcy5tb2RlbEZvckVsZW1lbnQodGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9nZXRQaHlzaWNhbEluZGV4KGwpXSk7cCYmKHBbdGhpcy5zZWxlY3RlZEFzXT0hMCk7dGhpcy51cGRhdGVTaXplRm9ySW5kZXgobCl9dGhpcy4kLnNlbGVjdG9yLnNlbGVjdEluZGV4P3RoaXMuJC5zZWxlY3Rvci5zZWxlY3RJbmRleChsKTp0aGlzLiQuc2VsZWN0b3Iuc2VsZWN0KHRoaXMuaXRlbXNbbF0pfX0sZGVzZWxlY3RJdGVtOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLmRlc2VsZWN0SW5kZXgodGhpcy5pdGVtcy5pbmRleE9mKGwpKX0sZGVzZWxlY3RJbmRleDpmdW5jdGlvbihsKXswPmx8fGw+PXRoaXMuX3ZpcnR1YWxDb3VudHx8KHRoaXMuX2lzSW5kZXhSZW5kZXJlZChsKSYmKHRoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleChsKV0pW3RoaXMuc2VsZWN0ZWRBc109ITEsdGhpcy51cGRhdGVTaXplRm9ySW5kZXgobCkpLHRoaXMuJC5zZWxlY3Rvci5kZXNlbGVjdEluZGV4Pwp0aGlzLiQuc2VsZWN0b3IuZGVzZWxlY3RJbmRleChsKTp0aGlzLiQuc2VsZWN0b3IuZGVzZWxlY3QodGhpcy5pdGVtc1tsXSkpfSx0b2dnbGVTZWxlY3Rpb25Gb3JJdGVtOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnRvZ2dsZVNlbGVjdGlvbkZvckluZGV4KHRoaXMuaXRlbXMuaW5kZXhPZihsKSl9LHRvZ2dsZVNlbGVjdGlvbkZvckluZGV4OmZ1bmN0aW9uKGwpeyh0aGlzLiQuc2VsZWN0b3IuaXNJbmRleFNlbGVjdGVkP3RoaXMuJC5zZWxlY3Rvci5pc0luZGV4U2VsZWN0ZWQobCk6dGhpcy4kLnNlbGVjdG9yLmlzU2VsZWN0ZWQodGhpcy5pdGVtc1tsXSkpP3RoaXMuZGVzZWxlY3RJbmRleChsKTp0aGlzLnNlbGVjdEluZGV4KGwpfSxjbGVhclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuX2l0ZXJhdGVJdGVtcyhmdW5jdGlvbihsKXt0aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9waHlzaWNhbEl0ZW1zW2xdKVt0aGlzLnNlbGVjdGVkQXNdPSExfSk7dGhpcy4kLnNlbGVjdG9yLmNsZWFyU2VsZWN0aW9uKCl9LApfc2VsZWN0aW9uRW5hYmxlZENoYW5nZWQ6ZnVuY3Rpb24obCl7KGw/dGhpcy5saXN0ZW46dGhpcy51bmxpc3RlbikuY2FsbCh0aGlzLHRoaXMsInRhcCIsIl9zZWxlY3Rpb25IYW5kbGVyIil9LF9zZWxlY3Rpb25IYW5kbGVyOmZ1bmN0aW9uKGwpe3ZhciBwPXRoaXMubW9kZWxGb3JFbGVtZW50KGwudGFyZ2V0KTtpZihwKXt2YXIgbT1Qb2x5bWVyLmRvbShsKS5wYXRoWzBdO2w9dGhpcy5fZ2V0QWN0aXZlRWxlbWVudCgpO3ZhciBuPXRoaXMuX3BoeXNpY2FsSXRlbXNbdGhpcy5fZ2V0UGh5c2ljYWxJbmRleChwW3RoaXMuaW5kZXhBc10pXTtpZigiaW5wdXQiIT09bS5sb2NhbE5hbWUmJiJidXR0b24iIT09bS5sb2NhbE5hbWUmJiJzZWxlY3QiIT09bS5sb2NhbE5hbWUpe209cC50YWJJbmRleDtwLnRhYkluZGV4PS0xMDA7dmFyIHE9bD9sLnRhYkluZGV4Oi0xO3AudGFiSW5kZXg9bTtsJiZuIT09bCYmbi5jb250YWlucyhsKSYmLTEwMCE9PXF8fHRoaXMudG9nZ2xlU2VsZWN0aW9uRm9ySXRlbShwW3RoaXMuYXNdKX19fSwKX211bHRpU2VsZWN0aW9uQ2hhbmdlZDpmdW5jdGlvbihsKXt0aGlzLmNsZWFyU2VsZWN0aW9uKCk7dGhpcy4kLnNlbGVjdG9yLm11bHRpPWx9LHVwZGF0ZVNpemVGb3JJdGVtOmZ1bmN0aW9uKGwpe3JldHVybiB0aGlzLnVwZGF0ZVNpemVGb3JJbmRleCh0aGlzLml0ZW1zLmluZGV4T2YobCkpfSx1cGRhdGVTaXplRm9ySW5kZXg6ZnVuY3Rpb24obCl7aWYoIXRoaXMuX2lzSW5kZXhSZW5kZXJlZChsKSlyZXR1cm4gbnVsbDt0aGlzLl91cGRhdGVNZXRyaWNzKFt0aGlzLl9nZXRQaHlzaWNhbEluZGV4KGwpXSk7dGhpcy5fcG9zaXRpb25JdGVtcygpO3JldHVybiBudWxsfSxfbWFuYWdlRm9jdXM6ZnVuY3Rpb24oKXt2YXIgbD10aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4OzA8PWwmJmw8dGhpcy5fdmlydHVhbENvdW50P3RoaXMuX2lzSW5kZXhSZW5kZXJlZChsKT90aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKTp0aGlzLl9jcmVhdGVGb2N1c0JhY2tmaWxsSXRlbSgpOjA8dGhpcy5fdmlydHVhbENvdW50JiYKMDx0aGlzLl9waHlzaWNhbENvdW50JiYodGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9dGhpcy5fcGh5c2ljYWxTdGFydCx0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PXRoaXMuX3ZpcnR1YWxTdGFydCx0aGlzLl9mb2N1c2VkSXRlbT10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX3BoeXNpY2FsU3RhcnRdKX0sX2NvbnZlcnRJbmRleFRvQ29tcGxldGVSb3c6ZnVuY3Rpb24obCl7dGhpcy5faXRlbXNQZXJSb3c9dGhpcy5faXRlbXNQZXJSb3d8fDE7cmV0dXJuIHRoaXMuZ3JpZD9NYXRoLmNlaWwobC90aGlzLl9pdGVtc1BlclJvdykqdGhpcy5faXRlbXNQZXJSb3c6bH0sX2lzSW5kZXhSZW5kZXJlZDpmdW5jdGlvbihsKXtyZXR1cm4gbD49dGhpcy5fdmlydHVhbFN0YXJ0JiZsPD10aGlzLl92aXJ0dWFsRW5kfSxfaXNJbmRleFZpc2libGU6ZnVuY3Rpb24obCl7cmV0dXJuIGw+PXRoaXMuZmlyc3RWaXNpYmxlSW5kZXgmJmw8PXRoaXMubGFzdFZpc2libGVJbmRleH0sX2dldFBoeXNpY2FsSW5kZXg6ZnVuY3Rpb24obCl7cmV0dXJuIGY/Cih0aGlzLl9waHlzaWNhbFN0YXJ0KyhsLXRoaXMuX3ZpcnR1YWxTdGFydCkpJXRoaXMuX3BoeXNpY2FsQ291bnQ6dGhpcy5fcGh5c2ljYWxJbmRleEZvcktleVt0aGlzLl9jb2xsZWN0aW9uLmdldEtleSh0aGlzLml0ZW1zW2xdKV19LGZvY3VzSXRlbTpmdW5jdGlvbihsKXt0aGlzLl9mb2N1c1BoeXNpY2FsSXRlbShsKX0sX2ZvY3VzUGh5c2ljYWxJdGVtOmZ1bmN0aW9uKGwpe2lmKCEoMD5sfHxsPj10aGlzLl92aXJ0dWFsQ291bnQpKXt0aGlzLl9yZXN0b3JlRm9jdXNlZEl0ZW0oKTt0aGlzLl9pc0luZGV4UmVuZGVyZWQobCl8fHRoaXMuc2Nyb2xsVG9JbmRleChsKTt2YXIgcD10aGlzLl9waHlzaWNhbEl0ZW1zW3RoaXMuX2dldFBoeXNpY2FsSW5kZXgobCldLG09dGhpcy5tb2RlbEZvckVsZW1lbnQocCksbjttLnRhYkluZGV4PS0xMDA7LTEwMD09PXAudGFiSW5kZXgmJihuPXApO258fChuPVBvbHltZXIuZG9tKHApLnF1ZXJ5U2VsZWN0b3IoJ1t0YWJpbmRleFx4M2QiLTEwMCJdJykpOwptLnRhYkluZGV4PTA7dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleD1sO24mJm4uZm9jdXMoKX19LF9yZW1vdmVGb2N1c2VkSXRlbTpmdW5jdGlvbigpe3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiZ0aGlzLl9pdGVtc1BhcmVudC5yZW1vdmVDaGlsZCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSk7dGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW09bnVsbDt0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PS0xfSxfY3JlYXRlRm9jdXNCYWNrZmlsbEl0ZW06ZnVuY3Rpb24oKXt2YXIgbD10aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleDtpZighKHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtfHwwPnRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpKXtpZighdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW0pe3ZhciBwPXRoaXMuc3RhbXAobnVsbCk7dGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW09CnAucm9vdC5xdWVyeVNlbGVjdG9yKCIqIik7dGhpcy5faXRlbXNQYXJlbnQuYXBwZW5kQ2hpbGQocC5yb290KX10aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbT10aGlzLl9waHlzaWNhbEl0ZW1zW2xdO3RoaXMubW9kZWxGb3JFbGVtZW50KHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKS50YWJJbmRleD0wO3RoaXMuX3BoeXNpY2FsSXRlbXNbbF09dGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW07dGhpcy5fZm9jdXNlZFBoeXNpY2FsSW5kZXg9bDt0aGlzLnRyYW5zbGF0ZTNkKDAsIi0xMDAwMHB4IiwwLHRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtKX19LF9yZXN0b3JlRm9jdXNlZEl0ZW06ZnVuY3Rpb24oKXtpZih0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSYmISgwPnRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpKXt0aGlzLl9hc3NpZ25Nb2RlbHMoKTt2YXIgbD10aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleD10aGlzLl9nZXRQaHlzaWNhbEluZGV4KHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLApwPXRoaXMuX3BoeXNpY2FsSXRlbXNbbF07aWYocCl7dmFyIG09dGhpcy5tb2RlbEZvckVsZW1lbnQocCksbj10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbSk7bVt0aGlzLmFzXT09PW5bdGhpcy5hc10/KHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtPXAsbS50YWJJbmRleD0tMSx0aGlzLl9waHlzaWNhbEl0ZW1zW2xdPXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMudHJhbnNsYXRlM2QoMCwiLTEwMDAwcHgiLDAsdGhpcy5fZm9jdXNCYWNrZmlsbEl0ZW0pKToodGhpcy5fcmVtb3ZlRm9jdXNlZEl0ZW0oKSx0aGlzLl9mb2N1c0JhY2tmaWxsSXRlbT1udWxsKTt0aGlzLl9vZmZzY3JlZW5Gb2N1c2VkSXRlbT1udWxsfX19LF9kaWRGb2N1czpmdW5jdGlvbihsKXtsPXRoaXMubW9kZWxGb3JFbGVtZW50KGwudGFyZ2V0KTt2YXIgcD10aGlzLm1vZGVsRm9yRWxlbWVudCh0aGlzLl9mb2N1c2VkSXRlbSksbT1udWxsIT09dGhpcy5fb2Zmc2NyZWVuRm9jdXNlZEl0ZW0sCm49dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleDtsJiYocD09PWw/dGhpcy5faXNJbmRleFZpc2libGUobil8fHRoaXMuc2Nyb2xsVG9JbmRleChuKToodGhpcy5fcmVzdG9yZUZvY3VzZWRJdGVtKCkscCYmKHAudGFiSW5kZXg9LTEpLGwudGFiSW5kZXg9MCx0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PW49bFt0aGlzLmluZGV4QXNdLHRoaXMuX2ZvY3VzZWRQaHlzaWNhbEluZGV4PXRoaXMuX2dldFBoeXNpY2FsSW5kZXgobiksdGhpcy5fZm9jdXNlZEl0ZW09dGhpcy5fcGh5c2ljYWxJdGVtc1t0aGlzLl9mb2N1c2VkUGh5c2ljYWxJbmRleF0sbSYmIXRoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtJiZ0aGlzLl91cGRhdGUoKSkpfSxfa2V5ZG93bkhhbmRsZXI6ZnVuY3Rpb24obCl7c3dpdGNoKGwua2V5Q29kZSl7Y2FzZSA0MDp0aGlzLl9mb2N1c2VkVmlydHVhbEluZGV4PHRoaXMuX3ZpcnR1YWxDb3VudC0xJiZsLnByZXZlbnREZWZhdWx0KCk7dGhpcy5fZm9jdXNQaHlzaWNhbEl0ZW0odGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCsKKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzOTp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPy0xOjEpKTticmVhaztjYXNlIDM4OjA8dGhpcy5fZm9jdXNlZFZpcnR1YWxJbmRleCYmbC5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgtKHRoaXMuZ3JpZD90aGlzLl9pdGVtc1BlclJvdzoxKSk7YnJlYWs7Y2FzZSAzNzp0aGlzLmdyaWQmJnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgrKHRoaXMuX2lzUlRMPzE6LTEpKTticmVhaztjYXNlIDEzOnRoaXMuX2ZvY3VzUGh5c2ljYWxJdGVtKHRoaXMuX2ZvY3VzZWRWaXJ0dWFsSW5kZXgpLHRoaXMuc2VsZWN0aW9uRW5hYmxlZCYmdGhpcy5fc2VsZWN0aW9uSGFuZGxlcihsKX19LF9jbGFtcDpmdW5jdGlvbihsLApwLG0pe3JldHVybiBNYXRoLm1pbihtLE1hdGgubWF4KHAsbCkpfSxfZGVib3VuY2U6ZnVuY3Rpb24obCxwLG0pe2Y/KHRoaXMuX2RlYm91bmNlcnM9dGhpcy5fZGVib3VuY2Vyc3x8e30sdGhpcy5fZGVib3VuY2Vyc1tsXT1Qb2x5bWVyLkRlYm91bmNlci5kZWJvdW5jZSh0aGlzLl9kZWJvdW5jZXJzW2xdLG0scC5iaW5kKHRoaXMpKSxQb2x5bWVyLmVucXVldWVEZWJvdW5jZXIodGhpcy5fZGVib3VuY2Vyc1tsXSkpOlBvbHltZXIuZG9tLmFkZERlYm91bmNlcih0aGlzLmRlYm91bmNlKGwscCkpfSxfZm9yd2FyZFByb3BlcnR5OmZ1bmN0aW9uKGwscCxtKXtmP2wuX3NldFBlbmRpbmdQcm9wZXJ0eShwLG0pOmxbcF09bX0sX2ZvcndhcmRIb3N0UHJvcFYyOmZ1bmN0aW9uKGwscCl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaChmdW5jdGlvbihtKXttJiZ0aGlzLm1vZGVsRm9yRWxlbWVudChtKS5mb3J3YXJkSG9zdFByb3AobCwKcCl9LHRoaXMpfSxfbm90aWZ5SW5zdGFuY2VQcm9wVjI6ZnVuY3Rpb24obCxwLG0pe1BvbHltZXIuUGF0aC5tYXRjaGVzKHRoaXMuYXMscCkmJihsPWxbdGhpcy5pbmRleEFzXSxwPT10aGlzLmFzJiYodGhpcy5pdGVtc1tsXT1tKSx0aGlzLm5vdGlmeVBhdGgoUG9seW1lci5QYXRoLnRyYW5zbGF0ZSh0aGlzLmFzLCJpdGVtcy4iK2wscCksbSkpfSxfZ2V0U3RhbXBlZENoaWxkcmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsSXRlbXN9LF9mb3J3YXJkSW5zdGFuY2VQYXRoOmZ1bmN0aW9uKGwscCxtKXswPT09cC5pbmRleE9mKHRoaXMuYXMrIi4iKSYmdGhpcy5ub3RpZnlQYXRoKCJpdGVtcy4iK2wuX19rZXlfXysiLiIrcC5zbGljZSh0aGlzLmFzLmxlbmd0aCsxKSxtKX0sX2ZvcndhcmRQYXJlbnRQYXRoOmZ1bmN0aW9uKGwscCl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaChmdW5jdGlvbihtKXttJiYKdGhpcy5tb2RlbEZvckVsZW1lbnQobSkubm90aWZ5UGF0aChsLHAsITApfSx0aGlzKX0sX2ZvcndhcmRQYXJlbnRQcm9wOmZ1bmN0aW9uKGwscCl7KHRoaXMuX3BoeXNpY2FsSXRlbXN8fFtdKS5jb25jYXQoW3RoaXMuX29mZnNjcmVlbkZvY3VzZWRJdGVtLHRoaXMuX2ZvY3VzQmFja2ZpbGxJdGVtXSkuZm9yRWFjaChmdW5jdGlvbihtKXttJiYodGhpcy5tb2RlbEZvckVsZW1lbnQobSlbbF09cCl9LHRoaXMpfSxfZ2V0QWN0aXZlRWxlbWVudDpmdW5jdGlvbigpe3ZhciBsPXRoaXMuX2l0ZW1zUGFyZW50Lm5vZGUuZG9tSG9zdDtyZXR1cm4gUG9seW1lci5kb20obD9sLnJvb3Q6ZG9jdW1lbnQpLmFjdGl2ZUVsZW1lbnR9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWl0ZW0vcGFwZXItaXRlbS1ib2R5Lmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLWl0ZW0tYm9keSJ9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1jb21tb24vdGYtZ3JhcGgtaWNvbi5qcwooZnVuY3Rpb24oYil7KGZ1bmN0aW9uKGQpeyhmdW5jdGlvbihmKXtsZXQgaDsoZnVuY3Rpb24oayl7ay5DT05TVD0iQ09OU1QiO2suTUVUQT0iTUVUQSI7ay5PUD0iT1AiO2suU0VSSUVTPSJTRVJJRVMiO2suU1VNTUFSWT0iU1VNTUFSWSJ9KShoPWYuR3JhcGhJY29uVHlwZXx8KGYuR3JhcGhJY29uVHlwZT17fSkpO1BvbHltZXIoe2lzOiJ0Zi1ncmFwaC1pY29uIixwcm9wZXJ0aWVzOnt0eXBlOlN0cmluZyx2ZXJ0aWNhbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxmaWxsT3ZlcnJpZGU6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LHN0cm9rZU92ZXJyaWRlOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHZhbHVlOjIwfSxmYWRlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfZmlsbDp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlRmlsbCh0eXBlLCBmaWxsT3ZlcnJpZGUpIn0sX3N0cm9rZTp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlU3Ryb2tlKHR5cGUsIHN0cm9rZU92ZXJyaWRlKSJ9fSwKZ2V0U3ZnRGVmaW5hYmxlRWxlbWVudCgpe3JldHVybiB0aGlzLiQuc3ZnRGVmc30sX2NvbXB1dGVGaWxsKGssdCl7aWYobnVsbCE9dClyZXR1cm4gdDtzd2l0Y2goayl7Y2FzZSBoLk1FVEE6cmV0dXJuIGIuZ3JhcGgucmVuZGVyLk1ldGFub2RlQ29sb3JzLkRFRkFVTFRfRklMTDtjYXNlIGguU0VSSUVTOnJldHVybiBiLmdyYXBoLnJlbmRlci5TZXJpZXNOb2RlQ29sb3JzLkRFRkFVTFRfRklMTDtkZWZhdWx0OnJldHVybiBiLmdyYXBoLnJlbmRlci5PcE5vZGVDb2xvcnMuREVGQVVMVF9GSUxMfX0sX2NvbXB1dGVTdHJva2Uoayx0KXtpZihudWxsIT10KXJldHVybiB0O3N3aXRjaChrKXtjYXNlIGguTUVUQTpyZXR1cm4gYi5ncmFwaC5yZW5kZXIuTWV0YW5vZGVDb2xvcnMuREVGQVVMVF9TVFJPS0U7Y2FzZSBoLlNFUklFUzpyZXR1cm4gYi5ncmFwaC5yZW5kZXIuU2VyaWVzTm9kZUNvbG9ycy5ERUZBVUxUX1NUUk9LRTtkZWZhdWx0OnJldHVybiBiLmdyYXBoLnJlbmRlci5PcE5vZGVDb2xvcnMuREVGQVVMVF9TVFJPS0V9fSwKX2lzVHlwZShrLHQpe3JldHVybiBrPT09dH0sX2ZhZGVkQ2xhc3M6ZnVuY3Rpb24oayx0KXtyZXR1cm4gaz8iZmFkZWQtIit0OiIifX0pfSkoZC5pY29ufHwoZC5pY29uPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWNvbW1vbi90Zi1ub2RlLWljb24uaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtbm9kZS1pY29uIixwcm9wZXJ0aWVzOntub2RlOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsfSxyZW5kZXJJbmZvOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsfSxjb2xvckJ5Ont0eXBlOk9iamVjdCx2YWx1ZToic3RydWN0dXJhbCJ9LHRlbXBsYXRlSW5kZXg6e3R5cGU6RnVuY3Rpb24sdmFsdWU6bnVsbH0sdHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sdmVydGljYWw6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sY29uc3Q6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sc3VtbWFyeTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxmaWxsOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHZhbHVlOjIwfSxfZmlsbE92ZXJyaWRlOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVGaWxsT3ZlcnJpZGUobm9kZSwgcmVuZGVySW5mbywgY29sb3JCeSwgdGVtcGxhdGVJbmRleCwgZmlsbCkiLG9ic2VydmVyOiJfb25GaWxsT3ZlcnJpZGVDaGFuZ2VkIn19LApfY29tcHV0ZUZpbGxPdmVycmlkZTpmdW5jdGlvbihiLGQsZixoLGspe3JldHVybiBiJiZkJiZmJiZoPyhiPXRmLmdyYXBoLnNjZW5lLm5vZGUsYi5nZXRGaWxsRm9yTm9kZShoLGIuQ29sb3JCeVtmLnRvVXBwZXJDYXNlKCldLGQsITEpKTprfSxfZ2V0U3Ryb2tlT3ZlcnJpZGU6ZnVuY3Rpb24oYil7cmV0dXJuIGI/dGYuZ3JhcGguc2NlbmUubm9kZS5nZXRTdHJva2VGb3JGaWxsKGIpOm51bGx9LF9nZXRUeXBlOmZ1bmN0aW9uKGIsZCxmLGgpe2NvbnN0IGs9dGYuZ3JhcGguaWNvbi5HcmFwaEljb25UeXBlO2lmKGIpc3dpdGNoKGIudHlwZSl7Y2FzZSB0Zi5ncmFwaC5Ob2RlVHlwZS5PUDpyZXR1cm4gYj1iLm9wLCJzdHJpbmciIT09dHlwZW9mIGI/ay5PUDoiQ29uc3QiPT09Ynx8Zj9rLkNPTlNUOmIuZW5kc1dpdGgoIlN1bW1hcnkiKXx8ZD9rLlNVTU1BUlk6ay5PUDtjYXNlIHRmLmdyYXBoLk5vZGVUeXBlLk1FVEE6cmV0dXJuIGsuTUVUQTtjYXNlIHRmLmdyYXBoLk5vZGVUeXBlLlNFUklFUzpyZXR1cm4gay5TRVJJRVN9cmV0dXJuIGh9LApfaXNWZXJ0aWNhbDpmdW5jdGlvbihiLGQpe3JldHVybiBiP2IuaGFzTm9uQ29udHJvbEVkZ2VzOiEhZH0sX2dldEZhZGVkOmZ1bmN0aW9uKGIpe3JldHVybiBiJiZiLmlzRmFkZWRPdXR9LF9vbkZpbGxPdmVycmlkZUNoYW5nZWQoYixkKXtjb25zdCBmPXRoaXMubm9kZSxoPXRoaXMucmVuZGVySW5mbyxrPXRoaXMuY29sb3JCeSx0PXRoaXMudGVtcGxhdGVJbmRleCxsPXRmLmdyYXBoLnNjZW5lLm5vZGU7YiE9PWQmJmwucmVtb3ZlR3JhZGllbnREZWZpbml0aW9ucyh0aGlzLiQuaWNvbi5nZXRTdmdEZWZpbmFibGVFbGVtZW50KCkpO2YmJmgmJmsmJnQmJmwuZ2V0RmlsbEZvck5vZGUodCxsLkNvbG9yQnlbay50b1VwcGVyQ2FzZSgpXSxoLCExLHRoaXMuJC5pY29uLmdldFN2Z0RlZmluYWJsZUVsZW1lbnQoKSl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLW9wLWNvbXBhdC1jYXJkL3RmLWdyYXBoLW9wLWNvbXBhdC1saXN0LWl0ZW0uaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtZ3JhcGgtb3AtY29tcGF0LWxpc3QtaXRlbSIscHJvcGVydGllczp7Y2FyZE5vZGU6T2JqZWN0LGl0ZW1Ob2RlOk9iamVjdCxlZGdlTGFiZWw6U3RyaW5nLGl0ZW1SZW5kZXJJbmZvOk9iamVjdCxuYW1lOlN0cmluZyxpdGVtVHlwZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il9pdGVtVHlwZUNoYW5nZWQifSxjb2xvckJ5OlN0cmluZyxjb2xvckJ5UGFyYW1zOk9iamVjdCx0ZW1wbGF0ZUluZGV4OkZ1bmN0aW9ufSxfaXRlbVR5cGVDaGFuZ2VkOmZ1bmN0aW9uKCl7InN1Ym5vZGUiIT09dGhpcy5pdGVtVHlwZT90aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5hZGQoImNsaWNrYWJsZSIpOnRoaXMuJFsibGlzdC1pdGVtIl0uY2xhc3NMaXN0LnJlbW92ZSgiY2xpY2thYmxlIil9LF9ub2RlTGlzdGVuZXI6ZnVuY3Rpb24oYil7dGhpcy5maXJlKCJub2RlLWxpc3QtaXRlbS0iK2IudHlwZSx7bm9kZU5hbWU6dGhpcy5uYW1lLHR5cGU6dGhpcy5pdGVtVHlwZX0pfSwKX2ZhZGVkQ2xhc3M6ZnVuY3Rpb24oYil7cmV0dXJuIGImJmIuaXNGYWRlZE91dD8iZmFkZWQiOiIifX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1vcC1jb21wYXQtY2FyZC90Zi1ncmFwaC1vcC1jb21wYXQtY2FyZC5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIoe2lzOiJ0Zi1ncmFwaC1vcC1jb21wYXQtY2FyZCIscHJvcGVydGllczp7Z3JhcGhIaWVyYXJjaHk6T2JqZWN0LGhpZXJhcmNoeVBhcmFtczpPYmplY3QscmVuZGVySGllcmFyY2h5Ok9iamVjdCxub2RlVGl0bGU6U3RyaW5nLF90ZW1wbGF0ZUluZGV4Ont0eXBlOkZ1bmN0aW9uLGNvbXB1dGVkOiJfZ2V0VGVtcGxhdGVJbmRleChncmFwaEhpZXJhcmNoeSkifSxfaW5jb21wYXRpYmxlT3BOb2Rlczp7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXRJbmNvbXBhdGlibGVPcE5vZGVzKGdyYXBoSGllcmFyY2h5LCBoaWVyYXJjaHlQYXJhbXMpIn0sX2V4cGFuZGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LF9vcENvbXBhdFNjb3JlOnt0eXBlOk51bWJlcixjb21wdXRlZDoiX2NvbXB1dGVPcENvbXBhdFNjb3JlKGdyYXBoSGllcmFyY2h5KSJ9LF9vcENvbXBhdFNjb3JlTGFiZWw6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfZ2V0T3BDb21wYXRTY29yZUxhYmVsKF9vcENvbXBhdFNjb3JlKSJ9LApfb3BDb21wYXRDb2xvcjp7dHlwZTpTdHJpbmcsdmFsdWU6dGYuZ3JhcGgucmVuZGVyLk9wTm9kZUNvbG9ycy5DT01QQVRJQkxFfSxfb3BJbmNvbXBhdENvbG9yOnt0eXBlOlN0cmluZyx2YWx1ZTp0Zi5ncmFwaC5yZW5kZXIuT3BOb2RlQ29sb3JzLklOQ09NUEFUSUJMRX0sX3RvdGFsSW5jb21wYXRPcHM6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfZ2V0VG90YWxJbmNvbXBhdGlibGVPcHMoZ3JhcGhIaWVyYXJjaHkpIn19LF9nZXRUZW1wbGF0ZUluZGV4OmZ1bmN0aW9uKGIpe3JldHVybiBiLmdldFRlbXBsYXRlSW5kZXgoKX0sX2dldE5vZGU6ZnVuY3Rpb24oYixkKXtyZXR1cm4gZC5ub2RlKGIpfSxfZ2V0UHJpbnRhYmxlSFRNTE5vZGVOYW1lOmZ1bmN0aW9uKGIpe3JldHVybihifHwiIikucmVwbGFjZSgvXC8vZywiXHgzY3diclx4M2UvIil9LF9nZXRSZW5kZXJJbmZvOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnJlbmRlckhpZXJhcmNoeS5nZXRPckNyZWF0ZVJlbmRlck5vZGVCeU5hbWUoYil9LApfdG9nZ2xlRXhwYW5kZWQ6ZnVuY3Rpb24oKXt0aGlzLl9leHBhbmRlZD0hdGhpcy5fZXhwYW5kZWR9LF9nZXRUb2dnbGVJY29uOmZ1bmN0aW9uKGIpe3JldHVybiBiPyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn0sX3Jlc2l6ZUxpc3Q6ZnVuY3Rpb24oYil7KGI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihiKSkmJmIuZmlyZSgiaXJvbi1yZXNpemUiKX0sX2dldEluY29tcGF0aWJsZU9wTm9kZXM6ZnVuY3Rpb24oYixkKXtpZihiJiZiLnJvb3QpcmV0dXJuIHRoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsIiNpbmNvbXBhdGlibGVPcHNMaXN0IikpLHRmLmdyYXBoLmhpZXJhcmNoeS5nZXRJbmNvbXBhdGlibGVPcHMoYixkKX0sX2NvbXB1dGVPcENvbXBhdFNjb3JlOmZ1bmN0aW9uKGIpe2lmKGImJmIucm9vdCl7dmFyIGQ9Yi5yb290O2I9ZC5jb21wYXRpYmlsaXR5SGlzdG9ncmFtLmNvbXBhdGlibGU7ZD1kLmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOwpyZXR1cm4gMD09YiYmMD09ZD8wOk1hdGguZmxvb3IoMTAwKmIvKGIrZCkpLzEwMH1yZXR1cm4gMH0sX2dldE9wQ29tcGF0U2NvcmVMYWJlbDpmdW5jdGlvbihiKXtyZXR1cm4gZDMuZm9ybWF0KCIuMCUiKShiKX0sX2dldFRvdGFsSW5jb21wYXRpYmxlT3BzOmZ1bmN0aW9uKGIpe3JldHVybiBiJiZiLnJvb3Q/Yi5yb290LmNvbXBhdGliaWxpdHlIaXN0b2dyYW0uaW5jb21wYXRpYmxlOjB9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWluZm8vdGYtbm9kZS1saXN0LWl0ZW0uaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtbm9kZS1saXN0LWl0ZW0iLHByb3BlcnRpZXM6e2NhcmROb2RlOk9iamVjdCxpdGVtTm9kZTpPYmplY3QsZWRnZUxhYmVsOlN0cmluZyxpdGVtUmVuZGVySW5mbzpPYmplY3QsbmFtZTpTdHJpbmcsaXRlbVR5cGU6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfaXRlbVR5cGVDaGFuZ2VkIn0sY29sb3JCeTpTdHJpbmcsY29sb3JCeVBhcmFtczpPYmplY3QsdGVtcGxhdGVJbmRleDpGdW5jdGlvbn0sX2l0ZW1UeXBlQ2hhbmdlZDpmdW5jdGlvbigpeyJzdWJub2RlIiE9PXRoaXMuaXRlbVR5cGU/dGhpcy4kWyJsaXN0LWl0ZW0iXS5jbGFzc0xpc3QuYWRkKCJjbGlja2FibGUiKTp0aGlzLiRbImxpc3QtaXRlbSJdLmNsYXNzTGlzdC5yZW1vdmUoImNsaWNrYWJsZSIpfSxfbm9kZUxpc3RlbmVyOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgibm9kZS1saXN0LWl0ZW0tIitiLnR5cGUse2NhcmROb2RlOnRoaXMuY2FyZE5vZGUubmFtZSxub2RlTmFtZTp0aGlzLm5hbWUsCnR5cGU6dGhpcy5pdGVtVHlwZX0pfSxfZmFkZWRDbGFzczpmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi5pc0ZhZGVkT3V0PyJmYWRlZCI6IiJ9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWluZm8vdGYtbm9kZS1pbmZvLmh0bWwuanMKKGZ1bmN0aW9uKCl7UG9seW1lcih7aXM6InRmLW5vZGUtaW5mbyIscHJvcGVydGllczp7Z3JhcGhOb2RlTmFtZTpTdHJpbmcsZ3JhcGhIaWVyYXJjaHk6T2JqZWN0LHJlbmRlckhpZXJhcmNoeTpPYmplY3QsY29sb3JCeTpTdHJpbmcsX3RlbXBsYXRlSW5kZXg6e3R5cGU6RnVuY3Rpb24sY29tcHV0ZWQ6Il9nZXRUZW1wbGF0ZUluZGV4KGdyYXBoSGllcmFyY2h5KSJ9LF9ub2RlOnt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldE5vZGUoZ3JhcGhOb2RlTmFtZSwgZ3JhcGhIaWVyYXJjaHkpIixvYnNlcnZlcjoiX3Jlc2V0U3RhdGUifSxfbm9kZVN0YXRzOnt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldE5vZGVTdGF0cyhncmFwaE5vZGVOYW1lLCBncmFwaEhpZXJhcmNoeSkiLG9ic2VydmVyOiJfcmVzZXRTdGF0ZSJ9LF9oYXNEaXNwbGF5YWJsZU5vZGVTdGF0czp7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9nZXRIYXNEaXNwbGF5YWJsZU5vZGVTdGF0cyhfbm9kZVN0YXRzKSJ9LF9ub2RlU3RhdHNGb3JtYXR0ZWRCeXRlczp7dHlwZTpTdHJpbmcsCmNvbXB1dGVkOiJfZ2V0Tm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXMoX25vZGVTdGF0cykifSxfbm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWU6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfZ2V0Tm9kZVN0YXRzRm9ybWF0dGVkQ29tcHV0ZVRpbWUoX25vZGVTdGF0cykifSxfbm9kZVN0YXRzRm9ybWF0dGVkT3V0cHV0U2l6ZXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9nZXROb2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplcyhfbm9kZVN0YXRzKSJ9LG5vZGVJbmNsdWRlOnt0eXBlOk51bWJlcixvYnNlcnZlcjoiX25vZGVJbmNsdWRlU3RhdGVDaGFuZ2VkIn0sX2F0dHJpYnV0ZXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9nZXRBdHRyaWJ1dGVzKF9ub2RlKSJ9LF9kZXZpY2U6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfZ2V0RGV2aWNlKF9ub2RlKSJ9LF9zdWNjZXNzb3JzOnt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldFN1Y2Nlc3NvcnMoX25vZGUsIGdyYXBoSGllcmFyY2h5KSJ9LApfcHJlZGVjZXNzb3JzOnt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2dldFByZWRlY2Vzc29ycyhfbm9kZSwgZ3JhcGhIaWVyYXJjaHkpIn0sX2Z1bmN0aW9uVXNhZ2VzOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfZ2V0RnVuY3Rpb25Vc2FnZXMoX25vZGUsIGdyYXBoSGllcmFyY2h5KSJ9LF9zdWJub2Rlczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2dldFN1Ym5vZGVzKF9ub2RlKSJ9LF9leHBhbmRlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiEwfSxfdG90YWxQcmVkZWNlc3NvcnM6e3R5cGU6TnVtYmVyLGNvbXB1dGVkOiJfZ2V0VG90YWxQcmVkKF9wcmVkZWNlc3NvcnMpIn0sX3RvdGFsU3VjY2Vzc29yczp7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9nZXRUb3RhbFN1Y2MoX3N1Y2Nlc3NvcnMpIn0sX29wZW5lZENvbnRyb2xQcmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9vcGVuZWRDb250cm9sU3VjYzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfYXV4QnV0dG9uVGV4dDpTdHJpbmcsX2dyb3VwQnV0dG9uVGV4dDpTdHJpbmd9LApleHBhbmROb2RlOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJfbm9kZS5leHBhbmQiLHRoaXMubm9kZSl9LF9nZXRUZW1wbGF0ZUluZGV4OmZ1bmN0aW9uKGIpe3JldHVybiBiLmdldFRlbXBsYXRlSW5kZXgoKX0sX2dldE5vZGU6ZnVuY3Rpb24oYixkKXtyZXR1cm4gZC5ub2RlKGIpfSxfZ2V0Tm9kZVN0YXRzOmZ1bmN0aW9uKGIsZCl7cmV0dXJuKGI9dGhpcy5fZ2V0Tm9kZShiLGQpKT9iLnN0YXRzOm51bGx9LF9nZXRUb3RhbE1pY3JvczpmdW5jdGlvbihiKXtyZXR1cm4gYj9iLmdldFRvdGFsTWljcm9zKCk6MH0sX2dldEhhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzOmZ1bmN0aW9uKGIpe3JldHVybiB0Zi5ncmFwaC51dGlsLmhhc0Rpc3BsYXlhYmxlTm9kZVN0YXRzKGIpfSxfZ2V0Tm9kZVN0YXRzRm9ybWF0dGVkQnl0ZXM6ZnVuY3Rpb24oYil7aWYoYiYmYi50b3RhbEJ5dGVzKXJldHVybiB0Zi5ncmFwaC51dGlsLmNvbnZlcnRVbml0c1RvSHVtYW5SZWFkYWJsZShiLnRvdGFsQnl0ZXMsdGYuZ3JhcGgudXRpbC5NRU1PUllfVU5JVFMpfSwKX2dldE5vZGVTdGF0c0Zvcm1hdHRlZENvbXB1dGVUaW1lOmZ1bmN0aW9uKGIpe2lmKGImJmIuZ2V0VG90YWxNaWNyb3MoKSlyZXR1cm4gdGYuZ3JhcGgudXRpbC5jb252ZXJ0VW5pdHNUb0h1bWFuUmVhZGFibGUoYi5nZXRUb3RhbE1pY3JvcygpLHRmLmdyYXBoLnV0aWwuVElNRV9VTklUUyl9LF9nZXROb2RlU3RhdHNGb3JtYXR0ZWRPdXRwdXRTaXplczpmdW5jdGlvbihiKXtpZihiJiZiLm91dHB1dFNpemUmJmIub3V0cHV0U2l6ZS5sZW5ndGgpcmV0dXJuIF8ubWFwKGIub3V0cHV0U2l6ZSxmdW5jdGlvbihkKXtyZXR1cm4gMD09PWQubGVuZ3RoPyJzY2FsYXIiOiJbIitkLmpvaW4oIiwgIikrIl0ifSl9LF9nZXRQcmludGFibGVIVE1MTm9kZU5hbWU6ZnVuY3Rpb24oYil7cmV0dXJuKGJ8fCIiKS5yZXBsYWNlKC9cLy9nLCJceDNjd2JyXHgzZS8iKX0sX2dldFJlbmRlckluZm86ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucmVuZGVySGllcmFyY2h5LmdldE9yQ3JlYXRlUmVuZGVyTm9kZUJ5TmFtZShiKX0sCl9nZXRBdHRyaWJ1dGVzOmZ1bmN0aW9uKGIpe3RoaXMuYXN5bmModGhpcy5fcmVzaXplTGlzdC5iaW5kKHRoaXMsIiNhdHRyaWJ1dGVzTGlzdCIpKTtpZighYnx8IWIuYXR0cilyZXR1cm5bXTt2YXIgZD1bXTtfLmVhY2goYi5hdHRyLGZ1bmN0aW9uKGYpe2Yua2V5PT09dGYuZ3JhcGguTEFSR0VfQVRUUlNfS0VZP2Q9ZC5jb25jYXQoZi52YWx1ZS5saXN0LnMubWFwKGZ1bmN0aW9uKGgpe3JldHVybntrZXk6aCx2YWx1ZToiVG9vIGxhcmdlIHRvIHNob3cuLi4ifX0pKTpkLnB1c2goe2tleTpmLmtleSx2YWx1ZTpKU09OLnN0cmluZ2lmeShmLnZhbHVlKX0pfSk7cmV0dXJuIGR9LF9nZXREZXZpY2U6ZnVuY3Rpb24oYil7cmV0dXJuIGI/Yi5kZXZpY2U6bnVsbH0sX2dldFN1Y2Nlc3NvcnMoYixkKXt0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJpbnB1dHNMaXN0Iik7cmV0dXJuIGI/dGhpcy5fY29udmVydEVkZ2VMaXN0VG9FZGdlSW5mb0xpc3QoZC5nZXRTdWNjZXNzb3JzKGIubmFtZSksCiExLGIuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fSxfZ2V0UHJlZGVjZXNzb3JzKGIsZCl7dGhpcy5fcmVmcmVzaE5vZGVJdGVtTGlzdCgib3V0cHV0c0xpc3QiKTtyZXR1cm4gYj90aGlzLl9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdChkLmdldFByZWRlY2Vzc29ycyhiLm5hbWUpLCEwLGIuaXNHcm91cE5vZGUpOntyZWd1bGFyOltdLGNvbnRyb2w6W119fSxfZ2V0RnVuY3Rpb25Vc2FnZXMoYixkKXt0aGlzLl9yZWZyZXNoTm9kZUl0ZW1MaXN0KCJmdW5jdGlvblVzYWdlc0xpc3QiKTtyZXR1cm4gYiYmYi50eXBlPT09dGYuZ3JhcGguTm9kZVR5cGUuTUVUQT8oYj1kLmxpYnJhcnlGdW5jdGlvbnNbYi5hc3NvY2lhdGVkRnVuY3Rpb25dKT9iLnVzYWdlczpbXTpbXX0sX3JlZnJlc2hOb2RlSXRlbUxpc3QoYil7dGhpcy5hc3luYyh0aGlzLl9yZXNpemVMaXN0LmJpbmQodGhpcyxgIyR7Yn1gKSl9LF9jb252ZXJ0RWRnZUxpc3RUb0VkZ2VJbmZvTGlzdDpmdW5jdGlvbihiLApkLGYpe3ZhciBoPXQ9Pl8ubWFwKHQuYmFzZUVkZ2VMaXN0LGw9Pnt2YXIgcD1kP2wudjpsLnc7cmV0dXJue25hbWU6cCxub2RlOnRoaXMuX2dldE5vZGUocCx0aGlzLmdyYXBoSGllcmFyY2h5KSxlZGdlTGFiZWw6dGYuZ3JhcGguc2NlbmUuZWRnZS5nZXRMYWJlbEZvckJhc2VFZGdlKGwsdGhpcy5yZW5kZXJIaWVyYXJjaHkpLHJlbmRlckluZm86dGhpcy5fZ2V0UmVuZGVySW5mbyhwLHRoaXMucmVuZGVySGllcmFyY2h5KX19KSxrPWZ1bmN0aW9uKHQpe3ZhciBsPVtdO18uZWFjaCh0LHA9Pnt2YXIgbT1kP3AudjpwLnc7ZiYmMSE9cC5iYXNlRWRnZUxpc3QubGVuZ3RoP2wucHVzaCh7bmFtZTptLG5vZGU6dGhpcy5fZ2V0Tm9kZShtLHRoaXMuZ3JhcGhIaWVyYXJjaHkpLGVkZ2VMYWJlbDp0Zi5ncmFwaC5zY2VuZS5lZGdlLmdldExhYmVsRm9yRWRnZShwLHRoaXMucmVuZGVySGllcmFyY2h5KSxyZW5kZXJJbmZvOnRoaXMuX2dldFJlbmRlckluZm8obSx0aGlzLnJlbmRlckhpZXJhcmNoeSl9KToKbD1sLmNvbmNhdChoKHApKX0pO3JldHVybiBsfS5iaW5kKHRoaXMpO3JldHVybntyZWd1bGFyOmsoYi5yZWd1bGFyKSxjb250cm9sOmsoYi5jb250cm9sKX19LF9nZXRTdWJub2RlczpmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi5tZXRhZ3JhcGg/Yi5tZXRhZ3JhcGgubm9kZXMoKTpudWxsfSxfZ2V0VG90YWxQcmVkOmZ1bmN0aW9uKGIpe3JldHVybiBiLnJlZ3VsYXIubGVuZ3RoK2IuY29udHJvbC5sZW5ndGh9LF9nZXRUb3RhbFN1Y2M6ZnVuY3Rpb24oYil7cmV0dXJuIGIucmVndWxhci5sZW5ndGgrYi5jb250cm9sLmxlbmd0aH0sX3RvZ2dsZUNvbnRyb2xQcmVkOmZ1bmN0aW9uKCl7dGhpcy5fb3BlbmVkQ29udHJvbFByZWQ9IXRoaXMuX29wZW5lZENvbnRyb2xQcmVkfSxfdG9nZ2xlQ29udHJvbFN1Y2M6ZnVuY3Rpb24oKXt0aGlzLl9vcGVuZWRDb250cm9sU3VjYz0hdGhpcy5fb3BlbmVkQ29udHJvbFN1Y2N9LF90b2dnbGVFeHBhbmRlZDpmdW5jdGlvbigpe3RoaXMuX2V4cGFuZGVkPQohdGhpcy5fZXhwYW5kZWR9LF9nZXRUb2dnbGVJY29uOmZ1bmN0aW9uKGIpe3JldHVybiBiPyJleHBhbmQtbGVzcyI6ImV4cGFuZC1tb3JlIn0sX3Jlc2V0U3RhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vcGVuZWRDb250cm9sU3VjYz10aGlzLl9vcGVuZWRDb250cm9sUHJlZD0hMTt0aGlzLnNldCgiX2dyb3VwQnV0dG9uVGV4dCIsdGYuZ3JhcGguc2NlbmUubm9kZS5nZXRHcm91cFNldHRpbmdMYWJlbCh0aGlzLl9ub2RlKSk7dGhpcy5fbm9kZSYmKFBvbHltZXIuZG9tKHRoaXMuJC5ub2RldGl0bGUpLmlubmVySFRNTD10aGlzLl9nZXRQcmludGFibGVIVE1MTm9kZU5hbWUodGhpcy5fbm9kZS5uYW1lKSl9LF9yZXNpemVMaXN0OmZ1bmN0aW9uKGIpeyhiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYikpJiZiLmZpcmUoImlyb24tcmVzaXplIil9LF90b2dnbGVJbmNsdWRlOmZ1bmN0aW9uKCl7dGhpcy5maXJlKCJub2RlLXRvZ2dsZS1pbmNsdXNpb24iLHtuYW1lOnRoaXMuZ3JhcGhOb2RlTmFtZX0pfSwKX25vZGVJbmNsdWRlU3RhdGVDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuc2V0KCJfYXV4QnV0dG9uVGV4dCIsdGYuZ3JhcGguZ2V0SW5jbHVkZU5vZGVCdXR0b25TdHJpbmcoYikpfSxfdG9nZ2xlR3JvdXA6ZnVuY3Rpb24oKXt2YXIgYj10Zi5ncmFwaC5zY2VuZS5ub2RlLmdldFNlcmllc05hbWUodGhpcy5fbm9kZSk7dGhpcy5maXJlKCJub2RlLXRvZ2dsZS1zZXJpZXNncm91cCIse25hbWU6Yn0pfSxfaXNMaWJyYXJ5RnVuY3Rpb24oYil7cmV0dXJuIGImJmIubmFtZS5zdGFydHNXaXRoKHRmLmdyYXBoLkZVTkNUSU9OX0xJQlJBUllfTk9ERV9QUkVGSVgpfSxfaXNJblNlcmllczpmdW5jdGlvbihiKXtyZXR1cm4gdGYuZ3JhcGguc2NlbmUubm9kZS5jYW5CZUluU2VyaWVzKGIpfX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1pbmZvL3RmLWdyYXBoLWluZm8uaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtZ3JhcGgtaW5mbyIscHJvcGVydGllczp7dGl0bGU6U3RyaW5nLGdyYXBoSGllcmFyY2h5Ok9iamVjdCxncmFwaDpPYmplY3QscmVuZGVySGllcmFyY2h5Ok9iamVjdCxub2RlTmFtZXNUb0hlYWx0aFBpbGxzOk9iamVjdCxoZWFsdGhQaWxsU3RlcEluZGV4Ont0eXBlOk51bWJlcixub3RpZnk6ITB9LGNvbG9yQnk6U3RyaW5nLGNvbXBhdE5vZGVUaXRsZTpTdHJpbmcsc2VsZWN0ZWROb2RlOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LGhpZ2hsaWdodGVkTm9kZTp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwfSxzZWxlY3RlZE5vZGVJbmNsdWRlOnt0eXBlOk51bWJlcixub3RpZnk6ITB9LGRlYnVnZ2VyRGF0YUVuYWJsZWQ6Qm9vbGVhbn0sbGlzdGVuZXJzOnsibm9kZS1saXN0LWl0ZW0tY2xpY2siOiJfbm9kZUxpc3RJdGVtQ2xpY2tlZCIsIm5vZGUtbGlzdC1pdGVtLW1vdXNlb3ZlciI6Il9ub2RlTGlzdEl0ZW1Nb3VzZW92ZXIiLCJub2RlLWxpc3QtaXRlbS1tb3VzZW91dCI6Il9ub2RlTGlzdEl0ZW1Nb3VzZW91dCJ9LApfbm9kZUxpc3RJdGVtQ2xpY2tlZDpmdW5jdGlvbihiKXt0aGlzLnNlbGVjdGVkTm9kZT1iLmRldGFpbC5ub2RlTmFtZX0sX25vZGVMaXN0SXRlbU1vdXNlb3ZlcjpmdW5jdGlvbihiKXt0aGlzLmhpZ2hsaWdodGVkTm9kZT1iLmRldGFpbC5ub2RlTmFtZX0sX25vZGVMaXN0SXRlbU1vdXNlb3V0OmZ1bmN0aW9uKCl7dGhpcy5oaWdobGlnaHRlZE5vZGU9bnVsbH0sX2hlYWx0aFBpbGxzQXZhaWxhYmxlOmZ1bmN0aW9uKGIsZCl7cmV0dXJuIGImJmQmJjA8T2JqZWN0LmtleXMoZCkubGVuZ3RofSxfZXF1YWxzOmZ1bmN0aW9uKGIsZCl7cmV0dXJuIGI9PT1kfX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1ib2FyZC90Zi1ncmFwaC1ib2FyZC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ncmFwaC1ib2FyZCIscHJvcGVydGllczp7Z3JhcGhIaWVyYXJjaHk6T2JqZWN0LGdyYXBoOk9iamVjdCxzdGF0czpPYmplY3QscHJvZ3Jlc3M6T2JqZWN0LHRyYWNlSW5wdXRzOkJvb2xlYW4sY29sb3JCeTpTdHJpbmcsY29sb3JCeVBhcmFtczp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwfSxyZW5kZXJIaWVyYXJjaHk6e3R5cGU6T2JqZWN0LG5vdGlmeTohMH0sZGVidWdnZXJEYXRhRW5hYmxlZDpCb29sZWFuLGFyZUhlYWx0aFBpbGxzTG9hZGluZzpCb29sZWFuLGRlYnVnZ2VyTnVtZXJpY0FsZXJ0czp7dHlwZTpBcnJheSxub3RpZnk6ITB9LG5vZGVOYW1lc1RvSGVhbHRoUGlsbHM6T2JqZWN0LGFsbFN0ZXBzTW9kZUVuYWJsZWQ6e3R5cGU6Qm9vbGVhbixub3RpZnk6ITAsdmFsdWU6ITF9LHNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6e3R5cGU6TnVtYmVyLG5vdGlmeTohMCx2YWx1ZTowfSxoZWFsdGhQaWxsU3RlcEluZGV4Ok51bWJlcixzZWxlY3RlZE5vZGU6e3R5cGU6U3RyaW5nLApub3RpZnk6ITB9LGNvbXBhdE5vZGVUaXRsZTp7dHlwZTpTdHJpbmcsdmFsdWU6IlRQVSBDb21wYXRpYmlsaXR5In0sZWRnZVdpZHRoRnVuY3Rpb246T2JqZWN0LF9zZWxlY3RlZE5vZGVJbmNsdWRlOk51bWJlcixfaGlnaGxpZ2h0ZWROb2RlOlN0cmluZyxoYW5kbGVOb2RlU2VsZWN0ZWQ6T2JqZWN0LGVkZ2VMYWJlbEZ1bmN0aW9uOk9iamVjdCxoYW5kbGVFZGdlU2VsZWN0ZWQ6T2JqZWN0fSxvYnNlcnZlcnM6WyJfdXBkYXRlTm9kZUluY2x1ZGUoc2VsZWN0ZWROb2RlLCByZW5kZXJIaWVyYXJjaHkpIl0sZml0OmZ1bmN0aW9uKCl7dGhpcy4kLmdyYXBoLmZpdCgpfSxfaXNOb3RDb21wbGV0ZTpmdW5jdGlvbihiKXtyZXR1cm4gMTAwPmIudmFsdWV9LF9nZXRDb250YWluZXJDbGFzczpmdW5jdGlvbihiKXt2YXIgZD0iY29udGFpbmVyIjtiLmVycm9yJiYoZCs9IiBlcnJvciIpO3RoaXMuX2lzTm90Q29tcGxldGUoYikmJihkKz0iIGxvYWRpbmciKTtyZXR1cm4gZH0sX29uTm9kZUluY2x1c2lvblRvZ2dsZWQoYil7dGhpcy4kLmdyYXBoLm5vZGVUb2dnbGVFeHRyYWN0KGIuZGV0YWlsLm5hbWUpfSwKX29uTm9kZVNlcmllc0dyb3VwVG9nZ2xlZChiKXt0aGlzLiQuZ3JhcGgubm9kZVRvZ2dsZVNlcmllc0dyb3VwKGIuZGV0YWlsLm5hbWUpfSxfdXBkYXRlTm9kZUluY2x1ZGUoKXtjb25zdCBiPXRoaXMucmVuZGVySGllcmFyY2h5P3RoaXMucmVuZGVySGllcmFyY2h5LmdldE5vZGVCeU5hbWUodGhpcy5zZWxlY3RlZE5vZGUpOm51bGw7dGhpcy5fc2VsZWN0ZWROb2RlSW5jbHVkZT1iP2IuaW5jbHVkZTp0Zi5ncmFwaC5JbmNsdXNpb25UeXBlLlVOU1BFQ0lGSUVEfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL2lyb24tbWVudS1iZWhhdmlvci9pcm9uLW1lbnViYXItYmVoYXZpb3IuaHRtbC5qcwpQb2x5bWVyLklyb25NZW51YmFyQmVoYXZpb3JJbXBsPXtob3N0QXR0cmlidXRlczp7cm9sZToibWVudWJhciJ9LGtleUJpbmRpbmdzOntsZWZ0OiJfb25MZWZ0S2V5IixyaWdodDoiX29uUmlnaHRLZXkifSxfb25VcEtleTpmdW5jdGlvbihiKXt0aGlzLmZvY3VzZWRJdGVtLmNsaWNrKCk7Yi5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25Eb3duS2V5OmZ1bmN0aW9uKGIpe3RoaXMuZm9jdXNlZEl0ZW0uY2xpY2soKTtiLmRldGFpbC5rZXlib2FyZEV2ZW50LnByZXZlbnREZWZhdWx0KCl9LGdldCBfaXNSVEwoKXtyZXR1cm4icnRsIj09PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMpLmRpcmVjdGlvbn0sX29uTGVmdEtleTpmdW5jdGlvbihiKXt0aGlzLl9pc1JUTD90aGlzLl9mb2N1c05leHQoKTp0aGlzLl9mb2N1c1ByZXZpb3VzKCk7Yi5kZXRhaWwua2V5Ym9hcmRFdmVudC5wcmV2ZW50RGVmYXVsdCgpfSxfb25SaWdodEtleTpmdW5jdGlvbihiKXt0aGlzLl9pc1JUTD8KdGhpcy5fZm9jdXNQcmV2aW91cygpOnRoaXMuX2ZvY3VzTmV4dCgpO2IuZGV0YWlsLmtleWJvYXJkRXZlbnQucHJldmVudERlZmF1bHQoKX0sX29uS2V5ZG93bjpmdW5jdGlvbihiKXt0aGlzLmtleWJvYXJkRXZlbnRNYXRjaGVzS2V5cyhiLCJ1cCBkb3duIGxlZnQgcmlnaHQgZXNjIil8fHRoaXMuX2ZvY3VzV2l0aEtleWJvYXJkRXZlbnQoYil9fTtQb2x5bWVyLklyb25NZW51YmFyQmVoYXZpb3I9W1BvbHltZXIuSXJvbk1lbnVCZWhhdmlvcixQb2x5bWVyLklyb25NZW51YmFyQmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1yYWRpby1idXR0b24vcGFwZXItcmFkaW8tYnV0dG9uLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLXJhZGlvLWJ1dHRvbiIsYmVoYXZpb3JzOltQb2x5bWVyLlBhcGVyQ2hlY2tlZEVsZW1lbnRCZWhhdmlvcl0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InJhZGlvIiwiYXJpYS1jaGVja2VkIjohMSx0YWJpbmRleDowfSxwcm9wZXJ0aWVzOnthcmlhQWN0aXZlQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiYXJpYS1jaGVja2VkIn19LHJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fcmlwcGxlQ29udGFpbmVyPXRoaXMuJC5yYWRpb0NvbnRhaW5lcn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLlJlbmRlclN0YXR1cy5hZnRlck5leHRSZW5kZXIodGhpcyxmdW5jdGlvbigpe2lmKCItMXB4Ij09PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIikudHJpbSgpKXt2YXIgYj1wYXJzZUZsb2F0KHRoaXMuZ2V0Q29tcHV0ZWRTdHlsZVZhbHVlKCItLWNhbGN1bGF0ZWQtcGFwZXItcmFkaW8tYnV0dG9uLXNpemUiKS50cmltKCkpLApkPU1hdGguZmxvb3IoMypiKTtkJTIhPT1iJTImJmQrKzt0aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItcmFkaW8tYnV0dG9uLWluay1zaXplIjpkKyJweCJ9KX19KX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci1yYWRpby1ncm91cC9wYXBlci1yYWRpby1ncm91cC5odG1sLmpzClBvbHltZXIoe2lzOiJwYXBlci1yYWRpby1ncm91cCIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25NZW51YmFyQmVoYXZpb3JdLGhvc3RBdHRyaWJ1dGVzOntyb2xlOiJyYWRpb2dyb3VwIn0scHJvcGVydGllczp7YXR0ckZvclNlbGVjdGVkOnt0eXBlOlN0cmluZyx2YWx1ZToibmFtZSJ9LHNlbGVjdGVkQXR0cmlidXRlOnt0eXBlOlN0cmluZyx2YWx1ZToiY2hlY2tlZCJ9LHNlbGVjdGFibGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJwYXBlci1yYWRpby1idXR0b24ifSxhbGxvd0VtcHR5U2VsZWN0aW9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxzZWxlY3Q6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5fdmFsdWVUb0l0ZW0oYik7aWYoIWR8fCFkLmhhc0F0dHJpYnV0ZSgiZGlzYWJsZWQiKSl7aWYodGhpcy5zZWxlY3RlZCl7ZD10aGlzLl92YWx1ZVRvSXRlbSh0aGlzLnNlbGVjdGVkKTtpZih0aGlzLnNlbGVjdGVkPT1iKWlmKHRoaXMuYWxsb3dFbXB0eVNlbGVjdGlvbiliPSIiO2Vsc2V7ZCYmCihkLmNoZWNrZWQ9ITApO3JldHVybn1kJiYoZC5jaGVja2VkPSExKX1Qb2x5bWVyLklyb25TZWxlY3RhYmxlQmVoYXZpb3Iuc2VsZWN0LmFwcGx5KHRoaXMsW2JdKTt0aGlzLmZpcmUoInBhcGVyLXJhZGlvLWdyb3VwLWNoYW5nZWQiKX19LF9hY3RpdmF0ZUZvY3VzZWRJdGVtOmZ1bmN0aW9uKCl7dGhpcy5faXRlbUFjdGl2YXRlKHRoaXMuX3ZhbHVlRm9ySXRlbSh0aGlzLmZvY3VzZWRJdGVtKSx0aGlzLmZvY3VzZWRJdGVtKX0sX29uVXBLZXk6ZnVuY3Rpb24oYil7dGhpcy5fZm9jdXNQcmV2aW91cygpO2IucHJldmVudERlZmF1bHQoKTt0aGlzLl9hY3RpdmF0ZUZvY3VzZWRJdGVtKCl9LF9vbkRvd25LZXk6ZnVuY3Rpb24oYil7dGhpcy5fZm9jdXNOZXh0KCk7Yi5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX0sX29uTGVmdEtleTpmdW5jdGlvbihiKXtQb2x5bWVyLklyb25NZW51YmFyQmVoYXZpb3JJbXBsLl9vbkxlZnRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpOwp0aGlzLl9hY3RpdmF0ZUZvY3VzZWRJdGVtKCl9LF9vblJpZ2h0S2V5OmZ1bmN0aW9uKGIpe1BvbHltZXIuSXJvbk1lbnViYXJCZWhhdmlvckltcGwuX29uUmlnaHRLZXkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuX2FjdGl2YXRlRm9jdXNlZEl0ZW0oKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci10b29sdGlwL3BhcGVyLXRvb2x0aXAuaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItdG9vbHRpcCIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2x0aXAiLHRhYmluZGV4Oi0xfSxwcm9wZXJ0aWVzOntmb3I6e3R5cGU6U3RyaW5nLG9ic2VydmVyOiJfZmluZFRhcmdldCJ9LG1hbnVhbE1vZGU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX21hbnVhbE1vZGVDaGFuZ2VkIn0scG9zaXRpb246e3R5cGU6U3RyaW5nLHZhbHVlOiJib3R0b20ifSxmaXRUb1Zpc2libGVCb3VuZHM6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sb2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZToxNH0sbWFyZ2luVG9wOnt0eXBlOk51bWJlcix2YWx1ZToxNH0sYW5pbWF0aW9uRGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjUwMCxvYnNlcnZlcjoiX2RlbGF5Q2hhbmdlIn0sYW5pbWF0aW9uRW50cnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxhbmltYXRpb25FeGl0Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sYW5pbWF0aW9uQ29uZmlnOnt0eXBlOk9iamVjdCwKdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57ZW50cnk6W3tuYW1lOiJmYWRlLWluLWFuaW1hdGlvbiIsbm9kZTp0aGlzLHRpbWluZzp7ZGVsYXk6MH19XSxleGl0Olt7bmFtZToiZmFkZS1vdXQtYW5pbWF0aW9uIixub2RlOnRoaXN9XX19fSxfc2hvd2luZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX0sbGlzdGVuZXJzOnt3ZWJraXRBbmltYXRpb25FbmQ6Il9vbkFuaW1hdGlvbkVuZCJ9LGdldCB0YXJnZXQoKXt2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzKS5wYXJlbnROb2RlLGQ9UG9seW1lci5kb20odGhpcykuZ2V0T3duZXJSb290KCk7cmV0dXJuIHRoaXMuZm9yP1BvbHltZXIuZG9tKGQpLnF1ZXJ5U2VsZWN0b3IoIiMiK3RoaXMuZm9yKTpiLm5vZGVUeXBlPT1Ob2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU/ZC5ob3N0OmJ9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fZmluZFRhcmdldCgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMubWFudWFsTW9kZXx8dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCl9LApwbGF5QW5pbWF0aW9uOmZ1bmN0aW9uKGIpeyJlbnRyeSI9PT1iP3RoaXMuc2hvdygpOiJleGl0Ij09PWImJnRoaXMuaGlkZSgpfSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QuYWRkKCJjYW5jZWwtYW5pbWF0aW9uIil9LHNob3c6ZnVuY3Rpb24oKXtpZighdGhpcy5fc2hvd2luZyl7aWYoIiI9PT1Qb2x5bWVyLmRvbSh0aGlzKS50ZXh0Q29udGVudC50cmltKCkpe2Zvcih2YXIgYj0hMCxkPVBvbHltZXIuZG9tKHRoaXMpLmdldEVmZmVjdGl2ZUNoaWxkTm9kZXMoKSxmPTA7ZjxkLmxlbmd0aDtmKyspaWYoIiIhPT1kW2ZdLnRleHRDb250ZW50LnRyaW0oKSl7Yj0hMTticmVha31pZihiKXJldHVybn10aGlzLl9zaG93aW5nPSEwO3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpO3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUoImNhbmNlbC1hbmltYXRpb24iKTt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImV4aXQiKSk7CnRoaXMudXBkYXRlUG9zaXRpb24oKTt0aGlzLl9hbmltYXRpb25QbGF5aW5nPSEwO3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZW50cnkiKSl9fSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5fc2hvd2luZyYmKHRoaXMuX2FuaW1hdGlvblBsYXlpbmc/KHRoaXMuX3Nob3dpbmc9ITEsdGhpcy5fY2FuY2VsQW5pbWF0aW9uKCkpOih0aGlzLl9vbkFuaW1hdGlvbkZpbmlzaCgpLHRoaXMuX3Nob3dpbmc9ITEsdGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMCkpfSx1cGRhdGVQb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXMuX3RhcmdldCYmdGhpcy5vZmZzZXRQYXJlbnQpe3ZhciBiPXRoaXMub2Zmc2V0OzE0IT10aGlzLm1hcmdpblRvcCYmMTQ9PXRoaXMub2Zmc2V0JiYoYj10aGlzLm1hcmdpblRvcCk7dmFyIGQ9dGhpcy5vZmZzZXRQYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksZj10aGlzLl90YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCmg9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxrPShmLndpZHRoLWgud2lkdGgpLzIsdD0oZi5oZWlnaHQtaC5oZWlnaHQpLzIsbD1mLmxlZnQtZC5sZWZ0LHA9Zi50b3AtZC50b3A7c3dpdGNoKHRoaXMucG9zaXRpb24pe2Nhc2UgInRvcCI6dmFyIG09bCtrO3ZhciBuPXAtaC5oZWlnaHQtYjticmVhaztjYXNlICJib3R0b20iOm09bCtrO249cCtmLmhlaWdodCtiO2JyZWFrO2Nhc2UgImxlZnQiOm09bC1oLndpZHRoLWI7bj1wK3Q7YnJlYWs7Y2FzZSAicmlnaHQiOm09bCtmLndpZHRoK2Isbj1wK3R9dGhpcy5maXRUb1Zpc2libGVCb3VuZHM/KGQubGVmdCttK2gud2lkdGg+d2luZG93LmlubmVyV2lkdGg/KHRoaXMuc3R5bGUucmlnaHQ9IjBweCIsdGhpcy5zdHlsZS5sZWZ0PSJhdXRvIik6KHRoaXMuc3R5bGUubGVmdD1NYXRoLm1heCgwLG0pKyJweCIsdGhpcy5zdHlsZS5yaWdodD0iYXV0byIpLGQudG9wK24raC5oZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0Pyh0aGlzLnN0eWxlLmJvdHRvbT0KZC5oZWlnaHQrInB4Iix0aGlzLnN0eWxlLnRvcD0iYXV0byIpOih0aGlzLnN0eWxlLnRvcD1NYXRoLm1heCgtZC50b3AsbikrInB4Iix0aGlzLnN0eWxlLmJvdHRvbT0iYXV0byIpKToodGhpcy5zdHlsZS5sZWZ0PW0rInB4Iix0aGlzLnN0eWxlLnRvcD1uKyJweCIpfX0sX2FkZExpc3RlbmVyczpmdW5jdGlvbigpe3RoaXMuX3RhcmdldCYmKHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwibW91c2VlbnRlciIsInNob3ciKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMubGlzdGVuKHRoaXMuX3RhcmdldCwibW91c2VsZWF2ZSIsImhpZGUiKSx0aGlzLmxpc3Rlbih0aGlzLl90YXJnZXQsImJsdXIiLCJoaWRlIiksdGhpcy5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpO3RoaXMubGlzdGVuKHRoaXMuJC50b29sdGlwLCJhbmltYXRpb25lbmQiLCJfb25BbmltYXRpb25FbmQiKTt0aGlzLmxpc3Rlbih0aGlzLCJtb3VzZWVudGVyIiwiaGlkZSIpfSwKX2ZpbmRUYXJnZXQ6ZnVuY3Rpb24oKXt0aGlzLm1hbnVhbE1vZGV8fHRoaXMuX3JlbW92ZUxpc3RlbmVycygpO3RoaXMuX3RhcmdldD10aGlzLnRhcmdldDt0aGlzLm1hbnVhbE1vZGV8fHRoaXMuX2FkZExpc3RlbmVycygpfSxfZGVsYXlDaGFuZ2U6ZnVuY3Rpb24oYil7NTAwIT09YiYmdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktaW4iOmIrIm1zIn0pfSxfbWFudWFsTW9kZUNoYW5nZWQ6ZnVuY3Rpb24oKXt0aGlzLm1hbnVhbE1vZGU/dGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCk6dGhpcy5fYWRkTGlzdGVuZXJzKCl9LF9jYW5jZWxBbmltYXRpb246ZnVuY3Rpb24oKXt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuX2dldEFuaW1hdGlvblR5cGUoImVudHJ5IikpO3RoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fZ2V0QW5pbWF0aW9uVHlwZSgiZXhpdCIpKTt0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIik7CnRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpfSxfb25BbmltYXRpb25GaW5pc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaG93aW5nJiYodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJlbnRyeSIpKSx0aGlzLiQudG9vbHRpcC5jbGFzc0xpc3QucmVtb3ZlKCJjYW5jZWwtYW5pbWF0aW9uIiksdGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LmFkZCh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fYW5pbWF0aW9uUGxheWluZz0hMTt0aGlzLl9zaG93aW5nfHwodGhpcy4kLnRvb2x0aXAuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9nZXRBbmltYXRpb25UeXBlKCJleGl0IikpLHRoaXMuJC50b29sdGlwLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKX0sX2dldEFuaW1hdGlvblR5cGU6ZnVuY3Rpb24oYil7aWYoImVudHJ5Ij09PWImJiIiIT09dGhpcy5hbmltYXRpb25FbnRyeSlyZXR1cm4gdGhpcy5hbmltYXRpb25FbnRyeTsKaWYoImV4aXQiPT09YiYmIiIhPT10aGlzLmFuaW1hdGlvbkV4aXQpcmV0dXJuIHRoaXMuYW5pbWF0aW9uRXhpdDtpZih0aGlzLmFuaW1hdGlvbkNvbmZpZ1tiXSYmInN0cmluZyI9PT10eXBlb2YgdGhpcy5hbmltYXRpb25Db25maWdbYl1bMF0ubmFtZSl7aWYodGhpcy5hbmltYXRpb25Db25maWdbYl1bMF0udGltaW5nJiZ0aGlzLmFuaW1hdGlvbkNvbmZpZ1tiXVswXS50aW1pbmcuZGVsYXkmJjAhPT10aGlzLmFuaW1hdGlvbkNvbmZpZ1tiXVswXS50aW1pbmcuZGVsYXkpe3ZhciBkPXRoaXMuYW5pbWF0aW9uQ29uZmlnW2JdWzBdLnRpbWluZy5kZWxheTsiZW50cnkiPT09Yj90aGlzLnVwZGF0ZVN0eWxlcyh7Ii0tcGFwZXItdG9vbHRpcC1kZWxheS1pbiI6ZCsibXMifSk6ImV4aXQiPT09YiYmdGhpcy51cGRhdGVTdHlsZXMoeyItLXBhcGVyLXRvb2x0aXAtZGVsYXktb3V0IjpkKyJtcyJ9KX1yZXR1cm4gdGhpcy5hbmltYXRpb25Db25maWdbYl1bMF0ubmFtZX19LF9yZW1vdmVMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt0aGlzLl90YXJnZXQmJgoodGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsIm1vdXNlZW50ZXIiLCJzaG93IiksdGhpcy51bmxpc3Rlbih0aGlzLl90YXJnZXQsImZvY3VzIiwic2hvdyIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJtb3VzZWxlYXZlIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJibHVyIiwiaGlkZSIpLHRoaXMudW5saXN0ZW4odGhpcy5fdGFyZ2V0LCJ0YXAiLCJoaWRlIikpO3RoaXMudW5saXN0ZW4odGhpcy4kLnRvb2x0aXAsImFuaW1hdGlvbmVuZCIsIl9vbkFuaW1hdGlvbkVuZCIpO3RoaXMudW5saXN0ZW4odGhpcywibW91c2VlbnRlciIsImhpZGUiKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ncmFwaC1ub2RlLXNlYXJjaC90Zi1ncmFwaC1ub2RlLXNlYXJjaC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ncmFwaC1ub2RlLXNlYXJjaCIscHJvcGVydGllczp7cmVuZGVySGllcmFyY2h5Ok9iamVjdCxzZWxlY3RlZE5vZGU6e3R5cGU6U3RyaW5nLG5vdGlmeTohMH0sX3Jhd1JlZ2V4SW5wdXQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxfcmVnZXhJbnB1dDp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUmVnZXhJbnB1dChyZW5kZXJIaWVyYXJjaHksIF9yYXdSZWdleElucHV0KSJ9LF9wcmV2aW91c1JlZ2V4SW5wdXQ6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxfc2VhcmNoVGltZW91dERlbGF5Ont0eXBlOk51bWJlcix2YWx1ZToxNTAscmVhZE9ubHk6ITB9LF9zZWFyY2hQZW5kaW5nOkJvb2xlYW4sX21heFJlZ2V4UmVzdWx0czp7dHlwZTpOdW1iZXIsdmFsdWU6NDJ9LF9yZWdleE1hdGNoZXM6QXJyYXl9LG9ic2VydmVyczpbIl9yZWdleElucHV0Q2hhbmdlZChfcmVnZXhJbnB1dCkiXSxfY29tcHV0ZVJlZ2V4SW5wdXQoYixkKXtyZXR1cm4gZC50cmltKCl9LApfcmVnZXhJbnB1dENoYW5nZWQoKXt0aGlzLl9yZXF1ZXN0U2VhcmNoKCl9LF9jbGVhclNlYXJjaFJlc3VsdHMoKXt0aGlzLnNldCgiX3JlZ2V4TWF0Y2hlcyIsW10pfSxfcmVxdWVzdFNlYXJjaCgpe3RoaXMuX3NlYXJjaFBlbmRpbmd8fCh0aGlzLl9yZWdleElucHV0PT09dGhpcy5fcHJldmlvdXNSZWdleElucHV0P3RoaXMuX3NlYXJjaFBlbmRpbmc9ITE6KHRoaXMuX3NlYXJjaFBlbmRpbmc9ITAsdGhpcy5fZXhlY3V0ZVNlYXJjaCgpLHRoaXMuYXN5bmMoKCk9Pnt0aGlzLl9zZWFyY2hQZW5kaW5nPSExO3RoaXMuX3JlcXVlc3RTZWFyY2goKX0sdGhpcy5fc2VhcmNoVGltZW91dERlbGF5KSkpfSxfZXhlY3V0ZVNlYXJjaCgpe2lmKHRoaXMuX3ByZXZpb3VzUmVnZXhJbnB1dD10aGlzLl9yZWdleElucHV0KXt0cnl7dmFyIGI9bmV3IFJlZ0V4cCh0aGlzLl9yZWdleElucHV0KX1jYXRjaChmKXt0aGlzLl9jbGVhclNlYXJjaFJlc3VsdHMoKTtyZXR1cm59dmFyIGQ9W107Xy5lYWNoKHRoaXMucmVuZGVySGllcmFyY2h5LmhpZXJhcmNoeS5nZXROb2RlTWFwKCksCihmLGgpPT57aWYoZC5sZW5ndGg+PXRoaXMuX21heFJlZ2V4UmVzdWx0cylyZXR1cm4hMTtiLnRlc3QoaCkmJmQucHVzaChoKX0pO3RoaXMuc2V0KCJfcmVnZXhNYXRjaGVzIixkKX1lbHNlIHRoaXMuX2NsZWFyU2VhcmNoUmVzdWx0cygpfSxfbWF0Y2hDbGlja2VkKGIpe3RoaXMuc2V0KCJzZWxlY3RlZE5vZGUiLGIubW9kZWwuaXRlbSl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtZ3JhcGgtY29udHJvbHMvdGYtZ3JhcGgtY29udHJvbHMuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7Y29uc3QgaD0vZGV2aWNlOihbXjpdKzpbMC05XSspJC8saz1be3JlZ2V4Omh9XSx0PVtdO2xldCBsOyhmdW5jdGlvbihtKXttLkNPTVBVVEVfVElNRT0iY29tcHV0ZV90aW1lIjttLk1FTU9SWT0ibWVtb3J5IjttLlNUUlVDVFVSRT0ic3RydWN0dXJlIjttLlhMQV9DTFVTVEVSPSJ4bGFfY2x1c3RlciI7bS5PUF9DT01QQVRJQklMSVRZPSJvcF9jb21wYXRpYmlsaXR5In0pKGw9Zi5Db2xvckJ5fHwoZi5Db2xvckJ5PXt9KSk7Y29uc3QgcD1uZXcgU2V0KFtsLkNPTVBVVEVfVElNRSxsLk1FTU9SWV0pO1BvbHltZXIoe2lzOiJ0Zi1ncmFwaC1jb250cm9scyIscHJvcGVydGllczp7c3RhdHM6e3ZhbHVlOm51bGwsdHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il9zdGF0c0NoYW5nZWQifSxkZXZpY2VzRm9yU3RhdHM6e3ZhbHVlOm51bGwsdHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRvbmx5OiEwfSxjb2xvckJ5Ont0eXBlOlN0cmluZywKdmFsdWU6bC5TVFJVQ1RVUkUsbm90aWZ5OiEwfSxjb2xvckJ5UGFyYW1zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAscmVhZG9ubHk6ITB9LGRhdGFzZXRzOnt0eXBlOkFycmF5LG9ic2VydmVyOiJfZGF0YXNldHNDaGFuZ2VkIix2YWx1ZTooKT0+W119LHJlbmRlckhpZXJhcmNoeTp7dHlwZTpPYmplY3R9LHNlbGVjdGlvbjp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHJlYWRPbmx5OiEwLGNvbXB1dGVkOiJfY29tcHV0ZVNlbGVjdGlvbihkYXRhc2V0cywgX3NlbGVjdGVkUnVuSW5kZXgsIF9zZWxlY3RlZFRhZ0luZGV4LCBfc2VsZWN0ZWRHcmFwaFR5cGUpIn0sc2VsZWN0ZWRGaWxlOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LF9zZWxlY3RlZFJ1bkluZGV4Ont0eXBlOk51bWJlcix2YWx1ZTowLG9ic2VydmVyOiJfc2VsZWN0ZWRSdW5JbmRleENoYW5nZWQifSx0cmFjZUlucHV0czp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTohMX0sX3NlbGVjdGVkVGFnSW5kZXg6e3R5cGU6TnVtYmVyLAp2YWx1ZTowLG9ic2VydmVyOiJfc2VsZWN0ZWRUYWdJbmRleENoYW5nZWQifSxfc2VsZWN0ZWRHcmFwaFR5cGU6e3R5cGU6U3RyaW5nLHZhbHVlOmIuZ3JhcGguU2VsZWN0aW9uVHlwZS5PUF9HUkFQSH0sc2VsZWN0ZWROb2RlOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LF9jdXJyZW50RGV2aWNlczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2dldEN1cnJlbnREZXZpY2VzKGRldmljZXNGb3JTdGF0cykifSxfY3VycmVudERldmljZVBhcmFtczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2dldEN1cnJlbnREZXZpY2VQYXJhbXMoY29sb3JCeVBhcmFtcykifSxfY3VycmVudFhsYUNsdXN0ZXJQYXJhbXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9nZXRDdXJyZW50WGxhQ2x1c3RlclBhcmFtcyhjb2xvckJ5UGFyYW1zKSJ9LF9jdXJyZW50R3JhZGllbnRQYXJhbXM6e3R5cGU6T2JqZWN0LGNvbXB1dGVkOiJfZ2V0Q3VycmVudEdyYWRpZW50UGFyYW1zKGNvbG9yQnlQYXJhbXMsIGNvbG9yQnkpIn0sCnNob3dTZXNzaW9uUnVuc0Ryb3Bkb3duOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9LHNob3dVcGxvYWRCdXR0b246e3R5cGU6Qm9vbGVhbix2YWx1ZTohMH0saGVhbHRoUGlsbHNGZWF0dXJlRW5hYmxlZDpCb29sZWFuLGhlYWx0aFBpbGxzVG9nZ2xlZE9uOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSxfbGVnZW5kT3BlbmVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITB9fSxfeGxhQ2x1c3RlcnNQcm92aWRlZDpmdW5jdGlvbihtKXtyZXR1cm4gbSYmbS5oaWVyYXJjaHkmJjA8bS5oaWVyYXJjaHkueGxhQ2x1c3RlcnMubGVuZ3RofSxfc3RhdHNDaGFuZ2VkOmZ1bmN0aW9uKG0pe2lmKG51bGwhPW0pe3ZhciBuPXt9O18uZWFjaChtLmRldl9zdGF0cyxmdW5jdGlvbihxKXt2YXIgdT1fLnNvbWUoayxmdW5jdGlvbihBKXtyZXR1cm4gQS5yZWdleC50ZXN0KHEuZGV2aWNlKX0pLHg9Xy5zb21lKHQsZnVuY3Rpb24oQSl7cmV0dXJuIEEucmVnZXgudGVzdChxLmRldmljZSl9KTt1JiYheCYmKG5bcS5kZXZpY2VdPQohMCl9KTt0aGlzLnNldCgiZGV2aWNlc0ZvclN0YXRzIixuKX19LF9nZXRDdXJyZW50RGV2aWNlczpmdW5jdGlvbihtKXt2YXIgbj10aGlzLnN0YXRzO249KG4/bi5kZXZfc3RhdHM6W10pLm1hcCh1PT51LmRldmljZSkuZmlsdGVyKHU9Pmsuc29tZSh4PT54LnJlZ2V4LnRlc3QodSkpKTtjb25zdCBxPWIuZ3JhcGgudXRpbC5yZW1vdmVDb21tb25QcmVmaXgobik7aWYoMT09cS5sZW5ndGgpe2NvbnN0IHU9cVswXS5tYXRjaChoKTt1JiYocVswXT11WzFdKX1yZXR1cm4gbi5tYXAoKHUseCk9PntsZXQgQT1udWxsO3QuZm9yRWFjaCh5PT57eS5yZWdleC50ZXN0KHUpJiYoQT15Lm1zZyl9KTtyZXR1cm57ZGV2aWNlOnUsc3VmZml4OnFbeF0sdXNlZDptW3VdLGlnbm9yZWRNc2c6QX19KX0sX2RldmljZUNoZWNrYm94Q2xpY2tlZDpmdW5jdGlvbihtKXttPW0udGFyZ2V0O2NvbnN0IG49T2JqZWN0LmFzc2lnbih7fSx0aGlzLmRldmljZXNGb3JTdGF0cykscT1tLnZhbHVlO20uY2hlY2tlZD8KbltxXT0hMDpkZWxldGUgbltxXTt0aGlzLnNldCgiZGV2aWNlc0ZvclN0YXRzIixuKX0sX251bVRhZ3M6ZnVuY3Rpb24obSxuKXtyZXR1cm4gdGhpcy5fZ2V0VGFncyhtLG4pLmxlbmd0aH0sX2dldFRhZ3M6ZnVuY3Rpb24obSxuKXtyZXR1cm4gbSYmbVtuXT9tW25dLnRhZ3M6W119LF9maXQ6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoImZpdC10YXAiKX0sX2lzR3JhZGllbnRDb2xvcmluZzpmdW5jdGlvbihtLG4pe3JldHVybiBwLmhhcyhuKSYmbnVsbCE9bX0sX2VxdWFsczpmdW5jdGlvbihtLG4pe3JldHVybiBtPT09bn0sX2dldEN1cnJlbnREZXZpY2VQYXJhbXM6ZnVuY3Rpb24obSl7bT1tLmRldmljZS5maWx0ZXIodT0+ay5zb21lKHg9PngucmVnZXgudGVzdCh1LmRldmljZSkpKTtjb25zdCBuPWIuZ3JhcGgudXRpbC5yZW1vdmVDb21tb25QcmVmaXgobS5tYXAodT0+dS5kZXZpY2UpKTtpZigxPT1uLmxlbmd0aCl7dmFyIHE9blswXS5tYXRjaChoKTtxJiYoblswXT1xWzFdKX1yZXR1cm4gbS5tYXAoKHUsCngpPT4oe2RldmljZTpuW3hdLGNvbG9yOnUuY29sb3J9KSl9LF9nZXRDdXJyZW50WGxhQ2x1c3RlclBhcmFtczpmdW5jdGlvbihtKXtyZXR1cm4gbS54bGFfY2x1c3Rlcn0sX2dldEN1cnJlbnRHcmFkaWVudFBhcmFtczpmdW5jdGlvbihtLG4pe2lmKHRoaXMuX2lzR3JhZGllbnRDb2xvcmluZyh0aGlzLnN0YXRzLG4pKXttPW1bbl07dmFyIHE9bS5taW5WYWx1ZSx1PW0ubWF4VmFsdWU7bj09PWwuTUVNT1JZPyhxPWIuZ3JhcGgudXRpbC5jb252ZXJ0VW5pdHNUb0h1bWFuUmVhZGFibGUocSxiLmdyYXBoLnV0aWwuTUVNT1JZX1VOSVRTKSx1PWIuZ3JhcGgudXRpbC5jb252ZXJ0VW5pdHNUb0h1bWFuUmVhZGFibGUodSxiLmdyYXBoLnV0aWwuTUVNT1JZX1VOSVRTKSk6bj09PWwuQ09NUFVURV9USU1FJiYocT1iLmdyYXBoLnV0aWwuY29udmVydFVuaXRzVG9IdW1hblJlYWRhYmxlKHEsYi5ncmFwaC51dGlsLlRJTUVfVU5JVFMpLHU9Yi5ncmFwaC51dGlsLmNvbnZlcnRVbml0c1RvSHVtYW5SZWFkYWJsZSh1LApiLmdyYXBoLnV0aWwuVElNRV9VTklUUykpO3JldHVybnttaW5WYWx1ZTpxLG1heFZhbHVlOnUsc3RhcnRDb2xvcjptLnN0YXJ0Q29sb3IsZW5kQ29sb3I6bS5lbmRDb2xvcn19fSxkb3dubG9hZDpmdW5jdGlvbigpe3RoaXMuJC5ncmFwaGRvd25sb2FkLmNsaWNrKCl9LF91cGRhdGVGaWxlSW5wdXQ6ZnVuY3Rpb24obSl7dmFyIG49bS50YXJnZXQuZmlsZXNbMF07aWYobil7bj1uLm5hbWU7dmFyIHE9bi5sYXN0SW5kZXhPZigiLiIpOzA8PXEmJihuPW4uc3Vic3RyaW5nKDAscSkpO3E9bi5sYXN0SW5kZXhPZigiLyIpOzA8PXEmJihuPW4uc3Vic3RyaW5nKHErMSkpO3RoaXMuX3NldERvd25sb2FkRmlsZW5hbWUobik7dGhpcy5zZXQoInNlbGVjdGVkRmlsZSIsbSl9fSxfZGF0YXNldHNDaGFuZ2VkOmZ1bmN0aW9uKG0sbil7bnVsbCE9biYmKHRoaXMuX3NlbGVjdGVkUnVuSW5kZXg9MCl9LF9jb21wdXRlU2VsZWN0aW9uOmZ1bmN0aW9uKG0sbixxLHUpe3JldHVybiBtW25dJiZtW25dLnRhZ3NbcV0/CntydW46bVtuXS5uYW1lLHRhZzptW25dLnRhZ3NbcV0udGFnLHR5cGU6dX06bnVsbH0sX3NlbGVjdGVkUnVuSW5kZXhDaGFuZ2VkOmZ1bmN0aW9uKG0pe3RoaXMuZGF0YXNldHMmJih0aGlzLmNvbG9yQnk9bC5TVFJVQ1RVUkUsdGhpcy5fc2VsZWN0ZWRUYWdJbmRleD0wLHRoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCksdGhpcy50cmFjZUlucHV0cz0hMSx0aGlzLl9zZXREb3dubG9hZEZpbGVuYW1lKHRoaXMuZGF0YXNldHNbbV0/dGhpcy5kYXRhc2V0c1ttXS5uYW1lOiIiKSl9LF9zZWxlY3RlZFRhZ0luZGV4Q2hhbmdlZCgpe3RoaXMuX3NlbGVjdGVkR3JhcGhUeXBlPXRoaXMuX2dldERlZmF1bHRTZWxlY3Rpb25UeXBlKCl9LF9nZXREZWZhdWx0U2VsZWN0aW9uVHlwZSgpe2NvbnN0IG09dGhpcy5kYXRhc2V0cyxuPXRoaXMuX3NlbGVjdGVkUnVuSW5kZXgscT10aGlzLl9zZWxlY3RlZFRhZ0luZGV4O3JldHVybiBtJiZtW25dJiZtW25dLnRhZ3NbcV0mJgohbVtuXS50YWdzW3FdLm9wR3JhcGg/bVtuXS50YWdzW3FdLnByb2ZpbGU/Yi5ncmFwaC5TZWxlY3Rpb25UeXBlLlBST0ZJTEU6bVtuXS50YWdzW3FdLmNvbmNlcHR1YWxHcmFwaD9iLmdyYXBoLlNlbGVjdGlvblR5cGUuQ09OQ0VQVFVBTF9HUkFQSDpiLmdyYXBoLlNlbGVjdGlvblR5cGUuT1BfR1JBUEg6Yi5ncmFwaC5TZWxlY3Rpb25UeXBlLk9QX0dSQVBIfSxfZ2V0RmlsZTpmdW5jdGlvbigpe3RoaXMuJCQoIiNmaWxlIikuY2xpY2soKX0sX3NldERvd25sb2FkRmlsZW5hbWU6ZnVuY3Rpb24obSl7dGhpcy4kLmdyYXBoZG93bmxvYWQuc2V0QXR0cmlidXRlKCJkb3dubG9hZCIsbSsiLnBuZyIpfSxfc3RhdHNOb3ROdWxsOmZ1bmN0aW9uKG0pe3JldHVybiBudWxsIT09bX0sX3RvZ2dsZUxlZ2VuZE9wZW4oKXt0aGlzLnNldCgiX2xlZ2VuZE9wZW5lZCIsIXRoaXMuX2xlZ2VuZE9wZW5lZCl9LF9nZXRUb2dnbGVUZXh0KG0pe3JldHVybiBtPyJDbG9zZSBsZWdlbmQuIjoiRXhwYW5kIGxlZ2VuZC4ifSwKX2dldFRvZ2dsZUxlZ2VuZEljb24obSl7cmV0dXJuIG0/ImV4cGFuZC1tb3JlIjoiZXhwYW5kLWxlc3MifSxfZ2V0U2VsZWN0aW9uT3BHcmFwaERpc2FibGVkKG0sbixxKXtyZXR1cm4hbVtuXXx8IW1bbl0udGFnc1txXXx8IW1bbl0udGFnc1txXS5vcEdyYXBofSxfZ2V0U2VsZWN0aW9uUHJvZmlsZURpc2FibGVkKG0sbixxKXtyZXR1cm4hbVtuXXx8IW1bbl0udGFnc1txXXx8IW1bbl0udGFnc1txXS5wcm9maWxlfSxfZ2V0U2VsZWN0aW9uQ29uY2VwdHVhbEdyYXBoRGlzYWJsZWQobSxuLHEpe3JldHVybiFtW25dfHwhbVtuXS50YWdzW3FdfHwhbVtuXS50YWdzW3FdLmNvbmNlcHR1YWxHcmFwaH19KX0pKGQuY29udHJvbHN8fChkLmNvbnRyb2xzPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWxvYWRlci90Zi1ncmFwaC1kYXNoYm9hcmQtbG9hZGVyLmpzClVpPXRoaXMmJnRoaXMuX19hd2FpdGVyfHxmdW5jdGlvbihiLGQsZixoKXtyZXR1cm4gbmV3IChmfHwoZj1Qcm9taXNlKSkoZnVuY3Rpb24oayx0KXtmdW5jdGlvbiBsKG4pe3RyeXttKGgubmV4dChuKSl9Y2F0Y2gocSl7dChxKX19ZnVuY3Rpb24gcChuKXt0cnl7bShoWyJ0aHJvdyJdKG4pKX1jYXRjaChxKXt0KHEpfX1mdW5jdGlvbiBtKG4pe24uZG9uZT9rKG4udmFsdWUpOihuZXcgZihmdW5jdGlvbihxKXtxKG4udmFsdWUpfSkpLnRoZW4obCxwKX1tKChoPWguYXBwbHkoYixkfHxbXSkpLm5leHQoKSl9KX07CihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKCl7UG9seW1lcih7aXM6InRmLWdyYXBoLWRhc2hib2FyZC1sb2FkZXIiLF90ZW1wbGF0ZTpudWxsLHByb3BlcnRpZXM6e2RhdGFzZXRzOkFycmF5LHByb2dyZXNzOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LHNlbGVjdGlvbjpPYmplY3Qsc2VsZWN0ZWRGaWxlOk9iamVjdCxjb21wYXRpYmlsaXR5UHJvdmlkZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgYi5ncmFwaC5vcC5UcHVDb21wYXRpYmlsaXR5UHJvdmlkZXJ9LGhpZXJhcmNoeVBhcmFtczp7dHlwZTpPYmplY3QsdmFsdWU6KCk9PmIuZ3JhcGguaGllcmFyY2h5LkRlZmF1bHRIaWVyYXJjaHlQYXJhbXN9LG91dEdyYXBoSGllcmFyY2h5Ont0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LG91dEdyYXBoOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LG91dFN0YXRzOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCxub3RpZnk6ITB9LApfZ3JhcGhSdW5UYWc6T2JqZWN0fSxvYnNlcnZlcnM6WyJfc2VsZWN0aW9uQ2hhbmdlZChzZWxlY3Rpb24sIGNvbXBhdGliaWxpdHlQcm92aWRlcikiLCJfc2VsZWN0ZWRGaWxlQ2hhbmdlZChzZWxlY3RlZEZpbGUsIGNvbXBhdGliaWxpdHlQcm92aWRlcikiXSxfc2VsZWN0aW9uQ2hhbmdlZCgpe3RoaXMuZGVib3VuY2UoInNlbGVjdGlvbmNoYW5nZSIsKCk9Pnt0aGlzLl9sb2FkKHRoaXMuc2VsZWN0aW9uKX0pfSxfbG9hZDpmdW5jdGlvbihmKXtjb25zdCBoPWYucnVuLGs9Zi50YWc7Zj1mLnR5cGU7c3dpdGNoKGYpe2Nhc2UgYi5ncmFwaC5TZWxlY3Rpb25UeXBlLk9QX0dSQVBIOmNhc2UgYi5ncmFwaC5TZWxlY3Rpb25UeXBlLkNPTkNFUFRVQUxfR1JBUEg6dGhpcy5fc2V0T3V0U3RhdHMobnVsbCk7dmFyIHQ9bmV3IFVSTFNlYXJjaFBhcmFtczt0LnNldCgicnVuIixoKTt0LnNldCgiY29uY2VwdHVhbCIsU3RyaW5nKGY9PT1iLmdyYXBoLlNlbGVjdGlvblR5cGUuQ09OQ0VQVFVBTF9HUkFQSCkpOwprJiZ0LnNldCgidGFnIixrKTtmPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvZ3JhcGgiLHQpO3JldHVybiB0aGlzLl9mZXRjaEFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKGYpLnRoZW4oKCk9Pnt0aGlzLl9ncmFwaFJ1blRhZz17cnVuOmgsdGFnOmt9fSk7Y2FzZSBiLmdyYXBoLlNlbGVjdGlvblR5cGUuUFJPRklMRTp7KHt0YWdzOmZ9PXRoaXMuZGF0YXNldHMuZmluZCgoe25hbWU6bX0pPT5tPT09aCkpO2NvbnN0IGw9Zi5maW5kKG09Pm0udGFnPT09aykub3BHcmFwaD9rOm51bGw7Y29uc29sZS5hc3NlcnQoZi5maW5kKG09Pm0udGFnPT09bCksYFJlcXVpcmVkIHRhZyAoJHtsfSkgaXMgbWlzc2luZy5gKTtmPXRoaXMuX2dyYXBoUnVuVGFnJiZ0aGlzLl9ncmFwaFJ1blRhZy5ydW49PT1oJiZ0aGlzLl9ncmFwaFJ1blRhZy50YWc9PT1sP1Byb21pc2UucmVzb2x2ZSgpOnRoaXMuX2xvYWQoe3J1bjpoLHRhZzpsLHR5cGU6Yi5ncmFwaC5TZWxlY3Rpb25UeXBlLk9QX0dSQVBIfSk7CnQ9bmV3IFVSTFNlYXJjaFBhcmFtczt0LnNldCgidGFnIixrKTt0LnNldCgicnVuIixoKTtjb25zdCBwPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJncmFwaHMiLCIvcnVuX21ldGFkYXRhIix0KTtyZXR1cm4gZi50aGVuKCgpPT50aGlzLl9yZWFkQW5kUGFyc2VNZXRhZGF0YShwKSl9ZGVmYXVsdDpyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoYFVua25vd24gc2VsZWN0aW9uIHR5cGU6ICR7Zn1gKSl9fSxfcmVhZEFuZFBhcnNlTWV0YWRhdGE6ZnVuY3Rpb24oZil7dGhpcy5zZXQoInByb2dyZXNzIix7dmFsdWU6MCxtc2c6IiJ9KTtiLmdyYXBoLnBhcnNlci5mZXRjaEFuZFBhcnNlTWV0YWRhdGEoZixiLmdyYXBoLnV0aWwuZ2V0VHJhY2tlcih0aGlzKSkudGhlbihoPT57dGhpcy5fc2V0T3V0U3RhdHMoaCl9KX0sX2ZldGNoQW5kQ29uc3RydWN0SGllcmFyY2hpY2FsR3JhcGg6ZnVuY3Rpb24oZixoKXtyZXR1cm4gVWkodGhpcyx2b2lkIDAsdm9pZCAwLGZ1bmN0aW9uKigpe3RoaXMuc2V0KCJwcm9ncmVzcyIsCnt2YWx1ZTowLG1zZzoiIn0pO3JldHVybiBiLmdyYXBoLmxvYWRlci5mZXRjaEFuZENvbnN0cnVjdEhpZXJhcmNoaWNhbEdyYXBoKGIuZ3JhcGgudXRpbC5nZXRUcmFja2VyKHRoaXMpLGYsaCx0aGlzLmNvbXBhdGliaWxpdHlQcm92aWRlcix0aGlzLmhpZXJhcmNoeVBhcmFtcykudGhlbigoe2dyYXBoOmssZ3JhcGhIaWVyYXJjaHk6dH0pPT57dGhpcy5fc2V0T3V0R3JhcGgoayk7dGhpcy5fc2V0T3V0R3JhcGhIaWVyYXJjaHkodCl9KX0pfSxfc2VsZWN0ZWRGaWxlQ2hhbmdlZDpmdW5jdGlvbihmKXtpZihmKXtmPWYudGFyZ2V0O3ZhciBoPWYuZmlsZXNbMF07aCYmKGYudmFsdWU9IiIsdGhpcy5fZmV0Y2hBbmRDb25zdHJ1Y3RIaWVyYXJjaGljYWxHcmFwaChudWxsLGgpKX19fSl9KShkLmxvYWRlcnx8KGQubG9hZGVyPXt9KSl9KShiLmdyYXBofHwoYi5ncmFwaD17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWdyYXBoLWRhc2hib2FyZC90Zi1ncmFwaC1kYXNoYm9hcmQuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtZ3JhcGgtZGFzaGJvYXJkIixwcm9wZXJ0aWVzOntfZGF0YXNldHM6e3R5cGU6QXJyYXksdmFsdWU6KCk9PltdfSxfZGF0YXNldHNGZXRjaGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9zZWxlY3RlZERhdGFzZXQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9yZW5kZXJIaWVyYXJjaHk6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfcmVuZGVySGllcmFyY2h5Q2hhbmdlZCJ9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcn0sX2NhbmNlbGxlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5DYW5jZWxsZXJ9LF9kZWJ1Z2dlckRhdGFFbmFibGVkOkJvb2xlYW4sYWxsU3RlcHNNb2RlRW5hYmxlZDpCb29sZWFuLHNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LGhlYWx0aFBpbGxzVG9nZ2xlZE9uOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQifSwKc2VsZWN0ZWROb2RlOnt0eXBlOlN0cmluZyxub3RpZnk6ITB9LF9pc0F0dGFjaGVkOkJvb2xlYW4sX2luaXRpYWxpemVkOkJvb2xlYW4sX2FyZUhlYWx0aFBpbGxzTG9hZGluZzpCb29sZWFuLF9kZWJ1Z2dlck51bWVyaWNBbGVydHM6e3R5cGU6QXJyYXksdmFsdWU6W10sbm90aWZ5OiEwfSxfbm9kZU5hbWVzVG9IZWFsdGhQaWxsczp7dHlwZTpPYmplY3QsdmFsdWU6e319LF9oZWFsdGhQaWxsU3RlcEluZGV4Ok51bWJlcixfaGVhbHRoUGlsbFJlcXVlc3RJZDp7dHlwZTpOdW1iZXIsdmFsdWU6MX0sX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQ6TnVtYmVyLF9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lckRlbGF5Ont0eXBlOk51bWJlcix2YWx1ZTo1MDAscmVhZE9ubHk6ITB9LHJ1bnM6QXJyYXkscnVuOnt0eXBlOlN0cmluZyxub3RpZnk6ITAsdmFsdWU6cGQuZ2V0U3RyaW5nSW5pdGlhbGl6ZXIoInJ1biIse2RlZmF1bHRWYWx1ZToiIix1c2VMb2NhbFN0b3JhZ2U6ITF9KSxvYnNlcnZlcjoiX3J1bk9ic2VydmVyIn0sCl9zZWxlY3Rpb246e3R5cGU6T2JqZWN0fSxfY29tcGF0aWJpbGl0eVByb3ZpZGVyOk9iamVjdCxfdHJhY2VJbnB1dHM6Qm9vbGVhbn0sbGlzdGVuZXJzOnsibm9kZS10b2dnbGUtZXhwYW5kIjoiX2hhbmRsZU5vZGVUb2dnbGVFeHBhbmQifSxvYnNlcnZlcnM6WyJfbWF5YmVGZXRjaEhlYWx0aFBpbGxzKF9kZWJ1Z2dlckRhdGFFbmFibGVkLCBhbGxTdGVwc01vZGVFbmFibGVkLCBzcGVjaWZpY0hlYWx0aFBpbGxTdGVwLCBfc2VsZWN0ZWROb2RlKSIsIl9tYXliZUluaXRpYWxpemVEYXNoYm9hcmQoX2lzQXR0YWNoZWQpIiwiX2RldGVybWluZVNlbGVjdGVkRGF0YXNldChfZGF0YXNldHNGZXRjaGVkLCBfZGF0YXNldHMsIHJ1bikiLCJfdXBkYXRlU2VsZWN0ZWREYXRhc2V0TmFtZShfZGF0YXNldHNGZXRjaGVkLCBfZGF0YXNldHMsIF9zZWxlY3RlZERhdGFzZXQpIl0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLCEwKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnNldCgiX2lzQXR0YWNoZWQiLAohMSl9LHJlbG9hZDpmdW5jdGlvbigpe3RoaXMuX2RlYnVnZ2VyRGF0YUVuYWJsZWR8fHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodmMuZ2V0Um91dGVyKCkucGx1Z2luc0xpc3RpbmcoKSkudGhlbih0aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoYj0+e2IuY2FuY2VsbGVkfHxiLnZhbHVlWyJkZWJ1Z2dlciJdJiZ0aGlzLnNldCgiX2RlYnVnZ2VyRGF0YUVuYWJsZWQiLCEwKX0pKTt0aGlzLl9tYXliZUZldGNoSGVhbHRoUGlsbHMoKX0sX2ZpdDpmdW5jdGlvbigpe3RoaXMuJCQoIiNncmFwaGJvYXJkIikuZml0KCl9LF9ydW5PYnNlcnZlcjpwZC5nZXRTdHJpbmdPYnNlcnZlcigicnVuIix7ZGVmYXVsdFZhbHVlOiIiLHBvbHltZXJQcm9wZXJ0eToicnVuIix1c2VMb2NhbFN0b3JhZ2U6ITF9KSxfZmV0Y2hEYXRhc2V0KCl7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImdyYXBocyIsIi9pbmZvIikpfSxfZmV0Y2hIZWFsdGhQaWxscyhiLApkKXtiPXtub2RlX25hbWVzOkpTT04uc3RyaW5naWZ5KGIpLHJ1bjoiX19kZWJ1Z2dlcl9kYXRhX18ifTt2b2lkIDAhPT1kJiYoYi5zdGVwPWQpO2Q9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImRlYnVnZ2VyIiwiL2hlYWx0aF9waWxscyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGQsYil9LF9mZXRjaERlYnVnZ2VyTnVtZXJpY3NBbGVydHMoKXtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiZGVidWdnZXIiLCIvbnVtZXJpY3NfYWxlcnRfcmVwb3J0IikpfSxfZ3JhcGhVcmwoYixkLGYpe3JldHVybiB2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiZ3JhcGhzIiwiL2dyYXBoIixuZXcgVVJMU2VhcmNoUGFyYW1zKHtydW46YixsaW1pdF9hdHRyX3NpemU6ZCxsYXJnZV9hdHRyc19rZXk6Zn0pKX0sX3Nob3VsZFJlcXVlc3RIZWFsdGhQaWxsczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z2dlckRhdGFFbmFibGVkJiYKdGhpcy5oZWFsdGhQaWxsc1RvZ2dsZWRPbiYmdGhpcy5fcmVuZGVySGllcmFyY2h5JiZ0aGlzLl9kYXRhc2V0c1N0YXRlKHRoaXMuX2RhdGFzZXRzRmV0Y2hlZCx0aGlzLl9kYXRhc2V0cywiUFJFU0VOVCIpfSxfbWF5YmVJbml0aWFsaXplRGFzaGJvYXJkOmZ1bmN0aW9uKGIpeyF0aGlzLl9pbml0aWFsaXplZCYmYiYmKHRoaXMuc2V0KCJfY29tcGF0aWJpbGl0eVByb3ZpZGVyIixuZXcgdGYuZ3JhcGgub3AuVHB1Q29tcGF0aWJpbGl0eVByb3ZpZGVyKSx0aGlzLl9pbml0aWFsaXplZD0hMCx0aGlzLl9mZXRjaERhdGFzZXQoKS50aGVuKGQ9Pnt0aGlzLl9kYXRhc2V0cz1PYmplY3Qua2V5cyhkKS5zb3J0KHJjLmNvbXBhcmVUYWdOYW1lcykubWFwKGY9Pntjb25zdCBoPWRbZl07dmFyIGs9T2JqZWN0LmtleXMoaC50YWdzKS5zb3J0KHJjLmNvbXBhcmVUYWdOYW1lcykubWFwKHQ9PmgudGFnc1t0XSkubWFwKCh7dGFnOnQsY29uY2VwdHVhbF9ncmFwaDpsLG9wX2dyYXBoOnAscHJvZmlsZTptfSk9Pgooe3RhZzp0LGRpc3BsYXlOYW1lOnQsY29uY2VwdHVhbEdyYXBoOmwsb3BHcmFwaDpwLHByb2ZpbGU6bX0pKTtrPWgucnVuX2dyYXBoP1t7dGFnOm51bGwsZGlzcGxheU5hbWU6IkRlZmF1bHQiLGNvbmNlcHR1YWxHcmFwaDohMSxvcEdyYXBoOiEwLHByb2ZpbGU6ITF9LC4uLmtdOms7cmV0dXJue25hbWU6Zix0YWdzOmt9fSk7dGhpcy5fZGF0YXNldHNGZXRjaGVkPSEwfSkpfSxfZGV0ZXJtaW5lU2VsZWN0ZWREYXRhc2V0KGIsZCxmKXtmPyhkPWQuZmluZEluZGV4KGg9PmgubmFtZT09PWYpLC0xPT09ZD9iJiYoYj10aGlzLiQkKCIjZXJyb3ItZGlhbG9nIiksYi50ZXh0Q29udGVudD1gTm8gZGF0YXNldCBuYW1lZCAiJHtmfSIgY291bGQgYmUgZm91bmQuYCxiLm9wZW4oKSk6dGhpcy5zZXQoIl9zZWxlY3RlZERhdGFzZXQiLGQpKTp0aGlzLnNldCgiX3NlbGVjdGVkRGF0YXNldCIsMCl9LF91cGRhdGVTZWxlY3RlZERhdGFzZXROYW1lKGIsZCxmKXtiJiYoZC5sZW5ndGg8PWZ8fHRoaXMuc2V0KCJydW4iLApkW2ZdLm5hbWUpKX0sX3JlcXVlc3RIZWFsdGhQaWxsczpmdW5jdGlvbigpe3RoaXMuc2V0KCJfYXJlSGVhbHRoUGlsbHNMb2FkaW5nIiwhMCk7dmFyIGI9Kyt0aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkO251bGwhPT10aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkKSx0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGwpO3RoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl9oZWFsdGhQaWxsU3RlcFJlcXVlc3RUaW1lcklkPW51bGw7dGhpcy5faW5pdGlhdGVOZXR3b3JrUmVxdWVzdEZvckhlYWx0aFBpbGxzKGIpfS5iaW5kKHRoaXMpLHRoaXMuX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVyRGVsYXkpOnRoaXMuX2luaXRpYXRlTmV0d29ya1JlcXVlc3RGb3JIZWFsdGhQaWxscyhiKX0sCl9pbml0aWF0ZU5ldHdvcmtSZXF1ZXN0Rm9ySGVhbHRoUGlsbHM6ZnVuY3Rpb24oYil7aWYodGhpcy5faGVhbHRoUGlsbFJlcXVlc3RJZD09PWIpe3ZhciBkPXRoaXMuX2ZldGNoSGVhbHRoUGlsbHModGhpcy5fcmVuZGVySGllcmFyY2h5LmdldE5hbWVzT2ZSZW5kZXJlZE9wcygpLHRoaXMuYWxsU3RlcHNNb2RlRW5hYmxlZD90aGlzLnNwZWNpZmljSGVhbHRoUGlsbFN0ZXA6dm9pZCAwKSxmPXRoaXMuX2ZldGNoRGVidWdnZXJOdW1lcmljc0FsZXJ0cygpO1Byb21pc2UuYWxsKFtkLGZdKS50aGVuKGZ1bmN0aW9uKGgpe3ZhciBrPWhbMF07aD1oWzFdO2lmKHRoaXMuaGVhbHRoUGlsbHNUb2dnbGVkT24mJmI9PT10aGlzLl9oZWFsdGhQaWxsUmVxdWVzdElkKXtmb3IodmFyIHQgaW4gayl7dGhpcy5zZXQoIl9oZWFsdGhQaWxsU3RlcEluZGV4IixrW3RdLmxlbmd0aC0xKTticmVha310aGlzLnNldCgiX2RlYnVnZ2VyTnVtZXJpY0FsZXJ0cyIsaCk7dGhpcy5zZXQoIl9ub2RlTmFtZXNUb0hlYWx0aFBpbGxzIiwKayk7dGhpcy5zZXQoIl9hcmVIZWFsdGhQaWxsc0xvYWRpbmciLCExKTt0aGlzLnNldCgiX2hlYWx0aFBpbGxTdGVwUmVxdWVzdFRpbWVySWQiLG51bGwpfX0uYmluZCh0aGlzKSl9fSxfZGF0YXNldHNTdGF0ZTpmdW5jdGlvbihiLGQsZil7cmV0dXJuIGI/ZCYmZC5sZW5ndGg/IlBSRVNFTlQiPT09ZjoiRU1QVFkiPT09ZjoiTk9UX0xPQURFRCI9PT1mfSxfcmVuZGVySGllcmFyY2h5Q2hhbmdlZDpmdW5jdGlvbigpe3RoaXMucmVsb2FkKCl9LF9oYW5kbGVOb2RlVG9nZ2xlRXhwYW5kOmZ1bmN0aW9uKCl7dGhpcy5fbWF5YmVGZXRjaEhlYWx0aFBpbGxzKCl9LF9oZWFsdGhQaWxsc1RvZ2dsZWRPbkNoYW5nZWQ6ZnVuY3Rpb24oYil7Yj90aGlzLnJlbG9hZCgpOnRoaXMuc2V0KCJfbm9kZU5hbWVzVG9IZWFsdGhQaWxscyIse30pfSxfbWF5YmVGZXRjaEhlYWx0aFBpbGxzOmZ1bmN0aW9uKCl7dGhpcy5fc2hvdWxkUmVxdWVzdEhlYWx0aFBpbGxzKCkmJnRoaXMuX3JlcXVlc3RIZWFsdGhQaWxscygpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3Z6LWRpc3RyaWJ1dGlvbi1jaGFydC92ei1kaXN0cmlidXRpb24tY2hhcnQuanMKdmFyIEprOwooZnVuY3Rpb24oYil7Y2xhc3MgZHtjb25zdHJ1Y3RvcihmLGgpe3RoaXMucnVuMmRhdGFzZXRzPXt9O3RoaXMuY29sb3JTY2FsZT1oO3RoaXMuYnVpbGRDaGFydChmKX1nZXREYXRhc2V0KGYpe3ZvaWQgMD09PXRoaXMucnVuMmRhdGFzZXRzW2ZdJiYodGhpcy5ydW4yZGF0YXNldHNbZl09bmV3IFBsb3R0YWJsZS5EYXRhc2V0KFtdLHtydW46Zn0pKTtyZXR1cm4gdGhpcy5ydW4yZGF0YXNldHNbZl19YnVpbGRDaGFydChmKXt0aGlzLm91dGVyJiZ0aGlzLm91dGVyLmRlc3Ryb3koKTtmPXJnLmdldFhDb21wb25lbnRzKGYpO3RoaXMueEFjY2Vzc29yPWYuYWNjZXNzb3I7dGhpcy54U2NhbGU9Zi5zY2FsZTt0aGlzLnhBeGlzPWYuYXhpczt0aGlzLnhBeGlzLm1hcmdpbigwKS50aWNrTGFiZWxQYWRkaW5nKDMpO3RoaXMueVNjYWxlPW5ldyBQbG90dGFibGUuU2NhbGVzLkxpbmVhcjt0aGlzLnlBeGlzPW5ldyBQbG90dGFibGUuQXhlcy5OdW1lcmljKHRoaXMueVNjYWxlLCJsZWZ0Iik7Zj0KcmcubXVsdGlzY2FsZUZvcm1hdHRlcihyZy5ZX0FYSVNfRk9STUFUVEVSX1BSRUNJU0lPTik7dGhpcy55QXhpcy5tYXJnaW4oMCkudGlja0xhYmVsUGFkZGluZyg1KS5mb3JtYXR0ZXIoZik7dGhpcy55QXhpcy51c2VzVGV4dFdpZHRoQXBwcm94aW1hdGlvbigpO2Y9dGhpcy5idWlsZFBsb3QodGhpcy54QWNjZXNzb3IsdGhpcy54U2NhbGUsdGhpcy55U2NhbGUpO3RoaXMuZ3JpZGxpbmVzPW5ldyBQbG90dGFibGUuQ29tcG9uZW50cy5HcmlkbGluZXModGhpcy54U2NhbGUsdGhpcy55U2NhbGUpO3RoaXMuY2VudGVyPW5ldyBQbG90dGFibGUuQ29tcG9uZW50cy5Hcm91cChbdGhpcy5ncmlkbGluZXMsZl0pO3RoaXMub3V0ZXI9bmV3IFBsb3R0YWJsZS5Db21wb25lbnRzLlRhYmxlKFtbdGhpcy55QXhpcyx0aGlzLmNlbnRlcl0sW251bGwsdGhpcy54QXhpc11dKX1idWlsZFBsb3QoZixoLGspe2xldCB0PVswLDIyOCwxNTg3LDMwODUsNUUzLDY5MTUsODQxMyw5NzcyLDFFNF0sbD1fLnJhbmdlKHQubGVuZ3RoLQoxKS5tYXAodT0+KHRbdSsxXS10W3VdKS8yNTAwKSxwPXQubWFwKCh1LHgpPT5BPT5BW3hdWzFdKSxtPXBbNF0sbj1fLnJhbmdlKHAubGVuZ3RoLTEpLm1hcCh1PT57bGV0IHg9bmV3IFBsb3R0YWJsZS5QbG90cy5BcmVhO3gueChmLGgpO2xldCBBPTQ8dT9wW3VdOnBbdSsxXTt4LnkoNDx1P3BbdSsxXTpwW3VdLGspO3gueTAoQSk7eC5hdHRyKCJmaWxsIiwoeSx3LEMpPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUoQy5tZXRhZGF0YSgpLnJ1bikpO3guYXR0cigic3Ryb2tlIiwoeSx3LEMpPT50aGlzLmNvbG9yU2NhbGUuc2NhbGUoQy5tZXRhZGF0YSgpLnJ1bikpO3guYXR0cigic3Ryb2tlLXdlaWdodCIsKCk9PiIwLjVweCIpO3guYXR0cigic3Ryb2tlLW9wYWNpdHkiLCgpPT5sW3VdKTt4LmF0dHIoImZpbGwtb3BhY2l0eSIsKCk9PmxbdV0pO3JldHVybiB4fSkscT1uZXcgUGxvdHRhYmxlLlBsb3RzLkxpbmU7cS54KGYsaCk7cS55KG0sayk7cS5hdHRyKCJzdHJva2UiLCh1LHgsQSk9PnRoaXMuY29sb3JTY2FsZS5zY2FsZShBLnJ1bikpOwp0aGlzLnBsb3RzPW47cmV0dXJuIG5ldyBQbG90dGFibGUuQ29tcG9uZW50cy5Hcm91cChuKX1zZXRWaXNpYmxlU2VyaWVzKGYpe3RoaXMucnVucz1mO2xldCBoPWYubWFwKGs9PnRoaXMuZ2V0RGF0YXNldChrKSk7dGhpcy5wbG90cy5mb3JFYWNoKGs9PmsuZGF0YXNldHMoaCkpfXNldFNlcmllc0RhdGEoZixoKXt0aGlzLmdldERhdGFzZXQoZikuZGF0YShoKX1yZW5kZXJUbyhmKXt0aGlzLnRhcmdldFNWRz1mO3RoaXMub3V0ZXIucmVuZGVyVG8oZil9cmVkcmF3KCl7dGhpcy5vdXRlci5yZWRyYXcoKX1kZXN0cm95KCl7dGhpcy5vdXRlci5kZXN0cm95KCl9fWIuRGlzdHJpYnV0aW9uQ2hhcnQ9ZDtQb2x5bWVyKHtpczoidnotZGlzdHJpYnV0aW9uLWNoYXJ0Iixwcm9wZXJ0aWVzOntjb2xvclNjYWxlOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybihuZXcgUGxvdHRhYmxlLlNjYWxlcy5Db2xvcikucmFuZ2UoZDMuc2NoZW1lQ2F0ZWdvcnkxMCl9fSx4VHlwZTp7dHlwZTpTdHJpbmcsCnZhbHVlOiJzdGVwIn0sX2F0dGFjaGVkOkJvb2xlYW4sX2NoYXJ0Ok9iamVjdCxfdmlzaWJsZVNlcmllc0NhY2hlOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxfc2VyaWVzRGF0YUNhY2hlOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX0sX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZDp7dHlwZTpOdW1iZXIsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9tYWtlQ2hhcnQoeFR5cGUsIGNvbG9yU2NhbGUsIF9hdHRhY2hlZCkiLCJfcmVsb2FkRnJvbUNhY2hlKF9jaGFydCkiXSxzZXRWaXNpYmxlU2VyaWVzOmZ1bmN0aW9uKGYpe3RoaXMuX3Zpc2libGVTZXJpZXNDYWNoZT1mO3RoaXMuX2NoYXJ0JiYodGhpcy5fY2hhcnQuc2V0VmlzaWJsZVNlcmllcyhmKSx0aGlzLnJlZHJhdygpKX0sc2V0U2VyaWVzRGF0YTpmdW5jdGlvbihmLGgpe3RoaXMuX3Nlcmllc0RhdGFDYWNoZVtmXT1oO3RoaXMuX2NoYXJ0JiZ0aGlzLl9jaGFydC5zZXRTZXJpZXNEYXRhKGYsCmgpfSxyZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9jaGFydC5yZWRyYXcoKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuY2hhcnRkaXYsITApfSxfbWFrZUNoYXJ0OmZ1bmN0aW9uKGYsaCxrKXtudWxsPT09dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkJiZ0aGlzLmNhbmNlbEFzeW5jKHRoaXMuX21ha2VDaGFydEFzeW5jQ2FsbGJhY2tJZCk7dGhpcy5fbWFrZUNoYXJ0QXN5bmNDYWxsYmFja0lkPXRoaXMuYXN5bmMoZnVuY3Rpb24oKXt0aGlzLl9tYWtlQ2hhcnRBc3luY0NhbGxiYWNrSWQ9bnVsbDtpZihrKXt0aGlzLl9jaGFydCYmdGhpcy5fY2hhcnQuZGVzdHJveSgpO3ZhciB0PW5ldyBkKGYsaCksbD1kMy5zZWxlY3QodGhpcy4kLmNoYXJ0ZGl2KTt0LnJlbmRlclRvKGwpO3RoaXMuX2NoYXJ0PXR9fSwzNTApfSxfcmVsb2FkRnJvbUNhY2hlOmZ1bmN0aW9uKCl7dGhpcy5fY2hhcnQmJih0aGlzLl9jaGFydC5zZXRWaXNpYmxlU2VyaWVzKHRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZSksCnRoaXMuX3Zpc2libGVTZXJpZXNDYWNoZS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3RoaXMuX2NoYXJ0LnNldFNlcmllc0RhdGEoZix0aGlzLl9zZXJpZXNEYXRhQ2FjaGVbZl18fFtdKX0uYmluZCh0aGlzKSkpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2F0dGFjaGVkPSEwfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2F0dGFjaGVkPSExfX0pfSkoSmt8fChKaz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQvdGYtZGlzdHJpYnV0aW9uLWxvYWRlci5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1kaXN0cmlidXRpb24tbG9hZGVyIixwcm9wZXJ0aWVzOntydW46U3RyaW5nLHRhZzpTdHJpbmcsdGFnTWV0YWRhdGE6T2JqZWN0LHhUeXBlOlN0cmluZyxkYXRhVG9Mb2FkOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfY29tcHV0ZURhdGFUb0xvYWQocnVuLCB0YWcpIn0sZ2V0RGF0YUxvYWROYW1lOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOigpPT4oe3J1bjpifSk9PmJ9LGdldERhdGFMb2FkVXJsOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOigpPT4oe3RhZzpiLHJ1bjpkfSk9PnZjLmFkZFBhcmFtcyh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiZGlzdHJpYnV0aW9ucyIsIi9kaXN0cmlidXRpb25zIikse3RhZzpiLHJ1bjpkfSl9LGxvYWREYXRhQ2FsbGJhY2s6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4oYixkLGYpPT57Yj1mLm1hcChoPT57Y29uc3QgW2ssdCxsXT1oO2wud2FsbF90aW1lPW5ldyBEYXRlKDFFMyprKTtsLnN0ZXA9dDtyZXR1cm4gbH0pOwpkPXRoaXMuZ2V0RGF0YUxvYWROYW1lKGQpO3RoaXMuJC5jaGFydC5zZXRTZXJpZXNEYXRhKGQsYik7dGhpcy4kLmNoYXJ0LnNldFZpc2libGVTZXJpZXMoW2RdKX19fSxfY29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pih7c2NhbGU6cGYucnVuc0NvbG9yU2NhbGV9KSxyZWFkT25seTohMH0sX3J1bkNvbG9yOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihydW4pIn0sX2V4cGFuZGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVmbGVjdFRvQXR0cmlidXRlOiEwfSxyZXF1ZXN0TWFuYWdlcjpPYmplY3QsX2NhbmNlbGxlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5DYW5jZWxsZXJ9fSxvYnNlcnZlcnM6WyJyZWxvYWQocnVuLCB0YWcpIl0sYmVoYXZpb3JzOltxZC5EYXRhTG9hZGVyQmVoYXZpb3JdLF9jb21wdXRlRGF0YVRvTG9hZChiLGQpe3JldHVyblt7cnVuOmIsdGFnOmR9XX0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZS5zY2FsZShiKX0sCnJlZHJhdygpe3RoaXMuJC5jaGFydC5yZWRyYXcoKX0sX3RvZ2dsZUV4cGFuZGVkKCl7dGhpcy5zZXQoIl9leHBhbmRlZCIsIXRoaXMuX2V4cGFuZGVkKTt0aGlzLnJlZHJhdygpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWRpc3RyaWJ1dGlvbi1kYXNoYm9hcmQvdGYtZGlzdHJpYnV0aW9uLWRhc2hib2FyZC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1kaXN0cmlidXRpb24tZGFzaGJvYXJkIixwcm9wZXJ0aWVzOntfeFR5cGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJzdGVwIn0sX3NlbGVjdGVkUnVuczpBcnJheSxfcnVuVG9UYWc6T2JqZWN0LF9ydW5Ub1RhZ0luZm86T2JqZWN0LF9kYXRhTm90Rm91bmQ6Qm9vbGVhbixfdGFnRmlsdGVyOlN0cmluZyxfY2F0ZWdvcmllc0RvbVJlYWR5OkJvb2xlYW4sX2NhdGVnb3JpZXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9tYWtlQ2F0ZWdvcmllcyhfcnVuVG9UYWcsIF9zZWxlY3RlZFJ1bnMsIF90YWdGaWx0ZXIsIF9jYXRlZ29yaWVzRG9tUmVhZHkpIn0sX3JlcXVlc3RNYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLlJlcXVlc3RNYW5hZ2VyfX0scmVhZHkoKXt0aGlzLnJlbG9hZCgpfSxyZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkRGlzdHJpYnV0aW9ucygpfSl9LF9mZXRjaFRhZ3MoKXtjb25zdCBiPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJkaXN0cmlidXRpb25zIiwKIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57aWYoIV8uaXNFcXVhbChkLHRoaXMuX3J1blRvVGFnSW5mbykpe3ZhciBmPV8ubWFwVmFsdWVzKGQsaz0+T2JqZWN0LmtleXMoaykpLGg9dmMuZ2V0VGFncyhmKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWgubGVuZ3RoKTt0aGlzLnNldCgiX3J1blRvVGFnIixmKTt0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsZCk7dGhpcy5hc3luYygoKT0+e3RoaXMuc2V0KCJfY2F0ZWdvcmllc0RvbVJlYWR5IiwhMCl9KX19KX0sX3JlbG9hZERpc3RyaWJ1dGlvbnMoKXt0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtZGlzdHJpYnV0aW9uLWxvYWRlciIpLmZvckVhY2goYj0+e2IucmVsb2FkKCl9KX0sX3Nob3VsZE9wZW4oYil7cmV0dXJuIDI+PWJ9LF9tYWtlQ2F0ZWdvcmllcyhiLGQsZil7cmV0dXJuICRjLmNhdGVnb3JpemVSdW5UYWdDb21iaW5hdGlvbnMoYixkLGYpfSxfdGFnTWV0YWRhdGEoYiwKZCxmKXtyZXR1cm4gYltkXVtmXX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92ei1oaXN0b2dyYW0tdGltZXNlcmllcy92ei1oaXN0b2dyYW0tdGltZXNlcmllcy5odG1sLmpzClBvbHltZXIoe2lzOiJ2ei1oaXN0b2dyYW0tdGltZXNlcmllcyIscHJvcGVydGllczp7bW9kZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im9mZnNldCJ9LHRpbWVQcm9wZXJ0eTp7dHlwZTpTdHJpbmcsdmFsdWU6InN0ZXAifSxiaW5zOnt0eXBlOlN0cmluZyx2YWx1ZToiYmlucyJ9LHg6e3R5cGU6U3RyaW5nLHZhbHVlOiJ4In0sZHg6e3R5cGU6U3RyaW5nLHZhbHVlOiJkeCJ9LHk6e3R5cGU6U3RyaW5nLHZhbHVlOiJ5In0sY29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZDMuc2NhbGVPcmRpbmFsKGQzLnNjaGVtZUNhdGVnb3J5MTApfX0sbW9kZVRyYW5zaXRpb25EdXJhdGlvbjp7dHlwZTpOdW1iZXIsdmFsdWU6NTAwfSxfYXR0YWNoZWQ6Qm9vbGVhbixfbmFtZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX2RhdGE6e3R5cGU6QXJyYXksdmFsdWU6bnVsbH19LG9ic2VydmVyczpbInJlZHJhdyh0aW1lUHJvcGVydHksIF9hdHRhY2hlZCkiLCJfbW9kZVJlZHJhdyhtb2RlKSJdLApyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2NvcGVTdWJ0cmVlKHRoaXMuJC5zdmcsITApfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2F0dGFjaGVkPSEwfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2F0dGFjaGVkPSExfSxzZXRTZXJpZXNEYXRhOmZ1bmN0aW9uKGIsZCl7dGhpcy5fbmFtZT1iO3RoaXMuX2RhdGE9ZDt0aGlzLnJlZHJhdygpfSxyZWRyYXc6ZnVuY3Rpb24oKXt0aGlzLl9kcmF3KDApfSxfbW9kZVJlZHJhdzpmdW5jdGlvbigpe3RoaXMuX2RyYXcodGhpcy5tb2RlVHJhbnNpdGlvbkR1cmF0aW9uKX0sX2RyYXc6ZnVuY3Rpb24oYil7aWYodGhpcy5fYXR0YWNoZWQmJnRoaXMuX2RhdGEpe2lmKHZvaWQgMD09PWIpdGhyb3cgRXJyb3IoInZ6LWhpc3RvZ3JhbS10aW1lc2VyaWVzIF9kcmF3IG5lZWRzIGR1cmF0aW9uIik7aWYoMD49dGhpcy5fZGF0YS5sZW5ndGgpdGhyb3cgRXJyb3IoIk5vdCBlbm91Z2ggc3RlcHMgaW4gdGhlIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmJpbnMpKXRocm93IEVycm9yKCJObyBiaW5zIHByb3BlcnR5IG9mICciKwp0aGlzLmJpbnMrIicgaW4gZGF0YSIpO2lmKDA+PXRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXS5sZW5ndGgpdGhyb3cgRXJyb3IoIk11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgYmluIGluIGJpbnMgaW4gZGF0YSIpO2lmKCF0aGlzLl9kYXRhWzBdW3RoaXMuYmluc11bMF0uaGFzT3duUHJvcGVydHkodGhpcy54KSl0aHJvdyBFcnJvcigiTm8geCBwcm9wZXJ0eSAnIit0aGlzLngrIicgb24gYmlucyBkYXRhIik7aWYoIXRoaXMuX2RhdGFbMF1bdGhpcy5iaW5zXVswXS5oYXNPd25Qcm9wZXJ0eSh0aGlzLmR4KSl0aHJvdyBFcnJvcigiTm8gZHggcHJvcGVydHkgJyIrdGhpcy5keCsiJyBvbiBiaW5zIGRhdGEiKTtpZighdGhpcy5fZGF0YVswXVt0aGlzLmJpbnNdWzBdLmhhc093blByb3BlcnR5KHRoaXMueSkpdGhyb3cgRXJyb3IoIk5vIHkgcHJvcGVydHkgJyIrdGhpcy55KyInIG9uIGJpbnMgZGF0YSIpO3ZhciBkPXRoaXMudGltZVByb3BlcnR5LGY9dGhpcy54LGg9dGhpcy5iaW5zLGs9dGhpcy5keCwKdD10aGlzLnksbD10aGlzLl9kYXRhLHA9dGhpcy5tb2RlLG09ZDMuaGNsKHRoaXMuY29sb3JTY2FsZSh0aGlzLl9uYW1lKSksbj1kMy5zZWxlY3QodGhpcy4kLnRvb2x0aXApLHE9ZnVuY3Rpb24oeWEpe3JldHVybiB5YVtmXX0sdT1mdW5jdGlvbih5YSl7cmV0dXJuIHlhW3RdfSx4PWZ1bmN0aW9uKHlhKXtyZXR1cm4geWFbZl0reWFba119LEE9ZnVuY3Rpb24oeWEpe3JldHVybiB5YVtkXX07InJlbGF0aXZlIj09PWQmJihBPWZ1bmN0aW9uKHlhKXtyZXR1cm4geWEud2FsbF90aW1lLWxbMF0ud2FsbF90aW1lfSk7dmFyIHk9dGhpcy4kLnN2Zy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx3PXkud2lkdGgsQz15LmhlaWdodCxGPTU7aWYoIm9mZnNldCI9PT1wKXt2YXIgRD1DLzIuNTtGPUQrNX1lbHNlIEQ9Qy1GLTIwO3ZhciBCPXctMjQtNjAsST1DLUYtMjA7ZDMubWluKGwscSk7ZDMubWF4KGwseCk7dmFyIE49ZDMuZm9ybWF0KCIuM24iKTt5PWQzLmZvcm1hdCgiLjBmIik7IndhbGxfdGltZSI9PT0KZD95PWQzLnRpbWVGb3JtYXQoIiVtLyVkICVYIik6InJlbGF0aXZlIj09PWQmJih5PWZ1bmN0aW9uKHlhKXtyZXR1cm4gZDMuZm9ybWF0KCIuMXIiKSh5YS8zNkU1KSsiaCJ9KTt2YXIgTz1sLm1hcChmdW5jdGlvbih5YSl7cmV0dXJuW2QzLm1pbih5YVtoXSxxKSxkMy5tYXgoeWFbaF0seCldfSksSD1sLm1hcChmdW5jdGlvbih5YSl7cmV0dXJuIGQzLmV4dGVudCh5YVtoXSx1KX0pLEs9ZDMuZXh0ZW50KGwsQSksTT0oIndhbGxfdGltZSI9PT1kP2QzLnNjYWxlVGltZSgpOmQzLnNjYWxlTGluZWFyKCkpLmRvbWFpbihLKS5yYW5nZShbMCwib2Zmc2V0Ij09PXA/STowXSksTD1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihbMCxkMy5tYXgobCxmdW5jdGlvbih5YSxTYSl7cmV0dXJuIEhbU2FdWzFdfSldKS5yYW5nZShbRCwwXSksUT1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihMLmRvbWFpbigpKS5yYW5nZShbNTAwLDBdKSxUPWQzLnNjYWxlTGluZWFyKCkuZG9tYWluKFtkMy5taW4obCxmdW5jdGlvbih5YSwKU2Epe3JldHVybiBPW1NhXVswXX0pLGQzLm1heChsLGZ1bmN0aW9uKHlhLFNhKXtyZXR1cm4gT1tTYV1bMV19KV0pLm5pY2UoKS5yYW5nZShbMCxCXSksWD1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihULmRvbWFpbigpKS5yYW5nZShbMCw1MDBdKSxhYT1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihkMy5leHRlbnQobCxBKSkucmFuZ2UoW20uZGFya2VyKCksbS5icmlnaHRlcigpXSkuaW50ZXJwb2xhdGUoZDMuaW50ZXJwb2xhdGVIY2wpO209ZDMuYXhpc0JvdHRvbShUKS50aWNrcygpO3ZhciBsYT1kMy5heGlzUmlnaHQoTSkudGlja3MoKS50aWNrRm9ybWF0KHkpLFo9ZDMuYXhpc1JpZ2h0KEwpLnRpY2tzKCkudGlja1NpemUoQis1KS50aWNrRm9ybWF0KE4pLGJhPWZ1bmN0aW9uKHlhKXtyZXR1cm4geWFbZl0reWFba10vMn0sZWE9ZDMubGluZSgpLngoZnVuY3Rpb24oeWEpe3JldHVybiBYKGJhKHlhKSl9KS55KGZ1bmN0aW9uKHlhKXtyZXR1cm4gUSh5YVt0XSl9KSxjYT1mdW5jdGlvbih5YSl7cmV0dXJuIk0iKwpYKGJhKHlhWzBdKSkrIiwiK1EoMCkrIkwiK2VhKHlhKS5zbGljZSgxKSsiTCIrWChiYSh5YVt5YS5sZW5ndGgtMV0pKSsiLCIrUSgwKX0sa2E9dGhpcy4kLnN2Zzt5PWQzLnNlbGVjdChrYSk7Yj15LnRyYW5zaXRpb24oKS5kdXJhdGlvbihiKTt5PXkuc2VsZWN0KCJnIikuY2xhc3NlZCgic21hbGwiLGZ1bmN0aW9uKCl7cmV0dXJuIDA8QiYmMTUwPj1CfSkuY2xhc3NlZCgibWVkaXVtIixmdW5jdGlvbigpe3JldHVybiAxNTA8QiYmMzAwPj1CfSkuY2xhc3NlZCgibGFyZ2UiLGZ1bmN0aW9uKCl7cmV0dXJuIDMwMDxCfSk7Yj1iLnNlbGVjdCgiZyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyNCwiK0YrIikiKTt2YXIgWT1kMy5iaXNlY3Rvcih4KS5sZWZ0O0s9eS5zZWxlY3QoIi5zdGFnZSIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7dmEuc3R5bGUoIm9wYWNpdHkiLDEpO3hhLnN0eWxlKCJvcGFjaXR5IiwxKTtBYS5zdHlsZSgib3BhY2l0eSIsMSk7RmEuc3R5bGUoIm9wYWNpdHkiLAoxKTtuLnN0eWxlKCJvcGFjaXR5IiwxKX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXt2YS5zdHlsZSgib3BhY2l0eSIsMCk7eGEuc3R5bGUoIm9wYWNpdHkiLDApO0FhLnN0eWxlKCJvcGFjaXR5IiwwKTtGYS5zdHlsZSgib3BhY2l0eSIsMCk7dmEuY2xhc3NlZCgiaG92ZXItY2xvc2VzdCIsITEpO0VhLmNsYXNzZWQoIm91dGxpbmUtaG92ZXIiLCExKTtuLnN0eWxlKCJvcGFjaXR5IiwwKX0pLm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7ZnVuY3Rpb24geWEoQWIpe3JldHVybiBNYXRoLm1pbihBYltoXS5sZW5ndGgtMSxZKEFiW2hdLFhhKSl9dmFyIFNhPWQzLm1vdXNlKHRoaXMpLFhhPVQuaW52ZXJ0KFNhWzBdKTtNLmludmVydChTYVsxXSk7dmFyIHViLEJiPUluZmluaXR5LHFiO3ZhLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oQWIpe3ZhciBIYj15YShBYik7cWI9QWI7dmFyIGljPVQoQWJbaF1bSGJdW2ZdK0FiW2hdW0hiXVtrXS8yKTtIYj1MKEFiW2hdW0hiXVt0XSk7dmFyIGJjPQoib2Zmc2V0Ij09PXA/TShBKEFiKSktKEQtSGIpOkhiO2JjPU1hdGguYWJzKFNhWzFdLWJjKTtiYzxCYiYmKEJiPWJjLHViPUFiKTtyZXR1cm4idHJhbnNsYXRlKCIraWMrIiwiK0hiKyIpIn0pO3ZhLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oQWIpe3ZhciBIYj15YShBYik7cmV0dXJuIEFiW2hdW0hiXVt0XX0pO3ZhLmNsYXNzZWQoImhvdmVyLWNsb3Nlc3QiLGZ1bmN0aW9uKEFiKXtyZXR1cm4gQWI9PT11Yn0pO0VhLmNsYXNzZWQoIm91dGxpbmUtaG92ZXIiLGZ1bmN0aW9uKEFiKXtyZXR1cm4gQWI9PT11Yn0pO3ZhciB6Yj15YShxYik7eGEuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIitUKHFiW2hdW3piXVtmXStxYltoXVt6Yl1ba10vMikrIiwgIitJKyIpIn0pLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oKXtyZXR1cm4gTihxYltoXVt6Yl1bZl0rcWJbaF1bemJdW2tdLzIpfSk7dmFyIHZiPWxhLnRpY2tGb3JtYXQoKTtBYS5hdHRyKCJ0cmFuc2Zvcm0iLApmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIitCKyIsICIrKCJvZmZzZXQiPT09cD9NKEEodWIpKTowKSsiKSJ9KS5zdHlsZSgiZGlzcGxheSIsIm9mZnNldCI9PT1wPyIiOiJub25lIikuc2VsZWN0KCJ0ZXh0IikudGV4dChmdW5jdGlvbigpe3JldHVybiB2YihBKHViKSl9KTt2YXIgR2I9Wi50aWNrRm9ybWF0KCk7RmEuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbigpe3JldHVybiJ0cmFuc2xhdGUoIitCKyIsICIrKCJvZmZzZXQiPT09cD8wOkwodWJbaF1bemJdW3RdKSkrIikifSkuc3R5bGUoImRpc3BsYXkiLCJvZmZzZXQiPT09cD8ibm9uZSI6IiIpLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oKXtyZXR1cm4gR2IodWJbaF1bemJdW3RdKX0pO3ZhciBOYj1kMy5tb3VzZShrYSk7bi5zdHlsZSgidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKE5iWzBdKzE1KSsicHgsIisoTmJbMV0tMTUpKyJweCkiKS5zZWxlY3QoInNwYW4iKS50ZXh0KCJvZmZzZXQiPT09cD9HYih1YltoXVt6Yl1bdF0pOgooInN0ZXAiPT09ZD8ic3RlcCAiOiIiKSt2YihBKHViKSkpfSk7Sy5zZWxlY3QoIi5iYWNrZ3JvdW5kIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0yNCwiKy1GKyIpIikuYXR0cigid2lkdGgiLHcpLmF0dHIoImhlaWdodCIsQyk7Qz1LLnNlbGVjdEFsbCgiLmhpc3RvZ3JhbSIpLmRhdGEobCk7Qy5leGl0KCkucmVtb3ZlKCk7dz1DLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJoaXN0b2dyYW0iKTtDPXcubWVyZ2UoQykuc29ydChmdW5jdGlvbih5YSxTYSl7cmV0dXJuIEEoeWEpLUEoU2EpfSk7Rj1iLnNlbGVjdEFsbCgiLmhpc3RvZ3JhbSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oeWEpe3JldHVybiJ0cmFuc2xhdGUoMCwgIisoIm9mZnNldCI9PT1wP00oQSh5YSkpLUQ6MCkrIikifSk7dy5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsImJhc2VsaW5lIik7Ri5zZWxlY3QoIi5iYXNlbGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24oKXtyZXR1cm4ib2Zmc2V0Ij09PQpwPy4xOjB9KS5hdHRyKCJ5MSIsRCkuYXR0cigieTIiLEQpLmF0dHIoIngyIixCKTt3LmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwib3V0bGluZSIpO3ZhciBFYT1DLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ2ZWN0b3ItZWZmZWN0Iiwibm9uLXNjYWxpbmctc3Ryb2tlIikuYXR0cigiZCIsZnVuY3Rpb24oeWEpe3JldHVybiBjYSh5YVtoXSl9KS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKTtGLnNlbGVjdCgiLm91dGxpbmUiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSgiK0IvNTAwKyIsICIrRC81MDArIikiKS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbih5YSl7cmV0dXJuIm9mZnNldCI9PT1wPyJ3aGl0ZSI6YWEoQSh5YSkpfSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsZnVuY3Rpb24oKXtyZXR1cm4ib2Zmc2V0Ij09PXA/MTowfSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKHlhKXtyZXR1cm4gYWEoQSh5YSkpfSk7dz13LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiaG92ZXIiKS5zdHlsZSgiZmlsbCIsCmZ1bmN0aW9uKHlhKXtyZXR1cm4gYWEoQSh5YSkpfSk7dmFyIHZhPUMuc2VsZWN0KCIuaG92ZXIiKTt3LmFwcGVuZCgiY2lyY2xlIikuYXR0cigiciIsMik7dy5hcHBlbmQoInRleHQiKS5zdHlsZSgiZGlzcGxheSIsIm5vbmUiKS5hdHRyKCJkeCIsNCk7dz15LnNlbGVjdCgiLngtYXhpcy1ob3ZlciIpLnNlbGVjdEFsbCgiLmxhYmVsIikuZGF0YShbIngiXSk7Qz13LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO3ZhciB4YT13Lm1lcmdlKEMpO0MuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTIwKS5hdHRyKCJ5Iiw2KS5hdHRyKCJ3aWR0aCIsNDApLmF0dHIoImhlaWdodCIsMTQpO0MuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDYpO0MuYXBwZW5kKCJ0ZXh0IikuYXR0cigiZHkiLDE4KTt3PXkuc2VsZWN0KCIueS1heGlzLWhvdmVyIikuc2VsZWN0QWxsKCIubGFiZWwiKS5kYXRhKFsieSJdKTsKQz13LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO3ZhciBBYT13Lm1lcmdlKEMpO0MuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsOCkuYXR0cigieSIsLTYpLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IiwxNCk7Qy5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLDYpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsMCk7Qy5hcHBlbmQoInRleHQiKS5hdHRyKCJkeCIsOCkuYXR0cigiZHkiLDQpO3k9eS5zZWxlY3QoIi55LXNsaWNlLWF4aXMtaG92ZXIiKS5zZWxlY3RBbGwoIi5sYWJlbCIpLmRhdGEoWyJ5Il0pO3c9eS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKTt2YXIgRmE9eS5tZXJnZSh3KTt3LmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDgpLmF0dHIoInkiLC02KS5hdHRyKCJ3aWR0aCIsNDApLmF0dHIoImhlaWdodCIsMTQpO3cuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIiw2KS5hdHRyKCJ5MSIsCjApLmF0dHIoInkyIiwwKTt3LmFwcGVuZCgidGV4dCIpLmF0dHIoImR4Iiw4KS5hdHRyKCJkeSIsNCk7Yi5zZWxlY3QoIi55LmF4aXMuc2xpY2UiKS5zdHlsZSgib3BhY2l0eSIsIm9mZnNldCI9PT1wPzA6MSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsICIrKCJvZmZzZXQiPT09cD8tRDowKSsiKSIpLmNhbGwoWik7Yi5zZWxlY3QoIi54LmF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwgIitJKyIpIikuY2FsbChtKTtiLnNlbGVjdCgiLnkuYXhpcyIpLnN0eWxlKCJvcGFjaXR5Iiwib2Zmc2V0Ij09PXA/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitCKyIsICIrKCJvZmZzZXQiPT09cD8wOkkpKyIpIikuY2FsbChsYSk7Yi5zZWxlY3RBbGwoIi50aWNrIHRleHQiKS5hdHRyKCJmaWxsIiwiI2FhYSIpO2Iuc2VsZWN0QWxsKCIuYXhpcyBwYXRoLmRvbWFpbiIpLmF0dHIoInN0cm9rZSIsIm5vbmUiKX19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaGlzdG9ncmFtLWRhc2hib2FyZC9oaXN0b2dyYW1Db3JlLmpzCnZhciBLazsKKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoaCl7Y29uc3QgW2ssdCxsXT1oO3JldHVybnt3YWxsX3RpbWU6ayxzdGVwOnQsbWluOmQzLm1pbihsLm1hcCgoW3BdKT0+cCkpLG1heDpkMy5tYXgobC5tYXAoKFsscF0pPT5wKSksYnVja2V0czpsLm1hcCgoW3AsbSxuXSk9Pih7bGVmdDpwLHJpZ2h0Om0sY291bnQ6bn0pKX19ZnVuY3Rpb24gZihoLGssdCxsPTMwKXt0PT09ayYmKHQ9MS4xKmsrMSxrPWsvMS4xLTEpO2NvbnN0IHA9KHQtaykvbDtsZXQgbT0wO3JldHVybiBkMy5yYW5nZShrLHQscCkubWFwKG49Pntjb25zdCBxPW4rcDtsZXQgdT0wO2Zvcig7bTxoLmJ1Y2tldHMubGVuZ3RoOyl7Y29uc3QgQT1NYXRoLm1pbih0LGguYnVja2V0c1ttXS5yaWdodCk7dmFyIHg9TWF0aC5tYXgoayxoLmJ1Y2tldHNbbV0ubGVmdCk7Y29uc3QgeT1NYXRoLm1pbihBLHEpLU1hdGgubWF4KHgsbik7eD15LyhBLXgpKmguYnVja2V0c1ttXS5jb3VudDt1Kz0wPHk/eDowO2lmKEE+cSlicmVhazttKyt9cmV0dXJue3g6biwKZHg6cCx5OnV9fSl9Yi5iYWNrZW5kVG9JbnRlcm1lZGlhdGU9ZDtiLmludGVybWVkaWF0ZVRvRDM9ZjtiLmJhY2tlbmRUb1Z6PWZ1bmN0aW9uKGgpe2g9aC5tYXAoZCk7Y29uc3Qgaz1kMy5taW4oaCxsPT5sLm1pbiksdD1kMy5tYXgoaCxsPT5sLm1heCk7cmV0dXJuIGgubWFwKGw9Pih7d2FsbF90aW1lOmwud2FsbF90aW1lLHN0ZXA6bC5zdGVwLGJpbnM6ZihsLGssdCl9KSl9fSkoS2t8fChLaz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWhpc3RvZ3JhbS1kYXNoYm9hcmQvdGYtaGlzdG9ncmFtLWxvYWRlci5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1oaXN0b2dyYW0tbG9hZGVyIixwcm9wZXJ0aWVzOntydW46U3RyaW5nLHRhZzpTdHJpbmcsZGF0YVRvTG9hZDp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2NvbXB1dGVEYXRhVG9Mb2FkKHJ1biwgdGFnKSJ9LGdldERhdGFMb2FkTmFtZTp7dHlwZTpGdW5jdGlvbix2YWx1ZTooKT0+KHtydW46Yn0pPT5ifSxnZXREYXRhTG9hZFVybDp7dHlwZTpGdW5jdGlvbix2YWx1ZTooKT0+KHt0YWc6YixydW46ZH0pPT52Yy5hZGRQYXJhbXModmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImhpc3RvZ3JhbXMiLCIvaGlzdG9ncmFtcyIpLHt0YWc6YixydW46ZH0pfSxsb2FkRGF0YUNhbGxiYWNrOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKGIsZCxmKT0+e2I9S2suYmFja2VuZFRvVnooZik7ZD10aGlzLmdldERhdGFMb2FkTmFtZShkKTt0aGlzLiQuY2hhcnQuc2V0U2VyaWVzRGF0YShkLGIpfX19LHRhZ01ldGFkYXRhOk9iamVjdCx0aW1lUHJvcGVydHk6U3RyaW5nLApoaXN0b2dyYW1Nb2RlOlN0cmluZyxfY29sb3JTY2FsZUZ1bmN0aW9uOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+cGYucnVuc0NvbG9yU2NhbGV9LF9ydW5Db2xvcjp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUnVuQ29sb3IocnVuKSJ9LF9leHBhbmRlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH19LG9ic2VydmVyczpbInJlbG9hZChydW4sIHRhZywgcmVxdWVzdE1hbmFnZXIpIl0sYmVoYXZpb3JzOltxZC5EYXRhTG9hZGVyQmVoYXZpb3JdLF9jb21wdXRlRGF0YVRvTG9hZChiLGQpe3JldHVyblt7cnVuOmIsdGFnOmR9XX0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKGIpfSxyZWRyYXcoKXt0aGlzLiQuY2hhcnQucmVkcmF3KCl9LF90b2dnbGVFeHBhbmRlZCgpe3RoaXMuc2V0KCJfZXhwYW5kZWQiLCF0aGlzLl9leHBhbmRlZCk7dGhpcy5yZWRyYXcoKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1oaXN0b2dyYW0tZGFzaGJvYXJkL3RmLWhpc3RvZ3JhbS1kYXNoYm9hcmQuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtaGlzdG9ncmFtLWRhc2hib2FyZCIscHJvcGVydGllczp7X2hpc3RvZ3JhbU1vZGU6e3R5cGU6U3RyaW5nLHZhbHVlOiJvZmZzZXQifSxfdGltZVByb3BlcnR5Ont0eXBlOlN0cmluZyx2YWx1ZToic3RlcCJ9LF9zZWxlY3RlZFJ1bnM6QXJyYXksX3J1blRvVGFnOk9iamVjdCxfcnVuVG9UYWdJbmZvOk9iamVjdCxfZGF0YU5vdEZvdW5kOkJvb2xlYW4sX3RhZ0ZpbHRlcjpTdHJpbmcsX3Jlc3RhbXA6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2NhdGVnb3JpZXNEb21SZWFkeTpCb29sZWFuLF9jYXRlZ29yaWVzOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfbWFrZUNhdGVnb3JpZXMoX3J1blRvVGFnLCBfc2VsZWN0ZWRSdW5zLCBfdGFnRmlsdGVyLCBfY2F0ZWdvcmllc0RvbVJlYWR5KSJ9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcn19LGxpc3RlbmVyczp7ImNvbnRlbnQtdmlzaWJpbGl0eS1jaGFuZ2VkIjoiX3JlZHJhd0NhdGVnb3J5UGFuZSJ9LApfcmVkcmF3Q2F0ZWdvcnlQYW5lKGIsZCl7ZCYmYi50YXJnZXQucXVlcnlTZWxlY3RvckFsbCgidGYtaGlzdG9ncmFtLWxvYWRlciIpLmZvckVhY2goZj0+Zi5yZWRyYXcoKSl9LHJlYWR5KCl7dGhpcy5yZWxvYWQoKX0scmVsb2FkKCl7dGhpcy5fZmV0Y2hUYWdzKCkudGhlbigoKT0+e3RoaXMuX3JlbG9hZEhpc3RvZ3JhbXMoKX0pfSxfZmV0Y2hUYWdzKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiaGlzdG9ncmFtcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57aWYoIV8uaXNFcXVhbChkLHRoaXMuX3J1blRvVGFnSW5mbykpe3ZhciBmPV8ubWFwVmFsdWVzKGQsaz0+T2JqZWN0LmtleXMoaykpLGg9dmMuZ2V0VGFncyhmKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWgubGVuZ3RoKTt0aGlzLnNldCgiX3J1blRvVGFnIixmKTt0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsZCk7dGhpcy5hc3luYygoKT0+Cnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSl9fSl9LF9yZWxvYWRIaXN0b2dyYW1zKCl7dGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoInRmLWhpc3RvZ3JhbS1sb2FkZXIiKS5mb3JFYWNoKGI9PntiLnJlbG9hZCgpfSl9LF9zaG91bGRPcGVuKGIpe3JldHVybiAyPj1ifSxfbWFrZUNhdGVnb3JpZXMoYixkLGYpe3JldHVybiAkYy5jYXRlZ29yaXplUnVuVGFnQ29tYmluYXRpb25zKGIsZCxmKX0sX3RhZ01ldGFkYXRhKGIsZCxmKXtyZXR1cm4gYltkXVtmXX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi10ZXh0LWRhc2hib2FyZC90Zi10ZXh0LWxvYWRlci5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi10ZXh0LWxvYWRlciIscHJvcGVydGllczp7cnVuOlN0cmluZyx0YWc6U3RyaW5nLF9ydW5Db2xvcjp7dHlwZTpTdHJpbmcsY29tcHV0ZWQ6Il9jb21wdXRlUnVuQ29sb3IocnVuKSJ9LF90ZXh0czp7dHlwZTpBcnJheSx2YWx1ZTpbXX0scmVxdWVzdE1hbmFnZXI6T2JqZWN0LF9jYW5jZWxsZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuQ2FuY2VsbGVyfX0sX2NvbXB1dGVSdW5Db2xvcihiKXtyZXR1cm4gcGYucnVuc0NvbG9yU2NhbGUoYil9LGF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITA7dGhpcy5yZWxvYWQoKX0scmVsb2FkKCl7aWYodGhpcy5fYXR0YWNoZWQpe3RoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKTt2YXIgYj12Yy5hZGRQYXJhbXModmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoInRleHQiLCIvdGV4dCIpLHt0YWc6dGhpcy50YWcscnVuOnRoaXMucnVufSksZD10aGlzLl9jYW5jZWxsZXIuY2FuY2VsbGFibGUoZj0+e2YuY2FuY2VsbGVkfHwKKGY9Zi52YWx1ZS5tYXAoaD0+KHt3YWxsX3RpbWU6bmV3IERhdGUoMUUzKmgud2FsbF90aW1lKSxzdGVwOmguc3RlcCx0ZXh0OmgudGV4dH0pKSx0aGlzLnNldCgiX3RleHRzIixmLnNsaWNlKCkucmV2ZXJzZSgpKSl9KTt0aGlzLnJlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkKX19LF9mb3JtYXRTdGVwKGIpe3JldHVybiBkMy5mb3JtYXQoIiwiKShiKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi10ZXh0LWRhc2hib2FyZC90Zi10ZXh0LWRhc2hib2FyZC5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi10ZXh0LWRhc2hib2FyZCIscHJvcGVydGllczp7X3NlbGVjdGVkUnVuczpBcnJheSxfcnVuVG9UYWc6T2JqZWN0LF9kYXRhTm90Rm91bmQ6Qm9vbGVhbixfdGFnRmlsdGVyOlN0cmluZyxfY2F0ZWdvcmllc0RvbVJlYWR5OkJvb2xlYW4sX2NhdGVnb3JpZXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9tYWtlQ2F0ZWdvcmllcyhfcnVuVG9UYWcsIF9zZWxlY3RlZFJ1bnMsIF90YWdGaWx0ZXIsIF9jYXRlZ29yaWVzRG9tUmVhZHkpIn0sX3JlcXVlc3RNYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLlJlcXVlc3RNYW5hZ2VyfX0scmVhZHkoKXt0aGlzLnJlbG9hZCgpfSxyZWxvYWQoKXt0aGlzLl9mZXRjaFRhZ3MoKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkVGV4dHMoKX0pfSxfc2hvdWxkT3BlbihiKXtyZXR1cm4gMj49Yn0sX2ZldGNoVGFncygpe2NvbnN0IGI9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoInRleHQiLCIvdGFncyIpO3JldHVybiB0aGlzLl9yZXF1ZXN0TWFuYWdlci5yZXF1ZXN0KGIpLnRoZW4oZD0+CntpZighXy5pc0VxdWFsKGQsdGhpcy5fcnVuVG9UYWcpKXt2YXIgZj12Yy5nZXRUYWdzKGQpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09Zi5sZW5ndGgpO3RoaXMuc2V0KCJfcnVuVG9UYWciLGQpO3RoaXMuYXN5bmMoKCk9Pnt0aGlzLnNldCgiX2NhdGVnb3JpZXNEb21SZWFkeSIsITApfSl9fSl9LF9yZWxvYWRUZXh0cygpe3RoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi10ZXh0LWxvYWRlciIpLmZvckVhY2goYj0+e2IucmVsb2FkKCl9KX0sX21ha2VDYXRlZ29yaWVzKGIsZCxmKXtyZXR1cm4gJGMuY2F0ZWdvcml6ZVJ1blRhZ0NvbWJpbmF0aW9ucyhiLGQsZil9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtcHItY3VydmUtZGFzaGJvYXJkL3RmLXByLWN1cnZlLWNhcmQuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtcHItY3VydmUtY2FyZCIscHJvcGVydGllczp7cnVuczpBcnJheSx0YWc6U3RyaW5nLHRhZ01ldGFkYXRhOk9iamVjdCxydW5Ub1N0ZXBDYXA6T2JqZWN0LHJlcXVlc3RNYW5hZ2VyOk9iamVjdCxhY3RpdmU6Qm9vbGVhbixfZXhwYW5kZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9ydW5Ub1ByQ3VydmVFbnRyeTp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pih7fSl9LF9wcmV2aW91c1J1blRvUHJDdXJ2ZUVudHJ5Ont0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHt9KX0sX3J1bnNXaXRoU3RlcEF2YWlsYWJsZTp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2NvbXB1dGVSdW5zV2l0aFN0ZXBBdmFpbGFibGUocnVucywgX3J1blRvUHJDdXJ2ZUVudHJ5KSJ9LF9zZXRPZlJlbGV2YW50UnVuczp7dHlwZTpPYmplY3QsY29tcHV0ZWQ6Il9jb21wdXRlU2V0T2ZSZWxldmFudFJ1bnMoX3J1bnNXaXRoU3RlcEF2YWlsYWJsZSkifSxfcnVuVG9EYXRhT3ZlclRpbWU6T2JqZWN0LApfY29sb3JTY2FsZUZ1bmN0aW9uOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHtzY2FsZTpwZi5ydW5zQ29sb3JTY2FsZX0pfSxfY2FuY2VsbGVyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLkNhbmNlbGxlcn0sX2F0dGFjaGVkOkJvb2xlYW4sX3hDb21wb25lbnRzQ3JlYXRpb25NZXRob2Q6e3R5cGU6T2JqZWN0LHJlYWRPbmx5OiEwLHZhbHVlOigpPT4oKT0+e2NvbnN0IGI9bmV3IFBsb3R0YWJsZS5TY2FsZXMuTGluZWFyO3JldHVybntzY2FsZTpiLGF4aXM6bmV3IFBsb3R0YWJsZS5BeGVzLk51bWVyaWMoYiwiYm90dG9tIiksYWNjZXNzb3I6ZD0+ZC5yZWNhbGx9fX0sX3lWYWx1ZUFjY2Vzc29yOnt0eXBlOk9iamVjdCxyZWFkT25seTohMCx2YWx1ZTooKT0+Yj0+Yi5wcmVjaXNpb259LF90b29sdGlwQ29sdW1uczp7dHlwZTpBcnJheSxyZWFkT25seTohMCx2YWx1ZTooKT0+e2NvbnN0IGI9cmcubXVsdGlzY2FsZUZvcm1hdHRlcihyZy5ZX1RPT0xUSVBfRk9STUFUVEVSX1BSRUNJU0lPTiksCmQ9Zj0+aXNOYU4oZik/Ik5hTiI6YihmKTtyZXR1cm5be3RpdGxlOiJSdW4iLGV2YWx1YXRlOmY9PmYuZGF0YXNldC5tZXRhZGF0YSgpLm5hbWV9LHt0aXRsZToiVGhyZXNob2xkIixldmFsdWF0ZTpmPT5kKGYuZGF0dW0udGhyZXNob2xkcyl9LHt0aXRsZToiUHJlY2lzaW9uIixldmFsdWF0ZTpmPT5kKGYuZGF0dW0ucHJlY2lzaW9uKX0se3RpdGxlOiJSZWNhbGwiLGV2YWx1YXRlOmY9PmQoZi5kYXR1bS5yZWNhbGwpfSx7dGl0bGU6IlRQIixldmFsdWF0ZTpmPT5mLmRhdHVtLnRydWVfcG9zaXRpdmVzfSx7dGl0bGU6IkZQIixldmFsdWF0ZTpmPT5mLmRhdHVtLmZhbHNlX3Bvc2l0aXZlc30se3RpdGxlOiJUTiIsZXZhbHVhdGU6Zj0+Zi5kYXR1bS50cnVlX25lZ2F0aXZlc30se3RpdGxlOiJGTiIsZXZhbHVhdGU6Zj0+Zi5kYXR1bS5mYWxzZV9uZWdhdGl2ZXN9XX19LF9zZXJpZXNEYXRhRmllbGRzOnt0eXBlOkFycmF5LHZhbHVlOiJ0aHJlc2hvbGRzIHByZWNpc2lvbiByZWNhbGwgdHJ1ZV9wb3NpdGl2ZXMgZmFsc2VfcG9zaXRpdmVzIHRydWVfbmVnYXRpdmVzIGZhbHNlX25lZ2F0aXZlcyIuc3BsaXQoIiAiKSwKcmVhZE9ubHk6ITB9LF9kZWZhdWx0WFJhbmdlOnt0eXBlOkFycmF5LHZhbHVlOlstLjA1LDEuMDVdLHJlYWRPbmx5OiEwfSxfZGVmYXVsdFlSYW5nZTp7dHlwZTpBcnJheSx2YWx1ZTpbLS4wNSwxLjA1XSxyZWFkT25seTohMH0sX2RhdGFVcmw6e3R5cGU6RnVuY3Rpb24sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYj0+e2NvbnN0IGQ9dGhpcy50YWc7cmV0dXJuIHZjLmFkZFBhcmFtcyh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgicHJfY3VydmVzIiwiL3ByX2N1cnZlcyIpLHt0YWc6ZCxydW46Yn0pfX19LF9zbW9vdGhpbmdFbmFibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEscmVhZE9ubHk6ITB9fSxvYnNlcnZlcnM6WyJyZWxvYWQocnVucywgdGFnKSIsIl9zZXRDaGFydERhdGEoX3J1blRvUHJDdXJ2ZUVudHJ5LCBfcHJldmlvdXNSdW5Ub1ByQ3VydmVFbnRyeSwgX3NldE9mUmVsZXZhbnRSdW5zKSIsIl91cGRhdGVSdW5Ub1ByQ3VydmVFbnRyeShfcnVuVG9EYXRhT3ZlclRpbWUsIHJ1blRvU3RlcENhcCkiXSwKX2NyZWF0ZVByb2Nlc3NEYXRhRnVuY3Rpb24oKXtyZXR1cm4oYixkLGYpPT57dGhpcy5zZXQoIl9ydW5Ub0RhdGFPdmVyVGltZSIsT2JqZWN0LmFzc2lnbih7fSx0aGlzLl9ydW5Ub0RhdGFPdmVyVGltZSxmKSl9fSxfY29tcHV0ZVJ1bkNvbG9yKGIpe3JldHVybiB0aGlzLl9jb2xvclNjYWxlRnVuY3Rpb24uc2NhbGUoYil9LGF0dGFjaGVkKCl7dGhpcy5fYXR0YWNoZWQ9ITA7dGhpcy5yZWxvYWQoKX0scmVsb2FkKCl7dGhpcy5fYXR0YWNoZWQmJigwPT09dGhpcy5ydW5zLmxlbmd0aD90aGlzLnNldCgiX3J1blRvRGF0YU92ZXJUaW1lIix7fSk6dGhpcy4kJCgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpLnJlbG9hZCgpKX0sX3NldENoYXJ0RGF0YShiLGQsZil7Xy5mb3JPd24oYiwoaCxrKT0+e2NvbnN0IHQ9ZFtrXTt0JiZiW2tdLnN0ZXA9PT10LnN0ZXB8fChmW2tdP3RoaXMuX3VwZGF0ZVNlcmllc0RhdGFGb3JSdW4oayxoKTp0aGlzLl9jbGVhclNlcmllc0RhdGEoaykpfSl9LApfdXBkYXRlU2VyaWVzRGF0YUZvclJ1bihiLGQpe2NvbnN0IGY9Xy5yZWR1Y2UodGhpcy5fc2VyaWVzRGF0YUZpZWxkcywoayx0KT0+e2tbdF09ZFt0XS5zbGljZSgpLnJldmVyc2UoKTtyZXR1cm4ga30se30pLGg9QXJyYXkoZlt0aGlzLl9zZXJpZXNEYXRhRmllbGRzWzBdXS5sZW5ndGgpO2ZvcihsZXQgaz0wO2s8aC5sZW5ndGg7aysrKWhba109Xy5tYXBWYWx1ZXMoZix0PT50W2tdKTt0aGlzLiQkKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIikuc2V0U2VyaWVzRGF0YShiLGgpfSxfY2xlYXJTZXJpZXNEYXRhKGIpe3RoaXMuJCQoInRmLWxpbmUtY2hhcnQtZGF0YS1sb2FkZXIiKS5zZXRTZXJpZXNEYXRhKGIsW10pfSxfdXBkYXRlUnVuVG9QckN1cnZlRW50cnkoYixkKXtjb25zdCBmPXt9O18uZm9yT3duKGIsKGgsayk9PntoJiZoLmxlbmd0aCYmKGZba109dGhpcy5fY29tcHV0ZUVudHJ5Q2xvc2VzdE9yRXF1YWxUb1N0ZXBDYXAoZFtrXSxoKSl9KTt0aGlzLnNldCgiX3ByZXZpb3VzUnVuVG9QckN1cnZlRW50cnkiLAp0aGlzLl9ydW5Ub1ByQ3VydmVFbnRyeSk7dGhpcy5zZXQoIl9ydW5Ub1ByQ3VydmVFbnRyeSIsZil9LF9jb21wdXRlRW50cnlDbG9zZXN0T3JFcXVhbFRvU3RlcENhcChiLGQpe2I9TWF0aC5taW4oXy5zb3J0ZWRJbmRleChkLm1hcChmPT5mLnN0ZXApLGIpLGQubGVuZ3RoLTEpO3JldHVybiBkW2JdfSxfY29tcHV0ZVJ1bnNXaXRoU3RlcEF2YWlsYWJsZShiLGQpe3JldHVybiBfLmZpbHRlcihiLGY9PmRbZl0pLnNvcnQoKX0sX2NvbXB1dGVTZXRPZlJlbGV2YW50UnVucyhiKXtjb25zdCBkPXt9O18uZm9yRWFjaChiLGY9PntkW2ZdPSEwfSk7cmV0dXJuIGR9LF9jb21wdXRlQ3VycmVudFN0ZXBGb3JSdW4oYixkKXtyZXR1cm4oYj1iW2RdKT9iLnN0ZXA6bnVsbH0sX2NvbXB1dGVDdXJyZW50V2FsbFRpbWVGb3JSdW4oYixkKXtyZXR1cm4oYj1iW2RdKT8obmV3IERhdGUoMUUzKmIud2FsbF90aW1lKSkudG9TdHJpbmcoKTpudWxsfSxfdG9nZ2xlRXhwYW5kZWQoKXt0aGlzLnNldCgiX2V4cGFuZGVkIiwKIXRoaXMuX2V4cGFuZGVkKTt0aGlzLnJlZHJhdygpfSxfcmVzZXREb21haW4oKXt0aGlzLiQkKCJ0Zi1saW5lLWNoYXJ0LWRhdGEtbG9hZGVyIikucmVzZXREb21haW4oKX0scmVkcmF3KCl7dGhpcy4kJCgidGYtbGluZS1jaGFydC1kYXRhLWxvYWRlciIpLnJlZHJhdygpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLXByLWN1cnZlLWRhc2hib2FyZC90Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3Rvci5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1wci1jdXJ2ZS1zdGVwcy1zZWxlY3RvciIscHJvcGVydGllczp7cnVuczpBcnJheSxydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzOk9iamVjdCxydW5Ub1N0ZXA6e3R5cGU6T2JqZWN0LG5vdGlmeTohMCxjb21wdXRlZDoiX2NvbXB1dGVSdW5Ub1N0ZXAocnVuVG9BdmFpbGFibGVUaW1lRW50cmllcywgX3J1blRvU3RlcEluZGV4KSJ9LHRpbWVEaXNwbGF5VHlwZTpTdHJpbmcsX3J1blRvU3RlcEluZGV4Ont0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHt9KX0sX3J1bnNXaXRoU2xpZGVyczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2NvbXB1dGVSdW5zV2l0aFNsaWRlcnMocnVucywgcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcykifX0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZVN0ZXBzRm9yTmV3UnVucyhydW5Ub0F2YWlsYWJsZVRpbWVFbnRyaWVzKSJdLF9jb21wdXRlQ29sb3JGb3JSdW4oYil7cmV0dXJuIHBmLnJ1bnNDb2xvclNjYWxlKGIpfSxfY29tcHV0ZVRpbWVUZXh0Rm9yUnVuKGIsCmQsZixoKXtkPWRbZl07aWYoIV8uaXNOdW1iZXIoZCkpcmV0dXJuIiI7Yj1iW2ZdO2lmKCFiKXJldHVybiIiO2I9YltkXVtoXTtpZigic3RlcCI9PT1oKXJldHVybmBzdGVwICR7Yn1gO2lmKCJyZWxhdGl2ZSI9PT1oKXJldHVybiAxPmI/YCR7KDFFMypiKS50b0ZpeGVkKDIpfSBtc2A6YCR7Yi50b0ZpeGVkKDIpfSBzYDtpZigid2FsbF90aW1lIj09PWgpcmV0dXJuKG5ldyBEYXRlKDFFMypiKSkudG9TdHJpbmcoKTt0aHJvdyBFcnJvcihgVGhlIGRpc3BsYXkgdHlwZSBvZiAke2h9IGlzIG5vdCByZWNvZ25pemVkLmApO30sX3NsaWRlclZhbHVlQ2hhbmdlZChiKXtjb25zdCBkPWIudGFyZ2V0LmRhdGFzZXQucnVuLGY9Yi50YXJnZXQuaW1tZWRpYXRlVmFsdWUsaD1PYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvU3RlcEluZGV4KTtpc05hTihmKT9kZWxldGUgaFtkXTpoW2RdPWIudGFyZ2V0LmltbWVkaWF0ZVZhbHVlO3RoaXMuX3J1blRvU3RlcEluZGV4PWh9LF9jb21wdXRlTWF4U3RlcEluZGV4Rm9yUnVuKGIsCmQpe3JldHVybihiPWJbZF0pJiZiLmxlbmd0aD9iLmxlbmd0aC0xOjB9LF91cGRhdGVTdGVwc0Zvck5ld1J1bnMoYil7Y29uc3QgZD1PYmplY3QuYXNzaWduKHt9LHRoaXMuX3J1blRvU3RlcEluZGV4KTtfLmZvck93bihiLChmLGgpPT57Xy5pc051bWJlcihkW2hdKXx8KGRbaF09Zi5sZW5ndGgtMSl9KTt0aGlzLl9ydW5Ub1N0ZXBJbmRleD1kfSxfZ2V0U3RlcChiLGQpe3JldHVybiB0aGlzLl9ydW5Ub1N0ZXBJbmRleD90aGlzLl9ydW5Ub1N0ZXBJbmRleFtkXTowfSxfY29tcHV0ZVJ1blRvU3RlcChiLGQpe2NvbnN0IGY9e307Xy5mb3JPd24oZCwoaCxrKT0+e2NvbnN0IHQ9YltrXTt0JiYoZltrXT10W2hdLnN0ZXApfSk7cmV0dXJuIGZ9LF9jb21wdXRlUnVuc1dpdGhTbGlkZXJzKGIsZCl7cmV0dXJuIGIuZmlsdGVyKGY9PmRbZl0pfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLXByLWN1cnZlLWRhc2hib2FyZC90Zi1wci1jdXJ2ZS1kYXNoYm9hcmQuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtcHItY3VydmUtZGFzaGJvYXJkIixwcm9wZXJ0aWVzOntfdGltZURpc3BsYXlUeXBlOnt0eXBlOlN0cmluZyx2YWx1ZToic3RlcCJ9LF9zZWxlY3RlZFJ1bnM6e3R5cGU6QXJyYXksdmFsdWU6KCk9PltdfSxfcnVuVG9UYWdJbmZvOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHt9KX0sX3J1blRvQXZhaWxhYmxlVGltZUVudHJpZXM6e3R5cGU6T2JqZWN0LHZhbHVlOnt9fSxfcmVsZXZhbnRTZWxlY3RlZFJ1bnM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9jb21wdXRlUmVsZXZhbnRTZWxlY3RlZFJ1bnMoX3NlbGVjdGVkUnVucywgX3J1blRvVGFnSW5mbykifSxfcnVuc1dpdGhQckN1cnZlRGF0YTpBcnJheSxfcnVuVG9TdGVwOnt0eXBlOk9iamVjdCxub3RpZnk6ITB9LF9kYXRhTm90Rm91bmQ6Qm9vbGVhbixfdGFnRmlsdGVyOlN0cmluZyxfY2F0ZWdvcmllc0RvbVJlYWR5OkJvb2xlYW4sX2NhdGVnb3JpZXM6e3R5cGU6QXJyYXksY29tcHV0ZWQ6Il9tYWtlQ2F0ZWdvcmllcyhfcnVuVG9UYWdJbmZvLCBfc2VsZWN0ZWRSdW5zLCBfdGFnRmlsdGVyLCBfY2F0ZWdvcmllc0RvbVJlYWR5KSJ9LApfZ2V0Q2F0ZWdvcnlJdGVtS2V5Ont0eXBlOkZ1bmN0aW9uLHZhbHVlOigpPT5iPT5iLnRhZ30sX3JlcXVlc3RNYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLlJlcXVlc3RNYW5hZ2VyfSxfc3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MCxub3RpZnk6ITB9fSxyZWFkeSgpe3RoaXMucmVsb2FkKCl9LHJlbG9hZCgpe1Byb21pc2UuYWxsKFt0aGlzLl9mZXRjaFRhZ3MoKSx0aGlzLl9mZXRjaFRpbWVFbnRyaWVzUGVyUnVuKCldKS50aGVuKCgpPT57dGhpcy5fcmVsb2FkQ2FyZHMoKX0pfSxfc2hvdWxkT3BlbihiKXtyZXR1cm4gMj49Yn0sX2ZldGNoVGFncygpe2NvbnN0IGI9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi90YWdzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57aWYoIV8uaXNFcXVhbChkLHRoaXMuX3J1blRvVGFnSW5mbykpe3ZhciBmPV8ubWFwVmFsdWVzKGQsaD0+Xy5rZXlzKGgpKTsKZj12Yy5nZXRUYWdzKGYpO3RoaXMuc2V0KCJfZGF0YU5vdEZvdW5kIiwwPT09Zi5sZW5ndGgpO3RoaXMuc2V0KCJfcnVuVG9UYWdJbmZvIixkKTt0aGlzLmFzeW5jKCgpPT57dGhpcy5zZXQoIl9jYXRlZ29yaWVzRG9tUmVhZHkiLCEwKX0pfX0pfSxfZmV0Y2hUaW1lRW50cmllc1BlclJ1bigpe2NvbnN0IGI9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoInByX2N1cnZlcyIsIi9hdmFpbGFibGVfdGltZV9lbnRyaWVzIik7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57Xy5mb3JPd24oZCxmPT57Xy5mb3JFYWNoKGYsaD0+e2gucmVsYXRpdmU9aC53YWxsX3RpbWUtZlswXS53YWxsX3RpbWV9KX0pO3RoaXMuc2V0KCJfcnVuVG9BdmFpbGFibGVUaW1lRW50cmllcyIsZCk7ZD1fLmtleXMoZCkuc2xpY2UoKS5zb3J0KCk7Xy5pc0VxdWFsKGQsdGhpcy5fcnVuc1dpdGhQckN1cnZlRGF0YSl8fHRoaXMuc2V0KCJfcnVuc1dpdGhQckN1cnZlRGF0YSIsCmQpfSl9LF9yZWxvYWRDYXJkcygpe18uZm9yRWFjaCh0aGlzLnJvb3QucXVlcnlTZWxlY3RvckFsbCgidGYtcHItY3VydmUtY2FyZCIpLGI9PntiLnJlbG9hZCgpfSl9LF9tYWtlQ2F0ZWdvcmllcyhiLGQsZil7Yj1fLm1hcFZhbHVlcyhiLGg9Pk9iamVjdC5rZXlzKGgpKTtyZXR1cm4gJGMuY2F0ZWdvcml6ZVRhZ3MoYixkLGYpfSxfY29tcHV0ZUNvbG9yRm9yUnVuKGIpe3JldHVybiBwZi5ydW5zQ29sb3JTY2FsZShiKX0sX2NvbXB1dGVSZWxldmFudFNlbGVjdGVkUnVucyhiLGQpe3JldHVybiBiLmZpbHRlcihmPT5kW2ZdKX0sX3RhZ01ldGFkYXRhKGIsZCxmKXtjb25zdCBoPXt9O2QuZm9yRWFjaChrPT57aFtrXT1iW2tdW2ZdfSk7ZD1mLnJlcGxhY2UoL1wvcHJfY3VydmVzJC8sIiIpO3JldHVybiByZi5hZ2dyZWdhdGVUYWdJbmZvKGgsZCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtcHJvZmlsZS1yZWRpcmVjdC1kYXNoYm9hcmQvdGYtcHJvZmlsZS1yZWRpcmVjdC1kYXNoYm9hcmQuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtcHJvZmlsZS1yZWRpcmVjdC1kYXNoYm9hcmQiLHByb3BlcnRpZXM6e19pbnN0YWxsQ29tbWFuZDp7dHlwZTpTdHJpbmcscmVhZE9ubHk6ITAsdmFsdWU6InBpcCBpbnN0YWxsIC1VIHRlbnNvcmJvYXJkX3BsdWdpbl9wcm9maWxlIn19LF9jb3B5SW5zdGFsbENvbW1hbmQoKXtjb25zdCBiPXRoaXM7cmV0dXJuIGhjKGZ1bmN0aW9uKigpe2NvbnN0IGQ9KCk9PmhjKGZ1bmN0aW9uKigpe2IuJC5jb21tYW5kVGV4dGFyZWEuc2VsZWN0KCk7dHJ5e3lpZWxkIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGIuX2luc3RhbGxDb21tYW5kKX1jYXRjaChmKXtpZighZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoKX19KTt0cnl7eWllbGQgZCgpLGIuJC5jb3BpZWRNZXNzYWdlLmlubmVyVGV4dD0iQ29waWVkLiJ9Y2F0Y2goZil7Yi4kLmNvcGllZE1lc3NhZ2UuaW5uZXJUZXh0PSJGYWlsZWQgdG8gY29weSB0byBjbGlwYm9hcmQuIn19KX0sCl9yZW1vdmVDb3BpZWRNZXNzYWdlKCl7dGhpcy4kLmNvcGllZE1lc3NhZ2UuaW5uZXJUZXh0PSIifX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi10ZW5zb3Jib2FyZC9wbHVnaW4tZGlhbG9nLmh0bWwuanMKUG9seW1lcih7aXM6InRmLXBsdWdpbi1kaWFsb2ciLHByb3BlcnRpZXM6e190aXRsZTp7dHlwZTpTdHJpbmcsdmFsdWU6bnVsbH0sX2N1c3RvbU1lc3NhZ2U6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9vcGVuOnt0eXBlOkJvb2xlYW59LF9oaWRkZW46e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVIaWRkZW4oX29wZW4pIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF91c2VOYXRpdmVCYWNrZHJvcDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLHJlYWRPbmx5OiEwfX0sb3Blbk5vVGVuc29yRmxvd0RpYWxvZygpe3RoaXMub3BlbkRpYWxvZygiVGhpcyBwbHVnaW4gaXMgZGlzYWJsZWQgd2l0aG91dCBUZW5zb3JGbG93IiwnVG8gZW5hYmxlIHRoaXMgcGx1Z2luIGluIFRlbnNvckJvYXJkLCBpbnN0YWxsIFRlbnNvckZsb3cgd2l0aCAicGlwIGluc3RhbGwgdGVuc29yZmxvdyIgb3IgZXF1aXZhbGVudC4nKX0sb3Blbk9sZFRlbnNvckZsb3dEaWFsb2coYil7dGhpcy5vcGVuRGlhbG9nKCJUaGlzIHBsdWdpbiBpcyBkaXNhYmxlZCB3aXRob3V0IFRlbnNvckZsb3cgIisKYiwiVG8gZW5hYmxlIHRoaXMgcGx1Z2luIGluIFRlbnNvckJvYXJkLCBpbnN0YWxsIFRlbnNvckZsb3cgIitiKycgb3IgZ3JlYXRlciB3aXRoICJwaXAgaW5zdGFsbCB0ZW5zb3JmbG93IiBvciBlcXVpdmFsZW50LicpfSxvcGVuRGlhbG9nKGIsZCl7dGhpcy5zZXQoIl90aXRsZSIsYik7dGhpcy5zZXQoIl9jdXN0b21NZXNzYWdlIixkKTt0aGlzLiQuZGlhbG9nLm9wZW4oKX0sY2xvc2VEaWFsb2coKXt0aGlzLiQuZGlhbG9nLmNsb3NlKCl9LF9jb21wdXRlSGlkZGVuKGIpe3JldHVybiFifX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJlaG9sZGVyLWRhc2hib2FyZC90Zi1iZWhvbGRlci12aWRlby5odG1sLmpzCihmdW5jdGlvbigpe2NvbnN0IGI9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoImJlaG9sZGVyIiwiL2JlaG9sZGVyLWZyYW1lIiksZD12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiYmVob2xkZXIiLCIvcGluZyIpO1BvbHltZXIoe2lzOiJ0Zi1iZWhvbGRlci12aWRlbyIscHJvcGVydGllczp7ZnBzOnt0eXBlOk51bWJlcix2YWx1ZToxMCxvYnNlcnZlcjoiX2Zwc0NoYW5nZWQifSxwaW5nU2xlZXA6e3R5cGU6TnVtYmVyLHZhbHVlOjFFM30seGhyVGltZW91dDp7dHlwZTpOdW1iZXIsdmFsdWU6MjUwMH0sX2ltYWdlVVJMOnt0eXBlOlN0cmluZyx2YWx1ZToiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBRC9BQ3dBQUFBQUFRQUJBQUFDQURzXHgzZCJ9LF94aHI6T2JqZWN0LF90aW1lcjpOdW1iZXIsX2lzRGVhZDpCb29sZWFufSxhdHRhY2hlZCgpe3RoaXMuc2V0KCJfaW1hZ2VVUkwiLGIpO3RoaXMuX3BpbmcoKX0sZGV0YWNoZWQoKXt0aGlzLl9jbGVhcigpOwp0aGlzLnNldCgiX2ltYWdlVVJMIiwiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBRC9BQ3dBQUFBQUFRQUJBQUFDQURzXHgzZCIpfSxfcGluZygpe3RoaXMuX2NsZWFyKCk7dGhpcy5feGhyPW5ldyBYTUxIdHRwUmVxdWVzdDt0aGlzLl94aHIub3BlbigiR0VUIixkLCEwKTt0aGlzLl94aHIudGltZW91dD10aGlzLnhoclRpbWVvdXQ7dGhpcy5feGhyLm9ubG9hZD10aGlzLl9vblBpbmdMb2FkLmJpbmQodGhpcyk7dGhpcy5feGhyLm9uZXJyb3I9dGhpcy5fb25QaW5nLmJpbmQodGhpcywhMSx0aGlzLnBpbmdTbGVlcCk7dGhpcy5feGhyLm9udGltZW91dD10aGlzLl9vblBpbmcuYmluZCh0aGlzLCExLDEpO3RoaXMuX3hoci5zZW5kKG51bGwpfSxfb25QaW5nTG9hZCgpe2lmKDIwMD09dGhpcy5feGhyLnN0YXR1cyl7Y29uc3QgZj1KU09OLnBhcnNlKHRoaXMuX3hoci5yZXNwb25zZVRleHQpO3RoaXMuX29uUGluZygiYWxpdmUiPT1mLnN0YXR1cyx0aGlzLnBpbmdTbGVlcCl9ZWxzZSB0aGlzLl9vblBpbmcoITEsCnRoaXMucGluZ1NsZWVwKX0sX29uUGluZyhmLGgpe2YmJnRoaXMuX2lzRGVhZCYmdGhpcy5zZXQoIl9pbWFnZVVSTCIsYisiP3RceDNkIisobmV3IERhdGUpLmdldFRpbWUoKSk7dGhpcy5faXNEZWFkPSFmO3RoaXMuX3RpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KCgpPT50aGlzLl9waW5nKCksaCl9LF9jbGVhcigpe3RoaXMuX3RpbWVyJiYod2luZG93LmNsZWFyVGltZW91dCh0aGlzLl90aW1lciksdGhpcy5fdGltZXI9bnVsbCk7dGhpcy5feGhyJiYodGhpcy5feGhyLnJlYWR5U3RhdGU8WE1MSHR0cFJlcXVlc3QuRE9ORSYmdGhpcy5feGhyLmFib3J0KCksdGhpcy5feGhyPW51bGwpfSxfZnBzQ2hhbmdlZChmLGgpezA9PWY/dGhpcy5fY2xlYXIoKTowPT1oJiZ0aGlzLl9waW5nKCl9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWJlaG9sZGVyLWRhc2hib2FyZC90Zi1iZWhvbGRlci1pbmZvLmh0bWwuanMKKGZ1bmN0aW9uKCl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiYmVob2xkZXIiLCIvc2VjdGlvbi1pbmZvIik7UG9seW1lcih7aXM6InRmLWJlaG9sZGVyLWluZm8iLHByb3BlcnRpZXM6e2Zwczp7dHlwZTpOdW1iZXIsdmFsdWU6MTAsb2JzZXJ2ZXI6Il9mcHNDaGFuZ2VkIn0seGhyVGltZW91dDp7dHlwZTpOdW1iZXIsdmFsdWU6MUU0fSxfaXRlbXM6e3R5cGU6QXJyYXksdmFsdWU6KCk9Plt7bmFtZToiTG9hZGluZy4uLiJ9XX0sX3hocjpPYmplY3QsX3RpbWVyOk51bWJlcn0sYXR0YWNoZWQoKXt0aGlzLl9sb2FkKCl9LGRldGFjaGVkKCl7dGhpcy5fY2xlYXIoKX0sX2xvYWQoKXt0aGlzLl9jbGVhcigpO3RoaXMuX3hocj1uZXcgWE1MSHR0cFJlcXVlc3Q7dGhpcy5feGhyLm9wZW4oIkdFVCIsYiwhMCk7dGhpcy5feGhyLnRpbWVvdXQ9dGhpcy54aHJUaW1lb3V0O3RoaXMuX3hoci5vbmxvYWQ9dGhpcy5fb25Mb2FkLmJpbmQodGhpcyk7dGhpcy5feGhyLm9uZXJyb3I9CnRoaXMuX3JldHJ5LmJpbmQodGhpcyx0aGlzLl9nZXRTbGVlcCgpKTt0aGlzLl94aHIub250aW1lb3V0PXRoaXMuX3JldHJ5LmJpbmQodGhpcywxKTt0aGlzLl94aHIuc2VuZChudWxsKX0sX29uTG9hZCgpe2lmKDIwMD09dGhpcy5feGhyLnN0YXR1cyl7Y29uc3QgZD1KU09OLnBhcnNlKHRoaXMuX3hoci5yZXNwb25zZVRleHQpO2NvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkoZCksIkV4cGVjdGVkIHJlc3BvbnNlIHRvIGJlIGluIGFuIGFycmF5Iik7dGhpcy5faXRlbXM9ZH10aGlzLl9yZXRyeSh0aGlzLl9nZXRTbGVlcCgpKX0sX3JldHJ5KGQpe3RoaXMuX3RpbWVyPXdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuX2xvYWQuYmluZCh0aGlzKSxkKX0sX2dldFNsZWVwKCl7cmV0dXJuIDFFMy8oMD09PXRoaXMuZnBzPzE6dGhpcy5mcHMpfSxfY2xlYXIoKXt0aGlzLl90aW1lciYmKHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLHRoaXMuX3RpbWVyPW51bGwpO3RoaXMuX3hociYmCih0aGlzLl94aHIucmVhZHlTdGF0ZTxYTUxIdHRwUmVxdWVzdC5ET05FJiZ0aGlzLl94aHIuYWJvcnQoKSx0aGlzLl94aHI9bnVsbCl9LF9mcHNDaGFuZ2VkKGQsZil7MD09ZD90aGlzLl9jbGVhcigpOjA9PWYmJnRoaXMuX2xvYWQoKX19KX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtYmVob2xkZXItZGFzaGJvYXJkL3RmLWJlaG9sZGVyLWRhc2hib2FyZC5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIoe2lzOiJ0Zi1iZWhvbGRlci1kYXNoYm9hcmQiLHByb3BlcnRpZXM6e19yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcigxMCwwKX0sX2lzQXZhaWxhYmxlOkJvb2xlYW4sX3ZhbHVlczp7dHlwZTpTdHJpbmcsdmFsdWU6InRyYWluYWJsZV92YXJpYWJsZXMiLG9ic2VydmVyOiJfY29uZmlnQ2hhbmdlZCJ9LF9tb2RlOnt0eXBlOlN0cmluZyx2YWx1ZToidmFyaWFuY2UiLG9ic2VydmVyOiJfY29uZmlnQ2hhbmdlZCJ9LF9zY2FsaW5nOnt0eXBlOlN0cmluZyx2YWx1ZToibGF5ZXIiLG9ic2VydmVyOiJfY29uZmlnQ2hhbmdlZCJ9LF93aW5kb3dTaXplOnt0eXBlOk51bWJlcix2YWx1ZToxNSxvYnNlcnZlcjoiX2NvbmZpZ0NoYW5nZWQifSxfcHJldmlvdXNGUFM6e3R5cGU6TnVtYmVyLHZhbHVlOjMwfSxfRlBTOnt0eXBlOk51bWJlcix2YWx1ZToxMCxvYnNlcnZlcjoiX2NvbmZpZ0NoYW5nZWQifSwKX3JlY29yZFRleHQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJzdGFydCByZWNvcmRpbmcifSxfaXNSZWNvcmRpbmc6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxvYnNlcnZlcjoiX2NvbmZpZ0NoYW5nZWQifSxfc2hvd0FsbDp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfY29uZmlnQ2hhbmdlZCJ9LF9jb2xvcm1hcDp7dHlwZTpTdHJpbmcsdmFsdWU6Im1hZ21hIixvYnNlcnZlcjoiX2NvbmZpZ0NoYW5nZWQifSxfaXNfYWN0aXZlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9jb25maWdDaGFuZ2VkIn0sX2NvbnRyb2xzX2Rpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITEsb2JzZXJ2ZXI6Il9jb25maWdDaGFuZ2VkIn19LF92YWx1ZXNOb3RGcmFtZShiKXtyZXR1cm4iZnJhbWVzIiE9PWJ9LF92YXJpYW5jZVNlbGVjdGVkKGIpe3JldHVybiJ2YXJpYW5jZSI9PT1ifSxfY29uZmlnQ2hhbmdlZCgpe2lmKHRoaXMuX2lzX2FjdGl2ZSYmIXRoaXMuX2NvbnRyb2xzX2Rpc2FibGVkKXt2YXIgYj0KW3RoaXMuX3ZhbHVlcyx0aGlzLl9tb2RlLHRoaXMuX3NjYWxpbmcsdGhpcy5fd2luZG93U2l6ZSx0aGlzLl9GUFMsdGhpcy5faXNSZWNvcmRpbmcsdGhpcy5fc2hvd0FsbCx0aGlzLl9jb2xvcm1hcF0sZDtmb3IoZCBvZiBiKWlmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGR8fCIiPT09ZClyZXR1cm47Yj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiYmVob2xkZXIiLCIvY2hhbmdlLWNvbmZpZyIpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYix7dmFsdWVzOnRoaXMuX3ZhbHVlcyxtb2RlOnRoaXMuX21vZGUsc2NhbGluZzp0aGlzLl9zY2FsaW5nLHdpbmRvd19zaXplOnRoaXMuX3dpbmRvd1NpemUsRlBTOnRoaXMuX0ZQUyxpc19yZWNvcmRpbmc6dGhpcy5faXNSZWNvcmRpbmcsc2hvd19hbGw6dGhpcy5fc2hvd0FsbCxjb2xvcm1hcDp0aGlzLl9jb2xvcm1hcH0pfX0sX3RvZ2dsZVJlY29yZCgpeyJzdGFydCByZWNvcmRpbmciPT10aGlzLl9yZWNvcmRUZXh0Pyh0aGlzLnNldCgiX3JlY29yZFRleHQiLAoic3RvcCByZWNvcmRpbmciKSx0aGlzLnNldCgiX2lzUmVjb3JkaW5nIiwhMCkpOih0aGlzLnNldCgiX3JlY29yZFRleHQiLCJzdGFydCByZWNvcmRpbmciKSx0aGlzLnNldCgiX2lzUmVjb3JkaW5nIiwhMSkpO3RoaXMuJC5yZWNvcmRfYnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoImlzLXJlY29yZGluZyIpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QodmMuZ2V0Um91dGVyKCkucGx1Z2luc0xpc3RpbmcoKSkudGhlbihiPT57ImJlaG9sZGVyImluIGI/KHRoaXMuJC5pbml0aWFsRGlhbG9nLmNsb3NlRGlhbG9nKCksdGhpcy5zZXQoIl9pc0F2YWlsYWJsZSIsITApKToodGhpcy4kLmluaXRpYWxEaWFsb2cub3Blbk5vVGVuc29yRmxvd0RpYWxvZygpLHRoaXMuc2V0KCJfaXNBdmFpbGFibGUiLCExKSl9KX0scmVhZHkoKXt0aGlzLnJlbG9hZCgpfSxyZWxvYWQoKXtpZih0aGlzLl9pc0F2YWlsYWJsZSl7Y29uc3QgYj12Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiYmVob2xkZXIiLAoiL2lzLWFjdGl2ZSIpO3RoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3QoYikudGhlbihkPT57dGhpcy5zZXQoIl9pc19hY3RpdmUiLGQuaXNfYWN0aXZlKTt0aGlzLnNldCgiX2NvbnRyb2xzX2Rpc2FibGVkIiwhZC5pc19jb25maWdfd3JpdGFibGUpfSl9fX0pO3FmLnJlZ2lzdGVyRGFzaGJvYXJkKCl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWhwYXJhbXMtdXRpbHMvdGYtaHBhcmFtcy11dGlscy5odG1sLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgoQil7cmV0dXJuIiIhPT1CLmRpc3BsYXlOYW1lJiZ2b2lkIDAhPT1CLmRpc3BsYXlOYW1lP0IuZGlzcGxheU5hbWU6Qi5uYW1lfWZ1bmN0aW9uIGsoQil7aWYoIiIhPT1CLmRpc3BsYXlOYW1lJiZ2b2lkIDAhPT1CLmRpc3BsYXlOYW1lKXJldHVybiBCLmRpc3BsYXlOYW1lO2xldCBJPUIubmFtZS5ncm91cDtCPUIubmFtZS50YWc7dm9pZCAwPT09SSYmKEk9IiIpO3ZvaWQgMD09PUImJihCPSIiKTtyZXR1cm4iIj09PUk/QjpJKyIuIitCfWZ1bmN0aW9uIHQoQil7cmV0dXJuIEIuaHBhcmFtQ29sdW1ucy5sZW5ndGh9ZnVuY3Rpb24gbChCKXtyZXR1cm4gQi5tZXRyaWNDb2x1bW5zLmxlbmd0aH1mdW5jdGlvbiBwKEIsSSl7cmV0dXJuIEJbSV19ZnVuY3Rpb24gbShCLEkpe3JldHVybiBCLmZpbmQoTj0+Xy5pc0VxdWFsKE4ubmFtZSxJKSl9ZnVuY3Rpb24gbihCLEksTil7cmV0dXJuIEkuaHBhcmFtc1tCLmhwYXJhbUNvbHVtbnNbTl0uaHBhcmFtSW5mby5uYW1lXX0KZnVuY3Rpb24gcShCLEksTil7Qj1tKEkubWV0cmljVmFsdWVzLEIubWV0cmljQ29sdW1uc1tOXS5tZXRyaWNJbmZvLm5hbWUpO3JldHVybiB2b2lkIDA9PT1CP3ZvaWQgMDpCLnZhbHVlfWZ1bmN0aW9uIHUoQixJLE4pe3JldHVybiBOPEIuaHBhcmFtQ29sdW1ucy5sZW5ndGg/bihCLEksTik6cShCLEksTi1CLmhwYXJhbUNvbHVtbnMubGVuZ3RoKX1mdW5jdGlvbiB4KEIpe3JldHVybiBCLmhwYXJhbUluZm9zLmxlbmd0aH1mdW5jdGlvbiBBKEIpe3JldHVybiBCLm1ldHJpY0luZm9zLmxlbmd0aH1mdW5jdGlvbiB5KEIsSSxOKXtyZXR1cm4gSS5ocGFyYW1zW0IuaHBhcmFtSW5mb3NbTl0ubmFtZV19ZnVuY3Rpb24gdyhCLEksTil7Qj1tKEkubWV0cmljVmFsdWVzLEIubWV0cmljSW5mb3NbTl0ubmFtZSk7cmV0dXJuIHZvaWQgMD09PUI/dm9pZCAwOkIudmFsdWV9ZnVuY3Rpb24gQyhCLEksTil7cmV0dXJuIE48Qi5ocGFyYW1JbmZvcy5sZW5ndGg/eShCLEksTik6dyhCLEksTi1CLmhwYXJhbUluZm9zLmxlbmd0aCl9CmZ1bmN0aW9uIEYoQil7cmV0dXJuIF8uaXNOdW1iZXIoQik/Qi50b1ByZWNpc2lvbig1KTp2b2lkIDA9PT1CPyIiOkIudG9TdHJpbmcoKX1mdW5jdGlvbiBEKEIsSSl7cmV0dXJuIEIqQitJKkl9Zi5ocGFyYW1OYW1lPWg7Zi5tZXRyaWNOYW1lPWs7Zi5zY2hlbWFDb2x1bW5OYW1lPWZ1bmN0aW9uKEIsSSl7cmV0dXJuIEk8Qi5ocGFyYW1Db2x1bW5zLmxlbmd0aD9oKEIuaHBhcmFtQ29sdW1uc1tJXS5ocGFyYW1JbmZvKTprKEIubWV0cmljQ29sdW1uc1tJLUIuaHBhcmFtQ29sdW1ucy5sZW5ndGhdLm1ldHJpY0luZm8pfTtmLm51bUhQYXJhbXM9dDtmLm51bU1ldHJpY3M9bDtmLm51bUNvbHVtbnM9ZnVuY3Rpb24oQil7cmV0dXJuIHQoQikrbChCKX07Zi5ocGFyYW1WYWx1ZUJ5TmFtZT1wO2YubWV0cmljVmFsdWVCeU5hbWU9bTtmLmhwYXJhbVZhbHVlQnlJbmRleD1uO2YubWV0cmljVmFsdWVCeUluZGV4PXE7Zi5jb2x1bW5WYWx1ZUJ5SW5kZXg9dTtmLm51bWVyaWNDb2x1bW5FeHRlbnQ9CmZ1bmN0aW9uKEIsSSxOKXtyZXR1cm4gZDMuZXh0ZW50KEksTz0+dShCLE8sTikpfTtmLmdldEFic29sdXRlQ29sdW1uSW5kZXg9ZnVuY3Rpb24oQixJLE4pe2lmKE48SS5ocGFyYW1JbmZvcy5sZW5ndGgpQj1CLmhwYXJhbUNvbHVtbnMuZmluZEluZGV4KE89Pk8uaHBhcmFtSW5mby5uYW1lPT09SS5ocGFyYW1JbmZvc1tOXS5uYW1lKTtlbHNle2NvbnN0IE89SS5tZXRyaWNJbmZvc1tOLUkuaHBhcmFtSW5mb3MubGVuZ3RoXS5uYW1lO0I9Qi5ocGFyYW1Db2x1bW5zLmxlbmd0aCtCLm1ldHJpY0NvbHVtbnMuZmluZEluZGV4KEg9PkgubWV0cmljSW5mby5uYW1lPT09Tyl9Y29uc29sZS5hc3NlcnQoLTEhPT1CKTtyZXR1cm4gQn07Zi5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZT1mdW5jdGlvbihCLEkpe3JldHVybiBJPEIuaHBhcmFtSW5mb3MubGVuZ3RoP2goQi5ocGFyYW1JbmZvc1tJXSk6ayhCLm1ldHJpY0luZm9zW0ktQi5ocGFyYW1JbmZvcy5sZW5ndGhdKX07Zi5udW1WaXNpYmxlSFBhcmFtcz0KeDtmLm51bVZpc2libGVNZXRyaWNzPUE7Zi5udW1WaXNpYmxlQ29sdW1ucz1mdW5jdGlvbihCKXtyZXR1cm4geChCKStBKEIpfTtmLnZpc2libGVOdW1lcmljQ29sdW1uRXh0ZW50PWZ1bmN0aW9uKEIsSSxOKXtyZXR1cm4gZDMuZXh0ZW50KEksTz0+QyhCLE8sTikpfTtmLnByZXR0eVByaW50SFBhcmFtVmFsdWVCeU5hbWU9ZnVuY3Rpb24oQixJKXtyZXR1cm4gRihwKEIsSSkpfTtmLnByZXR0eVByaW50TWV0cmljVmFsdWVCeU5hbWU9ZnVuY3Rpb24oQixJKXtyZXR1cm4gRihtKEIsSSkpfTtmLnNlc3Npb25Hcm91cFdpdGhOYW1lPWZ1bmN0aW9uKEIsSSl7cmV0dXJuIEIuZmluZChOPT5OLm5hbWU9PT1JKX07Zi5ocGFyYW1WYWx1ZUJ5VmlzaWJsZUluZGV4PXk7Zi5tZXRyaWNWYWx1ZUJ5VmlzaWJsZUluZGV4PXc7Zi5jb2x1bW5WYWx1ZUJ5VmlzaWJsZUluZGV4PUM7Zi5wcmV0dHlQcmludD1GO2YubDJOb3JtU3F1YXJlZD1EO2YuZXVjbGlkZWFuRGlzdD1mdW5jdGlvbihCLEksTixPKXtyZXR1cm4gTWF0aC5zcXJ0KEQoQi0KTixJLU8pKX07Zi5wb2ludFRvUmVjdGFuZ2xlRGlzdD1mdW5jdGlvbihCLEksTixPLEgsSyl7aWYoQjxOJiZJPE8pcmV0dXJuIGYuZXVjbGlkZWFuRGlzdChCLEksTixPKTtpZihOPD1CJiZCPEgmJkk8TylyZXR1cm4gTy1JO2lmKEg8PUImJkk8TylyZXR1cm4gZi5ldWNsaWRlYW5EaXN0KEIsSSxILE8pO2lmKEI8TiYmTzw9SSYmSTxLKXJldHVybiBOLUI7aWYoTjw9QiYmQjxIJiZPPD1JJiZJPEspcmV0dXJuIDA7aWYoSDw9QiYmTzw9SSYmSTxLKXJldHVybiBCLUg7aWYoQjxOJiZLPD1JKXJldHVybiBmLmV1Y2xpZGVhbkRpc3QoQixJLE4sSyk7aWYoTjw9QiYmQjxIJiZLPD1JKXJldHVybiBJLUs7aWYoSDw9QiYmSzw9SSlyZXR1cm4gZi5ldWNsaWRlYW5EaXN0KEIsSSxILEspO3Rocm93IlBvaW50ICh4LHkpIG11c3QgYmUgaW4gb25lIG9mIHRoZSByZWdpb25zIGRlZmluZWQgYWJvdmUuIjt9O2YudHJhbnNsYXRlU3RyPWZ1bmN0aW9uKEIsSSl7cmV0dXJuIHZvaWQgMD09PUk/InRyYW5zbGF0ZSgiKwpCKyIpIjoidHJhbnNsYXRlKCIrQisiLCIrSSsiKSJ9O2Yucm90YXRlU3RyPWZ1bmN0aW9uKEIsSSl7bGV0IE49InJvdGF0ZSg5MCI7dm9pZCAwIT09QiYmdm9pZCAwIT09SSYmKE49TisiLCIrQisiLCIrSSk7cmV0dXJuIE4rIikifTtmLmlzTnVsbE9yVW5kZWZpbmVkPWZ1bmN0aW9uKEIpe3JldHVybiBudWxsPT09Qnx8dm9pZCAwPT09Qn07Zi5xdWFkVHJlZVZpc2l0UG9pbnRzSW5SZWN0PWZ1bmN0aW9uKEIsSSxOLE8sSCxLKXtCLnZpc2l0KChNLEwsUSxULFgpPT57aWYodm9pZCAwPT09TS5sZW5ndGgpe2RvIEw9Qi54KCkoTS5kYXRhKSxRPUIueSgpKE0uZGF0YSksSTw9TCYmTDxPJiZOPD1RJiZRPEgmJksoTS5kYXRhKTt3aGlsZShNPU0ubmV4dCk7cmV0dXJuITB9cmV0dXJuIEw+PU98fFQ8PUl8fFE+PUh8fFg8PU59KX07Zi5xdWFkVHJlZVZpc2l0UG9pbnRzSW5EaXNrPWZ1bmN0aW9uKEIsSSxOLE8sSCl7Qi52aXNpdCgoSyxNLEwsUSxUKT0+e2lmKHZvaWQgMD09PUsubGVuZ3RoKXtkbyBNPQpCLngoKShLLmRhdGEpLEw9Qi55KCkoSy5kYXRhKSxNPWYuZXVjbGlkZWFuRGlzdChJLE4sTSxMKSxNPD1PJiZIKEsuZGF0YSxNKTt3aGlsZShLPUsubmV4dCk7cmV0dXJuITB9cmV0dXJuIGYucG9pbnRUb1JlY3RhbmdsZURpc3QoSSxOLE0sTCxRLFQpPk99KX07Zi5maWx0ZXJTZXQ9ZnVuY3Rpb24oQixJKXtjb25zdCBOPW5ldyBTZXQ7Qi5mb3JFYWNoKE89PntJKE8pJiZOLmFkZChPKX0pO3JldHVybiBOfTtmLnNldEFycmF5T2JzZXJ2YWJseT1mdW5jdGlvbihCLEkpe2NvbnN0IE49Qi5nZXQoInNlc3Npb25Hcm91cHMiLEIpO0FycmF5LmlzQXJyYXkoTik/Qi5zcGxpY2UuYXBwbHkoQixbInNlc3Npb25Hcm91cHMiLDAsTi5sZW5ndGhdLmNvbmNhdChJKSk6Qi5zZXQoInNlc3Npb25Hcm91cHMiLEkpfTtmLmhhc2hPZlN0cmluZz1mdW5jdGlvbihCKXtsZXQgST0wO2ZvcihsZXQgTj0wO048Qi5sZW5ndGg7KytOKUk9MzEqSStCLmNoYXJDb2RlQXQoTikmNDI5NDk2NzI5NTtyZXR1cm4gSSsKTWF0aC5wb3coMiwzMSl9fSkoZC51dGlsc3x8KGQudXRpbHM9e30pKX0pKGIuaHBhcmFtc3x8KGIuaHBhcmFtcz17fSkpfSkodGZ8fCh0Zj17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1zcGxpdC1sYXlvdXQvdmFhZGluLXNwbGl0LWxheW91dC5odG1sLmpzClBvbHltZXIoe2lzOiJ2YWFkaW4tc3BsaXQtbGF5b3V0IixiZWhhdmlvcnM6W1BvbHltZXIuSXJvblJlc2l6YWJsZUJlaGF2aW9yXSxwcm9wZXJ0aWVzOnt2ZXJ0aWNhbDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCx2YWx1ZTohMX0sX3ByZXZpb3VzUHJpbWFyeVBvaW50ZXJFdmVudHM6U3RyaW5nLF9wcmV2aW91c1NlY29uZGFyeVBvaW50ZXJFdmVudHM6U3RyaW5nfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyPVBvbHltZXIuZG9tKHRoaXMpLm9ic2VydmVOb2Rlcyh0aGlzLl9wcm9jZXNzQ2hpbGRyZW4pfSxkZXRhY2hlZDpmdW5jdGlvbigpe1BvbHltZXIuZG9tKHRoaXMpLnVub2JzZXJ2ZU5vZGVzKHRoaXMuX29ic2VydmVyKX0sX3Byb2Nlc3NDaGlsZHJlbjpmdW5jdGlvbigpe3RoaXMuZ2V0RWZmZWN0aXZlQ2hpbGRyZW4oKS5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuY2xhc3NMaXN0LmNvbnRhaW5zKCJzcGxpdHRlci1oYW5kbGUiKT8KKFBvbHltZXIuZG9tKGIpLnNldEF0dHJpYnV0ZSgic2xvdCIsImhhbmRsZSIpLCExKTohMH0pLmZvckVhY2goZnVuY3Rpb24oYixkKXswPT09ZD8odGhpcy5fcHJpbWFyeUNoaWxkPWIsUG9seW1lci5kb20oYikuc2V0QXR0cmlidXRlKCJzbG90IiwicHJpbWFyeSIpKToxPT1kPyh0aGlzLl9zZWNvbmRhcnlDaGlsZD1iLFBvbHltZXIuZG9tKGIpLnNldEF0dHJpYnV0ZSgic2xvdCIsInNlY29uZGFyeSIpKTpQb2x5bWVyLmRvbShiKS5yZW1vdmVBdHRyaWJ1dGUoInNsb3QiKX0uYmluZCh0aGlzKSl9LF9zZXRGbGV4QmFzaXM6ZnVuY3Rpb24oYixkLGYpe2Q9TWF0aC5tYXgoMCxNYXRoLm1pbihkLGYpKTswPT09ZCYmKGQ9MUUtNik7Yi5zdHlsZS5mbGV4PSIxIDEgIitkKyJweCJ9LF9vbkhhbmRsZVRyYWNrOmZ1bmN0aW9uKGIpe2lmKHRoaXMuX3ByaW1hcnlDaGlsZCYmdGhpcy5fc2Vjb25kYXJ5Q2hpbGQpe3ZhciBkPXRoaXMudmVydGljYWw/ImhlaWdodCI6IndpZHRoIjsic3RhcnQiPT09CmIuZGV0YWlsLnN0YXRlPyh0aGlzLl9zdGFydFNpemU9e2NvbnRhaW5lcjp0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2RdLXRoaXMuJC5zcGxpdHRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtkXSxwcmltYXJ5OnRoaXMuX3ByaW1hcnlDaGlsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtkXSxzZWNvbmRhcnk6dGhpcy5fc2Vjb25kYXJ5Q2hpbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbZF19LHRoaXMuX3ByZXZpb3VzUHJpbWFyeVBvaW50ZXJFdmVudHM9dGhpcy5fcHJpbWFyeUNoaWxkLnN0eWxlLnBvaW50ZXJFdmVudHMsdGhpcy5fcHJldmlvdXNTZWNvbmRhcnlQb2ludGVyRXZlbnRzPXRoaXMuX3NlY29uZGFyeUNoaWxkLnN0eWxlLnBvaW50ZXJFdmVudHMsdGhpcy5fcHJpbWFyeUNoaWxkLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHRoaXMuX3NlY29uZGFyeUNoaWxkLnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiKTooZD10aGlzLnZlcnRpY2FsP2IuZGV0YWlsLmR5OgpiLmRldGFpbC5keCx0aGlzLl9zZXRGbGV4QmFzaXModGhpcy5fcHJpbWFyeUNoaWxkLHRoaXMuX3N0YXJ0U2l6ZS5wcmltYXJ5K2QsdGhpcy5fc3RhcnRTaXplLmNvbnRhaW5lciksdGhpcy5fc2V0RmxleEJhc2lzKHRoaXMuX3NlY29uZGFyeUNoaWxkLHRoaXMuX3N0YXJ0U2l6ZS5zZWNvbmRhcnktZCx0aGlzLl9zdGFydFNpemUuY29udGFpbmVyKSx0aGlzLm5vdGlmeVJlc2l6ZSgpLCJlbmQiPT09Yi5kZXRhaWwuc3RhdGUmJihkZWxldGUgdGhpcy5fc3RhcnRTaXplLHRoaXMuX3ByaW1hcnlDaGlsZC5zdHlsZS5wb2ludGVyRXZlbnRzPXRoaXMuX3ByZXZpb3VzUHJpbWFyeVBvaW50ZXJFdmVudHMsdGhpcy5fc2Vjb25kYXJ5Q2hpbGQuc3R5bGUucG9pbnRlckV2ZW50cz10aGlzLl9wcmV2aW91c1NlY29uZGFyeVBvaW50ZXJFdmVudHMpKX19LF9wcmV2ZW50RGVmYXVsdDpmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1xdWVyeS1wYW5lL3RmLWhwYXJhbXMtcXVlcnktcGFuZS5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLXF1ZXJ5LXBhbmUiLHByb3BlcnRpZXM6e2JhY2tlbmQ6T2JqZWN0LGV4cGVyaW1lbnROYW1lOlN0cmluZyxjb25maWd1cmF0aW9uOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+KHtzY2hlbWE6e2hwYXJhbUNvbHVtbnM6W10sbWV0cmljQ29sdW1uczpbXX0sY29sdW1uc1Zpc2liaWxpdHk6W10sdmlzaWJsZVNjaGVtYTp7aHBhcmFtSW5mb3M6W10sbWV0cmljSW5mb3M6W119fSkscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSxzZXNzaW9uR3JvdXBzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXSxyZWFkT25seTohMCxub3RpZnk6ITB9LF9leHBlcmltZW50Ok9iamVjdCxfaHBhcmFtczpBcnJheSxfbWV0cmljczpBcnJheSxfc3RhdHVzZXM6e3R5cGU6QXJyYXksdmFsdWU6KCk9Plt7dmFsdWU6IlNUQVRVU19VTktOT1dOIixkaXNwbGF5TmFtZToiVW5rbm93biIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfU1VDQ0VTUyIsZGlzcGxheU5hbWU6IlN1Y2Nlc3MiLAphbGxvd2VkOiEwfSx7dmFsdWU6IlNUQVRVU19GQUlMVVJFIixkaXNwbGF5TmFtZToiRmFpbHVyZSIsYWxsb3dlZDohMH0se3ZhbHVlOiJTVEFUVVNfUlVOTklORyIsZGlzcGxheU5hbWU6IlJ1bm5pbmciLGFsbG93ZWQ6ITB9XX0sX2dldEV4cGVyaW1lbnRSZXNvbHZlZDp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoYj0+e3RoaXMuX3Jlc29sdmVHZXRFeHBlcmltZW50PWJ9KX19LF9yZXNvbHZlR2V0RXhwZXJpbWVudDpGdW5jdGlvbixfbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXI6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5uZXcgdmMuQ2FuY2VsbGVyfSxfc29ydEJ5SW5kZXg6TnVtYmVyLF9zb3J0RGlyZWN0aW9uOk51bWJlcixfcGFnZVNpemVJbnB1dDp7dHlwZTpPYmplY3QsdmFsdWU6e3ZhbHVlOiIxMDAiLGludmFsaWQ6ITF9fSxfcGFnZU51bWJlcklucHV0Ont0eXBlOk9iamVjdCx2YWx1ZTp7dmFsdWU6IjEiLGludmFsaWQ6ITF9fSwKX3BhZ2VDb3VudFN0cjp7dHlwZTpTdHJpbmcsdmFsdWU6Ij8ifSxfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHI6U3RyaW5nLF9zZXNzaW9uR3JvdXBzUmVxdWVzdDpPYmplY3R9LG9ic2VydmVyczpbIl9jb21wdXRlRXhwZXJpbWVudEFuZFJlbGF0ZWRQcm9wcyhiYWNrZW5kLCBleHBlcmltZW50TmFtZSkiLCJfdXBkYXRlQ29uZmlndXJhdGlvbihfaHBhcmFtcy4qLCBfbWV0cmljcy4qKSJdLHJlbG9hZCgpe3RoaXMuX3F1ZXJ5U2VydmVyKCl9LF9jc3ZVcmwoYixkKXtyZXR1cm4gdGhpcy5fZG93bmxvYWREYXRhVXJsKGIsZCwiY3N2Iil9LF9qc29uVXJsKGIsZCl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybChiLGQsImpzb24iKX0sX2xhdGV4VXJsKGIsZCl7cmV0dXJuIHRoaXMuX2Rvd25sb2FkRGF0YVVybChiLGQsImxhdGV4Iil9LF9kb3dubG9hZERhdGFVcmwoYixkLGYpe3JldHVybiB0aGlzLmJhY2tlbmQuZ2V0RG93bmxvYWRVcmwoZixiLGQuY29sdW1uc1Zpc2liaWxpdHkpfSwKX2NvbXB1dGVFeHBlcmltZW50QW5kUmVsYXRlZFByb3BzKCl7Y29uc3QgYj10Zi5ocGFyYW1zLnV0aWxzO2IuaXNOdWxsT3JVbmRlZmluZWQodGhpcy5iYWNrZW5kKXx8Yi5pc051bGxPclVuZGVmaW5lZCh0aGlzLmV4cGVyaW1lbnROYW1lKXx8dGhpcy5iYWNrZW5kLmdldEV4cGVyaW1lbnQoe2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWV9KS50aGVuKGQ9PntfLmlzRXF1YWwoZCx0aGlzLl9leHBlcmltZW50KXx8KHRoaXMuc2V0KCJfZXhwZXJpbWVudCIsZCksdGhpcy5fY29tcHV0ZUhQYXJhbXMoKSx0aGlzLl9jb21wdXRlTWV0cmljcygpLHRoaXMuX3F1ZXJ5U2VydmVyKCksdGhpcy5fcmVzb2x2ZUdldEV4cGVyaW1lbnQoKSl9KX0sX2NvbXB1dGVIUGFyYW1zKCl7Y29uc3QgYj1bXTt0aGlzLl9leHBlcmltZW50LmhwYXJhbUluZm9zLmZvckVhY2goKGQsZik9Pntjb25zdCBoPXtpbmZvOmQsZGlzcGxheWVkOjU+ZixmaWx0ZXI6e319O2guaW5mby5oYXNPd25Qcm9wZXJ0eSgiZG9tYWluRGlzY3JldGUiKT8KKGguZmlsdGVyLmRvbWFpbkRpc2NyZXRlPVtdLGguaW5mby5kb21haW5EaXNjcmV0ZS5mb3JFYWNoKGs9PntoLmZpbHRlci5kb21haW5EaXNjcmV0ZS5wdXNoKHt2YWx1ZTprLGNoZWNrZWQ6ITB9KX0pKToiREFUQV9UWVBFX0JPT0wiPT09aC5pbmZvLnR5cGU/aC5maWx0ZXIuZG9tYWluRGlzY3JldGU9W3t2YWx1ZTohMSxjaGVja2VkOiEwfSx7dmFsdWU6ITAsY2hlY2tlZDohMH1dOiJEQVRBX1RZUEVfRkxPQVQ2NCI9PT1oLmluZm8udHlwZT9oLmZpbHRlci5pbnRlcnZhbD17bWluOnt2YWx1ZToiIixpbnZhbGlkOiExfSxtYXg6e3ZhbHVlOiIiLGludmFsaWQ6ITF9fToiREFUQV9UWVBFX1NUUklORyI9PT1oLmluZm8udHlwZT9oLmZpbHRlci5yZWdleHA9IiI6Y29uc29sZS53YXJuKCJ1bmtub3duIGhwYXJhbS5pbmZvLnR5cGU6ICVzIixoLmluZm8udHlwZSk7Yi5wdXNoKGgpfSk7dGhpcy5zZXQoIl9ocGFyYW1zIixiKX0sX2NvbXB1dGVNZXRyaWNzKCl7Y29uc3QgYj1bXTt0aGlzLl9leHBlcmltZW50Lm1ldHJpY0luZm9zLmZvckVhY2goKGQsCmYpPT57Yi5wdXNoKHtpbmZvOmQsZmlsdGVyOntpbnRlcnZhbDp7bWluOnt2YWx1ZToiIixpbnZhbGlkOiExfSxtYXg6e3ZhbHVlOiIiLGludmFsaWQ6ITF9fX0sZGlzcGxheWVkOjU+Zn0pfSk7dGhpcy5zZXQoIl9tZXRyaWNzIixiKX0sX2NvbXB1dGVTY2hlbWEoKXtyZXR1cm4gdGhpcy5faHBhcmFtcyYmdGhpcy5fbWV0cmljcz97aHBhcmFtQ29sdW1uczp0aGlzLl9ocGFyYW1zLm1hcChiPT4oe2hwYXJhbUluZm86Yi5pbmZvfSkpLG1ldHJpY0NvbHVtbnM6dGhpcy5fbWV0cmljcy5tYXAoYj0+KHttZXRyaWNJbmZvOmIuaW5mb30pKX06e2hwYXJhbUNvbHVtbnM6W10sbWV0cmljQ29sdW1uczpbXX19LF91cGRhdGVDb25maWd1cmF0aW9uKCl7dGhpcy5kZWJvdW5jZSgiX3VwZGF0ZUNvbmZpZ3VyYXRpb24iLCgpPT57dGhpcy5fc2V0Q29uZmlndXJhdGlvbih7c2NoZW1hOnRoaXMuX2NvbXB1dGVTY2hlbWEoKSxjb2x1bW5zVmlzaWJpbGl0eTp0aGlzLl9jb21wdXRlQ29sdW1uc1Zpc2liaWxpdHkoKSwKdmlzaWJsZVNjaGVtYTp0aGlzLl9jb21wdXRlVmlzaWJsZVNjaGVtYSgpfSl9KX0sX2NvbXB1dGVDb2x1bW5zVmlzaWJpbGl0eSgpe3JldHVybiB0aGlzLl9ocGFyYW1zJiZ0aGlzLl9tZXRyaWNzP3RoaXMuX2hwYXJhbXMubWFwKGI9PmIuZGlzcGxheWVkKS5jb25jYXQodGhpcy5fbWV0cmljcy5tYXAoYj0+Yi5kaXNwbGF5ZWQpKTpbXX0sX2NvbXB1dGVWaXNpYmxlU2NoZW1hKCl7aWYoIXRoaXMuX2hwYXJhbXN8fCF0aGlzLl9tZXRyaWNzKXJldHVybntocGFyYW1JbmZvczpbXSxtZXRyaWNJbmZvczpbXX07Y29uc3QgYj10aGlzLl9ocGFyYW1zLmZpbHRlcihmPT5mLmRpc3BsYXllZCkubWFwKGY9PmYuaW5mbyksZD10aGlzLl9tZXRyaWNzLmZpbHRlcihmPT5mLmRpc3BsYXllZCkubWFwKGY9PmYuaW5mbyk7cmV0dXJue2hwYXJhbUluZm9zOmIsbWV0cmljSW5mb3M6ZH19LF9xdWVyeVNlcnZlcigpe3RoaXMuZGVib3VuY2UoInF1ZXJ5U2VydmVyIiwoKT0+dGhpcy5fcXVlcnlTZXJ2ZXJOb0RlYm91bmNlKCksCjEwMCl9LF9xdWVyeVNlcnZlck5vRGVib3VuY2UoKXtyZXR1cm4gdGhpcy5fc2VuZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpLnRoZW4odGhpcy5fbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXIuY2FuY2VsbGFibGUoKHt2YWx1ZTpiLGNhbmNlbGxlZDpkfSk9PntkfHwoMDw9Yi50b3RhbFNpemU/KHRoaXMuc2V0KCJfcGFnZUNvdW50U3RyIixTdHJpbmcoTWF0aC5jZWlsKGIudG90YWxTaXplLyt0aGlzLl9wYWdlU2l6ZUlucHV0LnZhbHVlKSkpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLGIudG90YWxTaXplKSk6KHRoaXMuc2V0KCJfcGFnZUNvdW50U3RyIiwiPyIpLHRoaXMuc2V0KCJfdG90YWxTZXNzaW9uR3JvdXBzQ291bnRTdHIiLCJVbmtub3duIikpLHRmLmhwYXJhbXMudXRpbHMuc2V0QXJyYXlPYnNlcnZhYmx5KHRoaXMsYi5zZXNzaW9uR3JvdXBzKSl9KSl9LF9zZW5kTGlzdFNlc3Npb25Hcm91cHNSZXF1ZXN0KCl7Y29uc3QgYj10aGlzLl9idWlsZExpc3RTZXNzaW9uR3JvdXBzUmVxdWVzdCgpOwppZihudWxsIT09YilyZXR1cm4gdGhpcy5zZXQoIl9zZXNzaW9uR3JvdXBzUmVxdWVzdCIsYiksdGhpcy5fbGlzdFNlc3Npb25Hcm91cHNDYW5jZWxsZXIuY2FuY2VsQWxsKCksdGhpcy5iYWNrZW5kLmxpc3RTZXNzaW9uR3JvdXBzKGIpfSxfYnVpbGRMaXN0U2Vzc2lvbkdyb3Vwc1JlcXVlc3QoKXtmdW5jdGlvbiBiKG0pe3ZhciBuPWYuZ2V0KG0rIi5taW4udmFsdWUiKTtjb25zb2xlLmFzc2VydCh2b2lkIDAhPT1uKTtuPSIiPT09bj8iLUluZmluaXR5IjorbjtmLnNldChtKyIubWluLmludmFsaWQiLGlzTmFOKG4pKTtoPWgmJiFpc05hTihuKTt2YXIgcT1mLmdldChtKyIubWF4LnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09cSk7cT0iIj09PXE/IkluZmluaXR5IjorcTtmLnNldChtKyIubWF4LmludmFsaWQiLGlzTmFOKHEpKTtoPWgmJiFpc05hTihxKTtyZXR1cm4gaXNOYU4obil8fGlzTmFOKHEpP251bGw6e21pblZhbHVlOm4sbWF4VmFsdWU6cX19ZnVuY3Rpb24gZChtKXt2YXIgbj0KZi5nZXQobSsiLnZhbHVlIik7Y29uc29sZS5hc3NlcnQodm9pZCAwIT09bik7bj0rbjtjb25zdCBxPU51bWJlci5pc0ludGVnZXIobikmJjA8bjtmLnNldChtKyIuaW52YWxpZCIsIXEpO2g9aCYmcTtyZXR1cm4gcT9uOm51bGx9Y29uc3QgZj10aGlzO2xldCBoPSEwO2NvbnN0IGs9dGhpcy5fc3RhdHVzZXMuZmlsdGVyKG09Pm0uYWxsb3dlZCkubWFwKG09Pm0udmFsdWUpO2xldCB0PVtdO3RoaXMuX2hwYXJhbXMuZm9yRWFjaCgobSxuKT0+e2xldCBxPXtocGFyYW06bS5pbmZvLm5hbWV9O2lmKG0uZmlsdGVyLmRvbWFpbkRpc2NyZXRlKXEuZmlsdGVyRGlzY3JldGU9W10sbS5maWx0ZXIuZG9tYWluRGlzY3JldGUuZm9yRWFjaCh1PT57dS5jaGVja2VkJiZxLmZpbHRlckRpc2NyZXRlLnB1c2godS52YWx1ZSl9KTtlbHNlIGlmKG0uZmlsdGVyLmludGVydmFsKXEuZmlsdGVySW50ZXJ2YWw9YigiX2hwYXJhbXMuIituKyIuZmlsdGVyLmludGVydmFsIik7ZWxzZSBpZihtLmZpbHRlci5yZWdleHApcS5maWx0ZXJSZWdleHA9Cm0uZmlsdGVyLnJlZ2V4cDtlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKCJocGFyYW0uZmlsdGVyIHdpdGggbm8gZG9tYWluRGlzY3JldGUsIGludGVydmFsIG9yIHJlZ2V4cCBwcm9wZXJ0aWVzIHNldDogJXMiLG0pLG51bGw7dC5wdXNoKHEpfSk7dGhpcy5fbWV0cmljcy5mb3JFYWNoKChtLG4pPT57bT17bWV0cmljOm0uaW5mby5uYW1lLGZpbHRlckludGVydmFsOmIoIl9tZXRyaWNzLiIrbisiLmZpbHRlci5pbnRlcnZhbCIpfTt0LnB1c2gobSl9KTtpZih2b2lkIDAhPT10aGlzLl9zb3J0QnlJbmRleCYmdm9pZCAwIT09dGhpcy5fc29ydERpcmVjdGlvbil7aWYoISh0aGlzLl9zb3J0QnlJbmRleCBpbiB0KSlyZXR1cm4gY29uc29sZS5lcnJvcigiTm8gY29sdW1uIGluIGNvbFBhcmFtcyB3aXRoIGluZGV4IHNvcnRCeUluZGV4OiAlcyIsdGhpcy5fc29ydEJ5SW5kZXgpLG51bGw7dFt0aGlzLl9zb3J0QnlJbmRleF0ub3JkZXI9MD09PXRoaXMuX3NvcnREaXJlY3Rpb24/Ik9SREVSX0FTQyI6CiJPUkRFUl9ERVNDIn1jb25zdCBsPWQoIl9wYWdlTnVtYmVySW5wdXQiKSxwPWQoIl9wYWdlU2l6ZUlucHV0Iik7cmV0dXJuIGg/e2V4cGVyaW1lbnROYW1lOnRoaXMuZXhwZXJpbWVudE5hbWUsYWxsb3dlZFN0YXR1c2VzOmssY29sUGFyYW1zOnQsc3RhcnRJbmRleDpwKihsLTEpLHNsaWNlU2l6ZTpwfTpudWxsfSxfbWV0cmljU29ydEJ5SW5kZXgoYil7cmV0dXJuIGIrdGhpcy5faHBhcmFtcy5sZW5ndGh9LF9ocGFyYW1OYW1lOnRmLmhwYXJhbXMudXRpbHMuaHBhcmFtTmFtZSxfbWV0cmljTmFtZTp0Zi5ocGFyYW1zLnV0aWxzLm1ldHJpY05hbWUsX3ByZXR0eVByaW50OnRmLmhwYXJhbXMudXRpbHMucHJldHR5UHJpbnR9KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9pcm9uLXBhZ2VzL2lyb24tcGFnZXMuaHRtbC5qcwpQb2x5bWVyKHtpczoiaXJvbi1wYWdlcyIsYmVoYXZpb3JzOltQb2x5bWVyLklyb25SZXNpemFibGVCZWhhdmlvcixQb2x5bWVyLklyb25TZWxlY3RhYmxlQmVoYXZpb3JdLHByb3BlcnRpZXM6e2FjdGl2YXRlRXZlbnQ6e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9fSxvYnNlcnZlcnM6WyJfc2VsZWN0ZWRQYWdlQ2hhbmdlZChzZWxlY3RlZCkiXSxfc2VsZWN0ZWRQYWdlQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuYXN5bmModGhpcy5ub3RpZnlSZXNpemUpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3BhcGVyLWhlYWRlci1wYW5lbC9wYXBlci1oZWFkZXItcGFuZWwuaHRtbC5qcwooZnVuY3Rpb24oKXt2YXIgYj17c2Nyb2xsOiEwfSxkPXtzdGFuZGFyZDoyLHdhdGVyZmFsbDoxLCJ3YXRlcmZhbGwtdGFsbCI6MX0sZj17IndhdGVyZmFsbC10YWxsIjohMH07UG9seW1lcih7aXM6InBhcGVyLWhlYWRlci1wYW5lbCIscHJvcGVydGllczp7bW9kZTp7dHlwZTpTdHJpbmcsdmFsdWU6InN0YW5kYXJkIixvYnNlcnZlcjoiX21vZGVDaGFuZ2VkIixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LHNoYWRvdzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSx0YWxsQ2xhc3M6e3R5cGU6U3RyaW5nLHZhbHVlOiJ0YWxsIn0sYXRUb3A6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMCxub3RpZnk6ITAscmVhZE9ubHk6ITAscmVmbGVjdFRvQXR0cmlidXRlOiEwfX0sb2JzZXJ2ZXJzOlsiX2NvbXB1dGVEcm9wU2hhZG93SGlkZGVuKGF0VG9wLCBtb2RlLCBzaGFkb3cpIl0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9hZGRMaXN0ZW5lcigpO3RoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX3JlbW92ZUxpc3RlbmVyKCl9LApyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsSGFuZGxlcj10aGlzLl9zY3JvbGwuYmluZCh0aGlzKTtjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGdldCBoZWFkZXIoKXtyZXR1cm4gUG9seW1lci5kb20odGhpcy4kLmhlYWRlclNsb3QpLmdldERpc3RyaWJ1dGVkTm9kZXMoKVswXX0sZ2V0IHNjcm9sbGVyKCl7cmV0dXJuIHRoaXMuX2dldFNjcm9sbGVyRm9yTW9kZSh0aGlzLm1vZGUpfSxnZXQgdmlzaWJsZVNoYWRvdygpe3JldHVybiB0aGlzLiQuZHJvcFNoYWRvdy5jbGFzc0xpc3QuY29udGFpbnMoImhhcy1zaGFkb3ciKX0sX2NvbXB1dGVEcm9wU2hhZG93SGlkZGVuOmZ1bmN0aW9uKGgsayl7az1kW2tdO3RoaXMuc2hhZG93P3RoaXMudG9nZ2xlQ2xhc3MoImhhcy1zaGFkb3ciLCEwLHRoaXMuJC5kcm9wU2hhZG93KToyPT09az90aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhMCx0aGlzLiQuZHJvcFNoYWRvdyk6CjEhPT1rfHxoP3RoaXMudG9nZ2xlQ2xhc3MoImhhcy1zaGFkb3ciLCExLHRoaXMuJC5kcm9wU2hhZG93KTp0aGlzLnRvZ2dsZUNsYXNzKCJoYXMtc2hhZG93IiwhMCx0aGlzLiQuZHJvcFNoYWRvdyl9LF9jb21wdXRlTWFpbkNvbnRhaW5lckNsYXNzOmZ1bmN0aW9uKGgpe3ZhciBrPXt9O2suZmxleD0iY292ZXIiIT09aDtyZXR1cm4gT2JqZWN0LmtleXMoaykuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBrW3RdfSkuam9pbigiICIpfSxfYWRkTGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLnNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zY3JvbGxIYW5kbGVyKX0sX3JlbW92ZUxpc3RlbmVyOmZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxlci5yZW1vdmVFdmVudExpc3RlbmVyKCJzY3JvbGwiLHRoaXMuc2Nyb2xsSGFuZGxlcil9LF9tb2RlQ2hhbmdlZDpmdW5jdGlvbihoLGspe3ZhciB0PXRoaXMuaGVhZGVyO3QmJihmW2tdJiYhZltoXT8odC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMudGFsbENsYXNzKSwKdGhpcy5hc3luYyhmdW5jdGlvbigpe3QuY2xhc3NMaXN0LnJlbW92ZSgiYW5pbWF0ZSIpfSwyMDApKTp0aGlzLnRvZ2dsZUNsYXNzKCJhbmltYXRlIixmW2hdLHQpKTt0aGlzLl9rZWVwU2Nyb2xsaW5nU3RhdGUoKX0sX2tlZXBTY3JvbGxpbmdTdGF0ZTpmdW5jdGlvbigpe3ZhciBoPXRoaXMuc2Nyb2xsZXIsaz10aGlzLmhlYWRlcjt0aGlzLl9zZXRBdFRvcCgwPT09aC5zY3JvbGxUb3ApO2smJnRoaXMudGFsbENsYXNzJiZmW3RoaXMubW9kZV0mJnRoaXMudG9nZ2xlQ2xhc3ModGhpcy50YWxsQ2xhc3MsdGhpcy5hdFRvcHx8ay5jbGFzc0xpc3QuY29udGFpbnModGhpcy50YWxsQ2xhc3MpJiZoLnNjcm9sbEhlaWdodDx0aGlzLm9mZnNldEhlaWdodCxrKX0sX3Njcm9sbDpmdW5jdGlvbigpe3RoaXMuX2tlZXBTY3JvbGxpbmdTdGF0ZSgpO3RoaXMuZmlyZSgiY29udGVudC1zY3JvbGwiLHt0YXJnZXQ6dGhpcy5zY3JvbGxlcn0se2J1YmJsZXM6ITF9KX0sX2dldFNjcm9sbGVyRm9yTW9kZTpmdW5jdGlvbihoKXtyZXR1cm4gYltoXT8KdGhpczp0aGlzLiQubWFpbkNvbnRhaW5lcn19KX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItdGFicy9wYXBlci10YWIuaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItdGFiIixiZWhhdmlvcnM6W1BvbHltZXIuSXJvbkNvbnRyb2xTdGF0ZSxQb2x5bWVyLklyb25CdXR0b25TdGF0ZSxQb2x5bWVyLlBhcGVyUmlwcGxlQmVoYXZpb3JdLHByb3BlcnRpZXM6e2xpbms6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMSxyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fSxob3N0QXR0cmlidXRlczp7cm9sZToidGFiIn0sbGlzdGVuZXJzOntkb3duOiJfdXBkYXRlTm9pbmsiLHRhcDoiX29uVGFwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVOb2luaygpfSxnZXQgX3BhcmVudE5vaW5rKCl7dmFyIGI9UG9seW1lci5kb20odGhpcykucGFyZW50Tm9kZTtyZXR1cm4hIWImJiEhYi5ub2lua30sX3VwZGF0ZU5vaW5rOmZ1bmN0aW9uKCl7dGhpcy5ub2luaz0hIXRoaXMubm9pbmt8fCEhdGhpcy5fcGFyZW50Tm9pbmt9LF9vblRhcDpmdW5jdGlvbihiKXtpZih0aGlzLmxpbmspe3ZhciBkPXRoaXMucXVlcnlFZmZlY3RpdmVDaGlsZHJlbigiYSIpOwpkJiZiLnRhcmdldCE9PWQmJmQuY2xpY2soKX19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vcGFwZXItdGFicy9wYXBlci10YWJzLmh0bWwuanMKUG9seW1lcih7aXM6InBhcGVyLXRhYnMiLGJlaGF2aW9yczpbUG9seW1lci5Jcm9uUmVzaXphYmxlQmVoYXZpb3IsUG9seW1lci5Jcm9uTWVudWJhckJlaGF2aW9yXSxwcm9wZXJ0aWVzOntub2luazp7dHlwZTpCb29sZWFuLHZhbHVlOiExLG9ic2VydmVyOiJfbm9pbmtDaGFuZ2VkIn0sbm9CYXI6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sbm9TbGlkZTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzY3JvbGxhYmxlOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGZpdENvbnRhaW5lcjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxkaXNhYmxlRHJhZzp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxoaWRlU2Nyb2xsQnV0dG9uczp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhbGlnbkJvdHRvbTp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxzZWxlY3RhYmxlOnt0eXBlOlN0cmluZyx2YWx1ZToicGFwZXItdGFiIn0sYXV0b3NlbGVjdDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxhdXRvc2VsZWN0RGVsYXk6e3R5cGU6TnVtYmVyLAp2YWx1ZTowfSxfc3RlcDp7dHlwZTpOdW1iZXIsdmFsdWU6MTB9LF9ob2xkRGVsYXk6e3R5cGU6TnVtYmVyLHZhbHVlOjF9LF9sZWZ0SGlkZGVuOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9yaWdodEhpZGRlbjp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfcHJldmlvdXNUYWI6e3R5cGU6T2JqZWN0fX0saG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRhYmxpc3QifSxsaXN0ZW5lcnM6eyJpcm9uLXJlc2l6ZSI6Il9vblRhYlNpemluZ0NoYW5nZWQiLCJpcm9uLWl0ZW1zLWNoYW5nZWQiOiJfb25UYWJTaXppbmdDaGFuZ2VkIiwiaXJvbi1zZWxlY3QiOiJfb25Jcm9uU2VsZWN0IiwiaXJvbi1kZXNlbGVjdCI6Il9vbklyb25EZXNlbGVjdCJ9LGtleUJpbmRpbmdzOnsibGVmdDprZXl1cCByaWdodDprZXl1cCI6Il9vbkFycm93S2V5dXAifSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5faG9sZEpvYj1udWxsO3RoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD10aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09CnZvaWQgMDt0aGlzLl9iaW5kRGVsYXllZEFjdGl2YXRpb25IYW5kbGVyPXRoaXMuX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlci5iaW5kKHRoaXMpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsdGhpcy5fb25CbHVyQ2FwdHVyZS5iaW5kKHRoaXMpLCEwKX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLnNldFNjcm9sbERpcmVjdGlvbigieSIsdGhpcy4kLnRhYnNDb250YWluZXIpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uKCl9LF9ub2lua0NoYW5nZWQ6ZnVuY3Rpb24oYil7UG9seW1lci5kb20odGhpcykucXVlcnlTZWxlY3RvckFsbCgicGFwZXItdGFiIikuZm9yRWFjaChiP3RoaXMuX3NldE5vaW5rQXR0cmlidXRlOnRoaXMuX3JlbW92ZU5vaW5rQXR0cmlidXRlKX0sX3NldE5vaW5rQXR0cmlidXRlOmZ1bmN0aW9uKGIpe2Iuc2V0QXR0cmlidXRlKCJub2luayIsIiIpfSxfcmVtb3ZlTm9pbmtBdHRyaWJ1dGU6ZnVuY3Rpb24oYil7Yi5yZW1vdmVBdHRyaWJ1dGUoIm5vaW5rIil9LApfY29tcHV0ZVNjcm9sbEJ1dHRvbkNsYXNzOmZ1bmN0aW9uKGIsZCxmKXtyZXR1cm4hZHx8Zj8iaGlkZGVuIjpiPyJub3QtdmlzaWJsZSI6IiJ9LF9jb21wdXRlVGFic0NvbnRlbnRDbGFzczpmdW5jdGlvbihiLGQpe3JldHVybiBiPyJzY3JvbGxhYmxlIisoZD8iIGZpdC1jb250YWluZXIiOiIiKToiIGZpdC1jb250YWluZXIifSxfY29tcHV0ZVNlbGVjdGlvbkJhckNsYXNzOmZ1bmN0aW9uKGIsZCl7cmV0dXJuIGI/ImhpZGRlbiI6ZD8iYWxpZ24tYm90dG9tIjoiIn0sX29uVGFiU2l6aW5nQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZGVib3VuY2UoIl9vblRhYlNpemluZ0NoYW5nZWQiLGZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsKCk7dGhpcy5fdGFiQ2hhbmdlZCh0aGlzLnNlbGVjdGVkSXRlbSl9LDEwKX0sX29uSXJvblNlbGVjdDpmdW5jdGlvbihiKXt0aGlzLl90YWJDaGFuZ2VkKGIuZGV0YWlsLml0ZW0sdGhpcy5fcHJldmlvdXNUYWIpO3RoaXMuX3ByZXZpb3VzVGFiPWIuZGV0YWlsLml0ZW07CnRoaXMuY2FuY2VsRGVib3VuY2VyKCJ0YWItY2hhbmdlZCIpfSxfb25Jcm9uRGVzZWxlY3Q6ZnVuY3Rpb24oKXt0aGlzLmRlYm91bmNlKCJ0YWItY2hhbmdlZCIsZnVuY3Rpb24oKXt0aGlzLl90YWJDaGFuZ2VkKG51bGwsdGhpcy5fcHJldmlvdXNUYWIpO3RoaXMuX3ByZXZpb3VzVGFiPW51bGx9LDEpfSxfYWN0aXZhdGVIYW5kbGVyOmZ1bmN0aW9uKCl7dGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKTtQb2x5bWVyLklyb25NZW51QmVoYXZpb3JJbXBsLl9hY3RpdmF0ZUhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfc2NoZWR1bGVBY3RpdmF0aW9uOmZ1bmN0aW9uKGIsZCl7dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25JdGVtPWI7dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXRoaXMuYXN5bmModGhpcy5fYmluZERlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcixkKX0sX2RlbGF5ZWRBY3RpdmF0aW9uSGFuZGxlcjpmdW5jdGlvbigpe3ZhciBiPXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbTsKdGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbT12b2lkIDA7Yi5maXJlKHRoaXMuYWN0aXZhdGVFdmVudCxudWxsLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITB9KX0sX2NhbmNlbFBlbmRpbmdBY3RpdmF0aW9uOmZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fcGVuZGluZ0FjdGl2YXRpb25UaW1lb3V0JiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9wZW5kaW5nQWN0aXZhdGlvblRpbWVvdXQpLHRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uVGltZW91dD10aGlzLl9wZW5kaW5nQWN0aXZhdGlvbkl0ZW09dm9pZCAwKX0sX29uQXJyb3dLZXl1cDpmdW5jdGlvbigpe3RoaXMuYXV0b3NlbGVjdCYmdGhpcy5fc2NoZWR1bGVBY3RpdmF0aW9uKHRoaXMuZm9jdXNlZEl0ZW0sdGhpcy5hdXRvc2VsZWN0RGVsYXkpfSxfb25CbHVyQ2FwdHVyZTpmdW5jdGlvbihiKXtiLnRhcmdldD09PXRoaXMuX3BlbmRpbmdBY3RpdmF0aW9uSXRlbSYmdGhpcy5fY2FuY2VsUGVuZGluZ0FjdGl2YXRpb24oKX0sCmdldCBfdGFiQ29udGFpbmVyU2Nyb2xsU2l6ZSgpe3JldHVybiBNYXRoLm1heCgwLHRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbFdpZHRoLXRoaXMuJC50YWJzQ29udGFpbmVyLm9mZnNldFdpZHRoKX0sX3Njcm9sbDpmdW5jdGlvbihiLGQpe3RoaXMuc2Nyb2xsYWJsZSYmdGhpcy5fYWZmZWN0U2Nyb2xsKGQmJi1kLmRkeHx8MCl9LF9kb3duOmZ1bmN0aW9uKCl7dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuX2RlZmF1bHRGb2N1c0FzeW5jJiYodGhpcy5jYW5jZWxBc3luYyh0aGlzLl9kZWZhdWx0Rm9jdXNBc3luYyksdGhpcy5fZGVmYXVsdEZvY3VzQXN5bmM9bnVsbCl9LDEpfSxfYWZmZWN0U2Nyb2xsOmZ1bmN0aW9uKGIpe3RoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQrPWI7Yj10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0O3RoaXMuX2xlZnRIaWRkZW49MD09PWI7dGhpcy5fcmlnaHRIaWRkZW49Yj09PXRoaXMuX3RhYkNvbnRhaW5lclNjcm9sbFNpemV9LApfb25MZWZ0U2Nyb2xsQnV0dG9uRG93bjpmdW5jdGlvbigpe3RoaXMuX3Njcm9sbFRvTGVmdCgpO3RoaXMuX2hvbGRKb2I9c2V0SW50ZXJ2YWwodGhpcy5fc2Nyb2xsVG9MZWZ0LmJpbmQodGhpcyksdGhpcy5faG9sZERlbGF5KX0sX29uUmlnaHRTY3JvbGxCdXR0b25Eb3duOmZ1bmN0aW9uKCl7dGhpcy5fc2Nyb2xsVG9SaWdodCgpO3RoaXMuX2hvbGRKb2I9c2V0SW50ZXJ2YWwodGhpcy5fc2Nyb2xsVG9SaWdodC5iaW5kKHRoaXMpLHRoaXMuX2hvbGREZWxheSl9LF9vblNjcm9sbEJ1dHRvblVwOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLl9ob2xkSm9iKTt0aGlzLl9ob2xkSm9iPW51bGx9LF9zY3JvbGxUb0xlZnQ6ZnVuY3Rpb24oKXt0aGlzLl9hZmZlY3RTY3JvbGwoLXRoaXMuX3N0ZXApfSxfc2Nyb2xsVG9SaWdodDpmdW5jdGlvbigpe3RoaXMuX2FmZmVjdFNjcm9sbCh0aGlzLl9zdGVwKX0sX3RhYkNoYW5nZWQ6ZnVuY3Rpb24oYixkKXtpZihiKXt2YXIgZj10aGlzLiQudGFic0NvbnRlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksCmg9Zi53aWR0aCxrPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Zj1rLmxlZnQtZi5sZWZ0O3RoaXMuX3Bvcz17d2lkdGg6dGhpcy5fY2FsY1BlcmNlbnQoay53aWR0aCxoKSxsZWZ0OnRoaXMuX2NhbGNQZXJjZW50KGYsaCl9O2lmKHRoaXMubm9TbGlkZXx8bnVsbD09ZCl0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZCIpLHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpO2Vsc2V7dmFyIHQ9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtkPXRoaXMuaXRlbXMuaW5kZXhPZihkKTtiPXRoaXMuaXRlbXMuaW5kZXhPZihiKTt0aGlzLiQuc2VsZWN0aW9uQmFyLmNsYXNzTGlzdC5hZGQoImV4cGFuZCIpO2I9ZDxiO3RoaXMuX2lzUlRMJiYoYj0hYik7Yj90aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9jYWxjUGVyY2VudChrLmxlZnQray53aWR0aC0KdC5sZWZ0LGgpLTUsdGhpcy5fbGVmdCk6dGhpcy5fcG9zaXRpb25CYXIodGhpcy5fY2FsY1BlcmNlbnQodC5sZWZ0K3Qud2lkdGgtay5sZWZ0LGgpLTUsdGhpcy5fY2FsY1BlcmNlbnQoZixoKSs1KTt0aGlzLnNjcm9sbGFibGUmJnRoaXMuX3Njcm9sbFRvU2VsZWN0ZWRJZk5lZWRlZChrLndpZHRoLGYpfX1lbHNlIHRoaXMuJC5zZWxlY3Rpb25CYXIuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kIiksdGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3QucmVtb3ZlKCJjb250cmFjdCIpLHRoaXMuX3Bvc2l0aW9uQmFyKDAsMCl9LF9zY3JvbGxUb1NlbGVjdGVkSWZOZWVkZWQ6ZnVuY3Rpb24oYixkKXtkLT10aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0OzA+ZD90aGlzLiQudGFic0NvbnRhaW5lci5zY3JvbGxMZWZ0Kz1kOihkKz1iLXRoaXMuJC50YWJzQ29udGFpbmVyLm9mZnNldFdpZHRoLDA8ZCYmKHRoaXMuJC50YWJzQ29udGFpbmVyLnNjcm9sbExlZnQrPWQpKX0sX2NhbGNQZXJjZW50OmZ1bmN0aW9uKGIsCmQpe3JldHVybiAxMDAqYi9kfSxfcG9zaXRpb25CYXI6ZnVuY3Rpb24oYixkKXtiPWJ8fDA7ZD1kfHwwO3RoaXMuX3dpZHRoPWI7dGhpcy5fbGVmdD1kO3RoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGVYKCIrZCsiJSkgc2NhbGVYKCIrYi8xMDArIikiLHRoaXMuJC5zZWxlY3Rpb25CYXIpfSxfb25CYXJUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kLnNlbGVjdGlvbkJhci5jbGFzc0xpc3Q7Yi5jb250YWlucygiZXhwYW5kIik/KGIucmVtb3ZlKCJleHBhbmQiKSxiLmFkZCgiY29udHJhY3QiKSx0aGlzLl9wb3NpdGlvbkJhcih0aGlzLl9wb3Mud2lkdGgsdGhpcy5fcG9zLmxlZnQpKTpiLmNvbnRhaW5zKCJjb250cmFjdCIpJiZiLnJlbW92ZSgiY29udHJhY3QiKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly9wYXBlci10b29sYmFyL3BhcGVyLXRvb2xiYXIuaHRtbC5qcwpQb2x5bWVyKHtpczoicGFwZXItdG9vbGJhciIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6InRvb2xiYXIifSxwcm9wZXJ0aWVzOntib3R0b21KdXN0aWZ5Ont0eXBlOlN0cmluZyx2YWx1ZToiIn0sanVzdGlmeTp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LG1pZGRsZUp1c3RpZnk6e3R5cGU6U3RyaW5nLHZhbHVlOiIifX0scmVhZHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4odGhpcy5pcywiaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBhcHAtbGF5b3V0IGluc3RlYWQhIil9LGF0dGFjaGVkOmZ1bmN0aW9uKCl7dGhpcy5fb2JzZXJ2ZXI9dGhpcy5fb2JzZXJ2ZSh0aGlzKTt0aGlzLl91cGRhdGVBcmlhTGFiZWxsZWRCeSgpfSxkZXRhY2hlZDpmdW5jdGlvbigpe3RoaXMuX29ic2VydmVyJiZ0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCl9LF9vYnNlcnZlOmZ1bmN0aW9uKGIpe3ZhciBkPW5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQXJpYUxhYmVsbGVkQnkoKX0uYmluZCh0aGlzKSk7CmQub2JzZXJ2ZShiLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO3JldHVybiBkfSxfdXBkYXRlQXJpYUxhYmVsbGVkQnk6ZnVuY3Rpb24oKXtQb2x5bWVyLmRvbS5mbHVzaCgpO2Zvcih2YXIgYj1bXSxkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFBvbHltZXIuZG9tKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgic2xvdCIpKS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoUG9seW1lci5kb20odGhpcy5yb290KS5xdWVyeVNlbGVjdG9yQWxsKCJjb250ZW50IikpKSxmLGg9MDtmPWRbaF07aCsrKXtmPVBvbHltZXIuZG9tKGYpLmdldERpc3RyaWJ1dGVkTm9kZXMoKTtmb3IodmFyIGssdD0wO2s9Zlt0XTt0KyspaWYoay5jbGFzc0xpc3QmJmsuY2xhc3NMaXN0LmNvbnRhaW5zKCJ0aXRsZSIpKWlmKGsuaWQpYi5wdXNoKGsuaWQpO2Vsc2V7dmFyIGw9InBhcGVyLXRvb2xiYXItbGFiZWwtIitNYXRoLmZsb29yKDFFNCpNYXRoLnJhbmRvbSgpKTtrLmlkPWw7Yi5wdXNoKGwpfX0wPApiLmxlbmd0aCYmdGhpcy5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsYi5qb2luKCIgIikpfSxfY29tcHV0ZUJhckV4dHJhQ2xhc3NlczpmdW5jdGlvbihiKXtyZXR1cm4gYj9iKygianVzdGlmaWVkIj09PWI/IiI6Ii1qdXN0aWZpZWQiKToiIn19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scy90Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLXNjYWxlLWFuZC1jb2xvci1jb250cm9scyIscHJvcGVydGllczp7Y29uZmlndXJhdGlvbjpPYmplY3Qsc2Vzc2lvbkdyb3VwczpBcnJheSxvcHRpb25zOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsdmFsdWU6bnVsbH19LG9ic2VydmVyczpbIl9jb25maWd1cmF0aW9uQ2hhbmdlZChjb25maWd1cmF0aW9uLiopIiwiX3Vuc2VsZWN0RGlzYWJsZWRMb2dTY2FsZXMoc2Vzc2lvbkdyb3Vwcy4qKSJdLF9jb25maWd1cmF0aW9uQ2hhbmdlZCgpe2NvbnN0IGI9dGhpcy5jb25maWd1cmF0aW9uLnZpc2libGVTY2hlbWEsZD10aGlzLmNvbmZpZ3VyYXRpb24uc2NoZW1hLGY9e2NvbHVtbnM6Yi5ocGFyYW1JbmZvcy5tYXAoKGgsayk9Pih7bmFtZTp0Zi5ocGFyYW1zLnV0aWxzLmhwYXJhbU5hbWUoaCksaW5kZXg6ayxhYnNvbHV0ZUluZGV4OnRmLmhwYXJhbXMudXRpbHMuZ2V0QWJzb2x1dGVDb2x1bW5JbmRleChkLGIsayksc2NhbGU6dGhpcy5faXNOdW1lcmljQ29sdW1uKGspPwoiTElORUFSIjoiTk9OX05VTUVSSUMifSkpLmNvbmNhdChiLm1ldHJpY0luZm9zLm1hcCgoaCxrKT0+e2srPWIuaHBhcmFtSW5mb3MubGVuZ3RoO3JldHVybntzY2FsZToiTElORUFSIixuYW1lOnRmLmhwYXJhbXMudXRpbHMubWV0cmljTmFtZShoKSxpbmRleDprLGFic29sdXRlSW5kZXg6dGYuaHBhcmFtcy51dGlscy5nZXRBYnNvbHV0ZUNvbHVtbkluZGV4KGQsYixrKX19KSksbWluQ29sb3I6IiMwMDAwRkYiLG1heENvbG9yOiIjRkYwMDAwIixjb25maWd1cmF0aW9uOnRoaXMuY29uZmlndXJhdGlvbn07dGhpcy5zZXQoIm9wdGlvbnMiLGYpO1BvbHltZXIuZG9tLmZsdXNoKCk7dGhpcy5zZXQoIm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4Iix0aGlzLl9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCkpfSxfdW5zZWxlY3REaXNhYmxlZExvZ1NjYWxlcygpe251bGwhPT10aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5jb2x1bW5zLmZvckVhY2goYj0+e2NvbnN0IGQ9Im9wdGlvbnMuY29sdW1ucy4iKwpiLmluZGV4O3RoaXMuX2FsbG93TG9nU2NhbGUoYil8fCJMT0ciIT09Yi5zY2FsZXx8dGhpcy5zZXQoZCsiLnNjYWxlIiwiTElORUFSIil9KX0sX2FsbG93TG9nU2NhbGUoYil7aWYoIXRoaXMuX2lzTnVtZXJpY0NvbHVtbihiLmluZGV4KXx8IXRoaXMuc2Vzc2lvbkdyb3VwcylyZXR1cm4hMTtjb25zdCBbZCxmXT10Zi5ocGFyYW1zLnV0aWxzLnZpc2libGVOdW1lcmljQ29sdW1uRXh0ZW50KHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3VwcyxiLmluZGV4KTtyZXR1cm4gMDxkfHwwPmZ9LF9pc051bWVyaWNDb2x1bW4oYil7cmV0dXJuIGI+PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aHx8IkRBVEFfVFlQRV9GTE9BVDY0Ij09PXRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zW2JdLnR5cGV9LF9kZWZhdWx0Q29sb3JCeUNvbHVtbkluZGV4KCl7aWYoMDx0aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGgpcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi52aXNpYmxlU2NoZW1hLmhwYXJhbUluZm9zLmxlbmd0aDsKY29uc3QgYj10aGlzLmNvbmZpZ3VyYXRpb24udmlzaWJsZVNjaGVtYS5ocGFyYW1JbmZvcy5maW5kSW5kZXgoZD0+IkRBVEFfVFlQRV9GTE9BVDY0Ij09PWQudHlwZSk7aWYoLTEhPT1iKXJldHVybiBifX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWFjdGl2ZS1pdGVtLWJlaGF2aW9yLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307CnZhYWRpbi5lbGVtZW50cy5ncmlkLkFjdGl2ZUl0ZW1CZWhhdmlvcj17cHJvcGVydGllczp7YWN0aXZlSXRlbTp7dHlwZTpPYmplY3Qsbm90aWZ5OiEwLHZhbHVlOm51bGx9fSxsaXN0ZW5lcnM6eyJjZWxsLWFjdGl2YXRlIjoiX2FjdGl2YXRlSXRlbSJ9LG9ic2VydmVyczpbIl9hY3RpdmVJdGVtQ2hhbmdlZChhY3RpdmVJdGVtKSJdLF9hY3RpdmF0ZUl0ZW06ZnVuY3Rpb24oYil7dmFyIGQ9Yi5kZXRhaWwubW9kZWwuaXRlbTt0aGlzLmFjdGl2ZUl0ZW09dGhpcy5hY3RpdmVJdGVtIT09ZD9kOm51bGw7Yi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX0sX2FjdGl2ZUl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKCl7dGhpcy4kLnNjcm9sbGVyLl9waHlzaWNhbEl0ZW1zJiZ0aGlzLiQuc2Nyb2xsZXIuX3BoeXNpY2FsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihiKXt0aGlzLl91cGRhdGVJdGVtKGIsYi5pdGVtKX0uYmluZCh0aGlzKSl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC10YWJsZS1zY3JvbGwtYmVoYXZpb3IuaHRtbC5qcwp3aW5kb3cudmFhZGluPXdpbmRvdy52YWFkaW58fHt9O3ZhYWRpbi5lbGVtZW50cz12YWFkaW4uZWxlbWVudHN8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkPXZhYWRpbi5lbGVtZW50cy5ncmlkfHx7fTsKdmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVTY3JvbGxCZWhhdmlvckltcGw9e3Byb3BlcnRpZXM6e192aWR4T2Zmc2V0Ont0eXBlOk51bWJlcix2YWx1ZTowfSxpb3M6e3R5cGU6Qm9vbGVhbix2YWx1ZTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9pUCg/OmhvbmV8YWQ7KD86IFU7KT8gQ1BVKSBPUyAoXGQrKS8pLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZml4ZWRTZWN0aW9uczp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMCxjb21wdXRlZDoiX2hhc0ZpeGVkU2VjdGlvbnMoc2Nyb2xsYmFyV2lkdGgpIn0sX2Zyb3plbkNlbGxzOnt0eXBlOkFycmF5LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuW119fSxzY3JvbGxpbmc6e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9fSxyZWFkeTpmdW5jdGlvbigpe3RoaXMuc2Nyb2xsVGFyZ2V0PXRoaXMuJC50YWJsZX0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmxpc3Rlbih0aGlzLnNjcm9sbFRhcmdldCwid2hlZWwiLAoiX29uV2hlZWwiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMuc2Nyb2xsVGFyZ2V0LCJ3aGVlbCIsIl9vbldoZWVsIil9LHNjcm9sbFRvU2NhbGVkSW5kZXg6ZnVuY3Rpb24oYil7dGhpcy5fcGVuZGluZ1Njcm9sbFRvU2NhbGVkSW5kZXg9bnVsbDt0aGlzLiQuaXRlbXMuc3R5bGUuYm9yZGVyVG9wV2lkdGh8fCh0aGlzLl9wZW5kaW5nU2Nyb2xsVG9TY2FsZWRJbmRleD1iKTtiPU1hdGgubWluKE1hdGgubWF4KGIsMCksdGhpcy5zaXplLTEpO3RoaXMuJC50YWJsZS5zY3JvbGxUb3A9Yi90aGlzLnNpemUqdGhpcy4kLnRhYmxlLnNjcm9sbEhlaWdodDt0aGlzLl9zY3JvbGxIYW5kbGVyKCk7dGhpcy5zY3JvbGxUb0luZGV4KGItdGhpcy5fdmlkeE9mZnNldCk7dGhpcy5fcmVzZXRTY3JvbGxQb3NpdGlvbih0aGlzLl9zY3JvbGxQb3NpdGlvbik7dGhpcy5fc2Nyb2xsSGFuZGxlcigpO3RoaXMuX3ZpZHhPZmZzZXQrdGhpcy5sYXN0VmlzaWJsZUluZGV4PT09dGhpcy5zaXplLQoxJiYodGhpcy4kLnRhYmxlLnNjcm9sbFRvcD10aGlzLiQudGFibGUuc2Nyb2xsSGVpZ2h0LXRoaXMuJC50YWJsZS5vZmZzZXRIZWlnaHQsdGhpcy5fc2Nyb2xsSGFuZGxlcigpKX0sX2hhc0ZpeGVkU2VjdGlvbnM6ZnVuY3Rpb24oYil7cmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0VkZ2UvKSYmMD09PWJ9LF9vbldoZWVsOmZ1bmN0aW9uKGIpe2lmKCFiLmN0cmxLZXkmJiF0aGlzLl9oYXNTY3JvbGxlZEFuY2VzdG9yKGIudGFyZ2V0LGIuZGVsdGFYLGIuZGVsdGFZKSl7dmFyIGQ9dGhpcy4kLnRhYmxlLGY9Yi5kZWx0YVk7MT09PWIuZGVsdGFNb2RlJiYoZio9Z3JpZC4kLnNjcm9sbGVyLl9waHlzaWNhbEF2ZXJhZ2UpO3ZhciBoPU1hdGguYWJzKGIuZGVsdGFYKStNYXRoLmFicyhmKTt0aGlzLl9jYW5TY3JvbGwoZCxiLmRlbHRhWCxmKT8oYi5wcmV2ZW50RGVmYXVsdCgpLGQuc2Nyb2xsVG9wKz1mLGQuc2Nyb2xsTGVmdCs9Yi5kZWx0YVgsdGhpcy5fc2Nyb2xsSGFuZGxlcigpLAp0aGlzLl9oYXNSZXNpZHVhbE1vbWVudHVtPSEwLHRoaXMuX2lnbm9yZU5ld1doZWVsPXRoaXMuZGVib3VuY2UoImlnbm9yZS1uZXctd2hlZWwiLGZ1bmN0aW9uKCl7dGhpcy5faWdub3JlTmV3V2hlZWw9bnVsbH0sNTAwKSk6dGhpcy5faGFzUmVzaWR1YWxNb21lbnR1bSYmaDw9dGhpcy5fcHJldmlvdXNNb21lbnR1bXx8dGhpcy5faWdub3JlTmV3V2hlZWw/Yi5wcmV2ZW50RGVmYXVsdCgpOmg+dGhpcy5fcHJldmlvdXNNb21lbnR1bSYmKHRoaXMuX2hhc1Jlc2lkdWFsTW9tZW50dW09ITEpO3RoaXMuX3ByZXZpb3VzTW9tZW50dW09aH19LF9oYXNTY3JvbGxlZEFuY2VzdG9yOmZ1bmN0aW9uKGIsZCxmKXtpZih0aGlzLl9jYW5TY3JvbGwoYixkLGYpKXJldHVybiEwO2lmKCJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQiIT09Yi5sb2NhbE5hbWUmJmIhPT10aGlzJiZiLnBhcmVudEVsZW1lbnQpcmV0dXJuIHRoaXMuX2hhc1Njcm9sbGVkQW5jZXN0b3IoYi5wYXJlbnRFbGVtZW50LGQsZil9LApfY2FuU2Nyb2xsOmZ1bmN0aW9uKGIsZCxmKXtyZXR1cm4gMDxmJiZiLnNjcm9sbFRvcDxiLnNjcm9sbEhlaWdodC1iLm9mZnNldEhlaWdodHx8MD5mJiYwPGIuc2Nyb2xsVG9wfHwwPGQmJmIuc2Nyb2xsTGVmdDxiLnNjcm9sbFdpZHRoLWIub2Zmc2V0V2lkdGh8fDA+ZCYmMDxiLnNjcm9sbExlZnR9LF9zY3JvbGxIYW5kbGVyOmZ1bmN0aW9uKCl7dmFyIGI9TWF0aC5tYXgoMCxNYXRoLm1pbih0aGlzLl9tYXhTY3JvbGxUb3AsdGhpcy5fc2Nyb2xsVG9wKSksZD1iLXRoaXMuX3Njcm9sbFBvc2l0aW9uLGY9dGhpcy5fcmF0aW8saD0wLGs9dGhpcy5faGlkZGVuQ29udGVudFNpemUsdD1mLGw9W107dGhpcy5fc2Nyb2xsUG9zaXRpb249Yjt0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGw7dmFyIHA9dGhpcy5fc2Nyb2xsQm90dG9tO3ZhciBtPXRoaXMuX3BoeXNpY2FsQm90dG9tO2lmKE1hdGguYWJzKGQpPnRoaXMuX3BoeXNpY2FsU2l6ZSl0aGlzLl9waHlzaWNhbFRvcCs9CmQsaD1NYXRoLnJvdW5kKGQvdGhpcy5fcGh5c2ljYWxBdmVyYWdlKTtlbHNlIGlmKDA+ZCl7dmFyIG49Yi10aGlzLl9waHlzaWNhbFRvcDtsPXRoaXMuX3ZpcnR1YWxTdGFydDt2YXIgcT1bXTt2YXIgdT10aGlzLl9waHlzaWNhbEVuZDtmb3IodD1uL2s7dDxmJiZoPHRoaXMuX3BoeXNpY2FsQ291bnQmJjA8bC1oJiZtLXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudCh1KT5wOyluPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudCh1KSx0Kz1uL2ssbS09bixxLnB1c2godSksaCsrLHU9MD09PXU/dGhpcy5fcGh5c2ljYWxDb3VudC0xOnUtMTtsPXE7aD0taH1lbHNlIGlmKDA8ZCl7dmFyIHg9dGhpcy5fdmlydHVhbEVuZCxBPXRoaXMuX3ZpcnR1YWxDb3VudC0xO3E9W107dT10aGlzLl9waHlzaWNhbFN0YXJ0O2Zvcih0PShtLXApL2s7dDxmJiZoPHRoaXMuX3BoeXNpY2FsQ291bnQmJngraDxBJiZ0aGlzLl9waHlzaWNhbFRvcCt0aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQodSk8CmI7KW49dGhpcy5fZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50KHUpLHQrPW4vayx0aGlzLl9waHlzaWNhbFRvcCs9bixxLnB1c2godSksaCsrLHU9KHUrMSkldGhpcy5fcGh5c2ljYWxDb3VudH10aGlzLl92aXJ0dWFsQ291bnQ8dGhpcy5zaXplJiZ0aGlzLl9hZGp1c3RWaXJ0dWFsSW5kZXhPZmZzZXQoZCk7MD09PWg/KG08cHx8dGhpcy5fcGh5c2ljYWxUb3A+YikmJnRoaXMuX2luY3JlYXNlUG9vbElmTmVlZGVkKCk6KHRoaXMuX3ZpcnR1YWxTdGFydCs9aCx0aGlzLl9waHlzaWNhbFN0YXJ0Kz1oLHRoaXMuX3VwZGF0ZShxLGwpKTt0aGlzLl90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHMoKTt0aGlzLmhhc0F0dHJpYnV0ZSgicmVvcmRlcmluZyIpfHwodGhpcy5zY3JvbGxpbmc9ITApO3RoaXMuZGVib3VuY2UoInZhYWRpbi1ncmlkLXNjcm9sbGluZyIsZnVuY3Rpb24oKXt0aGlzLnNjcm9sbGluZz0hMTt0aGlzLl9yZW9yZGVyUm93cygpfSwxMDApfSxfYWRqdXN0VmlydHVhbEluZGV4T2Zmc2V0OmZ1bmN0aW9uKGIpe2lmKDFFNDwKTWF0aC5hYnMoYikpdGhpcy5fbm9TY2FsZT90aGlzLl9ub1NjYWxlPSExOihiPU1hdGgucm91bmQodGhpcy5fc2Nyb2xsUG9zaXRpb24vdGhpcy5fc2Nyb2xsSGVpZ2h0KjFFMykvMUUzLHRoaXMuX3ZpZHhPZmZzZXQ9TWF0aC5yb3VuZChiKnRoaXMuc2l6ZS1iKnRoaXMuX3ZpcnR1YWxDb3VudCksMD09PXRoaXMuX3Njcm9sbFRvcCYmdGhpcy5zY3JvbGxUb0luZGV4KDApKTtlbHNle2I9dGhpcy5fdmlkeE9mZnNldHx8MDswPT09dGhpcy5fc2Nyb2xsVG9wPyh0aGlzLl92aWR4T2Zmc2V0PTAsYiE9PXRoaXMuX3ZpZHhPZmZzZXQmJnRoaXMuc2Nyb2xsVG9JbmRleCgwKSk6MUUzPnRoaXMuZmlyc3RWaXNpYmxlSW5kZXgmJjA8dGhpcy5fdmlkeE9mZnNldCYmKHRoaXMuX3ZpZHhPZmZzZXQtPU1hdGgubWluKHRoaXMuX3ZpZHhPZmZzZXQsMTAwKSx0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy5maXJzdFZpc2libGVJbmRleCsoYi10aGlzLl92aWR4T2Zmc2V0KSsxKSx0aGlzLl9ub1NjYWxlPQohMCk7dmFyIGQ9dGhpcy5zaXplLXRoaXMuX3ZpcnR1YWxDb3VudDt0aGlzLl9zY3JvbGxUb3A+PXRoaXMuX21heFNjcm9sbFRvcD8odGhpcy5fdmlkeE9mZnNldD1kLGIhPT10aGlzLl92aWR4T2Zmc2V0JiZ0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy5fdmlydHVhbENvdW50KSk6dGhpcy5maXJzdFZpc2libGVJbmRleD50aGlzLl92aXJ0dWFsQ291bnQtMUUzJiZ0aGlzLl92aWR4T2Zmc2V0PGQmJih0aGlzLl92aWR4T2Zmc2V0Kz1NYXRoLm1pbihkLXRoaXMuX3ZpZHhPZmZzZXQsMTAwKSx0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy5maXJzdFZpc2libGVJbmRleC0odGhpcy5fdmlkeE9mZnNldC1iKSksdGhpcy5fbm9TY2FsZT0hMCl9fSxfcmVvcmRlclJvd3M6ZnVuY3Rpb24oKXt2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzLiQuaXRlbXMpLGQ9Yi5xdWVyeVNlbGVjdG9yQWxsKCIudmFhZGluLWdyaWQtcm93IiksZj1kLmxlbmd0aC0oZFswXS5pbmRleC0odGhpcy5fdmlydHVhbFN0YXJ0K3RoaXMuX3ZpZHhPZmZzZXQpKTsKaWYoZjxkLmxlbmd0aC8yKWZvcih2YXIgaD0wO2g8ZjtoKyspYi5hcHBlbmRDaGlsZChkW2hdKTtlbHNlIGZvcig7ZjxkLmxlbmd0aDtmKyspYi5pbnNlcnRCZWZvcmUoZFtmXSxkWzBdKX0sX2Zyb3plbkNlbGxzQ2hhbmdlZDpmdW5jdGlvbigpe3RoaXMuZGVib3VuY2UoImNhY2hlLWVsZW1lbnRzIixmdW5jdGlvbigpe1BvbHltZXIuZG9tKHRoaXMuZG9tSG9zdC5yb290KS5xdWVyeVNlbGVjdG9yQWxsKCIudmFhZGluLWdyaWQtY2VsbCIpLmZvckVhY2goZnVuY3Rpb24oYil7Yi5zdHlsZS50cmFuc2Zvcm09IiJ9KTt0aGlzLl9mcm96ZW5DZWxscz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChQb2x5bWVyLmRvbSh0aGlzLmRvbUhvc3Qucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiW2Zyb3plbl0iKSk7dGhpcy5fdHJhbnNsYXRlU3RhdGlvbmFyeUVsZW1lbnRzKCl9KTt0aGlzLl91cGRhdGVMYXN0RnJvemVuKCl9LF91cGRhdGVMYXN0RnJvemVuOmZ1bmN0aW9uKCl7aWYodGhpcy5jb2x1bW5UcmVlKXt2YXIgYj0KdGhpcy5jb2x1bW5UcmVlW3RoaXMuY29sdW1uVHJlZS5sZW5ndGgtMV0uc2xpY2UoMCk7Yi5zb3J0KGZ1bmN0aW9uKGYsaCl7cmV0dXJuIGYuX29yZGVyLWguX29yZGVyfSk7dmFyIGQ9Yi5yZWR1Y2UoZnVuY3Rpb24oZixoLGspe2guX2xhc3RGcm96ZW49ITE7cmV0dXJuIGguZnJvemVuJiYhaC5oaWRkZW4/azpmfSx2b2lkIDApO3ZvaWQgMCE9PWQmJihiW2RdLl9sYXN0RnJvemVuPSEwKX19LF90cmFuc2xhdGVTdGF0aW9uYXJ5RWxlbWVudHM6ZnVuY3Rpb24oKXt0aGlzLmZpeGVkU2VjdGlvbnM/KHRoaXMuJC5pdGVtcy5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKC10aGlzLl9zY3JvbGxMZWZ0fHwwLC10aGlzLl9zY3JvbGxUb3B8fDApLHRoaXMuJC5mb290ZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgtdGhpcy5fc2Nyb2xsTGVmdHx8MCwwKSk6dGhpcy4kLmZvb3Rlci5zdHlsZS50cmFuc2Zvcm09CnRoaXMuJC5oZWFkZXIuc3R5bGUudHJhbnNmb3JtPXRoaXMuX2dldFRyYW5zbGF0ZSgwLHRoaXMuX3Njcm9sbFRvcCk7Zm9yKHZhciBiPXRoaXMuX2dldFRyYW5zbGF0ZSh0aGlzLl9zY3JvbGxMZWZ0LDApLGQ9MDtkPHRoaXMuX2Zyb3plbkNlbGxzLmxlbmd0aDtkKyspdGhpcy5fZnJvemVuQ2VsbHNbZF0uc3R5bGUudHJhbnNmb3JtPWJ9LF9nZXRUcmFuc2xhdGU6ZnVuY3Rpb24oYixkKXtyZXR1cm4idHJhbnNsYXRlKCIrYisicHgsIitkKyJweCkifX07dmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVTY3JvbGxCZWhhdmlvcj1bUG9seW1lci5Jcm9uU2Nyb2xsVGFyZ2V0QmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVTY3JvbGxCZWhhdmlvckltcGxdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWNlbGwtY2xpY2stYmVoYXZpb3IuaHRtbC5qcwp3aW5kb3cudmFhZGluPXdpbmRvdy52YWFkaW58fHt9O3ZhYWRpbi5lbGVtZW50cz12YWFkaW4uZWxlbWVudHN8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkPXZhYWRpbi5lbGVtZW50cy5ncmlkfHx7fTsKdmFhZGluLmVsZW1lbnRzLmdyaWQuQ2VsbENsaWNrQmVoYXZpb3I9e2xpc3RlbmVyczp7Y2xpY2s6Il9vbkNsaWNrIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9jZWxsQ29udGVudEZvY3VzSGFuZGxlcj1mdW5jdGlvbihiKXtiLnRhcmdldCE9PXRoaXMuX2NlbGxDb250ZW50JiZ0aGlzLmZpcmUoImNlbGwtY29udGVudC1mb2N1cyIse2NlbGw6dGhpc30pfS5iaW5kKHRoaXMpO3RoaXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLHRoaXMuX2NlbGxDb250ZW50Rm9jdXNIYW5kbGVyLCEwKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIix0aGlzLl9jZWxsQ29udGVudEZvY3VzSGFuZGxlciwhMCl9LF9vbkNsaWNrOmZ1bmN0aW9uKGIpeyJ2YWFkaW4tZ3JpZC1zb3J0ZXIiIT09dGhpcy5sb2NhbE5hbWUmJnRoaXMuZmlyZSgiY2VsbC1mb2N1cyIse2NlbGw6dGhpc30pO2lmKHRoaXMuX2NlbGxDbGljayl7dmFyIGQ9UG9seW1lci5kb20oYikubG9jYWxUYXJnZXQ7CmQuZ2V0RGlzdHJpYnV0ZWROb2RlcyYmKGQ9UG9seW1lci5kb20oZCkuZ2V0RGlzdHJpYnV0ZWROb2RlcygpWzBdKTt2YXIgZj1Qb2x5bWVyLmRvbShiKS5wYXRoO2Y9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZiwwLGYuaW5kZXhPZihkKSsxKTtkLmNvbnRhaW5zKHRoaXMudGFyZ2V0JiZ0aGlzLnRhcmdldC5yb290LmFjdGl2ZUVsZW1lbnR8fGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpfHxmLnNvbWUodGhpcy5faXNGb2N1c2FibGUpfHx0aGlzLl9jZWxsQ2xpY2soYil9fSxfaXNGb2N1c2FibGU6ZnVuY3Rpb24oYil7dmFyIGQ9UG9seW1lci5kb20oYikucGFyZW50Tm9kZTtkPS0xIT09QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChQb2x5bWVyLmRvbShkKS5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdLCBidXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBvYmplY3QsIGlmcmFtZSwgbGFiZWwsIGFbaHJlZl0sIGFyZWFbaHJlZl0iKSxiKTtyZXR1cm4hYi5kaXNhYmxlZCYmCmR9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC10YWJsZS1jZWxsLmh0bWwuanMKKGZ1bmN0aW9uKCl7dmFyIGI9e3Byb3BlcnRpZXM6e2NvbHVtbjpPYmplY3QsZXhwYW5kZWQ6Qm9vbGVhbixmbGV4R3JvdzpOdW1iZXIsY29sU3BhbjpOdW1iZXIsZm9jdXNlZDp7dHlwZTpCb29sZWFuLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sZnJvemVuOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSxsYXN0RnJvemVuOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSxoaWRkZW46e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LGluc3RhbmNlOk9iamVjdCxpbmRleDpOdW1iZXIsaXRlbTpPYmplY3Qsc2VsZWN0ZWQ6Qm9vbGVhbix0ZW1wbGF0ZTpPYmplY3QsdGFyZ2V0Ok9iamVjdCx3aWR0aDpTdHJpbmcsb3JkZXI6TnVtYmVyLHJlb3JkZXJTdGF0dXM6e3R5cGU6U3RyaW5nLHJlZmxlY3RUb0F0dHJpYnV0ZTohMH0sX2NoaWxkQ29sdW1uczpBcnJheSxfY2VsbENvbnRlbnQ6T2JqZWN0LF9pbnNlcnRpb25Qb2ludDpPYmplY3QsCl90ZW1wbGF0aXplcjpPYmplY3R9LG9ic2VydmVyczoiX2NvbHVtbkNoYW5nZWQoY29sdW1uKTtfY2VsbEF0dGFjaGVkKGNvbHVtbiwgaXNBdHRhY2hlZCk7X2V4cGFuZGVkQ2hhbmdlZChleHBhbmRlZCwgaW5zdGFuY2UpO19mbGV4R3Jvd0NoYW5nZWQoZmxleEdyb3cpO19pbmRleENoYW5nZWQoaW5kZXgsIGluc3RhbmNlKTtfaXRlbUNoYW5nZWQoaXRlbSwgaW5zdGFuY2UpO19pbnN0YW5jZUNoYW5nZWQoaW5zdGFuY2UsIHRhcmdldCk7X3NlbGVjdGVkQ2hhbmdlZChzZWxlY3RlZCwgaW5zdGFuY2UpO190b2dnbGVDb250ZW50KGlzQXR0YWNoZWQsIF9jZWxsQ29udGVudCwgX2luc2VydGlvblBvaW50KTtfdG9nZ2xlSW5zdGFuY2UoaXNBdHRhY2hlZCwgX3RlbXBsYXRpemVyLCBpbnN0YW5jZSk7X3dpZHRoQ2hhbmdlZCh3aWR0aCk7X29yZGVyQ2hhbmdlZChvcmRlcik7X3Zpc2libGVDaGlsZENvbHVtbnNDaGFuZ2VkKF92aXNpYmxlQ2hpbGRDb2x1bW5zKTtfY2hpbGRDb2x1bW5zQ2hhbmdlZChfY2hpbGRDb2x1bW5zKSIuc3BsaXQoIjsiKSwKcmVhZHk6ZnVuY3Rpb24oKXt0aGlzLmNsYXNzTGlzdC5hZGQoInZhYWRpbi1ncmlkLWNlbGwiKTshMT09PVBvbHltZXIuU2V0dGluZ3MudXNlU2hhZG93JiYodGhpcy5jbGFzc0xpc3QuYWRkKCJzdHlsZS1zY29wZSIpLHRoaXMuY2xhc3NMaXN0LmFkZCgidmFhZGluLWdyaWQiKSl9LF9jb2x1bW5DaGFuZ2VkOmZ1bmN0aW9uKGQpe3RoaXMuZmxleEdyb3c9ZC5mbGV4R3Jvdzt0aGlzLmZyb3plbj1kLmZyb3plbjt0aGlzLmxhc3RGcm96ZW49ZC5fbGFzdEZyb3plbjt0aGlzLmhlYWRlclRlbXBsYXRlPWQuaGVhZGVyVGVtcGxhdGU7dGhpcy5mb290ZXJUZW1wbGF0ZT1kLmZvb3RlclRlbXBsYXRlO3RoaXMudGVtcGxhdGU9ZC50ZW1wbGF0ZTt0aGlzLndpZHRoPWQud2lkdGg7dGhpcy5oaWRkZW49ZC5oaWRkZW47dGhpcy5yZXNpemFibGU9ZC5yZXNpemFibGU7dGhpcy5fY2hpbGRDb2x1bW5zPWQuX2NoaWxkQ29sdW1uczt0aGlzLm9yZGVyPWQuX29yZGVyO2QuY29sU3BhbiYmKHRoaXMuY29sU3Bhbj0KZC5jb2xTcGFuKTt0aGlzLmxpc3RlbihkLCJwcm9wZXJ0eS1jaGFuZ2VkIiwiX2NvbHVtblByb3BDaGFuZ2VkIil9LF9jZWxsQXR0YWNoZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiYoZj90aGlzLmxpc3RlbihkLCJwcm9wZXJ0eS1jaGFuZ2VkIiwiX2NvbHVtblByb3BDaGFuZ2VkIik6dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuaXNBdHRhY2hlZHx8dGhpcy51bmxpc3RlbihkLCJwcm9wZXJ0eS1jaGFuZ2VkIiwiX2NvbHVtblByb3BDaGFuZ2VkIil9KSl9LF9jb2x1bW5Qcm9wQ2hhbmdlZDpmdW5jdGlvbihkKXtkLnRhcmdldD09dGhpcy5jb2x1bW4mJih0aGlzW2QuZGV0YWlsLnBhdGhdPWQuZGV0YWlsLnZhbHVlKX0sX2V4cGFuZGVkQ2hhbmdlZDpmdW5jdGlvbihkLGYpe3ZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJihmLl9fZXhwYW5kZWRfXz1kLGYuZXhwYW5kZWQ9ZCl9LF9mbGV4R3Jvd0NoYW5nZWQ6ZnVuY3Rpb24oZCl7dGhpcy5zdHlsZS5mbGV4R3Jvdz0KZH0sX2luZGV4Q2hhbmdlZDpmdW5jdGlvbihkLGYpe3ZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJihmLmluZGV4PWQpfSxfaXRlbUNoYW5nZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiYoZi5pdGVtPWQpfSxfc2VsZWN0ZWRDaGFuZ2VkOmZ1bmN0aW9uKGQsZil7dm9pZCAwIT09ZCYmdm9pZCAwIT09ZiYmKGYuX19zZWxlY3RlZF9fPWQsZi5zZWxlY3RlZD1kKX0sX2NoaWxkQ29sdW1uc0NoYW5nZWQ6ZnVuY3Rpb24oZCl7dGhpcy5jb2xTcGFuPWQubGVuZ3RofSxfdG9nZ2xlQ29udGVudDpmdW5jdGlvbihkLGYsaCl7dm9pZCAwIT09ZCYmdm9pZCAwIT09ZiYmdm9pZCAwIT09aCYmKGQ/KFBvbHltZXIuZG9tKGYpLnBhcmVudE5vZGUhPT10aGlzLnRhcmdldCYmUG9seW1lci5kb20odGhpcy50YXJnZXQpLmFwcGVuZENoaWxkKGYpLFBvbHltZXIuZG9tKHRoaXMpLmFwcGVuZENoaWxkKGgpKTp0aGlzLmFzeW5jKGZ1bmN0aW9uKCl7dGhpcy5pc0F0dGFjaGVkfHxQb2x5bWVyLmRvbShmKS5wYXJlbnROb2RlIT09CnRoaXMudGFyZ2V0fHxQb2x5bWVyLmRvbSh0aGlzLnRhcmdldCkucmVtb3ZlQ2hpbGQoZil9KSl9LF90b2dnbGVJbnN0YW5jZTpmdW5jdGlvbihkLGYsaCl7dm9pZCAwIT09ZCYmdm9pZCAwIT09ZiYmdm9pZCAwIT09aCYmKGQ/Zi5hZGRJbnN0YW5jZShoKTpmLnJlbW92ZUluc3RhbmNlKGgpKX0sX3dpZHRoQ2hhbmdlZDpmdW5jdGlvbihkKXt0aGlzLnN0eWxlLndpZHRoPWR9LF9vcmRlckNoYW5nZWQ6ZnVuY3Rpb24oZCl7dGhpcy5zdHlsZS5vcmRlcj1kfSxfdGVtcGxhdGVDaGFuZ2VkOmZ1bmN0aW9uKGQpe3RoaXMuaW5zdGFuY2U9ZC50ZW1wbGF0aXplci5jcmVhdGVJbnN0YW5jZSgpO3RoaXMuX3RlbXBsYXRpemVyPWQudGVtcGxhdGl6ZXJ9LF9pbnN0YW5jZUNoYW5nZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiYodGhpcy5zdHlsZS5oZWlnaHQ9IiIsdGhpcy5fY2VsbENvbnRlbnQ9dGhpcy5fY2VsbENvbnRlbnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCIpLApkPSJ2YWFkaW4tZ3JpZC1jZWxsLWNvbnRlbnQtIisodmFhZGluLmVsZW1lbnRzLmdyaWQuX2NvbnRlbnRJbmRleD12YWFkaW4uZWxlbWVudHMuZ3JpZC5fY29udGVudEluZGV4KzF8fDApLHRoaXMuX2NlbGxDb250ZW50LmlubmVySFRNTD0iIixQb2x5bWVyLmRvbSh0aGlzLl9jZWxsQ29udGVudCkuYXBwZW5kQ2hpbGQodGhpcy5pbnN0YW5jZS5yb290KSx0aGlzLl9jZWxsQ29udGVudC5zZXRBdHRyaWJ1dGUoImlkIixkKSxQb2x5bWVyLkVsZW1lbnQ/KHRoaXMuX2NlbGxDb250ZW50LnNldEF0dHJpYnV0ZSgic2xvdCIsZCksdGhpcy5faW5zZXJ0aW9uUG9pbnQ9dGhpcy5faW5zZXJ0aW9uUG9pbnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNsb3QiKSx0aGlzLl9pbnNlcnRpb25Qb2ludC5zZXRBdHRyaWJ1dGUoIm5hbWUiLGQpKToodGhpcy5faW5zZXJ0aW9uUG9pbnQ9dGhpcy5faW5zZXJ0aW9uUG9pbnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNvbnRlbnQiKSx0aGlzLl9pbnNlcnRpb25Qb2ludC5zZXRBdHRyaWJ1dGUoInNlbGVjdCIsCiIjIitkKSkpfX07UG9seW1lcih7aXM6InZhYWRpbi1ncmlkLXRhYmxlLWNlbGwiLGJlaGF2aW9yczpbYix2YWFkaW4uZWxlbWVudHMuZ3JpZC5DZWxsQ2xpY2tCZWhhdmlvcl0sb2JzZXJ2ZXJzOlsiX3RlbXBsYXRlQ2hhbmdlZCh0ZW1wbGF0ZSkiXSxfY2VsbENsaWNrOmZ1bmN0aW9uKGQpe2QuZGVmYXVsdFByZXZlbnRlZHx8dGhpcy5maXJlKCJjZWxsLWFjdGl2YXRlIix7bW9kZWw6dGhpcy5pbnN0YW5jZX0pfX0pO1BvbHltZXIoe2lzOiJ2YWFkaW4tZ3JpZC10YWJsZS1oZWFkZXItY2VsbCIscHJvcGVydGllczp7aGVhZGVyVGVtcGxhdGU6T2JqZWN0LHJlc2l6YWJsZTpCb29sZWFuLGNvbHVtblJlc2l6aW5nOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfX0sYmVoYXZpb3JzOltiLHZhYWRpbi5lbGVtZW50cy5ncmlkLkNlbGxDbGlja0JlaGF2aW9yXSxvYnNlcnZlcnM6WyJfaGVhZGVyVGVtcGxhdGVDaGFuZ2VkKGhlYWRlclRlbXBsYXRlKSIsIl9pc0VtcHR5Q2hhbmdlZChfaXNFbXB0eSwgaXNBdHRhY2hlZCkiLAoiX3Jlc2l6YWJsZUNoYW5nZWQocmVzaXphYmxlKSJdLGxpc3RlbmVyczp7bW91c2Vkb3duOiJfY2FuY2VsTW91c2VEb3duT25SZXNpemUiLG1vdXNlbW92ZToiX2VuYWJsZURyYWciLG1vdXNlb3V0OiJfZGlzYWJsZURyYWciLHRvdWNoc3RhcnQ6Il9vblRvdWNoU3RhcnQiLHRvdWNobW92ZToiX29uVG91Y2hNb3ZlIix0b3VjaGVuZDoiX29uVG91Y2hFbmQiLGNvbnRleHRtZW51OiJfb25Db250ZXh0TWVudSJ9LF9vbkNvbnRleHRNZW51OmZ1bmN0aW9uKGQpe3RoaXMuX3Jlb3JkZXJHaG9zdCYmZC5wcmV2ZW50RGVmYXVsdCgpfSxfb25Ub3VjaFN0YXJ0OmZ1bmN0aW9uKGQpe2QudGFyZ2V0IT09dGhpcy5fcmVzaXplSGFuZGxlJiZ0aGlzLnRhcmdldC5jb2x1bW5SZW9yZGVyaW5nQWxsb3dlZCYmKHRoaXMuX3N0YXJ0UmVvcmRlclRpbWVvdXQ9c2V0VGltZW91dCh0aGlzLl9zdGFydFJlb3JkZXIuYmluZCh0aGlzLGQpLDEwMCkpfSxfc3RhcnRSZW9yZGVyOmZ1bmN0aW9uKGQpe3RoaXMuX3Jlb3JkZXJHaG9zdD0KdGhpcy5fZ2V0R2hvc3QoKTt0aGlzLl9yZW9yZGVyR2hvc3Quc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSI7dmFyIGY9bmV3IEN1c3RvbUV2ZW50KCJkcmFnc3RhcnQiLHtidWJibGVzOiEwfSk7dGhpcy5fY2VsbENvbnRlbnQuZGlzcGF0Y2hFdmVudChmKTt0aGlzLl9yZW9yZGVyWFk9e3g6ZC50b3VjaGVzWzBdLmNsaWVudFgtdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LHk6ZC50b3VjaGVzWzBdLmNsaWVudFktdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3B9O3RoaXMuX3VwZGF0ZUdob3N0UG9zaXRpb24oZC50b3VjaGVzWzBdLmNsaWVudFgsZC50b3VjaGVzWzBdLmNsaWVudFkpfSxfb25Ub3VjaE1vdmU6ZnVuY3Rpb24oZCl7aWYodGhpcy5fcmVvcmRlckdob3N0KXtkLnByZXZlbnREZWZhdWx0KCk7dmFyIGY9bmV3IEN1c3RvbUV2ZW50KCJkcmFnb3ZlciIse2J1YmJsZXM6ITB9KTtmLmNsaWVudFg9ZC50b3VjaGVzWzBdLmNsaWVudFg7Zi5jbGllbnRZPQpkLnRvdWNoZXNbMF0uY2xpZW50WTt2YXIgaD10aGlzLl9jb250ZW50RnJvbVBvaW50KGYuY2xpZW50WCxmLmNsaWVudFkpO2gmJmguZGlzcGF0Y2hFdmVudChmKTt0aGlzLl91cGRhdGVHaG9zdFBvc2l0aW9uKGQudG91Y2hlc1swXS5jbGllbnRYLGQudG91Y2hlc1swXS5jbGllbnRZKX1lbHNlIGNsZWFyVGltZW91dCh0aGlzLl9zdGFydFJlb3JkZXJUaW1lb3V0KX0sX3VwZGF0ZUdob3N0UG9zaXRpb246ZnVuY3Rpb24oZCxmKXtkLT10aGlzLl9yZW9yZGVyWFkueDtmPWYtdGhpcy5fcmVvcmRlclhZLnktNTA7dmFyIGg9cGFyc2VJbnQodGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLmxlZnR8fDApLGs9cGFyc2VJbnQodGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnRvcHx8MCksdD10aGlzLl9yZW9yZGVyR2hvc3QuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLmxlZnQ9aC0odC5sZWZ0LWQpKyJweCI7dGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnRvcD0Kay0odC50b3AtZikrInB4In0sX29uVG91Y2hFbmQ6ZnVuY3Rpb24oZCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3N0YXJ0UmVvcmRlclRpbWVvdXQpO3RoaXMuX3Jlb3JkZXJHaG9zdCYmKGQucHJldmVudERlZmF1bHQoKSxkPW5ldyBDdXN0b21FdmVudCgiZHJhZ2VuZCIse2J1YmJsZXM6ITB9KSx0aGlzLmRpc3BhdGNoRXZlbnQoZCksdGhpcy5fcmVvcmRlckdob3N0LnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiIsdGhpcy5fcmVvcmRlckdob3N0PW51bGwpfSxfY29udGVudEZyb21Qb2ludDpmdW5jdGlvbihkLGYpe2lmKFBvbHltZXIuU2V0dGluZ3MudXNlU2hhZG93KXt2YXIgaD10aGlzLnRhcmdldC4kLnNjcm9sbGVyO2gudG9nZ2xlQXR0cmlidXRlKCJuby1jb250ZW50LXBvaW50ZXItZXZlbnRzIiwhMCk7ZD10aGlzLmRvbUhvc3Qucm9vdC5lbGVtZW50RnJvbVBvaW50KGQsZik7aC50b2dnbGVBdHRyaWJ1dGUoIm5vLWNvbnRlbnQtcG9pbnRlci1ldmVudHMiLCExKTtpZihkJiZkLmdldENvbnRlbnRDaGlsZHJlbilyZXR1cm4gZC5nZXRDb250ZW50Q2hpbGRyZW4oUG9seW1lci5FbGVtZW50Pwoic2xvdCI6ImNvbnRlbnQiKVswXX1lbHNlIHJldHVybiBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KGQsZil9LF9nZXRHaG9zdDpmdW5jdGlvbigpe3ZhciBkPXRoaXMudGFyZ2V0LiQuc2Nyb2xsZXIuJC5yZW9yZGVyZ2hvc3Q7ZC5pbm5lclRleHQ9dGhpcy5fY2VsbENvbnRlbnQuaW5uZXJUZXh0O3ZhciBmPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuX2NlbGxDb250ZW50KTsiYm94U2l6aW5nIGRpc3BsYXkgd2lkdGggaGVpZ2h0IGJhY2tncm91bmQgYWxpZ25JdGVtcyBwYWRkaW5nIGJvcmRlciBmbGV4LWRpcmVjdGlvbiBvdmVyZmxvdyIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2Quc3R5bGVbaF09ZltoXX0sdGhpcyk7cmV0dXJuIGR9LF9lbmFibGVEcmFnOmZ1bmN0aW9uKCl7dGhpcy5fY2VsbENvbnRlbnQuZHJhZ2dhYmxlPXRoaXMudGFyZ2V0LmNvbHVtblJlb3JkZXJpbmdBbGxvd2VkJiYhd2luZG93LmdldFNlbGVjdGlvbigpLnRvU3RyaW5nKCl9LF9kaXNhYmxlRHJhZzpmdW5jdGlvbigpe3RoaXMuX2NlbGxDb250ZW50LmRyYWdnYWJsZT0KITF9LF9jYW5jZWxNb3VzZURvd25PblJlc2l6ZTpmdW5jdGlvbihkKXtkLnRhcmdldD09PXRoaXMuX3Jlc2l6ZUhhbmRsZSYmZC5wcmV2ZW50RGVmYXVsdCgpfSxfcmVzaXphYmxlQ2hhbmdlZDpmdW5jdGlvbihkKXtkPyh0aGlzLl9yZXNpemVIYW5kbGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fcmVzaXplSGFuZGxlLmNsYXNzTGlzdC5hZGQoInZhYWRpbi1ncmlkLWNvbHVtbi1yZXNpemUtaGFuZGxlIiksdGhpcy5saXN0ZW4odGhpcy5fcmVzaXplSGFuZGxlLCJ0cmFjayIsIl9vblRyYWNrIiksUG9seW1lci5kb20odGhpcykuYXBwZW5kQ2hpbGQodGhpcy5fcmVzaXplSGFuZGxlKSk6dGhpcy5fcmVzaXplSGFuZGxlJiYodGhpcy51bmxpc3Rlbih0aGlzLl9yZXNpemVIYW5kbGUsInRyYWNrIiwiX29uVHJhY2siKSxQb2x5bWVyLmRvbSh0aGlzKS5yZW1vdmVDaGlsZCh0aGlzLl9yZXNpemVIYW5kbGUpKX0sX29uVHJhY2s6ZnVuY3Rpb24oZCl7dGhpcy5jb2x1bW5SZXNpemluZz0KITA7dmFyIGY9dGhpcy5jb2x1bW47InZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1mLmxvY2FsTmFtZSYmKGY9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZi5fY2hpbGRDb2x1bW5zLDApLnNvcnQoZnVuY3Rpb24odCxsKXtyZXR1cm4gdC5fb3JkZXItbC5fb3JkZXJ9KS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXQuaGlkZGVufSkucG9wKCkpO3ZhciBoPXRoaXMuX2dldEhlYWRlckNlbGxCeUNvbHVtbihmKTtpZihoLm9mZnNldFdpZHRoKXt2YXIgaz13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShoLl9jZWxsQ29udGVudCk7Zi53aWR0aD1NYXRoLm1heCgxMCtwYXJzZUludChrLnBhZGRpbmdMZWZ0KStwYXJzZUludChrLnBhZGRpbmdSaWdodCksaC5vZmZzZXRXaWR0aCtkLmRldGFpbC54LWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQpKyJweCI7Zi5mbGV4R3Jvdz0wfUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFBvbHltZXIuZG9tKHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50KS5xdWVyeVNlbGVjdG9yQWxsKCIudmFhZGluLWdyaWQtcm93Omxhc3QtY2hpbGQgLnZhYWRpbi1ncmlkLWNlbGwiKSkuc29ydChmdW5jdGlvbih0LApsKXtyZXR1cm4gdC5jb2x1bW4uX29yZGVyLWwuY29sdW1uLl9vcmRlcn0pLmZvckVhY2goZnVuY3Rpb24odCxsLHApe2w8cC5pbmRleE9mKGgpJiYodC5jb2x1bW4ud2lkdGg9dC5vZmZzZXRXaWR0aCsicHgiLHQuY29sdW1uLmZsZXhHcm93PTApfSk7dGhpcy5jb2x1bW5SZXNpemluZyYmImVuZCI9PT1kLmRldGFpbC5zdGF0ZSYmKHRoaXMuY29sdW1uUmVzaXppbmc9ITEpO3RoaXMuZmlyZSgiY29sdW1uLXJlc2l6aW5nIil9LF9nZXRIZWFkZXJDZWxsQnlDb2x1bW46ZnVuY3Rpb24oZCl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChQb2x5bWVyLmRvbSh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgiLnZhYWRpbi1ncmlkLXJvdzpsYXN0LWNoaWxkIC52YWFkaW4tZ3JpZC1jZWxsIiksZnVuY3Rpb24oZil7cmV0dXJuIGYuY29sdW1uPT09ZH0pWzBdfSxfaGVhZGVyVGVtcGxhdGVDaGFuZ2VkOmZ1bmN0aW9uKGQpe3ZvaWQgMCE9PQpkJiYobnVsbD09PWR8fCF0aGlzLl9pc0NvbHVtblJvdyYmInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIhPT10aGlzLmNvbHVtbi5sb2NhbE5hbWU/KHRoaXMuaW5zdGFuY2U9e3Jvb3Q6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9LHRoaXMuX2lzRW1wdHk9ITApOih0aGlzLmluc3RhbmNlPWQudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSx0aGlzLl90ZW1wbGF0aXplcj1kLnRlbXBsYXRpemVyLHRoaXMuX2lzRW1wdHk9ITEpKX0sX2lzRW1wdHlDaGFuZ2VkOmZ1bmN0aW9uKGQsZil7ZiYmdGhpcy5maXJlKCJjZWxsLWVtcHR5LWNoYW5nZWQiKX19KTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtZm9vdGVyLWNlbGwiLHByb3BlcnRpZXM6e2Zvb3RlclRlbXBsYXRlOk9iamVjdH0sYmVoYXZpb3JzOltiLHZhYWRpbi5lbGVtZW50cy5ncmlkLkNlbGxDbGlja0JlaGF2aW9yXSxvYnNlcnZlcnM6WyJfZm9vdGVyVGVtcGxhdGVDaGFuZ2VkKGZvb3RlclRlbXBsYXRlKSIsCiJfaXNFbXB0eUNoYW5nZWQoX2lzRW1wdHksIGlzQXR0YWNoZWQpIl0sX2Zvb3RlclRlbXBsYXRlQ2hhbmdlZDpmdW5jdGlvbihkKXt2b2lkIDAhPT1kJiYobnVsbD09PWR8fCF0aGlzLl9pc0NvbHVtblJvdyYmInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIhPT10aGlzLmNvbHVtbi5sb2NhbE5hbWU/KHRoaXMuaW5zdGFuY2U9e3Jvb3Q6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9LHRoaXMuX2lzRW1wdHk9ITApOih0aGlzLmluc3RhbmNlPWQudGVtcGxhdGl6ZXIuY3JlYXRlSW5zdGFuY2UoKSx0aGlzLl90ZW1wbGF0aXplcj1kLnRlbXBsYXRpemVyLHRoaXMuX2lzRW1wdHk9ITEpKX0sX2lzRW1wdHlDaGFuZ2VkOmZ1bmN0aW9uKGQsZil7ZiYmdGhpcy5maXJlKCJjZWxsLWVtcHR5LWNoYW5nZWQiKX19KTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtc2l6ZXItY2VsbCIsYmVoYXZpb3JzOltiXX0pfSkoKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC1zaXplci5odG1sLmpzClBvbHltZXIoe2lzOiJ2YWFkaW4tZ3JpZC1zaXplciIscHJvcGVydGllczp7Y29sdW1uVHJlZTpBcnJheSx0b3A6TnVtYmVyLF9jb2x1bW5zOkFycmF5fSxvYnNlcnZlcnM6WyJfY29sdW1uVHJlZUNoYW5nZWQoY29sdW1uVHJlZSkiLCJfdG9wQ2hhbmdlZCh0b3ApIl0sX2NvbHVtblRyZWVDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuX2NvbHVtbnM9YltiLmxlbmd0aC0xXX0sX3RvcENoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5zdHlsZS50b3A9YisicHgifX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLXRhYmxlLW91dGVyLXNjcm9sbGVyLmh0bWwuanMKUG9seW1lcih7aXM6InZhYWRpbi1ncmlkLXRhYmxlLW91dGVyLXNjcm9sbGVyIixwcm9wZXJ0aWVzOntzY3JvbGxUYXJnZXQ6e3R5cGU6T2JqZWN0LG9ic2VydmVyOiJfc2Nyb2xsVGFyZ2V0Q2hhbmdlZCJ9LHBhc3N0aHJvdWdoOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiEwfX0sbGlzdGVuZXJzOntzY3JvbGw6Il9zeW5jU2Nyb2xsVGFyZ2V0In0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLmxpc3Rlbih0aGlzLmRvbUhvc3QsIm1vdXNlbW92ZSIsIl9vbk1vdXNlTW92ZSIpO3RoaXMuc3R5bGUud2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc9InRvdWNoIn0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLnVubGlzdGVuKHRoaXMuZG9tSG9zdCwibW91c2Vtb3ZlIiwiX29uTW91c2VNb3ZlIil9LF9zY3JvbGxUYXJnZXRDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7ZCYmdGhpcy51bmxpc3RlbihkLCJzY3JvbGwiLCJfc3luY091dGVyU2Nyb2xsZXIiKTt0aGlzLmxpc3RlbihiLAoic2Nyb2xsIiwiX3N5bmNPdXRlclNjcm9sbGVyIil9LF9vbk1vdXNlTW92ZTpmdW5jdGlvbihiKXt0aGlzLnBhc3N0aHJvdWdoPWIub2Zmc2V0WTw9dGhpcy5jbGllbnRIZWlnaHQmJmIub2Zmc2V0WDw9dGhpcy5jbGllbnRXaWR0aH0sX3N5bmNPdXRlclNjcm9sbGVyOmZ1bmN0aW9uKCl7dGhpcy5fc3luY2luZ1Njcm9sbFRhcmdldHx8KHRoaXMuX3N5bmNpbmdPdXRlclNjcm9sbGVyPSEwLHRoaXMuc2Nyb2xsVG9wPXRoaXMuZG9tSG9zdC5fc2Nyb2xsVG9wLHRoaXMuc2Nyb2xsTGVmdD10aGlzLmRvbUhvc3QuX3Njcm9sbExlZnQpO3RoaXMuX3N5bmNpbmdTY3JvbGxUYXJnZXQ9ITF9LF9zeW5jU2Nyb2xsVGFyZ2V0OmZ1bmN0aW9uKCl7dGhpcy5fc3luY2luZ091dGVyU2Nyb2xsZXJ8fCh0aGlzLl9zeW5jaW5nU2Nyb2xsVGFyZ2V0PSEwLHRoaXMuc2Nyb2xsVGFyZ2V0LnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCx0aGlzLnNjcm9sbFRhcmdldC5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsTGVmdCwKdGhpcy5kb21Ib3N0Ll9zY3JvbGxIYW5kbGVyKCkpO3RoaXMuX3N5bmNpbmdPdXRlclNjcm9sbGVyPSExfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWZvY3VzYWJsZS1jZWxsLWNvbnRhaW5lci1iZWhhdmlvci5odG1sLmpzCndpbmRvdy52YWFkaW49d2luZG93LnZhYWRpbnx8e307dmFhZGluLmVsZW1lbnRzPXZhYWRpbi5lbGVtZW50c3x8e307dmFhZGluLmVsZW1lbnRzLmdyaWQ9dmFhZGluLmVsZW1lbnRzLmdyaWR8fHt9Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5Gb2N1c2FibGVDZWxsQ29udGFpbmVyQmVoYXZpb3I9e3Byb3BlcnRpZXM6e2ZvY3VzZWQ6e3R5cGU6Qm9vbGVhbixyZWZsZWN0VG9BdHRyaWJ1dGU6ITB9LF9mb2N1c2VkUm93Ok9iamVjdCxfZm9jdXNlZFJvd0luZGV4Ok51bWJlcixfZm9jdXNlZENlbGw6T2JqZWN0LF9mb2N1c2VkQ2VsbEluZGV4Ok51bWJlcixfbGFzdEZvY3VzZWRDZWxsOk9iamVjdH0sb2JzZXJ2ZXJzOlsiX2Fubm91bmNlRm9jdXNlZENlbGwoX2ZvY3VzZWRDZWxsLCBmb2N1c2VkKSIsIl9kaXNwYXRjaEV2ZW50cyhfZm9jdXNlZENlbGwsIGZvY3VzZWQpIiwiX2ZvY3VzZWRDZWxsQ2hhbmdlZChfZm9jdXNlZFJvd0luZGV4LCBfZm9jdXNlZENlbGxJbmRleCkiXSxfYW5ub3VuY2VGb2N1c2VkQ2VsbDpmdW5jdGlvbihiLGQpe3ZvaWQgMCE9PWImJnZvaWQgMCE9PWQmJnRoaXMuZG9tSG9zdC5uYXZpZ2F0aW5nJiZkJiYoZD1Qb2x5bWVyLkVsZW1lbnQ/Yi5fY2VsbENvbnRlbnQuZ2V0QXR0cmlidXRlKCJzbG90Iik6CmIuX2NlbGxDb250ZW50LmlkLCJ2YWFkaW4tZ3JpZC10YWJsZS1ib2R5IiE9PXRoaXMuaXN8fGIuaGFzQXR0cmlidXRlKCJkZXRhaWxzY2VsbCIpfHwoYj1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKFBvbHltZXIuZG9tKGIucGFyZW50RWxlbWVudCkucXVlcnlTZWxlY3RvckFsbCgiLnZhYWRpbi1ncmlkLWNlbGwiKSxiKSxkPXRoaXMuZG9tSG9zdC4kLmhlYWRlci5sYXN0RWxlbWVudENoaWxkLmNoaWxkcmVuW2JdLl9jZWxsQ29udGVudC5pZCsiICIrZCksdGhpcy5kb21Ib3N0LiQuZm9vdGVyRm9jdXNUcmFwLmFjdGl2ZVRhcmdldD1kKX0sX2Rpc3BhdGNoRXZlbnRzOmZ1bmN0aW9uKGIsZCl7dm9pZCAwIT09YiYmdm9pZCAwIT09ZCYmKHRoaXMuX2xhc3RGb2N1c2VkQ2VsbCYmKHRoaXMuX2xhc3RGb2N1c2VkQ2VsbC5fY2VsbENvbnRlbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoImNlbGwtZm9jdXNvdXQiKSksdGhpcy5fbGFzdEZvY3VzZWRDZWxsPXZvaWQgMCksCmQmJihiLl9jZWxsQ29udGVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgiY2VsbC1mb2N1c2luIikpLHRoaXMuX2xhc3RGb2N1c2VkQ2VsbD1iKSl9LF9mb2N1c2VkQ2VsbENoYW5nZWQ6ZnVuY3Rpb24oYixkKXt2b2lkIDAhPT1iJiZ2b2lkIDAhPT1kJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKFBvbHltZXIuZG9tKHRoaXMpLmNoaWxkcmVuLGZ1bmN0aW9uKGYsaCl7Zi5mb2N1c2VkPWg9PT1iO2YuZm9jdXNlZCYmKHRoaXMuX2ZvY3VzZWRSb3c9Zix0aGlzLl9mb2N1c2VkQ2VsbEluZGV4PU1hdGgubWluKGQsZi5jaGlsZHJlbi5sZW5ndGgtMSksdGhpcy5fZm9jdXNlZENlbGw9Zi5jaGlsZHJlblt0aGlzLl9mb2N1c2VkQ2VsbEluZGV4XSk7Zi5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGssdCl7ay5mb2N1c2VkPXQ9PT10aGlzLl9mb2N1c2VkQ2VsbEluZGV4fS5iaW5kKHRoaXMpKX0uYmluZCh0aGlzKSl9LGZvY3VzTGVmdDpmdW5jdGlvbigpe2lmKCF0aGlzLl9mb2N1c2VkQ2VsbC5oYXNBdHRyaWJ1dGUoImRldGFpbHNjZWxsIikpe3ZhciBiPQp0aGlzLl92aXNpYmxlQ2VsbEluZGV4ZXMoKTswPGIubGVuZ3RoJiYodGhpcy5fZm9jdXNlZENlbGxJbmRleD1iW01hdGgubWF4KDAsYi5pbmRleE9mKHRoaXMuX2ZvY3VzZWRDZWxsSW5kZXgpLTEpXSl9fSxmb2N1c0Rvd246ZnVuY3Rpb24oKXt0aGlzLl9mb2N1c2VkUm93SW5kZXg9TWF0aC5taW4odGhpcy5fZm9jdXNlZFJvd0luZGV4KzEsdGhpcy5jaGlsZHJlbi5sZW5ndGgtMSl9LF92aXNpYmxlQ2VsbEluZGV4ZXM6ZnVuY3Rpb24oKXt2YXIgYj1bXTtpZih0aGlzLl9mb2N1c2VkUm93JiZ0aGlzLl9mb2N1c2VkUm93LmNoaWxkcmVuKXtmb3IodmFyIGQ9dGhpcy5fZm9jdXNlZFJvdy5jaGlsZHJlbixmPTA7ZjxkLmxlbmd0aDtmKyspZFtmXS5oaWRkZW58fGRbZl09PT10aGlzLl9mb2N1c2VkUm93Ll9yb3dEZXRhaWxzQ2VsbHx8Yi5wdXNoKGYpO2Iuc29ydChmdW5jdGlvbihoLGspe3JldHVybiBkW2hdLmNvbHVtbi5fb3JkZXI8ZFtrXS5jb2x1bW4uX29yZGVyPy0xOjF9KX1yZXR1cm4gYn0sCmZvY3VzUGFnZURvd246ZnVuY3Rpb24oKXt0aGlzLl9mb2N1c2VkUm93SW5kZXg9TWF0aC5taW4odGhpcy5fZm9jdXNlZFJvd0luZGV4KzEwLHRoaXMuY2hpbGRyZW4ubGVuZ3RoLTEpfSxmb2N1c1BhZ2VVcDpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWRSb3dJbmRleD1NYXRoLm1heCgwLHRoaXMuX2ZvY3VzZWRSb3dJbmRleC0xMCl9LGZvY3VzUmlnaHQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZENlbGwuaGFzQXR0cmlidXRlKCJkZXRhaWxzY2VsbCIpKXt2YXIgYj10aGlzLl92aXNpYmxlQ2VsbEluZGV4ZXMoKTswPGIubGVuZ3RoJiYodGhpcy5fZm9jdXNlZENlbGxJbmRleD1iW01hdGgubWluKGIuaW5kZXhPZih0aGlzLl9mb2N1c2VkQ2VsbEluZGV4KSsxLGIubGVuZ3RoLTEpXSl9fSxmb2N1c1VwOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZFJvd0luZGV4PU1hdGgubWF4KDAsdGhpcy5fZm9jdXNlZFJvd0luZGV4LTEpfSxmb2N1c0hvbWU6ZnVuY3Rpb24oKXtpZighdGhpcy5fZm9jdXNlZENlbGwuaGFzQXR0cmlidXRlKCJkZXRhaWxzY2VsbCIpKXt2YXIgYj0KdGhpcy5fdmlzaWJsZUNlbGxJbmRleGVzKCk7MDxiLmxlbmd0aCYmKHRoaXMuX2ZvY3VzZWRDZWxsSW5kZXg9YlswXSl9fSxmb2N1c0VuZDpmdW5jdGlvbigpe2lmKCF0aGlzLl9mb2N1c2VkQ2VsbC5oYXNBdHRyaWJ1dGUoImRldGFpbHNjZWxsIikpe3ZhciBiPXRoaXMuX3Zpc2libGVDZWxsSW5kZXhlcygpOzA8Yi5sZW5ndGgmJih0aGlzLl9mb2N1c2VkQ2VsbEluZGV4PWJbYi5sZW5ndGgtMV0pfX0sZm9jdXNGaXJzdDpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWRSb3dJbmRleD0wO3RoaXMuZm9jdXNIb21lKCl9LGZvY3VzTGFzdDpmdW5jdGlvbigpe3RoaXMuX2ZvY3VzZWRSb3dJbmRleD10aGlzLmNoaWxkcmVuLmxlbmd0aC0xO3RoaXMuZm9jdXNFbmQoKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlci1mb290ZXIuaHRtbC5qcwooZnVuY3Rpb24oKXt2YXIgYj17cHJvcGVydGllczp7Y29sdW1uVHJlZTpBcnJheSx0YXJnZXQ6T2JqZWN0LF9yb3dzOkFycmF5fSxvYnNlcnZlcnM6WyJfY29sdW1uVHJlZUNoYW5nZWQoY29sdW1uVHJlZSwgdGFyZ2V0KSIsIl9yb3dzQ2hhbmdlZChfcm93cykiXSxfY29sdW1uVHJlZUNoYW5nZWQ6ZnVuY3Rpb24oZCxmKXtpZih2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mKXt0aGlzLl9yb3dzJiZ0aGlzLl9yb3dzLmZvckVhY2goZnVuY3Rpb24obCl7UG9seW1lci5kb20obCkuaW5uZXJIVE1MPSIifSk7Zm9yKHZhciBoPVtdLGs9MDtrPGQubGVuZ3RoO2srKyl7dmFyIHQ9dGhpcy5fY3JlYXRlUm93KCk7dC50YXJnZXQ9Zjt0Ll9pc0NvbHVtblJvdz1rPT1kLmxlbmd0aC0xO3QuY29sdW1ucz1kW2tdO2gucHVzaCh0KX10aGlzLl9yb3dzPSJ2YWFkaW4tZ3JpZC10YWJsZS1oZWFkZXIiPT09dGhpcy5sb2NhbE5hbWU/aDpoLnJldmVyc2UoKX19LF9yb3dzQ2hhbmdlZDpmdW5jdGlvbihkKXtQb2x5bWVyLmRvbSh0aGlzKS5pbm5lckhUTUw9CiIiO2QuZm9yRWFjaChmdW5jdGlvbihmKXtQb2x5bWVyLmRvbSh0aGlzKS5hcHBlbmRDaGlsZChmKX0uYmluZCh0aGlzKSl9fTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtaGVhZGVyIixiZWhhdmlvcnM6W2IsdmFhZGluLmVsZW1lbnRzLmdyaWQuRm9jdXNhYmxlQ2VsbENvbnRhaW5lckJlaGF2aW9yXSxfY3JlYXRlUm93OmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLXRhYmxlLWhlYWRlci1yb3ciKX19KTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtYm9keSIsYmVoYXZpb3JzOlt2YWFkaW4uZWxlbWVudHMuZ3JpZC5Gb2N1c2FibGVDZWxsQ29udGFpbmVyQmVoYXZpb3JdLG9ic2VydmVyczpbIl9hbm5vdW5jZUZvY3VzZWRSb3coX2ZvY3VzZWRSb3cpIl0sX2Fubm91bmNlRm9jdXNlZFJvdzpmdW5jdGlvbihkKXt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0OiJSb3cgIisoZC5pbmRleCsxKSsiIG9mICIrCnRoaXMuZG9tSG9zdC5zaXplfSl9LF9tb3ZlRm9jdXNUb0RldGFpbHNDZWxsOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZENlbGwuZm9jdXNlZD0hMTt0aGlzLl9mb2N1c2VkUm93Ll9yb3dEZXRhaWxzQ2VsbC5mb2N1c2VkPSEwO3RoaXMuX2ZvY3VzZWRDZWxsPXRoaXMuX2ZvY3VzZWRSb3cuX3Jvd0RldGFpbHNDZWxsfSxfZm9jdXNlZFJvd0hhc0RldGFpbHNDZWxsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvY3VzZWRSb3cmJnRoaXMuX2ZvY3VzZWRSb3cuX3Jvd0RldGFpbHNDZWxsJiZ0aGlzLl9mb2N1c2VkQ2VsbCE9PXRoaXMuX2ZvY3VzZWRSb3cuX3Jvd0RldGFpbHNDZWxsfSxmb2N1c0Rvd246ZnVuY3Rpb24oKXt0aGlzLl9mb2N1c2VkUm93SGFzRGV0YWlsc0NlbGwoKT90aGlzLl9tb3ZlRm9jdXNUb0RldGFpbHNDZWxsKCk6dGhpcy5fZm9jdXNlZFJvd0luZGV4PU1hdGgubWluKHRoaXMuX2ZvY3VzZWRSb3dJbmRleCsxLHRoaXMuZG9tSG9zdC5zaXplLTEpfSxmb2N1c1VwOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZFJvdyYmCnRoaXMuX2ZvY3VzZWRDZWxsPT09dGhpcy5fZm9jdXNlZFJvdy5fcm93RGV0YWlsc0NlbGw/dGhpcy5fZm9jdXNlZENlbGxDaGFuZ2VkKHRoaXMuX2ZvY3VzZWRSb3dJbmRleCx0aGlzLl9mb2N1c2VkQ2VsbEluZGV4KToodGhpcy5fZm9jdXNlZFJvd0luZGV4PU1hdGgubWF4KDAsdGhpcy5fZm9jdXNlZFJvd0luZGV4LTEpLHRoaXMuX2ZvY3VzZWRSb3dIYXNEZXRhaWxzQ2VsbCgpJiZ0aGlzLl9tb3ZlRm9jdXNUb0RldGFpbHNDZWxsKCkpfSxmb2N1c0xhc3Q6ZnVuY3Rpb24oKXt0aGlzLl9mb2N1c2VkUm93SW5kZXg9dGhpcy5kb21Ib3N0LnNpemUtMTt0aGlzLmZvY3VzRW5kKCl9LF9mb2N1c2VkQ2VsbENoYW5nZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiZBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKFBvbHltZXIuZG9tKHRoaXMpLmNoaWxkcmVuLGZ1bmN0aW9uKGgpe2guZm9jdXNlZD1oLmluZGV4PT09ZDtoLmluZGV4PT09ZCYmKHRoaXMuX2ZvY3VzZWRSb3c9CmgsdGhpcy5fZm9jdXNlZENlbGw9aC5jaGlsZHJlbltmXSk7aC5pdGVyYXRlQ2VsbHMoZnVuY3Rpb24oayx0KXtrLmZvY3VzZWQ9dD09PWZ9KX0uYmluZCh0aGlzKSl9fSk7UG9seW1lcih7aXM6InZhYWRpbi1ncmlkLXRhYmxlLWZvb3RlciIsYmVoYXZpb3JzOltiLHZhYWRpbi5lbGVtZW50cy5ncmlkLkZvY3VzYWJsZUNlbGxDb250YWluZXJCZWhhdmlvcl0sX2NyZWF0ZVJvdzpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ2YWFkaW4tZ3JpZC10YWJsZS1mb290ZXItcm93Iil9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLXRhYmxlLWZvY3VzLXRyYXAuaHRtbC5qcwpQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtZm9jdXMtdHJhcCIsaG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImdyaWRjZWxsIn0scHJvcGVydGllczp7YWN0aXZlVGFyZ2V0Ont0eXBlOlN0cmluZyxvYnNlcnZlcjoiX2FjdGl2ZVRhcmdldENoYW5nZWQifX0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLl9wcmltYXJ5PVBvbHltZXIuZG9tKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvcigiLnByaW1hcnkiKTt0aGlzLl9zZWNvbmRhcnk9UG9seW1lci5kb20odGhpcy5yb290KS5xdWVyeVNlbGVjdG9yKCIuc2Vjb25kYXJ5Iik7aWYoUG9seW1lci5TZXR0aW5ncy51c2VOYXRpdmVTaGFkb3d8fFBvbHltZXIuU2V0dGluZ3MudXNlU2hhZG93KVBvbHltZXIuZG9tKHRoaXMpLmFwcGVuZENoaWxkKHRoaXMuX3NlY29uZGFyeSksUG9seW1lci5kb20odGhpcykuYXBwZW5kQ2hpbGQodGhpcy5fcHJpbWFyeSl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fZm9jdXNlZCE9PXRoaXMuX3ByaW1hcnk/dGhpcy5fcHJpbWFyeS5mb2N1cygpOgp0aGlzLl9zZWNvbmRhcnkuZm9jdXMoKX0sX29uQmFpdEZvY3VzOmZ1bmN0aW9uKGIpe3RoaXMuX2ZvY3VzZWQ9Yi50YXJnZXQ7dGhpcy5fbW92aW5nRm9jdXNJbnRlcm5hbGx5fHwodGhpcy5maXJlKCJmb2N1cy1nYWluZWQiKSx0aGlzLl9wcmltYXJ5LnRhYkluZGV4PS0xKX0sX29uQmFpdEJsdXI6ZnVuY3Rpb24oKXt0aGlzLl9tb3ZpbmdGb2N1c0ludGVybmFsbHl8fCh0aGlzLmZpcmUoImZvY3VzLWxvc3QiKSx0aGlzLl9wcmltYXJ5LnRhYkluZGV4PTApfSxfYWN0aXZlVGFyZ2V0Q2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLl9tb3ZpbmdGb2N1c0ludGVybmFsbHk9ITA7dGhpcy5fZm9jdXNlZD09PXRoaXMuX3ByaW1hcnk/KHRoaXMuX3NlY29uZGFyeS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWxsZWRieSIsYiksdGhpcy5fc2Vjb25kYXJ5LmZvY3VzKCkpOih0aGlzLl9wcmltYXJ5LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbGxlZGJ5IixiKSx0aGlzLl9wcmltYXJ5LmZvY3VzKCkpOwp0aGlzLl9tb3ZpbmdGb2N1c0ludGVybmFsbHk9ITF9LF9yZWFubm91bmNlOmZ1bmN0aW9uKCl7dGhpcy5fbW92aW5nRm9jdXNJbnRlcm5hbGx5PSEwO3RoaXMuX2ZvY3VzZWQ9PT10aGlzLl9wcmltYXJ5Pyh0aGlzLl9zZWNvbmRhcnkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHRoaXMuYWN0aXZlVGFyZ2V0KSx0aGlzLl9zZWNvbmRhcnkuZm9jdXMoKSk6KHRoaXMuX3ByaW1hcnkuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsbGVkYnkiLHRoaXMuYWN0aXZlVGFyZ2V0KSx0aGlzLl9wcmltYXJ5LmZvY3VzKCkpO3RoaXMuX21vdmluZ0ZvY3VzSW50ZXJuYWxseT0hMX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC10YWJsZS1yb3cuaHRtbC5qcwooZnVuY3Rpb24oKXt2YXIgYj17cHJvcGVydGllczp7YWN0aXZlOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfSxjb2x1bW5zOkFycmF5LGluZGV4Ok51bWJlcixjZWxsczp7dmFsdWU6W119LHRhcmdldDpPYmplY3QsZXhwYW5kZWQ6e3ZhbHVlOiExfSxmb2N1c2VkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSxpdGVtOk9iamVjdCxzZWxlY3RlZDp7cmVmbGVjdFRvQXR0cmlidXRlOiEwfSxfcm93RGV0YWlsc0NlbGw6T2JqZWN0LHJvd0RldGFpbHNUZW1wbGF0ZTpPYmplY3R9LG9ic2VydmVyczoiX2NvbHVtbnNDaGFuZ2VkKGNvbHVtbnMsIHRhcmdldCk7X2luZGV4Q2hhbmdlZChpbmRleCwgY2VsbHMpO19pdGVtQ2hhbmdlZChpdGVtLCBjZWxscyk7X2l0ZW1DaGFuZ2VkRm9yRGV0YWlscyhpdGVtLCBfcm93RGV0YWlsc0NlbGwpO19yb3dEZXRhaWxzQ2hhbmdlZChleHBhbmRlZCwgcm93RGV0YWlsc1RlbXBsYXRlLCB0YXJnZXQpO19yb3dEZXRhaWxzQ2VsbEluZGV4Q2hhbmdlZChfcm93RGV0YWlsc0NlbGwsIGluZGV4KTtfcm93RGV0YWlsc0NlbGxDaGFuZ2VkKF9yb3dEZXRhaWxzQ2VsbCwgdGFyZ2V0KTtfc2VsZWN0ZWRDaGFuZ2VkKHNlbGVjdGVkLCBjZWxscyk7X3NlbGVjdGVkQ2hhbmdlZEZvckRldGFpbHMoc2VsZWN0ZWQsIF9yb3dEZXRhaWxzQ2VsbCkiLnNwbGl0KCI7IiksCnJlYWR5OmZ1bmN0aW9uKCl7dGhpcy5jbGFzc0xpc3QuYWRkKCJ2YWFkaW4tZ3JpZC1yb3ciKTshMT09PVBvbHltZXIuU2V0dGluZ3MudXNlU2hhZG93JiYodGhpcy5jbGFzc0xpc3QuYWRkKCJzdHlsZS1zY29wZSIpLHRoaXMuY2xhc3NMaXN0LmFkZCgidmFhZGluLWdyaWQiKSl9LGl0ZXJhdGVDZWxsczpmdW5jdGlvbihkKXt0aGlzLmNlbGxzLmZvckVhY2goZCk7dGhpcy5fcm93RGV0YWlsc0NlbGwmJmQodGhpcy5fcm93RGV0YWlsc0NlbGwpfSxfcm93RGV0YWlsc0NoYW5nZWQ6ZnVuY3Rpb24oZCxmLGgpe2lmKHZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJnZvaWQgMCE9PWgpe2lmKGQpe3ZhciBrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLXRhYmxlLWNlbGwiKTtrLnNldEF0dHJpYnV0ZSgiZGV0YWlsc2NlbGwiLCEwKTtrLmZyb3plbj0hMDtrLnRhcmdldD1oO2sudGVtcGxhdGU9ZjtrLnRvZ2dsZUF0dHJpYnV0ZSgibGFzdGNvbHVtbiIsITApO1BvbHltZXIuZG9tKHRoaXMucm9vdCkuYXBwZW5kQ2hpbGQoayk7ClBvbHltZXIuZG9tLmZsdXNoKCk7dGhpcy5fcm93RGV0YWlsc0NlbGw9a31lbHNlIHRoaXMuX3Jvd0RldGFpbHNDZWxsJiYoUG9seW1lci5kb20odGhpcy5yb290KS5yZW1vdmVDaGlsZCh0aGlzLl9yb3dEZXRhaWxzQ2VsbCksdGhpcy5fcm93RGV0YWlsc0NlbGw9bnVsbCk7dGhpcy5pdGVyYXRlQ2VsbHMoZnVuY3Rpb24odCl7dC5leHBhbmRlZD1kfSk7dGhpcy50YXJnZXQuJC5zY3JvbGxlci5fZnJvemVuQ2VsbHNDaGFuZ2VkKCl9fSxfdXBkYXRlUm93VmlzaWJpbGl0eTpmdW5jdGlvbigpe3RoaXMuaGlkZGVuPXRoaXMuY2VsbHMuZXZlcnkoZnVuY3Rpb24oZCl7cmV0dXJuIGQuX2lzRW1wdHl9KX0sX3Jvd0RldGFpbHNDZWxsQ2hhbmdlZDpmdW5jdGlvbihkLGYpe3ZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJmYuJC5zY3JvbGxlci5fdXBkYXRlKCl9LF9yb3dEZXRhaWxzQ2VsbEluZGV4Q2hhbmdlZDpmdW5jdGlvbihkLGYpe3ZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJihkPyhkLmluZGV4PQpmLFBvbHltZXIuZG9tLmZsdXNoKCksdGhpcy51cGRhdGVSb3dEZXRhaWxzQ2VsbE1ldHJpY3MoKSk6dGhpcy5zdHlsZS5wYWRkaW5nQm90dG9tPSIiKX0sdXBkYXRlUm93RGV0YWlsc0NlbGxNZXRyaWNzOmZ1bmN0aW9uKCl7dGhpcy5fcm93RGV0YWlsc0NlbGwmJih0aGlzLnRhcmdldCYmdGhpcy50YXJnZXQuX29ic2VydmVyJiZ0aGlzLnRhcmdldC5fb2JzZXJ2ZXIuZmx1c2gmJnRoaXMudGFyZ2V0Ll9vYnNlcnZlci5mbHVzaCgpLHRoaXMuX3Jvd0RldGFpbHNDZWxsLnN0eWxlLmhlaWdodD0iIix0aGlzLnN0eWxlLnBhZGRpbmdCb3R0b209dGhpcy5fcm93RGV0YWlsc0NlbGwuc3R5bGUuaGVpZ2h0PXRoaXMuX3Jvd0RldGFpbHNDZWxsLmNsaWVudEhlaWdodCsicHgiKX0sX2NvbHVtbnNDaGFuZ2VkOmZ1bmN0aW9uKGQsZil7aWYodm9pZCAwIT09ZCYmdm9pZCAwIT09Zil7UG9seW1lci5kb20odGhpcykuaW5uZXJIVE1MPSIiO3ZhciBoPVtdO2QuZm9yRWFjaChmdW5jdGlvbihrKXt2YXIgdD0KIl8iK3RoaXMuaXMucmVwbGFjZSgvLS9nLCJfIikrIl9jZWxscyI7dD1rW3RdPWtbdF18fFtdO3ZhciBsPXQuZmlsdGVyKGZ1bmN0aW9uKG0pe3JldHVybiFQb2x5bWVyLmRvbShtKS5wYXJlbnROb2RlfSlbMF07aWYoIWwpe2w9dGhpcy5fY3JlYXRlQ2VsbCgpO3ZhciBwPUFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwodGhpcy50YXJnZXQucXVlcnlTZWxlY3RvckFsbCgiZG9tLXJlcGVhdCIpLGZ1bmN0aW9uKG0pe3JldHVybiFtLnJlc3RhbXB9KTsocD1wfHwidmFhZGluLWdyaWQtdGFibGUtaGVhZGVyLXJvdyI9PT10aGlzLmlzfHwidmFhZGluLWdyaWQtdGFibGUtZm9vdGVyLXJvdyI9PT10aGlzLmlzKXx8dC5wdXNoKGwpfWwuaW5kZXg9dGhpcy5pbmRleDtsLnRhcmdldD10aGlzLnRhcmdldDtsLl9pc0NvbHVtblJvdz10aGlzLl9pc0NvbHVtblJvdztsLmNvbHVtbj1rO2wuZXhwYW5kZWQ9dGhpcy5leHBhbmRlZDtQb2x5bWVyLmRvbSh0aGlzKS5hcHBlbmRDaGlsZChsKTtoLnB1c2gobCl9LmJpbmQodGhpcykpOwp0aGlzLmNlbGxzPWh9fSxfaW5kZXhDaGFuZ2VkOmZ1bmN0aW9uKGQsZil7dm9pZCAwIT09ZCYmdm9pZCAwIT09ZiYmZi5mb3JFYWNoKGZ1bmN0aW9uKGgpe2guaW5kZXg9ZH0pfSxfaXRlbUNoYW5nZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiZmLmZvckVhY2goZnVuY3Rpb24oaCl7aC5pdGVtPWR9KX0sX2l0ZW1DaGFuZ2VkRm9yRGV0YWlsczpmdW5jdGlvbihkLGYpe3ZvaWQgMCE9PWQmJnZvaWQgMCE9PWYmJmYmJihmLml0ZW09ZCl9LF9zZWxlY3RlZENoYW5nZWQ6ZnVuY3Rpb24oZCxmKXt2b2lkIDAhPT1kJiZ2b2lkIDAhPT1mJiZmLmZvckVhY2goZnVuY3Rpb24oaCl7aC5zZWxlY3RlZD1kfSl9LF9zZWxlY3RlZENoYW5nZWRGb3JEZXRhaWxzOmZ1bmN0aW9uKGQsZil7dm9pZCAwIT09ZCYmdm9pZCAwIT09ZiYmZiYmKGYuc2VsZWN0ZWQ9ZCl9LHVwZGF0ZUxhc3RDb2x1bW46ZnVuY3Rpb24oKXt0aGlzLmNlbGxzLnNsaWNlKDApLnNvcnQoZnVuY3Rpb24oZCwKZil7cmV0dXJuIGQuY29sdW1uLl9vcmRlci1mLmNvbHVtbi5fb3JkZXJ9KS5mb3JFYWNoKGZ1bmN0aW9uKGQsZixoKXtkLnRvZ2dsZUF0dHJpYnV0ZSgibGFzdGNvbHVtbiIsZj09PWgubGVuZ3RoLTEpfSl9fTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtcm93IixiZWhhdmlvcnM6W2JdLF9jcmVhdGVDZWxsOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLXRhYmxlLWNlbGwiKX19KTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtaGVhZGVyLXJvdyIsYmVoYXZpb3JzOltiXSxvYnNlcnZlcnM6WyJfdXBkYXRlUm93VmlzaWJpbGl0eShjb2x1bW5zKSJdLGxpc3RlbmVyczp7ImNlbGwtZW1wdHktY2hhbmdlZCI6Il91cGRhdGVSb3dWaXNpYmlsaXR5In0sX2NyZWF0ZUNlbGw6ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmFhZGluLWdyaWQtdGFibGUtaGVhZGVyLWNlbGwiKX19KTtQb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGFibGUtZm9vdGVyLXJvdyIsCmJlaGF2aW9yczpbYl0sb2JzZXJ2ZXJzOlsiX3VwZGF0ZVJvd1Zpc2liaWxpdHkoY29sdW1ucykiXSxsaXN0ZW5lcnM6eyJjZWxsLWVtcHR5LWNoYW5nZWQiOiJfdXBkYXRlUm93VmlzaWJpbGl0eSJ9LF9jcmVhdGVDZWxsOmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInZhYWRpbi1ncmlkLXRhYmxlLWZvb3Rlci1jZWxsIil9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLXRlbXBsYXRpemVyLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307dmFhZGluLmVsZW1lbnRzLmdyaWQuVGVtcGxhdGl6ZXI9ZnVuY3Rpb24oKXt9Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5UZW1wbGF0aXplcj1Qb2x5bWVyKHtpczoidmFhZGluLWdyaWQtdGVtcGxhdGl6ZXIiLGJlaGF2aW9yczpbUG9seW1lci5UZW1wbGF0aXplcl0scHJvcGVydGllczp7ZGF0YUhvc3Q6T2JqZWN0LHRlbXBsYXRlOk9iamVjdCxfdGVtcGxhdGVJbnN0YW5jZXM6e3R5cGU6QXJyYXksdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm5bXX19LF9wYXJlbnRQYXRoVmFsdWVzOnt2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX19LG9ic2VydmVyczpbIl90ZW1wbGF0ZUluc3RhbmNlc0NoYW5nZWQoX3RlbXBsYXRlSW5zdGFuY2VzLiosIF9wYXJlbnRQYXRoVmFsdWVzLiopIl0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuX3BhcmVudE1vZGVsPSEwO3RoaXMuX2luc3RhbmNlUHJvcHM9e2V4cGFuZGVkOiEwLGluZGV4OiEwLGl0ZW06ITAsc2VsZWN0ZWQ6ITB9fSxjcmVhdGVJbnN0YW5jZTpmdW5jdGlvbigpe3RoaXMuX2Vuc3VyZVRlbXBsYXRpemVkKCk7dmFyIGI9dGhpcy5zdGFtcCh7fSk7CnRoaXMuYWRkSW5zdGFuY2UoYik7cmV0dXJuIGJ9LGFkZEluc3RhbmNlOmZ1bmN0aW9uKGIpey0xPT09dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuaW5kZXhPZihiKSYmdGhpcy5wdXNoKCJfdGVtcGxhdGVJbnN0YW5jZXMiLGIpfSxyZW1vdmVJbnN0YW5jZTpmdW5jdGlvbihiKXt0aGlzLnNwbGljZSgiX3RlbXBsYXRlSW5zdGFuY2VzIix0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5pbmRleE9mKGIpLDEpfSxfZW5zdXJlVGVtcGxhdGl6ZWQ6ZnVuY3Rpb24oKXt0aGlzLnRlbXBsYXRlLl90ZW1wbGF0aXplZHx8KHRoaXMudGVtcGxhdGUuX3RlbXBsYXRpemVkPSEwLHRoaXMudGVtcGxhdGl6ZSh0aGlzLnRlbXBsYXRlKSx0aGlzLl9wYXJlbnRQcm9wcz10aGlzLl9wYXJlbnRQcm9wc3x8e30sUG9seW1lci5FbGVtZW50fHxPYmplY3Qua2V5cyh0aGlzLl9wYXJlbnRQcm9wcykuZm9yRWFjaChmdW5jdGlvbigpe30sdGhpcykpfSxfZm9yd2FyZEluc3RhbmNlUHJvcDpmdW5jdGlvbihiLGQsZil7dm9pZCAwIT09CmJbIl9fIitkKyJfXyJdJiZiWyJfXyIrZCsiX18iXSE9PWYmJnRoaXMuZmlyZSgidGVtcGxhdGUtaW5zdGFuY2UtY2hhbmdlZCIse3Byb3A6ZCx2YWx1ZTpmLGluc3Q6Yn0pfSxfZm9yd2FyZEluc3RhbmNlUGF0aDpmdW5jdGlvbihiLGQsZil7MCE9PWQuaW5kZXhPZigiaXRlbS4iKXx8dGhpcy5fc3VwcHJlc3NJdGVtQ2hhbmdlRXZlbnR8fHRoaXMuZmlyZSgiaXRlbS1jaGFuZ2VkIix7aXRlbTpiLml0ZW0scGF0aDpkLnN1YnN0cmluZyg1KSx2YWx1ZTpmfSl9LF9ub3RpZnlJbnN0YW5jZVByb3BWMjpmdW5jdGlvbihiLGQsZil7dGhpcy5fZm9yd2FyZEluc3RhbmNlUHJvcChiLGQsZik7dGhpcy5fZm9yd2FyZEluc3RhbmNlUGF0aChiLGQsZil9LF9mb3J3YXJkUGFyZW50UHJvcDpmdW5jdGlvbihiLGQpe3RoaXMuX3BhcmVudFBhdGhWYWx1ZXNbYl09ZDt0aGlzLl90ZW1wbGF0ZUluc3RhbmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGYpe2Yuc2V0KGIsZCl9LHRoaXMpfSxfZm9yd2FyZFBhcmVudFBhdGg6ZnVuY3Rpb24oYiwKZCl7dGhpcy5zZXQoWyJfcGFyZW50UGF0aFZhbHVlcyIsYl0sZCk7dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMuZm9yRWFjaChmdW5jdGlvbihmKXtmLm5vdGlmeVBhdGgoYixkKX0sdGhpcyl9LF9mb3J3YXJkSG9zdFByb3BWMjpmdW5jdGlvbihiLGQpe3RoaXMuX2ZvcndhcmRQYXJlbnRQcm9wKGIsZCk7dGhpcy5fdGVtcGxhdGVJbnN0YW5jZXMmJnRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmZvckVhY2goZnVuY3Rpb24oZil7Zi5ub3RpZnlQYXRoKGIsZCl9LHRoaXMpfSxfdGVtcGxhdGVJbnN0YW5jZXNDaGFuZ2VkOmZ1bmN0aW9uKGIpe2lmKCJfdGVtcGxhdGVJbnN0YW5jZXMiPT09Yi5wYXRoKXt2YXIgZD0wO3ZhciBmPXRoaXMuX3RlbXBsYXRlSW5zdGFuY2VzLmxlbmd0aH1lbHNlIGlmKCJfdGVtcGxhdGVJbnN0YW5jZXMuc3BsaWNlcyI9PT1iLnBhdGgpZD1iLnZhbHVlLmluZGV4LGY9Yi52YWx1ZS5hZGRlZENvdW50O2Vsc2UgcmV0dXJuO09iamVjdC5rZXlzKHRoaXMuX3BhcmVudFBhdGhWYWx1ZXN8fAp7fSkuZm9yRWFjaChmdW5jdGlvbihoKXtmb3IodmFyIGs9ZDtrPGQrZjtrKyspdGhpcy5fdGVtcGxhdGVJbnN0YW5jZXNba10uc2V0KGgsdGhpcy5fcGFyZW50UGF0aFZhbHVlc1toXSl9LHRoaXMpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLXJvdy1kZXRhaWxzLWJlaGF2aW9yLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307CnZhYWRpbi5lbGVtZW50cy5ncmlkLlJvd0RldGFpbHNCZWhhdmlvcj17cHJvcGVydGllczp7ZXhwYW5kZWRJdGVtczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LGxpc3RlbmVyczp7InRlbXBsYXRlLWluc3RhbmNlLWNoYW5nZWQiOiJfdGVtcGxhdGVJbnN0YW5jZUNoYW5nZWRFeHBhbmRlZCJ9LG9ic2VydmVyczpbIl9leHBhbmRlZEl0ZW1zQ2hhbmdlZChleHBhbmRlZEl0ZW1zLiosIGRhdGFQcm92aWRlcikiLCJfcm93RGV0YWlsc1RlbXBsYXRlQ2hhbmdlZChfcm93RGV0YWlsc1RlbXBsYXRlKSJdLF9leHBhbmRlZEl0ZW1zQ2hhbmdlZDpmdW5jdGlvbihiLGQpe3ZvaWQgMCE9PWImJnZvaWQgMCE9PWQmJih0aGlzLl9mbHVzaEl0ZW1zRGVib3VuY2VyKCksdGhpcy4kLnNjcm9sbGVyLl9waHlzaWNhbEl0ZW1zJiZ0aGlzLiQuc2Nyb2xsZXIuX3BoeXNpY2FsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihmKXtmLmV4cGFuZGVkPXRoaXMuX2lzRXhwYW5kZWQoZi5pdGVtKX0uYmluZCh0aGlzKSkpfSwKX3Jvd0RldGFpbHNUZW1wbGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oYil7dmFyIGQ9bmV3IHZhYWRpbi5lbGVtZW50cy5ncmlkLlRlbXBsYXRpemVyO2QuZGF0YUhvc3Q9dGhpcy5kYXRhSG9zdDtkLl9pbnN0YW5jZVByb3BzPXtleHBhbmRlZDohMCxpbmRleDohMCxpdGVtOiEwLHNlbGVjdGVkOiEwfTtQb2x5bWVyLmRvbSh0aGlzLnJvb3QpLmFwcGVuZENoaWxkKGQpO2QudGVtcGxhdGU9YjtiLnRlbXBsYXRpemVyPWR9LF9pc0V4cGFuZGVkOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmV4cGFuZGVkSXRlbXMmJi0xIT09dGhpcy5leHBhbmRlZEl0ZW1zLmluZGV4T2YoYil9LGV4cGFuZEl0ZW06ZnVuY3Rpb24oYil7dGhpcy5faXNFeHBhbmRlZChiKXx8dGhpcy5wdXNoKCJleHBhbmRlZEl0ZW1zIixiKX0sY29sbGFwc2VJdGVtOmZ1bmN0aW9uKGIpe3RoaXMuX2lzRXhwYW5kZWQoYikmJnRoaXMuc3BsaWNlKCJleHBhbmRlZEl0ZW1zIix0aGlzLmV4cGFuZGVkSXRlbXMuaW5kZXhPZihiKSwxKX0sCl90ZW1wbGF0ZUluc3RhbmNlQ2hhbmdlZEV4cGFuZGVkOmZ1bmN0aW9uKGIpeyJleHBhbmRlZCI9PT1iLmRldGFpbC5wcm9wJiYoYi5kZXRhaWwudmFsdWU/dGhpcy5leHBhbmRJdGVtKGIuZGV0YWlsLmluc3QuaXRlbSk6dGhpcy5jb2xsYXBzZUl0ZW0oYi5kZXRhaWwuaW5zdC5pdGVtKSxiLnN0b3BQcm9wYWdhdGlvbigpKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWRhdGEtcHJvdmlkZXItYmVoYXZpb3IuaHRtbC5qcwp3aW5kb3cudmFhZGluPXdpbmRvdy52YWFkaW58fHt9O3ZhYWRpbi5lbGVtZW50cz12YWFkaW4uZWxlbWVudHN8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkPXZhYWRpbi5lbGVtZW50cy5ncmlkfHx7fTsKdmFhZGluLmVsZW1lbnRzLmdyaWQuRGF0YVByb3ZpZGVyQmVoYXZpb3I9e2xpc3RlbmVyczp7Iml0ZW0tY2hhbmdlZCI6Il90ZW1wbGF0ZUl0ZW1DaGFuZ2VkIn0scHJvcGVydGllczp7cGFnZVNpemU6e3R5cGU6TnVtYmVyLHZhbHVlOjUwLG9ic2VydmVyOiJfcGFnZVNpemVDaGFuZ2VkIn0sZGF0YVByb3ZpZGVyOnt0eXBlOk9iamVjdCxub3RpZnk6ITAsb2JzZXJ2ZXI6Il9kYXRhUHJvdmlkZXJDaGFuZ2VkIn0sX2xvYWRpbmc6Qm9vbGVhbixfY2FjaGU6e3R5cGU6T2JqZWN0LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue319fSxfcGVuZGluZ1JlcXVlc3RzOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybnt9fX19LF90ZW1wbGF0ZUl0ZW1DaGFuZ2VkOmZ1bmN0aW9uKGIpe3ZhciBkPWIuZGV0YWlsLml0ZW07QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChQb2x5bWVyLmRvbSh0aGlzLiQuaXRlbXMpLmNoaWxkcmVuLGZ1bmN0aW9uKGYpe2YuaXRlbT09PWQmJmYuaXRlcmF0ZUNlbGxzKGZ1bmN0aW9uKGgpe2guX3RlbXBsYXRpemVyLl9zdXBwcmVzc0l0ZW1DaGFuZ2VFdmVudD0KITA7aC5pbnN0YW5jZS5ub3RpZnlQYXRoKCJpdGVtLiIrYi5kZXRhaWwucGF0aCxiLmRldGFpbC52YWx1ZSk7aC5fdGVtcGxhdGl6ZXIuX3N1cHByZXNzSXRlbUNoYW5nZUV2ZW50PSExfSl9KX0sX2dldENhY2hlZEl0ZW06ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5fZ2V0UGFnZUZvckluZGV4KGIpLGY9dGhpcy5fY2FjaGUmJnRoaXMuX2NhY2hlW2RdO3JldHVybiBmP2ZbYi1kKnRoaXMucGFnZVNpemVdOm51bGx9LF9nZXRJdGVtOmZ1bmN0aW9uKGIsZCl7dGhpcy5fdXBkYXRlSXRlbShkLHRoaXMuX2dldENhY2hlZEl0ZW0oYikpO3RoaXMuX2VhZ2VybHlMb2FkUGFnZXMoKTt2YXIgZj10aGlzLl91bmNhY2hlZFBhZ2VzRm9yUGh5c2ljYWxJdGVtcygpOzA8Zi5sZW5ndGgmJih0aGlzLl9sb2FkaW5nPSEwLHRoaXMuZGVib3VuY2UoImxvYWQiLGZ1bmN0aW9uKCl7Zi5mb3JFYWNoKGZ1bmN0aW9uKGgpe3RoaXMuX2xvYWRQYWdlKGgpfS5iaW5kKHRoaXMpKX0sMTAwKSl9LF9jYWNoZWRQYWdlc0ZvclBoeXNpY2FsSXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFnZXNGb3JQaHlzaWNhbEl0ZW1zKCkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB2b2lkIDAhPT0KdGhpcy5fY2FjaGUmJnZvaWQgMCE9PXRoaXMuX2NhY2hlW2JdfS5iaW5kKHRoaXMpKX0sX3VuY2FjaGVkUGFnZXNGb3JQaHlzaWNhbEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhZ2VzRm9yUGh5c2ljYWxJdGVtcygpLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fY2FjaGUmJnZvaWQgMD09PXRoaXMuX2NhY2hlW2JdfS5iaW5kKHRoaXMpKX0sX2VhZ2VybHlMb2FkUGFnZXM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9jYWNoZWRQYWdlc0ZvclBoeXNpY2FsSXRlbXMoKS5zbGljZSgwKTtpZigwPGIubGVuZ3RoKXtiLnNvcnQoZnVuY3Rpb24oZixoKXtyZXR1cm4gZj5ofSk7dmFyIGQ9TWF0aC5taW4oYltiLmxlbmd0aC0xXSsxLE1hdGgubWF4KDAsTWF0aC5mbG9vcih0aGlzLnNpemUvdGhpcy5wYWdlU2l6ZSktMSkpO3RoaXMuX2xvYWRQYWdlKE1hdGgubWF4KDAsYlswXS0xKSk7dGhpcy5fbG9hZFBhZ2UoZCl9fSxfcGFnZXNGb3JQaHlzaWNhbEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuW3RoaXMuX2dldFBhZ2VGb3JJbmRleCh0aGlzLiQuc2Nyb2xsZXIuZmlyc3RWaXNpYmxlSW5kZXgrCnRoaXMuJC5zY3JvbGxlci5fdmlkeE9mZnNldCldLmNvbmNhdCh0aGlzLiQuc2Nyb2xsZXIuX3BoeXNpY2FsSXRlbXMuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiBiLmluZGV4fSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLl9nZXRQYWdlRm9ySW5kZXgoYi5pbmRleCl9LmJpbmQodGhpcykpKS5yZWR1Y2UoZnVuY3Rpb24oYixkKXstMT09PWIuaW5kZXhPZihkKSYmYi5wdXNoKGQpO3JldHVybiBifSxbXSl9LF91cGRhdGVJdGVtczpmdW5jdGlvbihiLGQpe2Zvcih2YXIgZj0wO2Y8dGhpcy5wYWdlU2l6ZTtmKyspe3ZhciBoPXRoaXMuJC5zY3JvbGxlci5fdmlydHVhbEluZGV4VG9JdGVtW2IqdGhpcy5wYWdlU2l6ZStmXTtoJiYodGhpcy5fdXBkYXRlSXRlbShoLGRbZl0pLHRoaXMuZGVib3VuY2UoInVwZGF0ZS1oZWlnaHRzIixmdW5jdGlvbigpe3RoaXMuJC5zY3JvbGxlci5fdXBkYXRlTWV0cmljcygpO3RoaXMuJC5zY3JvbGxlci5fcG9zaXRpb25JdGVtcygpO3RoaXMuJC5zY3JvbGxlci5fdXBkYXRlU2Nyb2xsZXJTaXplKCl9LAoxKSl9fSxfbG9hZFBhZ2U6ZnVuY3Rpb24oYixkKXtkPWR8fHRoaXMuX3VwZGF0ZUl0ZW1zLmJpbmQodGhpcyk7aWYoIXRoaXMuX2NhY2hlW2JdJiYhdGhpcy5fcGVuZGluZ1JlcXVlc3RzW2JdJiZ0aGlzLmRhdGFQcm92aWRlcil7dGhpcy5fcGVuZGluZ1JlcXVlc3RzW2JdPSEwO3ZhciBmPXtwYWdlOmIscGFnZVNpemU6dGhpcy5wYWdlU2l6ZSxzb3J0T3JkZXJzOnRoaXMuX21hcFNvcnRlcnMoKSxmaWx0ZXJzOnRoaXMuX21hcEZpbHRlcnMoKX07dGhpcy5kYXRhUHJvdmlkZXIoZixmdW5jdGlvbihoKXt0aGlzLl9jYWNoZVtiXT1oO2RlbGV0ZSB0aGlzLl9wZW5kaW5nUmVxdWVzdHNbYl07ZChiLGgpO3RoaXMuX2xvYWRpbmc9MDx0aGlzLl9wZW5kaW5nUmVxdWVzdHMubGVuZ3RoO3RoaXMuZGVib3VuY2UoImNoZWNrLXNpemUiLHRoaXMuX2NoZWNrU2l6ZSwyRTMpfS5iaW5kKHRoaXMpKX19LF9nZXRQYWdlRm9ySW5kZXg6ZnVuY3Rpb24oYil7cmV0dXJuIE1hdGguZmxvb3IoYi90aGlzLnBhZ2VTaXplKX0sCmNsZWFyQ2FjaGU6ZnVuY3Rpb24oKXt0aGlzLl9jYWNoZT17fTt0aGlzLl9wZW5kaW5nUmVxdWVzdHM9e307dGhpcy4kLnNjcm9sbGVyLmhhc0RhdGEmJnRoaXMuJC5zY3JvbGxlci5fdXBkYXRlKCk7dGhpcy5fZmx1c2hJdGVtc0RlYm91bmNlcigpfSxfZmx1c2hJdGVtc0RlYm91bmNlcjpmdW5jdGlvbigpe3RoaXMuZmx1c2hEZWJvdW5jZXIoImxvYWQiKX0sX3BhZ2VTaXplQ2hhbmdlZDpmdW5jdGlvbihiLGQpe3ZvaWQgMCE9PWQmJmIhPT1kJiZ0aGlzLmNsZWFyQ2FjaGUoKX0sX2NoZWNrU2l6ZTpmdW5jdGlvbigpe3ZvaWQgMD09PXRoaXMuc2l6ZSYmY29uc29sZS53YXJuKCdUaGUgXHgzY3ZhYWRpbi1ncmlkXHgzZSBuZWVkcyBhIHZhbHVlIGZvciAic2l6ZSIgcHJvcGVydHkgaW4gb3JkZXIgdG8gZGlzcGxheSByb3dzLicpfSxfZGF0YVByb3ZpZGVyQ2hhbmdlZDpmdW5jdGlvbihiLGQpe3ZvaWQgMCE9PWQmJnRoaXMuY2xlYXJDYWNoZSgpO3RoaXMuJC5zY3JvbGxlci5oYXNEYXRhfHwKKHRoaXMuX2xvYWRpbmc9ITAsdGhpcy5fbG9hZFBhZ2UoMCxmdW5jdGlvbigpe3RoaXMuJC5zY3JvbGxlci5oYXNEYXRhPSEwfS5iaW5kKHRoaXMpKSl9fTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC1zZWxlY3Rpb24tYmVoYXZpb3IuaHRtbC5qcwp3aW5kb3cudmFhZGluPXdpbmRvdy52YWFkaW58fHt9O3ZhYWRpbi5lbGVtZW50cz12YWFkaW4uZWxlbWVudHN8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkPXZhYWRpbi5lbGVtZW50cy5ncmlkfHx7fTsKdmFhZGluLmVsZW1lbnRzLmdyaWQuU2VsZWN0aW9uQmVoYXZpb3I9e3Byb3BlcnRpZXM6e3NlbGVjdGVkSXRlbXM6e3R5cGU6T2JqZWN0LG5vdGlmeTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LG9ic2VydmVyczpbIl9zZWxlY3RlZEl0ZW1zQ2hhbmdlZChzZWxlY3RlZEl0ZW1zLiopIl0sbGlzdGVuZXJzOnsidGVtcGxhdGUtaW5zdGFuY2UtY2hhbmdlZCI6Il90ZW1wbGF0ZUluc3RhbmNlQ2hhbmdlZFNlbGVjdGlvbiJ9LF90ZW1wbGF0ZUluc3RhbmNlQ2hhbmdlZFNlbGVjdGlvbjpmdW5jdGlvbihiKXtpZigic2VsZWN0ZWQiPT09Yi5kZXRhaWwucHJvcCl7dmFyIGQ9Yi5kZXRhaWwuaW5zdC5pdGVtOyh0aGlzLl9pc1NlbGVjdGVkKGQpP3RoaXMuZGVzZWxlY3RJdGVtOnRoaXMuc2VsZWN0SXRlbSkuYmluZCh0aGlzKShkKTt0aGlzLmZpcmUoImlyb24tYW5ub3VuY2UiLHt0ZXh0Oih0aGlzLl9pc1NlbGVjdGVkKGQpPyJTZWxlY3RlZCI6IkRlc2VsZWN0ZWQiKSsiIFJvdyAiKwooYi5kZXRhaWwuaW5zdC5pbmRleCsxKSsiIG9mICIrdGhpcy5zaXplfSk7Yi5zdG9wUHJvcGFnYXRpb24oKX19LF9pc1NlbGVjdGVkOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnNlbGVjdGVkSXRlbXMmJi0xPHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGIpfSxzZWxlY3RJdGVtOmZ1bmN0aW9uKGIpe2I9dGhpcy5fdGFrZUl0ZW0oYik7dGhpcy5faXNTZWxlY3RlZChiKXx8dGhpcy5wdXNoKCJzZWxlY3RlZEl0ZW1zIixiKX0sZGVzZWxlY3RJdGVtOmZ1bmN0aW9uKGIpe2I9dGhpcy5fdGFrZUl0ZW0oYik7Yj10aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihiKTstMTxiJiZ0aGlzLnNwbGljZSgic2VsZWN0ZWRJdGVtcyIsYiwxKX0sX3RvZ2dsZUl0ZW06ZnVuY3Rpb24oYil7Yj10aGlzLl90YWtlSXRlbShiKTstMT09PXRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGIpP3RoaXMuc2VsZWN0SXRlbShiKTp0aGlzLmRlc2VsZWN0SXRlbShiKX0sX3Rha2VJdGVtOmZ1bmN0aW9uKGIpe3JldHVybiJudW1iZXIiPT09CnR5cGVvZiBiJiYwPD1iJiZ0aGlzLml0ZW1zJiZ0aGlzLml0ZW1zLmxlbmd0aD5iP3RoaXMuaXRlbXNbYl06Yn0sX3NlbGVjdGVkSXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKGIpeyF0aGlzLiQuc2Nyb2xsZXIuX3BoeXNpY2FsSXRlbXN8fCJzZWxlY3RlZEl0ZW1zIiE9PWIucGF0aCYmInNlbGVjdGVkSXRlbXMuc3BsaWNlcyIhPT1iLnBhdGh8fHRoaXMuJC5zY3JvbGxlci5fcGh5c2ljYWxJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2Quc2VsZWN0ZWQ9dGhpcy5faXNTZWxlY3RlZChkLml0ZW0pfS5iaW5kKHRoaXMpKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWtleWJvYXJkLW5hdmlnYXRpb24tYmVoYXZpb3IuaHRtbC5qcwp3aW5kb3cudmFhZGluPXdpbmRvdy52YWFkaW58fHt9O3ZhYWRpbi5lbGVtZW50cz12YWFkaW4uZWxlbWVudHN8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkPXZhYWRpbi5lbGVtZW50cy5ncmlkfHx7fTsKdmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVLZXlib2FyZEJlaGF2aW9ySW1wbD17aG9zdEF0dHJpYnV0ZXM6e3JvbGU6ImFwcGxpY2F0aW9uIix0YWJpbmRleDowfSxrZXlCaW5kaW5nczp7ImN0cmwraG9tZSI6Il9vbkN0cmxIb21lIiwiY3RybCtlbmQiOiJfb25DdHJsRW5kIixkb3duOiJfb25BcnJvd0Rvd24iLGVuZDoiX29uRW5kIixlbnRlcjoiX29uRW50ZXIiLGVzYzoiX29uRXNjYXBlIixmMjoiX29uRjIiLGhvbWU6Il9vbkhvbWUiLGxlZnQ6Il9vbkFycm93TGVmdCIscGFnZWRvd246Il9vblBhZ2VEb3duIixwYWdldXA6Il9vblBhZ2VVcCIscmlnaHQ6Il9vbkFycm93UmlnaHQiLHNwYWNlOiJfb25TcGFjZSIsdGFiOiJfb25UYWIiLHVwOiJfb25BcnJvd1VwIn0sYXR0YWNoZWQ6ZnVuY3Rpb24oKXtQb2x5bWVyLklyb25BMTF5QW5ub3VuY2VyLnJlcXVlc3RBdmFpbGFiaWxpdHkoKX0scHJvcGVydGllczp7X3ZpcnR1YWxGb2N1czp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il92aXJ0dWFsRm9jdXNDaGFuZ2VkIn0sCmludGVyYWN0aW5nOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfSxuYXZpZ2F0aW5nOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwLHZhbHVlOiExfX0sbGlzdGVuZXJzOntmb2N1czoiX29uRm9jdXMiLCJjZWxsLWZvY3VzIjoiX29uQ2VsbEZvY3VzIiwiY2VsbC1jb250ZW50LWZvY3VzIjoiX29uQ2VsbENvbnRlbnRGb2N1cyJ9LHJlYWR5OmZ1bmN0aW9uKCl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZnVuY3Rpb24oYil7OT09PWIua2V5Q29kZSYmKHRoaXMuX3RhYmJlZD0hMCk7OT09PWIua2V5Q29kZSYmYi5zaGlmdEtleSYmKHRoaXMuX3NoaWZ0VGFiYmVkPSEwKX0uYmluZCh0aGlzKSwhMCk7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGZ1bmN0aW9uKGIpezk9PT1iLmtleUNvZGUmJih0aGlzLl90YWJiZWQ9ITEpOzk9PT1iLmtleUNvZGUmJmIuc2hpZnRLZXkmJih0aGlzLl9zaGlmdFRhYmJlZD0KITEpfS5iaW5kKHRoaXMpLCEwKX0sX2lzRm9vdGVyVmlzaWJsZTpmdW5jdGlvbigpe3JldHVybiAwPHRoaXMuJC5mb290ZXIuX3Jvd3MuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiFiLmhpZGRlbn0pLmxlbmd0aH0sX29uRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLl90YWJiZWQmJiF0aGlzLl9zaGlmdFRhYmJlZCYmdGhpcy5fYWN0aXZhdGVOYXZpZ2F0aW9uKCl9LF9hY3RpdmF0ZU5hdmlnYXRpb246ZnVuY3Rpb24oKXt0aGlzLiQuZm9vdGVyRm9jdXNUcmFwLmZvY3VzKCl9LF9vbkZvY3Vzb3V0OmZ1bmN0aW9uKCl7dGhpcy5pbnRlcmFjdGluZz10aGlzLm5hdmlnYXRpbmc9ITF9LF9vbkZvb3RlckZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0aW5nPSEwO3RoaXMuaW50ZXJhY3Rpbmc9ITE7dGhpcy5fdmlydHVhbEZvY3VzPXRoaXMuX3ZpcnR1YWxGb2N1c3x8KHRoaXMuX3NoaWZ0VGFiYmVkP3RoaXMuX2lzRm9vdGVyVmlzaWJsZSgpP3RoaXMuJC5mb290ZXI6dGhpcy4kLml0ZW1zOgp0aGlzLiQuaGVhZGVyKX0sX3ZpcnR1YWxGb2N1c0NoYW5nZWQ6ZnVuY3Rpb24oYixkKXtkJiYoZC5mb2N1c2VkPSExKTtiJiYoYi5fZm9jdXNlZENlbGxJbmRleD1iLl9mb2N1c2VkQ2VsbEluZGV4fHwwLGIuX2ZvY3VzZWRSb3dJbmRleD1iLl9mb2N1c2VkUm93SW5kZXh8fDAsYi5mb2N1c2VkPSEwLGI9PT10aGlzLiQuaXRlbXMmJnRoaXMuX2Vuc3VyZVZpcnR1YWxGb2N1c0luVmlld3BvcnQoKSl9LF9vblRhYjpmdW5jdGlvbihiKXtpZighdGhpcy5pbnRlcmFjdGluZyYmdGhpcy5fdmlydHVhbEZvY3VzKWlmKHRoaXMubmF2aWdhdGluZylpZihiLmRldGFpbC5rZXlib2FyZEV2ZW50LnNoaWZ0S2V5KXN3aXRjaCh0aGlzLl92aXJ0dWFsRm9jdXMpe2Nhc2UgdGhpcy4kLmZvb3Rlcjp0aGlzLl92aXJ0dWFsRm9jdXM9dGhpcy4kLml0ZW1zO2IucHJldmVudERlZmF1bHQoKTticmVhaztjYXNlIHRoaXMuJC5pdGVtczp0aGlzLl92aXJ0dWFsRm9jdXM9dGhpcy4kLmhlYWRlcjtiLnByZXZlbnREZWZhdWx0KCk7CmJyZWFrO2Nhc2UgdGhpcy4kLmhlYWRlcjp0aGlzLmZvY3VzKCksdGhpcy5fdmlydHVhbEZvY3VzPW51bGx9ZWxzZSBzd2l0Y2godGhpcy5fdmlydHVhbEZvY3VzKXtjYXNlIHRoaXMuJC5oZWFkZXI6dGhpcy5fdmlydHVhbEZvY3VzPXRoaXMuJC5pdGVtcztiLnByZXZlbnREZWZhdWx0KCk7YnJlYWs7Y2FzZSB0aGlzLiQuaXRlbXM6dGhpcy5faXNGb290ZXJWaXNpYmxlKCk/KHRoaXMuX3ZpcnR1YWxGb2N1cz10aGlzLiQuZm9vdGVyLGIucHJldmVudERlZmF1bHQoKSk6dGhpcy5hc3luYyhmdW5jdGlvbigpe3RoaXMuX3ZpcnR1YWxGb2N1cz1udWxsfSwxKTticmVhaztjYXNlIHRoaXMuJC5mb290ZXI6dGhpcy5fdmlydHVhbEZvY3VzPW51bGx9ZWxzZSB0aGlzLl9hY3RpdmF0ZU5hdmlnYXRpb24oKSxiLnByZXZlbnREZWZhdWx0KCl9LF9pc0Fib3ZlVmlld3BvcnQ6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZmlyc3RWaXNpYmxlSW5kZXg+Yn0sX29uQXJyb3dEb3duOmZ1bmN0aW9uKGIpe3RoaXMuaW50ZXJhY3Rpbmd8fAooYi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmF2aWdhdGluZz0hMCx0aGlzLl92aXJ0dWFsRm9jdXMuZm9jdXNEb3duKCksdGhpcy5fZW5zdXJlVmlydHVhbEZvY3VzSW5WaWV3cG9ydCgpKX0sX3Njcm9sbFBhZ2VEb3duOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy4kLnNjcm9sbGVyLiQudGFibGUuc2Nyb2xsVG9wKz1kLnRvcC1iLmJvdHRvbTt0aGlzLiQuc2Nyb2xsZXIuX3Njcm9sbEhhbmRsZXIoKX0sX29uUGFnZURvd246ZnVuY3Rpb24oYil7dGhpcy5pbnRlcmFjdGluZ3x8KGIucHJldmVudERlZmF1bHQoKSx0aGlzLm5hdmlnYXRpbmc9ITAsdGhpcy5fdmlydHVhbEZvY3VzPT09dGhpcy4kLml0ZW1zPyhiPXRoaXMuJC5zY3JvbGxlci5sYXN0VmlzaWJsZUluZGV4LHRoaXMuX3Njcm9sbFBhZ2VEb3duKCksdGhpcy5fdmlydHVhbEZvY3VzLl9mb2N1c2VkUm93SW5kZXgrPQp0aGlzLiQuc2Nyb2xsZXIubGFzdFZpc2libGVJbmRleC1ifHx0aGlzLiQuc2Nyb2xsZXIubGFzdFZpc2libGVJbmRleC10aGlzLl92aXJ0dWFsRm9jdXMuX2ZvY3VzZWRSb3dJbmRleCx0aGlzLl9lbnN1cmVWaXJ0dWFsRm9jdXNJblZpZXdwb3J0KCkpOnRoaXMuX3ZpcnR1YWxGb2N1cy5mb2N1c1BhZ2VEb3duKCkpfSxfc2Nyb2xsUGFnZVVwOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy4kLmhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPXRoaXMuJC5mb290ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dGhpcy4kLnNjcm9sbGVyLiQudGFibGUuc2Nyb2xsVG9wLT1kLnRvcC1iLmJvdHRvbTt0aGlzLiQuc2Nyb2xsZXIuX3Njcm9sbEhhbmRsZXIoKX0sX29uUGFnZVVwOmZ1bmN0aW9uKGIpe3RoaXMuaW50ZXJhY3Rpbmd8fChiLnByZXZlbnREZWZhdWx0KCksdGhpcy5uYXZpZ2F0aW5nPSEwLHRoaXMuX3ZpcnR1YWxGb2N1cz09PXRoaXMuJC5pdGVtcz8oYj10aGlzLiQuc2Nyb2xsZXIubGFzdFZpc2libGVJbmRleCwKdGhpcy5fc2Nyb2xsUGFnZVVwKCksdGhpcy5fdmlydHVhbEZvY3VzLl9mb2N1c2VkUm93SW5kZXgtPWItdGhpcy4kLnNjcm9sbGVyLmxhc3RWaXNpYmxlSW5kZXh8fHRoaXMuX3ZpcnR1YWxGb2N1cy5fZm9jdXNlZFJvd0luZGV4LHRoaXMuX2Vuc3VyZVZpcnR1YWxGb2N1c0luVmlld3BvcnQoKSk6dGhpcy5fdmlydHVhbEZvY3VzLmZvY3VzUGFnZVVwKCkpfSxfb25BcnJvd1VwOmZ1bmN0aW9uKGIpe3RoaXMuaW50ZXJhY3Rpbmd8fChiLnByZXZlbnREZWZhdWx0KCksdGhpcy5uYXZpZ2F0aW5nPSEwLHRoaXMuX3ZpcnR1YWxGb2N1cy5mb2N1c1VwKCksdGhpcy5fZW5zdXJlVmlydHVhbEZvY3VzSW5WaWV3cG9ydCgpKX0sX29uQXJyb3dSaWdodDpmdW5jdGlvbihiKXt0aGlzLmludGVyYWN0aW5nfHwoYi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmF2aWdhdGluZz0hMCx0aGlzLl92aXJ0dWFsRm9jdXMuZm9jdXNSaWdodCgpLHRoaXMuX2Vuc3VyZVZpcnR1YWxGb2N1c0luVmlld3BvcnQoKSl9LApfb25BcnJvd0xlZnQ6ZnVuY3Rpb24oYil7dGhpcy5pbnRlcmFjdGluZ3x8KGIucHJldmVudERlZmF1bHQoKSx0aGlzLm5hdmlnYXRpbmc9ITAsdGhpcy5fdmlydHVhbEZvY3VzLmZvY3VzTGVmdCgpLHRoaXMuX2Vuc3VyZVZpcnR1YWxGb2N1c0luVmlld3BvcnQoKSl9LF9vbkhvbWU6ZnVuY3Rpb24oYil7dGhpcy5pbnRlcmFjdGluZ3x8KGIucHJldmVudERlZmF1bHQoKSx0aGlzLm5hdmlnYXRpbmc9ITAsdGhpcy5fdmlydHVhbEZvY3VzLmZvY3VzSG9tZSgpLHRoaXMuX2Vuc3VyZVZpcnR1YWxGb2N1c0luVmlld3BvcnQoKSl9LF9vbkVuZDpmdW5jdGlvbihiKXt0aGlzLmludGVyYWN0aW5nfHwoYi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmF2aWdhdGluZz0hMCx0aGlzLl92aXJ0dWFsRm9jdXMuZm9jdXNFbmQoKSx0aGlzLl9lbnN1cmVWaXJ0dWFsRm9jdXNJblZpZXdwb3J0KCkpfSxfbW92ZUZvY3VzVG9Gb2N1c1RhcmdldDpmdW5jdGlvbigpe3ZhciBiPXRoaXMuX3ZpcnR1YWxGb2N1cy5fZm9jdXNlZENlbGwuX2NlbGxDb250ZW50OwooYj1iLnF1ZXJ5U2VsZWN0b3IoIltmb2N1cy10YXJnZXRdIil8fGIuZmlyc3RFbGVtZW50Q2hpbGQpJiZiLmZvY3VzKCl9LF9vbkVudGVyOmZ1bmN0aW9uKGIpe3RoaXMuaW50ZXJhY3Rpbmc/ImlucHV0Ij09PWIuZGV0YWlsLmtleWJvYXJkRXZlbnQudGFyZ2V0LmxvY2FsTmFtZSYmInRleHQiPT09Yi5kZXRhaWwua2V5Ym9hcmRFdmVudC50YXJnZXQudHlwZSYmdGhpcy4kLmZvb3RlckZvY3VzVHJhcC5mb2N1cygpOihiLnByZXZlbnREZWZhdWx0KCksdGhpcy5fbW92ZUZvY3VzVG9Gb2N1c1RhcmdldCgpKX0sX29uRXNjYXBlOmZ1bmN0aW9uKCl7dGhpcy5pbnRlcmFjdGluZz90aGlzLiQuZm9vdGVyRm9jdXNUcmFwLmZvY3VzKCk6dGhpcy5uYXZpZ2F0aW5nJiYodGhpcy5uYXZpZ2F0aW5nPSExKX0sX29uRjI6ZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpO3RoaXMuaW50ZXJhY3Rpbmc/dGhpcy4kLmZvb3RlckZvY3VzVHJhcC5mb2N1cygpOnRoaXMuX21vdmVGb2N1c1RvRm9jdXNUYXJnZXQoKX0sCl9vbkN0cmxIb21lOmZ1bmN0aW9uKGIpe3RoaXMuaW50ZXJhY3Rpbmd8fChiLnByZXZlbnREZWZhdWx0KCksdGhpcy5uYXZpZ2F0aW5nPSEwLHRoaXMuX3ZpcnR1YWxGb2N1cy5mb2N1c0ZpcnN0KCksdGhpcy5fZW5zdXJlVmlydHVhbEZvY3VzSW5WaWV3cG9ydCgpKX0sX29uQ3RybEVuZDpmdW5jdGlvbihiKXt0aGlzLmludGVyYWN0aW5nfHwoYi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmF2aWdhdGluZz0hMCx0aGlzLl92aXJ0dWFsRm9jdXMuZm9jdXNMYXN0KCksdGhpcy5fZW5zdXJlVmlydHVhbEZvY3VzSW5WaWV3cG9ydCgpKX0sX29uU3BhY2U6ZnVuY3Rpb24oYil7aWYoIXRoaXMuaW50ZXJhY3Rpbmcpe2IucHJldmVudERlZmF1bHQoKTtiPXRoaXMuX3ZpcnR1YWxGb2N1cy5fZm9jdXNlZENlbGw7dmFyIGQ9Yi5nZXRDb250ZW50Q2hpbGRyZW4oUG9seW1lci5FbGVtZW50PyJzbG90IjoiY29udGVudCIpWzBdLmZpcnN0RWxlbWVudENoaWxkO2Q/ZC5jbGljaygpOnRoaXMubmF2aWdhdGluZyYmCnRoaXMuZmlyZSgiY2VsbC1hY3RpdmF0ZSIse21vZGVsOmIuaW5zdGFuY2V9KX19LF9vbkNlbGxDb250ZW50Rm9jdXM6ZnVuY3Rpb24oYil7dGhpcy5pbnRlcmFjdGluZz0hMDt0aGlzLl9vbkNlbGxGb2N1cyhiKX0sX29uQ2VsbEZvY3VzOmZ1bmN0aW9uKGIpe2I9Yi5kZXRhaWwuY2VsbDt2YXIgZD1iLnBhcmVudEVsZW1lbnQsZj1kLnBhcmVudEVsZW1lbnQsaD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKFBvbHltZXIuZG9tKGYpLmNoaWxkcmVuLGQpO2Y9PT10aGlzLiQuaXRlbXMmJihoPWQuaW5kZXgpO2YuX2ZvY3VzZWRSb3dJbmRleD1oO2YuX2ZvY3VzZWRDZWxsSW5kZXg9QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChQb2x5bWVyLmRvbShkKS5jaGlsZHJlbixiKTt0aGlzLl92aXJ0dWFsRm9jdXM9ZjtiLmhhc0F0dHJpYnV0ZSgiZGV0YWlsc2NlbGwiKSYmKGYuX2ZvY3VzZWRDZWxsSW5kZXg9MCxmLl9tb3ZlRm9jdXNUb0RldGFpbHNDZWxsKCkpfSxfZW5zdXJlVmlydHVhbEZvY3VzSW5WaWV3cG9ydDpmdW5jdGlvbigpe3ZhciBiPQp0aGlzLiQuc2Nyb2xsZXIuX3ZpZHhPZmZzZXQrdGhpcy4kLnNjcm9sbGVyLl92aXJ0dWFsU3RhcnQsZD10aGlzLl92aXJ0dWFsRm9jdXMuX2ZvY3VzZWRSb3dJbmRleDt0aGlzLl92aXJ0dWFsRm9jdXM9PT10aGlzLiQuaXRlbXMmJihkPGJ8fGQ+Yit0aGlzLiQuc2Nyb2xsZXIuX3BoeXNpY2FsQ291bnQpJiYodGhpcy4kLnNjcm9sbGVyLnNjcm9sbFRvU2NhbGVkSW5kZXgoZCksdGhpcy5fdmlydHVhbEZvY3VzLl9mb2N1c2VkQ2VsbENoYW5nZWQoZCx0aGlzLl92aXJ0dWFsRm9jdXMuX2ZvY3VzZWRDZWxsSW5kZXgpKTt0aGlzLl9lbnN1cmVFbGVtZW50SW5WaWV3cG9ydCh0aGlzLl92aXJ0dWFsRm9jdXMuX2ZvY3VzZWRDZWxsKX0sX2Vuc3VyZUVsZW1lbnRJblZpZXdwb3J0OmZ1bmN0aW9uKGIpe3ZhciBkPWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYodGhpcy5fdmlydHVhbEZvY3VzPT09dGhpcy4kLml0ZW1zKXt2YXIgZj10aGlzLiQuZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCwKaD10aGlzLiQuaGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbTtkLmJvdHRvbT5mP3RoaXMuJC5zY3JvbGxlci4kLnRhYmxlLnNjcm9sbFRvcCs9ZC5ib3R0b20tZjpkLnRvcDxoJiYodGhpcy4kLnNjcm9sbGVyLiQudGFibGUuc2Nyb2xsVG9wKz1kLnRvcC1oKX1pZighYi5oYXNBdHRyaWJ1dGUoImRldGFpbHNjZWxsIikpe2I9dGhpcy4kLnNjcm9sbGVyLiQudGFibGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQ7Zj10aGlzLiQuc2Nyb2xsZXIuJC50YWJsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O2lmKGg9dGhpcy5fdmlydHVhbEZvY3VzLl9mb2N1c2VkUm93LnF1ZXJ5U2VsZWN0b3IoIltsYXN0LWZyb3plbl0iKSlmPWguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQ7ZC5yaWdodD5iP3RoaXMuJC5zY3JvbGxlci4kLnRhYmxlLnNjcm9sbExlZnQrPWQucmlnaHQtYjpkLmxlZnQ8ZiYmKHRoaXMuJC5zY3JvbGxlci4kLnRhYmxlLnNjcm9sbExlZnQrPQpkLmxlZnQtZil9fX07dmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVLZXlib2FyZEJlaGF2aW9yPVt2YWFkaW4uZWxlbWVudHMuZ3JpZC5UYWJsZUtleWJvYXJkQmVoYXZpb3JJbXBsLFBvbHltZXIuSXJvbkExMXlLZXlzQmVoYXZpb3JdOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWNvbHVtbi1yZW9yZGVyaW5nLWJlaGF2aW9yLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307dmFhZGluLmVsZW1lbnRzLmdyaWQuQ29sdW1uUmVvcmRlcmluZ0JlaGF2aW9yPXtwcm9wZXJ0aWVzOntjb2x1bW5SZW9yZGVyaW5nQWxsb3dlZDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfX19Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5UYWJsZUNvbHVtblJlb3JkZXJpbmdCZWhhdmlvcj17cHJvcGVydGllczp7X29yZGVyQmFzZVNjb3BlOnt0eXBlOk51bWJlcix2YWx1ZToxRTd9fSxsaXN0ZW5lcnM6e2RyYWdzdGFydDoiX29uRHJhZ1N0YXJ0IixkcmFnb3ZlcjoiX29uRHJhZ092ZXIiLGRyYWdlbmQ6Il9vbkRyYWdFbmQifSxvYnNlcnZlcnM6WyJfdXBkYXRlT3JkZXJzKGNvbHVtblRyZWUsIGNvbHVtblRyZWUuKikiXSxfdXBkYXRlT3JkZXJzOmZ1bmN0aW9uKGIsZCl7dm9pZCAwIT09YiYmdm9pZCAwIT09ZCYmYlswXS5mb3JFYWNoKGZ1bmN0aW9uKGYsaCl7Zi5fb3JkZXI9KGgrMSkqdGhpcy5fb3JkZXJCYXNlU2NvcGV9LHRoaXMpfSxfb25EcmFnU3RhcnQ6ZnVuY3Rpb24oYil7aWYoInZhYWRpbi1ncmlkLWNlbGwtY29udGVudCI9PT1iLnRhcmdldC5sb2NhbE5hbWUpe3ZhciBkPXRoaXMuX2dldENlbGxCeUNlbGxDb250ZW50KGIudGFyZ2V0KTtkJiYodGhpcy50b2dnbGVBdHRyaWJ1dGUoInJlb3JkZXJpbmciLAohMCksdGhpcy5fZHJhZ2dlZENvbHVtbj1kLmNvbHVtbix0aGlzLl9zZXRTaWJsaW5nc1Jlb3JkZXJTdGF0dXModGhpcy5fZHJhZ2dlZENvbHVtbiwiYWxsb3dlZCIpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9ImRyYWdnaW5nIixiLmRhdGFUcmFuc2ZlciYmKGIuZGF0YVRyYW5zZmVyLnNldERhdGEoInRleHQiLCIiKSxiLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPSJtb3ZlIiksdGhpcy5fYXV0b1Njcm9sbGVyKCkpfX0sX3NldFNpYmxpbmdzUmVvcmRlclN0YXR1czpmdW5jdGlvbihiLGQpe0FycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChQb2x5bWVyLmRvbShQb2x5bWVyLmRvbShiKS5wYXJlbnROb2RlKS5jaGlsZHJlbixmdW5jdGlvbihmKXtyZXR1cm4vY29sdW1uLy50ZXN0KGYubG9jYWxOYW1lKSYmdGhpcy5faXNTd2FwQWxsb3dlZChmLGIpfSx0aGlzKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2YuX3Jlb3JkZXJTdGF0dXM9ZH0pfSxfb25EcmFnT3ZlcjpmdW5jdGlvbihiKXtpZih0aGlzLl9kcmFnZ2VkQ29sdW1uKXt2YXIgZD0KKFBvbHltZXIuRWxlbWVudD9iLmNvbXBvc2VkUGF0aCgpOlBvbHltZXIuZG9tKGIpLnBhdGgpLmZpbHRlcihmdW5jdGlvbihmKXtyZXR1cm4idmFhZGluLWdyaWQtY2VsbC1jb250ZW50Ij09PWYubG9jYWxOYW1lfSlbMF07ZCYmKGIucHJldmVudERlZmF1bHQoKSxkPXRoaXMuX2dldENlbGxCeUNlbGxDb250ZW50KGQpLChkPXRoaXMuX2dldFRhcmdldENvbHVtbihkLHRoaXMuX2RyYWdnZWRDb2x1bW4pKSYmdGhpcy5faXNTd2FwQWxsb3dlZCh0aGlzLl9kcmFnZ2VkQ29sdW1uLGQpJiZ0aGlzLl9pc1N3YXBwYWJsZUJ5UG9zaXRpb24oZCxiLmNsaWVudFgpJiZ0aGlzLl9zd2FwQ29sdW1uT3JkZXJzKHRoaXMuX2RyYWdnZWRDb2x1bW4sZCksdGhpcy5fbGFzdERyYWdDbGllbnRYPWIuY2xpZW50WCl9fSxfYXV0b1Njcm9sbGVyOmZ1bmN0aW9uKCl7aWYodGhpcy5fbGFzdERyYWdDbGllbnRYKXt2YXIgYj10aGlzLl9sYXN0RHJhZ0NsaWVudFgtdGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodCsKNTAsZD10aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtdGhpcy5fbGFzdERyYWdDbGllbnRYKzUwOzA8Yj90aGlzLiQudGFibGUuc2Nyb2xsTGVmdCs9Yi8xMDowPGQmJih0aGlzLiQudGFibGUuc2Nyb2xsTGVmdC09ZC8xMCk7dGhpcy5fc2Nyb2xsSGFuZGxlcigpfXRoaXMuX2RyYWdnZWRDb2x1bW4mJnRoaXMuYXN5bmModGhpcy5fYXV0b1Njcm9sbGVyLDEwKX0sX29uRHJhZ0VuZDpmdW5jdGlvbigpe3RoaXMuX2RyYWdnZWRDb2x1bW4mJih0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgicmVvcmRlcmluZyIsITEpLHRoaXMuX2RyYWdnZWRDb2x1bW4uX3Jlb3JkZXJTdGF0dXM9IiIsdGhpcy5fc2V0U2libGluZ3NSZW9yZGVyU3RhdHVzKHRoaXMuX2RyYWdnZWRDb2x1bW4sIiIpLHRoaXMuX2xhc3REcmFnQ2xpZW50WD10aGlzLl9kcmFnZ2VkQ29sdW1uPW51bGwpfSxfaXNTd2FwQWxsb3dlZDpmdW5jdGlvbihiLGQpe2lmKGImJmQpe3ZhciBmPWIucGFyZW50RWxlbWVudD09PWQucGFyZW50RWxlbWVudCwKaD1iLmZyb3plbj09PWQuZnJvemVuO3JldHVybiBiIT09ZCYmZiYmaH19LF9pc1N3YXBwYWJsZUJ5UG9zaXRpb246ZnVuY3Rpb24oYixkKXt2YXIgZj1BcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoUG9seW1lci5kb20odGhpcy4kLmhlYWRlcikucXVlcnlTZWxlY3RvckFsbCgiLnZhYWRpbi1ncmlkLWNlbGwiKSxmdW5jdGlvbihrKXtyZXR1cm4gay5jb2x1bW49PT1ifSlbMF0saD10aGlzLiQuaGVhZGVyLnF1ZXJ5U2VsZWN0b3IoIltyZW9yZGVyLXN0YXR1c1x4M2RkcmFnZ2luZ10iKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4gZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0PmgubGVmdD9kPmYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQtaC53aWR0aDpkPGYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCtoLndpZHRofSxfZ2V0Q2VsbEJ5Q2VsbENvbnRlbnQ6ZnVuY3Rpb24oYil7aWYoUG9seW1lci5FbGVtZW50KXJldHVybiBiLmFzc2lnbmVkU2xvdC5wYXJlbnROb2RlOwpiPVBvbHltZXIuZG9tKGIpLmdldERlc3RpbmF0aW9uSW5zZXJ0aW9uUG9pbnRzKClbMF07cmV0dXJuIFBvbHltZXIuZG9tKGIpLnBhcmVudE5vZGV9LF9zd2FwQ29sdW1uT3JkZXJzOmZ1bmN0aW9uKGIsZCl7dmFyIGY9Yi5fb3JkZXI7Yi5fb3JkZXI9ZC5fb3JkZXI7ZC5fb3JkZXI9Zjt0aGlzLl91cGRhdGVMYXN0RnJvemVuKCk7dGhpcy5fdXBkYXRlTGFzdENvbHVtbigpfSxfZ2V0VGFyZ2V0Q29sdW1uOmZ1bmN0aW9uKGIsZCl7aWYoYiYmZCl7Zm9yKHZhciBmPWIuY29sdW1uO2YucGFyZW50RWxlbWVudCE9PWQucGFyZW50RWxlbWVudCYmZiE9PXRoaXMudGFyZ2V0OylmPWYucGFyZW50RWxlbWVudDtyZXR1cm4gZi5wYXJlbnRFbGVtZW50PT09ZC5wYXJlbnRFbGVtZW50P2Y6Yi5jb2x1bW59fX07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdmFhZGluLWdyaWQvaXJvbi1saXN0LWJlaGF2aW9yLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307CnZhYWRpbi5lbGVtZW50cy5ncmlkLklyb25MaXN0QmVoYXZpb3JJbXBsPWZ1bmN0aW9uKCl7dmFyIGI9bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaVAoPzpob25lfGFkOyg/OiBVOyk/IENQVSkgT1MgKFxkKykvKSxkPWImJjg8PWJbMV07cmV0dXJue2lzOiJpcm9uLWxpc3QiLHByb3BlcnRpZXM6e21heFBoeXNpY2FsQ291bnQ6e3R5cGU6TnVtYmVyLHZhbHVlOjUwMH0sYXM6e3R5cGU6U3RyaW5nLHZhbHVlOiJpdGVtIn0saW5kZXhBczp7dHlwZTpTdHJpbmcsdmFsdWU6ImluZGV4In19LF9yYXRpbzouNSxfc2Nyb2xsZXJQYWRkaW5nVG9wOjAsX3Njcm9sbFBvc2l0aW9uOjAsX3BoeXNpY2FsU2l6ZTowLF9waHlzaWNhbEF2ZXJhZ2U6MCxfcGh5c2ljYWxBdmVyYWdlQ291bnQ6MCxfcGh5c2ljYWxUb3A6MCxfdmlydHVhbENvdW50OjAsX3BoeXNpY2FsSW5kZXhGb3JLZXk6bnVsbCxfZXN0U2Nyb2xsSGVpZ2h0OjAsX3Njcm9sbEhlaWdodDowLF92aWV3cG9ydEhlaWdodDowLF92aWV3cG9ydFdpZHRoOjAsCl9waHlzaWNhbEl0ZW1zOm51bGwsX3BoeXNpY2FsU2l6ZXM6bnVsbCxfZmlyc3RWaXNpYmxlSW5kZXhWYWw6bnVsbCxfbGFzdFZpc2libGVJbmRleFZhbDpudWxsLF9jb2xsZWN0aW9uOm51bGwsX2l0ZW1zUmVuZGVyZWQ6ITEsX2xhc3RQYWdlOm51bGwsX21heFBhZ2VzOjMsX2l0ZW1zUGVyUm93OjEsX2l0ZW1XaWR0aDowLF9yb3dIZWlnaHQ6MCxnZXQgX3BoeXNpY2FsQm90dG9tKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3BoeXNpY2FsU2l6ZX0sZ2V0IF9zY3JvbGxCb3R0b20oKXtyZXR1cm4gdGhpcy5fc2Nyb2xsUG9zaXRpb24rdGhpcy5fdmlld3BvcnRIZWlnaHR9LGdldCBfdmlydHVhbEVuZCgpe3JldHVybiB0aGlzLl92aXJ0dWFsU3RhcnQrdGhpcy5fcGh5c2ljYWxDb3VudC0xfSxnZXQgX2hpZGRlbkNvbnRlbnRTaXplKCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU2l6ZS10aGlzLl92aWV3cG9ydEhlaWdodH0sZ2V0IF9tYXhTY3JvbGxUb3AoKXtyZXR1cm4gdGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LQp0aGlzLl92aWV3cG9ydEhlaWdodCt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3B9LF9taW5WaXJ0dWFsU3RhcnQ6MCxnZXQgX21heFZpcnR1YWxTdGFydCgpe3JldHVybiBNYXRoLm1heCgwLHRoaXMuX3ZpcnR1YWxDb3VudC10aGlzLl9waHlzaWNhbENvdW50KX0sX3ZpcnR1YWxTdGFydFZhbDowLHNldCBfdmlydHVhbFN0YXJ0KGYpe3RoaXMuX3ZpcnR1YWxTdGFydFZhbD1NYXRoLm1pbih0aGlzLl9tYXhWaXJ0dWFsU3RhcnQsTWF0aC5tYXgodGhpcy5fbWluVmlydHVhbFN0YXJ0LGYpKX0sZ2V0IF92aXJ0dWFsU3RhcnQoKXtyZXR1cm4gdGhpcy5fdmlydHVhbFN0YXJ0VmFsfHwwfSxfcGh5c2ljYWxTdGFydFZhbDowLHNldCBfcGh5c2ljYWxTdGFydChmKXt0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPWYldGhpcy5fcGh5c2ljYWxDb3VudDswPnRoaXMuX3BoeXNpY2FsU3RhcnRWYWwmJih0aGlzLl9waHlzaWNhbFN0YXJ0VmFsPXRoaXMuX3BoeXNpY2FsQ291bnQrdGhpcy5fcGh5c2ljYWxTdGFydFZhbCk7CnRoaXMuX3BoeXNpY2FsRW5kPSh0aGlzLl9waHlzaWNhbFN0YXJ0K3RoaXMuX3BoeXNpY2FsQ291bnQtMSkldGhpcy5fcGh5c2ljYWxDb3VudH0sZ2V0IF9waHlzaWNhbFN0YXJ0KCl7cmV0dXJuIHRoaXMuX3BoeXNpY2FsU3RhcnRWYWx8fDB9LF9waHlzaWNhbENvdW50VmFsOjAsc2V0IF9waHlzaWNhbENvdW50KGYpe3RoaXMuX3BoeXNpY2FsQ291bnRWYWw9Zjt0aGlzLl9waHlzaWNhbEVuZD0odGhpcy5fcGh5c2ljYWxTdGFydCt0aGlzLl9waHlzaWNhbENvdW50LTEpJXRoaXMuX3BoeXNpY2FsQ291bnR9LGdldCBfcGh5c2ljYWxDb3VudCgpe3JldHVybiB0aGlzLl9waHlzaWNhbENvdW50VmFsfSxfcGh5c2ljYWxFbmQ6MCxnZXQgX29wdFBoeXNpY2FsU2l6ZSgpe3JldHVybiB0aGlzLl92aWV3cG9ydEhlaWdodCp0aGlzLl9tYXhQYWdlc30sZ2V0IF9vcHRQaHlzaWNhbENvdW50KCl7cmV0dXJuIHRoaXMuX2VzdFJvd3NJblZpZXcqdGhpcy5faXRlbXNQZXJSb3cqdGhpcy5fbWF4UGFnZXN9LApnZXQgX2lzVmlzaWJsZSgpe3JldHVybiB0aGlzLnNjcm9sbFRhcmdldCYmISghdGhpcy5zY3JvbGxUYXJnZXQub2Zmc2V0V2lkdGgmJiF0aGlzLnNjcm9sbFRhcmdldC5vZmZzZXRIZWlnaHQpfSxnZXQgZmlyc3RWaXNpYmxlSW5kZXgoKXtpZihudWxsPT09dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWwpe3ZhciBmPU1hdGguZmxvb3IodGhpcy5fcGh5c2ljYWxUb3ArdGhpcy5fc2Nyb2xsZXJQYWRkaW5nVG9wKTt0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbD10aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24oaCxrKXtmKz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoaCk7aWYoZj50aGlzLl9zY3JvbGxQb3NpdGlvbilyZXR1cm4ga30pfHwwfXJldHVybiB0aGlzLl9maXJzdFZpc2libGVJbmRleFZhbH0sZ2V0IGxhc3RWaXNpYmxlSW5kZXgoKXtpZihudWxsPT09dGhpcy5fbGFzdFZpc2libGVJbmRleFZhbCl7dmFyIGY9dGhpcy5fcGh5c2ljYWxUb3A7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKGgsCmspe2lmKGY8dGhpcy5fc2Nyb2xsQm90dG9tKXRoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9aztlbHNlIHJldHVybiEwO2YrPXRoaXMuX2dldFBoeXNpY2FsU2l6ZUluY3JlbWVudChoKX0pfXJldHVybiB0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsfSxnZXQgX2RlZmF1bHRTY3JvbGxUYXJnZXQoKXtyZXR1cm4gdGhpc30sZ2V0IF92aXJ0dWFsUm93Q291bnQoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuX3ZpcnR1YWxDb3VudC90aGlzLl9pdGVtc1BlclJvdyl9LGdldCBfZXN0Um93c0luVmlldygpe3JldHVybiBNYXRoLmNlaWwodGhpcy5fdmlld3BvcnRIZWlnaHQvdGhpcy5fcm93SGVpZ2h0KX0sZ2V0IF9waHlzaWNhbFJvd3MoKXtyZXR1cm4gTWF0aC5jZWlsKHRoaXMuX3BoeXNpY2FsQ291bnQvdGhpcy5faXRlbXNQZXJSb3cpfSxhdHRhY2hlZDpmdW5jdGlvbigpe3RoaXMudXBkYXRlVmlld3BvcnRCb3VuZGFyaWVzKCk7dGhpcy5fcmVuZGVyKCk7dGhpcy5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLAoiX3Jlc2l6ZUhhbmRsZXIiKX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9pdGVtc1JlbmRlcmVkPSExO3RoaXMudW5saXN0ZW4odGhpcywiaXJvbi1yZXNpemUiLCJfcmVzaXplSGFuZGxlciIpfSx1cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXM6ZnVuY3Rpb24oKXt0aGlzLl9zY3JvbGxlclBhZGRpbmdUb3A9dGhpcy5zY3JvbGxUYXJnZXQ9PT10aGlzPzA6cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcylbInBhZGRpbmctdG9wIl18fDAsMTApO3RoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodH0sX3VwZGF0ZTpmdW5jdGlvbihmLGgpe3RoaXMuX2Fzc2lnbk1vZGVscyhmKTt0aGlzLl91cGRhdGVNZXRyaWNzKGYpO2lmKGgpZm9yKDtoLmxlbmd0aDspZj1oLnBvcCgpLHRoaXMuX3BoeXNpY2FsVG9wLT10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoZik7dGhpcy5fcG9zaXRpb25JdGVtcygpO3RoaXMuX3VwZGF0ZVNjcm9sbGVyU2l6ZSgpOwp0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgpfSxfaW5jcmVhc2VQb29sSWZOZWVkZWQ6ZnVuY3Rpb24oKXtpZigwPT09dGhpcy5fdmlld3BvcnRIZWlnaHQpcmV0dXJuITE7dmFyIGY9dGhpcy5fcGh5c2ljYWxTaXplcy5yZWR1Y2UoZnVuY3Rpb24oayx0KXtyZXR1cm4gaysodHx8MTAwKX0sMCksaD1mPnRoaXMuX3ZpZXdwb3J0SGVpZ2h0O2lmKGY+PXRoaXMuX29wdFBoeXNpY2FsU2l6ZSYmaClyZXR1cm4hMTtmPU1hdGguZmxvb3IodGhpcy5fcGh5c2ljYWxTaXplL3RoaXMuX3ZpZXdwb3J0SGVpZ2h0KTswPT09Zj90aGlzLl9kZWJvdW5jZVRlbXBsYXRlKHRoaXMuX2luY3JlYXNlUG9vbC5iaW5kKHRoaXMsTWF0aC5yb3VuZCguNSp0aGlzLl9waHlzaWNhbENvdW50KSkpOnRoaXMuX2xhc3RQYWdlIT09ZiYmaD9Qb2x5bWVyLmRvbS5hZGREZWJvdW5jZXIodGhpcy5kZWJvdW5jZSgiX2RlYm91bmNlVGVtcGxhdGUiLHRoaXMuX2luY3JlYXNlUG9vbC5iaW5kKHRoaXMsdGhpcy5faXRlbXNQZXJSb3cpLAoxNikpOnRoaXMuX2RlYm91bmNlVGVtcGxhdGUodGhpcy5faW5jcmVhc2VQb29sLmJpbmQodGhpcyxNYXRoLmNlaWwodGhpcy5fdmlld3BvcnRIZWlnaHQvKHRoaXMuX3BoeXNpY2FsU2l6ZS90aGlzLl9waHlzaWNhbENvdW50KSp0aGlzLl9tYXhQYWdlcy10aGlzLl9waHlzaWNhbENvdW50KXx8MSkpO3RoaXMuX2xhc3RQYWdlPWY7cmV0dXJuITB9LF9kZWJvdW5jZVRlbXBsYXRlOmZ1bmN0aW9uKGYpe1BvbHltZXIuZG9tLmFkZERlYm91bmNlcih0aGlzLmRlYm91bmNlKCJfZGVib3VuY2VUZW1wbGF0ZSIsZikpfSxfaW5jcmVhc2VQb29sOmZ1bmN0aW9uKGYpe3ZhciBoPXRoaXMuX3BoeXNpY2FsQ291bnQ7Zj1NYXRoLm1pbih0aGlzLl9waHlzaWNhbENvdW50K2YsdGhpcy5fdmlydHVhbENvdW50LXRoaXMuX3ZpcnR1YWxTdGFydCxNYXRoLm1heCh0aGlzLm1heFBoeXNpY2FsQ291bnQsMjUpKS1oOzA+PWZ8fChbXS5wdXNoLmFwcGx5KHRoaXMuX3BoeXNpY2FsSXRlbXMsdGhpcy5fY3JlYXRlUG9vbChmKSksCltdLnB1c2guYXBwbHkodGhpcy5fcGh5c2ljYWxTaXplcyxBcnJheShmKSksdGhpcy5fcGh5c2ljYWxDb3VudD1oK2YsdGhpcy5fdXBkYXRlKCkpfSxfcmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGY9MDx0aGlzLl92aXJ0dWFsQ291bnR8fDA8dGhpcy5fcGh5c2ljYWxDb3VudDt0aGlzLmlzQXR0YWNoZWQmJiF0aGlzLl9pdGVtc1JlbmRlcmVkJiZ0aGlzLl9pc1Zpc2libGUmJmYmJih0aGlzLl9sYXN0UGFnZT0wLHRoaXMuX3VwZGF0ZSgpLHRoaXMuX2l0ZW1zUmVuZGVyZWQ9ITApfSxfaXRlcmF0ZUl0ZW1zOmZ1bmN0aW9uKGYsaCl7dmFyIGssdDtpZigyPT09YXJndW1lbnRzLmxlbmd0aCYmaClmb3IodD0wO3Q8aC5sZW5ndGg7dCsrKXt2YXIgbD1oW3RdO3ZhciBwPXRoaXMuX2NvbXB1dGVWaWR4KGwpO2lmKG51bGwhPShrPWYuY2FsbCh0aGlzLGwscCkpKXJldHVybiBrfWVsc2V7bD10aGlzLl9waHlzaWNhbFN0YXJ0O2ZvcihwPXRoaXMuX3ZpcnR1YWxTdGFydDtsPHRoaXMuX3BoeXNpY2FsQ291bnQ7bCsrLApwKyspaWYobnVsbCE9KGs9Zi5jYWxsKHRoaXMsbCxwKSkpcmV0dXJuIGs7Zm9yKGw9MDtsPHRoaXMuX3BoeXNpY2FsU3RhcnQ7bCsrLHArKylpZihudWxsIT0oaz1mLmNhbGwodGhpcyxsLHApKSlyZXR1cm4ga319LF9jb21wdXRlVmlkeDpmdW5jdGlvbihmKXtyZXR1cm4gZj49dGhpcy5fcGh5c2ljYWxTdGFydD90aGlzLl92aXJ0dWFsU3RhcnQrKGYtdGhpcy5fcGh5c2ljYWxTdGFydCk6dGhpcy5fdmlydHVhbFN0YXJ0Kyh0aGlzLl9waHlzaWNhbENvdW50LXRoaXMuX3BoeXNpY2FsU3RhcnQpK2Z9LF91cGRhdGVNZXRyaWNzOmZ1bmN0aW9uKGYpe3RoaXMuc2Nyb2xsaW5nJiZQb2x5bWVyLmRvbS5mbHVzaCgpO3ZhciBoPTAsaz0wLHQ9dGhpcy5fcGh5c2ljYWxBdmVyYWdlQ291bnQsbD10aGlzLl9waHlzaWNhbEF2ZXJhZ2U7dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKHApe2srPXRoaXMuX3BoeXNpY2FsU2l6ZXNbcF18fDA7dGhpcy5fcGh5c2ljYWxTaXplc1twXT10aGlzLl9waHlzaWNhbEl0ZW1zW3BdLm9mZnNldEhlaWdodDsKaCs9dGhpcy5fcGh5c2ljYWxTaXplc1twXTt0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCs9dGhpcy5fcGh5c2ljYWxTaXplc1twXT8xOjB9LGYpO3RoaXMuX3ZpZXdwb3J0SGVpZ2h0PXRoaXMuX3Njcm9sbFRhcmdldEhlaWdodDt0aGlzLl9waHlzaWNhbFNpemU9dGhpcy5fcGh5c2ljYWxTaXplK2gtazt0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudCE9PXQmJih0aGlzLl9waHlzaWNhbEF2ZXJhZ2U9TWF0aC5yb3VuZCgobCp0K2gpL3RoaXMuX3BoeXNpY2FsQXZlcmFnZUNvdW50KSl9LF9wb3NpdGlvbkl0ZW1zOmZ1bmN0aW9uKCl7dGhpcy5fYWRqdXN0U2Nyb2xsUG9zaXRpb24oKTt2YXIgZj10aGlzLl9waHlzaWNhbFRvcDt0aGlzLl9pdGVyYXRlSXRlbXMoZnVuY3Rpb24oaCl7dGhpcy5fcGh5c2ljYWxJdGVtc1toXS5zdHlsZS50cmFuc2Zvcm09dGhpcy5fZ2V0VHJhbnNsYXRlKDAsZik7Zis9dGhpcy5fcGh5c2ljYWxTaXplc1toXX0pfSxfZ2V0UGh5c2ljYWxTaXplSW5jcmVtZW50OmZ1bmN0aW9uKGYpe3JldHVybiB0aGlzLl9waHlzaWNhbFNpemVzW2ZdfSwKX3Nob3VsZFJlbmRlck5leHRSb3c6ZnVuY3Rpb24oZil7cmV0dXJuIGYldGhpcy5faXRlbXNQZXJSb3c9PT10aGlzLl9pdGVtc1BlclJvdy0xfSxfYWRqdXN0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgZj0wPT09dGhpcy5fdmlydHVhbFN0YXJ0P3RoaXMuX3BoeXNpY2FsVG9wOk1hdGgubWluKHRoaXMuX3Njcm9sbFBvc2l0aW9uK3RoaXMuX3BoeXNpY2FsVG9wLDApO2YmJih0aGlzLl9waHlzaWNhbFRvcC09ZixkfHwwPT09dGhpcy5fcGh5c2ljYWxUb3B8fHRoaXMuX3Jlc2V0U2Nyb2xsUG9zaXRpb24odGhpcy5fc2Nyb2xsVG9wLWYpKX0sX3Jlc2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oZil7dGhpcy5zY3JvbGxUYXJnZXQmJih0aGlzLl9zY3JvbGxQb3NpdGlvbj10aGlzLl9zY3JvbGxUb3A9Zil9LF91cGRhdGVTY3JvbGxlclNpemU6ZnVuY3Rpb24oZil7dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0PXRoaXMuX3BoeXNpY2FsQm90dG9tK01hdGgubWF4KHRoaXMuX3ZpcnR1YWxDb3VudC0KdGhpcy5fcGh5c2ljYWxDb3VudC10aGlzLl92aXJ0dWFsU3RhcnQsMCkqdGhpcy5fcGh5c2ljYWxBdmVyYWdlO2lmKChmPShmPWZ8fDA9PT10aGlzLl9zY3JvbGxIZWlnaHQpfHx0aGlzLl9zY3JvbGxQb3NpdGlvbj49dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0LXRoaXMuX3BoeXNpY2FsU2l6ZSl8fE1hdGguYWJzKHRoaXMuX2VzdFNjcm9sbEhlaWdodC10aGlzLl9zY3JvbGxIZWlnaHQpPj10aGlzLl9vcHRQaHlzaWNhbFNpemUpdGhpcy4kLml0ZW1zLnN0eWxlLmhlaWdodD10aGlzLl9lc3RTY3JvbGxIZWlnaHQrInB4Iix0aGlzLl9zY3JvbGxIZWlnaHQ9dGhpcy5fZXN0U2Nyb2xsSGVpZ2h0fSxzY3JvbGxUb0luZGV4OmZ1bmN0aW9uKGYpe1BvbHltZXIuZG9tLmZsdXNoKCk7Zj1NYXRoLm1pbihNYXRoLm1heChmLDApLHRoaXMuX3ZpcnR1YWxDb3VudC0xKTtpZighdGhpcy5faXNJbmRleFJlbmRlcmVkKGYpfHxmPj10aGlzLl9tYXhWaXJ0dWFsU3RhcnQpdGhpcy5fdmlydHVhbFN0YXJ0PQpmLTE7dGhpcy5fYXNzaWduTW9kZWxzKCk7dGhpcy5fdXBkYXRlTWV0cmljcygpO3RoaXMuX3BoeXNpY2FsVG9wPU1hdGguZmxvb3IodGhpcy5fdmlydHVhbFN0YXJ0L3RoaXMuX2l0ZW1zUGVyUm93KSp0aGlzLl9waHlzaWNhbEF2ZXJhZ2U7Zm9yKHZhciBoPXRoaXMuX3BoeXNpY2FsU3RhcnQsaz10aGlzLl92aXJ0dWFsU3RhcnQsdD0wLGw9dGhpcy5faGlkZGVuQ29udGVudFNpemU7azxmJiZ0PD1sOyl0Kz10aGlzLl9nZXRQaHlzaWNhbFNpemVJbmNyZW1lbnQoaCksaD0oaCsxKSV0aGlzLl9waHlzaWNhbENvdW50LGsrKzt0aGlzLl91cGRhdGVTY3JvbGxlclNpemUoITApO3RoaXMuX3Bvc2l0aW9uSXRlbXMoKTt0aGlzLl9yZXNldFNjcm9sbFBvc2l0aW9uKHRoaXMuX3BoeXNpY2FsVG9wK3RoaXMuX3Njcm9sbGVyUGFkZGluZ1RvcCt0KTt0aGlzLl9pbmNyZWFzZVBvb2xJZk5lZWRlZCgpO3RoaXMuX2xhc3RWaXNpYmxlSW5kZXhWYWw9dGhpcy5fZmlyc3RWaXNpYmxlSW5kZXhWYWw9Cm51bGx9LF9yZXNldEF2ZXJhZ2U6ZnVuY3Rpb24oKXt0aGlzLl9waHlzaWNhbEF2ZXJhZ2VDb3VudD10aGlzLl9waHlzaWNhbEF2ZXJhZ2U9MH0sX3Jlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXtQb2x5bWVyLmRvbS5hZGREZWJvdW5jZXIodGhpcy5kZWJvdW5jZSgiX2RlYm91bmNlVGVtcGxhdGUiLGZ1bmN0aW9uKCl7dGhpcy51cGRhdGVWaWV3cG9ydEJvdW5kYXJpZXMoKTt0aGlzLl9yZW5kZXIoKTt0aGlzLl9pdGVtc1JlbmRlcmVkJiZ0aGlzLl9waHlzaWNhbEl0ZW1zJiZ0aGlzLl9pc1Zpc2libGUmJih0aGlzLl9yZXNldEF2ZXJhZ2UoKSx0aGlzLnNjcm9sbFRvSW5kZXgodGhpcy5maXJzdFZpc2libGVJbmRleCkpfS5iaW5kKHRoaXMpLDEpKX0sdXBkYXRlU2l6ZUZvckl0ZW06ZnVuY3Rpb24oZil7Zj10aGlzLl9waHlzaWNhbEluZGV4Rm9yS2V5W2ZdO251bGwhPWYmJih0aGlzLl91cGRhdGVNZXRyaWNzKFtmXSksdGhpcy5fcG9zaXRpb25JdGVtcygpKX0sX2lzSW5kZXhSZW5kZXJlZDpmdW5jdGlvbihmKXtyZXR1cm4gZj49CnRoaXMuX3ZpcnR1YWxTdGFydCYmZjw9dGhpcy5fdmlydHVhbEVuZH0sX2lzSW5kZXhWaXNpYmxlOmZ1bmN0aW9uKGYpe3JldHVybiBmPj10aGlzLmZpcnN0VmlzaWJsZUluZGV4JiZmPD10aGlzLmxhc3RWaXNpYmxlSW5kZXh9fX0oKTt2YWFkaW4uZWxlbWVudHMuZ3JpZC5Jcm9uTGlzdEJlaGF2aW9yPVtQb2x5bWVyLlRlbXBsYXRpemVyLFBvbHltZXIuSXJvblNjcm9sbFRhcmdldEJlaGF2aW9yLHZhYWRpbi5lbGVtZW50cy5ncmlkLklyb25MaXN0QmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC10YWJsZS5odG1sLmpzClBvbHltZXIoe2lzOiJ2YWFkaW4tZ3JpZC10YWJsZSIsYmVoYXZpb3JzOlt2YWFkaW4uZWxlbWVudHMuZ3JpZC5Jcm9uTGlzdEJlaGF2aW9yLHZhYWRpbi5lbGVtZW50cy5ncmlkLlRhYmxlU2Nyb2xsQmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuVGFibGVDb2x1bW5SZW9yZGVyaW5nQmVoYXZpb3IsUG9seW1lci5UZW1wbGF0aXplcl0scHJvcGVydGllczp7c2l6ZTpOdW1iZXIsY29sdW1uVHJlZTpBcnJheSxiaW5kRGF0YTpGdW5jdGlvbixyb3dEZXRhaWxzVGVtcGxhdGU6T2JqZWN0LGNvbHVtblJlb3JkZXJpbmdBbGxvd2VkOnt0eXBlOkJvb2xlYW4scmVmbGVjdFRvQXR0cmlidXRlOiEwfSxzYWZhcmk6e3R5cGU6Qm9vbGVhbix2YWx1ZTovXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpfSxzY3JvbGxiYXJXaWR0aDp7dHlwZTpOdW1iZXIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKYi5zdHlsZS53aWR0aD0iMTAwcHgiO2Iuc3R5bGUuaGVpZ2h0PSIxMDBweCI7Yi5zdHlsZS5vdmVyZmxvdz0ic2Nyb2xsIjtiLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7Yi5zdHlsZS50b3A9Ii05OTk5cHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYik7dmFyIGQ9Yi5vZmZzZXRXaWR0aC1iLmNsaWVudFdpZHRoO2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYik7cmV0dXJuIGR9fSx0YXJnZXQ6T2JqZWN0LGhhc0RhdGE6Qm9vbGVhbn0sb2JzZXJ2ZXJzOlsiX2NvbHVtblRyZWVDaGFuZ2VkKGNvbHVtblRyZWUsIF9waHlzaWNhbEl0ZW1zLCBfcGh5c2ljYWxDb3VudFZhbCkiLCJfc2l6ZUNoYW5nZWQoc2l6ZSwgYmluZERhdGEsIGhhc0RhdGEpIiwiX3Jvd0RldGFpbHNUZW1wbGF0ZUNoYW5nZWQocm93RGV0YWlsc1RlbXBsYXRlLCBfcGh5c2ljYWxJdGVtcywgX3BoeXNpY2FsQ291bnRWYWwpIl0sbGlzdGVuZXJzOnsicHJvcGVydHktY2hhbmdlZCI6Il9jb2x1bW5Qcm9wQ2hhbmdlZCIsCmFuaW1hdGlvbmVuZDoiX29uQW5pbWF0aW9uRW5kIiwiY29sdW1uLXJlc2l6aW5nIjoiX29uQ29sdW1uUmVzaXplIn0scmVhZHk6ZnVuY3Rpb24oKXt0aGlzLiQ9dGhpcy4kfHx7fTt0aGlzLiQuaGVhZGVyPXRoaXMuZG9tSG9zdC4kLmhlYWRlcjt0aGlzLiQuaXRlbXM9dGhpcy5kb21Ib3N0LiQuaXRlbXM7dGhpcy4kLmZvb3Rlcj10aGlzLmRvbUhvc3QuJC5mb290ZXJ9LF9vbkNvbHVtblJlc2l6ZTpmdW5jdGlvbigpe3RoaXMudG9nZ2xlQXR0cmlidXRlKCJjb2x1bW4tcmVzaXppbmciLHRoaXMuJC5oZWFkZXIucXVlcnlTZWxlY3RvcigiW2NvbHVtbi1yZXNpemluZ10iKSk7dGhpcy5fZ3JpZFJlc2l6ZUhhbmRsZXIoKX0sX29uQW5pbWF0aW9uRW5kOmZ1bmN0aW9uKGIpey9hcHBlYXIvLnRlc3QoYi5hbmltYXRpb25OYW1lKSYmKHRoaXMuX3JlbmRlcigpLHRoaXMuX3VwZGF0ZUhlYWRlckZvb3Rlck1ldHJpY3MoKSxiLnN0b3BQcm9wYWdhdGlvbigpKX0sX2NvbHVtblByb3BDaGFuZ2VkOmZ1bmN0aW9uKGIpeyJoZWFkZXJUZW1wbGF0ZSI9PT0KYi5kZXRhaWwucGF0aCYmdGhpcy50b2dnbGVBdHRyaWJ1dGUoImhhcy10ZW1wbGF0ZXMiLCEwLHRoaXMuJC5oZWFkZXIpOyJmb290ZXJUZW1wbGF0ZSI9PT1iLmRldGFpbC5wYXRoJiZ0aGlzLnRvZ2dsZUF0dHJpYnV0ZSgiaGFzLXRlbXBsYXRlcyIsITAsdGhpcy4kLmZvb3Rlcik7L2Zyb3plbnxoaWRkZW4vLnRlc3QoYi5kZXRhaWwucGF0aCkmJnRoaXMuX2Zyb3plbkNlbGxzQ2hhbmdlZCgpOyJoaWRkZW4iPT09Yi5kZXRhaWwucGF0aCYmdGhpcy5fZ3JpZFJlc2l6ZUhhbmRsZXIoKX0sX2hpZGVPdXRlclNjcm9sbGVyOmZ1bmN0aW9uKGIsZCl7cmV0dXJuIDA9PT1iJiYhZH0sX2hpZGVUYWJsZU92ZXJmbG93OmZ1bmN0aW9uKGIsZCl7cmV0dXJuIDA9PT1iJiZkfSxfcm93RGV0YWlsc1RlbXBsYXRlQ2hhbmdlZDpmdW5jdGlvbihiLGQsZil7dm9pZCAwIT09YiYmZCYmdm9pZCAwIT09ZiYmQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkLGZ1bmN0aW9uKGgpe2gucm93RGV0YWlsc1RlbXBsYXRlPQpifSl9LF9jb2x1bW5UcmVlQ2hhbmdlZDpmdW5jdGlvbihiLGQsZil7dm9pZCAwIT09YiYmZCYmdm9pZCAwIT09ZiYmKFBvbHltZXIuUmVuZGVyU3RhdHVzLmFmdGVyTmV4dFJlbmRlcih0aGlzLHRoaXMuX3VwZGF0ZSksdGhpcy5fZnJvemVuQ2VsbHNDaGFuZ2VkKCksdGhpcy5faGFzVGVtcGxhdGVzQ2hhbmdlZChiKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGQsZnVuY3Rpb24oaCl7aC5jb2x1bW5zPWJbYi5sZW5ndGgtMV19KSx0aGlzLl9ncmlkUmVzaXplSGFuZGxlcigpLFBvbHltZXIuZG9tLmZsdXNoKHRoaXMpLHRoaXMuX3VwZGF0ZUxhc3RDb2x1bW4oKSl9LF91cGRhdGVMYXN0Q29sdW1uOmZ1bmN0aW9uKCl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChQb2x5bWVyLmRvbSh0aGlzLmRvbUhvc3Qucm9vdCkucXVlcnlTZWxlY3RvckFsbCgiLnZhYWRpbi1ncmlkLXJvdyIpLGZ1bmN0aW9uKGIpe2IudXBkYXRlTGFzdENvbHVtbigpfSl9LF91cGRhdGVIZWFkZXJGb290ZXJNZXRyaWNzOmZ1bmN0aW9uKCl7dGhpcy5fcGh5c2ljYWxTaXplcyYmClBvbHltZXIuZG9tLmZsdXNoKCk7dGhpcy5fdXBkYXRlSGVhZGVyRm9vdGVyTWV0cmljc1N5bmMoKTtQb2x5bWVyLlJlbmRlclN0YXR1cy5hZnRlck5leHRSZW5kZXIodGhpcy4kLmhlYWRlcixmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUhlYWRlckZvb3Rlck1ldHJpY3NTeW5jKCk7dGhpcy5fcGVuZGluZ1Njcm9sbFRvU2NhbGVkSW5kZXgmJnRoaXMuc2Nyb2xsVG9TY2FsZWRJbmRleCh0aGlzLl9wZW5kaW5nU2Nyb2xsVG9TY2FsZWRJbmRleCl9LmJpbmQodGhpcykpfSxfdXBkYXRlSGVhZGVyRm9vdGVyTWV0cmljc1N5bmM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLiQuaGVhZGVyLmNsaWVudEhlaWdodCsicHgiLGQ9dGhpcy4kLmZvb3Rlci5jbGllbnRIZWlnaHQrInB4IjtbdGhpcy4kLm91dGVyc2l6ZXIsdGhpcy4kLmZpeGVkc2l6ZXIsdGhpcy4kLml0ZW1zXS5mb3JFYWNoKGZ1bmN0aW9uKGYpe2Yuc3R5bGUuYm9yZGVyVG9wV2lkdGg9YjtmLnN0eWxlLmJvcmRlckJvdHRvbVdpZHRoPQpkfSl9LF9oYXNUZW1wbGF0ZXNDaGFuZ2VkOmZ1bmN0aW9uKGIpe3ZhciBkPSExLGY9ITE7Yi5mb3JFYWNoKGZ1bmN0aW9uKGgpe3JldHVybiBoLmZvckVhY2goZnVuY3Rpb24oayl7ZD1kfHxrLmhlYWRlclRlbXBsYXRlO2Y9Znx8ay5mb290ZXJUZW1wbGF0ZX0pfSk7dGhpcy50b2dnbGVBdHRyaWJ1dGUoImhhcy10ZW1wbGF0ZXMiLGQsdGhpcy4kLmhlYWRlcik7dGhpcy50b2dnbGVBdHRyaWJ1dGUoImhhcy10ZW1wbGF0ZXMiLGYsdGhpcy4kLmZvb3Rlcil9LF9jcmVhdGVQb29sOmZ1bmN0aW9uKGIpe2Zvcih2YXIgZD1BcnJheShiKSxmPTA7ZjxiO2YrKyl7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmFhZGluLWdyaWQtdGFibGUtcm93Iik7aC50YXJnZXQ9dGhpcy5kb21Ib3N0O2RbZl09aDtoLnNldEF0dHJpYnV0ZSgiaGlkZGVuIiwiIik7UG9seW1lci5kb20odGhpcy4kLml0ZW1zKS5hcHBlbmRDaGlsZChoKX1yZXR1cm4gZH0sX3NpemVDaGFuZ2VkOmZ1bmN0aW9uKGIsCmQsZil7aWYodm9pZCAwIT09YiYmdm9pZCAwIT09ZCYmdm9pZCAwIT09Zil7dmFyIGg9dGhpcy5fc2Nyb2xsVG9wLGs9dGhpcy5maXJzdFZpc2libGVJbmRleCt0aGlzLl92aWR4T2Zmc2V0O3RoaXMuX3ZpcnR1YWxDb3VudD1NYXRoLm1pbihiLDFFNSk7dGhpcy5fcGh5c2ljYWxJbmRleEZvcktleT17fTt0aGlzLl9sYXN0VmlzaWJsZUluZGV4VmFsPXRoaXMuX2ZpcnN0VmlzaWJsZUluZGV4VmFsPW51bGw7dGhpcy5fdmlkeE9mZnNldD0wO3RoaXMuX3BoeXNpY2FsSXRlbXN8fCh0aGlzLl9waHlzaWNhbENvdW50PU1hdGgubWF4KDEsTWF0aC5taW4oMjUsdGhpcy5fdmlydHVhbENvdW50KSksdGhpcy5fcGh5c2ljYWxJdGVtcz10aGlzLl9jcmVhdGVQb29sKHRoaXMuX3BoeXNpY2FsQ291bnQpLHRoaXMuX3BoeXNpY2FsU2l6ZXM9QXJyYXkodGhpcy5fcGh5c2ljYWxDb3VudCkpO3RoaXMuX2l0ZW1zUmVuZGVyZWQ9ITE7dGhpcy5fZGVib3VuY2VUZW1wbGF0ZShmdW5jdGlvbigpe3RoaXMuX3JlbmRlcigpOwp0aGlzLl92aWV3cG9ydEhlaWdodCYmKHRoaXMuc2Nyb2xsVG9TY2FsZWRJbmRleChNYXRoLm1pbihrLHRoaXMuc2l6ZSkpLHRoaXMuX3Njcm9sbFRvcD1oLHRoaXMuX3Njcm9sbEhhbmRsZXIoKSx0aGlzLmZsdXNoRGVib3VuY2VyKCJ2YWFkaW4tZ3JpZC1zY3JvbGxpbmciKSl9KX19LF9hc3NpZ25Nb2RlbHM6ZnVuY3Rpb24oYil7dGhpcy5fdmlydHVhbEluZGV4VG9JdGVtPXRoaXMuX3ZpcnR1YWxJbmRleFRvSXRlbXx8e307dGhpcy5faXRlcmF0ZUl0ZW1zKGZ1bmN0aW9uKGQsZil7ZD10aGlzLl9waHlzaWNhbEl0ZW1zW2RdO2QuaW5kZXgmJmRlbGV0ZSB0aGlzLl92aXJ0dWFsSW5kZXhUb0l0ZW1bZC5pbmRleF07ZC5pbmRleD1mK3RoaXMuX3ZpZHhPZmZzZXQ7dGhpcy5fdmlydHVhbEluZGV4VG9JdGVtW2QuaW5kZXhdPWQ7ZC50b2dnbGVBdHRyaWJ1dGUoIm9kZCIsZC5pbmRleCUyKTtkLnRvZ2dsZUF0dHJpYnV0ZSgibGFzdHJvdyIsZC5pbmRleD09PXRoaXMuc2l6ZS0xKTtkLnRvZ2dsZUF0dHJpYnV0ZSgiaGlkZGVuIiwKZC5pbmRleD49dGhpcy5zaXplKTt0aGlzLmJpbmREYXRhKGQuaW5kZXgsZCl9LGIpfSxfZ3JpZFJlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLl91cGRhdGVIZWFkZXJGb290ZXJNZXRyaWNzKCk7dGhpcy5fcGh5c2ljYWxTaXplcyYmKHRoaXMuX3BoeXNpY2FsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnVwZGF0ZVJvd0RldGFpbHNDZWxsTWV0cmljcygpfSksdGhpcy5kZWJvdW5jZSgidmFhZGluLWdyaWQtcmVzaXppbmciLGZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlKCl9LmJpbmQodGhpcyksMSkpfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWNvbHVtbi5odG1sLmpzCndpbmRvdy52YWFkaW49d2luZG93LnZhYWRpbnx8e307dmFhZGluLmVsZW1lbnRzPXZhYWRpbi5lbGVtZW50c3x8e307dmFhZGluLmVsZW1lbnRzLmdyaWQ9dmFhZGluLmVsZW1lbnRzLmdyaWR8fHt9Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5Db2x1bW5CYXNlQmVoYXZpb3I9e3Byb3BlcnRpZXM6e3Jlc2l6YWJsZTp7dHlwZTpCb29sZWFuLHZhbHVlOmZ1bmN0aW9uKCl7aWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIhPT10aGlzLmxvY2FsTmFtZSl7dmFyIGI9UG9seW1lci5kb20odGhpcykucGFyZW50Tm9kZTtyZXR1cm4gYiYmInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1iLmxvY2FsTmFtZT9iLnJlc2l6YWJsZXx8ITE6ITF9fX0saGVhZGVyVGVtcGxhdGU6e3R5cGU6T2JqZWN0fSxmb290ZXJUZW1wbGF0ZTp7dHlwZTpPYmplY3R9LGZyb3plbjp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTohMX0saGlkZGVuOnt0eXBlOkJvb2xlYW4sbm90aWZ5OiEwfSxfbGFzdEZyb3plbjp7dHlwZTpCb29sZWFuLG5vdGlmeTohMCx2YWx1ZTohMX0sX29yZGVyOk51bWJlcixfcmVvcmRlclN0YXR1czpCb29sZWFufSxvYnNlcnZlcnM6WyJfZm9vdGVyVGVtcGxhdGVDaGFuZ2VkKGZvb3RlclRlbXBsYXRlKSIsCiJfaGVhZGVyVGVtcGxhdGVDaGFuZ2VkKGhlYWRlclRlbXBsYXRlKSIsIl9sYXN0RnJvemVuQ2hhbmdlZChfbGFzdEZyb3plbikiXSxjcmVhdGVkOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihkKXswPD1kLmFkZGVkTm9kZXMubGVuZ3RoJiYodGhpcy5oZWFkZXJUZW1wbGF0ZT10aGlzLl9wcmVwYXJlSGVhZGVyVGVtcGxhdGUoKSx0aGlzLmZvb3RlclRlbXBsYXRlPXRoaXMuX3ByZXBhcmVGb290ZXJUZW1wbGF0ZSgpLHRoaXMudGVtcGxhdGU9dGhpcy5fcHJlcGFyZUJvZHlUZW1wbGF0ZSgpKX10aGlzLl90ZW1wbGF0ZU9ic2VydmVyPVBvbHltZXIuRWxlbWVudD9uZXcgUG9seW1lci5GbGF0dGVuZWROb2Rlc09ic2VydmVyKHRoaXMsYik6UG9seW1lci5kb20odGhpcykub2JzZXJ2ZU5vZGVzKGIpfSxfcHJlcGFyZUhlYWRlclRlbXBsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByZXBhcmVUZW1wbGF0aXplcih0aGlzLl9maW5kVGVtcGxhdGUoInRlbXBsYXRlLmhlYWRlciIpfHxudWxsLAp7fSl9LF9wcmVwYXJlRm9vdGVyVGVtcGxhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJlcGFyZVRlbXBsYXRpemVyKHRoaXMuX2ZpbmRUZW1wbGF0ZSgidGVtcGxhdGUuZm9vdGVyIil8fG51bGwse30pfSxfcHJlcGFyZUJvZHlUZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wcmVwYXJlVGVtcGxhdGl6ZXIodGhpcy5fZmluZFRlbXBsYXRlKCJ0ZW1wbGF0ZTpub3QoLmhlYWRlcik6bm90KC5mb290ZXIpIix7fSkpfSxfcHJlcGFyZVRlbXBsYXRpemVyOmZ1bmN0aW9uKGIsZCl7aWYoYiYmIWIudGVtcGxhdGl6ZXIpe3ZhciBmPW5ldyB2YWFkaW4uZWxlbWVudHMuZ3JpZC5UZW1wbGF0aXplcjtmLmRhdGFIb3N0PXRoaXMuZGF0YUhvc3Q7Zi5faW5zdGFuY2VQcm9wcz1kfHxmLl9pbnN0YW5jZVByb3BzO2YudGVtcGxhdGU9YjtiLnRlbXBsYXRpemVyPWZ9cmV0dXJuIGJ9LF9zZWxlY3RGaXJzdFRlbXBsYXRlOmZ1bmN0aW9uKGIpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmlsdGVyLmNhbGwoUG9seW1lci5kb20odGhpcykucXVlcnlTZWxlY3RvckFsbChiKSwKZnVuY3Rpb24oZCl7cmV0dXJuIFBvbHltZXIuZG9tKGQpLnBhcmVudE5vZGU9PT10aGlzfS5iaW5kKHRoaXMpKVswXX0sX2ZpbmRUZW1wbGF0ZTpmdW5jdGlvbihiKXsoYj10aGlzLl9zZWxlY3RGaXJzdFRlbXBsYXRlKGIpKSYmdGhpcy5kYXRhSG9zdCYmKGIuX3Jvb3REYXRhSG9zdD10aGlzLmRhdGFIb3N0Ll9yb290RGF0YUhvc3R8fHRoaXMuZGF0YUhvc3QpO3JldHVybiBifSxfaGVhZGVyVGVtcGxhdGVDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgicHJvcGVydHktY2hhbmdlZCIse3BhdGg6ImhlYWRlclRlbXBsYXRlIix2YWx1ZTpifSl9LF9mb290ZXJUZW1wbGF0ZUNoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5maXJlKCJwcm9wZXJ0eS1jaGFuZ2VkIix7cGF0aDoiZm9vdGVyVGVtcGxhdGUiLHZhbHVlOmJ9KX0sX2ZsZXhHcm93Q2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLmZpcmUoInByb3BlcnR5LWNoYW5nZWQiLHtwYXRoOiJmbGV4R3JvdyIsdmFsdWU6Yn0pfSxfd2lkdGhDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgicHJvcGVydHktY2hhbmdlZCIsCntwYXRoOiJ3aWR0aCIsdmFsdWU6Yn0pfSxfbGFzdEZyb3plbkNoYW5nZWQ6ZnVuY3Rpb24oYil7dGhpcy5maXJlKCJwcm9wZXJ0eS1jaGFuZ2VkIix7cGF0aDoibGFzdEZyb3plbiIsdmFsdWU6Yn0pfX07CnZhYWRpbi5lbGVtZW50cy5ncmlkLkNvbHVtbkJlaGF2aW9ySW1wbD17cHJvcGVydGllczp7d2lkdGg6e3R5cGU6U3RyaW5nLHZhbHVlOiIxMDBweCJ9LGZsZXhHcm93Ont0eXBlOk51bWJlcix2YWx1ZToxfSx0ZW1wbGF0ZTp7dHlwZTpPYmplY3R9fSxvYnNlcnZlcnM6Il9mbGV4R3Jvd0NoYW5nZWQoZmxleEdyb3cpO193aWR0aENoYW5nZWQod2lkdGgpO190ZW1wbGF0ZUNoYW5nZWQodGVtcGxhdGUpO19mcm96ZW5DaGFuZ2VkKGZyb3plbiwgaXNBdHRhY2hlZCk7X2hpZGRlbkNoYW5nZWQoaGlkZGVuKTtfb3JkZXJDaGFuZ2VkKF9vcmRlcik7X3Jlb3JkZXJTdGF0dXNDaGFuZ2VkKF9yZW9yZGVyU3RhdHVzKTtfcmVzaXphYmxlQ2hhbmdlZChyZXNpemFibGUpIi5zcGxpdCgiOyIpLF9mcm96ZW5DaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7dm9pZCAwIT09YiYmdm9pZCAwIT09ZCYmKHZvaWQgMD09PXRoaXMuX29sZEZyb3plbiYmITE9PT1ifHx0aGlzLmZpcmUoInByb3BlcnR5LWNoYW5nZWQiLAp7cGF0aDoiZnJvemVuIix2YWx1ZTpifSksdGhpcy5fb2xkRnJvemVuPWIpfSxfdGVtcGxhdGVDaGFuZ2VkOmZ1bmN0aW9uKGIpe2ImJmIudGVtcGxhdGl6ZXImJlBvbHltZXIuZG9tKHRoaXMucm9vdCkuYXBwZW5kQ2hpbGQoYi50ZW1wbGF0aXplcik7dGhpcy5maXJlKCJwcm9wZXJ0eS1jaGFuZ2VkIix7cGF0aDoidGVtcGxhdGUiLHZhbHVlOmJ9LHtidWJibGVzOiExfSl9LF9oaWRkZW5DaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgicHJvcGVydHktY2hhbmdlZCIse3BhdGg6ImhpZGRlbiIsdmFsdWU6Yn0pfSxfb3JkZXJDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgicHJvcGVydHktY2hhbmdlZCIse3BhdGg6Im9yZGVyIix2YWx1ZTpifSl9LF9yZW9yZGVyU3RhdHVzQ2hhbmdlZDpmdW5jdGlvbihiKXt0aGlzLmZpcmUoInByb3BlcnR5LWNoYW5nZWQiLHtwYXRoOiJyZW9yZGVyU3RhdHVzIix2YWx1ZTpifSl9LF9yZXNpemFibGVDaGFuZ2VkOmZ1bmN0aW9uKGIpe3RoaXMuZmlyZSgicHJvcGVydHktY2hhbmdlZCIsCntwYXRoOiJyZXNpemFibGUiLHZhbHVlOmJ9KX19O3ZhYWRpbi5lbGVtZW50cy5ncmlkLkNvbHVtbkJlaGF2aW9yPVt2YWFkaW4uZWxlbWVudHMuZ3JpZC5Db2x1bW5CYXNlQmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuQ29sdW1uQmVoYXZpb3JJbXBsXTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly92YWFkaW4tZ3JpZC92YWFkaW4tZ3JpZC1jb2x1bW4uaHRtbC0yLmpzClBvbHltZXIoe2lzOiJ2YWFkaW4tZ3JpZC1jb2x1bW4iLGJlaGF2aW9yczpbdmFhZGluLmVsZW1lbnRzLmdyaWQuQ29sdW1uQmVoYXZpb3JdfSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdmFhZGluLWdyaWQvdmFhZGluLWdyaWQtYXJyYXktZGF0YS1wcm92aWRlci1iZWhhdmlvci5odG1sLmpzCndpbmRvdy52YWFkaW49d2luZG93LnZhYWRpbnx8e307dmFhZGluLmVsZW1lbnRzPXZhYWRpbi5lbGVtZW50c3x8e307dmFhZGluLmVsZW1lbnRzLmdyaWQ9dmFhZGluLmVsZW1lbnRzLmdyaWR8fHt9Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5BcnJheURhdGFQcm92aWRlckJlaGF2aW9yPXtwcm9wZXJ0aWVzOntpdGVtczpBcnJheX0sb2JzZXJ2ZXJzOlsiX2l0ZW1zQ2hhbmdlZChpdGVtcywgaXRlbXMuKikiXSxfaXRlbXNDaGFuZ2VkOmZ1bmN0aW9uKGIsZCl7dm9pZCAwIT09YiYmdm9pZCAwIT09ZCYmKHRoaXMuc2l6ZT0oYnx8W10pLmxlbmd0aCx0aGlzLmRhdGFQcm92aWRlcj10aGlzLmRhdGFQcm92aWRlcnx8dGhpcy5fYXJyYXlEYXRhUHJvdmlkZXIsdGhpcy5jbGVhckNhY2hlKCkpfSxfYXJyYXlEYXRhUHJvdmlkZXI6ZnVuY3Rpb24oYixkKXt2YXIgZj0odGhpcy5pdGVtc3x8W10pLnNsaWNlKDApO3RoaXMuX2NoZWNrUGF0aHModGhpcy5fZmlsdGVycywiZmlsdGVyaW5nIixmKSYmKGY9dGhpcy5fZmlsdGVyKGYpKTt0aGlzLnNpemU9Zi5sZW5ndGg7Yi5zb3J0T3JkZXJzLmxlbmd0aCYmdGhpcy5fY2hlY2tQYXRocyh0aGlzLl9zb3J0ZXJzLCJzb3J0aW5nIixmKSYmKGY9Zi5zb3J0KHRoaXMuX211bHRpU29ydC5iaW5kKHRoaXMpKSk7CnZhciBoPWIucGFnZSpiLnBhZ2VTaXplO2QoZi5zbGljZShoLGgrYi5wYWdlU2l6ZSksZi5sZW5ndGgpfSxfY2hlY2tQYXRoczpmdW5jdGlvbihiLGQsZil7aWYoIWYubGVuZ3RoKXJldHVybiExO3ZhciBoPSEwLGs7Zm9yKGsgaW4gYil7dmFyIHQ9YltrXS5wYXRoO2lmKHQmJi0xIT09dC5pbmRleE9mKCIuIikpe3ZhciBsPXQucmVwbGFjZSgvXC5bXlwuXSokLywiIik7dm9pZCAwPT09UG9seW1lci5CYXNlLmdldChsLGZbMF0pJiYoY29uc29sZS53YXJuKCdQYXRoICInK3QrJyIgdXNlZCBmb3IgJytkKyIgZG9lcyBub3QgZXhpc3QgaW4gYWxsIG9mIHRoZSBpdGVtcywgIitkKyIgaXMgZGlzYWJsZWQuIiksaD0hMSl9fXJldHVybiBofSxfbXVsdGlTb3J0OmZ1bmN0aW9uKGIsZCl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKGZ1bmN0aW9uKGYpe3JldHVybiJhc2MiPT09Zi5kaXJlY3Rpb24/dGhpcy5fY29tcGFyZShQb2x5bWVyLkJhc2UuZ2V0KGYucGF0aCxiKSxQb2x5bWVyLkJhc2UuZ2V0KGYucGF0aCwKZCkpOiJkZXNjIj09PWYuZGlyZWN0aW9uP3RoaXMuX2NvbXBhcmUoUG9seW1lci5CYXNlLmdldChmLnBhdGgsZCksUG9seW1lci5CYXNlLmdldChmLnBhdGgsYikpOjB9LHRoaXMpLnJlZHVjZShmdW5jdGlvbihmLGgpe3JldHVybiBmP2Y6aH0sMCl9LF9ub3JtYWxpemVFbXB0eVZhbHVlOmZ1bmN0aW9uKGIpe3JldHVybiAwPD1bdm9pZCAwLG51bGxdLmluZGV4T2YoYik/IiI6aXNOYU4oYik/Yi50b1N0cmluZygpOmJ9LF9jb21wYXJlOmZ1bmN0aW9uKGIsZCl7Yj10aGlzLl9ub3JtYWxpemVFbXB0eVZhbHVlKGIpO2Q9dGhpcy5fbm9ybWFsaXplRW1wdHlWYWx1ZShkKTtyZXR1cm4gYjxkPy0xOmI+ZD8xOjB9LF9maWx0ZXI6ZnVuY3Rpb24oYil7cmV0dXJuIGIuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiAwPT09dGhpcy5fZmlsdGVycy5maWx0ZXIoZnVuY3Rpb24oZil7cmV0dXJuLTE9PT10aGlzLl9ub3JtYWxpemVFbXB0eVZhbHVlKFBvbHltZXIuQmFzZS5nZXQoZi5wYXRoLGQpKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmLnZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSl9LmJpbmQodGhpcykpLmxlbmd0aH0sCnRoaXMpfX07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdmFhZGluLWdyaWQvdmFhZGluLWdyaWQtZHluYW1pYy1jb2x1bW5zLWJlaGF2aW9yLmh0bWwuanMKd2luZG93LnZhYWRpbj13aW5kb3cudmFhZGlufHx7fTt2YWFkaW4uZWxlbWVudHM9dmFhZGluLmVsZW1lbnRzfHx7fTt2YWFkaW4uZWxlbWVudHMuZ3JpZD12YWFkaW4uZWxlbWVudHMuZ3JpZHx8e307CnZhYWRpbi5lbGVtZW50cy5ncmlkLkR5bmFtaWNDb2x1bW5zQmVoYXZpb3I9e3JlYWR5OmZ1bmN0aW9uKCl7dGhpcy5fYWRkTm9kZU9ic2VydmVyKCl9LF9oYXNDb2x1bW5Hcm91cHM6ZnVuY3Rpb24oYil7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspaWYoInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1iW2RdLmxvY2FsTmFtZSlyZXR1cm4hMDtyZXR1cm4hMX0sX2dldENoaWxkQ29sdW1uczpmdW5jdGlvbihiKXtyZXR1cm4gUG9seW1lci5kb20oYikucXVlcnlEaXN0cmlidXRlZEVsZW1lbnRzKCJ2YWFkaW4tZ3JpZC1jb2x1bW4sIHZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCwgdmFhZGluLWdyaWQtc2VsZWN0aW9uLWNvbHVtbiIpfSxfZmxhdHRlbkNvbHVtbkdyb3VwczpmdW5jdGlvbihiKXtyZXR1cm4gYi5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCI9PT1kLmxvY2FsTmFtZT90aGlzLl9nZXRDaGlsZENvbHVtbnMoZCk6W2RdfSx0aGlzKS5yZWR1Y2UoZnVuY3Rpb24oZCwKZil7cmV0dXJuIGQuY29uY2F0KGYpfSxbXSl9LF9nZXRDb2x1bW5UcmVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBiPVtdLGQ9dGhpcy5xdWVyeUFsbEVmZmVjdGl2ZUNoaWxkcmVuKCJ2YWFkaW4tZ3JpZC1jb2x1bW4sIHZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCwgdmFhZGluLWdyaWQtc2VsZWN0aW9uLWNvbHVtbiIpOzspe2IucHVzaChkKTtpZighdGhpcy5faGFzQ29sdW1uR3JvdXBzKGQpKWJyZWFrO2Q9dGhpcy5fZmxhdHRlbkNvbHVtbkdyb3VwcyhkKX1yZXR1cm4gYn0sX3VwZGF0ZUNvbHVtblRyZWU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLl9nZXRDb2x1bW5UcmVlKCk7dGhpcy5fYXJyYXlFcXVhbHMoYix0aGlzLl9jb2x1bW5UcmVlKXx8KHRoaXMuX2NvbHVtblRyZWU9Yil9LF9hZGROb2RlT2JzZXJ2ZXI6ZnVuY3Rpb24oKXt0aGlzLl9vYnNlcnZlcj1Qb2x5bWVyLmRvbSh0aGlzKS5vYnNlcnZlTm9kZXMoZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChmKXtyZXR1cm4gZi5ub2RlVHlwZT09PQpOb2RlLkVMRU1FTlRfTk9ERSYmL152YWFkaW4tZ3JpZC0oY29sdW1ufHNlbGVjdGlvbikvaS50ZXN0KGYubG9jYWxOYW1lKX0oMDxiLmFkZGVkTm9kZXMuZmlsdGVyKGQpLmxlbmd0aHx8MDxiLnJlbW92ZWROb2Rlcy5maWx0ZXIoZCkubGVuZ3RoKSYmdGhpcy5fdXBkYXRlQ29sdW1uVHJlZSgpOyhQb2x5bWVyLlNldHRpbmdzLnVzZU5hdGl2ZVNoYWRvd3x8UG9seW1lci5TZXR0aW5ncy51c2VTaGFkb3cpJiZQb2x5bWVyLmRvbSh0aGlzKS5hcHBlbmRDaGlsZCh0aGlzLiQuZm9vdGVyRm9jdXNUcmFwKTt0aGlzLmRlYm91bmNlKCJjaGVjay1pbXBvcnRzIix0aGlzLl9jaGVja0ltcG9ydHMsMkUzKX0uYmluZCh0aGlzKSl9LF9hcnJheUVxdWFsczpmdW5jdGlvbihiLGQpe2lmKCFifHwhZHx8Yi5sZW5ndGghPWQubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgZj0wLGg9Yi5sZW5ndGg7ZjxoO2YrKylpZihiW2ZdaW5zdGFuY2VvZiBBcnJheSYmZFtmXWluc3RhbmNlb2YgQXJyYXkpe2lmKCF0aGlzLl9hcnJheUVxdWFscyhiW2ZdLApkW2ZdKSlyZXR1cm4hMX1lbHNlIGlmKGJbZl0hPWRbZl0pcmV0dXJuITE7cmV0dXJuITB9LF9jaGVja0ltcG9ydHM6ZnVuY3Rpb24oKXtbInZhYWRpbi1ncmlkLWNvbHVtbi1ncm91cCIsInZhYWRpbi1ncmlkLXNvcnRlciIsInZhYWRpbi1ncmlkLWZpbHRlciIsInZhYWRpbi1ncmlkLXNlbGVjdGlvbi1jb2x1bW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPVBvbHltZXIuZG9tKHRoaXMpLnF1ZXJ5U2VsZWN0b3IoYik7IWR8fChQb2x5bWVyLmlzSW5zdGFuY2U/UG9seW1lci5pc0luc3RhbmNlKGQpOmQgaW5zdGFuY2VvZiBQb2x5bWVyLkVsZW1lbnQpfHxjb25zb2xlLndhcm4oIk1ha2Ugc3VyZSB5b3UgaGF2ZSBpbXBvcnRlZCB0aGUgcmVxdWlyZWQgbW9kdWxlIGZvciBceDNjIitiKyJceDNlIGVsZW1lbnQuIil9LHRoaXMpfX07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdmFhZGluLWdyaWQvdmFhZGluLWdyaWQtc29ydC1iZWhhdmlvci5odG1sLmpzCndpbmRvdy52YWFkaW49d2luZG93LnZhYWRpbnx8e307dmFhZGluLmVsZW1lbnRzPXZhYWRpbi5lbGVtZW50c3x8e307dmFhZGluLmVsZW1lbnRzLmdyaWQ9dmFhZGluLmVsZW1lbnRzLmdyaWR8fHt9Owp2YWFkaW4uZWxlbWVudHMuZ3JpZC5Tb3J0QmVoYXZpb3I9e3Byb3BlcnRpZXM6e211bHRpU29ydDp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfc29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX0sX3ByZXZpb3VzU29ydGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LGxpc3RlbmVyczp7InNvcnRlci1jaGFuZ2VkIjoiX29uU29ydGVyQ2hhbmdlZCJ9LHJlYWR5OmZ1bmN0aW9uKCl7UG9seW1lci5FbGVtZW50JiYhUG9seW1lci5TZXR0aW5ncy51c2VOYXRpdmVTaGFkb3cmJnRoaXMuYXN5bmMoZnVuY3Rpb24oKXt2YXIgYj1Qb2x5bWVyLmRvbSh0aGlzKS5xdWVyeVNlbGVjdG9yQWxsKCJ2YWFkaW4tZ3JpZC1zb3J0ZXIiKTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24oZCl7ZC5maXJlJiZkLmZpcmUoInNvcnRlci1jaGFuZ2VkIil9KX0pfSxfb25Tb3J0ZXJDaGFuZ2VkOmZ1bmN0aW9uKGIpe3ZhciBkPQpiLnRhcmdldDt0aGlzLl9yZW1vdmVBcnJheUl0ZW0odGhpcy5fc29ydGVycyxkKTtkLl9vcmRlcj1udWxsO3RoaXMubXVsdGlTb3J0PyhkLmRpcmVjdGlvbiYmdGhpcy5fc29ydGVycy51bnNoaWZ0KGQpLHRoaXMuX3NvcnRlcnMuZm9yRWFjaChmdW5jdGlvbihmLGgpe2YuX29yZGVyPTE8dGhpcy5fc29ydGVycy5sZW5ndGg/aDpudWxsfSx0aGlzKSk6KHRoaXMuX3NvcnRlcnMuZm9yRWFjaChmdW5jdGlvbihmKXtmLl9vcmRlcj1udWxsO2YuZGlyZWN0aW9uPW51bGx9KSxkLmRpcmVjdGlvbiYmKHRoaXMuX3NvcnRlcnM9W2RdKSk7Yi5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLmRhdGFQcm92aWRlciYmSlNPTi5zdHJpbmdpZnkodGhpcy5fcHJldmlvdXNTb3J0ZXJzKSE9PUpTT04uc3RyaW5naWZ5KHRoaXMuX21hcFNvcnRlcnMoKSkmJnRoaXMuY2xlYXJDYWNoZSgpO3RoaXMuX3ByZXZpb3VzU29ydGVycz10aGlzLl9tYXBTb3J0ZXJzKCl9LF9tYXBTb3J0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NvcnRlcnMubWFwKGZ1bmN0aW9uKGIpe3JldHVybntwYXRoOmIucGF0aCwKZGlyZWN0aW9uOmIuZGlyZWN0aW9ufX0pfSxfcmVtb3ZlQXJyYXlJdGVtOmZ1bmN0aW9uKGIsZCl7ZD1iLmluZGV4T2YoZCk7LTE8ZCYmYi5zcGxpY2UoZCwxKX19OwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3ZhYWRpbi1ncmlkL3ZhYWRpbi1ncmlkLWZpbHRlci1iZWhhdmlvci5odG1sLmpzCndpbmRvdy52YWFkaW49d2luZG93LnZhYWRpbnx8e307dmFhZGluLmVsZW1lbnRzPXZhYWRpbi5lbGVtZW50c3x8e307dmFhZGluLmVsZW1lbnRzLmdyaWQ9dmFhZGluLmVsZW1lbnRzLmdyaWR8fHt9O3ZhYWRpbi5lbGVtZW50cy5ncmlkLkZpbHRlckJlaGF2aW9yPXtwcm9wZXJ0aWVzOntfZmlsdGVyczp7dHlwZTpBcnJheSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybltdfX19LGxpc3RlbmVyczp7ImZpbHRlci1jaGFuZ2VkIjoiX2ZpbHRlckNoYW5nZWQifSxfZmlsdGVyQ2hhbmdlZDpmdW5jdGlvbihiKXstMT09PXRoaXMuX2ZpbHRlcnMuaW5kZXhPZihiLnRhcmdldCkmJnRoaXMuX2ZpbHRlcnMucHVzaChiLnRhcmdldCk7Yi5zdG9wUHJvcGFnYXRpb24oKTt0aGlzLmRhdGFQcm92aWRlciYmdGhpcy5jbGVhckNhY2hlKCl9LF9tYXBGaWx0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlcnMubWFwKGZ1bmN0aW9uKGIpe3JldHVybntwYXRoOmIucGF0aCx2YWx1ZTpiLnZhbHVlfX0pfX07CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdmFhZGluLWdyaWQvdmFhZGluLWdyaWQuaHRtbC5qcwpQb2x5bWVyKHtpczoidmFhZGluLWdyaWQiLHByb3BlcnRpZXM6e19jb2x1bW5UcmVlOnt0eXBlOkFycmF5LG5vdGlmeTohMH0sc2l6ZTpOdW1iZXIsX3Jvd0RldGFpbHNUZW1wbGF0ZTpPYmplY3QsX2JpbmREYXRhOnt0eXBlOk9iamVjdCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRJdGVtLmJpbmQodGhpcyl9fX0sYmVoYXZpb3JzOltQb2x5bWVyLklyb25BMTF5S2V5c0JlaGF2aW9yLFBvbHltZXIuSXJvblJlc2l6YWJsZUJlaGF2aW9yLHZhYWRpbi5lbGVtZW50cy5ncmlkLkFjdGl2ZUl0ZW1CZWhhdmlvcix2YWFkaW4uZWxlbWVudHMuZ3JpZC5Sb3dEZXRhaWxzQmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuRGF0YVByb3ZpZGVyQmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuRHluYW1pY0NvbHVtbnNCZWhhdmlvcix2YWFkaW4uZWxlbWVudHMuZ3JpZC5BcnJheURhdGFQcm92aWRlckJlaGF2aW9yLHZhYWRpbi5lbGVtZW50cy5ncmlkLlNlbGVjdGlvbkJlaGF2aW9yLAp2YWFkaW4uZWxlbWVudHMuZ3JpZC5Tb3J0QmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuRmlsdGVyQmVoYXZpb3IsdmFhZGluLmVsZW1lbnRzLmdyaWQuQ29sdW1uUmVvcmRlcmluZ0JlaGF2aW9yLHZhYWRpbi5lbGVtZW50cy5ncmlkLlRhYmxlS2V5Ym9hcmRCZWhhdmlvcl0sbGlzdGVuZXJzOnsicHJvcGVydHktY2hhbmdlZCI6Il9jb2x1bW5Qcm9wQ2hhbmdlZCIsImlyb24tcmVzaXplIjoiX2dyaWRSZXNpemVIYW5kbGVyIn0sX3VwZGF0ZUl0ZW06ZnVuY3Rpb24oYixkKXtiLnN0eWxlLm1pbkhlaWdodD1kPyIiOnRoaXMuJC5zY3JvbGxlci5fcGh5c2ljYWxBdmVyYWdlKyJweCI7Yi5pdGVtPWQ7Yi5zZWxlY3RlZD10aGlzLl9pc1NlbGVjdGVkKGQpO2IuZXhwYW5kZWQ9dGhpcy5faXNFeHBhbmRlZChkKTtiLmFjdGl2ZT1udWxsIT09ZCYmZD09dGhpcy5hY3RpdmVJdGVtO2IuZm9jdXNlZD1iLmluZGV4PT09dGhpcy4kLml0ZW1zLl9mb2N1c2VkUm93SW5kZXh9LF9nZXRDb250ZW50VGFyZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LApyZWFkeTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKTt0aGlzLl9yb3dEZXRhaWxzVGVtcGxhdGU9UG9seW1lci5kb20odGhpcykucXVlcnlTZWxlY3RvcigidGVtcGxhdGUucm93LWRldGFpbHMiKXx8dm9pZCAwO3RoaXMuJC5zY3JvbGxlci50YXJnZXQ9dGhpcztudWxsPT09ZG9jdW1lbnQuZG9jdHlwZSYmY29uc29sZS53YXJuKCdceDNjdmFhZGluLWdyaWRceDNlIHJlcXVpcmVzIHRoZSAic3RhbmRhcmRzIG1vZGUiIGRlY2xhcmF0aW9uLiBQbGVhc2UgYWRkIFx4M2MhRE9DVFlQRSBodG1sXHgzZSB0byB0aGUgSFRNTCBkb2N1bWVudC4nKX0sX2NvbHVtblByb3BDaGFuZ2VkOmZ1bmN0aW9uKGIpeyJfY2hpbGRDb2x1bW5zIj09PWIuZGV0YWlsLnBhdGgmJnRoaXMuX3VwZGF0ZUNvbHVtblRyZWUoKTtiLnN0b3BQcm9wYWdhdGlvbigpfSxfZ3JpZFJlc2l6ZUhhbmRsZXI6ZnVuY3Rpb24oKXt0aGlzLiQuc2Nyb2xsZXIuX2dyaWRSZXNpemVIYW5kbGVyKCl9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMuaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLWRldGFpbHMiLHByb3BlcnRpZXM6e2JhY2tlbmQ6T2JqZWN0LGV4cGVyaW1lbnROYW1lOlN0cmluZyx2aXNpYmxlU2NoZW1hOk9iamVjdCxzZXNzaW9uR3JvdXA6T2JqZWN0LF94VHlwZTp7dHlwZTpTdHJpbmcsdmFsdWU6cmcuWFR5cGUuU1RFUH0sX25vTXVsdGlFeHBlcmltZW50czp7dHlwZTpCb29sZWFuLHZhbHVlOiExfSxfaW5kZXhPZlNlc3Npb246T2JqZWN0LF9zZXNzaW9uR3JvdXBOYW1lSGFzaDpOdW1iZXIsX3JlcXVlc3REYXRhOnt0eXBlOkZ1bmN0aW9uLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuKHt0YWc6YixydW46ZH0pPT50aGlzLmJhY2tlbmQubGlzdE1ldHJpY0V2YWxzKHtleHBlcmltZW50TmFtZTp0aGlzLmV4cGVyaW1lbnROYW1lLHNlc3Npb25OYW1lOmQsbWV0cmljTmFtZTpifSl9fSxfY29sb3JTY2FsZTp7dHlwZTpPYmplY3QsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57c2NhbGU6Yj0+e2I9SlNPTi5wYXJzZShiKVsxXTsKYj10aGlzLl9pbmRleE9mU2Vzc2lvbi5nZXQoYik7Y29uc3QgZD1wZi5zdGFuZGFyZDtyZXR1cm4gZFsodGhpcy5fc2Vzc2lvbkdyb3VwTmFtZUhhc2grYiklZC5sZW5ndGhdfX19fX0sYmVoYXZpb3JzOltQb2x5bWVyLklyb25SZXNpemFibGVCZWhhdmlvcl0sbGlzdGVuZXJzOnsiaXJvbi1yZXNpemUiOiJyZWRyYXcifSxvYnNlcnZlcnM6WyJfc2Vzc2lvbkdyb3VwQ2hhbmdlZChzZXNzaW9uR3JvdXAuKikiXSxyZWRyYXcoKXtQb2x5bWVyLmRvbSh0aGlzLnJvb3QpLnF1ZXJ5U2VsZWN0b3JBbGwoInRmLXNjYWxhci1jYXJkIikuZm9yRWFjaChiPT5iLnJlZHJhdygpKX0sX3Nlc3Npb25Hcm91cENoYW5nZWQoKXt0aGlzLnNlc3Npb25Hcm91cD8odGhpcy5faW5kZXhPZlNlc3Npb249bmV3IE1hcCh0aGlzLnNlc3Npb25Hcm91cC5zZXNzaW9ucy5tYXAoKGIsZCk9PltiLm5hbWUsZF0pKSx0aGlzLl9zZXNzaW9uR3JvdXBOYW1lSGFzaD10Zi5ocGFyYW1zLnV0aWxzLmhhc2hPZlN0cmluZyh0aGlzLnNlc3Npb25Hcm91cC5uYW1lKSk6Cih0aGlzLl9pbmRleE9mU2Vzc2lvbj1uZXcgTWFwLHRoaXMuX3Nlc3Npb25Hcm91cE5hbWVIYXNoPTApO1BvbHltZXIuZG9tKHRoaXMucm9vdCkucXVlcnlTZWxlY3RvckFsbCgidGYtc2NhbGFyLWNhcmQiKS5mb3JFYWNoKGI9Pntjb25zdCBkPWIuZ2V0KCJ0YWciKTtiLnNldCgidGFnIiwiIik7Yi5zZXQoInRhZyIsZCl9KX0sX2hhdmVNZXRyaWNzKCl7cmV0dXJuIHRoaXMudmlzaWJsZVNjaGVtYSYmQXJyYXkuaXNBcnJheSh0aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MpJiYwPHRoaXMudmlzaWJsZVNjaGVtYS5tZXRyaWNJbmZvcy5sZW5ndGh9LF9oYXZlTWV0cmljc0FuZFNlc3Npb25Hcm91cCgpe3JldHVybiB0aGlzLnNlc3Npb25Hcm91cCYmdGhpcy5faGF2ZU1ldHJpY3MoKX0sX2NvbXB1dGVTZXJpZXNGb3JTZXNzaW9uR3JvdXBNZXRyaWMoYixkKXtyZXR1cm4gbnVsbD09PWJ8fG51bGw9PT1kP1tdOmIuc2Vzc2lvbnMuZmlsdGVyKGY9PnZvaWQgMCE9PXRmLmhwYXJhbXMudXRpbHMubWV0cmljVmFsdWVCeU5hbWUoZi5tZXRyaWNWYWx1ZXMsCmQubmFtZSkpLm1hcChmPT4oe3RhZzpkLm5hbWUscnVuOmYubmFtZX0pKX0sX2NvbXB1dGVUYWdNZXRhZGF0YShiKXtyZXR1cm57ZGlzcGxheU5hbWU6dGYuaHBhcmFtcy51dGlscy5tZXRyaWNOYW1lKGIpLGRlc2NyaXB0aW9uOmIuZGVzY3JpcHRpb258fCIifX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXRhYmxlLXZpZXcvdGYtaHBhcmFtcy10YWJsZS12aWV3Lmh0bWwuanMKUG9seW1lcih7aXM6InRmLWhwYXJhbXMtdGFibGUtdmlldyIscHJvcGVydGllczp7dmlzaWJsZVNjaGVtYTpPYmplY3Qsc2Vzc2lvbkdyb3VwczpBcnJheSxlbmFibGVTaG93TWV0cmljczpCb29sZWFuLGJhY2tlbmQ6T2JqZWN0LGV4cGVyaW1lbnROYW1lOlN0cmluZ30sb2JzZXJ2ZXJzOlsiX3Zpc2libGVTY2hlbWFPclNlc3Npb25Hcm91cHNDaGFuZ2VkKHZpc2libGVTY2hlbWEuKiwgc2Vzc2lvbkdyb3Vwcy4qKSJdLF92aXNpYmxlU2NoZW1hT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCgpe2NvbnN0IGI9dGhpcy4kLnNlc3Npb25Hcm91cHNUYWJsZS5nZXQoImV4cGFuZGVkSXRlbXMiKTt0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZXhwYW5kZWRJdGVtcyIsW10pO1BvbHltZXIuZG9tLmZsdXNoKCk7Y29uc3QgZD1uZXcgTWFwO3RoaXMuc2Vzc2lvbkdyb3Vwcy5mb3JFYWNoKGY9PntkLnNldChmLm5hbWUsZil9KTt0aGlzLiQuc2Vzc2lvbkdyb3Vwc1RhYmxlLnNldCgiZXhwYW5kZWRJdGVtcyIsCmIubWFwKGY9PmQuZ2V0KGYubmFtZSkpLmZpbHRlcihCb29sZWFuKSl9LF9ocGFyYW1OYW1lOnRmLmhwYXJhbXMudXRpbHMuaHBhcmFtTmFtZSxfbWV0cmljTmFtZTp0Zi5ocGFyYW1zLnV0aWxzLm1ldHJpY05hbWUsX3Nlc3Npb25Hcm91cEhQYXJhbShiLGQpe3JldHVybiBudWxsIT1iJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYi5ocGFyYW1zLGQpP3RmLmhwYXJhbXMudXRpbHMucHJldHR5UHJpbnQoYi5ocGFyYW1zW2RdKToiIn0sX3Nlc3Npb25Hcm91cE1ldHJpYyhiLGQpe2lmKG51bGw9PWIpcmV0dXJuIG51bGw7Zm9yKGxldCBmPTA7ZjxiLm1ldHJpY1ZhbHVlcy5sZW5ndGg7KytmKXtsZXQgaD1iLm1ldHJpY1ZhbHVlc1tmXTtpZihoLm5hbWUuZ3JvdXA9PT1kLmdyb3VwJiZoLm5hbWUudGFnPT1kLnRhZylyZXR1cm4gdGYuaHBhcmFtcy51dGlscy5wcmV0dHlQcmludChoLnZhbHVlKX1yZXR1cm4iIn0sX3Jvd051bWJlcihiKXtyZXR1cm4gYisxfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWhwYXJhbXMtc2Vzc2lvbi1ncm91cC12YWx1ZXMvdGYtaHBhcmFtcy1zZXNzaW9uLWdyb3VwLXZhbHVlcy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLXNlc3Npb24tZ3JvdXAtdmFsdWVzIixwcm9wZXJ0aWVzOntzZXNzaW9uR3JvdXA6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LHZpc2libGVTY2hlbWE6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9fSxfcHJvcGVydGllc0FyZVBvcHVsYXRlZDpmdW5jdGlvbihiLGQpe3JldHVybiB2b2lkIDAhPT1iJiZudWxsIT09YiYmdm9pZCAwIT09ZCYmbnVsbCE9PWR9LF9zaW5nbGV0b25TZXNzaW9uR3JvdXBzOmZ1bmN0aW9uKGIpe3JldHVybiBudWxsPT09Ynx8dm9pZCAwPT09Yj9bXTpbYl19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC91dGlscy5odG1sLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGgoayx0LGwpe2Z1bmN0aW9uIHAoKXtpZigwPT09ay5sZW5ndGgpcmV0dXJuWzEsMl07Y29uc3QgW20sbl09ZDMuZXh0ZW50KGspO3JldHVybiBtIT09bj9bbSxuXTowPG0/Wy41Km0sMS41Km1dOjA+bT9bMS41Km0sLjUqbV06Wy0xLDFdfWlmKCJMSU5FQVIiPT09bClyZXR1cm4gZDMuc2NhbGVMaW5lYXIoKS5kb21haW4ocCgpKS5yYW5nZShbdCwwXSk7aWYoIkxPRyI9PT1sKXJldHVybiBsPXAoKSwwPj1sWzBdJiYwPD1sWzFdP2goayx0LCJMSU5FQVIiKTpkMy5zY2FsZUxvZygpLmRvbWFpbihsKS5yYW5nZShbdCwwXSk7aWYoIlFVQU5USUxFIj09PWwpcmV0dXJuIGw9ZDMucmFuZ2UoMjApLm1hcChtPT50LW0qdC8xOSksMD09PWsubGVuZ3RoJiYoaz1bMV0pLGQzLnNjYWxlUXVhbnRpbGUoKS5kb21haW4oXy51bmlxKGspKS5yYW5nZShsKTtpZigiTk9OX05VTUVSSUMiPT09bClyZXR1cm4gZDMuc2NhbGVQb2ludCgpLmRvbWFpbihfLnVuaXEoay5zb3J0KCkpKS5yYW5nZShbdCwKMF0pLnBhZGRpbmcoLjEpO3Rocm93IFJhbmdlRXJyb3IoIlVua25vd24gc2NhbGU6ICIrbCk7fWYuZmluZENsb3Nlc3RQYXRoPWZ1bmN0aW9uKGssdCxsKXtmdW5jdGlvbiBwKHksdyxDLEYpe2NvbnN0IEQ9eS1DLEI9dy1GO0M9bS1DO0Y9bi1GO2NvbnN0IEk9KEQqQytCKkYpLyhEKkQrQipCKTtyZXR1cm4gMD49ST9iLmhwYXJhbXMudXRpbHMubDJOb3JtU3F1YXJlZChDLEYpOjE8PUk/Yi5ocGFyYW1zLnV0aWxzLmwyTm9ybVNxdWFyZWQoeS1tLHctbik6Yi5ocGFyYW1zLnV0aWxzLmwyTm9ybVNxdWFyZWQoQy1JKkQsRi1JKkIpfWlmKDI+dC5sZW5ndGgpcmV0dXJuIGNvbnNvbGUuZXJyb3IoIkxlc3MgdGhhbiB0d28gYXhlcyBpbiBwYXJhbGxlbCBjb29yZGluYXRlcyBwbG90LiIpLG51bGw7Y29uc3QgbT1sWzBdLG49bFsxXTtpZihtPD10WzBdfHxtPj10W3QubGVuZ3RoLTFdKXJldHVybiBudWxsO2NvbnN0IHE9Xy5zb3J0ZWRJbmRleCh0LG0pO2NvbnNvbGUuYXNzZXJ0KDA8cSk7CmNvbnNvbGUuYXNzZXJ0KHE8dC5sZW5ndGgpO2NvbnN0IHU9cS0xO2xldCB4PW51bGwsQT1udWxsO2suZm9yRWFjaCh5PT57Y29uc3Qgdz1wKHkuY29udHJvbFBvaW50c1t1XVswXSx5LmNvbnRyb2xQb2ludHNbdV1bMV0seS5jb250cm9sUG9pbnRzW3FdWzBdLHkuY29udHJvbFBvaW50c1txXVsxXSk7MTAwPHd8fCEobnVsbD09PXh8fHc8eCl8fCh4PXcsQT15KX0pO3JldHVybiBBfTtmLnBvaW50U2NhbGVJbnZlcnNlSW1hZ2U9ZnVuY3Rpb24oayx0LGwpe3JldHVybiBrLmRvbWFpbigpLmZpbHRlcihwPT57cD1rKHApO3JldHVybiB0PD1wJiZwPD1sfSl9O2YucXVhbnRpbGVTY2FsZUludmVyc2VJbWFnZT1mdW5jdGlvbihrLHQsbCl7Y29uc3QgcD1rLnJhbmdlKCksbT1wLmZpbHRlcihuPT50PD1uJiZuPD1sKS5tYXAobj0+e2NvbnN0IHE9ay5pbnZlcnRFeHRlbnQobik7cmV0dXJuIG49PT1wW3AubGVuZ3RoLTFdP1txWzBdLHFbMV0rMV06cX0pO3JldHVybiAwPT1tLmxlbmd0aD9bMCwKMF06ZDMuZXh0ZW50KGQzLm1lcmdlKG0pKX07Zi5jb250aW51b3VzU2NhbGVJbnZlcnNlSW1hZ2U9ZnVuY3Rpb24oayx0LGwpe3JldHVybltrLmludmVydCh0KSxrLmludmVydChsKV0uc29ydCgocCxtKT0+cC1tKX07Zi5jcmVhdGVBeGlzU2NhbGU9aH0pKGQucGFyYWxsZWxfY29vcmRzX3Bsb3R8fChkLnBhcmFsbGVsX2Nvb3Jkc19wbG90PXt9KSl9KShiLmhwYXJhbXN8fChiLmhwYXJhbXM9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90L2F4ZXMuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7ZnVuY3Rpb24gaChxKXtyZXR1cm4gbnVsbCE9PXEuc291cmNlRXZlbnR9bGV0IGs7KGZ1bmN0aW9uKHEpe3EuTElORUFSPSJMSU5FQVIiO3EuTE9HPSJMT0ciO3EuUVVBTlRJTEU9IlFVQU5USUxFIjtxLk5PTl9OVU1FUklDPSJOT05fTlVNRVJJQyJ9KShrPWYuU2NhbGVUeXBlfHwoZi5TY2FsZVR5cGU9e30pKTtjbGFzcyB0e2lzUGFzc2luZygpe3JldHVybiEwfX1jbGFzcyBse2NvbnN0cnVjdG9yKHEsdSx4LEEpe3RoaXMuX2xvd2VyPXE7dGhpcy5fdXBwZXI9dTt0aGlzLl9sb3dlck9wZW49eDt0aGlzLl91cHBlck9wZW49QX1pc1Bhc3NpbmcocSl7cmV0dXJuIHRoaXMuX2JlZm9yZSh0aGlzLl9sb3dlcixxLCF0aGlzLl9sb3dlck9wZW4pJiZ0aGlzLl9iZWZvcmUocSx0aGlzLl91cHBlciwhdGhpcy5fdXBwZXJPcGVuKX1fYmVmb3JlKHEsdSx4KXtyZXR1cm4geD9xPD11OnE8dX19Y2xhc3MgcHtjb25zdHJ1Y3RvcihxKXt0aGlzLl9kb21haW5TZXQ9CnF9aXNQYXNzaW5nKHEpe3JldHVybi0xIT09dGhpcy5fZG9tYWluU2V0LmZpbmRJbmRleCh1PT51PT09cSl9fWNsYXNzIG17Y29uc3RydWN0b3IocSx1LHgsQSl7dGhpcy5fc3ZnUHJvcHM9cTt0aGlzLl9zY2hlbWE9dTt0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9eDt0aGlzLl9jb2xJbmRleD1BO3RoaXMuX2lzRGlzcGxheWVkPSExO3RoaXMuX3NjYWxlVHlwZT10aGlzLl95U2NhbGU9bnVsbDt0aGlzLnNldEJydXNoU2VsZWN0aW9uKG51bGwpfWNvbEluZGV4KCl7cmV0dXJuIHRoaXMuX2NvbEluZGV4fXlTY2FsZSgpe3JldHVybiB0aGlzLl95U2NhbGV9c2NhbGVUeXBlKCl7cmV0dXJuIHRoaXMuX3NjYWxlVHlwZX1icnVzaFNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9icnVzaFNlbGVjdGlvbn1pc0Rpc3BsYXllZCgpe3JldHVybiB0aGlzLl9pc0Rpc3BsYXllZH1zZXRCcnVzaFNlbGVjdGlvbihxKXt0aGlzLl9icnVzaFNlbGVjdGlvbj1xO3RoaXMuX2JydXNoRmlsdGVyPXRoaXMuX2J1aWxkQnJ1c2hGaWx0ZXIodGhpcy5icnVzaFNlbGVjdGlvbigpLAp0aGlzLnNjYWxlVHlwZSgpLHRoaXMueVNjYWxlKCkpfXNldERvbWFpbkFuZFNjYWxlKHEsdSl7dGhpcy5fc2NhbGVUeXBlPXU7dGhpcy5feVNjYWxlPWIuaHBhcmFtcy5wYXJhbGxlbF9jb29yZHNfcGxvdC5jcmVhdGVBeGlzU2NhbGUocS5zbGljZSgpLHRoaXMuX3N2Z1Byb3BzLmhlaWdodCx0aGlzLnNjYWxlVHlwZSgpKTt0aGlzLl9icnVzaEZpbHRlcj10aGlzLl9idWlsZEJydXNoRmlsdGVyKHRoaXMuYnJ1c2hTZWxlY3Rpb24oKSx0aGlzLnNjYWxlVHlwZSgpLHRoaXMueVNjYWxlKCkpfWJydXNoRmlsdGVyKCl7cmV0dXJuIHRoaXMuX2JydXNoRmlsdGVyfXVwZGF0ZURPTShxKXt2YXIgdT1kMy5heGlzTGVmdCh0aGlzLnlTY2FsZSgpKTt0aGlzLnNjYWxlVHlwZSgpPT09ay5RVUFOVElMRSYmKHU9dS50aWNrVmFsdWVzKHRoaXMueVNjYWxlKCkucXVhbnRpbGVzKCkpLnRpY2tGb3JtYXQoZDMuZm9ybWF0KCItLjZnIikpKTt2YXIgeD1kMy5zZWxlY3QocSk7eC5zZWxlY3RBbGwoImciKS5yZW1vdmUoKTsKeC5hcHBlbmQoImciKS5jbGFzc2VkKCJheGlzIiwhMCkuY2FsbCh1KS5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJheGlzLXRpdGxlIiwhMCkuc3R5bGUoImN1cnNvciIsIm1vdmUiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IiwtOSkudGV4dChBPT5iLmhwYXJhbXMudXRpbHMuc2NoZW1hQ29sdW1uTmFtZSh0aGlzLl9zY2hlbWEsQSkpO3guY2FsbChkMy5kcmFnKCkub24oInN0YXJ0IiwoKT0+e3Euc2V0QXR0cmlidXRlKCJpcy1kcmFnZ2luZyIsIiIpO3RoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkRyYWdTdGFydCh0aGlzLmNvbEluZGV4KCkpfSkub24oImRyYWciLCgpPT50aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25EcmFnKGQzLmV2ZW50LngpKS5vbigiZW5kIiwoKT0+e3RoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbkRyYWdFbmQoKTtxLnJlbW92ZUF0dHJpYnV0ZSgiaXMtZHJhZ2dpbmciKX0pKTt1PWQzLmJydXNoWSgpLmV4dGVudChbWy04LDBdLApbOCx0aGlzLl9zdmdQcm9wcy5oZWlnaHQrMV1dKS5vbigic3RhcnQiLCgpPT57aChkMy5ldmVudCkmJihxLnNldEF0dHJpYnV0ZSgiaXMtYnJ1c2hpbmciLCIiKSx0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXIub25CcnVzaENoYW5nZWQodGhpcy5jb2xJbmRleCgpKSl9KS5vbigiYnJ1c2giLCgpPT57aWYoaChkMy5ldmVudCkpdGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSl9KS5vbigiZW5kIiwoKT0+e2goZDMuZXZlbnQpJiYodGhpcy5faW50ZXJhY3Rpb25NYW5hZ2VyLm9uQnJ1c2hDaGFuZ2VkKHRoaXMuY29sSW5kZXgoKSkscS5yZW1vdmVBdHRyaWJ1dGUoImlzLWJydXNoaW5nIikpfSk7eD1kMy5zZWxlY3QocSkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYnJ1c2giLCEwKTt4LmNhbGwodSk7dS5tb3ZlKHgsdGhpcy5icnVzaFNlbGVjdGlvbigpKX1zZXREaXNwbGF5ZWQocSl7dGhpcy5faXNEaXNwbGF5ZWQ9cX1fYnVpbGRCcnVzaEZpbHRlcihxLAp1LHgpe2lmKG51bGw9PT1xKXJldHVybiBuZXcgdDtpZihudWxsPT09dSlyZXR1cm4gY29uc29sZS5lcnJvcigiU2NhbGUgdHlwZSBpcyBudWxsLCBidXQgYnJ1c2hTZWxlY3Rpb24gaXNuJ3Q6ICIscSksbmV3IHQ7c3dpdGNoKHUpe2Nhc2Ugay5MSU5FQVI6Y2FzZSBrLkxPRzp7Y29uc3QgW0EseV09Yi5ocGFyYW1zLnBhcmFsbGVsX2Nvb3Jkc19wbG90LmNvbnRpbnVvdXNTY2FsZUludmVyc2VJbWFnZSh4LHFbMF0scVsxXSk7cmV0dXJuIG5ldyBsKEEseSwhMSwhMSl9Y2FzZSBrLlFVQU5USUxFOntjb25zdCBbQSx5XT1iLmhwYXJhbXMucGFyYWxsZWxfY29vcmRzX3Bsb3QucXVhbnRpbGVTY2FsZUludmVyc2VJbWFnZSh4LHFbMF0scVsxXSk7cmV0dXJuIG5ldyBsKEEseSwhMSwhMCl9Y2FzZSBrLk5PTl9OVU1FUklDOnJldHVybiBuZXcgcChiLmhwYXJhbXMucGFyYWxsZWxfY29vcmRzX3Bsb3QucG9pbnRTY2FsZUludmVyc2VJbWFnZSh4LHFbMF0scVsxXSkpfWNvbnNvbGUuZXJyb3IoIlVua25vd24gc2NhbGUgdHlwZTogIiwKdSk7cmV0dXJuIG5ldyB0fX1mLkF4aXM9bTtjbGFzcyBue2NvbnN0cnVjdG9yKHEsdSx4KXt0aGlzLl9zdmdQcm9wcz1xO3RoaXMuX3NjaGVtYT11O3RoaXMuX2F4ZXM9dGhpcy5fY3JlYXRlQXhlcyh4KTt0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucz1kMy5zY2FsZVBvaW50KCkucmFuZ2UoWzEsdGhpcy5fc3ZnUHJvcHMud2lkdGgtMV0pLnBhZGRpbmcoLjUpO3RoaXMuX2RyYWdnZWRBeGlzPW51bGw7dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuYXhpcy1wYXJlbnQiKS5yZW1vdmUoKTt0aGlzLl9wYXJlbnRzU2VsPXRoaXMuX3N2Z1Byb3BzLnN2Z0cuc2VsZWN0QWxsKCIuYXhpcy1wYXJlbnQiKX11cGRhdGVBeGVzKHEsdSl7Y29uc29sZS5hc3NlcnQoIXRoaXMuaXNBeGlzRHJhZ2dpbmcoKSk7Y29uc3QgeD1uZXcgU2V0O3EuY29sdW1ucy5mb3JFYWNoKHk9Pntjb25zdCB3PXkuYWJzb2x1dGVJbmRleDtsZXQgQz10aGlzLl9heGVzW3ddO0Muc2V0RGlzcGxheWVkKCEwKTsKY29uc3QgRj11Lm1hcChEPT5iLmhwYXJhbXMudXRpbHMuY29sdW1uVmFsdWVCeUluZGV4KHRoaXMuX3NjaGVtYSxELHcpKTtDLnNldERvbWFpbkFuZFNjYWxlKEYseS5zY2FsZSk7eC5hZGQodyl9KTt0aGlzLl9heGVzLmZvckVhY2goeT0+e3guaGFzKHkuY29sSW5kZXgoKSl8fHkuc2V0RGlzcGxheWVkKCExKX0pO3RoaXMuX3VwZGF0ZVN0YXRpb25hcnlBeGVzUG9zaXRpb25zKHgpO3RoaXMuX3BhcmVudHNTZWw9dGhpcy5fcGFyZW50c1NlbC5kYXRhKEFycmF5LmZyb20oeCkseT0+eSk7dGhpcy5fcGFyZW50c1NlbC5leGl0KCkucmVtb3ZlKCk7dGhpcy5fcGFyZW50c1NlbD10aGlzLl9wYXJlbnRzU2VsLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiYXhpcy1wYXJlbnQiLCEwKS5tZXJnZSh0aGlzLl9wYXJlbnRzU2VsKTtjb25zdCBBPXRoaXM7dGhpcy5fcGFyZW50c1NlbC5jYWxsKHk9PnRoaXMuX3VwZGF0ZUF4ZXNQb3NpdGlvbnNJbkRPTSh5KSkuZWFjaChmdW5jdGlvbih5KXtBLl9heGVzW3ldLnVwZGF0ZURPTSh0aGlzKX0pfW1hcFZpc2libGVBeGVzKHEpe3JldHVybiB0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4oKS5tYXAodT0+CnEodGhpcy5nZXRBeGlzUG9zaXRpb24odSksdGhpcy5fYXhlc1t1XSkpfWFsbFZpc2libGVBeGVzU2F0aXNmeShxKXtyZXR1cm4gdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZXZlcnkodT0+cSh0aGlzLmdldEF4aXNQb3NpdGlvbih1KSx0aGlzLl9heGVzW3VdKSl9Z2V0QXhpc0ZvckNvbEluZGV4KHEpe3JldHVybiB0aGlzLl9heGVzW3FdfWRyYWdTdGFydChxKXtjb25zb2xlLmFzc2VydCghdGhpcy5pc0F4aXNEcmFnZ2luZygpKTtjb25zb2xlLmFzc2VydCh0aGlzLl9heGVzW3FdLmlzRGlzcGxheWVkKCkpO3RoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2F4ZXNbcV07dGhpcy5fZHJhZ2dlZEF4aXNQb3NpdGlvbj10aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyhxKX1kcmFnKHEpe3RoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249cT1NYXRoLm1pbihNYXRoLm1heChxLDApLHRoaXMuX3N2Z1Byb3BzLndpZHRoKTtxPXRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbigpOwpxLnNvcnQoKHUseCk9PnRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHUpLXRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHgpKTt0aGlzLl9zdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucy5kb21haW4ocSk7dGhpcy5fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHRoaXMuX3BhcmVudHNTZWwpfWRyYWdFbmQoKXtjb25zb2xlLmFzc2VydCh0aGlzLmlzQXhpc0RyYWdnaW5nKCkpO3RoaXMuX2RyYWdnZWRBeGlzPXRoaXMuX2RyYWdnZWRBeGlzUG9zaXRpb249bnVsbDt0aGlzLl91cGRhdGVBeGVzUG9zaXRpb25zSW5ET00odGhpcy5fcGFyZW50c1NlbC50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKSl9aXNBeGlzRHJhZ2dpbmcoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2RyYWdnZWRBeGlzfWdldEF4aXNQb3NpdGlvbihxKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2RyYWdnZWRBeGlzJiZ0aGlzLl9kcmFnZ2VkQXhpcy5jb2xJbmRleCgpPT09cT90aGlzLl9kcmFnZ2VkQXhpc1Bvc2l0aW9uOnRoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zKHEpfV91cGRhdGVTdGF0aW9uYXJ5QXhlc1Bvc2l0aW9ucyhxKXt2YXIgdT0KdGhpcy5fc3RhdGlvbmFyeUF4ZXNQb3NpdGlvbnMuZG9tYWluKCkuZmlsdGVyKHg9PnEuaGFzKHgpKTt1PUFycmF5LmZyb20obmV3IFNldChbLi4udSwuLi5BcnJheS5mcm9tKHEpXSkpO3RoaXMuX3N0YXRpb25hcnlBeGVzUG9zaXRpb25zLmRvbWFpbih1KX1fdXBkYXRlQXhlc1Bvc2l0aW9uc0luRE9NKHEpe3EuYXR0cigidHJhbnNmb3JtIix1PT5iLmhwYXJhbXMudXRpbHMudHJhbnNsYXRlU3RyKHRoaXMuZ2V0QXhpc1Bvc2l0aW9uKHUpKSl9X2NyZWF0ZUF4ZXMocSl7cmV0dXJuIGQzLnJhbmdlKGIuaHBhcmFtcy51dGlscy5udW1Db2x1bW5zKHRoaXMuX3NjaGVtYSkpLm1hcCh1PT5uZXcgbSh0aGlzLl9zdmdQcm9wcyx0aGlzLl9zY2hlbWEscSx1KSl9fWYuQXhlc0NvbGxlY3Rpb249bn0pKGQucGFyYWxsZWxfY29vcmRzX3Bsb3R8fChkLnBhcmFsbGVsX2Nvb3Jkc19wbG90PXt9KSl9KShiLmhwYXJhbXN8fChiLmhwYXJhbXM9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90L2xpbmVzLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7KGZ1bmN0aW9uKGYpe2xldCBoOyhmdW5jdGlvbihsKXtsW2wuRk9SRUdST1VORD0wXT0iRk9SRUdST1VORCI7bFtsLkJBQ0tHUk9VTkQ9MV09IkJBQ0tHUk9VTkQifSkoaD1mLkxpbmVUeXBlfHwoZi5MaW5lVHlwZT17fSkpO2NsYXNzIGt7Y29uc3RydWN0b3IobCl7dm9pZCAwPT09bCYmKGw9ZDMuc2VsZWN0QWxsKG51bGwpKTtjb25zb2xlLmFzc2VydCgxPj1sLnNpemUoKSk7dGhpcy5fc2Vzc2lvbkdyb3VwU2VsPWx9c2Vzc2lvbkdyb3VwKCl7cmV0dXJuIDE9PT10aGlzLl9zZXNzaW9uR3JvdXBTZWwuc2l6ZSgpP3RoaXMuX3Nlc3Npb25Hcm91cFNlbC5kYXR1bSgpOm51bGx9aXNOdWxsKCl7cmV0dXJuIG51bGw9PT10aGlzLnNlc3Npb25Hcm91cCgpfXNlbGVjdGlvbigpe3JldHVybiB0aGlzLl9zZXNzaW9uR3JvdXBTZWx9ZXF1YWxzVG8obCl7cmV0dXJuIHRoaXMuaXNOdWxsKCk/bC5pc051bGwoKTpsLmlzTnVsbCgpPyExOmwuc2Vzc2lvbkdyb3VwKCkubmFtZT09CnRoaXMuc2Vzc2lvbkdyb3VwKCkubmFtZX19Zi5TZXNzaW9uR3JvdXBIYW5kbGU9aztjbGFzcyB0e2NvbnN0cnVjdG9yKGwscCxtKXt0aGlzLl9zdmdQcm9wcz1sO3RoaXMuX3NjaGVtYT1wO3RoaXMuX2F4ZXNDb2xsZWN0aW9uPW07dGhpcy5fc2Vzc2lvbkdyb3Vwcz1bXTt0aGlzLl9zdmdQcm9wcy5zdmdHLnNlbGVjdEFsbCgiZy5iYWNrZ3JvdW5kIikucmVtb3ZlKCk7dGhpcy5fc3ZnUHJvcHMuc3ZnRy5zZWxlY3RBbGwoImcuZm9yZWdyb3VuZCIpLnJlbW92ZSgpO3RoaXMuX2JnUGF0aHNTZWw9dGhpcy5fc3ZnUHJvcHMuc3ZnRy5hcHBlbmQoImciKS5jbGFzc2VkKCJiYWNrZ3JvdW5kIiwhMCkuc2VsZWN0QWxsKCJwYXRoIik7dGhpcy5fZmdQYXRoc1NlbD10aGlzLl9zdmdQcm9wcy5zdmdHLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZvcmVncm91bmQiLCEwKS5zZWxlY3RBbGwoInBhdGgiKTt0aGlzLl91cGRhdGVWaXNpYmxlRmdQYXRoc1NlbCgpO3RoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZT0KbmV3IGs7dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGU9bmV3IGs7dGhpcy5fZDNsaW5lPWQzLmxpbmUoKS5jdXJ2ZShkMy5jdXJ2ZUxpbmVhcil9Z2V0U2Vzc2lvbkdyb3VwSGFuZGxlKGwpe3JldHVybiBudWxsPT09bHx8dm9pZCAwPT09bD9uZXcgazpuZXcgayh0aGlzLl9mZ1BhdGhzU2VsLmZpbHRlcihwPT5wLm5hbWU9PT1sLm5hbWUpKX1oaWRlQmFja2dyb3VuZExpbmVzKCl7dGhpcy5fYmdQYXRoc1NlbC5hdHRyKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIil9c2hvd0JhY2tncm91bmRMaW5lcygpe3RoaXMuX2JnUGF0aHNTZWwuYXR0cigidmlzaWJpbGl0eSIsbnVsbCl9cGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCl7cmV0dXJuIHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cEhhbmRsZX1zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZSgpe3JldHVybiB0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cEhhbmRsZX1yZWNvbXB1dGVDb250cm9sUG9pbnRzKGwscD0wKXsobD09PWguRk9SRUdST1VORD8KdGhpcy5fZmdQYXRoc1NlbDp0aGlzLl9iZ1BhdGhzU2VsKS50cmFuc2l0aW9uKCkuZHVyYXRpb24ocCkuYXR0cigiZCIsbT0+dGhpcy5fcGF0aERBdHRyaWJ1dGUobSkpO2w9PT1oLkZPUkVHUk9VTkQmJndpbmRvdy5zZXRUaW1lb3V0KCgpPT57Y29uc3QgbT10aGlzO3RoaXMuX2ZnUGF0aHNTZWwuZWFjaChmdW5jdGlvbihuKXttLl9zZXRDb250cm9sUG9pbnRzUHJvcGVydHkodGhpcyxuKX0pfSl9cmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpe3RoaXMuX2ZnUGF0aHNTZWwuY2xhc3NlZCgiaW52aXNpYmxlLXBhdGgiLGw9PiF0aGlzLl9heGVzQ29sbGVjdGlvbi5hbGxWaXNpYmxlQXhlc1NhdGlzZnkoKHAsbSk9Pm0uYnJ1c2hGaWx0ZXIoKS5pc1Bhc3NpbmcoYi5ocGFyYW1zLnV0aWxzLmNvbHVtblZhbHVlQnlJbmRleCh0aGlzLl9zY2hlbWEsbCxtLmNvbEluZGV4KCkpKSkpO3RoaXMuX3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl9c2V0Rm9yZWdyb3VuZExpbmVzQ29sb3IobCwKcCxtKXtsPXRoaXMuX2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKGwscCxtKTt0aGlzLl9mZ1BhdGhzU2VsLmF0dHIoInN0cm9rZSIsbCl9cmVkcmF3KGwscCxtLG4pe2NvbnN0IHE9dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlc3Npb25Hcm91cCgpLHU9dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2Vzc2lvbkdyb3VwKCk7dGhpcy5fc2Vzc2lvbkdyb3Vwcz1sO3RoaXMuX2ZnUGF0aHNTZWw9dGhpcy5fcmVjb21wdXRlUGF0aFNlbGVjdGlvbih0aGlzLl9mZ1BhdGhzU2VsKTt0aGlzLl9iZ1BhdGhzU2VsPXRoaXMuX3JlY29tcHV0ZVBhdGhTZWxlY3Rpb24odGhpcy5fYmdQYXRoc1NlbCk7dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlPXRoaXMuZ2V0U2Vzc2lvbkdyb3VwSGFuZGxlKHEpO3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPXRoaXMuZ2V0U2Vzc2lvbkdyb3VwSGFuZGxlKHUpO3RoaXMucmVjb21wdXRlQ29udHJvbFBvaW50cyhoLkZPUkVHUk9VTkQpOwp0aGlzLnJlY29tcHV0ZUNvbnRyb2xQb2ludHMoaC5CQUNLR1JPVU5EKTt0aGlzLnJlY29tcHV0ZUZvcmVncm91bmRMaW5lc1Zpc2liaWxpdHkoKTt0aGlzLnNldEZvcmVncm91bmRMaW5lc0NvbG9yKHAsbSxuKX11cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAobCl7dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInBlYWtlZC1wYXRoIiwhMSk7dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlPWw7dGhpcy5fcGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInBlYWtlZC1wYXRoIiwhMCl9Y2xlYXJQZWFrZWRTZXNzaW9uR3JvdXAoKXt0aGlzLnVwZGF0ZVBlYWtlZFNlc3Npb25Hcm91cChuZXcgayl9dXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAobCl7dGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUuc2VsZWN0aW9uKCkuY2xhc3NlZCgic2VsZWN0ZWQtcGF0aCIsITEpO3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlPQpsO3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlLnNlbGVjdGlvbigpLmNsYXNzZWQoInNlbGVjdGVkLXBhdGgiLCEwKX1maW5kQ2xvc2VzdFNlc3Npb25Hcm91cChsLHApe2NvbnN0IG09dGhpcy5fYXhlc0NvbGxlY3Rpb24ubWFwVmlzaWJsZUF4ZXMobj0+bik7bD1iLmhwYXJhbXMucGFyYWxsZWxfY29vcmRzX3Bsb3QuZmluZENsb3Nlc3RQYXRoKHRoaXMuX3Zpc2libGVGZ1BhdGhzU2VsLm5vZGVzKCksbSxbbCxwXSk7cmV0dXJuIG51bGw9PT1sP25ldyBrOm5ldyBrKGQzLnNlbGVjdChsKSl9X2NyZWF0ZUxpbmVDb2xvckZ1bmN0aW9uKGwscCxtKXtpZihudWxsPT09bClyZXR1cm4oKT0+InJlZCI7Y29uc3Qgbj1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbihiLmhwYXJhbXMudXRpbHMubnVtZXJpY0NvbHVtbkV4dGVudCh0aGlzLl9zY2hlbWEsdGhpcy5fc2Vzc2lvbkdyb3VwcyxsKSkucmFuZ2UoW3AsbV0pLmludGVycG9sYXRlKGQzLmludGVycG9sYXRlTGFiKTtyZXR1cm4gcT0+Cm4oYi5ocGFyYW1zLnV0aWxzLmNvbHVtblZhbHVlQnlJbmRleCh0aGlzLl9zY2hlbWEscSxsKSl9X3JlY29tcHV0ZVBhdGhTZWxlY3Rpb24obCl7bD1sLmRhdGEodGhpcy5fc2Vzc2lvbkdyb3VwcyxwPT5wLm5hbWUpO2wuZXhpdCgpLnJlbW92ZSgpO3JldHVybiBsLmVudGVyKCkuYXBwZW5kKCJwYXRoIikubWVyZ2UobCl9X3NldENvbnRyb2xQb2ludHNQcm9wZXJ0eShsLHApe2wuY29udHJvbFBvaW50cz10aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyhwKX1fY29tcHV0ZUNvbnRyb2xQb2ludHMobCl7cmV0dXJuIHRoaXMuX2F4ZXNDb2xsZWN0aW9uLm1hcFZpc2libGVBeGVzKChwLG0pPT5bcCxtLnlTY2FsZSgpKGIuaHBhcmFtcy51dGlscy5jb2x1bW5WYWx1ZUJ5SW5kZXgodGhpcy5fc2NoZW1hLGwsbS5jb2xJbmRleCgpKSldKX1fcGF0aERBdHRyaWJ1dGUobCl7cmV0dXJuIHRoaXMuX2QzbGluZSh0aGlzLl9jb21wdXRlQ29udHJvbFBvaW50cyhsKSl9X3VwZGF0ZVZpc2libGVGZ1BhdGhzU2VsKCl7dGhpcy5fdmlzaWJsZUZnUGF0aHNTZWw9CnRoaXMuX2ZnUGF0aHNTZWwuZmlsdGVyKCI6bm90KC5pbnZpc2libGUtcGF0aCkiKX19Zi5MaW5lc0NvbGxlY3Rpb249dH0pKGQucGFyYWxsZWxfY29vcmRzX3Bsb3R8fChkLnBhcmFsbGVsX2Nvb3Jkc19wbG90PXt9KSl9KShiLmhwYXJhbXN8fChiLmhwYXJhbXM9e30pKX0pKHRmfHwodGY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90L2ludGVyYWN0aW9uX21hbmFnZXIuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7Y2xhc3MgaHtjb25zdHJ1Y3Rvcih0LGwpe3RoaXMuc3ZnPWQzLnNlbGVjdCh0KTt0PTEwMCpsKzIwO3RoaXMuc3ZnLmF0dHIoInZpZXdCb3giLGAwIDAgJHt0fSAkezI0MH1gKTt0aGlzLnN2Zy5hdHRyKCJwcmVzZXJ2ZUFzcGVjdFJhdGlvIiwieE1pZFlNaWQiKTt0aGlzLnN2Zy5zdHlsZSgibWluLXdpZHRoIix0KyJweCIpO3RoaXMuc3ZnLnN0eWxlKCJtaW4taGVpZ2h0IiwiMjQwcHgiKTt0aGlzLndpZHRoPXQtMTAtMTA7dGhpcy5oZWlnaHQ9MjAwO3RoaXMuc3ZnRz10aGlzLnN2Zy5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGIuaHBhcmFtcy51dGlscy50cmFuc2xhdGVTdHIoMTAsMzApKX19Zi5TVkdQcm9wZXJ0aWVzPWg7Y2xhc3Mga3tjb25zdHJ1Y3Rvcih0LGwscCxtKXt0aGlzLl9zdmdQcm9wcz10O3RoaXMuX3NjaGVtYT1sO3RoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQj1wO3RoaXMuX3NlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZENCPQptO3RoaXMuX2F4ZXNDb2xsZWN0aW9uPW5ldyBmLkF4ZXNDb2xsZWN0aW9uKHQsbCx0aGlzKTt0aGlzLl9saW5lc0NvbGxlY3Rpb249bmV3IGYuTGluZXNDb2xsZWN0aW9uKHQsbCx0aGlzLl9heGVzQ29sbGVjdGlvbik7dGhpcy5fc3ZnUHJvcHMuc3ZnLm9uKCJjbGljayIsKCk9PnRoaXMub25DbGljaygpKS5vbigibW91c2Vtb3ZlIG1vdXNlZW50ZXIiLCgpPT57Y29uc3QgW24scV09ZDMubW91c2UodGhpcy5fc3ZnUHJvcHMuc3ZnRy5ub2RlKCkpO3RoaXMub25Nb3VzZU1vdmVkKG4scSl9KS5vbigibW91c2VsZWF2ZSIsKCk9PnRoaXMub25Nb3VzZUxlYXZlKCkpfW9uRHJhZ1N0YXJ0KHQpe3RoaXMuX2F4ZXNDb2xsZWN0aW9uLmRyYWdTdGFydCh0KTt0aGlzLl9saW5lc0NvbGxlY3Rpb24uaGlkZUJhY2tncm91bmRMaW5lcygpfW9uRHJhZyh0KXt0aGlzLl9heGVzQ29sbGVjdGlvbi5kcmFnKHQpO3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKGYuTGluZVR5cGUuRk9SRUdST1VORCl9b25EcmFnRW5kKCl7dGhpcy5fYXhlc0NvbGxlY3Rpb24uZHJhZ0VuZCgpOwp0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlQ29udHJvbFBvaW50cyhmLkxpbmVUeXBlLkZPUkVHUk9VTkQsNTAwKTt3aW5kb3cuc2V0VGltZW91dCgoKT0+e3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5yZWNvbXB1dGVDb250cm9sUG9pbnRzKGYuTGluZVR5cGUuQkFDS0dST1VORCk7dGhpcy5fbGluZXNDb2xsZWN0aW9uLnNob3dCYWNrZ3JvdW5kTGluZXMoKX0sNTAwKX1vbkJydXNoQ2hhbmdlZCh0KXt0aGlzLl9heGVzQ29sbGVjdGlvbi5nZXRBeGlzRm9yQ29sSW5kZXgodCkuc2V0QnJ1c2hTZWxlY3Rpb24oZDMuZXZlbnQuc2VsZWN0aW9uKTt0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVjb21wdXRlRm9yZWdyb3VuZExpbmVzVmlzaWJpbGl0eSgpfW9uTW91c2VNb3ZlZCh0LGwpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi51cGRhdGVQZWFrZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLmZpbmRDbG9zZXN0U2Vzc2lvbkdyb3VwKHQsbCkpO3RoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfW9uTW91c2VMZWF2ZSgpe3RoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5pc051bGwoKXx8Cih0aGlzLl9saW5lc0NvbGxlY3Rpb24uY2xlYXJQZWFrZWRTZXNzaW9uR3JvdXAoKSx0aGlzLl9wZWFrZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0IobnVsbCkpfW9uQ2xpY2soKXt0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCk9PT10aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKT90aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAobmV3IGYuU2Vzc2lvbkdyb3VwSGFuZGxlKTp0aGlzLl9saW5lc0NvbGxlY3Rpb24udXBkYXRlU2VsZWN0ZWRTZXNzaW9uR3JvdXAodGhpcy5fbGluZXNDb2xsZWN0aW9uLnBlYWtlZFNlc3Npb25Hcm91cEhhbmRsZSgpKTt0aGlzLl9zZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKS5zZXNzaW9uR3JvdXAoKSl9b25PcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZCh0LApsKXt0aGlzLl9heGVzQ29sbGVjdGlvbi51cGRhdGVBeGVzKHQsbCk7Y29uc3QgcD10aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCksbT10aGlzLl9saW5lc0NvbGxlY3Rpb24uc2VsZWN0ZWRTZXNzaW9uR3JvdXBIYW5kbGUoKTt0aGlzLl9saW5lc0NvbGxlY3Rpb24ucmVkcmF3KGwsdm9pZCAwIT09dC5jb2xvckJ5Q29sdW1uSW5kZXg/dC5jb2x1bW5zW3QuY29sb3JCeUNvbHVtbkluZGV4XS5hYnNvbHV0ZUluZGV4Om51bGwsdC5taW5Db2xvcix0Lm1heENvbG9yKTtwLmVxdWFsc1RvKHRoaXMuX2xpbmVzQ29sbGVjdGlvbi5wZWFrZWRTZXNzaW9uR3JvdXBIYW5kbGUoKSl8fHRoaXMuX3BlYWtlZFNlc3Npb25Hcm91cENoYW5nZWRDQih0aGlzLl9saW5lc0NvbGxlY3Rpb24ucGVha2VkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpO20uZXF1YWxzVG8odGhpcy5fbGluZXNDb2xsZWN0aW9uLnNlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlKCkpfHwKdGhpcy5fc2VsZWN0ZWRTZXNzaW9uR3JvdXBDaGFuZ2VkQ0IodGhpcy5fbGluZXNDb2xsZWN0aW9uLnNlbGVjdGVkU2Vzc2lvbkdyb3VwSGFuZGxlKCkuc2Vzc2lvbkdyb3VwKCkpfXNjaGVtYSgpe3JldHVybiB0aGlzLl9zY2hlbWF9fWYuSW50ZXJhY3Rpb25NYW5hZ2VyPWt9KShkLnBhcmFsbGVsX2Nvb3Jkc19wbG90fHwoZC5wYXJhbGxlbF9jb29yZHNfcGxvdD17fSkpfSkoYi5ocGFyYW1zfHwoYi5ocGFyYW1zPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtcGxvdC90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy1wbG90Lmh0bWwuanMKUG9seW1lcih7aXM6InRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXBsb3QiLHByb3BlcnRpZXM6e3Nlc3Npb25Hcm91cHM6QXJyYXksb3B0aW9uczpPYmplY3Qsc2VsZWN0ZWRTZXNzaW9uR3JvdXA6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGwscmVhZE9ubHk6ITAsbm90aWZ5OiEwfSxjbG9zZXN0U2Vzc2lvbkdyb3VwOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsLHJlYWRPbmx5OiEwLG5vdGlmeTohMH0scmVkcmF3Q291bnQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF92YWxpZFNlc3Npb25Hcm91cHM6QXJyYXksX2ludGVyYWN0aW9uTWFuYWdlcjpPYmplY3R9LG9ic2VydmVyczpbIl9vcHRpb25zT3JTZXNzaW9uR3JvdXBzQ2hhbmdlZChvcHRpb25zLiosIHNlc3Npb25Hcm91cHMuKikiXSxfb3B0aW9uc09yU2Vzc2lvbkdyb3Vwc0NoYW5nZWQoKXtpZihudWxsIT09dGhpcy5vcHRpb25zKXt2YXIgYj10aGlzLm9wdGlvbnMuY29uZmlndXJhdGlvbjtpZih2b2lkIDA9PT10aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXJ8fAohXy5pc0VxdWFsKHRoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5zY2hlbWEoKSxiLnNjaGVtYSkpe2QzLnNlbGVjdCh0aGlzLiQuc3ZnKS5zZWxlY3RBbGwoIioiKS5yZW1vdmUoKTtjb25zdCBkPW5ldyB0Zi5ocGFyYW1zLnBhcmFsbGVsX2Nvb3Jkc19wbG90LlNWR1Byb3BlcnRpZXModGhpcy4kLnN2Zyx0Zi5ocGFyYW1zLnV0aWxzLm51bUNvbHVtbnMoYi5zY2hlbWEpKTt0aGlzLnNjb3BlU3VidHJlZSh0aGlzLiQuc3ZnLCEwKTt0aGlzLl9pbnRlcmFjdGlvbk1hbmFnZXI9bmV3IHRmLmhwYXJhbXMucGFyYWxsZWxfY29vcmRzX3Bsb3QuSW50ZXJhY3Rpb25NYW5hZ2VyKGQsYi5zY2hlbWEsZj0+dGhpcy5jbG9zZXN0U2Vzc2lvbkdyb3VwQ2hhbmdlZChmKSxmPT50aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwQ2hhbmdlZChmKSl9dGhpcy5fY29tcHV0ZVZhbGlkU2Vzc2lvbkdyb3VwcygpO3RoaXMuX2ludGVyYWN0aW9uTWFuYWdlci5vbk9wdGlvbnNPclNlc3Npb25Hcm91cHNDaGFuZ2VkKHRoaXMub3B0aW9ucywKdGhpcy5fdmFsaWRTZXNzaW9uR3JvdXBzKTt0aGlzLnJlZHJhd0NvdW50Kyt9fSxjbG9zZXN0U2Vzc2lvbkdyb3VwQ2hhbmdlZChiKXt0aGlzLl9zZXRDbG9zZXN0U2Vzc2lvbkdyb3VwKGIpfSxzZWxlY3RlZFNlc3Npb25Hcm91cENoYW5nZWQoYil7dGhpcy5fc2V0U2VsZWN0ZWRTZXNzaW9uR3JvdXAoYil9LF9jb21wdXRlVmFsaWRTZXNzaW9uR3JvdXBzKCl7Y29uc3QgYj10Zi5ocGFyYW1zLnV0aWxzO2lmKHZvaWQgMD09PXRoaXMuc2Vzc2lvbkdyb3Vwcyl0aGlzLl92YWxpZFNlc3Npb25Hcm91cHM9dm9pZCAwO2Vsc2V7dmFyIGQ9dGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uc2NoZW1hO3RoaXMuX3ZhbGlkU2Vzc2lvbkdyb3Vwcz10aGlzLnNlc3Npb25Hcm91cHMuZmlsdGVyKGY9Pntmb3IobGV0IGg9MDtoPGIubnVtQ29sdW1ucyhkKTsrK2gpaWYodGhpcy5vcHRpb25zLmNvbmZpZ3VyYXRpb24uY29sdW1uc1Zpc2liaWxpdHlbaF0mJnZvaWQgMD09PWIuY29sdW1uVmFsdWVCeUluZGV4KGQsCmYsaCkpcmV0dXJuITE7cmV0dXJuITB9KX19fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1wYXJhbGxlbC1jb29yZHMtdmlldy90Zi1ocGFyYW1zLXBhcmFsbGVsLWNvb3Jkcy12aWV3Lmh0bWwuanMKUG9seW1lcih7aXM6InRmLWhwYXJhbXMtcGFyYWxsZWwtY29vcmRzLXZpZXciLHByb3BlcnRpZXM6e2JhY2tlbmQ6T2JqZWN0LGV4cGVyaW1lbnROYW1lOlN0cmluZyxjb25maWd1cmF0aW9uOk9iamVjdCxzZXNzaW9uR3JvdXBzOkFycmF5fSxfY2xvc2VzdE9yU2VsZWN0ZWQ6ZnVuY3Rpb24oYixkKXtyZXR1cm4gbnVsbCE9PWI/YjpkfX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90L3RmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90Lmh0bWwuanMKUG9seW1lcih7aXM6InRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90Iixwcm9wZXJ0aWVzOnt2aXNpYmxlU2NoZW1hOk9iamVjdCxzZXNzaW9uR3JvdXBzOkFycmF5LG9wdGlvbnM6T2JqZWN0LHNlbGVjdGVkU2Vzc2lvbkdyb3VwOnt0eXBlOk9iamVjdCx2YWx1ZTpudWxsLHJlYWRPbmx5OiEwLG5vdGlmeTohMH0sY2xvc2VzdFNlc3Npb25Hcm91cDp7dHlwZTpPYmplY3QsdmFsdWU6bnVsbCxyZWFkT25seTohMCxub3RpZnk6ITB9LF9jb250YWluZXI6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LF9zdmc6e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9LHdpZHRoOnt0eXBlOk51bWJlcix2YWx1ZTowfSxoZWlnaHQ6e3R5cGU6TnVtYmVyLHZhbHVlOjB9LF9icnVzaGVkQ2VsbEluZGV4Ont0eXBlOk9iamVjdCx2YWx1ZTpudWxsfSxfYnJ1c2hTZWxlY3Rpb246e3R5cGU6T2JqZWN0LHZhbHVlOm51bGx9fSxvYnNlcnZlcnM6WyJfc2Vzc2lvbkdyb3Vwc0NoYW5nZWQoc2Vzc2lvbkdyb3Vwcy4qKSIsCiJfdmlzaWJsZVNjaGVtYUNoYW5nZWQodmlzaWJsZVNjaGVtYS4qKSIsIl9yZWRyYXcob3B0aW9ucy4qKSJdLHJlYWR5KCl7dGhpcy5fY29udGFpbmVyPXRoaXMuJC5jb250YWluZXI7dGhpcy5fc3ZnPWQzLnNlbGVjdCh0aGlzLiQuc3ZnKTt0aGlzLl9yZWRyYXcoKX0sX3Nlc3Npb25Hcm91cHNDaGFuZ2VkKCl7bnVsbCE9PXRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXAmJnRoaXMuX3NldFNlbGVjdGVkU2Vzc2lvbkdyb3VwKHRmLmhwYXJhbXMudXRpbHMuc2Vzc2lvbkdyb3VwV2l0aE5hbWUodGhpcy5zZXNzaW9uR3JvdXBzLHRoaXMuc2VsZWN0ZWRTZXNzaW9uR3JvdXAubmFtZSl8fG51bGwpO3RoaXMuX3JlZHJhdygpfSxfdmlzaWJsZVNjaGVtYUNoYW5nZWQoKXt0aGlzLl9icnVzaFNlbGVjdGlvbj10aGlzLl9icnVzaGVkQ2VsbEluZGV4PW51bGw7dGhpcy5fcmVkcmF3KCl9LF9yZWRyYXcoKXt0aGlzLmRlYm91bmNlKCJfcmVkcmF3IiwoKT0+e2NvbnN0IGI9dGYuaHBhcmFtcy51dGlsczsKdGhpcy53aWR0aD1NYXRoLm1heCgxNTAqYi5udW1WaXNpYmxlQ29sdW1ucyh0aGlzLnZpc2libGVTY2hlbWEpLDEyMDApO3RoaXMuaGVpZ2h0PU1hdGgubWF4KDExMi41KmIubnVtVmlzaWJsZU1ldHJpY3ModGhpcy52aXNpYmxlU2NoZW1hKSw0ODApO3RoaXMuX2NvbnRhaW5lci5zdHlsZS53aWR0aD10aGlzLndpZHRoKyJweCI7dGhpcy5fY29udGFpbmVyLnN0eWxlLmhlaWdodD10aGlzLmhlaWdodCsicHgiO3RoaXMuX3N2Zy5hdHRyKCJ3aWR0aCIsdGhpcy53aWR0aCkuYXR0cigiaGVpZ2h0Iix0aGlzLmhlaWdodCk7dGhpcy5fc3ZnLnNlbGVjdEFsbCgiZyIpLnJlbW92ZSgpO3RoaXMuX2RyYXcoKX0sMTAwKX0sX2RyYXcoKXtmdW5jdGlvbiBiKGthKXtyZXR1cm4ieC1heGlzLWNsaXAtcGF0aC0iK2thfWZ1bmN0aW9uIGQoa2Epe3JldHVybiJ4LWxhYmVsLWNsaXAtcGF0aC0iK2thfWZ1bmN0aW9uIGYoa2Epe3JldHVybiJ5LWF4aXMtY2xpcC1wYXRoLSIra2F9ZnVuY3Rpb24gaChrYSl7cmV0dXJuInktbGFiZWwtY2xpcC1wYXRoLSIrCmthfWZ1bmN0aW9uIGsoa2EsWSxFYSx2YSx4YSl7RWE9TWF0aC5mbG9vcihFYS92YSk7dmE9WS5zY2FsZSgpO2lmKCJRVUFOVElMRSI9PT14YSl7bGV0IEFhPXZhLnF1YW50aWxlcygpO0FhPWQzLnJhbmdlKDAsQWEubGVuZ3RoLE1hdGguY2VpbChBYS5sZW5ndGgvRWEpKS5tYXAoRmE9PkFhW0ZhXSk7WS50aWNrVmFsdWVzKEFhKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgiLS4yZyIpKX0iTElORUFSIiE9PXhhJiYiTE9HIiE9PXhhfHxZLnRpY2tzKEVhKTtrYS5jYWxsKFkpO2thLnNlbGVjdEFsbCgiLmRvbWFpbiIpLnJlbW92ZSgpO2thLnNlbGVjdEFsbCgiLnRpY2sgbGluZSIpLmF0dHIoInN0cm9rZSIsIiNkZGQiKX1mdW5jdGlvbiB0KGthLFkpe3JldHVybiBPW1ldKHcuX2NvbFZhbHVlKGthLFkpKX1mdW5jdGlvbiBsKGthLFkpe3JldHVybiBIW1ldKHcuX21ldHJpY1ZhbHVlKGthLFkpKX1mdW5jdGlvbiBwKGthLFkpe2NvbnN0IEVhPVtdO1Rba2FdW1ldLmVhY2goZnVuY3Rpb24oKXtFYS5wdXNoKHRoaXMpfSk7CnJldHVybiBkMy5xdWFkdHJlZSgpLngodmE9PmQzLnNlbGVjdCh2YSkuZGF0dW0oKS54KS55KHZhPT5kMy5zZWxlY3QodmEpLmRhdHVtKCkueSkuYWRkQWxsKEVhKX1mdW5jdGlvbiBtKCl7bGV0IGthPW5ldyBTZXQoUS5ub2RlcygpKTt4KCl8fChrYT1uKHcuX2JydXNoZWRDZWxsSW5kZXgsdy5fYnJ1c2hTZWxlY3Rpb24pKTtkMy5zZWxlY3RBbGwoQXJyYXkuZnJvbSh5LmZpbHRlclNldChrYSxZPT4hWi5oYXMoWSkpKSkuYXR0cigiZmlsbCIsTCk7ZDMuc2VsZWN0QWxsKEFycmF5LmZyb20oeS5maWx0ZXJTZXQoWixZPT4ha2EuaGFzKFkpKSkpLmF0dHIoImZpbGwiLCIjZGRkIik7Wj1rYX1mdW5jdGlvbiBuKGthLFkpe2NvbnNvbGUuYXNzZXJ0KG51bGwhPT1rYSk7Y29uc29sZS5hc3NlcnQobnVsbCE9PVkpO2NvbnN0IFtFYSx2YV09a2EseGE9bmV3IFNldDt5LnF1YWRUcmVlVmlzaXRQb2ludHNJblJlY3QoYWFbRWFdW3ZhXSxZWzBdWzBdLFlbMF1bMV0sWVsxXVswXSxZWzFdWzFdLApBYT0+e2QzLnNlbGVjdChBYSkuZGF0dW0oKS5zZXNzaW9uR3JvdXBNYXJrZXJzLmZvckVhY2goRmE9Pnt4YS5hZGQoRmEpfSl9KTtyZXR1cm4geGF9ZnVuY3Rpb24gcShrYSl7Y29uc3QgWT1kMy5icnVzaFNlbGVjdGlvbihrYSk7IXUoKSYmbnVsbD09PVl8fHUoKSYma2E9PT1sYS5ub2RlKCkmJl8uaXNFcXVhbChZLHcuX2JydXNoU2VsZWN0aW9uKXx8KHcuX2JydXNoU2VsZWN0aW9uPVksbnVsbCE9PVk/KGxhPWQzLnNlbGVjdChrYSksdy5fYnJ1c2hlZENlbGxJbmRleD1sYS5kYXR1bSgpKToobGE9bnVsbCx3Ll9icnVzaGVkQ2VsbEluZGV4PW51bGwpLG0oKSl9ZnVuY3Rpb24gdSgpe3JldHVybiBudWxsIT09dy5fYnJ1c2hlZENlbGxJbmRleCYmbnVsbCE9PXcuX2JydXNoU2VsZWN0aW9ufWZ1bmN0aW9uIHgoKXtyZXR1cm4hdSgpfHx3Ll9icnVzaFNlbGVjdGlvblswXVswXT09PXcuX2JydXNoU2VsZWN0aW9uWzFdWzBdfHx3Ll9icnVzaFNlbGVjdGlvblswXVsxXT09PXcuX2JydXNoU2VsZWN0aW9uWzFdWzFdfQpmdW5jdGlvbiBBKGthLFksRWEsdmEseGEpe2xldCBBYT1JbmZpbml0eSxGYT1udWxsO3kucXVhZFRyZWVWaXNpdFBvaW50c0luRGlzayhhYVtrYV1bWV0sRWEsdmEseGEsKHlhLFNhKT0+e1ouaGFzKHlhKSYmU2E8QWEmJih5YT1kMy5zZWxlY3QoeWEpLmRhdHVtKCksQWE9U2EsRmE9eWEuc2Vzc2lvbkdyb3VwKX0pO3JldHVybiBudWxsPT09RmE/bnVsbDpkMy5zZWxlY3RBbGwoWC5nZXQoRmEpKX1jb25zdCB5PXRmLmhwYXJhbXMudXRpbHMsdz10aGlzO2lmKHRoaXMuc2Vzc2lvbkdyb3VwcyYmMCE9dGhpcy5zZXNzaW9uR3JvdXBzLmxlbmd0aCYmdGhpcy52aXNpYmxlU2NoZW1hJiYwIT10aGlzLnZpc2libGVTY2hlbWEubWV0cmljSW5mb3MubGVuZ3RoKXt2YXIgQz1kMy5yYW5nZSh5Lm51bVZpc2libGVDb2x1bW5zKHcudmlzaWJsZVNjaGVtYSkpLEY9ZDMucmFuZ2UoeS5udW1WaXNpYmxlTWV0cmljcyh3LnZpc2libGVTY2hlbWEpKSxEPWQzLnNjYWxlQmFuZCgpLmRvbWFpbihDKS5yYW5nZShbODUsCnRoaXMud2lkdGgtMS01XSkucGFkZGluZ0lubmVyKC4xKSxCPWQzLnNjYWxlQmFuZCgpLmRvbWFpbihGKS5yYW5nZShbdGhpcy5oZWlnaHQtMS01LTUwLDVdKS5wYWRkaW5nSW5uZXIoLjEpLEk9RC5iYW5kd2lkdGgoKSxOPUIuYmFuZHdpZHRoKCksTz1DLm1hcChrYT0+dy5fY2VsbFNjYWxlKGthLFswLEktMV0pKSxIPUYubWFwKGthPT53Ll9jZWxsU2NhbGUoa2EreS5udW1WaXNpYmxlSFBhcmFtcyh3LnZpc2libGVTY2hlbWEpLFtOLTEsMF0pKSxLPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi54LWF4aXMiKS5kYXRhKEMpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieC1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIixrYT0+eS50cmFuc2xhdGVTdHIoRChrYSksMCkpO0suYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixiKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtNSkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLEkrMTApLmF0dHIoImhlaWdodCIsdy5oZWlnaHQtMjUpOwpLLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsZCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsdy5oZWlnaHQtMjUpLmF0dHIoIndpZHRoIixJKS5hdHRyKCJoZWlnaHQiLDI1KTtLLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsa2E9PiJ1cmwoIyIrYihrYSkrIikiKS5lYWNoKGZ1bmN0aW9uKGthKXtkMy5zZWxlY3QodGhpcykuY2FsbChrLGQzLmF4aXNCb3R0b20oT1trYV0pLnRpY2tTaXplKHcuaGVpZ2h0LTUwKSxJLDQwLHcub3B0aW9ucy5jb2x1bW5zW2thXS5zY2FsZSl9KTtLLmFwcGVuZCgiZyIpLmNsYXNzZWQoIngtYXhpcy1sYWJlbCIsITApLmF0dHIoImNsaXAtcGF0aCIsa2E9PiJ1cmwoIyIrZChrYSkrIikiKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoIngiLEkvMikuYXR0cigieSIsdy5oZWlnaHQtMS0xMi41KS50ZXh0KGthPT55LnNjaGVtYVZpc2libGVDb2x1bW5OYW1lKHcudmlzaWJsZVNjaGVtYSwKa2EpKS5hcHBlbmQoInRpdGxlIikudGV4dChrYT0+eS5zY2hlbWFWaXNpYmxlQ29sdW1uTmFtZSh3LnZpc2libGVTY2hlbWEsa2EpKTtLPXRoaXMuX3N2Zy5zZWxlY3RBbGwoIi55LWF4aXMiKS5kYXRhKEYpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzIiwhMCkuYXR0cigidHJhbnNmb3JtIixrYT0+eS50cmFuc2xhdGVTdHIody53aWR0aC0xLEIoa2EpKSk7Sy5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLGYpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0ody53aWR0aC00MC0xKSkuYXR0cigieSIsLTUpLmF0dHIoIndpZHRoIix3LndpZHRoLTQwKS5hdHRyKCJoZWlnaHQiLE4rMTApO0suYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIixoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwtKHcud2lkdGgtMSkpLmF0dHIoInkiLDApLmF0dHIoIndpZHRoIiw0MCkuYXR0cigiaGVpZ2h0IixOKTtLLmFwcGVuZCgiZyIpLmF0dHIoImNsaXAtcGF0aCIsa2E9PiJ1cmwoIyIrCmYoa2EpKyIpIikuZWFjaChmdW5jdGlvbihrYSl7ZDMuc2VsZWN0KHRoaXMpLmNhbGwoayxkMy5heGlzTGVmdChIW2thXSkudGlja1NpemUody53aWR0aC04MCksTiwyMCx3Lm9wdGlvbnMuY29sdW1uc1trYSt5Lm51bVZpc2libGVIUGFyYW1zKHcudmlzaWJsZVNjaGVtYSldLnNjYWxlKX0pO0suYXBwZW5kKCJnIikuY2xhc3NlZCgieS1heGlzLWxhYmVsIiwhMCkuYXR0cigiY2xpcC1wYXRoIixrYT0+InVybCgjIitoKGthKSsiKSIpLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieCIsLSh3LndpZHRoLTIwLTEpKS5hdHRyKCJ5IixOLzIpLmF0dHIoInRyYW5zZm9ybSIseS5yb3RhdGVTdHIoLSh3LndpZHRoLTIwLTEpLE4vMikpLnRleHQoa2E9PnkubWV0cmljTmFtZSh3LnZpc2libGVTY2hlbWEubWV0cmljSW5mb3Nba2FdKSkuYXBwZW5kKCJ0aXRsZSIpLnRleHQoa2E9PnkubWV0cmljTmFtZSh3LnZpc2libGVTY2hlbWEubWV0cmljSW5mb3Nba2FdKSk7Cks9dGhpcy5fc3ZnLnNlbGVjdEFsbCgiLmNlbGwiKS5kYXRhKGQzLmNyb3NzKEMsRikpLmVudGVyKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgiY2VsbCIsITApLmF0dHIoInRyYW5zZm9ybSIsKFtrYSxZXSk9PnkudHJhbnNsYXRlU3RyKEQoa2EpLEIoWSkpKTtLLmFwcGVuZCgiZyIpLmNsYXNzZWQoImZyYW1lIiwhMCkuYXBwZW5kKCJyZWN0IikuYXR0cigieCIsLTUpLmF0dHIoInkiLC01KS5hdHRyKCJ3aWR0aCIsSSsxMCkuYXR0cigiaGVpZ2h0IixOKzEwKS5hdHRyKCJzdHJva2UiLCIjMDAwIikuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIE09bnVsbDt2b2lkIDAhPT13Lm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4JiYoTT1kMy5zY2FsZUxpbmVhcigpLmRvbWFpbih0aGlzLl9jb2xFeHRlbnQodGhpcy5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleCkpLnJhbmdlKFt0aGlzLm9wdGlvbnMubWluQ29sb3IsdGhpcy5vcHRpb25zLm1heENvbG9yXSkuaW50ZXJwb2xhdGUoZDMuaW50ZXJwb2xhdGVMYWIpKTsKdmFyIEw9dm9pZCAwPT09dy5vcHRpb25zLmNvbG9yQnlDb2x1bW5JbmRleD8oKT0+InJlZCI6KHtzZXNzaW9uR3JvdXA6a2F9KT0+TSh0aGlzLl9jb2xWYWx1ZShrYSx3Lm9wdGlvbnMuY29sb3JCeUNvbHVtbkluZGV4KSksW1EsVCxYXT1mdW5jdGlvbihrYSxZKXtjb25zdCBFYT1rYS5zZWxlY3RBbGwoIi5kYXRhLW1hcmtlciIpLmRhdGEoKFt4YSxBYV0pPT53LnNlc3Npb25Hcm91cHMuZmlsdGVyKEZhPT52b2lkIDAhPT13Ll9jb2xWYWx1ZShGYSx4YSkmJnZvaWQgMCE9PXcuX21ldHJpY1ZhbHVlKEZhLEFhKSkubWFwKEZhPT4oe2NvbDp4YSxtZXRyaWM6QWEsc2Vzc2lvbkdyb3VwOkZhLHg6dChGYSx4YSkseTpsKEZhLEFhKSxzZXNzaW9uR3JvdXBNYXJrZXJzOm51bGx9KSkpLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5jbGFzc2VkKCJkYXRhLW1hcmtlciIsITApLmF0dHIoImN4Iiwoe3g6eGF9KT0+eGEpLmF0dHIoImN5Iiwoe3k6eGF9KT0+eGEpLmF0dHIoInIiLDIpLmF0dHIoImZpbGwiLApZKSx2YT1uZXcgTWFwO3cuc2Vzc2lvbkdyb3Vwcy5mb3JFYWNoKHhhPT57dmEuc2V0KHhhLFtdKX0pO0VhLmVhY2goZnVuY3Rpb24oeGEpe3ZhLmdldCh4YS5zZXNzaW9uR3JvdXApLnB1c2godGhpcyl9KTtFYS5lYWNoKHhhPT57Y29uc3QgQWE9dmEuZ2V0KHhhLnNlc3Npb25Hcm91cCk7eGEuc2Vzc2lvbkdyb3VwTWFya2Vycz1uZXcgU2V0KEFhKX0pO2thPUMubWFwKHhhPT5GLm1hcChBYT0+RWEuZmlsdGVyKEZhPT5GYS5jb2w9PXhhJiZGYS5tZXRyaWM9PUFhKSkpO3JldHVybltFYSxrYSx2YV19KEsuYXBwZW5kKCJnIiksTCksYWE9Qy5tYXAoa2E9PkYubWFwKFk9PnAoa2EsWSkpKSxsYT1udWxsO3UoKSYmKGxhPUsuZmlsdGVyKGthPT5fLmlzRXF1YWwoa2Esdy5fYnJ1c2hlZENlbGxJbmRleCkpLGNvbnNvbGUuYXNzZXJ0KDE9PWxhLnNpemUoKSxsYSkpO3ZhciBaPW5ldyBTZXQoUS5ub2RlcygpKTttKCk7dmFyIGJhPWQzLmJydXNoKCkuZXh0ZW50KFtbLTQsLTRdLFtJLTErNS0KMSxOLTErNS0xXV0pLm9uKCJzdGFydCIsZnVuY3Rpb24oKXt1KCkmJmxhLm5vZGUoKSE9dGhpcyYmYmEubW92ZShsYSxudWxsKTtxKHRoaXMpfSkub24oImJydXNoIixmdW5jdGlvbigpe3EodGhpcyl9KS5vbigiZW5kIixmdW5jdGlvbigpe3EodGhpcyl9KTtLLmNhbGwoYmEpO3UoKSYmYmEubW92ZShsYSx3Ll9icnVzaFNlbGVjdGlvbik7dmFyIGVhPW51bGwsY2E9bnVsbDtudWxsIT09dGhpcy5zZWxlY3RlZFNlc3Npb25Hcm91cCYmKGNhPWQzLnNlbGVjdEFsbChYLmdldCh0aGlzLnNlbGVjdGVkU2Vzc2lvbkdyb3VwKSkuY2xhc3NlZCgic2VsZWN0ZWQtbWFya2VyIiwhMCkpO0sub24oImNsaWNrIixmdW5jdGlvbigpe3ZhciBrYT1lYT09PWNhP251bGw6ZWE7a2EhPT1jYSYmKG51bGwhPT1jYSYmY2EuY2xhc3NlZCgic2VsZWN0ZWQtbWFya2VyIiwhMSksY2E9a2EsbnVsbCE9PWNhJiZjYS5jbGFzc2VkKCJzZWxlY3RlZC1tYXJrZXIiLCEwKSxrYT1udWxsPT09Y2E/bnVsbDpjYS5kYXR1bSgpLnNlc3Npb25Hcm91cCwKdy5fc2V0U2VsZWN0ZWRTZXNzaW9uR3JvdXAoa2EpKX0pLm9uKCJtb3VzZW1vdmUgbW91c2VlbnRlciIsZnVuY3Rpb24oW2thLFldKXtjb25zdCBbRWEsdmFdPWQzLm1vdXNlKHRoaXMpO2thPUEoa2EsWSxFYSx2YSwyMCk7ZWEhPT1rYSYmKG51bGwhPT1lYSYmZWEuY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCExKSxlYT1rYSxudWxsIT09ZWE/KGVhLmNsYXNzZWQoImNsb3Nlc3QtbWFya2VyIiwhMCksdy5fc2V0Q2xvc2VzdFNlc3Npb25Hcm91cChlYS5kYXR1bSgpLnNlc3Npb25Hcm91cCkpOncuX3NldENsb3Nlc3RTZXNzaW9uR3JvdXAobnVsbCkpfSkub24oIm1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7bnVsbCE9PWVhJiYoZWEuY2xhc3NlZCgiY2xvc2VzdC1tYXJrZXIiLCExKSxlYT1udWxsLHcuX3NldENsb3Nlc3RTZXNzaW9uR3JvdXAobnVsbCkpfSk7dGhpcy5fc3ZnLnNlbGVjdEFsbCgiKiIpLmNsYXNzZWQoInRmLWhwYXJhbXMtc2NhdHRlci1wbG90LW1hdHJpeC1wbG90IiwhMCl9fSwKX2NlbGxTY2FsZShiLGQpe3ZhciBmPXRoaXMuX2NvbEV4dGVudChiKTtjb25zdCBoPWQzLnNjYWxlTGluZWFyKCkuZG9tYWluKGYpLnJhbmdlKGQpO2lmKCJMSU5FQVIiPT09dGhpcy5vcHRpb25zLmNvbHVtbnNbYl0uc2NhbGUpcmV0dXJuIGg7aWYoIkxPRyI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1tiXS5zY2FsZSlyZXR1cm4gMD49ZlswXSYmMDw9ZlsxXT9oOmQzLnNjYWxlTG9nKCkuZG9tYWluKGYpLnJhbmdlKGQpO2lmKCJRVUFOVElMRSI9PT10aGlzLm9wdGlvbnMuY29sdW1uc1tiXS5zY2FsZSl7Y29uc3Qgaz0oZFsxXS1kWzBdKS8xOTtmPWQzLnJhbmdlKDIwKS5tYXAodD0+ZFswXStrKnQpO3JldHVybiBkMy5zY2FsZVF1YW50aWxlKCkuZG9tYWluKF8udW5pcSh0aGlzLnNlc3Npb25Hcm91cHMubWFwKHQ9PnRoaXMuX2NvbFZhbHVlKHQsYikpKSkucmFuZ2UoZil9aWYoIk5PTl9OVU1FUklDIj09PXRoaXMub3B0aW9ucy5jb2x1bW5zW2JdLnNjYWxlKXJldHVybiBkMy5zY2FsZVBvaW50KCkuZG9tYWluKF8udW5pcSh0aGlzLnNlc3Npb25Hcm91cHMubWFwKGs9Pgp0aGlzLl9jb2xWYWx1ZShrLGIpKS5zb3J0KCkpKS5yYW5nZShkKS5wYWRkaW5nKC4xKTt0aHJvdyJVbmtub3duIHNjYWxlIGZvciBjb2x1bW46ICIrYisiLiBvcHRpb25zOiAiK3RoaXMub3B0aW9uczt9LF9jb2xWYWx1ZShiLGQpe3JldHVybiB0Zi5ocGFyYW1zLnV0aWxzLmNvbHVtblZhbHVlQnlWaXNpYmxlSW5kZXgodGhpcy52aXNpYmxlU2NoZW1hLGIsZCl9LF9tZXRyaWNWYWx1ZShiLGQpe3JldHVybiB0Zi5ocGFyYW1zLnV0aWxzLm1ldHJpY1ZhbHVlQnlWaXNpYmxlSW5kZXgodGhpcy52aXNpYmxlU2NoZW1hLGIsZCl9LF9jb2xFeHRlbnQoYil7cmV0dXJuIHRmLmhwYXJhbXMudXRpbHMudmlzaWJsZU51bWVyaWNDb2x1bW5FeHRlbnQodGhpcy52aXNpYmxlU2NoZW1hLHRoaXMuc2Vzc2lvbkdyb3VwcyxiKX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldy90Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldy5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLXNjYXR0ZXItcGxvdC1tYXRyaXgtdmlldyIscHJvcGVydGllczp7YmFja2VuZDpPYmplY3QsZXhwZXJpbWVudE5hbWU6U3RyaW5nLGNvbmZpZ3VyYXRpb246T2JqZWN0LHNlc3Npb25Hcm91cHM6QXJyYXl9LF9jbG9zZXN0T3JTZWxlY3RlZDpmdW5jdGlvbihiLGQpe3JldHVybiBudWxsIT09Yj9iOmR9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1zZXNzaW9ucy1wYW5lL3RmLWhwYXJhbXMtc2Vzc2lvbnMtcGFuZS5odG1sLmpzClBvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLXNlc3Npb25zLXBhbmUiLHByb3BlcnRpZXM6e2JhY2tlbmQ6T2JqZWN0LGhlbHBVcmw6U3RyaW5nLGJ1Z1JlcG9ydFVybDpTdHJpbmcsZXhwZXJpbWVudE5hbWU6U3RyaW5nLGNvbmZpZ3VyYXRpb246T2JqZWN0LHNlc3Npb25Hcm91cHM6QXJyYXksX3NlbGVjdGVkVGFiOnt0eXBlOk51bWJlcix2YWx1ZTowfX19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1ocGFyYW1zLWdvb2dsZS1hbmFseXRpY3MtdHJhY2tlci90Zi1ocGFyYW1zLWdvb2dsZS1hbmFseXRpY3MtdHJhY2tlci5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIoe2lzOiJ0Zi1ocGFyYW1zLWdvb2dsZS1hbmFseXRpY3MtdHJhY2tlciIsaGFuZGxlRXZlbnQ6ZnVuY3Rpb24oKXt9fSl9KSgpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWhwYXJhbXMtbWFpbi90Zi1ocGFyYW1zLW1haW4uaHRtbC5qcwpQb2x5bWVyKHtpczoidGYtaHBhcmFtcy1tYWluIixwcm9wZXJ0aWVzOntiYWNrZW5kOk9iamVjdCxleHBlcmltZW50TmFtZTpTdHJpbmcsdHJhY2tpbmdJZDpTdHJpbmcsaGVscFVybDpTdHJpbmcsYnVnUmVwb3J0VXJsOlN0cmluZyxfY29uZmlndXJhdGlvbjpPYmplY3QsX3Nlc3Npb25Hcm91cHM6QXJyYXksX3Rocm90dGxlZFNlbmRFdmVudFRvR0E6e3R5cGU6RnVuY3Rpb24sdmFsdWU6KCk9Pl8udGhyb3R0bGUoZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVHQUV2ZW50KHtkZXRhaWw6e2hpdFR5cGU6ImV2ZW50IixldmVudENhdGVnb3J5OiJVc2VySW50ZXJhY3Rpb24iLGV2ZW50TGFiZWw6IkV4cGVyaW1lbnQ6ICIrdGhpcy5leHBlcmltZW50TmFtZX19KX0sNkU0LHtsZWFkaW5nOiEwfSl9fSxsaXN0ZW5lcnM6e21vdXNlbW92ZToiX3NlbmRFdmVudFRvR0EiLHRhcDoiX3NlbmRFdmVudFRvR0EiLCJnb29nbGUtYW5hbHl0aWNzLXRyYWNraW5nIjoiX2hhbmRsZUdBRXZlbnQifSxhdHRhY2hlZCgpe3RoaXMuX2hhbmRsZUdBRXZlbnQoe2RldGFpbDp7aGl0VHlwZToicGFnZXZpZXcifX0pfSwKcmVsb2FkKCl7dGhpcy4kWyJxdWVyeS1wYW5lIl0ucmVsb2FkKCl9LF9zZW5kRXZlbnRUb0dBKCl7dGhpcy5fdGhyb3R0bGVkU2VuZEV2ZW50VG9HQSh0aGlzKX0sX2hhbmRsZUdBRXZlbnQoYil7dGhpcy4kLnRyYWNrZXIuaGFuZGxlRXZlbnQoYil9fSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1iYWNrZW5kL3RmLWhwYXJhbXMtYmFja2VuZC5odG1sLmpzCihmdW5jdGlvbihiKXsoZnVuY3Rpb24oZCl7Y2xhc3MgZntjb25zdHJ1Y3RvcihoLGssdD0hMCl7dGhpcy5fYXBpVXJsPWg7dGhpcy5fcmVxdWVzdE1hbmFnZXI9azt0aGlzLl91c2VIdHRwR2V0PXR9Z2V0RXhwZXJpbWVudChoKXtyZXR1cm4gdGhpcy5fc2VuZFJlcXVlc3QoImV4cGVyaW1lbnQiLGgpfWdldERvd25sb2FkVXJsKGgsayx0KXtyZXR1cm4gdGhpcy5fYXBpVXJsKyIvZG93bmxvYWRfZGF0YT8iK25ldyBVUkxTZWFyY2hQYXJhbXMoe2Zvcm1hdDpoLGNvbHVtbnNWaXNpYmlsaXR5OkpTT04uc3RyaW5naWZ5KHQpLHJlcXVlc3Q6SlNPTi5zdHJpbmdpZnkoayl9KX1saXN0U2Vzc2lvbkdyb3VwcyhoKXtyZXR1cm4gdGhpcy5fc2VuZFJlcXVlc3QoInNlc3Npb25fZ3JvdXBzIixoKX1saXN0TWV0cmljRXZhbHMoaCl7cmV0dXJuIHRoaXMuX3NlbmRSZXF1ZXN0KCJtZXRyaWNfZXZhbHMiLGgpfV9zZW5kUmVxdWVzdChoLGspe2lmKHRoaXMuX3VzZUh0dHBHZXQpcmV0dXJuIGs9ZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGspKSwKdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh0aGlzLl9hcGlVcmwrIi8iK2grIj9yZXF1ZXN0XHgzZCIrayk7Y29uc3QgdD1uZXcgdmMuUmVxdWVzdE9wdGlvbnM7dC53aXRoQ3JlZGVudGlhbHM9ITA7dC5tZXRob2RUeXBlPSJQT1NUIjt0LmNvbnRlbnRUeXBlPSJ0ZXh0L3BsYWluIjt0LmJvZHk9SlNPTi5zdHJpbmdpZnkoayk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLnJlcXVlc3RXaXRoT3B0aW9ucyh0aGlzLl9hcGlVcmwrIi8iK2gsdCl9fWQuQmFja2VuZD1mfSkoYi5ocGFyYW1zfHwoYi5ocGFyYW1zPXt9KSl9KSh0Znx8KHRmPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaHBhcmFtcy1kYXNoYm9hcmQvdGYtaHBhcmFtcy1kYXNoYm9hcmQuaHRtbC5qcwooZnVuY3Rpb24oKXtQb2x5bWVyKHtpczoidGYtaHBhcmFtcy1kYXNoYm9hcmQiLHByb3BlcnRpZXM6e19iYWNrZW5kOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHRmLmhwYXJhbXMuQmFja2VuZCh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5Sb3V0ZSgiaHBhcmFtcyIsIiIpLG5ldyB2Yy5SZXF1ZXN0TWFuYWdlciwhISh3aW5kb3cuVEVOU09SQk9BUkRfRU5WfHx7fSkuSU5fQ09MQUIpfX0scmVsb2FkKCl7dGhpcy4kWyJocGFyYW1zLW1haW4iXS5yZWxvYWQoKX19KX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtaW1wb3J0cy90aHJlZS5qcwooZnVuY3Rpb24oYixkKXsib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGU/ZChleHBvcnRzKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0sZCk6KGI9Ynx8c2VsZixkKGIuVEhSRUU9e30pKX0pKHRoaXMsZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpe31mdW5jdGlvbiBmKGEsYyl7dGhpcy54PWF8fDA7dGhpcy55PWN8fDB9ZnVuY3Rpb24gaChhLGMsZSxnKXt0aGlzLl94PWF8fDA7dGhpcy5feT1jfHwwO3RoaXMuX3o9ZXx8MDt0aGlzLl93PXZvaWQgMCE9PWc/ZzoxfWZ1bmN0aW9uIGsoYSxjLGUpe3RoaXMueD1hfHwwO3RoaXMueT1jfHwwO3RoaXMuej1lfHwwfWZ1bmN0aW9uIHQoKXt0aGlzLmVsZW1lbnRzPVsxLDAsMCwwLDEsMCwwLDAsMV07MDxhcmd1bWVudHMubGVuZ3RoJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfQpmdW5jdGlvbiBsKGEsYyxlLGcscix2LHosRSxHLEope09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJpZCIse3ZhbHVlOk5rKyt9KTt0aGlzLnV1aWQ9aGIuZ2VuZXJhdGVVVUlEKCk7dGhpcy5uYW1lPSIiO3RoaXMuaW1hZ2U9dm9pZCAwIT09YT9hOmwuREVGQVVMVF9JTUFHRTt0aGlzLm1pcG1hcHM9W107dGhpcy5tYXBwaW5nPXZvaWQgMCE9PWM/YzpsLkRFRkFVTFRfTUFQUElORzt0aGlzLndyYXBTPXZvaWQgMCE9PWU/ZToxMDAxO3RoaXMud3JhcFQ9dm9pZCAwIT09Zz9nOjEwMDE7dGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09cj9yOjEwMDY7dGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09dj92OjEwMDg7dGhpcy5hbmlzb3Ryb3B5PXZvaWQgMCE9PUc/RzoxO3RoaXMuZm9ybWF0PXZvaWQgMCE9PXo/ejoxMDIzO3RoaXMudHlwZT12b2lkIDAhPT1FP0U6MTAwOTt0aGlzLm9mZnNldD1uZXcgZigwLDApO3RoaXMucmVwZWF0PW5ldyBmKDEsMSk7dGhpcy5jZW50ZXI9bmV3IGYoMCwwKTsKdGhpcy5yb3RhdGlvbj0wO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMDt0aGlzLm1hdHJpeD1uZXcgdDt0aGlzLmdlbmVyYXRlTWlwbWFwcz0hMDt0aGlzLnByZW11bHRpcGx5QWxwaGE9ITE7dGhpcy5mbGlwWT0hMDt0aGlzLnVucGFja0FsaWdubWVudD00O3RoaXMuZW5jb2Rpbmc9dm9pZCAwIT09Sj9KOjNFMzt0aGlzLnZlcnNpb249MDt0aGlzLm9uVXBkYXRlPW51bGx9ZnVuY3Rpb24gcChhLGMsZSxnKXt0aGlzLng9YXx8MDt0aGlzLnk9Y3x8MDt0aGlzLno9ZXx8MDt0aGlzLnc9dm9pZCAwIT09Zz9nOjF9ZnVuY3Rpb24gbShhLGMsZSl7dGhpcy53aWR0aD1hO3RoaXMuaGVpZ2h0PWM7dGhpcy5zY2lzc29yPW5ldyBwKDAsMCxhLGMpO3RoaXMuc2Npc3NvclRlc3Q9ITE7dGhpcy52aWV3cG9ydD1uZXcgcCgwLDAsYSxjKTtlPWV8fHt9O3RoaXMudGV4dHVyZT1uZXcgbCh2b2lkIDAsdm9pZCAwLGUud3JhcFMsZS53cmFwVCxlLm1hZ0ZpbHRlcixlLm1pbkZpbHRlcixlLmZvcm1hdCxlLnR5cGUsCmUuYW5pc290cm9weSxlLmVuY29kaW5nKTt0aGlzLnRleHR1cmUuaW1hZ2U9e307dGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPWE7dGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1jO3RoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9dm9pZCAwIT09ZS5nZW5lcmF0ZU1pcG1hcHM/ZS5nZW5lcmF0ZU1pcG1hcHM6ITE7dGhpcy50ZXh0dXJlLm1pbkZpbHRlcj12b2lkIDAhPT1lLm1pbkZpbHRlcj9lLm1pbkZpbHRlcjoxMDA2O3RoaXMuZGVwdGhCdWZmZXI9dm9pZCAwIT09ZS5kZXB0aEJ1ZmZlcj9lLmRlcHRoQnVmZmVyOiEwO3RoaXMuc3RlbmNpbEJ1ZmZlcj12b2lkIDAhPT1lLnN0ZW5jaWxCdWZmZXI/ZS5zdGVuY2lsQnVmZmVyOiEwO3RoaXMuZGVwdGhUZXh0dXJlPXZvaWQgMCE9PWUuZGVwdGhUZXh0dXJlP2UuZGVwdGhUZXh0dXJlOm51bGx9ZnVuY3Rpb24gbihhLGMsZSl7bS5jYWxsKHRoaXMsYSxjLGUpO3RoaXMuc2FtcGxlcz00fWZ1bmN0aW9uIHEoKXt0aGlzLmVsZW1lbnRzPQpbMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMV07MDxhcmd1bWVudHMubGVuZ3RoJiZjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiB0aGUgY29uc3RydWN0b3Igbm8gbG9uZ2VyIHJlYWRzIGFyZ3VtZW50cy4gdXNlIC5zZXQoKSBpbnN0ZWFkLiIpfWZ1bmN0aW9uIHUoYSxjLGUsZyl7dGhpcy5feD1hfHwwO3RoaXMuX3k9Y3x8MDt0aGlzLl96PWV8fDA7dGhpcy5fb3JkZXI9Z3x8dS5EZWZhdWx0T3JkZXJ9ZnVuY3Rpb24geCgpe3RoaXMubWFzaz0xfWZ1bmN0aW9uIEEoKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpPaysrfSk7dGhpcy51dWlkPWhiLmdlbmVyYXRlVVVJRCgpO3RoaXMubmFtZT0iIjt0aGlzLnR5cGU9Ik9iamVjdDNEIjt0aGlzLnBhcmVudD1udWxsO3RoaXMuY2hpbGRyZW49W107dGhpcy51cD1BLkRlZmF1bHRVcC5jbG9uZSgpO3ZhciBhPW5ldyBrLGM9bmV3IHUsZT1uZXcgaCxnPW5ldyBrKDEsMSwxKTtjLl9vbkNoYW5nZShmdW5jdGlvbigpe2Uuc2V0RnJvbUV1bGVyKGMsCiExKX0pO2UuX29uQ2hhbmdlKGZ1bmN0aW9uKCl7Yy5zZXRGcm9tUXVhdGVybmlvbihlLHZvaWQgMCwhMSl9KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwb3NpdGlvbjp7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6YX0scm90YXRpb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmN9LHF1YXRlcm5pb246e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmV9LHNjYWxlOntjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpnfSxtb2RlbFZpZXdNYXRyaXg6e3ZhbHVlOm5ldyBxfSxub3JtYWxNYXRyaXg6e3ZhbHVlOm5ldyB0fX0pO3RoaXMubWF0cml4PW5ldyBxO3RoaXMubWF0cml4V29ybGQ9bmV3IHE7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPUEuRGVmYXVsdE1hdHJpeEF1dG9VcGRhdGU7dGhpcy5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSExO3RoaXMubGF5ZXJzPW5ldyB4O3RoaXMudmlzaWJsZT0hMDsKdGhpcy5yZWNlaXZlU2hhZG93PXRoaXMuY2FzdFNoYWRvdz0hMTt0aGlzLmZydXN0dW1DdWxsZWQ9ITA7dGhpcy5yZW5kZXJPcmRlcj0wO3RoaXMudXNlckRhdGE9e319ZnVuY3Rpb24geSgpe0EuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlNjZW5lIjt0aGlzLm92ZXJyaWRlTWF0ZXJpYWw9dGhpcy5mb2c9dGhpcy5iYWNrZ3JvdW5kPW51bGw7dGhpcy5hdXRvVXBkYXRlPSEwOyJ1bmRlZmluZWQiIT09dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9ZnVuY3Rpb24gdyhhLGMpe3RoaXMubWluPXZvaWQgMCE9PWE/YTpuZXcgayhJbmZpbml0eSxJbmZpbml0eSxJbmZpbml0eSk7dGhpcy5tYXg9dm9pZCAwIT09Yz9jOm5ldyBrKC1JbmZpbml0eSwtSW5maW5pdHksLUluZmluaXR5KX1mdW5jdGlvbiBDKGEsYyxlLGcscil7dmFyIHY7dmFyIHo9MDtmb3Iodj1hLmxlbmd0aC0KMzt6PD12O3orPTMpe0tkLmZyb21BcnJheShhLHopO3ZhciBFPWMuZG90KEtkKSxHPWUuZG90KEtkKSxKPWcuZG90KEtkKTtpZihNYXRoLm1heCgtTWF0aC5tYXgoRSxHLEopLE1hdGgubWluKEUsRyxKKSk+ci54Kk1hdGguYWJzKEtkLngpK3IueSpNYXRoLmFicyhLZC55KStyLnoqTWF0aC5hYnMoS2QueikpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gRihhLGMpe3RoaXMuY2VudGVyPXZvaWQgMCE9PWE/YTpuZXcgazt0aGlzLnJhZGl1cz12b2lkIDAhPT1jP2M6MH1mdW5jdGlvbiBEKGEsYyl7dGhpcy5vcmlnaW49dm9pZCAwIT09YT9hOm5ldyBrO3RoaXMuZGlyZWN0aW9uPXZvaWQgMCE9PWM/YzpuZXcga31mdW5jdGlvbiBCKGEsYyxlKXt0aGlzLmE9dm9pZCAwIT09YT9hOm5ldyBrO3RoaXMuYj12b2lkIDAhPT1jP2M6bmV3IGs7dGhpcy5jPXZvaWQgMCE9PWU/ZTpuZXcga31mdW5jdGlvbiBJKGEsYyxlKXtyZXR1cm4gdm9pZCAwPT09YyYmdm9pZCAwPT09ZT90aGlzLnNldChhKToKdGhpcy5zZXRSR0IoYSxjLGUpfWZ1bmN0aW9uIE4oYSxjLGUpezA+ZSYmKGUrPTEpOzE8ZSYmLS1lO3JldHVybiBlPDEvNj9hKzYqKGMtYSkqZTouNT5lP2M6ZTwyLzM/YSs2KihjLWEpKigyLzMtZSk6YX1mdW5jdGlvbiBPKGEpe3JldHVybi4wNDA0NT5hPy4wNzczOTkzODA4KmE6TWF0aC5wb3coLjk0Nzg2NzI5ODYqYSsuMDUyMTMyNzAxNCwyLjQpfWZ1bmN0aW9uIEgoYSl7cmV0dXJuLjAwMzEzMDg+YT8xMi45MiphOjEuMDU1Kk1hdGgucG93KGEsLjQxNjY2KS0uMDU1fWZ1bmN0aW9uIEsoYSxjLGUsZyxyLHYpe3RoaXMuYT1hO3RoaXMuYj1jO3RoaXMuYz1lO3RoaXMubm9ybWFsPWcmJmcuaXNWZWN0b3IzP2c6bmV3IGs7dGhpcy52ZXJ0ZXhOb3JtYWxzPUFycmF5LmlzQXJyYXkoZyk/ZzpbXTt0aGlzLmNvbG9yPXImJnIuaXNDb2xvcj9yOm5ldyBJO3RoaXMudmVydGV4Q29sb3JzPUFycmF5LmlzQXJyYXkocik/cjpbXTt0aGlzLm1hdGVyaWFsSW5kZXg9dm9pZCAwIT09dj92OjB9CmZ1bmN0aW9uIE0oKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywiaWQiLHt2YWx1ZTpQaysrfSk7dGhpcy51dWlkPWhiLmdlbmVyYXRlVVVJRCgpO3RoaXMubmFtZT0iIjt0aGlzLnR5cGU9Ik1hdGVyaWFsIjt0aGlzLmxpZ2h0cz10aGlzLmZvZz0hMDt0aGlzLmJsZW5kaW5nPTE7dGhpcy5zaWRlPTA7dGhpcy52ZXJ0ZXhUYW5nZW50cz10aGlzLmZsYXRTaGFkaW5nPSExO3RoaXMudmVydGV4Q29sb3JzPTA7dGhpcy5vcGFjaXR5PTE7dGhpcy50cmFuc3BhcmVudD0hMTt0aGlzLmJsZW5kU3JjPTIwNDt0aGlzLmJsZW5kRHN0PTIwNTt0aGlzLmJsZW5kRXF1YXRpb249MTAwO3RoaXMuYmxlbmRFcXVhdGlvbkFscGhhPXRoaXMuYmxlbmREc3RBbHBoYT10aGlzLmJsZW5kU3JjQWxwaGE9bnVsbDt0aGlzLmRlcHRoRnVuYz0zO3RoaXMuZGVwdGhXcml0ZT10aGlzLmRlcHRoVGVzdD0hMDt0aGlzLnN0ZW5jaWxGdW5jPTUxOTt0aGlzLnN0ZW5jaWxSZWY9MDt0aGlzLnN0ZW5jaWxNYXNrPQoyNTU7dGhpcy5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsRmFpbD03NjgwO3RoaXMuc3RlbmNpbFdyaXRlPSExO3RoaXMuY2xpcHBpbmdQbGFuZXM9bnVsbDt0aGlzLmNsaXBTaGFkb3dzPXRoaXMuY2xpcEludGVyc2VjdGlvbj0hMTt0aGlzLnNoYWRvd1NpZGU9bnVsbDt0aGlzLmNvbG9yV3JpdGU9ITA7dGhpcy5wcmVjaXNpb249bnVsbDt0aGlzLnBvbHlnb25PZmZzZXQ9ITE7dGhpcy5wb2x5Z29uT2Zmc2V0VW5pdHM9dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPTA7dGhpcy5kaXRoZXJpbmc9ITE7dGhpcy5hbHBoYVRlc3Q9MDt0aGlzLnByZW11bHRpcGxpZWRBbHBoYT0hMTt0aGlzLnRvbmVNYXBwZWQ9dGhpcy52aXNpYmxlPSEwO3RoaXMudXNlckRhdGE9e307dGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBMKGEpe00uY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik1lc2hCYXNpY01hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBJKDE2Nzc3MjE1KTt0aGlzLmxpZ2h0TWFwPQp0aGlzLm1hcD1udWxsO3RoaXMubGlnaHRNYXBJbnRlbnNpdHk9MTt0aGlzLmFvTWFwPW51bGw7dGhpcy5hb01hcEludGVuc2l0eT0xO3RoaXMuZW52TWFwPXRoaXMuYWxwaGFNYXA9dGhpcy5zcGVjdWxhck1hcD1udWxsO3RoaXMuY29tYmluZT0wO3RoaXMucmVmbGVjdGl2aXR5PTE7dGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4O3RoaXMud2lyZWZyYW1lPSExO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPTE7dGhpcy53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVjYXA9InJvdW5kIjt0aGlzLmxpZ2h0cz10aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPSExO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIFEoYSxjLGUpe2lmKEFycmF5LmlzQXJyYXkoYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVEhSRUUuQnVmZmVyQXR0cmlidXRlOiBhcnJheSBzaG91bGQgYmUgYSBUeXBlZCBBcnJheS4iKTt0aGlzLm5hbWU9IiI7dGhpcy5hcnJheT1hO3RoaXMuaXRlbVNpemU9CmM7dGhpcy5jb3VudD12b2lkIDAhPT1hP2EubGVuZ3RoL2M6MDt0aGlzLm5vcm1hbGl6ZWQ9ITA9PT1lO3RoaXMuZHluYW1pYz0hMTt0aGlzLnVwZGF0ZVJhbmdlPXtvZmZzZXQ6MCxjb3VudDotMX07dGhpcy52ZXJzaW9uPTB9ZnVuY3Rpb24gVChhLGMsZSl7US5jYWxsKHRoaXMsbmV3IEludDhBcnJheShhKSxjLGUpfWZ1bmN0aW9uIFgoYSxjLGUpe1EuY2FsbCh0aGlzLG5ldyBVaW50OEFycmF5KGEpLGMsZSl9ZnVuY3Rpb24gYWEoYSxjLGUpe1EuY2FsbCh0aGlzLG5ldyBVaW50OENsYW1wZWRBcnJheShhKSxjLGUpfWZ1bmN0aW9uIGxhKGEsYyxlKXtRLmNhbGwodGhpcyxuZXcgSW50MTZBcnJheShhKSxjLGUpfWZ1bmN0aW9uIFooYSxjLGUpe1EuY2FsbCh0aGlzLG5ldyBVaW50MTZBcnJheShhKSxjLGUpfWZ1bmN0aW9uIGJhKGEsYyxlKXtRLmNhbGwodGhpcyxuZXcgSW50MzJBcnJheShhKSxjLGUpfWZ1bmN0aW9uIGVhKGEsYyxlKXtRLmNhbGwodGhpcyxuZXcgVWludDMyQXJyYXkoYSksCmMsZSl9ZnVuY3Rpb24gY2EoYSxjLGUpe1EuY2FsbCh0aGlzLG5ldyBGbG9hdDMyQXJyYXkoYSksYyxlKX1mdW5jdGlvbiBrYShhLGMsZSl7US5jYWxsKHRoaXMsbmV3IEZsb2F0NjRBcnJheShhKSxjLGUpfWZ1bmN0aW9uIFkoKXt0aGlzLnZlcnRpY2VzPVtdO3RoaXMubm9ybWFscz1bXTt0aGlzLmNvbG9ycz1bXTt0aGlzLnV2cz1bXTt0aGlzLnV2czI9W107dGhpcy5ncm91cHM9W107dGhpcy5tb3JwaFRhcmdldHM9e307dGhpcy5za2luV2VpZ2h0cz1bXTt0aGlzLnNraW5JbmRpY2VzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT10aGlzLnV2c05lZWRVcGRhdGU9dGhpcy5jb2xvcnNOZWVkVXBkYXRlPXRoaXMubm9ybWFsc05lZWRVcGRhdGU9dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9ITF9ZnVuY3Rpb24gRWEoYSl7aWYoMD09PWEubGVuZ3RoKXJldHVybi1JbmZpbml0eTtmb3IodmFyIGM9YVswXSxlPTEsZz0KYS5sZW5ndGg7ZTxnOysrZSlhW2VdPmMmJihjPWFbZV0pO3JldHVybiBjfWZ1bmN0aW9uIHZhKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6UWsrPTJ9KTt0aGlzLnV1aWQ9aGIuZ2VuZXJhdGVVVUlEKCk7dGhpcy5uYW1lPSIiO3RoaXMudHlwZT0iQnVmZmVyR2VvbWV0cnkiO3RoaXMuaW5kZXg9bnVsbDt0aGlzLmF0dHJpYnV0ZXM9e307dGhpcy5tb3JwaEF0dHJpYnV0ZXM9e307dGhpcy5ncm91cHM9W107dGhpcy5ib3VuZGluZ1NwaGVyZT10aGlzLmJvdW5kaW5nQm94PW51bGw7dGhpcy5kcmF3UmFuZ2U9e3N0YXJ0OjAsY291bnQ6SW5maW5pdHl9O3RoaXMudXNlckRhdGE9e319ZnVuY3Rpb24geGEoYSxjKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoIjt0aGlzLmdlb21ldHJ5PXZvaWQgMCE9PWE/YTpuZXcgdmE7dGhpcy5tYXRlcmlhbD12b2lkIDAhPT1jP2M6bmV3IEwoe2NvbG9yOjE2Nzc3MjE1Kk1hdGgucmFuZG9tKCl9KTt0aGlzLmRyYXdNb2RlPQowO3RoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9ZnVuY3Rpb24gQWEoYSxjLGUsZyxyLHYseixFKXtpZihudWxsPT09KDE9PT1jLnNpZGU/Zy5pbnRlcnNlY3RUcmlhbmdsZSh6LHYsciwhMCxFKTpnLmludGVyc2VjdFRyaWFuZ2xlKHIsdix6LDIhPT1jLnNpZGUsRSkpKXJldHVybiBudWxsO3NnLmNvcHkoRSk7c2cuYXBwbHlNYXRyaXg0KGEubWF0cml4V29ybGQpO2M9ZS5yYXkub3JpZ2luLmRpc3RhbmNlVG8oc2cpO3JldHVybiBjPGUubmVhcnx8Yz5lLmZhcj9udWxsOntkaXN0YW5jZTpjLHBvaW50OnNnLmNsb25lKCksb2JqZWN0OmF9fWZ1bmN0aW9uIEZhKGEsYyxlLGcscix2LHosRSxHLEosUCl7TGQuZnJvbUJ1ZmZlckF0dHJpYnV0ZShyLEcpO01kLmZyb21CdWZmZXJBdHRyaWJ1dGUocixKKTtOZC5mcm9tQnVmZmVyQXR0cmlidXRlKHIsUCk7cj1hLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcztpZihjLm1vcnBoVGFyZ2V0cyYmdiYmcil7SWguc2V0KDAsMCwwKTtKaC5zZXQoMCwwLDApOwpLaC5zZXQoMCwwLDApO2Zvcih2YXIgUj0wLFM9di5sZW5ndGg7UjxTO1IrKyl7dmFyIFY9cltSXSxXPXZbUl07MCE9PVYmJigkaS5mcm9tQnVmZmVyQXR0cmlidXRlKFcsRyksYWouZnJvbUJ1ZmZlckF0dHJpYnV0ZShXLEopLGJqLmZyb21CdWZmZXJBdHRyaWJ1dGUoVyxQKSxJaC5hZGRTY2FsZWRWZWN0b3IoJGkuc3ViKExkKSxWKSxKaC5hZGRTY2FsZWRWZWN0b3IoYWouc3ViKE1kKSxWKSxLaC5hZGRTY2FsZWRWZWN0b3IoYmouc3ViKE5kKSxWKSl9TGQuYWRkKEloKTtNZC5hZGQoSmgpO05kLmFkZChLaCl9aWYoYT1BYShhLGMsZSxnLExkLE1kLE5kLHNmKSl6JiYob2UuZnJvbUJ1ZmZlckF0dHJpYnV0ZSh6LEcpLHBlLmZyb21CdWZmZXJBdHRyaWJ1dGUoeixKKSxxZS5mcm9tQnVmZmVyQXR0cmlidXRlKHosUCksYS51dj1CLmdldFVWKHNmLExkLE1kLE5kLG9lLHBlLHFlLG5ldyBmKSksRSYmKG9lLmZyb21CdWZmZXJBdHRyaWJ1dGUoRSxHKSxwZS5mcm9tQnVmZmVyQXR0cmlidXRlKEUsCkopLHFlLmZyb21CdWZmZXJBdHRyaWJ1dGUoRSxQKSxhLnV2Mj1CLmdldFVWKHNmLExkLE1kLE5kLG9lLHBlLHFlLG5ldyBmKSksej1uZXcgSyhHLEosUCksQi5nZXROb3JtYWwoTGQsTWQsTmQsei5ub3JtYWwpLGEuZmFjZT16O3JldHVybiBhfWZ1bmN0aW9uIHlhKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImlkIix7dmFsdWU6UmsrPTJ9KTt0aGlzLnV1aWQ9aGIuZ2VuZXJhdGVVVUlEKCk7dGhpcy5uYW1lPSIiO3RoaXMudHlwZT0iR2VvbWV0cnkiO3RoaXMudmVydGljZXM9W107dGhpcy5jb2xvcnM9W107dGhpcy5mYWNlcz1bXTt0aGlzLmZhY2VWZXJ0ZXhVdnM9W1tdXTt0aGlzLm1vcnBoVGFyZ2V0cz1bXTt0aGlzLm1vcnBoTm9ybWFscz1bXTt0aGlzLnNraW5XZWlnaHRzPVtdO3RoaXMuc2tpbkluZGljZXM9W107dGhpcy5saW5lRGlzdGFuY2VzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT10aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlPQp0aGlzLmNvbG9yc05lZWRVcGRhdGU9dGhpcy5ub3JtYWxzTmVlZFVwZGF0ZT10aGlzLnV2c05lZWRVcGRhdGU9dGhpcy52ZXJ0aWNlc05lZWRVcGRhdGU9dGhpcy5lbGVtZW50c05lZWRVcGRhdGU9ITF9ZnVuY3Rpb24gU2EoYSxjLGUsZyxyLHYpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJCb3hHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXt3aWR0aDphLGhlaWdodDpjLGRlcHRoOmUsd2lkdGhTZWdtZW50czpnLGhlaWdodFNlZ21lbnRzOnIsZGVwdGhTZWdtZW50czp2fTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgWGEoYSxjLGUsZyxyLHYpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBYYShhLGMsZSxnLHIsdil7ZnVuY3Rpb24geihXLGhhLGZhLHJhLHBhLHFhLHVhLG9hLHRhLEJhLFRhKXt2YXIgVWE9cWEvdGEsQ2E9dWEvQmEsSGE9cWEvMixEYT11YS8yLE1hPW9hLzI7dWE9dGErMTt2YXIgZGI9QmErMSx0Yj1xYT0wLEthLGJiLGpiPW5ldyBrO2ZvcihiYj0KMDtiYjxkYjtiYisrKXt2YXIgRWI9YmIqQ2EtRGE7Zm9yKEthPTA7S2E8dWE7S2ErKylqYltXXT0oS2EqVWEtSGEpKnJhLGpiW2hhXT1FYipwYSxqYltmYV09TWEsSi5wdXNoKGpiLngsamIueSxqYi56KSxqYltXXT0wLGpiW2hhXT0wLGpiW2ZhXT0wPG9hPzE6LTEsUC5wdXNoKGpiLngsamIueSxqYi56KSxSLnB1c2goS2EvdGEpLFIucHVzaCgxLWJiL0JhKSxxYSs9MX1mb3IoYmI9MDtiYjxCYTtiYisrKWZvcihLYT0wO0thPHRhO0thKyspVz1TK0thK3VhKihiYisxKSxoYT1TKyhLYSsxKSt1YSooYmIrMSksZmE9UysoS2ErMSkrdWEqYmIsRy5wdXNoKFMrS2ErdWEqYmIsVyxmYSksRy5wdXNoKFcsaGEsZmEpLHRiKz02O0UuYWRkR3JvdXAoVix0YixUYSk7Vis9dGI7Uys9cWF9dmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkJveEJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOmEsaGVpZ2h0OmMsZGVwdGg6ZSx3aWR0aFNlZ21lbnRzOmcsaGVpZ2h0U2VnbWVudHM6ciwKZGVwdGhTZWdtZW50czp2fTt2YXIgRT10aGlzO2E9YXx8MTtjPWN8fDE7ZT1lfHwxO2c9TWF0aC5mbG9vcihnKXx8MTtyPU1hdGguZmxvb3Iocil8fDE7dj1NYXRoLmZsb29yKHYpfHwxO3ZhciBHPVtdLEo9W10sUD1bXSxSPVtdLFM9MCxWPTA7eigieiIsInkiLCJ4IiwtMSwtMSxlLGMsYSx2LHIsMCk7eigieiIsInkiLCJ4IiwxLC0xLGUsYywtYSx2LHIsMSk7eigieCIsInoiLCJ5IiwxLDEsYSxlLGMsZyx2LDIpO3ooIngiLCJ6IiwieSIsMSwtMSxhLGUsLWMsZyx2LDMpO3ooIngiLCJ5IiwieiIsMSwtMSxhLGMsZSxnLHIsNCk7eigieCIsInkiLCJ6IiwtMSwtMSxhLGMsLWUsZyxyLDUpO3RoaXMuc2V0SW5kZXgoRyk7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoSiwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGNhKFAsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKFIsMikpfWZ1bmN0aW9uIHViKGEpe3ZhciBjPXt9LGU7Zm9yKGUgaW4gYSl7Y1tlXT0Ke307Zm9yKHZhciBnIGluIGFbZV0pe3ZhciByPWFbZV1bZ107Y1tlXVtnXT1yJiYoci5pc0NvbG9yfHxyLmlzTWF0cml4M3x8ci5pc01hdHJpeDR8fHIuaXNWZWN0b3IyfHxyLmlzVmVjdG9yM3x8ci5pc1ZlY3RvcjR8fHIuaXNUZXh0dXJlKT9yLmNsb25lKCk6QXJyYXkuaXNBcnJheShyKT9yLnNsaWNlKCk6cn19cmV0dXJuIGN9ZnVuY3Rpb24gQmIoYSl7Zm9yKHZhciBjPXt9LGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGc9dWIoYVtlXSkscjtmb3IociBpbiBnKWNbcl09Z1tyXX1yZXR1cm4gY31mdW5jdGlvbiBxYihhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJTaGFkZXJNYXRlcmlhbCI7dGhpcy5kZWZpbmVzPXt9O3RoaXMudW5pZm9ybXM9e307dGhpcy52ZXJ0ZXhTaGFkZXI9InZvaWQgbWFpbigpIHtcblx0Z2xfUG9zaXRpb24gXHgzZCBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSI7dGhpcy5mcmFnbWVudFNoYWRlcj0KInZvaWQgbWFpbigpIHtcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggMS4wLCAwLjAsIDAuMCwgMS4wICk7XG59Ijt0aGlzLmxpbmV3aWR0aD0xO3RoaXMud2lyZWZyYW1lPSExO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPTE7dGhpcy5tb3JwaE5vcm1hbHM9dGhpcy5tb3JwaFRhcmdldHM9dGhpcy5za2lubmluZz10aGlzLmNsaXBwaW5nPXRoaXMubGlnaHRzPXRoaXMuZm9nPSExO3RoaXMuZXh0ZW5zaW9ucz17ZGVyaXZhdGl2ZXM6ITEsZnJhZ0RlcHRoOiExLGRyYXdCdWZmZXJzOiExLHNoYWRlclRleHR1cmVMT0Q6ITF9O3RoaXMuZGVmYXVsdEF0dHJpYnV0ZVZhbHVlcz17Y29sb3I6WzEsMSwxXSx1djpbMCwwXSx1djI6WzAsMF19O3RoaXMuaW5kZXgwQXR0cmlidXRlTmFtZT12b2lkIDA7dGhpcy51bmlmb3Jtc05lZWRVcGRhdGU9ITE7dm9pZCAwIT09YSYmKHZvaWQgMCE9PWEuYXR0cmlidXRlcyYmY29uc29sZS5lcnJvcigiVEhSRUUuU2hhZGVyTWF0ZXJpYWw6IGF0dHJpYnV0ZXMgc2hvdWxkIG5vdyBiZSBkZWZpbmVkIGluIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIiksCnRoaXMuc2V0VmFsdWVzKGEpKX1mdW5jdGlvbiB6Yigpe0EuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkNhbWVyYSI7dGhpcy5tYXRyaXhXb3JsZEludmVyc2U9bmV3IHE7dGhpcy5wcm9qZWN0aW9uTWF0cml4PW5ldyBxO3RoaXMucHJvamVjdGlvbk1hdHJpeEludmVyc2U9bmV3IHF9ZnVuY3Rpb24gdmIoYSxjLGUsZyl7emIuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBlcnNwZWN0aXZlQ2FtZXJhIjt0aGlzLmZvdj12b2lkIDAhPT1hP2E6NTA7dGhpcy56b29tPTE7dGhpcy5uZWFyPXZvaWQgMCE9PWU/ZTouMTt0aGlzLmZhcj12b2lkIDAhPT1nP2c6MkUzO3RoaXMuZm9jdXM9MTA7dGhpcy5hc3BlY3Q9dm9pZCAwIT09Yz9jOjE7dGhpcy52aWV3PW51bGw7dGhpcy5maWxtR2F1Z2U9MzU7dGhpcy5maWxtT2Zmc2V0PTA7dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9ZnVuY3Rpb24gR2IoYSxjLGUsZyl7QS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQ3ViZUNhbWVyYSI7dmFyIHI9bmV3IHZiKDkwLAoxLGEsYyk7ci51cC5zZXQoMCwtMSwwKTtyLmxvb2tBdChuZXcgaygxLDAsMCkpO3RoaXMuYWRkKHIpO3ZhciB2PW5ldyB2Yig5MCwxLGEsYyk7di51cC5zZXQoMCwtMSwwKTt2Lmxvb2tBdChuZXcgaygtMSwwLDApKTt0aGlzLmFkZCh2KTt2YXIgej1uZXcgdmIoOTAsMSxhLGMpO3oudXAuc2V0KDAsMCwxKTt6Lmxvb2tBdChuZXcgaygwLDEsMCkpO3RoaXMuYWRkKHopO3ZhciBFPW5ldyB2Yig5MCwxLGEsYyk7RS51cC5zZXQoMCwwLC0xKTtFLmxvb2tBdChuZXcgaygwLC0xLDApKTt0aGlzLmFkZChFKTt2YXIgRz1uZXcgdmIoOTAsMSxhLGMpO0cudXAuc2V0KDAsLTEsMCk7Ry5sb29rQXQobmV3IGsoMCwwLDEpKTt0aGlzLmFkZChHKTt2YXIgSj1uZXcgdmIoOTAsMSxhLGMpO0oudXAuc2V0KDAsLTEsMCk7Si5sb29rQXQobmV3IGsoMCwwLC0xKSk7dGhpcy5hZGQoSik7Zz1nfHx7Zm9ybWF0OjEwMjIsbWFnRmlsdGVyOjEwMDYsbWluRmlsdGVyOjEwMDZ9O3RoaXMucmVuZGVyVGFyZ2V0PQpuZXcgTmIoZSxlLGcpO3RoaXMucmVuZGVyVGFyZ2V0LnRleHR1cmUubmFtZT0iQ3ViZUNhbWVyYSI7dGhpcy51cGRhdGU9ZnVuY3Rpb24oUCxSKXtudWxsPT09dGhpcy5wYXJlbnQmJnRoaXMudXBkYXRlTWF0cml4V29ybGQoKTt2YXIgUz1QLmdldFJlbmRlclRhcmdldCgpLFY9dGhpcy5yZW5kZXJUYXJnZXQsVz1WLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzO1YudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9ITE7UC5zZXRSZW5kZXJUYXJnZXQoViwwKTtQLnJlbmRlcihSLHIpO1Auc2V0UmVuZGVyVGFyZ2V0KFYsMSk7UC5yZW5kZXIoUix2KTtQLnNldFJlbmRlclRhcmdldChWLDIpO1AucmVuZGVyKFIseik7UC5zZXRSZW5kZXJUYXJnZXQoViwzKTtQLnJlbmRlcihSLEUpO1Auc2V0UmVuZGVyVGFyZ2V0KFYsNCk7UC5yZW5kZXIoUixHKTtWLnRleHR1cmUuZ2VuZXJhdGVNaXBtYXBzPVc7UC5zZXRSZW5kZXJUYXJnZXQoViw1KTtQLnJlbmRlcihSLEopO1Auc2V0UmVuZGVyVGFyZ2V0KFMpfTsKdGhpcy5jbGVhcj1mdW5jdGlvbihQLFIsUyxWKXtmb3IodmFyIFc9UC5nZXRSZW5kZXJUYXJnZXQoKSxoYT10aGlzLnJlbmRlclRhcmdldCxmYT0wOzY+ZmE7ZmErKylQLnNldFJlbmRlclRhcmdldChoYSxmYSksUC5jbGVhcihSLFMsVik7UC5zZXRSZW5kZXJUYXJnZXQoVyl9fWZ1bmN0aW9uIE5iKGEsYyxlKXttLmNhbGwodGhpcyxhLGMsZSl9ZnVuY3Rpb24gQWIoYSxjLGUsZyxyLHYseixFLEcsSixQLFIpe2wuY2FsbCh0aGlzLG51bGwsdix6LEUsRyxKLGcscixQLFIpO3RoaXMuaW1hZ2U9e2RhdGE6YSx3aWR0aDpjLGhlaWdodDplfTt0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT1HP0c6MTAwMzt0aGlzLm1pbkZpbHRlcj12b2lkIDAhPT1KP0o6MTAwMzt0aGlzLmZsaXBZPXRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExO3RoaXMudW5wYWNrQWxpZ25tZW50PTF9ZnVuY3Rpb24gSGIoYSxjKXt0aGlzLm5vcm1hbD12b2lkIDAhPT1hP2E6bmV3IGsoMSwwLDApO3RoaXMuY29uc3RhbnQ9dm9pZCAwIT09CmM/YzowfWZ1bmN0aW9uIGljKGEsYyxlLGcscix2KXt0aGlzLnBsYW5lcz1bdm9pZCAwIT09YT9hOm5ldyBIYix2b2lkIDAhPT1jP2M6bmV3IEhiLHZvaWQgMCE9PWU/ZTpuZXcgSGIsdm9pZCAwIT09Zz9nOm5ldyBIYix2b2lkIDAhPT1yP3I6bmV3IEhiLHZvaWQgMCE9PXY/djpuZXcgSGJdfWZ1bmN0aW9uIGJjKCl7ZnVuY3Rpb24gYShyLHYpeyExIT09ZSYmKGcocix2KSxjLnJlcXVlc3RBbmltYXRpb25GcmFtZShhKSl9dmFyIGM9bnVsbCxlPSExLGc9bnVsbDtyZXR1cm57c3RhcnQ6ZnVuY3Rpb24oKXshMCE9PWUmJm51bGwhPT1nJiYoYy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYSksZT0hMCl9LHN0b3A6ZnVuY3Rpb24oKXtlPSExfSxzZXRBbmltYXRpb25Mb29wOmZ1bmN0aW9uKHIpe2c9cn0sc2V0Q29udGV4dDpmdW5jdGlvbihyKXtjPXJ9fX1mdW5jdGlvbiBPZChhKXtmdW5jdGlvbiBjKHIsdil7dmFyIHo9ci5hcnJheSxFPXIuZHluYW1pYz8zNTA0ODozNTA0NCxHPWEuY3JlYXRlQnVmZmVyKCk7CmEuYmluZEJ1ZmZlcih2LEcpO2EuYnVmZmVyRGF0YSh2LHosRSk7ci5vblVwbG9hZENhbGxiYWNrKCk7dj01MTI2O3ogaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXk/dj01MTI2OnogaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTEF0dHJpYnV0ZXM6IFVuc3VwcG9ydGVkIGRhdGEgYnVmZmVyIGZvcm1hdDogRmxvYXQ2NEFycmF5LiIpOnogaW5zdGFuY2VvZiBVaW50MTZBcnJheT92PTUxMjM6eiBpbnN0YW5jZW9mIEludDE2QXJyYXk/dj01MTIyOnogaW5zdGFuY2VvZiBVaW50MzJBcnJheT92PTUxMjU6eiBpbnN0YW5jZW9mIEludDMyQXJyYXk/dj01MTI0OnogaW5zdGFuY2VvZiBJbnQ4QXJyYXk/dj01MTIwOnogaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodj01MTIxKTtyZXR1cm57YnVmZmVyOkcsdHlwZTp2LGJ5dGVzUGVyRWxlbWVudDp6LkJZVEVTX1BFUl9FTEVNRU5ULHZlcnNpb246ci52ZXJzaW9ufX1mdW5jdGlvbiBlKHIsdix6KXt2YXIgRT0Kdi5hcnJheSxHPXYudXBkYXRlUmFuZ2U7YS5iaW5kQnVmZmVyKHoscik7ITE9PT12LmR5bmFtaWM/YS5idWZmZXJEYXRhKHosRSwzNTA0NCk6LTE9PT1HLmNvdW50P2EuYnVmZmVyU3ViRGF0YSh6LDAsRSk6MD09PUcuY291bnQ/Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xPYmplY3RzLnVwZGF0ZUJ1ZmZlcjogZHluYW1pYyBUSFJFRS5CdWZmZXJBdHRyaWJ1dGUgbWFya2VkIGFzIG5lZWRzVXBkYXRlIGJ1dCB1cGRhdGVSYW5nZS5jb3VudCBpcyAwLCBlbnN1cmUgeW91IGFyZSB1c2luZyBzZXQgbWV0aG9kcyBvciB1cGRhdGluZyBtYW51YWxseS4iKTooYS5idWZmZXJTdWJEYXRhKHosRy5vZmZzZXQqRS5CWVRFU19QRVJfRUxFTUVOVCxFLnN1YmFycmF5KEcub2Zmc2V0LEcub2Zmc2V0K0cuY291bnQpKSxHLmNvdW50PS0xKX12YXIgZz1uZXcgV2Vha01hcDtyZXR1cm57Z2V0OmZ1bmN0aW9uKHIpe3IuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSYmKHI9ci5kYXRhKTtyZXR1cm4gZy5nZXQocil9LApyZW1vdmU6ZnVuY3Rpb24ocil7ci5pc0ludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlJiYocj1yLmRhdGEpO3ZhciB2PWcuZ2V0KHIpO3YmJihhLmRlbGV0ZUJ1ZmZlcih2LmJ1ZmZlciksZy5kZWxldGUocikpfSx1cGRhdGU6ZnVuY3Rpb24ocix2KXtyLmlzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGUmJihyPXIuZGF0YSk7dmFyIHo9Zy5nZXQocik7dm9pZCAwPT09ej9nLnNldChyLGMocix2KSk6ei52ZXJzaW9uPHIudmVyc2lvbiYmKGUoei5idWZmZXIscix2KSx6LnZlcnNpb249ci52ZXJzaW9uKX19fWZ1bmN0aW9uIHJkKGEsYyxlLGcpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQbGFuZUdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOmEsaGVpZ2h0OmMsd2lkdGhTZWdtZW50czplLGhlaWdodFNlZ21lbnRzOmd9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBMYyhhLGMsZSxnKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gTGMoYSxjLGUsZyl7dmEuY2FsbCh0aGlzKTsKdGhpcy50eXBlPSJQbGFuZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3dpZHRoOmEsaGVpZ2h0OmMsd2lkdGhTZWdtZW50czplLGhlaWdodFNlZ21lbnRzOmd9O2E9YXx8MTtjPWN8fDE7dmFyIHI9YS8yLHY9Yy8yO2U9TWF0aC5mbG9vcihlKXx8MTtnPU1hdGguZmxvb3IoZyl8fDE7dmFyIHo9ZSsxLEU9ZysxLEc9YS9lLEo9Yy9nLFA9W10sUj1bXSxTPVtdLFY9W107Zm9yKGE9MDthPEU7YSsrKXt2YXIgVz1hKkotdjtmb3IoYz0wO2M8ejtjKyspUi5wdXNoKGMqRy1yLC1XLDApLFMucHVzaCgwLDAsMSksVi5wdXNoKGMvZSksVi5wdXNoKDEtYS9nKX1mb3IoYT0wO2E8ZzthKyspZm9yKGM9MDtjPGU7YysrKXI9Yyt6KihhKzEpLHY9YysxK3oqKGErMSksRT1jKzEreiphLFAucHVzaChjK3oqYSxyLEUpLFAucHVzaChyLHYsRSk7dGhpcy5zZXRJbmRleChQKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShSLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgibm9ybWFsIiwKbmV3IGNhKFMsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKFYsMikpfWZ1bmN0aW9uIHNkKGEsYyxlLGcpe2Z1bmN0aW9uIHIoUixTKXtjLmJ1ZmZlcnMuY29sb3Iuc2V0Q2xlYXIoUi5yLFIuZyxSLmIsUyxnKX12YXIgdj1uZXcgSSgwKSx6PTAsRSxHLEo9bnVsbCxQPTA7cmV0dXJue2dldENsZWFyQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sc2V0Q2xlYXJDb2xvcjpmdW5jdGlvbihSLFMpe3Yuc2V0KFIpO3o9dm9pZCAwIT09Uz9TOjE7cih2LHopfSxnZXRDbGVhckFscGhhOmZ1bmN0aW9uKCl7cmV0dXJuIHp9LHNldENsZWFyQWxwaGE6ZnVuY3Rpb24oUil7ej1SO3Iodix6KX0scmVuZGVyOmZ1bmN0aW9uKFIsUyxWLFcpe1M9Uy5iYWNrZ3JvdW5kO1Y9YS52cjsoVj1WLmdldFNlc3Npb24mJlYuZ2V0U2Vzc2lvbigpKSYmImFkZGl0aXZlIj09PVYuZW52aXJvbm1lbnRCbGVuZE1vZGUmJihTPW51bGwpO251bGw9PT1TPyhyKHYseiksSj1udWxsLFA9MCk6UyYmUy5pc0NvbG9yJiYKKHIoUywxKSxXPSEwLEo9bnVsbCxQPTApOyhhLmF1dG9DbGVhcnx8VykmJmEuY2xlYXIoYS5hdXRvQ2xlYXJDb2xvcixhLmF1dG9DbGVhckRlcHRoLGEuYXV0b0NsZWFyU3RlbmNpbCk7aWYoUyYmKFMuaXNDdWJlVGV4dHVyZXx8Uy5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSkpe3ZvaWQgMD09PUcmJihHPW5ldyB4YShuZXcgWGEoMSwxLDEpLG5ldyBxYih7dHlwZToiQmFja2dyb3VuZEN1YmVNYXRlcmlhbCIsdW5pZm9ybXM6dWIoTWMuY3ViZS51bmlmb3JtcyksdmVydGV4U2hhZGVyOk1jLmN1YmUudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOk1jLmN1YmUuZnJhZ21lbnRTaGFkZXIsc2lkZToxLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxHLmdlb21ldHJ5LnJlbW92ZUF0dHJpYnV0ZSgibm9ybWFsIiksRy5nZW9tZXRyeS5yZW1vdmVBdHRyaWJ1dGUoInV2IiksRy5vbkJlZm9yZVJlbmRlcj1mdW5jdGlvbihoYSxmYSxyYSl7dGhpcy5tYXRyaXhXb3JsZC5jb3B5UG9zaXRpb24ocmEubWF0cml4V29ybGQpfSwKT2JqZWN0LmRlZmluZVByb3BlcnR5KEcubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnRDdWJlLnZhbHVlfX0pLGUudXBkYXRlKEcpKTtXPVMuaXNXZWJHTFJlbmRlclRhcmdldEN1YmU/Uy50ZXh0dXJlOlM7Ry5tYXRlcmlhbC51bmlmb3Jtcy50Q3ViZS52YWx1ZT1XO0cubWF0ZXJpYWwudW5pZm9ybXMudEZsaXAudmFsdWU9Uy5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT8xOi0xO2lmKEohPT1TfHxQIT09Vy52ZXJzaW9uKUcubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsSj1TLFA9Vy52ZXJzaW9uO1IudW5zaGlmdChHLEcuZ2VvbWV0cnksRy5tYXRlcmlhbCwwLDAsbnVsbCl9ZWxzZSBpZihTJiZTLmlzVGV4dHVyZSl7dm9pZCAwPT09RSYmKEU9bmV3IHhhKG5ldyBMYygyLDIpLG5ldyBxYih7dHlwZToiQmFja2dyb3VuZE1hdGVyaWFsIix1bmlmb3Jtczp1YihNYy5iYWNrZ3JvdW5kLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6TWMuYmFja2dyb3VuZC52ZXJ0ZXhTaGFkZXIsCmZyYWdtZW50U2hhZGVyOk1jLmJhY2tncm91bmQuZnJhZ21lbnRTaGFkZXIsc2lkZTowLGRlcHRoVGVzdDohMSxkZXB0aFdyaXRlOiExLGZvZzohMX0pKSxFLmdlb21ldHJ5LnJlbW92ZUF0dHJpYnV0ZSgibm9ybWFsIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KEUubWF0ZXJpYWwsIm1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuaWZvcm1zLnQyRC52YWx1ZX19KSxlLnVwZGF0ZShFKSk7RS5tYXRlcmlhbC51bmlmb3Jtcy50MkQudmFsdWU9UzshMD09PVMubWF0cml4QXV0b1VwZGF0ZSYmUy51cGRhdGVNYXRyaXgoKTtFLm1hdGVyaWFsLnVuaWZvcm1zLnV2VHJhbnNmb3JtLnZhbHVlLmNvcHkoUy5tYXRyaXgpO2lmKEohPT1TfHxQIT09Uy52ZXJzaW9uKUUubWF0ZXJpYWwubmVlZHNVcGRhdGU9ITAsSj1TLFA9Uy52ZXJzaW9uO1IudW5zaGlmdChFLEUuZ2VvbWV0cnksRS5tYXRlcmlhbCwwLDAsbnVsbCl9fX19ZnVuY3Rpb24gc2EoYSxjLGUsZyl7dmFyIHI7dGhpcy5zZXRNb2RlPQpmdW5jdGlvbih2KXtyPXZ9O3RoaXMucmVuZGVyPWZ1bmN0aW9uKHYseil7YS5kcmF3QXJyYXlzKHIsdix6KTtlLnVwZGF0ZSh6LHIpfTt0aGlzLnJlbmRlckluc3RhbmNlcz1mdW5jdGlvbih2LHosRSl7aWYoZy5pc1dlYkdMMil7dmFyIEc9YTt2YXIgSj0iZHJhd0FycmF5c0luc3RhbmNlZCJ9ZWxzZSBpZihHPWMuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIiksSj0iZHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIixudWxsPT09Ryl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xCdWZmZXJSZW5kZXJlcjogdXNpbmcgVEhSRUUuSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkgYnV0IGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgZXh0ZW5zaW9uIEFOR0xFX2luc3RhbmNlZF9hcnJheXMuIik7cmV0dXJufUdbSl0ocix6LEUsdi5tYXhJbnN0YW5jZWRDb3VudCk7ZS51cGRhdGUoRSxyLHYubWF4SW5zdGFuY2VkQ291bnQpfX1mdW5jdGlvbiBNYihhLGMsZSl7ZnVuY3Rpb24gZyhxYSl7aWYoImhpZ2hwIj09PQpxYSl7aWYoMDxhLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMywzNjMzOCkucHJlY2lzaW9uJiYwPGEuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KDM1NjMyLDM2MzM4KS5wcmVjaXNpb24pcmV0dXJuImhpZ2hwIjtxYT0ibWVkaXVtcCJ9cmV0dXJuIm1lZGl1bXAiPT09cWEmJjA8YS5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoMzU2MzMsMzYzMzcpLnByZWNpc2lvbiYmMDxhLmdldFNoYWRlclByZWNpc2lvbkZvcm1hdCgzNTYzMiwzNjMzNykucHJlY2lzaW9uPyJtZWRpdW1wIjoibG93cCJ9dmFyIHIsdj0idW5kZWZpbmVkIiE9PXR5cGVvZiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0JiZhIGluc3RhbmNlb2YgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCx6PXZvaWQgMCE9PWUucHJlY2lzaW9uP2UucHJlY2lzaW9uOiJoaWdocCIsRT1nKHopO0UhPT16JiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiIseiwibm90IHN1cHBvcnRlZCwgdXNpbmciLEUsImluc3RlYWQuIiksCno9RSk7ZT0hMD09PWUubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjtFPWEuZ2V0UGFyYW1ldGVyKDM0OTMwKTt2YXIgRz1hLmdldFBhcmFtZXRlcigzNTY2MCksSj1hLmdldFBhcmFtZXRlcigzMzc5KSxQPWEuZ2V0UGFyYW1ldGVyKDM0MDc2KSxSPWEuZ2V0UGFyYW1ldGVyKDM0OTIxKSxTPWEuZ2V0UGFyYW1ldGVyKDM2MzQ3KSxWPWEuZ2V0UGFyYW1ldGVyKDM2MzQ4KSxXPWEuZ2V0UGFyYW1ldGVyKDM2MzQ5KSxoYT0wPEcsZmE9dnx8ISFjLmdldCgiT0VTX3RleHR1cmVfZmxvYXQiKSxyYT1oYSYmZmEscGE9dj9hLmdldFBhcmFtZXRlcigzNjE4Myk6MDtyZXR1cm57aXNXZWJHTDI6dixnZXRNYXhBbmlzb3Ryb3B5OmZ1bmN0aW9uKCl7aWYodm9pZCAwIT09cilyZXR1cm4gcjt2YXIgcWE9Yy5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO3JldHVybiByPW51bGwhPT1xYT9hLmdldFBhcmFtZXRlcihxYS5NQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQpOjB9LApnZXRNYXhQcmVjaXNpb246ZyxwcmVjaXNpb246eixsb2dhcml0aG1pY0RlcHRoQnVmZmVyOmUsbWF4VGV4dHVyZXM6RSxtYXhWZXJ0ZXhUZXh0dXJlczpHLG1heFRleHR1cmVTaXplOkosbWF4Q3ViZW1hcFNpemU6UCxtYXhBdHRyaWJ1dGVzOlIsbWF4VmVydGV4VW5pZm9ybXM6UyxtYXhWYXJ5aW5nczpWLG1heEZyYWdtZW50VW5pZm9ybXM6Vyx2ZXJ0ZXhUZXh0dXJlczpoYSxmbG9hdEZyYWdtZW50VGV4dHVyZXM6ZmEsZmxvYXRWZXJ0ZXhUZXh0dXJlczpyYSxtYXhTYW1wbGVzOnBhfX1mdW5jdGlvbiB3Yygpe2Z1bmN0aW9uIGEoKXtKLnZhbHVlIT09ZyYmKEoudmFsdWU9ZyxKLm5lZWRzVXBkYXRlPTA8cik7ZS5udW1QbGFuZXM9cjtlLm51bUludGVyc2VjdGlvbj0wfWZ1bmN0aW9uIGMoUCxSLFMsVil7dmFyIFc9bnVsbCE9PVA/UC5sZW5ndGg6MCxoYT1udWxsO2lmKDAhPT1XKXtoYT1KLnZhbHVlO2lmKCEwIT09Vnx8bnVsbD09PWhhKXtWPVMrNCpXO1I9Ui5tYXRyaXhXb3JsZEludmVyc2U7CkcuZ2V0Tm9ybWFsTWF0cml4KFIpO2lmKG51bGw9PT1oYXx8aGEubGVuZ3RoPFYpaGE9bmV3IEZsb2F0MzJBcnJheShWKTtmb3IoVj0wO1YhPT1XOysrVixTKz00KUUuY29weShQW1ZdKS5hcHBseU1hdHJpeDQoUixHKSxFLm5vcm1hbC50b0FycmF5KGhhLFMpLGhhW1MrM109RS5jb25zdGFudH1KLnZhbHVlPWhhO0oubmVlZHNVcGRhdGU9ITB9ZS5udW1QbGFuZXM9VztyZXR1cm4gaGF9dmFyIGU9dGhpcyxnPW51bGwscj0wLHY9ITEsej0hMSxFPW5ldyBIYixHPW5ldyB0LEo9e3ZhbHVlOm51bGwsbmVlZHNVcGRhdGU6ITF9O3RoaXMudW5pZm9ybT1KO3RoaXMubnVtSW50ZXJzZWN0aW9uPXRoaXMubnVtUGxhbmVzPTA7dGhpcy5pbml0PWZ1bmN0aW9uKFAsUixTKXt2YXIgVj0wIT09UC5sZW5ndGh8fFJ8fDAhPT1yfHx2O3Y9UjtnPWMoUCxTLDApO3I9UC5sZW5ndGg7cmV0dXJuIFZ9O3RoaXMuYmVnaW5TaGFkb3dzPWZ1bmN0aW9uKCl7ej0hMDtjKG51bGwpfTt0aGlzLmVuZFNoYWRvd3M9CmZ1bmN0aW9uKCl7ej0hMTthKCl9O3RoaXMuc2V0U3RhdGU9ZnVuY3Rpb24oUCxSLFMsVixXLGhhKXtpZighdnx8bnVsbD09PVB8fDA9PT1QLmxlbmd0aHx8eiYmIVMpej9jKG51bGwpOmEoKTtlbHNle1M9ej8wOnI7dmFyIGZhPTQqUyxyYT1XLmNsaXBwaW5nU3RhdGV8fG51bGw7Si52YWx1ZT1yYTtyYT1jKFAsVixmYSxoYSk7Zm9yKFA9MDtQIT09ZmE7KytQKXJhW1BdPWdbUF07Vy5jbGlwcGluZ1N0YXRlPXJhO3RoaXMubnVtSW50ZXJzZWN0aW9uPVI/dGhpcy5udW1QbGFuZXM6MDt0aGlzLm51bVBsYW5lcys9U319fWZ1bmN0aW9uIGJkKGEpe3ZhciBjPXt9O3JldHVybntnZXQ6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09Y1tlXSlyZXR1cm4gY1tlXTtzd2l0Y2goZSl7Y2FzZSAiV0VCR0xfZGVwdGhfdGV4dHVyZSI6dmFyIGc9YS5nZXRFeHRlbnNpb24oIldFQkdMX2RlcHRoX3RleHR1cmUiKXx8YS5nZXRFeHRlbnNpb24oIk1PWl9XRUJHTF9kZXB0aF90ZXh0dXJlIil8fGEuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfZGVwdGhfdGV4dHVyZSIpOwpicmVhaztjYXNlICJFWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiOmc9YS5nZXRFeHRlbnNpb24oIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxhLmdldEV4dGVuc2lvbigiTU9aX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpfHxhLmdldEV4dGVuc2lvbigiV0VCS0lUX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpO2JyZWFrO2Nhc2UgIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIjpnPWEuZ2V0RXh0ZW5zaW9uKCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHxhLmdldEV4dGVuc2lvbigiTU9aX1dFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil8fGEuZ2V0RXh0ZW5zaW9uKCJXRUJLSVRfV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3MzdGMiKTticmVhaztjYXNlICJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiOmc9YS5nZXRFeHRlbnNpb24oIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfHwKYS5nZXRFeHRlbnNpb24oIldFQktJVF9XRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMiKTticmVhaztkZWZhdWx0Omc9YS5nZXRFeHRlbnNpb24oZSl9bnVsbD09PWcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogIitlKyIgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQuIik7cmV0dXJuIGNbZV09Z319fWZ1bmN0aW9uIHRkKGEsYyxlKXtmdW5jdGlvbiBnKEUpe3ZhciBHPUUudGFyZ2V0O0U9di5nZXQoRyk7bnVsbCE9PUUuaW5kZXgmJmMucmVtb3ZlKEUuaW5kZXgpO2Zvcih2YXIgSiBpbiBFLmF0dHJpYnV0ZXMpYy5yZW1vdmUoRS5hdHRyaWJ1dGVzW0pdKTtHLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGcpO3YuZGVsZXRlKEcpO2lmKEo9ei5nZXQoRSkpYy5yZW1vdmUoSiksei5kZWxldGUoRSk7ZS5tZW1vcnkuZ2VvbWV0cmllcy0tfWZ1bmN0aW9uIHIoRSl7dmFyIEc9W10sSj1FLmluZGV4LFA9RS5hdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKG51bGwhPT0KSil7dmFyIFI9Si5hcnJheTtKPUoudmVyc2lvbjtQPTA7Zm9yKHZhciBTPVIubGVuZ3RoO1A8UztQKz0zKXt2YXIgVj1SW1ArMF0sVz1SW1ArMV0saGE9UltQKzJdO0cucHVzaChWLFcsVyxoYSxoYSxWKX19ZWxzZSBmb3IoUj1QLmFycmF5LEo9UC52ZXJzaW9uLFA9MCxTPVIubGVuZ3RoLzMtMTtQPFM7UCs9MylWPVArMCxXPVArMSxoYT1QKzIsRy5wdXNoKFYsVyxXLGhhLGhhLFYpO0c9bmV3ICg2NTUzNTxFYShHKT9lYTpaKShHLDEpO0cudmVyc2lvbj1KO2MudXBkYXRlKEcsMzQ5NjMpOyhSPXouZ2V0KEUpKSYmYy5yZW1vdmUoUik7ei5zZXQoRSxHKX12YXIgdj1uZXcgV2Vha01hcCx6PW5ldyBXZWFrTWFwO3JldHVybntnZXQ6ZnVuY3Rpb24oRSxHKXt2YXIgSj12LmdldChHKTtpZihKKXJldHVybiBKO0cuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsZyk7Ry5pc0J1ZmZlckdlb21ldHJ5P0o9RzpHLmlzR2VvbWV0cnkmJih2b2lkIDA9PT1HLl9idWZmZXJHZW9tZXRyeSYmKEcuX2J1ZmZlckdlb21ldHJ5PQoobmV3IHZhKS5zZXRGcm9tT2JqZWN0KEUpKSxKPUcuX2J1ZmZlckdlb21ldHJ5KTt2LnNldChHLEopO2UubWVtb3J5Lmdlb21ldHJpZXMrKztyZXR1cm4gSn0sdXBkYXRlOmZ1bmN0aW9uKEUpe3ZhciBHPUUuaW5kZXgsSj1FLmF0dHJpYnV0ZXM7bnVsbCE9PUcmJmMudXBkYXRlKEcsMzQ5NjMpO2Zvcih2YXIgUCBpbiBKKWMudXBkYXRlKEpbUF0sMzQ5NjIpO0U9RS5tb3JwaEF0dHJpYnV0ZXM7Zm9yKFAgaW4gRSl7Rz1FW1BdO0o9MDtmb3IodmFyIFI9Ry5sZW5ndGg7SjxSO0orKyljLnVwZGF0ZShHW0pdLDM0OTYyKX19LGdldFdpcmVmcmFtZUF0dHJpYnV0ZTpmdW5jdGlvbihFKXt2YXIgRz16LmdldChFKTtpZihHKXt2YXIgSj1FLmluZGV4O251bGwhPT1KJiZHLnZlcnNpb248Si52ZXJzaW9uJiZyKEUpfWVsc2UgcihFKTtyZXR1cm4gei5nZXQoRSl9fX1mdW5jdGlvbiB0ZyhhLGMsZSxnKXt2YXIgcix2LHo7dGhpcy5zZXRNb2RlPWZ1bmN0aW9uKEUpe3I9RX07dGhpcy5zZXRJbmRleD0KZnVuY3Rpb24oRSl7dj1FLnR5cGU7ej1FLmJ5dGVzUGVyRWxlbWVudH07dGhpcy5yZW5kZXI9ZnVuY3Rpb24oRSxHKXthLmRyYXdFbGVtZW50cyhyLEcsdixFKnopO2UudXBkYXRlKEcscil9O3RoaXMucmVuZGVySW5zdGFuY2VzPWZ1bmN0aW9uKEUsRyxKKXtpZihnLmlzV2ViR0wyKXt2YXIgUD1hO3ZhciBSPSJkcmF3RWxlbWVudHNJbnN0YW5jZWQifWVsc2UgaWYoUD1jLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpLFI9ImRyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIixudWxsPT09UCl7Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xJbmRleGVkQnVmZmVyUmVuZGVyZXI6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpO3JldHVybn1QW1JdKHIsSix2LEcqeixFLm1heEluc3RhbmNlZENvdW50KTtlLnVwZGF0ZShKLHIsRS5tYXhJbnN0YW5jZWRDb3VudCl9fQpmdW5jdGlvbiBTaygpe3ZhciBhPXtmcmFtZTowLGNhbGxzOjAsdHJpYW5nbGVzOjAscG9pbnRzOjAsbGluZXM6MH07cmV0dXJue21lbW9yeTp7Z2VvbWV0cmllczowLHRleHR1cmVzOjB9LHJlbmRlcjphLHByb2dyYW1zOm51bGwsYXV0b1Jlc2V0OiEwLHJlc2V0OmZ1bmN0aW9uKCl7YS5mcmFtZSsrO2EuY2FsbHM9MDthLnRyaWFuZ2xlcz0wO2EucG9pbnRzPTA7YS5saW5lcz0wfSx1cGRhdGU6ZnVuY3Rpb24oYyxlLGcpe2c9Z3x8MTthLmNhbGxzKys7c3dpdGNoKGUpe2Nhc2UgNDphLnRyaWFuZ2xlcys9Yy8zKmc7YnJlYWs7Y2FzZSA1OmNhc2UgNjphLnRyaWFuZ2xlcys9ZyooYy0yKTticmVhaztjYXNlIDE6YS5saW5lcys9Yy8yKmc7YnJlYWs7Y2FzZSAzOmEubGluZXMrPWcqKGMtMSk7YnJlYWs7Y2FzZSAyOmEubGluZXMrPWcqYzticmVhaztjYXNlIDA6YS5wb2ludHMrPWcqYzticmVhaztkZWZhdWx0OmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMSW5mbzogVW5rbm93biBkcmF3IG1vZGU6IiwKZSl9fX19ZnVuY3Rpb24gVGsoYSxjKXtyZXR1cm4gTWF0aC5hYnMoY1sxXSktTWF0aC5hYnMoYVsxXSl9ZnVuY3Rpb24gVWsoYSl7dmFyIGM9e30sZT1uZXcgRmxvYXQzMkFycmF5KDgpO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24oZyxyLHYseil7dmFyIEU9Zy5tb3JwaFRhcmdldEluZmx1ZW5jZXMsRz1FLmxlbmd0aDtnPWNbci5pZF07aWYodm9pZCAwPT09Zyl7Zz1bXTtmb3IodmFyIEo9MDtKPEc7SisrKWdbSl09W0osMF07Y1tyLmlkXT1nfXZhciBQPXYubW9ycGhUYXJnZXRzJiZyLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbjt2PXYubW9ycGhOb3JtYWxzJiZyLm1vcnBoQXR0cmlidXRlcy5ub3JtYWw7Zm9yKEo9MDtKPEc7SisrKXt2YXIgUj1nW0pdOzAhPT1SWzFdJiYoUCYmci5yZW1vdmVBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitKKSx2JiZyLnJlbW92ZUF0dHJpYnV0ZSgibW9ycGhOb3JtYWwiK0opKX1mb3IoSj0wO0o8RztKKyspUj1nW0pdLFJbMF09SixSWzFdPUVbSl07Zy5zb3J0KFRrKTsKZm9yKEo9MDs4Pko7SisrKXtpZihSPWdbSl0paWYoRT1SWzBdLEc9UlsxXSl7UCYmci5hZGRBdHRyaWJ1dGUoIm1vcnBoVGFyZ2V0IitKLFBbRV0pO3YmJnIuYWRkQXR0cmlidXRlKCJtb3JwaE5vcm1hbCIrSix2W0VdKTtlW0pdPUc7Y29udGludWV9ZVtKXT0wfXouZ2V0VW5pZm9ybXMoKS5zZXRWYWx1ZShhLCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiLGUpfX19ZnVuY3Rpb24gVmsoYSxjKXt2YXIgZT17fTtyZXR1cm57dXBkYXRlOmZ1bmN0aW9uKGcpe3ZhciByPWMucmVuZGVyLmZyYW1lLHY9Zy5nZW9tZXRyeSx6PWEuZ2V0KGcsdik7ZVt6LmlkXSE9PXImJih2LmlzR2VvbWV0cnkmJnoudXBkYXRlRnJvbU9iamVjdChnKSxhLnVwZGF0ZSh6KSxlW3ouaWRdPXIpO3JldHVybiB6fSxkaXNwb3NlOmZ1bmN0aW9uKCl7ZT17fX19fWZ1bmN0aW9uIGNkKGEsYyxlLGcscix2LHosRSxHLEope2E9dm9pZCAwIT09YT9hOltdO2wuY2FsbCh0aGlzLGEsdm9pZCAwIT09Yz9jOjMwMSxlLGcscix2LAp2b2lkIDAhPT16P3o6MTAyMixFLEcsSik7dGhpcy5mbGlwWT0hMX1mdW5jdGlvbiByZShhLGMsZSxnKXtsLmNhbGwodGhpcyxudWxsKTt0aGlzLmltYWdlPXtkYXRhOmEsd2lkdGg6YyxoZWlnaHQ6ZSxkZXB0aDpnfTt0aGlzLm1pbkZpbHRlcj10aGlzLm1hZ0ZpbHRlcj0xMDAzO3RoaXMud3JhcFI9MTAwMTt0aGlzLmZsaXBZPXRoaXMuZ2VuZXJhdGVNaXBtYXBzPSExfWZ1bmN0aW9uIHNlKGEsYyxlLGcpe2wuY2FsbCh0aGlzLG51bGwpO3RoaXMuaW1hZ2U9e2RhdGE6YSx3aWR0aDpjLGhlaWdodDplLGRlcHRoOmd9O3RoaXMubWluRmlsdGVyPXRoaXMubWFnRmlsdGVyPTEwMDM7dGhpcy53cmFwUj0xMDAxO3RoaXMuZmxpcFk9dGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9ZnVuY3Rpb24gdGUoYSxjLGUpe3ZhciBnPWFbMF07aWYoMD49Z3x8MDxnKXJldHVybiBhO3ZhciByPWMqZSx2PWNqW3JdO3ZvaWQgMD09PXYmJih2PW5ldyBGbG9hdDMyQXJyYXkociksY2pbcl09dik7aWYoMCE9PWMpZm9yKGcudG9BcnJheSh2LAowKSxnPTEscj0wO2chPT1jOysrZylyKz1lLGFbZ10udG9BcnJheSh2LHIpO3JldHVybiB2fWZ1bmN0aW9uIHNjKGEsYyl7aWYoYS5sZW5ndGghPT1jLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGU9MCxnPWEubGVuZ3RoO2U8ZztlKyspaWYoYVtlXSE9PWNbZV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gbWMoYSxjKXtmb3IodmFyIGU9MCxnPWMubGVuZ3RoO2U8ZztlKyspYVtlXT1jW2VdfWZ1bmN0aW9uIGRqKGEsYyl7dmFyIGU9ZWpbY107dm9pZCAwPT09ZSYmKGU9bmV3IEludDMyQXJyYXkoYyksZWpbY109ZSk7Zm9yKHZhciBnPTA7ZyE9PWM7KytnKWVbZ109YS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7cmV0dXJuIGV9ZnVuY3Rpb24gV2soYSxjKXt2YXIgZT10aGlzLmNhY2hlO2VbMF0hPT1jJiYoYS51bmlmb3JtMWYodGhpcy5hZGRyLGMpLGVbMF09Yyl9ZnVuY3Rpb24gWGsoYSxjKXt2YXIgZT10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWMueCl7aWYoZVswXSE9PWMueHx8ZVsxXSE9PQpjLnkpYS51bmlmb3JtMmYodGhpcy5hZGRyLGMueCxjLnkpLGVbMF09Yy54LGVbMV09Yy55fWVsc2Ugc2MoZSxjKXx8KGEudW5pZm9ybTJmdih0aGlzLmFkZHIsYyksbWMoZSxjKSl9ZnVuY3Rpb24gWWsoYSxjKXt2YXIgZT10aGlzLmNhY2hlO2lmKHZvaWQgMCE9PWMueCl7aWYoZVswXSE9PWMueHx8ZVsxXSE9PWMueXx8ZVsyXSE9PWMueilhLnVuaWZvcm0zZih0aGlzLmFkZHIsYy54LGMueSxjLnopLGVbMF09Yy54LGVbMV09Yy55LGVbMl09Yy56fWVsc2UgaWYodm9pZCAwIT09Yy5yKXtpZihlWzBdIT09Yy5yfHxlWzFdIT09Yy5nfHxlWzJdIT09Yy5iKWEudW5pZm9ybTNmKHRoaXMuYWRkcixjLnIsYy5nLGMuYiksZVswXT1jLnIsZVsxXT1jLmcsZVsyXT1jLmJ9ZWxzZSBzYyhlLGMpfHwoYS51bmlmb3JtM2Z2KHRoaXMuYWRkcixjKSxtYyhlLGMpKX1mdW5jdGlvbiBaayhhLGMpe3ZhciBlPXRoaXMuY2FjaGU7aWYodm9pZCAwIT09Yy54KXtpZihlWzBdIT09Yy54fHxlWzFdIT09Yy55fHwKZVsyXSE9PWMuenx8ZVszXSE9PWMudylhLnVuaWZvcm00Zih0aGlzLmFkZHIsYy54LGMueSxjLnosYy53KSxlWzBdPWMueCxlWzFdPWMueSxlWzJdPWMueixlWzNdPWMud31lbHNlIHNjKGUsYyl8fChhLnVuaWZvcm00ZnYodGhpcy5hZGRyLGMpLG1jKGUsYykpfWZ1bmN0aW9uICRrKGEsYyl7dmFyIGU9dGhpcy5jYWNoZSxnPWMuZWxlbWVudHM7dm9pZCAwPT09Zz9zYyhlLGMpfHwoYS51bmlmb3JtTWF0cml4MmZ2KHRoaXMuYWRkciwhMSxjKSxtYyhlLGMpKTpzYyhlLGcpfHwoZmouc2V0KGcpLGEudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsZmopLG1jKGUsZykpfWZ1bmN0aW9uIGFsKGEsYyl7dmFyIGU9dGhpcy5jYWNoZSxnPWMuZWxlbWVudHM7dm9pZCAwPT09Zz9zYyhlLGMpfHwoYS51bmlmb3JtTWF0cml4M2Z2KHRoaXMuYWRkciwhMSxjKSxtYyhlLGMpKTpzYyhlLGcpfHwoZ2ouc2V0KGcpLGEudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsZ2opLG1jKGUsZykpfQpmdW5jdGlvbiBibChhLGMpe3ZhciBlPXRoaXMuY2FjaGUsZz1jLmVsZW1lbnRzO3ZvaWQgMD09PWc/c2MoZSxjKXx8KGEudW5pZm9ybU1hdHJpeDRmdih0aGlzLmFkZHIsITEsYyksbWMoZSxjKSk6c2MoZSxnKXx8KGhqLnNldChnKSxhLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLCExLGhqKSxtYyhlLGcpKX1mdW5jdGlvbiBjbChhLGMsZSl7dmFyIGc9dGhpcy5jYWNoZSxyPWUuYWxsb2NhdGVUZXh0dXJlVW5pdCgpO2dbMF0hPT1yJiYoYS51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGdbMF09cik7ZS5zYWZlU2V0VGV4dHVyZTJEKGN8fGlqLHIpfWZ1bmN0aW9uIGRsKGEsYyxlKXt2YXIgZz10aGlzLmNhY2hlLHI9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7Z1swXSE9PXImJihhLnVuaWZvcm0xaSh0aGlzLmFkZHIsciksZ1swXT1yKTtlLnNldFRleHR1cmUyREFycmF5KGN8fGVsLHIpfWZ1bmN0aW9uIGZsKGEsYyxlKXt2YXIgZz10aGlzLmNhY2hlLHI9ZS5hbGxvY2F0ZVRleHR1cmVVbml0KCk7CmdbMF0hPT1yJiYoYS51bmlmb3JtMWkodGhpcy5hZGRyLHIpLGdbMF09cik7ZS5zZXRUZXh0dXJlM0QoY3x8Z2wscil9ZnVuY3Rpb24gaGwoYSxjLGUpe3ZhciBnPXRoaXMuY2FjaGUscj1lLmFsbG9jYXRlVGV4dHVyZVVuaXQoKTtnWzBdIT09ciYmKGEudW5pZm9ybTFpKHRoaXMuYWRkcixyKSxnWzBdPXIpO2Uuc2FmZVNldFRleHR1cmVDdWJlKGN8fGpqLHIpfWZ1bmN0aW9uIGlsKGEsYyl7dmFyIGU9dGhpcy5jYWNoZTtlWzBdIT09YyYmKGEudW5pZm9ybTFpKHRoaXMuYWRkcixjKSxlWzBdPWMpfWZ1bmN0aW9uIGpsKGEsYyl7dmFyIGU9dGhpcy5jYWNoZTtzYyhlLGMpfHwoYS51bmlmb3JtMml2KHRoaXMuYWRkcixjKSxtYyhlLGMpKX1mdW5jdGlvbiBrbChhLGMpe3ZhciBlPXRoaXMuY2FjaGU7c2MoZSxjKXx8KGEudW5pZm9ybTNpdih0aGlzLmFkZHIsYyksbWMoZSxjKSl9ZnVuY3Rpb24gbGwoYSxjKXt2YXIgZT10aGlzLmNhY2hlO3NjKGUsYyl8fChhLnVuaWZvcm00aXYodGhpcy5hZGRyLApjKSxtYyhlLGMpKX1mdW5jdGlvbiBtbChhKXtzd2l0Y2goYSl7Y2FzZSA1MTI2OnJldHVybiBXaztjYXNlIDM1NjY0OnJldHVybiBYaztjYXNlIDM1NjY1OnJldHVybiBZaztjYXNlIDM1NjY2OnJldHVybiBaaztjYXNlIDM1Njc0OnJldHVybiAkaztjYXNlIDM1Njc1OnJldHVybiBhbDtjYXNlIDM1Njc2OnJldHVybiBibDtjYXNlIDM1Njc4OmNhc2UgMzYxOTg6cmV0dXJuIGNsO2Nhc2UgMzU2Nzk6cmV0dXJuIGZsO2Nhc2UgMzU2ODA6cmV0dXJuIGhsO2Nhc2UgMzYyODk6cmV0dXJuIGRsO2Nhc2UgNTEyNDpjYXNlIDM1NjcwOnJldHVybiBpbDtjYXNlIDM1NjY3OmNhc2UgMzU2NzE6cmV0dXJuIGpsO2Nhc2UgMzU2Njg6Y2FzZSAzNTY3MjpyZXR1cm4ga2w7Y2FzZSAzNTY2OTpjYXNlIDM1NjczOnJldHVybiBsbH19ZnVuY3Rpb24gbmwoYSxjKXthLnVuaWZvcm0xZnYodGhpcy5hZGRyLGMpfWZ1bmN0aW9uIG9sKGEsYyl7YS51bmlmb3JtMWl2KHRoaXMuYWRkcixjKX1mdW5jdGlvbiBwbChhLApjKXthLnVuaWZvcm0yaXYodGhpcy5hZGRyLGMpfWZ1bmN0aW9uIHFsKGEsYyl7YS51bmlmb3JtM2l2KHRoaXMuYWRkcixjKX1mdW5jdGlvbiBybChhLGMpe2EudW5pZm9ybTRpdih0aGlzLmFkZHIsYyl9ZnVuY3Rpb24gc2woYSxjKXtjPXRlKGMsdGhpcy5zaXplLDIpO2EudW5pZm9ybTJmdih0aGlzLmFkZHIsYyl9ZnVuY3Rpb24gdGwoYSxjKXtjPXRlKGMsdGhpcy5zaXplLDMpO2EudW5pZm9ybTNmdih0aGlzLmFkZHIsYyl9ZnVuY3Rpb24gdWwoYSxjKXtjPXRlKGMsdGhpcy5zaXplLDQpO2EudW5pZm9ybTRmdih0aGlzLmFkZHIsYyl9ZnVuY3Rpb24gdmwoYSxjKXtjPXRlKGMsdGhpcy5zaXplLDQpO2EudW5pZm9ybU1hdHJpeDJmdih0aGlzLmFkZHIsITEsYyl9ZnVuY3Rpb24gd2woYSxjKXtjPXRlKGMsdGhpcy5zaXplLDkpO2EudW5pZm9ybU1hdHJpeDNmdih0aGlzLmFkZHIsITEsYyl9ZnVuY3Rpb24geGwoYSxjKXtjPXRlKGMsdGhpcy5zaXplLDE2KTthLnVuaWZvcm1NYXRyaXg0ZnYodGhpcy5hZGRyLAohMSxjKX1mdW5jdGlvbiB5bChhLGMsZSl7dmFyIGc9Yy5sZW5ndGgscj1kaihlLGcpO2EudW5pZm9ybTFpdih0aGlzLmFkZHIscik7Zm9yKGE9MDthIT09ZzsrK2EpZS5zYWZlU2V0VGV4dHVyZTJEKGNbYV18fGlqLHJbYV0pfWZ1bmN0aW9uIHpsKGEsYyxlKXt2YXIgZz1jLmxlbmd0aCxyPWRqKGUsZyk7YS51bmlmb3JtMWl2KHRoaXMuYWRkcixyKTtmb3IoYT0wO2EhPT1nOysrYSllLnNhZmVTZXRUZXh0dXJlQ3ViZShjW2FdfHxqaixyW2FdKX1mdW5jdGlvbiBBbChhKXtzd2l0Y2goYSl7Y2FzZSA1MTI2OnJldHVybiBubDtjYXNlIDM1NjY0OnJldHVybiBzbDtjYXNlIDM1NjY1OnJldHVybiB0bDtjYXNlIDM1NjY2OnJldHVybiB1bDtjYXNlIDM1Njc0OnJldHVybiB2bDtjYXNlIDM1Njc1OnJldHVybiB3bDtjYXNlIDM1Njc2OnJldHVybiB4bDtjYXNlIDM1Njc4OnJldHVybiB5bDtjYXNlIDM1NjgwOnJldHVybiB6bDtjYXNlIDUxMjQ6Y2FzZSAzNTY3MDpyZXR1cm4gb2w7Y2FzZSAzNTY2NzpjYXNlIDM1NjcxOnJldHVybiBwbDsKY2FzZSAzNTY2ODpjYXNlIDM1NjcyOnJldHVybiBxbDtjYXNlIDM1NjY5OmNhc2UgMzU2NzM6cmV0dXJuIHJsfX1mdW5jdGlvbiBCbChhLGMsZSl7dGhpcy5pZD1hO3RoaXMuYWRkcj1lO3RoaXMuY2FjaGU9W107dGhpcy5zZXRWYWx1ZT1tbChjLnR5cGUpfWZ1bmN0aW9uIGtqKGEsYyxlKXt0aGlzLmlkPWE7dGhpcy5hZGRyPWU7dGhpcy5jYWNoZT1bXTt0aGlzLnNpemU9Yy5zaXplO3RoaXMuc2V0VmFsdWU9QWwoYy50eXBlKX1mdW5jdGlvbiBsaihhKXt0aGlzLmlkPWE7dGhpcy5zZXE9W107dGhpcy5tYXA9e319ZnVuY3Rpb24gbWooYSxjKXthLnNlcS5wdXNoKGMpO2EubWFwW2MuaWRdPWN9ZnVuY3Rpb24gQ2woYSxjLGUpe3ZhciBnPWEubmFtZSxyPWcubGVuZ3RoO2ZvcihMaC5sYXN0SW5kZXg9MDs7KXt2YXIgdj1MaC5leGVjKGcpLHo9TGgubGFzdEluZGV4LEU9dlsxXSxHPXZbM107Il0iPT09dlsyXSYmKEV8PTApO2lmKHZvaWQgMD09PUd8fCJbIj09PUcmJnorMj09PXIpe21qKGUsCnZvaWQgMD09PUc/bmV3IEJsKEUsYSxjKTpuZXcga2ooRSxhLGMpKTticmVha31lbHNlIHY9ZS5tYXBbRV0sdm9pZCAwPT09diYmKHY9bmV3IGxqKEUpLG1qKGUsdikpLGU9dn19ZnVuY3Rpb24gdWQoYSxjKXt0aGlzLnNlcT1bXTt0aGlzLm1hcD17fTtmb3IodmFyIGU9YS5nZXRQcm9ncmFtUGFyYW1ldGVyKGMsMzU3MTgpLGc9MDtnPGU7KytnKXt2YXIgcj1hLmdldEFjdGl2ZVVuaWZvcm0oYyxnKTtDbChyLGEuZ2V0VW5pZm9ybUxvY2F0aW9uKGMsci5uYW1lKSx0aGlzKX19ZnVuY3Rpb24gbmooYSxjLGUpe2M9YS5jcmVhdGVTaGFkZXIoYyk7YS5zaGFkZXJTb3VyY2UoYyxlKTthLmNvbXBpbGVTaGFkZXIoYyk7cmV0dXJuIGN9ZnVuY3Rpb24gRGwoYSl7YT1hLnNwbGl0KCJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWFbY109YysxKyI6ICIrYVtjXTtyZXR1cm4gYS5qb2luKCJcbiIpfWZ1bmN0aW9uIG9qKGEpe3N3aXRjaChhKXtjYXNlIDNFMzpyZXR1cm5bIkxpbmVhciIsCiIoIHZhbHVlICkiXTtjYXNlIDMwMDE6cmV0dXJuWyJzUkdCIiwiKCB2YWx1ZSApIl07Y2FzZSAzMDAyOnJldHVyblsiUkdCRSIsIiggdmFsdWUgKSJdO2Nhc2UgMzAwNDpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCA3LjAgKSJdO2Nhc2UgMzAwNTpyZXR1cm5bIlJHQk0iLCIoIHZhbHVlLCAxNi4wICkiXTtjYXNlIDMwMDY6cmV0dXJuWyJSR0JEIiwiKCB2YWx1ZSwgMjU2LjAgKSJdO2Nhc2UgMzAwNzpyZXR1cm5bIkdhbW1hIiwiKCB2YWx1ZSwgZmxvYXQoIEdBTU1BX0ZBQ1RPUiApICkiXTtjYXNlIDMwMDM6cmV0dXJuWyJMb2dMdXYiLCIoIHZhbHVlICkiXTtkZWZhdWx0OnRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCBlbmNvZGluZzogIithKTt9fWZ1bmN0aW9uIHBqKGEsYyxlKXt2YXIgZz1hLmdldFNoYWRlclBhcmFtZXRlcihjLDM1NzEzKSxyPWEuZ2V0U2hhZGVySW5mb0xvZyhjKS50cmltKCk7cmV0dXJuIGcmJiIiPT09cj8iIjoiVEhSRUUuV2ViR0xTaGFkZXI6IGdsLmdldFNoYWRlckluZm9Mb2coKSAiKwplKyJcbiIrcitEbChhLmdldFNoYWRlclNvdXJjZShjKSl9ZnVuY3Rpb24gdWcoYSxjKXtjPW9qKGMpO3JldHVybiJ2ZWM0ICIrYSsiKCB2ZWM0IHZhbHVlICkgeyByZXR1cm4gIitjWzBdKyJUb0xpbmVhciIrY1sxXSsiOyB9In1mdW5jdGlvbiBFbChhLGMpe2M9b2ooYyk7cmV0dXJuInZlYzQgIithKyIoIHZlYzQgdmFsdWUgKSB7IHJldHVybiBMaW5lYXJUbyIrY1swXStjWzFdKyI7IH0ifWZ1bmN0aW9uIEZsKGEsYyl7c3dpdGNoKGMpe2Nhc2UgMTpjPSJMaW5lYXIiO2JyZWFrO2Nhc2UgMjpjPSJSZWluaGFyZCI7YnJlYWs7Y2FzZSAzOmM9IlVuY2hhcnRlZDIiO2JyZWFrO2Nhc2UgNDpjPSJPcHRpbWl6ZWRDaW5lb24iO2JyZWFrO2Nhc2UgNTpjPSJBQ0VTRmlsbWljIjticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJ1bnN1cHBvcnRlZCB0b25lTWFwcGluZzogIitjKTt9cmV0dXJuInZlYzMgIithKyIoIHZlYzMgY29sb3IgKSB7IHJldHVybiAiK2MrIlRvbmVNYXBwaW5nKCBjb2xvciApOyB9In0KZnVuY3Rpb24gR2woYSxjLGUpe2E9YXx8e307cmV0dXJuW2EuZGVyaXZhdGl2ZXN8fGMuZW52TWFwQ3ViZVVWfHxjLmJ1bXBNYXB8fGMudGFuZ2VudFNwYWNlTm9ybWFsTWFwfHxjLmNsZWFyY29hdE5vcm1hbE1hcHx8Yy5mbGF0U2hhZGluZz8iI2V4dGVuc2lvbiBHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgOiBlbmFibGUiOiIiLChhLmZyYWdEZXB0aHx8Yy5sb2dhcml0aG1pY0RlcHRoQnVmZmVyKSYmZS5nZXQoIkVYVF9mcmFnX2RlcHRoIik/IiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiBlbmFibGUiOiIiLGEuZHJhd0J1ZmZlcnMmJmUuZ2V0KCJXRUJHTF9kcmF3X2J1ZmZlcnMiKT8iI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZSI6IiIsKGEuc2hhZGVyVGV4dHVyZUxPRHx8Yy5lbnZNYXApJiZlLmdldCgiRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpPyIjZXh0ZW5zaW9uIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QgOiBlbmFibGUiOiIiXS5maWx0ZXIodWYpLmpvaW4oIlxuIil9CmZ1bmN0aW9uIEhsKGEpe3ZhciBjPVtdLGU7Zm9yKGUgaW4gYSl7dmFyIGc9YVtlXTshMSE9PWcmJmMucHVzaCgiI2RlZmluZSAiK2UrIiAiK2cpfXJldHVybiBjLmpvaW4oIlxuIil9ZnVuY3Rpb24gSWwoYSxjKXtmb3IodmFyIGU9e30sZz1hLmdldFByb2dyYW1QYXJhbWV0ZXIoYywzNTcyMSkscj0wO3I8ZztyKyspe3ZhciB2PWEuZ2V0QWN0aXZlQXR0cmliKGMscikubmFtZTtlW3ZdPWEuZ2V0QXR0cmliTG9jYXRpb24oYyx2KX1yZXR1cm4gZX1mdW5jdGlvbiB1ZihhKXtyZXR1cm4iIiE9PWF9ZnVuY3Rpb24gcWooYSxjKXtyZXR1cm4gYS5yZXBsYWNlKC9OVU1fRElSX0xJR0hUUy9nLGMubnVtRGlyTGlnaHRzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVFMvZyxjLm51bVNwb3RMaWdodHMpLnJlcGxhY2UoL05VTV9SRUNUX0FSRUFfTElHSFRTL2csYy5udW1SZWN0QXJlYUxpZ2h0cykucmVwbGFjZSgvTlVNX1BPSU5UX0xJR0hUUy9nLGMubnVtUG9pbnRMaWdodHMpLnJlcGxhY2UoL05VTV9IRU1JX0xJR0hUUy9nLApjLm51bUhlbWlMaWdodHMpLnJlcGxhY2UoL05VTV9ESVJfTElHSFRfU0hBRE9XUy9nLGMubnVtRGlyTGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fU1BPVF9MSUdIVF9TSEFET1dTL2csYy5udW1TcG90TGlnaHRTaGFkb3dzKS5yZXBsYWNlKC9OVU1fUE9JTlRfTElHSFRfU0hBRE9XUy9nLGMubnVtUG9pbnRMaWdodFNoYWRvd3MpfWZ1bmN0aW9uIHJqKGEsYyl7cmV0dXJuIGEucmVwbGFjZSgvTlVNX0NMSVBQSU5HX1BMQU5FUy9nLGMubnVtQ2xpcHBpbmdQbGFuZXMpLnJlcGxhY2UoL1VOSU9OX0NMSVBQSU5HX1BMQU5FUy9nLGMubnVtQ2xpcHBpbmdQbGFuZXMtYy5udW1DbGlwSW50ZXJzZWN0aW9uKX1mdW5jdGlvbiBNaChhKXtyZXR1cm4gYS5yZXBsYWNlKC9eWyBcdF0qI2luY2x1ZGUgKzwoW1x3XGQuL10rKT4vZ20sZnVuY3Rpb24oYyxlKXtjPXJiW2VdO2lmKHZvaWQgMD09PWMpdGhyb3cgRXJyb3IoIkNhbiBub3QgcmVzb2x2ZSAjaW5jbHVkZSBceDNjIitlKyJceDNlIik7cmV0dXJuIE1oKGMpfSl9CmZ1bmN0aW9uIHNqKGEpe3JldHVybiBhLnJlcGxhY2UoLyNwcmFnbWEgdW5yb2xsX2xvb3BbXHNdKz9mb3IgXCggaW50IGkgPSAoXGQrKTsgaSA8IChcZCspOyBpIFwrXCsgXCkgXHsoW1xzXFNdKz8pKD89XH0pXH0vZyxmdW5jdGlvbihjLGUsZyxyKXtjPSIiO2ZvcihlPXBhcnNlSW50KGUpO2U8cGFyc2VJbnQoZyk7ZSsrKWMrPXIucmVwbGFjZSgvXFsgaSBcXS9nLCJbICIrZSsiIF0iKS5yZXBsYWNlKC9VTlJPTExFRF9MT09QX0lOREVYL2csZSk7cmV0dXJuIGN9KX1mdW5jdGlvbiBKbChhLGMsZSxnLHIsdix6KXt2YXIgRT1hLmdldENvbnRleHQoKSxHPWcuZGVmaW5lcyxKPXIudmVydGV4U2hhZGVyLFA9ci5mcmFnbWVudFNoYWRlcixSPSJTSEFET1dNQVBfVFlQRV9CQVNJQyI7MT09PXYuc2hhZG93TWFwVHlwZT9SPSJTSEFET1dNQVBfVFlQRV9QQ0YiOjI9PT12LnNoYWRvd01hcFR5cGU/Uj0iU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQiOjM9PT12LnNoYWRvd01hcFR5cGUmJihSPQoiU0hBRE9XTUFQX1RZUEVfVlNNIik7dmFyIFM9IkVOVk1BUF9UWVBFX0NVQkUiLFY9IkVOVk1BUF9NT0RFX1JFRkxFQ1RJT04iLFc9IkVOVk1BUF9CTEVORElOR19NVUxUSVBMWSI7aWYodi5lbnZNYXApe3N3aXRjaChnLmVudk1hcC5tYXBwaW5nKXtjYXNlIDMwMTpjYXNlIDMwMjpTPSJFTlZNQVBfVFlQRV9DVUJFIjticmVhaztjYXNlIDMwNjpjYXNlIDMwNzpTPSJFTlZNQVBfVFlQRV9DVUJFX1VWIjticmVhaztjYXNlIDMwMzpjYXNlIDMwNDpTPSJFTlZNQVBfVFlQRV9FUVVJUkVDIjticmVhaztjYXNlIDMwNTpTPSJFTlZNQVBfVFlQRV9TUEhFUkUifXN3aXRjaChnLmVudk1hcC5tYXBwaW5nKXtjYXNlIDMwMjpjYXNlIDMwNDpWPSJFTlZNQVBfTU9ERV9SRUZSQUNUSU9OIn1zd2l0Y2goZy5jb21iaW5lKXtjYXNlIDA6Vz0iRU5WTUFQX0JMRU5ESU5HX01VTFRJUExZIjticmVhaztjYXNlIDE6Vz0iRU5WTUFQX0JMRU5ESU5HX01JWCI7YnJlYWs7Y2FzZSAyOlc9IkVOVk1BUF9CTEVORElOR19BREQifX12YXIgaGE9CjA8YS5nYW1tYUZhY3Rvcj9hLmdhbW1hRmFjdG9yOjEsZmE9ei5pc1dlYkdMMj8iIjpHbChnLmV4dGVuc2lvbnMsdixjKSxyYT1IbChHKSxwYT1FLmNyZWF0ZVByb2dyYW0oKTtnLmlzUmF3U2hhZGVyTWF0ZXJpYWw/KEc9W3JhXS5maWx0ZXIodWYpLmpvaW4oIlxuIiksMDxHLmxlbmd0aCYmKEcrPSJcbiIpLGM9W2ZhLHJhXS5maWx0ZXIodWYpLmpvaW4oIlxuIiksMDxjLmxlbmd0aCYmKGMrPSJcbiIpKTooRz1bInByZWNpc2lvbiAiK3YucHJlY2lzaW9uKyIgZmxvYXQ7IiwicHJlY2lzaW9uICIrdi5wcmVjaXNpb24rIiBpbnQ7IiwiaGlnaHAiPT09di5wcmVjaXNpb24/IiNkZWZpbmUgSElHSF9QUkVDSVNJT04iOiIiLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrci5uYW1lLHJhLHYuc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcz8iI2RlZmluZSBWRVJURVhfVEVYVFVSRVMiOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2hhLCIjZGVmaW5lIE1BWF9CT05FUyAiK3YubWF4Qm9uZXMsdi51c2VGb2cmJgp2LmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIix2LnVzZUZvZyYmdi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIix2Lm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIix2LmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIix2LmVudk1hcD8iI2RlZmluZSAiK1Y6IiIsdi5saWdodE1hcD8iI2RlZmluZSBVU0VfTElHSFRNQVAiOiIiLHYuYW9NYXA/IiNkZWZpbmUgVVNFX0FPTUFQIjoiIix2LmVtaXNzaXZlTWFwPyIjZGVmaW5lIFVTRV9FTUlTU0lWRU1BUCI6IiIsdi5idW1wTWFwPyIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIix2Lm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIix2Lm5vcm1hbE1hcCYmdi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLHYubm9ybWFsTWFwJiZ2LnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIix2LmNsZWFyY29hdE5vcm1hbE1hcD8KIiNkZWZpbmUgVVNFX0NMRUFSQ09BVF9OT1JNQUxNQVAiOiIiLHYuZGlzcGxhY2VtZW50TWFwJiZ2LnN1cHBvcnRzVmVydGV4VGV4dHVyZXM/IiNkZWZpbmUgVVNFX0RJU1BMQUNFTUVOVE1BUCI6IiIsdi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLHYucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLHYubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLHYuYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIix2LnZlcnRleFRhbmdlbnRzPyIjZGVmaW5lIFVTRV9UQU5HRU5UIjoiIix2LnZlcnRleENvbG9ycz8iI2RlZmluZSBVU0VfQ09MT1IiOiIiLHYudmVydGV4VXZzPyIjZGVmaW5lIFVTRV9VViI6IiIsdi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsdi5za2lubmluZz8iI2RlZmluZSBVU0VfU0tJTk5JTkciOiIiLHYudXNlVmVydGV4VGV4dHVyZT8iI2RlZmluZSBCT05FX1RFWFRVUkUiOgoiIix2Lm1vcnBoVGFyZ2V0cz8iI2RlZmluZSBVU0VfTU9SUEhUQVJHRVRTIjoiIix2Lm1vcnBoTm9ybWFscyYmITE9PT12LmZsYXRTaGFkaW5nPyIjZGVmaW5lIFVTRV9NT1JQSE5PUk1BTFMiOiIiLHYuZG91YmxlU2lkZWQ/IiNkZWZpbmUgRE9VQkxFX1NJREVEIjoiIix2LmZsaXBTaWRlZD8iI2RlZmluZSBGTElQX1NJREVEIjoiIix2LnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgVVNFX1NIQURPV01BUCI6IiIsdi5zaGFkb3dNYXBFbmFibGVkPyIjZGVmaW5lICIrUjoiIix2LnNpemVBdHRlbnVhdGlvbj8iI2RlZmluZSBVU0VfU0laRUFUVEVOVUFUSU9OIjoiIix2LmxvZ2FyaXRobWljRGVwdGhCdWZmZXI/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGIjoiIix2LmxvZ2FyaXRobWljRGVwdGhCdWZmZXImJih6LmlzV2ViR0wyfHxjLmdldCgiRVhUX2ZyYWdfZGVwdGgiKSk/IiNkZWZpbmUgVVNFX0xPR0RFUFRIQlVGX0VYVCI6IiIsInVuaWZvcm0gbWF0NCBtb2RlbE1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgbW9kZWxWaWV3TWF0cml4OyIsCiJ1bmlmb3JtIG1hdDQgcHJvamVjdGlvbk1hdHJpeDsiLCJ1bmlmb3JtIG1hdDQgdmlld01hdHJpeDsiLCJ1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4OyIsInVuaWZvcm0gdmVjMyBjYW1lcmFQb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBwb3NpdGlvbjsiLCJhdHRyaWJ1dGUgdmVjMyBub3JtYWw7IiwiYXR0cmlidXRlIHZlYzIgdXY7IiwiI2lmZGVmIFVTRV9UQU5HRU5UIiwiXHRhdHRyaWJ1dGUgdmVjNCB0YW5nZW50OyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfQ09MT1IiLCJcdGF0dHJpYnV0ZSB2ZWMzIGNvbG9yOyIsIiNlbmRpZiIsIiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTIiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDA7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDE7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDI7IiwiXHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDM7IiwiXHQjaWZkZWYgVVNFX01PUlBITk9STUFMUyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDA7IiwKIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaE5vcm1hbDE7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoTm9ybWFsMjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhOb3JtYWwzOyIsIlx0I2Vsc2UiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ0OyIsIlx0XHRhdHRyaWJ1dGUgdmVjMyBtb3JwaFRhcmdldDU7IiwiXHRcdGF0dHJpYnV0ZSB2ZWMzIG1vcnBoVGFyZ2V0NjsiLCJcdFx0YXR0cmlidXRlIHZlYzMgbW9ycGhUYXJnZXQ3OyIsIlx0I2VuZGlmIiwiI2VuZGlmIiwiI2lmZGVmIFVTRV9TS0lOTklORyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbkluZGV4OyIsIlx0YXR0cmlidXRlIHZlYzQgc2tpbldlaWdodDsiLCIjZW5kaWYiLCJcbiJdLmZpbHRlcih1Zikuam9pbigiXG4iKSxjPVtmYSwicHJlY2lzaW9uICIrdi5wcmVjaXNpb24rIiBmbG9hdDsiLCJwcmVjaXNpb24gIit2LnByZWNpc2lvbisiIGludDsiLCJoaWdocCI9PT12LnByZWNpc2lvbj8iI2RlZmluZSBISUdIX1BSRUNJU0lPTiI6CiIiLCIjZGVmaW5lIFNIQURFUl9OQU1FICIrci5uYW1lLHJhLHYuYWxwaGFUZXN0PyIjZGVmaW5lIEFMUEhBVEVTVCAiK3YuYWxwaGFUZXN0Kyh2LmFscGhhVGVzdCUxPyIiOiIuMCIpOiIiLCIjZGVmaW5lIEdBTU1BX0ZBQ1RPUiAiK2hhLHYudXNlRm9nJiZ2LmZvZz8iI2RlZmluZSBVU0VfRk9HIjoiIix2LnVzZUZvZyYmdi5mb2dFeHAyPyIjZGVmaW5lIEZPR19FWFAyIjoiIix2Lm1hcD8iI2RlZmluZSBVU0VfTUFQIjoiIix2Lm1hdGNhcD8iI2RlZmluZSBVU0VfTUFUQ0FQIjoiIix2LmVudk1hcD8iI2RlZmluZSBVU0VfRU5WTUFQIjoiIix2LmVudk1hcD8iI2RlZmluZSAiK1M6IiIsdi5lbnZNYXA/IiNkZWZpbmUgIitWOiIiLHYuZW52TWFwPyIjZGVmaW5lICIrVzoiIix2LmxpZ2h0TWFwPyIjZGVmaW5lIFVTRV9MSUdIVE1BUCI6IiIsdi5hb01hcD8iI2RlZmluZSBVU0VfQU9NQVAiOiIiLHYuZW1pc3NpdmVNYXA/IiNkZWZpbmUgVVNFX0VNSVNTSVZFTUFQIjoiIix2LmJ1bXBNYXA/CiIjZGVmaW5lIFVTRV9CVU1QTUFQIjoiIix2Lm5vcm1hbE1hcD8iI2RlZmluZSBVU0VfTk9STUFMTUFQIjoiIix2Lm5vcm1hbE1hcCYmdi5vYmplY3RTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBPQkpFQ1RTUEFDRV9OT1JNQUxNQVAiOiIiLHYubm9ybWFsTWFwJiZ2LnRhbmdlbnRTcGFjZU5vcm1hbE1hcD8iI2RlZmluZSBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIjoiIix2LmNsZWFyY29hdE5vcm1hbE1hcD8iI2RlZmluZSBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUCI6IiIsdi5zcGVjdWxhck1hcD8iI2RlZmluZSBVU0VfU1BFQ1VMQVJNQVAiOiIiLHYucm91Z2huZXNzTWFwPyIjZGVmaW5lIFVTRV9ST1VHSE5FU1NNQVAiOiIiLHYubWV0YWxuZXNzTWFwPyIjZGVmaW5lIFVTRV9NRVRBTE5FU1NNQVAiOiIiLHYuYWxwaGFNYXA/IiNkZWZpbmUgVVNFX0FMUEhBTUFQIjoiIix2LnNoZWVuPyIjZGVmaW5lIFVTRV9TSEVFTiI6IiIsdi52ZXJ0ZXhUYW5nZW50cz8iI2RlZmluZSBVU0VfVEFOR0VOVCI6CiIiLHYudmVydGV4Q29sb3JzPyIjZGVmaW5lIFVTRV9DT0xPUiI6IiIsdi52ZXJ0ZXhVdnM/IiNkZWZpbmUgVVNFX1VWIjoiIix2LmdyYWRpZW50TWFwPyIjZGVmaW5lIFVTRV9HUkFESUVOVE1BUCI6IiIsdi5mbGF0U2hhZGluZz8iI2RlZmluZSBGTEFUX1NIQURFRCI6IiIsdi5kb3VibGVTaWRlZD8iI2RlZmluZSBET1VCTEVfU0lERUQiOiIiLHYuZmxpcFNpZGVkPyIjZGVmaW5lIEZMSVBfU0lERUQiOiIiLHYuc2hhZG93TWFwRW5hYmxlZD8iI2RlZmluZSBVU0VfU0hBRE9XTUFQIjoiIix2LnNoYWRvd01hcEVuYWJsZWQ/IiNkZWZpbmUgIitSOiIiLHYucHJlbXVsdGlwbGllZEFscGhhPyIjZGVmaW5lIFBSRU1VTFRJUExJRURfQUxQSEEiOiIiLHYucGh5c2ljYWxseUNvcnJlY3RMaWdodHM/IiNkZWZpbmUgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUUyI6IiIsdi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyPyIjZGVmaW5lIFVTRV9MT0dERVBUSEJVRiI6IiIsdi5sb2dhcml0aG1pY0RlcHRoQnVmZmVyJiYKKHouaXNXZWJHTDJ8fGMuZ2V0KCJFWFRfZnJhZ19kZXB0aCIpKT8iI2RlZmluZSBVU0VfTE9HREVQVEhCVUZfRVhUIjoiIiwoZy5leHRlbnNpb25zJiZnLmV4dGVuc2lvbnMuc2hhZGVyVGV4dHVyZUxPRHx8di5lbnZNYXApJiYoei5pc1dlYkdMMnx8Yy5nZXQoIkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKSk/IiNkZWZpbmUgVEVYVFVSRV9MT0RfRVhUIjoiIiwidW5pZm9ybSBtYXQ0IHZpZXdNYXRyaXg7IiwidW5pZm9ybSB2ZWMzIGNhbWVyYVBvc2l0aW9uOyIsMCE9PXYudG9uZU1hcHBpbmc/IiNkZWZpbmUgVE9ORV9NQVBQSU5HIjoiIiwwIT09di50b25lTWFwcGluZz9yYi50b25lbWFwcGluZ19wYXJzX2ZyYWdtZW50OiIiLDAhPT12LnRvbmVNYXBwaW5nP0ZsKCJ0b25lTWFwcGluZyIsdi50b25lTWFwcGluZyk6IiIsdi5kaXRoZXJpbmc/IiNkZWZpbmUgRElUSEVSSU5HIjoiIix2Lm91dHB1dEVuY29kaW5nfHx2Lm1hcEVuY29kaW5nfHx2Lm1hdGNhcEVuY29kaW5nfHx2LmVudk1hcEVuY29kaW5nfHwKdi5lbWlzc2l2ZU1hcEVuY29kaW5nP3JiLmVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiIiLHYubWFwRW5jb2Rpbmc/dWcoIm1hcFRleGVsVG9MaW5lYXIiLHYubWFwRW5jb2RpbmcpOiIiLHYubWF0Y2FwRW5jb2Rpbmc/dWcoIm1hdGNhcFRleGVsVG9MaW5lYXIiLHYubWF0Y2FwRW5jb2RpbmcpOiIiLHYuZW52TWFwRW5jb2Rpbmc/dWcoImVudk1hcFRleGVsVG9MaW5lYXIiLHYuZW52TWFwRW5jb2RpbmcpOiIiLHYuZW1pc3NpdmVNYXBFbmNvZGluZz91ZygiZW1pc3NpdmVNYXBUZXhlbFRvTGluZWFyIix2LmVtaXNzaXZlTWFwRW5jb2RpbmcpOiIiLHYub3V0cHV0RW5jb2Rpbmc/RWwoImxpbmVhclRvT3V0cHV0VGV4ZWwiLHYub3V0cHV0RW5jb2RpbmcpOiIiLHYuZGVwdGhQYWNraW5nPyIjZGVmaW5lIERFUFRIX1BBQ0tJTkcgIitnLmRlcHRoUGFja2luZzoiIiwiXG4iXS5maWx0ZXIodWYpLmpvaW4oIlxuIikpO0o9TWgoSik7Sj1xaihKLHYpO0o9cmooSix2KTtQPU1oKFApO1A9cWooUCwKdik7UD1yaihQLHYpO0o9c2ooSik7UD1zaihQKTt6LmlzV2ViR0wyJiYhZy5pc1Jhd1NoYWRlck1hdGVyaWFsJiYoej0hMSxSPS9eXHMqI3ZlcnNpb25ccyszMDBccytlc1xzKlxuLyxnLmlzU2hhZGVyTWF0ZXJpYWwmJm51bGwhPT1KLm1hdGNoKFIpJiZudWxsIT09UC5tYXRjaChSKSYmKHo9ITAsSj1KLnJlcGxhY2UoUiwiIiksUD1QLnJlcGxhY2UoUiwiIikpLEc9IiN2ZXJzaW9uIDMwMCBlc1xuXG4jZGVmaW5lIGF0dHJpYnV0ZSBpblxuI2RlZmluZSB2YXJ5aW5nIG91dFxuI2RlZmluZSB0ZXh0dXJlMkQgdGV4dHVyZVxuIitHLGM9WyIjdmVyc2lvbiAzMDAgZXNcblxuI2RlZmluZSB2YXJ5aW5nIGluIix6PyIiOiJvdXQgaGlnaHAgdmVjNCBwY19mcmFnQ29sb3I7Iix6PyIiOiIjZGVmaW5lIGdsX0ZyYWdDb2xvciBwY19mcmFnQ29sb3IiLCIjZGVmaW5lIGdsX0ZyYWdEZXB0aEVYVCBnbF9GcmFnRGVwdGhcbiNkZWZpbmUgdGV4dHVyZTJEIHRleHR1cmVcbiNkZWZpbmUgdGV4dHVyZUN1YmUgdGV4dHVyZVxuI2RlZmluZSB0ZXh0dXJlMkRQcm9qIHRleHR1cmVQcm9qXG4jZGVmaW5lIHRleHR1cmUyRExvZEVYVCB0ZXh0dXJlTG9kXG4jZGVmaW5lIHRleHR1cmUyRFByb2pMb2RFWFQgdGV4dHVyZVByb2pMb2RcbiNkZWZpbmUgdGV4dHVyZUN1YmVMb2RFWFQgdGV4dHVyZUxvZFxuI2RlZmluZSB0ZXh0dXJlMkRHcmFkRVhUIHRleHR1cmVHcmFkXG4jZGVmaW5lIHRleHR1cmUyRFByb2pHcmFkRVhUIHRleHR1cmVQcm9qR3JhZFxuI2RlZmluZSB0ZXh0dXJlQ3ViZUdyYWRFWFQgdGV4dHVyZUdyYWQiXS5qb2luKCJcbiIpKwoiXG4iK2MpO1A9YytQO0o9bmooRSwzNTYzMyxHK0opO1A9bmooRSwzNTYzMixQKTtFLmF0dGFjaFNoYWRlcihwYSxKKTtFLmF0dGFjaFNoYWRlcihwYSxQKTt2b2lkIDAhPT1nLmluZGV4MEF0dHJpYnV0ZU5hbWU/RS5iaW5kQXR0cmliTG9jYXRpb24ocGEsMCxnLmluZGV4MEF0dHJpYnV0ZU5hbWUpOiEwPT09di5tb3JwaFRhcmdldHMmJkUuYmluZEF0dHJpYkxvY2F0aW9uKHBhLDAsInBvc2l0aW9uIik7RS5saW5rUHJvZ3JhbShwYSk7aWYoYS5kZWJ1Zy5jaGVja1NoYWRlckVycm9ycyl7YT1FLmdldFByb2dyYW1JbmZvTG9nKHBhKS50cmltKCk7dj1FLmdldFNoYWRlckluZm9Mb2coSikudHJpbSgpO3o9RS5nZXRTaGFkZXJJbmZvTG9nKFApLnRyaW0oKTtTPVI9ITA7aWYoITE9PT1FLmdldFByb2dyYW1QYXJhbWV0ZXIocGEsMzU3MTQpKVI9ITEsVj1waihFLEosInZlcnRleCIpLFc9cGooRSxQLCJmcmFnbWVudCIpLGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUHJvZ3JhbTogc2hhZGVyIGVycm9yOiAiLApFLmdldEVycm9yKCksIjM1NzE1IixFLmdldFByb2dyYW1QYXJhbWV0ZXIocGEsMzU3MTUpLCJnbC5nZXRQcm9ncmFtSW5mb0xvZyIsYSxWLFcpO2Vsc2UgaWYoIiIhPT1hKWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtOiBnbC5nZXRQcm9ncmFtSW5mb0xvZygpIixhKTtlbHNlIGlmKCIiPT09dnx8IiI9PT16KVM9ITE7UyYmKHRoaXMuZGlhZ25vc3RpY3M9e3J1bm5hYmxlOlIsbWF0ZXJpYWw6Zyxwcm9ncmFtTG9nOmEsdmVydGV4U2hhZGVyOntsb2c6dixwcmVmaXg6R30sZnJhZ21lbnRTaGFkZXI6e2xvZzp6LHByZWZpeDpjfX0pfUUuZGVsZXRlU2hhZGVyKEopO0UuZGVsZXRlU2hhZGVyKFApO3ZhciBxYTt0aGlzLmdldFVuaWZvcm1zPWZ1bmN0aW9uKCl7dm9pZCAwPT09cWEmJihxYT1uZXcgdWQoRSxwYSkpO3JldHVybiBxYX07dmFyIHVhO3RoaXMuZ2V0QXR0cmlidXRlcz1mdW5jdGlvbigpe3ZvaWQgMD09PXVhJiYodWE9SWwoRSxwYSkpO3JldHVybiB1YX07dGhpcy5kZXN0cm95PQpmdW5jdGlvbigpe0UuZGVsZXRlUHJvZ3JhbShwYSk7dGhpcy5wcm9ncmFtPXZvaWQgMH07dGhpcy5uYW1lPXIubmFtZTt0aGlzLmlkPUtsKys7dGhpcy5jb2RlPWU7dGhpcy51c2VkVGltZXM9MTt0aGlzLnByb2dyYW09cGE7dGhpcy52ZXJ0ZXhTaGFkZXI9Sjt0aGlzLmZyYWdtZW50U2hhZGVyPVA7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gTGwoYSxjLGUpe2Z1bmN0aW9uIGcoRyl7Rz1HLnNrZWxldG9uLmJvbmVzO2lmKGUuZmxvYXRWZXJ0ZXhUZXh0dXJlcylyZXR1cm4gMTAyNDt2YXIgSj1NYXRoLm1pbihNYXRoLmZsb29yKChlLm1heFZlcnRleFVuaWZvcm1zLTIwKS80KSxHLmxlbmd0aCk7cmV0dXJuIEo8Ry5sZW5ndGg/KGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogU2tlbGV0b24gaGFzICIrRy5sZW5ndGgrIiBib25lcy4gVGhpcyBHUFUgc3VwcG9ydHMgIitKKyIuIiksMCk6Sn1mdW5jdGlvbiByKEcsSil7aWYoRylHLmlzVGV4dHVyZT9QPUcuZW5jb2Rpbmc6Ry5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYKKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xQcm9ncmFtcy5nZXRUZXh0dXJlRW5jb2RpbmdGcm9tTWFwOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLFA9Ry50ZXh0dXJlLmVuY29kaW5nKTtlbHNlIHZhciBQPTNFMzszRTM9PT1QJiZKJiYoUD0zMDA3KTtyZXR1cm4gUH12YXIgdj1bXSx6PXtNZXNoRGVwdGhNYXRlcmlhbDoiZGVwdGgiLE1lc2hEaXN0YW5jZU1hdGVyaWFsOiJkaXN0YW5jZVJHQkEiLE1lc2hOb3JtYWxNYXRlcmlhbDoibm9ybWFsIixNZXNoQmFzaWNNYXRlcmlhbDoiYmFzaWMiLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6ImxhbWJlcnQiLE1lc2hQaG9uZ01hdGVyaWFsOiJwaG9uZyIsTWVzaFRvb25NYXRlcmlhbDoicGhvbmciLE1lc2hTdGFuZGFyZE1hdGVyaWFsOiJwaHlzaWNhbCIsTWVzaFBoeXNpY2FsTWF0ZXJpYWw6InBoeXNpY2FsIixNZXNoTWF0Y2FwTWF0ZXJpYWw6Im1hdGNhcCIsCkxpbmVCYXNpY01hdGVyaWFsOiJiYXNpYyIsTGluZURhc2hlZE1hdGVyaWFsOiJkYXNoZWQiLFBvaW50c01hdGVyaWFsOiJwb2ludHMiLFNoYWRvd01hdGVyaWFsOiJzaGFkb3ciLFNwcml0ZU1hdGVyaWFsOiJzcHJpdGUifSxFPSJwcmVjaXNpb24gc3VwcG9ydHNWZXJ0ZXhUZXh0dXJlcyBtYXAgbWFwRW5jb2RpbmcgbWF0Y2FwIG1hdGNhcEVuY29kaW5nIGVudk1hcCBlbnZNYXBNb2RlIGVudk1hcEVuY29kaW5nIGxpZ2h0TWFwIGFvTWFwIGVtaXNzaXZlTWFwIGVtaXNzaXZlTWFwRW5jb2RpbmcgYnVtcE1hcCBub3JtYWxNYXAgb2JqZWN0U3BhY2VOb3JtYWxNYXAgdGFuZ2VudFNwYWNlTm9ybWFsTWFwIGNsZWFyY29hdE5vcm1hbE1hcCBkaXNwbGFjZW1lbnRNYXAgc3BlY3VsYXJNYXAgcm91Z2huZXNzTWFwIG1ldGFsbmVzc01hcCBncmFkaWVudE1hcCBhbHBoYU1hcCBjb21iaW5lIHZlcnRleENvbG9ycyB2ZXJ0ZXhUYW5nZW50cyBmb2cgdXNlRm9nIGZvZ0V4cDIgZmxhdFNoYWRpbmcgc2l6ZUF0dGVudWF0aW9uIGxvZ2FyaXRobWljRGVwdGhCdWZmZXIgc2tpbm5pbmcgbWF4Qm9uZXMgdXNlVmVydGV4VGV4dHVyZSBtb3JwaFRhcmdldHMgbW9ycGhOb3JtYWxzIG1heE1vcnBoVGFyZ2V0cyBtYXhNb3JwaE5vcm1hbHMgcHJlbXVsdGlwbGllZEFscGhhIG51bURpckxpZ2h0cyBudW1Qb2ludExpZ2h0cyBudW1TcG90TGlnaHRzIG51bUhlbWlMaWdodHMgbnVtUmVjdEFyZWFMaWdodHMgc2hhZG93TWFwRW5hYmxlZCBzaGFkb3dNYXBUeXBlIHRvbmVNYXBwaW5nIHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzIGFscGhhVGVzdCBkb3VibGVTaWRlZCBmbGlwU2lkZWQgbnVtQ2xpcHBpbmdQbGFuZXMgbnVtQ2xpcEludGVyc2VjdGlvbiBkZXB0aFBhY2tpbmcgZGl0aGVyaW5nIHNoZWVuIi5zcGxpdCgiICIpOwp0aGlzLmdldFBhcmFtZXRlcnM9ZnVuY3Rpb24oRyxKLFAsUixTLFYsVyl7dmFyIGhhPXpbRy50eXBlXSxmYT1XLmlzU2tpbm5lZE1lc2g/ZyhXKTowLHJhPWUucHJlY2lzaW9uO251bGwhPT1HLnByZWNpc2lvbiYmKHJhPWUuZ2V0TWF4UHJlY2lzaW9uKEcucHJlY2lzaW9uKSxyYSE9PUcucHJlY2lzaW9uJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUHJvZ3JhbS5nZXRQYXJhbWV0ZXJzOiIsRy5wcmVjaXNpb24sIm5vdCBzdXBwb3J0ZWQsIHVzaW5nIixyYSwiaW5zdGVhZC4iKSk7dmFyIHBhPWEuZ2V0UmVuZGVyVGFyZ2V0KCk7cmV0dXJue3NoYWRlcklEOmhhLHByZWNpc2lvbjpyYSxzdXBwb3J0c1ZlcnRleFRleHR1cmVzOmUudmVydGV4VGV4dHVyZXMsb3V0cHV0RW5jb2Rpbmc6cihwYT9wYS50ZXh0dXJlOm51bGwsYS5nYW1tYU91dHB1dCksbWFwOiEhRy5tYXAsbWFwRW5jb2Rpbmc6cihHLm1hcCxhLmdhbW1hSW5wdXQpLG1hdGNhcDohIUcubWF0Y2FwLG1hdGNhcEVuY29kaW5nOnIoRy5tYXRjYXAsCmEuZ2FtbWFJbnB1dCksZW52TWFwOiEhRy5lbnZNYXAsZW52TWFwTW9kZTpHLmVudk1hcCYmRy5lbnZNYXAubWFwcGluZyxlbnZNYXBFbmNvZGluZzpyKEcuZW52TWFwLGEuZ2FtbWFJbnB1dCksZW52TWFwQ3ViZVVWOiEhRy5lbnZNYXAmJigzMDY9PT1HLmVudk1hcC5tYXBwaW5nfHwzMDc9PT1HLmVudk1hcC5tYXBwaW5nKSxsaWdodE1hcDohIUcubGlnaHRNYXAsYW9NYXA6ISFHLmFvTWFwLGVtaXNzaXZlTWFwOiEhRy5lbWlzc2l2ZU1hcCxlbWlzc2l2ZU1hcEVuY29kaW5nOnIoRy5lbWlzc2l2ZU1hcCxhLmdhbW1hSW5wdXQpLGJ1bXBNYXA6ISFHLmJ1bXBNYXAsbm9ybWFsTWFwOiEhRy5ub3JtYWxNYXAsb2JqZWN0U3BhY2VOb3JtYWxNYXA6MT09PUcubm9ybWFsTWFwVHlwZSx0YW5nZW50U3BhY2VOb3JtYWxNYXA6MD09PUcubm9ybWFsTWFwVHlwZSxjbGVhcmNvYXROb3JtYWxNYXA6ISFHLmNsZWFyY29hdE5vcm1hbE1hcCxkaXNwbGFjZW1lbnRNYXA6ISFHLmRpc3BsYWNlbWVudE1hcCwKcm91Z2huZXNzTWFwOiEhRy5yb3VnaG5lc3NNYXAsbWV0YWxuZXNzTWFwOiEhRy5tZXRhbG5lc3NNYXAsc3BlY3VsYXJNYXA6ISFHLnNwZWN1bGFyTWFwLGFscGhhTWFwOiEhRy5hbHBoYU1hcCxncmFkaWVudE1hcDohIUcuZ3JhZGllbnRNYXAsc2hlZW46ISFHLnNoZWVuLGNvbWJpbmU6Ry5jb21iaW5lLHZlcnRleFRhbmdlbnRzOkcubm9ybWFsTWFwJiZHLnZlcnRleFRhbmdlbnRzLHZlcnRleENvbG9yczpHLnZlcnRleENvbG9ycyx2ZXJ0ZXhVdnM6ISFHLm1hcHx8ISFHLmJ1bXBNYXB8fCEhRy5ub3JtYWxNYXB8fCEhRy5zcGVjdWxhck1hcHx8ISFHLmFscGhhTWFwfHwhIUcuZW1pc3NpdmVNYXB8fCEhRy5yb3VnaG5lc3NNYXB8fCEhRy5tZXRhbG5lc3NNYXB8fCEhRy5jbGVhcmNvYXROb3JtYWxNYXAsZm9nOiEhUix1c2VGb2c6Ry5mb2csZm9nRXhwMjpSJiZSLmlzRm9nRXhwMixmbGF0U2hhZGluZzpHLmZsYXRTaGFkaW5nLHNpemVBdHRlbnVhdGlvbjpHLnNpemVBdHRlbnVhdGlvbiwKbG9nYXJpdGhtaWNEZXB0aEJ1ZmZlcjplLmxvZ2FyaXRobWljRGVwdGhCdWZmZXIsc2tpbm5pbmc6Ry5za2lubmluZyYmMDxmYSxtYXhCb25lczpmYSx1c2VWZXJ0ZXhUZXh0dXJlOmUuZmxvYXRWZXJ0ZXhUZXh0dXJlcyxtb3JwaFRhcmdldHM6Ry5tb3JwaFRhcmdldHMsbW9ycGhOb3JtYWxzOkcubW9ycGhOb3JtYWxzLG1heE1vcnBoVGFyZ2V0czphLm1heE1vcnBoVGFyZ2V0cyxtYXhNb3JwaE5vcm1hbHM6YS5tYXhNb3JwaE5vcm1hbHMsbnVtRGlyTGlnaHRzOkouZGlyZWN0aW9uYWwubGVuZ3RoLG51bVBvaW50TGlnaHRzOkoucG9pbnQubGVuZ3RoLG51bVNwb3RMaWdodHM6Si5zcG90Lmxlbmd0aCxudW1SZWN0QXJlYUxpZ2h0czpKLnJlY3RBcmVhLmxlbmd0aCxudW1IZW1pTGlnaHRzOkouaGVtaS5sZW5ndGgsbnVtRGlyTGlnaHRTaGFkb3dzOkouZGlyZWN0aW9uYWxTaGFkb3dNYXAubGVuZ3RoLG51bVBvaW50TGlnaHRTaGFkb3dzOkoucG9pbnRTaGFkb3dNYXAubGVuZ3RoLG51bVNwb3RMaWdodFNoYWRvd3M6Si5zcG90U2hhZG93TWFwLmxlbmd0aCwKbnVtQ2xpcHBpbmdQbGFuZXM6UyxudW1DbGlwSW50ZXJzZWN0aW9uOlYsZGl0aGVyaW5nOkcuZGl0aGVyaW5nLHNoYWRvd01hcEVuYWJsZWQ6YS5zaGFkb3dNYXAuZW5hYmxlZCYmVy5yZWNlaXZlU2hhZG93JiYwPFAubGVuZ3RoLHNoYWRvd01hcFR5cGU6YS5zaGFkb3dNYXAudHlwZSx0b25lTWFwcGluZzpHLnRvbmVNYXBwZWQ/YS50b25lTWFwcGluZzowLHBoeXNpY2FsbHlDb3JyZWN0TGlnaHRzOmEucGh5c2ljYWxseUNvcnJlY3RMaWdodHMscHJlbXVsdGlwbGllZEFscGhhOkcucHJlbXVsdGlwbGllZEFscGhhLGFscGhhVGVzdDpHLmFscGhhVGVzdCxkb3VibGVTaWRlZDoyPT09Ry5zaWRlLGZsaXBTaWRlZDoxPT09Ry5zaWRlLGRlcHRoUGFja2luZzp2b2lkIDAhPT1HLmRlcHRoUGFja2luZz9HLmRlcHRoUGFja2luZzohMX19O3RoaXMuZ2V0UHJvZ3JhbUNvZGU9ZnVuY3Rpb24oRyxKKXt2YXIgUD1bXTtKLnNoYWRlcklEP1AucHVzaChKLnNoYWRlcklEKTooUC5wdXNoKEcuZnJhZ21lbnRTaGFkZXIpLApQLnB1c2goRy52ZXJ0ZXhTaGFkZXIpKTtpZih2b2lkIDAhPT1HLmRlZmluZXMpZm9yKHZhciBSIGluIEcuZGVmaW5lcylQLnB1c2goUiksUC5wdXNoKEcuZGVmaW5lc1tSXSk7Zm9yKFI9MDtSPEUubGVuZ3RoO1IrKylQLnB1c2goSltFW1JdXSk7UC5wdXNoKEcub25CZWZvcmVDb21waWxlLnRvU3RyaW5nKCkpO1AucHVzaChhLmdhbW1hT3V0cHV0KTtQLnB1c2goYS5nYW1tYUZhY3Rvcik7cmV0dXJuIFAuam9pbigpfTt0aGlzLmFjcXVpcmVQcm9ncmFtPWZ1bmN0aW9uKEcsSixQLFIpe2Zvcih2YXIgUyxWPTAsVz12Lmxlbmd0aDtWPFc7VisrKXt2YXIgaGE9dltWXTtpZihoYS5jb2RlPT09Uil7Uz1oYTsrK1MudXNlZFRpbWVzO2JyZWFrfX12b2lkIDA9PT1TJiYoUz1uZXcgSmwoYSxjLFIsRyxKLFAsZSksdi5wdXNoKFMpKTtyZXR1cm4gU307dGhpcy5yZWxlYXNlUHJvZ3JhbT1mdW5jdGlvbihHKXswPT09LS1HLnVzZWRUaW1lcyYmKHZbdi5pbmRleE9mKEcpXT12W3YubGVuZ3RoLTFdLAp2LnBvcCgpLEcuZGVzdHJveSgpKX07dGhpcy5wcm9ncmFtcz12fWZ1bmN0aW9uIE1sKCl7dmFyIGE9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbihjKXt2YXIgZT1hLmdldChjKTt2b2lkIDA9PT1lJiYoZT17fSxhLnNldChjLGUpKTtyZXR1cm4gZX0scmVtb3ZlOmZ1bmN0aW9uKGMpe2EuZGVsZXRlKGMpfSx1cGRhdGU6ZnVuY3Rpb24oYyxlLGcpe2EuZ2V0KGMpW2VdPWd9LGRpc3Bvc2U6ZnVuY3Rpb24oKXthPW5ldyBXZWFrTWFwfX19ZnVuY3Rpb24gTmwoYSxjKXtyZXR1cm4gYS5ncm91cE9yZGVyIT09Yy5ncm91cE9yZGVyP2EuZ3JvdXBPcmRlci1jLmdyb3VwT3JkZXI6YS5yZW5kZXJPcmRlciE9PWMucmVuZGVyT3JkZXI/YS5yZW5kZXJPcmRlci1jLnJlbmRlck9yZGVyOmEucHJvZ3JhbSE9PWMucHJvZ3JhbT9hLnByb2dyYW0uaWQtYy5wcm9ncmFtLmlkOmEubWF0ZXJpYWwuaWQhPT1jLm1hdGVyaWFsLmlkP2EubWF0ZXJpYWwuaWQtYy5tYXRlcmlhbC5pZDphLnohPT0KYy56P2Euei1jLno6YS5pZC1jLmlkfWZ1bmN0aW9uIE9sKGEsYyl7cmV0dXJuIGEuZ3JvdXBPcmRlciE9PWMuZ3JvdXBPcmRlcj9hLmdyb3VwT3JkZXItYy5ncm91cE9yZGVyOmEucmVuZGVyT3JkZXIhPT1jLnJlbmRlck9yZGVyP2EucmVuZGVyT3JkZXItYy5yZW5kZXJPcmRlcjphLnohPT1jLno/Yy56LWEuejphLmlkLWMuaWR9ZnVuY3Rpb24gdGooKXtmdW5jdGlvbiBhKHosRSxHLEosUCxSKXt2YXIgUz1jW2VdO3ZvaWQgMD09PVM/KFM9e2lkOnouaWQsb2JqZWN0OnosZ2VvbWV0cnk6RSxtYXRlcmlhbDpHLHByb2dyYW06Ry5wcm9ncmFtfHx2LGdyb3VwT3JkZXI6SixyZW5kZXJPcmRlcjp6LnJlbmRlck9yZGVyLHo6UCxncm91cDpSfSxjW2VdPVMpOihTLmlkPXouaWQsUy5vYmplY3Q9eixTLmdlb21ldHJ5PUUsUy5tYXRlcmlhbD1HLFMucHJvZ3JhbT1HLnByb2dyYW18fHYsUy5ncm91cE9yZGVyPUosUy5yZW5kZXJPcmRlcj16LnJlbmRlck9yZGVyLFMuej1QLFMuZ3JvdXA9Uik7CmUrKztyZXR1cm4gU312YXIgYz1bXSxlPTAsZz1bXSxyPVtdLHY9e2lkOi0xfTtyZXR1cm57b3BhcXVlOmcsdHJhbnNwYXJlbnQ6cixpbml0OmZ1bmN0aW9uKCl7ZT0wO2cubGVuZ3RoPTA7ci5sZW5ndGg9MH0scHVzaDpmdW5jdGlvbih6LEUsRyxKLFAsUil7ej1hKHosRSxHLEosUCxSKTsoITA9PT1HLnRyYW5zcGFyZW50P3I6ZykucHVzaCh6KX0sdW5zaGlmdDpmdW5jdGlvbih6LEUsRyxKLFAsUil7ej1hKHosRSxHLEosUCxSKTsoITA9PT1HLnRyYW5zcGFyZW50P3I6ZykudW5zaGlmdCh6KX0sc29ydDpmdW5jdGlvbigpezE8Zy5sZW5ndGgmJmcuc29ydChObCk7MTxyLmxlbmd0aCYmci5zb3J0KE9sKX19fWZ1bmN0aW9uIFBsKCl7ZnVuY3Rpb24gYShlKXtlPWUudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSk7Yy5kZWxldGUoZSl9dmFyIGM9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbihlLGcpe3ZhciByPWMuZ2V0KGUpO2lmKHZvaWQgMD09PQpyKXt2YXIgdj1uZXcgdGo7Yy5zZXQoZSxuZXcgV2Vha01hcCk7Yy5nZXQoZSkuc2V0KGcsdik7ZS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixhKX1lbHNlIHY9ci5nZXQoZyksdm9pZCAwPT09diYmKHY9bmV3IHRqLHIuc2V0KGcsdikpO3JldHVybiB2fSxkaXNwb3NlOmZ1bmN0aW9uKCl7Yz1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIFFsKCl7dmFyIGE9e307cmV0dXJue2dldDpmdW5jdGlvbihjKXtpZih2b2lkIDAhPT1hW2MuaWRdKXJldHVybiBhW2MuaWRdO3N3aXRjaChjLnR5cGUpe2Nhc2UgIkRpcmVjdGlvbmFsTGlnaHQiOnZhciBlPXtkaXJlY3Rpb246bmV3IGssY29sb3I6bmV3IEksc2hhZG93OiExLHNoYWRvd0JpYXM6MCxzaGFkb3dSYWRpdXM6MSxzaGFkb3dNYXBTaXplOm5ldyBmfTticmVhaztjYXNlICJTcG90TGlnaHQiOmU9e3Bvc2l0aW9uOm5ldyBrLGRpcmVjdGlvbjpuZXcgayxjb2xvcjpuZXcgSSxkaXN0YW5jZTowLGNvbmVDb3M6MCxwZW51bWJyYUNvczowLGRlY2F5OjAsCnNoYWRvdzohMSxzaGFkb3dCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZn07YnJlYWs7Y2FzZSAiUG9pbnRMaWdodCI6ZT17cG9zaXRpb246bmV3IGssY29sb3I6bmV3IEksZGlzdGFuY2U6MCxkZWNheTowLHNoYWRvdzohMSxzaGFkb3dCaWFzOjAsc2hhZG93UmFkaXVzOjEsc2hhZG93TWFwU2l6ZTpuZXcgZixzaGFkb3dDYW1lcmFOZWFyOjEsc2hhZG93Q2FtZXJhRmFyOjFFM307YnJlYWs7Y2FzZSAiSGVtaXNwaGVyZUxpZ2h0IjplPXtkaXJlY3Rpb246bmV3IGssc2t5Q29sb3I6bmV3IEksZ3JvdW5kQ29sb3I6bmV3IEl9O2JyZWFrO2Nhc2UgIlJlY3RBcmVhTGlnaHQiOmU9e2NvbG9yOm5ldyBJLHBvc2l0aW9uOm5ldyBrLGhhbGZXaWR0aDpuZXcgayxoYWxmSGVpZ2h0Om5ldyBrfX1yZXR1cm4gYVtjLmlkXT1lfX19ZnVuY3Rpb24gUmwoYSxjKXtyZXR1cm4oYy5jYXN0U2hhZG93PzE6MCktKGEuY2FzdFNoYWRvdz8xOjApfWZ1bmN0aW9uIFNsKCl7Zm9yKHZhciBhPQpuZXcgUWwsYz17dmVyc2lvbjowLGhhc2g6e2RpcmVjdGlvbmFsTGVuZ3RoOi0xLHBvaW50TGVuZ3RoOi0xLHNwb3RMZW5ndGg6LTEscmVjdEFyZWFMZW5ndGg6LTEsaGVtaUxlbmd0aDotMSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxhbWJpZW50OlswLDAsMF0scHJvYmU6W10sZGlyZWN0aW9uYWw6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXA6W10sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6W10sc3BvdDpbXSxzcG90U2hhZG93TWFwOltdLHNwb3RTaGFkb3dNYXRyaXg6W10scmVjdEFyZWE6W10scG9pbnQ6W10scG9pbnRTaGFkb3dNYXA6W10scG9pbnRTaGFkb3dNYXRyaXg6W10saGVtaTpbXSxudW1EaXJlY3Rpb25hbFNoYWRvd3M6LTEsbnVtUG9pbnRTaGFkb3dzOi0xLG51bVNwb3RTaGFkb3dzOi0xfSxlPTA7OT5lO2UrKyljLnByb2JlLnB1c2gobmV3IGspO3ZhciBnPW5ldyBrLHI9bmV3IHEsdj1uZXcgcTtyZXR1cm57c2V0dXA6ZnVuY3Rpb24oeiwKRSxHKXtmb3IodmFyIEo9MCxQPTAsUj0wLFM9MDs5PlM7UysrKWMucHJvYmVbU10uc2V0KDAsMCwwKTt2YXIgVj1FPTAsVz0wLGhhPTAsZmE9MCxyYT0wLHBhPTAscWE9MDtHPUcubWF0cml4V29ybGRJbnZlcnNlO3ouc29ydChSbCk7Uz0wO2Zvcih2YXIgdWE9ei5sZW5ndGg7Uzx1YTtTKyspe3ZhciBvYT16W1NdLHRhPW9hLmNvbG9yLEJhPW9hLmludGVuc2l0eSxUYT1vYS5kaXN0YW5jZSxVYT1vYS5zaGFkb3cmJm9hLnNoYWRvdy5tYXA/b2Euc2hhZG93Lm1hcC50ZXh0dXJlOm51bGw7aWYob2EuaXNBbWJpZW50TGlnaHQpSis9dGEucipCYSxQKz10YS5nKkJhLFIrPXRhLmIqQmE7ZWxzZSBpZihvYS5pc0xpZ2h0UHJvYmUpZm9yKFVhPTA7OT5VYTtVYSsrKWMucHJvYmVbVWFdLmFkZFNjYWxlZFZlY3RvcihvYS5zaC5jb2VmZmljaWVudHNbVWFdLEJhKTtlbHNlIGlmKG9hLmlzRGlyZWN0aW9uYWxMaWdodCl7dmFyIENhPWEuZ2V0KG9hKTtDYS5jb2xvci5jb3B5KG9hLmNvbG9yKS5tdWx0aXBseVNjYWxhcihvYS5pbnRlbnNpdHkpOwpDYS5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG9hLm1hdHJpeFdvcmxkKTtnLnNldEZyb21NYXRyaXhQb3NpdGlvbihvYS50YXJnZXQubWF0cml4V29ybGQpO0NhLmRpcmVjdGlvbi5zdWIoZyk7Q2EuZGlyZWN0aW9uLnRyYW5zZm9ybURpcmVjdGlvbihHKTtpZihDYS5zaGFkb3c9b2EuY2FzdFNoYWRvdylCYT1vYS5zaGFkb3csQ2Euc2hhZG93Qmlhcz1CYS5iaWFzLENhLnNoYWRvd1JhZGl1cz1CYS5yYWRpdXMsQ2Euc2hhZG93TWFwU2l6ZT1CYS5tYXBTaXplLGMuZGlyZWN0aW9uYWxTaGFkb3dNYXBbRV09VWEsYy5kaXJlY3Rpb25hbFNoYWRvd01hdHJpeFtFXT1vYS5zaGFkb3cubWF0cml4LHJhKys7Yy5kaXJlY3Rpb25hbFtFXT1DYTtFKyt9ZWxzZSBpZihvYS5pc1Nwb3RMaWdodCl7Q2E9YS5nZXQob2EpO0NhLnBvc2l0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihvYS5tYXRyaXhXb3JsZCk7Q2EucG9zaXRpb24uYXBwbHlNYXRyaXg0KEcpO0NhLmNvbG9yLmNvcHkodGEpLm11bHRpcGx5U2NhbGFyKEJhKTsKQ2EuZGlzdGFuY2U9VGE7Q2EuZGlyZWN0aW9uLnNldEZyb21NYXRyaXhQb3NpdGlvbihvYS5tYXRyaXhXb3JsZCk7Zy5zZXRGcm9tTWF0cml4UG9zaXRpb24ob2EudGFyZ2V0Lm1hdHJpeFdvcmxkKTtDYS5kaXJlY3Rpb24uc3ViKGcpO0NhLmRpcmVjdGlvbi50cmFuc2Zvcm1EaXJlY3Rpb24oRyk7Q2EuY29uZUNvcz1NYXRoLmNvcyhvYS5hbmdsZSk7Q2EucGVudW1icmFDb3M9TWF0aC5jb3Mob2EuYW5nbGUqKDEtb2EucGVudW1icmEpKTtDYS5kZWNheT1vYS5kZWNheTtpZihDYS5zaGFkb3c9b2EuY2FzdFNoYWRvdylCYT1vYS5zaGFkb3csQ2Euc2hhZG93Qmlhcz1CYS5iaWFzLENhLnNoYWRvd1JhZGl1cz1CYS5yYWRpdXMsQ2Euc2hhZG93TWFwU2l6ZT1CYS5tYXBTaXplLGMuc3BvdFNoYWRvd01hcFtXXT1VYSxjLnNwb3RTaGFkb3dNYXRyaXhbV109b2Euc2hhZG93Lm1hdHJpeCxxYSsrO2Muc3BvdFtXXT1DYTtXKyt9ZWxzZSBpZihvYS5pc1JlY3RBcmVhTGlnaHQpQ2E9YS5nZXQob2EpLApDYS5jb2xvci5jb3B5KHRhKS5tdWx0aXBseVNjYWxhcihCYSksQ2EucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG9hLm1hdHJpeFdvcmxkKSxDYS5wb3NpdGlvbi5hcHBseU1hdHJpeDQoRyksdi5pZGVudGl0eSgpLHIuY29weShvYS5tYXRyaXhXb3JsZCksci5wcmVtdWx0aXBseShHKSx2LmV4dHJhY3RSb3RhdGlvbihyKSxDYS5oYWxmV2lkdGguc2V0KC41Km9hLndpZHRoLDAsMCksQ2EuaGFsZkhlaWdodC5zZXQoMCwuNSpvYS5oZWlnaHQsMCksQ2EuaGFsZldpZHRoLmFwcGx5TWF0cml4NCh2KSxDYS5oYWxmSGVpZ2h0LmFwcGx5TWF0cml4NCh2KSxjLnJlY3RBcmVhW2hhXT1DYSxoYSsrO2Vsc2UgaWYob2EuaXNQb2ludExpZ2h0KXtDYT1hLmdldChvYSk7Q2EucG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG9hLm1hdHJpeFdvcmxkKTtDYS5wb3NpdGlvbi5hcHBseU1hdHJpeDQoRyk7Q2EuY29sb3IuY29weShvYS5jb2xvcikubXVsdGlwbHlTY2FsYXIob2EuaW50ZW5zaXR5KTsKQ2EuZGlzdGFuY2U9b2EuZGlzdGFuY2U7Q2EuZGVjYXk9b2EuZGVjYXk7aWYoQ2Euc2hhZG93PW9hLmNhc3RTaGFkb3cpQmE9b2Euc2hhZG93LENhLnNoYWRvd0JpYXM9QmEuYmlhcyxDYS5zaGFkb3dSYWRpdXM9QmEucmFkaXVzLENhLnNoYWRvd01hcFNpemU9QmEubWFwU2l6ZSxDYS5zaGFkb3dDYW1lcmFOZWFyPUJhLmNhbWVyYS5uZWFyLENhLnNoYWRvd0NhbWVyYUZhcj1CYS5jYW1lcmEuZmFyLGMucG9pbnRTaGFkb3dNYXBbVl09VWEsYy5wb2ludFNoYWRvd01hdHJpeFtWXT1vYS5zaGFkb3cubWF0cml4LHBhKys7Yy5wb2ludFtWXT1DYTtWKyt9ZWxzZSBvYS5pc0hlbWlzcGhlcmVMaWdodCYmKENhPWEuZ2V0KG9hKSxDYS5kaXJlY3Rpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKG9hLm1hdHJpeFdvcmxkKSxDYS5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKEcpLENhLmRpcmVjdGlvbi5ub3JtYWxpemUoKSxDYS5za3lDb2xvci5jb3B5KG9hLmNvbG9yKS5tdWx0aXBseVNjYWxhcihCYSksCkNhLmdyb3VuZENvbG9yLmNvcHkob2EuZ3JvdW5kQ29sb3IpLm11bHRpcGx5U2NhbGFyKEJhKSxjLmhlbWlbZmFdPUNhLGZhKyspfWMuYW1iaWVudFswXT1KO2MuYW1iaWVudFsxXT1QO2MuYW1iaWVudFsyXT1SO3o9Yy5oYXNoO2lmKHouZGlyZWN0aW9uYWxMZW5ndGghPT1FfHx6LnBvaW50TGVuZ3RoIT09Vnx8ei5zcG90TGVuZ3RoIT09V3x8ei5yZWN0QXJlYUxlbmd0aCE9PWhhfHx6LmhlbWlMZW5ndGghPT1mYXx8ei5udW1EaXJlY3Rpb25hbFNoYWRvd3MhPT1yYXx8ei5udW1Qb2ludFNoYWRvd3MhPT1wYXx8ei5udW1TcG90U2hhZG93cyE9PXFhKWMuZGlyZWN0aW9uYWwubGVuZ3RoPUUsYy5zcG90Lmxlbmd0aD1XLGMucmVjdEFyZWEubGVuZ3RoPWhhLGMucG9pbnQubGVuZ3RoPVYsYy5oZW1pLmxlbmd0aD1mYSxjLmRpcmVjdGlvbmFsU2hhZG93TWFwLmxlbmd0aD1yYSxjLnBvaW50U2hhZG93TWFwLmxlbmd0aD1wYSxjLnNwb3RTaGFkb3dNYXAubGVuZ3RoPXFhLGMuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgubGVuZ3RoPQpyYSxjLnBvaW50U2hhZG93TWF0cml4Lmxlbmd0aD1wYSxjLnNwb3RTaGFkb3dNYXRyaXgubGVuZ3RoPXFhLHouZGlyZWN0aW9uYWxMZW5ndGg9RSx6LnBvaW50TGVuZ3RoPVYsei5zcG90TGVuZ3RoPVcsei5yZWN0QXJlYUxlbmd0aD1oYSx6LmhlbWlMZW5ndGg9ZmEsei5udW1EaXJlY3Rpb25hbFNoYWRvd3M9cmEsei5udW1Qb2ludFNoYWRvd3M9cGEsei5udW1TcG90U2hhZG93cz1xYSxjLnZlcnNpb249VGwrK30sc3RhdGU6Y319ZnVuY3Rpb24gdWooKXt2YXIgYT1uZXcgU2wsYz1bXSxlPVtdO3JldHVybntpbml0OmZ1bmN0aW9uKCl7Yy5sZW5ndGg9MDtlLmxlbmd0aD0wfSxzdGF0ZTp7bGlnaHRzQXJyYXk6YyxzaGFkb3dzQXJyYXk6ZSxsaWdodHM6YX0sc2V0dXBMaWdodHM6ZnVuY3Rpb24oZyl7YS5zZXR1cChjLGUsZyl9LHB1c2hMaWdodDpmdW5jdGlvbihnKXtjLnB1c2goZyl9LHB1c2hTaGFkb3c6ZnVuY3Rpb24oZyl7ZS5wdXNoKGcpfX19ZnVuY3Rpb24gVWwoKXtmdW5jdGlvbiBhKGUpe2U9CmUudGFyZ2V0O2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsYSk7Yy5kZWxldGUoZSl9dmFyIGM9bmV3IFdlYWtNYXA7cmV0dXJue2dldDpmdW5jdGlvbihlLGcpe2lmKCExPT09Yy5oYXMoZSkpe3ZhciByPW5ldyB1ajtjLnNldChlLG5ldyBXZWFrTWFwKTtjLmdldChlKS5zZXQoZyxyKTtlLmFkZEV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGEpfWVsc2UhMT09PWMuZ2V0KGUpLmhhcyhnKT8ocj1uZXcgdWosYy5nZXQoZSkuc2V0KGcscikpOnI9Yy5nZXQoZSkuZ2V0KGcpO3JldHVybiByfSxkaXNwb3NlOmZ1bmN0aW9uKCl7Yz1uZXcgV2Vha01hcH19fWZ1bmN0aW9uIHZkKGEpe00uY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik1lc2hEZXB0aE1hdGVyaWFsIjt0aGlzLmRlcHRoUGFja2luZz0zMjAwO3RoaXMubW9ycGhUYXJnZXRzPXRoaXMuc2tpbm5pbmc9ITE7dGhpcy5kaXNwbGFjZW1lbnRNYXA9dGhpcy5hbHBoYU1hcD10aGlzLm1hcD1udWxsO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9CjE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLmxpZ2h0cz10aGlzLmZvZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiB3ZChhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoRGlzdGFuY2VNYXRlcmlhbCI7dGhpcy5yZWZlcmVuY2VQb3NpdGlvbj1uZXcgazt0aGlzLm5lYXJEaXN0YW5jZT0xO3RoaXMuZmFyRGlzdGFuY2U9MUUzO3RoaXMubW9ycGhUYXJnZXRzPXRoaXMuc2tpbm5pbmc9ITE7dGhpcy5kaXNwbGFjZW1lbnRNYXA9dGhpcy5hbHBoYU1hcD10aGlzLm1hcD1udWxsO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9MTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9MDt0aGlzLmxpZ2h0cz10aGlzLmZvZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiB2aihhLGMsZSl7ZnVuY3Rpb24gZyh0YSxCYSl7dmFyIFRhPWMudXBkYXRlKHJhKTtXLnVuaWZvcm1zLnNoYWRvd19wYXNzLnZhbHVlPQp0YS5tYXAudGV4dHVyZTtXLnVuaWZvcm1zLnJlc29sdXRpb24udmFsdWU9dGEubWFwU2l6ZTtXLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT10YS5yYWRpdXM7YS5zZXRSZW5kZXJUYXJnZXQodGEubWFwUGFzcyk7YS5jbGVhcigpO2EucmVuZGVyQnVmZmVyRGlyZWN0KEJhLG51bGwsVGEsVyxyYSxudWxsKTtoYS51bmlmb3Jtcy5zaGFkb3dfcGFzcy52YWx1ZT10YS5tYXBQYXNzLnRleHR1cmU7aGEudW5pZm9ybXMucmVzb2x1dGlvbi52YWx1ZT10YS5tYXBTaXplO2hhLnVuaWZvcm1zLnJhZGl1cy52YWx1ZT10YS5yYWRpdXM7YS5zZXRSZW5kZXJUYXJnZXQodGEubWFwKTthLmNsZWFyKCk7YS5yZW5kZXJCdWZmZXJEaXJlY3QoQmEsbnVsbCxUYSxoYSxyYSxudWxsKX1mdW5jdGlvbiByKHRhLEJhLFRhLFVhLENhLEhhKXt2YXIgRGE9dGEuZ2VvbWV0cnk7dmFyIE1hPVA7dmFyIGRiPXRhLmN1c3RvbURlcHRoTWF0ZXJpYWw7VGEuaXNQb2ludExpZ2h0JiYoTWE9UixkYj10YS5jdXN0b21EaXN0YW5jZU1hdGVyaWFsKTsKZGI/TWE9ZGI6KGRiPSExLEJhLm1vcnBoVGFyZ2V0cyYmKERhJiZEYS5pc0J1ZmZlckdlb21ldHJ5P2RiPURhLm1vcnBoQXR0cmlidXRlcyYmRGEubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uJiYwPERhLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbi5sZW5ndGg6RGEmJkRhLmlzR2VvbWV0cnkmJihkYj1EYS5tb3JwaFRhcmdldHMmJjA8RGEubW9ycGhUYXJnZXRzLmxlbmd0aCkpLHRhLmlzU2tpbm5lZE1lc2gmJiExPT09QmEuc2tpbm5pbmcmJmNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xTaGFkb3dNYXA6IFRIUkVFLlNraW5uZWRNZXNoIHdpdGggbWF0ZXJpYWwuc2tpbm5pbmcgc2V0IHRvIGZhbHNlOiIsdGEpLHRhPXRhLmlzU2tpbm5lZE1lc2gmJkJhLnNraW5uaW5nLERhPTAsZGImJihEYXw9MSksdGEmJihEYXw9MiksTWE9TWFbRGFdKTthLmxvY2FsQ2xpcHBpbmdFbmFibGVkJiYhMD09PUJhLmNsaXBTaGFkb3dzJiYwIT09QmEuY2xpcHBpbmdQbGFuZXMubGVuZ3RoJiYoRGE9TWEudXVpZCwKZGI9QmEudXVpZCx0YT1TW0RhXSx2b2lkIDA9PT10YSYmKHRhPXt9LFNbRGFdPXRhKSxEYT10YVtkYl0sdm9pZCAwPT09RGEmJihEYT1NYS5jbG9uZSgpLHRhW2RiXT1EYSksTWE9RGEpO01hLnZpc2libGU9QmEudmlzaWJsZTtNYS53aXJlZnJhbWU9QmEud2lyZWZyYW1lO01hLnNpZGU9Mz09PUhhP251bGwhPUJhLnNoYWRvd1NpZGU/QmEuc2hhZG93U2lkZTpCYS5zaWRlOm51bGwhPUJhLnNoYWRvd1NpZGU/QmEuc2hhZG93U2lkZTpWW0JhLnNpZGVdO01hLmNsaXBTaGFkb3dzPUJhLmNsaXBTaGFkb3dzO01hLmNsaXBwaW5nUGxhbmVzPUJhLmNsaXBwaW5nUGxhbmVzO01hLmNsaXBJbnRlcnNlY3Rpb249QmEuY2xpcEludGVyc2VjdGlvbjtNYS53aXJlZnJhbWVMaW5ld2lkdGg9QmEud2lyZWZyYW1lTGluZXdpZHRoO01hLmxpbmV3aWR0aD1CYS5saW5ld2lkdGg7VGEuaXNQb2ludExpZ2h0JiZNYS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsJiYoTWEucmVmZXJlbmNlUG9zaXRpb24uc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFRhLm1hdHJpeFdvcmxkKSwKTWEubmVhckRpc3RhbmNlPVVhLE1hLmZhckRpc3RhbmNlPUNhKTtyZXR1cm4gTWF9ZnVuY3Rpb24gdih0YSxCYSxUYSxVYSxDYSl7aWYoITEhPT10YS52aXNpYmxlKXtpZih0YS5sYXllcnMudGVzdChCYS5sYXllcnMpJiYodGEuaXNNZXNofHx0YS5pc0xpbmV8fHRhLmlzUG9pbnRzKSYmKHRhLmNhc3RTaGFkb3d8fHRhLnJlY2VpdmVTaGFkb3cmJjM9PT1DYSkmJighdGEuZnJ1c3R1bUN1bGxlZHx8ei5pbnRlcnNlY3RzT2JqZWN0KHRhKSkpe3RhLm1vZGVsVmlld01hdHJpeC5tdWx0aXBseU1hdHJpY2VzKFRhLm1hdHJpeFdvcmxkSW52ZXJzZSx0YS5tYXRyaXhXb3JsZCk7dmFyIEhhPWMudXBkYXRlKHRhKSxEYT10YS5tYXRlcmlhbDtpZihBcnJheS5pc0FycmF5KERhKSlmb3IodmFyIE1hPUhhLmdyb3VwcyxkYj0wLHRiPU1hLmxlbmd0aDtkYjx0YjtkYisrKXt2YXIgS2E9TWFbZGJdLGJiPURhW0thLm1hdGVyaWFsSW5kZXhdO2JiJiZiYi52aXNpYmxlJiYoYmI9cih0YSxiYixVYSxUYS5uZWFyLApUYS5mYXIsQ2EpLGEucmVuZGVyQnVmZmVyRGlyZWN0KFRhLG51bGwsSGEsYmIsdGEsS2EpKX1lbHNlIERhLnZpc2libGUmJihiYj1yKHRhLERhLFVhLFRhLm5lYXIsVGEuZmFyLENhKSxhLnJlbmRlckJ1ZmZlckRpcmVjdChUYSxudWxsLEhhLGJiLHRhLG51bGwpKX10YT10YS5jaGlsZHJlbjtIYT0wO2ZvcihEYT10YS5sZW5ndGg7SGE8RGE7SGErKyl2KHRhW0hhXSxCYSxUYSxVYSxDYSl9fXZhciB6PW5ldyBpYyxFPW5ldyBmLEc9bmV3IGYsSj1uZXcgcCxQPUFycmF5KDQpLFI9QXJyYXkoNCksUz17fSxWPXswOjEsMTowLDI6Mn0sVz1uZXcgcWIoe2RlZmluZXM6e1NBTVBMRV9SQVRFOi4yNSxIQUxGX1NBTVBMRV9SQVRFOi4xMjV9LHVuaWZvcm1zOntzaGFkb3dfcGFzczp7dmFsdWU6bnVsbH0scmVzb2x1dGlvbjp7dmFsdWU6bmV3IGZ9LHJhZGl1czp7dmFsdWU6NH19LHZlcnRleFNoYWRlcjoidm9pZCBtYWluKCkge1xuXHRnbF9Qb3NpdGlvbiBceDNkIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcbn0iLApmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgc2hhZG93X3Bhc3M7XG51bmlmb3JtIHZlYzIgcmVzb2x1dGlvbjtcbnVuaWZvcm0gZmxvYXQgcmFkaXVzO1xuI2luY2x1ZGUgXHgzY3BhY2tpbmdceDNlXG52b2lkIG1haW4oKSB7XG4gIGZsb2F0IG1lYW4gXHgzZCAwLjA7XG4gIGZsb2F0IHNxdWFyZWRfbWVhbiBceDNkIDAuMDtcbiAgXG5cdGZsb2F0IGRlcHRoIFx4M2QgdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICApIC8gcmVzb2x1dGlvbiApICk7XG4gIGZvciAoIGZsb2F0IGkgXHgzZCAtMS4wOyBpIFx4M2MgMS4wIDsgaSArXHgzZCBTQU1QTEVfUkFURSkge1xuICAgICNpZmRlZiBIT1JJWk9OQUxfUEFTU1xuICAgICAgdmVjMiBkaXN0cmlidXRpb24gXHgzZCBkZWNvZGVIYWxmUkdCQSAoIHRleHR1cmUyRCggc2hhZG93X3Bhc3MsICggZ2xfRnJhZ0Nvb3JkLnh5ICsgdmVjMiggaSwgMC4wICkgKiByYWRpdXMgKSAvIHJlc29sdXRpb24gKSApO1xuICAgICAgbWVhbiArXHgzZCBkaXN0cmlidXRpb24ueDtcbiAgICAgIHNxdWFyZWRfbWVhbiArXHgzZCBkaXN0cmlidXRpb24ueSAqIGRpc3RyaWJ1dGlvbi55ICsgZGlzdHJpYnV0aW9uLnggKiBkaXN0cmlidXRpb24ueDtcbiAgICAjZWxzZVxuICAgICAgZmxvYXQgZGVwdGggXHgzZCB1bnBhY2tSR0JBVG9EZXB0aCggdGV4dHVyZTJEKCBzaGFkb3dfcGFzcywgKCBnbF9GcmFnQ29vcmQueHkgKyB2ZWMyKCAwLjAsICBpICkgICogcmFkaXVzICkgLyByZXNvbHV0aW9uICkgKTtcbiAgICAgIG1lYW4gK1x4M2QgZGVwdGg7XG4gICAgICBzcXVhcmVkX21lYW4gK1x4M2QgZGVwdGggKiBkZXB0aDtcbiAgICAjZW5kaWZcbiAgfVxuICBtZWFuIFx4M2QgbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG4gIHNxdWFyZWRfbWVhbiBceDNkIHNxdWFyZWRfbWVhbiAqIEhBTEZfU0FNUExFX1JBVEU7XG4gIGZsb2F0IHN0ZF9kZXYgXHgzZCBwb3coIHNxdWFyZWRfbWVhbiAtIG1lYW4gKiBtZWFuLCAwLjUgKTtcbiAgZ2xfRnJhZ0NvbG9yIFx4M2QgZW5jb2RlSGFsZlJHQkEoIHZlYzIoIG1lYW4sIHN0ZF9kZXYgKSApO1xufSJ9KSwKaGE9Vy5jbG9uZSgpO2hhLmRlZmluZXMuSE9SSVpPTkFMX1BBU1M9MTt2YXIgZmE9bmV3IHZhO2ZhLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBRKG5ldyBGbG9hdDMyQXJyYXkoWy0xLC0xLC41LDMsLTEsLjUsLTEsMywuNV0pLDMpKTt2YXIgcmE9bmV3IHhhKGZhLFcpO2ZvcihmYT0wOzQhPT1mYTsrK2ZhKXt2YXIgcGE9MCE9PShmYSYxKSxxYT0wIT09KGZhJjIpLHVhPW5ldyB2ZCh7ZGVwdGhQYWNraW5nOjMyMDEsbW9ycGhUYXJnZXRzOnBhLHNraW5uaW5nOnFhfSk7UFtmYV09dWE7cGE9bmV3IHdkKHttb3JwaFRhcmdldHM6cGEsc2tpbm5pbmc6cWF9KTtSW2ZhXT1wYX12YXIgb2E9dGhpczt0aGlzLmVuYWJsZWQ9ITE7dGhpcy5hdXRvVXBkYXRlPSEwO3RoaXMubmVlZHNVcGRhdGU9ITE7dGhpcy50eXBlPTE7dGhpcy5yZW5kZXI9ZnVuY3Rpb24odGEsQmEsVGEpe2lmKCExIT09b2EuZW5hYmxlZCYmKCExIT09b2EuYXV0b1VwZGF0ZXx8ITEhPT1vYS5uZWVkc1VwZGF0ZSkmJgowIT09dGEubGVuZ3RoKXt2YXIgVWE9YS5nZXRSZW5kZXJUYXJnZXQoKSxDYT1hLmdldEFjdGl2ZUN1YmVGYWNlKCksSGE9YS5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLERhPWEuc3RhdGU7RGEuc2V0QmxlbmRpbmcoMCk7RGEuYnVmZmVycy5jb2xvci5zZXRDbGVhcigxLDEsMSwxKTtEYS5idWZmZXJzLmRlcHRoLnNldFRlc3QoITApO0RhLnNldFNjaXNzb3JUZXN0KCExKTtmb3IodmFyIE1hPTAsZGI9dGEubGVuZ3RoO01hPGRiO01hKyspe3ZhciB0Yj10YVtNYV0sS2E9dGIuc2hhZG93O2lmKHZvaWQgMD09PUthKWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xTaGFkb3dNYXA6Iix0YiwiaGFzIG5vIHNoYWRvdy4iKTtlbHNle0UuY29weShLYS5tYXBTaXplKTt2YXIgYmI9S2EuZ2V0RnJhbWVFeHRlbnRzKCk7RS5tdWx0aXBseShiYik7Ry5jb3B5KEthLm1hcFNpemUpO2lmKEUueD5lfHxFLnk+ZSljb25zb2xlLndhcm4oIlRIUkVFLldlYkdMU2hhZG93TWFwOiIsdGIsImhhcyBzaGFkb3cgZXhjZWVkaW5nIG1heCB0ZXh0dXJlIHNpemUsIHJlZHVjaW5nIiksCkUueD5lJiYoRy54PU1hdGguZmxvb3IoZS9iYi54KSxFLng9Ry54KmJiLngsS2EubWFwU2l6ZS54PUcueCksRS55PmUmJihHLnk9TWF0aC5mbG9vcihlL2JiLnkpLEUueT1HLnkqYmIueSxLYS5tYXBTaXplLnk9Ry55KTtudWxsIT09S2EubWFwfHxLYS5pc1BvaW50TGlnaHRTaGFkb3d8fDMhPT10aGlzLnR5cGV8fChiYj17bWluRmlsdGVyOjEwMDYsbWFnRmlsdGVyOjEwMDYsZm9ybWF0OjEwMjN9LEthLm1hcD1uZXcgbShFLngsRS55LGJiKSxLYS5tYXAudGV4dHVyZS5uYW1lPXRiLm5hbWUrIi5zaGFkb3dNYXAiLEthLm1hcFBhc3M9bmV3IG0oRS54LEUueSxiYiksS2EuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSk7bnVsbD09PUthLm1hcCYmKGJiPXttaW5GaWx0ZXI6MTAwMyxtYWdGaWx0ZXI6MTAwMyxmb3JtYXQ6MTAyM30sS2EubWFwPW5ldyBtKEUueCxFLnksYmIpLEthLm1hcC50ZXh0dXJlLm5hbWU9dGIubmFtZSsiLnNoYWRvd01hcCIsS2EuY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSk7CmEuc2V0UmVuZGVyVGFyZ2V0KEthLm1hcCk7YS5jbGVhcigpO2JiPUthLmdldFZpZXdwb3J0Q291bnQoKTtmb3IodmFyIGpiPTA7amI8YmI7amIrKyl7dmFyIEViPUthLmdldFZpZXdwb3J0KGpiKTtKLnNldChHLngqRWIueCxHLnkqRWIueSxHLngqRWIueixHLnkqRWIudyk7RGEudmlld3BvcnQoSik7S2EudXBkYXRlTWF0cmljZXModGIsVGEsamIpO3o9S2EuZ2V0RnJ1c3R1bSgpO3YoQmEsVGEsS2EuY2FtZXJhLHRiLHRoaXMudHlwZSl9S2EuaXNQb2ludExpZ2h0U2hhZG93fHwzIT09dGhpcy50eXBlfHxnKEthLFRhKX19b2EubmVlZHNVcGRhdGU9ITE7YS5zZXRSZW5kZXJUYXJnZXQoVWEsQ2EsSGEpfX19ZnVuY3Rpb24gVmwoYSxjLGUsZyl7ZnVuY3Rpb24gcihqYSxHYSxMYSl7dmFyIG5iPW5ldyBVaW50OEFycmF5KDQpLFZhPWEuY3JlYXRlVGV4dHVyZSgpO2EuYmluZFRleHR1cmUoamEsVmEpO2EudGV4UGFyYW1ldGVyaShqYSwxMDI0MSw5NzI4KTthLnRleFBhcmFtZXRlcmkoamEsCjEwMjQwLDk3MjgpO2ZvcihqYT0wO2phPExhO2phKyspYS50ZXhJbWFnZTJEKEdhK2phLDAsNjQwOCwxLDEsMCw2NDA4LDUxMjEsbmIpO3JldHVybiBWYX1mdW5jdGlvbiB2KGphLEdhKXtyYVtqYV09MTswPT09cGFbamFdJiYoYS5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShqYSkscGFbamFdPTEpO3FhW2phXSE9PUdhJiYoKGcuaXNXZWJHTDI/YTpjLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKVtnLmlzV2ViR0wyPyJ2ZXJ0ZXhBdHRyaWJEaXZpc29yIjoidmVydGV4QXR0cmliRGl2aXNvckFOR0xFIl0oamEsR2EpLHFhW2phXT1HYSl9ZnVuY3Rpb24geihqYSl7ITAhPT11YVtqYV0mJihhLmVuYWJsZShqYSksdWFbamFdPSEwKX1mdW5jdGlvbiBFKGphKXshMSE9PXVhW2phXSYmKGEuZGlzYWJsZShqYSksdWFbamFdPSExKX1mdW5jdGlvbiBHKGphLEdhLExhLG5iLFZhLGliLGtiLFFhKXtpZigwPT09amEpQmEmJihFKDMwNDIpLEJhPSExKTtlbHNlIGlmKEJhfHwoeigzMDQyKSwKQmE9ITApLDUhPT1qYSl7aWYoamEhPT1UYXx8UWEhPT10Yil7aWYoMTAwIT09VWF8fDEwMCE9PURhKWEuYmxlbmRFcXVhdGlvbigzMjc3NCksRGE9VWE9MTAwO2lmKFFhKXN3aXRjaChqYSl7Y2FzZSAxOmEuYmxlbmRGdW5jU2VwYXJhdGUoMSw3NzEsMSw3NzEpO2JyZWFrO2Nhc2UgMjphLmJsZW5kRnVuYygxLDEpO2JyZWFrO2Nhc2UgMzphLmJsZW5kRnVuY1NlcGFyYXRlKDAsMCw3NjksNzcxKTticmVhaztjYXNlIDQ6YS5ibGVuZEZ1bmNTZXBhcmF0ZSgwLDc2OCwwLDc3MCk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFN0YXRlOiBJbnZhbGlkIGJsZW5kaW5nOiAiLGphKX1lbHNlIHN3aXRjaChqYSl7Y2FzZSAxOmEuYmxlbmRGdW5jU2VwYXJhdGUoNzcwLDc3MSwxLDc3MSk7YnJlYWs7Y2FzZSAyOmEuYmxlbmRGdW5jKDc3MCwxKTticmVhaztjYXNlIDM6YS5ibGVuZEZ1bmMoMCw3NjkpO2JyZWFrO2Nhc2UgNDphLmJsZW5kRnVuYygwLDc2OCk7YnJlYWs7CmRlZmF1bHQ6Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xTdGF0ZTogSW52YWxpZCBibGVuZGluZzogIixqYSl9ZGI9TWE9SGE9Q2E9bnVsbDtUYT1qYTt0Yj1RYX19ZWxzZXtWYT1WYXx8R2E7aWI9aWJ8fExhO2tiPWtifHxuYjtpZihHYSE9PVVhfHxWYSE9PURhKWEuYmxlbmRFcXVhdGlvblNlcGFyYXRlKGUuY29udmVydChHYSksZS5jb252ZXJ0KFZhKSksVWE9R2EsRGE9VmE7aWYoTGEhPT1DYXx8bmIhPT1IYXx8aWIhPT1NYXx8a2IhPT1kYilhLmJsZW5kRnVuY1NlcGFyYXRlKGUuY29udmVydChMYSksZS5jb252ZXJ0KG5iKSxlLmNvbnZlcnQoaWIpLGUuY29udmVydChrYikpLENhPUxhLEhhPW5iLE1hPWliLGRiPWtiO1RhPWphO3RiPW51bGx9fWZ1bmN0aW9uIEooamEpe0thIT09amEmJihqYT9hLmZyb250RmFjZSgyMzA0KTphLmZyb250RmFjZSgyMzA1KSxLYT1qYSl9ZnVuY3Rpb24gUChqYSl7MCE9PWphPyh6KDI4ODQpLGphIT09YmImJigxPT09amE/YS5jdWxsRmFjZSgxMDI5KToKMj09PWphP2EuY3VsbEZhY2UoMTAyOCk6YS5jdWxsRmFjZSgxMDMyKSkpOkUoMjg4NCk7YmI9amF9ZnVuY3Rpb24gUihqYSxHYSxMYSl7aWYoamEpe2lmKHooMzI4MjMpLEViIT09R2F8fHhiIT09TGEpYS5wb2x5Z29uT2Zmc2V0KEdhLExhKSxFYj1HYSx4Yj1MYX1lbHNlIEUoMzI4MjMpfWZ1bmN0aW9uIFMoamEpe3ZvaWQgMD09PWphJiYoamE9MzM5ODQraWEtMSk7emEhPT1qYSYmKGEuYWN0aXZlVGV4dHVyZShqYSksemE9amEpfXZhciBWPW5ldyBmdW5jdGlvbigpe3ZhciBqYT0hMSxHYT1uZXcgcCxMYT1udWxsLG5iPW5ldyBwKDAsMCwwLDApO3JldHVybntzZXRNYXNrOmZ1bmN0aW9uKFZhKXtMYT09PVZhfHxqYXx8KGEuY29sb3JNYXNrKFZhLFZhLFZhLFZhKSxMYT1WYSl9LHNldExvY2tlZDpmdW5jdGlvbihWYSl7amE9VmF9LHNldENsZWFyOmZ1bmN0aW9uKFZhLGliLGtiLFFhLGViKXshMD09PWViJiYoVmEqPVFhLGliKj1RYSxrYio9UWEpO0dhLnNldChWYSxpYixrYixRYSk7CiExPT09bmIuZXF1YWxzKEdhKSYmKGEuY2xlYXJDb2xvcihWYSxpYixrYixRYSksbmIuY29weShHYSkpfSxyZXNldDpmdW5jdGlvbigpe2phPSExO0xhPW51bGw7bmIuc2V0KC0xLDAsMCwwKX19fSxXPW5ldyBmdW5jdGlvbigpe3ZhciBqYT0hMSxHYT1udWxsLExhPW51bGwsbmI9bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbihWYSl7VmE/eigyOTI5KTpFKDI5MjkpfSxzZXRNYXNrOmZ1bmN0aW9uKFZhKXtHYT09PVZhfHxqYXx8KGEuZGVwdGhNYXNrKFZhKSxHYT1WYSl9LHNldEZ1bmM6ZnVuY3Rpb24oVmEpe2lmKExhIT09VmEpe2lmKFZhKXN3aXRjaChWYSl7Y2FzZSAwOmEuZGVwdGhGdW5jKDUxMik7YnJlYWs7Y2FzZSAxOmEuZGVwdGhGdW5jKDUxOSk7YnJlYWs7Y2FzZSAyOmEuZGVwdGhGdW5jKDUxMyk7YnJlYWs7Y2FzZSAzOmEuZGVwdGhGdW5jKDUxNSk7YnJlYWs7Y2FzZSA0OmEuZGVwdGhGdW5jKDUxNCk7YnJlYWs7Y2FzZSA1OmEuZGVwdGhGdW5jKDUxOCk7YnJlYWs7Y2FzZSA2OmEuZGVwdGhGdW5jKDUxNik7CmJyZWFrO2Nhc2UgNzphLmRlcHRoRnVuYyg1MTcpO2JyZWFrO2RlZmF1bHQ6YS5kZXB0aEZ1bmMoNTE1KX1lbHNlIGEuZGVwdGhGdW5jKDUxNSk7TGE9VmF9fSxzZXRMb2NrZWQ6ZnVuY3Rpb24oVmEpe2phPVZhfSxzZXRDbGVhcjpmdW5jdGlvbihWYSl7bmIhPT1WYSYmKGEuY2xlYXJEZXB0aChWYSksbmI9VmEpfSxyZXNldDpmdW5jdGlvbigpe2phPSExO25iPUxhPUdhPW51bGx9fX0saGE9bmV3IGZ1bmN0aW9uKCl7dmFyIGphPSExLEdhPW51bGwsTGE9bnVsbCxuYj1udWxsLFZhPW51bGwsaWI9bnVsbCxrYj1udWxsLFFhPW51bGwsZWI9bnVsbDtyZXR1cm57c2V0VGVzdDpmdW5jdGlvbihtYil7amF8fChtYj96KDI5NjApOkUoMjk2MCkpfSxzZXRNYXNrOmZ1bmN0aW9uKG1iKXtHYT09PW1ifHxqYXx8KGEuc3RlbmNpbE1hc2sobWIpLEdhPW1iKX0sc2V0RnVuYzpmdW5jdGlvbihtYixwYixzYil7aWYoTGEhPT1tYnx8bmIhPT1wYnx8VmEhPT1zYilhLnN0ZW5jaWxGdW5jKG1iLHBiLApzYiksTGE9bWIsbmI9cGIsVmE9c2J9LHNldE9wOmZ1bmN0aW9uKG1iLHBiLHNiKXtpZihpYiE9PW1ifHxrYiE9PXBifHxRYSE9PXNiKWEuc3RlbmNpbE9wKG1iLHBiLHNiKSxpYj1tYixrYj1wYixRYT1zYn0sc2V0TG9ja2VkOmZ1bmN0aW9uKG1iKXtqYT1tYn0sc2V0Q2xlYXI6ZnVuY3Rpb24obWIpe2ViIT09bWImJihhLmNsZWFyU3RlbmNpbChtYiksZWI9bWIpfSxyZXNldDpmdW5jdGlvbigpe2phPSExO2ViPVFhPWtiPWliPVZhPW5iPUxhPUdhPW51bGx9fX0sZmE9YS5nZXRQYXJhbWV0ZXIoMzQ5MjEpLHJhPW5ldyBVaW50OEFycmF5KGZhKSxwYT1uZXcgVWludDhBcnJheShmYSkscWE9bmV3IFVpbnQ4QXJyYXkoZmEpLHVhPXt9LG9hPW51bGwsdGE9bnVsbCxCYT1udWxsLFRhPW51bGwsVWE9bnVsbCxDYT1udWxsLEhhPW51bGwsRGE9bnVsbCxNYT1udWxsLGRiPW51bGwsdGI9ITEsS2E9bnVsbCxiYj1udWxsLGpiPW51bGwsRWI9bnVsbCx4Yj1udWxsLGlhPWEuZ2V0UGFyYW1ldGVyKDM1NjYxKSwKbmE9ITE7ZmE9MDtmYT1hLmdldFBhcmFtZXRlcig3OTM4KTstMSE9PWZhLmluZGV4T2YoIldlYkdMIik/KGZhPXBhcnNlRmxvYXQoL15XZWJHTCAoWzAtOV0pLy5leGVjKGZhKVsxXSksbmE9MTw9ZmEpOi0xIT09ZmEuaW5kZXhPZigiT3BlbkdMIEVTIikmJihmYT1wYXJzZUZsb2F0KC9eT3BlbkdMIEVTIChbMC05XSkvLmV4ZWMoZmEpWzFdKSxuYT0yPD1mYSk7dmFyIHphPW51bGwsSmE9e30sWWE9bmV3IHAsTmE9bmV3IHAsY2I9e307Y2JbMzU1M109cigzNTUzLDM1NTMsMSk7Y2JbMzQwNjddPXIoMzQwNjcsMzQwNjksNik7Vi5zZXRDbGVhcigwLDAsMCwxKTtXLnNldENsZWFyKDEpO2hhLnNldENsZWFyKDApO3ooMjkyOSk7Vy5zZXRGdW5jKDMpO0ooITEpO1AoMSk7eigyODg0KTtHKDApO3JldHVybntidWZmZXJzOntjb2xvcjpWLGRlcHRoOlcsc3RlbmNpbDpoYX0saW5pdEF0dHJpYnV0ZXM6ZnVuY3Rpb24oKXtmb3IodmFyIGphPTAsR2E9cmEubGVuZ3RoO2phPEdhO2phKyspcmFbamFdPQowfSxlbmFibGVBdHRyaWJ1dGU6ZnVuY3Rpb24oamEpe3YoamEsMCl9LGVuYWJsZUF0dHJpYnV0ZUFuZERpdmlzb3I6dixkaXNhYmxlVW51c2VkQXR0cmlidXRlczpmdW5jdGlvbigpe2Zvcih2YXIgamE9MCxHYT1wYS5sZW5ndGg7amEhPT1HYTsrK2phKXBhW2phXSE9PXJhW2phXSYmKGEuZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGphKSxwYVtqYV09MCl9LGVuYWJsZTp6LGRpc2FibGU6RSxnZXRDb21wcmVzc2VkVGV4dHVyZUZvcm1hdHM6ZnVuY3Rpb24oKXtpZihudWxsPT09b2EmJihvYT1bXSxjLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX3B2cnRjIil8fGMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpfHxjLmdldCgiV0VCR0xfY29tcHJlc3NlZF90ZXh0dXJlX2V0YzEiKXx8Yy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIikpKWZvcih2YXIgamE9YS5nZXRQYXJhbWV0ZXIoMzQ0NjcpLEdhPTA7R2E8amEubGVuZ3RoO0dhKyspb2EucHVzaChqYVtHYV0pOwpyZXR1cm4gb2F9LHVzZVByb2dyYW06ZnVuY3Rpb24oamEpe3JldHVybiB0YSE9PWphPyhhLnVzZVByb2dyYW0oamEpLHRhPWphLCEwKTohMX0sc2V0QmxlbmRpbmc6RyxzZXRNYXRlcmlhbDpmdW5jdGlvbihqYSxHYSl7Mj09PWphLnNpZGU/RSgyODg0KTp6KDI4ODQpO3ZhciBMYT0xPT09amEuc2lkZTtHYSYmKExhPSFMYSk7SihMYSk7MT09PWphLmJsZW5kaW5nJiYhMT09PWphLnRyYW5zcGFyZW50P0coMCk6RyhqYS5ibGVuZGluZyxqYS5ibGVuZEVxdWF0aW9uLGphLmJsZW5kU3JjLGphLmJsZW5kRHN0LGphLmJsZW5kRXF1YXRpb25BbHBoYSxqYS5ibGVuZFNyY0FscGhhLGphLmJsZW5kRHN0QWxwaGEsamEucHJlbXVsdGlwbGllZEFscGhhKTtXLnNldEZ1bmMoamEuZGVwdGhGdW5jKTtXLnNldFRlc3QoamEuZGVwdGhUZXN0KTtXLnNldE1hc2soamEuZGVwdGhXcml0ZSk7Vi5zZXRNYXNrKGphLmNvbG9yV3JpdGUpO0dhPWphLnN0ZW5jaWxXcml0ZTtoYS5zZXRUZXN0KEdhKTtHYSYmCihoYS5zZXRGdW5jKGphLnN0ZW5jaWxGdW5jLGphLnN0ZW5jaWxSZWYsamEuc3RlbmNpbE1hc2spLGhhLnNldE9wKGphLnN0ZW5jaWxGYWlsLGphLnN0ZW5jaWxaRmFpbCxqYS5zdGVuY2lsWlBhc3MpKTtSKGphLnBvbHlnb25PZmZzZXQsamEucG9seWdvbk9mZnNldEZhY3RvcixqYS5wb2x5Z29uT2Zmc2V0VW5pdHMpfSxzZXRGbGlwU2lkZWQ6SixzZXRDdWxsRmFjZTpQLHNldExpbmVXaWR0aDpmdW5jdGlvbihqYSl7amEhPT1qYiYmKG5hJiZhLmxpbmVXaWR0aChqYSksamI9amEpfSxzZXRQb2x5Z29uT2Zmc2V0OlIsc2V0U2Npc3NvclRlc3Q6ZnVuY3Rpb24oamEpe2phP3ooMzA4OSk6RSgzMDg5KX0sYWN0aXZlVGV4dHVyZTpTLGJpbmRUZXh0dXJlOmZ1bmN0aW9uKGphLEdhKXtudWxsPT09emEmJlMoKTt2YXIgTGE9SmFbemFdO3ZvaWQgMD09PUxhJiYoTGE9e3R5cGU6dm9pZCAwLHRleHR1cmU6dm9pZCAwfSxKYVt6YV09TGEpO2lmKExhLnR5cGUhPT1qYXx8TGEudGV4dHVyZSE9PQpHYSlhLmJpbmRUZXh0dXJlKGphLEdhfHxjYltqYV0pLExhLnR5cGU9amEsTGEudGV4dHVyZT1HYX0sY29tcHJlc3NlZFRleEltYWdlMkQ6ZnVuY3Rpb24oKXt0cnl7YS5jb21wcmVzc2VkVGV4SW1hZ2UyRC5hcHBseShhLGFyZ3VtZW50cyl9Y2F0Y2goamEpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixqYSl9fSx0ZXhJbWFnZTJEOmZ1bmN0aW9uKCl7dHJ5e2EudGV4SW1hZ2UyRC5hcHBseShhLGFyZ3VtZW50cyl9Y2F0Y2goamEpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixqYSl9fSx0ZXhJbWFnZTNEOmZ1bmN0aW9uKCl7dHJ5e2EudGV4SW1hZ2UzRC5hcHBseShhLGFyZ3VtZW50cyl9Y2F0Y2goamEpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMU3RhdGU6IixqYSl9fSxzY2lzc29yOmZ1bmN0aW9uKGphKXshMT09PVlhLmVxdWFscyhqYSkmJihhLnNjaXNzb3IoamEueCxqYS55LGphLnosamEudyksWWEuY29weShqYSkpfSx2aWV3cG9ydDpmdW5jdGlvbihqYSl7ITE9PT0KTmEuZXF1YWxzKGphKSYmKGEudmlld3BvcnQoamEueCxqYS55LGphLnosamEudyksTmEuY29weShqYSkpfSxyZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgamE9MDtqYTxwYS5sZW5ndGg7amErKykxPT09cGFbamFdJiYoYS5kaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoamEpLHBhW2phXT0wKTt1YT17fTt6YT1vYT1udWxsO0phPXt9O2JiPUthPVRhPXRhPW51bGw7Vi5yZXNldCgpO1cucmVzZXQoKTtoYS5yZXNldCgpfX19ZnVuY3Rpb24gV2woYSxjLGUsZyxyLHYseil7ZnVuY3Rpb24gRShpYSxuYSl7cmV0dXJuIGJiP25ldyBPZmZzY3JlZW5DYW52YXMoaWEsbmEpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImNhbnZhcyIpfWZ1bmN0aW9uIEcoaWEsbmEsemEsSmEpe3ZhciBZYT0xO2lmKGlhLndpZHRoPkphfHxpYS5oZWlnaHQ+SmEpWWE9SmEvTWF0aC5tYXgoaWEud2lkdGgsaWEuaGVpZ2h0KTtpZigxPllhfHwhMD09PW5hKXtpZigidW5kZWZpbmVkIiE9PQp0eXBlb2YgSFRNTEltYWdlRWxlbWVudCYmaWEgaW5zdGFuY2VvZiBIVE1MSW1hZ2VFbGVtZW50fHwidW5kZWZpbmVkIiE9PXR5cGVvZiBIVE1MQ2FudmFzRWxlbWVudCYmaWEgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudHx8InVuZGVmaW5lZCIhPT10eXBlb2YgSW1hZ2VCaXRtYXAmJmlhIGluc3RhbmNlb2YgSW1hZ2VCaXRtYXApcmV0dXJuIEphPW5hP2hiLmZsb29yUG93ZXJPZlR3bzpNYXRoLmZsb29yLG5hPUphKFlhKmlhLndpZHRoKSxZYT1KYShZYSppYS5oZWlnaHQpLHZvaWQgMD09PUthJiYoS2E9RShuYSxZYSkpLHphPXphP0UobmEsWWEpOkthLHphLndpZHRoPW5hLHphLmhlaWdodD1ZYSx6YS5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShpYSwwLDAsbmEsWWEpLGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBoYXMgYmVlbiByZXNpemVkIGZyb20gKCIraWEud2lkdGgrIngiK2lhLmhlaWdodCsiKSB0byAoIituYSsieCIrWWErIikuIiksCnphOyJkYXRhImluIGlhJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEltYWdlIGluIERhdGFUZXh0dXJlIGlzIHRvbyBiaWcgKCIraWEud2lkdGgrIngiK2lhLmhlaWdodCsiKS4iKX1yZXR1cm4gaWF9ZnVuY3Rpb24gSihpYSl7cmV0dXJuIGhiLmlzUG93ZXJPZlR3byhpYS53aWR0aCkmJmhiLmlzUG93ZXJPZlR3byhpYS5oZWlnaHQpfWZ1bmN0aW9uIFAoaWEpe3JldHVybiByLmlzV2ViR0wyPyExOjEwMDEhPT1pYS53cmFwU3x8MTAwMSE9PWlhLndyYXBUfHwxMDAzIT09aWEubWluRmlsdGVyJiYxMDA2IT09aWEubWluRmlsdGVyfWZ1bmN0aW9uIFIoaWEsbmEpe3JldHVybiBpYS5nZW5lcmF0ZU1pcG1hcHMmJm5hJiYxMDAzIT09aWEubWluRmlsdGVyJiYxMDA2IT09aWEubWluRmlsdGVyfWZ1bmN0aW9uIFMoaWEsbmEsemEsSmEpe2EuZ2VuZXJhdGVNaXBtYXAoaWEpO2cuZ2V0KG5hKS5fX21heE1pcExldmVsPU1hdGgubG9nKE1hdGgubWF4KHphLEphKSkqTWF0aC5MT0cyRX0KZnVuY3Rpb24gVihpYSxuYSl7aWYoIXIuaXNXZWJHTDIpcmV0dXJuIGlhO3ZhciB6YT1pYTs2NDAzPT09aWEmJig1MTI2PT09bmEmJih6YT0zMzMyNiksNTEzMT09PW5hJiYoemE9MzMzMjUpLDUxMjE9PT1uYSYmKHphPTMzMzIxKSk7NjQwNz09PWlhJiYoNTEyNj09PW5hJiYoemE9MzQ4MzcpLDUxMzE9PT1uYSYmKHphPTM0ODQzKSw1MTIxPT09bmEmJih6YT0zMjg0OSkpOzY0MDg9PT1pYSYmKDUxMjY9PT1uYSYmKHphPTM0ODM2KSw1MTMxPT09bmEmJih6YT0zNDg0MiksNTEyMT09PW5hJiYoemE9MzI4NTYpKTszMzMyNT09PXphfHwzMzMyNj09PXphfHwzNDg0Mj09PXphfHwzNDgzNj09PXphP2MuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6KDM0ODQzPT09emF8fDM0ODM3PT09emEpJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IEZsb2F0aW5nIHBvaW50IHRleHR1cmVzIHdpdGggUkdCIGZvcm1hdCBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIFJHQkEgaW5zdGVhZC4iKTsKcmV0dXJuIHphfWZ1bmN0aW9uIFcoaWEpe3JldHVybiAxMDAzPT09aWF8fDEwMDQ9PT1pYXx8MTAwNT09PWlhPzk3Mjg6OTcyOX1mdW5jdGlvbiBoYShpYSl7aWE9aWEudGFyZ2V0O2lhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGhhKTtyYShpYSk7aWEuaXNWaWRlb1RleHR1cmUmJnRiLmRlbGV0ZShpYSk7ei5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiBmYShpYSl7aWE9aWEudGFyZ2V0O2lhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRpc3Bvc2UiLGZhKTtwYShpYSk7ei5tZW1vcnkudGV4dHVyZXMtLX1mdW5jdGlvbiByYShpYSl7dmFyIG5hPWcuZ2V0KGlhKTt2b2lkIDAhPT1uYS5fX3dlYmdsSW5pdCYmKGEuZGVsZXRlVGV4dHVyZShuYS5fX3dlYmdsVGV4dHVyZSksZy5yZW1vdmUoaWEpKX1mdW5jdGlvbiBwYShpYSl7dmFyIG5hPWcuZ2V0KGlhKSx6YT1nLmdldChpYS50ZXh0dXJlKTtpZihpYSl7dm9pZCAwIT09emEuX193ZWJnbFRleHR1cmUmJmEuZGVsZXRlVGV4dHVyZSh6YS5fX3dlYmdsVGV4dHVyZSk7CmlhLmRlcHRoVGV4dHVyZSYmaWEuZGVwdGhUZXh0dXJlLmRpc3Bvc2UoKTtpZihpYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSlmb3IoemE9MDs2PnphO3phKyspYS5kZWxldGVGcmFtZWJ1ZmZlcihuYS5fX3dlYmdsRnJhbWVidWZmZXJbemFdKSxuYS5fX3dlYmdsRGVwdGhidWZmZXImJmEuZGVsZXRlUmVuZGVyYnVmZmVyKG5hLl9fd2ViZ2xEZXB0aGJ1ZmZlclt6YV0pO2Vsc2UgYS5kZWxldGVGcmFtZWJ1ZmZlcihuYS5fX3dlYmdsRnJhbWVidWZmZXIpLG5hLl9fd2ViZ2xEZXB0aGJ1ZmZlciYmYS5kZWxldGVSZW5kZXJidWZmZXIobmEuX193ZWJnbERlcHRoYnVmZmVyKTtnLnJlbW92ZShpYS50ZXh0dXJlKTtnLnJlbW92ZShpYSl9fWZ1bmN0aW9uIHFhKGlhLG5hKXt2YXIgemE9Zy5nZXQoaWEpO2lhLmlzVmlkZW9UZXh0dXJlJiZkYihpYSk7aWYoMDxpYS52ZXJzaW9uJiZ6YS5fX3ZlcnNpb24hPT1pYS52ZXJzaW9uKXt2YXIgSmE9aWEuaW1hZ2U7aWYodm9pZCAwPT09SmEpY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBUZXh0dXJlIG1hcmtlZCBmb3IgdXBkYXRlIGJ1dCBpbWFnZSBpcyB1bmRlZmluZWQiKTsKZWxzZSBpZighMT09PUphLmNvbXBsZXRlKWNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBtYXJrZWQgZm9yIHVwZGF0ZSBidXQgaW1hZ2UgaXMgaW5jb21wbGV0ZSIpO2Vsc2V7VGEoemEsaWEsbmEpO3JldHVybn19ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K25hKTtlLmJpbmRUZXh0dXJlKDM1NTMsemEuX193ZWJnbFRleHR1cmUpfWZ1bmN0aW9uIHVhKGlhLG5hKXtpZig2PT09aWEuaW1hZ2UubGVuZ3RoKXt2YXIgemE9Zy5nZXQoaWEpO2lmKDA8aWEudmVyc2lvbiYmemEuX192ZXJzaW9uIT09aWEudmVyc2lvbil7QmEoemEsaWEpO2UuYWN0aXZlVGV4dHVyZSgzMzk4NCtuYSk7ZS5iaW5kVGV4dHVyZSgzNDA2Nyx6YS5fX3dlYmdsVGV4dHVyZSk7YS5waXhlbFN0b3JlaSgzNzQ0MCxpYS5mbGlwWSk7dmFyIEphPWlhJiZpYS5pc0NvbXByZXNzZWRUZXh0dXJlO25hPWlhLmltYWdlWzBdJiZpYS5pbWFnZVswXS5pc0RhdGFUZXh0dXJlO2Zvcih2YXIgWWE9W10sCk5hPTA7Nj5OYTtOYSsrKVlhW05hXT1KYXx8bmE/bmE/aWEuaW1hZ2VbTmFdLmltYWdlOmlhLmltYWdlW05hXTpHKGlhLmltYWdlW05hXSwhMSwhMCxyLm1heEN1YmVtYXBTaXplKTt2YXIgY2I9WWFbMF0samE9SihjYil8fHIuaXNXZWJHTDIsR2E9di5jb252ZXJ0KGlhLmZvcm1hdCksTGE9di5jb252ZXJ0KGlhLnR5cGUpLG5iPVYoR2EsTGEpO3RhKDM0MDY3LGlhLGphKTtpZihKYSl7Zm9yKE5hPTA7Nj5OYTtOYSsrKXt2YXIgVmE9WWFbTmFdLm1pcG1hcHM7Zm9yKEphPTA7SmE8VmEubGVuZ3RoO0phKyspe3ZhciBpYj1WYVtKYV07MTAyMyE9PWlhLmZvcm1hdCYmMTAyMiE9PWlhLmZvcm1hdD8tMTxlLmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpLmluZGV4T2YoR2EpP2UuY29tcHJlc3NlZFRleEltYWdlMkQoMzQwNjkrTmEsSmEsbmIsaWIud2lkdGgsaWIuaGVpZ2h0LDAsaWIuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAuc2V0VGV4dHVyZUN1YmUoKSIpOgplLnRleEltYWdlMkQoMzQwNjkrTmEsSmEsbmIsaWIud2lkdGgsaWIuaGVpZ2h0LDAsR2EsTGEsaWIuZGF0YSl9fXphLl9fbWF4TWlwTGV2ZWw9VmEubGVuZ3RoLTF9ZWxzZXtWYT1pYS5taXBtYXBzO2ZvcihOYT0wOzY+TmE7TmErKylpZihuYSlmb3IoZS50ZXhJbWFnZTJEKDM0MDY5K05hLDAsbmIsWWFbTmFdLndpZHRoLFlhW05hXS5oZWlnaHQsMCxHYSxMYSxZYVtOYV0uZGF0YSksSmE9MDtKYTxWYS5sZW5ndGg7SmErKylpYj1WYVtKYV0saWI9aWIuaW1hZ2VbTmFdLmltYWdlLGUudGV4SW1hZ2UyRCgzNDA2OStOYSxKYSsxLG5iLGliLndpZHRoLGliLmhlaWdodCwwLEdhLExhLGliLmRhdGEpO2Vsc2UgZm9yKGUudGV4SW1hZ2UyRCgzNDA2OStOYSwwLG5iLEdhLExhLFlhW05hXSksSmE9MDtKYTxWYS5sZW5ndGg7SmErKylpYj1WYVtKYV0sZS50ZXhJbWFnZTJEKDM0MDY5K05hLEphKzEsbmIsR2EsTGEsaWIuaW1hZ2VbTmFdKTt6YS5fX21heE1pcExldmVsPVZhLmxlbmd0aH1SKGlhLApqYSkmJlMoMzQwNjcsaWEsY2Iud2lkdGgsY2IuaGVpZ2h0KTt6YS5fX3ZlcnNpb249aWEudmVyc2lvbjtpZihpYS5vblVwZGF0ZSlpYS5vblVwZGF0ZShpYSl9ZWxzZSBlLmFjdGl2ZVRleHR1cmUoMzM5ODQrbmEpLGUuYmluZFRleHR1cmUoMzQwNjcsemEuX193ZWJnbFRleHR1cmUpfX1mdW5jdGlvbiBvYShpYSxuYSl7ZS5hY3RpdmVUZXh0dXJlKDMzOTg0K25hKTtlLmJpbmRUZXh0dXJlKDM0MDY3LGcuZ2V0KGlhKS5fX3dlYmdsVGV4dHVyZSl9ZnVuY3Rpb24gdGEoaWEsbmEsemEpe3phPyhhLnRleFBhcmFtZXRlcmkoaWEsMTAyNDIsdi5jb252ZXJ0KG5hLndyYXBTKSksYS50ZXhQYXJhbWV0ZXJpKGlhLDEwMjQzLHYuY29udmVydChuYS53cmFwVCkpLDMyODc5IT09aWEmJjM1ODY2IT09aWF8fGEudGV4UGFyYW1ldGVyaShpYSwzMjg4Mix2LmNvbnZlcnQobmEud3JhcFIpKSxhLnRleFBhcmFtZXRlcmkoaWEsMTAyNDAsdi5jb252ZXJ0KG5hLm1hZ0ZpbHRlcikpLGEudGV4UGFyYW1ldGVyaShpYSwKMTAyNDEsdi5jb252ZXJ0KG5hLm1pbkZpbHRlcikpKTooYS50ZXhQYXJhbWV0ZXJpKGlhLDEwMjQyLDMzMDcxKSxhLnRleFBhcmFtZXRlcmkoaWEsMTAyNDMsMzMwNzEpLDMyODc5IT09aWEmJjM1ODY2IT09aWF8fGEudGV4UGFyYW1ldGVyaShpYSwzMjg4MiwzMzA3MSksMTAwMT09PW5hLndyYXBTJiYxMDAxPT09bmEud3JhcFR8fGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogVGV4dHVyZSBpcyBub3QgcG93ZXIgb2YgdHdvLiBUZXh0dXJlLndyYXBTIGFuZCBUZXh0dXJlLndyYXBUIHNob3VsZCBiZSBzZXQgdG8gVEhSRUUuQ2xhbXBUb0VkZ2VXcmFwcGluZy4iKSxhLnRleFBhcmFtZXRlcmkoaWEsMTAyNDAsVyhuYS5tYWdGaWx0ZXIpKSxhLnRleFBhcmFtZXRlcmkoaWEsMTAyNDEsVyhuYS5taW5GaWx0ZXIpKSwxMDAzIT09bmEubWluRmlsdGVyJiYxMDA2IT09bmEubWluRmlsdGVyJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IFRleHR1cmUgaXMgbm90IHBvd2VyIG9mIHR3by4gVGV4dHVyZS5taW5GaWx0ZXIgc2hvdWxkIGJlIHNldCB0byBUSFJFRS5OZWFyZXN0RmlsdGVyIG9yIFRIUkVFLkxpbmVhckZpbHRlci4iKSk7CiEoemE9Yy5nZXQoIkVYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpKXx8MTAxNT09PW5hLnR5cGUmJm51bGw9PT1jLmdldCgiT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIil8fDEwMTY9PT1uYS50eXBlJiZudWxsPT09KHIuaXNXZWJHTDJ8fGMuZ2V0KCJPRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpKXx8ISgxPG5hLmFuaXNvdHJvcHl8fGcuZ2V0KG5hKS5fX2N1cnJlbnRBbmlzb3Ryb3B5KXx8KGEudGV4UGFyYW1ldGVyZihpYSx6YS5URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCxNYXRoLm1pbihuYS5hbmlzb3Ryb3B5LHIuZ2V0TWF4QW5pc290cm9weSgpKSksZy5nZXQobmEpLl9fY3VycmVudEFuaXNvdHJvcHk9bmEuYW5pc290cm9weSl9ZnVuY3Rpb24gQmEoaWEsbmEpe3ZvaWQgMD09PWlhLl9fd2ViZ2xJbml0JiYoaWEuX193ZWJnbEluaXQ9ITAsbmEuYWRkRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIsaGEpLGlhLl9fd2ViZ2xUZXh0dXJlPWEuY3JlYXRlVGV4dHVyZSgpLAp6Lm1lbW9yeS50ZXh0dXJlcysrKX1mdW5jdGlvbiBUYShpYSxuYSx6YSl7dmFyIEphPTM1NTM7bmEuaXNEYXRhVGV4dHVyZTJEQXJyYXkmJihKYT0zNTg2Nik7bmEuaXNEYXRhVGV4dHVyZTNEJiYoSmE9MzI4NzkpO0JhKGlhLG5hKTtlLmFjdGl2ZVRleHR1cmUoMzM5ODQremEpO2UuYmluZFRleHR1cmUoSmEsaWEuX193ZWJnbFRleHR1cmUpO2EucGl4ZWxTdG9yZWkoMzc0NDAsbmEuZmxpcFkpO2EucGl4ZWxTdG9yZWkoMzc0NDEsbmEucHJlbXVsdGlwbHlBbHBoYSk7YS5waXhlbFN0b3JlaSgzMzE3LG5hLnVucGFja0FsaWdubWVudCk7emE9UChuYSkmJiExPT09SihuYS5pbWFnZSk7emE9RyhuYS5pbWFnZSx6YSwhMSxyLm1heFRleHR1cmVTaXplKTt2YXIgWWE9Sih6YSl8fHIuaXNXZWJHTDIsTmE9di5jb252ZXJ0KG5hLmZvcm1hdCksY2I9di5jb252ZXJ0KG5hLnR5cGUpLGphPVYoTmEsY2IpO3RhKEphLG5hLFlhKTt2YXIgR2E9bmEubWlwbWFwcztpZihuYS5pc0RlcHRoVGV4dHVyZSl7amE9CjY0MDI7aWYoMTAxNT09PW5hLnR5cGUpe2lmKCFyLmlzV2ViR0wyKXRocm93IEVycm9yKCJGbG9hdCBEZXB0aCBUZXh0dXJlIG9ubHkgc3VwcG9ydGVkIGluIFdlYkdMMi4wIik7amE9MzYwMTJ9ZWxzZSByLmlzV2ViR0wyJiYoamE9MzMxODkpOzEwMjY9PT1uYS5mb3JtYXQmJjY0MDI9PT1qYSYmMTAxMiE9PW5hLnR5cGUmJjEwMTQhPT1uYS50eXBlJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRTaG9ydFR5cGUgb3IgVW5zaWduZWRJbnRUeXBlIGZvciBEZXB0aEZvcm1hdCBEZXB0aFRleHR1cmUuIiksbmEudHlwZT0xMDEyLGNiPXYuY29udmVydChuYS50eXBlKSk7MTAyNz09PW5hLmZvcm1hdCYmKGphPTM0MDQxLDEwMjAhPT1uYS50eXBlJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBVc2UgVW5zaWduZWRJbnQyNDhUeXBlIGZvciBEZXB0aFN0ZW5jaWxGb3JtYXQgRGVwdGhUZXh0dXJlLiIpLG5hLnR5cGU9MTAyMCxjYj0Kdi5jb252ZXJ0KG5hLnR5cGUpKSk7ZS50ZXhJbWFnZTJEKDM1NTMsMCxqYSx6YS53aWR0aCx6YS5oZWlnaHQsMCxOYSxjYixudWxsKX1lbHNlIGlmKG5hLmlzRGF0YVRleHR1cmUpaWYoMDxHYS5sZW5ndGgmJllhKXtmb3IodmFyIExhPTAsbmI9R2EubGVuZ3RoO0xhPG5iO0xhKyspSmE9R2FbTGFdLGUudGV4SW1hZ2UyRCgzNTUzLExhLGphLEphLndpZHRoLEphLmhlaWdodCwwLE5hLGNiLEphLmRhdGEpO25hLmdlbmVyYXRlTWlwbWFwcz0hMTtpYS5fX21heE1pcExldmVsPUdhLmxlbmd0aC0xfWVsc2UgZS50ZXhJbWFnZTJEKDM1NTMsMCxqYSx6YS53aWR0aCx6YS5oZWlnaHQsMCxOYSxjYix6YS5kYXRhKSxpYS5fX21heE1pcExldmVsPTA7ZWxzZSBpZihuYS5pc0NvbXByZXNzZWRUZXh0dXJlKXtMYT0wO2ZvcihuYj1HYS5sZW5ndGg7TGE8bmI7TGErKylKYT1HYVtMYV0sMTAyMyE9PW5hLmZvcm1hdCYmMTAyMiE9PW5hLmZvcm1hdD8tMTxlLmdldENvbXByZXNzZWRUZXh0dXJlRm9ybWF0cygpLmluZGV4T2YoTmEpPwplLmNvbXByZXNzZWRUZXhJbWFnZTJEKDM1NTMsTGEsamEsSmEud2lkdGgsSmEuaGVpZ2h0LDAsSmEuZGF0YSk6Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBBdHRlbXB0IHRvIGxvYWQgdW5zdXBwb3J0ZWQgY29tcHJlc3NlZCB0ZXh0dXJlIGZvcm1hdCBpbiAudXBsb2FkVGV4dHVyZSgpIik6ZS50ZXhJbWFnZTJEKDM1NTMsTGEsamEsSmEud2lkdGgsSmEuaGVpZ2h0LDAsTmEsY2IsSmEuZGF0YSk7aWEuX19tYXhNaXBMZXZlbD1HYS5sZW5ndGgtMX1lbHNlIGlmKG5hLmlzRGF0YVRleHR1cmUyREFycmF5KWUudGV4SW1hZ2UzRCgzNTg2NiwwLGphLHphLndpZHRoLHphLmhlaWdodCx6YS5kZXB0aCwwLE5hLGNiLHphLmRhdGEpLGlhLl9fbWF4TWlwTGV2ZWw9MDtlbHNlIGlmKG5hLmlzRGF0YVRleHR1cmUzRCllLnRleEltYWdlM0QoMzI4NzksMCxqYSx6YS53aWR0aCx6YS5oZWlnaHQsemEuZGVwdGgsMCxOYSxjYix6YS5kYXRhKSxpYS5fX21heE1pcExldmVsPTA7ZWxzZSBpZigwPApHYS5sZW5ndGgmJllhKXtMYT0wO2ZvcihuYj1HYS5sZW5ndGg7TGE8bmI7TGErKylKYT1HYVtMYV0sZS50ZXhJbWFnZTJEKDM1NTMsTGEsamEsTmEsY2IsSmEpO25hLmdlbmVyYXRlTWlwbWFwcz0hMTtpYS5fX21heE1pcExldmVsPUdhLmxlbmd0aC0xfWVsc2UgZS50ZXhJbWFnZTJEKDM1NTMsMCxqYSxOYSxjYix6YSksaWEuX19tYXhNaXBMZXZlbD0wO1IobmEsWWEpJiZTKDM1NTMsbmEsemEud2lkdGgsemEuaGVpZ2h0KTtpYS5fX3ZlcnNpb249bmEudmVyc2lvbjtpZihuYS5vblVwZGF0ZSluYS5vblVwZGF0ZShuYSl9ZnVuY3Rpb24gVWEoaWEsbmEsemEsSmEpe3ZhciBZYT12LmNvbnZlcnQobmEudGV4dHVyZS5mb3JtYXQpLE5hPXYuY29udmVydChuYS50ZXh0dXJlLnR5cGUpLGNiPVYoWWEsTmEpO2UudGV4SW1hZ2UyRChKYSwwLGNiLG5hLndpZHRoLG5hLmhlaWdodCwwLFlhLE5hLG51bGwpO2EuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGlhKTthLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLAp6YSxKYSxnLmdldChuYS50ZXh0dXJlKS5fX3dlYmdsVGV4dHVyZSwwKTthLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1mdW5jdGlvbiBDYShpYSxuYSx6YSl7YS5iaW5kUmVuZGVyYnVmZmVyKDM2MTYxLGlhKTtpZihuYS5kZXB0aEJ1ZmZlciYmIW5hLnN0ZW5jaWxCdWZmZXIpemE/KHphPU1hKG5hKSxhLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSx6YSwzMzE4OSxuYS53aWR0aCxuYS5oZWlnaHQpKTphLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsMzMxODksbmEud2lkdGgsbmEuaGVpZ2h0KSxhLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKDM2MTYwLDM2MDk2LDM2MTYxLGlhKTtlbHNlIGlmKG5hLmRlcHRoQnVmZmVyJiZuYS5zdGVuY2lsQnVmZmVyKXphPyh6YT1NYShuYSksYS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsemEsMzUwNTYsbmEud2lkdGgsbmEuaGVpZ2h0KSk6YS5yZW5kZXJidWZmZXJTdG9yYWdlKDM2MTYxLDM0MDQxLApuYS53aWR0aCxuYS5oZWlnaHQpLGEuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzMzMDYsMzYxNjEsaWEpO2Vsc2V7aWE9di5jb252ZXJ0KG5hLnRleHR1cmUuZm9ybWF0KTt2YXIgSmE9di5jb252ZXJ0KG5hLnRleHR1cmUudHlwZSk7aWE9VihpYSxKYSk7emE/KHphPU1hKG5hKSxhLnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSgzNjE2MSx6YSxpYSxuYS53aWR0aCxuYS5oZWlnaHQpKTphLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoMzYxNjEsaWEsbmEud2lkdGgsbmEuaGVpZ2h0KX1hLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCl9ZnVuY3Rpb24gSGEoaWEsbmEpe2lmKG5hJiZuYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSl0aHJvdyBFcnJvcigiRGVwdGggVGV4dHVyZSB3aXRoIGN1YmUgcmVuZGVyIHRhcmdldHMgaXMgbm90IHN1cHBvcnRlZCIpO2EuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGlhKTtpZighbmEuZGVwdGhUZXh0dXJlfHwhbmEuZGVwdGhUZXh0dXJlLmlzRGVwdGhUZXh0dXJlKXRocm93IEVycm9yKCJyZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuRGVwdGhUZXh0dXJlIik7CmcuZ2V0KG5hLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmUmJm5hLmRlcHRoVGV4dHVyZS5pbWFnZS53aWR0aD09PW5hLndpZHRoJiZuYS5kZXB0aFRleHR1cmUuaW1hZ2UuaGVpZ2h0PT09bmEuaGVpZ2h0fHwobmEuZGVwdGhUZXh0dXJlLmltYWdlLndpZHRoPW5hLndpZHRoLG5hLmRlcHRoVGV4dHVyZS5pbWFnZS5oZWlnaHQ9bmEuaGVpZ2h0LG5hLmRlcHRoVGV4dHVyZS5uZWVkc1VwZGF0ZT0hMCk7cWEobmEuZGVwdGhUZXh0dXJlLDApO2lhPWcuZ2V0KG5hLmRlcHRoVGV4dHVyZSkuX193ZWJnbFRleHR1cmU7aWYoMTAyNj09PW5hLmRlcHRoVGV4dHVyZS5mb3JtYXQpYS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzNjA5NiwzNTUzLGlhLDApO2Vsc2UgaWYoMTAyNz09PW5hLmRlcHRoVGV4dHVyZS5mb3JtYXQpYS5mcmFtZWJ1ZmZlclRleHR1cmUyRCgzNjE2MCwzMzMwNiwzNTUzLGlhLDApO2Vsc2UgdGhyb3cgRXJyb3IoIlVua25vd24gZGVwdGhUZXh0dXJlIGZvcm1hdCIpOwp9ZnVuY3Rpb24gRGEoaWEpe3ZhciBuYT1nLmdldChpYSksemE9ITA9PT1pYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZTtpZihpYS5kZXB0aFRleHR1cmUpe2lmKHphKXRocm93IEVycm9yKCJ0YXJnZXQuZGVwdGhUZXh0dXJlIG5vdCBzdXBwb3J0ZWQgaW4gQ3ViZSByZW5kZXIgdGFyZ2V0cyIpO0hhKG5hLl9fd2ViZ2xGcmFtZWJ1ZmZlcixpYSl9ZWxzZSBpZih6YSlmb3IobmEuX193ZWJnbERlcHRoYnVmZmVyPVtdLHphPTA7Nj56YTt6YSsrKWEuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG5hLl9fd2ViZ2xGcmFtZWJ1ZmZlclt6YV0pLG5hLl9fd2ViZ2xEZXB0aGJ1ZmZlclt6YV09YS5jcmVhdGVSZW5kZXJidWZmZXIoKSxDYShuYS5fX3dlYmdsRGVwdGhidWZmZXJbemFdLGlhKTtlbHNlIGEuYmluZEZyYW1lYnVmZmVyKDM2MTYwLG5hLl9fd2ViZ2xGcmFtZWJ1ZmZlciksbmEuX193ZWJnbERlcHRoYnVmZmVyPWEuY3JlYXRlUmVuZGVyYnVmZmVyKCksQ2EobmEuX193ZWJnbERlcHRoYnVmZmVyLAppYSk7YS5iaW5kRnJhbWVidWZmZXIoMzYxNjAsbnVsbCl9ZnVuY3Rpb24gTWEoaWEpe3JldHVybiByLmlzV2ViR0wyJiZpYS5pc1dlYkdMTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ/TWF0aC5taW4oci5tYXhTYW1wbGVzLGlhLnNhbXBsZXMpOjB9ZnVuY3Rpb24gZGIoaWEpe3ZhciBuYT16LnJlbmRlci5mcmFtZTt0Yi5nZXQoaWEpIT09bmEmJih0Yi5zZXQoaWEsbmEpLGlhLnVwZGF0ZSgpKX12YXIgdGI9bmV3IFdlYWtNYXAsS2EsYmI9InVuZGVmaW5lZCIhPT10eXBlb2YgT2Zmc2NyZWVuQ2FudmFzLGpiPTAsRWI9ITEseGI9ITE7dGhpcy5hbGxvY2F0ZVRleHR1cmVVbml0PWZ1bmN0aW9uKCl7dmFyIGlhPWpiO2lhPj1yLm1heFRleHR1cmVzJiZjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMVGV4dHVyZXM6IFRyeWluZyB0byB1c2UgIitpYSsiIHRleHR1cmUgdW5pdHMgd2hpbGUgdGhpcyBHUFUgc3VwcG9ydHMgb25seSAiK3IubWF4VGV4dHVyZXMpO2piKz0xO3JldHVybiBpYX07dGhpcy5yZXNldFRleHR1cmVVbml0cz0KZnVuY3Rpb24oKXtqYj0wfTt0aGlzLnNldFRleHR1cmUyRD1xYTt0aGlzLnNldFRleHR1cmUyREFycmF5PWZ1bmN0aW9uKGlhLG5hKXt2YXIgemE9Zy5nZXQoaWEpOzA8aWEudmVyc2lvbiYmemEuX192ZXJzaW9uIT09aWEudmVyc2lvbj9UYSh6YSxpYSxuYSk6KGUuYWN0aXZlVGV4dHVyZSgzMzk4NCtuYSksZS5iaW5kVGV4dHVyZSgzNTg2Nix6YS5fX3dlYmdsVGV4dHVyZSkpfTt0aGlzLnNldFRleHR1cmUzRD1mdW5jdGlvbihpYSxuYSl7dmFyIHphPWcuZ2V0KGlhKTswPGlhLnZlcnNpb24mJnphLl9fdmVyc2lvbiE9PWlhLnZlcnNpb24/VGEoemEsaWEsbmEpOihlLmFjdGl2ZVRleHR1cmUoMzM5ODQrbmEpLGUuYmluZFRleHR1cmUoMzI4NzksemEuX193ZWJnbFRleHR1cmUpKX07dGhpcy5zZXRUZXh0dXJlQ3ViZT11YTt0aGlzLnNldFRleHR1cmVDdWJlRHluYW1pYz1vYTt0aGlzLnNldHVwUmVuZGVyVGFyZ2V0PWZ1bmN0aW9uKGlhKXt2YXIgbmE9Zy5nZXQoaWEpLHphPWcuZ2V0KGlhLnRleHR1cmUpOwppYS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIixmYSk7emEuX193ZWJnbFRleHR1cmU9YS5jcmVhdGVUZXh0dXJlKCk7ei5tZW1vcnkudGV4dHVyZXMrKzt2YXIgSmE9ITA9PT1pYS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSxZYT0hMD09PWlhLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCxOYT1KKGlhKXx8ci5pc1dlYkdMMjtpZihKYSlmb3IobmEuX193ZWJnbEZyYW1lYnVmZmVyPVtdLFlhPTA7Nj5ZYTtZYSsrKW5hLl9fd2ViZ2xGcmFtZWJ1ZmZlcltZYV09YS5jcmVhdGVGcmFtZWJ1ZmZlcigpO2Vsc2UgaWYobmEuX193ZWJnbEZyYW1lYnVmZmVyPWEuY3JlYXRlRnJhbWVidWZmZXIoKSxZYSlpZihyLmlzV2ViR0wyKXtuYS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXI9YS5jcmVhdGVGcmFtZWJ1ZmZlcigpO25hLl9fd2ViZ2xDb2xvclJlbmRlcmJ1ZmZlcj1hLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpO2EuYmluZFJlbmRlcmJ1ZmZlcigzNjE2MSxuYS5fX3dlYmdsQ29sb3JSZW5kZXJidWZmZXIpOwpZYT12LmNvbnZlcnQoaWEudGV4dHVyZS5mb3JtYXQpO3ZhciBjYj12LmNvbnZlcnQoaWEudGV4dHVyZS50eXBlKTtZYT1WKFlhLGNiKTtjYj1NYShpYSk7YS5yZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoMzYxNjEsY2IsWWEsaWEud2lkdGgsaWEuaGVpZ2h0KTthLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxuYS5fX3dlYmdsTXVsdGlzYW1wbGVkRnJhbWVidWZmZXIpO2EuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoMzYxNjAsMzYwNjQsMzYxNjEsbmEuX193ZWJnbENvbG9yUmVuZGVyYnVmZmVyKTthLmJpbmRSZW5kZXJidWZmZXIoMzYxNjEsbnVsbCk7aWEuZGVwdGhCdWZmZXImJihuYS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXI9YS5jcmVhdGVSZW5kZXJidWZmZXIoKSxDYShuYS5fX3dlYmdsRGVwdGhSZW5kZXJidWZmZXIsaWEsITApKTthLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxudWxsKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpOwppZihKYSl7ZS5iaW5kVGV4dHVyZSgzNDA2Nyx6YS5fX3dlYmdsVGV4dHVyZSk7dGEoMzQwNjcsaWEudGV4dHVyZSxOYSk7Zm9yKFlhPTA7Nj5ZYTtZYSsrKVVhKG5hLl9fd2ViZ2xGcmFtZWJ1ZmZlcltZYV0saWEsMzYwNjQsMzQwNjkrWWEpO1IoaWEudGV4dHVyZSxOYSkmJlMoMzQwNjcsaWEudGV4dHVyZSxpYS53aWR0aCxpYS5oZWlnaHQpO2UuYmluZFRleHR1cmUoMzQwNjcsbnVsbCl9ZWxzZSBlLmJpbmRUZXh0dXJlKDM1NTMsemEuX193ZWJnbFRleHR1cmUpLHRhKDM1NTMsaWEudGV4dHVyZSxOYSksVWEobmEuX193ZWJnbEZyYW1lYnVmZmVyLGlhLDM2MDY0LDM1NTMpLFIoaWEudGV4dHVyZSxOYSkmJlMoMzU1MyxpYS50ZXh0dXJlLGlhLndpZHRoLGlhLmhlaWdodCksZS5iaW5kVGV4dHVyZSgzNTUzLG51bGwpO2lhLmRlcHRoQnVmZmVyJiZEYShpYSl9O3RoaXMudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwPWZ1bmN0aW9uKGlhKXt2YXIgbmE9aWEudGV4dHVyZSx6YT1KKGlhKXx8CnIuaXNXZWJHTDI7aWYoUihuYSx6YSkpe3phPWlhLmlzV2ViR0xSZW5kZXJUYXJnZXRDdWJlPzM0MDY3OjM1NTM7dmFyIEphPWcuZ2V0KG5hKS5fX3dlYmdsVGV4dHVyZTtlLmJpbmRUZXh0dXJlKHphLEphKTtTKHphLG5hLGlhLndpZHRoLGlhLmhlaWdodCk7ZS5iaW5kVGV4dHVyZSh6YSxudWxsKX19O3RoaXMudXBkYXRlTXVsdGlzYW1wbGVSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oaWEpe2lmKGlhLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldClpZihyLmlzV2ViR0wyKXt2YXIgbmE9Zy5nZXQoaWEpO2EuYmluZEZyYW1lYnVmZmVyKDM2MDA4LG5hLl9fd2ViZ2xNdWx0aXNhbXBsZWRGcmFtZWJ1ZmZlcik7YS5iaW5kRnJhbWVidWZmZXIoMzYwMDksbmEuX193ZWJnbEZyYW1lYnVmZmVyKTtuYT1pYS53aWR0aDt2YXIgemE9aWEuaGVpZ2h0LEphPTE2Mzg0O2lhLmRlcHRoQnVmZmVyJiYoSmF8PTI1Nik7aWEuc3RlbmNpbEJ1ZmZlciYmKEphfD0xMDI0KTthLmJsaXRGcmFtZWJ1ZmZlcigwLAowLG5hLHphLDAsMCxuYSx6YSxKYSw5NzI4KX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldCBjYW4gb25seSBiZSB1c2VkIHdpdGggV2ViR0wyLiIpfTt0aGlzLnNhZmVTZXRUZXh0dXJlMkQ9ZnVuY3Rpb24oaWEsbmEpe2lhJiZpYS5pc1dlYkdMUmVuZGVyVGFyZ2V0JiYoITE9PT1FYiYmKGNvbnNvbGUud2FybigiVEhSRUUuV2ViR0xUZXh0dXJlcy5zYWZlU2V0VGV4dHVyZTJEOiBkb24ndCB1c2UgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLEViPSEwKSxpYT1pYS50ZXh0dXJlKTtxYShpYSxuYSl9O3RoaXMuc2FmZVNldFRleHR1cmVDdWJlPWZ1bmN0aW9uKGlhLG5hKXtpYSYmaWEuaXNXZWJHTFJlbmRlclRhcmdldEN1YmUmJighMT09PXhiJiYoY29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFRleHR1cmVzLnNhZmVTZXRUZXh0dXJlQ3ViZTogZG9uJ3QgdXNlIGN1YmUgcmVuZGVyIHRhcmdldHMgYXMgdGV4dHVyZXMuIFVzZSB0aGVpciAudGV4dHVyZSBwcm9wZXJ0eSBpbnN0ZWFkLiIpLAp4Yj0hMCksaWE9aWEudGV4dHVyZSk7aWEmJmlhLmlzQ3ViZVRleHR1cmV8fEFycmF5LmlzQXJyYXkoaWEuaW1hZ2UpJiY2PT09aWEuaW1hZ2UubGVuZ3RoP3VhKGlhLG5hKTpvYShpYSxuYSl9fWZ1bmN0aW9uIHdqKGEsYyxlKXtyZXR1cm57Y29udmVydDpmdW5jdGlvbihnKXtpZigxRTM9PT1nKXJldHVybiAxMDQ5NztpZigxMDAxPT09ZylyZXR1cm4gMzMwNzE7aWYoMTAwMj09PWcpcmV0dXJuIDMzNjQ4O2lmKDEwMDM9PT1nKXJldHVybiA5NzI4O2lmKDEwMDQ9PT1nKXJldHVybiA5OTg0O2lmKDEwMDU9PT1nKXJldHVybiA5OTg2O2lmKDEwMDY9PT1nKXJldHVybiA5NzI5O2lmKDEwMDc9PT1nKXJldHVybiA5OTg1O2lmKDEwMDg9PT1nKXJldHVybiA5OTg3O2lmKDEwMDk9PT1nKXJldHVybiA1MTIxO2lmKDEwMTc9PT1nKXJldHVybiAzMjgxOTtpZigxMDE4PT09ZylyZXR1cm4gMzI4MjA7aWYoMTAxOT09PWcpcmV0dXJuIDMzNjM1O2lmKDEwMTA9PT1nKXJldHVybiA1MTIwO2lmKDEwMTE9PT0KZylyZXR1cm4gNTEyMjtpZigxMDEyPT09ZylyZXR1cm4gNTEyMztpZigxMDEzPT09ZylyZXR1cm4gNTEyNDtpZigxMDE0PT09ZylyZXR1cm4gNTEyNTtpZigxMDE1PT09ZylyZXR1cm4gNTEyNjtpZigxMDE2PT09Zyl7aWYoZS5pc1dlYkdMMilyZXR1cm4gNTEzMTt2YXIgcj1jLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpO2lmKG51bGwhPT1yKXJldHVybiByLkhBTEZfRkxPQVRfT0VTfWlmKDEwMjE9PT1nKXJldHVybiA2NDA2O2lmKDEwMjI9PT1nKXJldHVybiA2NDA3O2lmKDEwMjM9PT1nKXJldHVybiA2NDA4O2lmKDEwMjQ9PT1nKXJldHVybiA2NDA5O2lmKDEwMjU9PT1nKXJldHVybiA2NDEwO2lmKDEwMjY9PT1nKXJldHVybiA2NDAyO2lmKDEwMjc9PT1nKXJldHVybiAzNDA0MTtpZigxMDI4PT09ZylyZXR1cm4gNjQwMztpZigxMDA9PT1nKXJldHVybiAzMjc3NDtpZigxMDE9PT1nKXJldHVybiAzMjc3ODtpZigxMDI9PT1nKXJldHVybiAzMjc3OTtpZigyMDA9PT1nKXJldHVybiAwOwppZigyMDE9PT1nKXJldHVybiAxO2lmKDIwMj09PWcpcmV0dXJuIDc2ODtpZigyMDM9PT1nKXJldHVybiA3Njk7aWYoMjA0PT09ZylyZXR1cm4gNzcwO2lmKDIwNT09PWcpcmV0dXJuIDc3MTtpZigyMDY9PT1nKXJldHVybiA3NzI7aWYoMjA3PT09ZylyZXR1cm4gNzczO2lmKDIwOD09PWcpcmV0dXJuIDc3NDtpZigyMDk9PT1nKXJldHVybiA3NzU7aWYoMjEwPT09ZylyZXR1cm4gNzc2O2lmKDMzNzc2PT09Z3x8MzM3Nzc9PT1nfHwzMzc3OD09PWd8fDMzNzc5PT09ZylpZihyPWMuZ2V0KCJXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YyIpLG51bGwhPT1yKXtpZigzMzc3Nj09PWcpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDtpZigzMzc3Nz09PWcpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ7aWYoMzM3Nzg9PT1nKXJldHVybiByLkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfRVhUO2lmKDMzNzc5PT09ZylyZXR1cm4gci5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVH1pZigzNTg0MD09PQpnfHwzNTg0MT09PWd8fDM1ODQyPT09Z3x8MzU4NDM9PT1nKWlmKHI9Yy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpLG51bGwhPT1yKXtpZigzNTg0MD09PWcpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRztpZigzNTg0MT09PWcpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRztpZigzNTg0Mj09PWcpcmV0dXJuIHIuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc7aWYoMzU4NDM9PT1nKXJldHVybiByLkNPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HfWlmKDM2MTk2PT09ZyYmKHI9Yy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9ldGMxIiksbnVsbCE9PXIpKXJldHVybiByLkNPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w7aWYoMzc4MDg9PT1nfHwzNzgwOT09PWd8fDM3ODEwPT09Z3x8Mzc4MTE9PT1nfHwzNzgxMj09PWd8fDM3ODEzPT09Z3x8Mzc4MTQ9PT1nfHwzNzgxNT09PWd8fDM3ODE2PT09Cmd8fDM3ODE3PT09Z3x8Mzc4MTg9PT1nfHwzNzgxOT09PWd8fDM3ODIwPT09Z3x8Mzc4MjE9PT1nKWlmKHI9Yy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9hc3RjIiksbnVsbCE9PXIpcmV0dXJuIGc7aWYoMTAzPT09Z3x8MTA0PT09Zyl7aWYoZS5pc1dlYkdMMil7aWYoMTAzPT09ZylyZXR1cm4gMzI3NzU7aWYoMTA0PT09ZylyZXR1cm4gMzI3NzZ9cj1jLmdldCgiRVhUX2JsZW5kX21pbm1heCIpO2lmKG51bGwhPT1yKXtpZigxMDM9PT1nKXJldHVybiByLk1JTl9FWFQ7aWYoMTA0PT09ZylyZXR1cm4gci5NQVhfRVhUfX1pZigxMDIwPT09Zyl7aWYoZS5pc1dlYkdMMilyZXR1cm4gMzQwNDI7cj1jLmdldCgiV0VCR0xfZGVwdGhfdGV4dHVyZSIpO2lmKG51bGwhPT1yKXJldHVybiByLlVOU0lHTkVEX0lOVF8yNF84X1dFQkdMfXJldHVybiAwfX19ZnVuY3Rpb24gdWUoKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJHcm91cCJ9ZnVuY3Rpb24gdmYoYSl7dmIuY2FsbCh0aGlzKTsKdGhpcy5jYW1lcmFzPWF8fFtdfWZ1bmN0aW9uIHhqKGEsYyxlKXt5ai5zZXRGcm9tTWF0cml4UG9zaXRpb24oYy5tYXRyaXhXb3JsZCk7emouc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGUubWF0cml4V29ybGQpO3ZhciBnPXlqLmRpc3RhbmNlVG8oemopLHI9Yy5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLHY9ZS5wcm9qZWN0aW9uTWF0cml4LmVsZW1lbnRzLHo9clsxNF0vKHJbMTBdLTEpO2U9clsxNF0vKHJbMTBdKzEpO3ZhciBFPShyWzldKzEpL3JbNV0sRz0ocls5XS0xKS9yWzVdLEo9KHJbOF0tMSkvclswXSxQPSh2WzhdKzEpL3ZbMF07cj16Kko7dj16KlA7UD1nLygtSitQKTtKPVAqLUo7Yy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UoYS5wb3NpdGlvbixhLnF1YXRlcm5pb24sYS5zY2FsZSk7YS50cmFuc2xhdGVYKEopO2EudHJhbnNsYXRlWihQKTthLm1hdHJpeFdvcmxkLmNvbXBvc2UoYS5wb3NpdGlvbixhLnF1YXRlcm5pb24sYS5zY2FsZSk7YS5tYXRyaXhXb3JsZEludmVyc2UuZ2V0SW52ZXJzZShhLm1hdHJpeFdvcmxkKTsKYz16K1A7ej1lK1A7YS5wcm9qZWN0aW9uTWF0cml4Lm1ha2VQZXJzcGVjdGl2ZShyLUosdisoZy1KKSxFKmUveipjLEcqZS96KmMsYyx6KX1mdW5jdGlvbiBOaChhKXtmdW5jdGlvbiBjKCl7cmV0dXJuIG51bGwhPT1KJiYhMD09PUouaXNQcmVzZW50aW5nfWZ1bmN0aW9uIGUoKXtpZihjKCkpe3ZhciBIYT1KLmdldEV5ZVBhcmFtZXRlcnMoImxlZnQiKTt6PTIqSGEucmVuZGVyV2lkdGgqaGE7RT1IYS5yZW5kZXJIZWlnaHQqaGE7VGE9YS5nZXRQaXhlbFJhdGlvKCk7YS5nZXRTaXplKEJhKTthLnNldERyYXdpbmdCdWZmZXJTaXplKHosRSwxKTt1YS52aWV3cG9ydC5zZXQoMCwwLHovMixFKTtvYS52aWV3cG9ydC5zZXQoei8yLDAsei8yLEUpO0NhLnN0YXJ0KCk7Ry5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uc3RhcnQifSl9ZWxzZSBHLmVuYWJsZWQmJmEuc2V0RHJhd2luZ0J1ZmZlclNpemUoQmEud2lkdGgsQmEuaGVpZ2h0LFRhKSxDYS5zdG9wKCksRy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfQpmdW5jdGlvbiBnKEhhKXtmb3IodmFyIERhPW5hdmlnYXRvci5nZXRHYW1lcGFkcyYmbmF2aWdhdG9yLmdldEdhbWVwYWRzKCksTWE9MCxkYj0wLHRiPURhLmxlbmd0aDtNYTx0YjtNYSsrKXt2YXIgS2E9RGFbTWFdO2lmKEthJiYoIkRheWRyZWFtIENvbnRyb2xsZXIiPT09S2EuaWR8fCJHZWFyIFZSIENvbnRyb2xsZXIiPT09S2EuaWR8fCJPY3VsdXMgR28gQ29udHJvbGxlciI9PT1LYS5pZHx8Ik9wZW5WUiBHYW1lcGFkIj09PUthLmlkfHxLYS5pZC5zdGFydHNXaXRoKCJPY3VsdXMgVG91Y2giKXx8S2EuaWQuc3RhcnRzV2l0aCgiSFRDIFZpdmUgRm9jdXMiKXx8S2EuaWQuc3RhcnRzV2l0aCgiU3BhdGlhbCBDb250cm9sbGVyIikpKXtpZihkYj09PUhhKXJldHVybiBLYTtkYisrfX19ZnVuY3Rpb24gcigpe2Zvcih2YXIgSGE9MDtIYTxTLmxlbmd0aDtIYSsrKXt2YXIgRGE9U1tIYV0sTWE9ZyhIYSk7aWYodm9pZCAwIT09TWEmJnZvaWQgMCE9PU1hLnBvc2Upe2lmKG51bGw9PT1NYS5wb3NlKWJyZWFrOwp2YXIgZGI9TWEucG9zZTshMT09PWRiLmhhc1Bvc2l0aW9uJiZEYS5wb3NpdGlvbi5zZXQoLjIsLS42LC0uMDUpO251bGwhPT1kYi5wb3NpdGlvbiYmRGEucG9zaXRpb24uZnJvbUFycmF5KGRiLnBvc2l0aW9uKTtudWxsIT09ZGIub3JpZW50YXRpb24mJkRhLnF1YXRlcm5pb24uZnJvbUFycmF5KGRiLm9yaWVudGF0aW9uKTtEYS5tYXRyaXguY29tcG9zZShEYS5wb3NpdGlvbixEYS5xdWF0ZXJuaW9uLERhLnNjYWxlKTtEYS5tYXRyaXgucHJlbXVsdGlwbHkoVik7RGEubWF0cml4LmRlY29tcG9zZShEYS5wb3NpdGlvbixEYS5xdWF0ZXJuaW9uLERhLnNjYWxlKTtEYS5tYXRyaXhXb3JsZE5lZWRzVXBkYXRlPSEwO0RhLnZpc2libGU9ITA7ZGI9IkRheWRyZWFtIENvbnRyb2xsZXIiPT09TWEuaWQ/MDoxO3ZvaWQgMD09PVVhW0hhXSYmKFVhW0hhXT0hMSk7VWFbSGFdIT09TWEuYnV0dG9uc1tkYl0ucHJlc3NlZCYmKFVhW0hhXT1NYS5idXR0b25zW2RiXS5wcmVzc2VkLCEwPT09VWFbSGFdPwpEYS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZWxlY3RzdGFydCJ9KTooRGEuZGlzcGF0Y2hFdmVudCh7dHlwZToic2VsZWN0ZW5kIn0pLERhLmRpc3BhdGNoRXZlbnQoe3R5cGU6InNlbGVjdCJ9KSkpfWVsc2UgRGEudmlzaWJsZT0hMX19ZnVuY3Rpb24gdihIYSxEYSl7bnVsbCE9PURhJiY0PT09RGEubGVuZ3RoJiZIYS5zZXQoRGFbMF0qeixEYVsxXSpFLERhWzJdKnosRGFbM10qRSl9dmFyIHosRSxHPXRoaXMsSj1udWxsLFA9bnVsbCxSPW51bGwsUz1bXSxWPW5ldyBxLFc9bmV3IHEsaGE9MSxmYT0ibG9jYWwtZmxvb3IiOyJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmIlZSRnJhbWVEYXRhImluIHdpbmRvdyYmKFA9bmV3IHdpbmRvdy5WUkZyYW1lRGF0YSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidnJkaXNwbGF5cHJlc2VudGNoYW5nZSIsZSwhMSkpO3ZhciByYT1uZXcgcSxwYT1uZXcgaCxxYT1uZXcgayx1YT1uZXcgdmI7dWEudmlld3BvcnQ9bmV3IHA7dWEubGF5ZXJzLmVuYWJsZSgxKTsKdmFyIG9hPW5ldyB2YjtvYS52aWV3cG9ydD1uZXcgcDtvYS5sYXllcnMuZW5hYmxlKDIpO3ZhciB0YT1uZXcgdmYoW3VhLG9hXSk7dGEubGF5ZXJzLmVuYWJsZSgxKTt0YS5sYXllcnMuZW5hYmxlKDIpO3ZhciBCYT1uZXcgZixUYSxVYT1bXTt0aGlzLmVuYWJsZWQ9ITE7dGhpcy5nZXRDb250cm9sbGVyPWZ1bmN0aW9uKEhhKXt2YXIgRGE9U1tIYV07dm9pZCAwPT09RGEmJihEYT1uZXcgdWUsRGEubWF0cml4QXV0b1VwZGF0ZT0hMSxEYS52aXNpYmxlPSExLFNbSGFdPURhKTtyZXR1cm4gRGF9O3RoaXMuZ2V0RGV2aWNlPWZ1bmN0aW9uKCl7cmV0dXJuIEp9O3RoaXMuc2V0RGV2aWNlPWZ1bmN0aW9uKEhhKXt2b2lkIDAhPT1IYSYmKEo9SGEpO0NhLnNldENvbnRleHQoSGEpfTt0aGlzLnNldEZyYW1lYnVmZmVyU2NhbGVGYWN0b3I9ZnVuY3Rpb24oSGEpe2hhPUhhfTt0aGlzLnNldFJlZmVyZW5jZVNwYWNlVHlwZT1mdW5jdGlvbihIYSl7ZmE9SGF9O3RoaXMuc2V0UG9zZVRhcmdldD1mdW5jdGlvbihIYSl7dm9pZCAwIT09CkhhJiYoUj1IYSl9O3RoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKEhhKXt2YXIgRGE9ImxvY2FsLWZsb29yIj09PWZhPzEuNjowO2lmKCExPT09YygpKXJldHVybiBIYS5wb3NpdGlvbi5zZXQoMCxEYSwwKSxIYS5yb3RhdGlvbi5zZXQoMCwwLDApLEhhO0ouZGVwdGhOZWFyPUhhLm5lYXI7Si5kZXB0aEZhcj1IYS5mYXI7Si5nZXRGcmFtZURhdGEoUCk7aWYoImxvY2FsLWZsb29yIj09PWZhKXt2YXIgTWE9Si5zdGFnZVBhcmFtZXRlcnM7TWE/Vi5mcm9tQXJyYXkoTWEuc2l0dGluZ1RvU3RhbmRpbmdUcmFuc2Zvcm0pOlYubWFrZVRyYW5zbGF0aW9uKDAsRGEsMCl9RGE9UC5wb3NlO01hPW51bGwhPT1SP1I6SGE7TWEubWF0cml4LmNvcHkoVik7TWEubWF0cml4LmRlY29tcG9zZShNYS5wb3NpdGlvbixNYS5xdWF0ZXJuaW9uLE1hLnNjYWxlKTtudWxsIT09RGEub3JpZW50YXRpb24mJihwYS5mcm9tQXJyYXkoRGEub3JpZW50YXRpb24pLE1hLnF1YXRlcm5pb24ubXVsdGlwbHkocGEpKTtudWxsIT09CkRhLnBvc2l0aW9uJiYocGEuc2V0RnJvbVJvdGF0aW9uTWF0cml4KFYpLHFhLmZyb21BcnJheShEYS5wb3NpdGlvbikscWEuYXBwbHlRdWF0ZXJuaW9uKHBhKSxNYS5wb3NpdGlvbi5hZGQocWEpKTtNYS51cGRhdGVNYXRyaXhXb3JsZCgpO3VhLm5lYXI9SGEubmVhcjtvYS5uZWFyPUhhLm5lYXI7dWEuZmFyPUhhLmZhcjtvYS5mYXI9SGEuZmFyO3VhLm1hdHJpeFdvcmxkSW52ZXJzZS5mcm9tQXJyYXkoUC5sZWZ0Vmlld01hdHJpeCk7b2EubWF0cml4V29ybGRJbnZlcnNlLmZyb21BcnJheShQLnJpZ2h0Vmlld01hdHJpeCk7Vy5nZXRJbnZlcnNlKFYpOyJsb2NhbC1mbG9vciI9PT1mYSYmKHVhLm1hdHJpeFdvcmxkSW52ZXJzZS5tdWx0aXBseShXKSxvYS5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkoVykpO0hhPU1hLnBhcmVudDtudWxsIT09SGEmJihyYS5nZXRJbnZlcnNlKEhhLm1hdHJpeFdvcmxkKSx1YS5tYXRyaXhXb3JsZEludmVyc2UubXVsdGlwbHkocmEpLG9hLm1hdHJpeFdvcmxkSW52ZXJzZS5tdWx0aXBseShyYSkpOwp1YS5tYXRyaXhXb3JsZC5nZXRJbnZlcnNlKHVhLm1hdHJpeFdvcmxkSW52ZXJzZSk7b2EubWF0cml4V29ybGQuZ2V0SW52ZXJzZShvYS5tYXRyaXhXb3JsZEludmVyc2UpO3VhLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KFAubGVmdFByb2plY3Rpb25NYXRyaXgpO29hLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KFAucmlnaHRQcm9qZWN0aW9uTWF0cml4KTt4aih0YSx1YSxvYSk7SGE9Si5nZXRMYXllcnMoKTtIYS5sZW5ndGgmJihIYT1IYVswXSx2KHVhLnZpZXdwb3J0LEhhLmxlZnRCb3VuZHMpLHYob2Eudmlld3BvcnQsSGEucmlnaHRCb3VuZHMpKTtyKCk7cmV0dXJuIHRhfTt0aGlzLmdldFN0YW5kaW5nTWF0cml4PWZ1bmN0aW9uKCl7cmV0dXJuIFZ9O3RoaXMuaXNQcmVzZW50aW5nPWM7dmFyIENhPW5ldyBiYzt0aGlzLnNldEFuaW1hdGlvbkxvb3A9ZnVuY3Rpb24oSGEpe0NhLnNldEFuaW1hdGlvbkxvb3AoSGEpO2MoKSYmQ2Euc3RhcnQoKX07dGhpcy5zdWJtaXRGcmFtZT0KZnVuY3Rpb24oKXtjKCkmJkouc3VibWl0RnJhbWUoKX07dGhpcy5kaXNwb3NlPWZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidnJkaXNwbGF5cHJlc2VudGNoYW5nZSIsZSl9O3RoaXMuc2V0RnJhbWVPZlJlZmVyZW5jZVR5cGU9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYlZSTWFuYWdlcjogc2V0RnJhbWVPZlJlZmVyZW5jZVR5cGUoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfX1mdW5jdGlvbiBBaihhLGMpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PUcmJm51bGwhPT1KfWZ1bmN0aW9uIGcocWEpe2Zvcih2YXIgdWE9MDt1YTxTLmxlbmd0aDt1YSsrKVZbdWFdPT09cWEuaW5wdXRTb3VyY2UmJlNbdWFdLmRpc3BhdGNoRXZlbnQoe3R5cGU6cWEudHlwZX0pfWZ1bmN0aW9uIHIoKXthLnNldEZyYW1lYnVmZmVyKG51bGwpO2Euc2V0UmVuZGVyVGFyZ2V0KGEuZ2V0UmVuZGVyVGFyZ2V0KCkpOwpwYS5zdG9wKCk7RS5kaXNwYXRjaEV2ZW50KHt0eXBlOiJzZXNzaW9uZW5kIn0pfWZ1bmN0aW9uIHYocWEpe0o9cWE7cGEuc2V0Q29udGV4dChHKTtwYS5zdGFydCgpO0UuZGlzcGF0Y2hFdmVudCh7dHlwZToic2Vzc2lvbnN0YXJ0In0pfWZ1bmN0aW9uIHoocWEsdWEpe251bGw9PT11YT9xYS5tYXRyaXhXb3JsZC5jb3B5KHFhLm1hdHJpeCk6cWEubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh1YS5tYXRyaXhXb3JsZCxxYS5tYXRyaXgpO3FhLm1hdHJpeFdvcmxkSW52ZXJzZS5nZXRJbnZlcnNlKHFhLm1hdHJpeFdvcmxkKX12YXIgRT10aGlzLEc9bnVsbCxKPW51bGwsUD0ibG9jYWwtZmxvb3IiLFI9bnVsbCxTPVtdLFY9W10sVz1uZXcgdmI7Vy5sYXllcnMuZW5hYmxlKDEpO1cudmlld3BvcnQ9bmV3IHA7dmFyIGhhPW5ldyB2YjtoYS5sYXllcnMuZW5hYmxlKDIpO2hhLnZpZXdwb3J0PW5ldyBwO3ZhciBmYT1uZXcgdmYoW1csaGFdKTtmYS5sYXllcnMuZW5hYmxlKDEpO2ZhLmxheWVycy5lbmFibGUoMik7CnRoaXMuZW5hYmxlZD0hMTt0aGlzLmdldENvbnRyb2xsZXI9ZnVuY3Rpb24ocWEpe3ZhciB1YT1TW3FhXTt2b2lkIDA9PT11YSYmKHVhPW5ldyB1ZSx1YS5tYXRyaXhBdXRvVXBkYXRlPSExLHVhLnZpc2libGU9ITEsU1txYV09dWEpO3JldHVybiB1YX07dGhpcy5zZXRGcmFtZWJ1ZmZlclNjYWxlRmFjdG9yPWZ1bmN0aW9uKCl7fTt0aGlzLnNldFJlZmVyZW5jZVNwYWNlVHlwZT1mdW5jdGlvbihxYSl7UD1xYX07dGhpcy5nZXRTZXNzaW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEd9O3RoaXMuc2V0U2Vzc2lvbj1mdW5jdGlvbihxYSl7Rz1xYTtudWxsIT09RyYmKEcuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0IixnKSxHLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IixnKSxHLmFkZEV2ZW50TGlzdGVuZXIoInNlbGVjdGVuZCIsZyksRy5hZGRFdmVudExpc3RlbmVyKCJlbmQiLHIpLEcudXBkYXRlUmVuZGVyU3RhdGUoe2Jhc2VMYXllcjpuZXcgWFJXZWJHTExheWVyKEcsYyl9KSxHLnJlcXVlc3RSZWZlcmVuY2VTcGFjZShQKS50aGVuKHYpLApWPUcuaW5wdXRTb3VyY2VzLEcuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXRzb3VyY2VzY2hhbmdlIixmdW5jdGlvbigpe1Y9Ry5pbnB1dFNvdXJjZXM7Y29uc29sZS5sb2coVik7Zm9yKHZhciB1YT0wO3VhPFMubGVuZ3RoO3VhKyspU1t1YV0udXNlckRhdGEuaW5wdXRTb3VyY2U9Vlt1YV19KSl9O3RoaXMuZ2V0Q2FtZXJhPWZ1bmN0aW9uKHFhKXtpZihlKCkpe3ZhciB1YT1xYS5wYXJlbnQsb2E9ZmEuY2FtZXJhczt6KGZhLHVhKTtmb3IodmFyIHRhPTA7dGE8b2EubGVuZ3RoO3RhKyspeihvYVt0YV0sdWEpO3FhLm1hdHJpeFdvcmxkLmNvcHkoZmEubWF0cml4V29ybGQpO3FhPXFhLmNoaWxkcmVuO3RhPTA7Zm9yKHVhPXFhLmxlbmd0aDt0YTx1YTt0YSsrKXFhW3RhXS51cGRhdGVNYXRyaXhXb3JsZCghMCk7eGooZmEsVyxoYSk7cmV0dXJuIGZhfXJldHVybiBxYX07dGhpcy5pc1ByZXNlbnRpbmc9ZTt2YXIgcmE9bnVsbCxwYT1uZXcgYmM7cGEuc2V0QW5pbWF0aW9uTG9vcChmdW5jdGlvbihxYSwKdWEpe1I9dWEuZ2V0Vmlld2VyUG9zZShKKTtpZihudWxsIT09Uil7dmFyIG9hPVIudmlld3MsdGE9Ry5yZW5kZXJTdGF0ZS5iYXNlTGF5ZXI7YS5zZXRGcmFtZWJ1ZmZlcih0YS5mcmFtZWJ1ZmZlcik7Zm9yKHZhciBCYT0wO0JhPG9hLmxlbmd0aDtCYSsrKXt2YXIgVGE9b2FbQmFdLFVhPXRhLmdldFZpZXdwb3J0KFRhKSxDYT1mYS5jYW1lcmFzW0JhXTtDYS5tYXRyaXguZnJvbUFycmF5KFRhLnRyYW5zZm9ybS5pbnZlcnNlLm1hdHJpeCkuZ2V0SW52ZXJzZShDYS5tYXRyaXgpO0NhLnByb2plY3Rpb25NYXRyaXguZnJvbUFycmF5KFRhLnByb2plY3Rpb25NYXRyaXgpO0NhLnZpZXdwb3J0LnNldChVYS54LFVhLnksVWEud2lkdGgsVWEuaGVpZ2h0KTswPT09QmEmJmZhLm1hdHJpeC5jb3B5KENhLm1hdHJpeCl9fWZvcihCYT0wO0JhPFMubGVuZ3RoO0JhKyspe29hPVNbQmFdO2lmKHRhPVZbQmFdKWlmKHRhPXVhLmdldFBvc2UodGEudGFyZ2V0UmF5U3BhY2UsSiksbnVsbCE9PXRhKXtvYS5tYXRyaXguZnJvbUFycmF5KHRhLnRyYW5zZm9ybS5tYXRyaXgpOwpvYS5tYXRyaXguZGVjb21wb3NlKG9hLnBvc2l0aW9uLG9hLnJvdGF0aW9uLG9hLnNjYWxlKTtvYS52aXNpYmxlPSEwO2NvbnRpbnVlfW9hLnZpc2libGU9ITF9cmEmJnJhKHFhKX0pO3RoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbihxYSl7cmE9cWF9O3RoaXMuZGlzcG9zZT1mdW5jdGlvbigpe307dGhpcy5nZXRTdGFuZGluZ01hdHJpeD1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBnZXRTdGFuZGluZ01hdHJpeCgpIGlzIG5vIGxvbmdlciBuZWVkZWQuIik7cmV0dXJuIG5ldyBxfTt0aGlzLmdldERldmljZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBnZXREZXZpY2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfTt0aGlzLnNldERldmljZT1mdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBzZXREZXZpY2UoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiIpfTt0aGlzLnNldEZyYW1lT2ZSZWZlcmVuY2VUeXBlPQpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViWFJNYW5hZ2VyOiBzZXRGcmFtZU9mUmVmZXJlbmNlVHlwZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIil9O3RoaXMuc3VibWl0RnJhbWU9ZnVuY3Rpb24oKXt9fWZ1bmN0aW9uIE9oKGEpe3ZhciBjO2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbD09PWliP2NjOjF9ZnVuY3Rpb24gZygpe0xiPW5ldyBiZChSYSk7ZGM9bmV3IE1iKFJhLExiLGEpO2RjLmlzV2ViR0wyfHwoTGIuZ2V0KCJXRUJHTF9kZXB0aF90ZXh0dXJlIiksTGIuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpLExiLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpLExiLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKSxMYi5nZXQoIk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIpLExiLmdldCgiT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpLExiLmdldCgiQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKTtMYi5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIpOwpOYz1uZXcgd2ooUmEsTGIsZGMpO3liPW5ldyBWbChSYSxMYixOYyxkYyk7eWIuc2Npc3NvcihTYi5jb3B5KHZlKS5tdWx0aXBseVNjYWxhcihjYykuZmxvb3IoKSk7eWIudmlld3BvcnQoS2IuY29weSh3ZSkubXVsdGlwbHlTY2FsYXIoY2MpLmZsb29yKCkpO3hkPW5ldyBTayhSYSk7ZWM9bmV3IE1sO09jPW5ldyBXbChSYSxMYix5YixlYyxkYyxOYyx4ZCk7dmc9bmV3IE9kKFJhKTtQaD1uZXcgdGQoUmEsdmcseGQpO3hlPW5ldyBWayhQaCx4ZCk7Qmo9bmV3IFVrKFJhKTtQZD1uZXcgTGwoamEsTGIsZGMpO3dnPW5ldyBQbDt5ZT1uZXcgVWw7eWQ9bmV3IHNkKGphLHliLHhlLG5hKTtDaj1uZXcgc2EoUmEsTGIseGQsZGMpO0RqPW5ldyB0ZyhSYSxMYix4ZCxkYyk7eGQucHJvZ3JhbXM9UGQucHJvZ3JhbXM7amEuY2FwYWJpbGl0aWVzPWRjO2phLmV4dGVuc2lvbnM9TGI7amEucHJvcGVydGllcz1lYztqYS5yZW5kZXJMaXN0cz13ZztqYS5zdGF0ZT15YjtqYS5pbmZvPXhkfWZ1bmN0aW9uIHIoVSl7VS5wcmV2ZW50RGVmYXVsdCgpOwpjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBMb3N0LiIpO0dhPSEwfWZ1bmN0aW9uIHYoKXtjb25zb2xlLmxvZygiVEhSRUUuV2ViR0xSZW5kZXJlcjogQ29udGV4dCBSZXN0b3JlZC4iKTtHYT0hMTtnKCl9ZnVuY3Rpb24geihVKXtVPVUudGFyZ2V0O1UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZGlzcG9zZSIseik7RShVKX1mdW5jdGlvbiBFKFUpe0coVSk7ZWMucmVtb3ZlKFUpfWZ1bmN0aW9uIEcoVSl7dmFyIGRhPWVjLmdldChVKS5wcm9ncmFtO1UucHJvZ3JhbT12b2lkIDA7dm9pZCAwIT09ZGEmJlBkLnJlbGVhc2VQcm9ncmFtKGRhKX1mdW5jdGlvbiBKKFUsZGEpe1UucmVuZGVyKGZ1bmN0aW9uKG1hKXtqYS5yZW5kZXJCdWZmZXJJbW1lZGlhdGUobWEsZGEpfSl9ZnVuY3Rpb24gUChVLGRhLG1hKXtpZihtYSYmbWEuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSYmIWRjLmlzV2ViR0wyJiZudWxsPT09TGIuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpY29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5zZXR1cFZlcnRleEF0dHJpYnV0ZXM6IHVzaW5nIFRIUkVFLkluc3RhbmNlZEJ1ZmZlckdlb21ldHJ5IGJ1dCBoYXJkd2FyZSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuc2lvbiBBTkdMRV9pbnN0YW5jZWRfYXJyYXlzLiIpOwplbHNle3liLmluaXRBdHRyaWJ1dGVzKCk7dmFyIElhPW1hLmF0dHJpYnV0ZXM7ZGE9ZGEuZ2V0QXR0cmlidXRlcygpO1U9VS5kZWZhdWx0QXR0cmlidXRlVmFsdWVzO2Zvcih2YXIgT2EgaW4gZGEpe3ZhciBhYj1kYVtPYV07aWYoMDw9YWIpe3ZhciBQYT1JYVtPYV07aWYodm9pZCAwIT09UGEpe3ZhciBmYj1QYS5ub3JtYWxpemVkLENiPVBhLml0ZW1TaXplLG9iPXZnLmdldChQYSk7aWYodm9pZCAwIT09b2Ipe3ZhciAkYT1vYi5idWZmZXIsUGM9b2IudHlwZTtvYj1vYi5ieXRlc1BlckVsZW1lbnQ7aWYoUGEuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSl7dmFyIHhjPVBhLmRhdGEsemU9eGMuc3RyaWRlO1BhPVBhLm9mZnNldDt4YyYmeGMuaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcj8oeWIuZW5hYmxlQXR0cmlidXRlQW5kRGl2aXNvcihhYix4Yy5tZXNoUGVyQXR0cmlidXRlKSx2b2lkIDA9PT1tYS5tYXhJbnN0YW5jZWRDb3VudCYmKG1hLm1heEluc3RhbmNlZENvdW50PQp4Yy5tZXNoUGVyQXR0cmlidXRlKnhjLmNvdW50KSk6eWIuZW5hYmxlQXR0cmlidXRlKGFiKTtSYS5iaW5kQnVmZmVyKDM0OTYyLCRhKTtSYS52ZXJ0ZXhBdHRyaWJQb2ludGVyKGFiLENiLFBjLGZiLHplKm9iLFBhKm9iKX1lbHNlIFBhLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPyh5Yi5lbmFibGVBdHRyaWJ1dGVBbmREaXZpc29yKGFiLFBhLm1lc2hQZXJBdHRyaWJ1dGUpLHZvaWQgMD09PW1hLm1heEluc3RhbmNlZENvdW50JiYobWEubWF4SW5zdGFuY2VkQ291bnQ9UGEubWVzaFBlckF0dHJpYnV0ZSpQYS5jb3VudCkpOnliLmVuYWJsZUF0dHJpYnV0ZShhYiksUmEuYmluZEJ1ZmZlcigzNDk2MiwkYSksUmEudmVydGV4QXR0cmliUG9pbnRlcihhYixDYixQYyxmYiwwLDApfX1lbHNlIGlmKHZvaWQgMCE9PVUmJihmYj1VW09hXSx2b2lkIDAhPT1mYikpc3dpdGNoKGZiLmxlbmd0aCl7Y2FzZSAyOlJhLnZlcnRleEF0dHJpYjJmdihhYixmYik7YnJlYWs7Y2FzZSAzOlJhLnZlcnRleEF0dHJpYjNmdihhYiwKZmIpO2JyZWFrO2Nhc2UgNDpSYS52ZXJ0ZXhBdHRyaWI0ZnYoYWIsZmIpO2JyZWFrO2RlZmF1bHQ6UmEudmVydGV4QXR0cmliMWZ2KGFiLGZiKX19fXliLmRpc2FibGVVbnVzZWRBdHRyaWJ1dGVzKCl9fWZ1bmN0aW9uIFIoVSxkYSxtYSxJYSl7aWYoITEhPT1VLnZpc2libGUpe2lmKFUubGF5ZXJzLnRlc3QoZGEubGF5ZXJzKSlpZihVLmlzR3JvdXApbWE9VS5yZW5kZXJPcmRlcjtlbHNlIGlmKFUuaXNMT0QpITA9PT1VLmF1dG9VcGRhdGUmJlUudXBkYXRlKGRhKTtlbHNlIGlmKFUuaXNMaWdodCljYi5wdXNoTGlnaHQoVSksVS5jYXN0U2hhZG93JiZjYi5wdXNoU2hhZG93KFUpO2Vsc2UgaWYoVS5pc1Nwcml0ZSl7aWYoIVUuZnJ1c3R1bUN1bGxlZHx8UWguaW50ZXJzZWN0c1Nwcml0ZShVKSl7SWEmJnpkLnNldEZyb21NYXRyaXhQb3NpdGlvbihVLm1hdHJpeFdvcmxkKS5hcHBseU1hdHJpeDQod2YpO3ZhciBPYT14ZS51cGRhdGUoVSksYWI9VS5tYXRlcmlhbDthYi52aXNpYmxlJiZOYS5wdXNoKFUsCk9hLGFiLG1hLHpkLnosbnVsbCl9fWVsc2UgaWYoVS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdClJYSYmemQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFUubWF0cml4V29ybGQpLmFwcGx5TWF0cml4NCh3ZiksTmEucHVzaChVLG51bGwsVS5tYXRlcmlhbCxtYSx6ZC56LG51bGwpO2Vsc2UgaWYoVS5pc01lc2h8fFUuaXNMaW5lfHxVLmlzUG9pbnRzKWlmKFUuaXNTa2lubmVkTWVzaCYmVS5za2VsZXRvbi51cGRhdGUoKSwhVS5mcnVzdHVtQ3VsbGVkfHxRaC5pbnRlcnNlY3RzT2JqZWN0KFUpKWlmKElhJiZ6ZC5zZXRGcm9tTWF0cml4UG9zaXRpb24oVS5tYXRyaXhXb3JsZCkuYXBwbHlNYXRyaXg0KHdmKSxPYT14ZS51cGRhdGUoVSksYWI9VS5tYXRlcmlhbCxBcnJheS5pc0FycmF5KGFiKSlmb3IodmFyIFBhPU9hLmdyb3VwcyxmYj0wLENiPVBhLmxlbmd0aDtmYjxDYjtmYisrKXt2YXIgb2I9UGFbZmJdLCRhPWFiW29iLm1hdGVyaWFsSW5kZXhdOyRhJiYkYS52aXNpYmxlJiZOYS5wdXNoKFUsCk9hLCRhLG1hLHpkLnosb2IpfWVsc2UgYWIudmlzaWJsZSYmTmEucHVzaChVLE9hLGFiLG1hLHpkLnosbnVsbCk7VT1VLmNoaWxkcmVuO2ZiPTA7Zm9yKENiPVUubGVuZ3RoO2ZiPENiO2ZiKyspUihVW2ZiXSxkYSxtYSxJYSl9fWZ1bmN0aW9uIFMoVSxkYSxtYSxJYSl7Zm9yKHZhciBPYT0wLGFiPVUubGVuZ3RoO09hPGFiO09hKyspe3ZhciBQYT1VW09hXSxmYj1QYS5vYmplY3QsQ2I9UGEuZ2VvbWV0cnksb2I9dm9pZCAwPT09SWE/UGEubWF0ZXJpYWw6SWE7UGE9UGEuZ3JvdXA7aWYobWEuaXNBcnJheUNhbWVyYSl7c2I9bWE7Zm9yKHZhciAkYT1tYS5jYW1lcmFzLFBjPTAseGM9JGEubGVuZ3RoO1BjPHhjO1BjKyspe3ZhciB6ZT0kYVtQY107ZmIubGF5ZXJzLnRlc3QoemUubGF5ZXJzKSYmKHliLnZpZXdwb3J0KEtiLmNvcHkoemUudmlld3BvcnQpKSxjYi5zZXR1cExpZ2h0cyh6ZSksVihmYixkYSx6ZSxDYixvYixQYSkpfX1lbHNlIHNiPW51bGwsVihmYixkYSxtYSxDYixvYixQYSl9fQpmdW5jdGlvbiBWKFUsZGEsbWEsSWEsT2EsYWIpe1Uub25CZWZvcmVSZW5kZXIoamEsZGEsbWEsSWEsT2EsYWIpO2NiPXllLmdldChkYSxzYnx8bWEpO1UubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMobWEubWF0cml4V29ybGRJbnZlcnNlLFUubWF0cml4V29ybGQpO1Uubm9ybWFsTWF0cml4LmdldE5vcm1hbE1hdHJpeChVLm1vZGVsVmlld01hdHJpeCk7VS5pc0ltbWVkaWF0ZVJlbmRlck9iamVjdD8oeWIuc2V0TWF0ZXJpYWwoT2EpLElhPWhhKG1hLGRhLmZvZyxPYSxVKSxlYj1jPW51bGwsbWI9ITEsSihVLElhKSk6amEucmVuZGVyQnVmZmVyRGlyZWN0KG1hLGRhLmZvZyxJYSxPYSxVLGFiKTtjYj15ZS5nZXQoZGEsc2J8fG1hKX1mdW5jdGlvbiBXKFUsZGEsbWEpe3ZhciBJYT1lYy5nZXQoVSksT2E9Y2Iuc3RhdGUubGlnaHRzLGFiPU9hLnN0YXRlLnZlcnNpb247bWE9UGQuZ2V0UGFyYW1ldGVycyhVLE9hLnN0YXRlLGNiLnN0YXRlLnNoYWRvd3NBcnJheSxkYSx5Yy5udW1QbGFuZXMsCnljLm51bUludGVyc2VjdGlvbixtYSk7dmFyIFBhPVBkLmdldFByb2dyYW1Db2RlKFUsbWEpLGZiPUlhLnByb2dyYW0sQ2I9ITA7aWYodm9pZCAwPT09ZmIpVS5hZGRFdmVudExpc3RlbmVyKCJkaXNwb3NlIix6KTtlbHNlIGlmKGZiLmNvZGUhPT1QYSlHKFUpO2Vsc2V7aWYoSWEubGlnaHRzU3RhdGVWZXJzaW9uIT09YWIpSWEubGlnaHRzU3RhdGVWZXJzaW9uPWFiO2Vsc2UgaWYodm9pZCAwIT09bWEuc2hhZGVySUQpcmV0dXJuO0NiPSExfUNiJiYobWEuc2hhZGVySUQ/KFBhPU1jW21hLnNoYWRlcklEXSxJYS5zaGFkZXI9e25hbWU6VS50eXBlLHVuaWZvcm1zOnViKFBhLnVuaWZvcm1zKSx2ZXJ0ZXhTaGFkZXI6UGEudmVydGV4U2hhZGVyLGZyYWdtZW50U2hhZGVyOlBhLmZyYWdtZW50U2hhZGVyfSk6SWEuc2hhZGVyPXtuYW1lOlUudHlwZSx1bmlmb3JtczpVLnVuaWZvcm1zLHZlcnRleFNoYWRlcjpVLnZlcnRleFNoYWRlcixmcmFnbWVudFNoYWRlcjpVLmZyYWdtZW50U2hhZGVyfSwKUGE9UGQuZ2V0UHJvZ3JhbUNvZGUoVSxtYSksZmI9UGQuYWNxdWlyZVByb2dyYW0oVSxJYS5zaGFkZXIsbWEsUGEpLElhLnByb2dyYW09ZmIsVS5wcm9ncmFtPWZiKTttYT1mYi5nZXRBdHRyaWJ1dGVzKCk7aWYoVS5tb3JwaFRhcmdldHMpZm9yKFBhPVUubnVtU3VwcG9ydGVkTW9ycGhUYXJnZXRzPTA7UGE8amEubWF4TW9ycGhUYXJnZXRzO1BhKyspMDw9bWFbIm1vcnBoVGFyZ2V0IitQYV0mJlUubnVtU3VwcG9ydGVkTW9ycGhUYXJnZXRzKys7aWYoVS5tb3JwaE5vcm1hbHMpZm9yKFBhPVUubnVtU3VwcG9ydGVkTW9ycGhOb3JtYWxzPTA7UGE8amEubWF4TW9ycGhOb3JtYWxzO1BhKyspMDw9bWFbIm1vcnBoTm9ybWFsIitQYV0mJlUubnVtU3VwcG9ydGVkTW9ycGhOb3JtYWxzKys7bWE9SWEuc2hhZGVyLnVuaWZvcm1zO2lmKCFVLmlzU2hhZGVyTWF0ZXJpYWwmJiFVLmlzUmF3U2hhZGVyTWF0ZXJpYWx8fCEwPT09VS5jbGlwcGluZylJYS5udW1DbGlwcGluZ1BsYW5lcz15Yy5udW1QbGFuZXMsCklhLm51bUludGVyc2VjdGlvbj15Yy5udW1JbnRlcnNlY3Rpb24sbWEuY2xpcHBpbmdQbGFuZXM9eWMudW5pZm9ybTtJYS5mb2c9ZGE7SWEubGlnaHRzU3RhdGVWZXJzaW9uPWFiO1UubGlnaHRzJiYobWEuYW1iaWVudExpZ2h0Q29sb3IudmFsdWU9T2Euc3RhdGUuYW1iaWVudCxtYS5saWdodFByb2JlLnZhbHVlPU9hLnN0YXRlLnByb2JlLG1hLmRpcmVjdGlvbmFsTGlnaHRzLnZhbHVlPU9hLnN0YXRlLmRpcmVjdGlvbmFsLG1hLnNwb3RMaWdodHMudmFsdWU9T2Euc3RhdGUuc3BvdCxtYS5yZWN0QXJlYUxpZ2h0cy52YWx1ZT1PYS5zdGF0ZS5yZWN0QXJlYSxtYS5wb2ludExpZ2h0cy52YWx1ZT1PYS5zdGF0ZS5wb2ludCxtYS5oZW1pc3BoZXJlTGlnaHRzLnZhbHVlPU9hLnN0YXRlLmhlbWksbWEuZGlyZWN0aW9uYWxTaGFkb3dNYXAudmFsdWU9T2Euc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXAsbWEuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgudmFsdWU9T2Euc3RhdGUuZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXgsCm1hLnNwb3RTaGFkb3dNYXAudmFsdWU9T2Euc3RhdGUuc3BvdFNoYWRvd01hcCxtYS5zcG90U2hhZG93TWF0cml4LnZhbHVlPU9hLnN0YXRlLnNwb3RTaGFkb3dNYXRyaXgsbWEucG9pbnRTaGFkb3dNYXAudmFsdWU9T2Euc3RhdGUucG9pbnRTaGFkb3dNYXAsbWEucG9pbnRTaGFkb3dNYXRyaXgudmFsdWU9T2Euc3RhdGUucG9pbnRTaGFkb3dNYXRyaXgpO1U9SWEucHJvZ3JhbS5nZXRVbmlmb3JtcygpO1U9dWQuc2VxV2l0aFZhbHVlKFUuc2VxLG1hKTtJYS51bmlmb3Jtc0xpc3Q9VX1mdW5jdGlvbiBoYShVLGRhLG1hLElhKXtPYy5yZXNldFRleHR1cmVVbml0cygpO3ZhciBPYT1lYy5nZXQobWEpLGFiPWNiLnN0YXRlLmxpZ2h0czt4ZyYmKFJofHxVIT09cGIpJiZ5Yy5zZXRTdGF0ZShtYS5jbGlwcGluZ1BsYW5lcyxtYS5jbGlwSW50ZXJzZWN0aW9uLG1hLmNsaXBTaGFkb3dzLFUsT2EsVT09PXBiJiZtYS5pZD09PVFhKTshMT09PW1hLm5lZWRzVXBkYXRlJiYodm9pZCAwPT09T2EucHJvZ3JhbT8KbWEubmVlZHNVcGRhdGU9ITA6bWEuZm9nJiZPYS5mb2chPT1kYT9tYS5uZWVkc1VwZGF0ZT0hMDptYS5saWdodHMmJk9hLmxpZ2h0c1N0YXRlVmVyc2lvbiE9PWFiLnN0YXRlLnZlcnNpb24/bWEubmVlZHNVcGRhdGU9ITA6dm9pZCAwPT09T2EubnVtQ2xpcHBpbmdQbGFuZXN8fE9hLm51bUNsaXBwaW5nUGxhbmVzPT09eWMubnVtUGxhbmVzJiZPYS5udW1JbnRlcnNlY3Rpb249PT15Yy5udW1JbnRlcnNlY3Rpb258fChtYS5uZWVkc1VwZGF0ZT0hMCkpO21hLm5lZWRzVXBkYXRlJiYoVyhtYSxkYSxJYSksbWEubmVlZHNVcGRhdGU9ITEpO3ZhciBQYT0hMSxmYj1hYj0hMSxDYj1PYS5wcm9ncmFtLG9iPUNiLmdldFVuaWZvcm1zKCksJGE9T2Euc2hhZGVyLnVuaWZvcm1zO3liLnVzZVByb2dyYW0oQ2IucHJvZ3JhbSkmJihmYj1hYj1QYT0hMCk7bWEuaWQhPT1RYSYmKFFhPW1hLmlkLGFiPSEwKTtpZihQYXx8cGIhPT1VKXtvYi5zZXRWYWx1ZShSYSwicHJvamVjdGlvbk1hdHJpeCIsVS5wcm9qZWN0aW9uTWF0cml4KTsKZGMubG9nYXJpdGhtaWNEZXB0aEJ1ZmZlciYmb2Iuc2V0VmFsdWUoUmEsImxvZ0RlcHRoQnVmRkMiLDIvKE1hdGgubG9nKFUuZmFyKzEpL01hdGguTE4yKSk7cGIhPT1VJiYocGI9VSxmYj1hYj0hMCk7aWYobWEuaXNTaGFkZXJNYXRlcmlhbHx8bWEuaXNNZXNoUGhvbmdNYXRlcmlhbHx8bWEuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbHx8bWEuZW52TWFwKVBhPW9iLm1hcC5jYW1lcmFQb3NpdGlvbix2b2lkIDAhPT1QYSYmUGEuc2V0VmFsdWUoUmEsemQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKFUubWF0cml4V29ybGQpKTsobWEuaXNNZXNoUGhvbmdNYXRlcmlhbHx8bWEuaXNNZXNoTGFtYmVydE1hdGVyaWFsfHxtYS5pc01lc2hCYXNpY01hdGVyaWFsfHxtYS5pc01lc2hTdGFuZGFyZE1hdGVyaWFsfHxtYS5pc1NoYWRlck1hdGVyaWFsfHxtYS5za2lubmluZykmJm9iLnNldFZhbHVlKFJhLCJ2aWV3TWF0cml4IixVLm1hdHJpeFdvcmxkSW52ZXJzZSl9aWYobWEuc2tpbm5pbmcmJihvYi5zZXRPcHRpb25hbChSYSwKSWEsImJpbmRNYXRyaXgiKSxvYi5zZXRPcHRpb25hbChSYSxJYSwiYmluZE1hdHJpeEludmVyc2UiKSxVPUlhLnNrZWxldG9uKSlpZihQYT1VLmJvbmVzLGRjLmZsb2F0VmVydGV4VGV4dHVyZXMpe2lmKHZvaWQgMD09PVUuYm9uZVRleHR1cmUpe1BhPU1hdGguc3FydCg0KlBhLmxlbmd0aCk7UGE9aGIuY2VpbFBvd2VyT2ZUd28oUGEpO1BhPU1hdGgubWF4KFBhLDQpO3ZhciBQYz1uZXcgRmxvYXQzMkFycmF5KFBhKlBhKjQpO1BjLnNldChVLmJvbmVNYXRyaWNlcyk7dmFyIHhjPW5ldyBBYihQYyxQYSxQYSwxMDIzLDEwMTUpO3hjLm5lZWRzVXBkYXRlPSEwO1UuYm9uZU1hdHJpY2VzPVBjO1UuYm9uZVRleHR1cmU9eGM7VS5ib25lVGV4dHVyZVNpemU9UGF9b2Iuc2V0VmFsdWUoUmEsImJvbmVUZXh0dXJlIixVLmJvbmVUZXh0dXJlLE9jKTtvYi5zZXRWYWx1ZShSYSwiYm9uZVRleHR1cmVTaXplIixVLmJvbmVUZXh0dXJlU2l6ZSl9ZWxzZSBvYi5zZXRPcHRpb25hbChSYSxVLCJib25lTWF0cmljZXMiKTsKYWImJihvYi5zZXRWYWx1ZShSYSwidG9uZU1hcHBpbmdFeHBvc3VyZSIsamEudG9uZU1hcHBpbmdFeHBvc3VyZSksb2Iuc2V0VmFsdWUoUmEsInRvbmVNYXBwaW5nV2hpdGVQb2ludCIsamEudG9uZU1hcHBpbmdXaGl0ZVBvaW50KSxtYS5saWdodHMmJnRiKCRhLGZiKSxkYSYmbWEuZm9nJiZvYSgkYSxkYSksbWEuaXNNZXNoQmFzaWNNYXRlcmlhbD9mYSgkYSxtYSk6bWEuaXNNZXNoTGFtYmVydE1hdGVyaWFsPyhmYSgkYSxtYSksdGEoJGEsbWEpKTptYS5pc01lc2hQaG9uZ01hdGVyaWFsPyhmYSgkYSxtYSksbWEuaXNNZXNoVG9vbk1hdGVyaWFsP1RhKCRhLG1hKTpCYSgkYSxtYSkpOm1hLmlzTWVzaFN0YW5kYXJkTWF0ZXJpYWw/KGZhKCRhLG1hKSxtYS5pc01lc2hQaHlzaWNhbE1hdGVyaWFsP0NhKCRhLG1hKTpVYSgkYSxtYSkpOm1hLmlzTWVzaE1hdGNhcE1hdGVyaWFsPyhmYSgkYSxtYSksSGEoJGEsbWEpKTptYS5pc01lc2hEZXB0aE1hdGVyaWFsPyhmYSgkYSxtYSksRGEoJGEsCm1hKSk6bWEuaXNNZXNoRGlzdGFuY2VNYXRlcmlhbD8oZmEoJGEsbWEpLE1hKCRhLG1hKSk6bWEuaXNNZXNoTm9ybWFsTWF0ZXJpYWw/KGZhKCRhLG1hKSxkYigkYSxtYSkpOm1hLmlzTGluZUJhc2ljTWF0ZXJpYWw/KHJhKCRhLG1hKSxtYS5pc0xpbmVEYXNoZWRNYXRlcmlhbCYmcGEoJGEsbWEpKTptYS5pc1BvaW50c01hdGVyaWFsP3FhKCRhLG1hKTptYS5pc1Nwcml0ZU1hdGVyaWFsP3VhKCRhLG1hKTptYS5pc1NoYWRvd01hdGVyaWFsJiYoJGEuY29sb3IudmFsdWUuY29weShtYS5jb2xvciksJGEub3BhY2l0eS52YWx1ZT1tYS5vcGFjaXR5KSx2b2lkIDAhPT0kYS5sdGNfMSYmKCRhLmx0Y18xLnZhbHVlPVdhLkxUQ18xKSx2b2lkIDAhPT0kYS5sdGNfMiYmKCRhLmx0Y18yLnZhbHVlPVdhLkxUQ18yKSx1ZC51cGxvYWQoUmEsT2EudW5pZm9ybXNMaXN0LCRhLE9jKSk7bWEuaXNTaGFkZXJNYXRlcmlhbCYmITA9PT1tYS51bmlmb3Jtc05lZWRVcGRhdGUmJih1ZC51cGxvYWQoUmEsT2EudW5pZm9ybXNMaXN0LAokYSxPYyksbWEudW5pZm9ybXNOZWVkVXBkYXRlPSExKTttYS5pc1Nwcml0ZU1hdGVyaWFsJiZvYi5zZXRWYWx1ZShSYSwiY2VudGVyIixJYS5jZW50ZXIpO29iLnNldFZhbHVlKFJhLCJtb2RlbFZpZXdNYXRyaXgiLElhLm1vZGVsVmlld01hdHJpeCk7b2Iuc2V0VmFsdWUoUmEsIm5vcm1hbE1hdHJpeCIsSWEubm9ybWFsTWF0cml4KTtvYi5zZXRWYWx1ZShSYSwibW9kZWxNYXRyaXgiLElhLm1hdHJpeFdvcmxkKTtyZXR1cm4gQ2J9ZnVuY3Rpb24gZmEoVSxkYSl7VS5vcGFjaXR5LnZhbHVlPWRhLm9wYWNpdHk7ZGEuY29sb3ImJlUuZGlmZnVzZS52YWx1ZS5jb3B5KGRhLmNvbG9yKTtkYS5lbWlzc2l2ZSYmVS5lbWlzc2l2ZS52YWx1ZS5jb3B5KGRhLmVtaXNzaXZlKS5tdWx0aXBseVNjYWxhcihkYS5lbWlzc2l2ZUludGVuc2l0eSk7ZGEubWFwJiYoVS5tYXAudmFsdWU9ZGEubWFwKTtkYS5hbHBoYU1hcCYmKFUuYWxwaGFNYXAudmFsdWU9ZGEuYWxwaGFNYXApO2RhLnNwZWN1bGFyTWFwJiYKKFUuc3BlY3VsYXJNYXAudmFsdWU9ZGEuc3BlY3VsYXJNYXApO2RhLmVudk1hcCYmKFUuZW52TWFwLnZhbHVlPWRhLmVudk1hcCxVLmZsaXBFbnZNYXAudmFsdWU9ZGEuZW52TWFwLmlzQ3ViZVRleHR1cmU/LTE6MSxVLnJlZmxlY3Rpdml0eS52YWx1ZT1kYS5yZWZsZWN0aXZpdHksVS5yZWZyYWN0aW9uUmF0aW8udmFsdWU9ZGEucmVmcmFjdGlvblJhdGlvLFUubWF4TWlwTGV2ZWwudmFsdWU9ZWMuZ2V0KGRhLmVudk1hcCkuX19tYXhNaXBMZXZlbCk7ZGEubGlnaHRNYXAmJihVLmxpZ2h0TWFwLnZhbHVlPWRhLmxpZ2h0TWFwLFUubGlnaHRNYXBJbnRlbnNpdHkudmFsdWU9ZGEubGlnaHRNYXBJbnRlbnNpdHkpO2RhLmFvTWFwJiYoVS5hb01hcC52YWx1ZT1kYS5hb01hcCxVLmFvTWFwSW50ZW5zaXR5LnZhbHVlPWRhLmFvTWFwSW50ZW5zaXR5KTtpZihkYS5tYXApdmFyIG1hPWRhLm1hcDtlbHNlIGRhLnNwZWN1bGFyTWFwP21hPWRhLnNwZWN1bGFyTWFwOmRhLmRpc3BsYWNlbWVudE1hcD8KbWE9ZGEuZGlzcGxhY2VtZW50TWFwOmRhLm5vcm1hbE1hcD9tYT1kYS5ub3JtYWxNYXA6ZGEuYnVtcE1hcD9tYT1kYS5idW1wTWFwOmRhLnJvdWdobmVzc01hcD9tYT1kYS5yb3VnaG5lc3NNYXA6ZGEubWV0YWxuZXNzTWFwP21hPWRhLm1ldGFsbmVzc01hcDpkYS5hbHBoYU1hcD9tYT1kYS5hbHBoYU1hcDpkYS5lbWlzc2l2ZU1hcCYmKG1hPWRhLmVtaXNzaXZlTWFwKTt2b2lkIDAhPT1tYSYmKG1hLmlzV2ViR0xSZW5kZXJUYXJnZXQmJihtYT1tYS50ZXh0dXJlKSwhMD09PW1hLm1hdHJpeEF1dG9VcGRhdGUmJm1hLnVwZGF0ZU1hdHJpeCgpLFUudXZUcmFuc2Zvcm0udmFsdWUuY29weShtYS5tYXRyaXgpKX1mdW5jdGlvbiByYShVLGRhKXtVLmRpZmZ1c2UudmFsdWUuY29weShkYS5jb2xvcik7VS5vcGFjaXR5LnZhbHVlPWRhLm9wYWNpdHl9ZnVuY3Rpb24gcGEoVSxkYSl7VS5kYXNoU2l6ZS52YWx1ZT1kYS5kYXNoU2l6ZTtVLnRvdGFsU2l6ZS52YWx1ZT1kYS5kYXNoU2l6ZStkYS5nYXBTaXplOwpVLnNjYWxlLnZhbHVlPWRhLnNjYWxlfWZ1bmN0aW9uIHFhKFUsZGEpe1UuZGlmZnVzZS52YWx1ZS5jb3B5KGRhLmNvbG9yKTtVLm9wYWNpdHkudmFsdWU9ZGEub3BhY2l0eTtVLnNpemUudmFsdWU9ZGEuc2l6ZSpjYztVLnNjYWxlLnZhbHVlPS41KnpjO1UubWFwLnZhbHVlPWRhLm1hcDtudWxsIT09ZGEubWFwJiYoITA9PT1kYS5tYXAubWF0cml4QXV0b1VwZGF0ZSYmZGEubWFwLnVwZGF0ZU1hdHJpeCgpLFUudXZUcmFuc2Zvcm0udmFsdWUuY29weShkYS5tYXAubWF0cml4KSl9ZnVuY3Rpb24gdWEoVSxkYSl7VS5kaWZmdXNlLnZhbHVlLmNvcHkoZGEuY29sb3IpO1Uub3BhY2l0eS52YWx1ZT1kYS5vcGFjaXR5O1Uucm90YXRpb24udmFsdWU9ZGEucm90YXRpb247VS5tYXAudmFsdWU9ZGEubWFwO251bGwhPT1kYS5tYXAmJighMD09PWRhLm1hcC5tYXRyaXhBdXRvVXBkYXRlJiZkYS5tYXAudXBkYXRlTWF0cml4KCksVS51dlRyYW5zZm9ybS52YWx1ZS5jb3B5KGRhLm1hcC5tYXRyaXgpKX0KZnVuY3Rpb24gb2EoVSxkYSl7VS5mb2dDb2xvci52YWx1ZS5jb3B5KGRhLmNvbG9yKTtkYS5pc0ZvZz8oVS5mb2dOZWFyLnZhbHVlPWRhLm5lYXIsVS5mb2dGYXIudmFsdWU9ZGEuZmFyKTpkYS5pc0ZvZ0V4cDImJihVLmZvZ0RlbnNpdHkudmFsdWU9ZGEuZGVuc2l0eSl9ZnVuY3Rpb24gdGEoVSxkYSl7ZGEuZW1pc3NpdmVNYXAmJihVLmVtaXNzaXZlTWFwLnZhbHVlPWRhLmVtaXNzaXZlTWFwKX1mdW5jdGlvbiBCYShVLGRhKXtVLnNwZWN1bGFyLnZhbHVlLmNvcHkoZGEuc3BlY3VsYXIpO1Uuc2hpbmluZXNzLnZhbHVlPU1hdGgubWF4KGRhLnNoaW5pbmVzcywxRS00KTtkYS5lbWlzc2l2ZU1hcCYmKFUuZW1pc3NpdmVNYXAudmFsdWU9ZGEuZW1pc3NpdmVNYXApO2RhLmJ1bXBNYXAmJihVLmJ1bXBNYXAudmFsdWU9ZGEuYnVtcE1hcCxVLmJ1bXBTY2FsZS52YWx1ZT1kYS5idW1wU2NhbGUsMT09PWRhLnNpZGUmJihVLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtkYS5ub3JtYWxNYXAmJihVLm5vcm1hbE1hcC52YWx1ZT0KZGEubm9ybWFsTWFwLFUubm9ybWFsU2NhbGUudmFsdWUuY29weShkYS5ub3JtYWxTY2FsZSksMT09PWRhLnNpZGUmJlUubm9ybWFsU2NhbGUudmFsdWUubmVnYXRlKCkpO2RhLmRpc3BsYWNlbWVudE1hcCYmKFUuZGlzcGxhY2VtZW50TWFwLnZhbHVlPWRhLmRpc3BsYWNlbWVudE1hcCxVLmRpc3BsYWNlbWVudFNjYWxlLnZhbHVlPWRhLmRpc3BsYWNlbWVudFNjYWxlLFUuZGlzcGxhY2VtZW50Qmlhcy52YWx1ZT1kYS5kaXNwbGFjZW1lbnRCaWFzKX1mdW5jdGlvbiBUYShVLGRhKXtCYShVLGRhKTtkYS5ncmFkaWVudE1hcCYmKFUuZ3JhZGllbnRNYXAudmFsdWU9ZGEuZ3JhZGllbnRNYXApfWZ1bmN0aW9uIFVhKFUsZGEpe1Uucm91Z2huZXNzLnZhbHVlPWRhLnJvdWdobmVzcztVLm1ldGFsbmVzcy52YWx1ZT1kYS5tZXRhbG5lc3M7ZGEucm91Z2huZXNzTWFwJiYoVS5yb3VnaG5lc3NNYXAudmFsdWU9ZGEucm91Z2huZXNzTWFwKTtkYS5tZXRhbG5lc3NNYXAmJihVLm1ldGFsbmVzc01hcC52YWx1ZT0KZGEubWV0YWxuZXNzTWFwKTtkYS5lbWlzc2l2ZU1hcCYmKFUuZW1pc3NpdmVNYXAudmFsdWU9ZGEuZW1pc3NpdmVNYXApO2RhLmJ1bXBNYXAmJihVLmJ1bXBNYXAudmFsdWU9ZGEuYnVtcE1hcCxVLmJ1bXBTY2FsZS52YWx1ZT1kYS5idW1wU2NhbGUsMT09PWRhLnNpZGUmJihVLmJ1bXBTY2FsZS52YWx1ZSo9LTEpKTtkYS5ub3JtYWxNYXAmJihVLm5vcm1hbE1hcC52YWx1ZT1kYS5ub3JtYWxNYXAsVS5ub3JtYWxTY2FsZS52YWx1ZS5jb3B5KGRhLm5vcm1hbFNjYWxlKSwxPT09ZGEuc2lkZSYmVS5ub3JtYWxTY2FsZS52YWx1ZS5uZWdhdGUoKSk7ZGEuZGlzcGxhY2VtZW50TWFwJiYoVS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZGEuZGlzcGxhY2VtZW50TWFwLFUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZGEuZGlzcGxhY2VtZW50U2NhbGUsVS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPWRhLmRpc3BsYWNlbWVudEJpYXMpO2RhLmVudk1hcCYmKFUuZW52TWFwSW50ZW5zaXR5LnZhbHVlPQpkYS5lbnZNYXBJbnRlbnNpdHkpfWZ1bmN0aW9uIENhKFUsZGEpe1VhKFUsZGEpO1UucmVmbGVjdGl2aXR5LnZhbHVlPWRhLnJlZmxlY3Rpdml0eTtVLmNsZWFyY29hdC52YWx1ZT1kYS5jbGVhcmNvYXQ7VS5jbGVhcmNvYXRSb3VnaG5lc3MudmFsdWU9ZGEuY2xlYXJjb2F0Um91Z2huZXNzO2RhLnNoZWVuJiZVLnNoZWVuLnZhbHVlLmNvcHkoZGEuc2hlZW4pO2RhLmNsZWFyY29hdE5vcm1hbE1hcCYmKFUuY2xlYXJjb2F0Tm9ybWFsU2NhbGUudmFsdWUuY29weShkYS5jbGVhcmNvYXROb3JtYWxTY2FsZSksVS5jbGVhcmNvYXROb3JtYWxNYXAudmFsdWU9ZGEuY2xlYXJjb2F0Tm9ybWFsTWFwLDE9PT1kYS5zaWRlJiZVLmNsZWFyY29hdE5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtVLnRyYW5zcGFyZW5jeS52YWx1ZT1kYS50cmFuc3BhcmVuY3l9ZnVuY3Rpb24gSGEoVSxkYSl7ZGEubWF0Y2FwJiYoVS5tYXRjYXAudmFsdWU9ZGEubWF0Y2FwKTtkYS5idW1wTWFwJiYoVS5idW1wTWFwLnZhbHVlPQpkYS5idW1wTWFwLFUuYnVtcFNjYWxlLnZhbHVlPWRhLmJ1bXBTY2FsZSwxPT09ZGEuc2lkZSYmKFUuYnVtcFNjYWxlLnZhbHVlKj0tMSkpO2RhLm5vcm1hbE1hcCYmKFUubm9ybWFsTWFwLnZhbHVlPWRhLm5vcm1hbE1hcCxVLm5vcm1hbFNjYWxlLnZhbHVlLmNvcHkoZGEubm9ybWFsU2NhbGUpLDE9PT1kYS5zaWRlJiZVLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtkYS5kaXNwbGFjZW1lbnRNYXAmJihVLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1kYS5kaXNwbGFjZW1lbnRNYXAsVS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1kYS5kaXNwbGFjZW1lbnRTY2FsZSxVLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZGEuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gRGEoVSxkYSl7ZGEuZGlzcGxhY2VtZW50TWFwJiYoVS5kaXNwbGFjZW1lbnRNYXAudmFsdWU9ZGEuZGlzcGxhY2VtZW50TWFwLFUuZGlzcGxhY2VtZW50U2NhbGUudmFsdWU9ZGEuZGlzcGxhY2VtZW50U2NhbGUsVS5kaXNwbGFjZW1lbnRCaWFzLnZhbHVlPQpkYS5kaXNwbGFjZW1lbnRCaWFzKX1mdW5jdGlvbiBNYShVLGRhKXtkYS5kaXNwbGFjZW1lbnRNYXAmJihVLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1kYS5kaXNwbGFjZW1lbnRNYXAsVS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1kYS5kaXNwbGFjZW1lbnRTY2FsZSxVLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZGEuZGlzcGxhY2VtZW50Qmlhcyk7VS5yZWZlcmVuY2VQb3NpdGlvbi52YWx1ZS5jb3B5KGRhLnJlZmVyZW5jZVBvc2l0aW9uKTtVLm5lYXJEaXN0YW5jZS52YWx1ZT1kYS5uZWFyRGlzdGFuY2U7VS5mYXJEaXN0YW5jZS52YWx1ZT1kYS5mYXJEaXN0YW5jZX1mdW5jdGlvbiBkYihVLGRhKXtkYS5idW1wTWFwJiYoVS5idW1wTWFwLnZhbHVlPWRhLmJ1bXBNYXAsVS5idW1wU2NhbGUudmFsdWU9ZGEuYnVtcFNjYWxlLDE9PT1kYS5zaWRlJiYoVS5idW1wU2NhbGUudmFsdWUqPS0xKSk7ZGEubm9ybWFsTWFwJiYoVS5ub3JtYWxNYXAudmFsdWU9ZGEubm9ybWFsTWFwLFUubm9ybWFsU2NhbGUudmFsdWUuY29weShkYS5ub3JtYWxTY2FsZSksCjE9PT1kYS5zaWRlJiZVLm5vcm1hbFNjYWxlLnZhbHVlLm5lZ2F0ZSgpKTtkYS5kaXNwbGFjZW1lbnRNYXAmJihVLmRpc3BsYWNlbWVudE1hcC52YWx1ZT1kYS5kaXNwbGFjZW1lbnRNYXAsVS5kaXNwbGFjZW1lbnRTY2FsZS52YWx1ZT1kYS5kaXNwbGFjZW1lbnRTY2FsZSxVLmRpc3BsYWNlbWVudEJpYXMudmFsdWU9ZGEuZGlzcGxhY2VtZW50Qmlhcyl9ZnVuY3Rpb24gdGIoVSxkYSl7VS5hbWJpZW50TGlnaHRDb2xvci5uZWVkc1VwZGF0ZT1kYTtVLmxpZ2h0UHJvYmUubmVlZHNVcGRhdGU9ZGE7VS5kaXJlY3Rpb25hbExpZ2h0cy5uZWVkc1VwZGF0ZT1kYTtVLnBvaW50TGlnaHRzLm5lZWRzVXBkYXRlPWRhO1Uuc3BvdExpZ2h0cy5uZWVkc1VwZGF0ZT1kYTtVLnJlY3RBcmVhTGlnaHRzLm5lZWRzVXBkYXRlPWRhO1UuaGVtaXNwaGVyZUxpZ2h0cy5uZWVkc1VwZGF0ZT1kYX1hPWF8fHt9O3ZhciBLYT12b2lkIDAhPT1hLmNhbnZhcz9hLmNhbnZhczpkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLAoiY2FudmFzIiksYmI9dm9pZCAwIT09YS5jb250ZXh0P2EuY29udGV4dDpudWxsLGpiPXZvaWQgMCE9PWEuYWxwaGE/YS5hbHBoYTohMSxFYj12b2lkIDAhPT1hLmRlcHRoP2EuZGVwdGg6ITAseGI9dm9pZCAwIT09YS5zdGVuY2lsP2Euc3RlbmNpbDohMCxpYT12b2lkIDAhPT1hLmFudGlhbGlhcz9hLmFudGlhbGlhczohMSxuYT12b2lkIDAhPT1hLnByZW11bHRpcGxpZWRBbHBoYT9hLnByZW11bHRpcGxpZWRBbHBoYTohMCx6YT12b2lkIDAhPT1hLnByZXNlcnZlRHJhd2luZ0J1ZmZlcj9hLnByZXNlcnZlRHJhd2luZ0J1ZmZlcjohMSxKYT12b2lkIDAhPT1hLnBvd2VyUHJlZmVyZW5jZT9hLnBvd2VyUHJlZmVyZW5jZToiZGVmYXVsdCIsWWE9dm9pZCAwIT09YS5mYWlsSWZNYWpvclBlcmZvcm1hbmNlQ2F2ZWF0P2EuZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdDohMSxOYT1udWxsLGNiPW51bGw7dGhpcy5kb21FbGVtZW50PUthO3RoaXMuZGVidWc9e2NoZWNrU2hhZGVyRXJyb3JzOiEwfTsKdGhpcy5zb3J0T2JqZWN0cz10aGlzLmF1dG9DbGVhclN0ZW5jaWw9dGhpcy5hdXRvQ2xlYXJEZXB0aD10aGlzLmF1dG9DbGVhckNvbG9yPXRoaXMuYXV0b0NsZWFyPSEwO3RoaXMuY2xpcHBpbmdQbGFuZXM9W107dGhpcy5sb2NhbENsaXBwaW5nRW5hYmxlZD0hMTt0aGlzLmdhbW1hRmFjdG9yPTI7dGhpcy5waHlzaWNhbGx5Q29ycmVjdExpZ2h0cz10aGlzLmdhbW1hT3V0cHV0PXRoaXMuZ2FtbWFJbnB1dD0hMTt0aGlzLnRvbmVNYXBwaW5nV2hpdGVQb2ludD10aGlzLnRvbmVNYXBwaW5nRXhwb3N1cmU9dGhpcy50b25lTWFwcGluZz0xO3RoaXMubWF4TW9ycGhUYXJnZXRzPTg7dGhpcy5tYXhNb3JwaE5vcm1hbHM9NDt2YXIgamE9dGhpcyxHYT0hMSxMYT1udWxsLG5iPTAsVmE9MCxpYj1udWxsLGtiPW51bGwsUWE9LTE7dmFyIGViPWM9bnVsbDt2YXIgbWI9ITE7dmFyIHBiPW51bGwsc2I9bnVsbCxLYj1uZXcgcCxTYj1uZXcgcCxuYz1udWxsLFFjPUthLndpZHRoLHpjPUthLmhlaWdodCwKY2M9MSx3ZT1uZXcgcCgwLDAsUWMsemMpLHZlPW5ldyBwKDAsMCxRYyx6YyksU2g9ITEsUWg9bmV3IGljLHljPW5ldyB3Yyx4Zz0hMSxSaD0hMSx3Zj1uZXcgcSx6ZD1uZXcgazt0cnl7amI9e2FscGhhOmpiLGRlcHRoOkViLHN0ZW5jaWw6eGIsYW50aWFsaWFzOmlhLHByZW11bHRpcGxpZWRBbHBoYTpuYSxwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6emEscG93ZXJQcmVmZXJlbmNlOkphLGZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXQ6WWEseHJDb21wYXRpYmxlOiEwfTtLYS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixyLCExKTtLYS5hZGRFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsdiwhMSk7dmFyIFJhPWJifHxLYS5nZXRDb250ZXh0KCJ3ZWJnbCIsamIpfHxLYS5nZXRDb250ZXh0KCJleHBlcmltZW50YWwtd2ViZ2wiLGpiKTtpZihudWxsPT09UmEpe2lmKG51bGwhPT1LYS5nZXRDb250ZXh0KCJ3ZWJnbCIpKXRocm93IEVycm9yKCJFcnJvciBjcmVhdGluZyBXZWJHTCBjb250ZXh0IHdpdGggeW91ciBzZWxlY3RlZCBhdHRyaWJ1dGVzLiIpOwp0aHJvdyBFcnJvcigiRXJyb3IgY3JlYXRpbmcgV2ViR0wgY29udGV4dC4iKTt9dm9pZCAwPT09UmEuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0JiYoUmEuZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0PWZ1bmN0aW9uKCl7cmV0dXJue3JhbmdlTWluOjEscmFuZ2VNYXg6MSxwcmVjaXNpb246MX19KX1jYXRjaChVKXt0aHJvdyBjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAiK1UubWVzc2FnZSksVTt9dmFyIExiLGRjLHliLHhkLGVjLE9jLHZnLFBoLHhlLFBkLHdnLHllLHlkLEJqLENqLERqLE5jO2coKTt2YXIgZGQ9InVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yJiYieHIiaW4gbmF2aWdhdG9yJiYic3VwcG9ydHNTZXNzaW9uImluIG5hdmlnYXRvci54cj9uZXcgQWooamEsUmEpOm5ldyBOaChqYSk7dGhpcy52cj1kZDt2YXIgRWo9bmV3IHZqKGphLHhlLGRjLm1heFRleHR1cmVTaXplKTt0aGlzLnNoYWRvd01hcD1Fajt0aGlzLmdldENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gUmF9Owp0aGlzLmdldENvbnRleHRBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7cmV0dXJuIFJhLmdldENvbnRleHRBdHRyaWJ1dGVzKCl9O3RoaXMuZm9yY2VDb250ZXh0TG9zcz1mdW5jdGlvbigpe3ZhciBVPUxiLmdldCgiV0VCR0xfbG9zZV9jb250ZXh0Iik7VSYmVS5sb3NlQ29udGV4dCgpfTt0aGlzLmZvcmNlQ29udGV4dFJlc3RvcmU9ZnVuY3Rpb24oKXt2YXIgVT1MYi5nZXQoIldFQkdMX2xvc2VfY29udGV4dCIpO1UmJlUucmVzdG9yZUNvbnRleHQoKX07dGhpcy5nZXRQaXhlbFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIGNjfTt0aGlzLnNldFBpeGVsUmF0aW89ZnVuY3Rpb24oKXt2YXIgVT13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbzt2b2lkIDAhPT1VJiYoY2M9VSx0aGlzLnNldFNpemUoUWMsemMsITEpKX07dGhpcy5nZXRTaXplPWZ1bmN0aW9uKFUpe3ZvaWQgMD09PVUmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRzaXplKCkgbm93IHJlcXVpcmVzIGEgVmVjdG9yMiBhcyBhbiBhcmd1bWVudCIpLApVPW5ldyBmKTtyZXR1cm4gVS5zZXQoUWMsemMpfTt0aGlzLnNldFNpemU9ZnVuY3Rpb24oVSxkYSxtYSl7ZGQuaXNQcmVzZW50aW5nKCk/Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiBDYW4ndCBjaGFuZ2Ugc2l6ZSB3aGlsZSBWUiBkZXZpY2UgaXMgcHJlc2VudGluZy4iKTooUWM9VSx6Yz1kYSxLYS53aWR0aD1NYXRoLmZsb29yKFUqY2MpLEthLmhlaWdodD1NYXRoLmZsb29yKGRhKmNjKSwhMSE9PW1hJiYoS2Euc3R5bGUud2lkdGg9VSsicHgiLEthLnN0eWxlLmhlaWdodD1kYSsicHgiKSx0aGlzLnNldFZpZXdwb3J0KFUsZGEpKX07dGhpcy5nZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihVKXt2b2lkIDA9PT1VJiYoY29uc29sZS53YXJuKCJXZWJHTFJlbmRlcmVyOiAuZ2V0ZHJhd2luZ0J1ZmZlclNpemUoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3IyIGFzIGFuIGFyZ3VtZW50IiksVT1uZXcgZik7cmV0dXJuIFUuc2V0KFFjKmNjLHpjKmNjKS5mbG9vcigpfTsKdGhpcy5zZXREcmF3aW5nQnVmZmVyU2l6ZT1mdW5jdGlvbihVLGRhLG1hKXtRYz1VO3pjPWRhO2NjPW1hO0thLndpZHRoPU1hdGguZmxvb3IoVSptYSk7S2EuaGVpZ2h0PU1hdGguZmxvb3IoZGEqbWEpO3RoaXMuc2V0Vmlld3BvcnQoVSxkYSl9O3RoaXMuZ2V0Q3VycmVudFZpZXdwb3J0PWZ1bmN0aW9uKFUpe3ZvaWQgMD09PVUmJihjb25zb2xlLndhcm4oIldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50Vmlld3BvcnQoKSBub3cgcmVxdWlyZXMgYSBWZWN0b3I0IGFzIGFuIGFyZ3VtZW50IiksVT1uZXcgcCk7cmV0dXJuIFUuY29weShLYil9O3RoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24oVSl7cmV0dXJuIFUuY29weSh3ZSl9O3RoaXMuc2V0Vmlld3BvcnQ9ZnVuY3Rpb24oVSxkYSl7KDApLmlzVmVjdG9yND93ZS5zZXQoKDApLngsKDApLnksKDApLnosKDApLncpOndlLnNldCgwLDAsVSxkYSk7eWIudmlld3BvcnQoS2IuY29weSh3ZSkubXVsdGlwbHlTY2FsYXIoY2MpLmZsb29yKCkpfTsKdGhpcy5nZXRTY2lzc29yPWZ1bmN0aW9uKFUpe3JldHVybiBVLmNvcHkodmUpfTt0aGlzLnNldFNjaXNzb3I9ZnVuY3Rpb24oVSxkYSxtYSxJYSl7VS5pc1ZlY3RvcjQ/dmUuc2V0KFUueCxVLnksVS56LFUudyk6dmUuc2V0KFUsZGEsbWEsSWEpO3liLnNjaXNzb3IoU2IuY29weSh2ZSkubXVsdGlwbHlTY2FsYXIoY2MpLmZsb29yKCkpfTt0aGlzLmdldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKCl7cmV0dXJuIFNofTt0aGlzLnNldFNjaXNzb3JUZXN0PWZ1bmN0aW9uKFUpe3liLnNldFNjaXNzb3JUZXN0KFNoPVUpfTt0aGlzLmdldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXtyZXR1cm4geWQuZ2V0Q2xlYXJDb2xvcigpfTt0aGlzLnNldENsZWFyQ29sb3I9ZnVuY3Rpb24oKXt5ZC5zZXRDbGVhckNvbG9yLmFwcGx5KHlkLGFyZ3VtZW50cyl9O3RoaXMuZ2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3JldHVybiB5ZC5nZXRDbGVhckFscGhhKCl9O3RoaXMuc2V0Q2xlYXJBbHBoYT1mdW5jdGlvbigpe3lkLnNldENsZWFyQWxwaGEuYXBwbHkoeWQsCmFyZ3VtZW50cyl9O3RoaXMuY2xlYXI9ZnVuY3Rpb24oVSxkYSxtYSl7dmFyIElhPTA7aWYodm9pZCAwPT09VXx8VSlJYXw9MTYzODQ7aWYodm9pZCAwPT09ZGF8fGRhKUlhfD0yNTY7aWYodm9pZCAwPT09bWF8fG1hKUlhfD0xMDI0O1JhLmNsZWFyKElhKX07dGhpcy5jbGVhckNvbG9yPWZ1bmN0aW9uKCl7dGhpcy5jbGVhcighMCwhMSwhMSl9O3RoaXMuY2xlYXJEZXB0aD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITAsITEpfTt0aGlzLmNsZWFyU3RlbmNpbD1mdW5jdGlvbigpe3RoaXMuY2xlYXIoITEsITEsITApfTt0aGlzLmRpc3Bvc2U9ZnVuY3Rpb24oKXtLYS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRsb3N0IixyLCExKTtLYS5yZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJnbGNvbnRleHRyZXN0b3JlZCIsdiwhMSk7d2cuZGlzcG9zZSgpO3llLmRpc3Bvc2UoKTtlYy5kaXNwb3NlKCk7eGUuZGlzcG9zZSgpO2RkLmRpc3Bvc2UoKTt5Zy5zdG9wKCl9O3RoaXMucmVuZGVyQnVmZmVySW1tZWRpYXRlPQpmdW5jdGlvbihVLGRhKXt5Yi5pbml0QXR0cmlidXRlcygpO3ZhciBtYT1lYy5nZXQoVSk7VS5oYXNQb3NpdGlvbnMmJiFtYS5wb3NpdGlvbiYmKG1hLnBvc2l0aW9uPVJhLmNyZWF0ZUJ1ZmZlcigpKTtVLmhhc05vcm1hbHMmJiFtYS5ub3JtYWwmJihtYS5ub3JtYWw9UmEuY3JlYXRlQnVmZmVyKCkpO1UuaGFzVXZzJiYhbWEudXYmJihtYS51dj1SYS5jcmVhdGVCdWZmZXIoKSk7VS5oYXNDb2xvcnMmJiFtYS5jb2xvciYmKG1hLmNvbG9yPVJhLmNyZWF0ZUJ1ZmZlcigpKTtkYT1kYS5nZXRBdHRyaWJ1dGVzKCk7VS5oYXNQb3NpdGlvbnMmJihSYS5iaW5kQnVmZmVyKDM0OTYyLG1hLnBvc2l0aW9uKSxSYS5idWZmZXJEYXRhKDM0OTYyLFUucG9zaXRpb25BcnJheSwzNTA0OCkseWIuZW5hYmxlQXR0cmlidXRlKGRhLnBvc2l0aW9uKSxSYS52ZXJ0ZXhBdHRyaWJQb2ludGVyKGRhLnBvc2l0aW9uLDMsNTEyNiwhMSwwLDApKTtVLmhhc05vcm1hbHMmJihSYS5iaW5kQnVmZmVyKDM0OTYyLG1hLm5vcm1hbCksClJhLmJ1ZmZlckRhdGEoMzQ5NjIsVS5ub3JtYWxBcnJheSwzNTA0OCkseWIuZW5hYmxlQXR0cmlidXRlKGRhLm5vcm1hbCksUmEudmVydGV4QXR0cmliUG9pbnRlcihkYS5ub3JtYWwsMyw1MTI2LCExLDAsMCkpO1UuaGFzVXZzJiYoUmEuYmluZEJ1ZmZlcigzNDk2MixtYS51diksUmEuYnVmZmVyRGF0YSgzNDk2MixVLnV2QXJyYXksMzUwNDgpLHliLmVuYWJsZUF0dHJpYnV0ZShkYS51diksUmEudmVydGV4QXR0cmliUG9pbnRlcihkYS51diwyLDUxMjYsITEsMCwwKSk7VS5oYXNDb2xvcnMmJihSYS5iaW5kQnVmZmVyKDM0OTYyLG1hLmNvbG9yKSxSYS5idWZmZXJEYXRhKDM0OTYyLFUuY29sb3JBcnJheSwzNTA0OCkseWIuZW5hYmxlQXR0cmlidXRlKGRhLmNvbG9yKSxSYS52ZXJ0ZXhBdHRyaWJQb2ludGVyKGRhLmNvbG9yLDMsNTEyNiwhMSwwLDApKTt5Yi5kaXNhYmxlVW51c2VkQXR0cmlidXRlcygpO1JhLmRyYXdBcnJheXMoNCwwLFUuY291bnQpO1UuY291bnQ9MH07dGhpcy5yZW5kZXJCdWZmZXJEaXJlY3Q9CmZ1bmN0aW9uKFUsZGEsbWEsSWEsT2EsYWIpe3liLnNldE1hdGVyaWFsKElhLE9hLmlzTWVzaCYmMD5PYS5tYXRyaXhXb3JsZC5kZXRlcm1pbmFudCgpKTt2YXIgUGE9aGEoVSxkYSxJYSxPYSksZmI9ITE7aWYoYyE9PW1hLmlkfHxlYiE9PVBhLmlkfHxtYiE9PSghMD09PUlhLndpcmVmcmFtZSkpYz1tYS5pZCxlYj1QYS5pZCxtYj0hMD09PUlhLndpcmVmcmFtZSxmYj0hMDtPYS5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJihCai51cGRhdGUoT2EsbWEsSWEsUGEpLGZiPSEwKTt2YXIgQ2I9bWEuaW5kZXgsb2I9bWEuYXR0cmlidXRlcy5wb3NpdGlvbjtkYT0xOyEwPT09SWEud2lyZWZyYW1lJiYoQ2I9UGguZ2V0V2lyZWZyYW1lQXR0cmlidXRlKG1hKSxkYT0yKTtVPUNqO2lmKG51bGwhPT1DYil7dmFyICRhPXZnLmdldChDYik7VT1EajtVLnNldEluZGV4KCRhKX1mYiYmKFAoSWEsUGEsbWEpLG51bGwhPT1DYiYmUmEuYmluZEJ1ZmZlcigzNDk2MywkYS5idWZmZXIpKTskYT1JbmZpbml0eTsKbnVsbCE9PUNiPyRhPUNiLmNvdW50OnZvaWQgMCE9PW9iJiYoJGE9b2IuY291bnQpO29iPW1hLmRyYXdSYW5nZS5zdGFydCpkYTtQYT1udWxsIT09YWI/YWIuc3RhcnQqZGE6MDtDYj1NYXRoLm1heChvYixQYSk7YWI9TWF0aC5tYXgoMCxNYXRoLm1pbigkYSxvYittYS5kcmF3UmFuZ2UuY291bnQqZGEsUGErKG51bGwhPT1hYj9hYi5jb3VudCpkYTpJbmZpbml0eSkpLTEtQ2IrMSk7aWYoMCE9PWFiKXtpZihPYS5pc01lc2gpaWYoITA9PT1JYS53aXJlZnJhbWUpeWIuc2V0TGluZVdpZHRoKElhLndpcmVmcmFtZUxpbmV3aWR0aCplKCkpLFUuc2V0TW9kZSgxKTtlbHNlIHN3aXRjaChPYS5kcmF3TW9kZSl7Y2FzZSAwOlUuc2V0TW9kZSg0KTticmVhaztjYXNlIDE6VS5zZXRNb2RlKDUpO2JyZWFrO2Nhc2UgMjpVLnNldE1vZGUoNil9ZWxzZSBPYS5pc0xpbmU/KElhPUlhLmxpbmV3aWR0aCx2b2lkIDA9PT1JYSYmKElhPTEpLHliLnNldExpbmVXaWR0aChJYSplKCkpLE9hLmlzTGluZVNlZ21lbnRzPwpVLnNldE1vZGUoMSk6T2EuaXNMaW5lTG9vcD9VLnNldE1vZGUoMik6VS5zZXRNb2RlKDMpKTpPYS5pc1BvaW50cz9VLnNldE1vZGUoMCk6T2EuaXNTcHJpdGUmJlUuc2V0TW9kZSg0KTttYSYmbWEuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT8wPG1hLm1heEluc3RhbmNlZENvdW50JiZVLnJlbmRlckluc3RhbmNlcyhtYSxDYixhYik6VS5yZW5kZXIoQ2IsYWIpfX07dGhpcy5jb21waWxlPWZ1bmN0aW9uKFUsZGEpe2NiPXllLmdldChVLGRhKTtjYi5pbml0KCk7VS50cmF2ZXJzZShmdW5jdGlvbihtYSl7bWEuaXNMaWdodCYmKGNiLnB1c2hMaWdodChtYSksbWEuY2FzdFNoYWRvdyYmY2IucHVzaFNoYWRvdyhtYSkpfSk7Y2Iuc2V0dXBMaWdodHMoZGEpO1UudHJhdmVyc2UoZnVuY3Rpb24obWEpe2lmKG1hLm1hdGVyaWFsKWlmKEFycmF5LmlzQXJyYXkobWEubWF0ZXJpYWwpKWZvcih2YXIgSWE9MDtJYTxtYS5tYXRlcmlhbC5sZW5ndGg7SWErKylXKG1hLm1hdGVyaWFsW0lhXSxVLmZvZywKbWEpO2Vsc2UgVyhtYS5tYXRlcmlhbCxVLmZvZyxtYSl9KX07dmFyIFRoPW51bGwseWc9bmV3IGJjO3lnLnNldEFuaW1hdGlvbkxvb3AoZnVuY3Rpb24oVSl7ZGQuaXNQcmVzZW50aW5nKCl8fFRoJiZUaChVKX0pOyJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdyYmeWcuc2V0Q29udGV4dCh3aW5kb3cpO3RoaXMuc2V0QW5pbWF0aW9uTG9vcD1mdW5jdGlvbihVKXtUaD1VO2RkLnNldEFuaW1hdGlvbkxvb3AoVSk7eWcuc3RhcnQoKX07dGhpcy5yZW5kZXI9ZnVuY3Rpb24oVSxkYSxtYSxJYSl7aWYodm9pZCAwIT09bWEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZW5kZXIoKTogdGhlIHJlbmRlclRhcmdldCBhcmd1bWVudCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGluc3RlYWQuIik7dmFyIE9hPW1hfWlmKHZvaWQgMCE9PUlhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyKCk6IHRoZSBmb3JjZUNsZWFyIGFyZ3VtZW50IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuY2xlYXIoKSBpbnN0ZWFkLiIpOwp2YXIgYWI9SWF9ZGEmJmRhLmlzQ2FtZXJhP0dhfHwoZWI9Yz1udWxsLG1iPSExLFFhPS0xLHBiPW51bGwsITA9PT1VLmF1dG9VcGRhdGUmJlUudXBkYXRlTWF0cml4V29ybGQoKSxudWxsPT09ZGEucGFyZW50JiZkYS51cGRhdGVNYXRyaXhXb3JsZCgpLGRkLmVuYWJsZWQmJihkYT1kZC5nZXRDYW1lcmEoZGEpKSxjYj15ZS5nZXQoVSxkYSksY2IuaW5pdCgpLFUub25CZWZvcmVSZW5kZXIoamEsVSxkYSxPYXx8aWIpLHdmLm11bHRpcGx5TWF0cmljZXMoZGEucHJvamVjdGlvbk1hdHJpeCxkYS5tYXRyaXhXb3JsZEludmVyc2UpLFFoLnNldEZyb21NYXRyaXgod2YpLFJoPXRoaXMubG9jYWxDbGlwcGluZ0VuYWJsZWQseGc9eWMuaW5pdCh0aGlzLmNsaXBwaW5nUGxhbmVzLFJoLGRhKSxOYT13Zy5nZXQoVSxkYSksTmEuaW5pdCgpLFIoVSxkYSwwLGphLnNvcnRPYmplY3RzKSwhMD09PWphLnNvcnRPYmplY3RzJiZOYS5zb3J0KCkseGcmJnljLmJlZ2luU2hhZG93cygpLEVqLnJlbmRlcihjYi5zdGF0ZS5zaGFkb3dzQXJyYXksClUsZGEpLGNiLnNldHVwTGlnaHRzKGRhKSx4ZyYmeWMuZW5kU2hhZG93cygpLHRoaXMuaW5mby5hdXRvUmVzZXQmJnRoaXMuaW5mby5yZXNldCgpLHZvaWQgMCE9PU9hJiZ0aGlzLnNldFJlbmRlclRhcmdldChPYSkseWQucmVuZGVyKE5hLFUsZGEsYWIpLG1hPU5hLm9wYXF1ZSxJYT1OYS50cmFuc3BhcmVudCxVLm92ZXJyaWRlTWF0ZXJpYWw/KE9hPVUub3ZlcnJpZGVNYXRlcmlhbCxtYS5sZW5ndGgmJlMobWEsVSxkYSxPYSksSWEubGVuZ3RoJiZTKElhLFUsZGEsT2EpKToobWEubGVuZ3RoJiZTKG1hLFUsZGEpLElhLmxlbmd0aCYmUyhJYSxVLGRhKSksbnVsbCE9PWliJiYoT2MudXBkYXRlUmVuZGVyVGFyZ2V0TWlwbWFwKGliKSxPYy51cGRhdGVNdWx0aXNhbXBsZVJlbmRlclRhcmdldChpYikpLHliLmJ1ZmZlcnMuZGVwdGguc2V0VGVzdCghMCkseWIuYnVmZmVycy5kZXB0aC5zZXRNYXNrKCEwKSx5Yi5idWZmZXJzLmNvbG9yLnNldE1hc2soITApLHliLnNldFBvbHlnb25PZmZzZXQoITEpLApkZC5lbmFibGVkJiZkZC5zdWJtaXRGcmFtZSgpLGNiPU5hPW51bGwpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVuZGVyOiBjYW1lcmEgaXMgbm90IGFuIGluc3RhbmNlIG9mIFRIUkVFLkNhbWVyYS4iKX07dGhpcy5zZXRGcmFtZWJ1ZmZlcj1mdW5jdGlvbihVKXtMYSE9PVUmJlJhLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxVKTtMYT1VfTt0aGlzLmdldEFjdGl2ZUN1YmVGYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ifTt0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIFZhfTt0aGlzLmdldFJlbmRlclRhcmdldD1mdW5jdGlvbigpe3JldHVybiBpYn07dGhpcy5zZXRSZW5kZXJUYXJnZXQ9ZnVuY3Rpb24oVSxkYSxtYSl7aWI9VTtuYj1kYTtWYT1tYTtVJiZ2b2lkIDA9PT1lYy5nZXQoVSkuX193ZWJnbEZyYW1lYnVmZmVyJiZPYy5zZXR1cFJlbmRlclRhcmdldChVKTt2YXIgSWE9TGEsT2E9ITE7VT8oSWE9ZWMuZ2V0KFUpLl9fd2ViZ2xGcmFtZWJ1ZmZlciwKVS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT8oSWE9SWFbZGF8fDBdLE9hPSEwKTpJYT1VLmlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldD9lYy5nZXQoVSkuX193ZWJnbE11bHRpc2FtcGxlZEZyYW1lYnVmZmVyOklhLEtiLmNvcHkoVS52aWV3cG9ydCksU2IuY29weShVLnNjaXNzb3IpLG5jPVUuc2Npc3NvclRlc3QpOihLYi5jb3B5KHdlKS5tdWx0aXBseVNjYWxhcihjYykuZmxvb3IoKSxTYi5jb3B5KHZlKS5tdWx0aXBseVNjYWxhcihjYykuZmxvb3IoKSxuYz1TaCk7a2IhPT1JYSYmKFJhLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxJYSksa2I9SWEpO3liLnZpZXdwb3J0KEtiKTt5Yi5zY2lzc29yKFNiKTt5Yi5zZXRTY2lzc29yVGVzdChuYyk7T2EmJihVPWVjLmdldChVLnRleHR1cmUpLFJhLmZyYW1lYnVmZmVyVGV4dHVyZTJEKDM2MTYwLDM2MDY0LDM0MDY5KyhkYXx8MCksVS5fX3dlYmdsVGV4dHVyZSxtYXx8MCkpfTt0aGlzLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM9ZnVuY3Rpb24oVSwKZGEsbWEsSWEsT2EsYWIsUGEpe2lmKFUmJlUuaXNXZWJHTFJlbmRlclRhcmdldCl7dmFyIGZiPWVjLmdldChVKS5fX3dlYmdsRnJhbWVidWZmZXI7VS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZSYmdm9pZCAwIT09UGEmJihmYj1mYltQYV0pO2lmKGZiKXtQYT0hMTtmYiE9PWtiJiYoUmEuYmluZEZyYW1lYnVmZmVyKDM2MTYwLGZiKSxQYT0hMCk7dHJ5e3ZhciBDYj1VLnRleHR1cmUsb2I9Q2IuZm9ybWF0LCRhPUNiLnR5cGU7MTAyMyE9PW9iJiZOYy5jb252ZXJ0KG9iKSE9PVJhLmdldFBhcmFtZXRlcigzNTczOSk/Y29uc29sZS5lcnJvcigiVEhSRUUuV2ViR0xSZW5kZXJlci5yZWFkUmVuZGVyVGFyZ2V0UGl4ZWxzOiByZW5kZXJUYXJnZXQgaXMgbm90IGluIFJHQkEgb3IgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBmb3JtYXQuIik6MTAwOT09PSRhfHxOYy5jb252ZXJ0KCRhKT09PVJhLmdldFBhcmFtZXRlcigzNTczOCl8fDEwMTU9PT0kYSYmKGRjLmlzV2ViR0wyfHxMYi5nZXQoIk9FU190ZXh0dXJlX2Zsb2F0Iil8fApMYi5nZXQoIldFQkdMX2NvbG9yX2J1ZmZlcl9mbG9hdCIpKXx8MTAxNj09PSRhJiYoZGMuaXNXZWJHTDI/TGIuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2Zsb2F0Iik6TGIuZ2V0KCJFWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSk/MzYwNTM9PT1SYS5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKDM2MTYwKT8wPD1kYSYmZGE8PVUud2lkdGgtSWEmJjA8PW1hJiZtYTw9VS5oZWlnaHQtT2EmJlJhLnJlYWRQaXhlbHMoZGEsbWEsSWEsT2EsTmMuY29udmVydChvYiksTmMuY29udmVydCgkYSksYWIpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVhZFBpeGVscyBmcm9tIHJlbmRlclRhcmdldCBmYWlsZWQuIEZyYW1lYnVmZmVyIG5vdCBjb21wbGV0ZS4iKTpjb25zb2xlLmVycm9yKCJUSFJFRS5XZWJHTFJlbmRlcmVyLnJlYWRSZW5kZXJUYXJnZXRQaXhlbHM6IHJlbmRlclRhcmdldCBpcyBub3QgaW4gVW5zaWduZWRCeXRlVHlwZSBvciBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHR5cGUuIil9ZmluYWxseXtQYSYmClJhLmJpbmRGcmFtZWJ1ZmZlcigzNjE2MCxrYil9fX1lbHNlIGNvbnNvbGUuZXJyb3IoIlRIUkVFLldlYkdMUmVuZGVyZXIucmVhZFJlbmRlclRhcmdldFBpeGVsczogcmVuZGVyVGFyZ2V0IGlzIG5vdCBUSFJFRS5XZWJHTFJlbmRlclRhcmdldC4iKX07dGhpcy5jb3B5RnJhbWVidWZmZXJUb1RleHR1cmU9ZnVuY3Rpb24oVSxkYSxtYSl7dmFyIElhPWRhLmltYWdlLndpZHRoLE9hPWRhLmltYWdlLmhlaWdodCxhYj1OYy5jb252ZXJ0KGRhLmZvcm1hdCk7T2Muc2V0VGV4dHVyZTJEKGRhLDApO1JhLmNvcHlUZXhJbWFnZTJEKDM1NTMsbWF8fDAsYWIsVS54LFUueSxJYSxPYSwwKX07dGhpcy5jb3B5VGV4dHVyZVRvVGV4dHVyZT1mdW5jdGlvbihVLGRhLG1hLElhKXt2YXIgT2E9ZGEuaW1hZ2Uud2lkdGgsYWI9ZGEuaW1hZ2UuaGVpZ2h0LFBhPU5jLmNvbnZlcnQobWEuZm9ybWF0KSxmYj1OYy5jb252ZXJ0KG1hLnR5cGUpO09jLnNldFRleHR1cmUyRChtYSwwKTtkYS5pc0RhdGFUZXh0dXJlPwpSYS50ZXhTdWJJbWFnZTJEKDM1NTMsSWF8fDAsVS54LFUueSxPYSxhYixQYSxmYixkYS5pbWFnZS5kYXRhKTpSYS50ZXhTdWJJbWFnZTJEKDM1NTMsSWF8fDAsVS54LFUueSxQYSxmYixkYS5pbWFnZSl9OyJ1bmRlZmluZWQiIT09dHlwZW9mIF9fVEhSRUVfREVWVE9PTFNfXyYmX19USFJFRV9ERVZUT09MU19fLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCJvYnNlcnZlIix7ZGV0YWlsOnRoaXN9KSl9ZnVuY3Rpb24gemcoYSxjKXt0aGlzLm5hbWU9IiI7dGhpcy5jb2xvcj1uZXcgSShhKTt0aGlzLmRlbnNpdHk9dm9pZCAwIT09Yz9jOjIuNUUtNH1mdW5jdGlvbiBBZyhhLGMsZSl7dGhpcy5uYW1lPSIiO3RoaXMuY29sb3I9bmV3IEkoYSk7dGhpcy5uZWFyPXZvaWQgMCE9PWM/YzoxO3RoaXMuZmFyPXZvaWQgMCE9PWU/ZToxRTN9ZnVuY3Rpb24gUWQoYSxjKXt0aGlzLmFycmF5PWE7dGhpcy5zdHJpZGU9Yzt0aGlzLmNvdW50PXZvaWQgMCE9PWE/YS5sZW5ndGgvYzowO3RoaXMuZHluYW1pYz0KITE7dGhpcy51cGRhdGVSYW5nZT17b2Zmc2V0OjAsY291bnQ6LTF9O3RoaXMudmVyc2lvbj0wfWZ1bmN0aW9uIHhmKGEsYyxlLGcpe3RoaXMuZGF0YT1hO3RoaXMuaXRlbVNpemU9Yzt0aGlzLm9mZnNldD1lO3RoaXMubm9ybWFsaXplZD0hMD09PWd9ZnVuY3Rpb24gQWQoYSl7TS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3ByaXRlTWF0ZXJpYWwiO3RoaXMuY29sb3I9bmV3IEkoMTY3NzcyMTUpO3RoaXMubWFwPW51bGw7dGhpcy5yb3RhdGlvbj0wO3RoaXMuc2l6ZUF0dGVudWF0aW9uPSEwO3RoaXMubGlnaHRzPSExO3RoaXMudHJhbnNwYXJlbnQ9ITA7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24geWYoYSl7QS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3ByaXRlIjtpZih2b2lkIDA9PT1BZSl7QWU9bmV3IHZhO3ZhciBjPW5ldyBRZChuZXcgRmxvYXQzMkFycmF5KFstLjUsLS41LDAsMCwwLC41LC0uNSwwLDEsMCwuNSwuNSwwLDEsMSwtLjUsLjUsMCwwLDFdKSw1KTtBZS5zZXRJbmRleChbMCwKMSwyLDAsMiwzXSk7QWUuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IHhmKGMsMywwLCExKSk7QWUuYWRkQXR0cmlidXRlKCJ1diIsbmV3IHhmKGMsMiwzLCExKSl9dGhpcy5nZW9tZXRyeT1BZTt0aGlzLm1hdGVyaWFsPXZvaWQgMCE9PWE/YTpuZXcgQWQ7dGhpcy5jZW50ZXI9bmV3IGYoLjUsLjUpfWZ1bmN0aW9uIEJnKGEsYyxlLGcscix2KXtCZS5zdWJWZWN0b3JzKGEsZSkuYWRkU2NhbGFyKC41KS5tdWx0aXBseShnKTt2b2lkIDAhPT1yPyh6Zi54PXYqQmUueC1yKkJlLnksemYueT1yKkJlLngrdipCZS55KTp6Zi5jb3B5KEJlKTthLmNvcHkoYyk7YS54Kz16Zi54O2EueSs9emYueTthLmFwcGx5TWF0cml4NChGail9ZnVuY3Rpb24gQWYoKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMT0QiO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse2xldmVsczp7ZW51bWVyYWJsZTohMCx2YWx1ZTpbXX19KTt0aGlzLmF1dG9VcGRhdGU9ITB9ZnVuY3Rpb24gQmYoYSxjKXthJiZhLmlzR2VvbWV0cnkmJgpjb25zb2xlLmVycm9yKCJUSFJFRS5Ta2lubmVkTWVzaCBubyBsb25nZXIgc3VwcG9ydHMgVEhSRUUuR2VvbWV0cnkuIFVzZSBUSFJFRS5CdWZmZXJHZW9tZXRyeSBpbnN0ZWFkLiIpO3hhLmNhbGwodGhpcyxhLGMpO3RoaXMudHlwZT0iU2tpbm5lZE1lc2giO3RoaXMuYmluZE1vZGU9ImF0dGFjaGVkIjt0aGlzLmJpbmRNYXRyaXg9bmV3IHE7dGhpcy5iaW5kTWF0cml4SW52ZXJzZT1uZXcgcX1mdW5jdGlvbiBDZyhhLGMpe2E9YXx8W107dGhpcy5ib25lcz1hLnNsaWNlKDApO3RoaXMuYm9uZU1hdHJpY2VzPW5ldyBGbG9hdDMyQXJyYXkoMTYqdGhpcy5ib25lcy5sZW5ndGgpO2lmKHZvaWQgMD09PWMpdGhpcy5jYWxjdWxhdGVJbnZlcnNlcygpO2Vsc2UgaWYodGhpcy5ib25lcy5sZW5ndGg9PT1jLmxlbmd0aCl0aGlzLmJvbmVJbnZlcnNlcz1jLnNsaWNlKDApO2Vsc2UgZm9yKGNvbnNvbGUud2FybigiVEhSRUUuU2tlbGV0b24gYm9uZUludmVyc2VzIGlzIHRoZSB3cm9uZyBsZW5ndGguIiksCnRoaXMuYm9uZUludmVyc2VzPVtdLGE9MCxjPXRoaXMuYm9uZXMubGVuZ3RoO2E8YzthKyspdGhpcy5ib25lSW52ZXJzZXMucHVzaChuZXcgcSl9ZnVuY3Rpb24gVWgoKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJCb25lIn1mdW5jdGlvbiBGYihhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaW5lQmFzaWNNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSSgxNjc3NzIxNSk7dGhpcy5saW5ld2lkdGg9MTt0aGlzLmxpbmVqb2luPXRoaXMubGluZWNhcD0icm91bmQiO3RoaXMubGlnaHRzPSExO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIFZiKGEsYyxlKXsxPT09ZSYmY29uc29sZS5lcnJvcigiVEhSRUUuTGluZTogcGFyYW1ldGVyIFRIUkVFLkxpbmVQaWVjZXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVXNlIFRIUkVFLkxpbmVTZWdtZW50cyBpbnN0ZWFkLiIpO0EuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkxpbmUiO3RoaXMuZ2VvbWV0cnk9dm9pZCAwIT09YT9hOm5ldyB2YTt0aGlzLm1hdGVyaWFsPQp2b2lkIDAhPT1jP2M6bmV3IEZiKHtjb2xvcjoxNjc3NzIxNSpNYXRoLnJhbmRvbSgpfSl9ZnVuY3Rpb24gSWIoYSxjKXtWYi5jYWxsKHRoaXMsYSxjKTt0aGlzLnR5cGU9IkxpbmVTZWdtZW50cyJ9ZnVuY3Rpb24gRGcoYSxjKXtWYi5jYWxsKHRoaXMsYSxjKTt0aGlzLnR5cGU9IkxpbmVMb29wIn1mdW5jdGlvbiBBYyhhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2ludHNNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSSgxNjc3NzIxNSk7dGhpcy5tYXA9bnVsbDt0aGlzLnNpemU9MTt0aGlzLnNpemVBdHRlbnVhdGlvbj0hMDt0aGlzLmxpZ2h0cz10aGlzLm1vcnBoVGFyZ2V0cz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBDZShhLGMpe0EuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBvaW50cyI7dGhpcy5nZW9tZXRyeT12b2lkIDAhPT1hP2E6bmV3IHZhO3RoaXMubWF0ZXJpYWw9dm9pZCAwIT09Yz9jOm5ldyBBYyh7Y29sb3I6MTY3NzcyMTUqTWF0aC5yYW5kb20oKX0pO3RoaXMudXBkYXRlTW9ycGhUYXJnZXRzKCl9CmZ1bmN0aW9uIFZoKGEsYyxlLGcscix2LHope3ZhciBFPVdoLmRpc3RhbmNlU3FUb1BvaW50KGEpO0U8ZSYmKGU9bmV3IGssV2guY2xvc2VzdFBvaW50VG9Qb2ludChhLGUpLGUuYXBwbHlNYXRyaXg0KGcpLGE9ci5yYXkub3JpZ2luLmRpc3RhbmNlVG8oZSksYTxyLm5lYXJ8fGE+ci5mYXJ8fHYucHVzaCh7ZGlzdGFuY2U6YSxkaXN0YW5jZVRvUmF5Ok1hdGguc3FydChFKSxwb2ludDplLGluZGV4OmMsZmFjZTpudWxsLG9iamVjdDp6fSkpfWZ1bmN0aW9uIFhoKGEsYyxlLGcscix2LHosRSxHKXtsLmNhbGwodGhpcyxhLGMsZSxnLHIsdix6LEUsRyk7dGhpcy5mb3JtYXQ9dm9pZCAwIT09ej96OjEwMjI7dGhpcy5taW5GaWx0ZXI9dm9pZCAwIT09dj92OjEwMDY7dGhpcy5tYWdGaWx0ZXI9dm9pZCAwIT09cj9yOjEwMDY7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9ITF9ZnVuY3Rpb24gRGUoYSxjLGUsZyxyLHYseixFLEcsSixQLFIpe2wuY2FsbCh0aGlzLG51bGwsdix6LEUsRyxKLGcscixQLApSKTt0aGlzLmltYWdlPXt3aWR0aDpjLGhlaWdodDplfTt0aGlzLm1pcG1hcHM9YTt0aGlzLmdlbmVyYXRlTWlwbWFwcz10aGlzLmZsaXBZPSExfWZ1bmN0aW9uIENmKGEsYyxlLGcscix2LHosRSxHKXtsLmNhbGwodGhpcyxhLGMsZSxnLHIsdix6LEUsRyk7dGhpcy5uZWVkc1VwZGF0ZT0hMH1mdW5jdGlvbiBEZihhLGMsZSxnLHIsdix6LEUsRyxKKXtKPXZvaWQgMCE9PUo/SjoxMDI2O2lmKDEwMjYhPT1KJiYxMDI3IT09Sil0aHJvdyBFcnJvcigiRGVwdGhUZXh0dXJlIGZvcm1hdCBtdXN0IGJlIGVpdGhlciBUSFJFRS5EZXB0aEZvcm1hdCBvciBUSFJFRS5EZXB0aFN0ZW5jaWxGb3JtYXQiKTt2b2lkIDA9PT1lJiYxMDI2PT09SiYmKGU9MTAxMik7dm9pZCAwPT09ZSYmMTAyNz09PUomJihlPTEwMjApO2wuY2FsbCh0aGlzLG51bGwsZyxyLHYseixFLEosZSxHKTt0aGlzLmltYWdlPXt3aWR0aDphLGhlaWdodDpjfTt0aGlzLm1hZ0ZpbHRlcj12b2lkIDAhPT16P3o6MTAwMzt0aGlzLm1pbkZpbHRlcj0Kdm9pZCAwIT09RT9FOjEwMDM7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9dGhpcy5mbGlwWT0hMX1mdW5jdGlvbiBFZShhKXt2YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iV2lyZWZyYW1lR2VvbWV0cnkiO3ZhciBjPVtdLGUsZyxyLHY9WzAsMF0sej17fSxFPVsiYSIsImIiLCJjIl07aWYoYSYmYS5pc0dlb21ldHJ5KXt2YXIgRz1hLmZhY2VzO3ZhciBKPTA7Zm9yKGc9Ry5sZW5ndGg7SjxnO0orKyl7dmFyIFA9R1tKXTtmb3IoZT0wOzM+ZTtlKyspe3ZhciBSPVBbRVtlXV07dmFyIFM9UFtFWyhlKzEpJTNdXTt2WzBdPU1hdGgubWluKFIsUyk7dlsxXT1NYXRoLm1heChSLFMpO1I9dlswXSsiLCIrdlsxXTt2b2lkIDA9PT16W1JdJiYoeltSXT17aW5kZXgxOnZbMF0saW5kZXgyOnZbMV19KX19Zm9yKFIgaW4geilKPXpbUl0sRT1hLnZlcnRpY2VzW0ouaW5kZXgxXSxjLnB1c2goRS54LEUueSxFLnopLEU9YS52ZXJ0aWNlc1tKLmluZGV4Ml0sYy5wdXNoKEUueCxFLnksRS56KX1lbHNlIGlmKGEmJgphLmlzQnVmZmVyR2VvbWV0cnkpaWYoRT1uZXcgayxudWxsIT09YS5pbmRleCl7Rz1hLmF0dHJpYnV0ZXMucG9zaXRpb247UD1hLmluZGV4O3ZhciBWPWEuZ3JvdXBzOzA9PT1WLmxlbmd0aCYmKFY9W3tzdGFydDowLGNvdW50OlAuY291bnQsbWF0ZXJpYWxJbmRleDowfV0pO2E9MDtmb3Iocj1WLmxlbmd0aDthPHI7KythKWZvcihKPVZbYV0sZT1KLnN0YXJ0LGc9Si5jb3VudCxKPWUsZz1lK2c7SjxnO0orPTMpZm9yKGU9MDszPmU7ZSsrKVI9UC5nZXRYKEorZSksUz1QLmdldFgoSisoZSsxKSUzKSx2WzBdPU1hdGgubWluKFIsUyksdlsxXT1NYXRoLm1heChSLFMpLFI9dlswXSsiLCIrdlsxXSx2b2lkIDA9PT16W1JdJiYoeltSXT17aW5kZXgxOnZbMF0saW5kZXgyOnZbMV19KTtmb3IoUiBpbiB6KUo9eltSXSxFLmZyb21CdWZmZXJBdHRyaWJ1dGUoRyxKLmluZGV4MSksYy5wdXNoKEUueCxFLnksRS56KSxFLmZyb21CdWZmZXJBdHRyaWJ1dGUoRyxKLmluZGV4MiksYy5wdXNoKEUueCwKRS55LEUueil9ZWxzZSBmb3IoRz1hLmF0dHJpYnV0ZXMucG9zaXRpb24sSj0wLGc9Ry5jb3VudC8zO0o8ZztKKyspZm9yKGU9MDszPmU7ZSsrKXo9MypKK2UsRS5mcm9tQnVmZmVyQXR0cmlidXRlKEcseiksYy5wdXNoKEUueCxFLnksRS56KSx6PTMqSisoZSsxKSUzLEUuZnJvbUJ1ZmZlckF0dHJpYnV0ZShHLHopLGMucHVzaChFLngsRS55LEUueik7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoYywzKSl9ZnVuY3Rpb24gRWYoYSxjLGUpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQYXJhbWV0cmljR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17ZnVuYzphLHNsaWNlczpjLHN0YWNrczplfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgRmUoYSxjLGUpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBGZShhLGMsZSl7dmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtmdW5jOmEsCnNsaWNlczpjLHN0YWNrczplfTt2YXIgZz1bXSxyPVtdLHY9W10sej1bXSxFPW5ldyBrLEc9bmV3IGssSj1uZXcgayxQPW5ldyBrLFI9bmV3IGssUyxWOzM+YS5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLlBhcmFtZXRyaWNHZW9tZXRyeTogRnVuY3Rpb24gbXVzdCBub3cgbW9kaWZ5IGEgVmVjdG9yMyBhcyB0aGlyZCBwYXJhbWV0ZXIuIik7dmFyIFc9YysxO2ZvcihTPTA7Uzw9ZTtTKyspe3ZhciBoYT1TL2U7Zm9yKFY9MDtWPD1jO1YrKyl7dmFyIGZhPVYvYzthKGZhLGhhLEcpO3IucHVzaChHLngsRy55LEcueik7MDw9ZmEtMUUtNT8oYShmYS0xRS01LGhhLEopLFAuc3ViVmVjdG9ycyhHLEopKTooYShmYSsxRS01LGhhLEopLFAuc3ViVmVjdG9ycyhKLEcpKTswPD1oYS0xRS01PyhhKGZhLGhhLTFFLTUsSiksUi5zdWJWZWN0b3JzKEcsSikpOihhKGZhLGhhKzFFLTUsSiksUi5zdWJWZWN0b3JzKEosRykpO0UuY3Jvc3NWZWN0b3JzKFAsUikubm9ybWFsaXplKCk7di5wdXNoKEUueCwKRS55LEUueik7ei5wdXNoKGZhLGhhKX19Zm9yKFM9MDtTPGU7UysrKWZvcihWPTA7VjxjO1YrKylhPVMqVytWKzEsRT0oUysxKSpXK1YrMSxHPShTKzEpKlcrVixnLnB1c2goUypXK1YsYSxHKSxnLnB1c2goYSxFLEcpO3RoaXMuc2V0SW5kZXgoZyk7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EociwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGNhKHYsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKHosMikpfWZ1bmN0aW9uIEZmKGEsYyxlLGcpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2x5aGVkcm9uR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17dmVydGljZXM6YSxpbmRpY2VzOmMscmFkaXVzOmUsZGV0YWlsOmd9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBqYyhhLGMsZSxnKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gamMoYSxjLGUsZyl7ZnVuY3Rpb24gcihXLGhhLGZhLHJhKXtyYT1NYXRoLnBvdygyLApyYSk7dmFyIHBhPVtdLHFhLHVhO2ZvcihxYT0wO3FhPD1yYTtxYSsrKXtwYVtxYV09W107dmFyIG9hPVcuY2xvbmUoKS5sZXJwKGZhLHFhL3JhKSx0YT1oYS5jbG9uZSgpLmxlcnAoZmEscWEvcmEpLEJhPXJhLXFhO2Zvcih1YT0wO3VhPD1CYTt1YSsrKXBhW3FhXVt1YV09MD09PXVhJiZxYT09PXJhP29hOm9hLmNsb25lKCkubGVycCh0YSx1YS9CYSl9Zm9yKHFhPTA7cWE8cmE7cWErKylmb3IodWE9MDt1YTwyKihyYS1xYSktMTt1YSsrKVc9TWF0aC5mbG9vcih1YS8yKSwwPT09dWElMj8oeihwYVtxYV1bVysxXSkseihwYVtxYSsxXVtXXSkseihwYVtxYV1bV10pKTooeihwYVtxYV1bVysxXSkseihwYVtxYSsxXVtXKzFdKSx6KHBhW3FhKzFdW1ddKSl9ZnVuY3Rpb24gdigpe2Zvcih2YXIgVz0wO1c8Vi5sZW5ndGg7Vys9Nil7dmFyIGhhPVZbVyswXSxmYT1WW1crMl0scmE9VltXKzRdLHBhPU1hdGgubWluKGhhLGZhLHJhKTsuOTxNYXRoLm1heChoYSxmYSxyYSkmJi4xPnBhJiYoLjI+CmhhJiYoVltXKzBdKz0xKSwuMj5mYSYmKFZbVysyXSs9MSksLjI+cmEmJihWW1crNF0rPTEpKX19ZnVuY3Rpb24geihXKXtTLnB1c2goVy54LFcueSxXLnopfWZ1bmN0aW9uIEUoVyxoYSl7Vyo9MztoYS54PWFbVyswXTtoYS55PWFbVysxXTtoYS56PWFbVysyXX1mdW5jdGlvbiBHKCl7Zm9yKHZhciBXPW5ldyBrLGhhPW5ldyBrLGZhPW5ldyBrLHJhPW5ldyBrLHBhPW5ldyBmLHFhPW5ldyBmLHVhPW5ldyBmLG9hPTAsdGE9MDtvYTxTLmxlbmd0aDtvYSs9OSx0YSs9Nil7Vy5zZXQoU1tvYSswXSxTW29hKzFdLFNbb2ErMl0pO2hhLnNldChTW29hKzNdLFNbb2ErNF0sU1tvYSs1XSk7ZmEuc2V0KFNbb2ErNl0sU1tvYSs3XSxTW29hKzhdKTtwYS5zZXQoVlt0YSswXSxWW3RhKzFdKTtxYS5zZXQoVlt0YSsyXSxWW3RhKzNdKTt1YS5zZXQoVlt0YSs0XSxWW3RhKzVdKTtyYS5jb3B5KFcpLmFkZChoYSkuYWRkKGZhKS5kaXZpZGVTY2FsYXIoMyk7dmFyIEJhPVAocmEpO0oocGEsdGErMCxXLApCYSk7SihxYSx0YSsyLGhhLEJhKTtKKHVhLHRhKzQsZmEsQmEpfX1mdW5jdGlvbiBKKFcsaGEsZmEscmEpezA+cmEmJjE9PT1XLngmJihWW2hhXT1XLngtMSk7MD09PWZhLngmJjA9PT1mYS56JiYoVltoYV09cmEvMi9NYXRoLlBJKy41KX1mdW5jdGlvbiBQKFcpe3JldHVybiBNYXRoLmF0YW4yKFcueiwtVy54KX1mdW5jdGlvbiBSKFcpe3JldHVybiBNYXRoLmF0YW4yKC1XLnksTWF0aC5zcXJ0KFcueCpXLngrVy56KlcueikpfXZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJQb2x5aGVkcm9uQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17dmVydGljZXM6YSxpbmRpY2VzOmMscmFkaXVzOmUsZGV0YWlsOmd9O2U9ZXx8MTtnPWd8fDA7dmFyIFM9W10sVj1bXTsoZnVuY3Rpb24oVyl7Zm9yKHZhciBoYT1uZXcgayxmYT1uZXcgayxyYT1uZXcgayxwYT0wO3BhPGMubGVuZ3RoO3BhKz0zKUUoY1twYSswXSxoYSksRShjW3BhKzFdLGZhKSxFKGNbcGErMl0scmEpLHIoaGEsZmEscmEsClcpfSkoZyk7KGZ1bmN0aW9uKFcpe2Zvcih2YXIgaGE9bmV3IGssZmE9MDtmYTxTLmxlbmd0aDtmYSs9MyloYS54PVNbZmErMF0saGEueT1TW2ZhKzFdLGhhLno9U1tmYSsyXSxoYS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihXKSxTW2ZhKzBdPWhhLngsU1tmYSsxXT1oYS55LFNbZmErMl09aGEuen0pKGUpOyhmdW5jdGlvbigpe2Zvcih2YXIgVz1uZXcgayxoYT0wO2hhPFMubGVuZ3RoO2hhKz0zKXtXLng9U1toYSswXTtXLnk9U1toYSsxXTtXLno9U1toYSsyXTt2YXIgZmE9UChXKS8yL01hdGguUEkrLjUscmE9UihXKS9NYXRoLlBJKy41O1YucHVzaChmYSwxLXJhKX1HKCk7digpfSkoKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShTLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgY2EoUy5zbGljZSgpLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYShWLDIpKTswPT09Zz90aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk6dGhpcy5ub3JtYWxpemVOb3JtYWxzKCl9CmZ1bmN0aW9uIEdmKGEsYyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlRldHJhaGVkcm9uR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsZGV0YWlsOmN9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBHZShhLGMpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBHZShhLGMpe2pjLmNhbGwodGhpcyxbMSwxLDEsLTEsLTEsMSwtMSwxLC0xLDEsLTEsLTFdLFsyLDEsMCwwLDMsMiwxLDMsMCwyLDMsMV0sYSxjKTt0aGlzLnR5cGU9IlRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsZGV0YWlsOmN9fWZ1bmN0aW9uIEhmKGEsYyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik9jdGFoZWRyb25HZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Y307dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IFJkKGEsYykpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFJkKGEsYyl7amMuY2FsbCh0aGlzLApbMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTEsMCwwLDAsMSwwLDAsLTFdLFswLDIsNCwwLDQsMywwLDMsNSwwLDUsMiwxLDIsNSwxLDUsMywxLDMsNCwxLDQsMl0sYSxjKTt0aGlzLnR5cGU9Ik9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Y319ZnVuY3Rpb24gSWYoYSxjKXt5YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iSWNvc2FoZWRyb25HZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Y307dGhpcy5mcm9tQnVmZmVyR2VvbWV0cnkobmV3IEhlKGEsYykpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIEhlKGEsYyl7dmFyIGU9KDErTWF0aC5zcXJ0KDUpKS8yO2pjLmNhbGwodGhpcyxbLTEsZSwwLDEsZSwwLC0xLC1lLDAsMSwtZSwwLDAsLTEsZSwwLDEsZSwwLC0xLC1lLDAsMSwtZSxlLDAsLTEsZSwwLDEsLWUsMCwtMSwtZSwwLDFdLFswLDExLDUsMCw1LDEsMCwxLDcsMCw3LDEwLDAsMTAsMTEsCjEsNSw5LDUsMTEsNCwxMSwxMCwyLDEwLDcsNiw3LDEsOCwzLDksNCwzLDQsMiwzLDIsNiwzLDYsOCwzLDgsOSw0LDksNSwyLDQsMTEsNiwyLDEwLDgsNiw3LDksOCwxXSxhLGMpO3RoaXMudHlwZT0iSWNvc2FoZWRyb25CdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Y319ZnVuY3Rpb24gSmYoYSxjKXt5YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iRG9kZWNhaGVkcm9uR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsZGV0YWlsOmN9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBJZShhLGMpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBJZShhLGMpe3ZhciBlPSgxK01hdGguc3FydCg1KSkvMixnPTEvZTtqYy5jYWxsKHRoaXMsWy0xLC0xLC0xLC0xLC0xLDEsLTEsMSwtMSwtMSwxLDEsMSwtMSwtMSwxLC0xLDEsMSwxLC0xLDEsMSwxLDAsLWcsLWUsMCwtZyxlLDAsZywtZSwwLGcsZSwtZywtZSwwLC1nLGUsMCxnLAotZSwwLGcsZSwwLC1lLDAsLWcsZSwwLC1nLC1lLDAsZyxlLDAsZ10sWzMsMTEsNywzLDcsMTUsMywxNSwxMyw3LDE5LDE3LDcsMTcsNiw3LDYsMTUsMTcsNCw4LDE3LDgsMTAsMTcsMTAsNiw4LDAsMTYsOCwxNiwyLDgsMiwxMCwwLDEyLDEsMCwxLDE4LDAsMTgsMTYsNiwxMCwyLDYsMiwxMyw2LDEzLDE1LDIsMTYsMTgsMiwxOCwzLDIsMywxMywxOCwxLDksMTgsOSwxMSwxOCwxMSwzLDQsMTQsMTIsNCwxMiwwLDQsMCw4LDExLDksNSwxMSw1LDE5LDExLDE5LDcsMTksNSwxNCwxOSwxNCw0LDE5LDQsMTcsMSwxMiwxNCwxLDE0LDUsMSw1LDldLGEsYyk7dGhpcy50eXBlPSJEb2RlY2FoZWRyb25CdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxkZXRhaWw6Y319ZnVuY3Rpb24gS2YoYSxjLGUsZyxyLHYpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJUdWJlR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cGF0aDphLHR1YnVsYXJTZWdtZW50czpjLHJhZGl1czplLApyYWRpYWxTZWdtZW50czpnLGNsb3NlZDpyfTt2b2lkIDAhPT12JiZjb25zb2xlLndhcm4oIlRIUkVFLlR1YmVHZW9tZXRyeTogdGFwZXIgaGFzIGJlZW4gcmVtb3ZlZC4iKTthPW5ldyBTZChhLGMsZSxnLHIpO3RoaXMudGFuZ2VudHM9YS50YW5nZW50czt0aGlzLm5vcm1hbHM9YS5ub3JtYWxzO3RoaXMuYmlub3JtYWxzPWEuYmlub3JtYWxzO3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KGEpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFNkKGEsYyxlLGcscil7ZnVuY3Rpb24gdihxYSl7Uz1hLmdldFBvaW50QXQocWEvYyxTKTt2YXIgdWE9Ry5ub3JtYWxzW3FhXTtxYT1HLmJpbm9ybWFsc1txYV07Zm9yKFc9MDtXPD1nO1crKyl7dmFyIG9hPVcvZypNYXRoLlBJKjIsdGE9TWF0aC5zaW4ob2EpO29hPS1NYXRoLmNvcyhvYSk7UC54PW9hKnVhLngrdGEqcWEueDtQLnk9b2EqdWEueSt0YSpxYS55O1Auej1vYSp1YS56K3RhKnFhLno7UC5ub3JtYWxpemUoKTtmYS5wdXNoKFAueCwKUC55LFAueik7Si54PVMueCtlKlAueDtKLnk9Uy55K2UqUC55O0ouej1TLnorZSpQLno7aGEucHVzaChKLngsSi55LEoueil9fWZ1bmN0aW9uIHooKXtmb3IoVz0xO1c8PWM7VysrKWZvcihWPTE7Vjw9ZztWKyspe3ZhciBxYT0oZysxKSpXKyhWLTEpLHVhPShnKzEpKlcrVixvYT0oZysxKSooVy0xKStWO3BhLnB1c2goKGcrMSkqKFctMSkrKFYtMSkscWEsb2EpO3BhLnB1c2gocWEsdWEsb2EpfX1mdW5jdGlvbiBFKCl7Zm9yKFY9MDtWPD1jO1YrKylmb3IoVz0wO1c8PWc7VysrKVIueD1WL2MsUi55PVcvZyxyYS5wdXNoKFIueCxSLnkpfXZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJUdWJlQnVmZmVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cGF0aDphLHR1YnVsYXJTZWdtZW50czpjLHJhZGl1czplLHJhZGlhbFNlZ21lbnRzOmcsY2xvc2VkOnJ9O2M9Y3x8NjQ7ZT1lfHwxO2c9Z3x8ODtyPXJ8fCExO3ZhciBHPWEuY29tcHV0ZUZyZW5ldEZyYW1lcyhjLHIpO3RoaXMudGFuZ2VudHM9CkcudGFuZ2VudHM7dGhpcy5ub3JtYWxzPUcubm9ybWFsczt0aGlzLmJpbm9ybWFscz1HLmJpbm9ybWFsczt2YXIgSj1uZXcgayxQPW5ldyBrLFI9bmV3IGYsUz1uZXcgayxWLFcsaGE9W10sZmE9W10scmE9W10scGE9W107KGZ1bmN0aW9uKCl7Zm9yKFY9MDtWPGM7VisrKXYoVik7dighMT09PXI/YzowKTtFKCk7eigpfSkoKTt0aGlzLnNldEluZGV4KHBhKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShoYSwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGNhKGZhLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYShyYSwyKSl9ZnVuY3Rpb24gTGYoYSxjLGUsZyxyLHYseil7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlRvcnVzS25vdEdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHR1YmU6Yyx0dWJ1bGFyU2VnbWVudHM6ZSxyYWRpYWxTZWdtZW50czpnLHA6cixxOnZ9O3ZvaWQgMCE9PXomJmNvbnNvbGUud2FybigiVEhSRUUuVG9ydXNLbm90R2VvbWV0cnk6IGhlaWdodFNjYWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAuc2NhbGUoIHgsIHksIHogKSBpbnN0ZWFkLiIpOwp0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgSmUoYSxjLGUsZyxyLHYpKTt0aGlzLm1lcmdlVmVydGljZXMoKX1mdW5jdGlvbiBKZShhLGMsZSxnLHIsdil7ZnVuY3Rpb24geih0YSxCYSxUYSxVYSxDYSl7dmFyIEhhPU1hdGguc2luKHRhKTtCYT1UYS9CYSp0YTtUYT1NYXRoLmNvcyhCYSk7Q2EueD1VYSooMitUYSkqLjUqTWF0aC5jb3ModGEpO0NhLnk9VWEqKDIrVGEpKkhhKi41O0NhLno9VWEqTWF0aC5zaW4oQmEpKi41fXZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJUb3J1c0tub3RCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSx0dWJlOmMsdHVidWxhclNlZ21lbnRzOmUscmFkaWFsU2VnbWVudHM6ZyxwOnIscTp2fTthPWF8fDE7Yz1jfHwuNDtlPU1hdGguZmxvb3IoZSl8fDY0O2c9TWF0aC5mbG9vcihnKXx8ODtyPXJ8fDI7dj12fHwzO3ZhciBFPVtdLEc9W10sSj1bXSxQPVtdLFIsUz1uZXcgayxWPW5ldyBrLFc9bmV3IGssaGE9bmV3IGssZmE9bmV3IGssCnJhPW5ldyBrLHBhPW5ldyBrO2ZvcihSPTA7Ujw9ZTsrK1Ipe3ZhciBxYT1SL2UqcipNYXRoLlBJKjI7eihxYSxyLHYsYSxXKTt6KHFhKy4wMSxyLHYsYSxoYSk7cmEuc3ViVmVjdG9ycyhoYSxXKTtwYS5hZGRWZWN0b3JzKGhhLFcpO2ZhLmNyb3NzVmVjdG9ycyhyYSxwYSk7cGEuY3Jvc3NWZWN0b3JzKGZhLHJhKTtmYS5ub3JtYWxpemUoKTtwYS5ub3JtYWxpemUoKTtmb3IocWE9MDtxYTw9ZzsrK3FhKXt2YXIgdWE9cWEvZypNYXRoLlBJKjIsb2E9LWMqTWF0aC5jb3ModWEpO3VhPWMqTWF0aC5zaW4odWEpO1MueD1XLngrKG9hKnBhLngrdWEqZmEueCk7Uy55PVcueSsob2EqcGEueSt1YSpmYS55KTtTLno9Vy56KyhvYSpwYS56K3VhKmZhLnopO0cucHVzaChTLngsUy55LFMueik7Vi5zdWJWZWN0b3JzKFMsVykubm9ybWFsaXplKCk7Si5wdXNoKFYueCxWLnksVi56KTtQLnB1c2goUi9lKTtQLnB1c2gocWEvZyl9fWZvcihxYT0xO3FhPD1lO3FhKyspZm9yKFI9MTtSPD1nO1IrKylhPQooZysxKSpxYSsoUi0xKSxjPShnKzEpKnFhK1Iscj0oZysxKSoocWEtMSkrUixFLnB1c2goKGcrMSkqKHFhLTEpKyhSLTEpLGEsciksRS5wdXNoKGEsYyxyKTt0aGlzLnNldEluZGV4KEUpO3RoaXMuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKEcsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJub3JtYWwiLG5ldyBjYShKLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYShQLDIpKX1mdW5jdGlvbiBNZihhLGMsZSxnLHIpe3lhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJUb3J1c0dlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHR1YmU6YyxyYWRpYWxTZWdtZW50czplLHR1YnVsYXJTZWdtZW50czpnLGFyYzpyfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgS2UoYSxjLGUsZyxyKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gS2UoYSxjLGUsZyxyKXt2YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iVG9ydXNCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPQp7cmFkaXVzOmEsdHViZTpjLHJhZGlhbFNlZ21lbnRzOmUsdHVidWxhclNlZ21lbnRzOmcsYXJjOnJ9O2E9YXx8MTtjPWN8fC40O2U9TWF0aC5mbG9vcihlKXx8ODtnPU1hdGguZmxvb3IoZyl8fDY7cj1yfHwyKk1hdGguUEk7dmFyIHY9W10sej1bXSxFPVtdLEc9W10sSj1uZXcgayxQPW5ldyBrLFI9bmV3IGssUyxWO2ZvcihTPTA7Uzw9ZTtTKyspZm9yKFY9MDtWPD1nO1YrKyl7dmFyIFc9Vi9nKnIsaGE9Uy9lKk1hdGguUEkqMjtQLng9KGErYypNYXRoLmNvcyhoYSkpKk1hdGguY29zKFcpO1AueT0oYStjKk1hdGguY29zKGhhKSkqTWF0aC5zaW4oVyk7UC56PWMqTWF0aC5zaW4oaGEpO3oucHVzaChQLngsUC55LFAueik7Si54PWEqTWF0aC5jb3MoVyk7Si55PWEqTWF0aC5zaW4oVyk7Ui5zdWJWZWN0b3JzKFAsSikubm9ybWFsaXplKCk7RS5wdXNoKFIueCxSLnksUi56KTtHLnB1c2goVi9nKTtHLnB1c2goUy9lKX1mb3IoUz0xO1M8PWU7UysrKWZvcihWPTE7Vjw9ZztWKyspYT0oZysKMSkqKFMtMSkrVi0xLGM9KGcrMSkqKFMtMSkrVixyPShnKzEpKlMrVix2LnB1c2goKGcrMSkqUytWLTEsYSxyKSx2LnB1c2goYSxjLHIpO3RoaXMuc2V0SW5kZXgodik7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoeiwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGNhKEUsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKEcsMikpfWZ1bmN0aW9uIEdqKGEsYyxlLGcscil7aWYocj09PTA8WGwoYSxjLGUsZykpZm9yKHI9YztyPGU7cis9Zyl2YXIgdj1IaihyLGFbcl0sYVtyKzFdLHYpO2Vsc2UgZm9yKHI9ZS1nO3I+PWM7ci09Zyl2PUhqKHIsYVtyXSxhW3IrMV0sdik7diYmVGQodix2Lm5leHQpJiYoTmYodiksdj12Lm5leHQpO3JldHVybiB2fWZ1bmN0aW9uIE9mKGEsYyl7aWYoIWEpcmV0dXJuIGE7Y3x8KGM9YSk7ZG97dmFyIGU9ITE7aWYoYS5zdGVpbmVyfHwhVGQoYSxhLm5leHQpJiYwIT09V2IoYS5wcmV2LGEsYS5uZXh0KSlhPWEubmV4dDsKZWxzZXtOZihhKTthPWM9YS5wcmV2O2lmKGE9PT1hLm5leHQpYnJlYWs7ZT0hMH19d2hpbGUoZXx8YSE9PWMpO3JldHVybiBjfWZ1bmN0aW9uIFBmKGEsYyxlLGcscix2LHope2lmKGEpeyF6JiZ2JiZZbChhLGcscix2KTtmb3IodmFyIEU9YSxHLEo7YS5wcmV2IT09YS5uZXh0OylpZihHPWEucHJldixKPWEubmV4dCx2P1psKGEsZyxyLHYpOiRsKGEpKWMucHVzaChHLmkvZSksYy5wdXNoKGEuaS9lKSxjLnB1c2goSi5pL2UpLE5mKGEpLEU9YT1KLm5leHQ7ZWxzZSBpZihhPUosYT09PUUpe3o/MT09PXo/KGE9YW0oYSxjLGUpLFBmKGEsYyxlLGcscix2LDIpKToyPT09eiYmYm0oYSxjLGUsZyxyLHYpOlBmKE9mKGEpLGMsZSxnLHIsdiwxKTticmVha319fWZ1bmN0aW9uICRsKGEpe3ZhciBjPWEucHJldixlPWEubmV4dDtpZigwPD1XYihjLGEsZSkpcmV0dXJuITE7Zm9yKHZhciBnPWEubmV4dC5uZXh0O2chPT1hLnByZXY7KXtpZihMZShjLngsYy55LGEueCxhLnksZS54LGUueSxnLngsCmcueSkmJjA8PVdiKGcucHJldixnLGcubmV4dCkpcmV0dXJuITE7Zz1nLm5leHR9cmV0dXJuITB9ZnVuY3Rpb24gWmwoYSxjLGUsZyl7dmFyIHI9YS5wcmV2LHY9YS5uZXh0O2lmKDA8PVdiKHIsYSx2KSlyZXR1cm4hMTt2YXIgej1yLng+YS54P3IueD52Lng/ci54OnYueDphLng+di54P2EueDp2LngsRT1yLnk+YS55P3IueT52Lnk/ci55OnYueTphLnk+di55P2EueTp2LnksRz1ZaChyLng8YS54P3IueDx2Lng/ci54OnYueDphLng8di54P2EueDp2Lngsci55PGEueT9yLnk8di55P3IueTp2Lnk6YS55PHYueT9hLnk6di55LGMsZSxnKTtjPVloKHosRSxjLGUsZyk7ZT1hLnByZXZaO2ZvcihnPWEubmV4dFo7ZSYmZS56Pj1HJiZnJiZnLno8PWM7KXtpZihlIT09YS5wcmV2JiZlIT09YS5uZXh0JiZMZShyLngsci55LGEueCxhLnksdi54LHYueSxlLngsZS55KSYmMDw9V2IoZS5wcmV2LGUsZS5uZXh0KSlyZXR1cm4hMTtlPWUucHJldlo7aWYoZyE9PWEucHJldiYmZyE9PWEubmV4dCYmTGUoci54LApyLnksYS54LGEueSx2Lngsdi55LGcueCxnLnkpJiYwPD1XYihnLnByZXYsZyxnLm5leHQpKXJldHVybiExO2c9Zy5uZXh0Wn1mb3IoO2UmJmUuej49Rzspe2lmKGUhPT1hLnByZXYmJmUhPT1hLm5leHQmJkxlKHIueCxyLnksYS54LGEueSx2Lngsdi55LGUueCxlLnkpJiYwPD1XYihlLnByZXYsZSxlLm5leHQpKXJldHVybiExO2U9ZS5wcmV2Wn1mb3IoO2cmJmcuejw9Yzspe2lmKGchPT1hLnByZXYmJmchPT1hLm5leHQmJkxlKHIueCxyLnksYS54LGEueSx2Lngsdi55LGcueCxnLnkpJiYwPD1XYihnLnByZXYsZyxnLm5leHQpKXJldHVybiExO2c9Zy5uZXh0Wn1yZXR1cm4hMH1mdW5jdGlvbiBhbShhLGMsZSl7dmFyIGc9YTtkb3t2YXIgcj1nLnByZXYsdj1nLm5leHQubmV4dDshVGQocix2KSYmSWoocixnLGcubmV4dCx2KSYmUWYocix2KSYmUWYodixyKSYmKGMucHVzaChyLmkvZSksYy5wdXNoKGcuaS9lKSxjLnB1c2godi5pL2UpLE5mKGcpLE5mKGcubmV4dCksZz1hPXYpO2c9Zy5uZXh0fXdoaWxlKGchPT0KYSk7cmV0dXJuIGd9ZnVuY3Rpb24gYm0oYSxjLGUsZyxyLHYpe3ZhciB6PWE7ZG97Zm9yKHZhciBFPXoubmV4dC5uZXh0O0UhPT16LnByZXY7KXtpZih6LmkhPT1FLmkmJmNtKHosRSkpe2E9SmooeixFKTt6PU9mKHosei5uZXh0KTthPU9mKGEsYS5uZXh0KTtQZih6LGMsZSxnLHIsdik7UGYoYSxjLGUsZyxyLHYpO3JldHVybn1FPUUubmV4dH16PXoubmV4dH13aGlsZSh6IT09YSl9ZnVuY3Rpb24gZG0oYSxjLGUsZyl7dmFyIHI9W10sdjt2YXIgej0wO2Zvcih2PWMubGVuZ3RoO3o8djt6Kyspe3ZhciBFPWNbel0qZzt2YXIgRz16PHYtMT9jW3orMV0qZzphLmxlbmd0aDtFPUdqKGEsRSxHLGcsITEpO0U9PT1FLm5leHQmJihFLnN0ZWluZXI9ITApO3IucHVzaChlbShFKSl9ci5zb3J0KGZtKTtmb3Ioej0wO3o8ci5sZW5ndGg7eisrKWdtKHJbel0sZSksZT1PZihlLGUubmV4dCk7cmV0dXJuIGV9ZnVuY3Rpb24gZm0oYSxjKXtyZXR1cm4gYS54LWMueH1mdW5jdGlvbiBnbShhLGMpe2lmKGM9CmhtKGEsYykpYT1KaihjLGEpLE9mKGEsYS5uZXh0KX1mdW5jdGlvbiBobShhLGMpe3ZhciBlPWMsZz1hLngscj1hLnksdj0tSW5maW5pdHk7ZG97aWYocjw9ZS55JiZyPj1lLm5leHQueSYmZS5uZXh0LnkhPT1lLnkpe3ZhciB6PWUueCsoci1lLnkpKihlLm5leHQueC1lLngpLyhlLm5leHQueS1lLnkpO2lmKHo8PWcmJno+dil7dj16O2lmKHo9PT1nKXtpZihyPT09ZS55KXJldHVybiBlO2lmKHI9PT1lLm5leHQueSlyZXR1cm4gZS5uZXh0fXZhciBFPWUueDxlLm5leHQueD9lOmUubmV4dH19ZT1lLm5leHR9d2hpbGUoZSE9PWMpO2lmKCFFKXJldHVybiBudWxsO2lmKGc9PT12KXJldHVybiBFLnByZXY7Yz1FO3o9RS54O3ZhciBHPUUueSxKPUluZmluaXR5O2ZvcihlPUUubmV4dDtlIT09Yzspe2lmKGc+PWUueCYmZS54Pj16JiZnIT09ZS54JiZMZShyPEc/Zzp2LHIseixHLHI8Rz92OmcscixlLngsZS55KSl7dmFyIFA9TWF0aC5hYnMoci1lLnkpLyhnLWUueCk7KFA8Snx8UD09PUomJgplLng+RS54KSYmUWYoZSxhKSYmKEU9ZSxKPVApfWU9ZS5uZXh0fXJldHVybiBFfWZ1bmN0aW9uIFlsKGEsYyxlLGcpe3ZhciByPWE7ZG8gbnVsbD09PXIueiYmKHIuej1ZaChyLngsci55LGMsZSxnKSksci5wcmV2Wj1yLnByZXYscj1yLm5leHRaPXIubmV4dDt3aGlsZShyIT09YSk7ci5wcmV2Wi5uZXh0Wj1udWxsO3IucHJldlo9bnVsbDtpbShyKX1mdW5jdGlvbiBpbShhKXt2YXIgYyxlLGcscix2PTE7ZG97dmFyIHo9YTt2YXIgRT1hPW51bGw7Zm9yKGU9MDt6Oyl7ZSsrO3ZhciBHPXo7Zm9yKGM9Zz0wO2M8diYmKGcrKyxHPUcubmV4dFosRyk7YysrKTtmb3Iocj12OzA8Z3x8MDxyJiZHOykwIT09ZyYmKDA9PT1yfHwhR3x8ei56PD1HLnopPyhjPXosej16Lm5leHRaLGctLSk6KGM9RyxHPUcubmV4dFosci0tKSxFP0UubmV4dFo9YzphPWMsYy5wcmV2Wj1FLEU9Yzt6PUd9RS5uZXh0Wj1udWxsO3YqPTJ9d2hpbGUoMTxlKTtyZXR1cm4gYX1mdW5jdGlvbiBZaChhLGMsZSxnLHIpe2E9CjMyNzY3KihhLWUpKnI7Yz0zMjc2NyooYy1nKSpyO2E9KGF8YTw8OCkmMTY3MTE5MzU7YT0oYXxhPDw0KSYyNTI2NDUxMzU7YT0oYXxhPDwyKSY4NTg5OTM0NTk7Yz0oY3xjPDw4KSYxNjcxMTkzNTtjPShjfGM8PDQpJjI1MjY0NTEzNTtjPShjfGM8PDIpJjg1ODk5MzQ1OTtyZXR1cm4oYXxhPDwxKSYxNDMxNjU1NzY1fCgoY3xjPDwxKSYxNDMxNjU1NzY1KTw8MX1mdW5jdGlvbiBlbShhKXt2YXIgYz1hLGU9YTtkb3tpZihjLng8ZS54fHxjLng9PT1lLngmJmMueTxlLnkpZT1jO2M9Yy5uZXh0fXdoaWxlKGMhPT1hKTtyZXR1cm4gZX1mdW5jdGlvbiBMZShhLGMsZSxnLHIsdix6LEUpe3JldHVybiAwPD0oci16KSooYy1FKS0oYS16KSoodi1FKSYmMDw9KGEteikqKGctRSktKGUteikqKGMtRSkmJjA8PShlLXopKih2LUUpLShyLXopKihnLUUpfWZ1bmN0aW9uIGNtKGEsYyl7cmV0dXJuIGEubmV4dC5pIT09Yy5pJiZhLnByZXYuaSE9PWMuaSYmIWptKGEsYykmJlFmKGEsYykmJlFmKGMsYSkmJgprbShhLGMpfWZ1bmN0aW9uIFdiKGEsYyxlKXtyZXR1cm4oYy55LWEueSkqKGUueC1jLngpLShjLngtYS54KSooZS55LWMueSl9ZnVuY3Rpb24gVGQoYSxjKXtyZXR1cm4gYS54PT09Yy54JiZhLnk9PT1jLnl9ZnVuY3Rpb24gSWooYSxjLGUsZyl7cmV0dXJuIFRkKGEsZSkmJlRkKGMsZyl8fFRkKGEsZykmJlRkKGUsYyk/ITA6MDxXYihhLGMsZSkhPT0wPFdiKGEsYyxnKSYmMDxXYihlLGcsYSkhPT0wPFdiKGUsZyxjKX1mdW5jdGlvbiBqbShhLGMpe3ZhciBlPWE7ZG97aWYoZS5pIT09YS5pJiZlLm5leHQuaSE9PWEuaSYmZS5pIT09Yy5pJiZlLm5leHQuaSE9PWMuaSYmSWooZSxlLm5leHQsYSxjKSlyZXR1cm4hMDtlPWUubmV4dH13aGlsZShlIT09YSk7cmV0dXJuITF9ZnVuY3Rpb24gUWYoYSxjKXtyZXR1cm4gMD5XYihhLnByZXYsYSxhLm5leHQpPzA8PVdiKGEsYyxhLm5leHQpJiYwPD1XYihhLGEucHJldixjKTowPldiKGEsYyxhLnByZXYpfHwwPldiKGEsYS5uZXh0LGMpfWZ1bmN0aW9uIGttKGEsCmMpe3ZhciBlPWEsZz0hMSxyPShhLngrYy54KS8yO2M9KGEueStjLnkpLzI7ZG8gZS55PmMhPT1lLm5leHQueT5jJiZlLm5leHQueSE9PWUueSYmcjwoZS5uZXh0LngtZS54KSooYy1lLnkpLyhlLm5leHQueS1lLnkpK2UueCYmKGc9IWcpLGU9ZS5uZXh0O3doaWxlKGUhPT1hKTtyZXR1cm4gZ31mdW5jdGlvbiBKaihhLGMpe3ZhciBlPW5ldyBaaChhLmksYS54LGEueSksZz1uZXcgWmgoYy5pLGMueCxjLnkpLHI9YS5uZXh0LHY9Yy5wcmV2O2EubmV4dD1jO2MucHJldj1hO2UubmV4dD1yO3IucHJldj1lO2cubmV4dD1lO2UucHJldj1nO3YubmV4dD1nO2cucHJldj12O3JldHVybiBnfWZ1bmN0aW9uIEhqKGEsYyxlLGcpe2E9bmV3IFpoKGEsYyxlKTtnPyhhLm5leHQ9Zy5uZXh0LGEucHJldj1nLGcubmV4dC5wcmV2PWEsZy5uZXh0PWEpOihhLnByZXY9YSxhLm5leHQ9YSk7cmV0dXJuIGF9ZnVuY3Rpb24gTmYoYSl7YS5uZXh0LnByZXY9YS5wcmV2O2EucHJldi5uZXh0PWEubmV4dDthLnByZXZaJiYKKGEucHJldloubmV4dFo9YS5uZXh0Wik7YS5uZXh0WiYmKGEubmV4dFoucHJldlo9YS5wcmV2Wil9ZnVuY3Rpb24gWmgoYSxjLGUpe3RoaXMuaT1hO3RoaXMueD1jO3RoaXMueT1lO3RoaXMubmV4dFo9dGhpcy5wcmV2Wj10aGlzLno9dGhpcy5uZXh0PXRoaXMucHJldj1udWxsO3RoaXMuc3RlaW5lcj0hMX1mdW5jdGlvbiBYbChhLGMsZSxnKXtmb3IodmFyIHI9MCx2PWUtZztjPGU7Yys9ZylyKz0oYVt2XS1hW2NdKSooYVtjKzFdK2FbdisxXSksdj1jO3JldHVybiByfWZ1bmN0aW9uIEtqKGEpe3ZhciBjPWEubGVuZ3RoOzI8YyYmYVtjLTFdLmVxdWFscyhhWzBdKSYmYS5wb3AoKX1mdW5jdGlvbiBMaihhLGMpe2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWEucHVzaChjW2VdLngpLGEucHVzaChjW2VdLnkpfWZ1bmN0aW9uIFVkKGEsYyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkV4dHJ1ZGVHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6YSxvcHRpb25zOmN9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBSYyhhLApjKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gUmMoYSxjKXtmdW5jdGlvbiBlKEcpe2Z1bmN0aW9uIEooUWEsZWIsbWIpe2VifHxjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlR2VvbWV0cnk6IHZlYyBkb2VzIG5vdCBleGlzdCIpO3JldHVybiBlYi5jbG9uZSgpLm11bHRpcGx5U2NhbGFyKG1iKS5hZGQoUWEpfWZ1bmN0aW9uIFAoUWEsZWIsbWIpe3ZhciBwYj1RYS54LWViLng7dmFyIHNiPVFhLnktZWIueTt2YXIgS2I9bWIueC1RYS54O3ZhciBTYj1tYi55LVFhLnksbmM9cGIqcGIrc2Iqc2I7aWYoTWF0aC5hYnMocGIqU2Itc2IqS2IpPk51bWJlci5FUFNJTE9OKXt2YXIgUWM9TWF0aC5zcXJ0KG5jKSx6Yz1NYXRoLnNxcnQoS2IqS2IrU2IqU2IpO25jPWViLngtc2IvUWM7ZWI9ZWIueStwYi9RYztTYj0oKG1iLngtU2IvemMtbmMpKlNiLShtYi55K0tiL3pjLWViKSpLYikvKHBiKlNiLXNiKktiKTtLYj1uYytwYipTYi1RYS54O3BiPWViK3NiKlNiLVFhLnk7c2I9S2IqCktiK3BiKnBiO2lmKDI+PXNiKXJldHVybiBuZXcgZihLYixwYik7c2I9TWF0aC5zcXJ0KHNiLzIpfWVsc2UgUWE9ITEscGI+TnVtYmVyLkVQU0lMT04/S2I+TnVtYmVyLkVQU0lMT04mJihRYT0hMCk6cGI8LU51bWJlci5FUFNJTE9OP0tiPC1OdW1iZXIuRVBTSUxPTiYmKFFhPSEwKTpNYXRoLnNpZ24oc2IpPT09TWF0aC5zaWduKFNiKSYmKFFhPSEwKSxRYT8oS2I9LXNiLHNiPU1hdGguc3FydChuYykpOihLYj1wYixwYj1zYixzYj1NYXRoLnNxcnQobmMvMikpO3JldHVybiBuZXcgZihLYi9zYixwYi9zYil9ZnVuY3Rpb24gUihRYSxlYil7Zm9yKGphPVFhLmxlbmd0aDswPD0tLWphOyl7dmFyIG1iPWphO3ZhciBwYj1qYS0xOzA+cGImJihwYj1RYS5sZW5ndGgtMSk7dmFyIHNiLEtiPXFhKzIqVWE7Zm9yKHNiPTA7c2I8S2I7c2IrKyl7dmFyIFNiPVlhKnNiLG5jPVlhKihzYisxKTtXKGViK21iK1NiLGViK3BiK1NiLGViK3BiK25jLGViK21iK25jKX19fWZ1bmN0aW9uIFMoUWEsZWIsbWIpe3JhLnB1c2goUWEpOwpyYS5wdXNoKGViKTtyYS5wdXNoKG1iKX1mdW5jdGlvbiBWKFFhLGViLG1iKXtoYShRYSk7aGEoZWIpO2hhKG1iKTtRYT1yLmxlbmd0aC8zO1FhPUhhLmdlbmVyYXRlVG9wVVYoZyxyLFFhLTMsUWEtMixRYS0xKTtmYShRYVswXSk7ZmEoUWFbMV0pO2ZhKFFhWzJdKX1mdW5jdGlvbiBXKFFhLGViLG1iLHBiKXtoYShRYSk7aGEoZWIpO2hhKHBiKTtoYShlYik7aGEobWIpO2hhKHBiKTtRYT1yLmxlbmd0aC8zO1FhPUhhLmdlbmVyYXRlU2lkZVdhbGxVVihnLHIsUWEtNixRYS0zLFFhLTIsUWEtMSk7ZmEoUWFbMF0pO2ZhKFFhWzFdKTtmYShRYVszXSk7ZmEoUWFbMV0pO2ZhKFFhWzJdKTtmYShRYVszXSl9ZnVuY3Rpb24gaGEoUWEpe3IucHVzaChyYVszKlFhXSk7ci5wdXNoKHJhWzMqUWErMV0pO3IucHVzaChyYVszKlFhKzJdKX1mdW5jdGlvbiBmYShRYSl7di5wdXNoKFFhLngpO3YucHVzaChRYS55KX12YXIgcmE9W10scGE9dm9pZCAwIT09Yy5jdXJ2ZVNlZ21lbnRzP2MuY3VydmVTZWdtZW50czoKMTIscWE9dm9pZCAwIT09Yy5zdGVwcz9jLnN0ZXBzOjEsdWE9dm9pZCAwIT09Yy5kZXB0aD9jLmRlcHRoOjEwMCxvYT12b2lkIDAhPT1jLmJldmVsRW5hYmxlZD9jLmJldmVsRW5hYmxlZDohMCx0YT12b2lkIDAhPT1jLmJldmVsVGhpY2tuZXNzP2MuYmV2ZWxUaGlja25lc3M6NixCYT12b2lkIDAhPT1jLmJldmVsU2l6ZT9jLmJldmVsU2l6ZTp0YS0yLFRhPXZvaWQgMCE9PWMuYmV2ZWxPZmZzZXQ/Yy5iZXZlbE9mZnNldDowLFVhPXZvaWQgMCE9PWMuYmV2ZWxTZWdtZW50cz9jLmJldmVsU2VnbWVudHM6MyxDYT1jLmV4dHJ1ZGVQYXRoLEhhPXZvaWQgMCE9PWMuVVZHZW5lcmF0b3I/Yy5VVkdlbmVyYXRvcjpsbTt2b2lkIDAhPT1jLmFtb3VudCYmKGNvbnNvbGUud2FybigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiBhbW91bnQgaGFzIGJlZW4gcmVuYW1lZCB0byBkZXB0aC4iKSx1YT1jLmFtb3VudCk7dmFyIERhPSExO2lmKENhKXt2YXIgTWE9Q2EuZ2V0U3BhY2VkUG9pbnRzKHFhKTsKRGE9ITA7b2E9ITE7dmFyIGRiPUNhLmNvbXB1dGVGcmVuZXRGcmFtZXMocWEsITEpO3ZhciB0Yj1uZXcgazt2YXIgS2E9bmV3IGs7dmFyIGJiPW5ldyBrfW9hfHwoVGE9QmE9dGE9VWE9MCk7dmFyIGpiO3BhPUcuZXh0cmFjdFBvaW50cyhwYSk7Rz1wYS5zaGFwZTt2YXIgRWI9cGEuaG9sZXM7aWYoIWVkLmlzQ2xvY2tXaXNlKEcpKXtHPUcucmV2ZXJzZSgpO3ZhciB4Yj0wO2ZvcihqYj1FYi5sZW5ndGg7eGI8amI7eGIrKyl7dmFyIGlhPUViW3hiXTtlZC5pc0Nsb2NrV2lzZShpYSkmJihFYlt4Yl09aWEucmV2ZXJzZSgpKX19dmFyIG5hPWVkLnRyaWFuZ3VsYXRlU2hhcGUoRyxFYiksemE9Rzt4Yj0wO2ZvcihqYj1FYi5sZW5ndGg7eGI8amI7eGIrKylpYT1FYlt4Yl0sRz1HLmNvbmNhdChpYSk7dmFyIEphLFlhPUcubGVuZ3RoLE5hLGNiPW5hLmxlbmd0aDtwYT1bXTt2YXIgamE9MDt2YXIgR2E9emEubGVuZ3RoO3ZhciBMYT1HYS0xO2ZvcihKYT1qYSsxO2phPEdhO2phKyssTGErKyxKYSsrKUxhPT09CkdhJiYoTGE9MCksSmE9PT1HYSYmKEphPTApLHBhW2phXT1QKHphW2phXSx6YVtMYV0semFbSmFdKTtDYT1bXTt2YXIgbmI9cGEuY29uY2F0KCk7eGI9MDtmb3IoamI9RWIubGVuZ3RoO3hiPGpiO3hiKyspe2lhPUViW3hiXTt2YXIgVmE9W107amE9MDtHYT1pYS5sZW5ndGg7TGE9R2EtMTtmb3IoSmE9amErMTtqYTxHYTtqYSsrLExhKyssSmErKylMYT09PUdhJiYoTGE9MCksSmE9PT1HYSYmKEphPTApLFZhW2phXT1QKGlhW2phXSxpYVtMYV0saWFbSmFdKTtDYS5wdXNoKFZhKTtuYj1uYi5jb25jYXQoVmEpfWZvcihMYT0wO0xhPFVhO0xhKyspe0dhPUxhL1VhO3ZhciBpYj10YSpNYXRoLmNvcyhHYSpNYXRoLlBJLzIpO0phPUJhKk1hdGguc2luKEdhKk1hdGguUEkvMikrVGE7amE9MDtmb3IoR2E9emEubGVuZ3RoO2phPEdhO2phKyspe3ZhciBrYj1KKHphW2phXSxwYVtqYV0sSmEpO1Moa2IueCxrYi55LC1pYil9eGI9MDtmb3IoamI9RWIubGVuZ3RoO3hiPGpiO3hiKyspZm9yKGlhPQpFYlt4Yl0sVmE9Q2FbeGJdLGphPTAsR2E9aWEubGVuZ3RoO2phPEdhO2phKyspa2I9SihpYVtqYV0sVmFbamFdLEphKSxTKGtiLngsa2IueSwtaWIpfUphPUJhK1RhO2ZvcihqYT0wO2phPFlhO2phKyspa2I9b2E/SihHW2phXSxuYltqYV0sSmEpOkdbamFdLERhPyhLYS5jb3B5KGRiLm5vcm1hbHNbMF0pLm11bHRpcGx5U2NhbGFyKGtiLngpLHRiLmNvcHkoZGIuYmlub3JtYWxzWzBdKS5tdWx0aXBseVNjYWxhcihrYi55KSxiYi5jb3B5KE1hWzBdKS5hZGQoS2EpLmFkZCh0YiksUyhiYi54LGJiLnksYmIueikpOlMoa2IueCxrYi55LDApO2ZvcihHYT0xO0dhPD1xYTtHYSsrKWZvcihqYT0wO2phPFlhO2phKyspa2I9b2E/SihHW2phXSxuYltqYV0sSmEpOkdbamFdLERhPyhLYS5jb3B5KGRiLm5vcm1hbHNbR2FdKS5tdWx0aXBseVNjYWxhcihrYi54KSx0Yi5jb3B5KGRiLmJpbm9ybWFsc1tHYV0pLm11bHRpcGx5U2NhbGFyKGtiLnkpLGJiLmNvcHkoTWFbR2FdKS5hZGQoS2EpLmFkZCh0YiksClMoYmIueCxiYi55LGJiLnopKTpTKGtiLngsa2IueSx1YS9xYSpHYSk7Zm9yKExhPVVhLTE7MDw9TGE7TGEtLSl7R2E9TGEvVWE7aWI9dGEqTWF0aC5jb3MoR2EqTWF0aC5QSS8yKTtKYT1CYSpNYXRoLnNpbihHYSpNYXRoLlBJLzIpK1RhO2phPTA7Zm9yKEdhPXphLmxlbmd0aDtqYTxHYTtqYSsrKWtiPUooemFbamFdLHBhW2phXSxKYSksUyhrYi54LGtiLnksdWEraWIpO3hiPTA7Zm9yKGpiPUViLmxlbmd0aDt4YjxqYjt4YisrKWZvcihpYT1FYlt4Yl0sVmE9Q2FbeGJdLGphPTAsR2E9aWEubGVuZ3RoO2phPEdhO2phKyspa2I9SihpYVtqYV0sVmFbamFdLEphKSxEYT9TKGtiLngsa2IueStNYVtxYS0xXS55LE1hW3FhLTFdLngraWIpOlMoa2IueCxrYi55LHVhK2liKX0oZnVuY3Rpb24oKXt2YXIgUWE9ci5sZW5ndGgvMztpZihvYSl7dmFyIGViPTAqWWE7Zm9yKGphPTA7amE8Y2I7amErKylOYT1uYVtqYV0sVihOYVsyXStlYixOYVsxXStlYixOYVswXStlYik7ZWI9WWEqKHFhKzIqVWEpOwpmb3IoamE9MDtqYTxjYjtqYSsrKU5hPW5hW2phXSxWKE5hWzBdK2ViLE5hWzFdK2ViLE5hWzJdK2ViKX1lbHNle2ZvcihqYT0wO2phPGNiO2phKyspTmE9bmFbamFdLFYoTmFbMl0sTmFbMV0sTmFbMF0pO2ZvcihqYT0wO2phPGNiO2phKyspTmE9bmFbamFdLFYoTmFbMF0rWWEqcWEsTmFbMV0rWWEqcWEsTmFbMl0rWWEqcWEpfWcuYWRkR3JvdXAoUWEsci5sZW5ndGgvMy1RYSwwKX0pKCk7KGZ1bmN0aW9uKCl7dmFyIFFhPXIubGVuZ3RoLzMsZWI9MDtSKHphLGViKTtlYis9emEubGVuZ3RoO3hiPTA7Zm9yKGpiPUViLmxlbmd0aDt4YjxqYjt4YisrKWlhPUViW3hiXSxSKGlhLGViKSxlYis9aWEubGVuZ3RoO2cuYWRkR3JvdXAoUWEsci5sZW5ndGgvMy1RYSwxKX0pKCl9dmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtzaGFwZXM6YSxvcHRpb25zOmN9O2E9QXJyYXkuaXNBcnJheShhKT9hOlthXTtmb3IodmFyIGc9dGhpcywKcj1bXSx2PVtdLHo9MCxFPWEubGVuZ3RoO3o8RTt6KyspZShhW3pdKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShyLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYSh2LDIpKTt0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCl9ZnVuY3Rpb24gTWooYSxjLGUpe2Uuc2hhcGVzPVtdO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBnPTAscj1hLmxlbmd0aDtnPHI7ZysrKWUuc2hhcGVzLnB1c2goYVtnXS51dWlkKTtlbHNlIGUuc2hhcGVzLnB1c2goYS51dWlkKTt2b2lkIDAhPT1jLmV4dHJ1ZGVQYXRoJiYoZS5vcHRpb25zLmV4dHJ1ZGVQYXRoPWMuZXh0cnVkZVBhdGgudG9KU09OKCkpO3JldHVybiBlfWZ1bmN0aW9uIFJmKGEsYyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlRleHRHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXt0ZXh0OmEscGFyYW1ldGVyczpjfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgTWUoYSxjKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9CmZ1bmN0aW9uIE1lKGEsYyl7Yz1jfHx7fTt2YXIgZT1jLmZvbnQ7aWYoIWV8fCFlLmlzRm9udClyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuVGV4dEdlb21ldHJ5OiBmb250IHBhcmFtZXRlciBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuRm9udC4iKSxuZXcgeWE7YT1lLmdlbmVyYXRlU2hhcGVzKGEsYy5zaXplKTtjLmRlcHRoPXZvaWQgMCE9PWMuaGVpZ2h0P2MuaGVpZ2h0OjUwO3ZvaWQgMD09PWMuYmV2ZWxUaGlja25lc3MmJihjLmJldmVsVGhpY2tuZXNzPTEwKTt2b2lkIDA9PT1jLmJldmVsU2l6ZSYmKGMuYmV2ZWxTaXplPTgpO3ZvaWQgMD09PWMuYmV2ZWxFbmFibGVkJiYoYy5iZXZlbEVuYWJsZWQ9ITEpO1JjLmNhbGwodGhpcyxhLGMpO3RoaXMudHlwZT0iVGV4dEJ1ZmZlckdlb21ldHJ5In1mdW5jdGlvbiBTZihhLGMsZSxnLHIsdix6KXt5YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3BoZXJlR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzOmEsd2lkdGhTZWdtZW50czpjLApoZWlnaHRTZWdtZW50czplLHBoaVN0YXJ0OmcscGhpTGVuZ3RoOnIsdGhldGFTdGFydDp2LHRoZXRhTGVuZ3RoOnp9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBCZChhLGMsZSxnLHIsdix6KSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gQmQoYSxjLGUsZyxyLHYseil7dmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlNwaGVyZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHdpZHRoU2VnbWVudHM6YyxoZWlnaHRTZWdtZW50czplLHBoaVN0YXJ0OmcscGhpTGVuZ3RoOnIsdGhldGFTdGFydDp2LHRoZXRhTGVuZ3RoOnp9O2E9YXx8MTtjPU1hdGgubWF4KDMsTWF0aC5mbG9vcihjKXx8OCk7ZT1NYXRoLm1heCgyLE1hdGguZmxvb3IoZSl8fDYpO2c9dm9pZCAwIT09Zz9nOjA7cj12b2lkIDAhPT1yP3I6MipNYXRoLlBJO3Y9dm9pZCAwIT09dj92OjA7ej12b2lkIDAhPT16P3o6TWF0aC5QSTt2YXIgRT1NYXRoLm1pbih2K3osTWF0aC5QSSksRywKSixQPTAsUj1bXSxTPW5ldyBrLFY9bmV3IGssVz1bXSxoYT1bXSxmYT1bXSxyYT1bXTtmb3IoSj0wO0o8PWU7SisrKXt2YXIgcGE9W10scWE9Si9lLHVhPTA7MD09SiYmMD09dj91YT0uNS9jOko9PWUmJkU9PU1hdGguUEkmJih1YT0tLjUvYyk7Zm9yKEc9MDtHPD1jO0crKyl7dmFyIG9hPUcvYztTLng9LWEqTWF0aC5jb3MoZytvYSpyKSpNYXRoLnNpbih2K3FhKnopO1MueT1hKk1hdGguY29zKHYrcWEqeik7Uy56PWEqTWF0aC5zaW4oZytvYSpyKSpNYXRoLnNpbih2K3FhKnopO2hhLnB1c2goUy54LFMueSxTLnopO1YuY29weShTKS5ub3JtYWxpemUoKTtmYS5wdXNoKFYueCxWLnksVi56KTtyYS5wdXNoKG9hK3VhLDEtcWEpO3BhLnB1c2goUCsrKX1SLnB1c2gocGEpfWZvcihKPTA7SjxlO0orKylmb3IoRz0wO0c8YztHKyspYT1SW0pdW0crMV0sZz1SW0pdW0ddLHI9UltKKzFdW0ddLHo9UltKKzFdW0crMV0sKDAhPT1KfHwwPHYpJiZXLnB1c2goYSxnLHopLChKIT09ZS0xfHxFPE1hdGguUEkpJiYKVy5wdXNoKGcscix6KTt0aGlzLnNldEluZGV4KFcpO3RoaXMuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKGhhLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgY2EoZmEsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKHJhLDIpKX1mdW5jdGlvbiBUZihhLGMsZSxnLHIsdil7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlJpbmdHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtpbm5lclJhZGl1czphLG91dGVyUmFkaXVzOmMsdGhldGFTZWdtZW50czplLHBoaVNlZ21lbnRzOmcsdGhldGFTdGFydDpyLHRoZXRhTGVuZ3RoOnZ9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBOZShhLGMsZSxnLHIsdikpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIE5lKGEsYyxlLGcscix2KXt2YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iUmluZ0J1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e2lubmVyUmFkaXVzOmEsb3V0ZXJSYWRpdXM6Yyx0aGV0YVNlZ21lbnRzOmUsCnBoaVNlZ21lbnRzOmcsdGhldGFTdGFydDpyLHRoZXRhTGVuZ3RoOnZ9O2E9YXx8LjU7Yz1jfHwxO3I9dm9pZCAwIT09cj9yOjA7dj12b2lkIDAhPT12P3Y6MipNYXRoLlBJO2U9dm9pZCAwIT09ZT9NYXRoLm1heCgzLGUpOjg7Zz12b2lkIDAhPT1nP01hdGgubWF4KDEsZyk6MTt2YXIgej1bXSxFPVtdLEc9W10sSj1bXSxQPWEsUj0oYy1hKS9nLFM9bmV3IGssVj1uZXcgZixXLGhhO2ZvcihXPTA7Vzw9ZztXKyspe2ZvcihoYT0wO2hhPD1lO2hhKyspYT1yK2hhL2UqdixTLng9UCpNYXRoLmNvcyhhKSxTLnk9UCpNYXRoLnNpbihhKSxFLnB1c2goUy54LFMueSxTLnopLEcucHVzaCgwLDAsMSksVi54PShTLngvYysxKS8yLFYueT0oUy55L2MrMSkvMixKLnB1c2goVi54LFYueSk7UCs9Un1mb3IoVz0wO1c8ZztXKyspZm9yKGM9VyooZSsxKSxoYT0wO2hhPGU7aGErKylhPWhhK2Mscj1hK2UrMSx2PWErZSsyLFA9YSsxLHoucHVzaChhLHIsUCksei5wdXNoKHIsdixQKTt0aGlzLnNldEluZGV4KHopOwp0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShFLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgY2EoRywzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoInV2IixuZXcgY2EoSiwyKSl9ZnVuY3Rpb24gVWYoYSxjLGUsZyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkxhdGhlR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cG9pbnRzOmEsc2VnbWVudHM6YyxwaGlTdGFydDplLHBoaUxlbmd0aDpnfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgT2UoYSxjLGUsZykpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIE9lKGEsYyxlLGcpe3ZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMYXRoZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3BvaW50czphLHNlZ21lbnRzOmMscGhpU3RhcnQ6ZSxwaGlMZW5ndGg6Z307Yz1NYXRoLmZsb29yKGMpfHwxMjtlPWV8fDA7Zz1nfHwyKk1hdGguUEk7Zz1oYi5jbGFtcChnLDAsMipNYXRoLlBJKTt2YXIgcj0KW10sdj1bXSx6PVtdLEU9MS9jLEc9bmV3IGssSj1uZXcgZixQO2ZvcihQPTA7UDw9YztQKyspe3ZhciBSPWUrUCpFKmc7dmFyIFM9TWF0aC5zaW4oUiksVj1NYXRoLmNvcyhSKTtmb3IoUj0wO1I8PWEubGVuZ3RoLTE7UisrKUcueD1hW1JdLngqUyxHLnk9YVtSXS55LEcuej1hW1JdLngqVix2LnB1c2goRy54LEcueSxHLnopLEoueD1QL2MsSi55PVIvKGEubGVuZ3RoLTEpLHoucHVzaChKLngsSi55KX1mb3IoUD0wO1A8YztQKyspZm9yKFI9MDtSPGEubGVuZ3RoLTE7UisrKWU9UitQKmEubGVuZ3RoLEU9ZSthLmxlbmd0aCxHPWUrYS5sZW5ndGgrMSxKPWUrMSxyLnB1c2goZSxFLEopLHIucHVzaChFLEcsSik7dGhpcy5zZXRJbmRleChyKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYSh2LDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYSh6LDIpKTt0aGlzLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7aWYoZz09PTIqTWF0aC5QSSlmb3IoZz10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLmFycmF5LApyPW5ldyBrLHY9bmV3IGssej1uZXcgayxlPWMqYS5sZW5ndGgqMyxSPVA9MDtQPGEubGVuZ3RoO1ArKyxSKz0zKXIueD1nW1IrMF0sci55PWdbUisxXSxyLno9Z1tSKzJdLHYueD1nW2UrUiswXSx2Lnk9Z1tlK1IrMV0sdi56PWdbZStSKzJdLHouYWRkVmVjdG9ycyhyLHYpLm5vcm1hbGl6ZSgpLGdbUiswXT1nW2UrUiswXT16LngsZ1tSKzFdPWdbZStSKzFdPXoueSxnW1IrMl09Z1tlK1IrMl09ei56fWZ1bmN0aW9uIFZkKGEsYyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlNoYXBlR2VvbWV0cnkiOyJvYmplY3QiPT09dHlwZW9mIGMmJihjb25zb2xlLndhcm4oIlRIUkVFLlNoYXBlR2VvbWV0cnk6IE9wdGlvbnMgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbW92ZWQuIiksYz1jLmN1cnZlU2VnbWVudHMpO3RoaXMucGFyYW1ldGVycz17c2hhcGVzOmEsY3VydmVTZWdtZW50czpjfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgV2QoYSxjKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gV2QoYSwKYyl7ZnVuY3Rpb24gZShQKXt2YXIgUixTPXIubGVuZ3RoLzM7UD1QLmV4dHJhY3RQb2ludHMoYyk7dmFyIFY9UC5zaGFwZSxXPVAuaG9sZXM7ITE9PT1lZC5pc0Nsb2NrV2lzZShWKSYmKFY9Vi5yZXZlcnNlKCkpO1A9MDtmb3IoUj1XLmxlbmd0aDtQPFI7UCsrKXt2YXIgaGE9V1tQXTshMD09PWVkLmlzQ2xvY2tXaXNlKGhhKSYmKFdbUF09aGEucmV2ZXJzZSgpKX12YXIgZmE9ZWQudHJpYW5ndWxhdGVTaGFwZShWLFcpO1A9MDtmb3IoUj1XLmxlbmd0aDtQPFI7UCsrKWhhPVdbUF0sVj1WLmNvbmNhdChoYSk7UD0wO2ZvcihSPVYubGVuZ3RoO1A8UjtQKyspaGE9VltQXSxyLnB1c2goaGEueCxoYS55LDApLHYucHVzaCgwLDAsMSksei5wdXNoKGhhLngsaGEueSk7UD0wO2ZvcihSPWZhLmxlbmd0aDtQPFI7UCsrKVY9ZmFbUF0sZy5wdXNoKFZbMF0rUyxWWzFdK1MsVlsyXStTKSxHKz0zfXZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJTaGFwZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9CntzaGFwZXM6YSxjdXJ2ZVNlZ21lbnRzOmN9O2M9Y3x8MTI7dmFyIGc9W10scj1bXSx2PVtdLHo9W10sRT0wLEc9MDtpZighMT09PUFycmF5LmlzQXJyYXkoYSkpZShhKTtlbHNlIGZvcih2YXIgSj0wO0o8YS5sZW5ndGg7SisrKWUoYVtKXSksdGhpcy5hZGRHcm91cChFLEcsSiksRSs9RyxHPTA7dGhpcy5zZXRJbmRleChnKTt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShyLDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgibm9ybWFsIixuZXcgY2EodiwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoInV2IixuZXcgY2EoeiwyKSl9ZnVuY3Rpb24gTmooYSxjKXtjLnNoYXBlcz1bXTtpZihBcnJheS5pc0FycmF5KGEpKWZvcih2YXIgZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKyljLnNoYXBlcy5wdXNoKGFbZV0udXVpZCk7ZWxzZSBjLnNoYXBlcy5wdXNoKGEudXVpZCk7cmV0dXJuIGN9ZnVuY3Rpb24gUGUoYSxjKXt2YS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iRWRnZXNHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPQp7dGhyZXNob2xkQW5nbGU6Y307dmFyIGU9W107Yz1NYXRoLmNvcyhoYi5ERUcyUkFEKih2b2lkIDAhPT1jP2M6MSkpO3ZhciBnPVswLDBdLHI9e30sdj1bImEiLCJiIiwiYyJdO2lmKGEuaXNCdWZmZXJHZW9tZXRyeSl7dmFyIHo9bmV3IHlhO3ouZnJvbUJ1ZmZlckdlb21ldHJ5KGEpfWVsc2Ugej1hLmNsb25lKCk7ei5tZXJnZVZlcnRpY2VzKCk7ei5jb21wdXRlRmFjZU5vcm1hbHMoKTthPXoudmVydGljZXM7ej16LmZhY2VzO2Zvcih2YXIgRT0wLEc9ei5sZW5ndGg7RTxHO0UrKylmb3IodmFyIEo9eltFXSxQPTA7Mz5QO1ArKyl7dmFyIFI9Slt2W1BdXTt2YXIgUz1KW3ZbKFArMSklM11dO2dbMF09TWF0aC5taW4oUixTKTtnWzFdPU1hdGgubWF4KFIsUyk7Uj1nWzBdKyIsIitnWzFdO3ZvaWQgMD09PXJbUl0/cltSXT17aW5kZXgxOmdbMF0saW5kZXgyOmdbMV0sZmFjZTE6RSxmYWNlMjp2b2lkIDB9OnJbUl0uZmFjZTI9RX1mb3IoUiBpbiByKWlmKGc9cltSXSx2b2lkIDA9PT1nLmZhY2UyfHwKeltnLmZhY2UxXS5ub3JtYWwuZG90KHpbZy5mYWNlMl0ubm9ybWFsKTw9Yyl2PWFbZy5pbmRleDFdLGUucHVzaCh2Lngsdi55LHYueiksdj1hW2cuaW5kZXgyXSxlLnB1c2godi54LHYueSx2LnopO3RoaXMuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKGUsMykpfWZ1bmN0aW9uIFhkKGEsYyxlLGcscix2LHosRSl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkN5bGluZGVyR2VvbWV0cnkiO3RoaXMucGFyYW1ldGVycz17cmFkaXVzVG9wOmEscmFkaXVzQm90dG9tOmMsaGVpZ2h0OmUscmFkaWFsU2VnbWVudHM6ZyxoZWlnaHRTZWdtZW50czpyLG9wZW5FbmRlZDp2LHRoZXRhU3RhcnQ6eix0aGV0YUxlbmd0aDpFfTt0aGlzLmZyb21CdWZmZXJHZW9tZXRyeShuZXcgZmQoYSxjLGUsZyxyLHYseixFKSk7dGhpcy5tZXJnZVZlcnRpY2VzKCl9ZnVuY3Rpb24gZmQoYSxjLGUsZyxyLHYseixFKXtmdW5jdGlvbiBHKHBhKXt2YXIgcWEsdWE9bmV3IGYsb2E9bmV3IGssdGE9MCxCYT0hMD09PQpwYT9hOmMsVGE9ITA9PT1wYT8xOi0xO3ZhciBVYT1XO2ZvcihxYT0xO3FhPD1nO3FhKyspUi5wdXNoKDAsZmEqVGEsMCksUy5wdXNoKDAsVGEsMCksVi5wdXNoKC41LC41KSxXKys7dmFyIENhPVc7Zm9yKHFhPTA7cWE8PWc7cWErKyl7dmFyIEhhPXFhL2cqRSt6LERhPU1hdGguY29zKEhhKTtIYT1NYXRoLnNpbihIYSk7b2EueD1CYSpIYTtvYS55PWZhKlRhO29hLno9QmEqRGE7Ui5wdXNoKG9hLngsb2EueSxvYS56KTtTLnB1c2goMCxUYSwwKTt1YS54PS41KkRhKy41O3VhLnk9LjUqSGEqVGErLjU7Vi5wdXNoKHVhLngsdWEueSk7VysrfWZvcihxYT0wO3FhPGc7cWErKyl1YT1VYStxYSxvYT1DYStxYSwhMD09PXBhP1AucHVzaChvYSxvYSsxLHVhKTpQLnB1c2gob2ErMSxvYSx1YSksdGErPTM7Si5hZGRHcm91cChyYSx0YSwhMD09PXBhPzE6Mik7cmErPXRhfXZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDeWxpbmRlckJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1c1RvcDphLApyYWRpdXNCb3R0b206YyxoZWlnaHQ6ZSxyYWRpYWxTZWdtZW50czpnLGhlaWdodFNlZ21lbnRzOnIsb3BlbkVuZGVkOnYsdGhldGFTdGFydDp6LHRoZXRhTGVuZ3RoOkV9O3ZhciBKPXRoaXM7YT12b2lkIDAhPT1hP2E6MTtjPXZvaWQgMCE9PWM/YzoxO2U9ZXx8MTtnPU1hdGguZmxvb3IoZyl8fDg7cj1NYXRoLmZsb29yKHIpfHwxO3Y9dm9pZCAwIT09dj92OiExO3o9dm9pZCAwIT09ej96OjA7RT12b2lkIDAhPT1FP0U6MipNYXRoLlBJO3ZhciBQPVtdLFI9W10sUz1bXSxWPVtdLFc9MCxoYT1bXSxmYT1lLzIscmE9MDsoZnVuY3Rpb24oKXt2YXIgcGEscWEsdWE9bmV3IGssb2E9bmV3IGssdGE9MCxCYT0oYy1hKS9lO2ZvcihxYT0wO3FhPD1yO3FhKyspe3ZhciBUYT1bXSxVYT1xYS9yLENhPVVhKihjLWEpK2E7Zm9yKHBhPTA7cGE8PWc7cGErKyl7dmFyIEhhPXBhL2csRGE9SGEqRSt6LE1hPU1hdGguc2luKERhKTtEYT1NYXRoLmNvcyhEYSk7b2EueD1DYSpNYTtvYS55PS1VYSplK2ZhOwpvYS56PUNhKkRhO1IucHVzaChvYS54LG9hLnksb2Eueik7dWEuc2V0KE1hLEJhLERhKS5ub3JtYWxpemUoKTtTLnB1c2godWEueCx1YS55LHVhLnopO1YucHVzaChIYSwxLVVhKTtUYS5wdXNoKFcrKyl9aGEucHVzaChUYSl9Zm9yKHBhPTA7cGE8ZztwYSsrKWZvcihxYT0wO3FhPHI7cWErKyl1YT1oYVtxYSsxXVtwYV0sb2E9aGFbcWErMV1bcGErMV0sQmE9aGFbcWFdW3BhKzFdLFAucHVzaChoYVtxYV1bcGFdLHVhLEJhKSxQLnB1c2godWEsb2EsQmEpLHRhKz02O0ouYWRkR3JvdXAocmEsdGEsMCk7cmErPXRhfSkoKTshMT09PXYmJigwPGEmJkcoITApLDA8YyYmRyghMSkpO3RoaXMuc2V0SW5kZXgoUCk7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoUiwzKSk7dGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IGNhKFMsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJ1diIsbmV3IGNhKFYsMikpfWZ1bmN0aW9uIFZmKGEsYyxlLGcscix2LHope1hkLmNhbGwodGhpcywKMCxhLGMsZSxnLHIsdix6KTt0aGlzLnR5cGU9IkNvbmVHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxoZWlnaHQ6YyxyYWRpYWxTZWdtZW50czplLGhlaWdodFNlZ21lbnRzOmcsb3BlbkVuZGVkOnIsdGhldGFTdGFydDp2LHRoZXRhTGVuZ3RoOnp9fWZ1bmN0aW9uIFdmKGEsYyxlLGcscix2LHope2ZkLmNhbGwodGhpcywwLGEsYyxlLGcscix2LHopO3RoaXMudHlwZT0iQ29uZUJ1ZmZlckdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLGhlaWdodDpjLHJhZGlhbFNlZ21lbnRzOmUsaGVpZ2h0U2VnbWVudHM6ZyxvcGVuRW5kZWQ6cix0aGV0YVN0YXJ0OnYsdGhldGFMZW5ndGg6en19ZnVuY3Rpb24gWGYoYSxjLGUsZyl7eWEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkNpcmNsZUdlb21ldHJ5Ijt0aGlzLnBhcmFtZXRlcnM9e3JhZGl1czphLHNlZ21lbnRzOmMsdGhldGFTdGFydDplLHRoZXRhTGVuZ3RoOmd9O3RoaXMuZnJvbUJ1ZmZlckdlb21ldHJ5KG5ldyBRZShhLApjLGUsZykpO3RoaXMubWVyZ2VWZXJ0aWNlcygpfWZ1bmN0aW9uIFFlKGEsYyxlLGcpe3ZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDaXJjbGVCdWZmZXJHZW9tZXRyeSI7dGhpcy5wYXJhbWV0ZXJzPXtyYWRpdXM6YSxzZWdtZW50czpjLHRoZXRhU3RhcnQ6ZSx0aGV0YUxlbmd0aDpnfTthPWF8fDE7Yz12b2lkIDAhPT1jP01hdGgubWF4KDMsYyk6ODtlPXZvaWQgMCE9PWU/ZTowO2c9dm9pZCAwIT09Zz9nOjIqTWF0aC5QSTt2YXIgcj1bXSx2PVtdLHo9W10sRT1bXSxHLEo9bmV3IGssUD1uZXcgZjt2LnB1c2goMCwwLDApO3oucHVzaCgwLDAsMSk7RS5wdXNoKC41LC41KTt2YXIgUj0wO2ZvcihHPTM7Ujw9YztSKyssRys9Myl7dmFyIFM9ZStSL2MqZztKLng9YSpNYXRoLmNvcyhTKTtKLnk9YSpNYXRoLnNpbihTKTt2LnB1c2goSi54LEoueSxKLnopO3oucHVzaCgwLDAsMSk7UC54PSh2W0ddL2ErMSkvMjtQLnk9KHZbRysxXS9hKzEpLzI7RS5wdXNoKFAueCxQLnkpfWZvcihHPTE7Rzw9CmM7RysrKXIucHVzaChHLEcrMSwwKTt0aGlzLnNldEluZGV4KHIpO3RoaXMuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKHYsMykpO3RoaXMuYWRkQXR0cmlidXRlKCJub3JtYWwiLG5ldyBjYSh6LDMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgidXYiLG5ldyBjYShFLDIpKX1mdW5jdGlvbiBZZChhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJTaGFkb3dNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSSgwKTt0aGlzLnRyYW5zcGFyZW50PSEwO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uIFJlKGEpe3FiLmNhbGwodGhpcyxhKTt0aGlzLnR5cGU9IlJhd1NoYWRlck1hdGVyaWFsIn1mdW5jdGlvbiBTYyhhKXtNLmNhbGwodGhpcyk7dGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn07dGhpcy50eXBlPSJNZXNoU3RhbmRhcmRNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSSgxNjc3NzIxNSk7dGhpcy5tZXRhbG5lc3M9dGhpcy5yb3VnaG5lc3M9LjU7dGhpcy5saWdodE1hcD10aGlzLm1hcD0KbnVsbDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTE7dGhpcy5hb01hcD1udWxsO3RoaXMuYW9NYXBJbnRlbnNpdHk9MTt0aGlzLmVtaXNzaXZlPW5ldyBJKDApO3RoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MTt0aGlzLmJ1bXBNYXA9dGhpcy5lbWlzc2l2ZU1hcD1udWxsO3RoaXMuYnVtcFNjYWxlPTE7dGhpcy5ub3JtYWxNYXA9bnVsbDt0aGlzLm5vcm1hbE1hcFR5cGU9MDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBmKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLm1ldGFsbmVzc01hcD10aGlzLnJvdWdobmVzc01hcD1udWxsO3RoaXMuZW52TWFwSW50ZW5zaXR5PTE7dGhpcy5yZWZyYWN0aW9uUmF0aW89Ljk4O3RoaXMud2lyZWZyYW1lPSExO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPTE7dGhpcy53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVjYXA9CiJyb3VuZCI7dGhpcy5tb3JwaE5vcm1hbHM9dGhpcy5tb3JwaFRhcmdldHM9dGhpcy5za2lubmluZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBaZChhKXtTYy5jYWxsKHRoaXMpO3RoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiIsUEhZU0lDQUw6IiJ9O3RoaXMudHlwZT0iTWVzaFBoeXNpY2FsTWF0ZXJpYWwiO3RoaXMucmVmbGVjdGl2aXR5PS41O3RoaXMuY2xlYXJjb2F0Um91Z2huZXNzPXRoaXMuY2xlYXJjb2F0PTA7dGhpcy5zaGVlbj1udWxsO3RoaXMuY2xlYXJjb2F0Tm9ybWFsU2NhbGU9bmV3IGYoMSwxKTt0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1udWxsO3RoaXMudHJhbnNwYXJlbmN5PTA7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gQmMoYSl7TS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iTWVzaFBob25nTWF0ZXJpYWwiO3RoaXMuY29sb3I9bmV3IEkoMTY3NzcyMTUpO3RoaXMuc3BlY3VsYXI9bmV3IEkoMTExODQ4MSk7dGhpcy5zaGluaW5lc3M9MzA7dGhpcy5saWdodE1hcD0KdGhpcy5tYXA9bnVsbDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PTE7dGhpcy5hb01hcD1udWxsO3RoaXMuYW9NYXBJbnRlbnNpdHk9MTt0aGlzLmVtaXNzaXZlPW5ldyBJKDApO3RoaXMuZW1pc3NpdmVJbnRlbnNpdHk9MTt0aGlzLmJ1bXBNYXA9dGhpcy5lbWlzc2l2ZU1hcD1udWxsO3RoaXMuYnVtcFNjYWxlPTE7dGhpcy5ub3JtYWxNYXA9bnVsbDt0aGlzLm5vcm1hbE1hcFR5cGU9MDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBmKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLnNwZWN1bGFyTWFwPW51bGw7dGhpcy5jb21iaW5lPTA7dGhpcy5yZWZsZWN0aXZpdHk9MTt0aGlzLnJlZnJhY3Rpb25SYXRpbz0uOTg7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLndpcmVmcmFtZUxpbmVqb2luPXRoaXMud2lyZWZyYW1lTGluZWNhcD0KInJvdW5kIjt0aGlzLm1vcnBoTm9ybWFscz10aGlzLm1vcnBoVGFyZ2V0cz10aGlzLnNraW5uaW5nPSExO3RoaXMuc2V0VmFsdWVzKGEpfWZ1bmN0aW9uICRkKGEpe0JjLmNhbGwodGhpcyk7dGhpcy5kZWZpbmVzPXtUT09OOiIifTt0aGlzLnR5cGU9Ik1lc2hUb29uTWF0ZXJpYWwiO3RoaXMuZ3JhZGllbnRNYXA9bnVsbDt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBhZShhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoTm9ybWFsTWF0ZXJpYWwiO3RoaXMuYnVtcE1hcD1udWxsO3RoaXMuYnVtcFNjYWxlPTE7dGhpcy5ub3JtYWxNYXA9bnVsbDt0aGlzLm5vcm1hbE1hcFR5cGU9MDt0aGlzLm5vcm1hbFNjYWxlPW5ldyBmKDEsMSk7dGhpcy5kaXNwbGFjZW1lbnRNYXA9bnVsbDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPTE7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPTA7dGhpcy53aXJlZnJhbWU9ITE7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9MTt0aGlzLm1vcnBoTm9ybWFscz10aGlzLm1vcnBoVGFyZ2V0cz0KdGhpcy5za2lubmluZz10aGlzLmxpZ2h0cz10aGlzLmZvZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBiZShhKXtNLmNhbGwodGhpcyk7dGhpcy50eXBlPSJNZXNoTGFtYmVydE1hdGVyaWFsIjt0aGlzLmNvbG9yPW5ldyBJKDE2Nzc3MjE1KTt0aGlzLmxpZ2h0TWFwPXRoaXMubWFwPW51bGw7dGhpcy5saWdodE1hcEludGVuc2l0eT0xO3RoaXMuYW9NYXA9bnVsbDt0aGlzLmFvTWFwSW50ZW5zaXR5PTE7dGhpcy5lbWlzc2l2ZT1uZXcgSSgwKTt0aGlzLmVtaXNzaXZlSW50ZW5zaXR5PTE7dGhpcy5lbnZNYXA9dGhpcy5hbHBoYU1hcD10aGlzLnNwZWN1bGFyTWFwPXRoaXMuZW1pc3NpdmVNYXA9bnVsbDt0aGlzLmNvbWJpbmU9MDt0aGlzLnJlZmxlY3Rpdml0eT0xO3RoaXMucmVmcmFjdGlvblJhdGlvPS45ODt0aGlzLndpcmVmcmFtZT0hMTt0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0xO3RoaXMud2lyZWZyYW1lTGluZWpvaW49dGhpcy53aXJlZnJhbWVMaW5lY2FwPSJyb3VuZCI7CnRoaXMubW9ycGhOb3JtYWxzPXRoaXMubW9ycGhUYXJnZXRzPXRoaXMuc2tpbm5pbmc9ITE7dGhpcy5zZXRWYWx1ZXMoYSl9ZnVuY3Rpb24gY2UoYSl7TS5jYWxsKHRoaXMpO3RoaXMuZGVmaW5lcz17TUFUQ0FQOiIifTt0aGlzLnR5cGU9Ik1lc2hNYXRjYXBNYXRlcmlhbCI7dGhpcy5jb2xvcj1uZXcgSSgxNjc3NzIxNSk7dGhpcy5idW1wTWFwPXRoaXMubWFwPXRoaXMubWF0Y2FwPW51bGw7dGhpcy5idW1wU2NhbGU9MTt0aGlzLm5vcm1hbE1hcD1udWxsO3RoaXMubm9ybWFsTWFwVHlwZT0wO3RoaXMubm9ybWFsU2NhbGU9bmV3IGYoMSwxKTt0aGlzLmRpc3BsYWNlbWVudE1hcD1udWxsO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9MTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9MDt0aGlzLmFscGhhTWFwPW51bGw7dGhpcy5saWdodHM9dGhpcy5tb3JwaE5vcm1hbHM9dGhpcy5tb3JwaFRhcmdldHM9dGhpcy5za2lubmluZz0hMTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBkZShhKXtGYi5jYWxsKHRoaXMpOwp0aGlzLnR5cGU9IkxpbmVEYXNoZWRNYXRlcmlhbCI7dGhpcy5zY2FsZT0xO3RoaXMuZGFzaFNpemU9Mzt0aGlzLmdhcFNpemU9MTt0aGlzLnNldFZhbHVlcyhhKX1mdW5jdGlvbiBvYyhhLGMsZSxnKXt0aGlzLnBhcmFtZXRlclBvc2l0aW9ucz1hO3RoaXMuX2NhY2hlZEluZGV4PTA7dGhpcy5yZXN1bHRCdWZmZXI9dm9pZCAwIT09Zz9nOm5ldyBjLmNvbnN0cnVjdG9yKGUpO3RoaXMuc2FtcGxlVmFsdWVzPWM7dGhpcy52YWx1ZVNpemU9ZX1mdW5jdGlvbiBFZyhhLGMsZSxnKXtvYy5jYWxsKHRoaXMsYSxjLGUsZyk7dGhpcy5fb2Zmc2V0TmV4dD10aGlzLl93ZWlnaHROZXh0PXRoaXMuX29mZnNldFByZXY9dGhpcy5fd2VpZ2h0UHJldj0tMH1mdW5jdGlvbiBZZihhLGMsZSxnKXtvYy5jYWxsKHRoaXMsYSxjLGUsZyl9ZnVuY3Rpb24gRmcoYSxjLGUsZyl7b2MuY2FsbCh0aGlzLGEsYyxlLGcpfWZ1bmN0aW9uIFhiKGEsYyxlLGcpe2lmKHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIG5hbWUgaXMgdW5kZWZpbmVkIik7CmlmKHZvaWQgMD09PWN8fDA9PT1jLmxlbmd0aCl0aHJvdyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogbm8ga2V5ZnJhbWVzIGluIHRyYWNrIG5hbWVkICIrYSk7dGhpcy5uYW1lPWE7dGhpcy50aW1lcz1UYi5jb252ZXJ0QXJyYXkoYyx0aGlzLlRpbWVCdWZmZXJUeXBlKTt0aGlzLnZhbHVlcz1UYi5jb252ZXJ0QXJyYXkoZSx0aGlzLlZhbHVlQnVmZmVyVHlwZSk7dGhpcy5zZXRJbnRlcnBvbGF0aW9uKGd8fHRoaXMuRGVmYXVsdEludGVycG9sYXRpb24pfWZ1bmN0aW9uIEdnKGEsYyxlKXtYYi5jYWxsKHRoaXMsYSxjLGUpfWZ1bmN0aW9uIEhnKGEsYyxlLGcpe1hiLmNhbGwodGhpcyxhLGMsZSxnKX1mdW5jdGlvbiBTZShhLGMsZSxnKXtYYi5jYWxsKHRoaXMsYSxjLGUsZyl9ZnVuY3Rpb24gSWcoYSxjLGUsZyl7b2MuY2FsbCh0aGlzLGEsYyxlLGcpfWZ1bmN0aW9uIFpmKGEsYyxlLGcpe1hiLmNhbGwodGhpcyxhLGMsZSxnKX1mdW5jdGlvbiBKZyhhLGMsZSxnKXtYYi5jYWxsKHRoaXMsCmEsYyxlLGcpfWZ1bmN0aW9uIFRlKGEsYyxlLGcpe1hiLmNhbGwodGhpcyxhLGMsZSxnKX1mdW5jdGlvbiB0YyhhLGMsZSl7dGhpcy5uYW1lPWE7dGhpcy50cmFja3M9ZTt0aGlzLmR1cmF0aW9uPXZvaWQgMCE9PWM/YzotMTt0aGlzLnV1aWQ9aGIuZ2VuZXJhdGVVVUlEKCk7MD50aGlzLmR1cmF0aW9uJiZ0aGlzLnJlc2V0RHVyYXRpb24oKX1mdW5jdGlvbiBtbShhKXtzd2l0Y2goYS50b0xvd2VyQ2FzZSgpKXtjYXNlICJzY2FsYXIiOmNhc2UgImRvdWJsZSI6Y2FzZSAiZmxvYXQiOmNhc2UgIm51bWJlciI6Y2FzZSAiaW50ZWdlciI6cmV0dXJuIFNlO2Nhc2UgInZlY3RvciI6Y2FzZSAidmVjdG9yMiI6Y2FzZSAidmVjdG9yMyI6Y2FzZSAidmVjdG9yNCI6cmV0dXJuIFRlO2Nhc2UgImNvbG9yIjpyZXR1cm4gSGc7Y2FzZSAicXVhdGVybmlvbiI6cmV0dXJuIFpmO2Nhc2UgImJvb2wiOmNhc2UgImJvb2xlYW4iOnJldHVybiBHZztjYXNlICJzdHJpbmciOnJldHVybiBKZ310aHJvdyBFcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVW5zdXBwb3J0ZWQgdHlwZU5hbWU6ICIrCmEpO31mdW5jdGlvbiBubShhKXtpZih2b2lkIDA9PT1hLnR5cGUpdGhyb3cgRXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IHRyYWNrIHR5cGUgdW5kZWZpbmVkLCBjYW4gbm90IHBhcnNlIik7dmFyIGM9bW0oYS50eXBlKTtpZih2b2lkIDA9PT1hLnRpbWVzKXt2YXIgZT1bXSxnPVtdO1RiLmZsYXR0ZW5KU09OKGEua2V5cyxlLGcsInZhbHVlIik7YS50aW1lcz1lO2EudmFsdWVzPWd9cmV0dXJuIHZvaWQgMCE9PWMucGFyc2U/Yy5wYXJzZShhKTpuZXcgYyhhLm5hbWUsYS50aW1lcyxhLnZhbHVlcyxhLmludGVycG9sYXRpb24pfWZ1bmN0aW9uICRoKGEsYyxlKXt2YXIgZz10aGlzLHI9ITEsdj0wLHo9MCxFPXZvaWQgMDt0aGlzLm9uU3RhcnQ9dm9pZCAwO3RoaXMub25Mb2FkPWE7dGhpcy5vblByb2dyZXNzPWM7dGhpcy5vbkVycm9yPWU7dGhpcy5pdGVtU3RhcnQ9ZnVuY3Rpb24oRyl7eisrO2lmKCExPT09ciYmdm9pZCAwIT09Zy5vblN0YXJ0KWcub25TdGFydChHLHYseik7cj0hMH07CnRoaXMuaXRlbUVuZD1mdW5jdGlvbihHKXt2Kys7aWYodm9pZCAwIT09Zy5vblByb2dyZXNzKWcub25Qcm9ncmVzcyhHLHYseik7aWYodj09PXomJihyPSExLHZvaWQgMCE9PWcub25Mb2FkKSlnLm9uTG9hZCgpfTt0aGlzLml0ZW1FcnJvcj1mdW5jdGlvbihHKXtpZih2b2lkIDAhPT1nLm9uRXJyb3IpZy5vbkVycm9yKEcpfTt0aGlzLnJlc29sdmVVUkw9ZnVuY3Rpb24oRyl7cmV0dXJuIEU/RShHKTpHfTt0aGlzLnNldFVSTE1vZGlmaWVyPWZ1bmN0aW9uKEcpe0U9RztyZXR1cm4gdGhpc319ZnVuY3Rpb24gRGIoYSl7dGhpcy5tYW5hZ2VyPXZvaWQgMCE9PWE/YTpPajt0aGlzLmNyb3NzT3JpZ2luPSJhbm9ueW1vdXMiO3RoaXMucmVzb3VyY2VQYXRoPXRoaXMucGF0aD0iIn1mdW5jdGlvbiB1YyhhKXtEYi5jYWxsKHRoaXMsYSl9ZnVuY3Rpb24gYWkoYSl7RGIuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIGJpKGEpe0RiLmNhbGwodGhpcyxhKTt0aGlzLl9wYXJzZXI9bnVsbH1mdW5jdGlvbiBLZyhhKXtEYi5jYWxsKHRoaXMsCmEpO3RoaXMuX3BhcnNlcj1udWxsfWZ1bmN0aW9uIFVlKGEpe0RiLmNhbGwodGhpcyxhKX1mdW5jdGlvbiBMZyhhKXtEYi5jYWxsKHRoaXMsYSl9ZnVuY3Rpb24gTWcoYSl7RGIuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIFphKCl7dGhpcy50eXBlPSJDdXJ2ZSI7dGhpcy5hcmNMZW5ndGhEaXZpc2lvbnM9MjAwfWZ1bmN0aW9uIHBjKGEsYyxlLGcscix2LHosRSl7WmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkVsbGlwc2VDdXJ2ZSI7dGhpcy5hWD1hfHwwO3RoaXMuYVk9Y3x8MDt0aGlzLnhSYWRpdXM9ZXx8MTt0aGlzLnlSYWRpdXM9Z3x8MTt0aGlzLmFTdGFydEFuZ2xlPXJ8fDA7dGhpcy5hRW5kQW5nbGU9dnx8MipNYXRoLlBJO3RoaXMuYUNsb2Nrd2lzZT16fHwhMTt0aGlzLmFSb3RhdGlvbj1FfHwwfWZ1bmN0aW9uIFZlKGEsYyxlLGcscix2KXtwYy5jYWxsKHRoaXMsYSxjLGUsZSxnLHIsdik7dGhpcy50eXBlPSJBcmNDdXJ2ZSJ9ZnVuY3Rpb24gY2koKXtmdW5jdGlvbiBhKHYseixFLApHKXtjPXY7ZT1FO2c9LTMqdiszKnotMipFLUc7cj0yKnYtMip6K0UrR312YXIgYz0wLGU9MCxnPTAscj0wO3JldHVybntpbml0Q2F0bXVsbFJvbTpmdW5jdGlvbih2LHosRSxHLEope2EoeixFLEoqKEUtdiksSiooRy16KSl9LGluaXROb251bmlmb3JtQ2F0bXVsbFJvbTpmdW5jdGlvbih2LHosRSxHLEosUCxSKXthKHosRSwoKHotdikvSi0oRS12KS8oSitQKSsoRS16KS9QKSpQLCgoRS16KS9QLShHLXopLyhQK1IpKyhHLUUpL1IpKlApfSxjYWxjOmZ1bmN0aW9uKHYpe3ZhciB6PXYqdjtyZXR1cm4gYytlKnYrZyp6K3Iqeip2fX19ZnVuY3Rpb24gWmIoYSxjLGUsZyl7WmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkNhdG11bGxSb21DdXJ2ZTMiO3RoaXMucG9pbnRzPWF8fFtdO3RoaXMuY2xvc2VkPWN8fCExO3RoaXMuY3VydmVUeXBlPWV8fCJjZW50cmlwZXRhbCI7dGhpcy50ZW5zaW9uPWd8fC41fWZ1bmN0aW9uIFBqKGEsYyxlLGcscil7Yz0uNSooZy1jKTtyPS41KihyLWUpO3ZhciB2PQphKmE7cmV0dXJuKDIqZS0yKmcrYytyKSphKnYrKC0zKmUrMypnLTIqYy1yKSp2K2MqYStlfWZ1bmN0aW9uIG9tKGEsYyl7YT0xLWE7cmV0dXJuIGEqYSpjfWZ1bmN0aW9uIHBtKGEsYyl7cmV0dXJuIDIqKDEtYSkqYSpjfWZ1bmN0aW9uIHFtKGEsYyl7cmV0dXJuIGEqYSpjfWZ1bmN0aW9uICRmKGEsYyxlLGcpe3JldHVybiBvbShhLGMpK3BtKGEsZSkrcW0oYSxnKX1mdW5jdGlvbiBybShhLGMpe2E9MS1hO3JldHVybiBhKmEqYSpjfWZ1bmN0aW9uIHNtKGEsYyl7dmFyIGU9MS1hO3JldHVybiAzKmUqZSphKmN9ZnVuY3Rpb24gdG0oYSxjKXtyZXR1cm4gMyooMS1hKSphKmEqY31mdW5jdGlvbiB1bShhLGMpe3JldHVybiBhKmEqYSpjfWZ1bmN0aW9uIGFnKGEsYyxlLGcscil7cmV0dXJuIHJtKGEsYykrc20oYSxlKSt0bShhLGcpK3VtKGEscil9ZnVuY3Rpb24gQ2MoYSxjLGUsZyl7WmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkN1YmljQmV6aWVyQ3VydmUiO3RoaXMudjA9YXx8bmV3IGY7CnRoaXMudjE9Y3x8bmV3IGY7dGhpcy52Mj1lfHxuZXcgZjt0aGlzLnYzPWd8fG5ldyBmfWZ1bmN0aW9uIFRjKGEsYyxlLGcpe1phLmNhbGwodGhpcyk7dGhpcy50eXBlPSJDdWJpY0JlemllckN1cnZlMyI7dGhpcy52MD1hfHxuZXcgazt0aGlzLnYxPWN8fG5ldyBrO3RoaXMudjI9ZXx8bmV3IGs7dGhpcy52Mz1nfHxuZXcga31mdW5jdGlvbiBrYyhhLGMpe1phLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaW5lQ3VydmUiO3RoaXMudjE9YXx8bmV3IGY7dGhpcy52Mj1jfHxuZXcgZn1mdW5jdGlvbiBEYyhhLGMpe1phLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaW5lQ3VydmUzIjt0aGlzLnYxPWF8fG5ldyBrO3RoaXMudjI9Y3x8bmV3IGt9ZnVuY3Rpb24gRWMoYSxjLGUpe1phLmNhbGwodGhpcyk7dGhpcy50eXBlPSJRdWFkcmF0aWNCZXppZXJDdXJ2ZSI7dGhpcy52MD1hfHxuZXcgZjt0aGlzLnYxPWN8fG5ldyBmO3RoaXMudjI9ZXx8bmV3IGZ9ZnVuY3Rpb24gVWMoYSxjLGUpe1phLmNhbGwodGhpcyk7CnRoaXMudHlwZT0iUXVhZHJhdGljQmV6aWVyQ3VydmUzIjt0aGlzLnYwPWF8fG5ldyBrO3RoaXMudjE9Y3x8bmV3IGs7dGhpcy52Mj1lfHxuZXcga31mdW5jdGlvbiBGYyhhKXtaYS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iU3BsaW5lQ3VydmUiO3RoaXMucG9pbnRzPWF8fFtdfWZ1bmN0aW9uIGdkKCl7WmEuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IkN1cnZlUGF0aCI7dGhpcy5jdXJ2ZXM9W107dGhpcy5hdXRvQ2xvc2U9ITF9ZnVuY3Rpb24gR2MoYSl7Z2QuY2FsbCh0aGlzKTt0aGlzLnR5cGU9IlBhdGgiO3RoaXMuY3VycmVudFBvaW50PW5ldyBmO2EmJnRoaXMuc2V0RnJvbVBvaW50cyhhKX1mdW5jdGlvbiBDZChhKXtHYy5jYWxsKHRoaXMsYSk7dGhpcy51dWlkPWhiLmdlbmVyYXRlVVVJRCgpO3RoaXMudHlwZT0iU2hhcGUiO3RoaXMuaG9sZXM9W119ZnVuY3Rpb24gSmIoYSxjKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJMaWdodCI7dGhpcy5jb2xvcj1uZXcgSShhKTt0aGlzLmludGVuc2l0eT0Kdm9pZCAwIT09Yz9jOjE7dGhpcy5yZWNlaXZlU2hhZG93PXZvaWQgMH1mdW5jdGlvbiBOZyhhLGMsZSl7SmIuY2FsbCh0aGlzLGEsZSk7dGhpcy50eXBlPSJIZW1pc3BoZXJlTGlnaHQiO3RoaXMuY2FzdFNoYWRvdz12b2lkIDA7dGhpcy5wb3NpdGlvbi5jb3B5KEEuRGVmYXVsdFVwKTt0aGlzLnVwZGF0ZU1hdHJpeCgpO3RoaXMuZ3JvdW5kQ29sb3I9bmV3IEkoYyl9ZnVuY3Rpb24gVmMoYSl7dGhpcy5jYW1lcmE9YTt0aGlzLmJpYXM9MDt0aGlzLnJhZGl1cz0xO3RoaXMubWFwU2l6ZT1uZXcgZig1MTIsNTEyKTt0aGlzLm1hcFBhc3M9dGhpcy5tYXA9bnVsbDt0aGlzLm1hdHJpeD1uZXcgcTt0aGlzLl9mcnVzdHVtPW5ldyBpYzt0aGlzLl9mcmFtZUV4dGVudHM9bmV3IGYoMSwxKTt0aGlzLl92aWV3cG9ydENvdW50PTE7dGhpcy5fdmlld3BvcnRzPVtuZXcgcCgwLDAsMSwxKV19ZnVuY3Rpb24gT2coKXtWYy5jYWxsKHRoaXMsbmV3IHZiKDUwLDEsLjUsNTAwKSl9ZnVuY3Rpb24gUGcoYSwKYyxlLGcscix2KXtKYi5jYWxsKHRoaXMsYSxjKTt0aGlzLnR5cGU9IlNwb3RMaWdodCI7dGhpcy5wb3NpdGlvbi5jb3B5KEEuRGVmYXVsdFVwKTt0aGlzLnVwZGF0ZU1hdHJpeCgpO3RoaXMudGFyZ2V0PW5ldyBBO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJwb3dlciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24oeil7dGhpcy5pbnRlbnNpdHk9ei9NYXRoLlBJfX0pO3RoaXMuZGlzdGFuY2U9dm9pZCAwIT09ZT9lOjA7dGhpcy5hbmdsZT12b2lkIDAhPT1nP2c6TWF0aC5QSS8zO3RoaXMucGVudW1icmE9dm9pZCAwIT09cj9yOjA7dGhpcy5kZWNheT12b2lkIDAhPT12P3Y6MTt0aGlzLnNoYWRvdz1uZXcgT2d9ZnVuY3Rpb24gZGkoKXtWYy5jYWxsKHRoaXMsbmV3IHZiKDkwLDEsLjUsNTAwKSk7dGhpcy5fZnJhbWVFeHRlbnRzPW5ldyBmKDQsMik7dGhpcy5fdmlld3BvcnRDb3VudD02O3RoaXMuX3ZpZXdwb3J0cz1bbmV3IHAoMiwKMSwxLDEpLG5ldyBwKDAsMSwxLDEpLG5ldyBwKDMsMSwxLDEpLG5ldyBwKDEsMSwxLDEpLG5ldyBwKDMsMCwxLDEpLG5ldyBwKDEsMCwxLDEpXTt0aGlzLl9jdWJlRGlyZWN0aW9ucz1bbmV3IGsoMSwwLDApLG5ldyBrKC0xLDAsMCksbmV3IGsoMCwwLDEpLG5ldyBrKDAsMCwtMSksbmV3IGsoMCwxLDApLG5ldyBrKDAsLTEsMCldO3RoaXMuX2N1YmVVcHM9W25ldyBrKDAsMSwwKSxuZXcgaygwLDEsMCksbmV3IGsoMCwxLDApLG5ldyBrKDAsMSwwKSxuZXcgaygwLDAsMSksbmV3IGsoMCwwLC0xKV19ZnVuY3Rpb24gUWcoYSxjLGUsZyl7SmIuY2FsbCh0aGlzLGEsYyk7dGhpcy50eXBlPSJQb2ludExpZ2h0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywicG93ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gNCp0aGlzLmludGVuc2l0eSpNYXRoLlBJfSxzZXQ6ZnVuY3Rpb24ocil7dGhpcy5pbnRlbnNpdHk9ci8oNCpNYXRoLlBJKX19KTt0aGlzLmRpc3RhbmNlPXZvaWQgMCE9PWU/CmU6MDt0aGlzLmRlY2F5PXZvaWQgMCE9PWc/ZzoxO3RoaXMuc2hhZG93PW5ldyBkaX1mdW5jdGlvbiBiZyhhLGMsZSxnLHIsdil7emIuY2FsbCh0aGlzKTt0aGlzLnR5cGU9Ik9ydGhvZ3JhcGhpY0NhbWVyYSI7dGhpcy56b29tPTE7dGhpcy52aWV3PW51bGw7dGhpcy5sZWZ0PXZvaWQgMCE9PWE/YTotMTt0aGlzLnJpZ2h0PXZvaWQgMCE9PWM/YzoxO3RoaXMudG9wPXZvaWQgMCE9PWU/ZToxO3RoaXMuYm90dG9tPXZvaWQgMCE9PWc/ZzotMTt0aGlzLm5lYXI9dm9pZCAwIT09cj9yOi4xO3RoaXMuZmFyPXZvaWQgMCE9PXY/djoyRTM7dGhpcy51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCl9ZnVuY3Rpb24gUmcoKXtWYy5jYWxsKHRoaXMsbmV3IGJnKC01LDUsNSwtNSwuNSw1MDApKX1mdW5jdGlvbiBTZyhhLGMpe0piLmNhbGwodGhpcyxhLGMpO3RoaXMudHlwZT0iRGlyZWN0aW9uYWxMaWdodCI7dGhpcy5wb3NpdGlvbi5jb3B5KEEuRGVmYXVsdFVwKTt0aGlzLnVwZGF0ZU1hdHJpeCgpOwp0aGlzLnRhcmdldD1uZXcgQTt0aGlzLnNoYWRvdz1uZXcgUmd9ZnVuY3Rpb24gVGcoYSxjKXtKYi5jYWxsKHRoaXMsYSxjKTt0aGlzLnR5cGU9IkFtYmllbnRMaWdodCI7dGhpcy5jYXN0U2hhZG93PXZvaWQgMH1mdW5jdGlvbiBVZyhhLGMsZSxnKXtKYi5jYWxsKHRoaXMsYSxjKTt0aGlzLnR5cGU9IlJlY3RBcmVhTGlnaHQiO3RoaXMud2lkdGg9dm9pZCAwIT09ZT9lOjEwO3RoaXMuaGVpZ2h0PXZvaWQgMCE9PWc/ZzoxMH1mdW5jdGlvbiBWZyhhKXtEYi5jYWxsKHRoaXMsYSk7dGhpcy50ZXh0dXJlcz17fX1mdW5jdGlvbiBXZygpe3ZhLmNhbGwodGhpcyk7dGhpcy50eXBlPSJJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeSI7dGhpcy5tYXhJbnN0YW5jZWRDb3VudD12b2lkIDB9ZnVuY3Rpb24gWGcoYSxjLGUsZyl7Im51bWJlciI9PT10eXBlb2YgZSYmKGc9ZSxlPSExLGNvbnNvbGUuZXJyb3IoIlRIUkVFLkluc3RhbmNlZEJ1ZmZlckF0dHJpYnV0ZTogVGhlIGNvbnN0cnVjdG9yIG5vdyBleHBlY3RzIG5vcm1hbGl6ZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LiIpKTsKUS5jYWxsKHRoaXMsYSxjLGUpO3RoaXMubWVzaFBlckF0dHJpYnV0ZT1nfHwxfWZ1bmN0aW9uIFlnKGEpe0RiLmNhbGwodGhpcyxhKX1mdW5jdGlvbiBaZyhhKXtEYi5jYWxsKHRoaXMsYSl9ZnVuY3Rpb24gZWkoYSl7InVuZGVmaW5lZCI9PT10eXBlb2YgY3JlYXRlSW1hZ2VCaXRtYXAmJmNvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VCaXRtYXBMb2FkZXI6IGNyZWF0ZUltYWdlQml0bWFwKCkgbm90IHN1cHBvcnRlZC4iKTsidW5kZWZpbmVkIj09PXR5cGVvZiBmZXRjaCYmY29uc29sZS53YXJuKCJUSFJFRS5JbWFnZUJpdG1hcExvYWRlcjogZmV0Y2goKSBub3Qgc3VwcG9ydGVkLiIpO0RiLmNhbGwodGhpcyxhKTt0aGlzLm9wdGlvbnM9dm9pZCAwfWZ1bmN0aW9uIGZpKCl7dGhpcy50eXBlPSJTaGFwZVBhdGgiO3RoaXMuY29sb3I9bmV3IEk7dGhpcy5zdWJQYXRocz1bXTt0aGlzLmN1cnJlbnRQYXRoPW51bGx9ZnVuY3Rpb24gZ2koYSl7dGhpcy50eXBlPSJGb250Ijt0aGlzLmRhdGE9CmF9ZnVuY3Rpb24gdm0oYSxjLGUpe2E9QXJyYXkuZnJvbT9BcnJheS5mcm9tKGEpOlN0cmluZyhhKS5zcGxpdCgiIik7Yy89ZS5yZXNvbHV0aW9uO2Zvcih2YXIgZz0oZS5ib3VuZGluZ0JveC55TWF4LWUuYm91bmRpbmdCb3gueU1pbitlLnVuZGVybGluZVRoaWNrbmVzcykqYyxyPVtdLHY9MCx6PTAsRT0wO0U8YS5sZW5ndGg7RSsrKXt2YXIgRz1hW0VdOyJcbiI9PT1HPyh2PTAsei09Zyk6KEc9d20oRyxjLHYseixlKSx2Kz1HLm9mZnNldFgsci5wdXNoKEcucGF0aCkpfXJldHVybiByfWZ1bmN0aW9uIHdtKGEsYyxlLGcscil7dmFyIHY9ci5nbHlwaHNbYV18fHIuZ2x5cGhzWyI/Il07aWYodil7YT1uZXcgZmk7aWYodi5vKXtyPXYuX2NhY2hlZE91dGxpbmV8fCh2Ll9jYWNoZWRPdXRsaW5lPXYuby5zcGxpdCgiICIpKTtmb3IodmFyIHo9MCxFPXIubGVuZ3RoO3o8RTspc3dpdGNoKHJbeisrXSl7Y2FzZSAibSI6dmFyIEc9clt6KytdKmMrZTt2YXIgSj1yW3orK10qYytnO2EubW92ZVRvKEcsCkopO2JyZWFrO2Nhc2UgImwiOkc9clt6KytdKmMrZTtKPXJbeisrXSpjK2c7YS5saW5lVG8oRyxKKTticmVhaztjYXNlICJxIjpHPXJbeisrXSpjK2U7Sj1yW3orK10qYytnO3ZhciBQPXJbeisrXSpjK2U7dmFyIFI9clt6KytdKmMrZzthLnF1YWRyYXRpY0N1cnZlVG8oUCxSLEcsSik7YnJlYWs7Y2FzZSAiYiI6Rz1yW3orK10qYytlO0o9clt6KytdKmMrZztQPXJbeisrXSpjK2U7Uj1yW3orK10qYytnO3ZhciBTPXJbeisrXSpjK2U7dmFyIFY9clt6KytdKmMrZzthLmJlemllckN1cnZlVG8oUCxSLFMsVixHLEopfX1yZXR1cm57b2Zmc2V0WDp2LmhhKmMscGF0aDphfX1jb25zb2xlLmVycm9yKCdUSFJFRS5Gb250OiBjaGFyYWN0ZXIgIicrYSsnIiBkb2VzIG5vdCBleGlzdHMgaW4gZm9udCBmYW1pbHkgJytyLmZhbWlseU5hbWUrIi4iKX1mdW5jdGlvbiBoaShhKXtEYi5jYWxsKHRoaXMsYSl9ZnVuY3Rpb24gJGcoYSl7RGIuY2FsbCh0aGlzLGEpfWZ1bmN0aW9uIGFoKCl7dGhpcy5jb2VmZmljaWVudHM9CltdO2Zvcih2YXIgYT0wOzk+YTthKyspdGhpcy5jb2VmZmljaWVudHMucHVzaChuZXcgayl9ZnVuY3Rpb24gSGMoYSxjKXtKYi5jYWxsKHRoaXMsdm9pZCAwLGMpO3RoaXMuc2g9dm9pZCAwIT09YT9hOm5ldyBhaH1mdW5jdGlvbiBpaShhLGMsZSl7SGMuY2FsbCh0aGlzLHZvaWQgMCxlKTthPShuZXcgSSkuc2V0KGEpO2U9KG5ldyBJKS5zZXQoYyk7Yz1uZXcgayhhLnIsYS5nLGEuYik7YT1uZXcgayhlLnIsZS5nLGUuYik7ZT1NYXRoLnNxcnQoTWF0aC5QSSk7dmFyIGc9ZSpNYXRoLnNxcnQoLjc1KTt0aGlzLnNoLmNvZWZmaWNpZW50c1swXS5jb3B5KGMpLmFkZChhKS5tdWx0aXBseVNjYWxhcihlKTt0aGlzLnNoLmNvZWZmaWNpZW50c1sxXS5jb3B5KGMpLnN1YihhKS5tdWx0aXBseVNjYWxhcihnKX1mdW5jdGlvbiBqaShhLGMpe0hjLmNhbGwodGhpcyx2b2lkIDAsYyk7YT0obmV3IEkpLnNldChhKTt0aGlzLnNoLmNvZWZmaWNpZW50c1swXS5zZXQoYS5yLGEuZyxhLmIpLm11bHRpcGx5U2NhbGFyKDIqCk1hdGguc3FydChNYXRoLlBJKSl9ZnVuY3Rpb24gUWooKXt0aGlzLnR5cGU9IlN0ZXJlb0NhbWVyYSI7dGhpcy5hc3BlY3Q9MTt0aGlzLmV5ZVNlcD0uMDY0O3RoaXMuY2FtZXJhTD1uZXcgdmI7dGhpcy5jYW1lcmFMLmxheWVycy5lbmFibGUoMSk7dGhpcy5jYW1lcmFMLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5jYW1lcmFSPW5ldyB2Yjt0aGlzLmNhbWVyYVIubGF5ZXJzLmVuYWJsZSgyKTt0aGlzLmNhbWVyYVIubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLl9jYWNoZT17Zm9jdXM6bnVsbCxmb3Y6bnVsbCxhc3BlY3Q6bnVsbCxuZWFyOm51bGwsZmFyOm51bGwsem9vbTpudWxsLGV5ZVNlcDpudWxsfX1mdW5jdGlvbiBraShhKXt0aGlzLmF1dG9TdGFydD12b2lkIDAhPT1hP2E6ITA7dGhpcy5lbGFwc2VkVGltZT10aGlzLm9sZFRpbWU9dGhpcy5zdGFydFRpbWU9MDt0aGlzLnJ1bm5pbmc9ITF9ZnVuY3Rpb24gbGkoKXtBLmNhbGwodGhpcyk7dGhpcy50eXBlPSJBdWRpb0xpc3RlbmVyIjsKdGhpcy5jb250ZXh0PW1pLmdldENvbnRleHQoKTt0aGlzLmdhaW49dGhpcy5jb250ZXh0LmNyZWF0ZUdhaW4oKTt0aGlzLmdhaW4uY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pO3RoaXMuZmlsdGVyPW51bGw7dGhpcy50aW1lRGVsdGE9MDt0aGlzLl9jbG9jaz1uZXcga2l9ZnVuY3Rpb24gV2UoYSl7QS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iQXVkaW8iO3RoaXMubGlzdGVuZXI9YTt0aGlzLmNvbnRleHQ9YS5jb250ZXh0O3RoaXMuZ2Fpbj10aGlzLmNvbnRleHQuY3JlYXRlR2FpbigpO3RoaXMuZ2Fpbi5jb25uZWN0KGEuZ2V0SW5wdXQoKSk7dGhpcy5hdXRvcGxheT0hMTt0aGlzLmJ1ZmZlcj1udWxsO3RoaXMuZGV0dW5lPTA7dGhpcy5sb29wPSExO3RoaXMub2Zmc2V0PXRoaXMuc3RhcnRUaW1lPTA7dGhpcy5kdXJhdGlvbj12b2lkIDA7dGhpcy5wbGF5YmFja1JhdGU9MTt0aGlzLmlzUGxheWluZz0hMTt0aGlzLmhhc1BsYXliYWNrQ29udHJvbD0hMDt0aGlzLnNvdXJjZVR5cGU9CiJlbXB0eSI7dGhpcy5maWx0ZXJzPVtdfWZ1bmN0aW9uIG5pKGEpe1dlLmNhbGwodGhpcyxhKTt0aGlzLnBhbm5lcj10aGlzLmNvbnRleHQuY3JlYXRlUGFubmVyKCk7dGhpcy5wYW5uZXIucGFubmluZ01vZGVsPSJIUlRGIjt0aGlzLnBhbm5lci5jb25uZWN0KHRoaXMuZ2Fpbil9ZnVuY3Rpb24gb2koYSxjKXt0aGlzLmFuYWx5c2VyPWEuY29udGV4dC5jcmVhdGVBbmFseXNlcigpO3RoaXMuYW5hbHlzZXIuZmZ0U2l6ZT12b2lkIDAhPT1jP2M6MjA0ODt0aGlzLmRhdGE9bmV3IFVpbnQ4QXJyYXkodGhpcy5hbmFseXNlci5mcmVxdWVuY3lCaW5Db3VudCk7YS5nZXRPdXRwdXQoKS5jb25uZWN0KHRoaXMuYW5hbHlzZXIpfWZ1bmN0aW9uIHBpKGEsYyxlKXt0aGlzLmJpbmRpbmc9YTt0aGlzLnZhbHVlU2l6ZT1lO2E9RmxvYXQ2NEFycmF5O3N3aXRjaChjKXtjYXNlICJxdWF0ZXJuaW9uIjpjPXRoaXMuX3NsZXJwO2JyZWFrO2Nhc2UgInN0cmluZyI6Y2FzZSAiYm9vbCI6YT1BcnJheTtjPQp0aGlzLl9zZWxlY3Q7YnJlYWs7ZGVmYXVsdDpjPXRoaXMuX2xlcnB9dGhpcy5idWZmZXI9bmV3IGEoNCplKTt0aGlzLl9taXhCdWZmZXJSZWdpb249Yzt0aGlzLnJlZmVyZW5jZUNvdW50PXRoaXMudXNlQ291bnQ9dGhpcy5jdW11bGF0aXZlV2VpZ2h0PTB9ZnVuY3Rpb24gUmooYSxjLGUpe2U9ZXx8JGIucGFyc2VUcmFja05hbWUoYyk7dGhpcy5fdGFyZ2V0R3JvdXA9YTt0aGlzLl9iaW5kaW5ncz1hLnN1YnNjcmliZV8oYyxlKX1mdW5jdGlvbiAkYihhLGMsZSl7dGhpcy5wYXRoPWM7dGhpcy5wYXJzZWRQYXRoPWV8fCRiLnBhcnNlVHJhY2tOYW1lKGMpO3RoaXMubm9kZT0kYi5maW5kTm9kZShhLHRoaXMucGFyc2VkUGF0aC5ub2RlTmFtZSl8fGE7dGhpcy5yb290Tm9kZT1hfWZ1bmN0aW9uIFNqKCl7dGhpcy51dWlkPWhiLmdlbmVyYXRlVVVJRCgpO3RoaXMuX29iamVjdHM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTt0aGlzLm5DYWNoZWRPYmplY3RzXz0wO3ZhciBhPQp7fTt0aGlzLl9pbmRpY2VzQnlVVUlEPWE7Zm9yKHZhciBjPTAsZT1hcmd1bWVudHMubGVuZ3RoO2MhPT1lOysrYylhW2FyZ3VtZW50c1tjXS51dWlkXT1jO3RoaXMuX3BhdGhzPVtdO3RoaXMuX3BhcnNlZFBhdGhzPVtdO3RoaXMuX2JpbmRpbmdzPVtdO3RoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aD17fTt2YXIgZz10aGlzO3RoaXMuc3RhdHM9e29iamVjdHM6e2dldCB0b3RhbCgpe3JldHVybiBnLl9vYmplY3RzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIHRoaXMudG90YWwtZy5uQ2FjaGVkT2JqZWN0c199fSxnZXQgYmluZGluZ3NQZXJPYmplY3QoKXtyZXR1cm4gZy5fYmluZGluZ3MubGVuZ3RofX19ZnVuY3Rpb24gVGooYSxjLGUpe3RoaXMuX21peGVyPWE7dGhpcy5fY2xpcD1jO3RoaXMuX2xvY2FsUm9vdD1lfHxudWxsO2E9Yy50cmFja3M7Yz1hLmxlbmd0aDtlPUFycmF5KGMpO2Zvcih2YXIgZz17ZW5kaW5nU3RhcnQ6MjQwMCxlbmRpbmdFbmQ6MjQwMH0scj0wO3IhPT0KYzsrK3Ipe3ZhciB2PWFbcl0uY3JlYXRlSW50ZXJwb2xhbnQobnVsbCk7ZVtyXT12O3Yuc2V0dGluZ3M9Z310aGlzLl9pbnRlcnBvbGFudFNldHRpbmdzPWc7dGhpcy5faW50ZXJwb2xhbnRzPWU7dGhpcy5fcHJvcGVydHlCaW5kaW5ncz1BcnJheShjKTt0aGlzLl93ZWlnaHRJbnRlcnBvbGFudD10aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudD10aGlzLl9ieUNsaXBDYWNoZUluZGV4PXRoaXMuX2NhY2hlSW5kZXg9bnVsbDt0aGlzLmxvb3A9MjIwMTt0aGlzLl9sb29wQ291bnQ9LTE7dGhpcy5fc3RhcnRUaW1lPW51bGw7dGhpcy50aW1lPTA7dGhpcy5fZWZmZWN0aXZlV2VpZ2h0PXRoaXMud2VpZ2h0PXRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT10aGlzLnRpbWVTY2FsZT0xO3RoaXMucmVwZXRpdGlvbnM9SW5maW5pdHk7dGhpcy5wYXVzZWQ9ITE7dGhpcy5lbmFibGVkPSEwO3RoaXMuY2xhbXBXaGVuRmluaXNoZWQ9ITE7dGhpcy56ZXJvU2xvcGVBdEVuZD10aGlzLnplcm9TbG9wZUF0U3RhcnQ9CiEwfWZ1bmN0aW9uIHFpKGEpe3RoaXMuX3Jvb3Q9YTt0aGlzLl9pbml0TWVtb3J5TWFuYWdlcigpO3RoaXMudGltZT10aGlzLl9hY2N1SW5kZXg9MDt0aGlzLnRpbWVTY2FsZT0xfWZ1bmN0aW9uIGJoKGEsYyl7InN0cmluZyI9PT10eXBlb2YgYSYmKGNvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogVHlwZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIG5lZWRlZC4iKSxhPWMpO3RoaXMudmFsdWU9YX1mdW5jdGlvbiByaShhLGMsZSl7UWQuY2FsbCh0aGlzLGEsYyk7dGhpcy5tZXNoUGVyQXR0cmlidXRlPWV8fDF9ZnVuY3Rpb24gVWooYSxjLGUsZyl7dGhpcy5yYXk9bmV3IEQoYSxjKTt0aGlzLm5lYXI9ZXx8MDt0aGlzLmZhcj1nfHxJbmZpbml0eTt0aGlzLmNhbWVyYT1udWxsO3RoaXMucGFyYW1zPXtNZXNoOnt9LExpbmU6e30sTE9EOnt9LFBvaW50czp7dGhyZXNob2xkOjF9LFNwcml0ZTp7fX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcy5wYXJhbXMse1BvaW50Q2xvdWQ6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuUmF5Y2FzdGVyOiBwYXJhbXMuUG9pbnRDbG91ZCBoYXMgYmVlbiByZW5hbWVkIHRvIHBhcmFtcy5Qb2ludHMuIik7CnJldHVybiB0aGlzLlBvaW50c319fSl9ZnVuY3Rpb24gVmooYSxjKXtyZXR1cm4gYS5kaXN0YW5jZS1jLmRpc3RhbmNlfWZ1bmN0aW9uIHNpKGEsYyxlLGcpe2lmKCExIT09YS52aXNpYmxlJiYoYS5yYXljYXN0KGMsZSksITA9PT1nKSl7YT1hLmNoaWxkcmVuO2c9MDtmb3IodmFyIHI9YS5sZW5ndGg7ZzxyO2crKylzaShhW2ddLGMsZSwhMCl9fWZ1bmN0aW9uIFdqKGEsYyxlKXt0aGlzLnJhZGl1cz12b2lkIDAhPT1hP2E6MTt0aGlzLnBoaT12b2lkIDAhPT1jP2M6MDt0aGlzLnRoZXRhPXZvaWQgMCE9PWU/ZTowO3JldHVybiB0aGlzfWZ1bmN0aW9uIFhqKGEsYyxlKXt0aGlzLnJhZGl1cz12b2lkIDAhPT1hP2E6MTt0aGlzLnRoZXRhPXZvaWQgMCE9PWM/YzowO3RoaXMueT12b2lkIDAhPT1lP2U6MDtyZXR1cm4gdGhpc31mdW5jdGlvbiB0aShhLGMpe3RoaXMubWluPXZvaWQgMCE9PWE/YTpuZXcgZihJbmZpbml0eSxJbmZpbml0eSk7dGhpcy5tYXg9dm9pZCAwIT09Yz9jOm5ldyBmKC1JbmZpbml0eSwKLUluZmluaXR5KX1mdW5jdGlvbiB1aShhLGMpe3RoaXMuc3RhcnQ9dm9pZCAwIT09YT9hOm5ldyBrO3RoaXMuZW5kPXZvaWQgMCE9PWM/YzpuZXcga31mdW5jdGlvbiBjZyhhKXtBLmNhbGwodGhpcyk7dGhpcy5tYXRlcmlhbD1hO3RoaXMucmVuZGVyPWZ1bmN0aW9uKCl7fX1mdW5jdGlvbiBkZyhhLGMsZSxnKXt0aGlzLm9iamVjdD1hO3RoaXMuc2l6ZT12b2lkIDAhPT1jP2M6MTthPXZvaWQgMCE9PWU/ZToxNjcxMTY4MDtnPXZvaWQgMCE9PWc/ZzoxO2M9MDsoZT10aGlzLm9iamVjdC5nZW9tZXRyeSkmJmUuaXNHZW9tZXRyeT9jPTMqZS5mYWNlcy5sZW5ndGg6ZSYmZS5pc0J1ZmZlckdlb21ldHJ5JiYoYz1lLmF0dHJpYnV0ZXMubm9ybWFsLmNvdW50KTtlPW5ldyB2YTtjPW5ldyBjYSg2KmMsMyk7ZS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixjKTtJYi5jYWxsKHRoaXMsZSxuZXcgRmIoe2NvbG9yOmEsbGluZXdpZHRoOmd9KSk7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMudXBkYXRlKCl9CmZ1bmN0aW9uIFhlKGEsYyl7QS5jYWxsKHRoaXMpO3RoaXMubGlnaHQ9YTt0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5jb2xvcj1jO2E9bmV3IHZhO2M9WzAsMCwwLDAsMCwxLDAsMCwwLDEsMCwxLDAsMCwwLC0xLDAsMSwwLDAsMCwwLDEsMSwwLDAsMCwwLC0xLDFdO2Zvcih2YXIgZT0wLGc9MTszMj5lO2UrKyxnKyspe3ZhciByPWUvMzIqTWF0aC5QSSoyLHY9Zy8zMipNYXRoLlBJKjI7Yy5wdXNoKE1hdGguY29zKHIpLE1hdGguc2luKHIpLDEsTWF0aC5jb3ModiksTWF0aC5zaW4odiksMSl9YS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoYywzKSk7Yz1uZXcgRmIoe2ZvZzohMX0pO3RoaXMuY29uZT1uZXcgSWIoYSxjKTt0aGlzLmFkZCh0aGlzLmNvbmUpO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gWWooYSl7dmFyIGM9W107YSYmYS5pc0JvbmUmJmMucHVzaChhKTsKZm9yKHZhciBlPTA7ZTxhLmNoaWxkcmVuLmxlbmd0aDtlKyspYy5wdXNoLmFwcGx5KGMsWWooYS5jaGlsZHJlbltlXSkpO3JldHVybiBjfWZ1bmN0aW9uIFllKGEpe2Zvcih2YXIgYz1ZaihhKSxlPW5ldyB2YSxnPVtdLHI9W10sdj1uZXcgSSgwLDAsMSksej1uZXcgSSgwLDEsMCksRT0wO0U8Yy5sZW5ndGg7RSsrKXt2YXIgRz1jW0VdO0cucGFyZW50JiZHLnBhcmVudC5pc0JvbmUmJihnLnB1c2goMCwwLDApLGcucHVzaCgwLDAsMCksci5wdXNoKHYucix2Lmcsdi5iKSxyLnB1c2goei5yLHouZyx6LmIpKX1lLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShnLDMpKTtlLmFkZEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBjYShyLDMpKTtnPW5ldyBGYih7dmVydGV4Q29sb3JzOjIsZGVwdGhUZXN0OiExLGRlcHRoV3JpdGU6ITEsdHJhbnNwYXJlbnQ6ITB9KTtJYi5jYWxsKHRoaXMsZSxnKTt0aGlzLnJvb3Q9YTt0aGlzLmJvbmVzPWM7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9CiExfWZ1bmN0aW9uIFplKGEsYyxlKXt0aGlzLmxpZ2h0PWE7dGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpO3RoaXMuY29sb3I9ZTthPW5ldyBCZChjLDQsMik7Yz1uZXcgTCh7d2lyZWZyYW1lOiEwLGZvZzohMX0pO3hhLmNhbGwodGhpcyxhLGMpO3RoaXMubWF0cml4PXRoaXMubGlnaHQubWF0cml4V29ybGQ7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gJGUoYSxjKXt0aGlzLnR5cGU9IlJlY3RBcmVhTGlnaHRIZWxwZXIiO3RoaXMubGlnaHQ9YTt0aGlzLmNvbG9yPWM7YT1uZXcgdmE7YS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoWzEsMSwwLC0xLDEsMCwtMSwtMSwwLDEsLTEsMCwxLDEsMF0sMykpO2EuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7Yz1uZXcgRmIoe2ZvZzohMX0pO1ZiLmNhbGwodGhpcyxhLGMpO2E9bmV3IHZhO2EuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKFsxLDEsMCwtMSwxLDAsLTEsLTEsMCwKMSwxLDAsLTEsLTEsMCwxLC0xLDBdLDMpKTthLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpO3RoaXMuYWRkKG5ldyB4YShhLG5ldyBMKHtzaWRlOjEsZm9nOiExfSkpKTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGFmKGEsYyxlKXtBLmNhbGwodGhpcyk7dGhpcy5saWdodD1hO3RoaXMubGlnaHQudXBkYXRlTWF0cml4V29ybGQoKTt0aGlzLm1hdHJpeD1hLm1hdHJpeFdvcmxkO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLmNvbG9yPWU7YT1uZXcgUmQoYyk7YS5yb3RhdGVZKC41Kk1hdGguUEkpO3RoaXMubWF0ZXJpYWw9bmV3IEwoe3dpcmVmcmFtZTohMCxmb2c6ITF9KTt2b2lkIDA9PT10aGlzLmNvbG9yJiYodGhpcy5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9Mik7Yz1hLmdldEF0dHJpYnV0ZSgicG9zaXRpb24iKTthLmFkZEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBRKG5ldyBGbG9hdDMyQXJyYXkoMypjLmNvdW50KSwzKSk7dGhpcy5hZGQobmV3IHhhKGEsdGhpcy5tYXRlcmlhbCkpOwp0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGJmKGEsYyl7dGhpcy5saWdodFByb2JlPWE7dGhpcy5zaXplPWM7YT1uZXcgcWIoe2RlZmluZXM6e0dBTU1BX09VVFBVVDoiIn0sdW5pZm9ybXM6e3NoOnt2YWx1ZTp0aGlzLmxpZ2h0UHJvYmUuc2guY29lZmZpY2llbnRzfSxpbnRlbnNpdHk6e3ZhbHVlOnRoaXMubGlnaHRQcm9iZS5pbnRlbnNpdHl9fSx2ZXJ0ZXhTaGFkZXI6InZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xudm9pZCBtYWluKCkge1xuXHR2Tm9ybWFsIFx4M2Qgbm9ybWFsaXplKCBub3JtYWxNYXRyaXggKiBub3JtYWwgKTtcblx0Z2xfUG9zaXRpb24gXHgzZCBwcm9qZWN0aW9uTWF0cml4ICogbW9kZWxWaWV3TWF0cml4ICogdmVjNCggcG9zaXRpb24sIDEuMCApO1xufSIsZnJhZ21lbnRTaGFkZXI6IiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NlxudmVjMyBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBpbiB2ZWMzIG5vcm1hbCwgaW4gbWF0NCBtYXRyaXggKSB7XG5cdC8vIG1hdHJpeCBpcyBhc3N1bWVkIHRvIGJlIG9ydGhvZ29uYWxcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCB2ZWM0KCBub3JtYWwsIDAuMCApICogbWF0cml4ICkueHl6ICk7XG59XG52ZWMzIGxpbmVhclRvT3V0cHV0KCBpbiB2ZWMzIGEgKSB7XG5cdCNpZmRlZiBHQU1NQV9PVVRQVVRcblx0XHRyZXR1cm4gcG93KCBhLCB2ZWMzKCAxLjAgLyBmbG9hdCggR0FNTUFfRkFDVE9SICkgKSApO1xuXHQjZWxzZVxuXHRcdHJldHVybiBhO1xuXHQjZW5kaWZcbn1cbi8vIHNvdXJjZTogaHR0cHM6Ly9ncmFwaGljcy5zdGFuZm9yZC5lZHUvcGFwZXJzL2Vudm1hcC9lbnZtYXAucGRmXG52ZWMzIHNoR2V0SXJyYWRpYW5jZUF0KCBpbiB2ZWMzIG5vcm1hbCwgaW4gdmVjMyBzaENvZWZmaWNpZW50c1sgOSBdICkge1xuXHQvLyBub3JtYWwgaXMgYXNzdW1lZCB0byBoYXZlIHVuaXQgbGVuZ3RoXG5cdGZsb2F0IHggXHgzZCBub3JtYWwueCwgeSBceDNkIG5vcm1hbC55LCB6IFx4M2Qgbm9ybWFsLno7XG5cdC8vIGJhbmQgMFxuXHR2ZWMzIHJlc3VsdCBceDNkIHNoQ29lZmZpY2llbnRzWyAwIF0gKiAwLjg4NjIyNztcblx0Ly8gYmFuZCAxXG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5O1xuXHRyZXN1bHQgK1x4M2Qgc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejtcblx0cmVzdWx0ICtceDNkIHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7XG5cdC8vIGJhbmQgMlxuXHRyZXN1bHQgK1x4M2Qgc2hDb2VmZmljaWVudHNbIDQgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHk7XG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgNSBdICogMi4wICogMC40MjkwNDMgKiB5ICogejtcblx0cmVzdWx0ICtceDNkIHNoQ29lZmZpY2llbnRzWyA2IF0gKiAoIDAuNzQzMTI1ICogeiAqIHogLSAwLjI0NzcwOCApO1xuXHRyZXN1bHQgK1x4M2Qgc2hDb2VmZmljaWVudHNbIDcgXSAqIDIuMCAqIDAuNDI5MDQzICogeCAqIHo7XG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgOCBdICogMC40MjkwNDMgKiAoIHggKiB4IC0geSAqIHkgKTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cbnVuaWZvcm0gdmVjMyBzaFsgOSBdOyAvLyBzaCBjb2VmZmljaWVudHNcbnVuaWZvcm0gZmxvYXQgaW50ZW5zaXR5OyAvLyBsaWdodCBwcm9iZSBpbnRlbnNpdHlcbnZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xudm9pZCBtYWluKCkge1xuXHR2ZWMzIG5vcm1hbCBceDNkIG5vcm1hbGl6ZSggdk5vcm1hbCApO1xuXHR2ZWMzIHdvcmxkTm9ybWFsIFx4M2QgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggbm9ybWFsLCB2aWV3TWF0cml4ICk7XG5cdHZlYzMgaXJyYWRpYW5jZSBceDNkIHNoR2V0SXJyYWRpYW5jZUF0KCB3b3JsZE5vcm1hbCwgc2ggKTtcblx0dmVjMyBvdXRnb2luZ0xpZ2h0IFx4M2QgUkVDSVBST0NBTF9QSSAqIGlycmFkaWFuY2UgKiBpbnRlbnNpdHk7XG5cdG91dGdvaW5nTGlnaHQgXHgzZCBsaW5lYXJUb091dHB1dCggb3V0Z29pbmdMaWdodCApO1xuXHRnbF9GcmFnQ29sb3IgXHgzZCB2ZWM0KCBvdXRnb2luZ0xpZ2h0LCAxLjAgKTtcbn0ifSk7CmM9bmV3IEJkKDEsMzIsMTYpO3hhLmNhbGwodGhpcyxjLGEpO3RoaXMub25CZWZvcmVSZW5kZXIoKX1mdW5jdGlvbiBjaChhLGMsZSxnKXthPWF8fDEwO2M9Y3x8MTA7ZT1uZXcgSSh2b2lkIDAhPT1lP2U6NDQ3MzkyNCk7Zz1uZXcgSSh2b2lkIDAhPT1nP2c6ODk0Nzg0OCk7dmFyIHI9Yy8yLHY9YS9jLHo9YS8yO2E9W107Zm9yKHZhciBFPVtdLEc9MCxKPTAsUD0tejtHPD1jO0crKyxQKz12KXthLnB1c2goLXosMCxQLHosMCxQKTthLnB1c2goUCwwLC16LFAsMCx6KTt2YXIgUj1HPT09cj9lOmc7Ui50b0FycmF5KEUsSik7Sis9MztSLnRvQXJyYXkoRSxKKTtKKz0zO1IudG9BcnJheShFLEopO0orPTM7Ui50b0FycmF5KEUsSik7Sis9M31jPW5ldyB2YTtjLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYShhLDMpKTtjLmFkZEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBjYShFLDMpKTtlPW5ldyBGYih7dmVydGV4Q29sb3JzOjJ9KTtJYi5jYWxsKHRoaXMsYyxlKX1mdW5jdGlvbiBkaChhLApjLGUsZyxyLHYpe2E9YXx8MTA7Yz1jfHwxNjtlPWV8fDg7Zz1nfHw2NDtyPW5ldyBJKHZvaWQgMCE9PXI/cjo0NDczOTI0KTt2PW5ldyBJKHZvaWQgMCE9PXY/djo4OTQ3ODQ4KTt2YXIgej1bXSxFPVtdLEc7Zm9yKEc9MDtHPD1jO0crKyl7dmFyIEo9Ry9jKjIqTWF0aC5QSTt2YXIgUD1NYXRoLnNpbihKKSphO0o9TWF0aC5jb3MoSikqYTt6LnB1c2goMCwwLDApO3oucHVzaChQLDAsSik7dmFyIFI9RyYxP3I6djtFLnB1c2goUi5yLFIuZyxSLmIpO0UucHVzaChSLnIsUi5nLFIuYil9Zm9yKEc9MDtHPD1lO0crKyl7Uj1HJjE/cjp2O3ZhciBTPWEtYS9lKkc7Zm9yKGM9MDtjPGc7YysrKUo9Yy9nKjIqTWF0aC5QSSxQPU1hdGguc2luKEopKlMsSj1NYXRoLmNvcyhKKSpTLHoucHVzaChQLDAsSiksRS5wdXNoKFIucixSLmcsUi5iKSxKPShjKzEpL2cqMipNYXRoLlBJLFA9TWF0aC5zaW4oSikqUyxKPU1hdGguY29zKEopKlMsei5wdXNoKFAsMCxKKSxFLnB1c2goUi5yLFIuZyxSLmIpfWE9Cm5ldyB2YTthLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBjYSh6LDMpKTthLmFkZEF0dHJpYnV0ZSgiY29sb3IiLG5ldyBjYShFLDMpKTt6PW5ldyBGYih7dmVydGV4Q29sb3JzOjJ9KTtJYi5jYWxsKHRoaXMsYSx6KX1mdW5jdGlvbiBjZihhLGMsZSxnKXt0aGlzLmF1ZGlvPWE7dGhpcy5yYW5nZT1jfHwxO3RoaXMuZGl2aXNpb25zSW5uZXJBbmdsZT1lfHwxNjt0aGlzLmRpdmlzaW9uc091dGVyQW5nbGU9Z3x8MjthPW5ldyB2YTthLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLG5ldyBRKG5ldyBGbG9hdDMyQXJyYXkoMyooMyoodGhpcy5kaXZpc2lvbnNJbm5lckFuZ2xlKzIqdGhpcy5kaXZpc2lvbnNPdXRlckFuZ2xlKSszKSksMykpO2M9bmV3IEZiKHtjb2xvcjo2NTI4MH0pO2U9bmV3IEZiKHtjb2xvcjoxNjc3Njk2MH0pO1ZiLmNhbGwodGhpcyxhLFtlLGNdKTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGVnKGEsYyxlLGcpe3RoaXMub2JqZWN0PWE7dGhpcy5zaXplPXZvaWQgMCE9PQpjP2M6MTthPXZvaWQgMCE9PWU/ZToxNjc3Njk2MDtnPXZvaWQgMCE9PWc/ZzoxO2M9MDsoZT10aGlzLm9iamVjdC5nZW9tZXRyeSkmJmUuaXNHZW9tZXRyeT9jPWUuZmFjZXMubGVuZ3RoOmNvbnNvbGUud2FybigiVEhSRUUuRmFjZU5vcm1hbHNIZWxwZXI6IG9ubHkgVEhSRUUuR2VvbWV0cnkgaXMgc3VwcG9ydGVkLiBVc2UgVEhSRUUuVmVydGV4Tm9ybWFsc0hlbHBlciwgaW5zdGVhZC4iKTtlPW5ldyB2YTtjPW5ldyBjYSg2KmMsMyk7ZS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixjKTtJYi5jYWxsKHRoaXMsZSxuZXcgRmIoe2NvbG9yOmEsbGluZXdpZHRoOmd9KSk7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gZGYoYSxjLGUpe0EuY2FsbCh0aGlzKTt0aGlzLmxpZ2h0PWE7dGhpcy5saWdodC51cGRhdGVNYXRyaXhXb3JsZCgpO3RoaXMubWF0cml4PWEubWF0cml4V29ybGQ7dGhpcy5tYXRyaXhBdXRvVXBkYXRlPSExO3RoaXMuY29sb3I9ZTsKdm9pZCAwPT09YyYmKGM9MSk7YT1uZXcgdmE7YS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoWy1jLGMsMCxjLGMsMCxjLC1jLDAsLWMsLWMsMCwtYyxjLDBdLDMpKTtjPW5ldyBGYih7Zm9nOiExfSk7dGhpcy5saWdodFBsYW5lPW5ldyBWYihhLGMpO3RoaXMuYWRkKHRoaXMubGlnaHRQbGFuZSk7YT1uZXcgdmE7YS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoWzAsMCwwLDAsMCwxXSwzKSk7dGhpcy50YXJnZXRMaW5lPW5ldyBWYihhLGMpO3RoaXMuYWRkKHRoaXMudGFyZ2V0TGluZSk7dGhpcy51cGRhdGUoKX1mdW5jdGlvbiBmZyhhKXtmdW5jdGlvbiBjKFYsVyxoYSl7ZShWLGhhKTtlKFcsaGEpfWZ1bmN0aW9uIGUoVixXKXt2LnB1c2goMCwwLDApO3oucHVzaChXLnIsVy5nLFcuYik7dm9pZCAwPT09RVtWXSYmKEVbVl09W10pO0VbVl0ucHVzaCh2Lmxlbmd0aC8zLTEpfXZhciBnPW5ldyB2YSxyPW5ldyBGYih7Y29sb3I6MTY3NzcyMTUsdmVydGV4Q29sb3JzOjF9KSwKdj1bXSx6PVtdLEU9e30sRz1uZXcgSSgxNjc1NTIwMCksSj1uZXcgSSgxNjcxMTY4MCksUD1uZXcgSSg0Mzc3NSksUj1uZXcgSSgxNjc3NzIxNSksUz1uZXcgSSgzMzU1NDQzKTtjKCJuMSIsIm4yIixHKTtjKCJuMiIsIm40IixHKTtjKCJuNCIsIm4zIixHKTtjKCJuMyIsIm4xIixHKTtjKCJmMSIsImYyIixHKTtjKCJmMiIsImY0IixHKTtjKCJmNCIsImYzIixHKTtjKCJmMyIsImYxIixHKTtjKCJuMSIsImYxIixHKTtjKCJuMiIsImYyIixHKTtjKCJuMyIsImYzIixHKTtjKCJuNCIsImY0IixHKTtjKCJwIiwibjEiLEopO2MoInAiLCJuMiIsSik7YygicCIsIm4zIixKKTtjKCJwIiwibjQiLEopO2MoInUxIiwidTIiLFApO2MoInUyIiwidTMiLFApO2MoInUzIiwidTEiLFApO2MoImMiLCJ0IixSKTtjKCJwIiwiYyIsUyk7YygiY24xIiwiY24yIixTKTtjKCJjbjMiLCJjbjQiLFMpO2MoImNmMSIsImNmMiIsUyk7YygiY2YzIiwiY2Y0IixTKTtnLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLApuZXcgY2EodiwzKSk7Zy5hZGRBdHRyaWJ1dGUoImNvbG9yIixuZXcgY2EoeiwzKSk7SWIuY2FsbCh0aGlzLGcscik7dGhpcy5jYW1lcmE9YTt0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4JiZ0aGlzLmNhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7dGhpcy5tYXRyaXg9YS5tYXRyaXhXb3JsZDt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5wb2ludE1hcD1FO3RoaXMudXBkYXRlKCl9ZnVuY3Rpb24gUGIoYSxjLGUsZyxyLHYseil7ZWguc2V0KHIsdix6KS51bnByb2plY3QoZyk7YT1jW2FdO2lmKHZvaWQgMCE9PWEpZm9yKGU9ZS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIiksYz0wLGc9YS5sZW5ndGg7YzxnO2MrKyllLnNldFhZWihhW2NdLGVoLngsZWgueSxlaC56KX1mdW5jdGlvbiBoZChhLGMpe3RoaXMub2JqZWN0PWE7dm9pZCAwPT09YyYmKGM9MTY3NzY5NjApO2E9bmV3IFVpbnQxNkFycmF5KFswLDEsMSwyLDIsMywzLDAsNCw1LDUsNiw2LDcsNywKNCwwLDQsMSw1LDIsNiwzLDddKTt2YXIgZT1uZXcgRmxvYXQzMkFycmF5KDI0KSxnPW5ldyB2YTtnLnNldEluZGV4KG5ldyBRKGEsMSkpO2cuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IFEoZSwzKSk7SWIuY2FsbCh0aGlzLGcsbmV3IEZiKHtjb2xvcjpjfSkpO3RoaXMubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLnVwZGF0ZSgpfWZ1bmN0aW9uIGdnKGEsYyl7dGhpcy50eXBlPSJCb3gzSGVscGVyIjt0aGlzLmJveD1hO2M9Y3x8MTY3NzY5NjA7YT1uZXcgVWludDE2QXJyYXkoWzAsMSwxLDIsMiwzLDMsMCw0LDUsNSw2LDYsNyw3LDQsMCw0LDEsNSwyLDYsMyw3XSk7dmFyIGU9bmV3IHZhO2Uuc2V0SW5kZXgobmV3IFEoYSwxKSk7ZS5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoWzEsMSwxLC0xLDEsMSwtMSwtMSwxLDEsLTEsMSwxLDEsLTEsLTEsMSwtMSwtMSwtMSwtMSwxLC0xLC0xXSwzKSk7SWIuY2FsbCh0aGlzLGUsbmV3IEZiKHtjb2xvcjpjfSkpO3RoaXMuZ2VvbWV0cnkuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCl9CmZ1bmN0aW9uIGhnKGEsYyxlKXt0aGlzLnR5cGU9IlBsYW5lSGVscGVyIjt0aGlzLnBsYW5lPWE7dGhpcy5zaXplPXZvaWQgMD09PWM/MTpjO2E9dm9pZCAwIT09ZT9lOjE2Nzc2OTYwO2M9bmV3IHZhO2MuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKFsxLC0xLDEsLTEsMSwxLC0xLC0xLDEsMSwxLDEsLTEsMSwxLC0xLC0xLDEsMSwtMSwxLDEsMSwxLDAsMCwxLDAsMCwwXSwzKSk7Yy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtWYi5jYWxsKHRoaXMsYyxuZXcgRmIoe2NvbG9yOmF9KSk7Yz1uZXcgdmE7Yy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixuZXcgY2EoWzEsMSwxLC0xLDEsMSwtMSwtMSwxLDEsMSwxLC0xLC0xLDEsMSwtMSwxXSwzKSk7Yy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTt0aGlzLmFkZChuZXcgeGEoYyxuZXcgTCh7Y29sb3I6YSxvcGFjaXR5Oi4yLHRyYW5zcGFyZW50OiEwLGRlcHRoV3JpdGU6ITF9KSkpfWZ1bmN0aW9uIGlkKGEsYyxlLGcscix2KXtBLmNhbGwodGhpcyk7CnZvaWQgMD09PWEmJihhPW5ldyBrKDAsMCwxKSk7dm9pZCAwPT09YyYmKGM9bmV3IGsoMCwwLDApKTt2b2lkIDA9PT1lJiYoZT0xKTt2b2lkIDA9PT1nJiYoZz0xNjc3Njk2MCk7dm9pZCAwPT09ciYmKHI9LjIqZSk7dm9pZCAwPT09diYmKHY9LjIqcik7dm9pZCAwPT09ZmgmJihmaD1uZXcgdmEsZmguYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKFswLDAsMCwwLDEsMF0sMykpLHZpPW5ldyBmZCgwLC41LDEsNSwxKSx2aS50cmFuc2xhdGUoMCwtLjUsMCkpO3RoaXMucG9zaXRpb24uY29weShjKTt0aGlzLmxpbmU9bmV3IFZiKGZoLG5ldyBGYih7Y29sb3I6Z30pKTt0aGlzLmxpbmUubWF0cml4QXV0b1VwZGF0ZT0hMTt0aGlzLmFkZCh0aGlzLmxpbmUpO3RoaXMuY29uZT1uZXcgeGEodmksbmV3IEwoe2NvbG9yOmd9KSk7dGhpcy5jb25lLm1hdHJpeEF1dG9VcGRhdGU9ITE7dGhpcy5hZGQodGhpcy5jb25lKTt0aGlzLnNldERpcmVjdGlvbihhKTt0aGlzLnNldExlbmd0aChlLApyLHYpfWZ1bmN0aW9uIGlnKGEpe2E9YXx8MTt2YXIgYz1bMCwwLDAsYSwwLDAsMCwwLDAsMCxhLDAsMCwwLDAsMCwwLGFdO2E9bmV3IHZhO2EuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKGMsMykpO2EuYWRkQXR0cmlidXRlKCJjb2xvciIsbmV3IGNhKFsxLDAsMCwxLC42LDAsMCwxLDAsLjYsMSwwLDAsMCwxLDAsLjYsMV0sMykpO2M9bmV3IEZiKHt2ZXJ0ZXhDb2xvcnM6Mn0pO0liLmNhbGwodGhpcyxhLGMpfWZ1bmN0aW9uIFpqKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQ2xvc2VkU3BsaW5lQ3VydmUzIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5DYXRtdWxsUm9tQ3VydmUzIGluc3RlYWQuIik7WmIuY2FsbCh0aGlzLGEpO3RoaXMudHlwZT0iY2F0bXVsbHJvbSI7dGhpcy5jbG9zZWQ9ITB9ZnVuY3Rpb24gYWsoYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TcGxpbmVDdXJ2ZTMgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4iKTsKWmIuY2FsbCh0aGlzLGEpO3RoaXMudHlwZT0iY2F0bXVsbHJvbSJ9ZnVuY3Rpb24gd2koYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TcGxpbmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkNhdG11bGxSb21DdXJ2ZTMgaW5zdGVhZC4iKTtaYi5jYWxsKHRoaXMsYSk7dGhpcy50eXBlPSJjYXRtdWxscm9tIn12b2lkIDA9PT1OdW1iZXIuRVBTSUxPTiYmKE51bWJlci5FUFNJTE9OPU1hdGgucG93KDIsLTUyKSk7dm9pZCAwPT09TnVtYmVyLmlzSW50ZWdlciYmKE51bWJlci5pc0ludGVnZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgYSYmaXNGaW5pdGUoYSkmJk1hdGguZmxvb3IoYSk9PT1hfSk7dm9pZCAwPT09TWF0aC5zaWduJiYoTWF0aC5zaWduPWZ1bmN0aW9uKGEpe3JldHVybiAwPmE/LTE6MDxhPzE6K2F9KTshMT09PSJuYW1lImluIEZ1bmN0aW9uLnByb3RvdHlwZSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KEZ1bmN0aW9uLnByb3RvdHlwZSwibmFtZSIsCntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b1N0cmluZygpLm1hdGNoKC9eXHMqZnVuY3Rpb25ccyooW15cKFxzXSopLylbMV19fSk7dm9pZCAwPT09T2JqZWN0LmFzc2lnbiYmKE9iamVjdC5hc3NpZ249ZnVuY3Rpb24oYSl7aWYodm9pZCAwPT09YXx8bnVsbD09PWEpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Iik7Zm9yKHZhciBjPU9iamVjdChhKSxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIGc9YXJndW1lbnRzW2VdO2lmKHZvaWQgMCE9PWcmJm51bGwhPT1nKWZvcih2YXIgciBpbiBnKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnLHIpJiYoY1tyXT1nW3JdKX1yZXR1cm4gY30pO09iamVjdC5hc3NpZ24oZC5wcm90b3R5cGUse2FkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMmJih0aGlzLl9saXN0ZW5lcnM9e30pO3ZhciBlPQp0aGlzLl9saXN0ZW5lcnM7dm9pZCAwPT09ZVthXSYmKGVbYV09W10pOy0xPT09ZVthXS5pbmRleE9mKGMpJiZlW2FdLnB1c2goYyl9LGhhc0V2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxjKXtpZih2b2lkIDA9PT10aGlzLl9saXN0ZW5lcnMpcmV0dXJuITE7dmFyIGU9dGhpcy5fbGlzdGVuZXJzO3JldHVybiB2b2lkIDAhPT1lW2FdJiYtMSE9PWVbYV0uaW5kZXhPZihjKX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihhLGMpe3ZvaWQgMCE9PXRoaXMuX2xpc3RlbmVycyYmKGE9dGhpcy5fbGlzdGVuZXJzW2FdLHZvaWQgMCE9PWEmJihjPWEuaW5kZXhPZihjKSwtMSE9PWMmJmEuc3BsaWNlKGMsMSkpKX0sZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihhKXtpZih2b2lkIDAhPT10aGlzLl9saXN0ZW5lcnMpe3ZhciBjPXRoaXMuX2xpc3RlbmVyc1thLnR5cGVdO2lmKHZvaWQgMCE9PWMpe2EudGFyZ2V0PXRoaXM7Yz1jLnNsaWNlKDApO2Zvcih2YXIgZT0wLGc9Yy5sZW5ndGg7ZTxnO2UrKyljW2VdLmNhbGwodGhpcywKYSl9fX19KTtmb3IodmFyIFliPVtdLGpnPTA7MjU2PmpnO2pnKyspWWJbamddPSgxNj5qZz8iMCI6IiIpK2pnLnRvU3RyaW5nKDE2KTt2YXIgaGI9e0RFRzJSQUQ6TWF0aC5QSS8xODAsUkFEMkRFRzoxODAvTWF0aC5QSSxnZW5lcmF0ZVVVSUQ6ZnVuY3Rpb24oKXt2YXIgYT00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MCxjPTQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKXwwLGU9NDI5NDk2NzI5NSpNYXRoLnJhbmRvbSgpfDAsZz00Mjk0OTY3Mjk1Kk1hdGgucmFuZG9tKCl8MDtyZXR1cm4oWWJbYSYyNTVdK1liW2E+PjgmMjU1XStZYlthPj4xNiYyNTVdK1liW2E+PjI0JjI1NV0rIi0iK1liW2MmMjU1XStZYltjPj44JjI1NV0rIi0iK1liW2M+PjE2JjE1fDY0XStZYltjPj4yNCYyNTVdKyItIitZYltlJjYzfDEyOF0rWWJbZT4+OCYyNTVdKyItIitZYltlPj4xNiYyNTVdK1liW2U+PjI0JjI1NV0rWWJbZyYyNTVdK1liW2c+PjgmMjU1XStZYltnPj4xNiYyNTVdK1liW2c+PjI0JjI1NV0pLnRvVXBwZXJDYXNlKCl9LApjbGFtcDpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIE1hdGgubWF4KGMsTWF0aC5taW4oZSxhKSl9LGV1Y2xpZGVhbk1vZHVsbzpmdW5jdGlvbihhLGMpe3JldHVybihhJWMrYyklY30sbWFwTGluZWFyOmZ1bmN0aW9uKGEsYyxlLGcscil7cmV0dXJuIGcrKGEtYykqKHItZykvKGUtYyl9LGxlcnA6ZnVuY3Rpb24oYSxjLGUpe3JldHVybigxLWUpKmErZSpjfSxzbW9vdGhzdGVwOmZ1bmN0aW9uKGEsYyxlKXtpZihhPD1jKXJldHVybiAwO2lmKGE+PWUpcmV0dXJuIDE7YT0oYS1jKS8oZS1jKTtyZXR1cm4gYSphKigzLTIqYSl9LHNtb290aGVyc3RlcDpmdW5jdGlvbihhLGMsZSl7aWYoYTw9YylyZXR1cm4gMDtpZihhPj1lKXJldHVybiAxO2E9KGEtYykvKGUtYyk7cmV0dXJuIGEqYSphKihhKig2KmEtMTUpKzEwKX0scmFuZEludDpmdW5jdGlvbihhLGMpe3JldHVybiBhK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooYy1hKzEpKX0scmFuZEZsb2F0OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErCk1hdGgucmFuZG9tKCkqKGMtYSl9LHJhbmRGbG9hdFNwcmVhZDpmdW5jdGlvbihhKXtyZXR1cm4gYSooLjUtTWF0aC5yYW5kb20oKSl9LGRlZ1RvUmFkOmZ1bmN0aW9uKGEpe3JldHVybiBhKmhiLkRFRzJSQUR9LHJhZFRvRGVnOmZ1bmN0aW9uKGEpe3JldHVybiBhKmhiLlJBRDJERUd9LGlzUG93ZXJPZlR3bzpmdW5jdGlvbihhKXtyZXR1cm4gMD09PShhJmEtMSkmJjAhPT1hfSxjZWlsUG93ZXJPZlR3bzpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5wb3coMixNYXRoLmNlaWwoTWF0aC5sb2coYSkvTWF0aC5MTjIpKX0sZmxvb3JQb3dlck9mVHdvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdygyLE1hdGguZmxvb3IoTWF0aC5sb2coYSkvTWF0aC5MTjIpKX19O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGYucHJvdG90eXBlLHt3aWR0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueH0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMueD1hfX0saGVpZ2h0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55fSwKc2V0OmZ1bmN0aW9uKGEpe3RoaXMueT1hfX19KTtPYmplY3QuYXNzaWduKGYucHJvdG90eXBlLHtpc1ZlY3RvcjI6ITAsc2V0OmZ1bmN0aW9uKGEsYyl7dGhpcy54PWE7dGhpcy55PWM7cmV0dXJuIHRoaXN9LHNldFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLnk9dGhpcy54PWE7cmV0dXJuIHRoaXN9LHNldFg6ZnVuY3Rpb24oYSl7dGhpcy54PWE7cmV0dXJuIHRoaXN9LHNldFk6ZnVuY3Rpb24oYSl7dGhpcy55PWE7cmV0dXJuIHRoaXN9LHNldENvbXBvbmVudDpmdW5jdGlvbihhLGMpe3N3aXRjaChhKXtjYXNlIDA6dGhpcy54PWM7YnJlYWs7Y2FzZSAxOnRoaXMueT1jO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoImluZGV4IGlzIG91dCBvZiByYW5nZTogIithKTt9cmV0dXJuIHRoaXN9LGdldENvbXBvbmVudDpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiB0aGlzLng7Y2FzZSAxOnJldHVybiB0aGlzLnk7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiKwphKTt9fSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLngsdGhpcy55KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLng9YS54O3RoaXMueT1hLnk7cmV0dXJuIHRoaXN9LGFkZDpmdW5jdGlvbihhLGMpe2lmKHZvaWQgMCE9PWMpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMjogLmFkZCgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmFkZFZlY3RvcnMoIGEsIGIgKSBpbnN0ZWFkLiIpLHRoaXMuYWRkVmVjdG9ycyhhLGMpO3RoaXMueCs9YS54O3RoaXMueSs9YS55O3JldHVybiB0aGlzfSxhZGRTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy54Kz1hO3RoaXMueSs9YTtyZXR1cm4gdGhpc30sYWRkVmVjdG9yczpmdW5jdGlvbihhLGMpe3RoaXMueD1hLngrYy54O3RoaXMueT1hLnkrYy55O3JldHVybiB0aGlzfSxhZGRTY2FsZWRWZWN0b3I6ZnVuY3Rpb24oYSxjKXt0aGlzLngrPWEueCpjO3RoaXMueSs9YS55KmM7cmV0dXJuIHRoaXN9LApzdWI6ZnVuY3Rpb24oYSxjKXtpZih2b2lkIDAhPT1jKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5zdWIoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5zdWJWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLnN1YlZlY3RvcnMoYSxjKTt0aGlzLngtPWEueDt0aGlzLnktPWEueTtyZXR1cm4gdGhpc30sc3ViU2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueC09YTt0aGlzLnktPWE7cmV0dXJuIHRoaXN9LHN1YlZlY3RvcnM6ZnVuY3Rpb24oYSxjKXt0aGlzLng9YS54LWMueDt0aGlzLnk9YS55LWMueTtyZXR1cm4gdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24oYSl7dGhpcy54Kj1hLng7dGhpcy55Kj1hLnk7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueCo9YTt0aGlzLnkqPWE7cmV0dXJuIHRoaXN9LGRpdmlkZTpmdW5jdGlvbihhKXt0aGlzLngvPWEueDt0aGlzLnkvPWEueTtyZXR1cm4gdGhpc30sZGl2aWRlU2NhbGFyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvCmEpfSxhcHBseU1hdHJpeDM6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy54LGU9dGhpcy55O2E9YS5lbGVtZW50czt0aGlzLng9YVswXSpjK2FbM10qZSthWzZdO3RoaXMueT1hWzFdKmMrYVs0XSplK2FbN107cmV0dXJuIHRoaXN9LG1pbjpmdW5jdGlvbihhKXt0aGlzLng9TWF0aC5taW4odGhpcy54LGEueCk7dGhpcy55PU1hdGgubWluKHRoaXMueSxhLnkpO3JldHVybiB0aGlzfSxtYXg6ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWF4KHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1heCh0aGlzLnksYS55KTtyZXR1cm4gdGhpc30sY2xhbXA6ZnVuY3Rpb24oYSxjKXt0aGlzLng9TWF0aC5tYXgoYS54LE1hdGgubWluKGMueCx0aGlzLngpKTt0aGlzLnk9TWF0aC5tYXgoYS55LE1hdGgubWluKGMueSx0aGlzLnkpKTtyZXR1cm4gdGhpc30sY2xhbXBTY2FsYXI6ZnVuY3Rpb24oYSxjKXt0aGlzLng9TWF0aC5tYXgoYSxNYXRoLm1pbihjLHRoaXMueCkpO3RoaXMueT1NYXRoLm1heChhLE1hdGgubWluKGMsCnRoaXMueSkpO3JldHVybiB0aGlzfSxjbGFtcExlbmd0aDpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGV8fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KGEsTWF0aC5taW4oYyxlKSkpfSxmbG9vcjpmdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTtyZXR1cm4gdGhpc30sY2VpbDpmdW5jdGlvbigpe3RoaXMueD1NYXRoLmNlaWwodGhpcy54KTt0aGlzLnk9TWF0aC5jZWlsKHRoaXMueSk7cmV0dXJuIHRoaXN9LHJvdW5kOmZ1bmN0aW9uKCl7dGhpcy54PU1hdGgucm91bmQodGhpcy54KTt0aGlzLnk9TWF0aC5yb3VuZCh0aGlzLnkpO3JldHVybiB0aGlzfSxyb3VuZFRvWmVybzpmdW5jdGlvbigpe3RoaXMueD0wPnRoaXMueD9NYXRoLmNlaWwodGhpcy54KTpNYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PTA+dGhpcy55P01hdGguY2VpbCh0aGlzLnkpOk1hdGguZmxvb3IodGhpcy55KTsKcmV0dXJuIHRoaXN9LG5lZ2F0ZTpmdW5jdGlvbigpe3RoaXMueD0tdGhpcy54O3RoaXMueT0tdGhpcy55O3JldHVybiB0aGlzfSxkb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueCphLngrdGhpcy55KmEueX0sY3Jvc3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueCphLnktdGhpcy55KmEueH0sbGVuZ3RoU3E6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55fSxsZW5ndGg6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5zcXJ0KHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSl9LG1hbmhhdHRhbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSl9LG5vcm1hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX0sYW5nbGU6ZnVuY3Rpb24oKXt2YXIgYT1NYXRoLmF0YW4yKHRoaXMueSx0aGlzLngpOzA+YSYmKGErPTIqTWF0aC5QSSk7cmV0dXJuIGF9LApkaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZChhKSl9LGRpc3RhbmNlVG9TcXVhcmVkOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMueC1hLng7YT10aGlzLnktYS55O3JldHVybiBjKmMrYSphfSxtYW5oYXR0YW5EaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLmFicyh0aGlzLngtYS54KStNYXRoLmFicyh0aGlzLnktYS55KX0sc2V0TGVuZ3RoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKGEpfSxsZXJwOmZ1bmN0aW9uKGEsYyl7dGhpcy54Kz0oYS54LXRoaXMueCkqYzt0aGlzLnkrPShhLnktdGhpcy55KSpjO3JldHVybiB0aGlzfSxsZXJwVmVjdG9yczpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyhjLGEpLm11bHRpcGx5U2NhbGFyKGUpLmFkZChhKX0sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLng9PT10aGlzLngmJmEueT09PXRoaXMueX0sCmZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO3RoaXMueD1hW2NdO3RoaXMueT1hW2MrMV07cmV0dXJuIHRoaXN9LHRvQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1hJiYoYT1bXSk7dm9pZCAwPT09YyYmKGM9MCk7YVtjXT10aGlzLng7YVtjKzFdPXRoaXMueTtyZXR1cm4gYX0sZnJvbUJ1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbihhLGMsZSl7dm9pZCAwIT09ZSYmY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiBvZmZzZXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIik7dGhpcy54PWEuZ2V0WChjKTt0aGlzLnk9YS5nZXRZKGMpO3JldHVybiB0aGlzfSxyb3RhdGVBcm91bmQ6ZnVuY3Rpb24oYSxjKXt2YXIgZT1NYXRoLmNvcyhjKTtjPU1hdGguc2luKGMpO3ZhciBnPXRoaXMueC1hLngscj10aGlzLnktYS55O3RoaXMueD1nKmUtcipjK2EueDt0aGlzLnk9ZypjK3IqZSthLnk7cmV0dXJuIHRoaXN9fSk7T2JqZWN0LmFzc2lnbihoLAp7c2xlcnA6ZnVuY3Rpb24oYSxjLGUsZyl7cmV0dXJuIGUuY29weShhKS5zbGVycChjLGcpfSxzbGVycEZsYXQ6ZnVuY3Rpb24oYSxjLGUsZyxyLHYseil7dmFyIEU9ZVtnKzBdLEc9ZVtnKzFdLEo9ZVtnKzJdO2U9ZVtnKzNdO2c9clt2KzBdO3ZhciBQPXJbdisxXSxSPXJbdisyXTtyPXJbdiszXTtpZihlIT09cnx8RSE9PWd8fEchPT1QfHxKIT09Uil7dj0xLXo7dmFyIFM9RSpnK0cqUCtKKlIrZSpyLFY9MDw9Uz8xOi0xLFc9MS1TKlM7Vz5OdW1iZXIuRVBTSUxPTiYmKFc9TWF0aC5zcXJ0KFcpLFM9TWF0aC5hdGFuMihXLFMqViksdj1NYXRoLnNpbih2KlMpL1csej1NYXRoLnNpbih6KlMpL1cpO1YqPXo7RT1FKnYrZypWO0c9Ryp2K1AqVjtKPUoqditSKlY7ZT1lKnYrcipWO3Y9PT0xLXomJih6PTEvTWF0aC5zcXJ0KEUqRStHKkcrSipKK2UqZSksRSo9eixHKj16LEoqPXosZSo9eil9YVtjXT1FO2FbYysxXT1HO2FbYysyXT1KO2FbYyszXT1lfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGgucHJvdG90eXBlLAp7eDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3h9LHNldDpmdW5jdGlvbihhKXt0aGlzLl94PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX0seTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3l9LHNldDpmdW5jdGlvbihhKXt0aGlzLl95PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX0sejp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3p9LHNldDpmdW5jdGlvbihhKXt0aGlzLl96PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX0sdzp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3d9LHNldDpmdW5jdGlvbihhKXt0aGlzLl93PWE7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpfX19KTtPYmplY3QuYXNzaWduKGgucHJvdG90eXBlLHtpc1F1YXRlcm5pb246ITAsc2V0OmZ1bmN0aW9uKGEsYyxlLGcpe3RoaXMuX3g9YTt0aGlzLl95PWM7dGhpcy5fej1lO3RoaXMuX3c9Zzt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuX3gsCnRoaXMuX3ksdGhpcy5feix0aGlzLl93KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLl94PWEueDt0aGlzLl95PWEueTt0aGlzLl96PWEuejt0aGlzLl93PWEudzt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LHNldEZyb21FdWxlcjpmdW5jdGlvbihhLGMpe2lmKCFhfHwhYS5pc0V1bGVyKXRocm93IEVycm9yKCJUSFJFRS5RdWF0ZXJuaW9uOiAuc2V0RnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTt2YXIgZT1hLl94LGc9YS5feSxyPWEuX3o7YT1hLm9yZGVyO3ZhciB2PU1hdGguY29zLHo9TWF0aC5zaW4sRT12KGUvMiksRz12KGcvMik7dj12KHIvMik7ZT16KGUvMik7Zz16KGcvMik7cj16KHIvMik7IlhZWiI9PT1hPyh0aGlzLl94PWUqRyp2K0UqZypyLHRoaXMuX3k9RSpnKnYtZSpHKnIsdGhpcy5fej1FKkcqcitlKmcqdix0aGlzLl93PUUqRyp2LWUqZypyKToiWVhaIj09PQphPyh0aGlzLl94PWUqRyp2K0UqZypyLHRoaXMuX3k9RSpnKnYtZSpHKnIsdGhpcy5fej1FKkcqci1lKmcqdix0aGlzLl93PUUqRyp2K2UqZypyKToiWlhZIj09PWE/KHRoaXMuX3g9ZSpHKnYtRSpnKnIsdGhpcy5feT1FKmcqditlKkcqcix0aGlzLl96PUUqRypyK2UqZyp2LHRoaXMuX3c9RSpHKnYtZSpnKnIpOiJaWVgiPT09YT8odGhpcy5feD1lKkcqdi1FKmcqcix0aGlzLl95PUUqZyp2K2UqRypyLHRoaXMuX3o9RSpHKnItZSpnKnYsdGhpcy5fdz1FKkcqditlKmcqcik6IllaWCI9PT1hPyh0aGlzLl94PWUqRyp2K0UqZypyLHRoaXMuX3k9RSpnKnYrZSpHKnIsdGhpcy5fej1FKkcqci1lKmcqdix0aGlzLl93PUUqRyp2LWUqZypyKToiWFpZIj09PWEmJih0aGlzLl94PWUqRyp2LUUqZypyLHRoaXMuX3k9RSpnKnYtZSpHKnIsdGhpcy5fej1FKkcqcitlKmcqdix0aGlzLl93PUUqRyp2K2UqZypyKTshMSE9PWMmJnRoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sc2V0RnJvbUF4aXNBbmdsZTpmdW5jdGlvbihhLApjKXtjLz0yO3ZhciBlPU1hdGguc2luKGMpO3RoaXMuX3g9YS54KmU7dGhpcy5feT1hLnkqZTt0aGlzLl96PWEueiplO3RoaXMuX3c9TWF0aC5jb3MoYyk7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxzZXRGcm9tUm90YXRpb25NYXRyaXg6ZnVuY3Rpb24oYSl7dmFyIGM9YS5lbGVtZW50cyxlPWNbMF07YT1jWzRdO3ZhciBnPWNbOF0scj1jWzFdLHY9Y1s1XSx6PWNbOV0sRT1jWzJdLEc9Y1s2XTtjPWNbMTBdO3ZhciBKPWUrditjOzA8Sj8oZT0uNS9NYXRoLnNxcnQoSisxKSx0aGlzLl93PS4yNS9lLHRoaXMuX3g9KEcteikqZSx0aGlzLl95PShnLUUpKmUsdGhpcy5fej0oci1hKSplKTplPnYmJmU+Yz8oZT0yKk1hdGguc3FydCgxK2Utdi1jKSx0aGlzLl93PShHLXopL2UsdGhpcy5feD0uMjUqZSx0aGlzLl95PShhK3IpL2UsdGhpcy5fej0oZytFKS9lKTp2PmM/KGU9MipNYXRoLnNxcnQoMSt2LWUtYyksdGhpcy5fdz0oZy1FKS9lLHRoaXMuX3g9KGErcikvZSwKdGhpcy5feT0uMjUqZSx0aGlzLl96PSh6K0cpL2UpOihlPTIqTWF0aC5zcXJ0KDErYy1lLXYpLHRoaXMuX3c9KHItYSkvZSx0aGlzLl94PShnK0UpL2UsdGhpcy5feT0oeitHKS9lLHRoaXMuX3o9LjI1KmUpO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sc2V0RnJvbVVuaXRWZWN0b3JzOmZ1bmN0aW9uKGEsYyl7dmFyIGU9YS5kb3QoYykrMTsxRS02PmU/KGU9MCxNYXRoLmFicyhhLngpPk1hdGguYWJzKGEueik/KHRoaXMuX3g9LWEueSx0aGlzLl95PWEueCx0aGlzLl96PTApOih0aGlzLl94PTAsdGhpcy5feT0tYS56LHRoaXMuX3o9YS55KSk6KHRoaXMuX3g9YS55KmMuei1hLnoqYy55LHRoaXMuX3k9YS56KmMueC1hLngqYy56LHRoaXMuX3o9YS54KmMueS1hLnkqYy54KTt0aGlzLl93PWU7cmV0dXJuIHRoaXMubm9ybWFsaXplKCl9LGFuZ2xlVG86ZnVuY3Rpb24oYSl7cmV0dXJuIDIqTWF0aC5hY29zKE1hdGguYWJzKGhiLmNsYW1wKHRoaXMuZG90KGEpLC0xLAoxKSkpfSxyb3RhdGVUb3dhcmRzOmZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5hbmdsZVRvKGEpO2lmKDA9PT1lKXJldHVybiB0aGlzO3RoaXMuc2xlcnAoYSxNYXRoLm1pbigxLGMvZSkpO3JldHVybiB0aGlzfSxpbnZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uanVnYXRlKCl9LGNvbmp1Z2F0ZTpmdW5jdGlvbigpe3RoaXMuX3gqPS0xO3RoaXMuX3kqPS0xO3RoaXMuX3oqPS0xO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sZG90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl94KmEuX3grdGhpcy5feSphLl95K3RoaXMuX3oqYS5feit0aGlzLl93KmEuX3d9LGxlbmd0aFNxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3gqdGhpcy5feCt0aGlzLl95KnRoaXMuX3krdGhpcy5feip0aGlzLl96K3RoaXMuX3cqdGhpcy5fd30sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLl94KnRoaXMuX3grdGhpcy5feSp0aGlzLl95K3RoaXMuX3oqCnRoaXMuX3ordGhpcy5fdyp0aGlzLl93KX0sbm9ybWFsaXplOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5sZW5ndGgoKTswPT09YT8odGhpcy5fej10aGlzLl95PXRoaXMuX3g9MCx0aGlzLl93PTEpOihhPTEvYSx0aGlzLl94Kj1hLHRoaXMuX3kqPWEsdGhpcy5feio9YSx0aGlzLl93Kj1hKTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LG11bHRpcGx5OmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHZvaWQgMCE9PWM/KGNvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5KCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAubXVsdGlwbHlRdWF0ZXJuaW9ucyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKGEsYykpOnRoaXMubXVsdGlwbHlRdWF0ZXJuaW9ucyh0aGlzLGEpfSxwcmVtdWx0aXBseTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseVF1YXRlcm5pb25zKGEsdGhpcyl9LG11bHRpcGx5UXVhdGVybmlvbnM6ZnVuY3Rpb24oYSwKYyl7dmFyIGU9YS5feCxnPWEuX3kscj1hLl96O2E9YS5fdzt2YXIgdj1jLl94LHo9Yy5feSxFPWMuX3o7Yz1jLl93O3RoaXMuX3g9ZSpjK2EqditnKkUtcip6O3RoaXMuX3k9ZypjK2EqeityKnYtZSpFO3RoaXMuX3o9cipjK2EqRStlKnotZyp2O3RoaXMuX3c9YSpjLWUqdi1nKnotcipFO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sc2xlcnA6ZnVuY3Rpb24oYSxjKXtpZigwPT09YylyZXR1cm4gdGhpcztpZigxPT09YylyZXR1cm4gdGhpcy5jb3B5KGEpO3ZhciBlPXRoaXMuX3gsZz10aGlzLl95LHI9dGhpcy5feix2PXRoaXMuX3csej12KmEuX3crZSphLl94K2cqYS5feStyKmEuX3o7MD56Pyh0aGlzLl93PS1hLl93LHRoaXMuX3g9LWEuX3gsdGhpcy5feT0tYS5feSx0aGlzLl96PS1hLl96LHo9LXopOnRoaXMuY29weShhKTtpZigxPD16KXJldHVybiB0aGlzLl93PXYsdGhpcy5feD1lLHRoaXMuX3k9Zyx0aGlzLl96PXIsdGhpczthPTEteip6O2lmKGE8PU51bWJlci5FUFNJTE9OKXJldHVybiB6PQoxLWMsdGhpcy5fdz16KnYrYyp0aGlzLl93LHRoaXMuX3g9eiplK2MqdGhpcy5feCx0aGlzLl95PXoqZytjKnRoaXMuX3ksdGhpcy5fej16KnIrYyp0aGlzLl96LHRoaXMubm9ybWFsaXplKCksdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpLHRoaXM7YT1NYXRoLnNxcnQoYSk7dmFyIEU9TWF0aC5hdGFuMihhLHopO3o9TWF0aC5zaW4oKDEtYykqRSkvYTtjPU1hdGguc2luKGMqRSkvYTt0aGlzLl93PXYqeit0aGlzLl93KmM7dGhpcy5feD1lKnordGhpcy5feCpjO3RoaXMuX3k9Zyp6K3RoaXMuX3kqYzt0aGlzLl96PXIqeit0aGlzLl96KmM7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuX3g9PT10aGlzLl94JiZhLl95PT09dGhpcy5feSYmYS5fej09PXRoaXMuX3omJmEuX3c9PT10aGlzLl93fSxmcm9tQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0wKTt0aGlzLl94PWFbY107dGhpcy5feT1hW2MrMV07CnRoaXMuX3o9YVtjKzJdO3RoaXMuX3c9YVtjKzNdO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sdG9BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWEmJihhPVtdKTt2b2lkIDA9PT1jJiYoYz0wKTthW2NdPXRoaXMuX3g7YVtjKzFdPXRoaXMuX3k7YVtjKzJdPXRoaXMuX3o7YVtjKzNdPXRoaXMuX3c7cmV0dXJuIGF9LF9vbkNoYW5nZTpmdW5jdGlvbihhKXt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrPWE7cmV0dXJuIHRoaXN9LF9vbkNoYW5nZUNhbGxiYWNrOmZ1bmN0aW9uKCl7fX0pO3ZhciB4aT1uZXcgayxiaz1uZXcgaDtPYmplY3QuYXNzaWduKGsucHJvdG90eXBlLHtpc1ZlY3RvcjM6ITAsc2V0OmZ1bmN0aW9uKGEsYyxlKXt0aGlzLng9YTt0aGlzLnk9Yzt0aGlzLno9ZTtyZXR1cm4gdGhpc30sc2V0U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMuej10aGlzLnk9dGhpcy54PWE7cmV0dXJuIHRoaXN9LHNldFg6ZnVuY3Rpb24oYSl7dGhpcy54PWE7cmV0dXJuIHRoaXN9LApzZXRZOmZ1bmN0aW9uKGEpe3RoaXMueT1hO3JldHVybiB0aGlzfSxzZXRaOmZ1bmN0aW9uKGEpe3RoaXMuej1hO3JldHVybiB0aGlzfSxzZXRDb21wb25lbnQ6ZnVuY3Rpb24oYSxjKXtzd2l0Y2goYSl7Y2FzZSAwOnRoaXMueD1jO2JyZWFrO2Nhc2UgMTp0aGlzLnk9YzticmVhaztjYXNlIDI6dGhpcy56PWM7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiaW5kZXggaXMgb3V0IG9mIHJhbmdlOiAiK2EpO31yZXR1cm4gdGhpc30sZ2V0Q29tcG9uZW50OmZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDA6cmV0dXJuIHRoaXMueDtjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtkZWZhdWx0OnRocm93IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrYSk7fX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnopfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMueD1hLng7dGhpcy55PWEueTsKdGhpcy56PWEuejtyZXR1cm4gdGhpc30sYWRkOmZ1bmN0aW9uKGEsYyl7aWYodm9pZCAwIT09YylyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYWRkKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuYWRkVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5hZGRWZWN0b3JzKGEsYyk7dGhpcy54Kz1hLng7dGhpcy55Kz1hLnk7dGhpcy56Kz1hLno7cmV0dXJuIHRoaXN9LGFkZFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngrPWE7dGhpcy55Kz1hO3RoaXMueis9YTtyZXR1cm4gdGhpc30sYWRkVmVjdG9yczpmdW5jdGlvbihhLGMpe3RoaXMueD1hLngrYy54O3RoaXMueT1hLnkrYy55O3RoaXMuej1hLnorYy56O3JldHVybiB0aGlzfSxhZGRTY2FsZWRWZWN0b3I6ZnVuY3Rpb24oYSxjKXt0aGlzLngrPWEueCpjO3RoaXMueSs9YS55KmM7dGhpcy56Kz1hLnoqYztyZXR1cm4gdGhpc30sc3ViOmZ1bmN0aW9uKGEsYyl7aWYodm9pZCAwIT09YylyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksCnRoaXMuc3ViVmVjdG9ycyhhLGMpO3RoaXMueC09YS54O3RoaXMueS09YS55O3RoaXMuei09YS56O3JldHVybiB0aGlzfSxzdWJTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy54LT1hO3RoaXMueS09YTt0aGlzLnotPWE7cmV0dXJuIHRoaXN9LHN1YlZlY3RvcnM6ZnVuY3Rpb24oYSxjKXt0aGlzLng9YS54LWMueDt0aGlzLnk9YS55LWMueTt0aGlzLno9YS56LWMuejtyZXR1cm4gdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24oYSxjKXtpZih2b2lkIDAhPT1jKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5tdWx0aXBseSgpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLm11bHRpcGx5VmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5tdWx0aXBseVZlY3RvcnMoYSxjKTt0aGlzLngqPWEueDt0aGlzLnkqPWEueTt0aGlzLnoqPWEuejtyZXR1cm4gdGhpc30sbXVsdGlwbHlTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy54Kj1hO3RoaXMueSo9YTt0aGlzLnoqPQphO3JldHVybiB0aGlzfSxtdWx0aXBseVZlY3RvcnM6ZnVuY3Rpb24oYSxjKXt0aGlzLng9YS54KmMueDt0aGlzLnk9YS55KmMueTt0aGlzLno9YS56KmMuejtyZXR1cm4gdGhpc30sYXBwbHlFdWxlcjpmdW5jdGlvbihhKXthJiZhLmlzRXVsZXJ8fGNvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5hcHBseUV1bGVyKCkgbm93IGV4cGVjdHMgYW4gRXVsZXIgcm90YXRpb24gcmF0aGVyIHRoYW4gYSBWZWN0b3IzIGFuZCBvcmRlci4iKTtyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oYmsuc2V0RnJvbUV1bGVyKGEpKX0sYXBwbHlBeGlzQW5nbGU6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5hcHBseVF1YXRlcm5pb24oYmsuc2V0RnJvbUF4aXNBbmdsZShhLGMpKX0sYXBwbHlNYXRyaXgzOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMueCxlPXRoaXMueSxnPXRoaXMuejthPWEuZWxlbWVudHM7dGhpcy54PWFbMF0qYythWzNdKmUrYVs2XSpnO3RoaXMueT1hWzFdKmMrYVs0XSplK2FbN10qCmc7dGhpcy56PWFbMl0qYythWzVdKmUrYVs4XSpnO3JldHVybiB0aGlzfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy54LGU9dGhpcy55LGc9dGhpcy56O2E9YS5lbGVtZW50czt2YXIgcj0xLyhhWzNdKmMrYVs3XSplK2FbMTFdKmcrYVsxNV0pO3RoaXMueD0oYVswXSpjK2FbNF0qZSthWzhdKmcrYVsxMl0pKnI7dGhpcy55PShhWzFdKmMrYVs1XSplK2FbOV0qZythWzEzXSkqcjt0aGlzLno9KGFbMl0qYythWzZdKmUrYVsxMF0qZythWzE0XSkqcjtyZXR1cm4gdGhpc30sYXBwbHlRdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMueCxlPXRoaXMueSxnPXRoaXMueixyPWEueCx2PWEueSx6PWEuejthPWEudzt2YXIgRT1hKmMrdipnLXoqZSxHPWEqZSt6KmMtcipnLEo9YSpnK3IqZS12KmM7Yz0tcipjLXYqZS16Kmc7dGhpcy54PUUqYStjKi1yK0cqLXotSiotdjt0aGlzLnk9RyphK2MqLXYrSiotci1FKi16O3RoaXMuej1KKmErYyoteitFKi12LUcqLXI7cmV0dXJuIHRoaXN9LApwcm9qZWN0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkSW52ZXJzZSkuYXBwbHlNYXRyaXg0KGEucHJvamVjdGlvbk1hdHJpeCl9LHVucHJvamVjdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcHBseU1hdHJpeDQoYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSkuYXBwbHlNYXRyaXg0KGEubWF0cml4V29ybGQpfSx0cmFuc2Zvcm1EaXJlY3Rpb246ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy54LGU9dGhpcy55LGc9dGhpcy56O2E9YS5lbGVtZW50czt0aGlzLng9YVswXSpjK2FbNF0qZSthWzhdKmc7dGhpcy55PWFbMV0qYythWzVdKmUrYVs5XSpnO3RoaXMuej1hWzJdKmMrYVs2XSplK2FbMTBdKmc7cmV0dXJuIHRoaXMubm9ybWFsaXplKCl9LGRpdmlkZTpmdW5jdGlvbihhKXt0aGlzLngvPWEueDt0aGlzLnkvPWEueTt0aGlzLnovPWEuejtyZXR1cm4gdGhpc30sZGl2aWRlU2NhbGFyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvCmEpfSxtaW46ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWluKHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1pbih0aGlzLnksYS55KTt0aGlzLno9TWF0aC5taW4odGhpcy56LGEueik7cmV0dXJuIHRoaXN9LG1heDpmdW5jdGlvbihhKXt0aGlzLng9TWF0aC5tYXgodGhpcy54LGEueCk7dGhpcy55PU1hdGgubWF4KHRoaXMueSxhLnkpO3RoaXMuej1NYXRoLm1heCh0aGlzLnosYS56KTtyZXR1cm4gdGhpc30sY2xhbXA6ZnVuY3Rpb24oYSxjKXt0aGlzLng9TWF0aC5tYXgoYS54LE1hdGgubWluKGMueCx0aGlzLngpKTt0aGlzLnk9TWF0aC5tYXgoYS55LE1hdGgubWluKGMueSx0aGlzLnkpKTt0aGlzLno9TWF0aC5tYXgoYS56LE1hdGgubWluKGMueix0aGlzLnopKTtyZXR1cm4gdGhpc30sY2xhbXBTY2FsYXI6ZnVuY3Rpb24oYSxjKXt0aGlzLng9TWF0aC5tYXgoYSxNYXRoLm1pbihjLHRoaXMueCkpO3RoaXMueT1NYXRoLm1heChhLE1hdGgubWluKGMsdGhpcy55KSk7dGhpcy56PU1hdGgubWF4KGEsCk1hdGgubWluKGMsdGhpcy56KSk7cmV0dXJuIHRoaXN9LGNsYW1wTGVuZ3RoOmZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5sZW5ndGgoKTtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIoZXx8MSkubXVsdGlwbHlTY2FsYXIoTWF0aC5tYXgoYSxNYXRoLm1pbihjLGUpKSl9LGZsb29yOmZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3RoaXMuej1NYXRoLmZsb29yKHRoaXMueik7cmV0dXJuIHRoaXN9LGNlaWw6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3RoaXMuej1NYXRoLmNlaWwodGhpcy56KTtyZXR1cm4gdGhpc30scm91bmQ6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7dGhpcy56PU1hdGgucm91bmQodGhpcy56KTtyZXR1cm4gdGhpc30scm91bmRUb1plcm86ZnVuY3Rpb24oKXt0aGlzLng9CjA+dGhpcy54P01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9MD50aGlzLnk/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpO3RoaXMuej0wPnRoaXMuej9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueik7cmV0dXJuIHRoaXN9LG5lZ2F0ZTpmdW5jdGlvbigpe3RoaXMueD0tdGhpcy54O3RoaXMueT0tdGhpcy55O3RoaXMuej0tdGhpcy56O3JldHVybiB0aGlzfSxkb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMueCphLngrdGhpcy55KmEueSt0aGlzLnoqYS56fSxsZW5ndGhTcTpmdW5jdGlvbigpe3JldHVybiB0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMuen0sbGVuZ3RoOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGguc3FydCh0aGlzLngqdGhpcy54K3RoaXMueSp0aGlzLnkrdGhpcy56KnRoaXMueil9LG1hbmhhdHRhbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrCk1hdGguYWJzKHRoaXMueil9LG5vcm1hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpdmlkZVNjYWxhcih0aGlzLmxlbmd0aCgpfHwxKX0sc2V0TGVuZ3RoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKGEpfSxsZXJwOmZ1bmN0aW9uKGEsYyl7dGhpcy54Kz0oYS54LXRoaXMueCkqYzt0aGlzLnkrPShhLnktdGhpcy55KSpjO3RoaXMueis9KGEuei10aGlzLnopKmM7cmV0dXJuIHRoaXN9LGxlcnBWZWN0b3JzOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gdGhpcy5zdWJWZWN0b3JzKGMsYSkubXVsdGlwbHlTY2FsYXIoZSkuYWRkKGEpfSxjcm9zczpmdW5jdGlvbihhLGMpe3JldHVybiB2b2lkIDAhPT1jPyhjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5jcm9zcygpIG5vdyBvbmx5IGFjY2VwdHMgb25lIGFyZ3VtZW50LiBVc2UgLmNyb3NzVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5jcm9zc1ZlY3RvcnMoYSxjKSk6dGhpcy5jcm9zc1ZlY3RvcnModGhpcywKYSl9LGNyb3NzVmVjdG9yczpmdW5jdGlvbihhLGMpe3ZhciBlPWEueCxnPWEueTthPWEuejt2YXIgcj1jLngsdj1jLnk7Yz1jLno7dGhpcy54PWcqYy1hKnY7dGhpcy55PWEqci1lKmM7dGhpcy56PWUqdi1nKnI7cmV0dXJuIHRoaXN9LHByb2plY3RPblZlY3RvcjpmdW5jdGlvbihhKXt2YXIgYz1hLmRvdCh0aGlzKS9hLmxlbmd0aFNxKCk7cmV0dXJuIHRoaXMuY29weShhKS5tdWx0aXBseVNjYWxhcihjKX0scHJvamVjdE9uUGxhbmU6ZnVuY3Rpb24oYSl7eGkuY29weSh0aGlzKS5wcm9qZWN0T25WZWN0b3IoYSk7cmV0dXJuIHRoaXMuc3ViKHhpKX0scmVmbGVjdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zdWIoeGkuY29weShhKS5tdWx0aXBseVNjYWxhcigyKnRoaXMuZG90KGEpKSl9LGFuZ2xlVG86ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguYWNvcyhoYi5jbGFtcCh0aGlzLmRvdChhKS9NYXRoLnNxcnQodGhpcy5sZW5ndGhTcSgpKmEubGVuZ3RoU3EoKSksLTEsMSkpfSxkaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVRvU3F1YXJlZChhKSl9LApkaXN0YW5jZVRvU3F1YXJlZDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLngtYS54LGU9dGhpcy55LWEueTthPXRoaXMuei1hLno7cmV0dXJuIGMqYytlKmUrYSphfSxtYW5oYXR0YW5EaXN0YW5jZVRvOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLmFicyh0aGlzLngtYS54KStNYXRoLmFicyh0aGlzLnktYS55KStNYXRoLmFicyh0aGlzLnotYS56KX0sc2V0RnJvbVNwaGVyaWNhbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXRGcm9tU3BoZXJpY2FsQ29vcmRzKGEucmFkaXVzLGEucGhpLGEudGhldGEpfSxzZXRGcm9tU3BoZXJpY2FsQ29vcmRzOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZz1NYXRoLnNpbihjKSphO3RoaXMueD1nKk1hdGguc2luKGUpO3RoaXMueT1NYXRoLmNvcyhjKSphO3RoaXMuej1nKk1hdGguY29zKGUpO3JldHVybiB0aGlzfSxzZXRGcm9tQ3lsaW5kcmljYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RnJvbUN5bGluZHJpY2FsQ29vcmRzKGEucmFkaXVzLGEudGhldGEsCmEueSl9LHNldEZyb21DeWxpbmRyaWNhbENvb3JkczpmdW5jdGlvbihhLGMsZSl7dGhpcy54PWEqTWF0aC5zaW4oYyk7dGhpcy55PWU7dGhpcy56PWEqTWF0aC5jb3MoYyk7cmV0dXJuIHRoaXN9LHNldEZyb21NYXRyaXhQb3NpdGlvbjpmdW5jdGlvbihhKXthPWEuZWxlbWVudHM7dGhpcy54PWFbMTJdO3RoaXMueT1hWzEzXTt0aGlzLno9YVsxNF07cmV0dXJuIHRoaXN9LHNldEZyb21NYXRyaXhTY2FsZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnNldEZyb21NYXRyaXhDb2x1bW4oYSwwKS5sZW5ndGgoKSxlPXRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbihhLDEpLmxlbmd0aCgpO2E9dGhpcy5zZXRGcm9tTWF0cml4Q29sdW1uKGEsMikubGVuZ3RoKCk7dGhpcy54PWM7dGhpcy55PWU7dGhpcy56PWE7cmV0dXJuIHRoaXN9LHNldEZyb21NYXRyaXhDb2x1bW46ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5mcm9tQXJyYXkoYS5lbGVtZW50cyw0KmMpfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEueD09PQp0aGlzLngmJmEueT09PXRoaXMueSYmYS56PT09dGhpcy56fSxmcm9tQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0wKTt0aGlzLng9YVtjXTt0aGlzLnk9YVtjKzFdO3RoaXMuej1hW2MrMl07cmV0dXJuIHRoaXN9LHRvQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1hJiYoYT1bXSk7dm9pZCAwPT09YyYmKGM9MCk7YVtjXT10aGlzLng7YVtjKzFdPXRoaXMueTthW2MrMl09dGhpcy56O3JldHVybiBhfSxmcm9tQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uKGEsYyxlKXt2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKTt0aGlzLng9YS5nZXRYKGMpO3RoaXMueT1hLmdldFkoYyk7dGhpcy56PWEuZ2V0WihjKTtyZXR1cm4gdGhpc319KTt2YXIgZWU9bmV3IGs7T2JqZWN0LmFzc2lnbih0LnByb3RvdHlwZSx7aXNNYXRyaXgzOiEwLHNldDpmdW5jdGlvbihhLApjLGUsZyxyLHYseixFLEcpe3ZhciBKPXRoaXMuZWxlbWVudHM7SlswXT1hO0pbMV09ZztKWzJdPXo7SlszXT1jO0pbNF09cjtKWzVdPUU7Sls2XT1lO0pbN109djtKWzhdPUc7cmV0dXJuIHRoaXN9LGlkZW50aXR5OmZ1bmN0aW9uKCl7dGhpcy5zZXQoMSwwLDAsMCwxLDAsMCwwLDEpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfSxjb3B5OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZWxlbWVudHM7YT1hLmVsZW1lbnRzO2NbMF09YVswXTtjWzFdPWFbMV07Y1syXT1hWzJdO2NbM109YVszXTtjWzRdPWFbNF07Y1s1XT1hWzVdO2NbNl09YVs2XTtjWzddPWFbN107Y1s4XT1hWzhdO3JldHVybiB0aGlzfSxzZXRGcm9tTWF0cml4NDpmdW5jdGlvbihhKXthPWEuZWxlbWVudHM7dGhpcy5zZXQoYVswXSxhWzRdLGFbOF0sYVsxXSxhWzVdLGFbOV0sYVsyXSxhWzZdLGFbMTBdKTtyZXR1cm4gdGhpc30sCmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTAsZT1hLmNvdW50O2M8ZTtjKyspZWUueD1hLmdldFgoYyksZWUueT1hLmdldFkoYyksZWUuej1hLmdldFooYyksZWUuYXBwbHlNYXRyaXgzKHRoaXMpLGEuc2V0WFlaKGMsZWUueCxlZS55LGVlLnopO3JldHVybiBhfSxtdWx0aXBseTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKHRoaXMsYSl9LHByZW11bHRpcGx5OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm11bHRpcGx5TWF0cmljZXMoYSx0aGlzKX0sbXVsdGlwbHlNYXRyaWNlczpmdW5jdGlvbihhLGMpe3ZhciBlPWEuZWxlbWVudHMsZz1jLmVsZW1lbnRzO2M9dGhpcy5lbGVtZW50czthPWVbMF07dmFyIHI9ZVszXSx2PWVbNl0sej1lWzFdLEU9ZVs0XSxHPWVbN10sSj1lWzJdLFA9ZVs1XTtlPWVbOF07dmFyIFI9Z1swXSxTPWdbM10sVj1nWzZdLFc9Z1sxXSxoYT1nWzRdLGZhPWdbN10scmE9Z1syXSxwYT1nWzVdO2c9Z1s4XTsKY1swXT1hKlIrcipXK3YqcmE7Y1szXT1hKlMrcipoYSt2KnBhO2NbNl09YSpWK3IqZmErdipnO2NbMV09eipSK0UqVytHKnJhO2NbNF09eipTK0UqaGErRypwYTtjWzddPXoqVitFKmZhK0cqZztjWzJdPUoqUitQKlcrZSpyYTtjWzVdPUoqUytQKmhhK2UqcGE7Y1s4XT1KKlYrUCpmYStlKmc7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZWxlbWVudHM7Y1swXSo9YTtjWzNdKj1hO2NbNl0qPWE7Y1sxXSo9YTtjWzRdKj1hO2NbN10qPWE7Y1syXSo9YTtjWzVdKj1hO2NbOF0qPWE7cmV0dXJuIHRoaXN9LGRldGVybWluYW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50cyxjPWFbMF0sZT1hWzFdLGc9YVsyXSxyPWFbM10sdj1hWzRdLHo9YVs1XSxFPWFbNl0sRz1hWzddO2E9YVs4XTtyZXR1cm4gYyp2KmEtYyp6KkctZSpyKmErZSp6KkUrZypyKkctZyp2KkV9LGdldEludmVyc2U6ZnVuY3Rpb24oYSxjKXthJiZhLmlzTWF0cml4NCYmCmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5nZXRJbnZlcnNlKCkgbm8gbG9uZ2VyIHRha2VzIGEgTWF0cml4NCBhcmd1bWVudC4iKTt2YXIgZT1hLmVsZW1lbnRzO2E9dGhpcy5lbGVtZW50czt2YXIgZz1lWzBdLHI9ZVsxXSx2PWVbMl0sej1lWzNdLEU9ZVs0XSxHPWVbNV0sSj1lWzZdLFA9ZVs3XTtlPWVbOF07dmFyIFI9ZSpFLUcqUCxTPUcqSi1lKnosVj1QKnotRSpKLFc9ZypSK3IqUyt2KlY7aWYoMD09PVcpe2lmKCEwPT09Yyl0aHJvdyBFcnJvcigiVEhSRUUuTWF0cml4MzogLmdldEludmVyc2UoKSBjYW4ndCBpbnZlcnQgbWF0cml4LCBkZXRlcm1pbmFudCBpcyAwIik7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAuZ2V0SW52ZXJzZSgpIGNhbid0IGludmVydCBtYXRyaXgsIGRldGVybWluYW50IGlzIDAiKTtyZXR1cm4gdGhpcy5pZGVudGl0eSgpfWM9MS9XO2FbMF09UipjO2FbMV09KHYqUC1lKnIpKmM7YVsyXT0oRypyLXYqRSkqYzthWzNdPVMqYzthWzRdPQooZSpnLXYqSikqYzthWzVdPSh2KnotRypnKSpjO2FbNl09VipjO2FbN109KHIqSi1QKmcpKmM7YVs4XT0oRSpnLXIqeikqYztyZXR1cm4gdGhpc30sdHJhbnNwb3NlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50czt2YXIgYz1hWzFdO2FbMV09YVszXTthWzNdPWM7Yz1hWzJdO2FbMl09YVs2XTthWzZdPWM7Yz1hWzVdO2FbNV09YVs3XTthWzddPWM7cmV0dXJuIHRoaXN9LGdldE5vcm1hbE1hdHJpeDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXRGcm9tTWF0cml4NChhKS5nZXRJbnZlcnNlKHRoaXMpLnRyYW5zcG9zZSgpfSx0cmFuc3Bvc2VJbnRvQXJyYXk6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5lbGVtZW50czthWzBdPWNbMF07YVsxXT1jWzNdO2FbMl09Y1s2XTthWzNdPWNbMV07YVs0XT1jWzRdO2FbNV09Y1s3XTthWzZdPWNbMl07YVs3XT1jWzVdO2FbOF09Y1s4XTtyZXR1cm4gdGhpc30sc2V0VXZUcmFuc2Zvcm06ZnVuY3Rpb24oYSxjLGUsZyxyLHYseil7dmFyIEU9Ck1hdGguY29zKHIpO3I9TWF0aC5zaW4ocik7dGhpcy5zZXQoZSpFLGUqciwtZSooRSp2K3IqeikrdithLC1nKnIsZypFLC1nKigtcip2K0UqeikreitjLDAsMCwxKX0sc2NhbGU6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmVsZW1lbnRzO2VbMF0qPWE7ZVszXSo9YTtlWzZdKj1hO2VbMV0qPWM7ZVs0XSo9YztlWzddKj1jO3JldHVybiB0aGlzfSxyb3RhdGU6ZnVuY3Rpb24oYSl7dmFyIGM9TWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt2YXIgZT10aGlzLmVsZW1lbnRzLGc9ZVswXSxyPWVbM10sdj1lWzZdLHo9ZVsxXSxFPWVbNF0sRz1lWzddO2VbMF09YypnK2EqejtlWzNdPWMqcithKkU7ZVs2XT1jKnYrYSpHO2VbMV09LWEqZytjKno7ZVs0XT0tYSpyK2MqRTtlWzddPS1hKnYrYypHO3JldHVybiB0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmVsZW1lbnRzO2VbMF0rPWEqZVsyXTtlWzNdKz1hKmVbNV07ZVs2XSs9YSplWzhdO2VbMV0rPWMqZVsyXTtlWzRdKz0KYyplWzVdO2VbN10rPWMqZVs4XTtyZXR1cm4gdGhpc30sZXF1YWxzOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZWxlbWVudHM7YT1hLmVsZW1lbnRzO2Zvcih2YXIgZT0wOzk+ZTtlKyspaWYoY1tlXSE9PWFbZV0pcmV0dXJuITE7cmV0dXJuITB9LGZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO2Zvcih2YXIgZT0wOzk+ZTtlKyspdGhpcy5lbGVtZW50c1tlXT1hW2UrY107cmV0dXJuIHRoaXN9LHRvQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1hJiYoYT1bXSk7dm9pZCAwPT09YyYmKGM9MCk7dmFyIGU9dGhpcy5lbGVtZW50czthW2NdPWVbMF07YVtjKzFdPWVbMV07YVtjKzJdPWVbMl07YVtjKzNdPWVbM107YVtjKzRdPWVbNF07YVtjKzVdPWVbNV07YVtjKzZdPWVbNl07YVtjKzddPWVbN107YVtjKzhdPWVbOF07cmV0dXJuIGF9fSk7dmFyIGVmLERkPXtnZXREYXRhVVJMOmZ1bmN0aW9uKGEpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgSFRNTENhbnZhc0VsZW1lbnQpcmV0dXJuIGEuc3JjOwppZighKGEgaW5zdGFuY2VvZiBIVE1MQ2FudmFzRWxlbWVudCkpe3ZvaWQgMD09PWVmJiYoZWY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiY2FudmFzIikpO2VmLndpZHRoPWEud2lkdGg7ZWYuaGVpZ2h0PWEuaGVpZ2h0O3ZhciBjPWVmLmdldENvbnRleHQoIjJkIik7YSBpbnN0YW5jZW9mIEltYWdlRGF0YT9jLnB1dEltYWdlRGF0YShhLDAsMCk6Yy5kcmF3SW1hZ2UoYSwwLDAsYS53aWR0aCxhLmhlaWdodCk7YT1lZn1yZXR1cm4gMjA0ODxhLndpZHRofHwyMDQ4PGEuaGVpZ2h0P2EudG9EYXRhVVJMKCJpbWFnZS9qcGVnIiwuNik6YS50b0RhdGFVUkwoImltYWdlL3BuZyIpfX0sTms9MDtsLkRFRkFVTFRfSU1BR0U9dm9pZCAwO2wuREVGQVVMVF9NQVBQSU5HPTMwMDtsLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpsLGlzVGV4dHVyZTohMCx1cGRhdGVNYXRyaXg6ZnVuY3Rpb24oKXt0aGlzLm1hdHJpeC5zZXRVdlRyYW5zZm9ybSh0aGlzLm9mZnNldC54LAp0aGlzLm9mZnNldC55LHRoaXMucmVwZWF0LngsdGhpcy5yZXBlYXQueSx0aGlzLnJvdGF0aW9uLHRoaXMuY2VudGVyLngsdGhpcy5jZW50ZXIueSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMubmFtZT1hLm5hbWU7dGhpcy5pbWFnZT1hLmltYWdlO3RoaXMubWlwbWFwcz1hLm1pcG1hcHMuc2xpY2UoMCk7dGhpcy5tYXBwaW5nPWEubWFwcGluZzt0aGlzLndyYXBTPWEud3JhcFM7dGhpcy53cmFwVD1hLndyYXBUO3RoaXMubWFnRmlsdGVyPWEubWFnRmlsdGVyO3RoaXMubWluRmlsdGVyPWEubWluRmlsdGVyO3RoaXMuYW5pc290cm9weT1hLmFuaXNvdHJvcHk7dGhpcy5mb3JtYXQ9YS5mb3JtYXQ7dGhpcy50eXBlPWEudHlwZTt0aGlzLm9mZnNldC5jb3B5KGEub2Zmc2V0KTt0aGlzLnJlcGVhdC5jb3B5KGEucmVwZWF0KTt0aGlzLmNlbnRlci5jb3B5KGEuY2VudGVyKTt0aGlzLnJvdGF0aW9uPQphLnJvdGF0aW9uO3RoaXMubWF0cml4QXV0b1VwZGF0ZT1hLm1hdHJpeEF1dG9VcGRhdGU7dGhpcy5tYXRyaXguY29weShhLm1hdHJpeCk7dGhpcy5nZW5lcmF0ZU1pcG1hcHM9YS5nZW5lcmF0ZU1pcG1hcHM7dGhpcy5wcmVtdWx0aXBseUFscGhhPWEucHJlbXVsdGlwbHlBbHBoYTt0aGlzLmZsaXBZPWEuZmxpcFk7dGhpcy51bnBhY2tBbGlnbm1lbnQ9YS51bnBhY2tBbGlnbm1lbnQ7dGhpcy5lbmNvZGluZz1hLmVuY29kaW5nO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7dmFyIGM9dm9pZCAwPT09YXx8InN0cmluZyI9PT10eXBlb2YgYTtpZighYyYmdm9pZCAwIT09YS50ZXh0dXJlc1t0aGlzLnV1aWRdKXJldHVybiBhLnRleHR1cmVzW3RoaXMudXVpZF07dmFyIGU9e21ldGFkYXRhOnt2ZXJzaW9uOjQuNSx0eXBlOiJUZXh0dXJlIixnZW5lcmF0b3I6IlRleHR1cmUudG9KU09OIn0sdXVpZDp0aGlzLnV1aWQsbmFtZTp0aGlzLm5hbWUsbWFwcGluZzp0aGlzLm1hcHBpbmcsCnJlcGVhdDpbdGhpcy5yZXBlYXQueCx0aGlzLnJlcGVhdC55XSxvZmZzZXQ6W3RoaXMub2Zmc2V0LngsdGhpcy5vZmZzZXQueV0sY2VudGVyOlt0aGlzLmNlbnRlci54LHRoaXMuY2VudGVyLnldLHJvdGF0aW9uOnRoaXMucm90YXRpb24sd3JhcDpbdGhpcy53cmFwUyx0aGlzLndyYXBUXSxmb3JtYXQ6dGhpcy5mb3JtYXQsdHlwZTp0aGlzLnR5cGUsZW5jb2Rpbmc6dGhpcy5lbmNvZGluZyxtaW5GaWx0ZXI6dGhpcy5taW5GaWx0ZXIsbWFnRmlsdGVyOnRoaXMubWFnRmlsdGVyLGFuaXNvdHJvcHk6dGhpcy5hbmlzb3Ryb3B5LGZsaXBZOnRoaXMuZmxpcFkscHJlbXVsdGlwbHlBbHBoYTp0aGlzLnByZW11bHRpcGx5QWxwaGEsdW5wYWNrQWxpZ25tZW50OnRoaXMudW5wYWNrQWxpZ25tZW50fTtpZih2b2lkIDAhPT10aGlzLmltYWdlKXt2YXIgZz10aGlzLmltYWdlO3ZvaWQgMD09PWcudXVpZCYmKGcudXVpZD1oYi5nZW5lcmF0ZVVVSUQoKSk7aWYoIWMmJnZvaWQgMD09PWEuaW1hZ2VzW2cudXVpZF0pe2lmKEFycmF5LmlzQXJyYXkoZykpe3ZhciByPQpbXTtmb3IodmFyIHY9MCx6PWcubGVuZ3RoO3Y8ejt2Kyspci5wdXNoKERkLmdldERhdGFVUkwoZ1t2XSkpfWVsc2Ugcj1EZC5nZXREYXRhVVJMKGcpO2EuaW1hZ2VzW2cudXVpZF09e3V1aWQ6Zy51dWlkLHVybDpyfX1lLmltYWdlPWcudXVpZH1jfHwoYS50ZXh0dXJlc1t0aGlzLnV1aWRdPWUpO3JldHVybiBlfSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfSx0cmFuc2Zvcm1VdjpmdW5jdGlvbihhKXtpZigzMDAhPT10aGlzLm1hcHBpbmcpcmV0dXJuIGE7YS5hcHBseU1hdHJpeDModGhpcy5tYXRyaXgpO2lmKDA+YS54fHwxPGEueClzd2l0Y2godGhpcy53cmFwUyl7Y2FzZSAxRTM6YS54LT1NYXRoLmZsb29yKGEueCk7YnJlYWs7Y2FzZSAxMDAxOmEueD0wPmEueD8wOjE7YnJlYWs7Y2FzZSAxMDAyOmEueD0xPT09TWF0aC5hYnMoTWF0aC5mbG9vcihhLngpJTIpP01hdGguY2VpbChhLngpLWEueDphLngtTWF0aC5mbG9vcihhLngpfWlmKDA+CmEueXx8MTxhLnkpc3dpdGNoKHRoaXMud3JhcFQpe2Nhc2UgMUUzOmEueS09TWF0aC5mbG9vcihhLnkpO2JyZWFrO2Nhc2UgMTAwMTphLnk9MD5hLnk/MDoxO2JyZWFrO2Nhc2UgMTAwMjphLnk9MT09PU1hdGguYWJzKE1hdGguZmxvb3IoYS55KSUyKT9NYXRoLmNlaWwoYS55KS1hLnk6YS55LU1hdGguZmxvb3IoYS55KX10aGlzLmZsaXBZJiYoYS55PTEtYS55KTtyZXR1cm4gYX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkobC5wcm90b3R5cGUsIm5lZWRzVXBkYXRlIix7c2V0OmZ1bmN0aW9uKGEpeyEwPT09YSYmdGhpcy52ZXJzaW9uKyt9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocC5wcm90b3R5cGUse3dpZHRoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56fSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy56PWF9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnd9LHNldDpmdW5jdGlvbihhKXt0aGlzLnc9YX19fSk7T2JqZWN0LmFzc2lnbihwLnByb3RvdHlwZSwKe2lzVmVjdG9yNDohMCxzZXQ6ZnVuY3Rpb24oYSxjLGUsZyl7dGhpcy54PWE7dGhpcy55PWM7dGhpcy56PWU7dGhpcy53PWc7cmV0dXJuIHRoaXN9LHNldFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLnc9dGhpcy56PXRoaXMueT10aGlzLng9YTtyZXR1cm4gdGhpc30sc2V0WDpmdW5jdGlvbihhKXt0aGlzLng9YTtyZXR1cm4gdGhpc30sc2V0WTpmdW5jdGlvbihhKXt0aGlzLnk9YTtyZXR1cm4gdGhpc30sc2V0WjpmdW5jdGlvbihhKXt0aGlzLno9YTtyZXR1cm4gdGhpc30sc2V0VzpmdW5jdGlvbihhKXt0aGlzLnc9YTtyZXR1cm4gdGhpc30sc2V0Q29tcG9uZW50OmZ1bmN0aW9uKGEsYyl7c3dpdGNoKGEpe2Nhc2UgMDp0aGlzLng9YzticmVhaztjYXNlIDE6dGhpcy55PWM7YnJlYWs7Y2FzZSAyOnRoaXMuej1jO2JyZWFrO2Nhc2UgMzp0aGlzLnc9YzticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrYSk7fXJldHVybiB0aGlzfSxnZXRDb21wb25lbnQ6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMDpyZXR1cm4gdGhpcy54OwpjYXNlIDE6cmV0dXJuIHRoaXMueTtjYXNlIDI6cmV0dXJuIHRoaXMuejtjYXNlIDM6cmV0dXJuIHRoaXMudztkZWZhdWx0OnRocm93IEVycm9yKCJpbmRleCBpcyBvdXQgb2YgcmFuZ2U6ICIrYSk7fX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy54LHRoaXMueSx0aGlzLnosdGhpcy53KX0sY29weTpmdW5jdGlvbihhKXt0aGlzLng9YS54O3RoaXMueT1hLnk7dGhpcy56PWEuejt0aGlzLnc9dm9pZCAwIT09YS53P2EudzoxO3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSxjKXtpZih2b2lkIDAhPT1jKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IC5hZGQoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5hZGRWZWN0b3JzKCBhLCBiICkgaW5zdGVhZC4iKSx0aGlzLmFkZFZlY3RvcnMoYSxjKTt0aGlzLngrPWEueDt0aGlzLnkrPWEueTt0aGlzLnorPWEuejt0aGlzLncrPWEudztyZXR1cm4gdGhpc30sCmFkZFNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngrPWE7dGhpcy55Kz1hO3RoaXMueis9YTt0aGlzLncrPWE7cmV0dXJuIHRoaXN9LGFkZFZlY3RvcnM6ZnVuY3Rpb24oYSxjKXt0aGlzLng9YS54K2MueDt0aGlzLnk9YS55K2MueTt0aGlzLno9YS56K2Muejt0aGlzLnc9YS53K2MudztyZXR1cm4gdGhpc30sYWRkU2NhbGVkVmVjdG9yOmZ1bmN0aW9uKGEsYyl7dGhpcy54Kz1hLngqYzt0aGlzLnkrPWEueSpjO3RoaXMueis9YS56KmM7dGhpcy53Kz1hLncqYztyZXR1cm4gdGhpc30sc3ViOmZ1bmN0aW9uKGEsYyl7aWYodm9pZCAwIT09YylyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuc3ViKCkgbm93IG9ubHkgYWNjZXB0cyBvbmUgYXJndW1lbnQuIFVzZSAuc3ViVmVjdG9ycyggYSwgYiApIGluc3RlYWQuIiksdGhpcy5zdWJWZWN0b3JzKGEsYyk7dGhpcy54LT1hLng7dGhpcy55LT1hLnk7dGhpcy56LT1hLno7dGhpcy53LT1hLnc7cmV0dXJuIHRoaXN9LHN1YlNjYWxhcjpmdW5jdGlvbihhKXt0aGlzLngtPQphO3RoaXMueS09YTt0aGlzLnotPWE7dGhpcy53LT1hO3JldHVybiB0aGlzfSxzdWJWZWN0b3JzOmZ1bmN0aW9uKGEsYyl7dGhpcy54PWEueC1jLng7dGhpcy55PWEueS1jLnk7dGhpcy56PWEuei1jLno7dGhpcy53PWEudy1jLnc7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMueCo9YTt0aGlzLnkqPWE7dGhpcy56Kj1hO3RoaXMudyo9YTtyZXR1cm4gdGhpc30sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMueCxlPXRoaXMueSxnPXRoaXMueixyPXRoaXMudzthPWEuZWxlbWVudHM7dGhpcy54PWFbMF0qYythWzRdKmUrYVs4XSpnK2FbMTJdKnI7dGhpcy55PWFbMV0qYythWzVdKmUrYVs5XSpnK2FbMTNdKnI7dGhpcy56PWFbMl0qYythWzZdKmUrYVsxMF0qZythWzE0XSpyO3RoaXMudz1hWzNdKmMrYVs3XSplK2FbMTFdKmcrYVsxNV0qcjtyZXR1cm4gdGhpc30sZGl2aWRlU2NhbGFyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm11bHRpcGx5U2NhbGFyKDEvCmEpfSxzZXRBeGlzQW5nbGVGcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhKXt0aGlzLnc9MipNYXRoLmFjb3MoYS53KTt2YXIgYz1NYXRoLnNxcnQoMS1hLncqYS53KTsxRS00PmM/KHRoaXMueD0xLHRoaXMuej10aGlzLnk9MCk6KHRoaXMueD1hLngvYyx0aGlzLnk9YS55L2MsdGhpcy56PWEuei9jKTtyZXR1cm4gdGhpc30sc2V0QXhpc0FuZ2xlRnJvbVJvdGF0aW9uTWF0cml4OmZ1bmN0aW9uKGEpe2E9YS5lbGVtZW50czt2YXIgYz1hWzBdO3ZhciBlPWFbNF07dmFyIGc9YVs4XSxyPWFbMV0sdj1hWzVdLHo9YVs5XTt2YXIgRT1hWzJdO3ZhciBHPWFbNl07dmFyIEo9YVsxMF07aWYoLjAxPk1hdGguYWJzKGUtcikmJi4wMT5NYXRoLmFicyhnLUUpJiYuMDE+TWF0aC5hYnMoei1HKSl7aWYoLjE+TWF0aC5hYnMoZStyKSYmLjE+TWF0aC5hYnMoZytFKSYmLjE+TWF0aC5hYnMoeitHKSYmLjE+TWF0aC5hYnMoYyt2K0otMykpcmV0dXJuIHRoaXMuc2V0KDEsMCwwLDApLHRoaXM7YT1NYXRoLlBJOwpjPShjKzEpLzI7dj0odisxKS8yO0o9KEorMSkvMjtlPShlK3IpLzQ7Zz0oZytFKS80O3o9KHorRykvNDtjPnYmJmM+Sj8uMDE+Yz8oRz0wLGU9RT0uNzA3MTA2NzgxKTooRz1NYXRoLnNxcnQoYyksRT1lL0csZT1nL0cpOnY+Sj8uMDE+dj8oRz0uNzA3MTA2NzgxLEU9MCxlPS43MDcxMDY3ODEpOihFPU1hdGguc3FydCh2KSxHPWUvRSxlPXovRSk6LjAxPko/KEU9Rz0uNzA3MTA2NzgxLGU9MCk6KGU9TWF0aC5zcXJ0KEopLEc9Zy9lLEU9ei9lKTt0aGlzLnNldChHLEUsZSxhKTtyZXR1cm4gdGhpc31hPU1hdGguc3FydCgoRy16KSooRy16KSsoZy1FKSooZy1FKSsoci1lKSooci1lKSk7LjAwMT5NYXRoLmFicyhhKSYmKGE9MSk7dGhpcy54PShHLXopL2E7dGhpcy55PShnLUUpL2E7dGhpcy56PShyLWUpL2E7dGhpcy53PU1hdGguYWNvcygoYyt2K0otMSkvMik7cmV0dXJuIHRoaXN9LG1pbjpmdW5jdGlvbihhKXt0aGlzLng9TWF0aC5taW4odGhpcy54LGEueCk7dGhpcy55PU1hdGgubWluKHRoaXMueSwKYS55KTt0aGlzLno9TWF0aC5taW4odGhpcy56LGEueik7dGhpcy53PU1hdGgubWluKHRoaXMudyxhLncpO3JldHVybiB0aGlzfSxtYXg6ZnVuY3Rpb24oYSl7dGhpcy54PU1hdGgubWF4KHRoaXMueCxhLngpO3RoaXMueT1NYXRoLm1heCh0aGlzLnksYS55KTt0aGlzLno9TWF0aC5tYXgodGhpcy56LGEueik7dGhpcy53PU1hdGgubWF4KHRoaXMudyxhLncpO3JldHVybiB0aGlzfSxjbGFtcDpmdW5jdGlvbihhLGMpe3RoaXMueD1NYXRoLm1heChhLngsTWF0aC5taW4oYy54LHRoaXMueCkpO3RoaXMueT1NYXRoLm1heChhLnksTWF0aC5taW4oYy55LHRoaXMueSkpO3RoaXMuej1NYXRoLm1heChhLnosTWF0aC5taW4oYy56LHRoaXMueikpO3RoaXMudz1NYXRoLm1heChhLncsTWF0aC5taW4oYy53LHRoaXMudykpO3JldHVybiB0aGlzfSxjbGFtcFNjYWxhcjpmdW5jdGlvbihhLGMpe3RoaXMueD1NYXRoLm1heChhLE1hdGgubWluKGMsdGhpcy54KSk7dGhpcy55PU1hdGgubWF4KGEsTWF0aC5taW4oYywKdGhpcy55KSk7dGhpcy56PU1hdGgubWF4KGEsTWF0aC5taW4oYyx0aGlzLnopKTt0aGlzLnc9TWF0aC5tYXgoYSxNYXRoLm1pbihjLHRoaXMudykpO3JldHVybiB0aGlzfSxjbGFtcExlbmd0aDpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMubGVuZ3RoKCk7cmV0dXJuIHRoaXMuZGl2aWRlU2NhbGFyKGV8fDEpLm11bHRpcGx5U2NhbGFyKE1hdGgubWF4KGEsTWF0aC5taW4oYyxlKSkpfSxmbG9vcjpmdW5jdGlvbigpe3RoaXMueD1NYXRoLmZsb29yKHRoaXMueCk7dGhpcy55PU1hdGguZmxvb3IodGhpcy55KTt0aGlzLno9TWF0aC5mbG9vcih0aGlzLnopO3RoaXMudz1NYXRoLmZsb29yKHRoaXMudyk7cmV0dXJuIHRoaXN9LGNlaWw6ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5jZWlsKHRoaXMueCk7dGhpcy55PU1hdGguY2VpbCh0aGlzLnkpO3RoaXMuej1NYXRoLmNlaWwodGhpcy56KTt0aGlzLnc9TWF0aC5jZWlsKHRoaXMudyk7cmV0dXJuIHRoaXN9LHJvdW5kOmZ1bmN0aW9uKCl7dGhpcy54PQpNYXRoLnJvdW5kKHRoaXMueCk7dGhpcy55PU1hdGgucm91bmQodGhpcy55KTt0aGlzLno9TWF0aC5yb3VuZCh0aGlzLnopO3RoaXMudz1NYXRoLnJvdW5kKHRoaXMudyk7cmV0dXJuIHRoaXN9LHJvdW5kVG9aZXJvOmZ1bmN0aW9uKCl7dGhpcy54PTA+dGhpcy54P01hdGguY2VpbCh0aGlzLngpOk1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9MD50aGlzLnk/TWF0aC5jZWlsKHRoaXMueSk6TWF0aC5mbG9vcih0aGlzLnkpO3RoaXMuej0wPnRoaXMuej9NYXRoLmNlaWwodGhpcy56KTpNYXRoLmZsb29yKHRoaXMueik7dGhpcy53PTA+dGhpcy53P01hdGguY2VpbCh0aGlzLncpOk1hdGguZmxvb3IodGhpcy53KTtyZXR1cm4gdGhpc30sbmVnYXRlOmZ1bmN0aW9uKCl7dGhpcy54PS10aGlzLng7dGhpcy55PS10aGlzLnk7dGhpcy56PS10aGlzLno7dGhpcy53PS10aGlzLnc7cmV0dXJuIHRoaXN9LGRvdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy54KmEueCt0aGlzLnkqYS55K3RoaXMueioKYS56K3RoaXMudyphLnd9LGxlbmd0aFNxOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueCp0aGlzLngrdGhpcy55KnRoaXMueSt0aGlzLnoqdGhpcy56K3RoaXMudyp0aGlzLnd9LGxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnordGhpcy53KnRoaXMudyl9LG1hbmhhdHRhbkxlbmd0aDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmFicyh0aGlzLngpK01hdGguYWJzKHRoaXMueSkrTWF0aC5hYnModGhpcy56KStNYXRoLmFicyh0aGlzLncpfSxub3JtYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXZpZGVTY2FsYXIodGhpcy5sZW5ndGgoKXx8MSl9LHNldExlbmd0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcihhKX0sbGVycDpmdW5jdGlvbihhLGMpe3RoaXMueCs9KGEueC10aGlzLngpKmM7dGhpcy55Kz0oYS55LXRoaXMueSkqYzt0aGlzLnorPShhLnotCnRoaXMueikqYzt0aGlzLncrPShhLnctdGhpcy53KSpjO3JldHVybiB0aGlzfSxsZXJwVmVjdG9yczpmdW5jdGlvbihhLGMsZSl7cmV0dXJuIHRoaXMuc3ViVmVjdG9ycyhjLGEpLm11bHRpcGx5U2NhbGFyKGUpLmFkZChhKX0sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLng9PT10aGlzLngmJmEueT09PXRoaXMueSYmYS56PT09dGhpcy56JiZhLnc9PT10aGlzLnd9LGZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO3RoaXMueD1hW2NdO3RoaXMueT1hW2MrMV07dGhpcy56PWFbYysyXTt0aGlzLnc9YVtjKzNdO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWMmJihjPTApO2FbY109dGhpcy54O2FbYysxXT10aGlzLnk7YVtjKzJdPXRoaXMuejthW2MrM109dGhpcy53O3JldHVybiBhfSxmcm9tQnVmZmVyQXR0cmlidXRlOmZ1bmN0aW9uKGEsYyxlKXt2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjQ6IG9mZnNldCBoYXMgYmVlbiByZW1vdmVkIGZyb20gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKTsKdGhpcy54PWEuZ2V0WChjKTt0aGlzLnk9YS5nZXRZKGMpO3RoaXMuej1hLmdldFooYyk7dGhpcy53PWEuZ2V0VyhjKTtyZXR1cm4gdGhpc319KTttLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjptLGlzV2ViR0xSZW5kZXJUYXJnZXQ6ITAsc2V0U2l6ZTpmdW5jdGlvbihhLGMpe2lmKHRoaXMud2lkdGghPT1hfHx0aGlzLmhlaWdodCE9PWMpdGhpcy53aWR0aD1hLHRoaXMuaGVpZ2h0PWMsdGhpcy50ZXh0dXJlLmltYWdlLndpZHRoPWEsdGhpcy50ZXh0dXJlLmltYWdlLmhlaWdodD1jLHRoaXMuZGlzcG9zZSgpO3RoaXMudmlld3BvcnQuc2V0KDAsMCxhLGMpO3RoaXMuc2Npc3Nvci5zZXQoMCwwLGEsYyl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMud2lkdGg9YS53aWR0aDt0aGlzLmhlaWdodD1hLmhlaWdodDt0aGlzLnZpZXdwb3J0LmNvcHkoYS52aWV3cG9ydCk7CnRoaXMudGV4dHVyZT1hLnRleHR1cmUuY2xvbmUoKTt0aGlzLmRlcHRoQnVmZmVyPWEuZGVwdGhCdWZmZXI7dGhpcy5zdGVuY2lsQnVmZmVyPWEuc3RlbmNpbEJ1ZmZlcjt0aGlzLmRlcHRoVGV4dHVyZT1hLmRlcHRoVGV4dHVyZTtyZXR1cm4gdGhpc30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19KTtuLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUobS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpuLGlzV2ViR0xNdWx0aXNhbXBsZVJlbmRlclRhcmdldDohMCxjb3B5OmZ1bmN0aW9uKGEpe20ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuc2FtcGxlcz1hLnNhbXBsZXM7cmV0dXJuIHRoaXN9fSk7dmFyIHFjPW5ldyBrLFFiPW5ldyBxLHhtPW5ldyBrKDAsMCwwKSx5bT1uZXcgaygxLDEsMSksRWQ9bmV3IGssZ2g9bmV3IGssZmM9bmV3IGs7T2JqZWN0LmFzc2lnbihxLnByb3RvdHlwZSx7aXNNYXRyaXg0OiEwLApzZXQ6ZnVuY3Rpb24oYSxjLGUsZyxyLHYseixFLEcsSixQLFIsUyxWLFcsaGEpe3ZhciBmYT10aGlzLmVsZW1lbnRzO2ZhWzBdPWE7ZmFbNF09YztmYVs4XT1lO2ZhWzEyXT1nO2ZhWzFdPXI7ZmFbNV09djtmYVs5XT16O2ZhWzEzXT1FO2ZhWzJdPUc7ZmFbNl09SjtmYVsxMF09UDtmYVsxNF09UjtmYVszXT1TO2ZhWzddPVY7ZmFbMTFdPVc7ZmFbMTVdPWhhO3JldHVybiB0aGlzfSxpZGVudGl0eTpmdW5jdGlvbigpe3RoaXMuc2V0KDEsMCwwLDAsMCwxLDAsMCwwLDAsMSwwLDAsMCwwLDEpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgcSkuZnJvbUFycmF5KHRoaXMuZWxlbWVudHMpfSxjb3B5OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZWxlbWVudHM7YT1hLmVsZW1lbnRzO2NbMF09YVswXTtjWzFdPWFbMV07Y1syXT1hWzJdO2NbM109YVszXTtjWzRdPWFbNF07Y1s1XT1hWzVdO2NbNl09YVs2XTtjWzddPWFbN107Y1s4XT1hWzhdO2NbOV09YVs5XTtjWzEwXT0KYVsxMF07Y1sxMV09YVsxMV07Y1sxMl09YVsxMl07Y1sxM109YVsxM107Y1sxNF09YVsxNF07Y1sxNV09YVsxNV07cmV0dXJuIHRoaXN9LGNvcHlQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmVsZW1lbnRzO2E9YS5lbGVtZW50cztjWzEyXT1hWzEyXTtjWzEzXT1hWzEzXTtjWzE0XT1hWzE0XTtyZXR1cm4gdGhpc30sZXh0cmFjdEJhc2lzOmZ1bmN0aW9uKGEsYyxlKXthLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywwKTtjLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywxKTtlLnNldEZyb21NYXRyaXhDb2x1bW4odGhpcywyKTtyZXR1cm4gdGhpc30sbWFrZUJhc2lzOmZ1bmN0aW9uKGEsYyxlKXt0aGlzLnNldChhLngsYy54LGUueCwwLGEueSxjLnksZS55LDAsYS56LGMueixlLnosMCwwLDAsMCwxKTtyZXR1cm4gdGhpc30sZXh0cmFjdFJvdGF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZWxlbWVudHMsZT1hLmVsZW1lbnRzLGc9MS9xYy5zZXRGcm9tTWF0cml4Q29sdW1uKGEsCjApLmxlbmd0aCgpLHI9MS9xYy5zZXRGcm9tTWF0cml4Q29sdW1uKGEsMSkubGVuZ3RoKCk7YT0xL3FjLnNldEZyb21NYXRyaXhDb2x1bW4oYSwyKS5sZW5ndGgoKTtjWzBdPWVbMF0qZztjWzFdPWVbMV0qZztjWzJdPWVbMl0qZztjWzNdPTA7Y1s0XT1lWzRdKnI7Y1s1XT1lWzVdKnI7Y1s2XT1lWzZdKnI7Y1s3XT0wO2NbOF09ZVs4XSphO2NbOV09ZVs5XSphO2NbMTBdPWVbMTBdKmE7Y1sxMV09MDtjWzEyXT0wO2NbMTNdPTA7Y1sxNF09MDtjWzE1XT0xO3JldHVybiB0aGlzfSxtYWtlUm90YXRpb25Gcm9tRXVsZXI6ZnVuY3Rpb24oYSl7YSYmYS5pc0V1bGVyfHxjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubWFrZVJvdGF0aW9uRnJvbUV1bGVyKCkgbm93IGV4cGVjdHMgYSBFdWxlciByb3RhdGlvbiByYXRoZXIgdGhhbiBhIFZlY3RvcjMgYW5kIG9yZGVyLiIpO3ZhciBjPXRoaXMuZWxlbWVudHMsZT1hLngsZz1hLnkscj1hLnosdj1NYXRoLmNvcyhlKTtlPU1hdGguc2luKGUpOwp2YXIgej1NYXRoLmNvcyhnKTtnPU1hdGguc2luKGcpO3ZhciBFPU1hdGguY29zKHIpO3I9TWF0aC5zaW4ocik7aWYoIlhZWiI9PT1hLm9yZGVyKXthPXYqRTt2YXIgRz12KnIsSj1lKkUsUD1lKnI7Y1swXT16KkU7Y1s0XT0teipyO2NbOF09ZztjWzFdPUcrSipnO2NbNV09YS1QKmc7Y1s5XT0tZSp6O2NbMl09UC1hKmc7Y1s2XT1KK0cqZztjWzEwXT12Knp9ZWxzZSJZWFoiPT09YS5vcmRlcj8oYT16KkUsRz16KnIsSj1nKkUsUD1nKnIsY1swXT1hK1AqZSxjWzRdPUoqZS1HLGNbOF09dipnLGNbMV09dipyLGNbNV09dipFLGNbOV09LWUsY1syXT1HKmUtSixjWzZdPVArYSplLGNbMTBdPXYqeik6IlpYWSI9PT1hLm9yZGVyPyhhPXoqRSxHPXoqcixKPWcqRSxQPWcqcixjWzBdPWEtUCplLGNbNF09LXYqcixjWzhdPUorRyplLGNbMV09RytKKmUsY1s1XT12KkUsY1s5XT1QLWEqZSxjWzJdPS12KmcsY1s2XT1lLGNbMTBdPXYqeik6IlpZWCI9PT1hLm9yZGVyPyhhPXYqRSxHPXYqcixKPWUqCkUsUD1lKnIsY1swXT16KkUsY1s0XT1KKmctRyxjWzhdPWEqZytQLGNbMV09eipyLGNbNV09UCpnK2EsY1s5XT1HKmctSixjWzJdPS1nLGNbNl09ZSp6LGNbMTBdPXYqeik6IllaWCI9PT1hLm9yZGVyPyhhPXYqeixHPXYqZyxKPWUqeixQPWUqZyxjWzBdPXoqRSxjWzRdPVAtYSpyLGNbOF09SipyK0csY1sxXT1yLGNbNV09dipFLGNbOV09LWUqRSxjWzJdPS1nKkUsY1s2XT1HKnIrSixjWzEwXT1hLVAqcik6IlhaWSI9PT1hLm9yZGVyJiYoYT12KnosRz12KmcsSj1lKnosUD1lKmcsY1swXT16KkUsY1s0XT0tcixjWzhdPWcqRSxjWzFdPWEqcitQLGNbNV09dipFLGNbOV09RypyLUosY1syXT1KKnItRyxjWzZdPWUqRSxjWzEwXT1QKnIrYSk7Y1szXT0wO2NbN109MDtjWzExXT0wO2NbMTJdPTA7Y1sxM109MDtjWzE0XT0wO2NbMTVdPTE7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvbkZyb21RdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNvbXBvc2UoeG0sYSx5bSl9LGxvb2tBdDpmdW5jdGlvbihhLApjLGUpe3ZhciBnPXRoaXMuZWxlbWVudHM7ZmMuc3ViVmVjdG9ycyhhLGMpOzA9PT1mYy5sZW5ndGhTcSgpJiYoZmMuej0xKTtmYy5ub3JtYWxpemUoKTtFZC5jcm9zc1ZlY3RvcnMoZSxmYyk7MD09PUVkLmxlbmd0aFNxKCkmJigxPT09TWF0aC5hYnMoZS56KT9mYy54Kz0xRS00OmZjLnorPTFFLTQsZmMubm9ybWFsaXplKCksRWQuY3Jvc3NWZWN0b3JzKGUsZmMpKTtFZC5ub3JtYWxpemUoKTtnaC5jcm9zc1ZlY3RvcnMoZmMsRWQpO2dbMF09RWQueDtnWzRdPWdoLng7Z1s4XT1mYy54O2dbMV09RWQueTtnWzVdPWdoLnk7Z1s5XT1mYy55O2dbMl09RWQuejtnWzZdPWdoLno7Z1sxMF09ZmMuejtyZXR1cm4gdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdm9pZCAwIT09Yz8oY29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHkoKSBub3cgb25seSBhY2NlcHRzIG9uZSBhcmd1bWVudC4gVXNlIC5tdWx0aXBseU1hdHJpY2VzKCBhLCBiICkgaW5zdGVhZC4iKSwKdGhpcy5tdWx0aXBseU1hdHJpY2VzKGEsYykpOnRoaXMubXVsdGlwbHlNYXRyaWNlcyh0aGlzLGEpfSxwcmVtdWx0aXBseTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tdWx0aXBseU1hdHJpY2VzKGEsdGhpcyl9LG11bHRpcGx5TWF0cmljZXM6ZnVuY3Rpb24oYSxjKXt2YXIgZT1hLmVsZW1lbnRzLGc9Yy5lbGVtZW50cztjPXRoaXMuZWxlbWVudHM7YT1lWzBdO3ZhciByPWVbNF0sdj1lWzhdLHo9ZVsxMl0sRT1lWzFdLEc9ZVs1XSxKPWVbOV0sUD1lWzEzXSxSPWVbMl0sUz1lWzZdLFY9ZVsxMF0sVz1lWzE0XSxoYT1lWzNdLGZhPWVbN10scmE9ZVsxMV07ZT1lWzE1XTt2YXIgcGE9Z1swXSxxYT1nWzRdLHVhPWdbOF0sb2E9Z1sxMl0sdGE9Z1sxXSxCYT1nWzVdLFRhPWdbOV0sVWE9Z1sxM10sQ2E9Z1syXSxIYT1nWzZdLERhPWdbMTBdLE1hPWdbMTRdLGRiPWdbM10sdGI9Z1s3XSxLYT1nWzExXTtnPWdbMTVdO2NbMF09YSpwYStyKnRhK3YqQ2EreipkYjtjWzRdPWEqcWErcipCYSt2KgpIYSt6KnRiO2NbOF09YSp1YStyKlRhK3YqRGEreipLYTtjWzEyXT1hKm9hK3IqVWErdipNYSt6Kmc7Y1sxXT1FKnBhK0cqdGErSipDYStQKmRiO2NbNV09RSpxYStHKkJhK0oqSGErUCp0YjtjWzldPUUqdWErRypUYStKKkRhK1AqS2E7Y1sxM109RSpvYStHKlVhK0oqTWErUCpnO2NbMl09UipwYStTKnRhK1YqQ2ErVypkYjtjWzZdPVIqcWErUypCYStWKkhhK1cqdGI7Y1sxMF09Uip1YStTKlRhK1YqRGErVypLYTtjWzE0XT1SKm9hK1MqVWErVipNYStXKmc7Y1szXT1oYSpwYStmYSp0YStyYSpDYStlKmRiO2NbN109aGEqcWErZmEqQmErcmEqSGErZSp0YjtjWzExXT1oYSp1YStmYSpUYStyYSpEYStlKkthO2NbMTVdPWhhKm9hK2ZhKlVhK3JhKk1hK2UqZztyZXR1cm4gdGhpc30sbXVsdGlwbHlTY2FsYXI6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5lbGVtZW50cztjWzBdKj1hO2NbNF0qPWE7Y1s4XSo9YTtjWzEyXSo9YTtjWzFdKj1hO2NbNV0qPWE7Y1s5XSo9YTtjWzEzXSo9YTtjWzJdKj0KYTtjWzZdKj1hO2NbMTBdKj1hO2NbMTRdKj1hO2NbM10qPWE7Y1s3XSo9YTtjWzExXSo9YTtjWzE1XSo9YTtyZXR1cm4gdGhpc30sYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbihhKXtmb3IodmFyIGM9MCxlPWEuY291bnQ7YzxlO2MrKylxYy54PWEuZ2V0WChjKSxxYy55PWEuZ2V0WShjKSxxYy56PWEuZ2V0WihjKSxxYy5hcHBseU1hdHJpeDQodGhpcyksYS5zZXRYWVooYyxxYy54LHFjLnkscWMueik7cmV0dXJuIGF9LGRldGVybWluYW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50cyxjPWFbMF0sZT1hWzRdLGc9YVs4XSxyPWFbMTJdLHY9YVsxXSx6PWFbNV0sRT1hWzldLEc9YVsxM10sSj1hWzJdLFA9YVs2XSxSPWFbMTBdLFM9YVsxNF07cmV0dXJuIGFbM10qKCtyKkUqUC1nKkcqUC1yKnoqUitlKkcqUitnKnoqUy1lKkUqUykrYVs3XSooK2MqRSpTLWMqRypSK3IqdipSLWcqdipTK2cqRypKLXIqRSpKKSthWzExXSooK2MqRypQLWMqeipTLXIqdipQK2UqdipTKwpyKnoqSi1lKkcqSikrYVsxNV0qKC1nKnoqSi1jKkUqUCtjKnoqUitnKnYqUC1lKnYqUitlKkUqSil9LHRyYW5zcG9zZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZWxlbWVudHM7dmFyIGM9YVsxXTthWzFdPWFbNF07YVs0XT1jO2M9YVsyXTthWzJdPWFbOF07YVs4XT1jO2M9YVs2XTthWzZdPWFbOV07YVs5XT1jO2M9YVszXTthWzNdPWFbMTJdO2FbMTJdPWM7Yz1hWzddO2FbN109YVsxM107YVsxM109YztjPWFbMTFdO2FbMTFdPWFbMTRdO2FbMTRdPWM7cmV0dXJuIHRoaXN9LHNldFBvc2l0aW9uOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZz10aGlzLmVsZW1lbnRzO2EuaXNWZWN0b3IzPyhnWzEyXT1hLngsZ1sxM109YS55LGdbMTRdPWEueik6KGdbMTJdPWEsZ1sxM109YyxnWzE0XT1lKTtyZXR1cm4gdGhpc30sZ2V0SW52ZXJzZTpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMuZWxlbWVudHMsZz1hLmVsZW1lbnRzO2E9Z1swXTt2YXIgcj1nWzFdLHY9Z1syXSx6PWdbM10sRT1nWzRdLEc9Z1s1XSwKSj1nWzZdLFA9Z1s3XSxSPWdbOF0sUz1nWzldLFY9Z1sxMF0sVz1nWzExXSxoYT1nWzEyXSxmYT1nWzEzXSxyYT1nWzE0XTtnPWdbMTVdO3ZhciBwYT1TKnJhKlAtZmEqVipQK2ZhKkoqVy1HKnJhKlctUypKKmcrRypWKmcscWE9aGEqVipQLVIqcmEqUC1oYSpKKlcrRSpyYSpXK1IqSipnLUUqVipnLHVhPVIqZmEqUC1oYSpTKlAraGEqRypXLUUqZmEqVy1SKkcqZytFKlMqZyxvYT1oYSpTKkotUipmYSpKLWhhKkcqVitFKmZhKlYrUipHKnJhLUUqUypyYSx0YT1hKnBhK3IqcWErdip1YSt6Km9hO2lmKDA9PT10YSl7aWYoITA9PT1jKXRocm93IEVycm9yKCJUSFJFRS5NYXRyaXg0OiAuZ2V0SW52ZXJzZSgpIGNhbid0IGludmVydCBtYXRyaXgsIGRldGVybWluYW50IGlzIDAiKTtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5nZXRJbnZlcnNlKCkgY2FuJ3QgaW52ZXJ0IG1hdHJpeCwgZGV0ZXJtaW5hbnQgaXMgMCIpO3JldHVybiB0aGlzLmlkZW50aXR5KCl9Yz0xL3RhO2VbMF09CnBhKmM7ZVsxXT0oZmEqVip6LVMqcmEqei1mYSp2KlcrcipyYSpXK1MqdipnLXIqVipnKSpjO2VbMl09KEcqcmEqei1mYSpKKnorZmEqdipQLXIqcmEqUC1HKnYqZytyKkoqZykqYztlWzNdPShTKkoqei1HKlYqei1TKnYqUCtyKlYqUCtHKnYqVy1yKkoqVykqYztlWzRdPXFhKmM7ZVs1XT0oUipyYSp6LWhhKlYqeitoYSp2KlctYSpyYSpXLVIqdipnK2EqVipnKSpjO2VbNl09KGhhKkoqei1FKnJhKnotaGEqdipQK2EqcmEqUCtFKnYqZy1hKkoqZykqYztlWzddPShFKlYqei1SKkoqeitSKnYqUC1hKlYqUC1FKnYqVythKkoqVykqYztlWzhdPXVhKmM7ZVs5XT0oaGEqUyp6LVIqZmEqei1oYSpyKlcrYSpmYSpXK1IqcipnLWEqUypnKSpjO2VbMTBdPShFKmZhKnotaGEqRyp6K2hhKnIqUC1hKmZhKlAtRSpyKmcrYSpHKmcpKmM7ZVsxMV09KFIqRyp6LUUqUyp6LVIqcipQK2EqUypQK0UqcipXLWEqRypXKSpjO2VbMTJdPW9hKmM7ZVsxM109KFIqZmEqdi1oYSpTKnYraGEqcipWLWEqZmEqVi0KUipyKnJhK2EqUypyYSkqYztlWzE0XT0oaGEqRyp2LUUqZmEqdi1oYSpyKkorYSpmYSpKK0UqcipyYS1hKkcqcmEpKmM7ZVsxNV09KEUqUyp2LVIqRyp2K1IqcipKLWEqUypKLUUqcipWK2EqRypWKSpjO3JldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmVsZW1lbnRzLGU9YS54LGc9YS55O2E9YS56O2NbMF0qPWU7Y1s0XSo9ZztjWzhdKj1hO2NbMV0qPWU7Y1s1XSo9ZztjWzldKj1hO2NbMl0qPWU7Y1s2XSo9ZztjWzEwXSo9YTtjWzNdKj1lO2NbN10qPWc7Y1sxMV0qPWE7cmV0dXJuIHRoaXN9LGdldE1heFNjYWxlT25BeGlzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lbGVtZW50cztyZXR1cm4gTWF0aC5zcXJ0KE1hdGgubWF4KGFbMF0qYVswXSthWzFdKmFbMV0rYVsyXSphWzJdLGFbNF0qYVs0XSthWzVdKmFbNV0rYVs2XSphWzZdLGFbOF0qYVs4XSthWzldKmFbOV0rYVsxMF0qYVsxMF0pKX0sbWFrZVRyYW5zbGF0aW9uOmZ1bmN0aW9uKGEsYyxlKXt0aGlzLnNldCgxLAowLDAsYSwwLDEsMCxjLDAsMCwxLGUsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvblg6ZnVuY3Rpb24oYSl7dmFyIGM9TWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt0aGlzLnNldCgxLDAsMCwwLDAsYywtYSwwLDAsYSxjLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvblk6ZnVuY3Rpb24oYSl7dmFyIGM9TWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt0aGlzLnNldChjLDAsYSwwLDAsMSwwLDAsLWEsMCxjLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvblo6ZnVuY3Rpb24oYSl7dmFyIGM9TWF0aC5jb3MoYSk7YT1NYXRoLnNpbihhKTt0aGlzLnNldChjLC1hLDAsMCxhLGMsMCwwLDAsMCwxLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VSb3RhdGlvbkF4aXM6ZnVuY3Rpb24oYSxjKXt2YXIgZT1NYXRoLmNvcyhjKTtjPU1hdGguc2luKGMpO3ZhciBnPTEtZSxyPWEueCx2PWEueTthPWEuejt2YXIgej1nKnIsRT1nKnY7dGhpcy5zZXQoeioKcitlLHoqdi1jKmEseiphK2MqdiwwLHoqditjKmEsRSp2K2UsRSphLWMqciwwLHoqYS1jKnYsRSphK2MqcixnKmEqYStlLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VTY2FsZTpmdW5jdGlvbihhLGMsZSl7dGhpcy5zZXQoYSwwLDAsMCwwLGMsMCwwLDAsMCxlLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LG1ha2VTaGVhcjpmdW5jdGlvbihhLGMsZSl7dGhpcy5zZXQoMSxjLGUsMCxhLDEsZSwwLGEsYywxLDAsMCwwLDAsMSk7cmV0dXJuIHRoaXN9LGNvbXBvc2U6ZnVuY3Rpb24oYSxjLGUpe3ZhciBnPXRoaXMuZWxlbWVudHMscj1jLl94LHY9Yy5feSx6PWMuX3osRT1jLl93LEc9cityLEo9dit2LFA9eit6O2M9cipHO3ZhciBSPXIqSjtyKj1QO3ZhciBTPXYqSjt2Kj1QO3oqPVA7Ryo9RTtKKj1FO0UqPVA7UD1lLng7dmFyIFY9ZS55O2U9ZS56O2dbMF09KDEtKFMreikpKlA7Z1sxXT0oUitFKSpQO2dbMl09KHItSikqUDtnWzNdPTA7Z1s0XT0oUi1FKSpWO2dbNV09KDEtKGMreikpKgpWO2dbNl09KHYrRykqVjtnWzddPTA7Z1s4XT0ocitKKSplO2dbOV09KHYtRykqZTtnWzEwXT0oMS0oYytTKSkqZTtnWzExXT0wO2dbMTJdPWEueDtnWzEzXT1hLnk7Z1sxNF09YS56O2dbMTVdPTE7cmV0dXJuIHRoaXN9LGRlY29tcG9zZTpmdW5jdGlvbihhLGMsZSl7dmFyIGc9dGhpcy5lbGVtZW50cyxyPXFjLnNldChnWzBdLGdbMV0sZ1syXSkubGVuZ3RoKCksdj1xYy5zZXQoZ1s0XSxnWzVdLGdbNl0pLmxlbmd0aCgpLHo9cWMuc2V0KGdbOF0sZ1s5XSxnWzEwXSkubGVuZ3RoKCk7MD50aGlzLmRldGVybWluYW50KCkmJihyPS1yKTthLng9Z1sxMl07YS55PWdbMTNdO2Euej1nWzE0XTtRYi5jb3B5KHRoaXMpO2E9MS9yO2c9MS92O3ZhciBFPTEvejtRYi5lbGVtZW50c1swXSo9YTtRYi5lbGVtZW50c1sxXSo9YTtRYi5lbGVtZW50c1syXSo9YTtRYi5lbGVtZW50c1s0XSo9ZztRYi5lbGVtZW50c1s1XSo9ZztRYi5lbGVtZW50c1s2XSo9ZztRYi5lbGVtZW50c1s4XSo9RTtRYi5lbGVtZW50c1s5XSo9CkU7UWIuZWxlbWVudHNbMTBdKj1FO2Muc2V0RnJvbVJvdGF0aW9uTWF0cml4KFFiKTtlLng9cjtlLnk9djtlLno9ejtyZXR1cm4gdGhpc30sbWFrZVBlcnNwZWN0aXZlOmZ1bmN0aW9uKGEsYyxlLGcscix2KXt2b2lkIDA9PT12JiZjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlUGVyc3BlY3RpdmUoKSBoYXMgYmVlbiByZWRlZmluZWQgYW5kIGhhcyBhIG5ldyBzaWduYXR1cmUuIFBsZWFzZSBjaGVjayB0aGUgZG9jcy4iKTt2YXIgej10aGlzLmVsZW1lbnRzO3pbMF09MipyLyhjLWEpO3pbNF09MDt6WzhdPShjK2EpLyhjLWEpO3pbMTJdPTA7elsxXT0wO3pbNV09MipyLyhlLWcpO3pbOV09KGUrZykvKGUtZyk7elsxM109MDt6WzJdPTA7els2XT0wO3pbMTBdPS0odityKS8odi1yKTt6WzE0XT0tMip2KnIvKHYtcik7elszXT0wO3pbN109MDt6WzExXT0tMTt6WzE1XT0wO3JldHVybiB0aGlzfSxtYWtlT3J0aG9ncmFwaGljOmZ1bmN0aW9uKGEsYyxlLGcscix2KXt2YXIgej0KdGhpcy5lbGVtZW50cyxFPTEvKGMtYSksRz0xLyhlLWcpLEo9MS8odi1yKTt6WzBdPTIqRTt6WzRdPTA7els4XT0wO3pbMTJdPS0oKGMrYSkqRSk7elsxXT0wO3pbNV09MipHO3pbOV09MDt6WzEzXT0tKChlK2cpKkcpO3pbMl09MDt6WzZdPTA7elsxMF09LTIqSjt6WzE0XT0tKCh2K3IpKkopO3pbM109MDt6WzddPTA7elsxMV09MDt6WzE1XT0xO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5lbGVtZW50czthPWEuZWxlbWVudHM7Zm9yKHZhciBlPTA7MTY+ZTtlKyspaWYoY1tlXSE9PWFbZV0pcmV0dXJuITE7cmV0dXJuITB9LGZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO2Zvcih2YXIgZT0wOzE2PmU7ZSsrKXRoaXMuZWxlbWVudHNbZV09YVtlK2NdO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWMmJihjPTApO3ZhciBlPXRoaXMuZWxlbWVudHM7YVtjXT1lWzBdOwphW2MrMV09ZVsxXTthW2MrMl09ZVsyXTthW2MrM109ZVszXTthW2MrNF09ZVs0XTthW2MrNV09ZVs1XTthW2MrNl09ZVs2XTthW2MrN109ZVs3XTthW2MrOF09ZVs4XTthW2MrOV09ZVs5XTthW2MrMTBdPWVbMTBdO2FbYysxMV09ZVsxMV07YVtjKzEyXT1lWzEyXTthW2MrMTNdPWVbMTNdO2FbYysxNF09ZVsxNF07YVtjKzE1XT1lWzE1XTtyZXR1cm4gYX19KTt2YXIgY2s9bmV3IHEsZGs9bmV3IGg7dS5Sb3RhdGlvbk9yZGVycz0iWFlaIFlaWCBaWFkgWFpZIFlYWiBaWVgiLnNwbGl0KCIgIik7dS5EZWZhdWx0T3JkZXI9IlhZWiI7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModS5wcm90b3R5cGUse3g6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl94fSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5feD1hO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX19LHk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl95fSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5feT1hO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKX19LAp6OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fen0sc2V0OmZ1bmN0aW9uKGEpe3RoaXMuX3o9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fSxvcmRlcjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29yZGVyfSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5fb3JkZXI9YTt0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCl9fX0pO09iamVjdC5hc3NpZ24odS5wcm90b3R5cGUse2lzRXVsZXI6ITAsc2V0OmZ1bmN0aW9uKGEsYyxlLGcpe3RoaXMuX3g9YTt0aGlzLl95PWM7dGhpcy5fej1lO3RoaXMuX29yZGVyPWd8fHRoaXMuX29yZGVyO3RoaXMuX29uQ2hhbmdlQ2FsbGJhY2soKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5feCx0aGlzLl95LHRoaXMuX3osdGhpcy5fb3JkZXIpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMuX3g9YS5feDt0aGlzLl95PWEuX3k7dGhpcy5fej1hLl96O3RoaXMuX29yZGVyPWEuX29yZGVyOwp0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKCk7cmV0dXJuIHRoaXN9LHNldEZyb21Sb3RhdGlvbk1hdHJpeDpmdW5jdGlvbihhLGMsZSl7dmFyIGc9aGIuY2xhbXAscj1hLmVsZW1lbnRzO2E9clswXTt2YXIgdj1yWzRdLHo9cls4XSxFPXJbMV0sRz1yWzVdLEo9cls5XSxQPXJbMl0sUj1yWzZdO3I9clsxMF07Yz1jfHx0aGlzLl9vcmRlcjsiWFlaIj09PWM/KHRoaXMuX3k9TWF0aC5hc2luKGcoeiwtMSwxKSksLjk5OTk5OTk+TWF0aC5hYnMoeik/KHRoaXMuX3g9TWF0aC5hdGFuMigtSixyKSx0aGlzLl96PU1hdGguYXRhbjIoLXYsYSkpOih0aGlzLl94PU1hdGguYXRhbjIoUixHKSx0aGlzLl96PTApKToiWVhaIj09PWM/KHRoaXMuX3g9TWF0aC5hc2luKC1nKEosLTEsMSkpLC45OTk5OTk5Pk1hdGguYWJzKEopPyh0aGlzLl95PU1hdGguYXRhbjIoeixyKSx0aGlzLl96PU1hdGguYXRhbjIoRSxHKSk6KHRoaXMuX3k9TWF0aC5hdGFuMigtUCxhKSx0aGlzLl96PTApKToiWlhZIj09PWM/KHRoaXMuX3g9Ck1hdGguYXNpbihnKFIsLTEsMSkpLC45OTk5OTk5Pk1hdGguYWJzKFIpPyh0aGlzLl95PU1hdGguYXRhbjIoLVAsciksdGhpcy5fej1NYXRoLmF0YW4yKC12LEcpKToodGhpcy5feT0wLHRoaXMuX3o9TWF0aC5hdGFuMihFLGEpKSk6IlpZWCI9PT1jPyh0aGlzLl95PU1hdGguYXNpbigtZyhQLC0xLDEpKSwuOTk5OTk5OT5NYXRoLmFicyhQKT8odGhpcy5feD1NYXRoLmF0YW4yKFIsciksdGhpcy5fej1NYXRoLmF0YW4yKEUsYSkpOih0aGlzLl94PTAsdGhpcy5fej1NYXRoLmF0YW4yKC12LEcpKSk6IllaWCI9PT1jPyh0aGlzLl96PU1hdGguYXNpbihnKEUsLTEsMSkpLC45OTk5OTk5Pk1hdGguYWJzKEUpPyh0aGlzLl94PU1hdGguYXRhbjIoLUosRyksdGhpcy5feT1NYXRoLmF0YW4yKC1QLGEpKToodGhpcy5feD0wLHRoaXMuX3k9TWF0aC5hdGFuMih6LHIpKSk6IlhaWSI9PT1jPyh0aGlzLl96PU1hdGguYXNpbigtZyh2LC0xLDEpKSwuOTk5OTk5OT5NYXRoLmFicyh2KT8odGhpcy5feD0KTWF0aC5hdGFuMihSLEcpLHRoaXMuX3k9TWF0aC5hdGFuMih6LGEpKToodGhpcy5feD1NYXRoLmF0YW4yKC1KLHIpLHRoaXMuX3k9MCkpOmNvbnNvbGUud2FybigiVEhSRUUuRXVsZXI6IC5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBnaXZlbiB1bnN1cHBvcnRlZCBvcmRlcjogIitjKTt0aGlzLl9vcmRlcj1jOyExIT09ZSYmdGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSxzZXRGcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhLGMsZSl7Y2subWFrZVJvdGF0aW9uRnJvbVF1YXRlcm5pb24oYSk7cmV0dXJuIHRoaXMuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGNrLGMsZSl9LHNldEZyb21WZWN0b3IzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuc2V0KGEueCxhLnksYS56LGN8fHRoaXMuX29yZGVyKX0scmVvcmRlcjpmdW5jdGlvbihhKXtkay5zZXRGcm9tRXVsZXIodGhpcyk7cmV0dXJuIHRoaXMuc2V0RnJvbVF1YXRlcm5pb24oZGssYSl9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5feD09PQp0aGlzLl94JiZhLl95PT09dGhpcy5feSYmYS5fej09PXRoaXMuX3omJmEuX29yZGVyPT09dGhpcy5fb3JkZXJ9LGZyb21BcnJheTpmdW5jdGlvbihhKXt0aGlzLl94PWFbMF07dGhpcy5feT1hWzFdO3RoaXMuX3o9YVsyXTt2b2lkIDAhPT1hWzNdJiYodGhpcy5fb3JkZXI9YVszXSk7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaygpO3JldHVybiB0aGlzfSx0b0FycmF5OmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YSYmKGE9W10pO3ZvaWQgMD09PWMmJihjPTApO2FbY109dGhpcy5feDthW2MrMV09dGhpcy5feTthW2MrMl09dGhpcy5fejthW2MrM109dGhpcy5fb3JkZXI7cmV0dXJuIGF9LHRvVmVjdG9yMzpmdW5jdGlvbihhKXtyZXR1cm4gYT9hLnNldCh0aGlzLl94LHRoaXMuX3ksdGhpcy5feik6bmV3IGsodGhpcy5feCx0aGlzLl95LHRoaXMuX3opfSxfb25DaGFuZ2U6ZnVuY3Rpb24oYSl7dGhpcy5fb25DaGFuZ2VDYWxsYmFjaz1hO3JldHVybiB0aGlzfSxfb25DaGFuZ2VDYWxsYmFjazpmdW5jdGlvbigpe319KTsKT2JqZWN0LmFzc2lnbih4LnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKGEpe3RoaXMubWFzaz0xPDxhfDB9LGVuYWJsZTpmdW5jdGlvbihhKXt0aGlzLm1hc2s9dGhpcy5tYXNrfDE8PGF8MH0sZW5hYmxlQWxsOmZ1bmN0aW9uKCl7dGhpcy5tYXNrPS0xfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dGhpcy5tYXNrXj0xPDxhfDB9LGRpc2FibGU6ZnVuY3Rpb24oYSl7dGhpcy5tYXNrJj1+KDE8PGF8MCl9LGRpc2FibGVBbGw6ZnVuY3Rpb24oKXt0aGlzLm1hc2s9MH0sdGVzdDpmdW5jdGlvbihhKXtyZXR1cm4gMCE9PSh0aGlzLm1hc2smYS5tYXNrKX19KTt2YXIgT2s9MCxlaz1uZXcgayxmZj1uZXcgaCxqZD1uZXcgcSxoaD1uZXcgayxrZz1uZXcgayx6bT1uZXcgayxBbT1uZXcgaCxmaz1uZXcgaygxLDAsMCksZ2s9bmV3IGsoMCwxLDApLGhrPW5ldyBrKDAsMCwxKSxCbT17dHlwZToiYWRkZWQifSxDbT17dHlwZToicmVtb3ZlZCJ9O0EuRGVmYXVsdFVwPW5ldyBrKDAsMSwwKTtBLkRlZmF1bHRNYXRyaXhBdXRvVXBkYXRlPQohMDtBLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpBLGlzT2JqZWN0M0Q6ITAsb25CZWZvcmVSZW5kZXI6ZnVuY3Rpb24oKXt9LG9uQWZ0ZXJSZW5kZXI6ZnVuY3Rpb24oKXt9LGFwcGx5TWF0cml4OmZ1bmN0aW9uKGEpe3RoaXMubWF0cml4QXV0b1VwZGF0ZSYmdGhpcy51cGRhdGVNYXRyaXgoKTt0aGlzLm1hdHJpeC5wcmVtdWx0aXBseShhKTt0aGlzLm1hdHJpeC5kZWNvbXBvc2UodGhpcy5wb3NpdGlvbix0aGlzLnF1YXRlcm5pb24sdGhpcy5zY2FsZSl9LGFwcGx5UXVhdGVybmlvbjpmdW5jdGlvbihhKXt0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoYSk7cmV0dXJuIHRoaXN9LHNldFJvdGF0aW9uRnJvbUF4aXNBbmdsZTpmdW5jdGlvbihhLGMpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tQXhpc0FuZ2xlKGEsYyl9LHNldFJvdGF0aW9uRnJvbUV1bGVyOmZ1bmN0aW9uKGEpe3RoaXMucXVhdGVybmlvbi5zZXRGcm9tRXVsZXIoYSwKITApfSxzZXRSb3RhdGlvbkZyb21NYXRyaXg6ZnVuY3Rpb24oYSl7dGhpcy5xdWF0ZXJuaW9uLnNldEZyb21Sb3RhdGlvbk1hdHJpeChhKX0sc2V0Um90YXRpb25Gcm9tUXVhdGVybmlvbjpmdW5jdGlvbihhKXt0aGlzLnF1YXRlcm5pb24uY29weShhKX0scm90YXRlT25BeGlzOmZ1bmN0aW9uKGEsYyl7ZmYuc2V0RnJvbUF4aXNBbmdsZShhLGMpO3RoaXMucXVhdGVybmlvbi5tdWx0aXBseShmZik7cmV0dXJuIHRoaXN9LHJvdGF0ZU9uV29ybGRBeGlzOmZ1bmN0aW9uKGEsYyl7ZmYuc2V0RnJvbUF4aXNBbmdsZShhLGMpO3RoaXMucXVhdGVybmlvbi5wcmVtdWx0aXBseShmZik7cmV0dXJuIHRoaXN9LHJvdGF0ZVg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucm90YXRlT25BeGlzKGZrLGEpfSxyb3RhdGVZOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJvdGF0ZU9uQXhpcyhnayxhKX0scm90YXRlWjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yb3RhdGVPbkF4aXMoaGssYSl9LHRyYW5zbGF0ZU9uQXhpczpmdW5jdGlvbihhLApjKXtlay5jb3B5KGEpLmFwcGx5UXVhdGVybmlvbih0aGlzLnF1YXRlcm5pb24pO3RoaXMucG9zaXRpb24uYWRkKGVrLm11bHRpcGx5U2NhbGFyKGMpKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlWDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50cmFuc2xhdGVPbkF4aXMoZmssYSl9LHRyYW5zbGF0ZVk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT25BeGlzKGdrLGEpfSx0cmFuc2xhdGVaOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhoayxhKX0sbG9jYWxUb1dvcmxkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKX0sd29ybGRUb0xvY2FsOmZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGx5TWF0cml4NChqZC5nZXRJbnZlcnNlKHRoaXMubWF0cml4V29ybGQpKX0sbG9va0F0OmZ1bmN0aW9uKGEsYyxlKXthLmlzVmVjdG9yMz9oaC5jb3B5KGEpOmhoLnNldChhLGMsZSk7YT10aGlzLnBhcmVudDt0aGlzLnVwZGF0ZVdvcmxkTWF0cml4KCEwLAohMSk7a2cuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpO3RoaXMuaXNDYW1lcmF8fHRoaXMuaXNMaWdodD9qZC5sb29rQXQoa2csaGgsdGhpcy51cCk6amQubG9va0F0KGhoLGtnLHRoaXMudXApO3RoaXMucXVhdGVybmlvbi5zZXRGcm9tUm90YXRpb25NYXRyaXgoamQpO2EmJihqZC5leHRyYWN0Um90YXRpb24oYS5tYXRyaXhXb3JsZCksZmYuc2V0RnJvbVJvdGF0aW9uTWF0cml4KGpkKSx0aGlzLnF1YXRlcm5pb24ucHJlbXVsdGlwbHkoZmYuaW52ZXJzZSgpKSl9LGFkZDpmdW5jdGlvbihhKXtpZigxPGFyZ3VtZW50cy5sZW5ndGgpe2Zvcih2YXIgYz0wO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspdGhpcy5hZGQoYXJndW1lbnRzW2NdKTtyZXR1cm4gdGhpc31pZihhPT09dGhpcylyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0QuYWRkOiBvYmplY3QgY2FuJ3QgYmUgYWRkZWQgYXMgYSBjaGlsZCBvZiBpdHNlbGYuIixhKSx0aGlzO2EmJmEuaXNPYmplY3QzRD8KKG51bGwhPT1hLnBhcmVudCYmYS5wYXJlbnQucmVtb3ZlKGEpLGEucGFyZW50PXRoaXMsdGhpcy5jaGlsZHJlbi5wdXNoKGEpLGEuZGlzcGF0Y2hFdmVudChCbSkpOmNvbnNvbGUuZXJyb3IoIlRIUkVFLk9iamVjdDNELmFkZDogb2JqZWN0IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5PYmplY3QzRC4iLGEpO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oYSl7aWYoMTxhcmd1bWVudHMubGVuZ3RoKXtmb3IodmFyIGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXRoaXMucmVtb3ZlKGFyZ3VtZW50c1tjXSk7cmV0dXJuIHRoaXN9Yz10aGlzLmNoaWxkcmVuLmluZGV4T2YoYSk7LTEhPT1jJiYoYS5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuLnNwbGljZShjLDEpLGEuZGlzcGF0Y2hFdmVudChDbSkpO3JldHVybiB0aGlzfSxhdHRhY2g6ZnVuY3Rpb24oYSl7dGhpcy51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7amQuZ2V0SW52ZXJzZSh0aGlzLm1hdHJpeFdvcmxkKTtudWxsIT09CmEucGFyZW50JiYoYS5wYXJlbnQudXBkYXRlV29ybGRNYXRyaXgoITAsITEpLGpkLm11bHRpcGx5KGEucGFyZW50Lm1hdHJpeFdvcmxkKSk7YS5hcHBseU1hdHJpeChqZCk7YS51cGRhdGVXb3JsZE1hdHJpeCghMSwhMSk7dGhpcy5hZGQoYSk7cmV0dXJuIHRoaXN9LGdldE9iamVjdEJ5SWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgiaWQiLGEpfSxnZXRPYmplY3RCeU5hbWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZ2V0T2JqZWN0QnlQcm9wZXJ0eSgibmFtZSIsYSl9LGdldE9iamVjdEJ5UHJvcGVydHk6ZnVuY3Rpb24oYSxjKXtpZih0aGlzW2FdPT09YylyZXR1cm4gdGhpcztmb3IodmFyIGU9MCxnPXRoaXMuY2hpbGRyZW4ubGVuZ3RoO2U8ZztlKyspe3ZhciByPXRoaXMuY2hpbGRyZW5bZV0uZ2V0T2JqZWN0QnlQcm9wZXJ0eShhLGMpO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHJ9fSxnZXRXb3JsZFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PQphJiYoY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLmdldFdvcmxkUG9zaXRpb24oKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7dGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCk7cmV0dXJuIGEuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpfSxnZXRXb3JsZFF1YXRlcm5pb246ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFF1YXRlcm5pb24oKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgaCk7dGhpcy51cGRhdGVNYXRyaXhXb3JsZCghMCk7dGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2Uoa2csYSx6bSk7cmV0dXJuIGF9LGdldFdvcmxkU2NhbGU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFNjYWxlKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IGspO3RoaXMudXBkYXRlTWF0cml4V29ybGQoITApOwp0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShrZyxBbSxhKTtyZXR1cm4gYX0sZ2V0V29ybGREaXJlY3Rpb246ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZERpcmVjdGlvbigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPW5ldyBrKTt0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTt2YXIgYz10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiBhLnNldChjWzhdLGNbOV0sY1sxMF0pLm5vcm1hbGl6ZSgpfSxyYXljYXN0OmZ1bmN0aW9uKCl7fSx0cmF2ZXJzZTpmdW5jdGlvbihhKXthKHRoaXMpO2Zvcih2YXIgYz10aGlzLmNoaWxkcmVuLGU9MCxnPWMubGVuZ3RoO2U8ZztlKyspY1tlXS50cmF2ZXJzZShhKX0sdHJhdmVyc2VWaXNpYmxlOmZ1bmN0aW9uKGEpe2lmKCExIT09dGhpcy52aXNpYmxlKXthKHRoaXMpO2Zvcih2YXIgYz10aGlzLmNoaWxkcmVuLGU9MCxnPWMubGVuZ3RoO2U8ZztlKyspY1tlXS50cmF2ZXJzZVZpc2libGUoYSl9fSwKdHJhdmVyc2VBbmNlc3RvcnM6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5wYXJlbnQ7bnVsbCE9PWMmJihhKGMpLGMudHJhdmVyc2VBbmNlc3RvcnMoYSkpfSx1cGRhdGVNYXRyaXg6ZnVuY3Rpb24oKXt0aGlzLm1hdHJpeC5jb21wb3NlKHRoaXMucG9zaXRpb24sdGhpcy5xdWF0ZXJuaW9uLHRoaXMuc2NhbGUpO3RoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH0sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24oYSl7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpO2lmKHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZXx8YSludWxsPT09dGhpcy5wYXJlbnQ/dGhpcy5tYXRyaXhXb3JsZC5jb3B5KHRoaXMubWF0cml4KTp0aGlzLm1hdHJpeFdvcmxkLm11bHRpcGx5TWF0cmljZXModGhpcy5wYXJlbnQubWF0cml4V29ybGQsdGhpcy5tYXRyaXgpLHRoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMSxhPSEwO2Zvcih2YXIgYz10aGlzLmNoaWxkcmVuLGU9CjAsZz1jLmxlbmd0aDtlPGc7ZSsrKWNbZV0udXBkYXRlTWF0cml4V29ybGQoYSl9LHVwZGF0ZVdvcmxkTWF0cml4OmZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5wYXJlbnQ7ITA9PT1hJiZudWxsIT09ZSYmZS51cGRhdGVXb3JsZE1hdHJpeCghMCwhMSk7dGhpcy5tYXRyaXhBdXRvVXBkYXRlJiZ0aGlzLnVwZGF0ZU1hdHJpeCgpO251bGw9PT10aGlzLnBhcmVudD90aGlzLm1hdHJpeFdvcmxkLmNvcHkodGhpcy5tYXRyaXgpOnRoaXMubWF0cml4V29ybGQubXVsdGlwbHlNYXRyaWNlcyh0aGlzLnBhcmVudC5tYXRyaXhXb3JsZCx0aGlzLm1hdHJpeCk7aWYoITA9PT1jKWZvcihhPXRoaXMuY2hpbGRyZW4sYz0wLGU9YS5sZW5ndGg7YzxlO2MrKylhW2NdLnVwZGF0ZVdvcmxkTWF0cml4KCExLCEwKX0sdG9KU09OOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoUCxSKXt2b2lkIDA9PT1QW1IudXVpZF0mJihQW1IudXVpZF09Ui50b0pTT04oYSkpO3JldHVybiBSLnV1aWR9ZnVuY3Rpb24gZShQKXt2YXIgUj0KW10sUztmb3IoUyBpbiBQKXt2YXIgVj1QW1NdO2RlbGV0ZSBWLm1ldGFkYXRhO1IucHVzaChWKX1yZXR1cm4gUn12YXIgZz12b2lkIDA9PT1hfHwic3RyaW5nIj09PXR5cGVvZiBhLHI9e307ZyYmKGE9e2dlb21ldHJpZXM6e30sbWF0ZXJpYWxzOnt9LHRleHR1cmVzOnt9LGltYWdlczp7fSxzaGFwZXM6e319LHIubWV0YWRhdGE9e3ZlcnNpb246NC41LHR5cGU6Ik9iamVjdCIsZ2VuZXJhdG9yOiJPYmplY3QzRC50b0pTT04ifSk7dmFyIHY9e307di51dWlkPXRoaXMudXVpZDt2LnR5cGU9dGhpcy50eXBlOyIiIT09dGhpcy5uYW1lJiYodi5uYW1lPXRoaXMubmFtZSk7ITA9PT10aGlzLmNhc3RTaGFkb3cmJih2LmNhc3RTaGFkb3c9ITApOyEwPT09dGhpcy5yZWNlaXZlU2hhZG93JiYodi5yZWNlaXZlU2hhZG93PSEwKTshMT09PXRoaXMudmlzaWJsZSYmKHYudmlzaWJsZT0hMSk7ITE9PT10aGlzLmZydXN0dW1DdWxsZWQmJih2LmZydXN0dW1DdWxsZWQ9ITEpOzAhPT10aGlzLnJlbmRlck9yZGVyJiYKKHYucmVuZGVyT3JkZXI9dGhpcy5yZW5kZXJPcmRlcik7Int9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYodi51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTt2LmxheWVycz10aGlzLmxheWVycy5tYXNrO3YubWF0cml4PXRoaXMubWF0cml4LnRvQXJyYXkoKTshMT09PXRoaXMubWF0cml4QXV0b1VwZGF0ZSYmKHYubWF0cml4QXV0b1VwZGF0ZT0hMSk7dGhpcy5pc01lc2gmJjAhPT10aGlzLmRyYXdNb2RlJiYodi5kcmF3TW9kZT10aGlzLmRyYXdNb2RlKTtpZih0aGlzLmlzTWVzaHx8dGhpcy5pc0xpbmV8fHRoaXMuaXNQb2ludHMpe3YuZ2VvbWV0cnk9YyhhLmdlb21ldHJpZXMsdGhpcy5nZW9tZXRyeSk7dmFyIHo9dGhpcy5nZW9tZXRyeS5wYXJhbWV0ZXJzO2lmKHZvaWQgMCE9PXomJnZvaWQgMCE9PXouc2hhcGVzKWlmKHo9ei5zaGFwZXMsQXJyYXkuaXNBcnJheSh6KSlmb3IodmFyIEU9MCxHPXoubGVuZ3RoO0U8RztFKyspYyhhLnNoYXBlcyx6W0VdKTtlbHNlIGMoYS5zaGFwZXMsCnopfWlmKHZvaWQgMCE9PXRoaXMubWF0ZXJpYWwpaWYoQXJyYXkuaXNBcnJheSh0aGlzLm1hdGVyaWFsKSl7ej1bXTtFPTA7Zm9yKEc9dGhpcy5tYXRlcmlhbC5sZW5ndGg7RTxHO0UrKyl6LnB1c2goYyhhLm1hdGVyaWFscyx0aGlzLm1hdGVyaWFsW0VdKSk7di5tYXRlcmlhbD16fWVsc2Ugdi5tYXRlcmlhbD1jKGEubWF0ZXJpYWxzLHRoaXMubWF0ZXJpYWwpO2lmKDA8dGhpcy5jaGlsZHJlbi5sZW5ndGgpZm9yKHYuY2hpbGRyZW49W10sRT0wO0U8dGhpcy5jaGlsZHJlbi5sZW5ndGg7RSsrKXYuY2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW0VdLnRvSlNPTihhKS5vYmplY3QpO2lmKGcpe2c9ZShhLmdlb21ldHJpZXMpO0U9ZShhLm1hdGVyaWFscyk7Rz1lKGEudGV4dHVyZXMpO3ZhciBKPWUoYS5pbWFnZXMpO3o9ZShhLnNoYXBlcyk7MDxnLmxlbmd0aCYmKHIuZ2VvbWV0cmllcz1nKTswPEUubGVuZ3RoJiYoci5tYXRlcmlhbHM9RSk7MDxHLmxlbmd0aCYmKHIudGV4dHVyZXM9Ryk7CjA8Si5sZW5ndGgmJihyLmltYWdlcz1KKTswPHoubGVuZ3RoJiYoci5zaGFwZXM9eil9ci5vYmplY3Q9djtyZXR1cm4gcn0sY2xvbmU6ZnVuY3Rpb24oYSl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMsYSl9LGNvcHk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0hMCk7dGhpcy5uYW1lPWEubmFtZTt0aGlzLnVwLmNvcHkoYS51cCk7dGhpcy5wb3NpdGlvbi5jb3B5KGEucG9zaXRpb24pO3RoaXMucXVhdGVybmlvbi5jb3B5KGEucXVhdGVybmlvbik7dGhpcy5zY2FsZS5jb3B5KGEuc2NhbGUpO3RoaXMubWF0cml4LmNvcHkoYS5tYXRyaXgpO3RoaXMubWF0cml4V29ybGQuY29weShhLm1hdHJpeFdvcmxkKTt0aGlzLm1hdHJpeEF1dG9VcGRhdGU9YS5tYXRyaXhBdXRvVXBkYXRlO3RoaXMubWF0cml4V29ybGROZWVkc1VwZGF0ZT1hLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU7dGhpcy5sYXllcnMubWFzaz1hLmxheWVycy5tYXNrO3RoaXMudmlzaWJsZT1hLnZpc2libGU7CnRoaXMuY2FzdFNoYWRvdz1hLmNhc3RTaGFkb3c7dGhpcy5yZWNlaXZlU2hhZG93PWEucmVjZWl2ZVNoYWRvdzt0aGlzLmZydXN0dW1DdWxsZWQ9YS5mcnVzdHVtQ3VsbGVkO3RoaXMucmVuZGVyT3JkZXI9YS5yZW5kZXJPcmRlcjt0aGlzLnVzZXJEYXRhPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoYS51c2VyRGF0YSkpO2lmKCEwPT09Yylmb3IoYz0wO2M8YS5jaGlsZHJlbi5sZW5ndGg7YysrKXRoaXMuYWRkKGEuY2hpbGRyZW5bY10uY2xvbmUoKSk7cmV0dXJuIHRoaXN9fSk7eS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6eSxpc1NjZW5lOiEwLGNvcHk6ZnVuY3Rpb24oYSxjKXtBLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhLGMpO251bGwhPT1hLmJhY2tncm91bmQmJih0aGlzLmJhY2tncm91bmQ9YS5iYWNrZ3JvdW5kLmNsb25lKCkpO251bGwhPT1hLmZvZyYmKHRoaXMuZm9nPWEuZm9nLmNsb25lKCkpOwpudWxsIT09YS5vdmVycmlkZU1hdGVyaWFsJiYodGhpcy5vdmVycmlkZU1hdGVyaWFsPWEub3ZlcnJpZGVNYXRlcmlhbC5jbG9uZSgpKTt0aGlzLmF1dG9VcGRhdGU9YS5hdXRvVXBkYXRlO3RoaXMubWF0cml4QXV0b1VwZGF0ZT1hLm1hdHJpeEF1dG9VcGRhdGU7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXt2YXIgYz1BLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLGEpO251bGwhPT10aGlzLmJhY2tncm91bmQmJihjLm9iamVjdC5iYWNrZ3JvdW5kPXRoaXMuYmFja2dyb3VuZC50b0pTT04oYSkpO251bGwhPT10aGlzLmZvZyYmKGMub2JqZWN0LmZvZz10aGlzLmZvZy50b0pTT04oKSk7cmV0dXJuIGN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7dmFyIGtkPVtuZXcgayxuZXcgayxuZXcgayxuZXcgayxuZXcgayxuZXcgayxuZXcgayxuZXcga10sV2M9bmV3IGssZ2Y9bmV3IGssaGY9bmV3IGssamY9bmV3IGssCkZkPW5ldyBrLEdkPW5ldyBrLGZlPW5ldyBrLGxnPW5ldyBrLGloPW5ldyBrLGpoPW5ldyBrLEtkPW5ldyBrO09iamVjdC5hc3NpZ24ody5wcm90b3R5cGUse2lzQm94MzohMCxzZXQ6ZnVuY3Rpb24oYSxjKXt0aGlzLm1pbi5jb3B5KGEpO3RoaXMubWF4LmNvcHkoYyk7cmV0dXJuIHRoaXN9LHNldEZyb21BcnJheTpmdW5jdGlvbihhKXtmb3IodmFyIGM9SW5maW5pdHksZT1JbmZpbml0eSxnPUluZmluaXR5LHI9LUluZmluaXR5LHY9LUluZmluaXR5LHo9LUluZmluaXR5LEU9MCxHPWEubGVuZ3RoO0U8RztFKz0zKXt2YXIgSj1hW0VdLFA9YVtFKzFdLFI9YVtFKzJdO0o8YyYmKGM9Sik7UDxlJiYoZT1QKTtSPGcmJihnPVIpO0o+ciYmKHI9Sik7UD52JiYodj1QKTtSPnomJih6PVIpfXRoaXMubWluLnNldChjLGUsZyk7dGhpcy5tYXguc2V0KHIsdix6KTtyZXR1cm4gdGhpc30sc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZTpmdW5jdGlvbihhKXtmb3IodmFyIGM9SW5maW5pdHksZT1JbmZpbml0eSwKZz1JbmZpbml0eSxyPS1JbmZpbml0eSx2PS1JbmZpbml0eSx6PS1JbmZpbml0eSxFPTAsRz1hLmNvdW50O0U8RztFKyspe3ZhciBKPWEuZ2V0WChFKSxQPWEuZ2V0WShFKSxSPWEuZ2V0WihFKTtKPGMmJihjPUopO1A8ZSYmKGU9UCk7UjxnJiYoZz1SKTtKPnImJihyPUopO1A+diYmKHY9UCk7Uj56JiYoej1SKX10aGlzLm1pbi5zZXQoYyxlLGcpO3RoaXMubWF4LnNldChyLHYseik7cmV0dXJuIHRoaXN9LHNldEZyb21Qb2ludHM6ZnVuY3Rpb24oYSl7dGhpcy5tYWtlRW1wdHkoKTtmb3IodmFyIGM9MCxlPWEubGVuZ3RoO2M8ZTtjKyspdGhpcy5leHBhbmRCeVBvaW50KGFbY10pO3JldHVybiB0aGlzfSxzZXRGcm9tQ2VudGVyQW5kU2l6ZTpmdW5jdGlvbihhLGMpe2M9V2MuY29weShjKS5tdWx0aXBseVNjYWxhciguNSk7dGhpcy5taW4uY29weShhKS5zdWIoYyk7dGhpcy5tYXguY29weShhKS5hZGQoYyk7cmV0dXJuIHRoaXN9LHNldEZyb21PYmplY3Q6ZnVuY3Rpb24oYSl7dGhpcy5tYWtlRW1wdHkoKTsKcmV0dXJuIHRoaXMuZXhwYW5kQnlPYmplY3QoYSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMubWluLmNvcHkoYS5taW4pO3RoaXMubWF4LmNvcHkoYS5tYXgpO3JldHVybiB0aGlzfSxtYWtlRW1wdHk6ZnVuY3Rpb24oKXt0aGlzLm1pbi54PXRoaXMubWluLnk9dGhpcy5taW4uej1JbmZpbml0eTt0aGlzLm1heC54PXRoaXMubWF4Lnk9dGhpcy5tYXguej0tSW5maW5pdHk7cmV0dXJuIHRoaXN9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXgueDx0aGlzLm1pbi54fHx0aGlzLm1heC55PHRoaXMubWluLnl8fHRoaXMubWF4Lno8dGhpcy5taW4uen0sZ2V0Q2VudGVyOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDM6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7cmV0dXJuIHRoaXMuaXNFbXB0eSgpPwphLnNldCgwLDAsMCk6YS5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9LGdldFNpemU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP2Euc2V0KDAsMCwwKTphLnN1YlZlY3RvcnModGhpcy5tYXgsdGhpcy5taW4pfSxleHBhbmRCeVBvaW50OmZ1bmN0aW9uKGEpe3RoaXMubWluLm1pbihhKTt0aGlzLm1heC5tYXgoYSk7cmV0dXJuIHRoaXN9LGV4cGFuZEJ5VmVjdG9yOmZ1bmN0aW9uKGEpe3RoaXMubWluLnN1YihhKTt0aGlzLm1heC5hZGQoYSk7cmV0dXJuIHRoaXN9LGV4cGFuZEJ5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMubWluLmFkZFNjYWxhcigtYSk7dGhpcy5tYXguYWRkU2NhbGFyKGEpO3JldHVybiB0aGlzfSxleHBhbmRCeU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYzthLnVwZGF0ZVdvcmxkTWF0cml4KCExLAohMSk7dmFyIGU9YS5nZW9tZXRyeTtpZih2b2lkIDAhPT1lKWlmKGUuaXNHZW9tZXRyeSl7dmFyIGc9ZS52ZXJ0aWNlcztlPTA7Zm9yKGM9Zy5sZW5ndGg7ZTxjO2UrKylXYy5jb3B5KGdbZV0pLFdjLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKSx0aGlzLmV4cGFuZEJ5UG9pbnQoV2MpfWVsc2UgaWYoZS5pc0J1ZmZlckdlb21ldHJ5JiYoZz1lLmF0dHJpYnV0ZXMucG9zaXRpb24sdm9pZCAwIT09ZykpZm9yKGU9MCxjPWcuY291bnQ7ZTxjO2UrKylXYy5mcm9tQnVmZmVyQXR0cmlidXRlKGcsZSkuYXBwbHlNYXRyaXg0KGEubWF0cml4V29ybGQpLHRoaXMuZXhwYW5kQnlQb2ludChXYyk7YT1hLmNoaWxkcmVuO2U9MDtmb3IoYz1hLmxlbmd0aDtlPGM7ZSsrKXRoaXMuZXhwYW5kQnlPYmplY3QoYVtlXSk7cmV0dXJuIHRoaXN9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEueDx0aGlzLm1pbi54fHxhLng+dGhpcy5tYXgueHx8YS55PHRoaXMubWluLnl8fGEueT50aGlzLm1heC55fHwKYS56PHRoaXMubWluLnp8fGEuej50aGlzLm1heC56PyExOiEwfSxjb250YWluc0JveDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5taW4ueDw9YS5taW4ueCYmYS5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9YS5taW4ueSYmYS5tYXgueTw9dGhpcy5tYXgueSYmdGhpcy5taW4uejw9YS5taW4ueiYmYS5tYXguejw9dGhpcy5tYXguen0sZ2V0UGFyYW1ldGVyOmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmdldFBhcmFtZXRlcigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxjPW5ldyBrKTtyZXR1cm4gYy5zZXQoKGEueC10aGlzLm1pbi54KS8odGhpcy5tYXgueC10aGlzLm1pbi54KSwoYS55LXRoaXMubWluLnkpLyh0aGlzLm1heC55LXRoaXMubWluLnkpLChhLnotdGhpcy5taW4ueikvKHRoaXMubWF4LnotdGhpcy5taW4ueikpfSxpbnRlcnNlY3RzQm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLm1heC54PHRoaXMubWluLnh8fAphLm1pbi54PnRoaXMubWF4Lnh8fGEubWF4Lnk8dGhpcy5taW4ueXx8YS5taW4ueT50aGlzLm1heC55fHxhLm1heC56PHRoaXMubWluLnp8fGEubWluLno+dGhpcy5tYXguej8hMTohMH0saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXt0aGlzLmNsYW1wUG9pbnQoYS5jZW50ZXIsV2MpO3JldHVybiBXYy5kaXN0YW5jZVRvU3F1YXJlZChhLmNlbnRlcik8PWEucmFkaXVzKmEucmFkaXVzfSxpbnRlcnNlY3RzUGxhbmU6ZnVuY3Rpb24oYSl7aWYoMDxhLm5vcm1hbC54KXt2YXIgYz1hLm5vcm1hbC54KnRoaXMubWluLng7dmFyIGU9YS5ub3JtYWwueCp0aGlzLm1heC54fWVsc2UgYz1hLm5vcm1hbC54KnRoaXMubWF4LngsZT1hLm5vcm1hbC54KnRoaXMubWluLng7MDxhLm5vcm1hbC55PyhjKz1hLm5vcm1hbC55KnRoaXMubWluLnksZSs9YS5ub3JtYWwueSp0aGlzLm1heC55KTooYys9YS5ub3JtYWwueSp0aGlzLm1heC55LGUrPWEubm9ybWFsLnkqdGhpcy5taW4ueSk7MDxhLm5vcm1hbC56PwooYys9YS5ub3JtYWwueip0aGlzLm1pbi56LGUrPWEubm9ybWFsLnoqdGhpcy5tYXgueik6KGMrPWEubm9ybWFsLnoqdGhpcy5tYXgueixlKz1hLm5vcm1hbC56KnRoaXMubWluLnopO3JldHVybiBjPD0tYS5jb25zdGFudCYmZT49LWEuY29uc3RhbnR9LGludGVyc2VjdHNUcmlhbmdsZTpmdW5jdGlvbihhKXtpZih0aGlzLmlzRW1wdHkoKSlyZXR1cm4hMTt0aGlzLmdldENlbnRlcihsZyk7aWguc3ViVmVjdG9ycyh0aGlzLm1heCxsZyk7Z2Yuc3ViVmVjdG9ycyhhLmEsbGcpO2hmLnN1YlZlY3RvcnMoYS5iLGxnKTtqZi5zdWJWZWN0b3JzKGEuYyxsZyk7RmQuc3ViVmVjdG9ycyhoZixnZik7R2Quc3ViVmVjdG9ycyhqZixoZik7ZmUuc3ViVmVjdG9ycyhnZixqZik7YT1bMCwtRmQueixGZC55LDAsLUdkLnosR2QueSwwLC1mZS56LGZlLnksRmQueiwwLC1GZC54LEdkLnosMCwtR2QueCxmZS56LDAsLWZlLngsLUZkLnksRmQueCwwLC1HZC55LEdkLngsMCwtZmUueSxmZS54LDBdO2lmKCFDKGEsCmdmLGhmLGpmLGloKSlyZXR1cm4hMTthPVsxLDAsMCwwLDEsMCwwLDAsMV07aWYoIUMoYSxnZixoZixqZixpaCkpcmV0dXJuITE7amguY3Jvc3NWZWN0b3JzKEZkLEdkKTthPVtqaC54LGpoLnksamguel07cmV0dXJuIEMoYSxnZixoZixqZixpaCl9LGNsYW1wUG9pbnQ6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoY29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2xhbXBQb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxjPW5ldyBrKTtyZXR1cm4gYy5jb3B5KGEpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KX0sZGlzdGFuY2VUb1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBXYy5jb3B5KGEpLmNsYW1wKHRoaXMubWluLHRoaXMubWF4KS5zdWIoYSkubGVuZ3RoKCl9LGdldEJvdW5kaW5nU3BoZXJlOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLkJveDM6IC5nZXRCb3VuZGluZ1NwaGVyZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKTt0aGlzLmdldENlbnRlcihhLmNlbnRlcik7CmEucmFkaXVzPS41KnRoaXMuZ2V0U2l6ZShXYykubGVuZ3RoKCk7cmV0dXJuIGF9LGludGVyc2VjdDpmdW5jdGlvbihhKXt0aGlzLm1pbi5tYXgoYS5taW4pO3RoaXMubWF4Lm1pbihhLm1heCk7dGhpcy5pc0VtcHR5KCkmJnRoaXMubWFrZUVtcHR5KCk7cmV0dXJuIHRoaXN9LHVuaW9uOmZ1bmN0aW9uKGEpe3RoaXMubWluLm1pbihhLm1pbik7dGhpcy5tYXgubWF4KGEubWF4KTtyZXR1cm4gdGhpc30sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEpe2lmKHRoaXMuaXNFbXB0eSgpKXJldHVybiB0aGlzO2tkWzBdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KGEpO2tkWzFdLnNldCh0aGlzLm1pbi54LHRoaXMubWluLnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KGEpO2tkWzJdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5taW4ueikuYXBwbHlNYXRyaXg0KGEpO2tkWzNdLnNldCh0aGlzLm1pbi54LHRoaXMubWF4LnksdGhpcy5tYXgueikuYXBwbHlNYXRyaXg0KGEpOwprZFs0XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTtrZFs1XS5zZXQodGhpcy5tYXgueCx0aGlzLm1pbi55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NChhKTtrZFs2XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWluLnopLmFwcGx5TWF0cml4NChhKTtrZFs3XS5zZXQodGhpcy5tYXgueCx0aGlzLm1heC55LHRoaXMubWF4LnopLmFwcGx5TWF0cml4NChhKTt0aGlzLnNldEZyb21Qb2ludHMoa2QpO3JldHVybiB0aGlzfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYSl7dGhpcy5taW4uYWRkKGEpO3RoaXMubWF4LmFkZChhKTtyZXR1cm4gdGhpc30sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLm1pbi5lcXVhbHModGhpcy5taW4pJiZhLm1heC5lcXVhbHModGhpcy5tYXgpfX0pO3ZhciBEbT1uZXcgdztPYmplY3QuYXNzaWduKEYucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSxjKXt0aGlzLmNlbnRlci5jb3B5KGEpO3RoaXMucmFkaXVzPQpjO3JldHVybiB0aGlzfSxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5jZW50ZXI7dm9pZCAwIT09Yz9lLmNvcHkoYyk6RG0uc2V0RnJvbVBvaW50cyhhKS5nZXRDZW50ZXIoZSk7Zm9yKHZhciBnPWM9MCxyPWEubGVuZ3RoO2c8cjtnKyspYz1NYXRoLm1heChjLGUuZGlzdGFuY2VUb1NxdWFyZWQoYVtnXSkpO3RoaXMucmFkaXVzPU1hdGguc3FydChjKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5jZW50ZXIuY29weShhLmNlbnRlcik7dGhpcy5yYWRpdXM9YS5yYWRpdXM7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIDA+PXRoaXMucmFkaXVzfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9dGhpcy5yYWRpdXMqdGhpcy5yYWRpdXN9LGRpc3RhbmNlVG9Qb2ludDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXN0YW5jZVRvKHRoaXMuY2VudGVyKS0KdGhpcy5yYWRpdXN9LGludGVyc2VjdHNTcGhlcmU6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5yYWRpdXMrYS5yYWRpdXM7cmV0dXJuIGEuY2VudGVyLmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuY2VudGVyKTw9YypjfSxpbnRlcnNlY3RzQm94OmZ1bmN0aW9uKGEpe3JldHVybiBhLmludGVyc2VjdHNTcGhlcmUodGhpcyl9LGludGVyc2VjdHNQbGFuZTpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnMoYS5kaXN0YW5jZVRvUG9pbnQodGhpcy5jZW50ZXIpKTw9dGhpcy5yYWRpdXN9LGNsYW1wUG9pbnQ6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmNlbnRlci5kaXN0YW5jZVRvU3F1YXJlZChhKTt2b2lkIDA9PT1jJiYoY29uc29sZS53YXJuKCJUSFJFRS5TcGhlcmU6IC5jbGFtcFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGM9bmV3IGspO2MuY29weShhKTtlPnRoaXMucmFkaXVzKnRoaXMucmFkaXVzJiYoYy5zdWIodGhpcy5jZW50ZXIpLm5vcm1hbGl6ZSgpLGMubXVsdGlwbHlTY2FsYXIodGhpcy5yYWRpdXMpLmFkZCh0aGlzLmNlbnRlcikpOwpyZXR1cm4gY30sZ2V0Qm91bmRpbmdCb3g6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuU3BoZXJlOiAuZ2V0Qm91bmRpbmdCb3goKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgdyk7YS5zZXQodGhpcy5jZW50ZXIsdGhpcy5jZW50ZXIpO2EuZXhwYW5kQnlTY2FsYXIodGhpcy5yYWRpdXMpO3JldHVybiBhfSxhcHBseU1hdHJpeDQ6ZnVuY3Rpb24oYSl7dGhpcy5jZW50ZXIuYXBwbHlNYXRyaXg0KGEpO3RoaXMucmFkaXVzKj1hLmdldE1heFNjYWxlT25BeGlzKCk7cmV0dXJuIHRoaXN9LHRyYW5zbGF0ZTpmdW5jdGlvbihhKXt0aGlzLmNlbnRlci5hZGQoYSk7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5jZW50ZXIuZXF1YWxzKHRoaXMuY2VudGVyKSYmYS5yYWRpdXM9PT10aGlzLnJhZGl1c319KTt2YXIgbGQ9bmV3IGsseWk9bmV3IGssa2g9bmV3IGssSGQ9bmV3IGssemk9bmV3IGssbGg9bmV3IGssQWk9bmV3IGs7Ck9iamVjdC5hc3NpZ24oRC5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGMpe3RoaXMub3JpZ2luLmNvcHkoYSk7dGhpcy5kaXJlY3Rpb24uY29weShjKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5vcmlnaW4uY29weShhLm9yaWdpbik7dGhpcy5kaXJlY3Rpb24uY29weShhLmRpcmVjdGlvbik7cmV0dXJuIHRoaXN9LGF0OmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuYXQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYz1uZXcgayk7cmV0dXJuIGMuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMub3JpZ2luKX0sbG9va0F0OmZ1bmN0aW9uKGEpe3RoaXMuZGlyZWN0aW9uLmNvcHkoYSkuc3ViKHRoaXMub3JpZ2luKS5ub3JtYWxpemUoKTtyZXR1cm4gdGhpc30scmVjYXN0OmZ1bmN0aW9uKGEpe3RoaXMub3JpZ2luLmNvcHkodGhpcy5hdChhLApsZCkpO3JldHVybiB0aGlzfSxjbG9zZXN0UG9pbnRUb1BvaW50OmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuY2xvc2VzdFBvaW50VG9Qb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxjPW5ldyBrKTtjLnN1YlZlY3RvcnMoYSx0aGlzLm9yaWdpbik7YT1jLmRvdCh0aGlzLmRpcmVjdGlvbik7cmV0dXJuIDA+YT9jLmNvcHkodGhpcy5vcmlnaW4pOmMuY29weSh0aGlzLmRpcmVjdGlvbikubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMub3JpZ2luKX0sZGlzdGFuY2VUb1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnNxcnQodGhpcy5kaXN0YW5jZVNxVG9Qb2ludChhKSl9LGRpc3RhbmNlU3FUb1BvaW50OmZ1bmN0aW9uKGEpe3ZhciBjPWxkLnN1YlZlY3RvcnMoYSx0aGlzLm9yaWdpbikuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPmMpcmV0dXJuIHRoaXMub3JpZ2luLmRpc3RhbmNlVG9TcXVhcmVkKGEpO2xkLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGMpLmFkZCh0aGlzLm9yaWdpbik7CnJldHVybiBsZC5kaXN0YW5jZVRvU3F1YXJlZChhKX0sZGlzdGFuY2VTcVRvU2VnbWVudDpmdW5jdGlvbihhLGMsZSxnKXt5aS5jb3B5KGEpLmFkZChjKS5tdWx0aXBseVNjYWxhciguNSk7a2guY29weShjKS5zdWIoYSkubm9ybWFsaXplKCk7SGQuY29weSh0aGlzLm9yaWdpbikuc3ViKHlpKTt2YXIgcj0uNSphLmRpc3RhbmNlVG8oYyksdj0tdGhpcy5kaXJlY3Rpb24uZG90KGtoKSx6PUhkLmRvdCh0aGlzLmRpcmVjdGlvbiksRT0tSGQuZG90KGtoKSxHPUhkLmxlbmd0aFNxKCksSj1NYXRoLmFicygxLXYqdik7aWYoMDxKKXthPXYqRS16O2M9dip6LUU7dmFyIFA9cipKOzA8PWE/Yz49LVA/Yzw9UD8ocj0xL0osYSo9cixjKj1yLHY9YSooYSt2KmMrMip6KStjKih2KmErYysyKkUpK0cpOihjPXIsYT1NYXRoLm1heCgwLC0odipjK3opKSx2PS1hKmErYyooYysyKkUpK0cpOihjPS1yLGE9TWF0aC5tYXgoMCwtKHYqYyt6KSksdj0tYSphK2MqKGMrMipFKStHKTpjPD0tUD8oYT1NYXRoLm1heCgwLAotKC12KnIreikpLGM9MDxhPy1yOk1hdGgubWluKE1hdGgubWF4KC1yLC1FKSxyKSx2PS1hKmErYyooYysyKkUpK0cpOmM8PVA/KGE9MCxjPU1hdGgubWluKE1hdGgubWF4KC1yLC1FKSxyKSx2PWMqKGMrMipFKStHKTooYT1NYXRoLm1heCgwLC0odipyK3opKSxjPTA8YT9yOk1hdGgubWluKE1hdGgubWF4KC1yLC1FKSxyKSx2PS1hKmErYyooYysyKkUpK0cpfWVsc2UgYz0wPHY/LXI6cixhPU1hdGgubWF4KDAsLSh2KmMreikpLHY9LWEqYStjKihjKzIqRSkrRztlJiZlLmNvcHkodGhpcy5kaXJlY3Rpb24pLm11bHRpcGx5U2NhbGFyKGEpLmFkZCh0aGlzLm9yaWdpbik7ZyYmZy5jb3B5KGtoKS5tdWx0aXBseVNjYWxhcihjKS5hZGQoeWkpO3JldHVybiB2fSxpbnRlcnNlY3RTcGhlcmU6ZnVuY3Rpb24oYSxjKXtsZC5zdWJWZWN0b3JzKGEuY2VudGVyLHRoaXMub3JpZ2luKTt2YXIgZT1sZC5kb3QodGhpcy5kaXJlY3Rpb24pLGc9bGQuZG90KGxkKS1lKmU7YT1hLnJhZGl1cyphLnJhZGl1czsKaWYoZz5hKXJldHVybiBudWxsO2E9TWF0aC5zcXJ0KGEtZyk7Zz1lLWE7ZSs9YTtyZXR1cm4gMD5nJiYwPmU/bnVsbDowPmc/dGhpcy5hdChlLGMpOnRoaXMuYXQoZyxjKX0saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kaXN0YW5jZVNxVG9Qb2ludChhLmNlbnRlcik8PWEucmFkaXVzKmEucmFkaXVzfSxkaXN0YW5jZVRvUGxhbmU6ZnVuY3Rpb24oYSl7dmFyIGM9YS5ub3JtYWwuZG90KHRoaXMuZGlyZWN0aW9uKTtpZigwPT09YylyZXR1cm4gMD09PWEuZGlzdGFuY2VUb1BvaW50KHRoaXMub3JpZ2luKT8wOm51bGw7YT0tKHRoaXMub3JpZ2luLmRvdChhLm5vcm1hbCkrYS5jb25zdGFudCkvYztyZXR1cm4gMDw9YT9hOm51bGx9LGludGVyc2VjdFBsYW5lOmZ1bmN0aW9uKGEsYyl7YT10aGlzLmRpc3RhbmNlVG9QbGFuZShhKTtyZXR1cm4gbnVsbD09PWE/bnVsbDp0aGlzLmF0KGEsYyl9LGludGVyc2VjdHNQbGFuZTpmdW5jdGlvbihhKXt2YXIgYz1hLmRpc3RhbmNlVG9Qb2ludCh0aGlzLm9yaWdpbik7CnJldHVybiAwPT09Y3x8MD5hLm5vcm1hbC5kb3QodGhpcy5kaXJlY3Rpb24pKmM/ITA6ITF9LGludGVyc2VjdEJveDpmdW5jdGlvbihhLGMpe3ZhciBlPTEvdGhpcy5kaXJlY3Rpb24ueDt2YXIgZz0xL3RoaXMuZGlyZWN0aW9uLnk7dmFyIHI9MS90aGlzLmRpcmVjdGlvbi56LHY9dGhpcy5vcmlnaW47aWYoMDw9ZSl7dmFyIHo9KGEubWluLngtdi54KSplO2UqPWEubWF4Lngtdi54fWVsc2Ugej0oYS5tYXgueC12LngpKmUsZSo9YS5taW4ueC12Lng7aWYoMDw9Zyl7dmFyIEU9KGEubWluLnktdi55KSpnO2cqPWEubWF4Lnktdi55fWVsc2UgRT0oYS5tYXgueS12LnkpKmcsZyo9YS5taW4ueS12Lnk7aWYoej5nfHxFPmUpcmV0dXJuIG51bGw7aWYoRT56fHx6IT09eil6PUU7aWYoZzxlfHxlIT09ZSllPWc7MDw9cj8oRT0oYS5taW4uei12LnopKnIsYT0oYS5tYXguei12LnopKnIpOihFPShhLm1heC56LXYueikqcixhPShhLm1pbi56LXYueikqcik7aWYoej5hfHxFPmUpcmV0dXJuIG51bGw7CmlmKEU+enx8eiE9PXopej1FO2lmKGE8ZXx8ZSE9PWUpZT1hO3JldHVybiAwPmU/bnVsbDp0aGlzLmF0KDA8PXo/ejplLGMpfSxpbnRlcnNlY3RzQm94OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT09dGhpcy5pbnRlcnNlY3RCb3goYSxsZCl9LGludGVyc2VjdFRyaWFuZ2xlOmZ1bmN0aW9uKGEsYyxlLGcscil7emkuc3ViVmVjdG9ycyhjLGEpO2xoLnN1YlZlY3RvcnMoZSxhKTtBaS5jcm9zc1ZlY3RvcnMoemksbGgpO2M9dGhpcy5kaXJlY3Rpb24uZG90KEFpKTtpZigwPGMpe2lmKGcpcmV0dXJuIG51bGw7Zz0xfWVsc2UgaWYoMD5jKWc9LTEsYz0tYztlbHNlIHJldHVybiBudWxsO0hkLnN1YlZlY3RvcnModGhpcy5vcmlnaW4sYSk7YT1nKnRoaXMuZGlyZWN0aW9uLmRvdChsaC5jcm9zc1ZlY3RvcnMoSGQsbGgpKTtpZigwPmEpcmV0dXJuIG51bGw7ZT1nKnRoaXMuZGlyZWN0aW9uLmRvdCh6aS5jcm9zcyhIZCkpO2lmKDA+ZXx8YStlPmMpcmV0dXJuIG51bGw7YT0tZypIZC5kb3QoQWkpOwpyZXR1cm4gMD5hP251bGw6dGhpcy5hdChhL2Mscil9LGFwcGx5TWF0cml4NDpmdW5jdGlvbihhKXt0aGlzLm9yaWdpbi5hcHBseU1hdHJpeDQoYSk7dGhpcy5kaXJlY3Rpb24udHJhbnNmb3JtRGlyZWN0aW9uKGEpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEub3JpZ2luLmVxdWFscyh0aGlzLm9yaWdpbikmJmEuZGlyZWN0aW9uLmVxdWFscyh0aGlzLmRpcmVjdGlvbil9fSk7dmFyIEljPW5ldyBrLG1kPW5ldyBrLEJpPW5ldyBrLG5kPW5ldyBrLGtmPW5ldyBrLGxmPW5ldyBrLGlrPW5ldyBrLENpPW5ldyBrLERpPW5ldyBrLEVpPW5ldyBrO09iamVjdC5hc3NpZ24oQix7Z2V0Tm9ybWFsOmZ1bmN0aW9uKGEsYyxlLGcpe3ZvaWQgMD09PWcmJihjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuZ2V0Tm9ybWFsKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGc9bmV3IGspO2cuc3ViVmVjdG9ycyhlLGMpO0ljLnN1YlZlY3RvcnMoYSxjKTtnLmNyb3NzKEljKTsKYT1nLmxlbmd0aFNxKCk7cmV0dXJuIDA8YT9nLm11bHRpcGx5U2NhbGFyKDEvTWF0aC5zcXJ0KGEpKTpnLnNldCgwLDAsMCl9LGdldEJhcnljb29yZDpmdW5jdGlvbihhLGMsZSxnLHIpe0ljLnN1YlZlY3RvcnMoZyxjKTttZC5zdWJWZWN0b3JzKGUsYyk7Qmkuc3ViVmVjdG9ycyhhLGMpO2E9SWMuZG90KEljKTtjPUljLmRvdChtZCk7ZT1JYy5kb3QoQmkpO3ZhciB2PW1kLmRvdChtZCk7Zz1tZC5kb3QoQmkpO3ZhciB6PWEqdi1jKmM7dm9pZCAwPT09ciYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRCYXJ5Y29vcmQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIikscj1uZXcgayk7aWYoMD09PXopcmV0dXJuIHIuc2V0KC0yLC0xLC0xKTt6PTEvejt2PSh2KmUtYypnKSp6O2E9KGEqZy1jKmUpKno7cmV0dXJuIHIuc2V0KDEtdi1hLGEsdil9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24oYSxjLGUsZyl7Qi5nZXRCYXJ5Y29vcmQoYSxjLGUsZyxuZCk7cmV0dXJuIDA8PW5kLngmJgowPD1uZC55JiYxPj1uZC54K25kLnl9LGdldFVWOmZ1bmN0aW9uKGEsYyxlLGcscix2LHosRSl7dGhpcy5nZXRCYXJ5Y29vcmQoYSxjLGUsZyxuZCk7RS5zZXQoMCwwKTtFLmFkZFNjYWxlZFZlY3RvcihyLG5kLngpO0UuYWRkU2NhbGVkVmVjdG9yKHYsbmQueSk7RS5hZGRTY2FsZWRWZWN0b3IoeixuZC56KTtyZXR1cm4gRX0saXNGcm9udEZhY2luZzpmdW5jdGlvbihhLGMsZSxnKXtJYy5zdWJWZWN0b3JzKGUsYyk7bWQuc3ViVmVjdG9ycyhhLGMpO3JldHVybiAwPkljLmNyb3NzKG1kKS5kb3QoZyk/ITA6ITF9fSk7T2JqZWN0LmFzc2lnbihCLnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKGEsYyxlKXt0aGlzLmEuY29weShhKTt0aGlzLmIuY29weShjKTt0aGlzLmMuY29weShlKTtyZXR1cm4gdGhpc30sc2V0RnJvbVBvaW50c0FuZEluZGljZXM6ZnVuY3Rpb24oYSxjLGUsZyl7dGhpcy5hLmNvcHkoYVtjXSk7dGhpcy5iLmNvcHkoYVtlXSk7dGhpcy5jLmNvcHkoYVtnXSk7cmV0dXJuIHRoaXN9LApjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLmEuY29weShhLmEpO3RoaXMuYi5jb3B5KGEuYik7dGhpcy5jLmNvcHkoYS5jKTtyZXR1cm4gdGhpc30sZ2V0QXJlYTpmdW5jdGlvbigpe0ljLnN1YlZlY3RvcnModGhpcy5jLHRoaXMuYik7bWQuc3ViVmVjdG9ycyh0aGlzLmEsdGhpcy5iKTtyZXR1cm4uNSpJYy5jcm9zcyhtZCkubGVuZ3RoKCl9LGdldE1pZHBvaW50OmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuZ2V0TWlkcG9pbnQoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7cmV0dXJuIGEuYWRkVmVjdG9ycyh0aGlzLmEsdGhpcy5iKS5hZGQodGhpcy5jKS5tdWx0aXBseVNjYWxhcigxLzMpfSxnZXROb3JtYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIEIuZ2V0Tm9ybWFsKHRoaXMuYSx0aGlzLmIsdGhpcy5jLGEpfSxnZXRQbGFuZTpmdW5jdGlvbihhKXt2b2lkIDA9PT0KYSYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5nZXRQbGFuZSgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPW5ldyBrKTtyZXR1cm4gYS5zZXRGcm9tQ29wbGFuYXJQb2ludHModGhpcy5hLHRoaXMuYix0aGlzLmMpfSxnZXRCYXJ5Y29vcmQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gQi5nZXRCYXJ5Y29vcmQoYSx0aGlzLmEsdGhpcy5iLHRoaXMuYyxjKX0sZ2V0VVY6ZnVuY3Rpb24oYSxjLGUsZyxyKXtyZXR1cm4gQi5nZXRVVihhLHRoaXMuYSx0aGlzLmIsdGhpcy5jLGMsZSxnLHIpfSxjb250YWluc1BvaW50OmZ1bmN0aW9uKGEpe3JldHVybiBCLmNvbnRhaW5zUG9pbnQoYSx0aGlzLmEsdGhpcy5iLHRoaXMuYyl9LGlzRnJvbnRGYWNpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIEIuaXNGcm9udEZhY2luZyh0aGlzLmEsdGhpcy5iLHRoaXMuYyxhKX0saW50ZXJzZWN0c0JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pbnRlcnNlY3RzVHJpYW5nbGUodGhpcyl9LGNsb3Nlc3RQb2ludFRvUG9pbnQ6ZnVuY3Rpb24oYSwKYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5jbG9zZXN0UG9pbnRUb1BvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGM9bmV3IGspO3ZhciBlPXRoaXMuYSxnPXRoaXMuYixyPXRoaXMuYztrZi5zdWJWZWN0b3JzKGcsZSk7bGYuc3ViVmVjdG9ycyhyLGUpO0NpLnN1YlZlY3RvcnMoYSxlKTt2YXIgdj1rZi5kb3QoQ2kpLHo9bGYuZG90KENpKTtpZigwPj12JiYwPj16KXJldHVybiBjLmNvcHkoZSk7RGkuc3ViVmVjdG9ycyhhLGcpO3ZhciBFPWtmLmRvdChEaSksRz1sZi5kb3QoRGkpO2lmKDA8PUUmJkc8PUUpcmV0dXJuIGMuY29weShnKTt2YXIgSj12KkctRSp6O2lmKDA+PUomJjA8PXYmJjA+PUUpcmV0dXJuIGc9di8odi1FKSxjLmNvcHkoZSkuYWRkU2NhbGVkVmVjdG9yKGtmLGcpO0VpLnN1YlZlY3RvcnMoYSxyKTthPWtmLmRvdChFaSk7dmFyIFA9bGYuZG90KEVpKTtpZigwPD1QJiZhPD1QKXJldHVybiBjLmNvcHkocik7dj1hKnotCnYqUDtpZigwPj12JiYwPD16JiYwPj1QKXJldHVybiBKPXovKHotUCksYy5jb3B5KGUpLmFkZFNjYWxlZFZlY3RvcihsZixKKTt6PUUqUC1hKkc7aWYoMD49eiYmMDw9Ry1FJiYwPD1hLVApcmV0dXJuIGlrLnN1YlZlY3RvcnMocixnKSxKPShHLUUpLyhHLUUrKGEtUCkpLGMuY29weShnKS5hZGRTY2FsZWRWZWN0b3IoaWssSik7cj0xLyh6K3YrSik7Zz12KnI7Sio9cjtyZXR1cm4gYy5jb3B5KGUpLmFkZFNjYWxlZFZlY3RvcihrZixnKS5hZGRTY2FsZWRWZWN0b3IobGYsSil9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5hLmVxdWFscyh0aGlzLmEpJiZhLmIuZXF1YWxzKHRoaXMuYikmJmEuYy5lcXVhbHModGhpcy5jKX19KTt2YXIgRW09e2FsaWNlYmx1ZToxNTc5MjM4MyxhbnRpcXVld2hpdGU6MTY0NDQzNzUsYXF1YTo2NTUzNSxhcXVhbWFyaW5lOjgzODg1NjQsYXp1cmU6MTU3OTQxNzUsYmVpZ2U6MTYxMTkyNjAsYmlzcXVlOjE2NzcwMjQ0LGJsYWNrOjAsYmxhbmNoZWRhbG1vbmQ6MTY3NzIwNDUsCmJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSwKZGFya3NsYXRlZ3JleTozMTAwNDk1LGRhcmt0dXJxdW9pc2U6NTI5NDUsZGFya3Zpb2xldDo5Njk5NTM5LGRlZXBwaW5rOjE2NzE2OTQ3LGRlZXBza3libHVlOjQ5MTUxLGRpbWdyYXk6NjkwODI2NSxkaW1ncmV5OjY5MDgyNjUsZG9kZ2VyYmx1ZToyMDAzMTk5LGZpcmVicmljazoxMTY3NDE0NixmbG9yYWx3aGl0ZToxNjc3NTkyMCxmb3Jlc3RncmVlbjoyMjYzODQyLGZ1Y2hzaWE6MTY3MTE5MzUsZ2FpbnNib3JvOjE0NDc0NDYwLGdob3N0d2hpdGU6MTYzMTY2NzEsZ29sZDoxNjc2NjcyMCxnb2xkZW5yb2Q6MTQzMjkxMjAsZ3JheTo4NDIxNTA0LGdyZWVuOjMyNzY4LGdyZWVueWVsbG93OjExNDAzMDU1LGdyZXk6ODQyMTUwNCxob25leWRldzoxNTc5NDE2MCxob3RwaW5rOjE2NzM4NzQwLGluZGlhbnJlZDoxMzQ1ODUyNCxpbmRpZ286NDkxNTMzMCxpdm9yeToxNjc3NzIwMCxraGFraToxNTc4NzY2MCxsYXZlbmRlcjoxNTEzMjQxMCxsYXZlbmRlcmJsdXNoOjE2NzczMzY1LGxhd25ncmVlbjo4MTkwOTc2LApsZW1vbmNoaWZmb246MTY3NzU4ODUsbGlnaHRibHVlOjExMzkzMjU0LGxpZ2h0Y29yYWw6MTU3NjE1MzYsbGlnaHRjeWFuOjE0NzQ1NTk5LGxpZ2h0Z29sZGVucm9keWVsbG93OjE2NDQ4MjEwLGxpZ2h0Z3JheToxMzg4MjMyMyxsaWdodGdyZWVuOjk0OTgyNTYsbGlnaHRncmV5OjEzODgyMzIzLGxpZ2h0cGluazoxNjc1ODQ2NSxsaWdodHNhbG1vbjoxNjc1Mjc2MixsaWdodHNlYWdyZWVuOjIxNDI4OTAsbGlnaHRza3libHVlOjg5MDAzNDYsbGlnaHRzbGF0ZWdyYXk6NzgzMzc1MyxsaWdodHNsYXRlZ3JleTo3ODMzNzUzLGxpZ2h0c3RlZWxibHVlOjExNTg0NzM0LGxpZ2h0eWVsbG93OjE2Nzc3MTg0LGxpbWU6NjUyODAsbGltZWdyZWVuOjMzMjkzMzAsbGluZW46MTY0NDU2NzAsbWFnZW50YToxNjcxMTkzNSxtYXJvb246ODM4ODYwOCxtZWRpdW1hcXVhbWFyaW5lOjY3MzczMjIsbWVkaXVtYmx1ZToyMDUsbWVkaXVtb3JjaGlkOjEyMjExNjY3LG1lZGl1bXB1cnBsZTo5NjYyNjgzLG1lZGl1bXNlYWdyZWVuOjM5NzgwOTcsCm1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNiwKcmViZWNjYXB1cnBsZTo2Njk3ODgxLHJlZDoxNjcxMTY4MCxyb3N5YnJvd246MTIzNTc1MTkscm95YWxibHVlOjQyODY5NDUsc2FkZGxlYnJvd246OTEyNzE4NyxzYWxtb246MTY0MTY4ODIsc2FuZHlicm93bjoxNjAzMjg2NCxzZWFncmVlbjozMDUwMzI3LHNlYXNoZWxsOjE2Nzc0NjM4LHNpZW5uYToxMDUwNjc5NyxzaWx2ZXI6MTI2MzIyNTYsc2t5Ymx1ZTo4OTAwMzMxLHNsYXRlYmx1ZTo2OTcwMDYxLHNsYXRlZ3JheTo3MzcyOTQ0LHNsYXRlZ3JleTo3MzcyOTQ0LHNub3c6MTY3NzU5MzAsc3ByaW5nZ3JlZW46NjU0MDcsc3RlZWxibHVlOjQ2MjA5ODAsdGFuOjEzODA4NzgwLHRlYWw6MzI4OTYsdGhpc3RsZToxNDIwNDg4OCx0b21hdG86MTY3MzcwOTUsdHVycXVvaXNlOjQyNTE4NTYsdmlvbGV0OjE1NjMxMDg2LHdoZWF0OjE2MTEzMzMxLHdoaXRlOjE2Nzc3MjE1LHdoaXRlc21va2U6MTYxMTkyODUseWVsbG93OjE2Nzc2OTYwLHllbGxvd2dyZWVuOjEwMTQ1MDc0fSxsYz17aDowLApzOjAsbDowfSxtaD17aDowLHM6MCxsOjB9O09iamVjdC5hc3NpZ24oSS5wcm90b3R5cGUse2lzQ29sb3I6ITAscjoxLGc6MSxiOjEsc2V0OmZ1bmN0aW9uKGEpe2EmJmEuaXNDb2xvcj90aGlzLmNvcHkoYSk6Im51bWJlciI9PT10eXBlb2YgYT90aGlzLnNldEhleChhKToic3RyaW5nIj09PXR5cGVvZiBhJiZ0aGlzLnNldFN0eWxlKGEpO3JldHVybiB0aGlzfSxzZXRTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy5iPXRoaXMuZz10aGlzLnI9YTtyZXR1cm4gdGhpc30sc2V0SGV4OmZ1bmN0aW9uKGEpe2E9TWF0aC5mbG9vcihhKTt0aGlzLnI9KGE+PjE2JjI1NSkvMjU1O3RoaXMuZz0oYT4+OCYyNTUpLzI1NTt0aGlzLmI9KGEmMjU1KS8yNTU7cmV0dXJuIHRoaXN9LHNldFJHQjpmdW5jdGlvbihhLGMsZSl7dGhpcy5yPWE7dGhpcy5nPWM7dGhpcy5iPWU7cmV0dXJuIHRoaXN9LHNldEhTTDpmdW5jdGlvbihhLGMsZSl7YT1oYi5ldWNsaWRlYW5Nb2R1bG8oYSwxKTtjPWhiLmNsYW1wKGMsMCwKMSk7ZT1oYi5jbGFtcChlLDAsMSk7MD09PWM/dGhpcy5yPXRoaXMuZz10aGlzLmI9ZTooYz0uNT49ZT9lKigxK2MpOmUrYy1lKmMsZT0yKmUtYyx0aGlzLnI9TihlLGMsYSsxLzMpLHRoaXMuZz1OKGUsYyxhKSx0aGlzLmI9TihlLGMsYS0xLzMpKTtyZXR1cm4gdGhpc30sc2V0U3R5bGU6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyh6KXt2b2lkIDAhPT16JiYxPnBhcnNlRmxvYXQoeikmJmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IEFscGhhIGNvbXBvbmVudCBvZiAiK2ErIiB3aWxsIGJlIGlnbm9yZWQuIil9dmFyIGU7aWYoZT0vXigoPzpyZ2J8aHNsKWE/KVwoXHMqKFteXCldKilcKS8uZXhlYyhhKSl7dmFyIGc9ZVsyXTtzd2l0Y2goZVsxXSl7Y2FzZSAicmdiIjpjYXNlICJyZ2JhIjppZihlPS9eKFxkKylccyosXHMqKFxkKylccyosXHMqKFxkKylccyooLFxzKihbMC05XSpcLj9bMC05XSspXHMqKT8kLy5leGVjKGcpKXJldHVybiB0aGlzLnI9TWF0aC5taW4oMjU1LHBhcnNlSW50KGVbMV0sCjEwKSkvMjU1LHRoaXMuZz1NYXRoLm1pbigyNTUscGFyc2VJbnQoZVsyXSwxMCkpLzI1NSx0aGlzLmI9TWF0aC5taW4oMjU1LHBhcnNlSW50KGVbM10sMTApKS8yNTUsYyhlWzVdKSx0aGlzO2lmKGU9L14oXGQrKSVccyosXHMqKFxkKyklXHMqLFxzKihcZCspJVxzKigsXHMqKFswLTldKlwuP1swLTldKylccyopPyQvLmV4ZWMoZykpcmV0dXJuIHRoaXMucj1NYXRoLm1pbigxMDAscGFyc2VJbnQoZVsxXSwxMCkpLzEwMCx0aGlzLmc9TWF0aC5taW4oMTAwLHBhcnNlSW50KGVbMl0sMTApKS8xMDAsdGhpcy5iPU1hdGgubWluKDEwMCxwYXJzZUludChlWzNdLDEwKSkvMTAwLGMoZVs1XSksdGhpczticmVhaztjYXNlICJoc2wiOmNhc2UgImhzbGEiOmlmKGU9L14oWzAtOV0qXC4/WzAtOV0rKVxzKixccyooXGQrKSVccyosXHMqKFxkKyklXHMqKCxccyooWzAtOV0qXC4/WzAtOV0rKVxzKik/JC8uZXhlYyhnKSl7Zz1wYXJzZUZsb2F0KGVbMV0pLzM2MDt2YXIgcj1wYXJzZUludChlWzJdLAoxMCkvMTAwLHY9cGFyc2VJbnQoZVszXSwxMCkvMTAwO2MoZVs1XSk7cmV0dXJuIHRoaXMuc2V0SFNMKGcscix2KX19fWVsc2UgaWYoZT0vXiMoW0EtRmEtZjAtOV0rKSQvLmV4ZWMoYSkpe2U9ZVsxXTtnPWUubGVuZ3RoO2lmKDM9PT1nKXJldHVybiB0aGlzLnI9cGFyc2VJbnQoZS5jaGFyQXQoMCkrZS5jaGFyQXQoMCksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQoZS5jaGFyQXQoMSkrZS5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQoZS5jaGFyQXQoMikrZS5jaGFyQXQoMiksMTYpLzI1NSx0aGlzO2lmKDY9PT1nKXJldHVybiB0aGlzLnI9cGFyc2VJbnQoZS5jaGFyQXQoMCkrZS5jaGFyQXQoMSksMTYpLzI1NSx0aGlzLmc9cGFyc2VJbnQoZS5jaGFyQXQoMikrZS5jaGFyQXQoMyksMTYpLzI1NSx0aGlzLmI9cGFyc2VJbnQoZS5jaGFyQXQoNCkrZS5jaGFyQXQoNSksMTYpLzI1NSx0aGlzfWEmJjA8YS5sZW5ndGgmJihlPUVtW2FdLHZvaWQgMCE9PWU/dGhpcy5zZXRIZXgoZSk6CmNvbnNvbGUud2FybigiVEhSRUUuQ29sb3I6IFVua25vd24gY29sb3IgIithKSk7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMucix0aGlzLmcsdGhpcy5iKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLnI9YS5yO3RoaXMuZz1hLmc7dGhpcy5iPWEuYjtyZXR1cm4gdGhpc30sY29weUdhbW1hVG9MaW5lYXI6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0yKTt0aGlzLnI9TWF0aC5wb3coYS5yLGMpO3RoaXMuZz1NYXRoLnBvdyhhLmcsYyk7dGhpcy5iPU1hdGgucG93KGEuYixjKTtyZXR1cm4gdGhpc30sY29weUxpbmVhclRvR2FtbWE6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0yKTtjPTA8Yz8xL2M6MTt0aGlzLnI9TWF0aC5wb3coYS5yLGMpO3RoaXMuZz1NYXRoLnBvdyhhLmcsYyk7dGhpcy5iPU1hdGgucG93KGEuYixjKTtyZXR1cm4gdGhpc30sY29udmVydEdhbW1hVG9MaW5lYXI6ZnVuY3Rpb24oYSl7dGhpcy5jb3B5R2FtbWFUb0xpbmVhcih0aGlzLAphKTtyZXR1cm4gdGhpc30sY29udmVydExpbmVhclRvR2FtbWE6ZnVuY3Rpb24oYSl7dGhpcy5jb3B5TGluZWFyVG9HYW1tYSh0aGlzLGEpO3JldHVybiB0aGlzfSxjb3B5U1JHQlRvTGluZWFyOmZ1bmN0aW9uKGEpe3RoaXMucj1PKGEucik7dGhpcy5nPU8oYS5nKTt0aGlzLmI9TyhhLmIpO3JldHVybiB0aGlzfSxjb3B5TGluZWFyVG9TUkdCOmZ1bmN0aW9uKGEpe3RoaXMucj1IKGEucik7dGhpcy5nPUgoYS5nKTt0aGlzLmI9SChhLmIpO3JldHVybiB0aGlzfSxjb252ZXJ0U1JHQlRvTGluZWFyOmZ1bmN0aW9uKCl7dGhpcy5jb3B5U1JHQlRvTGluZWFyKHRoaXMpO3JldHVybiB0aGlzfSxjb252ZXJ0TGluZWFyVG9TUkdCOmZ1bmN0aW9uKCl7dGhpcy5jb3B5TGluZWFyVG9TUkdCKHRoaXMpO3JldHVybiB0aGlzfSxnZXRIZXg6ZnVuY3Rpb24oKXtyZXR1cm4gMjU1KnRoaXMucjw8MTZeMjU1KnRoaXMuZzw8OF4yNTUqdGhpcy5iPDwwfSxnZXRIZXhTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4oIjAwMDAwMCIrCnRoaXMuZ2V0SGV4KCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNil9LGdldEhTTDpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoY29uc29sZS53YXJuKCJUSFJFRS5Db2xvcjogLmdldEhTTCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxhPXtoOjAsczowLGw6MH0pO3ZhciBjPXRoaXMucixlPXRoaXMuZyxnPXRoaXMuYixyPU1hdGgubWF4KGMsZSxnKSx2PU1hdGgubWluKGMsZSxnKSx6LEU9KHYrcikvMjtpZih2PT09cil2PXo9MDtlbHNle3ZhciBHPXItdjt2PS41Pj1FP0cvKHIrdik6Ry8oMi1yLXYpO3N3aXRjaChyKXtjYXNlIGM6ej0oZS1nKS9HKyhlPGc/NjowKTticmVhaztjYXNlIGU6ej0oZy1jKS9HKzI7YnJlYWs7Y2FzZSBnOno9KGMtZSkvRys0fXovPTZ9YS5oPXo7YS5zPXY7YS5sPUU7cmV0dXJuIGF9LGdldFN0eWxlOmZ1bmN0aW9uKCl7cmV0dXJuInJnYigiKygyNTUqdGhpcy5yfDApKyIsIisoMjU1KnRoaXMuZ3wwKSsiLCIrKDI1NSp0aGlzLmJ8MCkrIikifSxvZmZzZXRIU0w6ZnVuY3Rpb24oYSwKYyxlKXt0aGlzLmdldEhTTChsYyk7bGMuaCs9YTtsYy5zKz1jO2xjLmwrPWU7dGhpcy5zZXRIU0wobGMuaCxsYy5zLGxjLmwpO3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSl7dGhpcy5yKz1hLnI7dGhpcy5nKz1hLmc7dGhpcy5iKz1hLmI7cmV0dXJuIHRoaXN9LGFkZENvbG9yczpmdW5jdGlvbihhLGMpe3RoaXMucj1hLnIrYy5yO3RoaXMuZz1hLmcrYy5nO3RoaXMuYj1hLmIrYy5iO3JldHVybiB0aGlzfSxhZGRTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy5yKz1hO3RoaXMuZys9YTt0aGlzLmIrPWE7cmV0dXJuIHRoaXN9LHN1YjpmdW5jdGlvbihhKXt0aGlzLnI9TWF0aC5tYXgoMCx0aGlzLnItYS5yKTt0aGlzLmc9TWF0aC5tYXgoMCx0aGlzLmctYS5nKTt0aGlzLmI9TWF0aC5tYXgoMCx0aGlzLmItYS5iKTtyZXR1cm4gdGhpc30sbXVsdGlwbHk6ZnVuY3Rpb24oYSl7dGhpcy5yKj1hLnI7dGhpcy5nKj1hLmc7dGhpcy5iKj1hLmI7cmV0dXJuIHRoaXN9LG11bHRpcGx5U2NhbGFyOmZ1bmN0aW9uKGEpe3RoaXMucio9CmE7dGhpcy5nKj1hO3RoaXMuYio9YTtyZXR1cm4gdGhpc30sbGVycDpmdW5jdGlvbihhLGMpe3RoaXMucis9KGEuci10aGlzLnIpKmM7dGhpcy5nKz0oYS5nLXRoaXMuZykqYzt0aGlzLmIrPShhLmItdGhpcy5iKSpjO3JldHVybiB0aGlzfSxsZXJwSFNMOmZ1bmN0aW9uKGEsYyl7dGhpcy5nZXRIU0wobGMpO2EuZ2V0SFNMKG1oKTthPWhiLmxlcnAobGMuaCxtaC5oLGMpO3ZhciBlPWhiLmxlcnAobGMucyxtaC5zLGMpO2M9aGIubGVycChsYy5sLG1oLmwsYyk7dGhpcy5zZXRIU0woYSxlLGMpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucj09PXRoaXMuciYmYS5nPT09dGhpcy5nJiZhLmI9PT10aGlzLmJ9LGZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO3RoaXMucj1hW2NdO3RoaXMuZz1hW2MrMV07dGhpcy5iPWFbYysyXTtyZXR1cm4gdGhpc30sdG9BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWEmJihhPVtdKTt2b2lkIDA9PT0KYyYmKGM9MCk7YVtjXT10aGlzLnI7YVtjKzFdPXRoaXMuZzthW2MrMl09dGhpcy5iO3JldHVybiBhfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRIZXgoKX19KTtPYmplY3QuYXNzaWduKEsucHJvdG90eXBlLHtjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLmE9YS5hO3RoaXMuYj1hLmI7dGhpcy5jPWEuYzt0aGlzLm5vcm1hbC5jb3B5KGEubm9ybWFsKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXRlcmlhbEluZGV4PWEubWF0ZXJpYWxJbmRleDtmb3IodmFyIGM9MCxlPWEudmVydGV4Tm9ybWFscy5sZW5ndGg7YzxlO2MrKyl0aGlzLnZlcnRleE5vcm1hbHNbY109YS52ZXJ0ZXhOb3JtYWxzW2NdLmNsb25lKCk7Yz0wO2ZvcihlPWEudmVydGV4Q29sb3JzLmxlbmd0aDtjPGU7YysrKXRoaXMudmVydGV4Q29sb3JzW2NdPWEudmVydGV4Q29sb3JzW2NdLmNsb25lKCk7CnJldHVybiB0aGlzfX0pO3ZhciBQaz0wO00ucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOk0saXNNYXRlcmlhbDohMCxvbkJlZm9yZUNvbXBpbGU6ZnVuY3Rpb24oKXt9LHNldFZhbHVlczpmdW5jdGlvbihhKXtpZih2b2lkIDAhPT1hKWZvcih2YXIgYyBpbiBhKXt2YXIgZT1hW2NdO2lmKHZvaWQgMD09PWUpY29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogJyIrYysiJyBwYXJhbWV0ZXIgaXMgdW5kZWZpbmVkLiIpO2Vsc2UgaWYoInNoYWRpbmciPT09Yyljb25zb2xlLndhcm4oIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKSx0aGlzLmZsYXRTaGFkaW5nPTE9PT1lPyEwOiExO2Vsc2V7dmFyIGc9dGhpc1tjXTt2b2lkIDA9PT1nP2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogJyIrYysiJyBpcyBub3QgYSBwcm9wZXJ0eSBvZiB0aGlzIG1hdGVyaWFsLiIpOgpnJiZnLmlzQ29sb3I/Zy5zZXQoZSk6ZyYmZy5pc1ZlY3RvcjMmJmUmJmUuaXNWZWN0b3IzP2cuY29weShlKTp0aGlzW2NdPWV9fX0sdG9KU09OOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMocil7dmFyIHY9W10sejtmb3IoeiBpbiByKXt2YXIgRT1yW3pdO2RlbGV0ZSBFLm1ldGFkYXRhO3YucHVzaChFKX1yZXR1cm4gdn12YXIgZT12b2lkIDA9PT1hfHwic3RyaW5nIj09PXR5cGVvZiBhO2UmJihhPXt0ZXh0dXJlczp7fSxpbWFnZXM6e319KTt2YXIgZz17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ik1hdGVyaWFsIixnZW5lcmF0b3I6Ik1hdGVyaWFsLnRvSlNPTiJ9fTtnLnV1aWQ9dGhpcy51dWlkO2cudHlwZT10aGlzLnR5cGU7IiIhPT10aGlzLm5hbWUmJihnLm5hbWU9dGhpcy5uYW1lKTt0aGlzLmNvbG9yJiZ0aGlzLmNvbG9yLmlzQ29sb3ImJihnLmNvbG9yPXRoaXMuY29sb3IuZ2V0SGV4KCkpO3ZvaWQgMCE9PXRoaXMucm91Z2huZXNzJiYoZy5yb3VnaG5lc3M9dGhpcy5yb3VnaG5lc3MpOwp2b2lkIDAhPT10aGlzLm1ldGFsbmVzcyYmKGcubWV0YWxuZXNzPXRoaXMubWV0YWxuZXNzKTt0aGlzLmVtaXNzaXZlJiZ0aGlzLmVtaXNzaXZlLmlzQ29sb3ImJihnLmVtaXNzaXZlPXRoaXMuZW1pc3NpdmUuZ2V0SGV4KCkpO3RoaXMuZW1pc3NpdmVJbnRlbnNpdHkmJjEhPT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5JiYoZy5lbWlzc2l2ZUludGVuc2l0eT10aGlzLmVtaXNzaXZlSW50ZW5zaXR5KTt0aGlzLnNwZWN1bGFyJiZ0aGlzLnNwZWN1bGFyLmlzQ29sb3ImJihnLnNwZWN1bGFyPXRoaXMuc3BlY3VsYXIuZ2V0SGV4KCkpO3ZvaWQgMCE9PXRoaXMuc2hpbmluZXNzJiYoZy5zaGluaW5lc3M9dGhpcy5zaGluaW5lc3MpO3ZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0JiYoZy5jbGVhcmNvYXQ9dGhpcy5jbGVhcmNvYXQpO3ZvaWQgMCE9PXRoaXMuY2xlYXJjb2F0Um91Z2huZXNzJiYoZy5jbGVhcmNvYXRSb3VnaG5lc3M9dGhpcy5jbGVhcmNvYXRSb3VnaG5lc3MpO3RoaXMuY2xlYXJjb2F0Tm9ybWFsTWFwJiYKdGhpcy5jbGVhcmNvYXROb3JtYWxNYXAuaXNUZXh0dXJlJiYoZy5jbGVhcmNvYXROb3JtYWxNYXA9dGhpcy5jbGVhcmNvYXROb3JtYWxNYXAudG9KU09OKGEpLnV1aWQsZy5jbGVhcmNvYXROb3JtYWxTY2FsZT10aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLnRvQXJyYXkoKSk7dGhpcy5tYXAmJnRoaXMubWFwLmlzVGV4dHVyZSYmKGcubWFwPXRoaXMubWFwLnRvSlNPTihhKS51dWlkKTt0aGlzLm1hdGNhcCYmdGhpcy5tYXRjYXAuaXNUZXh0dXJlJiYoZy5tYXRjYXA9dGhpcy5tYXRjYXAudG9KU09OKGEpLnV1aWQpO3RoaXMuYWxwaGFNYXAmJnRoaXMuYWxwaGFNYXAuaXNUZXh0dXJlJiYoZy5hbHBoYU1hcD10aGlzLmFscGhhTWFwLnRvSlNPTihhKS51dWlkKTt0aGlzLmxpZ2h0TWFwJiZ0aGlzLmxpZ2h0TWFwLmlzVGV4dHVyZSYmKGcubGlnaHRNYXA9dGhpcy5saWdodE1hcC50b0pTT04oYSkudXVpZCk7dGhpcy5hb01hcCYmdGhpcy5hb01hcC5pc1RleHR1cmUmJihnLmFvTWFwPXRoaXMuYW9NYXAudG9KU09OKGEpLnV1aWQsCmcuYW9NYXBJbnRlbnNpdHk9dGhpcy5hb01hcEludGVuc2l0eSk7dGhpcy5idW1wTWFwJiZ0aGlzLmJ1bXBNYXAuaXNUZXh0dXJlJiYoZy5idW1wTWFwPXRoaXMuYnVtcE1hcC50b0pTT04oYSkudXVpZCxnLmJ1bXBTY2FsZT10aGlzLmJ1bXBTY2FsZSk7dGhpcy5ub3JtYWxNYXAmJnRoaXMubm9ybWFsTWFwLmlzVGV4dHVyZSYmKGcubm9ybWFsTWFwPXRoaXMubm9ybWFsTWFwLnRvSlNPTihhKS51dWlkLGcubm9ybWFsTWFwVHlwZT10aGlzLm5vcm1hbE1hcFR5cGUsZy5ub3JtYWxTY2FsZT10aGlzLm5vcm1hbFNjYWxlLnRvQXJyYXkoKSk7dGhpcy5kaXNwbGFjZW1lbnRNYXAmJnRoaXMuZGlzcGxhY2VtZW50TWFwLmlzVGV4dHVyZSYmKGcuZGlzcGxhY2VtZW50TWFwPXRoaXMuZGlzcGxhY2VtZW50TWFwLnRvSlNPTihhKS51dWlkLGcuZGlzcGxhY2VtZW50U2NhbGU9dGhpcy5kaXNwbGFjZW1lbnRTY2FsZSxnLmRpc3BsYWNlbWVudEJpYXM9dGhpcy5kaXNwbGFjZW1lbnRCaWFzKTt0aGlzLnJvdWdobmVzc01hcCYmCnRoaXMucm91Z2huZXNzTWFwLmlzVGV4dHVyZSYmKGcucm91Z2huZXNzTWFwPXRoaXMucm91Z2huZXNzTWFwLnRvSlNPTihhKS51dWlkKTt0aGlzLm1ldGFsbmVzc01hcCYmdGhpcy5tZXRhbG5lc3NNYXAuaXNUZXh0dXJlJiYoZy5tZXRhbG5lc3NNYXA9dGhpcy5tZXRhbG5lc3NNYXAudG9KU09OKGEpLnV1aWQpO3RoaXMuZW1pc3NpdmVNYXAmJnRoaXMuZW1pc3NpdmVNYXAuaXNUZXh0dXJlJiYoZy5lbWlzc2l2ZU1hcD10aGlzLmVtaXNzaXZlTWFwLnRvSlNPTihhKS51dWlkKTt0aGlzLnNwZWN1bGFyTWFwJiZ0aGlzLnNwZWN1bGFyTWFwLmlzVGV4dHVyZSYmKGcuc3BlY3VsYXJNYXA9dGhpcy5zcGVjdWxhck1hcC50b0pTT04oYSkudXVpZCk7dGhpcy5lbnZNYXAmJnRoaXMuZW52TWFwLmlzVGV4dHVyZSYmKGcuZW52TWFwPXRoaXMuZW52TWFwLnRvSlNPTihhKS51dWlkLGcucmVmbGVjdGl2aXR5PXRoaXMucmVmbGVjdGl2aXR5LGcucmVmcmFjdGlvblJhdGlvPXRoaXMucmVmcmFjdGlvblJhdGlvLAp2b2lkIDAhPT10aGlzLmNvbWJpbmUmJihnLmNvbWJpbmU9dGhpcy5jb21iaW5lKSx2b2lkIDAhPT10aGlzLmVudk1hcEludGVuc2l0eSYmKGcuZW52TWFwSW50ZW5zaXR5PXRoaXMuZW52TWFwSW50ZW5zaXR5KSk7dGhpcy5ncmFkaWVudE1hcCYmdGhpcy5ncmFkaWVudE1hcC5pc1RleHR1cmUmJihnLmdyYWRpZW50TWFwPXRoaXMuZ3JhZGllbnRNYXAudG9KU09OKGEpLnV1aWQpO3ZvaWQgMCE9PXRoaXMuc2l6ZSYmKGcuc2l6ZT10aGlzLnNpemUpO3ZvaWQgMCE9PXRoaXMuc2l6ZUF0dGVudWF0aW9uJiYoZy5zaXplQXR0ZW51YXRpb249dGhpcy5zaXplQXR0ZW51YXRpb24pOzEhPT10aGlzLmJsZW5kaW5nJiYoZy5ibGVuZGluZz10aGlzLmJsZW5kaW5nKTshMD09PXRoaXMuZmxhdFNoYWRpbmcmJihnLmZsYXRTaGFkaW5nPXRoaXMuZmxhdFNoYWRpbmcpOzAhPT10aGlzLnNpZGUmJihnLnNpZGU9dGhpcy5zaWRlKTswIT09dGhpcy52ZXJ0ZXhDb2xvcnMmJihnLnZlcnRleENvbG9ycz0KdGhpcy52ZXJ0ZXhDb2xvcnMpOzE+dGhpcy5vcGFjaXR5JiYoZy5vcGFjaXR5PXRoaXMub3BhY2l0eSk7ITA9PT10aGlzLnRyYW5zcGFyZW50JiYoZy50cmFuc3BhcmVudD10aGlzLnRyYW5zcGFyZW50KTtnLmRlcHRoRnVuYz10aGlzLmRlcHRoRnVuYztnLmRlcHRoVGVzdD10aGlzLmRlcHRoVGVzdDtnLmRlcHRoV3JpdGU9dGhpcy5kZXB0aFdyaXRlO2cuc3RlbmNpbFdyaXRlPXRoaXMuc3RlbmNpbFdyaXRlO2cuc3RlbmNpbEZ1bmM9dGhpcy5zdGVuY2lsRnVuYztnLnN0ZW5jaWxSZWY9dGhpcy5zdGVuY2lsUmVmO2cuc3RlbmNpbE1hc2s9dGhpcy5zdGVuY2lsTWFzaztnLnN0ZW5jaWxGYWlsPXRoaXMuc3RlbmNpbEZhaWw7Zy5zdGVuY2lsWkZhaWw9dGhpcy5zdGVuY2lsWkZhaWw7Zy5zdGVuY2lsWlBhc3M9dGhpcy5zdGVuY2lsWlBhc3M7dGhpcy5yb3RhdGlvbiYmMCE9PXRoaXMucm90YXRpb24mJihnLnJvdGF0aW9uPXRoaXMucm90YXRpb24pOyEwPT09dGhpcy5wb2x5Z29uT2Zmc2V0JiYKKGcucG9seWdvbk9mZnNldD0hMCk7MCE9PXRoaXMucG9seWdvbk9mZnNldEZhY3RvciYmKGcucG9seWdvbk9mZnNldEZhY3Rvcj10aGlzLnBvbHlnb25PZmZzZXRGYWN0b3IpOzAhPT10aGlzLnBvbHlnb25PZmZzZXRVbml0cyYmKGcucG9seWdvbk9mZnNldFVuaXRzPXRoaXMucG9seWdvbk9mZnNldFVuaXRzKTt0aGlzLmxpbmV3aWR0aCYmMSE9PXRoaXMubGluZXdpZHRoJiYoZy5saW5ld2lkdGg9dGhpcy5saW5ld2lkdGgpO3ZvaWQgMCE9PXRoaXMuZGFzaFNpemUmJihnLmRhc2hTaXplPXRoaXMuZGFzaFNpemUpO3ZvaWQgMCE9PXRoaXMuZ2FwU2l6ZSYmKGcuZ2FwU2l6ZT10aGlzLmdhcFNpemUpO3ZvaWQgMCE9PXRoaXMuc2NhbGUmJihnLnNjYWxlPXRoaXMuc2NhbGUpOyEwPT09dGhpcy5kaXRoZXJpbmcmJihnLmRpdGhlcmluZz0hMCk7MDx0aGlzLmFscGhhVGVzdCYmKGcuYWxwaGFUZXN0PXRoaXMuYWxwaGFUZXN0KTshMD09PXRoaXMucHJlbXVsdGlwbGllZEFscGhhJiYoZy5wcmVtdWx0aXBsaWVkQWxwaGE9CnRoaXMucHJlbXVsdGlwbGllZEFscGhhKTshMD09PXRoaXMud2lyZWZyYW1lJiYoZy53aXJlZnJhbWU9dGhpcy53aXJlZnJhbWUpOzE8dGhpcy53aXJlZnJhbWVMaW5ld2lkdGgmJihnLndpcmVmcmFtZUxpbmV3aWR0aD10aGlzLndpcmVmcmFtZUxpbmV3aWR0aCk7InJvdW5kIiE9PXRoaXMud2lyZWZyYW1lTGluZWNhcCYmKGcud2lyZWZyYW1lTGluZWNhcD10aGlzLndpcmVmcmFtZUxpbmVjYXApOyJyb3VuZCIhPT10aGlzLndpcmVmcmFtZUxpbmVqb2luJiYoZy53aXJlZnJhbWVMaW5lam9pbj10aGlzLndpcmVmcmFtZUxpbmVqb2luKTshMD09PXRoaXMubW9ycGhUYXJnZXRzJiYoZy5tb3JwaFRhcmdldHM9ITApOyEwPT09dGhpcy5tb3JwaE5vcm1hbHMmJihnLm1vcnBoTm9ybWFscz0hMCk7ITA9PT10aGlzLnNraW5uaW5nJiYoZy5za2lubmluZz0hMCk7ITE9PT10aGlzLnZpc2libGUmJihnLnZpc2libGU9ITEpOyExPT09dGhpcy50b25lTWFwcGVkJiYoZy50b25lTWFwcGVkPSExKTsKInt9IiE9PUpTT04uc3RyaW5naWZ5KHRoaXMudXNlckRhdGEpJiYoZy51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTtlJiYoZT1jKGEudGV4dHVyZXMpLGE9YyhhLmltYWdlcyksMDxlLmxlbmd0aCYmKGcudGV4dHVyZXM9ZSksMDxhLmxlbmd0aCYmKGcuaW1hZ2VzPWEpKTtyZXR1cm4gZ30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPWEubmFtZTt0aGlzLmZvZz1hLmZvZzt0aGlzLmxpZ2h0cz1hLmxpZ2h0czt0aGlzLmJsZW5kaW5nPWEuYmxlbmRpbmc7dGhpcy5zaWRlPWEuc2lkZTt0aGlzLmZsYXRTaGFkaW5nPWEuZmxhdFNoYWRpbmc7dGhpcy52ZXJ0ZXhDb2xvcnM9YS52ZXJ0ZXhDb2xvcnM7dGhpcy5vcGFjaXR5PWEub3BhY2l0eTt0aGlzLnRyYW5zcGFyZW50PWEudHJhbnNwYXJlbnQ7dGhpcy5ibGVuZFNyYz1hLmJsZW5kU3JjO3RoaXMuYmxlbmREc3Q9YS5ibGVuZERzdDt0aGlzLmJsZW5kRXF1YXRpb249CmEuYmxlbmRFcXVhdGlvbjt0aGlzLmJsZW5kU3JjQWxwaGE9YS5ibGVuZFNyY0FscGhhO3RoaXMuYmxlbmREc3RBbHBoYT1hLmJsZW5kRHN0QWxwaGE7dGhpcy5ibGVuZEVxdWF0aW9uQWxwaGE9YS5ibGVuZEVxdWF0aW9uQWxwaGE7dGhpcy5kZXB0aEZ1bmM9YS5kZXB0aEZ1bmM7dGhpcy5kZXB0aFRlc3Q9YS5kZXB0aFRlc3Q7dGhpcy5kZXB0aFdyaXRlPWEuZGVwdGhXcml0ZTt0aGlzLnN0ZW5jaWxXcml0ZT1hLnN0ZW5jaWxXcml0ZTt0aGlzLnN0ZW5jaWxGdW5jPWEuc3RlbmNpbEZ1bmM7dGhpcy5zdGVuY2lsUmVmPWEuc3RlbmNpbFJlZjt0aGlzLnN0ZW5jaWxNYXNrPWEuc3RlbmNpbE1hc2s7dGhpcy5zdGVuY2lsRmFpbD1hLnN0ZW5jaWxGYWlsO3RoaXMuc3RlbmNpbFpGYWlsPWEuc3RlbmNpbFpGYWlsO3RoaXMuc3RlbmNpbFpQYXNzPWEuc3RlbmNpbFpQYXNzO3RoaXMuY29sb3JXcml0ZT1hLmNvbG9yV3JpdGU7dGhpcy5wcmVjaXNpb249YS5wcmVjaXNpb247dGhpcy5wb2x5Z29uT2Zmc2V0PQphLnBvbHlnb25PZmZzZXQ7dGhpcy5wb2x5Z29uT2Zmc2V0RmFjdG9yPWEucG9seWdvbk9mZnNldEZhY3Rvcjt0aGlzLnBvbHlnb25PZmZzZXRVbml0cz1hLnBvbHlnb25PZmZzZXRVbml0czt0aGlzLmRpdGhlcmluZz1hLmRpdGhlcmluZzt0aGlzLmFscGhhVGVzdD1hLmFscGhhVGVzdDt0aGlzLnByZW11bHRpcGxpZWRBbHBoYT1hLnByZW11bHRpcGxpZWRBbHBoYTt0aGlzLnZpc2libGU9YS52aXNpYmxlO3RoaXMudG9uZU1hcHBlZD1hLnRvbmVNYXBwZWQ7dGhpcy51c2VyRGF0YT1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEudXNlckRhdGEpKTt0aGlzLmNsaXBTaGFkb3dzPWEuY2xpcFNoYWRvd3M7dGhpcy5jbGlwSW50ZXJzZWN0aW9uPWEuY2xpcEludGVyc2VjdGlvbjt2YXIgYz1hLmNsaXBwaW5nUGxhbmVzLGU9bnVsbDtpZihudWxsIT09Yyl7dmFyIGc9Yy5sZW5ndGg7ZT1BcnJheShnKTtmb3IodmFyIHI9MDtyIT09ZzsrK3IpZVtyXT1jW3JdLmNsb25lKCl9dGhpcy5jbGlwcGluZ1BsYW5lcz0KZTt0aGlzLnNoYWRvd1NpZGU9YS5zaGFkb3dTaWRlO3JldHVybiB0aGlzfSxkaXNwb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJkaXNwb3NlIn0pfX0pO0wucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTS5wcm90b3R5cGUpO0wucHJvdG90eXBlLmNvbnN0cnVjdG9yPUw7TC5wcm90b3R5cGUuaXNNZXNoQmFzaWNNYXRlcmlhbD0hMDtMLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLm1hcD1hLm1hcDt0aGlzLmxpZ2h0TWFwPWEubGlnaHRNYXA7dGhpcy5saWdodE1hcEludGVuc2l0eT1hLmxpZ2h0TWFwSW50ZW5zaXR5O3RoaXMuYW9NYXA9YS5hb01hcDt0aGlzLmFvTWFwSW50ZW5zaXR5PWEuYW9NYXBJbnRlbnNpdHk7dGhpcy5zcGVjdWxhck1hcD1hLnNwZWN1bGFyTWFwO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLmVudk1hcD1hLmVudk1hcDsKdGhpcy5jb21iaW5lPWEuY29tYmluZTt0aGlzLnJlZmxlY3Rpdml0eT1hLnJlZmxlY3Rpdml0eTt0aGlzLnJlZnJhY3Rpb25SYXRpbz1hLnJlZnJhY3Rpb25SYXRpbzt0aGlzLndpcmVmcmFtZT1hLndpcmVmcmFtZTt0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD1hLndpcmVmcmFtZUxpbmV3aWR0aDt0aGlzLndpcmVmcmFtZUxpbmVjYXA9YS53aXJlZnJhbWVMaW5lY2FwO3RoaXMud2lyZWZyYW1lTGluZWpvaW49YS53aXJlZnJhbWVMaW5lam9pbjt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7cmV0dXJuIHRoaXN9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShRLnByb3RvdHlwZSwibmVlZHNVcGRhdGUiLHtzZXQ6ZnVuY3Rpb24oYSl7ITA9PT1hJiZ0aGlzLnZlcnNpb24rK319KTtPYmplY3QuYXNzaWduKFEucHJvdG90eXBlLHtpc0J1ZmZlckF0dHJpYnV0ZTohMCxvblVwbG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7fSxzZXRBcnJheTpmdW5jdGlvbihhKXtpZihBcnJheS5pc0FycmF5KGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7CnRoaXMuY291bnQ9dm9pZCAwIT09YT9hLmxlbmd0aC90aGlzLml0ZW1TaXplOjA7dGhpcy5hcnJheT1hO3JldHVybiB0aGlzfSxzZXREeW5hbWljOmZ1bmN0aW9uKGEpe3RoaXMuZHluYW1pYz1hO3JldHVybiB0aGlzfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMubmFtZT1hLm5hbWU7dGhpcy5hcnJheT1uZXcgYS5hcnJheS5jb25zdHJ1Y3RvcihhLmFycmF5KTt0aGlzLml0ZW1TaXplPWEuaXRlbVNpemU7dGhpcy5jb3VudD1hLmNvdW50O3RoaXMubm9ybWFsaXplZD1hLm5vcm1hbGl6ZWQ7dGhpcy5keW5hbWljPWEuZHluYW1pYztyZXR1cm4gdGhpc30sY29weUF0OmZ1bmN0aW9uKGEsYyxlKXthKj10aGlzLml0ZW1TaXplO2UqPWMuaXRlbVNpemU7Zm9yKHZhciBnPTAscj10aGlzLml0ZW1TaXplO2c8cjtnKyspdGhpcy5hcnJheVthK2ddPWMuYXJyYXlbZStnXTtyZXR1cm4gdGhpc30sY29weUFycmF5OmZ1bmN0aW9uKGEpe3RoaXMuYXJyYXkuc2V0KGEpO3JldHVybiB0aGlzfSxjb3B5Q29sb3JzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPQp0aGlzLmFycmF5LGU9MCxnPTAscj1hLmxlbmd0aDtnPHI7ZysrKXt2YXIgdj1hW2ddO3ZvaWQgMD09PXYmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5Q29sb3JzQXJyYXkoKTogY29sb3IgaXMgdW5kZWZpbmVkIixnKSx2PW5ldyBJKTtjW2UrK109di5yO2NbZSsrXT12Lmc7Y1tlKytdPXYuYn1yZXR1cm4gdGhpc30sY29weVZlY3RvcjJzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMuYXJyYXksZT0wLGc9MCxyPWEubGVuZ3RoO2c8cjtnKyspe3ZhciB2PWFbZ107dm9pZCAwPT09diYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3Iyc0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGcpLHY9bmV3IGYpO2NbZSsrXT12Lng7Y1tlKytdPXYueX1yZXR1cm4gdGhpc30sY29weVZlY3RvcjNzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMuYXJyYXksZT0wLGc9MCxyPWEubGVuZ3RoO2c8cjtnKyspe3ZhciB2PQphW2ddO3ZvaWQgMD09PXYmJihjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZS5jb3B5VmVjdG9yM3NBcnJheSgpOiB2ZWN0b3IgaXMgdW5kZWZpbmVkIixnKSx2PW5ldyBrKTtjW2UrK109di54O2NbZSsrXT12Lnk7Y1tlKytdPXYuen1yZXR1cm4gdGhpc30sY29weVZlY3RvcjRzQXJyYXk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMuYXJyYXksZT0wLGc9MCxyPWEubGVuZ3RoO2c8cjtnKyspe3ZhciB2PWFbZ107dm9pZCAwPT09diYmKGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyQXR0cmlidXRlLmNvcHlWZWN0b3I0c0FycmF5KCk6IHZlY3RvciBpcyB1bmRlZmluZWQiLGcpLHY9bmV3IHApO2NbZSsrXT12Lng7Y1tlKytdPXYueTtjW2UrK109di56O2NbZSsrXT12Lnd9cmV0dXJuIHRoaXN9LHNldDpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO3RoaXMuYXJyYXkuc2V0KGEsYyk7cmV0dXJuIHRoaXN9LGdldFg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXJyYXlbYSoKdGhpcy5pdGVtU2l6ZV19LHNldFg6ZnVuY3Rpb24oYSxjKXt0aGlzLmFycmF5W2EqdGhpcy5pdGVtU2l6ZV09YztyZXR1cm4gdGhpc30sZ2V0WTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemUrMV19LHNldFk6ZnVuY3Rpb24oYSxjKXt0aGlzLmFycmF5W2EqdGhpcy5pdGVtU2l6ZSsxXT1jO3JldHVybiB0aGlzfSxnZXRaOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFycmF5W2EqdGhpcy5pdGVtU2l6ZSsyXX0sc2V0WjpmdW5jdGlvbihhLGMpe3RoaXMuYXJyYXlbYSp0aGlzLml0ZW1TaXplKzJdPWM7cmV0dXJuIHRoaXN9LGdldFc6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXJyYXlbYSp0aGlzLml0ZW1TaXplKzNdfSxzZXRXOmZ1bmN0aW9uKGEsYyl7dGhpcy5hcnJheVthKnRoaXMuaXRlbVNpemUrM109YztyZXR1cm4gdGhpc30sc2V0WFk6ZnVuY3Rpb24oYSxjLGUpe2EqPXRoaXMuaXRlbVNpemU7dGhpcy5hcnJheVthKzBdPWM7dGhpcy5hcnJheVthKwoxXT1lO3JldHVybiB0aGlzfSxzZXRYWVo6ZnVuY3Rpb24oYSxjLGUsZyl7YSo9dGhpcy5pdGVtU2l6ZTt0aGlzLmFycmF5W2ErMF09Yzt0aGlzLmFycmF5W2ErMV09ZTt0aGlzLmFycmF5W2ErMl09ZztyZXR1cm4gdGhpc30sc2V0WFlaVzpmdW5jdGlvbihhLGMsZSxnLHIpe2EqPXRoaXMuaXRlbVNpemU7dGhpcy5hcnJheVthKzBdPWM7dGhpcy5hcnJheVthKzFdPWU7dGhpcy5hcnJheVthKzJdPWc7dGhpcy5hcnJheVthKzNdPXI7cmV0dXJuIHRoaXN9LG9uVXBsb2FkOmZ1bmN0aW9uKGEpe3RoaXMub25VcGxvYWRDYWxsYmFjaz1hO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3Rvcih0aGlzLmFycmF5LHRoaXMuaXRlbVNpemUpKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57aXRlbVNpemU6dGhpcy5pdGVtU2l6ZSx0eXBlOnRoaXMuYXJyYXkuY29uc3RydWN0b3IubmFtZSxhcnJheTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmFycmF5KSwKbm9ybWFsaXplZDp0aGlzLm5vcm1hbGl6ZWR9fX0pO1QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUS5wcm90b3R5cGUpO1QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQ7WC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShRLnByb3RvdHlwZSk7WC5wcm90b3R5cGUuY29uc3RydWN0b3I9WDthYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShRLnByb3RvdHlwZSk7YWEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWFhO2xhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFEucHJvdG90eXBlKTtsYS5wcm90b3R5cGUuY29uc3RydWN0b3I9bGE7Wi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShRLnByb3RvdHlwZSk7Wi5wcm90b3R5cGUuY29uc3RydWN0b3I9WjtiYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShRLnByb3RvdHlwZSk7YmEucHJvdG90eXBlLmNvbnN0cnVjdG9yPWJhO2VhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFEucHJvdG90eXBlKTtlYS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZWE7Y2EucHJvdG90eXBlPQpPYmplY3QuY3JlYXRlKFEucHJvdG90eXBlKTtjYS5wcm90b3R5cGUuY29uc3RydWN0b3I9Y2E7a2EucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoUS5wcm90b3R5cGUpO2thLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rYTtPYmplY3QuYXNzaWduKFkucHJvdG90eXBlLHtjb21wdXRlR3JvdXBzOmZ1bmN0aW9uKGEpe3ZhciBjPVtdLGU9dm9pZCAwO2E9YS5mYWNlcztmb3IodmFyIGc9MDtnPGEubGVuZ3RoO2crKyl7dmFyIHI9YVtnXTtpZihyLm1hdGVyaWFsSW5kZXghPT1lKXtlPXIubWF0ZXJpYWxJbmRleDt2b2lkIDAhPT12JiYodi5jb3VudD0zKmctdi5zdGFydCxjLnB1c2godikpO3ZhciB2PXtzdGFydDozKmcsbWF0ZXJpYWxJbmRleDplfX19dm9pZCAwIT09diYmKHYuY291bnQ9MypnLXYuc3RhcnQsYy5wdXNoKHYpKTt0aGlzLmdyb3Vwcz1jfSxmcm9tR2VvbWV0cnk6ZnVuY3Rpb24oYSl7dmFyIGM9YS5mYWNlcyxlPWEudmVydGljZXMsZz1hLmZhY2VWZXJ0ZXhVdnMscj1nWzBdJiYKMDxnWzBdLmxlbmd0aCx2PWdbMV0mJjA8Z1sxXS5sZW5ndGgsej1hLm1vcnBoVGFyZ2V0cyxFPXoubGVuZ3RoO2lmKDA8RSl7dmFyIEc9W107Zm9yKHZhciBKPTA7SjxFO0orKylHW0pdPXtuYW1lOnpbSl0ubmFtZSxkYXRhOltdfTt0aGlzLm1vcnBoVGFyZ2V0cy5wb3NpdGlvbj1HfXZhciBQPWEubW9ycGhOb3JtYWxzLFI9UC5sZW5ndGg7aWYoMDxSKXt2YXIgUz1bXTtmb3IoSj0wO0o8UjtKKyspU1tKXT17bmFtZTpQW0pdLm5hbWUsZGF0YTpbXX07dGhpcy5tb3JwaFRhcmdldHMubm9ybWFsPVN9dmFyIFY9YS5za2luSW5kaWNlcyxXPWEuc2tpbldlaWdodHMsaGE9Vi5sZW5ndGg9PT1lLmxlbmd0aCxmYT1XLmxlbmd0aD09PWUubGVuZ3RoOzA8ZS5sZW5ndGgmJjA9PT1jLmxlbmd0aCYmY29uc29sZS5lcnJvcigiVEhSRUUuRGlyZWN0R2VvbWV0cnk6IEZhY2VsZXNzIGdlb21ldHJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIik7Zm9yKEo9MDtKPGMubGVuZ3RoO0orKyl7dmFyIHJhPWNbSl07CnRoaXMudmVydGljZXMucHVzaChlW3JhLmFdLGVbcmEuYl0sZVtyYS5jXSk7dmFyIHBhPXJhLnZlcnRleE5vcm1hbHM7Mz09PXBhLmxlbmd0aD90aGlzLm5vcm1hbHMucHVzaChwYVswXSxwYVsxXSxwYVsyXSk6KHBhPXJhLm5vcm1hbCx0aGlzLm5vcm1hbHMucHVzaChwYSxwYSxwYSkpO3BhPXJhLnZlcnRleENvbG9yczszPT09cGEubGVuZ3RoP3RoaXMuY29sb3JzLnB1c2gocGFbMF0scGFbMV0scGFbMl0pOihwYT1yYS5jb2xvcix0aGlzLmNvbG9ycy5wdXNoKHBhLHBhLHBhKSk7ITA9PT1yJiYocGE9Z1swXVtKXSx2b2lkIDAhPT1wYT90aGlzLnV2cy5wdXNoKHBhWzBdLHBhWzFdLHBhWzJdKTooY29uc29sZS53YXJuKCJUSFJFRS5EaXJlY3RHZW9tZXRyeS5mcm9tR2VvbWV0cnkoKTogVW5kZWZpbmVkIHZlcnRleFV2ICIsSiksdGhpcy51dnMucHVzaChuZXcgZixuZXcgZixuZXcgZikpKTshMD09PXYmJihwYT1nWzFdW0pdLHZvaWQgMCE9PXBhP3RoaXMudXZzMi5wdXNoKHBhWzBdLApwYVsxXSxwYVsyXSk6KGNvbnNvbGUud2FybigiVEhSRUUuRGlyZWN0R2VvbWV0cnkuZnJvbUdlb21ldHJ5KCk6IFVuZGVmaW5lZCB2ZXJ0ZXhVdjIgIixKKSx0aGlzLnV2czIucHVzaChuZXcgZixuZXcgZixuZXcgZikpKTtmb3IocGE9MDtwYTxFO3BhKyspe3ZhciBxYT16W3BhXS52ZXJ0aWNlcztHW3BhXS5kYXRhLnB1c2gocWFbcmEuYV0scWFbcmEuYl0scWFbcmEuY10pfWZvcihwYT0wO3BhPFI7cGErKylxYT1QW3BhXS52ZXJ0ZXhOb3JtYWxzW0pdLFNbcGFdLmRhdGEucHVzaChxYS5hLHFhLmIscWEuYyk7aGEmJnRoaXMuc2tpbkluZGljZXMucHVzaChWW3JhLmFdLFZbcmEuYl0sVltyYS5jXSk7ZmEmJnRoaXMuc2tpbldlaWdodHMucHVzaChXW3JhLmFdLFdbcmEuYl0sV1tyYS5jXSl9dGhpcy5jb21wdXRlR3JvdXBzKGEpO3RoaXMudmVydGljZXNOZWVkVXBkYXRlPWEudmVydGljZXNOZWVkVXBkYXRlO3RoaXMubm9ybWFsc05lZWRVcGRhdGU9YS5ub3JtYWxzTmVlZFVwZGF0ZTsKdGhpcy5jb2xvcnNOZWVkVXBkYXRlPWEuY29sb3JzTmVlZFVwZGF0ZTt0aGlzLnV2c05lZWRVcGRhdGU9YS51dnNOZWVkVXBkYXRlO3RoaXMuZ3JvdXBzTmVlZFVwZGF0ZT1hLmdyb3Vwc05lZWRVcGRhdGU7bnVsbCE9PWEuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWEuYm91bmRpbmdTcGhlcmUuY2xvbmUoKSk7bnVsbCE9PWEuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PWEuYm91bmRpbmdCb3guY2xvbmUoKSk7cmV0dXJuIHRoaXN9fSk7dmFyIFFrPTEsWGM9bmV3IHEsRmk9bmV3IEEsbmg9bmV3IGssZ2U9bmV3IHcsR2k9bmV3IHcsSmM9bmV3IGs7dmEucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnZhLGlzQnVmZmVyR2VvbWV0cnk6ITAsZ2V0SW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRleH0sc2V0SW5kZXg6ZnVuY3Rpb24oYSl7dGhpcy5pbmRleD1BcnJheS5pc0FycmF5KGEpPwpuZXcgKDY1NTM1PEVhKGEpP2VhOlopKGEsMSk6YX0sYWRkQXR0cmlidXRlOmZ1bmN0aW9uKGEsYyxlKXtpZighKGMmJmMuaXNCdWZmZXJBdHRyaWJ1dGV8fGMmJmMuaXNJbnRlcmxlYXZlZEJ1ZmZlckF0dHJpYnV0ZSkpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGRBdHRyaWJ1dGUoKSBub3cgZXhwZWN0cyAoIG5hbWUsIGF0dHJpYnV0ZSApLiIpLHRoaXMuYWRkQXR0cmlidXRlKGEsbmV3IFEoYyxlKSk7aWYoImluZGV4Ij09PWEpcmV0dXJuIGNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnkuYWRkQXR0cmlidXRlOiBVc2UgLnNldEluZGV4KCkgZm9yIGluZGV4IGF0dHJpYnV0ZS4iKSx0aGlzLnNldEluZGV4KGMpLHRoaXM7dGhpcy5hdHRyaWJ1dGVzW2FdPWM7cmV0dXJuIHRoaXN9LGdldEF0dHJpYnV0ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVzW2FdfSxyZW1vdmVBdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7ZGVsZXRlIHRoaXMuYXR0cmlidXRlc1thXTsKcmV0dXJuIHRoaXN9LGFkZEdyb3VwOmZ1bmN0aW9uKGEsYyxlKXt0aGlzLmdyb3Vwcy5wdXNoKHtzdGFydDphLGNvdW50OmMsbWF0ZXJpYWxJbmRleDp2b2lkIDAhPT1lP2U6MH0pfSxjbGVhckdyb3VwczpmdW5jdGlvbigpe3RoaXMuZ3JvdXBzPVtdfSxzZXREcmF3UmFuZ2U6ZnVuY3Rpb24oYSxjKXt0aGlzLmRyYXdSYW5nZS5zdGFydD1hO3RoaXMuZHJhd1JhbmdlLmNvdW50PWN9LGFwcGx5TWF0cml4OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbjt2b2lkIDAhPT1jJiYoYS5hcHBseVRvQnVmZmVyQXR0cmlidXRlKGMpLGMubmVlZHNVcGRhdGU9ITApO3ZhciBlPXRoaXMuYXR0cmlidXRlcy5ub3JtYWw7dm9pZCAwIT09ZSYmKGM9KG5ldyB0KS5nZXROb3JtYWxNYXRyaXgoYSksYy5hcHBseVRvQnVmZmVyQXR0cmlidXRlKGUpLGUubmVlZHNVcGRhdGU9ITApO2U9dGhpcy5hdHRyaWJ1dGVzLnRhbmdlbnQ7dm9pZCAwIT09ZSYmKGM9KG5ldyB0KS5nZXROb3JtYWxNYXRyaXgoYSksCmMuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZShlKSxlLm5lZWRzVXBkYXRlPSEwKTtudWxsIT09dGhpcy5ib3VuZGluZ0JveCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKTtudWxsIT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtyZXR1cm4gdGhpc30scm90YXRlWDpmdW5jdGlvbihhKXtYYy5tYWtlUm90YXRpb25YKGEpO3RoaXMuYXBwbHlNYXRyaXgoWGMpO3JldHVybiB0aGlzfSxyb3RhdGVZOmZ1bmN0aW9uKGEpe1hjLm1ha2VSb3RhdGlvblkoYSk7dGhpcy5hcHBseU1hdHJpeChYYyk7cmV0dXJuIHRoaXN9LHJvdGF0ZVo6ZnVuY3Rpb24oYSl7WGMubWFrZVJvdGF0aW9uWihhKTt0aGlzLmFwcGx5TWF0cml4KFhjKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYyxlKXtYYy5tYWtlVHJhbnNsYXRpb24oYSxjLGUpO3RoaXMuYXBwbHlNYXRyaXgoWGMpO3JldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbihhLGMsZSl7WGMubWFrZVNjYWxlKGEsCmMsZSk7dGhpcy5hcHBseU1hdHJpeChYYyk7cmV0dXJuIHRoaXN9LGxvb2tBdDpmdW5jdGlvbihhKXtGaS5sb29rQXQoYSk7RmkudXBkYXRlTWF0cml4KCk7dGhpcy5hcHBseU1hdHJpeChGaS5tYXRyaXgpO3JldHVybiB0aGlzfSxjZW50ZXI6ZnVuY3Rpb24oKXt0aGlzLmNvbXB1dGVCb3VuZGluZ0JveCgpO3RoaXMuYm91bmRpbmdCb3guZ2V0Q2VudGVyKG5oKS5uZWdhdGUoKTt0aGlzLnRyYW5zbGF0ZShuaC54LG5oLnksbmgueik7cmV0dXJuIHRoaXN9LHNldEZyb21PYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGM9YS5nZW9tZXRyeTtpZihhLmlzUG9pbnRzfHxhLmlzTGluZSl7YT1uZXcgY2EoMypjLnZlcnRpY2VzLmxlbmd0aCwzKTt2YXIgZT1uZXcgY2EoMypjLmNvbG9ycy5sZW5ndGgsMyk7dGhpcy5hZGRBdHRyaWJ1dGUoInBvc2l0aW9uIixhLmNvcHlWZWN0b3Izc0FycmF5KGMudmVydGljZXMpKTt0aGlzLmFkZEF0dHJpYnV0ZSgiY29sb3IiLGUuY29weUNvbG9yc0FycmF5KGMuY29sb3JzKSk7CmMubGluZURpc3RhbmNlcyYmYy5saW5lRGlzdGFuY2VzLmxlbmd0aD09PWMudmVydGljZXMubGVuZ3RoJiYoYT1uZXcgY2EoYy5saW5lRGlzdGFuY2VzLmxlbmd0aCwxKSx0aGlzLmFkZEF0dHJpYnV0ZSgibGluZURpc3RhbmNlIixhLmNvcHlBcnJheShjLmxpbmVEaXN0YW5jZXMpKSk7bnVsbCE9PWMuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWMuYm91bmRpbmdTcGhlcmUuY2xvbmUoKSk7bnVsbCE9PWMuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PWMuYm91bmRpbmdCb3guY2xvbmUoKSl9ZWxzZSBhLmlzTWVzaCYmYyYmYy5pc0dlb21ldHJ5JiZ0aGlzLmZyb21HZW9tZXRyeShjKTtyZXR1cm4gdGhpc30sc2V0RnJvbVBvaW50czpmdW5jdGlvbihhKXtmb3IodmFyIGM9W10sZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKyl7dmFyIHI9YVtlXTtjLnB1c2goci54LHIueSxyLnp8fDApfXRoaXMuYWRkQXR0cmlidXRlKCJwb3NpdGlvbiIsbmV3IGNhKGMsMykpOwpyZXR1cm4gdGhpc30sdXBkYXRlRnJvbU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYz1hLmdlb21ldHJ5O2lmKGEuaXNNZXNoKXt2YXIgZT1jLl9fZGlyZWN0R2VvbWV0cnk7ITA9PT1jLmVsZW1lbnRzTmVlZFVwZGF0ZSYmKGU9dm9pZCAwLGMuZWxlbWVudHNOZWVkVXBkYXRlPSExKTtpZih2b2lkIDA9PT1lKXJldHVybiB0aGlzLmZyb21HZW9tZXRyeShjKTtlLnZlcnRpY2VzTmVlZFVwZGF0ZT1jLnZlcnRpY2VzTmVlZFVwZGF0ZTtlLm5vcm1hbHNOZWVkVXBkYXRlPWMubm9ybWFsc05lZWRVcGRhdGU7ZS5jb2xvcnNOZWVkVXBkYXRlPWMuY29sb3JzTmVlZFVwZGF0ZTtlLnV2c05lZWRVcGRhdGU9Yy51dnNOZWVkVXBkYXRlO2UuZ3JvdXBzTmVlZFVwZGF0ZT1jLmdyb3Vwc05lZWRVcGRhdGU7Yy52ZXJ0aWNlc05lZWRVcGRhdGU9ITE7Yy5ub3JtYWxzTmVlZFVwZGF0ZT0hMTtjLmNvbG9yc05lZWRVcGRhdGU9ITE7Yy51dnNOZWVkVXBkYXRlPSExO2MuZ3JvdXBzTmVlZFVwZGF0ZT0hMTsKYz1lfSEwPT09Yy52ZXJ0aWNlc05lZWRVcGRhdGUmJihlPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbix2b2lkIDAhPT1lJiYoZS5jb3B5VmVjdG9yM3NBcnJheShjLnZlcnRpY2VzKSxlLm5lZWRzVXBkYXRlPSEwKSxjLnZlcnRpY2VzTmVlZFVwZGF0ZT0hMSk7ITA9PT1jLm5vcm1hbHNOZWVkVXBkYXRlJiYoZT10aGlzLmF0dHJpYnV0ZXMubm9ybWFsLHZvaWQgMCE9PWUmJihlLmNvcHlWZWN0b3Izc0FycmF5KGMubm9ybWFscyksZS5uZWVkc1VwZGF0ZT0hMCksYy5ub3JtYWxzTmVlZFVwZGF0ZT0hMSk7ITA9PT1jLmNvbG9yc05lZWRVcGRhdGUmJihlPXRoaXMuYXR0cmlidXRlcy5jb2xvcix2b2lkIDAhPT1lJiYoZS5jb3B5Q29sb3JzQXJyYXkoYy5jb2xvcnMpLGUubmVlZHNVcGRhdGU9ITApLGMuY29sb3JzTmVlZFVwZGF0ZT0hMSk7Yy51dnNOZWVkVXBkYXRlJiYoZT10aGlzLmF0dHJpYnV0ZXMudXYsdm9pZCAwIT09ZSYmKGUuY29weVZlY3RvcjJzQXJyYXkoYy51dnMpLGUubmVlZHNVcGRhdGU9CiEwKSxjLnV2c05lZWRVcGRhdGU9ITEpO2MubGluZURpc3RhbmNlc05lZWRVcGRhdGUmJihlPXRoaXMuYXR0cmlidXRlcy5saW5lRGlzdGFuY2Usdm9pZCAwIT09ZSYmKGUuY29weUFycmF5KGMubGluZURpc3RhbmNlcyksZS5uZWVkc1VwZGF0ZT0hMCksYy5saW5lRGlzdGFuY2VzTmVlZFVwZGF0ZT0hMSk7Yy5ncm91cHNOZWVkVXBkYXRlJiYoYy5jb21wdXRlR3JvdXBzKGEuZ2VvbWV0cnkpLHRoaXMuZ3JvdXBzPWMuZ3JvdXBzLGMuZ3JvdXBzTmVlZFVwZGF0ZT0hMSk7cmV0dXJuIHRoaXN9LGZyb21HZW9tZXRyeTpmdW5jdGlvbihhKXthLl9fZGlyZWN0R2VvbWV0cnk9KG5ldyBZKS5mcm9tR2VvbWV0cnkoYSk7cmV0dXJuIHRoaXMuZnJvbURpcmVjdEdlb21ldHJ5KGEuX19kaXJlY3RHZW9tZXRyeSl9LGZyb21EaXJlY3RHZW9tZXRyeTpmdW5jdGlvbihhKXt0aGlzLmFkZEF0dHJpYnV0ZSgicG9zaXRpb24iLChuZXcgUShuZXcgRmxvYXQzMkFycmF5KDMqYS52ZXJ0aWNlcy5sZW5ndGgpLAozKSkuY29weVZlY3RvcjNzQXJyYXkoYS52ZXJ0aWNlcykpOzA8YS5ub3JtYWxzLmxlbmd0aCYmdGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsKG5ldyBRKG5ldyBGbG9hdDMyQXJyYXkoMyphLm5vcm1hbHMubGVuZ3RoKSwzKSkuY29weVZlY3RvcjNzQXJyYXkoYS5ub3JtYWxzKSk7MDxhLmNvbG9ycy5sZW5ndGgmJnRoaXMuYWRkQXR0cmlidXRlKCJjb2xvciIsKG5ldyBRKG5ldyBGbG9hdDMyQXJyYXkoMyphLmNvbG9ycy5sZW5ndGgpLDMpKS5jb3B5Q29sb3JzQXJyYXkoYS5jb2xvcnMpKTswPGEudXZzLmxlbmd0aCYmdGhpcy5hZGRBdHRyaWJ1dGUoInV2IiwobmV3IFEobmV3IEZsb2F0MzJBcnJheSgyKmEudXZzLmxlbmd0aCksMikpLmNvcHlWZWN0b3Iyc0FycmF5KGEudXZzKSk7MDxhLnV2czIubGVuZ3RoJiZ0aGlzLmFkZEF0dHJpYnV0ZSgidXYyIiwobmV3IFEobmV3IEZsb2F0MzJBcnJheSgyKmEudXZzMi5sZW5ndGgpLDIpKS5jb3B5VmVjdG9yMnNBcnJheShhLnV2czIpKTsKdGhpcy5ncm91cHM9YS5ncm91cHM7Zm9yKHZhciBjIGluIGEubW9ycGhUYXJnZXRzKXtmb3IodmFyIGU9W10sZz1hLm1vcnBoVGFyZ2V0c1tjXSxyPTAsdj1nLmxlbmd0aDtyPHY7cisrKXt2YXIgej1nW3JdLEU9bmV3IGNhKDMqei5kYXRhLmxlbmd0aCwzKTtFLm5hbWU9ei5uYW1lO2UucHVzaChFLmNvcHlWZWN0b3Izc0FycmF5KHouZGF0YSkpfXRoaXMubW9ycGhBdHRyaWJ1dGVzW2NdPWV9MDxhLnNraW5JbmRpY2VzLmxlbmd0aCYmKGM9bmV3IGNhKDQqYS5za2luSW5kaWNlcy5sZW5ndGgsNCksdGhpcy5hZGRBdHRyaWJ1dGUoInNraW5JbmRleCIsYy5jb3B5VmVjdG9yNHNBcnJheShhLnNraW5JbmRpY2VzKSkpOzA8YS5za2luV2VpZ2h0cy5sZW5ndGgmJihjPW5ldyBjYSg0KmEuc2tpbldlaWdodHMubGVuZ3RoLDQpLHRoaXMuYWRkQXR0cmlidXRlKCJza2luV2VpZ2h0IixjLmNvcHlWZWN0b3I0c0FycmF5KGEuc2tpbldlaWdodHMpKSk7bnVsbCE9PWEuYm91bmRpbmdTcGhlcmUmJgoodGhpcy5ib3VuZGluZ1NwaGVyZT1hLmJvdW5kaW5nU3BoZXJlLmNsb25lKCkpO251bGwhPT1hLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1hLmJvdW5kaW5nQm94LmNsb25lKCkpO3JldHVybiB0aGlzfSxjb21wdXRlQm91bmRpbmdCb3g6ZnVuY3Rpb24oKXtudWxsPT09dGhpcy5ib3VuZGluZ0JveCYmKHRoaXMuYm91bmRpbmdCb3g9bmV3IHcpO3ZhciBhPXRoaXMuYXR0cmlidXRlcy5wb3NpdGlvbixjPXRoaXMubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uO2lmKHZvaWQgMCE9PWEpe2lmKHRoaXMuYm91bmRpbmdCb3guc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShhKSxjKXthPTA7Zm9yKHZhciBlPWMubGVuZ3RoO2E8ZTthKyspZ2Uuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShjW2FdKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoZ2UubWluKSx0aGlzLmJvdW5kaW5nQm94LmV4cGFuZEJ5UG9pbnQoZ2UubWF4KX19ZWxzZSB0aGlzLmJvdW5kaW5nQm94Lm1ha2VFbXB0eSgpOwooaXNOYU4odGhpcy5ib3VuZGluZ0JveC5taW4ueCl8fGlzTmFOKHRoaXMuYm91bmRpbmdCb3gubWluLnkpfHxpc05hTih0aGlzLmJvdW5kaW5nQm94Lm1pbi56KSkmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ0JveDogQ29tcHV0ZWQgbWluL21heCBoYXZlIE5hTiB2YWx1ZXMuIFRoZSAicG9zaXRpb24iIGF0dHJpYnV0ZSBpcyBsaWtlbHkgdG8gaGF2ZSBOYU4gdmFsdWVzLicsdGhpcyl9LGNvbXB1dGVCb3VuZGluZ1NwaGVyZTpmdW5jdGlvbigpe251bGw9PT10aGlzLmJvdW5kaW5nU3BoZXJlJiYodGhpcy5ib3VuZGluZ1NwaGVyZT1uZXcgRik7dmFyIGE9dGhpcy5hdHRyaWJ1dGVzLnBvc2l0aW9uLGM9dGhpcy5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb247aWYoYSl7dmFyIGU9dGhpcy5ib3VuZGluZ1NwaGVyZS5jZW50ZXI7Z2Uuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZShhKTtpZihjKWZvcih2YXIgZz0wLHI9Yy5sZW5ndGg7ZzxyO2crKyl7dmFyIHY9CmNbZ107R2kuc2V0RnJvbUJ1ZmZlckF0dHJpYnV0ZSh2KTtnZS5leHBhbmRCeVBvaW50KEdpLm1pbik7Z2UuZXhwYW5kQnlQb2ludChHaS5tYXgpfWdlLmdldENlbnRlcihlKTt2YXIgej0wO2c9MDtmb3Iocj1hLmNvdW50O2c8cjtnKyspSmMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGcpLHo9TWF0aC5tYXgoeixlLmRpc3RhbmNlVG9TcXVhcmVkKEpjKSk7aWYoYylmb3IoZz0wLHI9Yy5sZW5ndGg7ZzxyO2crKyl7dj1jW2ddO2E9MDtmb3IodmFyIEU9di5jb3VudDthPEU7YSsrKUpjLmZyb21CdWZmZXJBdHRyaWJ1dGUodixhKSx6PU1hdGgubWF4KHosZS5kaXN0YW5jZVRvU3F1YXJlZChKYykpfXRoaXMuYm91bmRpbmdTcGhlcmUucmFkaXVzPU1hdGguc3FydCh6KTtpc05hTih0aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cykmJmNvbnNvbGUuZXJyb3IoJ1RIUkVFLkJ1ZmZlckdlb21ldHJ5LmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpOiBDb21wdXRlZCByYWRpdXMgaXMgTmFOLiBUaGUgInBvc2l0aW9uIiBhdHRyaWJ1dGUgaXMgbGlrZWx5IHRvIGhhdmUgTmFOIHZhbHVlcy4nLAp0aGlzKX19LGNvbXB1dGVGYWNlTm9ybWFsczpmdW5jdGlvbigpe30sY29tcHV0ZVZlcnRleE5vcm1hbHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmluZGV4LGM9dGhpcy5hdHRyaWJ1dGVzO2lmKGMucG9zaXRpb24pe3ZhciBlPWMucG9zaXRpb24uYXJyYXk7aWYodm9pZCAwPT09Yy5ub3JtYWwpdGhpcy5hZGRBdHRyaWJ1dGUoIm5vcm1hbCIsbmV3IFEobmV3IEZsb2F0MzJBcnJheShlLmxlbmd0aCksMykpO2Vsc2UgZm9yKHZhciBnPWMubm9ybWFsLmFycmF5LHI9MCx2PWcubGVuZ3RoO3I8djtyKyspZ1tyXT0wO2c9Yy5ub3JtYWwuYXJyYXk7dmFyIHo9bmV3IGssRT1uZXcgayxHPW5ldyBrLEo9bmV3IGssUD1uZXcgaztpZihhKXt2YXIgUj1hLmFycmF5O3I9MDtmb3Iodj1hLmNvdW50O3I8djtyKz0zKXthPTMqUltyKzBdO3ZhciBTPTMqUltyKzFdO3ZhciBWPTMqUltyKzJdO3ouZnJvbUFycmF5KGUsYSk7RS5mcm9tQXJyYXkoZSxTKTtHLmZyb21BcnJheShlLFYpO0ouc3ViVmVjdG9ycyhHLApFKTtQLnN1YlZlY3RvcnMoeixFKTtKLmNyb3NzKFApO2dbYV0rPUoueDtnW2ErMV0rPUoueTtnW2ErMl0rPUouejtnW1NdKz1KLng7Z1tTKzFdKz1KLnk7Z1tTKzJdKz1KLno7Z1tWXSs9Si54O2dbVisxXSs9Si55O2dbVisyXSs9Si56fX1lbHNlIGZvcihyPTAsdj1lLmxlbmd0aDtyPHY7cis9OSl6LmZyb21BcnJheShlLHIpLEUuZnJvbUFycmF5KGUsciszKSxHLmZyb21BcnJheShlLHIrNiksSi5zdWJWZWN0b3JzKEcsRSksUC5zdWJWZWN0b3JzKHosRSksSi5jcm9zcyhQKSxnW3JdPUoueCxnW3IrMV09Si55LGdbcisyXT1KLnosZ1tyKzNdPUoueCxnW3IrNF09Si55LGdbcis1XT1KLnosZ1tyKzZdPUoueCxnW3IrN109Si55LGdbcis4XT1KLno7dGhpcy5ub3JtYWxpemVOb3JtYWxzKCk7Yy5ub3JtYWwubmVlZHNVcGRhdGU9ITB9fSxtZXJnZTpmdW5jdGlvbihhLGMpe2lmKGEmJmEuaXNCdWZmZXJHZW9tZXRyeSl7dm9pZCAwPT09YyYmKGM9MCxjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IE92ZXJ3cml0aW5nIG9yaWdpbmFsIGdlb21ldHJ5LCBzdGFydGluZyBhdCBvZmZzZXRceDNkMC4gVXNlIEJ1ZmZlckdlb21ldHJ5VXRpbHMubWVyZ2VCdWZmZXJHZW9tZXRyaWVzKCkgZm9yIGxvc3NsZXNzIG1lcmdlLiIpKTsKdmFyIGU9dGhpcy5hdHRyaWJ1dGVzLGc7Zm9yKGcgaW4gZSlpZih2b2lkIDAhPT1hLmF0dHJpYnV0ZXNbZ10pe3ZhciByPWVbZ10uYXJyYXksdj1hLmF0dHJpYnV0ZXNbZ10sej12LmFycmF5LEU9di5pdGVtU2l6ZSpjO3Y9TWF0aC5taW4oei5sZW5ndGgsci5sZW5ndGgtRSk7Zm9yKHZhciBHPTA7Rzx2O0crKyxFKyspcltFXT16W0ddfXJldHVybiB0aGlzfWNvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5CdWZmZXJHZW9tZXRyeS4iLGEpfSxub3JtYWxpemVOb3JtYWxzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuYXR0cmlidXRlcy5ub3JtYWwsYz0wLGU9YS5jb3VudDtjPGU7YysrKUpjLng9YS5nZXRYKGMpLEpjLnk9YS5nZXRZKGMpLEpjLno9YS5nZXRaKGMpLEpjLm5vcm1hbGl6ZSgpLGEuc2V0WFlaKGMsSmMueCxKYy55LEpjLnopfSx0b05vbkluZGV4ZWQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKFAsClIpe3ZhciBTPVAuYXJyYXk7UD1QLml0ZW1TaXplO2Zvcih2YXIgVj1uZXcgUy5jb25zdHJ1Y3RvcihSLmxlbmd0aCpQKSxXLGhhPTAsZmE9MCxyYT1SLmxlbmd0aDtmYTxyYTtmYSsrKXtXPVJbZmFdKlA7Zm9yKHZhciBwYT0wO3BhPFA7cGErKylWW2hhKytdPVNbVysrXX1yZXR1cm4gbmV3IFEoVixQKX1pZihudWxsPT09dGhpcy5pbmRleClyZXR1cm4gY29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeS50b05vbkluZGV4ZWQoKTogR2VvbWV0cnkgaXMgYWxyZWFkeSBub24taW5kZXhlZC4iKSx0aGlzO3ZhciBjPW5ldyB2YSxlPXRoaXMuaW5kZXguYXJyYXksZz10aGlzLmF0dHJpYnV0ZXMscjtmb3IociBpbiBnKXt2YXIgdj1nW3JdO3Y9YSh2LGUpO2MuYWRkQXR0cmlidXRlKHIsdil9dmFyIHo9dGhpcy5tb3JwaEF0dHJpYnV0ZXM7Zm9yKHIgaW4geil7dmFyIEU9W10sRz16W3JdO2c9MDtmb3IodmFyIEo9Ry5sZW5ndGg7ZzxKO2crKyl2PUdbZ10sdj1hKHYsZSksRS5wdXNoKHYpOwpjLm1vcnBoQXR0cmlidXRlc1tyXT1FfWU9dGhpcy5ncm91cHM7Zz0wO2ZvcihyPWUubGVuZ3RoO2c8cjtnKyspdj1lW2ddLGMuYWRkR3JvdXAodi5zdGFydCx2LmNvdW50LHYubWF0ZXJpYWxJbmRleCk7cmV0dXJuIGN9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPXttZXRhZGF0YTp7dmVyc2lvbjo0LjUsdHlwZToiQnVmZmVyR2VvbWV0cnkiLGdlbmVyYXRvcjoiQnVmZmVyR2VvbWV0cnkudG9KU09OIn19O2EudXVpZD10aGlzLnV1aWQ7YS50eXBlPXRoaXMudHlwZTsiIiE9PXRoaXMubmFtZSYmKGEubmFtZT10aGlzLm5hbWUpOzA8T2JqZWN0LmtleXModGhpcy51c2VyRGF0YSkubGVuZ3RoJiYoYS51c2VyRGF0YT10aGlzLnVzZXJEYXRhKTtpZih2b2lkIDAhPT10aGlzLnBhcmFtZXRlcnMpe3ZhciBjPXRoaXMucGFyYW1ldGVycztmb3IoSiBpbiBjKXZvaWQgMCE9PWNbSl0mJihhW0pdPWNbSl0pO3JldHVybiBhfWEuZGF0YT17YXR0cmlidXRlczp7fX07Yz10aGlzLmluZGV4O251bGwhPT0KYyYmKGEuZGF0YS5pbmRleD17dHlwZTpjLmFycmF5LmNvbnN0cnVjdG9yLm5hbWUsYXJyYXk6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5hcnJheSl9KTt2YXIgZT10aGlzLmF0dHJpYnV0ZXM7Zm9yKEogaW4gZSl7Yz1lW0pdO3ZhciBnPWMudG9KU09OKCk7IiIhPT1jLm5hbWUmJihnLm5hbWU9Yy5uYW1lKTthLmRhdGEuYXR0cmlidXRlc1tKXT1nfWU9e307dmFyIHI9ITE7Zm9yKEogaW4gdGhpcy5tb3JwaEF0dHJpYnV0ZXMpe2Zvcih2YXIgdj10aGlzLm1vcnBoQXR0cmlidXRlc1tKXSx6PVtdLEU9MCxHPXYubGVuZ3RoO0U8RztFKyspYz12W0VdLGc9Yy50b0pTT04oKSwiIiE9PWMubmFtZSYmKGcubmFtZT1jLm5hbWUpLHoucHVzaChnKTswPHoubGVuZ3RoJiYoZVtKXT16LHI9ITApfXImJihhLmRhdGEubW9ycGhBdHRyaWJ1dGVzPWUpO3ZhciBKPXRoaXMuZ3JvdXBzOzA8Si5sZW5ndGgmJihhLmRhdGEuZ3JvdXBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoSikpKTtKPQp0aGlzLmJvdW5kaW5nU3BoZXJlO251bGwhPT1KJiYoYS5kYXRhLmJvdW5kaW5nU3BoZXJlPXtjZW50ZXI6Si5jZW50ZXIudG9BcnJheSgpLHJhZGl1czpKLnJhZGl1c30pO3JldHVybiBhfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdmEpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dmFyIGM7dGhpcy5pbmRleD1udWxsO3RoaXMuYXR0cmlidXRlcz17fTt0aGlzLm1vcnBoQXR0cmlidXRlcz17fTt0aGlzLmdyb3Vwcz1bXTt0aGlzLmJvdW5kaW5nU3BoZXJlPXRoaXMuYm91bmRpbmdCb3g9bnVsbDt0aGlzLm5hbWU9YS5uYW1lO3ZhciBlPWEuaW5kZXg7bnVsbCE9PWUmJnRoaXMuc2V0SW5kZXgoZS5jbG9uZSgpKTtlPWEuYXR0cmlidXRlcztmb3IoeiBpbiBlKXRoaXMuYWRkQXR0cmlidXRlKHosZVt6XS5jbG9uZSgpKTt2YXIgZz1hLm1vcnBoQXR0cmlidXRlcztmb3IoeiBpbiBnKXt2YXIgcj1bXSx2PWdbel07ZT0wO2ZvcihjPXYubGVuZ3RoO2U8YztlKyspci5wdXNoKHZbZV0uY2xvbmUoKSk7CnRoaXMubW9ycGhBdHRyaWJ1dGVzW3pdPXJ9dmFyIHo9YS5ncm91cHM7ZT0wO2ZvcihjPXoubGVuZ3RoO2U8YztlKyspZz16W2VdLHRoaXMuYWRkR3JvdXAoZy5zdGFydCxnLmNvdW50LGcubWF0ZXJpYWxJbmRleCk7ej1hLmJvdW5kaW5nQm94O251bGwhPT16JiYodGhpcy5ib3VuZGluZ0JveD16LmNsb25lKCkpO3o9YS5ib3VuZGluZ1NwaGVyZTtudWxsIT09eiYmKHRoaXMuYm91bmRpbmdTcGhlcmU9ei5jbG9uZSgpKTt0aGlzLmRyYXdSYW5nZS5zdGFydD1hLmRyYXdSYW5nZS5zdGFydDt0aGlzLmRyYXdSYW5nZS5jb3VudD1hLmRyYXdSYW5nZS5jb3VudDt0aGlzLnVzZXJEYXRhPWEudXNlckRhdGE7cmV0dXJuIHRoaXN9LGRpc3Bvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoe3R5cGU6ImRpc3Bvc2UifSl9fSk7dmFyIGprPW5ldyBxLGhlPW5ldyBELEhpPW5ldyBGLExkPW5ldyBrLE1kPW5ldyBrLE5kPW5ldyBrLCRpPW5ldyBrLGFqPW5ldyBrLGJqPW5ldyBrLEloPQpuZXcgayxKaD1uZXcgayxLaD1uZXcgayxvZT1uZXcgZixwZT1uZXcgZixxZT1uZXcgZixzZj1uZXcgayxzZz1uZXcgazt4YS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6eGEsaXNNZXNoOiEwLHNldERyYXdNb2RlOmZ1bmN0aW9uKGEpe3RoaXMuZHJhd01vZGU9YX0sY29weTpmdW5jdGlvbihhKXtBLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmRyYXdNb2RlPWEuZHJhd01vZGU7dm9pZCAwIT09YS5tb3JwaFRhcmdldEluZmx1ZW5jZXMmJih0aGlzLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcz1hLm1vcnBoVGFyZ2V0SW5mbHVlbmNlcy5zbGljZSgpKTt2b2lkIDAhPT1hLm1vcnBoVGFyZ2V0RGljdGlvbmFyeSYmKHRoaXMubW9ycGhUYXJnZXREaWN0aW9uYXJ5PU9iamVjdC5hc3NpZ24oe30sYS5tb3JwaFRhcmdldERpY3Rpb25hcnkpKTtyZXR1cm4gdGhpc30sdXBkYXRlTW9ycGhUYXJnZXRzOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuZ2VvbWV0cnk7aWYoYS5pc0J1ZmZlckdlb21ldHJ5KXthPWEubW9ycGhBdHRyaWJ1dGVzO3ZhciBjPU9iamVjdC5rZXlzKGEpO2lmKDA8Yy5sZW5ndGgpe3ZhciBlPWFbY1swXV07aWYodm9pZCAwIT09ZSlmb3IodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9e30sYT0wLGM9ZS5sZW5ndGg7YTxjO2ErKyl7dmFyIGc9ZVthXS5uYW1lfHxTdHJpbmcoYSk7dGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXMucHVzaCgwKTt0aGlzLm1vcnBoVGFyZ2V0RGljdGlvbmFyeVtnXT1hfX19ZWxzZSBhPWEubW9ycGhUYXJnZXRzLHZvaWQgMCE9PWEmJjA8YS5sZW5ndGgmJmNvbnNvbGUuZXJyb3IoIlRIUkVFLk1lc2gudXBkYXRlTW9ycGhUYXJnZXRzKCkgbm8gbG9uZ2VyIHN1cHBvcnRzIFRIUkVFLkdlb21ldHJ5LiBVc2UgVEhSRUUuQnVmZmVyR2VvbWV0cnkgaW5zdGVhZC4iKX0scmF5Y2FzdDpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMuZ2VvbWV0cnksCmc9dGhpcy5tYXRlcmlhbCxyPXRoaXMubWF0cml4V29ybGQ7aWYodm9pZCAwIT09ZyYmKG51bGw9PT1lLmJvdW5kaW5nU3BoZXJlJiZlLmNvbXB1dGVCb3VuZGluZ1NwaGVyZSgpLEhpLmNvcHkoZS5ib3VuZGluZ1NwaGVyZSksSGkuYXBwbHlNYXRyaXg0KHIpLCExIT09YS5yYXkuaW50ZXJzZWN0c1NwaGVyZShIaSkmJihqay5nZXRJbnZlcnNlKHIpLGhlLmNvcHkoYS5yYXkpLmFwcGx5TWF0cml4NChqayksbnVsbD09PWUuYm91bmRpbmdCb3h8fCExIT09aGUuaW50ZXJzZWN0c0JveChlLmJvdW5kaW5nQm94KSkpKWlmKGUuaXNCdWZmZXJHZW9tZXRyeSl7dmFyIHY9ZS5pbmRleDtyPWUuYXR0cmlidXRlcy5wb3NpdGlvbjt2YXIgej1lLm1vcnBoQXR0cmlidXRlcy5wb3NpdGlvbixFPWUuYXR0cmlidXRlcy51dixHPWUuYXR0cmlidXRlcy51djIsSj1lLmdyb3VwcyxQPWUuZHJhd1JhbmdlLFIsUztpZihudWxsIT09dilpZihBcnJheS5pc0FycmF5KGcpKXt2YXIgVj0wO2ZvcihSPUoubGVuZ3RoO1Y8ClI7VisrKXt2YXIgVz1KW1ZdO3ZhciBoYT1nW1cubWF0ZXJpYWxJbmRleF07dmFyIGZhPU1hdGgubWF4KFcuc3RhcnQsUC5zdGFydCk7Zm9yKFM9ZT1NYXRoLm1pbihXLnN0YXJ0K1cuY291bnQsUC5zdGFydCtQLmNvdW50KTtmYTxTO2ZhKz0zKXtlPXYuZ2V0WChmYSk7dmFyIHJhPXYuZ2V0WChmYSsxKTt2YXIgcGE9di5nZXRYKGZhKzIpO2lmKGU9RmEodGhpcyxoYSxhLGhlLHIseixFLEcsZSxyYSxwYSkpZS5mYWNlSW5kZXg9TWF0aC5mbG9vcihmYS8zKSxlLmZhY2UubWF0ZXJpYWxJbmRleD1XLm1hdGVyaWFsSW5kZXgsYy5wdXNoKGUpfX19ZWxzZSBmb3IoZmE9TWF0aC5tYXgoMCxQLnN0YXJ0KSxlPU1hdGgubWluKHYuY291bnQsUC5zdGFydCtQLmNvdW50KSxWPWZhLFI9ZTtWPFI7Vis9Myl7aWYoZT12LmdldFgoVikscmE9di5nZXRYKFYrMSkscGE9di5nZXRYKFYrMiksZT1GYSh0aGlzLGcsYSxoZSxyLHosRSxHLGUscmEscGEpKWUuZmFjZUluZGV4PU1hdGguZmxvb3IoVi8zKSwKYy5wdXNoKGUpfWVsc2UgaWYodm9pZCAwIT09cilpZihBcnJheS5pc0FycmF5KGcpKWZvcihWPTAsUj1KLmxlbmd0aDtWPFI7VisrKWZvcihXPUpbVl0saGE9Z1tXLm1hdGVyaWFsSW5kZXhdLGZhPU1hdGgubWF4KFcuc3RhcnQsUC5zdGFydCksUz1lPU1hdGgubWluKFcuc3RhcnQrVy5jb3VudCxQLnN0YXJ0K1AuY291bnQpO2ZhPFM7ZmErPTMpe2lmKGU9ZmEscmE9ZmErMSxwYT1mYSsyLGU9RmEodGhpcyxoYSxhLGhlLHIseixFLEcsZSxyYSxwYSkpZS5mYWNlSW5kZXg9TWF0aC5mbG9vcihmYS8zKSxlLmZhY2UubWF0ZXJpYWxJbmRleD1XLm1hdGVyaWFsSW5kZXgsYy5wdXNoKGUpfWVsc2UgZm9yKGZhPU1hdGgubWF4KDAsUC5zdGFydCksZT1NYXRoLm1pbihyLmNvdW50LFAuc3RhcnQrUC5jb3VudCksVj1mYSxSPWU7VjxSO1YrPTMpaWYoZT1WLHJhPVYrMSxwYT1WKzIsZT1GYSh0aGlzLGcsYSxoZSxyLHosRSxHLGUscmEscGEpKWUuZmFjZUluZGV4PU1hdGguZmxvb3IoVi8zKSxjLnB1c2goZSl9ZWxzZSBpZihlLmlzR2VvbWV0cnkpZm9yKHI9CkFycmF5LmlzQXJyYXkoZyksej1lLnZlcnRpY2VzLEU9ZS5mYWNlcyxlPWUuZmFjZVZlcnRleFV2c1swXSwwPGUubGVuZ3RoJiYodj1lKSxWPTAsUj1FLmxlbmd0aDtWPFI7VisrKWlmKFc9RVtWXSxlPXI/Z1tXLm1hdGVyaWFsSW5kZXhdOmcsdm9pZCAwIT09ZSYmKEc9eltXLmFdLEo9eltXLmJdLFA9eltXLmNdLGU9QWEodGhpcyxlLGEsaGUsRyxKLFAsc2YpKSl2JiZ2W1ZdJiYoaGE9dltWXSxvZS5jb3B5KGhhWzBdKSxwZS5jb3B5KGhhWzFdKSxxZS5jb3B5KGhhWzJdKSxlLnV2PUIuZ2V0VVYoc2YsRyxKLFAsb2UscGUscWUsbmV3IGYpKSxlLmZhY2U9VyxlLmZhY2VJbmRleD1WLGMucHVzaChlKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5nZW9tZXRyeSx0aGlzLm1hdGVyaWFsKSkuY29weSh0aGlzKX19KTt2YXIgUms9MCxZYz1uZXcgcSxJaT1uZXcgQSxvaD1uZXcgazt5YS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOnlhLGlzR2VvbWV0cnk6ITAsYXBwbHlNYXRyaXg6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPShuZXcgdCkuZ2V0Tm9ybWFsTWF0cml4KGEpLGU9MCxnPXRoaXMudmVydGljZXMubGVuZ3RoO2U8ZztlKyspdGhpcy52ZXJ0aWNlc1tlXS5hcHBseU1hdHJpeDQoYSk7ZT0wO2ZvcihnPXRoaXMuZmFjZXMubGVuZ3RoO2U8ZztlKyspe2E9dGhpcy5mYWNlc1tlXTthLm5vcm1hbC5hcHBseU1hdHJpeDMoYykubm9ybWFsaXplKCk7Zm9yKHZhciByPTAsdj1hLnZlcnRleE5vcm1hbHMubGVuZ3RoO3I8djtyKyspYS52ZXJ0ZXhOb3JtYWxzW3JdLmFwcGx5TWF0cml4MyhjKS5ub3JtYWxpemUoKX1udWxsIT09dGhpcy5ib3VuZGluZ0JveCYmdGhpcy5jb21wdXRlQm91bmRpbmdCb3goKTtudWxsIT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmdGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTt0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPXRoaXMudmVydGljZXNOZWVkVXBkYXRlPSEwO3JldHVybiB0aGlzfSwKcm90YXRlWDpmdW5jdGlvbihhKXtZYy5tYWtlUm90YXRpb25YKGEpO3RoaXMuYXBwbHlNYXRyaXgoWWMpO3JldHVybiB0aGlzfSxyb3RhdGVZOmZ1bmN0aW9uKGEpe1ljLm1ha2VSb3RhdGlvblkoYSk7dGhpcy5hcHBseU1hdHJpeChZYyk7cmV0dXJuIHRoaXN9LHJvdGF0ZVo6ZnVuY3Rpb24oYSl7WWMubWFrZVJvdGF0aW9uWihhKTt0aGlzLmFwcGx5TWF0cml4KFljKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEsYyxlKXtZYy5tYWtlVHJhbnNsYXRpb24oYSxjLGUpO3RoaXMuYXBwbHlNYXRyaXgoWWMpO3JldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbihhLGMsZSl7WWMubWFrZVNjYWxlKGEsYyxlKTt0aGlzLmFwcGx5TWF0cml4KFljKTtyZXR1cm4gdGhpc30sbG9va0F0OmZ1bmN0aW9uKGEpe0lpLmxvb2tBdChhKTtJaS51cGRhdGVNYXRyaXgoKTt0aGlzLmFwcGx5TWF0cml4KElpLm1hdHJpeCk7cmV0dXJuIHRoaXN9LGZyb21CdWZmZXJHZW9tZXRyeTpmdW5jdGlvbihhKXtmdW5jdGlvbiBjKFYsClcsaGEsZmEpe3ZhciByYT12b2lkIDA9PT1FP1tdOltlLmNvbG9yc1tWXS5jbG9uZSgpLGUuY29sb3JzW1ddLmNsb25lKCksZS5jb2xvcnNbaGFdLmNsb25lKCldLHBhPXZvaWQgMD09PXo/W106WyhuZXcgaykuZnJvbUFycmF5KHosMypWKSwobmV3IGspLmZyb21BcnJheSh6LDMqVyksKG5ldyBrKS5mcm9tQXJyYXkoeiwzKmhhKV07ZmE9bmV3IEsoVixXLGhhLHBhLHJhLGZhKTtlLmZhY2VzLnB1c2goZmEpO3ZvaWQgMCE9PUcmJmUuZmFjZVZlcnRleFV2c1swXS5wdXNoKFsobmV3IGYpLmZyb21BcnJheShHLDIqViksKG5ldyBmKS5mcm9tQXJyYXkoRywyKlcpLChuZXcgZikuZnJvbUFycmF5KEcsMipoYSldKTt2b2lkIDAhPT1KJiZlLmZhY2VWZXJ0ZXhVdnNbMV0ucHVzaChbKG5ldyBmKS5mcm9tQXJyYXkoSiwyKlYpLChuZXcgZikuZnJvbUFycmF5KEosMipXKSwobmV3IGYpLmZyb21BcnJheShKLDIqaGEpXSl9dmFyIGU9dGhpcyxnPW51bGwhPT1hLmluZGV4P2EuaW5kZXguYXJyYXk6CnZvaWQgMCxyPWEuYXR0cmlidXRlcyx2PXIucG9zaXRpb24uYXJyYXksej12b2lkIDAhPT1yLm5vcm1hbD9yLm5vcm1hbC5hcnJheTp2b2lkIDAsRT12b2lkIDAhPT1yLmNvbG9yP3IuY29sb3IuYXJyYXk6dm9pZCAwLEc9dm9pZCAwIT09ci51dj9yLnV2LmFycmF5OnZvaWQgMCxKPXZvaWQgMCE9PXIudXYyP3IudXYyLmFycmF5OnZvaWQgMDt2b2lkIDAhPT1KJiYodGhpcy5mYWNlVmVydGV4VXZzWzFdPVtdKTtmb3Iocj0wO3I8di5sZW5ndGg7cis9MyllLnZlcnRpY2VzLnB1c2goKG5ldyBrKS5mcm9tQXJyYXkodixyKSksdm9pZCAwIT09RSYmZS5jb2xvcnMucHVzaCgobmV3IEkpLmZyb21BcnJheShFLHIpKTt2YXIgUD1hLmdyb3VwcztpZigwPFAubGVuZ3RoKWZvcihyPTA7cjxQLmxlbmd0aDtyKyspe3Y9UFtyXTt2YXIgUj12LnN0YXJ0LFM9Ujtmb3IoUis9di5jb3VudDtTPFI7Uys9Myl2b2lkIDAhPT1nP2MoZ1tTXSxnW1MrMV0sZ1tTKzJdLHYubWF0ZXJpYWxJbmRleCk6YyhTLApTKzEsUysyLHYubWF0ZXJpYWxJbmRleCl9ZWxzZSBpZih2b2lkIDAhPT1nKWZvcihyPTA7cjxnLmxlbmd0aDtyKz0zKWMoZ1tyXSxnW3IrMV0sZ1tyKzJdKTtlbHNlIGZvcihyPTA7cjx2Lmxlbmd0aC8zO3IrPTMpYyhyLHIrMSxyKzIpO3RoaXMuY29tcHV0ZUZhY2VOb3JtYWxzKCk7bnVsbCE9PWEuYm91bmRpbmdCb3gmJih0aGlzLmJvdW5kaW5nQm94PWEuYm91bmRpbmdCb3guY2xvbmUoKSk7bnVsbCE9PWEuYm91bmRpbmdTcGhlcmUmJih0aGlzLmJvdW5kaW5nU3BoZXJlPWEuYm91bmRpbmdTcGhlcmUuY2xvbmUoKSk7cmV0dXJuIHRoaXN9LGNlbnRlcjpmdW5jdGlvbigpe3RoaXMuY29tcHV0ZUJvdW5kaW5nQm94KCk7dGhpcy5ib3VuZGluZ0JveC5nZXRDZW50ZXIob2gpLm5lZ2F0ZSgpO3RoaXMudHJhbnNsYXRlKG9oLngsb2gueSxvaC56KTtyZXR1cm4gdGhpc30sbm9ybWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTt2YXIgYT10aGlzLmJvdW5kaW5nU3BoZXJlLmNlbnRlciwKYz10aGlzLmJvdW5kaW5nU3BoZXJlLnJhZGl1cztjPTA9PT1jPzE6MS9jO3ZhciBlPW5ldyBxO2Uuc2V0KGMsMCwwLC1jKmEueCwwLGMsMCwtYyphLnksMCwwLGMsLWMqYS56LDAsMCwwLDEpO3RoaXMuYXBwbHlNYXRyaXgoZSk7cmV0dXJuIHRoaXN9LGNvbXB1dGVGYWNlTm9ybWFsczpmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgayxjPW5ldyBrLGU9MCxnPXRoaXMuZmFjZXMubGVuZ3RoO2U8ZztlKyspe3ZhciByPXRoaXMuZmFjZXNbZV0sdj10aGlzLnZlcnRpY2VzW3IuYV0sej10aGlzLnZlcnRpY2VzW3IuYl07YS5zdWJWZWN0b3JzKHRoaXMudmVydGljZXNbci5jXSx6KTtjLnN1YlZlY3RvcnModix6KTthLmNyb3NzKGMpO2Eubm9ybWFsaXplKCk7ci5ub3JtYWwuY29weShhKX19LGNvbXB1dGVWZXJ0ZXhOb3JtYWxzOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihhPSEwKTt2YXIgYzt2YXIgZT1BcnJheSh0aGlzLnZlcnRpY2VzLmxlbmd0aCk7dmFyIGc9MDtmb3IoYz10aGlzLnZlcnRpY2VzLmxlbmd0aDtnPApjO2crKyllW2ddPW5ldyBrO2lmKGEpe3ZhciByPW5ldyBrLHY9bmV3IGs7YT0wO2ZvcihnPXRoaXMuZmFjZXMubGVuZ3RoO2E8ZzthKyspe2M9dGhpcy5mYWNlc1thXTt2YXIgej10aGlzLnZlcnRpY2VzW2MuYV07dmFyIEU9dGhpcy52ZXJ0aWNlc1tjLmJdO3ZhciBHPXRoaXMudmVydGljZXNbYy5jXTtyLnN1YlZlY3RvcnMoRyxFKTt2LnN1YlZlY3RvcnMoeixFKTtyLmNyb3NzKHYpO2VbYy5hXS5hZGQocik7ZVtjLmJdLmFkZChyKTtlW2MuY10uYWRkKHIpfX1lbHNlIGZvcih0aGlzLmNvbXB1dGVGYWNlTm9ybWFscygpLGE9MCxnPXRoaXMuZmFjZXMubGVuZ3RoO2E8ZzthKyspYz10aGlzLmZhY2VzW2FdLGVbYy5hXS5hZGQoYy5ub3JtYWwpLGVbYy5iXS5hZGQoYy5ub3JtYWwpLGVbYy5jXS5hZGQoYy5ub3JtYWwpO2c9MDtmb3IoYz10aGlzLnZlcnRpY2VzLmxlbmd0aDtnPGM7ZysrKWVbZ10ubm9ybWFsaXplKCk7YT0wO2ZvcihnPXRoaXMuZmFjZXMubGVuZ3RoO2E8ZzthKyspYz0KdGhpcy5mYWNlc1thXSx6PWMudmVydGV4Tm9ybWFscywzPT09ei5sZW5ndGg/KHpbMF0uY29weShlW2MuYV0pLHpbMV0uY29weShlW2MuYl0pLHpbMl0uY29weShlW2MuY10pKTooelswXT1lW2MuYV0uY2xvbmUoKSx6WzFdPWVbYy5iXS5jbG9uZSgpLHpbMl09ZVtjLmNdLmNsb25lKCkpOzA8dGhpcy5mYWNlcy5sZW5ndGgmJih0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPSEwKX0sY29tcHV0ZUZsYXRWZXJ0ZXhOb3JtYWxzOmZ1bmN0aW9uKCl7dmFyIGE7dGhpcy5jb21wdXRlRmFjZU5vcm1hbHMoKTt2YXIgYz0wO2ZvcihhPXRoaXMuZmFjZXMubGVuZ3RoO2M8YTtjKyspe3ZhciBlPXRoaXMuZmFjZXNbY107dmFyIGc9ZS52ZXJ0ZXhOb3JtYWxzOzM9PT1nLmxlbmd0aD8oZ1swXS5jb3B5KGUubm9ybWFsKSxnWzFdLmNvcHkoZS5ub3JtYWwpLGdbMl0uY29weShlLm5vcm1hbCkpOihnWzBdPWUubm9ybWFsLmNsb25lKCksZ1sxXT1lLm5vcm1hbC5jbG9uZSgpLGdbMl09ZS5ub3JtYWwuY2xvbmUoKSl9MDwKdGhpcy5mYWNlcy5sZW5ndGgmJih0aGlzLm5vcm1hbHNOZWVkVXBkYXRlPSEwKX0sY29tcHV0ZU1vcnBoTm9ybWFsczpmdW5jdGlvbigpe3ZhciBhLGM7dmFyIGU9MDtmb3IoYz10aGlzLmZhY2VzLmxlbmd0aDtlPGM7ZSsrKXt2YXIgZz10aGlzLmZhY2VzW2VdO2cuX19vcmlnaW5hbEZhY2VOb3JtYWw/Zy5fX29yaWdpbmFsRmFjZU5vcm1hbC5jb3B5KGcubm9ybWFsKTpnLl9fb3JpZ2luYWxGYWNlTm9ybWFsPWcubm9ybWFsLmNsb25lKCk7Zy5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc3x8KGcuX19vcmlnaW5hbFZlcnRleE5vcm1hbHM9W10pO3ZhciByPTA7Zm9yKGE9Zy52ZXJ0ZXhOb3JtYWxzLmxlbmd0aDtyPGE7cisrKWcuX19vcmlnaW5hbFZlcnRleE5vcm1hbHNbcl0/Zy5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc1tyXS5jb3B5KGcudmVydGV4Tm9ybWFsc1tyXSk6Zy5fX29yaWdpbmFsVmVydGV4Tm9ybWFsc1tyXT1nLnZlcnRleE5vcm1hbHNbcl0uY2xvbmUoKX12YXIgdj1uZXcgeWE7CnYuZmFjZXM9dGhpcy5mYWNlcztyPTA7Zm9yKGE9dGhpcy5tb3JwaFRhcmdldHMubGVuZ3RoO3I8YTtyKyspe2lmKCF0aGlzLm1vcnBoTm9ybWFsc1tyXSl7dGhpcy5tb3JwaE5vcm1hbHNbcl09e307dGhpcy5tb3JwaE5vcm1hbHNbcl0uZmFjZU5vcm1hbHM9W107dGhpcy5tb3JwaE5vcm1hbHNbcl0udmVydGV4Tm9ybWFscz1bXTtnPXRoaXMubW9ycGhOb3JtYWxzW3JdLmZhY2VOb3JtYWxzO3ZhciB6PXRoaXMubW9ycGhOb3JtYWxzW3JdLnZlcnRleE5vcm1hbHM7ZT0wO2ZvcihjPXRoaXMuZmFjZXMubGVuZ3RoO2U8YztlKyspe3ZhciBFPW5ldyBrO3ZhciBHPXthOm5ldyBrLGI6bmV3IGssYzpuZXcga307Zy5wdXNoKEUpO3oucHVzaChHKX19ej10aGlzLm1vcnBoTm9ybWFsc1tyXTt2LnZlcnRpY2VzPXRoaXMubW9ycGhUYXJnZXRzW3JdLnZlcnRpY2VzO3YuY29tcHV0ZUZhY2VOb3JtYWxzKCk7di5jb21wdXRlVmVydGV4Tm9ybWFscygpO2U9MDtmb3IoYz10aGlzLmZhY2VzLmxlbmd0aDtlPApjO2UrKylnPXRoaXMuZmFjZXNbZV0sRT16LmZhY2VOb3JtYWxzW2VdLEc9ei52ZXJ0ZXhOb3JtYWxzW2VdLEUuY29weShnLm5vcm1hbCksRy5hLmNvcHkoZy52ZXJ0ZXhOb3JtYWxzWzBdKSxHLmIuY29weShnLnZlcnRleE5vcm1hbHNbMV0pLEcuYy5jb3B5KGcudmVydGV4Tm9ybWFsc1syXSl9ZT0wO2ZvcihjPXRoaXMuZmFjZXMubGVuZ3RoO2U8YztlKyspZz10aGlzLmZhY2VzW2VdLGcubm9ybWFsPWcuX19vcmlnaW5hbEZhY2VOb3JtYWwsZy52ZXJ0ZXhOb3JtYWxzPWcuX19vcmlnaW5hbFZlcnRleE5vcm1hbHN9LGNvbXB1dGVCb3VuZGluZ0JveDpmdW5jdGlvbigpe251bGw9PT10aGlzLmJvdW5kaW5nQm94JiYodGhpcy5ib3VuZGluZ0JveD1uZXcgdyk7dGhpcy5ib3VuZGluZ0JveC5zZXRGcm9tUG9pbnRzKHRoaXMudmVydGljZXMpfSxjb21wdXRlQm91bmRpbmdTcGhlcmU6ZnVuY3Rpb24oKXtudWxsPT09dGhpcy5ib3VuZGluZ1NwaGVyZSYmKHRoaXMuYm91bmRpbmdTcGhlcmU9Cm5ldyBGKTt0aGlzLmJvdW5kaW5nU3BoZXJlLnNldEZyb21Qb2ludHModGhpcy52ZXJ0aWNlcyl9LG1lcmdlOmZ1bmN0aW9uKGEsYyxlKXtpZihhJiZhLmlzR2VvbWV0cnkpe3ZhciBnLHI9dGhpcy52ZXJ0aWNlcy5sZW5ndGgsdj10aGlzLnZlcnRpY2VzLHo9YS52ZXJ0aWNlcyxFPXRoaXMuZmFjZXMsRz1hLmZhY2VzLEo9dGhpcy5jb2xvcnMsUD1hLmNvbG9yczt2b2lkIDA9PT1lJiYoZT0wKTt2b2lkIDAhPT1jJiYoZz0obmV3IHQpLmdldE5vcm1hbE1hdHJpeChjKSk7Zm9yKHZhciBSPTAsUz16Lmxlbmd0aDtSPFM7UisrKXt2YXIgVj16W1JdLmNsb25lKCk7dm9pZCAwIT09YyYmVi5hcHBseU1hdHJpeDQoYyk7di5wdXNoKFYpfVI9MDtmb3IoUz1QLmxlbmd0aDtSPFM7UisrKUoucHVzaChQW1JdLmNsb25lKCkpO1I9MDtmb3IoUz1HLmxlbmd0aDtSPFM7UisrKXt6PUdbUl07dmFyIFc9ei52ZXJ0ZXhOb3JtYWxzO1A9ei52ZXJ0ZXhDb2xvcnM7Sj1uZXcgSyh6LmErcix6LmIrcix6LmMrCnIpO0oubm9ybWFsLmNvcHkoei5ub3JtYWwpO3ZvaWQgMCE9PWcmJkoubm9ybWFsLmFwcGx5TWF0cml4MyhnKS5ub3JtYWxpemUoKTtjPTA7Zm9yKHY9Vy5sZW5ndGg7Yzx2O2MrKylWPVdbY10uY2xvbmUoKSx2b2lkIDAhPT1nJiZWLmFwcGx5TWF0cml4MyhnKS5ub3JtYWxpemUoKSxKLnZlcnRleE5vcm1hbHMucHVzaChWKTtKLmNvbG9yLmNvcHkoei5jb2xvcik7Yz0wO2Zvcih2PVAubGVuZ3RoO2M8djtjKyspVj1QW2NdLEoudmVydGV4Q29sb3JzLnB1c2goVi5jbG9uZSgpKTtKLm1hdGVyaWFsSW5kZXg9ei5tYXRlcmlhbEluZGV4K2U7RS5wdXNoKEopfVI9MDtmb3IoUz1hLmZhY2VWZXJ0ZXhVdnMubGVuZ3RoO1I8UztSKyspZm9yKGU9YS5mYWNlVmVydGV4VXZzW1JdLHZvaWQgMD09PXRoaXMuZmFjZVZlcnRleFV2c1tSXSYmKHRoaXMuZmFjZVZlcnRleFV2c1tSXT1bXSksYz0wLHY9ZS5sZW5ndGg7Yzx2O2MrKyl7Zz1lW2NdO3I9W107RT0wO2ZvcihHPWcubGVuZ3RoO0U8RztFKyspci5wdXNoKGdbRV0uY2xvbmUoKSk7CnRoaXMuZmFjZVZlcnRleFV2c1tSXS5wdXNoKHIpfX1lbHNlIGNvbnNvbGUuZXJyb3IoIlRIUkVFLkdlb21ldHJ5Lm1lcmdlKCk6IGdlb21ldHJ5IG5vdCBhbiBpbnN0YW5jZSBvZiBUSFJFRS5HZW9tZXRyeS4iLGEpfSxtZXJnZU1lc2g6ZnVuY3Rpb24oYSl7YSYmYS5pc01lc2g/KGEubWF0cml4QXV0b1VwZGF0ZSYmYS51cGRhdGVNYXRyaXgoKSx0aGlzLm1lcmdlKGEuZ2VvbWV0cnksYS5tYXRyaXgpKTpjb25zb2xlLmVycm9yKCJUSFJFRS5HZW9tZXRyeS5tZXJnZU1lc2goKTogbWVzaCBub3QgYW4gaW5zdGFuY2Ugb2YgVEhSRUUuTWVzaC4iLGEpfSxtZXJnZVZlcnRpY2VzOmZ1bmN0aW9uKCl7dmFyIGE9e30sYz1bXSxlPVtdLGc9TWF0aC5wb3coMTAsNCkscjt2YXIgdj0wO2ZvcihyPXRoaXMudmVydGljZXMubGVuZ3RoO3Y8cjt2Kyspe3ZhciB6PXRoaXMudmVydGljZXNbdl07ej1NYXRoLnJvdW5kKHoueCpnKSsiXyIrTWF0aC5yb3VuZCh6LnkqZykrIl8iK01hdGgucm91bmQoei56KgpnKTt2b2lkIDA9PT1hW3pdPyhhW3pdPXYsYy5wdXNoKHRoaXMudmVydGljZXNbdl0pLGVbdl09Yy5sZW5ndGgtMSk6ZVt2XT1lW2Fbel1dfWE9W107dj0wO2ZvcihyPXRoaXMuZmFjZXMubGVuZ3RoO3Y8cjt2KyspZm9yKGc9dGhpcy5mYWNlc1t2XSxnLmE9ZVtnLmFdLGcuYj1lW2cuYl0sZy5jPWVbZy5jXSxnPVtnLmEsZy5iLGcuY10sej0wOzM+ejt6KyspaWYoZ1t6XT09PWdbKHorMSklM10pe2EucHVzaCh2KTticmVha31mb3Iodj1hLmxlbmd0aC0xOzA8PXY7di0tKWZvcihnPWFbdl0sdGhpcy5mYWNlcy5zcGxpY2UoZywxKSxlPTAscj10aGlzLmZhY2VWZXJ0ZXhVdnMubGVuZ3RoO2U8cjtlKyspdGhpcy5mYWNlVmVydGV4VXZzW2VdLnNwbGljZShnLDEpO3Y9dGhpcy52ZXJ0aWNlcy5sZW5ndGgtYy5sZW5ndGg7dGhpcy52ZXJ0aWNlcz1jO3JldHVybiB2fSxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEpe3RoaXMudmVydGljZXM9W107Zm9yKHZhciBjPTAsZT1hLmxlbmd0aDtjPGU7YysrKXt2YXIgZz0KYVtjXTt0aGlzLnZlcnRpY2VzLnB1c2gobmV3IGsoZy54LGcueSxnLnp8fDApKX1yZXR1cm4gdGhpc30sc29ydEZhY2VzQnlNYXRlcmlhbEluZGV4OmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuZmFjZXMsYz1hLmxlbmd0aCxlPTA7ZTxjO2UrKylhW2VdLl9pZD1lO2Euc29ydChmdW5jdGlvbihHLEope3JldHVybiBHLm1hdGVyaWFsSW5kZXgtSi5tYXRlcmlhbEluZGV4fSk7dmFyIGc9dGhpcy5mYWNlVmVydGV4VXZzWzBdLHI9dGhpcy5mYWNlVmVydGV4VXZzWzFdLHYsejtnJiZnLmxlbmd0aD09PWMmJih2PVtdKTtyJiZyLmxlbmd0aD09PWMmJih6PVtdKTtmb3IoZT0wO2U8YztlKyspe3ZhciBFPWFbZV0uX2lkO3YmJnYucHVzaChnW0VdKTt6JiZ6LnB1c2gocltFXSl9diYmKHRoaXMuZmFjZVZlcnRleFV2c1swXT12KTt6JiYodGhpcy5mYWNlVmVydGV4VXZzWzFdPXopfSx0b0pTT046ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKG9hLHRhLEJhKXtyZXR1cm4gQmE/b2F8MTw8dGE6b2EmCn4oMTw8dGEpfWZ1bmN0aW9uIGMob2Epe3ZhciB0YT1vYS54LnRvU3RyaW5nKCkrb2EueS50b1N0cmluZygpK29hLnoudG9TdHJpbmcoKTtpZih2b2lkIDAhPT1KW3RhXSlyZXR1cm4gSlt0YV07Slt0YV09Ry5sZW5ndGgvMztHLnB1c2gob2EueCxvYS55LG9hLnopO3JldHVybiBKW3RhXX1mdW5jdGlvbiBlKG9hKXt2YXIgdGE9b2Euci50b1N0cmluZygpK29hLmcudG9TdHJpbmcoKStvYS5iLnRvU3RyaW5nKCk7aWYodm9pZCAwIT09Ult0YV0pcmV0dXJuIFJbdGFdO1JbdGFdPVAubGVuZ3RoO1AucHVzaChvYS5nZXRIZXgoKSk7cmV0dXJuIFJbdGFdfWZ1bmN0aW9uIGcob2Epe3ZhciB0YT1vYS54LnRvU3RyaW5nKCkrb2EueS50b1N0cmluZygpO2lmKHZvaWQgMCE9PVZbdGFdKXJldHVybiBWW3RhXTtWW3RhXT1TLmxlbmd0aC8yO1MucHVzaChvYS54LG9hLnkpO3JldHVybiBWW3RhXX12YXIgcj17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6Ikdlb21ldHJ5IixnZW5lcmF0b3I6Ikdlb21ldHJ5LnRvSlNPTiJ9fTsKci51dWlkPXRoaXMudXVpZDtyLnR5cGU9dGhpcy50eXBlOyIiIT09dGhpcy5uYW1lJiYoci5uYW1lPXRoaXMubmFtZSk7aWYodm9pZCAwIT09dGhpcy5wYXJhbWV0ZXJzKXt2YXIgdj10aGlzLnBhcmFtZXRlcnMsejtmb3IoeiBpbiB2KXZvaWQgMCE9PXZbel0mJihyW3pdPXZbel0pO3JldHVybiByfXY9W107Zm9yKHo9MDt6PHRoaXMudmVydGljZXMubGVuZ3RoO3orKyl7dmFyIEU9dGhpcy52ZXJ0aWNlc1t6XTt2LnB1c2goRS54LEUueSxFLnopfUU9W107dmFyIEc9W10sSj17fSxQPVtdLFI9e30sUz1bXSxWPXt9O2Zvcih6PTA7ejx0aGlzLmZhY2VzLmxlbmd0aDt6Kyspe3ZhciBXPXRoaXMuZmFjZXNbel0saGE9dm9pZCAwIT09dGhpcy5mYWNlVmVydGV4VXZzWzBdW3pdLGZhPTA8Vy5ub3JtYWwubGVuZ3RoKCkscmE9MDxXLnZlcnRleE5vcm1hbHMubGVuZ3RoLHBhPTEhPT1XLmNvbG9yLnJ8fDEhPT1XLmNvbG9yLmd8fDEhPT1XLmNvbG9yLmIscWE9MDxXLnZlcnRleENvbG9ycy5sZW5ndGgsCnVhPTA7dWE9YSh1YSwwLDApO3VhPWEodWEsMSwhMCk7dWE9YSh1YSwyLCExKTt1YT1hKHVhLDMsaGEpO3VhPWEodWEsNCxmYSk7dWE9YSh1YSw1LHJhKTt1YT1hKHVhLDYscGEpO3VhPWEodWEsNyxxYSk7RS5wdXNoKHVhKTtFLnB1c2goVy5hLFcuYixXLmMpO0UucHVzaChXLm1hdGVyaWFsSW5kZXgpO2hhJiYoaGE9dGhpcy5mYWNlVmVydGV4VXZzWzBdW3pdLEUucHVzaChnKGhhWzBdKSxnKGhhWzFdKSxnKGhhWzJdKSkpO2ZhJiZFLnB1c2goYyhXLm5vcm1hbCkpO3JhJiYoZmE9Vy52ZXJ0ZXhOb3JtYWxzLEUucHVzaChjKGZhWzBdKSxjKGZhWzFdKSxjKGZhWzJdKSkpO3BhJiZFLnB1c2goZShXLmNvbG9yKSk7cWEmJihXPVcudmVydGV4Q29sb3JzLEUucHVzaChlKFdbMF0pLGUoV1sxXSksZShXWzJdKSkpfXIuZGF0YT17fTtyLmRhdGEudmVydGljZXM9djtyLmRhdGEubm9ybWFscz1HOzA8UC5sZW5ndGgmJihyLmRhdGEuY29sb3JzPVApOzA8Uy5sZW5ndGgmJihyLmRhdGEudXZzPQpbU10pO3IuZGF0YS5mYWNlcz1FO3JldHVybiByfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgeWEpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dmFyIGMsZSxnO3RoaXMudmVydGljZXM9W107dGhpcy5jb2xvcnM9W107dGhpcy5mYWNlcz1bXTt0aGlzLmZhY2VWZXJ0ZXhVdnM9W1tdXTt0aGlzLm1vcnBoVGFyZ2V0cz1bXTt0aGlzLm1vcnBoTm9ybWFscz1bXTt0aGlzLnNraW5XZWlnaHRzPVtdO3RoaXMuc2tpbkluZGljZXM9W107dGhpcy5saW5lRGlzdGFuY2VzPVtdO3RoaXMuYm91bmRpbmdTcGhlcmU9dGhpcy5ib3VuZGluZ0JveD1udWxsO3RoaXMubmFtZT1hLm5hbWU7dmFyIHI9YS52ZXJ0aWNlczt2YXIgdj0wO2ZvcihjPXIubGVuZ3RoO3Y8Yzt2KyspdGhpcy52ZXJ0aWNlcy5wdXNoKHJbdl0uY2xvbmUoKSk7cj1hLmNvbG9yczt2PTA7Zm9yKGM9ci5sZW5ndGg7djxjO3YrKyl0aGlzLmNvbG9ycy5wdXNoKHJbdl0uY2xvbmUoKSk7cj1hLmZhY2VzO3Y9MDtmb3IoYz0Kci5sZW5ndGg7djxjO3YrKyl0aGlzLmZhY2VzLnB1c2goclt2XS5jbG9uZSgpKTt2PTA7Zm9yKGM9YS5mYWNlVmVydGV4VXZzLmxlbmd0aDt2PGM7disrKXt2YXIgej1hLmZhY2VWZXJ0ZXhVdnNbdl07dm9pZCAwPT09dGhpcy5mYWNlVmVydGV4VXZzW3ZdJiYodGhpcy5mYWNlVmVydGV4VXZzW3ZdPVtdKTtyPTA7Zm9yKGU9ei5sZW5ndGg7cjxlO3IrKyl7dmFyIEU9eltyXSxHPVtdO3ZhciBKPTA7Zm9yKGc9RS5sZW5ndGg7SjxnO0orKylHLnB1c2goRVtKXS5jbG9uZSgpKTt0aGlzLmZhY2VWZXJ0ZXhVdnNbdl0ucHVzaChHKX19Sj1hLm1vcnBoVGFyZ2V0czt2PTA7Zm9yKGM9Si5sZW5ndGg7djxjO3YrKyl7Zz17fTtnLm5hbWU9Slt2XS5uYW1lO2lmKHZvaWQgMCE9PUpbdl0udmVydGljZXMpZm9yKGcudmVydGljZXM9W10scj0wLGU9Slt2XS52ZXJ0aWNlcy5sZW5ndGg7cjxlO3IrKylnLnZlcnRpY2VzLnB1c2goSlt2XS52ZXJ0aWNlc1tyXS5jbG9uZSgpKTtpZih2b2lkIDAhPT1KW3ZdLm5vcm1hbHMpZm9yKGcubm9ybWFscz0KW10scj0wLGU9Slt2XS5ub3JtYWxzLmxlbmd0aDtyPGU7cisrKWcubm9ybWFscy5wdXNoKEpbdl0ubm9ybWFsc1tyXS5jbG9uZSgpKTt0aGlzLm1vcnBoVGFyZ2V0cy5wdXNoKGcpfUo9YS5tb3JwaE5vcm1hbHM7dj0wO2ZvcihjPUoubGVuZ3RoO3Y8Yzt2Kyspe2c9e307aWYodm9pZCAwIT09Slt2XS52ZXJ0ZXhOb3JtYWxzKWZvcihnLnZlcnRleE5vcm1hbHM9W10scj0wLGU9Slt2XS52ZXJ0ZXhOb3JtYWxzLmxlbmd0aDtyPGU7cisrKXo9Slt2XS52ZXJ0ZXhOb3JtYWxzW3JdLEU9e30sRS5hPXouYS5jbG9uZSgpLEUuYj16LmIuY2xvbmUoKSxFLmM9ei5jLmNsb25lKCksZy52ZXJ0ZXhOb3JtYWxzLnB1c2goRSk7aWYodm9pZCAwIT09Slt2XS5mYWNlTm9ybWFscylmb3IoZy5mYWNlTm9ybWFscz1bXSxyPTAsZT1KW3ZdLmZhY2VOb3JtYWxzLmxlbmd0aDtyPGU7cisrKWcuZmFjZU5vcm1hbHMucHVzaChKW3ZdLmZhY2VOb3JtYWxzW3JdLmNsb25lKCkpO3RoaXMubW9ycGhOb3JtYWxzLnB1c2goZyl9cj0KYS5za2luV2VpZ2h0czt2PTA7Zm9yKGM9ci5sZW5ndGg7djxjO3YrKyl0aGlzLnNraW5XZWlnaHRzLnB1c2goclt2XS5jbG9uZSgpKTtyPWEuc2tpbkluZGljZXM7dj0wO2ZvcihjPXIubGVuZ3RoO3Y8Yzt2KyspdGhpcy5za2luSW5kaWNlcy5wdXNoKHJbdl0uY2xvbmUoKSk7cj1hLmxpbmVEaXN0YW5jZXM7dj0wO2ZvcihjPXIubGVuZ3RoO3Y8Yzt2KyspdGhpcy5saW5lRGlzdGFuY2VzLnB1c2goclt2XSk7dj1hLmJvdW5kaW5nQm94O251bGwhPT12JiYodGhpcy5ib3VuZGluZ0JveD12LmNsb25lKCkpO3Y9YS5ib3VuZGluZ1NwaGVyZTtudWxsIT09diYmKHRoaXMuYm91bmRpbmdTcGhlcmU9di5jbG9uZSgpKTt0aGlzLmVsZW1lbnRzTmVlZFVwZGF0ZT1hLmVsZW1lbnRzTmVlZFVwZGF0ZTt0aGlzLnZlcnRpY2VzTmVlZFVwZGF0ZT1hLnZlcnRpY2VzTmVlZFVwZGF0ZTt0aGlzLnV2c05lZWRVcGRhdGU9YS51dnNOZWVkVXBkYXRlO3RoaXMubm9ybWFsc05lZWRVcGRhdGU9YS5ub3JtYWxzTmVlZFVwZGF0ZTsKdGhpcy5jb2xvcnNOZWVkVXBkYXRlPWEuY29sb3JzTmVlZFVwZGF0ZTt0aGlzLmxpbmVEaXN0YW5jZXNOZWVkVXBkYXRlPWEubGluZURpc3RhbmNlc05lZWRVcGRhdGU7dGhpcy5ncm91cHNOZWVkVXBkYXRlPWEuZ3JvdXBzTmVlZFVwZGF0ZTtyZXR1cm4gdGhpc30sZGlzcG9zZTpmdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiZGlzcG9zZSJ9KX19KTtTYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO1NhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TYTtYYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO1hhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1YYTt2YXIgRm09e2Nsb25lOnViLG1lcmdlOkJifTtxYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7cWIucHJvdG90eXBlLmNvbnN0cnVjdG9yPXFiO3FiLnByb3RvdHlwZS5pc1NoYWRlck1hdGVyaWFsPSEwO3FiLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLAphKTt0aGlzLmZyYWdtZW50U2hhZGVyPWEuZnJhZ21lbnRTaGFkZXI7dGhpcy52ZXJ0ZXhTaGFkZXI9YS52ZXJ0ZXhTaGFkZXI7dGhpcy51bmlmb3Jtcz11YihhLnVuaWZvcm1zKTt0aGlzLmRlZmluZXM9T2JqZWN0LmFzc2lnbih7fSxhLmRlZmluZXMpO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPWEud2lyZWZyYW1lTGluZXdpZHRoO3RoaXMubGlnaHRzPWEubGlnaHRzO3RoaXMuY2xpcHBpbmc9YS5jbGlwcGluZzt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7dGhpcy5tb3JwaE5vcm1hbHM9YS5tb3JwaE5vcm1hbHM7dGhpcy5leHRlbnNpb25zPWEuZXh0ZW5zaW9ucztyZXR1cm4gdGhpc307cWIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihhKXt2YXIgYz1NLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLGEpO2MudW5pZm9ybXM9e307Zm9yKHZhciBlIGluIHRoaXMudW5pZm9ybXMpe3ZhciBnPQp0aGlzLnVuaWZvcm1zW2VdLnZhbHVlO2MudW5pZm9ybXNbZV09ZyYmZy5pc1RleHR1cmU/e3R5cGU6InQiLHZhbHVlOmcudG9KU09OKGEpLnV1aWR9OmcmJmcuaXNDb2xvcj97dHlwZToiYyIsdmFsdWU6Zy5nZXRIZXgoKX06ZyYmZy5pc1ZlY3RvcjI/e3R5cGU6InYyIix2YWx1ZTpnLnRvQXJyYXkoKX06ZyYmZy5pc1ZlY3RvcjM/e3R5cGU6InYzIix2YWx1ZTpnLnRvQXJyYXkoKX06ZyYmZy5pc1ZlY3RvcjQ/e3R5cGU6InY0Iix2YWx1ZTpnLnRvQXJyYXkoKX06ZyYmZy5pc01hdHJpeDM/e3R5cGU6Im0zIix2YWx1ZTpnLnRvQXJyYXkoKX06ZyYmZy5pc01hdHJpeDQ/e3R5cGU6Im00Iix2YWx1ZTpnLnRvQXJyYXkoKX06e3ZhbHVlOmd9fTA8T2JqZWN0LmtleXModGhpcy5kZWZpbmVzKS5sZW5ndGgmJihjLmRlZmluZXM9dGhpcy5kZWZpbmVzKTtjLnZlcnRleFNoYWRlcj10aGlzLnZlcnRleFNoYWRlcjtjLmZyYWdtZW50U2hhZGVyPXRoaXMuZnJhZ21lbnRTaGFkZXI7YT17fTtmb3IodmFyIHIgaW4gdGhpcy5leHRlbnNpb25zKSEwPT09CnRoaXMuZXh0ZW5zaW9uc1tyXSYmKGFbcl09ITApOzA8T2JqZWN0LmtleXMoYSkubGVuZ3RoJiYoYy5leHRlbnNpb25zPWEpO3JldHVybiBjfTt6Yi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6emIsaXNDYW1lcmE6ITAsY29weTpmdW5jdGlvbihhLGMpe0EucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEsYyk7dGhpcy5tYXRyaXhXb3JsZEludmVyc2UuY29weShhLm1hdHJpeFdvcmxkSW52ZXJzZSk7dGhpcy5wcm9qZWN0aW9uTWF0cml4LmNvcHkoYS5wcm9qZWN0aW9uTWF0cml4KTt0aGlzLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlLmNvcHkoYS5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZSk7cmV0dXJuIHRoaXN9LGdldFdvcmxkRGlyZWN0aW9uOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkNhbWVyYTogLmdldFdvcmxkRGlyZWN0aW9uKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLAphPW5ldyBrKTt0aGlzLnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTt2YXIgYz10aGlzLm1hdHJpeFdvcmxkLmVsZW1lbnRzO3JldHVybiBhLnNldCgtY1s4XSwtY1s5XSwtY1sxMF0pLm5vcm1hbGl6ZSgpfSx1cGRhdGVNYXRyaXhXb3JsZDpmdW5jdGlvbihhKXtBLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsYSk7dGhpcy5tYXRyaXhXb3JsZEludmVyc2UuZ2V0SW52ZXJzZSh0aGlzLm1hdHJpeFdvcmxkKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9fSk7dmIucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh6Yi5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp2Yixpc1BlcnNwZWN0aXZlQ2FtZXJhOiEwLGNvcHk6ZnVuY3Rpb24oYSxjKXt6Yi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSxjKTt0aGlzLmZvdj1hLmZvdjt0aGlzLnpvb209YS56b29tO3RoaXMubmVhcj1hLm5lYXI7dGhpcy5mYXI9CmEuZmFyO3RoaXMuZm9jdXM9YS5mb2N1czt0aGlzLmFzcGVjdD1hLmFzcGVjdDt0aGlzLnZpZXc9bnVsbD09PWEudmlldz9udWxsOk9iamVjdC5hc3NpZ24oe30sYS52aWV3KTt0aGlzLmZpbG1HYXVnZT1hLmZpbG1HYXVnZTt0aGlzLmZpbG1PZmZzZXQ9YS5maWxtT2Zmc2V0O3JldHVybiB0aGlzfSxzZXRGb2NhbExlbmd0aDpmdW5jdGlvbihhKXt0aGlzLmZvdj0yKmhiLlJBRDJERUcqTWF0aC5hdGFuKC41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL2EpO3RoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSxnZXRGb2NhbExlbmd0aDpmdW5jdGlvbigpe3JldHVybi41KnRoaXMuZ2V0RmlsbUhlaWdodCgpL01hdGgudGFuKC41KmhiLkRFRzJSQUQqdGhpcy5mb3YpfSxnZXRFZmZlY3RpdmVGT1Y6ZnVuY3Rpb24oKXtyZXR1cm4gMipoYi5SQUQyREVHKk1hdGguYXRhbihNYXRoLnRhbiguNSpoYi5ERUcyUkFEKnRoaXMuZm92KS90aGlzLnpvb20pfSxnZXRGaWxtV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxtR2F1Z2UqCk1hdGgubWluKHRoaXMuYXNwZWN0LDEpfSxnZXRGaWxtSGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsbUdhdWdlL01hdGgubWF4KHRoaXMuYXNwZWN0LDEpfSxzZXRWaWV3T2Zmc2V0OmZ1bmN0aW9uKGEsYyxlLGcscix2KXt0aGlzLmFzcGVjdD1hL2M7bnVsbD09PXRoaXMudmlldyYmKHRoaXMudmlldz17ZW5hYmxlZDohMCxmdWxsV2lkdGg6MSxmdWxsSGVpZ2h0OjEsb2Zmc2V0WDowLG9mZnNldFk6MCx3aWR0aDoxLGhlaWdodDoxfSk7dGhpcy52aWV3LmVuYWJsZWQ9ITA7dGhpcy52aWV3LmZ1bGxXaWR0aD1hO3RoaXMudmlldy5mdWxsSGVpZ2h0PWM7dGhpcy52aWV3Lm9mZnNldFg9ZTt0aGlzLnZpZXcub2Zmc2V0WT1nO3RoaXMudmlldy53aWR0aD1yO3RoaXMudmlldy5oZWlnaHQ9djt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sY2xlYXJWaWV3T2Zmc2V0OmZ1bmN0aW9uKCl7bnVsbCE9PXRoaXMudmlldyYmKHRoaXMudmlldy5lbmFibGVkPSExKTt0aGlzLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKX0sCnVwZGF0ZVByb2plY3Rpb25NYXRyaXg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5lYXIsYz1hKk1hdGgudGFuKC41KmhiLkRFRzJSQUQqdGhpcy5mb3YpL3RoaXMuem9vbSxlPTIqYyxnPXRoaXMuYXNwZWN0KmUscj0tLjUqZyx2PXRoaXMudmlldztpZihudWxsIT09dGhpcy52aWV3JiZ0aGlzLnZpZXcuZW5hYmxlZCl7dmFyIHo9di5mdWxsV2lkdGgsRT12LmZ1bGxIZWlnaHQ7cis9di5vZmZzZXRYKmcvejtjLT12Lm9mZnNldFkqZS9FO2cqPXYud2lkdGgvejtlKj12LmhlaWdodC9FfXY9dGhpcy5maWxtT2Zmc2V0OzAhPT12JiYocis9YSp2L3RoaXMuZ2V0RmlsbVdpZHRoKCkpO3RoaXMucHJvamVjdGlvbk1hdHJpeC5tYWtlUGVyc3BlY3RpdmUocixyK2csYyxjLWUsYSx0aGlzLmZhcik7dGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5nZXRJbnZlcnNlKHRoaXMucHJvamVjdGlvbk1hdHJpeCl9LHRvSlNPTjpmdW5jdGlvbihhKXthPUEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsCmEpO2Eub2JqZWN0LmZvdj10aGlzLmZvdjthLm9iamVjdC56b29tPXRoaXMuem9vbTthLm9iamVjdC5uZWFyPXRoaXMubmVhcjthLm9iamVjdC5mYXI9dGhpcy5mYXI7YS5vYmplY3QuZm9jdXM9dGhpcy5mb2N1czthLm9iamVjdC5hc3BlY3Q9dGhpcy5hc3BlY3Q7bnVsbCE9PXRoaXMudmlldyYmKGEub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKTthLm9iamVjdC5maWxtR2F1Z2U9dGhpcy5maWxtR2F1Z2U7YS5vYmplY3QuZmlsbU9mZnNldD10aGlzLmZpbG1PZmZzZXQ7cmV0dXJuIGF9fSk7R2IucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpO0diLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HYjtOYi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtLnByb3RvdHlwZSk7TmIucHJvdG90eXBlLmNvbnN0cnVjdG9yPU5iO05iLnByb3RvdHlwZS5pc1dlYkdMUmVuZGVyVGFyZ2V0Q3ViZT0hMDtOYi5wcm90b3R5cGUuZnJvbUVxdWlyZWN0YW5ndWxhclRleHR1cmU9CmZ1bmN0aW9uKGEsYyl7dGhpcy50ZXh0dXJlLnR5cGU9Yy50eXBlO3RoaXMudGV4dHVyZS5mb3JtYXQ9Yy5mb3JtYXQ7dGhpcy50ZXh0dXJlLmVuY29kaW5nPWMuZW5jb2Rpbmc7dmFyIGU9bmV3IHksZz1uZXcgcWIoe3R5cGU6IkN1YmVtYXBGcm9tRXF1aXJlY3QiLHVuaWZvcm1zOnViKHt0RXF1aXJlY3Q6e3ZhbHVlOm51bGx9fSksdmVydGV4U2hhZGVyOiJ2YXJ5aW5nIHZlYzMgdldvcmxkRGlyZWN0aW9uO1xudmVjMyB0cmFuc2Zvcm1EaXJlY3Rpb24oIGluIHZlYzMgZGlyLCBpbiBtYXQ0IG1hdHJpeCApIHtcblx0cmV0dXJuIG5vcm1hbGl6ZSggKCBtYXRyaXggKiB2ZWM0KCBkaXIsIDAuMCApICkueHl6ICk7XG59XG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiBceDNkIHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcbn0iLApmcmFnbWVudFNoYWRlcjoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNkZWZpbmUgUkVDSVBST0NBTF9QSSAwLjMxODMwOTg4NjE4XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkyIDAuMTU5MTU0OTRcbnZvaWQgbWFpbigpIHtcblx0dmVjMyBkaXJlY3Rpb24gXHgzZCBub3JtYWxpemUoIHZXb3JsZERpcmVjdGlvbiApO1xuXHR2ZWMyIHNhbXBsZVVWO1xuXHRzYW1wbGVVVi55IFx4M2QgYXNpbiggY2xhbXAoIGRpcmVjdGlvbi55LCAtIDEuMCwgMS4wICkgKSAqIFJFQ0lQUk9DQUxfUEkgKyAwLjU7XG5cdHNhbXBsZVVWLnggXHgzZCBhdGFuKCBkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnggKSAqIFJFQ0lQUk9DQUxfUEkyICsgMC41O1xuXHRnbF9GcmFnQ29sb3IgXHgzZCB0ZXh0dXJlMkQoIHRFcXVpcmVjdCwgc2FtcGxlVVYgKTtcbn0iLHNpZGU6MSxibGVuZGluZzowfSk7Zy51bmlmb3Jtcy50RXF1aXJlY3QudmFsdWU9YzsKYz1uZXcgeGEobmV3IFhhKDUsNSw1KSxnKTtlLmFkZChjKTtnPW5ldyBHYigxLDEwLDEpO2cucmVuZGVyVGFyZ2V0PXRoaXM7Zy5yZW5kZXJUYXJnZXQudGV4dHVyZS5uYW1lPSJDdWJlQ2FtZXJhVGV4dHVyZSI7Zy51cGRhdGUoYSxlKTtjLmdlb21ldHJ5LmRpc3Bvc2UoKTtjLm1hdGVyaWFsLmRpc3Bvc2UoKTtyZXR1cm4gdGhpc307QWIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobC5wcm90b3R5cGUpO0FiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BYjtBYi5wcm90b3R5cGUuaXNEYXRhVGV4dHVyZT0hMDt2YXIgSmk9bmV3IGssR209bmV3IGssSG09bmV3IHQ7T2JqZWN0LmFzc2lnbihIYi5wcm90b3R5cGUse2lzUGxhbmU6ITAsc2V0OmZ1bmN0aW9uKGEsYyl7dGhpcy5ub3JtYWwuY29weShhKTt0aGlzLmNvbnN0YW50PWM7cmV0dXJuIHRoaXN9LHNldENvbXBvbmVudHM6ZnVuY3Rpb24oYSxjLGUsZyl7dGhpcy5ub3JtYWwuc2V0KGEsYyxlKTt0aGlzLmNvbnN0YW50PWc7cmV0dXJuIHRoaXN9LApzZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludDpmdW5jdGlvbihhLGMpe3RoaXMubm9ybWFsLmNvcHkoYSk7dGhpcy5jb25zdGFudD0tYy5kb3QodGhpcy5ub3JtYWwpO3JldHVybiB0aGlzfSxzZXRGcm9tQ29wbGFuYXJQb2ludHM6ZnVuY3Rpb24oYSxjLGUpe2M9Smkuc3ViVmVjdG9ycyhlLGMpLmNyb3NzKEdtLnN1YlZlY3RvcnMoYSxjKSkubm9ybWFsaXplKCk7dGhpcy5zZXRGcm9tTm9ybWFsQW5kQ29wbGFuYXJQb2ludChjLGEpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLm5vcm1hbC5jb3B5KGEubm9ybWFsKTt0aGlzLmNvbnN0YW50PWEuY29uc3RhbnQ7cmV0dXJuIHRoaXN9LG5vcm1hbGl6ZTpmdW5jdGlvbigpe3ZhciBhPTEvdGhpcy5ub3JtYWwubGVuZ3RoKCk7dGhpcy5ub3JtYWwubXVsdGlwbHlTY2FsYXIoYSk7dGhpcy5jb25zdGFudCo9YTtyZXR1cm4gdGhpc30sCm5lZ2F0ZTpmdW5jdGlvbigpe3RoaXMuY29uc3RhbnQqPS0xO3RoaXMubm9ybWFsLm5lZ2F0ZSgpO3JldHVybiB0aGlzfSxkaXN0YW5jZVRvUG9pbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubm9ybWFsLmRvdChhKSt0aGlzLmNvbnN0YW50fSxkaXN0YW5jZVRvU3BoZXJlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRpc3RhbmNlVG9Qb2ludChhLmNlbnRlciktYS5yYWRpdXN9LHByb2plY3RQb2ludDpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAucHJvamVjdFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGM9bmV3IGspO3JldHVybiBjLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmRpc3RhbmNlVG9Qb2ludChhKSkuYWRkKGEpfSxpbnRlcnNlY3RMaW5lOmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5pbnRlcnNlY3RMaW5lKCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLApjPW5ldyBrKTt2YXIgZT1hLmRlbHRhKEppKSxnPXRoaXMubm9ybWFsLmRvdChlKTtpZigwPT09Zyl7aWYoMD09PXRoaXMuZGlzdGFuY2VUb1BvaW50KGEuc3RhcnQpKXJldHVybiBjLmNvcHkoYS5zdGFydCl9ZWxzZSBpZihnPS0oYS5zdGFydC5kb3QodGhpcy5ub3JtYWwpK3RoaXMuY29uc3RhbnQpL2csISgwPmd8fDE8ZykpcmV0dXJuIGMuY29weShlKS5tdWx0aXBseVNjYWxhcihnKS5hZGQoYS5zdGFydCl9LGludGVyc2VjdHNMaW5lOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuZGlzdGFuY2VUb1BvaW50KGEuc3RhcnQpO2E9dGhpcy5kaXN0YW5jZVRvUG9pbnQoYS5lbmQpO3JldHVybiAwPmMmJjA8YXx8MD5hJiYwPGN9LGludGVyc2VjdHNCb3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW50ZXJzZWN0c1BsYW5lKHRoaXMpfSxpbnRlcnNlY3RzU3BoZXJlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmludGVyc2VjdHNQbGFuZSh0aGlzKX0sY29wbGFuYXJQb2ludDpmdW5jdGlvbihhKXt2b2lkIDA9PT0KYSYmKGNvbnNvbGUud2FybigiVEhSRUUuUGxhbmU6IC5jb3BsYW5hclBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGE9bmV3IGspO3JldHVybiBhLmNvcHkodGhpcy5ub3JtYWwpLm11bHRpcGx5U2NhbGFyKC10aGlzLmNvbnN0YW50KX0sYXBwbHlNYXRyaXg0OmZ1bmN0aW9uKGEsYyl7Yz1jfHxIbS5nZXROb3JtYWxNYXRyaXgoYSk7YT10aGlzLmNvcGxhbmFyUG9pbnQoSmkpLmFwcGx5TWF0cml4NChhKTtjPXRoaXMubm9ybWFsLmFwcGx5TWF0cml4MyhjKS5ub3JtYWxpemUoKTt0aGlzLmNvbnN0YW50PS1hLmRvdChjKTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEpe3RoaXMuY29uc3RhbnQtPWEuZG90KHRoaXMubm9ybWFsKTtyZXR1cm4gdGhpc30sZXF1YWxzOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vcm1hbC5lcXVhbHModGhpcy5ub3JtYWwpJiZhLmNvbnN0YW50PT09dGhpcy5jb25zdGFudH19KTt2YXIgbWY9bmV3IEYscGg9bmV3IGs7T2JqZWN0LmFzc2lnbihpYy5wcm90b3R5cGUsCntzZXQ6ZnVuY3Rpb24oYSxjLGUsZyxyLHYpe3ZhciB6PXRoaXMucGxhbmVzO3pbMF0uY29weShhKTt6WzFdLmNvcHkoYyk7elsyXS5jb3B5KGUpO3pbM10uY29weShnKTt6WzRdLmNvcHkocik7els1XS5jb3B5KHYpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXtmb3IodmFyIGM9dGhpcy5wbGFuZXMsZT0wOzY+ZTtlKyspY1tlXS5jb3B5KGEucGxhbmVzW2VdKTtyZXR1cm4gdGhpc30sc2V0RnJvbU1hdHJpeDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnBsYW5lcyxlPWEuZWxlbWVudHM7YT1lWzBdO3ZhciBnPWVbMV0scj1lWzJdLHY9ZVszXSx6PWVbNF0sRT1lWzVdLEc9ZVs2XSxKPWVbN10sUD1lWzhdLFI9ZVs5XSxTPWVbMTBdLFY9ZVsxMV0sVz1lWzEyXSxoYT1lWzEzXSxmYT1lWzE0XTtlPWVbMTVdO2NbMF0uc2V0Q29tcG9uZW50cyh2LWEsSi16LFYtUCxlLVcpLm5vcm1hbGl6ZSgpOwpjWzFdLnNldENvbXBvbmVudHModithLEoreixWK1AsZStXKS5ub3JtYWxpemUoKTtjWzJdLnNldENvbXBvbmVudHModitnLEorRSxWK1IsZStoYSkubm9ybWFsaXplKCk7Y1szXS5zZXRDb21wb25lbnRzKHYtZyxKLUUsVi1SLGUtaGEpLm5vcm1hbGl6ZSgpO2NbNF0uc2V0Q29tcG9uZW50cyh2LXIsSi1HLFYtUyxlLWZhKS5ub3JtYWxpemUoKTtjWzVdLnNldENvbXBvbmVudHModityLEorRyxWK1MsZStmYSkubm9ybWFsaXplKCk7cmV0dXJuIHRoaXN9LGludGVyc2VjdHNPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGM9YS5nZW9tZXRyeTtudWxsPT09Yy5ib3VuZGluZ1NwaGVyZSYmYy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTttZi5jb3B5KGMuYm91bmRpbmdTcGhlcmUpLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKG1mKX0saW50ZXJzZWN0c1Nwcml0ZTpmdW5jdGlvbihhKXttZi5jZW50ZXIuc2V0KDAsMCwwKTttZi5yYWRpdXM9Ci43MDcxMDY3ODExODY1NDc2O21mLmFwcGx5TWF0cml4NChhLm1hdHJpeFdvcmxkKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKG1mKX0saW50ZXJzZWN0c1NwaGVyZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnBsYW5lcyxlPWEuY2VudGVyO2E9LWEucmFkaXVzO2Zvcih2YXIgZz0wOzY+ZztnKyspaWYoY1tnXS5kaXN0YW5jZVRvUG9pbnQoZSk8YSlyZXR1cm4hMTtyZXR1cm4hMH0saW50ZXJzZWN0c0JveDpmdW5jdGlvbihhKXtmb3IodmFyIGM9dGhpcy5wbGFuZXMsZT0wOzY+ZTtlKyspe3ZhciBnPWNbZV07cGgueD0wPGcubm9ybWFsLng/YS5tYXgueDphLm1pbi54O3BoLnk9MDxnLm5vcm1hbC55P2EubWF4Lnk6YS5taW4ueTtwaC56PTA8Zy5ub3JtYWwuej9hLm1heC56OmEubWluLno7aWYoMD5nLmRpc3RhbmNlVG9Qb2ludChwaCkpcmV0dXJuITF9cmV0dXJuITB9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMucGxhbmVzLGU9MDs2PmU7ZSsrKWlmKDA+CmNbZV0uZGlzdGFuY2VUb1BvaW50KGEpKXJldHVybiExO3JldHVybiEwfX0pO3ZhciByYj17YWxwaGFtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQUxQSEFNQVBcblx0ZGlmZnVzZUNvbG9yLmEgKlx4M2QgdGV4dHVyZTJEKCBhbHBoYU1hcCwgdlV2ICkuZztcbiNlbmRpZiIsYWxwaGFtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9BTFBIQU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBhbHBoYU1hcDtcbiNlbmRpZiIsYWxwaGF0ZXN0X2ZyYWdtZW50OiIjaWZkZWYgQUxQSEFURVNUXG5cdGlmICggZGlmZnVzZUNvbG9yLmEgXHgzYyBBTFBIQVRFU1QgKSBkaXNjYXJkO1xuI2VuZGlmIixhb21hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9BT01BUFxuXHRmbG9hdCBhbWJpZW50T2NjbHVzaW9uIFx4M2QgKCB0ZXh0dXJlMkQoIGFvTWFwLCB2VXYyICkuciAtIDEuMCApICogYW9NYXBJbnRlbnNpdHkgKyAxLjA7XG5cdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSAqXHgzZCBhbWJpZW50T2NjbHVzaW9uO1xuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIFx4MjZceDI2IGRlZmluZWQoIFNUQU5EQVJEIClcblx0XHRmbG9hdCBkb3ROViBceDNkIHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciAqXHgzZCBjb21wdXRlU3BlY3VsYXJPY2NsdXNpb24oIGRvdE5WLCBhbWJpZW50T2NjbHVzaW9uLCBtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyApO1xuXHQjZW5kaWZcbiNlbmRpZiIsCmFvbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQU9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgYW9NYXA7XG5cdHVuaWZvcm0gZmxvYXQgYW9NYXBJbnRlbnNpdHk7XG4jZW5kaWYiLGJlZ2luX3ZlcnRleDoidmVjMyB0cmFuc2Zvcm1lZCBceDNkIHZlYzMoIHBvc2l0aW9uICk7IixiZWdpbm5vcm1hbF92ZXJ0ZXg6InZlYzMgb2JqZWN0Tm9ybWFsIFx4M2QgdmVjMyggbm9ybWFsICk7XG4jaWZkZWYgVVNFX1RBTkdFTlRcblx0dmVjMyBvYmplY3RUYW5nZW50IFx4M2QgdmVjMyggdGFuZ2VudC54eXogKTtcbiNlbmRpZiIsYnNkZnM6InZlYzIgaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBjb25zdCBpbiBmbG9hdCBkb3ROViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCB2ZWM0IGMwIFx4M2QgdmVjNCggLSAxLCAtIDAuMDI3NSwgLSAwLjU3MiwgMC4wMjIgKTtcblx0Y29uc3QgdmVjNCBjMSBceDNkIHZlYzQoIDEsIDAuMDQyNSwgMS4wNCwgLSAwLjA0ICk7XG5cdHZlYzQgciBceDNkIHJvdWdobmVzcyAqIGMwICsgYzE7XG5cdGZsb2F0IGEwMDQgXHgzZCBtaW4oIHIueCAqIHIueCwgZXhwMiggLSA5LjI4ICogZG90TlYgKSApICogci54ICsgci55O1xuXHRyZXR1cm4gdmVjMiggLTEuMDQsIDEuMDQgKSAqIGEwMDQgKyByLnp3O1xufVxuZmxvYXQgcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggY29uc3QgaW4gZmxvYXQgbGlnaHREaXN0YW5jZSwgY29uc3QgaW4gZmxvYXQgY3V0b2ZmRGlzdGFuY2UsIGNvbnN0IGluIGZsb2F0IGRlY2F5RXhwb25lbnQgKSB7XG4jaWYgZGVmaW5lZCAoIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFMgKVxuXHRmbG9hdCBkaXN0YW5jZUZhbGxvZmYgXHgzZCAxLjAgLyBtYXgoIHBvdyggbGlnaHREaXN0YW5jZSwgZGVjYXlFeHBvbmVudCApLCAwLjAxICk7XG5cdGlmKCBjdXRvZmZEaXN0YW5jZSBceDNlIDAuMCApIHtcblx0XHRkaXN0YW5jZUZhbGxvZmYgKlx4M2QgcG93Miggc2F0dXJhdGUoIDEuMCAtIHBvdzQoIGxpZ2h0RGlzdGFuY2UgLyBjdXRvZmZEaXN0YW5jZSApICkgKTtcblx0fVxuXHRyZXR1cm4gZGlzdGFuY2VGYWxsb2ZmO1xuI2Vsc2Vcblx0aWYoIGN1dG9mZkRpc3RhbmNlIFx4M2UgMC4wIFx4MjZceDI2IGRlY2F5RXhwb25lbnQgXHgzZSAwLjAgKSB7XG5cdFx0cmV0dXJuIHBvdyggc2F0dXJhdGUoIC1saWdodERpc3RhbmNlIC8gY3V0b2ZmRGlzdGFuY2UgKyAxLjAgKSwgZGVjYXlFeHBvbmVudCApO1xuXHR9XG5cdHJldHVybiAxLjA7XG4jZW5kaWZcbn1cbnZlYzMgQlJERl9EaWZmdXNlX0xhbWJlcnQoIGNvbnN0IGluIHZlYzMgZGlmZnVzZUNvbG9yICkge1xuXHRyZXR1cm4gUkVDSVBST0NBTF9QSSAqIGRpZmZ1c2VDb2xvcjtcbn1cbnZlYzMgRl9TY2hsaWNrKCBjb25zdCBpbiB2ZWMzIHNwZWN1bGFyQ29sb3IsIGNvbnN0IGluIGZsb2F0IGRvdExIICkge1xuXHRmbG9hdCBmcmVzbmVsIFx4M2QgZXhwMiggKCAtNS41NTQ3MyAqIGRvdExIIC0gNi45ODMxNiApICogZG90TEggKTtcblx0cmV0dXJuICggMS4wIC0gc3BlY3VsYXJDb2xvciApICogZnJlc25lbCArIHNwZWN1bGFyQ29sb3I7XG59XG52ZWMzIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIGNvbnN0IGluIHZlYzMgRjAsIGNvbnN0IGluIGZsb2F0IGRvdE5WLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IGZyZXNuZWwgXHgzZCBleHAyKCAoIC01LjU1NDczICogZG90TlYgLSA2Ljk4MzE2ICkgKiBkb3ROViApO1xuXHR2ZWMzIEZyIFx4M2QgbWF4KCB2ZWMzKCAxLjAgLSByb3VnaG5lc3MgKSwgRjAgKSAtIEYwO1xuXHRyZXR1cm4gRnIgKiBmcmVzbmVsICsgRjA7XG59XG5mbG9hdCBHX0dHWF9TbWl0aCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5MLCBjb25zdCBpbiBmbG9hdCBkb3ROViApIHtcblx0ZmxvYXQgYTIgXHgzZCBwb3cyKCBhbHBoYSApO1xuXHRmbG9hdCBnbCBceDNkIGRvdE5MICsgc3FydCggYTIgKyAoIDEuMCAtIGEyICkgKiBwb3cyKCBkb3ROTCApICk7XG5cdGZsb2F0IGd2IFx4M2QgZG90TlYgKyBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0cmV0dXJuIDEuMCAvICggZ2wgKiBndiApO1xufVxuZmxvYXQgR19HR1hfU21pdGhDb3JyZWxhdGVkKCBjb25zdCBpbiBmbG9hdCBhbHBoYSwgY29uc3QgaW4gZmxvYXQgZG90TkwsIGNvbnN0IGluIGZsb2F0IGRvdE5WICkge1xuXHRmbG9hdCBhMiBceDNkIHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGd2IFx4M2QgZG90TkwgKiBzcXJ0KCBhMiArICggMS4wIC0gYTIgKSAqIHBvdzIoIGRvdE5WICkgKTtcblx0ZmxvYXQgZ2wgXHgzZCBkb3ROViAqIHNxcnQoIGEyICsgKCAxLjAgLSBhMiApICogcG93MiggZG90TkwgKSApO1xuXHRyZXR1cm4gMC41IC8gbWF4KCBndiArIGdsLCBFUFNJTE9OICk7XG59XG5mbG9hdCBEX0dHWCggY29uc3QgaW4gZmxvYXQgYWxwaGEsIGNvbnN0IGluIGZsb2F0IGRvdE5IICkge1xuXHRmbG9hdCBhMiBceDNkIHBvdzIoIGFscGhhICk7XG5cdGZsb2F0IGRlbm9tIFx4M2QgcG93MiggZG90TkggKSAqICggYTIgLSAxLjAgKSArIDEuMDtcblx0cmV0dXJuIFJFQ0lQUk9DQUxfUEkgKiBhMiAvIHBvdzIoIGRlbm9tICk7XG59XG52ZWMzIEJSREZfU3BlY3VsYXJfR0dYKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGluY2lkZW50TGlnaHQsIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBhbHBoYSBceDNkIHBvdzIoIHJvdWdobmVzcyApO1xuXHR2ZWMzIGhhbGZEaXIgXHgzZCBub3JtYWxpemUoIGluY2lkZW50TGlnaHQuZGlyZWN0aW9uICsgdmlld0RpciApO1xuXHRmbG9hdCBkb3ROTCBceDNkIHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKSApO1xuXHRmbG9hdCBkb3ROViBceDNkIHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdGZsb2F0IGRvdE5IIFx4M2Qgc2F0dXJhdGUoIGRvdCggbm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggXHgzZCBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiBceDNkIEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgZG90TEggKTtcblx0ZmxvYXQgRyBceDNkIEdfR0dYX1NtaXRoQ29ycmVsYXRlZCggYWxwaGEsIGRvdE5MLCBkb3ROViApO1xuXHRmbG9hdCBEIFx4M2QgRF9HR1goIGFscGhhLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbnZlYzIgTFRDX1V2KCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRjb25zdCBmbG9hdCBMVVRfU0laRSAgXHgzZCA2NC4wO1xuXHRjb25zdCBmbG9hdCBMVVRfU0NBTEUgXHgzZCAoIExVVF9TSVpFIC0gMS4wICkgLyBMVVRfU0laRTtcblx0Y29uc3QgZmxvYXQgTFVUX0JJQVMgIFx4M2QgMC41IC8gTFVUX1NJWkU7XG5cdGZsb2F0IGRvdE5WIFx4M2Qgc2F0dXJhdGUoIGRvdCggTiwgViApICk7XG5cdHZlYzIgdXYgXHgzZCB2ZWMyKCByb3VnaG5lc3MsIHNxcnQoIDEuMCAtIGRvdE5WICkgKTtcblx0dXYgXHgzZCB1diAqIExVVF9TQ0FMRSArIExVVF9CSUFTO1xuXHRyZXR1cm4gdXY7XG59XG5mbG9hdCBMVENfQ2xpcHBlZFNwaGVyZUZvcm1GYWN0b3IoIGNvbnN0IGluIHZlYzMgZiApIHtcblx0ZmxvYXQgbCBceDNkIGxlbmd0aCggZiApO1xuXHRyZXR1cm4gbWF4KCAoIGwgKiBsICsgZi56ICkgLyAoIGwgKyAxLjAgKSwgMC4wICk7XG59XG52ZWMzIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29uc3QgaW4gdmVjMyB2MSwgY29uc3QgaW4gdmVjMyB2MiApIHtcblx0ZmxvYXQgeCBceDNkIGRvdCggdjEsIHYyICk7XG5cdGZsb2F0IHkgXHgzZCBhYnMoIHggKTtcblx0ZmxvYXQgYSBceDNkIDAuODU0Mzk4NSArICggMC40OTY1MTU1ICsgMC4wMTQ1MjA2ICogeSApICogeTtcblx0ZmxvYXQgYiBceDNkIDMuNDE3NTk0MCArICggNC4xNjE2NzI0ICsgeSApICogeTtcblx0ZmxvYXQgdiBceDNkIGEgLyBiO1xuXHRmbG9hdCB0aGV0YV9zaW50aGV0YSBceDNkICggeCBceDNlIDAuMCApID8gdiA6IDAuNSAqIGludmVyc2VzcXJ0KCBtYXgoIDEuMCAtIHggKiB4LCAxZS03ICkgKSAtIHY7XG5cdHJldHVybiBjcm9zcyggdjEsIHYyICkgKiB0aGV0YV9zaW50aGV0YTtcbn1cbnZlYzMgTFRDX0V2YWx1YXRlKCBjb25zdCBpbiB2ZWMzIE4sIGNvbnN0IGluIHZlYzMgViwgY29uc3QgaW4gdmVjMyBQLCBjb25zdCBpbiBtYXQzIG1JbnYsIGNvbnN0IGluIHZlYzMgcmVjdENvb3Jkc1sgNCBdICkge1xuXHR2ZWMzIHYxIFx4M2QgcmVjdENvb3Jkc1sgMSBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIHYyIFx4M2QgcmVjdENvb3Jkc1sgMyBdIC0gcmVjdENvb3Jkc1sgMCBdO1xuXHR2ZWMzIGxpZ2h0Tm9ybWFsIFx4M2QgY3Jvc3MoIHYxLCB2MiApO1xuXHRpZiggZG90KCBsaWdodE5vcm1hbCwgUCAtIHJlY3RDb29yZHNbIDAgXSApIFx4M2MgMC4wICkgcmV0dXJuIHZlYzMoIDAuMCApO1xuXHR2ZWMzIFQxLCBUMjtcblx0VDEgXHgzZCBub3JtYWxpemUoIFYgLSBOICogZG90KCBWLCBOICkgKTtcblx0VDIgXHgzZCAtIGNyb3NzKCBOLCBUMSApO1xuXHRtYXQzIG1hdCBceDNkIG1JbnYgKiB0cmFuc3Bvc2VNYXQzKCBtYXQzKCBUMSwgVDIsIE4gKSApO1xuXHR2ZWMzIGNvb3Jkc1sgNCBdO1xuXHRjb29yZHNbIDAgXSBceDNkIG1hdCAqICggcmVjdENvb3Jkc1sgMCBdIC0gUCApO1xuXHRjb29yZHNbIDEgXSBceDNkIG1hdCAqICggcmVjdENvb3Jkc1sgMSBdIC0gUCApO1xuXHRjb29yZHNbIDIgXSBceDNkIG1hdCAqICggcmVjdENvb3Jkc1sgMiBdIC0gUCApO1xuXHRjb29yZHNbIDMgXSBceDNkIG1hdCAqICggcmVjdENvb3Jkc1sgMyBdIC0gUCApO1xuXHRjb29yZHNbIDAgXSBceDNkIG5vcm1hbGl6ZSggY29vcmRzWyAwIF0gKTtcblx0Y29vcmRzWyAxIF0gXHgzZCBub3JtYWxpemUoIGNvb3Jkc1sgMSBdICk7XG5cdGNvb3Jkc1sgMiBdIFx4M2Qgbm9ybWFsaXplKCBjb29yZHNbIDIgXSApO1xuXHRjb29yZHNbIDMgXSBceDNkIG5vcm1hbGl6ZSggY29vcmRzWyAzIF0gKTtcblx0dmVjMyB2ZWN0b3JGb3JtRmFjdG9yIFx4M2QgdmVjMyggMC4wICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgK1x4M2QgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDAgXSwgY29vcmRzWyAxIF0gKTtcblx0dmVjdG9yRm9ybUZhY3RvciArXHgzZCBMVENfRWRnZVZlY3RvckZvcm1GYWN0b3IoIGNvb3Jkc1sgMSBdLCBjb29yZHNbIDIgXSApO1xuXHR2ZWN0b3JGb3JtRmFjdG9yICtceDNkIExUQ19FZGdlVmVjdG9yRm9ybUZhY3RvciggY29vcmRzWyAyIF0sIGNvb3Jkc1sgMyBdICk7XG5cdHZlY3RvckZvcm1GYWN0b3IgK1x4M2QgTFRDX0VkZ2VWZWN0b3JGb3JtRmFjdG9yKCBjb29yZHNbIDMgXSwgY29vcmRzWyAwIF0gKTtcblx0ZmxvYXQgcmVzdWx0IFx4M2QgTFRDX0NsaXBwZWRTcGhlcmVGb3JtRmFjdG9yKCB2ZWN0b3JGb3JtRmFjdG9yICk7XG5cdHJldHVybiB2ZWMzKCByZXN1bHQgKTtcbn1cbnZlYzMgQlJERl9TcGVjdWxhcl9HR1hfRW52aXJvbm1lbnQoIGNvbnN0IGluIHZlYzMgdmlld0RpciwgY29uc3QgaW4gdmVjMyBub3JtYWwsIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCBkb3ROViBceDNkIHNhdHVyYXRlKCBkb3QoIG5vcm1hbCwgdmlld0RpciApICk7XG5cdHZlYzIgYnJkZiBceDNkIGludGVncmF0ZVNwZWN1bGFyQlJERiggZG90TlYsIHJvdWdobmVzcyApO1xuXHRyZXR1cm4gc3BlY3VsYXJDb2xvciAqIGJyZGYueCArIGJyZGYueTtcbn1cbnZvaWQgQlJERl9TcGVjdWxhcl9NdWx0aXNjYXR0ZXJpbmdfRW52aXJvbm1lbnQoIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIHZlYzMgc3BlY3VsYXJDb2xvciwgY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBpbm91dCB2ZWMzIHNpbmdsZVNjYXR0ZXIsIGlub3V0IHZlYzMgbXVsdGlTY2F0dGVyICkge1xuXHRmbG9hdCBkb3ROViBceDNkIHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdHZlYzMgRiBceDNkIEZfU2NobGlja19Sb3VnaG5lc3NEZXBlbmRlbnQoIHNwZWN1bGFyQ29sb3IsIGRvdE5WLCByb3VnaG5lc3MgKTtcblx0dmVjMiBicmRmIFx4M2QgaW50ZWdyYXRlU3BlY3VsYXJCUkRGKCBkb3ROViwgcm91Z2huZXNzICk7XG5cdHZlYzMgRnNzRXNzIFx4M2QgRiAqIGJyZGYueCArIGJyZGYueTtcblx0ZmxvYXQgRXNzIFx4M2QgYnJkZi54ICsgYnJkZi55O1xuXHRmbG9hdCBFbXMgXHgzZCAxLjAgLSBFc3M7XG5cdHZlYzMgRmF2ZyBceDNkIHNwZWN1bGFyQ29sb3IgKyAoIDEuMCAtIHNwZWN1bGFyQ29sb3IgKSAqIDAuMDQ3NjE5O1x0dmVjMyBGbXMgXHgzZCBGc3NFc3MgKiBGYXZnIC8gKCAxLjAgLSBFbXMgKiBGYXZnICk7XG5cdHNpbmdsZVNjYXR0ZXIgK1x4M2QgRnNzRXNzO1xuXHRtdWx0aVNjYXR0ZXIgK1x4M2QgRm1zICogRW1zO1xufVxuZmxvYXQgR19CbGlublBob25nX0ltcGxpY2l0KCApIHtcblx0cmV0dXJuIDAuMjU7XG59XG5mbG9hdCBEX0JsaW5uUGhvbmcoIGNvbnN0IGluIGZsb2F0IHNoaW5pbmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkggKSB7XG5cdHJldHVybiBSRUNJUFJPQ0FMX1BJICogKCBzaGluaW5lc3MgKiAwLjUgKyAxLjAgKSAqIHBvdyggZG90TkgsIHNoaW5pbmVzcyApO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX0JsaW5uUGhvbmcoIGNvbnN0IGluIEluY2lkZW50TGlnaHQgaW5jaWRlbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gdmVjMyBzcGVjdWxhckNvbG9yLCBjb25zdCBpbiBmbG9hdCBzaGluaW5lc3MgKSB7XG5cdHZlYzMgaGFsZkRpciBceDNkIG5vcm1hbGl6ZSggaW5jaWRlbnRMaWdodC5kaXJlY3Rpb24gKyBnZW9tZXRyeS52aWV3RGlyICk7XG5cdGZsb2F0IGRvdE5IIFx4M2Qgc2F0dXJhdGUoIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoYWxmRGlyICkgKTtcblx0ZmxvYXQgZG90TEggXHgzZCBzYXR1cmF0ZSggZG90KCBpbmNpZGVudExpZ2h0LmRpcmVjdGlvbiwgaGFsZkRpciApICk7XG5cdHZlYzMgRiBceDNkIEZfU2NobGljayggc3BlY3VsYXJDb2xvciwgZG90TEggKTtcblx0ZmxvYXQgRyBceDNkIEdfQmxpbm5QaG9uZ19JbXBsaWNpdCggKTtcblx0ZmxvYXQgRCBceDNkIERfQmxpbm5QaG9uZyggc2hpbmluZXNzLCBkb3ROSCApO1xuXHRyZXR1cm4gRiAqICggRyAqIEQgKTtcbn1cbmZsb2F0IEdHWFJvdWdobmVzc1RvQmxpbm5FeHBvbmVudCggY29uc3QgaW4gZmxvYXQgZ2d4Um91Z2huZXNzICkge1xuXHRyZXR1cm4gKCAyLjAgLyBwb3cyKCBnZ3hSb3VnaG5lc3MgKyAwLjAwMDEgKSAtIDIuMCApO1xufVxuZmxvYXQgQmxpbm5FeHBvbmVudFRvR0dYUm91Z2huZXNzKCBjb25zdCBpbiBmbG9hdCBibGlubkV4cG9uZW50ICkge1xuXHRyZXR1cm4gc3FydCggMi4wIC8gKCBibGlubkV4cG9uZW50ICsgMi4wICkgKTtcbn1cbiNpZiBkZWZpbmVkKCBVU0VfU0hFRU4gKVxuZmxvYXQgRF9DaGFybGllKGZsb2F0IHJvdWdobmVzcywgZmxvYXQgTm9IKSB7XG5cdGZsb2F0IGludkFscGhhICBceDNkIDEuMCAvIHJvdWdobmVzcztcblx0ZmxvYXQgY29zMmggXHgzZCBOb0ggKiBOb0g7XG5cdGZsb2F0IHNpbjJoIFx4M2QgbWF4KDEuMCAtIGNvczJoLCAwLjAwNzgxMjUpO1x0cmV0dXJuICgyLjAgKyBpbnZBbHBoYSkgKiBwb3coc2luMmgsIGludkFscGhhICogMC41KSAvICgyLjAgKiBQSSk7XG59XG5mbG9hdCBWX05ldWJlbHQoZmxvYXQgTm9WLCBmbG9hdCBOb0wpIHtcblx0cmV0dXJuIHNhdHVyYXRlKDEuMCAvICg0LjAgKiAoTm9MICsgTm9WIC0gTm9MICogTm9WKSkpO1xufVxudmVjMyBCUkRGX1NwZWN1bGFyX1NoZWVuKCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIHZlYzMgTCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgdmVjMyBzcGVjdWxhckNvbG9yICkge1xuXHR2ZWMzIE4gXHgzZCBnZW9tZXRyeS5ub3JtYWw7XG5cdHZlYzMgViBceDNkIGdlb21ldHJ5LnZpZXdEaXI7XG5cdHZlYzMgSCBceDNkIG5vcm1hbGl6ZSggViArIEwgKTtcblx0ZmxvYXQgZG90TkggXHgzZCBzYXR1cmF0ZSggZG90KCBOLCBIICkgKTtcblx0cmV0dXJuIHNwZWN1bGFyQ29sb3IgKiBEX0NoYXJsaWUoIHJvdWdobmVzcywgZG90TkggKSAqIFZfTmV1YmVsdCggZG90KE4sIFYpLCBkb3QoTiwgTCkgKTtcbn1cbiNlbmRpZiIsCmJ1bXBtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9CVU1QTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGJ1bXBNYXA7XG5cdHVuaWZvcm0gZmxvYXQgYnVtcFNjYWxlO1xuXHR2ZWMyIGRIZHh5X2Z3ZCgpIHtcblx0XHR2ZWMyIGRTVGR4IFx4M2QgZEZkeCggdlV2ICk7XG5cdFx0dmVjMiBkU1RkeSBceDNkIGRGZHkoIHZVdiApO1xuXHRcdGZsb2F0IEhsbCBceDNkIGJ1bXBTY2FsZSAqIHRleHR1cmUyRCggYnVtcE1hcCwgdlV2ICkueDtcblx0XHRmbG9hdCBkQnggXHgzZCBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR4ICkueCAtIEhsbDtcblx0XHRmbG9hdCBkQnkgXHgzZCBidW1wU2NhbGUgKiB0ZXh0dXJlMkQoIGJ1bXBNYXAsIHZVdiArIGRTVGR5ICkueCAtIEhsbDtcblx0XHRyZXR1cm4gdmVjMiggZEJ4LCBkQnkgKTtcblx0fVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWxBcmIoIHZlYzMgc3VyZl9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIGRIZHh5ICkge1xuXHRcdHZlYzMgdlNpZ21hWCBceDNkIHZlYzMoIGRGZHgoIHN1cmZfcG9zLnggKSwgZEZkeCggc3VyZl9wb3MueSApLCBkRmR4KCBzdXJmX3Bvcy56ICkgKTtcblx0XHR2ZWMzIHZTaWdtYVkgXHgzZCB2ZWMzKCBkRmR5KCBzdXJmX3Bvcy54ICksIGRGZHkoIHN1cmZfcG9zLnkgKSwgZEZkeSggc3VyZl9wb3MueiApICk7XG5cdFx0dmVjMyB2TiBceDNkIHN1cmZfbm9ybTtcblx0XHR2ZWMzIFIxIFx4M2QgY3Jvc3MoIHZTaWdtYVksIHZOICk7XG5cdFx0dmVjMyBSMiBceDNkIGNyb3NzKCB2TiwgdlNpZ21hWCApO1xuXHRcdGZsb2F0IGZEZXQgXHgzZCBkb3QoIHZTaWdtYVgsIFIxICk7XG5cdFx0ZkRldCAqXHgzZCAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0dmVjMyB2R3JhZCBceDNkIHNpZ24oIGZEZXQgKSAqICggZEhkeHkueCAqIFIxICsgZEhkeHkueSAqIFIyICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggYWJzKCBmRGV0ICkgKiBzdXJmX25vcm0gLSB2R3JhZCApO1xuXHR9XG4jZW5kaWYiLApjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTIFx4M2UgMFxuXHR2ZWM0IHBsYW5lO1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpIFx4M2QgMDsgaSBceDNjIFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSArKyApIHtcblx0XHRwbGFuZSBceDNkIGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0aWYgKCBkb3QoIHZWaWV3UG9zaXRpb24sIHBsYW5lLnh5eiApIFx4M2UgcGxhbmUudyApIGRpc2NhcmQ7XG5cdH1cblx0I2lmIFVOSU9OX0NMSVBQSU5HX1BMQU5FUyBceDNjIE5VTV9DTElQUElOR19QTEFORVNcblx0XHRib29sIGNsaXBwZWQgXHgzZCB0cnVlO1xuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0XHRmb3IgKCBpbnQgaSBceDNkIFVOSU9OX0NMSVBQSU5HX1BMQU5FUzsgaSBceDNjIE5VTV9DTElQUElOR19QTEFORVM7IGkgKysgKSB7XG5cdFx0XHRwbGFuZSBceDNkIGNsaXBwaW5nUGxhbmVzWyBpIF07XG5cdFx0XHRjbGlwcGVkIFx4M2QgKCBkb3QoIHZWaWV3UG9zaXRpb24sIHBsYW5lLnh5eiApIFx4M2UgcGxhbmUudyApIFx4MjZceDI2IGNsaXBwZWQ7XG5cdFx0fVxuXHRcdGlmICggY2xpcHBlZCApIGRpc2NhcmQ7XG5cdCNlbmRpZlxuI2VuZGlmIiwKY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnQ6IiNpZiBOVU1fQ0xJUFBJTkdfUExBTkVTIFx4M2UgMFxuXHQjaWYgISBkZWZpbmVkKCBTVEFOREFSRCApIFx4MjZceDI2ICEgZGVmaW5lZCggUEhPTkcgKSBceDI2XHgyNiAhIGRlZmluZWQoIE1BVENBUCApXG5cdFx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG5cdCNlbmRpZlxuXHR1bmlmb3JtIHZlYzQgY2xpcHBpbmdQbGFuZXNbIE5VTV9DTElQUElOR19QTEFORVMgXTtcbiNlbmRpZiIsY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyBceDNlIDAgXHgyNlx4MjYgISBkZWZpbmVkKCBTVEFOREFSRCApIFx4MjZceDI2ICEgZGVmaW5lZCggUEhPTkcgKSBceDI2XHgyNiAhIGRlZmluZWQoIE1BVENBUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmIixjbGlwcGluZ19wbGFuZXNfdmVydGV4OiIjaWYgTlVNX0NMSVBQSU5HX1BMQU5FUyBceDNlIDAgXHgyNlx4MjYgISBkZWZpbmVkKCBTVEFOREFSRCApIFx4MjZceDI2ICEgZGVmaW5lZCggUEhPTkcgKSBceDI2XHgyNiAhIGRlZmluZWQoIE1BVENBUCApXG5cdHZWaWV3UG9zaXRpb24gXHgzZCAtIG12UG9zaXRpb24ueHl6O1xuI2VuZGlmIiwKY29sb3JfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ09MT1Jcblx0ZGlmZnVzZUNvbG9yLnJnYiAqXHgzZCB2Q29sb3I7XG4jZW5kaWYiLGNvbG9yX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ09MT1Jcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfQ09MT1Jcblx0dmFyeWluZyB2ZWMzIHZDb2xvcjtcbiNlbmRpZiIsY29sb3JfdmVydGV4OiIjaWZkZWYgVVNFX0NPTE9SXG5cdHZDb2xvci54eXogXHgzZCBjb2xvci54eXo7XG4jZW5kaWYiLGNvbW1vbjoiI2RlZmluZSBQSSAzLjE0MTU5MjY1MzU5XG4jZGVmaW5lIFBJMiA2LjI4MzE4NTMwNzE4XG4jZGVmaW5lIFBJX0hBTEYgMS41NzA3OTYzMjY3OTQ5XG4jZGVmaW5lIFJFQ0lQUk9DQUxfUEkgMC4zMTgzMDk4ODYxOFxuI2RlZmluZSBSRUNJUFJPQ0FMX1BJMiAwLjE1OTE1NDk0XG4jZGVmaW5lIExPRzIgMS40NDI2OTVcbiNkZWZpbmUgRVBTSUxPTiAxZS02XG4jZGVmaW5lIHNhdHVyYXRlKGEpIGNsYW1wKCBhLCAwLjAsIDEuMCApXG4jZGVmaW5lIHdoaXRlQ29tcGxlbWVudChhKSAoIDEuMCAtIHNhdHVyYXRlKCBhICkgKVxuZmxvYXQgcG93MiggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeDsgfVxuZmxvYXQgcG93MyggY29uc3QgaW4gZmxvYXQgeCApIHsgcmV0dXJuIHgqeCp4OyB9XG5mbG9hdCBwb3c0KCBjb25zdCBpbiBmbG9hdCB4ICkgeyBmbG9hdCB4MiBceDNkIHgqeDsgcmV0dXJuIHgyKngyOyB9XG5mbG9hdCBhdmVyYWdlKCBjb25zdCBpbiB2ZWMzIGNvbG9yICkgeyByZXR1cm4gZG90KCBjb2xvciwgdmVjMyggMC4zMzMzICkgKTsgfVxuaGlnaHAgZmxvYXQgcmFuZCggY29uc3QgaW4gdmVjMiB1diApIHtcblx0Y29uc3QgaGlnaHAgZmxvYXQgYSBceDNkIDEyLjk4OTgsIGIgXHgzZCA3OC4yMzMsIGMgXHgzZCA0Mzc1OC41NDUzO1xuXHRoaWdocCBmbG9hdCBkdCBceDNkIGRvdCggdXYueHksIHZlYzIoIGEsYiApICksIHNuIFx4M2QgbW9kKCBkdCwgUEkgKTtcblx0cmV0dXJuIGZyYWN0KHNpbihzbikgKiBjKTtcbn1cbiNpZmRlZiBISUdIX1BSRUNJU0lPTlxuXHRmbG9hdCBwcmVjaXNpb25TYWZlTGVuZ3RoKCB2ZWMzIHYgKSB7IHJldHVybiBsZW5ndGgoIHYgKTsgfVxuI2Vsc2Vcblx0ZmxvYXQgbWF4MyggdmVjMyB2ICkgeyByZXR1cm4gbWF4KCBtYXgoIHYueCwgdi55ICksIHYueiApOyB9XG5cdGZsb2F0IHByZWNpc2lvblNhZmVMZW5ndGgoIHZlYzMgdiApIHtcblx0XHRmbG9hdCBtYXhDb21wb25lbnQgXHgzZCBtYXgzKCBhYnMoIHYgKSApO1xuXHRcdHJldHVybiBsZW5ndGgoIHYgLyBtYXhDb21wb25lbnQgKSAqIG1heENvbXBvbmVudDtcblx0fVxuI2VuZGlmXG5zdHJ1Y3QgSW5jaWRlbnRMaWdodCB7XG5cdHZlYzMgY29sb3I7XG5cdHZlYzMgZGlyZWN0aW9uO1xuXHRib29sIHZpc2libGU7XG59O1xuc3RydWN0IFJlZmxlY3RlZExpZ2h0IHtcblx0dmVjMyBkaXJlY3REaWZmdXNlO1xuXHR2ZWMzIGRpcmVjdFNwZWN1bGFyO1xuXHR2ZWMzIGluZGlyZWN0RGlmZnVzZTtcblx0dmVjMyBpbmRpcmVjdFNwZWN1bGFyO1xufTtcbnN0cnVjdCBHZW9tZXRyaWNDb250ZXh0IHtcblx0dmVjMyBwb3NpdGlvbjtcblx0dmVjMyBub3JtYWw7XG5cdHZlYzMgdmlld0RpcjtcbiNpZmRlZiBDTEVBUkNPQVRcblx0dmVjMyBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbn07XG52ZWMzIHRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIG1hdHJpeCAqIHZlYzQoIGRpciwgMC4wICkgKS54eXogKTtcbn1cbnZlYzMgaW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiggaW4gdmVjMyBkaXIsIGluIG1hdDQgbWF0cml4ICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCAoIHZlYzQoIGRpciwgMC4wICkgKiBtYXRyaXggKS54eXogKTtcbn1cbnZlYzMgcHJvamVjdE9uUGxhbmUoaW4gdmVjMyBwb2ludCwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdGZsb2F0IGRpc3RhbmNlIFx4M2QgZG90KCBwbGFuZU5vcm1hbCwgcG9pbnQgLSBwb2ludE9uUGxhbmUgKTtcblx0cmV0dXJuIC0gZGlzdGFuY2UgKiBwbGFuZU5vcm1hbCArIHBvaW50O1xufVxuZmxvYXQgc2lkZU9mUGxhbmUoIGluIHZlYzMgcG9pbnQsIGluIHZlYzMgcG9pbnRPblBsYW5lLCBpbiB2ZWMzIHBsYW5lTm9ybWFsICkge1xuXHRyZXR1cm4gc2lnbiggZG90KCBwb2ludCAtIHBvaW50T25QbGFuZSwgcGxhbmVOb3JtYWwgKSApO1xufVxudmVjMyBsaW5lUGxhbmVJbnRlcnNlY3QoIGluIHZlYzMgcG9pbnRPbkxpbmUsIGluIHZlYzMgbGluZURpcmVjdGlvbiwgaW4gdmVjMyBwb2ludE9uUGxhbmUsIGluIHZlYzMgcGxhbmVOb3JtYWwgKSB7XG5cdHJldHVybiBsaW5lRGlyZWN0aW9uICogKCBkb3QoIHBsYW5lTm9ybWFsLCBwb2ludE9uUGxhbmUgLSBwb2ludE9uTGluZSApIC8gZG90KCBwbGFuZU5vcm1hbCwgbGluZURpcmVjdGlvbiApICkgKyBwb2ludE9uTGluZTtcbn1cbm1hdDMgdHJhbnNwb3NlTWF0MyggY29uc3QgaW4gbWF0MyBtICkge1xuXHRtYXQzIHRtcDtcblx0dG1wWyAwIF0gXHgzZCB2ZWMzKCBtWyAwIF0ueCwgbVsgMSBdLngsIG1bIDIgXS54ICk7XG5cdHRtcFsgMSBdIFx4M2QgdmVjMyggbVsgMCBdLnksIG1bIDEgXS55LCBtWyAyIF0ueSApO1xuXHR0bXBbIDIgXSBceDNkIHZlYzMoIG1bIDAgXS56LCBtWyAxIF0ueiwgbVsgMiBdLnogKTtcblx0cmV0dXJuIHRtcDtcbn1cbmZsb2F0IGxpbmVhclRvUmVsYXRpdmVMdW1pbmFuY2UoIGNvbnN0IGluIHZlYzMgY29sb3IgKSB7XG5cdHZlYzMgd2VpZ2h0cyBceDNkIHZlYzMoIDAuMjEyNiwgMC43MTUyLCAwLjA3MjIgKTtcblx0cmV0dXJuIGRvdCggd2VpZ2h0cywgY29sb3IucmdiICk7XG59IiwKY3ViZV91dl9yZWZsZWN0aW9uX2ZyYWdtZW50OiIjaWZkZWYgRU5WTUFQX1RZUEVfQ1VCRV9VVlxuI2RlZmluZSBjdWJlVVZfdGV4dHVyZVNpemUgKDEwMjQuMClcbmludCBnZXRGYWNlRnJvbURpcmVjdGlvbih2ZWMzIGRpcmVjdGlvbikge1xuXHR2ZWMzIGFic0RpcmVjdGlvbiBceDNkIGFicyhkaXJlY3Rpb24pO1xuXHRpbnQgZmFjZSBceDNkIC0xO1xuXHRpZiggYWJzRGlyZWN0aW9uLnggXHgzZSBhYnNEaXJlY3Rpb24ueiApIHtcblx0XHRpZihhYnNEaXJlY3Rpb24ueCBceDNlIGFic0RpcmVjdGlvbi55IClcblx0XHRcdGZhY2UgXHgzZCBkaXJlY3Rpb24ueCBceDNlIDAuMCA/IDAgOiAzO1xuXHRcdGVsc2Vcblx0XHRcdGZhY2UgXHgzZCBkaXJlY3Rpb24ueSBceDNlIDAuMCA/IDEgOiA0O1xuXHR9XG5cdGVsc2Uge1xuXHRcdGlmKGFic0RpcmVjdGlvbi56IFx4M2UgYWJzRGlyZWN0aW9uLnkgKVxuXHRcdFx0ZmFjZSBceDNkIGRpcmVjdGlvbi56IFx4M2UgMC4wID8gMiA6IDU7XG5cdFx0ZWxzZVxuXHRcdFx0ZmFjZSBceDNkIGRpcmVjdGlvbi55IFx4M2UgMC4wID8gMSA6IDQ7XG5cdH1cblx0cmV0dXJuIGZhY2U7XG59XG4jZGVmaW5lIGN1YmVVVl9tYXhMb2RzMSAgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMS4wKVxuI2RlZmluZSBjdWJlVVZfcmFuZ2VDbGFtcCAoZXhwMigoNi4wIC0gMS4wKSAqIDIuMCkpXG52ZWMyIE1pcExldmVsSW5mbyggdmVjMyB2ZWMsIGZsb2F0IHJvdWdobmVzc0xldmVsLCBmbG9hdCByb3VnaG5lc3MgKSB7XG5cdGZsb2F0IHNjYWxlIFx4M2QgZXhwMihjdWJlVVZfbWF4TG9kczEgLSByb3VnaG5lc3NMZXZlbCk7XG5cdGZsb2F0IGR4Um91Z2huZXNzIFx4M2QgZEZkeChyb3VnaG5lc3MpO1xuXHRmbG9hdCBkeVJvdWdobmVzcyBceDNkIGRGZHkocm91Z2huZXNzKTtcblx0dmVjMyBkeCBceDNkIGRGZHgoIHZlYyAqIHNjYWxlICogZHhSb3VnaG5lc3MgKTtcblx0dmVjMyBkeSBceDNkIGRGZHkoIHZlYyAqIHNjYWxlICogZHlSb3VnaG5lc3MgKTtcblx0ZmxvYXQgZCBceDNkIG1heCggZG90KCBkeCwgZHggKSwgZG90KCBkeSwgZHkgKSApO1xuXHRkIFx4M2QgY2xhbXAoZCwgMS4wLCBjdWJlVVZfcmFuZ2VDbGFtcCk7XG5cdGZsb2F0IG1pcExldmVsIFx4M2QgMC41ICogbG9nMihkKTtcblx0cmV0dXJuIHZlYzIoZmxvb3IobWlwTGV2ZWwpLCBmcmFjdChtaXBMZXZlbCkpO1xufVxuI2RlZmluZSBjdWJlVVZfbWF4TG9kczIgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMi4wKVxuI2RlZmluZSBjdWJlVVZfcmNwVGV4dHVyZVNpemUgKDEuMCAvIGN1YmVVVl90ZXh0dXJlU2l6ZSlcbnZlYzIgZ2V0Q3ViZVVWKHZlYzMgZGlyZWN0aW9uLCBmbG9hdCByb3VnaG5lc3NMZXZlbCwgZmxvYXQgbWlwTGV2ZWwpIHtcblx0bWlwTGV2ZWwgXHgzZCByb3VnaG5lc3NMZXZlbCBceDNlIGN1YmVVVl9tYXhMb2RzMiAtIDMuMCA/IDAuMCA6IG1pcExldmVsO1xuXHRmbG9hdCBhIFx4M2QgMTYuMCAqIGN1YmVVVl9yY3BUZXh0dXJlU2l6ZTtcblx0dmVjMiBleHAyX3BhY2tlZCBceDNkIGV4cDIoIHZlYzIoIHJvdWdobmVzc0xldmVsLCBtaXBMZXZlbCApICk7XG5cdHZlYzIgcmNwX2V4cDJfcGFja2VkIFx4M2QgdmVjMiggMS4wICkgLyBleHAyX3BhY2tlZDtcblx0ZmxvYXQgcG93U2NhbGUgXHgzZCBleHAyX3BhY2tlZC54ICogZXhwMl9wYWNrZWQueTtcblx0ZmxvYXQgc2NhbGUgXHgzZCByY3BfZXhwMl9wYWNrZWQueCAqIHJjcF9leHAyX3BhY2tlZC55ICogMC4yNTtcblx0ZmxvYXQgbWlwT2Zmc2V0IFx4M2QgMC43NSooMS4wIC0gcmNwX2V4cDJfcGFja2VkLnkpICogcmNwX2V4cDJfcGFja2VkLng7XG5cdGJvb2wgYlJlcyBceDNkIG1pcExldmVsIFx4M2RceDNkIDAuMDtcblx0c2NhbGUgXHgzZCAgYlJlcyBceDI2XHgyNiAoc2NhbGUgXHgzYyBhKSA/IGEgOiBzY2FsZTtcblx0dmVjMyByO1xuXHR2ZWMyIG9mZnNldDtcblx0aW50IGZhY2UgXHgzZCBnZXRGYWNlRnJvbURpcmVjdGlvbihkaXJlY3Rpb24pO1xuXHRmbG9hdCByY3BQb3dTY2FsZSBceDNkIDEuMCAvIHBvd1NjYWxlO1xuXHRpZiggZmFjZSBceDNkXHgzZCAwKSB7XG5cdFx0ciBceDNkIHZlYzMoZGlyZWN0aW9uLngsIC1kaXJlY3Rpb24ueiwgZGlyZWN0aW9uLnkpO1xuXHRcdG9mZnNldCBceDNkIHZlYzIoMC4wK21pcE9mZnNldCwwLjc1ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55IFx4M2QgYlJlcyBceDI2XHgyNiAob2Zmc2V0LnkgXHgzYyAyLjAqYSkgPyBhIDogb2Zmc2V0Lnk7XG5cdH1cblx0ZWxzZSBpZiggZmFjZSBceDNkXHgzZCAxKSB7XG5cdFx0ciBceDNkIHZlYzMoZGlyZWN0aW9uLnksIGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueik7XG5cdFx0b2Zmc2V0IFx4M2QgdmVjMihzY2FsZSttaXBPZmZzZXQsIDAuNzUgKiByY3BQb3dTY2FsZSk7XG5cdFx0b2Zmc2V0LnkgXHgzZCBiUmVzIFx4MjZceDI2IChvZmZzZXQueSBceDNjIDIuMCphKSA/IGEgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlIFx4M2RceDNkIDIpIHtcblx0XHRyIFx4M2QgdmVjMyhkaXJlY3Rpb24ueiwgZGlyZWN0aW9uLngsIGRpcmVjdGlvbi55KTtcblx0XHRvZmZzZXQgXHgzZCB2ZWMyKDIuMCpzY2FsZSttaXBPZmZzZXQsIDAuNzUgKiByY3BQb3dTY2FsZSk7XG5cdFx0b2Zmc2V0LnkgXHgzZCBiUmVzIFx4MjZceDI2IChvZmZzZXQueSBceDNjIDIuMCphKSA/IGEgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlIFx4M2RceDNkIDMpIHtcblx0XHRyIFx4M2QgdmVjMyhkaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnosIGRpcmVjdGlvbi55KTtcblx0XHRvZmZzZXQgXHgzZCB2ZWMyKDAuMCttaXBPZmZzZXQsMC41ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55IFx4M2QgYlJlcyBceDI2XHgyNiAob2Zmc2V0LnkgXHgzYyAyLjAqYSkgPyAwLjAgOiBvZmZzZXQueTtcblx0fVxuXHRlbHNlIGlmKCBmYWNlIFx4M2RceDNkIDQpIHtcblx0XHRyIFx4M2QgdmVjMyhkaXJlY3Rpb24ueSwgZGlyZWN0aW9uLngsIC1kaXJlY3Rpb24ueik7XG5cdFx0b2Zmc2V0IFx4M2QgdmVjMihzY2FsZSttaXBPZmZzZXQsIDAuNSAqIHJjcFBvd1NjYWxlKTtcblx0XHRvZmZzZXQueSBceDNkIGJSZXMgXHgyNlx4MjYgKG9mZnNldC55IFx4M2MgMi4wKmEpID8gMC4wIDogb2Zmc2V0Lnk7XG5cdH1cblx0ZWxzZSB7XG5cdFx0ciBceDNkIHZlYzMoZGlyZWN0aW9uLnosIC1kaXJlY3Rpb24ueCwgZGlyZWN0aW9uLnkpO1xuXHRcdG9mZnNldCBceDNkIHZlYzIoMi4wKnNjYWxlK21pcE9mZnNldCwgMC41ICogcmNwUG93U2NhbGUpO1xuXHRcdG9mZnNldC55IFx4M2QgYlJlcyBceDI2XHgyNiAob2Zmc2V0LnkgXHgzYyAyLjAqYSkgPyAwLjAgOiBvZmZzZXQueTtcblx0fVxuXHRyIFx4M2Qgbm9ybWFsaXplKHIpO1xuXHRmbG9hdCB0ZXhlbE9mZnNldCBceDNkIDAuNSAqIGN1YmVVVl9yY3BUZXh0dXJlU2l6ZTtcblx0dmVjMiBzIFx4M2QgKCByLnl6IC8gYWJzKCByLnggKSArIHZlYzIoIDEuMCApICkgKiAwLjU7XG5cdHZlYzIgYmFzZSBceDNkIG9mZnNldCArIHZlYzIoIHRleGVsT2Zmc2V0ICk7XG5cdHJldHVybiBiYXNlICsgcyAqICggc2NhbGUgLSAyLjAgKiB0ZXhlbE9mZnNldCApO1xufVxuI2RlZmluZSBjdWJlVVZfbWF4TG9kczMgKGxvZzIoY3ViZVVWX3RleHR1cmVTaXplKjAuMjUpIC0gMy4wKVxudmVjNCB0ZXh0dXJlQ3ViZVVWKCBzYW1wbGVyMkQgZW52TWFwLCB2ZWMzIHJlZmxlY3RlZERpcmVjdGlvbiwgZmxvYXQgcm91Z2huZXNzICkge1xuXHRmbG9hdCByb3VnaG5lc3NWYWwgXHgzZCByb3VnaG5lc3MqIGN1YmVVVl9tYXhMb2RzMztcblx0ZmxvYXQgcjEgXHgzZCBmbG9vcihyb3VnaG5lc3NWYWwpO1xuXHRmbG9hdCByMiBceDNkIHIxICsgMS4wO1xuXHRmbG9hdCB0IFx4M2QgZnJhY3Qocm91Z2huZXNzVmFsKTtcblx0dmVjMiBtaXBJbmZvIFx4M2QgTWlwTGV2ZWxJbmZvKHJlZmxlY3RlZERpcmVjdGlvbiwgcjEsIHJvdWdobmVzcyk7XG5cdGZsb2F0IHMgXHgzZCBtaXBJbmZvLnk7XG5cdGZsb2F0IGxldmVsMCBceDNkIG1pcEluZm8ueDtcblx0ZmxvYXQgbGV2ZWwxIFx4M2QgbGV2ZWwwICsgMS4wO1xuXHRsZXZlbDEgXHgzZCBsZXZlbDEgXHgzZSA1LjAgPyA1LjAgOiBsZXZlbDE7XG5cdGxldmVsMCArXHgzZCBtaW4oIGZsb29yKCBzICsgMC41ICksIDUuMCApO1xuXHR2ZWMyIHV2XzEwIFx4M2QgZ2V0Q3ViZVVWKHJlZmxlY3RlZERpcmVjdGlvbiwgcjEsIGxldmVsMCk7XG5cdHZlYzQgY29sb3IxMCBceDNkIGVudk1hcFRleGVsVG9MaW5lYXIodGV4dHVyZTJEKGVudk1hcCwgdXZfMTApKTtcblx0dmVjMiB1dl8yMCBceDNkIGdldEN1YmVVVihyZWZsZWN0ZWREaXJlY3Rpb24sIHIyLCBsZXZlbDApO1xuXHR2ZWM0IGNvbG9yMjAgXHgzZCBlbnZNYXBUZXhlbFRvTGluZWFyKHRleHR1cmUyRChlbnZNYXAsIHV2XzIwKSk7XG5cdHZlYzQgcmVzdWx0IFx4M2QgbWl4KGNvbG9yMTAsIGNvbG9yMjAsIHQpO1xuXHRyZXR1cm4gdmVjNChyZXN1bHQucmdiLCAxLjApO1xufVxuI2VuZGlmIiwKZGVmYXVsdG5vcm1hbF92ZXJ0ZXg6InZlYzMgdHJhbnNmb3JtZWROb3JtYWwgXHgzZCBub3JtYWxNYXRyaXggKiBvYmplY3ROb3JtYWw7XG4jaWZkZWYgRkxJUF9TSURFRFxuXHR0cmFuc2Zvcm1lZE5vcm1hbCBceDNkIC0gdHJhbnNmb3JtZWROb3JtYWw7XG4jZW5kaWZcbiNpZmRlZiBVU0VfVEFOR0VOVFxuXHR2ZWMzIHRyYW5zZm9ybWVkVGFuZ2VudCBceDNkIG5vcm1hbE1hdHJpeCAqIG9iamVjdFRhbmdlbnQ7XG5cdCNpZmRlZiBGTElQX1NJREVEXG5cdFx0dHJhbnNmb3JtZWRUYW5nZW50IFx4M2QgLSB0cmFuc2Zvcm1lZFRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRElTUExBQ0VNRU5UTUFQXG5cdHVuaWZvcm0gc2FtcGxlcjJEIGRpc3BsYWNlbWVudE1hcDtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRTY2FsZTtcblx0dW5pZm9ybSBmbG9hdCBkaXNwbGFjZW1lbnRCaWFzO1xuI2VuZGlmIixkaXNwbGFjZW1lbnRtYXBfdmVydGV4OiIjaWZkZWYgVVNFX0RJU1BMQUNFTUVOVE1BUFxuXHR0cmFuc2Zvcm1lZCArXHgzZCBub3JtYWxpemUoIG9iamVjdE5vcm1hbCApICogKCB0ZXh0dXJlMkQoIGRpc3BsYWNlbWVudE1hcCwgdXYgKS54ICogZGlzcGxhY2VtZW50U2NhbGUgKyBkaXNwbGFjZW1lbnRCaWFzICk7XG4jZW5kaWYiLAplbWlzc2l2ZW1hcF9mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR2ZWM0IGVtaXNzaXZlQ29sb3IgXHgzZCB0ZXh0dXJlMkQoIGVtaXNzaXZlTWFwLCB2VXYgKTtcblx0ZW1pc3NpdmVDb2xvci5yZ2IgXHgzZCBlbWlzc2l2ZU1hcFRleGVsVG9MaW5lYXIoIGVtaXNzaXZlQ29sb3IgKS5yZ2I7XG5cdHRvdGFsRW1pc3NpdmVSYWRpYW5jZSAqXHgzZCBlbWlzc2l2ZUNvbG9yLnJnYjtcbiNlbmRpZiIsZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9FTUlTU0lWRU1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBlbWlzc2l2ZU1hcDtcbiNlbmRpZiIsZW5jb2RpbmdzX2ZyYWdtZW50OiJnbF9GcmFnQ29sb3IgXHgzZCBsaW5lYXJUb091dHB1dFRleGVsKCBnbF9GcmFnQ29sb3IgKTsiLGVuY29kaW5nc19wYXJzX2ZyYWdtZW50OiJcbnZlYzQgTGluZWFyVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2YWx1ZTtcbn1cbnZlYzQgR2FtbWFUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSwgaW4gZmxvYXQgZ2FtbWFGYWN0b3IgKSB7XG5cdHJldHVybiB2ZWM0KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggZ2FtbWFGYWN0b3IgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IExpbmVhclRvR2FtbWEoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IGdhbW1hRmFjdG9yICkge1xuXHRyZXR1cm4gdmVjNCggcG93KCB2YWx1ZS5yZ2IsIHZlYzMoIDEuMCAvIGdhbW1hRmFjdG9yICkgKSwgdmFsdWUuYSApO1xufVxudmVjNCBzUkdCVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUgKSB7XG5cdHJldHVybiB2ZWM0KCBtaXgoIHBvdyggdmFsdWUucmdiICogMC45NDc4NjcyOTg2ICsgdmVjMyggMC4wNTIxMzI3MDE0ICksIHZlYzMoIDIuNCApICksIHZhbHVlLnJnYiAqIDAuMDc3Mzk5MzgwOCwgdmVjMyggbGVzc1RoYW5FcXVhbCggdmFsdWUucmdiLCB2ZWMzKCAwLjA0MDQ1ICkgKSApICksIHZhbHVlLmEgKTtcbn1cbnZlYzQgTGluZWFyVG9zUkdCKCBpbiB2ZWM0IHZhbHVlICkge1xuXHRyZXR1cm4gdmVjNCggbWl4KCBwb3coIHZhbHVlLnJnYiwgdmVjMyggMC40MTY2NiApICkgKiAxLjA1NSAtIHZlYzMoIDAuMDU1ICksIHZhbHVlLnJnYiAqIDEyLjkyLCB2ZWMzKCBsZXNzVGhhbkVxdWFsKCB2YWx1ZS5yZ2IsIHZlYzMoIDAuMDAzMTMwOCApICkgKSApLCB2YWx1ZS5hICk7XG59XG52ZWM0IFJHQkVUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqIGV4cDIoIHZhbHVlLmEgKiAyNTUuMCAtIDEyOC4wICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkUoIGluIHZlYzQgdmFsdWUgKSB7XG5cdGZsb2F0IG1heENvbXBvbmVudCBceDNkIG1heCggbWF4KCB2YWx1ZS5yLCB2YWx1ZS5nICksIHZhbHVlLmIgKTtcblx0ZmxvYXQgZkV4cCBceDNkIGNsYW1wKCBjZWlsKCBsb2cyKCBtYXhDb21wb25lbnQgKSApLCAtMTI4LjAsIDEyNy4wICk7XG5cdHJldHVybiB2ZWM0KCB2YWx1ZS5yZ2IgLyBleHAyKCBmRXhwICksICggZkV4cCArIDEyOC4wICkgLyAyNTUuMCApO1xufVxudmVjNCBSR0JNVG9MaW5lYXIoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRyZXR1cm4gdmVjNCggdmFsdWUucmdiICogdmFsdWUuYSAqIG1heFJhbmdlLCAxLjAgKTtcbn1cbnZlYzQgTGluZWFyVG9SR0JNKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0ZmxvYXQgbWF4UkdCIFx4M2QgbWF4KCB2YWx1ZS5yLCBtYXgoIHZhbHVlLmcsIHZhbHVlLmIgKSApO1xuXHRmbG9hdCBNIFx4M2QgY2xhbXAoIG1heFJHQiAvIG1heFJhbmdlLCAwLjAsIDEuMCApO1xuXHRNIFx4M2QgY2VpbCggTSAqIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAvICggTSAqIG1heFJhbmdlICksIE0gKTtcbn1cbnZlYzQgUkdCRFRvTGluZWFyKCBpbiB2ZWM0IHZhbHVlLCBpbiBmbG9hdCBtYXhSYW5nZSApIHtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggKCBtYXhSYW5nZSAvIDI1NS4wICkgLyB2YWx1ZS5hICksIDEuMCApO1xufVxudmVjNCBMaW5lYXJUb1JHQkQoIGluIHZlYzQgdmFsdWUsIGluIGZsb2F0IG1heFJhbmdlICkge1xuXHRmbG9hdCBtYXhSR0IgXHgzZCBtYXgoIHZhbHVlLnIsIG1heCggdmFsdWUuZywgdmFsdWUuYiApICk7XG5cdGZsb2F0IEQgXHgzZCBtYXgoIG1heFJhbmdlIC8gbWF4UkdCLCAxLjAgKTtcblx0RCBceDNkIG1pbiggZmxvb3IoIEQgKSAvIDI1NS4wLCAxLjAgKTtcblx0cmV0dXJuIHZlYzQoIHZhbHVlLnJnYiAqICggRCAqICggMjU1LjAgLyBtYXhSYW5nZSApICksIEQgKTtcbn1cbmNvbnN0IG1hdDMgY0xvZ0x1dk0gXHgzZCBtYXQzKCAwLjIyMDksIDAuMzM5MCwgMC40MTg0LCAwLjExMzgsIDAuNjc4MCwgMC43MzE5LCAwLjAxMDIsIDAuMTEzMCwgMC4yOTY5ICk7XG52ZWM0IExpbmVhclRvTG9nTHV2KCBpbiB2ZWM0IHZhbHVlICkgIHtcblx0dmVjMyBYcF9ZX1hZWnAgXHgzZCBjTG9nTHV2TSAqIHZhbHVlLnJnYjtcblx0WHBfWV9YWVpwIFx4M2QgbWF4KCBYcF9ZX1hZWnAsIHZlYzMoIDFlLTYsIDFlLTYsIDFlLTYgKSApO1xuXHR2ZWM0IHZSZXN1bHQ7XG5cdHZSZXN1bHQueHkgXHgzZCBYcF9ZX1hZWnAueHkgLyBYcF9ZX1hZWnAuejtcblx0ZmxvYXQgTGUgXHgzZCAyLjAgKiBsb2cyKFhwX1lfWFlacC55KSArIDEyNy4wO1xuXHR2UmVzdWx0LncgXHgzZCBmcmFjdCggTGUgKTtcblx0dlJlc3VsdC56IFx4M2QgKCBMZSAtICggZmxvb3IoIHZSZXN1bHQudyAqIDI1NS4wICkgKSAvIDI1NS4wICkgLyAyNTUuMDtcblx0cmV0dXJuIHZSZXN1bHQ7XG59XG5jb25zdCBtYXQzIGNMb2dMdXZJbnZlcnNlTSBceDNkIG1hdDMoIDYuMDAxNCwgLTIuNzAwOCwgLTEuNzk5NiwgLTEuMzMyMCwgMy4xMDI5LCAtNS43NzIxLCAwLjMwMDgsIC0xLjA4ODIsIDUuNjI2OCApO1xudmVjNCBMb2dMdXZUb0xpbmVhciggaW4gdmVjNCB2YWx1ZSApIHtcblx0ZmxvYXQgTGUgXHgzZCB2YWx1ZS56ICogMjU1LjAgKyB2YWx1ZS53O1xuXHR2ZWMzIFhwX1lfWFlacDtcblx0WHBfWV9YWVpwLnkgXHgzZCBleHAyKCAoIExlIC0gMTI3LjAgKSAvIDIuMCApO1xuXHRYcF9ZX1hZWnAueiBceDNkIFhwX1lfWFlacC55IC8gdmFsdWUueTtcblx0WHBfWV9YWVpwLnggXHgzZCB2YWx1ZS54ICogWHBfWV9YWVpwLno7XG5cdHZlYzMgdlJHQiBceDNkIGNMb2dMdXZJbnZlcnNlTSAqIFhwX1lfWFlacC5yZ2I7XG5cdHJldHVybiB2ZWM0KCBtYXgoIHZSR0IsIDAuMCApLCAxLjAgKTtcbn0iLAplbnZtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZmRlZiBFTlZfV09STERQT1Ncblx0XHR2ZWMzIGNhbWVyYVRvVmVydGV4IFx4M2Qgbm9ybWFsaXplKCB2V29ybGRQb3NpdGlvbiAtIGNhbWVyYVBvc2l0aW9uICk7XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCBceDNkIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIG5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2ZWMzIHJlZmxlY3RWZWMgXHgzZCByZWZsZWN0KCBjYW1lcmFUb1ZlcnRleCwgd29ybGROb3JtYWwgKTtcblx0XHQjZWxzZVxuXHRcdFx0dmVjMyByZWZsZWN0VmVjIFx4M2QgcmVmcmFjdCggY2FtZXJhVG9WZXJ0ZXgsIHdvcmxkTm9ybWFsLCByZWZyYWN0aW9uUmF0aW8gKTtcblx0XHQjZW5kaWZcblx0I2Vsc2Vcblx0XHR2ZWMzIHJlZmxlY3RWZWMgXHgzZCB2UmVmbGVjdDtcblx0I2VuZGlmXG5cdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0dmVjNCBlbnZDb2xvciBceDNkIHRleHR1cmVDdWJlKCBlbnZNYXAsIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9FUVVJUkVDIClcblx0XHR2ZWMyIHNhbXBsZVVWO1xuXHRcdHJlZmxlY3RWZWMgXHgzZCBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcblx0XHRzYW1wbGVVVi55IFx4M2QgYXNpbiggY2xhbXAoIHJlZmxlY3RWZWMueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRcdHNhbXBsZVVWLnggXHgzZCBhdGFuKCByZWZsZWN0VmVjLnosIHJlZmxlY3RWZWMueCApICogUkVDSVBST0NBTF9QSTIgKyAwLjU7XG5cdFx0dmVjNCBlbnZDb2xvciBceDNkIHRleHR1cmUyRCggZW52TWFwLCBzYW1wbGVVViApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9TUEhFUkUgKVxuXHRcdHJlZmxlY3RWZWMgXHgzZCBub3JtYWxpemUoIHJlZmxlY3RWZWMgKTtcblx0XHR2ZWMzIHJlZmxlY3RWaWV3IFx4M2Qgbm9ybWFsaXplKCAoIHZpZXdNYXRyaXggKiB2ZWM0KCByZWZsZWN0VmVjLCAwLjAgKSApLnh5eiArIHZlYzMoIDAuMCwgMC4wLCAxLjAgKSApO1xuXHRcdHZlYzQgZW52Q29sb3IgXHgzZCB0ZXh0dXJlMkQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUgKTtcblx0I2Vsc2Vcblx0XHR2ZWM0IGVudkNvbG9yIFx4M2QgdmVjNCggMC4wICk7XG5cdCNlbmRpZlxuXHRlbnZDb2xvciBceDNkIGVudk1hcFRleGVsVG9MaW5lYXIoIGVudkNvbG9yICk7XG5cdCNpZmRlZiBFTlZNQVBfQkxFTkRJTkdfTVVMVElQTFlcblx0XHRvdXRnb2luZ0xpZ2h0IFx4M2QgbWl4KCBvdXRnb2luZ0xpZ2h0LCBvdXRnb2luZ0xpZ2h0ICogZW52Q29sb3IueHl6LCBzcGVjdWxhclN0cmVuZ3RoICogcmVmbGVjdGl2aXR5ICk7XG5cdCNlbGlmIGRlZmluZWQoIEVOVk1BUF9CTEVORElOR19NSVggKVxuXHRcdG91dGdvaW5nTGlnaHQgXHgzZCBtaXgoIG91dGdvaW5nTGlnaHQsIGVudkNvbG9yLnh5eiwgc3BlY3VsYXJTdHJlbmd0aCAqIHJlZmxlY3Rpdml0eSApO1xuXHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfQkxFTkRJTkdfQUREIClcblx0XHRvdXRnb2luZ0xpZ2h0ICtceDNkIGVudkNvbG9yLnh5eiAqIHNwZWN1bGFyU3RyZW5ndGggKiByZWZsZWN0aXZpdHk7XG5cdCNlbmRpZlxuI2VuZGlmIiwKZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX0VOVk1BUFxuXHR1bmlmb3JtIGZsb2F0IGVudk1hcEludGVuc2l0eTtcblx0dW5pZm9ybSBmbG9hdCBmbGlwRW52TWFwO1xuXHR1bmlmb3JtIGludCBtYXhNaXBMZXZlbDtcblx0I2lmZGVmIEVOVk1BUF9UWVBFX0NVQkVcblx0XHR1bmlmb3JtIHNhbXBsZXJDdWJlIGVudk1hcDtcblx0I2Vsc2Vcblx0XHR1bmlmb3JtIHNhbXBsZXIyRCBlbnZNYXA7XG5cdCNlbmRpZlxuXHRcbiNlbmRpZiIsZW52bWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdHVuaWZvcm0gZmxvYXQgcmVmbGVjdGl2aXR5O1xuXHQjaWYgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBVU0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCggUEhPTkcgKVxuXHRcdCNkZWZpbmUgRU5WX1dPUkxEUE9TXG5cdCNlbmRpZlxuXHQjaWZkZWYgRU5WX1dPUkxEUE9TXG5cdFx0dmFyeWluZyB2ZWMzIHZXb3JsZFBvc2l0aW9uO1xuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZWxzZVxuXHRcdHZhcnlpbmcgdmVjMyB2UmVmbGVjdDtcblx0I2VuZGlmXG4jZW5kaWYiLAplbnZtYXBfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRU5WTUFQXG5cdCNpZiBkZWZpbmVkKCBVU0VfQlVNUE1BUCApIHx8IGRlZmluZWQoIFVTRV9OT1JNQUxNQVAgKSB8fGRlZmluZWQoIFBIT05HIClcblx0XHQjZGVmaW5lIEVOVl9XT1JMRFBPU1xuXHQjZW5kaWZcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdFxuXHRcdHZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcblx0I2Vsc2Vcblx0XHR2YXJ5aW5nIHZlYzMgdlJlZmxlY3Q7XG5cdFx0dW5pZm9ybSBmbG9hdCByZWZyYWN0aW9uUmF0aW87XG5cdCNlbmRpZlxuI2VuZGlmIixlbnZtYXBfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9FTlZNQVAgKVxuXHQjaWZkZWYgRU5WTUFQX01PREVfUkVGUkFDVElPTlxuXHRcdHVuaWZvcm0gZmxvYXQgcmVmcmFjdGlvblJhdGlvO1xuXHQjZW5kaWZcblx0dmVjMyBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0dmVjMyB3b3JsZE5vcm1hbCBceDNkIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIGdlb21ldHJ5Lm5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjIFx4M2QgdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgXHgzZCB0ZXh0dXJlQ3ViZUxvZEVYVCggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgXHgzZCB0ZXh0dXJlQ3ViZSggZW52TWFwLCBxdWVyeVZlYywgZmxvYXQoIG1heE1JUExldmVsICkgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiIFx4M2QgZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VsaWYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0XHR2ZWMzIHF1ZXJ5VmVjIFx4M2QgdmVjMyggZmxpcEVudk1hcCAqIHdvcmxkTm9ybWFsLngsIHdvcmxkTm9ybWFsLnl6ICk7XG5cdFx0XHR2ZWM0IGVudk1hcENvbG9yIFx4M2QgdGV4dHVyZUN1YmVVViggZW52TWFwLCBxdWVyeVZlYywgMS4wICk7XG5cdFx0I2Vsc2Vcblx0XHRcdHZlYzQgZW52TWFwQ29sb3IgXHgzZCB2ZWM0KCAwLjAgKTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gUEkgKiBlbnZNYXBDb2xvci5yZ2IgKiBlbnZNYXBJbnRlbnNpdHk7XG5cdH1cblx0ZmxvYXQgZ2V0U3BlY3VsYXJNSVBMZXZlbCggY29uc3QgaW4gZmxvYXQgcm91Z2huZXNzLCBjb25zdCBpbiBpbnQgbWF4TUlQTGV2ZWwgKSB7XG5cdFx0ZmxvYXQgbWF4TUlQTGV2ZWxTY2FsYXIgXHgzZCBmbG9hdCggbWF4TUlQTGV2ZWwgKTtcblx0XHRmbG9hdCBzaWdtYSBceDNkIFBJICogcm91Z2huZXNzICogcm91Z2huZXNzIC8gKCAxLjAgKyByb3VnaG5lc3MgKTtcblx0XHRmbG9hdCBkZXNpcmVkTUlQTGV2ZWwgXHgzZCBtYXhNSVBMZXZlbFNjYWxhciArIGxvZzIoIHNpZ21hICk7XG5cdFx0cmV0dXJuIGNsYW1wKCBkZXNpcmVkTUlQTGV2ZWwsIDAuMCwgbWF4TUlQTGV2ZWxTY2FsYXIgKTtcblx0fVxuXHR2ZWMzIGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIHZpZXdEaXIsIGNvbnN0IGluIHZlYzMgbm9ybWFsLCBjb25zdCBpbiBmbG9hdCByb3VnaG5lc3MsIGNvbnN0IGluIGludCBtYXhNSVBMZXZlbCApIHtcblx0XHQjaWZkZWYgRU5WTUFQX01PREVfUkVGTEVDVElPTlxuXHRcdCAgdmVjMyByZWZsZWN0VmVjIFx4M2QgcmVmbGVjdCggLXZpZXdEaXIsIG5vcm1hbCApO1xuXHRcdCAgcmVmbGVjdFZlYyBceDNkIG5vcm1hbGl6ZSggbWl4KCByZWZsZWN0VmVjLCBub3JtYWwsIHJvdWdobmVzcyAqIHJvdWdobmVzcykgKTtcblx0XHQjZWxzZVxuXHRcdCAgdmVjMyByZWZsZWN0VmVjIFx4M2QgcmVmcmFjdCggLXZpZXdEaXIsIG5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdFx0cmVmbGVjdFZlYyBceDNkIGludmVyc2VUcmFuc2Zvcm1EaXJlY3Rpb24oIHJlZmxlY3RWZWMsIHZpZXdNYXRyaXggKTtcblx0XHRmbG9hdCBzcGVjdWxhck1JUExldmVsIFx4M2QgZ2V0U3BlY3VsYXJNSVBMZXZlbCggcm91Z2huZXNzLCBtYXhNSVBMZXZlbCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfVFlQRV9DVUJFXG5cdFx0XHR2ZWMzIHF1ZXJ5UmVmbGVjdFZlYyBceDNkIHZlYzMoIGZsaXBFbnZNYXAgKiByZWZsZWN0VmVjLngsIHJlZmxlY3RWZWMueXogKTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciBceDNkIHRleHR1cmVDdWJlTG9kRVhUKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciBceDNkIHRleHR1cmVDdWJlKCBlbnZNYXAsIHF1ZXJ5UmVmbGVjdFZlYywgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgXHgzZCBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9DVUJFX1VWIClcblx0XHRcdHZlYzMgcXVlcnlSZWZsZWN0VmVjIFx4M2QgdmVjMyggZmxpcEVudk1hcCAqIHJlZmxlY3RWZWMueCwgcmVmbGVjdFZlYy55eiApO1xuXHRcdFx0dmVjNCBlbnZNYXBDb2xvciBceDNkIHRleHR1cmVDdWJlVVYoIGVudk1hcCwgcXVlcnlSZWZsZWN0VmVjLCByb3VnaG5lc3MgKTtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9FUVVJUkVDIClcblx0XHRcdHZlYzIgc2FtcGxlVVY7XG5cdFx0XHRzYW1wbGVVVi55IFx4M2QgYXNpbiggY2xhbXAoIHJlZmxlY3RWZWMueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRcdFx0c2FtcGxlVVYueCBceDNkIGF0YW4oIHJlZmxlY3RWZWMueiwgcmVmbGVjdFZlYy54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0XHRcdCNpZmRlZiBURVhUVVJFX0xPRF9FWFRcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciBceDNkIHRleHR1cmUyRExvZEVYVCggZW52TWFwLCBzYW1wbGVVViwgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2Vsc2Vcblx0XHRcdFx0dmVjNCBlbnZNYXBDb2xvciBceDNkIHRleHR1cmUyRCggZW52TWFwLCBzYW1wbGVVViwgc3BlY3VsYXJNSVBMZXZlbCApO1xuXHRcdFx0I2VuZGlmXG5cdFx0XHRlbnZNYXBDb2xvci5yZ2IgXHgzZCBlbnZNYXBUZXhlbFRvTGluZWFyKCBlbnZNYXBDb2xvciApLnJnYjtcblx0XHQjZWxpZiBkZWZpbmVkKCBFTlZNQVBfVFlQRV9TUEhFUkUgKVxuXHRcdFx0dmVjMyByZWZsZWN0VmlldyBceDNkIG5vcm1hbGl6ZSggKCB2aWV3TWF0cml4ICogdmVjNCggcmVmbGVjdFZlYywgMC4wICkgKS54eXogKyB2ZWMzKCAwLjAsMC4wLDEuMCApICk7XG5cdFx0XHQjaWZkZWYgVEVYVFVSRV9MT0RfRVhUXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgXHgzZCB0ZXh0dXJlMkRMb2RFWFQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbHNlXG5cdFx0XHRcdHZlYzQgZW52TWFwQ29sb3IgXHgzZCB0ZXh0dXJlMkQoIGVudk1hcCwgcmVmbGVjdFZpZXcueHkgKiAwLjUgKyAwLjUsIHNwZWN1bGFyTUlQTGV2ZWwgKTtcblx0XHRcdCNlbmRpZlxuXHRcdFx0ZW52TWFwQ29sb3IucmdiIFx4M2QgZW52TWFwVGV4ZWxUb0xpbmVhciggZW52TWFwQ29sb3IgKS5yZ2I7XG5cdFx0I2VuZGlmXG5cdFx0cmV0dXJuIGVudk1hcENvbG9yLnJnYiAqIGVudk1hcEludGVuc2l0eTtcblx0fVxuI2VuZGlmIiwKZW52bWFwX3ZlcnRleDoiI2lmZGVmIFVTRV9FTlZNQVBcblx0I2lmZGVmIEVOVl9XT1JMRFBPU1xuXHRcdHZXb3JsZFBvc2l0aW9uIFx4M2Qgd29ybGRQb3NpdGlvbi54eXo7XG5cdCNlbHNlXG5cdFx0dmVjMyBjYW1lcmFUb1ZlcnRleCBceDNkIG5vcm1hbGl6ZSggd29ybGRQb3NpdGlvbi54eXogLSBjYW1lcmFQb3NpdGlvbiApO1xuXHRcdHZlYzMgd29ybGROb3JtYWwgXHgzZCBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCB0cmFuc2Zvcm1lZE5vcm1hbCwgdmlld01hdHJpeCApO1xuXHRcdCNpZmRlZiBFTlZNQVBfTU9ERV9SRUZMRUNUSU9OXG5cdFx0XHR2UmVmbGVjdCBceDNkIHJlZmxlY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCApO1xuXHRcdCNlbHNlXG5cdFx0XHR2UmVmbGVjdCBceDNkIHJlZnJhY3QoIGNhbWVyYVRvVmVydGV4LCB3b3JsZE5vcm1hbCwgcmVmcmFjdGlvblJhdGlvICk7XG5cdFx0I2VuZGlmXG5cdCNlbmRpZlxuI2VuZGlmIixmb2dfdmVydGV4OiIjaWZkZWYgVVNFX0ZPR1xuXHRmb2dEZXB0aCBceDNkIC1tdlBvc2l0aW9uLno7XG4jZW5kaWYiLApmb2dfcGFyc192ZXJ0ZXg6IiNpZmRlZiBVU0VfRk9HXG5cdHZhcnlpbmcgZmxvYXQgZm9nRGVwdGg7XG4jZW5kaWYiLGZvZ19mcmFnbWVudDoiI2lmZGVmIFVTRV9GT0dcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0ZmxvYXQgZm9nRmFjdG9yIFx4M2QgMS4wIC0gZXhwKCAtIGZvZ0RlbnNpdHkgKiBmb2dEZW5zaXR5ICogZm9nRGVwdGggKiBmb2dEZXB0aCApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGZvZ0ZhY3RvciBceDNkIHNtb290aHN0ZXAoIGZvZ05lYXIsIGZvZ0ZhciwgZm9nRGVwdGggKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvci5yZ2IgXHgzZCBtaXgoIGdsX0ZyYWdDb2xvci5yZ2IsIGZvZ0NvbG9yLCBmb2dGYWN0b3IgKTtcbiNlbmRpZiIsZm9nX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfRk9HXG5cdHVuaWZvcm0gdmVjMyBmb2dDb2xvcjtcblx0dmFyeWluZyBmbG9hdCBmb2dEZXB0aDtcblx0I2lmZGVmIEZPR19FWFAyXG5cdFx0dW5pZm9ybSBmbG9hdCBmb2dEZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgZm9nTmVhcjtcblx0XHR1bmlmb3JtIGZsb2F0IGZvZ0Zhcjtcblx0I2VuZGlmXG4jZW5kaWYiLApncmFkaWVudG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVE9PTlxuXHR1bmlmb3JtIHNhbXBsZXIyRCBncmFkaWVudE1hcDtcblx0dmVjMyBnZXRHcmFkaWVudElycmFkaWFuY2UoIHZlYzMgbm9ybWFsLCB2ZWMzIGxpZ2h0RGlyZWN0aW9uICkge1xuXHRcdGZsb2F0IGRvdE5MIFx4M2QgZG90KCBub3JtYWwsIGxpZ2h0RGlyZWN0aW9uICk7XG5cdFx0dmVjMiBjb29yZCBceDNkIHZlYzIoIGRvdE5MICogMC41ICsgMC41LCAwLjAgKTtcblx0XHQjaWZkZWYgVVNFX0dSQURJRU5UTUFQXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJEKCBncmFkaWVudE1hcCwgY29vcmQgKS5yZ2I7XG5cdFx0I2Vsc2Vcblx0XHRcdHJldHVybiAoIGNvb3JkLnggXHgzYyAwLjcgKSA/IHZlYzMoIDAuNyApIDogdmVjMyggMS4wICk7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZiIsbGlnaHRtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTElHSFRNQVBcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICtceDNkIFBJICogdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApLnh5eiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuI2VuZGlmIiwKbGlnaHRtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9MSUdIVE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBsaWdodE1hcDtcblx0dW5pZm9ybSBmbG9hdCBsaWdodE1hcEludGVuc2l0eTtcbiNlbmRpZiIsbGlnaHRzX2xhbWJlcnRfdmVydGV4OiJ2ZWMzIGRpZmZ1c2UgXHgzZCB2ZWMzKCAxLjAgKTtcbkdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnk7XG5nZW9tZXRyeS5wb3NpdGlvbiBceDNkIG12UG9zaXRpb24ueHl6O1xuZ2VvbWV0cnkubm9ybWFsIFx4M2Qgbm9ybWFsaXplKCB0cmFuc2Zvcm1lZE5vcm1hbCApO1xuZ2VvbWV0cnkudmlld0RpciBceDNkIG5vcm1hbGl6ZSggLW12UG9zaXRpb24ueHl6ICk7XG5HZW9tZXRyaWNDb250ZXh0IGJhY2tHZW9tZXRyeTtcbmJhY2tHZW9tZXRyeS5wb3NpdGlvbiBceDNkIGdlb21ldHJ5LnBvc2l0aW9uO1xuYmFja0dlb21ldHJ5Lm5vcm1hbCBceDNkIC1nZW9tZXRyeS5ub3JtYWw7XG5iYWNrR2VvbWV0cnkudmlld0RpciBceDNkIGdlb21ldHJ5LnZpZXdEaXI7XG52TGlnaHRGcm9udCBceDNkIHZlYzMoIDAuMCApO1xudkluZGlyZWN0RnJvbnQgXHgzZCB2ZWMzKCAwLjAgKTtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dkxpZ2h0QmFjayBceDNkIHZlYzMoIDAuMCApO1xuXHR2SW5kaXJlY3RCYWNrIFx4M2QgdmVjMyggMC4wICk7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG5mbG9hdCBkb3ROTDtcbnZlYzMgZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuI2lmIE5VTV9QT0lOVF9MSUdIVFMgXHgzZSAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgXHgzZCAwOyBpIFx4M2MgTlVNX1BPSU5UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRQb2ludERpcmVjdExpZ2h0SXJyYWRpYW5jZSggcG9pbnRMaWdodHNbIGkgXSwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0ZG90TkwgXHgzZCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlIFx4M2QgUEkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHR2TGlnaHRGcm9udCArXHgzZCBzYXR1cmF0ZSggZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2TGlnaHRCYWNrICtceDNkIHNhdHVyYXRlKCAtZG90TkwgKSAqIGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1NQT1RfTElHSFRTIFx4M2UgMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpIFx4M2QgMDsgaSBceDNjIE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRnZXRTcG90RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBzcG90TGlnaHRzWyBpIF0sIGdlb21ldHJ5LCBkaXJlY3RMaWdodCApO1xuXHRcdGRvdE5MIFx4M2QgZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGRpcmVjdExpZ2h0Q29sb3JfRGlmZnVzZSBceDNkIFBJICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdFx0dkxpZ2h0RnJvbnQgK1x4M2Qgc2F0dXJhdGUoIGRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdFx0dkxpZ2h0QmFjayArXHgzZCBzYXR1cmF0ZSggLWRvdE5MICkgKiBkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2U7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9ESVJfTElHSFRTIFx4M2UgMFxuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpIFx4M2QgMDsgaSBceDNjIE5VTV9ESVJfTElHSFRTOyBpICsrICkge1xuXHRcdGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBkaXJlY3Rpb25hbExpZ2h0c1sgaSBdLCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHRkb3ROTCBceDNkIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBkaXJlY3RMaWdodC5kaXJlY3Rpb24gKTtcblx0XHRkaXJlY3RMaWdodENvbG9yX0RpZmZ1c2UgXHgzZCBQSSAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHRcdHZMaWdodEZyb250ICtceDNkIHNhdHVyYXRlKCBkb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRcdHZMaWdodEJhY2sgK1x4M2Qgc2F0dXJhdGUoIC1kb3ROTCApICogZGlyZWN0TGlnaHRDb2xvcl9EaWZmdXNlO1xuXHRcdCNlbmRpZlxuXHR9XG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgXHgzZSAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgXHgzZCAwOyBpIFx4M2MgTlVNX0hFTUlfTElHSFRTOyBpICsrICkge1xuXHRcdHZJbmRpcmVjdEZyb250ICtceDNkIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2SW5kaXJlY3RCYWNrICtceDNkIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgYmFja0dlb21ldHJ5ICk7XG5cdFx0I2VuZGlmXG5cdH1cbiNlbmRpZiIsCmxpZ2h0c19wYXJzX2JlZ2luOiJ1bmlmb3JtIHZlYzMgYW1iaWVudExpZ2h0Q29sb3I7XG51bmlmb3JtIHZlYzMgbGlnaHRQcm9iZVsgOSBdO1xudmVjMyBzaEdldElycmFkaWFuY2VBdCggaW4gdmVjMyBub3JtYWwsIGluIHZlYzMgc2hDb2VmZmljaWVudHNbIDkgXSApIHtcblx0ZmxvYXQgeCBceDNkIG5vcm1hbC54LCB5IFx4M2Qgbm9ybWFsLnksIHogXHgzZCBub3JtYWwuejtcblx0dmVjMyByZXN1bHQgXHgzZCBzaENvZWZmaWNpZW50c1sgMCBdICogMC44ODYyMjc7XG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgMSBdICogMi4wICogMC41MTE2NjQgKiB5O1xuXHRyZXN1bHQgK1x4M2Qgc2hDb2VmZmljaWVudHNbIDIgXSAqIDIuMCAqIDAuNTExNjY0ICogejtcblx0cmVzdWx0ICtceDNkIHNoQ29lZmZpY2llbnRzWyAzIF0gKiAyLjAgKiAwLjUxMTY2NCAqIHg7XG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgNCBdICogMi4wICogMC40MjkwNDMgKiB4ICogeTtcblx0cmVzdWx0ICtceDNkIHNoQ29lZmZpY2llbnRzWyA1IF0gKiAyLjAgKiAwLjQyOTA0MyAqIHkgKiB6O1xuXHRyZXN1bHQgK1x4M2Qgc2hDb2VmZmljaWVudHNbIDYgXSAqICggMC43NDMxMjUgKiB6ICogeiAtIDAuMjQ3NzA4ICk7XG5cdHJlc3VsdCArXHgzZCBzaENvZWZmaWNpZW50c1sgNyBdICogMi4wICogMC40MjkwNDMgKiB4ICogejtcblx0cmVzdWx0ICtceDNkIHNoQ29lZmZpY2llbnRzWyA4IF0gKiAwLjQyOTA0MyAqICggeCAqIHggLSB5ICogeSApO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxudmVjMyBnZXRMaWdodFByb2JlSXJyYWRpYW5jZSggY29uc3QgaW4gdmVjMyBsaWdodFByb2JlWyA5IF0sIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnkgKSB7XG5cdHZlYzMgd29ybGROb3JtYWwgXHgzZCBpbnZlcnNlVHJhbnNmb3JtRGlyZWN0aW9uKCBnZW9tZXRyeS5ub3JtYWwsIHZpZXdNYXRyaXggKTtcblx0dmVjMyBpcnJhZGlhbmNlIFx4M2Qgc2hHZXRJcnJhZGlhbmNlQXQoIHdvcmxkTm9ybWFsLCBsaWdodFByb2JlICk7XG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxudmVjMyBnZXRBbWJpZW50TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiB2ZWMzIGFtYmllbnRMaWdodENvbG9yICkge1xuXHR2ZWMzIGlycmFkaWFuY2UgXHgzZCBhbWJpZW50TGlnaHRDb2xvcjtcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqXHgzZCBQSTtcblx0I2VuZGlmXG5cdHJldHVybiBpcnJhZGlhbmNlO1xufVxuI2lmIE5VTV9ESVJfTElHSFRTIFx4M2UgMFxuXHRzdHJ1Y3QgRGlyZWN0aW9uYWxMaWdodCB7XG5cdFx0dmVjMyBkaXJlY3Rpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRpbnQgc2hhZG93O1xuXHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0fTtcblx0dW5pZm9ybSBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHRzWyBOVU1fRElSX0xJR0hUUyBdO1xuXHR2b2lkIGdldERpcmVjdGlvbmFsRGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBjb25zdCBpbiBEaXJlY3Rpb25hbExpZ2h0IGRpcmVjdGlvbmFsTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICkge1xuXHRcdGRpcmVjdExpZ2h0LmNvbG9yIFx4M2QgZGlyZWN0aW9uYWxMaWdodC5jb2xvcjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gXHgzZCBkaXJlY3Rpb25hbExpZ2h0LmRpcmVjdGlvbjtcblx0XHRkaXJlY3RMaWdodC52aXNpYmxlIFx4M2QgdHJ1ZTtcblx0fVxuI2VuZGlmXG4jaWYgTlVNX1BPSU5UX0xJR0hUUyBceDNlIDBcblx0c3RydWN0IFBvaW50TGlnaHQge1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBjb2xvcjtcblx0XHRmbG9hdCBkaXN0YW5jZTtcblx0XHRmbG9hdCBkZWNheTtcblx0XHRpbnQgc2hhZG93O1xuXHRcdGZsb2F0IHNoYWRvd0JpYXM7XG5cdFx0ZmxvYXQgc2hhZG93UmFkaXVzO1xuXHRcdHZlYzIgc2hhZG93TWFwU2l6ZTtcblx0XHRmbG9hdCBzaGFkb3dDYW1lcmFOZWFyO1xuXHRcdGZsb2F0IHNoYWRvd0NhbWVyYUZhcjtcblx0fTtcblx0dW5pZm9ybSBQb2ludExpZ2h0IHBvaW50TGlnaHRzWyBOVU1fUE9JTlRfTElHSFRTIF07XG5cdHZvaWQgZ2V0UG9pbnREaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFBvaW50TGlnaHQgcG9pbnRMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgb3V0IEluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQgKSB7XG5cdFx0dmVjMyBsVmVjdG9yIFx4M2QgcG9pbnRMaWdodC5wb3NpdGlvbiAtIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbiBceDNkIG5vcm1hbGl6ZSggbFZlY3RvciApO1xuXHRcdGZsb2F0IGxpZ2h0RGlzdGFuY2UgXHgzZCBsZW5ndGgoIGxWZWN0b3IgKTtcblx0XHRkaXJlY3RMaWdodC5jb2xvciBceDNkIHBvaW50TGlnaHQuY29sb3I7XG5cdFx0ZGlyZWN0TGlnaHQuY29sb3IgKlx4M2QgcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgcG9pbnRMaWdodC5kaXN0YW5jZSwgcG9pbnRMaWdodC5kZWNheSApO1xuXHRcdGRpcmVjdExpZ2h0LnZpc2libGUgXHgzZCAoIGRpcmVjdExpZ2h0LmNvbG9yICFceDNkIHZlYzMoIDAuMCApICk7XG5cdH1cbiNlbmRpZlxuI2lmIE5VTV9TUE9UX0xJR0hUUyBceDNlIDBcblx0c3RydWN0IFNwb3RMaWdodCB7XG5cdFx0dmVjMyBwb3NpdGlvbjtcblx0XHR2ZWMzIGRpcmVjdGlvbjtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdGZsb2F0IGRpc3RhbmNlO1xuXHRcdGZsb2F0IGRlY2F5O1xuXHRcdGZsb2F0IGNvbmVDb3M7XG5cdFx0ZmxvYXQgcGVudW1icmFDb3M7XG5cdFx0aW50IHNoYWRvdztcblx0XHRmbG9hdCBzaGFkb3dCaWFzO1xuXHRcdGZsb2F0IHNoYWRvd1JhZGl1cztcblx0XHR2ZWMyIHNoYWRvd01hcFNpemU7XG5cdH07XG5cdHVuaWZvcm0gU3BvdExpZ2h0IHNwb3RMaWdodHNbIE5VTV9TUE9UX0xJR0hUUyBdO1xuXHR2b2lkIGdldFNwb3REaXJlY3RMaWdodElycmFkaWFuY2UoIGNvbnN0IGluIFNwb3RMaWdodCBzcG90TGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIG91dCBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0ICApIHtcblx0XHR2ZWMzIGxWZWN0b3IgXHgzZCBzcG90TGlnaHQucG9zaXRpb24gLSBnZW9tZXRyeS5wb3NpdGlvbjtcblx0XHRkaXJlY3RMaWdodC5kaXJlY3Rpb24gXHgzZCBub3JtYWxpemUoIGxWZWN0b3IgKTtcblx0XHRmbG9hdCBsaWdodERpc3RhbmNlIFx4M2QgbGVuZ3RoKCBsVmVjdG9yICk7XG5cdFx0ZmxvYXQgYW5nbGVDb3MgXHgzZCBkb3QoIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiwgc3BvdExpZ2h0LmRpcmVjdGlvbiApO1xuXHRcdGlmICggYW5nbGVDb3MgXHgzZSBzcG90TGlnaHQuY29uZUNvcyApIHtcblx0XHRcdGZsb2F0IHNwb3RFZmZlY3QgXHgzZCBzbW9vdGhzdGVwKCBzcG90TGlnaHQuY29uZUNvcywgc3BvdExpZ2h0LnBlbnVtYnJhQ29zLCBhbmdsZUNvcyApO1xuXHRcdFx0ZGlyZWN0TGlnaHQuY29sb3IgXHgzZCBzcG90TGlnaHQuY29sb3I7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciAqXHgzZCBzcG90RWZmZWN0ICogcHVuY3R1YWxMaWdodEludGVuc2l0eVRvSXJyYWRpYW5jZUZhY3RvciggbGlnaHREaXN0YW5jZSwgc3BvdExpZ2h0LmRpc3RhbmNlLCBzcG90TGlnaHQuZGVjYXkgKTtcblx0XHRcdGRpcmVjdExpZ2h0LnZpc2libGUgXHgzZCB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkaXJlY3RMaWdodC5jb2xvciBceDNkIHZlYzMoIDAuMCApO1xuXHRcdFx0ZGlyZWN0TGlnaHQudmlzaWJsZSBceDNkIGZhbHNlO1xuXHRcdH1cblx0fVxuI2VuZGlmXG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXHgzZSAwXG5cdHN0cnVjdCBSZWN0QXJlYUxpZ2h0IHtcblx0XHR2ZWMzIGNvbG9yO1xuXHRcdHZlYzMgcG9zaXRpb247XG5cdFx0dmVjMyBoYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0O1xuXHR9O1xuXHR1bmlmb3JtIHNhbXBsZXIyRCBsdGNfMTtcdHVuaWZvcm0gc2FtcGxlcjJEIGx0Y18yO1xuXHR1bmlmb3JtIFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodHNbIE5VTV9SRUNUX0FSRUFfTElHSFRTIF07XG4jZW5kaWZcbiNpZiBOVU1fSEVNSV9MSUdIVFMgXHgzZSAwXG5cdHN0cnVjdCBIZW1pc3BoZXJlTGlnaHQge1xuXHRcdHZlYzMgZGlyZWN0aW9uO1xuXHRcdHZlYzMgc2t5Q29sb3I7XG5cdFx0dmVjMyBncm91bmRDb2xvcjtcblx0fTtcblx0dW5pZm9ybSBIZW1pc3BoZXJlTGlnaHQgaGVtaXNwaGVyZUxpZ2h0c1sgTlVNX0hFTUlfTElHSFRTIF07XG5cdHZlYzMgZ2V0SGVtaXNwaGVyZUxpZ2h0SXJyYWRpYW5jZSggY29uc3QgaW4gSGVtaXNwaGVyZUxpZ2h0IGhlbWlMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSApIHtcblx0XHRmbG9hdCBkb3ROTCBceDNkIGRvdCggZ2VvbWV0cnkubm9ybWFsLCBoZW1pTGlnaHQuZGlyZWN0aW9uICk7XG5cdFx0ZmxvYXQgaGVtaURpZmZ1c2VXZWlnaHQgXHgzZCAwLjUgKiBkb3ROTCArIDAuNTtcblx0XHR2ZWMzIGlycmFkaWFuY2UgXHgzZCBtaXgoIGhlbWlMaWdodC5ncm91bmRDb2xvciwgaGVtaUxpZ2h0LnNreUNvbG9yLCBoZW1pRGlmZnVzZVdlaWdodCApO1xuXHRcdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdFx0aXJyYWRpYW5jZSAqXHgzZCBQSTtcblx0XHQjZW5kaWZcblx0XHRyZXR1cm4gaXJyYWRpYW5jZTtcblx0fVxuI2VuZGlmIiwKbGlnaHRzX3Bob25nX2ZyYWdtZW50OiJCbGlublBob25nTWF0ZXJpYWwgbWF0ZXJpYWw7XG5tYXRlcmlhbC5kaWZmdXNlQ29sb3IgXHgzZCBkaWZmdXNlQ29sb3IucmdiO1xubWF0ZXJpYWwuc3BlY3VsYXJDb2xvciBceDNkIHNwZWN1bGFyO1xubWF0ZXJpYWwuc3BlY3VsYXJTaGluaW5lc3MgXHgzZCBzaGluaW5lc3M7XG5tYXRlcmlhbC5zcGVjdWxhclN0cmVuZ3RoIFx4M2Qgc3BlY3VsYXJTdHJlbmd0aDsiLGxpZ2h0c19waG9uZ19wYXJzX2ZyYWdtZW50OiJ2YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbnN0cnVjdCBCbGlublBob25nTWF0ZXJpYWwge1xuXHR2ZWMzXHRkaWZmdXNlQ29sb3I7XG5cdHZlYzNcdHNwZWN1bGFyQ29sb3I7XG5cdGZsb2F0XHRzcGVjdWxhclNoaW5pbmVzcztcblx0ZmxvYXRcdHNwZWN1bGFyU3RyZW5ndGg7XG59O1xudm9pZCBSRV9EaXJlY3RfQmxpbm5QaG9uZyggY29uc3QgaW4gSW5jaWRlbnRMaWdodCBkaXJlY3RMaWdodCwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0I2lmZGVmIFRPT05cblx0XHR2ZWMzIGlycmFkaWFuY2UgXHgzZCBnZXRHcmFkaWVudElycmFkaWFuY2UoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0I2Vsc2Vcblx0XHRmbG9hdCBkb3ROTCBceDNkIHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5Lm5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0XHR2ZWMzIGlycmFkaWFuY2UgXHgzZCBkb3ROTCAqIGRpcmVjdExpZ2h0LmNvbG9yO1xuXHQjZW5kaWZcblx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0aXJyYWRpYW5jZSAqXHgzZCBQSTtcblx0I2VuZGlmXG5cdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgK1x4M2QgaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgK1x4M2QgaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfQmxpbm5QaG9uZyggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbC5zcGVjdWxhckNvbG9yLCBtYXRlcmlhbC5zcGVjdWxhclNoaW5pbmVzcyApICogbWF0ZXJpYWwuc3BlY3VsYXJTdHJlbmd0aDtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX0JsaW5uUGhvbmcoIGNvbnN0IGluIHZlYzMgaXJyYWRpYW5jZSwgY29uc3QgaW4gR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeSwgY29uc3QgaW4gQmxpbm5QaG9uZ01hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICtceDNkIGlycmFkaWFuY2UgKiBCUkRGX0RpZmZ1c2VfTGFtYmVydCggbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICk7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X0JsaW5uUGhvbmdcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9CbGlublBob25nXG4jZGVmaW5lIE1hdGVyaWFsX0xpZ2h0UHJvYmVMT0QoIG1hdGVyaWFsIClcdCgwKSIsCmxpZ2h0c19waHlzaWNhbF9mcmFnbWVudDoiUGh5c2ljYWxNYXRlcmlhbCBtYXRlcmlhbDtcbm1hdGVyaWFsLmRpZmZ1c2VDb2xvciBceDNkIGRpZmZ1c2VDb2xvci5yZ2IgKiAoIDEuMCAtIG1ldGFsbmVzc0ZhY3RvciApO1xubWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MgXHgzZCBjbGFtcCggcm91Z2huZXNzRmFjdG9yLCAwLjA0LCAxLjAgKTtcbiNpZmRlZiBSRUZMRUNUSVZJVFlcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciBceDNkIG1peCggdmVjMyggTUFYSU1VTV9TUEVDVUxBUl9DT0VGRklDSUVOVCAqIHBvdzIoIHJlZmxlY3Rpdml0eSApICksIGRpZmZ1c2VDb2xvci5yZ2IsIG1ldGFsbmVzc0ZhY3RvciApO1xuI2Vsc2Vcblx0bWF0ZXJpYWwuc3BlY3VsYXJDb2xvciBceDNkIG1peCggdmVjMyggREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCApLCBkaWZmdXNlQ29sb3IucmdiLCBtZXRhbG5lc3NGYWN0b3IgKTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHRtYXRlcmlhbC5jbGVhcmNvYXQgXHgzZCBzYXR1cmF0ZSggY2xlYXJjb2F0ICk7XHRtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MgXHgzZCBjbGFtcCggY2xlYXJjb2F0Um91Z2huZXNzLCAwLjA0LCAxLjAgKTtcbiNlbmRpZlxuI2lmZGVmIFVTRV9TSEVFTlxuXHRtYXRlcmlhbC5zaGVlbkNvbG9yIFx4M2Qgc2hlZW47XG4jZW5kaWYiLApsaWdodHNfcGh5c2ljYWxfcGFyc19mcmFnbWVudDoic3RydWN0IFBoeXNpY2FsTWF0ZXJpYWwge1xuXHR2ZWMzXHRkaWZmdXNlQ29sb3I7XG5cdGZsb2F0XHRzcGVjdWxhclJvdWdobmVzcztcblx0dmVjM1x0c3BlY3VsYXJDb2xvcjtcbiNpZmRlZiBDTEVBUkNPQVRcblx0ZmxvYXQgY2xlYXJjb2F0O1xuXHRmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dmVjMyBzaGVlbkNvbG9yO1xuI2VuZGlmXG59O1xuI2RlZmluZSBNQVhJTVVNX1NQRUNVTEFSX0NPRUZGSUNJRU5UIDAuMTZcbiNkZWZpbmUgREVGQVVMVF9TUEVDVUxBUl9DT0VGRklDSUVOVCAwLjA0XG5mbG9hdCBjbGVhcmNvYXRESFJBcHByb3goIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcywgY29uc3QgaW4gZmxvYXQgZG90TkwgKSB7XG5cdHJldHVybiBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICsgKCAxLjAgLSBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICkgKiAoIHBvdyggMS4wIC0gZG90TkwsIDUuMCApICogcG93KCAxLjAgLSByb3VnaG5lc3MsIDIuMCApICk7XG59XG4jaWYgTlVNX1JFQ1RfQVJFQV9MSUdIVFMgXHgzZSAwXG5cdHZvaWQgUkVfRGlyZWN0X1JlY3RBcmVhX1BoeXNpY2FsKCBjb25zdCBpbiBSZWN0QXJlYUxpZ2h0IHJlY3RBcmVhTGlnaHQsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRcdHZlYzMgbm9ybWFsIFx4M2QgZ2VvbWV0cnkubm9ybWFsO1xuXHRcdHZlYzMgdmlld0RpciBceDNkIGdlb21ldHJ5LnZpZXdEaXI7XG5cdFx0dmVjMyBwb3NpdGlvbiBceDNkIGdlb21ldHJ5LnBvc2l0aW9uO1xuXHRcdHZlYzMgbGlnaHRQb3MgXHgzZCByZWN0QXJlYUxpZ2h0LnBvc2l0aW9uO1xuXHRcdHZlYzMgaGFsZldpZHRoIFx4M2QgcmVjdEFyZWFMaWdodC5oYWxmV2lkdGg7XG5cdFx0dmVjMyBoYWxmSGVpZ2h0IFx4M2QgcmVjdEFyZWFMaWdodC5oYWxmSGVpZ2h0O1xuXHRcdHZlYzMgbGlnaHRDb2xvciBceDNkIHJlY3RBcmVhTGlnaHQuY29sb3I7XG5cdFx0ZmxvYXQgcm91Z2huZXNzIFx4M2QgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3M7XG5cdFx0dmVjMyByZWN0Q29vcmRzWyA0IF07XG5cdFx0cmVjdENvb3Jkc1sgMCBdIFx4M2QgbGlnaHRQb3MgKyBoYWxmV2lkdGggLSBoYWxmSGVpZ2h0O1x0XHRyZWN0Q29vcmRzWyAxIF0gXHgzZCBsaWdodFBvcyAtIGhhbGZXaWR0aCAtIGhhbGZIZWlnaHQ7XG5cdFx0cmVjdENvb3Jkc1sgMiBdIFx4M2QgbGlnaHRQb3MgLSBoYWxmV2lkdGggKyBoYWxmSGVpZ2h0O1xuXHRcdHJlY3RDb29yZHNbIDMgXSBceDNkIGxpZ2h0UG9zICsgaGFsZldpZHRoICsgaGFsZkhlaWdodDtcblx0XHR2ZWMyIHV2IFx4M2QgTFRDX1V2KCBub3JtYWwsIHZpZXdEaXIsIHJvdWdobmVzcyApO1xuXHRcdHZlYzQgdDEgXHgzZCB0ZXh0dXJlMkQoIGx0Y18xLCB1diApO1xuXHRcdHZlYzQgdDIgXHgzZCB0ZXh0dXJlMkQoIGx0Y18yLCB1diApO1xuXHRcdG1hdDMgbUludiBceDNkIG1hdDMoXG5cdFx0XHR2ZWMzKCB0MS54LCAwLCB0MS55ICksXG5cdFx0XHR2ZWMzKCAgICAwLCAxLCAgICAwICksXG5cdFx0XHR2ZWMzKCB0MS56LCAwLCB0MS53IClcblx0XHQpO1xuXHRcdHZlYzMgZnJlc25lbCBceDNkICggbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciAqIHQyLnggKyAoIHZlYzMoIDEuMCApIC0gbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciApICogdDIueSApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICtceDNkIGxpZ2h0Q29sb3IgKiBmcmVzbmVsICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtSW52LCByZWN0Q29vcmRzICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArXHgzZCBsaWdodENvbG9yICogbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogTFRDX0V2YWx1YXRlKCBub3JtYWwsIHZpZXdEaXIsIHBvc2l0aW9uLCBtYXQzKCAxLjAgKSwgcmVjdENvb3JkcyApO1xuXHR9XG4jZW5kaWZcbnZvaWQgUkVfRGlyZWN0X1BoeXNpY2FsKCBjb25zdCBpbiBJbmNpZGVudExpZ2h0IGRpcmVjdExpZ2h0LCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCApIHtcblx0ZmxvYXQgZG90TkwgXHgzZCBzYXR1cmF0ZSggZG90KCBnZW9tZXRyeS5ub3JtYWwsIGRpcmVjdExpZ2h0LmRpcmVjdGlvbiApICk7XG5cdHZlYzMgaXJyYWRpYW5jZSBceDNkIGRvdE5MICogZGlyZWN0TGlnaHQuY29sb3I7XG5cdCNpZm5kZWYgUEhZU0lDQUxMWV9DT1JSRUNUX0xJR0hUU1xuXHRcdGlycmFkaWFuY2UgKlx4M2QgUEk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROTCBceDNkIHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZGlyZWN0TGlnaHQuZGlyZWN0aW9uICkgKTtcblx0XHR2ZWMzIGNjSXJyYWRpYW5jZSBceDNkIGNjRG90TkwgKiBkaXJlY3RMaWdodC5jb2xvcjtcblx0XHQjaWZuZGVmIFBIWVNJQ0FMTFlfQ09SUkVDVF9MSUdIVFNcblx0XHRcdGNjSXJyYWRpYW5jZSAqXHgzZCBQSTtcblx0XHQjZW5kaWZcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgXHgzZCBtYXRlcmlhbC5jbGVhcmNvYXQgKiBjbGVhcmNvYXRESFJBcHByb3goIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcywgY2NEb3ROTCApO1xuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICtceDNkIGNjSXJyYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYKCBkaXJlY3RMaWdodCwgZ2VvbWV0cnkudmlld0RpciwgZ2VvbWV0cnkuY2xlYXJjb2F0Tm9ybWFsLCB2ZWMzKCBERUZBVUxUX1NQRUNVTEFSX0NPRUZGSUNJRU5UICksIG1hdGVyaWFsLmNsZWFyY29hdFJvdWdobmVzcyApO1xuXHQjZWxzZVxuXHRcdGZsb2F0IGNsZWFyY29hdERIUiBceDNkIDAuMDtcblx0I2VuZGlmXG5cdCNpZmRlZiBVU0VfU0hFRU5cblx0XHRyZWZsZWN0ZWRMaWdodC5kaXJlY3RTcGVjdWxhciArXHgzZCAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfU3BlY3VsYXJfU2hlZW4oXG5cdFx0XHRtYXRlcmlhbC5zcGVjdWxhclJvdWdobmVzcyxcblx0XHRcdGRpcmVjdExpZ2h0LmRpcmVjdGlvbixcblx0XHRcdGdlb21ldHJ5LFxuXHRcdFx0bWF0ZXJpYWwuc2hlZW5Db2xvclxuXHRcdCk7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgK1x4M2QgKCAxLjAgLSBjbGVhcmNvYXRESFIgKSAqIGlycmFkaWFuY2UgKiBCUkRGX1NwZWN1bGFyX0dHWCggZGlyZWN0TGlnaHQsIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5Lm5vcm1hbCwgbWF0ZXJpYWwuc3BlY3VsYXJDb2xvciwgbWF0ZXJpYWwuc3BlY3VsYXJSb3VnaG5lc3MpO1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArXHgzZCAoIDEuMCAtIGNsZWFyY29hdERIUiApICogaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3REaWZmdXNlX1BoeXNpY2FsKCBjb25zdCBpbiB2ZWMzIGlycmFkaWFuY2UsIGNvbnN0IGluIEdlb21ldHJpY0NvbnRleHQgZ2VvbWV0cnksIGNvbnN0IGluIFBoeXNpY2FsTWF0ZXJpYWwgbWF0ZXJpYWwsIGlub3V0IFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0ICkge1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgK1x4M2QgaXJyYWRpYW5jZSAqIEJSREZfRGlmZnVzZV9MYW1iZXJ0KCBtYXRlcmlhbC5kaWZmdXNlQ29sb3IgKTtcbn1cbnZvaWQgUkVfSW5kaXJlY3RTcGVjdWxhcl9QaHlzaWNhbCggY29uc3QgaW4gdmVjMyByYWRpYW5jZSwgY29uc3QgaW4gdmVjMyBpcnJhZGlhbmNlLCBjb25zdCBpbiB2ZWMzIGNsZWFyY29hdFJhZGlhbmNlLCBjb25zdCBpbiBHZW9tZXRyaWNDb250ZXh0IGdlb21ldHJ5LCBjb25zdCBpbiBQaHlzaWNhbE1hdGVyaWFsIG1hdGVyaWFsLCBpbm91dCBSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCkge1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0ZmxvYXQgY2NEb3ROViBceDNkIHNhdHVyYXRlKCBkb3QoIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgZ2VvbWV0cnkudmlld0RpciApICk7XG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArXHgzZCBjbGVhcmNvYXRSYWRpYW5jZSAqIG1hdGVyaWFsLmNsZWFyY29hdCAqIEJSREZfU3BlY3VsYXJfR0dYX0Vudmlyb25tZW50KCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwsIHZlYzMoIERFRkFVTFRfU1BFQ1VMQVJfQ09FRkZJQ0lFTlQgKSwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzICk7XG5cdFx0ZmxvYXQgY2NEb3ROTCBceDNkIGNjRG90TlY7XG5cdFx0ZmxvYXQgY2xlYXJjb2F0REhSIFx4M2QgbWF0ZXJpYWwuY2xlYXJjb2F0ICogY2xlYXJjb2F0REhSQXBwcm94KCBtYXRlcmlhbC5jbGVhcmNvYXRSb3VnaG5lc3MsIGNjRG90TkwgKTtcblx0I2Vsc2Vcblx0XHRmbG9hdCBjbGVhcmNvYXRESFIgXHgzZCAwLjA7XG5cdCNlbmRpZlxuXHRmbG9hdCBjbGVhcmNvYXRJbnYgXHgzZCAxLjAgLSBjbGVhcmNvYXRESFI7XG5cdHZlYzMgc2luZ2xlU2NhdHRlcmluZyBceDNkIHZlYzMoIDAuMCApO1xuXHR2ZWMzIG11bHRpU2NhdHRlcmluZyBceDNkIHZlYzMoIDAuMCApO1xuXHR2ZWMzIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZSBceDNkIGlycmFkaWFuY2UgKiBSRUNJUFJPQ0FMX1BJO1xuXHRCUkRGX1NwZWN1bGFyX011bHRpc2NhdHRlcmluZ19FbnZpcm9ubWVudCggZ2VvbWV0cnksIG1hdGVyaWFsLnNwZWN1bGFyQ29sb3IsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBzaW5nbGVTY2F0dGVyaW5nLCBtdWx0aVNjYXR0ZXJpbmcgKTtcblx0dmVjMyBkaWZmdXNlIFx4M2QgbWF0ZXJpYWwuZGlmZnVzZUNvbG9yICogKCAxLjAgLSAoIHNpbmdsZVNjYXR0ZXJpbmcgKyBtdWx0aVNjYXR0ZXJpbmcgKSApO1xuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICtceDNkIGNsZWFyY29hdEludiAqIHJhZGlhbmNlICogc2luZ2xlU2NhdHRlcmluZztcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICtceDNkIG11bHRpU2NhdHRlcmluZyAqIGNvc2luZVdlaWdodGVkSXJyYWRpYW5jZTtcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICtceDNkIGRpZmZ1c2UgKiBjb3NpbmVXZWlnaHRlZElycmFkaWFuY2U7XG59XG4jZGVmaW5lIFJFX0RpcmVjdFx0XHRcdFx0UkVfRGlyZWN0X1BoeXNpY2FsXG4jZGVmaW5lIFJFX0RpcmVjdF9SZWN0QXJlYVx0XHRSRV9EaXJlY3RfUmVjdEFyZWFfUGh5c2ljYWxcbiNkZWZpbmUgUkVfSW5kaXJlY3REaWZmdXNlXHRcdFJFX0luZGlyZWN0RGlmZnVzZV9QaHlzaWNhbFxuI2RlZmluZSBSRV9JbmRpcmVjdFNwZWN1bGFyXHRcdFJFX0luZGlyZWN0U3BlY3VsYXJfUGh5c2ljYWxcbmZsb2F0IGNvbXB1dGVTcGVjdWxhck9jY2x1c2lvbiggY29uc3QgaW4gZmxvYXQgZG90TlYsIGNvbnN0IGluIGZsb2F0IGFtYmllbnRPY2NsdXNpb24sIGNvbnN0IGluIGZsb2F0IHJvdWdobmVzcyApIHtcblx0cmV0dXJuIHNhdHVyYXRlKCBwb3coIGRvdE5WICsgYW1iaWVudE9jY2x1c2lvbiwgZXhwMiggLSAxNi4wICogcm91Z2huZXNzIC0gMS4wICkgKSAtIDEuMCArIGFtYmllbnRPY2NsdXNpb24gKTtcbn0iLApsaWdodHNfZnJhZ21lbnRfYmVnaW46IlxuR2VvbWV0cmljQ29udGV4dCBnZW9tZXRyeTtcbmdlb21ldHJ5LnBvc2l0aW9uIFx4M2QgLSB2Vmlld1Bvc2l0aW9uO1xuZ2VvbWV0cnkubm9ybWFsIFx4M2Qgbm9ybWFsO1xuZ2VvbWV0cnkudmlld0RpciBceDNkIG5vcm1hbGl6ZSggdlZpZXdQb3NpdGlvbiApO1xuI2lmZGVmIENMRUFSQ09BVFxuXHRnZW9tZXRyeS5jbGVhcmNvYXROb3JtYWwgXHgzZCBjbGVhcmNvYXROb3JtYWw7XG4jZW5kaWZcbkluY2lkZW50TGlnaHQgZGlyZWN0TGlnaHQ7XG4jaWYgKCBOVU1fUE9JTlRfTElHSFRTIFx4M2UgMCApIFx4MjZceDI2IGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdFBvaW50TGlnaHQgcG9pbnRMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fUE9JTlRfTElHSFRTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgXHgzZCBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdGdldFBvaW50RGlyZWN0TGlnaHRJcnJhZGlhbmNlKCBwb2ludExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApIFx4MjZceDI2ICggVU5ST0xMRURfTE9PUF9JTkRFWCBceDNjIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIClcblx0XHRkaXJlY3RMaWdodC5jb2xvciAqXHgzZCBhbGwoIGJ2ZWMyKCBwb2ludExpZ2h0LnNoYWRvdywgZGlyZWN0TGlnaHQudmlzaWJsZSApICkgPyBnZXRQb2ludFNoYWRvdyggcG9pbnRTaGFkb3dNYXBbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dNYXBTaXplLCBwb2ludExpZ2h0LnNoYWRvd0JpYXMsIHBvaW50TGlnaHQuc2hhZG93UmFkaXVzLCB2UG9pbnRTaGFkb3dDb29yZFsgaSBdLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYU5lYXIsIHBvaW50TGlnaHQuc2hhZG93Q2FtZXJhRmFyICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG4jZW5kaWZcbiNpZiAoIE5VTV9TUE9UX0xJR0hUUyBceDNlIDAgKSBceDI2XHgyNiBkZWZpbmVkKCBSRV9EaXJlY3QgKVxuXHRTcG90TGlnaHQgc3BvdExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpIFx4M2QgMDsgaSBceDNjIE5VTV9TUE9UX0xJR0hUUzsgaSArKyApIHtcblx0XHRzcG90TGlnaHQgXHgzZCBzcG90TGlnaHRzWyBpIF07XG5cdFx0Z2V0U3BvdERpcmVjdExpZ2h0SXJyYWRpYW5jZSggc3BvdExpZ2h0LCBnZW9tZXRyeSwgZGlyZWN0TGlnaHQgKTtcblx0XHQjaWYgZGVmaW5lZCggVVNFX1NIQURPV01BUCApIFx4MjZceDI2ICggVU5ST0xMRURfTE9PUF9JTkRFWCBceDNjIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICpceDNkIGFsbCggYnZlYzIoIHNwb3RMaWdodC5zaGFkb3csIGRpcmVjdExpZ2h0LnZpc2libGUgKSApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG4jZW5kaWZcbiNpZiAoIE5VTV9ESVJfTElHSFRTIFx4M2UgMCApIFx4MjZceDI2IGRlZmluZWQoIFJFX0RpcmVjdCApXG5cdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fRElSX0xJR0hUUzsgaSArKyApIHtcblx0XHRkaXJlY3Rpb25hbExpZ2h0IFx4M2QgZGlyZWN0aW9uYWxMaWdodHNbIGkgXTtcblx0XHRnZXREaXJlY3Rpb25hbERpcmVjdExpZ2h0SXJyYWRpYW5jZSggZGlyZWN0aW9uYWxMaWdodCwgZ2VvbWV0cnksIGRpcmVjdExpZ2h0ICk7XG5cdFx0I2lmIGRlZmluZWQoIFVTRV9TSEFET1dNQVAgKSBceDI2XHgyNiAoIFVOUk9MTEVEX0xPT1BfSU5ERVggXHgzYyBOVU1fRElSX0xJR0hUX1NIQURPV1MgKVxuXHRcdGRpcmVjdExpZ2h0LmNvbG9yICpceDNkIGFsbCggYnZlYzIoIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93LCBkaXJlY3RMaWdodC52aXNpYmxlICkgKSA/IGdldFNoYWRvdyggZGlyZWN0aW9uYWxTaGFkb3dNYXBbIGkgXSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dNYXBTaXplLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd0JpYXMsIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93UmFkaXVzLCB2RGlyZWN0aW9uYWxTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdFx0I2VuZGlmXG5cdFx0UkVfRGlyZWN0KCBkaXJlY3RMaWdodCwgZ2VvbWV0cnksIG1hdGVyaWFsLCByZWZsZWN0ZWRMaWdodCApO1xuXHR9XG4jZW5kaWZcbiNpZiAoIE5VTV9SRUNUX0FSRUFfTElHSFRTIFx4M2UgMCApIFx4MjZceDI2IGRlZmluZWQoIFJFX0RpcmVjdF9SZWN0QXJlYSApXG5cdFJlY3RBcmVhTGlnaHQgcmVjdEFyZWFMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fUkVDVF9BUkVBX0xJR0hUUzsgaSArKyApIHtcblx0XHRyZWN0QXJlYUxpZ2h0IFx4M2QgcmVjdEFyZWFMaWdodHNbIGkgXTtcblx0XHRSRV9EaXJlY3RfUmVjdEFyZWEoIHJlY3RBcmVhTGlnaHQsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcblx0fVxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3REaWZmdXNlIClcblx0dmVjMyBpYmxJcnJhZGlhbmNlIFx4M2QgdmVjMyggMC4wICk7XG5cdHZlYzMgaXJyYWRpYW5jZSBceDNkIGdldEFtYmllbnRMaWdodElycmFkaWFuY2UoIGFtYmllbnRMaWdodENvbG9yICk7XG5cdGlycmFkaWFuY2UgK1x4M2QgZ2V0TGlnaHRQcm9iZUlycmFkaWFuY2UoIGxpZ2h0UHJvYmUsIGdlb21ldHJ5ICk7XG5cdCNpZiAoIE5VTV9IRU1JX0xJR0hUUyBceDNlIDAgKVxuXHRcdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0XHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fSEVNSV9MSUdIVFM7IGkgKysgKSB7XG5cdFx0XHRpcnJhZGlhbmNlICtceDNkIGdldEhlbWlzcGhlcmVMaWdodElycmFkaWFuY2UoIGhlbWlzcGhlcmVMaWdodHNbIGkgXSwgZ2VvbWV0cnkgKTtcblx0XHR9XG5cdCNlbmRpZlxuI2VuZGlmXG4jaWYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHZlYzMgcmFkaWFuY2UgXHgzZCB2ZWMzKCAwLjAgKTtcblx0dmVjMyBjbGVhcmNvYXRSYWRpYW5jZSBceDNkIHZlYzMoIDAuMCApO1xuI2VuZGlmIiwKbGlnaHRzX2ZyYWdtZW50X21hcHM6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHQjaWZkZWYgVVNFX0xJR0hUTUFQXG5cdFx0dmVjMyBsaWdodE1hcElycmFkaWFuY2UgXHgzZCB0ZXh0dXJlMkQoIGxpZ2h0TWFwLCB2VXYyICkueHl6ICogbGlnaHRNYXBJbnRlbnNpdHk7XG5cdFx0I2lmbmRlZiBQSFlTSUNBTExZX0NPUlJFQ1RfTElHSFRTXG5cdFx0XHRsaWdodE1hcElycmFkaWFuY2UgKlx4M2QgUEk7XG5cdFx0I2VuZGlmXG5cdFx0aXJyYWRpYW5jZSArXHgzZCBsaWdodE1hcElycmFkaWFuY2U7XG5cdCNlbmRpZlxuXHQjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIFx4MjZceDI2IGRlZmluZWQoIFNUQU5EQVJEICkgXHgyNlx4MjYgZGVmaW5lZCggRU5WTUFQX1RZUEVfQ1VCRV9VViApXG5cdFx0aWJsSXJyYWRpYW5jZSArXHgzZCBnZXRMaWdodFByb2JlSW5kaXJlY3RJcnJhZGlhbmNlKCBnZW9tZXRyeSwgbWF4TWlwTGV2ZWwgKTtcblx0I2VuZGlmXG4jZW5kaWZcbiNpZiBkZWZpbmVkKCBVU0VfRU5WTUFQICkgXHgyNlx4MjYgZGVmaW5lZCggUkVfSW5kaXJlY3RTcGVjdWxhciApXG5cdHJhZGlhbmNlICtceDNkIGdldExpZ2h0UHJvYmVJbmRpcmVjdFJhZGlhbmNlKCBnZW9tZXRyeS52aWV3RGlyLCBnZW9tZXRyeS5ub3JtYWwsIG1hdGVyaWFsLnNwZWN1bGFyUm91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjaWZkZWYgQ0xFQVJDT0FUXG5cdFx0Y2xlYXJjb2F0UmFkaWFuY2UgK1x4M2QgZ2V0TGlnaHRQcm9iZUluZGlyZWN0UmFkaWFuY2UoIGdlb21ldHJ5LnZpZXdEaXIsIGdlb21ldHJ5LmNsZWFyY29hdE5vcm1hbCwgbWF0ZXJpYWwuY2xlYXJjb2F0Um91Z2huZXNzLCBtYXhNaXBMZXZlbCApO1xuXHQjZW5kaWZcbiNlbmRpZiIsCmxpZ2h0c19mcmFnbWVudF9lbmQ6IiNpZiBkZWZpbmVkKCBSRV9JbmRpcmVjdERpZmZ1c2UgKVxuXHRSRV9JbmRpcmVjdERpZmZ1c2UoIGlycmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZlxuI2lmIGRlZmluZWQoIFJFX0luZGlyZWN0U3BlY3VsYXIgKVxuXHRSRV9JbmRpcmVjdFNwZWN1bGFyKCByYWRpYW5jZSwgaWJsSXJyYWRpYW5jZSwgY2xlYXJjb2F0UmFkaWFuY2UsIGdlb21ldHJ5LCBtYXRlcmlhbCwgcmVmbGVjdGVkTGlnaHQgKTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfZnJhZ21lbnQ6IiNpZiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUYgKSBceDI2XHgyNiBkZWZpbmVkKCBVU0VfTE9HREVQVEhCVUZfRVhUIClcblx0Z2xfRnJhZ0RlcHRoRVhUIFx4M2QgbG9nMiggdkZyYWdEZXB0aCApICogbG9nRGVwdGhCdWZGQyAqIDAuNTtcbiNlbmRpZiIsbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudDoiI2lmIGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRiApIFx4MjZceDI2IGRlZmluZWQoIFVTRV9MT0dERVBUSEJVRl9FWFQgKVxuXHR1bmlmb3JtIGZsb2F0IGxvZ0RlcHRoQnVmRkM7XG5cdHZhcnlpbmcgZmxvYXQgdkZyYWdEZXB0aDtcbiNlbmRpZiIsCmxvZ2RlcHRoYnVmX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX0xPR0RFUFRIQlVGXG5cdCNpZmRlZiBVU0VfTE9HREVQVEhCVUZfRVhUXG5cdFx0dmFyeWluZyBmbG9hdCB2RnJhZ0RlcHRoO1xuXHQjZWxzZVxuXHRcdHVuaWZvcm0gZmxvYXQgbG9nRGVwdGhCdWZGQztcblx0I2VuZGlmXG4jZW5kaWYiLGxvZ2RlcHRoYnVmX3ZlcnRleDoiI2lmZGVmIFVTRV9MT0dERVBUSEJVRlxuXHQjaWZkZWYgVVNFX0xPR0RFUFRIQlVGX0VYVFxuXHRcdHZGcmFnRGVwdGggXHgzZCAxLjAgKyBnbF9Qb3NpdGlvbi53O1xuXHQjZWxzZVxuXHRcdGdsX1Bvc2l0aW9uLnogXHgzZCBsb2cyKCBtYXgoIEVQU0lMT04sIGdsX1Bvc2l0aW9uLncgKyAxLjAgKSApICogbG9nRGVwdGhCdWZGQyAtIDEuMDtcblx0XHRnbF9Qb3NpdGlvbi56ICpceDNkIGdsX1Bvc2l0aW9uLnc7XG5cdCNlbmRpZlxuI2VuZGlmIixtYXBfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzQgdGV4ZWxDb2xvciBceDNkIHRleHR1cmUyRCggbWFwLCB2VXYgKTtcblx0dGV4ZWxDb2xvciBceDNkIG1hcFRleGVsVG9MaW5lYXIoIHRleGVsQ29sb3IgKTtcblx0ZGlmZnVzZUNvbG9yICpceDNkIHRleGVsQ29sb3I7XG4jZW5kaWYiLAptYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWFwO1xuI2VuZGlmIixtYXBfcGFydGljbGVfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfTUFQXG5cdHZlYzIgdXYgXHgzZCAoIHV2VHJhbnNmb3JtICogdmVjMyggZ2xfUG9pbnRDb29yZC54LCAxLjAgLSBnbF9Qb2ludENvb3JkLnksIDEgKSApLnh5O1xuXHR2ZWM0IG1hcFRleGVsIFx4M2QgdGV4dHVyZTJEKCBtYXAsIHV2ICk7XG5cdGRpZmZ1c2VDb2xvciAqXHgzZCBtYXBUZXhlbFRvTGluZWFyKCBtYXBUZXhlbCApO1xuI2VuZGlmIixtYXBfcGFydGljbGVfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NQVBcblx0dW5pZm9ybSBtYXQzIHV2VHJhbnNmb3JtO1xuXHR1bmlmb3JtIHNhbXBsZXIyRCBtYXA7XG4jZW5kaWYiLG1ldGFsbmVzc21hcF9mcmFnbWVudDoiZmxvYXQgbWV0YWxuZXNzRmFjdG9yIFx4M2QgbWV0YWxuZXNzO1xuI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dmVjNCB0ZXhlbE1ldGFsbmVzcyBceDNkIHRleHR1cmUyRCggbWV0YWxuZXNzTWFwLCB2VXYgKTtcblx0bWV0YWxuZXNzRmFjdG9yICpceDNkIHRleGVsTWV0YWxuZXNzLmI7XG4jZW5kaWYiLAptZXRhbG5lc3NtYXBfcGFyc19mcmFnbWVudDoiI2lmZGVmIFVTRV9NRVRBTE5FU1NNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgbWV0YWxuZXNzTWFwO1xuI2VuZGlmIixtb3JwaG5vcm1hbF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhOT1JNQUxTXG5cdG9iamVjdE5vcm1hbCArXHgzZCAoIG1vcnBoTm9ybWFsMCAtIG5vcm1hbCApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAwIF07XG5cdG9iamVjdE5vcm1hbCArXHgzZCAoIG1vcnBoTm9ybWFsMSAtIG5vcm1hbCApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAxIF07XG5cdG9iamVjdE5vcm1hbCArXHgzZCAoIG1vcnBoTm9ybWFsMiAtIG5vcm1hbCApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdG9iamVjdE5vcm1hbCArXHgzZCAoIG1vcnBoTm9ybWFsMyAtIG5vcm1hbCApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAzIF07XG4jZW5kaWYiLG1vcnBodGFyZ2V0X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX01PUlBIVEFSR0VUU1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDggXTtcblx0I2Vsc2Vcblx0dW5pZm9ybSBmbG9hdCBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDQgXTtcblx0I2VuZGlmXG4jZW5kaWYiLAptb3JwaHRhcmdldF92ZXJ0ZXg6IiNpZmRlZiBVU0VfTU9SUEhUQVJHRVRTXG5cdHRyYW5zZm9ybWVkICtceDNkICggbW9ycGhUYXJnZXQwIC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMCBdO1xuXHR0cmFuc2Zvcm1lZCArXHgzZCAoIG1vcnBoVGFyZ2V0MSAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDEgXTtcblx0dHJhbnNmb3JtZWQgK1x4M2QgKCBtb3JwaFRhcmdldDIgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyAyIF07XG5cdHRyYW5zZm9ybWVkICtceDNkICggbW9ycGhUYXJnZXQzIC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgMyBdO1xuXHQjaWZuZGVmIFVTRV9NT1JQSE5PUk1BTFNcblx0dHJhbnNmb3JtZWQgK1x4M2QgKCBtb3JwaFRhcmdldDQgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA0IF07XG5cdHRyYW5zZm9ybWVkICtceDNkICggbW9ycGhUYXJnZXQ1IC0gcG9zaXRpb24gKSAqIG1vcnBoVGFyZ2V0SW5mbHVlbmNlc1sgNSBdO1xuXHR0cmFuc2Zvcm1lZCArXHgzZCAoIG1vcnBoVGFyZ2V0NiAtIHBvc2l0aW9uICkgKiBtb3JwaFRhcmdldEluZmx1ZW5jZXNbIDYgXTtcblx0dHJhbnNmb3JtZWQgK1x4M2QgKCBtb3JwaFRhcmdldDcgLSBwb3NpdGlvbiApICogbW9ycGhUYXJnZXRJbmZsdWVuY2VzWyA3IF07XG5cdCNlbmRpZlxuI2VuZGlmIiwKbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiIjaWZkZWYgRkxBVF9TSEFERURcblx0dmVjMyBmZHggXHgzZCB2ZWMzKCBkRmR4KCB2Vmlld1Bvc2l0aW9uLnggKSwgZEZkeCggdlZpZXdQb3NpdGlvbi55ICksIGRGZHgoIHZWaWV3UG9zaXRpb24ueiApICk7XG5cdHZlYzMgZmR5IFx4M2QgdmVjMyggZEZkeSggdlZpZXdQb3NpdGlvbi54ICksIGRGZHkoIHZWaWV3UG9zaXRpb24ueSApLCBkRmR5KCB2Vmlld1Bvc2l0aW9uLnogKSApO1xuXHR2ZWMzIG5vcm1hbCBceDNkIG5vcm1hbGl6ZSggY3Jvc3MoIGZkeCwgZmR5ICkgKTtcbiNlbHNlXG5cdHZlYzMgbm9ybWFsIFx4M2Qgbm9ybWFsaXplKCB2Tm9ybWFsICk7XG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgXHgzZCBub3JtYWwgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdCNlbmRpZlxuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2ZWMzIHRhbmdlbnQgXHgzZCBub3JtYWxpemUoIHZUYW5nZW50ICk7XG5cdFx0dmVjMyBiaXRhbmdlbnQgXHgzZCBub3JtYWxpemUoIHZCaXRhbmdlbnQgKTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR0YW5nZW50IFx4M2QgdGFuZ2VudCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0XHRcdGJpdGFuZ2VudCBceDNkIGJpdGFuZ2VudCAqICggZmxvYXQoIGdsX0Zyb250RmFjaW5nICkgKiAyLjAgLSAxLjAgKTtcblx0XHQjZW5kaWZcblx0I2VuZGlmXG4jZW5kaWZcbnZlYzMgZ2VvbWV0cnlOb3JtYWwgXHgzZCBub3JtYWw7IiwKbm9ybWFsX2ZyYWdtZW50X21hcHM6IiNpZmRlZiBPQkpFQ1RTUEFDRV9OT1JNQUxNQVBcblx0bm9ybWFsIFx4M2QgdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0I2lmZGVmIEZMSVBfU0lERURcblx0XHRub3JtYWwgXHgzZCAtIG5vcm1hbDtcblx0I2VuZGlmXG5cdCNpZmRlZiBET1VCTEVfU0lERURcblx0XHRub3JtYWwgXHgzZCBub3JtYWwgKiAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdCNlbmRpZlxuXHRub3JtYWwgXHgzZCBub3JtYWxpemUoIG5vcm1hbE1hdHJpeCAqIG5vcm1hbCApO1xuI2VsaWYgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG1hdDMgdlRCTiBceDNkIG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgbm9ybWFsICk7XG5cdFx0dmVjMyBtYXBOIFx4M2QgdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0XHRtYXBOLnh5IFx4M2Qgbm9ybWFsU2NhbGUgKiBtYXBOLnh5O1xuXHRcdG5vcm1hbCBceDNkIG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRub3JtYWwgXHgzZCBwZXJ0dXJiTm9ybWFsMkFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgbm9ybWFsU2NhbGUsIG5vcm1hbE1hcCApO1xuXHQjZW5kaWZcbiNlbGlmIGRlZmluZWQoIFVTRV9CVU1QTUFQIClcblx0bm9ybWFsIFx4M2QgcGVydHVyYk5vcm1hbEFyYiggLXZWaWV3UG9zaXRpb24sIG5vcm1hbCwgZEhkeHlfZndkKCkgKTtcbiNlbmRpZiIsCm5vcm1hbG1hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBub3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBub3JtYWxTY2FsZTtcbiNlbmRpZlxuI2lmZGVmIE9CSkVDVFNQQUNFX05PUk1BTE1BUFxuXHR1bmlmb3JtIG1hdDMgbm9ybWFsTWF0cml4O1xuI2VuZGlmXG4jaWYgISBkZWZpbmVkICggVVNFX1RBTkdFTlQgKSBceDI2XHgyNiAoIGRlZmluZWQgKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQICkgfHwgZGVmaW5lZCAoIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQICkgKVxuXHR2ZWMzIHBlcnR1cmJOb3JtYWwyQXJiKCB2ZWMzIGV5ZV9wb3MsIHZlYzMgc3VyZl9ub3JtLCB2ZWMyIG5vcm1hbFNjYWxlLCBpbiBzYW1wbGVyMkQgbm9ybWFsTWFwICkge1xuXHRcdHZlYzMgcTAgXHgzZCB2ZWMzKCBkRmR4KCBleWVfcG9zLnggKSwgZEZkeCggZXllX3Bvcy55ICksIGRGZHgoIGV5ZV9wb3MueiApICk7XG5cdFx0dmVjMyBxMSBceDNkIHZlYzMoIGRGZHkoIGV5ZV9wb3MueCApLCBkRmR5KCBleWVfcG9zLnkgKSwgZEZkeSggZXllX3Bvcy56ICkgKTtcblx0XHR2ZWMyIHN0MCBceDNkIGRGZHgoIHZVdi5zdCApO1xuXHRcdHZlYzIgc3QxIFx4M2QgZEZkeSggdlV2LnN0ICk7XG5cdFx0ZmxvYXQgc2NhbGUgXHgzZCBzaWduKCBzdDEudCAqIHN0MC5zIC0gc3QwLnQgKiBzdDEucyApO1xuXHRcdHZlYzMgUyBceDNkIG5vcm1hbGl6ZSggKCBxMCAqIHN0MS50IC0gcTEgKiBzdDAudCApICogc2NhbGUgKTtcblx0XHR2ZWMzIFQgXHgzZCBub3JtYWxpemUoICggLSBxMCAqIHN0MS5zICsgcTEgKiBzdDAucyApICogc2NhbGUgKTtcblx0XHR2ZWMzIE4gXHgzZCBub3JtYWxpemUoIHN1cmZfbm9ybSApO1xuXHRcdHZlYzMgbWFwTiBceDNkIHRleHR1cmUyRCggbm9ybWFsTWFwLCB2VXYgKS54eXogKiAyLjAgLSAxLjA7XG5cdFx0bWFwTi54eSAqXHgzZCBub3JtYWxTY2FsZTtcblx0XHQjaWZkZWYgRE9VQkxFX1NJREVEXG5cdFx0XHR2ZWMzIE5mcm9tU1QgXHgzZCBjcm9zcyggUywgVCApO1xuXHRcdFx0aWYoIGRvdCggTmZyb21TVCwgTiApIFx4M2UgMC4wICkge1xuXHRcdFx0XHRTICpceDNkIC0xLjA7XG5cdFx0XHRcdFQgKlx4M2QgLTEuMDtcblx0XHRcdH1cblx0XHQjZWxzZVxuXHRcdFx0bWFwTi54eSAqXHgzZCAoIGZsb2F0KCBnbF9Gcm9udEZhY2luZyApICogMi4wIC0gMS4wICk7XG5cdFx0I2VuZGlmXG5cdFx0bWF0MyB0c24gXHgzZCBtYXQzKCBTLCBULCBOICk7XG5cdFx0cmV0dXJuIG5vcm1hbGl6ZSggdHNuICogbWFwTiApO1xuXHR9XG4jZW5kaWYiLApjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X2JlZ2luOiIjaWZkZWYgQ0xFQVJDT0FUXG5cdHZlYzMgY2xlYXJjb2F0Tm9ybWFsIFx4M2QgZ2VvbWV0cnlOb3JtYWw7XG4jZW5kaWYiLGNsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfbWFwczoiI2lmZGVmIFVTRV9DTEVBUkNPQVRfTk9STUFMTUFQXG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdG1hdDMgdlRCTiBceDNkIG1hdDMoIHRhbmdlbnQsIGJpdGFuZ2VudCwgY2xlYXJjb2F0Tm9ybWFsICk7XG5cdFx0dmVjMyBtYXBOIFx4M2QgdGV4dHVyZTJEKCBub3JtYWxNYXAsIHZVdiApLnh5eiAqIDIuMCAtIDEuMDtcblx0XHRtYXBOLnh5IFx4M2QgY2xlYXJjb2F0Tm9ybWFsU2NhbGUgKiBtYXBOLnh5O1xuXHRcdGNsZWFyY29hdE5vcm1hbCBceDNkIG5vcm1hbGl6ZSggdlRCTiAqIG1hcE4gKTtcblx0I2Vsc2Vcblx0XHRjbGVhcmNvYXROb3JtYWwgXHgzZCBwZXJ0dXJiTm9ybWFsMkFyYiggLSB2Vmlld1Bvc2l0aW9uLCBjbGVhcmNvYXROb3JtYWwsIGNsZWFyY29hdE5vcm1hbFNjYWxlLCBjbGVhcmNvYXROb3JtYWxNYXAgKTtcblx0I2VuZGlmXG4jZW5kaWYiLApjbGVhcmNvYXRfbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfQ0xFQVJDT0FUX05PUk1BTE1BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCBjbGVhcmNvYXROb3JtYWxNYXA7XG5cdHVuaWZvcm0gdmVjMiBjbGVhcmNvYXROb3JtYWxTY2FsZTtcbiNlbmRpZiIscGFja2luZzoidmVjMyBwYWNrTm9ybWFsVG9SR0IoIGNvbnN0IGluIHZlYzMgbm9ybWFsICkge1xuXHRyZXR1cm4gbm9ybWFsaXplKCBub3JtYWwgKSAqIDAuNSArIDAuNTtcbn1cbnZlYzMgdW5wYWNrUkdCVG9Ob3JtYWwoIGNvbnN0IGluIHZlYzMgcmdiICkge1xuXHRyZXR1cm4gMi4wICogcmdiLnh5eiAtIDEuMDtcbn1cbmNvbnN0IGZsb2F0IFBhY2tVcHNjYWxlIFx4M2QgMjU2LiAvIDI1NS47Y29uc3QgZmxvYXQgVW5wYWNrRG93bnNjYWxlIFx4M2QgMjU1LiAvIDI1Ni47XG5jb25zdCB2ZWMzIFBhY2tGYWN0b3JzIFx4M2QgdmVjMyggMjU2LiAqIDI1Ni4gKiAyNTYuLCAyNTYuICogMjU2LiwgIDI1Ni4gKTtcbmNvbnN0IHZlYzQgVW5wYWNrRmFjdG9ycyBceDNkIFVucGFja0Rvd25zY2FsZSAvIHZlYzQoIFBhY2tGYWN0b3JzLCAxLiApO1xuY29uc3QgZmxvYXQgU2hpZnRSaWdodDggXHgzZCAxLiAvIDI1Ni47XG52ZWM0IHBhY2tEZXB0aFRvUkdCQSggY29uc3QgaW4gZmxvYXQgdiApIHtcblx0dmVjNCByIFx4M2QgdmVjNCggZnJhY3QoIHYgKiBQYWNrRmFjdG9ycyApLCB2ICk7XG5cdHIueXp3IC1ceDNkIHIueHl6ICogU2hpZnRSaWdodDg7XHRyZXR1cm4gciAqIFBhY2tVcHNjYWxlO1xufVxuZmxvYXQgdW5wYWNrUkdCQVRvRGVwdGgoIGNvbnN0IGluIHZlYzQgdiApIHtcblx0cmV0dXJuIGRvdCggdiwgVW5wYWNrRmFjdG9ycyApO1xufVxudmVjNCBlbmNvZGVIYWxmUkdCQSAoIHZlYzIgdiApIHtcblx0dmVjNCBlbmNvZGVkIFx4M2QgdmVjNCggMC4wICk7XG5cdGNvbnN0IHZlYzIgb2Zmc2V0IFx4M2QgdmVjMiggMS4wIC8gMjU1LjAsIDAuMCApO1xuXHRlbmNvZGVkLnh5IFx4M2QgdmVjMiggdi54LCBmcmFjdCggdi54ICogMjU1LjAgKSApO1xuXHRlbmNvZGVkLnh5IFx4M2QgZW5jb2RlZC54eSAtICggZW5jb2RlZC55eSAqIG9mZnNldCApO1xuXHRlbmNvZGVkLnp3IFx4M2QgdmVjMiggdi55LCBmcmFjdCggdi55ICogMjU1LjAgKSApO1xuXHRlbmNvZGVkLnp3IFx4M2QgZW5jb2RlZC56dyAtICggZW5jb2RlZC53dyAqIG9mZnNldCApO1xuXHRyZXR1cm4gZW5jb2RlZDtcbn1cbnZlYzIgZGVjb2RlSGFsZlJHQkEoIHZlYzQgdiApIHtcblx0cmV0dXJuIHZlYzIoIHYueCArICggdi55IC8gMjU1LjAgKSwgdi56ICsgKCB2LncgLyAyNTUuMCApICk7XG59XG5mbG9hdCB2aWV3WlRvT3J0aG9ncmFwaGljRGVwdGgoIGNvbnN0IGluIGZsb2F0IHZpZXdaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiAoIHZpZXdaICsgbmVhciApIC8gKCBuZWFyIC0gZmFyICk7XG59XG5mbG9hdCBvcnRob2dyYXBoaWNEZXB0aFRvVmlld1ooIGNvbnN0IGluIGZsb2F0IGxpbmVhckNsaXBaLCBjb25zdCBpbiBmbG9hdCBuZWFyLCBjb25zdCBpbiBmbG9hdCBmYXIgKSB7XG5cdHJldHVybiBsaW5lYXJDbGlwWiAqICggbmVhciAtIGZhciApIC0gbmVhcjtcbn1cbmZsb2F0IHZpZXdaVG9QZXJzcGVjdGl2ZURlcHRoKCBjb25zdCBpbiBmbG9hdCB2aWV3WiwgY29uc3QgaW4gZmxvYXQgbmVhciwgY29uc3QgaW4gZmxvYXQgZmFyICkge1xuXHRyZXR1cm4gKCggbmVhciArIHZpZXdaICkgKiBmYXIgKSAvICgoIGZhciAtIG5lYXIgKSAqIHZpZXdaICk7XG59XG5mbG9hdCBwZXJzcGVjdGl2ZURlcHRoVG9WaWV3WiggY29uc3QgaW4gZmxvYXQgaW52Q2xpcFosIGNvbnN0IGluIGZsb2F0IG5lYXIsIGNvbnN0IGluIGZsb2F0IGZhciApIHtcblx0cmV0dXJuICggbmVhciAqIGZhciApIC8gKCAoIGZhciAtIG5lYXIgKSAqIGludkNsaXBaIC0gZmFyICk7XG59IiwKcHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudDoiI2lmZGVmIFBSRU1VTFRJUExJRURfQUxQSEFcblx0Z2xfRnJhZ0NvbG9yLnJnYiAqXHgzZCBnbF9GcmFnQ29sb3IuYTtcbiNlbmRpZiIscHJvamVjdF92ZXJ0ZXg6InZlYzQgbXZQb3NpdGlvbiBceDNkIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcbmdsX1Bvc2l0aW9uIFx4M2QgcHJvamVjdGlvbk1hdHJpeCAqIG12UG9zaXRpb247IixkaXRoZXJpbmdfZnJhZ21lbnQ6IiNpZmRlZiBESVRIRVJJTkdcblx0Z2xfRnJhZ0NvbG9yLnJnYiBceDNkIGRpdGhlcmluZyggZ2xfRnJhZ0NvbG9yLnJnYiApO1xuI2VuZGlmIixkaXRoZXJpbmdfcGFyc19mcmFnbWVudDoiI2lmZGVmIERJVEhFUklOR1xuXHR2ZWMzIGRpdGhlcmluZyggdmVjMyBjb2xvciApIHtcblx0XHRmbG9hdCBncmlkX3Bvc2l0aW9uIFx4M2QgcmFuZCggZ2xfRnJhZ0Nvb3JkLnh5ICk7XG5cdFx0dmVjMyBkaXRoZXJfc2hpZnRfUkdCIFx4M2QgdmVjMyggMC4yNSAvIDI1NS4wLCAtMC4yNSAvIDI1NS4wLCAwLjI1IC8gMjU1LjAgKTtcblx0XHRkaXRoZXJfc2hpZnRfUkdCIFx4M2QgbWl4KCAyLjAgKiBkaXRoZXJfc2hpZnRfUkdCLCAtMi4wICogZGl0aGVyX3NoaWZ0X1JHQiwgZ3JpZF9wb3NpdGlvbiApO1xuXHRcdHJldHVybiBjb2xvciArIGRpdGhlcl9zaGlmdF9SR0I7XG5cdH1cbiNlbmRpZiIsCnJvdWdobmVzc21hcF9mcmFnbWVudDoiZmxvYXQgcm91Z2huZXNzRmFjdG9yIFx4M2Qgcm91Z2huZXNzO1xuI2lmZGVmIFVTRV9ST1VHSE5FU1NNQVBcblx0dmVjNCB0ZXhlbFJvdWdobmVzcyBceDNkIHRleHR1cmUyRCggcm91Z2huZXNzTWFwLCB2VXYgKTtcblx0cm91Z2huZXNzRmFjdG9yICpceDNkIHRleGVsUm91Z2huZXNzLmc7XG4jZW5kaWYiLHJvdWdobmVzc21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1JPVUdITkVTU01BUFxuXHR1bmlmb3JtIHNhbXBsZXIyRCByb3VnaG5lc3NNYXA7XG4jZW5kaWYiLHNoYWRvd21hcF9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTIFx4M2UgMFxuXHRcdHVuaWZvcm0gc2FtcGxlcjJEIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0XHR2YXJ5aW5nIHZlYzQgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIE5VTV9ESVJfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgc3BvdFNoYWRvd01hcFsgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBdO1xuXHRcdHZhcnlpbmcgdmVjNCB2U3BvdFNoYWRvd0Nvb3JkWyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdFx0dW5pZm9ybSBzYW1wbGVyMkQgcG9pbnRTaGFkb3dNYXBbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcblx0ZmxvYXQgdGV4dHVyZTJEQ29tcGFyZSggc2FtcGxlcjJEIGRlcHRocywgdmVjMiB1diwgZmxvYXQgY29tcGFyZSApIHtcblx0XHRyZXR1cm4gc3RlcCggY29tcGFyZSwgdW5wYWNrUkdCQVRvRGVwdGgoIHRleHR1cmUyRCggZGVwdGhzLCB1diApICkgKTtcblx0fVxuXHR2ZWMyIHRleHR1cmUyRERpc3RyaWJ1dGlvbiggc2FtcGxlcjJEIHNoYWRvdywgdmVjMiB1diApIHtcblx0XHRyZXR1cm4gZGVjb2RlSGFsZlJHQkEoIHRleHR1cmUyRCggc2hhZG93LCB1diApICk7XG5cdH1cblx0ZmxvYXQgVlNNU2hhZG93IChzYW1wbGVyMkQgc2hhZG93LCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICl7XG5cdFx0ZmxvYXQgb2NjbHVzaW9uIFx4M2QgMS4wO1xuXHRcdHZlYzIgZGlzdHJpYnV0aW9uIFx4M2QgdGV4dHVyZTJERGlzdHJpYnV0aW9uKCBzaGFkb3csIHV2ICk7XG5cdFx0ZmxvYXQgaGFyZF9zaGFkb3cgXHgzZCBzdGVwKCBjb21wYXJlICwgZGlzdHJpYnV0aW9uLnggKTtcblx0XHRpZiAoaGFyZF9zaGFkb3cgIVx4M2QgMS4wICkge1xuXHRcdFx0ZmxvYXQgZGlzdGFuY2UgXHgzZCBjb21wYXJlIC0gZGlzdHJpYnV0aW9uLnggO1xuXHRcdFx0ZmxvYXQgdmFyaWFuY2UgXHgzZCBtYXgoIDAuMDAwMDAsIGRpc3RyaWJ1dGlvbi55ICogZGlzdHJpYnV0aW9uLnkgKTtcblx0XHRcdGZsb2F0IHNvZnRuZXNzX3Byb2JhYmlsaXR5IFx4M2QgdmFyaWFuY2UgLyAodmFyaWFuY2UgKyBkaXN0YW5jZSAqIGRpc3RhbmNlICk7XHRcdFx0c29mdG5lc3NfcHJvYmFiaWxpdHkgXHgzZCBjbGFtcCggKCBzb2Z0bmVzc19wcm9iYWJpbGl0eSAtIDAuMyApIC8gKCAwLjk1IC0gMC4zICksIDAuMCwgMS4wICk7XHRcdFx0b2NjbHVzaW9uIFx4M2QgY2xhbXAoIG1heCggaGFyZF9zaGFkb3csIHNvZnRuZXNzX3Byb2JhYmlsaXR5ICksIDAuMCwgMS4wICk7XG5cdFx0fVxuXHRcdHJldHVybiBvY2NsdXNpb247XG5cdH1cblx0ZmxvYXQgdGV4dHVyZTJEU2hhZG93TGVycCggc2FtcGxlcjJEIGRlcHRocywgdmVjMiBzaXplLCB2ZWMyIHV2LCBmbG9hdCBjb21wYXJlICkge1xuXHRcdGNvbnN0IHZlYzIgb2Zmc2V0IFx4M2QgdmVjMiggMC4wLCAxLjAgKTtcblx0XHR2ZWMyIHRleGVsU2l6ZSBceDNkIHZlYzIoIDEuMCApIC8gc2l6ZTtcblx0XHR2ZWMyIGNlbnRyb2lkVVYgXHgzZCAoIGZsb29yKCB1diAqIHNpemUgLSAwLjUgKSArIDAuNSApICogdGV4ZWxTaXplO1xuXHRcdGZsb2F0IGxiIFx4M2QgdGV4dHVyZTJEQ29tcGFyZSggZGVwdGhzLCBjZW50cm9pZFVWICsgdGV4ZWxTaXplICogb2Zmc2V0Lnh4LCBjb21wYXJlICk7XG5cdFx0ZmxvYXQgbHQgXHgzZCB0ZXh0dXJlMkRDb21wYXJlKCBkZXB0aHMsIGNlbnRyb2lkVVYgKyB0ZXhlbFNpemUgKiBvZmZzZXQueHksIGNvbXBhcmUgKTtcblx0XHRmbG9hdCByYiBceDNkIHRleHR1cmUyRENvbXBhcmUoIGRlcHRocywgY2VudHJvaWRVViArIHRleGVsU2l6ZSAqIG9mZnNldC55eCwgY29tcGFyZSApO1xuXHRcdGZsb2F0IHJ0IFx4M2QgdGV4dHVyZTJEQ29tcGFyZSggZGVwdGhzLCBjZW50cm9pZFVWICsgdGV4ZWxTaXplICogb2Zmc2V0Lnl5LCBjb21wYXJlICk7XG5cdFx0dmVjMiBmIFx4M2QgZnJhY3QoIHV2ICogc2l6ZSArIDAuNSApO1xuXHRcdGZsb2F0IGEgXHgzZCBtaXgoIGxiLCBsdCwgZi55ICk7XG5cdFx0ZmxvYXQgYiBceDNkIG1peCggcmIsIHJ0LCBmLnkgKTtcblx0XHRmbG9hdCBjIFx4M2QgbWl4KCBhLCBiLCBmLnggKTtcblx0XHRyZXR1cm4gYztcblx0fVxuXHRmbG9hdCBnZXRTaGFkb3coIHNhbXBsZXIyRCBzaGFkb3dNYXAsIHZlYzIgc2hhZG93TWFwU2l6ZSwgZmxvYXQgc2hhZG93QmlhcywgZmxvYXQgc2hhZG93UmFkaXVzLCB2ZWM0IHNoYWRvd0Nvb3JkICkge1xuXHRcdGZsb2F0IHNoYWRvdyBceDNkIDEuMDtcblx0XHRzaGFkb3dDb29yZC54eXogL1x4M2Qgc2hhZG93Q29vcmQudztcblx0XHRzaGFkb3dDb29yZC56ICtceDNkIHNoYWRvd0JpYXM7XG5cdFx0YnZlYzQgaW5GcnVzdHVtVmVjIFx4M2QgYnZlYzQgKCBzaGFkb3dDb29yZC54IFx4M2VceDNkIDAuMCwgc2hhZG93Q29vcmQueCBceDNjXHgzZCAxLjAsIHNoYWRvd0Nvb3JkLnkgXHgzZVx4M2QgMC4wLCBzaGFkb3dDb29yZC55IFx4M2NceDNkIDEuMCApO1xuXHRcdGJvb2wgaW5GcnVzdHVtIFx4M2QgYWxsKCBpbkZydXN0dW1WZWMgKTtcblx0XHRidmVjMiBmcnVzdHVtVGVzdFZlYyBceDNkIGJ2ZWMyKCBpbkZydXN0dW0sIHNoYWRvd0Nvb3JkLnogXHgzY1x4M2QgMS4wICk7XG5cdFx0Ym9vbCBmcnVzdHVtVGVzdCBceDNkIGFsbCggZnJ1c3R1bVRlc3RWZWMgKTtcblx0XHRpZiAoIGZydXN0dW1UZXN0ICkge1xuXHRcdCNpZiBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9QQ0YgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgXHgzZCB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgXHgzZCAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwIFx4M2QgLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSBceDNkICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgXHgzZCArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHgyIFx4M2QgZHgwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkyIFx4M2QgZHkwIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHgzIFx4M2QgZHgxIC8gMi4wO1xuXHRcdFx0ZmxvYXQgZHkzIFx4M2QgZHkxIC8gMi4wO1xuXHRcdFx0c2hhZG93IFx4M2QgKFxuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgyLCBkeTIgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkyICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIGR5MiApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDMsIDAuMCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MiwgZHkzICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MyApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgzLCBkeTMgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MCwgZHkxICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCAwLjAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgxLCBkeTEgKSwgc2hhZG93Q29vcmQueiApXG5cdFx0XHQpICogKCAxLjAgLyAxNy4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKVxuXHRcdFx0dmVjMiB0ZXhlbFNpemUgXHgzZCB2ZWMyKCAxLjAgKSAvIHNoYWRvd01hcFNpemU7XG5cdFx0XHRmbG9hdCBkeDAgXHgzZCAtIHRleGVsU2l6ZS54ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0ZmxvYXQgZHkwIFx4M2QgLSB0ZXhlbFNpemUueSAqIHNoYWRvd1JhZGl1cztcblx0XHRcdGZsb2F0IGR4MSBceDNkICsgdGV4ZWxTaXplLnggKiBzaGFkb3dSYWRpdXM7XG5cdFx0XHRmbG9hdCBkeTEgXHgzZCArIHRleGVsU2l6ZS55ICogc2hhZG93UmFkaXVzO1xuXHRcdFx0c2hhZG93IFx4M2QgKFxuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCBkeTAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIDAuMCwgZHkwICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDEsIGR5MCApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggZHgwLCAwLjAgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgMC4wICksIHNoYWRvd0Nvb3JkLnogKSArXG5cdFx0XHRcdHRleHR1cmUyRFNoYWRvd0xlcnAoIHNoYWRvd01hcCwgc2hhZG93TWFwU2l6ZSwgc2hhZG93Q29vcmQueHkgKyB2ZWMyKCBkeDAsIGR5MSApLCBzaGFkb3dDb29yZC56ICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRTaGFkb3dMZXJwKCBzaGFkb3dNYXAsIHNoYWRvd01hcFNpemUsIHNoYWRvd0Nvb3JkLnh5ICsgdmVjMiggMC4wLCBkeTEgKSwgc2hhZG93Q29vcmQueiApICtcblx0XHRcdFx0dGV4dHVyZTJEU2hhZG93TGVycCggc2hhZG93TWFwLCBzaGFkb3dNYXBTaXplLCBzaGFkb3dDb29yZC54eSArIHZlYzIoIGR4MSwgZHkxICksIHNoYWRvd0Nvb3JkLnogKVxuXHRcdFx0KSAqICggMS4wIC8gOS4wICk7XG5cdFx0I2VsaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfVlNNIClcblx0XHRcdHNoYWRvdyBceDNkIFZTTVNoYWRvdyggc2hhZG93TWFwLCBzaGFkb3dDb29yZC54eSwgc2hhZG93Q29vcmQueiApO1xuXHRcdCNlbHNlXG5cdFx0XHRzaGFkb3cgXHgzZCB0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIHNoYWRvd0Nvb3JkLnh5LCBzaGFkb3dDb29yZC56ICk7XG5cdFx0I2VuZGlmXG5cdFx0fVxuXHRcdHJldHVybiBzaGFkb3c7XG5cdH1cblx0dmVjMiBjdWJlVG9VViggdmVjMyB2LCBmbG9hdCB0ZXhlbFNpemVZICkge1xuXHRcdHZlYzMgYWJzViBceDNkIGFicyggdiApO1xuXHRcdGZsb2F0IHNjYWxlVG9DdWJlIFx4M2QgMS4wIC8gbWF4KCBhYnNWLngsIG1heCggYWJzVi55LCBhYnNWLnogKSApO1xuXHRcdGFic1YgKlx4M2Qgc2NhbGVUb0N1YmU7XG5cdFx0diAqXHgzZCBzY2FsZVRvQ3ViZSAqICggMS4wIC0gMi4wICogdGV4ZWxTaXplWSApO1xuXHRcdHZlYzIgcGxhbmFyIFx4M2Qgdi54eTtcblx0XHRmbG9hdCBhbG1vc3RBVGV4ZWwgXHgzZCAxLjUgKiB0ZXhlbFNpemVZO1xuXHRcdGZsb2F0IGFsbW9zdE9uZSBceDNkIDEuMCAtIGFsbW9zdEFUZXhlbDtcblx0XHRpZiAoIGFic1YueiBceDNlXHgzZCBhbG1vc3RPbmUgKSB7XG5cdFx0XHRpZiAoIHYueiBceDNlIDAuMCApXG5cdFx0XHRcdHBsYW5hci54IFx4M2QgNC4wIC0gdi54O1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueCBceDNlXHgzZCBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWCBceDNkIHNpZ24oIHYueCApO1xuXHRcdFx0cGxhbmFyLnggXHgzZCB2LnogKiBzaWduWCArIDIuMCAqIHNpZ25YO1xuXHRcdH0gZWxzZSBpZiAoIGFic1YueSBceDNlXHgzZCBhbG1vc3RPbmUgKSB7XG5cdFx0XHRmbG9hdCBzaWduWSBceDNkIHNpZ24oIHYueSApO1xuXHRcdFx0cGxhbmFyLnggXHgzZCB2LnggKyAyLjAgKiBzaWduWSArIDIuMDtcblx0XHRcdHBsYW5hci55IFx4M2Qgdi56ICogc2lnblkgLSAyLjA7XG5cdFx0fVxuXHRcdHJldHVybiB2ZWMyKCAwLjEyNSwgMC4yNSApICogcGxhbmFyICsgdmVjMiggMC4zNzUsIDAuNzUgKTtcblx0fVxuXHRmbG9hdCBnZXRQb2ludFNoYWRvdyggc2FtcGxlcjJEIHNoYWRvd01hcCwgdmVjMiBzaGFkb3dNYXBTaXplLCBmbG9hdCBzaGFkb3dCaWFzLCBmbG9hdCBzaGFkb3dSYWRpdXMsIHZlYzQgc2hhZG93Q29vcmQsIGZsb2F0IHNoYWRvd0NhbWVyYU5lYXIsIGZsb2F0IHNoYWRvd0NhbWVyYUZhciApIHtcblx0XHR2ZWMyIHRleGVsU2l6ZSBceDNkIHZlYzIoIDEuMCApIC8gKCBzaGFkb3dNYXBTaXplICogdmVjMiggNC4wLCAyLjAgKSApO1xuXHRcdHZlYzMgbGlnaHRUb1Bvc2l0aW9uIFx4M2Qgc2hhZG93Q29vcmQueHl6O1xuXHRcdGZsb2F0IGRwIFx4M2QgKCBsZW5ndGgoIGxpZ2h0VG9Qb3NpdGlvbiApIC0gc2hhZG93Q2FtZXJhTmVhciApIC8gKCBzaGFkb3dDYW1lcmFGYXIgLSBzaGFkb3dDYW1lcmFOZWFyICk7XHRcdGRwICtceDNkIHNoYWRvd0JpYXM7XG5cdFx0dmVjMyBiZDNEIFx4M2Qgbm9ybWFsaXplKCBsaWdodFRvUG9zaXRpb24gKTtcblx0XHQjaWYgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGICkgfHwgZGVmaW5lZCggU0hBRE9XTUFQX1RZUEVfUENGX1NPRlQgKSB8fCBkZWZpbmVkKCBTSEFET1dNQVBfVFlQRV9WU00gKVxuXHRcdFx0dmVjMiBvZmZzZXQgXHgzZCB2ZWMyKCAtIDEsIDEgKSAqIHNoYWRvd1JhZGl1cyAqIHRleGVsU2l6ZS55O1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eXksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl5eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHl4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eXgsIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNELCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC54eHksIHRleGVsU2l6ZS55ICksIGRwICkgK1xuXHRcdFx0XHR0ZXh0dXJlMkRDb21wYXJlKCBzaGFkb3dNYXAsIGN1YmVUb1VWKCBiZDNEICsgb2Zmc2V0Lnl4eSwgdGV4ZWxTaXplLnkgKSwgZHAgKSArXG5cdFx0XHRcdHRleHR1cmUyRENvbXBhcmUoIHNoYWRvd01hcCwgY3ViZVRvVVYoIGJkM0QgKyBvZmZzZXQueHh4LCB0ZXhlbFNpemUueSApLCBkcCApICtcblx0XHRcdFx0dGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCArIG9mZnNldC55eHgsIHRleGVsU2l6ZS55ICksIGRwIClcblx0XHRcdCkgKiAoIDEuMCAvIDkuMCApO1xuXHRcdCNlbHNlXG5cdFx0XHRyZXR1cm4gdGV4dHVyZTJEQ29tcGFyZSggc2hhZG93TWFwLCBjdWJlVG9VViggYmQzRCwgdGV4ZWxTaXplLnkgKSwgZHAgKTtcblx0XHQjZW5kaWZcblx0fVxuI2VuZGlmIiwKc2hhZG93bWFwX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NIQURPV01BUFxuXHQjaWYgTlVNX0RJUl9MSUdIVF9TSEFET1dTIFx4M2UgMFxuXHRcdHVuaWZvcm0gbWF0NCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgTlVNX0RJUl9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBOVU1fRElSX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIFx4M2UgMFxuXHRcdHVuaWZvcm0gbWF0NCBzcG90U2hhZG93TWF0cml4WyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZTcG90U2hhZG93Q29vcmRbIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXTtcblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBceDNlIDBcblx0XHR1bmlmb3JtIG1hdDQgcG9pbnRTaGFkb3dNYXRyaXhbIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTIF07XG5cdFx0dmFyeWluZyB2ZWM0IHZQb2ludFNoYWRvd0Nvb3JkWyBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBdO1xuXHQjZW5kaWZcbiNlbmRpZiIsCnNoYWRvd21hcF92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgXHgzZCAwOyBpIFx4M2MgTlVNX0RJUl9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHZEaXJlY3Rpb25hbFNoYWRvd0Nvb3JkWyBpIF0gXHgzZCBkaXJlY3Rpb25hbFNoYWRvd01hdHJpeFsgaSBdICogd29ybGRQb3NpdGlvbjtcblx0fVxuXHQjZW5kaWZcblx0I2lmIE5VTV9TUE9UX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgXHgzZCAwOyBpIFx4M2MgTlVNX1NQT1RfTElHSFRfU0hBRE9XUzsgaSArKyApIHtcblx0XHR2U3BvdFNoYWRvd0Nvb3JkWyBpIF0gXHgzZCBzcG90U2hhZG93TWF0cml4WyBpIF0gKiB3b3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdCNwcmFnbWEgdW5yb2xsX2xvb3Bcblx0Zm9yICggaW50IGkgXHgzZCAwOyBpIFx4M2MgTlVNX1BPSU5UX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0dlBvaW50U2hhZG93Q29vcmRbIGkgXSBceDNkIHBvaW50U2hhZG93TWF0cml4WyBpIF0gKiB3b3JsZFBvc2l0aW9uO1xuXHR9XG5cdCNlbmRpZlxuI2VuZGlmIiwKc2hhZG93bWFza19wYXJzX2ZyYWdtZW50OiJmbG9hdCBnZXRTaGFkb3dNYXNrKCkge1xuXHRmbG9hdCBzaGFkb3cgXHgzZCAxLjA7XG5cdCNpZmRlZiBVU0VfU0hBRE9XTUFQXG5cdCNpZiBOVU1fRElSX0xJR0hUX1NIQURPV1MgXHgzZSAwXG5cdERpcmVjdGlvbmFsTGlnaHQgZGlyZWN0aW9uYWxMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fRElSX0xJR0hUX1NIQURPV1M7IGkgKysgKSB7XG5cdFx0ZGlyZWN0aW9uYWxMaWdodCBceDNkIGRpcmVjdGlvbmFsTGlnaHRzWyBpIF07XG5cdFx0c2hhZG93ICpceDNkIGJvb2woIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93ICkgPyBnZXRTaGFkb3coIGRpcmVjdGlvbmFsU2hhZG93TWFwWyBpIF0sIGRpcmVjdGlvbmFsTGlnaHQuc2hhZG93TWFwU2l6ZSwgZGlyZWN0aW9uYWxMaWdodC5zaGFkb3dCaWFzLCBkaXJlY3Rpb25hbExpZ2h0LnNoYWRvd1JhZGl1cywgdkRpcmVjdGlvbmFsU2hhZG93Q29vcmRbIGkgXSApIDogMS4wO1xuXHR9XG5cdCNlbmRpZlxuXHQjaWYgTlVNX1NQT1RfTElHSFRfU0hBRE9XUyBceDNlIDBcblx0U3BvdExpZ2h0IHNwb3RMaWdodDtcblx0I3ByYWdtYSB1bnJvbGxfbG9vcFxuXHRmb3IgKCBpbnQgaSBceDNkIDA7IGkgXHgzYyBOVU1fU1BPVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHNwb3RMaWdodCBceDNkIHNwb3RMaWdodHNbIGkgXTtcblx0XHRzaGFkb3cgKlx4M2QgYm9vbCggc3BvdExpZ2h0LnNoYWRvdyApID8gZ2V0U2hhZG93KCBzcG90U2hhZG93TWFwWyBpIF0sIHNwb3RMaWdodC5zaGFkb3dNYXBTaXplLCBzcG90TGlnaHQuc2hhZG93Qmlhcywgc3BvdExpZ2h0LnNoYWRvd1JhZGl1cywgdlNwb3RTaGFkb3dDb29yZFsgaSBdICkgOiAxLjA7XG5cdH1cblx0I2VuZGlmXG5cdCNpZiBOVU1fUE9JTlRfTElHSFRfU0hBRE9XUyBceDNlIDBcblx0UG9pbnRMaWdodCBwb2ludExpZ2h0O1xuXHQjcHJhZ21hIHVucm9sbF9sb29wXG5cdGZvciAoIGludCBpIFx4M2QgMDsgaSBceDNjIE5VTV9QT0lOVF9MSUdIVF9TSEFET1dTOyBpICsrICkge1xuXHRcdHBvaW50TGlnaHQgXHgzZCBwb2ludExpZ2h0c1sgaSBdO1xuXHRcdHNoYWRvdyAqXHgzZCBib29sKCBwb2ludExpZ2h0LnNoYWRvdyApID8gZ2V0UG9pbnRTaGFkb3coIHBvaW50U2hhZG93TWFwWyBpIF0sIHBvaW50TGlnaHQuc2hhZG93TWFwU2l6ZSwgcG9pbnRMaWdodC5zaGFkb3dCaWFzLCBwb2ludExpZ2h0LnNoYWRvd1JhZGl1cywgdlBvaW50U2hhZG93Q29vcmRbIGkgXSwgcG9pbnRMaWdodC5zaGFkb3dDYW1lcmFOZWFyLCBwb2ludExpZ2h0LnNoYWRvd0NhbWVyYUZhciApIDogMS4wO1xuXHR9XG5cdCNlbmRpZlxuXHQjZW5kaWZcblx0cmV0dXJuIHNoYWRvdztcbn0iLApza2luYmFzZV92ZXJ0ZXg6IiNpZmRlZiBVU0VfU0tJTk5JTkdcblx0bWF0NCBib25lTWF0WCBceDNkIGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC54ICk7XG5cdG1hdDQgYm9uZU1hdFkgXHgzZCBnZXRCb25lTWF0cml4KCBza2luSW5kZXgueSApO1xuXHRtYXQ0IGJvbmVNYXRaIFx4M2QgZ2V0Qm9uZU1hdHJpeCggc2tpbkluZGV4LnogKTtcblx0bWF0NCBib25lTWF0VyBceDNkIGdldEJvbmVNYXRyaXgoIHNraW5JbmRleC53ICk7XG4jZW5kaWYiLHNraW5uaW5nX3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdHVuaWZvcm0gbWF0NCBiaW5kTWF0cml4O1xuXHR1bmlmb3JtIG1hdDQgYmluZE1hdHJpeEludmVyc2U7XG5cdCNpZmRlZiBCT05FX1RFWFRVUkVcblx0XHR1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCBib25lVGV4dHVyZTtcblx0XHR1bmlmb3JtIGludCBib25lVGV4dHVyZVNpemU7XG5cdFx0bWF0NCBnZXRCb25lTWF0cml4KCBjb25zdCBpbiBmbG9hdCBpICkge1xuXHRcdFx0ZmxvYXQgaiBceDNkIGkgKiA0LjA7XG5cdFx0XHRmbG9hdCB4IFx4M2QgbW9kKCBqLCBmbG9hdCggYm9uZVRleHR1cmVTaXplICkgKTtcblx0XHRcdGZsb2F0IHkgXHgzZCBmbG9vciggaiAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKSApO1xuXHRcdFx0ZmxvYXQgZHggXHgzZCAxLjAgLyBmbG9hdCggYm9uZVRleHR1cmVTaXplICk7XG5cdFx0XHRmbG9hdCBkeSBceDNkIDEuMCAvIGZsb2F0KCBib25lVGV4dHVyZVNpemUgKTtcblx0XHRcdHkgXHgzZCBkeSAqICggeSArIDAuNSApO1xuXHRcdFx0dmVjNCB2MSBceDNkIHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMC41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MiBceDNkIHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMS41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2MyBceDNkIHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMi41ICksIHkgKSApO1xuXHRcdFx0dmVjNCB2NCBceDNkIHRleHR1cmUyRCggYm9uZVRleHR1cmUsIHZlYzIoIGR4ICogKCB4ICsgMy41ICksIHkgKSApO1xuXHRcdFx0bWF0NCBib25lIFx4M2QgbWF0NCggdjEsIHYyLCB2MywgdjQgKTtcblx0XHRcdHJldHVybiBib25lO1xuXHRcdH1cblx0I2Vsc2Vcblx0XHR1bmlmb3JtIG1hdDQgYm9uZU1hdHJpY2VzWyBNQVhfQk9ORVMgXTtcblx0XHRtYXQ0IGdldEJvbmVNYXRyaXgoIGNvbnN0IGluIGZsb2F0IGkgKSB7XG5cdFx0XHRtYXQ0IGJvbmUgXHgzZCBib25lTWF0cmljZXNbIGludChpKSBdO1xuXHRcdFx0cmV0dXJuIGJvbmU7XG5cdFx0fVxuXHQjZW5kaWZcbiNlbmRpZiIsCnNraW5uaW5nX3ZlcnRleDoiI2lmZGVmIFVTRV9TS0lOTklOR1xuXHR2ZWM0IHNraW5WZXJ0ZXggXHgzZCBiaW5kTWF0cml4ICogdmVjNCggdHJhbnNmb3JtZWQsIDEuMCApO1xuXHR2ZWM0IHNraW5uZWQgXHgzZCB2ZWM0KCAwLjAgKTtcblx0c2tpbm5lZCArXHgzZCBib25lTWF0WCAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lng7XG5cdHNraW5uZWQgK1x4M2QgYm9uZU1hdFkgKiBza2luVmVydGV4ICogc2tpbldlaWdodC55O1xuXHRza2lubmVkICtceDNkIGJvbmVNYXRaICogc2tpblZlcnRleCAqIHNraW5XZWlnaHQuejtcblx0c2tpbm5lZCArXHgzZCBib25lTWF0VyAqIHNraW5WZXJ0ZXggKiBza2luV2VpZ2h0Lnc7XG5cdHRyYW5zZm9ybWVkIFx4M2QgKCBiaW5kTWF0cml4SW52ZXJzZSAqIHNraW5uZWQgKS54eXo7XG4jZW5kaWYiLHNraW5ub3JtYWxfdmVydGV4OiIjaWZkZWYgVVNFX1NLSU5OSU5HXG5cdG1hdDQgc2tpbk1hdHJpeCBceDNkIG1hdDQoIDAuMCApO1xuXHRza2luTWF0cml4ICtceDNkIHNraW5XZWlnaHQueCAqIGJvbmVNYXRYO1xuXHRza2luTWF0cml4ICtceDNkIHNraW5XZWlnaHQueSAqIGJvbmVNYXRZO1xuXHRza2luTWF0cml4ICtceDNkIHNraW5XZWlnaHQueiAqIGJvbmVNYXRaO1xuXHRza2luTWF0cml4ICtceDNkIHNraW5XZWlnaHQudyAqIGJvbmVNYXRXO1xuXHRza2luTWF0cml4ICBceDNkIGJpbmRNYXRyaXhJbnZlcnNlICogc2tpbk1hdHJpeCAqIGJpbmRNYXRyaXg7XG5cdG9iamVjdE5vcm1hbCBceDNkIHZlYzQoIHNraW5NYXRyaXggKiB2ZWM0KCBvYmplY3ROb3JtYWwsIDAuMCApICkueHl6O1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHRvYmplY3RUYW5nZW50IFx4M2QgdmVjNCggc2tpbk1hdHJpeCAqIHZlYzQoIG9iamVjdFRhbmdlbnQsIDAuMCApICkueHl6O1xuXHQjZW5kaWZcbiNlbmRpZiIsCnNwZWN1bGFybWFwX2ZyYWdtZW50OiJmbG9hdCBzcGVjdWxhclN0cmVuZ3RoO1xuI2lmZGVmIFVTRV9TUEVDVUxBUk1BUFxuXHR2ZWM0IHRleGVsU3BlY3VsYXIgXHgzZCB0ZXh0dXJlMkQoIHNwZWN1bGFyTWFwLCB2VXYgKTtcblx0c3BlY3VsYXJTdHJlbmd0aCBceDNkIHRleGVsU3BlY3VsYXIucjtcbiNlbHNlXG5cdHNwZWN1bGFyU3RyZW5ndGggXHgzZCAxLjA7XG4jZW5kaWYiLHNwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnQ6IiNpZmRlZiBVU0VfU1BFQ1VMQVJNQVBcblx0dW5pZm9ybSBzYW1wbGVyMkQgc3BlY3VsYXJNYXA7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVE9ORV9NQVBQSU5HIClcblx0Z2xfRnJhZ0NvbG9yLnJnYiBceDNkIHRvbmVNYXBwaW5nKCBnbF9GcmFnQ29sb3IucmdiICk7XG4jZW5kaWYiLHRvbmVtYXBwaW5nX3BhcnNfZnJhZ21lbnQ6IiNpZm5kZWYgc2F0dXJhdGVcblx0I2RlZmluZSBzYXR1cmF0ZShhKSBjbGFtcCggYSwgMC4wLCAxLjAgKVxuI2VuZGlmXG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nRXhwb3N1cmU7XG51bmlmb3JtIGZsb2F0IHRvbmVNYXBwaW5nV2hpdGVQb2ludDtcbnZlYzMgTGluZWFyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdHJldHVybiB0b25lTWFwcGluZ0V4cG9zdXJlICogY29sb3I7XG59XG52ZWMzIFJlaW5oYXJkVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICpceDNkIHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggY29sb3IgLyAoIHZlYzMoIDEuMCApICsgY29sb3IgKSApO1xufVxuI2RlZmluZSBVbmNoYXJ0ZWQySGVscGVyKCB4ICkgbWF4KCAoICggeCAqICggMC4xNSAqIHggKyAwLjEwICogMC41MCApICsgMC4yMCAqIDAuMDIgKSAvICggeCAqICggMC4xNSAqIHggKyAwLjUwICkgKyAwLjIwICogMC4zMCApICkgLSAwLjAyIC8gMC4zMCwgdmVjMyggMC4wICkgKVxudmVjMyBVbmNoYXJ0ZWQyVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICpceDNkIHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggVW5jaGFydGVkMkhlbHBlciggY29sb3IgKSAvIFVuY2hhcnRlZDJIZWxwZXIoIHZlYzMoIHRvbmVNYXBwaW5nV2hpdGVQb2ludCApICkgKTtcbn1cbnZlYzMgT3B0aW1pemVkQ2luZW9uVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICpceDNkIHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdGNvbG9yIFx4M2QgbWF4KCB2ZWMzKCAwLjAgKSwgY29sb3IgLSAwLjAwNCApO1xuXHRyZXR1cm4gcG93KCAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDAuNSApICkgLyAoIGNvbG9yICogKCA2LjIgKiBjb2xvciArIDEuNyApICsgMC4wNiApLCB2ZWMzKCAyLjIgKSApO1xufVxudmVjMyBBQ0VTRmlsbWljVG9uZU1hcHBpbmcoIHZlYzMgY29sb3IgKSB7XG5cdGNvbG9yICpceDNkIHRvbmVNYXBwaW5nRXhwb3N1cmU7XG5cdHJldHVybiBzYXR1cmF0ZSggKCBjb2xvciAqICggMi41MSAqIGNvbG9yICsgMC4wMyApICkgLyAoIGNvbG9yICogKCAyLjQzICogY29sb3IgKyAwLjU5ICkgKyAwLjE0ICkgKTtcbn0iLAp1dl9wYXJzX2ZyYWdtZW50OiIjaWZkZWYgVVNFX1VWXG5cdHZhcnlpbmcgdmVjMiB2VXY7XG4jZW5kaWYiLHV2X3BhcnNfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdHZhcnlpbmcgdmVjMiB2VXY7XG5cdHVuaWZvcm0gbWF0MyB1dlRyYW5zZm9ybTtcbiNlbmRpZiIsdXZfdmVydGV4OiIjaWZkZWYgVVNFX1VWXG5cdHZVdiBceDNkICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG4jZW5kaWYiLHV2Ml9wYXJzX2ZyYWdtZW50OiIjaWYgZGVmaW5lZCggVVNFX0xJR0hUTUFQICkgfHwgZGVmaW5lZCggVVNFX0FPTUFQIClcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG4jZW5kaWYiLHV2Ml9wYXJzX3ZlcnRleDoiI2lmIGRlZmluZWQoIFVTRV9MSUdIVE1BUCApIHx8IGRlZmluZWQoIFVTRV9BT01BUCApXG5cdGF0dHJpYnV0ZSB2ZWMyIHV2Mjtcblx0dmFyeWluZyB2ZWMyIHZVdjI7XG4jZW5kaWYiLHV2Ml92ZXJ0ZXg6IiNpZiBkZWZpbmVkKCBVU0VfTElHSFRNQVAgKSB8fCBkZWZpbmVkKCBVU0VfQU9NQVAgKVxuXHR2VXYyIFx4M2QgdXYyO1xuI2VuZGlmIiwKd29ybGRwb3NfdmVydGV4OiIjaWYgZGVmaW5lZCggVVNFX0VOVk1BUCApIHx8IGRlZmluZWQoIERJU1RBTkNFICkgfHwgZGVmaW5lZCAoIFVTRV9TSEFET1dNQVAgKVxuXHR2ZWM0IHdvcmxkUG9zaXRpb24gXHgzZCBtb2RlbE1hdHJpeCAqIHZlYzQoIHRyYW5zZm9ybWVkLCAxLjAgKTtcbiNlbmRpZiIsYmFja2dyb3VuZF9mcmFnOiJ1bmlmb3JtIHNhbXBsZXIyRCB0MkQ7XG52YXJ5aW5nIHZlYzIgdlV2O1xudm9pZCBtYWluKCkge1xuXHR2ZWM0IHRleENvbG9yIFx4M2QgdGV4dHVyZTJEKCB0MkQsIHZVdiApO1xuXHRnbF9GcmFnQ29sb3IgXHgzZCBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSBceDNjdG9uZW1hcHBpbmdfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NlbmNvZGluZ3NfZnJhZ21lbnRceDNlXG59IixiYWNrZ3JvdW5kX3ZlcnQ6InZhcnlpbmcgdmVjMiB2VXY7XG51bmlmb3JtIG1hdDMgdXZUcmFuc2Zvcm07XG52b2lkIG1haW4oKSB7XG5cdHZVdiBceDNkICggdXZUcmFuc2Zvcm0gKiB2ZWMzKCB1diwgMSApICkueHk7XG5cdGdsX1Bvc2l0aW9uIFx4M2QgdmVjNCggcG9zaXRpb24ueHksIDEuMCwgMS4wICk7XG59IiwKY3ViZV9mcmFnOiJ1bmlmb3JtIHNhbXBsZXJDdWJlIHRDdWJlO1xudW5pZm9ybSBmbG9hdCB0RmxpcDtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2V29ybGREaXJlY3Rpb247XG52b2lkIG1haW4oKSB7XG5cdHZlYzQgdGV4Q29sb3IgXHgzZCB0ZXh0dXJlQ3ViZSggdEN1YmUsIHZlYzMoIHRGbGlwICogdldvcmxkRGlyZWN0aW9uLngsIHZXb3JsZERpcmVjdGlvbi55eiApICk7XG5cdGdsX0ZyYWdDb2xvciBceDNkIG1hcFRleGVsVG9MaW5lYXIoIHRleENvbG9yICk7XG5cdGdsX0ZyYWdDb2xvci5hICpceDNkIG9wYWNpdHk7XG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcbn0iLGN1YmVfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiBceDNkIHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0Z2xfUG9zaXRpb24ueiBceDNkIGdsX1Bvc2l0aW9uLnc7XG59IiwKZGVwdGhfZnJhZzoiI2lmIERFUFRIX1BBQ0tJTkcgXHgzZFx4M2QgMzIwMFxuXHR1bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jZW5kaWZcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjcGFja2luZ1x4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2FscGhhbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19mcmFnbWVudFx4M2Vcblx0dmVjNCBkaWZmdXNlQ29sb3IgXHgzZCB2ZWM0KCAxLjAgKTtcblx0I2lmIERFUFRIX1BBQ0tJTkcgXHgzZFx4M2QgMzIwMFxuXHRcdGRpZmZ1c2VDb2xvci5hIFx4M2Qgb3BhY2l0eTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIFx4M2NtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NhbHBoYW1hcF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2FscGhhdGVzdF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX2ZyYWdtZW50XHgzZVxuXHQjaWYgREVQVEhfUEFDS0lORyBceDNkXHgzZCAzMjAwXG5cdFx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggdmVjMyggMS4wIC0gZ2xfRnJhZ0Nvb3JkLnogKSwgb3BhY2l0eSApO1xuXHQjZWxpZiBERVBUSF9QQUNLSU5HIFx4M2RceDNkIDMyMDFcblx0XHRnbF9GcmFnQ29sb3IgXHgzZCBwYWNrRGVwdGhUb1JHQkEoIGdsX0ZyYWdDb29yZC56ICk7XG5cdCNlbmRpZlxufSIsCmRlcHRoX3ZlcnQ6IiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjdXZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY21vcnBodGFyZ2V0X3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY3NraW5uaW5nX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY3V2X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5iYXNlX3ZlcnRleFx4M2Vcblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSBceDNjYmVnaW5ub3JtYWxfdmVydGV4XHgzZVxuXHRcdCNpbmNsdWRlIFx4M2Ntb3JwaG5vcm1hbF92ZXJ0ZXhceDNlXG5cdFx0I2luY2x1ZGUgXHgzY3NraW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjZW5kaWZcblx0I2luY2x1ZGUgXHgzY2JlZ2luX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBodGFyZ2V0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5uaW5nX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2Rpc3BsYWNlbWVudG1hcF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG59IiwKZGlzdGFuY2VSR0JBX2ZyYWc6IiNkZWZpbmUgRElTVEFOQ0VcbnVuaWZvcm0gdmVjMyByZWZlcmVuY2VQb3NpdGlvbjtcbnVuaWZvcm0gZmxvYXQgbmVhckRpc3RhbmNlO1xudW5pZm9ybSBmbG9hdCBmYXJEaXN0YW5jZTtcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjcGFja2luZ1x4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2FscGhhbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnRceDNlXG52b2lkIG1haW4gKCkge1xuXHQjaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50XHgzZVxuXHR2ZWM0IGRpZmZ1c2VDb2xvciBceDNkIHZlYzQoIDEuMCApO1xuXHQjaW5jbHVkZSBceDNjbWFwX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGFtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NhbHBoYXRlc3RfZnJhZ21lbnRceDNlXG5cdGZsb2F0IGRpc3QgXHgzZCBsZW5ndGgoIHZXb3JsZFBvc2l0aW9uIC0gcmVmZXJlbmNlUG9zaXRpb24gKTtcblx0ZGlzdCBceDNkICggZGlzdCAtIG5lYXJEaXN0YW5jZSApIC8gKCBmYXJEaXN0YW5jZSAtIG5lYXJEaXN0YW5jZSApO1xuXHRkaXN0IFx4M2Qgc2F0dXJhdGUoIGRpc3QgKTtcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgcGFja0RlcHRoVG9SR0JBKCBkaXN0ICk7XG59IiwKZGlzdGFuY2VSR0JBX3ZlcnQ6IiNkZWZpbmUgRElTVEFOQ0VcbnZhcnlpbmcgdmVjMyB2V29ybGRQb3NpdGlvbjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjdXZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY21vcnBodGFyZ2V0X3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY3NraW5uaW5nX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY3V2X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5iYXNlX3ZlcnRleFx4M2Vcblx0I2lmZGVmIFVTRV9ESVNQTEFDRU1FTlRNQVBcblx0XHQjaW5jbHVkZSBceDNjYmVnaW5ub3JtYWxfdmVydGV4XHgzZVxuXHRcdCNpbmNsdWRlIFx4M2Ntb3JwaG5vcm1hbF92ZXJ0ZXhceDNlXG5cdFx0I2luY2x1ZGUgXHgzY3NraW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjZW5kaWZcblx0I2luY2x1ZGUgXHgzY2JlZ2luX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBodGFyZ2V0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5uaW5nX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2Rpc3BsYWNlbWVudG1hcF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3dvcmxkcG9zX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdHZXb3JsZFBvc2l0aW9uIFx4M2Qgd29ybGRQb3NpdGlvbi54eXo7XG59IiwKZXF1aXJlY3RfZnJhZzoidW5pZm9ybSBzYW1wbGVyMkQgdEVxdWlyZWN0O1xudmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG52b2lkIG1haW4oKSB7XG5cdHZlYzMgZGlyZWN0aW9uIFx4M2Qgbm9ybWFsaXplKCB2V29ybGREaXJlY3Rpb24gKTtcblx0dmVjMiBzYW1wbGVVVjtcblx0c2FtcGxlVVYueSBceDNkIGFzaW4oIGNsYW1wKCBkaXJlY3Rpb24ueSwgLSAxLjAsIDEuMCApICkgKiBSRUNJUFJPQ0FMX1BJICsgMC41O1xuXHRzYW1wbGVVVi54IFx4M2QgYXRhbiggZGlyZWN0aW9uLnosIGRpcmVjdGlvbi54ICkgKiBSRUNJUFJPQ0FMX1BJMiArIDAuNTtcblx0dmVjNCB0ZXhDb2xvciBceDNkIHRleHR1cmUyRCggdEVxdWlyZWN0LCBzYW1wbGVVViApO1xuXHRnbF9GcmFnQ29sb3IgXHgzZCBtYXBUZXhlbFRvTGluZWFyKCB0ZXhDb2xvciApO1xuXHQjaW5jbHVkZSBceDNjdG9uZW1hcHBpbmdfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NlbmNvZGluZ3NfZnJhZ21lbnRceDNlXG59IiwKZXF1aXJlY3RfdmVydDoidmFyeWluZyB2ZWMzIHZXb3JsZERpcmVjdGlvbjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG52b2lkIG1haW4oKSB7XG5cdHZXb3JsZERpcmVjdGlvbiBceDNkIHRyYW5zZm9ybURpcmVjdGlvbiggcG9zaXRpb24sIG1vZGVsTWF0cml4ICk7XG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcbn0iLGxpbmVkYXNoZWRfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIGZsb2F0IGRhc2hTaXplO1xudW5pZm9ybSBmbG9hdCB0b3RhbFNpemU7XG52YXJ5aW5nIGZsb2F0IHZMaW5lRGlzdGFuY2U7XG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZm9nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19mcmFnbWVudFx4M2Vcblx0aWYgKCBtb2QoIHZMaW5lRGlzdGFuY2UsIHRvdGFsU2l6ZSApIFx4M2UgZGFzaFNpemUgKSB7XG5cdFx0ZGlzY2FyZDtcblx0fVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgXHgzZCB2ZWMzKCAwLjAgKTtcblx0dmVjNCBkaWZmdXNlQ29sb3IgXHgzZCB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdCNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX2ZyYWdtZW50XHgzZVxuXHRvdXRnb2luZ0xpZ2h0IFx4M2QgZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgXHgzY3ByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcbn0iLApsaW5lZGFzaGVkX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2NhbGU7XG5hdHRyaWJ1dGUgZmxvYXQgbGluZURpc3RhbmNlO1xudmFyeWluZyBmbG9hdCB2TGluZURpc3RhbmNlO1xuI2luY2x1ZGUgXHgzY2NvbW1vblx4M2VcbiNpbmNsdWRlIFx4M2Njb2xvcl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nmb2dfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjY29sb3JfdmVydGV4XHgzZVxuXHR2TGluZURpc3RhbmNlIFx4M2Qgc2NhbGUgKiBsaW5lRGlzdGFuY2U7XG5cdHZlYzQgbXZQb3NpdGlvbiBceDNkIG1vZGVsVmlld01hdHJpeCAqIHZlYzQoIHBvc2l0aW9uLCAxLjAgKTtcblx0Z2xfUG9zaXRpb24gXHgzZCBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nmb2dfdmVydGV4XHgzZVxufSIsCm1lc2hiYXNpY19mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjY29sb3JfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3V2Ml9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2FscGhhbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYW9tYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NsaWdodG1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2Vudm1hcF9jb21tb25fcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NlbnZtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nmb2dfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnRceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnRceDNlXG5cdHZlYzQgZGlmZnVzZUNvbG9yIFx4M2QgdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Njb2xvcl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2FscGhhbWFwX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGF0ZXN0X2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjc3BlY3VsYXJtYXBfZnJhZ21lbnRceDNlXG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0IFx4M2QgUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdCNpZmRlZiBVU0VfTElHSFRNQVBcblx0XHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgK1x4M2QgdGV4dHVyZTJEKCBsaWdodE1hcCwgdlV2MiApLnh5eiAqIGxpZ2h0TWFwSW50ZW5zaXR5O1xuXHQjZWxzZVxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArXHgzZCB2ZWMzKCAxLjAgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIFx4M2Nhb21hcF9mcmFnbWVudFx4M2Vcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICpceDNkIGRpZmZ1c2VDb2xvci5yZ2I7XG5cdHZlYzMgb3V0Z29pbmdMaWdodCBceDNkIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZTtcblx0I2luY2x1ZGUgXHgzY2Vudm1hcF9mcmFnbWVudFx4M2Vcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgXHgzY3ByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcbn0iLAptZXNoYmFzaWNfdmVydDoiI2luY2x1ZGUgXHgzY2NvbW1vblx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2N1djJfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nza2lubmluZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXhceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2N1dl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2N1djJfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjY29sb3JfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2tpbmJhc2VfdmVydGV4XHgzZVxuXHQjaWZkZWYgVVNFX0VOVk1BUFxuXHQjaW5jbHVkZSBceDNjYmVnaW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjbW9ycGhub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2tpbm5vcm1hbF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NkZWZhdWx0bm9ybWFsX3ZlcnRleFx4M2Vcblx0I2VuZGlmXG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2lubmluZ192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3dvcmxkcG9zX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NlbnZtYXBfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZm9nX3ZlcnRleFx4M2Vcbn0iLAptZXNobGFtYmVydF9mcmFnOiJ1bmlmb3JtIHZlYzMgZGlmZnVzZTtcbnVuaWZvcm0gdmVjMyBlbWlzc2l2ZTtcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbnZhcnlpbmcgdmVjMyB2TGlnaHRGcm9udDtcbnZhcnlpbmcgdmVjMyB2SW5kaXJlY3RGcm9udDtcbiNpZmRlZiBET1VCTEVfU0lERURcblx0dmFyeWluZyB2ZWMzIHZMaWdodEJhY2s7XG5cdHZhcnlpbmcgdmVjMyB2SW5kaXJlY3RCYWNrO1xuI2VuZGlmXG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY3BhY2tpbmdceDNlXG4jaW5jbHVkZSBceDNjZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY29sb3JfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3V2Ml9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2FscGhhbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYW9tYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NsaWdodG1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2VtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2Vudm1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2JzZGZzXHgzZVxuI2luY2x1ZGUgXHgzY2xpZ2h0c19wYXJzX2JlZ2luXHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3NoYWRvd21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3NoYWRvd21hc2tfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NzcGVjdWxhcm1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnRceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnRceDNlXG5cdHZlYzQgZGlmZnVzZUNvbG9yIFx4M2QgdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHRSZWZsZWN0ZWRMaWdodCByZWZsZWN0ZWRMaWdodCBceDNkIFJlZmxlY3RlZExpZ2h0KCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSApO1xuXHR2ZWMzIHRvdGFsRW1pc3NpdmVSYWRpYW5jZSBceDNkIGVtaXNzaXZlO1xuXHQjaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Njb2xvcl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2FscGhhbWFwX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGF0ZXN0X2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjc3BlY3VsYXJtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NlbWlzc2l2ZW1hcF9mcmFnbWVudFx4M2Vcblx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlIFx4M2QgZ2V0QW1iaWVudExpZ2h0SXJyYWRpYW5jZSggYW1iaWVudExpZ2h0Q29sb3IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArXHgzZCAoIGdsX0Zyb250RmFjaW5nICkgPyB2SW5kaXJlY3RGcm9udCA6IHZJbmRpcmVjdEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICtceDNkIHZJbmRpcmVjdEZyb250O1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgXHgzY2xpZ2h0bWFwX2ZyYWdtZW50XHgzZVxuXHRyZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKlx4M2QgQlJERl9EaWZmdXNlX0xhbWJlcnQoIGRpZmZ1c2VDb2xvci5yZ2IgKTtcblx0I2lmZGVmIERPVUJMRV9TSURFRFxuXHRcdHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgXHgzZCAoIGdsX0Zyb250RmFjaW5nICkgPyB2TGlnaHRGcm9udCA6IHZMaWdodEJhY2s7XG5cdCNlbHNlXG5cdFx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSBceDNkIHZMaWdodEZyb250O1xuXHQjZW5kaWZcblx0cmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSAqXHgzZCBCUkRGX0RpZmZ1c2VfTGFtYmVydCggZGlmZnVzZUNvbG9yLnJnYiApICogZ2V0U2hhZG93TWFzaygpO1xuXHQjaW5jbHVkZSBceDNjYW9tYXBfZnJhZ21lbnRceDNlXG5cdHZlYzMgb3V0Z29pbmdMaWdodCBceDNkIHJlZmxlY3RlZExpZ2h0LmRpcmVjdERpZmZ1c2UgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdERpZmZ1c2UgKyB0b3RhbEVtaXNzaXZlUmFkaWFuY2U7XG5cdCNpbmNsdWRlIFx4M2NlbnZtYXBfZnJhZ21lbnRceDNlXG5cdGdsX0ZyYWdDb2xvciBceDNkIHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY3ByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NkaXRoZXJpbmdfZnJhZ21lbnRceDNlXG59IiwKbWVzaGxhbWJlcnRfdmVydDoiI2RlZmluZSBMQU1CRVJUXG52YXJ5aW5nIHZlYzMgdkxpZ2h0RnJvbnQ7XG52YXJ5aW5nIHZlYzMgdkluZGlyZWN0RnJvbnQ7XG4jaWZkZWYgRE9VQkxFX1NJREVEXG5cdHZhcnlpbmcgdmVjMyB2TGlnaHRCYWNrO1xuXHR2YXJ5aW5nIHZlYzMgdkluZGlyZWN0QmFjaztcbiNlbmRpZlxuI2luY2x1ZGUgXHgzY2NvbW1vblx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2N1djJfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2JzZGZzXHgzZVxuI2luY2x1ZGUgXHgzY2xpZ2h0c19wYXJzX2JlZ2luXHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nza2lubmluZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NzaGFkb3dtYXBfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjdXZfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjdXYyX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2JlZ2lubm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBobm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5iYXNlX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZGVmYXVsdG5vcm1hbF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2lubmluZ192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2N3b3JsZHBvc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NlbnZtYXBfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjbGlnaHRzX2xhbWJlcnRfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2hhZG93bWFwX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ192ZXJ0ZXhceDNlXG59IiwKbWVzaG1hdGNhcF9mcmFnOiIjZGVmaW5lIE1BVENBUFxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG51bmlmb3JtIHNhbXBsZXIyRCBtYXRjYXA7XG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjdXZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NhbHBoYW1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2J1bXBtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nub3JtYWxtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50XHgzZVxuXHR2ZWM0IGRpZmZ1c2VDb2xvciBceDNkIHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjbWFwX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGFtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NhbHBoYXRlc3RfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfYmVnaW5ceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfbWFwc1x4M2Vcblx0dmVjMyB2aWV3RGlyIFx4M2Qgbm9ybWFsaXplKCB2Vmlld1Bvc2l0aW9uICk7XG5cdHZlYzMgeCBceDNkIG5vcm1hbGl6ZSggdmVjMyggdmlld0Rpci56LCAwLjAsIC0gdmlld0Rpci54ICkgKTtcblx0dmVjMyB5IFx4M2QgY3Jvc3MoIHZpZXdEaXIsIHggKTtcblx0dmVjMiB1diBceDNkIHZlYzIoIGRvdCggeCwgbm9ybWFsICksIGRvdCggeSwgbm9ybWFsICkgKSAqIDAuNDk1ICsgMC41O1xuXHQjaWZkZWYgVVNFX01BVENBUFxuXHRcdHZlYzQgbWF0Y2FwQ29sb3IgXHgzZCB0ZXh0dXJlMkQoIG1hdGNhcCwgdXYgKTtcblx0XHRtYXRjYXBDb2xvciBceDNkIG1hdGNhcFRleGVsVG9MaW5lYXIoIG1hdGNhcENvbG9yICk7XG5cdCNlbHNlXG5cdFx0dmVjNCBtYXRjYXBDb2xvciBceDNkIHZlYzQoIDEuMCApO1xuXHQjZW5kaWZcblx0dmVjMyBvdXRnb2luZ0xpZ2h0IFx4M2QgZGlmZnVzZUNvbG9yLnJnYiAqIG1hdGNhcENvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgXHgzY3ByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcbn0iLAptZXNobWF0Y2FwX3ZlcnQ6IiNkZWZpbmUgTUFUQ0FQXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG4jZW5kaWZcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjdXZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nza2lubmluZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXhceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2N1dl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NiZWdpbm5vcm1hbF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaG5vcm1hbF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2luYmFzZV92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2lubm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2RlZmF1bHRub3JtYWxfdmVydGV4XHgzZVxuXHQjaWZuZGVmIEZMQVRfU0hBREVEXG5cdFx0dk5vcm1hbCBceDNkIG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2VuZGlmXG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2lubmluZ192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NkaXNwbGFjZW1lbnRtYXBfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjcHJvamVjdF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZm9nX3ZlcnRleFx4M2Vcblx0dlZpZXdQb3NpdGlvbiBceDNkIC0gbXZQb3NpdGlvbi54eXo7XG59IiwKbWVzaHBob25nX2ZyYWc6IiNkZWZpbmUgUEhPTkdcbnVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSB2ZWMzIGVtaXNzaXZlO1xudW5pZm9ybSB2ZWMzIHNwZWN1bGFyO1xudW5pZm9ybSBmbG9hdCBzaGluaW5lc3M7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY3BhY2tpbmdceDNlXG4jaW5jbHVkZSBceDNjZGl0aGVyaW5nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY29sb3JfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3V2Ml9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2FscGhhbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYW9tYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NsaWdodG1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2VtaXNzaXZlbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2Vudm1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2dyYWRpZW50bWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZm9nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYnNkZnNceDNlXG4jaW5jbHVkZSBceDNjbGlnaHRzX3BhcnNfYmVnaW5ceDNlXG4jaW5jbHVkZSBceDNjbGlnaHRzX3Bob25nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjc2hhZG93bWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYnVtcG1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY25vcm1hbG1hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3NwZWN1bGFybWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19mcmFnbWVudFx4M2Vcblx0dmVjNCBkaWZmdXNlQ29sb3IgXHgzZCB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0IFx4M2QgUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlIFx4M2QgZW1pc3NpdmU7XG5cdCNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY21hcF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGFtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NhbHBoYXRlc3RfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NzcGVjdWxhcm1hcF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY25vcm1hbF9mcmFnbWVudF9iZWdpblx4M2Vcblx0I2luY2x1ZGUgXHgzY25vcm1hbF9mcmFnbWVudF9tYXBzXHgzZVxuXHQjaW5jbHVkZSBceDNjZW1pc3NpdmVtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NsaWdodHNfcGhvbmdfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NsaWdodHNfZnJhZ21lbnRfYmVnaW5ceDNlXG5cdCNpbmNsdWRlIFx4M2NsaWdodHNfZnJhZ21lbnRfbWFwc1x4M2Vcblx0I2luY2x1ZGUgXHgzY2xpZ2h0c19mcmFnbWVudF9lbmRceDNlXG5cdCNpbmNsdWRlIFx4M2Nhb21hcF9mcmFnbWVudFx4M2Vcblx0dmVjMyBvdXRnb2luZ0xpZ2h0IFx4M2QgcmVmbGVjdGVkTGlnaHQuZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmluZGlyZWN0RGlmZnVzZSArIHJlZmxlY3RlZExpZ2h0LmRpcmVjdFNwZWN1bGFyICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3RTcGVjdWxhciArIHRvdGFsRW1pc3NpdmVSYWRpYW5jZTtcblx0I2luY2x1ZGUgXHgzY2Vudm1hcF9mcmFnbWVudFx4M2Vcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgXHgzY3RvbmVtYXBwaW5nX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjZW5jb2RpbmdzX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjZm9nX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjcHJlbXVsdGlwbGllZF9hbHBoYV9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2RpdGhlcmluZ19mcmFnbWVudFx4M2Vcbn0iLAptZXNocGhvbmdfdmVydDoiI2RlZmluZSBQSE9OR1xudmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuI2VuZGlmXG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY3V2X3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY3V2Ml9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nza2lubmluZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NzaGFkb3dtYXBfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjdXZfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjdXYyX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2JlZ2lubm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBobm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5iYXNlX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZGVmYXVsdG5vcm1hbF92ZXJ0ZXhceDNlXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgXHgzZCBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG4jZW5kaWZcblx0I2luY2x1ZGUgXHgzY2JlZ2luX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBodGFyZ2V0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5uaW5nX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2Rpc3BsYWNlbWVudG1hcF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdHZWaWV3UG9zaXRpb24gXHgzZCAtIG12UG9zaXRpb24ueHl6O1xuXHQjaW5jbHVkZSBceDNjd29ybGRwb3NfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZW52bWFwX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NoYWRvd21hcF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nmb2dfdmVydGV4XHgzZVxufSIsCm1lc2hwaHlzaWNhbF9mcmFnOiIjZGVmaW5lIFNUQU5EQVJEXG4jaWZkZWYgUEhZU0lDQUxcblx0I2RlZmluZSBSRUZMRUNUSVZJVFlcblx0I2RlZmluZSBDTEVBUkNPQVRcblx0I2RlZmluZSBUUkFOU1BBUkVOQ1lcbiNlbmRpZlxudW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIHZlYzMgZW1pc3NpdmU7XG51bmlmb3JtIGZsb2F0IHJvdWdobmVzcztcbnVuaWZvcm0gZmxvYXQgbWV0YWxuZXNzO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2lmZGVmIFRSQU5TUEFSRU5DWVxuXHR1bmlmb3JtIGZsb2F0IHRyYW5zcGFyZW5jeTtcbiNlbmRpZlxuI2lmZGVmIFJFRkxFQ1RJVklUWVxuXHR1bmlmb3JtIGZsb2F0IHJlZmxlY3Rpdml0eTtcbiNlbmRpZlxuI2lmZGVmIENMRUFSQ09BVFxuXHR1bmlmb3JtIGZsb2F0IGNsZWFyY29hdDtcblx0dW5pZm9ybSBmbG9hdCBjbGVhcmNvYXRSb3VnaG5lc3M7XG4jZW5kaWZcbiNpZmRlZiBVU0VfU0hFRU5cblx0dW5pZm9ybSB2ZWMzIHNoZWVuO1xuI2VuZGlmXG52YXJ5aW5nIHZlYzMgdlZpZXdQb3NpdGlvbjtcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjcGFja2luZ1x4M2VcbiNpbmNsdWRlIFx4M2NkaXRoZXJpbmdfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Njb2xvcl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3V2X3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjdXYyX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYWxwaGFtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nhb21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2xpZ2h0bWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZW1pc3NpdmVtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nic2Rmc1x4M2VcbiNpbmNsdWRlIFx4M2NjdWJlX3V2X3JlZmxlY3Rpb25fZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZW52bWFwX2NvbW1vbl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2Vudm1hcF9waHlzaWNhbF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2xpZ2h0c19wYXJzX2JlZ2luXHgzZVxuI2luY2x1ZGUgXHgzY2xpZ2h0c19waHlzaWNhbF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY3NoYWRvd21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2J1bXBtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nub3JtYWxtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGVhcmNvYXRfbm9ybWFsbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjcm91Z2huZXNzbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbWV0YWxuZXNzbWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19mcmFnbWVudFx4M2Vcblx0dmVjNCBkaWZmdXNlQ29sb3IgXHgzZCB2ZWM0KCBkaWZmdXNlLCBvcGFjaXR5ICk7XG5cdFJlZmxlY3RlZExpZ2h0IHJlZmxlY3RlZExpZ2h0IFx4M2QgUmVmbGVjdGVkTGlnaHQoIHZlYzMoIDAuMCApLCB2ZWMzKCAwLjAgKSwgdmVjMyggMC4wICksIHZlYzMoIDAuMCApICk7XG5cdHZlYzMgdG90YWxFbWlzc2l2ZVJhZGlhbmNlIFx4M2QgZW1pc3NpdmU7XG5cdCNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY21hcF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGFtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NhbHBoYXRlc3RfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Nyb3VnaG5lc3NtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NtZXRhbG5lc3NtYXBfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfYmVnaW5ceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfbWFwc1x4M2Vcblx0I2luY2x1ZGUgXHgzY2NsZWFyY29hdF9ub3JtYWxfZnJhZ21lbnRfYmVnaW5ceDNlXG5cdCNpbmNsdWRlIFx4M2NjbGVhcmNvYXRfbm9ybWFsX2ZyYWdtZW50X21hcHNceDNlXG5cdCNpbmNsdWRlIFx4M2NlbWlzc2l2ZW1hcF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xpZ2h0c19waHlzaWNhbF9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2xpZ2h0c19mcmFnbWVudF9iZWdpblx4M2Vcblx0I2luY2x1ZGUgXHgzY2xpZ2h0c19mcmFnbWVudF9tYXBzXHgzZVxuXHQjaW5jbHVkZSBceDNjbGlnaHRzX2ZyYWdtZW50X2VuZFx4M2Vcblx0I2luY2x1ZGUgXHgzY2FvbWFwX2ZyYWdtZW50XHgzZVxuXHR2ZWMzIG91dGdvaW5nTGlnaHQgXHgzZCByZWZsZWN0ZWRMaWdodC5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuaW5kaXJlY3REaWZmdXNlICsgcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICsgdG90YWxFbWlzc2l2ZVJhZGlhbmNlO1xuXHQjaWZkZWYgVFJBTlNQQVJFTkNZXG5cdFx0ZGlmZnVzZUNvbG9yLmEgKlx4M2Qgc2F0dXJhdGUoIDEuIC0gdHJhbnNwYXJlbmN5ICsgbGluZWFyVG9SZWxhdGl2ZUx1bWluYW5jZSggcmVmbGVjdGVkTGlnaHQuZGlyZWN0U3BlY3VsYXIgKyByZWZsZWN0ZWRMaWdodC5pbmRpcmVjdFNwZWN1bGFyICkgKTtcblx0I2VuZGlmXG5cdGdsX0ZyYWdDb2xvciBceDNkIHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIFx4M2N0b25lbWFwcGluZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2VuY29kaW5nc19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY3ByZW11bHRpcGxpZWRfYWxwaGFfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NkaXRoZXJpbmdfZnJhZ21lbnRceDNlXG59IiwKbWVzaHBoeXNpY2FsX3ZlcnQ6IiNkZWZpbmUgU1RBTkRBUkRcbnZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2lmbmRlZiBGTEFUX1NIQURFRFxuXHR2YXJ5aW5nIHZlYzMgdk5vcm1hbDtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dmFyeWluZyB2ZWMzIHZUYW5nZW50O1xuXHRcdHZhcnlpbmcgdmVjMyB2Qml0YW5nZW50O1xuXHQjZW5kaWZcbiNlbmRpZlxuI2luY2x1ZGUgXHgzY2NvbW1vblx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2N1djJfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZGlzcGxhY2VtZW50bWFwX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nza2lubmluZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NzaGFkb3dtYXBfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjdXZfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjdXYyX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NvbG9yX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2JlZ2lubm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY21vcnBobm9ybWFsX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5iYXNlX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3NraW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZGVmYXVsdG5vcm1hbF92ZXJ0ZXhceDNlXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZOb3JtYWwgXHgzZCBub3JtYWxpemUoIHRyYW5zZm9ybWVkTm9ybWFsICk7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZUYW5nZW50IFx4M2Qgbm9ybWFsaXplKCB0cmFuc2Zvcm1lZFRhbmdlbnQgKTtcblx0XHR2Qml0YW5nZW50IFx4M2Qgbm9ybWFsaXplKCBjcm9zcyggdk5vcm1hbCwgdlRhbmdlbnQgKSAqIHRhbmdlbnQudyApO1xuXHQjZW5kaWZcbiNlbmRpZlxuXHQjaW5jbHVkZSBceDNjYmVnaW5fdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjbW9ycGh0YXJnZXRfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2tpbm5pbmdfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZGlzcGxhY2VtZW50bWFwX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3Byb2plY3RfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3ZlcnRleFx4M2Vcblx0dlZpZXdQb3NpdGlvbiBceDNkIC0gbXZQb3NpdGlvbi54eXo7XG5cdCNpbmNsdWRlIFx4M2N3b3JsZHBvc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NzaGFkb3dtYXBfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjZm9nX3ZlcnRleFx4M2Vcbn0iLApub3JtYWxfZnJhZzoiI2RlZmluZSBOT1JNQUxcbnVuaWZvcm0gZmxvYXQgb3BhY2l0eTtcbiNpZiBkZWZpbmVkKCBGTEFUX1NIQURFRCApIHx8IGRlZmluZWQoIFVTRV9CVU1QTUFQICkgfHwgZGVmaW5lZCggVEFOR0VOVFNQQUNFX05PUk1BTE1BUCApXG5cdHZhcnlpbmcgdmVjMyB2Vmlld1Bvc2l0aW9uO1xuI2VuZGlmXG4jaWZuZGVmIEZMQVRfU0hBREVEXG5cdHZhcnlpbmcgdmVjMyB2Tm9ybWFsO1xuXHQjaWZkZWYgVVNFX1RBTkdFTlRcblx0XHR2YXJ5aW5nIHZlYzMgdlRhbmdlbnQ7XG5cdFx0dmFyeWluZyB2ZWMzIHZCaXRhbmdlbnQ7XG5cdCNlbmRpZlxuI2VuZGlmXG4jaW5jbHVkZSBceDNjcGFja2luZ1x4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2J1bXBtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nub3JtYWxtYXBfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19wYXJzX2ZyYWdtZW50XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfYmVnaW5ceDNlXG5cdCNpbmNsdWRlIFx4M2Nub3JtYWxfZnJhZ21lbnRfbWFwc1x4M2Vcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggcGFja05vcm1hbFRvUkdCKCBub3JtYWwgKSwgb3BhY2l0eSApO1xufSIsCm5vcm1hbF92ZXJ0OiIjZGVmaW5lIE5PUk1BTFxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dmFyeWluZyB2ZWMzIHZWaWV3UG9zaXRpb247XG4jZW5kaWZcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dmFyeWluZyB2ZWMzIHZOb3JtYWw7XG5cdCNpZmRlZiBVU0VfVEFOR0VOVFxuXHRcdHZhcnlpbmcgdmVjMyB2VGFuZ2VudDtcblx0XHR2YXJ5aW5nIHZlYzMgdkJpdGFuZ2VudDtcblx0I2VuZGlmXG4jZW5kaWZcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NkaXNwbGFjZW1lbnRtYXBfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbW9ycGh0YXJnZXRfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjc2tpbm5pbmdfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfdmVydGV4XHgzZVxudm9pZCBtYWluKCkge1xuXHQjaW5jbHVkZSBceDNjdXZfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjYmVnaW5ub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjbW9ycGhub3JtYWxfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2tpbmJhc2VfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2tpbm5vcm1hbF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NkZWZhdWx0bm9ybWFsX3ZlcnRleFx4M2VcbiNpZm5kZWYgRkxBVF9TSEFERURcblx0dk5vcm1hbCBceDNkIG5vcm1hbGl6ZSggdHJhbnNmb3JtZWROb3JtYWwgKTtcblx0I2lmZGVmIFVTRV9UQU5HRU5UXG5cdFx0dlRhbmdlbnQgXHgzZCBub3JtYWxpemUoIHRyYW5zZm9ybWVkVGFuZ2VudCApO1xuXHRcdHZCaXRhbmdlbnQgXHgzZCBub3JtYWxpemUoIGNyb3NzKCB2Tm9ybWFsLCB2VGFuZ2VudCApICogdGFuZ2VudC53ICk7XG5cdCNlbmRpZlxuI2VuZGlmXG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nza2lubmluZ192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NkaXNwbGFjZW1lbnRtYXBfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjcHJvamVjdF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfdmVydGV4XHgzZVxuI2lmIGRlZmluZWQoIEZMQVRfU0hBREVEICkgfHwgZGVmaW5lZCggVVNFX0JVTVBNQVAgKSB8fCBkZWZpbmVkKCBUQU5HRU5UU1BBQ0VfTk9STUFMTUFQIClcblx0dlZpZXdQb3NpdGlvbiBceDNkIC0gbXZQb3NpdGlvbi54eXo7XG4jZW5kaWZcbn0iLApwb2ludHNfZnJhZzoidW5pZm9ybSB2ZWMzIGRpZmZ1c2U7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbWFwX3BhcnRpY2xlX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjZm9nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfcGFyc19mcmFnbWVudFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc19mcmFnbWVudFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19mcmFnbWVudFx4M2Vcblx0dmVjMyBvdXRnb2luZ0xpZ2h0IFx4M2QgdmVjMyggMC4wICk7XG5cdHZlYzQgZGlmZnVzZUNvbG9yIFx4M2QgdmVjNCggZGlmZnVzZSwgb3BhY2l0eSApO1xuXHQjaW5jbHVkZSBceDNjbG9nZGVwdGhidWZfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NtYXBfcGFydGljbGVfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Njb2xvcl9mcmFnbWVudFx4M2Vcblx0I2luY2x1ZGUgXHgzY2FscGhhdGVzdF9mcmFnbWVudFx4M2Vcblx0b3V0Z29pbmdMaWdodCBceDNkIGRpZmZ1c2VDb2xvci5yZ2I7XG5cdGdsX0ZyYWdDb2xvciBceDNkIHZlYzQoIG91dGdvaW5nTGlnaHQsIGRpZmZ1c2VDb2xvci5hICk7XG5cdCNpbmNsdWRlIFx4M2NwcmVtdWx0aXBsaWVkX2FscGhhX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjdG9uZW1hcHBpbmdfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2NlbmNvZGluZ3NfZnJhZ21lbnRceDNlXG5cdCNpbmNsdWRlIFx4M2Nmb2dfZnJhZ21lbnRceDNlXG59IiwKcG9pbnRzX3ZlcnQ6InVuaWZvcm0gZmxvYXQgc2l6ZTtcbnVuaWZvcm0gZmxvYXQgc2NhbGU7XG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY2NvbG9yX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2Nsb2dkZXB0aGJ1Zl9wYXJzX3ZlcnRleFx4M2VcbiNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfcGFyc192ZXJ0ZXhceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2Njb2xvcl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2NiZWdpbl92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Ntb3JwaHRhcmdldF92ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nwcm9qZWN0X3ZlcnRleFx4M2Vcblx0Z2xfUG9pbnRTaXplIFx4M2Qgc2l6ZTtcblx0I2lmZGVmIFVTRV9TSVpFQVRURU5VQVRJT05cblx0XHRib29sIGlzUGVyc3BlY3RpdmUgXHgzZCAoIHByb2plY3Rpb25NYXRyaXhbIDIgXVsgMyBdIFx4M2RceDNkIC0gMS4wICk7XG5cdFx0aWYgKCBpc1BlcnNwZWN0aXZlICkgZ2xfUG9pbnRTaXplICpceDNkICggc2NhbGUgLyAtIG12UG9zaXRpb24ueiApO1xuXHQjZW5kaWZcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2N3b3JsZHBvc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nmb2dfdmVydGV4XHgzZVxufSIsCnNoYWRvd19mcmFnOiJ1bmlmb3JtIHZlYzMgY29sb3I7XG51bmlmb3JtIGZsb2F0IG9wYWNpdHk7XG4jaW5jbHVkZSBceDNjY29tbW9uXHgzZVxuI2luY2x1ZGUgXHgzY3BhY2tpbmdceDNlXG4jaW5jbHVkZSBceDNjZm9nX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjYnNkZnNceDNlXG4jaW5jbHVkZSBceDNjbGlnaHRzX3BhcnNfYmVnaW5ceDNlXG4jaW5jbHVkZSBceDNjc2hhZG93bWFwX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjc2hhZG93bWFza19wYXJzX2ZyYWdtZW50XHgzZVxudm9pZCBtYWluKCkge1xuXHRnbF9GcmFnQ29sb3IgXHgzZCB2ZWM0KCBjb2xvciwgb3BhY2l0eSAqICggMS4wIC0gZ2V0U2hhZG93TWFzaygpICkgKTtcblx0I2luY2x1ZGUgXHgzY2ZvZ19mcmFnbWVudFx4M2Vcbn0iLHNoYWRvd192ZXJ0OiIjaW5jbHVkZSBceDNjZm9nX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY3NoYWRvd21hcF9wYXJzX3ZlcnRleFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY2JlZ2luX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY3Byb2plY3RfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjd29ybGRwb3NfdmVydGV4XHgzZVxuXHQjaW5jbHVkZSBceDNjc2hhZG93bWFwX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2ZvZ192ZXJ0ZXhceDNlXG59IiwKc3ByaXRlX2ZyYWc6InVuaWZvcm0gdmVjMyBkaWZmdXNlO1xudW5pZm9ybSBmbG9hdCBvcGFjaXR5O1xuI2luY2x1ZGUgXHgzY2NvbW1vblx4M2VcbiNpbmNsdWRlIFx4M2N1dl9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY21hcF9wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2ZvZ19wYXJzX2ZyYWdtZW50XHgzZVxuI2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3BhcnNfZnJhZ21lbnRceDNlXG4jaW5jbHVkZSBceDNjY2xpcHBpbmdfcGxhbmVzX3BhcnNfZnJhZ21lbnRceDNlXG52b2lkIG1haW4oKSB7XG5cdCNpbmNsdWRlIFx4M2NjbGlwcGluZ19wbGFuZXNfZnJhZ21lbnRceDNlXG5cdHZlYzMgb3V0Z29pbmdMaWdodCBceDNkIHZlYzMoIDAuMCApO1xuXHR2ZWM0IGRpZmZ1c2VDb2xvciBceDNkIHZlYzQoIGRpZmZ1c2UsIG9wYWNpdHkgKTtcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjbWFwX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjYWxwaGF0ZXN0X2ZyYWdtZW50XHgzZVxuXHRvdXRnb2luZ0xpZ2h0IFx4M2QgZGlmZnVzZUNvbG9yLnJnYjtcblx0Z2xfRnJhZ0NvbG9yIFx4M2QgdmVjNCggb3V0Z29pbmdMaWdodCwgZGlmZnVzZUNvbG9yLmEgKTtcblx0I2luY2x1ZGUgXHgzY3RvbmVtYXBwaW5nX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjZW5jb2RpbmdzX2ZyYWdtZW50XHgzZVxuXHQjaW5jbHVkZSBceDNjZm9nX2ZyYWdtZW50XHgzZVxufSIsCnNwcml0ZV92ZXJ0OiJ1bmlmb3JtIGZsb2F0IHJvdGF0aW9uO1xudW5pZm9ybSB2ZWMyIGNlbnRlcjtcbiNpbmNsdWRlIFx4M2Njb21tb25ceDNlXG4jaW5jbHVkZSBceDNjdXZfcGFyc192ZXJ0ZXhceDNlXG4jaW5jbHVkZSBceDNjZm9nX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3BhcnNfdmVydGV4XHgzZVxuI2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc19wYXJzX3ZlcnRleFx4M2VcbnZvaWQgbWFpbigpIHtcblx0I2luY2x1ZGUgXHgzY3V2X3ZlcnRleFx4M2Vcblx0dmVjNCBtdlBvc2l0aW9uIFx4M2QgbW9kZWxWaWV3TWF0cml4ICogdmVjNCggMC4wLCAwLjAsIDAuMCwgMS4wICk7XG5cdHZlYzIgc2NhbGU7XG5cdHNjYWxlLnggXHgzZCBsZW5ndGgoIHZlYzMoIG1vZGVsTWF0cml4WyAwIF0ueCwgbW9kZWxNYXRyaXhbIDAgXS55LCBtb2RlbE1hdHJpeFsgMCBdLnogKSApO1xuXHRzY2FsZS55IFx4M2QgbGVuZ3RoKCB2ZWMzKCBtb2RlbE1hdHJpeFsgMSBdLngsIG1vZGVsTWF0cml4WyAxIF0ueSwgbW9kZWxNYXRyaXhbIDEgXS56ICkgKTtcblx0I2lmbmRlZiBVU0VfU0laRUFUVEVOVUFUSU9OXG5cdFx0Ym9vbCBpc1BlcnNwZWN0aXZlIFx4M2QgKCBwcm9qZWN0aW9uTWF0cml4WyAyIF1bIDMgXSBceDNkXHgzZCAtIDEuMCApO1xuXHRcdGlmICggaXNQZXJzcGVjdGl2ZSApIHNjYWxlICpceDNkIC0gbXZQb3NpdGlvbi56O1xuXHQjZW5kaWZcblx0dmVjMiBhbGlnbmVkUG9zaXRpb24gXHgzZCAoIHBvc2l0aW9uLnh5IC0gKCBjZW50ZXIgLSB2ZWMyKCAwLjUgKSApICkgKiBzY2FsZTtcblx0dmVjMiByb3RhdGVkUG9zaXRpb247XG5cdHJvdGF0ZWRQb3NpdGlvbi54IFx4M2QgY29zKCByb3RhdGlvbiApICogYWxpZ25lZFBvc2l0aW9uLnggLSBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueTtcblx0cm90YXRlZFBvc2l0aW9uLnkgXHgzZCBzaW4oIHJvdGF0aW9uICkgKiBhbGlnbmVkUG9zaXRpb24ueCArIGNvcyggcm90YXRpb24gKSAqIGFsaWduZWRQb3NpdGlvbi55O1xuXHRtdlBvc2l0aW9uLnh5ICtceDNkIHJvdGF0ZWRQb3NpdGlvbjtcblx0Z2xfUG9zaXRpb24gXHgzZCBwcm9qZWN0aW9uTWF0cml4ICogbXZQb3NpdGlvbjtcblx0I2luY2x1ZGUgXHgzY2xvZ2RlcHRoYnVmX3ZlcnRleFx4M2Vcblx0I2luY2x1ZGUgXHgzY2NsaXBwaW5nX3BsYW5lc192ZXJ0ZXhceDNlXG5cdCNpbmNsdWRlIFx4M2Nmb2dfdmVydGV4XHgzZVxufSJ9LApXYT17Y29tbW9uOntkaWZmdXNlOnt2YWx1ZTpuZXcgSSgxNTY1ODczNCl9LG9wYWNpdHk6e3ZhbHVlOjF9LG1hcDp7dmFsdWU6bnVsbH0sdXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyB0fSxhbHBoYU1hcDp7dmFsdWU6bnVsbH19LHNwZWN1bGFybWFwOntzcGVjdWxhck1hcDp7dmFsdWU6bnVsbH19LGVudm1hcDp7ZW52TWFwOnt2YWx1ZTpudWxsfSxmbGlwRW52TWFwOnt2YWx1ZTotMX0scmVmbGVjdGl2aXR5Ont2YWx1ZToxfSxyZWZyYWN0aW9uUmF0aW86e3ZhbHVlOi45OH0sbWF4TWlwTGV2ZWw6e3ZhbHVlOjB9fSxhb21hcDp7YW9NYXA6e3ZhbHVlOm51bGx9LGFvTWFwSW50ZW5zaXR5Ont2YWx1ZToxfX0sbGlnaHRtYXA6e2xpZ2h0TWFwOnt2YWx1ZTpudWxsfSxsaWdodE1hcEludGVuc2l0eTp7dmFsdWU6MX19LGVtaXNzaXZlbWFwOntlbWlzc2l2ZU1hcDp7dmFsdWU6bnVsbH19LGJ1bXBtYXA6e2J1bXBNYXA6e3ZhbHVlOm51bGx9LGJ1bXBTY2FsZTp7dmFsdWU6MX19LG5vcm1hbG1hcDp7bm9ybWFsTWFwOnt2YWx1ZTpudWxsfSwKbm9ybWFsU2NhbGU6e3ZhbHVlOm5ldyBmKDEsMSl9fSxkaXNwbGFjZW1lbnRtYXA6e2Rpc3BsYWNlbWVudE1hcDp7dmFsdWU6bnVsbH0sZGlzcGxhY2VtZW50U2NhbGU6e3ZhbHVlOjF9LGRpc3BsYWNlbWVudEJpYXM6e3ZhbHVlOjB9fSxyb3VnaG5lc3NtYXA6e3JvdWdobmVzc01hcDp7dmFsdWU6bnVsbH19LG1ldGFsbmVzc21hcDp7bWV0YWxuZXNzTWFwOnt2YWx1ZTpudWxsfX0sZ3JhZGllbnRtYXA6e2dyYWRpZW50TWFwOnt2YWx1ZTpudWxsfX0sZm9nOntmb2dEZW5zaXR5Ont2YWx1ZToyLjVFLTR9LGZvZ05lYXI6e3ZhbHVlOjF9LGZvZ0Zhcjp7dmFsdWU6MkUzfSxmb2dDb2xvcjp7dmFsdWU6bmV3IEkoMTY3NzcyMTUpfX0sbGlnaHRzOnthbWJpZW50TGlnaHRDb2xvcjp7dmFsdWU6W119LGxpZ2h0UHJvYmU6e3ZhbHVlOltdfSxkaXJlY3Rpb25hbExpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7ZGlyZWN0aW9uOnt9LGNvbG9yOnt9LHNoYWRvdzp7fSxzaGFkb3dCaWFzOnt9LApzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LGRpcmVjdGlvbmFsU2hhZG93TWFwOnt2YWx1ZTpbXX0sZGlyZWN0aW9uYWxTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxzcG90TGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntjb2xvcjp7fSxwb3NpdGlvbjp7fSxkaXJlY3Rpb246e30sZGlzdGFuY2U6e30sY29uZUNvczp7fSxwZW51bWJyYUNvczp7fSxkZWNheTp7fSxzaGFkb3c6e30sc2hhZG93Qmlhczp7fSxzaGFkb3dSYWRpdXM6e30sc2hhZG93TWFwU2l6ZTp7fX19LHNwb3RTaGFkb3dNYXA6e3ZhbHVlOltdfSxzcG90U2hhZG93TWF0cml4Ont2YWx1ZTpbXX0scG9pbnRMaWdodHM6e3ZhbHVlOltdLHByb3BlcnRpZXM6e2NvbG9yOnt9LHBvc2l0aW9uOnt9LGRlY2F5Ont9LGRpc3RhbmNlOnt9LHNoYWRvdzp7fSxzaGFkb3dCaWFzOnt9LHNoYWRvd1JhZGl1czp7fSxzaGFkb3dNYXBTaXplOnt9LHNoYWRvd0NhbWVyYU5lYXI6e30sc2hhZG93Q2FtZXJhRmFyOnt9fX0sCnBvaW50U2hhZG93TWFwOnt2YWx1ZTpbXX0scG9pbnRTaGFkb3dNYXRyaXg6e3ZhbHVlOltdfSxoZW1pc3BoZXJlTGlnaHRzOnt2YWx1ZTpbXSxwcm9wZXJ0aWVzOntkaXJlY3Rpb246e30sc2t5Q29sb3I6e30sZ3JvdW5kQ29sb3I6e319fSxyZWN0QXJlYUxpZ2h0czp7dmFsdWU6W10scHJvcGVydGllczp7Y29sb3I6e30scG9zaXRpb246e30sd2lkdGg6e30saGVpZ2h0Ont9fX19LHBvaW50czp7ZGlmZnVzZTp7dmFsdWU6bmV3IEkoMTU2NTg3MzQpfSxvcGFjaXR5Ont2YWx1ZToxfSxzaXplOnt2YWx1ZToxfSxzY2FsZTp7dmFsdWU6MX0sbWFwOnt2YWx1ZTpudWxsfSx1dlRyYW5zZm9ybTp7dmFsdWU6bmV3IHR9fSxzcHJpdGU6e2RpZmZ1c2U6e3ZhbHVlOm5ldyBJKDE1NjU4NzM0KX0sb3BhY2l0eTp7dmFsdWU6MX0sY2VudGVyOnt2YWx1ZTpuZXcgZiguNSwuNSl9LHJvdGF0aW9uOnt2YWx1ZTowfSxtYXA6e3ZhbHVlOm51bGx9LHV2VHJhbnNmb3JtOnt2YWx1ZTpuZXcgdH19fSxNYz0Ke2Jhc2ljOnt1bmlmb3JtczpCYihbV2EuY29tbW9uLFdhLnNwZWN1bGFybWFwLFdhLmVudm1hcCxXYS5hb21hcCxXYS5saWdodG1hcCxXYS5mb2ddKSx2ZXJ0ZXhTaGFkZXI6cmIubWVzaGJhc2ljX3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIubWVzaGJhc2ljX2ZyYWd9LGxhbWJlcnQ6e3VuaWZvcm1zOkJiKFtXYS5jb21tb24sV2Euc3BlY3VsYXJtYXAsV2EuZW52bWFwLFdhLmFvbWFwLFdhLmxpZ2h0bWFwLFdhLmVtaXNzaXZlbWFwLFdhLmZvZyxXYS5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgSSgwKX19XSksdmVydGV4U2hhZGVyOnJiLm1lc2hsYW1iZXJ0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIubWVzaGxhbWJlcnRfZnJhZ30scGhvbmc6e3VuaWZvcm1zOkJiKFtXYS5jb21tb24sV2Euc3BlY3VsYXJtYXAsV2EuZW52bWFwLFdhLmFvbWFwLFdhLmxpZ2h0bWFwLFdhLmVtaXNzaXZlbWFwLFdhLmJ1bXBtYXAsV2Eubm9ybWFsbWFwLFdhLmRpc3BsYWNlbWVudG1hcCxXYS5ncmFkaWVudG1hcCwKV2EuZm9nLFdhLmxpZ2h0cyx7ZW1pc3NpdmU6e3ZhbHVlOm5ldyBJKDApfSxzcGVjdWxhcjp7dmFsdWU6bmV3IEkoMTExODQ4MSl9LHNoaW5pbmVzczp7dmFsdWU6MzB9fV0pLHZlcnRleFNoYWRlcjpyYi5tZXNocGhvbmdfdmVydCxmcmFnbWVudFNoYWRlcjpyYi5tZXNocGhvbmdfZnJhZ30sc3RhbmRhcmQ6e3VuaWZvcm1zOkJiKFtXYS5jb21tb24sV2EuZW52bWFwLFdhLmFvbWFwLFdhLmxpZ2h0bWFwLFdhLmVtaXNzaXZlbWFwLFdhLmJ1bXBtYXAsV2Eubm9ybWFsbWFwLFdhLmRpc3BsYWNlbWVudG1hcCxXYS5yb3VnaG5lc3NtYXAsV2EubWV0YWxuZXNzbWFwLFdhLmZvZyxXYS5saWdodHMse2VtaXNzaXZlOnt2YWx1ZTpuZXcgSSgwKX0scm91Z2huZXNzOnt2YWx1ZTouNX0sbWV0YWxuZXNzOnt2YWx1ZTouNX0sZW52TWFwSW50ZW5zaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6cmIubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIubWVzaHBoeXNpY2FsX2ZyYWd9LAptYXRjYXA6e3VuaWZvcm1zOkJiKFtXYS5jb21tb24sV2EuYnVtcG1hcCxXYS5ub3JtYWxtYXAsV2EuZGlzcGxhY2VtZW50bWFwLFdhLmZvZyx7bWF0Y2FwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6cmIubWVzaG1hdGNhcF92ZXJ0LGZyYWdtZW50U2hhZGVyOnJiLm1lc2htYXRjYXBfZnJhZ30scG9pbnRzOnt1bmlmb3JtczpCYihbV2EucG9pbnRzLFdhLmZvZ10pLHZlcnRleFNoYWRlcjpyYi5wb2ludHNfdmVydCxmcmFnbWVudFNoYWRlcjpyYi5wb2ludHNfZnJhZ30sZGFzaGVkOnt1bmlmb3JtczpCYihbV2EuY29tbW9uLFdhLmZvZyx7c2NhbGU6e3ZhbHVlOjF9LGRhc2hTaXplOnt2YWx1ZToxfSx0b3RhbFNpemU6e3ZhbHVlOjJ9fV0pLHZlcnRleFNoYWRlcjpyYi5saW5lZGFzaGVkX3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIubGluZWRhc2hlZF9mcmFnfSxkZXB0aDp7dW5pZm9ybXM6QmIoW1dhLmNvbW1vbixXYS5kaXNwbGFjZW1lbnRtYXBdKSx2ZXJ0ZXhTaGFkZXI6cmIuZGVwdGhfdmVydCwKZnJhZ21lbnRTaGFkZXI6cmIuZGVwdGhfZnJhZ30sbm9ybWFsOnt1bmlmb3JtczpCYihbV2EuY29tbW9uLFdhLmJ1bXBtYXAsV2Eubm9ybWFsbWFwLFdhLmRpc3BsYWNlbWVudG1hcCx7b3BhY2l0eTp7dmFsdWU6MX19XSksdmVydGV4U2hhZGVyOnJiLm5vcm1hbF92ZXJ0LGZyYWdtZW50U2hhZGVyOnJiLm5vcm1hbF9mcmFnfSxzcHJpdGU6e3VuaWZvcm1zOkJiKFtXYS5zcHJpdGUsV2EuZm9nXSksdmVydGV4U2hhZGVyOnJiLnNwcml0ZV92ZXJ0LGZyYWdtZW50U2hhZGVyOnJiLnNwcml0ZV9mcmFnfSxiYWNrZ3JvdW5kOnt1bmlmb3Jtczp7dXZUcmFuc2Zvcm06e3ZhbHVlOm5ldyB0fSx0MkQ6e3ZhbHVlOm51bGx9fSx2ZXJ0ZXhTaGFkZXI6cmIuYmFja2dyb3VuZF92ZXJ0LGZyYWdtZW50U2hhZGVyOnJiLmJhY2tncm91bmRfZnJhZ30sY3ViZTp7dW5pZm9ybXM6e3RDdWJlOnt2YWx1ZTpudWxsfSx0RmxpcDp7dmFsdWU6LTF9LG9wYWNpdHk6e3ZhbHVlOjF9fSx2ZXJ0ZXhTaGFkZXI6cmIuY3ViZV92ZXJ0LApmcmFnbWVudFNoYWRlcjpyYi5jdWJlX2ZyYWd9LGVxdWlyZWN0Ont1bmlmb3Jtczp7dEVxdWlyZWN0Ont2YWx1ZTpudWxsfX0sdmVydGV4U2hhZGVyOnJiLmVxdWlyZWN0X3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIuZXF1aXJlY3RfZnJhZ30sZGlzdGFuY2VSR0JBOnt1bmlmb3JtczpCYihbV2EuY29tbW9uLFdhLmRpc3BsYWNlbWVudG1hcCx7cmVmZXJlbmNlUG9zaXRpb246e3ZhbHVlOm5ldyBrfSxuZWFyRGlzdGFuY2U6e3ZhbHVlOjF9LGZhckRpc3RhbmNlOnt2YWx1ZToxRTN9fV0pLHZlcnRleFNoYWRlcjpyYi5kaXN0YW5jZVJHQkFfdmVydCxmcmFnbWVudFNoYWRlcjpyYi5kaXN0YW5jZVJHQkFfZnJhZ30sc2hhZG93Ont1bmlmb3JtczpCYihbV2EubGlnaHRzLFdhLmZvZyx7Y29sb3I6e3ZhbHVlOm5ldyBJKDApfSxvcGFjaXR5Ont2YWx1ZToxfX1dKSx2ZXJ0ZXhTaGFkZXI6cmIuc2hhZG93X3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIuc2hhZG93X2ZyYWd9fTtNYy5waHlzaWNhbD0Ke3VuaWZvcm1zOkJiKFtNYy5zdGFuZGFyZC51bmlmb3Jtcyx7dHJhbnNwYXJlbmN5Ont2YWx1ZTowfSxjbGVhcmNvYXQ6e3ZhbHVlOjB9LGNsZWFyY29hdFJvdWdobmVzczp7dmFsdWU6MH0sc2hlZW46e3ZhbHVlOm5ldyBJKDApfSxjbGVhcmNvYXROb3JtYWxTY2FsZTp7dmFsdWU6bmV3IGYoMSwxKX0sY2xlYXJjb2F0Tm9ybWFsTWFwOnt2YWx1ZTpudWxsfX1dKSx2ZXJ0ZXhTaGFkZXI6cmIubWVzaHBoeXNpY2FsX3ZlcnQsZnJhZ21lbnRTaGFkZXI6cmIubWVzaHBoeXNpY2FsX2ZyYWd9O3JkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHlhLnByb3RvdHlwZSk7cmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXJkO0xjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7TGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUxjO2NkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtjZC5wcm90b3R5cGUuY29uc3RydWN0b3I9Y2Q7Y2QucHJvdG90eXBlLmlzQ3ViZVRleHR1cmU9CiEwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShjZC5wcm90b3R5cGUsImltYWdlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmltYWdlfSxzZXQ6ZnVuY3Rpb24oYSl7dGhpcy5pbWFnZT1hfX0pO3JlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtyZS5wcm90b3R5cGUuY29uc3RydWN0b3I9cmU7cmUucHJvdG90eXBlLmlzRGF0YVRleHR1cmUyREFycmF5PSEwO3NlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtzZS5wcm90b3R5cGUuY29uc3RydWN0b3I9c2U7c2UucHJvdG90eXBlLmlzRGF0YVRleHR1cmUzRD0hMDt2YXIgaWo9bmV3IGwsZWw9bmV3IHJlLGdsPW5ldyBzZSxqaj1uZXcgY2QsY2o9W10sZWo9W10saGo9bmV3IEZsb2F0MzJBcnJheSgxNiksZ2o9bmV3IEZsb2F0MzJBcnJheSg5KSxmaj1uZXcgRmxvYXQzMkFycmF5KDQpO2tqLnByb3RvdHlwZS51cGRhdGVDYWNoZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmNhY2hlO2EgaW5zdGFuY2VvZgpGbG9hdDMyQXJyYXkmJmMubGVuZ3RoIT09YS5sZW5ndGgmJih0aGlzLmNhY2hlPW5ldyBGbG9hdDMyQXJyYXkoYS5sZW5ndGgpKTttYyhjLGEpfTtsai5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24oYSxjLGUpe2Zvcih2YXIgZz10aGlzLnNlcSxyPTAsdj1nLmxlbmd0aDtyIT09djsrK3Ipe3ZhciB6PWdbcl07ei5zZXRWYWx1ZShhLGNbei5pZF0sZSl9fTt2YXIgTGg9LyhbXHdcZF9dKykoXF0pPyhcW3xcLik/L2c7dWQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKGEsYyxlLGcpe2M9dGhpcy5tYXBbY107dm9pZCAwIT09YyYmYy5zZXRWYWx1ZShhLGUsZyl9O3VkLnByb3RvdHlwZS5zZXRPcHRpb25hbD1mdW5jdGlvbihhLGMsZSl7Yz1jW2VdO3ZvaWQgMCE9PWMmJnRoaXMuc2V0VmFsdWUoYSxlLGMpfTt1ZC51cGxvYWQ9ZnVuY3Rpb24oYSxjLGUsZyl7Zm9yKHZhciByPTAsdj1jLmxlbmd0aDtyIT09djsrK3Ipe3ZhciB6PWNbcl0sRT1lW3ouaWRdOyExIT09RS5uZWVkc1VwZGF0ZSYmCnouc2V0VmFsdWUoYSxFLnZhbHVlLGcpfX07dWQuc2VxV2l0aFZhbHVlPWZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBlPVtdLGc9MCxyPWEubGVuZ3RoO2chPT1yOysrZyl7dmFyIHY9YVtnXTt2LmlkIGluIGMmJmUucHVzaCh2KX1yZXR1cm4gZX07dmFyIEtsPTAsVGw9MDt2ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7dmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXZkO3ZkLnByb3RvdHlwZS5pc01lc2hEZXB0aE1hdGVyaWFsPSEwO3ZkLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZGVwdGhQYWNraW5nPWEuZGVwdGhQYWNraW5nO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzt0aGlzLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0czt0aGlzLm1hcD1hLm1hcDt0aGlzLmFscGhhTWFwPWEuYWxwaGFNYXA7dGhpcy5kaXNwbGFjZW1lbnRNYXA9YS5kaXNwbGFjZW1lbnRNYXA7dGhpcy5kaXNwbGFjZW1lbnRTY2FsZT0KYS5kaXNwbGFjZW1lbnRTY2FsZTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9YS5kaXNwbGFjZW1lbnRCaWFzO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPWEud2lyZWZyYW1lTGluZXdpZHRoO3JldHVybiB0aGlzfTt3ZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7d2QucHJvdG90eXBlLmNvbnN0cnVjdG9yPXdkO3dkLnByb3RvdHlwZS5pc01lc2hEaXN0YW5jZU1hdGVyaWFsPSEwO3dkLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMucmVmZXJlbmNlUG9zaXRpb24uY29weShhLnJlZmVyZW5jZVBvc2l0aW9uKTt0aGlzLm5lYXJEaXN0YW5jZT1hLm5lYXJEaXN0YW5jZTt0aGlzLmZhckRpc3RhbmNlPWEuZmFyRGlzdGFuY2U7dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzO3RoaXMubWFwPWEubWFwO3RoaXMuYWxwaGFNYXA9CmEuYWxwaGFNYXA7dGhpcy5kaXNwbGFjZW1lbnRNYXA9YS5kaXNwbGFjZW1lbnRNYXA7dGhpcy5kaXNwbGFjZW1lbnRTY2FsZT1hLmRpc3BsYWNlbWVudFNjYWxlO3RoaXMuZGlzcGxhY2VtZW50Qmlhcz1hLmRpc3BsYWNlbWVudEJpYXM7cmV0dXJuIHRoaXN9O3VlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp1ZSxpc0dyb3VwOiEwfSk7dmYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh2Yi5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp2Zixpc0FycmF5Q2FtZXJhOiEwfSk7dmFyIHlqPW5ldyBrLHpqPW5ldyBrO09iamVjdC5hc3NpZ24oTmgucHJvdG90eXBlLGQucHJvdG90eXBlKTtPYmplY3QuYXNzaWduKEFqLnByb3RvdHlwZSxkLnByb3RvdHlwZSk7T2JqZWN0LmFzc2lnbih6Zy5wcm90b3R5cGUse2lzRm9nRXhwMjohMCxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgemcodGhpcy5jb2xvciwKdGhpcy5kZW5zaXR5KX0sdG9KU09OOmZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkZvZ0V4cDIiLGNvbG9yOnRoaXMuY29sb3IuZ2V0SGV4KCksZGVuc2l0eTp0aGlzLmRlbnNpdHl9fX0pO09iamVjdC5hc3NpZ24oQWcucHJvdG90eXBlLHtpc0ZvZzohMCxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBuZXcgQWcodGhpcy5jb2xvcix0aGlzLm5lYXIsdGhpcy5mYXIpfSx0b0pTT046ZnVuY3Rpb24oKXtyZXR1cm57dHlwZToiRm9nIixjb2xvcjp0aGlzLmNvbG9yLmdldEhleCgpLG5lYXI6dGhpcy5uZWFyLGZhcjp0aGlzLmZhcn19fSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KFFkLnByb3RvdHlwZSwibmVlZHNVcGRhdGUiLHtzZXQ6ZnVuY3Rpb24oYSl7ITA9PT1hJiZ0aGlzLnZlcnNpb24rK319KTtPYmplY3QuYXNzaWduKFFkLnByb3RvdHlwZSx7aXNJbnRlcmxlYXZlZEJ1ZmZlcjohMCxvblVwbG9hZENhbGxiYWNrOmZ1bmN0aW9uKCl7fSxzZXRBcnJheTpmdW5jdGlvbihhKXtpZihBcnJheS5pc0FycmF5KGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogYXJyYXkgc2hvdWxkIGJlIGEgVHlwZWQgQXJyYXkuIik7CnRoaXMuY291bnQ9dm9pZCAwIT09YT9hLmxlbmd0aC90aGlzLnN0cmlkZTowO3RoaXMuYXJyYXk9YTtyZXR1cm4gdGhpc30sc2V0RHluYW1pYzpmdW5jdGlvbihhKXt0aGlzLmR5bmFtaWM9YTtyZXR1cm4gdGhpc30sY29weTpmdW5jdGlvbihhKXt0aGlzLmFycmF5PW5ldyBhLmFycmF5LmNvbnN0cnVjdG9yKGEuYXJyYXkpO3RoaXMuY291bnQ9YS5jb3VudDt0aGlzLnN0cmlkZT1hLnN0cmlkZTt0aGlzLmR5bmFtaWM9YS5keW5hbWljO3JldHVybiB0aGlzfSxjb3B5QXQ6ZnVuY3Rpb24oYSxjLGUpe2EqPXRoaXMuc3RyaWRlO2UqPWMuc3RyaWRlO2Zvcih2YXIgZz0wLHI9dGhpcy5zdHJpZGU7ZzxyO2crKyl0aGlzLmFycmF5W2ErZ109Yy5hcnJheVtlK2ddO3JldHVybiB0aGlzfSxzZXQ6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0wKTt0aGlzLmFycmF5LnNldChhLGMpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sCm9uVXBsb2FkOmZ1bmN0aW9uKGEpe3RoaXMub25VcGxvYWRDYWxsYmFjaz1hO3JldHVybiB0aGlzfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHhmLnByb3RvdHlwZSx7Y291bnQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuY291bnR9fSxhcnJheTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF0YS5hcnJheX19fSk7T2JqZWN0LmFzc2lnbih4Zi5wcm90b3R5cGUse2lzSW50ZXJsZWF2ZWRCdWZmZXJBdHRyaWJ1dGU6ITAsc2V0WDpmdW5jdGlvbihhLGMpe3RoaXMuZGF0YS5hcnJheVthKnRoaXMuZGF0YS5zdHJpZGUrdGhpcy5vZmZzZXRdPWM7cmV0dXJuIHRoaXN9LHNldFk6ZnVuY3Rpb24oYSxjKXt0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzFdPWM7cmV0dXJuIHRoaXN9LHNldFo6ZnVuY3Rpb24oYSxjKXt0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0KzJdPWM7cmV0dXJuIHRoaXN9LApzZXRXOmZ1bmN0aW9uKGEsYyl7dGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXT1jO3JldHVybiB0aGlzfSxnZXRYOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGEuYXJyYXlbYSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0XX0sZ2V0WTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsxXX0sZ2V0WjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCsyXX0sZ2V0VzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kYXRhLmFycmF5W2EqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldCszXX0sc2V0WFk6ZnVuY3Rpb24oYSxjLGUpe2E9YSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O3RoaXMuZGF0YS5hcnJheVthKzBdPWM7dGhpcy5kYXRhLmFycmF5W2ErMV09ZTtyZXR1cm4gdGhpc30sc2V0WFlaOmZ1bmN0aW9uKGEsCmMsZSxnKXthPWEqdGhpcy5kYXRhLnN0cmlkZSt0aGlzLm9mZnNldDt0aGlzLmRhdGEuYXJyYXlbYSswXT1jO3RoaXMuZGF0YS5hcnJheVthKzFdPWU7dGhpcy5kYXRhLmFycmF5W2ErMl09ZztyZXR1cm4gdGhpc30sc2V0WFlaVzpmdW5jdGlvbihhLGMsZSxnLHIpe2E9YSp0aGlzLmRhdGEuc3RyaWRlK3RoaXMub2Zmc2V0O3RoaXMuZGF0YS5hcnJheVthKzBdPWM7dGhpcy5kYXRhLmFycmF5W2ErMV09ZTt0aGlzLmRhdGEuYXJyYXlbYSsyXT1nO3RoaXMuZGF0YS5hcnJheVthKzNdPXI7cmV0dXJuIHRoaXN9fSk7QWQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTS5wcm90b3R5cGUpO0FkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1BZDtBZC5wcm90b3R5cGUuaXNTcHJpdGVNYXRlcmlhbD0hMDtBZC5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtNLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXA9YS5tYXA7dGhpcy5yb3RhdGlvbj0KYS5yb3RhdGlvbjt0aGlzLnNpemVBdHRlbnVhdGlvbj1hLnNpemVBdHRlbnVhdGlvbjtyZXR1cm4gdGhpc307dmFyIEFlLG1nPW5ldyBrLG5mPW5ldyBrLG9mPW5ldyBrLEJlPW5ldyBmLHpmPW5ldyBmLEZqPW5ldyBxLHFoPW5ldyBrLG5nPW5ldyBrLHJoPW5ldyBrLGtrPW5ldyBmLEtpPW5ldyBmLGxrPW5ldyBmO3lmLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp5Zixpc1Nwcml0ZTohMCxyYXljYXN0OmZ1bmN0aW9uKGEsYyl7bnVsbD09PWEuY2FtZXJhJiZjb25zb2xlLmVycm9yKCdUSFJFRS5TcHJpdGU6ICJSYXljYXN0ZXIuY2FtZXJhIiBuZWVkcyB0byBiZSBzZXQgaW4gb3JkZXIgdG8gcmF5Y2FzdCBhZ2FpbnN0IHNwcml0ZXMuJyk7bmYuc2V0RnJvbU1hdHJpeFNjYWxlKHRoaXMubWF0cml4V29ybGQpO0ZqLmNvcHkoYS5jYW1lcmEubWF0cml4V29ybGQpO3RoaXMubW9kZWxWaWV3TWF0cml4Lm11bHRpcGx5TWF0cmljZXMoYS5jYW1lcmEubWF0cml4V29ybGRJbnZlcnNlLAp0aGlzLm1hdHJpeFdvcmxkKTtvZi5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tb2RlbFZpZXdNYXRyaXgpO2EuY2FtZXJhLmlzUGVyc3BlY3RpdmVDYW1lcmEmJiExPT09dGhpcy5tYXRlcmlhbC5zaXplQXR0ZW51YXRpb24mJm5mLm11bHRpcGx5U2NhbGFyKC1vZi56KTt2YXIgZT10aGlzLm1hdGVyaWFsLnJvdGF0aW9uO2lmKDAhPT1lKXt2YXIgZz1NYXRoLmNvcyhlKTt2YXIgcj1NYXRoLnNpbihlKX1lPXRoaXMuY2VudGVyO0JnKHFoLnNldCgtLjUsLS41LDApLG9mLGUsbmYscixnKTtCZyhuZy5zZXQoLjUsLS41LDApLG9mLGUsbmYscixnKTtCZyhyaC5zZXQoLjUsLjUsMCksb2YsZSxuZixyLGcpO2trLnNldCgwLDApO0tpLnNldCgxLDApO2xrLnNldCgxLDEpO3ZhciB2PWEucmF5LmludGVyc2VjdFRyaWFuZ2xlKHFoLG5nLHJoLCExLG1nKTtpZihudWxsPT09diYmKEJnKG5nLnNldCgtLjUsLjUsMCksb2YsZSxuZixyLGcpLEtpLnNldCgwLDEpLHY9YS5yYXkuaW50ZXJzZWN0VHJpYW5nbGUocWgsCnJoLG5nLCExLG1nKSxudWxsPT09dikpcmV0dXJuO3I9YS5yYXkub3JpZ2luLmRpc3RhbmNlVG8obWcpO3I8YS5uZWFyfHxyPmEuZmFyfHxjLnB1c2goe2Rpc3RhbmNlOnIscG9pbnQ6bWcuY2xvbmUoKSx1djpCLmdldFVWKG1nLHFoLG5nLHJoLGtrLEtpLGxrLG5ldyBmKSxmYWNlOm51bGwsb2JqZWN0OnRoaXN9KX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5tYXRlcmlhbCkpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7QS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dm9pZCAwIT09YS5jZW50ZXImJnRoaXMuY2VudGVyLmNvcHkoYS5jZW50ZXIpO3JldHVybiB0aGlzfX0pO3ZhciBzaD1uZXcgayxtaz1uZXcgaztBZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6QWYsaXNMT0Q6ITAsY29weTpmdW5jdGlvbihhKXtBLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcywKYSwhMSk7YT1hLmxldmVscztmb3IodmFyIGM9MCxlPWEubGVuZ3RoO2M8ZTtjKyspe3ZhciBnPWFbY107dGhpcy5hZGRMZXZlbChnLm9iamVjdC5jbG9uZSgpLGcuZGlzdGFuY2UpfXJldHVybiB0aGlzfSxhZGRMZXZlbDpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO2M9TWF0aC5hYnMoYyk7Zm9yKHZhciBlPXRoaXMubGV2ZWxzLGc9MDtnPGUubGVuZ3RoJiYhKGM8ZVtnXS5kaXN0YW5jZSk7ZysrKTtlLnNwbGljZShnLDAse2Rpc3RhbmNlOmMsb2JqZWN0OmF9KTt0aGlzLmFkZChhKTtyZXR1cm4gdGhpc30sZ2V0T2JqZWN0Rm9yRGlzdGFuY2U6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMubGV2ZWxzLGU9MSxnPWMubGVuZ3RoO2U8ZyYmIShhPGNbZV0uZGlzdGFuY2UpO2UrKyk7cmV0dXJuIGNbZS0xXS5vYmplY3R9LHJheWNhc3Q6ZnVuY3Rpb24oYSxjKXtzaC5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5tYXRyaXhXb3JsZCk7dGhpcy5nZXRPYmplY3RGb3JEaXN0YW5jZShhLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhzaCkpLnJheWNhc3QoYSwKYyl9LHVwZGF0ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmxldmVscztpZigxPGMubGVuZ3RoKXtzaC5zZXRGcm9tTWF0cml4UG9zaXRpb24oYS5tYXRyaXhXb3JsZCk7bWsuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubWF0cml4V29ybGQpO2E9c2guZGlzdGFuY2VUbyhtayk7Y1swXS5vYmplY3QudmlzaWJsZT0hMDtmb3IodmFyIGU9MSxnPWMubGVuZ3RoO2U8ZztlKyspaWYoYT49Y1tlXS5kaXN0YW5jZSljW2UtMV0ub2JqZWN0LnZpc2libGU9ITEsY1tlXS5vYmplY3QudmlzaWJsZT0hMDtlbHNlIGJyZWFrO2Zvcig7ZTxnO2UrKyljW2VdLm9iamVjdC52aXNpYmxlPSExfX0sdG9KU09OOmZ1bmN0aW9uKGEpe2E9QS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyxhKTthLm9iamVjdC5sZXZlbHM9W107Zm9yKHZhciBjPXRoaXMubGV2ZWxzLGU9MCxnPWMubGVuZ3RoO2U8ZztlKyspe3ZhciByPWNbZV07YS5vYmplY3QubGV2ZWxzLnB1c2goe29iamVjdDpyLm9iamVjdC51dWlkLApkaXN0YW5jZTpyLmRpc3RhbmNlfSl9cmV0dXJuIGF9fSk7QmYucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh4YS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpCZixpc1NraW5uZWRNZXNoOiEwLGJpbmQ6ZnVuY3Rpb24oYSxjKXt0aGlzLnNrZWxldG9uPWE7dm9pZCAwPT09YyYmKHRoaXMudXBkYXRlTWF0cml4V29ybGQoITApLHRoaXMuc2tlbGV0b24uY2FsY3VsYXRlSW52ZXJzZXMoKSxjPXRoaXMubWF0cml4V29ybGQpO3RoaXMuYmluZE1hdHJpeC5jb3B5KGMpO3RoaXMuYmluZE1hdHJpeEludmVyc2UuZ2V0SW52ZXJzZShjKX0scG9zZTpmdW5jdGlvbigpe3RoaXMuc2tlbGV0b24ucG9zZSgpfSxub3JtYWxpemVTa2luV2VpZ2h0czpmdW5jdGlvbigpe2Zvcih2YXIgYT1uZXcgcCxjPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5za2luV2VpZ2h0LGU9MCxnPWMuY291bnQ7ZTxnO2UrKyl7YS54PWMuZ2V0WChlKTthLnk9Yy5nZXRZKGUpO2Euej1jLmdldFooZSk7CmEudz1jLmdldFcoZSk7dmFyIHI9MS9hLm1hbmhhdHRhbkxlbmd0aCgpO0luZmluaXR5IT09cj9hLm11bHRpcGx5U2NhbGFyKHIpOmEuc2V0KDEsMCwwLDApO2Muc2V0WFlaVyhlLGEueCxhLnksYS56LGEudyl9fSx1cGRhdGVNYXRyaXhXb3JsZDpmdW5jdGlvbihhKXt4YS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpOyJhdHRhY2hlZCI9PT10aGlzLmJpbmRNb2RlP3RoaXMuYmluZE1hdHJpeEludmVyc2UuZ2V0SW52ZXJzZSh0aGlzLm1hdHJpeFdvcmxkKToiZGV0YWNoZWQiPT09dGhpcy5iaW5kTW9kZT90aGlzLmJpbmRNYXRyaXhJbnZlcnNlLmdldEludmVyc2UodGhpcy5iaW5kTWF0cml4KTpjb25zb2xlLndhcm4oIlRIUkVFLlNraW5uZWRNZXNoOiBVbnJlY29nbml6ZWQgYmluZE1vZGU6ICIrdGhpcy5iaW5kTW9kZSl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuZ2VvbWV0cnksdGhpcy5tYXRlcmlhbCkpLmNvcHkodGhpcyl9fSk7CnZhciBuaz1uZXcgcSxJbT1uZXcgcTtPYmplY3QuYXNzaWduKENnLnByb3RvdHlwZSx7Y2FsY3VsYXRlSW52ZXJzZXM6ZnVuY3Rpb24oKXt0aGlzLmJvbmVJbnZlcnNlcz1bXTtmb3IodmFyIGE9MCxjPXRoaXMuYm9uZXMubGVuZ3RoO2E8YzthKyspe3ZhciBlPW5ldyBxO3RoaXMuYm9uZXNbYV0mJmUuZ2V0SW52ZXJzZSh0aGlzLmJvbmVzW2FdLm1hdHJpeFdvcmxkKTt0aGlzLmJvbmVJbnZlcnNlcy5wdXNoKGUpfX0scG9zZTpmdW5jdGlvbigpe3ZhciBhLGM7dmFyIGU9MDtmb3IoYz10aGlzLmJvbmVzLmxlbmd0aDtlPGM7ZSsrKShhPXRoaXMuYm9uZXNbZV0pJiZhLm1hdHJpeFdvcmxkLmdldEludmVyc2UodGhpcy5ib25lSW52ZXJzZXNbZV0pO2U9MDtmb3IoYz10aGlzLmJvbmVzLmxlbmd0aDtlPGM7ZSsrKWlmKGE9dGhpcy5ib25lc1tlXSlhLnBhcmVudCYmYS5wYXJlbnQuaXNCb25lPyhhLm1hdHJpeC5nZXRJbnZlcnNlKGEucGFyZW50Lm1hdHJpeFdvcmxkKSxhLm1hdHJpeC5tdWx0aXBseShhLm1hdHJpeFdvcmxkKSk6CmEubWF0cml4LmNvcHkoYS5tYXRyaXhXb3JsZCksYS5tYXRyaXguZGVjb21wb3NlKGEucG9zaXRpb24sYS5xdWF0ZXJuaW9uLGEuc2NhbGUpfSx1cGRhdGU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5ib25lcyxjPXRoaXMuYm9uZUludmVyc2VzLGU9dGhpcy5ib25lTWF0cmljZXMsZz10aGlzLmJvbmVUZXh0dXJlLHI9MCx2PWEubGVuZ3RoO3I8djtyKyspbmsubXVsdGlwbHlNYXRyaWNlcyhhW3JdP2Fbcl0ubWF0cml4V29ybGQ6SW0sY1tyXSksbmsudG9BcnJheShlLDE2KnIpO3ZvaWQgMCE9PWcmJihnLm5lZWRzVXBkYXRlPSEwKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENnKHRoaXMuYm9uZXMsdGhpcy5ib25lSW52ZXJzZXMpfSxnZXRCb25lQnlOYW1lOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wLGU9dGhpcy5ib25lcy5sZW5ndGg7YzxlO2MrKyl7dmFyIGc9dGhpcy5ib25lc1tjXTtpZihnLm5hbWU9PT1hKXJldHVybiBnfX19KTtVaC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOlVoLGlzQm9uZTohMH0pO0ZiLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE0ucHJvdG90eXBlKTtGYi5wcm90b3R5cGUuY29uc3RydWN0b3I9RmI7RmIucHJvdG90eXBlLmlzTGluZUJhc2ljTWF0ZXJpYWw9ITA7RmIucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7TS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMubGluZXdpZHRoPWEubGluZXdpZHRoO3RoaXMubGluZWNhcD1hLmxpbmVjYXA7dGhpcy5saW5lam9pbj1hLmxpbmVqb2luO3JldHVybiB0aGlzfTt2YXIgb2s9bmV3IGsscGs9bmV3IGsscWs9bmV3IHEsdGg9bmV3IEQsb2c9bmV3IEY7VmIucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShBLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlZiLGlzTGluZTohMCxjb21wdXRlTGluZURpc3RhbmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2VvbWV0cnk7aWYoYS5pc0J1ZmZlckdlb21ldHJ5KWlmKG51bGw9PT0KYS5pbmRleCl7Zm9yKHZhciBjPWEuYXR0cmlidXRlcy5wb3NpdGlvbixlPVswXSxnPTEscj1jLmNvdW50O2c8cjtnKyspb2suZnJvbUJ1ZmZlckF0dHJpYnV0ZShjLGctMSkscGsuZnJvbUJ1ZmZlckF0dHJpYnV0ZShjLGcpLGVbZ109ZVtnLTFdLGVbZ10rPW9rLmRpc3RhbmNlVG8ocGspO2EuYWRkQXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBjYShlLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZS5jb21wdXRlTGluZURpc3RhbmNlcygpOiBDb21wdXRhdGlvbiBvbmx5IHBvc3NpYmxlIHdpdGggbm9uLWluZGV4ZWQgQnVmZmVyR2VvbWV0cnkuIik7ZWxzZSBpZihhLmlzR2VvbWV0cnkpZm9yKGM9YS52ZXJ0aWNlcyxlPWEubGluZURpc3RhbmNlcyxlWzBdPTAsZz0xLHI9Yy5sZW5ndGg7ZzxyO2crKyllW2ddPWVbZy0xXSxlW2ddKz1jW2ctMV0uZGlzdGFuY2VUbyhjW2ddKTtyZXR1cm4gdGhpc30scmF5Y2FzdDpmdW5jdGlvbihhLGMpe3ZhciBlPWEubGluZVByZWNpc2lvbiwKZz10aGlzLmdlb21ldHJ5LHI9dGhpcy5tYXRyaXhXb3JsZDtudWxsPT09Zy5ib3VuZGluZ1NwaGVyZSYmZy5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtvZy5jb3B5KGcuYm91bmRpbmdTcGhlcmUpO29nLmFwcGx5TWF0cml4NChyKTtvZy5yYWRpdXMrPWU7aWYoITEhPT1hLnJheS5pbnRlcnNlY3RzU3BoZXJlKG9nKSl7cWsuZ2V0SW52ZXJzZShyKTt0aC5jb3B5KGEucmF5KS5hcHBseU1hdHJpeDQocWspO2UvPSh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMztlKj1lO3ZhciB2PW5ldyBrLHo9bmV3IGs7cj1uZXcgazt2YXIgRT1uZXcgayxHPXRoaXMmJnRoaXMuaXNMaW5lU2VnbWVudHM/MjoxO2lmKGcuaXNCdWZmZXJHZW9tZXRyeSl7dmFyIEo9Zy5pbmRleCxQPWcuYXR0cmlidXRlcy5wb3NpdGlvbi5hcnJheTtpZihudWxsIT09Sil7Sj1KLmFycmF5O2c9MDtmb3IodmFyIFI9Si5sZW5ndGgtMTtnPFI7Zys9Ryl7dmFyIFM9SltnKzFdO3YuZnJvbUFycmF5KFAsCjMqSltnXSk7ei5mcm9tQXJyYXkoUCwzKlMpO1M9dGguZGlzdGFuY2VTcVRvU2VnbWVudCh2LHosRSxyKTtTPmV8fChFLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxTPWEucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEUpLFM8YS5uZWFyfHxTPmEuZmFyfHxjLnB1c2goe2Rpc3RhbmNlOlMscG9pbnQ6ci5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDpnLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pKX19ZWxzZSBmb3IoZz0wLFI9UC5sZW5ndGgvMy0xO2c8UjtnKz1HKXYuZnJvbUFycmF5KFAsMypnKSx6LmZyb21BcnJheShQLDMqZyszKSxTPXRoLmRpc3RhbmNlU3FUb1NlZ21lbnQodix6LEUsciksUz5lfHwoRS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksUz1hLnJheS5vcmlnaW4uZGlzdGFuY2VUbyhFKSxTPGEubmVhcnx8Uz5hLmZhcnx8Yy5wdXNoKHtkaXN0YW5jZTpTLHBvaW50OnIuY2xvbmUoKS5hcHBseU1hdHJpeDQodGhpcy5tYXRyaXhXb3JsZCksCmluZGV4OmcsZmFjZTpudWxsLGZhY2VJbmRleDpudWxsLG9iamVjdDp0aGlzfSkpfWVsc2UgaWYoZy5pc0dlb21ldHJ5KWZvcih2PWcudmVydGljZXMsej12Lmxlbmd0aCxnPTA7Zzx6LTE7Zys9RylTPXRoLmRpc3RhbmNlU3FUb1NlZ21lbnQodltnXSx2W2crMV0sRSxyKSxTPmV8fChFLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxTPWEucmF5Lm9yaWdpbi5kaXN0YW5jZVRvKEUpLFM8YS5uZWFyfHxTPmEuZmFyfHxjLnB1c2goe2Rpc3RhbmNlOlMscG9pbnQ6ci5jbG9uZSgpLmFwcGx5TWF0cml4NCh0aGlzLm1hdHJpeFdvcmxkKSxpbmRleDpnLGZhY2U6bnVsbCxmYWNlSW5kZXg6bnVsbCxvYmplY3Q6dGhpc30pKX19LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuZ2VvbWV0cnksdGhpcy5tYXRlcmlhbCkpLmNvcHkodGhpcyl9fSk7dmFyIHVoPW5ldyBrLHZoPW5ldyBrO0liLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVmIucHJvdG90eXBlKSwKe2NvbnN0cnVjdG9yOkliLGlzTGluZVNlZ21lbnRzOiEwLGNvbXB1dGVMaW5lRGlzdGFuY2VzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZW9tZXRyeTtpZihhLmlzQnVmZmVyR2VvbWV0cnkpaWYobnVsbD09PWEuaW5kZXgpe2Zvcih2YXIgYz1hLmF0dHJpYnV0ZXMucG9zaXRpb24sZT1bXSxnPTAscj1jLmNvdW50O2c8cjtnKz0yKXVoLmZyb21CdWZmZXJBdHRyaWJ1dGUoYyxnKSx2aC5mcm9tQnVmZmVyQXR0cmlidXRlKGMsZysxKSxlW2ddPTA9PT1nPzA6ZVtnLTFdLGVbZysxXT1lW2ddK3VoLmRpc3RhbmNlVG8odmgpO2EuYWRkQXR0cmlidXRlKCJsaW5lRGlzdGFuY2UiLG5ldyBjYShlLDEpKX1lbHNlIGNvbnNvbGUud2FybigiVEhSRUUuTGluZVNlZ21lbnRzLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCk6IENvbXB1dGF0aW9uIG9ubHkgcG9zc2libGUgd2l0aCBub24taW5kZXhlZCBCdWZmZXJHZW9tZXRyeS4iKTtlbHNlIGlmKGEuaXNHZW9tZXRyeSlmb3IoYz1hLnZlcnRpY2VzLGU9CmEubGluZURpc3RhbmNlcyxnPTAscj1jLmxlbmd0aDtnPHI7Zys9Mil1aC5jb3B5KGNbZ10pLHZoLmNvcHkoY1tnKzFdKSxlW2ddPTA9PT1nPzA6ZVtnLTFdLGVbZysxXT1lW2ddK3VoLmRpc3RhbmNlVG8odmgpO3JldHVybiB0aGlzfX0pO0RnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVmIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6RGcsaXNMaW5lTG9vcDohMH0pO0FjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE0ucHJvdG90eXBlKTtBYy5wcm90b3R5cGUuY29uc3RydWN0b3I9QWM7QWMucHJvdG90eXBlLmlzUG9pbnRzTWF0ZXJpYWw9ITA7QWMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7TS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMubWFwPWEubWFwO3RoaXMuc2l6ZT1hLnNpemU7dGhpcy5zaXplQXR0ZW51YXRpb249YS5zaXplQXR0ZW51YXRpb247dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7CnJldHVybiB0aGlzfTt2YXIgcms9bmV3IHEsV2g9bmV3IEQscGc9bmV3IEYsd2g9bmV3IGs7Q2UucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShBLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkNlLGlzUG9pbnRzOiEwLHJheWNhc3Q6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmdlb21ldHJ5LGc9dGhpcy5tYXRyaXhXb3JsZCxyPWEucGFyYW1zLlBvaW50cy50aHJlc2hvbGQ7bnVsbD09PWUuYm91bmRpbmdTcGhlcmUmJmUuY29tcHV0ZUJvdW5kaW5nU3BoZXJlKCk7cGcuY29weShlLmJvdW5kaW5nU3BoZXJlKTtwZy5hcHBseU1hdHJpeDQoZyk7cGcucmFkaXVzKz1yO2lmKCExIT09YS5yYXkuaW50ZXJzZWN0c1NwaGVyZShwZykpaWYocmsuZ2V0SW52ZXJzZShnKSxXaC5jb3B5KGEucmF5KS5hcHBseU1hdHJpeDQocmspLHIvPSh0aGlzLnNjYWxlLngrdGhpcy5zY2FsZS55K3RoaXMuc2NhbGUueikvMyxyKj1yLGUuaXNCdWZmZXJHZW9tZXRyeSl7dmFyIHY9ZS5pbmRleDsKZT1lLmF0dHJpYnV0ZXMucG9zaXRpb24uYXJyYXk7aWYobnVsbCE9PXYpe3ZhciB6PXYuYXJyYXk7dj0wO2Zvcih2YXIgRT16Lmxlbmd0aDt2PEU7disrKXt2YXIgRz16W3ZdO3doLmZyb21BcnJheShlLDMqRyk7Vmgod2gsRyxyLGcsYSxjLHRoaXMpfX1lbHNlIGZvcih2PTAsej1lLmxlbmd0aC8zO3Y8ejt2Kyspd2guZnJvbUFycmF5KGUsMyp2KSxWaCh3aCx2LHIsZyxhLGMsdGhpcyl9ZWxzZSBmb3IoZT1lLnZlcnRpY2VzLHY9MCx6PWUubGVuZ3RoO3Y8ejt2KyspVmgoZVt2XSx2LHIsZyxhLGMsdGhpcyl9LHVwZGF0ZU1vcnBoVGFyZ2V0czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2VvbWV0cnk7aWYoYS5pc0J1ZmZlckdlb21ldHJ5KXthPWEubW9ycGhBdHRyaWJ1dGVzO3ZhciBjPU9iamVjdC5rZXlzKGEpO2lmKDA8Yy5sZW5ndGgpe3ZhciBlPWFbY1swXV07aWYodm9pZCAwIT09ZSlmb3IodGhpcy5tb3JwaFRhcmdldEluZmx1ZW5jZXM9W10sdGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnk9Cnt9LGE9MCxjPWUubGVuZ3RoO2E8YzthKyspe3ZhciBnPWVbYV0ubmFtZXx8U3RyaW5nKGEpO3RoaXMubW9ycGhUYXJnZXRJbmZsdWVuY2VzLnB1c2goMCk7dGhpcy5tb3JwaFRhcmdldERpY3Rpb25hcnlbZ109YX19fWVsc2UgYT1hLm1vcnBoVGFyZ2V0cyx2b2lkIDAhPT1hJiYwPGEubGVuZ3RoJiZjb25zb2xlLmVycm9yKCJUSFJFRS5Qb2ludHMudXBkYXRlTW9ycGhUYXJnZXRzKCkgZG9lcyBub3Qgc3VwcG9ydCBUSFJFRS5HZW9tZXRyeS4gVXNlIFRIUkVFLkJ1ZmZlckdlb21ldHJ5IGluc3RlYWQuIil9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMuZ2VvbWV0cnksdGhpcy5tYXRlcmlhbCkpLmNvcHkodGhpcyl9fSk7WGgucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShsLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlhoLGlzVmlkZW9UZXh0dXJlOiEwLHVwZGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuaW1hZ2U7YS5yZWFkeVN0YXRlPj0KYS5IQVZFX0NVUlJFTlRfREFUQSYmKHRoaXMubmVlZHNVcGRhdGU9ITApfX0pO0RlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtEZS5wcm90b3R5cGUuY29uc3RydWN0b3I9RGU7RGUucHJvdG90eXBlLmlzQ29tcHJlc3NlZFRleHR1cmU9ITA7Q2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobC5wcm90b3R5cGUpO0NmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1DZjtDZi5wcm90b3R5cGUuaXNDYW52YXNUZXh0dXJlPSEwO0RmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGwucHJvdG90eXBlKTtEZi5wcm90b3R5cGUuY29uc3RydWN0b3I9RGY7RGYucHJvdG90eXBlLmlzRGVwdGhUZXh0dXJlPSEwO0VlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7RWUucHJvdG90eXBlLmNvbnN0cnVjdG9yPUVlO0VmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHlhLnByb3RvdHlwZSk7RWYucHJvdG90eXBlLmNvbnN0cnVjdG9yPUVmO0ZlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7CkZlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GZTtGZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO0ZmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GZjtqYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO2pjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qYztHZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO0dmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HZjtHZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqYy5wcm90b3R5cGUpO0dlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HZTtIZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO0hmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1IZjtSZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShqYy5wcm90b3R5cGUpO1JkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SZDtJZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO0lmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KSWY7SGUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoamMucHJvdG90eXBlKTtIZS5wcm90b3R5cGUuY29uc3RydWN0b3I9SGU7SmYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeWEucHJvdG90eXBlKTtKZi5wcm90b3R5cGUuY29uc3RydWN0b3I9SmY7SWUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoamMucHJvdG90eXBlKTtJZS5wcm90b3R5cGUuY29uc3RydWN0b3I9SWU7S2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeWEucHJvdG90eXBlKTtLZi5wcm90b3R5cGUuY29uc3RydWN0b3I9S2Y7U2QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodmEucHJvdG90eXBlKTtTZC5wcm90b3R5cGUuY29uc3RydWN0b3I9U2Q7U2QucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPXZhLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnBhdGg9dGhpcy5wYXJhbWV0ZXJzLnBhdGgudG9KU09OKCk7cmV0dXJuIGF9O0xmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHlhLnByb3RvdHlwZSk7CkxmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1MZjtKZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO0plLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1KZTtNZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO01mLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NZjtLZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO0tlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1LZTt2YXIgSm09e3RyaWFuZ3VsYXRlOmZ1bmN0aW9uKGEsYyxlKXtlPWV8fDI7dmFyIGc9YyYmYy5sZW5ndGgscj1nP2NbMF0qZTphLmxlbmd0aCx2PUdqKGEsMCxyLGUsITApLHo9W107aWYoIXZ8fHYubmV4dD09PXYucHJldilyZXR1cm4gejtnJiYodj1kbShhLGMsdixlKSk7aWYoYS5sZW5ndGg+ODAqZSl7dmFyIEU9Yz1hWzBdO3ZhciBHPWc9YVsxXTtmb3IodmFyIEo9ZTtKPHI7Sis9ZSl7dmFyIFA9YVtKXTt2YXIgUj1hW0orMV07UDxFJiYoRT1QKTtSPEcmJihHPVIpOwpQPmMmJihjPVApO1I+ZyYmKGc9Uil9UD1NYXRoLm1heChjLUUsZy1HKTtQPTAhPT1QPzEvUDowfVBmKHYseixlLEUsRyxQKTtyZXR1cm4gen19LGVkPXthcmVhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz1hLmxlbmd0aCxlPTAsZz1jLTEscj0wO3I8YztnPXIrKyllKz1hW2ddLngqYVtyXS55LWFbcl0ueCphW2ddLnk7cmV0dXJuLjUqZX0saXNDbG9ja1dpc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIDA+ZWQuYXJlYShhKX0sdHJpYW5ndWxhdGVTaGFwZTpmdW5jdGlvbihhLGMpe3ZhciBlPVtdLGc9W10scj1bXTtLaihhKTtMaihlLGEpO3ZhciB2PWEubGVuZ3RoO2MuZm9yRWFjaChLaik7Zm9yKGE9MDthPGMubGVuZ3RoO2ErKylnLnB1c2godiksdis9Y1thXS5sZW5ndGgsTGooZSxjW2FdKTtjPUptLnRyaWFuZ3VsYXRlKGUsZyk7Zm9yKGE9MDthPGMubGVuZ3RoO2ErPTMpci5wdXNoKGMuc2xpY2UoYSxhKzMpKTtyZXR1cm4gcn19O1VkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHlhLnByb3RvdHlwZSk7ClVkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1VZDtVZC5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9eWEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiBNaih0aGlzLnBhcmFtZXRlcnMuc2hhcGVzLHRoaXMucGFyYW1ldGVycy5vcHRpb25zLGEpfTtSYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO1JjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SYztSYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9dmEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO3JldHVybiBNaih0aGlzLnBhcmFtZXRlcnMuc2hhcGVzLHRoaXMucGFyYW1ldGVycy5vcHRpb25zLGEpfTt2YXIgbG09e2dlbmVyYXRlVG9wVVY6ZnVuY3Rpb24oYSxjLGUsZyxyKXthPWNbMypnXTtnPWNbMypnKzFdO3ZhciB2PWNbMypyXTtyPWNbMypyKzFdO3JldHVybltuZXcgZihjWzMqZV0sY1szKmUrMV0pLG5ldyBmKGEsZyksbmV3IGYodixyKV19LGdlbmVyYXRlU2lkZVdhbGxVVjpmdW5jdGlvbihhLApjLGUsZyxyLHYpe2E9Y1szKmVdO3ZhciB6PWNbMyplKzFdO2U9Y1szKmUrMl07dmFyIEU9Y1szKmddLEc9Y1szKmcrMV07Zz1jWzMqZysyXTt2YXIgSj1jWzMqcl0sUD1jWzMqcisxXTtyPWNbMypyKzJdO3ZhciBSPWNbMyp2XSxTPWNbMyp2KzFdO2M9Y1szKnYrMl07cmV0dXJuLjAxPk1hdGguYWJzKHotRyk/W25ldyBmKGEsMS1lKSxuZXcgZihFLDEtZyksbmV3IGYoSiwxLXIpLG5ldyBmKFIsMS1jKV06W25ldyBmKHosMS1lKSxuZXcgZihHLDEtZyksbmV3IGYoUCwxLXIpLG5ldyBmKFMsMS1jKV19fTtSZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO1JmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1SZjtNZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShSYy5wcm90b3R5cGUpO01lLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1NZTtTZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO1NmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TZjtCZC5wcm90b3R5cGU9Ck9iamVjdC5jcmVhdGUodmEucHJvdG90eXBlKTtCZC5wcm90b3R5cGUuY29uc3RydWN0b3I9QmQ7VGYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeWEucHJvdG90eXBlKTtUZi5wcm90b3R5cGUuY29uc3RydWN0b3I9VGY7TmUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodmEucHJvdG90eXBlKTtOZS5wcm90b3R5cGUuY29uc3RydWN0b3I9TmU7VWYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeWEucHJvdG90eXBlKTtVZi5wcm90b3R5cGUuY29uc3RydWN0b3I9VWY7T2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodmEucHJvdG90eXBlKTtPZS5wcm90b3R5cGUuY29uc3RydWN0b3I9T2U7VmQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoeWEucHJvdG90eXBlKTtWZC5wcm90b3R5cGUuY29uc3RydWN0b3I9VmQ7VmQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPXlhLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTtyZXR1cm4gTmoodGhpcy5wYXJhbWV0ZXJzLnNoYXBlcywKYSl9O1dkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7V2QucHJvdG90eXBlLmNvbnN0cnVjdG9yPVdkO1dkLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXt2YXIgYT12YS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7cmV0dXJuIE5qKHRoaXMucGFyYW1ldGVycy5zaGFwZXMsYSl9O1BlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7UGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPVBlO1hkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHlhLnByb3RvdHlwZSk7WGQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVhkO2ZkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHZhLnByb3RvdHlwZSk7ZmQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWZkO1ZmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFhkLnByb3RvdHlwZSk7VmYucHJvdG90eXBlLmNvbnN0cnVjdG9yPVZmO1dmLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGZkLnByb3RvdHlwZSk7V2YucHJvdG90eXBlLmNvbnN0cnVjdG9yPQpXZjtYZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh5YS5wcm90b3R5cGUpO1hmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1YZjtRZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpO1FlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1RZTt2YXIgZ2M9T2JqZWN0LmZyZWV6ZSh7V2lyZWZyYW1lR2VvbWV0cnk6RWUsUGFyYW1ldHJpY0dlb21ldHJ5OkVmLFBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeTpGZSxUZXRyYWhlZHJvbkdlb21ldHJ5OkdmLFRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnk6R2UsT2N0YWhlZHJvbkdlb21ldHJ5OkhmLE9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeTpSZCxJY29zYWhlZHJvbkdlb21ldHJ5OklmLEljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk6SGUsRG9kZWNhaGVkcm9uR2VvbWV0cnk6SmYsRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnk6SWUsUG9seWhlZHJvbkdlb21ldHJ5OkZmLFBvbHloZWRyb25CdWZmZXJHZW9tZXRyeTpqYyxUdWJlR2VvbWV0cnk6S2YsClR1YmVCdWZmZXJHZW9tZXRyeTpTZCxUb3J1c0tub3RHZW9tZXRyeTpMZixUb3J1c0tub3RCdWZmZXJHZW9tZXRyeTpKZSxUb3J1c0dlb21ldHJ5Ok1mLFRvcnVzQnVmZmVyR2VvbWV0cnk6S2UsVGV4dEdlb21ldHJ5OlJmLFRleHRCdWZmZXJHZW9tZXRyeTpNZSxTcGhlcmVHZW9tZXRyeTpTZixTcGhlcmVCdWZmZXJHZW9tZXRyeTpCZCxSaW5nR2VvbWV0cnk6VGYsUmluZ0J1ZmZlckdlb21ldHJ5Ok5lLFBsYW5lR2VvbWV0cnk6cmQsUGxhbmVCdWZmZXJHZW9tZXRyeTpMYyxMYXRoZUdlb21ldHJ5OlVmLExhdGhlQnVmZmVyR2VvbWV0cnk6T2UsU2hhcGVHZW9tZXRyeTpWZCxTaGFwZUJ1ZmZlckdlb21ldHJ5OldkLEV4dHJ1ZGVHZW9tZXRyeTpVZCxFeHRydWRlQnVmZmVyR2VvbWV0cnk6UmMsRWRnZXNHZW9tZXRyeTpQZSxDb25lR2VvbWV0cnk6VmYsQ29uZUJ1ZmZlckdlb21ldHJ5OldmLEN5bGluZGVyR2VvbWV0cnk6WGQsQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeTpmZCxDaXJjbGVHZW9tZXRyeTpYZiwKQ2lyY2xlQnVmZmVyR2VvbWV0cnk6UWUsQm94R2VvbWV0cnk6U2EsQm94QnVmZmVyR2VvbWV0cnk6WGF9KTtZZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7WWQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVlkO1lkLnByb3RvdHlwZS5pc1NoYWRvd01hdGVyaWFsPSEwO1lkLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuY29sb3IuY29weShhLmNvbG9yKTtyZXR1cm4gdGhpc307UmUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUocWIucHJvdG90eXBlKTtSZS5wcm90b3R5cGUuY29uc3RydWN0b3I9UmU7UmUucHJvdG90eXBlLmlzUmF3U2hhZGVyTWF0ZXJpYWw9ITA7U2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTS5wcm90b3R5cGUpO1NjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TYztTYy5wcm90b3R5cGUuaXNNZXNoU3RhbmRhcmRNYXRlcmlhbD0hMDtTYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtNLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcywKYSk7dGhpcy5kZWZpbmVzPXtTVEFOREFSRDoiIn07dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMucm91Z2huZXNzPWEucm91Z2huZXNzO3RoaXMubWV0YWxuZXNzPWEubWV0YWxuZXNzO3RoaXMubWFwPWEubWFwO3RoaXMubGlnaHRNYXA9YS5saWdodE1hcDt0aGlzLmxpZ2h0TWFwSW50ZW5zaXR5PWEubGlnaHRNYXBJbnRlbnNpdHk7dGhpcy5hb01hcD1hLmFvTWFwO3RoaXMuYW9NYXBJbnRlbnNpdHk9YS5hb01hcEludGVuc2l0eTt0aGlzLmVtaXNzaXZlLmNvcHkoYS5lbWlzc2l2ZSk7dGhpcy5lbWlzc2l2ZU1hcD1hLmVtaXNzaXZlTWFwO3RoaXMuZW1pc3NpdmVJbnRlbnNpdHk9YS5lbWlzc2l2ZUludGVuc2l0eTt0aGlzLmJ1bXBNYXA9YS5idW1wTWFwO3RoaXMuYnVtcFNjYWxlPWEuYnVtcFNjYWxlO3RoaXMubm9ybWFsTWFwPWEubm9ybWFsTWFwO3RoaXMubm9ybWFsTWFwVHlwZT1hLm5vcm1hbE1hcFR5cGU7dGhpcy5ub3JtYWxTY2FsZS5jb3B5KGEubm9ybWFsU2NhbGUpOwp0aGlzLmRpc3BsYWNlbWVudE1hcD1hLmRpc3BsYWNlbWVudE1hcDt0aGlzLmRpc3BsYWNlbWVudFNjYWxlPWEuZGlzcGxhY2VtZW50U2NhbGU7dGhpcy5kaXNwbGFjZW1lbnRCaWFzPWEuZGlzcGxhY2VtZW50Qmlhczt0aGlzLnJvdWdobmVzc01hcD1hLnJvdWdobmVzc01hcDt0aGlzLm1ldGFsbmVzc01hcD1hLm1ldGFsbmVzc01hcDt0aGlzLmFscGhhTWFwPWEuYWxwaGFNYXA7dGhpcy5lbnZNYXA9YS5lbnZNYXA7dGhpcy5lbnZNYXBJbnRlbnNpdHk9YS5lbnZNYXBJbnRlbnNpdHk7dGhpcy5yZWZyYWN0aW9uUmF0aW89YS5yZWZyYWN0aW9uUmF0aW87dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7dGhpcy53aXJlZnJhbWVMaW5lY2FwPWEud2lyZWZyYW1lTGluZWNhcDt0aGlzLndpcmVmcmFtZUxpbmVqb2luPWEud2lyZWZyYW1lTGluZWpvaW47dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPQphLm1vcnBoVGFyZ2V0czt0aGlzLm1vcnBoTm9ybWFscz1hLm1vcnBoTm9ybWFscztyZXR1cm4gdGhpc307WmQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoU2MucHJvdG90eXBlKTtaZC5wcm90b3R5cGUuY29uc3RydWN0b3I9WmQ7WmQucHJvdG90eXBlLmlzTWVzaFBoeXNpY2FsTWF0ZXJpYWw9ITA7WmQucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7U2MucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZGVmaW5lcz17U1RBTkRBUkQ6IiIsUEhZU0lDQUw6IiJ9O3RoaXMucmVmbGVjdGl2aXR5PWEucmVmbGVjdGl2aXR5O3RoaXMuY2xlYXJjb2F0PWEuY2xlYXJjb2F0O3RoaXMuY2xlYXJjb2F0Um91Z2huZXNzPWEuY2xlYXJjb2F0Um91Z2huZXNzO3RoaXMuc2hlZW49YS5zaGVlbj8odGhpcy5zaGVlbnx8bmV3IEkpLmNvcHkoYS5zaGVlbik6bnVsbDt0aGlzLmNsZWFyY29hdE5vcm1hbE1hcD1hLmNsZWFyY29hdE5vcm1hbE1hcDt0aGlzLmNsZWFyY29hdE5vcm1hbFNjYWxlLmNvcHkoYS5jbGVhcmNvYXROb3JtYWxTY2FsZSk7CnRoaXMudHJhbnNwYXJlbmN5PWEudHJhbnNwYXJlbmN5O3JldHVybiB0aGlzfTtCYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7QmMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUJjO0JjLnByb3RvdHlwZS5pc01lc2hQaG9uZ01hdGVyaWFsPSEwO0JjLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe00ucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLnNwZWN1bGFyLmNvcHkoYS5zcGVjdWxhcik7dGhpcy5zaGluaW5lc3M9YS5zaGluaW5lc3M7dGhpcy5tYXA9YS5tYXA7dGhpcy5saWdodE1hcD1hLmxpZ2h0TWFwO3RoaXMubGlnaHRNYXBJbnRlbnNpdHk9YS5saWdodE1hcEludGVuc2l0eTt0aGlzLmFvTWFwPWEuYW9NYXA7dGhpcy5hb01hcEludGVuc2l0eT1hLmFvTWFwSW50ZW5zaXR5O3RoaXMuZW1pc3NpdmUuY29weShhLmVtaXNzaXZlKTt0aGlzLmVtaXNzaXZlTWFwPWEuZW1pc3NpdmVNYXA7dGhpcy5lbWlzc2l2ZUludGVuc2l0eT0KYS5lbWlzc2l2ZUludGVuc2l0eTt0aGlzLmJ1bXBNYXA9YS5idW1wTWFwO3RoaXMuYnVtcFNjYWxlPWEuYnVtcFNjYWxlO3RoaXMubm9ybWFsTWFwPWEubm9ybWFsTWFwO3RoaXMubm9ybWFsTWFwVHlwZT1hLm5vcm1hbE1hcFR5cGU7dGhpcy5ub3JtYWxTY2FsZS5jb3B5KGEubm9ybWFsU2NhbGUpO3RoaXMuZGlzcGxhY2VtZW50TWFwPWEuZGlzcGxhY2VtZW50TWFwO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9YS5kaXNwbGFjZW1lbnRTY2FsZTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9YS5kaXNwbGFjZW1lbnRCaWFzO3RoaXMuc3BlY3VsYXJNYXA9YS5zcGVjdWxhck1hcDt0aGlzLmFscGhhTWFwPWEuYWxwaGFNYXA7dGhpcy5lbnZNYXA9YS5lbnZNYXA7dGhpcy5jb21iaW5lPWEuY29tYmluZTt0aGlzLnJlZmxlY3Rpdml0eT1hLnJlZmxlY3Rpdml0eTt0aGlzLnJlZnJhY3Rpb25SYXRpbz1hLnJlZnJhY3Rpb25SYXRpbzt0aGlzLndpcmVmcmFtZT1hLndpcmVmcmFtZTt0aGlzLndpcmVmcmFtZUxpbmV3aWR0aD0KYS53aXJlZnJhbWVMaW5ld2lkdGg7dGhpcy53aXJlZnJhbWVMaW5lY2FwPWEud2lyZWZyYW1lTGluZWNhcDt0aGlzLndpcmVmcmFtZUxpbmVqb2luPWEud2lyZWZyYW1lTGluZWpvaW47dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzO3RoaXMubW9ycGhOb3JtYWxzPWEubW9ycGhOb3JtYWxzO3JldHVybiB0aGlzfTskZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShCYy5wcm90b3R5cGUpOyRkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0kZDskZC5wcm90b3R5cGUuaXNNZXNoVG9vbk1hdGVyaWFsPSEwOyRkLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe0JjLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmdyYWRpZW50TWFwPWEuZ3JhZGllbnRNYXA7cmV0dXJuIHRoaXN9O2FlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE0ucHJvdG90eXBlKTthZS5wcm90b3R5cGUuY29uc3RydWN0b3I9YWU7YWUucHJvdG90eXBlLmlzTWVzaE5vcm1hbE1hdGVyaWFsPQohMDthZS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtNLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmJ1bXBNYXA9YS5idW1wTWFwO3RoaXMuYnVtcFNjYWxlPWEuYnVtcFNjYWxlO3RoaXMubm9ybWFsTWFwPWEubm9ybWFsTWFwO3RoaXMubm9ybWFsTWFwVHlwZT1hLm5vcm1hbE1hcFR5cGU7dGhpcy5ub3JtYWxTY2FsZS5jb3B5KGEubm9ybWFsU2NhbGUpO3RoaXMuZGlzcGxhY2VtZW50TWFwPWEuZGlzcGxhY2VtZW50TWFwO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9YS5kaXNwbGFjZW1lbnRTY2FsZTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9YS5kaXNwbGFjZW1lbnRCaWFzO3RoaXMud2lyZWZyYW1lPWEud2lyZWZyYW1lO3RoaXMud2lyZWZyYW1lTGluZXdpZHRoPWEud2lyZWZyYW1lTGluZXdpZHRoO3RoaXMuc2tpbm5pbmc9YS5za2lubmluZzt0aGlzLm1vcnBoVGFyZ2V0cz1hLm1vcnBoVGFyZ2V0czt0aGlzLm1vcnBoTm9ybWFscz1hLm1vcnBoTm9ybWFscztyZXR1cm4gdGhpc307CmJlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE0ucHJvdG90eXBlKTtiZS5wcm90b3R5cGUuY29uc3RydWN0b3I9YmU7YmUucHJvdG90eXBlLmlzTWVzaExhbWJlcnRNYXRlcmlhbD0hMDtiZS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtNLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmNvbG9yLmNvcHkoYS5jb2xvcik7dGhpcy5tYXA9YS5tYXA7dGhpcy5saWdodE1hcD1hLmxpZ2h0TWFwO3RoaXMubGlnaHRNYXBJbnRlbnNpdHk9YS5saWdodE1hcEludGVuc2l0eTt0aGlzLmFvTWFwPWEuYW9NYXA7dGhpcy5hb01hcEludGVuc2l0eT1hLmFvTWFwSW50ZW5zaXR5O3RoaXMuZW1pc3NpdmUuY29weShhLmVtaXNzaXZlKTt0aGlzLmVtaXNzaXZlTWFwPWEuZW1pc3NpdmVNYXA7dGhpcy5lbWlzc2l2ZUludGVuc2l0eT1hLmVtaXNzaXZlSW50ZW5zaXR5O3RoaXMuc3BlY3VsYXJNYXA9YS5zcGVjdWxhck1hcDt0aGlzLmFscGhhTWFwPWEuYWxwaGFNYXA7dGhpcy5lbnZNYXA9CmEuZW52TWFwO3RoaXMuY29tYmluZT1hLmNvbWJpbmU7dGhpcy5yZWZsZWN0aXZpdHk9YS5yZWZsZWN0aXZpdHk7dGhpcy5yZWZyYWN0aW9uUmF0aW89YS5yZWZyYWN0aW9uUmF0aW87dGhpcy53aXJlZnJhbWU9YS53aXJlZnJhbWU7dGhpcy53aXJlZnJhbWVMaW5ld2lkdGg9YS53aXJlZnJhbWVMaW5ld2lkdGg7dGhpcy53aXJlZnJhbWVMaW5lY2FwPWEud2lyZWZyYW1lTGluZWNhcDt0aGlzLndpcmVmcmFtZUxpbmVqb2luPWEud2lyZWZyYW1lTGluZWpvaW47dGhpcy5za2lubmluZz1hLnNraW5uaW5nO3RoaXMubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzO3RoaXMubW9ycGhOb3JtYWxzPWEubW9ycGhOb3JtYWxzO3JldHVybiB0aGlzfTtjZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShNLnByb3RvdHlwZSk7Y2UucHJvdG90eXBlLmNvbnN0cnVjdG9yPWNlO2NlLnByb3RvdHlwZS5pc01lc2hNYXRjYXBNYXRlcmlhbD0hMDtjZS5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtNLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcywKYSk7dGhpcy5kZWZpbmVzPXtNQVRDQVA6IiJ9O3RoaXMuY29sb3IuY29weShhLmNvbG9yKTt0aGlzLm1hdGNhcD1hLm1hdGNhcDt0aGlzLm1hcD1hLm1hcDt0aGlzLmJ1bXBNYXA9YS5idW1wTWFwO3RoaXMuYnVtcFNjYWxlPWEuYnVtcFNjYWxlO3RoaXMubm9ybWFsTWFwPWEubm9ybWFsTWFwO3RoaXMubm9ybWFsTWFwVHlwZT1hLm5vcm1hbE1hcFR5cGU7dGhpcy5ub3JtYWxTY2FsZS5jb3B5KGEubm9ybWFsU2NhbGUpO3RoaXMuZGlzcGxhY2VtZW50TWFwPWEuZGlzcGxhY2VtZW50TWFwO3RoaXMuZGlzcGxhY2VtZW50U2NhbGU9YS5kaXNwbGFjZW1lbnRTY2FsZTt0aGlzLmRpc3BsYWNlbWVudEJpYXM9YS5kaXNwbGFjZW1lbnRCaWFzO3RoaXMuYWxwaGFNYXA9YS5hbHBoYU1hcDt0aGlzLnNraW5uaW5nPWEuc2tpbm5pbmc7dGhpcy5tb3JwaFRhcmdldHM9YS5tb3JwaFRhcmdldHM7dGhpcy5tb3JwaE5vcm1hbHM9YS5tb3JwaE5vcm1hbHM7cmV0dXJuIHRoaXN9O2RlLnByb3RvdHlwZT0KT2JqZWN0LmNyZWF0ZShGYi5wcm90b3R5cGUpO2RlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kZTtkZS5wcm90b3R5cGUuaXNMaW5lRGFzaGVkTWF0ZXJpYWw9ITA7ZGUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7RmIucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuc2NhbGU9YS5zY2FsZTt0aGlzLmRhc2hTaXplPWEuZGFzaFNpemU7dGhpcy5nYXBTaXplPWEuZ2FwU2l6ZTtyZXR1cm4gdGhpc307dmFyIEttPU9iamVjdC5mcmVlemUoe1NoYWRvd01hdGVyaWFsOllkLFNwcml0ZU1hdGVyaWFsOkFkLFJhd1NoYWRlck1hdGVyaWFsOlJlLFNoYWRlck1hdGVyaWFsOnFiLFBvaW50c01hdGVyaWFsOkFjLE1lc2hQaHlzaWNhbE1hdGVyaWFsOlpkLE1lc2hTdGFuZGFyZE1hdGVyaWFsOlNjLE1lc2hQaG9uZ01hdGVyaWFsOkJjLE1lc2hUb29uTWF0ZXJpYWw6JGQsTWVzaE5vcm1hbE1hdGVyaWFsOmFlLE1lc2hMYW1iZXJ0TWF0ZXJpYWw6YmUsTWVzaERlcHRoTWF0ZXJpYWw6dmQsCk1lc2hEaXN0YW5jZU1hdGVyaWFsOndkLE1lc2hCYXNpY01hdGVyaWFsOkwsTWVzaE1hdGNhcE1hdGVyaWFsOmNlLExpbmVEYXNoZWRNYXRlcmlhbDpkZSxMaW5lQmFzaWNNYXRlcmlhbDpGYixNYXRlcmlhbDpNfSksVGI9e2FycmF5U2xpY2U6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiBUYi5pc1R5cGVkQXJyYXkoYSk/bmV3IGEuY29uc3RydWN0b3IoYS5zdWJhcnJheShjLHZvaWQgMCE9PWU/ZTphLmxlbmd0aCkpOmEuc2xpY2UoYyxlKX0sY29udmVydEFycmF5OmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4hYXx8IWUmJmEuY29uc3RydWN0b3I9PT1jP2E6Im51bWJlciI9PT10eXBlb2YgYy5CWVRFU19QRVJfRUxFTUVOVD9uZXcgYyhhKTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhKX0saXNUeXBlZEFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkmJiEoYSBpbnN0YW5jZW9mIERhdGFWaWV3KX0sZ2V0S2V5ZnJhbWVPcmRlcjpmdW5jdGlvbihhKXtmb3IodmFyIGM9CmEubGVuZ3RoLGU9QXJyYXkoYyksZz0wO2chPT1jOysrZyllW2ddPWc7ZS5zb3J0KGZ1bmN0aW9uKHIsdil7cmV0dXJuIGFbcl0tYVt2XX0pO3JldHVybiBlfSxzb3J0ZWRBcnJheTpmdW5jdGlvbihhLGMsZSl7Zm9yKHZhciBnPWEubGVuZ3RoLHI9bmV3IGEuY29uc3RydWN0b3IoZyksdj0wLHo9MDt6IT09ZzsrK3YpZm9yKHZhciBFPWVbdl0qYyxHPTA7RyE9PWM7KytHKXJbeisrXT1hW0UrR107cmV0dXJuIHJ9LGZsYXR0ZW5KU09OOmZ1bmN0aW9uKGEsYyxlLGcpe2Zvcih2YXIgcj0xLHY9YVswXTt2b2lkIDAhPT12JiZ2b2lkIDA9PT12W2ddOyl2PWFbcisrXTtpZih2b2lkIDAhPT12KXt2YXIgej12W2ddO2lmKHZvaWQgMCE9PXopaWYoQXJyYXkuaXNBcnJheSh6KSl7ZG8gej12W2ddLHZvaWQgMCE9PXomJihjLnB1c2godi50aW1lKSxlLnB1c2guYXBwbHkoZSx6KSksdj1hW3IrK107d2hpbGUodm9pZCAwIT09dil9ZWxzZSBpZih2b2lkIDAhPT16LnRvQXJyYXkpe2RvIHo9dltnXSwKdm9pZCAwIT09eiYmKGMucHVzaCh2LnRpbWUpLHoudG9BcnJheShlLGUubGVuZ3RoKSksdj1hW3IrK107d2hpbGUodm9pZCAwIT09dil9ZWxzZXtkbyB6PXZbZ10sdm9pZCAwIT09eiYmKGMucHVzaCh2LnRpbWUpLGUucHVzaCh6KSksdj1hW3IrK107d2hpbGUodm9pZCAwIT09dil9fX19O09iamVjdC5hc3NpZ24ob2MucHJvdG90eXBlLHtldmFsdWF0ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnBhcmFtZXRlclBvc2l0aW9ucyxlPXRoaXMuX2NhY2hlZEluZGV4LGc9Y1tlXSxyPWNbZS0xXTthOntiOntjOntkOmlmKCEoYTxnKSl7Zm9yKHZhciB2PWUrMjs7KXtpZih2b2lkIDA9PT1nKXtpZihhPHIpYnJlYWsgZDt0aGlzLl9jYWNoZWRJbmRleD1lPWMubGVuZ3RoO3JldHVybiB0aGlzLmFmdGVyRW5kXyhlLTEsYSxyKX1pZihlPT09dilicmVhaztyPWc7Zz1jWysrZV07aWYoYTxnKWJyZWFrIGJ9Zz1jLmxlbmd0aDticmVhayBjfWlmKGE+PXIpYnJlYWsgYTtlbHNle3Y9Y1sxXTthPHYmJgooZT0yLHI9dik7Zm9yKHY9ZS0yOzspe2lmKHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCxhLGcpO2lmKGU9PT12KWJyZWFrO2c9cjtyPWNbLS1lLTFdO2lmKGE+PXIpYnJlYWsgYn1nPWU7ZT0wfX1mb3IoO2U8Zzspcj1lK2c+Pj4xLGE8Y1tyXT9nPXI6ZT1yKzE7Zz1jW2VdO3I9Y1tlLTFdO2lmKHZvaWQgMD09PXIpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PTAsdGhpcy5iZWZvcmVTdGFydF8oMCxhLGcpO2lmKHZvaWQgMD09PWcpcmV0dXJuIHRoaXMuX2NhY2hlZEluZGV4PWU9Yy5sZW5ndGgsdGhpcy5hZnRlckVuZF8oZS0xLHIsYSl9dGhpcy5fY2FjaGVkSW5kZXg9ZTt0aGlzLmludGVydmFsQ2hhbmdlZF8oZSxyLGcpfXJldHVybiB0aGlzLmludGVycG9sYXRlXyhlLHIsYSxnKX0sc2V0dGluZ3M6bnVsbCxEZWZhdWx0U2V0dGluZ3NfOnt9LGdldFNldHRpbmdzXzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldHRpbmdzfHwKdGhpcy5EZWZhdWx0U2V0dGluZ3NffSxjb3B5U2FtcGxlVmFsdWVfOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMucmVzdWx0QnVmZmVyLGU9dGhpcy5zYW1wbGVWYWx1ZXMsZz10aGlzLnZhbHVlU2l6ZTthKj1nO2Zvcih2YXIgcj0wO3IhPT1nOysrciljW3JdPWVbYStyXTtyZXR1cm4gY30saW50ZXJwb2xhdGVfOmZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImNhbGwgdG8gYWJzdHJhY3QgbWV0aG9kIik7fSxpbnRlcnZhbENoYW5nZWRfOmZ1bmN0aW9uKCl7fX0pO09iamVjdC5hc3NpZ24ob2MucHJvdG90eXBlLHtiZWZvcmVTdGFydF86b2MucHJvdG90eXBlLmNvcHlTYW1wbGVWYWx1ZV8sYWZ0ZXJFbmRfOm9jLnByb3RvdHlwZS5jb3B5U2FtcGxlVmFsdWVffSk7RWcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShvYy5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpFZyxEZWZhdWx0U2V0dGluZ3NfOntlbmRpbmdTdGFydDoyNDAwLGVuZGluZ0VuZDoyNDAwfSxpbnRlcnZhbENoYW5nZWRfOmZ1bmN0aW9uKGEsCmMsZSl7dmFyIGc9dGhpcy5wYXJhbWV0ZXJQb3NpdGlvbnMscj1hLTIsdj1hKzEsej1nW3JdLEU9Z1t2XTtpZih2b2lkIDA9PT16KXN3aXRjaCh0aGlzLmdldFNldHRpbmdzXygpLmVuZGluZ1N0YXJ0KXtjYXNlIDI0MDE6cj1hO3o9MipjLWU7YnJlYWs7Y2FzZSAyNDAyOnI9Zy5sZW5ndGgtMjt6PWMrZ1tyXS1nW3IrMV07YnJlYWs7ZGVmYXVsdDpyPWEsej1lfWlmKHZvaWQgMD09PUUpc3dpdGNoKHRoaXMuZ2V0U2V0dGluZ3NfKCkuZW5kaW5nRW5kKXtjYXNlIDI0MDE6dj1hO0U9MiplLWM7YnJlYWs7Y2FzZSAyNDAyOnY9MTtFPWUrZ1sxXS1nWzBdO2JyZWFrO2RlZmF1bHQ6dj1hLTEsRT1jfWE9LjUqKGUtYyk7Zz10aGlzLnZhbHVlU2l6ZTt0aGlzLl93ZWlnaHRQcmV2PWEvKGMteik7dGhpcy5fd2VpZ2h0TmV4dD1hLyhFLWUpO3RoaXMuX29mZnNldFByZXY9cipnO3RoaXMuX29mZnNldE5leHQ9dipnfSxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24oYSxjLGUsZyl7dmFyIHI9dGhpcy5yZXN1bHRCdWZmZXIsCnY9dGhpcy5zYW1wbGVWYWx1ZXMsej10aGlzLnZhbHVlU2l6ZTthKj16O3ZhciBFPWEteixHPXRoaXMuX29mZnNldFByZXYsSj10aGlzLl9vZmZzZXROZXh0LFA9dGhpcy5fd2VpZ2h0UHJldixSPXRoaXMuX3dlaWdodE5leHQsUz0oZS1jKS8oZy1jKTtlPVMqUztnPWUqUztjPS1QKmcrMipQKmUtUCpTO1A9KDErUCkqZysoLTEuNS0yKlApKmUrKC0uNStQKSpTKzE7Uz0oLTEtUikqZysoMS41K1IpKmUrLjUqUztSPVIqZy1SKmU7Zm9yKGU9MDtlIT09ejsrK2UpcltlXT1jKnZbRytlXStQKnZbRStlXStTKnZbYStlXStSKnZbSitlXTtyZXR1cm4gcn19KTtZZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG9jLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOllmLGludGVycG9sYXRlXzpmdW5jdGlvbihhLGMsZSxnKXt2YXIgcj10aGlzLnJlc3VsdEJ1ZmZlcix2PXRoaXMuc2FtcGxlVmFsdWVzLHo9dGhpcy52YWx1ZVNpemU7YSo9ejt2YXIgRT1hLXo7Yz0oZS1jKS8oZy0KYyk7ZT0xLWM7Zm9yKGc9MDtnIT09ejsrK2cpcltnXT12W0UrZ10qZSt2W2ErZ10qYztyZXR1cm4gcn19KTtGZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKG9jLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkZnLGludGVycG9sYXRlXzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb3B5U2FtcGxlVmFsdWVfKGEtMSl9fSk7T2JqZWN0LmFzc2lnbihYYix7dG9KU09OOmZ1bmN0aW9uKGEpe3ZhciBjPWEuY29uc3RydWN0b3I7aWYodm9pZCAwIT09Yy50b0pTT04pYz1jLnRvSlNPTihhKTtlbHNle2M9e25hbWU6YS5uYW1lLHRpbWVzOlRiLmNvbnZlcnRBcnJheShhLnRpbWVzLEFycmF5KSx2YWx1ZXM6VGIuY29udmVydEFycmF5KGEudmFsdWVzLEFycmF5KX07dmFyIGU9YS5nZXRJbnRlcnBvbGF0aW9uKCk7ZSE9PWEuRGVmYXVsdEludGVycG9sYXRpb24mJihjLmludGVycG9sYXRpb249ZSl9Yy50eXBlPWEuVmFsdWVUeXBlTmFtZTtyZXR1cm4gY319KTtPYmplY3QuYXNzaWduKFhiLnByb3RvdHlwZSwKe2NvbnN0cnVjdG9yOlhiLFRpbWVCdWZmZXJUeXBlOkZsb2F0MzJBcnJheSxWYWx1ZUJ1ZmZlclR5cGU6RmxvYXQzMkFycmF5LERlZmF1bHRJbnRlcnBvbGF0aW9uOjIzMDEsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBGZyh0aGlzLnRpbWVzLHRoaXMudmFsdWVzLHRoaXMuZ2V0VmFsdWVTaXplKCksYSl9LEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFlmKHRoaXMudGltZXMsdGhpcy52YWx1ZXMsdGhpcy5nZXRWYWx1ZVNpemUoKSxhKX0sSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgRWcodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLGEpfSxzZXRJbnRlcnBvbGF0aW9uOmZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDIzMDA6dmFyIGM9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2REaXNjcmV0ZTsKYnJlYWs7Y2FzZSAyMzAxOmM9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI7YnJlYWs7Y2FzZSAyMzAyOmM9dGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGh9aWYodm9pZCAwPT09Yyl7Yz0idW5zdXBwb3J0ZWQgaW50ZXJwb2xhdGlvbiBmb3IgIit0aGlzLlZhbHVlVHlwZU5hbWUrIiBrZXlmcmFtZSB0cmFjayBuYW1lZCAiK3RoaXMubmFtZTtpZih2b2lkIDA9PT10aGlzLmNyZWF0ZUludGVycG9sYW50KWlmKGEhPT10aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKXRoaXMuc2V0SW50ZXJwb2xhdGlvbih0aGlzLkRlZmF1bHRJbnRlcnBvbGF0aW9uKTtlbHNlIHRocm93IEVycm9yKGMpO2NvbnNvbGUud2FybigiVEhSRUUuS2V5ZnJhbWVUcmFjazoiLGMpO3JldHVybiB0aGlzfXRoaXMuY3JlYXRlSW50ZXJwb2xhbnQ9YztyZXR1cm4gdGhpc30sZ2V0SW50ZXJwb2xhdGlvbjpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLmNyZWF0ZUludGVycG9sYW50KXtjYXNlIHRoaXMuSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kRGlzY3JldGU6cmV0dXJuIDIzMDA7CmNhc2UgdGhpcy5JbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6cmV0dXJuIDIzMDE7Y2FzZSB0aGlzLkludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDpyZXR1cm4gMjMwMn19LGdldFZhbHVlU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5sZW5ndGgvdGhpcy50aW1lcy5sZW5ndGh9LHNoaWZ0OmZ1bmN0aW9uKGEpe2lmKDAhPT1hKWZvcih2YXIgYz10aGlzLnRpbWVzLGU9MCxnPWMubGVuZ3RoO2UhPT1nOysrZSljW2VdKz1hO3JldHVybiB0aGlzfSxzY2FsZTpmdW5jdGlvbihhKXtpZigxIT09YSlmb3IodmFyIGM9dGhpcy50aW1lcyxlPTAsZz1jLmxlbmd0aDtlIT09ZzsrK2UpY1tlXSo9YTtyZXR1cm4gdGhpc30sdHJpbTpmdW5jdGlvbihhLGMpe2Zvcih2YXIgZT10aGlzLnRpbWVzLGc9ZS5sZW5ndGgscj0wLHY9Zy0xO3IhPT1nJiZlW3JdPGE7KSsrcjtmb3IoOy0xIT09diYmZVt2XT5jOyktLXY7Kyt2O2lmKDAhPT1yfHx2IT09ZylyPj12JiYodj1NYXRoLm1heCh2LAoxKSxyPXYtMSksYT10aGlzLmdldFZhbHVlU2l6ZSgpLHRoaXMudGltZXM9VGIuYXJyYXlTbGljZShlLHIsdiksdGhpcy52YWx1ZXM9VGIuYXJyYXlTbGljZSh0aGlzLnZhbHVlcyxyKmEsdiphKTtyZXR1cm4gdGhpc30sdmFsaWRhdGU6ZnVuY3Rpb24oKXt2YXIgYT0hMCxjPXRoaXMuZ2V0VmFsdWVTaXplKCk7MCE9PWMtTWF0aC5mbG9vcihjKSYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IEludmFsaWQgdmFsdWUgc2l6ZSBpbiB0cmFjay4iLHRoaXMpLGE9ITEpO3ZhciBlPXRoaXMudGltZXM7Yz10aGlzLnZhbHVlczt2YXIgZz1lLmxlbmd0aDswPT09ZyYmKGNvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFRyYWNrIGlzIGVtcHR5LiIsdGhpcyksYT0hMSk7Zm9yKHZhciByPW51bGwsdj0wO3YhPT1nO3YrKyl7dmFyIHo9ZVt2XTtpZigibnVtYmVyIj09PXR5cGVvZiB6JiZpc05hTih6KSl7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogVGltZSBpcyBub3QgYSB2YWxpZCBudW1iZXIuIiwKdGhpcyx2LHopO2E9ITE7YnJlYWt9aWYobnVsbCE9PXImJnI+eil7Y29uc29sZS5lcnJvcigiVEhSRUUuS2V5ZnJhbWVUcmFjazogT3V0IG9mIG9yZGVyIGtleXMuIix0aGlzLHYseixyKTthPSExO2JyZWFrfXI9en1pZih2b2lkIDAhPT1jJiZUYi5pc1R5cGVkQXJyYXkoYykpZm9yKHY9MCxlPWMubGVuZ3RoO3YhPT1lOysrdilpZihnPWNbdl0saXNOYU4oZykpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLktleWZyYW1lVHJhY2s6IFZhbHVlIGlzIG5vdCBhIHZhbGlkIG51bWJlci4iLHRoaXMsdixnKTthPSExO2JyZWFrfXJldHVybiBhfSxvcHRpbWl6ZTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLnRpbWVzLGM9dGhpcy52YWx1ZXMsZT10aGlzLmdldFZhbHVlU2l6ZSgpLGc9MjMwMj09PXRoaXMuZ2V0SW50ZXJwb2xhdGlvbigpLHI9MSx2PWEubGVuZ3RoLTEsej0xO3o8djsrK3ope3ZhciBFPSExLEc9YVt6XTtpZihHIT09YVt6KzFdJiYoMSE9PXp8fEchPT1HWzBdKSlpZihnKUU9ITA7CmVsc2V7dmFyIEo9eiplLFA9Si1lLFI9SitlO2ZvcihHPTA7RyE9PWU7KytHKXt2YXIgUz1jW0orR107aWYoUyE9PWNbUCtHXXx8UyE9PWNbUitHXSl7RT0hMDticmVha319fWlmKEUpe2lmKHohPT1yKWZvcihhW3JdPWFbel0sRT16KmUsSj1yKmUsRz0wO0chPT1lOysrRyljW0orR109Y1tFK0ddOysrcn19aWYoMDx2KXthW3JdPWFbdl07RT12KmU7Sj1yKmU7Zm9yKEc9MDtHIT09ZTsrK0cpY1tKK0ddPWNbRStHXTsrK3J9ciE9PWEubGVuZ3RoJiYodGhpcy50aW1lcz1UYi5hcnJheVNsaWNlKGEsMCxyKSx0aGlzLnZhbHVlcz1UYi5hcnJheVNsaWNlKGMsMCxyKmUpKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgYT1UYi5hcnJheVNsaWNlKHRoaXMudGltZXMsMCksYz1UYi5hcnJheVNsaWNlKHRoaXMudmFsdWVzLDApO2E9bmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5uYW1lLGEsYyk7YS5jcmVhdGVJbnRlcnBvbGFudD10aGlzLmNyZWF0ZUludGVycG9sYW50O3JldHVybiBhfX0pOwpHZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOkdnLFZhbHVlVHlwZU5hbWU6ImJvb2wiLFZhbHVlQnVmZmVyVHlwZTpBcnJheSxEZWZhdWx0SW50ZXJwb2xhdGlvbjoyMzAwLEludGVycG9sYW50RmFjdG9yeU1ldGhvZExpbmVhcjp2b2lkIDAsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kU21vb3RoOnZvaWQgMH0pO0hnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoWGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6SGcsVmFsdWVUeXBlTmFtZToiY29sb3IifSk7U2UucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShYYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpTZSxWYWx1ZVR5cGVOYW1lOiJudW1iZXIifSk7SWcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShvYy5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpJZyxpbnRlcnBvbGF0ZV86ZnVuY3Rpb24oYSwKYyxlLGcpe3ZhciByPXRoaXMucmVzdWx0QnVmZmVyLHY9dGhpcy5zYW1wbGVWYWx1ZXMsej10aGlzLnZhbHVlU2l6ZTthKj16O2M9KGUtYykvKGctYyk7Zm9yKGU9YSt6O2EhPT1lO2ErPTQpaC5zbGVycEZsYXQociwwLHYsYS16LHYsYSxjKTtyZXR1cm4gcn19KTtaZi5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlpmLFZhbHVlVHlwZU5hbWU6InF1YXRlcm5pb24iLERlZmF1bHRJbnRlcnBvbGF0aW9uOjIzMDEsSW50ZXJwb2xhbnRGYWN0b3J5TWV0aG9kTGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSWcodGhpcy50aW1lcyx0aGlzLnZhbHVlcyx0aGlzLmdldFZhbHVlU2l6ZSgpLGEpfSxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RTbW9vdGg6dm9pZCAwfSk7SmcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShYYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpKZyxWYWx1ZVR5cGVOYW1lOiJzdHJpbmciLApWYWx1ZUJ1ZmZlclR5cGU6QXJyYXksRGVmYXVsdEludGVycG9sYXRpb246MjMwMCxJbnRlcnBvbGFudEZhY3RvcnlNZXRob2RMaW5lYXI6dm9pZCAwLEludGVycG9sYW50RmFjdG9yeU1ldGhvZFNtb290aDp2b2lkIDB9KTtUZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFhiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlRlLFZhbHVlVHlwZU5hbWU6InZlY3RvciJ9KTtPYmplY3QuYXNzaWduKHRjLHtwYXJzZTpmdW5jdGlvbihhKXtmb3IodmFyIGM9W10sZT1hLnRyYWNrcyxnPTEvKGEuZnBzfHwxKSxyPTAsdj1lLmxlbmd0aDtyIT09djsrK3IpYy5wdXNoKG5tKGVbcl0pLnNjYWxlKGcpKTtyZXR1cm4gbmV3IHRjKGEubmFtZSxhLmR1cmF0aW9uLGMpfSx0b0pTT046ZnVuY3Rpb24oYSl7dmFyIGM9W10sZT1hLnRyYWNrczthPXtuYW1lOmEubmFtZSxkdXJhdGlvbjphLmR1cmF0aW9uLHRyYWNrczpjLHV1aWQ6YS51dWlkfTtmb3IodmFyIGc9MCxyPWUubGVuZ3RoO2chPT0KcjsrK2cpYy5wdXNoKFhiLnRvSlNPTihlW2ddKSk7cmV0dXJuIGF9LENyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlOmZ1bmN0aW9uKGEsYyxlLGcpe2Zvcih2YXIgcj1jLmxlbmd0aCx2PVtdLHo9MDt6PHI7eisrKXt2YXIgRT1bXSxHPVtdO0UucHVzaCgoeityLTEpJXIseiwoeisxKSVyKTtHLnB1c2goMCwxLDApO3ZhciBKPVRiLmdldEtleWZyYW1lT3JkZXIoRSk7RT1UYi5zb3J0ZWRBcnJheShFLDEsSik7Rz1UYi5zb3J0ZWRBcnJheShHLDEsSik7Z3x8MCE9PUVbMF18fChFLnB1c2gociksRy5wdXNoKEdbMF0pKTt2LnB1c2goKG5ldyBTZSgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlc1siK2Nbel0ubmFtZSsiXSIsRSxHKSkuc2NhbGUoMS9lKSl9cmV0dXJuIG5ldyB0YyhhLC0xLHYpfSxmaW5kQnlOYW1lOmZ1bmN0aW9uKGEsYyl7dmFyIGU9YTtBcnJheS5pc0FycmF5KGEpfHwoZT1hLmdlb21ldHJ5JiZhLmdlb21ldHJ5LmFuaW1hdGlvbnN8fGEuYW5pbWF0aW9ucyk7Zm9yKGE9CjA7YTxlLmxlbmd0aDthKyspaWYoZVthXS5uYW1lPT09YylyZXR1cm4gZVthXTtyZXR1cm4gbnVsbH0sQ3JlYXRlQ2xpcHNGcm9tTW9ycGhUYXJnZXRTZXF1ZW5jZXM6ZnVuY3Rpb24oYSxjLGUpe2Zvcih2YXIgZz17fSxyPS9eKFtcdy1dKj8pKFtcZF0rKSQvLHY9MCx6PWEubGVuZ3RoO3Y8ejt2Kyspe3ZhciBFPWFbdl0sRz1FLm5hbWUubWF0Y2gocik7aWYoRyYmMTxHLmxlbmd0aCl7dmFyIEo9R1sxXTsoRz1nW0pdKXx8KGdbSl09Rz1bXSk7Ry5wdXNoKEUpfX1hPVtdO2ZvcihKIGluIGcpYS5wdXNoKHRjLkNyZWF0ZUZyb21Nb3JwaFRhcmdldFNlcXVlbmNlKEosZ1tKXSxjLGUpKTtyZXR1cm4gYX0scGFyc2VBbmltYXRpb246ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBlKGhhLGZhLHJhLHBhLHFhKXtpZigwIT09cmEubGVuZ3RoKXt2YXIgdWE9W10sb2E9W107VGIuZmxhdHRlbkpTT04ocmEsdWEsb2EscGEpOzAhPT11YS5sZW5ndGgmJnFhLnB1c2gobmV3IGhhKGZhLHVhLG9hKSl9fQppZighYSlyZXR1cm4gY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uQ2xpcDogTm8gYW5pbWF0aW9uIGluIEpTT05Mb2FkZXIgZGF0YS4iKSxudWxsO3ZhciBnPVtdLHI9YS5uYW1lfHwiZGVmYXVsdCIsdj1hLmxlbmd0aHx8LTEsej1hLmZwc3x8MzA7YT1hLmhpZXJhcmNoeXx8W107Zm9yKHZhciBFPTA7RTxhLmxlbmd0aDtFKyspe3ZhciBHPWFbRV0ua2V5cztpZihHJiYwIT09Ry5sZW5ndGgpaWYoR1swXS5tb3JwaFRhcmdldHMpe3Y9e307Zm9yKHZhciBKPTA7SjxHLmxlbmd0aDtKKyspaWYoR1tKXS5tb3JwaFRhcmdldHMpZm9yKHZhciBQPTA7UDxHW0pdLm1vcnBoVGFyZ2V0cy5sZW5ndGg7UCsrKXZbR1tKXS5tb3JwaFRhcmdldHNbUF1dPS0xO2Zvcih2YXIgUiBpbiB2KXt2YXIgUz1bXSxWPVtdO2ZvcihQPTA7UCE9PUdbSl0ubW9ycGhUYXJnZXRzLmxlbmd0aDsrK1Ape3ZhciBXPUdbSl07Uy5wdXNoKFcudGltZSk7Vi5wdXNoKFcubW9ycGhUYXJnZXQ9PT1SPzE6MCl9Zy5wdXNoKG5ldyBTZSgiLm1vcnBoVGFyZ2V0SW5mbHVlbmNlWyIrClIrIl0iLFMsVikpfXY9di5sZW5ndGgqKHp8fDEpfWVsc2UgSj0iLmJvbmVzWyIrY1tFXS5uYW1lKyJdIixlKFRlLEorIi5wb3NpdGlvbiIsRywicG9zIixnKSxlKFpmLEorIi5xdWF0ZXJuaW9uIixHLCJyb3QiLGcpLGUoVGUsSisiLnNjYWxlIixHLCJzY2wiLGcpfXJldHVybiAwPT09Zy5sZW5ndGg/bnVsbDpuZXcgdGMocix2LGcpfX0pO09iamVjdC5hc3NpZ24odGMucHJvdG90eXBlLHtyZXNldER1cmF0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYz0wLGU9dGhpcy50cmFja3MubGVuZ3RoO2MhPT1lOysrYyl7dmFyIGc9dGhpcy50cmFja3NbY107YT1NYXRoLm1heChhLGcudGltZXNbZy50aW1lcy5sZW5ndGgtMV0pfXRoaXMuZHVyYXRpb249YTtyZXR1cm4gdGhpc30sdHJpbTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy50cmFja3MubGVuZ3RoO2ErKyl0aGlzLnRyYWNrc1thXS50cmltKDAsdGhpcy5kdXJhdGlvbik7cmV0dXJuIHRoaXN9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPQohMCxjPTA7Yzx0aGlzLnRyYWNrcy5sZW5ndGg7YysrKWE9YSYmdGhpcy50cmFja3NbY10udmFsaWRhdGUoKTtyZXR1cm4gYX0sb3B0aW1pemU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPHRoaXMudHJhY2tzLmxlbmd0aDthKyspdGhpcy50cmFja3NbYV0ub3B0aW1pemUoKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sYz0wO2M8dGhpcy50cmFja3MubGVuZ3RoO2MrKylhLnB1c2godGhpcy50cmFja3NbY10uY2xvbmUoKSk7cmV0dXJuIG5ldyB0Yyh0aGlzLm5hbWUsdGhpcy5kdXJhdGlvbixhKX19KTt2YXIgaWU9e2VuYWJsZWQ6ITEsZmlsZXM6e30sYWRkOmZ1bmN0aW9uKGEsYyl7ITEhPT10aGlzLmVuYWJsZWQmJih0aGlzLmZpbGVzW2FdPWMpfSxnZXQ6ZnVuY3Rpb24oYSl7aWYoITEhPT10aGlzLmVuYWJsZWQpcmV0dXJuIHRoaXMuZmlsZXNbYV19LHJlbW92ZTpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5maWxlc1thXX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmZpbGVzPQp7fX19LE9qPW5ldyAkaDtPYmplY3QuYXNzaWduKERiLnByb3RvdHlwZSx7bG9hZDpmdW5jdGlvbigpe30scGFyc2U6ZnVuY3Rpb24oKXt9LHNldENyb3NzT3JpZ2luOmZ1bmN0aW9uKGEpe3RoaXMuY3Jvc3NPcmlnaW49YTtyZXR1cm4gdGhpc30sc2V0UGF0aDpmdW5jdGlvbihhKXt0aGlzLnBhdGg9YTtyZXR1cm4gdGhpc30sc2V0UmVzb3VyY2VQYXRoOmZ1bmN0aW9uKGEpe3RoaXMucmVzb3VyY2VQYXRoPWE7cmV0dXJuIHRoaXN9fSk7RGIuSGFuZGxlcnM9e2hhbmRsZXJzOltdLGFkZDpmdW5jdGlvbihhLGMpe3RoaXMuaGFuZGxlcnMucHVzaChhLGMpfSxnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPXRoaXMuaGFuZGxlcnMsZT0wLGc9Yy5sZW5ndGg7ZTxnO2UrPTIpe3ZhciByPWNbZSsxXTtpZihjW2VdLnRlc3QoYSkpcmV0dXJuIHJ9cmV0dXJuIG51bGx9fTt2YXIgS2M9e307dWMucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShEYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3Rvcjp1YywKbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2b2lkIDA9PT1hJiYoYT0iIik7dm9pZCAwIT09dGhpcy5wYXRoJiYoYT10aGlzLnBhdGgrYSk7YT10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTChhKTt2YXIgcj10aGlzLHY9aWUuZ2V0KGEpO2lmKHZvaWQgMCE9PXYpcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQoYSksc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmModik7ci5tYW5hZ2VyLml0ZW1FbmQoYSl9LDApLHY7aWYodm9pZCAwIT09S2NbYV0pS2NbYV0ucHVzaCh7b25Mb2FkOmMsb25Qcm9ncmVzczplLG9uRXJyb3I6Z30pO2Vsc2V7dmFyIHo9YS5tYXRjaCgvXmRhdGE6KC4qPykoO2Jhc2U2NCk/LCguKikkLyk7aWYoeil7ZT16WzFdO3ZhciBFPSEhelsyXTt6PXpbM107ej1kZWNvZGVVUklDb21wb25lbnQoeik7RSYmKHo9YXRvYih6KSk7dHJ5e3ZhciBHPSh0aGlzLnJlc3BvbnNlVHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk7c3dpdGNoKEcpe2Nhc2UgImFycmF5YnVmZmVyIjpjYXNlICJibG9iIjp2YXIgSj0KbmV3IFVpbnQ4QXJyYXkoei5sZW5ndGgpO2ZvcihFPTA7RTx6Lmxlbmd0aDtFKyspSltFXT16LmNoYXJDb2RlQXQoRSk7dmFyIFA9ImJsb2IiPT09Rz9uZXcgQmxvYihbSi5idWZmZXJdLHt0eXBlOmV9KTpKLmJ1ZmZlcjticmVhaztjYXNlICJkb2N1bWVudCI6UD0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHosZSk7YnJlYWs7Y2FzZSAianNvbiI6UD1KU09OLnBhcnNlKHopO2JyZWFrO2RlZmF1bHQ6UD16fXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjJiZjKFApO3IubWFuYWdlci5pdGVtRW5kKGEpfSwwKX1jYXRjaChTKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZyYmZyhTKTtyLm1hbmFnZXIuaXRlbUVycm9yKGEpO3IubWFuYWdlci5pdGVtRW5kKGEpfSwwKX19ZWxzZXtLY1thXT1bXTtLY1thXS5wdXNoKHtvbkxvYWQ6YyxvblByb2dyZXNzOmUsb25FcnJvcjpnfSk7dmFyIFI9bmV3IFhNTEh0dHBSZXF1ZXN0O1Iub3BlbigiR0VUIixhLCEwKTtSLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLApmdW5jdGlvbihTKXt2YXIgVj10aGlzLnJlc3BvbnNlO2llLmFkZChhLFYpO3ZhciBXPUtjW2FdO2RlbGV0ZSBLY1thXTtpZigyMDA9PT10aGlzLnN0YXR1c3x8MD09PXRoaXMuc3RhdHVzKXswPT09dGhpcy5zdGF0dXMmJmNvbnNvbGUud2FybigiVEhSRUUuRmlsZUxvYWRlcjogSFRUUCBTdGF0dXMgMCByZWNlaXZlZC4iKTtmb3IodmFyIGhhPTAsZmE9Vy5sZW5ndGg7aGE8ZmE7aGErKyl7dmFyIHJhPVdbaGFdO2lmKHJhLm9uTG9hZClyYS5vbkxvYWQoVil9fWVsc2V7aGE9MDtmb3IoZmE9Vy5sZW5ndGg7aGE8ZmE7aGErKylpZihyYT1XW2hhXSxyYS5vbkVycm9yKXJhLm9uRXJyb3IoUyk7ci5tYW5hZ2VyLml0ZW1FcnJvcihhKX1yLm1hbmFnZXIuaXRlbUVuZChhKX0sITEpO1IuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGZ1bmN0aW9uKFMpe2Zvcih2YXIgVj1LY1thXSxXPTAsaGE9Vi5sZW5ndGg7VzxoYTtXKyspe3ZhciBmYT1WW1ddO2lmKGZhLm9uUHJvZ3Jlc3MpZmEub25Qcm9ncmVzcyhTKX19LAohMSk7Ui5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oUyl7dmFyIFY9S2NbYV07ZGVsZXRlIEtjW2FdO2Zvcih2YXIgVz0wLGhhPVYubGVuZ3RoO1c8aGE7VysrKXt2YXIgZmE9VltXXTtpZihmYS5vbkVycm9yKWZhLm9uRXJyb3IoUyl9ci5tYW5hZ2VyLml0ZW1FcnJvcihhKTtyLm1hbmFnZXIuaXRlbUVuZChhKX0sITEpO1IuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLGZ1bmN0aW9uKFMpe3ZhciBWPUtjW2FdO2RlbGV0ZSBLY1thXTtmb3IodmFyIFc9MCxoYT1WLmxlbmd0aDtXPGhhO1crKyl7dmFyIGZhPVZbV107aWYoZmEub25FcnJvcilmYS5vbkVycm9yKFMpfXIubWFuYWdlci5pdGVtRXJyb3IoYSk7ci5tYW5hZ2VyLml0ZW1FbmQoYSl9LCExKTt2b2lkIDAhPT10aGlzLnJlc3BvbnNlVHlwZSYmKFIucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUeXBlKTt2b2lkIDAhPT10aGlzLndpdGhDcmVkZW50aWFscyYmKFIud2l0aENyZWRlbnRpYWxzPXRoaXMud2l0aENyZWRlbnRpYWxzKTsKUi5vdmVycmlkZU1pbWVUeXBlJiZSLm92ZXJyaWRlTWltZVR5cGUodm9pZCAwIT09dGhpcy5taW1lVHlwZT90aGlzLm1pbWVUeXBlOiJ0ZXh0L3BsYWluIik7Zm9yKEUgaW4gdGhpcy5yZXF1ZXN0SGVhZGVyKVIuc2V0UmVxdWVzdEhlYWRlcihFLHRoaXMucmVxdWVzdEhlYWRlcltFXSk7Ui5zZW5kKG51bGwpfXIubWFuYWdlci5pdGVtU3RhcnQoYSk7cmV0dXJuIFJ9fSxzZXRSZXNwb25zZVR5cGU6ZnVuY3Rpb24oYSl7dGhpcy5yZXNwb25zZVR5cGU9YTtyZXR1cm4gdGhpc30sc2V0V2l0aENyZWRlbnRpYWxzOmZ1bmN0aW9uKGEpe3RoaXMud2l0aENyZWRlbnRpYWxzPWE7cmV0dXJuIHRoaXN9LHNldE1pbWVUeXBlOmZ1bmN0aW9uKGEpe3RoaXMubWltZVR5cGU9YTtyZXR1cm4gdGhpc30sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhKXt0aGlzLnJlcXVlc3RIZWFkZXI9YTtyZXR1cm4gdGhpc319KTthaS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKERiLnByb3RvdHlwZSksCntjb25zdHJ1Y3RvcjphaSxsb2FkOmZ1bmN0aW9uKGEsYyxlLGcpe3ZhciByPXRoaXMsdj1uZXcgdWMoci5tYW5hZ2VyKTt2LnNldFBhdGgoci5wYXRoKTt2LmxvYWQoYSxmdW5jdGlvbih6KXtjKHIucGFyc2UoSlNPTi5wYXJzZSh6KSkpfSxlLGcpfSxwYXJzZTpmdW5jdGlvbihhKXtmb3IodmFyIGM9W10sZT0wO2U8YS5sZW5ndGg7ZSsrKXt2YXIgZz10Yy5wYXJzZShhW2VdKTtjLnB1c2goZyl9cmV0dXJuIGN9fSk7YmkucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShEYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpiaSxsb2FkOmZ1bmN0aW9uKGEsYyxlLGcpe2Z1bmN0aW9uIHIoUyl7Ry5sb2FkKGFbU10sZnVuY3Rpb24oVil7Vj12Ll9wYXJzZXIoViwhMCk7eltTXT17d2lkdGg6Vi53aWR0aCxoZWlnaHQ6Vi5oZWlnaHQsZm9ybWF0OlYuZm9ybWF0LG1pcG1hcHM6Vi5taXBtYXBzfTtKKz0xOzY9PT1KJiYoMT09PVYubWlwbWFwQ291bnQmJihFLm1pbkZpbHRlcj0KMTAwNiksRS5mb3JtYXQ9Vi5mb3JtYXQsRS5uZWVkc1VwZGF0ZT0hMCxjJiZjKEUpKX0sZSxnKX12YXIgdj10aGlzLHo9W10sRT1uZXcgRGU7RS5pbWFnZT16O3ZhciBHPW5ldyB1Yyh0aGlzLm1hbmFnZXIpO0cuc2V0UGF0aCh0aGlzLnBhdGgpO0cuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBKPTAsUD0wLFI9YS5sZW5ndGg7UDxSOysrUClyKFApO2Vsc2UgRy5sb2FkKGEsZnVuY3Rpb24oUyl7Uz12Ll9wYXJzZXIoUywhMCk7aWYoUy5pc0N1YmVtYXApZm9yKHZhciBWPVMubWlwbWFwcy5sZW5ndGgvUy5taXBtYXBDb3VudCxXPTA7VzxWO1crKyl7eltXXT17bWlwbWFwczpbXX07Zm9yKHZhciBoYT0wO2hhPFMubWlwbWFwQ291bnQ7aGErKyl6W1ddLm1pcG1hcHMucHVzaChTLm1pcG1hcHNbVypTLm1pcG1hcENvdW50K2hhXSkseltXXS5mb3JtYXQ9Uy5mb3JtYXQseltXXS53aWR0aD1TLndpZHRoLHpbV10uaGVpZ2h0PVMuaGVpZ2h0fWVsc2UgRS5pbWFnZS53aWR0aD0KUy53aWR0aCxFLmltYWdlLmhlaWdodD1TLmhlaWdodCxFLm1pcG1hcHM9Uy5taXBtYXBzOzE9PT1TLm1pcG1hcENvdW50JiYoRS5taW5GaWx0ZXI9MTAwNik7RS5mb3JtYXQ9Uy5mb3JtYXQ7RS5uZWVkc1VwZGF0ZT0hMDtjJiZjKEUpfSxlLGcpO3JldHVybiBFfX0pO0tnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6S2csbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2YXIgcj10aGlzLHY9bmV3IEFiLHo9bmV3IHVjKHRoaXMubWFuYWdlcik7ei5zZXRSZXNwb25zZVR5cGUoImFycmF5YnVmZmVyIik7ei5zZXRQYXRoKHRoaXMucGF0aCk7ei5sb2FkKGEsZnVuY3Rpb24oRSl7aWYoRT1yLl9wYXJzZXIoRSkpdm9pZCAwIT09RS5pbWFnZT92LmltYWdlPUUuaW1hZ2U6dm9pZCAwIT09RS5kYXRhJiYodi5pbWFnZS53aWR0aD1FLndpZHRoLHYuaW1hZ2UuaGVpZ2h0PUUuaGVpZ2h0LHYuaW1hZ2UuZGF0YT1FLmRhdGEpLHYud3JhcFM9CnZvaWQgMCE9PUUud3JhcFM/RS53cmFwUzoxMDAxLHYud3JhcFQ9dm9pZCAwIT09RS53cmFwVD9FLndyYXBUOjEwMDEsdi5tYWdGaWx0ZXI9dm9pZCAwIT09RS5tYWdGaWx0ZXI/RS5tYWdGaWx0ZXI6MTAwNix2Lm1pbkZpbHRlcj12b2lkIDAhPT1FLm1pbkZpbHRlcj9FLm1pbkZpbHRlcjoxMDA4LHYuYW5pc290cm9weT12b2lkIDAhPT1FLmFuaXNvdHJvcHk/RS5hbmlzb3Ryb3B5OjEsdm9pZCAwIT09RS5mb3JtYXQmJih2LmZvcm1hdD1FLmZvcm1hdCksdm9pZCAwIT09RS50eXBlJiYodi50eXBlPUUudHlwZSksdm9pZCAwIT09RS5taXBtYXBzJiYodi5taXBtYXBzPUUubWlwbWFwcyksMT09PUUubWlwbWFwQ291bnQmJih2Lm1pbkZpbHRlcj0xMDA2KSx2Lm5lZWRzVXBkYXRlPSEwLGMmJmModixFKX0sZSxnKTtyZXR1cm4gdn19KTtVZS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKERiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlVlLGxvYWQ6ZnVuY3Rpb24oYSwKYyxlLGcpe2Z1bmN0aW9uIHIoKXtHLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHIsITEpO0cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHYsITEpO2llLmFkZChhLHRoaXMpO2MmJmModGhpcyk7ei5tYW5hZ2VyLml0ZW1FbmQoYSl9ZnVuY3Rpb24gdihKKXtHLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLHIsITEpO0cucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHYsITEpO2cmJmcoSik7ei5tYW5hZ2VyLml0ZW1FcnJvcihhKTt6Lm1hbmFnZXIuaXRlbUVuZChhKX12b2lkIDAhPT10aGlzLnBhdGgmJihhPXRoaXMucGF0aCthKTthPXRoaXMubWFuYWdlci5yZXNvbHZlVVJMKGEpO3ZhciB6PXRoaXMsRT1pZS5nZXQoYSk7aWYodm9pZCAwIT09RSlyZXR1cm4gei5tYW5hZ2VyLml0ZW1TdGFydChhKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YyYmYyhFKTt6Lm1hbmFnZXIuaXRlbUVuZChhKX0sMCksRTt2YXIgRz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLAoiaW1nIik7Ry5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixyLCExKTtHLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIix2LCExKTsiZGF0YToiIT09YS5zdWJzdHIoMCw1KSYmdm9pZCAwIT09dGhpcy5jcm9zc09yaWdpbiYmKEcuY3Jvc3NPcmlnaW49dGhpcy5jcm9zc09yaWdpbik7ei5tYW5hZ2VyLml0ZW1TdGFydChhKTtHLnNyYz1hO3JldHVybiBHfX0pO0xnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6TGcsbG9hZDpmdW5jdGlvbihhLGMsZSxnKXtmdW5jdGlvbiByKEcpe3oubG9hZChhW0ddLGZ1bmN0aW9uKEope3YuaW1hZ2VzW0ddPUo7RSsrOzY9PT1FJiYodi5uZWVkc1VwZGF0ZT0hMCxjJiZjKHYpKX0sdm9pZCAwLGcpfXZhciB2PW5ldyBjZCx6PW5ldyBVZSh0aGlzLm1hbmFnZXIpO3ouc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7ei5zZXRQYXRoKHRoaXMucGF0aCk7dmFyIEU9MDtmb3IoZT0KMDtlPGEubGVuZ3RoOysrZSlyKGUpO3JldHVybiB2fX0pO01nLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6TWcsbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2YXIgcj1uZXcgbCx2PW5ldyBVZSh0aGlzLm1hbmFnZXIpO3Yuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7di5zZXRQYXRoKHRoaXMucGF0aCk7di5sb2FkKGEsZnVuY3Rpb24oeil7ci5pbWFnZT16O3o9MDxhLnNlYXJjaCgvXC5qcGU/ZygkfFw/KS9pKXx8MD09PWEuc2VhcmNoKC9eZGF0YTppbWFnZVwvanBlZy8pO3IuZm9ybWF0PXo/MTAyMjoxMDIzO3IubmVlZHNVcGRhdGU9ITA7dm9pZCAwIT09YyYmYyhyKX0sZSxnKTtyZXR1cm4gcn19KTtPYmplY3QuYXNzaWduKFphLnByb3RvdHlwZSx7Z2V0UG9pbnQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuZ2V0UG9pbnQoKSBub3QgaW1wbGVtZW50ZWQuIik7cmV0dXJuIG51bGx9LApnZXRQb2ludEF0OmZ1bmN0aW9uKGEsYyl7YT10aGlzLmdldFV0b1RtYXBwaW5nKGEpO3JldHVybiB0aGlzLmdldFBvaW50KGEsYyl9LGdldFBvaW50czpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT01KTtmb3IodmFyIGM9W10sZT0wO2U8PWE7ZSsrKWMucHVzaCh0aGlzLmdldFBvaW50KGUvYSkpO3JldHVybiBjfSxnZXRTcGFjZWRQb2ludHM6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGE9NSk7Zm9yKHZhciBjPVtdLGU9MDtlPD1hO2UrKyljLnB1c2godGhpcy5nZXRQb2ludEF0KGUvYSkpO3JldHVybiBjfSxnZXRMZW5ndGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldExlbmd0aHMoKTtyZXR1cm4gYVthLmxlbmd0aC0xXX0sZ2V0TGVuZ3RoczpmdW5jdGlvbihhKXt2b2lkIDA9PT1hJiYoYT10aGlzLmFyY0xlbmd0aERpdmlzaW9ucyk7aWYodGhpcy5jYWNoZUFyY0xlbmd0aHMmJnRoaXMuY2FjaGVBcmNMZW5ndGhzLmxlbmd0aD09PWErMSYmIXRoaXMubmVlZHNVcGRhdGUpcmV0dXJuIHRoaXMuY2FjaGVBcmNMZW5ndGhzOwp0aGlzLm5lZWRzVXBkYXRlPSExO3ZhciBjPVtdLGU9dGhpcy5nZXRQb2ludCgwKSxnLHI9MDtjLnB1c2goMCk7Zm9yKGc9MTtnPD1hO2crKyl7dmFyIHY9dGhpcy5nZXRQb2ludChnL2EpO3IrPXYuZGlzdGFuY2VUbyhlKTtjLnB1c2gocik7ZT12fXJldHVybiB0aGlzLmNhY2hlQXJjTGVuZ3Rocz1jfSx1cGRhdGVBcmNMZW5ndGhzOmZ1bmN0aW9uKCl7dGhpcy5uZWVkc1VwZGF0ZT0hMDt0aGlzLmdldExlbmd0aHMoKX0sZ2V0VXRvVG1hcHBpbmc6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmdldExlbmd0aHMoKSxnPWUubGVuZ3RoO2M9Yz9jOmEqZVtnLTFdO2Zvcih2YXIgcj0wLHY9Zy0xLHo7cjw9djspaWYoYT1NYXRoLmZsb29yKHIrKHYtcikvMiksej1lW2FdLWMsMD56KXI9YSsxO2Vsc2UgaWYoMDx6KXY9YS0xO2Vsc2V7dj1hO2JyZWFrfWE9djtpZihlW2FdPT09YylyZXR1cm4gYS8oZy0xKTtyPWVbYV07cmV0dXJuKGErKGMtcikvKGVbYSsxXS1yKSkvKGctMSl9LGdldFRhbmdlbnQ6ZnVuY3Rpb24oYSl7dmFyIGM9CmEtMUUtNDthKz0xRS00OzA+YyYmKGM9MCk7MTxhJiYoYT0xKTtjPXRoaXMuZ2V0UG9pbnQoYyk7cmV0dXJuIHRoaXMuZ2V0UG9pbnQoYSkuY2xvbmUoKS5zdWIoYykubm9ybWFsaXplKCl9LGdldFRhbmdlbnRBdDpmdW5jdGlvbihhKXthPXRoaXMuZ2V0VXRvVG1hcHBpbmcoYSk7cmV0dXJuIHRoaXMuZ2V0VGFuZ2VudChhKX0sY29tcHV0ZUZyZW5ldEZyYW1lczpmdW5jdGlvbihhLGMpe3ZhciBlPW5ldyBrLGc9W10scj1bXSx2PVtdLHo9bmV3IGssRT1uZXcgcSxHO2ZvcihHPTA7Rzw9YTtHKyspe3ZhciBKPUcvYTtnW0ddPXRoaXMuZ2V0VGFuZ2VudEF0KEopO2dbR10ubm9ybWFsaXplKCl9clswXT1uZXcgazt2WzBdPW5ldyBrO0c9TnVtYmVyLk1BWF9WQUxVRTtKPU1hdGguYWJzKGdbMF0ueCk7dmFyIFA9TWF0aC5hYnMoZ1swXS55KSxSPU1hdGguYWJzKGdbMF0ueik7Sjw9RyYmKEc9SixlLnNldCgxLDAsMCkpO1A8PUcmJihHPVAsZS5zZXQoMCwxLDApKTtSPD1HJiZlLnNldCgwLAowLDEpO3ouY3Jvc3NWZWN0b3JzKGdbMF0sZSkubm9ybWFsaXplKCk7clswXS5jcm9zc1ZlY3RvcnMoZ1swXSx6KTt2WzBdLmNyb3NzVmVjdG9ycyhnWzBdLHJbMF0pO2ZvcihHPTE7Rzw9YTtHKyspcltHXT1yW0ctMV0uY2xvbmUoKSx2W0ddPXZbRy0xXS5jbG9uZSgpLHouY3Jvc3NWZWN0b3JzKGdbRy0xXSxnW0ddKSx6Lmxlbmd0aCgpPk51bWJlci5FUFNJTE9OJiYoei5ub3JtYWxpemUoKSxlPU1hdGguYWNvcyhoYi5jbGFtcChnW0ctMV0uZG90KGdbR10pLC0xLDEpKSxyW0ddLmFwcGx5TWF0cml4NChFLm1ha2VSb3RhdGlvbkF4aXMoeixlKSkpLHZbR10uY3Jvc3NWZWN0b3JzKGdbR10scltHXSk7aWYoITA9PT1jKWZvcihlPU1hdGguYWNvcyhoYi5jbGFtcChyWzBdLmRvdChyW2FdKSwtMSwxKSksZS89YSwwPGdbMF0uZG90KHouY3Jvc3NWZWN0b3JzKHJbMF0sclthXSkpJiYoZT0tZSksRz0xO0c8PWE7RysrKXJbR10uYXBwbHlNYXRyaXg0KEUubWFrZVJvdGF0aW9uQXhpcyhnW0ddLAplKkcpKSx2W0ddLmNyb3NzVmVjdG9ycyhnW0ddLHJbR10pO3JldHVybnt0YW5nZW50czpnLG5vcm1hbHM6cixiaW5vcm1hbHM6dn19LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPWEuYXJjTGVuZ3RoRGl2aXNpb25zO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT17bWV0YWRhdGE6e3ZlcnNpb246NC41LHR5cGU6IkN1cnZlIixnZW5lcmF0b3I6IkN1cnZlLnRvSlNPTiJ9fTthLmFyY0xlbmd0aERpdmlzaW9ucz10aGlzLmFyY0xlbmd0aERpdmlzaW9uczthLnR5cGU9dGhpcy50eXBlO3JldHVybiBhfSxmcm9tSlNPTjpmdW5jdGlvbihhKXt0aGlzLmFyY0xlbmd0aERpdmlzaW9ucz1hLmFyY0xlbmd0aERpdmlzaW9ucztyZXR1cm4gdGhpc319KTtwYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaYS5wcm90b3R5cGUpO3BjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0KcGM7cGMucHJvdG90eXBlLmlzRWxsaXBzZUN1cnZlPSEwO3BjLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhLGMpe2M9Y3x8bmV3IGY7Zm9yKHZhciBlPTIqTWF0aC5QSSxnPXRoaXMuYUVuZEFuZ2xlLXRoaXMuYVN0YXJ0QW5nbGUscj1NYXRoLmFicyhnKTxOdW1iZXIuRVBTSUxPTjswPmc7KWcrPWU7Zm9yKDtnPmU7KWctPWU7ZzxOdW1iZXIuRVBTSUxPTiYmKGc9cj8wOmUpOyEwIT09dGhpcy5hQ2xvY2t3aXNlfHxyfHwoZz1nPT09ZT8tZTpnLWUpO2U9dGhpcy5hU3RhcnRBbmdsZSthKmc7YT10aGlzLmFYK3RoaXMueFJhZGl1cypNYXRoLmNvcyhlKTt2YXIgdj10aGlzLmFZK3RoaXMueVJhZGl1cypNYXRoLnNpbihlKTswIT09dGhpcy5hUm90YXRpb24mJihlPU1hdGguY29zKHRoaXMuYVJvdGF0aW9uKSxnPU1hdGguc2luKHRoaXMuYVJvdGF0aW9uKSxyPWEtdGhpcy5hWCx2LT10aGlzLmFZLGE9ciplLXYqZyt0aGlzLmFYLHY9cipnK3YqZSt0aGlzLmFZKTtyZXR1cm4gYy5zZXQoYSwKdil9O3BjLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmFYPWEuYVg7dGhpcy5hWT1hLmFZO3RoaXMueFJhZGl1cz1hLnhSYWRpdXM7dGhpcy55UmFkaXVzPWEueVJhZGl1czt0aGlzLmFTdGFydEFuZ2xlPWEuYVN0YXJ0QW5nbGU7dGhpcy5hRW5kQW5nbGU9YS5hRW5kQW5nbGU7dGhpcy5hQ2xvY2t3aXNlPWEuYUNsb2Nrd2lzZTt0aGlzLmFSb3RhdGlvbj1hLmFSb3RhdGlvbjtyZXR1cm4gdGhpc307cGMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPVphLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLmFYPXRoaXMuYVg7YS5hWT10aGlzLmFZO2EueFJhZGl1cz10aGlzLnhSYWRpdXM7YS55UmFkaXVzPXRoaXMueVJhZGl1czthLmFTdGFydEFuZ2xlPXRoaXMuYVN0YXJ0QW5nbGU7YS5hRW5kQW5nbGU9dGhpcy5hRW5kQW5nbGU7YS5hQ2xvY2t3aXNlPXRoaXMuYUNsb2Nrd2lzZTthLmFSb3RhdGlvbj0KdGhpcy5hUm90YXRpb247cmV0dXJuIGF9O3BjLnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLGEpO3RoaXMuYVg9YS5hWDt0aGlzLmFZPWEuYVk7dGhpcy54UmFkaXVzPWEueFJhZGl1czt0aGlzLnlSYWRpdXM9YS55UmFkaXVzO3RoaXMuYVN0YXJ0QW5nbGU9YS5hU3RhcnRBbmdsZTt0aGlzLmFFbmRBbmdsZT1hLmFFbmRBbmdsZTt0aGlzLmFDbG9ja3dpc2U9YS5hQ2xvY2t3aXNlO3RoaXMuYVJvdGF0aW9uPWEuYVJvdGF0aW9uO3JldHVybiB0aGlzfTtWZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShwYy5wcm90b3R5cGUpO1ZlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1WZTtWZS5wcm90b3R5cGUuaXNBcmNDdXJ2ZT0hMDt2YXIgeGg9bmV3IGssTGk9bmV3IGNpLE1pPW5ldyBjaSxOaT1uZXcgY2k7WmIucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWmEucHJvdG90eXBlKTtaYi5wcm90b3R5cGUuY29uc3RydWN0b3I9WmI7ClpiLnByb3RvdHlwZS5pc0NhdG11bGxSb21DdXJ2ZTM9ITA7WmIucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYyl7Yz1jfHxuZXcgazt2YXIgZT10aGlzLnBvaW50cyxnPWUubGVuZ3RoO2EqPWctKHRoaXMuY2xvc2VkPzA6MSk7dmFyIHI9TWF0aC5mbG9vcihhKTthLT1yO3RoaXMuY2xvc2VkP3IrPTA8cj8wOihNYXRoLmZsb29yKE1hdGguYWJzKHIpL2cpKzEpKmc6MD09PWEmJnI9PT1nLTEmJihyPWctMixhPTEpO2lmKHRoaXMuY2xvc2VkfHwwPHIpdmFyIHY9ZVsoci0xKSVnXTtlbHNlIHhoLnN1YlZlY3RvcnMoZVswXSxlWzFdKS5hZGQoZVswXSksdj14aDt2YXIgej1lW3IlZ107dmFyIEU9ZVsocisxKSVnXTt0aGlzLmNsb3NlZHx8cisyPGc/ZT1lWyhyKzIpJWddOih4aC5zdWJWZWN0b3JzKGVbZy0xXSxlW2ctMl0pLmFkZChlW2ctMV0pLGU9eGgpO2lmKCJjZW50cmlwZXRhbCI9PT10aGlzLmN1cnZlVHlwZXx8ImNob3JkYWwiPT09dGhpcy5jdXJ2ZVR5cGUpe3ZhciBHPQoiY2hvcmRhbCI9PT10aGlzLmN1cnZlVHlwZT8uNTouMjU7Zz1NYXRoLnBvdyh2LmRpc3RhbmNlVG9TcXVhcmVkKHopLEcpO3I9TWF0aC5wb3coei5kaXN0YW5jZVRvU3F1YXJlZChFKSxHKTtHPU1hdGgucG93KEUuZGlzdGFuY2VUb1NxdWFyZWQoZSksRyk7MUUtND5yJiYocj0xKTsxRS00PmcmJihnPXIpOzFFLTQ+RyYmKEc9cik7TGkuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHYueCx6LngsRS54LGUueCxnLHIsRyk7TWkuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHYueSx6LnksRS55LGUueSxnLHIsRyk7TmkuaW5pdE5vbnVuaWZvcm1DYXRtdWxsUm9tKHYueix6LnosRS56LGUueixnLHIsRyl9ZWxzZSJjYXRtdWxscm9tIj09PXRoaXMuY3VydmVUeXBlJiYoTGkuaW5pdENhdG11bGxSb20odi54LHoueCxFLngsZS54LHRoaXMudGVuc2lvbiksTWkuaW5pdENhdG11bGxSb20odi55LHoueSxFLnksZS55LHRoaXMudGVuc2lvbiksTmkuaW5pdENhdG11bGxSb20odi56LHoueixFLnosCmUueix0aGlzLnRlbnNpb24pKTtjLnNldChMaS5jYWxjKGEpLE1pLmNhbGMoYSksTmkuY2FsYyhhKSk7cmV0dXJuIGN9O1piLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLnBvaW50cz1bXTtmb3IodmFyIGM9MCxlPWEucG9pbnRzLmxlbmd0aDtjPGU7YysrKXRoaXMucG9pbnRzLnB1c2goYS5wb2ludHNbY10uY2xvbmUoKSk7dGhpcy5jbG9zZWQ9YS5jbG9zZWQ7dGhpcy5jdXJ2ZVR5cGU9YS5jdXJ2ZVR5cGU7dGhpcy50ZW5zaW9uPWEudGVuc2lvbjtyZXR1cm4gdGhpc307WmIucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPVphLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnBvaW50cz1bXTtmb3IodmFyIGM9MCxlPXRoaXMucG9pbnRzLmxlbmd0aDtjPGU7YysrKWEucG9pbnRzLnB1c2godGhpcy5wb2ludHNbY10udG9BcnJheSgpKTthLmNsb3NlZD10aGlzLmNsb3NlZDthLmN1cnZlVHlwZT10aGlzLmN1cnZlVHlwZTsKYS50ZW5zaW9uPXRoaXMudGVuc2lvbjtyZXR1cm4gYX07WmIucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy5wb2ludHM9W107Zm9yKHZhciBjPTAsZT1hLnBvaW50cy5sZW5ndGg7YzxlO2MrKyl7dmFyIGc9YS5wb2ludHNbY107dGhpcy5wb2ludHMucHVzaCgobmV3IGspLmZyb21BcnJheShnKSl9dGhpcy5jbG9zZWQ9YS5jbG9zZWQ7dGhpcy5jdXJ2ZVR5cGU9YS5jdXJ2ZVR5cGU7dGhpcy50ZW5zaW9uPWEudGVuc2lvbjtyZXR1cm4gdGhpc307Q2MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWmEucHJvdG90eXBlKTtDYy5wcm90b3R5cGUuY29uc3RydWN0b3I9Q2M7Q2MucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZT0hMDtDYy5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24oYSxjKXtjPWN8fG5ldyBmO3ZhciBlPXRoaXMudjAsZz10aGlzLnYxLHI9dGhpcy52Mix2PXRoaXMudjM7Yy5zZXQoYWcoYSwKZS54LGcueCxyLngsdi54KSxhZyhhLGUueSxnLnksci55LHYueSkpO3JldHVybiBjfTtDYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MC5jb3B5KGEudjApO3RoaXMudjEuY29weShhLnYxKTt0aGlzLnYyLmNvcHkoYS52Mik7dGhpcy52My5jb3B5KGEudjMpO3JldHVybiB0aGlzfTtDYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EudjA9dGhpcy52MC50b0FycmF5KCk7YS52MT10aGlzLnYxLnRvQXJyYXkoKTthLnYyPXRoaXMudjIudG9BcnJheSgpO2EudjM9dGhpcy52My50b0FycmF5KCk7cmV0dXJuIGF9O0NjLnByb3RvdHlwZS5mcm9tSlNPTj1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuZnJvbUpTT04uY2FsbCh0aGlzLGEpO3RoaXMudjAuZnJvbUFycmF5KGEudjApO3RoaXMudjEuZnJvbUFycmF5KGEudjEpO3RoaXMudjIuZnJvbUFycmF5KGEudjIpOwp0aGlzLnYzLmZyb21BcnJheShhLnYzKTtyZXR1cm4gdGhpc307VGMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWmEucHJvdG90eXBlKTtUYy5wcm90b3R5cGUuY29uc3RydWN0b3I9VGM7VGMucHJvdG90eXBlLmlzQ3ViaWNCZXppZXJDdXJ2ZTM9ITA7VGMucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYyl7Yz1jfHxuZXcgazt2YXIgZT10aGlzLnYwLGc9dGhpcy52MSxyPXRoaXMudjIsdj10aGlzLnYzO2Muc2V0KGFnKGEsZS54LGcueCxyLngsdi54KSxhZyhhLGUueSxnLnksci55LHYueSksYWcoYSxlLnosZy56LHIueix2LnopKTtyZXR1cm4gY307VGMucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oYSl7WmEucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMudjAuY29weShhLnYwKTt0aGlzLnYxLmNvcHkoYS52MSk7dGhpcy52Mi5jb3B5KGEudjIpO3RoaXMudjMuY29weShhLnYzKTtyZXR1cm4gdGhpc307VGMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPQpaYS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS52MD10aGlzLnYwLnRvQXJyYXkoKTthLnYxPXRoaXMudjEudG9BcnJheSgpO2EudjI9dGhpcy52Mi50b0FycmF5KCk7YS52Mz10aGlzLnYzLnRvQXJyYXkoKTtyZXR1cm4gYX07VGMucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy52MC5mcm9tQXJyYXkoYS52MCk7dGhpcy52MS5mcm9tQXJyYXkoYS52MSk7dGhpcy52Mi5mcm9tQXJyYXkoYS52Mik7dGhpcy52My5mcm9tQXJyYXkoYS52Myk7cmV0dXJuIHRoaXN9O2tjLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFphLnByb3RvdHlwZSk7a2MucHJvdG90eXBlLmNvbnN0cnVjdG9yPWtjO2tjLnByb3RvdHlwZS5pc0xpbmVDdXJ2ZT0hMDtrYy5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24oYSxjKXtjPWN8fG5ldyBmOzE9PT1hP2MuY29weSh0aGlzLnYyKTooYy5jb3B5KHRoaXMudjIpLnN1Yih0aGlzLnYxKSwKYy5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy52MSkpO3JldHVybiBjfTtrYy5wcm90b3R5cGUuZ2V0UG9pbnRBdD1mdW5jdGlvbihhLGMpe3JldHVybiB0aGlzLmdldFBvaW50KGEsYyl9O2tjLnByb3RvdHlwZS5nZXRUYW5nZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudjIuY2xvbmUoKS5zdWIodGhpcy52MSkubm9ybWFsaXplKCl9O2tjLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLnYxLmNvcHkoYS52MSk7dGhpcy52Mi5jb3B5KGEudjIpO3JldHVybiB0aGlzfTtrYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTtyZXR1cm4gYX07a2MucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy52MS5mcm9tQXJyYXkoYS52MSk7CnRoaXMudjIuZnJvbUFycmF5KGEudjIpO3JldHVybiB0aGlzfTtEYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaYS5wcm90b3R5cGUpO0RjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1EYztEYy5wcm90b3R5cGUuaXNMaW5lQ3VydmUzPSEwO0RjLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhLGMpe2M9Y3x8bmV3IGs7MT09PWE/Yy5jb3B5KHRoaXMudjIpOihjLmNvcHkodGhpcy52Mikuc3ViKHRoaXMudjEpLGMubXVsdGlwbHlTY2FsYXIoYSkuYWRkKHRoaXMudjEpKTtyZXR1cm4gY307RGMucHJvdG90eXBlLmdldFBvaW50QXQ9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5nZXRQb2ludChhLGMpfTtEYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MS5jb3B5KGEudjEpO3RoaXMudjIuY29weShhLnYyKTtyZXR1cm4gdGhpc307RGMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPVphLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTsKYS52MT10aGlzLnYxLnRvQXJyYXkoKTthLnYyPXRoaXMudjIudG9BcnJheSgpO3JldHVybiBhfTtEYy5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24oYSl7WmEucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTtyZXR1cm4gdGhpc307RWMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWmEucHJvdG90eXBlKTtFYy5wcm90b3R5cGUuY29uc3RydWN0b3I9RWM7RWMucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmU9ITA7RWMucHJvdG90eXBlLmdldFBvaW50PWZ1bmN0aW9uKGEsYyl7Yz1jfHxuZXcgZjt2YXIgZT10aGlzLnYwLGc9dGhpcy52MSxyPXRoaXMudjI7Yy5zZXQoJGYoYSxlLngsZy54LHIueCksJGYoYSxlLnksZy55LHIueSkpO3JldHVybiBjfTtFYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy52MC5jb3B5KGEudjApOwp0aGlzLnYxLmNvcHkoYS52MSk7dGhpcy52Mi5jb3B5KGEudjIpO3JldHVybiB0aGlzfTtFYy5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EudjA9dGhpcy52MC50b0FycmF5KCk7YS52MT10aGlzLnYxLnRvQXJyYXkoKTthLnYyPXRoaXMudjIudG9BcnJheSgpO3JldHVybiBhfTtFYy5wcm90b3R5cGUuZnJvbUpTT049ZnVuY3Rpb24oYSl7WmEucHJvdG90eXBlLmZyb21KU09OLmNhbGwodGhpcyxhKTt0aGlzLnYwLmZyb21BcnJheShhLnYwKTt0aGlzLnYxLmZyb21BcnJheShhLnYxKTt0aGlzLnYyLmZyb21BcnJheShhLnYyKTtyZXR1cm4gdGhpc307VWMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoWmEucHJvdG90eXBlKTtVYy5wcm90b3R5cGUuY29uc3RydWN0b3I9VWM7VWMucHJvdG90eXBlLmlzUXVhZHJhdGljQmV6aWVyQ3VydmUzPSEwO1VjLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhLGMpe2M9Y3x8Cm5ldyBrO3ZhciBlPXRoaXMudjAsZz10aGlzLnYxLHI9dGhpcy52MjtjLnNldCgkZihhLGUueCxnLngsci54KSwkZihhLGUueSxnLnksci55KSwkZihhLGUueixnLnosci56KSk7cmV0dXJuIGN9O1VjLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLnYwLmNvcHkoYS52MCk7dGhpcy52MS5jb3B5KGEudjEpO3RoaXMudjIuY29weShhLnYyKTtyZXR1cm4gdGhpc307VWMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPVphLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnYwPXRoaXMudjAudG9BcnJheSgpO2EudjE9dGhpcy52MS50b0FycmF5KCk7YS52Mj10aGlzLnYyLnRvQXJyYXkoKTtyZXR1cm4gYX07VWMucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy52MC5mcm9tQXJyYXkoYS52MCk7dGhpcy52MS5mcm9tQXJyYXkoYS52MSk7CnRoaXMudjIuZnJvbUFycmF5KGEudjIpO3JldHVybiB0aGlzfTtGYy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaYS5wcm90b3R5cGUpO0ZjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1GYztGYy5wcm90b3R5cGUuaXNTcGxpbmVDdXJ2ZT0hMDtGYy5wcm90b3R5cGUuZ2V0UG9pbnQ9ZnVuY3Rpb24oYSxjKXtjPWN8fG5ldyBmO3ZhciBlPXRoaXMucG9pbnRzLGc9KGUubGVuZ3RoLTEpKmE7YT1NYXRoLmZsb29yKGcpO2ctPWE7dmFyIHI9ZVswPT09YT9hOmEtMV0sdj1lW2FdLHo9ZVthPmUubGVuZ3RoLTI/ZS5sZW5ndGgtMTphKzFdO2U9ZVthPmUubGVuZ3RoLTM/ZS5sZW5ndGgtMTphKzJdO2Muc2V0KFBqKGcsci54LHYueCx6LngsZS54KSxQaihnLHIueSx2Lnksei55LGUueSkpO3JldHVybiBjfTtGYy5wcm90b3R5cGUuY29weT1mdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5wb2ludHM9W107Zm9yKHZhciBjPTAsZT1hLnBvaW50cy5sZW5ndGg7YzwKZTtjKyspdGhpcy5wb2ludHMucHVzaChhLnBvaW50c1tjXS5jbG9uZSgpKTtyZXR1cm4gdGhpc307RmMucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3ZhciBhPVphLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnBvaW50cz1bXTtmb3IodmFyIGM9MCxlPXRoaXMucG9pbnRzLmxlbmd0aDtjPGU7YysrKWEucG9pbnRzLnB1c2godGhpcy5wb2ludHNbY10udG9BcnJheSgpKTtyZXR1cm4gYX07RmMucHJvdG90eXBlLmZyb21KU09OPWZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy5wb2ludHM9W107Zm9yKHZhciBjPTAsZT1hLnBvaW50cy5sZW5ndGg7YzxlO2MrKyl7dmFyIGc9YS5wb2ludHNbY107dGhpcy5wb2ludHMucHVzaCgobmV3IGYpLmZyb21BcnJheShnKSl9cmV0dXJuIHRoaXN9O3ZhciBPaT1PYmplY3QuZnJlZXplKHtBcmNDdXJ2ZTpWZSxDYXRtdWxsUm9tQ3VydmUzOlpiLEN1YmljQmV6aWVyQ3VydmU6Q2MsQ3ViaWNCZXppZXJDdXJ2ZTM6VGMsCkVsbGlwc2VDdXJ2ZTpwYyxMaW5lQ3VydmU6a2MsTGluZUN1cnZlMzpEYyxRdWFkcmF0aWNCZXppZXJDdXJ2ZTpFYyxRdWFkcmF0aWNCZXppZXJDdXJ2ZTM6VWMsU3BsaW5lQ3VydmU6RmN9KTtnZC5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFphLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmdkLGFkZDpmdW5jdGlvbihhKXt0aGlzLmN1cnZlcy5wdXNoKGEpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmN1cnZlc1swXS5nZXRQb2ludCgwKSxjPXRoaXMuY3VydmVzW3RoaXMuY3VydmVzLmxlbmd0aC0xXS5nZXRQb2ludCgxKTthLmVxdWFscyhjKXx8dGhpcy5jdXJ2ZXMucHVzaChuZXcga2MoYyxhKSl9LGdldFBvaW50OmZ1bmN0aW9uKGEpe3ZhciBjPWEqdGhpcy5nZXRMZW5ndGgoKSxlPXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7Zm9yKGE9MDthPGUubGVuZ3RoOyl7aWYoZVthXT49YylyZXR1cm4gYz1lW2FdLWMsYT10aGlzLmN1cnZlc1thXSxlPQphLmdldExlbmd0aCgpLGEuZ2V0UG9pbnRBdCgwPT09ZT8wOjEtYy9lKTthKyt9cmV0dXJuIG51bGx9LGdldExlbmd0aDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0Q3VydmVMZW5ndGhzKCk7cmV0dXJuIGFbYS5sZW5ndGgtMV19LHVwZGF0ZUFyY0xlbmd0aHM6ZnVuY3Rpb24oKXt0aGlzLm5lZWRzVXBkYXRlPSEwO3RoaXMuY2FjaGVMZW5ndGhzPW51bGw7dGhpcy5nZXRDdXJ2ZUxlbmd0aHMoKX0sZ2V0Q3VydmVMZW5ndGhzOmZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZUxlbmd0aHMmJnRoaXMuY2FjaGVMZW5ndGhzLmxlbmd0aD09PXRoaXMuY3VydmVzLmxlbmd0aClyZXR1cm4gdGhpcy5jYWNoZUxlbmd0aHM7Zm9yKHZhciBhPVtdLGM9MCxlPTAsZz10aGlzLmN1cnZlcy5sZW5ndGg7ZTxnO2UrKyljKz10aGlzLmN1cnZlc1tlXS5nZXRMZW5ndGgoKSxhLnB1c2goYyk7cmV0dXJuIHRoaXMuY2FjaGVMZW5ndGhzPWF9LGdldFNwYWNlZFBvaW50czpmdW5jdGlvbihhKXt2b2lkIDA9PT0KYSYmKGE9NDApO2Zvcih2YXIgYz1bXSxlPTA7ZTw9YTtlKyspYy5wdXNoKHRoaXMuZ2V0UG9pbnQoZS9hKSk7dGhpcy5hdXRvQ2xvc2UmJmMucHVzaChjWzBdKTtyZXR1cm4gY30sZ2V0UG9pbnRzOmZ1bmN0aW9uKGEpe2E9YXx8MTI7Zm9yKHZhciBjPVtdLGUsZz0wLHI9dGhpcy5jdXJ2ZXM7ZzxyLmxlbmd0aDtnKyspe3ZhciB2PXJbZ107dj12LmdldFBvaW50cyh2JiZ2LmlzRWxsaXBzZUN1cnZlPzIqYTp2JiYodi5pc0xpbmVDdXJ2ZXx8di5pc0xpbmVDdXJ2ZTMpPzE6diYmdi5pc1NwbGluZUN1cnZlP2Eqdi5wb2ludHMubGVuZ3RoOmEpO2Zvcih2YXIgej0wO3o8di5sZW5ndGg7eisrKXt2YXIgRT12W3pdO2UmJmUuZXF1YWxzKEUpfHwoYy5wdXNoKEUpLGU9RSl9fXRoaXMuYXV0b0Nsb3NlJiYxPGMubGVuZ3RoJiYhY1tjLmxlbmd0aC0xXS5lcXVhbHMoY1swXSkmJmMucHVzaChjWzBdKTtyZXR1cm4gY30sY29weTpmdW5jdGlvbihhKXtaYS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsCmEpO3RoaXMuY3VydmVzPVtdO2Zvcih2YXIgYz0wLGU9YS5jdXJ2ZXMubGVuZ3RoO2M8ZTtjKyspdGhpcy5jdXJ2ZXMucHVzaChhLmN1cnZlc1tjXS5jbG9uZSgpKTt0aGlzLmF1dG9DbG9zZT1hLmF1dG9DbG9zZTtyZXR1cm4gdGhpc30sdG9KU09OOmZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMpO2EuYXV0b0Nsb3NlPXRoaXMuYXV0b0Nsb3NlO2EuY3VydmVzPVtdO2Zvcih2YXIgYz0wLGU9dGhpcy5jdXJ2ZXMubGVuZ3RoO2M8ZTtjKyspYS5jdXJ2ZXMucHVzaCh0aGlzLmN1cnZlc1tjXS50b0pTT04oKSk7cmV0dXJuIGF9LGZyb21KU09OOmZ1bmN0aW9uKGEpe1phLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy5hdXRvQ2xvc2U9YS5hdXRvQ2xvc2U7dGhpcy5jdXJ2ZXM9W107Zm9yKHZhciBjPTAsZT1hLmN1cnZlcy5sZW5ndGg7YzxlO2MrKyl7dmFyIGc9YS5jdXJ2ZXNbY107dGhpcy5jdXJ2ZXMucHVzaCgobmV3IE9pW2cudHlwZV0pLmZyb21KU09OKGcpKX1yZXR1cm4gdGhpc319KTsKR2MucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShnZC5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpHYyxzZXRGcm9tUG9pbnRzOmZ1bmN0aW9uKGEpe3RoaXMubW92ZVRvKGFbMF0ueCxhWzBdLnkpO2Zvcih2YXIgYz0xLGU9YS5sZW5ndGg7YzxlO2MrKyl0aGlzLmxpbmVUbyhhW2NdLngsYVtjXS55KX0sbW92ZVRvOmZ1bmN0aW9uKGEsYyl7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGEsYyl9LGxpbmVUbzpmdW5jdGlvbihhLGMpe3ZhciBlPW5ldyBrYyh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBmKGEsYykpO3RoaXMuY3VydmVzLnB1c2goZSk7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGEsYyl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24oYSxjLGUsZyl7YT1uZXcgRWModGhpcy5jdXJyZW50UG9pbnQuY2xvbmUoKSxuZXcgZihhLGMpLG5ldyBmKGUsZykpO3RoaXMuY3VydmVzLnB1c2goYSk7dGhpcy5jdXJyZW50UG9pbnQuc2V0KGUsZyl9LGJlemllckN1cnZlVG86ZnVuY3Rpb24oYSwKYyxlLGcscix2KXthPW5ldyBDYyh0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpLG5ldyBmKGEsYyksbmV3IGYoZSxnKSxuZXcgZihyLHYpKTt0aGlzLmN1cnZlcy5wdXNoKGEpO3RoaXMuY3VycmVudFBvaW50LnNldChyLHYpfSxzcGxpbmVUaHJ1OmZ1bmN0aW9uKGEpe3ZhciBjPVt0aGlzLmN1cnJlbnRQb2ludC5jbG9uZSgpXS5jb25jYXQoYSk7Yz1uZXcgRmMoYyk7dGhpcy5jdXJ2ZXMucHVzaChjKTt0aGlzLmN1cnJlbnRQb2ludC5jb3B5KGFbYS5sZW5ndGgtMV0pfSxhcmM6ZnVuY3Rpb24oYSxjLGUsZyxyLHYpe3RoaXMuYWJzYXJjKGErdGhpcy5jdXJyZW50UG9pbnQueCxjK3RoaXMuY3VycmVudFBvaW50LnksZSxnLHIsdil9LGFic2FyYzpmdW5jdGlvbihhLGMsZSxnLHIsdil7dGhpcy5hYnNlbGxpcHNlKGEsYyxlLGUsZyxyLHYpfSxlbGxpcHNlOmZ1bmN0aW9uKGEsYyxlLGcscix2LHosRSl7dGhpcy5hYnNlbGxpcHNlKGErdGhpcy5jdXJyZW50UG9pbnQueCxjK3RoaXMuY3VycmVudFBvaW50LnksCmUsZyxyLHYseixFKX0sYWJzZWxsaXBzZTpmdW5jdGlvbihhLGMsZSxnLHIsdix6LEUpe2E9bmV3IHBjKGEsYyxlLGcscix2LHosRSk7MDx0aGlzLmN1cnZlcy5sZW5ndGgmJihjPWEuZ2V0UG9pbnQoMCksYy5lcXVhbHModGhpcy5jdXJyZW50UG9pbnQpfHx0aGlzLmxpbmVUbyhjLngsYy55KSk7dGhpcy5jdXJ2ZXMucHVzaChhKTthPWEuZ2V0UG9pbnQoMSk7dGhpcy5jdXJyZW50UG9pbnQuY29weShhKX0sY29weTpmdW5jdGlvbihhKXtnZC5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jdXJyZW50UG9pbnQuY29weShhLmN1cnJlbnRQb2ludCk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPWdkLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLmN1cnJlbnRQb2ludD10aGlzLmN1cnJlbnRQb2ludC50b0FycmF5KCk7cmV0dXJuIGF9LGZyb21KU09OOmZ1bmN0aW9uKGEpe2dkLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy5jdXJyZW50UG9pbnQuZnJvbUFycmF5KGEuY3VycmVudFBvaW50KTsKcmV0dXJuIHRoaXN9fSk7Q2QucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShHYy5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpDZCxnZXRQb2ludHNIb2xlczpmdW5jdGlvbihhKXtmb3IodmFyIGM9W10sZT0wLGc9dGhpcy5ob2xlcy5sZW5ndGg7ZTxnO2UrKyljW2VdPXRoaXMuaG9sZXNbZV0uZ2V0UG9pbnRzKGEpO3JldHVybiBjfSxleHRyYWN0UG9pbnRzOmZ1bmN0aW9uKGEpe3JldHVybntzaGFwZTp0aGlzLmdldFBvaW50cyhhKSxob2xlczp0aGlzLmdldFBvaW50c0hvbGVzKGEpfX0sY29weTpmdW5jdGlvbihhKXtHYy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5ob2xlcz1bXTtmb3IodmFyIGM9MCxlPWEuaG9sZXMubGVuZ3RoO2M8ZTtjKyspdGhpcy5ob2xlcy5wdXNoKGEuaG9sZXNbY10uY2xvbmUoKSk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbigpe3ZhciBhPUdjLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLnV1aWQ9dGhpcy51dWlkOwphLmhvbGVzPVtdO2Zvcih2YXIgYz0wLGU9dGhpcy5ob2xlcy5sZW5ndGg7YzxlO2MrKylhLmhvbGVzLnB1c2godGhpcy5ob2xlc1tjXS50b0pTT04oKSk7cmV0dXJuIGF9LGZyb21KU09OOmZ1bmN0aW9uKGEpe0djLnByb3RvdHlwZS5mcm9tSlNPTi5jYWxsKHRoaXMsYSk7dGhpcy51dWlkPWEudXVpZDt0aGlzLmhvbGVzPVtdO2Zvcih2YXIgYz0wLGU9YS5ob2xlcy5sZW5ndGg7YzxlO2MrKyl7dmFyIGc9YS5ob2xlc1tjXTt0aGlzLmhvbGVzLnB1c2goKG5ldyBHYykuZnJvbUpTT04oZykpfXJldHVybiB0aGlzfX0pO0piLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpKYixpc0xpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7QS5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5jb2xvci5jb3B5KGEuY29sb3IpO3RoaXMuaW50ZW5zaXR5PWEuaW50ZW5zaXR5O3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7YT0KQS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyxhKTthLm9iamVjdC5jb2xvcj10aGlzLmNvbG9yLmdldEhleCgpO2Eub2JqZWN0LmludGVuc2l0eT10aGlzLmludGVuc2l0eTt2b2lkIDAhPT10aGlzLmdyb3VuZENvbG9yJiYoYS5vYmplY3QuZ3JvdW5kQ29sb3I9dGhpcy5ncm91bmRDb2xvci5nZXRIZXgoKSk7dm9pZCAwIT09dGhpcy5kaXN0YW5jZSYmKGEub2JqZWN0LmRpc3RhbmNlPXRoaXMuZGlzdGFuY2UpO3ZvaWQgMCE9PXRoaXMuYW5nbGUmJihhLm9iamVjdC5hbmdsZT10aGlzLmFuZ2xlKTt2b2lkIDAhPT10aGlzLmRlY2F5JiYoYS5vYmplY3QuZGVjYXk9dGhpcy5kZWNheSk7dm9pZCAwIT09dGhpcy5wZW51bWJyYSYmKGEub2JqZWN0LnBlbnVtYnJhPXRoaXMucGVudW1icmEpO3ZvaWQgMCE9PXRoaXMuc2hhZG93JiYoYS5vYmplY3Quc2hhZG93PXRoaXMuc2hhZG93LnRvSlNPTigpKTtyZXR1cm4gYX19KTtOZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEpiLnByb3RvdHlwZSksCntjb25zdHJ1Y3RvcjpOZyxpc0hlbWlzcGhlcmVMaWdodDohMCxjb3B5OmZ1bmN0aW9uKGEpe0piLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmdyb3VuZENvbG9yLmNvcHkoYS5ncm91bmRDb2xvcik7cmV0dXJuIHRoaXN9fSk7T2JqZWN0LmFzc2lnbihWYy5wcm90b3R5cGUse19wcm9qU2NyZWVuTWF0cml4Om5ldyBxLF9saWdodFBvc2l0aW9uV29ybGQ6bmV3IGssX2xvb2tUYXJnZXQ6bmV3IGssZ2V0Vmlld3BvcnRDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92aWV3cG9ydENvdW50fSxnZXRGcnVzdHVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZydXN0dW19LHVwZGF0ZU1hdHJpY2VzOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuY2FtZXJhLGU9dGhpcy5tYXRyaXgsZz10aGlzLl9wcm9qU2NyZWVuTWF0cml4LHI9dGhpcy5fbG9va1RhcmdldCx2PXRoaXMuX2xpZ2h0UG9zaXRpb25Xb3JsZDt2LnNldEZyb21NYXRyaXhQb3NpdGlvbihhLm1hdHJpeFdvcmxkKTsKYy5wb3NpdGlvbi5jb3B5KHYpO3Iuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKGEudGFyZ2V0Lm1hdHJpeFdvcmxkKTtjLmxvb2tBdChyKTtjLnVwZGF0ZU1hdHJpeFdvcmxkKCk7Zy5tdWx0aXBseU1hdHJpY2VzKGMucHJvamVjdGlvbk1hdHJpeCxjLm1hdHJpeFdvcmxkSW52ZXJzZSk7dGhpcy5fZnJ1c3R1bS5zZXRGcm9tTWF0cml4KGcpO2Uuc2V0KC41LDAsMCwuNSwwLC41LDAsLjUsMCwwLC41LC41LDAsMCwwLDEpO2UubXVsdGlwbHkoYy5wcm9qZWN0aW9uTWF0cml4KTtlLm11bHRpcGx5KGMubWF0cml4V29ybGRJbnZlcnNlKX0sZ2V0Vmlld3BvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3ZpZXdwb3J0c1thXX0sZ2V0RnJhbWVFeHRlbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZyYW1lRXh0ZW50c30sY29weTpmdW5jdGlvbihhKXt0aGlzLmNhbWVyYT1hLmNhbWVyYS5jbG9uZSgpO3RoaXMuYmlhcz1hLmJpYXM7dGhpcy5yYWRpdXM9YS5yYWRpdXM7dGhpcy5tYXBTaXplLmNvcHkoYS5tYXBTaXplKTsKcmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT17fTswIT09dGhpcy5iaWFzJiYoYS5iaWFzPXRoaXMuYmlhcyk7MSE9PXRoaXMucmFkaXVzJiYoYS5yYWRpdXM9dGhpcy5yYWRpdXMpO2lmKDUxMiE9PXRoaXMubWFwU2l6ZS54fHw1MTIhPT10aGlzLm1hcFNpemUueSlhLm1hcFNpemU9dGhpcy5tYXBTaXplLnRvQXJyYXkoKTthLmNhbWVyYT10aGlzLmNhbWVyYS50b0pTT04oITEpLm9iamVjdDtkZWxldGUgYS5jYW1lcmEubWF0cml4O3JldHVybiBhfX0pO09nLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoVmMucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6T2csaXNTcG90TGlnaHRTaGFkb3c6ITAsdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24oYSxjLGUpe3ZhciBnPXRoaXMuY2FtZXJhLHI9MipoYi5SQUQyREVHKmEuYW5nbGUsdj10aGlzLm1hcFNpemUud2lkdGgvCnRoaXMubWFwU2l6ZS5oZWlnaHQsej1hLmRpc3RhbmNlfHxnLmZhcjtpZihyIT09Zy5mb3Z8fHYhPT1nLmFzcGVjdHx8eiE9PWcuZmFyKWcuZm92PXIsZy5hc3BlY3Q9dixnLmZhcj16LGcudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1ZjLnByb3RvdHlwZS51cGRhdGVNYXRyaWNlcy5jYWxsKHRoaXMsYSxjLGUpfX0pO1BnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoSmIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6UGcsaXNTcG90TGlnaHQ6ITAsY29weTpmdW5jdGlvbihhKXtKYi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy5kaXN0YW5jZT1hLmRpc3RhbmNlO3RoaXMuYW5nbGU9YS5hbmdsZTt0aGlzLnBlbnVtYnJhPWEucGVudW1icmE7dGhpcy5kZWNheT1hLmRlY2F5O3RoaXMudGFyZ2V0PWEudGFyZ2V0LmNsb25lKCk7dGhpcy5zaGFkb3c9YS5zaGFkb3cuY2xvbmUoKTtyZXR1cm4gdGhpc319KTtkaS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFZjLnByb3RvdHlwZSksCntjb25zdHJ1Y3RvcjpkaSxpc1BvaW50TGlnaHRTaGFkb3c6ITAsdXBkYXRlTWF0cmljZXM6ZnVuY3Rpb24oYSxjLGUpe2M9dGhpcy5jYW1lcmE7dmFyIGc9dGhpcy5tYXRyaXgscj10aGlzLl9saWdodFBvc2l0aW9uV29ybGQsdj10aGlzLl9sb29rVGFyZ2V0LHo9dGhpcy5fcHJvalNjcmVlbk1hdHJpeDtyLnNldEZyb21NYXRyaXhQb3NpdGlvbihhLm1hdHJpeFdvcmxkKTtjLnBvc2l0aW9uLmNvcHkocik7di5jb3B5KGMucG9zaXRpb24pO3YuYWRkKHRoaXMuX2N1YmVEaXJlY3Rpb25zW2VdKTtjLnVwLmNvcHkodGhpcy5fY3ViZVVwc1tlXSk7Yy5sb29rQXQodik7Yy51cGRhdGVNYXRyaXhXb3JsZCgpO2cubWFrZVRyYW5zbGF0aW9uKC1yLngsLXIueSwtci56KTt6Lm11bHRpcGx5TWF0cmljZXMoYy5wcm9qZWN0aW9uTWF0cml4LGMubWF0cml4V29ybGRJbnZlcnNlKTt0aGlzLl9mcnVzdHVtLnNldEZyb21NYXRyaXgoeil9fSk7UWcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShKYi5wcm90b3R5cGUpLAp7Y29uc3RydWN0b3I6UWcsaXNQb2ludExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7SmIucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMuZGlzdGFuY2U9YS5kaXN0YW5jZTt0aGlzLmRlY2F5PWEuZGVjYXk7dGhpcy5zaGFkb3c9YS5zaGFkb3cuY2xvbmUoKTtyZXR1cm4gdGhpc319KTtiZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKHpiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmJnLGlzT3J0aG9ncmFwaGljQ2FtZXJhOiEwLGNvcHk6ZnVuY3Rpb24oYSxjKXt6Yi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSxjKTt0aGlzLmxlZnQ9YS5sZWZ0O3RoaXMucmlnaHQ9YS5yaWdodDt0aGlzLnRvcD1hLnRvcDt0aGlzLmJvdHRvbT1hLmJvdHRvbTt0aGlzLm5lYXI9YS5uZWFyO3RoaXMuZmFyPWEuZmFyO3RoaXMuem9vbT1hLnpvb207dGhpcy52aWV3PW51bGw9PT1hLnZpZXc/bnVsbDpPYmplY3QuYXNzaWduKHt9LGEudmlldyk7cmV0dXJuIHRoaXN9LApzZXRWaWV3T2Zmc2V0OmZ1bmN0aW9uKGEsYyxlLGcscix2KXtudWxsPT09dGhpcy52aWV3JiYodGhpcy52aWV3PXtlbmFibGVkOiEwLGZ1bGxXaWR0aDoxLGZ1bGxIZWlnaHQ6MSxvZmZzZXRYOjAsb2Zmc2V0WTowLHdpZHRoOjEsaGVpZ2h0OjF9KTt0aGlzLnZpZXcuZW5hYmxlZD0hMDt0aGlzLnZpZXcuZnVsbFdpZHRoPWE7dGhpcy52aWV3LmZ1bGxIZWlnaHQ9Yzt0aGlzLnZpZXcub2Zmc2V0WD1lO3RoaXMudmlldy5vZmZzZXRZPWc7dGhpcy52aWV3LndpZHRoPXI7dGhpcy52aWV3LmhlaWdodD12O3RoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSxjbGVhclZpZXdPZmZzZXQ6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy52aWV3JiYodGhpcy52aWV3LmVuYWJsZWQ9ITEpO3RoaXMudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpfSx1cGRhdGVQcm9qZWN0aW9uTWF0cml4OmZ1bmN0aW9uKCl7dmFyIGE9KHRoaXMucmlnaHQtdGhpcy5sZWZ0KS8oMip0aGlzLnpvb20pLGM9KHRoaXMudG9wLQp0aGlzLmJvdHRvbSkvKDIqdGhpcy56b29tKSxlPSh0aGlzLnJpZ2h0K3RoaXMubGVmdCkvMixnPSh0aGlzLnRvcCt0aGlzLmJvdHRvbSkvMixyPWUtYTtlKz1hO2E9ZytjO2M9Zy1jO2lmKG51bGwhPT10aGlzLnZpZXcmJnRoaXMudmlldy5lbmFibGVkKXtlPXRoaXMuem9vbS8odGhpcy52aWV3LndpZHRoL3RoaXMudmlldy5mdWxsV2lkdGgpO2M9dGhpcy56b29tLyh0aGlzLnZpZXcuaGVpZ2h0L3RoaXMudmlldy5mdWxsSGVpZ2h0KTt2YXIgdj0odGhpcy5yaWdodC10aGlzLmxlZnQpL3RoaXMudmlldy53aWR0aDtnPSh0aGlzLnRvcC10aGlzLmJvdHRvbSkvdGhpcy52aWV3LmhlaWdodDtyKz10aGlzLnZpZXcub2Zmc2V0WC9lKnY7ZT1yK3RoaXMudmlldy53aWR0aC9lKnY7YS09dGhpcy52aWV3Lm9mZnNldFkvYypnO2M9YS10aGlzLnZpZXcuaGVpZ2h0L2MqZ310aGlzLnByb2plY3Rpb25NYXRyaXgubWFrZU9ydGhvZ3JhcGhpYyhyLGUsYSxjLHRoaXMubmVhcix0aGlzLmZhcik7dGhpcy5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5nZXRJbnZlcnNlKHRoaXMucHJvamVjdGlvbk1hdHJpeCl9LAp0b0pTT046ZnVuY3Rpb24oYSl7YT1BLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLGEpO2Eub2JqZWN0Lnpvb209dGhpcy56b29tO2Eub2JqZWN0LmxlZnQ9dGhpcy5sZWZ0O2Eub2JqZWN0LnJpZ2h0PXRoaXMucmlnaHQ7YS5vYmplY3QudG9wPXRoaXMudG9wO2Eub2JqZWN0LmJvdHRvbT10aGlzLmJvdHRvbTthLm9iamVjdC5uZWFyPXRoaXMubmVhcjthLm9iamVjdC5mYXI9dGhpcy5mYXI7bnVsbCE9PXRoaXMudmlldyYmKGEub2JqZWN0LnZpZXc9T2JqZWN0LmFzc2lnbih7fSx0aGlzLnZpZXcpKTtyZXR1cm4gYX19KTtSZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFZjLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlJnLGlzRGlyZWN0aW9uYWxMaWdodFNoYWRvdzohMCx1cGRhdGVNYXRyaWNlczpmdW5jdGlvbihhLGMsZSl7VmMucHJvdG90eXBlLnVwZGF0ZU1hdHJpY2VzLmNhbGwodGhpcyxhLGMsZSl9fSk7U2cucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShKYi5wcm90b3R5cGUpLAp7Y29uc3RydWN0b3I6U2csaXNEaXJlY3Rpb25hbExpZ2h0OiEwLGNvcHk6ZnVuY3Rpb24oYSl7SmIucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMudGFyZ2V0PWEudGFyZ2V0LmNsb25lKCk7dGhpcy5zaGFkb3c9YS5zaGFkb3cuY2xvbmUoKTtyZXR1cm4gdGhpc319KTtUZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEpiLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOlRnLGlzQW1iaWVudExpZ2h0OiEwfSk7VWcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShKYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpVZyxpc1JlY3RBcmVhTGlnaHQ6ITAsY29weTpmdW5jdGlvbihhKXtKYi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7dGhpcy53aWR0aD1hLndpZHRoO3RoaXMuaGVpZ2h0PWEuaGVpZ2h0O3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7YT1KYi5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyxhKTthLm9iamVjdC53aWR0aD0KdGhpcy53aWR0aDthLm9iamVjdC5oZWlnaHQ9dGhpcy5oZWlnaHQ7cmV0dXJuIGF9fSk7VmcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShEYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpWZyxsb2FkOmZ1bmN0aW9uKGEsYyxlLGcpe3ZhciByPXRoaXMsdj1uZXcgdWMoci5tYW5hZ2VyKTt2LnNldFBhdGgoci5wYXRoKTt2LmxvYWQoYSxmdW5jdGlvbih6KXtjKHIucGFyc2UoSlNPTi5wYXJzZSh6KSkpfSxlLGcpfSxwYXJzZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBjKEUpe3ZvaWQgMD09PWVbRV0mJmNvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWxMb2FkZXI6IFVuZGVmaW5lZCB0ZXh0dXJlIixFKTtyZXR1cm4gZVtFXX12YXIgZT10aGlzLnRleHR1cmVzLGc9bmV3IEttW2EudHlwZV07dm9pZCAwIT09YS51dWlkJiYoZy51dWlkPWEudXVpZCk7dm9pZCAwIT09YS5uYW1lJiYoZy5uYW1lPWEubmFtZSk7dm9pZCAwIT09YS5jb2xvciYmZy5jb2xvci5zZXRIZXgoYS5jb2xvcik7CnZvaWQgMCE9PWEucm91Z2huZXNzJiYoZy5yb3VnaG5lc3M9YS5yb3VnaG5lc3MpO3ZvaWQgMCE9PWEubWV0YWxuZXNzJiYoZy5tZXRhbG5lc3M9YS5tZXRhbG5lc3MpO3ZvaWQgMCE9PWEuZW1pc3NpdmUmJmcuZW1pc3NpdmUuc2V0SGV4KGEuZW1pc3NpdmUpO3ZvaWQgMCE9PWEuc3BlY3VsYXImJmcuc3BlY3VsYXIuc2V0SGV4KGEuc3BlY3VsYXIpO3ZvaWQgMCE9PWEuc2hpbmluZXNzJiYoZy5zaGluaW5lc3M9YS5zaGluaW5lc3MpO3ZvaWQgMCE9PWEuY2xlYXJjb2F0JiYoZy5jbGVhcmNvYXQ9YS5jbGVhcmNvYXQpO3ZvaWQgMCE9PWEuY2xlYXJjb2F0Um91Z2huZXNzJiYoZy5jbGVhcmNvYXRSb3VnaG5lc3M9YS5jbGVhcmNvYXRSb3VnaG5lc3MpO3ZvaWQgMCE9PWEudmVydGV4Q29sb3JzJiYoZy52ZXJ0ZXhDb2xvcnM9YS52ZXJ0ZXhDb2xvcnMpO3ZvaWQgMCE9PWEuZm9nJiYoZy5mb2c9YS5mb2cpO3ZvaWQgMCE9PWEuZmxhdFNoYWRpbmcmJihnLmZsYXRTaGFkaW5nPWEuZmxhdFNoYWRpbmcpOwp2b2lkIDAhPT1hLmJsZW5kaW5nJiYoZy5ibGVuZGluZz1hLmJsZW5kaW5nKTt2b2lkIDAhPT1hLmNvbWJpbmUmJihnLmNvbWJpbmU9YS5jb21iaW5lKTt2b2lkIDAhPT1hLnNpZGUmJihnLnNpZGU9YS5zaWRlKTt2b2lkIDAhPT1hLm9wYWNpdHkmJihnLm9wYWNpdHk9YS5vcGFjaXR5KTt2b2lkIDAhPT1hLnRyYW5zcGFyZW50JiYoZy50cmFuc3BhcmVudD1hLnRyYW5zcGFyZW50KTt2b2lkIDAhPT1hLmFscGhhVGVzdCYmKGcuYWxwaGFUZXN0PWEuYWxwaGFUZXN0KTt2b2lkIDAhPT1hLmRlcHRoVGVzdCYmKGcuZGVwdGhUZXN0PWEuZGVwdGhUZXN0KTt2b2lkIDAhPT1hLmRlcHRoV3JpdGUmJihnLmRlcHRoV3JpdGU9YS5kZXB0aFdyaXRlKTt2b2lkIDAhPT1hLmNvbG9yV3JpdGUmJihnLmNvbG9yV3JpdGU9YS5jb2xvcldyaXRlKTt2b2lkIDAhPT1hLndpcmVmcmFtZSYmKGcud2lyZWZyYW1lPWEud2lyZWZyYW1lKTt2b2lkIDAhPT1hLndpcmVmcmFtZUxpbmV3aWR0aCYmKGcud2lyZWZyYW1lTGluZXdpZHRoPQphLndpcmVmcmFtZUxpbmV3aWR0aCk7dm9pZCAwIT09YS53aXJlZnJhbWVMaW5lY2FwJiYoZy53aXJlZnJhbWVMaW5lY2FwPWEud2lyZWZyYW1lTGluZWNhcCk7dm9pZCAwIT09YS53aXJlZnJhbWVMaW5lam9pbiYmKGcud2lyZWZyYW1lTGluZWpvaW49YS53aXJlZnJhbWVMaW5lam9pbik7dm9pZCAwIT09YS5yb3RhdGlvbiYmKGcucm90YXRpb249YS5yb3RhdGlvbik7MSE9PWEubGluZXdpZHRoJiYoZy5saW5ld2lkdGg9YS5saW5ld2lkdGgpO3ZvaWQgMCE9PWEuZGFzaFNpemUmJihnLmRhc2hTaXplPWEuZGFzaFNpemUpO3ZvaWQgMCE9PWEuZ2FwU2l6ZSYmKGcuZ2FwU2l6ZT1hLmdhcFNpemUpO3ZvaWQgMCE9PWEuc2NhbGUmJihnLnNjYWxlPWEuc2NhbGUpO3ZvaWQgMCE9PWEucG9seWdvbk9mZnNldCYmKGcucG9seWdvbk9mZnNldD1hLnBvbHlnb25PZmZzZXQpO3ZvaWQgMCE9PWEucG9seWdvbk9mZnNldEZhY3RvciYmKGcucG9seWdvbk9mZnNldEZhY3Rvcj1hLnBvbHlnb25PZmZzZXRGYWN0b3IpOwp2b2lkIDAhPT1hLnBvbHlnb25PZmZzZXRVbml0cyYmKGcucG9seWdvbk9mZnNldFVuaXRzPWEucG9seWdvbk9mZnNldFVuaXRzKTt2b2lkIDAhPT1hLnNraW5uaW5nJiYoZy5za2lubmluZz1hLnNraW5uaW5nKTt2b2lkIDAhPT1hLm1vcnBoVGFyZ2V0cyYmKGcubW9ycGhUYXJnZXRzPWEubW9ycGhUYXJnZXRzKTt2b2lkIDAhPT1hLm1vcnBoTm9ybWFscyYmKGcubW9ycGhOb3JtYWxzPWEubW9ycGhOb3JtYWxzKTt2b2lkIDAhPT1hLmRpdGhlcmluZyYmKGcuZGl0aGVyaW5nPWEuZGl0aGVyaW5nKTt2b2lkIDAhPT1hLnZpc2libGUmJihnLnZpc2libGU9YS52aXNpYmxlKTt2b2lkIDAhPT1hLnRvbmVNYXBwZWQmJihnLnRvbmVNYXBwZWQ9YS50b25lTWFwcGVkKTt2b2lkIDAhPT1hLnVzZXJEYXRhJiYoZy51c2VyRGF0YT1hLnVzZXJEYXRhKTtpZih2b2lkIDAhPT1hLnVuaWZvcm1zKWZvcih2YXIgciBpbiBhLnVuaWZvcm1zKXt2YXIgdj1hLnVuaWZvcm1zW3JdO2cudW5pZm9ybXNbcl09Cnt9O3N3aXRjaCh2LnR5cGUpe2Nhc2UgInQiOmcudW5pZm9ybXNbcl0udmFsdWU9Yyh2LnZhbHVlKTticmVhaztjYXNlICJjIjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgSSkuc2V0SGV4KHYudmFsdWUpO2JyZWFrO2Nhc2UgInYyIjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgZikuZnJvbUFycmF5KHYudmFsdWUpO2JyZWFrO2Nhc2UgInYzIjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgaykuZnJvbUFycmF5KHYudmFsdWUpO2JyZWFrO2Nhc2UgInY0IjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgcCkuZnJvbUFycmF5KHYudmFsdWUpO2JyZWFrO2Nhc2UgIm0zIjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgdCkuZnJvbUFycmF5KHYudmFsdWUpO2Nhc2UgIm00IjpnLnVuaWZvcm1zW3JdLnZhbHVlPShuZXcgcSkuZnJvbUFycmF5KHYudmFsdWUpO2JyZWFrO2RlZmF1bHQ6Zy51bmlmb3Jtc1tyXS52YWx1ZT12LnZhbHVlfX12b2lkIDAhPT1hLmRlZmluZXMmJihnLmRlZmluZXM9YS5kZWZpbmVzKTsKdm9pZCAwIT09YS52ZXJ0ZXhTaGFkZXImJihnLnZlcnRleFNoYWRlcj1hLnZlcnRleFNoYWRlcik7dm9pZCAwIT09YS5mcmFnbWVudFNoYWRlciYmKGcuZnJhZ21lbnRTaGFkZXI9YS5mcmFnbWVudFNoYWRlcik7aWYodm9pZCAwIT09YS5leHRlbnNpb25zKWZvcih2YXIgeiBpbiBhLmV4dGVuc2lvbnMpZy5leHRlbnNpb25zW3pdPWEuZXh0ZW5zaW9uc1t6XTt2b2lkIDAhPT1hLnNoYWRpbmcmJihnLmZsYXRTaGFkaW5nPTE9PT1hLnNoYWRpbmcpO3ZvaWQgMCE9PWEuc2l6ZSYmKGcuc2l6ZT1hLnNpemUpO3ZvaWQgMCE9PWEuc2l6ZUF0dGVudWF0aW9uJiYoZy5zaXplQXR0ZW51YXRpb249YS5zaXplQXR0ZW51YXRpb24pO3ZvaWQgMCE9PWEubWFwJiYoZy5tYXA9YyhhLm1hcCkpO3ZvaWQgMCE9PWEubWF0Y2FwJiYoZy5tYXRjYXA9YyhhLm1hdGNhcCkpO3ZvaWQgMCE9PWEuYWxwaGFNYXAmJihnLmFscGhhTWFwPWMoYS5hbHBoYU1hcCksZy50cmFuc3BhcmVudD0hMCk7dm9pZCAwIT09CmEuYnVtcE1hcCYmKGcuYnVtcE1hcD1jKGEuYnVtcE1hcCkpO3ZvaWQgMCE9PWEuYnVtcFNjYWxlJiYoZy5idW1wU2NhbGU9YS5idW1wU2NhbGUpO3ZvaWQgMCE9PWEubm9ybWFsTWFwJiYoZy5ub3JtYWxNYXA9YyhhLm5vcm1hbE1hcCkpO3ZvaWQgMCE9PWEubm9ybWFsTWFwVHlwZSYmKGcubm9ybWFsTWFwVHlwZT1hLm5vcm1hbE1hcFR5cGUpO3ZvaWQgMCE9PWEubm9ybWFsU2NhbGUmJihyPWEubm9ybWFsU2NhbGUsITE9PT1BcnJheS5pc0FycmF5KHIpJiYocj1bcixyXSksZy5ub3JtYWxTY2FsZT0obmV3IGYpLmZyb21BcnJheShyKSk7dm9pZCAwIT09YS5kaXNwbGFjZW1lbnRNYXAmJihnLmRpc3BsYWNlbWVudE1hcD1jKGEuZGlzcGxhY2VtZW50TWFwKSk7dm9pZCAwIT09YS5kaXNwbGFjZW1lbnRTY2FsZSYmKGcuZGlzcGxhY2VtZW50U2NhbGU9YS5kaXNwbGFjZW1lbnRTY2FsZSk7dm9pZCAwIT09YS5kaXNwbGFjZW1lbnRCaWFzJiYoZy5kaXNwbGFjZW1lbnRCaWFzPWEuZGlzcGxhY2VtZW50Qmlhcyk7CnZvaWQgMCE9PWEucm91Z2huZXNzTWFwJiYoZy5yb3VnaG5lc3NNYXA9YyhhLnJvdWdobmVzc01hcCkpO3ZvaWQgMCE9PWEubWV0YWxuZXNzTWFwJiYoZy5tZXRhbG5lc3NNYXA9YyhhLm1ldGFsbmVzc01hcCkpO3ZvaWQgMCE9PWEuZW1pc3NpdmVNYXAmJihnLmVtaXNzaXZlTWFwPWMoYS5lbWlzc2l2ZU1hcCkpO3ZvaWQgMCE9PWEuZW1pc3NpdmVJbnRlbnNpdHkmJihnLmVtaXNzaXZlSW50ZW5zaXR5PWEuZW1pc3NpdmVJbnRlbnNpdHkpO3ZvaWQgMCE9PWEuc3BlY3VsYXJNYXAmJihnLnNwZWN1bGFyTWFwPWMoYS5zcGVjdWxhck1hcCkpO3ZvaWQgMCE9PWEuZW52TWFwJiYoZy5lbnZNYXA9YyhhLmVudk1hcCkpO3ZvaWQgMCE9PWEuZW52TWFwSW50ZW5zaXR5JiYoZy5lbnZNYXBJbnRlbnNpdHk9YS5lbnZNYXBJbnRlbnNpdHkpO3ZvaWQgMCE9PWEucmVmbGVjdGl2aXR5JiYoZy5yZWZsZWN0aXZpdHk9YS5yZWZsZWN0aXZpdHkpO3ZvaWQgMCE9PWEucmVmcmFjdGlvblJhdGlvJiYoZy5yZWZyYWN0aW9uUmF0aW89CmEucmVmcmFjdGlvblJhdGlvKTt2b2lkIDAhPT1hLmxpZ2h0TWFwJiYoZy5saWdodE1hcD1jKGEubGlnaHRNYXApKTt2b2lkIDAhPT1hLmxpZ2h0TWFwSW50ZW5zaXR5JiYoZy5saWdodE1hcEludGVuc2l0eT1hLmxpZ2h0TWFwSW50ZW5zaXR5KTt2b2lkIDAhPT1hLmFvTWFwJiYoZy5hb01hcD1jKGEuYW9NYXApKTt2b2lkIDAhPT1hLmFvTWFwSW50ZW5zaXR5JiYoZy5hb01hcEludGVuc2l0eT1hLmFvTWFwSW50ZW5zaXR5KTt2b2lkIDAhPT1hLmdyYWRpZW50TWFwJiYoZy5ncmFkaWVudE1hcD1jKGEuZ3JhZGllbnRNYXApKTt2b2lkIDAhPT1hLmNsZWFyY29hdE5vcm1hbE1hcCYmKGcuY2xlYXJjb2F0Tm9ybWFsTWFwPWMoYS5jbGVhcmNvYXROb3JtYWxNYXApKTt2b2lkIDAhPT1hLmNsZWFyY29hdE5vcm1hbFNjYWxlJiYoZy5jbGVhcmNvYXROb3JtYWxTY2FsZT0obmV3IGYpLmZyb21BcnJheShhLmNsZWFyY29hdE5vcm1hbFNjYWxlKSk7cmV0dXJuIGd9LHNldFRleHR1cmVzOmZ1bmN0aW9uKGEpe3RoaXMudGV4dHVyZXM9CmE7cmV0dXJuIHRoaXN9fSk7dmFyIFBpPXtkZWNvZGVUZXh0OmZ1bmN0aW9uKGEpe2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIFRleHREZWNvZGVyKXJldHVybihuZXcgVGV4dERlY29kZXIpLmRlY29kZShhKTtmb3IodmFyIGM9IiIsZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKyljKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGFbZV0pO3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShjKSl9Y2F0Y2gocil7cmV0dXJuIGN9fSxleHRyYWN0VXJsQmFzZTpmdW5jdGlvbihhKXt2YXIgYz1hLmxhc3RJbmRleE9mKCIvIik7cmV0dXJuLTE9PT1jPyIuLyI6YS5zdWJzdHIoMCxjKzEpfX07V2cucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZSh2YS5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpXZyxpc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5OiEwLGNvcHk6ZnVuY3Rpb24oYSl7dmEucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3RoaXMubWF4SW5zdGFuY2VkQ291bnQ9CmEubWF4SW5zdGFuY2VkQ291bnQ7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT12YS5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyk7YS5tYXhJbnN0YW5jZWRDb3VudD10aGlzLm1heEluc3RhbmNlZENvdW50O2EuaXNJbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT0hMDtyZXR1cm4gYX19KTtYZy5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFEucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WGcsaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU6ITAsY29weTpmdW5jdGlvbihhKXtRLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9YS5tZXNoUGVyQXR0cmlidXRlO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oKXt2YXIgYT1RLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzKTthLm1lc2hQZXJBdHRyaWJ1dGU9CnRoaXMubWVzaFBlckF0dHJpYnV0ZTthLmlzSW5zdGFuY2VkQnVmZmVyQXR0cmlidXRlPSEwO3JldHVybiBhfX0pO1lnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WWcsbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2YXIgcj10aGlzLHY9bmV3IHVjKHIubWFuYWdlcik7di5zZXRQYXRoKHIucGF0aCk7di5sb2FkKGEsZnVuY3Rpb24oeil7YyhyLnBhcnNlKEpTT04ucGFyc2UoeikpKX0sZSxnKX0scGFyc2U6ZnVuY3Rpb24oYSl7dmFyIGM9YS5pc0luc3RhbmNlZEJ1ZmZlckdlb21ldHJ5P25ldyBXZzpuZXcgdmEsZT1hLmRhdGEuaW5kZXg7aWYodm9pZCAwIT09ZSl7dmFyIGc9bmV3IFFpW2UudHlwZV0oZS5hcnJheSk7Yy5zZXRJbmRleChuZXcgUShnLDEpKX1lPWEuZGF0YS5hdHRyaWJ1dGVzO2Zvcih2YXIgciBpbiBlKXt2YXIgdj1lW3JdO2c9bmV3IFFpW3YudHlwZV0odi5hcnJheSk7Zz1uZXcgKHYuaXNJbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU/ClhnOlEpKGcsdi5pdGVtU2l6ZSx2Lm5vcm1hbGl6ZWQpO3ZvaWQgMCE9PXYubmFtZSYmKGcubmFtZT12Lm5hbWUpO2MuYWRkQXR0cmlidXRlKHIsZyl9dmFyIHo9YS5kYXRhLm1vcnBoQXR0cmlidXRlcztpZih6KWZvcihyIGluIHope3ZhciBFPXpbcl0sRz1bXTtlPTA7Zm9yKHZhciBKPUUubGVuZ3RoO2U8SjtlKyspdj1FW2VdLGc9bmV3IFFpW3YudHlwZV0odi5hcnJheSksZz1uZXcgUShnLHYuaXRlbVNpemUsdi5ub3JtYWxpemVkKSx2b2lkIDAhPT12Lm5hbWUmJihnLm5hbWU9di5uYW1lKSxHLnB1c2goZyk7Yy5tb3JwaEF0dHJpYnV0ZXNbcl09R31yPWEuZGF0YS5ncm91cHN8fGEuZGF0YS5kcmF3Y2FsbHN8fGEuZGF0YS5vZmZzZXRzO2lmKHZvaWQgMCE9PXIpZm9yKGU9MCx2PXIubGVuZ3RoO2UhPT12OysrZSlnPXJbZV0sYy5hZGRHcm91cChnLnN0YXJ0LGcuY291bnQsZy5tYXRlcmlhbEluZGV4KTtlPWEuZGF0YS5ib3VuZGluZ1NwaGVyZTt2b2lkIDAhPT1lJiYocj1uZXcgaywKdm9pZCAwIT09ZS5jZW50ZXImJnIuZnJvbUFycmF5KGUuY2VudGVyKSxjLmJvdW5kaW5nU3BoZXJlPW5ldyBGKHIsZS5yYWRpdXMpKTthLm5hbWUmJihjLm5hbWU9YS5uYW1lKTthLnVzZXJEYXRhJiYoYy51c2VyRGF0YT1hLnVzZXJEYXRhKTtyZXR1cm4gY319KTt2YXIgUWk9e0ludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5OiJ1bmRlZmluZWQiIT09dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5P1VpbnQ4Q2xhbXBlZEFycmF5OlVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXl9O1pnLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6WmcsbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2YXIgcj10aGlzLHY9IiI9PT10aGlzLnBhdGg/UGkuZXh0cmFjdFVybEJhc2UoYSk6dGhpcy5wYXRoO3RoaXMucmVzb3VyY2VQYXRoPQp0aGlzLnJlc291cmNlUGF0aHx8djt2PW5ldyB1YyhyLm1hbmFnZXIpO3Yuc2V0UGF0aCh0aGlzLnBhdGgpO3YubG9hZChhLGZ1bmN0aW9uKHope3ZhciBFPW51bGw7dHJ5e0U9SlNPTi5wYXJzZSh6KX1jYXRjaChHKXt2b2lkIDAhPT1nJiZnKEcpO2NvbnNvbGUuZXJyb3IoIlRIUkVFOk9iamVjdExvYWRlcjogQ2FuJ3QgcGFyc2UgIithKyIuIixHLm1lc3NhZ2UpO3JldHVybn16PUUubWV0YWRhdGE7dm9pZCAwPT09enx8dm9pZCAwPT09ei50eXBlfHwiZ2VvbWV0cnkiPT09ei50eXBlLnRvTG93ZXJDYXNlKCk/Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0TG9hZGVyOiBDYW4ndCBsb2FkICIrYSk6ci5wYXJzZShFLGMpfSxlLGcpfSxwYXJzZTpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMucGFyc2VTaGFwZShhLnNoYXBlcyk7ZT10aGlzLnBhcnNlR2VvbWV0cmllcyhhLmdlb21ldHJpZXMsZSk7dmFyIGc9dGhpcy5wYXJzZUltYWdlcyhhLmltYWdlcyxmdW5jdGlvbigpe3ZvaWQgMCE9PQpjJiZjKHIpfSk7Zz10aGlzLnBhcnNlVGV4dHVyZXMoYS50ZXh0dXJlcyxnKTtnPXRoaXMucGFyc2VNYXRlcmlhbHMoYS5tYXRlcmlhbHMsZyk7dmFyIHI9dGhpcy5wYXJzZU9iamVjdChhLm9iamVjdCxlLGcpO2EuYW5pbWF0aW9ucyYmKHIuYW5pbWF0aW9ucz10aGlzLnBhcnNlQW5pbWF0aW9ucyhhLmFuaW1hdGlvbnMpKTt2b2lkIDAhPT1hLmltYWdlcyYmMCE9PWEuaW1hZ2VzLmxlbmd0aHx8dm9pZCAwPT09Y3x8YyhyKTtyZXR1cm4gcn0scGFyc2VTaGFwZTpmdW5jdGlvbihhKXt2YXIgYz17fTtpZih2b2lkIDAhPT1hKWZvcih2YXIgZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKyl7dmFyIHI9KG5ldyBDZCkuZnJvbUpTT04oYVtlXSk7Y1tyLnV1aWRdPXJ9cmV0dXJuIGN9LHBhcnNlR2VvbWV0cmllczpmdW5jdGlvbihhLGMpe3ZhciBlPXt9O2lmKHZvaWQgMCE9PWEpZm9yKHZhciBnPW5ldyBZZyxyPTAsdj1hLmxlbmd0aDtyPHY7cisrKXt2YXIgej1hW3JdO3N3aXRjaCh6LnR5cGUpe2Nhc2UgIlBsYW5lR2VvbWV0cnkiOmNhc2UgIlBsYW5lQnVmZmVyR2VvbWV0cnkiOnZhciBFPQpuZXcgZ2Nbei50eXBlXSh6LndpZHRoLHouaGVpZ2h0LHoud2lkdGhTZWdtZW50cyx6LmhlaWdodFNlZ21lbnRzKTticmVhaztjYXNlICJCb3hHZW9tZXRyeSI6Y2FzZSAiQm94QnVmZmVyR2VvbWV0cnkiOmNhc2UgIkN1YmVHZW9tZXRyeSI6RT1uZXcgZ2Nbei50eXBlXSh6LndpZHRoLHouaGVpZ2h0LHouZGVwdGgsei53aWR0aFNlZ21lbnRzLHouaGVpZ2h0U2VnbWVudHMsei5kZXB0aFNlZ21lbnRzKTticmVhaztjYXNlICJDaXJjbGVHZW9tZXRyeSI6Y2FzZSAiQ2lyY2xlQnVmZmVyR2VvbWV0cnkiOkU9bmV3IGdjW3oudHlwZV0oei5yYWRpdXMsei5zZWdtZW50cyx6LnRoZXRhU3RhcnQsei50aGV0YUxlbmd0aCk7YnJlYWs7Y2FzZSAiQ3lsaW5kZXJHZW9tZXRyeSI6Y2FzZSAiQ3lsaW5kZXJCdWZmZXJHZW9tZXRyeSI6RT1uZXcgZ2Nbei50eXBlXSh6LnJhZGl1c1RvcCx6LnJhZGl1c0JvdHRvbSx6LmhlaWdodCx6LnJhZGlhbFNlZ21lbnRzLHouaGVpZ2h0U2VnbWVudHMsei5vcGVuRW5kZWQsCnoudGhldGFTdGFydCx6LnRoZXRhTGVuZ3RoKTticmVhaztjYXNlICJDb25lR2VvbWV0cnkiOmNhc2UgIkNvbmVCdWZmZXJHZW9tZXRyeSI6RT1uZXcgZ2Nbei50eXBlXSh6LnJhZGl1cyx6LmhlaWdodCx6LnJhZGlhbFNlZ21lbnRzLHouaGVpZ2h0U2VnbWVudHMsei5vcGVuRW5kZWQsei50aGV0YVN0YXJ0LHoudGhldGFMZW5ndGgpO2JyZWFrO2Nhc2UgIlNwaGVyZUdlb21ldHJ5IjpjYXNlICJTcGhlcmVCdWZmZXJHZW9tZXRyeSI6RT1uZXcgZ2Nbei50eXBlXSh6LnJhZGl1cyx6LndpZHRoU2VnbWVudHMsei5oZWlnaHRTZWdtZW50cyx6LnBoaVN0YXJ0LHoucGhpTGVuZ3RoLHoudGhldGFTdGFydCx6LnRoZXRhTGVuZ3RoKTticmVhaztjYXNlICJEb2RlY2FoZWRyb25HZW9tZXRyeSI6Y2FzZSAiRG9kZWNhaGVkcm9uQnVmZmVyR2VvbWV0cnkiOmNhc2UgIkljb3NhaGVkcm9uR2VvbWV0cnkiOmNhc2UgIkljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnkiOmNhc2UgIk9jdGFoZWRyb25HZW9tZXRyeSI6Y2FzZSAiT2N0YWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpjYXNlICJUZXRyYWhlZHJvbkdlb21ldHJ5IjpjYXNlICJUZXRyYWhlZHJvbkJ1ZmZlckdlb21ldHJ5IjpFPQpuZXcgZ2Nbei50eXBlXSh6LnJhZGl1cyx6LmRldGFpbCk7YnJlYWs7Y2FzZSAiUmluZ0dlb21ldHJ5IjpjYXNlICJSaW5nQnVmZmVyR2VvbWV0cnkiOkU9bmV3IGdjW3oudHlwZV0oei5pbm5lclJhZGl1cyx6Lm91dGVyUmFkaXVzLHoudGhldGFTZWdtZW50cyx6LnBoaVNlZ21lbnRzLHoudGhldGFTdGFydCx6LnRoZXRhTGVuZ3RoKTticmVhaztjYXNlICJUb3J1c0dlb21ldHJ5IjpjYXNlICJUb3J1c0J1ZmZlckdlb21ldHJ5IjpFPW5ldyBnY1t6LnR5cGVdKHoucmFkaXVzLHoudHViZSx6LnJhZGlhbFNlZ21lbnRzLHoudHVidWxhclNlZ21lbnRzLHouYXJjKTticmVhaztjYXNlICJUb3J1c0tub3RHZW9tZXRyeSI6Y2FzZSAiVG9ydXNLbm90QnVmZmVyR2VvbWV0cnkiOkU9bmV3IGdjW3oudHlwZV0oei5yYWRpdXMsei50dWJlLHoudHVidWxhclNlZ21lbnRzLHoucmFkaWFsU2VnbWVudHMsei5wLHoucSk7YnJlYWs7Y2FzZSAiVHViZUdlb21ldHJ5IjpjYXNlICJUdWJlQnVmZmVyR2VvbWV0cnkiOkU9Cm5ldyBnY1t6LnR5cGVdKChuZXcgT2lbei5wYXRoLnR5cGVdKS5mcm9tSlNPTih6LnBhdGgpLHoudHVidWxhclNlZ21lbnRzLHoucmFkaXVzLHoucmFkaWFsU2VnbWVudHMsei5jbG9zZWQpO2JyZWFrO2Nhc2UgIkxhdGhlR2VvbWV0cnkiOmNhc2UgIkxhdGhlQnVmZmVyR2VvbWV0cnkiOkU9bmV3IGdjW3oudHlwZV0oei5wb2ludHMsei5zZWdtZW50cyx6LnBoaVN0YXJ0LHoucGhpTGVuZ3RoKTticmVhaztjYXNlICJQb2x5aGVkcm9uR2VvbWV0cnkiOmNhc2UgIlBvbHloZWRyb25CdWZmZXJHZW9tZXRyeSI6RT1uZXcgZ2Nbei50eXBlXSh6LnZlcnRpY2VzLHouaW5kaWNlcyx6LnJhZGl1cyx6LmRldGFpbHMpO2JyZWFrO2Nhc2UgIlNoYXBlR2VvbWV0cnkiOmNhc2UgIlNoYXBlQnVmZmVyR2VvbWV0cnkiOkU9W107Zm9yKHZhciBHPTAsSj16LnNoYXBlcy5sZW5ndGg7RzxKO0crKyl7dmFyIFA9Y1t6LnNoYXBlc1tHXV07RS5wdXNoKFApfUU9bmV3IGdjW3oudHlwZV0oRSx6LmN1cnZlU2VnbWVudHMpOwpicmVhaztjYXNlICJFeHRydWRlR2VvbWV0cnkiOmNhc2UgIkV4dHJ1ZGVCdWZmZXJHZW9tZXRyeSI6RT1bXTtHPTA7Zm9yKEo9ei5zaGFwZXMubGVuZ3RoO0c8SjtHKyspUD1jW3ouc2hhcGVzW0ddXSxFLnB1c2goUCk7Rz16Lm9wdGlvbnMuZXh0cnVkZVBhdGg7dm9pZCAwIT09RyYmKHoub3B0aW9ucy5leHRydWRlUGF0aD0obmV3IE9pW0cudHlwZV0pLmZyb21KU09OKEcpKTtFPW5ldyBnY1t6LnR5cGVdKEUsei5vcHRpb25zKTticmVhaztjYXNlICJCdWZmZXJHZW9tZXRyeSI6Y2FzZSAiSW5zdGFuY2VkQnVmZmVyR2VvbWV0cnkiOkU9Zy5wYXJzZSh6KTticmVhaztjYXNlICJHZW9tZXRyeSI6IlRIUkVFImluIHdpbmRvdyYmIkxlZ2FjeUpTT05Mb2FkZXIiaW4gVEhSRUU/RT0obmV3IFRIUkVFLkxlZ2FjeUpTT05Mb2FkZXIpLnBhcnNlKHosdGhpcy5yZXNvdXJjZVBhdGgpLmdlb21ldHJ5OmNvbnNvbGUuZXJyb3IoJ1RIUkVFLk9iamVjdExvYWRlcjogWW91IGhhdmUgdG8gaW1wb3J0IExlZ2FjeUpTT05Mb2FkZXIgaW4gb3JkZXIgbG9hZCBnZW9tZXRyeSBkYXRhIG9mIHR5cGUgIkdlb21ldHJ5Ii4nKTsKYnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oJ1RIUkVFLk9iamVjdExvYWRlcjogVW5zdXBwb3J0ZWQgZ2VvbWV0cnkgdHlwZSAiJyt6LnR5cGUrJyInKTtjb250aW51ZX1FLnV1aWQ9ei51dWlkO3ZvaWQgMCE9PXoubmFtZSYmKEUubmFtZT16Lm5hbWUpOyEwPT09RS5pc0J1ZmZlckdlb21ldHJ5JiZ2b2lkIDAhPT16LnVzZXJEYXRhJiYoRS51c2VyRGF0YT16LnVzZXJEYXRhKTtlW3oudXVpZF09RX1yZXR1cm4gZX0scGFyc2VNYXRlcmlhbHM6ZnVuY3Rpb24oYSxjKXt2YXIgZT17fSxnPXt9O2lmKHZvaWQgMCE9PWEpe3ZhciByPW5ldyBWZztyLnNldFRleHR1cmVzKGMpO2M9MDtmb3IodmFyIHY9YS5sZW5ndGg7Yzx2O2MrKyl7dmFyIHo9YVtjXTtpZigiTXVsdGlNYXRlcmlhbCI9PT16LnR5cGUpe2Zvcih2YXIgRT1bXSxHPTA7Rzx6Lm1hdGVyaWFscy5sZW5ndGg7RysrKXt2YXIgSj16Lm1hdGVyaWFsc1tHXTt2b2lkIDA9PT1lW0oudXVpZF0mJihlW0oudXVpZF09ci5wYXJzZShKKSk7CkUucHVzaChlW0oudXVpZF0pfWdbei51dWlkXT1FfWVsc2Ugdm9pZCAwPT09ZVt6LnV1aWRdJiYoZVt6LnV1aWRdPXIucGFyc2UoeikpLGdbei51dWlkXT1lW3oudXVpZF19fXJldHVybiBnfSxwYXJzZUFuaW1hdGlvbnM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPVtdLGU9MDtlPGEubGVuZ3RoO2UrKyl7dmFyIGc9YVtlXSxyPXRjLnBhcnNlKGcpO3ZvaWQgMCE9PWcudXVpZCYmKHIudXVpZD1nLnV1aWQpO2MucHVzaChyKX1yZXR1cm4gY30scGFyc2VJbWFnZXM6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiBlKFMpe2cubWFuYWdlci5pdGVtU3RhcnQoUyk7cmV0dXJuIHYubG9hZChTLGZ1bmN0aW9uKCl7Zy5tYW5hZ2VyLml0ZW1FbmQoUyl9LHZvaWQgMCxmdW5jdGlvbigpe2cubWFuYWdlci5pdGVtRXJyb3IoUyk7Zy5tYW5hZ2VyLml0ZW1FbmQoUyl9KX12YXIgZz10aGlzLHI9e307aWYodm9pZCAwIT09YSYmMDxhLmxlbmd0aCl7Yz1uZXcgJGgoYyk7dmFyIHY9bmV3IFVlKGMpO3Yuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7CmM9MDtmb3IodmFyIHo9YS5sZW5ndGg7Yzx6O2MrKyl7dmFyIEU9YVtjXSxHPUUudXJsO2lmKEFycmF5LmlzQXJyYXkoRykpe3JbRS51dWlkXT1bXTtmb3IodmFyIEo9MCxQPUcubGVuZ3RoO0o8UDtKKyspe3ZhciBSPUdbSl07Uj0vXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChSKT9SOmcucmVzb3VyY2VQYXRoK1I7cltFLnV1aWRdLnB1c2goZShSKSl9fWVsc2UgUj0vXihcL1wvKXwoW2Etel0rOihcL1wvKT8pL2kudGVzdChFLnVybCk/RS51cmw6Zy5yZXNvdXJjZVBhdGgrRS51cmwscltFLnV1aWRdPWUoUil9fXJldHVybiByfSxwYXJzZVRleHR1cmVzOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZShHLEope2lmKCJudW1iZXIiPT09dHlwZW9mIEcpcmV0dXJuIEc7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXIucGFyc2VUZXh0dXJlOiBDb25zdGFudCBzaG91bGQgYmUgaW4gbnVtZXJpYyBmb3JtLiIsRyk7cmV0dXJuIEpbR119dmFyIGc9e307aWYodm9pZCAwIT09CmEpZm9yKHZhciByPTAsdj1hLmxlbmd0aDtyPHY7cisrKXt2YXIgej1hW3JdO3ZvaWQgMD09PXouaW1hZ2UmJmNvbnNvbGUud2FybignVEhSRUUuT2JqZWN0TG9hZGVyOiBObyAiaW1hZ2UiIHNwZWNpZmllZCBmb3InLHoudXVpZCk7dm9pZCAwPT09Y1t6LmltYWdlXSYmY29uc29sZS53YXJuKCJUSFJFRS5PYmplY3RMb2FkZXI6IFVuZGVmaW5lZCBpbWFnZSIsei5pbWFnZSk7dmFyIEU9QXJyYXkuaXNBcnJheShjW3ouaW1hZ2VdKT9uZXcgY2QoY1t6LmltYWdlXSk6bmV3IGwoY1t6LmltYWdlXSk7RS5uZWVkc1VwZGF0ZT0hMDtFLnV1aWQ9ei51dWlkO3ZvaWQgMCE9PXoubmFtZSYmKEUubmFtZT16Lm5hbWUpO3ZvaWQgMCE9PXoubWFwcGluZyYmKEUubWFwcGluZz1lKHoubWFwcGluZyxMbSkpO3ZvaWQgMCE9PXoub2Zmc2V0JiZFLm9mZnNldC5mcm9tQXJyYXkoei5vZmZzZXQpO3ZvaWQgMCE9PXoucmVwZWF0JiZFLnJlcGVhdC5mcm9tQXJyYXkoei5yZXBlYXQpO3ZvaWQgMCE9PXouY2VudGVyJiYKRS5jZW50ZXIuZnJvbUFycmF5KHouY2VudGVyKTt2b2lkIDAhPT16LnJvdGF0aW9uJiYoRS5yb3RhdGlvbj16LnJvdGF0aW9uKTt2b2lkIDAhPT16LndyYXAmJihFLndyYXBTPWUoei53cmFwWzBdLHNrKSxFLndyYXBUPWUoei53cmFwWzFdLHNrKSk7dm9pZCAwIT09ei5mb3JtYXQmJihFLmZvcm1hdD16LmZvcm1hdCk7dm9pZCAwIT09ei50eXBlJiYoRS50eXBlPXoudHlwZSk7dm9pZCAwIT09ei5lbmNvZGluZyYmKEUuZW5jb2Rpbmc9ei5lbmNvZGluZyk7dm9pZCAwIT09ei5taW5GaWx0ZXImJihFLm1pbkZpbHRlcj1lKHoubWluRmlsdGVyLHRrKSk7dm9pZCAwIT09ei5tYWdGaWx0ZXImJihFLm1hZ0ZpbHRlcj1lKHoubWFnRmlsdGVyLHRrKSk7dm9pZCAwIT09ei5hbmlzb3Ryb3B5JiYoRS5hbmlzb3Ryb3B5PXouYW5pc290cm9weSk7dm9pZCAwIT09ei5mbGlwWSYmKEUuZmxpcFk9ei5mbGlwWSk7dm9pZCAwIT09ei5wcmVtdWx0aXBseUFscGhhJiYoRS5wcmVtdWx0aXBseUFscGhhPQp6LnByZW11bHRpcGx5QWxwaGEpO3ZvaWQgMCE9PXoudW5wYWNrQWxpZ25tZW50JiYoRS51bnBhY2tBbGlnbm1lbnQ9ei51bnBhY2tBbGlnbm1lbnQpO2dbei51dWlkXT1FfXJldHVybiBnfSxwYXJzZU9iamVjdDpmdW5jdGlvbihhLGMsZSl7ZnVuY3Rpb24gZyhKKXt2b2lkIDA9PT1jW0pdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIGdlb21ldHJ5IixKKTtyZXR1cm4gY1tKXX1mdW5jdGlvbiByKEope2lmKHZvaWQgMCE9PUope2lmKEFycmF5LmlzQXJyYXkoSikpe2Zvcih2YXIgUD1bXSxSPTAsUz1KLmxlbmd0aDtSPFM7UisrKXt2YXIgVj1KW1JdO3ZvaWQgMD09PWVbVl0mJmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyOiBVbmRlZmluZWQgbWF0ZXJpYWwiLFYpO1AucHVzaChlW1ZdKX1yZXR1cm4gUH12b2lkIDA9PT1lW0pdJiZjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogVW5kZWZpbmVkIG1hdGVyaWFsIixKKTtyZXR1cm4gZVtKXX19CnN3aXRjaChhLnR5cGUpe2Nhc2UgIlNjZW5lIjp2YXIgdj1uZXcgeTt2b2lkIDAhPT1hLmJhY2tncm91bmQmJk51bWJlci5pc0ludGVnZXIoYS5iYWNrZ3JvdW5kKSYmKHYuYmFja2dyb3VuZD1uZXcgSShhLmJhY2tncm91bmQpKTt2b2lkIDAhPT1hLmZvZyYmKCJGb2ciPT09YS5mb2cudHlwZT92LmZvZz1uZXcgQWcoYS5mb2cuY29sb3IsYS5mb2cubmVhcixhLmZvZy5mYXIpOiJGb2dFeHAyIj09PWEuZm9nLnR5cGUmJih2LmZvZz1uZXcgemcoYS5mb2cuY29sb3IsYS5mb2cuZGVuc2l0eSkpKTticmVhaztjYXNlICJQZXJzcGVjdGl2ZUNhbWVyYSI6dj1uZXcgdmIoYS5mb3YsYS5hc3BlY3QsYS5uZWFyLGEuZmFyKTt2b2lkIDAhPT1hLmZvY3VzJiYodi5mb2N1cz1hLmZvY3VzKTt2b2lkIDAhPT1hLnpvb20mJih2Lnpvb209YS56b29tKTt2b2lkIDAhPT1hLmZpbG1HYXVnZSYmKHYuZmlsbUdhdWdlPWEuZmlsbUdhdWdlKTt2b2lkIDAhPT1hLmZpbG1PZmZzZXQmJih2LmZpbG1PZmZzZXQ9CmEuZmlsbU9mZnNldCk7dm9pZCAwIT09YS52aWV3JiYodi52aWV3PU9iamVjdC5hc3NpZ24oe30sYS52aWV3KSk7YnJlYWs7Y2FzZSAiT3J0aG9ncmFwaGljQ2FtZXJhIjp2PW5ldyBiZyhhLmxlZnQsYS5yaWdodCxhLnRvcCxhLmJvdHRvbSxhLm5lYXIsYS5mYXIpO3ZvaWQgMCE9PWEuem9vbSYmKHYuem9vbT1hLnpvb20pO3ZvaWQgMCE9PWEudmlldyYmKHYudmlldz1PYmplY3QuYXNzaWduKHt9LGEudmlldykpO2JyZWFrO2Nhc2UgIkFtYmllbnRMaWdodCI6dj1uZXcgVGcoYS5jb2xvcixhLmludGVuc2l0eSk7YnJlYWs7Y2FzZSAiRGlyZWN0aW9uYWxMaWdodCI6dj1uZXcgU2coYS5jb2xvcixhLmludGVuc2l0eSk7YnJlYWs7Y2FzZSAiUG9pbnRMaWdodCI6dj1uZXcgUWcoYS5jb2xvcixhLmludGVuc2l0eSxhLmRpc3RhbmNlLGEuZGVjYXkpO2JyZWFrO2Nhc2UgIlJlY3RBcmVhTGlnaHQiOnY9bmV3IFVnKGEuY29sb3IsYS5pbnRlbnNpdHksYS53aWR0aCxhLmhlaWdodCk7YnJlYWs7CmNhc2UgIlNwb3RMaWdodCI6dj1uZXcgUGcoYS5jb2xvcixhLmludGVuc2l0eSxhLmRpc3RhbmNlLGEuYW5nbGUsYS5wZW51bWJyYSxhLmRlY2F5KTticmVhaztjYXNlICJIZW1pc3BoZXJlTGlnaHQiOnY9bmV3IE5nKGEuY29sb3IsYS5ncm91bmRDb2xvcixhLmludGVuc2l0eSk7YnJlYWs7Y2FzZSAiU2tpbm5lZE1lc2giOmNvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0TG9hZGVyLnBhcnNlT2JqZWN0KCkgZG9lcyBub3Qgc3VwcG9ydCBTa2lubmVkTWVzaCB5ZXQuIik7Y2FzZSAiTWVzaCI6dj1nKGEuZ2VvbWV0cnkpO3ZhciB6PXIoYS5tYXRlcmlhbCk7dj12LmJvbmVzJiYwPHYuYm9uZXMubGVuZ3RoP25ldyBCZih2LHopOm5ldyB4YSh2LHopO3ZvaWQgMCE9PWEuZHJhd01vZGUmJnYuc2V0RHJhd01vZGUoYS5kcmF3TW9kZSk7YnJlYWs7Y2FzZSAiTE9EIjp2PW5ldyBBZjticmVhaztjYXNlICJMaW5lIjp2PW5ldyBWYihnKGEuZ2VvbWV0cnkpLHIoYS5tYXRlcmlhbCksYS5tb2RlKTsKYnJlYWs7Y2FzZSAiTGluZUxvb3AiOnY9bmV3IERnKGcoYS5nZW9tZXRyeSkscihhLm1hdGVyaWFsKSk7YnJlYWs7Y2FzZSAiTGluZVNlZ21lbnRzIjp2PW5ldyBJYihnKGEuZ2VvbWV0cnkpLHIoYS5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UgIlBvaW50Q2xvdWQiOmNhc2UgIlBvaW50cyI6dj1uZXcgQ2UoZyhhLmdlb21ldHJ5KSxyKGEubWF0ZXJpYWwpKTticmVhaztjYXNlICJTcHJpdGUiOnY9bmV3IHlmKHIoYS5tYXRlcmlhbCkpO2JyZWFrO2Nhc2UgIkdyb3VwIjp2PW5ldyB1ZTticmVhaztkZWZhdWx0OnY9bmV3IEF9di51dWlkPWEudXVpZDt2b2lkIDAhPT1hLm5hbWUmJih2Lm5hbWU9YS5uYW1lKTt2b2lkIDAhPT1hLm1hdHJpeD8odi5tYXRyaXguZnJvbUFycmF5KGEubWF0cml4KSx2b2lkIDAhPT1hLm1hdHJpeEF1dG9VcGRhdGUmJih2Lm1hdHJpeEF1dG9VcGRhdGU9YS5tYXRyaXhBdXRvVXBkYXRlKSx2Lm1hdHJpeEF1dG9VcGRhdGUmJnYubWF0cml4LmRlY29tcG9zZSh2LnBvc2l0aW9uLAp2LnF1YXRlcm5pb24sdi5zY2FsZSkpOih2b2lkIDAhPT1hLnBvc2l0aW9uJiZ2LnBvc2l0aW9uLmZyb21BcnJheShhLnBvc2l0aW9uKSx2b2lkIDAhPT1hLnJvdGF0aW9uJiZ2LnJvdGF0aW9uLmZyb21BcnJheShhLnJvdGF0aW9uKSx2b2lkIDAhPT1hLnF1YXRlcm5pb24mJnYucXVhdGVybmlvbi5mcm9tQXJyYXkoYS5xdWF0ZXJuaW9uKSx2b2lkIDAhPT1hLnNjYWxlJiZ2LnNjYWxlLmZyb21BcnJheShhLnNjYWxlKSk7dm9pZCAwIT09YS5jYXN0U2hhZG93JiYodi5jYXN0U2hhZG93PWEuY2FzdFNoYWRvdyk7dm9pZCAwIT09YS5yZWNlaXZlU2hhZG93JiYodi5yZWNlaXZlU2hhZG93PWEucmVjZWl2ZVNoYWRvdyk7YS5zaGFkb3cmJih2b2lkIDAhPT1hLnNoYWRvdy5iaWFzJiYodi5zaGFkb3cuYmlhcz1hLnNoYWRvdy5iaWFzKSx2b2lkIDAhPT1hLnNoYWRvdy5yYWRpdXMmJih2LnNoYWRvdy5yYWRpdXM9YS5zaGFkb3cucmFkaXVzKSx2b2lkIDAhPT1hLnNoYWRvdy5tYXBTaXplJiYKdi5zaGFkb3cubWFwU2l6ZS5mcm9tQXJyYXkoYS5zaGFkb3cubWFwU2l6ZSksdm9pZCAwIT09YS5zaGFkb3cuY2FtZXJhJiYodi5zaGFkb3cuY2FtZXJhPXRoaXMucGFyc2VPYmplY3QoYS5zaGFkb3cuY2FtZXJhKSkpO3ZvaWQgMCE9PWEudmlzaWJsZSYmKHYudmlzaWJsZT1hLnZpc2libGUpO3ZvaWQgMCE9PWEuZnJ1c3R1bUN1bGxlZCYmKHYuZnJ1c3R1bUN1bGxlZD1hLmZydXN0dW1DdWxsZWQpO3ZvaWQgMCE9PWEucmVuZGVyT3JkZXImJih2LnJlbmRlck9yZGVyPWEucmVuZGVyT3JkZXIpO3ZvaWQgMCE9PWEudXNlckRhdGEmJih2LnVzZXJEYXRhPWEudXNlckRhdGEpO3ZvaWQgMCE9PWEubGF5ZXJzJiYodi5sYXllcnMubWFzaz1hLmxheWVycyk7aWYodm9pZCAwIT09YS5jaGlsZHJlbil7ej1hLmNoaWxkcmVuO2Zvcih2YXIgRT0wO0U8ei5sZW5ndGg7RSsrKXYuYWRkKHRoaXMucGFyc2VPYmplY3QoeltFXSxjLGUpKX1pZigiTE9EIj09PWEudHlwZSlmb3IoYT1hLmxldmVscyx6PQowO3o8YS5sZW5ndGg7eisrKXtFPWFbel07dmFyIEc9di5nZXRPYmplY3RCeVByb3BlcnR5KCJ1dWlkIixFLm9iamVjdCk7dm9pZCAwIT09RyYmdi5hZGRMZXZlbChHLEUuZGlzdGFuY2UpfXJldHVybiB2fX0pO3ZhciBMbT17VVZNYXBwaW5nOjMwMCxDdWJlUmVmbGVjdGlvbk1hcHBpbmc6MzAxLEN1YmVSZWZyYWN0aW9uTWFwcGluZzozMDIsRXF1aXJlY3Rhbmd1bGFyUmVmbGVjdGlvbk1hcHBpbmc6MzAzLEVxdWlyZWN0YW5ndWxhclJlZnJhY3Rpb25NYXBwaW5nOjMwNCxTcGhlcmljYWxSZWZsZWN0aW9uTWFwcGluZzozMDUsQ3ViZVVWUmVmbGVjdGlvbk1hcHBpbmc6MzA2LEN1YmVVVlJlZnJhY3Rpb25NYXBwaW5nOjMwN30sc2s9e1JlcGVhdFdyYXBwaW5nOjFFMyxDbGFtcFRvRWRnZVdyYXBwaW5nOjEwMDEsTWlycm9yZWRSZXBlYXRXcmFwcGluZzoxMDAyfSx0az17TmVhcmVzdEZpbHRlcjoxMDAzLE5lYXJlc3RNaXBtYXBOZWFyZXN0RmlsdGVyOjEwMDQsTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcjoxMDA1LApMaW5lYXJGaWx0ZXI6MTAwNixMaW5lYXJNaXBtYXBOZWFyZXN0RmlsdGVyOjEwMDcsTGluZWFyTWlwbWFwTGluZWFyRmlsdGVyOjEwMDh9O2VpLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoRGIucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6ZWksc2V0T3B0aW9uczpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9YTtyZXR1cm4gdGhpc30sbG9hZDpmdW5jdGlvbihhLGMsZSxnKXt2b2lkIDA9PT1hJiYoYT0iIik7dm9pZCAwIT09dGhpcy5wYXRoJiYoYT10aGlzLnBhdGgrYSk7YT10aGlzLm1hbmFnZXIucmVzb2x2ZVVSTChhKTt2YXIgcj10aGlzLHY9aWUuZ2V0KGEpO2lmKHZvaWQgMCE9PXYpcmV0dXJuIHIubWFuYWdlci5pdGVtU3RhcnQoYSksc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmModik7ci5tYW5hZ2VyLml0ZW1FbmQoYSl9LDApLHY7ZmV0Y2goYSkudGhlbihmdW5jdGlvbih6KXtyZXR1cm4gei5ibG9iKCl9KS50aGVuKGZ1bmN0aW9uKHope3JldHVybiB2b2lkIDA9PT0Kci5vcHRpb25zP2NyZWF0ZUltYWdlQml0bWFwKHopOmNyZWF0ZUltYWdlQml0bWFwKHosci5vcHRpb25zKX0pLnRoZW4oZnVuY3Rpb24oeil7aWUuYWRkKGEseik7YyYmYyh6KTtyLm1hbmFnZXIuaXRlbUVuZChhKX0pLmNhdGNoKGZ1bmN0aW9uKHope2cmJmcoeik7ci5tYW5hZ2VyLml0ZW1FcnJvcihhKTtyLm1hbmFnZXIuaXRlbUVuZChhKX0pO3IubWFuYWdlci5pdGVtU3RhcnQoYSl9fSk7T2JqZWN0LmFzc2lnbihmaS5wcm90b3R5cGUse21vdmVUbzpmdW5jdGlvbihhLGMpe3RoaXMuY3VycmVudFBhdGg9bmV3IEdjO3RoaXMuc3ViUGF0aHMucHVzaCh0aGlzLmN1cnJlbnRQYXRoKTt0aGlzLmN1cnJlbnRQYXRoLm1vdmVUbyhhLGMpfSxsaW5lVG86ZnVuY3Rpb24oYSxjKXt0aGlzLmN1cnJlbnRQYXRoLmxpbmVUbyhhLGMpfSxxdWFkcmF0aWNDdXJ2ZVRvOmZ1bmN0aW9uKGEsYyxlLGcpe3RoaXMuY3VycmVudFBhdGgucXVhZHJhdGljQ3VydmVUbyhhLGMsZSxnKX0sYmV6aWVyQ3VydmVUbzpmdW5jdGlvbihhLApjLGUsZyxyLHYpe3RoaXMuY3VycmVudFBhdGguYmV6aWVyQ3VydmVUbyhhLGMsZSxnLHIsdil9LHNwbGluZVRocnU6ZnVuY3Rpb24oYSl7dGhpcy5jdXJyZW50UGF0aC5zcGxpbmVUaHJ1KGEpfSx0b1NoYXBlczpmdW5jdGlvbihhLGMpe2Z1bmN0aW9uIGUoZmEpe2Zvcih2YXIgcmE9W10scGE9MCxxYT1mYS5sZW5ndGg7cGE8cWE7cGErKyl7dmFyIHVhPWZhW3BhXSxvYT1uZXcgQ2Q7b2EuY3VydmVzPXVhLmN1cnZlcztyYS5wdXNoKG9hKX1yZXR1cm4gcmF9ZnVuY3Rpb24gZyhmYSxyYSl7Zm9yKHZhciBwYT1yYS5sZW5ndGgscWE9ITEsdWE9cGEtMSxvYT0wO29hPHBhO3VhPW9hKyspe3ZhciB0YT1yYVt1YV0sQmE9cmFbb2FdLFRhPUJhLngtdGEueCxVYT1CYS55LXRhLnk7aWYoTWF0aC5hYnMoVWEpPk51bWJlci5FUFNJTE9OKXtpZigwPlVhJiYodGE9cmFbb2FdLFRhPS1UYSxCYT1yYVt1YV0sVWE9LVVhKSwhKGZhLnk8dGEueXx8ZmEueT5CYS55KSlpZihmYS55PT09dGEueSl7aWYoZmEueD09PQp0YS54KXJldHVybiEwfWVsc2V7dWE9VWEqKGZhLngtdGEueCktVGEqKGZhLnktdGEueSk7aWYoMD09PXVhKXJldHVybiEwOzA+dWF8fChxYT0hcWEpfX1lbHNlIGlmKGZhLnk9PT10YS55JiYoQmEueDw9ZmEueCYmZmEueDw9dGEueHx8dGEueDw9ZmEueCYmZmEueDw9QmEueCkpcmV0dXJuITB9cmV0dXJuIHFhfXZhciByPWVkLmlzQ2xvY2tXaXNlLHY9dGhpcy5zdWJQYXRocztpZigwPT09di5sZW5ndGgpcmV0dXJuW107aWYoITA9PT1jKXJldHVybiBlKHYpO2M9W107aWYoMT09PXYubGVuZ3RoKXt2YXIgej12WzBdO3ZhciBFPW5ldyBDZDtFLmN1cnZlcz16LmN1cnZlcztjLnB1c2goRSk7cmV0dXJuIGN9dmFyIEc9IXIodlswXS5nZXRQb2ludHMoKSk7Rz1hPyFHOkc7RT1bXTt2YXIgSj1bXSxQPVtdLFI9MDtKW1JdPXZvaWQgMDtQW1JdPVtdO2Zvcih2YXIgUz0wLFY9di5sZW5ndGg7UzxWO1MrKyl7ej12W1NdO3ZhciBXPXouZ2V0UG9pbnRzKCk7dmFyIGhhPXIoVyk7KGhhPWE/IWhhOgpoYSk/KCFHJiZKW1JdJiZSKyssSltSXT17czpuZXcgQ2QscDpXfSxKW1JdLnMuY3VydmVzPXouY3VydmVzLEcmJlIrKyxQW1JdPVtdKTpQW1JdLnB1c2goe2g6eixwOldbMF19KX1pZighSlswXSlyZXR1cm4gZSh2KTtpZigxPEoubGVuZ3RoKXtTPSExO2E9W107cj0wO2Zvcih2PUoubGVuZ3RoO3I8djtyKyspRVtyXT1bXTtyPTA7Zm9yKHY9Si5sZW5ndGg7cjx2O3IrKylmb3Ioej1QW3JdLGhhPTA7aGE8ei5sZW5ndGg7aGErKyl7Rz16W2hhXTtSPSEwO2ZvcihXPTA7VzxKLmxlbmd0aDtXKyspZyhHLnAsSltXXS5wKSYmKHIhPT1XJiZhLnB1c2goe2Zyb21zOnIsdG9zOlcsaG9sZTpoYX0pLFI/KFI9ITEsRVtXXS5wdXNoKEcpKTpTPSEwKTtSJiZFW3JdLnB1c2goRyl9MDxhLmxlbmd0aCYmKFN8fChQPUUpKX1TPTA7Zm9yKHI9Si5sZW5ndGg7UzxyO1MrKylmb3IoRT1KW1NdLnMsYy5wdXNoKEUpLGE9UFtTXSx2PTAsej1hLmxlbmd0aDt2PHo7disrKUUuaG9sZXMucHVzaChhW3ZdLmgpOwpyZXR1cm4gY319KTtPYmplY3QuYXNzaWduKGdpLnByb3RvdHlwZSx7aXNGb250OiEwLGdlbmVyYXRlU2hhcGVzOmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGM9MTAwKTt2YXIgZT1bXTthPXZtKGEsYyx0aGlzLmRhdGEpO2M9MDtmb3IodmFyIGc9YS5sZW5ndGg7YzxnO2MrKylBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShlLGFbY10udG9TaGFwZXMoKSk7cmV0dXJuIGV9fSk7aGkucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShEYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpoaSxsb2FkOmZ1bmN0aW9uKGEsYyxlLGcpe3ZhciByPXRoaXMsdj1uZXcgdWModGhpcy5tYW5hZ2VyKTt2LnNldFBhdGgodGhpcy5wYXRoKTt2LmxvYWQoYSxmdW5jdGlvbih6KXt0cnl7dmFyIEU9SlNPTi5wYXJzZSh6KX1jYXRjaChHKXtjb25zb2xlLndhcm4oIlRIUkVFLkZvbnRMb2FkZXI6IHR5cGVmYWNlLmpzIHN1cHBvcnQgaXMgYmVpbmcgZGVwcmVjYXRlZC4gVXNlIHR5cGVmYWNlLmpzb24gaW5zdGVhZC4iKSwKRT1KU09OLnBhcnNlKHouc3Vic3RyaW5nKDY1LHoubGVuZ3RoLTIpKX16PXIucGFyc2UoRSk7YyYmYyh6KX0sZSxnKX0scGFyc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBnaShhKX19KTt2YXIgeWgsbWk9e2dldENvbnRleHQ6ZnVuY3Rpb24oKXt2b2lkIDA9PT15aCYmKHloPW5ldyAod2luZG93LkF1ZGlvQ29udGV4dHx8d2luZG93LndlYmtpdEF1ZGlvQ29udGV4dCkpO3JldHVybiB5aH0sc2V0Q29udGV4dDpmdW5jdGlvbihhKXt5aD1hfX07JGcucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShEYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjokZyxsb2FkOmZ1bmN0aW9uKGEsYyxlLGcpe3ZhciByPW5ldyB1Yyh0aGlzLm1hbmFnZXIpO3Iuc2V0UmVzcG9uc2VUeXBlKCJhcnJheWJ1ZmZlciIpO3Iuc2V0UGF0aCh0aGlzLnBhdGgpO3IubG9hZChhLGZ1bmN0aW9uKHYpe3Y9di5zbGljZSgwKTttaS5nZXRDb250ZXh0KCkuZGVjb2RlQXVkaW9EYXRhKHYsZnVuY3Rpb24oeil7Yyh6KX0pfSwKZSxnKX19KTtPYmplY3QuYXNzaWduKGFoLnByb3RvdHlwZSx7aXNTcGhlcmljYWxIYXJtb25pY3MzOiEwLHNldDpmdW5jdGlvbihhKXtmb3IodmFyIGM9MDs5PmM7YysrKXRoaXMuY29lZmZpY2llbnRzW2NdLmNvcHkoYVtjXSk7cmV0dXJuIHRoaXN9LHplcm86ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDs5PmE7YSsrKXRoaXMuY29lZmZpY2llbnRzW2FdLnNldCgwLDAsMCk7cmV0dXJuIHRoaXN9LGdldEF0OmZ1bmN0aW9uKGEsYyl7dmFyIGU9YS54LGc9YS55O2E9YS56O3ZhciByPXRoaXMuY29lZmZpY2llbnRzO2MuY29weShyWzBdKS5tdWx0aXBseVNjYWxhciguMjgyMDk1KTtjLmFkZFNjYWxlKHJbMV0sLjQ4ODYwMypnKTtjLmFkZFNjYWxlKHJbMl0sLjQ4ODYwMyphKTtjLmFkZFNjYWxlKHJbM10sLjQ4ODYwMyplKTtjLmFkZFNjYWxlKHJbNF0sMS4wOTI1NDgqZSpnKTtjLmFkZFNjYWxlKHJbNV0sMS4wOTI1NDgqZyphKTtjLmFkZFNjYWxlKHJbNl0sLjMxNTM5MiooMyphKmEtMSkpOwpjLmFkZFNjYWxlKHJbN10sMS4wOTI1NDgqZSphKTtjLmFkZFNjYWxlKHJbOF0sLjU0NjI3NCooZSplLWcqZykpO3JldHVybiBjfSxnZXRJcnJhZGlhbmNlQXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZT1hLngsZz1hLnk7YT1hLno7dmFyIHI9dGhpcy5jb2VmZmljaWVudHM7Yy5jb3B5KHJbMF0pLm11bHRpcGx5U2NhbGFyKC44ODYyMjcpO2MuYWRkU2NhbGUoclsxXSwxLjAyMzMyOCpnKTtjLmFkZFNjYWxlKHJbMl0sMS4wMjMzMjgqYSk7Yy5hZGRTY2FsZShyWzNdLDEuMDIzMzI4KmUpO2MuYWRkU2NhbGUocls0XSwuODU4MDg2KmUqZyk7Yy5hZGRTY2FsZShyWzVdLC44NTgwODYqZyphKTtjLmFkZFNjYWxlKHJbNl0sLjc0MzEyNSphKmEtLjI0NzcwOCk7Yy5hZGRTY2FsZShyWzddLC44NTgwODYqZSphKTtjLmFkZFNjYWxlKHJbOF0sLjQyOTA0MyooZSplLWcqZykpO3JldHVybiBjfSxhZGQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTA7OT5jO2MrKyl0aGlzLmNvZWZmaWNpZW50c1tjXS5hZGQoYS5jb2VmZmljaWVudHNbY10pOwpyZXR1cm4gdGhpc30sc2NhbGU6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPTA7OT5jO2MrKyl0aGlzLmNvZWZmaWNpZW50c1tjXS5tdWx0aXBseVNjYWxhcihhKTtyZXR1cm4gdGhpc30sbGVycDpmdW5jdGlvbihhLGMpe2Zvcih2YXIgZT0wOzk+ZTtlKyspdGhpcy5jb2VmZmljaWVudHNbZV0ubGVycChhLmNvZWZmaWNpZW50c1tlXSxjKTtyZXR1cm4gdGhpc30sZXF1YWxzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wOzk+YztjKyspaWYoIXRoaXMuY29lZmZpY2llbnRzW2NdLmVxdWFscyhhLmNvZWZmaWNpZW50c1tjXSkpcmV0dXJuITE7cmV0dXJuITB9LGNvcHk6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0KGEuY29lZmZpY2llbnRzKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGZyb21BcnJheTpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjPTApO2Zvcih2YXIgZT10aGlzLmNvZWZmaWNpZW50cyxnPTA7OT5nO2crKyllW2ddLmZyb21BcnJheShhLApjKzMqZyk7cmV0dXJuIHRoaXN9LHRvQXJyYXk6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1hJiYoYT1bXSk7dm9pZCAwPT09YyYmKGM9MCk7Zm9yKHZhciBlPXRoaXMuY29lZmZpY2llbnRzLGc9MDs5Pmc7ZysrKWVbZ10udG9BcnJheShhLGMrMypnKTtyZXR1cm4gYX19KTtPYmplY3QuYXNzaWduKGFoLHtnZXRCYXNpc0F0OmZ1bmN0aW9uKGEsYyl7dmFyIGU9YS54LGc9YS55O2E9YS56O2NbMF09LjI4MjA5NTtjWzFdPS40ODg2MDMqZztjWzJdPS40ODg2MDMqYTtjWzNdPS40ODg2MDMqZTtjWzRdPTEuMDkyNTQ4KmUqZztjWzVdPTEuMDkyNTQ4KmcqYTtjWzZdPS4zMTUzOTIqKDMqYSphLTEpO2NbN109MS4wOTI1NDgqZSphO2NbOF09LjU0NjI3NCooZSplLWcqZyl9fSk7SGMucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShKYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpIYyxpc0xpZ2h0UHJvYmU6ITAsY29weTpmdW5jdGlvbihhKXtKYi5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsCmEpO3RoaXMuc2guY29weShhLnNoKTt0aGlzLmludGVuc2l0eT1hLmludGVuc2l0eTtyZXR1cm4gdGhpc30sdG9KU09OOmZ1bmN0aW9uKGEpe3JldHVybiBKYi5wcm90b3R5cGUudG9KU09OLmNhbGwodGhpcyxhKX19KTtpaS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKEhjLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOmlpLGlzSGVtaXNwaGVyZUxpZ2h0UHJvYmU6ITAsY29weTpmdW5jdGlvbihhKXtIYy5wcm90b3R5cGUuY29weS5jYWxsKHRoaXMsYSk7cmV0dXJuIHRoaXN9LHRvSlNPTjpmdW5jdGlvbihhKXtyZXR1cm4gSGMucHJvdG90eXBlLnRvSlNPTi5jYWxsKHRoaXMsYSl9fSk7amkucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShIYy5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpqaSxpc0FtYmllbnRMaWdodFByb2JlOiEwLGNvcHk6ZnVuY3Rpb24oYSl7SGMucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEpO3JldHVybiB0aGlzfSx0b0pTT046ZnVuY3Rpb24oYSl7cmV0dXJuIEhjLnByb3RvdHlwZS50b0pTT04uY2FsbCh0aGlzLAphKX19KTt2YXIgdWs9bmV3IHEsdms9bmV3IHE7T2JqZWN0LmFzc2lnbihRai5wcm90b3R5cGUse3VwZGF0ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLl9jYWNoZTtpZihjLmZvY3VzIT09YS5mb2N1c3x8Yy5mb3YhPT1hLmZvdnx8Yy5hc3BlY3QhPT1hLmFzcGVjdCp0aGlzLmFzcGVjdHx8Yy5uZWFyIT09YS5uZWFyfHxjLmZhciE9PWEuZmFyfHxjLnpvb20hPT1hLnpvb218fGMuZXllU2VwIT09dGhpcy5leWVTZXApe2MuZm9jdXM9YS5mb2N1cztjLmZvdj1hLmZvdjtjLmFzcGVjdD1hLmFzcGVjdCp0aGlzLmFzcGVjdDtjLm5lYXI9YS5uZWFyO2MuZmFyPWEuZmFyO2Muem9vbT1hLnpvb207Yy5leWVTZXA9dGhpcy5leWVTZXA7dmFyIGU9YS5wcm9qZWN0aW9uTWF0cml4LmNsb25lKCksZz1jLmV5ZVNlcC8yLHI9ZypjLm5lYXIvYy5mb2N1cyx2PWMubmVhcipNYXRoLnRhbihoYi5ERUcyUkFEKmMuZm92Ki41KS9jLnpvb207dmsuZWxlbWVudHNbMTJdPS1nO3VrLmVsZW1lbnRzWzEyXT0KZztnPS12KmMuYXNwZWN0K3I7dmFyIHo9dipjLmFzcGVjdCtyO2UuZWxlbWVudHNbMF09MipjLm5lYXIvKHotZyk7ZS5lbGVtZW50c1s4XT0oeitnKS8oei1nKTt0aGlzLmNhbWVyYUwucHJvamVjdGlvbk1hdHJpeC5jb3B5KGUpO2c9LXYqYy5hc3BlY3Qtcjt6PXYqYy5hc3BlY3QtcjtlLmVsZW1lbnRzWzBdPTIqYy5uZWFyLyh6LWcpO2UuZWxlbWVudHNbOF09KHorZykvKHotZyk7dGhpcy5jYW1lcmFSLnByb2plY3Rpb25NYXRyaXguY29weShlKX10aGlzLmNhbWVyYUwubWF0cml4V29ybGQuY29weShhLm1hdHJpeFdvcmxkKS5tdWx0aXBseSh2ayk7dGhpcy5jYW1lcmFSLm1hdHJpeFdvcmxkLmNvcHkoYS5tYXRyaXhXb3JsZCkubXVsdGlwbHkodWspfX0pO09iamVjdC5hc3NpZ24oa2kucHJvdG90eXBlLHtzdGFydDpmdW5jdGlvbigpe3RoaXMub2xkVGltZT10aGlzLnN0YXJ0VGltZT0oInVuZGVmaW5lZCI9PT10eXBlb2YgcGVyZm9ybWFuY2U/RGF0ZTpwZXJmb3JtYW5jZSkubm93KCk7CnRoaXMuZWxhcHNlZFRpbWU9MDt0aGlzLnJ1bm5pbmc9ITB9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmdldEVsYXBzZWRUaW1lKCk7dGhpcy5hdXRvU3RhcnQ9dGhpcy5ydW5uaW5nPSExfSxnZXRFbGFwc2VkVGltZTpmdW5jdGlvbigpe3RoaXMuZ2V0RGVsdGEoKTtyZXR1cm4gdGhpcy5lbGFwc2VkVGltZX0sZ2V0RGVsdGE6ZnVuY3Rpb24oKXt2YXIgYT0wO2lmKHRoaXMuYXV0b1N0YXJ0JiYhdGhpcy5ydW5uaW5nKXJldHVybiB0aGlzLnN0YXJ0KCksMDtpZih0aGlzLnJ1bm5pbmcpe3ZhciBjPSgidW5kZWZpbmVkIj09PXR5cGVvZiBwZXJmb3JtYW5jZT9EYXRlOnBlcmZvcm1hbmNlKS5ub3coKTthPShjLXRoaXMub2xkVGltZSkvMUUzO3RoaXMub2xkVGltZT1jO3RoaXMuZWxhcHNlZFRpbWUrPWF9cmV0dXJuIGF9fSk7dmFyIGplPW5ldyBrLHdrPW5ldyBoLE1tPW5ldyBrLGtlPW5ldyBrO2xpLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpLAp7Y29uc3RydWN0b3I6bGksZ2V0SW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nYWlufSxyZW1vdmVGaWx0ZXI6ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5maWx0ZXImJih0aGlzLmdhaW4uZGlzY29ubmVjdCh0aGlzLmZpbHRlciksdGhpcy5maWx0ZXIuZGlzY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pLHRoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuY29udGV4dC5kZXN0aW5hdGlvbiksdGhpcy5maWx0ZXI9bnVsbCk7cmV0dXJuIHRoaXN9LGdldEZpbHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcn0sc2V0RmlsdGVyOmZ1bmN0aW9uKGEpe251bGwhPT10aGlzLmZpbHRlcj8odGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXIpLHRoaXMuZmlsdGVyLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKSk6dGhpcy5nYWluLmRpc2Nvbm5lY3QodGhpcy5jb250ZXh0LmRlc3RpbmF0aW9uKTt0aGlzLmZpbHRlcj1hO3RoaXMuZ2Fpbi5jb25uZWN0KHRoaXMuZmlsdGVyKTsKdGhpcy5maWx0ZXIuY29ubmVjdCh0aGlzLmNvbnRleHQuZGVzdGluYXRpb24pO3JldHVybiB0aGlzfSxnZXRNYXN0ZXJWb2x1bWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nYWluLmdhaW4udmFsdWV9LHNldE1hc3RlclZvbHVtZTpmdW5jdGlvbihhKXt0aGlzLmdhaW4uZ2Fpbi5zZXRUYXJnZXRBdFRpbWUoYSx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKTtyZXR1cm4gdGhpc30sdXBkYXRlTWF0cml4V29ybGQ6ZnVuY3Rpb24oYSl7QS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpO2E9dGhpcy5jb250ZXh0Lmxpc3RlbmVyO3ZhciBjPXRoaXMudXA7dGhpcy50aW1lRGVsdGE9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKTt0aGlzLm1hdHJpeFdvcmxkLmRlY29tcG9zZShqZSx3ayxNbSk7a2Uuc2V0KDAsMCwtMSkuYXBwbHlRdWF0ZXJuaW9uKHdrKTtpZihhLnBvc2l0aW9uWCl7dmFyIGU9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lK3RoaXMudGltZURlbHRhOwphLnBvc2l0aW9uWC5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShqZS54LGUpO2EucG9zaXRpb25ZLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGplLnksZSk7YS5wb3NpdGlvbloubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoamUueixlKTthLmZvcndhcmRYLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGtlLngsZSk7YS5mb3J3YXJkWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShrZS55LGUpO2EuZm9yd2FyZFoubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoa2UueixlKTthLnVwWC5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShjLngsZSk7YS51cFkubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUoYy55LGUpO2EudXBaLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGMueixlKX1lbHNlIGEuc2V0UG9zaXRpb24oamUueCxqZS55LGplLnopLGEuc2V0T3JpZW50YXRpb24oa2UueCxrZS55LGtlLnosYy54LGMueSxjLnopfX0pO1dlLnByb3RvdHlwZT1PYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpLAp7Y29uc3RydWN0b3I6V2UsZ2V0T3V0cHV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2Fpbn0sc2V0Tm9kZVNvdXJjZTpmdW5jdGlvbihhKXt0aGlzLmhhc1BsYXliYWNrQ29udHJvbD0hMTt0aGlzLnNvdXJjZVR5cGU9ImF1ZGlvTm9kZSI7dGhpcy5zb3VyY2U9YTt0aGlzLmNvbm5lY3QoKTtyZXR1cm4gdGhpc30sc2V0TWVkaWFFbGVtZW50U291cmNlOmZ1bmN0aW9uKGEpe3RoaXMuaGFzUGxheWJhY2tDb250cm9sPSExO3RoaXMuc291cmNlVHlwZT0ibWVkaWFOb2RlIjt0aGlzLnNvdXJjZT10aGlzLmNvbnRleHQuY3JlYXRlTWVkaWFFbGVtZW50U291cmNlKGEpO3RoaXMuY29ubmVjdCgpO3JldHVybiB0aGlzfSxzZXRCdWZmZXI6ZnVuY3Rpb24oYSl7dGhpcy5idWZmZXI9YTt0aGlzLnNvdXJjZVR5cGU9ImJ1ZmZlciI7dGhpcy5hdXRvcGxheSYmdGhpcy5wbGF5KCk7cmV0dXJuIHRoaXN9LHBsYXk6ZnVuY3Rpb24oKXtpZighMD09PXRoaXMuaXNQbGF5aW5nKWNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IEF1ZGlvIGlzIGFscmVhZHkgcGxheWluZy4iKTsKZWxzZSBpZighMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sKWNvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IHRoaXMgQXVkaW8gaGFzIG5vIHBsYXliYWNrIGNvbnRyb2wuIik7ZWxzZXt2YXIgYT10aGlzLmNvbnRleHQuY3JlYXRlQnVmZmVyU291cmNlKCk7YS5idWZmZXI9dGhpcy5idWZmZXI7YS5sb29wPXRoaXMubG9vcDthLm9uZW5kZWQ9dGhpcy5vbkVuZGVkLmJpbmQodGhpcyk7dGhpcy5zdGFydFRpbWU9dGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lO2Euc3RhcnQodGhpcy5zdGFydFRpbWUsdGhpcy5vZmZzZXQsdGhpcy5kdXJhdGlvbik7dGhpcy5pc1BsYXlpbmc9ITA7dGhpcy5zb3VyY2U9YTt0aGlzLnNldERldHVuZSh0aGlzLmRldHVuZSk7dGhpcy5zZXRQbGF5YmFja1JhdGUodGhpcy5wbGF5YmFja1JhdGUpO3JldHVybiB0aGlzLmNvbm5lY3QoKX19LHBhdXNlOmZ1bmN0aW9uKCl7aWYoITE9PT10aGlzLmhhc1BsYXliYWNrQ29udHJvbCljb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpOwplbHNlIHJldHVybiEwPT09dGhpcy5pc1BsYXlpbmcmJih0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMub2Zmc2V0Kz0odGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLXRoaXMuc3RhcnRUaW1lKSp0aGlzLnBsYXliYWNrUmF0ZSx0aGlzLmlzUGxheWluZz0hMSksdGhpc30sc3RvcDpmdW5jdGlvbigpe2lmKCExPT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2wpY29uc29sZS53YXJuKCJUSFJFRS5BdWRpbzogdGhpcyBBdWRpbyBoYXMgbm8gcGxheWJhY2sgY29udHJvbC4iKTtlbHNlIHJldHVybiB0aGlzLnNvdXJjZS5zdG9wKCksdGhpcy5zb3VyY2Uub25lbmRlZD1udWxsLHRoaXMub2Zmc2V0PTAsdGhpcy5pc1BsYXlpbmc9ITEsdGhpc30sY29ubmVjdDpmdW5jdGlvbigpe2lmKDA8dGhpcy5maWx0ZXJzLmxlbmd0aCl7dGhpcy5zb3VyY2UuY29ubmVjdCh0aGlzLmZpbHRlcnNbMF0pO2Zvcih2YXIgYT0xLGM9dGhpcy5maWx0ZXJzLmxlbmd0aDthPGM7YSsrKXRoaXMuZmlsdGVyc1thLQoxXS5jb25uZWN0KHRoaXMuZmlsdGVyc1thXSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmNvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXN9LGRpc2Nvbm5lY3Q6ZnVuY3Rpb24oKXtpZigwPHRoaXMuZmlsdGVycy5sZW5ndGgpe3RoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5maWx0ZXJzWzBdKTtmb3IodmFyIGE9MSxjPXRoaXMuZmlsdGVycy5sZW5ndGg7YTxjO2ErKyl0aGlzLmZpbHRlcnNbYS0xXS5kaXNjb25uZWN0KHRoaXMuZmlsdGVyc1thXSk7dGhpcy5maWx0ZXJzW3RoaXMuZmlsdGVycy5sZW5ndGgtMV0uZGlzY29ubmVjdCh0aGlzLmdldE91dHB1dCgpKX1lbHNlIHRoaXMuc291cmNlLmRpc2Nvbm5lY3QodGhpcy5nZXRPdXRwdXQoKSk7cmV0dXJuIHRoaXN9LGdldEZpbHRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWx0ZXJzfSxzZXRGaWx0ZXJzOmZ1bmN0aW9uKGEpe2F8fAooYT1bXSk7ITA9PT10aGlzLmlzUGxheWluZz8odGhpcy5kaXNjb25uZWN0KCksdGhpcy5maWx0ZXJzPWEsdGhpcy5jb25uZWN0KCkpOnRoaXMuZmlsdGVycz1hO3JldHVybiB0aGlzfSxzZXREZXR1bmU6ZnVuY3Rpb24oYSl7dGhpcy5kZXR1bmU9YTtpZih2b2lkIDAhPT10aGlzLnNvdXJjZS5kZXR1bmUpcmV0dXJuITA9PT10aGlzLmlzUGxheWluZyYmdGhpcy5zb3VyY2UuZGV0dW5lLnNldFRhcmdldEF0VGltZSh0aGlzLmRldHVuZSx0aGlzLmNvbnRleHQuY3VycmVudFRpbWUsLjAxKSx0aGlzfSxnZXREZXR1bmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kZXR1bmV9LGdldEZpbHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZpbHRlcnMoKVswXX0sc2V0RmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNldEZpbHRlcnMoYT9bYV06W10pfSxzZXRQbGF5YmFja1JhdGU6ZnVuY3Rpb24oYSl7aWYoITE9PT10aGlzLmhhc1BsYXliYWNrQ29udHJvbCljb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpOwplbHNlIHJldHVybiB0aGlzLnBsYXliYWNrUmF0ZT1hLCEwPT09dGhpcy5pc1BsYXlpbmcmJnRoaXMuc291cmNlLnBsYXliYWNrUmF0ZS5zZXRUYXJnZXRBdFRpbWUodGhpcy5wbGF5YmFja1JhdGUsdGhpcy5jb250ZXh0LmN1cnJlbnRUaW1lLC4wMSksdGhpc30sZ2V0UGxheWJhY2tSYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGxheWJhY2tSYXRlfSxvbkVuZGVkOmZ1bmN0aW9uKCl7dGhpcy5pc1BsYXlpbmc9ITF9LGdldExvb3A6ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXRoaXMuaGFzUGxheWJhY2tDb250cm9sPyhjb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpLCExKTp0aGlzLmxvb3B9LHNldExvb3A6ZnVuY3Rpb24oYSl7aWYoITE9PT10aGlzLmhhc1BsYXliYWNrQ29udHJvbCljb25zb2xlLndhcm4oIlRIUkVFLkF1ZGlvOiB0aGlzIEF1ZGlvIGhhcyBubyBwbGF5YmFjayBjb250cm9sLiIpO2Vsc2UgcmV0dXJuIHRoaXMubG9vcD0KYSwhMD09PXRoaXMuaXNQbGF5aW5nJiYodGhpcy5zb3VyY2UubG9vcD10aGlzLmxvb3ApLHRoaXN9LGdldFZvbHVtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdhaW4uZ2Fpbi52YWx1ZX0sc2V0Vm9sdW1lOmZ1bmN0aW9uKGEpe3RoaXMuZ2Fpbi5nYWluLnNldFRhcmdldEF0VGltZShhLHRoaXMuY29udGV4dC5jdXJyZW50VGltZSwuMDEpO3JldHVybiB0aGlzfX0pO3ZhciBsZT1uZXcgayx4az1uZXcgaCxObT1uZXcgayxtZT1uZXcgaztuaS5wcm90b3R5cGU9T2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKFdlLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOm5pLGdldE91dHB1dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbm5lcn0sZ2V0UmVmRGlzdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYW5uZXIucmVmRGlzdGFuY2V9LHNldFJlZkRpc3RhbmNlOmZ1bmN0aW9uKGEpe3RoaXMucGFubmVyLnJlZkRpc3RhbmNlPWE7cmV0dXJuIHRoaXN9LGdldFJvbGxvZmZGYWN0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYW5uZXIucm9sbG9mZkZhY3Rvcn0sCnNldFJvbGxvZmZGYWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIucm9sbG9mZkZhY3Rvcj1hO3JldHVybiB0aGlzfSxnZXREaXN0YW5jZU1vZGVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFubmVyLmRpc3RhbmNlTW9kZWx9LHNldERpc3RhbmNlTW9kZWw6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIuZGlzdGFuY2VNb2RlbD1hO3JldHVybiB0aGlzfSxnZXRNYXhEaXN0YW5jZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhbm5lci5tYXhEaXN0YW5jZX0sc2V0TWF4RGlzdGFuY2U6ZnVuY3Rpb24oYSl7dGhpcy5wYW5uZXIubWF4RGlzdGFuY2U9YTtyZXR1cm4gdGhpc30sc2V0RGlyZWN0aW9uYWxDb25lOmZ1bmN0aW9uKGEsYyxlKXt0aGlzLnBhbm5lci5jb25lSW5uZXJBbmdsZT1hO3RoaXMucGFubmVyLmNvbmVPdXRlckFuZ2xlPWM7dGhpcy5wYW5uZXIuY29uZU91dGVyR2Fpbj1lO3JldHVybiB0aGlzfSx1cGRhdGVNYXRyaXhXb3JsZDpmdW5jdGlvbihhKXtBLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsCmEpO2lmKCEwIT09dGhpcy5oYXNQbGF5YmFja0NvbnRyb2x8fCExIT09dGhpcy5pc1BsYXlpbmcpaWYodGhpcy5tYXRyaXhXb3JsZC5kZWNvbXBvc2UobGUseGssTm0pLG1lLnNldCgwLDAsMSkuYXBwbHlRdWF0ZXJuaW9uKHhrKSxhPXRoaXMucGFubmVyLGEucG9zaXRpb25YKXt2YXIgYz10aGlzLmNvbnRleHQuY3VycmVudFRpbWUrdGhpcy5saXN0ZW5lci50aW1lRGVsdGE7YS5wb3NpdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobGUueCxjKTthLnBvc2l0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShsZS55LGMpO2EucG9zaXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKGxlLnosYyk7YS5vcmllbnRhdGlvblgubGluZWFyUmFtcFRvVmFsdWVBdFRpbWUobWUueCxjKTthLm9yaWVudGF0aW9uWS5saW5lYXJSYW1wVG9WYWx1ZUF0VGltZShtZS55LGMpO2Eub3JpZW50YXRpb25aLmxpbmVhclJhbXBUb1ZhbHVlQXRUaW1lKG1lLnosYyl9ZWxzZSBhLnNldFBvc2l0aW9uKGxlLngsCmxlLnksbGUueiksYS5zZXRPcmllbnRhdGlvbihtZS54LG1lLnksbWUueil9fSk7T2JqZWN0LmFzc2lnbihvaS5wcm90b3R5cGUse2dldEZyZXF1ZW5jeURhdGE6ZnVuY3Rpb24oKXt0aGlzLmFuYWx5c2VyLmdldEJ5dGVGcmVxdWVuY3lEYXRhKHRoaXMuZGF0YSk7cmV0dXJuIHRoaXMuZGF0YX0sZ2V0QXZlcmFnZUZyZXF1ZW5jeTpmdW5jdGlvbigpe2Zvcih2YXIgYT0wLGM9dGhpcy5nZXRGcmVxdWVuY3lEYXRhKCksZT0wO2U8Yy5sZW5ndGg7ZSsrKWErPWNbZV07cmV0dXJuIGEvYy5sZW5ndGh9fSk7T2JqZWN0LmFzc2lnbihwaS5wcm90b3R5cGUse2FjY3VtdWxhdGU6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmJ1ZmZlcixnPXRoaXMudmFsdWVTaXplO2E9YSpnK2c7dmFyIHI9dGhpcy5jdW11bGF0aXZlV2VpZ2h0O2lmKDA9PT1yKXtmb3Iocj0wO3IhPT1nOysrcillW2Ercl09ZVtyXTtyPWN9ZWxzZSByKz1jLHRoaXMuX21peEJ1ZmZlclJlZ2lvbihlLGEsMCxjL3IsZyk7dGhpcy5jdW11bGF0aXZlV2VpZ2h0PQpyfSxhcHBseTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnZhbHVlU2l6ZSxlPXRoaXMuYnVmZmVyO2E9YSpjK2M7dmFyIGc9dGhpcy5jdW11bGF0aXZlV2VpZ2h0LHI9dGhpcy5iaW5kaW5nO3RoaXMuY3VtdWxhdGl2ZVdlaWdodD0wOzE+ZyYmdGhpcy5fbWl4QnVmZmVyUmVnaW9uKGUsYSwzKmMsMS1nLGMpO2c9Yztmb3IodmFyIHY9YytjO2chPT12OysrZylpZihlW2ddIT09ZVtnK2NdKXtyLnNldFZhbHVlKGUsYSk7YnJlYWt9fSxzYXZlT3JpZ2luYWxTdGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYnVmZmVyLGM9dGhpcy52YWx1ZVNpemUsZT0zKmM7dGhpcy5iaW5kaW5nLmdldFZhbHVlKGEsZSk7Zm9yKHZhciBnPWM7ZyE9PWU7KytnKWFbZ109YVtlK2clY107dGhpcy5jdW11bGF0aXZlV2VpZ2h0PTB9LHJlc3RvcmVPcmlnaW5hbFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5iaW5kaW5nLnNldFZhbHVlKHRoaXMuYnVmZmVyLDMqdGhpcy52YWx1ZVNpemUpfSxfc2VsZWN0OmZ1bmN0aW9uKGEsCmMsZSxnLHIpe2lmKC41PD1nKWZvcihnPTA7ZyE9PXI7KytnKWFbYytnXT1hW2UrZ119LF9zbGVycDpmdW5jdGlvbihhLGMsZSxnKXtoLnNsZXJwRmxhdChhLGMsYSxjLGEsZSxnKX0sX2xlcnA6ZnVuY3Rpb24oYSxjLGUsZyxyKXtmb3IodmFyIHY9MS1nLHo9MDt6IT09cjsrK3ope3ZhciBFPWMrejthW0VdPWFbRV0qdithW2Urel0qZ319fSk7dmFyIE9tPS9bXFtcXVwuOlwvXS9nLFBtPSJbXiIrIlxcW1xcXVxcLjpcXC8iLnJlcGxhY2UoIlxcLiIsIiIpKyJdIixRbT0vKCg/OldDK1tcLzpdKSopLy5zb3VyY2UucmVwbGFjZSgiV0MiLCJbXlxcW1xcXVxcLjpcXC9dIiksUm09LyhXQ09EKyk/Ly5zb3VyY2UucmVwbGFjZSgiV0NPRCIsUG0pLFNtPS8oPzpcLihXQyspKD86XFsoLispXF0pPyk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLCJbXlxcW1xcXVxcLjpcXC9dIiksVG09L1wuKFdDKykoPzpcWyguKylcXSk/Ly5zb3VyY2UucmVwbGFjZSgiV0MiLCJbXlxcW1xcXVxcLjpcXC9dIiksVW09Cm5ldyBSZWdFeHAoIl4iK1FtK1JtK1NtK1RtKyIkIiksVm09WyJtYXRlcmlhbCIsIm1hdGVyaWFscyIsImJvbmVzIl07T2JqZWN0LmFzc2lnbihSai5wcm90b3R5cGUse2dldFZhbHVlOmZ1bmN0aW9uKGEsYyl7dGhpcy5iaW5kKCk7dmFyIGU9dGhpcy5fYmluZGluZ3NbdGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfXTt2b2lkIDAhPT1lJiZlLmdldFZhbHVlKGEsYyl9LHNldFZhbHVlOmZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBlPXRoaXMuX2JpbmRpbmdzLGc9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLHI9ZS5sZW5ndGg7ZyE9PXI7KytnKWVbZ10uc2V0VmFsdWUoYSxjKX0sYmluZDpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLl9iaW5kaW5ncyxjPXRoaXMuX3RhcmdldEdyb3VwLm5DYWNoZWRPYmplY3RzXyxlPWEubGVuZ3RoO2MhPT1lOysrYylhW2NdLmJpbmQoKX0sdW5iaW5kOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuX2JpbmRpbmdzLGM9dGhpcy5fdGFyZ2V0R3JvdXAubkNhY2hlZE9iamVjdHNfLAplPWEubGVuZ3RoO2MhPT1lOysrYylhW2NdLnVuYmluZCgpfX0pO09iamVjdC5hc3NpZ24oJGIse0NvbXBvc2l0ZTpSaixjcmVhdGU6ZnVuY3Rpb24oYSxjLGUpe3JldHVybiBhJiZhLmlzQW5pbWF0aW9uT2JqZWN0R3JvdXA/bmV3ICRiLkNvbXBvc2l0ZShhLGMsZSk6bmV3ICRiKGEsYyxlKX0sc2FuaXRpemVOb2RlTmFtZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9ccy9nLCJfIikucmVwbGFjZShPbSwiIil9LHBhcnNlVHJhY2tOYW1lOmZ1bmN0aW9uKGEpe3ZhciBjPVVtLmV4ZWMoYSk7aWYoIWMpdGhyb3cgRXJyb3IoIlByb3BlcnR5QmluZGluZzogQ2Fubm90IHBhcnNlIHRyYWNrTmFtZTogIithKTtjPXtub2RlTmFtZTpjWzJdLG9iamVjdE5hbWU6Y1szXSxvYmplY3RJbmRleDpjWzRdLHByb3BlcnR5TmFtZTpjWzVdLHByb3BlcnR5SW5kZXg6Y1s2XX07dmFyIGU9Yy5ub2RlTmFtZSYmYy5ub2RlTmFtZS5sYXN0SW5kZXhPZigiLiIpO2lmKHZvaWQgMCE9PWUmJi0xIT09CmUpe3ZhciBnPWMubm9kZU5hbWUuc3Vic3RyaW5nKGUrMSk7LTEhPT1WbS5pbmRleE9mKGcpJiYoYy5ub2RlTmFtZT1jLm5vZGVOYW1lLnN1YnN0cmluZygwLGUpLGMub2JqZWN0TmFtZT1nKX1pZihudWxsPT09Yy5wcm9wZXJ0eU5hbWV8fDA9PT1jLnByb3BlcnR5TmFtZS5sZW5ndGgpdGhyb3cgRXJyb3IoIlByb3BlcnR5QmluZGluZzogY2FuIG5vdCBwYXJzZSBwcm9wZXJ0eU5hbWUgZnJvbSB0cmFja05hbWU6ICIrYSk7cmV0dXJuIGN9LGZpbmROb2RlOmZ1bmN0aW9uKGEsYyl7aWYoIWN8fCIiPT09Y3x8InJvb3QiPT09Y3x8Ii4iPT09Y3x8LTE9PT1jfHxjPT09YS5uYW1lfHxjPT09YS51dWlkKXJldHVybiBhO2lmKGEuc2tlbGV0b24pe3ZhciBlPWEuc2tlbGV0b24uZ2V0Qm9uZUJ5TmFtZShjKTtpZih2b2lkIDAhPT1lKXJldHVybiBlfWlmKGEuY2hpbGRyZW4pe3ZhciBnPWZ1bmN0aW9uKHIpe2Zvcih2YXIgdj0wO3Y8ci5sZW5ndGg7disrKXt2YXIgej1yW3ZdO2lmKHoubmFtZT09PQpjfHx6LnV1aWQ9PT1jKXJldHVybiB6O2lmKHo9Zyh6LmNoaWxkcmVuKSlyZXR1cm4gen1yZXR1cm4gbnVsbH07aWYoYT1nKGEuY2hpbGRyZW4pKXJldHVybiBhfXJldHVybiBudWxsfX0pO09iamVjdC5hc3NpZ24oJGIucHJvdG90eXBlLHtfZ2V0VmFsdWVfdW5hdmFpbGFibGU6ZnVuY3Rpb24oKXt9LF9zZXRWYWx1ZV91bmF2YWlsYWJsZTpmdW5jdGlvbigpe30sQmluZGluZ1R5cGU6e0RpcmVjdDowLEVudGlyZUFycmF5OjEsQXJyYXlFbGVtZW50OjIsSGFzRnJvbVRvQXJyYXk6M30sVmVyc2lvbmluZzp7Tm9uZTowLE5lZWRzVXBkYXRlOjEsTWF0cml4V29ybGROZWVkc1VwZGF0ZToyfSxHZXR0ZXJCeUJpbmRpbmdUeXBlOltmdW5jdGlvbihhLGMpe2FbY109dGhpcy5ub2RlW3RoaXMucHJvcGVydHlOYW1lXX0sZnVuY3Rpb24oYSxjKXtmb3IodmFyIGU9dGhpcy5yZXNvbHZlZFByb3BlcnR5LGc9MCxyPWUubGVuZ3RoO2chPT1yOysrZylhW2MrK109ZVtnXX0sZnVuY3Rpb24oYSxjKXthW2NdPQp0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XX0sZnVuY3Rpb24oYSxjKXt0aGlzLnJlc29sdmVkUHJvcGVydHkudG9BcnJheShhLGMpfV0sU2V0dGVyQnlCaW5kaW5nVHlwZUFuZFZlcnNpb25pbmc6W1tmdW5jdGlvbihhLGMpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT1hW2NdfSxmdW5jdGlvbihhLGMpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT1hW2NdO3RoaXMudGFyZ2V0T2JqZWN0Lm5lZWRzVXBkYXRlPSEwfSxmdW5jdGlvbihhLGMpe3RoaXMudGFyZ2V0T2JqZWN0W3RoaXMucHJvcGVydHlOYW1lXT1hW2NdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XSxbZnVuY3Rpb24oYSxjKXtmb3IodmFyIGU9dGhpcy5yZXNvbHZlZFByb3BlcnR5LGc9MCxyPWUubGVuZ3RoO2chPT1yOysrZyllW2ddPWFbYysrXX0sZnVuY3Rpb24oYSxjKXtmb3IodmFyIGU9dGhpcy5yZXNvbHZlZFByb3BlcnR5LApnPTAscj1lLmxlbmd0aDtnIT09cjsrK2cpZVtnXT1hW2MrK107dGhpcy50YXJnZXRPYmplY3QubmVlZHNVcGRhdGU9ITB9LGZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBlPXRoaXMucmVzb2x2ZWRQcm9wZXJ0eSxnPTAscj1lLmxlbmd0aDtnIT09cjsrK2cpZVtnXT1hW2MrK107dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dLFtmdW5jdGlvbihhLGMpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eVt0aGlzLnByb3BlcnR5SW5kZXhdPWFbY119LGZ1bmN0aW9uKGEsYyl7dGhpcy5yZXNvbHZlZFByb3BlcnR5W3RoaXMucHJvcGVydHlJbmRleF09YVtjXTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24oYSxjKXt0aGlzLnJlc29sdmVkUHJvcGVydHlbdGhpcy5wcm9wZXJ0eUluZGV4XT1hW2NdO3RoaXMudGFyZ2V0T2JqZWN0Lm1hdHJpeFdvcmxkTmVlZHNVcGRhdGU9ITB9XSxbZnVuY3Rpb24oYSxjKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGEsCmMpfSxmdW5jdGlvbihhLGMpe3RoaXMucmVzb2x2ZWRQcm9wZXJ0eS5mcm9tQXJyYXkoYSxjKTt0aGlzLnRhcmdldE9iamVjdC5uZWVkc1VwZGF0ZT0hMH0sZnVuY3Rpb24oYSxjKXt0aGlzLnJlc29sdmVkUHJvcGVydHkuZnJvbUFycmF5KGEsYyk7dGhpcy50YXJnZXRPYmplY3QubWF0cml4V29ybGROZWVkc1VwZGF0ZT0hMH1dXSxnZXRWYWx1ZTpmdW5jdGlvbihhLGMpe3RoaXMuYmluZCgpO3RoaXMuZ2V0VmFsdWUoYSxjKX0sc2V0VmFsdWU6ZnVuY3Rpb24oYSxjKXt0aGlzLmJpbmQoKTt0aGlzLnNldFZhbHVlKGEsYyl9LGJpbmQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5vZGUsYz10aGlzLnBhcnNlZFBhdGgsZT1jLm9iamVjdE5hbWUsZz1jLnByb3BlcnR5TmFtZSxyPWMucHJvcGVydHlJbmRleDthfHwodGhpcy5ub2RlPWE9JGIuZmluZE5vZGUodGhpcy5yb290Tm9kZSxjLm5vZGVOYW1lKXx8dGhpcy5yb290Tm9kZSk7dGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmF2YWlsYWJsZTsKdGhpcy5zZXRWYWx1ZT10aGlzLl9zZXRWYWx1ZV91bmF2YWlsYWJsZTtpZihhKXtpZihlKXt2YXIgdj1jLm9iamVjdEluZGV4O3N3aXRjaChlKXtjYXNlICJtYXRlcmlhbHMiOmlmKCFhLm1hdGVyaWFsKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtYXRlcmlhbCBhcyBub2RlIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbC4iLHRoaXMpO3JldHVybn1pZighYS5tYXRlcmlhbC5tYXRlcmlhbHMpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1hdGVyaWFsLm1hdGVyaWFscyBhcyBub2RlLm1hdGVyaWFsIGRvZXMgbm90IGhhdmUgYSBtYXRlcmlhbHMgYXJyYXkuIix0aGlzKTtyZXR1cm59YT1hLm1hdGVyaWFsLm1hdGVyaWFsczticmVhaztjYXNlICJib25lcyI6aWYoIWEuc2tlbGV0b24pe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIGJvbmVzIGFzIG5vZGUgZG9lcyBub3QgaGF2ZSBhIHNrZWxldG9uLiIsCnRoaXMpO3JldHVybn1hPWEuc2tlbGV0b24uYm9uZXM7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKylpZihhW2VdLm5hbWU9PT12KXt2PWU7YnJlYWt9YnJlYWs7ZGVmYXVsdDppZih2b2lkIDA9PT1hW2VdKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBvYmplY3ROYW1lIG9mIG5vZGUgdW5kZWZpbmVkLiIsdGhpcyk7cmV0dXJufWE9YVtlXX1pZih2b2lkIDAhPT12KXtpZih2b2lkIDA9PT1hW3ZdKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byBiaW5kIHRvIG9iamVjdEluZGV4IG9mIG9iamVjdE5hbWUsIGJ1dCBpcyB1bmRlZmluZWQuIix0aGlzLGEpO3JldHVybn1hPWFbdl19fXY9YVtnXTtpZih2b2lkIDA9PT12KWNvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogVHJ5aW5nIHRvIHVwZGF0ZSBwcm9wZXJ0eSBmb3IgdHJhY2s6ICIrYy5ub2RlTmFtZSsiLiIrZysiIGJ1dCBpdCB3YXNuJ3QgZm91bmQuIiwKYSk7ZWxzZXtjPXRoaXMuVmVyc2lvbmluZy5Ob25lO3RoaXMudGFyZ2V0T2JqZWN0PWE7dm9pZCAwIT09YS5uZWVkc1VwZGF0ZT9jPXRoaXMuVmVyc2lvbmluZy5OZWVkc1VwZGF0ZTp2b2lkIDAhPT1hLm1hdHJpeFdvcmxkTmVlZHNVcGRhdGUmJihjPXRoaXMuVmVyc2lvbmluZy5NYXRyaXhXb3JsZE5lZWRzVXBkYXRlKTtlPXRoaXMuQmluZGluZ1R5cGUuRGlyZWN0O2lmKHZvaWQgMCE9PXIpe2lmKCJtb3JwaFRhcmdldEluZmx1ZW5jZXMiPT09Zyl7aWYoIWEuZ2VvbWV0cnkpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5LiIsdGhpcyk7cmV0dXJufWlmKGEuZ2VvbWV0cnkuaXNCdWZmZXJHZW9tZXRyeSl7aWYoIWEuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzKXtjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IENhbiBub3QgYmluZCB0byBtb3JwaFRhcmdldEluZmx1ZW5jZXMgYmVjYXVzZSBub2RlIGRvZXMgbm90IGhhdmUgYSBnZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMuIiwKdGhpcyk7cmV0dXJufWZvcihlPTA7ZTx0aGlzLm5vZGUuZ2VvbWV0cnkubW9ycGhBdHRyaWJ1dGVzLnBvc2l0aW9uLmxlbmd0aDtlKyspaWYoYS5nZW9tZXRyeS5tb3JwaEF0dHJpYnV0ZXMucG9zaXRpb25bZV0ubmFtZT09PXIpe3I9ZTticmVha319ZWxzZXtpZighYS5nZW9tZXRyeS5tb3JwaFRhcmdldHMpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlByb3BlcnR5QmluZGluZzogQ2FuIG5vdCBiaW5kIHRvIG1vcnBoVGFyZ2V0SW5mbHVlbmNlcyBiZWNhdXNlIG5vZGUgZG9lcyBub3QgaGF2ZSBhIGdlb21ldHJ5Lm1vcnBoVGFyZ2V0cy4iLHRoaXMpO3JldHVybn1mb3IoZT0wO2U8dGhpcy5ub2RlLmdlb21ldHJ5Lm1vcnBoVGFyZ2V0cy5sZW5ndGg7ZSsrKWlmKGEuZ2VvbWV0cnkubW9ycGhUYXJnZXRzW2VdLm5hbWU9PT1yKXtyPWU7YnJlYWt9fX1lPXRoaXMuQmluZGluZ1R5cGUuQXJyYXlFbGVtZW50O3RoaXMucmVzb2x2ZWRQcm9wZXJ0eT12O3RoaXMucHJvcGVydHlJbmRleD1yfWVsc2Ugdm9pZCAwIT09CnYuZnJvbUFycmF5JiZ2b2lkIDAhPT12LnRvQXJyYXk/KGU9dGhpcy5CaW5kaW5nVHlwZS5IYXNGcm9tVG9BcnJheSx0aGlzLnJlc29sdmVkUHJvcGVydHk9dik6QXJyYXkuaXNBcnJheSh2KT8oZT10aGlzLkJpbmRpbmdUeXBlLkVudGlyZUFycmF5LHRoaXMucmVzb2x2ZWRQcm9wZXJ0eT12KTp0aGlzLnByb3BlcnR5TmFtZT1nO3RoaXMuZ2V0VmFsdWU9dGhpcy5HZXR0ZXJCeUJpbmRpbmdUeXBlW2VdO3RoaXMuc2V0VmFsdWU9dGhpcy5TZXR0ZXJCeUJpbmRpbmdUeXBlQW5kVmVyc2lvbmluZ1tlXVtjXX19ZWxzZSBjb25zb2xlLmVycm9yKCJUSFJFRS5Qcm9wZXJ0eUJpbmRpbmc6IFRyeWluZyB0byB1cGRhdGUgbm9kZSBmb3IgdHJhY2s6ICIrdGhpcy5wYXRoKyIgYnV0IGl0IHdhc24ndCBmb3VuZC4iKX0sdW5iaW5kOmZ1bmN0aW9uKCl7dGhpcy5ub2RlPW51bGw7dGhpcy5nZXRWYWx1ZT10aGlzLl9nZXRWYWx1ZV91bmJvdW5kO3RoaXMuc2V0VmFsdWU9dGhpcy5fc2V0VmFsdWVfdW5ib3VuZH19KTsKT2JqZWN0LmFzc2lnbigkYi5wcm90b3R5cGUse19nZXRWYWx1ZV91bmJvdW5kOiRiLnByb3RvdHlwZS5nZXRWYWx1ZSxfc2V0VmFsdWVfdW5ib3VuZDokYi5wcm90b3R5cGUuc2V0VmFsdWV9KTtPYmplY3QuYXNzaWduKFNqLnByb3RvdHlwZSx7aXNBbmltYXRpb25PYmplY3RHcm91cDohMCxhZGQ6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fb2JqZWN0cyxjPWEubGVuZ3RoLGU9dGhpcy5uQ2FjaGVkT2JqZWN0c18sZz10aGlzLl9pbmRpY2VzQnlVVUlELHI9dGhpcy5fcGF0aHMsdj10aGlzLl9wYXJzZWRQYXRocyx6PXRoaXMuX2JpbmRpbmdzLEU9ei5sZW5ndGgsRz12b2lkIDAsSj0wLFA9YXJndW1lbnRzLmxlbmd0aDtKIT09UDsrK0ope3ZhciBSPWFyZ3VtZW50c1tKXSxTPVIudXVpZCxWPWdbU107aWYodm9pZCAwPT09Vil7Vj1jKys7Z1tTXT1WO2EucHVzaChSKTtTPTA7Zm9yKHZhciBXPUU7UyE9PVc7KytTKXpbU10ucHVzaChuZXcgJGIoUixyW1NdLHZbU10pKX1lbHNlIGlmKFY8CmUpe0c9YVtWXTt2YXIgaGE9LS1lO1c9YVtoYV07Z1tXLnV1aWRdPVY7YVtWXT1XO2dbU109aGE7YVtoYV09UjtTPTA7Zm9yKFc9RTtTIT09VzsrK1Mpe3ZhciBmYT16W1NdLHJhPWZhW1ZdO2ZhW1ZdPWZhW2hhXTt2b2lkIDA9PT1yYSYmKHJhPW5ldyAkYihSLHJbU10sdltTXSkpO2ZhW2hhXT1yYX19ZWxzZSBhW1ZdIT09RyYmY29uc29sZS5lcnJvcigiVEhSRUUuQW5pbWF0aW9uT2JqZWN0R3JvdXA6IERpZmZlcmVudCBvYmplY3RzIHdpdGggdGhlIHNhbWUgVVVJRCBkZXRlY3RlZC4gQ2xlYW4gdGhlIGNhY2hlcyBvciByZWNyZWF0ZSB5b3VyIGluZnJhc3RydWN0dXJlIHdoZW4gcmVsb2FkaW5nIHNjZW5lcy4iKX10aGlzLm5DYWNoZWRPYmplY3RzXz1lfSxyZW1vdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fb2JqZWN0cyxjPXRoaXMubkNhY2hlZE9iamVjdHNfLGU9dGhpcy5faW5kaWNlc0J5VVVJRCxnPXRoaXMuX2JpbmRpbmdzLHI9Zy5sZW5ndGgsdj0wLHo9YXJndW1lbnRzLmxlbmd0aDt2IT09Cno7Kyt2KXt2YXIgRT1hcmd1bWVudHNbdl0sRz1FLnV1aWQsSj1lW0ddO2lmKHZvaWQgMCE9PUomJko+PWMpe3ZhciBQPWMrKyxSPWFbUF07ZVtSLnV1aWRdPUo7YVtKXT1SO2VbR109UDthW1BdPUU7RT0wO2ZvcihHPXI7RSE9PUc7KytFKXtSPWdbRV07dmFyIFM9UltKXTtSW0pdPVJbUF07UltQXT1TfX19dGhpcy5uQ2FjaGVkT2JqZWN0c189Y30sdW5jYWNoZTpmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLl9vYmplY3RzLGM9YS5sZW5ndGgsZT10aGlzLm5DYWNoZWRPYmplY3RzXyxnPXRoaXMuX2luZGljZXNCeVVVSUQscj10aGlzLl9iaW5kaW5ncyx2PXIubGVuZ3RoLHo9MCxFPWFyZ3VtZW50cy5sZW5ndGg7eiE9PUU7Kyt6KXt2YXIgRz1hcmd1bWVudHNbel0udXVpZCxKPWdbR107aWYodm9pZCAwIT09SilpZihkZWxldGUgZ1tHXSxKPGUpe0c9LS1lO3ZhciBQPWFbR10sUj0tLWMsUz1hW1JdO2dbUC51dWlkXT1KO2FbSl09UDtnW1MudXVpZF09RzthW0ddPVM7YS5wb3AoKTtQPQowO2ZvcihTPXY7UCE9PVM7KytQKXt2YXIgVj1yW1BdLFc9VltSXTtWW0pdPVZbR107VltHXT1XO1YucG9wKCl9fWVsc2UgZm9yKFI9LS1jLFM9YVtSXSxnW1MudXVpZF09SixhW0pdPVMsYS5wb3AoKSxQPTAsUz12O1AhPT1TOysrUClWPXJbUF0sVltKXT1WW1JdLFYucG9wKCl9dGhpcy5uQ2FjaGVkT2JqZWN0c189ZX0sc3Vic2NyaWJlXzpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMuX2JpbmRpbmdzSW5kaWNlc0J5UGF0aCxnPWVbYV0scj10aGlzLl9iaW5kaW5ncztpZih2b2lkIDAhPT1nKXJldHVybiByW2ddO3ZhciB2PXRoaXMuX3BhdGhzLHo9dGhpcy5fcGFyc2VkUGF0aHMsRT10aGlzLl9vYmplY3RzLEc9dGhpcy5uQ2FjaGVkT2JqZWN0c18sSj1BcnJheShFLmxlbmd0aCk7Zz1yLmxlbmd0aDtlW2FdPWc7di5wdXNoKGEpO3oucHVzaChjKTtyLnB1c2goSik7ZT1HO2ZvcihnPUUubGVuZ3RoO2UhPT1nOysrZSlKW2VdPW5ldyAkYihFW2VdLGEsYyk7cmV0dXJuIEp9LHVuc3Vic2NyaWJlXzpmdW5jdGlvbihhKXt2YXIgYz0KdGhpcy5fYmluZGluZ3NJbmRpY2VzQnlQYXRoLGU9Y1thXTtpZih2b2lkIDAhPT1lKXt2YXIgZz10aGlzLl9wYXRocyxyPXRoaXMuX3BhcnNlZFBhdGhzLHY9dGhpcy5fYmluZGluZ3Msej12Lmxlbmd0aC0xLEU9dlt6XTtjW2Fbel1dPWU7dltlXT1FO3YucG9wKCk7cltlXT1yW3pdO3IucG9wKCk7Z1tlXT1nW3pdO2cucG9wKCl9fX0pO09iamVjdC5hc3NpZ24oVGoucHJvdG90eXBlLHtwbGF5OmZ1bmN0aW9uKCl7dGhpcy5fbWl4ZXIuX2FjdGl2YXRlQWN0aW9uKHRoaXMpO3JldHVybiB0aGlzfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5fbWl4ZXIuX2RlYWN0aXZhdGVBY3Rpb24odGhpcyk7cmV0dXJuIHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnBhdXNlZD0hMTt0aGlzLmVuYWJsZWQ9ITA7dGhpcy50aW1lPTA7dGhpcy5fbG9vcENvdW50PS0xO3RoaXMuX3N0YXJ0VGltZT1udWxsO3JldHVybiB0aGlzLnN0b3BGYWRpbmcoKS5zdG9wV2FycGluZygpfSxpc1J1bm5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkJiYKIXRoaXMucGF1c2VkJiYwIT09dGhpcy50aW1lU2NhbGUmJm51bGw9PT10aGlzLl9zdGFydFRpbWUmJnRoaXMuX21peGVyLl9pc0FjdGl2ZUFjdGlvbih0aGlzKX0saXNTY2hlZHVsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWl4ZXIuX2lzQWN0aXZlQWN0aW9uKHRoaXMpfSxzdGFydEF0OmZ1bmN0aW9uKGEpe3RoaXMuX3N0YXJ0VGltZT1hO3JldHVybiB0aGlzfSxzZXRMb29wOmZ1bmN0aW9uKGEsYyl7dGhpcy5sb29wPWE7dGhpcy5yZXBldGl0aW9ucz1jO3JldHVybiB0aGlzfSxzZXRFZmZlY3RpdmVXZWlnaHQ6ZnVuY3Rpb24oYSl7dGhpcy53ZWlnaHQ9YTt0aGlzLl9lZmZlY3RpdmVXZWlnaHQ9dGhpcy5lbmFibGVkP2E6MDtyZXR1cm4gdGhpcy5zdG9wRmFkaW5nKCl9LGdldEVmZmVjdGl2ZVdlaWdodDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVXZWlnaHR9LGZhZGVJbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fc2NoZWR1bGVGYWRpbmcoYSwwLDEpfSxmYWRlT3V0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9zY2hlZHVsZUZhZGluZyhhLAoxLDApfSxjcm9zc0ZhZGVGcm9tOmZ1bmN0aW9uKGEsYyxlKXthLmZhZGVPdXQoYyk7dGhpcy5mYWRlSW4oYyk7aWYoZSl7ZT10aGlzLl9jbGlwLmR1cmF0aW9uO3ZhciBnPWEuX2NsaXAuZHVyYXRpb24scj1lL2c7YS53YXJwKDEsZy9lLGMpO3RoaXMud2FycChyLDEsYyl9cmV0dXJuIHRoaXN9LGNyb3NzRmFkZVRvOmZ1bmN0aW9uKGEsYyxlKXtyZXR1cm4gYS5jcm9zc0ZhZGVGcm9tKHRoaXMsYyxlKX0sc3RvcEZhZGluZzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX3dlaWdodEludGVycG9sYW50O251bGwhPT1hJiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9bnVsbCx0aGlzLl9taXhlci5fdGFrZUJhY2tDb250cm9sSW50ZXJwb2xhbnQoYSkpO3JldHVybiB0aGlzfSxzZXRFZmZlY3RpdmVUaW1lU2NhbGU6ZnVuY3Rpb24oYSl7dGhpcy50aW1lU2NhbGU9YTt0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGU9dGhpcy5wYXVzZWQ/MDphO3JldHVybiB0aGlzLnN0b3BXYXJwaW5nKCl9LGdldEVmZmVjdGl2ZVRpbWVTY2FsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lZmZlY3RpdmVUaW1lU2NhbGV9LApzZXREdXJhdGlvbjpmdW5jdGlvbihhKXt0aGlzLnRpbWVTY2FsZT10aGlzLl9jbGlwLmR1cmF0aW9uL2E7cmV0dXJuIHRoaXMuc3RvcFdhcnBpbmcoKX0sc3luY1dpdGg6ZnVuY3Rpb24oYSl7dGhpcy50aW1lPWEudGltZTt0aGlzLnRpbWVTY2FsZT1hLnRpbWVTY2FsZTtyZXR1cm4gdGhpcy5zdG9wV2FycGluZygpfSxoYWx0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLndhcnAodGhpcy5fZWZmZWN0aXZlVGltZVNjYWxlLDAsYSl9LHdhcnA6ZnVuY3Rpb24oYSxjLGUpe3ZhciBnPXRoaXMuX21peGVyLHI9Zy50aW1lLHY9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQsej10aGlzLnRpbWVTY2FsZTtudWxsPT09diYmKHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PXY9Zy5fbGVuZENvbnRyb2xJbnRlcnBvbGFudCgpKTtnPXYucGFyYW1ldGVyUG9zaXRpb25zO3Y9di5zYW1wbGVWYWx1ZXM7Z1swXT1yO2dbMV09citlO3ZbMF09YS96O3ZbMV09Yy96O3JldHVybiB0aGlzfSxzdG9wV2FycGluZzpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLl90aW1lU2NhbGVJbnRlcnBvbGFudDtudWxsIT09YSYmKHRoaXMuX3RpbWVTY2FsZUludGVycG9sYW50PW51bGwsdGhpcy5fbWl4ZXIuX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50KGEpKTtyZXR1cm4gdGhpc30sZ2V0TWl4ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWl4ZXJ9LGdldENsaXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2xpcH0sZ2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sb2NhbFJvb3R8fHRoaXMuX21peGVyLl9yb290fSxfdXBkYXRlOmZ1bmN0aW9uKGEsYyxlLGcpe2lmKHRoaXMuZW5hYmxlZCl7dmFyIHI9dGhpcy5fc3RhcnRUaW1lO2lmKG51bGwhPT1yKXtjPShhLXIpKmU7aWYoMD5jfHwwPT09ZSlyZXR1cm47dGhpcy5fc3RhcnRUaW1lPW51bGw7Yyo9ZX1jKj10aGlzLl91cGRhdGVUaW1lU2NhbGUoYSk7ZT10aGlzLl91cGRhdGVUaW1lKGMpO2E9dGhpcy5fdXBkYXRlV2VpZ2h0KGEpO2lmKDA8YSl7Yz10aGlzLl9pbnRlcnBvbGFudHM7CnI9dGhpcy5fcHJvcGVydHlCaW5kaW5ncztmb3IodmFyIHY9MCx6PWMubGVuZ3RoO3YhPT16OysrdiljW3ZdLmV2YWx1YXRlKGUpLHJbdl0uYWNjdW11bGF0ZShnLGEpfX1lbHNlIHRoaXMuX3VwZGF0ZVdlaWdodChhKX0sX3VwZGF0ZVdlaWdodDpmdW5jdGlvbihhKXt2YXIgYz0wO2lmKHRoaXMuZW5hYmxlZCl7Yz10aGlzLndlaWdodDt2YXIgZT10aGlzLl93ZWlnaHRJbnRlcnBvbGFudDtpZihudWxsIT09ZSl7dmFyIGc9ZS5ldmFsdWF0ZShhKVswXTtjKj1nO2E+ZS5wYXJhbWV0ZXJQb3NpdGlvbnNbMV0mJih0aGlzLnN0b3BGYWRpbmcoKSwwPT09ZyYmKHRoaXMuZW5hYmxlZD0hMSkpfX1yZXR1cm4gdGhpcy5fZWZmZWN0aXZlV2VpZ2h0PWN9LF91cGRhdGVUaW1lU2NhbGU6ZnVuY3Rpb24oYSl7dmFyIGM9MDtpZighdGhpcy5wYXVzZWQpe2M9dGhpcy50aW1lU2NhbGU7dmFyIGU9dGhpcy5fdGltZVNjYWxlSW50ZXJwb2xhbnQ7aWYobnVsbCE9PWUpe3ZhciBnPWUuZXZhbHVhdGUoYSlbMF07CmMqPWc7YT5lLnBhcmFtZXRlclBvc2l0aW9uc1sxXSYmKHRoaXMuc3RvcFdhcnBpbmcoKSwwPT09Yz90aGlzLnBhdXNlZD0hMDp0aGlzLnRpbWVTY2FsZT1jKX19cmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVRpbWVTY2FsZT1jfSxfdXBkYXRlVGltZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnRpbWUrYSxlPXRoaXMuX2NsaXAuZHVyYXRpb24sZz10aGlzLmxvb3Ascj10aGlzLl9sb29wQ291bnQsdj0yMjAyPT09ZztpZigwPT09YSlyZXR1cm4tMT09PXI/Yzp2JiYxPT09KHImMSk/ZS1jOmM7aWYoMjIwMD09PWcpYTp7aWYoLTE9PT1yJiYodGhpcy5fbG9vcENvdW50PTAsdGhpcy5fc2V0RW5kaW5ncyghMCwhMCwhMSkpLGM+PWUpYz1lO2Vsc2UgaWYoMD5jKWM9MDtlbHNle3RoaXMudGltZT1jO2JyZWFrIGF9dGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITE7dGhpcy50aW1lPWM7dGhpcy5fbWl4ZXIuZGlzcGF0Y2hFdmVudCh7dHlwZToiZmluaXNoZWQiLAphY3Rpb246dGhpcyxkaXJlY3Rpb246MD5hPy0xOjF9KX1lbHNley0xPT09ciYmKDA8PWE/KHI9MCx0aGlzLl9zZXRFbmRpbmdzKCEwLDA9PT10aGlzLnJlcGV0aXRpb25zLHYpKTp0aGlzLl9zZXRFbmRpbmdzKDA9PT10aGlzLnJlcGV0aXRpb25zLCEwLHYpKTtpZihjPj1lfHwwPmMpe2c9TWF0aC5mbG9vcihjL2UpO2MtPWUqZztyKz1NYXRoLmFicyhnKTt2YXIgej10aGlzLnJlcGV0aXRpb25zLXI7MD49ej8odGhpcy5jbGFtcFdoZW5GaW5pc2hlZD90aGlzLnBhdXNlZD0hMDp0aGlzLmVuYWJsZWQ9ITEsdGhpcy50aW1lPWM9MDxhP2U6MCx0aGlzLl9taXhlci5kaXNwYXRjaEV2ZW50KHt0eXBlOiJmaW5pc2hlZCIsYWN0aW9uOnRoaXMsZGlyZWN0aW9uOjA8YT8xOi0xfSkpOigxPT09ej8oYT0wPmEsdGhpcy5fc2V0RW5kaW5ncyhhLCFhLHYpKTp0aGlzLl9zZXRFbmRpbmdzKCExLCExLHYpLHRoaXMuX2xvb3BDb3VudD1yLHRoaXMudGltZT1jLHRoaXMuX21peGVyLmRpc3BhdGNoRXZlbnQoe3R5cGU6Imxvb3AiLAphY3Rpb246dGhpcyxsb29wRGVsdGE6Z30pKX1lbHNlIHRoaXMudGltZT1jO2lmKHYmJjE9PT0ociYxKSlyZXR1cm4gZS1jfXJldHVybiBjfSxfc2V0RW5kaW5nczpmdW5jdGlvbihhLGMsZSl7dmFyIGc9dGhpcy5faW50ZXJwb2xhbnRTZXR0aW5ncztlPyhnLmVuZGluZ1N0YXJ0PTI0MDEsZy5lbmRpbmdFbmQ9MjQwMSk6KGcuZW5kaW5nU3RhcnQ9YT90aGlzLnplcm9TbG9wZUF0U3RhcnQ/MjQwMToyNDAwOjI0MDIsZy5lbmRpbmdFbmQ9Yz90aGlzLnplcm9TbG9wZUF0RW5kPzI0MDE6MjQwMDoyNDAyKX0sX3NjaGVkdWxlRmFkaW5nOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZz10aGlzLl9taXhlcixyPWcudGltZSx2PXRoaXMuX3dlaWdodEludGVycG9sYW50O251bGw9PT12JiYodGhpcy5fd2VpZ2h0SW50ZXJwb2xhbnQ9dj1nLl9sZW5kQ29udHJvbEludGVycG9sYW50KCkpO2c9di5wYXJhbWV0ZXJQb3NpdGlvbnM7dj12LnNhbXBsZVZhbHVlcztnWzBdPXI7dlswXT1jO2dbMV09cithO3ZbMV09CmU7cmV0dXJuIHRoaXN9fSk7cWkucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSkse2NvbnN0cnVjdG9yOnFpLF9iaW5kQWN0aW9uOmZ1bmN0aW9uKGEsYyl7dmFyIGU9YS5fbG9jYWxSb290fHx0aGlzLl9yb290LGc9YS5fY2xpcC50cmFja3Mscj1nLmxlbmd0aCx2PWEuX3Byb3BlcnR5QmluZGluZ3M7YT1hLl9pbnRlcnBvbGFudHM7dmFyIHo9ZS51dWlkLEU9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLEc9RVt6XTt2b2lkIDA9PT1HJiYoRz17fSxFW3pdPUcpO2ZvcihFPTA7RSE9PXI7KytFKXt2YXIgSj1nW0VdLFA9Si5uYW1lLFI9R1tQXTtpZih2b2lkIDA9PT1SKXtSPXZbRV07aWYodm9pZCAwIT09Uil7bnVsbD09PVIuX2NhY2hlSW5kZXgmJigrK1IucmVmZXJlbmNlQ291bnQsdGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKFIseixQKSk7Y29udGludWV9Uj1uZXcgcGkoJGIuY3JlYXRlKGUsUCxjJiZjLl9wcm9wZXJ0eUJpbmRpbmdzW0VdLmJpbmRpbmcucGFyc2VkUGF0aCksCkouVmFsdWVUeXBlTmFtZSxKLmdldFZhbHVlU2l6ZSgpKTsrK1IucmVmZXJlbmNlQ291bnQ7dGhpcy5fYWRkSW5hY3RpdmVCaW5kaW5nKFIseixQKX12W0VdPVI7YVtFXS5yZXN1bHRCdWZmZXI9Ui5idWZmZXJ9fSxfYWN0aXZhdGVBY3Rpb246ZnVuY3Rpb24oYSl7aWYoIXRoaXMuX2lzQWN0aXZlQWN0aW9uKGEpKXtpZihudWxsPT09YS5fY2FjaGVJbmRleCl7dmFyIGM9KGEuX2xvY2FsUm9vdHx8dGhpcy5fcm9vdCkudXVpZCxlPWEuX2NsaXAudXVpZCxnPXRoaXMuX2FjdGlvbnNCeUNsaXBbZV07dGhpcy5fYmluZEFjdGlvbihhLGcmJmcua25vd25BY3Rpb25zWzBdKTt0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihhLGUsYyl9Yz1hLl9wcm9wZXJ0eUJpbmRpbmdzO2U9MDtmb3IoZz1jLmxlbmd0aDtlIT09ZzsrK2Upe3ZhciByPWNbZV07MD09PXIudXNlQ291bnQrKyYmKHRoaXMuX2xlbmRCaW5kaW5nKHIpLHIuc2F2ZU9yaWdpbmFsU3RhdGUoKSl9dGhpcy5fbGVuZEFjdGlvbihhKX19LApfZGVhY3RpdmF0ZUFjdGlvbjpmdW5jdGlvbihhKXtpZih0aGlzLl9pc0FjdGl2ZUFjdGlvbihhKSl7Zm9yKHZhciBjPWEuX3Byb3BlcnR5QmluZGluZ3MsZT0wLGc9Yy5sZW5ndGg7ZSE9PWc7KytlKXt2YXIgcj1jW2VdOzA9PT0tLXIudXNlQ291bnQmJihyLnJlc3RvcmVPcmlnaW5hbFN0YXRlKCksdGhpcy5fdGFrZUJhY2tCaW5kaW5nKHIpKX10aGlzLl90YWtlQmFja0FjdGlvbihhKX19LF9pbml0TWVtb3J5TWFuYWdlcjpmdW5jdGlvbigpe3RoaXMuX2FjdGlvbnM9W107dGhpcy5fbkFjdGl2ZUFjdGlvbnM9MDt0aGlzLl9hY3Rpb25zQnlDbGlwPXt9O3RoaXMuX2JpbmRpbmdzPVtdO3RoaXMuX25BY3RpdmVCaW5kaW5ncz0wO3RoaXMuX2JpbmRpbmdzQnlSb290QW5kTmFtZT17fTt0aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzPVtdO3RoaXMuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzPTA7dmFyIGE9dGhpczt0aGlzLnN0YXRzPXthY3Rpb25zOntnZXQgdG90YWwoKXtyZXR1cm4gYS5fYWN0aW9ucy5sZW5ndGh9LApnZXQgaW5Vc2UoKXtyZXR1cm4gYS5fbkFjdGl2ZUFjdGlvbnN9fSxiaW5kaW5nczp7Z2V0IHRvdGFsKCl7cmV0dXJuIGEuX2JpbmRpbmdzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIGEuX25BY3RpdmVCaW5kaW5nc319LGNvbnRyb2xJbnRlcnBvbGFudHM6e2dldCB0b3RhbCgpe3JldHVybiBhLl9jb250cm9sSW50ZXJwb2xhbnRzLmxlbmd0aH0sZ2V0IGluVXNlKCl7cmV0dXJuIGEuX25BY3RpdmVDb250cm9sSW50ZXJwb2xhbnRzfX19fSxfaXNBY3RpdmVBY3Rpb246ZnVuY3Rpb24oYSl7YT1hLl9jYWNoZUluZGV4O3JldHVybiBudWxsIT09YSYmYTx0aGlzLl9uQWN0aXZlQWN0aW9uc30sX2FkZEluYWN0aXZlQWN0aW9uOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZz10aGlzLl9hY3Rpb25zLHI9dGhpcy5fYWN0aW9uc0J5Q2xpcCx2PXJbY107dm9pZCAwPT09dj8odj17a25vd25BY3Rpb25zOlthXSxhY3Rpb25CeVJvb3Q6e319LGEuX2J5Q2xpcENhY2hlSW5kZXg9MCxyW2NdPXYpOihjPQp2Lmtub3duQWN0aW9ucyxhLl9ieUNsaXBDYWNoZUluZGV4PWMubGVuZ3RoLGMucHVzaChhKSk7YS5fY2FjaGVJbmRleD1nLmxlbmd0aDtnLnB1c2goYSk7di5hY3Rpb25CeVJvb3RbZV09YX0sX3JlbW92ZUluYWN0aXZlQWN0aW9uOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuX2FjdGlvbnMsZT1jW2MubGVuZ3RoLTFdLGc9YS5fY2FjaGVJbmRleDtlLl9jYWNoZUluZGV4PWc7Y1tnXT1lO2MucG9wKCk7YS5fY2FjaGVJbmRleD1udWxsO2M9YS5fY2xpcC51dWlkO2U9dGhpcy5fYWN0aW9uc0J5Q2xpcDtnPWVbY107dmFyIHI9Zy5rbm93bkFjdGlvbnMsdj1yW3IubGVuZ3RoLTFdLHo9YS5fYnlDbGlwQ2FjaGVJbmRleDt2Ll9ieUNsaXBDYWNoZUluZGV4PXo7clt6XT12O3IucG9wKCk7YS5fYnlDbGlwQ2FjaGVJbmRleD1udWxsO2RlbGV0ZSBnLmFjdGlvbkJ5Um9vdFsoYS5fbG9jYWxSb290fHx0aGlzLl9yb290KS51dWlkXTswPT09ci5sZW5ndGgmJmRlbGV0ZSBlW2NdO3RoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZ3NGb3JBY3Rpb24oYSl9LApfcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbjpmdW5jdGlvbihhKXthPWEuX3Byb3BlcnR5QmluZGluZ3M7Zm9yKHZhciBjPTAsZT1hLmxlbmd0aDtjIT09ZTsrK2Mpe3ZhciBnPWFbY107MD09PS0tZy5yZWZlcmVuY2VDb3VudCYmdGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nKGcpfX0sX2xlbmRBY3Rpb246ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5fYWN0aW9ucyxlPWEuX2NhY2hlSW5kZXgsZz10aGlzLl9uQWN0aXZlQWN0aW9ucysrLHI9Y1tnXTthLl9jYWNoZUluZGV4PWc7Y1tnXT1hO3IuX2NhY2hlSW5kZXg9ZTtjW2VdPXJ9LF90YWtlQmFja0FjdGlvbjpmdW5jdGlvbihhKXt2YXIgYz10aGlzLl9hY3Rpb25zLGU9YS5fY2FjaGVJbmRleCxnPS0tdGhpcy5fbkFjdGl2ZUFjdGlvbnMscj1jW2ddO2EuX2NhY2hlSW5kZXg9ZztjW2ddPWE7ci5fY2FjaGVJbmRleD1lO2NbZV09cn0sX2FkZEluYWN0aXZlQmluZGluZzpmdW5jdGlvbihhLGMsZSl7dmFyIGc9dGhpcy5fYmluZGluZ3NCeVJvb3RBbmROYW1lLApyPWdbY10sdj10aGlzLl9iaW5kaW5nczt2b2lkIDA9PT1yJiYocj17fSxnW2NdPXIpO3JbZV09YTthLl9jYWNoZUluZGV4PXYubGVuZ3RoO3YucHVzaChhKX0sX3JlbW92ZUluYWN0aXZlQmluZGluZzpmdW5jdGlvbihhKXt2YXIgYz10aGlzLl9iaW5kaW5ncyxlPWEuYmluZGluZyxnPWUucm9vdE5vZGUudXVpZDtlPWUucGF0aDt2YXIgcj10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWUsdj1yW2ddLHo9Y1tjLmxlbmd0aC0xXTthPWEuX2NhY2hlSW5kZXg7ei5fY2FjaGVJbmRleD1hO2NbYV09ejtjLnBvcCgpO2RlbGV0ZSB2W2VdOzA9PT1PYmplY3Qua2V5cyh2KS5sZW5ndGgmJmRlbGV0ZSByW2ddfSxfbGVuZEJpbmRpbmc6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5fYmluZGluZ3MsZT1hLl9jYWNoZUluZGV4LGc9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzKysscj1jW2ddO2EuX2NhY2hlSW5kZXg9ZztjW2ddPWE7ci5fY2FjaGVJbmRleD1lO2NbZV09cn0sX3Rha2VCYWNrQmluZGluZzpmdW5jdGlvbihhKXt2YXIgYz0KdGhpcy5fYmluZGluZ3MsZT1hLl9jYWNoZUluZGV4LGc9LS10aGlzLl9uQWN0aXZlQmluZGluZ3Mscj1jW2ddO2EuX2NhY2hlSW5kZXg9ZztjW2ddPWE7ci5fY2FjaGVJbmRleD1lO2NbZV09cn0sX2xlbmRDb250cm9sSW50ZXJwb2xhbnQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9jb250cm9sSW50ZXJwb2xhbnRzLGM9dGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMrKyxlPWFbY107dm9pZCAwPT09ZSYmKGU9bmV3IFlmKG5ldyBGbG9hdDMyQXJyYXkoMiksbmV3IEZsb2F0MzJBcnJheSgyKSwxLHRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXIpLGUuX19jYWNoZUluZGV4PWMsYVtjXT1lKTtyZXR1cm4gZX0sX3Rha2VCYWNrQ29udHJvbEludGVycG9sYW50OmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuX2NvbnRyb2xJbnRlcnBvbGFudHMsZT1hLl9fY2FjaGVJbmRleCxnPS0tdGhpcy5fbkFjdGl2ZUNvbnRyb2xJbnRlcnBvbGFudHMscj1jW2ddO2EuX19jYWNoZUluZGV4PQpnO2NbZ109YTtyLl9fY2FjaGVJbmRleD1lO2NbZV09cn0sX2NvbnRyb2xJbnRlcnBvbGFudHNSZXN1bHRCdWZmZXI6bmV3IEZsb2F0MzJBcnJheSgxKSxjbGlwQWN0aW9uOmZ1bmN0aW9uKGEsYyl7dmFyIGU9Y3x8dGhpcy5fcm9vdCxnPWUudXVpZDtlPSJzdHJpbmciPT09dHlwZW9mIGE/dGMuZmluZEJ5TmFtZShlLGEpOmE7YT1udWxsIT09ZT9lLnV1aWQ6YTt2YXIgcj10aGlzLl9hY3Rpb25zQnlDbGlwW2FdLHY9bnVsbDtpZih2b2lkIDAhPT1yKXt2PXIuYWN0aW9uQnlSb290W2ddO2lmKHZvaWQgMCE9PXYpcmV0dXJuIHY7dj1yLmtub3duQWN0aW9uc1swXTtudWxsPT09ZSYmKGU9di5fY2xpcCl9aWYobnVsbD09PWUpcmV0dXJuIG51bGw7Yz1uZXcgVGoodGhpcyxlLGMpO3RoaXMuX2JpbmRBY3Rpb24oYyx2KTt0aGlzLl9hZGRJbmFjdGl2ZUFjdGlvbihjLGEsZyk7cmV0dXJuIGN9LGV4aXN0aW5nQWN0aW9uOmZ1bmN0aW9uKGEsYyl7dmFyIGU9Y3x8dGhpcy5fcm9vdDtjPWUudXVpZDsKZT0ic3RyaW5nIj09PXR5cGVvZiBhP3RjLmZpbmRCeU5hbWUoZSxhKTphO2E9dGhpcy5fYWN0aW9uc0J5Q2xpcFtlP2UudXVpZDphXTtyZXR1cm4gdm9pZCAwIT09YT9hLmFjdGlvbkJ5Um9vdFtjXXx8bnVsbDpudWxsfSxzdG9wQWxsQWN0aW9uOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuX2FjdGlvbnMsYz10aGlzLl9uQWN0aXZlQWN0aW9ucyxlPXRoaXMuX2JpbmRpbmdzLGc9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzLHI9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzPXRoaXMuX25BY3RpdmVBY3Rpb25zPTA7ciE9PWM7KytyKWFbcl0ucmVzZXQoKTtmb3Iocj0wO3IhPT1nOysrcillW3JdLnVzZUNvdW50PTA7cmV0dXJuIHRoaXN9LHVwZGF0ZTpmdW5jdGlvbihhKXthKj10aGlzLnRpbWVTY2FsZTtmb3IodmFyIGM9dGhpcy5fYWN0aW9ucyxlPXRoaXMuX25BY3RpdmVBY3Rpb25zLGc9dGhpcy50aW1lKz1hLHI9TWF0aC5zaWduKGEpLHY9dGhpcy5fYWNjdUluZGV4Xj0xLHo9MDt6IT09ZTsrK3opY1t6XS5fdXBkYXRlKGcsCmEscix2KTthPXRoaXMuX2JpbmRpbmdzO2M9dGhpcy5fbkFjdGl2ZUJpbmRpbmdzO2Zvcih6PTA7eiE9PWM7Kyt6KWFbel0uYXBwbHkodik7cmV0dXJuIHRoaXN9LGdldFJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm9vdH0sdW5jYWNoZUNsaXA6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5fYWN0aW9uczthPWEudXVpZDt2YXIgZT10aGlzLl9hY3Rpb25zQnlDbGlwLGc9ZVthXTtpZih2b2lkIDAhPT1nKXtnPWcua25vd25BY3Rpb25zO2Zvcih2YXIgcj0wLHY9Zy5sZW5ndGg7ciE9PXY7KytyKXt2YXIgej1nW3JdO3RoaXMuX2RlYWN0aXZhdGVBY3Rpb24oeik7dmFyIEU9ei5fY2FjaGVJbmRleCxHPWNbYy5sZW5ndGgtMV07ei5fY2FjaGVJbmRleD1udWxsO3ouX2J5Q2xpcENhY2hlSW5kZXg9bnVsbDtHLl9jYWNoZUluZGV4PUU7Y1tFXT1HO2MucG9wKCk7dGhpcy5fcmVtb3ZlSW5hY3RpdmVCaW5kaW5nc0ZvckFjdGlvbih6KX1kZWxldGUgZVthXX19LHVuY2FjaGVSb290OmZ1bmN0aW9uKGEpe2E9CmEudXVpZDt2YXIgYz10aGlzLl9hY3Rpb25zQnlDbGlwO2ZvcihnIGluIGMpe3ZhciBlPWNbZ10uYWN0aW9uQnlSb290W2FdO3ZvaWQgMCE9PWUmJih0aGlzLl9kZWFjdGl2YXRlQWN0aW9uKGUpLHRoaXMuX3JlbW92ZUluYWN0aXZlQWN0aW9uKGUpKX12YXIgZz10aGlzLl9iaW5kaW5nc0J5Um9vdEFuZE5hbWVbYV07aWYodm9pZCAwIT09Zylmb3IodmFyIHIgaW4gZylhPWdbcl0sYS5yZXN0b3JlT3JpZ2luYWxTdGF0ZSgpLHRoaXMuX3JlbW92ZUluYWN0aXZlQmluZGluZyhhKX0sdW5jYWNoZUFjdGlvbjpmdW5jdGlvbihhLGMpe2E9dGhpcy5leGlzdGluZ0FjdGlvbihhLGMpO251bGwhPT1hJiYodGhpcy5fZGVhY3RpdmF0ZUFjdGlvbihhKSx0aGlzLl9yZW1vdmVJbmFjdGl2ZUFjdGlvbihhKSl9fSk7YmgucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBiaCh2b2lkIDA9PT10aGlzLnZhbHVlLmNsb25lP3RoaXMudmFsdWU6dGhpcy52YWx1ZS5jbG9uZSgpKX07cmkucHJvdG90eXBlPQpPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoUWQucHJvdG90eXBlKSx7Y29uc3RydWN0b3I6cmksaXNJbnN0YW5jZWRJbnRlcmxlYXZlZEJ1ZmZlcjohMCxjb3B5OmZ1bmN0aW9uKGEpe1FkLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLm1lc2hQZXJBdHRyaWJ1dGU9YS5tZXNoUGVyQXR0cmlidXRlO3JldHVybiB0aGlzfX0pO09iamVjdC5hc3NpZ24oVWoucHJvdG90eXBlLHtsaW5lUHJlY2lzaW9uOjEsc2V0OmZ1bmN0aW9uKGEsYyl7dGhpcy5yYXkuc2V0KGEsYyl9LHNldEZyb21DYW1lcmE6ZnVuY3Rpb24oYSxjKXtjJiZjLmlzUGVyc3BlY3RpdmVDYW1lcmE/KHRoaXMucmF5Lm9yaWdpbi5zZXRGcm9tTWF0cml4UG9zaXRpb24oYy5tYXRyaXhXb3JsZCksdGhpcy5yYXkuZGlyZWN0aW9uLnNldChhLngsYS55LC41KS51bnByb2plY3QoYykuc3ViKHRoaXMucmF5Lm9yaWdpbikubm9ybWFsaXplKCksdGhpcy5jYW1lcmE9Yyk6YyYmYy5pc09ydGhvZ3JhcGhpY0NhbWVyYT8KKHRoaXMucmF5Lm9yaWdpbi5zZXQoYS54LGEueSwoYy5uZWFyK2MuZmFyKS8oYy5uZWFyLWMuZmFyKSkudW5wcm9qZWN0KGMpLHRoaXMucmF5LmRpcmVjdGlvbi5zZXQoMCwwLC0xKS50cmFuc2Zvcm1EaXJlY3Rpb24oYy5tYXRyaXhXb3JsZCksdGhpcy5jYW1lcmE9Yyk6Y29uc29sZS5lcnJvcigiVEhSRUUuUmF5Y2FzdGVyOiBVbnN1cHBvcnRlZCBjYW1lcmEgdHlwZS4iKX0saW50ZXJzZWN0T2JqZWN0OmZ1bmN0aW9uKGEsYyxlKXtlPWV8fFtdO3NpKGEsdGhpcyxlLGMpO2Uuc29ydChWaik7cmV0dXJuIGV9LGludGVyc2VjdE9iamVjdHM6ZnVuY3Rpb24oYSxjLGUpe2U9ZXx8W107aWYoITE9PT1BcnJheS5pc0FycmF5KGEpKXJldHVybiBjb25zb2xlLndhcm4oIlRIUkVFLlJheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzOiBvYmplY3RzIGlzIG5vdCBhbiBBcnJheS4iKSxlO2Zvcih2YXIgZz0wLHI9YS5sZW5ndGg7ZzxyO2crKylzaShhW2ddLHRoaXMsZSxjKTtlLnNvcnQoVmopO3JldHVybiBlfX0pOwpPYmplY3QuYXNzaWduKFdqLnByb3RvdHlwZSx7c2V0OmZ1bmN0aW9uKGEsYyxlKXt0aGlzLnJhZGl1cz1hO3RoaXMucGhpPWM7dGhpcy50aGV0YT1lO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLnJhZGl1cz1hLnJhZGl1czt0aGlzLnBoaT1hLnBoaTt0aGlzLnRoZXRhPWEudGhldGE7cmV0dXJuIHRoaXN9LG1ha2VTYWZlOmZ1bmN0aW9uKCl7dGhpcy5waGk9TWF0aC5tYXgoMUUtNixNYXRoLm1pbihNYXRoLlBJLTFFLTYsdGhpcy5waGkpKTtyZXR1cm4gdGhpc30sc2V0RnJvbVZlY3RvcjM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2V0RnJvbUNhcnRlc2lhbkNvb3JkcyhhLngsYS55LGEueil9LHNldEZyb21DYXJ0ZXNpYW5Db29yZHM6ZnVuY3Rpb24oYSxjLGUpe3RoaXMucmFkaXVzPU1hdGguc3FydChhKmErYypjK2UqZSk7MD09PXRoaXMucmFkaXVzP3RoaXMucGhpPQp0aGlzLnRoZXRhPTA6KHRoaXMudGhldGE9TWF0aC5hdGFuMihhLGUpLHRoaXMucGhpPU1hdGguYWNvcyhoYi5jbGFtcChjL3RoaXMucmFkaXVzLC0xLDEpKSk7cmV0dXJuIHRoaXN9fSk7T2JqZWN0LmFzc2lnbihYai5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGMsZSl7dGhpcy5yYWRpdXM9YTt0aGlzLnRoZXRhPWM7dGhpcy55PWU7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGEpe3RoaXMucmFkaXVzPWEucmFkaXVzO3RoaXMudGhldGE9YS50aGV0YTt0aGlzLnk9YS55O3JldHVybiB0aGlzfSxzZXRGcm9tVmVjdG9yMzpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5zZXRGcm9tQ2FydGVzaWFuQ29vcmRzKGEueCxhLnksYS56KX0sc2V0RnJvbUNhcnRlc2lhbkNvb3JkczpmdW5jdGlvbihhLGMsZSl7dGhpcy5yYWRpdXM9TWF0aC5zcXJ0KGEqYStlKmUpO3RoaXMudGhldGE9TWF0aC5hdGFuMihhLAplKTt0aGlzLnk9YztyZXR1cm4gdGhpc319KTt2YXIgeWs9bmV3IGY7T2JqZWN0LmFzc2lnbih0aS5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGMpe3RoaXMubWluLmNvcHkoYSk7dGhpcy5tYXguY29weShjKTtyZXR1cm4gdGhpc30sc2V0RnJvbVBvaW50czpmdW5jdGlvbihhKXt0aGlzLm1ha2VFbXB0eSgpO2Zvcih2YXIgYz0wLGU9YS5sZW5ndGg7YzxlO2MrKyl0aGlzLmV4cGFuZEJ5UG9pbnQoYVtjXSk7cmV0dXJuIHRoaXN9LHNldEZyb21DZW50ZXJBbmRTaXplOmZ1bmN0aW9uKGEsYyl7Yz15ay5jb3B5KGMpLm11bHRpcGx5U2NhbGFyKC41KTt0aGlzLm1pbi5jb3B5KGEpLnN1YihjKTt0aGlzLm1heC5jb3B5KGEpLmFkZChjKTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IHRoaXMuY29uc3RydWN0b3IpLmNvcHkodGhpcyl9LGNvcHk6ZnVuY3Rpb24oYSl7dGhpcy5taW4uY29weShhLm1pbik7dGhpcy5tYXguY29weShhLm1heCk7cmV0dXJuIHRoaXN9LAptYWtlRW1wdHk6ZnVuY3Rpb24oKXt0aGlzLm1pbi54PXRoaXMubWluLnk9SW5maW5pdHk7dGhpcy5tYXgueD10aGlzLm1heC55PS1JbmZpbml0eTtyZXR1cm4gdGhpc30saXNFbXB0eTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC54PHRoaXMubWluLnh8fHRoaXMubWF4Lnk8dGhpcy5taW4ueX0sZ2V0Q2VudGVyOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgZik7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP2Euc2V0KDAsMCk6YS5hZGRWZWN0b3JzKHRoaXMubWluLHRoaXMubWF4KS5tdWx0aXBseVNjYWxhciguNSl9LGdldFNpemU6ZnVuY3Rpb24oYSl7dm9pZCAwPT09YSYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmdldFNpemUoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgZik7cmV0dXJuIHRoaXMuaXNFbXB0eSgpP2Euc2V0KDAsMCk6YS5zdWJWZWN0b3JzKHRoaXMubWF4LAp0aGlzLm1pbil9LGV4cGFuZEJ5UG9pbnQ6ZnVuY3Rpb24oYSl7dGhpcy5taW4ubWluKGEpO3RoaXMubWF4Lm1heChhKTtyZXR1cm4gdGhpc30sZXhwYW5kQnlWZWN0b3I6ZnVuY3Rpb24oYSl7dGhpcy5taW4uc3ViKGEpO3RoaXMubWF4LmFkZChhKTtyZXR1cm4gdGhpc30sZXhwYW5kQnlTY2FsYXI6ZnVuY3Rpb24oYSl7dGhpcy5taW4uYWRkU2NhbGFyKC1hKTt0aGlzLm1heC5hZGRTY2FsYXIoYSk7cmV0dXJuIHRoaXN9LGNvbnRhaW5zUG9pbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEueDx0aGlzLm1pbi54fHxhLng+dGhpcy5tYXgueHx8YS55PHRoaXMubWluLnl8fGEueT50aGlzLm1heC55PyExOiEwfSxjb250YWluc0JveDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5taW4ueDw9YS5taW4ueCYmYS5tYXgueDw9dGhpcy5tYXgueCYmdGhpcy5taW4ueTw9YS5taW4ueSYmYS5tYXgueTw9dGhpcy5tYXgueX0sZ2V0UGFyYW1ldGVyOmZ1bmN0aW9uKGEsYyl7dm9pZCAwPT09YyYmKGNvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmdldFBhcmFtZXRlcigpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSwKYz1uZXcgZik7cmV0dXJuIGMuc2V0KChhLngtdGhpcy5taW4ueCkvKHRoaXMubWF4LngtdGhpcy5taW4ueCksKGEueS10aGlzLm1pbi55KS8odGhpcy5tYXgueS10aGlzLm1pbi55KSl9LGludGVyc2VjdHNCb3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubWF4Lng8dGhpcy5taW4ueHx8YS5taW4ueD50aGlzLm1heC54fHxhLm1heC55PHRoaXMubWluLnl8fGEubWluLnk+dGhpcy5tYXgueT8hMTohMH0sY2xhbXBQb2ludDpmdW5jdGlvbihhLGMpe3ZvaWQgMD09PWMmJihjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5jbGFtcFBvaW50KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGM9bmV3IGYpO3JldHVybiBjLmNvcHkoYSkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpfSxkaXN0YW5jZVRvUG9pbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHlrLmNvcHkoYSkuY2xhbXAodGhpcy5taW4sdGhpcy5tYXgpLnN1YihhKS5sZW5ndGgoKX0saW50ZXJzZWN0OmZ1bmN0aW9uKGEpe3RoaXMubWluLm1heChhLm1pbik7CnRoaXMubWF4Lm1pbihhLm1heCk7cmV0dXJuIHRoaXN9LHVuaW9uOmZ1bmN0aW9uKGEpe3RoaXMubWluLm1pbihhLm1pbik7dGhpcy5tYXgubWF4KGEubWF4KTtyZXR1cm4gdGhpc30sdHJhbnNsYXRlOmZ1bmN0aW9uKGEpe3RoaXMubWluLmFkZChhKTt0aGlzLm1heC5hZGQoYSk7cmV0dXJuIHRoaXN9LGVxdWFsczpmdW5jdGlvbihhKXtyZXR1cm4gYS5taW4uZXF1YWxzKHRoaXMubWluKSYmYS5tYXguZXF1YWxzKHRoaXMubWF4KX19KTt2YXIgems9bmV3IGssemg9bmV3IGs7T2JqZWN0LmFzc2lnbih1aS5wcm90b3R5cGUse3NldDpmdW5jdGlvbihhLGMpe3RoaXMuc3RhcnQuY29weShhKTt0aGlzLmVuZC5jb3B5KGMpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX0sY29weTpmdW5jdGlvbihhKXt0aGlzLnN0YXJ0LmNvcHkoYS5zdGFydCk7dGhpcy5lbmQuY29weShhLmVuZCk7cmV0dXJuIHRoaXN9LGdldENlbnRlcjpmdW5jdGlvbihhKXt2b2lkIDA9PT0KYSYmKGNvbnNvbGUud2FybigiVEhSRUUuTGluZTM6IC5nZXRDZW50ZXIoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7cmV0dXJuIGEuYWRkVmVjdG9ycyh0aGlzLnN0YXJ0LHRoaXMuZW5kKS5tdWx0aXBseVNjYWxhciguNSl9LGRlbHRhOmZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuZGVsdGEoKSB0YXJnZXQgaXMgbm93IHJlcXVpcmVkIiksYT1uZXcgayk7cmV0dXJuIGEuc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KX0sZGlzdGFuY2VTcTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0LmRpc3RhbmNlVG9TcXVhcmVkKHRoaXMuZW5kKX0sZGlzdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydC5kaXN0YW5jZVRvKHRoaXMuZW5kKX0sYXQ6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoY29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmF0KCkgdGFyZ2V0IGlzIG5vdyByZXF1aXJlZCIpLGM9Cm5ldyBrKTtyZXR1cm4gdGhpcy5kZWx0YShjKS5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy5zdGFydCl9LGNsb3Nlc3RQb2ludFRvUG9pbnRQYXJhbWV0ZXI6ZnVuY3Rpb24oYSxjKXt6ay5zdWJWZWN0b3JzKGEsdGhpcy5zdGFydCk7emguc3ViVmVjdG9ycyh0aGlzLmVuZCx0aGlzLnN0YXJ0KTthPXpoLmRvdCh6aykvemguZG90KHpoKTtjJiYoYT1oYi5jbGFtcChhLDAsMSkpO3JldHVybiBhfSxjbG9zZXN0UG9pbnRUb1BvaW50OmZ1bmN0aW9uKGEsYyxlKXthPXRoaXMuY2xvc2VzdFBvaW50VG9Qb2ludFBhcmFtZXRlcihhLGMpO3ZvaWQgMD09PWUmJihjb25zb2xlLndhcm4oIlRIUkVFLkxpbmUzOiAuY2xvc2VzdFBvaW50VG9Qb2ludCgpIHRhcmdldCBpcyBub3cgcmVxdWlyZWQiKSxlPW5ldyBrKTtyZXR1cm4gdGhpcy5kZWx0YShlKS5tdWx0aXBseVNjYWxhcihhKS5hZGQodGhpcy5zdGFydCl9LGFwcGx5TWF0cml4NDpmdW5jdGlvbihhKXt0aGlzLnN0YXJ0LmFwcGx5TWF0cml4NChhKTsKdGhpcy5lbmQuYXBwbHlNYXRyaXg0KGEpO3JldHVybiB0aGlzfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3RhcnQuZXF1YWxzKHRoaXMuc3RhcnQpJiZhLmVuZC5lcXVhbHModGhpcy5lbmQpfX0pO2NnLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKTtjZy5wcm90b3R5cGUuY29uc3RydWN0b3I9Y2c7Y2cucHJvdG90eXBlLmlzSW1tZWRpYXRlUmVuZGVyT2JqZWN0PSEwO3ZhciBaYz1uZXcgayxvZD1uZXcgayxSaT1uZXcgdCxXbT1bImEiLCJiIiwiYyJdO2RnLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEliLnByb3RvdHlwZSk7ZGcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWRnO2RnLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLm9iamVjdC51cGRhdGVNYXRyaXhXb3JsZCghMCk7UmkuZ2V0Tm9ybWFsTWF0cml4KHRoaXMub2JqZWN0Lm1hdHJpeFdvcmxkKTt2YXIgYT10aGlzLm9iamVjdC5tYXRyaXhXb3JsZCxjPXRoaXMuZ2VvbWV0cnkuYXR0cmlidXRlcy5wb3NpdGlvbiwKZT10aGlzLm9iamVjdC5nZW9tZXRyeTtpZihlJiZlLmlzR2VvbWV0cnkpZm9yKHZhciBnPWUudmVydGljZXMscj1lLmZhY2VzLHY9ZT0wLHo9ci5sZW5ndGg7djx6O3YrKylmb3IodmFyIEU9clt2XSxHPTAsSj1FLnZlcnRleE5vcm1hbHMubGVuZ3RoO0c8SjtHKyspe3ZhciBQPUUudmVydGV4Tm9ybWFsc1tHXTtaYy5jb3B5KGdbRVtXbVtHXV1dKS5hcHBseU1hdHJpeDQoYSk7b2QuY29weShQKS5hcHBseU1hdHJpeDMoUmkpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2l6ZSkuYWRkKFpjKTtjLnNldFhZWihlLFpjLngsWmMueSxaYy56KTtlKz0xO2Muc2V0WFlaKGUsb2QueCxvZC55LG9kLnopO2UrPTF9ZWxzZSBpZihlJiZlLmlzQnVmZmVyR2VvbWV0cnkpZm9yKGc9ZS5hdHRyaWJ1dGVzLnBvc2l0aW9uLHI9ZS5hdHRyaWJ1dGVzLm5vcm1hbCxHPWU9MCxKPWcuY291bnQ7RzxKO0crKylaYy5zZXQoZy5nZXRYKEcpLGcuZ2V0WShHKSxnLmdldFooRykpLmFwcGx5TWF0cml4NChhKSwKb2Quc2V0KHIuZ2V0WChHKSxyLmdldFkoRyksci5nZXRaKEcpKSxvZC5hcHBseU1hdHJpeDMoUmkpLm5vcm1hbGl6ZSgpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2l6ZSkuYWRkKFpjKSxjLnNldFhZWihlLFpjLngsWmMueSxaYy56KSxlKz0xLGMuc2V0WFlaKGUsb2QueCxvZC55LG9kLnopLGUrPTE7Yy5uZWVkc1VwZGF0ZT0hMH07dmFyIEFrPW5ldyBrO1hlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEEucHJvdG90eXBlKTtYZS5wcm90b3R5cGUuY29uc3RydWN0b3I9WGU7WGUucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmNvbmUuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMuY29uZS5tYXRlcmlhbC5kaXNwb3NlKCl9O1hlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmxpZ2h0LnVwZGF0ZU1hdHJpeFdvcmxkKCk7dmFyIGE9dGhpcy5saWdodC5kaXN0YW5jZT90aGlzLmxpZ2h0LmRpc3RhbmNlOjFFMyxjPWEqTWF0aC50YW4odGhpcy5saWdodC5hbmdsZSk7CnRoaXMuY29uZS5zY2FsZS5zZXQoYyxjLGEpO0FrLnNldEZyb21NYXRyaXhQb3NpdGlvbih0aGlzLmxpZ2h0LnRhcmdldC5tYXRyaXhXb3JsZCk7dGhpcy5jb25lLmxvb2tBdChBayk7dm9pZCAwIT09dGhpcy5jb2xvcj90aGlzLmNvbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpOnRoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpfTt2YXIgSWQ9bmV3IGssQWg9bmV3IHEsU2k9bmV3IHE7WWUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSWIucHJvdG90eXBlKTtZZS5wcm90b3R5cGUuY29uc3RydWN0b3I9WWU7WWUucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuYm9uZXMsZT10aGlzLmdlb21ldHJ5LGc9ZS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIik7U2kuZ2V0SW52ZXJzZSh0aGlzLnJvb3QubWF0cml4V29ybGQpO2Zvcih2YXIgcj0wLHY9MDtyPGMubGVuZ3RoO3IrKyl7dmFyIHo9Y1tyXTt6LnBhcmVudCYmCnoucGFyZW50LmlzQm9uZSYmKEFoLm11bHRpcGx5TWF0cmljZXMoU2ksei5tYXRyaXhXb3JsZCksSWQuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKEFoKSxnLnNldFhZWih2LElkLngsSWQueSxJZC56KSxBaC5tdWx0aXBseU1hdHJpY2VzKFNpLHoucGFyZW50Lm1hdHJpeFdvcmxkKSxJZC5zZXRGcm9tTWF0cml4UG9zaXRpb24oQWgpLGcuc2V0WFlaKHYrMSxJZC54LElkLnksSWQueiksdis9Mil9ZS5nZXRBdHRyaWJ1dGUoInBvc2l0aW9uIikubmVlZHNVcGRhdGU9ITA7QS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpfTtaZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4YS5wcm90b3R5cGUpO1plLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1aZTtaZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfTtaZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5jb2xvcj8KdGhpcy5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcik6dGhpcy5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpfTskZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShWYi5wcm90b3R5cGUpOyRlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj0kZTskZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5zY2FsZS5zZXQoLjUqdGhpcy5saWdodC53aWR0aCwuNSp0aGlzLmxpZ2h0LmhlaWdodCwxKTtpZih2b2lkIDAhPT10aGlzLmNvbG9yKXRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpLHRoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpO2Vsc2V7dGhpcy5tYXRlcmlhbC5jb2xvci5jb3B5KHRoaXMubGlnaHQuY29sb3IpLm11bHRpcGx5U2NhbGFyKHRoaXMubGlnaHQuaW50ZW5zaXR5KTt2YXIgYT10aGlzLm1hdGVyaWFsLmNvbG9yLGM9TWF0aC5tYXgoYS5yLGEuZyxhLmIpOzE8YyYmYS5tdWx0aXBseVNjYWxhcigxLwpjKTt0aGlzLmNoaWxkcmVuWzBdLm1hdGVyaWFsLmNvbG9yLmNvcHkodGhpcy5tYXRlcmlhbC5jb2xvcil9fTskZS5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMubWF0ZXJpYWwuZGlzcG9zZSgpO3RoaXMuY2hpbGRyZW5bMF0uZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuZGlzcG9zZSgpfTt2YXIgWG09bmV3IGssQms9bmV3IEksQ2s9bmV3IEk7YWYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoQS5wcm90b3R5cGUpO2FmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hZjthZi5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuY2hpbGRyZW5bMF0uZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuZGlzcG9zZSgpfTthZi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGlsZHJlblswXTtpZih2b2lkIDAhPT10aGlzLmNvbG9yKXRoaXMubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpOwplbHNle3ZhciBjPWEuZ2VvbWV0cnkuZ2V0QXR0cmlidXRlKCJjb2xvciIpO0JrLmNvcHkodGhpcy5saWdodC5jb2xvcik7Q2suY29weSh0aGlzLmxpZ2h0Lmdyb3VuZENvbG9yKTtmb3IodmFyIGU9MCxnPWMuY291bnQ7ZTxnO2UrKyl7dmFyIHI9ZTxnLzI/Qms6Q2s7Yy5zZXRYWVooZSxyLnIsci5nLHIuYil9Yy5uZWVkc1VwZGF0ZT0hMH1hLmxvb2tBdChYbS5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC5tYXRyaXhXb3JsZCkubmVnYXRlKCkpfTtiZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh4YS5wcm90b3R5cGUpO2JmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iZjtiZi5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMubWF0ZXJpYWwuZGlzcG9zZSgpfTtiZi5wcm90b3R5cGUub25CZWZvcmVSZW5kZXI9ZnVuY3Rpb24oKXt0aGlzLnBvc2l0aW9uLmNvcHkodGhpcy5saWdodFByb2JlLnBvc2l0aW9uKTt0aGlzLnNjYWxlLnNldCgxLAoxLDEpLm11bHRpcGx5U2NhbGFyKHRoaXMuc2l6ZSk7dGhpcy5tYXRlcmlhbC51bmlmb3Jtcy5pbnRlbnNpdHkudmFsdWU9dGhpcy5saWdodFByb2JlLmludGVuc2l0eX07Y2gucHJvdG90eXBlPU9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShJYi5wcm90b3R5cGUpLHtjb25zdHJ1Y3RvcjpjaCxjb3B5OmZ1bmN0aW9uKGEpe0liLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLmdlb21ldHJ5LmNvcHkoYS5nZW9tZXRyeSk7dGhpcy5tYXRlcmlhbC5jb3B5KGEubWF0ZXJpYWwpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybihuZXcgdGhpcy5jb25zdHJ1Y3RvcikuY29weSh0aGlzKX19KTtkaC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJYi5wcm90b3R5cGUpO2RoLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kaDtjZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShWYi5wcm90b3R5cGUpO2NmLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jZjtjZi5wcm90b3R5cGUudXBkYXRlPQpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoVyxoYSxmYSxyYSl7ZmE9KGhhLVcpL2ZhO1Yuc2V0WFlaKEcsMCwwLDApO0orKztmb3IoUD1XO1A8aGE7UCs9ZmEpUj1HK0osVi5zZXRYWVooUixNYXRoLnNpbihQKSplLDAsTWF0aC5jb3MoUCkqZSksVi5zZXRYWVooUisxLE1hdGguc2luKE1hdGgubWluKFArZmEsaGEpKSplLDAsTWF0aC5jb3MoTWF0aC5taW4oUCtmYSxoYSkpKmUpLFYuc2V0WFlaKFIrMiwwLDAsMCksSis9MztTLmFkZEdyb3VwKEcsSixyYSk7Rys9SjtKPTB9dmFyIGM9dGhpcy5hdWRpbyxlPXRoaXMucmFuZ2UsZz10aGlzLmRpdmlzaW9uc0lubmVyQW5nbGUscj10aGlzLmRpdmlzaW9uc091dGVyQW5nbGUsdj1oYi5kZWdUb1JhZChjLnBhbm5lci5jb25lSW5uZXJBbmdsZSk7Yz1oYi5kZWdUb1JhZChjLnBhbm5lci5jb25lT3V0ZXJBbmdsZSk7dmFyIHo9di8yLEU9Yy8yLEc9MCxKPTAsUCxSLFM9dGhpcy5nZW9tZXRyeSxWPVMuYXR0cmlidXRlcy5wb3NpdGlvbjtTLmNsZWFyR3JvdXBzKCk7CmEoLUUsLXosciwwKTthKC16LHosZywxKTthKHosRSxyLDApO1YubmVlZHNVcGRhdGU9ITA7dj09PWMmJih0aGlzLm1hdGVyaWFsWzBdLnZpc2libGU9ITEpfTtjZi5wcm90b3R5cGUuZGlzcG9zZT1mdW5jdGlvbigpe3RoaXMuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMubWF0ZXJpYWxbMF0uZGlzcG9zZSgpO3RoaXMubWF0ZXJpYWxbMV0uZGlzcG9zZSgpfTt2YXIgcWc9bmV3IGssQmg9bmV3IGssRGs9bmV3IHQ7ZWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSWIucHJvdG90eXBlKTtlZy5wcm90b3R5cGUuY29uc3RydWN0b3I9ZWc7ZWcucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMub2JqZWN0LnVwZGF0ZU1hdHJpeFdvcmxkKCEwKTtEay5nZXROb3JtYWxNYXRyaXgodGhpcy5vYmplY3QubWF0cml4V29ybGQpO3ZhciBhPXRoaXMub2JqZWN0Lm1hdHJpeFdvcmxkLGM9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLGU9dGhpcy5vYmplY3QuZ2VvbWV0cnksZz0KZS52ZXJ0aWNlcztlPWUuZmFjZXM7Zm9yKHZhciByPTAsdj0wLHo9ZS5sZW5ndGg7djx6O3YrKyl7dmFyIEU9ZVt2XSxHPUUubm9ybWFsO3FnLmNvcHkoZ1tFLmFdKS5hZGQoZ1tFLmJdKS5hZGQoZ1tFLmNdKS5kaXZpZGVTY2FsYXIoMykuYXBwbHlNYXRyaXg0KGEpO0JoLmNvcHkoRykuYXBwbHlNYXRyaXgzKERrKS5ub3JtYWxpemUoKS5tdWx0aXBseVNjYWxhcih0aGlzLnNpemUpLmFkZChxZyk7Yy5zZXRYWVoocixxZy54LHFnLnkscWcueik7cis9MTtjLnNldFhZWihyLEJoLngsQmgueSxCaC56KTtyKz0xfWMubmVlZHNVcGRhdGU9ITB9O3ZhciBFaz1uZXcgayxDaD1uZXcgayxGaz1uZXcgaztkZi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShBLnByb3RvdHlwZSk7ZGYucHJvdG90eXBlLmNvbnN0cnVjdG9yPWRmO2RmLnByb3RvdHlwZS5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5saWdodFBsYW5lLmdlb21ldHJ5LmRpc3Bvc2UoKTt0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuZGlzcG9zZSgpOwp0aGlzLnRhcmdldExpbmUuZ2VvbWV0cnkuZGlzcG9zZSgpO3RoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5kaXNwb3NlKCl9O2RmLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXtFay5zZXRGcm9tTWF0cml4UG9zaXRpb24odGhpcy5saWdodC5tYXRyaXhXb3JsZCk7Q2guc2V0RnJvbU1hdHJpeFBvc2l0aW9uKHRoaXMubGlnaHQudGFyZ2V0Lm1hdHJpeFdvcmxkKTtGay5zdWJWZWN0b3JzKENoLEVrKTt0aGlzLmxpZ2h0UGxhbmUubG9va0F0KENoKTt2b2lkIDAhPT10aGlzLmNvbG9yPyh0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHRoaXMuY29sb3IpLHRoaXMudGFyZ2V0TGluZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5jb2xvcikpOih0aGlzLmxpZ2h0UGxhbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSx0aGlzLnRhcmdldExpbmUubWF0ZXJpYWwuY29sb3IuY29weSh0aGlzLmxpZ2h0LmNvbG9yKSk7dGhpcy50YXJnZXRMaW5lLmxvb2tBdChDaCk7CnRoaXMudGFyZ2V0TGluZS5zY2FsZS56PUZrLmxlbmd0aCgpfTt2YXIgZWg9bmV3IGssT2I9bmV3IHpiO2ZnLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEliLnByb3RvdHlwZSk7ZmcucHJvdG90eXBlLmNvbnN0cnVjdG9yPWZnO2ZnLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdlb21ldHJ5LGM9dGhpcy5wb2ludE1hcDtPYi5wcm9qZWN0aW9uTWF0cml4SW52ZXJzZS5jb3B5KHRoaXMuY2FtZXJhLnByb2plY3Rpb25NYXRyaXhJbnZlcnNlKTtQYigiYyIsYyxhLE9iLDAsMCwtMSk7UGIoInQiLGMsYSxPYiwwLDAsMSk7UGIoIm4xIixjLGEsT2IsLTEsLTEsLTEpO1BiKCJuMiIsYyxhLE9iLDEsLTEsLTEpO1BiKCJuMyIsYyxhLE9iLC0xLDEsLTEpO1BiKCJuNCIsYyxhLE9iLDEsMSwtMSk7UGIoImYxIixjLGEsT2IsLTEsLTEsMSk7UGIoImYyIixjLGEsT2IsMSwtMSwxKTtQYigiZjMiLGMsYSxPYiwtMSwxLDEpO1BiKCJmNCIsYyxhLE9iLDEsMSwxKTtQYigidTEiLApjLGEsT2IsLjcsMS4xLC0xKTtQYigidTIiLGMsYSxPYiwtLjcsMS4xLC0xKTtQYigidTMiLGMsYSxPYiwwLDIsLTEpO1BiKCJjZjEiLGMsYSxPYiwtMSwwLDEpO1BiKCJjZjIiLGMsYSxPYiwxLDAsMSk7UGIoImNmMyIsYyxhLE9iLDAsLTEsMSk7UGIoImNmNCIsYyxhLE9iLDAsMSwxKTtQYigiY24xIixjLGEsT2IsLTEsMCwtMSk7UGIoImNuMiIsYyxhLE9iLDEsMCwtMSk7UGIoImNuMyIsYyxhLE9iLDAsLTEsLTEpO1BiKCJjbjQiLGMsYSxPYiwwLDEsLTEpO2EuZ2V0QXR0cmlidXRlKCJwb3NpdGlvbiIpLm5lZWRzVXBkYXRlPSEwfTt2YXIgRGg9bmV3IHc7aGQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSWIucHJvdG90eXBlKTtoZC5wcm90b3R5cGUuY29uc3RydWN0b3I9aGQ7aGQucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhKXt2b2lkIDAhPT1hJiZjb25zb2xlLndhcm4oIlRIUkVFLkJveEhlbHBlcjogLnVwZGF0ZSgpIGhhcyBubyBsb25nZXIgYXJndW1lbnRzLiIpO3ZvaWQgMCE9PQp0aGlzLm9iamVjdCYmRGguc2V0RnJvbU9iamVjdCh0aGlzLm9iamVjdCk7aWYoIURoLmlzRW1wdHkoKSl7YT1EaC5taW47dmFyIGM9RGgubWF4LGU9dGhpcy5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLGc9ZS5hcnJheTtnWzBdPWMueDtnWzFdPWMueTtnWzJdPWMuejtnWzNdPWEueDtnWzRdPWMueTtnWzVdPWMuejtnWzZdPWEueDtnWzddPWEueTtnWzhdPWMuejtnWzldPWMueDtnWzEwXT1hLnk7Z1sxMV09Yy56O2dbMTJdPWMueDtnWzEzXT1jLnk7Z1sxNF09YS56O2dbMTVdPWEueDtnWzE2XT1jLnk7Z1sxN109YS56O2dbMThdPWEueDtnWzE5XT1hLnk7Z1syMF09YS56O2dbMjFdPWMueDtnWzIyXT1hLnk7Z1syM109YS56O2UubmVlZHNVcGRhdGU9ITA7dGhpcy5nZW9tZXRyeS5jb21wdXRlQm91bmRpbmdTcGhlcmUoKX19O2hkLnByb3RvdHlwZS5zZXRGcm9tT2JqZWN0PWZ1bmN0aW9uKGEpe3RoaXMub2JqZWN0PWE7dGhpcy51cGRhdGUoKTtyZXR1cm4gdGhpc307aGQucHJvdG90eXBlLmNvcHk9CmZ1bmN0aW9uKGEpe0liLnByb3RvdHlwZS5jb3B5LmNhbGwodGhpcyxhKTt0aGlzLm9iamVjdD1hLm9iamVjdDtyZXR1cm4gdGhpc307aGQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfTtnZy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShJYi5wcm90b3R5cGUpO2dnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1nZztnZy5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQ9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5ib3g7Yy5pc0VtcHR5KCl8fChjLmdldENlbnRlcih0aGlzLnBvc2l0aW9uKSxjLmdldFNpemUodGhpcy5zY2FsZSksdGhpcy5zY2FsZS5tdWx0aXBseVNjYWxhciguNSksQS5wcm90b3R5cGUudXBkYXRlTWF0cml4V29ybGQuY2FsbCh0aGlzLGEpKX07aGcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVmIucHJvdG90eXBlKTtoZy5wcm90b3R5cGUuY29uc3RydWN0b3I9aGc7aGcucHJvdG90eXBlLnVwZGF0ZU1hdHJpeFdvcmxkPQpmdW5jdGlvbihhKXt2YXIgYz0tdGhpcy5wbGFuZS5jb25zdGFudDsxRS04Pk1hdGguYWJzKGMpJiYoYz0xRS04KTt0aGlzLnNjYWxlLnNldCguNSp0aGlzLnNpemUsLjUqdGhpcy5zaXplLGMpO3RoaXMuY2hpbGRyZW5bMF0ubWF0ZXJpYWwuc2lkZT0wPmM/MTowO3RoaXMubG9va0F0KHRoaXMucGxhbmUubm9ybWFsKTtBLnByb3RvdHlwZS51cGRhdGVNYXRyaXhXb3JsZC5jYWxsKHRoaXMsYSl9O3ZhciBHaz1uZXcgayxmaCx2aTtpZC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShBLnByb3RvdHlwZSk7aWQucHJvdG90eXBlLmNvbnN0cnVjdG9yPWlkO2lkLnByb3RvdHlwZS5zZXREaXJlY3Rpb249ZnVuY3Rpb24oYSl7Ljk5OTk5PGEueT90aGlzLnF1YXRlcm5pb24uc2V0KDAsMCwwLDEpOi0uOTk5OTk+YS55P3RoaXMucXVhdGVybmlvbi5zZXQoMSwwLDAsMCk6KEdrLnNldChhLnosMCwtYS54KS5ub3JtYWxpemUoKSx0aGlzLnF1YXRlcm5pb24uc2V0RnJvbUF4aXNBbmdsZShHayxNYXRoLmFjb3MoYS55KSkpfTsKaWQucHJvdG90eXBlLnNldExlbmd0aD1mdW5jdGlvbihhLGMsZSl7dm9pZCAwPT09YyYmKGM9LjIqYSk7dm9pZCAwPT09ZSYmKGU9LjIqYyk7dGhpcy5saW5lLnNjYWxlLnNldCgxLE1hdGgubWF4KDAsYS1jKSwxKTt0aGlzLmxpbmUudXBkYXRlTWF0cml4KCk7dGhpcy5jb25lLnNjYWxlLnNldChlLGMsZSk7dGhpcy5jb25lLnBvc2l0aW9uLnk9YTt0aGlzLmNvbmUudXBkYXRlTWF0cml4KCl9O2lkLnByb3RvdHlwZS5zZXRDb2xvcj1mdW5jdGlvbihhKXt0aGlzLmxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KGEpO3RoaXMuY29uZS5tYXRlcmlhbC5jb2xvci5zZXQoYSl9O2lkLnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKGEpe0EucHJvdG90eXBlLmNvcHkuY2FsbCh0aGlzLGEsITEpO3RoaXMubGluZS5jb3B5KGEubGluZSk7dGhpcy5jb25lLmNvcHkoYS5jb25lKTtyZXR1cm4gdGhpc307aWQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuKG5ldyB0aGlzLmNvbnN0cnVjdG9yKS5jb3B5KHRoaXMpfTsKaWcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoSWIucHJvdG90eXBlKTtpZy5wcm90b3R5cGUuY29uc3RydWN0b3I9aWc7WmEuY3JlYXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS5sb2coIlRIUkVFLkN1cnZlLmNyZWF0ZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQiKTthLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFphLnByb3RvdHlwZSk7YS5wcm90b3R5cGUuY29uc3RydWN0b3I9YTthLnByb3RvdHlwZS5nZXRQb2ludD1jO3JldHVybiBhfTtPYmplY3QuYXNzaWduKGdkLnByb3RvdHlwZSx7Y3JlYXRlUG9pbnRzR2VvbWV0cnk6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZVBhdGg6IC5jcmVhdGVQb2ludHNHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuR2VvbWV0cnkoKS5zZXRGcm9tUG9pbnRzKCBwb2ludHMgKSBpbnN0ZWFkLiIpO2E9dGhpcy5nZXRQb2ludHMoYSk7cmV0dXJuIHRoaXMuY3JlYXRlR2VvbWV0cnkoYSl9LGNyZWF0ZVNwYWNlZFBvaW50c0dlb21ldHJ5OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQ3VydmVQYXRoOiAuY3JlYXRlU3BhY2VkUG9pbnRzR2VvbWV0cnkoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkdlb21ldHJ5KCkuc2V0RnJvbVBvaW50cyggcG9pbnRzICkgaW5zdGVhZC4iKTsKYT10aGlzLmdldFNwYWNlZFBvaW50cyhhKTtyZXR1cm4gdGhpcy5jcmVhdGVHZW9tZXRyeShhKX0sY3JlYXRlR2VvbWV0cnk6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZVBhdGg6IC5jcmVhdGVHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuR2VvbWV0cnkoKS5zZXRGcm9tUG9pbnRzKCBwb2ludHMgKSBpbnN0ZWFkLiIpO2Zvcih2YXIgYz1uZXcgeWEsZT0wLGc9YS5sZW5ndGg7ZTxnO2UrKyl7dmFyIHI9YVtlXTtjLnZlcnRpY2VzLnB1c2gobmV3IGsoci54LHIueSxyLnp8fDApKX1yZXR1cm4gY319KTtPYmplY3QuYXNzaWduKEdjLnByb3RvdHlwZSx7ZnJvbVBvaW50czpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlBhdGg6IC5mcm9tUG9pbnRzKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbVBvaW50cygpLiIpO3RoaXMuc2V0RnJvbVBvaW50cyhhKX19KTtaai5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaYi5wcm90b3R5cGUpOwphay5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShaYi5wcm90b3R5cGUpO3dpLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFpiLnByb3RvdHlwZSk7T2JqZWN0LmFzc2lnbih3aS5wcm90b3R5cGUse2luaXRGcm9tQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TcGxpbmU6IC5pbml0RnJvbUFycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sZ2V0Q29udHJvbFBvaW50c0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU3BsaW5lOiAuZ2V0Q29udHJvbFBvaW50c0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0scmVwYXJhbWV0cml6ZUJ5QXJjTGVuZ3RoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU3BsaW5lOiAucmVwYXJhbWV0cml6ZUJ5QXJjTGVuZ3RoKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KTtjaC5wcm90b3R5cGUuc2V0Q29sb3JzPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuR3JpZEhlbHBlcjogc2V0Q29sb3JzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCwgcGFzcyB0aGVtIGluIHRoZSBjb25zdHJ1Y3RvciBpbnN0ZWFkLiIpfTsKWWUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNrZWxldG9uSGVscGVyOiB1cGRhdGUoKSBubyBsb25nZXIgbmVlZHMgdG8gYmUgY2FsbGVkLiIpfTtPYmplY3QuYXNzaWduKERiLnByb3RvdHlwZSx7ZXh0cmFjdFVybEJhc2U6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Mb2FkZXI6IC5leHRyYWN0VXJsQmFzZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5Mb2FkZXJVdGlscy5leHRyYWN0VXJsQmFzZSgpIGluc3RlYWQuIik7cmV0dXJuIFBpLmV4dHJhY3RVcmxCYXNlKGEpfX0pO09iamVjdC5hc3NpZ24oWmcucHJvdG90eXBlLHtzZXRUZXh0dXJlUGF0aDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdExvYWRlcjogLnNldFRleHR1cmVQYXRoKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0UmVzb3VyY2VQYXRoKCkuIik7cmV0dXJuIHRoaXMuc2V0UmVzb3VyY2VQYXRoKGEpfX0pO09iamVjdC5hc3NpZ24odGkucHJvdG90eXBlLAp7Y2VudGVyOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpO3JldHVybiB0aGlzLmdldENlbnRlcihhKX0sZW1wdHk6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJveDI6IC5lbXB0eSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmlzRW1wdHkoKS4iKTtyZXR1cm4gdGhpcy5pc0VtcHR5KCl9LGlzSW50ZXJzZWN0aW9uQm94OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MjogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpO3JldHVybiB0aGlzLmludGVyc2VjdHNCb3goYSl9LHNpemU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Cb3gyOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKTtyZXR1cm4gdGhpcy5nZXRTaXplKGEpfX0pO09iamVjdC5hc3NpZ24ody5wcm90b3R5cGUsCntjZW50ZXI6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuY2VudGVyKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Q2VudGVyKCkuIik7cmV0dXJuIHRoaXMuZ2V0Q2VudGVyKGEpfSxlbXB0eTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuQm94MzogLmVtcHR5KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaXNFbXB0eSgpLiIpO3JldHVybiB0aGlzLmlzRW1wdHkoKX0saXNJbnRlcnNlY3Rpb25Cb3g6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25Cb3goKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzQm94KCkuIik7cmV0dXJuIHRoaXMuaW50ZXJzZWN0c0JveChhKX0saXNJbnRlcnNlY3Rpb25TcGhlcmU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuaXNJbnRlcnNlY3Rpb25TcGhlcmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5pbnRlcnNlY3RzU3BoZXJlKCkuIik7cmV0dXJuIHRoaXMuaW50ZXJzZWN0c1NwaGVyZShhKX0sCnNpemU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Cb3gzOiAuc2l6ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldFNpemUoKS4iKTtyZXR1cm4gdGhpcy5nZXRTaXplKGEpfX0pO3VpLnByb3RvdHlwZS5jZW50ZXI9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaW5lMzogLmNlbnRlcigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldENlbnRlcigpLiIpO3JldHVybiB0aGlzLmdldENlbnRlcihhKX07T2JqZWN0LmFzc2lnbihoYix7cmFuZG9tMTY6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGg6IC5yYW5kb20xNigpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBNYXRoLnJhbmRvbSgpIGluc3RlYWQuIik7cmV0dXJuIE1hdGgucmFuZG9tKCl9LG5lYXJlc3RQb3dlck9mVHdvOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0aDogLm5lYXJlc3RQb3dlck9mVHdvKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZmxvb3JQb3dlck9mVHdvKCkuIik7CnJldHVybiBoYi5mbG9vclBvd2VyT2ZUd28oYSl9LG5leHRQb3dlck9mVHdvOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0aDogLm5leHRQb3dlck9mVHdvKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY2VpbFBvd2VyT2ZUd28oKS4iKTtyZXR1cm4gaGIuY2VpbFBvd2VyT2ZUd28oYSl9fSk7T2JqZWN0LmFzc2lnbih0LnByb3RvdHlwZSx7ZmxhdHRlblRvQXJyYXlPZmZzZXQ6ZnVuY3Rpb24oYSxjKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDM6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIik7cmV0dXJuIHRoaXMudG9BcnJheShhLGMpfSxtdWx0aXBseVZlY3RvcjM6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHZlY3Rvci5hcHBseU1hdHJpeDMoIG1hdHJpeCApIGluc3RlYWQuIik7cmV0dXJuIGEuYXBwbHlNYXRyaXgzKHRoaXMpfSwKbXVsdGlwbHlWZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXgzOiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhcHBseVRvQnVmZmVyOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4MzogLmFwcGx5VG9CdWZmZXIoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbWF0cml4LmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoIGF0dHJpYnV0ZSApIGluc3RlYWQuIik7cmV0dXJuIHRoaXMuYXBwbHlUb0J1ZmZlckF0dHJpYnV0ZShhKX0sYXBwbHlUb1ZlY3RvcjNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLk1hdHJpeDM6IC5hcHBseVRvVmVjdG9yM0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KTtPYmplY3QuYXNzaWduKHEucHJvdG90eXBlLHtleHRyYWN0UG9zaXRpb246ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAuZXh0cmFjdFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuY29weVBvc2l0aW9uKCkuIik7CnJldHVybiB0aGlzLmNvcHlQb3NpdGlvbihhKX0sZmxhdHRlblRvQXJyYXlPZmZzZXQ6ZnVuY3Rpb24oYSxjKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5mbGF0dGVuVG9BcnJheU9mZnNldCgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSAudG9BcnJheSgpIGluc3RlYWQuIik7cmV0dXJuIHRoaXMudG9BcnJheShhLGMpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLmdldFBvc2l0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpO3JldHVybihuZXcgaykuc2V0RnJvbU1hdHJpeENvbHVtbih0aGlzLDMpfSxzZXRSb3RhdGlvbkZyb21RdWF0ZXJuaW9uOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLnNldFJvdGF0aW9uRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbigpLiIpOwpyZXR1cm4gdGhpcy5tYWtlUm90YXRpb25Gcm9tUXVhdGVybmlvbihhKX0sbXVsdGlwbHlUb0FycmF5OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlUb0FycmF5KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sbXVsdGlwbHlWZWN0b3IzOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpO3JldHVybiBhLmFwcGx5TWF0cml4NCh0aGlzKX0sbXVsdGlwbHlWZWN0b3I0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0cml4NDogLm11bHRpcGx5VmVjdG9yNCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpO3JldHVybiBhLmFwcGx5TWF0cml4NCh0aGlzKX0sbXVsdGlwbHlWZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAubXVsdGlwbHlWZWN0b3IzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSwKcm90YXRlQXhpczpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5yb3RhdGVBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFZlY3RvcjMudHJhbnNmb3JtRGlyZWN0aW9uKCBtYXRyaXggKSBpbnN0ZWFkLiIpO2EudHJhbnNmb3JtRGlyZWN0aW9uKHRoaXMpfSxjcm9zc1ZlY3RvcjpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5jcm9zc1ZlY3RvcigpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB2ZWN0b3IuYXBwbHlNYXRyaXg0KCBtYXRyaXggKSBpbnN0ZWFkLiIpO3JldHVybiBhLmFwcGx5TWF0cml4NCh0aGlzKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnRyYW5zbGF0ZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZVg6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHJvdGF0ZVk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlWSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LApyb3RhdGVaOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuTWF0cml4NDogLnJvdGF0ZVooKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxyb3RhdGVCeUF4aXM6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAucm90YXRlQnlBeGlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYXBwbHlUb0J1ZmZlcjpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5hcHBseVRvQnVmZmVyKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG1hdHJpeC5hcHBseVRvQnVmZmVyQXR0cmlidXRlKCBhdHRyaWJ1dGUgKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLmFwcGx5VG9CdWZmZXJBdHRyaWJ1dGUoYSl9LGFwcGx5VG9WZWN0b3IzQXJyYXk6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5NYXRyaXg0OiAuYXBwbHlUb1ZlY3RvcjNBcnJheSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LG1ha2VGcnVzdHVtOmZ1bmN0aW9uKGEsYyxlLGcscix2KXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdHJpeDQ6IC5tYWtlRnJ1c3R1bSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAubWFrZVBlcnNwZWN0aXZlKCBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG5lYXIsIGZhciApIGluc3RlYWQuIik7CnJldHVybiB0aGlzLm1ha2VQZXJzcGVjdGl2ZShhLGMsZyxlLHIsdil9fSk7SGIucHJvdG90eXBlLmlzSW50ZXJzZWN0aW9uTGluZT1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlBsYW5lOiAuaXNJbnRlcnNlY3Rpb25MaW5lKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0xpbmUoKS4iKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzTGluZShhKX07aC5wcm90b3R5cGUubXVsdGlwbHlWZWN0b3IzPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUXVhdGVybmlvbjogLm11bHRpcGx5VmVjdG9yMygpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBpcyBub3cgdmVjdG9yLmFwcGx5UXVhdGVybmlvbiggcXVhdGVybmlvbiApIGluc3RlYWQuIik7cmV0dXJuIGEuYXBwbHlRdWF0ZXJuaW9uKHRoaXMpfTtPYmplY3QuYXNzaWduKEQucHJvdG90eXBlLHtpc0ludGVyc2VjdGlvbkJveDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlJheTogLmlzSW50ZXJzZWN0aW9uQm94KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuaW50ZXJzZWN0c0JveCgpLiIpOwpyZXR1cm4gdGhpcy5pbnRlcnNlY3RzQm94KGEpfSxpc0ludGVyc2VjdGlvblBsYW5lOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUmF5OiAuaXNJbnRlcnNlY3Rpb25QbGFuZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNQbGFuZSgpLiIpO3JldHVybiB0aGlzLmludGVyc2VjdHNQbGFuZShhKX0saXNJbnRlcnNlY3Rpb25TcGhlcmU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5SYXk6IC5pc0ludGVyc2VjdGlvblNwaGVyZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmludGVyc2VjdHNTcGhlcmUoKS4iKTtyZXR1cm4gdGhpcy5pbnRlcnNlY3RzU3BoZXJlKGEpfX0pO09iamVjdC5hc3NpZ24oQi5wcm90b3R5cGUse2FyZWE6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYXJlYSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldEFyZWEoKS4iKTtyZXR1cm4gdGhpcy5nZXRBcmVhKCl9LGJhcnljb29yZEZyb21Qb2ludDpmdW5jdGlvbihhLApjKXtjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAuYmFyeWNvb3JkRnJvbVBvaW50KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0QmFyeWNvb3JkKCkuIik7cmV0dXJuIHRoaXMuZ2V0QmFyeWNvb3JkKGEsYyl9LG1pZHBvaW50OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5taWRwb2ludCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmdldE1pZHBvaW50KCkuIik7cmV0dXJuIHRoaXMuZ2V0TWlkcG9pbnQoYSl9LG5vcm1hbDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAubm9ybWFsKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ2V0Tm9ybWFsKCkuIik7cmV0dXJuIHRoaXMuZ2V0Tm9ybWFsKGEpfSxwbGFuZTpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlRyaWFuZ2xlOiAucGxhbmUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRQbGFuZSgpLiIpO3JldHVybiB0aGlzLmdldFBsYW5lKGEpfX0pO09iamVjdC5hc3NpZ24oQiwKe2Jhcnljb29yZEZyb21Qb2ludDpmdW5jdGlvbihhLGMsZSxnLHIpe2NvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5iYXJ5Y29vcmRGcm9tUG9pbnQoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRCYXJ5Y29vcmQoKS4iKTtyZXR1cm4gQi5nZXRCYXJ5Y29vcmQoYSxjLGUsZyxyKX0sbm9ybWFsOmZ1bmN0aW9uKGEsYyxlLGcpe2NvbnNvbGUud2FybigiVEhSRUUuVHJpYW5nbGU6IC5ub3JtYWwoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXROb3JtYWwoKS4iKTtyZXR1cm4gQi5nZXROb3JtYWwoYSxjLGUsZyl9fSk7T2JqZWN0LmFzc2lnbihDZC5wcm90b3R5cGUse2V4dHJhY3RBbGxQb2ludHM6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJhY3RBbGxQb2ludHMoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLmV4dHJhY3RQb2ludHMoKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLmV4dHJhY3RQb2ludHMoYSl9LGV4dHJ1ZGU6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLmV4dHJ1ZGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXh0cnVkZUdlb21ldHJ5KCkgaW5zdGVhZC4iKTsKcmV0dXJuIG5ldyBVZCh0aGlzLGEpfSxtYWtlR2VvbWV0cnk6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5TaGFwZTogLm1ha2VHZW9tZXRyeSgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBTaGFwZUdlb21ldHJ5KCkgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IFZkKHRoaXMsYSl9fSk7T2JqZWN0LmFzc2lnbihmLnByb3RvdHlwZSx7ZnJvbUF0dHJpYnV0ZTpmdW5jdGlvbihhLGMsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IyOiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKTtyZXR1cm4gdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKGEsYyxlKX0sZGlzdGFuY2VUb01hbmhhdHRhbjpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5kaXN0YW5jZVRvTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuRGlzdGFuY2VUbygpLiIpO3JldHVybiB0aGlzLm1hbmhhdHRhbkRpc3RhbmNlVG8oYSl9LApsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjI6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKTtyZXR1cm4gdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KTtPYmplY3QuYXNzaWduKGsucHJvdG90eXBlLHtzZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlZlY3RvcjM6IC5zZXRFdWxlckZyb21Sb3RhdGlvbk1hdHJpeCgpIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBFdWxlci5zZXRGcm9tUm90YXRpb25NYXRyaXgoKSBpbnN0ZWFkLiIpfSxzZXRFdWxlckZyb21RdWF0ZXJuaW9uOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuVmVjdG9yMzogLnNldEV1bGVyRnJvbVF1YXRlcm5pb24oKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgRXVsZXIuc2V0RnJvbVF1YXRlcm5pb24oKSBpbnN0ZWFkLiIpfSxnZXRQb3NpdGlvbkZyb21NYXRyaXg6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZ2V0UG9zaXRpb25Gcm9tTWF0cml4KCkgaGFzIGJlZW4gcmVuYW1lZCB0byAuc2V0RnJvbU1hdHJpeFBvc2l0aW9uKCkuIik7CnJldHVybiB0aGlzLnNldEZyb21NYXRyaXhQb3NpdGlvbihhKX0sZ2V0U2NhbGVGcm9tTWF0cml4OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldFNjYWxlRnJvbU1hdHJpeCgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLnNldEZyb21NYXRyaXhTY2FsZSgpLiIpO3JldHVybiB0aGlzLnNldEZyb21NYXRyaXhTY2FsZShhKX0sZ2V0Q29sdW1uRnJvbU1hdHJpeDpmdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmdldENvbHVtbkZyb21NYXRyaXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRGcm9tTWF0cml4Q29sdW1uKCkuIik7cmV0dXJuIHRoaXMuc2V0RnJvbU1hdHJpeENvbHVtbihjLGEpfSxhcHBseVByb2plY3Rpb246ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuYXBwbHlQcm9qZWN0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIC5hcHBseU1hdHJpeDQoIG0gKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLmFwcGx5TWF0cml4NChhKX0sCmZyb21BdHRyaWJ1dGU6ZnVuY3Rpb24oYSxjLGUpe2NvbnNvbGUud2FybigiVEhSRUUuVmVjdG9yMzogLmZyb21BdHRyaWJ1dGUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5mcm9tQnVmZmVyQXR0cmlidXRlKCkuIik7cmV0dXJuIHRoaXMuZnJvbUJ1ZmZlckF0dHJpYnV0ZShhLGMsZSl9LGRpc3RhbmNlVG9NYW5oYXR0YW46ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3IzOiAuZGlzdGFuY2VUb01hbmhhdHRhbigpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLm1hbmhhdHRhbkRpc3RhbmNlVG8oKS4iKTtyZXR1cm4gdGhpcy5tYW5oYXR0YW5EaXN0YW5jZVRvKGEpfSxsZW5ndGhNYW5oYXR0YW46ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlZlY3RvcjM6IC5sZW5ndGhNYW5oYXR0YW4oKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5tYW5oYXR0YW5MZW5ndGgoKS4iKTtyZXR1cm4gdGhpcy5tYW5oYXR0YW5MZW5ndGgoKX19KTtPYmplY3QuYXNzaWduKHAucHJvdG90eXBlLAp7ZnJvbUF0dHJpYnV0ZTpmdW5jdGlvbihhLGMsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAuZnJvbUF0dHJpYnV0ZSgpIGhhcyBiZWVuIHJlbmFtZWQgdG8gLmZyb21CdWZmZXJBdHRyaWJ1dGUoKS4iKTtyZXR1cm4gdGhpcy5mcm9tQnVmZmVyQXR0cmlidXRlKGEsYyxlKX0sbGVuZ3RoTWFuaGF0dGFuOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5WZWN0b3I0OiAubGVuZ3RoTWFuaGF0dGFuKCkgaGFzIGJlZW4gcmVuYW1lZCB0byAubWFuaGF0dGFuTGVuZ3RoKCkuIik7cmV0dXJuIHRoaXMubWFuaGF0dGFuTGVuZ3RoKCl9fSk7T2JqZWN0LmFzc2lnbih5YS5wcm90b3R5cGUse2NvbXB1dGVUYW5nZW50czpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkdlb21ldHJ5OiAuY29tcHV0ZVRhbmdlbnRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sY29tcHV0ZUxpbmVEaXN0YW5jZXM6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5HZW9tZXRyeTogLmNvbXB1dGVMaW5lRGlzdGFuY2VzKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkxpbmUuY29tcHV0ZUxpbmVEaXN0YW5jZXMoKSBpbnN0ZWFkLiIpfX0pOwpPYmplY3QuYXNzaWduKEEucHJvdG90eXBlLHtnZXRDaGlsZEJ5TmFtZTpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZ2V0Q2hpbGRCeU5hbWUoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5nZXRPYmplY3RCeU5hbWUoKS4iKTtyZXR1cm4gdGhpcy5nZXRPYmplY3RCeU5hbWUoYSl9LHJlbmRlckRlcHRoOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5PYmplY3QzRDogLnJlbmRlckRlcHRoIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAucmVuZGVyT3JkZXIsIGluc3RlYWQuIil9LHRyYW5zbGF0ZTpmdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC50cmFuc2xhdGUoKSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgLnRyYW5zbGF0ZU9uQXhpcyggYXhpcywgZGlzdGFuY2UgKSBpbnN0ZWFkLiIpO3JldHVybiB0aGlzLnRyYW5zbGF0ZU9uQXhpcyhjLGEpfSxnZXRXb3JsZFJvdGF0aW9uOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuT2JqZWN0M0Q6IC5nZXRXb3JsZFJvdGF0aW9uKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLk9iamVjdDNELmdldFdvcmxkUXVhdGVybmlvbiggdGFyZ2V0ICkgaW5zdGVhZC4iKX19KTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQS5wcm90b3R5cGUse2V1bGVyT3JkZXI6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC5ldWxlck9yZGVyIGlzIG5vdyAucm90YXRpb24ub3JkZXIuIik7cmV0dXJuIHRoaXMucm90YXRpb24ub3JkZXJ9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk9iamVjdDNEOiAuZXVsZXJPcmRlciBpcyBub3cgLnJvdGF0aW9uLm9yZGVyLiIpO3RoaXMucm90YXRpb24ub3JkZXI9YX19LHVzZVF1YXRlcm5pb246e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuT2JqZWN0M0Q6IC51c2VRdWF0ZXJuaW9uIGhhcyBiZWVuIHJlbW92ZWQuIFRoZSBsaWJyYXJ5IG5vdyB1c2VzIHF1YXRlcm5pb25zIGJ5IGRlZmF1bHQuIil9fX0pOwpPYmplY3QuZGVmaW5lUHJvcGVydGllcyhBZi5wcm90b3R5cGUse29iamVjdHM6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTE9EOiAub2JqZWN0cyBoYXMgYmVlbiByZW5hbWVkIHRvIC5sZXZlbHMuIik7cmV0dXJuIHRoaXMubGV2ZWxzfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoQ2cucHJvdG90eXBlLCJ1c2VWZXJ0ZXhUZXh0dXJlIix7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5Ta2VsZXRvbjogdXNlVmVydGV4VGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlNrZWxldG9uOiB1c2VWZXJ0ZXhUZXh0dXJlIGhhcyBiZWVuIHJlbW92ZWQuIil9fSk7QmYucHJvdG90eXBlLmluaXRCb25lcz1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLlNraW5uZWRNZXNoOiBpbml0Qm9uZXMoKSBoYXMgYmVlbiByZW1vdmVkLiIpfTtPYmplY3QuZGVmaW5lUHJvcGVydHkoWmEucHJvdG90eXBlLAoiX19hcmNMZW5ndGhEaXZpc2lvbnMiLHtnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkN1cnZlOiAuX19hcmNMZW5ndGhEaXZpc2lvbnMgaXMgbm93IC5hcmNMZW5ndGhEaXZpc2lvbnMuIik7cmV0dXJuIHRoaXMuYXJjTGVuZ3RoRGl2aXNpb25zfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5DdXJ2ZTogLl9fYXJjTGVuZ3RoRGl2aXNpb25zIGlzIG5vdyAuYXJjTGVuZ3RoRGl2aXNpb25zLiIpO3RoaXMuYXJjTGVuZ3RoRGl2aXNpb25zPWF9fSk7dmIucHJvdG90eXBlLnNldExlbnM9ZnVuY3Rpb24oYSxjKXtjb25zb2xlLndhcm4oIlRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhLnNldExlbnMgaXMgZGVwcmVjYXRlZC4gVXNlIC5zZXRGb2NhbExlbmd0aCBhbmQgLmZpbG1HYXVnZSBmb3IgYSBwaG90b2dyYXBoaWMgc2V0dXAuIik7dm9pZCAwIT09YyYmKHRoaXMuZmlsbUdhdWdlPWMpO3RoaXMuc2V0Rm9jYWxMZW5ndGgoYSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEpiLnByb3RvdHlwZSwKe29ubHlTaGFkb3c6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5vbmx5U2hhZG93IGhhcyBiZWVuIHJlbW92ZWQuIil9fSxzaGFkb3dDYW1lcmFGb3Y6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhRm92IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5mb3YuIik7dGhpcy5zaGFkb3cuY2FtZXJhLmZvdj1hfX0sc2hhZG93Q2FtZXJhTGVmdDp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFMZWZ0IGlzIG5vdyAuc2hhZG93LmNhbWVyYS5sZWZ0LiIpO3RoaXMuc2hhZG93LmNhbWVyYS5sZWZ0PWF9fSxzaGFkb3dDYW1lcmFSaWdodDp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFSaWdodCBpcyBub3cgLnNoYWRvdy5jYW1lcmEucmlnaHQuIik7dGhpcy5zaGFkb3cuY2FtZXJhLnJpZ2h0PWF9fSxzaGFkb3dDYW1lcmFUb3A6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVG9wIGlzIG5vdyAuc2hhZG93LmNhbWVyYS50b3AuIik7CnRoaXMuc2hhZG93LmNhbWVyYS50b3A9YX19LHNoYWRvd0NhbWVyYUJvdHRvbTp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFCb3R0b20gaXMgbm93IC5zaGFkb3cuY2FtZXJhLmJvdHRvbS4iKTt0aGlzLnNoYWRvdy5jYW1lcmEuYm90dG9tPWF9fSxzaGFkb3dDYW1lcmFOZWFyOntzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5MaWdodDogLnNoYWRvd0NhbWVyYU5lYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLm5lYXIuIik7dGhpcy5zaGFkb3cuY2FtZXJhLm5lYXI9YX19LHNoYWRvd0NhbWVyYUZhcjp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dDYW1lcmFGYXIgaXMgbm93IC5zaGFkb3cuY2FtZXJhLmZhci4iKTt0aGlzLnNoYWRvdy5jYW1lcmEuZmFyPWF9fSxzaGFkb3dDYW1lcmFWaXNpYmxlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93Q2FtZXJhVmlzaWJsZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkNhbWVyYUhlbHBlciggbGlnaHQuc2hhZG93LmNhbWVyYSApIGluc3RlYWQuIil9fSwKc2hhZG93Qmlhczp7c2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dCaWFzIGlzIG5vdyAuc2hhZG93LmJpYXMuIik7dGhpcy5zaGFkb3cuYmlhcz1hfX0sc2hhZG93RGFya25lc3M6e3NldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTGlnaHQ6IC5zaGFkb3dEYXJrbmVzcyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sc2hhZG93TWFwV2lkdGg6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwV2lkdGggaXMgbm93IC5zaGFkb3cubWFwU2l6ZS53aWR0aC4iKTt0aGlzLnNoYWRvdy5tYXBTaXplLndpZHRoPWF9fSxzaGFkb3dNYXBIZWlnaHQ6e3NldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkxpZ2h0OiAuc2hhZG93TWFwSGVpZ2h0IGlzIG5vdyAuc2hhZG93Lm1hcFNpemUuaGVpZ2h0LiIpO3RoaXMuc2hhZG93Lm1hcFNpemUuaGVpZ2h0PWF9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFEucHJvdG90eXBlLAp7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmxlbmd0aCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLmNvdW50IGluc3RlYWQuIik7cmV0dXJuIHRoaXMuYXJyYXkubGVuZ3RofX0sY29weUluZGljZXNBcnJheTpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkJ1ZmZlckF0dHJpYnV0ZTogLmNvcHlJbmRpY2VzQXJyYXkoKSBoYXMgYmVlbiByZW1vdmVkLiIpfX0pO09iamVjdC5hc3NpZ24odmEucHJvdG90eXBlLHthZGRJbmRleDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkSW5kZXgoKSBoYXMgYmVlbiByZW5hbWVkIHRvIC5zZXRJbmRleCgpLiIpO3RoaXMuc2V0SW5kZXgoYSl9LGFkZERyYXdDYWxsOmZ1bmN0aW9uKGEsYyxlKXt2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAuYWRkRHJhd0NhbGwoKSBubyBsb25nZXIgc3VwcG9ydHMgaW5kZXhPZmZzZXQuIik7CmNvbnNvbGUud2FybigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5hZGREcmF3Q2FsbCgpIGlzIG5vdyAuYWRkR3JvdXAoKS4iKTt0aGlzLmFkZEdyb3VwKGEsYyl9LGNsZWFyRHJhd0NhbGxzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNsZWFyRHJhd0NhbGxzKCkgaXMgbm93IC5jbGVhckdyb3VwcygpLiIpO3RoaXMuY2xlYXJHcm91cHMoKX0sY29tcHV0ZVRhbmdlbnRzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVUYW5nZW50cygpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGNvbXB1dGVPZmZzZXRzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5CdWZmZXJHZW9tZXRyeTogLmNvbXB1dGVPZmZzZXRzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh2YS5wcm90b3R5cGUse2RyYXdjYWxsczp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQnVmZmVyR2VvbWV0cnk6IC5kcmF3Y2FsbHMgaGFzIGJlZW4gcmVuYW1lZCB0byAuZ3JvdXBzLiIpOwpyZXR1cm4gdGhpcy5ncm91cHN9fSxvZmZzZXRzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLkJ1ZmZlckdlb21ldHJ5OiAub2Zmc2V0cyBoYXMgYmVlbiByZW5hbWVkIHRvIC5ncm91cHMuIik7cmV0dXJuIHRoaXMuZ3JvdXBzfX19KTtPYmplY3QuYXNzaWduKFJjLnByb3RvdHlwZSx7Z2V0QXJyYXlzOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiAuZ2V0QXJyYXlzKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYWRkU2hhcGVMaXN0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuRXh0cnVkZUJ1ZmZlckdlb21ldHJ5OiAuYWRkU2hhcGVMaXN0KCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sYWRkU2hhcGU6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5FeHRydWRlQnVmZmVyR2VvbWV0cnk6IC5hZGRTaGFwZSgpIGhhcyBiZWVuIHJlbW92ZWQuIil9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYmgucHJvdG90eXBlLAp7ZHluYW1pYzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5Vbmlmb3JtOiAuZHluYW1pYyBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugb2JqZWN0Lm9uQmVmb3JlUmVuZGVyKCkgaW5zdGVhZC4iKX19LG9uVXBkYXRlOnt2YWx1ZTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuVW5pZm9ybTogLm9uVXBkYXRlKCkgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG9iamVjdC5vbkJlZm9yZVJlbmRlcigpIGluc3RlYWQuIik7cmV0dXJuIHRoaXN9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE0ucHJvdG90eXBlLHt3cmFwQXJvdW5kOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfSxzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcEFyb3VuZCBoYXMgYmVlbiByZW1vdmVkLiIpfX0sb3ZlcmRyYXc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWF0ZXJpYWw6IC5vdmVyZHJhdyBoYXMgYmVlbiByZW1vdmVkLiIpfSwKc2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5NYXRlcmlhbDogLm92ZXJkcmF3IGhhcyBiZWVuIHJlbW92ZWQuIil9fSx3cmFwUkdCOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLk1hdGVyaWFsOiAud3JhcFJHQiBoYXMgYmVlbiByZW1vdmVkLiIpO3JldHVybiBuZXcgSX19LHNoYWRpbmc6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLiIrdGhpcy50eXBlKyI6IC5zaGFkaW5nIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgYm9vbGVhbiAuZmxhdFNoYWRpbmcgaW5zdGVhZC4iKX0sc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuIit0aGlzLnR5cGUrIjogLnNoYWRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBib29sZWFuIC5mbGF0U2hhZGluZyBpbnN0ZWFkLiIpO3RoaXMuZmxhdFNoYWRpbmc9MT09PWF9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEJjLnByb3RvdHlwZSx7bWV0YWw6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWVzaFBob25nTWF0ZXJpYWw6IC5tZXRhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwgaW5zdGVhZC4iKTsKcmV0dXJuITF9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuTWVzaFBob25nTWF0ZXJpYWw6IC5tZXRhbCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuTWVzaFN0YW5kYXJkTWF0ZXJpYWwgaW5zdGVhZCIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxYi5wcm90b3R5cGUse2Rlcml2YXRpdmVzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLlNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIik7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5kZXJpdmF0aXZlc30sc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuIFNoYWRlck1hdGVyaWFsOiAuZGVyaXZhdGl2ZXMgaGFzIGJlZW4gbW92ZWQgdG8gLmV4dGVuc2lvbnMuZGVyaXZhdGl2ZXMuIik7dGhpcy5leHRlbnNpb25zLmRlcml2YXRpdmVzPWF9fX0pO09iamVjdC5hc3NpZ24oT2gucHJvdG90eXBlLAp7Y2xlYXJUYXJnZXQ6ZnVuY3Rpb24oYSxjLGUsZyl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuY2xlYXJUYXJnZXQoKSBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgLnNldFJlbmRlclRhcmdldCgpIGFuZCAuY2xlYXIoKSBpbnN0ZWFkLiIpO3RoaXMuc2V0UmVuZGVyVGFyZ2V0KGEpO3RoaXMuY2xlYXIoYyxlLGcpfSxhbmltYXRlOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFuaW1hdGUoKSBpcyBub3cgLnNldEFuaW1hdGlvbkxvb3AoKS4iKTt0aGlzLnNldEFuaW1hdGlvbkxvb3AoYSl9LGdldEN1cnJlbnRSZW5kZXJUYXJnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5nZXRDdXJyZW50UmVuZGVyVGFyZ2V0KCkgaXMgbm93IC5nZXRSZW5kZXJUYXJnZXQoKS4iKTtyZXR1cm4gdGhpcy5nZXRSZW5kZXJUYXJnZXQoKX0sZ2V0TWF4QW5pc290cm9weTpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldE1heEFuaXNvdHJvcHkoKSBpcyBub3cgLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCkuIik7CnJldHVybiB0aGlzLmNhcGFiaWxpdGllcy5nZXRNYXhBbmlzb3Ryb3B5KCl9LGdldFByZWNpc2lvbjpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldFByZWNpc2lvbigpIGlzIG5vdyAuY2FwYWJpbGl0aWVzLnByZWNpc2lvbi4iKTtyZXR1cm4gdGhpcy5jYXBhYmlsaXRpZXMucHJlY2lzaW9ufSxyZXNldEdMU3RhdGU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5yZXNldEdMU3RhdGUoKSBpcyBub3cgLnN0YXRlLnJlc2V0KCkuIik7cmV0dXJuIHRoaXMuc3RhdGUucmVzZXQoKX0sc3VwcG9ydHNGbG9hdFRleHR1cmVzOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNGbG9hdFRleHR1cmVzKCkgaXMgbm93IC5leHRlbnNpb25zLmdldCggJ09FU190ZXh0dXJlX2Zsb2F0JyApLiIpO3JldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfdGV4dHVyZV9mbG9hdCIpfSwKc3VwcG9ydHNIYWxmRmxvYXRUZXh0dXJlczpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzSGFsZkZsb2F0VGV4dHVyZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3RleHR1cmVfaGFsZl9mbG9hdCcgKS4iKTtyZXR1cm4gdGhpcy5leHRlbnNpb25zLmdldCgiT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpfSxzdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1N0YW5kYXJkRGVyaXZhdGl2ZXMoKSBpcyBub3cgLmV4dGVuc2lvbnMuZ2V0KCAnT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzJyApLiIpO3JldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiKX0sc3VwcG9ydHNDb21wcmVzc2VkVGV4dHVyZVMzVEM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0NvbXByZXNzZWRUZXh0dXJlUzNUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfczN0YycgKS4iKTsKcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9zM3RjIil9LHN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQzpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnN1cHBvcnRzQ29tcHJlc3NlZFRleHR1cmVQVlJUQygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdXRUJHTF9jb21wcmVzc2VkX3RleHR1cmVfcHZydGMnICkuIik7cmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXQoIldFQkdMX2NvbXByZXNzZWRfdGV4dHVyZV9wdnJ0YyIpfSxzdXBwb3J0c0JsZW5kTWluTWF4OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc3VwcG9ydHNCbGVuZE1pbk1heCgpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdFWFRfYmxlbmRfbWlubWF4JyApLiIpO3JldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJFWFRfYmxlbmRfbWlubWF4Iil9LHN1cHBvcnRzVmVydGV4VGV4dHVyZXM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c1ZlcnRleFRleHR1cmVzKCkgaXMgbm93IC5jYXBhYmlsaXRpZXMudmVydGV4VGV4dHVyZXMuIik7CnJldHVybiB0aGlzLmNhcGFiaWxpdGllcy52ZXJ0ZXhUZXh0dXJlc30sc3VwcG9ydHNJbnN0YW5jZWRBcnJheXM6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zdXBwb3J0c0luc3RhbmNlZEFycmF5cygpIGlzIG5vdyAuZXh0ZW5zaW9ucy5nZXQoICdBTkdMRV9pbnN0YW5jZWRfYXJyYXlzJyApLiIpO3JldHVybiB0aGlzLmV4dGVuc2lvbnMuZ2V0KCJBTkdMRV9pbnN0YW5jZWRfYXJyYXlzIil9LGVuYWJsZVNjaXNzb3JUZXN0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmVuYWJsZVNjaXNzb3JUZXN0KCkgaXMgbm93IC5zZXRTY2lzc29yVGVzdCgpLiIpO3RoaXMuc2V0U2Npc3NvclRlc3QoYSl9LGluaXRNYXRlcmlhbDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmluaXRNYXRlcmlhbCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LGFkZFByZVBsdWdpbjpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmFkZFByZVBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LAphZGRQb3N0UGx1Z2luOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWRkUG9zdFBsdWdpbigpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHVwZGF0ZVNoYWRvd01hcDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnVwZGF0ZVNoYWRvd01hcCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldEZhY2VDdWxsaW5nOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0RmFjZUN1bGxpbmcoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxhbGxvY1RleHR1cmVVbml0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuYWxsb2NUZXh0dXJlVW5pdCgpIGhhcyBiZWVuIHJlbW92ZWQuIil9LHNldFRleHR1cmU6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zZXRUZXh0dXJlKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sc2V0VGV4dHVyZTJEOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZTJEKCkgaGFzIGJlZW4gcmVtb3ZlZC4iKX0sCnNldFRleHR1cmVDdWJlOmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2V0VGV4dHVyZUN1YmUoKSBoYXMgYmVlbiByZW1vdmVkLiIpfSxnZXRBY3RpdmVNaXBNYXBMZXZlbDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLmdldEFjdGl2ZU1pcE1hcExldmVsKCkgaXMgbm93IC5nZXRBY3RpdmVNaXBtYXBMZXZlbCgpLiIpO3JldHVybiB0aGlzLmdldEFjdGl2ZU1pcG1hcExldmVsKCl9fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoT2gucHJvdG90eXBlLHtzaGFkb3dNYXBFbmFibGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAuZW5hYmxlZH0sc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEVuYWJsZWQgaXMgbm93IC5zaGFkb3dNYXAuZW5hYmxlZC4iKTt0aGlzLnNoYWRvd01hcC5lbmFibGVkPWF9fSxzaGFkb3dNYXBUeXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaGFkb3dNYXAudHlwZX0sCnNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXBUeXBlIGlzIG5vdyAuc2hhZG93TWFwLnR5cGUuIik7dGhpcy5zaGFkb3dNYXAudHlwZT1hfX0sc2hhZG93TWFwQ3VsbEZhY2U6e2dldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcEN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9fSxjb250ZXh0OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5jb250ZXh0IGhhcyBiZWVuIHJlbW92ZWQuIFVzZSAuZ2V0Q29udGV4dCgpIGluc3RlYWQuIik7cmV0dXJuIHRoaXMuZ2V0Q29udGV4dCgpfX19KTsKT2JqZWN0LmRlZmluZVByb3BlcnRpZXModmoucHJvdG90eXBlLHtjdWxsRmFjZTp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLmN1bGxGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5jdWxsRmFjZSBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX0scmVuZGVyUmV2ZXJzZVNpZGVkOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyZXI6IC5zaGFkb3dNYXAucmVuZGVyUmV2ZXJzZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJSZXZlcnNlU2lkZWQgaGFzIGJlZW4gcmVtb3ZlZC4gU2V0IE1hdGVyaWFsLnNoYWRvd1NpZGUgaW5zdGVhZC4iKX19LApyZW5kZXJTaW5nbGVTaWRlZDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlcmVyOiAuc2hhZG93TWFwLnJlbmRlclNpbmdsZVNpZGVkIGhhcyBiZWVuIHJlbW92ZWQuIFNldCBNYXRlcmlhbC5zaGFkb3dTaWRlIGluc3RlYWQuIil9LHNldDpmdW5jdGlvbigpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJlcjogLnNoYWRvd01hcC5yZW5kZXJTaW5nbGVTaWRlZCBoYXMgYmVlbiByZW1vdmVkLiBTZXQgTWF0ZXJpYWwuc2hhZG93U2lkZSBpbnN0ZWFkLiIpfX19KTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhOYi5wcm90b3R5cGUse2FjdGl2ZUN1YmVGYWNlOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0Q3ViZTogLmFjdGl2ZUN1YmVGYWNlIGhhcyBiZWVuIHJlbW92ZWQuIEl0IGlzIG5vdyB0aGUgc2Vjb25kIHBhcmFtZXRlciBvZiBXZWJHTFJlbmRlcmVyLnNldFJlbmRlclRhcmdldCgpLiIpfX0sCmFjdGl2ZU1pcE1hcExldmVsOntzZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0Q3ViZTogLmFjdGl2ZU1pcE1hcExldmVsIGhhcyBiZWVuIHJlbW92ZWQuIEl0IGlzIG5vdyB0aGUgdGhpcmQgcGFyYW1ldGVyIG9mIFdlYkdMUmVuZGVyZXIuc2V0UmVuZGVyVGFyZ2V0KCkuIil9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG0ucHJvdG90eXBlLHt3cmFwUzp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBTfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBTIGlzIG5vdyAudGV4dHVyZS53cmFwUy4iKTt0aGlzLnRleHR1cmUud3JhcFM9YX19LHdyYXBUOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAud3JhcFQgaXMgbm93IC50ZXh0dXJlLndyYXBULiIpOwpyZXR1cm4gdGhpcy50ZXh0dXJlLndyYXBUfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLndyYXBUIGlzIG5vdyAudGV4dHVyZS53cmFwVC4iKTt0aGlzLnRleHR1cmUud3JhcFQ9YX19LG1hZ0ZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpO3JldHVybiB0aGlzLnRleHR1cmUubWFnRmlsdGVyfSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1hZ0ZpbHRlciBpcyBub3cgLnRleHR1cmUubWFnRmlsdGVyLiIpO3RoaXMudGV4dHVyZS5tYWdGaWx0ZXI9YX19LG1pbkZpbHRlcjp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm1pbkZpbHRlciBpcyBub3cgLnRleHR1cmUubWluRmlsdGVyLiIpO3JldHVybiB0aGlzLnRleHR1cmUubWluRmlsdGVyfSwKc2V0OmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuV2ViR0xSZW5kZXJUYXJnZXQ6IC5taW5GaWx0ZXIgaXMgbm93IC50ZXh0dXJlLm1pbkZpbHRlci4iKTt0aGlzLnRleHR1cmUubWluRmlsdGVyPWF9fSxhbmlzb3Ryb3B5OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLmFuaXNvdHJvcHl9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuYW5pc290cm9weSBpcyBub3cgLnRleHR1cmUuYW5pc290cm9weS4iKTt0aGlzLnRleHR1cmUuYW5pc290cm9weT1hfX0sb2Zmc2V0OntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAub2Zmc2V0IGlzIG5vdyAudGV4dHVyZS5vZmZzZXQuIik7cmV0dXJuIHRoaXMudGV4dHVyZS5vZmZzZXR9LApzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLm9mZnNldCBpcyBub3cgLnRleHR1cmUub2Zmc2V0LiIpO3RoaXMudGV4dHVyZS5vZmZzZXQ9YX19LHJlcGVhdDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpO3JldHVybiB0aGlzLnRleHR1cmUucmVwZWF0fSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLnJlcGVhdCBpcyBub3cgLnRleHR1cmUucmVwZWF0LiIpO3RoaXMudGV4dHVyZS5yZXBlYXQ9YX19LGZvcm1hdDp7Z2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpO3JldHVybiB0aGlzLnRleHR1cmUuZm9ybWF0fSxzZXQ6ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJHTFJlbmRlclRhcmdldDogLmZvcm1hdCBpcyBub3cgLnRleHR1cmUuZm9ybWF0LiIpOwp0aGlzLnRleHR1cmUuZm9ybWF0PWF9fSx0eXBlOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKTtyZXR1cm4gdGhpcy50ZXh0dXJlLnR5cGV9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAudHlwZSBpcyBub3cgLnRleHR1cmUudHlwZS4iKTt0aGlzLnRleHR1cmUudHlwZT1hfX0sZ2VuZXJhdGVNaXBtYXBzOntnZXQ6ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIik7cmV0dXJuIHRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHN9LHNldDpmdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLldlYkdMUmVuZGVyVGFyZ2V0OiAuZ2VuZXJhdGVNaXBtYXBzIGlzIG5vdyAudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHMuIik7CnRoaXMudGV4dHVyZS5nZW5lcmF0ZU1pcG1hcHM9YX19fSk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTmgucHJvdG90eXBlLHtzdGFuZGluZzp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJWUk1hbmFnZXI6IC5zdGFuZGluZyBoYXMgYmVlbiByZW1vdmVkLiIpfX0sdXNlckhlaWdodDp7c2V0OmZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5XZWJWUk1hbmFnZXI6IC51c2VySGVpZ2h0IGhhcyBiZWVuIHJlbW92ZWQuIil9fX0pO1dlLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuQXVkaW86IC5sb2FkIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBUSFJFRS5BdWRpb0xvYWRlciBpbnN0ZWFkLiIpO3ZhciBjPXRoaXM7KG5ldyAkZykubG9hZChhLGZ1bmN0aW9uKGUpe2Muc2V0QnVmZmVyKGUpfSk7cmV0dXJuIHRoaXN9O29pLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7Y29uc29sZS53YXJuKCJUSFJFRS5BdWRpb0FuYWx5c2VyOiAuZ2V0RGF0YSgpIGlzIG5vdyAuZ2V0RnJlcXVlbmN5RGF0YSgpLiIpOwpyZXR1cm4gdGhpcy5nZXRGcmVxdWVuY3lEYXRhKCl9O0diLnByb3RvdHlwZS51cGRhdGVDdWJlTWFwPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5DdWJlQ2FtZXJhOiAudXBkYXRlQ3ViZU1hcCgpIGlzIG5vdyAudXBkYXRlKCkuIik7cmV0dXJuIHRoaXMudXBkYXRlKGEsYyl9O0RkLmNyb3NzT3JpZ2luPXZvaWQgMDtEZC5sb2FkVGV4dHVyZT1mdW5jdGlvbihhLGMsZSxnKXtjb25zb2xlLndhcm4oIlRIUkVFLkltYWdlVXRpbHMubG9hZFRleHR1cmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLlRleHR1cmVMb2FkZXIoKSBpbnN0ZWFkLiIpO3ZhciByPW5ldyBNZztyLnNldENyb3NzT3JpZ2luKHRoaXMuY3Jvc3NPcmlnaW4pO2E9ci5sb2FkKGEsZSx2b2lkIDAsZyk7YyYmKGEubWFwcGluZz1jKTtyZXR1cm4gYX07RGQubG9hZFRleHR1cmVDdWJlPWZ1bmN0aW9uKGEsYyxlLGcpe2NvbnNvbGUud2FybigiVEhSRUUuSW1hZ2VVdGlscy5sb2FkVGV4dHVyZUN1YmUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gVXNlIFRIUkVFLkN1YmVUZXh0dXJlTG9hZGVyKCkgaW5zdGVhZC4iKTsKdmFyIHI9bmV3IExnO3Iuc2V0Q3Jvc3NPcmlnaW4odGhpcy5jcm9zc09yaWdpbik7YT1yLmxvYWQoYSxlLHZvaWQgMCxnKTtjJiYoYS5tYXBwaW5nPWMpO3JldHVybiBhfTtEZC5sb2FkQ29tcHJlc3NlZFRleHR1cmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgVEhSRUUuRERTTG9hZGVyIGluc3RlYWQuIil9O0RkLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmU9ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5JbWFnZVV0aWxzLmxvYWRDb21wcmVzc2VkVGV4dHVyZUN1YmUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLkREU0xvYWRlciBpbnN0ZWFkLiIpfTtiLkFDRVNGaWxtaWNUb25lTWFwcGluZz01O2IuQWRkRXF1YXRpb249MTAwO2IuQWRkT3BlcmF0aW9uPTI7Yi5BZGRpdGl2ZUJsZW5kaW5nPTI7Yi5BbHBoYUZvcm1hdD0xMDIxO2IuQWx3YXlzRGVwdGg9CjE7Yi5BbHdheXNTdGVuY2lsRnVuYz01MTk7Yi5BbWJpZW50TGlnaHQ9VGc7Yi5BbWJpZW50TGlnaHRQcm9iZT1qaTtiLkFuaW1hdGlvbkNsaXA9dGM7Yi5BbmltYXRpb25Mb2FkZXI9YWk7Yi5BbmltYXRpb25NaXhlcj1xaTtiLkFuaW1hdGlvbk9iamVjdEdyb3VwPVNqO2IuQW5pbWF0aW9uVXRpbHM9VGI7Yi5BcmNDdXJ2ZT1WZTtiLkFycmF5Q2FtZXJhPXZmO2IuQXJyb3dIZWxwZXI9aWQ7Yi5BdWRpbz1XZTtiLkF1ZGlvQW5hbHlzZXI9b2k7Yi5BdWRpb0NvbnRleHQ9bWk7Yi5BdWRpb0xpc3RlbmVyPWxpO2IuQXVkaW9Mb2FkZXI9JGc7Yi5BeGVzSGVscGVyPWlnO2IuQXhpc0hlbHBlcj1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLkF4aXNIZWxwZXIgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5BeGVzSGVscGVyLiIpO3JldHVybiBuZXcgaWcoYSl9O2IuQmFja1NpZGU9MTtiLkJhc2ljRGVwdGhQYWNraW5nPTMyMDA7Yi5CYXNpY1NoYWRvd01hcD0wO2IuQmluYXJ5VGV4dHVyZUxvYWRlcj0KZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5CaW5hcnlUZXh0dXJlTG9hZGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuRGF0YVRleHR1cmVMb2FkZXIuIik7cmV0dXJuIG5ldyBLZyhhKX07Yi5Cb25lPVVoO2IuQm9vbGVhbktleWZyYW1lVHJhY2s9R2c7Yi5Cb3VuZGluZ0JveEhlbHBlcj1mdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuQm91bmRpbmdCb3hIZWxwZXIgaGFzIGJlZW4gZGVwcmVjYXRlZC4gQ3JlYXRpbmcgYSBUSFJFRS5Cb3hIZWxwZXIgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IGhkKGEsYyl9O2IuQm94Mj10aTtiLkJveDM9dztiLkJveDNIZWxwZXI9Z2c7Yi5Cb3hCdWZmZXJHZW9tZXRyeT1YYTtiLkJveEdlb21ldHJ5PVNhO2IuQm94SGVscGVyPWhkO2IuQnVmZmVyQXR0cmlidXRlPVE7Yi5CdWZmZXJHZW9tZXRyeT12YTtiLkJ1ZmZlckdlb21ldHJ5TG9hZGVyPVlnO2IuQnl0ZVR5cGU9MTAxMDtiLkNhY2hlPWllO2IuQ2FtZXJhPXpiO2IuQ2FtZXJhSGVscGVyPQpmZztiLkNhbnZhc1JlbmRlcmVyPWZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuQ2FudmFzUmVuZGVyZXIgaGFzIGJlZW4gcmVtb3ZlZCIpfTtiLkNhbnZhc1RleHR1cmU9Q2Y7Yi5DYXRtdWxsUm9tQ3VydmUzPVpiO2IuQ2luZW9uVG9uZU1hcHBpbmc9NDtiLkNpcmNsZUJ1ZmZlckdlb21ldHJ5PVFlO2IuQ2lyY2xlR2VvbWV0cnk9WGY7Yi5DbGFtcFRvRWRnZVdyYXBwaW5nPTEwMDE7Yi5DbG9jaz1raTtiLkNsb3NlZFNwbGluZUN1cnZlMz1aajtiLkNvbG9yPUk7Yi5Db2xvcktleWZyYW1lVHJhY2s9SGc7Yi5Db21wcmVzc2VkVGV4dHVyZT1EZTtiLkNvbXByZXNzZWRUZXh0dXJlTG9hZGVyPWJpO2IuQ29uZUJ1ZmZlckdlb21ldHJ5PVdmO2IuQ29uZUdlb21ldHJ5PVZmO2IuQ3ViZUNhbWVyYT1HYjtiLkN1YmVHZW9tZXRyeT1TYTtiLkN1YmVSZWZsZWN0aW9uTWFwcGluZz0zMDE7Yi5DdWJlUmVmcmFjdGlvbk1hcHBpbmc9MzAyO2IuQ3ViZVRleHR1cmU9Y2Q7Yi5DdWJlVGV4dHVyZUxvYWRlcj0KTGc7Yi5DdWJlVVZSZWZsZWN0aW9uTWFwcGluZz0zMDY7Yi5DdWJlVVZSZWZyYWN0aW9uTWFwcGluZz0zMDc7Yi5DdWJpY0JlemllckN1cnZlPUNjO2IuQ3ViaWNCZXppZXJDdXJ2ZTM9VGM7Yi5DdWJpY0ludGVycG9sYW50PUVnO2IuQ3VsbEZhY2VCYWNrPTE7Yi5DdWxsRmFjZUZyb250PTI7Yi5DdWxsRmFjZUZyb250QmFjaz0zO2IuQ3VsbEZhY2VOb25lPTA7Yi5DdXJ2ZT1aYTtiLkN1cnZlUGF0aD1nZDtiLkN1c3RvbUJsZW5kaW5nPTU7Yi5DeWxpbmRlckJ1ZmZlckdlb21ldHJ5PWZkO2IuQ3lsaW5kZXJHZW9tZXRyeT1YZDtiLkN5bGluZHJpY2FsPVhqO2IuRGF0YVRleHR1cmU9QWI7Yi5EYXRhVGV4dHVyZTJEQXJyYXk9cmU7Yi5EYXRhVGV4dHVyZTNEPXNlO2IuRGF0YVRleHR1cmVMb2FkZXI9S2c7Yi5EZWNyZW1lbnRTdGVuY2lsT3A9NzY4MztiLkRlY3JlbWVudFdyYXBTdGVuY2lsT3A9MzQwNTY7Yi5EZWZhdWx0TG9hZGluZ01hbmFnZXI9T2o7Yi5EZXB0aEZvcm1hdD0xMDI2OwpiLkRlcHRoU3RlbmNpbEZvcm1hdD0xMDI3O2IuRGVwdGhUZXh0dXJlPURmO2IuRGlyZWN0aW9uYWxMaWdodD1TZztiLkRpcmVjdGlvbmFsTGlnaHRIZWxwZXI9ZGY7Yi5EaXJlY3Rpb25hbExpZ2h0U2hhZG93PVJnO2IuRGlzY3JldGVJbnRlcnBvbGFudD1GZztiLkRvZGVjYWhlZHJvbkJ1ZmZlckdlb21ldHJ5PUllO2IuRG9kZWNhaGVkcm9uR2VvbWV0cnk9SmY7Yi5Eb3VibGVTaWRlPTI7Yi5Ec3RBbHBoYUZhY3Rvcj0yMDY7Yi5Ec3RDb2xvckZhY3Rvcj0yMDg7Yi5EeW5hbWljQnVmZmVyQXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5EeW5hbWljQnVmZmVyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuQnVmZmVyQXR0cmlidXRlKCkuc2V0RHluYW1pYyggdHJ1ZSApIGluc3RlYWQuIik7cmV0dXJuKG5ldyBRKGEsYykpLnNldER5bmFtaWMoITApfTtiLkVkZ2VzR2VvbWV0cnk9UGU7Yi5FZGdlc0hlbHBlcj1mdW5jdGlvbihhLApjKXtjb25zb2xlLndhcm4oIlRIUkVFLkVkZ2VzSGVscGVyIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5FZGdlc0dlb21ldHJ5IGluc3RlYWQuIik7cmV0dXJuIG5ldyBJYihuZXcgUGUoYS5nZW9tZXRyeSksbmV3IEZiKHtjb2xvcjp2b2lkIDAhPT1jP2M6MTY3NzcyMTV9KSl9O2IuRWxsaXBzZUN1cnZlPXBjO2IuRXF1YWxEZXB0aD00O2IuRXF1YWxTdGVuY2lsRnVuYz01MTQ7Yi5FcXVpcmVjdGFuZ3VsYXJSZWZsZWN0aW9uTWFwcGluZz0zMDM7Yi5FcXVpcmVjdGFuZ3VsYXJSZWZyYWN0aW9uTWFwcGluZz0zMDQ7Yi5FdWxlcj11O2IuRXZlbnREaXNwYXRjaGVyPWQ7Yi5FeHRydWRlQnVmZmVyR2VvbWV0cnk9UmM7Yi5FeHRydWRlR2VvbWV0cnk9VWQ7Yi5GYWNlMz1LO2IuRmFjZTQ9ZnVuY3Rpb24oYSxjLGUsZyxyLHYseil7Y29uc29sZS53YXJuKCJUSFJFRS5GYWNlNCBoYXMgYmVlbiByZW1vdmVkLiBBIFRIUkVFLkZhY2UzIHdpbGwgYmUgY3JlYXRlZCBpbnN0ZWFkLiIpO3JldHVybiBuZXcgSyhhLApjLGUscix2LHopfTtiLkZhY2VDb2xvcnM9MTtiLkZhY2VOb3JtYWxzSGVscGVyPWVnO2IuRmlsZUxvYWRlcj11YztiLkZsYXRTaGFkaW5nPTE7Yi5GbG9hdDMyQXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5GbG9hdDMyQXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuRmxvYXQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBjYShhLGMpfTtiLkZsb2F0MzJCdWZmZXJBdHRyaWJ1dGU9Y2E7Yi5GbG9hdDY0QXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5GbG9hdDY0QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuRmxvYXQ2NEJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBrYShhLGMpfTtiLkZsb2F0NjRCdWZmZXJBdHRyaWJ1dGU9a2E7Yi5GbG9hdFR5cGU9MTAxNTtiLkZvZz1BZztiLkZvZ0V4cDI9emc7Yi5Gb250PWdpOwpiLkZvbnRMb2FkZXI9aGk7Yi5Gcm9udEZhY2VEaXJlY3Rpb25DQ1c9MTtiLkZyb250RmFjZURpcmVjdGlvbkNXPTA7Yi5Gcm9udFNpZGU9MDtiLkZydXN0dW09aWM7Yi5HYW1tYUVuY29kaW5nPTMwMDc7Yi5HZW9tZXRyeT15YTtiLkdlb21ldHJ5VXRpbHM9e21lcmdlOmZ1bmN0aW9uKGEsYyxlKXtjb25zb2xlLndhcm4oIlRIUkVFLkdlb21ldHJ5VXRpbHM6IC5tZXJnZSgpIGhhcyBiZWVuIG1vdmVkIHRvIEdlb21ldHJ5LiBVc2UgZ2VvbWV0cnkubWVyZ2UoIGdlb21ldHJ5MiwgbWF0cml4LCBtYXRlcmlhbEluZGV4T2Zmc2V0ICkgaW5zdGVhZC4iKTtpZihjLmlzTWVzaCl7Yy5tYXRyaXhBdXRvVXBkYXRlJiZjLnVwZGF0ZU1hdHJpeCgpO3ZhciBnPWMubWF0cml4O2M9Yy5nZW9tZXRyeX1hLm1lcmdlKGMsZyxlKX0sY2VudGVyOmZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuR2VvbWV0cnlVdGlsczogLmNlbnRlcigpIGhhcyBiZWVuIG1vdmVkIHRvIEdlb21ldHJ5LiBVc2UgZ2VvbWV0cnkuY2VudGVyKCkgaW5zdGVhZC4iKTsKcmV0dXJuIGEuY2VudGVyKCl9fTtiLkdyZWF0ZXJEZXB0aD02O2IuR3JlYXRlckVxdWFsRGVwdGg9NTtiLkdyZWF0ZXJFcXVhbFN0ZW5jaWxGdW5jPTUxODtiLkdyZWF0ZXJTdGVuY2lsRnVuYz01MTY7Yi5HcmlkSGVscGVyPWNoO2IuR3JvdXA9dWU7Yi5IYWxmRmxvYXRUeXBlPTEwMTY7Yi5IZW1pc3BoZXJlTGlnaHQ9Tmc7Yi5IZW1pc3BoZXJlTGlnaHRIZWxwZXI9YWY7Yi5IZW1pc3BoZXJlTGlnaHRQcm9iZT1paTtiLkljb3NhaGVkcm9uQnVmZmVyR2VvbWV0cnk9SGU7Yi5JY29zYWhlZHJvbkdlb21ldHJ5PUlmO2IuSW1hZ2VCaXRtYXBMb2FkZXI9ZWk7Yi5JbWFnZUxvYWRlcj1VZTtiLkltYWdlVXRpbHM9RGQ7Yi5JbW1lZGlhdGVSZW5kZXJPYmplY3Q9Y2c7Yi5JbmNyZW1lbnRTdGVuY2lsT3A9NzY4MjtiLkluY3JlbWVudFdyYXBTdGVuY2lsT3A9MzQwNTU7Yi5JbnN0YW5jZWRCdWZmZXJBdHRyaWJ1dGU9WGc7Yi5JbnN0YW5jZWRCdWZmZXJHZW9tZXRyeT1XZztiLkluc3RhbmNlZEludGVybGVhdmVkQnVmZmVyPQpyaTtiLkludDE2QXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5JbnQxNkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDE2QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IGxhKGEsYyl9O2IuSW50MTZCdWZmZXJBdHRyaWJ1dGU9bGE7Yi5JbnQzMkF0dHJpYnV0ZT1mdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuSW50MzJBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5JbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBiYShhLGMpfTtiLkludDMyQnVmZmVyQXR0cmlidXRlPWJhO2IuSW50OEF0dHJpYnV0ZT1mdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuSW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLkludDhCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgVChhLApjKX07Yi5JbnQ4QnVmZmVyQXR0cmlidXRlPVQ7Yi5JbnRUeXBlPTEwMTM7Yi5JbnRlcmxlYXZlZEJ1ZmZlcj1RZDtiLkludGVybGVhdmVkQnVmZmVyQXR0cmlidXRlPXhmO2IuSW50ZXJwb2xhbnQ9b2M7Yi5JbnRlcnBvbGF0ZURpc2NyZXRlPTIzMDA7Yi5JbnRlcnBvbGF0ZUxpbmVhcj0yMzAxO2IuSW50ZXJwb2xhdGVTbW9vdGg9MjMwMjtiLkludmVydFN0ZW5jaWxPcD01Mzg2O2IuSlNPTkxvYWRlcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkpTT05Mb2FkZXIgaGFzIGJlZW4gcmVtb3ZlZC4iKX07Yi5LZWVwU3RlbmNpbE9wPTc2ODA7Yi5LZXlmcmFtZVRyYWNrPVhiO2IuTE9EPUFmO2IuTGF0aGVCdWZmZXJHZW9tZXRyeT1PZTtiLkxhdGhlR2VvbWV0cnk9VWY7Yi5MYXllcnM9eDtiLkxlbnNGbGFyZT1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoIlRIUkVFLkxlbnNGbGFyZSBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanMvb2JqZWN0cy9MZW5zZmxhcmUuanMiKX07CmIuTGVzc0RlcHRoPTI7Yi5MZXNzRXF1YWxEZXB0aD0zO2IuTGVzc0VxdWFsU3RlbmNpbEZ1bmM9NTE1O2IuTGVzc1N0ZW5jaWxGdW5jPTUxMztiLkxpZ2h0PUpiO2IuTGlnaHRQcm9iZT1IYztiLkxpZ2h0UHJvYmVIZWxwZXI9YmY7Yi5MaWdodFNoYWRvdz1WYztiLkxpbmU9VmI7Yi5MaW5lMz11aTtiLkxpbmVCYXNpY01hdGVyaWFsPUZiO2IuTGluZUN1cnZlPWtjO2IuTGluZUN1cnZlMz1EYztiLkxpbmVEYXNoZWRNYXRlcmlhbD1kZTtiLkxpbmVMb29wPURnO2IuTGluZVBpZWNlcz0xO2IuTGluZVNlZ21lbnRzPUliO2IuTGluZVN0cmlwPTA7Yi5MaW5lYXJFbmNvZGluZz0zRTM7Yi5MaW5lYXJGaWx0ZXI9MTAwNjtiLkxpbmVhckludGVycG9sYW50PVlmO2IuTGluZWFyTWlwTWFwTGluZWFyRmlsdGVyPTEwMDg7Yi5MaW5lYXJNaXBNYXBOZWFyZXN0RmlsdGVyPTEwMDc7Yi5MaW5lYXJNaXBtYXBMaW5lYXJGaWx0ZXI9MTAwODtiLkxpbmVhck1pcG1hcE5lYXJlc3RGaWx0ZXI9MTAwNzsKYi5MaW5lYXJUb25lTWFwcGluZz0xO2IuTG9hZGVyPURiO2IuTG9hZGVyVXRpbHM9UGk7Yi5Mb2FkaW5nTWFuYWdlcj0kaDtiLkxvZ0x1dkVuY29kaW5nPTMwMDM7Yi5Mb29wT25jZT0yMjAwO2IuTG9vcFBpbmdQb25nPTIyMDI7Yi5Mb29wUmVwZWF0PTIyMDE7Yi5MdW1pbmFuY2VBbHBoYUZvcm1hdD0xMDI1O2IuTHVtaW5hbmNlRm9ybWF0PTEwMjQ7Yi5NT1VTRT17TEVGVDowLE1JRERMRToxLFJJR0hUOjIsUk9UQVRFOjAsRE9MTFk6MSxQQU46Mn07Yi5NYXRlcmlhbD1NO2IuTWF0ZXJpYWxMb2FkZXI9Vmc7Yi5NYXRoPWhiO2IuTWF0cml4Mz10O2IuTWF0cml4ND1xO2IuTWF4RXF1YXRpb249MTA0O2IuTWVzaD14YTtiLk1lc2hCYXNpY01hdGVyaWFsPUw7Yi5NZXNoRGVwdGhNYXRlcmlhbD12ZDtiLk1lc2hEaXN0YW5jZU1hdGVyaWFsPXdkO2IuTWVzaEZhY2VNYXRlcmlhbD1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLk1lc2hGYWNlTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIik7CnJldHVybiBhfTtiLk1lc2hMYW1iZXJ0TWF0ZXJpYWw9YmU7Yi5NZXNoTWF0Y2FwTWF0ZXJpYWw9Y2U7Yi5NZXNoTm9ybWFsTWF0ZXJpYWw9YWU7Yi5NZXNoUGhvbmdNYXRlcmlhbD1CYztiLk1lc2hQaHlzaWNhbE1hdGVyaWFsPVpkO2IuTWVzaFN0YW5kYXJkTWF0ZXJpYWw9U2M7Yi5NZXNoVG9vbk1hdGVyaWFsPSRkO2IuTWluRXF1YXRpb249MTAzO2IuTWlycm9yZWRSZXBlYXRXcmFwcGluZz0xMDAyO2IuTWl4T3BlcmF0aW9uPTE7Yi5NdWx0aU1hdGVyaWFsPWZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEmJihhPVtdKTtjb25zb2xlLndhcm4oIlRIUkVFLk11bHRpTWF0ZXJpYWwgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGFuIEFycmF5IGluc3RlYWQuIik7YS5pc011bHRpTWF0ZXJpYWw9ITA7YS5tYXRlcmlhbHM9YTthLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIGEuc2xpY2UoKX07cmV0dXJuIGF9O2IuTXVsdGlwbHlCbGVuZGluZz00O2IuTXVsdGlwbHlPcGVyYXRpb249MDtiLk5lYXJlc3RGaWx0ZXI9CjEwMDM7Yi5OZWFyZXN0TWlwTWFwTGluZWFyRmlsdGVyPTEwMDU7Yi5OZWFyZXN0TWlwTWFwTmVhcmVzdEZpbHRlcj0xMDA0O2IuTmVhcmVzdE1pcG1hcExpbmVhckZpbHRlcj0xMDA1O2IuTmVhcmVzdE1pcG1hcE5lYXJlc3RGaWx0ZXI9MTAwNDtiLk5ldmVyRGVwdGg9MDtiLk5ldmVyU3RlbmNpbEZ1bmM9NTEyO2IuTm9CbGVuZGluZz0wO2IuTm9Db2xvcnM9MDtiLk5vVG9uZU1hcHBpbmc9MDtiLk5vcm1hbEJsZW5kaW5nPTE7Yi5Ob3RFcXVhbERlcHRoPTc7Yi5Ob3RFcXVhbFN0ZW5jaWxGdW5jPTUxNztiLk51bWJlcktleWZyYW1lVHJhY2s9U2U7Yi5PYmplY3QzRD1BO2IuT2JqZWN0TG9hZGVyPVpnO2IuT2JqZWN0U3BhY2VOb3JtYWxNYXA9MTtiLk9jdGFoZWRyb25CdWZmZXJHZW9tZXRyeT1SZDtiLk9jdGFoZWRyb25HZW9tZXRyeT1IZjtiLk9uZUZhY3Rvcj0yMDE7Yi5PbmVNaW51c0RzdEFscGhhRmFjdG9yPTIwNztiLk9uZU1pbnVzRHN0Q29sb3JGYWN0b3I9MjA5O2IuT25lTWludXNTcmNBbHBoYUZhY3Rvcj0KMjA1O2IuT25lTWludXNTcmNDb2xvckZhY3Rvcj0yMDM7Yi5PcnRob2dyYXBoaWNDYW1lcmE9Ymc7Yi5QQ0ZTaGFkb3dNYXA9MTtiLlBDRlNvZnRTaGFkb3dNYXA9MjtiLlBhcmFtZXRyaWNCdWZmZXJHZW9tZXRyeT1GZTtiLlBhcmFtZXRyaWNHZW9tZXRyeT1FZjtiLlBhcnRpY2xlPWZ1bmN0aW9uKGEpe2NvbnNvbGUud2FybigiVEhSRUUuUGFydGljbGUgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5TcHJpdGUuIik7cmV0dXJuIG5ldyB5ZihhKX07Yi5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWw9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZUJhc2ljTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKTtyZXR1cm4gbmV3IEFjKGEpfTtiLlBhcnRpY2xlU3lzdGVtPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbSBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLlBvaW50cy4iKTtyZXR1cm4gbmV3IENlKGEsCmMpfTtiLlBhcnRpY2xlU3lzdGVtTWF0ZXJpYWw9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5QYXJ0aWNsZVN5c3RlbU1hdGVyaWFsIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzTWF0ZXJpYWwuIik7cmV0dXJuIG5ldyBBYyhhKX07Yi5QYXRoPUdjO2IuUGVyc3BlY3RpdmVDYW1lcmE9dmI7Yi5QbGFuZT1IYjtiLlBsYW5lQnVmZmVyR2VvbWV0cnk9TGM7Yi5QbGFuZUdlb21ldHJ5PXJkO2IuUGxhbmVIZWxwZXI9aGc7Yi5Qb2ludENsb3VkPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5Qb2ludENsb3VkIGhhcyBiZWVuIHJlbmFtZWQgdG8gVEhSRUUuUG9pbnRzLiIpO3JldHVybiBuZXcgQ2UoYSxjKX07Yi5Qb2ludENsb3VkTWF0ZXJpYWw9ZnVuY3Rpb24oYSl7Y29uc29sZS53YXJuKCJUSFJFRS5Qb2ludENsb3VkTWF0ZXJpYWwgaGFzIGJlZW4gcmVuYW1lZCB0byBUSFJFRS5Qb2ludHNNYXRlcmlhbC4iKTtyZXR1cm4gbmV3IEFjKGEpfTtiLlBvaW50TGlnaHQ9ClFnO2IuUG9pbnRMaWdodEhlbHBlcj1aZTtiLlBvaW50cz1DZTtiLlBvaW50c01hdGVyaWFsPUFjO2IuUG9sYXJHcmlkSGVscGVyPWRoO2IuUG9seWhlZHJvbkJ1ZmZlckdlb21ldHJ5PWpjO2IuUG9seWhlZHJvbkdlb21ldHJ5PUZmO2IuUG9zaXRpb25hbEF1ZGlvPW5pO2IuUG9zaXRpb25hbEF1ZGlvSGVscGVyPWNmO2IuUHJvcGVydHlCaW5kaW5nPSRiO2IuUHJvcGVydHlNaXhlcj1waTtiLlF1YWRyYXRpY0JlemllckN1cnZlPUVjO2IuUXVhZHJhdGljQmV6aWVyQ3VydmUzPVVjO2IuUXVhdGVybmlvbj1oO2IuUXVhdGVybmlvbktleWZyYW1lVHJhY2s9WmY7Yi5RdWF0ZXJuaW9uTGluZWFySW50ZXJwb2xhbnQ9SWc7Yi5SRVZJU0lPTj0iMTA4IjtiLlJHQkFEZXB0aFBhY2tpbmc9MzIwMTtiLlJHQkFGb3JtYXQ9MTAyMztiLlJHQkFfQVNUQ18xMHgxMF9Gb3JtYXQ9Mzc4MTk7Yi5SR0JBX0FTVENfMTB4NV9Gb3JtYXQ9Mzc4MTY7Yi5SR0JBX0FTVENfMTB4Nl9Gb3JtYXQ9Mzc4MTc7Yi5SR0JBX0FTVENfMTB4OF9Gb3JtYXQ9CjM3ODE4O2IuUkdCQV9BU1RDXzEyeDEwX0Zvcm1hdD0zNzgyMDtiLlJHQkFfQVNUQ18xMngxMl9Gb3JtYXQ9Mzc4MjE7Yi5SR0JBX0FTVENfNHg0X0Zvcm1hdD0zNzgwODtiLlJHQkFfQVNUQ181eDRfRm9ybWF0PTM3ODA5O2IuUkdCQV9BU1RDXzV4NV9Gb3JtYXQ9Mzc4MTA7Yi5SR0JBX0FTVENfNng1X0Zvcm1hdD0zNzgxMTtiLlJHQkFfQVNUQ182eDZfRm9ybWF0PTM3ODEyO2IuUkdCQV9BU1RDXzh4NV9Gb3JtYXQ9Mzc4MTM7Yi5SR0JBX0FTVENfOHg2X0Zvcm1hdD0zNzgxNDtiLlJHQkFfQVNUQ184eDhfRm9ybWF0PTM3ODE1O2IuUkdCQV9QVlJUQ18yQlBQVjFfRm9ybWF0PTM1ODQzO2IuUkdCQV9QVlJUQ180QlBQVjFfRm9ybWF0PTM1ODQyO2IuUkdCQV9TM1RDX0RYVDFfRm9ybWF0PTMzNzc3O2IuUkdCQV9TM1RDX0RYVDNfRm9ybWF0PTMzNzc4O2IuUkdCQV9TM1RDX0RYVDVfRm9ybWF0PTMzNzc5O2IuUkdCREVuY29kaW5nPTMwMDY7Yi5SR0JFRW5jb2Rpbmc9MzAwMjtiLlJHQkVGb3JtYXQ9CjEwMjM7Yi5SR0JGb3JtYXQ9MTAyMjtiLlJHQk0xNkVuY29kaW5nPTMwMDU7Yi5SR0JNN0VuY29kaW5nPTMwMDQ7Yi5SR0JfRVRDMV9Gb3JtYXQ9MzYxOTY7Yi5SR0JfUFZSVENfMkJQUFYxX0Zvcm1hdD0zNTg0MTtiLlJHQl9QVlJUQ180QlBQVjFfRm9ybWF0PTM1ODQwO2IuUkdCX1MzVENfRFhUMV9Gb3JtYXQ9MzM3NzY7Yi5SYXdTaGFkZXJNYXRlcmlhbD1SZTtiLlJheT1EO2IuUmF5Y2FzdGVyPVVqO2IuUmVjdEFyZWFMaWdodD1VZztiLlJlY3RBcmVhTGlnaHRIZWxwZXI9JGU7Yi5SZWRGb3JtYXQ9MTAyODtiLlJlaW5oYXJkVG9uZU1hcHBpbmc9MjtiLlJlcGVhdFdyYXBwaW5nPTFFMztiLlJlcGxhY2VTdGVuY2lsT3A9NzY4MTtiLlJldmVyc2VTdWJ0cmFjdEVxdWF0aW9uPTEwMjtiLlJpbmdCdWZmZXJHZW9tZXRyeT1OZTtiLlJpbmdHZW9tZXRyeT1UZjtiLlNjZW5lPXk7Yi5TY2VuZVV0aWxzPXtjcmVhdGVNdWx0aU1hdGVyaWFsT2JqZWN0OmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanMvdXRpbHMvU2NlbmVVdGlscy5qcyIpfSwKZGV0YWNoOmZ1bmN0aW9uKCl7Y29uc29sZS5lcnJvcigiVEhSRUUuU2NlbmVVdGlscyBoYXMgYmVlbiBtb3ZlZCB0byAvZXhhbXBsZXMvanMvdXRpbHMvU2NlbmVVdGlscy5qcyIpfSxhdHRhY2g6ZnVuY3Rpb24oKXtjb25zb2xlLmVycm9yKCJUSFJFRS5TY2VuZVV0aWxzIGhhcyBiZWVuIG1vdmVkIHRvIC9leGFtcGxlcy9qcy91dGlscy9TY2VuZVV0aWxzLmpzIil9fTtiLlNoYWRlckNodW5rPXJiO2IuU2hhZGVyTGliPU1jO2IuU2hhZGVyTWF0ZXJpYWw9cWI7Yi5TaGFkb3dNYXRlcmlhbD1ZZDtiLlNoYXBlPUNkO2IuU2hhcGVCdWZmZXJHZW9tZXRyeT1XZDtiLlNoYXBlR2VvbWV0cnk9VmQ7Yi5TaGFwZVBhdGg9Zmk7Yi5TaGFwZVV0aWxzPWVkO2IuU2hvcnRUeXBlPTEwMTE7Yi5Ta2VsZXRvbj1DZztiLlNrZWxldG9uSGVscGVyPVllO2IuU2tpbm5lZE1lc2g9QmY7Yi5TbW9vdGhTaGFkaW5nPTI7Yi5TcGhlcmU9RjtiLlNwaGVyZUJ1ZmZlckdlb21ldHJ5PUJkO2IuU3BoZXJlR2VvbWV0cnk9ClNmO2IuU3BoZXJpY2FsPVdqO2IuU3BoZXJpY2FsSGFybW9uaWNzMz1haDtiLlNwaGVyaWNhbFJlZmxlY3Rpb25NYXBwaW5nPTMwNTtiLlNwbGluZT13aTtiLlNwbGluZUN1cnZlPUZjO2IuU3BsaW5lQ3VydmUzPWFrO2IuU3BvdExpZ2h0PVBnO2IuU3BvdExpZ2h0SGVscGVyPVhlO2IuU3BvdExpZ2h0U2hhZG93PU9nO2IuU3ByaXRlPXlmO2IuU3ByaXRlTWF0ZXJpYWw9QWQ7Yi5TcmNBbHBoYUZhY3Rvcj0yMDQ7Yi5TcmNBbHBoYVNhdHVyYXRlRmFjdG9yPTIxMDtiLlNyY0NvbG9yRmFjdG9yPTIwMjtiLlN0ZXJlb0NhbWVyYT1RajtiLlN0cmluZ0tleWZyYW1lVHJhY2s9Smc7Yi5TdWJ0cmFjdEVxdWF0aW9uPTEwMTtiLlN1YnRyYWN0aXZlQmxlbmRpbmc9MztiLlRPVUNIPXtST1RBVEU6MCxQQU46MSxET0xMWV9QQU46MixET0xMWV9ST1RBVEU6M307Yi5UYW5nZW50U3BhY2VOb3JtYWxNYXA9MDtiLlRldHJhaGVkcm9uQnVmZmVyR2VvbWV0cnk9R2U7Yi5UZXRyYWhlZHJvbkdlb21ldHJ5PQpHZjtiLlRleHRCdWZmZXJHZW9tZXRyeT1NZTtiLlRleHRHZW9tZXRyeT1SZjtiLlRleHR1cmU9bDtiLlRleHR1cmVMb2FkZXI9TWc7Yi5Ub3J1c0J1ZmZlckdlb21ldHJ5PUtlO2IuVG9ydXNHZW9tZXRyeT1NZjtiLlRvcnVzS25vdEJ1ZmZlckdlb21ldHJ5PUplO2IuVG9ydXNLbm90R2VvbWV0cnk9TGY7Yi5UcmlhbmdsZT1CO2IuVHJpYW5nbGVGYW5EcmF3TW9kZT0yO2IuVHJpYW5nbGVTdHJpcERyYXdNb2RlPTE7Yi5UcmlhbmdsZXNEcmF3TW9kZT0wO2IuVHViZUJ1ZmZlckdlb21ldHJ5PVNkO2IuVHViZUdlb21ldHJ5PUtmO2IuVVZNYXBwaW5nPTMwMDtiLlVpbnQxNkF0dHJpYnV0ZT1mdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuVWludDE2QXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBuZXcgVEhSRUUuVWludDE2QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IFooYSxjKX07Yi5VaW50MTZCdWZmZXJBdHRyaWJ1dGU9WjtiLlVpbnQzMkF0dHJpYnV0ZT0KZnVuY3Rpb24oYSxjKXtjb25zb2xlLndhcm4oIlRIUkVFLlVpbnQzMkF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZSgpIGluc3RlYWQuIik7cmV0dXJuIG5ldyBlYShhLGMpfTtiLlVpbnQzMkJ1ZmZlckF0dHJpYnV0ZT1lYTtiLlVpbnQ4QXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5VaW50OEF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkLiBVc2UgbmV3IFRIUkVFLlVpbnQ4QnVmZmVyQXR0cmlidXRlKCkgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IFgoYSxjKX07Yi5VaW50OEJ1ZmZlckF0dHJpYnV0ZT1YO2IuVWludDhDbGFtcGVkQXR0cmlidXRlPWZ1bmN0aW9uKGEsYyl7Y29uc29sZS53YXJuKCJUSFJFRS5VaW50OENsYW1wZWRBdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIG5ldyBUSFJFRS5VaW50OENsYW1wZWRCdWZmZXJBdHRyaWJ1dGUoKSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgYWEoYSwKYyl9O2IuVWludDhDbGFtcGVkQnVmZmVyQXR0cmlidXRlPWFhO2IuVW5jaGFydGVkMlRvbmVNYXBwaW5nPTM7Yi5Vbmlmb3JtPWJoO2IuVW5pZm9ybXNMaWI9V2E7Yi5Vbmlmb3Jtc1V0aWxzPUZtO2IuVW5zaWduZWRCeXRlVHlwZT0xMDA5O2IuVW5zaWduZWRJbnQyNDhUeXBlPTEwMjA7Yi5VbnNpZ25lZEludFR5cGU9MTAxNDtiLlVuc2lnbmVkU2hvcnQ0NDQ0VHlwZT0xMDE3O2IuVW5zaWduZWRTaG9ydDU1NTFUeXBlPTEwMTg7Yi5VbnNpZ25lZFNob3J0NTY1VHlwZT0xMDE5O2IuVW5zaWduZWRTaG9ydFR5cGU9MTAxMjtiLlZTTVNoYWRvd01hcD0zO2IuVmVjdG9yMj1mO2IuVmVjdG9yMz1rO2IuVmVjdG9yND1wO2IuVmVjdG9yS2V5ZnJhbWVUcmFjaz1UZTtiLlZlcnRleD1mdW5jdGlvbihhLGMsZSl7Y29uc29sZS53YXJuKCJUSFJFRS5WZXJ0ZXggaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIFRIUkVFLlZlY3RvcjMgaW5zdGVhZC4iKTtyZXR1cm4gbmV3IGsoYSxjLGUpfTtiLlZlcnRleENvbG9ycz0KMjtiLlZlcnRleE5vcm1hbHNIZWxwZXI9ZGc7Yi5WaWRlb1RleHR1cmU9WGg7Yi5XZWJHTE11bHRpc2FtcGxlUmVuZGVyVGFyZ2V0PW47Yi5XZWJHTFJlbmRlclRhcmdldD1tO2IuV2ViR0xSZW5kZXJUYXJnZXRDdWJlPU5iO2IuV2ViR0xSZW5kZXJlcj1PaDtiLldlYkdMVXRpbHM9d2o7Yi5XaXJlZnJhbWVHZW9tZXRyeT1FZTtiLldpcmVmcmFtZUhlbHBlcj1mdW5jdGlvbihhLGMpe2NvbnNvbGUud2FybigiVEhSRUUuV2lyZWZyYW1lSGVscGVyIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBUSFJFRS5XaXJlZnJhbWVHZW9tZXRyeSBpbnN0ZWFkLiIpO3JldHVybiBuZXcgSWIobmV3IEVlKGEuZ2VvbWV0cnkpLG5ldyBGYih7Y29sb3I6dm9pZCAwIT09Yz9jOjE2Nzc3MjE1fSkpfTtiLldyYXBBcm91bmRFbmRpbmc9MjQwMjtiLlhIUkxvYWRlcj1mdW5jdGlvbihhKXtjb25zb2xlLndhcm4oIlRIUkVFLlhIUkxvYWRlciBoYXMgYmVlbiByZW5hbWVkIHRvIFRIUkVFLkZpbGVMb2FkZXIuIik7CnJldHVybiBuZXcgdWMoYSl9O2IuWmVyb0N1cnZhdHVyZUVuZGluZz0yNDAwO2IuWmVyb0ZhY3Rvcj0yMDA7Yi5aZXJvU2xvcGVFbmRpbmc9MjQwMTtiLlplcm9TdGVuY2lsT3A9MDtiLnNSR0JFbmNvZGluZz0zMDAxO09iamVjdC5kZWZpbmVQcm9wZXJ0eShiLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWltcG9ydHMvT3JiaXRDb250cm9scy5qcwpUSFJFRS5PcmJpdENvbnRyb2xzPWZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gZigpe3JldHVybiAyKk1hdGguUEkvNjAvNjAqWS5hdXRvUm90YXRlU3BlZWR9ZnVuY3Rpb24gaCgpe3JldHVybiBNYXRoLnBvdyguOTUsWS56b29tU3BlZWQpfWZ1bmN0aW9uIGsoc2Epe1hhLnRoZXRhLT1zYX1mdW5jdGlvbiB0KHNhKXtYYS5waGktPXNhfWZ1bmN0aW9uIGwoc2Epe1kub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/dWIvPXNhOlkub2JqZWN0LmlzT3J0aG9ncmFwaGljQ2FtZXJhPyhZLm9iamVjdC56b29tPU1hdGgubWF4KFkubWluWm9vbSxNYXRoLm1pbihZLm1heFpvb20sWS5vYmplY3Quem9vbSpzYSkpLFkub2JqZWN0LnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKSxxYj0hMCk6KGNvbnNvbGUud2FybigiV0FSTklORzogT3JiaXRDb250cm9scy5qcyBlbmNvdW50ZXJlZCBhbiB1bmtub3duIGNhbWVyYSB0eXBlIC0gZG9sbHkvem9vbSBkaXNhYmxlZC4iKSxZLmVuYWJsZVpvb209ITEpfWZ1bmN0aW9uIHAoc2Epe1kub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmE/CnViKj1zYTpZLm9iamVjdC5pc09ydGhvZ3JhcGhpY0NhbWVyYT8oWS5vYmplY3Quem9vbT1NYXRoLm1heChZLm1pblpvb20sTWF0aC5taW4oWS5tYXhab29tLFkub2JqZWN0Lnpvb20vc2EpKSxZLm9iamVjdC51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCkscWI9ITApOihjb25zb2xlLndhcm4oIldBUk5JTkc6IE9yYml0Q29udHJvbHMuanMgZW5jb3VudGVyZWQgYW4gdW5rbm93biBjYW1lcmEgdHlwZSAtIGRvbGx5L3pvb20gZGlzYWJsZWQuIiksWS5lbmFibGVab29tPSExKX1mdW5jdGlvbiBtKHNhKXt6Yi5zZXQoc2EuY2xpZW50WCxzYS5jbGllbnRZKX1mdW5jdGlvbiBuKHNhKXtpYy5zZXQoc2EuY2xpZW50WCxzYS5jbGllbnRZKX1mdW5jdGlvbiBxKHNhKXtOYi5zZXQoc2EuY2xpZW50WCxzYS5jbGllbnRZKX1mdW5jdGlvbiB1KHNhKXt2Yi5zZXQoc2EuY2xpZW50WCxzYS5jbGllbnRZKTtHYi5zdWJWZWN0b3JzKHZiLHpiKS5tdWx0aXBseVNjYWxhcihZLnJvdGF0ZVNwZWVkKTtzYT0KWS5kb21FbGVtZW50PT09ZG9jdW1lbnQ/WS5kb21FbGVtZW50LmJvZHk6WS5kb21FbGVtZW50O2soMipNYXRoLlBJKkdiLngvc2EuY2xpZW50SGVpZ2h0KTt0KDIqTWF0aC5QSSpHYi55L3NhLmNsaWVudEhlaWdodCk7emIuY29weSh2Yik7WS51cGRhdGUoKX1mdW5jdGlvbiB4KHNhKXtiYy5zZXQoc2EuY2xpZW50WCxzYS5jbGllbnRZKTtPZC5zdWJWZWN0b3JzKGJjLGljKTswPE9kLnk/bChoKCkpOjA+T2QueSYmcChoKCkpO2ljLmNvcHkoYmMpO1kudXBkYXRlKCl9ZnVuY3Rpb24gQShzYSl7QWIuc2V0KHNhLmNsaWVudFgsc2EuY2xpZW50WSk7SGIuc3ViVmVjdG9ycyhBYixOYikubXVsdGlwbHlTY2FsYXIoWS5wYW5TcGVlZCk7c2QoSGIueCxIYi55KTtOYi5jb3B5KEFiKTtZLnVwZGF0ZSgpfWZ1bmN0aW9uIHkoKXt9ZnVuY3Rpb24gdyhzYSl7MD5zYS5kZWx0YVk/cChoKCkpOjA8c2EuZGVsdGFZJiZsKGgoKSk7WS51cGRhdGUoKX1mdW5jdGlvbiBDKHNhKXt2YXIgTWI9ITE7c3dpdGNoKHNhLmtleUNvZGUpe2Nhc2UgWS5rZXlzLlVQOnNkKDAsClkua2V5UGFuU3BlZWQpO01iPSEwO2JyZWFrO2Nhc2UgWS5rZXlzLkJPVFRPTTpzZCgwLC1ZLmtleVBhblNwZWVkKTtNYj0hMDticmVhaztjYXNlIFkua2V5cy5MRUZUOnNkKFkua2V5UGFuU3BlZWQsMCk7TWI9ITA7YnJlYWs7Y2FzZSBZLmtleXMuUklHSFQ6c2QoLVkua2V5UGFuU3BlZWQsMCksTWI9ITB9TWImJihzYS5wcmV2ZW50RGVmYXVsdCgpLFkudXBkYXRlKCkpfWZ1bmN0aW9uIEYoc2EpezE9PXNhLnRvdWNoZXMubGVuZ3RoP3piLnNldChzYS50b3VjaGVzWzBdLnBhZ2VYLHNhLnRvdWNoZXNbMF0ucGFnZVkpOnpiLnNldCguNSooc2EudG91Y2hlc1swXS5wYWdlWCtzYS50b3VjaGVzWzFdLnBhZ2VYKSwuNSooc2EudG91Y2hlc1swXS5wYWdlWStzYS50b3VjaGVzWzFdLnBhZ2VZKSl9ZnVuY3Rpb24gRChzYSl7MT09c2EudG91Y2hlcy5sZW5ndGg/TmIuc2V0KHNhLnRvdWNoZXNbMF0ucGFnZVgsc2EudG91Y2hlc1swXS5wYWdlWSk6TmIuc2V0KC41KihzYS50b3VjaGVzWzBdLnBhZ2VYKwpzYS50b3VjaGVzWzFdLnBhZ2VYKSwuNSooc2EudG91Y2hlc1swXS5wYWdlWStzYS50b3VjaGVzWzFdLnBhZ2VZKSl9ZnVuY3Rpb24gQihzYSl7dmFyIE1iPXNhLnRvdWNoZXNbMF0ucGFnZVgtc2EudG91Y2hlc1sxXS5wYWdlWDtzYT1zYS50b3VjaGVzWzBdLnBhZ2VZLXNhLnRvdWNoZXNbMV0ucGFnZVk7aWMuc2V0KDAsTWF0aC5zcXJ0KE1iKk1iK3NhKnNhKSl9ZnVuY3Rpb24gSShzYSl7WS5lbmFibGVab29tJiZCKHNhKTtZLmVuYWJsZVBhbiYmRChzYSl9ZnVuY3Rpb24gTihzYSl7WS5lbmFibGVab29tJiZCKHNhKTtZLmVuYWJsZVJvdGF0ZSYmRihzYSl9ZnVuY3Rpb24gTyhzYSl7MT09c2EudG91Y2hlcy5sZW5ndGg/dmIuc2V0KHNhLnRvdWNoZXNbMF0ucGFnZVgsc2EudG91Y2hlc1swXS5wYWdlWSk6dmIuc2V0KC41KihzYS50b3VjaGVzWzBdLnBhZ2VYK3NhLnRvdWNoZXNbMV0ucGFnZVgpLC41KihzYS50b3VjaGVzWzBdLnBhZ2VZK3NhLnRvdWNoZXNbMV0ucGFnZVkpKTtHYi5zdWJWZWN0b3JzKHZiLAp6YikubXVsdGlwbHlTY2FsYXIoWS5yb3RhdGVTcGVlZCk7c2E9WS5kb21FbGVtZW50PT09ZG9jdW1lbnQ/WS5kb21FbGVtZW50LmJvZHk6WS5kb21FbGVtZW50O2soMipNYXRoLlBJKkdiLngvc2EuY2xpZW50SGVpZ2h0KTt0KDIqTWF0aC5QSSpHYi55L3NhLmNsaWVudEhlaWdodCk7emIuY29weSh2Yil9ZnVuY3Rpb24gSChzYSl7MT09c2EudG91Y2hlcy5sZW5ndGg/QWIuc2V0KHNhLnRvdWNoZXNbMF0ucGFnZVgsc2EudG91Y2hlc1swXS5wYWdlWSk6QWIuc2V0KC41KihzYS50b3VjaGVzWzBdLnBhZ2VYK3NhLnRvdWNoZXNbMV0ucGFnZVgpLC41KihzYS50b3VjaGVzWzBdLnBhZ2VZK3NhLnRvdWNoZXNbMV0ucGFnZVkpKTtIYi5zdWJWZWN0b3JzKEFiLE5iKS5tdWx0aXBseVNjYWxhcihZLnBhblNwZWVkKTtzZChIYi54LEhiLnkpO05iLmNvcHkoQWIpfWZ1bmN0aW9uIEsoc2Epe3ZhciBNYj1zYS50b3VjaGVzWzBdLnBhZ2VYLXNhLnRvdWNoZXNbMV0ucGFnZVg7c2E9c2EudG91Y2hlc1swXS5wYWdlWS0Kc2EudG91Y2hlc1sxXS5wYWdlWTtiYy5zZXQoMCxNYXRoLnNxcnQoTWIqTWIrc2Eqc2EpKTtPZC5zZXQoMCxNYXRoLnBvdyhiYy55L2ljLnksWS56b29tU3BlZWQpKTtsKE9kLnkpO2ljLmNvcHkoYmMpfWZ1bmN0aW9uIE0oc2Epe1kuZW5hYmxlWm9vbSYmSyhzYSk7WS5lbmFibGVQYW4mJkgoc2EpfWZ1bmN0aW9uIEwoc2Epe1kuZW5hYmxlWm9vbSYmSyhzYSk7WS5lbmFibGVSb3RhdGUmJk8oc2EpfWZ1bmN0aW9uIFEoKXt9ZnVuY3Rpb24gVChzYSl7aWYoITEhPT1ZLmVuYWJsZWQpe3NhLnByZXZlbnREZWZhdWx0KCk7WS5kb21FbGVtZW50LmZvY3VzP1kuZG9tRWxlbWVudC5mb2N1cygpOndpbmRvdy5mb2N1cygpO3N3aXRjaChzYS5idXR0b24pe2Nhc2UgMDpzd2l0Y2goWS5tb3VzZUJ1dHRvbnMuTEVGVCl7Y2FzZSBUSFJFRS5NT1VTRS5ST1RBVEU6aWYoc2EuY3RybEtleXx8c2EubWV0YUtleXx8c2Euc2hpZnRLZXkpe2lmKCExPT09WS5lbmFibGVQYW4pcmV0dXJuO3Eoc2EpO0ZhPQpBYS5QQU59ZWxzZXtpZighMT09PVkuZW5hYmxlUm90YXRlKXJldHVybjttKHNhKTtGYT1BYS5ST1RBVEV9YnJlYWs7Y2FzZSBUSFJFRS5NT1VTRS5QQU46aWYoc2EuY3RybEtleXx8c2EubWV0YUtleXx8c2Euc2hpZnRLZXkpe2lmKCExPT09WS5lbmFibGVSb3RhdGUpcmV0dXJuO20oc2EpO0ZhPUFhLlJPVEFURX1lbHNle2lmKCExPT09WS5lbmFibGVQYW4pcmV0dXJuO3Eoc2EpO0ZhPUFhLlBBTn1icmVhaztkZWZhdWx0OkZhPUFhLk5PTkV9YnJlYWs7Y2FzZSAxOnN3aXRjaChZLm1vdXNlQnV0dG9ucy5NSURETEUpe2Nhc2UgVEhSRUUuTU9VU0UuRE9MTFk6aWYoITE9PT1ZLmVuYWJsZVpvb20pcmV0dXJuO24oc2EpO0ZhPUFhLkRPTExZO2JyZWFrO2RlZmF1bHQ6RmE9QWEuTk9ORX1icmVhaztjYXNlIDI6c3dpdGNoKFkubW91c2VCdXR0b25zLlJJR0hUKXtjYXNlIFRIUkVFLk1PVVNFLlJPVEFURTppZighMT09PVkuZW5hYmxlUm90YXRlKXJldHVybjttKHNhKTtGYT1BYS5ST1RBVEU7CmJyZWFrO2Nhc2UgVEhSRUUuTU9VU0UuUEFOOmlmKCExPT09WS5lbmFibGVQYW4pcmV0dXJuO3Eoc2EpO0ZhPUFhLlBBTjticmVhaztkZWZhdWx0OkZhPUFhLk5PTkV9fUZhIT09QWEuTk9ORSYmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsWCwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsYWEsITEpLFkuZGlzcGF0Y2hFdmVudCh2YSkpfX1mdW5jdGlvbiBYKHNhKXtpZighMSE9PVkuZW5hYmxlZClzd2l0Y2goc2EucHJldmVudERlZmF1bHQoKSxGYSl7Y2FzZSBBYS5ST1RBVEU6aWYoITE9PT1ZLmVuYWJsZVJvdGF0ZSlicmVhazt1KHNhKTticmVhaztjYXNlIEFhLkRPTExZOmlmKCExPT09WS5lbmFibGVab29tKWJyZWFrO3goc2EpO2JyZWFrO2Nhc2UgQWEuUEFOOiExIT09WS5lbmFibGVQYW4mJkEoc2EpfX1mdW5jdGlvbiBhYShzYSl7ITEhPT1ZLmVuYWJsZWQmJih5KHNhKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLApYLCExKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIixhYSwhMSksWS5kaXNwYXRjaEV2ZW50KHhhKSxGYT1BYS5OT05FKX1mdW5jdGlvbiBsYShzYSl7ITE9PT1ZLmVuYWJsZWR8fCExPT09WS5lbmFibGVab29tfHxGYSE9PUFhLk5PTkUmJkZhIT09QWEuUk9UQVRFfHwoc2EucHJldmVudERlZmF1bHQoKSxzYS5zdG9wUHJvcGFnYXRpb24oKSxZLmRpc3BhdGNoRXZlbnQodmEpLHcoc2EpLFkuZGlzcGF0Y2hFdmVudCh4YSkpfWZ1bmN0aW9uIFooc2EpeyExIT09WS5lbmFibGVkJiYhMSE9PVkuZW5hYmxlS2V5cyYmITEhPT1ZLmVuYWJsZVBhbiYmQyhzYSl9ZnVuY3Rpb24gYmEoc2Epe2lmKCExIT09WS5lbmFibGVkKXtzYS5wcmV2ZW50RGVmYXVsdCgpO3N3aXRjaChzYS50b3VjaGVzLmxlbmd0aCl7Y2FzZSAxOnN3aXRjaChZLnRvdWNoZXMuT05FKXtjYXNlIFRIUkVFLlRPVUNILlJPVEFURTppZighMT09PVkuZW5hYmxlUm90YXRlKXJldHVybjtGKHNhKTtGYT0KQWEuVE9VQ0hfUk9UQVRFO2JyZWFrO2Nhc2UgVEhSRUUuVE9VQ0guUEFOOmlmKCExPT09WS5lbmFibGVQYW4pcmV0dXJuO0Qoc2EpO0ZhPUFhLlRPVUNIX1BBTjticmVhaztkZWZhdWx0OkZhPUFhLk5PTkV9YnJlYWs7Y2FzZSAyOnN3aXRjaChZLnRvdWNoZXMuVFdPKXtjYXNlIFRIUkVFLlRPVUNILkRPTExZX1BBTjppZighMT09PVkuZW5hYmxlWm9vbSYmITE9PT1ZLmVuYWJsZVBhbilyZXR1cm47SShzYSk7RmE9QWEuVE9VQ0hfRE9MTFlfUEFOO2JyZWFrO2Nhc2UgVEhSRUUuVE9VQ0guRE9MTFlfUk9UQVRFOmlmKCExPT09WS5lbmFibGVab29tJiYhMT09PVkuZW5hYmxlUm90YXRlKXJldHVybjtOKHNhKTtGYT1BYS5UT1VDSF9ET0xMWV9ST1RBVEU7YnJlYWs7ZGVmYXVsdDpGYT1BYS5OT05FfWJyZWFrO2RlZmF1bHQ6RmE9QWEuTk9ORX1GYSE9PUFhLk5PTkUmJlkuZGlzcGF0Y2hFdmVudCh2YSl9fWZ1bmN0aW9uIGVhKHNhKXtpZighMSE9PVkuZW5hYmxlZClzd2l0Y2goc2EucHJldmVudERlZmF1bHQoKSwKc2Euc3RvcFByb3BhZ2F0aW9uKCksRmEpe2Nhc2UgQWEuVE9VQ0hfUk9UQVRFOmlmKCExPT09WS5lbmFibGVSb3RhdGUpYnJlYWs7TyhzYSk7WS51cGRhdGUoKTticmVhaztjYXNlIEFhLlRPVUNIX1BBTjppZighMT09PVkuZW5hYmxlUGFuKWJyZWFrO0goc2EpO1kudXBkYXRlKCk7YnJlYWs7Y2FzZSBBYS5UT1VDSF9ET0xMWV9QQU46aWYoITE9PT1ZLmVuYWJsZVpvb20mJiExPT09WS5lbmFibGVQYW4pYnJlYWs7TShzYSk7WS51cGRhdGUoKTticmVhaztjYXNlIEFhLlRPVUNIX0RPTExZX1JPVEFURTppZighMT09PVkuZW5hYmxlWm9vbSYmITE9PT1ZLmVuYWJsZVJvdGF0ZSlicmVhaztMKHNhKTtZLnVwZGF0ZSgpO2JyZWFrO2RlZmF1bHQ6RmE9QWEuTk9ORX19ZnVuY3Rpb24gY2Eoc2EpeyExIT09WS5lbmFibGVkJiYoUShzYSksWS5kaXNwYXRjaEV2ZW50KHhhKSxGYT1BYS5OT05FKX1mdW5jdGlvbiBrYShzYSl7ITEhPT1ZLmVuYWJsZWQmJnNhLnByZXZlbnREZWZhdWx0KCl9dGhpcy5vYmplY3Q9CmI7dGhpcy5kb21FbGVtZW50PXZvaWQgMCE9PWQ/ZDpkb2N1bWVudDt0aGlzLmVuYWJsZWQ9ITA7dGhpcy50YXJnZXQ9bmV3IFRIUkVFLlZlY3RvcjM7dGhpcy5taW5EaXN0YW5jZT0wO3RoaXMubWF4RGlzdGFuY2U9SW5maW5pdHk7dGhpcy5taW5ab29tPTA7dGhpcy5tYXhab29tPUluZmluaXR5O3RoaXMubWluUG9sYXJBbmdsZT0wO3RoaXMubWF4UG9sYXJBbmdsZT1NYXRoLlBJO3RoaXMubWluQXppbXV0aEFuZ2xlPS1JbmZpbml0eTt0aGlzLm1heEF6aW11dGhBbmdsZT1JbmZpbml0eTt0aGlzLmVuYWJsZURhbXBpbmc9ITE7dGhpcy5kYW1waW5nRmFjdG9yPS4wNTt0aGlzLmVuYWJsZVpvb209ITA7dGhpcy56b29tU3BlZWQ9MTt0aGlzLmVuYWJsZVJvdGF0ZT0hMDt0aGlzLnJvdGF0ZVNwZWVkPTE7dGhpcy5lbmFibGVQYW49ITA7dGhpcy5wYW5TcGVlZD0xO3RoaXMuc2NyZWVuU3BhY2VQYW5uaW5nPSExO3RoaXMua2V5UGFuU3BlZWQ9Nzt0aGlzLmF1dG9Sb3RhdGU9ITE7dGhpcy5hdXRvUm90YXRlU3BlZWQ9CjI7dGhpcy5lbmFibGVLZXlzPSEwO3RoaXMua2V5cz17TEVGVDozNyxVUDozOCxSSUdIVDozOSxCT1RUT006NDB9O3RoaXMubW91c2VCdXR0b25zPXtMRUZUOlRIUkVFLk1PVVNFLlJPVEFURSxNSURETEU6VEhSRUUuTU9VU0UuRE9MTFksUklHSFQ6VEhSRUUuTU9VU0UuUEFOfTt0aGlzLnRvdWNoZXM9e09ORTpUSFJFRS5UT1VDSC5ST1RBVEUsVFdPOlRIUkVFLlRPVUNILkRPTExZX1BBTn07dGhpcy50YXJnZXQwPXRoaXMudGFyZ2V0LmNsb25lKCk7dGhpcy5wb3NpdGlvbjA9dGhpcy5vYmplY3QucG9zaXRpb24uY2xvbmUoKTt0aGlzLnpvb20wPXRoaXMub2JqZWN0Lnpvb207dGhpcy5nZXRQb2xhckFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIFNhLnBoaX07dGhpcy5nZXRBemltdXRoYWxBbmdsZT1mdW5jdGlvbigpe3JldHVybiBTYS50aGV0YX07dGhpcy5zYXZlU3RhdGU9ZnVuY3Rpb24oKXtZLnRhcmdldDAuY29weShZLnRhcmdldCk7WS5wb3NpdGlvbjAuY29weShZLm9iamVjdC5wb3NpdGlvbik7Clkuem9vbTA9WS5vYmplY3Quem9vbX07dGhpcy5yZXNldD1mdW5jdGlvbigpe1kudGFyZ2V0LmNvcHkoWS50YXJnZXQwKTtZLm9iamVjdC5wb3NpdGlvbi5jb3B5KFkucG9zaXRpb24wKTtZLm9iamVjdC56b29tPVkuem9vbTA7WS5vYmplY3QudXBkYXRlUHJvamVjdGlvbk1hdHJpeCgpO1kuZGlzcGF0Y2hFdmVudChFYSk7WS51cGRhdGUoKTtGYT1BYS5OT05FfTt0aGlzLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciBzYT1uZXcgVEhSRUUuVmVjdG9yMyxNYj0obmV3IFRIUkVFLlF1YXRlcm5pb24pLnNldEZyb21Vbml0VmVjdG9ycyhiLnVwLG5ldyBUSFJFRS5WZWN0b3IzKDAsMSwwKSksd2M9TWIuY2xvbmUoKS5pbnZlcnNlKCksYmQ9bmV3IFRIUkVFLlZlY3RvcjMsdGQ9bmV3IFRIUkVFLlF1YXRlcm5pb247cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHRnPVkub2JqZWN0LnBvc2l0aW9uO3NhLmNvcHkodGcpLnN1YihZLnRhcmdldCk7c2EuYXBwbHlRdWF0ZXJuaW9uKE1iKTtTYS5zZXRGcm9tVmVjdG9yMyhzYSk7ClkuYXV0b1JvdGF0ZSYmRmE9PT1BYS5OT05FJiZrKGYoKSk7WS5lbmFibGVEYW1waW5nPyhTYS50aGV0YSs9WGEudGhldGEqWS5kYW1waW5nRmFjdG9yLFNhLnBoaSs9WGEucGhpKlkuZGFtcGluZ0ZhY3Rvcik6KFNhLnRoZXRhKz1YYS50aGV0YSxTYS5waGkrPVhhLnBoaSk7U2EudGhldGE9TWF0aC5tYXgoWS5taW5BemltdXRoQW5nbGUsTWF0aC5taW4oWS5tYXhBemltdXRoQW5nbGUsU2EudGhldGEpKTtTYS5waGk9TWF0aC5tYXgoWS5taW5Qb2xhckFuZ2xlLE1hdGgubWluKFkubWF4UG9sYXJBbmdsZSxTYS5waGkpKTtTYS5tYWtlU2FmZSgpO1NhLnJhZGl1cyo9dWI7U2EucmFkaXVzPU1hdGgubWF4KFkubWluRGlzdGFuY2UsTWF0aC5taW4oWS5tYXhEaXN0YW5jZSxTYS5yYWRpdXMpKTshMD09PVkuZW5hYmxlRGFtcGluZz9ZLnRhcmdldC5hZGRTY2FsZWRWZWN0b3IoQmIsWS5kYW1waW5nRmFjdG9yKTpZLnRhcmdldC5hZGQoQmIpO3NhLnNldEZyb21TcGhlcmljYWwoU2EpO3NhLmFwcGx5UXVhdGVybmlvbih3Yyk7CnRnLmNvcHkoWS50YXJnZXQpLmFkZChzYSk7WS5vYmplY3QubG9va0F0KFkudGFyZ2V0KTshMD09PVkuZW5hYmxlRGFtcGluZz8oWGEudGhldGEqPTEtWS5kYW1waW5nRmFjdG9yLFhhLnBoaSo9MS1ZLmRhbXBpbmdGYWN0b3IsQmIubXVsdGlwbHlTY2FsYXIoMS1ZLmRhbXBpbmdGYWN0b3IpKTooWGEuc2V0KDAsMCwwKSxCYi5zZXQoMCwwLDApKTt1Yj0xO3JldHVybiBxYnx8YmQuZGlzdGFuY2VUb1NxdWFyZWQoWS5vYmplY3QucG9zaXRpb24pPnlhfHw4KigxLXRkLmRvdChZLm9iamVjdC5xdWF0ZXJuaW9uKSk+eWE/KFkuZGlzcGF0Y2hFdmVudChFYSksYmQuY29weShZLm9iamVjdC5wb3NpdGlvbiksdGQuY29weShZLm9iamVjdC5xdWF0ZXJuaW9uKSxxYj0hMSwhMCk6ITF9fSgpO3RoaXMuZGlzcG9zZT1mdW5jdGlvbigpe1kuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsa2EsITEpO1kuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLApULCExKTtZLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigid2hlZWwiLGxhLCExKTtZLmRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsYmEsITEpO1kuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsY2EsITEpO1kuZG9tRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLGVhLCExKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLFgsITEpO2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLGFhLCExKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsWiwhMSl9O3ZhciBZPXRoaXMsRWE9e3R5cGU6ImNoYW5nZSJ9LHZhPXt0eXBlOiJzdGFydCJ9LHhhPXt0eXBlOiJlbmQifSxBYT17Tk9ORTotMSxST1RBVEU6MCxET0xMWToxLFBBTjoyLFRPVUNIX1JPVEFURTozLFRPVUNIX1BBTjo0LFRPVUNIX0RPTExZX1BBTjo1LFRPVUNIX0RPTExZX1JPVEFURTo2fSwKRmE9QWEuTk9ORSx5YT0xRS02LFNhPW5ldyBUSFJFRS5TcGhlcmljYWwsWGE9bmV3IFRIUkVFLlNwaGVyaWNhbCx1Yj0xLEJiPW5ldyBUSFJFRS5WZWN0b3IzLHFiPSExLHpiPW5ldyBUSFJFRS5WZWN0b3IyLHZiPW5ldyBUSFJFRS5WZWN0b3IyLEdiPW5ldyBUSFJFRS5WZWN0b3IyLE5iPW5ldyBUSFJFRS5WZWN0b3IyLEFiPW5ldyBUSFJFRS5WZWN0b3IyLEhiPW5ldyBUSFJFRS5WZWN0b3IyLGljPW5ldyBUSFJFRS5WZWN0b3IyLGJjPW5ldyBUSFJFRS5WZWN0b3IyLE9kPW5ldyBUSFJFRS5WZWN0b3IyLHJkPWZ1bmN0aW9uKCl7dmFyIHNhPW5ldyBUSFJFRS5WZWN0b3IzO3JldHVybiBmdW5jdGlvbihNYix3Yyl7c2Euc2V0RnJvbU1hdHJpeENvbHVtbih3YywwKTtzYS5tdWx0aXBseVNjYWxhcigtTWIpO0JiLmFkZChzYSl9fSgpLExjPWZ1bmN0aW9uKCl7dmFyIHNhPW5ldyBUSFJFRS5WZWN0b3IzO3JldHVybiBmdW5jdGlvbihNYix3Yyl7ITA9PT1ZLnNjcmVlblNwYWNlUGFubmluZz8Kc2Euc2V0RnJvbU1hdHJpeENvbHVtbih3YywxKTooc2Euc2V0RnJvbU1hdHJpeENvbHVtbih3YywwKSxzYS5jcm9zc1ZlY3RvcnMoWS5vYmplY3QudXAsc2EpKTtzYS5tdWx0aXBseVNjYWxhcihNYik7QmIuYWRkKHNhKX19KCksc2Q9ZnVuY3Rpb24oKXt2YXIgc2E9bmV3IFRIUkVFLlZlY3RvcjM7cmV0dXJuIGZ1bmN0aW9uKE1iLHdjKXt2YXIgYmQ9WS5kb21FbGVtZW50PT09ZG9jdW1lbnQ/WS5kb21FbGVtZW50LmJvZHk6WS5kb21FbGVtZW50O2lmKFkub2JqZWN0LmlzUGVyc3BlY3RpdmVDYW1lcmEpe3NhLmNvcHkoWS5vYmplY3QucG9zaXRpb24pLnN1YihZLnRhcmdldCk7dmFyIHRkPXNhLmxlbmd0aCgpO3RkKj1NYXRoLnRhbihZLm9iamVjdC5mb3YvMipNYXRoLlBJLzE4MCk7cmQoMipNYip0ZC9iZC5jbGllbnRIZWlnaHQsWS5vYmplY3QubWF0cml4KTtMYygyKndjKnRkL2JkLmNsaWVudEhlaWdodCxZLm9iamVjdC5tYXRyaXgpfWVsc2UgWS5vYmplY3QuaXNPcnRob2dyYXBoaWNDYW1lcmE/CihyZChNYiooWS5vYmplY3QucmlnaHQtWS5vYmplY3QubGVmdCkvWS5vYmplY3Quem9vbS9iZC5jbGllbnRXaWR0aCxZLm9iamVjdC5tYXRyaXgpLExjKHdjKihZLm9iamVjdC50b3AtWS5vYmplY3QuYm90dG9tKS9ZLm9iamVjdC56b29tL2JkLmNsaWVudEhlaWdodCxZLm9iamVjdC5tYXRyaXgpKTooY29uc29sZS53YXJuKCJXQVJOSU5HOiBPcmJpdENvbnRyb2xzLmpzIGVuY291bnRlcmVkIGFuIHVua25vd24gY2FtZXJhIHR5cGUgLSBwYW4gZGlzYWJsZWQuIiksWS5lbmFibGVQYW49ITEpfX0oKTtZLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLGthLCExKTtZLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIixULCExKTtZLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLGxhLCExKTtZLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsYmEsITEpO1kuZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsCmNhLCExKTtZLmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixlYSwhMSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLFosITEpO3RoaXMudXBkYXRlKCl9O1RIUkVFLk9yYml0Q29udHJvbHMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVEhSRUUuRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZSk7VEhSRUUuT3JiaXRDb250cm9scy5wcm90b3R5cGUuY29uc3RydWN0b3I9VEhSRUUuT3JiaXRDb250cm9scztUSFJFRS5NYXBDb250cm9scz1mdW5jdGlvbihiLGQpe1RIUkVFLk9yYml0Q29udHJvbHMuY2FsbCh0aGlzLGIsZCk7dGhpcy5tb3VzZUJ1dHRvbnMuTEVGVD1USFJFRS5NT1VTRS5QQU47dGhpcy5tb3VzZUJ1dHRvbnMuUklHSFQ9VEhSRUUuTU9VU0UuUk9UQVRFO3RoaXMudG91Y2hlcy5PTkU9VEhSRUUuVE9VQ0guUEFOO3RoaXMudG91Y2hlcy5UV089VEhSRUUuVE9VQ0guRE9MTFlfUk9UQVRFfTsKVEhSRUUuTWFwQ29udHJvbHMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVEhSRUUuRXZlbnREaXNwYXRjaGVyLnByb3RvdHlwZSk7VEhSRUUuTWFwQ29udHJvbHMucHJvdG90eXBlLmNvbnN0cnVjdG9yPVRIUkVFLk1hcENvbnRyb2xzOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWltcG9ydHMvYXJyYXktYnVmZmVyLWRhdGEtcHJvdmlkZXIuanMKdmFyIExrOwooZnVuY3Rpb24oYil7Yi5FcnJvckNvZGVzPXtDQU5DRUxMRUQ6MX07Y29uc3QgZD17VkVSVEVYOjEsRkFDRToyLENPTE9SOjN9LGY9e1ZFUlRFWDoiZmxvYXQzMiIsRkFDRToiaW50MzIiLENPTE9SOiJ1aW50OCJ9O2NsYXNzIGh7Y29uc3RydWN0b3Ioayl7dGhpcy5fcmVxdWVzdE1hbmFnZXI9azt0aGlzLl9jYW5jZWxsZXI9bmV3IHZjLkNhbmNlbGxlcn1yZWxvYWQoayx0LGwpe3RoaXMuX2NhbmNlbGxlci5jYW5jZWxBbGwoKTtyZXR1cm4gdGhpcy5fZmV0Y2hNZXRhZGF0YShrLHQsbCl9X2ZldGNoRGF0YUJ5U3RlcChrLHQsbCxwLG0sbil7ZnVuY3Rpb24gcSh1KXtsZXQgeD1bXTtmb3IobGV0IEE9MDtBPHUubGVuZ3RoLzM7QSsrKXtsZXQgeT1bXTtmb3IobGV0IHc9MDszPnc7dysrKXkucHVzaCh1WzMqQSt3XSk7eC5wdXNoKHkpfXJldHVybiB4fWs9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoIm1lc2giLCIvZGF0YSIsbmV3IFVSTFNlYXJjaFBhcmFtcyh7dGFnOnQscnVuOmssCmNvbnRlbnRfdHlwZTpsLHNhbXBsZTpwLHN0ZXA6bX0pKTt0PXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZSh1PT57aWYodS5jYW5jZWxsZWQpcmV0dXJuIFByb21pc2UucmVqZWN0KHtjb2RlOmIuRXJyb3JDb2Rlcy5DQU5DRUxMRUQsbWVzc2FnZToiUmVzcG9uc2Ugd2FzIGludmFsaWRhdGVkLiJ9KTt1PXUudmFsdWU7c3dpdGNoKGwpe2Nhc2UgIlZFUlRFWCI6bi52ZXJ0aWNlcz1xKG5ldyBGbG9hdDMyQXJyYXkodSkpO2JyZWFrO2Nhc2UgIkZBQ0UiOm4uZmFjZXM9cShuZXcgSW50MzJBcnJheSh1KSk7YnJlYWs7Y2FzZSAiQ09MT1IiOm4uY29sb3JzPXEobmV3IFVpbnQ4QXJyYXkodSkpfXJldHVybiBufSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGssbnVsbCwiYXJyYXlidWZmZXIiLGZbbF0pLnRoZW4odT0+dS5hcnJheUJ1ZmZlcigpKS50aGVuKHQpfWZldGNoRGF0YShrLHQsbCxwKXtsZXQgbT1bXSxuPW5ldyBNYXA7T2JqZWN0LmtleXMoZCkuZm9yRWFjaChxPT4Ke2suY29tcG9uZW50cyYxPDxkW3FdJiZtLnB1c2godGhpcy5fZmV0Y2hEYXRhQnlTdGVwKHQsbCxxLHAsay5zdGVwLG4pKX0pO3JldHVybiBQcm9taXNlLmFsbChtKX1fZmV0Y2hNZXRhZGF0YShrLHQsbCl7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2s9dmMuZ2V0Um91dGVyKCkucGx1Z2luUm91dGUoIm1lc2giLCIvbWVzaGVzIixuZXcgVVJMU2VhcmNoUGFyYW1zKHt0YWc6dCxydW46ayxzYW1wbGU6bH0pKTt0PXRoaXMuX2NhbmNlbGxlci5jYW5jZWxsYWJsZShwPT5wLmNhbmNlbGxlZD9Qcm9taXNlLnJlamVjdCh7Y29kZTpiLkVycm9yQ29kZXMuQ0FOQ0VMTEVELG1lc3NhZ2U6IlJlc3BvbnNlIHdhcyBpbnZhbGlkYXRlZC4ifSk6cC52YWx1ZSk7cmV0dXJuIHRoaXMuX3JlcXVlc3RNYW5hZ2VyLmZldGNoKGspLnRoZW4ocD0+cC5qc29uKCkpLnRoZW4odCkudGhlbih0aGlzLl9wcm9jZXNzTWV0YWRhdGEuYmluZCh0aGlzKSl9X3Byb2Nlc3NNZXRhZGF0YShrKXtpZihrKXt2YXIgdD0KbmV3IE1hcDtmb3IobGV0IHA9MDtwPGsubGVuZ3RoO3ArKyl7bGV0IG09a1twXTt0LmhhcyhtLnN0ZXApfHx0LnNldChtLnN0ZXAsW10pO3QuZ2V0KG0uc3RlcCkucHVzaChtKX12YXIgbD1bXTt0LmZvckVhY2gocD0+e3A9dGhpcy5fY3JlYXRlU3RlcERhdHVtKHBbMF0pO2wucHVzaChwKX0pO3JldHVybiBsfX1fY3JlYXRlU3RlcERhdHVtKGspe3JldHVybnt3YWxsX3RpbWU6bmV3IERhdGUoMUUzKmsud2FsbF90aW1lKSxzdGVwOmsuc3RlcCxjb25maWc6ay5jb25maWcsY29udGVudF90eXBlOmsuY29udGVudF90eXBlLGNvbXBvbmVudHM6ay5jb21wb25lbnRzfX19Yi5BcnJheUJ1ZmZlckRhdGFQcm92aWRlcj1ofSkoTGt8fChMaz17fSkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLWltcG9ydHMvbWVzaC12aWV3ZXIuanMKKGZ1bmN0aW9uKGIpe2NsYXNzIGQgZXh0ZW5kcyBUSFJFRS5FdmVudERpc3BhdGNoZXJ7Y29uc3RydWN0b3IoZil7c3VwZXIoKTt0aGlzLl9sYXN0TWVzaD1udWxsO3RoaXMuX2Nsb2NrPW5ldyBUSFJFRS5DbG9jazt0aGlzLl9jYW52YXNTaXplPW51bGw7dGhpcy5fcnVuQ29sb3I9Zn1faXNPYmplY3QoZil7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBmJiZudWxsIT1mJiYhQXJyYXkuaXNBcnJheShmKX1fYXBwbHlEZWZhdWx0cyhmLGgpe2xldCBrPXt9O2Y9W2YsaF07Zm9yKGg9MDtoPGYubGVuZ3RoO2grKyl7Y29uc3QgdD1mW2hdO2ZvcihsZXQgbCBpbiB0KXtjb25zdCBwPWwgaW4gazt0aGlzLl9pc09iamVjdCh0W2xdKT9rW2xdPXRoaXMuX2FwcGx5RGVmYXVsdHMoa1tsXXx8e30sdFtsXSk6cHx8KGtbbF09dFtsXSl9fXJldHVybiBrfV9jcmVhdGVXb3JsZChmLGgpe3RoaXMuaXNSZWFkeSgpfHwodGhpcy5fc2NlbmU9bmV3IFRIUkVFLlNjZW5lLHRoaXMuX2NhbWVyYT1mPW5ldyBUSFJFRVtmLmNhbWVyYS5jbHNdKGYuY2FtZXJhLmZvdiwKdGhpcy5fY2FudmFzU2l6ZS53aWR0aC90aGlzLl9jYW52YXNTaXplLmhlaWdodCxmLmNhbWVyYS5uZWFyLGYuY2FtZXJhLmZhciksaD1uZXcgVEhSRUUuT3JiaXRDb250cm9scyhmLGgpLGgubG9va1NwZWVkPS40LGgubW92ZW1lbnRTcGVlZD0yMCxoLm5vRmx5PSEwLGgubG9va1ZlcnRpY2FsPSEwLGguY29uc3RyYWluVmVydGljYWw9ITAsaC52ZXJ0aWNhbE1pbj0xLGgudmVydGljYWxNYXg9MixoLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsdGhpcy5fb25DYW1lcmFQb3NpdGlvbkNoYW5nZS5iaW5kKHRoaXMpKSx0aGlzLl9jYW1lcmFDb250cm9scz1oLHRoaXMuX3JlbmRlcmVyPW5ldyBUSFJFRS5XZWJHTFJlbmRlcmVyKHthbnRpYWxpYXM6ITB9KSx0aGlzLl9yZW5kZXJlci5zZXRQaXhlbFJhdGlvKCksdGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KSx0aGlzLl9yZW5kZXJlci5zZXRDbGVhckNvbG9yKDE2Nzc3MjE1LAoxKSl9X2NsZWFyU2NlbmUoKXtmb3IoOzA8dGhpcy5fc2NlbmUuY2hpbGRyZW4ubGVuZ3RoOyl0aGlzLl9zY2VuZS5yZW1vdmUodGhpcy5fc2NlbmUuY2hpbGRyZW5bMF0pfWdldFJlbmRlcmVyKCl7cmV0dXJuIHRoaXMuX3JlbmRlcmVyfWdldENhbWVyYUNvbnRyb2xzKCl7cmV0dXJuIHRoaXMuX2NhbWVyYUNvbnRyb2xzfWlzUmVhZHkoKXtyZXR1cm4hIXRoaXMuX2NhbWVyYSYmISF0aGlzLl9jYW1lcmFDb250cm9sc31nZXRDYW1lcmFQb3NpdGlvbigpe3JldHVybntmYXI6dGhpcy5fY2FtZXJhLmZhcixwb3NpdGlvbjp0aGlzLl9jYW1lcmEucG9zaXRpb24uY2xvbmUoKSx0YXJnZXQ6dGhpcy5fY2FtZXJhQ29udHJvbHMudGFyZ2V0LmNsb25lKCl9fXNldENhbnZhc1NpemUoZil7dGhpcy5fY2FudmFzU2l6ZT1mfWRyYXcoKXt0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4JiZjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9hbmltYXRpb25GcmFtZUluZGV4KTt0aGlzLl9jYW1lcmEuYXNwZWN0PQp0aGlzLl9jYW52YXNTaXplLndpZHRoL3RoaXMuX2NhbnZhc1NpemUuaGVpZ2h0O3RoaXMuX2NhbWVyYS51cGRhdGVQcm9qZWN0aW9uTWF0cml4KCk7dGhpcy5fcmVuZGVyZXIuc2V0U2l6ZSh0aGlzLl9jYW52YXNTaXplLndpZHRoLHRoaXMuX2NhbnZhc1NpemUuaGVpZ2h0KTtjb25zdCBmPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5fY2xvY2suZ2V0RGVsdGEoKTt0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoaCk7dGhpcy5fYW5pbWF0aW9uRnJhbWVJbmRleD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZik7dGhpcy5fcmVuZGVyZXIucmVuZGVyKHRoaXMuX3NjZW5lLHRoaXMuX2NhbWVyYSl9LmJpbmQodGhpcyk7ZigpfXVwZGF0ZVNjZW5lKGYsaCl7bGV0IGs9e307ImNvbmZpZyJpbiBmJiZmLmNvbmZpZyYmKGs9SlNPTi5wYXJzZShmLmNvbmZpZykpO3RoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiYmVmb3JlVXBkYXRlU2NlbmUifSk7az10aGlzLl9hcHBseURlZmF1bHRzKGsse2NhbWVyYTp7Y2xzOiJQZXJzcGVjdGl2ZUNhbWVyYSIsCmZvdjo3NSxuZWFyOi4xLGZhcjoxRTN9LGxpZ2h0czpbe2NsczoiQW1iaWVudExpZ2h0Iixjb2xvcjoiI2ZmZmZmZiIsaW50ZW5zaXR5Oi43NX0se2NsczoiRGlyZWN0aW9uYWxMaWdodCIsY29sb3I6IiNmZmZmZmYiLGludGVuc2l0eTouNzUscG9zaXRpb246WzAsLTEsMl19XX0pO3RoaXMuX2NyZWF0ZVdvcmxkKGssaCk7dGhpcy5fY2xlYXJTY2VuZSgpO3RoaXMuX2NyZWF0ZUxpZ2h0cyh0aGlzLl9zY2VuZSxrKTt0aGlzLl9jcmVhdGVHZW9tZXRyeShmLGspO3RoaXMuZHJhdygpfXJlc2V0Vmlldygpe2lmKHRoaXMuaXNSZWFkeSgpKXt0aGlzLl9jYW1lcmFDb250cm9scy5yZXNldCgpO2lmKCFmJiZ0aGlzLl9sYXN0TWVzaCl2YXIgZj10aGlzLl9sYXN0TWVzaDtmJiYodGhpcy5fZml0T2JqZWN0VG9WaWV3cG9ydChmKSx0aGlzLl9sYXN0TWVzaD1mKTt0aGlzLl9jYW1lcmFDb250cm9scy51cGRhdGUoKX19X2NyZWF0ZUdlb21ldHJ5KGYsaCl7Zj1mLm1lc2g7Zi52ZXJ0aWNlcyYmZi5mYWNlcyYmCmYuZmFjZXMubGVuZ3RoP3RoaXMuX2NyZWF0ZU1lc2goZixoKTp0aGlzLl9jcmVhdGVQb2ludENsb3VkKGYsaCl9X2NyZWF0ZVBvaW50Q2xvdWQoZixoKXt2YXIgaz1mLnZlcnRpY2VzO2Y9Zi5jb2xvcnM7bGV0IHQ9e21hdGVyaWFsOntjbHM6IlBvaW50c01hdGVyaWFsIixzaXplOi4wMDV9fTtmJiZmLmxlbmd0aD09ay5sZW5ndGg/dC5tYXRlcmlhbC52ZXJ0ZXhDb2xvcnM9VEhSRUUuVmVydGV4Q29sb3JzOnQubWF0ZXJpYWwuY29sb3I9dGhpcy5fcnVuQ29sb3I7aD10aGlzLl9hcHBseURlZmF1bHRzKGgsdCk7dmFyIGw9bmV3IFRIUkVFLkdlb21ldHJ5O2suZm9yRWFjaChmdW5jdGlvbihwKXt2YXIgbT1uZXcgVEhSRUUuVmVjdG9yMyhwWzBdLHBbMV0scFsyXSk7bS54PTEqcFswXTttLnk9MSpwWzFdO20uej0xKnBbMl07bC52ZXJ0aWNlcy5wdXNoKG0pfSk7ZiYmZi5sZW5ndGg9PWsubGVuZ3RoJiZmLmZvckVhY2goZnVuY3Rpb24ocCl7cD1uZXcgVEhSRUUuQ29sb3IocFswXS8yNTUsCnBbMV0vMjU1LHBbMl0vMjU1KTtsLmNvbG9ycy5wdXNoKHApfSk7az1uZXcgVEhSRUVbaC5tYXRlcmlhbC5jbHNdKGgubWF0ZXJpYWwpO2s9bmV3IFRIUkVFLlBvaW50cyhsLGspO3RoaXMuX3NjZW5lLmFkZChrKTt0aGlzLl9sYXN0TWVzaD1rfXNldENhbWVyYVZpZXdwb2ludChmLGgsayl7dGhpcy5fc2lsZW50PSEwO3RoaXMuX2NhbWVyYS5mYXI9aDt0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KGYueCxmLnksZi56KTt0aGlzLl9jYW1lcmEubG9va0F0KGsuY2xvbmUoKSk7dGhpcy5fY2FtZXJhLnVwZGF0ZVByb2plY3Rpb25NYXRyaXgoKTt0aGlzLl9jYW1lcmFDb250cm9scy50YXJnZXQ9ay5jbG9uZSgpO3RoaXMuX2NhbWVyYUNvbnRyb2xzLnVwZGF0ZSgpO3RoaXMuX3NpbGVudD0hMX1fb25DYW1lcmFQb3NpdGlvbkNoYW5nZShmKXt0aGlzLl9zaWxlbnR8fHRoaXMuZGlzcGF0Y2hFdmVudCh7dHlwZToiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLGV2ZW50OmZ9KX1fZml0T2JqZWN0VG9WaWV3cG9ydChmKXt2YXIgaD0KbmV3IFRIUkVFLkJveDM7aC5zZXRGcm9tT2JqZWN0KGYpO2Y9aC5jZW50ZXIoKTt2YXIgaz1oLnNpemUoKTtrPTEuMjUqTWF0aC5hYnMoTWF0aC5tYXgoay54LGsueSxrLnopLygyKk1hdGgudGFuKE1hdGguUEkvMTgwKnRoaXMuX2NhbWVyYS5mb3YvMikpKTtoPWgubWluLno7dGhpcy5zZXRDYW1lcmFWaWV3cG9pbnQoe3g6Zi54LHk6Zi55LHo6a30sMyooMD5oPy1oK2s6ay1oKSxmKX1fY3JlYXRlTWVzaChmLGgpe3ZhciBrPWYudmVydGljZXM7Y29uc3QgdD1mLmZhY2VzLGw9Zi5jb2xvcnM7Zj10aGlzLl9hcHBseURlZmF1bHRzKGgse21hdGVyaWFsOntjbHM6Ik1lc2hTdGFuZGFyZE1hdGVyaWFsIixjb2xvcjoiI2EwYTBhMCIscm91Z2huZXNzOjEsbWV0YWxuZXNzOjB9fSk7bGV0IHA9bmV3IFRIUkVFLkdlb21ldHJ5O2suZm9yRWFjaChmdW5jdGlvbihtKXtsZXQgbj1uZXcgVEhSRUUuVmVjdG9yMyhtWzBdLG1bMV0sbVsyXSk7bi54PTEqbVswXTtuLnk9MSptWzFdO24uej0xKm1bMl07CnAudmVydGljZXMucHVzaChuKX0pO3QuZm9yRWFjaChmdW5jdGlvbihtKXtsZXQgbj1uZXcgVEhSRUUuRmFjZTMobVswXSxtWzFdLG1bMl0pO2lmKGwmJmwubGVuZ3RoKXttPVtsW21bMF1dLGxbbVsxXV0sbFttWzJdXV07Zm9yKGxldCB1PTA7dTxtLmxlbmd0aDt1Kyspe3ZhciBxPW1bdV07cT1uZXcgVEhSRUUuQ29sb3IocVswXS8yNTUscVsxXS8yNTUscVsyXS8yNTUpO24udmVydGV4Q29sb3JzLnB1c2gocSl9fXAuZmFjZXMucHVzaChuKX0pO2wmJmwubGVuZ3RoJiYoZi5tYXRlcmlhbD1mLm1hdGVyaWFsfHx7fSxmLm1hdGVyaWFsLnZlcnRleENvbG9ycz1USFJFRS5WZXJ0ZXhDb2xvcnMpO3AuY2VudGVyKCk7cC5jb21wdXRlQm91bmRpbmdTcGhlcmUoKTtwLmNvbXB1dGVWZXJ0ZXhOb3JtYWxzKCk7az1uZXcgVEhSRUVbZi5tYXRlcmlhbC5jbHNdKGYubWF0ZXJpYWwpO2s9bmV3IFRIUkVFLk1lc2gocCxrKTtrLmNhc3RTaGFkb3c9ITA7ay5yZWNlaXZlU2hhZG93PSEwO3RoaXMuX3NjZW5lLmFkZChrKTsKdGhpcy5fbGFzdE1lc2g9a31fY3JlYXRlTGlnaHRzKGYsaCl7Zm9yKGxldCBrPTA7azxoLmxpZ2h0cy5sZW5ndGg7aysrKXtjb25zdCB0PWgubGlnaHRzW2tdO2xldCBsPW5ldyBUSFJFRVt0LmNsc10odC5jb2xvcix0LmludGVuc2l0eSk7dC5wb3NpdGlvbiYmbC5wb3NpdGlvbi5zZXQodC5wb3NpdGlvblswXSx0LnBvc2l0aW9uWzFdLHQucG9zaXRpb25bMl0pO2YuYWRkKGwpfX19Yi5NZXNoVmlld2VyPWR9KShMa3x8KExrPXt9KSk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtbWVzaC1kYXNoYm9hcmQvbWVzaC1sb2FkZXIuanMKKGZ1bmN0aW9uKGIpe1BvbHltZXIoe2lzOiJ0Zi1tZXNoLWxvYWRlciIscHJvcGVydGllczp7cnVuOlN0cmluZyx0YWc6U3RyaW5nLHNhbXBsZTpOdW1iZXIsb2ZTYW1wbGVzOk51bWJlcixzZWxlY3RlZFZpZXc6e3R5cGU6U3RyaW5nLHZhbHVlOiJhbGwifSxhY3RpdmU6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0scmVxdWVzdE1hbmFnZXI6T2JqZWN0LF9tZXNoVmlld2VyOnt0eXBlOk9iamVjdH0sX2RhdGFQcm92aWRlcjp7dHlwZTpPYmplY3R9LF9jb2xvclNjYWxlRnVuY3Rpb246e3R5cGU6T2JqZWN0LHZhbHVlOigpPT5wZi5ydW5zQ29sb3JTY2FsZX0sX3J1bkNvbG9yOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVSdW5Db2xvcihydW4pIn0sX3N0ZXBzOnt0eXBlOkFycmF5LHZhbHVlOigpPT5bXSxub3RpZnk6ITB9LF9zdGVwSW5kZXg6e3R5cGU6TnVtYmVyLG5vdGlmeTohMH0sX2N1cnJlbnRTdGVwOnt0eXBlOk9iamVjdCxjb21wdXRlZDoiX2NvbXB1dGVDdXJyZW50U3RlcChfc3RlcHMsIF9zdGVwSW5kZXgpIn0sCl9tZXNoVmlld2VyQXR0YWNoZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX2NhbWVyYVBvc2l0aW9uSW5pdGlhbGl6ZWQ6e3R5cGU6Qm9vbGVhbix2YWx1ZTohMX0sX3N0ZXBWYWx1ZTp7dHlwZTpOdW1iZXIsY29tcHV0ZWQ6Il9jb21wdXRlU3RlcFZhbHVlKF9jdXJyZW50U3RlcCkifSxfY3VycmVudFdhbGxUaW1lOnt0eXBlOlN0cmluZyxjb21wdXRlZDoiX2NvbXB1dGVDdXJyZW50V2FsbFRpbWUoX2N1cnJlbnRTdGVwKSJ9LF9pc01lc2hMb2FkaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJyZWxvYWQocnVuLCB0YWcsIGFjdGl2ZSwgX2RhdGFQcm92aWRlciwgX21lc2hWaWV3ZXIpIiwiX3VwZGF0ZVNjZW5lKF9jdXJyZW50U3RlcC4qLCBfbWVzaFZpZXdlcikiLCJfZGVib3VuY2VkRmV0Y2hNZXNoKF9jdXJyZW50U3RlcCkiLCJfdXBkYXRlVmlldyhzZWxlY3RlZFZpZXcpIl0sX2NvbXB1dGVSdW5Db2xvcjpmdW5jdGlvbihkKXtyZXR1cm4gdGhpcy5fY29sb3JTY2FsZUZ1bmN0aW9uKGQpfSwKYXR0YWNoZWQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhUHJvdmlkZXI9bmV3IGIuQXJyYXlCdWZmZXJEYXRhUHJvdmlkZXIodGhpcy5yZXF1ZXN0TWFuYWdlcik7Y29uc3QgZD1uZXcgYi5NZXNoVmlld2VyKHRoaXMuX3J1bkNvbG9yKTtkLmFkZEV2ZW50TGlzdGVuZXIoImJlZm9yZVVwZGF0ZVNjZW5lIix0aGlzLl91cGRhdGVDYW52YXNTaXplLmJpbmQodGhpcykpO2QuYWRkRXZlbnRMaXN0ZW5lcigiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLHRoaXMuX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2UuYmluZCh0aGlzKSk7dGhpcy5fbWVzaFZpZXdlcj1kfSxyZWxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZSYmdGhpcy5fZGF0YVByb3ZpZGVyJiYodGhpcy5zZXQoIl9pc01lc2hMb2FkaW5nIiwhMCksdGhpcy5fZGF0YVByb3ZpZGVyLnJlbG9hZCh0aGlzLnJ1bix0aGlzLnRhZyx0aGlzLnNhbXBsZSkudGhlbihkPT57ZCYmKHRoaXMuc2V0KCJfc3RlcHMiLGQpLHRoaXMuc2V0KCJfc3RlcEluZGV4IiwKZC5sZW5ndGgtMSkpfSkuY2F0Y2goZD0+e2lmKCFkfHwhZC5jb2RlfHxkLmNvZGUhPWIuRXJyb3JDb2Rlcy5DQU5DRUxMRUQpdGhyb3cgRXJyb3IoZHx8IlJlc3BvbnNlIHByb2Nlc3NpbmcgZmFpbGVkLiIpO30pKX0sX3VwZGF0ZVNjZW5lOmZ1bmN0aW9uKCl7Y29uc3QgZD10aGlzLl9jdXJyZW50U3RlcDtkJiZkLm1lc2gmJih0aGlzLl9tZXNoVmlld2VyLnVwZGF0ZVNjZW5lKGQsdGhpcyksdGhpcy5fY2FtZXJhUG9zaXRpb25Jbml0aWFsaXplZHx8KHRoaXMuX21lc2hWaWV3ZXIucmVzZXRWaWV3KCksdGhpcy5fY2FtZXJhUG9zaXRpb25Jbml0aWFsaXplZD0hMCksdGhpcy5fbWVzaFZpZXdlckF0dGFjaGVkfHwodGhpcy5yb290LmFwcGVuZENoaWxkKHRoaXMuX21lc2hWaWV3ZXIuZ2V0UmVuZGVyZXIoKS5kb21FbGVtZW50KSx0aGlzLl9tZXNoVmlld2VyQXR0YWNoZWQ9ITApKX0sX2RlYm91bmNlZEZldGNoTWVzaCgpe3RoaXMuZGVib3VuY2UoImZldGNoTWVzaCIsKCk9PnRoaXMuX21heWJlRmV0Y2hNZXNoKCksCjEwMCl9LF9tYXliZUZldGNoTWVzaCgpe2NvbnN0IGQ9dGhpcztyZXR1cm4gaGMoZnVuY3Rpb24qKCl7Y29uc3QgZj1kLl9jdXJyZW50U3RlcDtpZihmJiYhZi5tZXNoJiYhZi5tZXNoRmV0Y2hpbmcpe2YubWVzaEZldGNoaW5nPSEwO2QuX2lzTWVzaExvYWRpbmc9ITA7dHJ5e2NvbnN0IGg9eWllbGQgZC5fZGF0YVByb3ZpZGVyLmZldGNoRGF0YShmLGQucnVuLGQudGFnLGQuc2FtcGxlKTtmLm1lc2g9aFswXTtkLm5vdGlmeVBhdGgoIl9jdXJyZW50U3RlcC5tZXNoIil9Y2F0Y2goaCl7aWYoIWh8fCFoLmNvZGV8fGguY29kZSE9Yi5FcnJvckNvZGVzLkNBTkNFTExFRCl0aHJvdyBoPWh8fCJSZXNwb25zZSBwcm9jZXNzaW5nIGZhaWxlZC4iLEVycm9yKGgpO31maW5hbGx5e2QuX2lzTWVzaExvYWRpbmc9ITEsZi5tZXNoRmV0Y2hpbmc9ITF9fX0pfSxfb25DYW1lcmFQb3NpdGlvbkNoYW5nZTpmdW5jdGlvbigpe2lmKHRoaXMuX21lc2hWaWV3ZXIuaXNSZWFkeSgpKXt2YXIgZD1uZXcgQ3VzdG9tRXZlbnQoImNhbWVyYS1wb3NpdGlvbi1jaGFuZ2UiLAp7ZGV0YWlsOnRoaXMuX21lc2hWaWV3ZXIuZ2V0Q2FtZXJhUG9zaXRpb24oKX0pO3RoaXMuZGlzcGF0Y2hFdmVudChkKX19LHNldENhbWVyYVZpZXdwb2ludDpmdW5jdGlvbihkLGYsaCl7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW1lcmFWaWV3cG9pbnQoZCxmLGgpfSxfdXBkYXRlQ2FudmFzU2l6ZTpmdW5jdGlvbigpe2NvbnN0IGQ9dGhpcy5vZmZzZXRXaWR0aCxmPXRoaXMuJCQoIi50Zi1tZXNoLWxvYWRlci1oZWFkZXIiKS5vZmZzZXRIZWlnaHQ7dGhpcy5fbWVzaFZpZXdlci5zZXRDYW52YXNTaXplKHt3aWR0aDpkLGhlaWdodDpkLWZ9KX0scmVkcmF3OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlQ2FudmFzU2l6ZSgpO3RoaXMuaXNDb25uZWN0ZWQmJnRoaXMuX21lc2hWaWV3ZXIuZHJhdygpfSxfaGFzQXRMZWFzdE9uZVN0ZXA6ZnVuY3Rpb24oZCl7cmV0dXJuISFkJiYwPGQubGVuZ3RofSxfaGFzTXVsdGlwbGVTdGVwczpmdW5jdGlvbihkKXtyZXR1cm4hIWQmJjE8ZC5sZW5ndGh9LF9jb21wdXRlQ3VycmVudFN0ZXA6ZnVuY3Rpb24oZCwKZil7cmV0dXJuIGRbZl18fG51bGx9LF9jb21wdXRlU3RlcFZhbHVlOmZ1bmN0aW9uKGQpe3JldHVybiBkP2Quc3RlcDowfSxfY29tcHV0ZUN1cnJlbnRXYWxsVGltZTpmdW5jdGlvbihkKXtyZXR1cm4gZD9IaC5mb3JtYXREYXRlKGQud2FsbF90aW1lKToiIn0sX2dldE1heFN0ZXBJbmRleDpmdW5jdGlvbihkKXtyZXR1cm4gZC5sZW5ndGgtMX0sX2dldFNhbXBsZVRleHQ6ZnVuY3Rpb24oZCl7cmV0dXJuIFN0cmluZyhkKzEpfSxfaGFzTXVsdGlwbGVTYW1wbGVzOmZ1bmN0aW9uKGQpe3JldHVybiAxPGR9LF91cGRhdGVWaWV3OmZ1bmN0aW9uKGQpe3RoaXMuX21lc2hWaWV3ZXImJiJhbGwiPT1kJiZ0aGlzLl9tZXNoVmlld2VyLnJlc2V0VmlldygpfSx0b0xvY2FsZVN0cmluZ186ZnVuY3Rpb24oZCl7cmV0dXJuIGQudG9Mb2NhbGVTdHJpbmcoKX19KX0pKExrfHwoTGs9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1tZXNoLWRhc2hib2FyZC90Zi1tZXNoLWRhc2hib2FyZC5odG1sLmpzCihmdW5jdGlvbigpe1BvbHltZXIoe2lzOiJtZXNoLWRhc2hib2FyZCIscHJvcGVydGllczp7X3NlbGVjdGVkUnVuczpBcnJheSxfcnVuVG9UYWdJbmZvOk9iamVjdCxfZGF0YU5vdEZvdW5kOkJvb2xlYW4sX3RhZ0ZpbHRlcjp7dHlwZTpTdHJpbmcsdmFsdWU6Ii4qIn0sX3NlbGVjdGVkVmlldzp7dHlwZTpTdHJpbmcsbm90aWZ5OiEwLHZhbHVlOiJhbGwifSxfY2F0ZWdvcmllczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX21ha2VDYXRlZ29yaWVzKF9ydW5Ub1RhZ0luZm8sIF9zZWxlY3RlZFJ1bnMsIF90YWdGaWx0ZXIpIn0sX3JlcXVlc3RNYW5hZ2VyOnt0eXBlOk9iamVjdCx2YWx1ZTooKT0+bmV3IHZjLlJlcXVlc3RNYW5hZ2VyfX0scmVhZHkoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoKT0+e3RoaXMuX2hhbmRsZVdpbmRvd1Jlc2l6ZSgpfSwhMSk7dGhpcy5yZWxvYWQoKX0sX2dldEFsbENoaWxkcmVuKCl7cmV0dXJuIHRoaXMucm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0Zi1tZXNoLWxvYWRlciIpfSwKX29uQ2FtZXJhUG9zaXRpb25DaGFuZ2VkKGIpeyJzaGFyZSI9PXRoaXMuX3NlbGVjdGVkVmlldyYmdGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKGQ9PntiLnRhcmdldCE9ZCYmZC5zZXRDYW1lcmFWaWV3cG9pbnQoYi5kZXRhaWwucG9zaXRpb24sYi5kZXRhaWwuZmFyLGIuZGV0YWlsLnRhcmdldCl9KX0sX3Nob3VsZE9wZW4oYil7cmV0dXJuIDI+PWJ9LHJlbG9hZCgpe3RoaXMuX2ZldGNoVGFncygpLnRoZW4odGhpcy5fcmVsb2FkTWVzaGVzLmJpbmQodGhpcykpfSxfaGFuZGxlV2luZG93UmVzaXplKCl7dGhpcy5fZ2V0QWxsQ2hpbGRyZW4oKS5mb3JFYWNoKGI9PntiLnJlZHJhdygpfSl9LF9mZXRjaFRhZ3MoKXtjb25zdCBiPXZjLmdldFJvdXRlcigpLnBsdWdpblJvdXRlKCJtZXNoIiwiL3RhZ3MiKTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdChiKS50aGVuKGQ9PntpZighXy5pc0VxdWFsKGQsdGhpcy5fcnVuVG9UYWdJbmZvKSl7dmFyIGY9Xy5tYXBWYWx1ZXMoZCwKaD0+T2JqZWN0LmtleXMoaCkpO2Y9dmMuZ2V0VGFncyhmKTt0aGlzLnNldCgiX2RhdGFOb3RGb3VuZCIsMD09PWYubGVuZ3RoKTt0aGlzLnNldCgiX3J1blRvVGFnSW5mbyIsZCl9fSl9LF9yZWxvYWRNZXNoZXMoKXt0aGlzLl9nZXRBbGxDaGlsZHJlbigpLmZvckVhY2goYj0+e2IucmVsb2FkKCl9KX0sX21ha2VDYXRlZ29yaWVzKGIsZCxmKXtmdW5jdGlvbiBoKHQpe2NvbnN0IGw9Ylt0LnJ1bl1bdC50YWddLnNhbXBsZXM7cmV0dXJuIF8ucmFuZ2UobCkubWFwKHA9Pk9iamVjdC5hc3NpZ24oe30sdCx7c2FtcGxlOnAsb2ZTYW1wbGVzOmx9KSl9Y29uc3Qgaz1fLm1hcFZhbHVlcyhiLHQ9Pk9iamVjdC5rZXlzKHQpKTtyZXR1cm4gJGMuY2F0ZWdvcml6ZVJ1blRhZ0NvbWJpbmF0aW9ucyhrLGQsZikubWFwKHQ9Pk9iamVjdC5hc3NpZ24oe30sdCx7aXRlbXM6W10uY29uY2F0LmFwcGx5KFtdLHQuaXRlbXMubWFwKGgpKX0pKX19KX0pKCk7CgovLyMgc291cmNlVVJMPWJ1aWxkOi8vdGYtcGx1Z2luLXV0aWwvbWVzc2FnZS5qcwpVaT10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oYixkLGYsaCl7cmV0dXJuIG5ldyAoZnx8KGY9UHJvbWlzZSkpKGZ1bmN0aW9uKGssdCl7ZnVuY3Rpb24gbChuKXt0cnl7bShoLm5leHQobikpfWNhdGNoKHEpe3QocSl9fWZ1bmN0aW9uIHAobil7dHJ5e20oaFsidGhyb3ciXShuKSl9Y2F0Y2gocSl7dChxKX19ZnVuY3Rpb24gbShuKXtuLmRvbmU/ayhuLnZhbHVlKToobmV3IGYoZnVuY3Rpb24ocSl7cShuLnZhbHVlKX0pKS50aGVuKGwscCl9bSgoaD1oLmFwcGx5KGIsZHx8W10pKS5uZXh0KCkpfSl9O3ZhciBNazsKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXsoZnVuY3Rpb24oZil7Y2xhc3MgaHtjb25zdHJ1Y3RvcihrKXt0aGlzLnBvcnQ9azt0aGlzLmlkPTA7dGhpcy5yZXNwb25zZVdhaXRzPW5ldyBNYXA7dGhpcy5saXN0ZW5lcnM9bmV3IE1hcDt0aGlzLnBvcnQuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdD0+dGhpcy5vbk1lc3NhZ2UodCkpfWxpc3RlbihrLHQpe3RoaXMubGlzdGVuZXJzLnNldChrLHQpfXVubGlzdGVuKGspe3RoaXMubGlzdGVuZXJzLmRlbGV0ZShrKX1vbk1lc3NhZ2Uoayl7cmV0dXJuIFVpKHRoaXMsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbiooKXt2YXIgdD1KU09OLnBhcnNlKGsuZGF0YSk7Y29uc3QgbD10LnR5cGUscD10LmlkLG09dC5wYXlsb2FkO3ZhciBuPXQuZXJyb3I7aWYodC5pc1JlcGx5KXtpZih0aGlzLnJlc3BvbnNlV2FpdHMuaGFzKHApKXt2YXIge3Jlc29sdmU6cSxyZWplY3Q6dX09dGhpcy5yZXNwb25zZVdhaXRzLmdldChwKTt0aGlzLnJlc3BvbnNlV2FpdHMuZGVsZXRlKHApOwpuP3UoRXJyb3IobikpOnEobSl9fWVsc2V7bj10PW51bGw7aWYodGhpcy5saXN0ZW5lcnMuaGFzKGwpKXtjb25zdCB4PXRoaXMubGlzdGVuZXJzLmdldChsKTt0cnl7dD15aWVsZCB4KG0pfWNhdGNoKEEpe249QX19dGhpcy5wb3N0TWVzc2FnZSh7WyJ0eXBlIl06bCxbImlkIl06cCxbInBheWxvYWQiXTp0LFsiZXJyb3IiXTpuLFsiaXNSZXBseSJdOiEwfSl9fSl9cG9zdE1lc3NhZ2Uoayl7dGhpcy5wb3J0LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KGspKX1zZW5kTWVzc2FnZShrKXtjb25zdCB0PXRoaXMuaWQrKzt0aGlzLnBvc3RNZXNzYWdlKHt0eXBlOiJleHBlcmltZW50YWwuUnVuc0NoYW5nZWQiLGlkOnQscGF5bG9hZDprLGVycm9yOm51bGwsaXNSZXBseTohMX0pO3JldHVybiBuZXcgUHJvbWlzZSgobCxwKT0+e3RoaXMucmVzcG9uc2VXYWl0cy5zZXQodCx7cmVzb2x2ZTpsLHJlamVjdDpwfSl9KX19Zi5JUEM9aH0pKGQuRE9fTk9UX1VTRV9JTlRFUk5BTHx8KGQuRE9fTk9UX1VTRV9JTlRFUk5BTD0Ke30pKX0pKGIubGlifHwoYi5saWI9e30pKX0pKE1rfHwoTWs9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1wbHVnaW4tdXRpbC9wbHVnaW4taG9zdC1pcGMuanMKKGZ1bmN0aW9uKGIpeyhmdW5jdGlvbihkKXtmdW5jdGlvbiBmKG0sbil7Y29uc3QgcT1uZXcgYi5saWIuRE9fTk9UX1VTRV9JTlRFUk5BTC5JUEMobSk7dC5hZGQocSk7cC5zZXQocSxuKTttLnN0YXJ0KCk7Zm9yKGNvbnN0IFt1LHhdb2YgbCltPWgoeCxxKSxxLmxpc3Rlbih1LG0pfWZ1bmN0aW9uIGgobSxuKXtyZXR1cm4gcT0+e3ZhciB1PXAuZ2V0KG4pO3U9ay5nZXQodSl8fG51bGw7cmV0dXJuIG0odSxxKX19ZC5yZWdpc3RlclBsdWdpbklmcmFtZT1mdW5jdGlvbihtLG4pe2suc2V0KG0se3BsdWdpbk5hbWU6bn0pfTtjb25zdCBrPW5ldyBXZWFrTWFwLHQ9bmV3IFNldCxsPW5ldyBNYXAscD1uZXcgTWFwO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixtPT57aWYoImV4cGVyaW1lbnRhbC5ib290c3RyYXAiPT09bS5kYXRhKXt2YXIgbj1tLnBvcnRzWzBdO24mJihtPW0uc291cmNlP20uc291cmNlLmZyYW1lRWxlbWVudDpudWxsKSYmZihuLG0pfX0pO2QuYnJvYWRjYXN0PQpmdW5jdGlvbigpe3ZhciBtPXZjLnJ1bnNTdG9yZS5nZXRSdW5zKCk7Zm9yKHZhciBuIG9mIHQpcC5nZXQobikuaXNDb25uZWN0ZWR8fCh0LmRlbGV0ZShuKSxwLmRlbGV0ZShuKSk7bj1bLi4udF0ubWFwKHE9PnEuc2VuZE1lc3NhZ2UobSkpO3JldHVybiBQcm9taXNlLmFsbChuKX07ZC5saXN0ZW49ZnVuY3Rpb24obSxuKXtsLnNldChtLG4pO2Zvcihjb25zdCBxIG9mIHQpe2NvbnN0IHU9aChuLHEpO3EubGlzdGVuKG0sdSl9fTtkLnVubGlzdGVuPWZ1bmN0aW9uKG0pe2wuZGVsZXRlKG0pO2Zvcihjb25zdCBuIG9mIHQpbi51bmxpc3RlbihtKX19KShiLmhvc3R8fChiLmhvc3Q9e30pKX0pKE1rfHwoTWs9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1wbHVnaW4tdXRpbC9jb3JlLWhvc3QtaW1wbC5qcwpNay5ob3N0Lmxpc3RlbigiZXhwZXJpbWVudGFsLkdldFVSTFBsdWdpbkRhdGEiLGI9PntpZihiKXtiPWBwLiR7Yi5wbHVnaW5OYW1lfS5gO3ZhciBkPXt9O2ZvcihsZXQgZiBpbiBwZC51cmxEaWN0KWYuc3RhcnRzV2l0aChiKSYmKGRbZi5zdWJzdHJpbmcoYi5sZW5ndGgpXT1wZC51cmxEaWN0W2ZdKTtyZXR1cm4gZH19KTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi1wbHVnaW4tdXRpbC9ydW5zLWhvc3QtaW1wbC5qcwpNay5ob3N0Lmxpc3RlbigiZXhwZXJpbWVudGFsLkdldFJ1bnMiLCgpPT52Yy5ydW5zU3RvcmUuZ2V0UnVucygpKTt2Yy5ydW5zU3RvcmUuYWRkTGlzdGVuZXIoKCk9Pk1rLmhvc3QuYnJvYWRjYXN0KCkpOwoKLy8jIHNvdXJjZVVSTD1idWlsZDovL3RmLXRlbnNvcmJvYXJkL2F1dG9SZWxvYWRCZWhhdmlvci5qcwooZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpe3JldHVybihuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpKS5oYXMoIl9EaXNhYmxlQXV0b1JlbG9hZCIpfWIuQVVUT1JFTE9BRF9MT0NBTFNUT1JBR0VfS0VZPSJURi5UZW5zb3JCb2FyZC5hdXRvUmVsb2FkRW5hYmxlZCI7Yi5BdXRvUmVsb2FkQmVoYXZpb3I9e3Byb3BlcnRpZXM6e2F1dG9SZWxvYWRFbmFibGVkOnt0eXBlOkJvb2xlYW4sb2JzZXJ2ZXI6Il9hdXRvUmVsb2FkT2JzZXJ2ZXIiLHZhbHVlOigpPT57dmFyIGY9d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGIuQVVUT1JFTE9BRF9MT0NBTFNUT1JBR0VfS0VZKTtyZXR1cm4idHJ1ZSI9PT1mfHxudWxsPT1mfX0sX2F1dG9SZWxvYWRJZDp7dHlwZTpOdW1iZXJ9LGF1dG9SZWxvYWRJbnRlcnZhbFNlY3M6e3R5cGU6TnVtYmVyLHZhbHVlOjMwfX0sZGV0YWNoZWQ6ZnVuY3Rpb24oKXt3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuX2F1dG9SZWxvYWRJZCl9LApfYXV0b1JlbG9hZE9ic2VydmVyOmZ1bmN0aW9uKGYpe3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShiLkFVVE9SRUxPQURfTE9DQUxTVE9SQUdFX0tFWSxmKTtmJiYhZCgpP3RoaXMuX2F1dG9SZWxvYWRJZD13aW5kb3cuc2V0VGltZW91dCgoKT0+dGhpcy5fZG9BdXRvUmVsb2FkKCksMUUzKnRoaXMuYXV0b1JlbG9hZEludGVydmFsU2Vjcyk6d2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9hdXRvUmVsb2FkSWQpfSxfZG9BdXRvUmVsb2FkOmZ1bmN0aW9uKCl7aWYobnVsbD09dGhpcy5yZWxvYWQpdGhyb3cgRXJyb3IoIkF1dG9SZWxvYWRCZWhhdmlvciByZXF1aXJlcyBhIHJlbG9hZCBtZXRob2QiKTt0aGlzLnJlbG9hZCgpO3RoaXMuX2F1dG9SZWxvYWRJZD13aW5kb3cuc2V0VGltZW91dCgoKT0+dGhpcy5fZG9BdXRvUmVsb2FkKCksMUUzKnRoaXMuYXV0b1JlbG9hZEludGVydmFsU2Vjcyl9fX0pKHFmfHwocWY9e30pKTsKCi8vIyBzb3VyY2VVUkw9YnVpbGQ6Ly90Zi10ZW5zb3Jib2FyZC90Zi10ZW5zb3Jib2FyZC5odG1sLmpzCmNvbnN0IFltPXtnZXRMb2NhdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb259fTsKUG9seW1lcih7aXM6InRmLXRlbnNvcmJvYXJkIixiZWhhdmlvcnM6W3FmLkF1dG9SZWxvYWRCZWhhdmlvcl0scHJvcGVydGllczp7YnJhbmQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJUZW5zb3JCb2FyZC1YIn0saG9tZVBhdGg6e3R5cGU6U3RyaW5nLHZhbHVlOiIifSxfaG9tZVBhdGg6e3R5cGU6U3RyaW5nLGNvbXB1dGVkOiJfc2FuaXRpemVIb21lUGF0aChob21lUGF0aCkifSx0aXRsZTp7dHlwZTpTdHJpbmcsb2JzZXJ2ZXI6Il91cGRhdGVUaXRsZSJ9LHJvdXRlcjp7dHlwZTpPYmplY3Qsb2JzZXJ2ZXI6Il91cGRhdGVSb3V0ZXIifSxkZW1vRGlyOnt0eXBlOlN0cmluZyx2YWx1ZTpudWxsfSx1c2VIYXNoOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LGRpc2FibGVkRGFzaGJvYXJkczp7dHlwZTpTdHJpbmcsdmFsdWU6IiJ9LF9kYXNoYm9hcmREYXRhOnt0eXBlOkFycmF5LGNvbXB1dGVkOiJfY29tcHV0ZURhc2hib2FyZERhdGEoX2Rhc2hib2FyZFJlZ2lzdHJ5KSJ9LF9kYXNoYm9hcmRSZWdpc3RyeTp7dHlwZTpPYmplY3QsCmNvbXB1dGVkOiJfY29tcHV0ZURhc2hib2FyZFJlZ2lzdHJ5KF9wbHVnaW5zTGlzdGluZykifSxfcGx1Z2luc0xpc3Rpbmc6e3R5cGU6T2JqZWN0LHZhbHVlOigpPT4oe30pfSxfYWN0aXZlRGFzaGJvYXJkczp7dHlwZTpBcnJheSxjb21wdXRlZDoiX2NvbXB1dGVBY3RpdmVEYXNoYm9hcmQoX2Rhc2hib2FyZERhdGEsIF9wbHVnaW5zTGlzdGluZykifSxfYWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZTp7dHlwZTpTdHJpbmcsdmFsdWU6cWYuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZS5OT1RfTE9BREVEfSxfYWN0aXZlRGFzaGJvYXJkc05vdExvYWRlZDp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUFjdGl2ZURhc2hib2FyZHNOb3RMb2FkZWQoX2FjdGl2ZURhc2hib2FyZHNMb2FkU3RhdGUpIn0sX2FjdGl2ZURhc2hib2FyZHNMb2FkZWQ6e3R5cGU6Qm9vbGVhbixjb21wdXRlZDoiX2NvbXB1dGVBY3RpdmVEYXNoYm9hcmRzTG9hZGVkKF9hY3RpdmVEYXNoYm9hcmRzTG9hZFN0YXRlKSJ9LApfYWN0aXZlRGFzaGJvYXJkc0ZhaWxlZFRvTG9hZDp7dHlwZTpCb29sZWFuLGNvbXB1dGVkOiJfY29tcHV0ZUFjdGl2ZURhc2hib2FyZHNGYWlsZWRUb0xvYWQoX2FjdGl2ZURhc2hib2FyZHNMb2FkU3RhdGUpIn0sX3Nob3dOb0Rhc2hib2FyZHNNZXNzYWdlOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlU2hvd05vRGFzaGJvYXJkc01lc3NhZ2UoX2FjdGl2ZURhc2hib2FyZHNMb2FkZWQsIF9hY3RpdmVEYXNoYm9hcmRzLCBfc2VsZWN0ZWREYXNoYm9hcmQpIn0sX3Nob3dOb1N1Y2hEYXNoYm9hcmRNZXNzYWdlOnt0eXBlOkJvb2xlYW4sY29tcHV0ZWQ6Il9jb21wdXRlU2hvd05vU3VjaERhc2hib2FyZE1lc3NhZ2UoX2FjdGl2ZURhc2hib2FyZHNMb2FkZWQsIF9kYXNoYm9hcmRSZWdpc3RyeSwgX3NlbGVjdGVkRGFzaGJvYXJkKSJ9LF9zZWxlY3RlZERhc2hib2FyZDp7dHlwZTpTdHJpbmcsdmFsdWU6cGQuZ2V0U3RyaW5nKHBkLlRBQil8fG51bGwsb2JzZXJ2ZXI6Il9zZWxlY3RlZERhc2hib2FyZENoYW5nZWQifSwKX2Rhc2hib2FyZFRvTWF5YmVSZW1vdmU6U3RyaW5nLF9kYXNoYm9hcmRDb250YWluZXJzU3RhbXBlZDp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pih7fSl9LF9pc1JlbG9hZERpc2FibGVkOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9LF9sYXN0UmVsb2FkVGltZTp7dHlwZTpTdHJpbmcsdmFsdWU6Im5vdCB5ZXQgbG9hZGVkIn0sX2xhc3RSZWxvYWRUaW1lU2hvcnQ6e3R5cGU6U3RyaW5nLHZhbHVlOiJOb3QgeWV0IGxvYWRlZCJ9LF9kYXRhTG9jYXRpb246e3R5cGU6U3RyaW5nLHZhbHVlOm51bGx9LF9yZXF1ZXN0TWFuYWdlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5SZXF1ZXN0TWFuYWdlcn0sX2NhbmNlbGxlcjp7dHlwZTpPYmplY3QsdmFsdWU6KCk9Pm5ldyB2Yy5DYW5jZWxsZXJ9LF9yZWZyZXNoaW5nOnt0eXBlOkJvb2xlYW4sdmFsdWU6ITF9fSxvYnNlcnZlcnM6WyJfdXBkYXRlU2VsZWN0ZWREYXNoYm9hcmRGcm9tQWN0aXZlKF9zZWxlY3RlZERhc2hib2FyZCwgX2FjdGl2ZURhc2hib2FyZHMpIiwKIl9lbnN1cmVTZWxlY3RlZERhc2hib2FyZFN0YW1wZWQoX2Rhc2hib2FyZFJlZ2lzdHJ5LCBfZGFzaGJvYXJkQ29udGFpbmVyc1N0YW1wZWQsIF9hY3RpdmVEYXNoYm9hcmRzLCBfc2VsZWN0ZWREYXNoYm9hcmQpIl0sX3Nhbml0aXplSG9tZVBhdGgoYil7aWYoIWIpcmV0dXJuIiI7Y29uc3QgZD1ZbS5nZXRMb2NhdGlvbigpLGY9bmV3IFVSTChiLGQuaHJlZiksaD0iaHR0cDoiPT09Zi5wcm90b2NvbHx8Imh0dHBzOiI9PT1mLnByb3RvY29sLGs9Zi5vcmlnaW49PT1kLm9yaWdpbjtpZighaCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihgRXhwZWN0ICdob21lUGF0aCcgdG8gYmUgb2YgaHR0cDogb3IgaHR0cHM6LiAke2J9YCk7aWYoIWspdGhyb3cgbmV3IFJhbmdlRXJyb3IoYEV4cGVjdCAnaG9tZVBhdGgnIGJlIGEgcGF0aCBvciBoYXZlIHRoZSBzYW1lIG9yaWdpbi4gJHtifSB2cy4gJHtkLm9yaWdpbn1gKTtyZXR1cm4gaCYmaz9mLnRvU3RyaW5nKCk6IiJ9LF9hY3RpdmVEYXNoYm9hcmRzVXBkYXRlZCgpe30sCl9pc0Rhc2hib2FyZEFjdGl2ZShiLGQsZil7cmV0dXJuIDA8PShifHwiIikuc3BsaXQoIiwiKS5pbmRleE9mKGYucGx1Z2luKXx8IShkfHxbXSkuaW5jbHVkZXMoZi5wbHVnaW4pPyExOiEwfSxfaXNEYXNoYm9hcmRJbmFjdGl2ZShiLGQsZil7cmV0dXJuIDA8PShifHwiIikuc3BsaXQoIiwiKS5pbmRleE9mKGYucGx1Z2luKT8hMTooZHx8W10pLmluY2x1ZGVzKGYucGx1Z2luKT8hMTohMH0sX2luYWN0aXZlRGFzaGJvYXJkc0V4aXN0KGIsZCxmKXtpZighZilyZXR1cm4hMTtjb25zdCBoPW5ldyBTZXQ7Yi5mb3JFYWNoKGs9PntoLmFkZChrLnBsdWdpbil9KTsoZHx8IiIpLnNwbGl0KCIsIikuZm9yRWFjaChrPT57aC5kZWxldGUoay5wbHVnaW4pfSk7Zi5mb3JFYWNoKGs9PntoLmRlbGV0ZShrKX0pO3JldHVybiAwPGguc2l6ZX0sX2dldERhc2hib2FyZEZyb21JbmRleChiLGQpe3JldHVybiBiW2RdfSxfc2VsZWN0ZWRTdGF0dXMoYixkKXtyZXR1cm4gYj09PWR9LF9zZWxlY3RlZERhc2hib2FyZENoYW5nZWQoYil7Yj0KYnx8IiI7cGQuc2V0U3RyaW5nKHBkLlRBQixiKTtsZXQgZD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7ZCs9ZC5lbmRzV2l0aCgiLyIpP2I6Ii8iK2I7Z2EoInNldCIsInBhZ2UiLGQpO2dhKCJzZW5kIiwicGFnZXZpZXciKX0sX3VwZGF0ZVNlbGVjdGVkRGFzaGJvYXJkRnJvbUFjdGl2ZShiLGQpe2QmJm51bGw9PWImJihiPWRbMF18fG51bGwsbnVsbCE9YiYmKHBkLnNldFN0cmluZyhwZC5UQUIsYix7dXNlTG9jYXRpb25SZXBsYWNlOiEwfSksdGhpcy5fc2VsZWN0ZWREYXNoYm9hcmQ9YikpfSxfdXBkYXRlU2VsZWN0ZWREYXNoYm9hcmRGcm9tSGFzaCgpe2NvbnN0IGI9cGQuZ2V0U3RyaW5nKHBkLlRBQik7dGhpcy5zZXQoIl9zZWxlY3RlZERhc2hib2FyZCIsYnx8bnVsbCl9LF9lbnN1cmVTZWxlY3RlZERhc2hib2FyZFN0YW1wZWQoYixkLGYsaCl7aWYoZiYmaCYmZFtoXSYmKGQ9dGhpcy5fZGFzaGJvYXJkVG9NYXliZVJlbW92ZSx0aGlzLl9kYXNoYm9hcmRUb01heWJlUmVtb3ZlPQpoLGQmJmQhPWgmJmJbZF0ucmVtb3ZlRG9tJiYoZD10aGlzLiQkKGAuZGFzaGJvYXJkLWNvbnRhaW5lcltkYXRhLWRhc2hib2FyZD0ke2R9XWApLGQuZmlyc3RDaGlsZCYmZC5maXJzdENoaWxkLnJlbW92ZSgpKSxkPXRoaXMuJCQoYC5kYXNoYm9hcmQtY29udGFpbmVyW2RhdGEtZGFzaGJvYXJkPSR7aH1dYCkpKXtiPWJbaF07aWYoMD09PWQuY2hpbGRyZW4ubGVuZ3RoKXN3aXRjaChmPWIubG9hZGluZ01lY2hhbmlzbSxmLnR5cGUpe2Nhc2UgIkNVU1RPTV9FTEVNRU5UIjpoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZi5lbGVtZW50TmFtZSk7aC5pZD0iZGFzaGJvYXJkIjtkLmFwcGVuZENoaWxkKGgpO2JyZWFrO2Nhc2UgIklGUkFNRSI6dGhpcy5fcmVuZGVyUGx1Z2luSWZyYW1lKGQsaCxmKTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybigiSW52YXJpYW50IHZpb2xhdGlvbjoiLGYpfXRoaXMuc2V0KCJfaXNSZWxvYWREaXNhYmxlZCIsYi5kaXNhYmxlUmVsb2FkKX19LF9yZW5kZXJQbHVnaW5JZnJhbWUoYiwKZCl7Y29uc3QgZj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTtmLmlkPSJkYXNoYm9hcmQiO01rLmhvc3QucmVnaXN0ZXJQbHVnaW5JZnJhbWUoZixkKTtjb25zdCBoPW5ldyBVUkwoImRhdGEvcGx1Z2luX2VudHJ5Lmh0bWwiLHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtoLnNlYXJjaFBhcmFtcy5zZXQoIm5hbWUiLGQpO2Yuc2V0QXR0cmlidXRlKCJzcmMiLGgudG9TdHJpbmcoKSk7Yi5hcHBlbmRDaGlsZChmKX0sX3NlbGVjdGVkRGFzaGJvYXJkQ29tcG9uZW50KCl7cmV0dXJuIHRoaXMuJCQoYC5kYXNoYm9hcmQtY29udGFpbmVyW2RhdGEtZGFzaGJvYXJkPSR7dGhpcy5fc2VsZWN0ZWREYXNoYm9hcmR9XSAjZGFzaGJvYXJkYCl9LHJlYWR5KCl7YWQuc2V0VXNlSGFzaCh0aGlzLnVzZUhhc2gpO3RoaXMuX3VwZGF0ZVNlbGVjdGVkRGFzaGJvYXJkRnJvbUhhc2goKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsKCk9Pnt0aGlzLl91cGRhdGVTZWxlY3RlZERhc2hib2FyZEZyb21IYXNoKCl9LAohMSk7dmMuZW52aXJvbm1lbnRTdG9yZS5hZGRMaXN0ZW5lcigoKT0+e3RoaXMuX2RhdGFMb2NhdGlvbj12Yy5lbnZpcm9ubWVudFN0b3JlLmdldERhdGFMb2NhdGlvbigpO2NvbnN0IGI9dmMuZW52aXJvbm1lbnRTdG9yZS5nZXRXaW5kb3dUaXRsZSgpO2ImJih3aW5kb3cuZG9jdW1lbnQudGl0bGU9Yil9KTtwZC5taWdyYXRlTGVnYWN5VVJMU2NoZW1lKCk7dGhpcy5fcmVsb2FkRGF0YSgpO3RoaXMuX2xhc3RSZWxvYWRUaW1lPShuZXcgRGF0ZSkudG9TdHJpbmcoKX0sX2NvbXB1dGVBY3RpdmVEYXNoYm9hcmQoKXtyZXR1cm4gdGhpcy5fZGFzaGJvYXJkRGF0YT90aGlzLl9kYXNoYm9hcmREYXRhLm1hcChiPT5iLnBsdWdpbikuZmlsdGVyKGI9PntiPXRoaXMuX3BsdWdpbnNMaXN0aW5nW2JdO3JldHVybiJib29sZWFuIj09PXR5cGVvZiBiP2I6YiYmYi5lbmFibGVkfSk6W119LF9vblRlbXBsYXRlQ2hhbmdlZCgpe2NvbnN0IGI9e307Zm9yKGNvbnN0IGQgb2YgdGhpcy5yb290LnF1ZXJ5U2VsZWN0b3JBbGwoIi5kYXNoYm9hcmQtY29udGFpbmVyIikpYltkLmRhdGFzZXQuZGFzaGJvYXJkXT0KITA7dGhpcy5fZGFzaGJvYXJkQ29udGFpbmVyc1N0YW1wZWQ9Yn0sX2NvbXB1dGVEYXNoYm9hcmRSZWdpc3RyeShiKXtjb25zdCBkPXt9O2Zvcihjb25zdCBbaCxrXW9mIE9iamVjdC5lbnRyaWVzKHFmLmRhc2hib2FyZFJlZ2lzdHJ5KSlkW2hdPXtwbHVnaW46ay5wbHVnaW4sbG9hZGluZ01lY2hhbmlzbTp7dHlwZToiQ1VTVE9NX0VMRU1FTlQiLGVsZW1lbnROYW1lOmsuZWxlbWVudE5hbWV9LHRhYk5hbWU6ay50YWJOYW1lLnRvVXBwZXJDYXNlKCksZGlzYWJsZVJlbG9hZDprLmlzUmVsb2FkRGlzYWJsZWR8fCExLHJlbW92ZURvbTprLnJlbW92ZURvbXx8ITF9O2lmKG51bGwhPWIpZm9yKGNvbnN0IFtoLGtdb2YgT2JqZWN0LmVudHJpZXMoYikpaWYoImJvb2xlYW4iIT09dHlwZW9mIGspe3N3aXRjaChrLmxvYWRpbmdfbWVjaGFuaXNtLnR5cGUpe2Nhc2UgIk5PTkUiOm51bGw9PWRbaF0mJmNvbnNvbGUud2FybigiUGx1Z2luIGhhcyBubyBsb2FkaW5nIG1lY2hhbmlzbSBhbmQgbm8gYmFrZWQtaW4gcmVnaXN0cnkgZW50cnk6ICVzIiwKaCk7Y29udGludWU7Y2FzZSAiQ1VTVE9NX0VMRU1FTlQiOnZhciBmPXt0eXBlOiJDVVNUT01fRUxFTUVOVCIsZWxlbWVudE5hbWU6ay5sb2FkaW5nX21lY2hhbmlzbS5lbGVtZW50X25hbWV9O2JyZWFrO2Nhc2UgIklGUkFNRSI6Zj17dHlwZToiSUZSQU1FIixtb2R1bGVQYXRoOmsubG9hZGluZ19tZWNoYW5pc20ubW9kdWxlX3BhdGh9O2JyZWFrO2RlZmF1bHQ6Y29uc29sZS53YXJuKCJVbmtub3duIGxvYWRpbmcgbWVjaGFuaXNtIGZvciBwbHVnaW4gJXM6ICVzIixoLGsubG9hZGluZ19tZWNoYW5pc20pO2NvbnRpbnVlfW51bGw9PWYmJmNvbnNvbGUuZXJyb3IoIkludmFyaWFudCB2aW9sYXRpb246IGxvYWRpbmdNZWNoYW5pc20gaXMgJXMgZm9yICVzIixmLGgpO2RbaF09e3BsdWdpbjpoLGxvYWRpbmdNZWNoYW5pc206Zix0YWJOYW1lOmsudGFiX25hbWUudG9VcHBlckNhc2UoKSxkaXNhYmxlUmVsb2FkOmsuZGlzYWJsZV9yZWxvYWQscmVtb3ZlRG9tOmsucmVtb3ZlX2RvbX19Zj17fTsKZm9yKGNvbnN0IGggb2YgT2JqZWN0LmtleXMoYikpZFtoXSYmKGZbaF09ZFtoXSk7T2JqZWN0LmFzc2lnbihmLGQpO3JldHVybiBmfSxfY29tcHV0ZURhc2hib2FyZERhdGEoYil7cmV0dXJuIE9iamVjdC52YWx1ZXMoYil9LF9mZXRjaFBsdWdpbnNMaXN0aW5nKCl7dGhpcy5fY2FuY2VsbGVyLmNhbmNlbEFsbCgpO2NvbnN0IGI9dGhpcy5fY2FuY2VsbGVyLmNhbmNlbGxhYmxlKGQ9PntkLmNhbmNlbGxlZHx8KHRoaXMuX3BsdWdpbnNMaXN0aW5nPWQudmFsdWUsdGhpcy5fYWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZT1xZi5BY3RpdmVEYXNoYm9hcmRzTG9hZFN0YXRlLkxPQURFRCl9KTtyZXR1cm4gdGhpcy5fcmVxdWVzdE1hbmFnZXIucmVxdWVzdCh2Yy5nZXRSb3V0ZXIoKS5wbHVnaW5zTGlzdGluZygpKS50aGVuKGIsKCk9Pnt0aGlzLl9hY3RpdmVEYXNoYm9hcmRzTG9hZFN0YXRlPT09cWYuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZS5OT1RfTE9BREVEP3RoaXMuX2FjdGl2ZURhc2hib2FyZHNMb2FkU3RhdGU9CnFmLkFjdGl2ZURhc2hib2FyZHNMb2FkU3RhdGUuRkFJTEVEOmNvbnNvbGUud2FybigiRmFpbGVkIHRvIHJlbG9hZCB0aGUgc2V0IG9mIGFjdGl2ZSBwbHVnaW5zOyB1c2luZyBvbGQgdmFsdWUuIil9KX0sX2NvbXB1dGVBY3RpdmVEYXNoYm9hcmRzTm90TG9hZGVkKGIpe3JldHVybiBiPT09cWYuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZS5OT1RfTE9BREVEfSxfY29tcHV0ZUFjdGl2ZURhc2hib2FyZHNMb2FkZWQoYil7cmV0dXJuIGI9PT1xZi5BY3RpdmVEYXNoYm9hcmRzTG9hZFN0YXRlLkxPQURFRH0sX2NvbXB1dGVBY3RpdmVEYXNoYm9hcmRzRmFpbGVkVG9Mb2FkKGIpe3JldHVybiBiPT09cWYuQWN0aXZlRGFzaGJvYXJkc0xvYWRTdGF0ZS5GQUlMRUR9LF9jb21wdXRlU2hvd05vRGFzaGJvYXJkc01lc3NhZ2UoYixkLGYpe3JldHVybiBiJiYwPT09ZC5sZW5ndGgmJm51bGw9PWZ9LF9jb21wdXRlU2hvd05vU3VjaERhc2hib2FyZE1lc3NhZ2UoYixkLGYpe3JldHVybiBiJiYhIWYmJgpudWxsPT1kW2ZdfSxfdXBkYXRlUm91dGVyKGIpe3ZjLnNldFJvdXRlcihiKX0sX3VwZGF0ZVRpdGxlKGIpe2ImJnRoaXMuc2V0KCJicmFuZCIsYil9LHJlbG9hZCgpe3RoaXMuX2lzUmVsb2FkRGlzYWJsZWR8fCh0aGlzLl9yZWxvYWREYXRhKCkudGhlbigoKT0+e2NvbnN0IGI9dGhpcy5fc2VsZWN0ZWREYXNoYm9hcmRDb21wb25lbnQoKTtiJiZiLnJlbG9hZCYmYi5yZWxvYWQoKX0pLHRoaXMuX2xhc3RSZWxvYWRUaW1lPShuZXcgRGF0ZSkudG9TdHJpbmcoKSl9LF9yZWxvYWREYXRhKCl7dGhpcy5fcmVmcmVzaGluZz0hMDtyZXR1cm4gUHJvbWlzZS5hbGwoW3RoaXMuX2ZldGNoUGx1Z2luc0xpc3RpbmcoKSx2Yy5lbnZpcm9ubWVudFN0b3JlLnJlZnJlc2goKSx2Yy5ydW5zU3RvcmUucmVmcmVzaCgpLHZjLmV4cGVyaW1lbnRzU3RvcmUucmVmcmVzaCgpXSkudGhlbigoKT0+e3RoaXMuX2xhc3RSZWxvYWRUaW1lU2hvcnQ9KG5ldyBEYXRlKS50b0xvY2FsZURhdGVTdHJpbmcodm9pZCAwLAp7bW9udGg6ImxvbmciLGRheToibnVtZXJpYyIsaG91cjoibnVtZXJpYyIsbWludXRlOiJudW1lcmljIixzZWNvbmQ6Im51bWVyaWMifSl9KS5maW5hbGx5KCgpPT57dGhpcy5fcmVmcmVzaGluZz0hMX0pfSxfZ2V0RGF0YVJlZnJlc2hpbmdDbGFzcygpe3JldHVybiB0aGlzLl9yZWZyZXNoaW5nPyJyZWZyZXNoaW5nIjoiIn0sb3BlblNldHRpbmdzKCl7dGhpcy4kLnNldHRpbmdzLm9wZW4oKTt0aGlzLiQucGFnaW5hdGlvbkxpbWl0SW5wdXQudmFsdWU9bmUuZ2V0TGltaXQoKX0sX3BhZ2luYXRpb25MaW1pdFZhbGlkYXRlKGIpe2IudGFyZ2V0LnZhbGlkYXRlKCl9LF9wYWdpbmF0aW9uTGltaXRDaGFuZ2VkKGIpe2I9TnVtYmVyLnBhcnNlSW50KGIudGFyZ2V0LnZhbHVlLDEwKTtiPT09K2ImJjA8YiYmbmUuc2V0TGltaXQoYil9fSk7Cg==", - "headers": [ - [ - "content-type", - "application/javascript; charset=utf-8" - ] - ], - "ok": true, - "status": 200, - "status_text": "OK" - } - } - }, - "id": "b12VFTu3-hci", - "outputId": "9435c354-b577-4b97-a414-02f984e643fa" - }, - "outputs": [], - "source": [ - "# load the TensorBoard notebook extension\n", - "try:\n", - " from google import colab\n", - " COLAB_ENV = True\n", - "except (ImportError, ModuleNotFoundError):\n", - " COLAB_ENV = False\n", - "\n", - "# Load the TensorBoard notebook extension\n", - "if COLAB_ENV:\n", - " %load_ext tensorboard\n", - " %tensorboard --logdir \"{exp_dir}\"\n", - "else:\n", - " print(\"To use tensorboard, please use this notebook in a Google Colab environment.\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 798, - "referenced_widgets": [ - "e442057bffb84bd98998d9510efa6d65", - "941a708c4be9439b85d16fead419eb28", - "89e9c76682884a778644ec611bf49620", - "bccc5ce564504e57ab7e57288ec9855f", - "ac99945aa746451ca2edd22ddc1c23f5", - "6051e9c59d3f4a97966deb0563bd838b", - "8bfa115a1f8e40459b48bacc94501b43", - "b843816f27d74819b6df5fb4688f81f6", - "910ed2b75ad04f4d85cba7008d70f6e4", - "d9494d3c14454a99b2186b6c17d3e974", - "f93d2621973e4dd5bf8541275fb2a90f", - "f508873507d24832baf2cfdef9985256", - "a6955b1b17914698bd2b58bbf2ace862", - "54429bcd7c034f0a9f4869e8d5c81be1", - "e3a193e81a6d460f991b98876b62ae9a", - "d15cb40f83f4448a94ab105294899638", - "ab35984c53234bfd8194874e62d61e91", - "658d948cb7c945bfadde7a0375fa2608", - "c04cfb1070d44717bd9a9fb72a4995dd", - "1d3240973ab54f5695e134a7d6786b9c", - "0e23adc2e02b429781e78e97f7f0c8dd", - "2809f012d5c249afb8ec1a91cb8948e1", - "599a60355c1046baa6ada4b3bf53f811", - "a881e961669344dd8b3d537c93e33d5e", - "a0257d5279244d0c9e9de42dd01a06a1", - "7e6be6dab51348b89a9b9db970b1eb37", - "a6f52ecababf4c7c850f43b7f5afe0c2", - "ac5ce7e13e9c46a5aa5c32a468427f10", - "957dccb7c8004c05869f9af3742d06b8", - "4a994fff1c6b4f449ff84b1abf18872d", - "6158813b468a418b87879daca30edaf2", - "d7b429b0c22a4d52aaf1c97f806616e1" - ] - }, - "id": "1PnJIXUl-rD5", - "outputId": "f898bc5c-23ba-47d2-b95e-32f2b62c9322" - }, - "outputs": [], - "source": [ - "# start model training\n", - "trainer.fit(nmt_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "A7bmp1y3cLsq" - }, - "source": [ - "# Saving and Reloading\n", - "\n", - "We can now save our model as a .nemo package." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "6-nuVQ1m-v8K" - }, - "outputs": [], - "source": [ - "nmt_model.save_to(config.model.nemo_path)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nxPCDMehJVG5" - }, - "source": [ - "And easily reload it along with its configuration." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 677 - }, - "id": "1l75wrKyJWhx", - "outputId": "8d9c747c-b819-4eae-81fb-71b90b4de96e" - }, - "outputs": [], - "source": [ - "nmt_model = Text2SparqlModel.restore_from(restore_path=config.model.nemo_path)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VcZI9Tj5ccAL" - }, - "source": [ - "Restoring a model does not load our train / validation / test data. Let's load our test set so we can evaluate the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "pbwHzqGsJiNr" - }, - "outputs": [], - "source": [ - "nmt_model.setup_test_data(config.model.validation_ds)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "fCIMkG6_-7h4" - }, - "source": [ - "# Inference\n", - "\n", - "To see how the model performs, let's run inference on the test data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000, - "referenced_widgets": [ - "a978999e4f3f4744bd3a3203229a5594", - "5c05957e67cd46c1971649208e64799a", - "2673f52233d34b5d9ba61be8e7a33d0c", - "d9ead14273bd4216b4c5eecee4654f25", - "45082f019d11420693492062de2906e9", - "5acef3eac0f942af845e83f463857a4f", - "db78b93cb3a745d1b6ec6029758ec70e", - "f17543559fd64962a31d112a996caa17" - ] - }, - "id": "nT8HMFOL-65o", - "outputId": "a7b2d30f-f296-4f87-f881-5fe8d2ab0515" - }, - "outputs": [], - "source": [ - "trainer = pl.Trainer(devices=config.trainer.devices)\n", - "trainer.test(nmt_model)\n", - "results = nmt_model.test_output" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "id": "RJ8Vqf0gJ2Te", - "outputId": "3306e75d-a142-471d-93d6-6f500eb5bb92" - }, - "outputs": [], - "source": [ - "# save results\n", - "with open(config.model.test_ds.filepath, \"r\") as f:\n", - " lines = f.readlines()\n", - "\n", - "lines[0] = lines[0].strip() + f\"\\tpredictions\\n\"\n", - "for i, res in enumerate(results[0][\"texts\"]):\n", - " lines[i + 1] = lines[i + 1].strip() + f\"\\t{res}\\n\"\n", - "\n", - "savepath = os.path.join(config.exp_manager.exp_dir, os.path.basename(config.model.test_ds.filepath))\n", - "with open(savepath, \"w\") as f:\n", - " f.writelines(lines)\n", - " print(f\"Predictions saved to {savepath}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9IcAr2XCC0-u" - }, - "source": [ - "Predictions on test easy should look like such:\n", - "\n", - "**Sentence:** What is the type of 1,1,1-trifluoro-2-chloro-2-bromoethane?
\n", - "**Label:** SELECT ?end WHERE { [ 1,1,1-trifluoro-2-chloro-2-bromoethane ] wdt:P31 ?end . }
\n", - "**Predictions:** SELECT ?end WHERE { [1,1,1-trifluoro-2-chloro-2-bromoethane] wdt:P31 ?end . }\n", - "\n", - "Aside from spacing, our finetuned network produces nearly identical results!" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "N1E7rxQzV29Z" - }, - "source": [ - "# Entity Resolution\n", - "\n", - "This section contains a practical demonstration of predictions. In order to process a WikiData query, we must also resolve entity names to q-values.\n", - "\n", - "Feel free to skip this section as it does not pertain to NeMo and requires additional files and dependencies." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "id": "3DpLWWm2V1xR", - "outputId": "1a45d6ad-e706-422d-da71-8b5b3a9a1ef9" - }, - "outputs": [], - "source": [ - "! pip install rapidfuzz\n", - "\n", - "# define helper methods for entity resolution\n", - "# matching of entities to q-values is easily performed using levenshtein distance\n", - "import os\n", - "import re\n", - "import json\n", - "from typing import Dict, Tuple\n", - "from urllib.request import Request, urlopen\n", - "\n", - "from rapidfuzz import fuzz, process\n", - "from glob import glob\n", - "\n", - "from nemo.collections.nlp.data.data_utils.data_preprocessing import if_exist\n", - "\n", - "base_url = \"https://m.meetkai.com/public_datasets/knowledge/\"\n", - "prefixes = {\n", - " \"television_series-5k-preprocessed.json\",\n", - " \"person-5k-preprocessed.json\",\n", - " \"movie-5k-preprocessed.json\",\n", - " \"literary_work-5k-preprocessed.json\",\n", - " \"chemical-5k-preprocessed.json\",\n", - "}\n", - "\n", - "\n", - "def download_entities(infold: str):\n", - " \"\"\"Downloads text2sparql entity files\n", - "\n", - " Args:\n", - " infold: save directory path\n", - " \"\"\"\n", - " os.makedirs(infold, exist_ok=True)\n", - "\n", - " for prefix in prefixes:\n", - " url = base_url + prefix\n", - "\n", - " print(f\"Downloading: {url}\")\n", - " if if_exist(infold, [prefix]):\n", - " print(\"** Download file already exists, skipping download\")\n", - " else:\n", - " req = Request(url, headers={\"User-Agent\": \"Mozilla/5.0\"})\n", - " with open(os.path.join(infold, prefix), \"wb\") as handle:\n", - " handle.write(urlopen(req, timeout=20).read())\n", - "\n", - "\n", - "def url_to_qvalue(url: str) -> str:\n", - " \"\"\"Get q value from Wikidata url\n", - " http://www.wikidata.org/entity/Q494 -> Q494\n", - " \"\"\"\n", - " return url.split(\"/\")[-1]\n", - "\n", - "\n", - "def load_entities(data_dir: str) -> Dict:\n", - " assert os.path.isdir(data_dir), f\"{data_dir} is not a valid directory.\"\n", - " fps = glob(os.path.join(data_dir, \"*-5k-preprocessed.json\"))\n", - " data = []\n", - " for fp in fps:\n", - " with open(fp, \"r\") as f:\n", - " file_data = json.load(f)\n", - " data.extend(file_data)\n", - " assert data, f\"No data was found, please check {data_dir}.\"\n", - "\n", - " # expand data\n", - " expanded_data = dict()\n", - " for item in data:\n", - " qvalue = url_to_qvalue(item[\"thing\"])\n", - " for label in item[\"labels\"]:\n", - " expanded_data[label] = qvalue\n", - "\n", - " return expanded_data\n", - "\n", - "\n", - "class EntityResolver:\n", - " def __init__(self, data_dir: str, score_cutoff: float = 80.0):\n", - " self.entity_dict = load_entities(data_dir)\n", - " self.choices = list(self.entity_dict.keys())\n", - " self.score_cutoff = score_cutoff\n", - "\n", - " def resolve_entity(self, entity: str) -> Tuple[str, str, float]:\n", - " \"\"\"Finds the fuzzy entity match above the cutoff score and returns the Q-value for it.\n", - "\n", - " Returns:\n", - " (q-value, top_entity_match, simple_levenshtein_score)\n", - " \"\"\"\n", - " top = process.extractOne(entity, self.choices, scorer=fuzz.ratio, score_cutoff=self.score_cutoff)\n", - " if not top:\n", - " raise ValueError(f\"For entity [{entity}], no valid match above cutoff found.\")\n", - " return self.lookup(top[0]), top[0], top[1]\n", - "\n", - " def lookup(self, entity: str):\n", - " return self.entity_dict[entity]\n", - "\n", - " def resolve(self, text: str) -> str:\n", - " \"\"\"Replaces all entity matches within a predicted query\n", - " assuming entities are always formatted between two brackets.\n", - " \"\"\"\n", - " matches = re.findall(r\"\\[(.*?)\\]\", text)\n", - " for entity in matches:\n", - " try:\n", - " q_value = self.resolve_entity(entity)[0]\n", - " text = text.replace(f\"[{entity}]\", f\"wd:{q_value}\")\n", - " except ValueError as e:\n", - " print(f\"WARNING: {e}\")\n", - " return text" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 191 - }, - "id": "cXyR7uDGaQPy", - "outputId": "e0bb00e1-a96b-4468-ce3f-c37f9219996b" - }, - "outputs": [], - "source": [ - "# Download entity data\n", - "download_entities(DATA_DIR)\n", - "\n", - "# Load the data to the entity resolver\n", - "resolver = EntityResolver(data_dir=DATA_DIR)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 35 - }, - "id": "y-LODUfcIZdj", - "outputId": "f8445996-2b1d-4c63-ec4b-61783d57cade" - }, - "outputs": [], - "source": [ - "# Let's use a cherry picked example prediction as not all queries will (and should) return results\n", - "example_prediction = \"SELECT ?end WHERE { [1,1,1-trifluoro-2-chloro-2-bromoethane] wdt:P31 ?end . }\"\n", - "example_query = resolver.resolve(example_prediction)\n", - "example_query" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 156 - }, - "id": "Jgc8RPQMIqNy", - "outputId": "4f96b84a-c288-4d81-acf2-f75ec1319ea3" - }, - "outputs": [], - "source": [ - "# And query WikiData\n", - "import requests\n", - "url = \"https://query.wikidata.org/sparql\"\n", - "response = requests.get(url, params = {\"format\": \"json\", \"query\": example_query})\n", - "data = response.json()\n", - "data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "krBEzHn6LGzB" - }, - "source": [ - "We get 5 results:\n", - "- http://www.wikidata.org/entity/Q11173 (chemical compound)\n", - "- http://www.wikidata.org/entity/Q12140 (medication)\n", - "- http://www.wikidata.org/entity/Q35456 (essential medicine)\n", - "- http://www.wikidata.org/entity/Q909194 (inhalational anaesthetic)\n", - "- http://www.wikidata.org/entity/Q72941151 (developmental toxicant)\n", - "\n", - "Telling us that 1,1,1-trifluoro-2-chloro-2-bromoethane is the name of a chemical compound used in some medications!\n", - "\n", - "*Note: Keep in mind that not all queries will return a result as the data or properties may not exist within WikiData.*" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "name": "Neural_Machine_Translation-Text2Sparql.ipynb", - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.0" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "0e23adc2e02b429781e78e97f7f0c8dd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "1d3240973ab54f5695e134a7d6786b9c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_a881e961669344dd8b3d537c93e33d5e", - "placeholder": "​", - "style": "IPY_MODEL_599a60355c1046baa6ada4b3bf53f811", - "value": " 625/625 [00:44<00:00, 14.12it/s]" - } - }, - "2673f52233d34b5d9ba61be8e7a33d0c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "Testing: 100%", - "description_tooltip": null, - "layout": "IPY_MODEL_5acef3eac0f942af845e83f463857a4f", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_45082f019d11420693492062de2906e9", - "value": 1 - } - }, - "2809f012d5c249afb8ec1a91cb8948e1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": "2", - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "45082f019d11420693492062de2906e9": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "4a994fff1c6b4f449ff84b1abf18872d": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": "2", - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "54429bcd7c034f0a9f4869e8d5c81be1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": "2", - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "599a60355c1046baa6ada4b3bf53f811": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "5acef3eac0f942af845e83f463857a4f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": "2", - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "5c05957e67cd46c1971649208e64799a": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": "inline-flex", - "flex": null, - "flex_flow": "row wrap", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "100%" - } - }, - "6051e9c59d3f4a97966deb0563bd838b": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": "2", - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "6158813b468a418b87879daca30edaf2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "658d948cb7c945bfadde7a0375fa2608": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": "inline-flex", - "flex": null, - "flex_flow": "row wrap", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "100%" - } - }, - "7e6be6dab51348b89a9b9db970b1eb37": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": "inline-flex", - "flex": null, - "flex_flow": "row wrap", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "100%" - } - }, - "89e9c76682884a778644ec611bf49620": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "Validation sanity check: 100%", - "description_tooltip": null, - "layout": "IPY_MODEL_6051e9c59d3f4a97966deb0563bd838b", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_ac99945aa746451ca2edd22ddc1c23f5", - "value": 1 - } - }, - "8bfa115a1f8e40459b48bacc94501b43": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "910ed2b75ad04f4d85cba7008d70f6e4": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_f93d2621973e4dd5bf8541275fb2a90f", - "IPY_MODEL_f508873507d24832baf2cfdef9985256" - ], - "layout": "IPY_MODEL_d9494d3c14454a99b2186b6c17d3e974" - } - }, - "941a708c4be9439b85d16fead419eb28": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": "inline-flex", - "flex": null, - "flex_flow": "row wrap", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "100%" - } - }, - "957dccb7c8004c05869f9af3742d06b8": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "a0257d5279244d0c9e9de42dd01a06a1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_a6f52ecababf4c7c850f43b7f5afe0c2", - "IPY_MODEL_ac5ce7e13e9c46a5aa5c32a468427f10" - ], - "layout": "IPY_MODEL_7e6be6dab51348b89a9b9db970b1eb37" - } - }, - "a6955b1b17914698bd2b58bbf2ace862": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "a6f52ecababf4c7c850f43b7f5afe0c2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "Validating: 100%", - "description_tooltip": null, - "layout": "IPY_MODEL_4a994fff1c6b4f449ff84b1abf18872d", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_957dccb7c8004c05869f9af3742d06b8", - "value": 1 - } - }, - "a881e961669344dd8b3d537c93e33d5e": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "a978999e4f3f4744bd3a3203229a5594": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_2673f52233d34b5d9ba61be8e7a33d0c", - "IPY_MODEL_d9ead14273bd4216b4c5eecee4654f25" - ], - "layout": "IPY_MODEL_5c05957e67cd46c1971649208e64799a" - } - }, - "ab35984c53234bfd8194874e62d61e91": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_c04cfb1070d44717bd9a9fb72a4995dd", - "IPY_MODEL_1d3240973ab54f5695e134a7d6786b9c" - ], - "layout": "IPY_MODEL_658d948cb7c945bfadde7a0375fa2608" - } - }, - "ac5ce7e13e9c46a5aa5c32a468427f10": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d7b429b0c22a4d52aaf1c97f806616e1", - "placeholder": "​", - "style": "IPY_MODEL_6158813b468a418b87879daca30edaf2", - "value": " 625/625 [00:45<00:00, 14.13it/s]" - } - }, - "ac99945aa746451ca2edd22ddc1c23f5": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "initial" - } - }, - "b843816f27d74819b6df5fb4688f81f6": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bccc5ce564504e57ab7e57288ec9855f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_b843816f27d74819b6df5fb4688f81f6", - "placeholder": "​", - "style": "IPY_MODEL_8bfa115a1f8e40459b48bacc94501b43", - "value": " 1/1.0 [00:00<00:00, 4.64it/s]" - } - }, - "c04cfb1070d44717bd9a9fb72a4995dd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "info", - "description": "Validating: 100%", - "description_tooltip": null, - "layout": "IPY_MODEL_2809f012d5c249afb8ec1a91cb8948e1", - "max": 1, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0e23adc2e02b429781e78e97f7f0c8dd", - "value": 1 - } - }, - "d15cb40f83f4448a94ab105294899638": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d7b429b0c22a4d52aaf1c97f806616e1": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "d9494d3c14454a99b2186b6c17d3e974": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": "inline-flex", - "flex": null, - "flex_flow": "row wrap", - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": "100%" - } - }, - "d9ead14273bd4216b4c5eecee4654f25": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f17543559fd64962a31d112a996caa17", - "placeholder": "​", - "style": "IPY_MODEL_db78b93cb3a745d1b6ec6029758ec70e", - "value": " 625/625 [07:46<00:00, 1.34it/s]" - } - }, - "db78b93cb3a745d1b6ec6029758ec70e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "e3a193e81a6d460f991b98876b62ae9a": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "e442057bffb84bd98998d9510efa6d65": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_89e9c76682884a778644ec611bf49620", - "IPY_MODEL_bccc5ce564504e57ab7e57288ec9855f" - ], - "layout": "IPY_MODEL_941a708c4be9439b85d16fead419eb28" - } - }, - "f17543559fd64962a31d112a996caa17": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "f508873507d24832baf2cfdef9985256": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_d15cb40f83f4448a94ab105294899638", - "placeholder": "​", - "style": "IPY_MODEL_e3a193e81a6d460f991b98876b62ae9a", - "value": " 13125/13125 [53:27<00:00, 4.09it/s, loss=0.002, v_num=5-52]" - } - }, - "f93d2621973e4dd5bf8541275fb2a90f": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "success", - "description": "Epoch 1: 100%", - "description_tooltip": null, - "layout": "IPY_MODEL_54429bcd7c034f0a9f4869e8d5c81be1", - "max": 13125, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_a6955b1b17914698bd2b58bbf2ace862", - "value": 13125 - } - } - } - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} From 5937f93ef9bbd31385199a1687900842c79c49ee Mon Sep 17 00:00:00 2001 From: trias702 <25867060+trias702@users.noreply.github.com> Date: Mon, 6 Feb 2023 12:21:37 -0600 Subject: [PATCH 44/73] Dynamic freezing in Nemo (#5879) * Initial commit for dynamic freezing logic Signed-off-by: Daniel Egert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Updated logic to handle lists and updated docs Signed-off-by: Daniel Egert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Transferred dynamic freezing logic to core from asr Signed-off-by: Daniel Egert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Revert asr config to original Signed-off-by: Daniel Egert * Fixed tab indent in core.rst Signed-off-by: Daniel Egert * Updated modelPT for latest from master Signed-off-by: Daniel Egert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixed indents in docs Signed-off-by: Daniel Egert --------- Signed-off-by: Daniel Egert Co-authored-by: Daniel Egert Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- docs/source/core/core.rst | 27 ++++++++++++++++++ nemo/core/classes/modelPT.py | 54 +++++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/docs/source/core/core.rst b/docs/source/core/core.rst index 2aa509d97d6b..4f5589653172 100644 --- a/docs/source/core/core.rst +++ b/docs/source/core/core.rst @@ -756,3 +756,30 @@ It also means that ``.forward(...)`` and ``__call__(...)`` methods each produce .. note:: To temporarily disable typechecking, you can enclose your code in ```with typecheck.disable_checks():``` statement. + +Dynamic Layer Freezing +---------------------- + +You can selectively freeze any modules inside a Nemo model by specifying a freezing schedule in the config yaml. Freezing stops any gradient updates +to that module, so that its weights are not changed for that step. This can be useful for combatting catastrophic forgetting, for example +when finetuning a large pretrained model on a small dataset. + +The default approach is to freeze a module for the first N training steps, but you can also enable freezing for a specific range of steps, +for example, from step 20 - 100, or even activate freezing from some N until the end of training. You can also freeze a module for the entire training run. +Dynamic freezing is specified in training steps, not epochs. + +To enable freezing, add the following to your config: + +.. code-block:: yaml + + model: + ... + freeze_updates: + enabled: true # set to false if you want to disable freezing + + modules: # list all of the modules you want to have freezing logic for + encoder: 200 # module will be frozen for the first 200 training steps + decoder: [50, -1] # module will be frozen at step 50 and will remain frozen until training ends + joint: [10, 100] # module will be frozen between step 10 and step 100 (step >= 10 and step <= 100) + transcoder: -1 # module will be frozen for the entire training run + diff --git a/nemo/core/classes/modelPT.py b/nemo/core/classes/modelPT.py index f16bb88b9dbf..bbf7649f8b89 100644 --- a/nemo/core/classes/modelPT.py +++ b/nemo/core/classes/modelPT.py @@ -1622,12 +1622,32 @@ def _setup_nsys_profiling(self): else: raise ValueError(f'Nsys end_step must be greater than or equal to nsys start_step') + def on_train_start(self): + """ PyTorch Lightning hook: + https://pytorch-lightning.readthedocs.io/en/stable/common/lightning_module.html#on-train-start + We use it here to copy the relevant config for dynamic freezing. + """ + + # dynamic freezing + # should fire only once, on the very first batch of training and never again + if not hasattr(self, '_freeze_cfg'): + if ( + hasattr(self.cfg, 'freeze_updates') + and self.cfg.freeze_updates is not None + and self.cfg.freeze_updates.get('enabled', False) + ): + setattr(self, '_freeze_cfg', OmegaConf.to_container(self.cfg.freeze_updates)) + self._freeze_cfg['is_frozen'] = {k: False for k in self._freeze_cfg['modules'].keys()} + else: + setattr(self, '_freeze_cfg', None) + def on_train_batch_start(self, batch: Any, batch_idx: int, unused: int = 0) -> Optional[int]: """ PyTorch Lightning hook: https://pytorch-lightning.readthedocs.io/en/stable/common/lightning_module.html#on-train-batch-start - We use it here to enable nsys profiling. + We use it here to enable nsys profiling and dynamic freezing. """ + # nsys profiling if self.device.type == 'cuda': if hasattr(self, '_nsys_profile_enabled'): if self._nsys_profile_enabled: @@ -1637,6 +1657,28 @@ def on_train_batch_start(self, batch: Any, batch_idx: int, unused: int = 0) -> O if self._nsys_profile_gen_shape: torch.autograd.profiler.emit_nvtx(record_shapes=True).__enter__() + # dynamic freezing + if hasattr(self, '_freeze_cfg') and self._freeze_cfg is not None: + if self.training and hasattr(self, "trainer") and self.trainer is not None: + num_updates = self.trainer.global_step + 1 + + for ml, m_steps in self._freeze_cfg['modules'].items(): + # we could do hasattr check here, but it's too expensive for each step + # consequently you'll throw an error if the module name doesn't exist + # or was spelled wrong in the config.yaml + if isinstance(m_steps, list): + assert len(m_steps) == 2, "freeze_updates modules list cannot have more than two elements" + should_freeze = (num_updates >= m_steps[0]) and (num_updates <= m_steps[1] or m_steps[1] == -1) + else: + should_freeze = num_updates <= m_steps or m_steps == -1 + if should_freeze and not self._freeze_cfg['is_frozen'][ml]: + getattr(self, ml).freeze() + getattr(self, ml).train() + self._freeze_cfg['is_frozen'][ml] = True + elif not should_freeze and self._freeze_cfg['is_frozen'][ml]: + getattr(self, ml).unfreeze() + self._freeze_cfg['is_frozen'][ml] = False + def on_train_batch_end(self, outputs, batch: Any, batch_idx: int, unused: int = 0) -> None: """ PyTorch Lightning hook: https://pytorch-lightning.readthedocs.io/en/stable/common/lightning_module.html#on-train-batch-end @@ -1650,6 +1692,16 @@ def on_train_batch_end(self, outputs, batch: Any, batch_idx: int, unused: int = logging.info("====== End nsys profiling ======") torch.cuda.cudart().cudaProfilerStop() + def on_train_end(self): + """ PyTorch Lightning hook: + https://pytorch-lightning.readthedocs.io/en/stable/common/lightning_module.html#on-train-end + We use it here to cleanup the dynamic freezing config. + """ + + # dynamic freezing cleanup + if hasattr(self, '_freeze_cfg'): + delattr(self, '_freeze_cfg') + # TODO: Remove in PTL 1.7.2 def cuda(self, device=None): """ PTL is overriding this method and changing the pytorch behavior of a module. From 01654a29146d906b432e4a728a9c9a8019d8e1ed Mon Sep 17 00:00:00 2001 From: trias702 <25867060+trias702@users.noreply.github.com> Date: Mon, 6 Feb 2023 12:30:20 -0600 Subject: [PATCH 45/73] Fix Windows bug with save_restore_connector (#5919) * Initial commit for Windows bug with save_to Signed-off-by: Daniel Egert * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: Daniel Egert Co-authored-by: Daniel Egert Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Jason --- nemo/core/connectors/save_restore_connector.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/nemo/core/connectors/save_restore_connector.py b/nemo/core/connectors/save_restore_connector.py index 7238be46bc9d..72bd310b0a5c 100644 --- a/nemo/core/connectors/save_restore_connector.py +++ b/nemo/core/connectors/save_restore_connector.py @@ -461,9 +461,10 @@ def _handle_artifacts(self, model, nemo_file_folder): # Get path where the command is executed - the artifacts will be "retrieved" there # (original .nemo behavior) cwd = os.getcwd() - try: - # Step into the nemo archive to try and find the file - with tempfile.TemporaryDirectory() as archive_dir: + # Step into the nemo archive to try and find the file + # TemporaryDirectory context must always be outer to try-catch chdir otherwise it crashes on Windows + with tempfile.TemporaryDirectory() as archive_dir: + try: # unpack all restorations paths (nemo checkpoints) # in nemo checkpoints all resources contain hash in name, so there should be no collisions for path in restoration_paths: @@ -484,9 +485,9 @@ def _handle_artifacts(self, model, nemo_file_folder): new_artiitem.path = "nemo:" + artifact_uniq_name new_artiitem.path_type = model_utils.ArtifactPathType.TAR_PATH model.artifacts[conf_path] = new_artiitem - finally: - # change back working directory - os.chdir(cwd) + finally: + # change back working directory + os.chdir(cwd) @staticmethod def _update_subconfigs(model: "nemo_classes.ModelPT", path2yaml_file): From 30cd3b674e18fb3427a2c5ef3c29632d97b34d9b Mon Sep 17 00:00:00 2001 From: Yang Zhang Date: Mon, 6 Feb 2023 16:25:09 -0500 Subject: [PATCH 46/73] add new lannguages to doc (#5939) Signed-off-by: Yang Zhang Signed-off-by: Jason --- .../nlp/text_normalization/wfst/wfst_text_normalization.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/source/nlp/text_normalization/wfst/wfst_text_normalization.rst b/docs/source/nlp/text_normalization/wfst/wfst_text_normalization.rst index 3abdcdbb2d57..f6411b2e6a77 100644 --- a/docs/source/nlp/text_normalization/wfst/wfst_text_normalization.rst +++ b/docs/source/nlp/text_normalization/wfst/wfst_text_normalization.rst @@ -149,12 +149,16 @@ Language Support Matrix +------------------+----------+----------+----------+--------------------+----------------------+ | Spanish | es | x | x | x | | +------------------+----------+----------+----------+--------------------+----------------------+ +| French | fr | | x | | | ++------------------+----------+----------+----------+--------------------+----------------------+ | German | de | x | x | x | | +------------------+----------+----------+----------+--------------------+----------------------+ -| French | fr | | x | | | +| Arabic | ar | x | x | | | +------------------+----------+----------+----------+--------------------+----------------------+ | Russian | ru | | x | x | | +------------------+----------+----------+----------+--------------------+----------------------+ +| Swedish | sv | x | | | | ++------------------+----------+----------+----------+--------------------+----------------------+ | Vietnamese | vi | | x | | | +------------------+----------+----------+----------+--------------------+----------------------+ | Portuguese | pt | | x | | | From 0ba361cb9f70bd3a931085011975f7b1f7d4bf1f Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Mon, 6 Feb 2023 19:23:43 -0800 Subject: [PATCH 47/73] Workarounds for ONNX export with autocast Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- .../tts/modules/attribute_prediction_model.py | 3 +- nemo/collections/tts/modules/common.py | 31 ++----------------- 2 files changed, 5 insertions(+), 29 deletions(-) diff --git a/nemo/collections/tts/modules/attribute_prediction_model.py b/nemo/collections/tts/modules/attribute_prediction_model.py index 178b47bac601..ddc45045e831 100644 --- a/nemo/collections/tts/modules/attribute_prediction_model.py +++ b/nemo/collections/tts/modules/attribute_prediction_model.py @@ -69,7 +69,8 @@ def __init__(self, in_dim, reduction_factor, norm='weightnorm', non_linearity='r def forward(self, x, lens): if self.reduction_factor > 1: - mask = get_mask_from_lengths(lens, x).unsqueeze(1) + # borisf: here, float() instead of to(x.dtype) to work arounf ONNX exporter bug + mask = get_mask_from_lengths(lens, x).unsqueeze(1).float() x = self.projection_fn(x, mask) if self.non_linearity == 'relu': x = F.relu(x) diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 78e30c9a1cbd..bed67498589a 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -100,7 +100,7 @@ def lstm(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, Tensor] ret = self.lstm_sorted(context, lens, hx=hx) return ret[unsort_ids] - def lstm_torchscript(self, context: Tensor, lens: Tensor) -> Tensor: + def lstm_nocast(self, context: Tensor, lens: Tensor) -> Tensor: dtype = context.dtype # autocast guard is only needed for Torchscript to run in Triton # (https://github.com/pytorch/pytorch/issues/89241) @@ -109,8 +109,8 @@ def lstm_torchscript(self, context: Tensor, lens: Tensor) -> Tensor: def forward(self, context: Tensor, lens: Tensor) -> Tensor: self.bilstm.flatten_parameters() - if torch.jit.is_tracing() and not torch.onnx.is_in_onnx_export(): - return self.lstm_torchscript(context, lens) + if torch.jit.is_tracing(): + return self.lstm_nocast(context, lens) return self.lstm(context, lens) @@ -712,31 +712,6 @@ def __init__(self, n_mel_channels=80, n_speaker_dim=128, n_text_channels=512, n_ ConvNorm(n_mel_channels, n_att_channels, kernel_size=1, bias=True), ) - def run_padded_sequence(self, sorted_idx, unsort_idx, lens, padded_data, recurrent_model): - """Sorts input data by previded ordering (and un-ordering) and runs the - packed data through the recurrent model - - Args: - sorted_idx (torch.tensor): 1D sorting index - unsort_idx (torch.tensor): 1D unsorting index (inverse of sorted_idx) - lens: lengths of input data (sorted in descending order) - padded_data (torch.tensor): input sequences (padded) - recurrent_model (nn.Module): recurrent model to run data through - Returns: - hidden_vectors (torch.tensor): outputs of the RNN, in the original, - unsorted, ordering - """ - - # sort the data by decreasing length using provided index - # we assume batch index is in dim=1 - padded_data = padded_data[:, sorted_idx] - padded_data = nn.utils.rnn.pack_padded_sequence(padded_data, lens) - hidden_vectors = recurrent_model(padded_data)[0] - hidden_vectors, _ = nn.utils.rnn.pad_packed_sequence(hidden_vectors) - # unsort the results at dim=1 and return - hidden_vectors = hidden_vectors[:, unsort_idx] - return hidden_vectors - def forward(self, queries, keys, query_lens, mask=None, key_lens=None, attn_prior=None): """Attention mechanism for radtts. Unlike in Flowtron, we have no restrictions such as causality etc, since we only need this during From d8bd89a77ac0eec4694d9802458ec89f00dd41f1 Mon Sep 17 00:00:00 2001 From: anmolgupt <14880251+anmolgupt@users.noreply.github.com> Date: Mon, 6 Feb 2023 15:03:02 -0800 Subject: [PATCH 48/73] fix val loss computation in megatron (#5871) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix val loss computation in megatron * Fix NaN handling during validation --------- Co-authored-by: ANMOL GUPTA Co-authored-by: Mikołaj Błaż Co-authored-by: Eric Harper Signed-off-by: Jason --- .../language_modeling/megatron_gpt_model.py | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py index dba0759e5928..d827b4871cc0 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py @@ -515,24 +515,30 @@ def fwd_output_and_loss_func(batch, model, checkpoint_activations_all_layers=Non ) def loss_func(output_tensor): - loss_for_mb = self.loss_func(loss_mask, output_tensor) + # Loss for a micro-batch (ub) + loss_for_ub = self.loss_func(loss_mask, output_tensor) if validation_step and not self.cfg.data.get('validation_drop_last', True): - num_valid_samples_in_mb = int(loss_mask.sum() / loss_mask.numel() * loss_mask.shape[0]) - loss_sum_for_mb = num_valid_samples_in_mb * loss_for_mb - loss_sum_and_mb_size_all_gpu = torch.cat( + num_valid_tokens_in_ub = loss_mask.sum() + if loss_for_ub.isnan(): + assert loss_mask.count_nonzero() == 0, 'Got NaN loss with non-empty input' + loss_sum_for_ub = torch.zeros_like(num_valid_tokens_in_ub) + else: + loss_sum_for_ub = num_valid_tokens_in_ub * loss_for_ub + + loss_sum_and_ub_size_all_gpu = torch.cat( [ - loss_sum_for_mb.clone().detach().view(1), - torch.tensor([num_valid_samples_in_mb]).cuda().clone().detach(), + loss_sum_for_ub.clone().detach().view(1), + torch.tensor([num_valid_tokens_in_ub]).cuda().clone().detach(), ] ) # Could potentially reduce num_valid_samples_in_microbatch and use that to aggregate instead of len(self._validation_ds) torch.distributed.all_reduce( - loss_sum_and_mb_size_all_gpu, group=parallel_state.get_data_parallel_group() + loss_sum_and_ub_size_all_gpu, group=parallel_state.get_data_parallel_group() ) - return loss_for_mb, {'loss_sum_and_mb_size': loss_sum_and_mb_size_all_gpu} + return loss_for_ub, {'loss_sum_and_ub_size': loss_sum_and_ub_size_all_gpu} else: - reduced_loss = average_losses_across_data_parallel_group([loss_for_mb]) - return loss_for_mb, {'avg': reduced_loss} + reduced_loss = average_losses_across_data_parallel_group([loss_for_ub]) + return loss_for_ub, {'avg': reduced_loss} return output_tensor, loss_func @@ -603,9 +609,9 @@ def validation_step(self, batch, batch_idx): else: # Get the total loss since micro batches sizes are not uniform loss_sum_tensors_list = [ - loss_sum['loss_sum_and_mb_size'] + loss_sum['loss_sum_and_ub_size'] for loss_sum in losses_reduced_per_micro_batch - if loss_sum['loss_sum_and_mb_size'][1] > 0 + if loss_sum['loss_sum_and_ub_size'][1] > 0 ] loss_sum = ( torch.vstack(loss_sum_tensors_list).sum(axis=0) From 44637ab8d53c038e9940efd27ddeb454fa99b6c8 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Tue, 7 Feb 2023 13:52:19 -0800 Subject: [PATCH 49/73] Restoring sigmas Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/models/radtts.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index 19589d2874ea..2b2b8ce3a939 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -495,8 +495,8 @@ def forward_for_export( text, speaker_id_text=speaker_id_text, speaker_id_attributes=speaker_id_attributes, - sigma=0.0, - sigma_txt=0.0, + sigma=0.7, + sigma_txt=0.7, sigma_f0=1.0, sigma_energy=1.0, f0_mean=0.0, From d30717132db8e4d667767ae2aaa2b52a04777975 Mon Sep 17 00:00:00 2001 From: Taejin Park Date: Tue, 7 Feb 2023 09:40:46 -0800 Subject: [PATCH 50/73] Add core classes and functions for online clustering diarizer part 2 (#5609) * Add core classes and functions for online clustering diarizer Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add audio to labels code Signed-off-by: Taejin Park * resolve type errors Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * added unit=tests for very short audio Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Filled all missing docstrings Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * resolved conflict and added missing docstrings Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixed unit-test errors Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix the wrongly added file - megatron_gpt_model.py Signed-off-by: Taejin Park * Fix wrongly included file - megatron_gpt_model.py Signed-off-by: Taejin Park * resolve code quality issue Signed-off-by: Taejin Park * Fixed unit-test errors and bugs Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * changed total_sec for offline_clustering toy_data in unit-tests Signed-off-by: Taejin Park * fixed merging index offset bug Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * only including part 1 files Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * removed unused function Signed-off-by: Taejin Park * fixed unused imports Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * divided nmesc_clustering.py into two and reflected first-pass comments Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * adding offline/online_clustering.py Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix code QL autocomment Signed-off-by: Taejin Park * Removed unused imports Signed-off-by: Taejin Park * Update nemo/collections/asr/parts/utils/online_clustering.py Co-authored-by: Sean Naren Signed-off-by: Taejin Park * Reflected comments Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * resolved code scanning issue Signed-off-by: Taejin Park * Adding online_diarizer.py Signed-off-by: Taejin Park * updated tests and speaker_utils Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fixed the wrong test eval Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * updating online diarizer for varialbe name change Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Reflected comments and some typo fixes in speaker_utils Signed-off-by: Taejin Park * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: Taejin Park Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Nithin Rao Co-authored-by: Sean Naren Signed-off-by: Jason --- .../collections/asr/models/online_diarizer.py | 584 +++++++++++++++ .../asr/parts/utils/speaker_utils.py | 709 +++++++++++++++--- tests/collections/asr/test_diar_utils.py | 150 +++- 3 files changed, 1320 insertions(+), 123 deletions(-) create mode 100644 nemo/collections/asr/models/online_diarizer.py diff --git a/nemo/collections/asr/models/online_diarizer.py b/nemo/collections/asr/models/online_diarizer.py new file mode 100644 index 000000000000..992489080208 --- /dev/null +++ b/nemo/collections/asr/models/online_diarizer.py @@ -0,0 +1,584 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +import time +from copy import deepcopy +from typing import Dict + +import torch +from omegaconf import DictConfig + +from nemo.collections.asr.models import ClusteringDiarizer +from nemo.collections.asr.parts.utils.offline_clustering import get_scale_interpolated_embs, split_input_data +from nemo.collections.asr.parts.utils.online_clustering import OnlineSpeakerClustering +from nemo.collections.asr.parts.utils.speaker_utils import ( + OnlineSegmentor, + audio_rttm_map, + generate_cluster_labels, + get_embs_and_timestamps, +) +from nemo.utils import logging, model_utils + +__all__ = ['OnlineClusteringDiarizer'] + + +def timeit(method): + """ + Monitor elapsed time of the corresponding function displaying the method name. + + Args: + method: function that is being measured + + Return: + `timed` function for measuring the elapsed time + """ + + def timed(*args, **kwargs): + ts = time.time() + result = method(*args, **kwargs) + te = time.time() + if 'log_time' in kwargs: + name = kwargs.get('log_name', method.__name__.upper()) + kwargs['log_time'][name] = int((te - ts) * 1000) + else: + logging.info('%2.2fms %r' % ((te - ts) * 1000, method.__name__)) + return result + + return timed + + +class OnlineClusteringDiarizer(ClusteringDiarizer): + """ + A class that enables online (streaming) clustering based diarization. + + - The instance created from `OnlineClusteringDiarizer` sets aside a certain amount of memory + to provide the upcoming inference with history information + + - There are two major modules involved: `OnlineSegmentor` and `OnlineSpeakerClustering`. + OnlineSegmentor: Take the VAD-timestamps and generate segments for each scale + OnlineSpeakerClustering: Update the entire speaker labels of the given online session + while updating the speaker labels of the streaming inputs. + + - The overall diarization process is done by calling `diarize_step` function. + `diarize_step` function goes through the following steps: + (1) Segmentation (`OnlineSegmentor` class) + (2) Embedding extraction (`_extract_online_embeddings` function call) + (3) Online speaker counting and speaker clustering (`OnlineClusteringDiarizer` class) + (4) Label generation (`generate_cluster_labels` function call) + """ + + def __init__(self, cfg: DictConfig): + super().__init__(cfg) + self.cfg = model_utils.convert_model_config_to_dict_config(cfg) + self._cfg_diarizer = self.cfg.diarizer + self.base_scale_index = max(self.multiscale_args_dict['scale_dict'].keys()) + + self.uniq_id = self._cfg_diarizer.get('uniq_id', None) + self.decimals = self._cfg_diarizer.get('decimals', 2) + self.AUDIO_RTTM_MAP = audio_rttm_map(self.cfg.diarizer.manifest_filepath) + self.sample_rate = self.cfg.sample_rate + torch.manual_seed(0) + + self._out_dir = self._cfg_diarizer.out_dir + if not os.path.exists(self._out_dir): + os.mkdir(self._out_dir) + + if torch.cuda.is_available(): + self.cuda = True + self.device = torch.device("cuda") + else: + self.cuda = False + self.device = torch.device("cpu") + + self.reset() + + # Set speaker embedding model in eval mode + self._speaker_model.eval() + + def _init_online_clustering_module(self, clustering_params): + """ + Initialize online speaker clustering module + + Attributes: + online_clus (OnlineSpeakerClustering): + Online clustering diarizer class instance + history_n (int): + History buffer size for saving history of speaker label inference + Total number of embedding vectors saved in the buffer that is kept till the end of the session + current_n (int): + Current buffer (FIFO queue) size for calculating the speaker label inference + Total number of embedding vectors saved in the FIFO queue for clustering inference + """ + self.online_clus = OnlineSpeakerClustering( + max_num_speakers=clustering_params.max_num_speakers, + max_rp_threshold=clustering_params.max_rp_threshold, + sparse_search_volume=clustering_params.sparse_search_volume, + history_buffer_size=clustering_params.history_buffer_size, + current_buffer_size=clustering_params.current_buffer_size, + ) + self.history_n = clustering_params.history_buffer_size + self.current_n = clustering_params.current_buffer_size + + self.max_num_speakers = self.online_clus.max_num_speakers + + def _init_online_segmentor_module(self, sample_rate): + """ + Initialize an online segmentor module + + Attributes: + online_segmentor (OnlineSegmentor): + online segmentation module that generates short speech segments from the VAD input + """ + self.online_segmentor = OnlineSegmentor(sample_rate) + + def _init_memory_buffer(self): + """ + Variables are kept in memory for future updates + + Attributes: + memory_margin (int): + The number of embeddings saved in the memory buffer. + This memory margin is dependent on the base scale length: margin = (buffer_length)/(base scale shift) + memory margin is automatically calculated to have minimal memory usage + memory_segment_ranges (dict): + The segment range information kept in the memory buffer + memory_segment_indexes (dict): + The segment indexes kept in the memory buffer + memory_cluster_labels (Tensor): + The cluster labels inferred in the previous diarization steps + """ + self.memory_margin = 0 + self.memory_segment_ranges = {key: [] for key in self.multiscale_args_dict['scale_dict'].keys()} + self.memory_segment_indexes = {key: [] for key in self.multiscale_args_dict['scale_dict'].keys()} + self.memory_cluster_labels = torch.tensor([]) + + def _init_temporal_major_voting_module(self, clustering_params): + """ + Variables needed for taking majority votes for speaker labels + + Attributes: + use_temporal_label_major_vote (bool): + Boolean for whether to use temporal majority voting + temporal_label_major_vote_buffer_size (int): + buffer size for majority voting + base_scale_label_dict (dict): + Dictionary containing multiple speaker labels for major voting + Speaker labels from multiple steps are saved for each segment index. + """ + self.use_temporal_label_major_vote = clustering_params.get('use_temporal_label_major_vote', False) + self.temporal_label_major_vote_buffer_size = clustering_params.get('temporal_label_major_vote_buffer_size', 1) + self.base_scale_label_dict = {} + + def _init_segment_variables(self): + """ + Initialize segment variables for each scale. + Note that we have `uniq_id` variable in case where multiple sessions are handled. + """ + self.emb_vectors = {} + self.time_stamps = {} + self.segment_range_ts = {} + self.segment_raw_audio = {} + self.segment_indexes = {} + + for scale_idx in self.multiscale_args_dict['scale_dict'].keys(): + self.multiscale_embeddings_and_timestamps[scale_idx] = [None, None] + self.emb_vectors[scale_idx] = torch.tensor([]) + self.time_stamps[scale_idx] = [] + self.segment_range_ts[scale_idx] = [] + self.segment_raw_audio[scale_idx] = [] + self.segment_indexes[scale_idx] = [] + + def _init_buffer_frame_timestamps(self): + """ + Timing variables transferred from OnlineDiarWithASR class. + Buffer is window region where input signal is kept for ASR. + Frame is window region where the actual inference ASR decoded results are updated + + Example: + buffer_len = 5.0 + frame_len = 1.0 + + |___Buffer___[___________]____________| + |____________[ Frame ]____________| + + | <- buffer_start + |____________| <- frame_start + |_____________________________________| <- buffer_end + + buffer_start = 12.0 + buffer_end = 17.0 + frame_start = 14.0 + + These timestamps and index variables are updated by OnlineDiarWithASR. + + Attributes: + frame_index (int): + Integer index of frame window + frame_start (float): + The start of the frame window + buffer_start (float): + The start of the buffer window + buffer_end (float): + The end of the buffer + """ + self.frame_index = 0 + self.frame_start = 0.0 + self.buffer_start = 0.0 + self.buffer_end = 0.0 + + def _transfer_timestamps_to_segmentor(self): + """ + Pass the timing information from streaming ASR buffers. + """ + self.online_segmentor.frame_start = self.frame_start + self.online_segmentor.buffer_start = self.buffer_start + self.online_segmentor.buffer_end = self.buffer_end + + def reset(self): + """ + Reset all the necessary variables and initialize classes. + + Attributes: + n_embed_seg_len (int): + Number of segments needed for 1 second of input time-series signal + """ + self.n_embed_seg_len = int( + self.sample_rate * self.multiscale_args_dict['scale_dict'][self.base_scale_index][0] + ) + self._init_segment_variables() + self._init_online_clustering_module(self._cfg_diarizer.clustering.parameters) + self._init_online_segmentor_module(self.cfg.sample_rate) + self._init_memory_buffer() + self._init_temporal_major_voting_module(self._cfg_diarizer.clustering.parameters) + self._init_buffer_frame_timestamps() + + def _clear_memory(self, scale_idx: int): + """ + Calculate how many segments should be removed from memory (`memory_margin`) and + save the necessary information. + `keep_range` determines how many segments and their corresponding embedding, raw audio, + timestamps in the memory of the online diarizer instance. + + Args: + scale_idx (int): + Scale index in integer type + """ + base_scale_shift = self.multiscale_args_dict['scale_dict'][self.base_scale_index][1] + self.memory_margin = int((self.buffer_end - self.buffer_start) / base_scale_shift) + + scale_buffer_size = int( + len(set(self.scale_mapping_dict[scale_idx].tolist())) + / len(set(self.scale_mapping_dict[self.base_scale_index].tolist())) + * (self.history_n + self.current_n) + ) + keep_range = scale_buffer_size + self.memory_margin + self.emb_vectors[scale_idx] = self.emb_vectors[scale_idx][-keep_range:] + self.segment_raw_audio[scale_idx] = self.segment_raw_audio[scale_idx][-keep_range:] + self.segment_range_ts[scale_idx] = self.segment_range_ts[scale_idx][-keep_range:] + self.segment_indexes[scale_idx] = self.segment_indexes[scale_idx][-keep_range:] + + @timeit + def _temporal_label_major_vote(self) -> torch.Tensor: + """ + Take a majority voting for every segment on temporal steps. This feature significantly reduces the error coming + from unstable speaker counting in the beginning of sessions. + + Returns: + maj_vote_labels (list): + List containing the major-voted speaker labels on temporal domain + """ + maj_vote_labels = [] + for seg_idx in self.memory_segment_indexes[self.base_scale_index]: + if seg_idx not in self.base_scale_label_dict: + self.base_scale_label_dict[seg_idx] = [self.memory_cluster_labels[seg_idx]] + else: + while len(self.base_scale_label_dict[seg_idx]) > self.temporal_label_major_vote_buffer_size: + self.base_scale_label_dict[seg_idx].pop(0) + self.base_scale_label_dict[seg_idx].append(self.memory_cluster_labels[seg_idx]) + + maj_vote_labels.append(torch.mode(torch.tensor(self.base_scale_label_dict[seg_idx]))[0].item()) + return maj_vote_labels + + def save_history_data(self, scale_idx: int, total_cluster_labels: torch.Tensor, is_online: bool) -> torch.Tensor: + """ + Save the temporary input to the class memory buffer. + + - Clustering is done for (hist_N + curr_N) number of embeddings. + - Thus, we need to remove the clustering results on the embedding memory. + - If self.diar.history_buffer_seg_end is not None, that indicates streaming diarization system + is starting to save embeddings to its memory. Thus, the new incoming clustering label should be separated. + - If `is_online = True`, old embeddings outside the window are removed to save GPU memory. + + Args: + scale_idx (int): + Scale index in integer + total_cluster_labels (Tensor): + The speaker labels from the beginning of the session to the current position + is_online (bool) + Boolean variable that indicates whether the system is currently in online mode or not + + Returns: + cluster_label_hyp (Tensor): + Majority voted speaker labels over multiple inferences + """ + total_cluster_labels = total_cluster_labels.tolist() + + if not is_online: + self.memory_segment_ranges[scale_idx] = deepcopy(self.segment_range_ts[scale_idx]) + self.memory_segment_indexes[scale_idx] = deepcopy(self.segment_indexes[scale_idx]) + if scale_idx == self.base_scale_index: + self.memory_cluster_labels = deepcopy(total_cluster_labels) + + # Only if there are newly obtained embeddings, update ranges and embeddings. + elif self.segment_indexes[scale_idx][-1] > self.memory_segment_indexes[scale_idx][-1]: + # Get the global index of the first segment we want to keep in the buffer + global_stt_idx = max(max(self.memory_segment_indexes[scale_idx]) - self.memory_margin, 0) + + # Convert global index global_stt_idx to buffer index buffer_stt_idx + segment_indexes_mat = torch.tensor(self.segment_indexes[scale_idx]) + buffer_stt_idx = torch.where(segment_indexes_mat == global_stt_idx)[0][0] + + self.memory_segment_ranges[scale_idx][global_stt_idx:] = deepcopy( + self.segment_range_ts[scale_idx][buffer_stt_idx:] + ) + self.memory_segment_indexes[scale_idx][global_stt_idx:] = deepcopy( + self.segment_indexes[scale_idx][buffer_stt_idx:] + ) + if scale_idx == self.base_scale_index: + self.memory_cluster_labels[global_stt_idx:] = deepcopy(total_cluster_labels[global_stt_idx:]) + if len(self.memory_cluster_labels) != len(self.memory_segment_ranges[scale_idx]): + raise ValueError( + "self.memory_cluster_labels and self.memory_segment_ranges should always have the same length, " + f"but they have {len(self.memory_cluster_labels)} and {len(self.memory_segment_ranges[scale_idx])}." + ) + + # Remove unnecessary old values + self._clear_memory(scale_idx) + + if not ( + len(self.emb_vectors[scale_idx]) + == len(self.segment_raw_audio[scale_idx]) + == len(self.segment_indexes[scale_idx]) + == len(self.segment_range_ts[scale_idx]) + ): + raise ValueError( + "self.emb_vectors, self.segment_raw_audio, self.segment_indexes, and self.segment_range_ts " + "should always have the same length, " + f"but they have {len(self.emb_vectors[scale_idx])}, {len(self.segment_raw_audio[scale_idx])}, " + f"{len(self.segment_indexes[scale_idx])}, and {len(self.segment_range_ts[scale_idx])}, respectively." + ) + + if self.use_temporal_label_major_vote: + cluster_label_hyp = self._temporal_label_major_vote() + else: + cluster_label_hyp = self.memory_cluster_labels + return cluster_label_hyp + + @timeit + @torch.no_grad() + def _run_embedding_extractor(self, audio_signal: torch.Tensor) -> torch.Tensor: + """ + Call `forward` function of the speaker embedding model. + + Args: + audio_signal (Tensor): + Torch tensor containing time-series signal + + Returns: + Speaker embedding vectors for the given time-series input `audio_signal`. + """ + audio_signal = torch.stack(audio_signal).float().to(self.device) + audio_signal_lens = torch.tensor([self.n_embed_seg_len for k in range(audio_signal.shape[0])]).to(self.device) + _, torch_embs = self._speaker_model.forward(input_signal=audio_signal, input_signal_length=audio_signal_lens) + return torch_embs + + @timeit + def _extract_online_embeddings( + self, audio_signal: torch.Tensor, segment_ranges: torch.Tensor, embeddings + ) -> torch.Tensor: + """ + Incrementally extract speaker embeddings based on `audio_signal` and `segment_ranges` variables. + Unlike offline speaker diarization, speaker embedding and subsegment ranges are not saved to disk. + Measures the mismatch between `segment_ranges` and `embeddings` then extract the necessary amount of + speaker embeddings. + + Args: + audio_signal (Tensor): + Torch tensor containing time-series audio signal + embeddings (Tensor): + Previously existing Torch tensor containing speaker embedding vector + segment_ranges(Tensor): + Torch tensor containing the start and end of each segment + + Returns: + embeddings (Tensor): + Concatenated speaker embedding vectors that match segment range information in `segment_ranges`. + """ + stt_idx = 0 if embeddings is None else embeddings.shape[0] + end_idx = len(segment_ranges) + + if end_idx > stt_idx: + torch_embs = self._run_embedding_extractor(audio_signal[stt_idx:end_idx]) + if embeddings is None: + embeddings = torch_embs + else: + embeddings = torch.vstack((embeddings[:stt_idx, :], torch_embs)) + elif end_idx < stt_idx: + embeddings = embeddings[: len(segment_ranges)] + + if len(segment_ranges) != embeddings.shape[0]: + raise ValueError("Segment ranges and embeddings shapes do not match.") + return embeddings + + @timeit + def _perform_online_clustering( + self, uniq_embs_and_timestamps: Dict[str, torch.Tensor], cuda=False, + ) -> torch.Tensor: + """ + Launch online clustering for `uniq_embs_and_timestamps` input variable. + + Args: + uniq_embs_and_timestamps (dict): + Dictionary containing embeddings, timestamps and multiscale weights. + If uniq_embs_and_timestamps contains only one scale, single scale diarization + is performed. + cuda (bool): + Boolean indicator for cuda usages + """ + device = torch.device("cuda") if cuda else torch.device("cpu") + + # Get base-scale (the highest index) information from uniq_embs_and_timestamps. + embeddings_in_scales, timestamps_in_scales = split_input_data( + embeddings_in_scales=uniq_embs_and_timestamps['embeddings'], + timestamps_in_scales=uniq_embs_and_timestamps['timestamps'], + multiscale_segment_counts=uniq_embs_and_timestamps['multiscale_segment_counts'], + ) + + curr_emb, self.scale_mapping_dict = get_scale_interpolated_embs( + multiscale_weights=uniq_embs_and_timestamps['multiscale_weights'], + embeddings_in_scales=embeddings_in_scales, + timestamps_in_scales=timestamps_in_scales, + device=device, + ) + + concat_emb, add_new = self.online_clus.get_reduced_mat( + emb_in=curr_emb, base_segment_indexes=self.segment_indexes[self.base_scale_index] + ) + + # Perform online version of clustering with history-concatenated embedding vectors + Y_concat = self.online_clus.forward_infer(emb=concat_emb, frame_index=self.frame_index, cuda=cuda,) + + # Match the permutation of the newly obtained speaker labels and the previous labels + merged_clus_labels = self.online_clus.match_labels(Y_concat, add_new) + + # Update history data + for scale_idx, (window, shift) in self.multiscale_args_dict['scale_dict'].items(): + cluster_label_hyp = self.save_history_data(scale_idx, merged_clus_labels, self.online_clus.is_online) + + return cluster_label_hyp + + def _get_interim_output(self) -> torch.Tensor: + """ + In case buffer is not filled or there is no speech activity in the input, generate temporary output. + + Returns: + diar_hyp (Tensor): Speaker labels based on the previously saved segments and speaker labels + """ + if len(self.memory_cluster_labels) == 0 or self.buffer_start < 0: + diar_hyp, _ = generate_cluster_labels([[0.0, self.total_buffer_in_secs]], [0]) + else: + diar_hyp, _ = generate_cluster_labels( + self.memory_segment_ranges[self.base_scale_index], self.memory_cluster_labels + ) + return diar_hyp + + @timeit + def diarize_step(self, audio_buffer: torch.Tensor, vad_timestamps: torch.Tensor) -> torch.Tensor: + """ + A function for a unit diarization step. Each diarization step goes through the following steps: + + 1. Segmentation: + Using `OnlineSegmentor` class, call `run_online_segmentation` method to get the segments. + 2. Embedding Extraction: + Extract multiscale embeddings from the extracted speech segments. + 3. Online Clustering & Counting + Perform online speaker clustering by using `OnlineSpeakerClustering` class. + 4. Generate speaker labels: + Generate start and end timestamps of speaker labels based on the diarization results. + + c.f.) Also see method `diarize` in `ClusteringDiarizer` class. + + Args: + audio_buffer (Tensor): + Tensor variable containing the time series signal at the current frame + Dimensions: (Number of audio time-series samples) x 1 + vad_timestamps (Tensor): + List containing VAD timestamps. + Dimensions: (Number of segments) x 2 + Example: + >>> vad_timestamps = torch.Tensor([[0.05, 2.52], [3.12, 6.85]]) + + Returns: + diar_hyp (Tensor): + Speaker label hypothesis from the start of the session to the current position + """ + self._transfer_timestamps_to_segmentor() + + # In case buffer is not filled or there is no speech activity in the input + if self.buffer_start < 0 or len(vad_timestamps) == 0: + return self._get_interim_output() + + # Segmentation: (c.f. see `diarize` function in ClusteringDiarizer class) + for scale_idx, (window, shift) in self.multiscale_args_dict['scale_dict'].items(): + + # Step 1: Get subsegments for embedding extraction. + audio_sigs, segment_ranges, range_inds = self.online_segmentor.run_online_segmentation( + audio_buffer=audio_buffer, + vad_timestamps=vad_timestamps, + segment_raw_audio=self.segment_raw_audio[scale_idx], + segment_range_ts=self.segment_range_ts[scale_idx], + segment_indexes=self.segment_indexes[scale_idx], + window=window, + shift=shift, + ) + self.segment_raw_audio[scale_idx] = audio_sigs + self.segment_range_ts[scale_idx] = segment_ranges + self.segment_indexes[scale_idx] = range_inds + + # Step 2-1: Extract speaker embeddings from the extracted subsegment timestamps. + embeddings = self._extract_online_embeddings( + audio_signal=self.segment_raw_audio[scale_idx], + segment_ranges=self.segment_range_ts[scale_idx], + embeddings=self.emb_vectors[scale_idx], + ) + + # Step 2-2:Save the embeddings and segmentation timestamps in memory + self.emb_vectors[scale_idx] = embeddings + + self.multiscale_embeddings_and_timestamps[scale_idx] = [ + {self.uniq_id: embeddings}, + {self.uniq_id: segment_ranges}, + ] + + embs_and_timestamps = get_embs_and_timestamps( + self.multiscale_embeddings_and_timestamps, self.multiscale_args_dict + ) + + # Step 3 - Clustering: Perform an online version of clustering algorithm + cluster_label_hyp = self._perform_online_clustering(embs_and_timestamps[self.uniq_id], cuda=self.cuda,) + + # Step 4: Generate RTTM style diarization labels from segment ranges and cluster labels + diar_hyp, _ = generate_cluster_labels(self.memory_segment_ranges[self.base_scale_index], cluster_label_hyp) + return diar_hyp diff --git a/nemo/collections/asr/parts/utils/speaker_utils.py b/nemo/collections/asr/parts/utils/speaker_utils.py index 010237e9eeb3..6baa6e24310a 100644 --- a/nemo/collections/asr/parts/utils/speaker_utils.py +++ b/nemo/collections/asr/parts/utils/speaker_utils.py @@ -17,7 +17,6 @@ import os import shutil from copy import deepcopy -from functools import reduce from typing import Dict, List, Tuple, Union import numpy as np @@ -27,6 +26,7 @@ from pyannote.core import Annotation, Segment from tqdm import tqdm +from nemo.collections.asr.data.audio_to_label import repeat_signal from nemo.collections.asr.parts.utils.offline_clustering import SpeakerClustering, get_argmin_mat, split_input_data from nemo.utils import logging @@ -136,7 +136,7 @@ def parse_scale_configs(window_lengths_in_sec, shift_lengths_in_sec, multiscale_ Multiscale setting (base scale - window_length 0.5 s and shift_length 0.25): parameters.window_length_in_sec=[1.5,1.0,0.5] parameters.shift_length_in_sec=[0.75,0.5,0.25] - parameters.multiscale_weights=[0.33,0.33,0.33] + parameters.multiscale_weights=[1,1,1] In addition, you can also specify session-by-session multiscale weight. In this case, each dictionary key points to different weights. @@ -399,14 +399,45 @@ def write_cluster_labels(base_scale_idx, lines_cluster_labels, out_rttm_dir): f.write(clus_label_line) +def generate_cluster_labels(segment_ranges: List[str], cluster_labels: List[int]): + """ + Generate cluster (speaker labels) from the segment_range list and cluster label list. + + Args: + segment_ranges (list): + List containing intervals (start and end timestapms, ranges) of each segment + cluster_labels (list): + List containing a cluster label sequence + + Returns: + diar_hyp (list): + List containing merged speaker-turn-level timestamps and labels in string format + Example: + >>> diar_hyp = ['0.0 4.375 speaker_1', '4.375 5.125 speaker_0', ...] + + lines (list) + List containing raw segment-level timestamps and labels in raw digits + >>> diar_hyp = ['0.0 0.25 speaker_1', '0.25 0.5 speaker_1', ..., '4.125 4.375 speaker_1'] + """ + lines = [] + for idx, label in enumerate(cluster_labels): + tag = 'speaker_' + str(label) + stt, end = segment_ranges[idx] + lines.append(f"{stt} {end} {tag}") + cont_lines = get_contiguous_stamps(lines) + diar_hyp = merge_stamps(cont_lines) + return diar_hyp, lines + + def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, clustering_params): """ Performs spectral clustering on embeddings with time stamps generated from VAD output Args: embs_and_timestamps (dict): This dictionary contains the following items indexed by unique IDs. - 'embeddings' : Embeddings with key as unique_id - 'timestamps' : Time stamps list for each audio recording + 'embeddings' : Tensor containing embeddings. Dimensions:(# of embs) x (emb. dimension) + 'timestamps' : Tensor containing ime stamps list for each audio recording + 'multiscale_segment_counts' : Tensor containing the number of segments for each scale AUDIO_RTTM_MAP (dict): AUDIO_RTTM_MAP for mapping unique id with audio file path and rttm path out_rttm_dir (str): Path to write predicted rttms clustering_params (dict): clustering parameters provided through config that contains max_num_speakers (int), @@ -467,13 +498,7 @@ def perform_clustering(embs_and_timestamps, AUDIO_RTTM_MAP, out_rttm_dir, cluste if len(cluster_labels) != timestamps.shape[0]: raise ValueError("Mismatch of length between cluster_labels and timestamps.") - lines = [] - for idx, label in enumerate(cluster_labels): - tag = 'speaker_' + str(label) - lines.append(f"{timestamps[idx][0]:.3f} {timestamps[idx][1]:.3f} {tag}") - - a = get_contiguous_stamps(lines) - labels = merge_stamps(a) + labels, lines = generate_cluster_labels(timestamps, cluster_labels) if out_rttm_dir: labels_to_rttmfile(labels, uniq_id, out_rttm_dir) @@ -535,7 +560,7 @@ def get_offset_and_duration(AUDIO_RTTM_MAP, uniq_id, decimals=5): return offset, duration -def write_overlap_segments(outfile, AUDIO_RTTM_MAP, uniq_id, overlap_range_list, include_uniq_id, decimals=5): +def write_overlap_segments(outfile, AUDIO_RTTM_MAP, uniq_id, overlap_range_list, decimals=5): """ Write the json dictionary into the specified manifest file. @@ -548,6 +573,8 @@ def write_overlap_segments(outfile, AUDIO_RTTM_MAP, uniq_id, overlap_range_list, Unique file id overlap_range_list (list): List containing overlapping ranges between target and source. + decimals (int): + Number of decimals to round the offset and duration values. """ audio_path = AUDIO_RTTM_MAP[uniq_id]['audio_filepath'] for (stt, end) in overlap_range_list: @@ -568,6 +595,7 @@ def read_rttm_lines(rttm_file_path): Args: rttm_file_path (str): + An absolute path to an RTTM file Returns: lines (list): @@ -585,23 +613,6 @@ def read_rttm_lines(rttm_file_path): return lines -def isOverlap(rangeA, rangeB): - """ - Check whether two ranges have overlap. - Args: - rangeA (list, tuple): - List or tuple containing start and end value in float. - rangeB (list, tuple): - List or tuple containing start and end value in float. - Returns: - (bool): - Boolean that indicates whether the input ranges have overlap. - """ - start1, end1 = rangeA - start2, end2 = rangeB - return end1 > start2 and end2 > start1 - - def validate_vad_manifest(AUDIO_RTTM_MAP, vad_manifest): """ This function will check the valid speech segments in the manifest file which is either @@ -627,136 +638,168 @@ def validate_vad_manifest(AUDIO_RTTM_MAP, vad_manifest): raise ValueError("All files present in manifest contains silence, aborting next steps") -def getOverlapRange(rangeA, rangeB): +@torch.jit.script +def is_overlap(rangeA: List[float], rangeB: List[float]) -> bool: """ - Calculate the overlapping range between rangeA and rangeB. + Check whether two ranges have overlap. + Args: rangeA (list, tuple): List or tuple containing start and end value in float. rangeB (list, tuple): List or tuple containing start and end value in float. Returns: - (list): - List containing the overlapping range between rangeA and rangeB. + (bool): + Boolean that indicates whether the input ranges have overlap. """ - assert isOverlap(rangeA, rangeB), f"There is no overlap between rangeA:{rangeA} and rangeB:{rangeB}" - return [max(rangeA[0], rangeB[0]), min(rangeA[1], rangeB[1])] + start1, end1 = rangeA[0], rangeA[1] + start2, end2 = rangeB[0], rangeB[1] + return end1 > start2 and end2 > start1 -def combine_float_overlaps(ranges, decimals=5, margin=2): +@torch.jit.script +def get_overlap_range(rangeA: List[float], rangeB: List[float]): """ - Combine overlaps with floating point numbers. Since neighboring integers are considered as continuous range, - we need to add margin to the starting range before merging then subtract margin from the result range. + Calculate the overlapping range between rangeA and rangeB. Args: - ranges (list): - List containing ranges. - Example: [(10.2, 10.83), (10.42, 10.91), (10.45, 12.09)] - decimals (int): - Number of rounding decimals - margin (int): - margin for determining overlap of the two ranges when ranges are converted to integer ranges. - Default is margin=2 which follows the python index convention. - - Examples: - If margin is 0: - [(1, 10), (10, 20)] -> [(1, 20)] - [(1, 10), (11, 20)] -> [(1, 20)] - If margin is 1: - [(1, 10), (10, 20)] -> [(1, 20)] - [(1, 10), (11, 20)] -> [(1, 10), (11, 20)] - If margin is 2: - [(1, 10), (10, 20)] -> [(1, 10), (10, 20)] - [(1, 10), (11, 20)] -> [(1, 10), (11, 20)] + rangeA (list, tuple): + List or tuple containing start and end value in float. + rangeB (list, tuple): + List or tuple containing start and end value in float. Returns: - merged_list (list): - List containing the combined ranges. - Example: [(10.2, 12.09)] + (list): + List containing the overlapping range between rangeA and rangeB. """ - ranges_int = [] - for x in ranges: - stt, end = fl2int(x[0], decimals) + margin, fl2int(x[1], decimals) - if stt == end: - logging.warning(f"The range {stt}:{end} is too short to be combined thus skipped.") - else: - ranges_int.append([stt, end]) - merged_ranges = combine_int_overlaps(ranges_int) - merged_ranges = [[int2fl(x[0] - margin, decimals), int2fl(x[1], decimals)] for x in merged_ranges] - return merged_ranges + assert is_overlap(rangeA, rangeB), f"There is no overlap between rangeA:{rangeA} and rangeB:{rangeB}" + return [max(rangeA[0], rangeB[0]), min(rangeA[1], rangeB[1])] -def combine_int_overlaps(ranges): +@torch.jit.script +def merge_int_intervals(intervals_in: List[List[int]]) -> List[List[int]]: """ + Interval merging algorithm which has `O(N*logN)` time complexity. (N is number of intervals) Merge the range pairs if there is overlap exists between the given ranges. This algorithm needs a sorted range list in terms of the start time. Note that neighboring numbers lead to a merged range. + + Note: This function is designed to be compiled/imported with `@torch.jit.script` decorator. + Example: - [(1, 10), (11, 20)] -> [(1, 20)] + input: [(1, 10), (11, 20)] + output: [(1, 20)] Refer to the original code at https://stackoverflow.com/a/59378428 Args: - ranges(list): + intervals_in (list): List containing ranges. - Example: [(102, 103), (104, 109), (107, 120)] + Example: + >>> intervals_in + [(102, 103), (104, 109), (107, 120)] + Returns: merged_list (list): List containing the combined ranges. - Example: [(102, 120)] - + Example: + >>> merged_list + [(102, 120)] """ - ranges = sorted(ranges, key=lambda x: x[0]) - merged_list = reduce( - lambda x, element: x[:-1:] + [(min(*x[-1], *element), max(*x[-1], *element))] - if x[-1][1] >= element[0] - 1 - else x + [element], - ranges[1::], - ranges[0:1], - ) - return merged_list + num_intervals = len(intervals_in) + if num_intervals == 0: + return [] + elif num_intervals == 1: + return intervals_in + else: + merged_list: List[List[int]] = [] + stt2: int = 0 + end2: int = 0 + + intervals_in = [[int(x[0]), int(x[1])] for x in intervals_in] + interval_tensor: torch.Tensor = torch.tensor(intervals_in) + _sorted, _ = torch.sort(interval_tensor, dim=0) + _sorted_int: List[List[int]] = [[int(x[0]), int(x[1])] for x in _sorted.cpu()] + intervals: List[List[int]] = _sorted_int + + start, end = intervals[0][0], intervals[0][1] + for i in range(1, num_intervals): + stt2, end2 = intervals[i][0], intervals[i][1] + if end >= stt2: + end = max(end2, end) + else: + start, end = int(start), int(end) + merged_list.append([start, end]) + start = stt2 + end = max(end2, end) + + start, end = int(start), int(end) + merged_list.append([start, end]) + return merged_list -def fl2int(x, decimals=3): +@torch.jit.script +def fl2int(x: float, decimals: int = 3) -> int: """ Convert floating point number to integer. """ - return int(round(x * pow(10, decimals))) + return torch.round(torch.tensor([x * (10 ** decimals)]), decimals=0).int().item() -def int2fl(x, decimals=3): +@torch.jit.script +def int2fl(x: int, decimals: int = 3) -> float: """ Convert integer to floating point number. """ - return round(float(x / pow(10, decimals)), int(decimals)) + return torch.round(torch.tensor([x / (10 ** decimals)]), decimals=decimals).item() -def getMergedRanges(label_list_A: List, label_list_B: List, decimals: int = 3) -> List: +@torch.jit.script +def merge_float_intervals(ranges: List[List[float]], decimals: int = 5, margin: int = 2) -> List[List[float]]: """ - Calculate the merged ranges between label_list_A and label_list_B. + Combine overlaps with floating point numbers. Since neighboring integers are considered as continuous range, + we need to add margin to the starting range before merging then subtract margin from the result range. Args: - label_list_A (list): - List containing ranges (start and end values) - label_list_B (list): - List containing ranges (start and end values) - Returns: - (list): - List containing the merged ranges + ranges (list): + List containing ranges. + Example: [(10.2, 10.83), (10.42, 10.91), (10.45, 12.09)] + decimals (int): + Number of rounding decimals + margin (int): + margin for determining overlap of the two ranges when ranges are converted to integer ranges. + Default is margin=2 which follows the python index convention. + Examples: + If margin is 0: + [(1, 10), (10, 20)] -> [(1, 20)] + [(1, 10), (11, 20)] -> [(1, 20)] + If margin is 1: + [(1, 10), (10, 20)] -> [(1, 20)] + [(1, 10), (11, 20)] -> [(1, 10), (11, 20)] + If margin is 2: + [(1, 10), (10, 20)] -> [(1, 10), (10, 20)] + [(1, 10), (11, 20)] -> [(1, 10), (11, 20)] + + Returns: + merged_list (list): + List containing the combined ranges. + Example: [(10.2, 12.09)] """ - if label_list_A == [] and label_list_B != []: - return label_list_B - elif label_list_A != [] and label_list_B == []: - return label_list_A - else: - label_list_A = [[fl2int(x[0] + 1, decimals), fl2int(x[1], decimals)] for x in label_list_A] - label_list_B = [[fl2int(x[0] + 1, decimals), fl2int(x[1], decimals)] for x in label_list_B] - combined = combine_int_overlaps(label_list_A + label_list_B) - return [[int2fl(x[0] - 1, decimals), int2fl(x[1], decimals)] for x in combined] + ranges_int: List[List[int]] = [] + merged_ranges_int: List[List[int]] = [] + for x in ranges: + stt, end = int(fl2int(x[0], decimals) + margin), int(fl2int(x[1], decimals)) + if stt < end: + ranges_int.append([stt, end]) + merged_ranges_int = merge_int_intervals(ranges_int) + merged_ranges_float: List[List[float]] = [] + merged_ranges_float = [[int2fl(x[0] - margin, decimals), int2fl(x[1], decimals)] for x in merged_ranges_int] + return merged_ranges_float -def getSubRangeList(target_range, source_range_list) -> List: +@torch.jit.script +def get_sub_range_list(target_range: List[float], source_range_list: List[List[float]]) -> List[List[float]]: """ Get the ranges that has overlaps with the target range from the source_range_list. @@ -774,19 +817,19 @@ def getSubRangeList(target_range, source_range_list) -> List: target_range = [(start, end)] source_range_list (list): List containing the subranges that need to be selected. - source_ragne = [(start0, end0), (start1, end1), ...] + source_range = [(start0, end0), (start1, end1), ...] Returns: out_range (list): List containing the overlap between target_range and source_range_list. """ - if target_range == []: + if len(target_range) == 0: return [] else: - out_range = [] + out_range: List[List[float]] = [] for s_range in source_range_list: - if isOverlap(s_range, target_range): - ovl_range = getOverlapRange(s_range, target_range) + if is_overlap(s_range, target_range): + ovl_range = get_overlap_range(s_range, target_range) out_range.append(ovl_range) return out_range @@ -801,7 +844,7 @@ def write_rttm2manifest( Args: AUDIO_RTTM_MAP (dict): - Dictionary containing keys to uniqnames, that contains audio filepath and rttm_filepath as its contents, + Dictionary containing keys to unique names, that contains audio filepath and rttm_filepath as its contents, these are used to extract oracle vad timestamps. manifest (str): The path to the output manifest file. @@ -819,16 +862,16 @@ def write_rttm2manifest( for line in rttm_lines: start, dur = get_vad_out_from_rttm_line(line) vad_start_end_list_raw.append([start, start + dur]) - vad_start_end_list = combine_float_overlaps(vad_start_end_list_raw, decimals) + vad_start_end_list = merge_float_intervals(vad_start_end_list_raw, decimals) if len(vad_start_end_list) == 0: logging.warning(f"File ID: {uniq_id}: The VAD label is not containing any speech segments.") elif duration <= 0: logging.warning(f"File ID: {uniq_id}: The audio file has negative or zero duration.") else: - overlap_range_list = getSubRangeList( + overlap_range_list = get_sub_range_list( source_range_list=vad_start_end_list, target_range=[offset, offset + duration] ) - write_overlap_segments(outfile, AUDIO_RTTM_MAP, uniq_id, overlap_range_list, include_uniq_id, decimals) + write_overlap_segments(outfile, AUDIO_RTTM_MAP, uniq_id, overlap_range_list, decimals) return manifest_file @@ -886,7 +929,7 @@ def segments_manifest_to_subsegments_manifest( return subsegments_manifest_file -def get_subsegments(offset: float, window: float, shift: float, duration: float): +def get_subsegments(offset: float, window: float, shift: float, duration: float) -> List[List[float]]: """ Return subsegments from a segment of audio file Args: @@ -897,7 +940,7 @@ def get_subsegments(offset: float, window: float, shift: float, duration: float) Returns: subsegments (List[tuple[float, float]]): subsegments generated for the segments as list of tuple of start and duration of each subsegment """ - subsegments = [] + subsegments: List[List[float]] = [] start = offset slice_end = start + duration base = math.ceil((duration - window) / shift) @@ -906,12 +949,311 @@ def get_subsegments(offset: float, window: float, shift: float, duration: float) end = start + window if end > slice_end: end = slice_end - subsegments.append((start, end - start)) + subsegments.append([start, end - start]) start = offset + (slice_id + 1) * shift - return subsegments +@torch.jit.script +def get_target_sig(sig, start_sec: float, end_sec: float, slice_length: int, sample_rate: int,) -> torch.Tensor: + """ + Extract time-series signal from the given audio buffer based on the start and end + timestamps. + + Args: + start_sec (float): + Start of the targeted segments in second + end_sec (float): + Start of the targeted segments in second + slice_length (int): + Length of the entire audio segment that the samples are extracted from + sample_rate (int): + Sampling rate of the time-series audio signal + + Returns: + (Tensor) Trimmed ime-series audio signal samples + """ + start_idx = int(start_sec * sample_rate) + end_idx = min(int(end_sec * sample_rate), int(slice_length + start_idx)) + return sig[start_idx:end_idx] + + +@torch.jit.script +def check_ranges(range_tensor): + """ + Check whether the range list has any faulty timestamp order. + + Args: + range_tensor (list): + List containing the start and end time of the segments. + Example: + >>> range_tensor = [[0.5, 3.12], [3.51, 7.26], ... ] + """ + for k in range(range_tensor.shape[0]): + range_tup = range_tensor[k] + if range_tup[1] < range_tup[0]: + raise ValueError("Range start time should be preceding the end time but we got: {range_tup}") + return True + + +@torch.jit.script +def tensor_to_list(range_tensor: torch.Tensor) -> List[List[float]]: + """ + For online segmentation. Force the list elements to be float type. + """ + return [[float(range_tensor[k][0]), float(range_tensor[k][1])] for k in range(range_tensor.shape[0])] + + +@torch.jit.script +def get_speech_labels_for_update( + frame_start: float, + buffer_end: float, + vad_timestamps: torch.Tensor, + cumulative_speech_labels: torch.Tensor, + cursor_for_old_segments: float, +) -> Tuple[torch.Tensor, torch.Tensor]: + """ + Bring the new speech labels from the current buffer. Followingly: + + 1. Concatenate the old speech labels from self.cumulative_speech_labels for the overlapped region. + - This goes to new_speech_labels. + 2. Update the new 1 sec of speech label (speech_label_for_new_segments) to self.cumulative_speech_labels. + 3. Return the speech label from cursor_for_old_segments to buffer end. + + Args: + frame_start (float): + Start of the middle audio chunk in the audio buffer + buffer_end (float): + End of the audio buffer + vad_timestamps (Tensor): + Tensor containing VAD intervals (start and end timestamps) + cumulative_speech_labels (torch.Tensor): + Cumulative speech/non-speech timestamps (equivalent to VAD timestamps) + cursor_for_old_segments (float): + Floating point number that indicates the point where new segments should replace + the old segments + + Returns: + speech_label_for_new_segments (Tensor): + The intervals (start and end) timestamps where the new incoming speech segments should + be collected from + cumulative_speech_labels (Tensor): + Cumulative speech/non-speech timestamps (equivalent to VAD timestamps) with newly added + speech/non-speech timestamps from the `vad_timestamps` input + """ + update_overlap_range: List[float] = [] + if cursor_for_old_segments < frame_start: + update_overlap_range = [float(cursor_for_old_segments), float(frame_start)] + + # Get VAD timestamps that are in (frame_start, buffer_end) range + vad_timestamps = tensor_to_list(vad_timestamps) + cumulative_speech_labels = tensor_to_list(cumulative_speech_labels) + new_incoming_speech_labels = get_sub_range_list( + target_range=[float(frame_start), float(buffer_end)], source_range_list=vad_timestamps + ) + + # Update the speech label by including overlapping region with the previous output + update_overlap_speech_labels = get_sub_range_list( + target_range=update_overlap_range, source_range_list=cumulative_speech_labels + ) + + # Speech segments for embedding extractions + speech_label_for_new_segments = merge_float_intervals( + update_overlap_speech_labels + new_incoming_speech_labels, margin=0 + ) + + # Keep cumulative VAD labels for the future use + cumulative_speech_labels = merge_float_intervals(cumulative_speech_labels + new_incoming_speech_labels, margin=0) + + # Convert the lists back to type torch.Tensor + speech_label_for_new_segments = torch.tensor(speech_label_for_new_segments) + cumulative_speech_labels = torch.tensor(cumulative_speech_labels) + + return speech_label_for_new_segments, cumulative_speech_labels + + +@torch.jit.script +def get_new_cursor_for_update(frame_start: float, segment_range_ts: List[List[float]],) -> Tuple[float, int]: + """ + For online speaker diarization. + Remove the old segments that overlap with the new frame (self.frame_start) + cursor_for_old_segments is set to the onset of the t_range popped lastly. + + Args: + frame_start (float): + Start of streaming pipeline frame + segment_range_ts (float): + Interval (start and end timestamps) of the targeted segments + + Returns: + cursor_for_old_segments (float): + Floating point number that indicates the point where new segments should replace + the old segments + cursor_index (int): + The index of the first newly accepted segments + """ + cursor_for_old_segments = frame_start + cursor_index: int = len(segment_range_ts) + count = 0 + while True and len(segment_range_ts) > 0: + t_range = segment_range_ts[-1 * (count + 1)] + if frame_start <= t_range[1]: + count += 1 + cursor_for_old_segments = t_range[0] + else: + break + cursor_index = len(segment_range_ts) - count + return cursor_for_old_segments, cursor_index + + +@torch.jit.script +def get_online_segments_from_slices( + sig: torch.Tensor, + buffer_start: float, + buffer_end: float, + subsegments: List[List[float]], + ind_offset: int, + window: float, + sample_rate: int, +) -> Tuple[int, List[torch.Tensor], List[List[float]], List[int]]: + """ + Create short speech segments from slices for online processing purpose. + + Args: + sig (Tensor): + Tensor containing the raw time-series signal + buffer_start (float): + Start point of the time-series signal buffer + buffer_end (float): + End point of the time-series signal buffer + subsegments (list): + List containing the interval information (start and duration) of each segment + ind_offset (int): + Offset for index that compensates the point of the current position in the streaming session + window (float): + Window length in second + shift (float): + Shift length in second + + Returns: + sigs_list (list): + list of sliced input signal + audio_lengths (list): + list of audio sample lengths + """ + sig_rangel_list: List[List[float]] = [] + sig_indexes: List[int] = [] + sigs_list: List[torch.Tensor] = [] + slice_length: int = int(window * sample_rate) + end_sec: float = 0.0 + for subseg in subsegments: + start_sec, dur = subseg[0], subseg[1] + + if start_sec > buffer_end: + continue + ind_offset += 1 + + buffer_len = buffer_end - buffer_start + end_sec = float(start_sec + dur) + + if end_sec > buffer_len: + end_sec = float(min(end_sec, buffer_len)) + + signal = get_target_sig(sig, start_sec, end_sec, slice_length, sample_rate) + + if len(signal) == 0: + raise ValueError("len(signal) is zero. Signal length should not be zero.") + if len(signal) < slice_length: + signal = repeat_signal(signal, len(signal), slice_length) + + start_abs_sec = buffer_start + start_sec + end_abs_sec = buffer_start + end_sec + + sigs_list.append(signal) + sig_rangel_list.append([start_abs_sec, end_abs_sec]) + sig_indexes.append(ind_offset) + + if not len(sigs_list) == len(sig_rangel_list) == len(sig_indexes): + raise ValueError("Signal information lists have a mismatch.") + + return ind_offset, sigs_list, sig_rangel_list, sig_indexes + + +@torch.jit.script +def get_online_subsegments_from_buffer( + buffer_start: float, + buffer_end: float, + sample_rate: int, + speech_labels_for_update: torch.Tensor, + audio_buffer: torch.Tensor, + segment_indexes: List[int], + window: float, + shift: float, +) -> Tuple[List[torch.Tensor], List[List[float]], List[int]]: + """ + Generate subsegments for online processing from the given segment information. + This function extracts subsegments (embedding vector level) time-series from the + raw time-series buffer based on the segment interval (start and end timestamps) information. + + Args: + buffer_start (float): + Start point of the time-series signal buffer + buffer_end (float): + End point of the time-series signal buffer + sample_rate (int): + Sampling rate of the audio input + speech_labels_for_update (Tensor): + Tensor containing intervals (start and end timestamps) of the speech segments + audio_buffer (Tensor): + Tensor containing the raw time-series signal + segment_indexes (list): + List containing the unique indices of segments + window (float): + Window length in second + shift (float): + Shift length in second + + Returns: + sigs_list (list): + List containing the tensors of the old and the newly added time-series signals + sig_rangel_list (list): + List containing the old and the newly added intervals (timestamps) of the speech segments + sig_indexes (list): + List containing the old and the newly added unique indices of segments + """ + sigs_list: List[torch.Tensor] = [] + sig_rangel_list: List[List[float]] = [] + sig_indexes: List[int] = [] + if len(segment_indexes) > 0: + ind_offset = segment_indexes[-1] + else: + ind_offset = -1 + + for idx, range_spl in enumerate(speech_labels_for_update): + range_offs = [float(range_spl[0].item() - buffer_start), float(range_spl[1].item() - buffer_start)] + range_t = [max(0, range_offs[0]), range_offs[1]] + + subsegments = get_subsegments( + offset=range_t[0], window=window, shift=shift, duration=(range_t[1] - range_t[0]), + ) + ind_offset, sigs, ranges, inds = get_online_segments_from_slices( + sig=audio_buffer, + buffer_start=buffer_start, + buffer_end=buffer_end, + subsegments=subsegments, + window=window, + ind_offset=ind_offset, + sample_rate=sample_rate, + ) + + sigs_list.extend(sigs) + sig_rangel_list.extend(ranges) + sig_indexes.extend(inds) + + assert len(sigs_list) == len(sig_rangel_list) == len(sig_indexes) + return sigs_list, sig_rangel_list, sig_indexes + + def get_scale_mapping_argmat(uniq_embs_and_timestamps: Dict[str, dict]) -> Dict[int, torch.Tensor]: """ Calculate cosine similarity values among speaker embeddings for each scale then @@ -1248,6 +1590,7 @@ def make_rttm_with_overlap( def embedding_normalize(embs, use_std=False, eps=1e-10): """ Mean and l2 length normalize the input speaker embeddings + Args: embs: embeddings of shape (Batch,emb_size) Returns: @@ -1260,3 +1603,127 @@ def embedding_normalize(embs, use_std=False, eps=1e-10): embs = embs / embs_l2_norm return embs + + +@torch.jit.script +class OnlineSegmentor: + """ + Online Segmentor for online (streaming) diarizer. + - The class instances created by this class takes time-series signal from the audio buffer and + creates subsegments for embedding extraction. + - Since online segmentation is based on a short audio buffer, the methods in this class extracts + a few subsegments from the given intervals for the raw time-series signal. + + Attributes: + frame_start (float): + Start of the middle chunk + buffer_start (float): + Start of the entire buffer + buffer_end (float): + End of the entire buffer + sample_rate (int): + Sampling rate of the input time-series signal + cumulative_speech_labels (Tensor): + Torch tensor matrix containing culmulative VAD (speech activity) timestamps + """ + + def __init__(self, sample_rate: int): + self.frame_start: float = 0.0 + self.buffer_start: float = 0.0 + self.buffer_end: float = 0.0 + self.sample_rate: int = sample_rate + self.cumulative_speech_labels: torch.Tensor = torch.tensor([]) + + def run_online_segmentation( + self, + audio_buffer: torch.Tensor, + vad_timestamps: torch.Tensor, + segment_raw_audio: List[torch.Tensor], + segment_range_ts: List[List[float]], + segment_indexes: List[int], + window: float, + shift: float, + ): + """ + Remove the old segments that overlap with the new frame (self.frame_start) + cursor_for_old_segments is pointing at the onset of the t_range popped most recently. + + Frame is in the middle of the buffer. + + |___Buffer___[___________]____________| + |____________[ Frame ]____________| + + | <- buffer start + |____________| <- frame start + + + Args: + audio_buffer (Tensor): + Tensor containing raw time-series signal + vad_timestamps (Tensor): + Tensor containing VAD intervals (start and end timestamps) + segment_raw_audio (list): + List containing the previously added tensors of the raw time-series signal segments + segment_range_ts (list): + List containing the previously added intervals (start and end timestamps) of each segment + segment_indexes (list): + List containing the previously added global integer indicies of the segments from + start to current cursor + window (float): + Window length in second + shift (float): + Shift length in second + + Returns: + segment_raw_audio (list): + List containing the newly added tensors of the raw time-series signal + segment_range_ts (list): + List containing the newly added interval (start and end timestamps) of each segment + segment_indexes (list): + List containing the newly added global integer indicies of the segments from + start to current cursor + """ + if self.buffer_start >= 0: + # Check if this is the very first step + if len(segment_raw_audio) == 0 and vad_timestamps.shape[0] > 0: + vad_timestamps[0][0] = max(vad_timestamps[0][0], 0.0) + speech_labels_for_update = vad_timestamps + self.cumulative_speech_labels = speech_labels_for_update + else: + # Calculate a cursor for the update point + cursor_for_old_segments, cursor_index = get_new_cursor_for_update(self.frame_start, segment_range_ts) + + segment_range_ts = segment_range_ts[:cursor_index] + segment_raw_audio = segment_raw_audio[:cursor_index] + segment_indexes = segment_indexes[:cursor_index] + + if not len(segment_raw_audio) == len(segment_range_ts) == len(segment_indexes): + raise ValueError("Scale-wise segment information has a mismatch in length.") + + speech_labels_for_update, self.cumulative_speech_labels = get_speech_labels_for_update( + self.frame_start, + self.buffer_end, + self.cumulative_speech_labels, + vad_timestamps, + cursor_for_old_segments, + ) + + # Collect the timeseries signal from the buffer + sigs_list, sig_rangel_list, sig_indexes = get_online_subsegments_from_buffer( + buffer_start=self.buffer_start, + buffer_end=self.buffer_end, + sample_rate=self.sample_rate, + speech_labels_for_update=speech_labels_for_update, + audio_buffer=audio_buffer, + segment_indexes=segment_indexes, + window=window, + shift=shift, + ) + + segment_raw_audio.extend(sigs_list) + segment_range_ts.extend(sig_rangel_list) + segment_indexes.extend(sig_indexes) + + if not len(segment_raw_audio) == len(segment_range_ts) == len(segment_indexes): + raise ValueError("Segment information has a mismatch in length.") + return segment_raw_audio, segment_range_ts, segment_indexes diff --git a/tests/collections/asr/test_diar_utils.py b/tests/collections/asr/test_diar_utils.py index c3d4eca0a8ba..41a7e630c6e6 100644 --- a/tests/collections/asr/test_diar_utils.py +++ b/tests/collections/asr/test_diar_utils.py @@ -18,6 +18,7 @@ import pytest import torch +from nemo.collections.asr.data.audio_to_label import repeat_signal from nemo.collections.asr.parts.utils.offline_clustering import ( SpeakerClustering, get_scale_interpolated_embs, @@ -33,7 +34,16 @@ run_reducer, stitch_cluster_labels, ) -from nemo.collections.asr.parts.utils.speaker_utils import get_subsegments +from nemo.collections.asr.parts.utils.speaker_utils import ( + check_ranges, + get_new_cursor_for_update, + get_online_subsegments_from_buffer, + get_speech_labels_for_update, + get_subsegments, + get_target_sig, + merge_float_intervals, + merge_int_intervals, +) MAX_SEED_COUNT = 2 @@ -109,7 +119,7 @@ def generate_toy_data( return emb_tensor, segm_tensor, multiscale_segment_counts, multiscale_weights, spk_timestamps, ground_truth -class TestDiarizationUtilFunctions: +class TestDiarizationSequneceUtilFunctions: """Tests diarization and speaker-task related utils. """ @@ -303,6 +313,142 @@ def test_merge_scheduler_3clus_repeat(self, ntbr, pcl, mspb): assert all(class_target_vol == torch.tensor([2, 0, 0, 0])) +class TestDiarizationSegmentationUtils: + """ + Test segmentation util functions + """ + + @pytest.mark.unit + @pytest.mark.parametrize( + "intervals", + [ + [[1, 4], [2, 6], [8, 10], [15, 18]], + [[1, 5], [2, 6], [8, 10], [15, 18]], + [[2, 6], [1, 3], [15, 18], [8, 10]], + [[8, 10], [15, 18], [2, 6], [1, 3]], + [[8, 10], [15, 18], [2, 6], [1, 3], [3, 5]], + [[8, 10], [8, 8], [15, 18], [2, 6], [1, 6], [2, 4]], + ], + ) + @pytest.mark.parametrize("target", [[[1, 6], [8, 10], [15, 18]]]) + def test_merge_int_intervals_ex1(self, intervals, target): + merged = merge_int_intervals(intervals) + assert check_range_values(target, merged) + + @pytest.mark.unit + @pytest.mark.parametrize( + "intervals", + [ + [[6, 8], [0, 9], [2, 4], [4, 7]], + [[0, 9], [6, 8], [4, 7], [2, 4]], + [[0, 4], [0, 0], [4, 9], [2, 4]], + [[6, 8], [2, 8], [0, 3], [3, 4], [4, 5], [5, 9]], + ], + ) + @pytest.mark.parametrize("target", [[[0, 9]]]) + def test_merge_int_intervals_ex2(self, intervals, target): + merged = merge_int_intervals(intervals) + assert check_range_values(target, merged) + + @pytest.mark.unit + @pytest.mark.parametrize("intervals", [[[0, 1], [1, 9]], [[0, 0], [0, 9]], [[0, 9], [0, 9]]]) + @pytest.mark.parametrize("target", [[[0, 9]]]) + def test_merge_int_intervals_edge_test(self, intervals, target): + merged = merge_int_intervals(intervals) + assert check_range_values(target, merged) + + @pytest.mark.unit + def test_merge_float_intervals_edge_margin_test(self): + intervals = [[0.0, 1.0], [1.0, 2.0]] + + target_0 = [[0.0, 2.0]] + merged_0 = merge_float_intervals(intervals, margin=0) + assert check_range_values(target_0, merged_0) + + target_1 = [[0.0, 1.0], [1.0, 2.0]] + merged_1 = merge_float_intervals(intervals, margin=1) + assert check_range_values(target_1, merged_1) + + target_2 = [[0.0, 1.0], [1.0, 2.0]] + merged_2 = merge_float_intervals(intervals, margin=2) + assert check_range_values(target_2, merged_2) + + @pytest.mark.unit + @pytest.mark.parametrize( + "intervals", + [ + [[0.25, 1.7], [1.5, 3.0], [2.8, 5.0], [5.5, 10.0]], + [[0.25, 5.0], [5.5, 10.0], [1.5, 3.5]], + [[5.5, 8.05], [8.0, 10.0], [0.25, 5.0]], + [[0.25, 3.0], [1.5, 3.0], [5.5, 10.0], [2.8, 5.0]], + [[0.25, 1.7], [1.5, 3.0], [2.8, 5.0], [5.5, 10.0]], + ], + ) + @pytest.mark.parametrize("target", [[[0.25, 5.0], [5.5, 10.0]]]) + def test_merge_float_overlaps(self, intervals, target): + merged = merge_float_intervals(intervals) + assert check_range_values(target, merged) + + @pytest.mark.unit + def test_get_speech_labels_for_update(self): + frame_start = 3.0 + buffer_end = 6.0 + cumulative_speech_labels = torch.tensor([[0.0000, 3.7600]]) + vad_timestamps = torch.tensor([[0.9600, 4.8400]]) + cursor_for_old_segments = 1.0 + speech_labels_for_update, cumulative_speech_labels = get_speech_labels_for_update( + frame_start, buffer_end, cumulative_speech_labels, vad_timestamps, cursor_for_old_segments, + ) + assert (speech_labels_for_update - torch.tensor([[1.0000, 3.7600]])).sum() < 1e-8 + assert (cumulative_speech_labels - torch.tensor([[0.9600, 4.8400]])).sum() < 1e-8 + + # Check if the ranges are containing faulty values + assert check_ranges(speech_labels_for_update) + assert check_ranges(cumulative_speech_labels) + + @pytest.mark.unit + def test_get_online_subsegments_from_buffer(self): + torch.manual_seed(0) + sample_rate = 16000 + speech_labels_for_update = torch.Tensor([[0.0000, 3.7600]]) + audio_buffer = torch.randn(5 * sample_rate) + segment_indexes = [] + window = 2.0 + shift = 1.0 + slice_length = int(window * sample_rate) + range_target = [[0.0, 2.0], [1.0, 3.0], [2.0, 3.76]] + sigs_list, sig_rangel_list, sig_indexes = get_online_subsegments_from_buffer( + buffer_start=0.0, + buffer_end=5.0, + sample_rate=sample_rate, + speech_labels_for_update=speech_labels_for_update, + audio_buffer=audio_buffer, + segment_indexes=segment_indexes, + window=window, + shift=shift, + ) + assert check_range_values(target=range_target, source=sig_rangel_list) + for k, rg in enumerate(sig_rangel_list): + signal = get_target_sig(audio_buffer, rg[0], rg[1], slice_length, sample_rate) + if len(signal) < int(window * sample_rate): + signal = repeat_signal(signal, len(signal), slice_length) + assert len(signal) == int(slice_length), "Length mismatch" + assert (np.abs(signal - sigs_list[k])).sum() < 1e-8, "Audio stream mismatch" + assert (torch.tensor(sig_indexes) - torch.arange(len(range_target))).sum() < 1e-8, "Segment index mismatch" + + @pytest.mark.unit + @pytest.mark.parametrize("frame_start", [3.0]) + @pytest.mark.parametrize("segment_range_ts", [[[0.0, 2.0]]]) + @pytest.mark.parametrize("gt_cursor_for_old_segments", [3.0]) + @pytest.mark.parametrize("gt_cursor_index", [1]) + def test_get_new_cursor_for_update_mulsegs_ex1( + self, frame_start, segment_range_ts, gt_cursor_for_old_segments, gt_cursor_index + ): + cursor_for_old_segments, cursor_index = get_new_cursor_for_update(frame_start, segment_range_ts) + assert cursor_for_old_segments == gt_cursor_for_old_segments + assert cursor_index == gt_cursor_index + + class TestSpeakerClustering: """ Test speaker clustering module From 14a6eb881f226b4df1ec8c29d784eeb9781d637c Mon Sep 17 00:00:00 2001 From: Tim Moon <4406448+timmoon10@users.noreply.github.com> Date: Tue, 7 Feb 2023 09:49:00 -0800 Subject: [PATCH 51/73] Distributed Adam optimizer overlaps param all-gather with forward compute (#5684) * Add distopt support for overlapping param all-gather with forward compute Signed-off-by: Tim Moon * Update Apex commit Signed-off-by: Tim Moon --------- Signed-off-by: Tim Moon Co-authored-by: Eric Harper Signed-off-by: Jason --- Dockerfile | 2 +- .../language_modeling/megatron_base_model.py | 6 +++- .../language_modeling/megatron_bert_model.py | 4 ++- .../language_modeling/megatron_gpt_model.py | 36 +++++++++++++++++-- nemo/core/optim/distributed_adam.py | 15 +++++--- 5 files changed, 54 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1197618d1e29..d796ef055558 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,7 @@ WORKDIR /tmp/ # container RUN git clone https://github.com/NVIDIA/apex.git && \ cd apex && \ - git checkout 75f401e088ef88e7c85a57ecf70fb232235f0334 && \ + git checkout c0a0b0f69d2d5a98bd141be12ee8e5eebd3ec7ca && \ pip3 install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" --global-option="--fast_layer_norm" --global-option="--distributed_adam" --global-option="--deprecated_fused_adam" ./ # uninstall stuff from base container diff --git a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py index 8a55eb40a059..7f2c0befce6b 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py @@ -326,8 +326,9 @@ def setup_optimization( optim_kwargs = {} if optim_kwargs is None else optim_kwargs.copy() if self.with_distributed_adam: - # Allocate grads since we are storing between microbatches + # Allocate contiguous buffers to avoid extra copies optim_kwargs['contiguous_grad_buffer'] = True + optim_kwargs['contiguous_param_buffer'] = True if self.megatron_amp_o2: # Match param allgather with model dtype @@ -417,6 +418,9 @@ def configure_optimizers(self): self._optimizer.init_params(reversed(overlap_params)) self._optimizer.init_params(reversed(no_overlap_params)) + # Initialize contiguous parameter buffer + self._optimizer.init_param_buffer() + if self._scheduler is None: return self._optimizer else: diff --git a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py index ebcae544436a..8a0502407bf5 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_bert_model.py @@ -767,6 +767,8 @@ def configure_optimizers(self): param._disable_overlap_grad_sync = True # Initialize parameter buckets for overlapped grad and param syncs + # Note: Params with disabled overlapping are put in the + # last param bucket buckets = [] if self.cfg.get('virtual_pipeline_model_parallel_size', None) is not None: # Initialize a bucket for each virtual pipeline stage @@ -793,7 +795,7 @@ def configure_optimizers(self): used_params = set() for bucket in buckets: used_params.update(bucket) - buckets.append([p for p in self.parameters() if p not in used_params]) + buckets[-1].extend(p for p in self.parameters() if p not in used_params) self.distributed_adam_buckets = buckets return super().configure_optimizers() diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py index d827b4871cc0..4215b32e9ed3 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py @@ -13,7 +13,7 @@ # limitations under the License. import itertools -from typing import Any, List, Optional, Union +from typing import Any, Dict, List, Optional, Union import numpy as np import torch @@ -208,6 +208,18 @@ def setup_optimizer_param_groups(self): else: self._optimizer_param_groups = get_params_for_weight_decay_optimization(self.model) + def setup_optimization( + self, optim_config: Optional[Union[DictConfig, Dict]] = None, optim_kwargs: Optional[Dict[str, Any]] = None, + ): + optim_kwargs = {} if optim_kwargs is None else optim_kwargs.copy() + if self.with_distributed_adam: + + # Enable overlapped param sync by default + if 'overlap_param_sync' not in optim_kwargs: + optim_kwargs['overlap_param_sync'] = True + + return super().setup_optimization(optim_config=optim_config, optim_kwargs=optim_kwargs) + def configure_optimizers(self): if self.with_distributed_adam: @@ -242,6 +254,8 @@ def configure_optimizers(self): param._disable_overlap_grad_sync = True # Initialize parameter buckets for overlapped grad and param syncs + # Note: Params with disabled overlapping are put in the + # last param bucket buckets = [] if self.cfg.get('virtual_pipeline_model_parallel_size', None) is not None: # Initialize a bucket for each virtual pipeline stage @@ -268,7 +282,7 @@ def configure_optimizers(self): used_params = set() for bucket in buckets: used_params.update(bucket) - buckets.append([p for p in self.parameters() if p not in used_params]) + buckets[-1].extend(p for p in self.parameters() if p not in used_params) self.distributed_adam_buckets = buckets return super().configure_optimizers() @@ -301,6 +315,24 @@ def training_step(self, batch, batch_idx): # we zero grads here because we also call backward in the apex fwd/bwd functions self._optimizer.zero_grad() + if self.with_distributed_adam: + # hack to enable overlapping param sync and forward compute + # note: the distributed optimizer monkey-patches each + # parameter's __getattribute__ function so that it can + # launch parameter all-gathers the first time the + # parameter is accessed after the optimizer step. However, + # PyTorch directly passes embedding parameters into a C++, + # bypassing this process. A quick-and-dirty hack is to + # manually interact with the parameter. + modules = self.model if isinstance(self.model, list) else [self.model] + for module in modules: + if isinstance(module, Float16Module): + module = module.module + module = module.language_model + if hasattr(module, 'embedding'): + for param in module.embedding.parameters(): + param.data_ptr() + if parallel_state.is_pipeline_first_stage(ignore_virtual=True) or parallel_state.is_pipeline_last_stage( ignore_virtual=True ): diff --git a/nemo/core/optim/distributed_adam.py b/nemo/core/optim/distributed_adam.py index 981d73462ced..ae10fc51823a 100644 --- a/nemo/core/optim/distributed_adam.py +++ b/nemo/core/optim/distributed_adam.py @@ -13,7 +13,7 @@ # limitations under the License. import torch -from apex.contrib.optimizers.distributed_fused_adam import DistributedFusedAdam +from apex.contrib.optimizers.distributed_fused_adam import DistributedFusedAdam, _disable_pre_forward_hook from apex.transformer import parallel_state @@ -33,6 +33,14 @@ def __init__(self, *args, disable_distributed_parameters=False, **kwargs): def _make_post_backward_hook(self, param, param_group_id, param_id): def hook(*unused): + if getattr(param, '_pre_forward_hook_is_enabled', False): + raise RuntimeError( + 'A parameter called its post-backward hook ' + 'before its pre-forward hook. ' + 'Please manually interact with the parameter ' + 'before the forward pass (e.g. by calling data_ptr) ' + 'or run DistributedFusedAdam with overlap_param_sync=False.' + ) with self._lock: need_to_initialize = 'fragments' not in self.state[param] if need_to_initialize: @@ -56,6 +64,5 @@ def zero_grad(self, *args, **kwargs): super().zero_grad(*args, **kwargs) if self.contiguous_grad_buffer: for param in self.parameters(): - param.main_grad = self.grad_buffer_view(param) - if param.dtype == param.main_grad.dtype and param.is_cuda: - param.grad = param.main_grad + with _disable_pre_forward_hook(param): + param.main_grad = self.grad_buffer_view(param) From b2a8addd7eccec52d7807b659ed9f11a6f4358ca Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Tue, 7 Feb 2023 10:57:20 -0800 Subject: [PATCH 52/73] [TTS][ZH] added new NGC model cards with polyphone disambiguation. (#5940) * [TTS][ZH] added new NGC model cards with polyphone disambiguation. Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- docs/source/tts/data/ngc_models_am.csv | 2 +- docs/source/tts/data/ngc_models_vocoder.csv | 2 +- nemo/collections/tts/models/fastpitch.py | 9 ++++++--- nemo/collections/tts/models/hifigan.py | 12 +++++++----- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/source/tts/data/ngc_models_am.csv b/docs/source/tts/data/ngc_models_am.csv index 84cff6625bee..5170db277579 100644 --- a/docs/source/tts/data/ngc_models_am.csv +++ b/docs/source/tts/data/ngc_models_am.csv @@ -9,4 +9,4 @@ en-US,tts_en_tacotron2,LJSpeech,22050Hz,1,ARPABET,nemo.collections.tts.models.ta de-DE,tts_de_fastpitch_multispeaker_5,HUI Audio Corpus German,44100Hz,5,ARPABET,nemo.collections.tts.models.fastpitch.FastPitchModel,`tts_de_fastpitch_multispeaker_5 `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_de_fastpitch_multispeaker_5/versions/1.11.0/files/tts_de_fastpitch_multispeaker_5.nemo`` de-DE,tts_de_fastpitch_singlespeaker,Thorsten Müller (German Neutral-TTS dataset),22050Hz,1,ARPABET,nemo.collections.tts.models.fastpitch.FastPitchModel,`tts_de_fastpitchhifigan `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_de_fastpitchhifigan/versions/1.10.0/files/tts_de_fastpitch_align.nemo`` es,tts_es_fastpitch_multispeaker,OpenSLR crowdsourced Latin American Spanish,44100Hz,174,IPA,nemo.collections.tts.models.fastpitch.FastPitchModel,`tts_es_multispeaker_fastpitchhifigan `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_es_multispeaker_fastpitchhifigan/versions/1.15.0/files/tts_es_fastpitch_multispeaker.nemo`` -zh-CN ,tts_zh_fastpitch_sfspeech,SFSpeech Chinese/English Bilingual Speech,22050Hz,1,pinyin,nemo.collections.tts.models.fastpitch.FastPitchModel,`tts_zh_fastpitch_hifigan_sfspeech `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.14.0/files/tts_zh_fastpitch_sfspeech.nemo`` +zh-CN,tts_zh_fastpitch_sfspeech,SFSpeech Chinese/English Bilingual Speech,22050Hz,1,pinyin,nemo.collections.tts.models.fastpitch.FastPitchModel,`tts_zh_fastpitch_hifigan_sfspeech `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.15.0/files/tts_zh_fastpitch_sfspeech.nemo`` diff --git a/docs/source/tts/data/ngc_models_vocoder.csv b/docs/source/tts/data/ngc_models_vocoder.csv index b049931c211e..420c7319010f 100644 --- a/docs/source/tts/data/ngc_models_vocoder.csv +++ b/docs/source/tts/data/ngc_models_vocoder.csv @@ -10,4 +10,4 @@ en-US,tts_waveglow_268m,librosa.filters.mel,LJSpeech,22050Hz,1,nemo.collections. de-DE,tts_de_hui_hifigan_ft_fastpitch_multispeaker_5,FastPitch,HUI Audio Corpus German,44100Hz,5,nemo.collections.tts.models.hifigan.HifiGanModel,`tts_de_fastpitch_multispeaker_5 `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_de_fastpitch_multispeaker_5/versions/1.11.0/files/tts_de_hui_hifigan_ft_fastpitch_multispeaker_5.nemo`` de-DE,tts_de_slr_hifigan_ft_fastpitch_singlespeaker,FastPitch,Thorsten Müller (German Neutral-TTS dataset),22050Hz,1,nemo.collections.tts.models.hifigan.HifiGanModel,`tts_de_fastpitchhifigan `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_de_fastpitchhifigan/versions/1.10.0/files/tts_de_hifigan.nemo`` es,tts_es_hifigan_ft_fastpitch_multispeaker,FastPitch,OpenSLR crowdsourced Latin American Spanish,44100Hz,174,nemo.collections.tts.models.hifigan.HifiGanModel,`tts_es_multispeaker_fastpitchhifigan `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_es_multispeaker_fastpitchhifigan/versions/1.15.0/files/tts_es_hifigan_ft_fastpitch_multispeaker.nemo`` -zh-CN ,tts_zh_hifigan_sfspeech,FastPitch,SFSpeech Chinese/English Bilingual Speech,22050Hz,1,nemo.collections.tts.models.hifigan.HifiGanModel,`tts_zh_fastpitch_hifigan_sfspeech `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.14.0/files/tts_zh_hifigan_sfspeech.nemo`` +zh-CN,tts_zh_hifigan_sfspeech,FastPitch,SFSpeech Chinese/English Bilingual Speech,22050Hz,1,nemo.collections.tts.models.hifigan.HifiGanModel,`tts_zh_fastpitch_hifigan_sfspeech `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.15.0/files/tts_zh_hifigan_sfspeech.nemo`` diff --git a/nemo/collections/tts/models/fastpitch.py b/nemo/collections/tts/models/fastpitch.py index 7e639a81514a..4140ebd4c0ee 100644 --- a/nemo/collections/tts/models/fastpitch.py +++ b/nemo/collections/tts/models/fastpitch.py @@ -612,11 +612,14 @@ def list_available_models(cls) -> 'List[PretrainedModelInfo]': ) list_of_models.append(model) - # zh, single speaker, 22050Hz, SFSpeech Bilingual Chinese/English dataset + # zh, single female speaker, 22050Hz, SFSpeech Bilingual Chinese/English dataset, improved model using richer + # dict and jieba word segmenter for polyphone disambiguation. model = PretrainedModelInfo( pretrained_model_name="tts_zh_fastpitch_sfspeech", - location="https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.14.0/files/tts_zh_fastpitch_sfspeech.nemo", - description="This model is trained on a single female speaker in SFSpeech Bilingual Chinese/English dataset sampled at 22050Hz and can be used to generate female Mandarin Chinese voices.", + location="https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.15.0/files/tts_zh_fastpitch_sfspeech.nemo", + description="This model is trained on a single female speaker in SFSpeech Bilingual Chinese/English dataset" + " sampled at 22050Hz and can be used to generate female Mandarin Chinese voices. It is improved" + " using richer dict and jieba word segmenter for polyphone disambiguation.", class_=cls, ) list_of_models.append(model) diff --git a/nemo/collections/tts/models/hifigan.py b/nemo/collections/tts/models/hifigan.py index e1b4bd5b0cd8..8a31bdcfc4d1 100644 --- a/nemo/collections/tts/models/hifigan.py +++ b/nemo/collections/tts/models/hifigan.py @@ -415,16 +415,18 @@ def list_available_models(cls) -> 'Optional[Dict[str, str]]': ) list_of_models.append(model) - # zh, single female speaker, 22050 Hz, SFSpeech Chinese/English Bilingual Dataset. + # zh, single female speaker, 22050Hz, SFSpeech Bilingual Chinese/English dataset, improved model using richer + # dict and jieba word segmenter for polyphone disambiguation. model = PretrainedModelInfo( pretrained_model_name="tts_zh_hifigan_sfspeech", - location="https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.14.0/files/tts_zh_hifigan_sfspeech.nemo", - description="This model is finetuned from the HiFiGAN pretrained checkpoint `tts_en_hifitts_hifigan_ft_fastpitch` " - "by the mel-spectrograms generated from the FastPitch checkpoint `tts_zh_fastpitch_sfspeech`. This model " - "has been tested on generating female Mandarin Chinese voices.", + location="https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_zh_fastpitch_hifigan_sfspeech/versions/1.15.0/files/tts_zh_hifigan_sfspeech.nemo", + description="This model is finetuned from the HiFiGAN pretrained checkpoint `tts_en_lj_hifigan_ft_mixerttsx`" + " by the mel-spectrograms generated from the FastPitch checkpoint `tts_zh_fastpitch_sfspeech`." + " This model has been tested on generating female Mandarin Chinese voices.", class_=cls, ) list_of_models.append(model) + return list_of_models def load_state_dict(self, state_dict, strict=True): From 62c84157e1fb7ca18899d097c6da5818af383be6 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Tue, 7 Feb 2023 14:49:55 -0800 Subject: [PATCH 53/73] Moved truncation of context higher up Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/modules/common.py | 3 +-- nemo/collections/tts/modules/radtts.py | 6 +++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index bed67498589a..39767ce29e89 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -159,9 +159,8 @@ def __init__( self.dense = nn.Linear(n_channels, out_dim) def forward(self, context: Tensor, lens: Tensor) -> Tensor: - mask = get_mask_from_lengths(lens) + mask = get_mask_from_lengths(lens, context) mask = mask.to(dtype=context.dtype).unsqueeze(1) - context = context[:, :, : mask.shape[-1]] for conv in self.convolutions: context = self.dropout(F.relu(conv(context, mask))) # Apply Bidirectional LSTM diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 1b95b1d3465c..69368d46d0d5 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -603,6 +603,11 @@ def infer( batch_size = text.shape[0] if in_lens is None: in_lens = text.new_ones((batch_size,), dtype=torch.int64) * text.shape[1] + txt_len_pad_removed = text.shape[1] + else: + txt_len_pad_removed = torch.max(in_lens) + text = text[:, :txt_len_pad_removed] + spk_vec = self.encode_speaker(speaker_id) if speaker_id_text is None: @@ -620,7 +625,6 @@ def infer( dur = dur[:, 0] dur = dur.clamp(1, token_duration_max) - txt_len_pad_removed = txt_enc.shape[2] if pace is None: pace = txt_enc.new_ones((batch_size, txt_len_pad_removed)) else: From 131423448081ee11cecdbb5d9c87873f8a72b320 Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Tue, 7 Feb 2023 14:28:03 -0800 Subject: [PATCH 54/73] [TN] bugfix file handler is not closed. (#5955) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- nemo_text_processing/text_normalization/de/utils.py | 4 ++-- nemo_text_processing/text_normalization/en/utils.py | 4 ++-- nemo_text_processing/text_normalization/es/utils.py | 4 ++-- nemo_text_processing/text_normalization/ru/utils.py | 4 ++-- nemo_text_processing/text_normalization/zh/utils.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/nemo_text_processing/text_normalization/de/utils.py b/nemo_text_processing/text_normalization/de/utils.py index 9eb0923cd2a3..9186c73dbe6e 100644 --- a/nemo_text_processing/text_normalization/de/utils.py +++ b/nemo_text_processing/text_normalization/de/utils.py @@ -43,6 +43,6 @@ def load_labels(abs_path): Returns dictionary of mappings """ - label_tsv = open(abs_path, encoding="utf-8") - labels = list(csv.reader(label_tsv, delimiter="\t")) + with open(abs_path, encoding="utf-8") as label_tsv: + labels = list(csv.reader(label_tsv, delimiter="\t")) return labels diff --git a/nemo_text_processing/text_normalization/en/utils.py b/nemo_text_processing/text_normalization/en/utils.py index 3a88fd819284..31d9ec635a15 100644 --- a/nemo_text_processing/text_normalization/en/utils.py +++ b/nemo_text_processing/text_normalization/en/utils.py @@ -37,8 +37,8 @@ def load_labels(abs_path): Returns dictionary of mappings """ - label_tsv = open(abs_path, encoding="utf-8") - labels = list(csv.reader(label_tsv, delimiter="\t")) + with open(abs_path, encoding="utf-8") as label_tsv: + labels = list(csv.reader(label_tsv, delimiter="\t")) return labels diff --git a/nemo_text_processing/text_normalization/es/utils.py b/nemo_text_processing/text_normalization/es/utils.py index a357ba201925..375bc1fb1f3e 100644 --- a/nemo_text_processing/text_normalization/es/utils.py +++ b/nemo_text_processing/text_normalization/es/utils.py @@ -37,6 +37,6 @@ def load_labels(abs_path): Returns dictionary of mappings """ - label_tsv = open(abs_path) - labels = list(csv.reader(label_tsv, delimiter="\t")) + with open(abs_path, encoding="utf-8") as label_tsv: + labels = list(csv.reader(label_tsv, delimiter="\t")) return labels diff --git a/nemo_text_processing/text_normalization/ru/utils.py b/nemo_text_processing/text_normalization/ru/utils.py index e09afc984183..aeb332d0ef5b 100644 --- a/nemo_text_processing/text_normalization/ru/utils.py +++ b/nemo_text_processing/text_normalization/ru/utils.py @@ -43,6 +43,6 @@ def load_labels(abs_path): Returns dictionary of mappings """ - label_tsv = open(abs_path, encoding='utf-8') - labels = list(csv.reader(label_tsv, delimiter="\t")) + with open(abs_path, encoding='utf-8') as label_tsv: + labels = list(csv.reader(label_tsv, delimiter="\t")) return labels diff --git a/nemo_text_processing/text_normalization/zh/utils.py b/nemo_text_processing/text_normalization/zh/utils.py index b3d03c602be8..707949ac7f0d 100644 --- a/nemo_text_processing/text_normalization/zh/utils.py +++ b/nemo_text_processing/text_normalization/zh/utils.py @@ -41,8 +41,8 @@ def load_labels(abs_path): Returns dictionary of mappings """ - label_tsv = open(abs_path, encoding="utf-8") - labels = list(csv.reader(label_tsv, delimiter="\t")) + with open(abs_path, encoding="utf-8") as label_tsv: + labels = list(csv.reader(label_tsv, delimiter="\t")) return labels From 750e2c995f8808ff5591dcf976ba1ed68b1ec885 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Wed, 8 Feb 2023 14:03:44 -0800 Subject: [PATCH 55/73] Added unit test for regulate_len. Unscripted sort_tensor for TRT Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/helpers/helpers.py | 36 +++++++++----------- nemo/collections/tts/models/radtts.py | 6 ++-- nemo/collections/tts/modules/common.py | 21 ++++++------ nemo/collections/tts/modules/radtts.py | 13 +++----- tests/collections/tts/test_helpers.py | 44 +++++++++++++++++++++++++ 5 files changed, 78 insertions(+), 42 deletions(-) create mode 100644 tests/collections/tts/test_helpers.py diff --git a/nemo/collections/tts/helpers/helpers.py b/nemo/collections/tts/helpers/helpers.py index 2bda71b9fa17..e7e92973910f 100644 --- a/nemo/collections/tts/helpers/helpers.py +++ b/nemo/collections/tts/helpers/helpers.py @@ -155,14 +155,17 @@ def get_mask_from_lengths(lengths: Optional[torch.Tensor] = None, x: Optional[to return mask -@torch.jit.script -def sort_tensor(context: torch.Tensor, lens: torch.Tensor) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: - lens_sorted, ids_sorted = torch.sort(lens, descending=True) - unsort_ids = torch.zeros_like(ids_sorted) - for i in range(ids_sorted.shape[0]): - unsort_ids[ids_sorted[i]] = i - context = context[ids_sorted] - return context, lens_sorted, unsort_ids +def sort_tensor( + context: torch.Tensor, lens: torch.Tensor, dim: Optional[int] = 0, descending: Optional[bool] = True +) -> Tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + lens_sorted, ids_sorted = torch.sort(lens, descending=descending) + context = torch.index_select(context, dim, ids_sorted) + return context, lens_sorted, ids_sorted + + +def unsort_tensor(ordered: torch.Tensor, indices: torch.Tensor, dim: Optional[int] = 0) -> torch.Tensor: + unsort_ids = indices.gather(0, indices.argsort(0)) + return torch.index_select(ordered, dim, unsort_ids) @jit(nopython=True) @@ -520,13 +523,7 @@ def remove(conv_list): def regulate_len( - durations, - enc_out, - pace=1.0, - mel_max_len=None, - replicate_to_nearest_multiple=False, - group_size=2, - in_lens: torch.tensor = None, + durations, enc_out, pace=1.0, mel_max_len=None, group_size=1, dur_lens: torch.tensor = None, ): """A function that takes predicted durations per encoded token, and repeats enc_out according to the duration. NOTE: durations.shape[1] == enc_out.shape[1] @@ -537,20 +534,19 @@ def regulate_len( enc_out (torch.tensor): A tensor of shape (batch x enc_length x enc_hidden) that represents the encoded tokens. pace (float): The pace of speaker. Higher values result in faster speaking pace. Defaults to 1.0. max_mel_len (int): The maximum length above which the output will be removed. If sum(durations, dim=1) > max_mel_len, the values after max_mel_len will be removed. Defaults to None, which has no max length. - replicate_to_nearest_multiple (bool): replicate the last element specified by durations[i, in_lens[i] - 1] until the + group_size (int): replicate the last element specified by durations[i, in_lens[i] - 1] until the full length of the sequence is the next nearest multiple of group_size - group_size (int): factor used by replicate_to_nearest_multiple - in_lens (torch.tensor): input sequence length specifying valid values in the durations input tensor + in_lens (torch.tensor): input sequence length specifying valid values in the durations input tensor (only needed if group_size >1) """ dtype = enc_out.dtype reps = durations.float() / pace reps = (reps + 0.5).floor().long() dec_lens = reps.sum(dim=1) - if replicate_to_nearest_multiple: + if group_size > 1: to_pad = group_size * (torch.div(dec_lens + 1, group_size, rounding_mode='floor')) - dec_lens reps.index_put_( - indices=[torch.arange(in_lens.shape[0], dtype=torch.long), in_lens - 1], values=to_pad, accumulate=True + indices=[torch.arange(dur_lens.shape[0], dtype=torch.long), dur_lens - 1], values=to_pad, accumulate=True ) dec_lens = reps.sum(dim=1) diff --git a/nemo/collections/tts/models/radtts.py b/nemo/collections/tts/models/radtts.py index 2b2b8ce3a939..1612af913f09 100644 --- a/nemo/collections/tts/models/radtts.py +++ b/nemo/collections/tts/models/radtts.py @@ -470,8 +470,9 @@ def input_example(self, max_batch=1, max_dim=400): for i, _ in enumerate(inp): len_i = random.randint(64, max_dim) lens.append(len_i) - inp[i, len_i:] = pad_id + # inp[i, len_i:] = pad_id lens = torch.tensor(lens, device=par.device, dtype=torch.int32) + lens[0] = max_dim inputs = { 'text': inp, @@ -512,9 +513,8 @@ def forward_for_export( durs_predicted, volume[:, :truncated_length].unsqueeze(-1), pace[:, :truncated_length], - replicate_to_nearest_multiple=True, group_size=self.model.n_group_size, - in_lens=lens, + dur_lens=lens, ) volume_extended = volume_extended.squeeze(2).float() return mel.float(), n_frames, dur.float(), volume_extended diff --git a/nemo/collections/tts/modules/common.py b/nemo/collections/tts/modules/common.py index 39767ce29e89..2b793c15116a 100644 --- a/nemo/collections/tts/modules/common.py +++ b/nemo/collections/tts/modules/common.py @@ -24,7 +24,7 @@ from torch.nn import functional as F from torch.nn.utils.rnn import PackedSequence -from nemo.collections.tts.helpers.helpers import get_mask_from_lengths, sort_tensor +from nemo.collections.tts.helpers.helpers import get_mask_from_lengths, sort_tensor, unsort_tensor from nemo.collections.tts.helpers.splines import ( piecewise_linear_inverse_transform, piecewise_linear_transform, @@ -90,22 +90,23 @@ def lstm_sorted(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, def lstm(self, context: Tensor, lens: Tensor, hx: Optional[Tuple[Tensor, Tensor]] = None) -> Tensor: # To be ONNX-exportable, we need to sort here rather that while packing context, lens, unsort_ids = sort_tensor(context, lens) - # Calculate sizes and prepare views to our zero buffer to pass as hx - max_batch_size = context.shape[0] - common_shape = (self.bilstm.num_layers * 2, max_batch_size) - hx = ( - context.new_zeros(*common_shape, self.real_hidden_size), - context.new_zeros(*common_shape, self.bilstm.hidden_size), - ) ret = self.lstm_sorted(context, lens, hx=hx) - return ret[unsort_ids] + return unsort_tensor(ret, unsort_ids) def lstm_nocast(self, context: Tensor, lens: Tensor) -> Tensor: dtype = context.dtype # autocast guard is only needed for Torchscript to run in Triton # (https://github.com/pytorch/pytorch/issues/89241) with torch.cuda.amp.autocast(enabled=False): - return self.lstm(context.to(dtype=torch.float32), lens).to(dtype=dtype) + # Calculate sizes and prepare views to our zero buffer to pass as hx + max_batch_size = context.shape[0] + context = context.to(dtype=torch.float32) + common_shape = (self.bilstm.num_layers * 2, max_batch_size) + hx = ( + context.new_zeros(*common_shape, self.real_hidden_size), + context.new_zeros(*common_shape, self.bilstm.hidden_size), + ) + return self.lstm(context, lens, hx=hx).to(dtype=dtype) def forward(self, context: Tensor, lens: Tensor) -> Tensor: self.bilstm.flatten_parameters() diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 69368d46d0d5..d60fb0cf1e5a 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -606,7 +606,8 @@ def infer( txt_len_pad_removed = text.shape[1] else: txt_len_pad_removed = torch.max(in_lens) - text = text[:, :txt_len_pad_removed] + # borisf : this should not be needed as long as we have properly formed input batch + txt_enc = txt_enc[:, :txt_len_pad_removed] spk_vec = self.encode_speaker(speaker_id) @@ -631,12 +632,7 @@ def infer( pace = pace[:, :txt_len_pad_removed] txt_enc_time_expanded, out_lens = regulate_len( - dur, - txt_enc.transpose(1, 2), - pace, - replicate_to_nearest_multiple=True, - group_size=self.n_group_size, - in_lens=in_lens, + dur, txt_enc.transpose(1, 2), pace, group_size=self.n_group_size, dur_lens=in_lens, ) n_groups = torch.div(out_lens, self.n_group_size, rounding_mode='floor') max_out_len = torch.max(out_lens) @@ -682,9 +678,8 @@ def infer( dur, pitch_shift[:, :txt_len_pad_removed].unsqueeze(-1), pace, - replicate_to_nearest_multiple=True, group_size=self.n_group_size, - in_lens=in_lens, + dur_lens=in_lens, ) f0_bias = pitch_shift_spec_len.squeeze(-1) + f0_bias diff --git a/tests/collections/tts/test_helpers.py b/tests/collections/tts/test_helpers.py new file mode 100644 index 000000000000..50e7bccce051 --- /dev/null +++ b/tests/collections/tts/test_helpers.py @@ -0,0 +1,44 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest +import torch +from omegaconf import DictConfig + +from nemo.collections.tts.helpers.helpers import regulate_len + + +def sample_duration_input(max_length=64, group_size=2): + generator = torch.Generator() + generator.manual_seed(0) + batch_size = 3 + lengths = torch.randint(max_length // 4, max_length - 7, (batch_size,), generator=generator) + durs = torch.ones(batch_size, max_length) * group_size + durs[0, lengths[0]] += 1 + durs[2, lengths[2]] -= 1 + enc = torch.randint(16, 64, (batch_size, max_length, 17)) + return durs, enc, lengths + + +@pytest.mark.unit +def test_regulate_len(): + group_size = 2 + durs_in, enc_in, dur_lens = sample_duration_input(group_size=group_size) + enc_out, lens_out = regulate_len(durs_in, enc_in, group_size=group_size, dur_lens=dur_lens) + # make sure lens_out are rounded + sum_diff = lens_out - torch.mul(lens_out // group_size, group_size) + assert sum_diff.sum(dim=0) == 0 + # make sure all round-ups are <= group_size + diff = lens_out - durs_in.sum(dim=1) + assert torch.max(diff) < group_size From add5f335f4e083d9d15c0c2682c560d88b65b48e Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Wed, 8 Feb 2023 14:17:10 -0800 Subject: [PATCH 56/73] Fixed slice Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/modules/radtts.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index d60fb0cf1e5a..4037a8d3ee5c 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -607,7 +607,7 @@ def infer( else: txt_len_pad_removed = torch.max(in_lens) # borisf : this should not be needed as long as we have properly formed input batch - txt_enc = txt_enc[:, :txt_len_pad_removed] + text = text[:, :txt_len_pad_removed] spk_vec = self.encode_speaker(speaker_id) From 8e25ef46244bf640b3b2e270a1929b022dbd0e99 Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Tue, 7 Feb 2023 18:43:09 -0800 Subject: [PATCH 57/73] [TTS] deprecate AudioToCharWithPriorAndPitchDataset. (#5959) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- nemo/collections/tts/models/fastpitch.py | 18 +----------------- nemo/collections/tts/models/tacotron2.py | 2 -- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/nemo/collections/tts/models/fastpitch.py b/nemo/collections/tts/models/fastpitch.py index 4140ebd4c0ee..67d55cb70e88 100644 --- a/nemo/collections/tts/models/fastpitch.py +++ b/nemo/collections/tts/models/fastpitch.py @@ -95,19 +95,8 @@ def __init__(self, cfg: DictConfig, trainer: Trainer = None): assert self.vocab is not None input_fft_kwargs["n_embed"] = len(self.vocab.tokens) input_fft_kwargs["padding_idx"] = self.vocab.pad - # TODO @xueyang: remove AudioToCharWithPriorAndPitchDataset because it has been deprecated already. - elif self.ds_class_name == "AudioToCharWithPriorAndPitchDataset": - logging.warning( - "AudioToCharWithPriorAndPitchDataset class has been deprecated. No support for" - " training or finetuning. Only inference is supported." - ) - tokenizer_conf = self._get_default_text_tokenizer_conf() - self._setup_tokenizer(tokenizer_conf) - assert self.vocab is not None - input_fft_kwargs["n_embed"] = len(self.vocab.tokens) - input_fft_kwargs["padding_idx"] = self.vocab.pad else: - raise ValueError(f"Unknown dataset class: {self.ds_class_name}") + raise ValueError(f"Unknown dataset class: {self.ds_class_name}.") self._parser = None self._tb_logger = None @@ -238,11 +227,6 @@ def parser(self): if ds_class_name == "TTSDataset": self._parser = self.vocab.encode - elif ds_class_name == "AudioToCharWithPriorAndPitchDataset": - if self.vocab is None: - tokenizer_conf = self._get_default_text_tokenizer_conf() - self._setup_tokenizer(tokenizer_conf) - self._parser = self.vocab.encode else: raise ValueError(f"Unknown dataset class: {ds_class_name}") else: diff --git a/nemo/collections/tts/models/tacotron2.py b/nemo/collections/tts/models/tacotron2.py index ed5fac10631c..311677ba7eb6 100644 --- a/nemo/collections/tts/models/tacotron2.py +++ b/nemo/collections/tts/models/tacotron2.py @@ -133,8 +133,6 @@ def parser(self): abbreviation_version="fastpitch", make_table=False, ) - elif ds_class_name == "AudioToCharWithPriorAndPitchDataset": - self.parser = self.vocab.encode else: raise ValueError("Wanted to setup parser, but model does not have necessary paramaters") From 65080af5752acc425f02a3f137e2bf6fe93cc19a Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Tue, 7 Feb 2023 18:43:59 -0800 Subject: [PATCH 58/73] bugfix: file handlers are not closed. (#5956) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- .../recognition/voxceleb_eval.py | 3 +- .../asr/parts/utils/manifest_utils.py | 6 ++- .../asr/parts/utils/speaker_utils.py | 4 +- nemo/collections/asr/parts/utils/vad_utils.py | 42 ++++++++++--------- .../common/tokenizers/regex_tokenizer.py | 18 ++++---- .../dataset_processing/process_vad_data.py | 6 ++- .../metric_calculation/squad_metric_calc.py | 12 ++++-- 7 files changed, 53 insertions(+), 38 deletions(-) diff --git a/examples/speaker_tasks/recognition/voxceleb_eval.py b/examples/speaker_tasks/recognition/voxceleb_eval.py index 00cbb8561e87..bf21c62c5709 100644 --- a/examples/speaker_tasks/recognition/voxceleb_eval.py +++ b/examples/speaker_tasks/recognition/voxceleb_eval.py @@ -40,7 +40,8 @@ def get_acc(trial_file='', emb='', save_kaldi_emb=False): trial_score = open('trial_score.txt', 'w') dirname = os.path.dirname(trial_file) - emb = pkl.load(open(emb, 'rb')) + with open(emb, 'rb') as f: + emb = pkl.load(f) trial_embs = [] keys = [] all_scores = [] diff --git a/nemo/collections/asr/parts/utils/manifest_utils.py b/nemo/collections/asr/parts/utils/manifest_utils.py index e4f4281ce21a..fee76263fbfe 100644 --- a/nemo/collections/asr/parts/utils/manifest_utils.py +++ b/nemo/collections/asr/parts/utils/manifest_utils.py @@ -175,7 +175,8 @@ def read_file(pathlist: str) -> List[str]: Returns: sorted(pathlist) (list): List of lines """ - pathlist = open(pathlist, 'r').readlines() + with open(pathlist, 'r') as f: + pathlist = f.readlines() return sorted(pathlist) @@ -331,7 +332,8 @@ def create_manifest( uem = uem.strip() if text is not None: - text = open(text.strip()).readlines()[0].strip() + with open(text.strip()) as f: + text = f.readlines()[0].strip() else: text = "-" diff --git a/nemo/collections/asr/parts/utils/speaker_utils.py b/nemo/collections/asr/parts/utils/speaker_utils.py index 6baa6e24310a..f1f93d68f6e4 100644 --- a/nemo/collections/asr/parts/utils/speaker_utils.py +++ b/nemo/collections/asr/parts/utils/speaker_utils.py @@ -602,14 +602,14 @@ def read_rttm_lines(rttm_file_path): List containing the strings from the RTTM file. """ if rttm_file_path and os.path.exists(rttm_file_path): - f = open(rttm_file_path, 'r') + with open(rttm_file_path, 'r') as f: + lines = f.readlines() else: raise FileNotFoundError( "Requested to construct manifest from rttm with oracle VAD option or from NeMo VAD but received filename as {}".format( rttm_file_path ) ) - lines = f.readlines() return lines diff --git a/nemo/collections/asr/parts/utils/vad_utils.py b/nemo/collections/asr/parts/utils/vad_utils.py index 490dd4d9f000..871c859734ee 100644 --- a/nemo/collections/asr/parts/utils/vad_utils.py +++ b/nemo/collections/asr/parts/utils/vad_utils.py @@ -1070,9 +1070,10 @@ def generate_vad_frame_pred( all_len = 0 data = [] - for line in open(manifest_vad_input, 'r', encoding='utf-8'): - file = json.loads(line)['audio_filepath'].split("/")[-1] - data.append(file.split(".wav")[0]) + with open(manifest_vad_input, 'r', encoding='utf-8') as f: + for line in f: + file = json.loads(line)['audio_filepath'].split("/")[-1] + data.append(file.split(".wav")[0]) logging.info(f"Inference on {len(data)} audio files/json lines!") status = get_vad_stream_status(data) @@ -1135,9 +1136,10 @@ def stitch_segmented_asr_output( os.mkdir(speech_segments_tensor_dir) segmented_output = [] - for line in open(segmented_output_manifest, 'r', encoding='utf-8'): - file = json.loads(line) - segmented_output.append(file) + with open(segmented_output_manifest, 'r', encoding='utf-8') as f: + for line in f: + file = json.loads(line) + segmented_output.append(file) with open(stitched_output_manifest, 'w', encoding='utf-8') as fout: speech_segments = torch.Tensor() @@ -1207,22 +1209,24 @@ def construct_manifest_eval( Because some pure noise samples might not appear in stitched_output_manifest. """ stitched_output = dict() - for line in open(stitched_output_manifest, 'r', encoding='utf-8'): - file = json.loads(line) - stitched_output[file["audio_filepath"]] = file + with open(stitched_output_manifest, 'r', encoding='utf-8') as f: + for line in f: + file = json.loads(line) + stitched_output[file["audio_filepath"]] = file out = [] - for line in open(input_manifest, 'r', encoding='utf-8'): - file = json.loads(line) - sample = file["audio_filepath"] - if sample in stitched_output: - file["pred_text"] = stitched_output[sample]["pred_text"] - file["speech_segments_filepath"] = stitched_output[sample]["speech_segments_filepath"] - else: - file["pred_text"] = "" - file["speech_segments_filepath"] = "" + with open(input_manifest, 'r', encoding='utf-8') as f: + for line in f: + file = json.loads(line) + sample = file["audio_filepath"] + if sample in stitched_output: + file["pred_text"] = stitched_output[sample]["pred_text"] + file["speech_segments_filepath"] = stitched_output[sample]["speech_segments_filepath"] + else: + file["pred_text"] = "" + file["speech_segments_filepath"] = "" - out.append(file) + out.append(file) with open(aligned_vad_asr_output_manifest, 'w', encoding='utf-8') as fout: for i in out: diff --git a/nemo/collections/common/tokenizers/regex_tokenizer.py b/nemo/collections/common/tokenizers/regex_tokenizer.py index 6a5485f8d4e1..07e278026e03 100644 --- a/nemo/collections/common/tokenizers/regex_tokenizer.py +++ b/nemo/collections/common/tokenizers/regex_tokenizer.py @@ -224,7 +224,8 @@ def save_tokenizer(self, regex_file=None, vocab_file=None): fp.write(f"{token[0]}\n") logging.info(f"Saving regex to file = {regex_file}") - open(regex_file, 'w').write(self.regex) + with open(regex_file, 'w') as f: + f.write(self.regex) def load_tokenizer(self, regex_file=None, vocab_file=None): """ @@ -297,13 +298,14 @@ def build_vocab_from_text(self, data_text_file): raise ValueError(f"Data file: {data_text_file} is missing") vocab = self.vocab - for d in open(data_text_file, encoding="utf-8").readlines(): - d = d.rstrip() - tokens = self.text_to_tokens(d) - logging.debug(f"Text: {d}, Tokens: {d}") - for token in tokens: - if token not in vocab: - vocab[token] = len(vocab) + with open(data_text_file, encoding="utf-8") as f: + for d in f.readlines(): + d = d.rstrip() + tokens = self.text_to_tokens(d) + logging.debug(f"Text: {d}, Tokens: {d}") + for token in tokens: + if token not in vocab: + vocab[token] = len(vocab) sorted_vocab = sorted(vocab.items(), key=lambda k_v: k_v[1]) logging.debug(f"Vocab: {sorted_vocab}") diff --git a/scripts/dataset_processing/process_vad_data.py b/scripts/dataset_processing/process_vad_data.py index 6daa8859258e..e5624844e7c7 100644 --- a/scripts/dataset_processing/process_vad_data.py +++ b/scripts/dataset_processing/process_vad_data.py @@ -270,8 +270,10 @@ def load_list_write_manifest( def rebalance_json(data_dir, data_json, num, prefix): data = [] seg = 0 - for line in open(data_json, 'r'): - data.append(json.loads(line)) + with open(data_json, 'r') as f: + for line in f: + data.append(json.loads(line)) + filename = data_json.split('/')[-1] fout_path = os.path.join(data_dir, prefix + "_" + filename) diff --git a/scripts/metric_calculation/squad_metric_calc.py b/scripts/metric_calculation/squad_metric_calc.py index 2c9e68669e6a..1557fadd565c 100755 --- a/scripts/metric_calculation/squad_metric_calc.py +++ b/scripts/metric_calculation/squad_metric_calc.py @@ -105,22 +105,26 @@ def main(): type=str, help="The text at the end of the prompt, write before the predicted answer. This will be used to find the model's predictions in pred files when the pred file containers both the prompt and prediction.", default=None, - ) # If the pred file only has preditions, just pass none + ) # If the pred file only has predictions, just pass none args = parser.parse_args() ground_truth_file = args.ground_truth pred_file = args.preds - preds = open(pred_file, encoding="utf-8").readlines() - ground_truth = open(ground_truth_file).readlines() + with open(pred_file, encoding="utf-8") as fp: + preds = fp.readlines() + + with open(ground_truth_file) as fgt: + ground_truth = fgt.readlines() + f1 = exact_match = total = 0 for i in range(len(preds)): truth = json.loads(ground_truth[i]) pred_answer = preds[i] - # Need to separate out preditions from prompt, spliting on the provided "split string" + # Need to separate out predictions from prompt, splitting on the provided "split string" if args.split_string is not None: pred_answer = pred_answer.split(args.split_string)[-1].strip() From 2c009cac490ccc78f78eb691ecb5f882eace13e9 Mon Sep 17 00:00:00 2001 From: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Date: Tue, 7 Feb 2023 22:24:15 -0800 Subject: [PATCH 59/73] [TTS][G2P] deprecate add_symbols (#5961) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- nemo_text_processing/g2p/modules.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/nemo_text_processing/g2p/modules.py b/nemo_text_processing/g2p/modules.py index 8b80eef3646a..91141ac729e1 100644 --- a/nemo_text_processing/g2p/modules.py +++ b/nemo_text_processing/g2p/modules.py @@ -544,15 +544,6 @@ def _normalize_dict(self, phoneme_dict_obj: Dict[str, List[List[str]]]) -> Tuple return g2p_dict, symbols - # TODO @xueyang: deprecate this function because it is useless. If unknown graphemes appear, then apply_to_oov_words - # should handle it. - def add_symbols(self, symbols: str) -> None: - """By default, the G2P symbols will be inferred from the words & pronunciations in the phoneme_dict. - Use this to add characters in the vocabulary that are not present in the phoneme_dict. - """ - symbols = normalize_unicode_text(symbols) - self.symbols.update(symbols) - def is_unique_in_phoneme_dict(self, word: str) -> bool: return len(self.phoneme_dict[word]) == 1 From cbfbd7b3bf18a6aca0257bb5b58831369d31f959 Mon Sep 17 00:00:00 2001 From: Eric Harper Date: Wed, 8 Feb 2023 08:33:10 -0700 Subject: [PATCH 60/73] fix broken link (#5968) Signed-off-by: ericharper Signed-off-by: Jason --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 369fcf70b5a4..86f4b5a9a32f 100644 --- a/README.rst +++ b/README.rst @@ -53,7 +53,7 @@ We have have extensive `tutorials `_. For advanced users that want to train NeMo models from scratch or finetune existing NeMo models -we have a full suite of `example scripts `_ that support multi-GPU/multi-node training. +we have a full suite of `example scripts `_ that support multi-GPU/multi-node training. Also see our `introductory video `_ for a high level overview of NeMo. From f361861a3ac344bf00bf8e9a6ebaae9670a71381 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 12:11:15 -0800 Subject: [PATCH 61/73] Fix hybridasr bug (#5950) (#5957) Signed-off-by: Jason --- .../conformer_hybrid_transducer_ctc_bpe.yaml | 2 +- .../conformer_hybrid_transducer_ctc_char.yaml | 2 +- .../asr/models/hybrid_rnnt_ctc_bpe_models.py | 84 ++++++++++++++++++- 3 files changed, 85 insertions(+), 3 deletions(-) diff --git a/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_bpe.yaml b/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_bpe.yaml index 3e03d3495174..18f877701568 100644 --- a/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_bpe.yaml +++ b/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_bpe.yaml @@ -192,7 +192,7 @@ model: # The section which would contain the decoder and decoding configs of the auxiliary CTC decoder aux_ctc: - ctc_loss_weight: 0.5 # the weight used to combine the CTC loss with the RNNT loss + ctc_loss_weight: 0.3 # the weight used to combine the CTC loss with the RNNT loss use_cer: false ctc_reduction: 'mean_batch' decoder: diff --git a/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_char.yaml b/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_char.yaml index dbbde6875383..ea5a31bba0bc 100644 --- a/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_char.yaml +++ b/examples/asr/conf/conformer/hybrid_transducer_ctc/conformer_hybrid_transducer_ctc_char.yaml @@ -186,7 +186,7 @@ model: # The section which would contain the decoder and decoding configs of the auxiliary CTC decoder aux_ctc: - ctc_loss_weight: 0.5 # the weight used to combine the CTC loss with the RNNT loss + ctc_loss_weight: 0.3 # the weight used to combine the CTC loss with the RNNT loss use_cer: false ctc_reduction: 'mean_batch' decoder: diff --git a/nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models.py b/nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models.py index 3b94084e0d8b..25bda96fc5a2 100644 --- a/nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models.py +++ b/nemo/collections/asr/models/hybrid_rnnt_ctc_bpe_models.py @@ -14,11 +14,14 @@ import copy import os -from typing import Optional, Union +from typing import Dict, Optional, Union +import torch from omegaconf import DictConfig, ListConfig, OmegaConf, open_dict from pytorch_lightning import Trainer +from nemo.collections.asr.data import audio_to_text_dataset +from nemo.collections.asr.data.audio_to_text_dali import AudioToBPEDALIDataset from nemo.collections.asr.losses.ctc import CTCLoss from nemo.collections.asr.losses.rnnt import RNNTLoss from nemo.collections.asr.metrics.rnnt_wer_bpe import RNNTBPEWER, RNNTBPEDecoding, RNNTBPEDecodingConfig @@ -123,6 +126,85 @@ def __init__(self, cfg: DictConfig, trainer: Trainer = None): # setting the RNNT decoder as the default one self.use_rnnt_decoder = True + def _setup_dataloader_from_config(self, config: Optional[Dict]): + dataset = audio_to_text_dataset.get_audio_to_text_bpe_dataset_from_config( + config=config, + local_rank=self.local_rank, + global_rank=self.global_rank, + world_size=self.world_size, + tokenizer=self.tokenizer, + preprocessor_cfg=self.cfg.get("preprocessor", None), + ) + + if dataset is None: + return None + + if isinstance(dataset, AudioToBPEDALIDataset): + # DALI Dataset implements dataloader interface + return dataset + + shuffle = config['shuffle'] + if config.get('is_tarred', False): + shuffle = False + + if hasattr(dataset, 'collate_fn'): + collate_fn = dataset.collate_fn + else: + collate_fn = dataset.datasets[0].collate_fn + + return torch.utils.data.DataLoader( + dataset=dataset, + batch_size=config['batch_size'], + collate_fn=collate_fn, + drop_last=config.get('drop_last', False), + shuffle=shuffle, + num_workers=config.get('num_workers', 0), + pin_memory=config.get('pin_memory', False), + ) + + def _setup_transcribe_dataloader(self, config: Dict) -> 'torch.utils.data.DataLoader': + """ + Setup function for a temporary data loader which wraps the provided audio file. + + Args: + config: A python dictionary which contains the following keys: + paths2audio_files: (a list) of paths to audio files. The files should be relatively short fragments. \ + Recommended length per file is between 5 and 25 seconds. + batch_size: (int) batch size to use during inference. \ + Bigger will result in better throughput performance but would use more memory. + temp_dir: (str) A temporary directory where the audio manifest is temporarily + stored. + num_workers: (int) number of workers. Depends of the batch_size and machine. \ + 0 - only the main process will load batches, 1 - one worker (not main process) + + Returns: + A pytorch DataLoader for the given audio file(s). + """ + + if 'manifest_filepath' in config: + manifest_filepath = config['manifest_filepath'] + batch_size = config['batch_size'] + else: + manifest_filepath = os.path.join(config['temp_dir'], 'manifest.json') + batch_size = min(config['batch_size'], len(config['paths2audio_files'])) + + dl_config = { + 'manifest_filepath': manifest_filepath, + 'sample_rate': self.preprocessor._sample_rate, + 'batch_size': batch_size, + 'shuffle': False, + 'num_workers': config.get('num_workers', min(batch_size, os.cpu_count() - 1)), + 'pin_memory': True, + 'channel_selector': config.get('channel_selector', None), + 'use_start_end_token': self.cfg.validation_ds.get('use_start_end_token', False), + } + + if config.get("augmentor"): + dl_config['augmentor'] = config.get("augmentor") + + temporary_datalayer = self._setup_dataloader_from_config(config=DictConfig(dl_config)) + return temporary_datalayer + def change_vocabulary( self, new_tokenizer_dir: Union[str, DictConfig], From 9339a3f044c85fbb4dfe9ec7cebdb6fd309436db Mon Sep 17 00:00:00 2001 From: Evgeniy Shabalin <36159472+treacker@users.noreply.github.com> Date: Thu, 9 Feb 2023 11:26:43 +0300 Subject: [PATCH 62/73] Added list_available_models (#5967) * Added list_available_models Signed-off-by: Evgeniy Shabalin <36159472+treacker@users.noreply.github.com> * Added to readme Signed-off-by: Evgeniy Shabalin * added vits to docs Signed-off-by: Evgeniy Shabalin * added vits to docs Signed-off-by: Evgeniy Shabalin --------- Signed-off-by: Evgeniy Shabalin <36159472+treacker@users.noreply.github.com> Signed-off-by: Evgeniy Shabalin Signed-off-by: Jason --- README.rst | 2 +- docs/source/tts/checkpoints.rst | 6 ++++++ docs/source/tts/data/ngc_models_e2e.csv | 2 ++ nemo/collections/tts/models/vits.py | 9 ++++++++- 4 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 docs/source/tts/data/ngc_models_e2e.csv diff --git a/README.rst b/README.rst index 86f4b5a9a32f..1a082648fcfb 100644 --- a/README.rst +++ b/README.rst @@ -98,7 +98,7 @@ Key Features * `Speech synthesis (TTS) `_ * Spectrogram generation: Tacotron2, GlowTTS, TalkNet, FastPitch, FastSpeech2, Mixer-TTS, Mixer-TTS-X * Vocoders: WaveGlow, SqueezeWave, UniGlow, MelGAN, HiFiGAN, UnivNet - * End-to-end speech generation: FastPitch_HifiGan_E2E, FastSpeech2_HifiGan_E2E + * End-to-end speech generation: FastPitch_HifiGan_E2E, FastSpeech2_HifiGan_E2E, VITS * `NGC collection of pre-trained TTS models. `_ * `Tools `_ * `Text Processing (text normalization and inverse text normalization) `_ diff --git a/docs/source/tts/checkpoints.rst b/docs/source/tts/checkpoints.rst index 46ad0427c08e..f78cf6a2805e 100644 --- a/docs/source/tts/checkpoints.rst +++ b/docs/source/tts/checkpoints.rst @@ -144,4 +144,10 @@ Vocoders .. csv-table:: :file: data/ngc_models_vocoder.csv :align: left + :header-rows: 1 +End2End models +^^^^^^^^ +.. csv-table:: + :file: data/ngc_models_e2e.csv + :align: left :header-rows: 1 \ No newline at end of file diff --git a/docs/source/tts/data/ngc_models_e2e.csv b/docs/source/tts/data/ngc_models_e2e.csv new file mode 100644 index 000000000000..63d3a27dae0e --- /dev/null +++ b/docs/source/tts/data/ngc_models_e2e.csv @@ -0,0 +1,2 @@ +Locale,Model Name,Dataset,Sampling Rate,#Spk,Phoneme Unit,Model Class,Overview,Checkpoint +en-US,tts_en_lj_vits,LJSpeech,22050Hz,1,IPA,nemo.collections.tts.models.vits.VitsModel,`tts_en_lj_vits `_,``https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_en_lj_vits/versions/1.13.0/files/vits_ljspeech_fp16_full.nemo`` \ No newline at end of file diff --git a/nemo/collections/tts/models/vits.py b/nemo/collections/tts/models/vits.py index d035c6a1b3ac..a18c762803e2 100644 --- a/nemo/collections/tts/models/vits.py +++ b/nemo/collections/tts/models/vits.py @@ -372,7 +372,14 @@ def setup_test_data(self, cfg): @classmethod def list_available_models(cls) -> 'List[PretrainedModelInfo]': list_of_models = [] - # TODO: List available models?? + model = PretrainedModelInfo( + pretrained_model_name="tts_en_lj_vits", + location="https://api.ngc.nvidia.com/v2/models/nvidia/nemo/tts_en_lj_vits/versions/1.13.0/files/vits_ljspeech_fp16_full.nemo", + description="This model is trained on LJSpeech audio sampled at 22050Hz. This model has been tested on generating female English " + "voices with an American accent.", + class_=cls, + ) + list_of_models.append(model) return list_of_models @typecheck( From 3e342e0acf9c99395852cc00d1fc307597b51d9a Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Thu, 9 Feb 2023 20:50:20 +0400 Subject: [PATCH 63/73] Move settings to `pyproject.toml`. Remove deprecated `pytest-runner` (#5947) * Move project settings to pyproject.toml Signed-off-by: Vladimir Bataev * Remove setup.cfg Signed-off-by: Vladimir Bataev * Remove deprecated pytest-runner Signed-off-by: Vladimir Bataev * Add comments Signed-off-by: Vladimir Bataev * Allow only registered markers for pytest Signed-off-by: Vladimir Bataev --------- Signed-off-by: Vladimir Bataev Signed-off-by: Jason --- pyproject.toml | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ setup.cfg | 43 ------------------------------------ setup.py | 4 ---- 3 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.cfg diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000000..32490f886e1a --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,60 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[tool.isort] +profile = "black" # black-compatible +line_length = 119 # should match black parameters +ignore_whitespace = true # ignore whitespace for compatibility with the initial style +py_version = 38 # python 3.8 as a target version +known_first_party = ["nemo"] # FIRSTPARTY section +known_third_party = ["nemo_text_processing", "examples", "scripts"] # THIRDPARTY section +sections = ["FUTURE", "STDLIB", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER"] +default_section = "THIRDPARTY" +extend_skip = ["setup.py", "docs/source/conf.py"] + + +[tool.pytest.ini_options] +# durations=0 will display all tests execution time, sorted in ascending order starting from from the slowest one. +# -vv will also display tests with durration = 0.00s +addopts = "--verbose --pyargs --durations=0 --strict-markers" # always add these arguments to pytest +testpaths = ["tests"] +# directories to ignore when discovering tests +norecursedirs = [ + "nemo", + "nemo_text_processing", + "external", + "examples", + "docs", + "scripts", + "tools", + "tutorials", + "*.egg", + ".*", + "_darcs", + "build", + "CVS", + "dist", + "venv", + "{arch}" +] +# markers to select tests, use `pytest --markers` to see all available markers, `pytest -m ""` to select tests +markers = [ + "unit: marks unit test, i.e. testing a single, well isolated functionality (deselect with '-m \"not unit\"')", + "integration: marks test checking the elements when integrated into subsystems (deselect with '-m \"not integration\"')", + "system: marks test working at the highest integration level (deselect with '-m \"not system\"')", + "acceptance: marks test checking whether the developed product/model passes the user defined acceptance criteria (deselect with '-m \"not acceptance\"')", + "docs: mark tests related to documentation (deselect with '-m \"not docs\"')", + "skipduringci: marks tests that are skipped ci as they are addressed by Jenkins jobs but should be run to test user setups", + "pleasefixme: marks tests that are broken and need fixing", +] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 9abb6a701f11..000000000000 --- a/setup.cfg +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (c) 2020, NVIDIA CORPORATION. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -[aliases] -test=pytest - -# durations=0 will display all tests execution time, sorted in ascending order starting from from the slowest one. -# -vv will also display tests with durration = 0.00s -[tool:pytest] -addopts = --verbose --pyargs --durations=0 -testpaths = tests -norecursedirs = nemo nemo_text_processing external examples docs scripts tools tutorials *.egg .* _darcs build CVS dist venv {arch} -markers = - unit: marks unit test, i.e. testing a single, well isolated functionality (deselect with '-m "not unit"') - integration: marks test checking the elements when integrated into subsystems (deselect with '-m "not integration"') - system: marks test working at the highest integration level (deselect with '-m "not system"') - acceptance: marks test checking whether the developed product/model passes the user defined acceptance criteria (deselect with '-m "not acceptance"') - docs: mark tests related to documentation (deselect with '-m "not docs"') - skipduringci: marks tests that are skipped ci as they are addressed by Jenkins jobs but should be run to test user setups - pleasefixme: marks tests that are broken and need fixing - - -[isort] -profile=black -line_length=119 -ignore_whitespace=true -py_version=38 -known_first_party=nemo -known_third_party=nemo_text_processing,examples,scripts -sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER -default_section=THIRDPARTY -extend_skip=setup.py,docs/source/conf.py diff --git a/setup.py b/setup.py index 517a81df7400..328bbec60d44 100644 --- a/setup.py +++ b/setup.py @@ -134,8 +134,6 @@ def req_file(filename, folder="requirements"): extras_require['slu'] = list(chain([extras_require['slu'], extras_require['asr']])) -tests_requirements = extras_require["test"] - ############################################################################### # Code style checkers # @@ -257,8 +255,6 @@ def finalize_options(self): ], packages=setuptools.find_packages(), install_requires=install_requires, - setup_requires=['pytest-runner'], - tests_require=tests_requirements, # List additional groups of dependencies here (e.g. development # dependencies). You can install these using the following syntax, # $ pip install -e ".[all]" From aaa4851dd0495172d969490547f8cc5d162dc51c Mon Sep 17 00:00:00 2001 From: Vladimir Bataev Date: Thu, 9 Feb 2023 20:59:53 +0400 Subject: [PATCH 64/73] Fix torchaudio installation (#5850) * Fail if torchaudio not installed Signed-off-by: Vladimir Bataev * Fix torchaudio matching version Signed-off-by: Vladimir Bataev * Warn if Pytorch major version changed Signed-off-by: Vladimir Bataev --------- Signed-off-by: Vladimir Bataev Signed-off-by: Jason --- .../installers/install_torchaudio_latest.sh | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/scripts/installers/install_torchaudio_latest.sh b/scripts/installers/install_torchaudio_latest.sh index f9f9da63b0d7..b0ed52996ea2 100755 --- a/scripts/installers/install_torchaudio_latest.sh +++ b/scripts/installers/install_torchaudio_latest.sh @@ -26,22 +26,40 @@ LATEST_RELEASE=$(git -c 'versionsort.suffix=-' \ # expected TORCHAUDIO_BUILD_VERSION=*.**.* TORCHAUDIO_BUILD_VERSION=${LATEST_RELEASE:8:1}${PYTORCH_VERSION:1:5} +TORCH_MAJOR_VERSION=$(python3 -c "major_version = \"${PYTORCH_VERSION}\".split('.')[0]; print(major_version)") +TORCH_MINOR_VERSION=$(python3 -c "minor_version = \"${PYTORCH_VERSION}\".split('.')[1]; print(minor_version)") +TORCHAUDIO_MINOR_VERSION=$(python3 -c "minor_version = \"${LATEST_RELEASE}\".rsplit('.')[-1]; print(minor_version)") + +if [[ $TORCH_MAJOR_VERSION -ne 1 ]]; then + echo "WARNING: Pytorch major version different from 1 not supported" +fi + echo "Latest torchaudio release: ${LATEST_RELEASE:8:4}" echo "Pytorch version: ${PYTORCH_VERSION:0:6}" echo "Torchaudio build version: ${TORCHAUDIO_BUILD_VERSION}" +if [[ "$TORCH_MINOR_VERSION" -lt "$TORCHAUDIO_MINOR_VERSION" ]]; then + # for old containers, we need to install matching torchaudio version + INSTALL_BRANCH="release/0.${TORCH_MINOR_VERSION}" +else + # for new containers use latest release + INSTALL_BRANCH=${LATEST_RELEASE} +fi + +echo "Installing torchaudio from branch: ${INSTALL_BRANCH}" + # we need parameterized to run torchaudio tests # suppose that we do not have parameterized installed yet pip install parameterized # Build torchaudio and run MFCC test -git clone --depth 1 --branch ${LATEST_RELEASE} https://github.com/pytorch/audio.git && \ +git clone --depth 1 --branch ${INSTALL_BRANCH} https://github.com/pytorch/audio.git && \ cd audio && \ git submodule update --init --recursive && \ BUILD_SOX=1 BUILD_VERSION=${TORCHAUDIO_BUILD_VERSION} python setup.py install && \ cd .. && \ pytest -rs audio/test/torchaudio_unittest/transforms/torchscript_consistency_cpu_test.py -k 'test_MFCC' || \ -(echo "ERROR: Failed to install torchaudio!"; exit 1); +{ echo "ERROR: Failed to install torchaudio!"; exit 1; }; # RNNT loss is built with CUDA, so checking it will suffice # This test will be skipped if CUDA is not available (e.g. when building from docker) pytest -rs audio/test/torchaudio_unittest/functional/torchscript_consistency_cuda_test.py -k 'test_rnnt_loss' || \ From 181bea9411083057fd398d45a1c1b2992d5d3205 Mon Sep 17 00:00:00 2001 From: Jason Date: Thu, 9 Feb 2023 12:56:12 -0500 Subject: [PATCH 65/73] Update fastpitch.py (#5969) Signed-off-by: Jason --- nemo/collections/tts/modules/fastpitch.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nemo/collections/tts/modules/fastpitch.py b/nemo/collections/tts/modules/fastpitch.py index bab17a2fc18f..0841c1bfd3a1 100644 --- a/nemo/collections/tts/modules/fastpitch.py +++ b/nemo/collections/tts/modules/fastpitch.py @@ -287,7 +287,7 @@ def forward( # Predict energy if self.energy_predictor is not None: - energy_pred = self.energy_predictor(enc_out, enc_mask).squeeze(-1) + energy_pred = self.energy_predictor(prosody_input, enc_mask).squeeze(-1) if energy is not None: # Average energy over characters @@ -357,6 +357,8 @@ def infer(self, *, text, pitch=None, speaker=None, energy=None, pace=1.0, volume ) pitch_predicted = self.pitch_predictor(prosody_input, enc_mask) + pitch pitch_emb = self.pitch_emb(pitch_predicted.unsqueeze(1)) + enc_out = enc_out + pitch_emb.transpose(1, 2) + if self.energy_predictor is not None: if energy is not None: assert energy.shape[-1] == text.shape[-1], f"energy.shape[-1]: {energy.shape[-1]} != len(text)" @@ -365,7 +367,6 @@ def infer(self, *, text, pitch=None, speaker=None, energy=None, pace=1.0, volume energy_pred = self.energy_predictor(prosody_input, enc_mask).squeeze(-1) energy_emb = self.energy_emb(energy_pred.unsqueeze(1)) enc_out = enc_out + energy_emb.transpose(1, 2) - enc_out = enc_out + pitch_emb.transpose(1, 2) # Expand to decoder time dimension len_regulated, dec_lens = regulate_len(durs_predicted, enc_out, pace) From e801915d9f31d0c87a3740558ac5cf37c4cccb6c Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Thu, 9 Feb 2023 11:55:12 -0800 Subject: [PATCH 66/73] Review comments Signed-off-by: Boris Fomitchev Signed-off-by: Jason --- nemo/collections/tts/modules/radtts.py | 4 ++-- tests/collections/tts/test_helpers.py | 1 - tests/collections/tts/test_tts_exportables.py | 16 ++++++---------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/nemo/collections/tts/modules/radtts.py b/nemo/collections/tts/modules/radtts.py index 4037a8d3ee5c..4bf9532f463a 100644 --- a/nemo/collections/tts/modules/radtts.py +++ b/nemo/collections/tts/modules/radtts.py @@ -582,8 +582,8 @@ def infer( self, speaker_id, text, - sigma=0.0, - sigma_txt=0.0, + sigma=0.7, + sigma_txt=0.7, sigma_f0=1.0, sigma_energy=1.0, speaker_id_text=None, diff --git a/tests/collections/tts/test_helpers.py b/tests/collections/tts/test_helpers.py index 50e7bccce051..68504f5e5d49 100644 --- a/tests/collections/tts/test_helpers.py +++ b/tests/collections/tts/test_helpers.py @@ -14,7 +14,6 @@ import pytest import torch -from omegaconf import DictConfig from nemo.collections.tts.helpers.helpers import regulate_len diff --git a/tests/collections/tts/test_tts_exportables.py b/tests/collections/tts/test_tts_exportables.py index 093f2c47ae8e..f23ef874966f 100644 --- a/tests/collections/tts/test_tts_exportables.py +++ b/tests/collections/tts/test_tts_exportables.py @@ -81,8 +81,8 @@ def test_RadTTSModel_export_to_torchscript(self, radtts_model): with tempfile.TemporaryDirectory() as tmpdir: filename = os.path.join(tmpdir, 'rad.ts') with torch.cuda.amp.autocast(enabled=True, cache_enabled=False, dtype=torch.float16): - input_example1 = model.input_module.input_example(max_batch=3, max_dim=777) - input_example2 = model.input_module.input_example(max_batch=16, max_dim=1024) + input_example1 = model.input_module.input_example(max_batch=13, max_dim=777) + input_example2 = model.input_module.input_example(max_batch=19, max_dim=999) model.export(output=filename, verbose=True, input_example=input_example1, check_trace=[input_example2]) @pytest.mark.run_only_on('GPU') @@ -91,13 +91,9 @@ def test_RadTTSModel_export_to_onnx(self, radtts_model): model = radtts_model.cuda() with tempfile.TemporaryDirectory() as tmpdir: filename = os.path.join(tmpdir, 'rad.onnx') - with torch.cuda.amp.autocast(enabled=False): - input_example1 = model.input_module.input_example(max_batch=3, max_dim=776) - input_example2 = model.input_module.input_example(max_batch=16, max_dim=998) + with torch.cuda.amp.autocast(enabled=True, cache_enabled=False, dtype=torch.float16): + input_example1 = model.input_module.input_example(max_batch=13, max_dim=777) + input_example2 = model.input_module.input_example(max_batch=19, max_dim=999) model.export( - output=filename, - input_example=input_example1, - verbose=True, - check_trace=[input_example2], - onnx_opset_version=14, + output=filename, input_example=input_example1, verbose=True, check_trace=[input_example2], ) From 1bf8b560da090dbfcdcec032d469dc925d26467d Mon Sep 17 00:00:00 2001 From: Sangkug Lym Date: Thu, 9 Feb 2023 12:44:46 -0800 Subject: [PATCH 67/73] per-micro-batch input loader (#5635) * per-micro-batch input loader * per-micro-batch input loader set arg default val * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * minor fix * apply per-microbatch-loader to only GPT * update docstring on micro-batch input loader * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixed the default arg val * fix batch size to 1 at log stat registration * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update container for CI Signed-off-by: ericharper * update container in jenkinsfile Signed-off-by: ericharper * update container for CI Signed-off-by: ericharper fix merge conflict * revert Jenkinsfile * Revert "revert Jenkinsfile" This reverts commit d23b7757e0f935dacde2840f234193c632a2b3be. * Update nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py Signed-off-by: Tim Moon <4406448+timmoon10@users.noreply.github.com> * add GradScaler * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: ericharper Signed-off-by: Tim Moon <4406448+timmoon10@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: ericharper Co-authored-by: Tim Moon <4406448+timmoon10@users.noreply.github.com> Signed-off-by: Jason --- Jenkinsfile | 4 +- .../megatron/data_samplers.py | 136 ++++++++++----- .../language_modeling/megatron_base_model.py | 2 +- .../language_modeling/megatron_gpt_model.py | 158 ++++++++++-------- nemo/utils/exp_manager.py | 3 +- 5 files changed, 193 insertions(+), 110 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9dcaecc4359b..f36839598941 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,7 +1,7 @@ pipeline { agent { docker { - image 'nvcr.io/nvidia/pytorch:23.01-py3' + image 'nemo_containers:23.01_apex_c3d575f2478cd379b3c2d81f41edde39791b5d92' args '--device=/dev/nvidia0 --gpus all --user 0:128 -v /home/TestData:/home/TestData -v $HOME/.cache:/root/.cache --shm-size=8g' } } @@ -4509,4 +4509,4 @@ assert_frame_equal(training_curve, gt_curve, rtol=1e-3, atol=1e-3)"''' cleanWs() } } -} \ No newline at end of file +} diff --git a/nemo/collections/nlp/data/language_modeling/megatron/data_samplers.py b/nemo/collections/nlp/data/language_modeling/megatron/data_samplers.py index fd6120ff47fa..e809c55dbb8a 100644 --- a/nemo/collections/nlp/data/language_modeling/megatron/data_samplers.py +++ b/nemo/collections/nlp/data/language_modeling/megatron/data_samplers.py @@ -14,16 +14,54 @@ """Dataloaders.""" +import abc +from typing import Optional import torch from nemo.utils import logging -class MegatronPretrainingSampler: +class BaseMegatronSampler: def __init__( - self, total_samples, consumed_samples, micro_batch_size, data_parallel_rank, data_parallel_size, drop_last=True - ): + self, + total_samples: int, + consumed_samples: int, + micro_batch_size: int, + data_parallel_rank: int, + data_parallel_size: int, + drop_last: bool = True, + global_batch_size: Optional[int] = None, + pad_samples_to_global_batch_size: Optional[bool] = False, + ) -> None: + # Sanity checks. + if total_samples <= 0: + raise RuntimeError("no sample to consume: {}".format(total_samples)) + if consumed_samples >= total_samples: + raise RuntimeError("no samples left to consume: {}, {}".format(consumed_samples, total_samples)) + if micro_batch_size <= 0: + raise RuntimeError(f"micro_batch_size size must be greater than 0, but {micro_batch_size}") + if data_parallel_size <= 0: + raise RuntimeError(f"data parallel size must be greater than 0, but {data_parallel_size}") + if data_parallel_rank >= data_parallel_size: + raise RuntimeError( + "data_parallel_rank should be smaller than data size, but {} >= {}".format( + data_parallel_rank, data_parallel_size + ) + ) + if global_batch_size is not None: + if global_batch_size % (micro_batch_size * data_parallel_size) != 0: + raise RuntimeError( + f"`global_batch_size` ({global_batch_size}) is not divisible by " + f"`micro_batch_size ({micro_batch_size}) x data_parallel_size " + f"({data_parallel_size})`" + ) + if pad_samples_to_global_batch_size and global_batch_size is None: + raise RuntimeError( + f"`pad_samples_to_global_batch_size` can be `True` only when " + f"`global_batch_size` is set to an integer value" + ) + # Keep a copy of input params for later use. self.total_samples = total_samples self.consumed_samples = consumed_samples @@ -31,26 +69,29 @@ def __init__( self.data_parallel_rank = data_parallel_rank self.micro_batch_times_data_parallel_size = self.micro_batch_size * data_parallel_size self.drop_last = drop_last + self.global_batch_size = global_batch_size + self.pad_samples_to_global_batch_size = pad_samples_to_global_batch_size logging.info( f'Instantiating MegatronPretrainingSampler with total_samples: {total_samples} and consumed_samples: {consumed_samples}' ) - # Sanity checks. - assert self.total_samples > 0, 'no sample to consume: {}'.format(self.total_samples) - assert self.consumed_samples < self.total_samples, 'no samples left to consume: {}, {}'.format( - self.consumed_samples, self.total_samples - ) - assert self.micro_batch_size > 0 - assert data_parallel_size > 0 - assert self.data_parallel_rank < data_parallel_size, ( - 'data_parallel_rank should be smaller than data size: {}, ' - '{}'.format(self.data_parallel_rank, data_parallel_size) - ) - def __len__(self): - return (self.total_samples - self.consumed_samples - 1) // self.micro_batch_times_data_parallel_size + 1 + num_available_samples: int = self.total_samples - self.consumed_samples + if self.global_batch_size is not None: + if self.drop_last: + return num_available_samples // self.global_batch_size + else: + return (num_available_samples + self.global_batch_size - 1) // self.global_batch_size + else: + return (num_available_samples - 1) // self.micro_batch_times_data_parallel_size + 1 + + @abc.abstractmethod + def __iter__(self): + ... + +class MegatronPretrainingSampler(BaseMegatronSampler): def get_start_end_idx(self): start_idx = self.data_parallel_rank * self.micro_batch_size end_idx = start_idx + self.micro_batch_size @@ -68,32 +109,45 @@ def __iter__(self): # Check the last partial batch and see drop_last is set if len(batch) > 0 and not self.drop_last: - start_idx, end_idx = self.get_start_end_idx() - yield batch[start_idx:end_idx] - + if self.pad_samples_to_global_batch_size: + for i in range( + self.data_parallel_rank, self.global_batch_size, self.micro_batch_times_data_parallel_size + ): + indices = [batch[j] for j in range(i, max(len(batch), i + self.micro_batch_size))] + num_pad = self.micro_batch_size - len(indices) + indices = indices + [-1] * num_pad + yield indices + else: + start_idx, end_idx = self.get_start_end_idx() + yield batch[start_idx:end_idx] -class MegatronPretrainingRandomSampler: - def __init__(self, total_samples, consumed_samples, micro_batch_size, data_parallel_rank, data_parallel_size): - # Keep a copy of input params for later use. - self.total_samples = total_samples - self.consumed_samples = consumed_samples - self.micro_batch_size = micro_batch_size - self.data_parallel_rank = data_parallel_rank - self.data_parallel_size = data_parallel_size - self.micro_batch_times_data_parallel_size = self.micro_batch_size * data_parallel_size - self.last_batch_size = self.total_samples % self.micro_batch_times_data_parallel_size - # Sanity checks. - assert self.total_samples > 0, 'no sample to consume: {}'.format(self.total_samples) - assert self.micro_batch_size > 0 - assert data_parallel_size > 0 - assert self.data_parallel_rank < data_parallel_size, ( - 'data_parallel_rank should be smaller than data size: {}, ' - '{}'.format(self.data_parallel_rank, data_parallel_size) +class MegatronPretrainingRandomSampler(BaseMegatronSampler): + def __init__( + self, + total_samples: int, + consumed_samples: int, + micro_batch_size: int, + data_parallel_rank: int, + data_parallel_size: int, + drop_last: bool = True, + global_batch_size: Optional[int] = None, + pad_samples_to_global_batch_size: Optional[bool] = False, + ) -> None: + super().__init__( + total_samples=total_samples, + consumed_samples=consumed_samples, + micro_batch_size=micro_batch_size, + data_parallel_rank=data_parallel_rank, + data_parallel_size=data_parallel_size, + drop_last=drop_last, + global_batch_size=global_batch_size, + pad_samples_to_global_batch_size=pad_samples_to_global_batch_size, ) - - def __len__(self): - return self.total_samples + assert ( + pad_samples_to_global_batch_size == False + ), "`MegatronPretrainingRandomSampler` does not support sample padding" + self.last_batch_size = self.total_samples % self.micro_batch_times_data_parallel_size def __iter__(self): active_total_samples = self.total_samples - self.last_batch_size @@ -119,3 +173,7 @@ def __iter__(self): self.consumed_samples += self.micro_batch_times_data_parallel_size yield batch batch = [] + + # Check the last partial batch and see drop_last is set + if len(batch) > 0 and not self.drop_last: + yield batch diff --git a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py index 7f2c0befce6b..f3ca604a0dbc 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_base_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_base_model.py @@ -242,7 +242,7 @@ def configure_gradient_clipping(self, *args, **kwargs): parameters = self._get_parameters() grad_norm = clip_grad_norm_fp32(parameters=parameters, max_norm=clip_val) - self.log('grad_norm', grad_norm, rank_zero_only=True) + self.log('grad_norm', grad_norm, rank_zero_only=True, batch_size=1) def allreduce_gradients(self): """Reduce gradients across data parallel ranks. diff --git a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py index 4215b32e9ed3..bdd3374a2c16 100644 --- a/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py +++ b/nemo/collections/nlp/models/language_modeling/megatron_gpt_model.py @@ -18,13 +18,14 @@ import numpy as np import torch from omegaconf.dictconfig import DictConfig +from pytorch_lightning.plugins.precision.native_amp import NativeMixedPrecisionPlugin from pytorch_lightning.trainer.trainer import Trainer -from nemo.collections.nlp.data.language_modeling.megatron.gpt_dataset import build_train_valid_test_datasets -from nemo.collections.nlp.data.language_modeling.megatron.megatron_batch_samplers import ( - MegatronPretrainingBatchSampler, - MegatronPretrainingRandomBatchSampler, +from nemo.collections.nlp.data.language_modeling.megatron.data_samplers import ( + MegatronPretrainingRandomSampler, + MegatronPretrainingSampler, ) +from nemo.collections.nlp.data.language_modeling.megatron.gpt_dataset import build_train_valid_test_datasets from nemo.collections.nlp.models.language_modeling.megatron.gpt_model import GPTModel from nemo.collections.nlp.models.language_modeling.megatron_base_model import MegatronBaseModel from nemo.collections.nlp.modules.common.megatron.module import Float16Module @@ -46,6 +47,7 @@ SamplingParam, TextGeneration, ) +from nemo.collections.nlp.parts.nlp_overrides import GradScaler from nemo.collections.nlp.parts.utils_funcs import get_last_rank from nemo.core.classes.common import PretrainedModelInfo from nemo.utils import logging @@ -139,6 +141,14 @@ def __init__(self, cfg: DictConfig, trainer: Trainer): # configuration used for inference self._inference_config = None + # Convert the global-batch-based profile index to micro-batch index + if hasattr(self, '_nsys_profile_enabled'): + mp_size = cfg.get('tensor_model_parallel_size', 1) * cfg.get('pipeline_model_parallel_size', 1) + data_parallel_world_size = trainer.world_size // mp_size + grad_accum_steps = cfg.get('global_batch_size') // (cfg.get('micro_batch_size') * data_parallel_world_size) + self._nsys_profile_start_step *= grad_accum_steps + self._nsys_profile_end_step *= grad_accum_steps + def set_inference_config(self, inference_config): self._inference_config = inference_config @@ -302,14 +312,11 @@ def _get_fwd_bwd_function(self): fwd_bwd_function = forward_backward_no_pipelining return fwd_bwd_function - def training_step(self, batch, batch_idx): + def training_step(self, dataloader_iter, batch_idx): """ - Our dataloaders produce a micro-batch and then we fetch - a number of microbatches depending on the global batch size and model parallel size - from the dataloader to produce a list of microbatches. - Batch should be a list of microbatches and those microbatches should on CPU. - Microbatches are then moved to GPU during the pipeline. - The list of microbatches is then piped through the pipeline using Apex fwd/bwd functions. + We pass the dataloader iterator function to the micro-batch scheduler. + The input batch to each micro-batch is fetched using the dataloader function + in the micro-batch fwd function. """ # we zero grads here because we also call backward in the apex fwd/bwd functions @@ -333,16 +340,6 @@ def training_step(self, batch, batch_idx): for param in module.embedding.parameters(): param.data_ptr() - if parallel_state.is_pipeline_first_stage(ignore_virtual=True) or parallel_state.is_pipeline_last_stage( - ignore_virtual=True - ): - # we prepare the micro batches for the apex fwd/bwd function - batch_for_pipeline = self.process_global_batch(batch) - else: - # The intermediate pipeline stages do not need any inputs from data loader - # GPT3 uses decoder with AttnMask:causal, thus doesn't need attention_mask - batch_for_pipeline = None - tensor_shape = [self.cfg.encoder_seq_length, self.cfg.micro_batch_size, self.cfg.hidden_size] # handle asynchronous grad reduction @@ -369,7 +366,7 @@ def training_step(self, batch, batch_idx): losses_reduced_per_micro_batch = fwd_bwd_function( forward_step_func=self.get_forward_output_and_loss_func(), - batch=batch_for_pipeline, + batch=dataloader_iter, model=self.model, forward_only=False, tensor_shape=tensor_shape, @@ -424,18 +421,22 @@ def training_step(self, batch, batch_idx): if self.cfg.precision == 16: loss_scale = self.trainer.precision_plugin.scaler._scale if loss_scale is not None: - self.log('loss_scale', loss_scale) + self.log('loss_scale', loss_scale, batch_size=1) - self.log('reduced_train_loss', loss_mean, prog_bar=True, rank_zero_only=True) + self.log('reduced_train_loss', loss_mean, prog_bar=True, rank_zero_only=True, batch_size=1) lr = self._optimizer.param_groups[0]['lr'] - self.log('lr', lr, rank_zero_only=True) - self.log('global_step', self.trainer.global_step, prog_bar=True, rank_zero_only=True) + self.log('lr', lr, rank_zero_only=True, batch_size=1) + self.log( + 'global_step', self.trainer.global_step, prog_bar=True, rank_zero_only=True, batch_size=1, + ) + # TODO: make sure compute_consumed_samples works for pipeline parallelism self.log( 'consumed_samples', self.compute_consumed_samples(self.trainer.global_step - self.init_global_step), prog_bar=True, rank_zero_only=True, + batch_size=1, ) return loss_mean @@ -517,42 +518,42 @@ def allreduce_first_last_embeddings(self): torch.distributed.all_reduce(grad, group=parallel_state.get_embedding_group()) def get_forward_output_and_loss_func(self, validation_step=False): - def fwd_output_and_loss_func(batch, model, checkpoint_activations_all_layers=None): + def fwd_output_and_loss_func(dataloader_iter, model, checkpoint_activations_all_layers=None): + # GPT3 uses only causal mask, which doesn't need attention mask if parallel_state.get_pipeline_model_parallel_world_size() == 1: - batch = [x.cuda(non_blocking=True) for x in batch] - tokens, labels, loss_mask, attention_mask, position_ids = batch - attention_mask = attention_mask[0:1] + batch = next(dataloader_iter) + for k in batch.keys(): + batch[k] = batch[k].cuda(non_blocking=True) if k not in ['attention_mask'] else None else: - # GPT3 uses only causal mask, which doesn't need attention mask if parallel_state.is_pipeline_first_stage(): - # Fist pipeline stage needs only the tokens and position_ids - tokens = batch[0].cuda(non_blocking=True) - position_ids = batch[4].cuda(non_blocking=True) - labels, loss_mask, attention_mask = None, None, None + batch = next(dataloader_iter) + # First pipeline stage needs only the tokens and position_ids + for k in batch.keys(): + batch[k] = batch[k].cuda(non_blocking=True) if k in ['tokens', 'position_ids'] else None elif parallel_state.is_pipeline_last_stage(): + batch = next(dataloader_iter) # Last pipeline stage needs only the labels and loss_mask - labels = batch[1].cuda(non_blocking=True) - loss_mask = batch[2].cuda(non_blocking=True) - tokens, attention_mask, position_ids = None, None, None + for k in batch.keys(): + batch[k] = batch[k].cuda(non_blocking=True) if k in ['labels', 'loss_mask'] else None else: # Intermediate pipeline stage doesn't need any inputs - tokens, labels, loss_mask, attention_mask, position_ids = None, None, None, None, None + batch = {k: None for k in ['tokens', 'position_ids', 'attention_mask', 'labels']} output_tensor = model( - tokens, - position_ids, - attention_mask, - labels, + batch['tokens'], + batch['position_ids'], + batch['attention_mask'], + batch['labels'], checkpoint_activations_all_layers=checkpoint_activations_all_layers, ) def loss_func(output_tensor): # Loss for a micro-batch (ub) - loss_for_ub = self.loss_func(loss_mask, output_tensor) + loss_for_ub = self.loss_func(batch['loss_mask'], output_tensor) if validation_step and not self.cfg.data.get('validation_drop_last', True): - num_valid_tokens_in_ub = loss_mask.sum() + num_valid_tokens_in_ub = batch['loss_mask'].sum() if loss_for_ub.isnan(): - assert loss_mask.count_nonzero() == 0, 'Got NaN loss with non-empty input' + assert batch['loss_mask'].count_nonzero() == 0, 'Got NaN loss with non-empty input' loss_sum_for_ub = torch.zeros_like(num_valid_tokens_in_ub) else: loss_sum_for_ub = num_valid_tokens_in_ub * loss_for_ub @@ -606,7 +607,7 @@ def id_func(output_tensor): return fwd_output_only_func - def validation_step(self, batch, batch_idx): + def validation_step(self, dataloader_iter, batch_idx): """ Our dataloaders produce a micro-batch and then we fetch a number of microbatches depending on the global batch size and model parallel size @@ -614,7 +615,6 @@ def validation_step(self, batch, batch_idx): The list of microbatches is then piped through the pipeline using Apex fwd/bwd functions. """ - batch_for_pipeline = self.process_global_batch(batch) tensor_shape = [self.cfg.encoder_seq_length, self.cfg.micro_batch_size, self.cfg.hidden_size] # run forward passes for an entire global batch @@ -623,7 +623,7 @@ def validation_step(self, batch, batch_idx): losses_reduced_per_micro_batch = fwd_bwd_function( forward_step_func=self.get_forward_output_and_loss_func(validation_step=True), - batch=batch_for_pipeline, + batch=dataloader_iter, model=self.model, forward_only=True, tensor_shape=tensor_shape, @@ -671,7 +671,7 @@ def validation_epoch_end(self, outputs): # we can only log on one rank if it is rank zero so we broadcast from last rank torch.distributed.broadcast(averaged_loss, get_last_rank()) - self.log('val_loss', averaged_loss, prog_bar=True, rank_zero_only=True) + self.log('val_loss', averaged_loss, prog_bar=True, rank_zero_only=True, batch_size=1) def test_step(self, batch, batch_idx): return self.validation_step(batch, batch_idx) @@ -687,18 +687,6 @@ def loss_func(self, loss_mask, output_tensor): loss = torch.sum(losses.view(-1) * loss_mask) / loss_mask.sum() # sequence level nll return loss - def process_global_batch(self, global_batch, global_batch_size=None): - """ Prepares the global batch for apex fwd/bwd functions. - Global batch is a list of micro batches. - """ - return [ - global_batch["tokens"], - global_batch["labels"], - global_batch["loss_mask"], - global_batch["attention_mask"], - global_batch["position_ids"], - ] - def build_train_valid_test_datasets(self): logging.info('Building GPT datasets.') if self.trainer.limit_val_batches > 1.0 and isinstance(self.trainer.limit_val_batches, float): @@ -750,26 +738,24 @@ def build_pretraining_data_loader( # Megatron sampler if hasattr(self.cfg.data, 'dataloader_type') and self.cfg.data.dataloader_type is not None: if self.cfg.data.dataloader_type == 'single': - batch_sampler = MegatronPretrainingBatchSampler( + batch_sampler = MegatronPretrainingSampler( total_samples=len(dataset), consumed_samples=consumed_samples, micro_batch_size=self.cfg.micro_batch_size, - global_batch_size=self.cfg.global_batch_size, data_parallel_rank=parallel_state.get_data_parallel_rank(), data_parallel_size=parallel_state.get_data_parallel_world_size(), drop_last=drop_last, + global_batch_size=self.cfg.global_batch_size, pad_samples_to_global_batch_size=pad_samples_to_global_batch_size, ) elif self.cfg.data.dataloader_type == 'cyclic': - batch_sampler = MegatronPretrainingRandomBatchSampler( + batch_sampler = MegatronPretrainingRandomSampler( total_samples=len(dataset), consumed_samples=consumed_samples, micro_batch_size=self.cfg.micro_batch_size, - global_batch_size=self.cfg.global_batch_size, data_parallel_rank=parallel_state.get_data_parallel_rank(), data_parallel_size=parallel_state.get_data_parallel_world_size(), drop_last=self.cfg.get('drop_last', True), - pad_samples_to_global_batch_size=pad_samples_to_global_batch_size, ) else: raise ValueError('cfg.data.dataloader_type must be "single" or "cyclic"') @@ -1006,3 +992,41 @@ def parameters(self): return itertools.chain.from_iterable(module.parameters() for module in self.model) else: return self.model.parameters() + + def on_train_batch_end(self, outputs, dataloader_iter: Any, batch_idx: int, unused: Optional[int] = 0) -> None: + super().on_train_batch_end(outputs, dataloader_iter, batch_idx) + + # TODO: Replace with newer override for scheduler.step() instead of + # search for plugins for fp16 GradScalar + if self.trainer.precision_plugin is not None and isinstance( + self.trainer.precision_plugin, NativeMixedPrecisionPlugin + ): + precision_plugin = self.trainer.precision_plugin + + if ( + hasattr(precision_plugin, 'scaler') + and precision_plugin.scaler is not None + and isinstance(precision_plugin.scaler, GradScaler) + ): + grad_scaler = precision_plugin.scaler + + # If the grad scaler skipped its optimizer step due to infs/nans, + # decrement the step of all schedulers. + if grad_scaler.optimizer_update_skipped is not None and grad_scaler.optimizer_update_skipped is True: + scheduler_cfgs = self.trainer.lr_scheduler_configs + + if not scheduler_cfgs or not self.trainer.lightning_module.automatic_optimization: + return + + for scheduler_cfg in scheduler_cfgs: + # Decrement the counter by 2, then perform a scheduler.step() to perform a no-up + # as well as update the optimizer lr in all param groups + scheduler_cfg.scheduler.last_epoch -= 2 + scheduler_cfg.scheduler.step() + + # Removing the line below because it messes up train_valid_test_num_samples calculation. + # self.trainer.fit_loop.max_steps = self.trainer.fit_loop.max_steps + 1 + + # Reset the optimizer update skipped to `None` - this is to prevent scheduler no-ops during + # accumulated gradient updates. + grad_scaler.optimizer_update_skipped = None diff --git a/nemo/utils/exp_manager.py b/nemo/utils/exp_manager.py index 4b1668fc319d..769fb24680ea 100644 --- a/nemo/utils/exp_manager.py +++ b/nemo/utils/exp_manager.py @@ -185,7 +185,8 @@ def _on_batch_start(self, name): def _on_batch_end(self, name, pl_module): self.timer.stop(name) - pl_module.log(name, self.timer[name], on_step=True, on_epoch=False) + # Set the `batch_size=1` as WAR for `dataloader_iter`, which is not used for any metric + pl_module.log(name, self.timer[name], on_step=True, on_epoch=False, batch_size=1) def on_train_batch_start(self, trainer, pl_module, batch, batch_idx): self._on_batch_start("train_step_timing") From 368f57ebd5001e998387afb6f17fcb15498360a1 Mon Sep 17 00:00:00 2001 From: fayejf <36722593+fayejf@users.noreply.github.com> Date: Thu, 9 Feb 2023 16:51:15 -0800 Subject: [PATCH 68/73] update container in readme (#5981) Signed-off-by: fayejf <36722593+fayejf@users.noreply.github.com> Signed-off-by: Jason --- README.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index 1a082648fcfb..9a211e6928cd 100644 --- a/README.rst +++ b/README.rst @@ -251,13 +251,13 @@ NeMo Text Processing, specifically (Inverse) Text Normalization, requires `Pynin Docker containers: ~~~~~~~~~~~~~~~~~~ -We release NeMo containers alongside NeMo releases. For example, NeMo ``r1.14.0`` comes with container ``nemo:22.11``, you may find more details about released containers in `releases page `_. +We release NeMo containers alongside NeMo releases. For example, NeMo ``r1.15.0`` comes with container ``nemo:22.12``, you may find more details about released containers in `releases page `_. To use built container, please run .. code-block:: bash - docker pull nvcr.io/nvidia/nemo:22.11 + docker pull nvcr.io/nvidia/nemo:22.12 To build a nemo container with Dockerfile from a branch, please run From 8a879c45906e8d96f48d3f03e4d7d7d774c14ee7 Mon Sep 17 00:00:00 2001 From: Somshubra Majumdar Date: Thu, 9 Feb 2023 17:04:55 -0800 Subject: [PATCH 69/73] Support Alignment Extraction for all RNNT Beam decoding methods (#5925) * Partial impl of ALSD alignment extraction Signed-off-by: smajumdar * Partial impl of ALSD alignment extraction Signed-off-by: smajumdar * Remove everything else Signed-off-by: smajumdar * Support dataclass in AbstractRNNTDecoding Signed-off-by: smajumdar * Add first draft unittest Signed-off-by: smajumdar * Correct the logic to more to the next timestep in the alignment Signed-off-by: smajumdar * Finalize ALSD alignment generation Signed-off-by: smajumdar * Add support for TSD greedy alignment extraction Signed-off-by: smajumdar * Add support for mAES greedy alignment extraction Signed-off-by: smajumdar * Finalize extraction of alignments from all beam algorithms for RNNT Signed-off-by: smajumdar * Style fixes Signed-off-by: smajumdar * Add copyright Signed-off-by: smajumdar * Address comments Signed-off-by: smajumdar --------- Signed-off-by: smajumdar Signed-off-by: Jason --- nemo/collections/asr/metrics/rnnt_wer.py | 8 +- .../parts/submodules/rnnt_beam_decoding.py | 201 ++++++++++++-- .../asr/decoding/test_rnnt_decoding.py | 255 ++++++++++++++++++ 3 files changed, 436 insertions(+), 28 deletions(-) create mode 100644 tests/collections/asr/decoding/test_rnnt_decoding.py diff --git a/nemo/collections/asr/metrics/rnnt_wer.py b/nemo/collections/asr/metrics/rnnt_wer.py index 2777ca4d856c..b7b002a77861 100644 --- a/nemo/collections/asr/metrics/rnnt_wer.py +++ b/nemo/collections/asr/metrics/rnnt_wer.py @@ -14,12 +14,13 @@ import copy from abc import abstractmethod -from dataclasses import dataclass +from dataclasses import dataclass, is_dataclass from typing import Callable, Dict, List, Optional, Tuple, Union import editdistance import numpy as np import torch +from omegaconf import OmegaConf from torchmetrics import Metric from nemo.collections.asr.metrics.wer import move_dimension_to_the_front @@ -193,6 +194,11 @@ class AbstractRNNTDecoding(ConfidenceMixin): def __init__(self, decoding_cfg, decoder, joint, blank_id: int): super(AbstractRNNTDecoding, self).__init__() + + # Convert dataclass to config object + if is_dataclass(decoding_cfg): + decoding_cfg = OmegaConf.structured(decoding_cfg) + self.cfg = decoding_cfg self.blank_id = blank_id self.num_extra_outputs = joint.num_extra_outputs diff --git a/nemo/collections/asr/parts/submodules/rnnt_beam_decoding.py b/nemo/collections/asr/parts/submodules/rnnt_beam_decoding.py index c4e86054a1b3..949e410e41fd 100644 --- a/nemo/collections/asr/parts/submodules/rnnt_beam_decoding.py +++ b/nemo/collections/asr/parts/submodules/rnnt_beam_decoding.py @@ -48,6 +48,10 @@ def pack_hypotheses(hypotheses: List[Hypothesis]) -> List[Hypothesis]: if hyp.dec_state is not None: hyp.dec_state = _states_to_device(hyp.dec_state) + # Remove -1 from timestep + if hyp.timestep is not None and len(hyp.timestep) > 0 and hyp.timestep[0] == -1: + hyp.timestep = hyp.timestep[1:] + return hypotheses @@ -266,10 +270,10 @@ def __init__( self.maes_expansion_gamma = float(maes_expansion_gamma) self.maes_expansion_beta = int(maes_expansion_beta) - if self.maes_prefix_alpha < 0: + if self.search_type == 'maes' and self.maes_prefix_alpha < 0: raise ValueError("`maes_prefix_alpha` must be a positive integer.") - if self.vocab_size < beam_size + maes_expansion_beta: + if self.search_type == 'maes' and self.vocab_size < beam_size + maes_expansion_beta: raise ValueError( f"beam_size ({beam_size}) + expansion_beta ({maes_expansion_beta}) " f"should be smaller or equal to vocabulary size ({self.vocab_size})." @@ -278,7 +282,7 @@ def __init__( if search_type == 'maes': self.max_candidates += maes_expansion_beta - if self.maes_num_steps < 2: + if self.search_type == 'maes' and self.maes_num_steps < 2: raise ValueError("`maes_num_steps` must be greater than 1.") if softmax_temperature != 1.0 and language_model is not None: @@ -302,7 +306,7 @@ def __call__( """Perform general beam search. Args: - encoder_output: Encoded speech features (B, T_max, D_enc) + encoder_output: Encoded speech features (B, D_enc, T_max) encoded_lengths: Lengths of the encoder outputs Returns: @@ -425,7 +429,8 @@ def greedy_search( not_blank = True symbols_added = 0 - while not_blank and (symbols_added < self.max_candidates): + # TODO: Figure out how to remove this hard coding afterwords + while not_blank and (symbols_added < 5): ytu = torch.log_softmax(self.joint.joint(hi, y) / self.softmax_temperature, dim=-1) # [1, 1, 1, V + 1] ytu = ytu[0, 0, 0, :] # [V + 1] @@ -568,6 +573,7 @@ def default_beam_search( hyps.append(new_hyp) + # Determine whether the alignment should be blank or token if self.preserve_alignments: if k == self.blank: new_hyp.alignments[-1].append( @@ -619,9 +625,6 @@ def time_sync_decoding( Returns: nbest_hyps: N-best decoding results """ - if self.preserve_alignments: - raise NotImplementedError("`preseve_alignments` is not implemented for Time-Synchronous Decoding.") - if partial_hypotheses is not None: raise NotImplementedError("`partial_hypotheses` support is not supported") @@ -653,6 +656,11 @@ def time_sync_decoding( ] cache = {} + # Initialize alignments + if self.preserve_alignments: + for hyp in B: + hyp.alignments = [[]] + for i in range(int(encoded_lengths)): hi = h[:, i : i + 1, :] @@ -683,16 +691,23 @@ def time_sync_decoding( if hyp.y_sequence not in seq_A: # If the sequence is not in seq_A, add it as the blank token # In this step, we dont add a token but simply update score - A.append( - Hypothesis( - score=(hyp.score + float(beam_logp[j, self.blank])), - y_sequence=hyp.y_sequence[:], - dec_state=hyp.dec_state, - lm_state=hyp.lm_state, - timestep=hyp.timestep[:], - length=encoded_lengths, - ) + _temp_hyp = Hypothesis( + score=(hyp.score + float(beam_logp[j, self.blank])), + y_sequence=hyp.y_sequence[:], + dec_state=hyp.dec_state, + lm_state=hyp.lm_state, + timestep=hyp.timestep[:], + length=encoded_lengths, ) + + # Preserve the blank token alignment + if self.preserve_alignments: + _temp_hyp.alignments = copy.deepcopy(hyp.alignments) + _temp_hyp.alignments[-1].append( + (beam_logp[j].clone(), torch.tensor(self.blank, dtype=torch.int32)), + ) + + A.append(_temp_hyp) else: # merge the existing blank hypothesis score with current score. dict_pos = seq_A.index(hyp.y_sequence) @@ -717,14 +732,45 @@ def time_sync_decoding( length=encoded_lengths, ) + # Preserve token alignment + if self.preserve_alignments: + new_hyp.alignments = copy.deepcopy(hyp.alignments) + new_hyp.alignments[-1].append( + (beam_topk[0].clone().cpu(), torch.tensor(k, dtype=torch.int32)), + ) + D.append(new_hyp) # Prune beam C = sorted(D, key=lambda x: x.score, reverse=True)[:beam] + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for C_i in C: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = C_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + C_i.alignments.append([]) # blank buffer for next timestep + # Prune beam B = sorted(A, key=lambda x: x.score, reverse=True)[:beam] + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for B_i in B: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = B_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + B_i.alignments.append([]) # blank buffer for next timestep + + # Remove trailing empty list of alignments + if self.preserve_alignments: + for h in B: + if len(h.alignments[-1]) == 0: + del h.alignments[-1] + return self.sort_nbest(B) def align_length_sync_decoding( @@ -739,11 +785,6 @@ def align_length_sync_decoding( Returns: nbest_hyps: N-best decoding results """ - if self.preserve_alignments: - raise NotImplementedError( - "`preseve_alignments` is not implemented for Alignment-length Synchronous Decoding." - ) - if partial_hypotheses is not None: raise NotImplementedError("`partial_hypotheses` support is not supported") @@ -784,6 +825,10 @@ def align_length_sync_decoding( ) ] + # Initialize alignments + if self.preserve_alignments: + B[0].alignments = [[]] + final = [] cache = {} @@ -865,6 +910,14 @@ def align_length_sync_decoding( length=i, ) + if self.preserve_alignments: + new_hyp.alignments = copy.deepcopy(hyp.alignments) + + # Add the alignment of blank at this step + new_hyp.alignments[-1].append( + (beam_logp[j].clone().cpu(), torch.tensor(self.blank, dtype=torch.int32)) + ) + # Add blank prediction to A A.append(new_hyp) @@ -894,6 +947,14 @@ def align_length_sync_decoding( length=i, ) + if self.preserve_alignments: + new_hyp.alignments = copy.deepcopy(hyp.alignments) + + # Add the alignment of Uj for this beam candidate at this step + new_hyp.alignments[-1].append( + (beam_logp[j].clone().cpu(), torch.tensor(new_hyp.y_sequence[-1], dtype=torch.int32)) + ) + A.append(new_hyp) # Prune and recombine same hypothesis @@ -902,13 +963,35 @@ def align_length_sync_decoding( B = sorted(A, key=lambda x: x.score, reverse=True)[:beam] B = self.recombine_hypotheses(B) + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for B_i in B: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = B_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + B_i.alignments.append([]) # blank buffer for next timestep + # If B_ is empty list, then we may be able to early exit elif len(batch_ids) == len(batch_removal_ids): + # break early break if final: + # Remove trailing empty list of alignments + if self.preserve_alignments: + for h in final: + if len(h.alignments[-1]) == 0: + del h.alignments[-1] + return self.sort_nbest(final) else: + # Remove trailing empty list of alignments + if self.preserve_alignments: + for h in B: + if len(h.alignments[-1]) == 0: + del h.alignments[-1] + return B def modified_adaptive_expansion_search( @@ -923,11 +1006,6 @@ def modified_adaptive_expansion_search( Returns: nbest_hyps: N-best decoding results """ - if self.preserve_alignments: - raise NotImplementedError( - "`preseve_alignments` is not implemented for Alignment-length Synchronous Decoding." - ) - if partial_hypotheses is not None: raise NotImplementedError("`partial_hypotheses` support is not supported") @@ -952,6 +1030,11 @@ def modified_adaptive_expansion_search( cache = {} + # Initialize alignment buffer + if self.preserve_alignments: + for hyp in init_tokens: + hyp.alignments = [[]] + # Decode a batch of beam states and scores beam_dec_out, beam_state, beam_lm_tokens = self.decoder.batch_score_hypothesis(init_tokens, cache, beam_state) state = self.decoder.batch_select_state(beam_state, 0) @@ -979,9 +1062,16 @@ def modified_adaptive_expansion_search( dec_out=[beam_dec_out[0]], lm_state=lm_state, lm_scores=lm_scores, + timestep=[-1], + length=0, ) ] + # Initialize alignment buffer + if self.preserve_alignments: + for hyp in kept_hyps: + hyp.alignments = [[]] + for t in range(encoded_lengths): enc_out_t = h[t : t + 1].unsqueeze(0) # [1, 1, D] @@ -1029,6 +1119,8 @@ def modified_adaptive_expansion_search( dec_state=hyp.dec_state, lm_state=hyp.lm_state, lm_scores=hyp.lm_scores, + timestep=hyp.timestep[:], + length=t, ) # If the expansion was for blank @@ -1039,6 +1131,7 @@ def modified_adaptive_expansion_search( # new_hyp.y_sequence.append(int(k)) if (new_hyp.y_sequence + [int(k)]) not in duplication_check: new_hyp.y_sequence.append(int(k)) + new_hyp.timestep.append(t) # TODO: Setup LM if self.language_model is not None: @@ -1049,11 +1142,38 @@ def modified_adaptive_expansion_search( list_exp.append(new_hyp) + # Preserve alignments + if self.preserve_alignments: + new_hyp.alignments = copy.deepcopy(hyp.alignments) + + if k == self.blank: + new_hyp.alignments[-1].append( + (beam_logp[i].clone().cpu(), torch.tensor(self.blank, dtype=torch.int32)), + ) + else: + new_hyp.alignments[-1].append( + ( + beam_logp[i].clone().cpu(), + torch.tensor(new_hyp.y_sequence[-1], dtype=torch.int32), + ), + ) + # If there were no token expansions in any of the hypotheses, # Early exit if not list_exp: kept_hyps = sorted(list_b, key=lambda x: x.score, reverse=True)[:beam] + # Update aligments with next step + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for h_i in kept_hyps: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = h_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + h_i.alignments.append([]) # blank buffer for next timestep + + # Early exit break else: @@ -1102,6 +1222,17 @@ def modified_adaptive_expansion_search( # Copy the expanded hypothesis hyps = list_exp[:] + + # Update aligments with next step + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for h_i in hyps: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = h_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + h_i.alignments.append([]) # blank buffer for next timestep + else: # Extract the log probabilities beam_logp = torch.log_softmax( @@ -1128,6 +1259,22 @@ def modified_adaptive_expansion_search( # Finally, update the kept hypothesis of sorted top Beam candidates kept_hyps = sorted(list_b + list_exp, key=lambda x: x.score, reverse=True)[:beam] + # Update aligments with next step + if self.preserve_alignments: + # convert Ti-th logits into a torch array + for h_i in kept_hyps: + # Check if the last token emitted at last timestep was a blank + # If so, move to next timestep + logp, label = h_i.alignments[-1][-1] # The last alignment of this step + if int(label) == self.blank: + h_i.alignments.append([]) # blank buffer for next timestep + + # Remove trailing empty list of alignments + if self.preserve_alignments: + for h in kept_hyps: + if len(h.alignments[-1]) == 0: + del h.alignments[-1] + # Sort the hypothesis with best scores return self.sort_nbest(kept_hyps) diff --git a/tests/collections/asr/decoding/test_rnnt_decoding.py b/tests/collections/asr/decoding/test_rnnt_decoding.py new file mode 100644 index 000000000000..76b7c98ac0b0 --- /dev/null +++ b/tests/collections/asr/decoding/test_rnnt_decoding.py @@ -0,0 +1,255 @@ +# Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from functools import lru_cache + +import pytest +import torch +from omegaconf import DictConfig + +from nemo.collections.asr.metrics.rnnt_wer import RNNTDecoding, RNNTDecodingConfig +from nemo.collections.asr.metrics.rnnt_wer_bpe import RNNTBPEDecoding, RNNTBPEDecodingConfig +from nemo.collections.asr.models import ASRModel +from nemo.collections.asr.modules import RNNTDecoder, RNNTJoint +from nemo.collections.asr.parts.mixins import mixins +from nemo.collections.asr.parts.submodules import rnnt_beam_decoding as beam_decode +from nemo.collections.asr.parts.submodules import rnnt_greedy_decoding as greedy_decode +from nemo.collections.asr.parts.utils import rnnt_utils +from nemo.core.utils import numba_utils +from nemo.core.utils.numba_utils import __NUMBA_MINIMUM_VERSION__ + +NUMBA_RNNT_LOSS_AVAILABLE = numba_utils.numba_cpu_is_supported( + __NUMBA_MINIMUM_VERSION__ +) or numba_utils.numba_cuda_is_supported(__NUMBA_MINIMUM_VERSION__) + + +def char_vocabulary(): + return [' ', 'a', 'b', 'c', 'd', 'e', 'f'] + + +@pytest.fixture() +@lru_cache(maxsize=8) +def tmp_tokenizer(test_data_dir): + cfg = DictConfig({'dir': os.path.join(test_data_dir, "asr", "tokenizers", "an4_wpe_128"), 'type': 'wpe'}) + + class _TmpASRBPE(mixins.ASRBPEMixin): + def register_artifact(self, _, vocab_path): + return vocab_path + + asrbpe = _TmpASRBPE() + asrbpe._setup_tokenizer(cfg) + return asrbpe.tokenizer + + +@lru_cache(maxsize=2) +def get_rnnt_decoder(vocab_size, decoder_output_size=4): + prednet_cfg = {'pred_hidden': decoder_output_size, 'pred_rnn_layers': 1} + torch.manual_seed(0) + decoder = RNNTDecoder(prednet=prednet_cfg, vocab_size=vocab_size) + decoder.freeze() + return decoder + + +@lru_cache(maxsize=2) +def get_rnnt_joint(vocab_size, vocabulary=None, encoder_output_size=4, decoder_output_size=4, joint_output_shape=4): + jointnet_cfg = { + 'encoder_hidden': encoder_output_size, + 'pred_hidden': decoder_output_size, + 'joint_hidden': joint_output_shape, + 'activation': 'relu', + } + torch.manual_seed(0) + joint = RNNTJoint(jointnet_cfg, vocab_size, vocabulary=vocabulary) + joint.freeze() + return joint + + +@lru_cache(maxsize=1) +def get_model_encoder_output(data_dir, model_name): + # Import inside function to avoid issues with dependencies + import librosa + + audio_filepath = os.path.join(data_dir, 'asr', 'test', 'an4', 'wav', 'cen3-fjlp-b.wav') + + with torch.no_grad(): + model = ASRModel.from_pretrained(model_name, map_location='cpu') # type: ASRModel + model.preprocessor.featurizer.dither = 0.0 + model.preprocessor.featurizer.pad_to = 0 + + audio, sr = librosa.load(path=audio_filepath, sr=16000, mono=True) + + input_signal = torch.tensor(audio, dtype=torch.float32).unsqueeze(0) + input_signal_length = torch.tensor([len(audio)], dtype=torch.int32) + + encoded, encoded_len = model(input_signal=input_signal, input_signal_length=input_signal_length) + + return model, encoded, encoded_len + + +def decode_text_from_greedy_hypotheses(hyps, decoding): + decoded_hyps = decoding.decode_hypothesis(hyps) # type: List[str] + + return decoded_hyps + + +def decode_text_from_nbest_hypotheses(hyps, decoding): + hypotheses = [] + all_hypotheses = [] + + for nbest_hyp in hyps: # type: rnnt_utils.NBestHypotheses + n_hyps = nbest_hyp.n_best_hypotheses # Extract all hypotheses for this sample + decoded_hyps = decoding.decode_hypothesis(n_hyps) # type: List[str] + + hypotheses.append(decoded_hyps[0]) # best hypothesis + all_hypotheses.append(decoded_hyps) + + return hypotheses, all_hypotheses + + +class TestRNNTDecoding: + @pytest.mark.unit + def test_constructor(self): + cfg = RNNTDecodingConfig() + vocab = char_vocabulary() + decoder = get_rnnt_decoder(vocab_size=len(vocab)) + joint = get_rnnt_joint(vocab_size=len(vocab)) + decoding = RNNTDecoding(decoding_cfg=cfg, decoder=decoder, joint=joint, vocabulary=vocab) + assert decoding is not None + + @pytest.mark.unit + def test_constructor_subword(self, tmp_tokenizer): + cfg = RNNTBPEDecodingConfig() + vocab = tmp_tokenizer.vocab + decoder = get_rnnt_decoder(vocab_size=len(vocab)) + joint = get_rnnt_joint(vocab_size=len(vocab)) + decoding = RNNTBPEDecoding(decoding_cfg=cfg, decoder=decoder, joint=joint, tokenizer=tmp_tokenizer) + assert decoding is not None + + @pytest.mark.skipif( + not NUMBA_RNNT_LOSS_AVAILABLE, reason='RNNTLoss has not been compiled with appropriate numba version.', + ) + @pytest.mark.with_downloads + @pytest.mark.unit + def test_greedy_decoding_preserve_alignments(self, test_data_dir): + model, encoded, encoded_len = get_model_encoder_output(test_data_dir, 'stt_en_conformer_transducer_small') + + beam = greedy_decode.GreedyRNNTInfer( + model.decoder, + model.joint, + blank_index=model.joint.num_classes_with_blank - 1, + max_symbols_per_step=5, + preserve_alignments=True, + ) + + enc_out = encoded + enc_len = encoded_len + + with torch.no_grad(): + hyps = beam(encoder_output=enc_out, encoded_lengths=enc_len)[0] # type: rnnt_utils.Hypothesis + hyp = decode_text_from_greedy_hypotheses(hyps, model.decoding) + hyp = hyp[0] + + assert hyp.alignments is not None + + # Use the following commented print statements to check + # the alignment of other algorithms compared to the default + print("Text", hyp.text) + for t in range(len(hyp.alignments)): + t_u = [] + for u in range(len(hyp.alignments[t])): + logp, label = hyp.alignments[t][u] + assert torch.is_tensor(logp) + assert torch.is_tensor(label) + + t_u.append(int(label)) + + print(f"Tokens at timestep {t} = {t_u}") + print() + + # @pytest.mark.skipif( + # not NUMBA_RNNT_LOSS_AVAILABLE, reason='RNNTLoss has not been compiled with appropriate numba version.', + # ) + # @pytest.mark.with_downloads + @pytest.mark.unit + @pytest.mark.parametrize( + "beam_config", + [ + {"search_type": "greedy"}, + {"search_type": "default", "beam_size": 2,}, + {"search_type": "alsd", "alsd_max_target_len": 0.5, "beam_size": 2,}, + {"search_type": "tsd", "tsd_max_sym_exp_per_step": 3, "beam_size": 2,}, + {"search_type": "maes", "maes_num_steps": 2, "maes_expansion_beta": 2, "beam_size": 2}, + {"search_type": "maes", "maes_num_steps": 3, "maes_expansion_beta": 1, "beam_size": 2}, + ], + ) + def test_beam_decoding_preserve_alignments(self, test_data_dir, beam_config): + beam_size = beam_config.pop("beam_size", 1) + model, encoded, encoded_len = get_model_encoder_output(test_data_dir, 'stt_en_conformer_transducer_small') + beam = beam_decode.BeamRNNTInfer( + model.decoder, + model.joint, + beam_size=beam_size, + return_best_hypothesis=False, + preserve_alignments=True, + **beam_config, + ) + + enc_out = encoded + enc_len = encoded_len + blank_id = torch.tensor(model.joint.num_classes_with_blank - 1, dtype=torch.int32) + + with torch.no_grad(): + hyps = beam(encoder_output=enc_out, encoded_lengths=enc_len)[0] # type: rnnt_utils.Hypothesis + hyp, all_hyps = decode_text_from_nbest_hypotheses(hyps, model.decoding) + hyp = hyp[0] # best hypothesis + all_hyps = all_hyps[0] + + assert hyp.alignments is not None + + if beam_config['search_type'] == 'alsd': + assert len(all_hyps) <= int(beam_config['alsd_max_target_len'] * float(enc_len[0])) + + print("Beam search algorithm :", beam_config['search_type']) + # Use the following commented print statements to check + # the alignment of other algorithms compared to the default + for idx, hyp_ in enumerate(all_hyps): # type: (int, rnnt_utils.Hypothesis) + print("Hyp index", idx + 1, "text :", hyp_.text) + + # Alignment length (T) must match audio length (T) + assert len(hyp_.alignments) == enc_len[0] + + for t in range(len(hyp_.alignments)): + t_u = [] + for u in range(len(hyp_.alignments[t])): + logp, label = hyp_.alignments[t][u] + assert torch.is_tensor(logp) + assert torch.is_tensor(label) + + t_u.append(int(label)) + + # Blank token must be the last token in the current + if len(t_u) > 1: + assert t_u[-1] == blank_id + + # No blank token should be present in the current timestep other than at the end + for token in t_u[:-1]: + assert token != blank_id + + print(f"Tokens at timestep {t} = {t_u}") + print() + + assert len(hyp_.timestep) > 0 + print("Timesteps", hyp_.timestep) + print() From c3198754b8a5e397afb5ac78ea4aea608c591351 Mon Sep 17 00:00:00 2001 From: Sean Naren Date: Fri, 10 Feb 2023 01:36:52 +0000 Subject: [PATCH 70/73] Add AWS SageMaker ASR Examples (#5638) * Base code for AWS SageMaker example Signed-off-by: SeanNaren * Remove format Signed-off-by: SeanNaren * wrap Signed-off-by: SeanNaren * Add a notebook with the code Signed-off-by: SeanNaren * Setup Signed-off-by: SeanNaren * Update notebook Signed-off-by: SeanNaren * Remove space Signed-off-by: SeanNaren * Fix spelling mistake Signed-off-by: SeanNaren * Add message to explain usage Signed-off-by: SeanNaren * Add CommonVoice esperanto example Signed-off-by: SeanNaren * Fix path Signed-off-by: SeanNaren * Fixes Signed-off-by: SeanNaren * Import sox locally, add documentation Signed-off-by: SeanNaren * Address reviews Signed-off-by: SeanNaren * Address reviews Signed-off-by: SeanNaren * Address reviews Signed-off-by: SeanNaren * Add cell to download the SSL model Signed-off-by: SeanNaren * Set max epochs to 300 Signed-off-by: SeanNaren * Fixes, introduce HF dataset instructions Signed-off-by: SeanNaren * Upstream updates from other branch Signed-off-by: SeanNaren * Fix warning Signed-off-by: SeanNaren * Add README, add image Signed-off-by: SeanNaren * Fix warning Signed-off-by: SeanNaren * Address feedback Signed-off-by: SeanNaren * Feedback Signed-off-by: SeanNaren --------- Signed-off-by: SeanNaren Signed-off-by: Jason --- nemo/utils/cloud.py | 59 ++ nemo/utils/notebook_utils.py | 104 +++ tutorials/cloud/README.md | 7 + ...netuning_at_Scale_with_AWS_SageMaker.ipynb | 764 ++++++++++++++++++ .../cloud/aws/SageMaker_ASR_Training.ipynb | 418 ++++++++++ .../cloud/aws/images/sagemaker_benchmark.png | Bin 0 -> 33026 bytes 6 files changed, 1352 insertions(+) create mode 100644 nemo/utils/notebook_utils.py create mode 100644 tutorials/cloud/README.md create mode 100644 tutorials/cloud/aws/ASR_Finetuning_at_Scale_with_AWS_SageMaker.ipynb create mode 100644 tutorials/cloud/aws/SageMaker_ASR_Training.ipynb create mode 100644 tutorials/cloud/aws/images/sagemaker_benchmark.png diff --git a/nemo/utils/cloud.py b/nemo/utils/cloud.py index 8b74963f12d2..7245567d636c 100644 --- a/nemo/utils/cloud.py +++ b/nemo/utils/cloud.py @@ -17,6 +17,8 @@ from time import sleep import wget +from pytorch_lightning.plugins.environments import LightningEnvironment +from pytorch_lightning.strategies import DDPStrategy, StrategyRegistry from nemo.utils import logging @@ -80,3 +82,60 @@ def maybe_download_from_cloud(url, filename, subfolder=None, cache_dir=None, ref sleep(0.05) continue raise ValueError("Not able to download url right now, please try again.") + + +class SageMakerDDPStrategy(DDPStrategy): + @property + def cluster_environment(self): + env = LightningEnvironment() + env.world_size = lambda: int(os.environ["WORLD_SIZE"]) + env.global_rank = lambda: int(os.environ["RANK"]) + return env + + @cluster_environment.setter + def cluster_environment(self, env): + # prevents Lightning from overriding the Environment required for SageMaker + pass + + +def initialize_sagemaker() -> None: + """ + Helper function to initiate sagemaker with NeMo. + This function installs libraries that NeMo requires for the ASR toolkit + initializes sagemaker ddp. + """ + + StrategyRegistry.register( + name='smddp', strategy=SageMakerDDPStrategy, process_group_backend="smddp", find_unused_parameters=False, + ) + + def _install_system_libraries() -> None: + os.system('chmod 777 /tmp && apt-get update && apt-get install -y libsndfile1 ffmpeg') + + def _patch_torch_metrics() -> None: + """ + Patches torchmetrics to not rely on internal state. + This is because sagemaker DDP overrides the `__init__` function of the modules to do automatic-partitioning. + """ + from torchmetrics import Metric + + def __new_hash__(self): + hash_vals = [self.__class__.__name__, id(self)] + return hash(tuple(hash_vals)) + + Metric.__hash__ = __new_hash__ + + _patch_torch_metrics() + + if os.environ.get("RANK") and os.environ.get("WORLD_SIZE"): + import smdistributed.dataparallel.torch.distributed as dist + + # has to be imported, as it overrides torch modules and such when DDP is enabled. + import smdistributed.dataparallel.torch.torch_smddp + + dist.init_process_group() + + if dist.get_local_rank(): + _install_system_libraries() + return dist.barrier() # wait for main process + _install_system_libraries() + return diff --git a/nemo/utils/notebook_utils.py b/nemo/utils/notebook_utils.py new file mode 100644 index 000000000000..ce53f9f3dba5 --- /dev/null +++ b/nemo/utils/notebook_utils.py @@ -0,0 +1,104 @@ +# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import glob +import json +import os +import os.path +import subprocess +import tarfile +from typing import Optional + +import wget + + +# Function to build a manifest +def build_manifest(transcripts_path, manifest_path, data_dir, mount_dir, wav_path): + # create manifest with reference to this directory. This is useful when mounting the dataset. + mount_dir = mount_dir if mount_dir else data_dir + with open(transcripts_path, 'r') as fin: + with open(manifest_path, 'w') as fout: + for line in fin: + # Lines look like this: + # transcript (fileID) + transcript = line[: line.find('(') - 1].lower() + transcript = transcript.replace('', '').replace('', '') + transcript = transcript.strip() + + file_id = line[line.find('(') + 1 : -2] # e.g. "cen4-fash-b" + audio_path = os.path.join( + data_dir, wav_path, file_id[file_id.find('-') + 1 : file_id.rfind('-')], file_id + '.wav' + ) + + mounted_audio_path = os.path.join( + mount_dir, wav_path, file_id[file_id.find('-') + 1 : file_id.rfind('-')], file_id + '.wav' + ) + # import sox here to not require sox to be available for importing all utils. + import sox + + duration = sox.file_info.duration(audio_path) + + # Write the metadata to the manifest + metadata = {"audio_filepath": mounted_audio_path, "duration": duration, "text": transcript} + json.dump(metadata, fout) + fout.write('\n') + + +def download_an4(data_dir: str = "./", train_mount_dir: Optional[str] = None, test_mount_dir: Optional[str] = None): + """ + Function to download the AN4 dataset. This hides pre-processing boilerplate for notebook ASR examples. + + Args: + data_dir: Path to store the data. + train_mount_dir: If you plan to mount the dataset, use this to prepend the mount directory to the + audio filepath in the train manifest. + test_mount_dir: If you plan to mount the dataset, use this to prepend the mount directory to the + audio filepath in the test manifest. + """ + print("******") + os.makedirs(data_dir, exist_ok=True) + if not os.path.exists(data_dir + '/an4_sphere.tar.gz'): + an4_url = 'https://dldata-public.s3.us-east-2.amazonaws.com/an4_sphere.tar.gz' + an4_path = wget.download(an4_url, data_dir) + print(f"Dataset downloaded at: {an4_path}") + else: + print("Tarfile already exists.") + an4_path = data_dir + '/an4_sphere.tar.gz' + + if not os.path.exists(data_dir + '/an4/'): + tar = tarfile.open(an4_path) + tar.extractall(path=data_dir) + + print("Converting .sph to .wav...") + sph_list = glob.glob(data_dir + '/an4/**/*.sph', recursive=True) + for sph_path in sph_list: + wav_path = sph_path[:-4] + '.wav' + cmd = ["sox", sph_path, wav_path] + subprocess.run(cmd) + print("Finished conversion.\n******") + + # Building Manifests + print("******") + train_transcripts = data_dir + '/an4/etc/an4_train.transcription' + train_manifest = data_dir + '/an4/train_manifest.json' + + if not os.path.isfile(train_manifest): + build_manifest(train_transcripts, train_manifest, data_dir, train_mount_dir, 'an4/wav/an4_clstk') + print("Training manifest created.") + + test_transcripts = data_dir + '/an4/etc/an4_test.transcription' + test_manifest = data_dir + '/an4/test_manifest.json' + if not os.path.isfile(test_manifest): + build_manifest(test_transcripts, test_manifest, data_dir, test_mount_dir, 'an4/wav/an4test_clstk') + print("Test manifest created.") + print("***Done***") diff --git a/tutorials/cloud/README.md b/tutorials/cloud/README.md new file mode 100644 index 000000000000..c88c9e138bb1 --- /dev/null +++ b/tutorials/cloud/README.md @@ -0,0 +1,7 @@ +# NeMo Cloud Tutorials + +The best way to get started with NeMo in the cloud. + +## ASR +* [Quickstart: Training an ASR model on AWS SageMaker](aws/SageMaker_ASR_Training.ipynb) +* [Multi-Node Scaling: ASR Fine-Tuning on AWS SageMaker](aws/ASR_Finetuning_at_Scale_with_AWS_SageMaker.ipynb) diff --git a/tutorials/cloud/aws/ASR_Finetuning_at_Scale_with_AWS_SageMaker.ipynb b/tutorials/cloud/aws/ASR_Finetuning_at_Scale_with_AWS_SageMaker.ipynb new file mode 100644 index 000000000000..55423f4092ec --- /dev/null +++ b/tutorials/cloud/aws/ASR_Finetuning_at_Scale_with_AWS_SageMaker.ipynb @@ -0,0 +1,764 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2e86a2b3", + "metadata": {}, + "source": [ + "# ASR Fine-Tuning at Scale using AWS SageMaker" + ] + }, + { + "cell_type": "markdown", + "id": "215e3d3c", + "metadata": {}, + "source": [ + "In this tutorial we show how you can train a NeMo ASR Model using [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) using the CommonVoice Esperanto dataset (~250hrs), and scale onto multiple GPUs and nodes with near-linear scaling.\n", + "\n", + "AWS SageMaker is useful for practioners/researchers who are familiar with training locally or on a remote instance (via SSH). SageMaker also supports multi-GPU & Multi-node." + ] + }, + { + "cell_type": "markdown", + "id": "5e6d484f", + "metadata": {}, + "source": [ + "\"sagemaker_benchmark\"" + ] + }, + { + "cell_type": "markdown", + "id": "81d7883d", + "metadata": {}, + "source": [ + "We fine-tune the [Conformer SSL Large (En)](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/ssl_en_conformer_large) model using the CommonVoice esperanto subset on a remote instance with a 8 GPUs (ml.p3.16xlarge). We use S3 to store the data and our checkpoints/logs.\n", + "\n", + "The overall steps are:\n", + "\n", + "1. Setup your AWS Credentials to access SageMaker\n", + "2. Download the source code we'll be running\n", + "3. Setup the CommonVoice Esperanto dataset\n", + "4. Upload data to S3\n", + "5. Configure the training job\n", + "6. Run training job on SageMaker\n", + "7. Download model, (Optional) Tensorboard Logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac621da0", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "You can run either this notebook locally (if you have all the dependencies) or on Google Colab.\n", + "\n", + "Instructions for setting up Colab are as follows:\n", + "1. Open a new Python 3 notebook.\n", + "2. Import this notebook from GitHub (File -> Upload Notebook -> \"GITHUB\" tab -> copy/paste GitHub URL)\n", + "3. Connect to an instance with a GPU (Runtime -> Change runtime type -> select \"GPU\" for hardware accelerator)\n", + "4. Run this cell to set up dependencies.\n", + "5. Restart the runtime (Runtime -> Restart Runtime) for any upgraded packages to take effect\n", + "\"\"\"\n", + "# If you're using Google Colab and not running locally, run this cell.\n", + "\n", + "## Install dependencies\n", + "!pip install wget\n", + "!apt-get install sox libsndfile1 ffmpeg\n", + "!pip install text-unidecode\n", + "!pip install matplotlib>=3.3.2\n", + "\n", + "## Install NeMo\n", + "BRANCH = 'main'\n", + "!python -m pip install git+https://github.com/NVIDIA/NeMo.git@$BRANCH#egg=nemo_toolkit[all]\n", + "\n", + "\"\"\"\n", + "Remember to restart the runtime for the kernel to pick up any upgraded packages (e.g. matplotlib)!\n", + "Alternatively, you can uncomment the exit() below to crash and restart the kernel, in the case\n", + "that you want to use the \"Run All Cells\" (or similar) option.\n", + "\"\"\"\n", + "# exit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61c4fbe2", + "metadata": {}, + "outputs": [], + "source": [ + "pip install sagemaker awscli" + ] + }, + { + "cell_type": "markdown", + "id": "876f553d", + "metadata": {}, + "source": [ + "### 1. Setup SageMaker with AWS Credentials\n", + "\n", + "If you haven't setup your AWS credentials, you can setup using the AWS CLI.\n", + "You will need your access and Secret key, with permissions to use SageMaker and S3." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1328482d", + "metadata": {}, + "outputs": [], + "source": [ + "!aws configure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01477d55", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext tensorboard\n", + "from pathlib import Path\n", + "import os\n", + "import sagemaker\n", + "import wget\n", + "import json\n", + "import re\n", + "\n", + "from tqdm import tqdm\n", + "from omegaconf import OmegaConf\n", + "from sagemaker import get_execution_role\n", + "from sagemaker.pytorch import PyTorch" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "405806f9", + "metadata": {}, + "outputs": [], + "source": [ + "sess = sagemaker.Session()" + ] + }, + { + "cell_type": "markdown", + "id": "7d099a96", + "metadata": {}, + "source": [ + "### 2. Download the NeMo source code\n", + "\n", + "SageMaker allows you to pass in your own source code, with an entrypoint script.\n", + "\n", + "Below we download the AWS NeMo `config.yaml` which contains our configuration, and the `speech_to_text_ctc_bpe.py` script to run training.\n", + "\n", + "Our folder structure will look like this:\n", + "\n", + " code/\n", + " speech_to_text_ctc_bpe.py\n", + " conf/\n", + " config.yaml\n", + " data/\n", + " manifests/\n", + " raw_data/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b456c57", + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = Path('./')\n", + "code_dir = root_dir / 'code/'\n", + "config_dir = code_dir / 'conf/'\n", + "data_dir = root_dir / 'data/'\n", + "\n", + "root_dir.mkdir(exist_ok=True)\n", + "code_dir.mkdir(exist_ok=True)\n", + "config_dir.mkdir(exist_ok=True)\n", + "data_dir.mkdir(exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "721c7b7d", + "metadata": {}, + "outputs": [], + "source": [ + "config_path = str(config_dir / \"config.yaml\")\n", + "\n", + "# download scripts to format the data source.\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/scripts/speech_recognition/convert_hf_dataset_to_nemo.py\", str(code_dir))\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/scripts/speech_recognition/convert_to_tarred_audio_dataset.py\",\n", + " str(code_dir))\n", + "\n", + "# download scripts to run training\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/examples/asr/conf/conformer/conformer_ctc_bpe.yaml\", config_path)\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/examples/asr/asr_ctc/speech_to_text_ctc_bpe.py\",\n", + " str(code_dir))\n", + "\n", + "# download script to create tokenizer\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/scripts/tokenizers/process_asr_text_tokenizer.py\",\n", + " str(code_dir))" + ] + }, + { + "cell_type": "markdown", + "id": "7934baab", + "metadata": {}, + "source": [ + "We also create a `requirements.txt` file within our source code to install NeMo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "397d8eef", + "metadata": {}, + "outputs": [], + "source": [ + "with open(code_dir / 'requirements.txt', 'w') as f:\n", + " f.write(\"nemo_toolkit[all]\")" + ] + }, + { + "cell_type": "markdown", + "id": "a7bc7f51", + "metadata": {}, + "source": [ + "### 2.1 Initialize SageMaker within Training Script\n", + "\n", + "We provide a helper function that we require to be imported and run at the top of the training script.\n", + "\n", + "This installs and setups DDP for you. It also alleviates having to import a custom container, and can leverage all of the SageMaker containers. Rather than running this cell, you could also manually do this in your script." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e17535a7", + "metadata": {}, + "outputs": [], + "source": [ + "line = \"from nemo.utils.cloud import initialize_sagemaker; initialize_sagemaker()\"\n", + "with open(code_dir / \"speech_to_text_ctc.py\", 'r+') as f:\n", + " content = f.read()\n", + " f.seek(0, 0)\n", + " f.write(line.rstrip('\\r\\n') + '\\n' + content)" + ] + }, + { + "cell_type": "markdown", + "id": "ce3e5ae8", + "metadata": {}, + "source": [ + "### 3. Setup the CommonVoice Esperanto Dataset\n", + "\n", + "Mozilla Common Voice requires you to use huggingface datasets (`pip install datasets`) and register as a user to generate an API key.\n", + "\n", + "#### Authenticated Setup Steps\n", + "\n", + "Website steps:\n", + "- Visit https://huggingface.co/settings/profile\n", + "- Visit \"Access Tokens\" on list of items.\n", + "- Create new token - provide a name for the token and \"read\" access is sufficient.\n", + " - PRESERVE THAT TOKEN API KEY. You can copy that key for next step.\n", + "- Visit the HuggingFace Dataset page for Mozilla Common Voice\n", + " - There should be a section that asks you for your approval.\n", + " - Make sure you are logged in and then read that agreement.\n", + " - If and only if you agree to the text, then accept the terms." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cbca268", + "metadata": {}, + "outputs": [], + "source": [ + "# Paste your preserved HF TOKEN API KEY (from above) when asked.\n", + "!huggingface-cli login" + ] + }, + { + "cell_type": "markdown", + "id": "9b964276", + "metadata": {}, + "source": [ + "Now you should be logged in. When running the script, dont forget to set `use_auth_token=True`!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e89e4ee8", + "metadata": {}, + "outputs": [], + "source": [ + "!python ./code/convert_hf_dataset_to_nemo.py \\\n", + " output_dir=./data/ \\\n", + " path=\"mozilla-foundation/common_voice_11_0\" \\\n", + " name=\"eo\" \\\n", + " ensure_ascii=False \\\n", + " use_auth_token=True" + ] + }, + { + "cell_type": "markdown", + "id": "2e34a392", + "metadata": {}, + "source": [ + "We apply filtering/data-processing to the dataset. We've skipped explanations as to why we're filtering, as extensive information can be found [here](https://github.com/andrusenkoau/NeMo/blob/esperanto_example/docs/source/asr/examples/esperanto_asr/esperanto_asr.rst)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ca04023", + "metadata": {}, + "outputs": [], + "source": [ + "dev_manifest = f\"{data_dir}/validation/validation_mozilla-foundation_common_voice_11_0_manifest.json\"\n", + "test_manifest = f\"{data_dir}/test/test_mozilla-foundation_common_voice_11_0_manifest.json\"\n", + "train_manifest = f\"{data_dir}/train/train_mozilla-foundation_common_voice_11_0_manifest.json\"\n", + "\n", + "def compute_char_counts(manifest):\n", + " char_counts = {}\n", + " with open(manifest, 'r') as fn_in:\n", + " for line in tqdm(fn_in, desc=\"Compute counts..\"):\n", + " line = line.replace(\"\\n\", \"\")\n", + " data = json.loads(line)\n", + " text = data[\"text\"]\n", + " for word in text.split():\n", + " for char in word:\n", + " if char not in char_counts:\n", + " char_counts[char] = 1\n", + " else:\n", + " char_counts[char] += 1\n", + " return char_counts\n", + "\n", + "char_counts = compute_char_counts(train_manifest)\n", + "\n", + "threshold = 10\n", + "trash_char_list = []\n", + "\n", + "for char in char_counts:\n", + " if char_counts[char] <= threshold:\n", + " trash_char_list.append(char)\n", + "\n", + "def clear_data_set(manifest, char_rate_threshold=None):\n", + "\n", + " chars_to_ignore_regex = \"[\\.\\,\\?\\:\\-!;()«»…\\]\\[/\\*–‽+&_\\\\½√>€™$•¼}{~—=“\\\"”″‟„]\"\n", + " addition_ignore_regex = f\"[{''.join(trash_char_list)}]\"\n", + "\n", + " manifest_clean = manifest + '.clean'\n", + " war_count = 0\n", + " with open(manifest, 'r') as fn_in, \\\n", + " open(manifest_clean, 'w', encoding='utf-8') as fn_out:\n", + " for line in tqdm(fn_in, desc=\"Cleaning manifest data\"):\n", + " line = line.replace(\"\\n\", \"\")\n", + " data = json.loads(line)\n", + " text = data[\"text\"]\n", + " if char_rate_threshold and len(text.replace(' ', '')) / float(data['duration']) > char_rate_threshold:\n", + " print(f\"[WARNING]: {data['audio_filepath']} has char rate > 15 per sec: {len(text)} chars, {data['duration']} duration\")\n", + " war_count += 1\n", + " continue\n", + " text = re.sub(chars_to_ignore_regex, \"\", text)\n", + " text = re.sub(addition_ignore_regex, \"\", text)\n", + " data[\"text\"] = text\n", + " data = json.dumps(data, ensure_ascii=False)\n", + " fn_out.write(f\"{data}\\n\")\n", + " print(f\"[INFO]: {war_count} files were removed from manifest\")\n", + "\n", + "clear_data_set(dev_manifest)\n", + "clear_data_set(test_manifest)\n", + "clear_data_set(train_manifest, char_rate_threshold=15)" + ] + }, + { + "cell_type": "markdown", + "id": "4b50de19", + "metadata": {}, + "source": [ + "When the dataset is mounted to the SageMaker instance, the filepaths change. To handle this, we change the root path of the manifest entries to point to the correct mounted directory." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e31d9e91", + "metadata": {}, + "outputs": [], + "source": [ + "dev_manifest = dev_manifest + '.clean'\n", + "\n", + "\n", + "def replace_real_dir_with_mount_dir(manifest_path, data_root, mount_dir):\n", + " with open(manifest_path) as f:\n", + " entries = [json.loads(x) for x in f]\n", + " for entry in entries:\n", + " entry['audio_filepath'] = entry['audio_filepath'].replace(str(data_root), str(mount_dir))\n", + " with open(manifest_path + '.mount', 'w') as f:\n", + " f.write('\\n'.join([json.dumps(x) for x in entries]))\n", + "\n", + "replace_real_dir_with_mount_dir(dev_manifest, data_dir.absolute(), \"/opt/ml/input/data/testing/\")" + ] + }, + { + "cell_type": "markdown", + "id": "35d71747", + "metadata": {}, + "source": [ + "To improve performance, we also tar the training dataset to improve throughput when reading/writing from S3 directly within the remote instance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29d858a2", + "metadata": {}, + "outputs": [], + "source": [ + "train_manifest = train_manifest + '.clean'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc495ca7", + "metadata": {}, + "outputs": [], + "source": [ + "!python ./code/convert_to_tarred_audio_dataset.py \\\n", + " --manifest_path={train_manifest} \\\n", + " --target_dir=./data/train_tarred_1bk \\\n", + " --num_shards=512 \\\n", + " --max_duration=15.0 \\\n", + " --min_duration=1.0 \\\n", + " --shuffle \\\n", + " --shuffle_seed=1 \\\n", + " --sort_in_shards \\\n", + " --workers=-1" + ] + }, + { + "cell_type": "markdown", + "id": "c850634e", + "metadata": {}, + "source": [ + "Finally, we generate the tokenizer that we will be using for training using the training manifest. Further information about parameters when choosing vocab sizes can be found [here](https://github.com/andrusenkoau/NeMo/blob/esperanto_example/docs/source/asr/examples/esperanto_asr/esperanto_asr.rst). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca394bcd", + "metadata": {}, + "outputs": [], + "source": [ + "vocab_size=128\n", + "\n", + "!python ./code/process_asr_text_tokenizer.py \\\n", + " --manifest={train_manifest} \\\n", + " --vocab_size={vocab_size} \\\n", + " --data_root=./data/tokenizers \\\n", + " --tokenizer=\"spe\" \\\n", + " --spe_type=bpe \\\n", + " --no_lower_case" + ] + }, + { + "cell_type": "markdown", + "id": "bfa2199e", + "metadata": {}, + "source": [ + "### 5. Upload the Dataset to S3\n", + "\n", + "This can take some time depending on your upload speed. We are uploading roughly 111GB of data to S3." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1c5a60a", + "metadata": {}, + "outputs": [], + "source": [ + "# optional, move the raw training dataset out of the data folder to reduce data transfer\n", + "shutil.move(f\"{dataset_dir}/train/\", root_dir / \"train_raw/\")\n", + "\n", + "prefix = \"cv_esperanto\"\n", + "bucket = sess.default_bucket()\n", + "\n", + "loc = sess.upload_data(path=str(data_dir), bucket=bucket, key_prefix=prefix)\n", + "loc" + ] + }, + { + "cell_type": "markdown", + "id": "6321e3a9", + "metadata": {}, + "source": [ + "### 4. Configure the training job\n", + "\n", + "Now we configure the training job, by modifying the `config.yaml` file that is stored in our source code directory.\n", + "We pass relative directory paths for the data based on the SageMaker mount directory on the remote instance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac709398", + "metadata": {}, + "outputs": [], + "source": [ + "# the output path for the model checkpoints/logs\n", + "output_path = \"s3://\" + sess.default_bucket() + \"/nemo-output/\"" + ] + }, + { + "cell_type": "markdown", + "id": "8186678f", + "metadata": {}, + "source": [ + "We setup the training configuration based on the Esperanto experiments ran [here](https://github.com/andrusenkoau/NeMo/blob/esperanto_example/docs/source/asr/examples/esperanto_asr/esperanto_asr.rst).\n", + "\n", + "If you change the number of GPUs on the instance, remember to change the values below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4b67faa", + "metadata": {}, + "outputs": [], + "source": [ + "global_batch_size = 1024\n", + "train_batch_size = 8\n", + "n_gpus = 8\n", + "num_nodes = 1 # set this to the number of nodes you'd like to train on\n", + "accumulate_grad_batches = int(global_batch_size / (n_gpus * num_nodes * train_batch_size))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bb61640", + "metadata": {}, + "outputs": [], + "source": [ + "conf = OmegaConf.load(config_path)\n", + "\n", + "# data config setup\n", + "conf.model.train_ds.batch_size=train_batch_size\n", + "conf.model.train_ds.is_tarred = True\n", + "conf.model.train_ds.tarred_audio_filepaths = \"/opt/ml/input/data/training/train_tarred_1bk/audio__OP_0..511_CL_.tar\"\n", + "conf.model.train_ds.manifest_filepath = \"/opt/ml/input/data/training/train_tarred_1bk/tarred_audio_manifest.json\"\n", + "conf.model.validation_ds.manifest_filepath = \"/opt/ml/input/data/testing/validation/validation_mozilla-foundation_common_voice_11_0_manifest.json.clean.mount\"\n", + "\n", + "# optimization setup\n", + "conf.model.optim.lr = 1e-3\n", + "conf.model.optim.sched.name = \"CosineAnnealing\"\n", + "\n", + "# remove variable which is not needed when using CosineAnnealing\n", + "conf.model.optim.sched.pop('d_model')\n", + "\n", + "# logging/output setup\n", + "conf.exp_manager.exp_dir = \"/opt/ml/model/\"\n", + "\n", + "# the BPE tokenizer location based on the remote instance mounted directory\n", + "conf.model.tokenizer.dir = \"/opt/ml/input/data/training/tokenizers/tokenizer_spe_bpe_v128\"\n", + "\n", + "# the pre-trained model we want to fine-tune\n", + "conf.init_from_nemo_model = \"ssl_en_conformer_large.nemo\"\n", + "\n", + "# training setup\n", + "conf.trainer.accelerator = \"gpu\"\n", + "# enable SageMaker DDP\n", + "conf.trainer.strategy = \"smddp\"\n", + "conf.trainer.max_epochs = 300\n", + "conf.trainer.accumulate_grad_batches = accumulate_grad_batches\n", + "conf.trainer.precision = 16 # if using Ampere or above (i.e ml.p4d.24xlarge), you can use bf16 (BFloat16) \n", + "\n", + "# resume flags if crashes occur\n", + "conf.exp_manager.resume_if_exists=True\n", + "conf.exp_manager.resume_ignore_no_checkpoint=True" + ] + }, + { + "cell_type": "markdown", + "id": "1e287a26", + "metadata": {}, + "source": [ + "Uncomment the below cell you want to use W&B, you'll need to pass your W&B token at a later step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ba11ab8", + "metadata": {}, + "outputs": [], + "source": [ + "# conf.exp_manager.wandb_logger_kwargs.name = \"common_voice_esperanto\"\n", + "# conf.exp_manager.create_wandb_logger = True\n", + "# conf.exp_manager.wandb_logger_kwargs.resume=True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e4b27920", + "metadata": {}, + "outputs": [], + "source": [ + "# save the updated config\n", + "OmegaConf.save(conf, config_dir / 'config.yaml')" + ] + }, + { + "cell_type": "markdown", + "id": "1d8cd4cb", + "metadata": {}, + "source": [ + "Download the pre-trained SSL model from NGC. We'll upload this model with our code to SageMaker." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d11ff03", + "metadata": {}, + "outputs": [], + "source": [ + "!wget --content-disposition https://api.ngc.nvidia.com/v2/models/nvidia/nemo/ssl_en_conformer_large/versions/1.10.1/zip -O {code_dir}/ssl_en_conformer_large_1.10.1.zip\n", + "!unzip {code_dir}/ssl_en_conformer_large_1.10.1.zip -d {code_dir}" + ] + }, + { + "cell_type": "markdown", + "id": "959da702", + "metadata": {}, + "source": [ + "### 5. Run training on SageMaker\n", + "\n", + "Pass the path of the training and validation data on S3 + the output directory on S3 to the PyTorch estimator, and call fit with the appropriate bucket locations for the training and testing data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d2e44e3", + "metadata": {}, + "outputs": [], + "source": [ + "channels = {\"training\": loc, \"testing\": loc}\n", + "\n", + "role = get_execution_role()\n", + "\n", + "output_path = \"s3://\" + sess.default_bucket() + \"/nemo-output/\"\n", + "\n", + "local_mode = False\n", + "\n", + "if local_mode:\n", + " instance_type = \"local_gpu\"\n", + "else:\n", + " instance_type = \"ml.p3.16xlarge\"\n", + " \n", + "instance_count = num_nodes\n", + "\n", + "est = PyTorch(\n", + " entry_point=\"speech_to_text_ctc_bpe.py\",\n", + " source_dir=\"code\", # directory of your training script\n", + " role=role,\n", + " instance_type=instance_type,\n", + " instance_count=instance_count,\n", + " framework_version=\"1.12.0\",\n", + " py_version=\"py38\",\n", + " volume_size=125,\n", + " output_path=output_path,\n", + " hyperparameters={'config-path': 'conf', 'config-name': 'config'},\n", + " # uncomment if you're enabling WANDB, and pass your own API key.\n", + " # environment={\"WANDB_API_KEY\": \"\"},\n", + " # enable SageMaker Optimized DDP for multi-node scaling\n", + " distribution={\"smdistributed\":{\"dataparallel\":{\"enabled\":True, \"fp16\": True}}},\n", + " input_mode='FastFile' # enables reading from S3 directly, no need to download the data\n", + ")\n", + "\n", + "est.fit(inputs=channels)" + ] + }, + { + "cell_type": "markdown", + "id": "2be67b8e", + "metadata": {}, + "source": [ + "### 6. Download model, (Optional) Tensorboard Logs\n", + "\n", + "SageMaker stores our models/logs within a tar file after training has finished. These can be obtained from S3 like below.\n", + "\n", + "We also visualize the training logs. We suggest using an external logger (such as W&B) to track training progress during the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81cd58d3", + "metadata": {}, + "outputs": [], + "source": [ + "key = est.model_data.replace(\"s3://\" + sess.default_bucket() + '/', '')\n", + "\n", + "sess.boto_session.client(\"s3\", region_name=sess.boto_region_name).download_file(\n", + " Bucket=sess.default_bucket(), Key=key, Filename='model.tar.gz',\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "656d53f3", + "metadata": {}, + "outputs": [], + "source": [ + "!tar -xvzf model.tar.gz" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62018b6e", + "metadata": {}, + "outputs": [], + "source": [ + "%tensorboard --logdir ./ --host 0.0.0.0" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/cloud/aws/SageMaker_ASR_Training.ipynb b/tutorials/cloud/aws/SageMaker_ASR_Training.ipynb new file mode 100644 index 000000000000..ad5261dc1e21 --- /dev/null +++ b/tutorials/cloud/aws/SageMaker_ASR_Training.ipynb @@ -0,0 +1,418 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2e86a2b3", + "metadata": {}, + "source": [ + "# NeMo ASR Training Using AWS SageMaker" + ] + }, + { + "cell_type": "markdown", + "id": "215e3d3c", + "metadata": {}, + "source": [ + "In this tutorial we show how you can train a NeMo ASR Model using [Amazon SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html). This is meant to be a minimalistic example of how to use SageMaker with NeMo.\n", + "\n", + "AWS SageMaker is useful for practioners/researchers who are familiar with training locally or on a remote instance (via SSH). SageMaker also supports multi-GPU & Multi-node.\n", + "\n", + "Using AWS SageMaker we train a simple Conformer CTC model using the AN4 dataset on a remote instance with a GPU (p3.2xlarge). We use S3 to store the data and our checkpoints/logs.\n", + "\n", + "The overall steps are:\n", + "\n", + "1. Setup your AWS Credentials to access SageMaker\n", + "2. Download the source code we'll be running\n", + "3. Setup AN4 dataset, upload data to S3\n", + "4. Configure the training job\n", + "5. Run training job on SageMaker\n", + "6. Download model, (Optional) Tensorboard Logs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac621da0", + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "You can run either this notebook locally (if you have all the dependencies and a GPU) or on Google Colab.\n", + "\n", + "Instructions for setting up Colab are as follows:\n", + "1. Open a new Python 3 notebook.\n", + "2. Import this notebook from GitHub (File -> Upload Notebook -> \"GITHUB\" tab -> copy/paste GitHub URL)\n", + "3. Connect to an instance with a GPU (Runtime -> Change runtime type -> select \"GPU\" for hardware accelerator)\n", + "4. Run this cell to set up dependencies.\n", + "5. Restart the runtime (Runtime -> Restart Runtime) for any upgraded packages to take effect\n", + "\"\"\"\n", + "# If you're using Google Colab and not running locally, run this cell.\n", + "\n", + "## Install dependencies\n", + "!pip install wget\n", + "!apt-get install sox libsndfile1 ffmpeg\n", + "!pip install text-unidecode\n", + "!pip install matplotlib>=3.3.2\n", + "\n", + "## Install NeMo\n", + "BRANCH = 'main'\n", + "!python -m pip install git+https://github.com/NVIDIA/NeMo.git@$BRANCH#egg=nemo_toolkit[all]\n", + "\n", + "\"\"\"\n", + "Remember to restart the runtime for the kernel to pick up any upgraded packages (e.g. matplotlib)!\n", + "Alternatively, you can uncomment the exit() below to crash and restart the kernel, in the case\n", + "that you want to use the \"Run All Cells\" (or similar) option.\n", + "\"\"\"\n", + "# exit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61c4fbe2", + "metadata": {}, + "outputs": [], + "source": [ + "pip install sagemaker awscli" + ] + }, + { + "cell_type": "markdown", + "id": "876f553d", + "metadata": {}, + "source": [ + "### 1. Setup SageMaker with AWS Credentials\n", + "\n", + "If you haven't setup your AWS credentials, you can setup using the AWS CLI.\n", + "You will need your access and Secret key, with permissions to use SageMaker and S3." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1328482d", + "metadata": {}, + "outputs": [], + "source": [ + "!aws configure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "01477d55", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext tensorboard\n", + "from pathlib import Path\n", + "import os\n", + "import sagemaker\n", + "import wget\n", + "from omegaconf import OmegaConf\n", + "from sagemaker import get_execution_role\n", + "from sagemaker.pytorch import PyTorch\n", + "\n", + "from nemo.utils.notebook_utils import download_an4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "405806f9", + "metadata": {}, + "outputs": [], + "source": [ + "sess = sagemaker.Session()" + ] + }, + { + "cell_type": "markdown", + "id": "7d099a96", + "metadata": {}, + "source": [ + "### 2. Download the NeMo source code\n", + "\n", + "SageMaker allows you to pass in your own source code, with an entrypoint script.\n", + "\n", + "Below we download the AWS NeMo `config.yaml` which contains our configuration, and the `speech_to_text_ctc.py` script to run training.\n", + "\n", + "Our folder structure will look like this:\n", + "\n", + " code/\n", + " speech_to_text_ctc.py\n", + " conf/\n", + " config.yaml\n", + " data/\n", + " an4/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0b456c57", + "metadata": {}, + "outputs": [], + "source": [ + "root_dir = Path('./an4_nemo_sagemaker/')\n", + "code_dir = root_dir / 'code/'\n", + "config_dir = code_dir / 'conf/'\n", + "data_dir = root_dir / 'data/'\n", + "\n", + "root_dir.mkdir(exist_ok=True)\n", + "code_dir.mkdir(exist_ok=True)\n", + "config_dir.mkdir(exist_ok=True)\n", + "data_dir.mkdir(exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "721c7b7d", + "metadata": {}, + "outputs": [], + "source": [ + "config_path = str(config_dir / \"config.yaml\")\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/examples/asr/conf/conformer/conformer_ctc_char.yaml\", config_path)\n", + "wget.download(\"https://raw.githubusercontent.com/NVIDIA/NeMo/main/examples/asr/asr_ctc/speech_to_text_ctc.py\", str(code_dir))" + ] + }, + { + "cell_type": "markdown", + "id": "7934baab", + "metadata": {}, + "source": [ + "We also create a `requirements.txt` file within our source code to install NeMo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "397d8eef", + "metadata": {}, + "outputs": [], + "source": [ + "with open(code_dir / 'requirements.txt', 'w') as f:\n", + " f.write(\"nemo_toolkit[all]\")" + ] + }, + { + "cell_type": "markdown", + "id": "a7bc7f51", + "metadata": {}, + "source": [ + "### 2.1 Initialize SageMaker within Training Script\n", + "\n", + "We provide a helper function that we require to be imported and run at the top of the training script.\n", + "\n", + "This installs and setups DDP for you. It also alleviates having to import a custom container, and can leverage all of the SageMaker containers. Rather than running this cell, you could also manually do this in your script." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e17535a7", + "metadata": {}, + "outputs": [], + "source": [ + "line = \"from nemo.utils.cloud import initialize_sagemaker; initialize_sagemaker()\"\n", + "with open(code_dir / \"speech_to_text_ctc.py\", 'r+') as f:\n", + " content = f.read()\n", + " f.seek(0, 0)\n", + " f.write(line.rstrip('\\r\\n') + '\\n' + content)" + ] + }, + { + "cell_type": "markdown", + "id": "bfa2199e", + "metadata": {}, + "source": [ + "### 3. Setup the AN4 Dataset, upload data to S3\n", + "\n", + "We now download our training and validation data, uploading to S3 so that SageMaker can mount our data to the instance at runtime." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1c5a60a", + "metadata": {}, + "outputs": [], + "source": [ + "# within the SageMaker container, mount_dir will be where our data is stored.\n", + "download_an4(\n", + " data_dir=str(data_dir),\n", + " train_mount_dir=\"/opt/ml/input/data/training/\",\n", + " test_mount_dir=\"/opt/ml/input/data/testing/\",\n", + ")\n", + "\n", + "# Upload to the default bucket\n", + "prefix = \"an4\"\n", + "bucket = sess.default_bucket()\n", + "loc = sess.upload_data(path=str(data_dir), bucket=bucket, key_prefix=prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b1de1089", + "metadata": {}, + "outputs": [], + "source": [ + "output_path = \"s3://\" + sess.default_bucket() + \"/nemo-output/\"" + ] + }, + { + "cell_type": "markdown", + "id": "6321e3a9", + "metadata": {}, + "source": [ + "### 4. Configure the training job\n", + "\n", + "Now we configure the training job, by modifying the `config.yaml` file that is stored in our source code directory.\n", + "We pass relative directory paths for the data based on the SageMaker mount directory on the remote instance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bb61640", + "metadata": {}, + "outputs": [], + "source": [ + "conf = OmegaConf.load(config_path)\n", + "\n", + "# Set Data Locations based on the mounted directory in the SageMaker instance\n", + "conf.model.train_ds.manifest_filepath = \"/opt/ml/input/data/training/an4/train_manifest.json\"\n", + "conf.model.validation_ds.manifest_filepath = \"/opt/ml/input/data/testing/an4/test_manifest.json\"\n", + "conf.trainer.accelerator = \"gpu\"\n", + "conf.trainer.max_epochs = 150\n", + "\n", + "# Output directory for our experiment within the SageMaker instance\n", + "conf.exp_manager.exp_dir=\"/opt/ml/model/\"\n", + "\n", + "# Create a Small Variant of the Conformer Model\n", + "conf.model.encoder.n_layers = 8\n", + "conf.model.n_heads = 4\n", + "conf.model.spec_augment.time_masks = 5\n", + "\n", + "# Set Optimizer parameters\n", + "conf.model.optim.lr = 2.0 # by default we using Noam scheduling, the LR is a multiplier \n", + "\n", + "OmegaConf.save(conf, config_dir / 'config.yaml')" + ] + }, + { + "cell_type": "markdown", + "id": "959da702", + "metadata": {}, + "source": [ + "### 5. Run training on SageMaker\n", + "\n", + "Pass the path of the training and validation data on S3 + the output directory on S3 to the PyTorch estimator, and call fit with the appropriate bucket locations for the training and testing data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d2e44e3", + "metadata": {}, + "outputs": [], + "source": [ + "channels = {\"training\": loc, \"testing\": loc}\n", + "\n", + "role = get_execution_role()\n", + "\n", + "# Set to True to enable SageMaker to run locally\n", + "local_mode = False\n", + "\n", + "if local_mode:\n", + " instance_type = \"local_gpu\"\n", + "else:\n", + " instance_type = \"ml.p3.2xlarge\"\n", + "\n", + "est = PyTorch(\n", + " entry_point=\"speech_to_text_ctc.py\", # the script we want to run\n", + " source_dir=str(code_dir), # where our conf/script is\n", + " role=role,\n", + " instance_type=instance_type,\n", + " instance_count=1,\n", + " framework_version=\"1.12.0\", # version of PyTorch\n", + " py_version=\"py38\",\n", + " volume_size=250,\n", + " output_path=output_path,\n", + " hyperparameters={'config-path': 'conf'},\n", + ")\n", + "\n", + "est.fit(inputs=channels)" + ] + }, + { + "cell_type": "markdown", + "id": "2be67b8e", + "metadata": {}, + "source": [ + "### 6. Download model, (Optional) Tensorboard Logs\n", + "\n", + "SageMaker stores our models/logs within a tar file after training has finished. These can be obtained from S3 like below.\n", + "\n", + "We also visualize the training logs. We suggest using an external logger (such as W&B) to track training progress during the run." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81cd58d3", + "metadata": {}, + "outputs": [], + "source": [ + "key = est.model_data.replace(\"s3://\" + sess.default_bucket() + '/', '')\n", + "\n", + "sess.boto_session.client(\"s3\", region_name=sess.boto_region_name).download_file(\n", + " Bucket=sess.default_bucket(), Key=key, Filename='model.tar.gz',\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "656d53f3", + "metadata": {}, + "outputs": [], + "source": [ + "!tar -xvzf model.tar.gz" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62018b6e", + "metadata": {}, + "outputs": [], + "source": [ + "%tensorboard --logdir ./ --host 0.0.0.0" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/cloud/aws/images/sagemaker_benchmark.png b/tutorials/cloud/aws/images/sagemaker_benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2bf6a5a2597ab06d6de2bbf995ac2f1d0fb2b1 GIT binary patch literal 33026 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 TJsSOr()Eb8fmR8@miWH_m@mE1 literal 0 HcmV?d00001 From ebfad90c1bc012689f012f5fc1842ca3eaf04dad Mon Sep 17 00:00:00 2001 From: Somshubra Majumdar Date: Thu, 9 Feb 2023 17:37:14 -0800 Subject: [PATCH 71/73] Update PUBLICATIONS.md (#5963) * Add papers from 2022/2022 to PUBLICATIONS.md Signed-off-by: smajumdar * Remove ipynb from being tracked as for nemo code library Signed-off-by: smajumdar * Remove ipynb from being tracked as for nemo code library Signed-off-by: smajumdar * Add additional papers Signed-off-by: smajumdar --------- Signed-off-by: smajumdar Signed-off-by: Jason --- .gitignore | 4 ++++ PUBLICATIONS.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 0ecdaa49ec94..1ff2a92cac64 100644 --- a/.gitignore +++ b/.gitignore @@ -94,6 +94,10 @@ target/ # Jupyter Notebook .ipynb_checkpoints +# Override Jupyter in Github Language states for more accurate estimate of repo code. +# Reference: https://github.com/github/linguist/blob/master/docs/overrides.md#generated-code +*.ipynb linguist-generated + # IPython profile_default/ ipython_config.py diff --git a/PUBLICATIONS.md b/PUBLICATIONS.md index 67c7cd11084b..365ed2773ed3 100644 --- a/PUBLICATIONS.md +++ b/PUBLICATIONS.md @@ -6,6 +6,21 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I # Automatic Speech Recognition (ASR) +
+ 2023 + + * [Fast Entropy-Based Methods of Word-Level Confidence Estimation for End-to-End Automatic Speech Recognition](https://ieeexplore.ieee.org/abstract/document/10022960) + * [Damage Control During Domain Adaptation for Transducer Based Automatic Speech Recognition](https://ieeexplore.ieee.org/abstract/document/10023219) + +
+ +
+ 2022 + + * [Multi-blank Transducers for Speech Recognition](https://arxiv.org/abs/2211.03541) + +
+
2021 @@ -44,9 +59,9 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I ## Speaker Recognition (SpkR)
- 2021 + 2022 - * [TitaNet: Neural Model for speaker representation with 1D Depth-wise separable convolutions and global context]( https://arxiv.org/pdf/2110.04410.pdf) + * [TitaNet: Neural Model for Speaker Representation with 1D Depth-Wise Separable Convolutions and Global Context](https://ieeexplore.ieee.org/abstract/document/9746806)
@@ -62,6 +77,15 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I ## Speech Classification +
+ 2022 + + * [AmberNet: A Compact End-to-End Model for Spoken Language Identification](https://arxiv.org/abs/2210.15781) + * [Accidental Learners: Spoken Language Identification in Multilingual Self-Supervised Models](https://arxiv.org/abs/2211.05103) + + +
+
2021 @@ -78,12 +102,32 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I
+-------- + +## Speech Translation + +
+ 2022 + + * [NVIDIA NeMo Offline Speech Translation Systems for IWSLT 2022](https://aclanthology.org/2022.iwslt-1.18/) + +
+ + -------- # Natural Language Processing (NLP) ## Language Modeling +
+ 2022 + + * [Evaluating Parameter Efficient Learning for Generation](https://arxiv.org/abs/2210.13673) + * [Text Mining Drug/Chemical-Protein Interactions using an Ensemble of BERT and T5 Based Models](https://arxiv.org/abs/2111.15617) + +
+
2021 @@ -93,6 +137,13 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I ## Neural Machine Translation +
+ 2022 + + * [Finding the Right Recipe for Low Resource Domain Adaptation in Neural Machine Translation](https://arxiv.org/abs/2206.01137) + +
+
2021 @@ -122,6 +173,13 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I # Text To Speech (TTS) +
+ 2022 + + * [Adapter-Based Extension of Multi-Speaker Text-to-Speech Model for New Speakers](https://arxiv.org/abs/2211.00585) + +
+
2021 @@ -140,6 +198,7 @@ Here, we list a collection of research articles that utilize the NeMo Toolkit. I 2022 * [Shallow Fusion of Weighted Finite-State Transducer and Language Model for Text Normalization](https://arxiv.org/abs/2203.15917) + * [Thutmose Tagger: Single-pass neural model for Inverse Text Normalization](https://arxiv.org/abs/2208.00064)
From ce6f6afa766957e76f15bf4a2e706689f623475c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 21:43:07 -0800 Subject: [PATCH 72/73] [G2P] fixed typos and broken import library. (#5978) (#5979) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Co-authored-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- nemo_text_processing/g2p/data/data_utils.py | 1 + .../g2p/data/test_data_utils.py | 17 +++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/nemo_text_processing/g2p/data/data_utils.py b/nemo_text_processing/g2p/data/data_utils.py index d695ec9ba391..8d9db35a1808 100644 --- a/nemo_text_processing/g2p/data/data_utils.py +++ b/nemo_text_processing/g2p/data/data_utils.py @@ -35,6 +35,7 @@ "GRAPHEME_CASE_UPPER", "GRAPHEME_CASE_LOWER", "GRAPHEME_CASE_MIXED", + "get_heteronym_spans", ] # Derived from LJSpeech diff --git a/tests/nemo_text_processing/g2p/data/test_data_utils.py b/tests/nemo_text_processing/g2p/data/test_data_utils.py index c04a4d0f0e13..5986556663cb 100644 --- a/tests/nemo_text_processing/g2p/data/test_data_utils.py +++ b/tests/nemo_text_processing/g2p/data/test_data_utils.py @@ -16,7 +16,7 @@ from nemo_text_processing.g2p.data.data_utils import ( any_locale_word_tokenize, english_word_tokenize, - get_homograph_spans, + get_heteronym_spans, ) @@ -95,7 +95,7 @@ def test_any_locale_word_tokenize_with_accents(self): @pytest.mark.run_only_on('CPU') @pytest.mark.unit def test_any_locale_word_tokenize_with_numbers(self): - input_text = "Three times× four^teen ÷divided by [movies] on \slash." + input_text = r"Three times× four^teen ÷divided by [movies] on \slash." expected_output = self._create_expected_output( [ "three", @@ -124,10 +124,11 @@ def test_any_locale_word_tokenize_with_numbers(self): @pytest.mark.run_only_on('CPU') @pytest.mark.unit - def test_get_homograph_spans(self): - supported_homographs = ["live", "read", "protest", "diffuse", "desert"] + def test_get_heteronym_spans(self): + supported_heteronyms = ["live", "read", "protest", "diffuse", "desert"] sentences = [ - "I live in California. I READ a book. Only people who have already gained something are willing to protest. He reads a book!", + "I live in California. I READ a book. Only people who have already gained something are willing to protest." + " He reads a book!", "Yesterday, I read a book.", "He read a book last night and pre-diffuse and LivE-post and pre-desert-post.", "the soldier deserted the desert in desert.", @@ -139,13 +140,13 @@ def test_get_homograph_spans(self): [(3, 7), (34, 41), (46, 50), (64, 70)], [(25, 31), (35, 41)], ] - expected_homographs = [ + expected_heteronyms = [ ["live", "read", "protest"], ['read'], ['read', 'diffuse', 'live', 'desert'], ['desert', 'desert'], ] - out_start_end, out_homographs = get_homograph_spans(sentences, supported_homographs) + out_start_end, out_heteronyms = get_heteronym_spans(sentences, supported_heteronyms) assert out_start_end == expected_start_end, "start-end spans do not match" - assert out_homographs == expected_homographs, "homograph spans do not match" + assert out_heteronyms == expected_heteronyms, "heteronym spans do not match" From b939fb4ecc079c7aa31cfaf2a69cce91f5e2610f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 10 Feb 2023 01:19:25 -0800 Subject: [PATCH 73/73] [G2P] added backward compatibility for english tokenizer and fixed unit tests (#5980) (#5984) Signed-off-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Co-authored-by: Xuesong Yang <1646669+XuesongYang@users.noreply.github.com> Signed-off-by: Jason --- nemo_text_processing/g2p/data/data_utils.py | 10 +++++++--- tests/nemo_text_processing/g2p/data/test_data_utils.py | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/nemo_text_processing/g2p/data/data_utils.py b/nemo_text_processing/g2p/data/data_utils.py index 8d9db35a1808..2e3924acdad1 100644 --- a/nemo_text_processing/g2p/data/data_utils.py +++ b/nemo_text_processing/g2p/data/data_utils.py @@ -214,7 +214,7 @@ def normalize_unicode_text(text: str) -> str: return text -def _word_tokenize(words: List[Tuple[str, str, str]]) -> List[Tuple[List[str], bool]]: +def _word_tokenize(words: List[Tuple[str, str, str]], is_lower: bool = False) -> List[Tuple[List[str], bool]]: """ Process a list of words and attach indicators showing if each word is unchangeable or not. Each word representation can be one of valid word, any substring starting from | to | (unchangeable word), or punctuation marks including @@ -245,6 +245,7 @@ def _word_tokenize(words: List[Tuple[str, str, str]]) -> List[Tuple[List[str], b Args: words (List[str]): a list of tuples like `(maybe_word, maybe_without_changes, maybe_punct)` where each element corresponds to a non-overlapping match of either `_WORDS_RE_EN` or `_WORDS_RE_ANY_LOCALE`. + is_lower (bool): a flag to trigger lowercase all words. By default, it is False. Returns: List[Tuple[List[str], bool]], a list of tuples like `(a list of words, is_unchanged)`. @@ -255,7 +256,10 @@ def _word_tokenize(words: List[Tuple[str, str, str]]) -> List[Tuple[List[str], b without_changes = False if maybe_word != '': - token = [maybe_word] + if is_lower: + token = [maybe_word.lower()] + else: + token = [maybe_word] elif maybe_punct != '': token = [maybe_punct] elif maybe_without_changes != '': @@ -274,7 +278,7 @@ def _word_tokenize(words: List[Tuple[str, str, str]]) -> List[Tuple[List[str], b def english_word_tokenize(text: str) -> List[Tuple[List[str], bool]]: words = _WORDS_RE_EN.findall(text) - return _word_tokenize(words) + return _word_tokenize(words, is_lower=True) def any_locale_word_tokenize(text: str) -> List[Tuple[List[str], bool]]: diff --git a/tests/nemo_text_processing/g2p/data/test_data_utils.py b/tests/nemo_text_processing/g2p/data/test_data_utils.py index 5986556663cb..eccff2568459 100644 --- a/tests/nemo_text_processing/g2p/data/test_data_utils.py +++ b/tests/nemo_text_processing/g2p/data/test_data_utils.py @@ -86,7 +86,7 @@ def test_any_locale_word_tokenize(self): def test_any_locale_word_tokenize_with_accents(self): input_text = "The naïve piñata at the café..." expected_output = self._create_expected_output( - ["the", " ", "naïve", " ", "piñata", " ", "at", " ", "the", " ", "café", "..."] + ["The", " ", "naïve", " ", "piñata", " ", "at", " ", "the", " ", "café", "..."] ) output = any_locale_word_tokenize(input_text) @@ -98,7 +98,7 @@ def test_any_locale_word_tokenize_with_numbers(self): input_text = r"Three times× four^teen ÷divided by [movies] on \slash." expected_output = self._create_expected_output( [ - "three", + "Three", " ", "times", "× ",

ye5Pf3qMd_6@V{6+)kTQr{1kA$mkL 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%0DwehvVfgZD zC=74KgMnSh;B)ubmOdvmrB|{F#(SMP$M%w)jT#~UKP5%|$R8j;Q6 zxOyfWbqATjF3t7yJ5ToZ2ST=-kh~@YBZ~OmF*Ftsz{cP>Mlp}ln$O=syw)10%Tu9}9A()_QKy0wRVm4m5!x`JKXXl%@;!fN0)+7qcs+r2 zULRbsX_P0zCPu<_RxIb_a;>m}wMM%_(Ei;Y_gOROFpKjHzi|GjIBQk(!?EN|G<2>c zV8!zk{1Y;vl$wQg>$0$6Un1HE#GqR_8ucPcILYT>Qg1n~t#84O|9T+HbFj3}oMjc! zjj$33coOldMuk)j!PJa3a%q~hxew4E~;YR1aY{AE&9&5ZB&x5eoJ_xm#> z+F6@hf{9%JZDpqI7^N7jzZ?iV@n0Cr-)mARvx+ohQT!nigTunGV>5WK^hM0=-;gQv z1#i(<-VgXI69Of(2+n?u!S7Y^n7ktePYlzrWN8Y9XGUXcU?hf0N8`nWL`)o)4Sjxo zt5)$^^XSIv{e2MHd-1EX3wf&lm_?EU@7M8&{>EpQZVXP|AZ+HE{lqW!!^HnWCTs4U z%tGNhE)r=k!f`V^6m^>tvCoL#)kTHauAYn29$C1TorbV4iI}Yuk3H#Oh7Q;POln;%AV9lOg?z>->m*CT$uS#Du{8#DL!IjfntH;(f{i1n=BBe9OPTTb~Q7<6CY%w?V}fBgyjam+R4fLG;elu~`;9qAJkfoL=cgZH@yd=hdDeUv=4T|vb&W*`_njy6 zI@sigyGH_<_s3Ostbmlqgb7?Hwl0puN`3}G+<*8uiSr{&ys&G#2U)ay25EJ`$OWhk$R`*|M%gM%mCL(<$Z za~{{`4k1n2tF{coZYDu?dI$>7_~4n6A8g7!VHxa* zW0ODfHOm&)#yDW^1P>fp@Xv(*KbfL5li+*>&K(m_t8Ktm%U5l9U?Jzt12b$Z{`GOROE~yyU#s z9%x@0fqjU<_`GOTMnvI|Q3%|g`7mqXH*-Gt9u?%rdDcES!WtU46(@%JuIEION6IeLm?Y`}9R= zaHJ@GNfx0AhkN16vlHVHQgm{v1a+Jjr6oBcB*VQ9lWSF&vb7Y4zty00L@UB2i!o(w z8qPeAhpa;shSmpQmCSGEws>IapXkT@?5duGv~={@WX*A z-nbFWOiP}PPc#Td{8s^aFGAsXHWXhf1998J1-?0)E&t>v64|Rz!}ny#rZku@=DnNh zQDWB&H;Z!h#3}!;D1CU*3(dfK z6!9I&wX_b3JR5y?wFGT&asU~_k=W@^i9VUf4;8_PeR=Ecw9;hM`2|c z-rOUk4)w!#u3sjaa9=6i6L;2!V5)R38pd)?-^v~Y2t4Dom!M-w;$+;#&vLs2O`0b| zk4&Vgm*>7SFG-SAY9+z2E*xI zundVn=W+HuI5Fp)*WdM0!i*LEI3neZ1ALy2AII!*Cx7@|3BZUoz%cHuJDrKZS3~YA z@n*>uWA3MWVA(=v$oslt5WkbHhnOL-CL2wwS+8x;gk$S?{4H zHxpnmo$o%n5f~yKgpECJ&}w47$q9RWJ?_r?D6l~;0(SDi1-^%;tcXKvH*5XsGLRLL zg1Y~bu$tM)vLVsPafpQb>~Qq0^Mg^L2Y&i_!e_q^E{upk!0JNwNHt(2&#mHih|$q| z64Xyeg7yY6b9#?Bbtg$v`xNF#M@rMbS5mb7mncor23o?#s|5uP zoC)x-2M>p~BQ~-c{#SFbIVuVBPsZTOkr<5q$TgF<7jw>j!jJXyU)K8aoIV^gm3cpD z3c)P4^mnN^wCE1k+`R}zl#oqHAQLuQSM#thvcj9JU)_H@BmtxnL7N~iN(1?TL5(&8zsr&x*Sa(Ay4m^t6ju-t6J-rzuk}L zr=pEmIJXloUazANyo;@|HU1heLS7H2TXKI(wW+<$Psmk)#0NhtdpgZy6hr0rvm%TMO8 z^4xi(j5CyYjwN%P(Cp5-=Bf~!tqb8i+XR@0XJQ!l8>UWSruxAY=9(0 zm=F~Xm6K8Ikq*QD*4;d?CS8O{^1Yo(r z-@hFmfmYUtYHKDScXB*Vx8)@safsAUaX4h)szv1u?TF-Ju}^Jg&ry18R^?RUtIcfwhBZ)EOeMmVqetj<6r zr2C`hQ3SGjxNhV-trp*V_xLBnT!&ea?Xghiy72JONE|p4jKd$iahY?^zww##Y6sun zwiaXA`hQ4_?!m-pF={_4N#EW{(!q(W>HR24B2&3nHHz=V?yS}5VI7E0A2xDk@kY*T zh7{)^C^bWFRS^zqq{Dv%ufKA>bH(zEW%O@s7{mQ%(=bGFk7LWpX#B3=^N{;3T^fOy zDdP>{Bxkp?UgM4(Gw%ZcFV=HM zz)M~m{jd0932RnuxQDMl=?`lX8=3VjLZX4<jvO~g*$S%x4VpgzWk&J_^@wo>-A9hr}NLTArbp`WWm(10Pf@S&}fl^ z(!W`_b?Hc7oyxkm80`2Mj@|VU_{IF(IP)wFbghGlNjC<#i&MfG8QSznp7tD6 zpocmNq$#OH&mEL$)?H;%OjMx&QY3-3(iil*VK3LkndD;hL#YKvpZ&pZJDxWRDQITh z!1)P0OY?JuzpgL3)noB|asr0Q$6~^^NVH0Z;VjQO{#^*c>CusxvNRSY>_>Ul5QFCO z1mrDGLw$A@7Cp#Dp%K?(mWj-+h(f-41Oja%P^^&%$>0Lq_56!Z`&dKOC_>h$Vl-Ej z_nkNWc&6HpEg7{qIe@w7x<#A^m4l9D$uM{wg;^c!-zpYxntR8~#->2jDGf2lQZTzX z1@2LWaBrx9#*rEr=~iRPuS#eImNS>B6uY)K3jG%H(iVja+Qh$!Ll?ok&w9pHKxFw@-?s_?&rc z%5!6z7Oc-N#$)bRzR60#H{Dch*cgUg+RU_b2*B$vv2Zp@Lh=*t1!cxSjqh?|(NXx^ z6oGY>ad=Xlf_dC~IH#YC4E9~MTV`Tzc|INl6{Gq>5yC&_a~+flvt=nz>drt#W)bur zRU!0O6GVry?;=}_R+2cqPL!llzHhE%&gi~-ZAh@>IZ%EBqSAPV7FQ1WM}>&LoQ2gj zIWWmB=KewjbkqMLv!NP$m)4>Ad>d;oITP?!9|C%NFkPk(A-8(abF34KI3IG+1J+Rb zu-4{f16q8V@c2tRaxaNeS*#3aq9{^PA(LHRaxThpRkA#-O1C-lW6Avf9B9qn0 z@{;9BHm2+sSl*wd+Ds5M2;l5o796zuoWvu6r%s`f|S@7%yXD zp!^jy&h_$c48&XCBv7G55X_ z@rD(c9aw@)i$8ccwH%4_Yq9Ba6Y|qJ(|))p87fK83lj-ym?cSm+&4-cFG~7ptV0_h zLgNp1<3V~SzOe=?aMM3@SJ!e)%v!4vEvOvZjUPO7(&BwfS4ouq{Sc>ReiAfd3G31d zrOA!wJ9FmB(3VCiI($uv+VAt-Aw!(DbB38K>*)Ieq{w@?9PP2=Y_d_RG&{aOh3{6Q zu2MC6-l0Z652%rGs2Z6*Qm20H>NJX*pFVauJ%f5A9@OVaXh69g_nDH4RS6Q_nE}L zab}VrPKtbH&Rr`*_N=en_J-#chH~U1qCi3M3RJyJkz^kz(EXS4v5yod&Jr=e9{%gKm-rITdNp(JdN8 zks9>SQG>RtXppExGh&C7;;wuaj<3wX%qf{z&zhHx(Y{D85#St~#IvLfScfLVm%S)! z^&sq7~IcM^Oq^4WNQ8|$Jb$CXL(g75*T!W_SH(^g^3G3G~uxwElT<)eY$2GQ~K4js9aXxnO z%)e=0JqAT_2KSB@=nrbfr{q@XRJOt?QoLq#I5=L=n`j%e`gJpu@%oBIPYnC zp*W3YeYS{!ILWe>Tk-~H=*Wq4(I`RlHcQa67S2Uw9`4e&lJxqGB-xrvlePr=H8{J{ zj{SWW?Xr}{bM6dnCGzS}CM#1F61&5D)nz5x+rhbvGZkqpzq3KpRp>*U3Q1g5CF^`u zT9CzgWS#x#_yjf5-=jvFj%sB1LY>B~(V#P9H0WI~ug@Rq)UsQH#PtV|?J^DO)Z%BU z%e}XIe_*G|XVQgqyuHo6`pZ7B`{aSvHNn`^!Wyx62{`H$g@_E+!dNgbAu|eDqhfKg zisxz-$w*zFf{%QE?sqf;+`x!0JvTK2Q zVHfLCSo@?cMq{|vAM3z-68Aoyhe*)eq=<+nq7hB7J z$5fJv=1bC1e&+Laq{)fjS#xvtX&jLw|FN7~S*JkGQk+rwQk9Ays#4Bh6?&q5dV9pxdzRX z9zbuV4u+isE{rY1n;p5Z;hHN-J`QOfzSz&1dP|QAIDa_- z$2KQGD~5eufn0xljpi9=6jY32kfxT5y}b4kO44!XLmJASq~r0tT(q4oN8ExYw6hj% zjY>O~ZE1yRZ9BGpYe&?Ub`-Hz{N?!`&K}{O?kh2pDU%=_Eh)|Ja+we{aQic^VQVPY+p_Ho=QE8LYE9u~mWM zRw>fJL(25}o+^zj?@vE1`je)aD&3b+rEhJrnVELTYj^D*%$g6zU&$2Y?~nVo%(!Z{yDP+W!cxwc_YtKnb*U5 zveEtB(6-Wx&j)|Z*-wZJibD9fINa4r#MEo?Fua+F=M@Q<{yq^8xJFXdzsy24`+6URLl6`t?ih{fwJp3|@< z&fS2uS-kcOMrI*VE|Zy(nQ&G~MZGTTt4d>#z9tcQhgkdHn2I_3((%hZ3%7P}kS%C0 z-^JPzLo6LI2X-awzm%JSeYOj6)npCIr4GUR*+uNWc@d-bT4ID?4RQ15*zor?jJ|)w z;?9rkZ?R?e?nfL?{|xn$KM_&riCR@(bfx)Xq@F*#2MB1m=?k@l-OV&t}~X~e}VZ}=HIc_ z{XcDgtg+=gi;2K~WMELCfZc8EyB^|#x3gW~mir6Ky0{;`+83+dg~6Zq@&vsCj8x)T zC~EjivO=_wanmbuy)p`71B8&kuwX-_2f;Q44~1ymVxcp#RnYjZjEEEJ zkUAVM$f?H(UGFsEdSeF;#u&riz#JBfFC$4{{-pI{9L;8rNstZJGLNH|^NlWUd5YYr zx0!FkKJF3k@b4<;W0dT~pl3TFzUB&+Ejf+7^AlIfM8wCvbDxF~}ahjlH_e zCYp5n< ze~W2XKB8=q1G2xmW7FAa==oG)$L$sv7gWIPK@PKlQ=x5>jEGG!aLo~5Dd&cuC7CuBYJ49Z zC!8uDxF}othu-(X+rq^Q{{(SQ6^Je!kCsQuPz+KPRKf=eJ{B_UFWwKcFPG7+X@%8; z&Z2OJCK4}-FyC@7I;MPr(|^D4^v8D;UcZQQi;eJ2_7f(m+aV{DGs>2aMV;;}wAY$r zedr!++9m?kDkXHiJq8`$^@vzF8*ArW!{>F(6U;e)oF*$Q7wd602?S*5L(qMm@m2QDzv$exWNLtdTtOHBPVo%vmV@m~o&C$MX8H z=WjFqHkM(sV0gcurw$(9A&+%=H@lxh#p4a^yKi9fKn2YBFH%_aU<*X*e&PpvKlj(V zA*s?7+Uk2yWaJ1pcQ@|!F%Q*pIQAWxiol{L$Unlo;-#5_&Atv{{&q{qtFOfD(aLym z0}LE% z0n4F#AYNyTbB8a(w2gC7*F1-r?k{K#%)$KIo#^#%K-_9`b%;LlH+XZdhM?}S7?(!8#QXj4L9^Mn z>wgiq#B78EO9w5|e|bK*e<;7Bi%w#E-&HBD5^{6?|yxK)n+UIf8HhTUc_* z24?eYp(FML>yC_vlT@PcH(?nxOTXg22x~JYxncUJJ=phN2UDs)p~%Jy_d+qKXMBPNY{0Y`e?SOvSQD)if$KsmHu-S17Qf41v zBf&F_m9==NSPV<;reqTJ>!?qu^BaNP#l#N$LWwGF?Xh@(r>%M z&)gmd;+|tcktGV9&Z4TAQ2&DS%i>*7wagK|uh};z; z0@J-u5qzC9#D<^3hk<3n>a<6~{85WBxW@@=H@LHR^eOZ42jbdFNoeJKfZ?)VaCfu7 zfqn;lS51 zSaC=e_ttK~>efQRsoDU$C$pFI=q_fM9>L2Khw#N~8$#FZ#=X<}>fu8uOSn{AVxbgK!&Wtj|)re21llua-Dn84`PeHbOXmI?kr+UGKfx;Z| z{Rp1>0H+hI@SE4_udDNfjVgwVO!Q|57g;EPuHM9~$xku7YEaq#I5HKoPP$`&)2Vqw^XHgazQ_l!qvIFpb z*ai%LRU;@K)Z`58?abO>I78hGp4YF%x4n|s8$2A>yavEyfdppVna3H%3o+AjFM4OL zfyJ}k_}R}8BK1aicx?^tOYOv`zyn-^T!Q?2qdYn{e7RM5vjt9C8Vh@LyV&u;z?D z+U{v$v-oh7yc-MWwp=0L*$@P8*TB0aYcS*xGaxUoLBF^am~qDlp?5Z;_3<9OjM#y% zmb)Of;W$!Gn_|tvhZwld1#>55BKQ$|v&BnLIFM(fip)`E52ZA7suR{dhmXr0eEMpE zL*l_m74bo~krR8l?J>^!F;1_m5G<t^WO@NHIDQB zO}7XQTPDL%pYvVv%$S{}i!U7mg@m0W7sZ_qUAWV!Lr{|3fl2B2AtQ1EBhF+A%TI*_ zht(Vxjv9^Ro*?Hux^bSO@j`t1TqG!l&qaCZT}anFhHcA8T*%B8P6e&P`hwFC+n6AP z9@;Gon5o7&z5`Gy_FPcbSH`Wc3-Nebu`un#6r`Hz!N09l*jKuYXEG9)vr-K2#&S-J z#6ZaU8lY;UKBQXqB6{@-xNGmg)lJ)wxxroDGuV6!*H5&T=#J&-^ z2;sZgnlJST9+ZX7!OZme=LU^0cJMy+0=o_FLsR|+a#(ZLTJDWiSh$JHCYdJR^l^;WEL|3!H@?KC>~w*%bXp9K+L9DS}Mi zFFn;kZF+-G4H6a&mS@fUPLw>pj-dNvVVBF7=}Ef6j2Fe6FSi`sXE}#9@)Yhks3Gr> zCdP7YSWb8F(1>%#s^qYB{Y2>69L1hvQ}Fh|8(|w&3Ti5&xfb~?%(nQ+xh%Rc*(`?` z6G=?z(nnLJJhJL0A-rA(Tc7s{PmYbpk0l})e|j$7D9?dPz<#*S-^Ln^kxF_V_j_nRzyCFtF;x6aOM;i^So_GB1q2$l1kp zZxFxy3HI~PJFiMWn3yl?%^Z<%;}c49jNx7GDXbnjT6lg`k@;%Y*zEZc8C*BroFNCr zCcof5_20n>6B~uNfvd6eE;HTxuY&X!abfhXL5nWgmMpaY;3R~co{A@#Cn0inH$2uP z2=}xMh0%|_g(ba%@w;>fzK=HN*~SXo)6>NCajUUQ%nD~5tngs(90YlfW)1xTXiPeS zukU*WHTyat=+rz&99Lu}ps}FUtAGy$v$&2g70#6`#D2|r*cGP&F|VDN*q{otS<`Wl zS;G6wlreMH5*Y4Wjz1d?v$*6a-=B^n&f23Tp2C1hUs}Sk9=XE^vi!+|A_(b?{Tw50nZ{6`6hR4i}~Jk z7=Mg<;-8;2RCwKQ<9V?;gmzyRqZbmboLoOwaWNY~?O~og7Ut-(BRdFso}qZJFDT6P z+^OiS?99yZOE~>^6?#jx#A6v=(0+o}Ek9kTBkF><6enx$*$G^jCiFOCwg z!JImx0>AcrMyU^YLmp+wYvmtwk;;L!<{S#D_<{2J=@hN=Yo< ztqfh(kzR@!<>ebldDjkuQVZqBkgiI*=84ML9a_SO7?0tl{^XSwD-Q-+6*dg~R~TC> zLvaahOC8fi?0T+G=!YKS|Nf{9T3?rdJAFBtvYesck4VSyCej)#GRNjveU;}OzM*pmCypOwq}xD@WnyEoSCys{rB^Mibxd4LGFtt>5DM0B6| zG~8~8s?reCGb?%C&VmNDZE$^HOV?E%yi9Xvv8i;h-f(B2yc-)t$&71gi)FSC$D%{| z9h|^|N5`4*DhqAdxj(TJ_S?QB*4B;T*0eFC*{lpPyON$gjKO`BZi)JbI2(g1YacJs$&7UkWCFrw{rj&<0? z$~9~0c-Md)lP42+u@A>}+hW?eAMdZulPm$EEilKU45Z3D)x%I(8 zcE{4?Y%C1=&3nkKZ%N}P`-E4z86BscSWZ34o-Qs_^>E{zc{urRB6uGg#oNa*()Aw3 zq+Wpx%#=R&l3*T7H|lSHVRw2$Xz4l3PF*0jUoq=jNjBqrp>%Z%$M#&Y=gZ1JTrfZ{-|4MN?xJFT>Rkg z;&DmwC1=cb9GOON(NbbV<;?hX4E+EXZXY&d{`a|(!yiw_?z&9;v`aj=_UQOJGv&uN zCNAwKoE!~iiY}sk*p7D5ei)eek=t5212#uKSn;`TPsK>)Sd;Kbw%P|VT0er37AIJ@GoN)y7kGd35=}*mH5`74(s?Cp zG?Z+^@GI0)ZnCxVKGR1_?rzUB#@+iYOd#>F#WYj7i|-({q=~BMmd2__!tyvbv9{{x zvEO(%{vn+ew`eIDw(z~_)L6%nT0e|}(1Xm_K9gyaOgJ{nky`cK@E+t$`ZZJB!)7r% zcns6t8uF!PAFI09@qVKdqwk7#I=36`UbYez=Nz65aY3!hpMnG4Osg~_sKIRdG&7*! zusy8@M)UnoGArAJV4#1DnWqC8@cblduTRkEN(eEvU1{~roAT618r=1!^I;qOo>=3O zXU~a6d(a9#!m_?z>nut; zNsc6?6rakg;_bc0qfS?N`?Q3o9WL?Z+!ZeV6eh*G3ehVc^IzgyrcJKFKC8aUt3xwY zzGqWaGtcUyH;hU^0m^snGcWeN2c=29s-NUr2ldL5QNnEsoY zwelzj%e}Z??ZInZXJ&`&WB8;6%=a8e#$meHa;JY4db|G8!bEnYyXvd_giU$)iDcd;H&m%-HdHm8(oj_{e5dOD>Z(;Y#3L~E zF8iikq)bP_KTZ5`YSIlFX-(Zm9+X%H5vJxxXY*rp@jXg@i)}3ZGoO0Rj%dZwmdxICV0NCb^;uT{Ncli7h0A9;5rhcy9MjCr$V= zPaXVOvM56Oz4I{+kX##SIC)3VvvCwb`6;6BhBLE)JITiGnD+AIP`V4lUV2IvA(D`- z3FPLb;oc{ouC_(QjXcNj$KogYC>iSq{f!Av4s=oB8tBN{UPc=Yz zSignG)@{CY+Fog(S~aAKyLH6#`sO0zrR(N_Q7#=uhf1F27zY1|KK(P24WollTPwYm zx2>i3YJ+6(=CWafA@zD2aok`fNn4G`b6UuWx1AWRqe1Gc1&qk?;<{}FOY$Ny*yqZK z^JdhZxRH~K9dU?^B0M0CVNuD1r~7koSui&Hb8z*8aM7+V%U(lCkH$nY@WYLw8Pe60 z^+!DTZ0*C|dmijC_Q5+`x}xeFr_tLC+PN3u)b+fu7bO!Me4fprkQ8?YkC-$TI-TO0 zlT<4#xWUT&`&2#`Zrhm$qSciX^1BR&F=wR%sEGR7vgc}9&XJlYBwK%Eb|E z%bpI=L=KB(?(s0{1h`Qo`a$dC+jyzBfXQ+;o_}i0_wn;-w`B?KKhDM=UW=7?8u2}D z5mqus%=i*ULpi@)qMX?|Zlm;Its|ta3rXMPd-d-Of5x1|WKS^hf5JF1O1%43#k7ve zrfJ(4Hms2@xb~;`YaL6Y6|TIz=*@-@f10Mcb8)5*p9aUW*hps9X2RrHD4B1+649Z{ zSTW$T^go@aWLyCT15fd5c@9ot=h^Rcj}yX4fST$^(|?TY_FMAeHMotcrP^9lM|G!CUFBy`PgSj>t_ojW zjY;8CVgjx)dHN+PH%dqA@nno;j`%$)j>NbGj84YT`llZUMmW)3Z6^U&Rx?(*0eT+Y z%M*t+{5N%}+||?2mfg|nH5xQ+K9A{&%yv6{IFcSj_E!hG*{`9$oPj?ZALC17;m!+d zGh7&24<-aMVon4zGzxeWcbUhcN9TTsWWQS?wPlb0Yi%5hBHej<$d{5`5&T>0PygxC zX>&V;d6Fqfej&U`;X>H?oWnY=wdeVNT8$r98SFYC`Q4|x3f70;)= z#dqCHrmlR7v*{zwe7?!LYT2nqK9GKk=fb6a$$~cGFKs5dya{Tmkja19yx|w?y8ac; zQEk=6JGE7Be$`fetu5c}X0=s&a=v5!@flZxZ?RPS3P&fGp#371IhB4y2Zi(B_effQ z2-N(A+ZJ@I4OyY;&!d??m435oF?rN%vVG+}o^401 z%?{-EHfK-f0t$XEVTrm2iy~66>XyO85yBa^4&;1vEN#{oaX-35KEtOauOCC~xkSD$ z&mjDM7*+=zc^l`(0_jC_)br)({$R%ROvQI-G7Sf(<8>sLA38bwCqB-{-U|2M=J8^a za0cy8vFc5}XjsC5KVLz8omVt&^?{VKw_I!Y4!8cVsK_kGTy>r56%VN${Fck}K2dSx z6E?lSkR@!3*-mPzlE!MPMUqKss!~(EAM!`$_g@Tr@{`~u;w9Lgm-wm{2pW7-c!>>{JO?!s)Kj`@h$DAFvj2GdiDjTS;9_e z`x;l*YtlQBPwDU^)SCNqV9{RIRu92#PJ7A>=kjL4CIZw}ab9yeMwj~0vs**%G^#_^ z%^nQgFpT#J{pfsJc1XFe6>HxZWz8lrU9KEK; zj@hGGd0>g~|8{Zi$tt2mLqD+WFg8J^jQ?T792aXkMjT{d(Jt|CcC(n0K8T*=1_QNZxbTSyI-Y;zmX^zwNy#UbBp>?AJ={!z{&V&mh$M zn9!oTF{yd;BoC%Rg;9jEY+k&w<&y?kRlU$S)st5`t=O6zqCBhkUU5e?AIy$ab7Q75SyvUHk94OdY<;M6Mn55V~^NksAt5@ z%+&NY3ETCgm-J<4dghPCsZCFkkF~+D@fcnO>v8GVL>%ufrljR^X3U#IX*{F1Rr%GF?%ETfCsyENnfK3(I$) zrDMjG+lx>;ES-J>Y*F?~$B*o>(;Da#9JYwMC3X~FJ{yI~}}jpBB<6pnpM$7<(sCKsu=Dm=Kb@Wv`9$uit3 zd(92si=@9ljdo@_Qzo4t&9sPym8V(yDT%UYAuK4D{^rLKO4#z#g;xR^;-}|8=swvy zTUyh`t|L=*+bPY=8!2VO+GC)xlzWX9@@Dd2f?nw>Uj2Ve?pC*R;iug#@w#kC=?8t; z8xCV6p~`iQ!OG2T#Y*3TdD1Or!=!XO+Gj5!Y3FDh?pmWfi6pJRFO5C*82Mxp6gqJr z!I84JU8tO0m){=C8QXiB@F)H%XGFKUz0(u}w~?IHSWdSSmPG8ELjUdiSZFbeX=ms0 zbgv%Tou+WK-9G8sGUI8S2i|6Gbm$h&!}ST&j)~^qvPgFP^<{OeAGL(fzkh2K*>h9a zyHaxgE}7KTEMd*ypS=BEPgUey!-NSB_!U@0+o`7+UUPy2s$|ii6sqTCv-)=;IbDP0 zT$GMN9F*K}r^1?o|CFfx)@U5?WQ(H(@m9Z-4THZIu1oH(beP(jE8eToE?CT!lf5Z* zpQBXON}23jy|QpdtXda(X>d3eM{h_Vp+u?4-Zwk}()|raOxTqDgEQUrVfRPc9v4KzS_ZT>vwKw$-=ca|~tb1q$7 zgrV>-iJ+Z{>{Bb`S-QO0>dHLdNwkk0V^9K)%I~<5GTKa?m?nqF+hoVLxEc5q+*Eol zI;1?=m#Fjz??td;z=I|7|6tmh5qH-s{%_0+$7n54zFzJ~&M5Kz++9ngLix=*Rw!5!_Do7FJ9o>eaCf6n?&cK@u;m zqr_7b$)Dxn#A=4|d_p4D6HjvaUApu=i%(Ho&Z+N-jPQzM)9^_0-ulqyws^n(2C(g1 z2#u!%abZmW)s_Klo-W?3)^79^|BUgw?fkyBjk2kW>Go;}v(wvSs@9R<#|nR%XJJ|= z9?h4oJTI6jJfIeoOlryZmnKBHxD#L75i5CfoGR62X4{$UdaH->`~Y3F%*A6Lyq#ul)GAArPNU-gK=nVf9Hli|VbWqm`%l*Akf9B88-vf!xvY zqJc>qXRUI0yD=Tl+&~Umd(z$|kubvqVGM{@#pVc`s(l!2DLsU~$-93gm zHK7dJ=qDZ{FH$N3$^RJ0^#(qip5V^xR9CWM-N*^BV|dbf=&+V?!;R3&oypXhoh56a zM&-I{W$dr>bRQ=3X%*YW zPckOLf#;`ui0$J;@2{SCyKG^8yW#9#DqTpTGlkEMq-t0cH@!j_Xtsm1Bc_SRaSIyt zg2>fMX3pG1b_E2nLB1PZbdx2Eqj0@Q`X`?rIJ>N3{vz=MO_DyHaspHg5PeHx^ao$Ldpn8>LrG+)B zY(L4iW%1Z|i>53foL)cunIiw~y`Oute60K|vw~QV?aij=qRWOkku2J-f1m~V`o=Vf z+(FV9WA?9`z(d>S%q;kz82CL?YUZA&JmL&ihmtV03C5zc3DdROp%K@VHWqW}v-uF- zUQX0Zv&HYH3EjnC<(M>vmrJ(tXrwdAi(GN?aYEN_1zTzjCZ~E9UIQG2F%im(9})a+ z7tE10maH_^Wp#}yulfeD%0H3InaTLw4QF+90Oy{i;woAE&Reo@I1@~I7xB8iOlC+_ zES+b_`=_NX@AEtvvCR*g*-kW%454NEaqhGWLoF_zPpRolyPM1{%}iQbXP|sf=FyZ? ziZwHs->Q%enuXL$&tYZvlLQ@(M>`^x$`27-sTItW5#F4r?@z5?A@uSK;?yc1wEB7C zap4$4C)m@`doQ2sZ6+pX2X1B?SfDkR=<9uGmL+ie$$Kg*l}RsM`h3Pp+W;YpdBaB+jss&x{J z>1Q~wCPqAwK2*>4VbrKVPKkHs?pN`d+MA*GcoVMg)^n`671}`#G(B)kxO9HZ+8M;* z!I9Kx$DrRSg!4NCX=dii0u6Z!_y$wIX9nKF!T5Pdda17^^KL{u%MGLD%^u3J55Dp_ zcH`49KUzMBM5}%@^_@Z)mK(r%Bk4O><;utmd+ayal6=z{qk4AOyxPjy@_Fcaj%Sb8 zcsAM=Q1B#8*!@u~J0$ainHCog^->yKoU6>P>d*AXTd~(V%*EIJn0sT0qV_tsp!rM- z#kBb-uB_R^@1HC1y!}zJ3=2?N{k*4KG#yBL|AU;ca7AatCi;FHN2@ub$?!6u^5+pb zx25m7Qs%mqd)X50#K+oEl#36&@t;V^l6a!D^5xKc(XPksCr!G%s_*jn`aizXFN1W~OtO{kLqr5X3 z#jt-2CEh*e}?EY zcYqgPmN~F{;3MV6l*^M&`e#g9Ta}~K3|orU%6+t5)DA1Fk&0G>fy#X8WG>I2LSTpu zua0kLf_4wOwbG=%?r3~=uP3UGBW43_nW4La)5n7!|0Of?Yq;dcT!>ARb1yVX zGSSWq^Dw~ToAkO4-OG}l{phl`jbwW!vG+wsOx^p*&Tb3u@9GispS&$z?&fvI25h6Z zljAC##GjW*zs`IPnja9>g(Kyq0X$m~$m;@s62!}{`^bwsn;bDrG-vdBW2P+GPv2lK z{*4G_UvLBlj}m#7lf}8ixwzMnK3&-j<#x}e$$sewkol+6o=_$Xa06`l=&h2D;w%QV zP9S=hoBYm7mGVpP3QvEGQFa~P%7%d+TyL_L`Nl((u|CS=TQ%9y$Z% z9E*zL`XA{Ld}q(L-mbLoCA{->aeTEE-^}Udw7ejG@Q>>mc|=pX_w*R_O`E~e3wvqm z3|dWJO4bu?B1MZSIJH=qN4q&_u~yi{i&#@nk0+m|;Badr)d%G46tBTUZyyG&5^vu| zZ<1_0xEN+bYOVD&vNd2zjtO4DjzpEX^GTMRodTm+7n4uN{TI=-fNNdzNYhn#Z=FYN zopiR^$@}@9FI5YiFm9<5yw@4Z3limiaU%Ugp0eY!5fagXTf<)$ z98I}8snvfzN>u!Kel#>-OipVwUCFYULE zc!QpJVQA__w0=0-;{Ay#3n0JTTRxXIEURVAyiUtFF=R8VKH2dQSM=6+k}l_?wpa_c z=Urp@q09IN6yZNe_~}`NlC{oaUT89*=^<3M^5oo#i^TTLWACa|rpes?&+LpcUei|D zdqJI{<7Iz7c?!mTs+2b$+zK1CtF1WwC{tA8<-03qXTxb~j7$wsI`u17cB~!7#Xaje zTi+7x@oVXNcmlqGi&@akp5E!MM1FSW&WJ-C@fV*UE(GimpYR9qu}_sf+wef_I-lUh zmozed`*N9L7Dp zON`LUL$7-hr6(OwKNz7ngsoA=iHFi`hG;=E=HoK7HLgM9lvCN86sN6?>C<<%@H-b! ze!T|`5-?leDOHM+Q(L`xi4PvS;tt> z!yhC0EEyQaqqaGbV*`$pcOi|gMzQGc3&rqCAnP>4`P%vfy5kFR%M;&EehDFk7s>qu z=F9VGGyDX#E(O!7GJxyPV#SLnEWV#P%w4KT*6%7y`aEN(bc#0n^@I-JDzW_Zm^tkp z(D(B#ZtpE&mGCh3zD#99lQQ;5HYe99nW{PtoI2>KjBGbnvF+cMjiLL=l{e&xg;Ob; zw_dsV?tpT1w#?qsSMYk@RtmOEX2$UP46fCYzNITM%saw#d6Si`-Y#s8=Tp@+l$AlIKl!`IPH?mVa;el`=$yDM0EB>S+sf|N3}50&Xy!oOJ=_B zWmdS|bYSd5dwDz9V!g?i<#H}Q{T{@pPKh|kOwwcQY3W?g;K!ho=zNJsSMJas{t427 zoy#|2d)`@jmp8ZWVkvnslZnz{*x(vlp9(J|E0yE2C+IRIQ?!J${OT?2m3KGU=KPBH ze!`V(EquSxRdj6h5gmsrTsFL?VC*9tJcUQUM3`>EW7HJ=x{dIL+{#jU;%GyeagcJ9 z9m+TF&JbeBlF8P5dfE-UA3c@9Gpv=&NA$2-EdJO}GEeIn*vg8A zMn_n*cOeU}tmMXMXC|EWmwcxW(=4PXN%WKrWBhpDD2{FNv&+#)#BxlWa6?a#zFxt- zZWiOGpWvdAu-(*>n5E`Tv;K~>4{)US@*}d>KZ^GbS7D;KbEj`G%eTca?Y~6MUOtYw z_=5B&rP4n-Trx^wERPMRsbumtzABP;bQ$&g-C)e}TYNUU#)0yS1P;h%N?Hs9R)x{j zFF}0!*}}>^%Y>CTNi2OQoWg%3+1FC3hx}#N@n2jv`pxQ)uS~F({Zh(JZgoFLRbv&) z)(X>KxKM_oMT8q|WZ^Ae#iO&U;`XN>12s2MP&OO=Rp*sqvyK-A9ko!trPZgY;~-2O z+jHhjv0~NtmSVH6FEgqQI6iCxZ7b#ok9a8WMz3c7ddaMGcBS4uD>`i5!LEnatncf` zDtpOTcn8ZaEd-NeDUAOn{4C)zdnBGLe`fXe6u-K)bPt;`W0DQ= z`z#SyGe_SY;-7`gVY!|d{`8c6dkB}hc=Bt#J9GVQXeG1mwyW;Kii<(b;UqhSUGC

Hd`o;UP(Aa*m*$(}UlDKzH6e4j7i!8z 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 ^7oH27c}&9gte$ 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ℑI)sl_cAqA$r38Mm}Q)$)~tK*uMF6 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%0Aod->0QYTZ_ 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

I~!$f*A;#`n)BG;sac2kqGYtBQuIXp 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