Introduction

This is a forecast report. The goal is to assist users in evaluating current forecasts in the context of past forecasts and to translate the forecast component into key assumptions about food security.

The report includes the following key components:

  1. A verbal summary of assumptions based on the statistics in this forecast

  2. Mean Area, Production, and Yield over the years 2009 to 2019:This provides context for interpreting the grain data

  3. Historical Out of Sample Forecast Error Averaged Over a 10 Year+ Period. We show the Mean Absolute Percent Error (MAPE).

  4. Yield Forecast, (based on November 2021 Precip, NDVI, Et0 ) expressed as percent of mean yield over the period 2009 - 2019.

  5. Forecasts and Forecast Error in Analog Years We show specific forecasts and forecast error for years were climatologically similar to those in this report.

Assumption Statements [NOT YET UPDATED FOR THIS OND REPORT]

Average Forecast Error For This Point in the Season

At this point in the season historical forecast error, is on average, below 50% for 46 out of the 46 admin units used in the forecast.


Admin Units Forecast to have Above or Below Average Yields

Of those 46 admin units:

3 are forecast to be severely below average1 (<50% of average)
16 are forecast to be below average (< 90% of average)
14 are forecast to be average (between 90 to 110% of average)
16 are forecast to be above average (> 110% of average)

Averages are based on the most recent 10 year period of observed yields: 2009 - 2019


The forecast identifies severe yield issues (lowest on record) in the following admin units: Mombasa, Embu, Busia

The forecast identifies substantially below-average yields (among the lowest 3 on record) in the following admin units: Mombasa, Taita Taveta, Embu, Nyandarua, Nandi, Baringo, Laikipia, Nakuru, Kakamega, Busia, Kisumu, Migori, Kisii

The forecast identifies substantially above-normal yields (among the highest 3 of record) in the following admin units: Nyeri, Elgeyo-Marakwet, Kericho, Bomet


Summary Figures

Mean area, production, and yields for the years 2009 to 2019.



Out of Sample Forecast Error (MAPE)

Mean Absolute Percent Error (MAPE) calculated based on historical out of sample seasonal forecasts. Lower scores indicate greater accuracy. Forecasts are based on model type MODEL2



Yield Forecast for November 2021

Forecast values expressed as percent of Mean Yields over the Years 2009 - 2019.

The figure shows predicted percent of mean (center) as well as lower (left) and higher (right) predicted percent of mean intervals.



Static and Dynamic Version of Main Forecast

Roll over the polygon borders to get the district name and % of mean forecast value.

Static Version

This map shows the main % of mean forecast value along with district lables for reference.

This table shows the forecast percentage of mean values in the above table along with the mean yield values from the first figure.


Table of Mean Yields and Predicted Percent of Mean Values
District % of mean % of mean (low) % of mean (high)
Mombasa 0.70 0.49 0.91
Kwale 0.65 0.44 0.86
Kilifi 1.38 0.87 1.89
Tana River 1.10 0.85 1.35
Lamu 0.88 0.76 1.00
Taita Taveta 0.83 0.83 0.83
Meru 0.80 0.80 0.80
Tharaka Nithi 1.36 0.95 1.78
Embu 0.62 0.46 0.78
Kitui 0.69 0.18 1.19
Machakos 1.42 0.87 1.96
Makueni 1.19 0.41 1.98
Nyandarua 1.12 0.70 1.55
Nyeri 1.21 0.98 1.44
Kirinyaga 1.05 0.68 1.42
Murang'a 1.17 0.66 1.68
Kiambu 1.30 0.66 1.93
West Pokot 0.52 0.28 0.77
Samburu 1.43 0.86 2.00
Trans Nzoia 1.16 1.11 1.20
Uasin Gishu 1.20 1.03 1.36
Elgeyo-Marakwet 0.92 0.79 1.06
Nandi 0.85 0.64 1.07
Baringo 1.69 1.52 1.86
Laikipia 1.54 1.20 1.88
Nakuru 0.85 0.72 0.97
Narok 0.87 0.73 1.01
Kajiado 1.25 0.94 1.55
Kericho 0.90 0.72 1.09
Bomet 0.89 0.70 1.08
Kakamega 1.03 1.03 1.03
Vihiga 0.72 0.65 0.79
Bungoma 1.10 1.07 1.13
Busia 0.77 0.68 0.86
Siaya 0.86 0.60 1.13
Kisumu 1.52 1.12 1.92
Homa Bay 0.61 0.61 0.61
Migori 0.58 0.47 0.69
Kisii 0.66 0.47 0.85
Nyamira 0.60 0.34 0.86

