diff --git a/examples/custom_model_runner/.gitignore b/examples/custom_model_runner/.gitignore deleted file mode 100644 index a9386b08c6d..00000000000 --- a/examples/custom_model_runner/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -data -mnist_png/ -mnist_png.tar.gz diff --git a/examples/custom_model_runner/BUILD b/examples/custom_model_runner/BUILD deleted file mode 100644 index fe0e8551a1b..00000000000 --- a/examples/custom_model_runner/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -package(default_visibility = ["//visibility:private"]) - -load("//bazel:utils.bzl", "run_shell") - -run_shell( - name = "download_mnist_data", - content = [ - " | ".join([ - "wget -qO- https://github.com/myleott/mnist_png/raw/master/mnist_png.tar.gz", - "tar xz", - ]), - ], -) - -run_shell( - name = "train", - content = ["python train.py $@"], -) diff --git a/examples/custom_model_runner/README.md b/examples/custom_model_runner/README.md deleted file mode 100644 index 776d8f6d43d..00000000000 --- a/examples/custom_model_runner/README.md +++ /dev/null @@ -1,105 +0,0 @@ -# Custom PyTorch MNIST runner - -This example showcases how one can extend BentoML's provided runner and build a custom Runner. See [our documentation][#custom-runner] on Runners. - -This example will also demonstrate how one can create custom metrics to monitor the model's performance. -We will provide two Prometheus configs to use for either HTTP or gRPC BentoServer for demonstration. - -### Requirements - -Install requirements with: - -```bash -pip install -r requirements.txt -``` - -### Instruction - -1. Train and save model: - -```bash -python -m train -``` - -2. Download test data - -```bash -wget -qO- https://github.com/myleott/mnist_png/raw/master/mnist_png.tar.gz | tar xz -``` - -3. Start a development server: - - - - - - - - - - - - - -
Protocol Command
HTTP - -```bash -bentoml serve-http service.py:svc --development -``` - -
gRPC - -```bash -bentoml serve-grpc service.py:svc --development -``` - -
- -4. Send test requests - - - - - - - - - - - -
Protocol Command
HTTP - -```bash -curl -F 'image=@mnist_png/testing/8/1007.png' http://127.0.0.1:3000/predict -``` - -
gRPC - -```bash -grpcurl -d @ -plaintext 0.0.0.0:3000 bentoml.grpc.v1.BentoService/Call < - -5. Load testing - -Start production server: - -```bash -bentoml serve -``` - -From another terminal: - -```bash -pip install locust -locust -H http://0.0.0.0:3000 -``` - -[#custom-runner]: https://docs.bentoml.com/en/latest/concepts/runner.html#custom-runner diff --git a/examples/custom_model_runner/bentofile.yaml b/examples/custom_model_runner/bentofile.yaml deleted file mode 100644 index 5d051ea4d4f..00000000000 --- a/examples/custom_model_runner/bentofile.yaml +++ /dev/null @@ -1,6 +0,0 @@ -service: "service:svc" -include: - - "service.py" - - "mnist.py" -python: - requirements_txt: "./requirements.txt" diff --git a/examples/custom_model_runner/locustfile.py b/examples/custom_model_runner/locustfile.py deleted file mode 100644 index 08a14b33c85..00000000000 --- a/examples/custom_model_runner/locustfile.py +++ /dev/null @@ -1,16 +0,0 @@ -from locust import HttpUser -from locust import between -from locust import task - - -class MnistTestUser(HttpUser): - @task - def predict(self): - url = "/predict" - filename = "./mnist_png/testing/9/1000.png" - files = [ - ("file", (filename, open(filename, "rb"), "image/png")), - ] - self.client.post(url, files=files) - - wait_time = between(0.05, 2) diff --git a/examples/custom_model_runner/net.py b/examples/custom_model_runner/net.py deleted file mode 100644 index b9c1a0665d8..00000000000 --- a/examples/custom_model_runner/net.py +++ /dev/null @@ -1,31 +0,0 @@ -from __future__ import annotations - -import torch -import torch.nn as nn -import torch.nn.functional as F - - -class CNN(nn.Module): - def __init__(self): - super().__init__() - self.conv1 = nn.Conv2d(1, 32, 3, 1) - self.conv2 = nn.Conv2d(32, 64, 3, 1) - self.dropout1 = nn.Dropout(0.25) - self.dropout2 = nn.Dropout(0.5) - self.fc1 = nn.Linear(9216, 128) - self.fc2 = nn.Linear(128, 10) - - def forward(self, x): - x = self.conv1(x) - x = F.relu(x) - x = self.conv2(x) - x = F.relu(x) - x = F.max_pool2d(x, 2) - x = self.dropout1(x) - x = torch.flatten(x, 1) - x = self.fc1(x) - x = F.relu(x) - x = self.dropout2(x) - x = self.fc2(x) - output = F.log_softmax(x, dim=1) - return output diff --git a/examples/custom_model_runner/prometheus/prometheus.grpc.yml b/examples/custom_model_runner/prometheus/prometheus.grpc.yml deleted file mode 100644 index 071406f8cac..00000000000 --- a/examples/custom_model_runner/prometheus/prometheus.grpc.yml +++ /dev/null @@ -1,9 +0,0 @@ -global: - scrape_interval: 5s - evaluation_interval: 15s - -scrape_configs: - - job_name: prometheus - metrics_path: "/" - static_configs: - - targets: ["0.0.0.0:3001"] diff --git a/examples/custom_model_runner/prometheus/prometheus.http.yml b/examples/custom_model_runner/prometheus/prometheus.http.yml deleted file mode 100644 index f7708037971..00000000000 --- a/examples/custom_model_runner/prometheus/prometheus.http.yml +++ /dev/null @@ -1,9 +0,0 @@ -global: - scrape_interval: 5s - evaluation_interval: 15s - -scrape_configs: - - job_name: prometheus - metrics_path: "/metrics" - static_configs: - - targets: ["0.0.0.0:3000"] diff --git a/examples/custom_model_runner/requirements.txt b/examples/custom_model_runner/requirements.txt deleted file mode 100644 index 48a2882badb..00000000000 --- a/examples/custom_model_runner/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -bentoml -torch -torchvision diff --git a/examples/custom_model_runner/service.py b/examples/custom_model_runner/service.py deleted file mode 100644 index 283d1c039a3..00000000000 --- a/examples/custom_model_runner/service.py +++ /dev/null @@ -1,59 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING - -if TYPE_CHECKING: - import PIL.Image - -import time - -import numpy as np -from utils import exponential_buckets - -import bentoml - -mnist_model = bentoml.pytorch.get("mnist_cnn:latest") -_BuiltinRunnable = mnist_model.to_runnable() - -inference_duration = bentoml.metrics.Histogram( - name="inference_duration", - documentation="Duration of inference", - labelnames=["torch_version", "device_id"], - buckets=exponential_buckets(0.001, 1.5, 10.0), -) - - -class CustomMnistRunnable(_BuiltinRunnable): - def __init__(self): - super().__init__() - import torch - - print("Running on device:", self.device_id) - self.torch_version = torch.__version__ - print("Running on torch version:", self.torch_version) - - @bentoml.Runnable.method(batchable=True, batch_dim=0) - def __call__(self, input_data: np.ndarray) -> np.ndarray: - start = time.perf_counter() - output = super().__call__(input_data) - inference_duration.labels( - torch_version=self.torch_version, device_id=self.device_id - ).observe(time.perf_counter() - start) - return output.argmax(dim=1) - - -mnist_runner = bentoml.Runner( - CustomMnistRunnable, - method_configs={"__call__": {"max_batch_size": 50, "max_latency_ms": 600}}, -) - -svc = bentoml.Service( - "pytorch_mnist_demo", runners=[mnist_runner], models=[mnist_model] -) - - -@svc.api(input=bentoml.io.Image(), output=bentoml.io.NumpyNdarray()) -async def predict(image: PIL.Image.Image) -> np.ndarray: - arr = np.array(image).reshape([-1, 1, 28, 28]) - res = await mnist_runner.async_run(arr) - return res.numpy() diff --git a/examples/custom_model_runner/train.py b/examples/custom_model_runner/train.py deleted file mode 100644 index 20d39aaf574..00000000000 --- a/examples/custom_model_runner/train.py +++ /dev/null @@ -1,166 +0,0 @@ -from __future__ import print_function - -import argparse - -import net -import torch -import torch.nn.functional as F -import torch.optim as optim -from torch.optim.lr_scheduler import StepLR -from torch.utils.data import DataLoader -from torchvision import datasets -from torchvision import transforms - - -def train(args, model, device, train_loader, optimizer, epoch): - model.train() - for batch_idx, (data, target) in enumerate(train_loader): - data, target = data.to(device), target.to(device) - optimizer.zero_grad() - output = model(data) - loss = F.nll_loss(output, target) - loss.backward() - optimizer.step() - if batch_idx % args.log_interval == 0: - print( - "Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}".format( - epoch, - batch_idx * len(data), - len(train_loader.dataset), - 100.0 * batch_idx / len(train_loader), - loss.item(), - ) - ) - if args.dry_run: - break - - -def test(model, device, test_loader): - model.eval() - test_loss = 0 - correct = 0 - with torch.no_grad(): - for data, target in test_loader: - data, target = data.to(device), target.to(device) - output = model(data) - test_loss += F.nll_loss( - output, target, reduction="sum" - ).item() # sum up batch loss - pred = output.argmax( - dim=1, keepdim=True - ) # get the index of the max log-probability - correct += pred.eq(target.view_as(pred)).sum().item() - - test_loss /= len(test_loader.dataset) - - print( - "\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n".format( - test_loss, - correct, - len(test_loader.dataset), - 100.0 * correct / len(test_loader.dataset), - ) - ) - - -def main(): - # Training settings - parser = argparse.ArgumentParser(description="PyTorch MNIST Example") - parser.add_argument( - "--batch-size", - type=int, - default=64, - metavar="N", - help="input batch size for training (default: 64)", - ) - parser.add_argument( - "--test-batch-size", - type=int, - default=1000, - metavar="N", - help="input batch size for testing (default: 1000)", - ) - parser.add_argument( - "--epochs", - type=int, - default=5, - metavar="N", - help="number of epochs to train (default: 5)", - ) - parser.add_argument( - "--lr", - type=float, - default=1.0, - metavar="LR", - help="learning rate (default: 1.0)", - ) - parser.add_argument( - "--gamma", - type=float, - default=0.7, - metavar="M", - help="Learning rate step gamma (default: 0.7)", - ) - parser.add_argument( - "--no-cuda", action="store_true", default=False, help="disables CUDA training" - ) - parser.add_argument( - "--dry-run", - action="store_true", - default=False, - help="quickly check a single pass", - ) - parser.add_argument( - "--seed", type=int, default=1, metavar="S", help="random seed (default: 1)" - ) - parser.add_argument( - "--log-interval", - type=int, - default=10, - metavar="N", - help="how many batches to wait before logging training status", - ) - args = parser.parse_args() - use_cuda = not args.no_cuda and torch.cuda.is_available() - - torch.manual_seed(args.seed) - - device = torch.device("cuda" if use_cuda else "cpu") - - train_kwargs = {"batch_size": args.batch_size} - test_kwargs = {"batch_size": args.test_batch_size} - if use_cuda: - cuda_kwargs = {"num_workers": 1, "pin_memory": True, "shuffle": True} - train_kwargs.update(cuda_kwargs) - test_kwargs.update(cuda_kwargs) - - transform = transforms.Compose( - [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] - ) - train_ds = datasets.MNIST("data", train=True, download=True, transform=transform) - test_ds = datasets.MNIST("data", train=False, transform=transform) - train_loader = DataLoader(train_ds, **train_kwargs) - test_loader = DataLoader(test_ds, **test_kwargs) - - model = net.CNN().to(device) - optimizer = optim.Adadelta(model.parameters(), lr=args.lr) - - scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) - for epoch in range(1, args.epochs + 1): - train(args, model, device, train_loader, optimizer, epoch) - test(model, device, test_loader) - scheduler.step() - - import bentoml - - model = bentoml.pytorch.save_model( - "mnist_cnn", - model, - signatures={"__call__": {"batchable": True}}, - external_modules=[net], - ) - print(f"Saved: {model}") - - -if __name__ == "__main__": - raise SystemExit(main()) diff --git a/examples/custom_model_runner/utils.py b/examples/custom_model_runner/utils.py deleted file mode 100644 index 63e6e066535..00000000000 --- a/examples/custom_model_runner/utils.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -INF = float("inf") - -MAX_BUCKET_COUNT = 100 - - -def exponential_buckets(start: float, factor: float, end: float) -> tuple[float, ...]: - """ - Creates buckets of a Prometheus histogram where the lowest bucket has an upper - bound of start and the upper bound of each following bucket is factor times the - previous buckets upper bound. The return tuple include the end as the second - last value and positive infinity as the last value. - """ - - assert start > 0.0 - assert start < end - assert factor > 1.0 - - bound = start - buckets: list[float] = [] - while bound < end: - buckets.append(bound) - bound *= factor - - if len(buckets) > MAX_BUCKET_COUNT: - buckets = buckets[:MAX_BUCKET_COUNT] - - return tuple(buckets) + (end, INF) diff --git a/examples/custom_python_model/lda_classifier/README.md b/examples/custom_python_model/lda_classifier/README.md deleted file mode 100644 index ce0848f658f..00000000000 --- a/examples/custom_python_model/lda_classifier/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Custom LDA classifier model via bentoml.picklable_model - -This example is based on https://github.com/eriklindernoren/ML-From-Scratch - -`bentoml.picklable_model` represents a generic model type in BentoML, that uses -`cloudpickle` for model serialization under the hood. Most pure python code based -ML model implementation should work with `bentoml.picklable_model` out-of-the-box. - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train a custom LDA model: - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -``` -curl -X POST -H "content-type: application/json" --data "[[5.9, 3, 5.1, 1.8]]" http://127.0.0.1:3000/classify -``` - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize iris_classifier_lda:latest -``` diff --git a/examples/custom_python_model/lda_classifier/bentofile.yaml b/examples/custom_python_model/lda_classifier/bentofile.yaml deleted file mode 100644 index cd7f0400543..00000000000 --- a/examples/custom_python_model/lda_classifier/bentofile.yaml +++ /dev/null @@ -1,7 +0,0 @@ -service: "service.py:svc" -include: -- "service.py" -- "lda.py" -python: - packages: - - numpy diff --git a/examples/custom_python_model/lda_classifier/lda.py b/examples/custom_python_model/lda_classifier/lda.py deleted file mode 100644 index 007ae42e466..00000000000 --- a/examples/custom_python_model/lda_classifier/lda.py +++ /dev/null @@ -1,58 +0,0 @@ -from __future__ import division -from __future__ import print_function - -import numpy as np - - -def calculate_covariance_matrix(X, Y=None): - """Calculate the covariance matrix for the dataset X""" - if Y is None: - Y = X - n_samples = np.shape(X)[0] - covariance_matrix = (1 / (n_samples - 1)) * (X - X.mean(axis=0)).T.dot( - Y - Y.mean(axis=0) - ) - - return np.array(covariance_matrix, dtype=float) - - -class LDA: - """The Linear Discriminant Analysis classifier, also known as Fisher's linear discriminant. - Can besides from classification also be used to reduce the dimensionaly of the dataset. - """ - - def __init__(self): - self.w = None - - def transform(self, X, y): - self.fit(X, y) - # Project data onto vector - X_transform = X.dot(self.w) - return X_transform - - def fit(self, X, y): - # Separate data by class - X1 = X[y == 0] - X2 = X[y == 1] - - # Calculate the covariance matrices of the two datasets - cov1 = calculate_covariance_matrix(X1) - cov2 = calculate_covariance_matrix(X2) - cov_tot = cov1 + cov2 - - # Calculate the mean of the two datasets - mean1 = X1.mean(0) - mean2 = X2.mean(0) - mean_diff = np.atleast_1d(mean1 - mean2) - - # Determine the vector which when X is projected onto it best separates the - # data by class. w = (mean1 - mean2) / (cov1 + cov2) - self.w = np.linalg.pinv(cov_tot).dot(mean_diff) - - def predict(self, X): - y_pred = [] - for sample in X: - h = sample.dot(self.w) - y = 1 * (h < 0) - y_pred.append(y) - return y_pred diff --git a/examples/custom_python_model/lda_classifier/requirements.txt b/examples/custom_python_model/lda_classifier/requirements.txt deleted file mode 100644 index 362816fef7c..00000000000 --- a/examples/custom_python_model/lda_classifier/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -scikit-learn -bentoml>=1.0.0 diff --git a/examples/custom_python_model/lda_classifier/service.py b/examples/custom_python_model/lda_classifier/service.py deleted file mode 100644 index 9a603f1f11c..00000000000 --- a/examples/custom_python_model/lda_classifier/service.py +++ /dev/null @@ -1,16 +0,0 @@ -import typing - -import numpy as np - -import bentoml -from bentoml.io import JSON -from bentoml.io import NumpyNdarray - -iris_clf_runner = bentoml.picklable_model.get("iris_clf_lda:latest").to_runner() - -svc = bentoml.Service("iris_classifier_lda", runners=[iris_clf_runner]) - - -@svc.api(input=NumpyNdarray(dtype="float", shape=(-1, 4)), output=JSON()) -async def classify(input_series: np.ndarray) -> typing.List[float]: - return await iris_clf_runner.predict.async_run(input_series) diff --git a/examples/custom_python_model/lda_classifier/train.py b/examples/custom_python_model/lda_classifier/train.py deleted file mode 100644 index c2a0bfb3a2f..00000000000 --- a/examples/custom_python_model/lda_classifier/train.py +++ /dev/null @@ -1,42 +0,0 @@ -from __future__ import print_function - -# import custom model class -from lda import LDA -from sklearn import datasets -from sklearn.metrics import accuracy_score -from sklearn.model_selection import train_test_split - -import bentoml - - -def main(): - # Load the dataset - data = datasets.load_iris() - X = data.data - y = data.target - - # Three -> two classes - X = X[y != 2] - y = y[y != 2] - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33) - - # Fit and predict using LDA - lda = LDA() - lda.fit(X_train, y_train) - y_pred = lda.predict(X_test) - - accuracy = accuracy_score(y_test, y_pred) - print("Accuracy:", accuracy) - - # Save model with BentoML - saved_model = bentoml.picklable_model.save_model( - "iris_clf_lda", - lda, - signatures={"predict": {"batchable": True}}, - ) - print(f"Model saved: {saved_model}") - - -if __name__ == "__main__": - main() diff --git a/examples/custom_python_model/simple_pickable_model/README.md b/examples/custom_python_model/simple_pickable_model/README.md deleted file mode 100644 index 8082cc047c4..00000000000 --- a/examples/custom_python_model/simple_pickable_model/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Simple Python model via bentoml.picklable_model - - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Save the simple python model: - -```bash -python ./model.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request: - -```bash -curl -X POST -H "content-type: application/json" --data "[1,2,3,4,5]" http://127.0.0.1:3000/square -``` - -4. Build Bento - -```bash -bentoml build -``` - -5. Build docker image - -```bash -bentoml containerize simple_square_svc:latest -``` - -```bash -docker run -p 3000:3000 simple_square_svc:ixbjlmqg3cjbluqj -``` diff --git a/examples/custom_python_model/simple_pickable_model/bentofile.yaml b/examples/custom_python_model/simple_pickable_model/bentofile.yaml deleted file mode 100644 index 82864690e01..00000000000 --- a/examples/custom_python_model/simple_pickable_model/bentofile.yaml +++ /dev/null @@ -1,7 +0,0 @@ -service: "service:svc" -include: - - "model.py" - - "service.py" -python: - packages: - - "numpy" diff --git a/examples/custom_python_model/simple_pickable_model/model.py b/examples/custom_python_model/simple_pickable_model/model.py deleted file mode 100644 index 59a10466198..00000000000 --- a/examples/custom_python_model/simple_pickable_model/model.py +++ /dev/null @@ -1,17 +0,0 @@ -from typing import List - -import numpy as np - -import bentoml - - -def my_python_model(input_list: List[int]) -> List[int]: - return np.square(np.array(input_list)) - - -if __name__ == "__main__": - # `save_model` saves a given python object or function - saved_model = bentoml.picklable_model.save_model( - "my_python_model", my_python_model, signatures={"__call__": {"batchable": True}} - ) - print(f"Model saved: {saved_model}") diff --git a/examples/custom_python_model/simple_pickable_model/requirements.txt b/examples/custom_python_model/simple_pickable_model/requirements.txt deleted file mode 100644 index bd75c582e0e..00000000000 --- a/examples/custom_python_model/simple_pickable_model/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -bentoml>=1.0.0 diff --git a/examples/custom_python_model/simple_pickable_model/service.py b/examples/custom_python_model/simple_pickable_model/service.py deleted file mode 100644 index 6e797f6917e..00000000000 --- a/examples/custom_python_model/simple_pickable_model/service.py +++ /dev/null @@ -1,10 +0,0 @@ -import bentoml - -square_runner = bentoml.picklable_model.get("my_python_model:latest").to_runner() - -svc = bentoml.Service("simple_square_svc", runners=[square_runner]) - - -@svc.api(input=bentoml.io.JSON(), output=bentoml.io.JSON()) -async def square(input_arr): - return await square_runner.async_run(input_arr) diff --git a/examples/custom_runner/nltk_pretrained_model/BUILD b/examples/custom_runner/nltk_pretrained_model/BUILD deleted file mode 100644 index ae5d9ed1961..00000000000 --- a/examples/custom_runner/nltk_pretrained_model/BUILD +++ /dev/null @@ -1,8 +0,0 @@ -package(default_visibility = ["//visibility:private"]) - -load("//bazel:utils.bzl", "run_shell") - -run_shell( - name = "download_nltk_models", - content = ["python -m download_nltk_models"], -) diff --git a/examples/custom_runner/nltk_pretrained_model/README.md b/examples/custom_runner/nltk_pretrained_model/README.md deleted file mode 100644 index dc0501bf037..00000000000 --- a/examples/custom_runner/nltk_pretrained_model/README.md +++ /dev/null @@ -1,98 +0,0 @@ -# Custom Runner with pre-trained NLTK model - -For ML libraries that provide built-in trained models, such as NLTK, users may create a -custom Runner directly without saving the model to the model store. - -This example showcases how one can create a custom Runner directly without saving models -to model store for frameworks that provide buil-tin trained models. See [our documentation][#custom-runner] on Runners. - -This example will also demonstrate how one can create custom metrics to monitor the model's performance. -We will provide two Prometheus configs to use for either HTTP or gRPC BentoServer for demonstration. - -### Requirements - -Install requirements with: - -```bash -pip install -r requirements.txt -``` - -### Instruction - -1. Download required NLTK pre-trained models: - -```bash -python -m download_nltk_models -``` - -2. Run the service: - - - - - - - - - - - - - -
Protocol Command
HTTP - -```bash -bentoml serve-http service.py:svc -``` - -
gRPC - -```bash -bentoml serve-grpc service.py:svc -``` - -
- -3. Send in test request: - - - - - - - - - - - -
Protocol Command
HTTP - -```bash -curl -X POST -H "content-type: application/text" --data "BentoML is great" http://127.0.0.1:3000/analysis -``` - -
gRPC -
- -```bash -grpcurl -d @ -plaintext 0.0.0.0:3000 bentoml.grpc.v1.BentoService/Call <=1.0.0 diff --git a/examples/custom_runner/nltk_pretrained_model/service.py b/examples/custom_runner/nltk_pretrained_model/service.py deleted file mode 100644 index 37dd17fd02f..00000000000 --- a/examples/custom_runner/nltk_pretrained_model/service.py +++ /dev/null @@ -1,83 +0,0 @@ -from __future__ import annotations - -import time -import typing as t -from statistics import mean -from typing import TYPE_CHECKING - -import nltk -from nltk.sentiment import SentimentIntensityAnalyzer - -import bentoml -from bentoml.io import JSON -from bentoml.io import Text - -if TYPE_CHECKING: - from bentoml._internal.runner.runner import RunnerMethod - - class RunnerImpl(bentoml.Runner): - is_positive: RunnerMethod - - -inference_duration = bentoml.metrics.Histogram( - name="inference_duration", - documentation="Duration of inference", - labelnames=["nltk_version", "sentiment_cls"], - buckets=( - 0.005, - 0.01, - 0.025, - 0.05, - 0.075, - 0.1, - 0.25, - 0.5, - 0.75, - 1.0, - 2.5, - 5.0, - 7.5, - 10.0, - float("inf"), - ), -) - -polarity_counter = bentoml.metrics.Counter( - name="polarity_total", - documentation="Count total number of analysis by polarity scores", - labelnames=["polarity"], -) - - -class NLTKSentimentAnalysisRunnable(bentoml.Runnable): - SUPPORTED_RESOURCES = ("cpu",) - SUPPORTS_CPU_MULTI_THREADING = False - - def __init__(self): - self.sia = SentimentIntensityAnalyzer() - - @bentoml.Runnable.method(batchable=False) - def is_positive(self, input_text: str) -> bool: - start = time.perf_counter() - scores = [ - self.sia.polarity_scores(sentence)["compound"] - for sentence in nltk.sent_tokenize(input_text) - ] - inference_duration.labels( - nltk_version=nltk.__version__, sentiment_cls=self.sia.__class__.__name__ - ).observe(time.perf_counter() - start) - return mean(scores) > 0 - - -nltk_runner = t.cast( - "RunnerImpl", bentoml.Runner(NLTKSentimentAnalysisRunnable, name="nltk_sentiment") -) - -svc = bentoml.Service("sentiment_analyzer", runners=[nltk_runner]) - - -@svc.api(input=Text(), output=JSON()) -async def analysis(input_text: str) -> dict[str, bool]: - is_positive = await nltk_runner.is_positive.async_run(input_text) - polarity_counter.labels(polarity=is_positive).inc() - return {"is_positive": is_positive} diff --git a/examples/custom_runner/nltk_pretrained_model/utils.py b/examples/custom_runner/nltk_pretrained_model/utils.py deleted file mode 100644 index 63e6e066535..00000000000 --- a/examples/custom_runner/nltk_pretrained_model/utils.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -INF = float("inf") - -MAX_BUCKET_COUNT = 100 - - -def exponential_buckets(start: float, factor: float, end: float) -> tuple[float, ...]: - """ - Creates buckets of a Prometheus histogram where the lowest bucket has an upper - bound of start and the upper bound of each following bucket is factor times the - previous buckets upper bound. The return tuple include the end as the second - last value and positive infinity as the last value. - """ - - assert start > 0.0 - assert start < end - assert factor > 1.0 - - bound = start - buckets: list[float] = [] - while bound < end: - buckets.append(bound) - bound *= factor - - if len(buckets) > MAX_BUCKET_COUNT: - buckets = buckets[:MAX_BUCKET_COUNT] - - return tuple(buckets) + (end, INF) diff --git a/examples/custom_runner/torch_hub_yolov5/.gitignore b/examples/custom_runner/torch_hub_yolov5/.gitignore deleted file mode 100644 index 4b6ebe5ff71..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.pt diff --git a/examples/custom_runner/torch_hub_yolov5/README.md b/examples/custom_runner/torch_hub_yolov5/README.md deleted file mode 100644 index cf62e877baf..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Serving YOLOv5 model with BentoML - -This project demonstrate how to use pretrained YOLOv5 model from Torch hub, and use -it to build a prediction service in BentoML. - -The model used in this example is built upon https://github.com/ultralytics/yolov5 - -## Before you started - -Install required dependencies: - -```bash -pip install -r ./requirements.txt -``` - -Download the model file via `torch.hub.load`: - -```python -import torch -torch.hub.load('ultralytics/yolov5', 'yolov5s') -``` - -Now you should have a `yolov5s.pt` file created in current directory. - -## Run the service - -Launch the service locally: - -```bash -bentoml serve service.py:svc -``` - - -## Test the endpoint - -Visit http://127.0.0.1:3000 to submit input images via the web UI. - -The sample service provides two different endpoints: -* `/invocation` - takes an image input and returns predictions in a tabular data format -* `/render` - takes an image input and returns the input image with boxes and labels rendered on top - - -To test the `/invocation` endpoint: - -```bash -curl -X 'POST' \ - 'http://localhost:3000/invocation' \ - -H 'accept: image/jpeg' \ - -H 'Content-Type: image/jpeg' \ - --data-binary '@data/bus.jpg' -``` - -Sample result: -``` -[{"xmin":51.4846191406,"ymin":399.7782592773,"xmax":225.7452697754,"ymax":894.1701049805,"confidence":0.8960712552,"class":0,"name":"person"},{"xmin":25.1442546844,"ymin":230.5268707275,"xmax":803.268371582,"ymax":767.0746459961,"confidence":0.8453037143,"class":5,"name":"bus"},{"xmin":219.5371704102,"ymin":398.213684082,"xmax":350.1277770996,"ymax":861.6119384766,"confidence":0.7823933363,"class":0,"name":"person"},{"xmin":671.8472290039,"ymin":432.5200195312,"xmax":810.0,"ymax":877.744934082,"confidence":0.6512392759,"class":0,"name":"person"}]% -``` - - -Test the `/render` endpoint to receive an image with boxes and labels: -```bash -curl -X 'POST' \ - 'http://localhost:3000/render' \ - -H 'accept: image/jpeg' \ - -H 'Content-Type: image/jpeg' \ - --data-binary '@data/bus.jpg' \ - --output './output.jpeg' -``` - -Sample result: - -![output-4](https://user-images.githubusercontent.com/489344/178635310-99dc7fde-5224-4fab-84cf-1a87277a0450.jpeg) - - - -## Build Bento - -The `bentofile.yaml` have configured all required system packages and python dependencies. - -```bash -bentoml build -``` - -Once the Bento is built, containerize it as a Docker image for deployment: - -```bash -bentoml containerize yolo_v5_demo:latest -``` diff --git a/examples/custom_runner/torch_hub_yolov5/bentofile.yaml b/examples/custom_runner/torch_hub_yolov5/bentofile.yaml deleted file mode 100644 index 2707307c1b9..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/bentofile.yaml +++ /dev/null @@ -1,11 +0,0 @@ -service: "service.py:svc" -include: - - "service.py" - - "yolov5s.pt" -python: - requirements_txt: "./requirements.txt" -docker: - system_packages: - - ffmpeg - - libsm6 - - libxext6 diff --git a/examples/custom_runner/torch_hub_yolov5/data/bus.jpg b/examples/custom_runner/torch_hub_yolov5/data/bus.jpg deleted file mode 100644 index b43e311165c..00000000000 Binary files a/examples/custom_runner/torch_hub_yolov5/data/bus.jpg and /dev/null differ diff --git a/examples/custom_runner/torch_hub_yolov5/data/zidane.jpg b/examples/custom_runner/torch_hub_yolov5/data/zidane.jpg deleted file mode 100644 index 92d72ea1247..00000000000 Binary files a/examples/custom_runner/torch_hub_yolov5/data/zidane.jpg and /dev/null differ diff --git a/examples/custom_runner/torch_hub_yolov5/download_model.py b/examples/custom_runner/torch_hub_yolov5/download_model.py deleted file mode 100755 index 94ceb95350f..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/download_model.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python - -import torch - -torch.hub.load("ultralytics/yolov5", "yolov5s") diff --git a/examples/custom_runner/torch_hub_yolov5/requirements.txt b/examples/custom_runner/torch_hub_yolov5/requirements.txt deleted file mode 100644 index ab870bce024..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/requirements.txt +++ /dev/null @@ -1,16 +0,0 @@ -Pillow>=7.1.2 -PyYAML>=5.3.1 -bentoml>=1.0.0 -matplotlib>=3.2.2 -numpy>=1.18.5 -opencv-python>=4.1.1 -pandas>=1.1.4 -protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012 -ipython -requests>=2.23.0 -scipy>=1.4.1 # Google Colab version -seaborn>=0.11.0 -tensorboard>=2.4.1 -torch>=1.7.0,!=1.12.0 # https://github.com/ultralytics/yolov5/issues/8395 -torchvision>=0.8.1,!=0.13.0 # https://github.com/ultralytics/yolov5/issues/8395 -tqdm>=4.41.0 diff --git a/examples/custom_runner/torch_hub_yolov5/service.py b/examples/custom_runner/torch_hub_yolov5/service.py deleted file mode 100644 index 174a6e863fc..00000000000 --- a/examples/custom_runner/torch_hub_yolov5/service.py +++ /dev/null @@ -1,58 +0,0 @@ -import bentoml -from bentoml.io import Image -from bentoml.io import PandasDataFrame - - -class Yolov5Runnable(bentoml.Runnable): - SUPPORTED_RESOURCES = ("nvidia.com/gpu", "cpu") - SUPPORTS_CPU_MULTI_THREADING = True - - def __init__(self): - import torch - - self.model = torch.hub.load("ultralytics/yolov5:v6.2", "yolov5s") - - if torch.cuda.is_available(): - self.model.cuda() - else: - self.model.cpu() - - # Config inference settings - self.inference_size = 320 - - # Optional configs - # self.model.conf = 0.25 # NMS confidence threshold - # self.model.iou = 0.45 # NMS IoU threshold - # self.model.agnostic = False # NMS class-agnostic - # self.model.multi_label = False # NMS multiple labels per box - # self.model.classes = None # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs - # self.model.max_det = 1000 # maximum number of detections per image - # self.model.amp = False # Automatic Mixed Precision (AMP) inference - - @bentoml.Runnable.method(batchable=True, batch_dim=0) - def inference(self, input_imgs): - # Return predictions only - results = self.model(input_imgs, size=self.inference_size) - return results.pandas().xyxy - - @bentoml.Runnable.method(batchable=True, batch_dim=0) - def render(self, input_imgs): - # Return images with boxes and labels - return self.model(input_imgs, size=self.inference_size).render() - - -yolo_v5_runner = bentoml.Runner(Yolov5Runnable, max_batch_size=30) - -svc = bentoml.Service("yolo_v5_demo", runners=[yolo_v5_runner]) - - -@svc.api(input=Image(), output=PandasDataFrame()) -async def invocation(input_img): - batch_ret = await yolo_v5_runner.inference.async_run([input_img]) - return batch_ret[0] - - -@svc.api(input=Image(), output=Image()) -async def render(input_img): - batch_ret = await yolo_v5_runner.render.async_run([input_img]) - return batch_ret[0] diff --git a/examples/custom_web_serving/fastapi_example/README.md b/examples/custom_web_serving/fastapi_example/README.md deleted file mode 100644 index fe044d6aaab..00000000000 --- a/examples/custom_web_serving/fastapi_example/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# BentoML 🤝 FastAPI Demo Project - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train an Iris classifier model, similiar to the quickstart guide: - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -Test the `/predict_bentoml` endpoint: - -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 7.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width": 2.2}' http://127.0.0.1:3000/predict_bentoml - -[2]% -``` - -Now for FastAPI integration endpoints: - -Test the `/predict_fastapi` endpoint: - -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 6.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width": 2.2}' http://127.0.0.1:3000/predict_fastapi - -{"prediction":2}% -``` - -Test the `/predict_fastapi_async` endpoint: - -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 6.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width": 2.2}' http://127.0.0.1:3000/predict_fastapi - -{"prediction":2}% -``` - -Test the custom `/metadata` endpoint - -```bash -$ curl http://127.0.0.1:3000/metadata - -{"name":"iris_clf_with_feature_names","version":"kgjn3haltwvixuqj"}% -``` - - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize iris_fastapi_demo:latest -``` diff --git a/examples/custom_web_serving/fastapi_example/bentofile.yaml b/examples/custom_web_serving/fastapi_example/bentofile.yaml deleted file mode 100644 index 781668e8a6d..00000000000 --- a/examples/custom_web_serving/fastapi_example/bentofile.yaml +++ /dev/null @@ -1,9 +0,0 @@ -service: "service.py:svc" -include: -- "service.py" -python: - packages: - - scikit-learn - - pandas - - fastapi - - pydantic diff --git a/examples/custom_web_serving/fastapi_example/requirements.txt b/examples/custom_web_serving/fastapi_example/requirements.txt deleted file mode 100644 index dff3629010a..00000000000 --- a/examples/custom_web_serving/fastapi_example/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -scikit-learn -fastapi -pydantic -pandas -bentoml>=1.0.0 diff --git a/examples/custom_web_serving/fastapi_example/service.py b/examples/custom_web_serving/fastapi_example/service.py deleted file mode 100644 index 0c106df093c..00000000000 --- a/examples/custom_web_serving/fastapi_example/service.py +++ /dev/null @@ -1,52 +0,0 @@ -import numpy as np -import pandas as pd -from fastapi import FastAPI -from pydantic import BaseModel - -import bentoml -from bentoml.io import JSON -from bentoml.io import NumpyNdarray - - -class IrisFeatures(BaseModel): - sepal_len: float - sepal_width: float - petal_len: float - petal_width: float - - -bento_model = bentoml.sklearn.get("iris_clf_with_feature_names:latest") -iris_clf_runner = bento_model.to_runner() - -svc = bentoml.Service("iris_fastapi_demo", runners=[iris_clf_runner]) - - -@svc.api(input=JSON(pydantic_model=IrisFeatures), output=NumpyNdarray()) -async def predict_bentoml(input_data: IrisFeatures) -> np.ndarray: - input_df = pd.DataFrame([input_data.dict()]) - return await iris_clf_runner.predict.async_run(input_df) - - -fastapi_app = FastAPI() -svc.mount_asgi_app(fastapi_app) - - -@fastapi_app.get("/metadata") -def metadata(): - return {"name": bento_model.tag.name, "version": bento_model.tag.version} - - -# For demo purpose, here's an identical inference endpoint implemented via FastAPI -@fastapi_app.post("/predict_fastapi") -def predict(features: IrisFeatures): - input_df = pd.DataFrame([features.dict()]) - results = iris_clf_runner.predict.run(input_df) - return {"prediction": results.tolist()[0]} - - -# For demo purpose, here's an identical inference endpoint implemented via FastAPI -@fastapi_app.post("/predict_fastapi_async") -async def predict_async(features: IrisFeatures): - input_df = pd.DataFrame([features.dict()]) - results = await iris_clf_runner.predict.async_run(input_df) - return {"prediction": results.tolist()[0]} diff --git a/examples/custom_web_serving/fastapi_example/train.py b/examples/custom_web_serving/fastapi_example/train.py deleted file mode 100644 index 5af911d0b70..00000000000 --- a/examples/custom_web_serving/fastapi_example/train.py +++ /dev/null @@ -1,25 +0,0 @@ -import logging - -import pandas as pd -from sklearn import datasets -from sklearn import svm - -import bentoml - -logging.basicConfig(level=logging.WARN) - -if __name__ == "__main__": - # Load training data - iris = datasets.load_iris() - X = pd.DataFrame( - data=iris.data, columns=["sepal_len", "sepal_width", "petal_len", "petal_width"] - ) - y = iris.target - - # Model Training - clf = svm.SVC() - clf.fit(X, y) - - # Save model to BentoML local model store - saved_model = bentoml.sklearn.save_model("iris_clf_with_feature_names", clf) - print(f"Model saved: {saved_model}") diff --git a/examples/custom_web_serving/flask_example/README.md b/examples/custom_web_serving/flask_example/README.md deleted file mode 100644 index dd50118d1ec..00000000000 --- a/examples/custom_web_serving/flask_example/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# BentoML 🤝 Flask Demo Project - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train an Iris classifier model, similiar to the quickstart guide: - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -Test the `/predict_bentoml` endpoint: - -```bash -$ curl -X POST -H "content-type: application/json" --data "[[5.9, 3, 5.1, 1.8]]" http://127.0.0.1:3000/predict_bentoml - -[2]% -``` - -Now for Flask integration endpoints: - -Test the custom `/metadata` endpoint: - -```bash -$ curl http://127.0.0.1:3000/metadata - -{"name":"iris_clf","version":"3vl5n7qkcwqe5uqj"} -``` - -Test the custom `/predict_flask` endpoint: - -```bash -$ curl -X POST -H "content-type: application/json" --data "[[5.9, 3, 5.1, 1.8]]" http://127.0.0.1:3000/predict_flask - -[2] -``` - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize iris_flask_demo:latest -``` diff --git a/examples/custom_web_serving/flask_example/bentofile.yaml b/examples/custom_web_serving/flask_example/bentofile.yaml deleted file mode 100644 index 5c22af9cdb5..00000000000 --- a/examples/custom_web_serving/flask_example/bentofile.yaml +++ /dev/null @@ -1,8 +0,0 @@ -service: "service.py:svc" -include: -- "service.py" -python: - packages: - - scikit-learn - - pandas - - flask diff --git a/examples/custom_web_serving/flask_example/requirements.txt b/examples/custom_web_serving/flask_example/requirements.txt deleted file mode 100644 index dff3629010a..00000000000 --- a/examples/custom_web_serving/flask_example/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -scikit-learn -fastapi -pydantic -pandas -bentoml>=1.0.0 diff --git a/examples/custom_web_serving/flask_example/service.py b/examples/custom_web_serving/flask_example/service.py deleted file mode 100644 index 04e3ee39288..00000000000 --- a/examples/custom_web_serving/flask_example/service.py +++ /dev/null @@ -1,37 +0,0 @@ -import numpy as np -from flask import Flask -from flask import jsonify -from flask import request - -import bentoml -from bentoml.io import NumpyNdarray - -bento_model = bentoml.sklearn.get("iris_clf:latest") -iris_clf_runner = bento_model.to_runner() - -svc = bentoml.Service("iris_flask_demo", runners=[iris_clf_runner]) - - -@svc.api(input=NumpyNdarray(), output=NumpyNdarray()) -async def predict_bentoml(input_series: np.ndarray) -> np.ndarray: - return await iris_clf_runner.predict.async_run(input_series) - - -flask_app = Flask(__name__) -svc.mount_wsgi_app(flask_app) - - -@flask_app.route("/metadata") -def metadata(): - return {"name": bento_model.tag.name, "version": bento_model.tag.version} - - -# For demo purpose, here's an identical inference endpoint implemented via Flask -@flask_app.route("/predict_flask", methods=["POST"]) -def predict(): - content_type = request.headers.get("Content-Type") - if content_type == "application/json": - input_arr = np.array(request.json, dtype=float) - return jsonify(iris_clf_runner.predict.run(input_arr).tolist()) - else: - return "Content-Type not supported!" diff --git a/examples/custom_web_serving/flask_example/train.py b/examples/custom_web_serving/flask_example/train.py deleted file mode 100644 index 122186740f4..00000000000 --- a/examples/custom_web_serving/flask_example/train.py +++ /dev/null @@ -1,21 +0,0 @@ -import logging - -from sklearn import datasets -from sklearn import svm - -import bentoml - -logging.basicConfig(level=logging.WARN) - -if __name__ == "__main__": - # Load training data - iris = datasets.load_iris() - X, y = iris.data, iris.target - - # Model Training - clf = svm.SVC() - clf.fit(X, y) - - # Save model to BentoML local model store - saved_model = bentoml.sklearn.save_model("iris_clf", clf) - print(f"Model saved: {saved_model}") diff --git a/examples/flax/MNIST/.gitignore b/examples/flax/MNIST/.gitignore deleted file mode 100644 index e6d016a24d7..00000000000 --- a/examples/flax/MNIST/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -events.out* -*.msgpack diff --git a/examples/flax/MNIST/BUILD b/examples/flax/MNIST/BUILD deleted file mode 100644 index 5164c8d8b71..00000000000 --- a/examples/flax/MNIST/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -load("@bazel_skylib//rules:write_file.bzl", "write_file") - -write_file( - name = "_train_sh", - out = "_train.sh", - content = [ - "#!/usr/bin/env bash\n", - "cd $BUILD_WORKING_DIRECTORY\n", - "python -m pip install -r requirements.txt\n", - "python train.py $@", - ], -) - -sh_binary( - name = "train", - srcs = ["_train.sh"], - data = ["train.py"], -) diff --git a/examples/flax/MNIST/README.md b/examples/flax/MNIST/README.md deleted file mode 100644 index 70036db0eb2..00000000000 --- a/examples/flax/MNIST/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# MNIST classifier - -This project demonstrates a simple CNN for MNIST classifier served with BentoML. - -### Instruction - -Run training scripts: - -```bash -# run with python3 -pip install -r requirements.txt -python3 train.py --num-epochs 2 - -# run with bazel -bazel run :train -- --num-epochs 2 -``` - -Serve with either gRPC or HTTP: - -```bash -bentoml serve-grpc --enable-reflection -``` - -Run the test suite: - -```bash -pytest tests -``` - -To run containerize do: - -```bash -bentoml containerize mnist_flax --opt platform=linux/amd64 -``` diff --git a/examples/flax/MNIST/bentofile.yaml b/examples/flax/MNIST/bentofile.yaml deleted file mode 100644 index 87c2bc8b2b1..00000000000 --- a/examples/flax/MNIST/bentofile.yaml +++ /dev/null @@ -1,12 +0,0 @@ -service: "service.py:svc" -labels: - owner: bentoml-team - project: mnist-flax - experiemental: true -include: - - "*.py" -python: - lock_packages: false - extra_index_url: - - https://storage.googleapis.com/jax-releases/jax_releases.html - requirements_txt: ./requirements.txt diff --git a/examples/flax/MNIST/requirements-gpu.txt b/examples/flax/MNIST/requirements-gpu.txt deleted file mode 100644 index ef84171052f..00000000000 --- a/examples/flax/MNIST/requirements-gpu.txt +++ /dev/null @@ -1,10 +0,0 @@ --f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html -jax[cuda]==0.4.4 -flax>=0.6.1 -optax>=0.1.3 -bentoml[grpc,grpc-reflection] -tensorflow -tensorflow-datasets -Pillow -pytest -pytest-asyncio diff --git a/examples/flax/MNIST/requirements.txt b/examples/flax/MNIST/requirements.txt deleted file mode 100644 index c58a04b0ab3..00000000000 --- a/examples/flax/MNIST/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -jax[cpu]==0.4.4 -flax>=0.6.1 -optax>=0.1.3 -bentoml[grpc,grpc-reflection] -tensorflow;platform_system!="Darwin" -tensorflow-macos;platform_system=="Darwin" -tensorflow-datasets -Pillow -pytest -pytest-asyncio diff --git a/examples/flax/MNIST/samples/0.png b/examples/flax/MNIST/samples/0.png deleted file mode 100644 index 7a93ea81868..00000000000 Binary files a/examples/flax/MNIST/samples/0.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/1.png b/examples/flax/MNIST/samples/1.png deleted file mode 100644 index 4629a3b1694..00000000000 Binary files a/examples/flax/MNIST/samples/1.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/2.png b/examples/flax/MNIST/samples/2.png deleted file mode 100644 index e56adf47bdd..00000000000 Binary files a/examples/flax/MNIST/samples/2.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/3.png b/examples/flax/MNIST/samples/3.png deleted file mode 100644 index d441e3d6dd0..00000000000 Binary files a/examples/flax/MNIST/samples/3.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/4.png b/examples/flax/MNIST/samples/4.png deleted file mode 100644 index 67a209ff513..00000000000 Binary files a/examples/flax/MNIST/samples/4.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/5.png b/examples/flax/MNIST/samples/5.png deleted file mode 100644 index 4defc334c95..00000000000 Binary files a/examples/flax/MNIST/samples/5.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/6.png b/examples/flax/MNIST/samples/6.png deleted file mode 100644 index 48106fa72a7..00000000000 Binary files a/examples/flax/MNIST/samples/6.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/7.png b/examples/flax/MNIST/samples/7.png deleted file mode 100644 index 4715175eac2..00000000000 Binary files a/examples/flax/MNIST/samples/7.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/8.png b/examples/flax/MNIST/samples/8.png deleted file mode 100644 index f5e6652c8c1..00000000000 Binary files a/examples/flax/MNIST/samples/8.png and /dev/null differ diff --git a/examples/flax/MNIST/samples/9.png b/examples/flax/MNIST/samples/9.png deleted file mode 100644 index 1ad484752cf..00000000000 Binary files a/examples/flax/MNIST/samples/9.png and /dev/null differ diff --git a/examples/flax/MNIST/service.py b/examples/flax/MNIST/service.py deleted file mode 100644 index 669924bbe8f..00000000000 --- a/examples/flax/MNIST/service.py +++ /dev/null @@ -1,24 +0,0 @@ -from __future__ import annotations - -import typing as t -from typing import TYPE_CHECKING - -import jax.numpy as jnp -from PIL.Image import Image as PILImage - -import bentoml - -if TYPE_CHECKING: - from numpy.typing import NDArray - -mnist_runner = bentoml.flax.get("mnist_flax").to_runner() - -svc = bentoml.Service(name="mnist_flax", runners=[mnist_runner]) - - -@svc.api(input=bentoml.io.Image(), output=bentoml.io.NumpyNdarray()) -async def predict(f: PILImage) -> NDArray[t.Any]: - arr = jnp.array(f) / 255.0 - arr = jnp.expand_dims(arr, (0, 3)) - res = await mnist_runner.async_run(arr) - return res.argmax() diff --git a/examples/flax/MNIST/tests/conftest.py b/examples/flax/MNIST/tests/conftest.py deleted file mode 100644 index 4123305a82e..00000000000 --- a/examples/flax/MNIST/tests/conftest.py +++ /dev/null @@ -1,91 +0,0 @@ -from __future__ import annotations - -import contextlib -import os -import subprocess -import sys -import typing as t -from typing import TYPE_CHECKING - -import psutil -import pytest - -import bentoml -from bentoml._internal.configuration.containers import BentoMLContainer -from bentoml.testing.server import host_bento - -if TYPE_CHECKING: - from contextlib import ExitStack - - from _pytest.config import Config - from _pytest.fixtures import FixtureRequest as _PytestFixtureRequest - from _pytest.main import Session - from _pytest.nodes import Item - - class FixtureRequest(_PytestFixtureRequest): - param: str - - -PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -def pytest_collection_modifyitems( - session: Session, config: Config, items: list[Item] -) -> None: - try: - m = bentoml.models.get("mnist_flax") - print(f"Model exists: {m}") - except bentoml.exceptions.NotFound: - subprocess.check_call( - [ - sys.executable, - f"{os.path.join(PROJECT_DIR, 'train.py')}", - "--num-epochs", - "2", # 2 epochs for faster testing - "--lr", - "0.22", # speed up training time - "--enable-tensorboard", - ] - ) - - -@pytest.fixture(name="enable_grpc", params=[True, False], scope="session") -def fixture_enable_grpc(request: FixtureRequest) -> str: - return request.param - - -@pytest.fixture(scope="session", autouse=True) -def clean_context() -> t.Generator[contextlib.ExitStack, None, None]: - stack = contextlib.ExitStack() - yield stack - stack.close() - - -@pytest.fixture( - name="deployment_mode", - params=["container", "distributed", "standalone"], - scope="session", -) -def fixture_deployment_mode(request: FixtureRequest) -> str: - return request.param - - -@pytest.mark.usefixtures("change_test_dir") -@pytest.fixture(scope="module") -def host( - deployment_mode: t.Literal["container", "distributed", "standalone"], - clean_context: ExitStack, - enable_grpc: bool, -) -> t.Generator[str, None, None]: - if enable_grpc and psutil.WINDOWS: - pytest.skip("gRPC is not supported on Windows.") - - with host_bento( - "service:svc", - deployment_mode=deployment_mode, - project_path=PROJECT_DIR, - bentoml_home=BentoMLContainer.bentoml_home.get(), - clean_context=clean_context, - use_grpc=enable_grpc, - ) as _host: - yield _host diff --git a/examples/flax/MNIST/tests/test_endpoints.py b/examples/flax/MNIST/tests/test_endpoints.py deleted file mode 100644 index 9e9a8e42dc8..00000000000 --- a/examples/flax/MNIST/tests/test_endpoints.py +++ /dev/null @@ -1,71 +0,0 @@ -from __future__ import annotations - -import io -import typing as t - -import numpy as np -import pytest - -import bentoml -from bentoml.testing.grpc import async_client_call -from bentoml.testing.grpc import create_channel - -if t.TYPE_CHECKING: - import jax.numpy as jnp - - -@pytest.fixture() -def img(): - import PIL.Image - - images = {} - digits = list(range(10)) - for digit in digits: - img_path = f"samples/{digit}.png" - with open(img_path, "rb") as f: - img_bytes = f.read() - im = PIL.Image.open(io.BytesIO(img_bytes)) - arr = np.array(im) - images[digit] = { - "bytes": img_bytes, - "pil": im, - "array": arr, - } - - return images - - -@pytest.fixture(name="client") -@pytest.mark.asyncio -def fixture_client(host: str, enable_grpc: bool): - if not enable_grpc: - return bentoml.client.Client.from_url(host) - - -@pytest.mark.asyncio -async def test_image_grpc( - host: str, img: dict[int, dict[str, bytes | jnp.ndarray]], enable_grpc: bool -): - if not enable_grpc: - pytest.skip("Skipping gRPC test when testing on HTTP.") - async with create_channel(host) as channel: - for digit, d in img.items(): - img_bytes = d["bytes"] - await async_client_call( - "predict", - channel=channel, - data={"serialized_bytes": img_bytes}, - assert_data=lambda resp: resp.ndarray.int32_values == [digit], - ) - - -@pytest.mark.asyncio -async def test_image_http( - client: bentoml.client.Client, - img: dict[int, dict[str, bytes | jnp.ndarray]], - enable_grpc: bool, -): - if enable_grpc: - pytest.skip("Skipping HTTP test when testing on gRPC.") - for digit, d in img.items(): - assert await client.async_predict(d["pil"]).item() == digit diff --git a/examples/flax/MNIST/train.py b/examples/flax/MNIST/train.py deleted file mode 100644 index 67e7314b8c1..00000000000 --- a/examples/flax/MNIST/train.py +++ /dev/null @@ -1,243 +0,0 @@ -# modified from https://github.com/google/flax/blob/main/examples/mnist/README.md -from __future__ import annotations - -import argparse -import os -import typing as t -from typing import TYPE_CHECKING - -import attrs -import cattrs -import jax -import jax.numpy as jnp -import numpy as np -import optax -import tensorflow_datasets as tfds -from flax import linen as nn -from flax import serialization -from flax.metrics import tensorboard -from flax.training import train_state - -import bentoml -from bentoml._internal.utils.pkg import pkg_version_info - -if TYPE_CHECKING: - import tensorflow as tf - from flax import core - from jax._src.random import KeyArray - from tensorflow_datasets.core.utils.type_utils import Tree - - from bentoml._internal import external_typing as ext - - NumpyElem = ext.NpNDArray | tf.RaggedTensor - - -@attrs.define -class ConfigDict: - learning_rate: float = 0.1 - batch_size: int = 128 - num_epochs: int = 10 - momentum: float = 0.9 - enable_tensorboard: bool = True - hermetic: bool = True - - def to_dict(self) -> dict[str, t.Any]: - return cattrs.unstructure(self) - - def with_options(self, **kwargs: float | int | bool) -> ConfigDict: - return attrs.evolve(self, **kwargs) - - -_DefaultConfig = ConfigDict() - - -class CNN(nn.Module): - @nn.compact - def __call__(self, x: jnp.ndarray) -> jnp.ndarray: # pylint: disable=W0221 - x = nn.Conv(features=32, kernel_size=(3, 3))(x) - x = nn.relu(x) - x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2)) - x = nn.Conv(features=64, kernel_size=(3, 3))(x) - x = nn.relu(x) - x = nn.avg_pool(x, window_shape=(2, 2), strides=(2, 2)) - x = x.reshape((x.shape[0], -1)) - x = nn.Dense(features=256)(x) - x = nn.relu(x) - x = nn.Dense(features=10)(x) - return x - - -@jax.jit -def apply_model( - state: train_state.TrainState, image: jnp.DeviceArray, labels: jnp.DeviceArray -) -> tuple[t.Callable[..., core.FrozenDict[str, t.Any]], jnp.ndarray, jnp.ndarray]: - """Compute gradients, loss, and accuracy for a single batch.""" - - def loss_fn(params: core.FrozenDict[str, t.Any]) -> tuple[jnp.ndarray, jnp.ndarray]: - logits: jnp.ndarray = state.apply_fn({"params": params}, image) - one_hot = jax.nn.one_hot(labels, 10) # 0 to 9 - loss: jnp.ndarray = jnp.mean( - optax.softmax_cross_entropy(logits=logits, labels=one_hot) - ) - return loss, logits - - grad = jax.value_and_grad(loss_fn, has_aux=True) - (loss, logits), grad = grad(state.params) - accuracy: jnp.ndarray = jnp.mean(jnp.argmax(logits, -1) == labels) - return grad, loss, accuracy - - -@jax.jit -def update_model(state: train_state.TrainState, grads: core.FrozenDict[str, t.Any]): - return state.apply_gradients(grads=grads) - - -def train_epoch( - state: train_state.TrainState, - train_ds: Tree[NumpyElem], - batch_size: int, - rng: KeyArray, -): - """Train for a single epoch.""" - train_ds_size = len(train_ds["image"]) - steps_per_epoch = train_ds_size // batch_size - - perms = jax.random.permutation(rng, len(train_ds["image"])) - perms = perms[: steps_per_epoch * batch_size] # skip incomplete batch - perms = perms.reshape((steps_per_epoch, batch_size)) - - epoch_loss = [] - epoch_accuracy = [] - - for perm in perms: - batch_images = train_ds["image"][perm, ...] - batch_labels = train_ds["label"][perm, ...] - grads, loss, accuracy = apply_model(state, batch_images, batch_labels) - state = update_model(state, grads) - epoch_loss.append(loss) - epoch_accuracy.append(accuracy) - train_loss = np.mean(epoch_loss) - train_accuracy = np.mean(epoch_accuracy) - return state, train_loss, train_accuracy - - -def get_datasets() -> tuple[Tree[NumpyElem], Tree[NumpyElem]]: - """Load MNIST train and test datasets into memory.""" - ds_builder = tfds.builder("mnist") - ds_builder.download_and_prepare() - train_ds = tfds.as_numpy(ds_builder.as_dataset(split="train", batch_size=-1)) - test_ds = tfds.as_numpy(ds_builder.as_dataset(split="test", batch_size=-1)) - train_ds["image"] = jnp.float32(train_ds["image"]) / 255.0 - test_ds["image"] = jnp.float32(test_ds["image"]) / 255.0 - return train_ds, test_ds - - -def create_train_state(rng: KeyArray, config: ConfigDict) -> train_state.TrainState: - """Creates initial `TrainState`.""" - cnn = CNN() - params = cnn.init(rng, jnp.ones([1, 28, 28, 1]))["params"] - tx = optax.sgd(config.learning_rate, config.momentum) - return train_state.TrainState.create(apply_fn=cnn.apply, params=params, tx=tx) - - -def train_and_evaluate( - config: ConfigDict = _DefaultConfig, workdir: str = "." -) -> train_state.TrainState: - """Execute model training and evaluation loop. - Args: - config: Hyperparameter configuration for training and evaluation. - workdir: Directory where the tensorboard summaries are written to. - Returns: - The train state (which includes the `.params`). - """ - train_ds, test_ds = get_datasets() - rng = jax.random.PRNGKey(0) - summary_writer: tensorboard.SummaryWriter | None = None - - if config.enable_tensorboard: - summary_writer = tensorboard.SummaryWriter(workdir) - summary_writer.hparams(config.to_dict()) - - rng, init_rng = jax.random.split(rng) - state = create_train_state(init_rng, config) - - for epoch in range(1, config.num_epochs + 1): - if not config.hermetic: - rng, input_rng = jax.random.split(rng) - state, train_loss, train_accuracy = train_epoch( - state, train_ds, config.batch_size, input_rng - ) - _, test_loss, test_accuracy = apply_model( - state, test_ds["image"], test_ds["label"] - ) - - print( - "epoch:% 3d, train_loss: %.4f, train_accuracy: %.2f, test_loss: %.4f, test_accuracy: %.2f" - % (epoch, train_loss, train_accuracy * 100, test_loss, test_accuracy * 100) - ) - - if config.enable_tensorboard: - assert summary_writer is not None - summary_writer.scalar("train_loss", train_loss, epoch) - summary_writer.scalar("train_accuracy", train_accuracy, epoch) - summary_writer.scalar("test_loss", test_loss, epoch) - summary_writer.scalar("test_accuracy", test_accuracy, epoch) - - if config.enable_tensorboard: - assert summary_writer is not None - summary_writer.flush() - - return state - - -def load_and_predict(path: str, idx: int = 0): - """ - Load the saved msgpack model and make predictions. - We will run prediction on test MNIST dataset - """ - if not os.path.exists(path): - raise FileNotFoundError(f"File not found at {path}") - with open(path, "rb") as f: - state_dict = serialization.from_bytes(CNN, f.read()) - cnn = CNN() - _, test_ds = get_datasets() - # ensure that all arrays are restored as jnp.ndarray - # NOTE: This is to prevent a bug this will be fixed in Flax >= v0.3.4: - # https://github.com/google/flax/issues/1261 - if pkg_version_info("flax") < (0, 3, 4): - state_dict = jax.tree_util.tree_map(jnp.ndarray, state_dict) - # jit it ! - logits = jax.jit(lambda x: cnn.apply({"params": state_dict["params"]}, x))( - test_ds["image"] - ) - return logits[idx].argmax() - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("--lr", type=float, default=0.1) - parser.add_argument("--momentum", type=float, default=0.94) - parser.add_argument("--batch-size", type=int, default=64) - parser.add_argument("--num-epochs", type=int, default=10) - parser.add_argument("--enable-tensorboard", action="store_true") - parser.add_argument( - "--hermetic", - action="store_true", - default=False, - help="Whether to use random key", - ) - args = parser.parse_args() - - training_state = train_and_evaluate( - config=_DefaultConfig.with_options( - learning_rate=args.lr, - momentum=args.momentum, - batch_size=args.batch_size, - num_epochs=args.num_epochs, - enable_tensorboard=args.enable_tensorboard, - hermetic=args.hermetic, - ), - ) - - model = bentoml.flax.save_model("mnist_flax", CNN(), training_state) - print(f"Saved model: {model}") diff --git a/examples/fraud_detection/IEEE-CIS-Fraud-Detection.ipynb b/examples/fraud_detection/IEEE-CIS-Fraud-Detection.ipynb deleted file mode 100644 index fb900242a76..00000000000 --- a/examples/fraud_detection/IEEE-CIS-Fraud-Detection.ipynb +++ /dev/null @@ -1,420 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "34ea4354", - "metadata": {}, - "source": [ - "# BentoML Demo - IEEE-CIS Fraud Detection" - ] - }, - { - "cell_type": "markdown", - "id": "b73a62eb", - "metadata": {}, - "source": [ - "Accept dataset rules on Kaggle before downloading: https://www.kaggle.com/competitions/ieee-fraud-detection/data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f82d57c9", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:50:58.429263Z", - "iopub.status.busy": "2023-03-09T06:50:58.428906Z", - "iopub.status.idle": "2023-03-09T06:50:58.442175Z", - "shell.execute_reply": "2023-03-09T06:50:58.441777Z" - } - }, - "outputs": [], - "source": [ - "# Set Kaggle Credentials for downloading dataset\n", - "%env KAGGLE_USERNAME=\n", - "%env KAGGLE_KEY=" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "945f2734", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:50:58.444818Z", - "iopub.status.busy": "2023-03-09T06:50:58.444485Z", - "iopub.status.idle": "2023-03-09T06:50:58.986259Z", - "shell.execute_reply": "2023-03-09T06:50:58.985255Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ieee-fraud-detection.zip: Skipping, found more recently modified local copy (use --force to force download)\n", - "Archive: ieee-fraud-detection.zip\n", - " inflating: ./data/sample_submission.csv \n", - " inflating: ./data/test_identity.csv \n", - " inflating: ./data/test_transaction.csv \n", - " inflating: ./data/train_identity.csv \n", - " inflating: ./data/train_transaction.csv \n" - ] - } - ], - "source": [ - "!kaggle competitions download -c ieee-fraud-detection\n", - "!rm -rf ./data/\n", - "!unzip -d ./data/ ieee-fraud-detection.zip && rm ieee-fraud-detection.zip" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c49fd861", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:50:58.998981Z", - "iopub.status.busy": "2023-03-09T06:50:58.995168Z", - "iopub.status.idle": "2023-03-09T06:51:07.380130Z", - "shell.execute_reply": "2023-03-09T06:51:07.379697Z" - } - }, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "df_transactions = pd.read_csv(\"./data/train_transaction.csv\")\n", - "\n", - "X = df_transactions.drop(columns=[\"isFraud\"])\n", - "y = df_transactions.isFraud" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "75e1312a", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:51:07.383150Z", - "iopub.status.busy": "2023-03-09T06:51:07.382994Z", - "iopub.status.idle": "2023-03-09T06:51:08.059790Z", - "shell.execute_reply": "2023-03-09T06:51:08.058540Z" - } - }, - "outputs": [], - "source": [ - "from sklearn.impute import SimpleImputer\n", - "from sklearn.compose import ColumnTransformer\n", - "from sklearn.pipeline import Pipeline\n", - "from sklearn.impute import SimpleImputer\n", - "from sklearn.preprocessing import (\n", - " StandardScaler,\n", - " OneHotEncoder,\n", - " LabelEncoder,\n", - " OrdinalEncoder,\n", - ")\n", - "from sklearn.feature_selection import SelectPercentile, chi2\n", - "\n", - "numeric_features = df_transactions.select_dtypes(include=\"float64\").columns\n", - "categorical_features = df_transactions.select_dtypes(include=\"object\").columns\n", - "\n", - "preprocessor = ColumnTransformer(\n", - " transformers=[\n", - " (\"num\", SimpleImputer(strategy=\"median\"), numeric_features),\n", - " (\n", - " \"cat\",\n", - " OrdinalEncoder(handle_unknown=\"use_encoded_value\", unknown_value=-1),\n", - " categorical_features,\n", - " ),\n", - " ],\n", - " verbose_feature_names_out=False,\n", - " remainder=\"passthrough\",\n", - ")\n", - "preprocessor.set_output(transform=\"pandas\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0a0d3d70", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:51:08.063015Z", - "iopub.status.busy": "2023-03-09T06:51:08.062784Z", - "iopub.status.idle": "2023-03-09T06:51:24.798036Z", - "shell.execute_reply": "2023-03-09T06:51:24.797677Z" - } - }, - "outputs": [], - "source": [ - "X = preprocessor.fit_transform(X)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c3efa93f", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:51:24.800370Z", - "iopub.status.busy": "2023-03-09T06:51:24.800220Z", - "iopub.status.idle": "2023-03-09T06:51:25.734700Z", - "shell.execute_reply": "2023-03-09T06:51:25.734322Z" - } - }, - "outputs": [], - "source": [ - "from sklearn.model_selection import train_test_split\n", - "\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c6e4b919", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:51:25.736827Z", - "iopub.status.busy": "2023-03-09T06:51:25.736679Z", - "iopub.status.idle": "2023-03-09T06:51:25.759545Z", - "shell.execute_reply": "2023-03-09T06:51:25.759232Z" - } - }, - "outputs": [], - "source": [ - "import xgboost as xgb\n", - "\n", - "\n", - "def train(n_estimators, max_depth):\n", - " return xgb.XGBClassifier(\n", - " tree_method=\"hist\",\n", - " n_estimators=n_estimators,\n", - " max_depth=max_depth,\n", - " eval_metric=\"aucpr\",\n", - " objective=\"binary:logistic\",\n", - " enable_categorical=True,\n", - " ).fit(X_train, y_train, eval_set=[(X_test, y_test)])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d8944cd0", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:51:25.761463Z", - "iopub.status.busy": "2023-03-09T06:51:25.761324Z", - "iopub.status.idle": "2023-03-09T06:52:16.649884Z", - "shell.execute_reply": "2023-03-09T06:52:16.649519Z" - } - }, - "outputs": [], - "source": [ - "# small model with 300 gradient boosted trees and a maximum tree depth of 5\n", - "model_sm = train(300, 5)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c549dd2b", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:52:16.652081Z", - "iopub.status.busy": "2023-03-09T06:52:16.651916Z", - "iopub.status.idle": "2023-03-09T06:52:17.047092Z", - "shell.execute_reply": "2023-03-09T06:52:17.046693Z" - } - }, - "outputs": [], - "source": [ - "import bentoml\n", - "\n", - "bentoml.xgboost.save_model(\n", - " \"ieee-fraud-detection-sm\",\n", - " model_sm,\n", - " signatures={\n", - " \"predict_proba\": {\"batchable\": True},\n", - " },\n", - " custom_objects={\"preprocessor\": preprocessor},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f22add54", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:52:17.049300Z", - "iopub.status.busy": "2023-03-09T06:52:17.049115Z", - "iopub.status.idle": "2023-03-09T06:52:17.053783Z", - "shell.execute_reply": "2023-03-09T06:52:17.053478Z" - } - }, - "outputs": [], - "source": [ - "model_ref = bentoml.xgboost.get(\"ieee-fraud-detection-sm:latest\")\n", - "model_ref" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "efcf15eb", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:52:17.055505Z", - "iopub.status.busy": "2023-03-09T06:52:17.055384Z", - "iopub.status.idle": "2023-03-09T06:52:23.709177Z", - "shell.execute_reply": "2023-03-09T06:52:23.708889Z" - }, - "scrolled": true - }, - "outputs": [], - "source": [ - "import bentoml\n", - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "model_ref = bentoml.xgboost.get(\"ieee-fraud-detection-sm:latest\")\n", - "model_runner = model_ref.to_runner()\n", - "model_runner.init_local()\n", - "model_preprocessor = model_ref.custom_objects[\"preprocessor\"]\n", - "\n", - "test_transactions = pd.read_csv(\"./data/test_transaction.csv\")[0:500]\n", - "test_transactions = model_preprocessor.transform(test_transactions)\n", - "result = model_runner.predict_proba.run(test_transactions)\n", - "np.argmax(result, axis=1)" - ] - }, - { - "cell_type": "markdown", - "id": "0e3ac781", - "metadata": {}, - "source": [ - "For the Inference Graph demo, let's train two additional models by tweaking the parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5ba5780a", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T06:52:23.711339Z", - "iopub.status.busy": "2023-03-09T06:52:23.711233Z", - "iopub.status.idle": "2023-03-09T07:03:17.724144Z", - "shell.execute_reply": "2023-03-09T07:03:17.723796Z" - } - }, - "outputs": [], - "source": [ - "# large model with 3000 gradient boosted trees and a maximum tree depth of 15\n", - "model_lg = train(3000, 15)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "318d54cb", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T07:03:17.726234Z", - "iopub.status.busy": "2023-03-09T07:03:17.726122Z", - "iopub.status.idle": "2023-03-09T07:03:17.958983Z", - "shell.execute_reply": "2023-03-09T07:03:17.958688Z" - } - }, - "outputs": [], - "source": [ - "import bentoml\n", - "\n", - "bentoml.xgboost.save_model(\n", - " \"ieee-fraud-detection-lg\",\n", - " model_lg,\n", - " signatures={\n", - " \"predict_proba\": {\"batchable\": True},\n", - " },\n", - " custom_objects={\"preprocessor\": preprocessor},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "959d20ed", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T07:03:17.960692Z", - "iopub.status.busy": "2023-03-09T07:03:17.960576Z", - "iopub.status.idle": "2023-03-09T07:03:36.003487Z", - "shell.execute_reply": "2023-03-09T07:03:36.003154Z" - } - }, - "outputs": [], - "source": [ - "# tiny model with 300 gradient boosted trees and a maximum tree depth of 5\n", - "model_tiny = train(100, 3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6e86102e", - "metadata": { - "execution": { - "iopub.execute_input": "2023-03-09T07:03:36.005582Z", - "iopub.status.busy": "2023-03-09T07:03:36.005448Z", - "iopub.status.idle": "2023-03-09T07:03:36.150045Z", - "shell.execute_reply": "2023-03-09T07:03:36.149710Z" - } - }, - "outputs": [], - "source": [ - "import bentoml\n", - "\n", - "bentoml.xgboost.save_model(\n", - " \"ieee-fraud-detection-tiny\",\n", - " model_tiny,\n", - " signatures={\n", - " \"predict_proba\": {\"batchable\": True},\n", - " },\n", - " custom_objects={\"preprocessor\": preprocessor},\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "664f1b4e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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.8.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/fraud_detection/README.md b/examples/fraud_detection/README.md deleted file mode 100644 index 4a719d00785..00000000000 --- a/examples/fraud_detection/README.md +++ /dev/null @@ -1,108 +0,0 @@ -# Fraud Detection Service Example - -1. Install dependencies: -```bash -pip install -r ./dev-requirements.txt -``` - -2. Download dataset from Kaggle - -Before downloading, set up Kaggle API Credentials https://github.com/Kaggle/kaggle-api#api-credentials -and accept dataset rules: https://www.kaggle.com/competitions/ieee-fraud-detection/data - -```bash -./download_data.sh -``` - -3. Train the fraud detection xgboost model. For details, see the ./IEEE-CIS-Fraud-Detection.ipynb - notebook: -```bash -./train.sh -``` - -This creates 3 variations of the model: - -```bash -$ bentoml models list - -Tag Module Size Creation Time -ieee-fraud-detection-tiny:qli6n3f6jcta3uqj bentoml.xgboost 141.40 KiB 2023-03-08 23:03:36 -ieee-fraud-detection-lg:o7wqb5f6jcta3uqj bentoml.xgboost 18.07 MiB 2023-03-08 23:03:17 -ieee-fraud-detection-sm:5yblgmf6i2ta3uqj bentoml.xgboost 723.00 KiB 2023-03-08 22:52:16 -``` - - -4. Run the ML Service locally: -```bash -bentoml serve -``` - -5. Send test requests: - -Visit http://localhost:3000/ in a browser and send test requests via the UI. - -Alternatively, send test payloads via CLI: - -```bash -head --lines=200 ./data/test_transaction.csv | curl -X POST -H 'Content-Type: text/csv' --data-binary @- http://0.0.0.0:3000/is_fraud -``` - -6. Build a docker image for deployment - -Build a Bento to lock the model version and dependency tree: -```bash -bentoml build -``` - -Ensure docker is installed and running, build a docker image with `bentoml containerize` -```bash -bentoml containerize fraud_detection:latest -``` - -Test out the docker image built: - -```bash -docker run -it --rm -p 3000:3000 fraud_detection:{YOUR BENTO VERSION} -``` - -7. Optional: use GPU for model inference - -Use `bentofile-gpu.yaml` to build a new Bento, which adds the following two lines to the YAML. -This ensures the docker image comes with GPU libraries installed and BentoML will automatically -load models on GPU when running the docker image with GPU devices available. - -```yaml -docker: - cuda_version: "11.6.2" -``` - -Build Bento with GPU support: -```bash -bentoml build -f ./bentofile-gpu.yaml -``` - -Build docker image with GPU support: -```bash -bentoml containerize fraud_detection:latest - -docker run --gpus all --device /dev/nvidia0 \ - --device /dev/nvidia-uvm --device /dev/nvidia-uvm-tools \ - --device /dev/nvidia-modeset --device /dev/nvidiactl \ - fraud_detection:{YOUR BENTO VERSION} -``` - -8. Optional: multi-model inference graph - -BentoML makes it efficient to create ML service with multiple ML models. Users can choose to run -models sequentially or in parallel using the Python AsyncIO APIs along with Runners APIs. This makes -it possible create inference graphes or multi-stage inference pipeline all from Python APIs. - -Here's an example that runs all three models simutaneously and aggregate their results: - -```bash -bentoml serve inference_graph_service:svc - -bentoml build -f ./inference_graph_bentofile.yaml -``` - -Sample code available in the `./inference_graph_service.py` file. diff --git a/examples/fraud_detection/benchmark/README.md b/examples/fraud_detection/benchmark/README.md deleted file mode 100644 index 75e5837b8b2..00000000000 --- a/examples/fraud_detection/benchmark/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Benchmark - -1. Install dependencies: -```bash -pip install -r ./benchmark-requirements.txt -``` - -2. Benchmark with Locust -```bash -bentoml serve service:svc -``` -```bash -locust -H http://0.0.0.0:3000 -u 200 -r 10 -``` - -Visit http://0.0.0.0:8089/ and start the test. - -3. Testing other serving methods - -* BentoML with distributed Runner architecture (default, recommended for most use cases) - ```bash - bentoml serve service:svc - ``` - -* BentoML with embedded local Runner (recommended for light-weight models) - ```bash - bentoml serve service_local_runner:svc - ``` - -* A typical FastAPI implementation with XGBoost syncrounous API for inference: - - ```bash - uvicorn fastapi_main_load_model:app --workers=10 --port=3000 - ``` - -* FastAPI endpoint with BentoML runner async API for inference: - - ```bash - uvicorn fastapi_main_local_runner:app --workers=10 --port=3000 - ``` - -* BentoML deployed on Ray - - serve run ray_deploy:deploy -p 3000 diff --git a/examples/fraud_detection/benchmark/benchmark-requirements.txt b/examples/fraud_detection/benchmark/benchmark-requirements.txt deleted file mode 100644 index 1ee5ff75788..00000000000 --- a/examples/fraud_detection/benchmark/benchmark-requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -numpy -pandas -xgboost -scikit-learn -fastapi -uvicorn[standard] -locust diff --git a/examples/fraud_detection/benchmark/fastapi_main_load_model.py b/examples/fraud_detection/benchmark/fastapi_main_load_model.py deleted file mode 100644 index 5bfe1312d47..00000000000 --- a/examples/fraud_detection/benchmark/fastapi_main_load_model.py +++ /dev/null @@ -1,29 +0,0 @@ -import io - -import numpy as np -import pandas as pd -from fastapi import FastAPI -from fastapi import Request -from sample import sample_input - -import bentoml - -model_tag = "ieee-fraud-detection-lg:latest" -preprocessor = bentoml.xgboost.get(model_tag).custom_objects["preprocessor"] -fraud_model = bentoml.xgboost.load_model(model_tag) - -app = FastAPI() - - -@app.post("/is_fraud") -async def is_fraud(request: Request): - body = await request.body() - input_df = pd.read_json(io.BytesIO(body), dtype=True, orient="records") - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = fraud_model.predict_proba(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return { - "is_fraud": list(map(bool, predictions)), - "is_fraud_prob": results[:, 1].tolist(), - } diff --git a/examples/fraud_detection/benchmark/fastapi_main_local_runner.py b/examples/fraud_detection/benchmark/fastapi_main_local_runner.py deleted file mode 100644 index 0f11113aa9f..00000000000 --- a/examples/fraud_detection/benchmark/fastapi_main_local_runner.py +++ /dev/null @@ -1,30 +0,0 @@ -import io - -import numpy as np -import pandas as pd -from fastapi import FastAPI -from fastapi import Request -from sample import sample_input - -import bentoml - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-lg:latest") -preprocessor = model_ref.custom_objects["preprocessor"] -fraud_model_runner = model_ref.to_runner() -fraud_model_runner.init_local() - -app = FastAPI() - - -@app.post("/is_fraud") -async def is_fraud(request: Request): - body = await request.body() - input_df = pd.read_json(io.BytesIO(body), dtype=True, orient="records") - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = await fraud_model_runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return { - "is_fraud": list(map(bool, predictions)), - "is_fraud_prob": results[:, 1].tolist(), - } diff --git a/examples/fraud_detection/benchmark/locustfile.py b/examples/fraud_detection/benchmark/locustfile.py deleted file mode 100644 index b85efab8951..00000000000 --- a/examples/fraud_detection/benchmark/locustfile.py +++ /dev/null @@ -1,21 +0,0 @@ -import numpy as np -import pandas as pd -from locust import HttpUser -from locust import between -from locust import task - -NUM_OF_ROWS = 500 -test_transactions = pd.read_csv("../data/test_transaction.csv")[0:NUM_OF_ROWS] - -endpoint = "/is_fraud" -# endpoint = "/is_fraud_async" - - -class FraudDetectionUser(HttpUser): - @task - def is_fraud(self): - index = np.random.choice(NUM_OF_ROWS) - input_data = test_transactions[index : index + 1] - self.client.post(endpoint, data=input_data.to_json()) - - wait_time = between(0.01, 2) diff --git a/examples/fraud_detection/benchmark/ray_deploy.py b/examples/fraud_detection/benchmark/ray_deploy.py deleted file mode 100644 index 5fb83d40f2f..00000000000 --- a/examples/fraud_detection/benchmark/ray_deploy.py +++ /dev/null @@ -1,18 +0,0 @@ -import bentoml - -deploy = bentoml.ray.deployment( - "fraud_detection:latest", - {"num_replicas": 5, "ray_actor_options": {"num_cpus": 1}}, - { - "ieee-fraud-detection-sm": { - "num_replicas": 1, - "ray_actor_options": {"num_cpus": 5}, - } - }, - enable_batching=True, - batching_config={ - "ieee-fraud-detection-sm": { - "predict_proba": {"max_batch_size": 5, "batch_wait_timeout_s": 0.2} - } - }, -) diff --git a/examples/fraud_detection/benchmark/sample.py b/examples/fraud_detection/benchmark/sample.py deleted file mode 100644 index be08f55910e..00000000000 --- a/examples/fraud_detection/benchmark/sample.py +++ /dev/null @@ -1,401 +0,0 @@ -import pandas as pd - -sample_json = [ - { - "TransactionID": 2987000, - "TransactionDT": 86400, - "TransactionAmt": 68.5, - "ProductCD": "W", - "card1": 13926, - "card2": None, - "card3": 150.0, - "card4": "discover", - "card5": 142.0, - "card6": "credit", - "addr1": 315.0, - "addr2": 87.0, - "dist1": 19.0, - "dist2": None, - "P_emaildomain": None, - "R_emaildomain": None, - "C1": 1.0, - "C2": 1.0, - "C3": 0.0, - "C4": 0.0, - "C5": 0.0, - "C6": 1.0, - "C7": 0.0, - "C8": 0.0, - "C9": 1.0, - "C10": 0.0, - "C11": 2.0, - "C12": 0.0, - "C13": 1.0, - "C14": 1.0, - "D1": 14.0, - "D2": None, - "D3": 13.0, - "D4": None, - "D5": None, - "D6": None, - "D7": None, - "D8": None, - "D9": None, - "D10": 13.0, - "D11": 13.0, - "D12": None, - "D13": None, - "D14": None, - "D15": 0.0, - "M1": "T", - "M2": "T", - "M3": "T", - "M4": "M2", - "M5": "F", - "M6": "T", - "M7": None, - "M8": None, - "M9": None, - "V1": 1.0, - "V2": 1.0, - "V3": 1.0, - "V4": 1.0, - "V5": 1.0, - "V6": 1.0, - "V7": 1.0, - "V8": 1.0, - "V9": 1.0, - "V10": 0.0, - "V11": 0.0, - "V12": 1.0, - "V13": 1.0, - "V14": 1.0, - "V15": 0.0, - "V16": 0.0, - "V17": 0.0, - "V18": 0.0, - "V19": 1.0, - "V20": 1.0, - "V21": 0.0, - "V22": 0.0, - "V23": 1.0, - "V24": 1.0, - "V25": 1.0, - "V26": 1.0, - "V27": 0.0, - "V28": 0.0, - "V29": 0.0, - "V30": 0.0, - "V31": 0.0, - "V32": 0.0, - "V33": 0.0, - "V34": 0.0, - "V35": None, - "V36": None, - "V37": None, - "V38": None, - "V39": None, - "V40": None, - "V41": None, - "V42": None, - "V43": None, - "V44": None, - "V45": None, - "V46": None, - "V47": None, - "V48": None, - "V49": None, - "V50": None, - "V51": None, - "V52": None, - "V53": 1.0, - "V54": 1.0, - "V55": 1.0, - "V56": 1.0, - "V57": 0.0, - "V58": 0.0, - "V59": 0.0, - "V60": 0.0, - "V61": 1.0, - "V62": 1.0, - "V63": 0.0, - "V64": 0.0, - "V65": 1.0, - "V66": 1.0, - "V67": 1.0, - "V68": 0.0, - "V69": 0.0, - "V70": 0.0, - "V71": 0.0, - "V72": 0.0, - "V73": 0.0, - "V74": 0.0, - "V75": 1.0, - "V76": 1.0, - "V77": 1.0, - "V78": 1.0, - "V79": 0.0, - "V80": 0.0, - "V81": 0.0, - "V82": 0.0, - "V83": 0.0, - "V84": 0.0, - "V85": 0.0, - "V86": 1.0, - "V87": 1.0, - "V88": 1.0, - "V89": 0.0, - "V90": 0.0, - "V91": 0.0, - "V92": 0.0, - "V93": 0.0, - "V94": 0.0, - "V95": 0.0, - "V96": 1.0, - "V97": 0.0, - "V98": 0.0, - "V99": 0.0, - "V100": 0.0, - "V101": 0.0, - "V102": 1.0, - "V103": 0.0, - "V104": 0.0, - "V105": 0.0, - "V106": 0.0, - "V107": 1.0, - "V108": 1.0, - "V109": 1.0, - "V110": 1.0, - "V111": 1.0, - "V112": 1.0, - "V113": 1.0, - "V114": 1.0, - "V115": 1.0, - "V116": 1.0, - "V117": 1.0, - "V118": 1.0, - "V119": 1.0, - "V120": 1.0, - "V121": 1.0, - "V122": 1.0, - "V123": 1.0, - "V124": 1.0, - "V125": 1.0, - "V126": 0.0, - "V127": 117.0, - "V128": 0.0, - "V129": 0.0, - "V130": 0.0, - "V131": 0.0, - "V132": 0.0, - "V133": 117.0, - "V134": 0.0, - "V135": 0.0, - "V136": 0.0, - "V137": 0.0, - "V138": None, - "V139": None, - "V140": None, - "V141": None, - "V142": None, - "V143": None, - "V144": None, - "V145": None, - "V146": None, - "V147": None, - "V148": None, - "V149": None, - "V150": None, - "V151": None, - "V152": None, - "V153": None, - "V154": None, - "V155": None, - "V156": None, - "V157": None, - "V158": None, - "V159": None, - "V160": None, - "V161": None, - "V162": None, - "V163": None, - "V164": None, - "V165": None, - "V166": None, - "V167": None, - "V168": None, - "V169": None, - "V170": None, - "V171": None, - "V172": None, - "V173": None, - "V174": None, - "V175": None, - "V176": None, - "V177": None, - "V178": None, - "V179": None, - "V180": None, - "V181": None, - "V182": None, - "V183": None, - "V184": None, - "V185": None, - "V186": None, - "V187": None, - "V188": None, - "V189": None, - "V190": None, - "V191": None, - "V192": None, - "V193": None, - "V194": None, - "V195": None, - "V196": None, - "V197": None, - "V198": None, - "V199": None, - "V200": None, - "V201": None, - "V202": None, - "V203": None, - "V204": None, - "V205": None, - "V206": None, - "V207": None, - "V208": None, - "V209": None, - "V210": None, - "V211": None, - "V212": None, - "V213": None, - "V214": None, - "V215": None, - "V216": None, - "V217": None, - "V218": None, - "V219": None, - "V220": None, - "V221": None, - "V222": None, - "V223": None, - "V224": None, - "V225": None, - "V226": None, - "V227": None, - "V228": None, - "V229": None, - "V230": None, - "V231": None, - "V232": None, - "V233": None, - "V234": None, - "V235": None, - "V236": None, - "V237": None, - "V238": None, - "V239": None, - "V240": None, - "V241": None, - "V242": None, - "V243": None, - "V244": None, - "V245": None, - "V246": None, - "V247": None, - "V248": None, - "V249": None, - "V250": None, - "V251": None, - "V252": None, - "V253": None, - "V254": None, - "V255": None, - "V256": None, - "V257": None, - "V258": None, - "V259": None, - "V260": None, - "V261": None, - "V262": None, - "V263": None, - "V264": None, - "V265": None, - "V266": None, - "V267": None, - "V268": None, - "V269": None, - "V270": None, - "V271": None, - "V272": None, - "V273": None, - "V274": None, - "V275": None, - "V276": None, - "V277": None, - "V278": None, - "V279": 0.0, - "V280": 0.0, - "V281": 0.0, - "V282": 1.0, - "V283": 1.0, - "V284": 0.0, - "V285": 0.0, - "V286": 0.0, - "V287": 0.0, - "V288": 0.0, - "V289": 0.0, - "V290": 1.0, - "V291": 1.0, - "V292": 1.0, - "V293": 0.0, - "V294": 1.0, - "V295": 0.0, - "V296": 0.0, - "V297": 0.0, - "V298": 0.0, - "V299": 0.0, - "V300": 0.0, - "V301": 0.0, - "V302": 0.0, - "V303": 0.0, - "V304": 0.0, - "V305": 1.0, - "V306": 0.0, - "V307": 117.0, - "V308": 0.0, - "V309": 0.0, - "V310": 0.0, - "V311": 0.0, - "V312": 0.0, - "V313": 0.0, - "V314": 0.0, - "V315": 0.0, - "V316": 0.0, - "V317": 117.0, - "V318": 0.0, - "V319": 0.0, - "V320": 0.0, - "V321": 0.0, - "V322": None, - "V323": None, - "V324": None, - "V325": None, - "V326": None, - "V327": None, - "V328": None, - "V329": None, - "V330": None, - "V331": None, - "V332": None, - "V333": None, - "V334": None, - "V335": None, - "V336": None, - "V337": None, - "V338": None, - "V339": None, - } -] - -sample_input = pd.DataFrame(sample_json) diff --git a/examples/fraud_detection/benchmark/service.py b/examples/fraud_detection/benchmark/service.py deleted file mode 100644 index e111741e8f7..00000000000 --- a/examples/fraud_detection/benchmark/service.py +++ /dev/null @@ -1,33 +0,0 @@ -import numpy as np -import pandas as pd -from sample import sample_input - -import bentoml -from bentoml.io import JSON -from bentoml.io import PandasDataFrame - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-lg:latest") -preprocessor = model_ref.custom_objects["preprocessor"] -fraud_model_runner = model_ref.to_runner() - -svc = bentoml.Service("fraud_detection", runners=[fraud_model_runner]) - -input_spec = PandasDataFrame.from_sample(sample_input) - - -@svc.api(input=input_spec, output=JSON()) -def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = fraud_model_runner.predict_proba.run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} - - -@svc.api(input=input_spec, output=JSON()) -async def is_fraud_async(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = await fraud_model_runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} diff --git a/examples/fraud_detection/benchmark/service_local_runner.py b/examples/fraud_detection/benchmark/service_local_runner.py deleted file mode 100644 index 2e630e8e76a..00000000000 --- a/examples/fraud_detection/benchmark/service_local_runner.py +++ /dev/null @@ -1,34 +0,0 @@ -import numpy as np -import pandas as pd -from sample import sample_input - -import bentoml -from bentoml.io import JSON -from bentoml.io import PandasDataFrame - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-lg:latest") -preprocessor = model_ref.custom_objects["preprocessor"] -fraud_model_runner = model_ref.to_runner() -fraud_model_runner.init_local() - -svc = bentoml.Service("fraud_detection") - -input_spec = PandasDataFrame.from_sample(sample_input) - - -@svc.api(input=input_spec, output=JSON()) -def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = fraud_model_runner.predict_proba.run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} - - -@svc.api(input=input_spec, output=JSON()) -async def is_fraud_async(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = await fraud_model_runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} diff --git a/examples/fraud_detection/bentofile-gpu.yaml b/examples/fraud_detection/bentofile-gpu.yaml deleted file mode 100644 index 9d3b67c0c08..00000000000 --- a/examples/fraud_detection/bentofile-gpu.yaml +++ /dev/null @@ -1,12 +0,0 @@ -service: "service:svc" -include: -- "service.py" -- "sample.py" -docker: - cuda_version: "11.6.2" -python: - packages: - - numpy - - pandas - - xgboost - - scikit-learn diff --git a/examples/fraud_detection/bentofile.yaml b/examples/fraud_detection/bentofile.yaml deleted file mode 100644 index a6535fa6cb7..00000000000 --- a/examples/fraud_detection/bentofile.yaml +++ /dev/null @@ -1,10 +0,0 @@ -service: "service:svc" -include: -- "service.py" -- "sample.py" -python: - packages: - - numpy - - pandas - - xgboost - - scikit-learn diff --git a/examples/fraud_detection/dev-requirements.txt b/examples/fraud_detection/dev-requirements.txt deleted file mode 100644 index da63880f5b7..00000000000 --- a/examples/fraud_detection/dev-requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ -notebook -kaggle -jupyter -numpy -pandas -xgboost -scikit-learn -nbconvert diff --git a/examples/fraud_detection/download_data.sh b/examples/fraud_detection/download_data.sh deleted file mode 100755 index 5303fbc4277..00000000000 --- a/examples/fraud_detection/download_data.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -set -ex - -kaggle competitions download -c ieee-fraud-detection -rm -rf ./data/ -unzip -o -d ./data/ ieee-fraud-detection.zip && rm ieee-fraud-detection.zip diff --git a/examples/fraud_detection/inference_graph_bentofile.yaml b/examples/fraud_detection/inference_graph_bentofile.yaml deleted file mode 100644 index 41d95d26151..00000000000 --- a/examples/fraud_detection/inference_graph_bentofile.yaml +++ /dev/null @@ -1,9 +0,0 @@ -service: "inference_graph_service:svc" -include: -- "*.py" -python: - packages: - - numpy - - pandas - - xgboost - - scikit-learn diff --git a/examples/fraud_detection/inference_graph_service.py b/examples/fraud_detection/inference_graph_service.py deleted file mode 100644 index bc2ed37df3b..00000000000 --- a/examples/fraud_detection/inference_graph_service.py +++ /dev/null @@ -1,53 +0,0 @@ -import asyncio - -import numpy as np -import pandas as pd -from sample import sample_input - -import bentoml -from bentoml.io import JSON -from bentoml.io import PandasDataFrame - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-lg:latest") -preprocessor = model_ref.custom_objects["preprocessor"] - -fraud_model_tiny_runner = bentoml.xgboost.get( - "ieee-fraud-detection-tiny:latest" -).to_runner() -fraud_model_small_runner = bentoml.xgboost.get( - "ieee-fraud-detection-sm:latest" -).to_runner() -fraud_model_large_runner = bentoml.xgboost.get( - "ieee-fraud-detection-lg:latest" -).to_runner() - -svc = bentoml.Service( - "fraud_detection_inference_graph", - runners=[ - fraud_model_tiny_runner, - fraud_model_small_runner, - fraud_model_large_runner, - ], -) - -input_spec = PandasDataFrame.from_sample(sample_input) - - -async def _is_fraud_async( - runner: bentoml.Runner, - input_df: pd.DataFrame, -): - results = await runner.predict_proba.async_run(input_df) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} - - -@svc.api(input=input_spec, output=JSON()) -async def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_df = preprocessor.transform(input_df) - return await asyncio.gather( - _is_fraud_async(fraud_model_tiny_runner, input_df), - _is_fraud_async(fraud_model_small_runner, input_df), - _is_fraud_async(fraud_model_large_runner, input_df), - ) diff --git a/examples/fraud_detection/sample.py b/examples/fraud_detection/sample.py deleted file mode 100644 index be08f55910e..00000000000 --- a/examples/fraud_detection/sample.py +++ /dev/null @@ -1,401 +0,0 @@ -import pandas as pd - -sample_json = [ - { - "TransactionID": 2987000, - "TransactionDT": 86400, - "TransactionAmt": 68.5, - "ProductCD": "W", - "card1": 13926, - "card2": None, - "card3": 150.0, - "card4": "discover", - "card5": 142.0, - "card6": "credit", - "addr1": 315.0, - "addr2": 87.0, - "dist1": 19.0, - "dist2": None, - "P_emaildomain": None, - "R_emaildomain": None, - "C1": 1.0, - "C2": 1.0, - "C3": 0.0, - "C4": 0.0, - "C5": 0.0, - "C6": 1.0, - "C7": 0.0, - "C8": 0.0, - "C9": 1.0, - "C10": 0.0, - "C11": 2.0, - "C12": 0.0, - "C13": 1.0, - "C14": 1.0, - "D1": 14.0, - "D2": None, - "D3": 13.0, - "D4": None, - "D5": None, - "D6": None, - "D7": None, - "D8": None, - "D9": None, - "D10": 13.0, - "D11": 13.0, - "D12": None, - "D13": None, - "D14": None, - "D15": 0.0, - "M1": "T", - "M2": "T", - "M3": "T", - "M4": "M2", - "M5": "F", - "M6": "T", - "M7": None, - "M8": None, - "M9": None, - "V1": 1.0, - "V2": 1.0, - "V3": 1.0, - "V4": 1.0, - "V5": 1.0, - "V6": 1.0, - "V7": 1.0, - "V8": 1.0, - "V9": 1.0, - "V10": 0.0, - "V11": 0.0, - "V12": 1.0, - "V13": 1.0, - "V14": 1.0, - "V15": 0.0, - "V16": 0.0, - "V17": 0.0, - "V18": 0.0, - "V19": 1.0, - "V20": 1.0, - "V21": 0.0, - "V22": 0.0, - "V23": 1.0, - "V24": 1.0, - "V25": 1.0, - "V26": 1.0, - "V27": 0.0, - "V28": 0.0, - "V29": 0.0, - "V30": 0.0, - "V31": 0.0, - "V32": 0.0, - "V33": 0.0, - "V34": 0.0, - "V35": None, - "V36": None, - "V37": None, - "V38": None, - "V39": None, - "V40": None, - "V41": None, - "V42": None, - "V43": None, - "V44": None, - "V45": None, - "V46": None, - "V47": None, - "V48": None, - "V49": None, - "V50": None, - "V51": None, - "V52": None, - "V53": 1.0, - "V54": 1.0, - "V55": 1.0, - "V56": 1.0, - "V57": 0.0, - "V58": 0.0, - "V59": 0.0, - "V60": 0.0, - "V61": 1.0, - "V62": 1.0, - "V63": 0.0, - "V64": 0.0, - "V65": 1.0, - "V66": 1.0, - "V67": 1.0, - "V68": 0.0, - "V69": 0.0, - "V70": 0.0, - "V71": 0.0, - "V72": 0.0, - "V73": 0.0, - "V74": 0.0, - "V75": 1.0, - "V76": 1.0, - "V77": 1.0, - "V78": 1.0, - "V79": 0.0, - "V80": 0.0, - "V81": 0.0, - "V82": 0.0, - "V83": 0.0, - "V84": 0.0, - "V85": 0.0, - "V86": 1.0, - "V87": 1.0, - "V88": 1.0, - "V89": 0.0, - "V90": 0.0, - "V91": 0.0, - "V92": 0.0, - "V93": 0.0, - "V94": 0.0, - "V95": 0.0, - "V96": 1.0, - "V97": 0.0, - "V98": 0.0, - "V99": 0.0, - "V100": 0.0, - "V101": 0.0, - "V102": 1.0, - "V103": 0.0, - "V104": 0.0, - "V105": 0.0, - "V106": 0.0, - "V107": 1.0, - "V108": 1.0, - "V109": 1.0, - "V110": 1.0, - "V111": 1.0, - "V112": 1.0, - "V113": 1.0, - "V114": 1.0, - "V115": 1.0, - "V116": 1.0, - "V117": 1.0, - "V118": 1.0, - "V119": 1.0, - "V120": 1.0, - "V121": 1.0, - "V122": 1.0, - "V123": 1.0, - "V124": 1.0, - "V125": 1.0, - "V126": 0.0, - "V127": 117.0, - "V128": 0.0, - "V129": 0.0, - "V130": 0.0, - "V131": 0.0, - "V132": 0.0, - "V133": 117.0, - "V134": 0.0, - "V135": 0.0, - "V136": 0.0, - "V137": 0.0, - "V138": None, - "V139": None, - "V140": None, - "V141": None, - "V142": None, - "V143": None, - "V144": None, - "V145": None, - "V146": None, - "V147": None, - "V148": None, - "V149": None, - "V150": None, - "V151": None, - "V152": None, - "V153": None, - "V154": None, - "V155": None, - "V156": None, - "V157": None, - "V158": None, - "V159": None, - "V160": None, - "V161": None, - "V162": None, - "V163": None, - "V164": None, - "V165": None, - "V166": None, - "V167": None, - "V168": None, - "V169": None, - "V170": None, - "V171": None, - "V172": None, - "V173": None, - "V174": None, - "V175": None, - "V176": None, - "V177": None, - "V178": None, - "V179": None, - "V180": None, - "V181": None, - "V182": None, - "V183": None, - "V184": None, - "V185": None, - "V186": None, - "V187": None, - "V188": None, - "V189": None, - "V190": None, - "V191": None, - "V192": None, - "V193": None, - "V194": None, - "V195": None, - "V196": None, - "V197": None, - "V198": None, - "V199": None, - "V200": None, - "V201": None, - "V202": None, - "V203": None, - "V204": None, - "V205": None, - "V206": None, - "V207": None, - "V208": None, - "V209": None, - "V210": None, - "V211": None, - "V212": None, - "V213": None, - "V214": None, - "V215": None, - "V216": None, - "V217": None, - "V218": None, - "V219": None, - "V220": None, - "V221": None, - "V222": None, - "V223": None, - "V224": None, - "V225": None, - "V226": None, - "V227": None, - "V228": None, - "V229": None, - "V230": None, - "V231": None, - "V232": None, - "V233": None, - "V234": None, - "V235": None, - "V236": None, - "V237": None, - "V238": None, - "V239": None, - "V240": None, - "V241": None, - "V242": None, - "V243": None, - "V244": None, - "V245": None, - "V246": None, - "V247": None, - "V248": None, - "V249": None, - "V250": None, - "V251": None, - "V252": None, - "V253": None, - "V254": None, - "V255": None, - "V256": None, - "V257": None, - "V258": None, - "V259": None, - "V260": None, - "V261": None, - "V262": None, - "V263": None, - "V264": None, - "V265": None, - "V266": None, - "V267": None, - "V268": None, - "V269": None, - "V270": None, - "V271": None, - "V272": None, - "V273": None, - "V274": None, - "V275": None, - "V276": None, - "V277": None, - "V278": None, - "V279": 0.0, - "V280": 0.0, - "V281": 0.0, - "V282": 1.0, - "V283": 1.0, - "V284": 0.0, - "V285": 0.0, - "V286": 0.0, - "V287": 0.0, - "V288": 0.0, - "V289": 0.0, - "V290": 1.0, - "V291": 1.0, - "V292": 1.0, - "V293": 0.0, - "V294": 1.0, - "V295": 0.0, - "V296": 0.0, - "V297": 0.0, - "V298": 0.0, - "V299": 0.0, - "V300": 0.0, - "V301": 0.0, - "V302": 0.0, - "V303": 0.0, - "V304": 0.0, - "V305": 1.0, - "V306": 0.0, - "V307": 117.0, - "V308": 0.0, - "V309": 0.0, - "V310": 0.0, - "V311": 0.0, - "V312": 0.0, - "V313": 0.0, - "V314": 0.0, - "V315": 0.0, - "V316": 0.0, - "V317": 117.0, - "V318": 0.0, - "V319": 0.0, - "V320": 0.0, - "V321": 0.0, - "V322": None, - "V323": None, - "V324": None, - "V325": None, - "V326": None, - "V327": None, - "V328": None, - "V329": None, - "V330": None, - "V331": None, - "V332": None, - "V333": None, - "V334": None, - "V335": None, - "V336": None, - "V337": None, - "V338": None, - "V339": None, - } -] - -sample_input = pd.DataFrame(sample_json) diff --git a/examples/fraud_detection/service.py b/examples/fraud_detection/service.py deleted file mode 100644 index 1bcac4c4692..00000000000 --- a/examples/fraud_detection/service.py +++ /dev/null @@ -1,24 +0,0 @@ -import numpy as np -import pandas as pd -from sample import sample_input - -import bentoml -from bentoml.io import JSON -from bentoml.io import PandasDataFrame - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-lg:latest") -preprocessor = model_ref.custom_objects["preprocessor"] -fraud_model_runner = model_ref.to_runner() - -svc = bentoml.Service("fraud_detection", runners=[fraud_model_runner]) - -input_spec = PandasDataFrame.from_sample(sample_input) - - -@svc.api(input=input_spec, output=JSON()) -async def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - input_features = preprocessor.transform(input_df) - results = await fraud_model_runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return {"is_fraud": list(map(bool, predictions)), "is_fraud_prob": results[:, 1]} diff --git a/examples/fraud_detection/submit_test_requests.sh b/examples/fraud_detection/submit_test_requests.sh deleted file mode 100644 index 316940f9f23..00000000000 --- a/examples/fraud_detection/submit_test_requests.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -head --lines=200 ./data/test_transaction.csv | curl -X POST -H 'Content-Type: text/csv' --data-binary @- http://0.0.0.0:3000/is_fraud diff --git a/examples/fraud_detection/train.sh b/examples/fraud_detection/train.sh deleted file mode 100755 index de8aaef797d..00000000000 --- a/examples/fraud_detection/train.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -jupyter nbconvert --to notebook --inplace --execute ./IEEE-CIS-Fraud-Detection.ipynb --debug 2>&1 | grep -v '^\[NbConvertApp\]' diff --git a/examples/flax/MNIST/.bentoignore b/examples/inference-graph/.bentoignore similarity index 100% rename from examples/flax/MNIST/.bentoignore rename to examples/inference-graph/.bentoignore diff --git a/examples/inference_graph/README.md b/examples/inference-graph/README.md similarity index 100% rename from examples/inference_graph/README.md rename to examples/inference-graph/README.md diff --git a/examples/inference_graph/bentofile.yaml b/examples/inference-graph/bentofile.yaml similarity index 100% rename from examples/inference_graph/bentofile.yaml rename to examples/inference-graph/bentofile.yaml diff --git a/examples/inference_graph/requirements.txt b/examples/inference-graph/requirements.txt similarity index 100% rename from examples/inference_graph/requirements.txt rename to examples/inference-graph/requirements.txt diff --git a/examples/inference_graph/service.py b/examples/inference-graph/service.py similarity index 100% rename from examples/inference_graph/service.py rename to examples/inference-graph/service.py diff --git a/examples/inference_graph/.bentoignore b/examples/inference_graph/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/inference_graph/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/io-descriptors/requirements.txt b/examples/io-descriptors/requirements.txt index 555c2926121..3f2b5da9ae4 100644 --- a/examples/io-descriptors/requirements.txt +++ b/examples/io-descriptors/requirements.txt @@ -1,8 +1,5 @@ -diffusers bentoml -transformers torch -accelerate pydub pdf2img pandas diff --git a/examples/io-descriptors/service.py b/examples/io-descriptors/service.py index 0790366c4e5..5fe2b430bf4 100644 --- a/examples/io-descriptors/service.py +++ b/examples/io-descriptors/service.py @@ -48,9 +48,9 @@ def append_string_to_eof( txt_file: t.Annotated[Path, bentoml.validators.ContentType("text/plain")], input_string: str, ) -> t.Annotated[Path, bentoml.validators.ContentType("text/plain")]: - with open(output_path, "a") as file: + with open(txt_file, "a") as file: file.write(input_string) - return output_path + return txt_file @bentoml.service() diff --git a/examples/kfserving/.bentoignore b/examples/kfserving/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/kfserving/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/kfserving/bentofile.yaml b/examples/kfserving/bentofile.yaml deleted file mode 100644 index 2dd801b72bf..00000000000 --- a/examples/kfserving/bentofile.yaml +++ /dev/null @@ -1,11 +0,0 @@ -service: "service.py:svc" -labels: - owner: bentoml-team - project: gallery -include: -- "*.py" -python: - packages: - - scikit-learn - - pandas - - pydantic diff --git a/examples/kfserving/custom_kfserving_deployment.yaml b/examples/kfserving/custom_kfserving_deployment.yaml deleted file mode 100644 index 72a666c6279..00000000000 --- a/examples/kfserving/custom_kfserving_deployment.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: serving.kserve.io/v1beta1 -kind: InferenceService -metadata: - name: bentoml-custom-model -spec: - predictor: - containers: - - name: bentoml-kserve-container - image: {username}/iris_classifier:latest diff --git a/examples/kfserving/requirements.txt b/examples/kfserving/requirements.txt deleted file mode 100644 index 14c29cdbe36..00000000000 --- a/examples/kfserving/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -scikit-learn -pandas -bentoml>=1.0.0 -pydantic diff --git a/examples/kfserving/service.py b/examples/kfserving/service.py deleted file mode 100644 index 2d132f442de..00000000000 --- a/examples/kfserving/service.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import List - -import numpy as np -import pydantic - -import bentoml -from bentoml.io import JSON -from bentoml.io import NumpyNdarray - -iris_clf_runner = bentoml.sklearn.get("iris_clf:latest").to_runner() - -svc = bentoml.Service("iris_classifier", runners=[iris_clf_runner]) - - -class KFServingInputSchema(pydantic.BaseModel): - instances: List[List[float]] - - -kfserving_input = JSON(pydantic_model=KFServingInputSchema) - - -@svc.api( - input=kfserving_input, - output=NumpyNdarray(), - route="v1/models/iris_classifier", -) -async def classify(kf_input: KFServingInputSchema) -> np.ndarray: - instances = np.array(kf_input.instances) - return await iris_clf_runner.predict.async_run(instances) diff --git a/examples/kfserving/train.py b/examples/kfserving/train.py deleted file mode 100644 index 122186740f4..00000000000 --- a/examples/kfserving/train.py +++ /dev/null @@ -1,21 +0,0 @@ -import logging - -from sklearn import datasets -from sklearn import svm - -import bentoml - -logging.basicConfig(level=logging.WARN) - -if __name__ == "__main__": - # Load training data - iris = datasets.load_iris() - X, y = iris.data, iris.target - - # Model Training - clf = svm.SVC() - clf.fit(X, y) - - # Save model to BentoML local model store - saved_model = bentoml.sklearn.save_model("iris_clf", clf) - print(f"Model saved: {saved_model}") diff --git a/examples/kubeflow/README.md b/examples/kubeflow/README.md deleted file mode 100644 index 6168f0e4d13..00000000000 --- a/examples/kubeflow/README.md +++ /dev/null @@ -1,312 +0,0 @@ -# Developing BentoML Applications on Kubeflow - -Starting with the release of Kubeflow 1.7, BentoML provides a native integration with Kubeflow. This integration allows you to package models trained in Kubeflow Notebooks or Pipelines as [Bentos](https://docs.bentoml.com/en/latest/concepts/bento.html), and deploy them as microservices in the Kubernetes cluster through BentoML's cloud native components and custom resource definitions (CRDs). This documentation provides a comprehensive guide on how to use BentoML and Kubeflow together to streamline the process of deploying models at scale. - -In this example, we will train three fraud detection models using the Kubeflow notebook and the [Kaggle IEEE-CIS Fraud Detection dataset](https://www.kaggle.com/c/ieee-fraud-detection). We will then create a BentoML service that can simultaneously invoke all three models and return a decision on whether a transaction is fraudulent and build it into a Bento. We will showcase two deployment workflows using BentoML's Kubernetes operators: deploying directly from the Bento, and deploying from an OCI image built from the Bento. - -## Prerequisites - -Install Kubeflow and BentoML resources to the Kubernetes cluster. See [Kubeflow](https://github.com/kubeflow/manifests) and [BentoML](https://github.com/kubeflow/manifests/tree/master/contrib/bentoml) manifests installation guides for details. - -After BentoML Kubernetes resources are installed successfully, you should have the following CRDs in the namespace. - -```bash -> kubectl -n kubeflow get crds | grep bento -bentodeployments.serving.yatai.ai 2022-12-22T18:46:46Z -bentoes.resources.yatai.ai 2022-12-22T18:46:47Z -bentorequests.resources.yatai.ai 2022-12-22T18:46:47Z -``` - -Install the required packages to run this example. - -```bash -git clone --depth 1 https://github.com/bentoml/BentoML -cd BentoML/examples/kubeflow -pip install -r requirements.txt -``` - -## Download Kaggle Dataset - -Set Kaggle [user credentials](https://github.com/Kaggle/kaggle-api#api-credentials) for API access. Accepting the [rules of the competition](https://www.kaggle.com/competitions/ieee-fraud-detection/rules) is required for downloading the dataset. - -```bash -export KAGGLE_USERNAME= -export KAGGLE_KEY= -``` - -Download Kaggle dataset. - -```bash -kaggle competitions download -c ieee-fraud-detection -rm -rf ./data/ -unzip -d ./data/ ieee-fraud-detection.zip && rm ieee-fraud-detection.zip -``` - -## Train Models - -In this demonstration, we'll train three fraud detection models using the Kaggle IEEE-CIS Fraud Detection dataset. To showcase saving and serving multiple models with Kubeflow and BentoML, we'll split the dataset into three equal-sized chunks and use each chunk to train a separate model. While this approach has no practical benefits, it will help illustrate how to save and serve multiple models with Kubeflow and BentoML. This step can also be run from the `notebook.ipynb` included in this directory. - -```python -import pandas as pd - -df_transactions = pd.read_csv("./data/train_transaction.csv") - -X = df_transactions.drop(columns=["isFraud"]) -y = df_transactions.isFraud -``` - -Define the preprocessor. - -```python -from sklearn.impute import SimpleImputer -from sklearn.compose import ColumnTransformer -from sklearn.impute import SimpleImputer -from sklearn.preprocessing import OrdinalEncoder - -numeric_features = df_transactions.select_dtypes(include="float64").columns -categorical_features = df_transactions.select_dtypes(include="object").columns - -preprocessor = ColumnTransformer( - transformers=[ - ("num", SimpleImputer(strategy="median"), numeric_features), - ( - "cat", - OrdinalEncoder(handle_unknown="use_encoded_value", unknown_value=-1), - categorical_features, - ), - ], - verbose_feature_names_out=False, - remainder="passthrough", -) - -X = preprocessor.fit_transform(X) -``` - -Define our training function with the number of boosting rounds and maximum depths. - -```python -import xgboost as xgb - -def train(n_estimators, max_depth): - return xgb.XGBClassifier( - tree_method="hist", - n_estimators=n_estimators, - max_depth=max_depth, - eval_metric="aucpr", - objective="binary:logistic", - enable_categorical=True, - ).fit(X_train, y_train, eval_set=[(X_test, y_test)]) -``` - -We will divide the training data into three equal-sized chunks and treat them as independent data sets. Based on these data sets, we will train three separate fraud detection models. The trained model will be saved to the local model store using BentoML model saving API. - -```python -import bentoml - -from sklearn.model_selection import train_test_split - -CHUNKS = 3 -CHUNK_SIZE = len(X) // CHUNKS - -for i in range(CHUNKS): - START = i * CHUNK_SIZE - END = (i + 1) * CHUNK_SIZE - X_train, X_test, y_train, y_test = train_test_split(X[START:END], y[START:END]) - - name = f"ieee-fraud-detection-{i}" - model = train(10, 5) - score = model.score(X_test, y_test) - print(f"Successfully trained model {name} with score {score}.") - - bentoml.xgboost.save_model( - name, - model, - signatures={ - "predict_proba": {"batchable": True}, - }, - custom_objects={"preprocessor": preprocessor}, - ) - print(f"Successfully saved model {name} to the local model store.") -``` - -Saved models can be loaded back into the memory and debugged in the notebook. - -```python -import bentoml -import pandas as pd -import numpy as np - -model_ref = bentoml.xgboost.get("ieee-fraud-detection-0:latest") -model_runner = model_ref.to_runner() -model_runner.init_local() -model_preprocessor = model_ref.custom_objects["preprocessor"] - -test_transactions = pd.read_csv("./data/test_transaction.csv")[0:500] -test_transactions = model_preprocessor.transform(test_transactions) -result = model_runner.predict_proba.run(test_transactions) -np.argmax(result, axis=1) -``` - -## Define Service API - -After the models are built and scored, let's create the service definition. You can find the service definition in the `service.py` module in this example. Let's breakdown the `service.py` module and explain what each section does. - -First, we will create a list of preprocessors and runners from the three models we saved earlier. Runners are abstractions of the model inferences that can be scaled independently. See [Using Runners](https://docs.bentoml.com/en/latest/concepts/runner.html) for more details. - -```python -fraud_detection_preprocessors = [] -fraud_detection_runners = [] - -for model_name in ["ieee-fraud-detection-0", "ieee-fraud-detection-1", "ieee-fraud-detection-2"]: - model_ref = bentoml.xgboost.get(model_name) - fraud_detection_preprocessors.append(model_ref.custom_objects["preprocessor"]) - fraud_detection_runners.append(model_ref.to_runner()) -``` - -Next, we will create a service with the list of runners passed in. - -```python -svc = bentoml.Service("fraud_detection", runners=fraud_detection_runners) -``` - -Finally, we will create the API function `is_fraud`. We'll use the `@api` decorator to declare that the function is an API and specify the input and output types as pandas.DataFrame and JSON, respectively. The function is defined as `async` so that the inference calls to the runners can happen simultaneously without waiting for the results to return before calling the next runner. The inner function `_is_fraud` defines the model inference logic for each runner. All runners are called simultaneously through the `asyncio.gather` function and the results are aggregated into a list. The function will return True if any of the models return True. - -```python -@svc.api(input=PandasDataFrame.from_sample(sample_input), outp1t=JSON()) -async def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - - async def _is_fraud(preprocessor, runner, input_df): - input_features = preprocessor.transform(input_df) - results = await runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return bool(predictions[0]) - - # Simultaeously run all models - results = await asyncio.gather( - *[ - _is_fraud(p, r, input_df) - for p, r in zip(fraud_detection_preprocessors, fraud_detection_runners) - ] - ) - - # Return fraud if at least one model returns fraud - return any(results) -``` - -For more about service definitions, please see [Service and APIs](https://docs.bentoml.com/en/latest/concepts/service.html). - -## Build Service - -Building the service and models into a bento allows it to be distributed among collaborators, containerized into a OCI image, and deployed in the Kubernetes cluster. To build a service into a bento, we first need to define the `bentofile.yaml` file. See [Building Bentos](https://docs.bentoml.com/en/latest/concepts/bento.html) for more options. - -```yaml -service: "service:svc" -include: -- "service.py" -- "sample.py" -python: - requirements_txt: ./requirements.txt -``` - -Running the following command will build the service into a bento and store it to the local bento store. - -```bash -bentoml build -``` - -## Serve Bento - -Serving the bento will bring up a service endpoint in HTTP or gRPC for the service API we defined. Use `--help` to see more serving options. - -```bash -bentoml serve-http -``` - -## Deploy to Kubernetes Cluster - -BentoML offers three custom resource definitions (CRDs) in the Kubernetes cluster. - -- [BentoRequest](https://docs.bentoml.com/projects/yatai/en/latest/concepts/bentorequest_crd.html) - Describes the metadata needed for building the container image of the Bento, such as the download URL. Created by the user. -- [Bento](https://docs.bentoml.com/projects/yatai/en/latest/concepts/bento_crd.html) - Describes the metadata for the Bento such as the address of the image and the runners. Created by users or by the `yatai-image-builder` operator for reconsiliating `BentoRequest` resources. -- [BentoDeployment](https://docs.bentoml.com/projects/yatai/en/latest/concepts/bentodeployment_crd.html) - Describes the metadata of the deployment such as resources and autoscaling behaviors. Reconciled by the `yatai-deployment` operator to create Kubernetes deployments of API Servers and Runners. - -![image](https://raw.githubusercontent.com/bentoml/BentoML/main/docs/source/_static/img/kubeflow-crds.png) - -Next, we will demonstrate two ways of deployment. - -1. Deploying using a `BentoRequest` resource by providing a Bento -2. Deploying Using a `Bento` resource by providing a pre-built container image from a Bento - -### Deploy with BentoRequest CRD - -In this workflow, we will export the Bento to a remote storage, and then use the `yatai-image-builder` operator to containerize it. Finally, we'll deploy the containerized Bento image using the `yatai-deployment` operator. Using the `yatai-image-builder` operator to download Bentos from AWS and push the containerized OCI image will require setting up the credentials of S3 bucket and container repository. See the [manifests installation guide](https://github.com/kubeflow/manifests/tree/master/contrib/bentoml) for detailed instructions. - -Push the Bento built and saved in the local Bento store to a cloud storage such as AWS S3. - -```bash -bentoml export fraud_detection:o5smnagbncigycvj s3://your_bucket/fraud_detection.bento -``` - -Apply the `BentoRequest` and `BentoDeployment` resources as defined in `deployment_from_bentorequest.yaml` included in this example. - -```bash -kubectl apply -f deployment_from_bentorequest.yaml -``` - -Once the resources are created, the `yatai-image-builder` operator will reconcile the `BentoRequest` resource and spawn a pod to download and build the container image from the provided Bento defined in the resource. The `yatai-image-builder` operator will push the built image to the container registry specified during the installation and create a `Bento` resource with the same name. At the same time, the `yatai-deployment` operator will reconcile the `BentoDeployment` resource with the provided name and create Kubernetes deployments of API Servers and Runners from the container image specified in the `Bento` resource. - -### Deploym with Bento CRD - -In this workflow, we'll create an OCI image from a Bento and upload the image to a container repository. After that, we'll use the `yatai-deployment` operator to deploy the Bento OCI image. - -Containerize the image through `containerize` sub-command. - -```bash -bentoml containerize fraud_detection:o5smnagbncigycvj -t your-username/fraud_detection:o5smnagbncigycvj -``` - -Push the containerized Bento image to a remote repository of your choice. - -```bash -docker push your-username/fraud_detection:o5smnagbncigycvj -``` - -Apply the `Bento` and `BentoDeployment` resources as defined in `deployment_from_bento.yaml` file included in this example. - -```bash -kubectl apply -f deployment_from_bento.yaml -``` - -Once the resources are created, the `yatai-deployment` operator will reconcile the `BentoDeployment` resource with the provided name and create Kubernetes deployments of API Servers and Runners from the container image specified in the `Bento` resource. - -## Verify Deployment - -Verify the deployment of API Servers and Runners. Note that API server and runners are run in separate pods and created in separate deployments that can be scaled independently. - -```bash -kubectl -n kubeflow get pods -l yatai.ai/bento-deployment=fraud-detection - -NAME READY STATUS RESTARTS AGE -fraud-detection-67f84686c4-9zzdz 4/4 Running 0 10s -fraud-detection-runner-0-86dc8b5c57-q4c9f 3/3 Running 0 10s -fraud-detection-runner-1-846bdfcf56-c5g6m 3/3 Running 0 10s -fraud-detection-runner-2-6d48794b7-xws4j 3/3 Running 0 10s -``` - -![image](https://raw.githubusercontent.com/bentoml/BentoML/main/docs/source/_static/img/kubeflow-fraud-detection.png) - -Port forward the Fraud Detection service to test locally. You should be able to visit the Swagger page of the service by requesting http://0.0.0.0:8080 while port forwarding. - -```bash -kubectl -n kubeflow port-forward svc/fraud-detection 8080:3000 --address 0.0.0.0 -``` - -## Conclusion - -Congratulations! You completed the example. Let's recap what we have learned. - -- Trained three fraud detection models and saved them to the BentoML model store. -- Created a BentoML service that runs inferences on all three models simultaneously, combines and returns the results. -- Containerized the BentoML service into an OCI image and pushed the image to a remote repository. -- Created BentoML CRDs on Kubernetes to deploy the Bento in a microservice architecture. diff --git a/examples/kubeflow/bentofile.yaml b/examples/kubeflow/bentofile.yaml deleted file mode 100644 index fe1ea327ee9..00000000000 --- a/examples/kubeflow/bentofile.yaml +++ /dev/null @@ -1,6 +0,0 @@ -service: "service:svc" -include: -- "service.py" -- "sample.py" -python: - requirements_txt: ./requirements.txt diff --git a/examples/kubeflow/deployment_from_bento.yaml b/examples/kubeflow/deployment_from_bento.yaml deleted file mode 100644 index 8ddb69772a4..00000000000 --- a/examples/kubeflow/deployment_from_bento.yaml +++ /dev/null @@ -1,97 +0,0 @@ -apiVersion: resources.yatai.ai/v1alpha1 -kind: Bento -metadata: - name: fraud-detection - namespace: kubeflow -spec: - image: docker.io/bentoml/fraud_detection:o5smnagbncigycvj - runners: - - name: ieee-fraud-detection-0 - runnableType: XGBoost - - name: ieee-fraud-detection-1 - runnableType: XGBoost - - name: ieee-fraud-detection-2 - runnableType: XGBoost - tag: fraud_detection:o5smnagbncigycvj ---- -apiVersion: serving.yatai.ai/v2alpha1 -kind: BentoDeployment -metadata: - name: fraud-detection - namespace: kubeflow -spec: - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - bento: fraud-detection - ingress: - enabled: false - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - runners: - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-0 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-1 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-2 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi diff --git a/examples/kubeflow/deployment_from_bentorequest.yaml b/examples/kubeflow/deployment_from_bentorequest.yaml deleted file mode 100644 index a3a92efe878..00000000000 --- a/examples/kubeflow/deployment_from_bentorequest.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: resources.yatai.ai/v1alpha1 -kind: BentoRequest -metadata: - name: fraud-detection - namespace: kubeflow -spec: - bentoTag: fraud_detection:o5smnagbncigycvj - downloadUrl: s3://bentoml.com/kubeflow/fraud_detection.bento - runners: - - name: ieee-fraud-detection-0 - - name: ieee-fraud-detection-1 - - name: ieee-fraud-detection-2 ---- -apiVersion: serving.yatai.ai/v2alpha1 -kind: BentoDeployment -metadata: - name: fraud-detection - namespace: kubeflow -spec: - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - bento: fraud-detection - ingress: - enabled: false - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - runners: - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-0 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-1 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi - - autoscaling: - maxReplicas: 2 - metrics: - - resource: - name: cpu - target: - averageUtilization: 80 - type: Utilization - type: Resource - minReplicas: 1 - name: ieee-fraud-detection-2 - resources: - limits: - cpu: 1000m - memory: 1024Mi - requests: - cpu: 100m - memory: 200Mi diff --git a/examples/kubeflow/notebook.ipynb b/examples/kubeflow/notebook.ipynb deleted file mode 100644 index 5ec3c47f0f1..00000000000 --- a/examples/kubeflow/notebook.ipynb +++ /dev/null @@ -1,355 +0,0 @@ -{ - "cells": [ - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# BentoML Kubeflow Notebook Example\n", - "\n", - "In this example, we will train three fraud detection models using the [Kaggle IEEE-CIS Fraud Detection dataset](https://www.kaggle.com/c/ieee-fraud-detection) using the Kubeflow notebook and create a BentoML service that simultaneously invoke all three models and returns the decision if any one of the models predicts that a transactin is a fraud. We will build and push the BentoML service to an S3 bucket. Next we will containerize BentoML service from the S3 bucket and deploy the service to Kubeflow cluster using using BentoML custom resource definitions on Kubernetes. The service will be deployed in a microservice architecture with each model running in a separate pod, deployed on hardware that is the most ideal for running the model, and scale independently." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Prerequisites\n", - "\n", - "This guide assume that Kubeflow is already installed in Kubernetes cluster. See [Kubeflow Manifests](https://github.com/kubeflow/manifests) for installation instructions.\n", - "\n", - "Install BentoML cloud native components and custom resource definitions." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! kustomize build bentoml-yatai-stack/default | kubectl apply -n kubeflow --server-side -f -" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Install the required packages to run this example." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! pip install -r requirements.txt" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Download Kaggle Dataset\n", - "\n", - "Set Kaggle username and key as environment variables. Accepting the [rules of the competition](https://www.kaggle.com/competitions/ieee-fraud-detection/rules) is required for downloading the dataset." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Set Kaggle Credentials for downloading dataset\n", - "%env KAGGLE_USERNAME=\n", - "%env KAGGLE_KEY=" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!kaggle competitions download -c ieee-fraud-detection\n", - "!rm -rf ./data/\n", - "!unzip -d ./data/ ieee-fraud-detection.zip && rm ieee-fraud-detection.zip" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Train Models\n", - "\n", - "In this demonstration, we'll train three fraud detection models using the Kaggle IEEE-CIS Fraud Detection dataset. To showcase saving and serving multiple models with Kubeflow and BentoML, we'll split the dataset into three equal-sized chunks and use each chunk to train a separate model. While this approach has no practical benefits, it will help illustrate how to save and serve multiple models with Kubeflow and BentoML." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "\n", - "df_transactions = pd.read_csv(\"./data/train_transaction.csv\")\n", - "\n", - "X = df_transactions.drop(columns=[\"isFraud\"])\n", - "y = df_transactions.isFraud" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "from sklearn.impute import SimpleImputer\n", - "from sklearn.compose import ColumnTransformer\n", - "from sklearn.impute import SimpleImputer\n", - "from sklearn.preprocessing import OrdinalEncoder\n", - "\n", - "numeric_features = df_transactions.select_dtypes(include=\"float64\").columns\n", - "categorical_features = df_transactions.select_dtypes(include=\"object\").columns\n", - "\n", - "preprocessor = ColumnTransformer(\n", - " transformers=[\n", - " (\"num\", SimpleImputer(strategy=\"median\"), numeric_features),\n", - " (\n", - " \"cat\",\n", - " OrdinalEncoder(handle_unknown=\"use_encoded_value\", unknown_value=-1),\n", - " categorical_features,\n", - " ),\n", - " ],\n", - " verbose_feature_names_out=False,\n", - " remainder=\"passthrough\",\n", - ")\n", - "\n", - "X = preprocessor.fit_transform(X)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Define our training function with the number of boosting rounds and maximum depths." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "import xgboost as xgb\n", - "\n", - "\n", - "def train(n_estimators, max_depth, X_train, y_train, X_test, y_test):\n", - " return xgb.XGBClassifier(\n", - " tree_method=\"hist\",\n", - " n_estimators=n_estimators,\n", - " max_depth=max_depth,\n", - " eval_metric=\"aucpr\",\n", - " objective=\"binary:logistic\",\n", - " enable_categorical=True,\n", - " ).fit(X_train, y_train, eval_set=[(X_test, y_test)])" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We will divide the training data into three equal-sized chunks and treat them as independent data sets. Based on these data sets, we will train three separate fraud detection models. The trained model will be saved to the local model store using BentoML model saving API." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import bentoml\n", - "\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "CHUNKS = 3\n", - "CHUNK_SIZE = len(X) // CHUNKS\n", - "\n", - "for i in range(CHUNKS):\n", - " START = i * CHUNK_SIZE\n", - " END = (i + 1) * CHUNK_SIZE\n", - " X_train, X_test, y_train, y_test = train_test_split(X[START:END], y[START:END])\n", - "\n", - " name = f\"ieee-fraud-detection-{i}\"\n", - " model = train(100, 5, X_train, y_train, X_test, y_test)\n", - " score = model.score(X_test, y_test)\n", - " print(f\"Successfully trained model {name} with score {score}.\")\n", - "\n", - " bentoml.xgboost.save_model(\n", - " name,\n", - " model,\n", - " signatures={\n", - " \"predict_proba\": {\"batchable\": True},\n", - " },\n", - " custom_objects={\"preprocessor\": preprocessor},\n", - " )\n", - " print(f\"Successfully saved model {name} to the local model store.\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Saved models can be loaded back into the memory and debugged in the notebook." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import bentoml\n", - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "model_ref = bentoml.xgboost.get(\"ieee-fraud-detection-0:latest\")\n", - "model_runner = model_ref.to_runner()\n", - "model_runner.init_local()\n", - "model_preprocessor = model_ref.custom_objects[\"preprocessor\"]\n", - "\n", - "test_transactions = pd.read_csv(\"./data/test_transaction.csv\")[0:500]\n", - "test_transactions = model_preprocessor.transform(test_transactions)\n", - "result = model_runner.predict_proba.run(test_transactions)\n", - "np.argmax(result, axis=1)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Define Service API\n", - "\n", - "After the models are built and scored, let's create the service definition. You can find the service definition in the `service.py` module in this example. Let's breakdown the `service.py` module and explain what each section does.\n", - "\n", - "First, we will create a list of preprocessors and runners from the three models we saved earlier. Runners are abstractions of the model inferences that can be scaled independently. See [Using Runners](https://docs.bentoml.com/en/latest/concepts/runner.html) for more details.\n", - "\n", - "```python\n", - "fraud_detection_preprocessors = []\n", - "fraud_detection_runners = []\n", - "\n", - "for model_name in [\"ieee-fraud-detection-0\", \"ieee-fraud-detection-1\", \"ieee-fraud-detection-2\"]:\n", - " model_ref = bentoml.xgboost.get(model_name)\n", - " fraud_detection_preprocessors.append(model_ref.custom_objects[\"preprocessor\"])\n", - " fraud_detection_runners.append(model_ref.to_runner())\n", - "```\n", - "\n", - "Next, we will create a service with the list of runners passed in.\n", - "\n", - "```python\n", - "svc = bentoml.Service(\"fraud_detection\", runners=fraud_detection_runners)\n", - "```\n", - "\n", - "Finally, we will create the API function `is_fraud`. We'll use the `@api` decorator to declare that the function is an API and specify the input and output types as pandas.DataFrame and JSON, respectively. The function is defined as `async` so that the inference calls to the runners can happen simultaneously without waiting for the results to return before calling the next runner. The inner function `_is_fraud` defines the model inference logic for each runner. All runners are called simultaneously through the `asyncio.gather` function and the results are aggregated into a list. The function will return True if any of the models return True.\n", - "\n", - "For more about service definitinos, please see [Service and APIs](https://docs.bentoml.com/en/latest/concepts/service.html)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Build Service\n", - "\n", - "Building the service and models into a bento allows it to be distributed among collaborators, containerized into a OCI image, and deployed in the Kubernetes cluster. To build a service into a bento, we first need to define the `bentofile.yaml` file. See [Building Bentos](https://docs.bentoml.com/en/latest/concepts/bento.html) for more options.\n", - "\n", - "```yaml\n", - "service: \"service:svc\"\n", - "include:\n", - "- \"service.py\"\n", - "- \"sample.py\"\n", - "python:\n", - " requirements_txt: ./requirements.txt\n", - "```\n", - "\n", - "Running the following command will build the service into a bento and store it to the local bento store." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! bentoml build" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Serve Bento\n", - "\n", - "Serving the bento will bring up a service endpoint in HTTP or gRPC for the service API we defined. Use `--help` to see more serving options." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "! bentoml serve-http --production" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Deploy to Kubernetes Cluster\n", - "\n", - "Great work! You have successfully built and tested the Fraud Detection Bento. Next, we will deploy the bento to the Kubernetes cluster. Proceed to the README of the example for the next steps." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "bentoml", - "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.10.8" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "c7496e3357ac7d0feefccc058dccef5f5223d152b10dff998de4314227246f61" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/kubeflow/requirements.txt b/examples/kubeflow/requirements.txt deleted file mode 100644 index 554e7078591..00000000000 --- a/examples/kubeflow/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -bentoml -numpy==1.23.5 -pandas==1.5.2 -xgboost==1.7.4 -scikit-learn==1.1.3 diff --git a/examples/kubeflow/sample.py b/examples/kubeflow/sample.py deleted file mode 100644 index be08f55910e..00000000000 --- a/examples/kubeflow/sample.py +++ /dev/null @@ -1,401 +0,0 @@ -import pandas as pd - -sample_json = [ - { - "TransactionID": 2987000, - "TransactionDT": 86400, - "TransactionAmt": 68.5, - "ProductCD": "W", - "card1": 13926, - "card2": None, - "card3": 150.0, - "card4": "discover", - "card5": 142.0, - "card6": "credit", - "addr1": 315.0, - "addr2": 87.0, - "dist1": 19.0, - "dist2": None, - "P_emaildomain": None, - "R_emaildomain": None, - "C1": 1.0, - "C2": 1.0, - "C3": 0.0, - "C4": 0.0, - "C5": 0.0, - "C6": 1.0, - "C7": 0.0, - "C8": 0.0, - "C9": 1.0, - "C10": 0.0, - "C11": 2.0, - "C12": 0.0, - "C13": 1.0, - "C14": 1.0, - "D1": 14.0, - "D2": None, - "D3": 13.0, - "D4": None, - "D5": None, - "D6": None, - "D7": None, - "D8": None, - "D9": None, - "D10": 13.0, - "D11": 13.0, - "D12": None, - "D13": None, - "D14": None, - "D15": 0.0, - "M1": "T", - "M2": "T", - "M3": "T", - "M4": "M2", - "M5": "F", - "M6": "T", - "M7": None, - "M8": None, - "M9": None, - "V1": 1.0, - "V2": 1.0, - "V3": 1.0, - "V4": 1.0, - "V5": 1.0, - "V6": 1.0, - "V7": 1.0, - "V8": 1.0, - "V9": 1.0, - "V10": 0.0, - "V11": 0.0, - "V12": 1.0, - "V13": 1.0, - "V14": 1.0, - "V15": 0.0, - "V16": 0.0, - "V17": 0.0, - "V18": 0.0, - "V19": 1.0, - "V20": 1.0, - "V21": 0.0, - "V22": 0.0, - "V23": 1.0, - "V24": 1.0, - "V25": 1.0, - "V26": 1.0, - "V27": 0.0, - "V28": 0.0, - "V29": 0.0, - "V30": 0.0, - "V31": 0.0, - "V32": 0.0, - "V33": 0.0, - "V34": 0.0, - "V35": None, - "V36": None, - "V37": None, - "V38": None, - "V39": None, - "V40": None, - "V41": None, - "V42": None, - "V43": None, - "V44": None, - "V45": None, - "V46": None, - "V47": None, - "V48": None, - "V49": None, - "V50": None, - "V51": None, - "V52": None, - "V53": 1.0, - "V54": 1.0, - "V55": 1.0, - "V56": 1.0, - "V57": 0.0, - "V58": 0.0, - "V59": 0.0, - "V60": 0.0, - "V61": 1.0, - "V62": 1.0, - "V63": 0.0, - "V64": 0.0, - "V65": 1.0, - "V66": 1.0, - "V67": 1.0, - "V68": 0.0, - "V69": 0.0, - "V70": 0.0, - "V71": 0.0, - "V72": 0.0, - "V73": 0.0, - "V74": 0.0, - "V75": 1.0, - "V76": 1.0, - "V77": 1.0, - "V78": 1.0, - "V79": 0.0, - "V80": 0.0, - "V81": 0.0, - "V82": 0.0, - "V83": 0.0, - "V84": 0.0, - "V85": 0.0, - "V86": 1.0, - "V87": 1.0, - "V88": 1.0, - "V89": 0.0, - "V90": 0.0, - "V91": 0.0, - "V92": 0.0, - "V93": 0.0, - "V94": 0.0, - "V95": 0.0, - "V96": 1.0, - "V97": 0.0, - "V98": 0.0, - "V99": 0.0, - "V100": 0.0, - "V101": 0.0, - "V102": 1.0, - "V103": 0.0, - "V104": 0.0, - "V105": 0.0, - "V106": 0.0, - "V107": 1.0, - "V108": 1.0, - "V109": 1.0, - "V110": 1.0, - "V111": 1.0, - "V112": 1.0, - "V113": 1.0, - "V114": 1.0, - "V115": 1.0, - "V116": 1.0, - "V117": 1.0, - "V118": 1.0, - "V119": 1.0, - "V120": 1.0, - "V121": 1.0, - "V122": 1.0, - "V123": 1.0, - "V124": 1.0, - "V125": 1.0, - "V126": 0.0, - "V127": 117.0, - "V128": 0.0, - "V129": 0.0, - "V130": 0.0, - "V131": 0.0, - "V132": 0.0, - "V133": 117.0, - "V134": 0.0, - "V135": 0.0, - "V136": 0.0, - "V137": 0.0, - "V138": None, - "V139": None, - "V140": None, - "V141": None, - "V142": None, - "V143": None, - "V144": None, - "V145": None, - "V146": None, - "V147": None, - "V148": None, - "V149": None, - "V150": None, - "V151": None, - "V152": None, - "V153": None, - "V154": None, - "V155": None, - "V156": None, - "V157": None, - "V158": None, - "V159": None, - "V160": None, - "V161": None, - "V162": None, - "V163": None, - "V164": None, - "V165": None, - "V166": None, - "V167": None, - "V168": None, - "V169": None, - "V170": None, - "V171": None, - "V172": None, - "V173": None, - "V174": None, - "V175": None, - "V176": None, - "V177": None, - "V178": None, - "V179": None, - "V180": None, - "V181": None, - "V182": None, - "V183": None, - "V184": None, - "V185": None, - "V186": None, - "V187": None, - "V188": None, - "V189": None, - "V190": None, - "V191": None, - "V192": None, - "V193": None, - "V194": None, - "V195": None, - "V196": None, - "V197": None, - "V198": None, - "V199": None, - "V200": None, - "V201": None, - "V202": None, - "V203": None, - "V204": None, - "V205": None, - "V206": None, - "V207": None, - "V208": None, - "V209": None, - "V210": None, - "V211": None, - "V212": None, - "V213": None, - "V214": None, - "V215": None, - "V216": None, - "V217": None, - "V218": None, - "V219": None, - "V220": None, - "V221": None, - "V222": None, - "V223": None, - "V224": None, - "V225": None, - "V226": None, - "V227": None, - "V228": None, - "V229": None, - "V230": None, - "V231": None, - "V232": None, - "V233": None, - "V234": None, - "V235": None, - "V236": None, - "V237": None, - "V238": None, - "V239": None, - "V240": None, - "V241": None, - "V242": None, - "V243": None, - "V244": None, - "V245": None, - "V246": None, - "V247": None, - "V248": None, - "V249": None, - "V250": None, - "V251": None, - "V252": None, - "V253": None, - "V254": None, - "V255": None, - "V256": None, - "V257": None, - "V258": None, - "V259": None, - "V260": None, - "V261": None, - "V262": None, - "V263": None, - "V264": None, - "V265": None, - "V266": None, - "V267": None, - "V268": None, - "V269": None, - "V270": None, - "V271": None, - "V272": None, - "V273": None, - "V274": None, - "V275": None, - "V276": None, - "V277": None, - "V278": None, - "V279": 0.0, - "V280": 0.0, - "V281": 0.0, - "V282": 1.0, - "V283": 1.0, - "V284": 0.0, - "V285": 0.0, - "V286": 0.0, - "V287": 0.0, - "V288": 0.0, - "V289": 0.0, - "V290": 1.0, - "V291": 1.0, - "V292": 1.0, - "V293": 0.0, - "V294": 1.0, - "V295": 0.0, - "V296": 0.0, - "V297": 0.0, - "V298": 0.0, - "V299": 0.0, - "V300": 0.0, - "V301": 0.0, - "V302": 0.0, - "V303": 0.0, - "V304": 0.0, - "V305": 1.0, - "V306": 0.0, - "V307": 117.0, - "V308": 0.0, - "V309": 0.0, - "V310": 0.0, - "V311": 0.0, - "V312": 0.0, - "V313": 0.0, - "V314": 0.0, - "V315": 0.0, - "V316": 0.0, - "V317": 117.0, - "V318": 0.0, - "V319": 0.0, - "V320": 0.0, - "V321": 0.0, - "V322": None, - "V323": None, - "V324": None, - "V325": None, - "V326": None, - "V327": None, - "V328": None, - "V329": None, - "V330": None, - "V331": None, - "V332": None, - "V333": None, - "V334": None, - "V335": None, - "V336": None, - "V337": None, - "V338": None, - "V339": None, - } -] - -sample_input = pd.DataFrame(sample_json) diff --git a/examples/kubeflow/service.py b/examples/kubeflow/service.py deleted file mode 100644 index 8914e7e75c5..00000000000 --- a/examples/kubeflow/service.py +++ /dev/null @@ -1,45 +0,0 @@ -import asyncio - -import numpy as np -import pandas as pd -from sample import sample_input - -import bentoml -from bentoml.io import JSON -from bentoml.io import PandasDataFrame - -fraud_detection_preprocessors = [] -fraud_detection_runners = [] - -for model_name in [ - "ieee-fraud-detection-0", - "ieee-fraud-detection-1", - "ieee-fraud-detection-2", -]: - model_ref = bentoml.xgboost.get(model_name) - fraud_detection_preprocessors.append(model_ref.custom_objects["preprocessor"]) - fraud_detection_runners.append(model_ref.to_runner()) - -svc = bentoml.Service("fraud_detection", runners=fraud_detection_runners) - - -@svc.api(input=PandasDataFrame.from_sample(sample_input), output=JSON()) -async def is_fraud(input_df: pd.DataFrame): - input_df = input_df.astype(sample_input.dtypes) - - async def _is_fraud(preprocessor, runner, input_df): - input_features = preprocessor.transform(input_df) - results = await runner.predict_proba.async_run(input_features) - predictions = np.argmax(results, axis=1) # 0 is not fraud, 1 is fraud - return bool(predictions[0]) - - # Simultaeously run all models - results = await asyncio.gather( - *[ - _is_fraud(p, r, input_df) - for p, r in zip(fraud_detection_preprocessors, fraud_detection_runners) - ] - ) - - # Return fraud if at least one model returns fraud - return any(results) diff --git a/examples/mlflow/.gitignore b/examples/mlflow/.gitignore deleted file mode 100644 index c0e11754a0b..00000000000 --- a/examples/mlflow/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -**/mlruns/ -**/mlartifacts/ -**/outputs/ -**/mlruns.db -**/data/ -**/0/ diff --git a/examples/mlflow/keras/train.py b/examples/mlflow/keras/train.py deleted file mode 100644 index c31fa96e68f..00000000000 --- a/examples/mlflow/keras/train.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Trains and evaluate a simple MLP -on the Reuters newswire topic classification task. -""" - -# pylint: disable=no-name-in-module -# The following import and function call are the only additions to code required -# to automatically log metrics and parameters to MLflow. -import mlflow.keras -import numpy as np -from tensorflow import keras -from tensorflow.keras.datasets import reuters -from tensorflow.keras.layers import Activation -from tensorflow.keras.layers import Dense -from tensorflow.keras.layers import Dropout -from tensorflow.keras.models import Sequential -from tensorflow.keras.preprocessing.text import Tokenizer - -import bentoml - -mlflow.keras.autolog() - -max_words = 1000 -batch_size = 32 -epochs = 5 - -print("Loading data...") -(x_train, y_train), (x_test, y_test) = reuters.load_data( - num_words=max_words, test_split=0.2 -) - -print(len(x_train), "train sequences") -print(len(x_test), "test sequences") - -num_classes = np.max(y_train) + 1 -print(num_classes, "classes") - -print("Vectorizing sequence data...") -tokenizer = Tokenizer(num_words=max_words) -x_train = tokenizer.sequences_to_matrix(x_train, mode="binary") -x_test = tokenizer.sequences_to_matrix(x_test, mode="binary") -print("x_train shape:", x_train.shape) -print("x_test shape:", x_test.shape) - -print( - "Convert class vector to binary class matrix (for use with categorical_crossentropy)" -) -y_train = keras.utils.to_categorical(y_train, num_classes) -y_test = keras.utils.to_categorical(y_test, num_classes) -print("y_train shape:", y_train.shape) -print("y_test shape:", y_test.shape) - -print("Building model...") -model = Sequential() -model.add(Dense(512, input_shape=(max_words,))) -model.add(Activation("relu")) -model.add(Dropout(0.5)) -model.add(Dense(num_classes)) -model.add(Activation("softmax")) - -model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"]) - -history = model.fit( - x_train, - y_train, - batch_size=batch_size, - epochs=epochs, - verbose=1, - validation_split=0.1, -) -score = model.evaluate(x_test, y_test, batch_size=batch_size, verbose=1) -print("Test score:", score[0]) -print("Test accuracy:", score[1]) - -# Find URI to the logged MLFlow model -run_id = mlflow.last_active_run().info.run_id -artifact_path = "model" -model_uri = f"runs:/{run_id}/{artifact_path}" - -# Option 1: directly save trained model to BentoML -bento_model_1 = bentoml.keras.save_model("keras_native", model) -print("\nBentoML: model imported as native keras model: %s" % bento_model_1) - -# Option 2: Import logged MLFlow model to BentoML -bento_model_2 = bentoml.mlflow.import_model("mlflow_keras", model_uri) -print("\nBentoML: model imported as MLFlow pyfunc model: %s" % bento_model_2) - -# Option 3: loaded keras model from MLFlow artifact and save with bentoml.keras natively -loaded_keras_model = mlflow.keras.load_model(model_uri) -bento_model_3 = bentoml.keras.save_model("keras_native", loaded_keras_model) -print( - "\nBentoML: import native keras model loaded from MLflow artifact: %s" - % bento_model_3 -) - -# Test loading model from BentoML model store: -for bento_model in [ - bentoml.keras.get(bento_model_1.tag), - bentoml.mlflow.get(bento_model_2.tag), - bentoml.keras.get(bento_model_3.tag), -]: - test_runner = bento_model.to_runner() - test_runner.init_local() - assert np.allclose(test_runner.predict.run(x_test), model.predict(x_test)) diff --git a/examples/mlflow/lightgbm/MLproject b/examples/mlflow/lightgbm/MLproject deleted file mode 100644 index d3f535b7ace..00000000000 --- a/examples/mlflow/lightgbm/MLproject +++ /dev/null @@ -1,13 +0,0 @@ -name: lightgbm-example -conda_env: conda.yaml -entry_points: - main: - parameters: - learning_rate: {type: float, default: 0.1} - colsample_bytree: {type: float, default: 1.0} - subsample: {type: float, default: 1.0} - command: | - python train.py \ - --learning-rate={learning_rate} \ - --colsample-bytree={colsample_bytree} \ - --subsample={subsample} diff --git a/examples/mlflow/lightgbm/README.md b/examples/mlflow/lightgbm/README.md deleted file mode 100644 index bd8e54d263c..00000000000 --- a/examples/mlflow/lightgbm/README.md +++ /dev/null @@ -1,48 +0,0 @@ -# LightGBM Example - -This example trains a LightGBM classifier with the iris dataset and logs hyperparameters, metrics, and trained model. - -It is modified from MLFlow LightGBM native example: https://github.com/mlflow/mlflow/tree/master/examples/lightgbm/ - - -## Running the code - -``` -python train.py --colsample-bytree 0.8 --subsample 0.9 -``` -You can try experimenting with different parameter values like: -``` -python train.py --learning-rate 0.4 --colsample-bytree 0.7 --subsample 0.8 -``` - -Then you can open the MLflow UI to track the experiments and compare your runs via: -``` -mlflow ui -``` - -## Running the code as a project - -``` -mlflow run . -P learning_rate=0.2 -P colsample_bytree=0.8 -P subsample=0.9 -``` - -## Serve the model with BentoML - -``` -bentoml serve -``` - -``` -curl -X POST -H "content-type: application/json" --data "[[5.9, 3, 5.1, 1.8]]" http://127.0.0.1:3000/classify -``` - -## Build Bento for production deployment - -``` -bentoml build -``` - -Generate docker image from Bento: -``` -bentoml containerize lgb_iris_service:latest -``` diff --git a/examples/mlflow/lightgbm/bentofile.yaml b/examples/mlflow/lightgbm/bentofile.yaml deleted file mode 100644 index b256a5f087b..00000000000 --- a/examples/mlflow/lightgbm/bentofile.yaml +++ /dev/null @@ -1,5 +0,0 @@ -service: "service.py:svc" -include: -- "service.py" -conda: - environment_yml: ./conda.yaml diff --git a/examples/mlflow/lightgbm/conda.yaml b/examples/mlflow/lightgbm/conda.yaml deleted file mode 100644 index 0f117de9ae7..00000000000 --- a/examples/mlflow/lightgbm/conda.yaml +++ /dev/null @@ -1,11 +0,0 @@ -name: lightgbm-example -channels: - - conda-forge -dependencies: - - python=3.7 - - pip - - pip: - - mlflow>=1.6.0 - - matplotlib - - lightgbm - - bentoml>=1.0.0rc3 diff --git a/examples/mlflow/lightgbm/service.py b/examples/mlflow/lightgbm/service.py deleted file mode 100644 index 5f90d8a1f29..00000000000 --- a/examples/mlflow/lightgbm/service.py +++ /dev/null @@ -1,20 +0,0 @@ -import numpy as np - -import bentoml -from bentoml.io import NumpyNdarray - -lgb_iris_runner = bentoml.mlflow.get("lgb_iris:latest").to_runner() - -svc = bentoml.Service("lgb_iris_service", runners=[lgb_iris_runner]) - -input_spec = NumpyNdarray( - dtype="float64", - enforce_dtype=True, - shape=(-1, 4), - enforce_shape=True, -) - - -@svc.api(input=input_spec, output=NumpyNdarray()) -async def classify(input_series: np.ndarray) -> np.ndarray: - return await lgb_iris_runner.predict.async_run(input_series) diff --git a/examples/mlflow/lightgbm/train.py b/examples/mlflow/lightgbm/train.py deleted file mode 100644 index 4ccdbd8dd58..00000000000 --- a/examples/mlflow/lightgbm/train.py +++ /dev/null @@ -1,94 +0,0 @@ -import argparse - -import lightgbm as lgb -import matplotlib as mpl -import mlflow -import mlflow.lightgbm -from sklearn import datasets -from sklearn.metrics import accuracy_score -from sklearn.metrics import log_loss -from sklearn.model_selection import train_test_split - -import bentoml - -mpl.use("Agg") - - -def parse_args(): - parser = argparse.ArgumentParser(description="LightGBM example") - parser.add_argument( - "--learning-rate", - type=float, - default=0.1, - help="learning rate to update step size at each boosting step (default: 0.3)", - ) - parser.add_argument( - "--colsample-bytree", - type=float, - default=1.0, - help="subsample ratio of columns when constructing each tree (default: 1.0)", - ) - parser.add_argument( - "--subsample", - type=float, - default=1.0, - help="subsample ratio of the training instances (default: 1.0)", - ) - return parser.parse_args() - - -def main(): - # parse command-line arguments - args = parse_args() - - # prepare train and test data - iris = datasets.load_iris() - X = iris.data - y = iris.target - X_train, X_test, y_train, y_test = train_test_split( - X, y, test_size=0.2, random_state=42 - ) - - # enable auto logging - mlflow.lightgbm.autolog() - - train_set = lgb.Dataset(X_train, label=y_train) - - with mlflow.start_run(): - # train model - params = { - "objective": "multiclass", - "num_class": 3, - "learning_rate": args.learning_rate, - "metric": "multi_logloss", - "colsample_bytree": args.colsample_bytree, - "subsample": args.subsample, - "seed": 42, - } - model = lgb.train( - params, - train_set, - num_boost_round=10, - valid_sets=[train_set], - valid_names=["train"], - ) - - # evaluate model - y_proba = model.predict(X_test) - y_pred = y_proba.argmax(axis=1) - loss = log_loss(y_test, y_proba) - acc = accuracy_score(y_test, y_pred) - - # log metrics - mlflow.log_metrics({"log_loss": loss, "accuracy": acc}) - - # Import logged mlflow model to BentoML model store for serving: - model_uri = mlflow.get_artifact_uri("model") - bento_model = bentoml.mlflow.import_model( - "lgb_iris", model_uri, signatures={"predict": {"batchable": True}} - ) - print("Model imported to BentoML: %s" % bento_model) - - -if __name__ == "__main__": - main() diff --git a/examples/mlflow/pytorch/MLproject b/examples/mlflow/pytorch/MLproject deleted file mode 100644 index edf796d7523..00000000000 --- a/examples/mlflow/pytorch/MLproject +++ /dev/null @@ -1,25 +0,0 @@ -name: pytorch_tutorial - -conda_env: conda.yaml - -entry_points: - main: - parameters: - batch-size: {type: int, default: 64} - test-batch-size: {type: int, default: 1000} - epochs: {type: int, default: 10} - lr: {type: float, default: 0.01} - momentum: {type: float, default: 0.5} - enable-cuda: {type: string, default: 'True'} - seed: {type: int, default: 5} - log-interval: {type: int, default: 100} - command: | - python mnist_tensorboard_artifact.py \ - --batch-size {batch-size} \ - --test-batch-size {test-batch-size} \ - --epochs {epochs} \ - --lr {lr} \ - --momentum {momentum} \ - --enable-cuda {enable-cuda} \ - --seed {seed} \ - --log-interval {log-interval} diff --git a/examples/mlflow/pytorch/README.md b/examples/mlflow/pytorch/README.md deleted file mode 100644 index 2e8cdf4f35a..00000000000 --- a/examples/mlflow/pytorch/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# MLFlow + PyTorch + BentoML Example - -This example is built on https://github.com/mlflow/mlflow/tree/master/examples/pytorch - -Train a PyTorch mnist example model, log the model to mlflow and import MLFlow model to BentoML for serving. - -```bash -python mnist.py -``` - -Start the prediction service defined with BentoML in `service.py`, using the imported MLflow model: - -```bash -bentoml serve service.py:svc -``` - -Test out the serving endpoint: - -```bash -curl -X POST -H "Content-Type:application/json" \ - -d @test_input.json \ - http://localhost:3000/predict -``` - -Build Bento and containerize BentoServier for deployment: - -```bash -bentoml build - -bentoml containerize mlflow_pytorch_mnist_demo:latest -``` diff --git a/examples/mlflow/pytorch/bentofile.yaml b/examples/mlflow/pytorch/bentofile.yaml deleted file mode 100644 index 3e8bdc4168f..00000000000 --- a/examples/mlflow/pytorch/bentofile.yaml +++ /dev/null @@ -1,5 +0,0 @@ -service: "service:svc" -include: - - "service.py" -conda: - environment_yml: "./conda.yaml" diff --git a/examples/mlflow/pytorch/conda.yaml b/examples/mlflow/pytorch/conda.yaml deleted file mode 100644 index 0350289807c..00000000000 --- a/examples/mlflow/pytorch/conda.yaml +++ /dev/null @@ -1,12 +0,0 @@ -name: pytorch_example -channels: - - conda-forge -dependencies: - - python=3.7 - - pip - - pip: - - torch==1.8.1 - - torchvision==0.9.1 - - mlflow>=1.0 - - protobuf<4.0.0 - - bentoml>=1.0.0rc3 diff --git a/examples/mlflow/pytorch/mnist.py b/examples/mlflow/pytorch/mnist.py deleted file mode 100644 index 317bf085d21..00000000000 --- a/examples/mlflow/pytorch/mnist.py +++ /dev/null @@ -1,261 +0,0 @@ -# pylint: disable=redefined-outer-name -# -# Trains an MNIST digit recognizer using PyTorch, and uses tensorboardX to log training metrics -# and weights in TensorBoard event format to the MLflow run's artifact directory. This stores the -# TensorBoard events in MLflow for later access using the TensorBoard command line tool. -# -# NOTE: This example requires you to first install PyTorch (using the instructions at pytorch.org) -# and tensorboardX (using pip install tensorboardX). -# -# Code based on https://github.com/lanpa/tensorboard-pytorch-examples/blob/master/mnist/main.py. -# -# BentoML example is based on https://github.com/mlflow/mlflow/blob/master/examples/pytorch/mnist_tensorboard_artifact.py -# -import argparse -import os - -import mlflow -import mlflow.pytorch -import torch -import torch.nn as nn -import torch.nn.functional as F -import torch.optim as optim -from torchvision import datasets -from torchvision import transforms - -import bentoml - -# Command-line arguments -parser = argparse.ArgumentParser(description="PyTorch MNIST Example") -parser.add_argument( - "--batch-size", - type=int, - default=64, - metavar="N", - help="input batch size for training (default: 64)", -) -parser.add_argument( - "--test-batch-size", - type=int, - default=1000, - metavar="N", - help="input batch size for testing (default: 1000)", -) -parser.add_argument( - "--epochs", - type=int, - default=10, - metavar="N", - help="number of epochs to train (default: 10)", -) -parser.add_argument( - "--lr", type=float, default=0.01, metavar="LR", help="learning rate (default: 0.01)" -) -parser.add_argument( - "--momentum", - type=float, - default=0.5, - metavar="M", - help="SGD momentum (default: 0.5)", -) -parser.add_argument( - "--enable-cuda", - type=str, - choices=["True", "False"], - default="True", - help="enables or disables CUDA training", -) -parser.add_argument( - "--seed", type=int, default=1, metavar="S", help="random seed (default: 1)" -) -parser.add_argument( - "--log-interval", - type=int, - default=100, - metavar="N", - help="how many batches to wait before logging training status", -) -args = parser.parse_args() - -enable_cuda_flag = True if args.enable_cuda == "True" else False - -args.cuda = enable_cuda_flag and torch.cuda.is_available() - -torch.manual_seed(args.seed) -if args.cuda: - torch.cuda.manual_seed(args.seed) - -kwargs = {"num_workers": 1, "pin_memory": True} if args.cuda else {} -train_loader = torch.utils.data.DataLoader( - datasets.MNIST( - "../data", - train=True, - download=True, - transform=transforms.Compose( - [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] - ), - ), - batch_size=args.batch_size, - shuffle=True, - **kwargs, -) -test_loader = torch.utils.data.DataLoader( - datasets.MNIST( - "../data", - train=False, - transform=transforms.Compose( - [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] - ), - ), - batch_size=args.test_batch_size, - shuffle=True, - **kwargs, -) - - -class Net(nn.Module): - def __init__(self): - super().__init__() - self.conv1 = nn.Conv2d(1, 10, kernel_size=5) - self.conv2 = nn.Conv2d(10, 20, kernel_size=5) - self.conv2_drop = nn.Dropout2d() - self.fc1 = nn.Linear(320, 50) - self.fc2 = nn.Linear(50, 10) - - def forward(self, x): - x = F.relu(F.max_pool2d(self.conv1(x), 2)) - x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) - x = x.view(-1, 320) - x = F.relu(self.fc1(x)) - x = F.dropout(x, training=self.training) - x = self.fc2(x) - return F.log_softmax(x, dim=0) - - -model = Net() -if args.cuda: - model.cuda() - -optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum) - - -def train(epoch): - model.train() - for batch_idx, (data, target) in enumerate(train_loader): - if args.cuda: - data, target = data.cuda(), target.cuda() - optimizer.zero_grad() - output = model(data) - loss = F.nll_loss(output, target) - loss.backward() - optimizer.step() - if batch_idx % args.log_interval == 0: - print( - "Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}".format( - epoch, - batch_idx * len(data), - len(train_loader.dataset), - 100.0 * batch_idx / len(train_loader), - loss.data.item(), - ) - ) - step = epoch * len(train_loader) + batch_idx - log_scalar("train_loss", loss.data.item(), step) - - -def test(epoch): - model.eval() - test_loss = 0 - correct = 0 - with torch.no_grad(): - for data, target in test_loader: - if args.cuda: - data, target = data.cuda(), target.cuda() - output = model(data) - test_loss += F.nll_loss( - output, target, reduction="sum" - ).data.item() # sum up batch loss - # get the index of the max log-probability - pred = output.data.max(1)[1] - correct += pred.eq(target.data).cpu().sum().item() - - test_loss /= len(test_loader.dataset) - test_accuracy = 100.0 * correct / len(test_loader.dataset) - print( - "\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n".format( - test_loss, correct, len(test_loader.dataset), test_accuracy - ) - ) - step = (epoch + 1) * len(train_loader) - log_scalar("test_loss", test_loss, step) - log_scalar("test_accuracy", test_accuracy, step) - - -def log_scalar(name, value, _): - """Log a scalar value to both MLflow and TensorBoard""" - mlflow.log_metric(name, value) - - -if __name__ == "__main__": - with mlflow.start_run(): - # Log our parameters into mlflow - for key, value in vars(args).items(): - mlflow.log_param(key, value) - - # Perform the training - for epoch in range(1, args.epochs + 1): - train(epoch) - test(epoch) - - # Log the model as an artifact of the MLflow run. - print("\nLogging the trained model as a run artifact...") - mlflow.pytorch.log_model(model, artifact_path="pytorch-model") - print( - "\nThe model is logged at:\n%s" - % os.path.join(mlflow.get_artifact_uri(), "pytorch-model") - ) - - # Option 1: Save pytorch model directly with BentoML - bento_model_1 = bentoml.pytorch.save_model( - "pytorch-mnist", model, signatures={"__call__": {"batchable": True}} - ) - print("Pytorch Model saved with BentoML: %s" % bento_model_1) - - # make predictions with BentoML runner - model_runner_1 = bentoml.pytorch.get("pytorch-mnist:latest").to_runner() - model_runner_1.init_local() - - # Extract a few examples from the test dataset to evaluate on - eval_data, eval_labels = next(iter(test_loader)) - - predictions = model_runner_1.run(eval_data.numpy()) - template = 'Sample {} : Ground truth is "{}", model prediction is "{}"' - print("\nSample predictions") - for index in range(5): - print( - template.format(index, eval_labels[index], predictions.argmax(1)[index]) - ) - - # Option 2: Import logged mlflow model to BentoML for serving: - model_uri = mlflow.get_artifact_uri("pytorch-model") - bento_model_2 = bentoml.mlflow.import_model( - "mlflow_pytorch_mnist", - model_uri, - signatures={"predict": {"batchable": True}}, - ) - print("Model imported to BentoML: %s" % bento_model_2) - - # make predictions with BentoML runner - model_runner_2 = bentoml.mlflow.get("mlflow_pytorch_mnist:latest").to_runner() - model_runner_2.init_local() - - # Extract a few examples from the test dataset to evaluate on - eval_data, eval_labels = next(iter(test_loader)) - - predictions = model_runner_2.predict.run(eval_data.numpy()) - template = 'Sample {} : Ground truth is "{}", model prediction is "{}"' - print("\nSample predictions") - for index in range(5): - print( - template.format(index, eval_labels[index], predictions.argmax(1)[index]) - ) diff --git a/examples/mlflow/pytorch/service.py b/examples/mlflow/pytorch/service.py deleted file mode 100644 index 15a5f7e1844..00000000000 --- a/examples/mlflow/pytorch/service.py +++ /dev/null @@ -1,16 +0,0 @@ -import bentoml - -mnist_runner = bentoml.mlflow.get("mlflow_pytorch_mnist:latest").to_runner() - -svc = bentoml.Service("mlflow_pytorch_mnist_demo", runners=[mnist_runner]) - -input_spec = bentoml.io.NumpyNdarray( - dtype="float32", - shape=[-1, 1, 28, 28], - enforce_dtype=True, -) - - -@svc.api(input=input_spec, output=bentoml.io.NumpyNdarray()) -async def predict(input_arr): - return await mnist_runner.predict.async_run(input_arr) diff --git a/examples/mlflow/pytorch/test_input.json b/examples/mlflow/pytorch/test_input.json deleted file mode 100644 index 90ae733ef1d..00000000000 --- a/examples/mlflow/pytorch/test_input.json +++ /dev/null @@ -1,2360 +0,0 @@ -[ - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.3294117748737335, - 0.7254902124404907, - 0.6235294342041016, - 0.5921568870544434, - 0.23529411852359772, - 0.1411764770746231, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.8705882430076599, - 0.9960784316062927, - 0.9960784316062927, - 0.9960784316062927, - 0.9960784316062927, - 0.9450980424880981, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.7764706015586853, - 0.6666666865348816, - 0.20392157137393951, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.26274511218070984, - 0.4470588266849518, - 0.2823529541492462, - 0.4470588266849518, - 0.6392157077789307, - 0.8901960849761963, - 0.9960784316062927, - 0.8823529481887817, - 0.9960784316062927, - 0.9960784316062927, - 0.9960784316062927, - 0.9803921580314636, - 0.8980392217636108, - 0.9960784316062927, - 0.9960784316062927, - 0.5490196347236633, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.06666667014360428, - 0.25882354378700256, - 0.054901961237192154, - 0.26274511218070984, - 0.26274511218070984, - 0.26274511218070984, - 0.23137255012989044, - 0.08235294371843338, - 0.9254902005195618, - 0.9960784316062927, - 0.4156862795352936, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.32549020648002625, - 0.9921568632125854, - 0.8196078538894653, - 0.07058823853731155, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.08627451211214066, - 0.9137254953384399, - 1.0, - 0.32549020648002625, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5058823823928833, - 0.9960784316062927, - 0.9333333373069763, - 0.1725490242242813, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.23137255012989044, - 0.9764705896377563, - 0.9960784316062927, - 0.24313725531101227, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5215686559677124, - 0.9960784316062927, - 0.7333333492279053, - 0.019607843831181526, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.03529411926865578, - 0.8039215803146362, - 0.9725490212440491, - 0.22745098173618317, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.4941176474094391, - 0.9960784316062927, - 0.7137255072593689, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.29411765933036804, - 0.9843137264251709, - 0.9411764740943909, - 0.2235294133424759, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.07450980693101883, - 0.8666666746139526, - 0.9960784316062927, - 0.6509804129600525, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0117647061124444, - 0.7960784435272217, - 0.9960784316062927, - 0.8588235378265381, - 0.13725490868091583, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.14901961386203766, - 0.9960784316062927, - 0.9960784316062927, - 0.3019607961177826, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.12156862765550613, - 0.8784313797950745, - 0.9960784316062927, - 0.45098039507865906, - 0.003921568859368563, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5215686559677124, - 0.9960784316062927, - 0.9960784316062927, - 0.20392157137393951, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.239215686917305, - 0.9490196108818054, - 0.9960784316062927, - 0.9960784316062927, - 0.20392157137393951, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.4745098054409027, - 0.9960784316062927, - 0.9960784316062927, - 0.8588235378265381, - 0.1568627506494522, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.4745098054409027, - 0.9960784316062927, - 0.8117647171020508, - 0.07058823853731155, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.45490196347236633, - 0.4901960790157318, - 0.6705882549285889, - 1.0, - 1.0, - 0.5882353186607361, - 0.364705890417099, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.6627451181411743, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.8549019694328308, - 0.11764705926179886, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.6627451181411743, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.8352941274642944, - 0.5568627715110779, - 0.6901960968971252, - 0.9921568632125854, - 0.9921568632125854, - 0.47843137383461, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.20392157137393951, - 0.9803921580314636, - 0.9921568632125854, - 0.8235294222831726, - 0.125490203499794, - 0.0470588244497776, - 0.0, - 0.0235294122248888, - 0.8078431487083435, - 0.9921568632125854, - 0.5490196347236633, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.3019607961177826, - 0.9843137264251709, - 0.8235294222831726, - 0.09803921729326248, - 0.0, - 0.0, - 0.0, - 0.47843137383461, - 0.9725490212440491, - 0.9921568632125854, - 0.2549019753932953, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.12156862765550613, - 0.07058823853731155, - 0.0, - 0.0, - 0.0, - 0.0, - 0.8196078538894653, - 0.9921568632125854, - 0.9921568632125854, - 0.2549019753932953, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.4588235318660736, - 0.9686274528503418, - 0.9921568632125854, - 0.7764706015586853, - 0.03921568766236305, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.2980392277240753, - 0.9686274528503418, - 0.9921568632125854, - 0.9058823585510254, - 0.24705882370471954, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.501960813999176, - 0.9921568632125854, - 0.9921568632125854, - 0.5647059082984924, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.6901960968971252, - 0.9647058844566345, - 0.9921568632125854, - 0.6235294342041016, - 0.0470588244497776, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.09803921729326248, - 0.9176470637321472, - 0.9921568632125854, - 0.9137254953384399, - 0.13725490868091583, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.7764706015586853, - 0.9921568632125854, - 0.9921568632125854, - 0.5529412031173706, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.30588236451148987, - 0.9725490212440491, - 0.9921568632125854, - 0.7411764860153198, - 0.0470588244497776, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.07450980693101883, - 0.7843137383460999, - 0.9921568632125854, - 0.9921568632125854, - 0.5529412031173706, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5254902243614197, - 0.9921568632125854, - 0.9921568632125854, - 0.6784313917160034, - 0.0470588244497776, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.9725490212440491, - 0.9921568632125854, - 0.9921568632125854, - 0.09803921729326248, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.9725490212440491, - 0.9921568632125854, - 0.9921568632125854, - 0.16862745583057404, - 0.0784313753247261, - 0.0784313753247261, - 0.0784313753247261, - 0.0784313753247261, - 0.019607843831181526, - 0.0, - 0.019607843831181526, - 0.0784313753247261, - 0.0784313753247261, - 0.14509804546833038, - 0.5882353186607361, - 0.5882353186607361, - 0.5882353186607361, - 0.5764706134796143, - 0.03921568766236305, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.9725490212440491, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.658823549747467, - 0.5607843399047852, - 0.6509804129600525, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.48235294222831726, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.6823529601097107, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.9764705896377563, - 0.9686274528503418, - 0.9686274528503418, - 0.6627451181411743, - 0.4588235318660736, - 0.4588235318660736, - 0.2235294133424759, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.4627451002597809, - 0.48235294222831726, - 0.48235294222831726, - 0.48235294222831726, - 0.6509804129600525, - 0.9921568632125854, - 0.9921568632125854, - 0.9921568632125854, - 0.6078431606292725, - 0.48235294222831726, - 0.48235294222831726, - 0.16078431904315948, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ], - [ - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.14901961386203766, - 0.9960784316062927, - 0.4274509847164154, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.34117648005485535, - 0.9882352948188782, - 0.32156863808631897, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.529411792755127, - 0.9450980424880981, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.1764705926179886, - 0.95686274766922, - 0.5882353186607361, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.3294117748737335, - 0.9960784316062927, - 0.24705882370471954, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.7921568751335144, - 0.8745098114013672, - 0.04313725605607033, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.125490203499794, - 0.9960784316062927, - 0.8470588326454163, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.37254902720451355, - 0.9960784316062927, - 0.7647058963775635, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5490196347236633, - 0.9960784316062927, - 0.3019607961177826, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.2235294133424759, - 0.929411768913269, - 0.8039215803146362, - 0.0313725508749485, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.48627451062202454, - 1.0, - 0.6470588445663452, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.6705882549285889, - 0.9960784316062927, - 0.3176470696926117, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0941176488995552, - 0.9098039269447327, - 0.843137264251709, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.47058823704719543, - 0.9960784316062927, - 0.6235294342041016, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5921568870544434, - 0.9960784316062927, - 0.5568627715110779, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.8941176533699036, - 0.9960784316062927, - 0.25882354378700256, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.239215686917305, - 0.9843137264251709, - 0.9960784316062927, - 0.25882354378700256, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.5529412031173706, - 0.9960784316062927, - 0.8039215803146362, - 0.0117647061124444, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.03921568766236305, - 0.843137264251709, - 0.9960784316062927, - 0.4745098054409027, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.019607843831181526, - 0.7764706015586853, - 0.6901960968971252, - 0.03921568766236305, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0, - 0.0 - ] -] diff --git a/examples/mlflow/sklearn_autolog/README.md b/examples/mlflow/sklearn_autolog/README.md deleted file mode 100644 index 84a109b1cc6..00000000000 --- a/examples/mlflow/sklearn_autolog/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Examples for scikit-learn Autologging - -Examples built upon the MLFlow autolog examples: https://github.com/mlflow/mlflow/tree/master/examples/sklearn_autolog - -| File | Description | -| :--------------------------------------------- | :-------------------------------------------------- | -| [linear_regression.py](./linear_regression.py) | Train a [LinearRegression][lr] model | -| [pipeline.py](./pipeline.py) | Train a [Pipeline][pipe] model | -| [grid_search_cv.py](./grid_search_cv.py) | Perform a parameter search using [GridSearchCV][gs] | - -[lr]: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html -[pipe]: https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html -[gs]: https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html diff --git a/examples/mlflow/sklearn_autolog/grid_search_cv.py b/examples/mlflow/sklearn_autolog/grid_search_cv.py deleted file mode 100644 index 10693792002..00000000000 --- a/examples/mlflow/sklearn_autolog/grid_search_cv.py +++ /dev/null @@ -1,48 +0,0 @@ -from pprint import pprint - -import mlflow -import pandas as pd -from sklearn import datasets -from sklearn import svm -from sklearn.model_selection import GridSearchCV -from utils import fetch_logged_data - -import bentoml - - -def main(): - mlflow.sklearn.autolog() - - iris = datasets.load_iris() - parameters = {"kernel": ("linear", "rbf"), "C": [1, 10]} - svc = svm.SVC() - clf = GridSearchCV(svc, parameters) - - clf.fit(iris.data, iris.target) - run_id = mlflow.last_active_run().info.run_id - - # show data logged in the parent run - print("========== parent run ==========") - for key, data in fetch_logged_data(run_id).items(): - print("\n---------- logged {} ----------".format(key)) - pprint(data) - - # show data logged in the child runs - filter_child_runs = "tags.mlflow.parentRunId = '{}'".format(run_id) - runs = mlflow.search_runs(filter_string=filter_child_runs) - param_cols = ["params.{}".format(p) for p in parameters.keys()] - metric_cols = ["metrics.mean_test_score"] - - print("\n========== child runs ==========\n") - pd.set_option("display.max_columns", None) # prevent truncating columns - print(runs[["run_id", *param_cols, *metric_cols]]) - - # import only the best_estimator artifact to BentoML - artifact_path = "best_estimator" - model_uri = f"runs:/{run_id}/{artifact_path}" - bento_model = bentoml.mlflow.import_model("sklearn_gs_iris", model_uri) - print("\nModel imported to BentoML: %s" % bento_model) - - -if __name__ == "__main__": - main() diff --git a/examples/mlflow/sklearn_autolog/linear_regression.py b/examples/mlflow/sklearn_autolog/linear_regression.py deleted file mode 100644 index 052680fc1fb..00000000000 --- a/examples/mlflow/sklearn_autolog/linear_regression.py +++ /dev/null @@ -1,38 +0,0 @@ -from pprint import pprint - -import mlflow -import numpy as np -from sklearn.linear_model import LinearRegression -from utils import fetch_logged_data - -import bentoml - - -def main(): - # enable autologging - mlflow.sklearn.autolog() - - # prepare training data - X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) - y = np.dot(X, np.array([1, 2])) + 3 - - # train a model - model = LinearRegression() - model.fit(X, y) - run_id = mlflow.last_active_run().info.run_id - print("Logged data and model in run {}".format(run_id)) - - # show logged data - for key, data in fetch_logged_data(run_id).items(): - print("\n---------- logged {} ----------".format(key)) - pprint(data) - - # import logged MLFlow model to BentoML - artifact_path = "model" - model_uri = f"runs:/{run_id}/{artifact_path}" - bento_model = bentoml.mlflow.import_model("logistic_regression_model", model_uri) - print("\nModel imported to BentoML: %s" % bento_model) - - -if __name__ == "__main__": - main() diff --git a/examples/mlflow/sklearn_autolog/pipeline.py b/examples/mlflow/sklearn_autolog/pipeline.py deleted file mode 100644 index d18c6e9f250..00000000000 --- a/examples/mlflow/sklearn_autolog/pipeline.py +++ /dev/null @@ -1,40 +0,0 @@ -from pprint import pprint - -import mlflow -import numpy as np -from sklearn.linear_model import LinearRegression -from sklearn.pipeline import Pipeline -from sklearn.preprocessing import StandardScaler -from utils import fetch_logged_data - -import bentoml - - -def main(): - # enable autologging - mlflow.sklearn.autolog() - - # prepare training data - X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) - y = np.dot(X, np.array([1, 2])) + 3 - - # train a model - pipe = Pipeline([("scaler", StandardScaler()), ("lr", LinearRegression())]) - pipe.fit(X, y) - run_id = mlflow.last_active_run().info.run_id - print("Logged data and model in run: {}".format(run_id)) - - # show logged data - for key, data in fetch_logged_data(run_id).items(): - print("\n---------- logged {} ----------".format(key)) - pprint(data) - - # import logged MLFlow model to BentoML - artifact_path = "model" - model_uri = f"runs:/{run_id}/{artifact_path}" - bento_model = bentoml.mlflow.import_model("pipeline_model", model_uri) - print("\nModel imported to BentoML: %s" % bento_model) - - -if __name__ == "__main__": - main() diff --git a/examples/mlflow/sklearn_autolog/utils.py b/examples/mlflow/sklearn_autolog/utils.py deleted file mode 100644 index 95d8e46721f..00000000000 --- a/examples/mlflow/sklearn_autolog/utils.py +++ /dev/null @@ -1,26 +0,0 @@ -from mlflow.tracking import MlflowClient - - -def yield_artifacts(run_id, path=None): - """Yield all artifacts in the specified run""" - client = MlflowClient() - for item in client.list_artifacts(run_id, path): - if item.is_dir: - yield from yield_artifacts(run_id, item.path) - else: - yield item.path - - -def fetch_logged_data(run_id): - """Fetch params, metrics, tags, and artifacts in the specified run""" - client = MlflowClient() - data = client.get_run(run_id).data - # Exclude system tags: https://www.mlflow.org/docs/latest/tracking.html#system-tags - tags = {k: v for k, v in data.tags.items() if not k.startswith("mlflow.")} - artifacts = list(yield_artifacts(run_id)) - return { - "params": data.params, - "metrics": data.metrics, - "tags": tags, - "artifacts": artifacts, - } diff --git a/examples/mlflow/sklearn_logistic_regression/MLproject b/examples/mlflow/sklearn_logistic_regression/MLproject deleted file mode 100644 index f7ebb4ea326..00000000000 --- a/examples/mlflow/sklearn_logistic_regression/MLproject +++ /dev/null @@ -1,7 +0,0 @@ -name: sklearn_logistic_example - -conda_env: conda.yaml - -entry_points: - main: - command: "python train.py" diff --git a/examples/mlflow/sklearn_logistic_regression/conda.yaml b/examples/mlflow/sklearn_logistic_regression/conda.yaml deleted file mode 100644 index 9b876c82fb3..00000000000 --- a/examples/mlflow/sklearn_logistic_regression/conda.yaml +++ /dev/null @@ -1,11 +0,0 @@ -name: sklearn-example -channels: - - conda-forge -dependencies: - - python=3.8 - - pip - - pip: - - mlflow>=1.0 - - scipy - - scikit-learn - - bentoml>=1.0.0rc3 diff --git a/examples/mlflow/sklearn_logistic_regression/train.py b/examples/mlflow/sklearn_logistic_regression/train.py deleted file mode 100644 index 13df8ee6f30..00000000000 --- a/examples/mlflow/sklearn_logistic_regression/train.py +++ /dev/null @@ -1,23 +0,0 @@ -import mlflow -import mlflow.sklearn -import numpy as np -from sklearn.linear_model import LogisticRegression - -import bentoml - -if __name__ == "__main__": - X = np.array([-2, -1, 0, 1, 2, 1]).reshape(-1, 1) - y = np.array([0, 0, 1, 1, 1, 0]) - lr = LogisticRegression() - lr.fit(X, y) - score = lr.score(X, y) - print("Score: %s" % score) - mlflow.log_metric("score", score) - logged_model = mlflow.sklearn.log_model(lr, "model") - print("Model saved in run %s" % mlflow.active_run().info.run_uuid) - - # Import logged mlflow model to BentoML model store for serving: - bento_model = bentoml.mlflow.import_model( - "logistic_regression_model", logged_model.model_uri - ) - print("Model imported to BentoML: %s" % bento_model) diff --git a/examples/mlflow/torchscript/IrisClassification/MLproject b/examples/mlflow/torchscript/IrisClassification/MLproject deleted file mode 100644 index 2141a4d166b..00000000000 --- a/examples/mlflow/torchscript/IrisClassification/MLproject +++ /dev/null @@ -1,12 +0,0 @@ -name: iris-classification - -conda_env: conda.yaml - -entry_points: - main: - parameters: - epochs: {type: int, default: 50} - - command: | - python iris_classification.py \ - --epochs {epochs} diff --git a/examples/mlflow/torchscript/IrisClassification/README.md b/examples/mlflow/torchscript/IrisClassification/README.md deleted file mode 100644 index c9cd4ee8c02..00000000000 --- a/examples/mlflow/torchscript/IrisClassification/README.md +++ /dev/null @@ -1,41 +0,0 @@ -## Iris classification example with MLflow -This example demonstrates training a classification model on the Iris dataset, scripting the model with TorchScript, logging the -scripted model to MLflow using -[``mlflow.pytorch.log_model``](https://mlflow.org/docs/latest/python_api/mlflow.pytorch.html#mlflow.pytorch.log_model), and -loading it back for inference using -[``mlflow.pytorch.load_model``](https://mlflow.org/docs/latest/python_api/mlflow.pytorch.html#mlflow.pytorch.load_model) - - -### Running the code -To run the example via MLflow, navigate to the `mlflow/examples/pytorch/torchscript/IrisClassification` directory and run the command - -``` -mlflow run . -``` - -This will run `iris_classification.py` with the default set of parameters such as `--max_epochs=5`. You can see the default value in the `MLproject` file. - -In order to run the file with custom parameters, run the command - -``` -mlflow run . -P epochs=X -``` - -where `X` is your desired value for `epochs`. - -If you have the required modules for the file and would like to skip the creation of a conda environment, add the argument `--env-manager=local`. - -``` -mlflow run . --env-manager=local -``` - -Once the code is finished executing, you can view the run's metrics, parameters, and details by running the command - -``` -mlflow ui -``` - -and navigating to [http://localhost:5000](http://localhost:5000). - -## Running against a custom tracking server -To configure MLflow to log to a custom (non-default) tracking location, set the ``MLFLOW_TRACKING_URI`` environment variable, e.g. via ``export MLFLOW_TRACKING_URI=http://localhost:5000/``. For more details, see [the docs](https://mlflow.org/docs/latest/tracking.html#where-runs-are-recorded) diff --git a/examples/mlflow/torchscript/IrisClassification/conda.yaml b/examples/mlflow/torchscript/IrisClassification/conda.yaml deleted file mode 100644 index 57dfa6e7d6e..00000000000 --- a/examples/mlflow/torchscript/IrisClassification/conda.yaml +++ /dev/null @@ -1,12 +0,0 @@ -channels: -- conda-forge -dependencies: -- python=3.8.2 -- pip -- pip: - - sklearn - - cloudpickle==1.6.0 - - boto3 - - torchvision>=0.9.1 - - torch>=1.9.0 - - bentoml>=1.0.0rc3 diff --git a/examples/mlflow/torchscript/IrisClassification/iris_classification.py b/examples/mlflow/torchscript/IrisClassification/iris_classification.py deleted file mode 100644 index 2ad22486009..00000000000 --- a/examples/mlflow/torchscript/IrisClassification/iris_classification.py +++ /dev/null @@ -1,135 +0,0 @@ -# pylint: disable=abstract-method,redefined-outer-name -import argparse - -import mlflow.pytorch -import numpy as np -import torch -import torch.nn as nn -import torch.nn.functional as F -from sklearn.datasets import load_iris -from sklearn.metrics import accuracy_score -from sklearn.model_selection import train_test_split - -import bentoml - - -class IrisClassifier(nn.Module): - def __init__(self): - super(IrisClassifier, self).__init__() - self.fc1 = nn.Linear(4, 10) - self.fc2 = nn.Linear(10, 10) - self.fc3 = nn.Linear(10, 3) - - def forward(self, x): - x = F.relu(self.fc1(x)) - x = F.relu(self.fc2(x)) - x = F.dropout(x, 0.2) - x = self.fc3(x) - return x - - -device = torch.device("cuda" if torch.cuda.is_available() else "cpu") - - -def prepare_data(): - iris = load_iris() - data = iris.data - labels = iris.target - target_names = iris.target_names - - X_train, X_test, y_train, y_test = train_test_split( - data, labels, test_size=0.2, random_state=42, shuffle=True, stratify=labels - ) - - X_train = torch.FloatTensor(X_train).to(device) - X_test = torch.FloatTensor(X_test).to(device) - y_train = torch.LongTensor(y_train).to(device) - y_test = torch.LongTensor(y_test).to(device) - - return X_train, X_test, y_train, y_test, target_names - - -def train_model(model, epochs, X_train, y_train): - criterion = nn.CrossEntropyLoss() - optimizer = torch.optim.Adam(model.parameters(), lr=0.01) - - for epoch in range(epochs): - out = model(X_train) - loss = criterion(out, y_train).to(device) - optimizer.zero_grad() - loss.backward() - optimizer.step() - - if epoch % 10 == 0: - print("number of epoch", epoch, "loss", float(loss)) - - return model - - -def test_model(model, X_test, y_test): - model.eval() - with torch.no_grad(): - predict_out = model(X_test) - _, predict_y = torch.max(predict_out, 1) - - print( - "\nprediction accuracy", - float(accuracy_score(y_test.cpu(), predict_y.cpu())), - ) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Iris Classification Torchscripted model" - ) - - parser.add_argument( - "--epochs", type=int, default=100, help="number of epochs to run (default: 100)" - ) - - args = parser.parse_args() - - model = IrisClassifier() - model = model.to(device) - X_train, X_test, y_train, y_test, target_names = prepare_data() - scripted_model = torch.jit.script(model) # scripting the model - scripted_model = train_model(scripted_model, args.epochs, X_train, y_train) - test_model(scripted_model, X_test, y_test) - - # Saving model and running inference with BentoML: - - # Option1: save natively with bentoml.torchscript_iris - bentoml.torchscript.save_model( - "torchscript_iris", scripted_model, signatures={"__call__": {"batchable": True}} - ) - model_runner = bentoml.torchscript.get("torchscript_iris").to_runner() - model_runner.init_local() - - test_input = np.array([4.4000, 3.0000, 1.3000, 0.2000], dtype="float32") - actual = "setosa" - prediction = model_runner.run(test_input) - predicted = target_names[np.argmax(prediction)] - print("\nPREDICTION RESULT: ACTUAL: {}, PREDICTED: {}".format(actual, predicted)) - - # Option2: save MLflow model and import MLflow pyfunc model to BentoML - with mlflow.start_run() as run: - # logging scripted model - mlflow.pytorch.log_model(scripted_model, "model") - - # Import logged mlflow model to BentoML model store for serving: - model_uri = mlflow.get_artifact_uri("model") - bento_model = bentoml.mlflow.import_model( - "mlflow_torch_iris", model_uri, signatures={"predict": {"batchable": True}} - ) - print(f"Model imported to BentoML: {bento_model}") - - model_runner = bentoml.mlflow.get("mlflow_torch_iris").to_runner() - model_runner.init_local() - - test_input = np.array([4.4000, 3.0000, 1.3000, 0.2000], dtype="float32") - actual = "setosa" - prediction = model_runner.predict.run(test_input) - predicted = target_names[np.argmax(prediction)] - print( - "\nPREDICTION RESULT: ACTUAL: {}, PREDICTED: {}".format(actual, predicted) - ) diff --git a/examples/mlflow/torchscript/MNIST/MLproject b/examples/mlflow/torchscript/MNIST/MLproject deleted file mode 100644 index 0c62493773c..00000000000 --- a/examples/mlflow/torchscript/MNIST/MLproject +++ /dev/null @@ -1,16 +0,0 @@ -name: mnist-torchscript - -conda_env: conda.yaml - -entry_points: - main: - parameters: - epochs: {type: int, default: 5} - batch_size: {type: int, default: 64} - learning_rate: {type: float, default: 1e-3} - - command: | - python mnist_torchscript.py \ - --epochs {epochs} \ - --batch-size {batch_size} \ - --lr {learning_rate} diff --git a/examples/mlflow/torchscript/MNIST/README.md b/examples/mlflow/torchscript/MNIST/README.md deleted file mode 100644 index b77fc226b79..00000000000 --- a/examples/mlflow/torchscript/MNIST/README.md +++ /dev/null @@ -1,48 +0,0 @@ -## MNIST example with MLflow - -This example demonstrates training of MNIST handwritten recognition model and logging it as torch scripted model. -`mlflow.pytorch.log_model()` is used to log the scripted model to MLflow and `mlflow.pytorch.load_model()` to load it from MLflow - -### Code related to MLflow: -This will log the TorchScripted model into MLflow and load the logged model. - -## Setting Tracking URI - -MLflow tracking URI can be set using the environment variable `MLFLOW_TRACKING_URI` - -Example: `export MLFLOW_TRACKING_URI=http://localhost:5000/` - -For more details - https://mlflow.org/docs/latest/tracking.html#where-runs-are-recorded - -### Running the code -To run the example via MLflow, navigate to the `mlflow/examples/pytorch/torchscript/MNIST` directory and run the command - -``` -mlflow run . -``` - -This will run `mnist_torchscript.py` with the default set of parameters such as `--max_epochs=5`. You can see the default value in the `MLproject` file. - -In order to run the file with custom parameters, run the command - -``` -mlflow run . -P epochs=X -``` - -where `X` is your desired value for `epochs`. - -If you have the required modules for the file and would like to skip the creation of a conda environment, add the argument `--env-manager=local`. - -``` -mlflow run . --env-manager=local -``` - -Once the code is finished executing, you can view the run's metrics, parameters, and details by running the command - -``` -mlflow ui -``` - -and navigating to [http://localhost:5000](http://localhost:5000). - -For more information on MLflow tracking, click [here](https://www.mlflow.org/docs/latest/tracking.html#mlflow-tracking) to view documentation. diff --git a/examples/mlflow/torchscript/MNIST/conda.yaml b/examples/mlflow/torchscript/MNIST/conda.yaml deleted file mode 100644 index e34b44613bb..00000000000 --- a/examples/mlflow/torchscript/MNIST/conda.yaml +++ /dev/null @@ -1,12 +0,0 @@ -channels: -- conda-forge -dependencies: -- python=3.8.2 -- pip -- pip: - - mlflow - - cloudpickle==1.6.0 - - boto3 - - torchvision>=0.9.1 - - torch>=1.9.0 - - bentoml>=1.0.0rc3 diff --git a/examples/mlflow/torchscript/MNIST/mnist_torchscript.py b/examples/mlflow/torchscript/MNIST/mnist_torchscript.py deleted file mode 100644 index e1f4a79a171..00000000000 --- a/examples/mlflow/torchscript/MNIST/mnist_torchscript.py +++ /dev/null @@ -1,238 +0,0 @@ -# pylint: disable=abstract-method - -import argparse - -import mlflow -import mlflow.pytorch -import numpy as np -import torch -import torch.nn as nn -import torch.nn.functional as F -import torch.optim as optim -from torch.optim.lr_scheduler import StepLR -from torchvision import datasets -from torchvision import transforms - -import bentoml - - -class Net(nn.Module): - def __init__(self): - super(Net, self).__init__() - self.conv1 = nn.Conv2d(1, 32, 3, 1) - self.conv2 = nn.Conv2d(32, 64, 3, 1) - self.dropout1 = nn.Dropout(0.25) - self.dropout2 = nn.Dropout(0.5) - self.fc1 = nn.Linear(9216, 128) - self.fc2 = nn.Linear(128, 10) - - def forward(self, x): - x = self.conv1(x) - x = F.relu(x) - x = self.conv2(x) - x = F.relu(x) - x = F.max_pool2d(x, 2) - x = self.dropout1(x) - x = torch.flatten(x, 1) - x = self.fc1(x) - x = F.relu(x) - x = self.dropout2(x) - x = self.fc2(x) - output = F.log_softmax(x, dim=1) - return output - - -def train(args, model, device, train_loader, optimizer, epoch): - model.train() - for batch_idx, (data, target) in enumerate(train_loader): - data, target = data.to(device), target.to(device) - optimizer.zero_grad() - output = model(data) - loss = F.nll_loss(output, target) - loss.backward() - optimizer.step() - if batch_idx % args.log_interval == 0: - print( - "Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}".format( - epoch, - batch_idx * len(data), - len(train_loader.dataset), - 100.0 * batch_idx / len(train_loader), - loss.item(), - ) - ) - if args.dry_run: - break - - -def test(model, device, test_loader): - model.eval() - test_loss = 0 - correct = 0 - with torch.no_grad(): - for data, target in test_loader: - data, target = data.to(device), target.to(device) - output = model(data) - # sum up batch loss - test_loss += F.nll_loss(output, target, reduction="sum").item() - # get the index of the max log-probability - pred = output.argmax(dim=1, keepdim=True) - correct += pred.eq(target.view_as(pred)).sum().item() - - test_loss /= len(test_loader.dataset) - - print( - "\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n".format( - test_loss, - correct, - len(test_loader.dataset), - 100.0 * correct / len(test_loader.dataset), - ) - ) - - -def main(): - # Training settings - parser = argparse.ArgumentParser(description="PyTorch MNIST Example") - parser.add_argument( - "--batch-size", - type=int, - default=64, - metavar="N", - help="input batch size for training (default: 64)", - ) - parser.add_argument( - "--test-batch-size", - type=int, - default=1000, - metavar="N", - help="input batch size for testing (default: 1000)", - ) - parser.add_argument( - "--epochs", - type=int, - default=14, - metavar="N", - help="number of epochs to train (default: 14)", - ) - parser.add_argument( - "--lr", - type=float, - default=1.0, - metavar="LR", - help="learning rate (default: 1.0)", - ) - parser.add_argument( - "--gamma", - type=float, - default=0.7, - metavar="M", - help="Learning rate step gamma (default: 0.7)", - ) - parser.add_argument( - "--no-cuda", action="store_true", default=False, help="disables CUDA training" - ) - parser.add_argument( - "--dry-run", - action="store_true", - default=False, - help="quickly check a single pass", - ) - parser.add_argument( - "--seed", type=int, default=1, metavar="S", help="random seed (default: 1)" - ) - parser.add_argument( - "--log-interval", - type=int, - default=10, - metavar="N", - help="how many batches to wait before logging training status", - ) - parser.add_argument( - "--save-model", - action="store_true", - default=False, - help="For Saving the current model", - ) - - args = parser.parse_args() - use_cuda = not args.no_cuda and torch.cuda.is_available() - - torch.manual_seed(args.seed) - - device = torch.device("cuda" if use_cuda else "cpu") - - train_kwargs = {"batch_size": args.batch_size} - test_kwargs = {"batch_size": args.test_batch_size} - if use_cuda: - cuda_kwargs = {"num_workers": 1, "pin_memory": True, "shuffle": True} - train_kwargs.update(cuda_kwargs) - test_kwargs.update(cuda_kwargs) - - transform = transforms.Compose( - [transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))] - ) - dataset1 = datasets.MNIST("../data", train=True, download=True, transform=transform) - dataset2 = datasets.MNIST("../data", train=False, transform=transform) - train_loader = torch.utils.data.DataLoader(dataset1, **train_kwargs) - test_loader = torch.utils.data.DataLoader(dataset2, **test_kwargs) - - model = Net().to(device) - scripted_model = torch.jit.script(model) # scripting the model - optimizer = optim.Adadelta(model.parameters(), lr=args.lr) - - scheduler = StepLR(optimizer, step_size=1, gamma=args.gamma) - for epoch in range(1, args.epochs + 1): - train(args, scripted_model, device, train_loader, optimizer, epoch) - scheduler.step() - test(scripted_model, device, test_loader) - - # Saving model and running inference with BentoML: - - # Option1: save natively with bentoml.torchscript_iris - bentoml.torchscript.save_model( - "torchscript_mnist", - scripted_model, - signatures={"__call__": {"batchable": True}}, - ) - model_runner = bentoml.torchscript.get("torchscript_mnist").to_runner() - model_runner.init_local() - - test_datapoint, test_target = next(iter(test_loader)) - prediction = model_runner.run(test_datapoint[0].unsqueeze(0).numpy()) - actual = test_target[0].item() - predicted = np.argmax(prediction).item() - print( - "\nPREDICTION RESULT: ACTUAL: {}, PREDICTED: {}".format( - str(actual), str(predicted) - ) - ) - - # Option2: save MLflow model and import MLflow pyfunc model to BentoML - with mlflow.start_run(): - # logging scripted model - mlflow.pytorch.log_model(scripted_model, "model") - - # Import logged mlflow model to BentoML model store for serving: - model_uri = mlflow.get_artifact_uri("model") - bento_model = bentoml.mlflow.import_model( - "mlflow_torch_mnist", model_uri, signatures={"predict": {"batchable": True}} - ) - print(f"Model imported to BentoML: {bento_model}") - - model_runner = bentoml.mlflow.get("mlflow_torch_mnist").to_runner() - model_runner.init_local() - - test_datapoint, test_target = next(iter(test_loader)) - prediction = model_runner.predict.run(test_datapoint[0].unsqueeze(0).numpy()) - actual = test_target[0].item() - predicted = np.argmax(prediction).item() - print( - "\nPREDICTION RESULT: ACTUAL: {}, PREDICTED: {}".format( - str(actual), str(predicted) - ) - ) - - -if __name__ == "__main__": - main() diff --git a/examples/model_load_store_lora/README.md b/examples/model-loading-saving/README.md similarity index 100% rename from examples/model_load_store_lora/README.md rename to examples/model-loading-saving/README.md diff --git a/examples/model_load_store_lora/bentofile.yaml b/examples/model-loading-saving/bentofile.yaml similarity index 100% rename from examples/model_load_store_lora/bentofile.yaml rename to examples/model-loading-saving/bentofile.yaml diff --git a/examples/model_load_store_lora/import_model.py b/examples/model-loading-saving/import_model.py similarity index 100% rename from examples/model_load_store_lora/import_model.py rename to examples/model-loading-saving/import_model.py diff --git a/examples/model_load_store_lora/requirements.txt b/examples/model-loading-saving/requirements.txt similarity index 100% rename from examples/model_load_store_lora/requirements.txt rename to examples/model-loading-saving/requirements.txt diff --git a/examples/model_load_store_lora/service.py b/examples/model-loading-saving/service.py similarity index 100% rename from examples/model_load_store_lora/service.py rename to examples/model-loading-saving/service.py diff --git a/examples/pydantic_validation/.bentoignore b/examples/pydantic_validation/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/pydantic_validation/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/pydantic_validation/README.md b/examples/pydantic_validation/README.md deleted file mode 100644 index 28375a7b244..00000000000 --- a/examples/pydantic_validation/README.md +++ /dev/null @@ -1,61 +0,0 @@ -# BentoML Example: Using Pydantic for request validation - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train an Iris classifier model, similiar to the quickstart guide: - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -Test the `/predict` endpoint with expected input: - -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 7.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width": 2.2}' http://127.0.0.1:3000/classify - -[2]% -``` - -Test sending request with optional field: -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 7.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width": 2.2, "request_id": 123}' http://127.0.0.1:3000/classify - -[2]% -``` - -Test sending request with wrong field name: - -```bash -$ curl -X POST -H "content-type: application/json" --data '{"sepal_len": 6.2, "sepal_width": 3.2, "petal_len": 5.2, "petal_width_typo": 2.2}' http://127.0.0.1:3000/classify - -"BentoService error handling API request: Invalid JSON input received: 2 validation errors for IrisFeatures - petal_width - field required (type=value_error.missing) - petal_width_typo - extra fields not permitted (type=value_error.extra)"% -``` - - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize iris_classifier_pydantic:latest -``` diff --git a/examples/pydantic_validation/bentofile.yaml b/examples/pydantic_validation/bentofile.yaml deleted file mode 100644 index 29d67cdd2cb..00000000000 --- a/examples/pydantic_validation/bentofile.yaml +++ /dev/null @@ -1,8 +0,0 @@ -service: "service.py:svc" -include: -- "service.py" -python: - packages: - - scikit-learn - - pandas - - pydantic diff --git a/examples/pydantic_validation/requirements.txt b/examples/pydantic_validation/requirements.txt deleted file mode 100644 index f9e6859557f..00000000000 --- a/examples/pydantic_validation/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -scikit-learn -pydantic -pandas -bentoml>=1.0.0 diff --git a/examples/pydantic_validation/service.py b/examples/pydantic_validation/service.py deleted file mode 100644 index 3a3c4ed6658..00000000000 --- a/examples/pydantic_validation/service.py +++ /dev/null @@ -1,39 +0,0 @@ -import typing - -import numpy as np -import pandas as pd -from pydantic import BaseModel - -import bentoml -from bentoml.io import JSON -from bentoml.io import NumpyNdarray - -iris_clf_runner = bentoml.sklearn.get("iris_clf_with_feature_names:latest").to_runner() - -svc = bentoml.Service("iris_classifier_pydantic", runners=[iris_clf_runner]) - - -class IrisFeatures(BaseModel): - sepal_len: float - sepal_width: float - petal_len: float - petal_width: float - - # Optional field - request_id: typing.Optional[int] - - # Use custom Pydantic config for additional validation options - class Config: - extra = "forbid" - - -input_spec = JSON(pydantic_model=IrisFeatures) - - -@svc.api(input=input_spec, output=NumpyNdarray()) -async def classify(input_data: IrisFeatures) -> np.ndarray: - if input_data.request_id is not None: - print("Received request ID: ", input_data.request_id) - - input_df = pd.DataFrame([input_data.dict(exclude={"request_id"})]) - return await iris_clf_runner.predict.async_run(input_df) diff --git a/examples/pydantic_validation/train.py b/examples/pydantic_validation/train.py deleted file mode 100644 index 5af911d0b70..00000000000 --- a/examples/pydantic_validation/train.py +++ /dev/null @@ -1,25 +0,0 @@ -import logging - -import pandas as pd -from sklearn import datasets -from sklearn import svm - -import bentoml - -logging.basicConfig(level=logging.WARN) - -if __name__ == "__main__": - # Load training data - iris = datasets.load_iris() - X = pd.DataFrame( - data=iris.data, columns=["sepal_len", "sepal_width", "petal_len", "petal_width"] - ) - y = iris.target - - # Model Training - clf = svm.SVC() - clf.fit(X, y) - - # Save model to BentoML local model store - saved_model = bentoml.sklearn.save_model("iris_clf_with_feature_names", clf) - print(f"Model saved: {saved_model}") diff --git a/examples/pytorch_mnist/.bentoignore b/examples/pytorch_mnist/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/pytorch_mnist/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/pytorch_mnist/.gitignore b/examples/pytorch_mnist/.gitignore deleted file mode 100644 index 689af916ab0..00000000000 --- a/examples/pytorch_mnist/.gitignore +++ /dev/null @@ -1 +0,0 @@ -MNIST/ diff --git a/examples/pytorch_mnist/README.md b/examples/pytorch_mnist/README.md deleted file mode 100644 index 6c609491606..00000000000 --- a/examples/pytorch_mnist/README.md +++ /dev/null @@ -1,241 +0,0 @@ -# BentoML PyTorch MNIST Tutorial - -This is a sample project demonstrating basic usage of BentoML, the machine learning model serving library. - -In this project, we will train a digit recognition model using PyTorch on the MNIST dataset, build -an ML service for the model, serve the model behind an HTTP endpoint, and containerize the model -server as a docker image for production deployment. - -This project is also available to run from a notebook: https://github.com/bentoml/BentoML/blob/main/examples/pytorch_mnist/pytorch_mnist_demo.ipynb - -### Install Dependencies - -Install python packages required for running this project: - -```bash -pip install -r ./requirements.txt -``` - -### Model Training - -First step, train a digit recognition model with PyTorch using BentoML: - -```bash -python train.py -``` - -This should save a new model in the BentoML local model store: - -```bash -bentoml models list -``` - -Verify that the model can be loaded as runner from Python shell: - -```python -import numpy as np -import PIL.Image -import torch - -import bentoml - -runner = bentoml.pytorch.get("pytorch_mnist:latest").to_runner() -runner.init_local() - -img = PIL.Image.open("samples/0.png") -np_img = np.array(img) -tensor_img = torch.from_numpy(np_img).float() -tensor_img = tensor_img.unsqueeze(0).unsqueeze(0) -tensor_img = torch.nn.functional.interpolate(tensor_img, size=28, mode='bicubic', align_corners=False) - -result = runner.predict.run(tensor_img) # => tensor(0) -``` - -### Create ML Service - -The ML Service code is defined in the `service.py` file: - -```python -# service.py -import typing as t - -import numpy as np -import PIL.Image -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - - -mnist_runner = bentoml.pytorch.get( - "pytorch_mnist", - name="mnist_runner", - predict_fn_name="predict", -).to_runner() - -svc = bentoml.Service( - name="pytorch_mnist_demo", - runners=[ - mnist_runner, - ], -) - - -@svc.api( - input=NumpyNdarray(dtype="float32", enforce_dtype=True), - output=NumpyNdarray(dtype="int64"), -) -async def predict_ndarray( - inp: "np.ndarray[t.Any, np.dtype[t.Any]]", -) -> "np.ndarray[t.Any, np.dtype[t.Any]]": - assert inp.shape == (28, 28) - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension - inp = np.expand_dims(inp, 0) - output_tensor = await mnist_runner.async_run(inp) - return output_tensor.numpy() - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="int64")) -async def predict_image(f: PILImage) -> "np.ndarray[t.Any, np.dtype[t.Any]]": - assert isinstance(f, PILImage) - arr = np.array(f)/255.0 - assert arr.shape == (28, 28) - - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension - arr = np.expand_dims(arr, 0).astype("float32") - output_tensor = await mnist_runner.async_run(arr) - return output_tensor.numpy() -``` - -We defined two api endpoints `/predict_ndarray` and `/predict_image` with single runner. - -Start an API server locally to test the service code above: - -```bash -bentoml serve service:svc --development --reload -``` - -With the `--reload` flag, the API server will automatically restart when the source -file `service.py` is being edited, to boost your development productivity. - -Verify the endpoint can be accessed locally: - -```bash -curl -H "Content-Type: multipart/form-data" -F'fileobj=@samples/1.png;type=image/png' http://127.0.0.1:3000/predict_image -``` - -We can also do a simple local benchmark if [locust](https://locust.io) is installed: - -```bash -locust --headless -u 100 -r 1000 --run-time 10m --host http://127.0.0.1:3000 -``` - -### Build Bento for deployment - -A `bentofile` is already created in this directory for building a -Bento for the service: - -```yaml -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: - - "*.py" -exclude: - - "tests/" -python: - packages: - - scikit-learn - - torch - - Pillow -``` - -Note that we exclude `tests/` from the bento using `exclude`. - -Simply run `bentoml build` from current directory to build a Bento with the latest -version of the `pytorch_mnist` model. This may take a while when running for the first -time for BentoML to resolve all dependency versions: - -``` -> bentoml build - -[01:14:04 AM] INFO Building BentoML service "pytorch_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq" from build context - "/home/chef/workspace/gallery/pytorch" - INFO Packing model "pytorch_mnist_demo:xm6jsddtu3y6zluuvcqvsoywq" from - "/home/chef/bentoml/models/pytorch_mnist_demo/xm6jsddtu3y6zluuvcqvsoywq" - INFO Locking PyPI package versions.. -[01:14:05 AM] INFO - ██████╗░███████╗███╗░░██╗████████╗░█████╗░███╗░░░███╗██╗░░░░░ - ██╔══██╗██╔════╝████╗░██║╚══██╔══╝██╔══██╗████╗░████║██║░░░░░ - ██████╦╝█████╗░░██╔██╗██║░░░██║░░░██║░░██║██╔████╔██║██║░░░░░ - ██╔══██╗██╔══╝░░██║╚████║░░░██║░░░██║░░██║██║╚██╔╝██║██║░░░░░ - ██████╦╝███████╗██║░╚███║░░░██║░░░╚█████╔╝██║░╚═╝░██║███████╗ - ╚═════╝░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░░╚════╝░╚═╝░░░░░╚═╝╚══════╝ - - INFO Successfully built Bento(tag="pytorch_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq") at - "/home/chef/bentoml/bentos/pytorch_mnist_demo/bmygukdtzpy6zlc5vcqvsoywq/" -``` - -This Bento can now be loaded for serving: - -```bash -bentoml serve pytorch_mnist_demo:latest -``` - -The Bento directory contains all code, files, models and configs required for running this service. -BentoML standarlizes this file structure which enables serving runtimes and deployment tools to be -built on top of it. By default, Bentos are managed under the `~/bentoml/bentos` directory: - -``` -> cd ~/bentoml/bentos/pytorch_mnist_demo && cd $(cat latest) - -> tree -. -├── apis -│   └── openapi.yaml -├── bento.yaml -├── env -│   ├── conda -│   ├── docker -│   │   ├── Dockerfile -│   │   ├── entrypoint.sh -│   │   └── init.sh -│   └── python -│   ├── requirements.lock.txt -│   ├── requirements.txt -│   └── version.txt -├── models -│   └── pytorch_mnist_demo -│   ├── eqxdigtybch6nkfb -│   │   ├── model.yaml -│   │   └── saved_model.pt -│   └── latest -├── README.md -└── src - ├── model.py - ├── service.py - └── train.py - -9 directories, 15 files -``` - -### Containerize Bento for deployment - -Make sure you have docker installed and docker deamon running, and the following command -will use your local docker environment to build a new docker image, containing the model -server configured from this Bento: - -```bash -bentoml containerize pytorch_mnist_demo:latest -``` - -Test out the docker image built: - -```bash -docker run -P pytorch_mnist_demo:invwzzsw7li6zckb2ie5eubhd -``` diff --git a/examples/pytorch_mnist/bentofile.yaml b/examples/pytorch_mnist/bentofile.yaml deleted file mode 100644 index b361891c3b2..00000000000 --- a/examples/pytorch_mnist/bentofile.yaml +++ /dev/null @@ -1,15 +0,0 @@ -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -exclude: -- "tests/" -- "locustfile.py" -python: - packages: - - scikit-learn - - torch - - Pillow diff --git a/examples/pytorch_mnist/locustfile.py b/examples/pytorch_mnist/locustfile.py deleted file mode 100644 index c9bdd3de8ac..00000000000 --- a/examples/pytorch_mnist/locustfile.py +++ /dev/null @@ -1,15 +0,0 @@ -from locust import HttpUser -from locust import between -from locust import task - -with open("samples/1.png", "rb") as f: - test_image_bytes = f.read() - - -class PyTorchMNISTLoadTestUser(HttpUser): - wait_time = between(0.01, 2) - - @task - def predict_image(self): - files = {"upload_files": ("1.png", test_image_bytes, "image/png")} - self.client.post("/predict_image", files=files) diff --git a/examples/pytorch_mnist/model.py b/examples/pytorch_mnist/model.py deleted file mode 100644 index 2344609fa2f..00000000000 --- a/examples/pytorch_mnist/model.py +++ /dev/null @@ -1,32 +0,0 @@ -import torch -import torch.nn as nn - - -class SimpleConvNet(nn.Module): - """ - Simple Convolutional Neural Network - """ - - def __init__(self): - super().__init__() - self.layers = nn.Sequential( - nn.Conv2d(1, 10, kernel_size=3), - nn.ReLU(), - nn.Flatten(), - nn.Linear(26 * 26 * 10, 50), - nn.ReLU(), - nn.Linear(50, 20), - nn.ReLU(), - nn.Linear(20, 10), - ) - - def forward(self, x): - return self.layers(x) - - def predict(self, inp): - """predict digit for input""" - self.eval() - with torch.no_grad(): - raw_output = self(inp) - _, pred = torch.max(raw_output, 1) - return pred diff --git a/examples/pytorch_mnist/pytorch_mnist_demo.ipynb b/examples/pytorch_mnist/pytorch_mnist_demo.ipynb deleted file mode 100644 index c2fede3d637..00000000000 --- a/examples/pytorch_mnist/pytorch_mnist_demo.ipynb +++ /dev/null @@ -1,529 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a682ea0b", - "metadata": {}, - "source": [ - "# BentoML PyTorch MNIST Tutorial\n", - "\n", - "Link to source code: https://github.com/bentoml/BentoML/tree/main/examples/pytorch_mnist/\n", - "\n", - "Install required dependencies:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ad00863", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -r requirements.txt" - ] - }, - { - "cell_type": "markdown", - "id": "45393b74", - "metadata": {}, - "source": [ - "## Define the model\n", - "\n", - "First let's define a simple PyTorch network" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "caeff07d", - "metadata": {}, - "outputs": [], - "source": [ - "import torch\n", - "import torch.nn as nn\n", - "\n", - "\n", - "class SimpleConvNet(nn.Module):\n", - " \"\"\"\n", - " Simple Convolutional Neural Network\n", - " \"\"\"\n", - "\n", - " def __init__(self):\n", - " super().__init__()\n", - " self.layers = nn.Sequential(\n", - " nn.Conv2d(1, 10, kernel_size=3),\n", - " nn.ReLU(),\n", - " nn.Flatten(),\n", - " nn.Linear(26 * 26 * 10, 50),\n", - " nn.ReLU(),\n", - " nn.Linear(50, 20),\n", - " nn.ReLU(),\n", - " nn.Linear(20, 10),\n", - " )\n", - "\n", - " def forward(self, x):\n", - " return self.layers(x)\n", - "\n", - " def predict(self, inp):\n", - " \"\"\"predict digit for input\"\"\"\n", - " self.eval()\n", - " with torch.no_grad():\n", - " raw_output = self(inp)\n", - " _, pred = torch.max(raw_output, 1)\n", - " return pred" - ] - }, - { - "cell_type": "markdown", - "id": "38888f0a", - "metadata": {}, - "source": [ - "## Training and Saving the model\n", - "\n", - "Then we define a simple PyTorch network and some helper functions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c62db15c", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import random\n", - "import numpy as np\n", - "import torch\n", - "import torch.nn.functional as F\n", - "from torch import nn\n", - "from torchvision.datasets import MNIST\n", - "from torch.utils.data import DataLoader, ConcatDataset\n", - "from torchvision import transforms\n", - "from sklearn.model_selection import KFold\n", - "\n", - "import bentoml\n", - "\n", - "# reproducible setup for testing\n", - "seed = 42\n", - "random.seed(seed)\n", - "np.random.seed(seed)\n", - "torch.manual_seed(seed)\n", - "torch.cuda.manual_seed(seed)\n", - "torch.cuda.manual_seed_all(seed)\n", - "torch.backends.cudnn.benchmark = False\n", - "torch.backends.cudnn.deterministic = True\n", - "\n", - "\n", - "def _dataloader_init_fn(worker_id):\n", - " np.random.seed(seed)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "539b5097", - "metadata": {}, - "outputs": [], - "source": [ - "K_FOLDS = 5\n", - "NUM_EPOCHS = 5\n", - "LOSS_FUNCTION = nn.CrossEntropyLoss()\n", - "\n", - "\n", - "def get_dataset():\n", - " # Prepare MNIST dataset by concatenating Train/Test part; we split later.\n", - " train_set = MNIST(\n", - " os.getcwd(), download=True, transform=transforms.ToTensor(), train=True\n", - " )\n", - " test_set = MNIST(\n", - " os.getcwd(), download=True, transform=transforms.ToTensor(), train=False\n", - " )\n", - " return train_set, test_set\n", - "\n", - "\n", - "def train_epoch(model, optimizer, loss_function, train_loader, epoch, device=\"cpu\"):\n", - " # Mark training flag\n", - " model.train()\n", - " for batch_idx, (inputs, targets) in enumerate(train_loader):\n", - " inputs, targets = inputs.to(device), targets.to(device)\n", - " optimizer.zero_grad()\n", - " outputs = model(inputs)\n", - " loss = loss_function(outputs, targets)\n", - " loss.backward()\n", - " optimizer.step()\n", - " if batch_idx % 499 == 0:\n", - " print(\n", - " \"Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}\".format(\n", - " epoch,\n", - " batch_idx * len(inputs),\n", - " len(train_loader.dataset),\n", - " 100.0 * batch_idx / len(train_loader),\n", - " loss.item(),\n", - " )\n", - " )\n", - "\n", - "\n", - "def test_model(model, test_loader, device=\"cpu\"):\n", - " correct, total = 0, 0\n", - " model.eval()\n", - " with torch.no_grad():\n", - " for batch_idx, (inputs, targets) in enumerate(test_loader):\n", - " inputs, targets = inputs.to(device), targets.to(device)\n", - " outputs = model(inputs)\n", - " _, predicted = torch.max(outputs.data, 1)\n", - " total += targets.size(0)\n", - " correct += (predicted == targets).sum().item()\n", - "\n", - " return correct, total" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d2db4a8", - "metadata": {}, - "outputs": [], - "source": [ - "# load data\n", - "train_set, test_set = get_dataset()\n", - "test_loader = torch.utils.data.DataLoader(\n", - " test_set,\n", - " batch_size=10,\n", - " sampler=torch.utils.data.RandomSampler(test_set),\n", - " worker_init_fn=_dataloader_init_fn,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "788c19a0", - "metadata": {}, - "source": [ - "### Cross Validation\n", - "\n", - "We can do some cross validation and the results can be saved with the model as metadata\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b2fdd72", - "metadata": {}, - "outputs": [], - "source": [ - "def cross_validate(dataset, epochs=NUM_EPOCHS, k_folds=K_FOLDS):\n", - " results = {}\n", - "\n", - " # Define the K-fold Cross Validator\n", - " kfold = KFold(n_splits=k_folds, shuffle=True)\n", - "\n", - " print(\"--------------------------------\")\n", - "\n", - " # K-fold Cross Validation model evaluation\n", - " for fold, (train_ids, test_ids) in enumerate(kfold.split(dataset)):\n", - " print(f\"FOLD {fold}\")\n", - " print(\"--------------------------------\")\n", - "\n", - " # Sample elements randomly from a given list of ids, no replacement.\n", - " train_subsampler = torch.utils.data.SubsetRandomSampler(train_ids)\n", - " test_subsampler = torch.utils.data.SubsetRandomSampler(test_ids)\n", - "\n", - " # Define data loaders for training and testing data in this fold\n", - " train_loader = torch.utils.data.DataLoader(\n", - " dataset,\n", - " batch_size=10,\n", - " sampler=train_subsampler,\n", - " worker_init_fn=_dataloader_init_fn,\n", - " )\n", - " test_loader = torch.utils.data.DataLoader(\n", - " dataset,\n", - " batch_size=10,\n", - " sampler=test_subsampler,\n", - " worker_init_fn=_dataloader_init_fn,\n", - " )\n", - "\n", - " # Train this fold\n", - " model = SimpleConvNet()\n", - " optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)\n", - " loss_function = nn.CrossEntropyLoss()\n", - " for epoch in range(epochs):\n", - " train_epoch(model, optimizer, loss_function, train_loader, epoch)\n", - "\n", - " # Evaluation for this fold\n", - " correct, total = test_model(model, test_loader)\n", - " print(\"Accuracy for fold %d: %d %%\" % (fold, 100.0 * correct / total))\n", - " print(\"--------------------------------\")\n", - " results[fold] = 100.0 * (correct / total)\n", - "\n", - " # Print fold results\n", - " print(f\"K-FOLD CROSS VALIDATION RESULTS FOR {K_FOLDS} FOLDS\")\n", - " print(\"--------------------------------\")\n", - " sum = 0.0\n", - " for key, value in results.items():\n", - " print(f\"Fold {key}: {value} %\")\n", - " sum += value\n", - "\n", - " print(f\"Average: {sum/len(results.items())} %\")\n", - "\n", - " return results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bd06de8f", - "metadata": {}, - "outputs": [], - "source": [ - "cv_results = cross_validate(train_set, epochs=1)" - ] - }, - { - "cell_type": "markdown", - "id": "ad2104a6", - "metadata": {}, - "source": [ - "### training the model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3d311c5", - "metadata": {}, - "outputs": [], - "source": [ - "def train(dataset, epochs=NUM_EPOCHS, device=\"cpu\"):\n", - " train_sampler = torch.utils.data.RandomSampler(dataset)\n", - " train_loader = torch.utils.data.DataLoader(\n", - " dataset,\n", - " batch_size=10,\n", - " sampler=train_sampler,\n", - " worker_init_fn=_dataloader_init_fn,\n", - " )\n", - " model = SimpleConvNet()\n", - " optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)\n", - " loss_function = nn.CrossEntropyLoss()\n", - " for epoch in range(epochs):\n", - " train_epoch(model, optimizer, loss_function, train_loader, epoch, device)\n", - " return model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e8df05c4", - "metadata": {}, - "outputs": [], - "source": [ - "trained_model = train(train_set)" - ] - }, - { - "cell_type": "markdown", - "id": "92d9b23c", - "metadata": {}, - "source": [ - "### saving the model with some metadata" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fe9c4a7", - "metadata": {}, - "outputs": [], - "source": [ - "correct, total = test_model(trained_model, test_loader)\n", - "metadata = {\n", - " \"accuracy\": float(correct) / total,\n", - " \"cv_stats\": cv_results,\n", - "}\n", - "\n", - "tag = bentoml.pytorch.save(\n", - " \"pytorch_mnist\",\n", - " trained_model,\n", - " metadata=metadata,\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bdf35e55", - "metadata": {}, - "source": [ - "## Create a BentoML Service for serving the model\n", - "\n", - "Note: using `%%writefile` here because `bentoml.Service` instance must be created in a separate `.py` file\n", - "\n", - "Even though we have only one model, we can create as many api endpoints as we want. Here we create two end points `predict_ndarray` and `predict_image`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f3e2f590", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile service.py\n", - "\n", - "import typing as t\n", - "\n", - "import numpy as np\n", - "import PIL.Image\n", - "from PIL.Image import Image as PILImage\n", - "\n", - "import bentoml\n", - "from bentoml.io import Image\n", - "from bentoml.io import NumpyNdarray\n", - "\n", - "\n", - "mnist_runner = bentoml.pytorch.get(\n", - " \"pytorch_mnist\",\n", - " name=\"mnist_runner\",\n", - " predict_fn_name=\"predict\",\n", - ").to_runner()\n", - "\n", - "svc = bentoml.Service(\n", - " name=\"pytorch_mnist_demo\",\n", - " runners=[\n", - " mnist_runner,\n", - " ],\n", - ")\n", - "\n", - "\n", - "@svc.api(\n", - " input=NumpyNdarray(dtype=\"float32\", enforce_dtype=True),\n", - " output=NumpyNdarray(dtype=\"int64\"),\n", - ")\n", - "async def predict_ndarray(\n", - " inp: \"np.ndarray[t.Any, np.dtype[t.Any]]\",\n", - ") -> \"np.ndarray[t.Any, np.dtype[t.Any]]\":\n", - " assert inp.shape == (28, 28)\n", - " # We are using greyscale image and our PyTorch model expect one\n", - " # extra channel dimension\n", - " inp = np.expand_dims(inp, 0)\n", - " output_tensor = await mnist_runner.async_run(inp)\n", - " return output_tensor.numpy()\n", - "\n", - "\n", - "@svc.api(input=Image(), output=NumpyNdarray(dtype=\"int64\"))\n", - "async def predict_image(f: PILImage) -> \"np.ndarray[t.Any, np.dtype[t.Any]]\":\n", - " assert isinstance(f, PILImage)\n", - " arr = np.array(f)/255.0\n", - " assert arr.shape == (28, 28)\n", - "\n", - " # We are using greyscale image and our PyTorch model expect one\n", - " # extra channel dimension\n", - " arr = np.expand_dims(arr, 0).astype(\"float32\")\n", - " output_tensor = await mnist_runner.async_run(arr)\n", - " return output_tensor.numpy()\n" - ] - }, - { - "cell_type": "markdown", - "id": "590147aa", - "metadata": {}, - "source": [ - "Start a dev model server to test out the service defined above" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29173871", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve service.py:svc" - ] - }, - { - "cell_type": "markdown", - "id": "606c1b36", - "metadata": {}, - "source": [ - "Now you can use something like:\n", - "\n", - "`curl -H \"Content-Type: multipart/form-data\" -F'fileobj=@samples/1.png;type=image/png' http://127.0.0.1:3000/predict_image`\n", - " \n", - "to send an image to the digit recognition service" - ] - }, - { - "cell_type": "markdown", - "id": "c7f03564", - "metadata": {}, - "source": [ - "## Build a Bento for distribution and deployment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "207561bc", - "metadata": {}, - "outputs": [], - "source": [ - "bentoml.build(\n", - " \"service.py:svc\",\n", - " include=[\"*.py\"],\n", - " exclude=[\"tests/\"],\n", - " description=\"file:./README.md\",\n", - " python=dict(\n", - " packages=[\"scikit-learn\", \"torch\", \"Pillow\"],\n", - " ),\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "36306933", - "metadata": {}, - "source": [ - "Starting a dev server with the Bento build:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ec4b9dff", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve pytorch_mnist_demo:latest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f05fae93", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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.10.5" - }, - "name": "pytorch_mnist.ipynb" - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/pytorch_mnist/requirements.txt b/examples/pytorch_mnist/requirements.txt deleted file mode 100644 index c234cd77496..00000000000 --- a/examples/pytorch_mnist/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -scikit-learn -torch -torchvision -bentoml>=1.0.0 diff --git a/examples/pytorch_mnist/samples/0.png b/examples/pytorch_mnist/samples/0.png deleted file mode 100644 index 7a93ea81868..00000000000 Binary files a/examples/pytorch_mnist/samples/0.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/1.png b/examples/pytorch_mnist/samples/1.png deleted file mode 100644 index 4629a3b1694..00000000000 Binary files a/examples/pytorch_mnist/samples/1.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/2.png b/examples/pytorch_mnist/samples/2.png deleted file mode 100644 index e56adf47bdd..00000000000 Binary files a/examples/pytorch_mnist/samples/2.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/3.png b/examples/pytorch_mnist/samples/3.png deleted file mode 100644 index d441e3d6dd0..00000000000 Binary files a/examples/pytorch_mnist/samples/3.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/4.png b/examples/pytorch_mnist/samples/4.png deleted file mode 100644 index 67a209ff513..00000000000 Binary files a/examples/pytorch_mnist/samples/4.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/5.png b/examples/pytorch_mnist/samples/5.png deleted file mode 100644 index 4defc334c95..00000000000 Binary files a/examples/pytorch_mnist/samples/5.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/6.png b/examples/pytorch_mnist/samples/6.png deleted file mode 100644 index 48106fa72a7..00000000000 Binary files a/examples/pytorch_mnist/samples/6.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/7.png b/examples/pytorch_mnist/samples/7.png deleted file mode 100644 index 4715175eac2..00000000000 Binary files a/examples/pytorch_mnist/samples/7.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/8.png b/examples/pytorch_mnist/samples/8.png deleted file mode 100644 index f5e6652c8c1..00000000000 Binary files a/examples/pytorch_mnist/samples/8.png and /dev/null differ diff --git a/examples/pytorch_mnist/samples/9.png b/examples/pytorch_mnist/samples/9.png deleted file mode 100644 index 1ad484752cf..00000000000 Binary files a/examples/pytorch_mnist/samples/9.png and /dev/null differ diff --git a/examples/pytorch_mnist/service.py b/examples/pytorch_mnist/service.py deleted file mode 100644 index 51f012b528d..00000000000 --- a/examples/pytorch_mnist/service.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -import typing as t -from typing import TYPE_CHECKING - -import numpy as np -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - -if TYPE_CHECKING: - from numpy.typing import NDArray - -mnist_runner = bentoml.pytorch.get("pytorch_mnist").to_runner() - -svc = bentoml.Service(name="pytorch_mnist_demo", runners=[mnist_runner]) - - -def to_numpy(tensor): - return tensor.detach().cpu().numpy() - - -@svc.api( - input=NumpyNdarray(dtype="float32", enforce_dtype=True), - output=NumpyNdarray(dtype="int64"), -) -async def predict_ndarray(inp: NDArray[t.Any]) -> NDArray[t.Any]: - assert inp.shape == (28, 28) - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension. Then we will also add one batch - # dimension - inp = np.expand_dims(inp, (0, 1)) - output_tensor = await mnist_runner.async_run(inp) - return to_numpy(output_tensor) - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="int64")) -async def predict_image(f: PILImage) -> NDArray[t.Any]: - assert isinstance(f, PILImage) - arr = np.array(f) / 255.0 - assert arr.shape == (28, 28) - - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension. Then we will also add one batch - # dimension - arr = np.expand_dims(arr, (0, 1)).astype("float32") - output_tensor = await mnist_runner.async_run(arr) - return to_numpy(output_tensor) diff --git a/examples/pytorch_mnist/tests/conftest.py b/examples/pytorch_mnist/tests/conftest.py deleted file mode 100644 index 8043b60da4e..00000000000 --- a/examples/pytorch_mnist/tests/conftest.py +++ /dev/null @@ -1,26 +0,0 @@ -# pylint: disable=redefined-outer-name - -import typing as t - -import pytest - -from bentoml.testing.server import host_bento - - -def pytest_configure(config): # pylint: disable=unused-argument - import os - import subprocess - import sys - - cmd = f"{sys.executable} {os.path.join(os.getcwd(), 'train.py')} --k-folds=0" - subprocess.run(cmd, shell=True, check=True) - - -@pytest.fixture(scope="session") -def host() -> t.Generator[str, None, None]: - import bentoml - - bentoml.build("service:svc") - - with host_bento(bento="pytorch_mnist_demo:latest") as host: - yield host diff --git a/examples/pytorch_mnist/tests/test_prediction.py b/examples/pytorch_mnist/tests/test_prediction.py deleted file mode 100644 index d3fdc7f4dbf..00000000000 --- a/examples/pytorch_mnist/tests/test_prediction.py +++ /dev/null @@ -1,61 +0,0 @@ -# pylint: disable=redefined-outer-name - -import io -import json - -import numpy as np -import pytest - -from bentoml.testing.utils import async_request - - -@pytest.fixture() -def img_data(): - import PIL.Image - - images = {} - digits = list(range(10)) - for digit in digits: - img_path = f"samples/{digit}.png" - with open(img_path, "rb") as f: - img_bytes = f.read() - img_arr = np.array(PIL.Image.open(io.BytesIO(img_bytes))) - img_arr = img_arr / 255.0 - img_dic = { - "bytes": img_bytes, - "array": img_arr, - } - images[digit] = img_dic - - return images - - -@pytest.mark.asyncio -async def test_numpy(host, img_data): - for digit, d in img_data.items(): - img_arr = d["array"] - img_arr_json = json.dumps(img_arr.tolist()) - bdigit = f"{digit}".encode() - await async_request( - "POST", - f"http://{host}/predict_ndarray", - headers={"Content-Type": "application/json"}, - data=img_arr_json, - assert_status=200, - assert_data=bdigit, - ) - - -@pytest.mark.asyncio -async def test_image(host, img_data): - for digit, d in img_data.items(): - img_bytes = d["bytes"] - bdigit = f"{digit}".encode() - await async_request( - "POST", - f"http://{host}/predict_image", - data=img_bytes, - headers={"Content-Type": "image/png"}, - assert_status=200, - assert_data=bdigit, - ) diff --git a/examples/pytorch_mnist/train.py b/examples/pytorch_mnist/train.py deleted file mode 100644 index 6cd630edf86..00000000000 --- a/examples/pytorch_mnist/train.py +++ /dev/null @@ -1,223 +0,0 @@ -# pylint: disable=redefined-outer-name -import argparse -import os -import random - -import model as models -import numpy as np -import torch -from sklearn.model_selection import KFold -from torch import nn -from torchvision import transforms -from torchvision.datasets import MNIST - -import bentoml - -K_FOLDS = 5 -NUM_EPOCHS = 3 -LOSS_FUNCTION = nn.CrossEntropyLoss() - - -# reproducible setup for testing -seed = 42 -random.seed(seed) -np.random.seed(seed) -torch.manual_seed(seed) -torch.cuda.manual_seed(seed) -torch.cuda.manual_seed_all(seed) -torch.backends.cudnn.benchmark = False -torch.backends.cudnn.deterministic = True - - -def _dataloader_init_fn(): - np.random.seed(seed) - - -def get_dataset(): - # Prepare MNIST dataset by concatenating Train/Test part; we split later. - train_set = MNIST( - os.getcwd(), download=True, transform=transforms.ToTensor(), train=True - ) - test_set = MNIST( - os.getcwd(), download=True, transform=transforms.ToTensor(), train=False - ) - return train_set, test_set - - -def train_epoch(model, optimizer, loss_function, train_loader, epoch, device="cpu"): - # Mark training flag - model.train() - for batch_idx, (inputs, targets) in enumerate(train_loader): - inputs, targets = inputs.to(device), targets.to(device) - optimizer.zero_grad() - outputs = model(inputs) - loss = loss_function(outputs, targets) - loss.backward() - optimizer.step() - if batch_idx % 499 == 0: - print( - "Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}".format( - epoch, - batch_idx * len(inputs), - len(train_loader.dataset), - 100.0 * batch_idx / len(train_loader), - loss.item(), - ) - ) - - -def test_model(model, test_loader, device="cpu"): - correct, total = 0, 0 - model.eval() - with torch.no_grad(): - for _, (inputs, targets) in enumerate(test_loader): - inputs, targets = inputs.to(device), targets.to(device) - outputs = model(inputs) - _, predicted = torch.max(outputs.data, 1) - total += targets.size(0) - correct += (predicted == targets).sum().item() - - return correct, total - - -def cross_validate(dataset, epochs=NUM_EPOCHS, k_folds=K_FOLDS, device="cpu"): - results = {} - - # Define the K-fold Cross Validator - kfold = KFold(n_splits=k_folds, shuffle=True) - - print("--------------------------------") - - # K-fold Cross Validation model evaluation - for fold, (train_ids, test_ids) in enumerate(kfold.split(dataset)): - print(f"FOLD {fold}") - print("--------------------------------") - - # Sample elements randomly from a given list of ids, no replacement. - train_subsampler = torch.utils.data.SubsetRandomSampler(train_ids) - test_subsampler = torch.utils.data.SubsetRandomSampler(test_ids) - - # Define data loaders for training and testing data in this fold - train_loader = torch.utils.data.DataLoader( - dataset, - batch_size=10, - sampler=train_subsampler, - worker_init_fn=_dataloader_init_fn, - ) - test_loader = torch.utils.data.DataLoader( - dataset, - batch_size=10, - sampler=test_subsampler, - worker_init_fn=_dataloader_init_fn, - ) - - # Train this fold - model = models.SimpleConvNet() - optimizer = torch.optim.Adam(model.parameters(), lr=1e-4) - loss_function = nn.CrossEntropyLoss() - model = model.to(device) - for epoch in range(epochs): - train_epoch( - model, optimizer, loss_function, train_loader, epoch, device=device - ) - - # Evaluation for this fold - correct, total = test_model(model, test_loader, device) - print("Accuracy for fold %d: %d %%" % (fold, 100.0 * correct / total)) - print("--------------------------------") - results[fold] = 100.0 * (correct / total) - - # Print fold results - print(f"K-FOLD CROSS VALIDATION RESULTS FOR {K_FOLDS} FOLDS") - print("--------------------------------") - sum_ = 0.0 - for key, value in results.items(): - print(f"Fold {key}: {value} %") - sum_ += value - - print(f"Average: {sum_/len(results.items())} %") - - return results - - -def train(dataset, epochs=NUM_EPOCHS, device="cpu"): - print("Training using %s." % device) - train_sampler = torch.utils.data.RandomSampler(dataset) - train_loader = torch.utils.data.DataLoader( - dataset, - batch_size=10, - sampler=train_sampler, - worker_init_fn=_dataloader_init_fn, - ) - model = models.SimpleConvNet() - optimizer = torch.optim.Adam(model.parameters(), lr=1e-4) - loss_function = nn.CrossEntropyLoss() - model = model.to(device) - for epoch in range(epochs): - train_epoch(model, optimizer, loss_function, train_loader, epoch, device) - return model - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="BentoML PyTorch MNIST Example") - parser.add_argument( - "--epochs", - type=int, - default=NUM_EPOCHS, - metavar="N", - help=f"number of epochs to train (default: {NUM_EPOCHS})", - ) - parser.add_argument( - "--k-folds", - type=int, - default=K_FOLDS, - metavar="N", - help=f"number of folds for k-fold cross-validation (default: {K_FOLDS}, 1 to disable cv)", - ) - parser.add_argument( - "--cuda", action="store_true", default=False, help="enable CUDA training" - ) - parser.add_argument( - "--model-name", - type=str, - default="pytorch_mnist", - help="name for saved the model", - ) - - args = parser.parse_args() - use_cuda = args.cuda and torch.cuda.is_available() - - device = torch.device("cuda" if use_cuda else "cpu") - - train_set, test_set = get_dataset() - test_loader = torch.utils.data.DataLoader( - test_set, - batch_size=10, - sampler=torch.utils.data.RandomSampler(test_set), - worker_init_fn=_dataloader_init_fn, - ) - - if args.k_folds > 1: - cv_results = cross_validate(train_set, args.epochs, args.k_folds, device) - else: - cv_results = {} - - trained_model = train(train_set, args.epochs, device) - correct, total = test_model(trained_model, test_loader, device) - - # training related - metadata = { - "acc": float(correct) / total, - "cv_stats": cv_results, - } - - signatures = {"predict": {"batchable": True}} - - saved_model = bentoml.pytorch.save_model( - args.model_name, - trained_model, - signatures=signatures, - metadata=metadata, - external_modules=[models], - ) - print(f"Saved model: {saved_model}") diff --git a/examples/sentence-embedding/bentofile.yaml b/examples/sentence-embedding/bentofile.yaml deleted file mode 100644 index 241e3417616..00000000000 --- a/examples/sentence-embedding/bentofile.yaml +++ /dev/null @@ -1,13 +0,0 @@ -service: "service:SentenceEmbedding" -labels: - owner: bentoml-team - project: gallery -include: -- "*.py" -python: - packages: - - torch - - transformers -# envs: -# - name: NORMALIZE -# value: "False" diff --git a/examples/sentence-embedding/prepare_model.py b/examples/sentence-embedding/prepare_model.py deleted file mode 100644 index 71953b33b54..00000000000 --- a/examples/sentence-embedding/prepare_model.py +++ /dev/null @@ -1,22 +0,0 @@ -import huggingface_hub - -import bentoml -from bentoml.models import ModelContext - -api = huggingface_hub.HfApi() -repo_info = api.repo_info("sentence-transformers/all-MiniLM-L6-v2") -print(repo_info.sha) - -# Save model to BentoML local model store -with bentoml.models.create( - f"all-MiniLM-L6-v2:{repo_info.sha}", - module="bentoml.transformers", - context=ModelContext(framework_name="", framework_versions={}), - signatures={}, -) as model_ref: - huggingface_hub.snapshot_download( - "sentence-transformers/all-MiniLM-L6-v2", - local_dir=model_ref.path_of("/"), - local_dir_use_symlinks=False, - ) -print(f"Model saved: {model_ref}") diff --git a/examples/sentence-embedding/service.py b/examples/sentence-embedding/service.py deleted file mode 100644 index 24ad0be0b45..00000000000 --- a/examples/sentence-embedding/service.py +++ /dev/null @@ -1,73 +0,0 @@ -from __future__ import annotations - -import os - -import numpy as np -import torch - -import bentoml -from bentoml import Field - - -@bentoml.service(resources={"memory": "500MiB"}, traffic={"timeout": 1}) -class SentenceEmbedding: - model_ref = bentoml.models.get("all-MiniLM-L6-v2") - - def __init__(self) -> None: - from transformers import AutoModel - from transformers import AutoTokenizer - - print("Init", self.model_ref.path) - # Load model and tokenizer - self.device = "cuda" if torch.cuda.is_available() else "cpu" - self.model = AutoModel.from_pretrained(self.model_ref.path_of("/")).to( - self.device - ) - self.tokenizer = AutoTokenizer.from_pretrained(self.model_ref.path_of("/")) - print("Model loaded", "device:", self.device) - - @staticmethod - def mean_pooling(model_output, attention_mask): - # Mean Pooling - Take attention mask into account for correct averaging - token_embeddings = model_output[ - 0 - ] # First element of model_output contains all token embeddings - input_mask_expanded = ( - attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() - ) - return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp( - input_mask_expanded.sum(1), min=1e-9 - ) - - @bentoml.api(batchable=True) - def encode( - self, - sentences: list[str] = Field(["hello world"], description="input sentences"), - ) -> np.ndarray: - # Tokenize sentences - encoded_input = self.tokenizer( - sentences, padding=True, truncation=True, return_tensors="pt" - ).to(self.device) - - # Compute token embeddings - with torch.no_grad(): - model_output = self.model(**encoded_input) - - # Perform pooling - sentence_embeddings = self.mean_pooling( - model_output, encoded_input["attention_mask"] - ) - - # Optional: Normalize embeddings if needed - if str(os.getenv("NORMALIZE", False)).upper() in [ - "TRUE", - "1", - "YES", - "Y", - "ON", - ]: - sentence_embeddings = torch.nn.functional.normalize( - sentence_embeddings, p=2, dim=1 - ) - - return sentence_embeddings.cpu().numpy() diff --git a/examples/sklearn/linear_regression/README.md b/examples/sklearn/linear_regression/README.md deleted file mode 100644 index 093d2951257..00000000000 --- a/examples/sklearn/linear_regression/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# BentoML Sklearn Example: Linear Regression - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train a linear regression model - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -``` -curl -X POST -H "content-type: application/json" --data "[[5, 3]]" http://127.0.0.1:3000/predict -``` - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize linear_regression:latest -``` diff --git a/examples/sklearn/linear_regression/bentofile.yaml b/examples/sklearn/linear_regression/bentofile.yaml deleted file mode 100644 index 44cad3591f8..00000000000 --- a/examples/sklearn/linear_regression/bentofile.yaml +++ /dev/null @@ -1,5 +0,0 @@ -service: "service.py:svc" -include: - - "service.py" -python: - requirements_txt: "./requirements.txt" diff --git a/examples/sklearn/linear_regression/requirements.txt b/examples/sklearn/linear_regression/requirements.txt deleted file mode 100644 index 215972b9c80..00000000000 --- a/examples/sklearn/linear_regression/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -bentoml>=1.0.0 -scikit-learn diff --git a/examples/sklearn/linear_regression/service.py b/examples/sklearn/linear_regression/service.py deleted file mode 100644 index 023b2ba38b9..00000000000 --- a/examples/sklearn/linear_regression/service.py +++ /dev/null @@ -1,13 +0,0 @@ -import bentoml -from bentoml.io import NumpyNdarray - -reg_runner = bentoml.sklearn.get("linear_reg:latest").to_runner() - -svc = bentoml.Service("linear_regression", runners=[reg_runner]) - -input_spec = NumpyNdarray(dtype="int", shape=(-1, 2)) - - -@svc.api(input=input_spec, output=NumpyNdarray()) -async def predict(input_arr): - return await reg_runner.predict.async_run(input_arr) diff --git a/examples/sklearn/linear_regression/train.py b/examples/sklearn/linear_regression/train.py deleted file mode 100644 index ecdbe620efb..00000000000 --- a/examples/sklearn/linear_regression/train.py +++ /dev/null @@ -1,16 +0,0 @@ -from sklearn import linear_model - -import bentoml - -if __name__ == "__main__": - reg = linear_model.LinearRegression() - reg.fit([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) - - print("coef: ", reg.coef_) - bento_model = bentoml.sklearn.save_model("linear_reg", reg) - print(f"Model saved: {bento_model}") - - # Test running inference with BentoML runner - test_runner = bentoml.sklearn.get("linear_reg:latest").to_runner() - test_runner.init_local() - assert test_runner.predict.run([[1, 1]]) == reg.predict([[1, 1]]) diff --git a/examples/sklearn/pipeline/README.md b/examples/sklearn/pipeline/README.md deleted file mode 100644 index a41e30f8709..00000000000 --- a/examples/sklearn/pipeline/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# BentoML Sklearn Example: document classification pipeline - -0. Install dependencies: - -```bash -pip install -r ./requirements.txt -``` - -1. Train a document classification pipeline model - -```bash -python ./train.py -``` - -2. Run the service: - -```bash -bentoml serve service.py:svc -``` - -3. Send test request - -Test the `/predict` endpoint: -```bash -curl -X POST -H "content-type: application/text" --data "hello world" http://127.0.0.1:3000/predict -``` - -Test the `/predict_proba` endpoint: -```bash -curl -X POST -H "content-type: application/text" --data "hello world" http://127.0.0.1:3000/predict_proba -``` - - -4. Build Bento - -``` -bentoml build -``` - -5. Build docker image - -``` -bentoml containerize doc_classifier:latest -``` diff --git a/examples/sklearn/pipeline/bentofile.yaml b/examples/sklearn/pipeline/bentofile.yaml deleted file mode 100644 index 44cad3591f8..00000000000 --- a/examples/sklearn/pipeline/bentofile.yaml +++ /dev/null @@ -1,5 +0,0 @@ -service: "service.py:svc" -include: - - "service.py" -python: - requirements_txt: "./requirements.txt" diff --git a/examples/sklearn/pipeline/requirements.txt b/examples/sklearn/pipeline/requirements.txt deleted file mode 100644 index 215972b9c80..00000000000 --- a/examples/sklearn/pipeline/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -bentoml>=1.0.0 -scikit-learn diff --git a/examples/sklearn/pipeline/service.py b/examples/sklearn/pipeline/service.py deleted file mode 100644 index 45363fe9c4c..00000000000 --- a/examples/sklearn/pipeline/service.py +++ /dev/null @@ -1,22 +0,0 @@ -import bentoml -from bentoml.io import JSON -from bentoml.io import Text - -bento_model = bentoml.sklearn.get("twenty_news_group:latest") - -target_names = bento_model.custom_objects["target_names"] -model_runner = bento_model.to_runner() - -svc = bentoml.Service("doc_classifier", runners=[model_runner]) - - -@svc.api(input=Text(), output=JSON()) -async def predict(input_doc: str): - predictions = await model_runner.predict.async_run([input_doc]) - return {"result": target_names[predictions[0]]} - - -@svc.api(input=Text(), output=JSON()) -async def predict_proba(input_doc: str): - predictions = await model_runner.predict_proba.async_run([input_doc]) - return predictions[0] diff --git a/examples/sklearn/pipeline/train.py b/examples/sklearn/pipeline/train.py deleted file mode 100644 index aa9ee1a5ee4..00000000000 --- a/examples/sklearn/pipeline/train.py +++ /dev/null @@ -1,97 +0,0 @@ -import logging -from pprint import pprint -from time import time - -from sklearn.datasets import fetch_20newsgroups -from sklearn.feature_extraction.text import CountVectorizer -from sklearn.feature_extraction.text import TfidfTransformer -from sklearn.linear_model import SGDClassifier -from sklearn.model_selection import GridSearchCV -from sklearn.pipeline import Pipeline - -import bentoml - -# Display progress logs on stdout -logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") - -# Load some categories from the training set -categories = [ - "alt.atheism", - "talk.religion.misc", -] - -# Uncomment the following to do the analysis on all the categories -# categories = None - -print("Loading 20 newsgroups dataset for categories:") -print(categories) - -data = fetch_20newsgroups(subset="train", categories=categories) -print("%d documents" % len(data.filenames)) -print("%d categories" % len(data.target_names)) -print() - -# Define a pipeline combining a text feature extractor with a simple classifier -pipeline = Pipeline( - [ - ("vect", CountVectorizer()), - ("tfidf", TfidfTransformer()), - ("clf", SGDClassifier(loss="log_loss")), - ] -) - -# Parameters to use for grid search. Uncommenting more parameters will give -# better exploring power but will increase processing time in a combinatorial -# way -parameters = { - "vect__max_df": (0.5, 0.75, 1.0), - # 'vect__max_features': (None, 5000, 10000, 50000), - "vect__ngram_range": ((1, 1), (1, 2)), # unigrams or bigrams - # 'tfidf__use_idf': (True, False), - # 'tfidf__norm': ('l1', 'l2'), - "clf__max_iter": (20,), - "clf__alpha": (0.00001, 0.000001), - "clf__penalty": ("l2", "elasticnet"), - # 'clf__max_iter': (10, 50, 80), -} - -# Find the best parameters for both the feature extraction and the -# classifier -grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=1) - -print("Performing grid search...") -print("pipeline:", [name for name, _ in pipeline.steps]) -print("parameters:") -pprint(parameters) -t0 = time() -grid_search.fit(data.data, data.target) -print("done in %0.3fs" % (time() - t0)) -print() - -print("Best score: %0.3f" % grid_search.best_score_) -best_parameters = grid_search.best_estimator_.get_params() -best_parameters = { - param_name: best_parameters[param_name] for param_name in sorted(parameters.keys()) -} -print(f"Best parameters set: {best_parameters}") - -bento_model = bentoml.sklearn.save_model( - "twenty_news_group", - grid_search.best_estimator_, - signatures={ - "predict": {"batchable": True, "batch_dim": 0}, - "predict_proba": {"batchable": True, "batch_dim": 0}, - }, - custom_objects={ - "target_names": data.target_names, - }, - metadata=best_parameters, -) -print(f"Model saved: {bento_model}") - -# Test running inference with BentoML runner -test_runner = bentoml.sklearn.get("twenty_news_group:latest").to_runner() -test_runner.init_local() -assert test_runner.predict.run(["hello"]) == grid_search.best_estimator_.predict( - ["hello"] -) diff --git a/examples/tensorflow2_keras/.bentoignore b/examples/tensorflow2_keras/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/tensorflow2_keras/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/tensorflow2_keras/README.md b/examples/tensorflow2_keras/README.md deleted file mode 100644 index 2655d95e5b6..00000000000 --- a/examples/tensorflow2_keras/README.md +++ /dev/null @@ -1,263 +0,0 @@ -# BentoML TensorFlow 2 Tutorial - -This is a sample project demonstrating usage of BentoML following the advanced TensorFlow2 quickstart here: https://www.tensorflow.org/tutorials/quickstart/advanced - -In this project, will train a model using Tensorflow2 library and the MNIST dataset. We will then build -an ML service for the model, serve the model behind an HTTP endpoint, and containerize the model -server as a docker image for production deployment. - -This project is also available to run from a notebook: https://github.com/bentoml/BentoML/blob/main/examples/tensorflow2/tensorflow2_mnist_demo.ipynb - -### Install Dependencies - -First install the requirements for this guide -```bash -pip install -r requirements.txt -``` - -For MacOS 11+ -```bash -pip install -r requirements-macos.txt -``` - -At the time of this writing, for M1 Macbooks, if you are getting the following error: -```bash -ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects -``` -Then you'll need to install and configure the h5py library through brew like this: -```bash -brew install hdf5 -export CPATH="/opt/homebrew/include/" -export HDF5_DIR=/opt/homebrew/ -``` - -Then try running the "pip install tensorflow-macos" again - - -### Model Training - -First step, train a classification model with tensorflow's built in mnist dataset and save the model -with BentoML: - -```bash -python train.py -``` - -If you look at the last line of train.py, you'll see: -````python -bentoml.tensorflow.save_model("tensorflow_mnist", model) -```` - - -This should save a new model in the BentoML local model store under model name "tensorflow_mnist: - -```bash -bentoml models list -``` - -Verify that the model can be loaded as runner from Python shell: - -```python -import numpy as np -import PIL.Image - -import bentoml - -runner = bentoml.tensorflow.get("tensorflow_mnist:latest").to_runner() -runner.init_local() # for debug only. please do not call this in the service - -img = PIL.Image.open("samples/0.png") -arr = np.array(img) / 255.0 -arr = arr.astype("float32") - -# add color channel dimension for greyscale image -arr = np.expand_dims(arr, 2) -runner.run(arr) # => returns an array of probabilities for numbers 0-9 -``` - -### Create ML Service - -The ML Service code is defined in the `service.py` file: - -```python -# service.py -import typing as t - -import numpy as np -import PIL.Image -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - - -mnist_runner = bentoml.tensorflow.get("tensorflow_mnist").to_runner() - -svc = bentoml.Service( - name="tensorflow_mnist_demo", - runners=[ - mnist_runner, - ], -) - - -@svc.api( - input=NumpyNdarray(dtype="float32", enforce_dtype=True), - output=NumpyNdarray(dtype="int64"), -) -async def predict_ndarray( - inp: "np.ndarray[t.Any, np.dtype[t.Any]]", -) -> "np.ndarray[t.Any, np.dtype[t.Any]]": - assert inp.shape == (28, 28) - - # extra channel dimension - inp = np.expand_dims(inp, 2) - output_tensor = await mnist_runner.async_run(inp) - return output_tensor.numpy() - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="int64")) -async def predict_image(f: PILImage) -> "np.ndarray[t.Any, np.dtype[t.Any]]": - assert isinstance(f, PILImage) - arr = np.array(f)/255.0 - assert arr.shape == (28, 28) - - # extra channel dimension - arr = np.expand_dims(arr, (0, 3)).astype("float32") - output_tensor = await mnist_runner.async_run(arr) - return output_tensor.numpy() -``` - -We defined two api endpoints `/predict_ndarray` and `/predict_image` with single runner. - -Start an API server locally to test the service code above: - -```bash -bentoml serve service:svc --development --reload -``` - -With the `--reload` flag, the API server will automatically restart when the source -file `service.py` is being edited, to boost your development productivity. - - -Verify the endpoint can be accessed locally: -```bash -curl -H "Content-Type: multipart/form-data" -F'fileobj=@samples/0.png;type=image/png' http://127.0.0.1:3000/predict_image -``` - -We can also do a simple local benchmark if [locust](https://locust.io) is installed: -```bash -locust --headless -u 100 -r 1000 --run-time 10m --host http://127.0.0.1:3000 -``` - - -### Build Bento for deployment - -A `bentofile` is already created in this directory for building a -Bento for the service: - -```yaml -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -exclude: -- "locustfile.py" -python: - lock_packages: false - packages: - - tensorflow -``` - -Note that we exclude `locustfile.py` from the bento using `exclude`. - -Simply run `bentoml build` from current directory to build a Bento with the latest -version of the `tensorflow_mnist` model. - -This may take a while when running for the first time for BentoML to resolve all dependency versions: - -``` -> bentoml build - -[01:14:04 AM] INFO Building BentoML service "tensorflow_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq" from build context - "/home/chef/workspace/gallery/tensorflow2" - INFO Packing model "tensorflow_mnist_demo:xm6jsddtu3y6zluuvcqvsoywq" from - "/home/chef/bentoml/models/tensorflow_mnist_demo/xm6jsddtu3y6zluuvcqvsoywq" - INFO Locking PyPI package versions.. -[01:14:05 AM] INFO - ██████╗░███████╗███╗░░██╗████████╗░█████╗░███╗░░░███╗██╗░░░░░ - ██╔══██╗██╔════╝████╗░██║╚══██╔══╝██╔══██╗████╗░████║██║░░░░░ - ██████╦╝█████╗░░██╔██╗██║░░░██║░░░██║░░██║██╔████╔██║██║░░░░░ - ██╔══██╗██╔══╝░░██║╚████║░░░██║░░░██║░░██║██║╚██╔╝██║██║░░░░░ - ██████╦╝███████╗██║░╚███║░░░██║░░░╚█████╔╝██║░╚═╝░██║███████╗ - ╚═════╝░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░░╚════╝░╚═╝░░░░░╚═╝╚══════╝ - - INFO Successfully built Bento(tag="tensorflow_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq") at - "/home/chef/bentoml/bentos/tensorflow_mnist_demo/bmygukdtzpy6zlc5vcqvsoywq/" -``` - -This Bento can now be loaded for serving: - -```bash -bentoml serve tensorflow_mnist_demo:latest -``` - -The Bento directory contains all code, files, models and configs required for running this service. -BentoML standarlizes this file structure which enables serving runtimes and deployment tools to be -built on top of it. By default, Bentos are managed under the `~/bentoml/bentos` directory: - -``` -> cd ~/bentoml/bentos/tensorflow_mnist_demo && cd $(cat latest) - -> tree -. -├── README.md -├── apis -│   └── openapi.yaml -├── bento.yaml -├── env -│   ├── conda -│   ├── docker -│   │   ├── Dockerfile -│   │   ├── entrypoint.sh -│   │   └── init.sh -│   └── python -│   ├── requirements.lock.txt -│   ├── requirements.txt -│   └── version.txt -├── models -│   └── tensorflow_mnist -│   ├── latest -│   └── wz77wdeuegyh2du5 -│   ├── assets -│   ├── model.yaml -│   ├── saved_model.pb -│   └── variables -│   ├── variables.data-00000-of-00001 -│   └── variables.index -└── src - ├── service.py - └── train.py - -11 directories, 16 files -``` - - -### Containerize Bento for deployment - -Make sure you have docker installed and docker deamon running, and the following command -will use your local docker environment to build a new docker image, containing the model -server configured from this Bento: - -```bash -bentoml containerize tensorflow_mnist_demo:latest -``` - -Test out the docker image built: -```bash -docker run -p 3000:3000 tensorflow_mnist_demo:latest -``` diff --git a/examples/tensorflow2_keras/bentofile.yaml b/examples/tensorflow2_keras/bentofile.yaml deleted file mode 100644 index f5e217c1cc4..00000000000 --- a/examples/tensorflow2_keras/bentofile.yaml +++ /dev/null @@ -1,14 +0,0 @@ -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -exclude: -- "locustfile.py" -python: - lock_packages: false - packages: - - tensorflow - - Pillow diff --git a/examples/tensorflow2_keras/locustfile.py b/examples/tensorflow2_keras/locustfile.py deleted file mode 100644 index c4c8103eec6..00000000000 --- a/examples/tensorflow2_keras/locustfile.py +++ /dev/null @@ -1,15 +0,0 @@ -from locust import HttpUser -from locust import between -from locust import task - -with open("samples/0.png", "rb") as f: - test_image_bytes = f.read() - - -class TensorFlow2MNISTLoadTestUser(HttpUser): - wait_time = between(0.9, 1.1) - - @task - def predict_image(self): - files = {"upload_files": ("1.png", test_image_bytes, "image/png")} - self.client.post("/predict_image", files=files) diff --git a/examples/tensorflow2_keras/requirements-macos.txt b/examples/tensorflow2_keras/requirements-macos.txt deleted file mode 100644 index 7ab4f93a7a7..00000000000 --- a/examples/tensorflow2_keras/requirements-macos.txt +++ /dev/null @@ -1,3 +0,0 @@ -tensorflow-macos -pillow -bentoml>=1.0.0 diff --git a/examples/tensorflow2_keras/requirements.txt b/examples/tensorflow2_keras/requirements.txt deleted file mode 100644 index 3c8c9705782..00000000000 --- a/examples/tensorflow2_keras/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -tensorflow -pillow diff --git a/examples/tensorflow2_keras/samples/0.png b/examples/tensorflow2_keras/samples/0.png deleted file mode 100644 index 7a93ea81868..00000000000 Binary files a/examples/tensorflow2_keras/samples/0.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/1.png b/examples/tensorflow2_keras/samples/1.png deleted file mode 100644 index 4629a3b1694..00000000000 Binary files a/examples/tensorflow2_keras/samples/1.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/2.png b/examples/tensorflow2_keras/samples/2.png deleted file mode 100644 index e56adf47bdd..00000000000 Binary files a/examples/tensorflow2_keras/samples/2.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/3.png b/examples/tensorflow2_keras/samples/3.png deleted file mode 100644 index d441e3d6dd0..00000000000 Binary files a/examples/tensorflow2_keras/samples/3.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/4.png b/examples/tensorflow2_keras/samples/4.png deleted file mode 100644 index 67a209ff513..00000000000 Binary files a/examples/tensorflow2_keras/samples/4.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/5.png b/examples/tensorflow2_keras/samples/5.png deleted file mode 100644 index 4defc334c95..00000000000 Binary files a/examples/tensorflow2_keras/samples/5.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/6.png b/examples/tensorflow2_keras/samples/6.png deleted file mode 100644 index 48106fa72a7..00000000000 Binary files a/examples/tensorflow2_keras/samples/6.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/7.png b/examples/tensorflow2_keras/samples/7.png deleted file mode 100644 index 4715175eac2..00000000000 Binary files a/examples/tensorflow2_keras/samples/7.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/8.png b/examples/tensorflow2_keras/samples/8.png deleted file mode 100644 index f5e6652c8c1..00000000000 Binary files a/examples/tensorflow2_keras/samples/8.png and /dev/null differ diff --git a/examples/tensorflow2_keras/samples/9.png b/examples/tensorflow2_keras/samples/9.png deleted file mode 100644 index 1ad484752cf..00000000000 Binary files a/examples/tensorflow2_keras/samples/9.png and /dev/null differ diff --git a/examples/tensorflow2_keras/service.py b/examples/tensorflow2_keras/service.py deleted file mode 100644 index 821568032f6..00000000000 --- a/examples/tensorflow2_keras/service.py +++ /dev/null @@ -1,25 +0,0 @@ -import numpy as np -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - -mnist_runner = bentoml.tensorflow.get("tensorflow_mnist:latest").to_runner() - -svc = bentoml.Service( - name="tensorflow_mnist_demo", - runners=[mnist_runner], -) - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="float32")) -async def predict_image(f: PILImage) -> "np.ndarray": - assert isinstance(f, PILImage) - arr = np.array(f) / 255.0 - assert arr.shape == (28, 28) - - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension - arr = np.expand_dims(arr, (0, 3)).astype("float32") # reshape to [1, 28, 28, 1] - return await mnist_runner.async_run(arr) diff --git a/examples/tensorflow2_keras/tensorflow2_mnist_demo.ipynb b/examples/tensorflow2_keras/tensorflow2_mnist_demo.ipynb deleted file mode 100644 index 8c48d6c665b..00000000000 --- a/examples/tensorflow2_keras/tensorflow2_mnist_demo.ipynb +++ /dev/null @@ -1,398 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a682ea0b", - "metadata": {}, - "source": [ - "# BentoML TensorFlow2 MNIST Tutorial\n", - "\n", - "Link to source code: https://github.com/bentoml/BentoML/tree/main/examples/tensorflow2_keras/\n", - "\n", - "The code is based on the TensorFlow2 example code here: https://www.tensorflow.org/tutorials/quickstart/advanced\n", - "\n", - "Install required dependencies:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ad00863", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -r requirements.txt" - ] - }, - { - "cell_type": "markdown", - "id": "84988464", - "metadata": { - "raw_mimetype": "text/markdown" - }, - "source": [ - "If you are running MacOS use the following pip command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31a9cdfa", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -r requirements-macos.txt" - ] - }, - { - "cell_type": "markdown", - "id": "45393b74", - "metadata": {}, - "source": [ - "## Define the model\n", - "\n", - "First let's initiate the dataset we'll be using and then create a Model which we will use to train." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "caeff07d", - "metadata": {}, - "outputs": [], - "source": [ - "import tensorflow as tf\n", - "\n", - "from tensorflow.keras.layers import Dense, Flatten, Conv2D\n", - "from tensorflow.keras import Model\n", - "\n", - "import bentoml\n", - "\n", - "print(\"TensorFlow version:\", tf.__version__)\n", - "\n", - "mnist = tf.keras.datasets.mnist\n", - "\n", - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", - "\n", - "x_train = x_train.reshape(60000, 28, 28, 1).astype(\"float32\") / 255\n", - "x_test = x_test.reshape(10000, 28, 28, 1).astype(\"float32\") / 255\n", - "\n", - "# Reserve 10,000 samples for validation\n", - "x_val = x_train[-10000:]\n", - "y_val = y_train[-10000:]\n", - "x_train = x_train[:-10000]\n", - "y_train = y_train[:-10000]\n", - "\n", - "\n", - "class MyModel(Model):\n", - " def __init__(self):\n", - " super(MyModel, self).__init__()\n", - " self.conv1 = Conv2D(32, 3, activation=\"relu\")\n", - " self.flatten = Flatten()\n", - " self.d1 = Dense(128, activation=\"relu\")\n", - " self.d2 = Dense(10)\n", - "\n", - " @tf.function(input_signature=[tf.TensorSpec([None, 28, 28, 1], tf.float32)])\n", - " def call(self, x):\n", - " x = self.conv1(x)\n", - " x = self.flatten(x)\n", - " x = self.d1(x)\n", - " return self.d2(x)\n", - "\n", - "\n", - "# Create an instance of the model\n", - "model = MyModel()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6fd7e68a-427b-4563-9b34-d8465c2db832", - "metadata": {}, - "outputs": [], - "source": [ - "model(x_test[0:1])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7b6f8c40-b4b9-4824-b9cf-aea4959c27a5", - "metadata": {}, - "outputs": [], - "source": [ - "model.compile(\n", - " optimizer=tf.keras.optimizers.Adam(), # Optimizer\n", - " # Loss function to minimize\n", - " loss=tf.keras.losses.SparseCategoricalCrossentropy(),\n", - " # List of metrics to monitor\n", - " metrics=[tf.keras.metrics.SparseCategoricalAccuracy()],\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "38888f0a", - "metadata": {}, - "source": [ - "## Training and Saving the model\n", - "\n", - "Then we initialize some simple tensorflow helper functions and create the training and testing methods" - ] - }, - { - "cell_type": "markdown", - "id": "ad2104a6", - "metadata": {}, - "source": [ - "### Training the model\n", - "\n", - "As provided by TensorFlow, we train and test the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6b85432d-4954-4321-bdcd-a65e292d9db3", - "metadata": {}, - "outputs": [], - "source": [ - "history = model.fit(\n", - " x_train,\n", - " y_train,\n", - " batch_size=64,\n", - " epochs=2,\n", - " # We pass some validation for\n", - " # monitoring validation loss and metrics\n", - " # at the end of each epoch\n", - " validation_data=(x_val, y_val),\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fae77afe-a3d7-45d3-a86c-d1bd59dde8b5", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "92d9b23c", - "metadata": {}, - "source": [ - "### Saving the model\n", - "\n", - "Finally, we make one call to the bentoml library to save this tensorflow model to be used later as part of the prediction service that we will create." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fe9c4a7", - "metadata": {}, - "outputs": [], - "source": [ - "bentoml.tensorflow.save_model(\n", - " \"tensorflow_mnist\",\n", - " model,\n", - " signatures={\"__call__\": {\"batchable\": True, \"batch_dim\": 0}},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bdf35e55", - "metadata": {}, - "source": [ - "## Create a BentoML Service for serving the model\n", - "\n", - "Note: using `%%writefile` here because `bentoml.Service` instance must be created in a separate `.py` file\n", - "\n", - "Even though we have only one model, we can create as many api endpoints as we want. Here we create two end points `predict_ndarray` and `predict_image`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f3e2f590", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile service.py\n", - "\n", - "import bentoml\n", - "import numpy as np\n", - "from bentoml.io import Image, NumpyNdarray\n", - "from PIL.Image import Image as PILImage\n", - "\n", - "mnist_runner = bentoml.tensorflow.get(\"tensorflow_mnist:latest\").to_runner()\n", - "\n", - "svc = bentoml.Service(\n", - " name=\"tensorflow_mnist_demo\",\n", - " runners=[mnist_runner],\n", - ")\n", - "\n", - "@svc.api(input=Image(), output=NumpyNdarray(dtype=\"float32\"))\n", - "async def predict_image(f: PILImage) -> \"np.ndarray\":\n", - " assert isinstance(f, PILImage)\n", - " arr = np.array(f)/255.0\n", - " assert arr.shape == (28, 28)\n", - "\n", - " # We are using greyscale image and our PyTorch model expect one\n", - " # extra channel dimension\n", - " arr = np.expand_dims(arr, (0, 3)).astype(\"float32\") # reshape to [1, 28, 28, 1]\n", - " return await mnist_runner.async_run(arr)" - ] - }, - { - "cell_type": "markdown", - "id": "590147aa", - "metadata": {}, - "source": [ - "Start a dev model server to test out the service defined above" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "29173871", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve service.py:svc --reload" - ] - }, - { - "cell_type": "markdown", - "id": "606c1b36", - "metadata": {}, - "source": [ - "Now you can use something like:\n", - "\n", - "`curl -H \"Content-Type: multipart/form-data\" -F'fileobj=@samples/0.png;type=image/png' http://127.0.0.1:3000/predict_image`\n", - " \n", - "to send an image to the digit recognition service." - ] - }, - { - "cell_type": "markdown", - "id": "6372c692", - "metadata": {}, - "source": [ - "We can also do a simple local benchmark if [locust](https://locust.io/) is installed:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a88e9879", - "metadata": {}, - "outputs": [], - "source": [ - "!locust --headless -u 500 -r 10 --run-time 10m --host http://127.0.0.1:3000" - ] - }, - { - "cell_type": "markdown", - "id": "c7f03564", - "metadata": {}, - "source": [ - "## Build a Bento for distribution and deployment" - ] - }, - { - "cell_type": "markdown", - "id": "f51f7406", - "metadata": {}, - "source": [ - "A `bentofile` is already created in this directory for building a Bento for the service:" - ] - }, - { - "cell_type": "markdown", - "id": "3757297b", - "metadata": {}, - "source": [ - "```yaml\n", - "service: \"service:svc\"\n", - "description: \"file: ./README.md\"\n", - "labels:\n", - " owner: bentoml-team\n", - " stage: demo\n", - "include:\n", - "- \"*.py\"\n", - "exclude:\n", - "- \"tests/\"\n", - "python:\n", - " lock_packages: False\n", - " packages:\n", - " - tensorflow\n", - " - Pillow\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "2aa8e50a", - "metadata": {}, - "source": [ - "Note that we exclude `tests/` from the bento using exclude.\n", - "\n", - "Simply run `bentoml build` from current directory to build a Bento with the latest version of the `tensorflow_mnist` model. This may take a while when running for the first time for BentoML to resolve all dependency versions:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d37b339", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml build" - ] - }, - { - "cell_type": "markdown", - "id": "36306933", - "metadata": {}, - "source": [ - "Starting a dev server with the Bento build:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ec4b9dff", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve tensorflow2_demo:latest" - ] - } - ], - "metadata": { - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "tf2-py3.7", - "language": "python", - "name": "tf2-py3.7" - }, - "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.7.13" - }, - "name": "tensorflow2_mnist_demo.ipynb" - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/tensorflow2_keras/tests/conftest.py b/examples/tensorflow2_keras/tests/conftest.py deleted file mode 100644 index f8ebb4b4151..00000000000 --- a/examples/tensorflow2_keras/tests/conftest.py +++ /dev/null @@ -1,21 +0,0 @@ -# pylint: disable=redefined-outer-name - -import pathlib -import subprocess -import typing as t - -import pytest - -from bentoml.testing.server import host_bento - - -def pytest_configure(config): # pylint: disable=unused-argument - import sys - - subprocess.check_call([sys.executable, pathlib.Path("train.py").absolute()]) - - -@pytest.fixture(scope="session") -def host() -> t.Generator[str, None, None]: - with host_bento(bento="tensorflow_mnist_demo:latest") as host: - yield host diff --git a/examples/tensorflow2_keras/tests/test_prediction.py b/examples/tensorflow2_keras/tests/test_prediction.py deleted file mode 100644 index 46070dcd530..00000000000 --- a/examples/tensorflow2_keras/tests/test_prediction.py +++ /dev/null @@ -1,72 +0,0 @@ -# pylint: disable=redefined-outer-name -# type: ignore[no-untyped-def] - -import asyncio -import json - -import numpy as np -import pytest - -from bentoml.testing.utils import async_request - - -@pytest.fixture() -def img_data(): - import PIL.Image - - images = {} - digits = list(range(10)) - for digit in digits: - img_path = f"samples/{digit}.png" - with open(img_path, "rb") as f: - img_bytes = f.read() - img_arr = np.array(PIL.Image.open(f"samples/{digit}.png")) - img_arr = img_arr / 255.0 - img_dic = { - "bytes": img_bytes, - "array": img_arr, - } - images[digit] = img_dic - - return images - - -@pytest.mark.asyncio -async def test_numpy(host, img_data): - datas = [json.dumps(d["array"].tolist()) for d in img_data.values()] - - # request one by one - for data in datas[:-3]: - await async_request( - "POST", - f"http://{host}/predict_ndarray", - headers={"Content-Type": "application/json"}, - data=datas[0], - assert_status=200, - ) - - # request all at once, should trigger micro-batch prediction - tasks = tuple( - async_request( - "POST", - f"http://{host}/predict_ndarray", - headers={"Content-Type": "application/json"}, - data=data, - assert_status=200, - ) - for data in datas[-3:] - ) - await asyncio.gather(*tasks) - - -@pytest.mark.asyncio -async def test_image(host, img_data): - for d in img_data.values(): - img_bytes = d["bytes"] - await async_request( - "POST", - f"http://{host}/predict_image", - data=img_bytes, - headers={"Content-Type": "image/png"}, - assert_status=200, - ) diff --git a/examples/tensorflow2_keras/train.py b/examples/tensorflow2_keras/train.py deleted file mode 100644 index f5ea85f1493..00000000000 --- a/examples/tensorflow2_keras/train.py +++ /dev/null @@ -1,67 +0,0 @@ -# pylint: disable=no-name-in-module,redefined-outer-name,abstract-method -import tensorflow as tf -from tensorflow.keras import Model -from tensorflow.keras.layers import Conv2D -from tensorflow.keras.layers import Dense -from tensorflow.keras.layers import Flatten - -import bentoml - -print("TensorFlow version:", tf.__version__) - - -class MyModel(Model): - def __init__(self): - super(MyModel, self).__init__() - self.conv1 = Conv2D(32, 3, activation="relu") - self.flatten = Flatten() - self.d1 = Dense(128, activation="relu") - self.d2 = Dense(10) - - @tf.function(input_signature=[tf.TensorSpec([None, 28, 28, 1], tf.float32)]) - def call(self, x): - x = self.conv1(x) - x = self.flatten(x) - x = self.d1(x) - return self.d2(x) - - -if __name__ == "__main__": - mnist = tf.keras.datasets.mnist - - (x_train, y_train), (x_test, y_test) = mnist.load_data() - - x_train = x_train.reshape(60000, 28, 28, 1).astype("float32") / 255 - x_test = x_test.reshape(10000, 28, 28, 1).astype("float32") / 255 - - # Reserve 10,000 samples for validation - x_val = x_train[-10000:] - y_val = y_train[-10000:] - x_train = x_train[:-10000] - y_train = y_train[:-10000] - - # Create an instance of the model - model = MyModel() - model.compile( - optimizer=tf.keras.optimizers.Adam(), # Optimizer - # Loss function to minimize - loss=tf.keras.losses.SparseCategoricalCrossentropy(), - # List of metrics to monitor - metrics=[tf.keras.metrics.SparseCategoricalAccuracy()], - ) - history = model.fit( - x_train, - y_train, - batch_size=64, - epochs=2, - # We pass some validation for - # monitoring validation loss and metrics - # at the end of each epoch - validation_data=(x_val, y_val), - ) - - bentoml.tensorflow.save_model( - "tensorflow_mnist", - model, - signatures={"__call__": {"batchable": True, "batch_dim": 0}}, - ) diff --git a/examples/tensorflow2_native/.bentoignore b/examples/tensorflow2_native/.bentoignore deleted file mode 100644 index f4e455d1cb8..00000000000 --- a/examples/tensorflow2_native/.bentoignore +++ /dev/null @@ -1,4 +0,0 @@ -__pycache__/ -*.py[cod] -*$py.class -.ipynb_checkpoints diff --git a/examples/tensorflow2_native/README.md b/examples/tensorflow2_native/README.md deleted file mode 100644 index 654ae65e211..00000000000 --- a/examples/tensorflow2_native/README.md +++ /dev/null @@ -1,248 +0,0 @@ -# BentoML TensorFlow 2 Tutorial - -This is a sample project demonstrating usage of BentoML following the advanced TensorFlow2 quickstart here: https://www.tensorflow.org/tutorials/quickstart/advanced - -In this project, will train a model using Tensorflow2 library and the MNIST dataset. We will then build -an ML service for the model, serve the model behind an HTTP endpoint, and containerize the model -server as a docker image for production deployment. - -This project is also available to run from a notebook: https://github.com/bentoml/BentoML/blob/main/examples/tensorflow2/tensorflow2_mnist_demo.ipynb - -### Install Dependencies - -First install the requirements for this guide -```bash -pip install -r requirements.txt -``` - -For MacOS 11+ -```bash -pip install -r requirements-macos.txt -``` - -At the time of this writing, for M1 Macbooks, if you are getting the following error: -```bash -ERROR: Could not build wheels for h5py, which is required to install pyproject.toml-based projects -``` -Then you'll need to install and configure the h5py library through brew like this: -```bash -brew install hdf5 -export CPATH="/opt/homebrew/include/" -export HDF5_DIR=/opt/homebrew/ -``` - -Then try running the "pip install tensorflow-macos" again - - -### Model Training - -First step, train a classification model with tensorflow's built in mnist dataset and save the model -with BentoML: - -```bash -python train.py -``` - -If you look at the last line of train.py, you'll see: -````python -bentoml.tensorflow.save_model("tensorflow_mnist", model) -```` - - -This should save a new model in the BentoML local model store under model name "tensorflow_mnist: - -```bash -bentoml models list -``` - -Verify that the model can be loaded as runner from Python shell: - -```python -import numpy as np -import PIL.Image - -import bentoml - -runner = bentoml.tensorflow.get("tensorflow_mnist:latest").to_runner() -runner.init_local() # for debug only. please do not call this in the service - -img = PIL.Image.open("samples/0.png") -arr = np.array(img) / 255.0 -arr = arr.astype("float32") - -# add color channel dimension for greyscale image -arr = np.expand_dims(arr, 2) -runner.run(arr) # => returns an array of probabilities for numbers 0-9 -``` - -### Create ML Service - -The ML Service code is defined in the `service.py` file: - -```python -# service.py -import typing as t - -import numpy as np -import PIL.Image -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - - -mnist_runner = bentoml.tensorflow.get("tensorflow_mnist").to_runner() - -svc = bentoml.Service( - name="tensorflow_mnist_demo", - runners=[ - mnist_runner, - ], -) - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="int64")) -async def predict_image(f: PILImage) -> "np.ndarray[t.Any, np.dtype[t.Any]]": - assert isinstance(f, PILImage) - arr = np.array(f)/255.0 - assert arr.shape == (28, 28) - - # extra channel dimension - arr = np.expand_dims(arr, (0, 3)).astype("float32") - output_tensor = await mnist_runner.async_run(arr) - return output_tensor.numpy() -``` - -We defined two api endpoints `/predict_ndarray` and `/predict_image` with single runner. - -Start an API server locally to test the service code above: - -```bash -bentoml serve service:svc --development --reload -``` - -With the `--reload` flag, the API server will automatically restart when the source -file `service.py` is being edited, to boost your development productivity. - - -Verify the endpoint can be accessed locally: -```bash -curl -H "Content-Type: multipart/form-data" -F'fileobj=@samples/0.png;type=image/png' http://127.0.0.1:3000/predict_image -``` - -We can also do a simple local benchmark if [locust](https://locust.io) is installed: -```bash -locust --headless -u 100 -r 1000 --run-time 10m --host http://127.0.0.1:3000 -``` - - -### Build Bento for deployment - -A `bentofile` is already created in this directory for building a -Bento for the service: - -```yaml -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -exclude: -- "locustfile.py" -python: - lock_packages: false - packages: - - tensorflow -``` - -Note that we exclude `locustfile.py` from the bento using `exclude`. - -Simply run `bentoml build` from current directory to build a Bento with the latest -version of the `tensorflow_mnist` model. - -This may take a while when running for the first time for BentoML to resolve all dependency versions: - -``` -> bentoml build - -[01:14:04 AM] INFO Building BentoML service "tensorflow_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq" from build context - "/home/chef/workspace/gallery/tensorflow2" - INFO Packing model "tensorflow_mnist_demo:xm6jsddtu3y6zluuvcqvsoywq" from - "/home/chef/bentoml/models/tensorflow_mnist_demo/xm6jsddtu3y6zluuvcqvsoywq" - INFO Locking PyPI package versions.. -[01:14:05 AM] INFO - ██████╗░███████╗███╗░░██╗████████╗░█████╗░███╗░░░███╗██╗░░░░░ - ██╔══██╗██╔════╝████╗░██║╚══██╔══╝██╔══██╗████╗░████║██║░░░░░ - ██████╦╝█████╗░░██╔██╗██║░░░██║░░░██║░░██║██╔████╔██║██║░░░░░ - ██╔══██╗██╔══╝░░██║╚████║░░░██║░░░██║░░██║██║╚██╔╝██║██║░░░░░ - ██████╦╝███████╗██║░╚███║░░░██║░░░╚█████╔╝██║░╚═╝░██║███████╗ - ╚═════╝░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░░╚════╝░╚═╝░░░░░╚═╝╚══════╝ - - INFO Successfully built Bento(tag="tensorflow_mnist_demo:bmygukdtzpy6zlc5vcqvsoywq") at - "/home/chef/bentoml/bentos/tensorflow_mnist_demo/bmygukdtzpy6zlc5vcqvsoywq/" -``` - -This Bento can now be loaded for serving: - -```bash -bentoml serve tensorflow_mnist_demo:latest -``` - -The Bento directory contains all code, files, models and configs required for running this service. -BentoML standarlizes this file structure which enables serving runtimes and deployment tools to be -built on top of it. By default, Bentos are managed under the `~/bentoml/bentos` directory: - -``` -> cd ~/bentoml/bentos/tensorflow_mnist_demo && cd $(cat latest) - -> tree -. -├── README.md -├── apis -│   └── openapi.yaml -├── bento.yaml -├── env -│   ├── conda -│   ├── docker -│   │   ├── Dockerfile -│   │   ├── entrypoint.sh -│   │   └── init.sh -│   └── python -│   ├── requirements.lock.txt -│   ├── requirements.txt -│   └── version.txt -├── models -│   └── tensorflow_mnist -│   ├── latest -│   └── wz77wdeuegyh2du5 -│   ├── assets -│   ├── model.yaml -│   ├── saved_model.pb -│   └── variables -│   ├── variables.data-00000-of-00001 -│   └── variables.index -└── src - ├── service.py - └── train.py - -11 directories, 16 files -``` - - -### Containerize Bento for deployment - -Make sure you have docker installed and docker deamon running, and the following command -will use your local docker environment to build a new docker image, containing the model -server configured from this Bento: - -```bash -bentoml containerize tensorflow_mnist_demo:latest -``` - -Test out the docker image built: -```bash -docker run -p 3000:3000 tensorflow_mnist_demo:latest -``` diff --git a/examples/tensorflow2_native/bentofile.yaml b/examples/tensorflow2_native/bentofile.yaml deleted file mode 100644 index f5e217c1cc4..00000000000 --- a/examples/tensorflow2_native/bentofile.yaml +++ /dev/null @@ -1,14 +0,0 @@ -service: "service:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: -- "*.py" -exclude: -- "locustfile.py" -python: - lock_packages: false - packages: - - tensorflow - - Pillow diff --git a/examples/tensorflow2_native/locustfile.py b/examples/tensorflow2_native/locustfile.py deleted file mode 100644 index c4c8103eec6..00000000000 --- a/examples/tensorflow2_native/locustfile.py +++ /dev/null @@ -1,15 +0,0 @@ -from locust import HttpUser -from locust import between -from locust import task - -with open("samples/0.png", "rb") as f: - test_image_bytes = f.read() - - -class TensorFlow2MNISTLoadTestUser(HttpUser): - wait_time = between(0.9, 1.1) - - @task - def predict_image(self): - files = {"upload_files": ("1.png", test_image_bytes, "image/png")} - self.client.post("/predict_image", files=files) diff --git a/examples/tensorflow2_native/requirements-macos.txt b/examples/tensorflow2_native/requirements-macos.txt deleted file mode 100644 index 7ab4f93a7a7..00000000000 --- a/examples/tensorflow2_native/requirements-macos.txt +++ /dev/null @@ -1,3 +0,0 @@ -tensorflow-macos -pillow -bentoml>=1.0.0 diff --git a/examples/tensorflow2_native/requirements.txt b/examples/tensorflow2_native/requirements.txt deleted file mode 100644 index 80374bccdf6..00000000000 --- a/examples/tensorflow2_native/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -tensorflow -pillow -bentoml>=1.0.0 diff --git a/examples/tensorflow2_native/samples/0.png b/examples/tensorflow2_native/samples/0.png deleted file mode 100644 index 7a93ea81868..00000000000 Binary files a/examples/tensorflow2_native/samples/0.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/1.png b/examples/tensorflow2_native/samples/1.png deleted file mode 100644 index 4629a3b1694..00000000000 Binary files a/examples/tensorflow2_native/samples/1.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/2.png b/examples/tensorflow2_native/samples/2.png deleted file mode 100644 index e56adf47bdd..00000000000 Binary files a/examples/tensorflow2_native/samples/2.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/3.png b/examples/tensorflow2_native/samples/3.png deleted file mode 100644 index d441e3d6dd0..00000000000 Binary files a/examples/tensorflow2_native/samples/3.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/4.png b/examples/tensorflow2_native/samples/4.png deleted file mode 100644 index 67a209ff513..00000000000 Binary files a/examples/tensorflow2_native/samples/4.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/5.png b/examples/tensorflow2_native/samples/5.png deleted file mode 100644 index 4defc334c95..00000000000 Binary files a/examples/tensorflow2_native/samples/5.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/6.png b/examples/tensorflow2_native/samples/6.png deleted file mode 100644 index 48106fa72a7..00000000000 Binary files a/examples/tensorflow2_native/samples/6.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/7.png b/examples/tensorflow2_native/samples/7.png deleted file mode 100644 index 4715175eac2..00000000000 Binary files a/examples/tensorflow2_native/samples/7.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/8.png b/examples/tensorflow2_native/samples/8.png deleted file mode 100644 index f5e6652c8c1..00000000000 Binary files a/examples/tensorflow2_native/samples/8.png and /dev/null differ diff --git a/examples/tensorflow2_native/samples/9.png b/examples/tensorflow2_native/samples/9.png deleted file mode 100644 index 1ad484752cf..00000000000 Binary files a/examples/tensorflow2_native/samples/9.png and /dev/null differ diff --git a/examples/tensorflow2_native/service.py b/examples/tensorflow2_native/service.py deleted file mode 100644 index 821568032f6..00000000000 --- a/examples/tensorflow2_native/service.py +++ /dev/null @@ -1,25 +0,0 @@ -import numpy as np -from PIL.Image import Image as PILImage - -import bentoml -from bentoml.io import Image -from bentoml.io import NumpyNdarray - -mnist_runner = bentoml.tensorflow.get("tensorflow_mnist:latest").to_runner() - -svc = bentoml.Service( - name="tensorflow_mnist_demo", - runners=[mnist_runner], -) - - -@svc.api(input=Image(), output=NumpyNdarray(dtype="float32")) -async def predict_image(f: PILImage) -> "np.ndarray": - assert isinstance(f, PILImage) - arr = np.array(f) / 255.0 - assert arr.shape == (28, 28) - - # We are using greyscale image and our PyTorch model expect one - # extra channel dimension - arr = np.expand_dims(arr, (0, 3)).astype("float32") # reshape to [1, 28, 28, 1] - return await mnist_runner.async_run(arr) diff --git a/examples/tensorflow2_native/tensorflow2_mnist_demo.ipynb b/examples/tensorflow2_native/tensorflow2_mnist_demo.ipynb deleted file mode 100644 index 9b9268febba..00000000000 --- a/examples/tensorflow2_native/tensorflow2_mnist_demo.ipynb +++ /dev/null @@ -1,453 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a682ea0b", - "metadata": {}, - "source": [ - "# BentoML TensorFlow2 MNIST Tutorial\n", - "\n", - "Link to source code: https://github.com/bentoml/BentoML/tree/main/examples/tensorflow2_mnist/\n", - "\n", - "The code is based on the TensorFlow2 example code here: https://www.tensorflow.org/tutorials/quickstart/advanced\n", - "\n", - "Install required dependencies:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ad00863", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -r requirements.txt" - ] - }, - { - "cell_type": "markdown", - "id": "84988464", - "metadata": { - "raw_mimetype": "text/markdown" - }, - "source": [ - "If you are running MacOS use the following pip command:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "31a9cdfa", - "metadata": {}, - "outputs": [], - "source": [ - "%pip install -r requirements-macos.txt" - ] - }, - { - "cell_type": "markdown", - "id": "45393b74", - "metadata": {}, - "source": [ - "## Define the model\n", - "\n", - "First let's initiate the dataset we'll be using and then create a Model which we will use to train." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ef7a6ef8-c18b-4f29-b413-e5055648c1cc", - "metadata": {}, - "outputs": [], - "source": [ - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", - "x_train.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "caeff07d", - "metadata": {}, - "outputs": [], - "source": [ - "import tensorflow as tf\n", - "\n", - "from tensorflow.keras.layers import Dense, Flatten, Conv2D\n", - "\n", - "\n", - "import bentoml\n", - "\n", - "print(\"TensorFlow version:\", tf.__version__)\n", - "\n", - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", - "x_train, x_test = x_train / 255.0, x_test / 255.0\n", - "\n", - "# Add a channels dimension\n", - "x_train = x_train.reshape(60000, 28, 28, 1).astype(\"float32\")\n", - "x_test = x_test.reshape(10000, 28, 28, 1).astype(\"float32\")\n", - "\n", - "train_ds = (\n", - " tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(32)\n", - ")\n", - "\n", - "test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)\n", - "\n", - "\n", - "class MyModel(tf.Module):\n", - " def __init__(self):\n", - " super(MyModel, self).__init__()\n", - " self.conv1 = Conv2D(32, 3, activation=\"relu\")\n", - " self.flatten = Flatten()\n", - " self.d1 = Dense(128, activation=\"relu\")\n", - " self.d2 = Dense(10)\n", - "\n", - " @tf.function(input_signature=[tf.TensorSpec([None, 28, 28, 1], tf.float32)])\n", - " def __call__(self, x):\n", - " x = self.conv1(x)\n", - " x = self.flatten(x)\n", - " x = self.d1(x)\n", - " return self.d2(x)\n", - "\n", - "\n", - "# Create an instance of the model\n", - "model = MyModel()" - ] - }, - { - "cell_type": "markdown", - "id": "38888f0a", - "metadata": {}, - "source": [ - "## Training and Saving the model\n", - "\n", - "Then we initialize some simple tensorflow helper functions and create the training and testing methods" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c62db15c", - "metadata": {}, - "outputs": [], - "source": [ - "loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)\n", - "\n", - "optimizer = tf.keras.optimizers.Adam()\n", - "\n", - "train_loss = tf.keras.metrics.Mean(name=\"train_loss\")\n", - "train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name=\"train_accuracy\")\n", - "\n", - "test_loss = tf.keras.metrics.Mean(name=\"test_loss\")\n", - "test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name=\"test_accuracy\")" - ] - }, - { - "cell_type": "markdown", - "id": "788c19a0", - "metadata": {}, - "source": [ - "### Training and Testing TF Steps\n", - "\n", - "Now we assemble our TensorFlow2 training and testing steps. We use @tf.function as the new way (a part of TensorFlow2) to initialize a TensorFlow session.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0b2fdd72", - "metadata": {}, - "outputs": [], - "source": [ - "def train_step(images, labels):\n", - " with tf.GradientTape() as tape:\n", - " # training=True is only needed if there are layers with different\n", - " # behavior during training versus inference (e.g. Dropout).\n", - " predictions = model(images)\n", - " loss = loss_object(labels, predictions)\n", - " gradients = tape.gradient(loss, model.trainable_variables)\n", - " optimizer.apply_gradients(zip(gradients, model.trainable_variables))\n", - "\n", - " train_loss(loss)\n", - " train_accuracy(labels, predictions)\n", - "\n", - "\n", - "def test_step(images, labels):\n", - " # training=False is only needed if there are layers with different\n", - " # behavior during training versus inference (e.g. Dropout).\n", - " predictions = model(images)\n", - " t_loss = loss_object(labels, predictions)\n", - "\n", - " test_loss(t_loss)\n", - " test_accuracy(labels, predictions)" - ] - }, - { - "cell_type": "markdown", - "id": "ad2104a6", - "metadata": {}, - "source": [ - "### Training the model\n", - "\n", - "As provided by TensorFlow, we train and test the model." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d3d311c5", - "metadata": {}, - "outputs": [], - "source": [ - "EPOCHS = 2\n", - "\n", - "for epoch in range(EPOCHS):\n", - " # Reset the metrics at the start of the next epoch\n", - " train_loss.reset_states()\n", - " train_accuracy.reset_states()\n", - " test_loss.reset_states()\n", - " test_accuracy.reset_states()\n", - "\n", - " for images, labels in train_ds:\n", - " train_step(images, labels)\n", - "\n", - " for test_images, test_labels in test_ds:\n", - " test_step(test_images, test_labels)\n", - "\n", - " print(\n", - " f\"Epoch {epoch + 1}, \"\n", - " f\"Loss: {train_loss.result()}, \"\n", - " f\"Accuracy: {train_accuracy.result() * 100}, \"\n", - " f\"Test Loss: {test_loss.result()}, \"\n", - " f\"Test Accuracy: {test_accuracy.result() * 100}\"\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "92d9b23c", - "metadata": {}, - "source": [ - "### Saving the model\n", - "\n", - "Finally, we make one call to the bentoml library to save this tensorflow model to be used later as part of the prediction service that we will create." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fe9c4a7", - "metadata": {}, - "outputs": [], - "source": [ - "bentoml.tensorflow.save_model(\n", - " \"tensorflow_mnist\",\n", - " model,\n", - " signatures={\"__call__\": {\"batchable\": True, \"batch_dim\": 0}},\n", - ")" - ] - }, - { - "cell_type": "markdown", - "id": "bdf35e55", - "metadata": {}, - "source": [ - "## Create a BentoML Service for serving the model\n", - "\n", - "Note: using `%%writefile` here because `bentoml.Service` instance must be created in a separate `.py` file\n", - "\n", - "Even though we have only one model, we can create as many api endpoints as we want. Here we create two end points `predict_ndarray` and `predict_image`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f3e2f590", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile service.py\n", - "\n", - "import bentoml\n", - "import numpy as np\n", - "from bentoml.io import Image, NumpyNdarray\n", - "from PIL.Image import Image as PILImage\n", - "\n", - "mnist_runner = bentoml.tensorflow.get(\"tensorflow_mnist:latest\").to_runner()\n", - "\n", - "svc = bentoml.Service(\n", - " name=\"tensorflow_mnist_demo\",\n", - " runners=[mnist_runner],\n", - ")\n", - "\n", - "@svc.api(input=Image(), output=NumpyNdarray(dtype=\"float32\"))\n", - "async def predict_image(f: PILImage) -> \"np.ndarray\":\n", - " assert isinstance(f, PILImage)\n", - " arr = np.array(f)/255.0\n", - " assert arr.shape == (28, 28)\n", - "\n", - " # We are using greyscale image and our PyTorch model expect one\n", - " # extra channel dimension\n", - " arr = np.expand_dims(arr, (0, 3)).astype(\"float32\") # reshape to [1, 28, 28, 1]\n", - " return await mnist_runner.async_run(arr)" - ] - }, - { - "cell_type": "markdown", - "id": "590147aa", - "metadata": {}, - "source": [ - "Start a dev model server to test out the service defined above" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "29173871", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "^C\n" - ] - } - ], - "source": [ - "!bentoml serve service.py:svc --reload" - ] - }, - { - "cell_type": "markdown", - "id": "606c1b36", - "metadata": {}, - "source": [ - "Now you can use something like:\n", - "\n", - "`curl -H \"Content-Type: multipart/form-data\" -F'fileobj=@samples/0.png;type=image/png' http://127.0.0.1:3000/predict_image`\n", - " \n", - "to send an image to the digit recognition service." - ] - }, - { - "cell_type": "markdown", - "id": "6372c692", - "metadata": {}, - "source": [ - "We can also do a simple local benchmark if [locust](https://locust.io/) is installed:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a88e9879", - "metadata": {}, - "outputs": [], - "source": [ - "!locust --headless -u 500 -r 10 --run-time 10m --host http://127.0.0.1:3000" - ] - }, - { - "cell_type": "markdown", - "id": "c7f03564", - "metadata": {}, - "source": [ - "## Build a Bento for distribution and deployment" - ] - }, - { - "cell_type": "markdown", - "id": "f51f7406", - "metadata": {}, - "source": [ - "A `bentofile` is already created in this directory for building a Bento for the service:" - ] - }, - { - "cell_type": "markdown", - "id": "3757297b", - "metadata": {}, - "source": [ - "```yaml\n", - "service: \"service:svc\"\n", - "description: \"file: ./README.md\"\n", - "labels:\n", - " owner: bentoml-team\n", - " stage: demo\n", - "include:\n", - "- \"*.py\"\n", - "exclude:\n", - "- \"tests/\"\n", - "python:\n", - " lock_packages: False\n", - " packages:\n", - " - tensorflow\n", - " - Pillow\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "2aa8e50a", - "metadata": {}, - "source": [ - "Note that we exclude `tests/` from the bento using exclude.\n", - "\n", - "Simply run `bentoml build` from current directory to build a Bento with the latest version of the `tensorflow_mnist` model. This may take a while when running for the first time for BentoML to resolve all dependency versions:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d37b339", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml build" - ] - }, - { - "cell_type": "markdown", - "id": "36306933", - "metadata": {}, - "source": [ - "Starting a dev server with the Bento build:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ec4b9dff", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve tensorflow2_demo:latest" - ] - } - ], - "metadata": { - "celltoolbar": "Raw Cell Format", - "kernelspec": { - "display_name": "tf2-py3.7", - "language": "python", - "name": "tf2-py3.7" - }, - "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.7.13" - }, - "name": "tensorflow2_mnist_demo.ipynb" - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/tensorflow2_native/tests/conftest.py b/examples/tensorflow2_native/tests/conftest.py deleted file mode 100644 index f8ebb4b4151..00000000000 --- a/examples/tensorflow2_native/tests/conftest.py +++ /dev/null @@ -1,21 +0,0 @@ -# pylint: disable=redefined-outer-name - -import pathlib -import subprocess -import typing as t - -import pytest - -from bentoml.testing.server import host_bento - - -def pytest_configure(config): # pylint: disable=unused-argument - import sys - - subprocess.check_call([sys.executable, pathlib.Path("train.py").absolute()]) - - -@pytest.fixture(scope="session") -def host() -> t.Generator[str, None, None]: - with host_bento(bento="tensorflow_mnist_demo:latest") as host: - yield host diff --git a/examples/tensorflow2_native/tests/test_prediction.py b/examples/tensorflow2_native/tests/test_prediction.py deleted file mode 100644 index 46070dcd530..00000000000 --- a/examples/tensorflow2_native/tests/test_prediction.py +++ /dev/null @@ -1,72 +0,0 @@ -# pylint: disable=redefined-outer-name -# type: ignore[no-untyped-def] - -import asyncio -import json - -import numpy as np -import pytest - -from bentoml.testing.utils import async_request - - -@pytest.fixture() -def img_data(): - import PIL.Image - - images = {} - digits = list(range(10)) - for digit in digits: - img_path = f"samples/{digit}.png" - with open(img_path, "rb") as f: - img_bytes = f.read() - img_arr = np.array(PIL.Image.open(f"samples/{digit}.png")) - img_arr = img_arr / 255.0 - img_dic = { - "bytes": img_bytes, - "array": img_arr, - } - images[digit] = img_dic - - return images - - -@pytest.mark.asyncio -async def test_numpy(host, img_data): - datas = [json.dumps(d["array"].tolist()) for d in img_data.values()] - - # request one by one - for data in datas[:-3]: - await async_request( - "POST", - f"http://{host}/predict_ndarray", - headers={"Content-Type": "application/json"}, - data=datas[0], - assert_status=200, - ) - - # request all at once, should trigger micro-batch prediction - tasks = tuple( - async_request( - "POST", - f"http://{host}/predict_ndarray", - headers={"Content-Type": "application/json"}, - data=data, - assert_status=200, - ) - for data in datas[-3:] - ) - await asyncio.gather(*tasks) - - -@pytest.mark.asyncio -async def test_image(host, img_data): - for d in img_data.values(): - img_bytes = d["bytes"] - await async_request( - "POST", - f"http://{host}/predict_image", - data=img_bytes, - headers={"Content-Type": "image/png"}, - assert_status=200, - ) diff --git a/examples/tensorflow2_native/train.py b/examples/tensorflow2_native/train.py deleted file mode 100644 index 20219b7f0d7..00000000000 --- a/examples/tensorflow2_native/train.py +++ /dev/null @@ -1,108 +0,0 @@ -# pylint: disable=no-name-in-module,redefined-outer-name,abstract-method -import tensorflow as tf -from tensorflow.keras.layers import Conv2D -from tensorflow.keras.layers import Dense -from tensorflow.keras.layers import Flatten - -import bentoml - -print("TensorFlow version:", tf.__version__) - - -class MyModel(tf.Module): - def __init__(self): - super(MyModel, self).__init__() - self.conv1 = Conv2D(32, 3, activation="relu") - self.flatten = Flatten() - self.d1 = Dense(128, activation="relu") - self.d2 = Dense(10) - - @tf.function(input_signature=[tf.TensorSpec([None, 28, 28, 1], tf.float32)]) - def __call__(self, x): - x = self.conv1(x) - x = self.flatten(x) - x = self.d1(x) - return self.d2(x) - - -@tf.function -def train_step(images, labels): - with tf.GradientTape() as tape: - # training=True is only needed if there are layers with different - # behavior during training versus inference (e.g. Dropout). - predictions = model(images) - loss = loss_object(labels, predictions) - gradients = tape.gradient(loss, model.trainable_variables) - optimizer.apply_gradients(zip(gradients, model.trainable_variables)) - train_loss(loss) - train_accuracy(labels, predictions) - - -@tf.function -def test_step(images, labels): - # training=False is only needed if there are layers with different - # behavior during training versus inference (e.g. Dropout). - predictions = model(images) - t_loss = loss_object(labels, predictions) - - test_loss(t_loss) - test_accuracy(labels, predictions) - - -if __name__ == "__main__": - mnist = tf.keras.datasets.mnist - - (x_train, y_train), (x_test, y_test) = mnist.load_data() - x_train, x_test = x_train / 255.0, x_test / 255.0 - - # Add a channels dimension - x_train = x_train.reshape(60000, 28, 28, 1).astype("float32") - x_test = x_test.reshape(10000, 28, 28, 1).astype("float32") - - train_ds = ( - tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(32) - ) - - test_ds = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32) - - # Create an instance of the model - model = MyModel() - - loss_object = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) - - optimizer = tf.keras.optimizers.Adam() - - train_loss = tf.keras.metrics.Mean(name="train_loss") - train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name="train_accuracy") - - test_loss = tf.keras.metrics.Mean(name="test_loss") - test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name="test_accuracy") - - EPOCHS = 2 - - for epoch in range(EPOCHS): - # Reset the metrics at the start of the next epoch - train_loss.reset_states() - train_accuracy.reset_states() - test_loss.reset_states() - test_accuracy.reset_states() - - for images, labels in train_ds: - train_step(images, labels) - - for test_images, test_labels in test_ds: - test_step(test_images, test_labels) - - print( - f"Epoch {epoch + 1}, " - f"Loss: {train_loss.result()}, " - f"Accuracy: {train_accuracy.result() * 100}, " - f"Test Loss: {test_loss.result()}, " - f"Test Accuracy: {test_accuracy.result() * 100}" - ) - - bentoml.tensorflow.save_model( - "tensorflow_mnist", - model, - signatures={"__call__": {"batchable": True, "batch_dim": 0}}, - ) diff --git a/examples/triton/onnx/README.md b/examples/triton/onnx/README.md deleted file mode 100644 index 903be70ab18..00000000000 --- a/examples/triton/onnx/README.md +++ /dev/null @@ -1,173 +0,0 @@ -# Triton Inference Server integration - -BentoML now provides support for Triton Inference Server. - -### Quick tour - -Triton Runner can be created via `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "local", model_respository="/path/to/model_repository" -) - -svc = bentoml.Service("my-service", runners=[triton_runner]) -``` - -`model_repository` can also accept S3 path: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", model_repository="s3://path/to/model_repository" -) -``` - -CLI arguments can be passed through the `cli_args` argument of `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", - model_repository="s3://path/to/model_repository", - cli_args=["--load-model=torchscrip_yolov5s", "--model-control-mode=explicit"], -) -``` - -An example of inference API: - -```python -@svc.api( - input=bentoml.io.NumpyNdarray.from_sample( - np.array([[1, 2, 3, 4]]), enforce_dtype=False - ), - output=bentoml.io.NumpyNdarray.from_sample(np.array([1])), -) -def triton_infer(input_data: NDArray[np.float16]) -> NDArray[np.int16]: - iris_res = iris_clf_runner.run(input_data) - res_kwargs = triton_runner.txt2img.run(IRIS_NAME=iris_res) - return iris_res -``` - -Note that each attribute of the `triton_runner` includes the name of all given -models under `model_repository` - -APIs from tritonclient are also provided through the Triton Runner: - -```python -tritonclient.grpc.aio.InferenceServerClient.get_model_metadata -> triton_runner.get_model_metadata | triton_runner.grpc_get_model_metadata -``` - -To get build your Bento with Triton, add the following to your `bentofile.yaml`: - -```yaml -service: "service.py:svc" -include: - - *.py - - /model_repository -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 -``` - -> tritonserver are currently unsupported with `--development` tag. Make sure -> to have `tritonserver` binary available in PATH if running locally. - -To find out more about BentoML Runner architecture, see -[our latest documentation](https://docs.bentoml.com/en/latest/concepts/runner.html#) - -For more information about Triton Inference Server, see -[here](https://github.com/triton-inference-server/server) - -### Instruction - -The following project includes YOLOv5 `TritonRunner` and `bentoml.Runner`. - -1. Setup Triton model repository and BentoML model: - -```bash -./export-yolov5-weights - -python3 train.py -``` - -2. To build the Bento, use [`build_bento.py`](./build_bento.py): - -```bash -python3 build_bento.py -```` - -> NOTE: To build with custom GPU, pass in `--gpu`. To build with custom tags -> pass in `--tag ` - -3. To containerize use [`containerize_bento.py`](./containerize_bento.py): - -```bash -python3 containerize_bento.py -``` - -4. To run the container with Triton, use `docker run`: - -```bash -docker run --rm -it -p 3000:3000 triton-integration-onnx serve-http -``` - -#### Develop locally: - -1. To run Triton locally, do the following: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -If you have NVIDIA GPU available, make sure to install -[nvidia-docker](https://github.com/NVIDIA/nvidia-docker) on your system. -Afterward, passing in `--gpus all` to `docker`: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --gpus all --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -Inside the container shell, there are two options to install BentoML: - -- Install from editable - -```bash -cd /opt/bentoml && pip install -r requirements/dev-requirements.txt -``` - -Run the [`setup` script](./setup): - -```bash -cd /workspace/ && pip install -r requirements/requirements.txt - -bash ./setup -``` - -2. To serve the Bento, use either `bentoml serve` or - [`serve_bento.py`](./serve_bento.py) (this requires to have `tritonserver` binary available locally on your system. To use the container, go to step 5) - -```bash -python3 serve_bento.py - -# bentoml serve-http | serve-grpc triton-integration-onnx -``` - -> NOTE: to serve previously custom tag bento, you can also pass in `--tag` to -> `serve_bento.py` - - -> Feel free to build your own tritonserver. See -> [here](https://github.com/triton-inference-server/server/blob/main/docs/customization_guide/build.md) -> for more details on building customisation. - - diff --git a/examples/triton/onnx/bentofile.yaml b/examples/triton/onnx/bentofile.yaml deleted file mode 100644 index bdeece1e63e..00000000000 --- a/examples/triton/onnx/bentofile.yaml +++ /dev/null @@ -1,16 +0,0 @@ -service: service:svc -include: - - /model_repository - - /data/*.jpg - - /export-yolov5-weights - - /*.py -exclude: - - /__pycache__ - - /venv - - /yolov5 - - /train.py - - /build_bento.py - - /containerize_bento.py -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 - setup_script: setup diff --git a/examples/triton/onnx/build_bento.py b/examples/triton/onnx/build_bento.py deleted file mode 100644 index 25db0034405..00000000000 --- a/examples/triton/onnx/build_bento.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -import argparse -import os -import typing as t - -import attr -import torch - -import bentoml -from bentoml import Bento -from bentoml._internal.bento.build_config import BentoBuildConfig -from bentoml._internal.configuration.containers import BentoMLContainer -from bentoml._internal.utils import resolve_user_filepath - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - - parser.add_argument("--tag", type=str, default=None) - parser.add_argument("--gpu", action="store_true", default=False) - - args = parser.parse_args() - - bento_tag = "triton-integration-onnx" - if args.tag: - bento_tag = f"triton-integration-onnx:{args.tag}" - - try: - bentos = bentoml.get(bento_tag) - print(f"{bentos} already exists. Skipping...") - except bentoml.exceptions.NotFound: - bentofile = resolve_user_filepath("bentofile.yaml", None) - - override_attrs: dict[str, t.Any] = { - "python": { - "requirements_txt": ( - os.path.join("requirements", "requirements-gpu.txt") - if args.gpu and torch.cuda.is_available() - else os.path.join("requirements", "requirements.txt") - ) - } - } - with open(bentofile, "r", encoding="utf-8") as f: - build_config = attr.evolve(BentoBuildConfig.from_yaml(f), **override_attrs) - - print( - "Saved bento:", - Bento.create(build_config, version=args.tag).save( - BentoMLContainer.bento_store.get() - ), - ) diff --git a/examples/triton/onnx/containerize_bento.py b/examples/triton/onnx/containerize_bento.py deleted file mode 100644 index 440da099d41..00000000000 --- a/examples/triton/onnx/containerize_bento.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-onnx" - if args.tag: - tag = f"triton-integration-onnx:{args.tag}" - - backend = "docker" - try: - builder = bentoml.container.get_backend("buildx") - assert builder.health() - backend = "buildx" - except ValueError: - print("Buildx not found, using default Docker builder.") - try: - builder = bentoml.container.get_backend(backend) - assert builder.health() - except ValueError: - print("Make sure to have Docker running.") - raise - else: - bentoml.container.build( - tag, backend=backend, features=["all"], platform="linux/amd64" - ) diff --git a/examples/triton/onnx/data/bus.jpg b/examples/triton/onnx/data/bus.jpg deleted file mode 100644 index b43e311165c..00000000000 Binary files a/examples/triton/onnx/data/bus.jpg and /dev/null differ diff --git a/examples/triton/onnx/data/zidane.jpg b/examples/triton/onnx/data/zidane.jpg deleted file mode 100644 index 92d72ea1247..00000000000 Binary files a/examples/triton/onnx/data/zidane.jpg and /dev/null differ diff --git a/examples/triton/onnx/export-yolov5-weights b/examples/triton/onnx/export-yolov5-weights deleted file mode 100755 index 8e7c7f4b365..00000000000 --- a/examples/triton/onnx/export-yolov5-weights +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env sh - -set -e - -: "${OVERRIDE:=false}" - -: "${DEBUG:=false}" -[ "${DEBUG}" = "true" ] && set -x - -: "${MODEL_TYPE:=yolov5s}" -: "${UPDATE_YOLOV5}" - -BASEDIR="$(cd "$(dirname "$0")" && pwd)" - -: "${GPU:=false}" - -[ "${UPDATE_YOLOV5}" = "true" ] && [ -d "$BASEDIR/yolov5" ] && \rm -rf yolov5 - -main() { - prev_dir="$(pwd)" - cd "$BASEDIR" - - ! [ -d yolov5 ] && - mkdir -p yolov5 && cd yolov5 && - ! [ -d yolov5.git ] && git clone --bare https://github.com/ultralytics/yolov5.git && - git --git-dir=./yolov5.git --work-tree=. checkout HEAD -- data models utils LICENSE detect.py export.py val.py requirements.txt && \rm -rf yolov5.git && cd "${BASEDIR}" - - exists=0 - ! [ -d "${BASEDIR}/model_repository/onnx_${MODEL_TYPE}/1" ] && mkdir -p "${BASEDIR}/model_repository/onnx_${MODEL_TYPE}/1" - [ -f "${BASEDIR}/${MODEL_TYPE}.onnx" ] && exists=1 - if [ "${exists}" -eq 0 ] || [ "$OVERRIDE" = "true" ]; then - if [ "$GPU" = "true" ]; then - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include onnx torchscript --batch-size "$1" --dynamic --device 0 - else - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include onnx torchscript --batch-size "$1" --dynamic - fi - fi - cp "${BASEDIR}/${MODEL_TYPE}.onnx" "${BASEDIR}/model_repository/onnx_${MODEL_TYPE}/1/model.onnx" - - echo "Successfully export YOLOv5 weights for ONNX" - cd "${prev_dir}" -} - -if ! [ "$#" -eq 1 ]; then - echo "Usage: $0 . Set to 1 by default if not passed." - main 1 -else - main "$@" -fi diff --git a/examples/triton/onnx/helpers.py b/examples/triton/onnx/helpers.py deleted file mode 100644 index 1e27b930e39..00000000000 --- a/examples/triton/onnx/helpers.py +++ /dev/null @@ -1,397 +0,0 @@ -from __future__ import annotations - -import json -import os -import time -import typing as t -from pathlib import Path - -import attr -import cv2 -import numpy as np -import torch -import torchvision -from PIL import Image as PILImage - -if t.TYPE_CHECKING: - from numpy.typing import NDArray - from torch.jit._script import ScriptModule - - P = t.ParamSpec("P") - -WORKING_DIR = Path(__file__).parent -MODEL_TYPE = os.environ.get("MODEL_TYPE", "yolov5s") -MODEL_FILE = WORKING_DIR / f"{MODEL_TYPE}.pt" -TORCH_DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - - -def load_traced_script() -> tuple[ScriptModule, dict[str, t.Any]]: - extra_files = {"config.txt": ""} - model = torch.jit.load( - MODEL_FILE.with_suffix(".torchscript").__fspath__(), - map_location=TORCH_DEVICE, - _extra_files=extra_files, - ) - d = {"shape": [], "stride": 32, "names": {}} - if extra_files["config.txt"]: - d = json.loads( - extra_files["config.txt"], - object_hook=lambda d: { - int(k) if k.isdigit() else k: v for k, v in d.items() - }, - ) - return model, d - - -def torch_tensor_from_numpy( - x: torch.Tensor | NDArray[t.Any], device: str = "cpu" -) -> torch.Tensor: - if isinstance(x, np.ndarray): - # Needs to create a copy if the array is not writeable - x = np.copy(x) if not x.flags["WRITEABLE"] else x - return torch.from_numpy(x).to(device) - elif isinstance(x, torch.Tensor): - return x - else: - raise TypeError( - f"Expected numpy.ndarray or torch.Tensor, got {type(x).__name__}" - ) - - -def prepare_yolov5_input( - im_: PILImage.Image, - size: int | tuple[int, int] = (640, 640), - auto: bool = False, - device: str = "cpu", - fp16: bool = False, - stride: int = 32, -) -> TensorContainer: - p = torch.empty(1, device=torch.device(device)) - # Automatic Mixed Precision (AMP) inference - autocast = fp16 and p.device.type != "cpu" - - im0 = np.asarray(exif_transpose(im_)) - # padded resize - im, _, _ = letterbox(im0, size, stride=stride, auto=auto) - im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - im = np.ascontiguousarray(im) # contiguous - - im = torch.from_numpy(im).to(p.device) - im = im.half() if fp16 else im.float() # unit8 to fp16/fp32 - im /= 255 # 0-255 to 0.0-1.0 - if len(im.shape) == 3: - im = im[None] # extends to batch_dim - - return TensorContainer(im, im0, autocast) - - -def postprocess_yolov5_prediction( - y: list[t.Any] | tuple[t.Any, ...] | torch.Tensor | NDArray[t.Any], - prep: TensorContainer, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic_nms: bool = False, - max_det: int = 1000, -): - res: dict[str, str] = {} - names = load_traced_script()[1]["names"] - if isinstance(y, (list, tuple)): - y = ( - torch_tensor_from_numpy(y[0]) - if len(y) == 1 - else [torch_tensor_from_numpy(_) for _ in y] - ) - else: - y = torch_tensor_from_numpy(y) - - y = non_max_suppression( - y, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det - ) - # post - for pred in y: - if len(pred): - pred[:, :4] = scale_boxes( - prep.im.shape[2:], pred[:, :4], prep.im0.shape - ).round() - - klass: int - for klass in pred[:, 5].unique(): - n: torch.Tensor = (pred[:, 5] == klass).sum() - res[str(n.item())] = names[int(klass)] - return res - - -@attr.define -class TensorContainer: - im: torch.Tensor - im0: NDArray[t.Any] - autocast: bool # AMP inference - - def to_numpy(self) -> NDArray[t.Any]: - return self.im.cpu().numpy() - - -# Some of the function below vendored from yolov5.utils.general - - -def exif_transpose(image: PILImage.Image): - """ - Transpose a PIL image accordingly if it has an EXIF Orientation tag. - Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() - - :param image: The image to transpose. - :return: An image. - """ - exif = image.getexif() - orientation = exif.get(0x0112, 1) # default 1 - if orientation > 1: - method = { - 2: PILImage.FLIP_LEFT_RIGHT, - 3: PILImage.ROTATE_180, - 4: PILImage.FLIP_TOP_BOTTOM, - 5: PILImage.TRANSPOSE, - 6: PILImage.ROTATE_270, - 7: PILImage.TRANSVERSE, - 8: PILImage.ROTATE_90, - }.get(orientation) - if method is not None: - image = image.transpose(method) - del exif[0x0112] - image.info["exif"] = exif.tobytes() - return image - - -def letterbox( - im: t.Any, - new_shape: tuple[int, int] | int | list[int] = (640, 640), - color: tuple[int, int, int] = (114, 114, 114), - auto: bool = True, - scaleFill: bool = False, - scaleup: bool = True, - stride: int = 32, -) -> tuple[NDArray[t.Any], tuple[float, float], tuple[float, float]]: - # Resize and pad image while meeting stride-multiple constraints - shape = im.shape[:2] # current shape [height, width] - if isinstance(new_shape, int): - new_shape = (new_shape, new_shape) - - # Scale ratio (new / old) - r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) - if not scaleup: # only scale down, do not scale up (for better val mAP) - r = min(r, 1.0) - - # Compute padding - ratio = r, r # width, height ratios - new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) - dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding - if auto: # minimum rectangle - dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding - elif scaleFill: # stretch - dw, dh = 0.0, 0.0 - new_unpad = (new_shape[1], new_shape[0]) - ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios - - dw /= 2 # divide padding into 2 sides - dh /= 2 - - if shape[::-1] != new_unpad: # resize - im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) - top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) - left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - im = cv2.copyMakeBorder( - im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color - ) # add border - return im, ratio, (dw, dh) - - -def xywh2xyxy(x: torch.Tensor | NDArray[t.Any]): - # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right - y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[..., 0] = x[..., 0] - x[..., 2] / 2 # top left x - y[..., 1] = x[..., 1] - x[..., 3] / 2 # top left y - y[..., 2] = x[..., 0] + x[..., 2] / 2 # bottom right x - y[..., 3] = x[..., 1] + x[..., 3] / 2 # bottom right y - return y - - -def scale_boxes( - img1_shape: tuple[int, ...], - boxes: torch.Tensor, - img0_shape: tuple[int, ...], - ratio_pad: torch.Tensor | None = None, -) -> torch.Tensor: - # Rescale boxes (xyxy) from img1_shape to img0_shape - if ratio_pad is None: # calculate from img0_shape - gain = min( - img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1] - ) # gain = old / new - pad = ( - (img1_shape[1] - img0_shape[1] * gain) / 2, - (img1_shape[0] - img0_shape[0] * gain) / 2, - ) # wh padding - else: - gain = ratio_pad[0][0] - pad = ratio_pad[1] - - boxes[..., [0, 2]] -= pad[0] # x padding - boxes[..., [1, 3]] -= pad[1] # y padding - boxes[..., :4] /= gain - clip_boxes(boxes, img0_shape) - return boxes - - -def clip_boxes(boxes: torch.Tensor | NDArray[t.Any], shape: tuple[int, ...]) -> None: - # Clip boxes (xyxy) to image shape (height, width) - if isinstance(boxes, torch.Tensor): # faster individually - boxes[..., 0].clamp_(0, shape[1]) # x1 - boxes[..., 1].clamp_(0, shape[0]) # y1 - boxes[..., 2].clamp_(0, shape[1]) # x2 - boxes[..., 3].clamp_(0, shape[0]) # y2 - else: # np.array (faster grouped) - boxes[..., [0, 2]] = boxes[..., [0, 2]].clip(0, shape[1]) # x1, x2 - boxes[..., [1, 3]] = boxes[..., [1, 3]].clip(0, shape[0]) # y1, y2 - - -def non_max_suppression( - prediction: t.Any, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic: bool = False, - multi_label: bool = False, - labels: tuple[torch.Tensor, ...] = (), - max_det: int = 300, - nm: int = 0, # number of masks -): - """Non-Maximum Suppression (NMS) on inference results to reject overlapping detections - - Returns: - list of detections, on (n,6) tensor per image [xyxy, conf, cls] - """ - - # Checks - assert ( - 0 <= conf_thres <= 1 - ), f"Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0" - assert ( - 0 <= iou_thres <= 1 - ), f"Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0" - if isinstance( - prediction, (list, tuple) - ): # YOLOv5 model in validation model, output = (inference_out, loss_out) - prediction = prediction[0] # select only inference output - - device = prediction.device - mps = "mps" in device.type # Apple MPS - if mps: # MPS not fully supported yet, convert tensors to CPU before NMS - prediction = prediction.cpu() - bs = prediction.shape[0] # batch size - nc = prediction.shape[2] - nm - 5 # number of classes - xc = prediction[..., 4] > conf_thres # candidates - - # Settings - # min_wh = 2 # (pixels) minimum box width and height - max_wh = 7680 # (pixels) maximum box width and height - max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() - time_limit = 0.5 + 0.05 * bs # seconds to quit after - redundant = True # require redundant detections - multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img) - merge = False # use merge-NMS - - t = time.time() - mi = 5 + nc # mask start index - output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs - for xi, x in enumerate(prediction): # image index, image inference - # Apply constraints - # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height - x = x[xc[xi]] # confidence - - # Cat apriori labels if autolabelling - if labels and len(labels[xi]): - lb = labels[xi] - v = torch.zeros((len(lb), nc + nm + 5), device=x.device) - v[:, :4] = lb[:, 1:5] # box - v[:, 4] = 1.0 # conf - v[range(len(lb)), lb[:, 0].long() + 5] = 1.0 # cls - x = torch.cat((x, v), 0) - - # If none remain process next image - if not x.shape[0]: - continue - - # Compute conf - x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf - - # Box/Mask - # center_x, center_y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(x[:, :4]) - mask = x[:, mi:] # zero columns if no masks - - # Detections matrix nx6 (xyxy, conf, cls) - if multi_label: - i, j = (x[:, 5:mi] > conf_thres).nonzero(as_tuple=False).T - x = torch.cat((box[i], x[i, 5 + j, None], j[:, None].float(), mask[i]), 1) - else: # best class only - conf, j = x[:, 5:mi].max(1, keepdim=True) - x = torch.cat((box, conf, j.float(), mask), 1)[conf.view(-1) > conf_thres] - - # Filter by class - if classes is not None: - x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)] - - # Apply finite constraint - # if not torch.isfinite(x).all(): - # x = x[torch.isfinite(x).all(1)] - - # Check shape - n = x.shape[0] # number of boxes - if not n: # no boxes - continue - x = x[x[:, 4].argsort(descending=True)[:max_nms]] - # sort by confidence and remove excess boxes - - # Batched NMS - c = x[:, 5:6] * (0 if agnostic else max_wh) # classes - boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores - i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS - i = i[:max_det] # limit detections - if merge and (1 < n < 3e3): # Merge NMS (boxes merged using weighted mean) - # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix - weights = iou * scores[None] # box weights - x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum( - 1, keepdim=True - ) # merged boxes - if redundant: - i = i[iou.sum(1) > 1] # require redundancy - - output[xi] = x[i] - if mps: - output[xi] = output[xi].to(device) - if (time.time() - t) > time_limit: - print(f"WARNING ⚠️ NMS time limit {time_limit:.3f}s exceeded") - break # time limit exceeded - - return output - - -def box_iou(box1: torch.Tensor, box2: torch.Tensor, eps: float = 1e-7) -> torch.Tensor: - # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py - """ - Return intersection-over-union (Jaccard index) of boxes. - Both sets of boxes are expected to be in (x1, y1, x2, y2) format. - Arguments: - box1 (Tensor[N, 4]) - box2 (Tensor[M, 4]) - Returns: - iou (Tensor[N, M]): the NxM matrix containing the pairwise - IoU values for every element in boxes1 and boxes2 - """ - - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - (a1, a2), (b1, b2) = box1.unsqueeze(1).chunk(2, 2), box2.unsqueeze(0).chunk(2, 2) - inter = (torch.min(a2, b2) - torch.max(a1, b1)).clamp(0).prod(2) - - # IoU = inter / (area1 + area2 - inter) - return inter / ((a2 - a1).prod(2) + (b2 - b1).prod(2) - inter + eps) diff --git a/examples/triton/onnx/locustfile.py b/examples/triton/onnx/locustfile.py deleted file mode 100644 index ddcf9540c11..00000000000 --- a/examples/triton/onnx/locustfile.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -from locust import HttpUser -from locust import constant -from locust import task - - -class TritonOnnxYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def triton_onnx_yolov5_infer(self): - self.client.post( - "/triton_onnx_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/jpeg"))], - ) - - -class BentoOnnxYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def bentoml_onnx_yolov5_infer(self): - self.client.post( - "/bentoml_onnx_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/jpeg"))], - ) diff --git a/examples/triton/onnx/model_repository/onnx_yolov5s/config.pbtxt b/examples/triton/onnx/model_repository/onnx_yolov5s/config.pbtxt deleted file mode 100644 index 487554f9b00..00000000000 --- a/examples/triton/onnx/model_repository/onnx_yolov5s/config.pbtxt +++ /dev/null @@ -1,16 +0,0 @@ -platform: "onnxruntime_onnx" -input { -name: "images" -data_type: TYPE_FP32 -dims: -1 -dims: 3 -dims: 640 -dims: 640 -} -output { -name: "output0" -data_type: TYPE_FP32 -dims: -1 -dims: -1 -dims: -1 -} diff --git a/examples/triton/onnx/requirements/requirements-gpu.txt b/examples/triton/onnx/requirements/requirements-gpu.txt deleted file mode 100644 index 100ca74d61f..00000000000 --- a/examples/triton/onnx/requirements/requirements-gpu.txt +++ /dev/null @@ -1,3 +0,0 @@ --r requirements.txt -nvidia-tensorrt -onnxruntime-gpu diff --git a/examples/triton/onnx/requirements/requirements.txt b/examples/triton/onnx/requirements/requirements.txt deleted file mode 100644 index 930946ae08c..00000000000 --- a/examples/triton/onnx/requirements/requirements.txt +++ /dev/null @@ -1,15 +0,0 @@ -tritonclient[all]>=2.29.0 -opencv-python -pydantic -locust -torch -torchvision -onnx -onnxruntime -# YOLOv5 dependencies -seaborn -thop -tqdm -pandas -mss -albumentations diff --git a/examples/triton/onnx/serve_bento.py b/examples/triton/onnx/serve_bento.py deleted file mode 100644 index f47c094a5e3..00000000000 --- a/examples/triton/onnx/serve_bento.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - import time - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument( - "--grpc", action="store_true", default=False, help="Whether to serve as gRPC." - ) - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-onnx" - if args.tag: - tag = f"triton-integration-onnx:{args.tag}" - - server_type = "grpc" if args.grpc else "http" - - try: - bento = bentoml.get(tag) - except bentoml.exceptions.NotFound: - raise ValueError( - "Bento is not yet built. Make sure to run 'python3 build_bento.py' and try to run this script again." - ) - else: - bento = bentoml.get(tag) - server = bentoml.serve( - bento, - server_type=server_type, - production=True, - ) - try: - while True: - bentoml.client.Client.wait_until_server_ready( - server.host, server.port, 1000 - ) - client = bentoml.client.Client.from_url( - f"http://localhost:{server.port}" - ) - print( - "ONNX config:", - client.model_config( - inp={"model_name": "onnx_yolov5s", "protocol": "grpc"} - ), - ) - time.sleep(1e9) - except KeyboardInterrupt: - server.stop() - raise SystemExit(0) diff --git a/examples/triton/onnx/service.py b/examples/triton/onnx/service.py deleted file mode 100644 index ef04f84bc9f..00000000000 --- a/examples/triton/onnx/service.py +++ /dev/null @@ -1,83 +0,0 @@ -from __future__ import annotations - -import typing as t - -import helpers -import torch - -import bentoml - -if t.TYPE_CHECKING: - from PIL.Image import Image - -# triton runner -triton_runner = bentoml.triton.Runner( - "triton_runner", - "./model_repository", - cli_args=["--model-control-mode=explicit", "--load-model=onnx_yolov5s"], -) - -bentoml_yolov5_onnx = ( - bentoml.onnx.get("onnx-yolov5") - .with_options( - providers=( - ["CUDAExecutionProvider", "CPUExecutionProvider"] - if torch.cuda.is_available() - else ["CPUExecutionProvider"] - ) - ) - .to_runner() -) - -svc = bentoml.Service( - "triton-integration-onnx", runners=[triton_runner, bentoml_yolov5_onnx] -) - - -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), output=bentoml.io.JSON() -) -async def bentoml_onnx_yolov5_infer(im: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - im, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - y = await bentoml_yolov5_onnx.async_run(prep.to_numpy()) - return helpers.postprocess_yolov5_prediction(y, prep) - - -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), output=bentoml.io.JSON() -) -async def triton_onnx_yolov5_infer(im: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - im, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - InferResult = await triton_runner.onnx_yolov5s.async_run(prep.to_numpy()) - return helpers.postprocess_yolov5_prediction(InferResult.as_numpy("output0"), prep) - - -# Triton Model management API -@svc.api( - input=bentoml.io.JSON.from_sample({"model_name": "onnx_yolov5s"}), - output=bentoml.io.JSON(), -) -async def model_config(input_model: dict[t.Literal["model_name"], str]): - return await triton_runner.get_model_config(input_model["model_name"], as_json=True) - - -@svc.api(input=bentoml.io.Text.from_sample("onnx_yolov5s"), output=bentoml.io.JSON()) -async def unload_model(input_model: str): - await triton_runner.unload_model(input_model) - return {"unloaded": input_model} - - -@svc.api(input=bentoml.io.Text.from_sample("onnx_yolov5s"), output=bentoml.io.JSON()) -async def load_model(input_model: str): - await triton_runner.load_model(input_model) - return {"loaded": input_model} - - -@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) -async def list_models(_: str) -> list[str]: - resp = await triton_runner.get_model_repository_index() - return [i.name for i in resp.models] diff --git a/examples/triton/onnx/setup b/examples/triton/onnx/setup deleted file mode 100755 index cd52a5a0945..00000000000 --- a/examples/triton/onnx/setup +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -if [ -f /etc/lsb-release ]; then - # In Ubuntu - apt-get update && apt-get install -y pkg-config libhdf5-dev ffmpeg libsm6 libxext6 -fi - -if [ -n "${BENTO_PATH}" ] || [ -f /.dockerenv ]; then - # We need to export LD_PRELOAD inside bento container. - SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") - - export LD_PRELOAD=$(find "$SITE_PACKAGES/torch/lib/" -name "libgomp*" -printf "%p\n") -fi diff --git a/examples/triton/onnx/train.py b/examples/triton/onnx/train.py deleted file mode 100644 index 1f7130548fc..00000000000 --- a/examples/triton/onnx/train.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -import onnx -import onnx.checker as onnx_checker -from helpers import MODEL_FILE -from helpers import load_traced_script - -import bentoml - -if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser() - - parser.add_argument( - "--override", - action="store_true", - default=False, - help="Override existing models", - ) - args = parser.parse_args() - - bento_model_name = "onnx-yolov5" - _, metadata = load_traced_script() - d = {"stride": metadata["stride"], "names": metadata["names"]} - try: - bentoml.models.get(bento_model_name) - if args.override: - raise bentoml.exceptions.NotFound( - "'override=True', overriding previously saved weights/conversions." - ) - print(f"{bento_model_name} already exists. Skipping...") - except bentoml.exceptions.NotFound: - ModelProto = onnx.load(MODEL_FILE.with_suffix(".onnx").__fspath__()) - onnx_checker.check_model(ModelProto) - for k, v in d.items(): - meta = ModelProto.metadata_props.add() - meta.key, meta.value = k, str(v) - print( - "Saved model:", - bentoml.onnx.save_model( - bento_model_name, - ModelProto, - signatures={"run": {"batchable": True, "batch_dim": (0, 0)}}, - metadata={"model_info": d}, - ), - ) - except Exception: - print("Failed to save model:", bento_model_name) - raise diff --git a/examples/triton/pytorch/README.md b/examples/triton/pytorch/README.md deleted file mode 100644 index b366f355ae0..00000000000 --- a/examples/triton/pytorch/README.md +++ /dev/null @@ -1,191 +0,0 @@ -# Triton Inference Server integration - -BentoML now provides support for Triton Inference Server. - -### Quick tour - -Triton Runner can be created via `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "local", model_respository="/path/to/model_repository" -) - -svc = bentoml.Service("my-service", runners=[triton_runner]) -``` - -`model_repository` can also accept S3 path: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", model_repository="s3://path/to/model_repository" -) -``` - -CLI arguments can be passed through the `cli_args` argument of `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", - model_repository="s3://path/to/model_repository", - cli_args=["--load-model=torchscrip_yolov5s", "--model-control-mode=explicit"], -) -``` - -An example of inference API: - -```python -@svc.api( - input=bentoml.io.NumpyNdarray.from_sample( - np.array([[1, 2, 3, 4]]), enforce_dtype=False - ), - output=bentoml.io.NumpyNdarray.from_sample(np.array([1])), -) -def triton_infer(input_data: NDArray[np.float16]) -> NDArray[np.int16]: - iris_res = iris_clf_runner.run(input_data) - res_kwargs = triton_runner.txt2img.run(IRIS_NAME=iris_res) - return iris_res -``` - -Note that each attribute of the `triton_runner` includes the name of all given -models under `model_repository` - -APIs from tritonclient are also provided through the Triton Runner: - -```python -tritonclient.grpc.aio.InferenceServerClient.get_model_metadata -> triton_runner.get_model_metadata | triton_runner.grpc_get_model_metadata -``` - -To get build your Bento with Triton, add the following to your `bentofile.yaml`: - -```yaml -service: "service.py:svc" -include: - - *.py - - /model_repository -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 -``` - -To find out more about BentoML Runner architecture, see -[our latest documentation](https://docs.bentoml.com/en/latest/concepts/runner.html#) - -For more information about Triton Inference Server, see -[here](https://github.com/triton-inference-server/server) - -### Instruction - -The following project includes YOLOv5 `TritonRunner` and `bentoml.Runner`. - -1. Setup Triton model repository and BentoML model: - -```bash -./export-yolov5-weights - -python3 train.py -``` - -2. To build the Bento, use [`build_bento.py`](./build_bento.py): - -```bash -python3 build_bento.py -```` - -> NOTE: To build with custom GPU, pass in `--gpu`. To build with custom tags -> pass in `--tag ` - -3. To containerize use [`containerize_bento.py`](./containerize_bento.py): - -```bash -python3 containerize_bento.py -``` - -4. To run the container with Triton, use `docker run`: - -```bash -docker run --rm -it -p 3000:3000 triton-integration-pytorch serve-http -``` - -#### Develop locally: - -1. To run Triton locally, do the following: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -If you have NVIDIA GPU available, make sure to install -[nvidia-docker](https://github.com/NVIDIA/nvidia-docker) on your system. -Afterward, passing in `--gpus all` to `docker`: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --gpus all --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -Inside the container shell, there are two options to install BentoML: - -- Install from editable - -```bash -cd /opt/bentoml && pip install -r requirements/dev-requirements.txt -``` - -Run the [`setup` script](./setup): - -```bash -cd /workspace/ && pip install -r requirements/requirements.txt - -bash ./setup -``` - -2. To serve the Bento, use either `bentoml serve` or - [`serve_bento.py`](./serve_bento.py) (this requires to have `tritonserver` binary available locally on your system. To use the container, go to step 5) - -```bash -python3 serve_bento.py - -# bentoml serve-http | serve-grpc triton-integration-pytorch -``` - -> NOTE: to serve previously custom tag bento, you can also pass in `--tag` to -> `serve_bento.py` - - -> Feel free to build your own tritonserver. See -> [here](https://github.com/triton-inference-server/server/blob/main/docs/customization_guide/build.md) -> for more details on building customisation. - -NOTE: If you running into this issue: - -````prolog -I0217 00:33:40.955605 3626 server.cc:633] -+---------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------+ -| Model | Version | Status | -+---------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------+ -| torchscript_yolov5s | 1 | UNAVAILABLE: Not found: unable to load shared library: /lib/aarch64-linux-gnu/libgomp.so.1: cannot allocate memory in static TLS block | -+---------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------+ - -``` - -Exit out of the process. Then do the following: - -```bash -export LD_PRELOAD=/lib/aarch64-linux-gnu/libgomp.so.1 -``` - -Then run the `bentoml serve` command again. - - - diff --git a/examples/triton/pytorch/bentofile.yaml b/examples/triton/pytorch/bentofile.yaml deleted file mode 100644 index bdeece1e63e..00000000000 --- a/examples/triton/pytorch/bentofile.yaml +++ /dev/null @@ -1,16 +0,0 @@ -service: service:svc -include: - - /model_repository - - /data/*.jpg - - /export-yolov5-weights - - /*.py -exclude: - - /__pycache__ - - /venv - - /yolov5 - - /train.py - - /build_bento.py - - /containerize_bento.py -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 - setup_script: setup diff --git a/examples/triton/pytorch/build_bento.py b/examples/triton/pytorch/build_bento.py deleted file mode 100644 index a114660f292..00000000000 --- a/examples/triton/pytorch/build_bento.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -import argparse -import os -import typing as t - -import attr -import torch - -import bentoml -from bentoml import Bento -from bentoml._internal.bento.build_config import BentoBuildConfig -from bentoml._internal.configuration.containers import BentoMLContainer -from bentoml._internal.utils import resolve_user_filepath - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - - parser.add_argument("--tag", type=str, default=None) - parser.add_argument("--gpu", action="store_true", default=False) - - args = parser.parse_args() - - tag = "triton-integration-pytorch" - if args.tag: - tag = f"triton-integration-pytorch:{args.tag}" - - try: - bentos = bentoml.get(tag) - print(f"{bentos} already exists. Skipping...") - except bentoml.exceptions.NotFound: - bentofile = resolve_user_filepath("bentofile.yaml", None) - - override_attrs: dict[str, t.Any] = { - "python": { - "requirements_txt": ( - os.path.join("requirements", "requirements-gpu.txt") - if args.gpu and torch.cuda.is_available() - else os.path.join("requirements", "requirements.txt") - ) - } - } - with open(bentofile, "r", encoding="utf-8") as f: - build_config = attr.evolve(BentoBuildConfig.from_yaml(f), **override_attrs) - - print( - "Saved bento:", - Bento.create(build_config, version=args.tag).save( - BentoMLContainer.bento_store.get() - ), - ) diff --git a/examples/triton/pytorch/containerize_bento.py b/examples/triton/pytorch/containerize_bento.py deleted file mode 100644 index 4582c7b504b..00000000000 --- a/examples/triton/pytorch/containerize_bento.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-pytorch" - if args.tag: - tag = f"triton-integration-pytorch:{args.tag}" - - backend = "docker" - try: - builder = bentoml.container.get_backend("buildx") - assert builder.health() - backend = "buildx" - except ValueError: - print("Buildx not found, using default Docker builder.") - try: - builder = bentoml.container.get_backend(backend) - assert builder.health() - except ValueError: - print("Make sure to have Docker running.") - raise - finally: - bentoml.container.build( - tag, backend=backend, features=["all"], platform="linux/amd64" - ) diff --git a/examples/triton/pytorch/data/bus.jpg b/examples/triton/pytorch/data/bus.jpg deleted file mode 100644 index b43e311165c..00000000000 Binary files a/examples/triton/pytorch/data/bus.jpg and /dev/null differ diff --git a/examples/triton/pytorch/data/zidane.jpg b/examples/triton/pytorch/data/zidane.jpg deleted file mode 100644 index 92d72ea1247..00000000000 Binary files a/examples/triton/pytorch/data/zidane.jpg and /dev/null differ diff --git a/examples/triton/pytorch/export-yolov5-weights b/examples/triton/pytorch/export-yolov5-weights deleted file mode 100755 index 3fe67c4736d..00000000000 --- a/examples/triton/pytorch/export-yolov5-weights +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env sh - -set -e - -: "${OVERRIDE:=false}" - -: "${DEBUG:=false}" -[ "${DEBUG}" = "true" ] && set -x - -: "${MODEL_TYPE:=yolov5s}" -: "${UPDATE_YOLOV5}" - -BASEDIR="$(cd "$(dirname "$0")" && pwd)" - -: "${GPU:=false}" - -[ "${UPDATE_YOLOV5}" = "true" ] && [ -d "$BASEDIR/yolov5" ] && \rm -rf yolov5 - -main() { - prev_dir="$(pwd)" - cd "$BASEDIR" - - ! [ -d yolov5 ] && - mkdir -p yolov5 && cd yolov5 && - ! [ -d yolov5.git ] && git clone --bare https://github.com/ultralytics/yolov5.git && - git --git-dir=./yolov5.git --work-tree=. checkout HEAD -- data models utils LICENSE detect.py export.py val.py requirements.txt && \rm -rf yolov5.git && cd "${BASEDIR}" - - exists=0 - - ! [ -d "${BASEDIR}/model_repository/torchscript_${MODEL_TYPE}/1" ] && mkdir -p "${BASEDIR}/model_repository/torchscript_${MODEL_TYPE}/1" - [ -f "${BASEDIR}/${MODEL_TYPE}.torchscript" ] && exists=1 - if [ "${exists}" -eq 0 ] || [ "$OVERRIDE" = "true" ]; then - if [ "$GPU" = "true" ]; then - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include torchscript --batch-size "$1" --dynamic --device 0 - else - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include torchscript --batch-size "$1" --dynamic - fi - fi - cp "${BASEDIR}/${MODEL_TYPE}.torchscript" "${BASEDIR}/model_repository/torchscript_${MODEL_TYPE}/1/model.pt" - - echo "Successfully export YOLOv5 weights for TorchScript." - cd "${prev_dir}" -} - -if ! [ "$#" -eq 1 ]; then - echo "Usage: $0 . Set to 1 by default if not passed." - main 1 -else - main "$@" -fi diff --git a/examples/triton/pytorch/helpers.py b/examples/triton/pytorch/helpers.py deleted file mode 100644 index 1e27b930e39..00000000000 --- a/examples/triton/pytorch/helpers.py +++ /dev/null @@ -1,397 +0,0 @@ -from __future__ import annotations - -import json -import os -import time -import typing as t -from pathlib import Path - -import attr -import cv2 -import numpy as np -import torch -import torchvision -from PIL import Image as PILImage - -if t.TYPE_CHECKING: - from numpy.typing import NDArray - from torch.jit._script import ScriptModule - - P = t.ParamSpec("P") - -WORKING_DIR = Path(__file__).parent -MODEL_TYPE = os.environ.get("MODEL_TYPE", "yolov5s") -MODEL_FILE = WORKING_DIR / f"{MODEL_TYPE}.pt" -TORCH_DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - - -def load_traced_script() -> tuple[ScriptModule, dict[str, t.Any]]: - extra_files = {"config.txt": ""} - model = torch.jit.load( - MODEL_FILE.with_suffix(".torchscript").__fspath__(), - map_location=TORCH_DEVICE, - _extra_files=extra_files, - ) - d = {"shape": [], "stride": 32, "names": {}} - if extra_files["config.txt"]: - d = json.loads( - extra_files["config.txt"], - object_hook=lambda d: { - int(k) if k.isdigit() else k: v for k, v in d.items() - }, - ) - return model, d - - -def torch_tensor_from_numpy( - x: torch.Tensor | NDArray[t.Any], device: str = "cpu" -) -> torch.Tensor: - if isinstance(x, np.ndarray): - # Needs to create a copy if the array is not writeable - x = np.copy(x) if not x.flags["WRITEABLE"] else x - return torch.from_numpy(x).to(device) - elif isinstance(x, torch.Tensor): - return x - else: - raise TypeError( - f"Expected numpy.ndarray or torch.Tensor, got {type(x).__name__}" - ) - - -def prepare_yolov5_input( - im_: PILImage.Image, - size: int | tuple[int, int] = (640, 640), - auto: bool = False, - device: str = "cpu", - fp16: bool = False, - stride: int = 32, -) -> TensorContainer: - p = torch.empty(1, device=torch.device(device)) - # Automatic Mixed Precision (AMP) inference - autocast = fp16 and p.device.type != "cpu" - - im0 = np.asarray(exif_transpose(im_)) - # padded resize - im, _, _ = letterbox(im0, size, stride=stride, auto=auto) - im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - im = np.ascontiguousarray(im) # contiguous - - im = torch.from_numpy(im).to(p.device) - im = im.half() if fp16 else im.float() # unit8 to fp16/fp32 - im /= 255 # 0-255 to 0.0-1.0 - if len(im.shape) == 3: - im = im[None] # extends to batch_dim - - return TensorContainer(im, im0, autocast) - - -def postprocess_yolov5_prediction( - y: list[t.Any] | tuple[t.Any, ...] | torch.Tensor | NDArray[t.Any], - prep: TensorContainer, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic_nms: bool = False, - max_det: int = 1000, -): - res: dict[str, str] = {} - names = load_traced_script()[1]["names"] - if isinstance(y, (list, tuple)): - y = ( - torch_tensor_from_numpy(y[0]) - if len(y) == 1 - else [torch_tensor_from_numpy(_) for _ in y] - ) - else: - y = torch_tensor_from_numpy(y) - - y = non_max_suppression( - y, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det - ) - # post - for pred in y: - if len(pred): - pred[:, :4] = scale_boxes( - prep.im.shape[2:], pred[:, :4], prep.im0.shape - ).round() - - klass: int - for klass in pred[:, 5].unique(): - n: torch.Tensor = (pred[:, 5] == klass).sum() - res[str(n.item())] = names[int(klass)] - return res - - -@attr.define -class TensorContainer: - im: torch.Tensor - im0: NDArray[t.Any] - autocast: bool # AMP inference - - def to_numpy(self) -> NDArray[t.Any]: - return self.im.cpu().numpy() - - -# Some of the function below vendored from yolov5.utils.general - - -def exif_transpose(image: PILImage.Image): - """ - Transpose a PIL image accordingly if it has an EXIF Orientation tag. - Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() - - :param image: The image to transpose. - :return: An image. - """ - exif = image.getexif() - orientation = exif.get(0x0112, 1) # default 1 - if orientation > 1: - method = { - 2: PILImage.FLIP_LEFT_RIGHT, - 3: PILImage.ROTATE_180, - 4: PILImage.FLIP_TOP_BOTTOM, - 5: PILImage.TRANSPOSE, - 6: PILImage.ROTATE_270, - 7: PILImage.TRANSVERSE, - 8: PILImage.ROTATE_90, - }.get(orientation) - if method is not None: - image = image.transpose(method) - del exif[0x0112] - image.info["exif"] = exif.tobytes() - return image - - -def letterbox( - im: t.Any, - new_shape: tuple[int, int] | int | list[int] = (640, 640), - color: tuple[int, int, int] = (114, 114, 114), - auto: bool = True, - scaleFill: bool = False, - scaleup: bool = True, - stride: int = 32, -) -> tuple[NDArray[t.Any], tuple[float, float], tuple[float, float]]: - # Resize and pad image while meeting stride-multiple constraints - shape = im.shape[:2] # current shape [height, width] - if isinstance(new_shape, int): - new_shape = (new_shape, new_shape) - - # Scale ratio (new / old) - r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) - if not scaleup: # only scale down, do not scale up (for better val mAP) - r = min(r, 1.0) - - # Compute padding - ratio = r, r # width, height ratios - new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) - dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding - if auto: # minimum rectangle - dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding - elif scaleFill: # stretch - dw, dh = 0.0, 0.0 - new_unpad = (new_shape[1], new_shape[0]) - ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios - - dw /= 2 # divide padding into 2 sides - dh /= 2 - - if shape[::-1] != new_unpad: # resize - im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) - top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) - left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - im = cv2.copyMakeBorder( - im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color - ) # add border - return im, ratio, (dw, dh) - - -def xywh2xyxy(x: torch.Tensor | NDArray[t.Any]): - # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right - y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[..., 0] = x[..., 0] - x[..., 2] / 2 # top left x - y[..., 1] = x[..., 1] - x[..., 3] / 2 # top left y - y[..., 2] = x[..., 0] + x[..., 2] / 2 # bottom right x - y[..., 3] = x[..., 1] + x[..., 3] / 2 # bottom right y - return y - - -def scale_boxes( - img1_shape: tuple[int, ...], - boxes: torch.Tensor, - img0_shape: tuple[int, ...], - ratio_pad: torch.Tensor | None = None, -) -> torch.Tensor: - # Rescale boxes (xyxy) from img1_shape to img0_shape - if ratio_pad is None: # calculate from img0_shape - gain = min( - img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1] - ) # gain = old / new - pad = ( - (img1_shape[1] - img0_shape[1] * gain) / 2, - (img1_shape[0] - img0_shape[0] * gain) / 2, - ) # wh padding - else: - gain = ratio_pad[0][0] - pad = ratio_pad[1] - - boxes[..., [0, 2]] -= pad[0] # x padding - boxes[..., [1, 3]] -= pad[1] # y padding - boxes[..., :4] /= gain - clip_boxes(boxes, img0_shape) - return boxes - - -def clip_boxes(boxes: torch.Tensor | NDArray[t.Any], shape: tuple[int, ...]) -> None: - # Clip boxes (xyxy) to image shape (height, width) - if isinstance(boxes, torch.Tensor): # faster individually - boxes[..., 0].clamp_(0, shape[1]) # x1 - boxes[..., 1].clamp_(0, shape[0]) # y1 - boxes[..., 2].clamp_(0, shape[1]) # x2 - boxes[..., 3].clamp_(0, shape[0]) # y2 - else: # np.array (faster grouped) - boxes[..., [0, 2]] = boxes[..., [0, 2]].clip(0, shape[1]) # x1, x2 - boxes[..., [1, 3]] = boxes[..., [1, 3]].clip(0, shape[0]) # y1, y2 - - -def non_max_suppression( - prediction: t.Any, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic: bool = False, - multi_label: bool = False, - labels: tuple[torch.Tensor, ...] = (), - max_det: int = 300, - nm: int = 0, # number of masks -): - """Non-Maximum Suppression (NMS) on inference results to reject overlapping detections - - Returns: - list of detections, on (n,6) tensor per image [xyxy, conf, cls] - """ - - # Checks - assert ( - 0 <= conf_thres <= 1 - ), f"Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0" - assert ( - 0 <= iou_thres <= 1 - ), f"Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0" - if isinstance( - prediction, (list, tuple) - ): # YOLOv5 model in validation model, output = (inference_out, loss_out) - prediction = prediction[0] # select only inference output - - device = prediction.device - mps = "mps" in device.type # Apple MPS - if mps: # MPS not fully supported yet, convert tensors to CPU before NMS - prediction = prediction.cpu() - bs = prediction.shape[0] # batch size - nc = prediction.shape[2] - nm - 5 # number of classes - xc = prediction[..., 4] > conf_thres # candidates - - # Settings - # min_wh = 2 # (pixels) minimum box width and height - max_wh = 7680 # (pixels) maximum box width and height - max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() - time_limit = 0.5 + 0.05 * bs # seconds to quit after - redundant = True # require redundant detections - multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img) - merge = False # use merge-NMS - - t = time.time() - mi = 5 + nc # mask start index - output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs - for xi, x in enumerate(prediction): # image index, image inference - # Apply constraints - # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height - x = x[xc[xi]] # confidence - - # Cat apriori labels if autolabelling - if labels and len(labels[xi]): - lb = labels[xi] - v = torch.zeros((len(lb), nc + nm + 5), device=x.device) - v[:, :4] = lb[:, 1:5] # box - v[:, 4] = 1.0 # conf - v[range(len(lb)), lb[:, 0].long() + 5] = 1.0 # cls - x = torch.cat((x, v), 0) - - # If none remain process next image - if not x.shape[0]: - continue - - # Compute conf - x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf - - # Box/Mask - # center_x, center_y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(x[:, :4]) - mask = x[:, mi:] # zero columns if no masks - - # Detections matrix nx6 (xyxy, conf, cls) - if multi_label: - i, j = (x[:, 5:mi] > conf_thres).nonzero(as_tuple=False).T - x = torch.cat((box[i], x[i, 5 + j, None], j[:, None].float(), mask[i]), 1) - else: # best class only - conf, j = x[:, 5:mi].max(1, keepdim=True) - x = torch.cat((box, conf, j.float(), mask), 1)[conf.view(-1) > conf_thres] - - # Filter by class - if classes is not None: - x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)] - - # Apply finite constraint - # if not torch.isfinite(x).all(): - # x = x[torch.isfinite(x).all(1)] - - # Check shape - n = x.shape[0] # number of boxes - if not n: # no boxes - continue - x = x[x[:, 4].argsort(descending=True)[:max_nms]] - # sort by confidence and remove excess boxes - - # Batched NMS - c = x[:, 5:6] * (0 if agnostic else max_wh) # classes - boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores - i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS - i = i[:max_det] # limit detections - if merge and (1 < n < 3e3): # Merge NMS (boxes merged using weighted mean) - # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix - weights = iou * scores[None] # box weights - x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum( - 1, keepdim=True - ) # merged boxes - if redundant: - i = i[iou.sum(1) > 1] # require redundancy - - output[xi] = x[i] - if mps: - output[xi] = output[xi].to(device) - if (time.time() - t) > time_limit: - print(f"WARNING ⚠️ NMS time limit {time_limit:.3f}s exceeded") - break # time limit exceeded - - return output - - -def box_iou(box1: torch.Tensor, box2: torch.Tensor, eps: float = 1e-7) -> torch.Tensor: - # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py - """ - Return intersection-over-union (Jaccard index) of boxes. - Both sets of boxes are expected to be in (x1, y1, x2, y2) format. - Arguments: - box1 (Tensor[N, 4]) - box2 (Tensor[M, 4]) - Returns: - iou (Tensor[N, M]): the NxM matrix containing the pairwise - IoU values for every element in boxes1 and boxes2 - """ - - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - (a1, a2), (b1, b2) = box1.unsqueeze(1).chunk(2, 2), box2.unsqueeze(0).chunk(2, 2) - inter = (torch.min(a2, b2) - torch.max(a1, b1)).clamp(0).prod(2) - - # IoU = inter / (area1 + area2 - inter) - return inter / ((a2 - a1).prod(2) + (b2 - b1).prod(2) - inter + eps) diff --git a/examples/triton/pytorch/locustfile.py b/examples/triton/pytorch/locustfile.py deleted file mode 100644 index fb368db5b19..00000000000 --- a/examples/triton/pytorch/locustfile.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -from locust import HttpUser -from locust import constant -from locust import task - - -class TritonTorchscriptYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def triton_torchscript_yolov5_infer(self): - self.client.post( - "/triton_torchscript_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/png"))], - ) - - -class BentoTorchscriptYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def bentoml_torchscript_yolov5_infer(self): - self.client.post( - "/bentoml_torchscript_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/jpeg"))], - ) diff --git a/examples/triton/pytorch/model_repository/torchscript_yolov5s/config.pbtxt b/examples/triton/pytorch/model_repository/torchscript_yolov5s/config.pbtxt deleted file mode 100644 index 95e5f51cb4f..00000000000 --- a/examples/triton/pytorch/model_repository/torchscript_yolov5s/config.pbtxt +++ /dev/null @@ -1,16 +0,0 @@ -platform: "pytorch_libtorch" -input { -name: "INPUT__0" -data_type: TYPE_FP32 -dims: -1 -dims: 3 -dims: 640 -dims: 640 -} -output { -name: "OUTPUT__0" -data_type: TYPE_FP32 -dims: -1 -dims: 25200 -dims: 85 -} diff --git a/examples/triton/pytorch/requirements/requirements-gpu.txt b/examples/triton/pytorch/requirements/requirements-gpu.txt deleted file mode 100644 index 100ca74d61f..00000000000 --- a/examples/triton/pytorch/requirements/requirements-gpu.txt +++ /dev/null @@ -1,3 +0,0 @@ --r requirements.txt -nvidia-tensorrt -onnxruntime-gpu diff --git a/examples/triton/pytorch/requirements/requirements.txt b/examples/triton/pytorch/requirements/requirements.txt deleted file mode 100644 index 3991bd20e72..00000000000 --- a/examples/triton/pytorch/requirements/requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -tritonclient[all]>=2.29.0 -opencv-python -torchvision -pydantic -locust -tensorflow;platform_system!='Darwin' -tensorflow-io;platform_system!='Darwin' -tensorflow-macos;platform_system=='Darwin' -onnx -onnxruntime -torch -# YOLOv5 dependencies -seaborn -thop -tqdm -pandas -mss -albumentations diff --git a/examples/triton/pytorch/serve_bento.py b/examples/triton/pytorch/serve_bento.py deleted file mode 100644 index cc1026dca41..00000000000 --- a/examples/triton/pytorch/serve_bento.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - import time - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument( - "--grpc", action="store_true", default=False, help="Whether to serve as gRPC." - ) - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-pytorch" - if args.tag: - tag = f"triton-integration-pytorch:{args.tag}" - - server_type = "grpc" if args.grpc else "http" - - try: - bento = bentoml.get(tag) - except bentoml.exceptions.NotFound: - raise ValueError( - "Bento is not yet built. Make sure to run 'python3 build_bento.py' and try to run this script again." - ) - else: - bento = bentoml.get(tag) - server = bentoml.serve( - bento, - server_type=server_type, - production=True, - ) - try: - while True: - bentoml.client.Client.wait_until_server_ready( - server.host, server.port, 1000 - ) - client = bentoml.client.Client.from_url( - f"http://localhost:{server.port}" - ) - print( - "TorchScript config:", - client.model_config( - inp={"model_name": "torchscript_yolov5s", "protocol": "grpc"} - ), - ) - time.sleep(1e9) - except KeyboardInterrupt: - server.stop() - raise SystemExit(0) diff --git a/examples/triton/pytorch/service.py b/examples/triton/pytorch/service.py deleted file mode 100644 index b28d57370b8..00000000000 --- a/examples/triton/pytorch/service.py +++ /dev/null @@ -1,86 +0,0 @@ -from __future__ import annotations - -import typing as t - -import helpers -import torch - -import bentoml - -if t.TYPE_CHECKING: - from PIL.Image import Image - -# triton runner - -triton_runner = bentoml.triton.Runner( - "triton_runner", - "./model_repository", - cli_args=[ - "--model-control-mode=explicit", - "--load-model=torchscript_yolov5s", - ], -) -bentoml_yolov5_torchscript = bentoml.torchscript.get("torchscript-yolov5").to_runner() - -svc = bentoml.Service( - "triton-integration-pytorch", - runners=[triton_runner, bentoml_yolov5_torchscript], -) - - -#### BentoML YOLOv5 -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), output=bentoml.io.JSON() -) -async def bentoml_torchscript_yolov5_infer(fp: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - fp, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - y = await bentoml_yolov5_torchscript.async_run(prep.to_numpy()) - return helpers.postprocess_yolov5_prediction(y, prep) - - -### Triton YOLOv5 -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), - output=bentoml.io.JSON(), -) -async def triton_torchscript_yolov5_infer(im: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - im, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - InferResult = await triton_runner.torchscript_yolov5s.async_run(prep.to_numpy()) - return helpers.postprocess_yolov5_prediction( - InferResult.as_numpy("OUTPUT__0"), prep - ) - - -# Triton Model management API -@svc.api( - input=bentoml.io.JSON.from_sample({"model_name": "torchscript_yolov5s"}), - output=bentoml.io.JSON(), -) -async def model_config(input_model: dict[t.Literal["model_name"], str]): - return await triton_runner.get_model_config(input_model["model_name"], as_json=True) - - -@svc.api( - input=bentoml.io.Text.from_sample("torchscript_yolov5s"), output=bentoml.io.JSON() -) -async def unload_model(input_model: str): - await triton_runner.unload_model(input_model) - return {"unloaded": input_model} - - -@svc.api( - input=bentoml.io.Text.from_sample("torchscript_yolov5s"), output=bentoml.io.JSON() -) -async def load_model(input_model: str): - await triton_runner.load_model(input_model) - return {"loaded": input_model} - - -@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) -async def list_models(_: str) -> list[str]: - resp = await triton_runner.get_model_repository_index() - return [i.name for i in resp.models] diff --git a/examples/triton/pytorch/setup b/examples/triton/pytorch/setup deleted file mode 100755 index cd52a5a0945..00000000000 --- a/examples/triton/pytorch/setup +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -if [ -f /etc/lsb-release ]; then - # In Ubuntu - apt-get update && apt-get install -y pkg-config libhdf5-dev ffmpeg libsm6 libxext6 -fi - -if [ -n "${BENTO_PATH}" ] || [ -f /.dockerenv ]; then - # We need to export LD_PRELOAD inside bento container. - SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") - - export LD_PRELOAD=$(find "$SITE_PACKAGES/torch/lib/" -name "libgomp*" -printf "%p\n") -fi diff --git a/examples/triton/pytorch/train.py b/examples/triton/pytorch/train.py deleted file mode 100644 index fda82f304f7..00000000000 --- a/examples/triton/pytorch/train.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -import json -import typing as t - -from helpers import load_traced_script - -import bentoml - -if t.TYPE_CHECKING: - pass - - -if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser() - - parser.add_argument( - "--override", - action="store_true", - default=False, - help="Override existing models", - ) - args = parser.parse_args() - - bento_model_name = "torchscript-yolov5" - model, metadata = load_traced_script() - - try: - bentoml.models.get(bento_model_name) - if args.override: - raise bentoml.exceptions.NotFound( - "'override=True', overriding previously saved weights/conversions." - ) - print(f"{bento_model_name} already exists. Skipping...") - except bentoml.exceptions.NotFound: - print( - "Saved model:", - bentoml.torchscript.save_model( - bento_model_name, - model, - signatures={"__call__": {"batchable": True, "batch_dim": (0, 0)}}, - metadata={"model_info": metadata}, - _extra_files={"config.txt": json.dumps(metadata)}, - ), - ) - except Exception: - print("Failed to save model:", bento_model_name) - raise diff --git a/examples/triton/tensorflow/README.md b/examples/triton/tensorflow/README.md deleted file mode 100644 index ddb75bdf552..00000000000 --- a/examples/triton/tensorflow/README.md +++ /dev/null @@ -1,171 +0,0 @@ -# Triton Inference Server integration - -BentoML now provides support for Triton Inference Server. - -### Quick tour - -Triton Runner can be created via `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "local", model_respository="/path/to/model_repository" -) - -svc = bentoml.Service("my-service", runners=[triton_runner]) -``` - -`model_repository` can also accept S3 path: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", model_repository="s3://path/to/model_repository" -) -``` - -CLI arguments can be passed through the `cli_args` argument of `bentoml.triton.Runner`: - -```python -triton_runner = bentoml.triton.Runner( - "triton-runners", - model_repository="s3://path/to/model_repository", - cli_args=["--load-model=torchscrip_yolov5s", "--model-control-mode=explicit"], -) -``` - -An example of inference API: - -```python -@svc.api( - input=bentoml.io.NumpyNdarray.from_sample( - np.array([[1, 2, 3, 4]]), enforce_dtype=False - ), - output=bentoml.io.NumpyNdarray.from_sample(np.array([1])), -) -def triton_infer(input_data: NDArray[np.float16]) -> NDArray[np.int16]: - iris_res = iris_clf_runner.run(input_data) - res_kwargs = triton_runner.txt2img.run(IRIS_NAME=iris_res) - return iris_res -``` - -Note that each attribute of the `triton_runner` includes the name of all given -models under `model_repository` - -APIs from tritonclient are also provided through the Triton Runner: - -```python -tritonclient.grpc.aio.InferenceServerClient.get_model_metadata -> triton_runner.get_model_metadata | triton_runner.grpc_get_model_metadata -``` - -To get build your Bento with Triton, add the following to your `bentofile.yaml`: - -```yaml -service: "service.py:svc" -include: - - *.py - - /model_repository -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 -``` - -To find out more about BentoML Runner architecture, see -[our latest documentation](https://docs.bentoml.com/en/latest/concepts/runner.html#) - -For more information about Triton Inference Server, see -[here](https://github.com/triton-inference-server/server) - - -### Instruction - -The following project includes YOLOv5 `TritonRunner` and `bentoml.Runner`. - -1. Setup Triton model repository and BentoML model: - -```bash -./export-yolov5-weights - -python3 train.py -``` - -2. To build the Bento, use [`build_bento.py`](./build_bento.py): - -```bash -python3 build_bento.py -```` - -> NOTE: To build with custom GPU, pass in `--gpu`. To build with custom tags -> pass in `--tag ` - -3. To containerize use [`containerize_bento.py`](./containerize_bento.py): - -```bash -python3 containerize_bento.py -``` - -4. To run the container with Triton, use `docker run`: - -```bash -docker run --rm -it -p 3000:3000 triton-integration-tensorflow serve-http -``` - -#### Develop locally: - -1. To run Triton locally, do the following: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -If you have NVIDIA GPU available, make sure to install -[nvidia-docker](https://github.com/NVIDIA/nvidia-docker) on your system. -Afterward, passing in `--gpus all` to `docker`: - -```bash -BENTOML_GIT_ROOT=$(git rev-parse --show-toplevel) -docker run --gpus all --rm -it -p 3000-4000:3000-4000 \ - -v $PWD:/workspace -v $BENTOML_GIT_ROOT:/opt/bentoml \ - -v $BENTOML_HOME:/home/bentoml --env BENTOML_HOME=/home/bentoml \ - nvcr.io/nvidia/tritonserver:22.12-py3 bash -``` - -Inside the container shell, there are two options to install BentoML: - -- Install from editable - -```bash -cd /opt/bentoml && pip install -r requirements/dev-requirements.txt -``` - -Run the [`setup` script](./setup): - -```bash -cd /workspace/ && pip install -r requirements/requirements.txt - -bash ./setup -``` - -2. To serve the Bento, use either `bentoml serve` or - [`serve_bento.py`](./serve_bento.py) (this requires to have `tritonserver` binary available locally on your system. To use the container, go to step 5) - -```bash -python3 serve_bento.py - -# bentoml serve-http | serve-grpc triton-integration-tensorflow -``` - -> NOTE: to serve previously custom tag bento, you can also pass in `--tag` to -> `serve_bento.py` - - -> Feel free to build your own tritonserver. See -> [here](https://github.com/triton-inference-server/server/blob/main/docs/customization_guide/build.md) -> for more details on building customisation. - - diff --git a/examples/triton/tensorflow/bentofile.yaml b/examples/triton/tensorflow/bentofile.yaml deleted file mode 100644 index bdeece1e63e..00000000000 --- a/examples/triton/tensorflow/bentofile.yaml +++ /dev/null @@ -1,16 +0,0 @@ -service: service:svc -include: - - /model_repository - - /data/*.jpg - - /export-yolov5-weights - - /*.py -exclude: - - /__pycache__ - - /venv - - /yolov5 - - /train.py - - /build_bento.py - - /containerize_bento.py -docker: - base_image: nvcr.io/nvidia/tritonserver:22.12-py3 - setup_script: setup diff --git a/examples/triton/tensorflow/build_bento.py b/examples/triton/tensorflow/build_bento.py deleted file mode 100644 index cbe5f799665..00000000000 --- a/examples/triton/tensorflow/build_bento.py +++ /dev/null @@ -1,51 +0,0 @@ -from __future__ import annotations - -import argparse -import os -import typing as t - -import attr -import torch - -import bentoml -from bentoml import Bento -from bentoml._internal.bento.build_config import BentoBuildConfig -from bentoml._internal.configuration.containers import BentoMLContainer -from bentoml._internal.utils import resolve_user_filepath - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - - parser.add_argument("--tag", type=str, default=None) - parser.add_argument("--gpu", action="store_true", default=False) - - args = parser.parse_args() - - tag = "triton-integration-tensorflow" - if args.tag: - tag = f"triton-integration-tensorflow:{args.tag}" - - try: - bentos = bentoml.get(tag) - print(f"{bentos} already exists. Skipping...") - except bentoml.exceptions.NotFound: - bentofile = resolve_user_filepath("bentofile.yaml", None) - - override_attrs: dict[str, t.Any] = { - "python": { - "requirements_txt": ( - os.path.join("requirements", "requirements-gpu.txt") - if args.gpu and torch.cuda.is_available() - else os.path.join("requirements", "requirements.txt") - ) - } - } - with open(bentofile, "r", encoding="utf-8") as f: - build_config = attr.evolve(BentoBuildConfig.from_yaml(f), **override_attrs) - - print( - "Saved bento:", - Bento.create(build_config, version=args.tag).save( - BentoMLContainer.bento_store.get() - ), - ) diff --git a/examples/triton/tensorflow/containerize_bento.py b/examples/triton/tensorflow/containerize_bento.py deleted file mode 100644 index 536eab0825a..00000000000 --- a/examples/triton/tensorflow/containerize_bento.py +++ /dev/null @@ -1,33 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-tensorflow" - if args.tag: - tag = f"triton-integration-tensorflow:{args.tag}" - - backend = "docker" - try: - builder = bentoml.container.get_backend("buildx") - assert builder.health() - backend = "buildx" - except ValueError: - print("Buildx not found, using default Docker builder.") - try: - builder = bentoml.container.get_backend(backend) - assert builder.health() - except ValueError: - print("Make sure to have Docker running.") - raise - finally: - bentoml.container.build( - tag, backend=backend, features=["all"], platform="linux/amd64" - ) diff --git a/examples/triton/tensorflow/data/bus.jpg b/examples/triton/tensorflow/data/bus.jpg deleted file mode 100644 index b43e311165c..00000000000 Binary files a/examples/triton/tensorflow/data/bus.jpg and /dev/null differ diff --git a/examples/triton/tensorflow/data/zidane.jpg b/examples/triton/tensorflow/data/zidane.jpg deleted file mode 100644 index 92d72ea1247..00000000000 Binary files a/examples/triton/tensorflow/data/zidane.jpg and /dev/null differ diff --git a/examples/triton/tensorflow/export-yolov5-weights b/examples/triton/tensorflow/export-yolov5-weights deleted file mode 100755 index dedb48856a8..00000000000 --- a/examples/triton/tensorflow/export-yolov5-weights +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env sh - -set -e - -: "${OVERRIDE:=false}" - -: "${DEBUG:=false}" -[ "${DEBUG}" = "true" ] && set -x - -: "${MODEL_TYPE:=yolov5s}" -: "${UPDATE_YOLOV5}" - -: "${GPU:=false}" - -BASEDIR="$(cd "$(dirname "$0")" && pwd)" - -[ "${UPDATE_YOLOV5}" = "true" ] && [ -d "$BASEDIR/yolov5" ] && \rm -rf yolov5 - -main() { - prev_dir="$(pwd)" - cd "$BASEDIR" - - ! [ -d yolov5 ] && - mkdir -p yolov5 && cd yolov5 && - ! [ -d yolov5.git ] && git clone --bare https://github.com/ultralytics/yolov5.git && - git --git-dir=./yolov5.git --work-tree=. checkout HEAD -- data models utils LICENSE detect.py export.py val.py requirements.txt && \rm -rf yolov5.git && cd "${BASEDIR}" - - exists=0 - - [ -d "${BASEDIR}/${MODEL_TYPE}_saved_model" ] && exists=1 - [ "${OVERRIDE}" = "true" ] && \rm -rf "${BASEDIR}/${MODEL_TYPE}_saved_model" - ! [ -d "${BASEDIR}/model_repository/tensorflow_${MODEL_TYPE}/1" ] && mkdir -p "${BASEDIR}/model_repository/tensorflow_${MODEL_TYPE}/1" - [ -d "${BASEDIR}/model_repository/tensorflow_${MODEL_TYPE}/1/model.savedmodel" ] && \rm -rf "$BASEDIR/model_repository/tensorflow_${MODEL_TYPE}/1/model.savedmodel" - - if [ "${exists}" -eq 0 ] || [ "$OVERRIDE" = "true" ]; then - if [ "$GPU" = "true" ]; then - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include saved_model torchscript --batch-size "$1" --dynamic --device 0 - else - python3 yolov5/export.py --weights "$MODEL_TYPE.pt" --include saved_model torchscript --batch-size "$1" --dynamic - fi - fi - cp -r "${BASEDIR}/${MODEL_TYPE}_saved_model" "${BASEDIR}/model_repository/tensorflow_${MODEL_TYPE}/1/model.savedmodel" - - echo "Successfully export YOLOv5 weights for SavedModel." - cd "${prev_dir}" -} - -if ! [ "$#" -eq 1 ]; then - echo "Usage: $0 . Set to 1 by default if not passed." - main 1 -else - main "$@" -fi diff --git a/examples/triton/tensorflow/helpers.py b/examples/triton/tensorflow/helpers.py deleted file mode 100644 index 1e27b930e39..00000000000 --- a/examples/triton/tensorflow/helpers.py +++ /dev/null @@ -1,397 +0,0 @@ -from __future__ import annotations - -import json -import os -import time -import typing as t -from pathlib import Path - -import attr -import cv2 -import numpy as np -import torch -import torchvision -from PIL import Image as PILImage - -if t.TYPE_CHECKING: - from numpy.typing import NDArray - from torch.jit._script import ScriptModule - - P = t.ParamSpec("P") - -WORKING_DIR = Path(__file__).parent -MODEL_TYPE = os.environ.get("MODEL_TYPE", "yolov5s") -MODEL_FILE = WORKING_DIR / f"{MODEL_TYPE}.pt" -TORCH_DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - - -def load_traced_script() -> tuple[ScriptModule, dict[str, t.Any]]: - extra_files = {"config.txt": ""} - model = torch.jit.load( - MODEL_FILE.with_suffix(".torchscript").__fspath__(), - map_location=TORCH_DEVICE, - _extra_files=extra_files, - ) - d = {"shape": [], "stride": 32, "names": {}} - if extra_files["config.txt"]: - d = json.loads( - extra_files["config.txt"], - object_hook=lambda d: { - int(k) if k.isdigit() else k: v for k, v in d.items() - }, - ) - return model, d - - -def torch_tensor_from_numpy( - x: torch.Tensor | NDArray[t.Any], device: str = "cpu" -) -> torch.Tensor: - if isinstance(x, np.ndarray): - # Needs to create a copy if the array is not writeable - x = np.copy(x) if not x.flags["WRITEABLE"] else x - return torch.from_numpy(x).to(device) - elif isinstance(x, torch.Tensor): - return x - else: - raise TypeError( - f"Expected numpy.ndarray or torch.Tensor, got {type(x).__name__}" - ) - - -def prepare_yolov5_input( - im_: PILImage.Image, - size: int | tuple[int, int] = (640, 640), - auto: bool = False, - device: str = "cpu", - fp16: bool = False, - stride: int = 32, -) -> TensorContainer: - p = torch.empty(1, device=torch.device(device)) - # Automatic Mixed Precision (AMP) inference - autocast = fp16 and p.device.type != "cpu" - - im0 = np.asarray(exif_transpose(im_)) - # padded resize - im, _, _ = letterbox(im0, size, stride=stride, auto=auto) - im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - im = np.ascontiguousarray(im) # contiguous - - im = torch.from_numpy(im).to(p.device) - im = im.half() if fp16 else im.float() # unit8 to fp16/fp32 - im /= 255 # 0-255 to 0.0-1.0 - if len(im.shape) == 3: - im = im[None] # extends to batch_dim - - return TensorContainer(im, im0, autocast) - - -def postprocess_yolov5_prediction( - y: list[t.Any] | tuple[t.Any, ...] | torch.Tensor | NDArray[t.Any], - prep: TensorContainer, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic_nms: bool = False, - max_det: int = 1000, -): - res: dict[str, str] = {} - names = load_traced_script()[1]["names"] - if isinstance(y, (list, tuple)): - y = ( - torch_tensor_from_numpy(y[0]) - if len(y) == 1 - else [torch_tensor_from_numpy(_) for _ in y] - ) - else: - y = torch_tensor_from_numpy(y) - - y = non_max_suppression( - y, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det - ) - # post - for pred in y: - if len(pred): - pred[:, :4] = scale_boxes( - prep.im.shape[2:], pred[:, :4], prep.im0.shape - ).round() - - klass: int - for klass in pred[:, 5].unique(): - n: torch.Tensor = (pred[:, 5] == klass).sum() - res[str(n.item())] = names[int(klass)] - return res - - -@attr.define -class TensorContainer: - im: torch.Tensor - im0: NDArray[t.Any] - autocast: bool # AMP inference - - def to_numpy(self) -> NDArray[t.Any]: - return self.im.cpu().numpy() - - -# Some of the function below vendored from yolov5.utils.general - - -def exif_transpose(image: PILImage.Image): - """ - Transpose a PIL image accordingly if it has an EXIF Orientation tag. - Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() - - :param image: The image to transpose. - :return: An image. - """ - exif = image.getexif() - orientation = exif.get(0x0112, 1) # default 1 - if orientation > 1: - method = { - 2: PILImage.FLIP_LEFT_RIGHT, - 3: PILImage.ROTATE_180, - 4: PILImage.FLIP_TOP_BOTTOM, - 5: PILImage.TRANSPOSE, - 6: PILImage.ROTATE_270, - 7: PILImage.TRANSVERSE, - 8: PILImage.ROTATE_90, - }.get(orientation) - if method is not None: - image = image.transpose(method) - del exif[0x0112] - image.info["exif"] = exif.tobytes() - return image - - -def letterbox( - im: t.Any, - new_shape: tuple[int, int] | int | list[int] = (640, 640), - color: tuple[int, int, int] = (114, 114, 114), - auto: bool = True, - scaleFill: bool = False, - scaleup: bool = True, - stride: int = 32, -) -> tuple[NDArray[t.Any], tuple[float, float], tuple[float, float]]: - # Resize and pad image while meeting stride-multiple constraints - shape = im.shape[:2] # current shape [height, width] - if isinstance(new_shape, int): - new_shape = (new_shape, new_shape) - - # Scale ratio (new / old) - r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) - if not scaleup: # only scale down, do not scale up (for better val mAP) - r = min(r, 1.0) - - # Compute padding - ratio = r, r # width, height ratios - new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) - dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding - if auto: # minimum rectangle - dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding - elif scaleFill: # stretch - dw, dh = 0.0, 0.0 - new_unpad = (new_shape[1], new_shape[0]) - ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios - - dw /= 2 # divide padding into 2 sides - dh /= 2 - - if shape[::-1] != new_unpad: # resize - im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) - top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) - left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - im = cv2.copyMakeBorder( - im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color - ) # add border - return im, ratio, (dw, dh) - - -def xywh2xyxy(x: torch.Tensor | NDArray[t.Any]): - # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right - y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[..., 0] = x[..., 0] - x[..., 2] / 2 # top left x - y[..., 1] = x[..., 1] - x[..., 3] / 2 # top left y - y[..., 2] = x[..., 0] + x[..., 2] / 2 # bottom right x - y[..., 3] = x[..., 1] + x[..., 3] / 2 # bottom right y - return y - - -def scale_boxes( - img1_shape: tuple[int, ...], - boxes: torch.Tensor, - img0_shape: tuple[int, ...], - ratio_pad: torch.Tensor | None = None, -) -> torch.Tensor: - # Rescale boxes (xyxy) from img1_shape to img0_shape - if ratio_pad is None: # calculate from img0_shape - gain = min( - img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1] - ) # gain = old / new - pad = ( - (img1_shape[1] - img0_shape[1] * gain) / 2, - (img1_shape[0] - img0_shape[0] * gain) / 2, - ) # wh padding - else: - gain = ratio_pad[0][0] - pad = ratio_pad[1] - - boxes[..., [0, 2]] -= pad[0] # x padding - boxes[..., [1, 3]] -= pad[1] # y padding - boxes[..., :4] /= gain - clip_boxes(boxes, img0_shape) - return boxes - - -def clip_boxes(boxes: torch.Tensor | NDArray[t.Any], shape: tuple[int, ...]) -> None: - # Clip boxes (xyxy) to image shape (height, width) - if isinstance(boxes, torch.Tensor): # faster individually - boxes[..., 0].clamp_(0, shape[1]) # x1 - boxes[..., 1].clamp_(0, shape[0]) # y1 - boxes[..., 2].clamp_(0, shape[1]) # x2 - boxes[..., 3].clamp_(0, shape[0]) # y2 - else: # np.array (faster grouped) - boxes[..., [0, 2]] = boxes[..., [0, 2]].clip(0, shape[1]) # x1, x2 - boxes[..., [1, 3]] = boxes[..., [1, 3]].clip(0, shape[0]) # y1, y2 - - -def non_max_suppression( - prediction: t.Any, - conf_thres: float = 0.25, - iou_thres: float = 0.45, - classes: list[int] | None = None, - agnostic: bool = False, - multi_label: bool = False, - labels: tuple[torch.Tensor, ...] = (), - max_det: int = 300, - nm: int = 0, # number of masks -): - """Non-Maximum Suppression (NMS) on inference results to reject overlapping detections - - Returns: - list of detections, on (n,6) tensor per image [xyxy, conf, cls] - """ - - # Checks - assert ( - 0 <= conf_thres <= 1 - ), f"Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0" - assert ( - 0 <= iou_thres <= 1 - ), f"Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0" - if isinstance( - prediction, (list, tuple) - ): # YOLOv5 model in validation model, output = (inference_out, loss_out) - prediction = prediction[0] # select only inference output - - device = prediction.device - mps = "mps" in device.type # Apple MPS - if mps: # MPS not fully supported yet, convert tensors to CPU before NMS - prediction = prediction.cpu() - bs = prediction.shape[0] # batch size - nc = prediction.shape[2] - nm - 5 # number of classes - xc = prediction[..., 4] > conf_thres # candidates - - # Settings - # min_wh = 2 # (pixels) minimum box width and height - max_wh = 7680 # (pixels) maximum box width and height - max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() - time_limit = 0.5 + 0.05 * bs # seconds to quit after - redundant = True # require redundant detections - multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img) - merge = False # use merge-NMS - - t = time.time() - mi = 5 + nc # mask start index - output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs - for xi, x in enumerate(prediction): # image index, image inference - # Apply constraints - # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height - x = x[xc[xi]] # confidence - - # Cat apriori labels if autolabelling - if labels and len(labels[xi]): - lb = labels[xi] - v = torch.zeros((len(lb), nc + nm + 5), device=x.device) - v[:, :4] = lb[:, 1:5] # box - v[:, 4] = 1.0 # conf - v[range(len(lb)), lb[:, 0].long() + 5] = 1.0 # cls - x = torch.cat((x, v), 0) - - # If none remain process next image - if not x.shape[0]: - continue - - # Compute conf - x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf - - # Box/Mask - # center_x, center_y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(x[:, :4]) - mask = x[:, mi:] # zero columns if no masks - - # Detections matrix nx6 (xyxy, conf, cls) - if multi_label: - i, j = (x[:, 5:mi] > conf_thres).nonzero(as_tuple=False).T - x = torch.cat((box[i], x[i, 5 + j, None], j[:, None].float(), mask[i]), 1) - else: # best class only - conf, j = x[:, 5:mi].max(1, keepdim=True) - x = torch.cat((box, conf, j.float(), mask), 1)[conf.view(-1) > conf_thres] - - # Filter by class - if classes is not None: - x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)] - - # Apply finite constraint - # if not torch.isfinite(x).all(): - # x = x[torch.isfinite(x).all(1)] - - # Check shape - n = x.shape[0] # number of boxes - if not n: # no boxes - continue - x = x[x[:, 4].argsort(descending=True)[:max_nms]] - # sort by confidence and remove excess boxes - - # Batched NMS - c = x[:, 5:6] * (0 if agnostic else max_wh) # classes - boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores - i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS - i = i[:max_det] # limit detections - if merge and (1 < n < 3e3): # Merge NMS (boxes merged using weighted mean) - # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix - weights = iou * scores[None] # box weights - x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum( - 1, keepdim=True - ) # merged boxes - if redundant: - i = i[iou.sum(1) > 1] # require redundancy - - output[xi] = x[i] - if mps: - output[xi] = output[xi].to(device) - if (time.time() - t) > time_limit: - print(f"WARNING ⚠️ NMS time limit {time_limit:.3f}s exceeded") - break # time limit exceeded - - return output - - -def box_iou(box1: torch.Tensor, box2: torch.Tensor, eps: float = 1e-7) -> torch.Tensor: - # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py - """ - Return intersection-over-union (Jaccard index) of boxes. - Both sets of boxes are expected to be in (x1, y1, x2, y2) format. - Arguments: - box1 (Tensor[N, 4]) - box2 (Tensor[M, 4]) - Returns: - iou (Tensor[N, M]): the NxM matrix containing the pairwise - IoU values for every element in boxes1 and boxes2 - """ - - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - (a1, a2), (b1, b2) = box1.unsqueeze(1).chunk(2, 2), box2.unsqueeze(0).chunk(2, 2) - inter = (torch.min(a2, b2) - torch.max(a1, b1)).clamp(0).prod(2) - - # IoU = inter / (area1 + area2 - inter) - return inter / ((a2 - a1).prod(2) + (b2 - b1).prod(2) - inter + eps) diff --git a/examples/triton/tensorflow/locustfile.py b/examples/triton/tensorflow/locustfile.py deleted file mode 100644 index 67e21c219ad..00000000000 --- a/examples/triton/tensorflow/locustfile.py +++ /dev/null @@ -1,29 +0,0 @@ -from __future__ import annotations - -from locust import HttpUser -from locust import constant -from locust import task - - -class TritonTensorflowYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def triton_tensorflow_yolov5_infer(self): - self.client.post( - "/triton_tensorflow_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/jpeg"))], - ) - - -class BentoTensorflowYolov5User(HttpUser): - wait_time = constant(0) - filename = "./data/zidane.jpg" - - @task - def bentoml_tensorflow_yolov5_infer(self): - self.client.post( - "/bentoml_tensorflow_yolov5_infer", - files=[("file", (self.filename, open(self.filename, "rb"), "image/jpeg"))], - ) diff --git a/examples/triton/tensorflow/model_repository/tensorflow_yolov5s/config.pbtxt b/examples/triton/tensorflow/model_repository/tensorflow_yolov5s/config.pbtxt deleted file mode 100644 index ac04789659b..00000000000 --- a/examples/triton/tensorflow/model_repository/tensorflow_yolov5s/config.pbtxt +++ /dev/null @@ -1,16 +0,0 @@ -platform: "tensorflow_savedmodel" -input { -name: "x" -data_type: TYPE_FP32 -dims: -1 -dims: 640 -dims: 640 -dims: 3 -} -output { -name: "output_0" -data_type: TYPE_FP32 -dims: -1 -dims: 25200 -dims: 85 -} diff --git a/examples/triton/tensorflow/requirements/requirements-gpu.txt b/examples/triton/tensorflow/requirements/requirements-gpu.txt deleted file mode 100644 index 100ca74d61f..00000000000 --- a/examples/triton/tensorflow/requirements/requirements-gpu.txt +++ /dev/null @@ -1,3 +0,0 @@ --r requirements.txt -nvidia-tensorrt -onnxruntime-gpu diff --git a/examples/triton/tensorflow/requirements/requirements.txt b/examples/triton/tensorflow/requirements/requirements.txt deleted file mode 100644 index 3991bd20e72..00000000000 --- a/examples/triton/tensorflow/requirements/requirements.txt +++ /dev/null @@ -1,18 +0,0 @@ -tritonclient[all]>=2.29.0 -opencv-python -torchvision -pydantic -locust -tensorflow;platform_system!='Darwin' -tensorflow-io;platform_system!='Darwin' -tensorflow-macos;platform_system=='Darwin' -onnx -onnxruntime -torch -# YOLOv5 dependencies -seaborn -thop -tqdm -pandas -mss -albumentations diff --git a/examples/triton/tensorflow/serve_bento.py b/examples/triton/tensorflow/serve_bento.py deleted file mode 100644 index d2538ef9b4f..00000000000 --- a/examples/triton/tensorflow/serve_bento.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations - -if __name__ == "__main__": - import argparse - import time - - import bentoml - - parser = argparse.ArgumentParser() - parser.add_argument( - "--grpc", action="store_true", default=False, help="Whether to serve as gRPC." - ) - parser.add_argument("--tag", type=str, default=None) - - args = parser.parse_args() - - tag = "triton-integration-tensorflow" - if args.tag: - tag = f"triton-integration-tensorflow:{args.tag}" - - server_type = "grpc" if args.grpc else "http" - - try: - bento = bentoml.get(tag) - except bentoml.exceptions.NotFound: - raise ValueError( - "Bento is not yet built. Make sure to run 'python3 build_bento.py' and try to run this script again." - ) - else: - bento = bentoml.get(tag) - server = bentoml.serve( - bento, - server_type=server_type, - production=True, - ) - try: - while True: - bentoml.client.Client.wait_until_server_ready( - server.host, server.port, 1000 - ) - client = bentoml.client.Client.from_url( - f"http://localhost:{server.port}" - ) - print( - "Tensorflow config:", - client.model_config( - inp={"model_name": "tensorflow_yolov5s", "protocol": "grpc"} - ), - ) - time.sleep(1e9) - except KeyboardInterrupt: - server.stop() - raise SystemExit(0) diff --git a/examples/triton/tensorflow/service.py b/examples/triton/tensorflow/service.py deleted file mode 100644 index f782c79a3b9..00000000000 --- a/examples/triton/tensorflow/service.py +++ /dev/null @@ -1,87 +0,0 @@ -from __future__ import annotations - -import typing as t - -import helpers -import numpy as np -import torch - -import bentoml - -if t.TYPE_CHECKING: - from PIL.Image import Image - -# triton runner -triton_runner = bentoml.triton.Runner( - "triton_runner", - "./model_repository", - cli_args=[ - "--model-control-mode=explicit", - "--load-model=tensorflow_yolov5s", - ], -) -bentoml_yolov5_tensorflow = bentoml.tensorflow.get("tensorflow-yolov5").to_runner() - -svc = bentoml.Service( - "triton-integration", - runners=[triton_runner, bentoml_yolov5_tensorflow], -) - - -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), output=bentoml.io.JSON() -) -async def bentoml_tensorflow_yolov5_infer(fp: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - fp, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - im = prep.im - _, _, h, w = prep.im.shape - im = prep.im.permute(0, 2, 3, 1) # torch BCHW to numpy BHWC shape(1,320,192, 3) - y = await bentoml_yolov5_tensorflow.async_run(im.cpu().numpy()) - y = [logit if isinstance(logit, np.ndarray) else logit.numpy() for logit in y] - y[0][..., :4] *= [w, h, w, h] - return helpers.postprocess_yolov5_prediction(y, prep) - - -@svc.api( - input=bentoml.io.Image.from_sample("./data/zidane.jpg"), output=bentoml.io.JSON() -) -async def triton_tensorflow_yolov5_infer(fp: Image) -> dict[str, str]: - prep = helpers.prepare_yolov5_input( - fp, 640, False, "cpu" if not torch.cuda.is_available() else "cuda:0", False, 32 - ) - im = prep.im.permute(0, 2, 3, 1) # torch BCHW to numpy BHWC shape(1,320,192, 3) - InferResult = await triton_runner.tensorflow_yolov5s.async_run(im.cpu().numpy()) - return helpers.postprocess_yolov5_prediction(InferResult.as_numpy("output_0"), prep) - - -# Triton Model management API -@svc.api( - input=bentoml.io.JSON.from_sample({"model_name": "tensorflow_yolov5s"}), - output=bentoml.io.JSON(), -) -async def model_config(input_model: dict[t.Literal["model_name"], str]): - return await triton_runner.get_model_config(input_model["model_name"], as_json=True) - - -@svc.api( - input=bentoml.io.Text.from_sample("tensorflow_yolov5s"), output=bentoml.io.JSON() -) -async def unload_model(input_model: str): - await triton_runner.unload_model(input_model) - return {"unloaded": input_model} - - -@svc.api( - input=bentoml.io.Text.from_sample("tensorflow_yolov5s"), output=bentoml.io.JSON() -) -async def load_model(input_model: str): - await triton_runner.load_model(input_model) - return {"loaded": input_model} - - -@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) -async def list_models(_: str) -> list[str]: - resp = await triton_runner.get_model_repository_index() - return [i.name for i in resp.models] diff --git a/examples/triton/tensorflow/setup b/examples/triton/tensorflow/setup deleted file mode 100755 index cd52a5a0945..00000000000 --- a/examples/triton/tensorflow/setup +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -set -ex - -if [ -f /etc/lsb-release ]; then - # In Ubuntu - apt-get update && apt-get install -y pkg-config libhdf5-dev ffmpeg libsm6 libxext6 -fi - -if [ -n "${BENTO_PATH}" ] || [ -f /.dockerenv ]; then - # We need to export LD_PRELOAD inside bento container. - SITE_PACKAGES=$(python3 -c "import site; print(site.getsitepackages()[0])") - - export LD_PRELOAD=$(find "$SITE_PACKAGES/torch/lib/" -name "libgomp*" -printf "%p\n") -fi diff --git a/examples/triton/tensorflow/train.py b/examples/triton/tensorflow/train.py deleted file mode 100644 index 0781abe0e82..00000000000 --- a/examples/triton/tensorflow/train.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -import tensorflow as tf -from helpers import MODEL_FILE -from helpers import load_traced_script - -import bentoml - -if __name__ == "__main__": - import argparse - - parser = argparse.ArgumentParser() - - parser.add_argument( - "--override", - action="store_true", - default=False, - help="Override existing models", - ) - args = parser.parse_args() - - bento_model_name = "tensorflow-yolov5" - - try: - bentoml.models.get(bento_model_name) - if args.override: - raise bentoml.exceptions.NotFound( - "'override=True', overriding previously saved weights/conversions." - ) - print(f"{bento_model_name} already exists. Skipping...") - except bentoml.exceptions.NotFound: - _, metadata = load_traced_script() - model = tf.saved_model.load( - MODEL_FILE.__fspath__().replace(".pt", "_saved_model") - ) - print( - "Saved model:", - bentoml.tensorflow.save_model( - bento_model_name, - model, - signatures={"__call__": {"batchable": True, "batch_dim": (0, 0)}}, - tf_save_options=tf.saved_model.SaveOptions( - experimental_custom_gradients=False - ), - metadata={"model_info": metadata}, - ), - ) - except Exception: - print("Failed to save model:", bento_model_name) - raise diff --git a/examples/tutorial/bentofile.yaml b/examples/tutorial/bentofile.yaml deleted file mode 100644 index dfdad9a1b15..00000000000 --- a/examples/tutorial/bentofile.yaml +++ /dev/null @@ -1,8 +0,0 @@ -service: 'service.py:svc' -name: text-classification-svc -include: - - 'service.py' -python: - packages: - - torch>=2.0 - - transformers diff --git a/examples/tutorial/init_model.py b/examples/tutorial/init_model.py deleted file mode 100644 index 9fdfa0e7ddf..00000000000 --- a/examples/tutorial/init_model.py +++ /dev/null @@ -1,11 +0,0 @@ -import transformers - -import bentoml - -pipe = transformers.pipeline("text-classification") - -bentoml.transformers.save_model( - "text-classification-pipe", - pipe, - signatures={"__call__": {"batchable": True}}, # Enable dynamic batching for model -) diff --git a/examples/tutorial/requirements.txt b/examples/tutorial/requirements.txt deleted file mode 100644 index 3813d0a7aa8..00000000000 --- a/examples/tutorial/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -bentoml -torch>=2.0 -transformers diff --git a/examples/tutorial/service.py b/examples/tutorial/service.py deleted file mode 100644 index 6caa172f1a7..00000000000 --- a/examples/tutorial/service.py +++ /dev/null @@ -1,11 +0,0 @@ -import bentoml - -model_runner = bentoml.models.get("text-classification-pipe").to_runner() - -svc = bentoml.Service("text-classification-service", runners=[model_runner]) - - -@svc.api(input=bentoml.io.Text(), output=bentoml.io.JSON()) -async def classify(text: str) -> str: - results = await model_runner.async_run([text]) - return results[0] diff --git a/examples/xgboost/README.md b/examples/xgboost/README.md deleted file mode 100644 index 675e6f01219..00000000000 --- a/examples/xgboost/README.md +++ /dev/null @@ -1,180 +0,0 @@ -# BentoML XGBoost Demo - -This is a sample project demonstrating basic usage of BentoML with XGBoost. - -### Install Dependencies - -Install python packages required for running this project: - -```bash -pip install -r ./requirements.txt -``` - -### Model Training - -First step, train a classification model with the UCI Machine Learning Repository Agaricus mushroom -dataset and save the model with BentoML: - -```bash -python train.py -``` - -This should save a new model in the BentoML local model store: - -```bash -bentoml models list agaricus -``` - -Verify that the model can be loaded as runner from Python shell: - -```python -import bentoml - -runner = bentoml.xgboost.get("agaricus:latest").to_runner() - -runner.run([0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]) # => array(0.01241208, dtype=float32) -``` - -### Create ML Service - -The ML Service code is defined in the `agaricus.py` file: - -```python -# agaricus.py -import typing - -import bentoml -import xgboost -from bentoml.io import NumpyNdarray, File - -if typing.TYPE_CHECKING: - import numpy as np - -agaricus_runner = bentoml.xgboost.get("agaricus:latest").to_runner() - -svc = bentoml.Service("agaricus", runners=[agaricus_runner]) - - -@svc.api(input=NumpyNdarray(), output=NumpyNdarray()) -def classify(input_data: "np.ndarray") -> "np.ndarray": - return agaricus_runner.run(input_data) -``` - -Start an API server locally to test the service code above: - -```bash -bentoml serve agaricus:svc --development --reload -``` - -With the `--reload` flag, the API server will automatically restart when the source -file `agaricus.py` is being edited, to boost your development productivity. - -Verify the endpoint can be accessed locally: - -```bash -curl -X POST -H "content-type: application/json" --data "[[0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1]]" http://127.0.0.1:3000/classify -``` - -### Build Bento for deployment - -A `bentofile` for the agaricus service is also contained in this directory: - -```yaml -service: "agaricus:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: - - "*.py" -exclude: - - "locustfile.py" -python: - packages: - - xgboost -``` - -Simply run `bentoml build` from this directory to build a Bento with the latest version of the -`agaricus` model. This may take a while when running for the first time, as BentoML needs to resolve -all dependency versions: - -``` -> bentoml build - -03/07/2022 12:25:16 PM INFO [cli] Building BentoML service "agaricus:uvkv7d46cgnvgeb5" from build context "/home/user/devel/gallery/xgboost" -03/07/2022 12:25:16 PM INFO [cli] Packing model "agaricus:3t4533c6ufi6zcz2ca6rzl235" from "/home/user/bentoml/models/agaricus/3t4533c6ufi6zcz2ca6rzl235" -03/07/2022 12:25:16 PM INFO [cli] Successfully saved Model(tag="agaricus:3t4533c6ufi6zcz2ca6rzl235", - path="/run/user/1000/tmpw8lyba_sbentoml_bento_agaricus/models/agaricus/3t4533c6ufi6zcz2ca6rzl235/") -03/07/2022 12:25:16 PM INFO [cli] Locking PyPI package versions.. -03/07/2022 12:25:17 PM INFO [cli] - ██████╗░███████╗███╗░░██╗████████╗░█████╗░███╗░░░███╗██╗░░░░░ - ██╔══██╗██╔════╝████╗░██║╚══██╔══╝██╔══██╗████╗░████║██║░░░░░ - ██████╦╝█████╗░░██╔██╗██║░░░██║░░░██║░░██║██╔████╔██║██║░░░░░ - ██╔══██╗██╔══╝░░██║╚████║░░░██║░░░██║░░██║██║╚██╔╝██║██║░░░░░ - ██████╦╝███████╗██║░╚███║░░░██║░░░╚█████╔╝██║░╚═╝░██║███████╗ - ╚═════╝░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░░╚════╝░╚═╝░░░░░╚═╝╚══════╝ - -03/07/2022 12:25:17 PM INFO [cli] Successfully built Bento(tag="agaricus:uvkv7d46cgnvgeb5") at "/home/user/bentoml/bentos/agaricus/uvkv7d46cgnvgeb5/" -``` - -This Bento can now be served: - -```bash -bentoml serve agaricus:latest -``` - -The Bento directory contains all code, files, models and configuration required to run this service. -BentoML standarizes this file structure, enabling serving runtimes and deployment tools to be built -on top of it. By default, Bentos are managed under the `~/bentoml/bentos` directory: - -``` -> cd $(bentoml get agaricus:latest -o path) - -> tree -. -├── apis -│   └── openapi.yaml -├── bento.yaml -├── env -│   ├── conda -│   ├── docker -│   │   ├── Dockerfile -│   │   ├── entrypoint.sh -│   │   └── init.sh -│   └── python -│   ├── requirements.lock.txt -│   ├── requirements.txt -│   └── version.txt -├── models -│   └── agaricus -│   ├── 3t4533c6ufi6zcz2ca6rzl235 -│   │   ├── model.yaml -│   │   └── saved_model.json -│   └── latest -├── README.md -└── src - ├── agaricus.py - └── train.py - -9 directories, 14 files -``` - -### Containerize Bento for deployment - -Make sure you have docker installed and the docker daemon is running. The following command will use -your local docker environment to build a new docker image containing the Bento: - -```bash -bentoml containerize agaricus:latest -``` - -To test out the newly created docker image: - -```bash -docker run agaricus: -p 3000:3000 -``` diff --git a/examples/xgboost/agaricus.ipynb b/examples/xgboost/agaricus.ipynb deleted file mode 100644 index 3c2738056ce..00000000000 --- a/examples/xgboost/agaricus.ipynb +++ /dev/null @@ -1,282 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "747e0e8d", - "metadata": {}, - "source": [ - "# Quickstart with BentoML and XGBoost\n", - "\n", - "Link to source code: https://github.com/bentoml/BentoML/tree/main/examples/xgboost" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6d4454bd", - "metadata": {}, - "outputs": [], - "source": [ - "import xgboost\n", - "import bentoml" - ] - }, - { - "cell_type": "markdown", - "id": "b66e31f7", - "metadata": {}, - "source": [ - "### Train a classifier using the agaricus dataset:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "eb526488", - "metadata": {}, - "outputs": [], - "source": [ - "# read in data\n", - "dtrain = xgboost.DMatrix(\"data/agaricus.txt.train\")\n", - "\n", - "# specify parameters via map\n", - "param = {\"max_depth\": 2, \"eta\": 1, \"objective\": \"binary:logistic\"}\n", - "num_round = 2\n", - "bst = xgboost.train(param, dtrain, num_round)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e94ed449", - "metadata": {}, - "outputs": [], - "source": [ - "bentoml.xgboost.save_model(\"agaricus\", bst)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5a876780", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml models list" - ] - }, - { - "cell_type": "markdown", - "id": "672721c4", - "metadata": {}, - "source": [ - "Test loading the model as a BentoML Runner instance:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "28ac794b", - "metadata": {}, - "outputs": [], - "source": [ - "test_runner = bentoml.xgboost.get(\"agaricus:latest\").to_runner()\n", - "test_runner.init_local()\n", - "\n", - "# fmt: off\n", - "test_runner.run([[0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n", - " 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,\n", - " 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n", - " 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0,\n", - " 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", - " 0, 0, 0, 0, 0, 0, 1]]) # => array(0.01241208, dtype=float32)\n", - "# fmt: on" - ] - }, - { - "cell_type": "markdown", - "id": "3fa68254", - "metadata": {}, - "source": [ - "### Create a BentoML Service for serving the model\n", - "\n", - "Note: using `%%writefile` here because `bentoml.Service` instance must be created in a separate `.py` file" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "127aa3fd", - "metadata": {}, - "outputs": [], - "source": [ - "%%writefile agaricus.py\n", - "import typing\n", - "\n", - "import bentoml\n", - "import xgboost\n", - "from bentoml.io import NumpyNdarray, File\n", - "\n", - "if typing.TYPE_CHECKING:\n", - " import numpy as np\n", - "\n", - "agaricus_runner = bentoml.xgboost.get(\"agaricus:latest\").to_runner()\n", - "\n", - "svc = bentoml.Service(\"agaricus\", runners=[agaricus_runner])\n", - "\n", - "@svc.api(input=NumpyNdarray(), output=NumpyNdarray())\n", - "def classify(input_data: \"np.ndarray\") -> \"np.ndarray\":\n", - " return agaricus_runner.run(input_data)" - ] - }, - { - "cell_type": "markdown", - "id": "203beeed", - "metadata": {}, - "source": [ - "Start a dev model server to test out the service defined above:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7523b58f", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve agaricus.py:svc" - ] - }, - { - "cell_type": "markdown", - "id": "3974e4ce", - "metadata": {}, - "source": [ - "Open a new browser tab and test out the API endpoint from the web UI." - ] - }, - { - "cell_type": "markdown", - "id": "4f1a8bcc", - "metadata": {}, - "source": [ - "### Build a Bento for distribution and deployment" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6ef11159", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml build" - ] - }, - { - "cell_type": "markdown", - "id": "47505e3c", - "metadata": {}, - "source": [ - "Starting a dev server with the Bento build:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b7cab8b2", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml serve agaricus:latest" - ] - }, - { - "cell_type": "markdown", - "id": "4c159551", - "metadata": {}, - "source": [ - "## Hooray, your model is ready for production now 🎉\n", - "\n", - "Bento is a standarized format for storing models alongside with all their API definitions, configuration, and environment settings. BentoML can start an REST API server serving a Bento, run a Bento as batch processing job on distributed dataset, or containerize all dependencies and models into a docker container image for easy production deployment." - ] - }, - { - "cell_type": "markdown", - "id": "81ed8b84", - "metadata": {}, - "source": [ - "### Optional: create a docker image for the model server" - ] - }, - { - "cell_type": "markdown", - "id": "8c215454", - "metadata": {}, - "source": [ - "This will require docker to be installed and docker daemon to be running:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5047751c", - "metadata": {}, - "outputs": [], - "source": [ - "!bentoml containerize agaricus:latest" - ] - }, - { - "cell_type": "markdown", - "id": "b5bdf2a1", - "metadata": {}, - "source": [ - "## What's next?\n", - "\n", - "* Learn more at http://docs.bentoml.com 📖\n", - "* Join [BentoML Slack community](https://join.slack.com/t/bentoml/shared_invite/enQtNjcyMTY3MjE4NTgzLTU3ZDc1MWM5MzQxMWQxMzJiNTc1MTJmMzYzMTYwMjQ0OGEwNDFmZDkzYWQxNzgxYWNhNjAxZjk4MzI4OGY1Yjg) 👈\n", - "* Follow us on [Twitter](https://twitter.com/bentomlai) 🐦\n", - "* Contribute to [BentoML on GitHub](https://github.com/bentoml/BentoML) 💻" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "65e092c7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.5 64-bit ('3.10.5')", - "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.10.5" - }, - "vscode": { - "interpreter": { - "hash": "b6c37f2c42f5754f4e69d3366aab52a1fae3caec233d069fa3e31792c24a7a5a" - } - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/xgboost/agaricus.py b/examples/xgboost/agaricus.py deleted file mode 100644 index b37e1810181..00000000000 --- a/examples/xgboost/agaricus.py +++ /dev/null @@ -1,16 +0,0 @@ -import typing - -import bentoml -from bentoml.io import NumpyNdarray - -if typing.TYPE_CHECKING: - import numpy as np - -agaricus_runner = bentoml.xgboost.get("agaricus:latest").to_runner() - -svc = bentoml.Service("agaricus", runners=[agaricus_runner]) - - -@svc.api(input=NumpyNdarray(), output=NumpyNdarray()) -async def classify(input_data: "np.ndarray") -> "np.ndarray": - return await agaricus_runner.async_run(input_data) diff --git a/examples/xgboost/bentofile.yaml b/examples/xgboost/bentofile.yaml deleted file mode 100644 index 9ceeb78d1b9..00000000000 --- a/examples/xgboost/bentofile.yaml +++ /dev/null @@ -1,12 +0,0 @@ -service: "agaricus:svc" -description: "file: ./README.md" -labels: - owner: bentoml-team - stage: demo -include: - - "*.py" -exclude: - - "locustfile.py" -python: - packages: - - xgboost diff --git a/examples/xgboost/blah.txt b/examples/xgboost/blah.txt deleted file mode 100644 index b2f0ed93c84..00000000000 --- a/examples/xgboost/blah.txt +++ /dev/null @@ -1 +0,0 @@ -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 diff --git a/examples/xgboost/data/agaricus.txt.train b/examples/xgboost/data/agaricus.txt.train deleted file mode 100644 index 10c790226d4..00000000000 --- a/examples/xgboost/data/agaricus.txt.train +++ /dev/null @@ -1,6513 +0,0 @@ -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 6:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 6:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 4:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 124:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 20:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 123:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 45:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 9:1 11:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 123:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 1:1 10:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 1:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 122:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 24:1 34:1 36:1 39:1 51:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 124:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 41:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 116:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 20:1 21:1 23:1 34:1 37:1 40:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 21:1 24:1 34:1 37:1 40:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 21:1 24:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 111:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 3:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 124:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 9:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 9:1 20:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 10:1 20:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 19:1 21:1 23:1 34:1 37:1 40:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 20:1 21:1 23:1 34:1 36:1 39:1 48:1 53:1 60:1 65:1 67:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 19:1 21:1 23:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 122:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 124:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 20:1 21:1 24:1 34:1 36:1 39:1 41:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 116:1 122:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 1:1 10:1 19:1 21:1 23:1 34:1 36:1 39:1 45:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 11:1 21:1 30:1 34:1 36:1 40:1 48:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 124:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 114:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 51:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 124:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 21:1 30:1 34:1 36:1 40:1 42:1 53:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 44:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 37:1 39:1 48:1 54:1 58:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 39:1 41:1 54:1 58:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 105:1 114:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 42:1 54:1 58:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 106:1 117:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 126:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 3:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 7:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 5:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 5:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 1:1 9:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 36:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 82:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 14:1 22:1 25:1 34:1 37:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 73:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 14:1 22:1 25:1 34:1 36:1 40:1 49:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 82:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 19:1 22:1 25:1 34:1 36:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 16:1 22:1 25:1 34:1 37:1 40:1 48:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 117:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 16:1 22:1 25:1 34:1 37:1 40:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 5:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 5:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 1:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 5:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 7:1 14:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 19:1 22:1 25:1 34:1 36:1 40:1 42:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 105:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 49:1 54:1 55:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 7:1 18:1 21:1 29:1 34:1 36:1 39:1 42:1 54:1 55:1 65:1 69:1 73:1 86:1 88:1 92:1 95:1 102:1 106:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 5:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 1:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 8:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 2:1 8:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 1:1 8:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 1:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 3:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 5:1 9:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 5:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 1:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 5:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 5:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 5:1 9:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 1:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 5:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 1:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 1:1 9:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 1:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 1:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 1:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 2:1 9:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 1:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 1:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 3:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 44:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 1:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 3:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 1:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -0 4:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 1:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 5:1 8:1 19:1 21:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 112:1 115:1 121:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 5:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 5:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 3:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 3:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 9:1 15:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 1:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 9:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 9:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 1:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 1:1 9:1 19:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 4:1 7:1 13:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -0 4:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 3:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 1:1 10:1 19:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 9:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 5:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 17:1 22:1 29:1 34:1 36:1 40:1 49:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -0 5:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -0 3:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -0 5:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 48:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 118:1 126:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 4:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 120:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 65:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -0 3:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 3:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -0 5:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 3:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 1:1 9:1 20:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 1:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 1:1 10:1 12:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -0 3:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 69:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 48:1 53:1 55:1 64:1 68:1 70:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 123:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -0 5:1 10:1 18:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 76:1 85:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 7:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 123:1 -1 1:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 70:1 80:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 61:1 65:1 69:1 76:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 5:1 7:1 11:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 64:1 67:1 77:1 87:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 79:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 7:1 14:1 22:1 27:1 34:1 36:1 39:1 44:1 53:1 55:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 100:1 108:1 119:1 126:1 -1 3:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 45:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 122:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 120:1 -1 3:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -0 3:1 7:1 11:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 55:1 62:1 66:1 77:1 79:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 19:1 22:1 29:1 34:1 36:1 40:1 51:1 53:1 61:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 99:1 108:1 119:1 126:1 -1 4:1 10:1 19:1 21:1 27:1 34:1 36:1 39:1 51:1 54:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 124:1 -1 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 46:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 109:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 80:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 4:1 10:1 14:1 21:1 27:1 34:1 36:1 39:1 44:1 54:1 55:1 62:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 20:1 22:1 27:1 34:1 36:1 39:1 45:1 53:1 55:1 64:1 68:1 71:1 84:1 88:1 92:1 95:1 100:1 108:1 118:1 120:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 9:1 12:1 21:1 29:1 34:1 36:1 39:1 50:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 98:1 112:1 115:1 125:1 -1 4:1 10:1 12:1 21:1 27:1 34:1 36:1 39:1 48:1 54:1 55:1 65:1 66:1 77:1 86:1 88:1 92:1 95:1 102:1 108:1 118:1 124:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 13:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 13:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 1:1 9:1 20:1 22:1 29:1 34:1 37:1 40:1 52:1 53:1 56:1 63:1 67:1 78:1 87:1 88:1 93:1 95:1 98:1 112:1 115:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 11:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 13:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 13:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 9:1 13:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 126:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 126:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 20:1 22:1 29:1 34:1 37:1 40:1 52:1 53:1 56:1 63:1 67:1 78:1 87:1 88:1 93:1 95:1 98:1 112:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -0 3:1 10:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 18:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 20:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 56:1 63:1 67:1 78:1 87:1 88:1 93:1 95:1 98:1 112:1 115:1 121:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 2:1 9:1 20:1 22:1 29:1 34:1 37:1 40:1 52:1 53:1 56:1 63:1 67:1 78:1 87:1 88:1 93:1 95:1 98:1 112:1 115:1 121:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 4:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 9:1 18:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -0 4:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 4:1 10:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 3:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 1:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 126:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 3:1 9:1 11:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 3:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 20:1 22:1 29:1 34:1 37:1 40:1 51:1 53:1 56:1 63:1 67:1 78:1 87:1 88:1 93:1 95:1 98:1 112:1 115:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 126:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 9:1 13:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 3:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 9:1 11:1 22:1 28:1 34:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 4:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 4:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 9:1 14:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 4:1 9:1 11:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -0 1:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 4:1 9:1 16:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 115:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 28:1 32:1 36:1 39:1 51:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 13:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 9:1 11:1 21:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 4:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 3:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 9:1 13:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -0 3:1 9:1 11:1 22:1 29:1 34:1 36:1 39:1 51:1 53:1 55:1 63:1 67:1 70:1 79:1 88:1 92:1 96:1 102:1 112:1 119:1 123:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 3:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -0 5:1 10:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 4:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 1:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 113:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 118:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 -0 1:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 115:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -1 5:1 10:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 7:1 14:1 22:1 29:1 34:1 37:1 39:1 48:1 53:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 7:1 19:1 22:1 29:1 34:1 37:1 39:1 45:1 53:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 117:1 120:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 118:1 121:1 -1 3:1 10:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 10:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 18:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -1 3:1 10:1 11:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 3:1 9:1 13:1 22:1 28:1 34:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 75:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 68:1 77:1 84:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 123:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 106:1 115:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 110:1 115:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 113:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 115:1 121:1 -1 5:1 9:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -0 1:1 10:1 19:1 22:1 29:1 34:1 37:1 39:1 51:1 53:1 61:1 65:1 69:1 77:1 86:1 88:1 92:1 96:1 102:1 112:1 116:1 120:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 106:1 118:1 121:1 -0 5:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 47:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -1 4:1 9:1 13:1 22:1 28:1 32:1 36:1 39:1 52:1 53:1 56:1 64:1 67:1 72:1 81:1 88:1 92:1 94:1 101:1 112:1 115:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 118:1 121:1 -1 5:1 9:1 11:1 22:1 31:1 34:1 36:1 40:1 43:1 54:1 61:1 65:1 68:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 121:1 -1 5:1 10:1 18:1 22:1 26:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -1 5:1 9:1 11:1 22:1 27:1 34:1 36:1 40:1 43:1 54:1 61:1 64:1 69:1 75:1 86:1 88:1 92:1 95:1 98:1 112:1 118:1 126:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 90:1 95:1 102:1 107:1 118:1 121:1 -0 4:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 42:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 107:1 115:1 121:1 -0 3:1 10:1 11:1 22:1 29:1 32:1 36:1 39:1 52:1 53:1 61:1 65:1 69:1 74:1 83:1 88:1 91:1 95:1 102:1 110:1 115:1 121:1 diff --git a/examples/xgboost/locustfile.py b/examples/xgboost/locustfile.py deleted file mode 100644 index d7a83026681..00000000000 --- a/examples/xgboost/locustfile.py +++ /dev/null @@ -1,17 +0,0 @@ -import numpy as np -from locust import HttpUser -from locust import between -from locust import task -from sklearn.datasets import load_svmlight_file - -test_data = load_svmlight_file("data/agaricus.txt.train") -num_of_rows = len(test_data[0]) - - -class AgaricusLoadTestUser(HttpUser): - @task - def classify(self): - input_data = test_data[1][np.random.choice(num_of_rows)] - self.client.post("/classify", json=list(input_data)) - - wait_time = between(0.01, 2) diff --git a/examples/xgboost/requirements.txt b/examples/xgboost/requirements.txt deleted file mode 100644 index 566796d826f..00000000000 --- a/examples/xgboost/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -bentoml>=1.0.0 -xgboost diff --git a/examples/xgboost/train.py b/examples/xgboost/train.py deleted file mode 100644 index 7507183c9a9..00000000000 --- a/examples/xgboost/train.py +++ /dev/null @@ -1,19 +0,0 @@ -import xgboost - -import bentoml - -if __name__ == "__main__": - # read in data - dtrain = xgboost.DMatrix("data/agaricus.txt.train") - - # specify parameters via dictionary - param = { - "booster": "dart", - "max_depth": 2, - "eta": 1, - "objective": "binary:logistic", - } - num_round = 2 - bst = xgboost.train(param, dtrain, num_round) - - bentoml.xgboost.save_model("agaricus", bst)