ࡱ>  bjbjgg 0$$$$$$$$8%&$n(,,,,-L--DnFnFnFnFnFnFn,t]wrn$.--..rnJ$$,,nJJJ.$,$,DnJ.DnJJ^`2?J d_0nn0nx_wJw(`J`$g...rnrnJ...nw......... #:   Notes on Apache Spark 2 Created 01/17/17 Updated 03/29/17, Updated 04/04/17, Updated 05/26/17, Updated 06/01/17, Updated 07/13/17 Introduction Apache Sparkis an open-source data analytics cluster computing framework originally developed in the AMPLab at UC Berkeley. Spark fits into the Hadoop open-source community, building on top of theHadoop Distributed File System (HDFS). However, Spark is not tied to the two-stageMapReduceparadigm, and promises performance up to 100 times faster than Hadoop MapReduce, for certain applications. Spark provides primitives for in-memory cluster computing that allows user programs to load data into a cluster's memory and query it repeatedly, making it well suited to machine learning algorithms. Provides a way to carry out distributed calculations and collect the results. Since this largely works in-memory, it can be much more efficient than Hadoop. There are three levels at which to learn Apache Spark, and we have been carrying these out in a study group: As a strong justification for learning Scala, since much of the Spark API is Scala-based (though there are Java and Python versions). Most of the Scala learning sources are from the Coursera class on Functional Programming (see related document) As an implementation and deployment facility for distributed calculations on large data sets. With the promise of higher performance compared to Hadoop, and reduced learning curve compared to Hadoop. There are still some Hadoop aspects that are important to learn, such as the Hadoop file system, since that provides a data source. As a community that has developed and is developing a set of libraries for running common big data analytics and machine learning algorithms on top of the Spark platform, just as Mahout provides a set of libraries for such analytics on the Hadoop platform. Since many of these libraries are less mature than their Mahout/Hadoop counterparts, the emphasis here is the community as a vehicle for support. There have been two major versions: The 2.x versions have added pipelines, and also Java compatibility. In this version, DataFrames and optimization of functions running over data tables have been greatly enhanced (these are called Tungsten and Catalyst optimizations). Most of the Machine Learning libraries to a new version, which uses DataFrames instead of RDDs (feature parity with the prior version of ML libraries is expected as of Spark 3.0). The 1.x versions were the initial releases, and created the basic Spark concepts of RDDs and operations on them. The interface was focused on Scala and Python. Starting in release 1.3, the DataFrame object was added as a layer above the RDD, which also included support for columns and database query-like operations. The current version is 2.2.10, released July 2017. A prior current version was 2.1.1, released early 2017. The first release of 2.x was in July 2016. The distribution includes the core libraries, the Scala, Java, and Python APIs, a large set of examples, and the Shark, Streaming, and machine learning libraries. Prior to 2017, we have been primarily working with the Scala APIs.  Spark is similar to Hadoop in ecosystem structure. The MLlib is the most useful part for our projects, and is similar to Mahout in structure. Features Java, Scala, and Python APIs. Proven scalability to 100 nodes in the research laband 80 nodes in production at HYPERLINK "http://en.wikipedia.org/wiki/Yahoo!" \o "Yahoo!" Yahoo!. Ability to cache datasets in memory for interactive data analysis: extract a working set, cache it, query it repeatedly. Interactive command line interface (in Scala or Python) for low-latency data exploration at scale. Higher level library for stream processing, through HYPERLINK "http://spark.apache.org/streaming/" Spark Streaming. Higher level libraries for machine learning and graph processing that because of the distributed memory-based Spark architecture are ten times as fast as Hadoop disk-based HYPERLINK "http://en.wikipedia.org/wiki/Apache_Mahout" \o "Apache Mahout" Apache Mahoutand even scale better than HYPERLINK "http://en.wikipedia.org/wiki/Vowpal_Wabbit" \o "Vowpal Wabbit" Vowpal Wabbit. HYPERLINK "http://en.wikipedia.org/wiki/Apache_Spark" \l "cite_note-16" [16] Persistence layers for Spark: Spark can create distributed datasets from any file stored in the Hadoop distributed file system (HDFS) or other storage systems supported by Hadoop (including your local file system, Amazon S3, Cassandra, Hive, HBase, etc). Spark supports text files, SequenceFiles, Avro, Parquet, and any other Hadoop InputFormat. Release Status and History Spark became an Apache Top-Level Project in February 2014, and was previously an Apache Incubator project since June 2013. It has received code contributions from large companies that use Spark, including Yahoo! and Intel as well as small companies and startups such as Conviva, Quantifind, ClearStoryData, Ooyala and many more. By March 2014, over 150 individual developers had contributed code to Spark, representing over 30 different companies. Prior to joining Apache Incubator, versions 0.7 and earlier were licensed under the BSD license. Who uses Spark Because Spark is a general-purpose framework for cluster computing, it is used for a diverse range of applications. In the Learning Spark book they outlined two personas that this book targets as readers: Data Scientists and Engineers. Lets take a closer look at each of these personas and how they use Spark. Unsurprisingly, the typical use cases differ across the two personas, but we can roughly classify them into two categories, data science and data applications. Of course, these are imprecise personas and usage patterns, and many folks have skills from both, sometimes playing the role of the investigating Data Scientist, and then changing hat and writing a hardened data processing system. Nonetheless, it can be illuminating to consider the two personas and their respective use cases separately. The Data Scientist is running experiments and analyzing data. He/She is focused on algorithms. The Engineer is developing Data Analysis Applications. He/She is focused on development and deployment. Resources The main web site is at http://spark.apache.org/  HYPERLINK "http://spark.apache.org/documentation.html" \t "_blank" http://spark.apache.org/documentation.html  HYPERLINK "http://spark.apache.org/docs/latest/quick-start.html" http://spark.apache.org/docs/latest/quick-start.html  HYPERLINK "http://spark-summit.org/2014/training" \t "_blank"  http://spark-summit.org/2014/training  HYPERLINK "https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples" \t "_blank" https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples  HYPERLINK "https://github.com/databricks/spark-knowledgebase" \t "_blank" https://github.com/databricks/spark-knowledgebase  HYPERLINK "http://www.ibm.com/developerworks/linux/library/l-sparkdataanalysis/" http://www.ibm.com/developerworks/linux/library/l-sparkdataanalysis/  HYPERLINK "https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf" https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf  HYPERLINK "http://blog.cloudera.com/blog/2014/03/apache-spark-a-delight-for-developers/" http://blog.cloudera.com/blog/2014/03/apache-spark-a-delight-for-developers/ This was a very good article, written by the CTO of Databricks. Advanced Analytics with Spark (Second Edition) by  HYPERLINK "http://shop.oreilly.com/product/0636920035091.do" \l "tab_04_2" Sandy Ryza, Uri Laserson, Sean Owen, Josh Wills. O'Reilly Media, March 2017 (for early edition), 271 pages. List price $49.99, Amazon price $39.34. Printed version expected in July 2017. We bought this in May 2017. Spark: The Definitive Guide by Bill Chambers and Matei Zaharia. OReilly Press, January 2017, 450 pages. Not on Amazon yet, only available from OReilly. Updated for Spark 2.x. This is a pre-print, the printed copy is expected October 2017. Spark in Action byPetar Zecevic and Marko Bonaci. Manning Press, November 2016, 472 pages. Rated 3.8 out of 5 stars. One of the first books updated for Spark 2.x. Learning Spark: Lightning-Fast Big Data Analytics by  HYPERLINK "http://shop.oreilly.com/product/0636920028512.do" \l "tab_04_2" Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia. O'Reilly Media, early 2015. List price is $39.99. Rated 4.1 stars on Amazon.com. We have this plus updates. Advanced Analytics with Spark: Patterns for Learning from Data at Scale by  HYPERLINK "http://shop.oreilly.com/product/0636920035091.do" \l "tab_04_2" Sandy Ryza, Uri Laserson, Sean Owen, Josh Wills. O'Reilly Media, November 2014, 268 pages. List price $49.99, Amazon price $39.34. Rated 4.8 stars on Amazon.com. From the Spark Summit:  HYPERLINK "http://spark-summit.org/2014/talk/scalable-distributed-decision-trees-in-spark-mllib" \t "_blank" http://spark-summit.org/2014/talk/scalable-distributed-decision-trees-in-spark-mllib About DataFrames:  HYPERLINK "http://www.meetup.com/__ms91638402/spark-users/events/223361529/comments/454529887/t/uc1_rd/?read=1&_af=event&_af_eid=223361529&itemTypeToken=COMMENT&expires=1442021888459&sig=9816131d0d2791ee41e1d3f06f30cb5d34b4eede" \t "_blank" meetup has been posted: https://www.youtube.com/watch?v=FA3ArTyXNoo 2016 version of Spark course, using DataFrames:  HYPERLINK "https://www.edx.org/course/introduction-apache-spark-uc-berkeleyx-cs105x" https://www.edx.org/course/introduction-apache-spark-uc-berkeleyx-cs105x Others: These templates (and tutorials) should be a good way to get set up with Spark if you're not already.  HYPERLINK "http://typesafe.com/activator/template/spark-workshop" \t "_blank" http://typesafe.com/activator/template/spark-workshop  HYPERLINK "https://typesafe.com/activator/templates" \l "filter:spark" \t "_blank" https://typesafe.com/activator/templates#filter:spark  HYPERLINK "http://typesafe.com/blog/apache-spark-and-the-typesafe-reactive-platform-a-match-made-in-heaven" \t "_blank" http://typesafe.com/blog/apache-spark-and-the-typesafe-reactive-platform-a-match-made-in-heaven Contributing to Spark  HYPERLINK "https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark" \t "_blank" https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark They suggested that we download as source. Concepts At a high level, every Spark application consists of adriver programthat runs the usersmainfunction and executes variousparallel operations on a cluster. The main abstraction Spark provides is aresilient distributed dataset(RDD), which is a collection of elements partitioned across the nodes of the cluster that can be operated on in parallel. RDDs are created by starting with a file in the Hadoop file system (or any other Hadoop-supported file system), or an existing Scala collection in the driver program, and transforming it. Users may also ask Spark topersistan RDD in memory, allowing it to be reused efficiently across parallel operations. Finally, RDDs automatically recover from node failures. A second abstraction in Spark isshared variablesthat can be used in parallel operations. By default, when Spark runs a function in parallel as a set of tasks on different nodes, it ships a copy of each variable used in the function to each task. Sometimes, a variable needs to be shared across tasks, or between tasks and the driver program. Spark supports two types of shared variables:broadcast variables, which can be used to cache a value in memory on all nodes, andaccumulators, which are variables that are only added to, such as counters and sums. Think of Spark as a job-execution system. You define a job with a set of scheduling parameters, and information about the resources to use (local cluster or remote cluster, etc.). The job is then carried out, and you get results and callbacks. What is useful is that objects which are created within the Spark context are will have operations on their automatically distributed to the cluster processors. There are also a set of monitoring constructs. Jobs and Stages  Modules in the Distribution common/sketch common/network-common common/network-shuffle common/unsafe common/tags core graphx mllib mllib-local tools streaming sql/catalyst sql/core sql/hive assembly external/flume external/flume-sink external/flume-assembly examples repl launcher external/kafka-0-8 external/kafka-0-8-assembly external/kafka-0-10 external/kafka-0-10-assembly external/kafka-0-10-sql Getting Started These exercises give you practice in the following areas: Installing and experimenting with the Scala language Learning about Scala collections Installing Spark and running your first job Improving performance through multithreading Improving performance through configuration A good example can be downloaded from the Spark-template repo on Git  HYPERLINK "https://github.com/damirv/spark-template.git" https://github.com/damirv/spark-template.git Prerequisites This set of exercises requires some basic knowledge of Linux, including the ability to install new applications. Knowledge of the Scala language is beneficial but not required. You must perform these exercises in order, as they illustrate the installation of the necessary software packages. Building for Scala 2.10 To produce a Spark package compiled with Scala 2.10, use the-Dscala-2.10property: ./dev/change-scala-version.sh 2.10 ./build/mvn -Pyarn -Phadoop-2.4 -Dscala-2.10 -DskipTests clean package Note that support for Scala 2.10 is deprecated as of Spark 2.1.0 and may be removed in Spark 2.2.0. Build success in 16 minutes. First Sample Project /** Computes an approximation to pi */ object SparkPi { def main(args: Array[String]) { if (args.length == 0) { System.err.println("Usage: SparkPi []") System.exit(1) } val spark = new SparkContext(args(0), "SparkPi", System.getenv("SPARK_HOME"), SparkContext.jarOfClass(this.getClass)) val slices = if (args.length > 1) args(1).toInt else 2 val n = 100000 * slices val count = spark.parallelize(1 to n, slices).map { i => val x = random * 2 - 1 val y = random * 2 - 1 if (x * x + y * y < 1) 1 else 0 }.reduce(_ + _) println("Pi is roughly " + 4.0 * count / n) // block so we can look at http://localhost:4040 Thread.sleep(1000 * 3600) } } While Spark was running, I looked at localhost:4040, and captured the following:  Second Sample Project /* Finds the average of a list of numbers */ object BasicAvg { def main(args: Array[String]) { val master = args.length match { case x: Int if x > 0 => args(0) case _ => "local" } val sc = new SparkContext(master, "BasicAvg", System.getenv("SPARK_HOME")) val input = sc.parallelize(List(1, 2, 3, 4)) val result = input.aggregate((0, 0))( (x, y) => Log("seqOp", (x, y), (x._1 + y, x._2 + 1)), (x, y) => Log("combOp", (x, y), (x._1 + y._1, x._2 + y._2))) val avg = result._1 / result._2.toFloat println(result) } } Where Log is defined as: object Log { /** Useful for function literals. */ def apply[U, T](name: String, arg: U, result: T): T = { println(s"$name: $arg => $result") result } def apply[T](name: String, t: T): T = { println(s"$name: $t") t } } Spark API: Control Elements The first thing a Spark program must do is to create aSparkContextobject, which tells Spark how to access a cluster. This is done through the following constructor: new SparkContext(master, appName, [sparkHome], [jars]) or throughnew SparkContext(conf), which takes a HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.SparkConf" SparkConfobject for more advanced configuration. Themasterparameter is a string specifying a HYPERLINK "http://spark.apache.org/docs/latest/scala-programming-guide.html" \l "master-urls" Spark or Mesos cluster URLto connect to, or a special local string to run in local mode, as described below. appNameis a name for your application, which will be shown in the cluster web UI. Finally, the last two parameters are needed to deploy your code to a cluster if running in distributed mode, as described later. In the Spark shell, a special interpreter-aware SparkContext is already created for you, in the variable calledsc. Making your own SparkContext will not work. You can set which master the context connects to using theMASTERenvironment variable, and you can add JARs to the classpath with theADD_JARSvariable. For example, to runbin/spark-shellon four cores, use $ MASTER=local[4] ./bin/spark-shell Or, to also addcode.jarto its classpath, use: $ MASTER=local[4] ADD_JARS=code.jar ./bin/spark-shell Master URLs The master URL passed to Spark can be in one of the following formats: Master URLMeaninglocalRun Spark locally with one worker thread (i.e. no parallelism at all).local[K]Run Spark locally with K worker threads (ideally, set this to the number of cores on your machine).spark://HOST:PORTConnect to the given HYPERLINK "http://spark.apache.org/docs/latest/spark-standalone.html" Spark standalone clustermaster. The port must be whichever one your master is configured to use, which is 7077 by default.mesos://HOST:PORTConnect to the given HYPERLINK "http://spark.apache.org/docs/latest/running-on-mesos.html" Mesoscluster. The host parameter is the hostname of the Mesos master. The port must be whichever one the master is configured to use, which is 5050 by default. If no master URL is specified, the spark shell defaults to local. For running on YARN, Spark launches an instance of the standalone deploy cluster within YARN; see HYPERLINK "http://spark.apache.org/docs/latest/running-on-yarn.html" running on YARNfor details. Spark Session vs. Spark Context  HYPERLINK "https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.html" https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.html Generally, a session is an interaction between two or more entities. In computer parlance, its usage is prominent in the realm of networked computers on the Internet. First with TCP session, then with login session, followed by HTTP and user session, so no surprise that we now haveSparkSession, introduced in HYPERLINK "https://databricks.com/blog/2016/07/26/introducing-apache-spark-2-0.html" \t "_blank" Apache Spark 2.0. Beyond a time-bounded interaction,SparkSessionprovides a single point of entry to interact with underlying Spark functionality and allows programming Spark with DataFrame and Dataset APIs. Most importantly, it curbs the number of concepts and constructs a developer has to juggle while interacting with Spark. Whereas in Spark 2.0 the same effects can be achieved through SparkSession, without explicitly creating SparkConf, SparkContext or SQLContext, as theyre encapsulated within the SparkSession. Using a builder design pattern, it instantiates a SparkSession object if one does not already exist, along with its associated underlying contexts. // Create a SparkSession. No need to create SparkContext // You automatically get it as part of the SparkSession val warehouseLocation = "file:${system:user.dir}/spark-warehouse" val spark = SparkSession .builder() .appName("SparkSessionZipsExample") .config("spark.sql.warehouse.dir", warehouseLocation) .enableHiveSupport() .getOrCreate() Programming with Datasets and DataFrames Good external resource:  HYPERLINK "https://jaceklaskowski.gitbooks.io/mastering-apache-spark/" https://jaceklaskowski.gitbooks.io/mastering-apache-spark/ Java API  HYPERLINK "https://spark.apache.org/docs/latest/api/java/index.html" https://spark.apache.org/docs/latest/api/java/index.html A Dataset is a strongly typed collection of domain-specific objects that can be transformed in parallel using functional or relational operations. Each Dataset also has an untyped view called aDataFrame, which is a Dataset of HYPERLINK "http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Row.html" \o "interface in org.apache.spark.sql" Row. Operations available on Datasets are divided into transformations and actions. Transformations are the ones that produce new Datasets, and actions are the ones that trigger computation and return results. Example transformations include map, filter, select, and aggregate (groupBy). Example actions count, show, or writing data out to file systems. Datasets are "lazy", i.e. computations are only triggered when an action is invoked. Internally, a Dataset represents a logical plan that describes the computation required to produce the data. When an action is invoked, Spark's query optimizer optimizes the logical plan and generates a physical plan for efficient execution in a parallel and distributed manner. To explore the logical plan as well as optimized physical plan, use theexplainfunction. To efficiently support domain-specific objects, an HYPERLINK "http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Encoder.html" \o "interface in org.apache.spark.sql" Encoderis required. The encoder maps the domain specific typeTto Spark's internal type system. For example, given a classPersonwith two fields,name(string) andage(int), an encoder is used to tell Spark to generate code at runtime to serialize thePersonobject into a binary structure. This binary structure often has much lower memory footprint as well as are optimized for efficiency in data processing (e.g. in a columnar format). To understand the internal binary representation for data, use theschemafunction. There are typically two ways to create a Dataset. The most common way is by pointing Spark to some files on storage systems, using thereadfunction available on aSparkSession. Programming with Resilient Distributed Datasets (RDDs) Spark revolves around the concept of aresilient distributed dataset(RDD), which is a fault-tolerant collection of elements that can be operated on in parallel. There are currently two types of RDDs:parallelized collections, which take an existing Scala collection and run functions on it in parallel, andHadoop datasets, which run functions on each record of a file in Hadoop distributed file system or any other storage system supported by Hadoop. Both types of RDDs can be operated on through the same methods. What are the ways that RDDs can be created? HDFS Persist in memory Failure recovery Creating RDDs Spark provides two ways to create RDDs: loading an external dataset and parallelizing a collection in your driver program. The simplest way to create RDDs is to take an existing in-memory collection and pass it to SparkContexts parallelize method. This approach is very useful when learning Spark, since you can quickly create your own RDDs in the shell and perform operations on them. Keep in mind however, that outside of prototyping and testing, this is not widely used since it requires you have your entire dataset in memory on one machine. scala> val data = Array(1, 2, 3, 4, 5) data: Array[Int] = Array(1, 2, 3, 4, 5) scala> val distData = sc.parallelize(data) distData: spark.RDD[Int] = spark.ParallelCollection@10d13e3e Once created, the distributed dataset (distDatahere) can be operated on in parallel. For example, we might calldistData.reduce(_ + _)to add up the elements of the array. We describe operations on distributed datasets later on. One important parameter for parallel collections is the number ofslicesto cut the dataset into. Spark will run one task for each slice of the cluster. Typically you want 2-4 slices for each CPU in your cluster. Normally, Spark tries to set the number of slices automatically based on your cluster. However, you can also set it manually by passing it as a second parameter toparallelize(e.g.sc.parallelize(data, 10)). Hadoop Datasets Spark can create distributed datasets from any file stored in the Hadoop distributed file system (HDFS) or other storage systems supported by Hadoop (including your local file system, HYPERLINK "http://wiki.apache.org/hadoop/AmazonS3" Amazon S3, Hypertable, HBase, etc). Spark supports text files, HYPERLINK "http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.html" SequenceFiles, and any other Hadoop InputFormat. Text file RDDs can be created usingSparkContextstextFilemethod. This method takes an URI for the file (either a local path on the machine, or ahdfs://,s3n://,kfs://, etc URI). Here is an example invocation: scala> val distFile = sc.textFile("data.txt") distFile: spark.RDD[String] = spark.HadoopRDD@1d4cee08 Once created,distFilecan be acted on by dataset operations. For example, we can add up the sizes of all the lines using themapandreduceoperations as follows:distFile.map(_.size).reduce(_ + _). ThetextFilemethod also takes an optional second argument for controlling the number of slices of the file. By default, Spark creates one slice for each block of the file (blocks being 64MB by default in HDFS), but you can also ask for a higher number of slices by passing a larger value. Note that you cannot have fewer slices than blocks. For HYPERLINK "http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.html" SequenceFiles, use SparkContextssequenceFile[K, V]method whereKandVare the types of key and values in the file. These should be subclasses of Hadoops HYPERLINK "http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Writable.html" Writableinterface, like HYPERLINK "http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/IntWritable.html" IntWritableand HYPERLINK "http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Text.html" Text. In addition, Spark allows you to specify native types for a few common Writables; for example,sequenceFile[Int, String]will automatically read IntWritables and Texts. Finally, for other Hadoop InputFormats, you can use theSparkContext.hadoopRDDmethod, which takes an arbitraryJobConfand input format class, key class and value class. Set these the same way you would for a Hadoop job with your input source. RDD Operations RDDs support two types of operations:transformations, which create a new dataset from an existing one, andactions, which return a value to the driver program after running a computation on the dataset. For example,mapis a transformation that passes each dataset element through a function and returns a new distributed dataset representing the results. On the other hand,reduceis an action that aggregates all the elements of the dataset using some function and returns the final result to the driver program (although there is also a parallelreduceByKeythat returns a distributed dataset). Transformations All transformations in Spark arelazy, in that they do not compute their results right away. Instead, they just remember the transformations applied to some base dataset (e.g. a file). The transformations are only computed when an action requires a result to be returned to the driver program. This design enables Spark to run more efficiently for example, we can realize that a dataset created throughmapwill be used in areduceand return only the result of thereduceto the driver, rather than the larger mapped dataset. By default, each transformed RDD is recomputed each time you run an action on it. However, you may alsopersistan RDD in memory using the persist(orcache) method, in which case Spark will keep the elements around on the cluster for much faster access the next time you query it. There is also support for persisting datasets on disk, or replicated across the cluster. The next section in this document describes these options. The following table lists the transformations commonly used (see also the HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.rdd.RDD" RDD API docfor details): TransformationMeaningmap(func)Return a new distributed dataset formed by passing each element of the source through a functionfunc.filter(func)Return a new dataset formed by selecting those elements of the source on whichfuncreturns true.flatMap(func)Similar to map, but each input item can be mapped to 0 or more output items (sofuncshould return a Seq rather than a single item).mapPartitions(func)Similar to map, but runs separately on each partition (block) of the RDD, sofuncmust be of type Iterator[T] => Iterator[U] when running on an RDD of type T.mapPartitionsWithIndex(func)Similar to mapPartitions, but also providesfuncwith an integer value representing the index of the partition, sofuncmust be of type (Int, Iterator[T]) => Iterator[U] when running on an RDD of type T.sample(withReplacement, fraction,seed)Sample a fractionfractionof the data, with or without replacement, using a given random number generator seed.union(otherDataset)Return a new dataset that contains the union of the elements in the source dataset and the argument.distinct([numTasks]))Return a new dataset that contains the distinct elements of the source dataset.groupByKey([numTasks])When called on a dataset of (K, V) pairs, returns a dataset of (K, Seq[V]) pairs. Note:By default, this uses only 8 parallel tasks to do the grouping. You can pass an optionalnumTasksargument to set a different number of tasks.reduceByKey(func, [numTasks])When called on a dataset of (K, V) pairs, returns a dataset of (K, V) pairs where the values for each key are aggregated using the given reduce function. Like ingroupByKey, the number of reduce tasks is configurable through an optional second argument.sortByKey([ascending], [numTasks])When called on a dataset of (K, V) pairs where K implements Ordered, returns a dataset of (K, V) pairs sorted by keys in ascending or descending order, as specified in the booleanascendingargument.join(otherDataset, [numTasks])When called on datasets of type (K, V) and (K, W), returns a dataset of (K, (V, W)) pairs with all pairs of elements for each key.cogroup(otherDataset, [numTasks])When called on datasets of type (K, V) and (K, W), returns a dataset of (K, Seq[V], Seq[W]) tuples. This operation is also calledgroupWith.cartesian(otherDataset)When called on datasets of types T and U, returns a dataset of (T, U) pairs (all pairs of elements).A complete list of transformations is available in the HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.rdd.RDD" RDD API doc. Actions The most common action on basic RDDs you will likely use is reduce. Reduce takes in a function which operates on two elements of the same type of your RDD and returns a new element of the same type. A simple example of such a function is + , which we can use to sum our RDD. With reduce we can easily sum the elements of our RDD, count the number of elements, and perform other types of aggregations. Here is an example of a reduce val sum = rdd.reduce((x, y) => x + y) This takes a pair of values from the RDD and produces a new value which is the sum. Similar to reduce is fold which also takes a function with the same signature as needed for reduce, but also takes a zero value to be used for the initial call on each partition. The zero value you provide should be the identity element for your operation, that is applying it multiple times with your function should not change the value, (e.g. 0 for +, 1 for *, or an empty list for concatenation). Fold and reduce both require that the return type of our result be the same type as that of the RDD we are operating over. This works well for doing things like sum, but sometimes we want to return a different type. For example when computing the running average we need to have a different return type. We could implement this using a map first where we transform every element into the element and the number 1 so that the reduce function can work on pairs. The aggregate function frees us from the constraint of having the return be the same type as the RDD which we are working on. With aggregate, like fold, we supply an initial zero value of the type we want to return. We then supply a function to combine the elements from our RDD with the accumulator. Finally, we need to supply a second function to merge two accumulators, given that each node accumulates its own results locally. Here is an example of using aggregate (this is directly from the book): val result = input.aggregate((0, 0))( (x, y) => (x._1 + y, x._2 + 1), (x, y) => (x._1 + y._1, x._2 + y._2)) val avg = result._1 / result._2.toDouble In this case, the first function closure is the code to update an element for a new data point, and the second function closure is the code to merge two elements. The following table lists the transformations commonly used (see also the HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.rdd.RDD" RDD API docfor details): ActionMeaningreduce(func)Aggregate the elements of the dataset using a functionfunc(which takes two arguments and returns one). The function should be commutative and associative so that it can be computed correctly in parallel.collect()Return all the elements of the dataset as an array at the driver program. This is usually useful after a filter or other operation that returns a sufficiently small subset of the data.count()Return the number of elements in the dataset.first()Return the first element of the dataset (similar to take(1)).take(n)Return an array with the firstnelements of the dataset. Note that this is currently not executed in parallel. Instead, the driver program computes all the elements.takeSample(withReplacement,num,seed)Return an array with a random sample ofnumelements of the dataset, with or without replacement, using the given random number generator seed.saveAsTextFile(path)Write the elements of the dataset as a text file (or set of text files) in a given directory in the local filesystem, HDFS or any other Hadoop-supported file system. Spark will call toString on each element to convert it to a line of text in the file.saveAsSequenceFile(path)Write the elements of the dataset as a Hadoop SequenceFile in a given path in the local filesystem, HDFS or any other Hadoop-supported file system. This is only available on RDDs of key-value pairs that either implement Hadoop's Writable interface or are implicitly convertible to Writable (Spark includes conversions for basic types like Int, Double, String, etc).countByKey()Only available on RDDs of type (K, V). Returns a `Map` of (K, Int) pairs with the count of each key.foreach(func)Run a functionfuncon each element of the dataset. This is usually done for side effects such as updating an accumulator variable (see below) or interacting with external storage systems.A complete list of actions is available in the HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.rdd.RDD" RDD API doc. Some actions on RDDs return some or all of the data to our driver program in the form of a regular collection or value. The simplest and most common operation that returns data to our driver program is collect(), which returns the entire RDDs contents. collect suffers from the restriction that all of your data must fit on a single machine, as it all needs to be copied to the driver. take(n) returns n elements from the RDD and attempts to minimize the number of partitions it accesses, so it may represent a biased collection. Its important to note that these operations do not return the elements in the order you might expect. These operations are useful for unit tests and quick debugging, but may introduce bottlenecks when dealing with large amounts of data. If there is an ordering defined on our data, we can also extract the top elements from an RDD using top. top will use the default ordering on the data, but we can supply our own comparison function to extract the top elements. Sometimes we need a sample of our data in our driver program. The takeSample(withReplacement, num, seed) function allows us to take a sample of our data either with or without replacement. The further standard operations on a basic RDD all behave pretty much exactly as one would imagine from their name. count() returns a count of the elements, and countByValue() returns a map of each unique value to its count. Passing Functions to Spark Most of Spark transformations, and some of its actions, depend on passing in functions that are used by Spark to compute data. Each of the core languages has a slightly different mechanism for passing functions to Spark. RDD Persistence One of the most important capabilities in Spark ispersisting(orcaching) a dataset in memory across operations. When you persist an RDD, each node stores any slices of it that it computes in memory and reuses them in other actions on that dataset (or datasets derived from it). This allows future actions to be much faster (often by more than 10x). Caching is a key tool for building iterative algorithms with Spark and for interactive use from the interpreter. As discussed earlier, Spark RDDs are lazily evaluated, and sometimes we may wish to use the same RDD multiple times. If we do this naively, Spark will recompute the RDD and all of its dependencies each time we call an action on the RDD. This can be especially expensive for iterative algorithms, which look at the data many times. Another trivial example would be doing a count and then writing out the same RDD. Example 3-36. Scala double execute example val result = input.map(x => x*x) println(result.count()) println(result.collect().mkString(",")) To avoid computing an RDD multiple times, we can ask Spark to persist the data. When we ask Spark to persist an RDD, the nodes that compute the RDD store their partitions. If a node that has data persisted on it fails, Spark will recompute the lost partitions of the data when needed. We can also replicate our data on multiple nodes if we want to be able to handle node failure without slowdown. You can mark an RDD to be persisted using thepersist()orcache()methods on it. The first time it is computed in an action, it will be kept in memory on the nodes. The cache is fault-tolerant if any partition of an RDD is lost, it will automatically be recomputed using the transformations that originally created it. In addition, each RDD can be stored using a differentstorage level, allowing you, for example, to persist the dataset on disk, or persist it in memory but as serialized Java objects (to save space), or even replicate it across nodes. These levels are chosen by passing a HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.storage.StorageLevel" org.apache.spark.storage.StorageLevelobject topersist(). Thecache()method is a shorthand for using the default storage level, which is StorageLevel.MEMORY_ONLY(store deserialized objects in memory). The complete set of available storage levels is: Storage LevelMeaningMEMORY_ONLYStore RDD as deserialized Java objects in the JVM. If the RDD does not fit in memory, some partitions will not be cached and will be recomputed on the fly each time they're needed. This is the default level.MEMORY_AND_DISKStore RDD as deserialized Java objects in the JVM. If the RDD does not fit in memory, store the partitions that don't fit on disk, and read them from there when they're needed.MEMORY_ONLY_SERStore RDD asserializedJava objects (one byte array per partition). This is generally more space-efficient than deserialized objects, especially when using a HYPERLINK "http://spark.apache.org/docs/latest/tuning.html" fast serializer, but more CPU-intensive to read.MEMORY_AND_DISK_SERSimilar to MEMORY_ONLY_SER, but spill partitions that don't fit in memory to disk instead of recomputing them on the fly each time they're needed.DISK_ONLYStore the RDD partitions only on disk.MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc.Same as the levels above, but replicate each partition on two cluster nodes.Which Storage Level to Choose? Sparks storage levels are meant to provide different tradeoffs between memory usage and CPU efficiency. We recommend going through the following process to select one: If your RDDs fit comfortably with the default storage level (MEMORY_ONLY), leave them that way. This is the most CPU-efficient option, allowing operations on the RDDs to run as fast as possible. If not, try usingMEMORY_ONLY_SERand HYPERLINK "http://spark.apache.org/docs/latest/tuning.html" selecting a fast serialization libraryto make the objects much more space-efficient, but still reasonably fast to access. Dont spill to disk unless the functions that computed your datasets are expensive, or they filter a large amount of the data. Otherwise, recomputing a partition is about as fast as reading it from disk. Use the replicated storage levels if you want fast fault recovery (e.g. if using Spark to serve requests from a web application).Allthe storage levels provide full fault tolerance by recomputing lost data, but the replicated ones let you continue running tasks on the RDD without waiting to recompute a lost partition. If you want to define your own storage level (say, with replication factor of 3 instead of 2), then use the function factor methodapply()of the HYPERLINK "http://spark.apache.org/docs/latest/api/core/index.html" \l "org.apache.spark.storage.StorageLevel$" StorageLevelsingleton object. Working with Key-Value Pairs This chapter covers how to work with RDDs of key-value pairs, which are a common data type required for many operations in Spark. Key-value RDDs expose new operations such as aggregating data items by key (e.g., counting up reviews for each product), grouping together data with the same key, and grouping together two different RDDs. Oftentimes, to work with data records in Spark, you will need to turn them into keyvalue pairs and apply one of these operations. We also discuss an advanced feature that lets users control the layout of pair RDDs across nodes: partitioning. Using controllable partitioning, applications can sometimes greatly reduce communication costs, by ensuring that data that will be accessed together will be on the same node. This can provide significant speedups. We illustrate partitioning using the PageRank algorithm as an example. Choosing the right partitioning for a distributed dataset is similar to choosing the right data structure for a local one in both cases, data layout can greatly affect performance. More to be filled in here from chapter 4 of the Learning Spark book. Creating Pair RDDs There are a number of ways to get Pair RDDs in Spark. Many formats we explore in Chapter 5 will directly return Pair RDDs for their key-value data. In other cases we have a regular RDD that we want to turn into a Pair RDDs. To illustrate creating a Pair RDDs we will key our data by the first word in each line of the input. In Python, for the functions on keyed data to work we need to make sure our RDD consists of tuples. Example 4-1. Python create pair RDD using the first word as the key input.map(lambda x: (x.split(" ")[0], x)) In Scala, to create Pair RDDs from a regular RDD, we simply need to return a tuple from our function. Example 4-2. Scala create pair RDD using the first word as the key input.map(x => (x.split(" ")(0), x)) Java doesnt have a built-in tuple type, so Sparks Java API has users create tuples using the scala.Tuple2 class. This class is very simple: Java users can construct a new tuple by writing new Tuple2(elem1, elem2) and can then access the elements with the ._1() and ._2() methods. Java users also need to call special versions of Sparks functions when creating Pair RDDs. For instance, the mapToPair function should be used in place of the basic map function. This is discussed in more detail in converting between RDD types, but lets look at a simple example below. PairFunction keyData = new PairFunction() { public Tuple2 call(String x) { return new Tuple2(x.split(" ")[0], x); } }; JavaPairRDD rdd = input.mapToPair(keyData); When creating a Pair RDD from an in memory collection in Scala and Python we only need to make sure the types of our data are correct, and call parallelize. To create a Pair RDD in Java from an in memory collection we need to make sure our collection consists of tuples and a also call SparkContext.parallelizePairs instead of SparkContext.parallelize. Transformations on Pair RDDs Pair RDDs are allowed to use all the transformations available to standard RDDs. The same rules from passing functions to spark apply. Since Pair RDDs contain tuples, we need to pass functions that operate on tuples rather than on individual elements. In Java and Scala when we run a map or filter or similar over a Pair RDDs, our function will be passed an instance of scala.Tuple2. In Scala pattern matching is a common way of extracting the individual values, whereas in Java we use the ._1() and ._2() values to access the elements. In Python our Pair RDDs consist of standard Python tuple objects that we interact with as normal. For instance, we can take our Pair RDD from the previous section and filter out lines longer than 20 characters. Operations Aggregate Group Join Data Partitioning The final Spark feature we will discuss in this chapter is how to control datasets partitioning across nodes. In a distributed program, communication is very expensive, so laying out data to minimize network traffic can greatly improve performance. Much like how a single-node program needs to choose the right data structure for a collection of records, Spark programs can choose to control their RDDs partitioning to reduce communication. Partitioning will not be helpful in all applications for example, if a given RDD is only scanned once, there is no point in partitioning it in advance. It is only useful when a dataset is reused multiple times in key-oriented operations such as joins. We will give some examples below. Sparks partitioning is available on all RDDs of key-value pairs, and causes the system to group together elements based on a function of each key. Although Spark does not give explicit control of which worker node each key goes to (partly because the system is designed to work even if specific nodes fail), it lets the program ensure that a set of keys will appear together on some node. For example, one might choose to hashpartition an RDD into 100 partitions so that keys that have the same hash value modulo 100 appear on the same node. Or one might range-partition the RDD into sorted ranges of keys so that elements with keys in the same range appear on the same node. Determining an RDDs Partitioner In Scala and Java, you can determine how an RDD is partitioned using its partitioner property (or partitioner() method in Java).1 This returns a scala.Option object, which is a Scala class for a container that may or may not contain one item. (It is considered good practice in Scala to use Option for fields that may not be present, instead of setting a field to null if a value is not present, running the risk of a null-pointer exception if the program subsequently tries to use the null as if it were an actual, present value.) You can call isDefined() on the Option to check whether it has a value, and get() to get this value. If present, the value will be a spark.Partitioner object. This is essentially a function telling the RDD which partition each key goes into more about this later. Loading and Saving Data Hadoop Database Flat files Advanced Programming Shared Variables Normally, when a function passed to a Spark operation (such asmaporreduce) is executed on a remote cluster node, it works on separate copies of all the variables used in the function. These variables are copied to each machine, and no updates to the variables on the remote machine are propagated back to the driver program. Supporting general, read-write shared variables across tasks would be inefficient. However, Spark does provide two limited types ofshared variablesfor two common usage patterns: broadcast variables and accumulators. Broadcast Variables Broadcast variables allow the programmer to keep a read-only variable cached on each machine rather than shipping a copy of it with tasks. They can be used, for example, to give every node a copy of a large input dataset in an efficient manner. Spark also attempts to distribute broadcast variables using efficient broadcast algorithms to reduce communication cost. Broadcast variables are created from a variablevby callingSparkContext.broadcast(v). The broadcast variable is a wrapper aroundv, and its value can be accessed by calling thevaluemethod. The interpreter session below shows this: scala> val broadcastVar = sc.broadcast(Array(1, 2, 3)) broadcastVar: spark.Broadcast[Array[Int]] = spark.Broadcast(b5c40191-a864-4c7d-b9bf-d87e1a4e787c) scala> broadcastVar.value res0: Array[Int] = Array(1, 2, 3) After the broadcast variable is created, it should be used instead of the valuevin any functions run on the cluster so thatvis not shipped to the nodes more than once. In addition, the objectvshould not be modified after it is broadcast in order to ensure that all nodes get the same value of the broadcast variable (e.g. if the variable is shipped to a new node later). Accumulators Accumulators are variables that are only added to through an associative operation and can therefore be efficiently supported in parallel. They can be used to implement counters (as in MapReduce) or sums. Spark natively supports accumulators of numeric value types and standard mutable collections, and programmers can add support for new types. An accumulator is created from an initial valuevby callingSparkContext.accumulator(v). Tasks running on the cluster can then add to it using the+=operator. However, they cannot read its value. Only the driver program can read the accumulators value, using itsvaluemethod. The interpreter session below shows an accumulator being used to add up the elements of an array: scala> val accum = sc.accumulator(0) accum: spark.Accumulator[Int] = 0 scala> sc.parallelize(Array(1, 2, 3, 4)).foreach(x => accum += x) ... 10/09/29 18:41:08 INFO SparkContext: Tasks finished in 0.317106 s scala> accum.value res2: Int = 10 Running Spark on a Cluster Before diving into the specifics of running Spark on a cluster, its helpful to understand the architecture of Spark when running in a cluster. When running in cluster mode, Spark utilizes a master-slave architecture with one central coordinator and many distributed workers. The central coordinator is called the driver. The driver communicates with potentially larger number of distributed workers called executors. The driver runs in its own Java process and each executor is a Java process. A driver and its executors are together termed a Spark application. A Spark application is launched on a set of machines using an external service called a cluster manager. Spark is packaged with a built-in cluster manager called the Standalone cluster manager. Spark also works with Apache YARN and Apache Mesos, two popular open source cluster managers.  There are several possible Cluster Managers Standalone server Mesos Configuring If you want to run your application on a cluster, you will need to specify the two optional parameters toSparkContextto let it find your code: sparkHome: The path at which Spark is installed on your worker machines (it should be the same on all of them). jars: A list of JAR files on the local machine containing your applications code and any dependencies, which Spark will deploy to all the worker nodes. Youll need to package your application into a set of JARs using your build system. For example, if youre using SBT, the HYPERLINK "https://github.com/sbt/sbt-assembly" sbt-assemblyplugin is a good way to make a single JAR with your code and dependencies. If you runbin/spark-shellon a cluster, you can add JARs to it by specifying theADD_JARSenvironment variable before you launch it. This variable should contain a comma-separated list of JARs. For example,ADD_JARS=a.jar,b.jar ./bin/spark-shellwill launch a shell witha.jarandb.jaron its classpath. In addition, any new classes you define in the shell will automatically be distributed. Deploying to a Cluster with Spark-Submit Spark provides a uniform interface for submitting jobs across all cluster managers, a tool aptly named spark-submit. In Chapter 2 you saw a simple example of submitting a Python program with spark-submit: bin/spark-submit my_script.py When spark-submit is called with nothing but the name of a script or jar, it simply runs the supplied Spark program locally. Lets say we wanted to submit this program to a Spark Standalone cluster. We can provide extra flags with the address of a standalone cluster and a specific size of executor wed like to launch: bin/spark-submit --master spark://host:7077 --executor-memory 10g my_script.py spark-submit provides a variety of options that let you control specific details about a particular run of your application. These options fall roughly into two categories. The first is the location of the cluster manager along with an amount of resources youd like to request for your job (as shown above). The second is information about the runtime dependencies of your application, such as libraries or files you want to be present on all worker machines. The general format for spark-submit is the following: bin/spark-submit [options] [app options] [options] are a list of flags for spark-submit. You can enumerate all possible flags by passing --help to spark-submit. A list of common flags is enumerated in Table 7-1. refers to the jar or Python script containing the entry point into your application. [app options] are options that will be passed onto your application. If the main method of your program parses its calling arguments, it will see only [app options] and not the flags specific to spark-submit. Table 7-1. Common flags for spark-submit Flag Explanation --master Indicates the cluster manager to connect to. The options for this flag are described in Table 7-2. --deploy-mode Whether to launch the driver program locally (client) or one of the worker machines inside the cluster (cluster). In client mode spark-submit will run your driver on the same machine where sparksubmit is itself being invoked. In cluster mode, the driver will be shipped to execute on a worker node in the cluster. The default is client mode. --class The main class of your application if running a Java or Scala program. --name A human readable name for your application. This will be displayed in Sparks web UI. --jars A list of jar files to upload and place on the classpath of your application. If your application depends on a small number of third-party jars, you can add them here. --files A list of files to be placed in the working directory of your application. --py-files A list of files to be added to the PYTHONPATH of your application. --executormemory The amount of memory to use for executors, in bytes. Suffixes can be used to specify larger quantities such as 512m (512 Megabytes) or 15g (15 Gigabytes). --driver-memory The amount of memory to use for the driver process, in bytes. Suffixes can be used to specify larger quantities such as 512m (512 Megabytes) or 15g (15 Gigabytes).  Monitoring Spark servers Ooyala slides - Spark as a service  HYPERLINK "http://spark-summit.org/wp-content/uploads/2014/07/Spark-Job-Server-Easy-Spark-Job-Management-Chan-Chu.pdf" \t "_blank" http://spark-summit.org/wp-content/uploads/2014/07/Spark-Job-Server-Easy-Spark-Job-Management-Chan-Chu.pdf Ooyala Spark job server - Github  HYPERLINK "https://github.com/ooyala/spark-jobserver" \t "_blank" https://github.com/ooyala/spark-jobserver Also will review this, which is evidently a an open source web-UI for monitoring Spark jobs:  HYPERLINK "http://blog.cloudera.com/blog/2014/01/a-new-web-ui-for-spark/" \t "_blank" http://blog.cloudera.com/blog/2014/01/a-new-web-ui-for-spark/ Streaming More to be filled in here. Counting and sorting Ooops, that was just the counting. Here's the sorting: val sortedCounts = counts.map { case(tag, count) => (count, tag) }.transform(rdd => rdd.sortByKey(false)) sortedCounts.foreach(rdd =>println("\nTop 10 hashtags:\n" + rdd.take(10).mkString("\n"))) On Wed, Jul 9, 2014 at 9:08 PM, Richard Walker< HYPERLINK "mailto:aqumegeemail@gmail.com" aqumegeemail@gmail.com>wrote: Here's an interesting bit of Spark code related to our consideration of counting and ranking algos we briefly touched on tonight. This is from a Spark Streaming tutorial included in the Spark Summit link I sent last week: Count the hashtags over a 5 minute window: Next, wed like to count these hashtags over a 5 minute moving window. A simple way to do this would be to gather together the last 5 minutes of data and process it in the usual map-reduce way map each tag to a (tag, 1) key-value pair and then reduce by adding the counts. However, in this case, counting over a sliding window can be done more intelligently. As the window moves, the counts of the new data can be added to the previous windows counts, and the counts of the old data that falls out of the window can be subtracted from the previous windows counts. This can be done using DStreams as follows: val counts = hashtags.map(tag => (tag, 1)) .reduceByKeyAndWindow(_ + _, _ - _, Seconds(60 * 5), Seconds(1)) Shark This is described as the counterpart of Hive for Spark. It should make it easier to write Spark jobs. Documentation is rather limited at this point. The approach seems to be one of creating steps that fetch from the database. Chronology Late 2012 to April 2014: Learned about Spark, attended workshops, organized study groups. All of this was about the 1.0 version February 2017: Downloaded Spark 2.1.0 and Spark 2.1.1, began to rebuild examples. May 2017: The second edition of Advanced Analytics Using Spark came out, and we began to rebuild and re-learn. Created Spark2* examples. Open Issues/Questions How to control number of threads used? How to assign to a Mesos cluster on AWS? Appendix A: Learning Projects Created Spark2J01 Uses Java API. Contains examples of loading DataFrames, and some basic ML examples. Spark2S01 Uses Scala API. Contains examples of loading DataFrames, and some basic ML examples. .     Page  PAGE 3   %()9K]o U V t u { | v (\]^FGɵرz h.h5J h5JH* h5Jh5Jjh5JUh5JCJaJhTh5J0J:B*ph%%% hTh5Jh5J'h5J0J:B*CJOJQJ^JaJph%%% h5J5\h@*h h+ dhh.Uhhz]hlNh7@~hwhfhm*) ;  qr[\^gdlNgd+ d & Fgd N & Fgd Ngd5JgdlN)R5PtK^_  /!0! -DM gd5Jgd5J & Fgd Ngd5JGHefg  ()*uvwܻܷܖܻzܻmeh.h5JH*jh.h5JH*Ujˣh.h5JUjh.h5JU$h.h5J0J>*B*CJaJphf3fjMh.h5JUh5J$h.h5J0J>*B* CJaJph jh.h5JUjh.h5JU h.h5J!h.h5J0J:B*CJaJph%%%&45:GK\ !!!-!.!/!ÿvkXvOvkhph5J0J$juhph5JB*Uphhph5JB*phjhph5JB*Uph hph5J h&%fh5J hnZh5Jh5J6OJPJ]^Jh5JB* PJph h.h5J h5JPJh5J h5JH* h[ oh5J'h.h5J0J>*B* CJH*aJph jh.h5JH*Ujh.h5JH*U/!0!1!=!q!s!t!u!!!!!!!!!""""""""""""<#=#yi^K$jh"h5JB*Uphh"h5JB*phjh"h5JB*Uph$jԧhph5JB*Uphhph5J0Jhph5J>*B*ph$jhph5JB*Uphhph5JB*phjhph5JB*UphheSh5J0Jj<h5JU hhWh5Jh5Jjh5JUh5JB*ph0!!""""q#r# $$$$%%''''(())++5+++, -DM gd5Jgd5J=#>#o#p#q#r#s###### $ $$$$d$f$g$h$$$$$$ %%%%]%^%%%%%%%%ɷͮɧɜ͓ɌɁxɌslajh$-h5JU h$-h5J h5J\h9h5J0Jj֫h5JU he&h5JheSh5J0JjѪh5JU hhah5JhX h5J0Jj֩h5JU h<h5Jh5Jjh5JU h&%fh5Jh"h5JB*phh"h5J0Jjh"h5JB*Uph&%"&#&$&S&T&g&&&&&&'' ( ((( (,(>(K(V(W(((((((űrmmfm^TM h5J5\hmh5J5\hmh5J\ h)h5J h5J\$h5J0JAB*fHphq *h)h5J0J@B*fHphq *h)h5J0J:B*fHphq &h)h5JB*fHphq h)h5J\h5Jh$-h5J0J>*B*phjh$-h5JUjh$-h5JU h$-h5J(((()))*)f)g)x)))))))(*)*u*v*w***+5+6++++++,,-žw_͂/h5J0JCJOJQJ^JaJfHq jh5JUjh5JUh5JfHq h$-h5J0J>*B*phjh$-h5JUjh$-h5JU h$-h5Jh$-h5J\h5Jhmh5J0J>*B*phjʭhmh5JUjhmh5JU hmh5J ---G-H-z-{------..&........////j/ʸʣʑz`zPzzh5J0JCJOJQJ^JaJ2jݳh5JB*CJOJQJU^JaJph,jh5JB*CJOJQJU^JaJph#h5JB*CJOJQJ^JaJphh5JfHq hpuBh5J0Jjڲh5JU hth5Jh5J;h5J0J>*B*CJOJQJ^JaJfHphTTTq jh5JUjh5JU,I-J-z-..&...//00C1D1o1x1H4I4}6~63747t7u78gd'gd5JgdlNgd5J -DM gd5Jgd5Jj/k/l/////000~00000000A1B1C1D1\1o1x11ϿϭϭϿϭ|dOKGCh'hlNhH)hR2h5JB*CJOJQJ^JaJph/h5J0JCJOJQJ^JaJfHq j̶h5JUjh5JUh5J2jh5JB*CJOJQJU^JaJph#h5JB*CJOJQJ^JaJphh5J0JCJOJQJ^JaJ,jh5JB*CJOJQJU^JaJph2jh5JB*CJOJQJU^JaJph1111111111 2A2B2_2`23333i4j4z4{4555%6&626V8W8X8t8!<"<1<F========ߴߞߋ߃|qjzah'U h<h'jh'U h3h'h'CJOJQJaJhlNh'CJOJQJaJ h'h'jͷh'UEh'0JB*CJOJQJaJeh@fHphDDDq r@h'h'0JB*OJQJph333h'0J:B*OJQJph333+88F8V8X8t8~88889<9V9r99999 :(:F:d:::::;4;\;gd'gd'gd'\;;;;<"<2<l<<<<=G=H===>y>z>.?F??@i@j@d,-D4$M gd'gd' & Fgd Ngd'gd'====$>C>x>z>>>,??????@@@BBCBBBC CCCCCCCCC,Dү~m_m_m_m_m_Wm_jEbh'Uh'CJOJ QJ ^J aJ h eh'CJOJ QJ ^J aJ%hlNh'B*CJOJQJaJph333:hlNh'0JB*CJOJQJaJeh@ph333r@Eh'0JB*CJOJ QJ aJeh@fHphDDDq r@#h'0J:B*CJOJQJaJph" h3h'h'jh'UheSh'0J!j@@@@@@AQAfAlAAA'BCBDB|BBBBBB C C:C;CpCCCCgd'gd'CCCCCC,D>D`DDDDDDEEOEyEEE$F8FF?FXFYFfF 7$8$H$gd'gd'gd',DDDE"E>FXFYFhFiFkFFOGPGQGGGGGHH̻ỦݍjL:h'0JB5B* CJOJQJ\aJeh@php r@Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h:]h'CJaJ(h:]h'CJOJ QJ ^J aJmHsH h:]h'CJOJ QJ ^J aJ h{Gh'CJOJ QJ ^J aJh'h'CJOJ QJ ^J aJ h%h'CJOJ QJ ^J aJfFiFFFFFGG+GEGKGOGQGnGHHMHNHIIJJfLgLLLLLgd'gd' 7$8$H$gd'HH&H'H-H.H/H6H7H8H9HBHDHEHFHJHLHMHXHYHoH~HHǬ呬vvrdArdEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'4h'0JFB* CJOJQJaJeh@ph r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@:h'0JC5B*CJOJQJ\aJeh@phr@4h'0JB*CJOJQJaJeh@ph333r@HHHHHHHHII%I&IHIIIJIIIIIIIJJ$J%JbKcKeKKKKKLL#L$LBLCLRLSLfLoL̩̩̩̩̩̩4h'0JGB*CJOJQJaJeh@ph`r@jh'UEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'0JB*OJQJphjh'Uh'jh'U)oLpLuLvLwLxLLLLLLLLLLLLLLLLLEMFMPMQMXMYM_M`MMM寫z__寫XPPPPh'CJaJ h)h'4h'0JGB*CJOJQJaJeh@ph`r@Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'4h'0JB*CJOJQJaJeh@ph333r@4h'0JHB* CJOJQJaJeh@php r@4h'0JDB*CJOJQJaJeh@phfffr@LLLFMQMYMZM`MMwtkd$$If0ug% 624` apyt' $Ifgd'gd'gd'MMMN $Ifgd'tkd$$If0ug% 624` apyt'MMMNN'N(NNNNNNNNOOOO+O,O-OtOuOvO{O|O}OPPPPPQ Q QQQQHQIQUQQQQQRR RRR$Sޔhf?fAfBfMfNfRfSfTf\f]f^fgfhfkflfmfnfoftfufʯʯʯvvʔʔʯv[[ʯv4h'0JFB* CJOJQJaJeh@ph r@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JLB*CJOJQJaJeh@ph@pr@"ufffffffffggggygzgggĩsoL>o>L>o7o> h6xh'h'0J:B*OJQJph333Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'4h'0JB*CJOJQJaJeh@ph333r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JLB*CJOJQJaJeh@ph@pr@:h'0JB5B* CJOJQJ\aJeh@php r@:h'0JC5B*CJOJQJ\aJeh@phr@ggghhiii i!iiii!j"j#j,j-jbjcjdjjjjjj k k0k1k=k?k@kHkIkkkkkkkkkkkߩߐ߈h'CJaJjh'Uh'0JB*OJQJphjh'Ujh'UEh'0JB*CJOJQJaJeh@fHphDDDq r@h'h'0J:B*OJQJph333h'0JB*OJQJph333,kkkkkkkkkkkkllllllll'l(l.l/l0l1l2l7l8lʯ寑vʯ呯[[ʯ4h'0JFB* CJOJQJaJeh@ph r@4h'0JMB*CJOJQJaJeh@ph@pr@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@8lAlBlClJlKlYlZlblcllllllllllmmm!m"mpnĩsoa>aoa>aoa>oa>oa>aoEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'4h'0JB*CJOJQJaJeh@ph333r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JLB*CJOJQJaJeh@ph@pr@:h'0JB5B* CJOJQJ\aJeh@php r@:h'0JC5B*CJOJQJ\aJeh@phr@Llmmlnmnqqrrttwwxxyyy $Ifgd'gd'gd'pnqnrnnnnnn o ooo*o+o,o-o0o1o2o3oooooooooopppkplpmpxpypzp}p~pppppppCqDq]q^qqqqqjh'Ujhh'UjOh'UEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0JB*OJQJphjh'Uh'jh'Uh'0J:B*OJQJph3335qqqrrrrrrrslsmspsqs t tttttttttuu!uvvvvvvvvvvvvxwywwwwwwwww y y ypyqyryjh'Ujh'U h'6]hah'CJaJh'0JB*OJQJph333Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'7ry}y~yyyyyyyyyyzzzzzz"z#z$zrzszwzxzzzzzzzzzzz{{){-{.{/{{{|{{{{{{{{{||||^|_|c|d||||||||||||||||Q}R}Y}e}f}g} h'6]h'CJaJh'h'0J:B*OJQJph333jh'Uh'0JB*OJQJphOyyyz $Ifgd'tkd$$If0u % 624` apyt'zz$zz $Ifgd'tkdX$$If0u % 624` apyt'zzz{ $Ifgd'tkd$$If0u % 624` apyt'{{/{{ $Ifgd'tkd$$If0u % 624` apyt'{{{| $Ifgd'tkdS$$If0u % 624` apyt'|||R} $Ifgd'tkd$$If0u % 624` apyt'R}S}g}} $Ifgd'tkd$$If0u % 624` apyt'g}}}}}}}2~3~@~H~J~K~~~~~~~12?CFNPQOP\eiqst'(12;<BNQY[\ށ߁ DE߼߼߼߼Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333 h'6]h'CJaJh'G}}}3~ $Ifgd'tkdN$$If0u % 624` apyt'3~4~K~2 $Ifgd'tkd$$If0u % 624` apyt'23QP $Ifgd'tkd$$If0u % 624` apyt'PQt< $Ifgd'tkdI$$If0u % 624` apyt'<=\߁ $Ifgd'tkd$$If0u % 624` apyt'߁ $Ifgd'tkd$$If0u % 624` apyt' $Ifgd'tkdD$$If0u % 624` apyt' UVuvgd'gd'tkd$$If0u % 624` apyt'EFքׄvz~ NTZdډRV]_dԭ󭛭#h'B*CJOJ QJ ^J aJphUUU#h'B* CJOJ QJ ^J aJph)h'5B* CJOJ QJ \^J aJphf hPJh'OJ PJQJ ^J h'PJh'0JB*OJQJphjh'Uh'jh'U6UV QRx‹[\ck $Ifgd' 7$8$H$gd'gd'denpqst{|~‹Ƌʋ̋ҋӋ֋؋ދߋٌڌ۴۰۰h'0J:B*OJQJph333h')h'5B* CJOJ QJ \^J aJphf#h'B*CJOJ QJ ^J aJphf#h'B* CJOJ QJ ^J aJph#h'B*CJOJ QJ ^J aJphUUU?ڌی>?@KLM[\bcjkswxyFGQR ABJK89ETUXYZ^_`̶̶̶̶ h'6]h'CJaJ hah'h'0J:B*OJQJph333h'0JB*OJQJphjh'Uh'jh'UHklyG $Ifgd'tkd $$If0un % 624` apyt'GHR $Ifgd'tkdm $$If0un % 624` apyt' B $Ifgd'tkd $$If0un % 624` apyt'BCK $Ifgd'tkd $$If0un % 624` apyt'9 $Ifgd'tkdh $$If0un % 624` apyt'9:` $Ifgd'tkd $$If0un % 624` apyt' $Ifgd'tkd $$If0un % 624` apyt' $Ifgd'tkdc$$If0un % 624` apyt' $Ifgd'tkd $$If0un % 624` apyt'  Ȕɔ]^_jkm9Bmuטژܘƚ12<=@AHНn׾ߞߞh'6OJPJ]^Jh'0JB*OJQJph333h'OJ PJQJ ^J h'PJh'0JB*OJQJphjh'Ujh'Uh'0J:B*OJQJph333 h'6]h'CJaJh'4 ɔ $Ifgd'tkd$$If0un % 624` apyt'ɔʔmnrsVWgd'tkd^$$If0un % 624` apyt'ϝНmnҟ̢͢PQ_g $Ifgd'gd'gd'ŸȟɟΟҟٟڟ9A¡ġš̡͡ƴƮllEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'h'6OJPJ]^J h'PJ#h'B*CJOJ QJ ^J aJph3#h'B*CJOJ QJ ^J aJphUUU#h'B* CJOJ QJ ^J aJph)h'5B* CJOJ QJ \^J aJphf*ݣޣNOPuvwݤ^_fgstCDTU#$./톩~~~~~~~wljJh'U h'6]h'CJaJEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333Eh'0JB*CJOJQJaJeh@fHphq r@jh'Ujh'Uh'h'0JB*OJQJph333*ghtD $Ifgd'tkdO$$If0uM % 624` apyt'DEU $Ifgd'tkd$$If0uM % 624` apyt'( $Ifgd'tkd$$If0uM % 624` apyt''(<=ϨШڨۨ)*vw}$%()*ghi2367uv}~嬺嬓嬺jh'Uh'0JB*OJQJph333jh'Uh'0J:B*OJQJph333Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'CJaJh'h'0JB*OJQJphjh'U-()=Ш $Ifgd'tkd$$If0uM % 624` apyt'ШѨۨ $Ifgd'tkd$$If0uM % 624` apyt'*w $Ifgd'tkdm$$If0uM % 624` apyt'wx@5xxxxsgd' & Fgd Ngd'gd'tkd$$If0uM % 624` apyt' 5jvOP:;O¼¼tbTh'CJOJ QJ ^J aJ#h'B* CJOJ QJ ^J aJph#h'B*CJOJ QJ ^J aJphUUU#h'B*CJOJ QJ ^J aJph3ffh'B* PJph h'PJo(h'6OJPJ]^J hPJ h'PJh'h'0J:B*OJQJph333jh'UEh'0JB*CJOJQJaJeh@fHphq r@LMOP%&iɸʸ([йgd'gd'%inorsuxyz{ABظʦʔʎ{ظظظظظqh'OJ QJ ^J h'6OJPJ]^J hPJ h'PJ#h'B*CJOJ QJ ^J aJphf#h'B*CJOJ QJ ^J aJph3#h'B*CJOJ QJ ^J aJphUUUh'CJOJ QJ ^J aJ#h'B* CJOJ QJ ^J aJph)h'5B* CJOJ QJ \^J aJphf,BMf"PT]^ɸʸָ׸ݸ߸ "(,39:Ӿ||/hh'5B* CJOJQJ\^J aJphf)h5B* CJOJQJ\^J aJphf)hh'B*CJOJQJ^J aJphUUU)hh'B* CJOJQJ^J aJphh'6OJPJ]^Jh'B* PJph hPJh'OJ QJ ^J h'PJ0:@BHJNOW[alrstuz{~~iTBB#hB*CJOJQJ^J aJphUUU)hh'B*CJOJQJ^J aJphf)hh'B*CJOJQJ^J aJph3)hh'B* CJOJQJ^J aJph3)hh'B*CJOJQJ^J aJph/hh'5B* CJOJQJ\^J aJphf)h5B* CJOJQJ\^J aJphf)hh'B*CJOJQJ^J aJphUUU)hh'B* CJOJQJ^J aJphŹƹ͹йal˺̺12Oϻlpsz¼μ:@DJ\]o_`î꓉|r|k h'PJo(h'B* PJphh'h5h'PJh'OJ QJ ^J h'PJ)hh'B* CJOJQJ^J aJph3)hh'B* CJOJQJ^J aJph)hhB*CJOJQJ^J aJphUUU#h'B*CJOJQJ^J aJphUUU)hh'B*CJOJQJ^J aJphUUU*йѹ2OKL˽̽=HRX]oǿKL/GNWbwgd'gd'gd'`Zfs4;}2>ELqwabSTde\]^_ij鷔鷔鷆鷔鷔h'0JB*OJQJph333Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333hh'PJ h'PJo(h'CJ PJaJ h'OJ QJ ^J h'h'6OJPJ]^J h'PJ4,-PivNOt1@[gd'gd'gd' #$012356?@EFz\zz\z>:h'0JC5B*CJOJQJ\aJeh@phr@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333h'FGHIJKLMOP\]^mnstwyz{|ʯʯʯv[[[ʯv4h'0JFB* CJOJQJaJeh@ph r@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JLB*CJOJQJaJeh@ph@pr@ǬǬǑǬǬvvǬvXv:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JLB*CJOJQJaJeh@ph@pr@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@:h'0JC5B*CJOJQJ\aJeh@phr@?@ʯsXʯXʯXʯTFh'0J:B*OJQJph333h'4h'0JLB*CJOJQJaJeh@ph@pr@:h'0JC5B*CJOJQJ\aJeh@phr@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JFB* CJOJQJaJeh@ph r@@ABmnop+fgijOTUVYZ_`abʯy[yy[y:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@h'h'0J:B*OJQJph333Eh'0JB*CJOJQJaJeh@fHphDDDq r@#bdepqrstyz{ʯʔv[[ʔvʔ4h'0JFB* CJOJQJaJeh@ph r@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JLB*CJOJQJaJeh@ph@pr@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@ǬǑǑǑvvXvǑvǑǑǬǬ:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JLB*CJOJQJaJeh@ph@pr@4h'0JDB*CJOJQJaJeh@phfffr@:h'0JC5B*CJOJQJ\aJeh@phr@"#$Ǭvvvvvvvv[@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JB*CJOJQJaJeh@ph333r@4h'0JFB* CJOJQJaJeh@ph r@4h'0JNB*CJOJQJaJeh@ph333r@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JLB*CJOJQJaJeh@ph@pr@$%*+01567:;<=?@[ʯʑv[?;5 h'PJh'6hGzh'B*CJOJQJaJeh@ph@pr@4h'0JLB*CJOJQJaJeh@ph@pr@4h'0JFB* CJOJQJaJeh@ph r@:h'0JB5B* CJOJQJ\aJeh@php r@4h'0JDB*CJOJQJaJeh@phfffr@4h'0JEB*CJOJQJaJeh@ph333r@4h'0JB*CJOJQJaJeh@ph333r@B4]*+IJ & Fgd Ngd' & Fgd Ngd'mnz{ MNO[\]yzŢښڢŒڇyŢŢŢŢh'0JB*OJQJphjh'Ujh'Uh'CJaJEh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333 hh'h'jh'U hMh' h'PJh'6OJPJ]^J/]+IO\wx +9H (ĺİĢĺěěĢěĢİĺĺĺĺĺ|h'6OJPJ]^J#h'B*CJOJ QJ ^J aJphUUU h'PJo(h'CJOJ QJ ^J aJh'B* PJphh'OJ QJ ^J h'PJh'Eh'0JB*CJOJQJaJeh@fHphDDDq r@h'0J:B*OJQJph333- !"9 5F)k9w)=gd'(5FOER"krw)Cǵǡyg#h'B*CJOJQJ^JaJph,jh'B*CJOJQJU^JaJphh'h'6OJPJ]^J'jGh h'6OJPJU]^J#h'B* CJOJQJ^JaJphh'CJOJQJ^JaJh'CJOJ QJ ^J aJh'B*CJOJ^JaJphh'6OJQJ]^JDE;E`ustbcgdgd' -DM gd'gd'gd'CDEBCD9:;E_`atuϿϭϭϿϭϭuϿ`\U\N hM*.h' hhh)hh'B*CJOJQJ^JaJph2jJh'B*CJOJQJU^JaJph2jIh'B*CJOJQJU^JaJphh'#h'B*CJOJQJ^JaJphh'0JCJOJQJ^JaJ,jh'B*CJOJQJU^JaJph2jHh'B*CJOJQJU^JaJphrac۰ۖr`KGCh'h)h1h'B*CJOJQJ^JaJph#h'B*CJOJQJ^JaJphwww'h'0JB*CJOJQJ^JaJphwwwh'0JCJOJQJ^JaJ2jKh'B*CJOJQJU^JaJph,jh'B*CJOJQJU^JaJph'h'0J:B*CJOJQJ^JaJph#h'B*CJOJQJ^JaJph#h'B*CJOJ QJ ^J aJph^_@V}~-7gdgd!gd!gd!gd'gd'gdgd -DM gd']^$?@,-ľijh+ d0JmHnHu h'0Jjh'0JUh jh U hhOhO h!h!h!hhh'h#$gd .:p/ =!"#$% Dd 6  3 =Ab b_0VW氻CDnޠb_0VW氻CPNG  IHDRjsRGB pHYs+rIDATx^`oleff8Mh4imڦ$M )64mɱ;f,uov%YY',ɳUٙggyQTU5C" H !fdD@" H@"  U$''-H$1 H*ꓓH$H$CCvK$r H$dd%dp9$PE@2P}rD@2D`" |>9nD@"0R_TTZ"  C΍Uwc.ܽP}?|RD珳A" Jښ#UQv#Ǎ :o֢WO[0үvwUܜQn9[.?r¬ѶsPeow*Ve= lDc68I3yTo-ڼmr ^S掊QB0p腳FAΊb`Z{Cu aU-O妎7uLeRCz1cZ=+vpU@a1؀W&O>2oX܃X6ƓlD!٦ WL1JHʂUc}r22j]>jR1$#x^?mr2mht] X&S_d-B#=*=3V ^e{lu#‚XvXA &GB3ft.7tC#¬TZy4N>IiсmE?ݒXt$>aܨ0oKMq]#~RjGQFn] ##6?\Ԯ"Ԫn1tDZZtY`r-Fm 52ޫmF$G.;5Ra#M*RCBtZ-^~~>Ni?U/=q@//Պ֞qi6v{Yo-A~6QbQK. 謻cG'Fd[7j U1II~'_9?9`EŅxBƲ*W^4H^nW`Z8+tt=s#%pQ^k3)DYOՔw̺ bl7,*KqkGOe+NN 9jk߿`U{ecCzBjGG\ƍ 18[ߑU;wX݃~tGE~LIwQj/ع3c{@v☹+gz*ۻ!6y}D-Ņw5s.VmѰuy~)#7m Gmw-]>VupݞQS$tpښ/3Ox^QYx#ܠFMLqn]_=Ũ/4EO9'}Ohԙ9ԛKmp^zO7t%c+敹zn4;wmO>87i6o:{KY&Eo ȄqfĔ;PݑgK#}I=_Mށ),៹uku FI3D\`8Ǿ}j:$E+KO8չŹ^O=ES|'Z018# thr*n1=[{q)MS*Z`-e-8awuVne!3$o Ys[Ks (/185y khwf;ƏO>Sc| Kzx5U6vD&,$ƅ۫{rhl. 52)#%BO <)S(>|-,mt/qD~1)Z}:tVe.9oRi!'4,vWzQj%%k::T5ǫ !1b%#O\FՎC#"4.VWܠ?}Qmk6čI8F62,e SN kpJBP]UykD~YT"0į%.x>XxEuMMmKң{UTD%F*NH}WTChsOp>>賚N޸{5r¢#<^m+f*5ޚt̽ܭM%^J@|L[#zG`?&)hmneDѳN6M ~g eQ]m\Mlpva[&ˈԄ^q6ƆԗU95UU+06zDwՐp^j s67u[mm\hKV\lZwnƮ?h}5Љle.3$z9:0q߫lI#xZMr{O>K73كHN!dz;/]h|lP7v[hD\Wƌn+jMI#4>ObsԵvjF8,9ĩ;~'%vdxAq7ZcllT1"]}GٯgͽI : JDⰻFUhIV'048ث_/E;gnI.5dp&wĨiV^qUWM-wvT wEᵳ7zB$ϟ5lX_<ބ՝遨C{?=YvbMT켁c>.SH@_* cMih9Xç3rE )aj~f&H5aSf7Tཌྷ˽] ux ]x6[φdy,w`.7TD`!pN ~RFO[l1G7QW|bZ\,}]t|@u{t@ޮ>|5YgOEhnq.EI˲!3xX8uż]<KO%cGkoY]o0ޜ'y3qyNl߷XwN,Fj;49}Uc>kGk7nUXzzmAILgcAIobbM!Լ)BpljyƚߐԔޏԔIa~ƞ< !Sz,3\P .0\[c;tfn\8}3' t/*fQEIC*n9ۏc6{)k1c*`Qt8 "Qenio攞/} vNjIf+4eD&[_ ٧|FV_$;v!'DӜ`qGi7Ї~ͥXuZ_zX߬F]yWf#)n:-/cLFq1_wFA&GMc_kwc] Ͳ?&+VNã5Eu #GaA=Qo+'?7|F[p鄉Kd DxBb=<ƞ[=:jp;6!,nzó)0fּiGϭ;J+Q[Yy&置~Dab egQYYn=]m--D rWמZ%4>>PT ~(+7&>k͆ԱjEQͩ5.G몚M?'ƲD@" H7T_f+ĺ\!SGYjs|""$;; +[2OȖt9f*.*]WUVmSS:*OsqcGvNWTJHęsӡ;N]\Rn/,M >u!籝M<Oeyj_QC9΂FQ^ ' n9!c%g,{Iݞqκ]K|a{##6>~ g方}|Iwz/t^8["jmr+k5S-u>+q\о1,uknX';0u)5&Fj-0RN+=cMc6?^z6]S?E%%&Ԡq۫d {'PX]09%$φc;Os|'q!b#IP[rMIӦ Dž=Ƒ&>9\h?&,y̒F_T|\Ձ!xoG]MYc{xʴIA*U;:R:Jj},5X{}EƮEm~#,-XVR3mԤޢ!yo#jUsGIJ@eƮE-Ɵ\3uaݺ6')1GU#cObVڼ37SU *UȱN $RnX?vQ8 ֬ߟ^l 83eъQ*/7[v@ ОF`9-L9g,^8`4ZbGMOSqH%2_|BRƎvq (lt ZC'm:ml.8TrÒFŝ_%G ʝ0) jش& pxKAIg NmNk(:[ծ!##O1uV)i2UWI~'MLŅU~qI=s֘_Tˣ+ 'oa_ǻ-{y9 p Xt1kl'RYb!Pu`CFkY#$],eB3=@F#nȫh -C-o H;4)w&0ɶH$D@2x?św(L|!Axeeplklu^ۗhk(---߹qsKب#.]d#pq-Ǜl)qm2֖f?PaƦN~Ǘ2!e!D@" \\- lD@" HPv@" l ~>zqD`# |?BDE@2ee%!d!e$H<#H.[$_^v\" HPv@" l ~>zqD`# |?BDE@2ee%!d!e$H<\U٫G1TEa{h}~c!3bPOp"r}v2YHRolD`(#0 Xv;ϵg _w.CU %2f!eaXe'@{Y9r9VYr ł7<?.w@Ʌ#cU9t|DE?>$X_VuWMe8`Ժ)nE`;`T"vƊ{b<4DlC\{{gޚ {9Vo{mڛPY͋q.֦F{1u :jinTˬxǢXqz=k}ggOXOoݍ쳒AU`|PuB7FFTwdi@"(g3c;5ݪ|Gᨩҿv^Kڎ;ׯYfݺuʚNZ;z6gs0̣ >08˻H*HKVs:[X{]va?_]._!ݻwv]ݵk׎;GOy)esIvv zmꫯ644dee(--fO:?z lB3v{OIK_\\kzހghRd(mYMɐiЪǴG`~卆ª핾b͒R &DwFwJp?**jϞ=>>>w^3///99kGGLJ~'477k1ƌ :i$߿?<<;1c¸fۺu+@wtX)"ԉH3"##a۷ '$$Cjj*BϜAAc20xd$ n%KMG#>C&^LBNLKKCIs媵kfff e:tosCpp>ʵ̙3t R.\"ۛI_i!wVRR2j( ϛ7\wF2|.UyfmQl6WszoɢEKDiޠ nm5,ޭӠ6 @gnvU{yy9ur \ €#Gx"3wYz5 |Ǐ3,X`ԩf͂Y.@\}*\2~Od%Th$EdDmU0poBӧO|!e氰0Fa^(^{-9¶9jcǎp4=܍NY(Cyf/m`v56k)l% Z2 |(I`{W/^= J4(v57g`O:+4l *rS)U5u'^uj)B4'noܸ<%%eŊ#GZΣcZ1jѡ;wd N雃\ T>heij}jAV1x[N)c26w!ltnŤe96ߞ "B|H%9yDF^FebߦMk iܹslMt'LLL _}Wan6G^ EܦNnIqQU+}:n408U/*(kLt2#>ͦ^[/Hb >{l+`{vfh}&8E+U΁[Pנ=ieI-c.(Jt;gs9. O:tMO.uSk1b8y/<.R R/ Nn3bъ3J3-1QsGGQf>oS<@A>ў鱜H08Zzf+hkk _<E5MF?Od=/&0i[w=oCW1!#CcVWUZ ԹsӷUw?zÔ >Hly S^^ZA;Iz.tzpR۝jC9 Mv?LONA,%;p[9/tctJںnС6ۉyy(7@]o@%|gU&YC_^ZiQ3v18_\28s8l;5Z#3b3zuon L^[n~Ds]L7p t ]?weXtbRH|X S!l’+SM75)#MiʤhxS@+33Lkr{}--V[1w8E65|i9:@Ymw {#0̈77<:ܔ 5N1K4yTa4M 0'Ei@ųOWIZfrC_6X"0 dZMKfN帾OmrT&R(@rj}ݎ j" fЛ1@bz5-pw!k'QFO;#ͳy+J(>v1{P|O_Ûq-h(~VfQ#+QJMhZ8~rWYFdWmg J&'H'mlL2*P-vJjO$vv`{5G}eo;ۙQfC?P1zL3<ñ6m[?z05k{IbJ lm3)HD`02NaۿKKS Or=Qwr7` $z<>PH(EpOe*,x; -݀{Jk'ZrGsT 0\9dZܨ6U BٵѼ Y.4*7[ wan"rZ&M* (i4 SBṕ.@ 2הIScO13|T#UoI4Z eDT#z{hGKտqn-tGM&b*WǛlBxS}#&uր'<Ǫ{|ֲD@"0d k(46^O;|uCb fht۩.,'XV#}llw_589XAjgyR1Z_]̟<0]4`u2;Kܘ@ϲnCG"  iN8PM8+\ӥV4 _+D@b8X!z<\PTf,m2 2O 1`!{% 2- Tf=U qWnp,4o}G\ A &\ǢUĵ㬂k w*nA [ӠY4CYN"p!0XdfדNjn FOU)S=c>RbJ enJ?!gn"s4i=B"!]PtmuMl/z,$ Q| ߾ /$зYM AZ~}7X^/ '"^{9it^$cAsR{)H$3!0\%7&s&#}O4>0`,B$,1SaRN}0NotzBww})=DhTBUߡ%2# 0|U<'H.=]>(zI$Kvh_d^ֵ)cJB ZVp $Lo1 QJ J6y3Wሂ_pcb؉ ~%_pL$^Ǡa4*{ժ6#$,dZ$Wog 1dlhq*d[ƙp0gCq6K$CKCNP-bƜucՐU= [53^l2o]lqFrW)DύUh+\eY ԡ6P| U %1>7;FH6!}B-kv#D"l/VsHB;d%!%ep-&נ0!Yͣ\| us$;+ bt j&JdvS(l}tUaditazqRݳhn'#lQf\by0"x}&E[촙S4:7A1wo=Nb@Cm9͗Z! ȆK0ؒ Wb*XҨ@>$D1E|q[}E!NPd|L.Q V zDGu׶!c5"b|M8)k  dS֨HnBTGbw+$"?xZ?!Ҙjn5l.ύF#!ȦK(8(a>-̯qAˌ^ŮN=Xřvg!]%n\GcB55q7xFm1ɍPR.E\<dX05@hZil5D_lFkQLFͰ-}[|E,|Ŗ$dUMu=8-bp_=:Zb_mѠl&z K&=*p/HC(Oڝb"!-1oRBiNCzK$CK:rwE J 2ޠo 6; 6pmN$ε~bdUtMJhirl6h\߸D5U!%fp?tg}RKMcDĻ㘭\:AǝiBBVDKKɲK}̮]br# w'}M/cI{yLG L8.A8$)L)rq>K6?B4SIlncu ZZoJ,vbA=/i1&|QHx>-J$G`38Bk"nv\Ψpz)G3yR;Gcņ>{)[iݣy/jY C%wH!MR[ƚDa0=:uKJB}[5b>ѫx7*(B\!w]"D@"0 .g }I&pϭ)h; $ *|@S ^%ᐚ!4peS% SIm _E:oB1qnq6'DY5BBq15gpq8n?+Q8@Fw9H$E`283<;δ,ӥ V 7KissƛLHA Dlȣ$у5)ɖI$3!0Tʆr׻DŽoc_Yb(bg/ԩ4ukҍ"" n*+U 䰖H.c0qYʑ* ]hD )ip$dB&\8EZZ x+m銶GD@"0ę0Jo^I"p4ꄃ4);IXF9&>Ih7ނ~4ExKs"[v4;bokvMhpÑFmY6Q[~(~&u/^<۶|>zZX{g7[U5]mʇA[3ݰp8Ύ 諙]QefaBÙzS,I9˽6Uh a}T Ne*m;9BxTy3l^;ʌx#b' (r-M}֥fmECDjo 5SsfC{k\[f&Gf}5WgGjPLbCr@CY,;g {nq {g? ) kTxZ(ĭ<<{ںv D&~kU0R9\2ĺ -l\ VD@"p9! rzڲB@2z7儀di˾J$ yH$/-* /$穥"i"-=Y=Kz5_PW]"0 >؟Po9 hjm'WXοL mv&m;ݝl%O7_2t#_9ob3_꟏G睊^v Etit3nՍ8̑ߺmnLh)K[z6ԎljNv?N| mrRF_Vѣjl'[󻿼Hlo}躙fݾt³_晇 u8]v?`%+gn'-@ݎVXtR_aJ Cg*zH:hSZެii_&><,é?:knڨM ԥ*)kNA/D0Eq1j}t'P hHh^̊!@ЯߚVݼxusGvC}B|cBci  MG%FDv  [|D͡iy nK!]N{n.<'[{.AN>tL&0z=KzlvNjZUy&3WŅX-ޱྫLF~soE$:?tӣ ,_e^bdo6s3󣖨Ԝ' 8Gsi~*Y^.5_dgƛBU:xSMGq ~ՒY;2įm_vw77~^'_gĝ\쇘/Ϯso<ի߽cO1kL|SKhy+"tߏ+..'GX25?r{ kONKu/]7 ΍gܿzl%]nok=z碸0Z 1ΕBm߿sC4yN%v[9]ŨB_`&ݔ,L2~}˳6f66CXnwhUP6G_;\O82Dh^ldjWAMh]W45w1/08>js̡R@2PyR'e_vYXye,`?yF'F\9;+fVn]5۷|YNJ&n9Q7/ UCK:b=K\>)zͮn:8eO]LtB<6ؤ&*:21% B3hX{;:ڎNcZ7 o^g?)YMm2Ttu$\ "q_7\ҤSǣk?đY^hjƣbHl  i!ʈ };9ϢX )襦Xn6*)!JpfT,4&\Yb V>uYM紣 t(4C2PxJ=Z~% =quK>vD$Zh ϭ;E za[p?}{kfnY "yݔ_s9-stìd>j[ dV/P}x%::e6&Fr ө9"`oԵ 7J)!~rX󥫶u2xHEai, 'yjyak;qU=Y'71}g,' Ɵ/ w*%&Xj* HA@6&[\ӯVZZa~4ufRu]+|ueyA_^k . ܰCl?VTX=ƶƫf9Q [L*rKk‚|Vą{7=j)n|mʺqNU$MM'Vy|*O~{3*!<"wt|؁2f/jؤ1 T9Lo_i]&w8`~}n#P `T4ը^C-LR n+q[ǙjrY;7fIS]\5҄,U%a>bcbƘ,Dl?rDszrؕSN3z =*hno zHJ?us(18çQ܎"'+=`BzDËsUmv q{ky!Ϳxh<7w|׾w/-.9k|ńw:F0/53>qƦLm8k*0ZL&,x_::ot3> Šeu #mVrs5+ V:U-w?{]9k$޵s%FAVn[mH 6p0ekx~OjPǝMh]s< /'GQJ^Mg:wm&%bj67" i=N{ xvx (7;y$spS6*r ,eğAةW /PVLMo[<Ԓ_^V˼S5},T 8{)#1BlPX@2ud݋MO[0ki\vQuCK#]Wo=m|zGmm.a ۻzmm0AtE5_7<-"GK$/T^ی=7UvhҝUӝmg')6mݝU$~U,qpl`yNw'DO _[<*/][^8|)2iV7=5uZl?^3c?[LF,o '/螥uͿmmEA~^K&= 7{=#'{&E?p4MU>x1џ9zfa՘[o){>JzfgԊ#5)lh oM0B.)(v]-hoq{RIQ %j21J+WYx; w6q@^6K0>0lW6Lb"XY2 rFER^ Zʃl&,oe:sk Ge%08դ*?\hBS̸W|:1]5NZm'uvR 5p8I{k1tR˓,O,<Ɛ&/8CcK{~~@p>^>6 o _ w1tZ4@ U~F#E(ˆ䤈Lwxf}o~o߻WWLſ~a3lgݕc2}{ێnK{Jœ֣MFVƳXG̛˚#U'kbGyЇr+B|G  ˝Y7^3gz,^9.ޝ g1ӡG;&eM^]UaDgsZܝY"'X"JhP^.\JSfęZ:l]?vH?ԃp#Jq}̮@ϥ AwR%9Dy?O3Mv 'ܜ%8k'>BgDaÇ;'&"<]~h=L |az A1>yH4m_ͻxz>^ vw.wحm-#jOGn{~ a-"ҕ7 3~^mcḮbuS? F[~杯? Cqzَ<- P {Y*/>[3UI1}7Y-D C3/oy}a0"] a6KE%pnQ҃V#C{Ÿܻw/y7/("NUs9O4 +?f|mSzے /?YݓU{ud\L?gXՃ._o0DQ$V; ׏6j8S]h6CvթTܪIw}F|_>D}oa OB|IBI 5V6z/{\[2¨T7'/L|W˒?Zd #sͨDXT'e̓ߎE$p(#fE@~yz[-v7ĵ^U0|y77gfԳ\RGB%n=T6Fܴh,d㒣>qX4iQ~y߾}=;-Izqɑ/o84%={z(,孞3'wfSn F2VDDxQMYS- ՂЌ*U=6ńi1?E%uvo͢ɡ(MF#zٸʄ go6[-h/j5_,9<%α e3GZKĚmGf⪆V&us7,k>ڝW ΃yl=޶Ga\;YzڂO3H6SR^XAyLϼ9=X:qa7/LںXmYSpGJ@A-i4߃#Uj^m5n*w]k˛ 5*$a 5N-nR'D^.m2zĵrk}ejmX4VYJqam{_`F9*.EjmPD6! b!AL̯jQ*1JR]Gg3tu6~V]ͬ3Gx#:=eǚiADuF g[%?ϸDM Tb]a~P.K1Y dvPeY&T NjY,^ H qR0WΟ8⚹oZ8nָV4rJ6 /emrlȴQqW1sLw ]LyVu ]ͮ0Ng$̄܍+aK1harT޼NvvQ kC+䕗45P< _ӏe v-nnw hf_VeRwNX׷ ,  +z,¸ ‚Q40/VYq N s3P3)4 ^ a8Z65bnQ[r,80<"3菁 &KR/fg]:3N"(vJ˅!5XI SW$'P&C}D L%7b5 ŀi\l"ʹ"Մw9s x5:T.R1daՏ sAEtJ~)):- ~ h }c7DPǛJ=w` ;WL]EifH}IU2@Pm=\<<4b$s^c%F\Dp!l$X |Nz~x9/1*ca\y\~Ϸz}zƭgma oa _;KZМ(pFSJ|9#2A=|E|r%^R wAY|:PԬ{27}pQnVm"L 6x)f)yx#vȱ Z(*o] ]Z0AL;6sB^]WI%;]tynøH$+ySr9=.\2OHҕ,-8 h%xL~8~}Y(4P6&+Z@^7#>"Pfw)!x,ҁ!Nd8aIJgXpo_0 4uГQ^wm ._[[R,oUW_]}ړbt t{ލ5fn9s }phPw:מ^9ԀM"ᩮo~vU35hrPfXDX21bTM?n2~_&)ue>o"jS8l 'IT Uqǟؿ!g2M<~!??kLN=C^ֽN# FlȻ|p;(^@{`|p;ۗO@zTElޔEGM …Fu t@cK\M~Dtpt?^*(5i330\D 3h-![R-ÓkKQXMO !!6UD.'7~#JFe 92*d垴36ǛgY:Bf9a85OAI` , 4>ClԎAN~'6asx'ǘ&VҒ+(n١*}n @a@IxgwK'#q#}JIB\6glk??=1:zp0@Gt 'B6-8mdm _yWh] /=v;Oޅ;0)19/|ڧsꞺ:EnIkOn,%IvV/^A@Q!5)*?*irQ$K4~GDSbCCa^SbCDD 90`"I /MckG* UFr@=o. טWMne&j~b58|ְUзwL7fǿ d>4gـf68n>H~ D}l[wÝuMmصZPl=\p813͌ ;> :\< L&/8$xN7\9{$8U`1 }$\*9#v $OcD|ȎF,HB؄ƐMJA_%Bmt#t%:T.;Xn=`Latf57fþ;Io@ \惮ۥٜ]w[sIi1狨(p&Fc?sT&4!<Ĺx.De}h8ĒyfN ?S|0!`,(zNўą ſpR9dd4eb9P)tgؖLM` y VJ |HߙQX"y} m*wӵ7zp_@ _ Yl*VSȕ\}JT7꒟/ +,tP 7qRAցzgq9;K? Xx#?߫eud1!yQ3<"XxxLÉ1 yx 5TPEТ4C&T-49x/iFZ>_iԶGnyЎKʆ=͞^ <*׮O?6?>w|"KD\PѰ~on^Y=b$~$̕R<>g\"N;xё jŌ4btP玮oƵ.96trƄW^#h=yxUNiʹ,&yK}QP=Y<>6zΨ~ϏH')O7?~,5. v ô0dW3nxݬ|K~7S#9B]\Ƙ@/=.pX}܁zq~ijuL7Gv)} 7Cuu[̙Ms T4ntE " ^S9n+Mk!jǵ1܊XP8^+e&Ჲ0Ipܶ"7fRuB<-?ޔГAYٶHoT$1%Y3UD0O.3G+nUKgXHNL|SwУj V_iy/I+zO4E~MST m !ٺC2YVO'` \ 8 k!| (b~t?I]D~2 ]"*$V LWp#M~M Uj͊ vnm& Xt;ϥ?Ӌ J|d^0:|{vVcjָD#Սes@ԯ3uϣ{Z|,IM{1!Ƶ~qog'92bF2cl ~}}bz1ߓ,L*8W=:bf=T5PƟ{wm?yll &0l1/=?M0q_v.w=xSs11G}S;iX[0{YL8#Mw(m"d+dg>X1slݫ-pYN4]n,78C ־^ w:Z ].'uIO>+wQ&j_:?u]pAb ~zY)wny`y] Pڲne[ڴCԹ>BSU#Yۼeýk4 (#E,Ɩv}Y6}d^yq uM}'> /_'?h|ev;TQUÈ 8="kg̟BBDmG\b?H*k9q6Ɏ2%F!1hB`tS'ƙ P9R)"3hZ,HU2)YNwl'tE}k$G9׎Hi%fkcN@'yz;F#Y]ޜFKp mGNcXBy-Dށ-m|?zs V̊97c?jvоz*5zTaXw+W~/hh1r Av w6udaQxhBPaO3o/_֖LȠ?|WvS6c[թ)}]FЮѕp묂 !|Y25:1KtI;!`dMVa፭ C}f [ѡU $c 5 I[ݭo56 &&a ?eRd5uz*i[V 42kZP>bF3cй@xb[=J'lIH@w=r2*N^G)A j\Hy Rެ-aϋխ l l^L=M5]n$/1D{;) Q!%҄,l5\Yz W gOFp!sOg! 5 ]']99ߛ(_{CayMǶZ9 _틛~qĔk獶w8v84 x5w\"Kꮝ7k?xއ |mER mRCuAX4 _pQ_//ߺn4$~7Gk_k"Ѯf5RN;ҩYIAQt䔵wo?1IM-,JeDvil&~8Hn;X-s!Z ~kvdgW=tc(HE.kk-e]E`Bc5/+C7ξaO+T> Vi'm"yą 8cvAR5̬"!)Mv!jAM 266ݔbǮHe 1+M^$~8]nvj IeY"m̷ 3bչDxk!n$@C#eJ :FWs OHrR2bU!˘N0|;]m! >>QQ)qbPE9((MۖۻpkÎ3Ɩ9M.WiMVj|#ɂ 'lX{LB8gt>8(%TĂ #pϺ~z./SEC%/a"54D๵;3KLbƧK<#?ؑ {$eBJ|EiΙ deYdwV)c㦶)#cv-& QݖŪMm6aOYc8Y1| FR*qdۡ*9W/om>X/ xe80ّYģ}mx3DF{^9"MgL?P6N+$%>m0UR' ^"æt< W4m(Pa&Al|FhNxԅi1ʄH3Yq{ZRgD܆΄TT,kGX&2@$Z gwiqj sam ^vf[*xdzCC`Bh$&JݯD,ͳY}dnC$,J^?lkxzq!o'&G~f/l(i'gRu;V[:\Z4HSK&F.%fquaDcD(mBOO"wCBXNQ&#q!H%5h{a@Xl<28[jQ{{@R&?Yq9bpӶM,\#ǐ-浄Ր /FR~'eȺCQhgtЭNP ;?HжI*Hw@KN1!!`d"Kz5GWgfgX"#U!B(eR.XgyU/8^Xpځta # `jsW ~.2}pͦhpp;D]N5="Ue.aÍVU-ʝ;b#* Zmll7l)r_&<:B33ܛY.x'Ewvb(so/qGD>({ Dىժ8[݋cÃ}y Rd0^B„I]$)F"D(Ju<tVޒcۏ jL$U#}& I(/Ꮦ/-^'[d 7R*xYhp7ѪZ[^uCusɀ2Rq_v ɠAgk>=87@v6bB@".%/p±i"q^D& V$y;N4tzjYXNΐ ND-rY?z^-,]WtZӻ0C]@h1$&o} 8ޝ ~G{q{CX==.<2b$q&$jyiMjLHRtn:#K&j[#H:ky}rSwҴ}(݌CM@4]t՜g CüL(&EÃL[j\Cr!zF0J5- m/7N~ə?YX-5]0=Am"͒TMی2^f$6xhE+ZlQT|v&C|WG8 #pc a16 in}wqF0Bo®҄`BIDlj-t)^lؼ]l TCFRV?t#M$de8 tOuº?돻M 1F.Ðo{TaeKaF6V`d C%n$) pW)|d狢?u.\RPVی#EhrHCMcԐ5pjڈlܛ]>>8~ko` XN- 3G'=r\R>$#-8bլtB|fZ\ؤ)QDi'_JLiZ\$ɛ[ZJNc-vz7g\Y݁h0W6yY(C9lx{H>f܇O7o Qޢ{) A`e4cca;B=2XaCkVgsq! H ׍2  S3NR uX#_C=6*<QF\GD5)]3eFX_}2`Fϐ"\S ։^V8gЄڤU|f*!m%jA:;N(t!ytF~B!$k5CJaZUxFg~ }2 (pxڰ8}Ff- +GDWhTXgd,vw Con"Qyl8ud,nvkvfT9g>W:f&%z!WoTwv;ZCjI{WN _!/X8#6;Uqϔojk! 0|qSaO+I7[HC|xԟPɋxz:,RRTsI7.;sL\nVqZTuFί8Xv䞥lQ\ZKziioz߼xu3 lH[E8/UA`fM-Nċ+Ð7@oG\bt)xWS0! yW5|aQ F7ɭ98V B~8Չ!6AʑFqsj=38ʒbk,EC0׏6΋[sfqQs08 :%=\nX=3O y¡DH*D̼@$qrZ]pSMt>$!c >XYdg{L S tM3h &om홴)O8Olpf =׻lq;.{Mll(qYr+4އ/?i,Ȓ 髟 ; l>^#]OI"1󖹓b9T"`&GYYMS@1K*[Տr؇;5T C@w JkV6ե$z{ҽoQVH޽xѴT6 w,X5#|WJ?xsWNAAl[*B=Q.62]2#F,4g7T5~)dM!W֓{]t̑Hmv%>Bwi0ao QDNFm9PLs=Ys82P~e|Ld$F( d/4BaCeW{FvJZ s$PAA,t&2B4JprHup|~zM2ea+~|6DRBס( P}Ե8] J­eOlt B Bd"*#]¹p`CnHˬbY<_dsܚt}Ņ=m"Ҵ^ت{P?CN؞=U;>0VX**s=mlȂs@C}s"]¤iAqrOVٓ/l$火 + Ds`XOVܱ|5 DdL]9mM"ńK^+hUpOn CEM8Ɂ5;}7Jk~} Bx X2ۜ"%:vb1Ć ů^Hp6A@=NÅ`UmLr-;Tvx`3Q"_ nslpPfX\WAV!w LﰢYLȼB:P(]Wf3z>^xU^48A~6a'K}3W]_V;gB"j"r.;O33Ց{))Ңq KQ즶q/p6a $!QL>NhEFD{[9YQe1ZrK?\]YXل/\;feh9ر#&eb#" +Gb!bYIڍ/b1h56D-G {g[gAC$}sSH`! {8@4{J0CLKo]e1G%+䟂!I9p r1)'*o6Bzbqe c Tu2[-a$!94&}ӒV7q4cÍW44Ftw)9=Td4d6cDuNFGe04_2`x gn `H&|gVȀ%!uWvցXCbCfǛ;{sgQE=YAp OT7+H HQ-&A8\Y[7V^7,[Iܚ5 g`sRj wxNmG mkI\N& g=zLkw;VO615?M'dje)\Ŷ/ۏ)׷GB?[hWNYm m`jzdg*nR]Hp[Yn|y?>.,o,Q k;ؙ݅-1 [ Ց!@2h?vq<̍49O ;әE"-ܸvMcb^UdULVQ ܌UJ9 IKF/Ei^0~3 ]Y.- #bCVbۺ7g݌H y͞JafϼZ>.">߇ Kks#6aIm/#۟]xI,@ŕMA'~'4c .T_Vd{0Vko|z8o%!@V3Q`ɐT)5 le`Xj|Y/KqY!Ѵ CiX6hXh~1 k \7Nİcdu _7a:3 Ii-JFFNJajqeZf߬ŅD n( F[ HAZ1Z6ۅg!Z]ɻB|%ŮUT@[\ *s3¡>8ѿHmńo,Fqh |xF0a4hq!gՅIF,kq@[-v?PU#8j*B#*\FhO5͕ lFCΣKot>@V}xp^ do};wL5`0şnDHI}U}k=!Py@ k&=;5KT4H.͙,\ Vt}\`~2"b^Hٚ;V; uDBbW#옄*%r)NZpvw#:펝[B|QaNbE/xn> /&|? <^$k[]z7SZw}3'xD9慑2(^Pp}(w$2)<bD3A[pJ¶(#dU+<܆ZQ״lzgWM)kh%m/F*ZGa_LK\D{|wHA5g,s B#Ȝ.Dv}|gfVЏ9QgOw< y M$p eS%{.ϽD֠cvadjnt)>61߁jYDLvL@L=Ndg` % r;^pԏ<|-!]&<{>pO˫:!Ooi|$2Ue;w0J0`̎6uV͓Ÿb9ݝ !k ܓGi"uI'Ȗ'6>)GUXsdr^TUHp⒮sizk;?TdLJ2[x 37Cp}\}!{ܽ`>_ga]=ejuW$WO3~taK9SseN3M fyD@"p ~@UJ$A@2,o"H./JD@"0 HM$E@@2EUV)HD@" H*%"qۂ!Y~\ u#pM ] +@z~)%8Pbóaa}mt ?4u3 N\N$'pcv';cdqbgUesjN ds VXH8>I? ]Ʃz{8]#4*I٣C JPxSg^$;BrMٺ`Au]=ίga?\579)LڠK,-x-U5>Ub5i+g{yH%%Ͽ{ B [JIM!Rg=EYZzclDUScc"Dns8[fYCcӰzkHnHZ41 Rn55Uw<['yRF,J``P@H#{Vhomhhh@u0lQC DIGG[}uEcC65zX.IV񠠐Hگ@X%5UNu-,vx8w5ה575C$e T}z~Nֿzq'NJڿ7J@%{!DxMKy+/7Z6myX[Qn/ZS Zo4kNbPh\Ɖ4߶d=WNS~3}ubԠkLwk˃٩KXGuNu%*Dyb䒋YgSO@|sDO qw ֯>7_Pz>Fϵ67ڞ5lP.HFfۇ/Vh)>Z&փf/D@" hs\[ ϐ2A@ӜxJ%D@"0 >D@"p" }.I@08YM﹡)}?j۩0_ |x" |x>KثtAOmvFϫEpZ;J<&FCs[CK{k|jELM͵MumMmtO߯&mimٯk My0Bxoބh]ј u)#clfѢ6ޟSe9 6V#7`^ņ9Ez}ٴyC}ޝUb5 ޸h\b#j|W?=\Tex(\5cq n;p^VJ&]ބ<& >4lu }kW/J]}7|7f5;nvd6 G1ux&b2rÕYF練Ƿgmϼm2b0X(-8T_d=[=fnh~xRa6I]p2B=R64tȜ3|v?x=y~V=HDR8s &v\|/\3?}7zH'ïNGM|փ:h rh$Ao΁/`r H(p];wf<ǩ<7G~5& G)e5 ZUэBbuvWlx / 0{HwlŬ1F}/^?_~O}~Ъ9c㩳kN8A!ސ{lX&gÃ|mp~Nq[o@MC˷]?{徧_S?sKj|mA>VjC4GL4`d|hD/9"VL}zϾ`JO9cF%۬&%V: 9& `McGv0=c|q/Dp;ܜUR`FP5Fζ?XRR-ª]%gCW$Dܵb^pڦ#P >U߼uK'LM)- ~|8{w.JO.A97 Y5/qqG8?kJj.2{Y-NJw-9&6g޷z#=gd#2sIQAO޿u߱RvI#@nyFw\?e{־}Y%drZ3_jҞx` x>V12!gfzgXVQuNqͯe~vVOs8$Bߺm/ڙ'%#ȭ}\#v:<ж3F*僓2HLd۷_뮘1Mc&EyH;2P+G%W˛7d]3wWnOܵ.i-mvVE ( `PlBF~Ooڜt/^qŬrI '&;ъpGX#6}Y> bˇ;6mմjlx?{+O~fFݵrʈ fޱp8.a6n؂:kL|Rt0żIhmeSSn^4vªsFs}3 сzyi㰏 e- &*`oy Bq_qtݏfI>q^z{Q$˦ַC/~;)2Kq/hr]_chQX|W (F 涎6;zbwH4ŕ 5 mh7o| Qhh "ckE}sFkW=~.B|YYAH+9%5ol:yYq#;h1QV7a?!-{wLJ W[=[$~Csޅ8A-Qu?xnWW~][ ZZ udwF,Е LU?]tGʷt80"wBjBt(҈s #yzkiϗg/ḿi5V^biɷ,?:)-Fs4ܼxM&= IhwМPEmM߷gþW 9vCaZfP{XJwgM~w-FrjzWOQ.jDfu?[=5!%? x@?§ b˷{FƅHKMA8aԳk-p.;А|'q$3yϯx>^5lye_e5MsJ2=gAln=2)#+kOAoj勛q wo}8؎V!;!D,&`?|fF'X+q7!QVjDr{[WP^'ugK hfgA^d66;~Қ}} _*G I3軘Ãƣ ÜtJ@_r+kjmYW=]JOMٟ[;*œOKv ה Â7udCv‰1aiuP!Q˧|/7bҷ;9hṞq+v,kP%SMHZ2rݖ#]B-5I '1tSe]bnWJ܎<0(e|7Li4pDt~ k[K*%SS Ûۭ& =HPȷ2~&UkPp_h)/#7@K-^VӅ[p0$CDcP[kYNPf7|I 罬6bT -&r7 Cah}A.Jq_kt-dR8CMY; ;v$pPZ [Osc1ThZVq!6I.KEm|D>r[O=>%v \ Sa6 \rGVxlVҷ|t .GEGD&2>5.xiRKtdbd\v]9hQSZw ^2dH-U=Z:ʋ&z.(F+ż{#pyBa!x.fuq"rNpЄ*0at@Ue. 5.Ar] ᎟֎|yH$D_k&' <7~陷ݑV&PH$,U[\5_a4}s豜ENᡌ*ehUwjJrJR<逺Cepr?=LQLEDRV}4H3šI]"  - %-ȁcp m{D!'-t }_j$0D`0f%D@"p={ygD@"p~H??D! a/,H營Z" \:$_:%! WK$KdKD@" 8??$!;*IENDB`DyK yK Hhttp://en.wikipedia.org/wiki/Yahoo!DyK yK Fhttp://spark.apache.org/streaming/DyK yK Vhttp://en.wikipedia.org/wiki/Apache_MahoutDyK yK Vhttp://en.wikipedia.org/wiki/Vowpal_WabbitDyK  yK Thttp://en.wikipedia.org/wiki/Apache_Spark cite_note-16DyK yK Vhttp://spark.apache.org/documentation.htmlDyK yK jhttp://spark.apache.org/docs/latest/quick-start.htmlDyK yK Lhttp://spark-summit.org/2014/training-DyK yK https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examplesDyK yK dhttps://github.com/databricks/spark-knowledgebaseDyK yK http://www.ibm.com/developerworks/linux/library/l-sparkdataanalysis/DyK yK https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf DyK yK http://blog.cloudera.com/blog/2014/03/apache-spark-a-delight-for-developers/DyK  yK bhttp://shop.oreilly.com/product/0636920035091.do tab_04_2DyK  yK bhttp://shop.oreilly.com/product/0636920028512.do tab_04_2DyK  yK bhttp://shop.oreilly.com/product/0636920035091.do tab_04_2DyK yK http://spark-summit.org/2014/talk/scalable-distributed-decision-trees-in-spark-mllib#DyK yK http://www.meetup.com/__ms91638402/spark-users/events/223361529/comments/454529887/t/uc1_rd/?read=1&_af=event&_af_eid=223361529&itemTypeToken=COMMENT&expires=1442021888459&sig=9816131d0d2791ee41e1d3f06f30cb5d34b4eedeDyK yK https://www.edx.org/course/introduction-apache-spark-uc-berkeleyx-cs105xDyK yK lhttp://typesafe.com/activator/template/spark-workshopDyK  yK Rhttps://typesafe.com/activator/templates filter:spark1DyK yK http://typesafe.com/blog/apache-spark-and-the-typesafe-reactive-platform-a-match-made-in-heavenDyK yK https://cwiki.apache.org/confluence/display/SPARK/Contributing+to+SparkDd !0  # Ab)*;%~}#h6n*;%~}#h6PNG  IHDR@hksRGB pHYs+IDATx^]`?׸+ܽ5+-߿J[*KE[B\ݹl.K ayyevof7sf3X`9r޵F0K/,X8X`9r `䴱D`9r ``9rˁk,]rNe]MM.pSr}=e/^٨ȄghЛm8yyZ;~0V͍zh2Cn<$۶T+qǏh'ܙ:#j;ٖ,X\=}ݎ>(sU*+ klcr*)sMvSzFDI':E~Z=ݻCu~#rEA}CjF{\Tud5v.]TexB/uM7;}U!GJBG 7]/lS$u3צ;EƇzp~5s![}b$#,Y}ۑja@\W=KQan~%zq!-#.!qj^}DW>. 0\+;f]@(_)X=\/ "`ej\i)FH_S~ٲ;:_&/R Y[8gۆroPZ{R _nصq m=i£E?/ukfquFO1ڴ=/FT8!&N;r1-gJ}dKy"erˁ8Й kl\?~7Us97/|RԳ7iP.۟{i6IG\uÙF2󸳟~;۝k祝͜;wԲ xp7 )s|\$IY7 |?tkscɆ?6oυ#*!Z.mmQqYEEq~~^X z[-rİRa9r@@g7oz7_ͷ=cdrgⰈABurľ}\uE%E;dWkn}b0g}sqֈ=)&./=840(6%qX\x@Qi ĨaUqDB6]f͌˹4PPԨ{kT9p`pH̰xP g49avm~.b@P9/CyvFMqQA K]yꬬK'o?zRvIy%5Elgr5Yl?r4#B,_+' ?jWUy,S<+34_\˪y .5i٥J񡍙iyYBHyPn1DEq e)CǏOvy@kR>xX,?qBغ.[wnh*A 읚ⳫVyxhLk6Q}Lرz|@xdi4F>ϡbO)ӦLLìsM" 8FP(WOUI[<4G^qKM!H<>cфN(?L'usq=_"Yo0XdP|bQ$ds!;[G j6< 7E@Fo1Q\#Cd2tGk v Ol4 qyL^73"b.9=F]Ƴ,z&:0Nն p ե>rl90WlRjZ)dAI<|b#JF:u[+=ya ?oNSTjjZmtj#LzVgŵG_plw~hH@A  5 ר.kܣ;ݺ ^}C9'$:v w)*-Z \-*w,3]'izVscWv:)د@ CJ֛ZFg"trBo2i4gLJbV65阥 Z+p gߗz|W:(_GzɠG?yz`_*z^!,K/v sNiprFoׇV2t&, n='ɭk~*4sgPo㙝R.?' qJٽϧZ/7Tfl(UHn=sT`9p=r3'"2Odێ{ 1*1ؤV#-E]rIe4414TZ/Ɲuv,z4: dD7eY#}SD_>W[l ߗ h{wf<9;[ϛ;R;(}t/¤j`rˁ8` WyFn\ydx:]2I-Ǘ};a@8+q;,z zfL<lO>[77L7OW! &=UʺhA ==z&XX`9rppz\`9r@8X6e9rˁz\`9r@8X6e9rˁz\`9r@8X6e9rˁz\`9r@8X6e9rˁÁ+2+] %Bsf)a9rˁWN+O]5^br=W0>/扅\ԀtʅmJ+N#V+蔧Ĩ=xڪE-fZl"E(;Ze}UUM*Bpx+*}` ]ƥGaͅT8nhfXP>fZCTMV꘨.ZihkAei.hTuhw7hեe[sv(:t|xqG/:|A6/HhV]:cӾǪ5>n4Yʊ?_ͣ_SQq䷴U .IKFS7\(+PN\ Wj*M?W?@ ˩kmr倳9нAC]fNjMBXXBOm<@|˝ zeLzIV^ouxM # ڌ& mtW͏BH$b6iZ]RkB.O,hktEg-Lob4sJ B~1N׃لW2^o5[m?:3m[nEŨF>E׻R*wm=LO&SO:m/EԄ7]t_'T1|oOptտZ m2r϶Y?KZᤦb:ژ jtu[Zq*egS")s췏8]7~;fL%ܸ'g>՗d+TbD?߹ɼ7v/.:VoO3?g^U 5xٳoɥɥ&K~͹O;G~:]hA]QI}B``٨S=:Z7Uzx<7{w~G xM_W9i}\$*DC_濺xk̞oY;n2 t>{_>M ѤV|3ro̪}O8e~ϼu;>{ϧMͪMIA[\˲e/?#t[t?xkѺ =_|;p͛??9o5U|Mf+ 9mgf0[7wϾ c߿샇\%MU.^˖}w ǔ7+ .ټy -YA-هU542iZU7bxh` !M_s?ң_xvNI}9x}_WWh:29]nR&/0i8"UzO?&NHq\֯o)-# 1[w%@@wGnK"_<${Bk#M&E Lp 7pd.$,:,wxO\nQWsϽ4ެr<2$7!SxR:cLl0CF5_y3=N FQ|&zx u*Xzy{U tKim(.dzFbD"tFI HQWX+IY_{姍RJQC1< 0|FH]<"VER/O7t`632ĸE.{{xIRz<ܛ?rRIa's=ALL{Jd*nyCCM~e@Jmh,.n(.n֠.cV*5;yr`Ԟ^ℎpILC嚴 .Scԟ=ny}M}%W(6 mr@O@w+$NWCCVT .|ր 50X"K]ZFZhh(?| /C{ny[n1 2sKkiptJ]}E55 g쏿G~y}9#♕ Z:1j `4u*L,ag҈3#jq YA juT*Ken>3wҤ z<"Mnk'1n}齅ξ5iw2eV Ot6[`2'ePNZIayFt+Fu˭zo_geqΧJ|Ք p҇L1ǃ170kɃL|o_XwUuhH^[B-SCFeIZyg?Xgr8* b9rqLWiߌjOXU.e^C}ݚMV?rTϡ6ʜskptם̯#V("phTի ZVᴯW\aʵM*e,Hk=U>6Ƌ׿o -6:]2{΃چ?,]fv3.F0^@W9G_}+}e;[EDAc\.a՚CjɸAI }'(Aqa?Jݻ}ͧfIY$pkr {ڷҔV 5g<}hѢ/,+* Nt+VgL֬ܚ?OnlDZ>X .7zhy ^ ý6p>#Ҷmˮ8gvRLX$}}jQĀ!`6BR-D5P7W(B.9~&G4vԉC"%j=]|kNg(

W;>!5(i$oݚC)nOçOLP /IJ:a-0-Zn~imV^}AA}8/O>08*@(qxp_؀H#T!k2G5 ًˁ^Ɓ+B۸J52 /7Wm!k6JG{wjvh/>X'(/W+kڼ$j 2݂ b9rqTWO< ?~.^!;D/J%rZG]Ձtp=(!,xROA/P# `ѫg.a*N@ ,XX9K,X8,9l,X`9s0253'Oђˈ夔u<+WPcsk~}c3iN,#_ۗ,}庳{u[Kt>t8qZڜ gw:SVAI?Z%Me8grɁ%:+v5[CUgmZWb -f]SQAƾZ!XW_]sSMiV[vX %u>Sް~5MюMUPI#͊7W2g{XLl":9sdT$D#$:kج 3"V'oO'_ZF ̭]FvsUtQ^BRԹ|=V)v(6-E MHnD!n~9_~u xG"\Ej7f;#w4Ŷd9rpLUUZ}z\唪M}â]+mްc I4NƬ"?|+s~-&`ՔeݿtzJٓ{w_j5RG6mذqor#%EuUY9wmظTYTgCUfзyk1IikTv=/`TFEhP]u`{O[T̳\߫Zx^AB<|38SIhFMcufmAip~L lTռƚ؁oXS *{9YR[sj熭[OgZS!;Iz3eޮm|gy.M/Q4ќԥV8|Ee[7l:|2x5/;¢.(QSj3 }=[°$ԝ:+Y?$T](hGuk*HT_&-;;N@we8>=V_Rg\$O^p[b}~~QUN?_lOXd}ƒ-H לݝvgdc]?vzQ_~78HȓMGG Bu] 2s8и`Qőxg"ŽӇ#qG sŅ EcfXQcɏk7'L&ڽv :d0UYt(KAKc֩]˖,XA(h(=* Ϟݶiz>?Z2/j]b}9K~zOiyaUIb ;p5y gIҕoέ/)\sAz6T넃G$\w7UW8?nTW͏ԧOBSN ;{u>졭Ţq!;4ENy?MGRFS/̈c&*.D!Ŭ,ܻpi}\Iܵ Rv~`>A^+{q~SϿ?th$ LHMg/,XP`7qp;w ɬߖ|JfQr253U}gKV%/p[;ک8|5n;R6t;_-ZÛ>x1|?Xl:˟FE|N_q.h٣o-ZW[Yof,A!<џ> XkE>fG>Xs'-|VrF߼2r/e.-zqxL7f#0{TwQM9#j|eQ8yfNCۿwK?y(K5/ݿ=s=<[g?#/,,sg!\L?~05f/ ,Me~frō~W+7p}HRg 'ovr50T829&/C F%>D3*_ݸxI(Lːvj9jBgr<$2'L;c;GAHGS$\UO yUJ5qƃ/ޙoq -PICkRl6.j)BңV 3^]O+Κ/#[X4,jEQsøpX(5AH)JQř3g{: 9_;7ݵ`eѵ;#gyxMQvBЄ!(L D<-škPJZf<2!>ֵ&Px$5M:W1K=Y`M8[ϝ+ ?ӟÕ4 jk4'Sϸs8 VkSTA ptsĹSNLI0H],h.Ece#- cjU(YH.ItmUWW\ywWPm(L=Ati>7)A[zfsAd?͛6-W 3l<SC `ҲRBZU;㍿vnZ]knP`(ݽ3rNyuVC*̺J^:HbՊ+S4Vn2>iZ& Fo4'58z6mڴaO"1*ʅ^~.,UD]yIh;,c{HD1I(0n%pߨ(Or1#jSjjҋ5U8.y'_n$*|]Z48aСCMSs"e i[q{Y2>dYq=}k/X7rZ=oQGﺍ|p( s|ޥ艣id?4%dVˁ`k紈w_ZQqicoy~rD*i'ޗkBFXN$"/. À_ӥO=/'B k LG{e6.:`hZ2Qy=O@b#W, wܹyId8\Gv(.>Źڿxtd6P۳8bԬ[XK<{^cvkm{ů.܇_eCMġLmO V7sCʦ/ 9*K_]w@Ղ_Mw3O|"TQbl) `ܹw=w >'|~s|9-0I kL3szAS{y $;{wͽ1M)=<Ď[&4Sŏ#} =ݕ QY cI=?U&8ښssC%RiҹZmCPg`W A ʪ7h9UIXSڤl4\*aSu8g{C&rxI20m!L@5gdV%!cZM[xeޭߘA-JҌ )}G vk*M9ZKJf 2.ѓ.q=l+|Āxwܥ:vZ;t7NCƙM7Q '_U eq_7:MA_]~TrF42"~`R!?_KScezf;rh9̉+ gsLe:i܈q5 x[O_ONӻ1Ug4 <߈@hkv~޹۪^9yy>:|TW&2IkJNLG쐢'$.Xtk0yu*Nx]҉^`,e,Xt bznX^sPfcΌߟ9 =Qdeꪳ.:^deɬ&wf/\Zn_?Ȇ6G\݃3m\Y[QRSi#u. 5$, -=WR`5^:+?xAi]3Q|WmAɋm^se-X`9$ko.b^]zժ5;=HܼC/Ɯsq;/:/M*l/WL,D#uɖ߿ҳO~Jݴen2*Eϊ>y"]([ޓ?K> "/{%9 CgxM͞S,]Ⱥuʭ׼fV<]G]_X)Y`9́_mXh>umP si>˯~^ǥ 7[|ʵe|R?ĿzoIJޣɒ43Tś$Ɵ=lϢoߜ?o7.??Xpk_hQ ?%r8 "'̏͟Ԋdsy? 8{F|gދo<31@̩ϻјr;G,N AԨзJQ,^WHyi޼Wyh91gX.Ey8^%+QhHh7 sMK)LKϧE`M|͡y?͛ڄQTK콯!>̼֜v1v;J]*oV5]<_Re[2+;LɈ?QJ΍|87(5g.߷`{/A3D9eE6XQ7nD? NUۤ* ِ5{EZq豏,|f[2zH1 X2&5ϑ Kߐ0֛&M5aqS=`־erˁgs!tTNK%14\_ᷙSߚחiӺ'(|ZNnǃKnpl&\mA-Z=ΐ}oXpS Vy0[ߔs'-ZvMcD3Ŋvj2 :h՘q~OD~6(` "EA33(f[4Ԟ>=@Vh,Wv<;n,X\`@|,X\`zyv,X95>,,X^9:Y`9psk|YY`9pruq`9r ``9rz `̳f9r5 dg9rיgrˁk,]Ȓrˁ,]3ώ8X'%+X^g7,qvO K>,Wv<;n,X\`@|,X\`zyv,X95>,,X^9:Y`9psk|YY`9pruq`9r ``9rzl6_?c`qL6C\.m 7OmFS X6h٦7Y76 r@fK3'0A̚~|c0/+crF;&s4q8ˬ=a]fX'L_fcYXm왦kqa8|A~lyѦk4QO{rl` .\hll0,!C3PQQq9^Ϭ3I"5ŅTNhkabiv1%%;;[("6AI͙3g*++xLX+Ju1ZLd@!!!L3huZ~P$9ݝfAAŋA5#GZOMI EY&aG`Ft_`,..C`h4Ǐa?,,iP( Q#GrfX<魖3b3/g 1 bt:Yf4/::yb ר5V1III0+*+N:m}RՕi4dj~q z|~  ,S뫽Fa"]YF߶jieZ26рڦ =4?r أ_D5?)bMr1Q/-sYiN31iiFlR~0[ڴ-gіaRl  dpmѳGbBwe=M3Ce L տ4p̈ffОD[ %3YM:ª&LJx+()赢˱-1ʶJ Xm@?,3LS'w$nZi4L# z׉!!UɊ6zZy# N#:zFN#4b#gups@@IIɮ]eر=KI0Aʟ!ߒȎ9 a%2p& ܢmF ,A 0 )RQQt$D(AcF1cPn- yq*3*'Ɍdaĉ01 ?%ɨ]A?\Y9T2ÆC~$UB%x"C32/g aB|bg'!mՈD#91y"СC ";}JˁʁR$R=z4{h,N"΂`lg2|De7Jx(!grHB}ЅDgr9drQ[G1vy4Co-rJD uWx"'X>A:diIGtLWq;ڸ;M3d&/EW6 7zzx&pfx((b\mm-@ʰˁeZ R UXU4bԃ0DiϾM@!mշOf3iFj߬%`K6*~|%k"-JH?Dn 鷱 $2Zmi!]H&c7mU9@mR*t{}mg8 Ar]2 tVKkc!9s=8 6Yڟq{= ` k|Ha۷/D걳[ 9rx95 d1Xx#FKa{-R#)'4z'9"0S? ! }\t|-]. 4%'PYPN*,ގ3@O@wl2=mNb;ej=b~y!ndmv0[te@E% tOퟎVgTkZ=UTğf&[xA?8ױn'mv q5R1YӍFX@10{yms$l/7e%(S FmJ7ҁҔb*D"pdB/\Q.Ϥj+%x J>P6ZI}Y*x|\"vPتhr$ 3&O̚={cO=nAK; C켽kwP3tO廋4 /ߛg>يZG6 ϶A`hEjI8oYK{rTֽiz{U3K1jItԯ9ޘ8[Ԙ ,ۥQc B~xXWP!6u;O20vS8PRZw^ā5ҬNC. R:#gKyJrD b3/ou]/p x C{8aFOo(te *cA2kAlwɴf&zb9%[h.QD_ J%MR1?]$!V]X\ IAm(R(4q2`!)җ 9%{2`w"J;,55ʅ8dHr!^i%?N'5=_/"@tzLdi +>Rܤ1J <ƌB({ C>fXz /]}= LU=xo/7<ּ~~97$ Z`2+5FA<"G6u[]̯6a?}&YGn'cH73FZ-֯8Ml=0X޽ `]A,:Wt,쒈_F">8_r*:T6iL?UrKvq9T 'WVi 28U&f ja6t|N_6h2;_htv֮l{,z8z'9t,H'9*զ=EPɉbBIEd*b!OTs9%ŕʁQރ|Oɲ/Dp⪦L<ʭT*e sNZ֚tZ|XLeXS۠9U-?@"N%$I|딆K4ˁXSL#'eV@FF]_Ңiu zmz~q 31ot>T"R5hvEs ebA0]Y~p t zb^ODߚCEEek}S|,&Fmu:?O*mB̌nY)| tҡ=8wwXYڮ2wQah۞mEjo-(m,+#6ĵoKpP1YEpF j*Jшt3tQivXڬq@ܢ UY6`r:?9*f0NuRaJivƥ\{v xx& |P2RIzYd/!(deG9Z:a7r5PxXڮrwR6$%%aAtL{k5y\t8C'D/dk"v kWL/l" ut1<Wko:^˶v( 026ӝEjťU-Lkv1q򰳩iIH8{F2P.M硎I@[ F[{6L~dTôڪ:McGl{ە 6'‏yy#" XJML(.*`Q' +d7$ʂ|W;[b̈ ˲=,<{@_:Zg?$KpРUZg̫!Ēsj76) f<毼.uM%s%B3bh=: L*='H]V^ۤRT3QR ־UV:[YX_Y luA כM`_ פ(yEā΂Gq[:J,&8#._[m9;mQrʼnr0{TF; Z]#]:-gQ:=TaR4DU&J+PPSYR/u - z.L[)6<0:»vr_;S]QXB6eZf `5&Ier&[蠷E&FX4lVSҎ)l%z=j ^QC*)Lv 7|swtw[a * u{g|WtD0dN/]u kc@0v)\0Mڔ:wO Ye8)l?WʴxGDD nwt5|XDu$Ř(%ZPWrwLOk,QTj+ nɭV)tR1O&XCuM9/k鿶|QPg|ő.Zg`FoTM`DOx.[gqD1 bqddd7w#ٜ:9W3 Ŋj vD>Lj4Zㆣd4a1)ݮ,ZJ֥*ĴNkrpKyhZ/#9 p Ƚ]8XR!)+TjaS%j&liڢBdc s8xy$ʚ*K zWa+N 5K<5_pqbQC$b3P!}:jq Jᔠ:UJDlݝ"ڵkRI3MۥU;)j.i ײF=0t ?{)J*A/r+v02DZ]dnUYTjV=D,F9mQI EőԺg+ kRFɦ g1\Y,Ğiny͕UG:EAo\@Jlѥ=K$bU"sS۫\-rH˫O0 B_It鮲v|b FsYWg/_?BʋŅE/<:j E?sر}%^swz!BWVZ燜RiI2qdffbUc1�"4B٥b5NN`7]ܥWsp]Z$-BUV pkw9'l4ďGHQE$.+T}SNqj(F=xR5F8pJE.D*qqqM[h13 F8ǠofM/Kʖbhi@ddPY,˯L*D ѠKɬh?NRLRq:Vk[pC"zV 4aNɥD;]L  rZ@0CAgZdӑax˟_Te` 2.pZy}=:w`*:55V{7'l;*NR|_~ּEv+__#_拥TC߈bljx V[| Z6DQG_7gkͳgkl}i#R .y8:UၾE. Z( vXa8O.77ח>X<|Ɓ )z~_KϽ⿇Jpeo9XYT/A=3g,Rؤ(WTnɓ'ѫ p!#D.ħ:tƍÎ=d*YSfmZc[7=k l ҩx~@(k>QrՕd`F~8CEeM}}\76q]=%)PM9o/ O>sO?YX'Xwhd˄@gL/ˁ,uhJ󾋋q.gXG32WNrjj4KVl:;{ԎEtG/Jet/GHTyyyJJʶ7mX\\7cG)HTx/88B!ӦM9Jո#M~ҥܜ\E] +!RDZ9^y~v [Na>"}<ў믿7aOqFuq5r?o09Mե;{u%l:WbWR<2@JaCA2<@eGaFW|Ʉ>;TX*Jwuur1opߓqdC_ I:F=yPK/$,i ` sf􅣆sS"ism>લbE(pB]ޡ.y8qٳ^"!SB\Tk9EM88~!CΟ2!O>޷`ѷ՗o;rp밇ZEmjJ*=?g `# X [ew{k*)/IgfћFƻ\YS}bb1 !襆jD^8hY9y^j=ieyN:pwL4 X~lPn02U'11o߾ m̚0tx (  ޒ BD@acc#E/vǣyϞ=֭]QQ'N[Ζyӓ\*/:խIw.WC㼧 &7ol7/jo䓅>nC=@[ƺ6nc RIkA4\7NqܹA~u'=V8XZGb J4#2}AQr7*{uK.Dx*1\ b3Ht\F"(Xߤuw\"7-Lݽ{޽{!455:`   0QX`*ǩQQѨ\gϞݷMU@`ٳ1h\V^VXxsh yxzѾ8m JBKKO/,(?!pǽ or)SxիWDUW_#<fZYj`LQT).á`Fފ:-Qҩ:;;p`.N(O?9a?$ȟy`kkG1'#R/gаPV, F6l[F槫KzA?ŁBlP Uez ьvj1֙͐c%7f7S)u)Hp܀ ~,YE@ [  WϠփE'8$Ͽ3YA28Ci'BDC!"i>(Jo* ZSUЉC5!tMs NEȤ"0P^謬~^3ԩS zb[@w}W >ZN6БI-+Whyp 4q˒+}#:O3<]^TuMJWBB0_Id ޔ|enQK1u&_wQEv%ySY7}nyY9ICO@ya?8"ĩ)SN`> q-l‡JD:I)TMjzvPp dE\h&\KV\ ? h>VY맧+jt<\H*RR & ]?Q54pFW^.S#Z%4av.r&o)<0vPlO!ra9J`O;avЦY*K%j [HYTٹ)86/G&.5P8 8Q8D$| 7-n=Ap=f 22 A\<UblW$ dL۶m۸q#{[oA&vނuܼ\8_ 2dă UUTb!Xdp xmxhr8+fg7ͻ%}$d^i<  d&7@N&SIʩwhKasbŊBqJ aak lsWy; o>)U8}z`K(3'Eɣ(p#⊃ȅ3io&-g '?Of4UDC8+ 2 4QDreH%bXȔF]Zn@ >$P!Vo11ɳ!3HM 4x3G bZ&1j;wD@>8t'$@HIee/^$4C )lzk9PaQ´;GFH9&\% 8酩vc9s&FC(nٲ^8B8ƎdP$vD(1c/ P$)ϰ>a!'HXhp +VSvؤ5ln@2_' ?T̳]kuiX~zb{ꩧ?g%NHal.. `Í?`ti/j` ıd嘾ck$6KD{>rp֬[oq_& ń!+9>ƣ#M&JspiiIn^AAYX,7ObBl\*,<,4$;i$c6oEx%*> @B؂ȅز.X>@*P9J$RWϕ\ORTim܌[ڸbϡ d%đH@1*])dGTByP [H+\g.B:^ה_Ǐܢ!4ȡx$~) LF;ZГwGUl.$󅩕.C4gTRRa䄊̴"SټO@$IHpRنUӆNp<-SfnM kԔ eefbHR4A"Qa]QŖu\BtL([.` O>[ r[e+ NECkbT= c'I}/63Ebq4EbnKa?-(,hQ!`8$pԼځ޵!ҤACIwrGEf0Td0S,bhp_a/S``2#lAW (^ GVF]A; `8œ ΅,'3p" :I<:-̗J%Eځ]dDI2Sh{ps 3UBl=W*ϟ of8+.)@c>|! 8 .63! -Ťx&˸}AnF}ȠAWvNvzZ: 5 LbO\!ĽqH%Y8@/1 dS\<ʍ^D4{^}_doR+ѣG!A wg_^Ł `N N 6DG48ibI+Df&rAA'1H%ND'l&ܦR wB:C4" E7!^*\F(e|c8Ό0޶8m ]3avHs-0ƆD FjkPFQJUiVz6E TvPU1g 6k,$EA&#>~`DE~-*G칸 1rDa1x[p!lACo 7mڄ |0~-3neJ6w6ʩ7PRT,x":;z:ГL*8 p}7ȯt> }Qʼn=; Z+uiz'!lFWݥ!ߍNv&ZNW!v~ú[[;7.@WL\0J3~СW  `JA0+ZGH{+R` z'e^0$` Ο;>mM7LouZвK `ȅ8:}< ``C(Ȳz 16tiS9J81X~0:=z# +h{pTW$޵t>%5ڌ\)U(1I Y騗E'L#λֺKLJ0؛o9m4hCGxvZh.^x6P0@T # F&8squw|`܅M^ ]n2e͈GlQ wR;lձ5yH "]w\ {g]O^ GM\̄d(Bvs#!ForCvb_wadZUATv:^o>qaC1Ix۬=(T`v6jkHbxlͨ,$PNpGHiС!<*|qt_1}􁙍xv7\\I[n=:id⨭ 37qWWoIL:#wkڟQȴ0?yS2\~'!T.CEfK9+& Hubs~ r0Cу!=Cъ,T!\;| `vO@0GbAlX":B,\*QBiPouoY%Wܐ3GW܄q2̑B.5Nqqv.BK2A:@Ѥ}w\ Q _@/&ݣ%~@d8@jq' -VTdb c`,J!iDDHn $0a7L+y.!دc⯤f4ʽpo;=.ԏ*s)f]A&ո&3Dx'\RU2HZ+MA]0\0Ν 6vQL9aBW Eq3wsWWUoOr!b<1_N^v!8S'ssFȔt`T*"d⠊:9}/rR (oz,SrkVDI~zGa3-((|򩧏LGљ м ⟠'@~Hf9(%O< ۤ t.^g7Nk"NUd"35 WG}^WtcǎACϐϵx -z'a׀O>H)d|0GJ`FمoI?QY/n\VN)h Džzwv(1j709sf'+ Z.uz\‘R|*v ׌ӧNW`Z‘+H aGɫ^kK j7`$#ƅ= P, *S*kbyMpd=up~[ҠR:^C;kLl]w Ơ}Wn+-;~ۃŸLw/} nͅt Rsx#[ǛT[zP.Pzr q\>@! b>רT߷cݹsy ..BrVAL8\ zʝO(B6^4T&;h"z_}ogf; -4|̠-b!eeekcgР?+rTAY#l`k-tb9mf0i`Ճ% } _~7&]gXЋ>@3 - `OqqnH\3(F'&RA3v#eL>cRw<Nt9졎hĒUI8À)Qၰt?jl\ D1Oj1SUT4@ %Ӓ@gl~ ?5DtH>z`H9f*JK+dhW,F?{r-t xҋ6#8[/ҊE [ˤI"sK;֟ CC·^1;_!EbNO0"lpX3- 05Ϥ#3e>SGdn[=RF*puqK3^|k'6.3FCvQ-J\VerF<͜4QQ:h,Mտ~g0^ȩr‘~?|'Rr=҉oݮ;Tx:ѡ^:9#&2kֽSf;8Xǜ&[L.MMe䠶V?QR/(w4")}RR6bQ]b@GQSdxx+l`W;wBRK=28k9L: dJnא!|eݦ+- ;ϵ~!}ny]w 8TV WJ +kҏy> 7(aܾ40Ĥ+vpǎ[B`<= x #^ă,p!=f(_+kJ CaPDyB\pWա?{3Lbp=""i/3)5 k5:4x,p9 +~D~GكF׃>`BGDg/׭[::z9Y*(K9s挥۳3ϛ/L/NcמF@hxaQ[ZN.`R&[U,"XLgHAeXDS"C\*6\s1㥄(@+ThÐYA~юB o[]p76scn7;kH ~\pl3I]M{Y&ϰ/>E Ihx Տ?xsb dخbmO1"{8~ঈ,Q(`atw\&Փ2>Zuunw{uD _p`#x`DcG-VXW^.vqԘDɞ>W(@ .C"DjXP]> Ee2U(ԙ0QdUIcD:D$ѧHQ.Z&3Bu ,5:TCx"[؏fгXHj~]MvPTiß F:r=qMCg`>(xsR~w8!: FV>oq".Z%o ەE#z7_=cpdzxZLb{HׄP0.Jw&zI7f n ,Ň3ѥfHU`8LRQ`IAg%mLJsK*"<)^lDnO0[tJ(OQ7$͍;Ju.&1-ܟ:ڮ"':uj:[ۑY&LC""?,SJD\OaP\B;=7w]5ʨAc)2:4UWfF)m&yS8w)UZ85X.@EfWDvr^Y}Fz!O?v^4Ȃaw 3s@ & ӈB@7b a7{Fc*J)Gx_*ђݣr0=THf8qcEE[RG q>VdrKIeFR, bYճLJ'!.݅In c !M)CabQ7B7.ߝrx2jǙ򑉾S! MbE :?`Z6?J|TV {iD>'d烔Gaz\pO@!Cd,X:hu߷O9VeʄΝju'Kc1!>5mШFvҚ1r~/7[]" uY*ͅUNCvd:dUυHI֗SM ͔4~ ƄJ[ ھ>j4& ˴lc|(KΩ6oHo{ Rz]2'vRߤug.Ja~R0I Zl1gr3W+ D b]?<2ڗԦ gƇB&M`(xm 1Zzh" F)vDt˅w1aRxà_TW{oRKoTur$""ﷃlk:>U{blcBwhjH[-(X4FS?wLHɪNFi!JnY%JaP?"&eFd1ٱaFIϾ}߰ꨑivR0).p ~Æŋ+Uʁ%z$yI"kE],w !nzȵSHJjv}Gy9=8\]H E`deAJqƻ7v稨HgD)S>Cgxivr`ۨ>>.T*38K^}mԞT{6.&H>kT~݋;YCF8SFw!|NeV(Tص%)SaT'FAQ%I/&90ɕ2>O zѱ6 ٤nU_ IZ!#`[ӂ@\,hB9s>-Dh,("!xĈCD<ȬTE{5n_>@Q9s؆jίa¢EG[R 6>董s/FG~fѼXᙬqv~ELVg8<{}'+{[Z"{fC_̂Qi%UJ]IE/s|eQA8[T`DŴBX 4MjTFX$p$<=(N `(p-)-iu СCR*i(Qk@3IYe, wWa3?])ԉB.x;ae~oc*1ũcC-b~w.=sRJKn˖ aZa2 ĄZҎm讻 ?]vug(L&^-vifFi&c! EMfQعFO? cJl;kI߯(/<Θw<={d]r**eF(t'XZpwpzTNr%c Ehu)CL%ʶC \Go7-Ɔ>/QrxB# a`>h ^$4 `޲e 4gxN>*D|E{Np 5d'6q;x:!}o花CLLLZw 7­@pBL\Z`~{ú _+k'a@0W_}A1\2 ^x2~vӣ>*cȅawWkčlذIqnpPwo @c|1NF$8# BG@Z%?n\BÍdv-[0l.عnn'Z)bF[8 +p~oȑ\ J}...=RQg;>h0k,HH{HN lC\ cHpڑQ?B}J0D 5T&i||È?x(@_TPe#F+V@CG:):) S.DxCE3^D(ٍX͝ hDEx;:mS}'N08 Uňu0e悒v^Ȟ l4wq:%k#G+!j~1gdr`@|> 4Rޏ/l`N P° q &CAQ]OHxm E(-瀦{Zd nyꩧzE8I uHC$6Àɰ/Y{ŋ6G >'=dQsE׹SG7}vo"Պo0JRv kAH:=T 'Qk="i֬@dV n G6n: 9A۾7B Rf YYY`7j/ tHR"zI>#"5+@?:r;m1<>mPBSC:a89lҥXKsY,eʡB-Ǜ5s&e(f'2KWN R "O<|",x;uuUtjeQ0/OOhLj$b5%Ov{=)wam0f>-߁T諯 .Y pЋ%d= S `&vUOB LD*0`[GKl0a.;@Pvn{=ІpG6D9! ~Ha6fC3z)L+bl^a<pZ A >iYDttjwxbO+@ ˅.VI0ʑ, c~q@0-i!lujfy>Z\V{# :`R ~R>@OW?Q5,uk`){'92U.}vX>=a[θDl~Գv4İ0!l&R\@p1g|cm$= P}7L4|{AhzFZ(mŰx?@_~e-3E=[ZVp&@LQd0 3$3s8|P /L-ëޜ_+p8C CK?%ْZ0ZzOGKp9s ,[X_p>}6.Vq|dˀhð 62W{A6tcvo7܁ OLP" 8䧟~™J%;4"Qajҩ&4}^x:Fܶ^(0$d1+J`Wdum f_WJ !S IrT>Wy\w7wu rKqp }): *{ 7h~ ZӔMM*ǻ e#oC;fXqEw atm!/: (#:pb#˼u0,EP8f&3 b3 YyDg:'JUAOh xNap>mR6+E\*qzi:~x'~hcZOKM #'h4- .*?,t̀+c: ƢRq*'0T1v2 ôCX Tu_}gS$bC7m0L.JBp:V Bax~|.//듘07ͮsFFQY;L:E3xY"ݥ8̅&R 5 ;/tSw#6tN)NHrA+frZrmߺ+ H: Ex(H4qRT"I:N?A oH6d5<۵ 1qG>8}ofRpķ'=XPg>p ~ȗEUE_ 1PACI`4 pGhE>Y}u8|N"K`LL'6$0J`]e}0ĝ`EIhgg:CW @wi# *!)b?W 32|yrf\i_\6$"~Gt|+ȩ~SUF蔹k.U#8 v8z. R%ZmcƲN]Z dLc6f9r8g|Qu,D= A"iApՖѳA?C 5r :@0")_(3?!02" ˯ԞQ "B^|4.XJe¡ W081A&d֍Ks; *ohRKhjID3aU"ևuY߀-ڰ)eZW_H){;u <,m*g-f!22Pš[/^U]$%a":~RPX[%qrf!IЏ'ukcF Wژ7@<1'^0LXZXL.DS8== 5Leh7NL$Dž6V}YњZBTZJRK=HB34S%L&X.3Bm7fPM,Yfu Je^iBuVy̜*Vk=p<z=U1Mz 1lw f j!h `~Fh3 PrBh{CCXԵX~վGϘsܸMjӹƲ:H|I"F*)6#+{{'87]HrG{ ^O(ch]d;6),(S᫗@HxTOa /-BIK^_lAII̮+QߞtbV 6 TWRA 763Ͱw0` jk?q<7')F2y@ P !h@"H`G\£Wؒ0Rc% H)0\芔"1 C?v40ӄ}ޒ4X8A$z")8&[O\i"<SژA?fP8`>rIL*aL; A?ja`a}&>t0;E c5":o E~YB8q"b2v܁K :ӷbV4UWU!{:9a` 0Y6@:DfKڼXy<t~F"w߁]zw-~̷x5*<~ӅG9m@Q) LQgK S:wN;3#;5^x4я[TTd-*+*O|; +k *ٷ)"wxVQqrh*{=Aփh´-ݬPMX;%S: hfis=40 *~4Q,Z#-Sam<>S&܈ %*0(ק%!FOgA&%4qLAz0D/Y吇L,Hob. RޞH0CX?yWXPhMaxmb5)  hAV" 5ɏ?8(ioЋ<{WWb^/Q$N/ zx-}(us*_桰0#*,\8S/:g۟YGNa/1T4 eO4W$̖ȐUgltfýӖ0;kc6ô uE"2=:ӧCjjlz77ހF#um oLJ+VD3RIAܳϭ^Z4.Î Hf|ן'>k؆ -2:D!UBs՞~M/ީB$8pjL j&Mg%@O q`v)~} I7.ƏIy/8TA Hc}ݭnȡ"AvVja+y ^3]5F=b3ȣVp C1[S#>w * r}K:p7 MApQ 2P:<"~P=sG/$р{c=Ib E_/#NF8O.L;^{u4B^$9f@f͚ʣ0p{fw*)*η;q|R]Cm 9&傣/eM)tt؝f}#GC<E A5 4:{,܁_,/N<8kX#go( zRýxUďbg߯_\|@Zl]Z`sb9.}c93hGchXla.9Vv$ٺJko"h^q7 ^Q'8w !x=zw )q >_&!qh$gǏ#ZJC<ի{=# .<  !)2HD AՇr!.ᅏ,..D)C_JOGׄ)7K0htbfNapᤁmڦ MM8q3ɒ-Ym133=[;۲z/{:owvwfgYX+.(Ą F ""*h9ZzOVU] `}x${?3z#{@5 ӈ狄?nϿ^*ڜBpN9Nd/7JJZ xKX;7Ԗ%w6.t}{f^P/ٓ.d ow^5 &@rᰄ|]dFHR\$?p4P c} fM1uѳK }hi&"̋AA!O t/8 $ '7D O?\& F^~24rJdmzRW[2rowKf8ܣ-jT`Qдeć%#5!es!󬯏pl+)O[g{ U3r*gʻ63'GMC %~dnV4(REcI7sXT.fz{<aB4,uDcd͕TV{ YE vr(gٌ`Nr9^b3m^e[JB=$m s,O!7"=*=2(#L/Mm^$*[ 7$:炽ù\%I(ʣ P?]#=X74+@R gO>$ x,/j;meInG mҡ!3|]+*$<}n:^}U2̉[tm ʅLTPP'S$\ro=f>,<2 `PG&r)δ-i'': Z5?`N+`lS a!~C=jbБ4c*^H*07w9'>{_|u5w p2K/* YrSbqtH>$N(c:iPmi&DN p:'6Ht༈*Mr}ԄAWlTѠ@$D"+44m4(vHEcl0H_{/ 4 .7y7CWF\ F}.ؿ>VSت(S9f# K$xv;V9]AZhr#hqq`BtMmP8ZK '߾$ˁĺtNw6ID}n`b0q:L*8~BFvԈ{ '8AM-z^o:KBwj"􏮙$ .w:܎0ќ$PwĐhgs k@UX+nN^='CHMvEWjAwQu&zzzIiS#'x<(9|?dM a o.4T5K =K"c/^,B$!d $yLvd>}PA`x S3r-AUGXZGK|_F_"^.+5*1T(8yr`P[xFg\'Ky°IG(5Nrw9\^aHljєEѶF)X~Wb #Eõ]F5ތ<+-RLeUmKm<gӼd(&SۡtvA2gD}Mi("p0ľ@g:"-/# 2?9||^.Nt5M6*0tASL0 [衇qnqA:~G ~Kʠz FO 8! HrgxpmEf%HH$v^/rʰh`=bs s&0 p\l#k,me5/;=<ֳa7a} j9>!"_ݑP" լr|@8^Z1ڒtܣ7z/!^z3cޛZ9[šȀm9E_dzw$XQ2FUQ^TvPd4 A;J]X<42펌V\ ᣷]+d6Om;^hRHpFcO`EC2z( `vO66IZ936-5p(?'r _Q6d`<^})zR*i 3`hy-Q`LHNq aR%dyK|뉶 mÁ̴=cA!Pr @~ON,4 {!] P9駟^݀X(8lDzW? 5V216D ថHՁGpAzF.Yz_y^_^8yub:S SizR$xGv|\ ^{u}uNv])Y*8Lm6bN8~ ; 8br"br@NWYcH(\3VFϢ7/Z%*ӡ|IXzf7F@}o[tMfb# BevhԄb& I^ ވWc(@qzEUYe첁i+m#ſth - Q1vϾx e\q;;;+H#dr*--9v!aKV`,/ /= *Ѻ?۵kuH@q1G)2g[֎,H r[5'݁9%f3ŵ`% m}WDúWJt9fEZ^H`?8j8X=|秬-ۿ_wmDl8^:m2RG~b!|G)\̾I8)doK,:՝ņjvX|Jš3Gr;fwb2}I_2z[/|@QVhXsOc aK4bTxRW{g>C $0'Nx硊AbAA@pP~a(D85pB%!/_@4<,PK^ZCHjDڀß=X,h3NI4P<ٿ#7\;uh4 9&GuTظ($W?υzn|j(!mh׬]$sT7R="Cȋqá]Rxq Q 3lhkCnh 6*?XC' Gn[Ee ?/ˑ0N.HqkxO\|&+qwVrBt\EGgs=6~zhQ`ȈH0Zi!<װH  A PFl=4DLpbeff|<4-Kх!b(XY}' ="73*AX#[;[M dY,/Df& $;Q wGƧC έ2*w`iIخi0)5ƀyBD:foY*TZi_'ܤ<׹^Q@P>:=v:q`Ə: hRρNlczGQ*EL1qԥC#<䯿O TB?R _|K! GyM.P uz0 ɿ:Ш p' !2#WI/7<,>$(d*hklmk3/&#esdNǟIŹ_J 0o3UQJI 9w"L YV@NQF-y wD=( B f*IBVa쬺vބ`8_ K[,$Yg݆b@@=z_rУw@$]" z]o8?o?6T퐩 w/  &C]Da'4` 6%KoGE %EH/vf@顥 I @Cd<~Ur3 @geeG݅d'n+@_aߓQ"9r 0gPqm9"CdFQst}WEQ>P?awWY2~d'&FF4l3,[.t9[%놲;`bxL@)ztNp_9؊kyuILN4vUgNf.]4&btHA'&XL !Do{FDypElhiyLz`:QFxB@B̌-8>@ `1`KD%L(d5k^yU7gge_#DEEE0`I- uƉ&"Oc_o&].h`ս߾?s*eH9 ( /sQk:s9>I-154 J > $ &, /J% yne Ԣ:˰QE( Y-(صjF j z㧵CRQ.ZOE9e-r e!!yF# ]Z&xMj^Z$+z-@a!+^P C%"!}s? =b`@/Vz_xN> DTHn@X?6#TTLl;'~~{0X9N;94n\;Ijd| 00&x%8f U~Qɨ;­k_spT_ nΤ[a(Ll!kt<MK9uMKpeDa8;.1%:Uu/i pb~ Q$#%3!ws7 c?|Km ħ|^4W^%(="ҐHzn7QCeO?s8Io` k߰Ǹ'vb2D.RQ]j!ta?\ˡ=<>XwW7,}tԇW;B+t03I4Bn*F#8b ft]*Oz R;%8 G 'zsʠm9B^T10w`DLL@vV0adg3@ a_!e/CUGrWL]<%>ј{&{P+)3\+zhQjL Eh1Vfi޻IȼB47-HO cغ}| 0 ƨ#8Wy`4'-q$ lG Oo*_ON7JrAqC꛱(H"Hڄ6 wK,;M4bxsB}x9vmȿ-5dsU? ̟F"vYA~ YH$BX ^7$T..@A,{xn-1!(\ xwJ  PQMv^#PY Oo RL_@Zc&ꇑ{ŪMp?OKZN ;t4>Ne: [N"JőTjs^1;, 3H0z[]wME,i44;D, ƬFr(:*r\/!7}Q*u!>vr'a 0L:\ Xc0BTp8A@!N 6 bcbVtZ%"<x=nR XWТZaA]U xr*HF "00.Y Cq8S}O[t~/$TéA)@n:c ],dj_oz/t/x/j<$A`tWEuuħL$uz/L GΡ!?cѻ`5^ aVx&8hUPK,C>>Ǝ1"ԽC| 0z^0ROnD3}M4,I2ˣC;5R! , rqY!:4ȯ. 3#aQD$%]1!1ayP!pc 2DׅcFB P?(|v*/+GpAY,^G HH+iSHێJ鄂EtTq<._YJ$P@#g| 0d JPNq3&b @tuQбc"AܤpMv-1 cMO8*p$ |=Pp樹GSߥ"g|+2*a2Crngf 5?vKbgS??$1FG \P`̀8l`ZVVQ]Sc썈]/=  `X ;$R0„1@p!x +(vFRb"$"|ʕ+Q#UU]S?C,ڪnxWGOmHo0Rf F/ c=ΌO hB>P j^PhFQ>-GW-͈w'E!Ҝ|ۑF. 5P8ć77Iƣtб,hj)0-VcIQ &Lsy]޳}/HȅU 4`J_BbA!ŸPK&#XA7礳#āN?:"o|ɝw܉(xT4)0CT!"$ޣKa:d<frv]w Q`|2ul,,{؟eevG ޤ՛`C>@RLّ.Uh&;-:kԖBt U:C]whx@ 鱏[8LDg- +at|hˡ(+ $|CSh*?Wy\p2A ` $B<#Q!\_ߐkG}Pp[j[vmP4|G4'ǷJ/+׆ex/["LoɈSQ43իWCECe5^q5oM$5r{/6vvng 0GV4G>uFRTɮ!X3H.{-XtpZQ74NMtO(CEg$vvt']4I)*Ȼ޾~o=[ $L҃/ $5q# n'$݀ 2~o&C\X!$ 4ӉUU ۂ3Ы`{KCfz" (phyg_ ϶ђ^ NXZmZ fyTn xPf\ɵn/oZ@I#B) Ɣu2]2(Oc) &̑kB@eeC'GwY fsБʲZ_:]D7l$ǟx㵗z=}e `;Ro@m3믿F1₡$ BABU7x3!>! |Z}]<jUHMM‹dh/('X [ z!`nC&F,djD׹L&1r!rOCXd H [ ӑ@W{fGOZg6Qx}A6P!&N*UUubN$Sе#1)iNׁp_7~$3 $rdм*v~wބ"#OZJgܿ4TD.~t 8PP+-J?!̐M_ۈp^  ב董u]FɧkJ[H aPr].f9#gP2X_Oq=Z*1Ԥp6a+LfaTxv?(%W_pBvv,-v׿~k* Z"0-ZE|Hȍ;r}p~wrpՌ`H8@ݮ]xj?ݚڂcs΃irNiO>}0f'50l_@ɗqv4_;!D`+!9]O=">ށ@a(pFc_,Վ! 702TR"`Df'.BT r^?# E ~SLtAo2IROFRD)6e䬛ӊN6yQT4UXg`;- _8f4{yLt6v oEگqY_bZԩPT7*9)b)'?S̻NJW\U .aTq2|`Ȉ".sp )#^+W#y 驐tlkH~@q|쳶pvܫr!ʎTF«r;Ѥ0}o9K-A x9sSh.Ifz S_ }R>{=k!IYQ Y da7(Fd4Zݤׂ,h5*dL@z!&:j5ZưP~1J4"Re0H/B ]!+0B2!-(j]A\xLB0|E Z*/s?S$s8<"o4Ƨ ^畼ҤbSN{&v-/K_h5XeN"-?Qq,B^4;ravbiz߼Z$%'.%*r!^/]ĚswbqBJhmP1fI.u`plJ{|.   8Yv:n!5@40*óY-]e<;k/A xf x@'Ԁ:Ez߇|xd0bX1ĀtF`:Fnܼxz! V,Bʎ6.M"O@Lvo=Pqp\WOa+ؔ`͇dTO]m xR|$0CB ;8MR%$E塳8P=9]ȧ[p~|I@j}"cQk).XD?+EKk Jrslٺyd@(aaa!wu7ǣ$$B4p\p}!!D?O%u[!"'al<*O !/I+#ev]׆AmN".pFDU8XTc `JvvL& (~L2eI w.Jx=0;Z#]~h7J =<&R EuA>" Ad Zx` #3I1P"$BaF,NR$㢀C;nHIˠعGi|̟{0 hQ0Q#xRKagB߀jaO9m-= ba A,*Z80jˏU`–-WiyQ{$W!=9mZ _CfG㣼2PtgEWe WCg$E G}4{,Dee"+g͓{Rl@cȬT #; )9F+u;(DdvdT$= A$~qOzaՔIeWrov$fgg _Hbf|ڕ8mגUs AՌv\D!T!CD9[X9806ذq>ocVQTg\SUf"_>O>E2'hN[m000˰N΀A.BDX1!`?8cdcp>ba?oS矓:aHQqb #7|~?r D^f[;% P734T6p<@:4asTFf/>]9}reS $&1mNUYncCpfZkTj J ǠQ1,5] JX|BjjGǮa1l<#pt;=KMOh:mPD pHd6P0øG2] /ȶ]wC Epm[H)vP 0.oCO rHQ47t0xH1CJi?P<(^u B!%A9s@ِq  gwX? KR5HʽzOtv,2;`AT՛ MLҙULc$y8Sy\DD8c,VdF{&hbPwT,cci_eMyq:ea_v jz4ȥEg0) %=(; ,C3ߕ䝎OHq1"ӄ p@jH/$pAzhol| j0dPg/1x !Pi;H#FP{0r!C^ lб`lD-MD!#*8!mhG;y+ݳ?>50`ps@qDx ct/eUjPa cnMU Zݥ P N`q@flו*y^8:avڼZe2v)]FDĒ0:qjKO+iGT"$?pPA.2",(H5I!kmC"tSzCH R!.rTrK >aE 8z(Dcie=RDҋ  b"yUxHk`dASԂJP&S3FU*ʌ sJ<5}d "3$.6"wdhBKF=14֪)qa;L<䶛z.엀tL0۷l_j*\ C!l3:N9"BݭEZqDy(Ƶ2*d7̳/̝3(ZE[)9-hII/3&x{rMtԣw+%BxÌk5p.MS74^{w}gS!vGqb BY=q=ugBԥY.#x$8$xÏBCBH_ ]ὟEDx8qm kۏ; 'Uee%hfR(BOV!Dm= *ԩSQKFc&6O0*AQws-[QסGɿ썘Dj4wg֤S.ZN^< ^:xzdwIDAT%-, )VW4ɂ|)>:?{xc{5eiy<wIkg}Y0/:ShX$77q_ĉO=e7l}8=_r*@# 1s'<` HdHH1Bo] O 5Mi`S}J 0pŴGC0,J/SE?9`5SL{P)4fc𴗗knz%Z50zг 'aԀ| ÒPrB/͝=~0k ~4п<ҝ߼}e?V8L~[[ˣ邖 <AB !> {X%@w:h2qr]̾eas&eڻz=h&ИdQA scDi8;*Au<ut0=AݔzK 6^ѫ04ⲍ\Zx{{px[8j+uMut[o7wi  19FC\B{|AJy`@|AJ "0hC3 |ɉ&0 "#Koq#l: &z# .Ǩ&n|ɂtT>׍A:s]9olTt 8jA.ߏͥ ~W/a5L^ZUNy0JEJNcWk850҄^Q)5j%~H/Zĥ^t#"F٧+BӋ,+%RX]~ ;w0ePf\z @煬`bRl!  `<^r-"8`8])0>B#4Ʌx]_=}Nh~E y")\ҁ.R@vTdHL3dAgZ.4JP_:9?<14tvi2FzZ:0ݻvO<EY7PGQ2^N:W]S ェ F=ejp# #s=0`қ4r`QdЙdOP892ca1  ,VN=Tr HVbhFdÄfX5td0"Ţn86t9h@+T68a_ppF?קАMA]ϢvKk1Z܈S=xc<}{aD7'䵂BdB\Y0O< z ;i5?Bk`d5sOD }L#ԩ\]}~:<FyͶg=9d> v!jA8;<2!uN1P_d:-)'MJ% :kJGČ؆ScS.Sb&yqz6Q*~x#kaLUVArv^dBB䀊FeI!"%E&D#QJd D`g9+0ح{ռZXq+[= l;ի_XєhwhwO.L`6 85>%{bvtF+'8 aŇ :0[XQB选͖a%RKwK3,=ʈjӃlkl@QcFfYņ92zhw)kR]! 0 R}/٧,}3/Z+c=$LJ\N)g7geNCF|7ocׅ̏?8]#6u %}7߂T"zD۶}-ZFg1$KUY+<<=> 8)CK:nc~ zF'U:cT+I}R?Zbû^suhE2(i F;~;`.wu{@ *1|̻#ShdҲf>3TmCM2L aHDZZ6]f8"?,~ }D9c~]c #$=SxwSʫ h\lCpDF+ZQHJ] %h4/!gv;9,dj/_Rg6K]o=llP֬ )l!cGϚ/ 3WL27l|o+S+59!{Q%Ln4hyEs^x " h7)JO aHUO=m@@0"PDfфKQgDo $FNCd@0IF!.;`؃) dK><ݨ ԣ, 50Cq0J<? ,T٪VlȾ,XDanW u^-&? ʎ<, \mjQcA8ZǀUQZ nSz:BU#aCz! a0 >fEa/|}GXl4ӧOh€E{G <d ƝZeRz^dc|3Nx.1bIY[&ątj *]c?\ z\mt''rF?1|ꗃc 5Ѡ$KxH$W135B蘘l;V^"U0T*UH')^E2\|<`>Vs)f(ֈ?_(W*/{),V ؜JGk}roY*"˚j>-<,܁ )i\ %A~Lvҏ_}Ut:|?Ofv}o/;v!VS@ 8 Ӄ#$CYf>ʂ-F7_邖!Tf`& ~>*ZR~qf׀}@͏ds|,j,Vkk(ݨ1>5FUSª""'j OmUzDt\EŨnASVWрoOix^<ą~Z@=i_}{dm>(_wnA##cy<_〮 ]׾scSD /11v􃴚_hD](ޠQW  zW^ Zz3آVީ(Ƌ`Xtv\ 1&cߍ /G.%RZC]*9cS}/}z *- J:85%e*1.9d\#wVϟ9ch50hWZGS N Tz\'J&zSq`N/8]g='LRҢnPp8;,)bMrdn?9!}kjCe4~j>ߥYN-\0p 52.4%%ۤ9Ƨ r4#ȩ;DIq!F-*MzKpNª;2z ܬ445^ i]gdWtI 4Tva0#ˈV+kԃv=ࢀcnXSIݎڸieh7.fR,\ Y[4eP][.F"(CDsY@`q)@uhstm.Jџt 01G/ GUt{kC=G 3&wΎip  দf;j#D ⅂`p1p&hKd4R"zwhT^_8j}*-5v"ɄPAGԠɈ$ԏ'grR6c7u&3,tt5JhDO? %CP?>)C92xVg4 n<+._3!3" Λ@ "75E4;`| cҩߑ 9FTǁyU{MX9-Т8$JRC=>`)HM]ڇƅYD>09M} 2M%uJ-sCx\}0LY 5z5Čt`F5 SC__1u`999\'Ѭ?ƺoIx;"Q\Oͨf"7ӆ4Kިf]@߷4S#krɔ-'2"CCI[nO9,違с^Tk{mϮ_1-x@2ۮ:c+J3i+ܿMP@Qx{MWZr:v]VmXA/K&BzQ}:Ο7[gioꖓs $ګI*dHIO5Z O l̙ d&XWWLXbh (,ivOx;c\cNYq ճf$][iOFYNEOZQ/" OsH) ?S["vPg, %I2w7#?|sP;!\89[ăc|GC zFIc29Tf^u|-RI=Sٟ q===d)kH]8xz[ ȁ,@g6LS8!gnoR7:|YՄU8[_ס:i 42RHc&OkU^a@1säsI9I*qP L-;h<ıv{±o5- A{N]"C&{ԑPhAB֧hj`МH`@f{ ynA"!ߒT)}vV#JW/@RJ7vNp oAD܃^UX-j4o8g)G4@x=HG՟t"lTʤ˖.Cqk~rdDWYcǎEEE-\ЕwT &D~ɣ"ǘ6|9w3[bmY4MEQ)Gs!_[[AHR!> •V^e3\3"F3KKd bx͚5EN9'o;` w QͣzoE2 ]yDĉ?׋E2vӆ?r<7n1cr[W^!0S{Y⎯iƉSDevIh]h]`w]hф \{| 0TN>=(0hpi "77!.9-`{7`o;z0̈=eggԐ[BQ)·q.ޘ1ԧkثOѾq| 0DM2 brdg"T]-z?+Ol^0ttt\x1|qqq"wo292|LJ~MC0)_qH2c$%o(>nwč <hR,0 %όEh~LL?:u!XW_~8p soT*|ۻ}#$j^㯎71/Y:vHCx=?׉' `]lokKJJr ?n`#߼e3F{M6UhXw Q>6::8O{~BqjGiӦ9EGy$99 #:)))5ʕ!G2'Nl'Yj@ \a,CMBBB0F⥘;w.QWWGa4;D>V!0|< z)<~3ggώᏤo$/7EET|FN\D9-v~BoҥgghZ_/>(_mۯ1oc0_Y[[{ 7`QDӁt@$b_ۻw/d55`<F ~=zlLUx d1;WvpVeen Q+6`A88{Ԁzý KM7~ 0 X`}_{5lKD"Cx{1beZvO>bzzx qylE1:R7fx^٧~_BVv 2 Z'|rêbbbƓ\.#YPTUUᄄ/?2>N$rԿZ iȖ[q8B\,z!"=('([Xz%e-ȶ~@ F#5`0wߍb,!.\R0>Yv, 쁰ԱXmG$4mRb6`2쫯d$oΝ0!?/tPΘ(ŠfǾ~nQ{ P](n!~!WF7HAGq]Of7, cUhA &{rr B BDDAv7Muu5Q8'>r'x#K&7F 4?UU@,;! I(GYYC=yf ?\)({A%TLB~01>[WXN' O3ӦO4q}c//zÅ_䛋v _q;X]bۡAYt,ܫԨ2p#&{nȯ\X._y# q]G"@7V$4!؅)nd+^t]HhGo ԥ Gi(\ga nK$9DG0G:M;BnïP`?Z+ <:bޡp%-" FCeE%,H!\8{|&NrPD$¿XL< ,  ߉%nj2& j4mM!k>||7`%RX{&,nCq h0mކ)\ }0h ^m?>P=*)!SUJ' D"UQ/T&f:$dFm $=$vaq-ZRR a,ߠjvDnN7byc6 -cVu{ ,О `њmo0֮ZP@mz4XgΞ3&:)ՉňdAGHYB 3TUVA7>‹SR-J6*@v>K/@$H}`KDR;kjklkANP $.2DY!^4,ؘؙ̦3gZ!x11cFtJ>HeEQd|7>h=,4n3 oϐJKJe})B!y*?0m- ͚9 &/E /ԲD 8uT+֑)q8X ^~DgH.(U>&/+/V$Çwp挙Bw /.*nlj?ZKOm{A%; raYqD*$EЂ--%e*y@MnË$ı 7ÅՒPl2#헓ClGK]`dO]`خ ˺qV:DN+5BW+gmM0'1!Anl{qF@9C(A0 t GJtApXlq?ˍG OZCN'%&00!r,ä圗7onxLlDsxco_/UfE 0_ jDj3~`BAvX@&3&u 0u֗-Θ&+g7o`? 1L>m MAp@^9TRr.[HV4A@#LITjxU||2mlh)}hqj"fKbp?*\l꣠* ;GcG\Ks- ǭNkÚpʾBDKB\jq{X8,Qҏfg8[{#|mJ5{m|PWZ. C ɤayOۨsk4 BRl$4]#zyäِRDk~[ä YfCjGj~Ԁ8VwV㾝q+p.,* {j/]8gv/ RP=Zݭ=8>QDb*X]LF;m9Zk=鈜+--(%%% `@@9s( .k4+rکw5梀d0'N/!sqqK2/ 8*¯%r\z. (0(]R\ ,3U,!1 Exì\/ae[7Cv1wy绅CpAd5 ٲ =om) m]yh8fw#qB0m~K.Y㞊 ge2bce@rYYY-屶v:c 7ʃ}  mb̴e@d"6Yh8DL:>& Y2¢"oQڜ`B4|2FW?RaR'=DyD/eCb3i|?jiY[+iMZ ^ :,YĊk-usf6Me%#V ]]Dl8Y)j;M`,o ԩSE0-|5 Ai\l@ ̝7*,o[ 'Ne;MxG6L&Mls$ $ _ajmQ`V=:6Ɲ ׂ 0D[ՓSЬ ; li֎&#_f MmyKq`:JVaaθ6G`"\V'<ۆ֭- l[bs~c)?!ΣY$*!PMlSߵ=7AGvFJN`.Y # ɠam}--ZMƶ`h2`[wQG㈈s߶HD ayGk8^F.JP386æjf;L|Fma:#9"  y!G~4m+ۈ7\Lj ؊Jio'Llߋ7j`Dѷbt8>@UCQ jd_.}w}ajzjd>^>AߠuUB}y#ϗA^[]!V'kM˩ orB(;bEo0#٠M#_]r4U*0eJҠUѠ3\˾~07ߛ]wnj^䑟ٺM3\!3&]g;ԝ9G̬K ~ڜ%'W[ԟ{4Ke^Q[׃%> nUuf)=_a8t8<335n v`c<=b*ٿ\켲 U^gSglj?u`ufc11 zdX~ƣEy_Yh;mUEFnM?vgHcθ?v S>so!!v P;y@ u ʵlBUwGGGޅ':N%V_EQidxڷjIݏ)9Jz:;Wc- %j)nP.f=͌$jv2{P_SztL1?QDߠioV ZC/5{;;FdP1TAYU*xÌq{+hiТ=>j8Q%l(|Y둪gfm/hgu4/jpPFV![٠(,o$/.9)1wm] VfRA/ J.٠PjlfG]ҲU8-ӺDe)9?͠BesWV5Gς*m_FM05̳N1KeFqG{gb6 D{$QoxHvSyΠSV-nܟ^C/ҫN+oךX|+Ip$:kʻںhX94LIc!tj;p!fa* jS߸rNͤy {+JVARtںDIs&GPJ'h6Ds̒ޮNДnd0TJ`gG7J.Q3=-%R$EOdשl,ͤU MzZk=xnXO5t 0ŗG)[i 2X42@F3e_XN^pA7JnkyB0_!V6!QbhUqGGFhVKaeQ2hz8SҢ52Nٚgj2iUn-` xuU3<E18'h>&DҺTdط6I\qHhZJh&'lٸ#=3#.!dBh2( o詪 ѦC TofKnuGVvFuJ\}zCʰ|~Γ9yOw'MR44#& jNl߲ټsLRussҜ=j&M VWjNeLL)Yَy''D 4"%;wLsjW[N(k%O5Wr dC Y' j"#훾 _:N=]ɈO=}k:8)lȪ0Ӷ~03#za>Tžg+Nm㮴3%b A}_M+:S.'%Fmi۷;ST4!ɏ۳iñʳͬ Q1_{ d1C'%XhK ~첢&exJ=]aMfen\-2_jqu狑0!gY0տ{S;4{閻1>ڠK\>Cɱ"ԨWߺqwjNYq#,LZr&3*y7u2[ lIw|4;?O)>75ڇPH=p`'sKj1 #E:ϐI}]kw̘$Uvܣ՝؉6nJ=}\ }ӧKZaqn۪ YYe26ﴔ3wRQ-:&͎QVfh´ FߓSTTK059v@kq1OHI~9E9Reʉ铜0}nZ+ 'O(;iÞ^Q|S ?h)96{͌ݽ==7i6l7mLGL3}5g2{|*Fۡ^è>̟&kSf^K)k7Ӻ? ؕSi0\4yѹv K|x/_}sݟoUUWvL&q/wkm+]YmM;2I*VEuzcIHg2kn~wyzWkqOU筹mVT ɝE1k^x?wԛz{A=s[Ζ]~[+юan3< 24ox^: Cv|O_{3t=UO>qcݖQyLwOвDx_; Frx-Ml:ϳ [MF/lh"%guM'܅b4L fbbEĔHp߮~^DvQU11 %:mՌ|aA֑[=b1Y!|u'&GDz,H;j Øl PI<ÀL18u@Tm&{J]N2AH26۽x$oyogx_{z$R^ofED:2y4Ta3i YCm[ou/~gZ 7٬7?[]&=kbJ̔{  {)㬸bL=ԣwܹ"Ժ m?ޢLM !fKbOmTii@KR`ׂ!y T1.Uo(1N~ĉL,p؄!`D>bfύ69GܽsO?/di_d*1nlإW5s4ⲸW/zɇL e!3nzo9pc Uq=g| Sx& z/%Ad=&3…Nj)飿0t5wx^>e&&OM}04__;Vs imkΔ^GQ iN_oXd7+GxB*52tsƾ>jy|.&h0{μ/ey(rlj:+oYuCe6K^!G#@~q,["0|ZFRy[ }ѻ)oгV=/e: _=*z&|eR'lxg,&'02{ ۖZ6e[zxyb1=>h=&oeS4qC *΍+ٶ,ZeS'\KfEkB#8{QlmԬsp@ewjSU5TpDS}P243F)Q+ Rh1d(@=-0L=z3G$S.˅oFln7\QQo˨; bJ2i4) KӇ3;/{̻ya282Dd).C'SI)T"j+0dz1(, Z'i/wS:aË0) LΆ y6CrYr?3>o4B9 `f^qg>̔NC=a0wWqé}QlNЖˠ<Ǎ9Žq&Cs&D=T@:jh,fuevo| '83I{бOs@#ۤ5eev;UF#еao)sJEѡ[~jFX:!;yexW۶l׷3d:.SY{]iRqݽԭUKlZg͞?~ ck*cqTcEF-Zz*+5zĦ)>6W=&>O9pb-[|ZRO:oHd<~2l@U ݲi&mLr߬(9m:ap3n SCc鹭bVۓMKB#D5mf13*+0i4Sl-G3{0/sU~ q\ 櫼YNy`A_ ZJ 9˽?~-I*Y208;Ǻaء|gڸi"A|`>\ [w$2܋1Mb/vf6zl߶e^fl|VٻI>C[UpLqX7#QݻvfW9!1s3 ?q'Rc K>=z^:, lNPz {[!f&Mx䛍(;&387K[; ~+nm]lX\_bEb/K;zDmEORύ)d2'p?w`??ఠx[斤`^d^q@p_j=r/>+Iso]fZ^ lG7H-˕¹lA@TP =n^^ezPcUMwd>3$Xd%L.r#gZ:7?$* #ם-4MjkSG.u/-49IinsoqVC+}CECsyxp|Քw0 ,Tj,Y69' 4ԓ CDP8?8̟6EE"LH푰 S@Š[f!Q3.(}X.zNY><`w&aT&,3;*28*6Lds5=BB#\@_HuO/^t띋Z'&D`%JY1 @pxHXdlO:i6j[Gmͽyͤ@wQp|wP`Ūia,30"$(Hzl_HHp'K t՜/wxHw`|Eb]fq !$ 2zAS,ga8S]vݳP+$*ϝ⇑X~A~AQɾ$1iϠe+&yD&%CZ4.S '4&}  p" &-Y4%Ł+꫐C!$h3 tc"ÂcQ>򽹮1Kxfl֣{#7*)9cUn)3C _ 4>I=Mr7tzO%,NMt48,/<Ѯ%^؝yR:袀. (0(0v4DW_\pQE<\lO. (ࢀKօ. (uIG T:䉜+h\1aCD5)#fjPUbܚVzv|ϴv#JFkJ7EAjFD6$5=u9X>dPz~uw_c#6i~ED%<+Wb ]G0gw(k{.wK ^sH KA\WphOхY/7p>ʦ#[ND[ʃs`1q9(4?HGN@CCC d2V=pPKy_NC0c2@E!\GҮr!S6Qi/w-%սT֠+ޱp_}EK.՟Ćy쨪k_nLNYVNimS(;j/j;ە> _>ogSjY^%q1 c\]!Twؾ# Tb暺+BI^U _, &iӐ󑩗T7 ie+zKZf٧ d[5#*%LVkLvBMrաanL,?+9#"ȫt'lARӥwM;[P K7nϮ$zȄ1#/ij:1wL{{ټMW_zLUD,tuU]jM{ږ2sd/>!d<L%'P*+;xL[paH?[ s:Z01чT{}YG!w34 amʲ܌jzԾ!aʶ:EAg:ݍzA'62~Tځ+MysB=XͧӎfD>ܝۏ5$%F{#ヹ Uc}SUv_`BMS9p?F#;|eo[\SqHF*>'eE "ow8)*k/ݿq<)t!7XaӉO=Ri :w+OeΗ=C( Y @ `AZ]U__(ֳg:^mr #=(VFdڹ!8<62`E'5qxl2~Y(/Q:J+cEn99b TXoM%fX?(D&Jt =S=Y%JJ`tHDT,?Xfn'4ȓ?X_Zq^i[(msU 2ԅdž 3 1ƻ2/KWIHfh)oPHPpHFm,06r07u,opBLWz+n5:OlٙU7=9)HTQ̒>ߨHsVf*9Zi,/Ѹxm1;tQ͜v~:;*-(J?\_}ÙM AbAy H;Kr>{AAݧΚ"Y5Ńm{#%m1⚼4 e֍gZt so˵fښ^"#=LOSu2#+}]Ԍ!ʬJqS ^S2>$'+<.,k:Sԥfmzh8.5IJ$mn(9TcػÕ a5fi]FFne;7^fT5r|cH-59RN ?;OQhѲ~#ȁ.OZW[U6/4K+:rmK鯻 uzmߝ@CɨG͍gvmUm{iReM{>^wG8*e(ۇ!~t#f>Mڝ~U͛%|Y:ehʏlX[栆F{+!{|3Xqçk[O`7W}Wvt3 ⧍'蛺l>Pկ*9TVj=sta5Pmi>aK(ܸ1C8x Qg'Yaէn91 Vڨ=[Kxr q9'//oKq3Gp{NtbJ}ޜ]~3woZAMT*͠nn6;nݓf+;uwXWu75I+ۑ.LOݒZo0bv"Ud6Psvjy}{L҆Ahtzes8 jK /i19|m_oi}g[YUc`87466]jlhAqrL4mּőHq65lVbASV.^*Y|dMEI_#z%Y?m^V4h,tvDLœDS^*(_rYC9 @=mŭ}le-~-k'nsB=羇aES: ᕴf8sWYGCOwcy%.Z[ՃJpKܲbbm_/3}C5kQJ=t]=t36ˌ̾ϭ] Y\~R.JZzӲXV_QV\+Sf,\t7͊rE_dOsW2Q={gֲO-MնՔF<$5L6?;|zYNW+yMッ&&'&Zlcb=gvϜBlv:>O(tg(j*K1zǟn䐘<2gɲBO5cъ\5#pHd M>cqrUu7[no}c;dg#_v,c~vy7qf=ݽpBa̪_ܔ3ry :˟>`[5ku&=VDXO݆Tieu*Ob>tQWt7Ct h:>sX- MEx&iN,l`󸞔Et q*UY ^,kճNGYRMlJDhuA ƆBvȉ{nyWWƱP,[QH5= ɨYPPpC3-dx:|U $iy^yw?߿tB!Td =W?!їoL &&ށ5T*ANPKC}2[S-tL`ƍw?oNL/.~L0y˭J#H8 tO YOL ʱ2#Q76U&ikkӆ{P+`TU$Xx7ϜjƐe '+lmJ!Rh8S"({}o~=H];n~k|^,s(<* Dmwdxz/=3?1QpW/37o8țz3P *}F uUjaNc˚XnڢX Vx,#8؂;;O5Au??&iCyOPe3=ӳ óf=RkUkgziU*QTBmhS !~,, )jr{W{(comM/ʓ*B:Ի'`6Twi"0OUgOd՘};K1n@NT,IZZ6D sQD֡3ui*``RMJ(`u5 סzGja7gZJ,Hf{sLzo{\Y_b9 \Pu֨B炧 XwD__4an/Ə+m@VY\Am{;n{<8ߛDypʚ8JK FAHD8)03j`WL/lU`[{6<խ,;h;cţi?@JZ_QvРb^SNf[¯K=[1$^4ߝ-za,C@a2O8Ǐ2 {IM}FӒ:w{jV)+t„Y(۽{çn]3_ΤnY`fuK{3L_zV3sƛaove_QbV̂X_fge!lvb:O0eUҬ'JLos<)MeSťǏΜY}x㝜w-e մN•5VyLXn)+wKYnh8l5F "=Jllf 8e8~מ{2NMb@P?ϮV]漎o Z8!f(0@W=RK%pJg;&MODʷ+QsO6orZaHvC~0o@C=aRt>1>L^i S{E̝ϑVwN}K 3SEݓ_!}¬ySgS[LщΪ:(|xz;O7xMMz=gu IF*roK '2%3a1MvIaO/.+ZZ%S=g:历YQvqx0D9 rMtܔG;+9W[Pgx|F[.vM,zYۤ0,4vTWU/i S9ť+y-ǧ"iUt&/|X18>7f9u|eE>)Y]}dq"gUQ7{ž}#1'=o\3]/;~vf&l%0'K8xK,%'U@隋U|̄MRrĦo9Fd.&huQ%f,m+I '.lQMM]UDbbgչɥ]DvxdQcTѧvSܷ N`%sB5?Z ^YZI f&/v/A!(#=S+~|cIۧMX{  Nuvi3jF$ޑDr#ͭ邨AEKSV⶝8w;/׵IZ JBL`*?UӤ[ii1W }E`\. g{ jfTt4m77^**5ziY p||"n h+C}ņIr4"#QmLAE\3IR ,sl&.{&cj=2INNXHSjrix̪NmCp9Nzj"'27MSB gn 1r8t<#SLM`U3=UwJ>p֚O qm '@/Gaӈ*j:04XbQvaDN72Qö19P:>u%Fc$8F@Fwݿiw>8p6O #Ag \و6G@hHLbv7c !l4Y ~խS+=!0[#4@ē֐iw_pC+Km(];A](` D0@&2hp6D}axV_J/lͦź 7HnD&tAxdCQIxh/(vH?ּ+,{Ski81"҆Hap#bas,g4-pT#p6 (˱X~iAqgسYp)!GԿjsz  UW0LA\n%G. kV ],\2W>ya4'.7Fe*y ኄ'o7 0x+;pAr>!8ox`!H\.l "ۘi/iD.C֌tD\6zv .ܵED\V*]Rmd{X?X wA"ˤ"":;O7j5  g"Flng;@N֫ ^ D &AjB,6ś5ad&䵎>. VW"ذf 8'oF[GK?.}婇H ᖲ–Ͽz@yb0;_BD_LtE<w|-1/"׫p=/jHe%K|ZƊ>I)~oo>җv$\o~ :Z[Me]Ђw1A&Mܝ._T~pEV^"L}۾ [wjnCn+LJϒ{icK7u͎=+O`uܓ|6{*((((wv7ZFbp ޓ\wQÉ\.+y m3D}.x}0 y]v6$tgbm+!sy[koCca߲ ϴnCZJbrC,ֲ0&. "aݷ}CʼJ 7΅ 1bEsE{ g~U8rC%| (vf훏o!ͨav$uikN*^;&VêfNp}x5ǭFTNZm'kw#o~qLЍLa׬X3>w5nC7+3%xg.v /'YNosGf`l&:w`cYTߠnSDӧm Oóu~]Xp_6MHu(0) bw^u|MtkgJ8tpɭ&%@0xDn2pDrWEw}l۟J4pdyӱ!D9lɉI׍Gy&/Yf>Y6J{ 6h-8<8Mz`a`^f{̼ء_(<Zg`:CLʙ5;ѧL1 0> E Ĕd1(.ɒzB:MY׿U]KqYZ$QsF*֡rxP~udlަ U"#6WqSWyզ0_q9Ȓ/hZĔrB]U d9 $~BT.pŵA o7rw)#?}Tj *w 5^:W9`OڡX[g{f"۔ Y.6uQQlmt-Jkn2-8YS$OV/.^H_.2~yrY{X$Y%"R@E]@Ovdzϒ)5VBYkfWe-}ANb*5^֯?l苈IVKyMsGceMA ]R|54ʼn¦8OEnX5T\|e2NSy[kVԚ8ѢL[,5T7-3̃z'Qr( <]a9E-ְc5b:gkGO^hϰqtMWoOV6pga]@SIiAتTa㽽~{vVי̌L~WEEeQ̊ondM9 &hM>a;6twGEAYJR1UWxbCH. /f._*4J:.:V?j{}EOۧỈ榺F[l+.2%) 34H3p\ťq{Dٴo<$c }eoQ̒c|`l+;_Ubۉ_*^SB’5K8EFVbX M\8uz:"LI7H#~SO/irSRD`/;]_q k;* q L._vg| 88#dstM]q+Cs uT_?2KHzFf־ŠX|Grۗ+_knkw4C߽w/&ʒ wiZϜo\f˸`}ɈdZה71tlǸ38q W>pw޹8Ug%OJ{^(Ά !u?*Yz2#d(s[|Z92uLakYET{aZ/,0vӓvl{uWtluO?P;K;ۺԜyU]ˈx4ĂSʛr>gɂq|ؤzo|4SwKcϿ 7^Pe9DE0I&}=SѐVRRTg7*}"'Izⵧ+f#>Wso~++hh5͔|덗JO-omf=/Ѻ=:R?h|KOh-}/O4ZzgfMoehNv7qTc;R=6/߸?62,b:FLmSvS(T~E+L,:`L,nu0D7:u=X7w3_dL?8QqdBзdvJ_|ysd1o<@pB|vVlg>rnyа {Тqf]U ןKifp;{ci5͎}w H@c`˰eeuoQY Oo9+ʪ0xɯa'$r5i~6uZy;~0u$={ck/mݴ T=ڒ/3J#Գ]ԇf& +;wWmC1+_b]SU:&oL*}9Xs' ~؁4sx̠[Ǧ1og,xe,{w|in2a)<G|طj-2~k۠zÌ9\J.}R"\eco*k}տ~`w̏f,M:Ly [°Vu!֗/xqM7 8yv&%o&1)C֦%bO倃߿N\:GmxlǤuiyk|M3^ Bk=,(4U*>4xy E`i,k3XCX]ޯ.)i-#r @?Ðt&шy~pv||nibaxi)"*isS42'?Lu$,A&OrlA;G,M▗&޶> T~x*Ef4>)I!a\Kãծ\$`Hb4YbvXPc0Yc+.Uw1*>\QX0z.Lˑf"MI~䜥dΔHd2LPx"0 P?W;[ܜXHH8ED[Cuh],ړK$ܯSqQ`[ZOԏ,'a2WtzǕ+WҶ%bFwj^$'VǦ ]9I˒t*enc6Pgƍdz{`)XsK}8Zr`cvlBǒNaٕF'rZ6Extk@~2?)V]R1aG/:vbl1XPZa1J% 1jľ}C<5N{ryGv={?P:C!P̣ٗÓ,qP9,&,B,L"ʖȵR*X̋6ݠJg7JXCs"SDOϓKs2˓/"{d\ol026:R:0f_0|$Mnݓ5&0Ax׫&t>`;#R FZ HZC0~]'p,i۞|@Vt)oG^r=3P!zH R0i:t8 qfOHWzJ.4{l6BA#W "KҏlrRtGBBLJ@Hװ~z`b^W",\C 0Rrv?$@ȓ$mt`TvoMݻ8:g}%`<[_!0A R2]}?8) WQ2AX<@MjtpkHFqTD'R*@f)?> !J5dˆ lq0 XU밋DZVғ>y z4 u !5/~T lPρA oo($f{Tzh:bi,/sᇆi )wÛ RˍR18PH :n!E`d"*jG7=ciq@v>`FG @],@oVaD)UV g; ZD5p!h\NfC?nӏ $") (zLHtąiPJ{ȡ~Dlh9 ŠBz7#"!f a_]nK$sdB?2Y^X5gpb9ϼ[+䅦?>vyڻɒ\s-i@NHRCGI!c`cV #P{IY_K܁*k0Lj(˜ t^FD\qJZ|weNfzV\[ҕ)\H=3,U/ ׶t͵,&-zcnf6C!Gچ56tLMe i~YCe'U)1 X s5}% q+Qcnr1k$@H+" Ag=+ݝZz\`Fj6.u{IOQ"JAW-5 MqP"RjIZu0NJQ7=̘V+Ԭ$idug(B&5c"3l.x$y3T;8_{Gv<'E*gFU &u@,QSS02@>t+y}J~R-$DK(x|ꮭi2dp`>pSDPHs)c ^1wKr) nRO04=u/Wtu-]Cm$BJ}I|LBUlV%ǼQ ]>&E!r'fH @*tUU=R Iwc~8 H-ztx%/'cⴔDfhJfeV؊20eD m))IiRZ,%2yCGmRXL˕,$dfdц3=ܣek\F쬻\CmI7F+ Cvr"=Sg&)JfoyϔI} ;t[Kg$Y { Ȣ~/?N̓~6JnAMg@jɞ{K?8׿ke?p/3 ?!婣pnC˿LLoVx*M^8"ě)]eF:](c{p8 5ѿ ]\^ tܒw.iU;P̿,`2p QQMZN`wMSA@@@>u*oQPPPPvFA@@@ ,j6ug =ROӃ!omM EEEECO`ֺ)k|Df[k Q,JG9>%x:kT:|Z6((((לDB2Y2LWxnAw"8.kizrى1v\8p XB2EOk@D&&cDfil01=7;k[·4׏,y1h}iД5D$kdz.~tlɁE~cż8k((((75TϜrdKCȰ偉&poZ[Զ|oζ  Ҍ4ezժ0]δbOUwJe~٣.ii>q_wG'zpP&'W%/li?}RwW~BΊAw|Nj& ~""""po!pX8lq2Ҿ䩤&??|!,x3 !8vƏosݝiJ4$gÿnh#<)D9~_7 Np=ӻXpÒ+e]q̋ bC_{?w[أE@@@9N+ H&- S|/~cO 2IA@6bIWb{;>ՙ=x&6y|PiW}у<0)Iξ>xa¾M K8_"r&-b^vE) D7Jr-FE@@@S)svA lȯhiQPPPn kN`xoO>h*(((((ky$!"MkD((((ׁ9]G"'(((((wtӈ &""""p@';8mAWI\IENDB`DyK yK Zhttps://github.com/damirv/spark-template.gitDd 61R0  # Ab!m(sm`[uޯÌbnm(sm`[uޯÌPNG  IHDRH}߻sRGB pHYs+IDATx^`TGߺ[qw[Խ mP@ !8!F]7ɺۅh !H!|swf~3o1BTT40}@ϦLtDkL91`"F`=v/wJdZ7`㑄It R#/_JE=~nM#r,06fGCuB %! Әxܼ&֞1t SnUPF=ֹA@u=:A?v}IO%[R6wJ):H$qjC1TjStHm 46c{wTCw v'h0|B;q O|Y6Dw!$HɽLd3H|[4hʜ}*ͼ.f|iP *ck b8읒3\EL{e K; QM ?{,#Q5xzz@Zhmc7={.]FhZwFL~$4NqFsA[)/c/$tG ڈUe; /≚44?WxCh5bW8C*fÔGc,x5P j]AB1zHG ;A09nS=-SkA)#~#[e(ei0BG⒒LҵIRg$l Z~Es: Jۙ*P &aww @ܙ@χbL5 >< ZĠգs"hA9BpU)E,pUfݩ s񃺦X)[,2~scMw䭛pzPvSû,KPE&b=;[{,~Ct۳ccLŃVNtxD x B!!{q{x*"ti ]Ug|-pdrF"t ]Gk{taEݏ@5i lAm=6Ax oe6-P 5_b (nD_=E݆{'@ķ;[-6Dͦ߁Hq͛k = ;T~H<~ϧ&'Zظ^Or&Yza2QCHX <QZ-#X3ri.Ts!jNV^AAɚKml8 q. I79C!Yݝ =Nʬ+aaم 9GTU'ѳYLT5OALsWv gJˊ rjE:[ @:RFOJT]ŷa7f:/S|n1hPkj LXW3ɫk9[#n ocG bҦF9â8n]w'f=@<$ѿO\Oltt5coolk~vH*m~δ}j!uG;qM/tq#U9[Ûl1m(?q$iNt.rWH:"|Ȩ{ CKflQ}uKsYу\OK&۪-u׿#1iUXX () m9r;P״j,CvraaΦv_?QGqq0CbNۘsjKHٹ h]PdNJJ?lmnl8p(// i{ϡ"-w*!tAm8#7_{Q4/ctIEf7>zUN"S@v(bvJq@0>#!nI}ϝkPȒï4#EQ5Z '@4  wå6?4R߆%(>&:Ţ Nt♢FIajLra=R%4Z ; ?EeO)_- KT#weE@5{3g͙5vwyu(}̠Q rLQ0hJ42䈄V/Y:EZ k,nd0{dld*3`(cnxyke48W"jTFY3212mbKh^ރ14ӉDǜ;ZG( ?v1I7fP;3dVUV7)rDZ{y8۳ + oOs e&yfjޮ;P=\M+.RRZ\)t׳ | 1xok6[]_VZІt<**Ji0ux})!⭱ݏXբ|޿H^WSX Ϝj\!.LF=>5e"߀A?ܮwvFZ iohR\WߤFpo;d/iv+..[~pQeeUy6~EY˭ELy|>@R%b1:+77U$h7ӯuuz"-H-=+h}=_Iٮ*1Pߧo)#; Y{b[y J4D60ٹp]R]C.Ǥ$eT)ݼ5B RKTsG,>\lRzn^-Ւ"IZ&Y:0I txLCUb9!݁V"pbJJWج`src# X~v^FJlVpR\UcyNF%ށi8)9+őbOZi(h9udMkªVsمM'\ʯ1ˡEJކ~yR0!jjaiAvJZҍޚX^]W֪\ͫٺPQy"[7ؐL\KNJVYə؇ ө*Rc@MI{yt+O֜Ш<3/3,8.5#7jco!EF]SB`;r%z K>'&"0MmIn̽r14%]weDDĦ5qIג3ҫ,;!Гe.@ o +M!;L9cގl$PPZnvK!y,Gw!-_G\kT=,s"Νԩ5+_O,h׾J>کDŽn>^. Nhg6\Ő&Ѻ=AѡyD&¡ U6^~TXؠv֊JrɏعHxTliƖuψ\,Z,]}mp%3sqo0ʤ2|[?t)23rP)g.׫<YFF`B s*-E!%Y96.XCVJԳvlEnQ-'+!覭 MΕ͜ZRfSX:2%Ys䩪B'HhfeIQy%I)i9iGC]i^;O}{m^]X[lk~G;{&*2V___{Quw;rgOn(6L;#d64 "4,\ߞXZΞ=!4! թɞЁcH .wgYsڸӉ9%5 kO_w3Q}DoYE6i / /-$j‚N]U*KgYb%qUtlִVaIi|g3(v]82sKBtDހ dW]"6fM,-M$yy"⦷۲q{ĶܒҢb9EhEm t>gpxd%V^MqpV 1Cg,h 90mPAUbd BaɕD^k7P; т~sfu)WsͫE7Ξ8LUVq ؜%(M1iN2mĸa<z߃j"}t̹X s'bCc9Wܘ+1=kRi[oG\nBgV͆u8=մ^TаCS'_f{Kj5>~>v7_gykf$ɲ#2Da=m`DM%rA@^WdfVg8xl͍KPpsaȃn̿UoeoYYHua\:*q&$JNtivVp?][;Xrb DYe}0?3:KWAa||+EhyTeIf\ˉzpI!φ}Uvg\Wv8 4;C9$7$Q^j w鴺J-5$zq֎f v =714f1v)fijx>[QZYuqRbSf1#]##;C}jr沒k"O?w(hj:\&.n@Qs+͆ 5dܷ_Ŕ˥utT$RfHZB}v[;;6UVVon%:pߏE;#jⵄ/>$))z`_97/6mHwǞ裏짼F"kQ$ Z|s~2S}N]ƛόm]w"V&4 m'?DtL׶,\&S+k[j O>QQ\'?A>*p㑑:_sنwtzY NǂJ-T5@ṹXSd#1ܙ F4U'iii T٪*|Hު6ibWguusuѴZٞKsLamK(5ZБ['XZ&͊ʲta67"ގ - k5*5ɒK휜T*K`S6W774)uzRMsrP),9-q>E;T:&[2Cc6...nnn.6Ujq9J" H$kJ+HBk%棩 4M=7sU{Xڤ:z8vĺV ]d;w3EA)"7oo :[-5[7&ipnw e?Ghq{}u~䉽g<ٙ啋>F1<DCmQbr׀A\ s7`PCUme5m EEs8kO[׬3x4B3,\8뙕]e2ăQ j+j~K/`8'CfA^BKLYh3+z+TwDmNZ1łg5441`ހF4(|'3ȃe.:qraȉh;&SçEB4񲣲\XM"˙GBNGZ9xzHe!"~q\Cǀ~6sݴ3nj!mbb,~JJ~v#gAhf/?mEnsnw66MGdWQSMgjll@zY[[vh`L?w{q̥; l `;9|?5D^r%^B;zxwYOLZssmiRȵjz"Fc{׼ [0Cii w ">>uv;3VQY1 Pղ/:BMJ&KKMV䙸S7>AS$Ro CЩT49B 2E,؏f@aSVXE\W/OOOOo/O[>L@;~.%TMyZRύ/5N'uXJ5|^d7.0QD:ĀE2 bꅓ0?>oŃg[֙ ?PD\[yzښ]}y-F^/4א/X|ճSIrxhFD,0U-@o8bd S*iT*Z Míu4ԅkIgR k]+^sE*سsK(euQkB^~Rfo=;UZQ&a$1uycL4 hVz t(%5g=쌩j$jdVF)kѹM ]R7$:NN=ėHzz'QZo̴CQd$ARk둨bNPPKc2֦6%nj.BM"LQ)|"4u^n,^<Ϟw4ruk 6GM>94! A'$kAKҷF\Xwyvѳ]͵xf S^FT(H,I]fRZ}֦rА(]<{v(.Er}CPZDoa9u?qkxuuuygO5555fƯtӦ^(3#lgO9 MCJ$C4Zo_ߑcƠ^4 ihʺqnuT&w /8%.>¹ |'_O3rkVfF=zur *|>Ԉȸ ~~M ã.Zi 0p`FFFsS(-)IIJ|fg.ҢXV=t!Ho>""< O+{jmaaV"gemtx) }0w߼-]αR}I[ڤZcIKT * N} 2Ty$AyZ"yذ>hQ3E^^^&!4ΉGBFL;M>vDq<}tuub?tW=uMJi.0(< {Nb(0wtaT\ct bu,k@?^{ZOP9PitF."+PFGCBG.D*ca!diNDo-,9g&4 TGWgBkUy;1p(WKW(1A9_`&;÷Q[ܼxfKD[x ˷u2(UdkKAv#ĭ:u:L1wZ;E`RRsNvʒv~LRR_ծlaage.*KjT!#G)AQ8LTQ(U3i0 ! zD`HO?oK):y8qUmo6v60ͷ-ll,І$21qwqh0-8BB#9 2uqqbh)5:+sqfљh%F8z8Sٙ!ӇZp5@| [+d3dX_Ɯ77|D4+tpwvEH 'g62z`!Fzx0(d˘IS:>K@GM8p䘁i:F7++$N~ʂf[$5E5Jz@>Bs3K>L g+%([3.r1*JCFrQ`a)ݯL9_ǨӑҦ}r XY- >םTb7BIФ6S(W._~7#|0RHս ++/ ߴ3ѹ^9.@K"ٴa -;*).~aJ{JKKΞ9om7?A)#qV9b7.U"A/2XL"F#iTä%baѐSZC)/ 2%1#N@;(dd^#:eѐLvKЇ#p#Ng1wi?PQ7h8[t)JoAߛ1bt]@zkqz6yXs2᫕;Y׻,މ9bƼtP)i \tZN'cCMo@g2I#i)`*|J5Ƽ C84IN%kTJt-* FuXN Fv3&AT)U(*Tt:nNe-A ط aA!TH44 GSP Ftܕ mт2C&;8 (caWs6@HlTrMb@:MK?0ԁ^y4 IGhhd-KovQC] r%&4Ґ.",9 mTgggfduKyy #ʹkijB :f#FG 8^tc9\. E lcƏ F> ѺcUM!Fx"ʸ:]Z}BFՁu4WUKXjTng͌ף1wx\FN;Ӟ/̼LaЃ;nxGT;nA_tMUySvA?gȘ~ 9Qf_iJ 04Z[Яozo%+ _a;L -ٸُ\L;bSxۑ_|/ZMAa9lhԨxLxDVca ;RAKLd<2#3n4&&h(o1SM{{vh랿jXr2qmZu:'uCh%!נq~;ע&|Y1,<M"s۝2E.ҧ~j%cr23u!AcchaIz=4R+%Z/ry#GFJ;{cƠ=M|ӈїcƍwswG E-hACvByH!F+jSstɴnx캭/4 Pli)2w-GR q?Qu}/Xr2~+qduP:sj4Lء7J4ɴCݫ/Cq>%{,}P3Z(,SZ:8+du=P־A[׃*у[z֡Izf _(z?B~CshR]ink!xN_OZ  1 x ܯ[0& mo#[HF$Dh7Iv vH @'@@z&knno 7m䆆;8 u ͱ3v(-ZC~ٳ'`֠q^cOn[>  @g/p&@[bC@@3:4대x{l@ z92k @bȋ `(<@>"@b@A1 @^@]/(D0 8vP@ K% f @ @ zIA@ au ^R`@ @A@ @/!®$@vP@ K% f @ @ zIA@ au ^R`@ @A@ @/!@0 ]>zrH6hT3w< [>0xvLKSh);v:VNtjy |ηS9>挻W @'е_޾~޸ VG zk۟2w /e Ň\=7JͯQa^}ţ|(V_?r2>D@<U$yJ׾vc$I߬2(hAju&Ӵ͍ڪՠkZmgנAߨ/?iu:=y, hkrFwO%vgˬvooHk5(JYM_,lSu(;יr[ii4(2t+Ӏg)x>\ @W®"#Fga7;7~1} 87Vؘ͚>iʔ9}]GژƏ9nܘz8$Te]2~姧/hQ3RfMWq9G/y釒m2SnC^~w1_oX9CrLUۭZSlyi֊/HiF7v̸9}Nڹw͘8a+vdIWTojo:es~wHjԣHIEQ{7wfM>mG*En)@ F~;eYh<R-k+ɫrY>]+*-KΨkҚ䰐!=غ/_+F& i͹xe٠QmÑJR#3z/pJ.\9PpgKذnQ_ucIūŒ6˞s9iyܬ蘸ɠF L6Nv=o=|&fR%1`rD.i-z̵Aq1C '] @ Еǎ1&T)a~aٳV}cT| ֈ4Z*y(X*fk7|˗jH\&CXD*E7~8zr$D"&X}Wy#9u ֶVE?u̜]K.}K6-'7T)K o._W0())uhU[I"7trca(HJ؛a|s󥐐a)+:-5ENlTu %a˦4\;HxǨ3[us~HR M ኒKJ'NC|%h|;F1d*kc2R_TfLŸNNf9{<v؏9}@g]{eXؕKs59i}MUx @b nI9%WsB~ͫO'H* Uq%) lYc/'}z1ŵϰQu-Ξ˫Џ3gg{U3L 'YsR^O捏vW]Pq؞篊~L'8x2_m,+XraZ3aV|v9OUƆE{Rɀs6WUF] OL//̌t/=_6`=a{/n9S\}5:I>a ˂^Tg @1%v'$?RQR+F/[k'O*ئrxBqHЩ81skf9ZV\ >~7'IMFA0v4kzKС)y1 1휂LwBxY4ݒJd^>V8br-#,Ke{Crxxtr2Xz~װ)W]=/$1YztBFzRBA !N>x%c(FbnNIjeyn2Z98)>}ԄWPJEL{sFqc-W"cb%\S3}(cZy [@ Egb"=4r j٣0 1WU%$k<:wm1>l+3.Tf>pP{"-1;h%ۄDRT@a ևc<<)>.`xuw ?bDf#4~Mwg򚢺v7߲fޤhAw@l֣ihD:N#kӗ q$n )K J++oW +l|^~/Cdž-j,/,lmW+3O^VMk4t"Wu}߼js|6O\=YNlBFO7򏯼]yZ)v}qd)̢w|;  =pq҂ܝۡ0ޮ$1J8-LMZ#dF nJ/\ȴ kŹ?  ͱXÇ,Îq*iKyt7!-$ VXٸ}}mN:Ĉ`q3&&`5"L& x$"8(Jh1/:èoo￝2@刕/Lu<{gSin.}Ɛ+/(vE .?Sq9$cn<˼&VH]z|WH\+Qcn~ShYϯd b;3rL @!H%.y MQFinc P6m\n9%ųv~9Bs҆$ ioid`(; WxZ`={tK8ҹu*kG=oHDps-Q[͛${eZFt $" iJ\3?mW7_,ݿ<>>+A@)-md17hؘ-1?,@ /]mwԠiil!0f":yeU=F8\_aV_ۮۚ˛*DzųP66yf|6hA, ;sLjUmU5‚5h(t\L[ϲ&5ц@ر꺪:׌e*КFMچV%ќnш[Hs"nnRS8B.na5Fh %Y5mw/KE#iihVf|L*Ut m{m22d-z:)ǫ0!7@ Mn @ "pס'*@ j @D]o*M x {@ z,Ј]P{^ B{MQY#ѿEwf#o,ϫVdܾ,5[sp$$  0VДg%7k< sS1<7#Zӯ2(Z3k #t QfRbem{htaD+OKHU0c\Кzk?v hn \@<0]wY<]WM'pU2Daz0dŘV*Vtʑ^*(5ҠB ZAiJJGQ+j&;~=QmoK7zЫr KP:v>6koBIYULĔL*;Z6~HFL*QЪT  -=pXu 2J Jm>pL=5^D!!?Yh Yx`E @k] ;iUjpz'"#~ȶNa_;rqo~~Mx\W0ӿH~ȑ#g.^\ЀҖV'|jҨId,z熯?~*<0*d2:uKz >Ͽ+ -_>r?n~gNgZPV!Vɴ<ɆHa#v0nQl8$CIjx ?PxL:SѣYp$]r/UtN (,_r':y_b]q؉T֮Xŷ>i+ :W@ xTv,k@>} u_|5fm/.lӉU fBԊ=[OJ~nt/}G.Б_Jqk[IZZ Z< z\mEi6V|KJU\?d99#E9FB&~C,8D*P{hӎl朄7]ȪɼP$e%J8~'6~X-:צoЧ0Xu?7lpqb,_믾av&7c:Nr`?,Z+1@ ] ;Uϋ9ߖWy_^;{ϟɭƿjYS= '$U')2gז̷GÜad: ht:ͨB `0YxA4<*iMk\`֬>@gM,[r-ЧU9yCWxe.KLя[rάzY%%?|>:?Vb?p)~:٥KXhsAթ-,ZtL"4:t-LYx@GL+aWx9 >߹Y*Jڞ/ٌz2Τʉv)/5tk&c+{?^ncn׷&&7)cGګkE /NBK!0\v 2;%1-H$c7UA#\,y(ZZhAʍKooINL[qY@aX \\;܃U%3QIȩsW7''ggG[K*3:{:ZH&Ї ȉj>UOlWgH M+a6D6܆t]pxՃOv e2Z%aЩ)?k"_Cm۷y8b[/X4]nԔiۃuhڙḾ)%ZPj \" zJ&_V"xg6e rB*EнRybӷJj x/8j5f 3bܬG^Bg,c_ݹ7Zk&lmsP~ qS5(Y`Ä?o?tGUR֝Ow@I.۝R Aì/M ˮ2xW7 зdzQBfo HEFtHhc<{00uNTljk+i7:U'y䌫vCsjAdI}Zvk>l]{fxxgx}y&o(%MgmcHMN8ȒRm}4LV"siV~-ŕخ`iqٵ׷sjC^f:`rL#+oR:nZ^ѬC:PJ/IԶͽYٲ< W# ŵ{;Bս9ndxUpj8Z+?UC:uh?@iw̃V/\mi]zZ83g*.W*hDȪ4K+5ir lK% -bL*pWL#W@ лYʂ!h_)j t6OO˩$7*ej=V'bhipC'| iŠ ax'Mݔk%yOlM2`:Qh_Y?Wb$?L0 6ĀHD6c(ٸјF;oa1ybލk̬mJKR̳0u r+ZJ˚Jh{rNEmϘzZD$sȢIJ7N)H1>fua@UJ0uY`LԴpWlCZC@’je Ք( 2_8FN"91dǥ/7`%=]x#d<\ ,Pk2a"7"9Ye9}y#qhhi-(St6k}yYGq!mH mjx8 qV zMDI&TK,#u2vue @Ga%[2ۚUJY`>@@鑱p@ z3'Cۀ@ @ M]>@ nGom=h@ _JUʃEߧR]"ǡ?hۃmwTq;Msݢ InAo%5"@J\.kߧ@;@ #p} Z~)%30˫sڥD ⮢icv{Uq27p"vf=&Mlm *Qcì-*v$Bk6%690Tu-ORQ)SE6W)<-9h< D%oLIW cYЯҼU,%EzLLEPF iekO+ dLUEb+ ƛ eJ7k1vѷ-\; U_}1a@)^qC@ @o&pgaoqX@2a3A֑v\i nKE$4Î3,{X]Rj't F_x%MC$TԶstsUZ̊=R)^y@lk^)4dV- n1`i,B;uR'-O1f'E~KhO\i6E Z~2כgɚ\VRgdl?U]fSB>Q,[2݈]פ~eQ1%iӿ/Tm@ PwkK0`0NS%%,~zbEO8'V{Cc!=ߵƊ5J=Ǧ7;m 2.tU"U(^LKnOrc?v_1K)ɞLw>99BzDs/h"A&<|lޘ%;ÆnC`1ҿӅi<*GUmf/ ZՅ䎄 4HdO}`5jn}% \ Ly fz{B;d @&pga&tKۍ+.8Tc(XD>th&$jF&@Ax0(`!aDRjAo0AoP0F[ޮ0sqt\'[JzS2+(Pt(L:OЫi Ïjc`#36^њծiB J6NHPPH(܎̜8@VuHdͷV{ ; ;*k?7#@ @ @g7ނI䑥a}@^zl| k5c|a@ k]x9E-J$G!E2JkkDG/DL TW6(q[d#MeTɯ[&nNm-o5Eo-'cz U"k1|~_MNj% TmҽMI-̲'/j;iON:)C3o$g9OLi?@F uIY-:;c3x-[3+^Mh.k9^ӗS^>C|0+!b> Tu8R_Z_g!flلgKjq &]uLD̖;pGiMCqzaon$4șMk_|b,BB2F)?:P)u27sOsu >hd@ ]cgϤRPI9Y]<ݻp\HP$&~.,DC~Yݖ 킁65k*?X$N.m02ŜfGl+@g,k}618 όsrxspd]vR𛁗[R+-z3%yfG#m1GA*Ј4tX,1URI\@ Uv2a٩z&%^) nWD1N(zCB'5Od5nK+XVBD'D'@*QkyJO2}?_Ll#QtŎFO-bO)I M!d:1( Y3(B{3!=>C?O:H91$:u2ѫ@ @WNY xLeZd?62K=it*\4Z#x[9>/ Wpa7KltT{û'XXwz LHuXqXN̦&Ҵ=Qߦ3[34ܮSV-;R-J ˙RBTQ^LnLl5CF8I1EYfs >@ z.,,$&*Q,<ʒkPd)iYR-WڜV!i!]82٦kMr?:ubЬdo[.6iҍ"(Ë[2d5 җ5eKHt< O^FB+}ylr_loB.xuG9vD6П3]?3y=2X@tuN1u* *=F!`: C~8΀_o#Pjz [b7Ng4"LjDZp*\ic($W (6"8kP$iBu e@^F 8+V#Tv^ <9цCU2s@ #O3e" `,@ <)®@'g?C vE1@&@ p@?C vE1@&@ p@?C vE1@&@ p@?C  ;-''[d2U[uvn~Ts[,7+;7;'Wy^!oOݼנg)i((K32$j_:iifY   K?3c j@vx!蒆?^xujh esO9sƴK?ؒQgw_e=^n+ i;?W)Ə̝7oo} Ux+7Z @\E |[׷~5j%7r _~ttWkNbjE-Uۿ|/nADbjLO=ef &heS漾iiCM!1{adiBe_@~$5ʑEw^pb3?9,(TQ.6ȯ'7h)4 ?*,mF+L)o R@ @g] ;8rR 3 mIRH\N?ax'Gٯ|tB2F4v1F `0bfkA5%2b(BCٱϠX Et.~}/H ̤ߜl'1\l(ފ;y?9ߨedbLVU/h WG+VOQi1J@')j2>)RafFhmӆ^fYʳ7hK[t ;-`0q hio=uPa@ =] +QE 7my2NE<ӆa5\l]ZFcz]'ϗ-"e?3 !-;>&w&쬬 yoNWVg$RJDLbRy{UO€;-['a]_3L0#Pi$*2"A-t*8%X8eǠw־=[gXVwX|SYjejFQ}UIqf~vHBbrRbǥ!@ (E3 L0[3{/6m3bsOhl=lRm"%bɟEs:c ~HI5nؐ#o9#`q:/L]ګ_;_[|{+XHfNֲ߾\Ǩg`iFŁD"X8,{jiƿq+ѠQ3^yo}36dW&DR y?|%5kT$>Nj _go9CՓ}їvq͛. @&@@5lۀqC__3'İܰ )Uzɓ]IfkQI5~C'xZ1+ɖC& vՔ54XI K\W1,cgU_t%6Q4d8 r4ǏW,&NKk 㣲5CIg-O~ K CL k3FfZ#'蜺2x-gKgCQxWOKwK@ uwvO!U5Bd?Zs{Łn%ݲ gm|/>MWnqz:[jbV" @+mP|ӬyqOvVZ-{ δj[T4UUZTgfK@ Iy)"1:€1yl|Դ7S|W5*9< ̰)] xz{ N @<zP2 @FCC  @ahyCj@ xh@=41@ -OrN ^ͽg!`+˧l]+\ @}{H!@~Q$`s R9"HkHwX\#JX̄Jh4l?y2yF|RD :TߐWł.jXn ^VE̬;(쐯N& B{5Ƶ.F= >$QKHhj5zA/^M@p=B7׃{hiiAj) 0D*L&s8F~Gr- SZC wtAkӌ Ѐ<2O |d *Gu\@ǜ@&=6@@ vP @ KtWtԣ>7IW!q ?+XfC.[p.Yy<'i"]Y+ݛX݆a QwlbWǟ[;okOfk_Ȱ$|˱ʪxl7iL<}=9xŋ͙zւ 5G=Xt5e`.8u+׼%3YeGظpr֫nZ0m/v: _Uw#_}wB.QT;Gr^o.yfʗ^zaټ >U%veidhB$]]_/zc̙=ۂrxwwmiqwݾ?L͇_}'6ʷnNGQuDK,Zx3s~Ygvۺ'1hG|wΌYotosdSBU34W6V%O_>ן~ L9nkǖ?6~{jE'n;'נoJc$SHׯWCFoJ?d٘QlPկz3>- kO]+;x;3-]= BѵkrQ.';[ワ5Ik.\r[%VN*Zxؔ<%$o(L^rt:=Ђ^vҼ/9ЗV}t91IRg̈J{I",Zr%22-4JLus&Z{Zs9EdK+eɏ?:Inkf@/+N]NKΞ.9zZrt}yM}5-K2%s%c[qO9OzZŷ`Ge\aYť1W lKucѓ3J\Eur.=ؙmиwCQƝ=v&RFt%bk .,-QD3w;O6UՋiiu^>5abvTtLBZ5Ō9 ^-g: ΅T5<g;X۲8v.ǃa֘}ºvG/7FPgc+*G/hNR/:y]C]8^\*9".(`6Q]Brs@1]N]Ӱ-EW7~֡v+ߡ'Ƥ4iΖWvJf )͇<уy.CkomnI,?qjѥU5sn8>,do֘!;Jm f zsls?*1_ln/ԅ`QgLё_[:9Iְǃ'kTnɤ(8/aI&e~g5)9%[DL`X TU@@9Csrcڙk޹l+ix&1WUXxE7ʣږd\b=l'!woΩ :e5z/1/<879+pij|թlL&de7*>[Uص矾3;㜵?o$(8/5%o mޒZ]_Xpo-~>y-jj虣2ݭ |K&zM5bϝK(J8|&^IuuO 9]23b.Vc3ʒ:6rkSnex{W}lsﭘ?"0IgӾHռك*o=}ڲ A9烳[l&o#F_pɬrYG~Ur,mҙ֜zo8dߒ3=N$ȭ.51v+ /U'ܟ]q,8nI7|I7n7(Ν_ͩ.8k QIuN* <ݞ:6igRFnlDDm|K?q弜ԠS-Ok.Sr ;3'1'eRåNI(*q:Ķ><^XV\Jsh| g(_|a]WW䔵8b%MiEٓF)XNđ|xa=͹~Po_D)\e"5cx_?ڼ/-78꯬۴56(3!]բPy̋2OSF4[5jmN/-?ͬ^@[{Ƭ+3.>ip73NsgO>ϗI dv{aBVTBgU:hj}OobRI^vvfC=^M_r㬁:r i1E二EHr)Ϻ5lycԽ2FɒWee׈4}Y5גfMq9O'祦e0zI%u1䩃2'06Uyi`ԒG֙i+/S҆Yyz)@_Gn}a]}`3U_:i'Mޓ^yyې97,:i??sBR[PSu"&gsX4UF8s֬飪./\udRSգA.@@T{0"u.ףs(T "f@W ʸr,I3vٳ_9})LTۤ9Kg煝/l9BFO$/ pyC"a5#>t>aK_N}j2&?YR u)U6o}W`'C~lCЉǔ !:սFM{<ʏkZW4 /aM5|,^c`dW?җ쵏}ق#ݳOʕ9ϛ;wl迎Uo1{kwfʇ>Sh^l7o&ЊU&fcaGwav?;jov.WS(}g|xSq jsydiG<wg NΖ4ЅAglXѯ,-OMix}fzORKZMSfZx "'Ѩ~<~ʼ}ʌYK,a{;zzͭY J3Hdq|CRslj??c|v(Cus3eOW.]Jo;w.gVU_aO&:Tjys{6EwIu)Va `b_-d5KM2Ytm|ʳΛ|4ؚK.uT%V @es[ڴja#gAVIgfS&Ϛ5sG.U |y\hƒ2&+8t=Y3ϣzՄA/}J#1J;xٺsQg J T:ǣ"sPKrc|k>޸6F6LikLu:ߥ겏  W&xNX[_O1 taR5/yefA'2>׿d$[?on ;\dÙKᛖe] ,)/?ظBXLRˠd2ޑNzڠ~R)6&Ee4Ixv-t nPKmBcV 4ܒvPV6=R߾ڲlR+YYQ5r5Ӂښ&Y Zӕ@{zY*"Ea">N"izxC2%ӯ'lfN*rTl>?߼_RI.=_$k+ 2ъjmj \D9 v1R~(1‰_mR r¼TtWߚׇ~_?H4 m$ǽ=4 ZCRJ{そ7_hh'Pضhw},("\\^'[Uаf@?VѬ34ޠתڵTUW5̸zc#oꮰK:x[.ՋUfB+| r!1ZrdFuЄB]Mp}۶g\'s<<|}3rĈxȱATʕKZ?;S>~{j;~?#G`0t#C$J촅y\Ai[o.\IXGkr7 ZTktD"gym[6ӯ?SKN=S+&kUR-ջ#|mO Ĥ JBCIWW<J uWhTY|䮯wrˑ;T*S(՘F0h3QIRrzF;}>eQcF1bh''瑶n۾?Ia %?ر}~ _͗~F5k2Y@\+aL\q6>gN"C ML;._TrA>ۉ۶bh! J|3Ǫ0hTJoZ GtҔJJ^[d4yt높|V#nR|v[G3EV_]t;y;M**8ɲw!}~>nnaDo뎣u2o>}~Ȯw^* d8bh N4r%BwH{&I,W[zWe/;dam.MmΏ5jD3)J39z4`4-6lR]#0Tr?"iV_EmB w5w3t̨'1_lj. v]u>. /+4&WA30:*>֎Q#ƍ9v8vΣ|2;r߮Tlٛ11q+uY˗ۉ&W=?Zm6[KB n~vh׳4\z3G7{k\Flݝ- %dc&n$(,iY6Ri_8~Rn8 377+ېώƥհ¸cGNʝtBSIzYl%  iɋ^\.=ӃK 遝͡K>x]lFZ1-`/c\ :z|bCjc.J*F{sN\Hq5VmO}' I3g8i7aQdxCP8>>.l!7c8> %}'i-,ԮXWl:HOeQ|_V~='<~%iaccxxؠbWt!1W]l*Xd>n46ٷ;WzGFdx1 ~0t</q?{+2ž>oRVdtW8pzMF  ˆOhjJ +:u󆰣O{ w<+ -ѹ\ B D9c5٦_vN|NDhiPD|Ǽ{y£,Zt#?i?NZ˚#JhRxơ'#HR4*޽;vW!54Q jf'Get61l8]=bKIͨͿ{kbap뀚 X\3gykY= xn~ʓ1Ȱ_BOjVw?AK:jUw?IUu1YHhڸ)@ ЕǮ6~oSm5E3 .O:h7pz_{\yJLFa-U@G&uAz=S]Z֢tqV&?֠08[0}i|dRy;E]_rpC^5uSٰdaN BgG^[d"amvmq͹BK.UYubHjn ]ȼ.TO]kQsImW"OsQUW_fҢg\&/Wہ6ّ5_LHN/kvtb#ֶ_ :ߢĪh|ܭX{rtbyQx٘ܒzKWٻ 6w҉23ljÌm+}exWn_9$ 33:1S -蛓I9Y۝)3udOO`ϾH-q/,|qCB"e[W)1!!!!!!p0gl 8u',G* *RG>l ﯵ2ۇFGg N<|;% Jdscn隉3Rla%KfMRs#G1|^iw}s͈7.8*#F9bȸV9?~۴且n٩Yo|Y6srkt>0,-ehZ^+il 4yai CrofRL7}׬_6}@bDG3u+7jqa}GoNG^78fڇs=7jv7B,XCMiАӓd^1}fz^gG<Б w.D|w`c ;s?ͱCktؚG"L.0?ݹwN6oсJO:B6 Mfg8Gyb GM{⭧gStw ;?w˂|,';kҢ\eg#-f^o&b6s$ևǴOyǭ.UdF651Ry%%l؏k|޿ g(2gâmk_R)2TlǕXs85i$ݛl~u/l\&՟+ |a |&4,Z}2痂6b]_?f\HMBT|v4Yx׿_ۮ3GqS&&ՃOKPhѵu)1@_nnd4& t آw]k78`痒_{`6o=+޽g qnzqn1i B|MN M*Sne$GA(t[L Xg3|i yd9pьlɒ%ZQo/s烈_eؒ |Q Im7\"o^& | ")Sv0] Eb|䉛Ex؋?,×onϯ+!&]WydKxS 0owV|Eq>sOsEpppppm8`'zw}z/-ls 1iC?..nnZj7FP7 2U5g>/K-\y Q lTD {{fPM0ӂd&mV~4(ANR-V,^xsCKvXQ>({.n_[x򩧞z/V`@tغ; ь#\k<& |AhSՉmrj~Y݊_߿-r 8;g w|_~r].qТ=Qi^ru3[WOxpg_p#3F^!KXld(qSwc^umboԭ7;nዷϸjR!w$r?3Aۺqݦk7f>T{n{3hCw{^UDW:Soz3zO|B'*%C9wo[ˆç=N4$DLMV.c_Xp7^zXHҐdeqY H9j1c&L]TH찘8bLҢTxCCCCCCC9ӹ:kpS{bwWUa•ICR 6op|8UhP>B4WvCjVl>ҁʷ-UϮ>v+NIg^jo/}~7.[ D"͗CDE\rXñg8Q|?pbO_pppppppp\&ؑ.qY ,)%'ԥ48v|r&&8#U @&D8. LmS qF=CC<cf}}ɐImLu򴩓ƏK) ui7/fUh>tF1UmZqp> %Rý!pn>qī__rglYXt Kڹg%YՇ QqTZj|9+w?ȇ ݸā>aSN;ipRq$޺1]s9çͼk5~圵Bwx㝵翪S㖏_jԈ <\ǭA/<~ <]_Թ1̒^q̄i7x5FߵWl_zLnu/nuV>[9cF͸]<gA1f/mO֝=y6fغ1>:xmW|; :C(tӫnK#=9DJPH 9z>_f[N F#K?t f4cB~ݖcʤ d}6 ]{Urg~ѐWfLJ 9V,@my5~k&sUZU7 R̾gYxH B, 9?|u:?%16 +W]v(ȺRWg?+kr6:jPek1pp6%MUCE-A2ZjI?):у#,BW_d_߾JI!+̜cD :|ݘUh pN,c֮?]&e_=k| .5Ȓ-<{}#+?~% Iˁ_|a&*nXeiН}+,´ĺgҢ5kޯ1X)0HAd07FU-eԐͿ}ۊCuARpW}rsIP_}u|PDJv۹KFm߿M>lUv\KC9gJ9b:1J]eՎR{zrQ˗[ !aOuCY3,- [msRG]͹k?NJLEf˹۬œ7^!C-_EgRuڡ3Jng(ٰ8c*EX 2n1adR@>nAN%e`2_<|tyΗ/^ޑ<2o/^!w_'l{*!=MNLmJ9#yq#5K '4۱VͯA)D>}Rm;nL8}gkSx88o#4qDt?n㪔ar>e/[!\3,MGwOru95S/+8 zKW^;' 5̺>h:h%CH}ts꽵x KR[隂q3JtTMx?vAQ%y1P{ÞEnVs|UI6.9j$Iʥ[2z2tYmYUyk?u Wk}U۰5ᲱÖtw &CyABH, 9͎jMPXXxdDDRv>b]߽"T_SW좬{[t*g6b߇``GN-F~Іå3}0wlT6-6@bPԫ3E@Y/k}|zR?*V_YPeæ?x57y3 5e}7Uq[޵kp0>k-[>o]˺`L[w]>͢3o{1Sn}'RU ik(=Tn_pZ.KfV~ڽ;pQ}d=E~p4/ GSCBzB $75. qT*7j|߽pV-Zt/ỵۏ$R1E(Z8_~uOu;sO=a;U-$*T(z_/]dgOkt.!_2y?ӝ r>G%6>p/Ddr~ăEW(U)0?ffG+u|zo]U_2}Jf#D2uw kk|U5jR^"Z%ErGH/4/S{=I-u8*)#$"Է|8#~i}ƭG}r\$2J.uth4gk|P(||ԓ/[|& ۿ`5KOQ{wN~푼$O--ݾ#P~{-iO:R! (x%u{J5|}F`HmU(&ҫqmM9"-]9Kg=zSZo<"rw{>Cn}cT9住^}u罏.0$HM´44mU(˥lCDzڔqO?xàİW}rd$P1ѹ7tk6ywq7f«0?}UþjGҮzWQsdkgKV+[VM|P`Zp{54hn۝±78$ypBE^lˠ(.(jkdP .Bf0V"׮IP9u?ĺZP`!zUABcف'eަgN8R4/DPYi G)E&>JvmU5P`,%&3?n6ŜDtz1{.T cn2= 89 jxuS mچmGvmBrg @pEިvL!AN@B9K=-6 \',{3pbCP/`(QX=p [ePb=f~{QDǾyΜ^yjU"bRYo}Ǯ,XPnHkůܿ23*@Vݮl]NXF2NX iM< 4؛hf B2nIir-ǨEn( ˀ:pnw Cmf/yyLx;e'SO!]hE$#o^xVvuT?]W|`ɳ#_g6XT;qe'\Ϭ F!0~hؑLNpHe%&o۰QX  : h7eċ-|[m6[ w/0Q~35]|ECUQQ쨣">(Mu1C{$(c, ( ?i-zwbG0SQi r*1$6%V܌,0ȓc'PP e3o:X|Y|;K_|}1#_$9~[*[;DA <>~> Mbcc <8<.>2`V 3-~G5PѵdԳ\089m2[ힹ F.Ѡ Xl"CsQ]K PJ<H$"ؘayػ|]v"?V'@q4t3/t_ep` (ھ^|=9f.k|Gu'V.x''G4* c@6%1 O?iXd|z:o?3~[-+'>(طpUlBHD! zF'  F=6p O<=/|ጾ~Ds{՟9Ԥk)oi5*!cZaflsS=Kb $eXR_=-ۡ|˭t3읅=IVьO ]bJT e5T1뭗_Ɠ ?il4;oۋGJx04a؝({ّf}r"=D.78X%'%{0踂M{mScCv@s9& ˾q_l`a?@>_e2zP)Ky@}] 5kRsy3n5cFLJk*mch) 1eЌ`[+=tHP6w)#T"#22%}pp i3w{(ϯ9fL r[,xԄČX65j5ei7PcE(qi59%#=IaZȘycxPlkQrCNGrʚkI)J2(0Q=G(x|Fl{q~v NDKfy[3Bƭ ^)hׇ&-u8G9#&$jTR2d̔)V2[oN4Ϋ1N5L5&:a y;͔I.;=?{p B"te弤#&&$&(ZSİBʰ]0bèQƒuuZ4<)=LɂGL1iX[\ۑzo<}u: A)E*z8| BwA/ JwWos?0ltXk3SM킐رcƅ+5NaqMYŵ-A׾б1~DQA[1, V؂ïpuBdđSM9m;~2ܘ1 ! >eRj**mhNe*na~K4CC#)~RfUפ[fv䉃C- yFлo˅CN5DSŏzȈİKS| yD`4*Jx腗 ʘ@:5rXLxT$ njG9(vلF:&B6l#$]9v3d=J/ݚ"Mu lG0bP9q:r̸DG] 2[o -mЊӮJ S^ O1WhEf3fu5G|7"};{^i r\dwEi>qrp0*g@dv;.OɠU!,@0 qxG\4. I{HJC5!bLRWZ;.Ɉ S&NW#{Gi.Ӹ9Ncw>(䙁;4v>+X@:i+mwrqppppppp'g3B,>tGC7.[D"͗CDE\?PGX|}G(|YS.8 *ʿ[Eǽ@NI)hRm|Y}O 8?}qq D-p'n@$mx@$#sxlာd 6^2t6P^|r%p ,` c6|,`H-g -@3@yo\s`N[6D9\.8zW5/BNpJzu@y"an20:PE8xi6Jx7^7{hE=7?ݗo[ћ֢aix3η#%~ķ ] `_`W30mq]qWrEo<;a0DpJ@+#1z7ڝn_l8hpBu@x64&r8@J/pe뉁 'HuGu̲2e냿zElZ6)3UCIN8ΫCΓ0׷vINBz?8p.B/(γS'˺88{@0>V]'=I*pяSI5vh0׺?|hxqAqAP&>d0x42OgoOECP<00H%}y! –!"| =-A˩XZ=AheA*h#eB6eg4,f#QQE h! E#&JOWe9. ;/O|.zvp_fAmҰx!LUU_#8 8fh\^`K ˇ) VJ[6#B> >ŠQ{C!,<SVԶ ~ltE#օ(9+*?O90$qѮAJ5ܙ4߼VBG!)5|U6 kPp]3aoTAaH{]RxCow6[TDŽBxY(NxA_,axh9@C0?2(voޟݸ16+A^18ZM-da^ծUmu|}uGF [O@ 8 0Z1 '-iY[RA)0#+V._D &ƊfyEPnќoE _>gޚ윜k'F"l9۱xⵛAbԾwo]/A&cȇCK7hUz`ORP! B˹c޿| i/W6dkCEH,wAA'˶/ےcCWM;[p-}>GyO„؉`KBCTcϿ,Yy|bcsn+V&kpp!y^"Y0`s{qu`1se^wtױUI#Gj#g;`t6zO 6 *ڔY\q1gnsf"tGVZSUx(kjn_zC#i-\lcy-,!FiӂT繼BG}w}[Gl5 aܷRIOn>O<_JMH@P*V2EmFvQLIRq\ O 2mZ!r0,PG2:LK:ּ!{ۡƣX\yՀfFis%͠K @LD!kixLG{ IplZ?&ۺi$qi֥orL"M?36yѼ =R"F"K<"jhWHLc4zjvxn5@Na!G[Vc4H"aUeQJR$TJr^t [rnj&ĹdOF3Rלrh?˷&ږ4ZMeqD:7q[5tzR5e-CF{NIO8V 2D&_}i !U\owfھT+4#eRi #livuYg/2 7?rOF$?EҖVMژ?shMhQw`FZ' \Mv/Mְ)HCWq?:#ƎQ)CnjH6UR~1!va\+Μ4YqUn 9m0`L-E+ܰAE|k2B2DnR WJCL̡06C+Y'-r;gO!5~mO_!$(iZ'8VgThN{fZdSjx\aD"^rmz)w p8S 6Y}4^ Qгa !0*魩!SF *;% >Q}uˑYf\k;.pPGF4)TU(cqӒwJ*w49j'E\v׺Bqؐm4 0 )T|eapjTŌcU::n_.vQFAm%;owD zˉMuclƺZwG"dc^KXlMw[mf+ȀzSHPED9&Lg$6<51J2P~R #&|ԫFQGh 3sk*>S"bZ >YX 2E~a"}d|YQQ"UdlX0Q5ydi#q,: 2|0\0D2 ({2xܵƇ`ƚjϞ%7Ɂ8R4.h48=5RgMqc1q)Sf^4%RB1&%@}r+3x/Vx{o}ZIHPii M, Ghqp^l7Qj[Gf҇UYN/no.@s# /ߘms *l?#)oڹdKG QA3C4Â6;E0`iR0_CKlx2XE~8ܙYo(ndHjY9@)mtbgycA|T % >Y 4(~v01XHu:xy-Ysli(  ,puzI@D8lxgvֹ>=E6gI  |x #,X(BtԠ jo]Yh%@*<͎ XJx솧vwB PȤP,MmMfف"FN+$$h/?g2VWScfhOк-^j{oQ'->+%ڴnw۫#Q~P,$ n7FBt  7vL܌~XQI* 9%˰>Fv*A1lm2(d7KJ ;\C$PHTT*<$ZyLTB'G+Jh},502UFmk$%y1n>~SF#YLJR)^Z^eC WF' %avgFTIƩ"DVB:PMDY.414,P\s N"I&#q"ow5O\)5.E2OҎ vuPP!Uᎋ)@&'Z:N5bиD txOpbdl /}plP,0&X[QpDF=F.+3nn cqY>Xk  O4pi]Ȉn"7>/4b b·3OqJ(L-eY;vlc'W؋.Xr~%hʩmkfeG=jljDM>\="]"bW4鶙#"_.O=bP&'B2I! -o؅O몡Aad+Vmp݃=ت'%q *uXf; #nsrrH}*_TΑS`JMWNzdڷ{~$|h0=(}gRJKBFWrն#Cu v̇uXhVѯoAScy{gv wnVf50Cߖ:ax m6IZF񏈉57?`:l&H.:ޅiX{0Qn}{-[}/͇l74F*F'ah鐌UFؘPi]T}1!d?؆qb ?{\0O)6Ϛ]坶za(~KGnbmp"!,=; &i;ɈxX2V71 d`3`Mm,+-k:( %H%$|ɺB.aB9A@ ,6 Ä́aOV*ᡠH.+S X&XPs <+(4SCP.ufmDYؖuv[N}1zb6`sER"g"`f检6=c" &79@[WzC1Gip])ŀ[h-/kg̱,1ˁ :k!)Al06 'HD4j;<ՁP=$ER JȃHDpP\5,xa@7Ry' Iɣ` WCk<\F,)3'pX"A(#؃G EX0 k8HD8*,"8{[pT  aa PG 1LQ} *vQd p'(MϊgjU r !UV?6;$Dv<᙮0GO? v,H=YiU7Oz7azJaVve:)]` =J7%gzJJoPmBR}0ۓG{ .^~o@ (xK[fS̞{ErCv7`\ٽzv?yOOzy,oN/TQwoz!w?w*A=yf-Sg!OS 9 _3OK@7g <&΀E6`{f+=~8}vr@^w葫|^E4;7=yfv~nh>I;.Wl v9k*]u\ ? v¿ =\%hX%O?mbT.YPZz'jZWR =8`d/HA??u x0L $Ъ |0a9g<<8\d yp9{ேwovO;ko̭pN&>h=J>a9ηp/8(my P(<q?='v,q ?Z gӛ ``A31r1@o ro9.;g w!h|C}Q4XE\X,R:iR@ ^|!5 \[ۊ烦ܷ p>lV'qr n s3#3 BDI7>-ӇMy+zWwY[]s r9= Ԯ z8qp˸l0H\WpZ8,9HC.4lwThWb^mD 8AwbҴk%bKyH}Ζ_L JyS]vlCRCqi˶n- LUWSf to튝GMRt>s`6"5-A@hk euHpJ?+ٹv޼%Ƀ⤐9e6,2㶒CukYS@TRJg+v̖G'H!m[o~YOddk޾游 6^⍻0U„ai` }`<45E=.ZQi NI0}eUlI83dyt˛̧be C[R2ؐ9NTӘV=mz wSH`tt%jH WN`Hi~H<sf{榝9mWg&F(RݼΝMNxCm"aɮ:E y|+4lm)+e\s}NyEZ]p՗Tun(eʫpa4uU)ٺ0WDD |r^ۿygΡ*olV_wy%{ۖ3ڿ\dC]qd&!g#_^gʓ17mo8lh0_l]^eeXGtVv u{o}]}Zr)t6rb%u}y}Ժl)gw2ec '1i|䖩qC5<g9y-팘O^QI!bxabIr:I)F:ܐk<ѶZlds;)y] Na1 dls!MK9}&~UwDti_֤#ikfk AT׌  N׼qmCWS:.a^=%crO;v_smH &kD "e\3N6ceCV*y,=6Y~eæZ1CCz}f|g459jחYB%Ym',t}q:QޚYG ql޺9T{y1aQ$G`u6oyڟʌseFY|8)Y:cLb3 F654(2fLψNⱃ#=>2q\l}#ōrup|\TND~Qa%d;FM>}|Rk^%!*rDTȁQ{D:7MI B( MB}ljz8? mFj||ZL&]n{ahM3O5yhDc~!?|DTH8hJOzXca\~}ns'<\qdey{m. 5s̗`V|VbE{o}][ nEܭ2qU[FMR"ɶw71z:`' 9"d@G_xQiAѯ08q_k'lKq'E׆O;>(0 ,-$=$.K$.&OQtOeîm[yԊ}{kbh8sdA2F11!,C>F>0@9-L| xctgjJP J H<q|zjԣB&+cVfttBlR&Ten}g6{ Qj +`yXW "xk(ZfSܹڅJuRjwq( YI\&~qrlq9|XoJ;U c,yp$T&"OW\D- 1@inhHd8oPfZ+c3Q&4tp,WthDFA mN,amx?̉β6U&x4: MH@`bVF8l]ݾqGY4WS9VGٜf5 hFc~|wkHRH_7yX`P_.W'BM̈ ")AϚCKQaaԘp S[)td6>3e#H"]] "qfJvcO1,yyfR6l 3o,YN*<N t.f@b_-U)L9hµ0Ic.M iw4Il)zqeb.~ v<ؿu=@ߺmtfH}mMJ.0"mQ"p?;#H2c3ۍND. BBAn[WP̕jT!H xB频X%d$^! ,Bq1FRvVeHB6#G <0[CyL0U@sC>p k$~f *tm |8=EjC nIeG⤟X^Y=WlJ䧣e<`JabbB;מ.-{١"UT[&Y{.Xq79gLR y&%FIh @._!ДvW <1N}^X.9Ai LC۰y^2ji4[lMh?B3BoQD2wa½^+Kcu"\\Vv$7?o= VqfX{l}>~[*lo:i:]V;+y`*x4[,T~ UܩӚݨKP,Y&W`eߞ$; |X~B)Av%qRfu(:iGorty倴1zBl{|\Lke@.U0 | # 1i|PGraEHUzҜp"p~i\gwVϳs,_*̷HxbRJz'"A ftʄ",)RPJT nٸ q  .\4쯱 @$ȺFd7q,saVNI7ڌmln$$JjQFX/[,?-Xluu@$&hY;A7;,|uCBE5ߗXuu0'K뻾.5u2!XgLN%KYZlQ|B7̸qtH.N9X7-5lٽ}[?~8vhѲ[vm#AS !2L81-j }ΊȱPjy[Ӥ\s8nj #dHUq[ConL&xd w'}So9u5MV|PrB$i]pͮ#Q3nZҡSVcY3lTϫ{3tkAv%:aȘ&N⡚OI dm\q4l­W  7r>DE ,Yq_4f V6oZ~S3[%^"R"6-AU[0rT@'n鿛f 4Oza{5蝍nPmyY>#{oQN qZJFXGȸI{NfL RB+yg6!d8|151T\%?G3`i&H X7I32QL QWJHk+.Cr-~VJ2}.5&2I'[qyZ)ɟP(="vHr'8;`wzh .5v^T sAlq]l/9H*=1|r;H{J=z> J!pe|bVʒw\YTT|l; D’;FőW:Q磵 \bXean(P{x-8`Ms6\\[`4/K KP8 -gAi-0NTK̭XWxiply+@[lU=lLœm+z}9[r) v/ v0 v}2W2@A.[O %4ǘF+gyޘ}!u]N1/&AD6-L'jPr'؝9gw~AP{b"ρ']6А*gS@ ;Vw-I.F;m+z#sZ  <8rF1OO!iOS& ' Y/[sM(*|[^̈́\kMvVg"AiH{6lvshy3Ы`oՁtCIPv7P#d\Cg^!А@Wϐһdo) X83ݗ{6eK!ٟC&M) ! jQҟ vd,Hfq!ɲ-a4?am|A]rúl1Š|`9Ru;5By9v6S/0O/xN Q i eޓ~ 2njp1;\ V.R4xG+[c +;e P'!,Z:lklb<љc2An+2E֠@<+ˊ$|ʾ.K| awxO&@ b T|#JF-Z|sU%ւX9@Zx 59# !{ 9jyHqV^ ēdװ/{!Yj^M+pP9 }|qz\%ݲnm k'̼|𞊅!pulͪU[wW6c$|^gštaѐ\>erUB6&RJET MU tk"[ّ_u#r C噫ne SeYdUv Չy'}_QZgkq~M_P7xWUg`DA x0a˜ d>e8yv/.J }3-KϪ$D|Ĵw5;!~חL8p;cƂ&"H%fLƼ{r݊ 8<4]w 1 .` YX"[`vLZ,Ũ*qjKyI1fwgC(Pf+;DK"!18Gw;HcD*`~aΎFwv76jdӹ|]W }>yEƼa/%HtzmeVVP/T{.k2o47;h.4[ $Bj:&mVRK؇4h@+Ӟs!9k&՘Y-"GS @G!jӶZ$7YD@n0:+W; } drl\4j@]', v &;rL7(]Mvv\䂙 5j[3p/18ylܕgp|_i`#`EQlytC^Ek[]XMG՗8 -m +XV pl3_qٲjQɺvA]g*u&)&Dʆk9)ah'ᨶȩ3n`M&ͺb;qj+n2ZiQY"IfՙW[$#n׾*s .\6 &"(#Ҵh9Zm=AAqRr*MͨpBPv'H5@XMۏ m#GD,[kmunM^Ş6̢Y8Յëp{JtۯS mZ0 M:tФv1hok*۹zynXFBjTkuxٞ|< BC\5?z%3KK챣%M7oиE[bp6oWnaCWs?Y0zdtU{t݀5\)N޲vpgoX 5,hMZ >`\0~{d:XB?fv*ǥۼx۫5$xց Y7}t-[%V"1l[ۖݷɀ6vmNEIVݶ%v;gV ̵>h\}# 4ͤVEgߋ lOUw_~jx[cZWG1bH|<,21LAy$W:McѼ@96هĈ*s36kIvWpő&J9RC/X-J5ný" {qx(͛-Ÿ_OO'za)j>tl?~c]DnwO?;9c+8dD'#Ut|$oA>;fXr>"Qv<%eEFRΓo(p7ZhPaIsc-lNj3G':uJ ~֩)خ= ioȲÕءS$ZtHifLP\;Cs:a mnI1Qjlj']ͧ5\;aѐ_O :Tj,eq1؀~#v248,-m0nij-%Ҙ eH[tv4@o7$]!cAB9y~e}muctYՆ o֘5%oht0 †zzM7XiU2ؐFCkh$OOx2E#BYIMz+uֻ%%G~)ĩx}oi:B1$J1dA|+65Ayu73EGYaO%'jcZGD@#J1P)mF懔74HQQΓ|7+Y~J:,ŹAcBߝ9;J sSmnwDĸI7Otߨts]_@#ۑ׵㰋 j "z(A ˌ; :T*Y窓 HPN'W61tF1Q7l-bYo1H@ &kRPMy7E;5X1DRy K T)W (XIC;rPz=Bs$my">H=nzѭYB<0wq\06ku) 6q w L~fe3A5io_]f08A1VHbvE:C2=4GA=xի!.. 17m\ͺ1f";iTorl "LJU·V/S@ Yt8kOF<<2Kۛvi'Idu3BH%`w?%bb8`//kR;oHQ ~|8I3ccn c9)T) WL31T5ՓıU4-hB?BᒽT-"_yYՉS&,Qog벷W}Wmŭ `Dȑ'Y׭5QAB.?m?xhw;'>jUf__ ×@nA`SA8\ $w>ضe!IسO٫|]J@k0%Hv#wy/{. ֡ :+; EWfbBY$ pƣOpn! & VEg&Ë[oN!-<;:ښ0uU;HMD //;Fm7khߕe~¸wg&tIA&Ńޤ+ҤzC948QdSn5D)aU|}j5#0.I!w'RTVoqΘ?tp5-{7'o{obђ 9+8.5qGRּYTqVr%nkF5XGt:Y'6ډ`! ?g@B4JQl|i0![XwȊf2# WN@*a'к_*pߑy5N\B̆ jE]VPʈaNέ,J#*jlnb"0-( fW|=Âe$lCd (vHgqY ;:y&o󪝵G_znb\3S .JW7pW.KES_{؈!IReԾ`4[ Ί,qdۢo~(4&DY\4{B){0/|ڄ}͕NJbnWW7~`b1$*"x6X ;OF:R$ d}MƊc$!8aww2#k"YsW@>vD'ׯZwP4j5p'{|`_V1]7uzwnF㣔byH`?ayC Ai~Hxþa4Ynr](3vh+5tE"MT{ҝ.k4 GۚVAxXզ,'ry!m c hGZ y T,XJXr0bE-:#=>v!%ApT,cwa>vg ;)3em<5-I)dzY;=hwhDCfbrZ02(X #@mvg!C#H #8MXmnU"(/:|lGS+pogFG)"_TCWʘ`6Zv:*P+cĴ7ґj@gن(d*҉r0 В`,nwT8D. euc~2>$@ jR@Pm6R)*LQmc%$nRV'VTn`A!s崹ErPȚN{I(I[Z!Z "'U(}J:ֵD$&,Q*q B\N.Nc0lvZ<)h|l$n(*CR"|20eɄ5bn en4*)!J V֙xIiCT|\.Z !e3X*%l3@ki,k2' c׷U#~QI= ;Z`FrnÉD)J;]y (pI AcWPl?frDMi)ILNm/?Qit !R/&?cuJKXKEAȅuSᤩ %$S]U׎q <^!16|u-GbY Zab?0TDPrqT22X%$c7!b 8\Cev "pR=1/վo fr3%%!Kd[^}eja+QqtγH!P(lTKDJ '|'Q]MAt?c wg! |B- &1=:z}ts; @K㓧 ud+s! 6 x@] _Fs+'<=ױ"C C3r Ȋp<A |N+`H b Ez=rJP)F^P[ PgwlC l m'ka׀#fw9,"ݽ-|]v.g4 Ko! z8| A8݋_0+H^DO=DD^ $缏y4Dds{gÞ{"~^&=$s1i]~ ya*/2s=zt{Vd0r"U6%cg0`8OoI9<˺3Oi}Xޟv>,+C#S<` )XћAp>aa+uoP={oQ=bc9$_3--h7r6f?!jlh4OǝÑv9! v; ~>Z/}YxdZVXbU*@pyif$c>ewfkroQL&prH|ޥy `9g-g;<rT*Ғ mȝnxu,- @ÄP( ^.\[}u, /% v !P_ 3,,lW5rp+@҆Proac{-O}| ,9E rm/I30yI$l~~9y} xт)A6̭̀4PׁbI%@ j9MOTsl'esy8!pq][HEt_s9؁s@Ƞ6 /|>\A:\):%ITvGp\;8=|[* F1L磱ճ']6KloAUPY Q=c}u-'c9^ʽ-p"_X D;|T=/gRbpe~ .z+z%u}wP P A vA 6es(&b]'mŅxfypY͘vя,tlNsdO+Wd=QU0ԶןtGWtX[κUN^dWGo?ƃl_:[mU'ۗVc_}E,1n_ubeӯ UHds0c9j{ JqպvPֶvZ'b.\rkixft v/|Wtl'_Ӧ#=鷬F'+aؾdo\4@+v-[U378K9߈ ]~gyu+9Β?=t}+*eDW<-=Mc^ F_γTt-o0U8a&jpVѴQ4x°=!Nfkn}_91\4jѲHE Pх-;ᑂs+i*iu}{_q{?&-%cEGvU8Fɭv4Z>Ҹ$れD/"Qvt~"꓾jE=%c|@@/7=ͣƌMٵx J2jFGflu"^!C݇U5̬ڋi)SSX 5>~?6Bd5Uw={R~M*ޒ|G1&kVX؄)fƜz#F3'B%ȁmuita>ytH=+/i•hEڇ*߷p-[y­:ͨԠ>QQw݈!Ԕo<*|'$Z @ Bo*(HEP ""ED!tHH!f{/}S2y;33g̙c&ne\>M=un46*O~|w$2͝ڄO~:-3r50ȵ?hXaWbRԼ 8͓HMz^MyW'*dF dv~ߑ*3G;)S, ̦Q$FL 9F[hŮ2*LRXd.RvЭ'hb͛i n8[ۺ%0I (r,!#)FwhrgTK1A۬()&nl^l{(o8baWs>(4S}&%%~Yo1bbU~Xzy `jsP̞/Mrx#Mפ=- DR.{bMux[ovWWԌ`zKg?6FDJ埞T cF=§NnBb_)N)"&m5Df ⻺S*aMOH{IH>5hPM.]5ƊTʲKOX#ɐX0ϕ]EGK k{'yQi(vҠx5 )mRkTiQ4?b(Qҷ.w r~qH!Ub\5-Ur&-bgt(0Y(krwumY'U8V'ujvNS]yIF r`l26pH)XV0T*2ލ̥$zx5r#y~kzP"U4`>An OoP5P^o=}WzjKi>Պ-(MHhMoB6L^M1=z{R|M\OCh<)dCӂVpLQLw !)o&Do?,D^zKj|x0~y_]N1>4ٰ; d:"GG d[8GOG/ea?3k.g<1;ljA¹jT+j1}pca|Mi3n`m킻Wn8} SJsx\64g-k$PNtA9Se%kQEB ~GP[o>=\ ܜvXUhx'sl3&[=ԲcCn!rL!_Z zcE B:mTH0__GOA{52u6*-Ͻxђ};/*Eh\,(؎ڴF~*a{>|\a!FzO_EPp5Q2@2FjahzݲTiR f[NsYֵrGʜ2u5tT=>0: @l&,T\*X|z3MkXkEewфm-B>/mŇ+G9ޡ"bDu%:w^m-ޮЍ:boN<4sCds&wp̌D.gѱbmI-& 'ut2ҔI%}%z8{ GH? ZFhkS~)5Ejtu!.QSfզ^-5Чi 醍{>wc>ShO5ʦ*vO5 4)BZgMO\Y q 3]&!$ 8;P+q 4BpeR^k&gyOQ|ө\ݛJUD!g϶J}hdʠA]=[ڥD@bQ%zԿ/)vto)忔f :CVgs~pucG*T' sr,ʕeI;Zii Wb RuBa-lnn*Ӧ%%X(18cL`9$ҹ;3f"Cp"w|~8͓Z$S"õΙjV?Vlݱ-Y $ cATv 2({#@B"8@)wRyJ(%0coW+Ƨ-R2-IS$N 'Çh}yu"$JƏ23(tevT!vs{q0/_~bdž+\8y>-@C0|֨t Vi|UQjn<,hHQ<:'^"zT{OPX.@n} H^%azEzGJ**`Gx@-{vиZ;g΀s7rP๻ʲ3w ܲg= .q`*RFEE9 tfWQ8ZACk8{fAC?f/}D5[ݣ?Y9$nM|͚Bc;md= LRdyF Ud'. 0.vpn>=\ cI8&3;_,6 ]=")JY W9zSQ/S{ +Y(=| >d*5="A86C&jo Ql0H*Jlu\۱U,3}7%F[j bU5Mϓۉ@o'|⁜[[^@d&nܵFD 6<].Xro+K1I|}JvAvd+*,b-ǕۖcI w Zl`85+&$wVlٙlY{EVmϨX}. lwYZV4`mLѫK]h=+X(v]ڌS59Ώ^WipM/L+EzEzܝTŘ^d cѶ::%s{ {W~}7gR^-3&jn\Gf[.U;< %.ރYH)ͽVcvݷ#ܾM1dѼN":shiɝ[Ŗ!}[w.-v-Ӷ[bY9R,u+>!rœ+*]Zj,1ǡxbڪ[wKVHVfA= bA60Cb姝#t 2 oUXº H`f]=VZaD@;jYzunmd>.7rn_JguJml0]͉ ͦY)GLm_5GdqJt`ɞ"AX-r;!.X2vB ,0}j5҅*ZwZQUߢct0.O|ؾsc#-*[gj+BTlsi rMjI`1ytj´q=\jjF=G?GZ̀{x u+gDYuG;ML%wr*Äaǃu'K`o`A4f]8Wj䴋XNj_̩7{JYUz 4HpS+kW2xY-(q@7mu!t ʹAHM5tWNq?Ҡ%|2-6zϱ#Rb3i4Mg& ]񆈪y-V.3#Kۨ4; kQA"dlҋu&.#EY~jZLҾccmU^z!̏n^8_ivٝhjrd@7bStjq>Ff ,AXNh(n˗jjҕ9?6`%ځ># f#(n6EbM}b&4?O?+|?fѲF"Xj߀p@#27.gtODdY)8Aa&b r /=%ŀTrO X{VL2Z#S۫O>ɽpHjr*T+^nHn;J-uk߱u,@IUo4$ @$ <RZYUu\8ZYl x&h4a]G}FuZUh0XЇvh0ѪW(Xvn9guΠWrʜ LPxjbmxwo|[`Ni9L4mfO90rl;7GכGLxL~KP=BccO*`$ @$ ;R nW^vuאX7,߽jJ.]'t9uz.U}PJގEXJ$:^㒆{jUj˜7vx|\|+Ay,밲uI_\vo'!y孥 WhS'I]wwEJ3V[wфǍ|ƿ6 gpeCzv)K7]_%ӛSޕh8&Cw.~ΔwFOھ%~u!v̾߭~ @$ @@xbGQ ~nٲeKq&B*Kٷ|xLirb%T]p|+V~wɇ t޺t, {xiN^,KxLo+.^[=f/_5}O><"]{E9۱Lô/NճƵKܸ{[X/\}^Oyl„e[}W5sdn%ż̔u>\yNv f?Dg3iqeqAܽ|mZjqW H G$*PuxիW'.iį&O?z|n;lWd2A ШvY^Zv1U0Ge*;!ߚ:E[g1X_}er _Z9oRRޟH0]'ua)$D{F#-5N][f1]Tͷ}'9TNDn<ۥ]Os5&2j/g9o~|N`/-R( o6 G ;Cqxty]yν0@$ @$xb&+oٶm~8`)MhGtAƽl@*΀.lrҤI/fcyR E1ApǰwF%fȊ{?~d߶Q-ۿ])qjGp pIENol6ȓ㌖ } f'krdI6] A].ٓgt?z 8LD$t644P{f HiPk|~zӯ b8!kPXPH$`m'MOO?sPmI˵M%bmYصceNkm ͥZ g zyjĈ>kD4*V^XTE+f撉.bb4Q6̙>ámYU%f]v~_?ߎJp H4 X@DTo^)w!(jʤ>m٬E8a H Hy"(53!eh$q&^qjҪuF`_ѫs&M-3G 4__﯌ֿ/s?||-[7a7+Pue%F 8*#njw\* ynhԉ'O4}::;&N:k"{Œ<6]i#kC _7G lPaGSu¼@$ @Lp¿+ըB9];uaC ح)m\A DwͰqI=]Eu:w_, J;:gw.]:`W/{Hmbcbzh.ݽVD7oJxѓ])dQ붡mzz+*L]Fk.>{2od΁|9x׳qrk7s,|bہ~: I܀mBy9FOv&ř~ +0@$ @$xKE_%>g0dӛgd-'m:ҽi[v=A- | H '',nz5K2 =kab6W,6ߓhu 9]xB{Av_NjuM$ @$ [qPjDTqa.]pAp#~4%E,&7ԙ祤_mli.O;7LrM='(Ww,Ѓ|MGT|mnZk9M7eOy0^eW_ ؔW\2iG6?{WΟZi d* kB?Ū,yhO8*M~>$I=b@Wٱc\Z0EW[BLU{ˮpqRK$sԀ!oPy/m)ŵ\{ }A:6nv ; U;Pu|3T|)نTU^"cP_f}%Wr'4K5]{6^qv#SS;CS\uT;%wX֦;^RTXYYgDkƍJ*Y &yu -E@k0dzA#L_t\ѣWSZ@3b6N3=O)+ɾxRYT^|(XAnn\u7(zZIEAQJDl!]Ҽ;ufSY[YI%5ZU+>2)F0 >&{z3-cJ JSannTjPJj(ϯ 9lֿ2CQY+}fAY7-uDuJ+ǴeZsyWrQ-eF7V- ". ^W]/?D(VMؘiʢ" M E 5FOabwk%w֚5Nutͤj CWtj;E+J2-C Tf ݄fUPt܂2BrW֘mTZ^Sc&'Ů_rݒzU/IYZVB. -"a܎k/Mյev]F^#>hvZ;~hɘZt|Ӿ-1nΞ7aA-‚c(o_]Yj_nݽtTdDXhxy.{Ąz$]^yzU< RG۵_p𖭾(~n' ^(:zk8~iCO'"mY9ݷtMN"r۳?zp@G̸f෾pzW#}{5ӏymC􉎊wlmGi7.u\0֘s?}c7*ǿmǿ0i،*~;þ쐽ݟN0hةSXO0"N^Rvs6>>CVJÛ=Vx]Ǝ}$xǭ[g1hV! OW t:Z~8uI'LT96eo!uߏ=&*e[cn7^{w瘷F^(QV׶etˮV4 Rq _k;-9 Z0dGl`4Ǝ ?Cc6ojղe\BAe,db?hNdb8.:nb6 /1\wꣷ" Z!(ZمC;Gu:dkSփ,V^2go' t\zaAݵ3zoaSw*=S3n͵fBd&/05]Ҧ'r,uV?|4tа$x:xsϼw'd]"\ )m:nVn71ւ+T}cu1yIyLw$O5S(zā;v^(SzT/Nl-U{B&{oбEwD(O@"9D@Nҽ|mɑX4{?ngrm3v7RRjPY=[qG:{GC `p/+/\^C߬/Plmzx!T}.o:~"wK*Kv LrIvLGs׆a ݮ+mq4,iZvxtwf0ۈ$KZ?{-DNnΝpsG~?l9m9ӷ ڜSLxާ3^ADP)?n[JG|SF9,~K%w)':,86Шk7X6\Rm!+Rm_v2eCs/z|egl9[lu۵9c;v}LwS.n#; m]غ]iA~Q-0a'8nkAW,)H8Φei>|?ٿ3yt|}=^y~]xNω`6HÒ}}[ߘaZ9f%d\ՃF,Y톾?ED|şMސP>l)&Yl=kәFaX: } 1ygoN9lhZ/$YQQs3%GYu񧣺7]DLişNQ5)=;kš pu#%Rs%[F9z8gO 11`a'̜1wрaNMn-?3aUW~t[@jF/ʺE$wH &bX-:_m&i f&xS\(,^0VdEƚؑӗofhvV.to0Yuqߞ]?["bi&CRtHLRh% DZ{uMFЂ IEoDna&z M;_8Lw=Z1b?۸BFN%~]SReuRnZ1Pvʟ cv |B$F=OL`=_p(NEqn*F.80kD~eMFq:4s,_#֬m)?̙"1(TnTe,>a!m=xE23X *<óS>z s3Inn".Y*UyWvˑ4V{^!z$yZ-#0u*N&32=9&ГmI9yt_vNR ÅqH;HPvLa}G$qʫT& v)0=Ocw\OVr}[oZQOB a_ݺfwOdvC,ZG?bDx͊Vt1@{ru/iGcNaUZ2 4jlk~ =*W``W:$[T')ǵWDZYUIt'Bͥkrpp^|Q;j֖ieY~\vlB1l@.1KM!~ jݽk*n\;  nB,Rr)vܰaGڦqh+Ҿ㩗g$c6iyL2Xyy'_Jra&eCc7cY魺M.]=hXWRQp65CmY֑{7%Nv+i$ݺvz-nynȲu?͝4HU{udҧWRHhLGۜK:f&4T7Its<7O7>!DNR\;ikPQ} 0O <ڵkT߽#qiEpѹc>\: ̛G<&) 4+K4']|C TŮ욡371%F  PIEiIm_;R>~'"T/q=/ߛ7Wq'O4)=chN ()v\T}`j-|{#Ynݼy kO##ۅz }<_{bOjC"F9sfRdqh[w]θ}$&:ڬՎ4sG%[Mz,JF/0TxЦvRЉN#IɌbY9S7ߛS4oW0` ٴ'OT8U4cFciG]ERmŌLKYLib;-l1r.;%rK8 뇓&O4yⴑ!~^TR; 7ǵfXk@n^\Ak0F Uݸu:ك-juth,ݸCmnaXʚZ%ywdRwcXj(c+b{0 va?Hz};Z̴Y@"a=M9{P+76=qмew^WkhbA&͞=#rctY4g#>׫w7fP&R|%LGL*;Ե ~8~VVܚ`:}[fSt.?{'O8iwZx?萴IGx)SNI;pp?MbʔNA@ 칙i)( M7%@۹OQL`֔הn۴"E]=PF=}:UF`-& ylK)+<}FT:h3V+h{`(x6@Cm*?U0|^wji},^TiD||0NRp6ƣZP'د'6"7y|;ioMh5T :qF/BSg/]ۿLY`5Yp9g@7Ty>ABa౓'M:{C41b0y>PkKІ PxfYnn.}GO4iGFٓ2|S;V񄼉ƭHK1'&;=9ݒLuFzܬy`ſ>a|{(NAD!^?ݰ^z=P<znח3杙kZ=n~mN/Y/Ţe7~xѢw;{j+>v%=0)֋>u0Bg`}a< 9{~[?D B}|,)KGmOO֛}FLjGm(4Y1>^XbX1X6|5ˏߩS؝%2Klؓ.Do,{&LӬ3c1\"cR2[s}nj&&<pB7g]x9Qt(e̝- w|PY~`qsїHQ}`$Tp/_-<' `i ؑb1^$& 99f8zâSLOoWpY%5åu$bq>s=TcJ؜: [ kmmܼZJf  䱟>ϡR\"<-ƺZFzhf\ԓ|/w \QW2<܁WLS,OZ"3xlsGlh%BeѩJ#Ei6e$5;PNTR/2"yҁ P:3Nvj誴u M: ߕoV)$:i&L2#Pm2&&[4J-*pG5Σ:-prYh'SqCeUu2 x&NJj2kU $[pWTK2ŌZ&BC0VGr7k Od&ҀaBO!^^Sc x`~k+b""'&_ݝFQb7=4Sj(l$etf@).`0^ ڂa$JG%8Q f|7 t>4/[(*Q4 TZ"6RTF\ >@z*Uf 6 Ϣh1zAÌ2&f]~Z/5hTTYbpݓ ~jÃc.bbT"Xa>\.}>طژUJV6"wr0fT\%U|>uݝdS\QbK/7!tBc!y{ҲdR]pih%2S*x6 GЫ*.<-ZTe U`bŮi s&>_cx9?zCeV$|c:{O}"SSš,vM{OWGW ,3%3MUIWϼMa_+*@K'n_l;z:8]/&bפ^ƗbecXTM=@pGb =!hK=30!H H;RLJU+TKY=/5 @Dvk1р=\v)Vр`M&I*rp'x*yh ]y (=_y.Kccr\f!v k\WDOx0?8p\hȬbC4h/ ̒ӎOb|,W(8[c%,5 Fvh%Ӽ/[ͦ9Ϯl[_ H H+Oy*! $ @$ @ؽ" @$ @/?_Mj9IENDB`DyK  yK phttp://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.SparkConfDyK  yK http://spark.apache.org/docs/latest/scala-programming-guide.html master-urls$$If!vh#v#v:V  65/ 24` pyt'$$If!vh#v#v:V  65/ 24` pyt'$$If!vh#v#v:V  65/ 24` pyt'DyK yK thttp://spark.apache.org/docs/latest/spark-standalone.html$$If!vh#v#v:V  65/ 24` pyt'DyK yK thttp://spark.apache.org/docs/latest/running-on-mesos.html$$If!vh#v#v:V  65/ 24` pyt'DyK yK rhttp://spark.apache.org/docs/latest/running-on-yarn.html!DyK yK https://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.htmlDyK yK https://databricks.com/blog/2016/07/26/introducing-apache-spark-2-0.htmlDyK yK vhttps://jaceklaskowski.gitbooks.io/mastering-apache-spark/DyK yK rhttps://spark.apache.org/docs/latest/api/java/index.htmlDyK yK http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Row.htmlDyK yK http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Encoder.htmlDyK yK Nhttp://wiki.apache.org/hadoop/AmazonS3?DyK yK http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.html?DyK yK http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.htmlDyK yK http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Writable.htmlDyK yK http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/IntWritable.htmlDyK yK http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Text.htmlDyK  yK phttp://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDD$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'$$If!vh#vP #vV:V  65/ 24` pyt'DyK  yK phttp://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDDDyK  yK phttp://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDD$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'DyK  yK phttp://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDD1DyK  yK phttp://spark.apache.org/docs/latest/api/core/index.html&org.apache.spark.storage.StorageLevel$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'DyK yK `http://spark.apache.org/docs/latest/tuning.html$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'$$If!vh#v #v:V  65/ 24` pyt'DyK yK `http://spark.apache.org/docs/latest/tuning.html3DyK  yK phttp://spark.apache.org/docs/latest/api/core/index.html'org.apache.spark.storage.StorageLevel$eDd i0  # AbGeewuT},&V@#eneewuT},&V@PNG  IHDRsRGB pHYs+dIDATx^`EǓ\ͥ'tiJER(*E)"ՆR T"tA (U |3R.%f=ϛff322%#pHP $ov ͬ%B  !o %$$|XR4Dh@@ -[\yԩS>|Ȱa~^@@ 7o~՜ͼ;o>uKFTEh@@ M4y¤2WV{/j&lo2"@@  /dYLD|>D,# x3ː#M!-YhԘ1>U_g/LP*5[ 7Q&sџNuH7 ~n0fsG(El/bd>rn\'5jߨR5LN3LqwvOYofaF?\&7iwM1w;$' H7'7AmQ%M=/3ho@@7HQA Ko%"/@ RuyK ozED@f^- EQ@ /ho@@7HQA Ko%"/@ RuyK oz mD *lg͹AJ24LJ{OvraZ.G[h5Z}vQEDMQ?.]ҡui3O`+NU=ulԠA׮^QTMof}ŎZ3ߧ˗h0>t@q`p"beY˗B E# zSǿܾel|J=!/.ZIQmTKHNq}{; ʓCIMcxB$'iC&mݴEU.%IULKM5 R^%'(l7KFܾ,nQ# xSPk'O_A>ܺM;͒3N7)11d2&---6_Ry'!!^X̩))<<"RV-׮^MvʣX\^wm߰}7]BuuH:)I7_'hlbb2yedXj듓5P'MF#Y-(966@a!<7} 8 ť$%~f?&-FO65ꔉ^L:{Lhv￷mRz>CݢA](L肂cbL Pϟ9xR_R1.V@>OO?ϼ>;l`5ٓ'勣oxa}{vi/_7aګϾ٫ %ܺ1u֪PK誨!47}ZWh0VX}Ǘټ:w;tHXXxT(Bٸ/ *:㫹 icO=j5?r+T4>Dۿ{s͜^`a=>zꕋS>.BcRSLŊ(T+W _/~D7&%&LER_9f)ɩ蒔觟[ӭ l1bn\bɨQpprK 7IZ34eUaZb&/\¤ ըQc̄)z$L7[2_W*VBJJ69% us-[`0Z ؼqkK)i04 4\Bgq__NB箛7MLuՊuxn?w>}D'Z)UoΝVkڴ4pȻM[44/^t P, Lڬܸ~͖?gڕK?ȜoXXYWtB b۷S͟iZ/Vx3002*2Ƶݻv`xꈁ3)!>44EPF5!d4Y>^\vo|'5թ]^hgfNW{')*X4d X?+ Z>6$T|w6M6z>=Z<+`$%G;=<3 lNFdoGn0\(P_T\mзRplcMh4-~vzG2$B.ѯr*5jՙ:~ThXxVϦZ<{J9z1[{{J\(>ܮYuע \xkǏqƢdAvk4Zm?_ırqڱupU誑Mg̛♹ө|J+cco7zviL:j l=WPтi5j?NpT||b²nOCy+-%GQ)t ޟ^oHϿϺFT*^Վmifj-WC*/N]_izjڠNѰϷ.\xB\WQSSSf3I1-%%!!њ^{{#F/`urُ*Xb񪥋/7rԧX }F@a]ZNҥ˔*/ zc%~}+Rh#ޭh|a)/uzEƌqv"=W"n?_nY7_Hb[+;n޴y 2vl۬Zj/weWQdDߌ޳sgʏ_=\H[ѱ'RzDd8..iKt^^ȉɼI~QQQM7K7dMǏ愄YDRVK/]8FQQ?r_t$%:Tl99u{<_78PE @tt>0̅287! i25gqkD,z_Zb I!t%0Pjj Ydd T02cGSh̼iJA'/v)}gɔa@^HONʅV\ s̶0of:wxWtwە ~|RXF́ ƄxD&)f9drKNۜ0DDO$_ &Ƥ$)Fjr"LoL'-3GקR㉜>ˍgkQ 7F@ &y7jHjb 'HL t" t=9vG@HP p/o"\B1ݟ(5mHV pWyax (n(.X\wC@M"< kO" x')stOS ckS71 -y{NmŢwϑTCj,b!b 5{L}%toTo[V 97sH!Wf*u7HC %o='Q -y 9G@f1) ¾+DMg(| $mQW@t"\@@rTsE*NG@t:"Ag! xYHthT Dt" '!`4[fr[4Z2L #$D2MOϔ1IoY4烼 8NXy 4@T3rRF~&3lK5 SHE5=")(',^.* J aDQ J ĤV*(oz|iJJ*z7=L`PBa!JQH/Wq"V,,MV+\ӧN/YhԘ1X Q{"`ZwS{ "R~:gDoJJ3֫\L 4/џNx¤2GH^HN7LZOZrHBڞ./+/cΚ; xPEQM_lIiVyc_+|x\BbRRR>}gyfŊe͚%K7ߌɱz<6ejԨQxϜ9STIޥ ޶mSSSQyR@ɓ'_r^qFƍ¼[r,dsO>}_}%@@hY@%Jx'3iݦԩSU*d6(f̖Y-r[n=zSSrZe6|ɵk֬YՒmb[I >|e1bDBB%/fV"! x$h}!&:-[֠A4:Ur+i4x}wƼuwyG~~*LvX"W֐˞LٳDq);M`CŪ>($AR kUsAEN9r̙39|y44p@?/XQg_Yy/C̶Ȯݺ͛79c&)çtLṾǬ7vI1pV1c؆]]Ο`g3w>gql+"A/˩$e)`NՉT(i|]ۧ-* o>! ye=;#,^Ix 3<<hKG6!MϟG%Wgw#_@Վ 'oxϡB?@/+*YztcdƔp zn:$VFV/ݫB" xS4 T&l3W$@MY sHM<}S ! 9xXW:XR :_3ژ!J8Ut)ӎ(<0/"MAjg٩ A؂ѣ&f8&Çg7' ?8Sc2*N6@ddob$|rKv($[dIu9m޼MDllYyرO?rd;Hx-䬾?>ʻ!\lcgc;+e?i8e._f.IBl=1Gr8&ȮpP:9#9EKo$""X] 'DomѼ)6MfℇebbvϾ#ӉF t z q77;u}M>,Q\A@f곉EN]^?>"I 7YnFLY,ɎݻRQɤ{VgXdXurqa}CH F"|Oe'ȿD8WiٲuHT<9" aDuMW3$\l-(v=QH?ŋlfEnD"@gK%Sou_Ĵɂly,HJ&Y[wؑ%?@o:(zEZb螰.cd8i@7I)9GUQ8cr&'qlwY${1˗/ωpòO %M}0WY3@[S,^4j'.r9z:y$ _17vQ@O}u'}N/=.IY?%hqZ.C 32wib6ܯ>"@]rA .ozŘl2AeMd2*XVXOVlqhƊ]tx"Tw!BGDr#~SI(7bfXh(.[@61%2h j 䏊5 ْ~Ze"`U UFĘSF)FR>7 BfURB4ԍ%-I $5hɰY$ #gJaX 挈 lM>3. Iw(:Ed&"HY Dq3 9FUR*M֘$ísL6 M넥i8t?H €jx0T\{$zll96՘7MHo*0[~|KB0*X bJ/>+ x+薕`~ M4Zڒ(Ts\EK(:u@V>:"H#}"tߕ&_[0BNv)e%)?UrIQ֚aCacrL=4*\/L(8LfTc2l Ɂ" \ޞ׾\3ੇ@q6(i-*sY@`"! xӃ儢^Tzd&RGHHd8(,bpU_]țw@bnFf̾)֨!V>&P۶QE_X*h**t췔[|pшfƥ3jM5`d*sƟRHAa:%SN #FB2ŦQܠ˞%IСS+iBTE5CBua7 &x "I= ,N3&I3J>bF:41X*m XYvkÜ{bJ=M$ bp ? ]٪d[ؤ`=zhNq䍙8K%+( fiŊjjOed@a2]+Mߡ:E88;Һ\;)țXlbNJ7v2kBRTvcT0MT>}M˟]N/H09y4]5qt]2:mIv`d >걗7 !'!Dl |+ Id3")x#OҪX&0'IZp~V"M4 z K)ye.l58'a*gI19I2I{4hjp:9'{Jur?M%t J9[0Ca55j%N` -x^o:vkIxLGj'جmIhCI8ih>fsF ,8O37^Y,ۜrp* j[ *ܖ+xӹx> 5\{c%筱AjIkMYJٽ,EPsO ;537;)KG&&--IKdF**Mm:a4K`;tQ ]Aи9IdRf0fT(xcB;T'iߜI2wK恩ÛB8"3G倪txtntׇH3Be7XFIEpm@P ^<j9*x3#je%&IZFz=шYpN[)|!TA $|$")#gYj-_U0LUPs2TX sˏ%Llg7}^K#TE!A*7: t,).CR@jiEBh%7,Ag/$P4yg!3H/k^9|AW +im›06Q,Xl<aeЖ*Â4ٿ{I.*z/޼;29Fv/҉NKD0cյhD~91-^tԔyJ{`lש>=7_Oٻ@hc1ynܸIYv@Ob=zj czkԨXqFtUT+W.D3fԯ߰꣏>TSNժU2uZL,YRX1CW^b>Λסc秚4o7ؙ(''/ٚ RjUc6=h>`ĈrkmӶ,E};tjϞ}ʔeti۶-cVZ֭_lC-[=bgJGvTI.]ޚ5kʗ/X,YRn?@:$_~СC6mj׮ 4k֌f޽5 ^xᅚjѴ5j4w\~eٻkDlܸ1=6MY ̳Y#qǣ|Сχ9ҧOa?i$n/^L439sď&pBSL+GmР̙3yHATe0z!#B tdp˓?!{~:2vt~SN}Cu+WzjUر7;#MX 0ޘs fq#$ =0 -m!w]͛/X] _ҲQ(J*.@8 )l<S-V~VUdΥqر#""a ɓ'7o,XJOfU/^8_2x'|0.\ȓ+QF|Au"KJشi9qc"1)R믥GV~={ kܸq<ժ(\›M52ζ"!C Ʈ]䇋-*] c}2** IgڶmǴfQu^ٲei0&w!:t(H@XQ*VH%K.M#!Adn:F2e={ BiFG= ׫9r$L}Sd䔂yrj ĝ%a8y399Sθ ZN~aCY-zukĄaC Qt+F 2%: HLK LͲ?T݊B  CR\Zg݌EI .c~EaXEQ^o D f eWUl,P`$NˡK̻ypuF3 $=_Bjz?J*]a%"'.G,X :idddY 2Ч8٢SÀl-w /&$BJ݌ m*O96!C9`$c쇒xtA *X .hnŸ=+ [p;20,zʯ+WnZ:~zx"2T$Ņ,qh=wWɆ*3>F A)3So0袥hHW<@frafwTJrv h'N CG0t ~ !@m er/F<7­ 8T N@颈9bCfE'O CTS60J3!sA X1{ݑ$WPopP! Dߠ ?FL~P()8wuBM;v F('jP?J LF)!%KOf)W0pR$bќܟ1Ee\CX4sj!NrF^4~ W)m=Iz@a5oe_Ǟ•fЄX\2ʕ7P!]LVh&hؘtT{BpSrR[rRɅGyy;dpDd^0aTL,=Vg۴{;i +C !10`{-zFC"%JADlN. $ gOqb쇏I0:Š0k?#9[d_@A}dg㙜]AǗ1AFFPVf(+4+ Ϙ1vO?8bAgRI9_|2ЙjsUb^VdR!3%K,]*눉P$ʌL68\& ;%:`(ZN:mk za *24ZĄ.8$%wFzkl-p# G#!yH#):|QQ1q]`LQs:/7hShQP.~ rvCSt+p 4rޫ3ݣb;eJ[<4m"A;:9E;Mrړ%_j+pRjhBnY]FS2jYX菀.IXD`ae f\B( FAkݻaaDC.L OU "1005/ FŬFQ zޖ{;YGI1Ohipߣ0yj,!b m!2k@FgZN7o0P`|uС}vc&/.zTwð+PQ0p>aU'>Wc,#O6jTd[튁 (s:M=剿bU6kflF[Rs/$gEsQtQ*VK Iy~4xnB1=HQtM6&%| + ecS&^yF _Ey$YDNGX(4.ȺD80(Pr$')HS~H$K$+1\QƜH=qlHU)q⎊q]G;ȀtdqfpH3EQ=\Z{HQNо0rKk!uKx3sE$R2T^'N`{'+I!{pD6IFD\zjaoNUNhQ-yo>p-o YdfVs›ygߔrq OG@KP_ kϛy4~^}$=.buBDwC h\B2 !j%3Ƒ,Y H>nq*ReBeЬEB=l i%:kI住˅ ^tq.G'>ZЫ-́^+]8JRo%n;t=jٸӍ3Wպ8>e5 :_;ʲz4xdB#*rYsz5e7 }qyS+sxҔY>)o敹L~{CB^U yHٷo,3uxKu#_L{tt+۵ȹijOE e7} bQY@@ `G ~!5V΃NG̈́U;o/+)0=:5F\%0OӦv {YMaƏ=QDFG;c4[ؐD<"bNӼVlߨ3=x̕tK:jժ n›11iROވ5_4?wqySWm8TͲzC_*},Ry!(=7&]Gv<" N]JvQ݄7GЩ*-}x#q/6ma弹]'_m]39 _(FUiO/S4*H!fQIrc PF@1!| (s.M/_t[vޠ^Q4|g.M_{2NpJBYTքh3qWP:ѹeNet5Md6j^ ~"ᑈ괄V~KG擔))Њ*GZ-C[i:fU:5gOW~<`   P(U* 'ѡ$z RDH|xϾ CD%9!N$db IkfL0i)]/dd肴DD%ܳ@+BgX:ϟ;"!)>:yDp:4TFۏnhH.DÈmV!uEzXȂIvzbDr24܉.) !7LoaMyCjg4h䶿N4,[h;a h116l4 sV֭h$A?nǶoX,h9d}`߾SǏ!Rqⅽ_mv1\ 'ueO|[!55AMb}t @ר]gǟ~2mO'O1uQ%K7{u+<"c_b ֬e+_lB;".G8/u=|`?a/ݼٳ6P}_UkW._eӆ c?")]ztzZj-\O+Mq%iX>ⲍF/utH'3?~n'Θ: M[Yӧtq#Fz+d;rHH!1>~¨1fͬ/XϝtիօƓT.OW$i=:'ӊfOMHM[J*STY)^tpH'{uioP#?A`?ܾEVvVÚ-unY 賺 ??|_LKRU+~"Tv߸)"\=Q28Z\8M+LVtO~ǵ˗yvt̢ŊcӷgpQM7൞ϝpQCfLPAg oǓO8uWҥ |ׯI qWٟIztjwgN5mivl2s+((ȁp=;鲊7ҟ˒s] iO=zc&%%uieK/_:=}knTGb۝۶2 N)B(})$ ۺ[V˥ gSb^~Sϝ9{mZ$8ȍF=~bja0X1uQ}ǯf~~r6 0YZfm` zkZuk}n~sgN}_+>|z%KVCW.[eMn}XVxı>^|W:3nPկ\>by 9s҂o5h{۵wԇS,wU,֬`=G*K@a!Lj}m-i7{ΗΟo3lv}pK~Q y5k#"\Nbh Jf۵%gƍJ+}z~š<͛zǒ\riяo߻q瞇+?Z_}1=*_]7~Yu@.,"Z:2Y+UJef-rSfѥ9U8Ǟh)X ;xĘ[fF7 W];%&?rh[oҥK{~ꍭoZF7jܜ+)n4ZhH>0kf!iJ,ϟ3yle'O7:xz;ixn\M|5Um߻~_`5'%<ݼs-wBSǏ̜4dDP^tKϟ;[T&M3q}Sh{ciee0]tQVu~엘hyC2eʞ>uy~dTDR]1j5M}EIRON &SQȟ9ubS2N=|k=X5/1xgڵ5kv}eʕ#Plh2N?x'4kdأ7_z)"2?})/2H; {o7|РwZkg0&K%KGkfl:t!8SMժԔ&jVhS+(}Rģd5K₦Y)i4Tsz%>& DԘ(xoBOhJ-]d2J-WP1M13n7bR5:ɃG{.R>=т=NJs _ĒV+JXG'D\>PZ) #+(5ʯPh[s:کoL⒤l@]0MFt ͘8]zJr 8yؘ s>R-Ip< qHqɥ*Tl&"P7ϊk2X@f3GkN?GgN~tBZѢ"#>79{vbZrrDj> FAINJiU~ΝuIIc0K~<VD$Ŗ(Qѡf<7Aj0H]ΪEݵsҧϛֽ<\0_԰w3t`n/D,U;{[P7{kWt೧O M57kZZ+\!ްE`J@Μ,W[}web [?̪A4ocj^vzJR˖mG 0fuȗV.]V~7_mTl c:qH҅t]R3͂BB+]ޝ[ѰzՓ}i6_a#`3rx&O?ۦ[^f&Xa4Uϛasys>oۺ]R1ӧO䉑='Oy˫6-l٦]6y?h~ܙ3?ѵ}K5j Viin~7o@XQP]GtޯQH>Bv4n|wڅYϜ>ZN}u/o9yb٢oCC^~OxnWWDDDJS:x.Ϙ`ѫۃ:u햚jʏV{_勾ܭ'c ̗+^׭C*Ug."2LTDM+4h܌%]q']o@ֲu6;$[{L0ÉL,MoS~? T(T|mgۧ$%N9yV f-[M>K7eFgNz֨Sw 5u5V|1oFTFu)"X34lܴt,WR11ѱy?_0 _5%?w IL4~ZEkl1~_:tԇ+VfǸvՂ|umnވa: ^JidBE͎|žIeЩx Eu|jUwxkphxFᖯXr%6֮SKfJO74kf<oX43Ϸ\A#NzS;\TT,'>_~J ZzDϒ=K/5f#mj/ZlaG5̹kqK?֣cz#{^-@ݝjAhiF{*"=MAZUJj1pI$2m L?7 @òٴT4̒BRZ-+Ԥ .&|uj6Re(wyU LK1V@-6de[tB kMl t x _` @Dv!/ 3sjy)ț69r29L]U˶A-M=Gy`[ D/  J&fVٶ`b_({JGlIPLFCXRƶsiˬv/ypƕ|=&j1)Qq$Or~(qՒz;pJ [iDF _#$D9/mIYn'*%EFtWI3'} :~b x%z6d A$' k$%yoUj 'dmRsOC8^6 .ERAFOˁC0E}(lXTdWݦ)ciru8u,]XwG1~ە:^ U<5m{6w\wtoSeo?c1 [ۣK;Y*{A.Mh6Ͱavn).>J4:bNK9T ܳ\n9 vfʹgȓ]\ ] G9.Yd)Mg(\x >R >"VuH9F8 *7o ojفMOk, 5'J/KJ۫HΓp4(g[jG]e^]7H79iWٰr:e;7ٟ>v =`zO35rRO?s% "n7&1eDåtwtP|@@0:gxv7LSmz{5`9A+vf;nَ."f)KyVc#k$"`߼ys!w~!D!B@ KU p ɛhf5BpzN8;')YB@5Ks(eꃱ`ldʦ?R}<^|4ckH~r$D,`qȱ{?͋9﷑HEGB{=SQ WkqBq\H Ed;3WcWN|""P]٢Qٮ8XA!m2E"W!"pW}S |@& @@> |@& @֒#ɭ{/rڄ%n]z:WA-~+7/ajqBhUO'Eo_>|ꠒ AL+8x\m/)qL߮u%2f5ۖksWXTޭ6 jiq+1'P|".`bq3X|LWSgWnj7\~^HWLjrȝG7O|Zj[. 7ޥ_jj{ \qvbw.@r[̝ߖ ]|bu)O8wYuγ.hTn: 8!7w/k+JԂw/4`d47W9 OL&i|z W|Ŕ)H;͙ApvLAݖT oCwTԌvDݡ ƮW,+z:61K02.O61R#2Ѿ:DjIGɸ`Rh3szz*ZfE4шgʞr7tCxP,xθXzAe4zY'~ Iźktix(E$t iM4>1}6\ĕ/Dz4rJ\d4T'X(5 22VkӋ8nȑX|c#\Uk[~k?vuˍf1V|dPGi'Ϟ:$!Q]-WFdBfV&CoQ R!CRt'PrQ;#9a^oZ~S4TUQifcꞔP5ٽ'!OhDxUf΋ab{ӌ HהЋ;IAz>н=O̢ץ2&#|IIdJ۽!Ղ), oUuA9Xʼ9a 幈qvs>CCm͵ٳ3W15+MZxފ2u*ov]e 4?|Po+&:8{ضu6#)$"K幉v:ERAyW6vYWR;9Fn-H5?!LFxSF5Dwi/̍ e=Bvᲄix+CzEfJ>o=ԩ͉˂,O%7E2d\m[7:?lx}vB&`n8u v<'gIun|J(c!Ga0=$oj2wFN^_X.ERі$iJMIc֢A۵(`^>v'Y:0(kG ?@ۗ՛cfEՁ$-\aEBʏAD L}q˗/%,=[.hky_ D ˣ/oIDԬLJ;o}e9aMCݭtO "%֢,(=^V2־hk? ]+|v\a;N>a#C e_dq%k UoOpPP3ɱ6 “F|\s™{!Z?ZwNz= S_\ܽn*w" Å҈k=L~z^SBp5cw6+y7S0%/)a`c)oB 39+n=ϳs߳u]-ltWb"L=iOYdPLpU$¨u+ пd/QK;(WoAR#m\qIg~~T$Gݭ 8/0$ iYA1Skf^moz8Ʃ'2 ُgyV>3IM'J[_I:M S^_ދMXϾv!--Mb679&퇠kn */{uodWiw;1#LJ$ &G#Y'MvZu-Be]%ƏO2ꐼ&b;@ A^۰t/`u %z5F5:&j&fMܱ4U]Y^)ncҩDU0u׎Zt  \"+9߷|4g"i߷-^iǜC1|8X"We?tQ_3ө$~z|F+o3uァE$->DˣqHVA|ཻGsYh>OA8w "}ɄCz~DD7h9k[A;ӊvQ+@eW"w7ZמQ(ô&d+þLJV_x[Ac̜F!]f1Ycpq^V.zo_Ϊ+{uxs7dhw(?6L#bcCҙc7cǟslÙ=Dc܆8F> k}D &pc86"ΰ;AgzI`fQJ׾#{*c ˉ*?v* "VIk *N`~LYJQ]o C9X\X.$itC#[L^e0\{`'9,cl 17lĹu鑩y7氫#lur;!%{X`E/9R BEԴ8ۂD>Zg86pH]]pXy3W⌵l_= "UCZ`zyOD'fz>`Y&F+Cӆ4d8Yb^ %a)(eő]HU<\^z\9B+Ys|EHG.4XXwcXrkǢ'fuAAdmed|@B7\E Y!WcqO2V~,؍'X4fD?Bnlg6q,1=⽢l<-9kuY3CwR&9&S`lvr70 n/!=wiP[$>\SZ)i7'^W3*t'?eGؿ-@S^UNnx j]s'_D * x94s٤ԔnLeDK(tkO7ӐTTLL.%xo2DI>c4!zC )?/&7J6)ooNh Y9܆td;F܉t҉ 0t\^BZV[YJ|>rb%2Ώ{ ύdԖdAZ8.zy!`bI:Y#6 س3)iQ_²Ml茑l򓑐۾;EQdyN<~Dg61ScNBBS{\{K`0BNlW_k\x% !eCVeCdP+!lagG>oduVF cWo#f4@z3l>Q¤d"KW|npɛGO8 hwN‰"2@PFR.dLA\s=HU "' 3W6V{#<njRܐNNdlɍ} :kM|~?.EYzkdu$by{$cWdelߦSjk<l%˸.p# NhjXyPr߇W'oa&R\3QXXQDv\[Q 3SEg-$N!PuVflg8y.=ۡ%$kfeIB KT<ٔ;ᴲX ,NYIc? Mh.*wW-' M`Z"g@k|lM )jiI@~J~^y5Q5ǯZ##a deР1}y)ڼÏWbz'ag%=b,44qd "&lCNª ݇~zZ1?Vx Vamp !NB>%; RL PB.2†Y`Jh1]0@'%- QJ(0דÿD؞e>attI﷩뚍^oD\.5r#-YwmMڵNw l"|bqAAA',='ܽ;q`.E,\pMT̵&9`3J: I姓Nܷ{)r^rD=ɧ6Wx}ԩS~@*kܽAIf@k˹XM4rZU؀>Ğ'2@HW?nӪg!Ք|"޽}~}߲L =kҔ5xⶉو-x[G:mb RZݻY4NV4BL9TZMA.sB'E>jX"k/TCH Y:bYbY#OAWAmO;!#GF\sbs` {;979,/jlc/|w@HvrpEyv  xog"sG=ZBAe8Ԑx:RG8{Lvx5].F*"cV%S~0LD/{ݝ5M!~«'Y’D;l Ҝv-mK؇,$R.3}. gX (;Z a-9!N\xa#Tݿ8 Id w͠+vzN\6avڽgBьR,\dcS]Hbݢc!y hf-ViqƮz뗬N\Ek!e*cLJVvHӯ;:m_S=X6_OAkܰoO^a\h/oLW{~/oXHtScWS n+\ߑ3\kev[[yZ\Zr>jڈHDo}DW@ƭ{dK V yj- Ў> ?(*k"b{.ǐYP1bcsL Noֿ1`zGEs9N> W;pS}RA'mvߐ "3`je4hH'9.=T~rׯP49c]^J݈Hk8I4ޣ7Zb Ogi0܁6r|T?Cc1N="6N&pɫx@ыU QO4/_SpE⫂ ~47OKU`'OZ:wgş : K<}}_~+bRomcɃgcWn۸]+#_Xx~ٶOfɊ[ݔ_pkDFR~{Yɋ>dV-W~1`?B1ȉ|)ɥ#.(@+N\bɼ=hB  vR Hl"@P@2e H  |"?  |@2@>T@  vR HO _ ;)@O$*A@@3)Gp/%P@ ś( C|q(2 O/ބ@@@@ C @x]|ʡ-; ?; _y֟lcDv=OG'[t1)7G]6*@\{%>!51˃b _#C>mJ. k%G$iCڌ8ȣ7uj, ~pZ{n9XNFRk[waP@K" FhJI+h$TȗD53\%\Ц6m<\G x/N׻L\T'@ !Y CCI!h8i<Wf7( 1c|@D'7dU4CCD99iR!p윂ܔwВdO<7_R+dJRko&=J7=Hyyg%rlϩ1)a7Qo̓(UN~z#L!?÷"RBXRZsaLr`{bcw#[2#I r,T5Aʫb'gdr6 :5;'eߌaVz 8!1*)!?T;TVRQUʩWkU̧lݼP@AwdjG7jz}(HG]|rs{5'=<ڂj묐6>yٮEЫUb1eyC0>:<iV4ZD-*}uQJSʃt #?s7TbՙfݾZr۶X2:TsZ',] D T%FXH>f&@ywټk)t+x.=|uSZv,I޿B N>Lq ),TWN#ZHQ6@B!IYifzA9 IgN:;s3 'Jv+ᇻ̙s!g8TWzkQ5κѳ&2 ޜ+V%xb ``))MM$T|%@I@/!jBw4f}yM#,0g~% Hxځ.Q`9ӄZH׭ߺк_wԞwnWM1@X;-\`Z I|*P}FDTAdž&alNTWUi/ct V%eA2GNR46â;L0ŗ@v@^|(/9 "PkiHX@K&g%W^Ҟ94^VV=3:yyz%[jMONem)NQ޽ ^Ns=37(Y92rq$}=?i\AJ\y)xef[)ƭ'Yuav^.F.=y?a2gB~o[v<@'x䚉_$C1?g_x'@ tw4 @%B~ @U`cWq@NlvC@@8@4@@{,AK @?&B~?6 @= K  Џ ߏD@zCz,h @p߿@}4  / /{i@;Ud*a;qzl SE ߒ}yX嘙WL9/ j쑏L% 5wSd;돷\_&DXO A%gaF/' A-ϗR?V^vh-S.g>Ur5iyPyW>Ǜ !w,L:s-{#H$‚+-]Jص]>}P;9ajJxՂ=RӁ߽^>giDi.Gٵ>=secFl eF9b?-Ӌ+Zg[\[!O%T,͡s=޸{ EUQ]\sL]aAk]`̱vAসgoM٢?~_dMh1IGbR/zUڶQ13ٚtfSue>Y>poz{Hunj^j$a#6~Ҥ<s%L)rR)\{vӢ I=!oMd%6;wnp9镱6,s!+/`mf$TQyW~VB{W'}]PEXɶZ,'o%tنle4gεm̬ɮ 0KӣC:7$NYCW?|zy\DELcqFI{iTq:MF=(6_e)ۭ)g Cp9[=J>FlOEF<8ٍJޱpP=^ j| zRR[IHIq86y~/6[@)Zmc'+ΤCxiL,#_V1'6ޖ'r[7vŽHϧ`Ox*ׁp9zPd>}Ǯ6$׈HL+Cbd7f"'Zc.':e]KV|乬T1TU.#2|%{W,Y,?kP(zqcvOBu'!Ǻ҈s] cKr!'Azh UtwllW޾})a'"V[V:Z0\}YNj.PhD-B ݷ²Ǘ#lmƈ!E+^vTfHjO"Y *ߜX #sOtʰГHيmT8~4(+:}<>"*x-Fk6[kʾnoXGBxsIg% ;O/ڬ=< -/cu%\\wO)[zZ.{ >7n2T.6ڏ\ wKNx=)6^l/bKrӨ$Ҁ(9--Z=Cz`Rf Da!@s{<>ϡ'lUHzzC>Ywm~!7Xv"KyJ29RP }T @{liWf[; p`h;rVV6Ĉ,4~u2p`VS[3`;g&!㽓PA~?Y~b@G2: nG;=9|DFwy1o̶x-"#I;fI n~{7vDfVͣ0k$~ n۞U0aFѽ5Vsod3Cw]Ԋ ¨=bq`Y[iYh{MۭWHϻ1Wo񸚶*8XAjg7D7^3noD`SlHKμVnKJ\Q8vXE;`b%U찳B{:d=~(+ͮl!'%Y|ҦuV+C_ʌwy LUG[g CHHtr=:N7= H-h,>SAc1B{Fk5q^q:LCeF'Y3ޟ3jkGYhѩ9.L(bYlmy5qHG?t-Q{ =Ķ sۥ,dq[Y>@61,NJK?hɻ`8JSEFnSxN1pojIYv^eס#GNA̲{I6O={,=q=2 4!ni.\l X:CJ.wcވqyԿ3u qf v{+tV+*/BZA!02C>'6=ElwTYZ5&W)-f'a!{["{Iں霬icb$ @r^';TaB:8?t#Ӹuw%]>Xƀ% IX[Պ3Owt;Nfl+SpLJxԞd:+$wUAçG@2}#9*O~n1}G\gv{ԪW}܆j9HzRXhm!IYr:SΆg3O]&O<4EbGRrͷܫv AY}jǂ5MOeEJ>Iܴ4PQe.XkGR#c*#$G-a\U'85C[]q{ܫEN8C`zW\DM!V|(` ւ;uGf"nQNa{{,x=/YxJhpR*^9m6cgtd.?ijջgAmn *HGKN: &zڎaKMaY3e _+7$F;~җ8=̖F Kꩲ3^Jv>bd&IWlҢWLi63Yy<|}lOfY5gتKtlFTGEi,:&D!U!0yNzj&^ >[@jy)y?9̒ch l* mzd}ĎKxÉֽ*I(UKQ zwN|!itGuȠ 臬iiWLJ vq$FLݽpvwlJHK!*L̫Ǒf#tcs TU Kw}FwFY4eE>2I#j.LgVU@~'Ĉ,#M޹q޲2x;\d˗&$ 4UiUEփ=$TCfZ{ Bfū8 QI-H +Uv4&lgF2T 23;BO B.g {}ZL5Z$3.eEv3?r~pS2Yڡn4VͲ~1F*8')Z5";BQZlG"!DMŵ|!_;)lbvɻ29ARn=+rծ|ٴ5vɀ E{K}4\'L8Ay Ep$ RY=-3&Ys{Z׃vґumX~=e"!;3{;#\Kp0vԵpӳYO#ۨv49 wT8O{ɛ/Uگ\}#fy\DAt%_zdY|d(:aB`DQC;T  "LDh!&%=b|HRy-]w<% I׾>p}) MdGJB\[<2r^;Xq7?oҍؼrדOMVCfrW^' ?x\[cϳC~SᏏ^Xo,ʱ,=Jߤ X:F!y 2I))>_fѓF~ǜ,!%-氘h- O-ddV/9 "Eמ+ė:"N˗) e5-(-$_HmOOZi!%p ÝnXmzQE^>f/`X ʠO9hsP̍UCОz%|J)m K-4l wꜝYX]X}?8!CFfon{*#Q[Yih3Чܦg&%s_'-„M# bz6Mp0ՈpCc(A7# n[qߦ"޾9ߗYvۏtR^Yz#zIV[^ SRAeZU<>Z)'8]EmJHP"WそiObUοѯ}INm< PՍpgq9ݱU6ճx2Q3VvN Dl#ae3iAo+[ajQFC[.N{_1~6N%3h 3~]d)'s@J{Ҳ-?۶/Rh2خwSJZ,ڡϘz'}&>zu27f;ZM? tõW!M񔽵zƙdU.,j1k^uDzp_EDb勻x@k?|r .@'Boc! #dQs &]oBQ$  mw߶  SE@m  |3@fL @ Mڟ^vh>){K(Cg˃I>h-S>4 %BݽXQMr!Ho_|a;vξ6t'Xf#Y;!l{K0  peY8DWs}N &g9+Vۦ_k}ctc۱וcee^ۊ!X[>*9Y++S7VK YM.`}v4͊8 1=ns$HVE"+Lk~7sʝg$G`,ID1փTPNa ?b|&o]YQ}^{!:nV@VFͧصچD"d҈KwJe[ :{J?kNZT/2"_W4mS] t t##@9f$5جY'ҡړH+r!rg %#1twllWbPnnp7EO;ԫޟYhs;q@@xCWgW#oldž~;1CoN,vB_|.}IQs*ZI@Bn +چȇe(jʆe1s_@ | gꇐVӗm{(J+9*;>Yڊd_V}wxb+CMι8v^Rh,kK(А*G*PU~9{pU'NGC[o \o ğs<>Py䨝ͦLn`ܩo"YM[g5^;XԱ'`ג ]^%hp4~cwwW(|rʐc{n&?{~= /(6h,f.R ߓ;fJZ?G}䄠Y@xW8ctGI4+/J|JrRr^%TakX2F]s!X8Bm4қXW }nd}|^La%7{|1nkinicꆤA_GN1a¬FU! Xr)Oo9i ԧL``8Y!5}s݁|R1vPX9m6cgtQ.J/Q&ϚHDHaaiuC=U ]@/@+KHḧʁZ Ho Z򕑙di_"ƎRA>}~G 1JcWP53UTŘXҪ<_LݽpveSy< #!P:*c}@]BJpJ/Όd]<`F֖'2i#8I)i(҃tM]dsj諑~C~c QbTW39$pU4)@+js&R@NwÎPSՔTw^)p 1|Oɟ+<$; _FkMn~Uĩpvb>etP/}k(FmeaBaXVoS˨Nb%\RC(5IN͐adCm%av7WWQ Ԋj rT]Vw6.R,uE:ѫ*QA'hazb(REKRK/nBhm"jԋ`FѱCN@pv^}ҷZ@?$B~_{,gs] cFAOߔ5~Tq_ *! $U`X4 me+L-(i;6>}SVY6%E*mwG}ij~f!F-/nQ:zwm<  kHI8C d5'n=Wo= {j)ܗytgi4X+qk/nԊ3]cm}p`]}EMq޻/1˶qC7gm1xY˩\flYå;V R6#jXͽ1lˉ惸+]N'\?35FoܻVvFfsO%t'2*rX% ]^%GPJ1+qfN֯غJ hWH`m"MNFOmѾ`䅻ϑ..j1u p+!S _ǫ*%*5@U *NFVU֟X33%@ǀ %ߗtAۀ @!) @_!/邶@~C~c   З@Km@@!ߘ %.h@7@7 }I @ ) @_!/邶@~C~c   Зgoɾ`lKsf)S%^oAz=K"OzAj $2XD]c}֩UY}Z''u'Î̶" dt <ȟD_ޗ~Qx=QSS'ȭ] A%tratNŮ򟌚.c 㩽Wb7ݬː,@s̕ B7 Ӌ+Zg[\[!}|[!ۘVoKa@=hXnhk$ 5%^RI6;:|^Qhkfx}rl5{O>sճb/O 5y"k>FgdZ\4 j6/g %Qc$vceߢiWG~i5pX)ݬz{صjpiRX ;Ʒ&Oq6v?}^}|GK]`c?XOe+bnZt!}'V^{aÂɼ-T_Fƚi)LKFݿZ5'\}$&T*sJz(I*:Ϟj5tYMf2yd[=n;ct^0ߎ26=1=PqEy%% l+n){o%G].,bhXqo pC.й=CaBaH;WgO,[73φVrOp3`? 8/db_CZs/P߮,$4*Z=Jz6NEôej1czHzjUbwI-RNzz^?@N56~3k$,m5b NnM޺!Z>{uŴNe2L{rnO~>A z}GV|<}z=Gy.]ePf=LtqB>v4ASήv7%oNZN~g H?YA҈K;`jJIyseġ)ED5)9MYBeDFԻjmkis jBO-o$z6F*Y!q `>vOBu'u"&5D:T{r 9,ߜXZdPze؁I-W:ƺJYIc4ߥ \\ JpY]ٝ{ߋK,uXXr5iyP9 W~xDD6rvς@x$:(9*uƽVoChҲ/2t-؁D.v/gcˑMŀ͈.bܻw>탫s_ Hò(r`JvJr"6^>$¨eT|LlTBGN۞W Ҧ5uԣ5$-"Cq\@vCȟK7AwgKΨbZw9׬ c.AY \ӵt nw!8q'5O[Ƕ{}IUd* T,S>t $! \YLo(.UT$E9a "Efpg Sp%7Q{''ngf%~ 3+m-8&&{KiȮfme7֗dNZTFɻ`8JSEFnF;e7ZPYCw]ԊŨ=bq`k)O ZQcqH̲G+h*nB&-%F20LIrbO01R*Bvn\JF=hpf?fWXS6Gh<0Ybe?w5_w h(Uʸx2+350)o{jmINZ,?TKwը#9eVeȌl^V,dDN% y NWG7Ǿa5ntLr< c뮭&Cw#\j*rhD-ףcnt3qе/ #.^fa*;E^|lκ rfaDV`;hzW3RLo(22+PZB++`qfiꓘ&]>Pr4@sHy ciRUMv'X x>KOUP*hiz8Sͽ8OW]'G>R^Ta)zӶpl~5MOeEJ>Iܴ4bQe.XkGRCuuU%=}D%;u+<<fh7nQ55uylFIYfr8[+5EloFviwNGռuz 5xU @>SFj h$b[rͷ̟?)ҟD Z[`.85c;]y 2RXhm!ÎHReK1{bUȇF)yA)3ݦMm3vLGa q=ctu1<-\jؑ4Nj=Vh(H-t7Ҫ_F1=&O=sԑh]vDS3 ]0AA??j>E..Ȃce)fv Ӡ(WUU>'SO'wL$kwoAkc r1>;uymWM,$2$WB/!%x3HsS1Eoέ;(l3#*j* )jWFf6]29g5էDӝ6Ȓ)+ɐN:bK=pLkoC$?XU)SR? ;AP9FziAO-H +Uv4&2^PRE+H,f-/ f>9ƃh]M cP8 #GĄVH u Mv *eo0ۻ̻29@u)E"KZU%ҟ<֡`vQVY!q,3b7.^k7s9e?eRكKZ$3\)$4?1H[Ȕ\"T(~v ~};e)RY Y !:#m: Ǣ~4yYQR "k$reN*yr8 ry-3&Y'8<G$N~uyAO iҲ x)i,gZ#" iY|@LՍBL%e /n!Чhp?\mOɜЈ]1z(+s-' $+>- ')=N6kORP+^~SᏏ^Xo#>de%vہFQOoon-cV#vwG#IuޅÜ=x4R= 0CRy/\hvĭu=wAƥ"nܥy'%²>ɗ{˧wZquҿje)&?}dȝ+įpN#dFpV@"g Et;2 q }VWRECk T^Q+;DO=N @Yk5tE s*itmCaFR $@26~uvۣWues2&!nmOYi@M ž}T^`XŴ'1tyxjE5qzp1^CJFQ%g Dx+-$:˪͠TW4 }xOˌEdk,chZPbnIbdٝˬxqm?A"r#$h@Syܦg&),tqu)9o׾Œ$u *V[R1S|I5+Nk#0};;Ƅ ]]dmu[%9XF5'+i9EI ͖rg]cyQEqMas@U`.r%zmy6[5!UPC\f n_NU/L.!:7!MliXbwQCV"*L))m:pQP7e e>UeB,Ҩ%-jCUЌ1CȔЊ#di}!OݤQ/|m{+".x&uIsYLpo 5q7rh~ÔHՋOrrd]b\DRAeZU,:<㕂ox3es ^x5+qF'>=#>nN,h$d9L\QrFoK7,}ĭgầ|O֬ƙX;YbBrrAYUsɇJ"{!@~;h?oyK'zK3|~/Ɖ(>zu27f;ZM? tõWڮ <w9O[kgIVcO=XMέߐċ֮g(j9 c6WxMg]][d[_BAY۽׬j]ٝ:E>8!N/{.5R9׻p8z޵̷37{}H7 ?&q^НN[GhWJ֋6 P#-ZI@@d:}v1h@8!@9sFy?KϤ{& ]ȧW^ذ"zS/6c8m@<4/p^% _@ ]o)('!Ŧ>I2Nz ☿d7rTL);( e;\Z7ސ`~ߜXD"lg ##UgPnnp7EY7kO"!Gs&C|[||kΒVoC_~1>7@6C#ƨJ)W%=}D%;u+<<KSͽ8O]&O<4Eb C)G|ةK~ynia CHI¾̂0e +]Inz.cu itGwMথa:R9;*8ec#=gN)QyţTr  C$#ҋ3#JZ': 23˴F>úblݼՔ]c҄<`ShUeE9o o4yry~ʤv :TGP6trfD% _S[[P`|')%-SW#R@@n= 0B(J;ko7?oҍؼrדD')=NFA~kN^ Rݒ@@CpC'|}YuGhEnmGY\"pI۵o'IUTa B9SD#P2HkXV<im"aJO>Q P@0CjfcʚKЏc5[26z[ꎘpaܦxZc=L/(jaGuV`S{2\M! 36{XM>0Er~;?HmRNzC]p!ApY~:m5Gܘhk5Ļ*X0yW8))%KBp+)ؠ LßsF5gໍ֢3c$Hpn.ra@$ӻƷL-~{Uo7CoGk) 6EåOv- Vٴoh/ߢŀ΀ ϼ &@@]~* G/f@b@@@4P@ H  = _<@!@@@#Bg3 1    |y@l$@z@@U@h*$S?Hr@ 4Pr5iyPymY/$o̖0xF% gO:>BRS78e}ymd;kb4wր/./R9ޣBEijƭ)ŭ<]KL[8E#?,盒Eż+bnZt! Lօ"Z)UT3!4? h -80n5׷ᷟ(Hr]^bW^ذbrw}m^]ߍ5l+cZCPSiؖaJ'#yߓlg$+ˣ/m8;Pa$q&clw L/8k_d5{wP (SL˹iX#Y-,[xV;v%Jl9u""vI8AĻ'G 8f*6~{wL Hu1=nz86yvU>AOCjz74.?^wC)8+VYI?mUj[*x%abDFenh/g)CBm inFA *Jbҍh7Se_Vr[7vTzR8ޣT ?J#w`rTc濺=X[v+8uBB 37vg<OA0y{M>s3KoX =-'uGkO7b|OAԇm ޼{'f0, L~cߥf#Ws'eiQrֿ;};V,)ՙCB;⓫V$j^;SpȎZ:*zkv=)];warjӶ7 "$+tkvYi:OcB~6H'3jackamO:Դ6I0WwA+ gV#}CX1 z_ ntBVϿH$J@*dRcr~Mr90׷?MuіZSJ-\m 3 KRct%6=gM*;: xBIqjӍ;F>3}u1-NUR)#4LqL^>^nfٸj=<1fZmih3[a8`:9,{eYr\~P24>X82?=GȽc nBecqn?Y~Ϣ.OXX7'[Hţ yǜD\S"g:՞EBFn1#ذ:cy,nU=ne>}ǮB5#%Bitw :lx~̍`ȎRUt8[3۲9lU?*5jxyk+aWmZ:~܊]?8Qo@v[2^6),3NdwЖHYo֑G2=X@=]sSe>Lӛ5LB͇L8I5#g+}5քAF-^ܡihz]׌Q됏0wmnZK3fVNюEPSVHgч8 X_QQ~0ޕn:ww/y2kӈsIV/~fx}f~v)c+CMι8uH 9ՇL.xp|Oě)iB{N}ȚjwdؓawV|k^.2:"y+O<}uF#t^eGԇ7?k\[q8;#%>b?,kKh ^a?ٻk>܆IC -W@Ӕ]5*_:Dk +evu 1.Ԡ6tCҹ-n~0"ŮqeDe ^R^'d|$X+.gn&v TZoXibǪazue*Ӹ+Cn'*:paÑo`F|&f+x_p4Åk%l0ʈ3]枹ݢ!o&8>Py䨝ټ7V`M{1+rjM-ʅ&E j-=onί:S@J\j\C*9o_Ҹf=-d,.- ;f: Dz-oEi>Nu FH1vī,`qc>K(6{k-2E~W+gaI~-efKKJߙKJK@m49aJnlո4\!Sցਕ??QwGCCޗw.)=njDZ! P\fl+SpL^^4f0g6_qk)V%b:Mī]ul? Zhjdpj 8yc:)nv5yՖۿw { ys)԰ !~&C5Ij<x ;ўd2?hFSqY~nz:IH!_TVZ`|*?i4MKqQ؍N^|-c/!1^eN]݇Ԏ7f쌙=0^=npq&#e uڷVxL#3ankDÉ z3e 2̵rC +R^=gM{MrԒ:zXم ҔE'WQ7yq&Ӭ|!H8<:6B7#Yu/|H ѣhKaTB.+I*gk7d禖A2ʊrhWQ׆*shS jqK6_j !;mY!S2v!3c3ww_ltfw*)%]aБkW"F+W#C2Y Y !dǑ=bK*rr$z}ҫxQ1 Ñ(K +Uv405ɱ5Dst+j.LgPZlG"!MŵԵK\^8g$`έ;(}8MԅF>t(T:uwa kݩ̈ʁZ H Z򕑙dV^"rjIh d YarjdA 8T_!&}_nґ#(3^<Ko;5O3fj<_%,1=" Q'֥&ZKBP/-`O51l5 /lwj,^WA)hUp}aL* #"%rgFX2wyb(z8c c}|Ȼ2ÆyQmmi~"C:)ř %-Ud+H,nwva^S:Oy)T34'E0 3ES%/o6uK&zZ$Ռ,"“Yrag$KsUc:#]JL^3Jٱ" sF]mI7&?ϛ )Nf[ 8oM־>p}) (A[ua+^~SᏏ^@/ )ily7ZKpvb>،Tw^)p 1|O><8N>K YD `ͺ|YA{\\ ]$j`4^g!fcX04ܐ ;THë8t#T@zfeP5GOՑH srf]F| #d$/AWwP12c^d1LSkX~h(*MiCu M!˨,If"eh)jCee~/n_g=zŵGyvV[86>_}LƲjtR]FUw2"qz^ݖ´d²+iy9O~q2 &9 ФfD}Iӑn脯(B"ŹDfNīFȦ%KX5qؓI YL 92^CGؾ/#k ՗U }W`l8\\o`kVF$\G{2un\~c8H:NWsQdol8}*+gZ̴/9OϼaqTÄ8T5^GA3Ͽc/Fדrm㭆1ׯI(dC,5*W\o))1V/eaSfeuBT7vvU+ }3qvʕ#k1{]̋O~O]X(d;Vu%N}b'_B>l:ʮfn1'5Ԥ+V>A~]UrG{ׅ!Q|{\jޣ^\$J-Hg4PcXjI( (F+[pm%A-.iS3 4jI~qP7QaJINi` ՁuFHF( <$6%$(Sw#I܃&o4޾8Y?}SPS^V]ńKnխ+Hʗb߮agR|='L-rѐ1\^|gqoC.;m,gN{WR]B~sk7/M|Ȑg4 tWRnSf;! *xdۮUK ȰU9 21 O Ki_JY|9+!. YMuґmpyׯHv>E@seԆ1+_+j֕tõk- 9k{";7V< tSmÉ%$, i帓+.ih͙A-uGL8ްyr#4tᐃzHٌ=b5ư-'VXvGp Oy,g4'n=Wo= {jv>ů۔>JO'Ctˏz4‚\nJVF~7A㾵jO֍alkD]^`?y mWڻNg!ĵBp+YCD9HLS}R_ B7EVIk1Hjw|E1i޸w?x_ KN޽eT&WMJ&ܦxZc=Lw5|"kʚk3<3d5O{RRF:κ+Y.)3;UAqtt#CIʿgΘȻk[ 7۔;kK ^ I":&'g[y~-V`THw[xͥH^3,S.a9xn;Y{ps6D[]3}]q>`+5Yh/=aXmK"l5߽:;˥z'Zu{]'= ׆vO0ӂz$RQYOJ>8NET|m_k]]j"?;ƾk 0 +hujOt3q'n?`%3ʠ &^:;$=i;8hՄ lSw5tqf?4_ɧ4]GIXX!g Z  ПןD @ }f  ! 4@> @@ FȜYlӋÎ̶" dwr\r5iyP9ZYtSWv[V hR -ךHG'̜9֎{#zM~T3z|驺TL݁y>f~<}5p_? @%B~+bnZt!U%l<{P W^ذb2ogpeY~ԤT4ɭ;Nhd[_Rh0O7Ey%>]I|qꚻnkB8e}ym~ sgu"kg.mr  aDF ˧WۻcAw [=Jxߛ(Av#o pS^s.^/&{ҹt[on©-߷[WB~\@@!mT-TwbvL'9؉D :Fn;5ݶo `>ik웹@y:=< -cfHjO"Y *a5*S#jn|{-^A/8ԞK8;F*A%ȯc| D!0OV"Յ{W#q;V=@~loI\oqhzTRBZ%L~O!WGVrID]Ͳ_ª |`?P(Y"|̧ص%׈44~D- oEr>NV(n^vh-dd1ЮY)ԡzo;0 ͓rP Fxs*N\oR̉NRzc]e9g GTlxlU MUg H6#!'7WV&Ӡ^t_ W7uJv\]^RTvXB|FSY_i6Dg7AT3Z]#ewhE6?9ߵ©XˀOWuӹ[{#LK+@]/vj^ab!/ƋQ^ZZn^^Pԫ A&Y._6Ds(&S3ӕǩXT}HoNSR|Rq*w U7{5"PZn]g,n.wrtÚkNDHJta;әbAVU 78 rz2P1}$q?s=`RjzMr4uC{/Վ9s̩#;wp9v8NNZfTg Y Iܴ4F bI]BSSAb^4fcy9B 83*AxżqQBJd˗&,]Y_TyW[#[@Q̈ʁZ H-U-ܜԤ&sn~|z5B7]E^"!J+^Ee-l5BỤ!@UEaicEdG.˯cky~C0\]ᥤ$U~f:C~*oHNUKYEh i)<"CyBnB$cf`gGT0F>[VFYQUf>9ƃȫ3 cW%/ .K5iaʎFÄ||OҪH ~xtwV L/@ֶ?s\6LoE`Ծ>p}) q2Fvrnw4Qudx V,bn>,W>8%RGⱳ0! ob5F!@s!oiK7tחU# JuE#pgFCEUT[C&5~TEFQ-_^OeS2!6fo((dm(UnS3Q4=q!wߍr.SpϮp6RwtK3h4DD+V1l8+mQ[YihsVJù iPSOWKֵQaNL5>^ )Z)ބ*^CJF]tTC ^(|@K Tіk#W7 󗚙'Ø7#&zX!;\Wm㈒/d.p#IvY_^IAPkUuύpBnԕ<ɇlE%BS,nj)k({h/+ 5+ ʯ/^ɧ6WSeՔܢ8vu]Q^t]s-b(,Ea1ݶG83.ǚB4KNPÊ=zQó9%śgRf=|YT_VYrXI䬰q(g4PcXB•!PVB7Z00A'9TZmyu+<4m~xε!(|@Jh.t2sw5|jMJ5Fm틭!\WfkO[kgzytgD!9^8g;nҜ_Q#\/<)2f&~NYoy^KفKw"Ju<^QU]꤃x~OcpAl-gn˨ cWVt{_1~6]EtuMqV6Jʇ؞*uwWRUTG.Y3,9˅-pn! .xNSRdJhYIk1HjwU8%I̮v & y_S!@A@pgGoYz([ԉpEk*{uv*Z[p}ѝep?7!r Mp}=6 AZJ3 )0\YHGo = w(ݏ\|%&H^5 }]i7n4<7u Z,  w_ @wZ,  !5@C @X  !B~wh K/t@p@@;@-P@b ŚT~C~c   З & kע&v])Qx=QD@lr'>Vix?ɲBU`2W-B-ܧPE@dja53TmҀ |~ sEs%vXɶZ]˭ l<{82 IMLG&h /}j-@IC'IqR8Fq_xxRH"͐O/898c0~f!}lcl -KQj,p֤AV7T.HE:4G b'4`֑02k_qm`>7 "$+bCgW`rNy߃,j\SxBX/Ұ}?3 gw]mDZFkARa H,xro$r##Yy{d~לbTKsQ^)R)5Twp9 @0ݸ_óIgYsD0Cd: 3?ەA/>_~ @B>rryQqm`2 jNǞ^_: ᕐ^hG\U^qXp 9ՇL,/d[$5edBM1O˨i 03QD%Ƙʐws.}2jKR`ܩo#>sA2oglh;NC_ZerN?}TvB?>3E2؞CvI9O)m_~J[!*I(UKQ z!6$&h%$qjv8 בʴT>Ն6^igH]+zWŪ>{MrԒ:zXUOez$5NeEJ]InzH1Hs3]cT^ЅR21y葞3Dҫ= jsNPpp})zLRy{+w4r:7Սƽ-_/h8)iH?0'?~dG*$-\l$ޥMv2g/vgJI;kNDIDB:Lw')=uZaIk  @wBzcY58dx +Y[UM3DM @@02 |}S8V'9:k=-=Zr= E ;\nvr_+㬎zNmÉ%$,t@uQr0\ K{AwV8Nr"j m;b񆥿ϳ4J}n{l:Q_WixK3|~/ 1z޵̷37{}%Nk6=tHP Clw:e/:îp{g5I@dK$EDYdA"UqKҺխkhR܀jE6YD( [d%aO7T@BQyuν97g;3_%W`$)Q )@`4J|7/Zpoqjp=Xc ~%%_ychxry9oSg@ 208 H0? FFZ^ "%Wؠ@F&Z^ "w@ 4PZ^ "%Wؠ@FJ@ @W 4@ 0@h{@^aF@ (-b`/@^s3C}֡}\r^f', ~ M1ŗW/;_*rP&2:z1*w A71B@v_\{O,~JǎZMYU Sd7k#8  0SRCT)?r\AHx!fZ{_*쏾M|{Xb~ƙ5[[םjRD,q؛IgKQJpP ugudTKfhf<*kQ8pd*r6 9'N=racOCR+=5@%$П%OV-lSx N@q_ج!q8 œmC'i^a5 '9^7ߣ`'}lR[/6\Xʤ>GU?N`?c}$St־+mT߸0xcW4'7PYt/C1`w0kMq/vAѽX';4K Wv+T&[|?k@ctwChgFع#XpǻGѢ*M <~1a(U٢!R[#>f펯GkyNV{炲yڱknzHJ1?N1Crm-_g,VNѻ(q<,*=p?>V~,ڷk'8ScF]Preľ~ṣ7֎|Vy J&M%l"톴K$tݥG!{-ZPOqRJ8oIJ¾UM.,#OFv.+{C NfRO; LP ۜ^.zZzSgQGZ\1ˌ6pӉ8#㢦n9puFo|wOuq;lyў GR=sq,V0AOm r3)*=c+-i4CEG13i:OwN/ߩBcn6\SƓ}+}7G9bd:u+l43=~fQNыrVQe9OY\$٨;cmڛ .yk7b']( J\x"P}ʍV_zXDX) ϛ[՘1*,@`P*z:( M=;‚& YaL 61fwڳEc?>;o!*DY3.(+ek CD2lvx C}w%wWߞhpD*uow:ĴJhUTrpdAQA1wo P櫃̰Wej2Q'<{bK1)vGPQcϑ .(^oCN 9_J[83@mPhS ؓ .e/.jw~ <(D9'AM=))޶ӿx$Y /+jp|NmU':ϝiJSҴ lY! egB -hW"m*"~L߅f=gݴ ~I:cGt{uBj[e׼8; EJ>B6XQ_eKv!%?vTQ§s:=(ebv+ܝXr+qeaJ\s@1whVTx5YsEMߏp IY=*^W*E ݦ͊j֭t+ 8%y͂✧\] J~ x*DڬGMಇx(؃FѦo _s9lclZ6BKy*Fr>2_Mʩ?Ą>F@_Y7_NftH .tS_d~.KdUn/ E>;dMNkUPQ_vj#a61uFv:DIfpΣu]B li'OHb CB$%QT`b`QȌme0'Z[A @? w>=o5?Mle{f}o"@ &gu8l=@ F]z @~s PnP;=@( (Jjp |?xJCJ҄@&%_ 4G@@ @W@ 4+MQ PnP;=@( (Jjp |?xJC@~ևa)wE2C>a\C7``_k>>ߦ7'\.aʘ {(@_bdBg|q1>^PW1fuTY/LݤJ} ;L>U 6S_M@ߗB.͜K7nݼPV׌D)a}6agPnm]w2I^ao2@]Ax%_Y\3eycyηef :p%34 3(l2P[B Auc~Bo0_J~{SEWӟ6#|;/:y^Q|Qcr>|zK~jC} aPʓ>GW}_.c^eOx8?v#NB7MUrز͎1|?Q D_/NckV>[:^ 7+݋uRC @0P|eǼBKeG̪ 4:Ʈ?AwWH9v8nK=w{p$ Wߘΰ_~KTlQ]N~ʨa^)}-+~ɗ0Ud%܈M rtՒ)*DzK r8Ti*[VFk/@NșuӃ/z+ܯ |nXdvٝyՒQ.vcR,YN~ϙu膛70[Ƹ$ ըjD*`J!egШ{ǂEƑQ?;I@Vy_S$=mHS/\359>"EA׶L5q+gaywg,VNѻɄ(q<,*=p?>V~,ڷk'8Sc률:!,ʈ}73.-G"5G1BΓKk^tPPw?KMw~x>3/I#()X|%lO39g؏ BGU\orV>|҄*vݪr>qpri{RR#m;ϕ~'YGXMHDH$fCڥ`bңs9d_ËYg,"Gjӗ;C~>y GHd1{%ԉqdac9Kd) B@_s3EOKo>=C+fF2b:@Gtq$=x\$Ez[5M-'7뺸|6ּhO#Y{…,V0AOm r3)*=c+-i4CEG13i:OwN/ߩBcn6\SƓ}+}7G9bj2j:ەNtFοY.2wLZ5)aB$rkڝzgvM& P: Lц'PHFJ6 DGOM-?.Zpt\5BG]`K}yʍV_zXR275QEr[,IIڮ3&KMֵh*XGH0}JǨi {$ԉ[#eTiBr@`P*z::zw6-LU_Գ)>lPt~|v!ga7CT,i(+ek C C S*` ]J@px cD]ޱ|QL[$STCO.wI}M2Q zώ miG{$/놊qU)RrO,GF#]C^pW {Ƶ2~,IB$;/E60O8y,.ߝ vng3qX |W.|)dVѽl' ")ɮ5 >%=]{4AU67v-tiЂ#"Ȃb7傺o4vzYmby%S= y1exHIQen@DdfF{3-,]TBmH)!'"ks7*RL.TLgǴ,(v߶ R'btQ:(+d&"%@3BmŞVpN/S|}qiulL[iF!ʞ~F\fK뿳'eE-S[Հ7564BZQ^<>[F@_Y7^-N]Lc}m: .tS_d~~dUn/ E>;dMNkUPQ_vj#a7[qlX?>mXtc}]V)9Nr'9.lFޫI&f&w˱=jLm$S$3OqV_hVA:^iPk?1M<:Iu]mwA;Xg426x[L 6^_M ,Iӧ,B.rr1[VNۆ]4dG^9]2MYߩ-;C)ZV4'Zߓw$@ w購V#d Q\sO>ۊ7P gU#~4X3!]~oHy`}V6YS_xO/}ϖ{bxwKrr:n@! y}y( @O&| /%@ 0 @!@CJ<@ '%@ (P ʗCIENDB`GDyK yK http://spark-summit.org/wp-content/uploads/2014/07/Spark-Job-Server-Easy-Spark-Job-Management-Chan-Chu.pdfDyK yK Thttps://github.com/ooyala/spark-jobserverDyK yK |http://blog.cloudera.com/blog/2014/01/a-new-web-ui-for-spark/DyK yK <mailto:aqumegeemail@gmail.comZh06666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH nH sH tH 8`8 Normal_HmH sH tH Z@Z  Heading 1$<@&5CJ KH OJQJ\^JaJ \@\  Heading 2$<@& 56CJOJQJ\]^JaJV@V  Heading 3$<@&5CJOJQJ\^JaJ>@>  Heading 4$@& 5CJ\:@:  Heading 5$@&5\H@H I' Heading 6 <@&5CJ\aJDA`D Default Paragraph FontVi@V  Table Normal :V 44 la (k (No List 6U`6 Hyperlink >*B*phZ^@Z 0 Normal (Web)dd[$\$CJOJPJQJ^JaJFV`F FollowedHyperlink >*B* ph4"4 Header  !4 @24 Footer  !.)@A. Page NumberQ ft0a ft5q ft3 ft4 ft68B@8 Body Text B*ph.X`. Emphasis6]Bb`B HTML CodeCJOJPJQJ^JaJe@ ?HTML Preformatted7 2( Px 4 #\'*.25@9OJPJQJ^J*W`* `Strong5\  Vbday&& Vnoprint  Zpcaps(!( guilabel@O2@ JRstyle17#dd[$\$CJaJFOBF k0 insidemain$dd[$\$CJaJ&Q& =style11a H2pre:Or: 4{lead'dd[$\$CJaJDD o contributornametrigger,, zs cravgstarsff zs'asinreviewssummary acr-popover non-lazy>> zsswsprite s_star_4_566 zshistogrambutton<< zsswsprite s_chevron,, zs bylinepipeLL zsamazonlikebuttoncountcomboFF zsamazonlikebuttonwrapper zs=amazonlikebutton down unclickableifnojavascript off clickable&!& zsalttextR1R zstiny amazonlikecountcontainer6A6 zsamazonlikecountQ taga plnq atn pun atvBOB 66apple-converted-space.. + mw-headline44 +mw-editsectionDD +mw-editsection-bracket** 4 highlightToT lN0HTML Preformatted CharOJPJQJ^J$o$ 5Jauthor:o: 5Ja-color-secondaryo! 'ko1 'ncoA 'ooQ 'noa 'ktoq 'nvo 'nbBoB 'Heading 6 Char5CJ\aJ$/$ 'likeh3,/, ' smalltitleo 'mio 'so 'err/ 'nn/ 'c1/ 'sc2/!2 ' eb_header_tab8/18 'contact_redesign&/A& 'summaryf\@fV' z-Top of FormU$&dPa$<CJOJQJ^JaJToaT U'z-Top of Form Char<CJOJQJ^JaJ,/q, ' button_cssl]@lY'z-Bottom of FormX$$dNa$<CJOJQJ^JaJZoZ X'z-Bottom of Form Char<CJOJQJ^JaJPK!pO[Content_Types].xmlj0Eжr(΢]yl#!MB;.n̨̽\A1&ҫ QWKvUbOX#&1`RT9<l#$>r `С-;c=1g~'}xPiB$IO1Êk9IcLHY<;*v7'aE\h>=^,*8q;^*4?Wq{nԉogAߤ>8f2*<")QHxK |]Zz)ӁMSm@\&>!7;wP3[EBU`1OC5VD Xa?p S4[NS28;Y[꫙,T1|n;+/ʕj\\,E:! t4.T̡ e1 }; [z^pl@ok0e g@GGHPXNT,مde|*YdT\Y䀰+(T7$ow2缂#G֛ʥ?q NK-/M,WgxFV/FQⷶO&ecx\QLW@H!+{[|{!KAi `cm2iU|Y+ ި [[vxrNE3pmR =Y04,!&0+WC܃@oOS2'Sٮ05$ɤ]pm3Ft GɄ-!y"ӉV . `עv,O.%вKasSƭvMz`3{9+e@eՔLy7W_XtlPK! ѐ'theme/theme/_rels/themeManager.xml.relsM 0wooӺ&݈Э5 6?$Q ,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-!pO[Content_Types].xmlPK-!֧6 -_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!!Z!theme/theme/theme1.xmlPK-! ѐ'( theme/theme/_rels/themeManager.xml.relsPK]#   G/!=#%(-j/1=,DHHoLM$SX[ce"fufgk8lpnqryg}EdڌB:`F@b$(Cz}~0!,8\;j@CfFLMNOPIVQcLlyzz{{|R}}3~2P<߁ kG B9ɔgD(Шwй{|f  )v-0t=or g]#S )!f!("v""5###$%G%z%%&&&''k'''(~(((A)555@@@IAAA=FFF,GuG{GH IIHIIJAKKKO:PuPPPQQiRmRUNVVVa"b,bcbbbqfffggghlhxh~hhh qqq}qE{{{ڄ?K^jݛOu)hN[DB9XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX !8@0( BCBGERO B S  ? _Hlt353021662 _Hlt303445750prereq# %5@@$ %6W ` % ( w}~(3_fhrtOU*.4<5:;B    & , 1!6!=!F!Y!^!_!f!}""""% %b1h1~1111112242723 3557777778888888 99*939:9W9b9p9s999999999999999: :::::+:.:H:K:T:e:::::::;;t;;3<;<@<C<I<M<d<g<q<|<<<<<<<<<<<<<< ="=%=.=<=S=V=`=o=======>>(>/>>>>>>>>>>>>>??? ???/?6?:?>???@&@/@6@9@B@]@i@j@n@@@AAB$B#C/CwCCDDDDvG{GGG%K1KKK]LfL2M>M\MeMgMsMwMMMMMMUNaNuNNNNNNNNNNNO OO(O/O1OHOOOUOWOnOqOOOOOOQQQQSSVVYY\\]]]] ^^)^.^0^3^4^<^?^M^T^\^^^g^h^k^^^__ aa/b9b;b@bBbEbbbb c1c?c@cHccccccccccdddd'dZdbddddde!efff g ggggmhxh,i5iDiPiQiTiviiiiiiijllqqrrr"rsrwrrrrrrrrrs(s)s-s|sssssssttt_tctutxtttYueuuu4v>v@vHvvvv w3w>w?wCwFwNwwwQxZxixqx y'yByNyQyYyyyyyyyNzQzVzYzzzzzzzv}y}}}RU_nƒŃƃɃsw:DEXpzĉJVt~or֋ً Ògp—Ηҗٗڗܛuݜ bnozju֥ߥըݨiry!ʰְ szűƱͱ 0¶Zes~2;j #$03?P\^mtw|1:(OTVYZ_bpty{#%07:nzOR(uz,-04;>BFNU]bjOT#MUcfp|MT_b F RX%(KO^d>B""*+//0+0u0|000000001 1&1A1G1[1a1w1}11111111122-232K2Q2i2o2222222333!393?3a3g3333333778888889+9W9c9p9s99999+:.:H:K::::::::::;;;B;G;t;;;;,<2<@<C<d<g<<<<<<<"=%=S=V=======(>/>Y>_>k>>>>>>@@N@P@B$BgCmCpDvDDDEEZE_EEEEEFFG GHHNNNOO!O'O/ONOUOOOOOOOSSW"WwWW]]^^)^.^T^\^__ aaccdddd ggDiQiqqrrrrs(ssssszttttSuXuuu4v>vvv3w>wQxZx=yAyyyNzRzzz{{|&|||v}y}}}~~RU{|ƒŃlrHO CH:D9Amtܐߐҗٗv|MirQX,2agƱ´δ6<Ƿɷsɽ2<jP\)OTty#15!BI +.")"&;>HN+2!mq9;y~()]=GE_,cf::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::f@Bmb^N@p@|@NAUA=BIKB<@CGCCD`hFyFdGHkH5Jq~J;K)LL ,L NQNPSP AP^PnPStS+"T8T+UgUpUiV@`WJ|W#$XnYcZ[{H[\<]@]WT]n]z]Y_ i_n_6`Q5ac;Qc+ d$dffBf.gSg{hyjVkL0lR0mybm(nbJnUnynp@peTpYpZp#}pJq;r]%r?rw_rnrLSs~t!zuHvwy\y$.Uk@ HKqrcz&  9"`BCkuArD%J<K@O7E*3k"ST{~ Q++%DZL@( ( Lkz( ( @UnknownG*Ax Times New Roman5Symbol3 *Cx ArialaMinionPro-RegularMinion ProW MinionPro-ItMinion Pro;[xPHelveticaE  Lucida Console7CourierEyPHelvetica NeueSMenloTimes New Roman? *Cx Courier New3Times]0UbuntuMono-RegularCambriaW0UbuntuMono-BoldCambria[0UbuntuMono-ItalicCambriae@MyriadPro-SemiboldCondCambriae MyriadPro-CondMyriad Pro CondI ??Arial Unicode MS;WingdingsA$BCambria Math"qh+&jW #w#w&24 3QHP ?~ 2!xx ,Notes on Apache Spark 2 Jeff Risberg Jeff Risberg(        Oh+'0 , P \ ht|'Notes on Apache Spark 2Jeff Risberg Normal.dotmJeff Risberg264Microsoft Macintosh Word@@NbTk@c# ՜.+,D՜.+,Lx   ,'(Stanford - Graduate School of Businessw Notes on Apache Spark 2 Title((V^j_PID_LINKBASE _PID_HLINKS'AA0(D=wmailto:aqumegeemail@gmail.com: >http://blog.cloudera.com/blog/2014/01/a-new-web-ui-for-spark/7 *https://github.com/ooyala/spark-jobserver.7khttp://spark-summit.org/wp-content/uploads/2014/07/Spark-Job-Server-Easy-Spark-Job-Management-Chan-Chu.pdfGo$https://github.com/sbt/sbt-assembly2C8http://spark.apache.org/docs/latest/api/core/index.html'org.apache.spark.storage.StorageLevel$Ao0http://spark.apache.org/docs/latest/tuning.htmlAo0http://spark.apache.org/docs/latest/tuning.html2g8http://spark.apache.org/docs/latest/api/core/index.html&org.apache.spark.storage.StorageLevelDg8http://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDDDg8http://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDDDg~8http://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDDDg{8http://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.rdd.RDD!xPhttp://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Text.html ~uWhttp://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/IntWritable.html1rThttp://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/Writable.html1koghttp://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.html1klghttp://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/SequenceFileInputFormat.htmlpai'http://wiki.apache.org/hadoop/AmazonS3` fOhttp://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Encoder.htmlu+cKhttp://spark.apache.org/docs/latest/api/java/org/apache/spark/sql/Row.htmlU`9https://spark.apache.org/docs/latest/api/java/index.html`4];https://jaceklaskowski.gitbooks.io/mastering-apache-spark/ZIhttps://databricks.com/blog/2016/07/26/introducing-apache-spark-2-0.htmlP"WXhttps://databricks.com/blog/2016/08/15/how-to-use-sparksession-in-apache-spark-2-0.htmlYT9http://spark.apache.org/docs/latest/running-on-yarn.htmloOQ:http://spark.apache.org/docs/latest/running-on-mesos.html8JN:http://spark.apache.org/docs/latest/spark-standalone.htmlG0KAhttp://spark.apache.org/docs/latest/scala-programming-guide.html master-urlseH8http://spark.apache.org/docs/latest/api/core/index.htmlorg.apache.spark.SparkConf E-https://github.com/damirv/spark-template.git;BHhttps://cwiki.apache.org/confluence/display/SPARK/Contributing+to+Spark;?`http://typesafe.com/blog/apache-spark-and-the-typesafe-reactive-platform-a-match-made-in-heavenR<)https://typesafe.com/activator/templates filter:sparkg96http://typesafe.com/activator/template/spark-workshopL6Ihttps://www.edx.org/course/introduction-apache-spark-uc-berkeleyx-cs105x X3http://www.meetup.com/__ms91638402/spark-users/events/223361529/comments/454529887/t/uc1_rd/?read=1&_af=event&_af_eid=223361529&itemTypeToken=COMMENT&expires=1442021888459&sig=9816131d0d2791ee41e1d3f06f30cb5d34b4eede0Uhttp://spark-summit.org/2014/talk/scalable-distributed-decision-trees-in-spark-mllib;--1http://shop.oreilly.com/product/0636920035091.do tab_04_2<(*1http://shop.oreilly.com/product/0636920028512.do tab_04_2;-'1http://shop.oreilly.com/product/0636920035091.do tab_04_2W$Mhttp://blog.cloudera.com/blog/2014/03/apache-spark-a-delight-for-developers/;!Jhttps://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf[Ehttp://www.ibm.com/developerworks/linux/library/l-sparkdataanalysis/>2https://github.com/databricks/spark-knowledgebasei^https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples{G&http://spark-summit.org/2014/training5http://spark.apache.org/docs/latest/quick-start.html<o+http://spark.apache.org/documentation.htmlI' *http://en.wikipedia.org/wiki/Apache_Spark cite_note-16:W +http://en.wikipedia.org/wiki/Vowpal_Wabbit3R+http://en.wikipedia.org/wiki/Apache_Mahout5t#http://spark.apache.org/streaming/a$http://en.wikipedia.org/wiki/Yahoo!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry FData 9L1Table xWordDocument0SummaryInformation(DocumentSummaryInformation84*CompObj` F Microsoft Word 97-2004 DocumentNB6WWord.Document.8