Analog Year Forecasts

Yield forecasts in analog years. <–DESCRIPTION OF ANALOG YEAR PROCESS–>.
***


Analog Year Forecasts Errors

Forecast errors in analog years. If observed data is not available in a given year we cannot calculate forecast errors. Values are expressed a percentage of observed yields in a given year (t):


\[\frac{(observed_{(t)}-forecast_{(t)})}{observed_{(t)}}\] ***

Positive (+) values indicate an under prediction. Negative (-) values indicate an over prediction.



  1. Averages are based on the most recent 10 year period of observed yields: 2009 - 2019↩︎

  2. Extra/Extended Trees. A type of Random Forest Model↩︎

LS0tCnRpdGxlOiAiRm9yZWNhc3QgUmVwb3J0IHdpdGggQW5hbG9nIFllYXJzLUtlbnlhIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCmZpZ193aWR0aDogNwpmaWdfaGVpZ2h0OiA2CmZpZ19jYXB0aW9uOiB0cnVlCi0tLQoKYGBge3IsZXZhbD1UUlVFLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFLHJlc3VsdHM9J2hpZGUnfQojLS0tLS0tLS0tLS0tLS0tLS0tLUJhc2UgU2V0dXAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpybShsaXN0PWxzKCkpCgojLS0tU2V0IFByb2plY3QgRGlyZWN0b3JpZXMKZGlyQmFzZTwtJy9Wb2x1bWVzL0dvb2dsZURyaXZlL015IERyaXZlLycKCmRpckJhc2UyPC0nL1ZvbHVtZXMvR29vZ2xlRHJpdmUvU2hhcmVkIGRyaXZlcy9DSEMgVGVhbSBEcml2ZSAvJwoKIy1Qcm9qZWN0IERpcmVjdG9yaWVzCmRpclByb2o8LXBhc3RlMChkaXJCYXNlMiwncHJvamVjdF9tYWNoaW5lX2xlYXJuaW5nX2ZvcmVjYXN0aW5nLycpICNwcm9qZWN0IGRpcmVjdG9yeQoKZGlyVmlld2VyPC1wYXN0ZTAoZGlyUHJvaiwndmlld2VyLycpCmRpclZpZXdlck91dFN0YXRpYzwtcGFzdGUwKGRpclZpZXdlciwndmlld2VyX3N0YXRpY19zaGFwZXMvJykKZGlyVmlld2VyRHluYW1pYzwtcGFzdGUwKGRpclZpZXdlciwndmlld2VyX2R5bmFtaWNfc2hhcGVzLycpCgpkaXJSZXBvcnQ8LXBhc3RlMChkaXJQcm9qLCdmb3JlY2FzdF9yZXBvcnRpbmcvJykKZGlyUmVwb3J0UmRhdGE8LXBhc3RlMChkaXJSZXBvcnQsJ2ZvcmVjYXN0X3JlcG9ydGluZ19SZGF0YS8nKQoKbGlicmFyeShzdHJpbmdyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkocmFzdGVyKQpsaWJyYXJ5KHJnZGFsKQpsaWJyYXJ5KG1nY3YpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkobHVicmlkYXRlKQpsaWJyYXJ5KHNmKQpsaWJyYXJ5KHJtYXBzaGFwZXIpCmxpYnJhcnkodmlyaWRpcykKbGlicmFyeShzY2FsZXMpCmxpYnJhcnkocGxvdGx5KQpsaWJyYXJ5KGZvcmNhdHMpCmxpYnJhcnkoa25pdHIpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShzaGlueSkKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiNQYXJhbWV0ZXJzCkNVUlJFTlRfWUVBUjwtMjAyMQpNT05USDwtMTEKREVLQUQ8LTEKTU9ERUw8LSdFVCcKQ09VTlRSWTwtJ0tlbnlhJwojQ1JPUF9BUkVBPC0yICAjUGVyY2VudApBTkFMT0dfWUVBUlM8LWMoMTk5OSwyMDAwLDIwMDEsMjAwOCwyMDA5LDIwMTEsMjAxMiwyMDE3KQoKbW9udGhfbmFtZTwtbW9udGgubmFtZVtNT05USF0gI21vbnRoIHRoZSBwcm9kdWN0IGlzIGJhc2VkIG9uCgojLS1Mb2FkIEV4aXN0aW5nIFBsb3RzCnNldHdkKGRpclJlcG9ydFJkYXRhKQpsb2FkKGZpbGU9cGFzdGUwKCcyMF9mb3JlY2FzdF9yZXBvcnRpbmdfbWFpbl9wbG90cycsbW9udGhfbmFtZSxDT1VOVFJZLCcuUmRhdGEnKSkKbG9hZChmaWxlPXBhc3RlMCgnMDFfZm9yZWNhc3RfcmVwb3J0X2Fnc3RhdG1hcHNfJyxDT1VOVFJZLCcuUmRhdGEnKSkKYGBgCiMgSW50cm9kdWN0aW9uClRoaXMgaXMgYSBmb3JlY2FzdCByZXBvcnQuICoqVGhlIGdvYWwgaXMgdG8gYXNzaXN0IHVzZXJzIGluIGV2YWx1YXRpbmcgY3VycmVudCBmb3JlY2FzdHMgaW4gdGhlIGNvbnRleHQgb2YgcGFzdCBmb3JlY2FzdHMqKiBhbmQgKip0byB0cmFuc2xhdGUgdGhlIGZvcmVjYXN0IGNvbXBvbmVudCBpbnRvIGtleSBhc3N1bXB0aW9ucyBhYm91dCBmb29kIHNlY3VyaXR5LioqCgpUaGUgcmVwb3J0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcga2V5IGNvbXBvbmVudHM6CgoxLiAqKipBIHZlcmJhbCBzdW1tYXJ5IG9mIGFzc3VtcHRpb25zIGJhc2VkIG9uIHRoZSBzdGF0aXN0aWNzIGluIHRoaXMgZm9yZWNhc3QqKiogCgoyLiAqKipNZWFuIEFyZWEsIFByb2R1Y3Rpb24sIGFuZCBZaWVsZCBvdmVyIHRoZSB5ZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCB0byBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYDoqKipUaGlzIHByb3ZpZGVzIGNvbnRleHQgZm9yIGludGVycHJldGluZyB0aGUgZ3JhaW4gZGF0YQoKMy4gKioqSGlzdG9yaWNhbCBPdXQgb2YgU2FtcGxlIEZvcmVjYXN0IEVycm9yIEF2ZXJhZ2VkIE92ZXIgYSAxMCBZZWFyKyBQZXJpb2QqKiouIFdlIHNob3cgdGhlICoqKk0qKiplYW4gKioqQSoqKmJzb2x1dGUgKioqUCoqKmVyY2VudCAqKipFKioqcnJvciAoKioqTUFQRSoqKikuCgo0LiAqKipZaWVsZCBGb3JlY2FzdCoqKiwgKGJhc2VkIG9uIGByIGxpc192YXJzX3JlcG9ydCRtb250aF9uYW1lYCBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2V2YXJfeWVhcmAgYHIgbGlzX3ZhcnNfcmVwb3J0JHZhcl9uYW1lYCApIGV4cHJlc3NlZCBhcyAqKnBlcmNlbnQgb2YgbWVhbiB5aWVsZCoqIG92ZXIgdGhlIHBlcmlvZCBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCAtIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLgoKNS4gKioqRm9yZWNhc3RzIGFuZCBGb3JlY2FzdCBFcnJvciBpbiBBbmFsb2cgWWVhcnMqKiogV2Ugc2hvdyBzcGVjaWZpYyBmb3JlY2FzdHMgYW5kIGZvcmVjYXN0IGVycm9yIGZvciB5ZWFycyB3ZXJlIGNsaW1hdG9sb2dpY2FsbHkgc2ltaWxhciB0byB0aG9zZSBpbiB0aGlzIHJlcG9ydC4KCiMgQXNzdW1wdGlvbiBTdGF0ZW1lbnRzIFtOT1QgWUVUIFVQREFURUQgRk9SIFRISVMgT05EIFJFUE9SVF0KCiMjIyMgQXZlcmFnZSBGb3JlY2FzdCBFcnJvciBGb3IgVGhpcyBQb2ludCBpbiB0aGUgU2Vhc29uCkF0IHRoaXMgcG9pbnQgaW4gdGhlIHNlYXNvbiAqKipoaXN0b3JpY2FsIGZvcmVjYXN0IGVycm9yLCBpcyBvbiBhdmVyYWdlLCBiZWxvdyA1MCUgZm9yIDQ2IG91dCBvZiB0aGUgNDYgYWRtaW4gdW5pdHMqKiogdXNlZCBpbiB0aGUgZm9yZWNhc3QuCgoqKioKCiMjIyMgQWRtaW4gVW5pdHMgRm9yZWNhc3QgdG8gaGF2ZSBBYm92ZSBvciBCZWxvdyBBdmVyYWdlIFlpZWxkcwpPZiB0aG9zZSAqKio0NiBhZG1pbiB1bml0czoqKioKCiozIGFyZSBmb3JlY2FzdCB0byBiZSBzZXZlcmVseSBiZWxvdyBhdmVyYWdlXltBdmVyYWdlcyBhcmUgYmFzZWQgb24gdGhlIG1vc3QgcmVjZW50IDEwIHllYXIgcGVyaW9kIG9mIG9ic2VydmVkIHlpZWxkczogYHIgbGlzX3ZhcnNfcmVwb3J0JG1pbl9hZ2AgLSBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYF0gKDw1MCUgb2YgYXZlcmFnZSkgIAoqMTYgYXJlIGZvcmVjYXN0IHRvIGJlIGJlbG93IGF2ZXJhZ2UgKDwgOTAlIG9mIGF2ZXJhZ2UpICAKKjE0IGFyZSBmb3JlY2FzdCB0byBiZSBhdmVyYWdlIChiZXR3ZWVuIDkwIHRvIDExMCUgb2YgYXZlcmFnZSkgIAoqMTYgYXJlIGZvcmVjYXN0IHRvIGJlIGFib3ZlIGF2ZXJhZ2UgKD4gMTEwJSBvZiBhdmVyYWdlKSAgCgoqKkF2ZXJhZ2VzKiogYXJlIGJhc2VkIG9uIHRoZSBtb3N0IHJlY2VudCAxMCB5ZWFyIHBlcmlvZCBvZiBvYnNlcnZlZCB5aWVsZHM6IGByIGxpc192YXJzX3JlcG9ydCRtaW5fYWdgIC0gYHIgbGlzX3ZhcnNfcmVwb3J0JG1heF9hZ2AKCioqKiAKCioqKlRoZSBmb3JlY2FzdCBpZGVudGlmaWVzIHNldmVyZSB5aWVsZCBpc3N1ZXMgKGxvd2VzdCBvbiByZWNvcmQpIGluIHRoZSBmb2xsb3dpbmcgYWRtaW4gdW5pdHM6KioqCk1vbWJhc2EsIEVtYnUsIEJ1c2lhCgoqKipUaGUgZm9yZWNhc3QgaWRlbnRpZmllcyBzdWJzdGFudGlhbGx5IGJlbG93LWF2ZXJhZ2UgeWllbGRzIChhbW9uZyB0aGUgbG93ZXN0IDMgb24gcmVjb3JkKSBpbiB0aGUgZm9sbG93aW5nIGFkbWluIHVuaXRzOioqKgpNb21iYXNhLCBUYWl0YSBUYXZldGEsIEVtYnUsIE55YW5kYXJ1YSwgTmFuZGksIEJhcmluZ28sIExhaWtpcGlhLCBOYWt1cnUsIEtha2FtZWdhLCBCdXNpYSwgS2lzdW11LCBNaWdvcmksIEtpc2lpCgoqKipUaGUgZm9yZWNhc3QgaWRlbnRpZmllcyBzdWJzdGFudGlhbGx5IGFib3ZlLW5vcm1hbCB5aWVsZHMgKGFtb25nIHRoZSBoaWdoZXN0IDMgb2YgcmVjb3JkKSBpbiB0aGUgZm9sbG93aW5nIGFkbWluIHVuaXRzOioqKgpOeWVyaSwgRWxnZXlvLU1hcmFrd2V0LCBLZXJpY2hvLCBCb21ldAoKKioqCgojIFN1bW1hcnkgRmlndXJlcwoKIyMjIyBNZWFuIGFyZWEsIHByb2R1Y3Rpb24sIGFuZCB5aWVsZHMgZm9yIHRoZSB5ZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCB0byBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2FnYC4KCioqKgpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KcDFhbGwKYGBgCioqKgoKCgoKCiMjIyMgT3V0IG9mIFNhbXBsZSBGb3JlY2FzdCBFcnJvciAoTUFQRSkKTWVhbiBBYnNvbHV0ZSBQZXJjZW50IEVycm9yIChNQVBFKSBjYWxjdWxhdGVkIGJhc2VkIG9uIGhpc3RvcmljYWwgb3V0IG9mIHNhbXBsZSBzZWFzb25hbCBmb3JlY2FzdHMuICoqTG93ZXIgc2NvcmVzIGluZGljYXRlIGdyZWF0ZXIgYWNjdXJhY3kqKi4gRm9yZWNhc3RzIGFyZSBiYXNlZCBvbiBtb2RlbCB0eXBlIGBNT0RFTGBeW0V4dHJhL0V4dGVuZGVkIFRyZWVzLiBBIHR5cGUgb2YgUmFuZG9tIEZvcmVzdCBNb2RlbF0KCioqKgpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KcDIKYGBgCioqKgoKCiMgWWllbGQgRm9yZWNhc3QgZm9yIGByIGxpc192YXJzX3JlcG9ydCRtb250aF9uYW1lYCBgciBsaXNfdmFyc19yZXBvcnQkbWF4X2V2YXJfeWVhcmAgCkZvcmVjYXN0IHZhbHVlcyBleHByZXNzZWQgYXMgcGVyY2VudCBvZiBNZWFuIFlpZWxkcyBvdmVyIHRoZSBZZWFycyBgciBsaXNfdmFyc19yZXBvcnQkbWluX2FnYCAtIGByIGxpc192YXJzX3JlcG9ydCRtYXhfYWdgLiAKClRoZSBmaWd1cmUgc2hvd3MgKioqcHJlZGljdGVkIHBlcmNlbnQgb2YgbWVhbioqKiAoY2VudGVyKSBhcyB3ZWxsIGFzIGxvd2VyIChsZWZ0KSBhbmQgaGlnaGVyIChyaWdodCkgKioqcHJlZGljdGVkIHBlcmNlbnQgb2YgbWVhbioqKiBpbnRlcnZhbHMuCgoqKioKYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTgsZmlnLmhlaWdodD04fQojcDM8LWdncGxvdGx5KHA9cDMsdG9vbHRpcD1jKCdkaXN0cmljdCcsJ3Blcl9vZl9tZWFuJykpCnAxCmBgYAoqKioKCiMjIyMgU3RhdGljIGFuZCBEeW5hbWljIFZlcnNpb24gb2YgTWFpbiBGb3JlY2FzdApSb2xsIG92ZXIgdGhlIHBvbHlnb24gYm9yZGVycyB0byBnZXQgdGhlIGRpc3RyaWN0IG5hbWUgYW5kICUgb2YgbWVhbiBmb3JlY2FzdCB2YWx1ZS4KCmBgYHtyLGVjaG89RkFMU0Usd2FybmluZz1GQUxTRSxtZXNzYWdlPUZBTFNFLGZpZy5hbGlnbj0nY2VudGVyJyxmaWcud2lkdGg9OCxmaWcuaGVpZ2h0PTh9CiNwMUxzCnAxTDwtZ2dwbG90bHkocDFMLHRvb2x0aXA9YygnYWRtaW4xJywndmFsdWUnKSkgJT4lIGxheW91dChsZWdlbmQgPSBsaXN0KG9yaWVudGF0aW9uID0gImgiLCB4ID0gMC40LCB5ID0gLTAuMikpCnAxTApgYGAKIyMjIyBTdGF0aWMgVmVyc2lvbgpUaGlzIG1hcCBzaG93cyB0aGUgbWFpbiAlIG9mIG1lYW4gZm9yZWNhc3QgdmFsdWUgYWxvbmcgd2l0aCBkaXN0cmljdCBsYWJsZXMgZm9yIHJlZmVyZW5jZS4KYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLGZpZy53aWR0aD04LGZpZy5oZWlnaHQ9OH0KcDFMcwoKYGBgCgojIyMjIFRoaXMgdGFibGUgc2hvd3MgdGhlIGZvcmVjYXN0IHBlcmNlbnRhZ2Ugb2YgbWVhbiB2YWx1ZXMgaW4gdGhlIGFib3ZlIHRhYmxlIGFsb25nIHdpdGggdGhlIG1lYW4geWllbGQgdmFsdWVzIGZyb20gdGhlIGZpcnN0IGZpZ3VyZS4gCioqKgpgYGB7cixlY2hvPUZBTFNFLHdhcm5pbmc9RkFMU0UsbWVzc2FnZT1GQUxTRX0KdDE8LWtuaXRyOjprYWJsZShkdGFiLCBjYXB0aW9uID0gJ1RhYmxlIG9mIE1lYW4gWWllbGRzIGFuZCBQcmVkaWN0ZWQgUGVyY2VudCBvZiBNZWFuIFZhbHVlcycpCnQxPC1rYWJsZV9zdHlsaW5nKHQxLGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsImNvbmRlbnNlZCIpKQpzY3JvbGxfYm94KHQxLCBoZWlnaHQgPSAnMzAwcHgnLCB3aWR0aCA9ICcxMDAlJywKICBib3hfY3NzID0gImJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IHBhZGRpbmc6IDFweDsgIiwgZXh0cmFfY3NzID0gTlVMTCwKICBmaXhlZF90aGVhZCA9IFRSVUUpCgoKYGBgCioqKgoKIyBBbmFsb2cgWWVhciBGb3JlY2FzdHMKWWllbGQgZm9yZWNhc3RzIGluIGFuYWxvZyB5ZWFycy4gPC0tREVTQ1JJUFRJT04gT0YgQU5BTE9HIFlFQVIgUFJPQ0VTUy0tPi4gIAoqKioKYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTcuNSxmaWcuaGVpZ2h0PTcuNX0KcDMKYGBgCioqKgoKIyBBbmFsb2cgWWVhciBGb3JlY2FzdHMgRXJyb3JzCkZvcmVjYXN0IGVycm9ycyBpbiBhbmFsb2cgeWVhcnMuIElmIG9ic2VydmVkIGRhdGEgaXMgbm90IGF2YWlsYWJsZSBpbiBhIGdpdmVuIHllYXIgd2UgY2Fubm90IGNhbGN1bGF0ZSBmb3JlY2FzdCBlcnJvcnMuIFZhbHVlcyBhcmUgZXhwcmVzc2VkIGEgcGVyY2VudGFnZSAgb2Ygb2JzZXJ2ZWQgeWllbGRzIGluIGEgZ2l2ZW4geWVhciBfKHQpXzoKCioqKgokJFxmcmFjeyhvYnNlcnZlZF97KHQpfS1mb3JlY2FzdF97KHQpfSl9e29ic2VydmVkX3sodCl9fSQkCioqKgoKKioqUG9zaXRpdmUgKCspKioqIHZhbHVlcyBpbmRpY2F0ZSBhbiBfdW5kZXIgcHJlZGljdGlvbl8uICoqKk5lZ2F0aXZlICgtKSoqKiB2YWx1ZXMgaW5kaWNhdGUgYW4gX292ZXIgcHJlZGljdGlvbl8uCgoqKioKYGBge3IsZWNobz1GQUxTRSx3YXJuaW5nPUZBTFNFLG1lc3NhZ2U9RkFMU0UsZmlnLndpZHRoPTcuNSxmaWcuaGVpZ2h0PTcuNX0KcDQKYGBg