").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/flask/flask_web_service/Chapter10/static/js/npm.js b/flask/flask_web_service/Chapter10/static/js/npm.js
deleted file mode 100644
index bf6aa80..0000000
--- a/flask/flask_web_service/Chapter10/static/js/npm.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
-require('../../js/transition.js')
-require('../../js/alert.js')
-require('../../js/button.js')
-require('../../js/carousel.js')
-require('../../js/collapse.js')
-require('../../js/dropdown.js')
-require('../../js/modal.js')
-require('../../js/tooltip.js')
-require('../../js/popover.js')
-require('../../js/scrollspy.js')
-require('../../js/tab.js')
-require('../../js/affix.js')
\ No newline at end of file
diff --git a/flask/flask_web_service/Chapter10/templates/home.html b/flask/flask_web_service/Chapter10/templates/home.html
old mode 100644
new mode 100755
diff --git a/flask/flask_web_service/Chapter10/waitercaller.py b/flask/flask_web_service/Chapter10/waitercaller.py
index 23a3d44..31427ad 100755
--- a/flask/flask_web_service/Chapter10/waitercaller.py
+++ b/flask/flask_web_service/Chapter10/waitercaller.py
@@ -6,11 +6,11 @@
from flask import request
from flask import url_for
-from flask.ext.login import LoginManager
-from flask.ext.login import login_required
-from flask.ext.login import login_user
-from flask.ext.login import logout_user
-from flask.ext.login import current_user
+from flask_login import LoginManager
+from flask_login import login_required
+from flask_login import login_user
+from flask_login import logout_user
+from flask_login import current_user
from passwordhelper import PasswordHelper
from bitlyhelper import BitlyHelper
diff --git a/hongbao.png b/hongbao.png
new file mode 100755
index 0000000..e03c507
Binary files /dev/null and b/hongbao.png differ
diff --git a/opencv_crash_deep_learning/ch01/detect_faces.py b/opencv_crash_deep_learning/ch01/detect_faces.py
new file mode 100755
index 0000000..e2daedb
--- /dev/null
+++ b/opencv_crash_deep_learning/ch01/detect_faces.py
@@ -0,0 +1,63 @@
+# USAGE
+# python detect_faces.py --image rooster.jpg --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel
+
+# import the necessary packages
+import numpy as np
+import argparse
+import cv2
+
+# construct the argument parse and parse the arguments
+ap = argparse.ArgumentParser()
+ap.add_argument("-i", "--image", required=True,
+ help="path to input image")
+ap.add_argument("-p", "--prototxt", required=True,
+ help="path to Caffe 'deploy' prototxt file")
+ap.add_argument("-m", "--model", required=True,
+ help="path to Caffe pre-trained model")
+ap.add_argument("-c", "--confidence", type=float, default=0.5,
+ help="minimum probability to filter weak detections")
+args = vars(ap.parse_args())
+
+# load our serialized model from disk
+print("[INFO] loading model...")
+net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])
+
+# load the input image and construct an input blob for the image
+# by resizing to a fixed 300x300 pixels and then normalizing it
+image = cv2.imread(args["image"])
+(h, w) = image.shape[:2]
+blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0,
+ (300, 300), (104.0, 177.0, 123.0))
+
+# pass the blob through the network and obtain the detections and
+# predictions
+print("[INFO] computing object detections...")
+net.setInput(blob)
+detections = net.forward()
+
+# loop over the detections
+for i in range(0, detections.shape[2]):
+ # extract the confidence (i.e., probability) associated with the
+ # prediction
+ confidence = detections[0, 0, i, 2]
+
+ # filter out weak detections by ensuring the `confidence` is
+ # greater than the minimum confidence
+ if confidence > args["confidence"]:
+ # compute the (x, y)-coordinates of the bounding box for the
+ # object
+ box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
+ (startX, startY, endX, endY) = box.astype("int")
+
+ # draw the bounding box of the face along with the associated
+ # probability
+ text = "{:.2f}%".format(confidence * 100)
+ y = startY - 10 if startY - 10 > 10 else startY + 10
+ cv2.rectangle(image, (startX, startY), (endX, endY),
+ (0, 0, 255), 2)
+ cv2.putText(image, text, (startX, y),
+ cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)
+
+# show the output image
+cv2.imshow("Output", image)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch01/detect_faces_video.py b/opencv_crash_deep_learning/ch01/detect_faces_video.py
new file mode 100755
index 0000000..b1f645f
--- /dev/null
+++ b/opencv_crash_deep_learning/ch01/detect_faces_video.py
@@ -0,0 +1,83 @@
+# USAGE
+# python detect_faces_video.py --prototxt deploy.prototxt.txt --model res10_300x300_ssd_iter_140000.caffemodel
+
+# import the necessary packages
+from imutils.video import VideoStream
+import numpy as np
+import argparse
+import imutils
+import time
+import cv2
+
+# construct the argument parse and parse the arguments
+ap = argparse.ArgumentParser()
+ap.add_argument("-p", "--prototxt", required=True,
+ help="path to Caffe 'deploy' prototxt file")
+ap.add_argument("-m", "--model", required=True,
+ help="path to Caffe pre-trained model")
+ap.add_argument("-c", "--confidence", type=float, default=0.5,
+ help="minimum probability to filter weak detections")
+args = vars(ap.parse_args())
+
+# load our serialized model from disk
+print("[INFO] loading model...")
+net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])
+
+# initialize the video stream and allow the cammera sensor to warmup
+print("[INFO] starting video stream...")
+vs = VideoStream(src=0).start()
+time.sleep(2.0)
+
+# loop over the frames from the video stream
+while True:
+ # grab the frame from the threaded video stream and resize it
+ # to have a maximum width of 400 pixels
+ frame = vs.read()
+ frame = imutils.resize(frame, width=400)
+
+ # grab the frame dimensions and convert it to a blob
+ (h, w) = frame.shape[:2]
+ blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)), 1.0,
+ (300, 300), (104.0, 177.0, 123.0))
+
+ # pass the blob through the network and obtain the detections and
+ # predictions
+ net.setInput(blob)
+ detections = net.forward()
+
+ # loop over the detections
+ for i in range(0, detections.shape[2]):
+ # extract the confidence (i.e., probability) associated with the
+ # prediction
+ confidence = detections[0, 0, i, 2]
+
+ # filter out weak detections by ensuring the `confidence` is
+ # greater than the minimum confidence
+ if confidence < args["confidence"]:
+ continue
+
+ # compute the (x, y)-coordinates of the bounding box for the
+ # object
+ box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
+ (startX, startY, endX, endY) = box.astype("int")
+
+ # draw the bounding box of the face along with the associated
+ # probability
+ text = "{:.2f}%".format(confidence * 100)
+ y = startY - 10 if startY - 10 > 10 else startY + 10
+ cv2.rectangle(frame, (startX, startY), (endX, endY),
+ (0, 0, 255), 2)
+ cv2.putText(frame, text, (startX, y),
+ cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 255), 2)
+
+ # show the output frame
+ cv2.imshow("Frame", frame)
+ key = cv2.waitKey(1) & 0xFF
+
+ # if the `q` key was pressed, break from the loop
+ if key == ord("q"):
+ break
+
+# do a bit of cleanup
+cv2.destroyAllWindows()
+vs.stop()
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch02/cv_rotate.py b/opencv_crash_deep_learning/ch02/cv_rotate.py
new file mode 100755
index 0000000..44d1557
--- /dev/null
+++ b/opencv_crash_deep_learning/ch02/cv_rotate.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-11-17
+
+import imutils
+import cv2
+
+image = cv2.imread("jp.png")
+rotated = imutils.rotate(image, 90)
+cv2.imshow("Imutils Rotation", rotated)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch02/jp.png b/opencv_crash_deep_learning/ch02/jp.png
new file mode 100755
index 0000000..32eb227
Binary files /dev/null and b/opencv_crash_deep_learning/ch02/jp.png differ
diff --git a/opencv_crash_deep_learning/ch02/opencv_tutorial_01.py b/opencv_crash_deep_learning/ch02/opencv_tutorial_01.py
new file mode 100755
index 0000000..9ee4448
--- /dev/null
+++ b/opencv_crash_deep_learning/ch02/opencv_tutorial_01.py
@@ -0,0 +1,93 @@
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-11-17
+
+import imutils
+import cv2
+
+# 读取图片信息
+image = cv2.imread("jp.png")
+(h, w, d) = image.shape
+print("width={}, height={}, depth={}".format(w, h, d))
+
+# 显示图片
+cv2.imshow("Image", image)
+cv2.waitKey(0)
+
+# 访问像素
+(B, G, R) = image[100, 50]
+print("R={}, G={}, B={}".format(R, G, B))
+
+# 选取图片区间 ROI (Region of Interest)
+roi = image[60:160, 320:420]
+cv2.imshow("ROI", roi)
+cv2.waitKey(0)
+
+# 缩放
+resized = cv2.resize(image, (200, 200))
+cv2.imshow("Fixed Resizing", resized)
+cv2.waitKey(0)
+
+# 按比例缩放
+r = 300.0 / w
+dim = (300, int(h * r))
+resized = cv2.resize(image, dim)
+cv2.imshow("Aspect Ratio Resize", resized)
+cv2.waitKey(0)
+
+# 使用imutils缩放
+resized = imutils.resize(image, width=300)
+cv2.imshow("Imutils Resize", resized)
+cv2.waitKey(0)
+
+# 顺时针旋转45度
+center = (w // 2, h // 2)
+M = cv2.getRotationMatrix2D(center, -45, 1.0)
+rotated = cv2.warpAffine(image, M, (w, h))
+cv2.imshow("OpenCV Rotation", rotated)
+cv2.waitKey(0)
+
+# 使用imutils旋转
+rotated = imutils.rotate(image, -45)
+cv2.imshow("Imutils Rotation", rotated)
+cv2.waitKey(0)
+
+
+# 使用imutils无损旋转
+rotated = imutils.rotate_bound(image, 45)
+cv2.imshow("Imutils Bound Rotation", rotated)
+cv2.waitKey(0)
+
+# apply a Gaussian blur with a 11x11 kernel to the image to smooth it,
+# useful when reducing high frequency noise 高斯模糊
+# https://www.pyimagesearch.com/2016/07/25/convolutions-with-opencv-and-python/
+blurred = cv2.GaussianBlur(image, (11, 11), 0)
+cv2.imshow("Blurred", blurred)
+cv2.waitKey(0)
+
+# 画框
+output = image.copy()
+cv2.rectangle(output, (320, 60), (420, 160), (0, 0, 255), 2)
+cv2.imshow("Rectangle", output)
+cv2.waitKey(0)
+
+# 画圆
+output = image.copy()
+cv2.circle(output, (300, 150), 20, (255, 0, 0), -1)
+cv2.imshow("Circle", output)
+cv2.waitKey(0)
+
+# 划线
+output = image.copy()
+cv2.line(output, (60, 20), (400, 200), (0, 0, 255), 5)
+cv2.imshow("Line", output)
+cv2.waitKey(0)
+
+# 输出文字
+output = image.copy()
+cv2.putText(output, "https://china-testing.github.io", (10, 25),
+ cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
+cv2.imshow("Text", output)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch02/opencv_tutorial_02.py b/opencv_crash_deep_learning/ch02/opencv_tutorial_02.py
new file mode 100755
index 0000000..bdfeea7
--- /dev/null
+++ b/opencv_crash_deep_learning/ch02/opencv_tutorial_02.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-11-19
+# python opencv_tutorial_02.py --image tetris_blocks.png
+
+import argparse
+import imutils
+import cv2
+
+ap = argparse.ArgumentParser()
+ap.add_argument("-i", "--image", required=True,
+ help="path to input image")
+args = vars(ap.parse_args())
+
+image = cv2.imread(args["image"])
+cv2.imshow("Image", image)
+cv2.waitKey(0)
+
+# 转为灰度图
+gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+cv2.imshow("Gray", gray)
+cv2.waitKey(0)
+
+# 边缘检测
+edged = cv2.Canny(gray, 30, 150)
+cv2.imshow("Edged", edged)
+cv2.waitKey(0)
+
+# 门限
+thresh = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)[1]
+cv2.imshow("Thresh", thresh)
+cv2.waitKey(0)
+
+# 发现边缘
+cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
+ cv2.CHAIN_APPROX_SIMPLE)
+cnts = cnts[0] if imutils.is_cv2() else cnts[1]
+output = image.copy()
+
+# loop over the contours
+for c in cnts:
+ # draw each contour on the output image with a 3px thick purple
+ # outline, then display the output contours one at a time
+ cv2.drawContours(output, [c], -1, (240, 0, 159), 3)
+ cv2.imshow("Contours", output)
+ cv2.waitKey(0)
+
+# draw the total number of contours found in purple
+text = "I found {} objects!".format(len(cnts))
+cv2.putText(output, text, (10, 25), cv2.FONT_HERSHEY_SIMPLEX, 0.7,
+ (240, 0, 159), 2)
+cv2.imshow("Contours", output)
+cv2.waitKey(0)
+
+# we apply erosions to reduce the size of foreground objects
+mask = thresh.copy()
+mask = cv2.erode(mask, None, iterations=5)
+cv2.imshow("Eroded", mask)
+cv2.waitKey(0)
+
+# 扩大
+mask = thresh.copy()
+mask = cv2.dilate(mask, None, iterations=5)
+cv2.imshow("Dilated", mask)
+cv2.waitKey(0)
+
+# a typical operation we may want to apply is to take our mask and
+# apply a bitwise AND to our input image, keeping only the masked
+# regions
+mask = thresh.copy()
+output = cv2.bitwise_and(image, image, mask=mask)
+cv2.imshow("Output", output)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch02/pil_rotate.py b/opencv_crash_deep_learning/ch02/pil_rotate.py
new file mode 100755
index 0000000..1a03b0e
--- /dev/null
+++ b/opencv_crash_deep_learning/ch02/pil_rotate.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-11-17
+
+from PIL import Image
+
+im = Image.open("jp.png")
+im2 = im.rotate(90, expand=True)
+im2.show()
\ No newline at end of file
diff --git a/opencv_crash_deep_learning/ch02/tetris_blocks.png b/opencv_crash_deep_learning/ch02/tetris_blocks.png
new file mode 100755
index 0000000..a794d0d
Binary files /dev/null and b/opencv_crash_deep_learning/ch02/tetris_blocks.png differ
diff --git a/other/wing7_crack.py b/other/wing7_crack.py
new file mode 100644
index 0000000..294f0f8
--- /dev/null
+++ b/other/wing7_crack.py
@@ -0,0 +1,73 @@
+import string
+import random
+import hashlib
+
+BASE16 = '0123456789ABCDEF'
+BASE30 = '123456789ABCDEFGHJKLMNPQRTVWXY'
+
+
+def randomstring(size=20, chars=string.ascii_uppercase + string.digits):
+ return ''.join((random.choice(chars) for _ in range(size)))
+
+
+def BaseConvert(number, fromdigits, todigits, ignore_negative=True):
+ if not ignore_negative and str(number)[0] == '-':
+ number = str(number)[1:]
+ neg = 1
+ else:
+ neg = 0
+ x = 0
+ for digit in str(number):
+ x = x * len(fromdigits) + fromdigits.index(digit)
+
+ res = ''
+ while x > 0:
+ digit = x % len(todigits)
+ res = todigits[digit] + res
+ x //= len(todigits)
+
+ if neg:
+ res = '-' + res
+ return res
+
+
+
+def AddHyphens(code):
+ return code[:5] + '-' + code[5:10] + '-' + code[10:15] + '-' + code[15:]
+
+
+def SHAToBase30(digest):
+ tdigest = ''.join([c for i, c in enumerate(digest) if i // 2 * 2 == i])
+ result = BaseConvert(tdigest, BASE16, BASE30)
+ while len(result) < 17:
+ result = '1' + result
+ return result
+
+
+def loop(ecx, lichash):
+ part = 0
+ for c in lichash:
+ part = ecx * part + ord(c) & 1048575
+ return part
+
+rng = AddHyphens('CN' + randomstring(18, '123456789ABCDEFGHJKLMNPQRTVWXY'))
+print('License id: ' + rng)
+act30 = input('Enter request code:')
+lichash = act30
+hasher = hashlib.sha1()
+act30 = act30.encode()
+hasher.update(act30)
+rng = rng.encode()
+hasher.update(rng)
+lichash = AddHyphens(lichash[:3] + SHAToBase30(hasher.hexdigest().upper()))
+part5 = format(loop(221, lichash), '05x') + format(loop(13, lichash), '05x') + format(loop(93, lichash), '05x') + format(loop(27, lichash), '05x')
+
+
+part5 = BaseConvert(part5.upper(), BASE16, BASE30)
+while len(part5) < 17:
+ part5 = '1' + part5
+
+part5 = 'AXX' + part5
+print('Activation code: ' + AddHyphens(part5))
+print('..........................................')
+input()
diff --git a/others.py b/others.py
new file mode 100755
index 0000000..cc82254
--- /dev/null
+++ b/others.py
@@ -0,0 +1,49 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-8
+# datas.py
+import os
+from email.mime.text import MIMEText
+from email.mime.multipart import MIMEMultipart
+from email.mime.application import MIMEApplication
+import smtplib
+
+
+
+def send_mail(recipients, sub, content, from_name='比对测试',server="smtp.126.com",
+ files=[]):
+ EMAIL_SEND_USER = os.environ.get('EMAIL_SEND_USER')
+ EMAIL_SEND_PASSPORT = os.environ.get('EMAIL_SEND_PASSPORT')
+ msg = MIMEMultipart()
+ msg.attach(MIMEText(content, 'plain'))
+ msg['Subject'] = sub
+ msg['From'] = "{}<{}>".format(from_name, EMAIL_SEND_USER)
+ msg['To'] = ", ".join(recipients)
+ try:
+ s = smtplib.SMTP()
+ s.connect(server)
+ s.login(EMAIL_SEND_USER, EMAIL_SEND_PASSPORT)
+ for f in files or []:
+ with open(f, "rb") as fil:
+ part = MIMEApplication(
+ fil.read(),
+ Name=os.path.basename(f)
+ )
+ # After the file is closed
+ part['Content-Disposition'] = 'attachment; filename="%s"' % os.path.basename(f)
+ msg.attach(part)
+
+ print("send email to {}".format(recipients))
+ s.sendmail(EMAIL_SEND_USER, recipients, msg.as_string())
+ s.close()
+ return True
+ except Exception as e:
+ print(str(e))
+ return False
+
+if __name__ == '__main__':
+
+ if send_mail(['xurongzhong@sensetime.com'],"活体比对测试结果", "测试结果",
+ files=[r'output.xls']):
+ print("发送成功")
\ No newline at end of file
diff --git a/pandas/python_data_analyse_crash_course/1/col.py b/pandas/python_data_analyse_crash_course/1/col.py
index acec347..2ee5a78 100755
--- a/pandas/python_data_analyse_crash_course/1/col.py
+++ b/pandas/python_data_analyse_crash_course/1/col.py
@@ -1,7 +1,8 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
-# CreateDate: 2018-3-12
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# col.py
import pandas as pd
@@ -9,11 +10,18 @@
df = pd.read_csv(r"../data/gapminder.tsv", sep='\t')
# 列操作
-country_df = df['country']
+country_df = df['country'] # 列名选取单列
+
+print("\n\n列首5行")
print(country_df.head())
+
+print("\n\n列尾5行")
print(country_df.tail())
-country_df_dot = df.country
+
+country_df_dot = df.country # 点号的方式选取列
+print("\n\n点号的方式选取列")
print(country_df_dot.head())
-subset = df[['country', 'continent', 'year']]
-print(subset.head())
+subset = df[['country', 'continent', 'year']] # 选取多列
+print("\n\n选取多列")
+print(subset.head())
\ No newline at end of file
diff --git a/pandas/python_data_analyse_crash_course/1/group.py b/pandas/python_data_analyse_crash_course/1/group.py
index b691366..e7d5f54 100755
--- a/pandas/python_data_analyse_crash_course/1/group.py
+++ b/pandas/python_data_analyse_crash_course/1/group.py
@@ -1,29 +1,34 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
-# CreateDate: 2018-3-12
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# group.py
import pandas as pd
df = pd.read_csv(r"../data/gapminder.tsv", sep='\t')
+print("\n\n年人均产值")
print(df.groupby('year')['lifeExp'].mean())
+print("\n\n基于年分组")
grouped_year_df = df.groupby('year')
print(type(grouped_year_df))
print(grouped_year_df)
+print("\n\nlifeExp")
grouped_year_df_lifeExp = grouped_year_df['lifeExp']
print(type(grouped_year_df_lifeExp))
print(grouped_year_df_lifeExp)
+print("\n\n年平均产值")
mean_lifeExp_by_year = grouped_year_df_lifeExp.mean()
print(mean_lifeExp_by_year)
-
+print("\n\n基于年和洲分组")
print(df.groupby(['year', 'continent'])[['lifeExp',
'gdpPercap']].mean())
-# 统计每个洲的国家数
+print("\n\n统计每个洲的国家数")
print(df.groupby('continent')['country'].nunique())
diff --git a/pandas/python_data_analyse_crash_course/1/load.py b/pandas/python_data_analyse_crash_course/1/load.py
index d41cb9a..abd3600 100755
--- a/pandas/python_data_analyse_crash_course/1/load.py
+++ b/pandas/python_data_analyse_crash_course/1/load.py
@@ -1,15 +1,28 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
-# CreateDate: 2018-3-12
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# load.py
import pandas as pd
df = pd.read_csv(r"../data/gapminder.tsv", sep='\t')
+
+print("\n\n查看前五行")
print(df.head())
+
+print("\n\n查看类型")
print(type(df))
+
+print("\n\n查看大小")
print(df.shape)
+
+print("\n\n查看列名")
print(df.columns)
+
+print("\n\n查看dtypes(基于列)")
print(df.dtypes)
+
+print("\n\n查看统计信息")
print(df.info())
\ No newline at end of file
diff --git a/pandas/python_data_analyse_crash_course/1/mix.py b/pandas/python_data_analyse_crash_course/1/mix.py
index 55a5d45..ba58c74 100755
--- a/pandas/python_data_analyse_crash_course/1/mix.py
+++ b/pandas/python_data_analyse_crash_course/1/mix.py
@@ -1,13 +1,20 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
-# CreateDate: 2018-3-12
-# group.py
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
+# mix.py
import pandas as pd
df = pd.read_csv(r"../data/gapminder.tsv", sep='\t')
+# 混合选取
+print("\n\nloc选取坐标")
print(df.loc[42, 'country'])
+
+print("\n\niloc选取坐标")
print(df.iloc[42, 0])
+
+print("\n\nloc选取子集")
print(df.loc[[0, 99, 999], ['country', 'lifeExp', 'gdpPercap']])
\ No newline at end of file
diff --git a/pandas/python_data_analyse_crash_course/1/row.py b/pandas/python_data_analyse_crash_course/1/row.py
index a8ae57c..f0a2bc4 100755
--- a/pandas/python_data_analyse_crash_course/1/row.py
+++ b/pandas/python_data_analyse_crash_course/1/row.py
@@ -1,7 +1,8 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
-# CreateDate: 2018-3-12
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# row.py
import pandas as pd
@@ -9,19 +10,34 @@
df = pd.read_csv(r"../data/gapminder.tsv", sep='\t')
# 行操作,注意df.loc[-1]是非法的
+print("\n\n第一行")
print(df.loc[0])
+
+print("\n\n行数")
number_of_rows = df.shape[0]
+print(number_of_rows)
+
last_row_index = number_of_rows - 1
+print("\n\n最后一行")
print(df.loc[last_row_index])
+
+print("\n\ntail的方法输出最后一行")
print(df.tail(n=1))
subset_loc = df.loc[0]
subset_head = df.head(n=1)
+print("\n\nloc的类型为序列Series")
print(type(subset_loc))
+
+print("\n\nhead的类型为数据帧DataFrame")
print(type(subset_head))
+print("\n\nloc选取三列,类型为数据帧DataFrame")
print(df.loc[[0, 99, 999]])
print(type(df.loc[[0, 99, 999]]))
+print("\n\niloc选取第一行")
print(df.iloc[0])
+
+print("\n\niloc选取三行")
print(df.iloc[[0, 99, 999]])
diff --git a/pandas/python_data_analyse_crash_course/2/create.py b/pandas/python_data_analyse_crash_course/2/create.py
index 366e644..3dcf01c 100755
--- a/pandas/python_data_analyse_crash_course/2/create.py
+++ b/pandas/python_data_analyse_crash_course/2/create.py
@@ -1,18 +1,22 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Author: xurongzhong#126.com wechat:pythontesting qq group:630011153
-# CreateDate: 2018-3-13
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# create.py
import pandas as pd
+print("\n\n创建序列Series")
s = pd.Series(['banana', 42])
print(s)
+print("\n\n指定索引index创建序列Series")
s = pd.Series(['Wes McKinney', 'Creator of Pandas'], index=['Person', 'Who'])
print(s)
# 注意:列名未必为执行的顺序,通常为按字母排序
+print("\n\n创建数据帧DataFrame")
scientists = pd.DataFrame({
' Name': ['Rosaline Franklin', 'William Gosset'],
' Occupation': ['Chemist', 'Statistician'],
@@ -21,7 +25,7 @@
' Age': [37, 61]})
print(scientists)
-# 指定顺序
+print("\n\n指定顺序(index和columns)创建数据帧DataFrame")
scientists = pd.DataFrame(
data={'Occupation': ['Chemist', 'Statistician'],
'Born': ['1920-07-25', '1876-06-13'],
diff --git a/pandas/python_data_analyse_crash_course/2/series.py b/pandas/python_data_analyse_crash_course/2/series.py
index 4da09ce..e4f5d4b 100755
--- a/pandas/python_data_analyse_crash_course/2/series.py
+++ b/pandas/python_data_analyse_crash_course/2/series.py
@@ -1,7 +1,8 @@
-#!/usr/bin/python3
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Author: xurongzhong#126.com wechat:pythontesting qq group:630011153
-# CreateDate: 2018-3-14
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
# series.py
import pandas as pd
@@ -16,24 +17,26 @@
columns=['Occupation', 'Born', 'Died', 'Age'])
print(scientists)
-# 从数据帧(DataFrame)获取的行或者列为Series
+print("\n\n从数据帧(DataFrame)获取的行或者列为Series:")
first_row = scientists.loc['William Gosset']
print(type(first_row))
print(first_row)
-# index和keys是一样的
+print("\n\nindex和keys是一样的:")
print(first_row.index)
print(first_row.keys())
-print(first_row.values)
+print("\n\nSeries取值:")
+print(first_row.values)
print(first_row.index[0])
print(first_row.keys()[0])
-# Pandas.Series和numpy.ndarray很类似
+print("\n\nPandas.Series和numpy.ndarray很类似:")
ages = scientists['Age']
print(ages)
# 统计,更多参考http://pandas.pydata.org/pandas-docs/stable/basics.html#descriptive-statistics
+print("\n\n统计:平均值、最小值、最大值、方差")
print(ages.mean())
print(ages.min())
print(ages.max())
@@ -57,8 +60,9 @@
# print(ages + np.array([1, 100])) 会报错,不同类型相加,大小一定要一样
print(ages + np.array([1, 100, 1, 100, 1, 100, 1, 100]))
-# 排序: 默认有自动排序
+print("\n\n排序: 默认有自动排序")
print(ages)
+print("\n\n排序: ages.sort_index(ascending=False) 降序")
rev_ages = ages.sort_index(ascending=False)
print(rev_ages)
print(ages * 2)
diff --git a/pandas/python_data_analyse_crash_course/Untitled.ipynb b/pandas/python_data_analyse_crash_course/Untitled.ipynb
new file mode 100644
index 0000000..4315179
--- /dev/null
+++ b/pandas/python_data_analyse_crash_course/Untitled.ipynb
@@ -0,0 +1,181 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'\n",
+ " 'B' 'LSTAT']\n",
+ " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
+ "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n",
+ "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n",
+ "\n",
+ " PTRATIO B LSTAT PRICE \n",
+ "0 15.3 396.9 4.98 24.0 \n",
+ "1 17.8 396.9 9.14 21.6 \n",
+ "0 no\n",
+ "1 no\n",
+ "2 no\n",
+ "3 no\n",
+ "4 no\n",
+ "Name: CHAS, dtype: object\n",
+ "(405, 14) (101, 14)\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "
\n",
+ " "
+ ],
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import sys\n",
+ "sys.path.append('/home/andrew/code/facets/facets_overview/python')\n",
+ "\n",
+ "from generic_feature_statistics_generator import GenericFeatureStatisticsGenerator\n",
+ "\n",
+ "import pandas as pd\n",
+ "from sklearn import datasets\n",
+ "import tensorflow as tf\n",
+ "from sklearn.datasets import load_boston\n",
+ "import numpy as np\n",
+ "\n",
+ "boston = load_boston()\n",
+ "df = pd.DataFrame(boston.data)\t\n",
+ "print(boston.feature_names)\n",
+ "\n",
+ "df.columns = boston.feature_names\n",
+ "df['PRICE'] = boston.target\n",
+ "print(df.head(2))\n",
+ "\n",
+ "df['CHAS'] = df['CHAS'].map({1:'yes', 0:'no'})\n",
+ "print(df['CHAS'].head(5))\n",
+ "\n",
+ "### Create train/test set\n",
+ "df_train=df.sample(frac=0.8,random_state=200)\n",
+ "df_test=df.drop(df_train.index)\n",
+ "\n",
+ "print(df_train.shape, df_test.shape)\n",
+ "\n",
+ "# Calculate the feature statistics proto from the datasets and stringify it for use in facets overview\n",
+ "import base64\n",
+ "\n",
+ "gfsg = GenericFeatureStatisticsGenerator()\n",
+ "\n",
+ "proto = gfsg.ProtoFromDataFrames([{'name': 'train', 'table': df_train},\n",
+ " {'name': 'test', 'table': df_test}])\n",
+ "\n",
+ "#proto = gfsg.ProtoFromDataFrames([{'name': 'train', 'table': df_train}])\n",
+ "protostr = base64.b64encode(proto.SerializeToString()).decode(\"utf-8\")\n",
+ "\n",
+ "# Display the facets overview visualization for this data# Displ \n",
+ "from IPython.core.display import display, HTML\n",
+ "\n",
+ "HTML_TEMPLATE = \"\"\" \n",
+ " \n",
+ " \"\"\"\n",
+ "html = HTML_TEMPLATE.format(protostr=protostr)\n",
+ "display(HTML(html))\n",
+ "\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df['Q_PRICE'] = pd.qcut(df['PRICE'], 4, labels=[\"Lowest\", \"Low\", \"Upper\", \"upper_plus\"])\n",
+ "sprite_size = 32 if len(df.index)>50000 else 64\n",
+ "jsonstr = df.to_json(orient='records')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " \n",
+ " \n",
+ " "
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Display thde Dive visualization for this data\n",
+ "from IPython.core.display import display, HTML\n",
+ "\n",
+ "# Create Facets template \n",
+ "HTML_TEMPLATE = \"\"\" \n",
+ " \n",
+ " \"\"\"\n",
+ "\n",
+ "# Load the json dataset and the sprite_size into the template\n",
+ "html = HTML_TEMPLATE.format(jsonstr=jsonstr, sprite_size=sprite_size)\n",
+ "\n",
+ "# Display the template\n",
+ "display(HTML(html))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.6.5"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/photos.py b/photos.py
index 4123c32..5d09123 100755
--- a/photos.py
+++ b/photos.py
@@ -9,7 +9,6 @@
import cv2
import numpy as np
-import face_recognition
from PIL import Image, ImageDraw
def mark_image(filename, dst, poses, angle=None, relative=False):
@@ -30,22 +29,32 @@ def mark_image(filename, dst, poses, angle=None, relative=False):
if relative:
right = left + right
+ right2 = left + right
bottom = top + bottom
+ bottom2 = top + bottom
if angle == 'left':
left2 = top
right2 = bottom
- top2 = 480 - right
- bottom2 = 480 - left
+ top2 = 400 - right
+ bottom2 = 400 - left
if angle == 'right':
left2 = 640 - bottom
right2 = 640 - top
- top2 = 480 - right
- bottom2 = 480 - left
-
+ top2 = left
+ bottom2 = right
+ if angle == None:
+ left2 = left
+ right2 = right
+ top2 = top
+ bottom2 = bottom
+
+ print((left2, top2), (right2, bottom2))
+ print(left2, top2, right2, bottom2, end=' ')
+ print()
cv2.rectangle(image,(left2, top2), (right2, bottom2), colors[color], 1)
cv2.imwrite(dst, image)
@@ -84,7 +93,7 @@ def rotateImage(image, angle):
def rotate(files, dst, value=90):
for file_ in files:
img = Image.open(file_)
- img = img.rotate(value)
+ img = img.rotate(value, expand=True)
name = "{}{}{}".format(dst, os.sep, os.path.basename(file_))
img.save(name)
@@ -104,7 +113,7 @@ def find_face(filename, rotate=None, model=None):
else:
return face_recognition.face_locations(img)
-def raw2jpg(filename, height=480, width=640):
+def raw2jpg(filename, height=400, width=640):
try:
img = np.fromfile(filename, dtype=np.uint16)
img = img.reshape( (height, width) )
diff --git a/ping.py b/ping.py
new file mode 100644
index 0000000..d97dbb6
--- /dev/null
+++ b/ping.py
@@ -0,0 +1,169 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/ping.py
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-22
+
+import os
+import argparse
+import socket
+import struct
+import select
+import time
+
+
+ICMP_ECHO_REQUEST = 8 # Platform specific
+DEFAULT_TIMEOUT = 2
+DEFAULT_COUNT = 3
+
+
+class Pinger(object):
+ """ Pings to a host -- the Pythonic way"""
+
+ def __init__(self, target_host, count=DEFAULT_COUNT, timeout=DEFAULT_TIMEOUT):
+ self.target_host = target_host
+ self.count = count
+ self.timeout = timeout
+
+
+ def do_checksum(self, source_string):
+ """ Verify the packet integritity """
+ sum = 0
+ max_count = (len(source_string)/2)*2
+ count = 0
+ while count < max_count:
+
+ val = source_string[count + 1]*256 + source_string[count]
+ sum = sum + val
+ sum = sum & 0xffffffff
+ count = count + 2
+
+ if max_count> 16) + (sum & 0xffff)
+ sum = sum + (sum >> 16)
+ answer = ~sum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+ def receive_pong(self, sock, ID, timeout):
+ """
+ Receive ping from the socket.
+ """
+ time_remaining = timeout
+ while True:
+ start_time = time.time()
+ readable = select.select([sock], [], [], time_remaining)
+ time_spent = (time.time() - start_time)
+ if readable[0] == []: # Timeout
+ return
+
+ time_received = time.time()
+ recv_packet, addr = sock.recvfrom(1024)
+ icmp_header = recv_packet[20:28]
+ type, code, checksum, packet_ID, sequence = struct.unpack(
+ "bbHHh", icmp_header
+ )
+ if packet_ID == ID:
+ bytes_In_double = struct.calcsize("d")
+ time_sent = struct.unpack("d", recv_packet[28:28 + bytes_In_double])[0]
+ return time_received - time_sent
+
+ time_remaining = time_remaining - time_spent
+ if time_remaining <= 0:
+ return
+
+
+ def send_ping(self, sock, ID):
+ """
+ Send ping to the target host
+ """
+ target_addr = socket.gethostbyname(self.target_host)
+
+ my_checksum = 0
+
+ # Create a dummy heder with a 0 checksum.
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
+ bytes_In_double = struct.calcsize("d")
+ data = (192 - bytes_In_double) * "Q"
+ data = struct.pack("d", time.time()) + bytes(data.encode('utf-8'))
+
+ # Get the checksum on the data and the dummy header.
+ my_checksum = self.do_checksum(header + data)
+ header = struct.pack(
+ "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
+ )
+ packet = header + data
+ sock.sendto(packet, (target_addr, 1))
+
+
+ def ping_once(self):
+ """
+ Returns the delay (in seconds) or none on timeout.
+ """
+ icmp = socket.getprotobyname("icmp")
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ except socket.error as e:
+ if e.errno == 1:
+ # Not superuser, so operation not permitted
+ e.msg += "ICMP messages can only be sent from root user processes"
+ raise socket.error(e.msg)
+ except Exception as e:
+ print ("Exception: %s" %(e))
+
+ my_ID = os.getpid() & 0xFFFF
+
+ self.send_ping(sock, my_ID)
+ delay = self.receive_pong(sock, my_ID, self.timeout)
+ sock.close()
+ return delay
+
+
+ def ping(self):
+ """
+ Run the ping process
+ """
+ ip = socket.gethostbyname(self.target_host)
+ print ("PING {} ({}) 56(84) bytes of data.".format(
+ self.target_host, ip))
+ datas = []
+ start = time.time()
+ for i in range(self.count):
+ try:
+ delay = self.ping_once()
+ except socket.gaierror as e:
+ print ("Ping failed. (socket error: '%s')" % e[1])
+ break
+
+ if delay == None:
+ print ("Ping failed. (timeout within %ssec.)" % self.timeout)
+ else:
+ delay = delay * 1000
+ datas.append(delay)
+ print ("64 bytes from {0} in {1:0.3f} ms".format(ip, delay))
+ time.sleep(0.1)
+ total_time = time.time() - start
+ print('--- {} ping statistics ---'.format(ip))
+ print('{0} packets transmitted, {1} received, {2:0.2f}% packet loss, time {3} ms'.format(
+ self.count, len(datas), (self.count - len(datas))/self.count*100, int(10000*total_time)))
+ print('rtt min/avg/max = {:0.3f}/{:0.3f}/{:0.3f} ms'.format(
+ min(datas), sum(datas)/len(datas), max(datas)))
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description='Python ping')
+ parser.add_argument('host', action="store", help=u'host')
+ parser.add_argument('-c', action="store", dest="count", default=3, type=int,
+ help=u'number of ping')
+ parser.add_argument('-t', action="store", dest="timeout", default=2,
+ type=int, help=u'timeout')
+ given_args = parser.parse_args()
+ pinger = Pinger(target_host=given_args.host, count=given_args.count,
+ timeout=given_args.timeout)
+ pinger.ping()
\ No newline at end of file
diff --git a/practices/TTS.py b/practices/TTS.py
new file mode 100644
index 0000000..7f85bf8
--- /dev/null
+++ b/practices/TTS.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/TTS.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-22
+
+import win32com.client as wincl
+from tkinter import *
+
+
+def text2Speech():
+ text = e.get()
+ speak = wincl.Dispatch("SAPI.SpVoice")
+ speak.Speak(text)
+
+
+#window configs
+tts = Tk()
+tts.wm_title("Text to Speech")
+tts.geometry("225x105")
+tts.config(background="#708090")
+
+
+f=Frame(tts,height=280,width=500,bg="#bebebe")
+f.grid(row=0,column=0,padx=10,pady=5)
+lbl=Label(f,text="Enter your Text here : ")
+lbl.grid(row=1,column=0,padx=10,pady=2)
+e=Entry(f,width=30)
+e.grid(row=2,column=0,padx=10,pady=2)
+btn=Button(f,text="Speak",command=text2Speech)
+btn.grid(row=3,column=0,padx=20,pady=10)
+tts.mainloop()
diff --git a/practices/cv/cv1.py b/practices/cv/cv1.py
new file mode 100644
index 0000000..564fdc7
--- /dev/null
+++ b/practices/cv/cv1.py
@@ -0,0 +1,77 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/cv1.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-04
+
+# import the necessary packages
+from tkinter import *
+from PIL import Image
+from PIL import ImageTk
+from tkinter import filedialog
+import cv2
+
+def select_image():
+ # grab a reference to the image panels
+ global panelA, panelB
+
+ # open a file chooser dialog and allow the user to select an input
+ # image
+ path = filedialog.askopenfilename()
+
+ # ensure a file path was selected
+ if len(path) > 0:
+ # load the image from disk, convert it to grayscale, and detect
+ # edges in it
+ image = cv2.imread(path)
+ gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+ edged = cv2.Canny(gray, 50, 100)
+
+ # OpenCV represents images in BGR order; however PIL represents
+ # images in RGB order, so we need to swap the channels
+ image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
+
+ # convert the images to PIL format...
+ image = Image.fromarray(image)
+ edged = Image.fromarray(edged)
+
+ # ...and then to ImageTk format
+ image = ImageTk.PhotoImage(image)
+ edged = ImageTk.PhotoImage(edged)
+
+ # if the panels are None, initialize them
+ if panelA is None or panelB is None:
+ # the first panel will store our original image
+ panelA = Label(image=image)
+ panelA.image = image
+ panelA.pack(side="left", padx=10, pady=10)
+
+ # while the second panel will store the edge map
+ panelB = Label(image=edged)
+ panelB.image = edged
+ panelB.pack(side="right", padx=10, pady=10)
+
+ # otherwise, update the image panels
+ else:
+ # update the pannels
+ panelA.configure(image=image)
+ panelB.configure(image=edged)
+ panelA.image = image
+ panelB.image = edged
+
+# initialize the window toolkit along with the two image panels
+root = Tk()
+panelA = None
+panelB = None
+root.title("opencv 边缘检测演示")
+
+# create a button, then when pressed, will trigger a file chooser
+# dialog and allow the user to select an input image; then add the
+# button the GUI
+btn = Button(root, text="选择图片", command=select_image)
+btn.pack(side="bottom", fill="both", expand="yes", padx="100", pady="100")
+
+# kick off the GUI
+root.mainloop()
\ No newline at end of file
diff --git a/practices/cv/deep_learning_with_opencv.py b/practices/cv/deep_learning_with_opencv.py
new file mode 100644
index 0000000..66a7332
--- /dev/null
+++ b/practices/cv/deep_learning_with_opencv.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/deep_learning_with_opencv.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-21
+# USAGE
+# python deep_learning_with_opencv.py --image images/jemma.png --prototxt bvlc_googlenet.prototxt --model bvlc_googlenet.caffemodel --labels synset_words.txt
+
+# import the necessary packages
+import numpy as np
+import argparse
+import time
+import cv2
+
+# construct the argument parse and parse the arguments
+ap = argparse.ArgumentParser()
+ap.add_argument("-i", "--image", required=True,
+ help="path to input image")
+ap.add_argument("-p", "--prototxt", required=True,
+ help="path to Caffe 'deploy' prototxt file")
+ap.add_argument("-m", "--model", required=True,
+ help="path to Caffe pre-trained model")
+ap.add_argument("-l", "--labels", required=True,
+ help="path to ImageNet labels (i.e., syn-sets)")
+args = vars(ap.parse_args())
+
+# load the input image from disk
+image = cv2.imread(args["image"])
+
+# load the class labels from disk
+classes = [r[r.find(" ") + 1:].split(",")[0] for r in open(args["labels"])]
+
+# our CNN requires fixed spatial dimensions for our input image(s)
+# so we need to ensure it is resized to 224x224 pixels while
+# performing mean subtraction (104, 117, 123) to normalize the input;
+# after executing this command our "blob" now has the shape:
+# (1, 3, 224, 224)
+blob = cv2.dnn.blobFromImage(image, 1, (224, 224), (104, 117, 123))
+
+# load our serialized model from disk
+print("[INFO] loading model...")
+net = cv2.dnn.readNetFromCaffe(args["prototxt"], args["model"])
+
+# set the blob as input to the network and perform a forward-pass to
+# obtain our output classification
+net.setInput(blob)
+start = time.time()
+preds = net.forward()
+end = time.time()
+print("[INFO] classification took {:.5} seconds".format(end - start))
+
+# sort the indexes of the probabilities in descending order (higher
+# probabilitiy first) and grab the top-5 predictions
+idxs = np.argsort(preds[0])[::-1][:5]
+
+# loop over the top-5 predictions and display them
+for (i, idx) in enumerate(idxs):
+ # draw the top prediction on the input image
+ if i == 0:
+ text = "Label: {}, {:.2f}%".format(classes[idx],
+ preds[0][idx] * 100)
+ cv2.putText(image, text, (5, 25), cv2.FONT_HERSHEY_SIMPLEX,
+ 0.7, (0, 0, 255), 2)
+
+ # display the predicted label + associated probability to the
+ # console
+ print("[INFO] {}. label: {}, probability: {:.5}".format(i + 1,
+ classes[idx], preds[0][idx]))
+
+# display the output image
+cv2.imshow("Image", image)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/practices/cv/image_diff.py b/practices/cv/image_diff.py
new file mode 100644
index 0000000..3be1e64
--- /dev/null
+++ b/practices/cv/image_diff.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 项目实战讨论QQ群630011153 144081101
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/image_diff.py
+# 代码及配套图片:https://itbooks.pipipan.com/fs/18113597-326879233
+# CreateDate: 2018-12-21
+# USAGE
+# python image_diff.py --first images/original_01.png --second images/modified_01.png
+
+# import the necessary packages
+from skimage.measure import compare_ssim
+import argparse
+import imutils
+import cv2
+
+# construct the argument parse and parse the arguments
+ap = argparse.ArgumentParser()
+ap.add_argument("-f", "--first", required=True,
+ help="first input image")
+ap.add_argument("-s", "--second", required=True,
+ help="second")
+args = vars(ap.parse_args())
+
+# load the two input images
+imageA = cv2.imread(args["first"])
+imageB = cv2.imread(args["second"])
+
+# convert the images to grayscale
+grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
+grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
+
+# compute the Structural Similarity Index (SSIM) between the two
+# images, ensuring that the difference image is returned
+(score, diff) = compare_ssim(grayA, grayB, full=True)
+diff = (diff * 255).astype("uint8")
+print("SSIM: {}".format(score))
+
+# threshold the difference image, followed by finding contours to
+# obtain the regions of the two input images that differ
+thresh = cv2.threshold(diff, 0, 255,
+ cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
+cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
+ cv2.CHAIN_APPROX_SIMPLE)
+cnts = imutils.grab_contours(cnts)
+
+# loop over the contours
+for c in cnts:
+ # compute the bounding box of the contour and then draw the
+ # bounding box on both input images to represent where the two
+ # images differ
+ (x, y, w, h) = cv2.boundingRect(c)
+ cv2.rectangle(imageA, (x, y), (x + w, y + h), (0, 0, 255), 2)
+ cv2.rectangle(imageB, (x, y), (x + w, y + h), (0, 0, 255), 2)
+
+# show the output images
+cv2.imshow("Original", imageA)
+cv2.imshow("Modified", imageB)
+cv2.imshow("Diff", diff)
+cv2.imshow("Thresh", thresh)
+cv2.waitKey(0)
\ No newline at end of file
diff --git a/practices/cv/image_diff_pil.py b/practices/cv/image_diff_pil.py
new file mode 100644
index 0000000..5588651
--- /dev/null
+++ b/practices/cv/image_diff_pil.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 项目实战讨论QQ群630011153 144081101
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/image_diff_pil.py
+# CreateDate: 2018-12-21
+from PIL import Image
+from PIL import ImageChops
+
+def compare_images(path1, path2, diff_save_location):
+
+ image1 = Image.open(path1)
+ image2 = Image.open(path2)
+ diff = ImageChops.difference(image1, image2)
+
+ if diff.getbbox():
+ diff.save(diff_save_location)
+
+if __name__ == '__main__':
+ compare_images('images/original_01.png', 'images/modified_01.png',
+ 'images/out.png')
+
diff --git a/practices/cv/images/airplane.jpg b/practices/cv/images/airplane.jpg
new file mode 100644
index 0000000..574832b
Binary files /dev/null and b/practices/cv/images/airplane.jpg differ
diff --git a/practices/cv/images/guitar.jpg b/practices/cv/images/guitar.jpg
new file mode 100644
index 0000000..4da494e
Binary files /dev/null and b/practices/cv/images/guitar.jpg differ
diff --git a/practices/cv/images/motorcycle.jpg b/practices/cv/images/motorcycle.jpg
new file mode 100644
index 0000000..f659a16
Binary files /dev/null and b/practices/cv/images/motorcycle.jpg differ
diff --git a/practices/cv/rotate.py b/practices/cv/rotate.py
new file mode 100644
index 0000000..f959e4a
--- /dev/null
+++ b/practices/cv/rotate.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/cv/rotate.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-26
+import numpy as np
+import argparse
+import imutils
+import cv2
+
+# Parse command line arguments
+ap = argparse.ArgumentParser()
+ap.add_argument("-i", "--image", required=True, help="Path to the image")
+args = vars(ap.parse_args())
+
+# Load and display original image
+image = cv2.imread(args["image"])
+cv2.imshow("Original", image)
+cv2.waitKey(0)
+
+# Determine the center of the image
+# OpenCV allows you to specify any arbitrary point to rotate around,
+# here we'll use the image center
+(h, w) = image.shape[:2]
+center = (w//2, h//2)
+
+# Build the rotation matrix around the center, 45 degrees clockwise,
+# without changing the scale
+# cv2.warpAffine applies the transformation
+M = cv2.getRotationMatrix2D(center, 45, 1.0)
+rotated = cv2.warpAffine(image, M, (w, h))
+cv2.imshow("Rotated by 45 Degrees", rotated)
+cv2.waitKey(0)
+
+# 使用imutils无损旋转
+rotated = imutils.rotate_bound(image, 45)
+cv2.imshow("Imutils Bound Rotation", rotated)
+cv2.waitKey(0)
+
+# Rotate 90 degrees counterclockwise
+M = cv2.getRotationMatrix2D(center, -90, 1.0)
+rotated = cv2.warpAffine(image, M, (w, h))
+cv2.imshow("Rotated by -90 Degrees", rotated)
+cv2.waitKey(0)
+
+# Instead of manually constructing M and calling the transformation, use
+# the rotate function in imutils which does that for you
+rotated = imutils.rotate(image, 180)
+cv2.imshow("Rotated by 180 Degrees", rotated)
+cv2.waitKey(0)
+
diff --git a/practices/keras/linear.py b/practices/keras/linear.py
new file mode 100644
index 0000000..c6ed331
--- /dev/null
+++ b/practices/keras/linear.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/keras/linear.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-26
+
+import keras
+from keras.models import Sequential
+from keras.layers import Dense, Activation
+import numpy as np
+import matplotlib.pyplot as plt
+
+x = data = np.linspace(1,2,200)
+y = x*4 + np.random.randn(*x.shape) * 0.3
+
+
+model = Sequential()
+model.add(Dense(1, input_dim=1, activation='linear'))
+
+model.compile(optimizer='sgd', loss='mse', metrics=['mse'])
+
+weights = model.layers[0].get_weights()
+w_init = weights[0][0][0]
+b_init = weights[1][0]
+print('Linear regression model is initialized with weights w: %.2f, b: %.2f' % (w_init, b_init))
+
+
+model.fit(x,y, batch_size=1, epochs=30, shuffle=False)
+
+weights = model.layers[0].get_weights()
+w_final = weights[0][0][0]
+b_final = weights[1][0]
+print('Linear regression model is trained to have weight w: %.2f, b: %.2f' % (w_final, b_final))
+
+predict = model.predict(data)
+
+plt.plot(data, predict, 'b', data , y, 'k.')
+plt.show()
diff --git a/practices/keras/load_kaggle_natural.py b/practices/keras/load_kaggle_natural.py
new file mode 100644
index 0000000..d8b2c66
--- /dev/null
+++ b/practices/keras/load_kaggle_natural.py
@@ -0,0 +1,67 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 项目实战讨论QQ群630011153 144081101
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/keras/load_kaggle_natural.py
+# 数据集:https://itbooks.pipipan.com/fs/18113597-329046186
+# CreateDate: 2019-01-04
+from keras.preprocessing.image import ImageDataGenerator
+import numpy as np
+import matplotlib.pyplot as plt
+import keras
+from keras.models import Model, load_model
+from keras.layers import Activation, Dropout, Flatten, Dense
+from keras.preprocessing.image import ImageDataGenerator
+from keras.applications.vgg16 import VGG16
+
+train_path = 'images/train/'
+test_path = 'images/test/'
+batch_size = 16
+image_size = 224
+num_class = 8
+
+
+train_datagen = ImageDataGenerator(
+ validation_split=0.3, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
+
+train_generator = train_datagen.flow_from_directory(
+ directory=train_path, target_size=(image_size,image_size),
+ batch_size=batch_size, class_mode='categorical',
+ color_mode='rgb', shuffle=True)
+
+
+x_batch, y_batch = train_generator.next()
+
+fig=plt.figure()
+columns = 4
+rows = 4
+for i in range(1, columns*rows):
+ num = np.random.randint(batch_size)
+ image = x_batch[num].astype(np.int)
+ fig.add_subplot(rows, columns, i)
+ plt.imshow(image)
+plt.show()
+
+#Load the VGG model
+base_model = VGG16(weights='imagenet', include_top=False,
+ input_shape=(image_size, image_size, 3))
+
+print(base_model.summary())
+
+ # Freeze the layers
+for layer in base_model.layers:
+ layer.trainable = False
+
+# # Create the model
+model = keras.models.Sequential()
+
+# # Add the vgg convolutional base model
+model.add(base_model)
+
+# # Add new layers
+model.add(Flatten())
+model.add(Dense(1024, activation='relu'))
+model.add(Dense(1024, activation='relu'))
+model.add(Dense(num_class, activation='softmax'))
+
+# # Show a summary of the model. Check the number of trainable parameters
+print(model.summary())
\ No newline at end of file
diff --git a/practices/keras/test_kaggle_natural.py b/practices/keras/test_kaggle_natural.py
new file mode 100644
index 0000000..77df64e
--- /dev/null
+++ b/practices/keras/test_kaggle_natural.py
@@ -0,0 +1,59 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 项目实战讨论QQ群630011153 144081101
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/keras/test_kaggle_natural.py
+# 数据集:https://itbooks.pipipan.com/fs/18113597-329046186
+# CreateDate: 2019-01-04
+from keras.preprocessing.image import ImageDataGenerator
+import numpy as np
+import matplotlib.pyplot as plt
+from keras.models import load_model
+
+
+train_path = 'images/train/'
+test_path = 'images/test/'
+batch_size = 16
+image_size = 224
+num_class = 8
+
+
+model = load_model('fine_tune.h5')
+
+train_datagen = ImageDataGenerator()
+
+train_generator = train_datagen.flow_from_directory(
+ directory=train_path, target_size=(image_size,image_size),
+ batch_size=batch_size, class_mode='categorical',
+ color_mode='rgb', shuffle=True)
+
+
+test_datagen = ImageDataGenerator()
+
+test_generator = test_datagen.flow_from_directory(
+ directory=test_path, target_size=(image_size, image_size),
+ color_mode='rgb', shuffle=False, class_mode='categorical', batch_size=1)
+
+filenames = test_generator.filenames
+nb_samples = len(filenames)
+
+fig=plt.figure()
+columns = 4
+rows = 4
+for i in range(1, columns*rows -1):
+ x_batch, y_batch = test_generator.next()
+
+ name = model.predict(x_batch)
+ name = np.argmax(name, axis=-1)
+ true_name = y_batch
+ true_name = np.argmax(true_name, axis=-1)
+
+ label_map = (test_generator.class_indices)
+ label_map = dict((v,k) for k,v in label_map.items()) #flip k,v
+ predictions = [label_map[k] for k in name]
+ true_value = [label_map[k] for k in true_name]
+
+ image = x_batch[0].astype(np.int)
+ fig.add_subplot(rows, columns, i)
+ plt.title(str(predictions[0]) + ':' + str(true_value[0]))
+ plt.imshow(image)
+plt.show()
\ No newline at end of file
diff --git a/practices/keras/train_kaggle_natural.py b/practices/keras/train_kaggle_natural.py
new file mode 100644
index 0000000..71dbb3c
--- /dev/null
+++ b/practices/keras/train_kaggle_natural.py
@@ -0,0 +1,74 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 项目实战讨论QQ群630011153 144081101
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/keras/train_kaggle_natural.py
+# 数据集:https://itbooks.pipipan.com/fs/18113597-329046186
+# CreateDate: 2019-01-04
+from keras.preprocessing.image import ImageDataGenerator
+import numpy as np
+import matplotlib.pyplot as plt
+import keras
+from keras.models import Model, load_model
+from keras.layers import Activation, Dropout, Flatten, Dense
+from keras.preprocessing.image import ImageDataGenerator
+from keras.applications.vgg16 import VGG16
+from keras.optimizers import SGD
+# summarize history for accuracy
+import matplotlib.pyplot as plt
+
+
+train_path = 'images/train/'
+test_path = 'images/test/'
+batch_size = 16
+image_size = 224
+num_class = 8
+
+train_datagen = ImageDataGenerator(
+ validation_split=0.3, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)
+
+train_generator = train_datagen.flow_from_directory(
+ directory=train_path, target_size=(image_size,image_size),
+ batch_size=batch_size, class_mode='categorical',
+ color_mode='rgb', shuffle=True)
+
+x_batch, y_batch = train_generator.next()
+
+#Load the VGG model
+base_model = VGG16(weights='imagenet', include_top=False, input_shape=(image_size, image_size, 3))
+
+print(base_model.summary())
+
+ # Freeze the layers
+for layer in base_model.layers:
+ layer.trainable = False
+
+# # Create the model
+model = keras.models.Sequential()
+
+# # Add the vgg convolutional base model
+model.add(base_model)
+
+# # Add new layers
+model.add(Flatten())
+model.add(Dense(1024, activation='relu'))
+model.add(Dense(1024, activation='relu'))
+model.add(Dense(num_class, activation='softmax'))
+
+# # Show a summary of the model. Check the number of trainable parameters
+print(model.summary())
+
+model.compile(loss='categorical_crossentropy', optimizer=SGD(lr=1e-3),
+ metrics=['accuracy'])
+
+history = model.fit_generator(
+ train_generator, steps_per_epoch=train_generator.n/batch_size, epochs=10)
+
+model.save('fine_tune.h5')
+
+
+plt.plot(history.history['loss'])
+plt.title('loss')
+plt.ylabel('loss')
+plt.xlabel('epoch')
+plt.legend(['loss'], loc='upper left')
+plt.savefig("test.png")
\ No newline at end of file
diff --git a/practices/pandas/merge_excel_rows.py b/practices/pandas/merge_excel_rows.py
new file mode 100644
index 0000000..c1cb4e7
--- /dev/null
+++ b/practices/pandas/merge_excel_rows.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持 https://china-testing.github.io/merge_excel_rows.html
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-06
+import pandas as pd
+
+frame = pd.read_csv("test.csv", engine='c')
+df = frame.groupby(['state', 'year']).sum()
+df.to_csv("out.csv")
+
+
+
+
+
diff --git a/practices/pandas/merge_excel_rows2.py b/practices/pandas/merge_excel_rows2.py
new file mode 100644
index 0000000..6b98365
--- /dev/null
+++ b/practices/pandas/merge_excel_rows2.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/merge_excel_rows2.html
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/pandas/merge_excel_rows2.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-06
+import pandas as pd
+
+df = pd.read_csv("test2.csv", engine='c', header=None)
+arr = df.values.copy()
+arr.resize(20, 5)
+df2 = pd.DataFrame(arr)
+df2.to_csv("out2.csv", index=None, header=None)
+
+
+
+
diff --git a/practices/pandas/out.csv b/practices/pandas/out.csv
new file mode 100644
index 0000000..9b6cf32
--- /dev/null
+++ b/practices/pandas/out.csv
@@ -0,0 +1,7 @@
+state,year,pop
+Nevada,2001,2.4
+Nevada,2002,2.9
+Nevada,2003,3.3000000000000003
+Ohio,2000,1.5
+Ohio,2001,1.7
+Ohio,2002,3.6
diff --git a/practices/pandas/out2.csv b/practices/pandas/out2.csv
new file mode 100644
index 0000000..d90506b
--- /dev/null
+++ b/practices/pandas/out2.csv
@@ -0,0 +1,20 @@
+0,1,2,3,4
+5,6,7,8,9
+10,11,12,13,14
+15,16,17,18,19
+20,21,22,23,24
+25,26,27,28,29
+30,31,32,33,34
+35,36,37,38,39
+40,41,42,43,44
+45,46,47,48,49
+50,51,52,53,54
+55,56,57,58,59
+60,61,62,63,64
+65,66,67,68,69
+70,71,72,73,74
+75,76,77,78,79
+80,81,82,83,84
+85,86,87,88,89
+90,91,92,93,94
+95,96,97,98,99
diff --git a/practices/pandas/test.csv b/practices/pandas/test.csv
new file mode 100644
index 0000000..d9b0b1b
--- /dev/null
+++ b/practices/pandas/test.csv
@@ -0,0 +1,8 @@
+state,year,pop
+Ohio,2000,1.5
+Ohio,2001,1.7
+Ohio,2002,3.6
+Nevada,2001,2.4
+Nevada,2002,2.9
+Nevada,2003,3.2
+Nevada,2003,0.1
diff --git a/practices/pandas/test2.csv b/practices/pandas/test2.csv
new file mode 100644
index 0000000..c344d0a
--- /dev/null
+++ b/practices/pandas/test2.csv
@@ -0,0 +1,100 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
diff --git a/practices/pil_merge.py b/practices/pil_merge.py
new file mode 100644
index 0000000..2a811d2
--- /dev/null
+++ b/practices/pil_merge.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# https://china-testing.github.io/pil1.html
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/pil_merge.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-04
+
+import math
+from PIL import Image
+
+column = 11
+width = 802
+height = 286
+size = (802, 286)
+
+list_im = [r'd:\code.jpg', r'd:\code.jpg', r'd:\code.jpg', r'd:\code.jpg',
+ r'd:\code.jpg', r'd:\code.jpg', r'd:\code.jpg', r'd:\code.jpg',
+ r'd:\code.jpg', r'd:\code.jpg', r'd:\code.jpg']
+imgs = [Image.open(i) for i in list_im]
+
+row_num = math.ceil(len(imgs)/column)
+target = Image.new('RGB', (width*column, height*row_num))
+for i in range(len(list_im)):
+ if i % column == 0:
+ end = len(list_im) if i + column > len(list_im) else i + column
+ for col, image in enumerate(imgs[i:i+column]):
+ target.paste(image, (width*col, height*(i//column),
+ width*(col + 1), height*(i//column + 1)))
+target.show()
+target.save('d:\code2.jpg')
\ No newline at end of file
diff --git a/practices/pillow/rotate.py b/practices/pillow/rotate.py
new file mode 100644
index 0000000..fecf09d
--- /dev/null
+++ b/practices/pillow/rotate.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# https://china-testing.github.io/pil1.html
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/pillow/rotate.py
+# CreateDate: 2018-12-26
+from PIL import Image
+
+im = Image.open("../../python3_libraries/pillow/demo.jpg")
+print(im.size)
+im.show()
+
+
+im2 = im.rotate(45)
+print(im2.size)
+im2.show()
+im2.save("test1.jpg")
+
+im3 = im.rotate(45, expand=True)
+print(im3.size)
+im3.show()
+im3.save("test2.jpg")
+
+im4 = im.rotate(90)
+print(im4.size)
+im4.show()
+im4.save("test3.jpg")
+
+im5 = im.rotate(90, expand=True)
+print(im5.size)
+im5.show()
+im5.save("test4.jpg")
+
+out = im.transpose(Image.ROTATE_90)
+out.show()
+print(out.size)
+im2.save("test5.jpg")
diff --git a/practices/ping.py b/practices/ping.py
new file mode 100644
index 0000000..eccb9b6
--- /dev/null
+++ b/practices/ping.py
@@ -0,0 +1,154 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/ping.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-22
+
+import os
+import argparse
+import socket
+import struct
+import select
+import time
+
+
+ICMP_ECHO_REQUEST = 8 # Platform specific
+DEFAULT_TIMEOUT = 2
+DEFAULT_COUNT = 4
+
+
+class Pinger(object):
+ """ Pings to a host -- the Pythonic way"""
+
+ def __init__(self, target_host, count=DEFAULT_COUNT, timeout=DEFAULT_TIMEOUT):
+ self.target_host = target_host
+ self.count = count
+ self.timeout = timeout
+
+
+ def do_checksum(self, source_string):
+ """ Verify the packet integritity """
+ sum = 0
+ max_count = (len(source_string)/2)*2
+ count = 0
+ while count < max_count:
+
+ val = source_string[count + 1]*256 + source_string[count]
+ sum = sum + val
+ sum = sum & 0xffffffff
+ count = count + 2
+
+ if max_count> 16) + (sum & 0xffff)
+ sum = sum + (sum >> 16)
+ answer = ~sum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+ def receive_pong(self, sock, ID, timeout):
+ """
+ Receive ping from the socket.
+ """
+ time_remaining = timeout
+ while True:
+ start_time = time.time()
+ readable = select.select([sock], [], [], time_remaining)
+ time_spent = (time.time() - start_time)
+ if readable[0] == []: # Timeout
+ return
+
+ time_received = time.time()
+ recv_packet, addr = sock.recvfrom(1024)
+ icmp_header = recv_packet[20:28]
+ type, code, checksum, packet_ID, sequence = struct.unpack(
+ "bbHHh", icmp_header
+ )
+ if packet_ID == ID:
+ bytes_In_double = struct.calcsize("d")
+ time_sent = struct.unpack("d", recv_packet[28:28 + bytes_In_double])[0]
+ return time_received - time_sent
+
+ time_remaining = time_remaining - time_spent
+ if time_remaining <= 0:
+ return
+
+
+ def send_ping(self, sock, ID):
+ """
+ Send ping to the target host
+ """
+ target_addr = socket.gethostbyname(self.target_host)
+
+ my_checksum = 0
+
+ # Create a dummy heder with a 0 checksum.
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
+ bytes_In_double = struct.calcsize("d")
+ data = (192 - bytes_In_double) * "Q"
+ data = struct.pack("d", time.time()) + bytes(data.encode('utf-8'))
+
+ # Get the checksum on the data and the dummy header.
+ my_checksum = self.do_checksum(header + data)
+ header = struct.pack(
+ "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
+ )
+ packet = header + data
+ sock.sendto(packet, (target_addr, 1))
+
+
+ def ping_once(self):
+ """
+ Returns the delay (in seconds) or none on timeout.
+ """
+ icmp = socket.getprotobyname("icmp")
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ except socket.error as e:
+ if e.errno == 1:
+ # Not superuser, so operation not permitted
+ e.msg += "ICMP messages can only be sent from root user processes"
+ raise socket.error(e.msg)
+ except Exception as e:
+ print ("Exception: %s" %(e))
+
+ my_ID = os.getpid() & 0xFFFF
+
+ self.send_ping(sock, my_ID)
+ delay = self.receive_pong(sock, my_ID, self.timeout)
+ sock.close()
+ return delay
+
+
+ def ping(self):
+ """
+ Run the ping process
+ """
+ for i in range(self.count):
+ print ("Ping to %s..." % self.target_host,)
+ try:
+ delay = self.ping_once()
+ except socket.gaierror as e:
+ print ("Ping failed. (socket error: '%s')" % e[1])
+ break
+
+ if delay == None:
+ print ("Ping failed. (timeout within %ssec.)" % self.timeout)
+ else:
+ delay = delay * 1000
+ print ("Get pong in %0.4fms" % delay)
+
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description='Python ping')
+ parser.add_argument('host', action="store", help=u'主机名')
+ given_args = parser.parse_args()
+ target_host = given_args.host
+ pinger = Pinger(target_host=target_host)
+ pinger.ping()
\ No newline at end of file
diff --git a/practices/ping2.py b/practices/ping2.py
new file mode 100644
index 0000000..341aeab
--- /dev/null
+++ b/practices/ping2.py
@@ -0,0 +1,169 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/ping.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-22
+
+import os
+import argparse
+import socket
+import struct
+import select
+import time
+
+
+ICMP_ECHO_REQUEST = 8 # Platform specific
+DEFAULT_TIMEOUT = 2
+DEFAULT_COUNT = 3
+
+
+class Pinger(object):
+ """ Pings to a host -- the Pythonic way"""
+
+ def __init__(self, target_host, count=DEFAULT_COUNT, timeout=DEFAULT_TIMEOUT):
+ self.target_host = target_host
+ self.count = count
+ self.timeout = timeout
+
+
+ def do_checksum(self, source_string):
+ """ Verify the packet integritity """
+ sum = 0
+ max_count = (len(source_string)/2)*2
+ count = 0
+ while count < max_count:
+
+ val = ord(source_string[count + 1])*256 + ord(source_string[count])
+ sum = sum + val
+ sum = sum & 0xffffffff
+ count = count + 2
+
+ if max_count> 16) + (sum & 0xffff)
+ sum = sum + (sum >> 16)
+ answer = ~sum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+ def receive_pong(self, sock, ID, timeout):
+ """
+ Receive ping from the socket.
+ """
+ time_remaining = timeout
+ while True:
+ start_time = time.time()
+ readable = select.select([sock], [], [], time_remaining)
+ time_spent = (time.time() - start_time)
+ if readable[0] == []: # Timeout
+ return
+
+ time_received = time.time()
+ recv_packet, addr = sock.recvfrom(1024)
+ icmp_header = recv_packet[20:28]
+ type, code, checksum, packet_ID, sequence = struct.unpack(
+ "bbHHh", icmp_header
+ )
+ if packet_ID == ID:
+ bytes_In_double = struct.calcsize("d")
+ time_sent = struct.unpack("d", recv_packet[28:28 + bytes_In_double])[0]
+ return time_received - time_sent
+
+ time_remaining = time_remaining - time_spent
+ if time_remaining <= 0:
+ return
+
+
+ def send_ping(self, sock, ID):
+ """
+ Send ping to the target host
+ """
+ target_addr = socket.gethostbyname(self.target_host)
+
+ my_checksum = 0
+
+ # Create a dummy heder with a 0 checksum.
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
+ bytes_In_double = struct.calcsize("d")
+ data = (192 - bytes_In_double) * "Q"
+ data = struct.pack("d", time.time()) + bytes(data.encode('utf-8'))
+
+ # Get the checksum on the data and the dummy header.
+ my_checksum = self.do_checksum(header + data)
+ header = struct.pack(
+ "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
+ )
+ packet = header + data
+ sock.sendto(packet, (target_addr, 1))
+
+
+ def ping_once(self):
+ """
+ Returns the delay (in seconds) or none on timeout.
+ """
+ icmp = socket.getprotobyname("icmp")
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ except socket.error as e:
+ if e.errno == 1:
+ # Not superuser, so operation not permitted
+ e.msg += "ICMP messages can only be sent from root user processes"
+ raise socket.error(e.msg)
+ except Exception as e:
+ print ("Exception: %s" %(e))
+
+ my_ID = os.getpid() & 0xFFFF
+
+ self.send_ping(sock, my_ID)
+ delay = self.receive_pong(sock, my_ID, self.timeout)
+ sock.close()
+ return delay
+
+
+ def ping(self):
+ """
+ Run the ping process
+ """
+ ip = socket.gethostbyname(self.target_host)
+ print ("PING {} ({}) 56(84) bytes of data.".format(
+ self.target_host, ip))
+ datas = []
+ start = time.time()
+ for i in range(self.count):
+ try:
+ delay = self.ping_once()
+ except socket.gaierror as e:
+ print ("Ping failed. (socket error: '%s')" % e[1])
+ break
+
+ if delay == None:
+ print ("Ping failed. (timeout within %ssec.)" % self.timeout)
+ else:
+ delay = delay * 1000
+ datas.append(delay)
+ print ("64 bytes from {0} in {1:0.3f} ms".format(ip, delay))
+ time.sleep(0.1)
+ total_time = time.time() - start
+ print('--- {} ping statistics ---'.format(ip))
+ print('{0} packets transmitted, {1} received, {2:0.2f}% packet loss, time {3} ms'.format(
+ self.count, len(datas), (self.count - len(datas))/self.count*100, int(10000*total_time)))
+ print('rtt min/avg/max = {:0.3f}/{:0.3f}/{:0.3f} ms'.format(
+ min(datas), sum(datas)/len(datas), max(datas)))
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description='Python ping')
+ parser.add_argument('host', action="store", help=u'host')
+ parser.add_argument('-c', action="store", dest="count", default=3, type=int,
+ help=u'number of ping')
+ parser.add_argument('-t', action="store", dest="timeout", default=2,
+ type=int, help=u'timeout')
+ given_args = parser.parse_args()
+ pinger = Pinger(target_host=given_args.host, count=given_args.count,
+ timeout=given_args.timeout)
+ pinger.ping()
\ No newline at end of file
diff --git a/practices/ping3.py b/practices/ping3.py
new file mode 100644
index 0000000..7d2b942
--- /dev/null
+++ b/practices/ping3.py
@@ -0,0 +1,169 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/ping.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-22
+
+import os
+import argparse
+import socket
+import struct
+import select
+import time
+
+
+ICMP_ECHO_REQUEST = 8 # Platform specific
+DEFAULT_TIMEOUT = 2
+DEFAULT_COUNT = 3
+
+
+class Pinger(object):
+ """ Pings to a host -- the Pythonic way"""
+
+ def __init__(self, target_host, count=DEFAULT_COUNT, timeout=DEFAULT_TIMEOUT):
+ self.target_host = target_host
+ self.count = count
+ self.timeout = timeout
+
+
+ def do_checksum(self, source_string):
+ """ Verify the packet integritity """
+ sum = 0
+ max_count = (len(source_string)/2)*2
+ count = 0
+ while count < max_count:
+
+ val = source_string[count + 1]*256 + source_string[count]
+ sum = sum + val
+ sum = sum & 0xffffffff
+ count = count + 2
+
+ if max_count> 16) + (sum & 0xffff)
+ sum = sum + (sum >> 16)
+ answer = ~sum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+ def receive_pong(self, sock, ID, timeout):
+ """
+ Receive ping from the socket.
+ """
+ time_remaining = timeout
+ while True:
+ start_time = time.time()
+ readable = select.select([sock], [], [], time_remaining)
+ time_spent = (time.time() - start_time)
+ if readable[0] == []: # Timeout
+ return
+
+ time_received = time.time()
+ recv_packet, addr = sock.recvfrom(1024)
+ icmp_header = recv_packet[20:28]
+ type, code, checksum, packet_ID, sequence = struct.unpack(
+ "bbHHh", icmp_header
+ )
+ if packet_ID == ID:
+ bytes_In_double = struct.calcsize("d")
+ time_sent = struct.unpack("d", recv_packet[28:28 + bytes_In_double])[0]
+ return time_received - time_sent
+
+ time_remaining = time_remaining - time_spent
+ if time_remaining <= 0:
+ return
+
+
+ def send_ping(self, sock, ID):
+ """
+ Send ping to the target host
+ """
+ target_addr = socket.gethostbyname(self.target_host)
+
+ my_checksum = 0
+
+ # Create a dummy heder with a 0 checksum.
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
+ bytes_In_double = struct.calcsize("d")
+ data = (192 - bytes_In_double) * "Q"
+ data = struct.pack("d", time.time()) + bytes(data.encode('utf-8'))
+
+ # Get the checksum on the data and the dummy header.
+ my_checksum = self.do_checksum(header + data)
+ header = struct.pack(
+ "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
+ )
+ packet = header + data
+ sock.sendto(packet, (target_addr, 1))
+
+
+ def ping_once(self):
+ """
+ Returns the delay (in seconds) or none on timeout.
+ """
+ icmp = socket.getprotobyname("icmp")
+ try:
+ sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ except socket.error as e:
+ if e.errno == 1:
+ # Not superuser, so operation not permitted
+ e.msg += "ICMP messages can only be sent from root user processes"
+ raise socket.error(e.msg)
+ except Exception as e:
+ print ("Exception: %s" %(e))
+
+ my_ID = os.getpid() & 0xFFFF
+
+ self.send_ping(sock, my_ID)
+ delay = self.receive_pong(sock, my_ID, self.timeout)
+ sock.close()
+ return delay
+
+
+ def ping(self):
+ """
+ Run the ping process
+ """
+ ip = socket.gethostbyname(self.target_host)
+ print ("PING {} ({}) 56(84) bytes of data.".format(
+ self.target_host, ip))
+ datas = []
+ start = time.time()
+ for i in range(self.count):
+ try:
+ delay = self.ping_once()
+ except socket.gaierror as e:
+ print ("Ping failed. (socket error: '%s')" % e[1])
+ break
+
+ if delay == None:
+ print ("Ping failed. (timeout within %ssec.)" % self.timeout)
+ else:
+ delay = delay * 1000
+ datas.append(delay)
+ print ("64 bytes from {0} in {1:0.3f} ms".format(ip, delay))
+ time.sleep(0.1)
+ total_time = time.time() - start
+ print('--- {} ping statistics ---'.format(ip))
+ print('{0} packets transmitted, {1} received, {2:0.2f}% packet loss, time {3} ms'.format(
+ self.count, len(datas), (self.count - len(datas))/self.count*100, int(10000*total_time)))
+ print('rtt min/avg/max = {:0.3f}/{:0.3f}/{:0.3f} ms'.format(
+ min(datas), sum(datas)/len(datas), max(datas)))
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser(description='Python ping')
+ parser.add_argument('host', action="store", help=u'host')
+ parser.add_argument('-c', action="store", dest="count", default=3, type=int,
+ help=u'number of ping')
+ parser.add_argument('-t', action="store", dest="timeout", default=2,
+ type=int, help=u'timeout')
+ given_args = parser.parse_args()
+ pinger = Pinger(target_host=given_args.host, count=given_args.count,
+ timeout=given_args.timeout)
+ pinger.ping()
\ No newline at end of file
diff --git a/practices/pygame_house.py b/practices/pygame_house.py
new file mode 100644
index 0000000..a32ae64
--- /dev/null
+++ b/practices/pygame_house.py
@@ -0,0 +1,71 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/pygame_house.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-01
+import pygame
+pygame.init()
+screen = pygame.display.set_mode((640,480))
+
+#used http://colorpicker.com/ to find RGB colors
+
+def draw_tree(x,y):
+ #tree trunk (50 wide and 100 tall)
+ pygame.draw.rect(screen,(117,90,0),(x,y-100,50,100))
+ #leaves are a circle
+ pygame.draw.circle(screen,(27,117,0),(x+25,y-120),50)
+
+def draw_house(x,y):
+ #pink house
+ pygame.draw.rect(screen,(255,171,244),(x,y-180,200,180))
+ #brown door
+ pygame.draw.rect(screen,(89,71,0),(x+80,y-60,40,60))
+ #yellow door knob
+ pygame.draw.circle(screen,(255,204,0),(x+112,y-30),4)
+ #triangle roof
+ pygame.draw.polygon(screen, (125,125,125), ( (x,y-180),(x+100,y-250),(x+200,y-180) ) )
+ draw_window(x+20,y-90)
+ draw_window(x+130,y-90)
+
+def draw_window(x,y):
+ #glass
+ pygame.draw.rect(screen,(207,229,255),(x,y-50,50,50))
+ #frame
+ pygame.draw.rect(screen,(0,0,0),(x,y-50,50,50),5)
+ pygame.draw.rect(screen,(0,0,0),(x+23,y-50,5,50))
+ pygame.draw.rect(screen,(0,0,0),(x,y-27,50,5))
+
+#this function is able to draw clouds of different sizes
+def draw_cloud(x,y,size):
+ #put int() around any multiplications by decimals to get rid of this warning:
+ #DeprecationWarning: integer argument expected, got float
+ pygame.draw.circle(screen,(255,255,255),(x,y),int(size*.5))
+ pygame.draw.circle(screen,(255,255,255),(int(x+size*.5),y),int(size*.6))
+ pygame.draw.circle(screen,(255,255,255),(x+size,int(y-size*.1)),int(size*.4))
+
+
+#green ground
+pygame.draw.rect(screen,(0,160,3),(0,400,640,80))
+#light blue sky
+pygame.draw.rect(screen,(135,255,255),(0,0,640,400))
+
+draw_tree(60,400) #x and y location are the bottom left of tree trunk
+draw_tree(550,400)
+
+draw_house(225,400)
+
+draw_cloud(60,120,80)
+draw_cloud(200,50,40)
+draw_cloud(450,100,120)
+
+
+pygame.display.flip()
+
+running = True
+while running:
+ for event in pygame.event.get():
+ if event.type == pygame.QUIT:
+ running = False
+pygame.quit()
\ No newline at end of file
diff --git a/practices/tk/dance.gif b/practices/tk/dance.gif
new file mode 100644
index 0000000..ba297fe
Binary files /dev/null and b/practices/tk/dance.gif differ
diff --git a/practices/tk/gir.xbm b/practices/tk/gir.xbm
new file mode 100644
index 0000000..c25a690
--- /dev/null
+++ b/practices/tk/gir.xbm
@@ -0,0 +1,484 @@
+#define 1026234pirate_width 226
+#define 1026234pirate_height 199
+static char 1026234pirate_bits[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x05, 0x80, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
+ 0x02, 0x40, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00,
+ 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x04,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x6A, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x95, 0x5B, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0x6A,
+ 0xA4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x54, 0x02, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x16,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x80, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x00, 0x58, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xC0, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xA0, 0x01,
+ 0x54, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8,
+ 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x60, 0x06, 0x40, 0x80, 0xA9, 0x1A, 0xA0, 0x00, 0x28, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x05, 0x60, 0x40, 0x5A, 0xF4,
+ 0x60, 0x80, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x80, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0A, 0x50, 0xB0, 0x03, 0x00, 0x81, 0x81, 0x0A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x42, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x03, 0x60, 0xB3,
+ 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
+ 0x54, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x08, 0x02, 0x90, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x06, 0x28, 0x40, 0x02, 0x86, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5A, 0x05, 0xD8, 0x29, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x14, 0xA8,
+ 0x09, 0x02, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xA5,
+ 0x1A, 0x7C, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x14, 0x06, 0x18, 0x18, 0x04, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xB0, 0xDA, 0x55, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x04, 0x08, 0x10, 0x0A,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x58, 0x27, 0xAA, 0x0F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x0A, 0x05, 0x05, 0x01, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
+ 0xCF, 0x97, 0x95, 0x35, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0A, 0xA2, 0x32, 0x08, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x50, 0x79, 0xB5, 0x6A, 0xAA, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0A,
+ 0x43, 0x21, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xEE, 0x75,
+ 0xAD, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xD0, 0x06, 0x0A, 0x05, 0xB0, 0x12, 0x80, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xA0, 0x33, 0x97, 0x56, 0x3D, 0x20, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0F, 0x1A, 0x86, 0x61, 0x10,
+ 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xDC, 0xF6, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x04, 0x09, 0x91, 0x0A, 0x02, 0x82, 0x06, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xE8, 0x77, 0x0B, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0xA0, 0x45, 0x81, 0x01,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xAF, 0x1D, 0x0A, 0x82, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34,
+ 0x0E, 0x06, 0x80, 0x02, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0,
+ 0x5F, 0x02, 0x04, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x08, 0x60, 0x80, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xD8, 0x5F, 0x01, 0x00, 0x86, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0C, 0x50,
+ 0x57, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xAF, 0x02,
+ 0x18, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x28, 0x16, 0xA0, 0x05, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xBE, 0x55, 0x42, 0x18, 0xA0, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x18, 0x00, 0x00, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x2A, 0xE2, 0x60, 0x44,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0xA4, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xAF, 0x15, 0xC4, 0x54, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x58, 0x01, 0x00, 0x26, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0A, 0x02, 0xA8, 0x6A, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xB0, 0xA0,
+ 0x05, 0x80, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0x15,
+ 0x2C, 0x6B, 0xA5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x14, 0x40, 0xC0, 0x02, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFA, 0x0A, 0xD0, 0x95, 0x7A, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xE9, 0xAA,
+ 0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFD, 0x05, 0x68, 0x2A,
+ 0x75, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x05, 0x00, 0x00, 0x56, 0x55, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0xFF, 0x03, 0x90, 0xD5, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x26, 0x00, 0x58,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x05, 0x50, 0x9A, 0x57, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF,
+ 0x01, 0xA0, 0xD5, 0xAB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xA0, 0xFF, 0x01, 0x60, 0xEA, 0xE7, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0x02, 0x80,
+ 0x95, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x50, 0x7D, 0x01, 0x80, 0x5A, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x18, 0x80, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xDA, 0x00, 0x00, 0xA5, 0x15,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x38, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0x7D, 0x00, 0x00, 0x5A, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x1C, 0x00, 0x05, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFA, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFD, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFA, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x5A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFA, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x2B,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0xFA, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0x3D, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0xFB, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE5, 0x1C, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xAB,
+ 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE0, 0x57, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xAB, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xD0, 0xD7, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xDB, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58,
+ 0xE5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x58, 0xD5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xEA, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFE, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x69, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xAB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xAB,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xFF, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x6B, 0x00, 0x00,
+ 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xA0, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x50,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFE,
+ 0x7B, 0x00, 0x00, 0x00, 0x20, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x68, 0xFA, 0x7D, 0x00, 0x00, 0x00, 0x54, 0x28, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x55, 0x7E, 0x00,
+ 0x00, 0x80, 0xAA, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xE5, 0xA9, 0x5D, 0x00, 0x00, 0x1A, 0x54, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x57, 0x12, 0x00, 0x00, 0xCE,
+ 0xA8, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFA,
+ 0xA9, 0x2A, 0x00, 0x80, 0x0B, 0x28, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xFD, 0x97, 0x17, 0x00, 0x40, 0x06, 0x60, 0x56,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0xFB, 0x2B,
+ 0x00, 0x00, 0x00, 0x64, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xA0, 0xF5, 0xF5, 0x17, 0x00, 0x00, 0x1C, 0x04, 0xFA, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x5A, 0xFE, 0x1F, 0x00, 0x00,
+ 0x6A, 0x09, 0xE4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA6,
+ 0xA9, 0xFD, 0x17, 0x00, 0x00, 0xB4, 0x06, 0xFB, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x00, 0x49, 0xFA, 0x55, 0xFE, 0x0B, 0x00, 0x00, 0x7A, 0x5B,
+ 0x6A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xDF, 0xB4, 0xFE, 0xAB, 0xFE,
+ 0x17, 0x00, 0x00, 0x94, 0xA5, 0xB9, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF,
+ 0x5F, 0x6B, 0xFF, 0x57, 0xFC, 0x15, 0x00, 0x00, 0xAC, 0x55, 0xDA, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xDA, 0xFF, 0xE7, 0x97, 0xFF, 0xAF, 0xFF, 0x0B, 0x00,
+ 0x00, 0x54, 0xAB, 0x60, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xA5, 0xFF, 0xDB, 0x5F,
+ 0xFF, 0x57, 0xFE, 0x05, 0x00, 0x00, 0xA8, 0x36, 0xA0, 0x1F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x70, 0x5A, 0x2D, 0xC5, 0xAF, 0xFF, 0xAF, 0xBB, 0x0A, 0x00, 0x00, 0x50,
+ 0x09, 0xE0, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xD5, 0xAA, 0xDA, 0xA7, 0xFF, 0x67,
+ 0xAA, 0x05, 0x00, 0x00, 0x40, 0x02, 0x40, 0x27, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xAA,
+ 0x55, 0x67, 0xDA, 0xFF, 0xFB, 0x55, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x7F, 0x55, 0xDA, 0xAF, 0x6D, 0xFF, 0xF9, 0xAA, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xAA, 0xA5, 0x5F,
+ 0x91, 0xFF, 0xF5, 0x55, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x5F, 0xAA, 0xAF, 0x27, 0xA9, 0xB6, 0x3A, 0xA9, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xE7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xBF, 0x55, 0x5F, 0xF9, 0x5F, 0x59,
+ 0x95, 0x5E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA0, 0x5F,
+ 0xEA, 0xFF, 0xF6, 0x9F, 0xAA, 0xF8, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x58, 0x55, 0xAB, 0xD5, 0xFF, 0xFD, 0x7F, 0x55, 0xFF, 0xFF,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xA2, 0xDA, 0xD5, 0xFF,
+ 0xFB, 0xFF, 0x9A, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x54, 0xF5, 0xEB, 0xFF, 0xF7, 0xFF, 0xE5, 0xFF, 0xBF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA8, 0xFA, 0xE5, 0xFF, 0xFF, 0xFF,
+ 0xD7, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x50,
+ 0xB5, 0xFB, 0xFF, 0xE7, 0xFF, 0xEB, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xA8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x90, 0x55, 0xF6, 0xFF, 0x5F, 0xFF, 0xD7, 0xFF,
+ 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x0F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x78, 0xAA, 0xE9,
+ 0xFF, 0xA3, 0xFF, 0xEB, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xB8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x00, 0xA8, 0x3F, 0xE7, 0xFF, 0x5B, 0xFE, 0x5B, 0xFF, 0x2F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x64, 0xFF, 0xF8, 0xFF, 0x6F,
+ 0xF9, 0xA5, 0xFE, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x3F,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
+ 0xE8, 0xFF, 0xAA, 0xFF, 0xAF, 0x5A, 0x5D, 0xDB, 0x0A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xD0, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x00, 0xD4, 0xFF, 0xD5, 0xFF, 0x57, 0xA5, 0xAA,
+ 0xA5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xE4, 0xFF,
+ 0xBA, 0xFF, 0xAB, 0x6E, 0x95, 0x9B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x50, 0x00, 0xE8, 0xFF, 0x75, 0xFE, 0x57, 0xBF, 0xEA, 0x57, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xAF, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0xE8, 0xFF, 0xFB, 0x69,
+ 0xD1, 0x7F, 0xE9, 0x57, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0xAB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x06,
+ 0x00, 0xF8, 0xFF, 0xF9, 0x97, 0xED, 0xFF, 0xF6, 0xAF, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x60, 0x5E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0xD0, 0xFF, 0xFD, 0x5A, 0xFA, 0xFF,
+ 0xEB, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xAD, 0x06,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xA8,
+ 0xFF, 0x53, 0xA5, 0xE5, 0x7F, 0xD6, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xDE, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x14, 0x00, 0x00, 0x50, 0xFA, 0x96, 0xDA, 0xFA, 0xBF, 0xAA, 0x65,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE4, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0xA0, 0x55, 0xE9,
+ 0x5F, 0xF5, 0x7F, 0xD5, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0xDF, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x05,
+ 0x00, 0x00, 0x50, 0xA6, 0xDA, 0xBF, 0xFA, 0xBF, 0xEA, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xDF, 0x2B, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0xA0, 0xFD, 0xF5, 0x5F, 0xF5,
+ 0x7F, 0xF5, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBF,
+ 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x01, 0x00, 0x00,
+ 0x00, 0xFF, 0xF9, 0xBF, 0xDC, 0x1F, 0xFA, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0xBF, 0xFA, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x28, 0x02, 0x00, 0x00, 0x80, 0xFE, 0xFB, 0x7F, 0xBD, 0xEF, 0xF5,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xF9, 0x75,
+ 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0xFD,
+ 0xFE, 0xBF, 0xBF, 0x57, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xFE, 0xFD, 0x99, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x50,
+ 0x02, 0x00, 0x00, 0x00, 0xFC, 0xFD, 0x5F, 0x7F, 0x69, 0x1D, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFC, 0xFF, 0xF6, 0x5E,
+ 0x00, 0x00, 0x40, 0x00, 0xD0, 0x02, 0x00, 0x00, 0x00, 0x60, 0xFA, 0x5F,
+ 0x7F, 0x5A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xAE, 0xFB, 0x77, 0xA5, 0xE5, 0x01, 0x00, 0x00, 0x00, 0xA8, 0x01, 0x00,
+ 0x00, 0x00, 0x80, 0xE5, 0xAF, 0xBE, 0xE5, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xFD, 0xA8, 0x9F, 0xFA, 0x03, 0x00,
+ 0x40, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x99, 0x67, 0x5D, 0x88,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xBB,
+ 0x55, 0x5E, 0xED, 0x07, 0x00, 0x20, 0x00, 0xD8, 0x00, 0x00, 0x00, 0x00,
+ 0xA0, 0x11, 0x04, 0x00, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x5A, 0x75, 0xAD, 0xAA, 0xD1, 0x07, 0x00, 0x60, 0x00,
+ 0x30, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x15, 0x00, 0x00, 0x9C, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xBB, 0xDE, 0x76,
+ 0xAA, 0xC7, 0x02, 0x60, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1C,
+ 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xF0, 0x4F, 0x7F, 0xFD, 0x67, 0x2A, 0x04, 0x40, 0x00, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x6E, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x9F, 0x7E, 0xFC, 0xFD, 0x05,
+ 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x1C, 0x00, 0x00,
+ 0xE4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
+ 0x7F, 0xFF, 0xFF, 0xD3, 0x1A, 0x04, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x60, 0x28, 0x00, 0x00, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF0, 0xAF, 0xFE, 0xFE, 0x9B, 0x29, 0x18, 0x10,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x00, 0xD8, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x5F, 0x79,
+ 0xFE, 0xE7, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
+ 0x01, 0x00, 0x00, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xA0, 0x65, 0xA2, 0xF9, 0xFB, 0x2B, 0x00, 0x08, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xA0, 0x1C, 0x00, 0x00, 0xAE, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x5D, 0xF6, 0xFD,
+ 0x17, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00,
+ 0x00, 0x6E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x7E, 0x7E, 0xAB, 0xFF, 0x15, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xE0, 0x30, 0x00, 0x00, 0x9E, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0xFF, 0x55, 0xF7, 0x1B, 0x80,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x38, 0x00, 0x00, 0x9E,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E,
+ 0xFE, 0xAA, 0xE6, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xA0, 0x19, 0x00, 0x00, 0xEE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFE, 0x55, 0x9D, 0x1A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, 0xE6, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFD, 0xEB,
+ 0xD7, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x11,
+ 0x00, 0x00, 0xD8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0xFE, 0xF4, 0xCB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x2D, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7E, 0xFB, 0xFF, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00,
+ 0xD8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xE5, 0xF7, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x29, 0x00, 0x00, 0x5C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xF7, 0xF7, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x15, 0x00, 0x00, 0xD8, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x13,
+ 0xEB, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x29, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x0B, 0x80, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x18,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1D, 0x00,
+ 0x00, 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x09, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x40, 0x19, 0x00, 0x00, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1A, 0x00, 0x36, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x28, 0x00, 0x00, 0x6C,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x15, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x15, 0x00, 0x00, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x21, 0x00, 0x00, 0x6A, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
+ 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3F,
+ 0x00, 0x00, 0xDC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x0D, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x29, 0x00, 0x00, 0x6C, 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x3E, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1B, 0x00, 0x00,
+ 0x94, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x0D, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x27, 0x00, 0x00, 0xA4, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x16, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x78, 0x00, 0x00, 0xD8, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
+ 0x77, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x38, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x36,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x3B, 0x00,
+ 0x00, 0x78, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0x07, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80, 0x20, 0x00, 0x00, 0xA4, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0E, 0x00, 0x14, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x19, 0x00, 0x00, 0x98,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0x0A, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xE0, 0x29, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x0D, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x68, 0x00, 0x00, 0xE8, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00,
+ 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1A,
+ 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x09, 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40, 0x19, 0x00, 0x00, 0xA0, 0x07, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0B, 0x00, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x66, 0x00, 0x00,
+ 0x98, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x0C, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x80, 0xE2, 0x00, 0x00, 0xA8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x12, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x01, 0x00, 0xD0, 0xFE,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0C,
+ 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+ 0xAA, 0x02, 0x00, 0xE8, 0x6B, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x09, 0x00, 0xF0, 0xB7, 0x0F, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE6, 0x06, 0x00, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0x95,
+ 0x00, 0xF0, 0xAF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFE, 0x03, 0x80, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFA, 0x7B, 0x01, 0xA0, 0x5F, 0x2A, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE7, 0x05, 0xC0, 0x15, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0x7B, 0x01, 0x90,
+ 0xEF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xBD,
+ 0x02, 0xE8, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0xFA, 0xBD, 0x03, 0x40, 0xD9, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x51, 0x03, 0x58, 0x1F, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xEC, 0x03, 0x40, 0xDB, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0x00, 0xBA,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
+ 0x9B, 0x03, 0x00, 0xA7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xF6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x67, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
diff --git a/practices/tk/optionDB.txt b/practices/tk/optionDB.txt
new file mode 100644
index 0000000..db257e1
--- /dev/null
+++ b/practices/tk/optionDB.txt
@@ -0,0 +1,56 @@
+ar_internal_metadata
+attachments
+auth_sources
+boards
+changes
+changeset_parents
+changesets
+changesets_issues
+comments
+custom_field_enumerations
+custom_fields
+custom_fields_projects
+custom_fields_roles
+custom_fields_trackers
+custom_values
+documents
+email_addresses
+enabled_modules
+enumerations
+groups_users
+import_items
+imports
+issue_categories
+issue_relations
+issue_statuses
+issues
+journal_details
+journals
+member_roles
+members
+messages
+news
+open_id_authentication_associations
+open_id_authentication_nonces
+projects
+projects_trackers
+queries
+queries_roles
+repositories
+roles
+roles_managed_roles
+schema_migrations
+settings
+time_entries
+tokens
+trackers
+user_preferences
+users
+versions
+watchers
+wiki_content_versions
+wiki_contents
+wiki_pages
+wiki_redirects
+wikis
+workflows
diff --git a/practices/tk/textcontent.txt b/practices/tk/textcontent.txt
new file mode 100644
index 0000000..9b25f66
--- /dev/null
+++ b/practices/tk/textcontent.txt
@@ -0,0 +1,37 @@
+https://china-testing.github.io/
+
+https://www.jianshu.com/u/69f40328d4f0
+
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-29
+
+I am a text-widget.
+Tkinter includes 21 core widgets. This program demonstrates all of them.
+
+See if you can identify all of them
+
+1) Toplevel Widget**
+2) Button Widget
+3) Canvas Widget
+4) Checkbutton Widget
+5) Entry Widget
+6) Frame Widget
+7) Label Widget
+8) LabelFrame Widget
+9) Listbox Widget
+10) Menu Widget
+11) Menubutton Widget
+12) Message Widget
+13) OptionMenu Widget
+14) PanedWindow Widget
+15) Radiobutton Widget
+16) Scale Widget
+17) Scrollbar Widget
+18) Spinbox Widget
+19) Text Widget
+20) Bitmap Class Widget
+21) Image Class Widget
+
+** (hint - the window which houses all other widgets)
+
+
diff --git a/practices/tk/tk1.py b/practices/tk/tk1.py
new file mode 100644
index 0000000..6233ad0
--- /dev/null
+++ b/practices/tk/tk1.py
@@ -0,0 +1,106 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/tk/tk1.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-27
+
+import tkinter as tk
+from tkinter import ttk
+from tkinter import scrolledtext
+
+win = tk.Tk()
+
+# Add a title
+win.title("Python GUI")
+
+# Modify adding a Label
+a_label = ttk.Label(win, text="A Label")
+a_label.grid(column=0, row=0)
+
+# Modified Button Click Function
+def click_me():
+ action.configure(text='Hello ' + name.get() + ' ' +
+ number_chosen.get())
+
+# Changing our Label
+ttk.Label(win, text="Enter a name:").grid(column=0, row=0)
+
+# Adding a Textbox Entry widget
+name = tk.StringVar()
+name_entered = ttk.Entry(win, width=12, textvariable=name)
+name_entered.grid(column=0, row=1)
+
+# Adding a Button
+action = ttk.Button(win, text="Click Me!", command=click_me)
+action.grid(column=2, row=1) # <= change column to 2
+
+# Creating three checkbuttons
+ttk.Label(win, text="Choose a number:").grid(column=1, row=0)
+number = tk.StringVar()
+number_chosen = ttk.Combobox(win, width=12, textvariable=number, state='readonly')
+number_chosen['values'] = (1, 2, 4, 42, 100)
+number_chosen.grid(column=1, row=1)
+number_chosen.current(3)
+
+chVarDis = tk.IntVar()
+check1 = tk.Checkbutton(win, text="Disabled", variable=chVarDis, state='disabled')
+check1.select()
+check1.grid(column=0, row=4, sticky=tk.W)
+
+chVarUn = tk.IntVar()
+check2 = tk.Checkbutton(win, text="UnChecked", variable=chVarUn)
+check2.deselect()
+check2.grid(column=1, row=4, sticky=tk.W)
+
+chVarEn = tk.IntVar()
+check3 = tk.Checkbutton(win, text="Enabled", variable=chVarEn)
+check3.deselect()
+check3.grid(column=2, row=4, sticky=tk.W)
+
+# GUI Callback function
+def checkCallback(*ignoredArgs):
+ # only enable one checkbutton
+ if chVarUn.get(): check3.configure(state='disabled')
+ else: check3.configure(state='normal')
+ if chVarEn.get(): check2.configure(state='disabled')
+ else: check2.configure(state='normal')
+
+# trace the state of the two checkbuttons
+chVarUn.trace('w', lambda unused0, unused1, unused2 : checkCallback())
+chVarEn.trace('w', lambda unused0, unused1, unused2 : checkCallback())
+
+
+# First, we change our Radiobutton global variables into a list
+colors = ["Blue", "Gold", "Red"]
+
+# We have also changed the callback function to be zero-based, using the list
+# instead of module-level global variables
+# Radiobutton Callback
+def radCall():
+ radSel=radVar.get()
+ win.configure(background=colors[radSel])
+
+# create three Radiobuttons using one variable
+radVar = tk.IntVar()
+
+# Next we are selecting a non-existing index value for radVar
+radVar.set(99)
+
+# Now we are creating all three Radiobutton widgets within one loop
+for col in range(3):
+ curRad = tk.Radiobutton(win, text=colors[col], variable=radVar,
+ value=col, command=radCall)
+ curRad.grid(column=col, row=5, sticky=tk.W)
+
+# Using a scrolled Text control
+scr = scrolledtext.ScrolledText(win, width=30, height=3, wrap=tk.WORD)
+scr.grid(column=0, columnspan=3)
+
+name_entered.focus() # Place cursor into name Entry
+
+#======================
+# Start GUI
+#======================
+win.mainloop()
\ No newline at end of file
diff --git a/practices/tk/tk2.py b/practices/tk/tk2.py
new file mode 100644
index 0000000..d32109b
--- /dev/null
+++ b/practices/tk/tk2.py
@@ -0,0 +1,151 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/tk/tk2.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-27
+import tkinter as tk
+from tkinter import ttk
+from tkinter import scrolledtext
+from tkinter import Menu
+
+# Create instance
+win = tk.Tk()
+
+# Add a title
+win.title("Python GUI")
+
+tabControl = ttk.Notebook(win) # Create Tab Control
+
+tab1 = ttk.Frame(tabControl) # Create a tab
+tabControl.add(tab1, text='Tab 1') # Add the tab
+tab2 = ttk.Frame(tabControl) # Add a second tab
+tabControl.add(tab2, text='Tab 2') # Make second tab visible
+
+tabControl.pack(expand=1, fill="both") # Pack to make visible
+
+# LabelFrame using tab1 as the parent
+mighty = ttk.LabelFrame(tab1, text=' Mighty Python ')
+mighty.grid(column=0, row=0, padx=8, pady=4)
+
+# Modify adding a Label using mighty as the parent instead of win
+a_label = ttk.Label(mighty, text="Enter a name:")
+a_label.grid(column=0, row=0, sticky='W')
+
+# Modified Button Click Function
+def click_me():
+ action.configure(text='Hello ' + name.get() + ' ' +
+ number_chosen.get())
+
+# Adding a Textbox Entry widget
+name = tk.StringVar()
+name_entered = ttk.Entry(mighty, width=12, textvariable=name)
+name_entered.grid(column=0, row=1, sticky='W') # align left/West
+
+# Adding a Button
+action = ttk.Button(mighty, text="Click Me!", command=click_me)
+action.grid(column=2, row=1)
+
+# Creating three checkbuttons
+ttk.Label(mighty, text="Choose a number:").grid(column=1, row=0)
+number = tk.StringVar()
+number_chosen = ttk.Combobox(mighty, width=12, textvariable=number, state='readonly')
+number_chosen['values'] = (1, 2, 4, 42, 100)
+number_chosen.grid(column=1, row=1)
+number_chosen.current(0)
+
+chVarDis = tk.IntVar()
+check1 = tk.Checkbutton(mighty, text="Disabled", variable=chVarDis, state='disabled')
+check1.select()
+check1.grid(column=0, row=4, sticky=tk.W)
+
+chVarUn = tk.IntVar()
+check2 = tk.Checkbutton(mighty, text="UnChecked", variable=chVarUn)
+check2.deselect()
+check2.grid(column=1, row=4, sticky=tk.W)
+
+chVarEn = tk.IntVar()
+check3 = tk.Checkbutton(mighty, text="Enabled", variable=chVarEn)
+check3.deselect()
+check3.grid(column=2, row=4, sticky=tk.W)
+
+# GUI Callback function
+def checkCallback(*ignoredArgs):
+ # only enable one checkbutton
+ if chVarUn.get(): check3.configure(state='disabled')
+ else: check3.configure(state='normal')
+ if chVarEn.get(): check2.configure(state='disabled')
+ else: check2.configure(state='normal')
+
+# trace the state of the two checkbuttons
+chVarUn.trace('w', lambda unused0, unused1, unused2 : checkCallback())
+chVarEn.trace('w', lambda unused0, unused1, unused2 : checkCallback())
+
+
+# Using a scrolled Text control
+scrol_w = 30
+scrol_h = 3
+scr = scrolledtext.ScrolledText(mighty, width=scrol_w, height=scrol_h, wrap=tk.WORD)
+scr.grid(column=0, row=5, sticky='WE', columnspan=3)
+
+
+# First, we change our Radiobutton global variables into a list
+colors = ["Blue", "Gold", "Red"]
+
+# We have also changed the callback function to be zero-based, using the list
+# instead of module-level global variables
+# Radiobutton Callback
+def radCall():
+ radSel=radVar.get()
+ win.configure(background=colors[radSel])
+
+# create three Radiobuttons using one variable
+radVar = tk.IntVar()
+
+# Next we are selecting a non-existing index value for radVar
+radVar.set(99)
+
+# Now we are creating all three Radiobutton widgets within one loop
+for col in range(3):
+ curRad = tk.Radiobutton(mighty, text=colors[col], variable=radVar,
+ value=col, command=radCall)
+ curRad.grid(column=col, row=5, sticky=tk.W) # row=5 ... SURPRISE!
+
+# Create a container to hold labels
+buttons_frame = ttk.LabelFrame(mighty, text=' Labels in a Frame ')
+buttons_frame.grid(column=0, row=7)
+
+# Place labels into the container element
+ttk.Label(buttons_frame, text="Label1").grid(column=0, row=0, sticky=tk.W)
+ttk.Label(buttons_frame, text="Label2").grid(column=1, row=0, sticky=tk.W)
+ttk.Label(buttons_frame, text="Label3").grid(column=2, row=0, sticky=tk.W)
+
+# Exit GUI cleanly
+def _quit():
+ win.quit()
+ win.destroy()
+ exit()
+
+# Creating a Menu Bar
+menu_bar = Menu(win)
+win.config(menu=menu_bar)
+
+# Add menu items
+file_menu = Menu(menu_bar, tearoff=0)
+file_menu.add_command(label="New")
+file_menu.add_separator()
+file_menu.add_command(label="Exit", command=_quit)
+menu_bar.add_cascade(label="File", menu=file_menu)
+
+# Add another Menu to the Menu Bar and an item
+help_menu = Menu(menu_bar, tearoff=0)
+help_menu.add_command(label="About")
+menu_bar.add_cascade(label="Help", menu=help_menu)
+
+
+name_entered.focus() # Place cursor into name Entry
+#======================
+# Start GUI
+#======================
+win.mainloop()
\ No newline at end of file
diff --git a/practices/tk/tk3.py b/practices/tk/tk3.py
new file mode 100644
index 0000000..c8d38b0
--- /dev/null
+++ b/practices/tk/tk3.py
@@ -0,0 +1,180 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/tk/tk3.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-29
+
+
+import tkinter as tk
+
+root = tk.Tk()
+root.title('tkinter控件')
+#create a frame widget for placing menu
+my_menu_bar = tk.Frame(root, relief='raised', bd=2)
+my_menu_bar.pack(fill=tk.X)
+
+# Create Menu Widget 1 and Sub Menu 1
+my_menu_button = tk.Menubutton(
+ my_menu_bar,
+ text='菜单1',
+)
+my_menu_button.pack(side=tk.LEFT)
+#menu widget
+my_menu = tk.Menu(my_menu_button, tearoff=0)
+my_menu_button['menu'] = my_menu
+my_menu.add('command', label='子菜单1') #Add Sub Menu 1
+
+# Create Menu2 and Submenu2
+menu_button_2 = tk.Menubutton(
+ my_menu_bar,
+ text='菜单2',
+)
+menu_button_2.pack(side=tk.LEFT)
+my_menu_2 = tk.Menu(menu_button_2, tearoff=0)
+menu_button_2['menu'] = my_menu_2
+my_menu_2.add('command', label='子菜单2') # Add Sub Menu 2
+
+#
+#
+# my_frame_1 and its contents
+#
+
+# creating a frame (my_frame_1)
+my_frame_1 = tk.Frame(root, bd=2, relief=tk.SUNKEN)
+my_frame_1.pack(side=tk.LEFT)
+
+# add label to to my_frame_1
+tk.Label(my_frame_1, text='标签').pack()
+
+#add entry widget to my_frame_1
+tv = tk.StringVar() #discussed later
+tk.Entry(my_frame_1, textvariable=tv).pack()
+tv.set('I am an entry widget')
+
+#add button widget to my_frame_1
+tk.Button(my_frame_1, text='tk.Button widget').pack()
+
+#add check button widget to my_frame_1
+tk.Checkbutton(my_frame_1, text='Checktk.Button Widget').pack()
+
+#add radio buttons to my_frame_1
+tk.Radiobutton(my_frame_1, text='Radio tk.Button Un', value=1).pack()
+tk.Radiobutton(my_frame_1, text='Radio tk.Button Dos', value=2).pack()
+tk.Radiobutton(my_frame_1, text='Radio tk.Button Tres', value=3).pack()
+
+#tk.OptionMenu Widget
+tk.Label(my_frame_1, text='Example of tk.OptionMenu Widget:').pack()
+tk.OptionMenu(my_frame_1, '', "Option A", "Option B", "Option C").pack()
+
+#adding my_image image
+tk.Label(my_frame_1, text='Image Fun with Bitmap Class:').pack()
+my_image = tk.BitmapImage(file="gir.xbm")
+my_label = tk.Label(my_frame_1, image=my_image)
+my_label.image = my_image # keep a reference!
+my_label.pack()
+
+#
+#
+# frame2 and widgets it contains.
+#
+#
+
+#create another frame(my_frame_2) to hold a list box, Spinbox Widget,Scale Widget, :
+my_frame_2 = tk.Frame(root, bd=2, relief=tk.GROOVE)
+my_frame_2.pack(side=tk.RIGHT)
+
+#add Photimage Class Widget to my_frame_2
+tk.Label(
+ my_frame_2, text='Image displayed with \nPhotoImage class widget:').pack()
+dance_photo = tk.PhotoImage(file='dance.gif')
+dance_photo_label = tk.Label(my_frame_2, image=dance_photo)
+dance_photo_label.image = dance_photo
+dance_photo_label.pack()
+
+#add my_listbox widget to my_frame_2
+tk.Label(my_frame_2, text='Below is an example of my_listbox widget:').pack()
+my_listbox = tk.Listbox(my_frame_2, height=4)
+for line in ['Listbox Choice 1', 'Choice 2', 'Choice 3', 'Choice 4']:
+ my_listbox.insert(tk.END, line)
+my_listbox.pack()
+
+#spinbox widget
+tk.Label(my_frame_2, text='Below is an example of spinbox widget:').pack()
+tk.Spinbox(my_frame_2, values=(1, 2, 4, 8, 10)).pack()
+
+#scale widget
+tk.Scale(
+ my_frame_2, from_=0.0, to=100.0, label='Scale widget',
+ orient=tk.HORIZONTAL).pack()
+
+#LabelFrame
+label_frame = tk.LabelFrame(
+ my_frame_2, text="LabelFrame Widget", padx=10, pady=10)
+label_frame.pack(padx=10, pady=10)
+tk.Entry(label_frame).pack()
+
+#message widget
+tk.Message(my_frame_2, text='I am a Message widget').pack()
+
+#
+#
+# tk.Frame 3
+#
+#
+
+my_frame_3 = tk.Frame(root, bd=2, relief=tk.SUNKEN)
+
+#text widget and associated tk.Scrollbar widget
+my_text = tk.Text(my_frame_3, height=10, width=40)
+file_object = open('textcontent.txt', encoding='utf-8')
+file_content = file_object.read()
+file_object.close()
+my_text.insert(tk.END, file_content)
+my_text.pack(side=tk.LEFT, fill=tk.X, padx=5)
+
+#add scrollbar widget to the text widget
+my_scrollbar = tk.Scrollbar(my_frame_3, orient=tk.VERTICAL, command=my_text.yview)
+my_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
+my_text.configure(yscrollcommand=my_scrollbar.set)
+my_frame_3.pack()
+
+#
+#
+# tk.Frame 4
+#
+#
+#create another frame(my_frame_4)
+my_frame_4 = tk.Frame(root)
+my_frame_4.pack()
+
+my_canvas = tk.Canvas(my_frame_4, bg='white', width=340, height=80)
+my_canvas.pack()
+my_canvas.create_oval(20, 15, 60, 60, fill='red')
+my_canvas.create_oval(40, 15, 60, 60, fill='grey')
+my_canvas.create_text(
+ 130, 38, text='I am a tk.Canvas Widget', font=('arial', 8, 'bold'))
+
+#
+#
+# A paned window widget
+#
+#
+
+tk.Label(root, text='Below is an example of Paned window widget:').pack()
+tk.Label(
+ root,
+ text='Notice you can adjust the size of each pane by dragging it').pack()
+my_paned_window_1 = tk.PanedWindow()
+my_paned_window_1.pack(fill=tk.BOTH, expand=2)
+left_pane_text = tk.Text(my_paned_window_1, height=6, width=15)
+my_paned_window_1.add(left_pane_text)
+my_paned_window_2 = tk.PanedWindow(my_paned_window_1, orient=tk.VERTICAL)
+my_paned_window_1.add(my_paned_window_2)
+top_pane_text = tk.Text(my_paned_window_2, height=3, width=3)
+my_paned_window_2.add(top_pane_text)
+bottom_pane_text = tk.Text(my_paned_window_2, height=3, width=3)
+my_paned_window_2.add(bottom_pane_text)
+
+root.mainloop()
diff --git a/practices/tk/tk4.py b/practices/tk/tk4.py
new file mode 100644
index 0000000..cef5f74
--- /dev/null
+++ b/practices/tk/tk4.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/tk/tk4.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-12-02
+
+import tkinter as tk
+root = tk.Tk()
+root.configure(background='#4D4D4D') #top level styling
+
+# connecting to the external styling optionDB.txt
+root.option_readfile('optionDB.txt')
+
+#widget specific styling
+text = tk.Text(
+ root,
+ background='#101010',
+ foreground="#D6D6D6",
+ borderwidth=18,
+ relief='sunken',
+ width=17,
+ height=5)
+text.insert(
+ tk.END,
+ "Style is knowing who you are,what you want to say, and not giving a damn."
+)
+text.grid(row=0, column=0, columnspan=6, padx=5, pady=5)
+
+# all the below widgets derive their styling from optionDB.txt file
+tk.Button(root, text='*').grid(row=1, column=1)
+tk.Button(root, text='^').grid(row=1, column=2)
+tk.Button(root, text='#').grid(row=1, column=3)
+tk.Button(root, text='<').grid(row=2, column=1)
+tk.Button(
+ root, text='OK', cursor='target').grid(
+ row=2, column=2) #changing cursor style
+tk.Button(root, text='>').grid(row=2, column=3)
+tk.Button(root, text='+').grid(row=3, column=1)
+tk.Button(root, text='v').grid(row=3, column=2)
+tk.Button(root, text='-').grid(row=3, column=3)
+for i in range(10):
+ tk.Button(
+ root, text=str(i)).grid(
+ column=3 if i % 3 == 0 else (1 if i % 3 == 1 else 2),
+ row=4 if i <= 3 else (5 if i <= 6 else 6))
+
+root.mainloop()
diff --git a/practices/traceroute.py b/practices/traceroute.py
new file mode 100644
index 0000000..e297241
--- /dev/null
+++ b/practices/traceroute.py
@@ -0,0 +1,75 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 技术支持:https://www.jianshu.com/u/69f40328d4f0
+# 技术支持 https://china-testing.github.io/
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/traceroute.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2018-11-26
+
+import socket
+import io
+import struct
+import sys
+
+class flushfile(io.FileIO):
+ def __init__(self, f):
+ self.f = f
+ def write(self, x):
+ self.f.write(x)
+ self.f.flush()
+
+sys.stdout = flushfile(sys.stdout)
+
+def main(dest_name):
+ dest_addr = socket.gethostbyname(dest_name)
+ port = 55285
+ max_hops = 30
+
+ ttl = 1
+ while True:
+ rec_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
+ send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
+ send_socket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)
+
+ timeout = struct.pack("ll", 2, 0)
+ rec_socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVTIMEO, timeout)
+
+ rec_socket.bind(("", port))
+ sys.stdout.write(" %d " % ttl)
+ send_socket.sendto(bytes("", "utf-8"), (dest_name, port))
+
+ curr_addr = None
+ curr_name = None
+ finished = False
+ tries = 1
+ while not finished and tries > 0:
+ try:
+ _, curr_addr = rec_socket.recvfrom(512)
+ finished = True
+ curr_addr = curr_addr[0]
+ try:
+ curr_name = socket.gethostbyaddr(curr_addr)[0]
+ except socket.error:
+ curr_name = curr_addr
+ except socket.error as err:
+ tries -= 1
+ sys.stdout.write("* ")
+
+ send_socket.close()
+ rec_socket.close()
+
+ if not finished:
+ pass
+
+ if curr_addr is not None:
+ curr_host = "%s (%s)" % (curr_name, curr_addr)
+ else:
+ curr_host = ""
+ sys.stdout.write("%s\n" % (curr_host))
+
+ ttl += 1
+ if curr_addr == dest_addr or ttl > max_hops:
+ break
+
+if __name__ == "__main__":
+ main("china-testing.github.io")
\ No newline at end of file
diff --git a/practices/traceroute2.py b/practices/traceroute2.py
new file mode 100644
index 0000000..834d486
--- /dev/null
+++ b/practices/traceroute2.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import socket
+import os
+import sys
+import struct
+import time
+import argparse
+
+ICMP_ECHO_REQUEST = 8
+
+DESTINATION_REACHED = 1
+SOCKET_TIMEOUT = 2
+
+
+def checksum(str_):
+ #str_ = bytearray(str_)
+ csum = 0
+ countTo = (len(str_) // 2) * 2
+
+ for count in range(0, countTo, 2):
+ #thisVal = str_[count+1] * 256 + str_[count]
+ thisVal = ord(str_[count + 1])*256 + ord(str_[count])
+ csum = csum + thisVal
+ csum = csum & 0xffffffff
+
+ if countTo < len(str_):
+ csum = csum + str_[-1]
+ csum = csum & 0xffffffff
+
+ csum = (csum >> 16) + (csum & 0xffff)
+ csum = csum + (csum >> 16)
+ answer = ~csum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+
+def receiveOnePing(mySocket, ID, timeout, destAddr):
+ startTime = time.time()
+
+ while (startTime + timeout - time.time()) > 0:
+ try:
+ recPacket, (addr, x) = mySocket.recvfrom(1024)
+ except socket.timeout:
+ break # timed out
+ timeReceived = time.time()
+
+ # Fetch the ICMPHeader fromt the IP
+ icmpHeader = recPacket[20:28]
+
+ icmpType, code, checksum, packetID, sequence = struct.unpack(
+ "bbHHh", icmpHeader)
+
+ if icmpType == 11 and code == 0:
+ return (timeReceived - startTime, addr, None)
+ elif icmpType == 0 and code == 0:
+ return (timeReceived - startTime, addr, DESTINATION_REACHED)
+
+ return (None, None, SOCKET_TIMEOUT)
+
+
+def sendOnePing(mySocket, destAddr, ID):
+
+ # Make a dummy header with a 0 checksum
+ # Header is type (8), code (8), checksum (16), id (16), sequence (16)
+ header = struct.pack("bbHHh",
+ ICMP_ECHO_REQUEST, # type (byte)
+ 0, # code (byte)
+ 0, # checksum (halfword, 2 bytes)
+ ID, # ID (halfword)
+ 1) # sequence (halfword)
+ data = struct.pack("d", time.time())
+ # Calculate the checksum on the data and the dummy header.
+ myChecksum = checksum(header + data)
+
+ # Get the right checksum, and put in the header
+ if sys.platform == 'darwin':
+ # htons: Convert 16-bit integers from host to network byte order
+ myChecksum = socket.htons(myChecksum) & 0xffff
+ else:
+ myChecksum = socket.htons(myChecksum)
+
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, myChecksum, ID, 1)
+ packet = header + data
+
+ # AF_INET address must be tuple, not str
+ mySocket.sendto(packet, (destAddr, 1))
+
+
+def doOnePing(destAddr, timeout, ttl):
+ icmp = socket.getprotobyname("icmp")
+ # SOCK_RAW is a powerful socket type. For more details:
+ # http://sock-raw.org/papers/sock_raw
+
+ mySocket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ mySocket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)
+ mySocket.settimeout(timeout)
+
+ myID = os.getpid() & 0xFFFF # Return the current process i
+ sendOnePing(mySocket, destAddr, myID)
+ delay = receiveOnePing(mySocket, myID, timeout, destAddr)
+
+ mySocket.close()
+ return delay
+
+
+def print_part(delay, address, prevaddr):
+ if not delay:
+ print('*', end=' ')
+ return
+
+ delay *= 1000
+ if not prevaddr == address:
+ try:
+ host, _, _ = socket.gethostbyaddr(address)
+ except:
+ host = address
+
+ print('{} ({}) {:.3f} ms'.format(host, address, delay),
+ end=' ')
+ else:
+ print(' {:.3f} ms'.format(delay),
+ end=' ')
+
+
+def traceroute(host, timeout, maxHops=30):
+ # timeout=1 means: If one second goes by without a reply from the server,
+ # the client assumes that either the client's ping or the server's pong is
+ # lost
+ dest = socket.gethostbyname(host)
+ print("traceroute to %s (%s), %d hops max" % (host, dest, maxHops))
+ # Send ping requests to a server separated by approximately one second
+
+ for ttl in range(1, maxHops+1):
+ print('{:2} '.format(ttl), end=' ')
+
+ prevaddr = None
+ for i in range(3):
+ delay, address, info = doOnePing(dest, timeout, ttl)
+ print_part(delay, address, prevaddr)
+ prevaddr = address
+
+ print()
+
+ if info == DESTINATION_REACHED:
+ break
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='Python traceroute')
+ parser.add_argument('host', action="store", help=u'host')
+ parser.add_argument('-t', action="store", dest="timeout", default=3,
+ type=int, help=u'timeout')
+ given_args = parser.parse_args()
+ traceroute(given_args.host, timeout=given_args.timeout)
\ No newline at end of file
diff --git a/practices/traceroute3.py b/practices/traceroute3.py
new file mode 100644
index 0000000..6bad387
--- /dev/null
+++ b/practices/traceroute3.py
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+from __future__ import print_function
+
+import socket
+import os
+import sys
+import struct
+import time
+import argparse
+
+ICMP_ECHO_REQUEST = 8
+
+DESTINATION_REACHED = 1
+SOCKET_TIMEOUT = 2
+
+
+def checksum(str_):
+ str_ = bytearray(str_)
+ csum = 0
+ countTo = (len(str_) // 2) * 2
+
+ for count in range(0, countTo, 2):
+ thisVal = str_[count+1] * 256 + str_[count]
+ csum = csum + thisVal
+ csum = csum & 0xffffffff
+
+ if countTo < len(str_):
+ csum = csum + str_[-1]
+ csum = csum & 0xffffffff
+
+ csum = (csum >> 16) + (csum & 0xffff)
+ csum = csum + (csum >> 16)
+ answer = ~csum
+ answer = answer & 0xffff
+ answer = answer >> 8 | (answer << 8 & 0xff00)
+ return answer
+
+
+def receiveOnePing(mySocket, ID, timeout, destAddr):
+ startTime = time.time()
+
+ while (startTime + timeout - time.time()) > 0:
+ try:
+ recPacket, (addr, x) = mySocket.recvfrom(1024)
+ except socket.timeout:
+ break # timed out
+ timeReceived = time.time()
+
+ # Fetch the ICMPHeader fromt the IP
+ icmpHeader = recPacket[20:28]
+
+ icmpType, code, checksum, packetID, sequence = struct.unpack(
+ "bbHHh", icmpHeader)
+
+ if icmpType == 11 and code == 0:
+ return (timeReceived - startTime, addr, None)
+ elif icmpType == 0 and code == 0:
+ return (timeReceived - startTime, addr, DESTINATION_REACHED)
+
+ return (None, None, SOCKET_TIMEOUT)
+
+
+def sendOnePing(mySocket, destAddr, ID):
+
+ # Make a dummy header with a 0 checksum
+ # Header is type (8), code (8), checksum (16), id (16), sequence (16)
+ header = struct.pack("bbHHh",
+ ICMP_ECHO_REQUEST, # type (byte)
+ 0, # code (byte)
+ 0, # checksum (halfword, 2 bytes)
+ ID, # ID (halfword)
+ 1) # sequence (halfword)
+ data = struct.pack("d", time.time())
+ # Calculate the checksum on the data and the dummy header.
+ myChecksum = checksum(header + data)
+
+ # Get the right checksum, and put in the header
+ if sys.platform == 'darwin':
+ # htons: Convert 16-bit integers from host to network byte order
+ myChecksum = socket.htons(myChecksum) & 0xffff
+ else:
+ myChecksum = socket.htons(myChecksum)
+
+ header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, myChecksum, ID, 1)
+ packet = header + data
+
+ # AF_INET address must be tuple, not str
+ mySocket.sendto(packet, (destAddr, 1))
+
+
+def doOnePing(destAddr, timeout, ttl):
+ icmp = socket.getprotobyname("icmp")
+ # SOCK_RAW is a powerful socket type. For more details:
+ # http://sock-raw.org/papers/sock_raw
+
+ mySocket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
+ mySocket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)
+ mySocket.settimeout(timeout)
+
+ myID = os.getpid() & 0xFFFF # Return the current process i
+ sendOnePing(mySocket, destAddr, myID)
+ delay = receiveOnePing(mySocket, myID, timeout, destAddr)
+
+ mySocket.close()
+ return delay
+
+
+def print_part(delay, address, prevaddr):
+ if not delay:
+ print('*', end=' ', flush=True)
+ return
+
+ delay *= 1000
+ if not prevaddr == address:
+ try:
+ host, _, _ = socket.gethostbyaddr(address)
+ except:
+ host = address
+
+ print('{} ({}) {:.3f} ms'.format(host, address, delay),
+ end=' ', flush=True)
+ else:
+ print(' {:.3f} ms'.format(delay),
+ end=' ', flush=True)
+
+
+def traceroute(host, timeout, maxHops=30):
+ # timeout=1 means: If one second goes by without a reply from the server,
+ # the client assumes that either the client's ping or the server's pong is
+ # lost
+ dest = socket.gethostbyname(host)
+ print("traceroute to %s (%s), %d hops max" % (host, dest, maxHops))
+ # Send ping requests to a server separated by approximately one second
+
+ for ttl in range(1, maxHops+1):
+ print('{:2} '.format(ttl), end=' ')
+
+ prevaddr = None
+ for i in range(3):
+ delay, address, info = doOnePing(dest, timeout, ttl)
+ print_part(delay, address, prevaddr)
+ prevaddr = address
+
+ print()
+
+ if info == DESTINATION_REACHED:
+ break
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='Python traceroute')
+ parser.add_argument('host', action="store", help=u'host')
+ parser.add_argument('-t', action="store", dest="timeout", default=3,
+ type=int, help=u'timeout')
+ given_args = parser.parse_args()
+ traceroute(given_args.host, timeout=given_args.timeout)
\ No newline at end of file
diff --git a/practices/ts/lr_pd.py b/practices/ts/lr_pd.py
new file mode 100644
index 0000000..524a8df
--- /dev/null
+++ b/practices/ts/lr_pd.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# https://github.com/china-testing/python-api-tesing/blob/master/practices/ts/lr_pd.py
+# 项目实战讨论QQ群630011153 144081101
+# CreateDate: 2019-01-02
+
+import pandas as pd
+from sklearn import datasets
+import tensorflow as tf
+import itertools
+
+def get_input_fn(data_set, num_epochs=None, n_batch = 128, shuffle=True):
+
+ x = pd.DataFrame({k: data_set[k].values for k in FEATURES})
+ y = pd.Series(data_set[LABEL].values)
+ return tf.estimator.inputs.pandas_input_fn(
+ x=x, y=y, batch_size=n_batch, num_epochs=num_epochs, shuffle=shuffle)
+
+
+COLUMNS = ["crim", "zn", "indus", "nox", "rm", "age","dis", "tax",
+ "ptratio", "medv"]
+FEATURES = ["crim", "zn", "indus", "nox", "rm", "age", "dis", "tax", "ptratio"]
+LABEL = "medv"
+
+training_set = pd.read_csv("boston_train.csv", skipinitialspace=True,skiprows=1, names=COLUMNS)
+test_set = pd.read_csv("boston_test.csv", skipinitialspace=True,skiprows=1, names=COLUMNS)
+prediction_set = pd.read_csv("boston_predict.csv", skipinitialspace=True,skiprows=1, names=COLUMNS)
+
+print(training_set.shape, test_set.shape, prediction_set.shape)
+
+
+feature_cols = [tf.feature_column.numeric_column(k) for k in FEATURES]
+
+estimator = tf.estimator.LinearRegressor(feature_columns=feature_cols,
+ model_dir="train")
+
+estimator.train(input_fn=get_input_fn(
+ training_set, num_epochs=None, n_batch = 128, shuffle=False), steps=1000)
+
+ev = estimator.evaluate(input_fn=get_input_fn(test_set, num_epochs=1,
+ n_batch = 128, shuffle=False))
+
+loss_score = ev["loss"]
+print("Loss: {0:f}".format(loss_score))
+print(training_set['medv'].describe())
+
+
+y = estimator.predict( input_fn=get_input_fn(prediction_set, num_epochs=1,
+ n_batch = 128, shuffle=False))
+
+predictions = list(p["predictions"] for p in itertools.islice(y, 6))
+print("Predictions: {}".format(str(predictions)))
diff --git a/python-automation-cook/ch3/blogs.py b/python-automation-cook/ch3/blogs.py
new file mode 100755
index 0000000..36bcf7b
--- /dev/null
+++ b/python-automation-cook/ch3/blogs.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-16
+
+import requests
+from bs4 import BeautifulSoup
+
+def get_upcoming_events(url):
+ req = requests.get(url)
+ soup = BeautifulSoup(req.text, 'lxml')
+ events = soup.findAll('article')
+
+ for event in events:
+ event_details = {}
+ event_details['name'] = event.find('h1').find("a").text
+ print(event_details)
+
+get_upcoming_events('https://china-testing.github.io/')
diff --git a/python-automation-cook/ch3/names.py b/python-automation-cook/ch3/names.py
new file mode 100755
index 0000000..0b6540c
--- /dev/null
+++ b/python-automation-cook/ch3/names.py
@@ -0,0 +1,14 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-17
+
+from urllib.request import urlopen
+from bs4 import BeautifulSoup
+
+html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html')
+bs = BeautifulSoup(html.read(), 'html.parser')
+
+nameList = bs.findAll('span', {'class':'green'})
+for name in nameList:
+ print(name.get_text())
\ No newline at end of file
diff --git a/python-automation-cook/ch3/selenium_demo.py b/python-automation-cook/ch3/selenium_demo.py
new file mode 100755
index 0000000..7141c8c
--- /dev/null
+++ b/python-automation-cook/ch3/selenium_demo.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-16
+
+from selenium import webdriver
+import time
+
+browser = webdriver.Chrome()
+browser.get('https://httpbin.org/forms/post')
+custname = browser.find_element_by_name("custname")
+custname.clear()
+custname.send_keys("python测试开发")
+
+time.sleep(2)
+for size_element in browser.find_elements_by_name("size"):
+ if size_element.get_attribute('value') == 'medium':
+ size_element.click()
+
+time.sleep(2)
+for topping in browser.find_elements_by_name('topping'):
+ if topping.get_attribute('value') in ['bacon', 'cheese']:
+ topping.click()
+
+time.sleep(2)
+browser.find_element_by_tag_name('form').submit()
\ No newline at end of file
diff --git a/python3.7quick/2global.py b/python3.7quick/2global.py
new file mode 100644
index 0000000..2ca061f
--- /dev/null
+++ b/python3.7quick/2global.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-03
+"""
+
+f = 101;
+print(f)
+
+def someFunction():
+ # global f
+ print(f)
+
+
+print(f)
+f = "changing global variable"
+someFunction()
+print(f)
\ No newline at end of file
diff --git a/python3.7quick/2hello.py b/python3.7quick/2hello.py
new file mode 100644
index 0000000..f12e789
--- /dev/null
+++ b/python3.7quick/2hello.py
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-03
+"""
+
+print("Hello, https://china-testing.github.io/")
\ No newline at end of file
diff --git a/python3.7quick/2local.py b/python3.7quick/2local.py
new file mode 100644
index 0000000..e716dc7
--- /dev/null
+++ b/python3.7quick/2local.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-03
+"""
+
+# Declare a variable and initialize it
+f = 101
+print(f)
+# Global vs. local variables in functions
+def someFunction():
+# global f
+ f = 'I am learning Python'
+ print(f)
+someFunction()
+print(f)
\ No newline at end of file
diff --git a/python3.7quick/2main.py b/python3.7quick/2main.py
new file mode 100644
index 0000000..d8a774e
--- /dev/null
+++ b/python3.7quick/2main.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-03
+"""
+
+def hello():
+ print("Hello, https://china-testing.github.io/")
+
+if __name__== "__main__":
+ hello()
\ No newline at end of file
diff --git a/python3.7quick/2var.py b/python3.7quick/2var.py
new file mode 100644
index 0000000..d20b793
--- /dev/null
+++ b/python3.7quick/2var.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-03
+"""
+
+# 定义变量
+a=100
+print(a)
+
+# 复制
+a=1000
+print(a)
+
+# 连接
+v1 = "Hello"
+v2 = "World!"
+print(v1 + ' ' + v2)
+
+# 连接常见错误
+url = 'https://china-testing.github.io/'
+print(url + 9)
\ No newline at end of file
diff --git a/python3.7quick/3square.py b/python3.7quick/3square.py
new file mode 100755
index 0000000..de00d64
--- /dev/null
+++ b/python3.7quick/3square.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-06-07
+# square.py
+# Draw a square
+
+from turtle import *
+
+forward(100)
+left(90)
+forward(100)
+left(90)
+forward(100)
+left(90)
+forward(100)
+left(90)
+
+exitonclick()
diff --git a/python3.7quick/4bowtie.py b/python3.7quick/4bowtie.py
new file mode 100755
index 0000000..24ec170
--- /dev/null
+++ b/python3.7quick/4bowtie.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-12
+# bowtie.py
+# Draw a bowtie
+
+from turtle import *
+
+pensize(7)
+penup()
+goto(-200, -100)
+pendown()
+fillcolor("red")
+begin_fill()
+goto(-200, 100)
+goto(200, -100)
+goto(200, 100)
+goto(-200, -100)
+end_fill()
+
+exitonclick()
diff --git a/python3.7quick/4circle_at.py b/python3.7quick/4circle_at.py
new file mode 100755
index 0000000..c9523e2
--- /dev/null
+++ b/python3.7quick/4circle_at.py
@@ -0,0 +1,20 @@
+# circle_at.py
+# Use a function to draw circles
+
+from turtle import *
+
+def circle_at(x, y, r):
+ """Draw circle with center (x, y) radius r."""
+ penup()
+ goto(x, y - r)
+ pendown()
+ setheading(0)
+ circle(r)
+
+circle_at(-200, 0, 20)
+begin_fill()
+circle_at(0, 0, 100)
+end_fill()
+circle_at(200, 0, 20)
+hideturtle()
+exitonclick()
diff --git a/python3.7quick/4face.py b/python3.7quick/4face.py
new file mode 100755
index 0000000..76838a9
--- /dev/null
+++ b/python3.7quick/4face.py
@@ -0,0 +1,29 @@
+# face.py
+# Draw a face using functions.
+
+from turtle import *
+
+def circle_at(x, y, r):
+ """Draw circle with center (x, y) radius r."""
+ penup()
+ goto(x, y - r)
+ pendown()
+ setheading(0)
+ circle(r)
+
+def eye(x, y, radius):
+ """Draw an eye centered at (x, y) of given radius."""
+ circle_at(x, y, radius)
+
+def face(x, y, width):
+ """Draw face centered at (x, y) of given width."""
+ circle_at(x, y, width/2)
+ eye(x - width/6, y + width/5, width/12)
+ eye(x + width/6, y + width/5, width/12)
+
+def main():
+ face(0, 0, 100)
+ face(-140, 160, 200)
+ exitonclick()
+
+main()
diff --git a/python3.7quick/4factorial.py b/python3.7quick/4factorial.py
new file mode 100755
index 0000000..d08af0b
--- /dev/null
+++ b/python3.7quick/4factorial.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-25
+# factorial.py
+
+def factorial(n):
+ """Return n! = 1*2*3*...*n."""
+ if n <= 1:
+ return 1
+ return n * factorial(n - 1)
+
+def main():
+ for n in range(20):
+ print(n, factorial(n))
+ print(factorial(2000))
+
+main()
diff --git a/python3.7quick/5polygon.py b/python3.7quick/5polygon.py
new file mode 100755
index 0000000..a66ac34
--- /dev/null
+++ b/python3.7quick/5polygon.py
@@ -0,0 +1,18 @@
+# polygon.py
+# Draw regular polygons
+
+from turtle import *
+
+def polygon(n, length):
+ """Draw n-sided polygon with given side length."""
+ for _ in range(n):
+ forward(length)
+ left(360/n)
+
+def main():
+ """Draw polygons with 3-9 sides."""
+ for n in range(3, 10):
+ polygon(n, 80)
+ exitonclick()
+
+main()
diff --git a/python3.7quick/5spiral.py b/python3.7quick/5spiral.py
new file mode 100755
index 0000000..21e9953
--- /dev/null
+++ b/python3.7quick/5spiral.py
@@ -0,0 +1,18 @@
+# spiral.py
+# Draw spiral shapes
+
+from turtle import *
+
+def spiral(firststep, angle, gap):
+ """Move turtle on a spiral path."""
+ step = firststep
+ while step > 0:
+ forward(step)
+ left(angle)
+ step -= gap
+
+def main():
+ spiral(100, 71, 2)
+ exitonclick()
+
+main()
diff --git a/python3.7quick/6append_file.py b/python3.7quick/6append_file.py
new file mode 100644
index 0000000..f436015
--- /dev/null
+++ b/python3.7quick/6append_file.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+f = open("china-testing.github.io.txt","a+")
+for i in range(2):
+ f.write("Appended line %d\n" % (i+1))
+f.close()
diff --git a/python3.7quick/6create_file.py b/python3.7quick/6create_file.py
new file mode 100644
index 0000000..eb28903
--- /dev/null
+++ b/python3.7quick/6create_file.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+f = open("china-testing.github.io.txt","w+")
+for i in range(10):
+ f.write("This is line %d\n" % (i+1))
+f.close()
diff --git a/python3.7quick/6os.path.exists.py b/python3.7quick/6os.path.exists.py
new file mode 100644
index 0000000..618241e
--- /dev/null
+++ b/python3.7quick/6os.path.exists.py
@@ -0,0 +1,10 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+import os.path
+
+print ("File exist:"+str(os.path.exists('china-testing.github.io.txt')))
+print ("File exists:" + str(os.path.exists('github.io.txt')))
+print ("Directory exists:" + str(os.path.exists('myDirectory')))
\ No newline at end of file
diff --git a/python3.7quick/6os.path.isdir.py b/python3.7quick/6os.path.isdir.py
new file mode 100644
index 0000000..6797ac3
--- /dev/null
+++ b/python3.7quick/6os.path.isdir.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+import os.path
+
+print ("Is it Directory?" + str(os.path.isdir('china-testing.github.io.txt')))
+print ("Is it Directory?" + str(os.path.isdir('..')))
\ No newline at end of file
diff --git a/python3.7quick/6os.path.isfile.py b/python3.7quick/6os.path.isfile.py
new file mode 100644
index 0000000..ef084cf
--- /dev/null
+++ b/python3.7quick/6os.path.isfile.py
@@ -0,0 +1,9 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+import os.path
+
+print ("Is it File?" + str(os.path.isfile('china-testing.github.io.txt')))
+print ("Is it File?" + str(os.path.isfile('myDirectory')))
\ No newline at end of file
diff --git a/python3.7quick/6pathlib.exists.py b/python3.7quick/6pathlib.exists.py
new file mode 100644
index 0000000..51a7304
--- /dev/null
+++ b/python3.7quick/6pathlib.exists.py
@@ -0,0 +1,12 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+import pathlib
+
+file = pathlib.Path("china-testing.github.io.txt")
+if file.exists ():
+ print ("File exist")
+else:
+ print ("File not exist")
\ No newline at end of file
diff --git a/python3.7quick/6read_file.py b/python3.7quick/6read_file.py
new file mode 100644
index 0000000..716b10c
--- /dev/null
+++ b/python3.7quick/6read_file.py
@@ -0,0 +1,8 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+f = open("china-testing.github.io.txt","r")
+contents =f.read()
+print(contents)
diff --git a/python3.7quick/6read_file_by_line.py b/python3.7quick/6read_file_by_line.py
new file mode 100644
index 0000000..bfdc9d3
--- /dev/null
+++ b/python3.7quick/6read_file_by_line.py
@@ -0,0 +1,7 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+for line in open("china-testing.github.io.txt"):
+ print(line)
diff --git a/python3.7quick/6read_lines.py b/python3.7quick/6read_lines.py
new file mode 100644
index 0000000..ce4da2e
--- /dev/null
+++ b/python3.7quick/6read_lines.py
@@ -0,0 +1,8 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-10
+
+f = open("china-testing.github.io.txt")
+for line in f.readlines():
+ print(line)
\ No newline at end of file
diff --git a/python3.7quick/7urllib.py b/python3.7quick/7urllib.py
new file mode 100644
index 0000000..3da6c8a
--- /dev/null
+++ b/python3.7quick/7urllib.py
@@ -0,0 +1,15 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-12
+
+import urllib.request
+# open a connection to a URL using urllib
+webUrl = urllib.request.urlopen('https://china-testing.github.io/address.html')
+
+#get the result code and print it
+print ("result code: " + str(webUrl.getcode()))
+
+# read the data from the URL and print it
+data = webUrl.read()
+print (data)
\ No newline at end of file
diff --git a/python3.7quick/7xml.py b/python3.7quick/7xml.py
new file mode 100644
index 0000000..71e777e
--- /dev/null
+++ b/python3.7quick/7xml.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-12
+import xml.dom.minidom
+
+doc = xml.dom.minidom.parse("test.xml");
+
+# print out the document node and the name of the first child tag
+print (doc.nodeName)
+print (doc.firstChild.tagName)
+# get a list of XML tags from the document and print each one
+expertise = doc.getElementsByTagName("expertise")
+print ("{} expertise:".format(expertise.length))
+for skill in expertise:
+ print(skill.getAttribute("name"))
+
+# create a new XML tag and add it into the document
+newexpertise = doc.createElement("expertise")
+newexpertise.setAttribute("name", "BigData")
+doc.firstChild.appendChild(newexpertise)
+print (" ")
+
+expertise = doc.getElementsByTagName("expertise")
+print ("{} expertise:".format(expertise.length))
+for skill in expertise:
+ print (skill.getAttribute("name"))
diff --git a/python3.7quick/7xml2.py b/python3.7quick/7xml2.py
new file mode 100644
index 0000000..421ee6a
--- /dev/null
+++ b/python3.7quick/7xml2.py
@@ -0,0 +1,17 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-11-12
+
+import xml.dom.minidom
+import xml.etree.ElementTree as ET
+
+tree = ET.parse('items.xml')
+root = tree.getroot()
+
+# all items data
+print('Expertise Data:')
+
+for elem in root:
+ for subelem in elem:
+ print(subelem.text)
\ No newline at end of file
diff --git a/python3.7quick/china-testing.github.io.txt b/python3.7quick/china-testing.github.io.txt
new file mode 100644
index 0000000..4f9956e
--- /dev/null
+++ b/python3.7quick/china-testing.github.io.txt
@@ -0,0 +1,10 @@
+This is line 1
+This is line 2
+This is line 3
+This is line 4
+This is line 5
+This is line 6
+This is line 7
+This is line 8
+This is line 9
+This is line 10
diff --git a/python3.7quick/items.xml b/python3.7quick/items.xml
new file mode 100644
index 0000000..8ba7952
--- /dev/null
+++ b/python3.7quick/items.xml
@@ -0,0 +1,6 @@
+
+
+ - SQL
+ - Python
+
+
diff --git a/python3.7quick/test.xml b/python3.7quick/test.xml
new file mode 100644
index 0000000..c9fb3de
--- /dev/null
+++ b/python3.7quick/test.xml
@@ -0,0 +1,10 @@
+
+
+ Krishna
+ Rungta
+ London
+
+
+
+
+
diff --git a/python3_libraries/_dubbo/dubbo.py b/python3_libraries/_dubbo/dubbo.py
new file mode 100755
index 0000000..0dd6a3c
--- /dev/null
+++ b/python3_libraries/_dubbo/dubbo.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Author Rongzhong Xu 2016-09-06 wechat: pythontesting
+"""
+Name: dubbo.py
+
+Tesed in python3.5
+"""
+
+import json
+import telnetlib
+import socket
+
+
+class Dubbo(telnetlib.Telnet):
+
+ prompt = 'dubbo>'
+ coding = 'gbk'
+
+ def __init__(self, host=None, port=0,
+ timeout=socket._GLOBAL_DEFAULT_TIMEOUT):
+ super().__init__(host, port)
+ self.write(b'\n')
+
+ def command(self, flag, str_=""):
+ data = self.read_until(flag.encode())
+ self.write(str_.encode() + b"\n")
+ return data
+
+ def invoke(self, service_name, method_name, arg):
+ command_str = "invoke {0}.{1}({2})".format(
+ service_name, method_name, json.dumps(arg))
+ self.command(Dubbo.prompt, command_str)
+ data = self.command(Dubbo.prompt, "")
+ data = json.loads(data.decode(Dubbo.coding,
+ errors='ignore').split('\n')[0].strip())
+ return data
+
+if __name__ == '__main__':
+
+ conn = Dubbo('183.131.22.99', 21881)
+
+ content = {
+ "sign": "FKeKnMEPybHujjBTzz11BrulB5av7pLhJpk=",
+ "partnerOrder": "0511e0d38f334319a96920fa02be02a7",
+ "productDesc": "hello",
+ "paySuccessTime": "2016-08-25 18:33:04",
+ "price": "1",
+ "count": "1",
+ "attach": "from_pay_demo",
+ "date": "20160825",
+ }
+ content_json = json.dumps(content).replace('"', '\\"')
+
+ json_data = {
+ "requestId": "0511e0d38f334319a96920fa02be02a7",
+ "reqUrl": 'http://www.oppo.com',
+ "httpReqType": "POST",
+ "headerMap": None,
+ "reqContent": content_json,
+ "appId": "10001",
+ "productName": "test",
+ "timeStamp": "1472121184957",
+ "partnerId": "2031",
+ "signType": "MD5",
+ "sign": "23B621FBBF887373C65E553C2222258F",
+ "successResult": "OK",
+ }
+
+ result = conn.invoke(
+ "com.oppo.pay.notify.api.facade.NotifyApplyService",
+ "httpNotify",
+ json_data
+ )
+ print(result)
diff --git a/python3_libraries/collections/abc.rst b/python3_libraries/collections/abc.rst
new file mode 100644
index 0000000..31e2135
--- /dev/null
+++ b/python3_libraries/collections/abc.rst
@@ -0,0 +1,98 @@
+==========================================================
+ collections.abc --- Abstract Base Classes for Containers
+==========================================================
+
+.. module:: collections.abc
+ :synopsis: Abstract base classes for container data types.
+
+:Purpose: Abstract base classes for container data types.
+
+The ``collections.abc`` module contains abstract base classes that
+define the APIs for container data structures built into Python and
+provided by the ``collections`` module. Refer to :table:`Abstract Base
+Classes` for a list of the classes and their purposes.
+
+.. list-table:: Abstract Base Classes
+ :header-rows: 1
+ :widths: 20 20 60
+
+ - * Class
+ * Base Class(es)
+ * API Purpose
+ - * Container
+ *
+ * Basic container features, such as the ``in`` operator.
+ - * Hashable
+ *
+ * Adds support for providing a hash value for the container instance.
+ - * Iterable
+ *
+ * Can create an iterator over the container contents.
+ - * Iterator
+ * Iterable
+ * Is an iterator over the container contents.
+ - * Generator
+ * Iterator
+ * Extends iterators with the generator protocol from PEP 342.
+ - * Sized
+ *
+ * Adds methods for containers that know how big they are.
+ - * Callable
+ *
+ * For containers that can be invoked as a function.
+ - * Sequence
+ * Sized, Iterable, Container
+ * Supports retrieving individual items, iterating, and changing
+ the order of items.
+ - * MutableSequence
+ * Sequence
+ * Supports adding and removing items to an instance after it has
+ been created.
+ - * ByteString
+ * Sequence
+ * Combined API of ``bytes`` and ``bytearray``.
+ - * Set
+ * Sized, Iterable, Container
+ * Supports set operations such as intersection and union.
+ - * MutableSet
+ * Set
+ * Adds methods for manipulating the set contents after it is created.
+ - * Mapping
+ * Sized, Iterable, Container
+ * Defines the read-only API used by ``dict``.
+ - * MutableMapping
+ * Mapping
+ * Defines the methods for manipulating the contents of a mapping after it is created.
+ - * MappingView
+ * Sized
+ * Defines the view API for accessing a mapping from an iterator.
+ - * ItemsView
+ * MappingView, Set
+ * Part of the view API.
+ - * KeysView
+ * MappingView, Set
+ * Part of the view API.
+ - * ValuesView
+ * MappingView
+ * Part of the view API.
+ - * Awaitable
+ *
+ * API for objects that can be used in ``await`` expressions, such
+ as coroutines.
+ - * Coroutine
+ * Awaitable
+ * API for classes that implement the coroutine protocol.
+ - * AsyncIterable
+ *
+ * API for iterables compatible with ``async for``, as defined in
+ PEP 492.
+ - * AsyncIterator
+ * AsyncIterable
+ * API for asynchronous iterators.
+
+In addition to clearly defining the APIs for containers with different
+semantics, these abstract base classes can be used to test whether an
+object supports an API before invoking it using
+``isinstance()``. Some of the classes also provide implementations
+of methods, and they can be used as mix-ins to build up custom
+container types without implementing every method from scratch.
diff --git a/python3_libraries/collections/chainmap.rst b/python3_libraries/collections/chainmap.rst
new file mode 100644
index 0000000..3ac1f83
--- /dev/null
+++ b/python3_libraries/collections/chainmap.rst
@@ -0,0 +1,191 @@
+===========================================
+ ChainMap --- Search Multiple Dictionaries
+===========================================
+
+The ``ChainMap`` class manages a sequence of dictionaries, and
+searches through them in the order they are given to find values
+associated with keys. A ``ChainMap`` makes a good "context" container,
+since it can be treated as a stack for which changes happen as the stack
+grows, with these changes being discarded again as the stack shrinks.
+
+Accessing Values
+================
+
+The ``ChainMap`` supports the same API as a regular dictionary
+for accessing existing values.
+
+.. literalinclude:: collections_chainmap_read.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The child mappings are searched in the order they are passed to the
+constructor, so the value reported for the key ``'c'`` comes from the
+``a`` dictionary.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_read.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_read.py
+
+ Individual Values
+ a = A
+ b = B
+ c = C
+
+ Keys = ['c', 'b', 'a']
+ Values = ['C', 'B', 'A']
+
+ Items:
+ c = C
+ b = B
+ a = A
+
+ "d" in m: False
+
+.. {{{end}}}
+
+Reordering
+==========
+
+The ``ChainMap`` stores the list of mappings over which it
+searches in a list in its :attr:`maps` attribute. This list is mutable,
+so it is possible to add new mappings directly or to change the order
+of the elements to control lookup and update behavior.
+
+.. literalinclude:: collections_chainmap_reorder.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+When the list of mappings is reversed, the value associated with
+``'c'`` changes.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_reorder.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_reorder.py
+
+ [{'a': 'A', 'c': 'C'}, {'b': 'B', 'c': 'D'}]
+ c = C
+
+ [{'b': 'B', 'c': 'D'}, {'a': 'A', 'c': 'C'}]
+ c = D
+
+.. {{{end}}}
+
+Updating Values
+===============
+
+A ``ChainMap`` does not cache the values in the child mappings.
+Thus, if their contents are modified, the results are reflected when the
+``ChainMap`` is accessed.
+
+.. literalinclude:: collections_chainmap_update_behind.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Changing the values associated with existing keys and adding new
+elements works the same way.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_update_behind.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_update_behind.py
+
+ Before: C
+ After : E
+
+.. {{{end}}}
+
+It is also possible to set values through the ``ChainMap``
+directly, although only the first mapping in the chain is actually
+modified.
+
+.. literalinclude:: collections_chainmap_update_directly.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+When the new value is stored using ``m``, the ``a`` mapping is
+updated.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_update_directly.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_update_directly.py
+
+ Before: ChainMap({'a': 'A', 'c': 'C'}, {'b': 'B', 'c': 'D'})
+ After : ChainMap({'a': 'A', 'c': 'E'}, {'b': 'B', 'c': 'D'})
+ a: {'a': 'A', 'c': 'E'}
+
+.. {{{end}}}
+
+``ChainMap`` provides a convenience method for creating a new
+instance with one extra mapping at the front of the :attr:`maps` list
+to make it easy to avoid modifying the existing underlying data
+structures.
+
+.. literalinclude:: collections_chainmap_new_child.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This stacking behavior is what makes it convenient to use ``ChainMap``
+instances as template or application contexts. Specifically, it is
+easy to add or update values in one iteration, then discard the
+changes for the next iteration.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_new_child.py', line_break_mode='wrap'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_new_child.py
+
+ m1 before: ChainMap({'a': 'A', 'c': 'C'}, {'b': 'B', 'c': 'D'})
+ m2 before: ChainMap({}, {'a': 'A', 'c': 'C'}, {'b': 'B', 'c':
+ 'D'})
+ m1 after: ChainMap({'a': 'A', 'c': 'C'}, {'b': 'B', 'c': 'D'})
+ m2 after: ChainMap({'c': 'E'}, {'a': 'A', 'c': 'C'}, {'b': 'B',
+ 'c': 'D'})
+
+.. {{{end}}}
+
+For situations where the new context is known or built in advance, it
+is also possible to pass a mapping to ``new_child()``.
+
+.. literalinclude:: collections_chainmap_new_child_explicit.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This is the equivalent of
+
+.. code-block:: none
+
+ m2 = collections.ChainMap(c, *m1.maps)
+
+and produces
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_chainmap_new_child_explicit.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_chainmap_new_child_explicit.py
+
+ m1["c"] = C
+ m2["c"] = E
+
+.. {{{end}}}
+
diff --git a/python3_libraries/collections/collections_chainmap_new_child.py b/python3_libraries/collections/collections_chainmap_new_child.py
new file mode 100644
index 0000000..3bdf207
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_new_child.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""ChainMap as a namespace stack
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+
+m1 = collections.ChainMap(a, b)
+m2 = m1.new_child()
+
+print('m1 before:', m1)
+print('m2 before:', m2)
+
+m2['c'] = 'E'
+
+print('m1 after:', m1)
+print('m2 after:', m2)
diff --git a/python3_libraries/collections/collections_chainmap_new_child_explicit.py b/python3_libraries/collections/collections_chainmap_new_child_explicit.py
new file mode 100644
index 0000000..211eafa
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_new_child_explicit.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""ChainMap as a namespace stack
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+c = {'c': 'E'}
+
+m1 = collections.ChainMap(a, b)
+m2 = m1.new_child(c)
+
+print('m1["c"] = {}'.format(m1['c']))
+print('m2["c"] = {}'.format(m2['c']))
diff --git a/python3_libraries/collections/collections_chainmap_read.py b/python3_libraries/collections/collections_chainmap_read.py
new file mode 100644
index 0000000..18e57af
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_read.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""Reading values from a ChainMap
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+
+m = collections.ChainMap(a, b)
+
+print('Individual Values')
+print('a = {}'.format(m['a']))
+print('b = {}'.format(m['b']))
+print('c = {}'.format(m['c']))
+print()
+
+print('Keys = {}'.format(list(m.keys())))
+print('Values = {}'.format(list(m.values())))
+print()
+
+print('Items:')
+for k, v in m.items():
+ print('{} = {}'.format(k, v))
+print()
+
+print('"d" in m: {}'.format(('d' in m)))
diff --git a/python3_libraries/collections/collections_chainmap_reorder.py b/python3_libraries/collections/collections_chainmap_reorder.py
new file mode 100644
index 0000000..0da16d9
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_reorder.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""Reading values from a ChainMap after reordering it
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+
+m = collections.ChainMap(a, b)
+
+print(m.maps)
+print('c = {}\n'.format(m['c']))
+
+# reverse the list
+m.maps = list(reversed(m.maps))
+
+print(m.maps)
+print('c = {}'.format(m['c']))
diff --git a/python3_libraries/collections/collections_chainmap_update_behind.py b/python3_libraries/collections/collections_chainmap_update_behind.py
new file mode 100644
index 0000000..d8821c9
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_update_behind.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""Updating values underneath a ChainMap
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+
+m = collections.ChainMap(a, b)
+print('Before: {}'.format(m['c']))
+a['c'] = 'E'
+print('After : {}'.format(m['c']))
diff --git a/python3_libraries/collections/collections_chainmap_update_directly.py b/python3_libraries/collections/collections_chainmap_update_directly.py
new file mode 100644
index 0000000..cc2edad
--- /dev/null
+++ b/python3_libraries/collections/collections_chainmap_update_directly.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2015 Doug Hellmann. All rights reserved.
+#
+"""Updating values through a ChainMap
+"""
+
+#end_pymotw_header
+import collections
+
+a = {'a': 'A', 'c': 'C'}
+b = {'b': 'B', 'c': 'D'}
+
+m = collections.ChainMap(a, b)
+print('Before:', m)
+m['c'] = 'E'
+print('After :', m)
+print('a:', a)
diff --git a/python3_libraries/collections/collections_counter_arithmetic.py b/python3_libraries/collections/collections_counter_arithmetic.py
new file mode 100644
index 0000000..9c7b4af
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_arithmetic.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Arithmetic operations with Counters
+"""
+
+#end_pymotw_header
+import collections
+
+c1 = collections.Counter(['a', 'b', 'c', 'a', 'b', 'b'])
+c2 = collections.Counter('alphabet')
+
+print('C1:', c1)
+print('C2:', c2)
+
+print('\nCombined counts:')
+print(c1 + c2)
+
+print('\nSubtraction:')
+print(c1 - c2)
+
+print('\nIntersection (taking positive minimums):')
+print(c1 & c2)
+
+print('\nUnion (taking maximums):')
+print(c1 | c2)
diff --git a/python3_libraries/collections/collections_counter_elements.py b/python3_libraries/collections/collections_counter_elements.py
new file mode 100644
index 0000000..a8b573a
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_elements.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Produce the elements of the counter.
+"""
+
+#end_pymotw_header
+import collections
+
+c = collections.Counter('extremely')
+c['z'] = 0
+print(c)
+print(list(c.elements()))
diff --git a/python3_libraries/collections/collections_counter_get_values.py b/python3_libraries/collections/collections_counter_get_values.py
new file mode 100644
index 0000000..afa385a
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_get_values.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Updating counts.
+"""
+
+#end_pymotw_header
+import collections
+
+c = collections.Counter('abcdaab')
+
+for letter in 'abcde':
+ print('{} : {}'.format(letter, c[letter]))
diff --git a/python3_libraries/collections/collections_counter_init.py b/python3_libraries/collections/collections_counter_init.py
new file mode 100644
index 0000000..f1ab2fe
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_init.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Initializing a Counter
+"""
+
+#end_pymotw_header
+import collections
+
+print(collections.Counter(['a', 'b', 'c', 'a', 'b', 'b']))
+print(collections.Counter({'a': 2, 'b': 3, 'c': 1}))
+print(collections.Counter(a=2, b=3, c=1))
diff --git a/python3_libraries/collections/collections_counter_most_common.py b/python3_libraries/collections/collections_counter_most_common.py
new file mode 100644
index 0000000..c08cef4
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_most_common.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Count the most common letters in words.
+"""
+
+#end_pymotw_header
+import collections
+
+c = collections.Counter()
+with open('/usr/share/dict/words', 'rt') as f:
+ for line in f:
+ c.update(line.rstrip().lower())
+
+print('Most common:')
+for letter, count in c.most_common(3):
+ print('{}: {:>7}'.format(letter, count))
diff --git a/python3_libraries/collections/collections_counter_update.py b/python3_libraries/collections/collections_counter_update.py
new file mode 100644
index 0000000..8c39ddc
--- /dev/null
+++ b/python3_libraries/collections/collections_counter_update.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Updating counts.
+"""
+
+#end_pymotw_header
+import collections
+
+c = collections.Counter()
+print('Initial :', c)
+
+c.update('abcdaab')
+print('Sequence:', c)
+
+c.update({'a': 1, 'd': 5})
+print('Dict :', c)
diff --git a/python3_libraries/collections/collections_defaultdict.py b/python3_libraries/collections/collections_defaultdict.py
new file mode 100644
index 0000000..52a3bbb
--- /dev/null
+++ b/python3_libraries/collections/collections_defaultdict.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Initializing a defaultdict.
+"""
+
+#end_pymotw_header
+import collections
+
+
+def default_factory():
+ return 'default value'
+
+
+d = collections.defaultdict(default_factory, foo='bar')
+print('d:', d)
+print('foo =>', d['foo'])
+print('bar =>', d['bar'])
diff --git a/python3_libraries/collections/collections_deque.py b/python3_libraries/collections/collections_deque.py
new file mode 100644
index 0000000..3d01809
--- /dev/null
+++ b/python3_libraries/collections/collections_deque.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Double-ended queue.
+"""
+
+#end_pymotw_header
+import collections
+
+d = collections.deque('abcdefg')
+print('Deque:', d)
+print('Length:', len(d))
+print('Left end:', d[0])
+print('Right end:', d[-1])
+
+d.remove('c')
+print('remove(c):', d)
diff --git a/python3_libraries/collections/collections_deque_both_ends.py b/python3_libraries/collections/collections_deque_both_ends.py
new file mode 100644
index 0000000..6aa5d6f
--- /dev/null
+++ b/python3_libraries/collections/collections_deque_both_ends.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Burning a candle at both ends.
+"""
+
+#end_pymotw_header
+import collections
+import threading
+import time
+
+candle = collections.deque(range(5))
+
+
+def burn(direction, nextSource):
+ while True:
+ try:
+ next = nextSource()
+ except IndexError:
+ break
+ else:
+ print('{:>8}: {}'.format(direction, next))
+ time.sleep(0.1)
+ print('{:>8} done'.format(direction))
+ return
+
+
+left = threading.Thread(target=burn,
+ args=('Left', candle.popleft))
+right = threading.Thread(target=burn,
+ args=('Right', candle.pop))
+
+left.start()
+right.start()
+
+left.join()
+right.join()
diff --git a/python3_libraries/collections/collections_deque_consuming.py b/python3_libraries/collections/collections_deque_consuming.py
new file mode 100644
index 0000000..2abe6b6
--- /dev/null
+++ b/python3_libraries/collections/collections_deque_consuming.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Removing items from a deque.
+"""
+
+#end_pymotw_header
+import collections
+
+print('From the right:')
+d = collections.deque('abcdefg')
+while True:
+ try:
+ print(d.pop(), end='')
+ except IndexError:
+ break
+print()
+
+print('\nFrom the left:')
+d = collections.deque(range(6))
+while True:
+ try:
+ print(d.popleft(), end='')
+ except IndexError:
+ break
+print()
diff --git a/python3_libraries/collections/collections_deque_maxlen.py b/python3_libraries/collections/collections_deque_maxlen.py
new file mode 100644
index 0000000..c4cc4a7
--- /dev/null
+++ b/python3_libraries/collections/collections_deque_maxlen.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Double-ended queue with a maximum length.
+"""
+
+#end_pymotw_header
+import collections
+import random
+
+# Set the random seed so we see the same output each time
+# the script is run.
+random.seed(1)
+
+d1 = collections.deque(maxlen=3)
+d2 = collections.deque(maxlen=3)
+
+for i in range(5):
+ n = random.randint(0, 100)
+ print('n =', n)
+ d1.append(n)
+ d2.appendleft(n)
+ print('D1:', d1)
+ print('D2:', d2)
diff --git a/python3_libraries/collections/collections_deque_populating.py b/python3_libraries/collections/collections_deque_populating.py
new file mode 100644
index 0000000..308644c
--- /dev/null
+++ b/python3_libraries/collections/collections_deque_populating.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Adding items to a deque.
+"""
+
+#end_pymotw_header
+import collections
+
+# Add to the right
+d1 = collections.deque()
+d1.extend('abcdefg')
+print('extend :', d1)
+d1.append('h')
+print('append :', d1)
+
+# Add to the left
+d2 = collections.deque()
+d2.extendleft(range(6))
+print('extendleft:', d2)
+d2.appendleft(6)
+print('appendleft:', d2)
diff --git a/python3_libraries/collections/collections_deque_rotate.py b/python3_libraries/collections/collections_deque_rotate.py
new file mode 100644
index 0000000..9ed73e4
--- /dev/null
+++ b/python3_libraries/collections/collections_deque_rotate.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Manipulating the order of items in a deque.
+"""
+
+#end_pymotw_header
+import collections
+
+d = collections.deque(range(10))
+print('Normal :', d)
+
+d = collections.deque(range(10))
+d.rotate(2)
+print('Right rotation:', d)
+
+d = collections.deque(range(10))
+d.rotate(-2)
+print('Left rotation :', d)
diff --git a/python3_libraries/collections/collections_namedtuple_asdict.py b/python3_libraries/collections/collections_namedtuple_asdict.py
new file mode 100644
index 0000000..986bf06
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_asdict.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+Person = collections.namedtuple('Person', 'name age')
+
+bob = Person(name='Bob', age=30)
+print('Representation:', bob)
+print('As Dictionary:', bob._asdict())
diff --git a/python3_libraries/collections/collections_namedtuple_bad_fields.py b/python3_libraries/collections/collections_namedtuple_bad_fields.py
new file mode 100644
index 0000000..74ae8bb
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_bad_fields.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+try:
+ collections.namedtuple('Person', 'name class age')
+except ValueError as err:
+ print(err)
+
+try:
+ collections.namedtuple('Person', 'name age age')
+except ValueError as err:
+ print(err)
diff --git a/python3_libraries/collections/collections_namedtuple_fields.py b/python3_libraries/collections/collections_namedtuple_fields.py
new file mode 100644
index 0000000..9a052a0
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_fields.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+Person = collections.namedtuple('Person', 'name age')
+
+bob = Person(name='Bob', age=30)
+print('Representation:', bob)
+print('Fields:', bob._fields)
diff --git a/python3_libraries/collections/collections_namedtuple_immutable.py b/python3_libraries/collections/collections_namedtuple_immutable.py
new file mode 100644
index 0000000..5e1313f
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_immutable.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+Person = collections.namedtuple('Person', 'name age')
+
+pat = Person(name='Pat', age=12)
+print('\nRepresentation:', pat)
+
+pat.age = 21
diff --git a/python3_libraries/collections/collections_namedtuple_person.py b/python3_libraries/collections/collections_namedtuple_person.py
new file mode 100644
index 0000000..3b6730e
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_person.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+Person = collections.namedtuple('Person', 'name age')
+
+bob = Person(name='Bob', age=30)
+print('\nRepresentation:', bob)
+
+jane = Person(name='Jane', age=29)
+print('\nField by name:', jane.name)
+
+print('\nFields by index:')
+for p in [bob, jane]:
+ print('{} is {} years old'.format(*p))
diff --git a/python3_libraries/collections/collections_namedtuple_rename.py b/python3_libraries/collections/collections_namedtuple_rename.py
new file mode 100644
index 0000000..cc2bc4e
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_rename.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+with_class = collections.namedtuple(
+ 'Person', 'name class age',
+ rename=True)
+print(with_class._fields)
+
+two_ages = collections.namedtuple(
+ 'Person', 'name age age',
+ rename=True)
+print(two_ages._fields)
diff --git a/python3_libraries/collections/collections_namedtuple_replace.py b/python3_libraries/collections/collections_namedtuple_replace.py
new file mode 100644
index 0000000..1b2a9bf
--- /dev/null
+++ b/python3_libraries/collections/collections_namedtuple_replace.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2009 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import collections
+
+Person = collections.namedtuple('Person', 'name age')
+
+bob = Person(name='Bob', age=30)
+print('\nBefore:', bob)
+bob2 = bob._replace(name='Robert')
+print('After:', bob2)
+print('Same?:', bob is bob2)
diff --git a/python3_libraries/collections/collections_ordereddict_equality.py b/python3_libraries/collections/collections_ordereddict_equality.py
new file mode 100644
index 0000000..6208a0d
--- /dev/null
+++ b/python3_libraries/collections/collections_ordereddict_equality.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Iterating over an OrderedDict
+"""
+
+#end_pymotw_header
+import collections
+
+print('dict :', end=' ')
+d1 = {}
+d1['a'] = 'A'
+d1['b'] = 'B'
+d1['c'] = 'C'
+
+d2 = {}
+d2['c'] = 'C'
+d2['b'] = 'B'
+d2['a'] = 'A'
+
+print(d1 == d2)
+
+print('OrderedDict:', end=' ')
+
+d1 = collections.OrderedDict()
+d1['a'] = 'A'
+d1['b'] = 'B'
+d1['c'] = 'C'
+
+d2 = collections.OrderedDict()
+d2['c'] = 'C'
+d2['b'] = 'B'
+d2['a'] = 'A'
+
+print(d1 == d2)
diff --git a/python3_libraries/collections/collections_ordereddict_iter.py b/python3_libraries/collections/collections_ordereddict_iter.py
new file mode 100644
index 0000000..b32f492
--- /dev/null
+++ b/python3_libraries/collections/collections_ordereddict_iter.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Iterating over an OrderedDict
+"""
+
+#end_pymotw_header
+import collections
+
+print('Regular dictionary:')
+d = {}
+d['a'] = 'A'
+d['b'] = 'B'
+d['c'] = 'C'
+
+for k, v in d.items():
+ print(k, v)
+
+print('\nOrderedDict:')
+d = collections.OrderedDict()
+d['a'] = 'A'
+d['b'] = 'B'
+d['c'] = 'C'
+
+for k, v in d.items():
+ print(k, v)
diff --git a/python3_libraries/collections/collections_ordereddict_move_to_end.py b/python3_libraries/collections/collections_ordereddict_move_to_end.py
new file mode 100644
index 0000000..84b343c
--- /dev/null
+++ b/python3_libraries/collections/collections_ordereddict_move_to_end.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Re-ordering an OrderedDict
+"""
+
+#end_pymotw_header
+import collections
+
+d = collections.OrderedDict(
+ [('a', 'A'), ('b', 'B'), ('c', 'C')]
+)
+
+print('Before:')
+for k, v in d.items():
+ print(k, v)
+
+d.move_to_end('b')
+
+print('\nmove_to_end():')
+for k, v in d.items():
+ print(k, v)
+
+d.move_to_end('b', last=False)
+
+print('\nmove_to_end(last=False):')
+for k, v in d.items():
+ print(k, v)
diff --git a/python3_libraries/collections/collections_tuple.py b/python3_libraries/collections/collections_tuple.py
new file mode 100644
index 0000000..6cd80cb
--- /dev/null
+++ b/python3_libraries/collections/collections_tuple.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2010 Doug Hellmann. All rights reserved.
+#
+"""Using a regular tuple
+"""
+
+#end_pymotw_header
+bob = ('Bob', 30, 'male')
+print('Representation:', bob)
+
+jane = ('Jane', 29, 'female')
+print('\nField by index:', jane[0])
+
+print('\nFields by index:')
+for p in [bob, jane]:
+ print('{} is a {} year old {}'.format(*p))
diff --git a/python3_libraries/collections/counter.rst b/python3_libraries/collections/counter.rst
new file mode 100644
index 0000000..e61393f
--- /dev/null
+++ b/python3_libraries/collections/counter.rst
@@ -0,0 +1,186 @@
+====================================
+ Counter --- Count Hashable Objects
+====================================
+
+A ``Counter`` is a container that keeps track of how many times
+equivalent values are added. It can be used to implement the same
+algorithms for which other languages commonly use bag or multiset data
+structures.
+
+Initializing
+============
+
+``Counter`` supports three forms of initialization. Its
+constructor can be called with a sequence of items, a dictionary
+containing keys and counts, or using keyword arguments that map string
+names to counts.
+
+.. literalinclude:: collections_counter_init.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The results of all three forms of initialization are the same.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_init.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_init.py
+
+ Counter({'b': 3, 'a': 2, 'c': 1})
+ Counter({'b': 3, 'a': 2, 'c': 1})
+ Counter({'b': 3, 'a': 2, 'c': 1})
+
+.. {{{end}}}
+
+An empty ``Counter`` can be constructed with no arguments and
+populated via the ``update()`` method.
+
+.. literalinclude:: collections_counter_update.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The count values are increased based on the new data, rather than
+replaced. In the preceding example, the count for ``a`` goes from ``3`` to
+``4``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_update.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_update.py
+
+ Initial : Counter()
+ Sequence: Counter({'a': 3, 'b': 2, 'c': 1, 'd': 1})
+ Dict : Counter({'d': 6, 'a': 4, 'b': 2, 'c': 1})
+
+.. {{{end}}}
+
+Accessing Counts
+================
+
+Once a ``Counter`` is populated, its values can be retrieved
+using the dictionary API.
+
+.. literalinclude:: collections_counter_get_values.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+``Counter`` does not raise ``KeyError`` for unknown items.
+If a value has not been seen in the input (as with ``e`` in this
+example), its count is ``0``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_get_values.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_get_values.py
+
+ a : 3
+ b : 2
+ c : 1
+ d : 1
+ e : 0
+
+.. {{{end}}}
+
+The ``elements()`` method returns an iterator that produces all of
+the items known to the ``Counter``.
+
+.. literalinclude:: collections_counter_elements.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The order of elements is not guaranteed, and items with counts less
+than or equal to zero are not included.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_elements.py', break_lines_at=65))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_elements.py
+
+ Counter({'e': 3, 'x': 1, 't': 1, 'r': 1, 'm': 1, 'l': 1, 'y': 1,
+ 'z': 0})
+ ['e', 'e', 'e', 'x', 't', 'r', 'm', 'l', 'y']
+
+.. {{{end}}}
+
+Use ``most_common()`` to produce a sequence of the *n* most
+frequently encountered input values and their respective counts.
+
+.. literalinclude:: collections_counter_most_common.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This example counts the letters appearing in all of the words in the
+system dictionary to produce a frequency distribution, then prints the
+three most common letters. Leaving out the argument to
+``most_common()`` produces a list of all the items, in order of
+frequency.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_most_common.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_most_common.py
+
+ Most common:
+ e: 235331
+ i: 201032
+ a: 199554
+
+.. {{{end}}}
+
+Arithmetic
+==========
+
+``Counter`` instances support arithmetic and set operations for
+aggregating results. This example shows the standard operators for
+creating new ``Counter`` instances, but the in-place operators
+``+=``, ``-=``, ``&=``, and ``|=`` are also supported.
+
+.. literalinclude:: collections_counter_arithmetic.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Each time a new ``Counter`` is produced through an operation, any
+items with zero or negative counts are discarded. The count for ``a``
+is the same in ``c1`` and ``c2``, so subtraction leaves it at
+zero.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_counter_arithmetic.py',
+.. break_lines_at=74, line_break_mode='wrap'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_counter_arithmetic.py
+
+ C1: Counter({'b': 3, 'a': 2, 'c': 1})
+ C2: Counter({'a': 2, 'l': 1, 'p': 1, 'h': 1, 'b': 1, 'e': 1, 't': 1})
+
+ Combined counts:
+ Counter({'a': 4, 'b': 4, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
+
+ Subtraction:
+ Counter({'b': 2, 'c': 1})
+
+ Intersection (taking positive minimums):
+ Counter({'a': 2, 'b': 1})
+
+ Union (taking maximums):
+ Counter({'b': 3, 'a': 2, 'c': 1, 'l': 1, 'p': 1, 'h': 1, 'e': 1, 't': 1})
+
+.. {{{end}}}
diff --git a/python3_libraries/collections/defaultdict.rst b/python3_libraries/collections/defaultdict.rst
new file mode 100644
index 0000000..12c2fe7
--- /dev/null
+++ b/python3_libraries/collections/defaultdict.rst
@@ -0,0 +1,46 @@
+=====================================================
+ defaultdict --- Missing Keys Return a Default Value
+=====================================================
+
+The standard dictionary includes the method ``setdefault()`` for
+retrieving a value and establishing a default if the value does not
+exist. By contrast, ``defaultdict`` lets the caller specify the
+default up front when the container is initialized.
+
+.. literalinclude:: collections_defaultdict.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This method works well as long as it is appropriate for all keys to
+have the same default. It can be especially useful if the default is a
+type used for aggregating or accumulating values, such as a
+``list``, ``set``, or even ``int``. The standard
+library documentation includes several examples in which
+``defaultdict`` is used in this way.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_defaultdict.py', line_break_mode='wrap'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_defaultdict.py
+
+ d: defaultdict(,
+ {'foo': 'bar'})
+ foo => bar
+ bar => default value
+
+.. {{{end}}}
+
+.. seealso::
+
+ * `defaultdict examples
+ `__
+ -- Examples of using ``defaultdict`` from the standard library
+ documentation.
+
+ * `Evolution of Default Dictionaries in Python
+ `_
+ -- James Tauber's discussion of how ``defaultdict``
+ relates to other means of initializing dictionaries.
diff --git a/python3_libraries/collections/deque.rst b/python3_libraries/collections/deque.rst
new file mode 100644
index 0000000..ed7dc57
--- /dev/null
+++ b/python3_libraries/collections/deque.rst
@@ -0,0 +1,202 @@
+.. _deque:
+
+==============================
+ deque --- Double-Ended Queue
+==============================
+
+A double-ended queue, or ``deque``, supports adding and removing
+elements from either end of the queue. The more commonly used stacks and queues are
+degenerate forms of deques, where the inputs and outputs are
+restricted to a single end.
+
+.. literalinclude:: collections_deque.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Since deques are a type of sequence container, they support some of
+the same operations as ``list``, such as examining the contents
+with ``__getitem__()``, determining length, and removing elements
+from the middle of the queue by matching identity.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_deque.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_deque.py
+
+ Deque: deque(['a', 'b', 'c', 'd', 'e', 'f', 'g'])
+ Length: 7
+ Left end: a
+ Right end: g
+ remove(c): deque(['a', 'b', 'd', 'e', 'f', 'g'])
+
+.. {{{end}}}
+
+Populating
+==========
+
+A deque can be populated from either end, termed "left" and "right" in the
+Python implementation.
+
+.. literalinclude:: collections_deque_populating.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The ``extendleft()`` function iterates over its input and performs
+the equivalent of an ``appendleft()`` for each item. The end result
+is that the ``deque`` contains the input sequence in reverse order.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_deque_populating.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_deque_populating.py
+
+ extend : deque(['a', 'b', 'c', 'd', 'e', 'f', 'g'])
+ append : deque(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
+ extendleft: deque([5, 4, 3, 2, 1, 0])
+ appendleft: deque([6, 5, 4, 3, 2, 1, 0])
+
+.. {{{end}}}
+
+Consuming
+=========
+
+Similarly, the elements of the ``deque`` can be consumed from
+both ends or either end, depending on the algorithm being applied.
+
+.. literalinclude:: collections_deque_consuming.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Use ``pop()`` to remove an item from the "right" end of the
+``deque`` and ``popleft()`` to take an item from the "left" end.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_deque_consuming.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_deque_consuming.py
+
+ From the right:
+ gfedcba
+
+ From the left:
+ 012345
+
+.. {{{end}}}
+
+
+Since deques are thread-safe, the contents can even be consumed from
+both ends at the same time from separate threads.
+
+.. literalinclude:: collections_deque_both_ends.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The threads in this example alternate between each end, removing items
+until the ``deque`` is empty.
+
+.. NOT RUNNING
+.. cog.out(run_script(cog.inFile, 'collections_deque_both_ends.py'))
+
+.. code-block:: none
+
+ $ python3 collections_deque_both_ends.py
+
+ Left: 0
+ Right: 4
+ Right: 3
+ Left: 1
+ Right: 2
+ Left done
+ Right done
+
+Rotating
+========
+
+Another useful aspect of the ``deque`` is the ability to rotate it in
+either direction, so as to skip over some items.
+
+.. literalinclude:: collections_deque_rotate.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Rotating the ``deque`` to the right (using a positive rotation)
+takes items from the right end and moves them to the left
+end. Rotating to the left (with a negative value) takes items from the
+left end and moves them to the right end. It may help to visualize
+the items in the deque as being engraved along the edge of a dial.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_deque_rotate.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_deque_rotate.py
+
+ Normal : deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
+ Right rotation: deque([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
+ Left rotation : deque([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])
+
+.. {{{end}}}
+
+Constraining the Queue Size
+===========================
+
+A ``deque`` instance can be configured with a maximum length so
+that it never grows beyond that size. When the queue reaches the
+specified length, existing items are discarded as new items are
+added. This behavior is useful for finding the last *n* items in a
+stream of undetermined length.
+
+.. literalinclude:: collections_deque_maxlen.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The deque length is maintained regardless of which end the items are
+added to.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_deque_maxlen.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_deque_maxlen.py
+
+ n = 17
+ D1: deque([17], maxlen=3)
+ D2: deque([17], maxlen=3)
+ n = 72
+ D1: deque([17, 72], maxlen=3)
+ D2: deque([72, 17], maxlen=3)
+ n = 97
+ D1: deque([17, 72, 97], maxlen=3)
+ D2: deque([97, 72, 17], maxlen=3)
+ n = 8
+ D1: deque([72, 97, 8], maxlen=3)
+ D2: deque([8, 97, 72], maxlen=3)
+ n = 32
+ D1: deque([97, 8, 32], maxlen=3)
+ D2: deque([32, 8, 97], maxlen=3)
+
+.. {{{end}}}
+
+
+
+.. seealso::
+
+ * `Wikipedia: Deque `_ -- A
+ discussion of the deque data structure.
+
+ * `Deque Recipes `_
+ -- Examples of using deques in algorithms from the standard
+ library documentation.
diff --git a/python3_libraries/collections/index.rst b/python3_libraries/collections/index.rst
new file mode 100644
index 0000000..d0cd1da
--- /dev/null
+++ b/python3_libraries/collections/index.rst
@@ -0,0 +1,32 @@
+======================================
+ collections --- Container Data Types
+======================================
+
+.. module:: collections
+ :synopsis: Container data types.
+
+:Purpose: Container data types.
+
+The ``collections`` module includes container data types beyond the
+built-in types ``list``, ``dict``, and ``tuple``.
+
+.. toctree::
+ :maxdepth: 1
+
+ chainmap
+ counter
+ defaultdict
+ deque
+ namedtuple
+ ordereddict
+ abc
+
+.. seealso::
+
+ * :pydoc:`collections`
+
+ * :ref:`Python 2 to 3 porting notes for collections `
+
+ * :pep:`342` -- Coroutines via Enhanced Generators
+
+ * :pep:`492` -- Coroutines with async and await syntax
diff --git a/python3_libraries/collections/namedtuple.rst b/python3_libraries/collections/namedtuple.rst
new file mode 100644
index 0000000..e8cb39d
--- /dev/null
+++ b/python3_libraries/collections/namedtuple.rst
@@ -0,0 +1,241 @@
+.. _collections-namedtuple:
+
+=================================================
+ namedtuple --- Tuple Subclass with Named Fields
+=================================================
+
+The standard ``tuple`` uses numerical indexes to access its
+members.
+
+.. literalinclude:: collections_tuple.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This makes ``tuples`` convenient containers for simple uses.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_tuple.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_tuple.py
+
+ Representation: ('Bob', 30, 'male')
+
+ Field by index: Jane
+
+ Fields by index:
+ Bob is a 30 year old male
+ Jane is a 29 year old female
+
+.. {{{end}}}
+
+In contrast, remembering which index should be used for each
+value can lead to errors, especially if the ``tuple`` has a lot
+of fields and is constructed far from where it is used. A
+``namedtuple`` assigns names, as well as the numerical index, to
+each member.
+
+Defining
+========
+
+``namedtuple`` instances are just as memory efficient as regular
+tuples because they do not have per-instance dictionaries. Each kind
+of ``namedtuple`` is represented by its own class, which is created by
+using the ``namedtuple()`` factory function. The arguments are the
+name of the new class and a string containing the names of the
+elements.
+
+.. literalinclude:: collections_namedtuple_person.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+As the example illustrates, it is possible to access the fields of the
+``namedtuple`` by name using dotted notation (``obj.attr``) as
+well as by using the positional indexes of standard tuples.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_person.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_person.py
+
+
+ Representation: Person(name='Bob', age=30)
+
+ Field by name: Jane
+
+ Fields by index:
+ Bob is 30 years old
+ Jane is 29 years old
+
+.. {{{end}}}
+
+Just like a regular ``tuple``, a ``namedtuple`` is
+immutable. This restriction allows ``tuple`` instances to have a
+consistent hash value, which makes it possible to use them as keys in
+dictionaries and to be included in sets.
+
+.. literalinclude:: collections_namedtuple_immutable.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Trying to change a value through its named attribute results in an
+``AttributeError``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_immutable.py', ignore_error=True, line_break_mode='wrap'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_immutable.py
+
+
+ Representation: Person(name='Pat', age=12)
+ Traceback (most recent call last):
+ File "collections_namedtuple_immutable.py", line 17, in
+
+ pat.age = 21
+ AttributeError: can't set attribute
+
+.. {{{end}}}
+
+Invalid Field Names
+===================
+
+Field names are invalid if they are repeated or conflict with Python
+keywords.
+
+.. literalinclude:: collections_namedtuple_bad_fields.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+As the field names are parsed, invalid values cause
+``ValueError`` exceptions.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_bad_fields.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_bad_fields.py
+
+ Type names and field names cannot be a keyword: 'class'
+ Encountered duplicate field name: 'age'
+
+.. {{{end}}}
+
+In situations where a ``namedtuple`` is created based on values
+outside the control of the program (such as to represent the rows
+returned by a database query, where the schema is not known in
+advance), the ``rename`` option should be set to ``True`` so the
+invalid fields are renamed.
+
+.. literalinclude:: collections_namedtuple_rename.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The new names for renamed fields depend on their index in the tuple,
+so the field with name ``class`` becomes ``_1`` and the duplicate
+``age`` field is changed to ``_2``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_rename.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_rename.py
+
+ ('name', '_1', 'age')
+ ('name', 'age', '_2')
+
+.. {{{end}}}
+
+Special Attributes
+==================
+
+``namedtuple`` provides several useful attributes and methods for
+working with subclasses and instances. All of these built-in
+properties have names prefixed with an underscore (``_``), which by
+convention in most Python programs indicates a private attribute. For
+``namedtuple``, however, the prefix is intended to protect the name
+from collision with user-provided attribute names.
+
+The names of the fields passed to ``namedtuple`` to define the
+new class are saved in the :attr:`_fields` attribute.
+
+.. literalinclude:: collections_namedtuple_fields.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Although the argument is a single space-separated string, the stored
+value is the sequence of individual names.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_fields.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_fields.py
+
+ Representation: Person(name='Bob', age=30)
+ Fields: ('name', 'age')
+
+.. {{{end}}}
+
+``namedtuple`` instances can be converted to ``OrderedDict``
+instances using ``_asdict()``.
+
+.. literalinclude:: collections_namedtuple_asdict.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The keys of the ``OrderedDict`` are in the same order as the
+fields for the ``namedtuple``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_asdict.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_asdict.py
+
+ Representation: Person(name='Bob', age=30)
+ As Dictionary: OrderedDict([('name', 'Bob'), ('age', 30)])
+
+.. {{{end}}}
+
+The ``_replace()`` method builds a new instance, replacing the
+values of some fields in the process.
+
+.. literalinclude:: collections_namedtuple_replace.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Although the name implies it is modifying the existing object, because
+``namedtuple`` instances are immutable the method actually
+returns a new object.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_namedtuple_replace.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_namedtuple_replace.py
+
+
+ Before: Person(name='Bob', age=30)
+ After: Person(name='Robert', age=30)
+ Same?: False
+
+.. {{{end}}}
+
diff --git a/python3_libraries/collections/ordereddict.rst b/python3_libraries/collections/ordereddict.rst
new file mode 100644
index 0000000..824ac61
--- /dev/null
+++ b/python3_libraries/collections/ordereddict.rst
@@ -0,0 +1,141 @@
+.. _OrderedDict:
+
+===================================================================
+ OrderedDict --- Remember the Order Keys are Added to a Dictionary
+===================================================================
+
+An ``OrderedDict`` is a dictionary subclass that remembers the
+order in which its contents are added.
+
+.. literalinclude:: collections_ordereddict_iter.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Before Python 3.6 a regular ``dict`` did not track the insertion order, and
+iterating over it produced the values in order based on how the keys
+are stored in the hash table, which is in turn influenced by a random
+value to reduce collisions. In an ``OrderedDict``, by contrast,
+the order in which the items are inserted is remembered and used when creating
+an iterator.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_ordereddict_iter.py',
+.. interpreter='python3.5'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3.5 collections_ordereddict_iter.py
+
+ Regular dictionary:
+ c C
+ b B
+ a A
+
+ OrderedDict:
+ a A
+ b B
+ c C
+
+.. {{{end}}}
+
+Under Python 3.6, the built-in ``dict`` does track insertion order,
+although this behavior is a side-effect of an implementation change
+and should not be relied on.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_ordereddict_iter.py',
+.. interpreter='python3.6'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3.6 collections_ordereddict_iter.py
+
+ Regular dictionary:
+ a A
+ b B
+ c C
+
+ OrderedDict:
+ a A
+ b B
+ c C
+
+.. {{{end}}}
+
+Equality
+========
+
+A regular ``dict`` looks at its contents when testing for equality.
+An ``OrderedDict`` also considers the order in which the items were
+added.
+
+.. literalinclude:: collections_ordereddict_equality.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+In this case, since the two ordered dictionaries are created from
+values in a different order, they are considered to be different.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_ordereddict_equality.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_ordereddict_equality.py
+
+ dict : True
+ OrderedDict: False
+
+.. {{{end}}}
+
+Reordering
+==========
+
+It is possible to change the order of the keys in an
+``OrderedDict`` by moving them to either the beginning or the end
+of the sequence using ``move_to_end()``.
+
+.. literalinclude:: collections_ordereddict_move_to_end.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The ``last`` argument tells ``move_to_end()`` whether to move the
+item to be the last item in the key sequence (when ``True``) or the
+first (when ``False``).
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'collections_ordereddict_move_to_end.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 collections_ordereddict_move_to_end.py
+
+ Before:
+ a A
+ b B
+ c C
+
+ move_to_end():
+ a A
+ c C
+ b B
+
+ move_to_end(last=False):
+ b B
+ a A
+ c C
+
+.. {{{end}}}
+
+
+
+.. seealso::
+
+ * `PYTHONHASHSEED
+ `__
+ -- Environment variable to control the random seed value added to
+ the hash algorithm for key locations in the dictionary.
diff --git a/python3_libraries/daemon/daemon1.py b/python3_libraries/daemon/daemon1.py
new file mode 100644
index 0000000..1ce1a6d
--- /dev/null
+++ b/python3_libraries/daemon/daemon1.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-02-08 qq群: 144081101
+# daemon1.py
+
+import daemon
+import time
+
+with daemon.DaemonContext():
+ f = open("/tmp/test.log",'w')
+ while True:
+ f.write('''
+ Library to implement a well-behaved Unix daemon process.
+
+This library implements the well-behaved daemon specification of PEP 3143, “Standard daemon process library”.
+
+A well-behaved Unix daemon process is tricky to get right, but the required steps are much the same for every daemon program. A DaemonContext instance holds the behaviour and configured process environment for the program; use the instance as a context manager to enter a daemon state.
+''')
+ f.write("{0}\n".format(time.ctime(time.time())))
+ time.sleep(1)
\ No newline at end of file
diff --git a/python3_libraries/daemon/daemon2.py b/python3_libraries/daemon/daemon2.py
new file mode 100644
index 0000000..dbf909c
--- /dev/null
+++ b/python3_libraries/daemon/daemon2.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-02-08 qq群: 144081101
+# daemon2.py
+
+import time
+import logging
+import logging.handlers
+from daemon import runner
+
+class App():
+
+ def __init__(self):
+ self.stdin_path = '/dev/null'
+ self.stdout_path = '/dev/tty'
+ self.stderr_path = '/dev/tty'
+ self.pidfile_path = '/tmp/foo.pid'
+ self.pidfile_timeout = 5
+
+ def run(self):
+
+ logs = logging.getLogger('MyLogger')
+ logs.setLevel(logging.DEBUG)
+ fh = logging.handlers.RotatingFileHandler(
+ '/tmp/test.log',maxBytes=10000000,backupCount=5)
+ fh.setLevel(logging.DEBUG)
+ formatter = logging.Formatter(u'%(asctime)s [%(levelname)s] %(message)s')
+ fh.setFormatter(formatter)
+ logs.addHandler(fh)
+
+ while True:
+ for i in range(10):
+ logs.info("Beginning Scan {0}! \n".format(i))
+ time.sleep(1)
+
+app = App()
+daemon_runner = runner.DaemonRunner(app)
+daemon_runner.do_action()
\ No newline at end of file
diff --git a/python3_libraries/daemon/older.py b/python3_libraries/daemon/older.py
new file mode 100644
index 0000000..0aaca7d
--- /dev/null
+++ b/python3_libraries/daemon/older.py
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-02-08 qq群: 144081101
+# older.py
+
+import time
+import logging
+import logging.handlers
+
+
+logs = logging.getLogger('MyLogger')
+logs.setLevel(logging.DEBUG)
+fh = logging.handlers.RotatingFileHandler(
+ '/tmp/test.log',maxBytes=10000000,backupCount=5)
+fh.setLevel(logging.DEBUG)
+formatter = logging.Formatter(u'%(asctime)s [%(levelname)s] %(message)s')
+fh.setFormatter(formatter)
+logs.addHandler(fh)
+
+
+while True:
+ for i in range(10):
+ logs.info("Beginning Scan {0}! \n".format(i))
+ time.sleep(1)
diff --git a/python3_libraries/daemon/shutdown.sh b/python3_libraries/daemon/shutdown.sh
new file mode 100755
index 0000000..add44fe
--- /dev/null
+++ b/python3_libraries/daemon/shutdown.sh
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-02-08 qq群: 144081101
+# shutdown.sh
+
+APP_MAIN=older.py
+PID=0
+
+getPID(){
+ pythonps=`ps aux | grep $APP_MAIN | grep -v grep`
+ if [ -n "$pythonps" ]; then
+ PID=`echo $pythonps | awk '{print $2}'`
+ else
+ PID=0
+ fi
+}
+
+shutdown(){
+ getPID
+ echo "================================================================================================================"
+ if [ $PID -ne 0 ]; then
+ echo -n "Stopping $APP_MAIN(PID=$PID)..."
+ kill -9 $PID
+ if [ $? -eq 0 ]; then
+ echo "[Success]"
+ echo "================================================================================================================"
+ else
+ echo "[Failed]"
+ echo "================================================================================================================"
+ fi
+ getPID
+ if [ $PID -ne 0 ]; then
+ shutdown
+ fi
+ else
+ echo "$APP_MAIN is not running"
+ echo "================================================================================================================"
+ fi
+}
+
+shutdown
+exit 0
diff --git a/python3_libraries/daemon/startup.sh b/python3_libraries/daemon/startup.sh
new file mode 100755
index 0000000..c93b8be
--- /dev/null
+++ b/python3_libraries/daemon/startup.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-02-08 qq群: 144081101
+# startup.sh
+
+APP_MAIN=older.py
+APP_LOG=logs
+PID=0
+
+getPID(){
+ pythonps=`ps aux | grep $APP_MAIN | grep -v grep`
+ if [ -n "$pythonps" ]; then
+ PID=`echo $pythonps | awk '{print $2}'`
+ else
+ PID=0
+ fi
+}
+
+
+startup(){
+ getPID
+ echo "================================================================================================================"
+ if [ $PID -ne 0 ]; then
+ echo "$APP_MAIN already started(PID=$PID)"
+ echo "================================================================================================================"
+ else
+ echo -n "Starting $APP_MAIN"
+ if [ ! -d "../$APP_LOG" ]; then
+ mkdir "../$APP_LOG"
+ fi
+ nohup python3 $APP_MAIN > ../$APP_LOG/nohup.log 2>&1 &
+ sleep 2
+ getPID
+ if [ $PID -ne 0 ]; then
+ echo "(PID=$PID)...[Success]"
+ echo "================================================================================================================"
+ else
+ echo "[Failed]"
+ echo "================================================================================================================"
+ fi
+ fi
+}
+
+startup
diff --git a/python3_libraries/opencv/opencv3by_example/Chapter01/06_image_translation.py b/python3_libraries/opencv/opencv3by_example/Chapter01/06_image_translation.py
index fcdcc40..09ccf42 100755
--- a/python3_libraries/opencv/opencv3by_example/Chapter01/06_image_translation.py
+++ b/python3_libraries/opencv/opencv3by_example/Chapter01/06_image_translation.py
@@ -6,6 +6,8 @@
translation_matrix = np.float32([ [1,0,70], [0,1,110] ])
img_translation = cv2.warpAffine(img, translation_matrix, (num_cols + 70, num_rows + 110))
+cv2.imshow('Translation', img_translation)
+cv2.waitKey()
translation_matrix = np.float32([ [1,0,-30], [0,1,-50] ])
img_translation = cv2.warpAffine(img_translation, translation_matrix, (num_cols + 70 + 30, num_rows + 110 + 50))
diff --git a/python3_libraries/opencv/opencv3by_example/Chapter01/images/output.png b/python3_libraries/opencv/opencv3by_example/Chapter01/images/output.png
new file mode 100644
index 0000000..e80983b
Binary files /dev/null and b/python3_libraries/opencv/opencv3by_example/Chapter01/images/output.png differ
diff --git a/python3_libraries/os.path/ospath_abspath.py b/python3_libraries/os.path/ospath_abspath.py
new file mode 100644
index 0000000..7d5ed52
--- /dev/null
+++ b/python3_libraries/os.path/ospath_abspath.py
@@ -0,0 +1,57 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_abspath.py
+
+import os
+import os.path
+
+os.chdir('/usr')
+
+PATHS = [
+ '.',
+ '..',
+ './one/two/three',
+ '../one/two/three',
+]
+
+for path in PATHS:
+ print('{!r:>21} : {!r}'.format(path, os.path.abspath(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_basename.py b/python3_libraries/os.path/ospath_basename.py
new file mode 100644
index 0000000..874b459
--- /dev/null
+++ b/python3_libraries/os.path/ospath_basename.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_basename.py
+
+import os.path
+
+PATHS = [
+ '/one/two/three',
+ '/one/two/three/',
+ '/',
+ '.',
+ '',
+]
+
+for path in PATHS:
+ print('{!r:>17} : {!r}'.format(path, os.path.basename(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_commonpath.py b/python3_libraries/os.path/ospath_commonpath.py
new file mode 100644
index 0000000..6f5a54e
--- /dev/null
+++ b/python3_libraries/os.path/ospath_commonpath.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_commonpath.py
+
+import os.path
+
+paths = ['/one/two/three/four',
+ '/one/two/threefold',
+ '/one/two/three/',
+ ]
+for path in paths:
+ print('PATH:', path)
+
+print()
+print('PREFIX:', os.path.commonpath(paths))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_commonprefix.py b/python3_libraries/os.path/ospath_commonprefix.py
new file mode 100644
index 0000000..88deab1
--- /dev/null
+++ b/python3_libraries/os.path/ospath_commonprefix.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_commonprefix.py
+
+import os.path
+
+paths = ['/one/two/three/four',
+ '/one/two/threefold',
+ '/one/two/three/',
+ ]
+for path in paths:
+ print('PATH:', path)
+
+print()
+print('PREFIX:', os.path.commonprefix(paths))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_dirname.py b/python3_libraries/os.path/ospath_dirname.py
new file mode 100644
index 0000000..880673c
--- /dev/null
+++ b/python3_libraries/os.path/ospath_dirname.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_dirname.py
+
+import os.path
+
+PATHS = [
+ '/one/two/three',
+ '/one/two/three/',
+ '/',
+ '.',
+ '',
+]
+
+for path in PATHS:
+ print('{!r:>17} : {!r}'.format(path, os.path.dirname(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_expanduser.py b/python3_libraries/os.path/ospath_expanduser.py
new file mode 100644
index 0000000..0bdd416
--- /dev/null
+++ b/python3_libraries/os.path/ospath_expanduser.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_expanduser.py
+
+import os.path
+
+for user in ['', 'andrew', 'nosuchuser']:
+ lookup = '~' + user
+ print('{!r:>15} : {!r}'.format(
+ lookup, os.path.expanduser(lookup)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_expandvars.py b/python3_libraries/os.path/ospath_expandvars.py
new file mode 100644
index 0000000..1f80aa0
--- /dev/null
+++ b/python3_libraries/os.path/ospath_expandvars.py
@@ -0,0 +1,47 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_expandvars.py
+
+import os.path
+import os
+
+os.environ['MYVAR'] = 'VALUE'
+
+print(os.path.expandvars('/path/to/$MYVAR'))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_join.py b/python3_libraries/os.path/ospath_join.py
new file mode 100644
index 0000000..e34328a
--- /dev/null
+++ b/python3_libraries/os.path/ospath_join.py
@@ -0,0 +1,48 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_join.py
+
+import os.path
+
+PATHS = [
+ ('one', 'two', 'three'),
+ ('/', 'one', 'two', 'three'),
+ ('/one', '/two', '/three'),
+]
+
+for parts in PATHS:
+ print('{} : {!r}'.format(parts, os.path.join(*parts)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_normpath.py b/python3_libraries/os.path/ospath_normpath.py
new file mode 100644
index 0000000..4fc6ae4
--- /dev/null
+++ b/python3_libraries/os.path/ospath_normpath.py
@@ -0,0 +1,52 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_normpath.py
+
+import os.path
+
+PATHS = [
+ 'one//two//three',
+ 'one/./two/./three',
+ 'one/../alt/two/three',
+]
+
+for path in PATHS:
+ print('{!r:>22} : {!r}'.format(path, os.path.normpath(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_properties.py b/python3_libraries/os.path/ospath_properties.py
new file mode 100644
index 0000000..1856c0b
--- /dev/null
+++ b/python3_libraries/os.path/ospath_properties.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_properties.py
+
+import os.path
+import time
+
+print('File :', __file__)
+print('Access time :', time.ctime(os.path.getatime(__file__)))
+print('Modified time:', time.ctime(os.path.getmtime(__file__)))
+print('Change time :', time.ctime(os.path.getctime(__file__)))
+print('Size :', os.path.getsize(__file__))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_split.py b/python3_libraries/os.path/ospath_split.py
new file mode 100644
index 0000000..9f08db6
--- /dev/null
+++ b/python3_libraries/os.path/ospath_split.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_split.py
+
+import os.path
+
+PATHS = [
+ '/one/two/three',
+ '/one/two/three/',
+ '/',
+ '.',
+ '',
+]
+
+for path in PATHS:
+ print('{!r:>17} : {}'.format(path, os.path.split(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_splitext.py b/python3_libraries/os.path/ospath_splitext.py
new file mode 100644
index 0000000..f336795
--- /dev/null
+++ b/python3_libraries/os.path/ospath_splitext.py
@@ -0,0 +1,46 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_splitext.py
+
+import os.path
+
+PATHS = [
+ 'filename.txt',
+ 'filename',
+ '/path/to/filename.txt',
+ '/',
+ '',
+ 'my-archive.tar.gz',
+ 'no-extension.',
+]
+
+for path in PATHS:
+ print('{!r:>21} : {!r}'.format(path, os.path.splitext(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/ospath_tests.py b/python3_libraries/os.path/ospath_tests.py
new file mode 100644
index 0000000..18a69f0
--- /dev/null
+++ b/python3_libraries/os.path/ospath_tests.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_tests.py
+
+import os.path
+
+FILENAMES = [
+ __file__,
+ os.path.dirname(__file__),
+ '/',
+ './broken_link',
+]
+
+for file in FILENAMES:
+ print('File : {!r}'.format(file))
+ print('Absolute :', os.path.isabs(file))
+ print('Is File? :', os.path.isfile(file))
+ print('Is Dir? :', os.path.isdir(file))
+ print('Is Link? :', os.path.islink(file))
+ print('Mountpoint? :', os.path.ismount(file))
+ print('Exists? :', os.path.exists(file))
+ print('Link Exists?:', os.path.lexists(file))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/os.path/pathlib_rmdir.py b/python3_libraries/os.path/pathlib_rmdir.py
new file mode 100644
index 0000000..78125c7
--- /dev/null
+++ b/python3_libraries/os.path/pathlib_rmdir.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# https://pymotw.com/3/os.path/index.html
+# ospath_split.py
+
+import os.path
+
+PATHS = [
+ '/one/two/three',
+ '/one/two/three/',
+ '/',
+ '.',
+ '',
+]
+
+for path in PATHS:
+ print('{!r:>17} : {}'.format(path, os.path.split(path)))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_convenience.py b/python3_libraries/pathlib/pathlib_convenience.py
new file mode 100755
index 0000000..8cc2c51
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_convenience.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_convenience.py
+
+import pathlib
+
+home = pathlib.Path.home()
+print('home: ', home)
+
+cwd = pathlib.Path.cwd()
+print('cwd : ', cwd)
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_from_existing.py b/python3_libraries/pathlib/pathlib_from_existing.py
new file mode 100755
index 0000000..dd3e27a
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_from_existing.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_from_existing.py
+
+import pathlib
+
+ind = pathlib.PurePosixPath('source/pathlib/index.rst')
+print(ind)
+
+py = ind.with_name('pathlib_from_existing.py')
+print(py)
+
+pyc = py.with_suffix('.pyc')
+print(pyc)
\ No newline at end of file
diff --git a/python3_libraries/pathlib/pathlib_glob.py b/python3_libraries/pathlib/pathlib_glob.py
new file mode 100644
index 0000000..9b46702
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_glob.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_glob.py
+
+import pathlib
+
+p = pathlib.Path('.')
+
+for f in p.glob('*.py'):
+ print(f)
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_iterdir.py b/python3_libraries/pathlib/pathlib_iterdir.py
new file mode 100644
index 0000000..7552376
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_iterdir.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_iterdir.py
+
+import pathlib
+
+p = pathlib.Path('.')
+
+for f in p.iterdir():
+ print(f)
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_joinpath.py b/python3_libraries/pathlib/pathlib_joinpath.py
new file mode 100755
index 0000000..99f140c
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_joinpath.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_joinpath.py
+
+import pathlib
+
+root = pathlib.PurePosixPath('/')
+subdirs = ['usr', 'local']
+usr_local = root.joinpath(*subdirs)
+print(usr_local)
\ No newline at end of file
diff --git a/python3_libraries/pathlib/pathlib_mkdir.py b/python3_libraries/pathlib/pathlib_mkdir.py
new file mode 100644
index 0000000..c2df85a
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_mkdir.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_mkdir.py
+
+import pathlib
+
+p = pathlib.Path('example_dir')
+
+print('Creating {}'.format(p))
+p.mkdir()
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_name.py b/python3_libraries/pathlib/pathlib_name.py
new file mode 100755
index 0000000..15890e9
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_name.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_name.py
+
+import pathlib
+
+p = pathlib.PurePosixPath('./source/pathlib/pathlib_name.py')
+print('path : {}'.format(p))
+print('name : {}'.format(p.name))
+print('suffix: {}'.format(p.suffix))
+print('stem : {}'.format(p.stem))
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_operator.py b/python3_libraries/pathlib/pathlib_operator.py
new file mode 100755
index 0000000..f264459
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_operator.py
@@ -0,0 +1,26 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_operator.py
+
+import pathlib
+
+usr = pathlib.PurePosixPath('/usr')
+print(usr)
+
+usr_local = usr / 'local'
+print(usr_local)
+
+usr_share = usr / pathlib.PurePosixPath('share')
+print(usr_share)
+
+root = usr / '..'
+print(root)
+
+etc = root / '/etc/'
+print(etc)
+
diff --git a/python3_libraries/pathlib/pathlib_ownership.py b/python3_libraries/pathlib/pathlib_ownership.py
new file mode 100644
index 0000000..7234f78
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_ownership.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_ownership.py
+
+import pathlib
+
+p = pathlib.Path(__file__)
+
+print('{} is owned by {}/{}'.format(p, p.owner(), p.group()))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_parents.py b/python3_libraries/pathlib/pathlib_parents.py
new file mode 100755
index 0000000..fbc488b
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_parents.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_parents.py
+
+import pathlib
+
+p = pathlib.PurePosixPath('/usr/local/lib')
+
+
+print('parent: {}'.format(p.parent))
+
+print('\nhierarchy:')
+for up in p.parents:
+ print(up)
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_parts.py b/python3_libraries/pathlib/pathlib_parts.py
new file mode 100755
index 0000000..437c950
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_parts.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_parts.py
+
+import pathlib
+
+p = pathlib.PurePosixPath('/usr/local')
+print(p.parts)
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_read_write.py b/python3_libraries/pathlib/pathlib_read_write.py
new file mode 100644
index 0000000..7d5ed55
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_read_write.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_read_write.py
+
+import pathlib
+
+f = pathlib.Path('example.txt')
+
+f.write_bytes('This is the content'.encode('utf-8'))
+
+with f.open('r', encoding='utf-8') as handle:
+ print('read from open(): {!r}'.format(handle.read()))
+
+print('read_text(): {!r}'.format(f.read_text('utf-8')))
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_resolve.py b/python3_libraries/pathlib/pathlib_resolve.py
new file mode 100755
index 0000000..b9b79d1
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_resolve.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com
+# 技术支持qq群: 144081101 591302926 567351477 钉钉免费群:21745728
+# 作者博客:https://www.jianshu.com/u/9bc194fde100
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_resolve.py
+
+import pathlib
+
+usr_local = pathlib.Path('/usr/local')
+share = usr_local / '..' / 'share'
+print(type(share.resolve()))
+print(share.resolve())
diff --git a/python3_libraries/pathlib/pathlib_rglob.py b/python3_libraries/pathlib/pathlib_rglob.py
new file mode 100644
index 0000000..1cc80d6
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_rglob.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_rglob.py
+
+import pathlib
+
+p = pathlib.Path('..')
+
+for f in p.rglob('*.py'):
+ print(f)
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_rglob2.py b/python3_libraries/pathlib/pathlib_rglob2.py
new file mode 100644
index 0000000..1f08d55
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_rglob2.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_rglob2.py
+
+import pathlib
+
+p = pathlib.Path('..')
+
+for f in p.rglob('**/*.py'):
+ print(f)
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_rglob3.py b/python3_libraries/pathlib/pathlib_rglob3.py
new file mode 100644
index 0000000..ba52a8e
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_rglob3.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_rglob3.py
+
+import pathlib
+
+p = pathlib.Path('..')
+
+for f in p.glob('**/*.py'):
+ print(f)
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_rmdir.py b/python3_libraries/pathlib/pathlib_rmdir.py
new file mode 100644
index 0000000..43914da
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_rmdir.py
@@ -0,0 +1,39 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_unlink.py
+
+import pathlib
+
+p = pathlib.Path('touched')
+
+p.touch()
+
+print('exists before removing:', p.exists())
+
+p.unlink()
+
+print('exists after removing:', p.exists())
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_stat.py b/python3_libraries/pathlib/pathlib_stat.py
new file mode 100644
index 0000000..31b1514
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_stat.py
@@ -0,0 +1,41 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_stat.py
+
+import pathlib
+import sys
+import time
+
+if len(sys.argv) == 1:
+ filename = __file__
+else:
+ filename = sys.argv[1]
+
+p = pathlib.Path(filename)
+stat_info = p.stat()
+
+print('{}:'.format(filename))
+print(' Size:', stat_info.st_size)
+print(' Permissions:', oct(stat_info.st_mode))
+print(' Owner:', stat_info.st_uid)
+print(' Device:', stat_info.st_dev)
+print(' Created :', time.ctime(stat_info.st_ctime))
+print(' Last modified:', time.ctime(stat_info.st_mtime))
+print(' Last accessed:', time.ctime(stat_info.st_atime))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_symlink_to.py b/python3_libraries/pathlib/pathlib_symlink_to.py
new file mode 100644
index 0000000..2d7ee46
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_symlink_to.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_symlink_to.py
+
+import pathlib
+
+p = pathlib.Path('example_link')
+
+p.symlink_to('example.txt')
+
+print(p)
+print(p.resolve().name)
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_touch.py b/python3_libraries/pathlib/pathlib_touch.py
new file mode 100644
index 0000000..d7680a3
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_touch.py
@@ -0,0 +1,53 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_chmod.py
+
+import os
+import pathlib
+import stat
+
+# Create a fresh test file.
+f = pathlib.Path('pathlib_chmod_example.txt')
+if f.exists():
+ f.unlink()
+f.write_text('contents')
+
+# Determine what permissions are already set using stat.
+existing_permissions = stat.S_IMODE(f.stat().st_mode)
+print('Before: {:o}'.format(existing_permissions))
+
+# Decide which way to toggle them.
+if not (existing_permissions & os.X_OK):
+ print('Adding execute permission')
+ new_permissions = existing_permissions | stat.S_IXUSR
+else:
+ print('Removing execute permission')
+ # use xor to remove the user execute permission
+ new_permissions = existing_permissions ^ stat.S_IXUSR
+
+# Make the change and show the new value.
+f.chmod(new_permissions)
+after_permissions = stat.S_IMODE(f.stat().st_mode)
+print('After: {:o}'.format(after_permissions))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pathlib/pathlib_types.py b/python3_libraries/pathlib/pathlib_types.py
new file mode 100644
index 0000000..a56d3fc
--- /dev/null
+++ b/python3_libraries/pathlib/pathlib_types.py
@@ -0,0 +1,61 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# CreateDate: 2018-1-29
+# from https://pymotw.com/3/pathlib/index.html
+# pathlib_types.py
+
+import itertools
+import os
+import pathlib
+
+root = pathlib.Path('test_files')
+
+# Clean up from previous runs.
+if root.exists():
+ for f in root.iterdir():
+ f.unlink()
+else:
+ root.mkdir()
+
+# Create test files
+(root / 'file').write_text(
+ 'This is a regular file', encoding='utf-8')
+(root / 'symlink').symlink_to('file')
+os.mkfifo(str(root / 'fifo'))
+
+# Check the file types
+to_scan = itertools.chain(
+ root.iterdir(),
+ [pathlib.Path('/dev/disk0'),
+ pathlib.Path('/dev/console')],
+)
+hfmt = '{:18s}' + (' {:>5}' * 6)
+print(hfmt.format('Name', 'File', 'Dir', 'Link', 'FIFO', 'Block',
+ 'Character'))
+print()
+
+fmt = '{:20s} ' + ('{!r:>5} ' * 6)
+for f in to_scan:
+ print(fmt.format(
+ str(f),
+ f.is_file(),
+ f.is_dir(),
+ f.is_symlink(),
+ f.is_fifo(),
+ f.is_block_device(),
+ f.is_char_device(),
+ ))
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/python3_libraries/pexpect/lftp.py b/python3_libraries/pexpect/lftp.py
new file mode 100755
index 0000000..d66efd1
--- /dev/null
+++ b/python3_libraries/pexpect/lftp.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-07-27
+import pexpect
+
+class Lftp(object):
+
+ client = None
+
+ @classmethod
+ def connect(cls, ip, username="andrew", password="654321_", prompt='~>',
+ silent=False):
+ child = pexpect.spawn('lftp {}:{}@{}'.format(username, password, ip),
+ maxread=5000)
+
+ i = 1
+ # Enter password
+ while i != 0:
+ i = child.expect([prompt, pexpect.TIMEOUT])
+ if not silent:
+ print(child.before.decode('utf-8'), child.after.decode('utf-8'))
+ if i == 0: # find prompt
+ pass
+ else:
+ raise Exception('ERROR TIMEOUT! LFTP could not login. ')
+ Lftp.client = child
+
+ @classmethod
+ def command(cls, cmd, prompt='~>', silent=False):
+ Lftp.client.buffer = b''
+ Lftp.client.send(cmd + "\r")
+ # Lftp.client.setwinsize(400,400)
+ Lftp.client.expect([prompt,])
+ if not silent:
+ print(Lftp.client.before.decode('utf-8'),
+ Lftp.client.after.decode('utf-8'))
+ return Lftp.client.before, Lftp.client.after
+
+ @classmethod
+ def close(cls):
+ Lftp.client.close()
+
+
+c = Lftp()
+c.connect('172.20.17.200')
+c.command("ls -l")
+c.command("mirror projects")
+c.close()
\ No newline at end of file
diff --git a/python3_libraries/pillow/demo.jpg b/python3_libraries/pillow/demo.jpg
index 1548750..fb5b602 100755
Binary files a/python3_libraries/pillow/demo.jpg and b/python3_libraries/pillow/demo.jpg differ
diff --git a/python3_libraries/pillow/demo.png b/python3_libraries/pillow/demo.png
index db54998..2ba5165 100755
Binary files a/python3_libraries/pillow/demo.png and b/python3_libraries/pillow/demo.png differ
diff --git a/python3_libraries/pytest_testing/ch1/.pytest_cache/v/cache/nodeids b/python3_libraries/pytest_testing/ch1/.pytest_cache/v/cache/nodeids
index 7fc186e..0a396de 100644
--- a/python3_libraries/pytest_testing/ch1/.pytest_cache/v/cache/nodeids
+++ b/python3_libraries/pytest_testing/ch1/.pytest_cache/v/cache/nodeids
@@ -1,4 +1,6 @@
[
+ "fail_test.py::test_failing",
+ "pass_test.py::test_passing",
"tasks/task1_test.py::test_defaults",
"tasks/task1_test.py::test_member_access",
"tasks/task2_test.py::test_asdict",
diff --git a/python3_libraries/pytest_testing/ch1/__pycache__/fail.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/__pycache__/fail.cpython-35-PYTEST.pyc
deleted file mode 100644
index ce86f5a..0000000
Binary files a/python3_libraries/pytest_testing/ch1/__pycache__/fail.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/__pycache__/fail_test.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/__pycache__/fail_test.cpython-35-PYTEST.pyc
deleted file mode 100644
index cb32c11..0000000
Binary files a/python3_libraries/pytest_testing/ch1/__pycache__/fail_test.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/__pycache__/pass.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/__pycache__/pass.cpython-35-PYTEST.pyc
deleted file mode 100644
index ac3a4aa..0000000
Binary files a/python3_libraries/pytest_testing/ch1/__pycache__/pass.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/__pycache__/pass_test.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/__pycache__/pass_test.cpython-35-PYTEST.pyc
deleted file mode 100644
index c561bfa..0000000
Binary files a/python3_libraries/pytest_testing/ch1/__pycache__/pass_test.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/__pycache__/test_one.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/__pycache__/test_one.cpython-35-PYTEST.pyc
deleted file mode 100644
index c417374..0000000
Binary files a/python3_libraries/pytest_testing/ch1/__pycache__/test_one.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task1_test.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task1_test.cpython-35-PYTEST.pyc
deleted file mode 100644
index cad7946..0000000
Binary files a/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task1_test.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task2_test.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task2_test.cpython-35-PYTEST.pyc
deleted file mode 100644
index ef750e7..0000000
Binary files a/python3_libraries/pytest_testing/ch1/tasks/__pycache__/task2_test.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/.pytest_cache/v/cache/lastfailed b/python3_libraries/pytest_testing/ch2/tasks_proj/.pytest_cache/v/cache/lastfailed
index 8f94c12..dc35c6a 100644
--- a/python3_libraries/pytest_testing/ch2/tasks_proj/.pytest_cache/v/cache/lastfailed
+++ b/python3_libraries/pytest_testing/ch2/tasks_proj/.pytest_cache/v/cache/lastfailed
@@ -1,6 +1,16 @@
{
- "tests/func/test_add_variety.py::TestAdd": true,
- "tests/func/test_api_exceptions.py::TestUpdate": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_equivalent[Task(breathe,BRIAN,True)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_equivalent[Task(exercise,BrIaN,False)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_equivalent[Task(sleep,None,True)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_equivalent[Task(wake,brian,False)0]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_equivalent[Task(wake,brian,False)1]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_valid_id[Task(breathe,BRIAN,True)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_valid_id[Task(exercise,BrIaN,False)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_valid_id[Task(sleep,None,True)]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_valid_id[Task(wake,brian,False)0]": true,
+ "tests/func/test_add_variety.py::TestAdd::()::test_valid_id[Task(wake,brian,False)1]": true,
+ "tests/func/test_api_exceptions.py::TestUpdate::()::test_bad_id": true,
+ "tests/func/test_api_exceptions.py::TestUpdate::()::test_bad_task": true,
"tests/func/test_unique_id_1.py::test_unique_id": true,
"tests/unit/test_task_fail.py::test_dict_equality": true,
"tests/unit/test_task_fail.py::test_task_equality": true
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/lastfailed b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/lastfailed
index 26d2215..650b5ba 100644
--- a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/lastfailed
+++ b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/lastfailed
@@ -1,4 +1,5 @@
{
+ "func/test_unique_id_1.py::test_unique_id": true,
"unit/test_task_fail.py::test_dict_equality": true,
"unit/test_task_fail.py::test_task_equality": true
}
\ No newline at end of file
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/nodeids b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/nodeids
index 045dea9..3ec0683 100644
--- a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/nodeids
+++ b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/.pytest_cache/v/cache/nodeids
@@ -1,9 +1,3 @@
[
- "func/test_api_exceptions.py::test_add_raises",
- "func/test_api_exceptions.py::test_list_raises",
- "func/test_api_exceptions.py::test_get_raises",
- "func/test_api_exceptions.py::TestUpdate::()::test_bad_id",
- "func/test_api_exceptions.py::TestUpdate::()::test_bad_task",
- "func/test_api_exceptions.py::test_delete_raises",
- "func/test_api_exceptions.py::test_start_tasks_db_raises"
+ "func/test_api_exceptions.py::TestUpdate::()::test_bad_id"
]
\ No newline at end of file
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/__init__.cpython-35.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/__init__.cpython-35.pyc
deleted file mode 100644
index d142652..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/__init__.cpython-35.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add.cpython-35-PYTEST.pyc
deleted file mode 100644
index 16945b0..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add_variety.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add_variety.cpython-35-PYTEST.pyc
deleted file mode 100644
index a1448eb..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_add_variety.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_api_exceptions.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_api_exceptions.cpython-35-PYTEST.pyc
deleted file mode 100644
index fccc205..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_api_exceptions.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_1.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_1.cpython-35-PYTEST.pyc
deleted file mode 100644
index 395292e..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_1.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_2.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_2.cpython-35-PYTEST.pyc
deleted file mode 100644
index c9eaee0..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_2.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_3.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_3.cpython-35-PYTEST.pyc
deleted file mode 100644
index 6188988..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_3.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_4.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_4.cpython-35-PYTEST.pyc
deleted file mode 100644
index d1e59ae..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/func/__pycache__/test_unique_id_4.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/__init__.cpython-35.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/__init__.cpython-35.pyc
deleted file mode 100644
index d88e95a..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/__init__.cpython-35.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task.cpython-35-PYTEST.pyc
deleted file mode 100644
index 36cf9a2..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task_fail.cpython-35-PYTEST.pyc b/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task_fail.cpython-35-PYTEST.pyc
deleted file mode 100644
index 4f415c8..0000000
Binary files a/python3_libraries/pytest_testing/ch2/tasks_proj/tests/unit/__pycache__/test_task_fail.cpython-35-PYTEST.pyc and /dev/null differ
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/__init__.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/__init__.py
new file mode 100644
index 0000000..9337831
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/__init__.py
@@ -0,0 +1,18 @@
+"""Minimal Project Task Management."""
+
+from .api import ( # noqa: F401
+ Task,
+ TasksException,
+ add,
+ get,
+ list_tasks,
+ count,
+ update,
+ delete,
+ delete_all,
+ unique_id,
+ start_tasks_db,
+ stop_tasks_db
+)
+
+__version__ = '0.1.0'
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/api.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/api.py
new file mode 100644
index 0000000..2acff39
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/api.py
@@ -0,0 +1,130 @@
+"""Main API for tasks project."""
+
+from collections import namedtuple
+from six import string_types
+
+
+# Task element types : [summary: str, owner: str, done: bool, id: int]
+Task = namedtuple('Task', ['summary', 'owner', 'done', 'id'])
+Task.__new__.__defaults__ = (None, None, False, None)
+
+
+# custom exceptions
+class TasksException(Exception):
+ """A tasks error has occurred."""
+
+
+class UninitializedDatabase(TasksException):
+ """Call tasks.start_tasks_db() before other functions."""
+
+
+def add(task): # type: (Task) -> int
+ """Add a task (a Task object) to the tasks database."""
+ if not isinstance(task, Task):
+ raise TypeError('task must be Task object')
+ if not isinstance(task.summary, string_types):
+ raise ValueError('task.summary must be string')
+ if not ((task.owner is None) or
+ isinstance(task.owner, string_types)):
+ raise ValueError('task.owner must be string or None)')
+ # We test for this in ch5, so keep this commented out to let
+ # the ch5 test fail.
+ #
+ # if not isinstance(task.done, bool):
+ # raise ValueError('task.done must be True or False')
+ if task.id is not None:
+ raise ValueError('task.id must None')
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ task_id = _tasksdb.add(task._asdict())
+ return task_id
+
+
+def get(task_id): # type: (int) -> Task
+ """Return a Task object with matching task_id."""
+ if not isinstance(task_id, int):
+ raise TypeError('task_id must be an int')
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ task_dict = _tasksdb.get(task_id)
+ return Task(**task_dict)
+
+
+def list_tasks(owner=None): # type: (str|None) -> list of Task
+ """Return a list of Task objects."""
+ if owner and not isinstance(owner, string_types):
+ raise TypeError('owner must be a string')
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ return [Task(**t) for t in _tasksdb.list_tasks(owner)]
+
+
+def count(): # type: (None) -> int
+ """Return the number of tasks in db."""
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ return _tasksdb.count()
+
+
+def update(task_id, task): # type: (int, Task) -> None
+ """Modify task in db with given task_id."""
+ if not isinstance(task_id, int):
+ raise TypeError('task_id must be an int')
+ if not isinstance(task, Task):
+ raise TypeError('task must be Task object')
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ current_task = _tasksdb.get(task_id)
+ updates = task._asdict()
+ for field in task._fields:
+ if field != 'id' and updates[field] is not None:
+ current_task[field] = updates[field]
+ _tasksdb.update(task_id, current_task)
+
+
+def delete(task_id): # type: (int) -> None
+ """Remove a task from db with given task_id."""
+ if not isinstance(task_id, int):
+ raise TypeError('task_id must be an int')
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ _tasksdb.delete(task_id)
+
+
+def delete_all(): # type: () -> None
+ """Remove all tasks from db."""
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ _tasksdb.delete_all()
+
+
+def unique_id(): # type: () -> int
+ """Return an integer that does not exist in the db."""
+ if _tasksdb is None:
+ raise UninitializedDatabase()
+ return _tasksdb.unique_id()
+
+
+_tasksdb = None
+
+
+def start_tasks_db(db_path, db_type): # type: (str, str) -> None
+ """Connect API functions to a db."""
+ if not isinstance(db_path, string_types):
+ raise TypeError('db_path must be a string')
+ global _tasksdb
+ if db_type == 'tiny':
+ import tasks.tasksdb_tinydb
+ _tasksdb = tasks.tasksdb_tinydb.start_tasks_db(db_path)
+ elif db_type == 'mongo':
+ import tasks.tasksdb_pymongo
+ _tasksdb = tasks.tasksdb_pymongo.start_tasks_db(db_path)
+ else:
+ raise ValueError("db_type must be a 'tiny' or 'mongo'")
+
+
+def stop_tasks_db(): # type: () -> None
+ """Disconnect API functions from db."""
+ global _tasksdb
+ _tasksdb.stop_tasks_db()
+ _tasksdb = None
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/cli.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/cli.py
new file mode 100644
index 0000000..786f269
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/cli.py
@@ -0,0 +1,87 @@
+"""Command Line Interface (CLI) for tasks project."""
+
+from __future__ import print_function
+import click
+import tasks.config
+from contextlib import contextmanager
+from tasks.api import Task
+
+
+# The main entry point for tasks.
+@click.group(context_settings={'help_option_names': ['-h', '--help']})
+@click.version_option(version='0.1.0')
+def tasks_cli():
+ """Run the tasks application."""
+
+
+@tasks_cli.command(help="add a task")
+@click.argument('summary')
+@click.option('-o', '--owner', default=None,
+ help='set the task owner')
+def add(summary, owner):
+ """Add a task to db."""
+ with _tasks_db():
+ tasks.add(Task(summary, owner))
+
+
+@tasks_cli.command(help="delete a task")
+@click.argument('task_id', type=int)
+def delete(task_id):
+ """Remove task in db with given id."""
+ with _tasks_db():
+ tasks.delete(task_id)
+
+
+@tasks_cli.command(name="list", help="list tasks")
+@click.option('-o', '--owner', default=None,
+ help='list tasks with this owner')
+def list_tasks(owner):
+ """
+ List tasks in db.
+
+ If owner given, only list tasks with that owner.
+ """
+ formatstr = "{: >4} {: >10} {: >5} {}"
+ print(formatstr.format('ID', 'owner', 'done', 'summary'))
+ print(formatstr.format('--', '-----', '----', '-------'))
+ with _tasks_db():
+ for t in tasks.list_tasks(owner):
+ done = 'True' if t.done else 'False'
+ owner = '' if t.owner is None else t.owner
+ print(formatstr.format(
+ t.id, owner, done, t.summary))
+
+
+@tasks_cli.command(help="update task")
+@click.argument('task_id', type=int)
+@click.option('-o', '--owner', default=None,
+ help='change the task owner')
+@click.option('-s', '--summary', default=None,
+ help='change the task summary')
+@click.option('-d', '--done', default=None,
+ type=bool,
+ help='change the task done state (True or False)')
+def update(task_id, owner, summary, done):
+ """Modify a task in db with given id with new info."""
+ with _tasks_db():
+ tasks.update(task_id, Task(summary, owner, done))
+
+
+@tasks_cli.command(help="list count")
+def count():
+ """Return number of tasks in db."""
+ with _tasks_db():
+ c = tasks.count()
+ print(c)
+
+
+@contextmanager
+def _tasks_db():
+ config = tasks.config.get_config()
+ tasks.start_tasks_db(config.db_path, config.db_type)
+ yield
+ tasks.stop_tasks_db()
+
+
+if __name__ == '__main__':
+ tasks_cli()
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/config.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/config.py
new file mode 100644
index 0000000..c947080
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/config.py
@@ -0,0 +1,26 @@
+"""Handle configuration files for tasks CLI."""
+
+from collections import namedtuple
+try:
+ from configparser import ConfigParser
+except ImportError:
+ from ConfigParser import ConfigParser
+
+import os
+
+TasksConfig = namedtuple('TasksConfig', ['db_path', 'db_type'])
+
+
+def get_config():
+ """Return TasksConfig object after reading config file."""
+ parser = ConfigParser()
+ config_file = os.path.expanduser('~/.tasks.config')
+ if not os.path.exists(config_file):
+ tasks_db_path = '~/tasks_db/'
+ tasks_db_type = 'tiny'
+ else:
+ parser.read(config_file)
+ tasks_db_path = parser.get('TASKS', 'tasks_db_path')
+ tasks_db_type = parser.get('TASKS', 'tasks_db_type')
+ tasks_db_path = os.path.expanduser(tasks_db_path)
+ return TasksConfig(tasks_db_path, tasks_db_type)
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_pymongo.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_pymongo.py
new file mode 100644
index 0000000..037ef8c
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_pymongo.py
@@ -0,0 +1,98 @@
+"""Database wrapper for MongoDB for tasks project."""
+
+import os
+import pymongo
+import subprocess
+import time
+from bson.objectid import ObjectId
+
+
+class TasksDB_MongoDB(): # noqa: E801
+ """Wrapper class for MongoDB.
+
+ The methods in this class need to match
+ all database interaction classes.
+
+ So far, this is:
+ TasksDB_TinyDB found in tasksdb_tinydb.py.
+ """
+
+ def __init__(self, db_path): # type (str) -> ()
+ """Start MongoDB client and connect to db."""
+ self._process = None
+ self._client = None
+ self._start_mongod(db_path)
+ self._connect()
+
+ def add(self, task): # type (dict) -> int
+ """Add a task dict to db."""
+ return self._db.task_list.insert_one(task).inserted_id
+
+ def get(self, task_id): # type (int) -> dict
+ """Return a task dict with matching id."""
+ return self._db.task_list.find_one({'_id': ObjectId(task_id)})
+
+ def list_tasks(self, owner=None): # type (str) -> list[dict]
+ """Return list of tasks."""
+ return list(self._db.task_list.find())
+
+ def count(self): # type () -> int
+ """Return number of tasks in db."""
+ return self._db.task_list.count()
+
+ def update(self, task_id, task): # type (int, dict) -> ()
+ """Modify task in db with given task_id."""
+ self._db.tasks_list.update_one({'_id': ObjectId(task_id)}, task)
+
+ def delete(self, task_id): # type (int) -> ()
+ """Remove a task from db with given task_id."""
+ reply = self._db.task_list.delete_one({'_id': ObjectId(task_id)})
+ if reply.deleted_count == 0:
+ raise ValueError('id {} not in task database'.format(str(task_id)))
+
+ def unique_id(self): # type () -> int
+ """Return an integer that does not exist in the db."""
+ return ObjectId()
+
+ def delete_all(self):
+ """Remove all tasks from db."""
+ self._db.task_list.drop()
+
+ def stop_tasks_db(self):
+ """Disconnect from db."""
+ self._disconnect()
+ self._stop_mongod()
+
+ def _start_mongod(self, db_path):
+ self._process = subprocess.Popen(['mongod', '--dbpath', db_path],
+ stdout=open(os.devnull, 'wb'),
+ stderr=subprocess.STDOUT)
+ assert self._process, "mongod process failed to start"
+
+ def _stop_mongod(self):
+ if self._process:
+ self._process.terminate()
+ self._process.wait()
+ self._process = None
+
+ def _connect(self):
+ if self._process and (not self._client or not self._db):
+ for i in range(3):
+ try:
+ self._client = pymongo.MongoClient()
+ except pymongo.errors.ConnectionFailure:
+ time.sleep(0.1)
+ continue
+ else:
+ break
+ if self._client:
+ self._db = self._client.task_list
+
+ def _disconnect(self):
+ self._db = None
+ self._client = None
+
+
+def start_tasks_db(db_path): # type (str) -> TasksDB_MongoDB object
+ """Connect to db."""
+ return TasksDB_MongoDB(db_path)
diff --git a/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_tinydb.py b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_tinydb.py
new file mode 100644
index 0000000..782fdd2
--- /dev/null
+++ b/python3_libraries/pytest_testing/tasks_proj/build/lib.linux-x86_64-2.7/tasks/tasksdb_tinydb.py
@@ -0,0 +1,68 @@
+"""Database wrapper for TinyDB for tasks project."""
+import tinydb
+
+
+class TasksDB_TinyDB(): # noqa : E801
+ """Wrapper class for TinyDB.
+
+ The methods in this class need to match
+ all database interaction classes.
+
+ So far, this is:
+ TasksDB_MongoDB found in tasksdb_pymongo.py.
+ TasksDB_TinyDB found in tasksdb_tinydb.py.
+ """
+
+ def __init__(self, db_path): # type (str) -> ()
+ """Connect to db."""
+ self._db = tinydb.TinyDB(db_path + '/tasks_db.json')
+
+ def add(self, task): # type (dict) -> int
+ """Add a task dict to db."""
+ task_id = self._db.insert(task)
+ task['id'] = task_id
+ self._db.update(task, eids=[task_id])
+ return task_id
+
+ def get(self, task_id): # type (int) -> dict
+ """Return a task dict with matching id."""
+ return self._db.get(eid=task_id)
+
+ def list_tasks(self, owner=None): # type (str) -> list[dict]
+ """Return list of tasks."""
+ if owner is None:
+ return self._db.all()
+ else:
+ return self._db.search(tinydb.Query().owner == owner)
+
+ def count(self): # type () -> int
+ """Return number of tasks in db."""
+ return len(self._db)
+
+ def update(self, task_id, task): # type (int, dict) -> ()
+ """Modify task in db with given task_id."""
+ self._db.update(task, eids=[task_id])
+
+ def delete(self, task_id): # type (int) -> ()
+ """Remove a task from db with given task_id."""
+ self._db.remove(eids=[task_id])
+
+ def delete_all(self):
+ """Remove all tasks from db."""
+ self._db.purge()
+
+ def unique_id(self): # type () -> int
+ """Return an integer that does not exist in the db."""
+ i = 1
+ while self._db.contains(eids=[i]):
+ i += 1
+ return i
+
+ def stop_tasks_db(self):
+ """Disconnect from DB."""
+ pass
+
+
+def start_tasks_db(db_path): # type (str) -> TasksDB_MongoDB object
+ """Connect to db."""
+ return TasksDB_TinyDB(db_path)
diff --git a/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py2.7.egg b/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py2.7.egg
new file mode 100644
index 0000000..f1ca1af
Binary files /dev/null and b/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py2.7.egg differ
diff --git a/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py3.6.egg b/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py3.6.egg
new file mode 100644
index 0000000..ace9620
Binary files /dev/null and b/python3_libraries/pytest_testing/tasks_proj/dist/tasks-0.1.0-py3.6.egg differ
diff --git a/python3_libraries/pytest_testing/tasks_proj/src/tasks.egg-info/PKG-INFO b/python3_libraries/pytest_testing/tasks_proj/src/tasks.egg-info/PKG-INFO
index 74aecf2..bd309a2 100644
--- a/python3_libraries/pytest_testing/tasks_proj/src/tasks.egg-info/PKG-INFO
+++ b/python3_libraries/pytest_testing/tasks_proj/src/tasks.egg-info/PKG-INFO
@@ -1,4 +1,4 @@
-Metadata-Version: 1.0
+Metadata-Version: 2.1
Name: tasks
Version: 0.1.0
Summary: Minimal Project Task Management
@@ -8,3 +8,4 @@ Author-email: Please use pythontesting.net contact form.
License: proprietary
Description: UNKNOWN
Platform: UNKNOWN
+Provides-Extra: mongo
diff --git a/python3_libraries/string/index.rst b/python3_libraries/string/index.rst
new file mode 100644
index 0000000..2cdac5f
--- /dev/null
+++ b/python3_libraries/string/index.rst
@@ -0,0 +1,283 @@
+=========================================
+ string --- Text Constants and Templates
+=========================================
+
+.. module:: string
+ :synopsis: Contains constants and classes for working with text.
+
+:Purpose: Contains constants and classes for working with text.
+
+The ``string`` module dates from the earliest versions of
+Python. Many of the functions previously implemented in this module
+have been moved to methods of ``str`` objects. The ``string``
+module retains several useful constants and classes for working with
+``str`` objects. This discussion will concentrate on them.
+
+Functions
+=========
+
+The function ``capwords()`` capitalizes all of the words in a
+string.
+
+.. literalinclude:: string_capwords.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The results are the same as those obtained by calling ``split()``, capitalizing the
+words in the resulting list, and then calling ``join()`` to combine the
+results.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_capwords.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_capwords.py
+
+ The quick brown fox jumped over the lazy dog.
+ The Quick Brown Fox Jumped Over The Lazy Dog.
+
+.. {{{end}}}
+
+Templates
+=========
+
+String templates were added as part of :pep:`292` and
+are intended as an alternative to the built-in interpolation
+syntax. With ``string.Template`` interpolation, variables are
+identified by prefixing the name with ``$`` (e.g., ``$var``). Alternatively, if
+necessary to set them off from surrounding text, they can also be
+wrapped with curly braces (e.g., ``${var}``).
+
+This example compares a simple template with similar string
+interpolation using the ``%`` operator and the new format string
+syntax using ``str.format()``.
+
+.. literalinclude:: string_template.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+In the first two cases, the trigger character (``$`` or ``%``) is
+escaped by repeating it twice. For the format syntax, both ``{`` and
+``}`` need to be escaped by repeating them.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_template.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_template.py
+
+ TEMPLATE:
+ Variable : foo
+ Escape : $
+ Variable in text: fooiable
+
+ INTERPOLATION:
+ Variable : foo
+ Escape : %
+ Variable in text: fooiable
+
+ FORMAT:
+ Variable : foo
+ Escape : {}
+ Variable in text: fooiable
+
+
+.. {{{end}}}
+
+One key difference between templates and string interpolation or
+formatting is that the type of the arguments is not taken into
+account. The values are converted to strings, and the strings are
+inserted into the result. No formatting options are available. For
+example, there is no way to control the number of digits used to
+represent a floating-point value.
+
+A benefit, though, is that use of the ``safe_substitute()``
+method makes it possible to avoid exceptions if not all of the values
+needed by the template are provided as arguments.
+
+.. literalinclude:: string_template_missing.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Since there is no value for ``missing`` in the values dictionary, a
+``KeyError`` is raised by ``substitute()``. Instead of
+raising the error, ``safe_substitute()`` catches it and leaves the
+variable expression alone in the text.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_template_missing.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_template_missing.py
+
+ ERROR: 'missing'
+ safe_substitute(): foo is here but $missing is not provided
+
+.. {{{end}}}
+
+Advanced Templates
+==================
+
+The default syntax for ``string.Template`` can be changed by
+adjusting the regular expression patterns it uses to find the variable
+names in the template body. A simple way to do that is to change the
+:attr:`delimiter` and :attr:`idpattern` class attributes.
+
+.. literalinclude:: string_template_advanced.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+In this example, the substitution rules are changed so that the
+delimiter is ``%`` instead of ``$`` and variable names must include an
+underscore somewhere in the middle. The pattern ``%notunderscored``
+is not replaced by anything, because it does not include an underscore
+character.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_template_advanced.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_template_advanced.py
+
+ Modified ID pattern:
+
+ Delimiter : %
+ Replaced : replaced
+ Ignored : %notunderscored
+
+
+.. {{{end}}}
+
+For even more complex changes, it is possible to override the :attr:`pattern` attribute and
+define an entirely new regular expression. The pattern provided must
+contain four named groups for capturing the escaped delimiter, the
+named variable, a braced version of the variable name, and invalid
+delimiter patterns.
+
+.. literalinclude:: string_template_defaultpattern.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The value of ``t.pattern`` is a compiled regular expression, but the
+original string is available via its :attr:`pattern` attribute.
+
+.. this output was edited for clarity and to make it fit on the page
+
+.. code-block:: none
+
+ \$(?:
+ (?P\$) | # two delimiters
+ (?P[_a-z][_a-z0-9]*) | # identifier
+ {(?P[_a-z][_a-z0-9]*)} | # braced identifier
+ (?P) # ill-formed delimiter exprs
+ )
+
+This example defines a new pattern to create a new type of template,
+using ``{{var}}`` as the variable syntax.
+
+.. literalinclude:: string_template_newsyntax.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+Both the :attr:`named` and :attr:`braced` patterns must be provided
+separately, even though they are the same. Running the sample program
+generates the following output:
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_template_newsyntax.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_template_newsyntax.py
+
+ MATCHES: [('{{', '', '', ''), ('', 'var', '', '')]
+ SUBSTITUTED:
+ {{
+ replacement
+
+
+.. {{{end}}}
+
+Formatter
+=========
+
+The ``Formatter`` class implements the same layout specification
+language as the ``format()`` method of ``str``. Its features
+include type coersion, alignment, attribute and field references,
+named and positional template arguments, and type-specific formatting
+options. Most of the time the ``format()`` method is a more
+convenient interface to these features, but ``Formatter`` is
+provided as a way to build subclasses, for cases where variations are
+needed.
+
+Constants
+=========
+
+The ``string`` module includes a number of constants related to
+ASCII and numerical character sets.
+
+.. literalinclude:: string_constants.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+These constants are useful when working with ASCII data, but since it
+is increasingly common to encounter non-ASCII text in some form of
+Unicode, their application is limited.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'string_constants.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 string_constants.py
+
+ ascii_letters='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW
+ XYZ'
+
+ ascii_lowercase='abcdefghijklmnopqrstuvwxyz'
+
+ ascii_uppercase='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+
+ digits='0123456789'
+
+ hexdigits='0123456789abcdefABCDEF'
+
+ octdigits='01234567'
+
+ printable='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ
+ RSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
+
+ punctuation='!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
+
+ whitespace=' \t\n\r\x0b\x0c'
+
+
+.. {{{end}}}
+
+
+
+.. seealso::
+
+ * :pydoc:`string`
+
+ * `String Methods
+ `_
+ -- Methods of ``str`` objects that replace the deprecated
+ functions in ``string``.
+
+ * :pep:`292` -- Simpler String Substitutions
+
+ * `Format String Syntax
+ `__
+ -- The formal definition of the layout specification language
+ used by ``Formatter`` and ``str.format()``.
diff --git a/python3_libraries/string/string_capwords.py b/python3_libraries/string/string_capwords.py
new file mode 100644
index 0000000..0022793
--- /dev/null
+++ b/python3_libraries/string/string_capwords.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import string
+
+s = 'The quick brown fox jumped over the lazy dog.'
+
+print(s)
+print(string.capwords(s))
diff --git a/python3_libraries/string/string_constants.py b/python3_libraries/string/string_constants.py
new file mode 100644
index 0000000..2d62403
--- /dev/null
+++ b/python3_libraries/string/string_constants.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import inspect
+import string
+
+
+def is_str(value):
+ return isinstance(value, str)
+
+
+for name, value in inspect.getmembers(string, is_str):
+ if name.startswith('_'):
+ continue
+ print('%s=%r\n' % (name, value))
diff --git a/python3_libraries/string/string_template.py b/python3_libraries/string/string_template.py
new file mode 100644
index 0000000..c5bb7bb
--- /dev/null
+++ b/python3_libraries/string/string_template.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import string
+
+values = {'var': 'foo'}
+
+t = string.Template("""
+Variable : $var
+Escape : $$
+Variable in text: ${var}iable
+""")
+
+print('TEMPLATE:', t.substitute(values))
+
+s = """
+Variable : %(var)s
+Escape : %%
+Variable in text: %(var)siable
+"""
+
+print('INTERPOLATION:', s % values)
+
+s = """
+Variable : {var}
+Escape : {{}}
+Variable in text: {var}iable
+"""
+
+print('FORMAT:', s.format(**values))
diff --git a/python3_libraries/string/string_template_advanced.py b/python3_libraries/string/string_template_advanced.py
new file mode 100644
index 0000000..05ea0b0
--- /dev/null
+++ b/python3_libraries/string/string_template_advanced.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import string
+
+
+class MyTemplate(string.Template):
+ delimiter = '%'
+ idpattern = '[a-z]+_[a-z]+'
+
+
+template_text = '''
+ Delimiter : %%
+ Replaced : %with_underscore
+ Ignored : %notunderscored
+'''
+
+d = {
+ 'with_underscore': 'replaced',
+ 'notunderscored': 'not replaced',
+}
+
+t = MyTemplate(template_text)
+print('Modified ID pattern:')
+print(t.safe_substitute(d))
diff --git a/python3_libraries/string/string_template_defaultpattern.py b/python3_libraries/string/string_template_defaultpattern.py
new file mode 100644
index 0000000..2014a46
--- /dev/null
+++ b/python3_libraries/string/string_template_defaultpattern.py
@@ -0,0 +1,13 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import string
+
+t = string.Template('$var')
+print(t.pattern.pattern)
diff --git a/python3_libraries/string/string_template_missing.py b/python3_libraries/string/string_template_missing.py
new file mode 100644
index 0000000..4cbc3a7
--- /dev/null
+++ b/python3_libraries/string/string_template_missing.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import string
+
+values = {'var': 'foo'}
+
+t = string.Template("$var is here but $missing is not provided")
+
+try:
+ print('substitute() :', t.substitute(values))
+except KeyError as err:
+ print('ERROR:', str(err))
+
+print('safe_substitute():', t.safe_substitute(values))
diff --git a/python3_libraries/string/string_template_newsyntax.py b/python3_libraries/string/string_template_newsyntax.py
new file mode 100644
index 0000000..f43d1ee
--- /dev/null
+++ b/python3_libraries/string/string_template_newsyntax.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import re
+import string
+
+
+class MyTemplate(string.Template):
+ delimiter = '{{'
+ pattern = r'''
+ \{\{(?:
+ (?P\{\{)|
+ (?P[_a-z][_a-z0-9]*)\}\}|
+ (?P[_a-z][_a-z0-9]*)\}\}|
+ (?P)
+ )
+ '''
+
+
+t = MyTemplate('''
+{{{{
+{{var}}
+''')
+
+print('MATCHES:', t.pattern.findall(t.template))
+print('SUBSTITUTED:', t.safe_substitute(var='replacement'))
diff --git a/python3_libraries/time/index.rst b/python3_libraries/time/index.rst
new file mode 100644
index 0000000..715985d
--- /dev/null
+++ b/python3_libraries/time/index.rst
@@ -0,0 +1,445 @@
+====================
+ time --- Clock Time
+====================
+
+.. module:: time
+ :synopsis: Clock time
+
+:Purpose: Functions for manipulating clock time.
+
+The ``time`` module provides access to several different types of
+clocks, each useful for different purposes. The standard system calls
+like ``time()`` report the system "wall clock" time. The
+``monotonic()`` clock can be used to measure elapsed time in a
+long-running process because it is guaranteed never to move backwards,
+even if the system time is changed. For performance testing,
+``perf_counter()`` provides access to the clock with the highest
+available resolution to make short time measurements more
+accurate. The CPU time is available through ``clock()``, and
+``process_time()`` returns the combined processor time and system
+time.
+
+.. note::
+
+ The implementations expose C library functions for manipulating
+ dates and times. Since they are tied to the underlying C
+ implementation, some details (such as the start of the epoch and
+ maximum date value supported) are platform-specific. Refer to the
+ library documentation for complete details.
+
+Comparing Clocks
+================
+
+Implementation details for the clocks varies by platform. Use
+``get_clock_info()`` to access basic information about the current
+implementation, including the clock's resolution.
+
+.. literalinclude:: time_get_clock_info.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+This output for Mac OS X shows that the monotonic and perf_counter
+clocks are implemented using the same underlying system call.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_get_clock_info.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_get_clock_info.py
+
+ clock:
+ adjustable : False
+ implementation: clock()
+ monotonic : True
+ resolution : 1e-06
+ current : 0.046796
+
+ monotonic:
+ adjustable : False
+ implementation: mach_absolute_time()
+ monotonic : True
+ resolution : 1e-09
+ current : 716028.526210432
+
+ perf_counter:
+ adjustable : False
+ implementation: mach_absolute_time()
+ monotonic : True
+ resolution : 1e-09
+ current : 716028.526241605
+
+ process_time:
+ adjustable : False
+ implementation: getrusage(RUSAGE_SELF)
+ monotonic : True
+ resolution : 1e-06
+ current : 0.046946999999999996
+
+ time:
+ adjustable : True
+ implementation: gettimeofday()
+ monotonic : False
+ resolution : 1e-06
+ current : 1521404584.966362
+
+
+.. {{{end}}}
+
+Wall Clock Time
+===============
+
+One of the core functions of the ``time`` module is ``time()``,
+which returns the number of seconds since the start of the "epoch" as
+a floating point value.
+
+.. literalinclude:: time_time.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The epoch is the start of measurement for time, which for Unix systems
+is 0:00 on January 1, 1970. Although the value is always a float,
+actual precision is platform-dependent.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_time.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_time.py
+
+ The time is: 1521404585.0243158
+
+.. {{{end}}}
+
+The float representation is useful when storing or comparing dates,
+but not as useful for producing human readable representations. For
+logging or printing time ``ctime()`` can be more useful.
+
+.. literalinclude:: time_ctime.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The second ``print()`` call in this example shows how to use
+``ctime()`` to format a time value other than the current time.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_ctime.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_ctime.py
+
+ The time is : Sun Mar 18 16:23:05 2018
+ 15 secs from now : Sun Mar 18 16:23:20 2018
+
+.. {{{end}}}
+
+.. _time-monotonic:
+
+Monotonic Clocks
+================
+
+Because ``time()`` looks at the system clock, and the system clock
+can be changed by the user or system services for synchronizing clocks
+across multiple computers, calling ``time()`` repeatedly may produce
+values that go forwards and backwards. This can result in unexpected
+behavior when trying to measure durations or otherwise use those times
+for computation. Avoid those situations by using ``monotonic()``,
+which always returns values that go forward.
+
+.. literalinclude:: time_monotonic.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The start point for the monotonic clock is not defined, so return
+values are only useful for doing calculations with other clock
+values. In this example the duration of the sleep is measured using
+``monotonic()``.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_monotonic.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_monotonic.py
+
+ start : 716028.72
+ end : 716028.82
+ span : 0.10
+
+.. {{{end}}}
+
+Processor Clock Time
+====================
+
+While ``time()`` returns a wall clock time, ``clock()`` returns
+processor clock time. The values returned from ``clock()`` reflect
+the actual time used by the program as it runs.
+
+.. literalinclude:: time_clock.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+In this example, the formatted ``ctime()`` is printed along with
+the floating point values from ``time()``, and ``clock()`` for
+each iteration through the loop.
+
+.. note::
+
+ If you want to run the example on your system, you may have to add
+ more cycles to the inner loop or work with a larger amount of data
+ to actually see a difference in the times.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_clock.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_clock.py
+
+ Sun Mar 18 16:23:05 2018 : 1521404585.328 0.051
+ Sun Mar 18 16:23:05 2018 : 1521404585.632 0.349
+ Sun Mar 18 16:23:05 2018 : 1521404585.935 0.648
+ Sun Mar 18 16:23:06 2018 : 1521404586.234 0.943
+ Sun Mar 18 16:23:06 2018 : 1521404586.539 1.244
+
+.. {{{end}}}
+
+Typically, the processor clock does not tick if a program is not doing
+anything.
+
+.. literalinclude:: time_clock_sleep.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+In this example, the loop does very little work by going to sleep
+after each iteration. The ``time()`` value increases even while
+the application is asleep, but the ``clock()`` value does not.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, '-u time_clock_sleep.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 -u time_clock_sleep.py
+
+ Sun Mar 18 16:23:06 2018 - 1521404586.89 - 0.04
+ Sleeping 3
+ Sun Mar 18 16:23:09 2018 - 1521404589.90 - 0.04
+ Sleeping 2
+ Sun Mar 18 16:23:11 2018 - 1521404591.90 - 0.04
+ Sleeping 1
+ Sun Mar 18 16:23:12 2018 - 1521404592.90 - 0.04
+
+.. {{{end}}}
+
+Calling ``sleep()`` yields control from the current thread and
+asks it to wait for the system to wake it back up. If a program has
+only one thread, this effectively blocks the app and it does no work.
+
+Performance Counter
+===================
+
+It is important to have a high-resolution monotonic clock for
+measuring performance. Determining the best clock data source requires
+platform-specific knowledge, which Python provides in
+``perf_counter()``.
+
+.. literalinclude:: time_perf_counter.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+As with ``monotonic()``, the epoch for ``perf_counter()`` is
+undefined, and the values are meant to be used for comparing and
+computing values, not as absolute times.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_perf_counter.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_perf_counter.py
+
+ Sun Mar 18 16:23:13 2018 : 0.378 0.378
+ Sun Mar 18 16:23:13 2018 : 0.376 0.754
+ Sun Mar 18 16:23:14 2018 : 0.372 1.126
+ Sun Mar 18 16:23:14 2018 : 0.376 1.502
+ Sun Mar 18 16:23:14 2018 : 0.376 1.879
+
+.. {{{end}}}
+
+Time Components
+===============
+
+Storing times as elapsed seconds is useful in some situations, but
+there are times when a program needs to have access to the individual
+fields of a date (year, month, etc.). The ``time`` module defines
+``struct_time`` for holding date and time values with components
+broken out so they are easy to access. There are several functions
+that work with ``struct_time`` values instead of floats.
+
+.. literalinclude:: time_struct.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The ``gmtime()`` function returns the current time in
+UTC. ``localtime()`` returns the current time with the current
+time zone applied. ``mktime()`` takes a ``struct_time`` and
+converts it to the floating point representation.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_struct.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_struct.py
+
+ gmtime:
+ tm_year : 2018
+ tm_mon : 3
+ tm_mday : 18
+ tm_hour : 20
+ tm_min : 23
+ tm_sec : 14
+ tm_wday : 6
+ tm_yday : 77
+ tm_isdst: 0
+
+ localtime:
+ tm_year : 2018
+ tm_mon : 3
+ tm_mday : 18
+ tm_hour : 16
+ tm_min : 23
+ tm_sec : 14
+ tm_wday : 6
+ tm_yday : 77
+ tm_isdst: 1
+
+ mktime: 1521404594.0
+
+.. {{{end}}}
+
+
+
+Working with Time Zones
+=======================
+
+The functions for determining the current time depend on having the
+time zone set, either by the program or by using a default time zone
+set for the system. Changing the time zone does not change the actual
+time, just the way it is represented.
+
+To change the time zone, set the environment variable ``TZ``, then
+call ``tzset()``. The time zone can be specified with a lot of
+detail, right down to the start and stop times for daylight savings
+time. It is usually easier to use the time zone name and let the
+underlying libraries derive the other information, though.
+
+This example program changes the time zone to a few different values
+and shows how the changes affect other settings in the time module.
+
+.. literalinclude:: time_timezone.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The default time zone on the system used to prepare the examples is
+US/Eastern. The other zones in the example change the tzname, daylight
+flag, and timezone offset value.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_timezone.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_timezone.py
+
+ Default :
+ TZ : (not set)
+ tzname: ('EST', 'EDT')
+ Zone : 18000 (5.0)
+ DST : 1
+ Time : Sun Mar 18 16:23:14 2018
+
+ GMT :
+ TZ : GMT
+ tzname: ('GMT', 'GMT')
+ Zone : 0 (0.0)
+ DST : 0
+ Time : Sun Mar 18 20:23:14 2018
+
+ Europe/Amsterdam :
+ TZ : Europe/Amsterdam
+ tzname: ('CET', 'CEST')
+ Zone : -3600 (-1.0)
+ DST : 1
+ Time : Sun Mar 18 21:23:14 2018
+
+
+.. {{{end}}}
+
+Parsing and Formatting Times
+============================
+
+The two functions ``strptime()`` and ``strftime()`` convert
+between ``struct_time`` and string representations of time
+values. There is a long list of formatting instructions available to
+support input and output in different styles. The complete list is
+documented in the library documentation for the ``time`` module.
+
+This example converts the current time from a string to a
+``struct_time`` instance and back to a string.
+
+.. literalinclude:: time_strptime.py
+ :caption:
+ :start-after: #end_pymotw_header
+
+The output string is not exactly like the input, since the day of the
+month is prefixed with a zero.
+
+.. {{{cog
+.. cog.out(run_script(cog.inFile, 'time_strptime.py'))
+.. }}}
+
+.. code-block:: none
+
+ $ python3 time_strptime.py
+
+ Now: Mon Jan 2 16:17:27 2017
+
+ Parsed:
+ tm_year : 2017
+ tm_mon : 1
+ tm_mday : 2
+ tm_hour : 16
+ tm_min : 17
+ tm_sec : 27
+ tm_wday : 0
+ tm_yday : 2
+ tm_isdst: -1
+
+ Formatted: Mon Jan 02 16:17:27 2017
+
+.. {{{end}}}
+
+.. seealso::
+
+ * :pydoc:`time`
+
+ * :ref:`Python 2 to 3 porting notes for time `
+
+ * :mod:`datetime` -- The ``datetime`` module includes other classes
+ for doing calculations with dates and times.
+
+ * :mod:`calendar` -- Work with higher-level date functions to
+ produce calendars or calculate recurring events.
diff --git a/python3_libraries/time/time_clock.py b/python3_libraries/time/time_clock.py
new file mode 100644
index 0000000..5d37b74
--- /dev/null
+++ b/python3_libraries/time/time_clock.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""The difference between clock and time.
+"""
+
+#end_pymotw_header
+import hashlib
+import time
+
+# Data to use to calculate md5 checksums
+data = open(__file__, 'rb').read()
+
+for i in range(5):
+ h = hashlib.sha1()
+ print(time.ctime(), ': {:0.3f} {:0.3f}'.format(
+ time.time(), time.clock()))
+ for i in range(300000):
+ h.update(data)
+ cksum = h.digest()
diff --git a/python3_libraries/time/time_clock_sleep.py b/python3_libraries/time/time_clock_sleep.py
new file mode 100644
index 0000000..3f5cd67
--- /dev/null
+++ b/python3_libraries/time/time_clock_sleep.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+
+template = '{} - {:0.2f} - {:0.2f}'
+
+print(template.format(
+ time.ctime(), time.time(), time.clock())
+)
+
+for i in range(3, 0, -1):
+ print('Sleeping', i)
+ time.sleep(i)
+ print(template.format(
+ time.ctime(), time.time(), time.clock())
+ )
diff --git a/python3_libraries/time/time_ctime.py b/python3_libraries/time/time_ctime.py
new file mode 100644
index 0000000..3d50a85
--- /dev/null
+++ b/python3_libraries/time/time_ctime.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+
+print('The time is :', time.ctime())
+later = time.time() + 15
+print('15 secs from now :', time.ctime(later))
diff --git a/python3_libraries/time/time_get_clock_info.py b/python3_libraries/time/time_get_clock_info.py
new file mode 100644
index 0000000..eaadead
--- /dev/null
+++ b/python3_libraries/time/time_get_clock_info.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+"""The difference between clock and time.
+"""
+
+#end_pymotw_header
+import textwrap
+import time
+
+available_clocks = [
+ ('clock', time.clock),
+ ('monotonic', time.monotonic),
+ ('perf_counter', time.perf_counter),
+ ('process_time', time.process_time),
+ ('time', time.time),
+]
+
+for clock_name, func in available_clocks:
+ print(textwrap.dedent('''\
+ {name}:
+ adjustable : {info.adjustable}
+ implementation: {info.implementation}
+ monotonic : {info.monotonic}
+ resolution : {info.resolution}
+ current : {current}
+ ''').format(
+ name=clock_name,
+ info=time.get_clock_info(clock_name),
+ current=func())
+ )
diff --git a/python3_libraries/time/time_monotonic.py b/python3_libraries/time/time_monotonic.py
new file mode 100644
index 0000000..7121c48
--- /dev/null
+++ b/python3_libraries/time/time_monotonic.py
@@ -0,0 +1,17 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""The difference between monotonic and time.
+"""
+
+#end_pymotw_header
+import time
+
+start = time.monotonic()
+time.sleep(0.1)
+end = time.monotonic()
+print('start : {:>9.2f}'.format(start))
+print('end : {:>9.2f}'.format(end))
+print('span : {:>9.2f}'.format(end - start))
diff --git a/python3_libraries/time/time_perf_counter.py b/python3_libraries/time/time_perf_counter.py
new file mode 100644
index 0000000..3368014
--- /dev/null
+++ b/python3_libraries/time/time_perf_counter.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""Using perf_counter for timing
+"""
+
+#end_pymotw_header
+import hashlib
+import time
+
+# Data to use to calculate md5 checksums
+data = open(__file__, 'rb').read()
+
+loop_start = time.perf_counter()
+
+for i in range(5):
+ iter_start = time.perf_counter()
+ h = hashlib.sha1()
+ for i in range(300000):
+ h.update(data)
+ cksum = h.digest()
+ now = time.perf_counter()
+ loop_elapsed = now - loop_start
+ iter_elapsed = now - iter_start
+ print(time.ctime(), ': {:0.3f} {:0.3f}'.format(
+ iter_elapsed, loop_elapsed))
diff --git a/python3_libraries/time/time_strptime.py b/python3_libraries/time/time_strptime.py
new file mode 100644
index 0000000..a29c98d
--- /dev/null
+++ b/python3_libraries/time/time_strptime.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+
+
+def show_struct(s):
+ print(' tm_year :', s.tm_year)
+ print(' tm_mon :', s.tm_mon)
+ print(' tm_mday :', s.tm_mday)
+ print(' tm_hour :', s.tm_hour)
+ print(' tm_min :', s.tm_min)
+ print(' tm_sec :', s.tm_sec)
+ print(' tm_wday :', s.tm_wday)
+ print(' tm_yday :', s.tm_yday)
+ print(' tm_isdst:', s.tm_isdst)
+
+
+now = time.ctime(1483391847.433716)
+print('Now:', now)
+
+parsed = time.strptime(now)
+print('\nParsed:')
+show_struct(parsed)
+
+print('\nFormatted:',
+ time.strftime("%a %b %d %H:%M:%S %Y", parsed))
diff --git a/python3_libraries/time/time_struct.py b/python3_libraries/time/time_struct.py
new file mode 100644
index 0000000..71c7655
--- /dev/null
+++ b/python3_libraries/time/time_struct.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+
+
+def show_struct(s):
+ print(' tm_year :', s.tm_year)
+ print(' tm_mon :', s.tm_mon)
+ print(' tm_mday :', s.tm_mday)
+ print(' tm_hour :', s.tm_hour)
+ print(' tm_min :', s.tm_min)
+ print(' tm_sec :', s.tm_sec)
+ print(' tm_wday :', s.tm_wday)
+ print(' tm_yday :', s.tm_yday)
+ print(' tm_isdst:', s.tm_isdst)
+
+
+print('gmtime:')
+show_struct(time.gmtime())
+print('\nlocaltime:')
+show_struct(time.localtime())
+print('\nmktime:', time.mktime(time.localtime()))
diff --git a/python3_libraries/time/time_time.py b/python3_libraries/time/time_time.py
new file mode 100644
index 0000000..9775ed3
--- /dev/null
+++ b/python3_libraries/time/time_time.py
@@ -0,0 +1,12 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+
+print('The time is:', time.time())
diff --git a/python3_libraries/time/time_timezone.py b/python3_libraries/time/time_timezone.py
new file mode 100644
index 0000000..8cfde21
--- /dev/null
+++ b/python3_libraries/time/time_timezone.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+#
+# Copyright (c) 2008 Doug Hellmann All rights reserved.
+#
+"""
+"""
+
+#end_pymotw_header
+import time
+import os
+
+
+def show_zone_info():
+ print(' TZ :', os.environ.get('TZ', '(not set)'))
+ print(' tzname:', time.tzname)
+ print(' Zone : {} ({})'.format(
+ time.timezone, (time.timezone / 3600)))
+ print(' DST :', time.daylight)
+ print(' Time :', time.ctime())
+ print()
+
+
+print('Default :')
+show_zone_info()
+
+ZONES = [
+ 'GMT',
+ 'Europe/Amsterdam',
+]
+
+for zone in ZONES:
+ os.environ['TZ'] = zone
+ time.tzset()
+ print(zone, ':')
+ show_zone_info()
diff --git a/python_crash_tutorial/Ch1/bounce.py b/python_crash_tutorial/Ch1/bounce.py
new file mode 100755
index 0000000..ccfdf04
--- /dev/null
+++ b/python_crash_tutorial/Ch1/bounce.py
@@ -0,0 +1,20 @@
+# bounce.py
+# Bounce the turtle.
+
+from turtle import *
+
+def move(distance):
+ """Move forward, reversing direction at right side."""
+ forward(distance)
+ if xcor() > 320:
+ setheading(180)
+
+def main():
+ shape("circle")
+ penup()
+ speed(0)
+ for _ in range(100):
+ move(10)
+ exitonclick()
+
+main()
diff --git a/python_crash_tutorial/Ch1/mycircle.py b/python_crash_tutorial/Ch1/mycircle.py
new file mode 100755
index 0000000..c09961a
--- /dev/null
+++ b/python_crash_tutorial/Ch1/mycircle.py
@@ -0,0 +1,12 @@
+# mycircle.py
+# Mimic circle() with adaptive radius.
+
+def mycircle(radius):
+ """Draw circle as polygon."""
+ if radius < 20:
+ sides = 10
+ elif radius < 100:
+ sides = 30
+ else:
+ sides = 50
+ polygon(sides, 6.28*radius/sides)
diff --git a/python_crash_tutorial/Ch1/randomwalk.py b/python_crash_tutorial/Ch1/randomwalk.py
new file mode 100755
index 0000000..c2b4247
--- /dev/null
+++ b/python_crash_tutorial/Ch1/randomwalk.py
@@ -0,0 +1,18 @@
+# randomwalk.py
+# Draw path of a random walk.
+
+from turtle import *
+from random import randrange
+
+def random_move(distance):
+ """Take random step on a grid."""
+ left(randrange(0, 360, 90))
+ forward(distance)
+
+def main():
+ speed(0)
+ while abs(xcor()) < 200 and abs(ycor()) < 200:
+ random_move(10)
+ exitonclick()
+
+main()
diff --git a/python_crash_tutorial/Ch1/test.py b/python_crash_tutorial/Ch1/test.py
new file mode 100755
index 0000000..31cf9e1
--- /dev/null
+++ b/python_crash_tutorial/Ch1/test.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# qq群:630011153
+# CreateDate: 2018-6-07
+# square.py
+# Draw a square
+
+from turtle import *
+
+penup()
+forward(100)
+left(90)
+forward(50)
+dot()
+back(100)
+right(90)
+pendown()
+circle(100)
+
+exitonclick()
+
diff --git a/python_crash_tutorial/Ch2/.DS_Store b/python_crash_tutorial/Ch2/.DS_Store
new file mode 100755
index 0000000..5008ddf
Binary files /dev/null and b/python_crash_tutorial/Ch2/.DS_Store differ
diff --git a/python_crash_tutorial/Ch2/balance_accum.py b/python_crash_tutorial/Ch2/balance_accum.py
new file mode 100755
index 0000000..7bac578
--- /dev/null
+++ b/python_crash_tutorial/Ch2/balance_accum.py
@@ -0,0 +1,20 @@
+# balance_accum.py
+# Print table of compound interest values over time.
+
+def balance_accum(principal, rate, years):
+ """Return balance with accumulated compound interest."""
+ balance = principal
+ for _ in range(years):
+ interest = balance * rate
+ balance += interest
+ return balance
+
+def main():
+ print("Calculates compound interest over time.")
+ principal = float(input("Principal: "))
+ rate = float(input("Interest rate (as a decimal): "))
+ years = int(input("Number of years: "))
+ for year in range(years + 1):
+ print(year, balance_accum(principal, rate, year))
+
+main()
diff --git a/python_crash_tutorial/Ch2/balance_table.py b/python_crash_tutorial/Ch2/balance_table.py
new file mode 100755
index 0000000..b8e0b00
--- /dev/null
+++ b/python_crash_tutorial/Ch2/balance_table.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-12
+# balance_table.py
+# Print table of account balances earning interest.
+
+def balance(p, r, t):
+ """Return new balance using compound annual interest."""
+ return p*(1 + r)**t
+
+def main():
+ print("Calculates compound interest over time.")
+ principal = float(input("Principal: "))
+ rate = float(input("Interest rate (as a decimal): "))
+ years = int(input("Number of years: "))
+ for year in range(years + 1):
+ print(year, balance(principal, rate, year))
+
+main()
diff --git a/python_crash_tutorial/Ch2/evens.py b/python_crash_tutorial/Ch2/evens.py
new file mode 100755
index 0000000..c32daa1
--- /dev/null
+++ b/python_crash_tutorial/Ch2/evens.py
@@ -0,0 +1,10 @@
+# evens.py
+# Find even values in a list of numbers.
+
+def evens(items):
+ """Return list of even values in items."""
+ result = []
+ for item in items:
+ if item % 2 == 0:
+ result += [item]
+ return result
diff --git a/python_crash_tutorial/Ch2/evens_comp.py b/python_crash_tutorial/Ch2/evens_comp.py
new file mode 100755
index 0000000..f42e767
--- /dev/null
+++ b/python_crash_tutorial/Ch2/evens_comp.py
@@ -0,0 +1,6 @@
+# evens_comp.py
+# Find even values in a list of numbers using list comprehension
+
+def evens(items):
+ """Return list of even values in items."""
+ return [item for item in items if item % 2 == 0]
diff --git a/python_crash_tutorial/Ch2/find.py b/python_crash_tutorial/Ch2/find.py
new file mode 100755
index 0000000..338952a
--- /dev/null
+++ b/python_crash_tutorial/Ch2/find.py
@@ -0,0 +1,9 @@
+# find.py
+# Find an item in a list
+
+def find(target, items):
+ """Return first index of target in items or -1."""
+ for i in range(len(items)):
+ if target == items[i]:
+ return i
+ return -1
diff --git a/python_crash_tutorial/Ch2/guess.py b/python_crash_tutorial/Ch2/guess.py
new file mode 100755
index 0000000..e4165b4
--- /dev/null
+++ b/python_crash_tutorial/Ch2/guess.py
@@ -0,0 +1,16 @@
+# guess.py
+# User guesses a random number.
+
+from random import randint
+
+def userguess(secret):
+ """Ask user for guesses until matching secret."""
+ guess = int(input("Your guess? "))
+ while guess != secret:
+ guess = int(input("Your guess? "))
+
+def main():
+ secret = randint(1, 10)
+ userguess(secret)
+
+main()
diff --git a/python_crash_tutorial/Ch2/loop.py b/python_crash_tutorial/Ch2/loop.py
new file mode 100755
index 0000000..4330e0a
--- /dev/null
+++ b/python_crash_tutorial/Ch2/loop.py
@@ -0,0 +1,10 @@
+# loop.py
+# A subtle accumulation loop.
+
+def main():
+ x = 0
+ while x != 1:
+ print(x)
+ x += 0.1
+
+main()
diff --git a/python_crash_tutorial/Ch2/mymax2.py b/python_crash_tutorial/Ch2/mymax2.py
new file mode 100755
index 0000000..a71248f
--- /dev/null
+++ b/python_crash_tutorial/Ch2/mymax2.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-12
+# mymax2.py
+# Write max function without built-in max().
+
+def mymax2(x, y):
+ """Return larger of x and y."""
+ largest_so_far = x
+ if y > largest_so_far:
+ largest_so_far = y
+ return largest_so_far
+
+def main():
+ print("MyMax: Enter two values to find the larger.")
+ first = float(input("First value: "))
+ second = float(input("Second value: "))
+ print("The larger value is", mymax2(first, second))
+
+main()
diff --git a/python_crash_tutorial/Ch2/mymin.py b/python_crash_tutorial/Ch2/mymin.py
new file mode 100755
index 0000000..395dd15
--- /dev/null
+++ b/python_crash_tutorial/Ch2/mymin.py
@@ -0,0 +1,10 @@
+# mymin.py
+# Find smallest element of a list
+
+def mymin(items):
+ """Return smallest element in items."""
+ smallest = items[0]
+ for item in items[1:]:
+ if item < smallest:
+ smallest = item
+ return smallest
diff --git a/python_crash_tutorial/Ch2/mysum.py b/python_crash_tutorial/Ch2/mysum.py
new file mode 100755
index 0000000..881c2e4
--- /dev/null
+++ b/python_crash_tutorial/Ch2/mysum.py
@@ -0,0 +1,14 @@
+# mysum.py
+
+def mysum(items):
+ """Return sum of values in items."""
+ total = 0
+ for item in items:
+ total += item
+ return total
+
+def main():
+ data = [4, 9, 2, 8, 3, 2, 5, 4, 2]
+ print("My sum of", data, "is", mysum(data))
+
+main()
diff --git a/python_crash_tutorial/Ch2/savings_goal.py b/python_crash_tutorial/Ch2/savings_goal.py
new file mode 100755
index 0000000..f7be530
--- /dev/null
+++ b/python_crash_tutorial/Ch2/savings_goal.py
@@ -0,0 +1,22 @@
+# savings_goal.py
+# Use accum to determine number of years until goal.
+
+def years_to_goal(principal, rate, goal):
+ """Return number of years to reach savings goal."""
+ balance = principal
+ years = 0
+ while balance < goal:
+ interest = balance * rate
+ balance += interest
+ years += 1
+ return years
+
+def main():
+ print("Calculates number of years to reach goal.")
+ principal = float(input("Principal: "))
+ rate = float(input("Interest rate (as a decimal): "))
+ goal = float(input("Desired balance: "))
+ print("The goal is reached in",
+ years_to_goal(principal, rate, goal), "years.")
+
+main()
diff --git a/python_crash_tutorial/Ch3/.DS_Store b/python_crash_tutorial/Ch3/.DS_Store
new file mode 100755
index 0000000..5008ddf
Binary files /dev/null and b/python_crash_tutorial/Ch3/.DS_Store differ
diff --git a/python_crash_tutorial/Ch3/balance_table_format.py b/python_crash_tutorial/Ch3/balance_table_format.py
new file mode 100755
index 0000000..f9c5a37
--- /dev/null
+++ b/python_crash_tutorial/Ch3/balance_table_format.py
@@ -0,0 +1,20 @@
+# balance_table_format.py
+# Print table of account balances earning interest.
+
+def balance(p, r, t):
+ """Return new balance using compound annual interest."""
+ return p*(1 + r)**t
+
+def main():
+ print("Calculates compound interest over time.")
+ principal = float(input("Principal: "))
+ rate = float(input("Interest rate (as a decimal): "))
+ years = int(input("Number of years: "))
+ for year in range(years + 1):
+ amt = balance(principal, rate, year)
+ print(year, amt)
+ for year in range(years + 1):
+ amt = balance(principal, rate, year)
+ print("{:3d} ${:>7.2f}".format(year, amt))
+
+main()
diff --git a/python_crash_tutorial/Ch3/conjugator.py b/python_crash_tutorial/Ch3/conjugator.py
new file mode 100755
index 0000000..89395cf
--- /dev/null
+++ b/python_crash_tutorial/Ch3/conjugator.py
@@ -0,0 +1,15 @@
+# conjugator.py
+
+def conjugate(verb):
+ """Return conjugation of regular -ar Spanish verbs."""
+ stem = verb[:-2]
+ return [stem + "o", stem + "as", stem + "a",
+ stem + "amos", stem + "áis", stem + "an"]
+
+def main():
+ verb = input("Enter an -ar verb: ")
+ print("Present indicative conjugation of " + verb + ":")
+ for form in conjugate(verb):
+ print(form)
+
+main()
diff --git a/python_crash_tutorial/Ch3/converter.py b/python_crash_tutorial/Ch3/converter.py
new file mode 100755
index 0000000..17f1740
--- /dev/null
+++ b/python_crash_tutorial/Ch3/converter.py
@@ -0,0 +1,10 @@
+def digit_to_int(digit):
+ """Return int corresponding to string digit."""
+ return ord(digit) - 48
+
+def decimal_to_int(digits):
+ """Return int corresponding to decimal string."""
+ result = 0
+ for digit in digits:
+ result = 10 * result + digit_to_int(digit)
+ return result
diff --git a/python_crash_tutorial/Ch3/dictionary.txt b/python_crash_tutorial/Ch3/dictionary.txt
new file mode 100755
index 0000000..2469219
--- /dev/null
+++ b/python_crash_tutorial/Ch3/dictionary.txt
@@ -0,0 +1,43849 @@
+a
+aardvark
+aback
+abacus
+abacuses
+abandon
+abandoned
+abandoning
+abandonment
+abandons
+abash
+abashed
+abashes
+abashing
+abate
+abated
+abates
+abating
+abbey
+abbeys
+abbot
+abbots
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+abdicate
+abdicated
+abdicates
+abdicating
+abdication
+abdications
+abdomen
+abdomens
+abdominal
+abduct
+abducted
+abducting
+abduction
+abductions
+abducts
+aberration
+aberrations
+abet
+abets
+abetted
+abetting
+abhor
+abhorred
+abhorrence
+abhorrent
+abhorring
+abhors
+abide
+abides
+abiding
+abilities
+ability
+abject
+ablaze
+able
+abler
+ablest
+ably
+abnormal
+abnormalities
+abnormality
+abnormally
+aboard
+abode
+abodes
+abolish
+abolished
+abolishes
+abolishing
+abolition
+abolitionist
+abolitionists
+abominable
+abomination
+aboriginal
+aboriginals
+aborigine
+aborigines
+abort
+aborted
+aborting
+abortion
+abortions
+abortive
+aborts
+abound
+abounded
+abounding
+abounds
+about
+above
+aboveboard
+abrasive
+abrasively
+abrasives
+abreast
+abridge
+abridged
+abridges
+abridging
+abridgment
+abridgments
+abroad
+abrupt
+abrupter
+abruptest
+abruptly
+abruptness
+abscess
+abscessed
+abscesses
+abscessing
+abscond
+absconded
+absconding
+absconds
+absence
+absences
+absent
+absented
+absentee
+absenteeism
+absentees
+absenting
+absently
+absents
+absolute
+absolutely
+absolutes
+absolutest
+absolve
+absolved
+absolves
+absolving
+absorb
+absorbed
+absorbent
+absorbents
+absorbing
+absorbs
+absorption
+abstain
+abstained
+abstaining
+abstains
+abstention
+abstentions
+abstinence
+abstinent
+abstract
+abstracted
+abstracting
+abstraction
+abstractions
+abstracts
+abstruse
+absurd
+absurder
+absurdest
+absurdities
+absurdity
+absurdly
+abundance
+abundances
+abundant
+abundantly
+abuse
+abused
+abuser
+abusers
+abuses
+abusing
+abusive
+abysmal
+abysmally
+abyss
+abysses
+academic
+academically
+academics
+academies
+academy
+accede
+acceded
+accedes
+acceding
+accelerate
+accelerated
+accelerates
+accelerating
+acceleration
+accelerations
+accelerator
+accelerators
+accent
+accented
+accenting
+accents
+accentuate
+accentuated
+accentuates
+accentuating
+accept
+acceptability
+acceptable
+acceptably
+acceptance
+acceptances
+accepted
+accepting
+accepts
+access
+accessed
+accesses
+accessibility
+accessible
+accessing
+accessories
+accessory
+accident
+accidental
+accidentally
+accidentals
+accidents
+acclaim
+acclaimed
+acclaiming
+acclaims
+acclimate
+acclimated
+acclimates
+acclimating
+acclimation
+acclimatize
+acclimatized
+acclimatizes
+acclimatizing
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodation
+accommodations
+accompanied
+accompanies
+accompaniment
+accompaniments
+accompanist
+accompanists
+accompany
+accompanying
+accomplice
+accomplices
+accomplish
+accomplished
+accomplishes
+accomplishing
+accomplishment
+accomplishments
+accord
+accordance
+accorded
+according
+accordingly
+accordion
+accordions
+accords
+accost
+accosted
+accosting
+accosts
+account
+accountability
+accountable
+accountancy
+accountant
+accountants
+accounted
+accounting
+accounts
+accredit
+accreditation
+accredited
+accrediting
+accredits
+accrue
+accrued
+accrues
+accruing
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accuracy
+accurate
+accurately
+accusation
+accusations
+accuse
+accused
+accuser
+accusers
+accuses
+accusing
+accusingly
+accustom
+accustomed
+accustoming
+accustoms
+ace
+aced
+acerbic
+aces
+ache
+ached
+aches
+achier
+achiest
+achievable
+achieve
+achieved
+achievement
+achievements
+achiever
+achievers
+achieves
+achieving
+aching
+achy
+acid
+acidic
+acidity
+acids
+acing
+acknowledge
+acknowledged
+acknowledges
+acknowledging
+acknowledgment
+acknowledgments
+acne
+acorn
+acorns
+acoustic
+acoustics
+acquaint
+acquaintance
+acquaintances
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiesces
+acquiescing
+acquire
+acquired
+acquires
+acquiring
+acquisition
+acquisitions
+acquit
+acquits
+acquittal
+acquittals
+acquitted
+acquitting
+acre
+acreage
+acreages
+acres
+acrid
+acrider
+acridest
+acrimonious
+acrimony
+acrobat
+acrobatic
+acrobatics
+acrobats
+acronym
+acronyms
+across
+acrylic
+acrylics
+act
+acted
+acting
+action
+actions
+activate
+activated
+activates
+activating
+activation
+active
+actively
+actives
+activism
+activist
+activists
+activities
+activity
+actor
+actors
+actress
+actresses
+acts
+actual
+actualities
+actuality
+actualization
+actually
+actuary
+acumen
+acupuncture
+acute
+acutely
+acuter
+acutes
+acutest
+ad
+adage
+adages
+adamant
+adamantly
+adapt
+adaptable
+adaptation
+adaptations
+adapted
+adapter
+adapters
+adapting
+adaptive
+adapts
+add
+added
+addendum
+addict
+addicted
+addicting
+addiction
+addictions
+addictive
+addicts
+adding
+addition
+additional
+additionally
+additions
+additive
+additives
+address
+addressed
+addressee
+addressees
+addresses
+addressing
+adds
+adept
+adeptly
+adepts
+adequacy
+adequate
+adequately
+adhere
+adhered
+adherence
+adherent
+adherents
+adheres
+adhering
+adhesion
+adhesive
+adhesives
+adjacent
+adjectival
+adjective
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjourn
+adjourned
+adjourning
+adjournment
+adjournments
+adjourns
+adjudicate
+adjudicated
+adjudicates
+adjudicating
+adjudicator
+adjudicators
+adjunct
+adjuncts
+adjust
+adjustable
+adjusted
+adjusting
+adjustment
+adjustments
+adjusts
+administer
+administered
+administering
+administers
+administration
+administrations
+administrative
+administrator
+administrators
+admirable
+admirably
+admiral
+admirals
+admiration
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admiringly
+admissible
+admission
+admissions
+admit
+admits
+admittance
+admitted
+admittedly
+admitting
+admonish
+admonished
+admonishes
+admonishing
+admonition
+admonitions
+ado
+adobe
+adobes
+adolescence
+adolescences
+adolescent
+adolescents
+adopt
+adopted
+adopting
+adoption
+adoptions
+adoptive
+adopts
+adorable
+adoration
+adore
+adored
+adores
+adoring
+adorn
+adorned
+adorning
+adornment
+adornments
+adorns
+adrenaline
+adrift
+adroit
+adroitly
+ads
+adulation
+adult
+adulterate
+adulterated
+adulterates
+adulterating
+adulteration
+adulteries
+adultery
+adulthood
+adults
+advance
+advanced
+advancement
+advancements
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantages
+advantaging
+advent
+advents
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuring
+adventurous
+adverb
+adverbial
+adverbials
+adverbs
+adversaries
+adversary
+adverse
+adversely
+adverser
+adversest
+adversities
+adversity
+advert
+advertise
+advertised
+advertisement
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+adverts
+advice
+advisable
+advise
+advised
+adviser
+advisers
+advises
+advising
+advisories
+advisory
+advocacy
+advocate
+advocated
+advocates
+advocating
+aerial
+aerials
+aerobic
+aerobics
+aerodynamic
+aerodynamics
+aerosol
+aerosols
+aerospace
+aesthetic
+aesthetically
+aesthetics
+afar
+affable
+affably
+affair
+affairs
+affect
+affectation
+affectations
+affected
+affecting
+affection
+affectionate
+affectionately
+affections
+affects
+affidavit
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affinities
+affinity
+affirm
+affirmation
+affirmations
+affirmative
+affirmatively
+affirmatives
+affirmed
+affirming
+affirms
+affix
+affixed
+affixes
+affixing
+afflict
+afflicted
+afflicting
+affliction
+afflictions
+afflicts
+affluence
+affluent
+afford
+affordable
+afforded
+affording
+affords
+affront
+affronted
+affronting
+affronts
+afield
+aflame
+afloat
+afoot
+aforementioned
+aforesaid
+afraid
+afresh
+after
+aftereffect
+aftereffects
+afterlife
+afterlives
+aftermath
+aftermaths
+afternoon
+afternoons
+aftershave
+aftershaves
+aftershock
+aftershocks
+afterthought
+afterthoughts
+afterward
+afterwards
+again
+against
+age
+aged
+agencies
+agency
+agenda
+agendas
+agent
+agents
+ages
+aggravate
+aggravated
+aggravates
+aggravating
+aggravation
+aggravations
+aggregate
+aggregated
+aggregates
+aggregating
+aggression
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggressors
+aggrieve
+aggrieved
+aggrieves
+aggrieving
+aghast
+agile
+agility
+aging
+agings
+agitate
+agitated
+agitates
+agitating
+agitation
+agitations
+agitator
+agitators
+aglow
+agnostic
+agnosticism
+agnostics
+ago
+agonies
+agonize
+agonized
+agonizes
+agonizing
+agonizingly
+agony
+agree
+agreeable
+agreeably
+agreed
+agreeing
+agreement
+agreements
+agrees
+agricultural
+agriculture
+aground
+ah
+aha
+ahead
+ahoy
+aid
+aide
+aided
+aides
+aiding
+aids
+ail
+ailed
+ailing
+ailment
+ailments
+ails
+aim
+aimed
+aiming
+aimless
+aimlessly
+aims
+air
+airborne
+aircraft
+aired
+airfare
+airfares
+airfield
+airfields
+airier
+airiest
+airily
+airing
+airings
+airless
+airline
+airliner
+airliners
+airlines
+airmail
+airmailed
+airmailing
+airmails
+airplane
+airplanes
+airport
+airports
+airs
+airspace
+airstrip
+airstrips
+airtight
+airwaves
+airy
+aisle
+aisles
+ajar
+akin
+alarm
+alarmed
+alarming
+alarmingly
+alarmist
+alarmists
+alarms
+alas
+albeit
+albino
+albinos
+album
+albums
+alcohol
+alcoholic
+alcoholics
+alcoholism
+alcohols
+alcove
+alcoves
+alderman
+aldermen
+alderwoman
+alderwomen
+ale
+alert
+alerted
+alerting
+alerts
+ales
+alfalfa
+alga
+algae
+algebra
+algebraic
+algorithm
+algorithms
+alias
+aliased
+aliases
+aliasing
+alibi
+alibied
+alibiing
+alibis
+alien
+alienate
+alienated
+alienates
+alienating
+alienation
+aliened
+aliening
+aliens
+alight
+alighted
+alighting
+alights
+align
+aligned
+aligning
+alignment
+alignments
+aligns
+alike
+alimony
+alive
+alkali
+alkalies
+alkaline
+all
+allay
+allayed
+allaying
+allays
+allegation
+allegations
+allege
+alleged
+allegedly
+alleges
+allegiance
+allegiances
+alleging
+allegorical
+allegories
+allegory
+allergic
+allergies
+allergy
+alleviate
+alleviated
+alleviates
+alleviating
+alleviation
+alley
+alleys
+alliance
+alliances
+allied
+allies
+alligator
+alligators
+allocate
+allocated
+allocates
+allocating
+allocation
+allocations
+allot
+allotment
+allotments
+allots
+allotted
+allotting
+allow
+allowable
+allowance
+allowances
+allowed
+allowing
+allows
+alloy
+alloyed
+alloying
+alloys
+allude
+alluded
+alludes
+alluding
+allure
+allured
+allures
+alluring
+allusion
+allusions
+ally
+allying
+almanac
+almanacs
+almighty
+almond
+almonds
+almost
+alms
+aloft
+aloha
+alohas
+alone
+along
+alongside
+aloof
+aloud
+alpha
+alphabet
+alphabetic
+alphabetical
+alphabetically
+alphabets
+alphanumeric
+alpine
+already
+alright
+also
+altar
+altars
+alter
+alterable
+alteration
+alterations
+altercation
+altercations
+altered
+altering
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternations
+alternative
+alternatively
+alternatives
+alternator
+alters
+although
+altitude
+altitudes
+alto
+altogether
+altos
+altruism
+altruistic
+aluminum
+alumna
+alumnae
+alumni
+alumnus
+always
+am
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgamations
+amass
+amassed
+amasses
+amassing
+amateur
+amateurish
+amateurs
+amaze
+amazed
+amazement
+amazes
+amazing
+amazingly
+ambassador
+ambassadorial
+ambassadors
+amber
+ambiance
+ambiances
+ambidextrous
+ambient
+ambiguities
+ambiguity
+ambiguous
+ambiguously
+ambition
+ambitions
+ambitious
+ambitiously
+ambivalence
+ambivalent
+amble
+ambled
+ambles
+ambling
+ambulance
+ambulances
+ambush
+ambushed
+ambushes
+ambushing
+ameliorate
+ameliorated
+ameliorates
+ameliorating
+amelioration
+amen
+amenable
+amend
+amended
+amending
+amendment
+amendments
+amends
+amenities
+amenity
+amethyst
+amethysts
+amiable
+amiably
+amicable
+amicably
+amid
+amiss
+ammo
+ammonia
+ammunition
+amnesia
+amnesiac
+amnesiacs
+amnestied
+amnesties
+amnesty
+amnestying
+amoeba
+amoebae
+amoebas
+amok
+among
+amoral
+amorous
+amorphous
+amount
+amounted
+amounting
+amounts
+amp
+ampere
+amperes
+ampersand
+ampersands
+amphetamine
+amphetamines
+amphibian
+amphibians
+amphibious
+amphitheater
+amphitheaters
+ample
+ampler
+amplest
+amplification
+amplifications
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amply
+amps
+amputate
+amputated
+amputates
+amputating
+amputation
+amputations
+amputee
+amputees
+amulet
+amulets
+amuse
+amused
+amusement
+amusements
+amuses
+amusing
+amusingly
+an
+anachronism
+anachronisms
+anachronistic
+anagram
+anagrams
+anal
+analgesic
+analgesics
+analog
+analogies
+analogous
+analogue
+analogy
+analyses
+analysis
+analyst
+analysts
+analytic
+analytical
+analyze
+analyzed
+analyzer
+analyzes
+analyzing
+anarchic
+anarchism
+anarchist
+anarchists
+anarchy
+anathema
+anatomical
+anatomies
+anatomy
+ancestor
+ancestors
+ancestral
+ancestries
+ancestry
+anchor
+anchorage
+anchorages
+anchored
+anchoring
+anchorman
+anchormen
+anchors
+anchorwoman
+anchorwomen
+anchovies
+anchovy
+ancient
+ancienter
+ancientest
+ancients
+and
+android
+androids
+anecdotal
+anecdote
+anecdotes
+anemia
+anemic
+anesthesia
+anesthesiologist
+anesthesiologists
+anesthetic
+anesthetics
+anesthetist
+anesthetists
+anesthetize
+anesthetized
+anesthetizes
+anesthetizing
+anew
+angel
+angelic
+angelically
+angels
+anger
+angered
+angering
+angers
+angle
+angled
+angler
+anglers
+angles
+angling
+angrier
+angriest
+angrily
+angry
+angst
+anguish
+anguished
+anguishes
+anguishing
+angular
+animal
+animals
+animate
+animated
+animates
+animating
+animation
+animations
+animosities
+animosity
+ankle
+ankles
+annals
+annex
+annexation
+annexations
+annexed
+annexes
+annexing
+annihilate
+annihilated
+annihilates
+annihilating
+annihilation
+anniversaries
+anniversary
+annotate
+annotated
+annotates
+annotating
+annotation
+annotations
+announce
+announced
+announcement
+announcements
+announcer
+announcers
+announces
+announcing
+annoy
+annoyance
+annoyances
+annoyed
+annoying
+annoyingly
+annoys
+annual
+annually
+annuals
+annuities
+annuity
+annul
+annulled
+annulling
+annulment
+annulments
+annuls
+anoint
+anointed
+anointing
+anoints
+anomalies
+anomalous
+anomaly
+anon
+anonymity
+anonymous
+anonymously
+anorak
+anoraks
+anorexia
+anorexic
+anorexics
+another
+answer
+answerable
+answered
+answering
+answers
+ant
+antacid
+antacids
+antagonism
+antagonisms
+antagonist
+antagonistic
+antagonistically
+antagonists
+antagonize
+antagonized
+antagonizes
+antagonizing
+ante
+anteater
+anteaters
+antebellum
+anted
+anteing
+antelope
+antelopes
+antenna
+antennae
+antennas
+antes
+anthem
+anthems
+anthill
+anthills
+anthologies
+anthology
+anthrax
+anthropological
+anthropologist
+anthropologists
+anthropology
+antibiotic
+antibiotics
+antibodies
+antibody
+antic
+anticipate
+anticipated
+anticipates
+anticipating
+anticipation
+anticipations
+anticlimactic
+anticlimax
+anticlimaxes
+antics
+antidote
+antidotes
+antifreeze
+antihistamine
+antihistamines
+antipathies
+antipathy
+antiperspirant
+antiperspirants
+antiquate
+antiquated
+antiquates
+antiquating
+antique
+antiqued
+antiques
+antiquing
+antiquities
+antiquity
+antiseptic
+antiseptics
+antisocial
+antitheses
+antithesis
+antitrust
+antler
+antlers
+antonym
+antonyms
+ants
+anus
+anuses
+anvil
+anvils
+anxieties
+anxiety
+anxious
+anxiously
+any
+anybodies
+anybody
+anyhow
+anymore
+anyone
+anyplace
+anything
+anythings
+anytime
+anyway
+anywhere
+aorta
+aortas
+apart
+apartheid
+apartment
+apartments
+apathetic
+apathy
+ape
+aped
+aperitif
+aperitifs
+aperture
+apertures
+apes
+apex
+apexes
+aphorism
+aphorisms
+aphrodisiac
+aphrodisiacs
+apiece
+aping
+aplomb
+apocalypse
+apocalypses
+apocalyptic
+apocryphal
+apolitical
+apologetic
+apologetically
+apologies
+apologize
+apologized
+apologizes
+apologizing
+apology
+apoplectic
+apoplexies
+apoplexy
+apostle
+apostles
+apostolic
+apostrophe
+apostrophes
+appall
+appalled
+appalling
+appallingly
+appalls
+apparatus
+apparatuses
+apparel
+appareled
+appareling
+apparels
+apparent
+apparently
+apparition
+apparitions
+appeal
+appealed
+appealing
+appeals
+appear
+appearance
+appearances
+appeared
+appearing
+appears
+appease
+appeased
+appeasement
+appeasements
+appeases
+appeasing
+append
+appendage
+appendages
+appended
+appendices
+appendicitis
+appending
+appendix
+appendixes
+appends
+appetite
+appetites
+appetizer
+appetizers
+appetizing
+applaud
+applauded
+applauding
+applauds
+applause
+apple
+apples
+applesauce
+appliance
+appliances
+applicability
+applicable
+applicant
+applicants
+application
+applications
+applicator
+applicators
+applied
+applies
+apply
+applying
+appoint
+appointed
+appointee
+appointees
+appointing
+appointment
+appointments
+appoints
+apportion
+apportioned
+apportioning
+apportions
+apposite
+appraisal
+appraisals
+appraise
+appraised
+appraises
+appraising
+appreciable
+appreciate
+appreciated
+appreciates
+appreciating
+appreciation
+appreciations
+appreciative
+appreciatively
+apprehend
+apprehended
+apprehending
+apprehends
+apprehension
+apprehensions
+apprehensive
+apprentice
+apprenticed
+apprentices
+apprenticeship
+apprenticeships
+apprenticing
+apprise
+apprised
+apprises
+apprising
+approach
+approachable
+approached
+approaches
+approaching
+approbation
+approbations
+appropriate
+appropriated
+appropriately
+appropriates
+appropriating
+appropriation
+appropriations
+approval
+approvals
+approve
+approved
+approves
+approving
+approvingly
+approximate
+approximated
+approximately
+approximates
+approximating
+approximation
+approximations
+apricot
+apricots
+apron
+aprons
+apt
+apter
+aptest
+aptitude
+aptitudes
+aptly
+aquamarine
+aquamarines
+aquarium
+aquariums
+aquatic
+aquatics
+aqueduct
+aqueducts
+arable
+arbiter
+arbiters
+arbitrarily
+arbitrary
+arbitrate
+arbitrated
+arbitrates
+arbitrating
+arbitration
+arbitrator
+arbitrators
+arbor
+arbors
+arc
+arcade
+arcades
+arcane
+arced
+arch
+archaeological
+archaeologist
+archaeologists
+archaeology
+archaic
+archbishop
+archbishops
+arched
+archer
+archers
+archery
+arches
+archest
+archetypal
+arching
+archipelago
+archipelagos
+architect
+architects
+architectural
+architecture
+architectures
+archive
+archived
+archives
+archiving
+archway
+archways
+arcing
+arcs
+arctic
+arctics
+ardent
+ardently
+ardor
+ardors
+arduous
+arduously
+are
+area
+areas
+arena
+arenas
+ares
+arguable
+arguably
+argue
+argued
+argues
+arguing
+argument
+argumentative
+arguments
+aria
+arias
+arid
+arise
+arisen
+arises
+arising
+aristocracies
+aristocracy
+aristocrat
+aristocratic
+aristocrats
+arithmetic
+ark
+arks
+arm
+armadillo
+armadillos
+armament
+armaments
+armband
+armbands
+armchair
+armchairs
+armed
+armful
+armfuls
+armhole
+armholes
+armies
+arming
+armistice
+armistices
+armor
+armored
+armories
+armoring
+armors
+armory
+armpit
+armpits
+arms
+army
+aroma
+aromas
+aromatic
+aromatics
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arousing
+arraign
+arraigned
+arraigning
+arraignment
+arraignments
+arraigns
+arrange
+arranged
+arrangement
+arrangements
+arranges
+arranging
+array
+arrayed
+arraying
+arrays
+arrears
+arrest
+arrested
+arresting
+arrests
+arrival
+arrivals
+arrive
+arrived
+arrives
+arriving
+arrogance
+arrogant
+arrogantly
+arrow
+arrows
+arsenal
+arsenals
+arsenic
+arson
+arsonist
+arsonists
+art
+arterial
+arteries
+artery
+artful
+arthritic
+arthritics
+arthritis
+artichoke
+artichokes
+article
+articles
+articulate
+articulated
+articulately
+articulates
+articulating
+articulation
+articulations
+artifact
+artifacts
+artifice
+artifices
+artificial
+artificially
+artillery
+artisan
+artisans
+artist
+artistic
+artistically
+artistry
+artists
+arts
+artsier
+artsiest
+artsy
+artwork
+artworks
+as
+asbestos
+ascend
+ascendancy
+ascended
+ascending
+ascends
+ascension
+ascensions
+ascent
+ascents
+ascertain
+ascertained
+ascertaining
+ascertains
+ascetic
+ascetics
+ascribe
+ascribed
+ascribes
+ascribing
+asexual
+ash
+ashamed
+ashcan
+ashed
+ashen
+ashes
+ashing
+ashore
+ashtray
+ashtrays
+aside
+asides
+ask
+askance
+asked
+askew
+asking
+asks
+asleep
+asparagus
+aspect
+aspects
+aspen
+aspens
+aspersion
+aspersions
+asphalt
+asphalted
+asphalting
+asphalts
+asphyxiate
+asphyxiated
+asphyxiates
+asphyxiating
+asphyxiation
+asphyxiations
+aspirant
+aspirants
+aspiration
+aspirations
+aspire
+aspired
+aspires
+aspirin
+aspiring
+aspirins
+ass
+assail
+assailant
+assailants
+assailed
+assailing
+assails
+assassin
+assassinate
+assassinated
+assassinates
+assassinating
+assassination
+assassinations
+assassins
+assault
+assaulted
+assaulter
+assaulting
+assaults
+assemble
+assembled
+assembler
+assemblers
+assembles
+assemblies
+assembling
+assembly
+assemblyman
+assemblymen
+assemblywoman
+assemblywomen
+assent
+assented
+assenting
+assents
+assert
+asserted
+asserting
+assertion
+assertions
+assertive
+assertively
+assertiveness
+asserts
+asses
+assess
+assessed
+assesses
+assessing
+assessment
+assessments
+assessor
+assessors
+asset
+assets
+asshole
+assholes
+assign
+assigned
+assigning
+assignment
+assignments
+assigns
+assimilate
+assimilated
+assimilates
+assimilating
+assimilation
+assist
+assistance
+assistant
+assistants
+assisted
+assisting
+assists
+associate
+associated
+associates
+associating
+association
+associations
+associative
+assort
+assorted
+assorting
+assortment
+assortments
+assorts
+assume
+assumed
+assumes
+assuming
+assumption
+assumptions
+assurance
+assurances
+assure
+assured
+assuredly
+assureds
+assures
+assuring
+asterisk
+asterisked
+asterisking
+asterisks
+asteroid
+asteroids
+asthma
+asthmatic
+asthmatics
+astonish
+astonished
+astonishes
+astonishing
+astonishingly
+astonishment
+astound
+astounded
+astounding
+astounds
+astray
+astride
+astringent
+astringents
+astrologer
+astrologers
+astrological
+astrology
+astronaut
+astronauts
+astronomer
+astronomers
+astronomical
+astronomy
+astute
+astutely
+astuter
+astutest
+asylum
+asylums
+asymmetry
+asynchronous
+asynchronously
+at
+ate
+atheism
+atheist
+atheistic
+atheists
+athlete
+athletes
+athletic
+athletics
+atlas
+atlases
+atmosphere
+atmospheres
+atmospheric
+atom
+atomic
+atoms
+atone
+atoned
+atonement
+atones
+atoning
+atrocious
+atrociously
+atrocities
+atrocity
+attach
+attache
+attached
+attaches
+attaching
+attachment
+attachments
+attack
+attacked
+attacker
+attackers
+attacking
+attacks
+attain
+attainable
+attained
+attaining
+attainment
+attainments
+attains
+attempt
+attempted
+attempting
+attempts
+attend
+attendance
+attendances
+attendant
+attendants
+attended
+attending
+attends
+attention
+attentions
+attentive
+attentively
+attest
+attested
+attesting
+attests
+attic
+attics
+attire
+attired
+attires
+attiring
+attitude
+attitudes
+attorney
+attorneys
+attract
+attracted
+attracting
+attraction
+attractions
+attractive
+attractively
+attractiveness
+attracts
+attributable
+attribute
+attributed
+attributes
+attributing
+attribution
+attributions
+attune
+attuned
+attunes
+attuning
+auburn
+auction
+auctioned
+auctioneer
+auctioneers
+auctioning
+auctions
+audacious
+audacity
+audible
+audibles
+audibly
+audience
+audiences
+audio
+audios
+audiovisual
+audit
+audited
+auditing
+audition
+auditioned
+auditioning
+auditions
+auditor
+auditorium
+auditoriums
+auditors
+auditory
+audits
+augment
+augmented
+augmenting
+augments
+august
+auguster
+augustest
+aunt
+aunts
+aura
+aural
+auras
+auspice
+auspices
+auspicious
+austere
+austerer
+austerest
+austerities
+austerity
+authentic
+authentically
+authenticate
+authenticated
+authenticates
+authenticating
+authenticity
+author
+authored
+authoring
+authoritarian
+authoritarians
+authoritative
+authoritatively
+authorities
+authority
+authorization
+authorizations
+authorize
+authorized
+authorizes
+authorizing
+authors
+authorship
+autistic
+auto
+autobiographical
+autobiographies
+autobiography
+autocracies
+autocracy
+autocrat
+autocratic
+autocrats
+autograph
+autographed
+autographing
+autographs
+automate
+automated
+automates
+automatic
+automatically
+automatics
+automating
+automation
+automobile
+automobiled
+automobiles
+automobiling
+automotive
+autonomous
+autonomously
+autonomy
+autopsied
+autopsies
+autopsy
+autopsying
+autos
+autoworker
+autoworkers
+autumn
+autumnal
+autumns
+auxiliaries
+auxiliary
+avail
+availability
+available
+availed
+availing
+avails
+avalanche
+avalanches
+avarice
+avaricious
+avenge
+avenged
+avenges
+avenging
+avenue
+avenues
+average
+averaged
+averages
+averaging
+averse
+aversion
+aversions
+avert
+averted
+averting
+averts
+aviation
+aviator
+aviators
+avid
+avidly
+avocado
+avocados
+avoid
+avoidable
+avoidance
+avoided
+avoiding
+avoids
+avow
+avowal
+avowals
+avowed
+avowing
+avows
+await
+awaited
+awaiting
+awaits
+awake
+awaken
+awakened
+awakening
+awakenings
+awakens
+awakes
+awaking
+award
+awarded
+awarding
+awards
+aware
+awareness
+awash
+away
+awe
+awed
+awes
+awesome
+awful
+awfuller
+awfullest
+awfully
+awhile
+awing
+awkward
+awkwarder
+awkwardest
+awkwardly
+awkwardness
+awning
+awnings
+awoke
+awoken
+awry
+ax
+axed
+axes
+axing
+axiom
+axiomatic
+axioms
+axis
+axle
+axles
+aye
+ayes
+azalea
+azaleas
+azure
+azures
+baa
+baaed
+baaing
+baas
+babble
+babbled
+babbles
+babbling
+babe
+babes
+babied
+babier
+babies
+babiest
+baboon
+baboons
+baby
+babying
+babyish
+babysat
+babysit
+babysits
+babysitter
+babysitters
+babysitting
+bachelor
+bachelors
+back
+backbone
+backbones
+backbreaking
+backdrop
+backdrops
+backed
+backer
+backers
+backfire
+backfired
+backfires
+backfiring
+backgammon
+background
+backgrounds
+backhand
+backhanded
+backhanding
+backhands
+backing
+backings
+backlash
+backlashes
+backlog
+backlogged
+backlogging
+backlogs
+backpack
+backpacked
+backpacker
+backpackers
+backpacking
+backpacks
+backs
+backside
+backsides
+backslash
+backspace
+backstage
+backstroke
+backstroked
+backstrokes
+backstroking
+backtrack
+backtracked
+backtracking
+backtracks
+backup
+backups
+backward
+backwards
+backwoods
+backyard
+backyards
+bacon
+bacteria
+bacterial
+bacterium
+bad
+badder
+baddest
+bade
+badge
+badger
+badgered
+badgering
+badgers
+badges
+badlands
+badly
+badminton
+badmouth
+badmouthed
+badmouthing
+badmouths
+badness
+baffle
+baffled
+baffles
+baffling
+bag
+bagel
+bagels
+baggage
+bagged
+baggier
+baggiest
+bagging
+baggy
+bagpipe
+bagpipes
+bags
+bail
+bailed
+bailiff
+bailiffs
+bailing
+bails
+bait
+baited
+baiting
+baits
+bake
+baked
+baker
+bakeries
+bakers
+bakery
+bakes
+baking
+balance
+balanced
+balances
+balancing
+balconies
+balcony
+bald
+balded
+balder
+baldest
+balding
+baldness
+balds
+bale
+baled
+baleful
+bales
+baling
+balk
+balked
+balking
+balks
+ball
+ballad
+ballads
+ballast
+ballasted
+ballasting
+ballasts
+balled
+ballerina
+ballerinas
+ballet
+ballets
+balling
+ballistic
+ballistics
+balloon
+ballooned
+ballooning
+balloons
+ballot
+balloted
+balloting
+ballots
+ballpark
+ballparks
+ballroom
+ballrooms
+balls
+balm
+balmier
+balmiest
+balms
+balmy
+baloney
+bamboo
+bamboos
+bamboozle
+bamboozled
+bamboozles
+bamboozling
+ban
+banal
+banalities
+banality
+banana
+bananas
+band
+bandage
+bandaged
+bandages
+bandaging
+bandanna
+bandannas
+banded
+bandied
+bandier
+bandies
+bandiest
+banding
+bandit
+bandits
+bands
+bandstand
+bandstands
+bandwagon
+bandwagons
+bandwidth
+bandy
+bandying
+bane
+banes
+bang
+banged
+banging
+bangle
+bangles
+bangs
+bani
+banish
+banished
+banishes
+banishing
+banister
+banisters
+banjo
+banjos
+bank
+banked
+banker
+bankers
+banking
+banknote
+banknotes
+bankrupt
+bankruptcies
+bankruptcy
+bankrupted
+bankrupting
+bankrupts
+banks
+banned
+banner
+banners
+banning
+banquet
+banqueted
+banqueting
+banquets
+bans
+banter
+bantered
+bantering
+banters
+baptism
+baptismal
+baptisms
+baptize
+baptized
+baptizes
+baptizing
+bar
+barb
+barbarian
+barbarians
+barbaric
+barbarism
+barbarisms
+barbarous
+barbecue
+barbecued
+barbecues
+barbecuing
+barbed
+barbell
+barbells
+barber
+barbered
+barbering
+barbers
+barbing
+barbiturate
+barbiturates
+barbs
+bard
+bards
+bare
+bareback
+bared
+barefoot
+barely
+barer
+bares
+barest
+barf
+barfed
+barfing
+barfs
+bargain
+bargained
+bargainer
+bargaining
+bargains
+barge
+barged
+barges
+barging
+baring
+baritone
+baritones
+bark
+barked
+barking
+barks
+barley
+barman
+barn
+barnacle
+barnacles
+barns
+barnyard
+barnyards
+barometer
+barometers
+barometric
+baron
+barons
+baroque
+barrack
+barracks
+barrage
+barraged
+barrages
+barraging
+barred
+barrel
+barreled
+barreling
+barrels
+barren
+barrener
+barrenest
+barrens
+barrette
+barrettes
+barricade
+barricaded
+barricades
+barricading
+barrier
+barriers
+barring
+barrings
+barrio
+barrios
+barrister
+barristers
+barroom
+barrooms
+bars
+bartender
+bartenders
+barter
+bartered
+bartering
+barters
+base
+baseball
+baseballs
+based
+baseline
+basement
+basements
+baser
+bases
+basest
+bash
+bashed
+bashes
+bashful
+bashing
+basic
+basically
+basics
+basil
+basin
+basing
+basins
+basis
+bask
+basked
+basket
+basketball
+basketballs
+baskets
+basking
+basks
+bass
+basses
+bassist
+bassists
+bassoon
+bassoons
+bastard
+bastards
+baste
+basted
+bastes
+basting
+bat
+batch
+batched
+batches
+batching
+bate
+bated
+bates
+bath
+bathe
+bathed
+bathes
+bathing
+bathrobe
+bathrobes
+bathroom
+bathrooms
+baths
+bathtub
+bathtubs
+bating
+baton
+batons
+bats
+batsman
+battalion
+battalions
+batted
+batter
+battered
+batteries
+battering
+batters
+battery
+batting
+battle
+battled
+battlefield
+battlefields
+battleground
+battlegrounds
+battles
+battleship
+battleships
+battling
+baud
+bawdier
+bawdiest
+bawdy
+bawl
+bawled
+bawling
+bawls
+bay
+bayed
+baying
+bayonet
+bayoneted
+bayoneting
+bayonets
+bayou
+bayous
+bays
+bazaar
+bazaars
+be
+beach
+beached
+beaches
+beaching
+beacon
+beacons
+bead
+beaded
+beadier
+beadiest
+beading
+beads
+beady
+beagle
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beam
+beamed
+beaming
+beams
+bean
+beaned
+beaning
+beans
+bear
+bearable
+beard
+bearded
+bearding
+beards
+bearer
+bearers
+bearing
+bearings
+bears
+beast
+beasts
+beat
+beaten
+beater
+beaters
+beating
+beatings
+beats
+beautician
+beauticians
+beauties
+beautified
+beautifies
+beautiful
+beautifully
+beautify
+beautifying
+beauty
+beaver
+beavered
+beavering
+beavers
+bebop
+bebops
+became
+because
+beckon
+beckoned
+beckoning
+beckons
+become
+becomes
+becoming
+bed
+bedbug
+bedbugs
+bedclothes
+bedded
+bedder
+bedding
+bedlam
+bedlams
+bedpan
+bedpans
+bedraggle
+bedraggled
+bedraggles
+bedraggling
+bedridden
+bedrock
+bedrocks
+bedroom
+bedrooms
+beds
+bedside
+bedsides
+bedspread
+bedspreads
+bedtime
+bedtimes
+bee
+beech
+beeches
+beef
+beefed
+beefier
+beefiest
+beefing
+beefs
+beefy
+beehive
+beehives
+beeline
+beelines
+been
+beep
+beeped
+beeper
+beepers
+beeping
+beeps
+beer
+beers
+bees
+beeswax
+beet
+beetle
+beetled
+beetles
+beetling
+beets
+beeves
+befall
+befallen
+befalling
+befalls
+befell
+befit
+befits
+befitted
+befitting
+before
+beforehand
+befriend
+befriended
+befriending
+befriends
+beg
+began
+beggar
+beggared
+beggaring
+beggars
+begged
+begging
+begin
+beginner
+beginners
+beginning
+beginnings
+begins
+begrudge
+begrudged
+begrudges
+begrudging
+begs
+beguile
+beguiled
+beguiles
+beguiling
+begun
+behalf
+behalves
+behave
+behaved
+behaves
+behaving
+behavior
+behavioral
+behead
+beheaded
+beheading
+beheads
+beheld
+behind
+behinds
+behold
+beholder
+beholders
+beholding
+beholds
+beige
+being
+beings
+belabor
+belabored
+belaboring
+belabors
+belated
+belatedly
+belch
+belched
+belches
+belching
+belfries
+belfry
+belie
+belied
+belief
+beliefs
+belies
+believable
+believe
+believed
+believer
+believers
+believes
+believing
+belittle
+belittled
+belittles
+belittling
+bell
+bellboy
+bellboys
+belled
+bellhop
+bellhops
+bellied
+bellies
+belligerence
+belligerent
+belligerents
+belling
+bellow
+bellowed
+bellowing
+bellows
+bells
+belly
+bellybutton
+bellybuttons
+bellying
+belong
+belonged
+belonging
+belongings
+belongs
+beloved
+beloveds
+below
+belt
+belted
+belting
+belts
+beltway
+beltways
+belying
+bemoan
+bemoaned
+bemoaning
+bemoans
+bemuse
+bemused
+bemuses
+bemusing
+bench
+benched
+benches
+benching
+benchmark
+benchmarks
+bend
+bender
+bending
+bends
+beneath
+benediction
+benedictions
+benefactor
+benefactors
+beneficial
+beneficiaries
+beneficiary
+benefit
+benefited
+benefiting
+benefits
+benevolence
+benevolences
+benevolent
+benighted
+benign
+bent
+bents
+bequeath
+bequeathed
+bequeathing
+bequeaths
+bequest
+bequests
+berate
+berated
+berates
+berating
+bereave
+bereaved
+bereavement
+bereavements
+bereaves
+bereaving
+bereft
+beret
+berets
+berried
+berries
+berry
+berrying
+berserk
+berth
+berthed
+berthing
+berths
+beseech
+beseeches
+beseeching
+beset
+besets
+besetting
+beside
+besides
+besiege
+besieged
+besieges
+besieging
+besought
+best
+bested
+bestial
+bestiality
+besting
+bestow
+bestowed
+bestowing
+bestows
+bests
+bestseller
+bestsellers
+bet
+beta
+betcha
+betray
+betrayal
+betrayals
+betrayed
+betraying
+betrays
+betrothal
+betrothals
+bets
+better
+bettered
+bettering
+betterment
+betters
+betting
+bettor
+bettors
+between
+bevel
+beveled
+beveling
+bevels
+beverage
+beverages
+beware
+bewared
+bewares
+bewaring
+bewilder
+bewildered
+bewildering
+bewilderment
+bewilders
+bewitch
+bewitched
+bewitches
+bewitching
+beyond
+bias
+biased
+biases
+biasing
+bib
+bible
+bibles
+biblical
+bibliographic
+bibliographies
+bibliography
+bibs
+bicentennial
+bicentennials
+bicep
+biceps
+bicker
+bickered
+bickering
+bickers
+bicycle
+bicycled
+bicycles
+bicycling
+bid
+bidden
+bidder
+bidders
+bidding
+bide
+bides
+biding
+bids
+biennial
+biennials
+bifocals
+big
+bigamist
+bigamists
+bigamous
+bigamy
+bigger
+biggest
+biggie
+biggies
+bigmouth
+bigmouths
+bigot
+bigoted
+bigotries
+bigotry
+bigots
+bigwig
+bigwigs
+bike
+biked
+biker
+bikers
+bikes
+biking
+bikini
+bikinis
+bilateral
+bilaterally
+bile
+bilingual
+bilinguals
+bill
+billboard
+billboards
+billed
+billfold
+billfolds
+billiards
+billing
+billion
+billionaire
+billionaires
+billions
+billionth
+billionths
+billow
+billowed
+billowing
+billows
+bills
+bimbo
+bimbos
+bimonthlies
+bimonthly
+bin
+binaries
+binary
+bind
+binder
+binders
+binding
+bindings
+binds
+binge
+binged
+binges
+bingo
+binned
+binning
+binocular
+binoculars
+binomial
+bins
+biochemical
+biochemistry
+biodegradable
+biographer
+biographers
+biographical
+biographies
+biography
+biological
+biologically
+biologist
+biologists
+biology
+biopsied
+biopsies
+biopsy
+biopsying
+bipartisan
+biped
+bipeds
+biplane
+biplanes
+birch
+birched
+birches
+birching
+bird
+birdbrained
+birdcage
+birdcages
+birded
+birding
+birds
+birdseed
+birth
+birthday
+birthdays
+birthed
+birthing
+birthmark
+birthmarks
+birthplace
+birthplaces
+birthrate
+birthrates
+births
+biscuit
+biscuits
+bisect
+bisected
+bisecting
+bisection
+bisections
+bisects
+bisexual
+bisexuals
+bishop
+bishops
+bison
+bit
+bitch
+bitched
+bitches
+bitchier
+bitchiest
+bitching
+bitchy
+bite
+bites
+biting
+bitmap
+bits
+bitten
+bitter
+bitterer
+bitterest
+bitterly
+bitterness
+bittersweet
+bittersweets
+biweeklies
+biweekly
+bizarre
+blab
+blabbed
+blabbermouth
+blabbermouths
+blabbing
+blabs
+black
+blackberries
+blackberry
+blackberrying
+blackbird
+blackbirds
+blackboard
+blackboards
+blacked
+blacken
+blackened
+blackening
+blackens
+blacker
+blackest
+blackhead
+blackheads
+blacking
+blackjack
+blackjacked
+blackjacking
+blackjacks
+blacklist
+blacklisted
+blacklisting
+blacklists
+blackmail
+blackmailed
+blackmailer
+blackmailers
+blackmailing
+blackmails
+blackness
+blackout
+blackouts
+blacks
+blacksmith
+blacksmiths
+blacktop
+blacktopped
+blacktopping
+blacktops
+bladder
+bladders
+blade
+blades
+blah
+blame
+blamed
+blameless
+blamer
+blames
+blaming
+blanch
+blanched
+blanches
+blanching
+blancmange
+bland
+blander
+blandest
+blandly
+blank
+blanked
+blanker
+blankest
+blanket
+blanketed
+blanketing
+blankets
+blanking
+blankly
+blankness
+blanks
+blare
+blared
+blares
+blaring
+blase
+blaspheme
+blasphemed
+blasphemes
+blasphemies
+blaspheming
+blasphemous
+blasphemy
+blast
+blasted
+blaster
+blasting
+blastoff
+blastoffs
+blasts
+blatant
+blatantly
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+bleach
+bleached
+bleacher
+bleachers
+bleaches
+bleaching
+bleak
+bleaker
+bleakest
+bleakly
+bleakness
+blearier
+bleariest
+blearily
+bleary
+bleat
+bleated
+bleating
+bleats
+bled
+bleed
+bleeding
+bleeds
+blemish
+blemished
+blemishes
+blemishing
+blend
+blended
+blender
+blenders
+blending
+blends
+bless
+blessed
+blesses
+blessing
+blessings
+blew
+blight
+blighted
+blighting
+blights
+blimp
+blimps
+blind
+blinded
+blinder
+blindest
+blindfold
+blindfolded
+blindfolding
+blindfolds
+blinding
+blindingly
+blindly
+blindness
+blinds
+blink
+blinked
+blinker
+blinkered
+blinkering
+blinkers
+blinking
+blinks
+blip
+blips
+bliss
+blissful
+blissfully
+blister
+blistered
+blistering
+blisters
+blithe
+blithely
+blither
+blithest
+blitz
+blitzed
+blitzes
+blitzing
+blizzard
+blizzards
+bloat
+bloated
+bloating
+bloats
+blob
+blobbed
+blobbing
+blobs
+bloc
+block
+blockade
+blockaded
+blockades
+blockading
+blockage
+blockages
+blockbuster
+blockbusters
+blocked
+blockhead
+blockheads
+blocking
+blocks
+blocs
+blog
+blogged
+blogger
+bloggers
+blogging
+blogs
+blond
+blonde
+blonder
+blondes
+blondest
+blonds
+blood
+bloodbath
+bloodbaths
+blooded
+bloodhound
+bloodhounds
+bloodied
+bloodier
+bloodies
+bloodiest
+blooding
+bloodless
+bloods
+bloodshed
+bloodshot
+bloodstain
+bloodstained
+bloodstains
+bloodstream
+bloodstreams
+bloodthirstier
+bloodthirstiest
+bloodthirsty
+bloody
+bloodying
+bloom
+bloomed
+blooming
+blooms
+blooper
+bloopers
+blossom
+blossomed
+blossoming
+blossoms
+blot
+blotch
+blotched
+blotches
+blotchier
+blotchiest
+blotching
+blotchy
+blots
+blotted
+blotter
+blotters
+blotting
+blouse
+bloused
+blouses
+blousing
+blow
+blowing
+blown
+blowout
+blowouts
+blows
+blowtorch
+blowtorches
+blowup
+blowups
+blubber
+blubbered
+blubbering
+blubbers
+bludgeon
+bludgeoned
+bludgeoning
+bludgeons
+blue
+bluebell
+bluebells
+blueberries
+blueberry
+bluebird
+bluebirds
+blued
+bluegrass
+blueprint
+blueprinted
+blueprinting
+blueprints
+bluer
+blues
+bluest
+bluff
+bluffed
+bluffer
+bluffest
+bluffing
+bluffs
+bluing
+bluish
+blunder
+blundered
+blundering
+blunders
+blunt
+blunted
+blunter
+bluntest
+blunting
+bluntly
+bluntness
+blunts
+blur
+blurb
+blurbs
+blurred
+blurrier
+blurriest
+blurring
+blurry
+blurs
+blurt
+blurted
+blurting
+blurts
+blush
+blushed
+blusher
+blushers
+blushes
+blushing
+bluster
+blustered
+blustering
+blusters
+boa
+boar
+board
+boarded
+boarder
+boarders
+boarding
+boardinghouse
+boardinghouses
+boardroom
+boardrooms
+boards
+boardwalk
+boardwalks
+boars
+boas
+boast
+boasted
+boastful
+boastfully
+boasting
+boasts
+boat
+boated
+boating
+boats
+bob
+bobbed
+bobbin
+bobbing
+bobbins
+bobcat
+bobcats
+bobs
+bobsled
+bobsledded
+bobsledding
+bobsleds
+bode
+boded
+bodes
+bodice
+bodices
+bodies
+bodily
+boding
+body
+bodybuilding
+bodyguard
+bodyguards
+bodywork
+bog
+bogeyman
+bogeymen
+bogged
+bogging
+boggle
+boggled
+boggles
+boggling
+bogs
+bogus
+bohemian
+bohemians
+boil
+boiled
+boiler
+boilers
+boiling
+boilings
+boils
+boisterous
+bold
+bolder
+boldest
+boldly
+boldness
+bologna
+bolster
+bolstered
+bolstering
+bolsters
+bolt
+bolted
+bolting
+bolts
+bomb
+bombard
+bombarded
+bombarding
+bombardment
+bombardments
+bombards
+bombed
+bomber
+bombers
+bombing
+bombings
+bombs
+bombshell
+bombshells
+bonanza
+bonanzas
+bond
+bondage
+bonded
+bonding
+bonds
+bone
+boned
+bones
+bonfire
+bonfires
+bongo
+bongos
+bonier
+boniest
+boning
+bonkers
+bonnet
+bonnets
+bonus
+bonuses
+bony
+boo
+boob
+boobed
+boobing
+boobs
+booby
+booed
+boogie
+boogied
+boogieing
+boogies
+booing
+book
+bookcase
+bookcases
+booked
+bookend
+bookends
+bookie
+bookies
+booking
+bookings
+bookkeeper
+bookkeepers
+bookkeeping
+booklet
+booklets
+bookmaker
+bookmakers
+bookmark
+bookmarked
+bookmarking
+bookmarks
+books
+bookshelf
+bookshop
+bookshops
+bookstore
+bookstores
+bookworm
+bookworms
+boom
+boomed
+boomerang
+boomeranged
+boomeranging
+boomerangs
+booming
+booms
+boon
+boondocks
+boons
+boor
+boorish
+boors
+boos
+boost
+boosted
+booster
+boosters
+boosting
+boosts
+boot
+booted
+bootee
+bootees
+booth
+booths
+booties
+booting
+bootleg
+bootlegged
+bootlegger
+bootleggers
+bootlegging
+bootlegs
+boots
+bootstrap
+bootstraps
+booty
+booze
+boozed
+boozer
+boozers
+boozes
+boozing
+bop
+bopped
+bopping
+bops
+border
+bordered
+bordering
+borderline
+borderlines
+borders
+bore
+bored
+boredom
+bores
+boring
+boringly
+born
+borne
+borough
+boroughs
+borrow
+borrowed
+borrower
+borrowers
+borrowing
+borrows
+bosom
+bosoms
+boss
+bossed
+bosses
+bossier
+bossiest
+bossily
+bossiness
+bossing
+bossy
+botanical
+botanist
+botanists
+botany
+botch
+botched
+botches
+botching
+both
+bother
+bothered
+bothering
+bothers
+bothersome
+bottle
+bottled
+bottleneck
+bottlenecks
+bottles
+bottling
+bottom
+bottomed
+bottoming
+bottomless
+bottoms
+bough
+boughs
+bought
+boulder
+boulders
+boulevard
+boulevards
+bounce
+bounced
+bouncer
+bouncers
+bounces
+bouncier
+bounciest
+bouncing
+bouncy
+bound
+boundaries
+boundary
+bounded
+bounding
+boundless
+bounds
+bounties
+bountiful
+bounty
+bouquet
+bouquets
+bourbon
+bourgeois
+bourgeoisie
+bout
+boutique
+boutiques
+bouts
+bovine
+bovines
+bow
+bowed
+bowel
+bowels
+bowing
+bowl
+bowled
+bowlegged
+bowler
+bowling
+bowls
+bows
+box
+boxcar
+boxcars
+boxed
+boxer
+boxers
+boxes
+boxing
+boy
+boycott
+boycotted
+boycotting
+boycotts
+boyfriend
+boyfriends
+boyhood
+boyhoods
+boyish
+boys
+bozo
+bozos
+bra
+brace
+braced
+bracelet
+bracelets
+braces
+bracing
+bracket
+bracketed
+bracketing
+brackets
+brackish
+brag
+braggart
+braggarts
+bragged
+bragging
+brags
+braid
+braided
+braiding
+braids
+brain
+brainchild
+brainchildren
+brained
+brainier
+brainiest
+braining
+brainless
+brains
+brainstorm
+brainstormed
+brainstorming
+brainstorms
+brainwash
+brainwashed
+brainwashes
+brainwashing
+brainy
+braise
+braised
+braises
+braising
+brake
+braked
+brakes
+braking
+bran
+branch
+branched
+branches
+branching
+brand
+branded
+brandied
+brandies
+branding
+brandish
+brandished
+brandishes
+brandishing
+brands
+brandy
+brandying
+bras
+brash
+brasher
+brashest
+brass
+brasses
+brassier
+brassiere
+brassieres
+brassiest
+brassy
+brat
+brats
+bravado
+brave
+braved
+bravely
+braver
+bravery
+braves
+bravest
+braving
+bravo
+bravos
+brawl
+brawled
+brawling
+brawls
+brawn
+brawnier
+brawniest
+brawny
+bray
+brayed
+braying
+brays
+brazen
+brazened
+brazening
+brazenly
+brazens
+brazier
+braziers
+breach
+breached
+breaches
+breaching
+bread
+breadbasket
+breadbaskets
+breaded
+breading
+breads
+breadth
+breadths
+breadwinner
+breadwinners
+break
+breakable
+breakables
+breakdown
+breakdowns
+breakfast
+breakfasted
+breakfasting
+breakfasts
+breaking
+breakneck
+breakpoints
+breaks
+breakthrough
+breakthroughs
+breakup
+breakups
+breakwater
+breakwaters
+breast
+breasted
+breasting
+breasts
+breaststroke
+breaststrokes
+breath
+breathe
+breathed
+breather
+breathers
+breathes
+breathing
+breathless
+breathlessly
+breaths
+breathtaking
+breathtakingly
+bred
+breed
+breeder
+breeders
+breeding
+breeds
+breeze
+breezed
+breezes
+breezier
+breeziest
+breezing
+breezy
+brethren
+brevity
+brew
+brewed
+brewer
+breweries
+brewers
+brewery
+brewing
+brews
+bribe
+bribed
+bribery
+bribes
+bribing
+brick
+bricked
+bricking
+bricklayer
+bricklayers
+bricklaying
+bricks
+bridal
+bridals
+bride
+bridegroom
+bridegrooms
+brides
+bridesmaid
+bridesmaids
+bridge
+bridged
+bridges
+bridging
+bridle
+bridled
+bridles
+bridling
+brief
+briefcase
+briefcases
+briefed
+briefer
+briefest
+briefing
+briefings
+briefly
+briefs
+brigade
+brigades
+bright
+brighten
+brightened
+brightening
+brightens
+brighter
+brightest
+brightly
+brightness
+brilliance
+brilliant
+brilliantly
+brilliants
+brim
+brimmed
+brimming
+brims
+brimstone
+brine
+bring
+bringing
+brings
+brinier
+briniest
+brink
+brinks
+briny
+brisk
+brisked
+brisker
+briskest
+brisking
+briskly
+brisks
+bristle
+bristled
+bristles
+bristling
+britches
+brittle
+brittler
+brittlest
+broach
+broached
+broaches
+broaching
+broad
+broadcast
+broadcaster
+broadcasters
+broadcasting
+broadcasts
+broaden
+broadened
+broadening
+broadens
+broader
+broadest
+broadly
+broads
+broadside
+broadsided
+broadsides
+broadsiding
+brocade
+brocaded
+brocades
+brocading
+broccoli
+brochure
+brochures
+brogue
+brogues
+broil
+broiled
+broiler
+broilers
+broiling
+broils
+broke
+broken
+brokenhearted
+broker
+brokerage
+brokerages
+brokered
+brokering
+brokers
+bronchitis
+bronco
+broncos
+bronze
+bronzed
+bronzes
+bronzing
+brooch
+brooches
+brood
+brooded
+brooding
+broods
+brook
+brooked
+brooking
+brooks
+broom
+brooms
+broomstick
+broomsticks
+broth
+brothel
+brothels
+brother
+brotherhood
+brotherhoods
+brotherly
+brothers
+broths
+brought
+brow
+browbeat
+browbeaten
+browbeating
+browbeats
+brown
+browned
+browner
+brownest
+brownie
+brownies
+browning
+brownish
+browns
+brownstone
+brownstones
+brows
+browse
+browsed
+browser
+browsers
+browses
+browsing
+bruise
+bruised
+bruises
+bruising
+brunch
+brunched
+brunches
+brunching
+brunette
+brunettes
+brunt
+brush
+brushed
+brushes
+brushing
+brusque
+brusquer
+brusquest
+brutal
+brutalities
+brutality
+brutalize
+brutalized
+brutalizes
+brutalizing
+brutally
+brute
+brutes
+brutish
+bubble
+bubbled
+bubbles
+bubblier
+bubbliest
+bubbling
+bubbly
+buck
+bucked
+bucket
+bucketed
+bucketing
+buckets
+bucking
+buckle
+buckled
+buckles
+buckling
+bucks
+bucktoothed
+bud
+budded
+buddies
+budding
+buddings
+buddy
+budge
+budged
+budges
+budget
+budgeted
+budgeting
+budgets
+budging
+buds
+buff
+buffalo
+buffaloed
+buffaloes
+buffaloing
+buffed
+buffer
+buffered
+buffering
+buffers
+buffet
+buffeted
+buffeting
+buffets
+buffing
+buffoon
+buffoons
+buffs
+bug
+bugged
+bugger
+buggers
+buggier
+buggies
+buggiest
+bugging
+buggy
+bugle
+bugled
+bugler
+buglers
+bugles
+bugling
+bugs
+build
+builder
+builders
+building
+buildings
+builds
+buildup
+buildups
+built
+bulb
+bulbous
+bulbs
+bulge
+bulged
+bulges
+bulging
+bulk
+bulked
+bulkier
+bulkiest
+bulking
+bulks
+bulky
+bull
+bulldog
+bulldogged
+bulldogging
+bulldogs
+bulldoze
+bulldozed
+bulldozer
+bulldozers
+bulldozes
+bulldozing
+bulled
+bullet
+bulletin
+bulletined
+bulletining
+bulletins
+bulletproof
+bulletproofed
+bulletproofing
+bulletproofs
+bullets
+bullfight
+bullfighter
+bullfighters
+bullfighting
+bullfights
+bullfrog
+bullfrogs
+bullied
+bullies
+bulling
+bullion
+bullish
+bulls
+bullshit
+bullshits
+bullshitted
+bullshitting
+bully
+bullying
+bum
+bumble
+bumblebee
+bumblebees
+bumbled
+bumbles
+bumbling
+bummed
+bummer
+bummers
+bummest
+bumming
+bump
+bumped
+bumper
+bumpers
+bumpier
+bumpiest
+bumping
+bumps
+bumpy
+bums
+bun
+bunch
+bunched
+bunches
+bunching
+bundle
+bundled
+bundles
+bundling
+bung
+bungalow
+bungalows
+bungle
+bungled
+bungler
+bunglers
+bungles
+bungling
+bunion
+bunions
+bunk
+bunked
+bunker
+bunkers
+bunking
+bunks
+bunnies
+bunny
+buns
+buoy
+buoyancy
+buoyant
+buoyantly
+buoyed
+buoying
+buoys
+burble
+burbled
+burbles
+burbling
+burden
+burdened
+burdening
+burdens
+burdensome
+bureau
+bureaucracies
+bureaucracy
+bureaucrat
+bureaucratic
+bureaucrats
+bureaus
+burger
+burgers
+burglar
+burglaries
+burglarize
+burglarized
+burglarizes
+burglarizing
+burglars
+burglary
+burgle
+burial
+burials
+buried
+buries
+burlap
+burlier
+burliest
+burly
+burn
+burned
+burner
+burners
+burning
+burnish
+burnished
+burnishes
+burnishing
+burns
+burnt
+burp
+burped
+burping
+burps
+burr
+burred
+burring
+burro
+burros
+burrow
+burrowed
+burrowing
+burrows
+burrs
+bursar
+bursars
+burst
+bursting
+bursts
+bury
+burying
+bus
+busboy
+busboys
+bused
+buses
+bush
+bushed
+bushel
+busheled
+busheling
+bushels
+bushes
+bushier
+bushiest
+bushing
+bushy
+busied
+busier
+busies
+busiest
+busily
+business
+businesses
+businesslike
+businessman
+businessmen
+businesswoman
+businesswomen
+busing
+buss
+bust
+busted
+buster
+busters
+busting
+bustle
+bustled
+bustles
+bustling
+busts
+busy
+busybodies
+busybody
+busying
+busywork
+but
+butcher
+butchered
+butcheries
+butchering
+butchers
+butchery
+butler
+butlers
+buts
+butt
+butte
+butted
+butter
+buttercup
+buttercups
+buttered
+butterfingers
+butterflied
+butterflies
+butterfly
+butterflying
+buttering
+buttermilk
+butters
+butterscotch
+buttery
+buttes
+butting
+buttock
+buttocks
+button
+buttoned
+buttonhole
+buttonholed
+buttonholes
+buttonholing
+buttoning
+buttons
+buttress
+buttressed
+buttresses
+buttressing
+butts
+buxom
+buy
+buyer
+buyers
+buying
+buyout
+buyouts
+buys
+buzz
+buzzard
+buzzards
+buzzed
+buzzer
+buzzers
+buzzes
+buzzing
+buzzword
+buzzwords
+by
+bye
+byes
+bygone
+bygones
+bylaw
+bylaws
+bypass
+bypassed
+bypasses
+bypassing
+bystander
+bystanders
+byte
+bytes
+byway
+byways
+cab
+cabaret
+cabarets
+cabbage
+cabbages
+cabbed
+cabbies
+cabbing
+cabby
+cabin
+cabinet
+cabinets
+cabins
+cable
+cabled
+cables
+cabling
+caboose
+cabooses
+cabs
+cacao
+cacaos
+cache
+cached
+caches
+cachet
+cachets
+caching
+cackle
+cackled
+cackles
+cackling
+cacti
+cactus
+cad
+cadaver
+cadavers
+caddie
+caddied
+caddies
+caddying
+cadence
+cadences
+cadet
+cadets
+cadre
+cadres
+cafe
+cafes
+cafeteria
+cafeterias
+caffeine
+cage
+caged
+cages
+cagey
+cagier
+cagiest
+caging
+cahoot
+cahoots
+cajole
+cajoled
+cajoles
+cajoling
+cake
+caked
+cakes
+caking
+calamities
+calamity
+calcium
+calculate
+calculated
+calculates
+calculating
+calculation
+calculations
+calculator
+calculators
+calculi
+calculus
+calendar
+calendared
+calendaring
+calendars
+calf
+caliber
+calibers
+calibrate
+calibrated
+calibrates
+calibrating
+calibration
+calibrations
+calico
+calicoes
+calk
+calked
+calking
+calks
+call
+callable
+called
+caller
+callers
+calligraphy
+calling
+callings
+callous
+calloused
+callouses
+callousing
+callously
+callousness
+callow
+calls
+callus
+callused
+calluses
+callusing
+calm
+calmed
+calmer
+calmest
+calming
+calmly
+calmness
+calms
+calorie
+calories
+calve
+calves
+cam
+camaraderie
+camcorder
+camcorders
+came
+camel
+camellia
+camellias
+camels
+cameo
+cameos
+camera
+cameraman
+cameramen
+cameras
+camerawoman
+camerawomen
+camouflage
+camouflaged
+camouflages
+camouflaging
+camp
+campaign
+campaigned
+campaigner
+campaigners
+campaigning
+campaigns
+camped
+camper
+campers
+campground
+campgrounds
+camping
+camps
+campsite
+campsites
+campus
+campuses
+can
+canal
+canals
+canaries
+canary
+cancel
+canceled
+canceling
+cancellation
+cancellations
+cancels
+cancer
+cancers
+candid
+candidacies
+candidacy
+candidate
+candidates
+candidly
+candied
+candies
+candle
+candled
+candlelight
+candles
+candlestick
+candlesticks
+candling
+candor
+candy
+candying
+cane
+caned
+canes
+canine
+canines
+caning
+canister
+canisters
+canker
+cankered
+cankering
+cankers
+cannabis
+cannabises
+canned
+canneries
+cannery
+cannibal
+cannibalism
+cannibals
+cannier
+canniest
+canning
+cannon
+cannonball
+cannonballs
+cannoned
+cannoning
+cannons
+cannot
+canny
+canoe
+canoed
+canoeing
+canoes
+canon
+canonical
+canons
+canopied
+canopies
+canopy
+canopying
+cans
+cant
+cantaloupe
+cantaloupes
+cantankerous
+canteen
+canteens
+canter
+cantered
+cantering
+canters
+canvas
+canvased
+canvases
+canvasing
+canvass
+canvassed
+canvasser
+canvassers
+canvasses
+canvassing
+canyon
+canyons
+cap
+capabilities
+capability
+capable
+capably
+capacitance
+capacities
+capacitor
+capacitors
+capacity
+cape
+caped
+caper
+capered
+capering
+capers
+capes
+capillaries
+capillary
+capital
+capitalism
+capitalist
+capitalists
+capitalization
+capitalize
+capitalized
+capitalizes
+capitalizing
+capitals
+capitol
+capitols
+capitulate
+capitulated
+capitulates
+capitulating
+capitulation
+capitulations
+capped
+capping
+cappuccino
+cappuccinos
+caprice
+caprices
+capricious
+capriciously
+caps
+capsize
+capsized
+capsizes
+capsizing
+capsule
+capsuled
+capsules
+capsuling
+captain
+captained
+captaining
+captains
+caption
+captioned
+captioning
+captions
+captivate
+captivated
+captivates
+captivating
+captive
+captives
+captivities
+captivity
+captor
+captors
+capture
+captured
+captures
+capturing
+car
+caramel
+caramels
+carat
+carats
+caravan
+caravans
+carbohydrate
+carbohydrates
+carbon
+carbonate
+carbonated
+carbonates
+carbonating
+carbons
+carburetor
+carburetors
+carcass
+carcasses
+carcinogenic
+card
+cardboard
+carded
+cardiac
+cardigan
+cardigans
+cardinal
+cardinals
+carding
+cardiology
+cards
+care
+cared
+careen
+careened
+careening
+careens
+career
+careered
+careering
+careers
+carefree
+careful
+carefuller
+carefullest
+carefully
+carefulness
+careless
+carelessly
+carelessness
+cares
+caress
+caressed
+caresses
+caressing
+caretaker
+caretakers
+cargo
+cargoes
+caribou
+caribous
+caricature
+caricatured
+caricatures
+caricaturing
+caring
+carjack
+carjacked
+carjacker
+carjackers
+carjacking
+carjackings
+carjacks
+carnage
+carnal
+carnation
+carnations
+carnival
+carnivals
+carnivore
+carnivores
+carnivorous
+carol
+caroled
+caroling
+carols
+carouse
+caroused
+carousel
+carousels
+carouses
+carousing
+carp
+carped
+carpenter
+carpentered
+carpentering
+carpenters
+carpentry
+carpet
+carpeted
+carpeting
+carpets
+carping
+carps
+carriage
+carriages
+carriageway
+carried
+carrier
+carriers
+carries
+carrion
+carrot
+carrots
+carry
+carrying
+carryout
+cars
+cart
+carted
+cartel
+cartels
+cartilage
+cartilages
+carting
+cartographer
+cartographers
+cartography
+carton
+cartons
+cartoon
+cartooned
+cartooning
+cartoonist
+cartoonists
+cartoons
+cartridge
+cartridges
+carts
+cartwheel
+cartwheeled
+cartwheeling
+cartwheels
+carve
+carved
+carves
+carving
+carvings
+cascade
+cascaded
+cascades
+cascading
+case
+cased
+cases
+casework
+caseworker
+caseworkers
+cash
+cashed
+cashes
+cashew
+cashews
+cashier
+cashiered
+cashiering
+cashiers
+cashing
+cashmere
+casing
+casings
+casino
+casinos
+cask
+casket
+caskets
+casks
+casserole
+casseroled
+casseroles
+casseroling
+cassette
+cassettes
+cast
+castaway
+castaways
+caste
+caster
+casters
+castes
+castigate
+castigated
+castigates
+castigating
+castigation
+casting
+castings
+castle
+castled
+castles
+castling
+castoff
+castoffs
+castrate
+castrated
+castrates
+castrating
+castration
+castrations
+casts
+casual
+casually
+casualness
+casuals
+casualties
+casualty
+cat
+cataclysm
+cataclysmic
+cataclysms
+catalog
+cataloged
+cataloging
+catalogs
+catalyst
+catalysts
+catamaran
+catamarans
+catapult
+catapulted
+catapulting
+catapults
+cataract
+cataracts
+catastrophe
+catastrophes
+catastrophic
+catcall
+catcalled
+catcalling
+catcalls
+catch
+catches
+catchier
+catchiest
+catching
+catchings
+catchment
+catchy
+catechism
+catechisms
+categorical
+categorically
+categories
+categorize
+categorized
+categorizes
+categorizing
+category
+cater
+catered
+caterer
+caterers
+catering
+caterings
+caterpillar
+caterpillars
+caters
+catfish
+catfishes
+cathedral
+cathedrals
+catholic
+catnap
+catnapped
+catnapping
+catnaps
+catnip
+cats
+cattier
+cattiest
+cattle
+catty
+catwalk
+catwalks
+caucus
+caucused
+caucuses
+caucusing
+caught
+cauliflower
+cauliflowers
+caulk
+caulked
+caulking
+caulks
+causal
+causality
+cause
+caused
+causes
+causeway
+causeways
+causing
+caustic
+caustics
+caution
+cautionary
+cautioned
+cautioning
+cautions
+cautious
+cautiously
+cavalier
+cavaliers
+cavalries
+cavalry
+cave
+caveat
+caveats
+caved
+caveman
+cavemen
+cavern
+caverns
+caves
+caviar
+caving
+cavities
+cavity
+cavort
+cavorted
+cavorting
+cavorts
+caw
+cawed
+cawing
+caws
+cease
+ceased
+ceasefire
+ceaseless
+ceaselessly
+ceases
+ceasing
+cedar
+cedars
+cede
+ceded
+cedes
+ceding
+ceiling
+ceilings
+celebrate
+celebrated
+celebrates
+celebrating
+celebration
+celebrations
+celebrities
+celebrity
+celery
+celestial
+celibacy
+celibate
+celibates
+cell
+cellar
+cellars
+cellist
+cellists
+cello
+cellophane
+cellos
+cells
+cellular
+cellulars
+celluloid
+cellulose
+cement
+cemented
+cementing
+cements
+cemeteries
+cemetery
+censor
+censored
+censoring
+censors
+censorship
+censure
+censured
+censures
+censuring
+census
+censused
+censuses
+censusing
+cent
+centenaries
+centenary
+centennial
+centennials
+center
+centered
+centering
+centerpiece
+centerpieces
+centers
+centigrade
+centimeter
+centimeters
+centipede
+centipedes
+central
+centralize
+centralized
+centralizes
+centralizing
+centrally
+centrals
+centrifuge
+cents
+centuries
+century
+ceramic
+ceramics
+cereal
+cereals
+cerebral
+ceremonial
+ceremonials
+ceremonies
+ceremonious
+ceremony
+certain
+certainly
+certainties
+certainty
+certifiable
+certificate
+certificated
+certificates
+certificating
+certification
+certifications
+certified
+certifies
+certify
+certifying
+cervical
+cervices
+cervix
+cesarean
+cesareans
+cessation
+cessations
+cesspool
+cesspools
+chafe
+chafed
+chafes
+chaff
+chaffed
+chaffing
+chaffs
+chafing
+chagrin
+chagrined
+chagrining
+chagrins
+chain
+chained
+chaining
+chains
+chainsaw
+chainsawed
+chainsawing
+chainsaws
+chair
+chaired
+chairing
+chairman
+chairmanship
+chairmen
+chairperson
+chairpersons
+chairs
+chairwoman
+chairwomen
+chalet
+chalets
+chalice
+chalices
+chalk
+chalkboard
+chalkboards
+chalked
+chalkier
+chalkiest
+chalking
+chalks
+chalky
+challenge
+challenged
+challenger
+challengers
+challenges
+challenging
+chamber
+chambers
+chameleon
+chameleons
+champ
+champagne
+champagnes
+champed
+champing
+champion
+championed
+championing
+champions
+championship
+championships
+champs
+chance
+chanced
+chancellor
+chancellors
+chances
+chancing
+chandelier
+chandeliers
+change
+changeable
+changed
+changeover
+changeovers
+changes
+changing
+channel
+channeled
+channeling
+channels
+chant
+chanted
+chanting
+chants
+chaos
+chaotic
+chap
+chapel
+chapels
+chaperon
+chaperoned
+chaperoning
+chaperons
+chaplain
+chaplains
+chapped
+chapping
+chaps
+chapter
+chapters
+char
+character
+characteristic
+characteristically
+characteristics
+characterization
+characterizations
+characterize
+characterized
+characterizes
+characterizing
+characters
+charade
+charades
+charcoal
+charcoals
+charge
+chargeable
+charged
+charger
+charges
+charging
+chariot
+chariots
+charisma
+charismatic
+charismatics
+charitable
+charitably
+charities
+charity
+charlatan
+charlatans
+charm
+charmed
+charmer
+charmers
+charming
+charms
+charred
+charring
+chars
+chart
+charted
+charter
+chartered
+chartering
+charters
+charting
+charts
+chase
+chased
+chases
+chasing
+chasm
+chasms
+chassis
+chaste
+chasten
+chastened
+chastening
+chastens
+chaster
+chastest
+chastise
+chastised
+chastisement
+chastisements
+chastises
+chastising
+chastity
+chat
+chateau
+chateaus
+chateaux
+chats
+chatted
+chatter
+chatterbox
+chatterboxes
+chattered
+chattering
+chatters
+chattier
+chattiest
+chatting
+chatty
+chauffeur
+chauffeured
+chauffeuring
+chauffeurs
+chauvinism
+chauvinist
+chauvinistic
+chauvinists
+cheap
+cheapen
+cheapened
+cheapening
+cheapens
+cheaper
+cheapest
+cheaply
+cheapness
+cheapskate
+cheapskates
+cheat
+cheated
+cheater
+cheaters
+cheating
+cheats
+check
+checkbook
+checkbooks
+checked
+checker
+checkerboard
+checkerboards
+checkered
+checkering
+checkers
+checking
+checklist
+checklists
+checkmate
+checkmated
+checkmates
+checkmating
+checkout
+checkouts
+checkpoint
+checkpoints
+checks
+checkup
+checkups
+cheddar
+cheek
+cheekbone
+cheekbones
+cheeked
+cheeking
+cheeks
+cheep
+cheeped
+cheeping
+cheeps
+cheer
+cheered
+cheerful
+cheerfuller
+cheerfullest
+cheerfully
+cheerfulness
+cheerier
+cheeriest
+cheering
+cheerleader
+cheerleaders
+cheers
+cheery
+cheese
+cheeseburger
+cheeseburgers
+cheesecake
+cheesecakes
+cheesecloth
+cheesed
+cheeses
+cheesing
+cheetah
+cheetahs
+chef
+chefs
+chemical
+chemically
+chemicals
+chemist
+chemistry
+chemists
+chemotherapy
+cherish
+cherished
+cherishes
+cherishing
+cherries
+cherry
+cherub
+cherubim
+cherubs
+chess
+chessboard
+chessboards
+chest
+chestnut
+chestnuts
+chests
+chew
+chewed
+chewier
+chewiest
+chewing
+chews
+chewy
+chi
+chic
+chicer
+chicest
+chick
+chickadee
+chickadees
+chicken
+chickened
+chickening
+chickens
+chicks
+chide
+chided
+chides
+chiding
+chief
+chiefer
+chiefest
+chiefly
+chiefs
+chieftain
+chieftains
+chiffon
+child
+childbearing
+childbirth
+childbirths
+childcare
+childhood
+childhoods
+childish
+childishly
+childless
+childlike
+childproof
+childproofed
+childproofing
+childproofs
+children
+chili
+chilies
+chill
+chilled
+chiller
+chillest
+chillier
+chilliest
+chilling
+chillings
+chills
+chilly
+chime
+chimed
+chimes
+chiming
+chimney
+chimneys
+chimp
+chimpanzee
+chimpanzees
+chimps
+chin
+china
+chink
+chinked
+chinking
+chinks
+chinned
+chinning
+chino
+chinos
+chins
+chintz
+chip
+chipmunk
+chipmunks
+chipped
+chipper
+chippers
+chipping
+chips
+chiropractor
+chiropractors
+chirp
+chirped
+chirping
+chirps
+chisel
+chiseled
+chiseling
+chisels
+chit
+chitchat
+chitchats
+chitchatted
+chitchatting
+chits
+chivalrous
+chivalry
+chive
+chives
+chlorinate
+chlorinated
+chlorinates
+chlorinating
+chlorine
+chloroform
+chloroformed
+chloroforming
+chloroforms
+chlorophyll
+chocolate
+chocolates
+choice
+choicer
+choices
+choicest
+choir
+choirs
+choke
+choked
+chokes
+choking
+cholera
+cholesterol
+choose
+chooses
+choosier
+choosiest
+choosing
+choosy
+chop
+chopped
+chopper
+choppered
+choppering
+choppers
+choppier
+choppiest
+choppiness
+chopping
+choppy
+chops
+chopstick
+chopsticks
+choral
+chorals
+chord
+chords
+chore
+choreograph
+choreographed
+choreographer
+choreographers
+choreographing
+choreographs
+choreography
+chores
+chortle
+chortled
+chortles
+chortling
+chorus
+chorused
+choruses
+chorusing
+chose
+chosen
+chow
+chowder
+chowders
+chowed
+chowing
+chows
+christen
+christened
+christening
+christenings
+christens
+chrome
+chromed
+chromes
+chroming
+chromium
+chromosome
+chromosomes
+chronic
+chronically
+chronicle
+chronicled
+chronicles
+chronicling
+chronological
+chronologically
+chronologies
+chronology
+chrysanthemum
+chrysanthemums
+chubbier
+chubbiest
+chubby
+chuck
+chucked
+chucking
+chuckle
+chuckled
+chuckles
+chuckling
+chucks
+chug
+chugged
+chugging
+chugs
+chum
+chummed
+chummier
+chummiest
+chumming
+chummy
+chump
+chumps
+chums
+chunk
+chunkier
+chunkiest
+chunks
+chunky
+church
+churches
+churchgoer
+churchgoers
+churlish
+churn
+churned
+churning
+churns
+chute
+chutes
+chutzpah
+cider
+ciders
+cigar
+cigarette
+cigarettes
+cigars
+cinch
+cinched
+cinches
+cinching
+cinder
+cindered
+cindering
+cinders
+cinema
+cinemas
+cinematographer
+cinematographers
+cinnamon
+cipher
+ciphered
+ciphering
+ciphers
+circa
+circle
+circled
+circles
+circling
+circuit
+circuited
+circuiting
+circuitous
+circuitry
+circuits
+circular
+circulars
+circulate
+circulated
+circulates
+circulating
+circulation
+circulations
+circulatory
+circumcise
+circumcised
+circumcises
+circumcising
+circumcision
+circumcisions
+circumference
+circumferences
+circumflex
+circumstance
+circumstanced
+circumstances
+circumstancing
+circumstantial
+circumvent
+circumvented
+circumventing
+circumvention
+circumvents
+circus
+circuses
+cirrhosis
+cistern
+cisterns
+citation
+citations
+cite
+cited
+cites
+cities
+citing
+citizen
+citizens
+citizenship
+citric
+citrus
+citruses
+city
+civic
+civics
+civil
+civilian
+civilians
+civilities
+civility
+civilization
+civilizations
+civilize
+civilized
+civilizes
+civilizing
+civilly
+clack
+clacked
+clacking
+clacks
+clad
+claim
+claimed
+claiming
+claims
+clairvoyance
+clairvoyant
+clairvoyants
+clam
+clamber
+clambered
+clambering
+clambers
+clammed
+clammier
+clammiest
+clamming
+clammy
+clamor
+clamored
+clamoring
+clamors
+clamp
+clampdown
+clampdowns
+clamped
+clamping
+clamps
+clams
+clan
+clandestine
+clang
+clanged
+clanging
+clangs
+clank
+clanked
+clanking
+clanks
+clans
+clap
+clapboard
+clapboarded
+clapboarding
+clapboards
+clapped
+clapper
+clappers
+clapping
+claps
+claptrap
+claret
+clarification
+clarifications
+clarified
+clarifies
+clarify
+clarifying
+clarinet
+clarinets
+clarity
+clash
+clashed
+clashes
+clashing
+clasp
+clasped
+clasping
+clasps
+class
+classed
+classes
+classic
+classical
+classically
+classics
+classier
+classiest
+classification
+classifications
+classified
+classifieds
+classifies
+classify
+classifying
+classing
+classmate
+classmates
+classroom
+classrooms
+classy
+clatter
+clattered
+clattering
+clatters
+clause
+clauses
+claustrophobia
+claustrophobic
+claw
+clawed
+clawing
+claws
+clay
+clean
+cleaned
+cleaner
+cleaners
+cleanest
+cleaning
+cleanings
+cleanlier
+cleanliest
+cleanliness
+cleanly
+cleans
+cleanse
+cleansed
+cleanser
+cleansers
+cleanses
+cleansing
+cleanup
+cleanups
+clear
+clearance
+clearances
+cleared
+clearer
+clearest
+clearing
+clearings
+clearly
+clearness
+clears
+cleat
+cleats
+cleavage
+cleavages
+cleave
+cleaved
+cleaver
+cleavers
+cleaves
+cleaving
+clef
+clefs
+cleft
+clefts
+clemency
+clench
+clenched
+clenches
+clenching
+clergies
+clergy
+clergyman
+clergymen
+clergywoman
+clergywomen
+cleric
+clerical
+clerics
+clerk
+clerked
+clerking
+clerks
+clever
+cleverer
+cleverest
+cleverly
+cleverness
+cliche
+cliches
+click
+clicked
+clicking
+clicks
+client
+clientele
+clienteles
+clients
+cliff
+cliffhanger
+cliffhangers
+cliffs
+climactic
+climate
+climates
+climatic
+climax
+climaxed
+climaxes
+climaxing
+climb
+climbed
+climber
+climbers
+climbing
+climbs
+clime
+climes
+clinch
+clinched
+clinches
+clinching
+cling
+clinging
+clings
+clinic
+clinical
+clinically
+clinician
+clinicians
+clinics
+clink
+clinked
+clinking
+clinks
+clip
+clipboard
+clipboards
+clipped
+clipper
+clippers
+clipping
+clippings
+clips
+clique
+cliques
+clitoris
+clitorises
+cloak
+cloaked
+cloaking
+cloakroom
+cloakrooms
+cloaks
+clobber
+clobbered
+clobbering
+clobbers
+clock
+clocked
+clocking
+clocks
+clockwise
+clockwork
+clockworks
+clod
+clods
+clog
+clogged
+clogging
+clogs
+cloister
+cloistered
+cloistering
+cloisters
+clone
+cloned
+clones
+cloning
+close
+closed
+closely
+closeness
+closeout
+closeouts
+closer
+closes
+closest
+closet
+closeted
+closeting
+closets
+closing
+closure
+closures
+clot
+cloth
+clothe
+clothed
+clothes
+clothesline
+clotheslines
+clothespin
+clothespins
+clothing
+cloths
+clots
+clotted
+clotting
+cloud
+cloudburst
+cloudbursts
+clouded
+cloudier
+cloudiest
+clouding
+cloudless
+clouds
+cloudy
+clout
+clouted
+clouting
+clouts
+clove
+cloven
+clover
+clovers
+cloves
+clown
+clowned
+clowning
+clowns
+club
+clubbed
+clubbing
+clubhouse
+clubhouses
+clubs
+cluck
+clucked
+clucking
+clucks
+clue
+clued
+clueless
+clues
+cluing
+clump
+clumped
+clumping
+clumps
+clumsier
+clumsiest
+clumsily
+clumsiness
+clumsy
+clung
+clunk
+clunked
+clunking
+clunks
+cluster
+clustered
+clustering
+clusters
+clutch
+clutched
+clutches
+clutching
+clutter
+cluttered
+cluttering
+clutters
+coach
+coached
+coaches
+coaching
+coagulate
+coagulated
+coagulates
+coagulating
+coagulation
+coal
+coaled
+coalesce
+coalesced
+coalesces
+coalescing
+coaling
+coalition
+coalitions
+coals
+coarse
+coarsely
+coarsen
+coarsened
+coarseness
+coarsening
+coarsens
+coarser
+coarsest
+coast
+coastal
+coasted
+coaster
+coasters
+coasting
+coastline
+coastlines
+coasts
+coat
+coated
+coating
+coatings
+coats
+coax
+coaxed
+coaxes
+coaxing
+cob
+cobalt
+cobble
+cobbler
+cobblers
+cobblestone
+cobblestones
+cobra
+cobras
+cobs
+cobweb
+cobwebs
+cocaine
+cock
+cocked
+cockeyed
+cockier
+cockiest
+cockiness
+cocking
+cockpit
+cockpits
+cockroach
+cockroaches
+cocks
+cocktail
+cocktails
+cocky
+cocoa
+cocoas
+coconut
+coconuts
+cocoon
+cocooned
+cocooning
+cocoons
+cod
+codded
+codding
+code
+coded
+codes
+coding
+cods
+coed
+coeds
+coeducational
+coefficient
+coefficients
+coerce
+coerced
+coerces
+coercing
+coercion
+coercive
+coexist
+coexisted
+coexistence
+coexisting
+coexists
+coffee
+coffeehouse
+coffeehouses
+coffees
+coffer
+coffers
+coffin
+coffined
+coffining
+coffins
+cog
+cogency
+cogent
+cogently
+cognac
+cognacs
+cognitive
+cogs
+cohabit
+cohabitation
+cohabited
+cohabiting
+cohabits
+coherence
+coherent
+coherently
+cohesion
+coil
+coiled
+coiling
+coils
+coin
+coinage
+coinages
+coincide
+coincided
+coincidence
+coincidences
+coincidental
+coincidentally
+coincides
+coinciding
+coined
+coining
+coins
+coke
+coked
+cokes
+coking
+cola
+colander
+colanders
+colas
+cold
+colder
+coldest
+coldly
+coldness
+colds
+coleslaw
+colic
+collaborate
+collaborated
+collaborates
+collaborating
+collaboration
+collaborations
+collaborative
+collaborator
+collaborators
+collage
+collages
+collapse
+collapsed
+collapses
+collapsible
+collapsing
+collar
+collarbone
+collarbones
+collared
+collaring
+collars
+collate
+collated
+collateral
+collates
+collating
+collation
+colleague
+colleagues
+collect
+collected
+collectible
+collectibles
+collecting
+collection
+collections
+collective
+collectively
+collectives
+collector
+collectors
+collects
+college
+colleges
+collegiate
+collide
+collided
+collides
+colliding
+collie
+collies
+collision
+collisions
+colloquial
+colloquialism
+colloquialisms
+colloquially
+collusion
+cologne
+colognes
+colon
+colonel
+colonels
+colones
+colonial
+colonialism
+colonials
+colonies
+colonist
+colonists
+colonization
+colonize
+colonized
+colonizes
+colonizing
+colons
+colony
+color
+colorblind
+colored
+coloreds
+colorful
+coloring
+colorless
+colors
+colossal
+colt
+colts
+column
+columnist
+columnists
+columns
+coma
+comas
+comatose
+comb
+combat
+combatant
+combatants
+combated
+combating
+combative
+combats
+combed
+combination
+combinations
+combine
+combined
+combines
+combing
+combining
+combs
+combustible
+combustibles
+combustion
+come
+comeback
+comebacks
+comedian
+comedians
+comedies
+comedown
+comedowns
+comedy
+comelier
+comeliest
+comely
+comes
+comestible
+comestibles
+comet
+comets
+comeuppance
+comeuppances
+comfier
+comfiest
+comfort
+comfortable
+comfortably
+comforted
+comforter
+comforters
+comforting
+comforts
+comfy
+comic
+comical
+comics
+coming
+comings
+comma
+command
+commandant
+commandants
+commanded
+commandeer
+commandeered
+commandeering
+commandeers
+commander
+commanders
+commanding
+commandment
+commandments
+commando
+commandos
+commands
+commas
+commemorate
+commemorated
+commemorates
+commemorating
+commemoration
+commemorations
+commemorative
+commence
+commenced
+commencement
+commencements
+commences
+commencing
+commend
+commendable
+commendation
+commendations
+commended
+commending
+commends
+comment
+commentaries
+commentary
+commentate
+commentated
+commentates
+commentating
+commentator
+commentators
+commented
+commenting
+comments
+commerce
+commercial
+commercialism
+commercialize
+commercialized
+commercializes
+commercializing
+commercially
+commercials
+commiserate
+commiserated
+commiserates
+commiserating
+commiseration
+commiserations
+commission
+commissioned
+commissioner
+commissioners
+commissioning
+commissions
+commit
+commitment
+commitments
+commits
+committed
+committee
+committees
+committing
+commodities
+commodity
+commodore
+commodores
+common
+commoner
+commonest
+commonly
+commonplace
+commonplaces
+commons
+commonwealth
+commonwealths
+commotion
+commotions
+communal
+commune
+communed
+communes
+communicable
+communicate
+communicated
+communicates
+communicating
+communication
+communications
+communicative
+communicator
+communing
+communion
+communions
+communique
+communiques
+communism
+communist
+communists
+communities
+community
+commutative
+commute
+commuted
+commuter
+commuters
+commutes
+commuting
+compact
+compacted
+compacter
+compactest
+compacting
+compaction
+compacts
+companies
+companion
+companionable
+companions
+companionship
+company
+comparable
+comparative
+comparatively
+comparatives
+compare
+compared
+compares
+comparing
+comparison
+comparisons
+compartment
+compartmentalize
+compartmentalized
+compartmentalizes
+compartmentalizing
+compartments
+compass
+compassed
+compasses
+compassing
+compassion
+compassionate
+compatibility
+compatible
+compatibles
+compatriot
+compatriots
+compel
+compelled
+compelling
+compels
+compensate
+compensated
+compensates
+compensating
+compensation
+compensations
+compensatory
+compete
+competed
+competence
+competences
+competent
+competently
+competes
+competing
+competition
+competitions
+competitive
+competitively
+competitiveness
+competitor
+competitors
+compilation
+compilations
+compile
+compiled
+compiler
+compilers
+compiles
+compiling
+complacency
+complacent
+complain
+complained
+complaining
+complains
+complaint
+complaints
+complement
+complementary
+complemented
+complementing
+complements
+complete
+completed
+completely
+completeness
+completer
+completes
+completest
+completing
+completion
+complex
+complexes
+complexion
+complexioned
+complexions
+complexities
+complexity
+compliance
+compliant
+complicate
+complicated
+complicates
+complicating
+complication
+complications
+complicity
+complied
+complies
+compliment
+complimentary
+complimented
+complimenting
+compliments
+comply
+complying
+component
+components
+compose
+composed
+composer
+composers
+composes
+composing
+composite
+composites
+composition
+compositions
+compost
+composted
+composting
+composts
+composure
+compound
+compounded
+compounding
+compounds
+comprehend
+comprehended
+comprehending
+comprehends
+comprehensible
+comprehension
+comprehensions
+comprehensive
+comprehensively
+comprehensives
+compress
+compressed
+compresses
+compressing
+compression
+comprise
+comprised
+comprises
+comprising
+compromise
+compromised
+compromises
+compromising
+compulsion
+compulsions
+compulsive
+compulsories
+compulsory
+compunction
+compunctions
+computation
+computational
+computations
+compute
+computed
+computer
+computerize
+computerized
+computerizes
+computerizing
+computers
+computes
+computing
+comrade
+comrades
+comradeship
+con
+concatenate
+concatenated
+concatenates
+concatenating
+concatenation
+concatenations
+concave
+conceal
+concealed
+concealing
+concealment
+conceals
+concede
+conceded
+concedes
+conceding
+conceit
+conceited
+conceits
+conceivable
+conceivably
+conceive
+conceived
+conceives
+conceiving
+concentrate
+concentrated
+concentrates
+concentrating
+concentration
+concentrations
+concentric
+concept
+conception
+conceptions
+concepts
+conceptual
+conceptually
+concern
+concerned
+concerning
+concerns
+concert
+concerted
+concerting
+concerto
+concertos
+concerts
+concession
+concessions
+concierge
+concierges
+conciliate
+conciliated
+conciliates
+conciliating
+conciliation
+conciliatory
+concise
+concisely
+conciseness
+conciser
+concisest
+conclude
+concluded
+concludes
+concluding
+conclusion
+conclusions
+conclusive
+conclusively
+concoct
+concocted
+concocting
+concoction
+concoctions
+concocts
+concord
+concordance
+concourse
+concourses
+concrete
+concreted
+concretely
+concretes
+concreting
+concur
+concurred
+concurrence
+concurrences
+concurrency
+concurrent
+concurrently
+concurring
+concurs
+concussion
+concussions
+condemn
+condemnation
+condemnations
+condemned
+condemning
+condemns
+condensation
+condensations
+condense
+condensed
+condenses
+condensing
+condescend
+condescended
+condescending
+condescends
+condescension
+condiment
+condiments
+condition
+conditional
+conditionally
+conditionals
+conditioned
+conditioner
+conditioners
+conditioning
+conditions
+condo
+condolence
+condolences
+condom
+condominium
+condominiums
+condoms
+condone
+condoned
+condones
+condoning
+condor
+condors
+condos
+conducive
+conduct
+conducted
+conducting
+conductor
+conductors
+conducts
+cone
+cones
+confection
+confections
+confederacies
+confederacy
+confederate
+confederated
+confederates
+confederating
+confederation
+confederations
+confer
+conference
+conferences
+conferred
+conferrer
+conferring
+confers
+confess
+confessed
+confesses
+confessing
+confession
+confessions
+confetti
+confidant
+confidants
+confide
+confided
+confidence
+confidences
+confident
+confidential
+confidentiality
+confidentially
+confidently
+confides
+confiding
+configurable
+configuration
+configurations
+configure
+configured
+configures
+configuring
+confine
+confined
+confinement
+confinements
+confines
+confining
+confirm
+confirmation
+confirmations
+confirmed
+confirming
+confirms
+confiscate
+confiscated
+confiscates
+confiscating
+confiscation
+confiscations
+conflict
+conflicted
+conflicting
+conflicts
+conform
+conformed
+conforming
+conformist
+conformists
+conformity
+conforms
+confound
+confounded
+confounding
+confounds
+confront
+confrontation
+confrontations
+confronted
+confronting
+confronts
+confuse
+confused
+confuses
+confusing
+confusion
+congeal
+congealed
+congealing
+congeals
+congenial
+congenital
+congest
+congested
+congesting
+congestion
+congests
+conglomerate
+conglomerated
+conglomerates
+conglomerating
+congratulate
+congratulated
+congratulates
+congratulating
+congratulations
+congratulatory
+congregate
+congregated
+congregates
+congregating
+congregation
+congregations
+congress
+congresses
+congressional
+congressman
+congressmen
+congresswoman
+congresswomen
+congruent
+conical
+conifer
+coniferous
+conifers
+conjecture
+conjectured
+conjectures
+conjecturing
+conjugal
+conjugate
+conjugated
+conjugates
+conjugating
+conjugation
+conjugations
+conjunction
+conjunctions
+conjure
+conjured
+conjures
+conjuring
+connect
+connected
+connecting
+connection
+connections
+connective
+connectivity
+connector
+connectors
+connects
+conned
+conning
+connivance
+connive
+connived
+connives
+conniving
+connoisseur
+connoisseurs
+connotation
+connotations
+connote
+connoted
+connotes
+connoting
+conquer
+conquered
+conquering
+conqueror
+conquerors
+conquers
+conquest
+conquests
+cons
+conscience
+consciences
+conscientious
+conscientiously
+conscious
+consciously
+consciousness
+consciousnesses
+consecrate
+consecrated
+consecrates
+consecrating
+consecration
+consecrations
+consecutive
+consecutively
+consensus
+consensuses
+consent
+consented
+consenting
+consents
+consequence
+consequences
+consequent
+consequential
+consequently
+conservation
+conservationist
+conservationists
+conservatism
+conservative
+conservatively
+conservatives
+conservator
+conservatories
+conservators
+conservatory
+conserve
+conserved
+conserves
+conserving
+consider
+considerable
+considerably
+considerate
+considerately
+consideration
+considerations
+considered
+considering
+considers
+consign
+consigned
+consigning
+consignment
+consignments
+consigns
+consist
+consisted
+consistencies
+consistency
+consistent
+consistently
+consisting
+consists
+consolation
+consolations
+console
+consoled
+consoles
+consolidate
+consolidated
+consolidates
+consolidating
+consolidation
+consolidations
+consoling
+consomme
+consonant
+consonants
+consort
+consorted
+consortia
+consorting
+consortium
+consorts
+conspicuous
+conspicuously
+conspiracies
+conspiracy
+conspirator
+conspiratorial
+conspirators
+conspire
+conspired
+conspires
+conspiring
+constancy
+constant
+constantly
+constants
+constellation
+constellations
+consternation
+constipate
+constipated
+constipates
+constipating
+constipation
+constituencies
+constituency
+constituent
+constituents
+constitute
+constituted
+constitutes
+constituting
+constitution
+constitutional
+constitutionally
+constitutionals
+constitutions
+constrain
+constrained
+constraining
+constrains
+constraint
+constraints
+constrict
+constricted
+constricting
+constriction
+constrictions
+constricts
+construct
+constructed
+constructing
+construction
+constructions
+constructive
+constructively
+constructs
+construe
+construed
+construes
+construing
+consul
+consular
+consulate
+consulates
+consuls
+consult
+consultancy
+consultant
+consultants
+consultation
+consultations
+consulted
+consulting
+consults
+consumable
+consumables
+consume
+consumed
+consumer
+consumerism
+consumers
+consumes
+consuming
+consummate
+consummated
+consummates
+consummating
+consummation
+consummations
+consumption
+contact
+contacted
+contacting
+contacts
+contagion
+contagions
+contagious
+contain
+contained
+container
+containers
+containing
+contains
+contaminate
+contaminated
+contaminates
+contaminating
+contamination
+contemplate
+contemplated
+contemplates
+contemplating
+contemplation
+contemplative
+contemplatives
+contemporaries
+contemporary
+contempt
+contemptible
+contemptuous
+contend
+contended
+contender
+contenders
+contending
+contends
+content
+contented
+contentedly
+contenting
+contention
+contentions
+contentious
+contentment
+contents
+contest
+contestant
+contestants
+contested
+contesting
+contests
+context
+contexts
+contextual
+contiguous
+continent
+continental
+continentals
+continents
+contingencies
+contingency
+contingent
+contingents
+continual
+continually
+continuation
+continuations
+continue
+continued
+continues
+continuing
+continuity
+continuous
+continuously
+continuum
+contort
+contorted
+contorting
+contortion
+contortions
+contorts
+contour
+contoured
+contouring
+contours
+contraband
+contraception
+contraceptive
+contraceptives
+contract
+contracted
+contracting
+contraction
+contractions
+contractor
+contractors
+contracts
+contractual
+contradict
+contradicted
+contradicting
+contradiction
+contradictions
+contradictory
+contradicts
+contraption
+contraptions
+contraries
+contrary
+contrast
+contrasted
+contrasting
+contrasts
+contravene
+contravened
+contravenes
+contravening
+contravention
+contraventions
+contribute
+contributed
+contributes
+contributing
+contribution
+contributions
+contributor
+contributors
+contributory
+contrite
+contrition
+contrive
+contrived
+contrives
+contriving
+control
+controllable
+controlled
+controller
+controllers
+controlling
+controls
+controversial
+controversies
+controversy
+convalesce
+convalesced
+convalescence
+convalescences
+convalescent
+convalescents
+convalesces
+convalescing
+convection
+convene
+convened
+convenes
+convenience
+conveniences
+convenient
+conveniently
+convening
+convent
+convention
+conventional
+conventionally
+conventions
+convents
+converge
+converged
+convergence
+converges
+converging
+conversant
+conversation
+conversational
+conversations
+converse
+conversed
+conversely
+converses
+conversing
+conversion
+conversions
+convert
+converted
+converter
+converters
+convertible
+convertibles
+converting
+converts
+convex
+convey
+conveyance
+conveyances
+conveyed
+conveying
+conveys
+convict
+convicted
+convicting
+conviction
+convictions
+convicts
+convince
+convinced
+convinces
+convincing
+convincingly
+convivial
+convoluted
+convoy
+convoyed
+convoying
+convoys
+convulse
+convulsed
+convulses
+convulsing
+convulsion
+convulsions
+convulsive
+coo
+cooed
+cooing
+cook
+cookbook
+cookbooks
+cooked
+cooker
+cookie
+cookies
+cooking
+cookout
+cookouts
+cooks
+cool
+cooled
+cooler
+coolers
+coolest
+cooling
+coolly
+coolness
+cools
+coop
+cooped
+cooper
+cooperate
+cooperated
+cooperates
+cooperating
+cooperation
+cooperative
+cooperatives
+cooping
+coops
+coordinate
+coordinated
+coordinates
+coordinating
+coordination
+coordinator
+coordinators
+coos
+cop
+cope
+coped
+copes
+copied
+copier
+copiers
+copies
+copilot
+copilots
+coping
+copious
+copiously
+copped
+copper
+copperhead
+copperheads
+coppers
+copping
+cops
+copter
+copters
+copulate
+copulated
+copulates
+copulating
+copulation
+copy
+copying
+copyright
+copyrighted
+copyrighting
+copyrights
+coral
+corals
+cord
+corded
+cordial
+cordiality
+cordially
+cordials
+cording
+cordless
+cordon
+cordoned
+cordoning
+cordons
+cords
+corduroy
+core
+cored
+cores
+coring
+cork
+corked
+corking
+corks
+corkscrew
+corkscrewed
+corkscrewing
+corkscrews
+corn
+cornbread
+cornea
+corneas
+corned
+corner
+cornered
+cornering
+corners
+cornerstone
+cornerstones
+cornet
+cornets
+cornflakes
+cornier
+corniest
+corning
+cornmeal
+corns
+cornstarch
+corny
+corollary
+coronaries
+coronary
+coronation
+coronations
+coroner
+coroners
+corporal
+corporals
+corporate
+corporation
+corporations
+corps
+corpse
+corpses
+corpulent
+corpus
+corpuscle
+corpuscles
+corral
+corralled
+corralling
+corrals
+correct
+corrected
+correcter
+correctest
+correcting
+correction
+corrections
+corrective
+correctives
+correctly
+correctness
+corrector
+corrects
+correlate
+correlated
+correlates
+correlating
+correlation
+correlations
+correspond
+corresponded
+correspondence
+correspondences
+correspondent
+correspondents
+corresponding
+correspondingly
+corresponds
+corridor
+corridors
+corroborate
+corroborated
+corroborates
+corroborating
+corroboration
+corroborations
+corrode
+corroded
+corrodes
+corroding
+corrosion
+corrosive
+corrosives
+corrugate
+corrugated
+corrugates
+corrugating
+corrupt
+corrupted
+corrupter
+corruptest
+corruptible
+corrupting
+corruption
+corruptions
+corrupts
+corsage
+corsages
+corset
+corseted
+corseting
+corsets
+cortex
+cosmetic
+cosmetics
+cosmic
+cosmology
+cosmonaut
+cosmonauts
+cosmopolitan
+cosmopolitans
+cosmos
+cosmoses
+cost
+costar
+costarred
+costarring
+costars
+costed
+costing
+costings
+costlier
+costliest
+costly
+costs
+costume
+costumed
+costumes
+costuming
+cot
+cots
+cottage
+cottages
+cotton
+cottoned
+cottoning
+cottons
+cottontail
+cottontails
+cottonwood
+cottonwoods
+couch
+couched
+couches
+couching
+cougar
+cougars
+cough
+coughed
+coughing
+coughs
+could
+council
+councilor
+councilors
+councils
+counsel
+counseled
+counseling
+counselings
+counselor
+counselors
+counsels
+count
+countable
+countdown
+countdowns
+counted
+countenance
+countenanced
+countenances
+countenancing
+counter
+counteract
+counteracted
+counteracting
+counteracts
+counterattack
+counterattacked
+counterattacking
+counterattacks
+counterbalance
+counterbalanced
+counterbalances
+counterbalancing
+counterclockwise
+countered
+counterexample
+counterfeit
+counterfeited
+counterfeiter
+counterfeiters
+counterfeiting
+counterfeits
+countering
+counterpart
+counterparts
+counterproductive
+counters
+countersign
+countersigned
+countersigning
+countersigns
+countess
+countesses
+counties
+counting
+countless
+countries
+country
+countryman
+countrymen
+countryside
+countrysides
+countrywoman
+countrywomen
+counts
+county
+coup
+couple
+coupled
+couples
+coupling
+coupon
+coupons
+coups
+courage
+courageous
+courageously
+courier
+couriers
+course
+coursed
+courser
+courses
+coursing
+court
+courted
+courteous
+courteously
+courtesies
+courtesy
+courthouse
+courthouses
+courting
+courtroom
+courtrooms
+courts
+courtship
+courtships
+courtyard
+courtyards
+cousin
+cousins
+cove
+covenant
+covenanted
+covenanting
+covenants
+cover
+coverage
+coverall
+coveralls
+covered
+covering
+coverings
+covers
+covert
+covertly
+coverts
+coves
+covet
+coveted
+coveting
+covetous
+covets
+cow
+coward
+cowardice
+cowardly
+cowards
+cowboy
+cowboys
+cowed
+cower
+cowered
+cowering
+cowers
+cowgirl
+cowgirls
+cowhide
+cowhides
+cowing
+coworker
+coworkers
+cows
+cox
+coy
+coyer
+coyest
+coyote
+coyotes
+cozier
+cozies
+coziest
+cozily
+coziness
+cozy
+crab
+crabbed
+crabbier
+crabbiest
+crabbing
+crabby
+crabs
+crack
+crackdown
+crackdowns
+cracked
+cracker
+crackers
+cracking
+crackle
+crackled
+crackles
+crackling
+crackpot
+crackpots
+cracks
+cradle
+cradled
+cradles
+cradling
+craft
+crafted
+craftier
+craftiest
+craftily
+crafting
+crafts
+craftsman
+craftsmanship
+craftsmen
+crafty
+crag
+craggier
+craggiest
+craggy
+crags
+cram
+crammed
+cramming
+cramp
+cramped
+cramping
+cramps
+crams
+cranberries
+cranberry
+crane
+craned
+cranes
+craning
+cranium
+craniums
+crank
+cranked
+crankier
+crankiest
+cranking
+cranks
+cranky
+crannies
+cranny
+crap
+crapped
+crappier
+crappiest
+crapping
+crappy
+craps
+crash
+crashed
+crashes
+crashing
+crass
+crasser
+crassest
+crate
+crated
+crater
+cratered
+cratering
+craters
+crates
+crating
+cravat
+cravats
+crave
+craved
+craves
+craving
+cravings
+crawl
+crawled
+crawling
+crawls
+crayfish
+crayfishes
+crayon
+crayoned
+crayoning
+crayons
+craze
+crazed
+crazes
+crazier
+crazies
+craziest
+crazily
+craziness
+crazing
+crazy
+creak
+creaked
+creakier
+creakiest
+creaking
+creaks
+creaky
+cream
+creamed
+creamier
+creamiest
+creaming
+creams
+creamy
+crease
+creased
+creases
+creasing
+create
+created
+creates
+creating
+creation
+creations
+creative
+creatively
+creatives
+creativity
+creator
+creators
+creature
+creatures
+credence
+credential
+credentials
+credibility
+credible
+credibly
+credit
+creditable
+credited
+crediting
+creditor
+creditors
+credits
+credo
+credos
+credulous
+creed
+creeds
+creek
+creeks
+creep
+creepier
+creepiest
+creeping
+creeps
+creepy
+cremate
+cremated
+cremates
+cremating
+cremation
+cremations
+crematoria
+crematorium
+crematoriums
+creole
+creoles
+crepe
+crepes
+crept
+crescendo
+crescendos
+crescent
+crescents
+crest
+crested
+crestfallen
+cresting
+crests
+cretin
+cretinous
+cretins
+crevasse
+crevasses
+crevice
+crevices
+crew
+crewed
+crewing
+crews
+crib
+cribbed
+cribbing
+cribs
+crick
+cricked
+cricket
+crickets
+cricking
+cricks
+cried
+cries
+crime
+crimes
+criminal
+criminally
+criminals
+crimp
+crimped
+crimping
+crimps
+crimson
+crimsoned
+crimsoning
+crimsons
+cringe
+cringed
+cringes
+cringing
+crinkle
+crinkled
+crinkles
+crinklier
+crinkliest
+crinkling
+crinkly
+cripple
+crippled
+cripples
+crippling
+crises
+crisis
+crisp
+crisped
+crisper
+crispest
+crispier
+crispiest
+crisping
+crisply
+crisps
+crispy
+crisscross
+crisscrossed
+crisscrosses
+crisscrossing
+criteria
+criterion
+critic
+critical
+critically
+criticism
+criticisms
+criticize
+criticized
+criticizes
+criticizing
+critics
+critique
+critiqued
+critiques
+critiquing
+critter
+critters
+croak
+croaked
+croaking
+croaks
+crochet
+crocheted
+crocheting
+crochets
+crock
+crockery
+crocks
+crocodile
+crocodiles
+crocus
+crocuses
+crofts
+croissant
+croissants
+cronies
+crony
+crook
+crooked
+crookeder
+crookedest
+crooking
+crooks
+croon
+crooned
+crooner
+crooners
+crooning
+croons
+crop
+cropped
+cropping
+crops
+croquet
+cross
+crossbow
+crossbows
+crosscheck
+crosschecked
+crosschecking
+crosschecks
+crossed
+crosser
+crosses
+crossest
+crossfire
+crossfires
+crossing
+crossings
+crossover
+crossovers
+crossroad
+crossroads
+crosstown
+crosswalk
+crosswalks
+crossword
+crosswords
+crotch
+crotches
+crouch
+crouched
+crouches
+crouching
+crow
+crowbar
+crowbars
+crowd
+crowded
+crowding
+crowds
+crowed
+crowing
+crown
+crowned
+crowning
+crowns
+crows
+crucial
+crucially
+crucified
+crucifies
+crucifix
+crucifixes
+crucifixion
+crucifixions
+crucify
+crucifying
+crud
+cruddier
+cruddiest
+cruddy
+crude
+crudely
+cruder
+crudest
+crudity
+cruel
+crueler
+cruelest
+cruelly
+cruelties
+cruelty
+cruise
+cruised
+cruiser
+cruisers
+cruises
+cruising
+crumb
+crumbed
+crumbing
+crumble
+crumbled
+crumbles
+crumblier
+crumbliest
+crumbling
+crumbly
+crumbs
+crummier
+crummiest
+crummy
+crumple
+crumpled
+crumples
+crumpling
+crunch
+crunched
+crunches
+crunchier
+crunchiest
+crunching
+crunchy
+crusade
+crusaded
+crusader
+crusaders
+crusades
+crusading
+crush
+crushed
+crushes
+crushing
+crust
+crustacean
+crustaceans
+crusted
+crustier
+crustiest
+crusting
+crusts
+crusty
+crutch
+crutches
+crux
+cruxes
+cry
+crybabies
+crybaby
+crying
+cryings
+crypt
+cryptic
+cryptically
+crypts
+crystal
+crystallization
+crystallize
+crystallized
+crystallizes
+crystallizing
+crystals
+cs
+cub
+cube
+cubed
+cubes
+cubic
+cubicle
+cubicles
+cubing
+cubs
+cuckoo
+cuckoos
+cucumber
+cucumbers
+cuddle
+cuddled
+cuddles
+cuddlier
+cuddliest
+cuddling
+cuddly
+cue
+cued
+cues
+cuff
+cuffed
+cuffing
+cuffs
+cuing
+cuisine
+cuisines
+culinary
+cull
+culled
+culling
+culls
+culminate
+culminated
+culminates
+culminating
+culmination
+culminations
+culpability
+culpable
+culprit
+culprits
+cult
+cultivate
+cultivated
+cultivates
+cultivating
+cultivation
+cults
+cultural
+culturally
+culture
+cultured
+cultures
+culturing
+cumbersome
+cumulative
+cunning
+cunninger
+cunningest
+cunningly
+cup
+cupboard
+cupboards
+cupcake
+cupcakes
+cupful
+cupfuls
+cupped
+cupping
+cups
+cur
+curable
+curator
+curators
+curb
+curbed
+curbing
+curbs
+curd
+curdle
+curdled
+curdles
+curdling
+curds
+cure
+cured
+cures
+curfew
+curfews
+curing
+curio
+curios
+curiosities
+curiosity
+curious
+curiously
+curl
+curled
+curler
+curlers
+curlier
+curliest
+curling
+curls
+curly
+currant
+currants
+currencies
+currency
+current
+currently
+currents
+curricula
+curriculum
+curried
+curries
+curry
+currying
+curse
+cursed
+curses
+cursing
+cursor
+cursors
+cursory
+curt
+curtail
+curtailed
+curtailing
+curtails
+curtain
+curtained
+curtaining
+curtains
+curter
+curtest
+curtsied
+curtsies
+curtsy
+curtsying
+curvature
+curvatures
+curve
+curved
+curves
+curvier
+curviest
+curving
+curvy
+cushion
+cushioned
+cushioning
+cushions
+cuss
+cussed
+cusses
+cussing
+custard
+custards
+custodial
+custodian
+custodians
+custody
+custom
+customarily
+customary
+customer
+customers
+customization
+customize
+customized
+customizes
+customizing
+customs
+cut
+cutback
+cutbacks
+cute
+cutely
+cuteness
+cuter
+cutest
+cuticle
+cuticles
+cutlery
+cutlet
+cutlets
+cutoff
+cutoffs
+cuts
+cutter
+cutters
+cutthroat
+cutthroats
+cutting
+cuttings
+cyanide
+cybernetics
+cyberspace
+cycle
+cycled
+cycles
+cyclic
+cyclical
+cycling
+cyclist
+cyclists
+cyclone
+cyclones
+cylinder
+cylinders
+cylindrical
+cymbal
+cymbals
+cynic
+cynical
+cynically
+cynicism
+cynics
+cypress
+cypresses
+cyst
+cysts
+czar
+czars
+dab
+dabbed
+dabbing
+dabble
+dabbled
+dabbles
+dabbling
+dabs
+dachshund
+dachshunds
+dad
+daddies
+daddy
+dads
+daemon
+daffodil
+daffodils
+daft
+dagger
+daggers
+dailies
+daily
+daintier
+dainties
+daintiest
+daintily
+dainty
+dairies
+dairy
+dais
+daises
+daisies
+daisy
+dallied
+dallies
+dally
+dallying
+dam
+damage
+damaged
+damages
+damaging
+dame
+dames
+dammed
+damming
+damn
+damnation
+damned
+damnedest
+damning
+damns
+damp
+damped
+dampen
+dampened
+dampening
+dampens
+damper
+dampers
+dampest
+damping
+dampness
+damps
+dams
+damsel
+damsels
+dance
+danced
+dancer
+dancers
+dances
+dancing
+dandelion
+dandelions
+dandier
+dandies
+dandiest
+dandruff
+dandy
+danger
+dangerous
+dangerously
+dangers
+dangle
+dangled
+dangles
+dangling
+dank
+danker
+dankest
+dapper
+dapperer
+dapperest
+dare
+dared
+daredevil
+daredevils
+dares
+daring
+dark
+darken
+darkened
+darkening
+darkens
+darker
+darkest
+darkly
+darkness
+darkroom
+darkrooms
+darling
+darlings
+darn
+darned
+darneder
+darnedest
+darning
+darns
+dart
+darted
+darting
+darts
+dash
+dashboard
+dashboards
+dashed
+dashes
+dashing
+dastardly
+data
+database
+databases
+date
+dated
+dates
+dating
+datum
+daub
+daubed
+daubing
+daubs
+daughter
+daughters
+daunt
+daunted
+daunting
+dauntless
+daunts
+dawdle
+dawdled
+dawdles
+dawdling
+dawn
+dawned
+dawning
+dawns
+day
+daybreak
+daydream
+daydreamed
+daydreamer
+daydreamers
+daydreaming
+daydreams
+daylight
+days
+daytime
+daze
+dazed
+dazes
+dazing
+dazzle
+dazzled
+dazzles
+dazzling
+deacon
+deaconess
+deaconesses
+deacons
+dead
+deaden
+deadened
+deadening
+deadens
+deader
+deadest
+deadlier
+deadliest
+deadline
+deadlines
+deadlock
+deadlocked
+deadlocking
+deadlocks
+deadly
+deadpan
+deadpanned
+deadpanning
+deadpans
+deaf
+deafen
+deafened
+deafening
+deafens
+deafer
+deafest
+deafness
+deal
+dealer
+dealers
+dealership
+dealerships
+dealing
+dealings
+deals
+dealt
+dean
+deans
+dear
+dearer
+dearest
+dearly
+dears
+dearth
+dearths
+death
+deathbed
+deathbeds
+deaths
+deathtrap
+deathtraps
+deaves
+debase
+debased
+debasement
+debasements
+debases
+debasing
+debatable
+debate
+debated
+debates
+debating
+debaucheries
+debauchery
+debilitate
+debilitated
+debilitates
+debilitating
+debilities
+debility
+debit
+debited
+debiting
+debits
+debonair
+debrief
+debriefed
+debriefing
+debriefings
+debriefs
+debris
+debt
+debtor
+debtors
+debts
+debug
+debugged
+debugger
+debugging
+debugs
+debunk
+debunked
+debunking
+debunks
+debut
+debutante
+debutantes
+debuted
+debuting
+debuts
+decade
+decadence
+decadent
+decadents
+decades
+decaf
+decaffeinate
+decaffeinated
+decaffeinates
+decaffeinating
+decal
+decals
+decanter
+decanters
+decapitate
+decapitated
+decapitates
+decapitating
+decathlon
+decathlons
+decay
+decayed
+decaying
+decays
+decease
+deceased
+deceases
+deceasing
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceits
+deceive
+deceived
+deceives
+deceiving
+decencies
+decency
+decent
+decently
+decentralization
+decentralize
+decentralized
+decentralizes
+decentralizing
+deception
+deceptions
+deceptive
+deceptively
+decibel
+decibels
+decide
+decided
+decidedly
+decides
+deciding
+deciduous
+decimal
+decimals
+decimate
+decimated
+decimates
+decimating
+decipher
+deciphered
+deciphering
+deciphers
+decision
+decisions
+decisive
+decisively
+deck
+decked
+decking
+decks
+declaration
+declarations
+declare
+declared
+declares
+declaring
+declension
+decline
+declined
+declines
+declining
+decode
+decoded
+decoder
+decodes
+decoding
+decompose
+decomposed
+decomposes
+decomposing
+decomposition
+decor
+decorate
+decorated
+decorates
+decorating
+decoration
+decorations
+decorative
+decorator
+decorators
+decorous
+decors
+decorum
+decoy
+decoyed
+decoying
+decoys
+decrease
+decreased
+decreases
+decreasing
+decree
+decreed
+decreeing
+decrees
+decrepit
+decried
+decries
+decriminalize
+decriminalized
+decriminalizes
+decriminalizing
+decry
+decrying
+dedicate
+dedicated
+dedicates
+dedicating
+dedication
+dedications
+deduce
+deduced
+deduces
+deducing
+deduct
+deducted
+deductible
+deductibles
+deducting
+deduction
+deductions
+deductive
+deducts
+deed
+deeded
+deeding
+deeds
+deem
+deemed
+deeming
+deems
+deep
+deepen
+deepened
+deepening
+deepens
+deeper
+deepest
+deeply
+deeps
+deer
+deface
+defaced
+defaces
+defacing
+defamation
+defamatory
+defame
+defamed
+defames
+defaming
+default
+defaulted
+defaulting
+defaults
+defeat
+defeated
+defeating
+defeatist
+defeatists
+defeats
+defecate
+defecated
+defecates
+defecating
+defect
+defected
+defecting
+defection
+defections
+defective
+defectives
+defector
+defectors
+defects
+defend
+defendant
+defendants
+defended
+defender
+defenders
+defending
+defends
+defense
+defensed
+defenseless
+defenses
+defensible
+defensing
+defensive
+defensively
+defer
+deference
+deferential
+deferred
+deferring
+defers
+defiance
+defiant
+defiantly
+deficiencies
+deficiency
+deficient
+deficit
+deficits
+defied
+defies
+defile
+defiled
+defiles
+defiling
+definable
+define
+defined
+defines
+defining
+definite
+definitely
+definition
+definitions
+definitive
+definitively
+deflate
+deflated
+deflates
+deflating
+deflation
+deflect
+deflected
+deflecting
+deflection
+deflections
+deflects
+deforestation
+deform
+deformation
+deformations
+deformed
+deforming
+deformities
+deformity
+deforms
+defraud
+defrauded
+defrauding
+defrauds
+defrost
+defrosted
+defrosting
+defrosts
+deft
+defter
+deftest
+deftly
+defunct
+defuse
+defused
+defuses
+defusing
+defy
+defying
+degenerate
+degenerated
+degenerates
+degenerating
+degeneration
+degradation
+degrade
+degraded
+degrades
+degrading
+degree
+degrees
+dehydrate
+dehydrated
+dehydrates
+dehydrating
+dehydration
+deified
+deifies
+deify
+deifying
+deign
+deigned
+deigning
+deigns
+deities
+deity
+deject
+dejected
+dejectedly
+dejecting
+dejection
+dejects
+delay
+delayed
+delaying
+delays
+delectable
+delegate
+delegated
+delegates
+delegating
+delegation
+delegations
+delete
+deleted
+deleterious
+deletes
+deleting
+deletion
+deletions
+deli
+deliberate
+deliberated
+deliberately
+deliberates
+deliberating
+deliberation
+deliberations
+delicacies
+delicacy
+delicate
+delicately
+delicatessen
+delicatessens
+delicious
+deliciously
+delight
+delighted
+delightful
+delightfully
+delighting
+delights
+delimit
+delimited
+delimiter
+delimiters
+delimiting
+delimits
+delineate
+delineated
+delineates
+delineating
+delinquencies
+delinquency
+delinquent
+delinquents
+delirious
+deliriously
+delirium
+deliriums
+delis
+deliver
+deliverance
+delivered
+deliveries
+delivering
+delivers
+delivery
+delta
+deltas
+delude
+deluded
+deludes
+deluding
+deluge
+deluged
+deluges
+deluging
+delusion
+delusions
+deluxe
+delve
+delved
+delves
+delving
+demagogic
+demagogue
+demagogues
+demand
+demanded
+demanding
+demands
+demean
+demeaned
+demeaning
+demeanor
+demeans
+demented
+dementia
+demerit
+demerits
+demise
+demised
+demises
+demising
+demo
+democracies
+democracy
+democrat
+democratic
+democratically
+democrats
+demoed
+demographic
+demographics
+demoing
+demolish
+demolished
+demolishes
+demolishing
+demolition
+demolitions
+demon
+demonic
+demons
+demonstrably
+demonstrate
+demonstrated
+demonstrates
+demonstrating
+demonstration
+demonstrations
+demonstrative
+demonstratives
+demonstrator
+demonstrators
+demoralize
+demoralized
+demoralizes
+demoralizing
+demos
+demote
+demoted
+demotes
+demoting
+demotion
+demotions
+demount
+demure
+demurely
+demurer
+demurest
+den
+denial
+denials
+denied
+denies
+denigrate
+denigrated
+denigrates
+denigrating
+denim
+denims
+denomination
+denominations
+denominator
+denominators
+denote
+denoted
+denotes
+denoting
+denounce
+denounced
+denounces
+denouncing
+dens
+dense
+densely
+denser
+densest
+densities
+density
+dent
+dental
+dented
+denting
+dentist
+dentistry
+dentists
+dents
+denture
+dentures
+denunciation
+denunciations
+deny
+denying
+deodorant
+deodorants
+deodorize
+deodorized
+deodorizes
+deodorizing
+depart
+departed
+departing
+department
+departmental
+departments
+departs
+departure
+departures
+depend
+dependable
+depended
+dependence
+dependencies
+dependency
+dependent
+dependents
+depending
+depends
+depict
+depicted
+depicting
+depiction
+depicts
+deplete
+depleted
+depletes
+depleting
+depletion
+deplorable
+deplorably
+deplore
+deplored
+deplores
+deploring
+deploy
+deployed
+deploying
+deployment
+deployments
+deploys
+deport
+deportation
+deportations
+deported
+deporting
+deportment
+deports
+depose
+deposed
+deposes
+deposing
+deposit
+deposited
+depositing
+deposits
+depot
+depots
+deprave
+depraved
+depraves
+depraving
+depravities
+depravity
+deprecate
+deprecated
+deprecates
+deprecating
+depreciate
+depreciated
+depreciates
+depreciating
+depreciation
+depress
+depressed
+depresses
+depressing
+depressingly
+depression
+depressions
+deprivation
+deprivations
+deprive
+deprived
+deprives
+depriving
+depth
+depths
+deputies
+deputy
+derail
+derailed
+derailing
+derailment
+derailments
+derails
+derange
+deranged
+deranges
+deranging
+derbies
+derby
+derelict
+derelicts
+deride
+derided
+derides
+deriding
+derision
+derivation
+derivations
+derivative
+derivatives
+derive
+derived
+derives
+deriving
+derogatory
+derrick
+derricks
+descend
+descendant
+descendants
+descended
+descending
+descends
+descent
+descents
+describable
+describe
+described
+describes
+describing
+description
+descriptions
+descriptive
+descriptor
+descriptors
+desecrate
+desecrated
+desecrates
+desecrating
+desecration
+desegregate
+desegregated
+desegregates
+desegregating
+desegregation
+desert
+deserted
+deserter
+deserters
+deserting
+deserts
+deserve
+deserved
+deserves
+deserving
+design
+designate
+designated
+designates
+designating
+designation
+designations
+designed
+designer
+designers
+designing
+designs
+desirability
+desirable
+desire
+desired
+desires
+desiring
+desirous
+desist
+desisted
+desisting
+desists
+desk
+desks
+desktop
+desktops
+desolate
+desolated
+desolates
+desolating
+desolation
+despair
+despaired
+despairing
+despairs
+desperate
+desperately
+desperation
+despicable
+despise
+despised
+despises
+despising
+despite
+despondent
+despondently
+despot
+despotic
+despots
+dessert
+desserts
+destabilize
+destination
+destinations
+destine
+destined
+destines
+destinies
+destining
+destiny
+destitute
+destitution
+destroy
+destroyed
+destroyer
+destroyers
+destroying
+destroys
+destruction
+destructive
+detach
+detachable
+detached
+detaches
+detaching
+detachment
+detachments
+detail
+detailed
+detailing
+details
+detain
+detained
+detaining
+detains
+detect
+detectable
+detected
+detecting
+detection
+detective
+detectives
+detector
+detectors
+detects
+detente
+detentes
+detention
+detentions
+deter
+detergent
+detergents
+deteriorate
+deteriorated
+deteriorates
+deteriorating
+deterioration
+determinable
+determination
+determinations
+determine
+determined
+determiner
+determiners
+determines
+determining
+determinism
+deterministic
+deterred
+deterrence
+deterrent
+deterrents
+deterring
+deters
+detest
+detested
+detesting
+detests
+dethrone
+dethroned
+dethrones
+dethroning
+detonate
+detonated
+detonates
+detonating
+detonation
+detonations
+detonator
+detonators
+detour
+detoured
+detouring
+detours
+detox
+detoxed
+detoxes
+detoxing
+detract
+detracted
+detracting
+detracts
+detriment
+detrimental
+detriments
+devaluation
+devaluations
+devalue
+devalued
+devalues
+devaluing
+devastate
+devastated
+devastates
+devastating
+devastation
+develop
+developed
+developer
+developers
+developing
+development
+developments
+develops
+deviant
+deviants
+deviate
+deviated
+deviates
+deviating
+deviation
+deviations
+device
+devices
+devil
+deviled
+deviling
+devilish
+devils
+devious
+devise
+devised
+devises
+devising
+devoid
+devolution
+devolve
+devolved
+devolves
+devolving
+devote
+devoted
+devotedly
+devotee
+devotees
+devotes
+devoting
+devotion
+devotions
+devour
+devoured
+devouring
+devours
+devout
+devouter
+devoutest
+devoutly
+dew
+dexterity
+dexterous
+diabetes
+diabetic
+diabetics
+diabolical
+diagnose
+diagnosed
+diagnoses
+diagnosing
+diagnosis
+diagnostic
+diagnostics
+diagonal
+diagonally
+diagonals
+diagram
+diagrammed
+diagramming
+diagrams
+dial
+dialect
+dialects
+dialed
+dialing
+dialings
+dialog
+dialogue
+dialogues
+dials
+diameter
+diameters
+diametrically
+diamond
+diamonds
+diaper
+diapered
+diapering
+diapers
+diaphragm
+diaphragms
+diaries
+diarrhea
+diary
+diatribe
+dice
+diced
+dices
+dicey
+dichotomies
+dichotomy
+dicier
+diciest
+dicing
+dick
+dicks
+dictate
+dictated
+dictates
+dictating
+dictation
+dictations
+dictator
+dictatorial
+dictators
+dictatorship
+dictatorships
+diction
+dictionaries
+dictionary
+did
+die
+died
+dies
+diesel
+dieseled
+dieseling
+diesels
+diet
+dietaries
+dietary
+dieted
+dieting
+diets
+differ
+differed
+difference
+differences
+different
+differential
+differentiate
+differentiated
+differentiates
+differentiating
+differentiation
+differently
+differing
+differs
+difficult
+difficulties
+difficulty
+diffuse
+diffused
+diffuses
+diffusing
+diffusion
+dig
+digest
+digested
+digestible
+digesting
+digestion
+digestions
+digestive
+digests
+digging
+digit
+digital
+digitally
+digitize
+digitized
+digitizes
+digitizing
+digits
+dignified
+dignifies
+dignify
+dignifying
+dignitaries
+dignitary
+dignities
+dignity
+digress
+digressed
+digresses
+digressing
+digression
+digressions
+digs
+dike
+diked
+dikes
+diking
+dilapidated
+dilapidation
+dilate
+dilated
+dilates
+dilating
+dilation
+dilemma
+dilemmas
+diligence
+diligent
+diligently
+dill
+dills
+dilute
+diluted
+dilutes
+diluting
+dilution
+dim
+dime
+dimension
+dimensional
+dimensions
+dimer
+dimes
+diminish
+diminished
+diminishes
+diminishing
+diminutive
+diminutives
+dimly
+dimmed
+dimmer
+dimmest
+dimming
+dimple
+dimpled
+dimples
+dimpling
+dims
+din
+dine
+dined
+diner
+diners
+dines
+dinghies
+dinghy
+dingier
+dingiest
+dingy
+dining
+dinned
+dinner
+dinnered
+dinnering
+dinners
+dinning
+dinosaur
+dinosaurs
+dins
+diocese
+dioceses
+dioxide
+dip
+diphtheria
+diphthong
+diphthongs
+diploma
+diplomacy
+diplomas
+diplomat
+diplomata
+diplomatic
+diplomatically
+diplomats
+dipped
+dipping
+dips
+dipstick
+dipsticks
+dire
+direct
+directed
+directer
+directest
+directing
+direction
+directions
+directive
+directives
+directly
+directness
+director
+directories
+directors
+directory
+directs
+direr
+direst
+dirge
+dirges
+dirt
+dirtied
+dirtier
+dirties
+dirtiest
+dirty
+dirtying
+dis
+disabilities
+disability
+disable
+disabled
+disables
+disabling
+disadvantage
+disadvantaged
+disadvantageous
+disadvantages
+disadvantaging
+disaffect
+disaffected
+disaffecting
+disaffects
+disagree
+disagreeable
+disagreeably
+disagreed
+disagreeing
+disagreement
+disagreements
+disagrees
+disallow
+disallowed
+disallowing
+disallows
+disambiguate
+disappear
+disappearance
+disappearances
+disappeared
+disappearing
+disappears
+disappoint
+disappointed
+disappointing
+disappointingly
+disappointment
+disappointments
+disappoints
+disapproval
+disapprove
+disapproved
+disapproves
+disapproving
+disapprovingly
+disarm
+disarmament
+disarmed
+disarming
+disarms
+disarray
+disarrayed
+disarraying
+disarrays
+disaster
+disasters
+disastrous
+disastrously
+disavow
+disavowal
+disavowals
+disavowed
+disavowing
+disavows
+disband
+disbanded
+disbanding
+disbands
+disbelief
+disbelieve
+disbelieved
+disbelieves
+disbelieving
+disburse
+disbursed
+disbursement
+disbursements
+disburses
+disbursing
+disc
+discard
+discarded
+discarding
+discards
+discern
+discerned
+discernible
+discerning
+discerns
+discharge
+discharged
+discharges
+discharging
+disciple
+disciples
+disciplinarian
+disciplinarians
+disciplinary
+discipline
+disciplined
+disciplines
+disciplining
+disclaim
+disclaimed
+disclaimer
+disclaimers
+disclaiming
+disclaims
+disclose
+disclosed
+discloses
+disclosing
+disclosure
+disclosures
+disco
+discoed
+discoing
+discolor
+discoloration
+discolorations
+discolored
+discoloring
+discolors
+discomfort
+discomforted
+discomforting
+discomforts
+disconcert
+disconcerted
+disconcerting
+disconcerts
+disconnect
+disconnected
+disconnecting
+disconnection
+disconnections
+disconnects
+disconsolate
+disconsolately
+discontent
+discontented
+discontenting
+discontents
+discontinuation
+discontinuations
+discontinue
+discontinued
+discontinues
+discontinuing
+discontinuity
+discord
+discordant
+discorded
+discording
+discords
+discos
+discount
+discounted
+discounting
+discounts
+discourage
+discouraged
+discouragement
+discouragements
+discourages
+discouraging
+discourse
+discoursed
+discourses
+discoursing
+discourteous
+discourtesies
+discourtesy
+discover
+discovered
+discoverer
+discoverers
+discoveries
+discovering
+discovers
+discovery
+discredit
+discredited
+discrediting
+discredits
+discreet
+discreeter
+discreetest
+discreetly
+discrepancies
+discrepancy
+discrete
+discretion
+discretionary
+discriminate
+discriminated
+discriminates
+discriminating
+discrimination
+discriminatory
+discs
+discus
+discuses
+discuss
+discussed
+discusses
+discussing
+discussion
+discussions
+disdain
+disdained
+disdainful
+disdaining
+disdains
+disease
+diseased
+diseases
+disembark
+disembarkation
+disembarked
+disembarking
+disembarks
+disenchant
+disenchanted
+disenchanting
+disenchantment
+disenchants
+disenfranchise
+disenfranchised
+disenfranchises
+disenfranchising
+disengage
+disengaged
+disengages
+disengaging
+disentangle
+disentangled
+disentangles
+disentangling
+disfavor
+disfavored
+disfavoring
+disfavors
+disfigure
+disfigured
+disfigurement
+disfigurements
+disfigures
+disfiguring
+disgrace
+disgraced
+disgraceful
+disgracefully
+disgraces
+disgracing
+disgruntle
+disgruntled
+disgruntles
+disgruntling
+disguise
+disguised
+disguises
+disguising
+disgust
+disgusted
+disgusting
+disgustingly
+disgusts
+dish
+dishearten
+disheartened
+disheartening
+disheartens
+dished
+dishes
+dishevel
+disheveled
+disheveling
+dishevels
+dishing
+dishonest
+dishonestly
+dishonesty
+dishonor
+dishonorable
+dishonorably
+dishonored
+dishonoring
+dishonors
+dishtowel
+dishtowels
+dishwasher
+dishwashers
+disillusion
+disillusioned
+disillusioning
+disillusionment
+disillusions
+disincentive
+disinfect
+disinfectant
+disinfectants
+disinfected
+disinfecting
+disinfects
+disingenuous
+disinherit
+disinherited
+disinheriting
+disinherits
+disintegrate
+disintegrated
+disintegrates
+disintegrating
+disintegration
+disinterest
+disinterested
+disinterests
+disjoint
+disjointed
+disjointing
+disjoints
+disk
+diskette
+diskettes
+disks
+dislike
+disliked
+dislikes
+disliking
+dislocate
+dislocated
+dislocates
+dislocating
+dislocation
+dislocations
+dislodge
+dislodged
+dislodges
+dislodging
+disloyal
+disloyalty
+dismal
+dismally
+dismantle
+dismantled
+dismantles
+dismantling
+dismay
+dismayed
+dismaying
+dismays
+dismember
+dismembered
+dismembering
+dismembers
+dismiss
+dismissal
+dismissals
+dismissed
+dismisses
+dismissing
+dismissive
+dismount
+dismounted
+dismounting
+dismounts
+disobedience
+disobedient
+disobey
+disobeyed
+disobeying
+disobeys
+disorder
+disordered
+disordering
+disorderly
+disorders
+disorganization
+disorganize
+disorganized
+disorganizes
+disorganizing
+disorient
+disorientation
+disoriented
+disorienting
+disorients
+disown
+disowned
+disowning
+disowns
+disparage
+disparaged
+disparages
+disparaging
+disparate
+disparities
+disparity
+dispassionate
+dispassionately
+dispatch
+dispatched
+dispatches
+dispatching
+dispel
+dispelled
+dispelling
+dispels
+dispensable
+dispensaries
+dispensary
+dispensation
+dispensations
+dispense
+dispensed
+dispenser
+dispensers
+dispenses
+dispensing
+dispersal
+disperse
+dispersed
+disperses
+dispersing
+dispersion
+dispirit
+dispirited
+dispiriting
+dispirits
+displace
+displaced
+displacement
+displacements
+displaces
+displacing
+display
+displayed
+displaying
+displays
+displease
+displeased
+displeases
+displeasing
+displeasure
+disposable
+disposables
+disposal
+disposals
+dispose
+disposed
+disposes
+disposing
+disposition
+dispositions
+dispossess
+dispossessed
+dispossesses
+dispossessing
+disproportionate
+disproportionately
+disprove
+disproved
+disproves
+disproving
+dispute
+disputed
+disputes
+disputing
+disqualification
+disqualifications
+disqualified
+disqualifies
+disqualify
+disqualifying
+disquiet
+disquieted
+disquieting
+disquiets
+disregard
+disregarded
+disregarding
+disregards
+disrepair
+disreputable
+disrepute
+disrespect
+disrespected
+disrespectful
+disrespectfully
+disrespecting
+disrespects
+disrupt
+disrupted
+disrupting
+disruption
+disruptions
+disruptive
+disrupts
+dissatisfaction
+dissatisfied
+dissatisfies
+dissatisfy
+dissatisfying
+dissect
+dissected
+dissecting
+dissection
+dissections
+dissects
+dissed
+disseminate
+disseminated
+disseminates
+disseminating
+dissemination
+dissension
+dissensions
+dissent
+dissented
+dissenter
+dissenters
+dissenting
+dissents
+dissertation
+dissertations
+disservice
+disservices
+dissidence
+dissident
+dissidents
+dissimilar
+dissimilarities
+dissimilarity
+dissing
+dissipate
+dissipated
+dissipates
+dissipating
+dissipation
+dissociate
+dissociated
+dissociates
+dissociating
+dissociation
+dissolute
+dissolution
+dissolve
+dissolved
+dissolves
+dissolving
+dissonance
+dissonances
+dissuade
+dissuaded
+dissuades
+dissuading
+distance
+distanced
+distances
+distancing
+distant
+distantly
+distaste
+distasteful
+distastefully
+distastes
+distend
+distended
+distending
+distends
+distention
+distentions
+distill
+distillation
+distillations
+distilled
+distiller
+distilleries
+distillers
+distillery
+distilling
+distills
+distinct
+distincter
+distinctest
+distinction
+distinctions
+distinctive
+distinctively
+distinctly
+distinguish
+distinguishable
+distinguished
+distinguishes
+distinguishing
+distort
+distorted
+distorter
+distorting
+distortion
+distortions
+distorts
+distract
+distracted
+distracting
+distraction
+distractions
+distracts
+distraught
+distress
+distressed
+distresses
+distressing
+distressingly
+distribute
+distributed
+distributes
+distributing
+distribution
+distributions
+distributor
+distributors
+district
+districts
+distrust
+distrusted
+distrustful
+distrustfully
+distrusting
+distrusts
+disturb
+disturbance
+disturbances
+disturbed
+disturbing
+disturbs
+disuse
+disused
+disuses
+disusing
+ditch
+ditched
+ditches
+ditching
+dither
+dithered
+dithering
+dithers
+ditties
+ditto
+dittoed
+dittoing
+dittos
+ditty
+dive
+dived
+diver
+diverge
+diverged
+divergence
+divergences
+divergent
+diverges
+diverging
+divers
+diverse
+diversification
+diversified
+diversifies
+diversify
+diversifying
+diversion
+diversions
+diversities
+diversity
+divert
+diverted
+diverting
+diverts
+dives
+divest
+divested
+divesting
+divests
+divide
+divided
+dividend
+dividends
+divider
+dividers
+divides
+dividing
+divine
+divined
+divinely
+diviner
+divines
+divinest
+diving
+divining
+divinities
+divinity
+divisible
+division
+divisions
+divisive
+divisor
+divisors
+divorce
+divorced
+divorcee
+divorcees
+divorces
+divorcing
+divulge
+divulged
+divulges
+divulging
+dizzied
+dizzier
+dizzies
+dizziest
+dizziness
+dizzy
+dizzying
+do
+docile
+dock
+docked
+docket
+docketed
+docketing
+dockets
+docking
+docks
+doctor
+doctorate
+doctorates
+doctored
+doctoring
+doctors
+doctrine
+doctrines
+document
+documentaries
+documentary
+documentation
+documented
+documenting
+documents
+dodge
+dodged
+dodges
+dodging
+dodo
+doe
+doer
+doers
+does
+dog
+dogged
+doggedly
+doggerel
+dogging
+doggone
+doggoner
+doggones
+doggonest
+doggoning
+doghouse
+doghouses
+dogma
+dogmas
+dogmatic
+dogs
+dogwood
+dogwoods
+doilies
+doily
+doing
+doldrums
+dole
+doled
+doleful
+dolefully
+doles
+doling
+doll
+dollar
+dollars
+dolled
+dollhouse
+dollhouses
+dollies
+dolling
+dollop
+dolloped
+dolloping
+dollops
+dolls
+dolly
+dolphin
+dolphins
+domain
+domains
+dome
+domed
+domes
+domestic
+domesticate
+domesticated
+domesticates
+domesticating
+domesticity
+domestics
+domicile
+domiciled
+domiciles
+domiciling
+dominance
+dominant
+dominants
+dominate
+dominated
+dominates
+dominating
+domination
+domineer
+domineered
+domineering
+domineers
+doming
+dominion
+dominions
+domino
+dominoes
+don
+donate
+donated
+donates
+donating
+donation
+donations
+done
+donkey
+donkeys
+donor
+donors
+dons
+doodad
+doodads
+doodle
+doodled
+doodles
+doodling
+doohickey
+doohickeys
+doom
+doomed
+dooming
+dooms
+doomsday
+door
+doorbell
+doorbells
+doorknob
+doorknobs
+doorman
+doormat
+doormats
+doormen
+doors
+doorstep
+doorsteps
+doorway
+doorways
+dope
+doped
+dopes
+dopey
+dopier
+dopiest
+doping
+dork
+dorkier
+dorkiest
+dorks
+dorky
+dorm
+dormant
+dormitories
+dormitory
+dorms
+dorsal
+dos
+dosage
+dosages
+dose
+dosed
+doses
+dosing
+dossier
+dossiers
+dot
+dote
+doted
+dotes
+doting
+dots
+dotted
+dotting
+double
+doubled
+doubles
+doubling
+doubly
+doubt
+doubted
+doubtful
+doubtfully
+doubting
+doubtless
+doubts
+dough
+doughnut
+doughnuts
+dour
+dourer
+dourest
+douse
+doused
+douses
+dousing
+dove
+doves
+dowdier
+dowdies
+dowdiest
+dowdy
+down
+downcast
+downed
+downer
+downers
+downfall
+downfalls
+downgrade
+downgraded
+downgrades
+downgrading
+downhearted
+downhill
+downhills
+downier
+downiest
+downing
+download
+downloaded
+downloading
+downloads
+downplay
+downplayed
+downplaying
+downplays
+downpour
+downpours
+downright
+downs
+downsize
+downsized
+downsizes
+downsizing
+downstairs
+downstate
+downstream
+downtime
+downtown
+downtrodden
+downturn
+downturns
+downward
+downwards
+downwind
+downy
+dowries
+dowry
+doze
+dozed
+dozen
+dozens
+dozes
+dozing
+drab
+drabber
+drabbest
+drabs
+draconian
+draft
+drafted
+draftier
+draftiest
+drafting
+drafts
+draftsman
+draftsmen
+drafty
+drag
+dragged
+dragging
+dragon
+dragonflies
+dragonfly
+dragons
+drags
+drain
+drainage
+drained
+draining
+drains
+drake
+drakes
+drama
+dramas
+dramatic
+dramatically
+dramatics
+dramatist
+dramatists
+dramatization
+dramatizations
+dramatize
+dramatized
+dramatizes
+dramatizing
+drank
+drape
+draped
+draperies
+drapery
+drapes
+draping
+drastic
+drastically
+draw
+drawback
+drawbacks
+drawbridge
+drawbridges
+drawer
+drawers
+drawing
+drawings
+drawl
+drawled
+drawling
+drawls
+drawn
+draws
+dread
+dreaded
+dreadful
+dreadfully
+dreading
+dreadlocks
+dreads
+dream
+dreamed
+dreamer
+dreamers
+dreamier
+dreamiest
+dreaming
+dreams
+dreamy
+drearier
+dreariest
+dreary
+dredge
+dredged
+dredges
+dredging
+dregs
+drench
+drenched
+drenches
+drenching
+dress
+dressed
+dresser
+dressers
+dresses
+dressier
+dressiest
+dressing
+dressings
+dressmaker
+dressmakers
+dressy
+drew
+dribble
+dribbled
+dribbles
+dribbling
+dried
+drier
+driers
+dries
+driest
+drift
+drifted
+drifter
+drifters
+drifting
+drifts
+driftwood
+drill
+drilled
+drilling
+drills
+drink
+drinkable
+drinker
+drinkers
+drinking
+drinkings
+drinks
+drip
+dripped
+dripping
+drips
+drive
+drivel
+driveled
+driveling
+drivels
+driven
+driver
+drivers
+drives
+driveway
+driveways
+driving
+drivings
+drizzle
+drizzled
+drizzles
+drizzling
+droll
+droller
+drollest
+drone
+droned
+drones
+droning
+drool
+drooled
+drooling
+drools
+droop
+drooped
+drooping
+droops
+drop
+dropout
+dropouts
+dropped
+dropping
+droppings
+drops
+dross
+drought
+droughts
+drove
+droves
+drown
+drowned
+drowning
+drownings
+drowns
+drowse
+drowsed
+drowses
+drowsier
+drowsiest
+drowsily
+drowsiness
+drowsing
+drowsy
+drudge
+drudged
+drudgery
+drudges
+drudging
+drug
+drugged
+drugging
+druggist
+druggists
+drugs
+drugstore
+drugstores
+drum
+drummed
+drummer
+drummers
+drumming
+drums
+drumstick
+drumsticks
+drunk
+drunkard
+drunkards
+drunken
+drunkenly
+drunkenness
+drunker
+drunkest
+drunks
+dry
+dryer
+dryers
+drying
+dryly
+dryness
+drys
+dual
+dualism
+dub
+dubbed
+dubbing
+dubious
+dubiously
+dubs
+duchess
+duchesses
+duck
+ducked
+ducking
+duckling
+ducklings
+ducks
+duct
+ducts
+dud
+dude
+duded
+dudes
+duding
+duds
+due
+duel
+dueled
+dueling
+duels
+dues
+duet
+duets
+duff
+dug
+dugout
+dugouts
+duke
+dukes
+dull
+dulled
+duller
+dullest
+dulling
+dullness
+dulls
+dully
+duly
+dumb
+dumbbell
+dumbbells
+dumber
+dumbest
+dumbfound
+dumbfounded
+dumbfounding
+dumbfounds
+dummies
+dummy
+dump
+dumped
+dumpier
+dumpiest
+dumping
+dumpling
+dumplings
+dumps
+dumpster
+dumpy
+dunce
+dunces
+dune
+dunes
+dung
+dunged
+dungeon
+dungeons
+dunging
+dungs
+dunk
+dunked
+dunking
+dunks
+dunno
+duo
+duos
+dupe
+duped
+dupes
+duping
+duplex
+duplexes
+duplicate
+duplicated
+duplicates
+duplicating
+duplication
+duplicity
+durability
+durable
+duration
+duress
+during
+dusk
+duskier
+duskiest
+dusky
+dust
+dustbin
+dusted
+dustier
+dustiest
+dusting
+dustmen
+dustpan
+dustpans
+dusts
+dusty
+duties
+dutiful
+dutifully
+duty
+duvet
+dwarf
+dwarfed
+dwarfing
+dwarfs
+dwell
+dweller
+dwellers
+dwelling
+dwellings
+dwells
+dwelt
+dwindle
+dwindled
+dwindles
+dwindling
+dye
+dyed
+dyeing
+dyes
+dying
+dyke
+dykes
+dynamic
+dynamical
+dynamically
+dynamics
+dynamism
+dynamite
+dynamited
+dynamites
+dynamiting
+dynamo
+dynamos
+dynasties
+dynasty
+dysentery
+dysfunction
+dysfunctional
+dysfunctions
+dyslexia
+dyslexic
+dyslexics
+each
+eager
+eagerer
+eagerest
+eagerly
+eagerness
+eagle
+eagles
+ear
+earache
+earaches
+eardrum
+eardrums
+earl
+earlier
+earliest
+earlobe
+earlobes
+earls
+early
+earmark
+earmarked
+earmarking
+earmarks
+earmuff
+earmuffs
+earn
+earned
+earner
+earners
+earnest
+earnestly
+earnestness
+earnests
+earning
+earnings
+earns
+earphone
+earphones
+earplug
+earplugs
+earring
+earrings
+ears
+earshot
+earsplitting
+earth
+earthed
+earthier
+earthiest
+earthiness
+earthing
+earthlier
+earthliest
+earthly
+earthquake
+earthquakes
+earths
+earthshaking
+earthworm
+earthworms
+earthy
+earwax
+ease
+eased
+easel
+easels
+eases
+easier
+easiest
+easily
+easing
+east
+eastbound
+easterlies
+easterly
+eastern
+easterner
+easterners
+eastward
+eastwards
+easy
+easygoing
+eat
+eaten
+eater
+eateries
+eaters
+eatery
+eating
+eats
+eave
+eaves
+eavesdrop
+eavesdropped
+eavesdropper
+eavesdroppers
+eavesdropping
+eavesdrops
+ebb
+ebbed
+ebbing
+ebbs
+ebonies
+ebony
+ebullience
+ebullient
+eccentric
+eccentricities
+eccentricity
+eccentrics
+ecclesiastical
+echo
+echoed
+echoes
+echoing
+eclair
+eclairs
+eclectic
+eclipse
+eclipsed
+eclipses
+eclipsing
+ecological
+ecologically
+ecologist
+ecologists
+ecology
+economic
+economical
+economically
+economics
+economies
+economist
+economists
+economize
+economized
+economizes
+economizing
+economy
+ecosystem
+ecosystems
+ecstasies
+ecstasy
+ecstatic
+ecumenical
+eczema
+eddied
+eddies
+eddy
+eddying
+edge
+edged
+edger
+edges
+edgewise
+edgier
+edgiest
+edging
+edgy
+edible
+edibles
+edict
+edicts
+edification
+edifice
+edifices
+edified
+edifies
+edify
+edifying
+edit
+edited
+editing
+edition
+editions
+editor
+editorial
+editorials
+editors
+editorship
+edits
+educate
+educated
+educates
+educating
+education
+educational
+educationally
+educations
+educator
+educators
+eel
+eels
+eerie
+eerier
+eeriest
+eerily
+effect
+effected
+effecting
+effective
+effectively
+effectiveness
+effects
+effectual
+effeminate
+effervescence
+effervescent
+efficiencies
+efficiency
+efficient
+efficiently
+effigies
+effigy
+effort
+effortless
+effortlessly
+efforts
+effusive
+effusively
+egalitarian
+egalitarianism
+egalitarians
+egg
+egged
+egghead
+eggheads
+egging
+eggplant
+eggplants
+eggs
+eggshell
+eggshells
+ego
+egocentric
+egocentrics
+egoism
+egos
+egotism
+egotist
+egotistical
+egotists
+egregious
+egregiously
+eh
+eigenvalue
+eight
+eighteen
+eighteens
+eighteenth
+eighteenths
+eighth
+eighths
+eighties
+eightieth
+eightieths
+eights
+eighty
+either
+ejaculate
+ejaculated
+ejaculates
+ejaculating
+ejaculation
+ejaculations
+eject
+ejected
+ejecting
+ejection
+ejections
+ejects
+eke
+eked
+ekes
+eking
+elaborate
+elaborated
+elaborately
+elaborates
+elaborating
+elaboration
+elaborations
+elapse
+elapsed
+elapses
+elapsing
+elastic
+elasticity
+elastics
+elate
+elated
+elates
+elating
+elation
+elbow
+elbowed
+elbowing
+elbowroom
+elbows
+elder
+elderly
+elders
+eldest
+elect
+elected
+electing
+election
+elections
+elective
+electives
+elector
+electoral
+electorate
+electorates
+electors
+electric
+electrical
+electrically
+electrician
+electricians
+electricity
+electrified
+electrifies
+electrify
+electrifying
+electrocute
+electrocuted
+electrocutes
+electrocuting
+electrocution
+electrocutions
+electrode
+electrodes
+electrolysis
+electromagnetic
+electron
+electronic
+electronically
+electronics
+electrons
+electrostatic
+elects
+elegance
+elegant
+elegantly
+elegies
+elegy
+element
+elemental
+elementary
+elements
+elephant
+elephants
+elevate
+elevated
+elevates
+elevating
+elevation
+elevations
+elevator
+elevators
+eleven
+elevens
+eleventh
+elevenths
+elf
+elfin
+elicit
+elicited
+eliciting
+elicits
+eligibility
+eligible
+eliminate
+eliminated
+eliminates
+eliminating
+elimination
+eliminations
+elite
+elites
+elitism
+elitist
+elitists
+elk
+elks
+ellipse
+ellipses
+ellipsis
+elliptic
+elliptical
+elm
+elms
+elongate
+elongated
+elongates
+elongating
+elope
+eloped
+elopement
+elopements
+elopes
+eloping
+eloquence
+eloquent
+eloquently
+else
+elsewhere
+elucidate
+elucidated
+elucidates
+elucidating
+elude
+eluded
+eludes
+eluding
+elusive
+elves
+em
+emaciate
+emaciated
+emaciates
+emaciating
+email
+emailed
+emailing
+emails
+emanate
+emanated
+emanates
+emanating
+emancipate
+emancipated
+emancipates
+emancipating
+emancipation
+embalm
+embalmed
+embalming
+embalms
+embankment
+embankments
+embargo
+embargoed
+embargoes
+embargoing
+embark
+embarked
+embarking
+embarks
+embarrass
+embarrassed
+embarrasses
+embarrassing
+embarrassingly
+embarrassment
+embarrassments
+embassies
+embassy
+embattled
+embed
+embedded
+embedding
+embeds
+embellish
+embellished
+embellishes
+embellishing
+embellishment
+embellishments
+ember
+embers
+embezzle
+embezzled
+embezzlement
+embezzler
+embezzlers
+embezzles
+embezzling
+embitter
+embittered
+embittering
+embitters
+emblazon
+emblazoned
+emblazoning
+emblazons
+emblem
+emblems
+embodied
+embodies
+embodiment
+embody
+embodying
+emboss
+embossed
+embosses
+embossing
+embrace
+embraced
+embraces
+embracing
+embroider
+embroidered
+embroideries
+embroidering
+embroiders
+embroidery
+embroil
+embroiled
+embroiling
+embroils
+embryo
+embryonic
+embryos
+emcee
+emceed
+emceeing
+emcees
+emerald
+emeralds
+emerge
+emerged
+emergence
+emergencies
+emergency
+emergent
+emerges
+emerging
+emeritus
+emigrant
+emigrants
+emigrate
+emigrated
+emigrates
+emigrating
+emigration
+emigrations
+eminence
+eminences
+eminent
+eminently
+emir
+emirate
+emirates
+emirs
+emissaries
+emissary
+emission
+emissions
+emit
+emits
+emitted
+emitting
+emotion
+emotional
+emotionally
+emotions
+emotive
+empathize
+empathized
+empathizes
+empathizing
+empathy
+emperor
+emperors
+emphases
+emphasis
+emphasize
+emphasized
+emphasizes
+emphasizing
+emphatic
+emphatically
+emphysema
+empire
+empires
+empirical
+employ
+employed
+employee
+employees
+employer
+employers
+employing
+employment
+employments
+employs
+emporium
+emporiums
+empower
+empowered
+empowering
+empowerment
+empowers
+empress
+empresses
+emptied
+emptier
+empties
+emptiest
+emptiness
+empty
+emptying
+emulate
+emulated
+emulates
+emulating
+emulation
+emulations
+emulator
+emulators
+emulsion
+emulsions
+enable
+enabled
+enables
+enabling
+enact
+enacted
+enacting
+enactment
+enactments
+enacts
+enamel
+enameled
+enameling
+enamels
+enamor
+enamored
+enamoring
+enamors
+encapsulate
+encapsulated
+encapsulates
+encapsulating
+encase
+encased
+encases
+encasing
+enchant
+enchanted
+enchanting
+enchantment
+enchantments
+enchants
+enchilada
+enchiladas
+encircle
+encircled
+encircles
+encircling
+enclave
+enclaves
+enclose
+enclosed
+encloses
+enclosing
+enclosure
+enclosures
+encode
+encoded
+encodes
+encoding
+encompass
+encompassed
+encompasses
+encompassing
+encore
+encored
+encores
+encoring
+encounter
+encountered
+encountering
+encounters
+encourage
+encouraged
+encouragement
+encouragements
+encourages
+encouraging
+encroach
+encroached
+encroaches
+encroaching
+encrypted
+encryption
+encumber
+encumbered
+encumbering
+encumbers
+encumbrance
+encumbrances
+encyclopedia
+encyclopedias
+end
+endanger
+endangered
+endangering
+endangers
+endear
+endeared
+endearing
+endearment
+endearments
+endears
+endeavor
+endeavored
+endeavoring
+endeavors
+ended
+endemic
+endemics
+ending
+endings
+endive
+endives
+endless
+endlessly
+endorse
+endorsed
+endorsement
+endorsements
+endorses
+endorsing
+endow
+endowed
+endowing
+endowment
+endowments
+endows
+ends
+endurance
+endure
+endured
+endures
+enduring
+endways
+enema
+enemas
+enemies
+enemy
+energetic
+energetically
+energies
+energize
+energized
+energizes
+energizing
+energy
+enforce
+enforceable
+enforced
+enforcement
+enforces
+enforcing
+enfranchise
+enfranchised
+enfranchises
+enfranchising
+engage
+engaged
+engagement
+engagements
+engages
+engaging
+engender
+engendered
+engendering
+engenders
+engine
+engineer
+engineered
+engineering
+engineers
+engines
+engrave
+engraved
+engraver
+engravers
+engraves
+engraving
+engravings
+engross
+engrossed
+engrosses
+engrossing
+engulf
+engulfed
+engulfing
+engulfs
+enhance
+enhanced
+enhancement
+enhancements
+enhances
+enhancing
+enigma
+enigmas
+enigmatic
+enjoy
+enjoyable
+enjoyed
+enjoying
+enjoyment
+enjoyments
+enjoys
+enlarge
+enlarged
+enlargement
+enlargements
+enlarges
+enlarging
+enlighten
+enlightened
+enlightening
+enlightenment
+enlightens
+enlist
+enlisted
+enlisting
+enlistment
+enlistments
+enlists
+enliven
+enlivened
+enlivening
+enlivens
+enmities
+enmity
+enormities
+enormity
+enormous
+enormously
+enough
+enrage
+enraged
+enrages
+enraging
+enrich
+enriched
+enriches
+enriching
+enrichment
+enroll
+enrolled
+enrolling
+enrollment
+enrollments
+enrolls
+ensconce
+ensconced
+ensconces
+ensconcing
+ensemble
+ensembles
+enshrine
+enshrined
+enshrines
+enshrining
+ensign
+ensigns
+enslave
+enslaved
+enslaves
+enslaving
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensures
+ensuring
+entail
+entailed
+entailing
+entails
+entangle
+entangled
+entanglement
+entanglements
+entangles
+entangling
+enter
+entered
+entering
+enterprise
+enterprises
+enterprising
+enters
+entertain
+entertained
+entertainer
+entertainers
+entertaining
+entertainment
+entertainments
+entertains
+enthrall
+enthralled
+enthralling
+enthralls
+enthuse
+enthused
+enthuses
+enthusiasm
+enthusiasms
+enthusiast
+enthusiastic
+enthusiastically
+enthusiasts
+enthusing
+entice
+enticed
+enticement
+enticements
+entices
+enticing
+entire
+entirely
+entirety
+entities
+entitle
+entitled
+entitlement
+entitlements
+entitles
+entitling
+entity
+entomologist
+entomologists
+entomology
+entourage
+entourages
+entrails
+entrance
+entranced
+entrances
+entrancing
+entrant
+entrants
+entrap
+entrapment
+entrapped
+entrapping
+entraps
+entreat
+entreated
+entreaties
+entreating
+entreats
+entreaty
+entree
+entrees
+entrench
+entrenched
+entrenches
+entrenching
+entrepreneur
+entrepreneurial
+entrepreneurs
+entries
+entropy
+entrust
+entrusted
+entrusting
+entrusts
+entry
+entryway
+entryways
+entwine
+entwined
+entwines
+entwining
+enumerate
+enumerated
+enumerates
+enumerating
+enumeration
+enunciate
+enunciated
+enunciates
+enunciating
+enunciation
+envelop
+envelope
+enveloped
+envelopes
+enveloping
+envelops
+enviable
+envied
+envies
+envious
+enviously
+environment
+environmental
+environmentalist
+environmentalists
+environmentally
+environments
+environs
+envisage
+envisaged
+envisages
+envisaging
+envision
+envisioned
+envisioning
+envisions
+envoy
+envoys
+envy
+envying
+enzyme
+enzymes
+eon
+eons
+epaulet
+epaulets
+ephemeral
+epic
+epicenter
+epicenters
+epics
+epidemic
+epidemics
+epidermis
+epidermises
+epigram
+epigrams
+epilepsy
+epileptic
+epileptics
+epilogue
+epilogues
+episode
+episodes
+episodic
+epistle
+epistles
+epitaph
+epitaphs
+epithet
+epithets
+epitome
+epitomes
+epitomize
+epitomized
+epitomizes
+epitomizing
+epoch
+epochs
+epsilon
+equal
+equaled
+equaling
+equality
+equalize
+equalized
+equalizes
+equalizing
+equally
+equals
+equanimity
+equate
+equated
+equates
+equating
+equation
+equations
+equator
+equatorial
+equators
+equestrian
+equestrians
+equilateral
+equilaterals
+equilibrium
+equine
+equines
+equinox
+equinoxes
+equip
+equipment
+equipped
+equipping
+equips
+equitable
+equities
+equity
+equivalence
+equivalences
+equivalent
+equivalently
+equivalents
+equivocal
+era
+eradicate
+eradicated
+eradicates
+eradicating
+eradication
+eras
+erase
+erased
+eraser
+erasers
+erases
+erasing
+erasure
+erect
+erected
+erecting
+erection
+erections
+erects
+ergo
+ergonomic
+erode
+eroded
+erodes
+eroding
+erosion
+erotic
+erotically
+eroticism
+err
+errand
+errands
+errant
+erratic
+erratically
+erred
+erring
+erroneous
+erroneously
+error
+errors
+errs
+erstwhile
+erudite
+erudition
+erupt
+erupted
+erupting
+eruption
+eruptions
+erupts
+es
+escalate
+escalated
+escalates
+escalating
+escalation
+escalations
+escalator
+escalators
+escapade
+escapades
+escape
+escaped
+escapes
+escaping
+escapism
+escapist
+escapists
+eschew
+eschewed
+eschewing
+eschews
+escort
+escorted
+escorting
+escorts
+esophagi
+esophagus
+esoteric
+especial
+especially
+espionage
+espouse
+espoused
+espouses
+espousing
+espresso
+espressos
+essay
+essayed
+essaying
+essays
+essence
+essences
+essential
+essentially
+essentials
+establish
+established
+establishes
+establishing
+establishment
+establishments
+estate
+estates
+esteem
+esteemed
+esteeming
+esteems
+estimable
+estimate
+estimated
+estimates
+estimating
+estimation
+estimations
+estrange
+estranged
+estrangement
+estrangements
+estranges
+estranging
+estrogen
+estuaries
+estuary
+etch
+etched
+etches
+etching
+etchings
+eternal
+eternally
+eternities
+eternity
+ether
+ethereal
+ethic
+ethical
+ethically
+ethics
+ethnic
+ethnics
+ethos
+etiquette
+etymological
+etymologies
+etymology
+eulogies
+eulogize
+eulogized
+eulogizes
+eulogizing
+eulogy
+eunuch
+eunuchs
+euphemism
+euphemisms
+euphemistic
+euphemistically
+euphoria
+euphoric
+eureka
+euthanasia
+evacuate
+evacuated
+evacuates
+evacuating
+evacuation
+evacuations
+evacuee
+evacuees
+evade
+evaded
+evades
+evading
+evaluate
+evaluated
+evaluates
+evaluating
+evaluation
+evaluations
+evangelical
+evangelicals
+evangelism
+evangelist
+evangelistic
+evangelists
+evaporate
+evaporated
+evaporates
+evaporating
+evaporation
+evasion
+evasions
+evasive
+eve
+even
+evened
+evener
+evenest
+evenhanded
+evening
+evenings
+evenly
+evenness
+evens
+event
+eventful
+events
+eventual
+eventualities
+eventuality
+eventually
+ever
+evergreen
+evergreens
+everlasting
+everlastings
+evermore
+every
+everybody
+everyday
+everyone
+everyplace
+everything
+everywhere
+eves
+evict
+evicted
+evicting
+eviction
+evictions
+evicts
+evidence
+evidenced
+evidences
+evidencing
+evident
+evidently
+evil
+eviler
+evilest
+evils
+evocative
+evoke
+evoked
+evokes
+evoking
+evolution
+evolutionary
+evolve
+evolved
+evolves
+evolving
+ewe
+ewes
+ex
+exacerbate
+exacerbated
+exacerbates
+exacerbating
+exact
+exacted
+exacter
+exactest
+exacting
+exactly
+exacts
+exaggerate
+exaggerated
+exaggerates
+exaggerating
+exaggeration
+exaggerations
+exalt
+exaltation
+exalted
+exalting
+exalts
+exam
+examination
+examinations
+examine
+examined
+examiner
+examiners
+examines
+examining
+example
+exampled
+examples
+exampling
+exams
+exasperate
+exasperated
+exasperates
+exasperating
+exasperation
+excavate
+excavated
+excavates
+excavating
+excavation
+excavations
+exceed
+exceeded
+exceeding
+exceedingly
+exceeds
+excel
+excelled
+excellence
+excellent
+excellently
+excelling
+excels
+except
+excepted
+excepting
+exception
+exceptional
+exceptionally
+exceptions
+excepts
+excerpt
+excerpted
+excerpting
+excerpts
+excess
+excesses
+excessive
+excessively
+exchange
+exchanged
+exchanges
+exchanging
+excise
+excised
+excises
+excising
+excision
+excisions
+excitable
+excite
+excited
+excitedly
+excitement
+excitements
+excites
+exciting
+exclaim
+exclaimed
+exclaiming
+exclaims
+exclamation
+exclamations
+exclude
+excluded
+excludes
+excluding
+exclusion
+exclusive
+exclusively
+exclusives
+excommunicate
+excommunicated
+excommunicates
+excommunicating
+excommunication
+excommunications
+excrement
+excrete
+excreted
+excretes
+excreting
+excruciating
+excruciatingly
+excursion
+excursions
+excusable
+excuse
+excused
+excuses
+excusing
+exec
+execs
+executable
+execute
+executed
+executes
+executing
+execution
+executioner
+executioners
+executions
+executive
+executives
+executor
+executors
+exemplary
+exemplified
+exemplifies
+exemplify
+exemplifying
+exempt
+exempted
+exempting
+exemption
+exemptions
+exempts
+exercise
+exercised
+exercises
+exercising
+exert
+exerted
+exerting
+exertion
+exertions
+exerts
+exes
+exhale
+exhaled
+exhales
+exhaling
+exhaust
+exhausted
+exhausting
+exhaustion
+exhaustive
+exhaustively
+exhausts
+exhibit
+exhibited
+exhibiting
+exhibition
+exhibitionism
+exhibitionist
+exhibitionists
+exhibitions
+exhibitor
+exhibitors
+exhibits
+exhilarate
+exhilarated
+exhilarates
+exhilarating
+exhilaration
+exhort
+exhortation
+exhortations
+exhorted
+exhorting
+exhorts
+exhumation
+exhumations
+exhume
+exhumed
+exhumes
+exhuming
+exile
+exiled
+exiles
+exiling
+exist
+existed
+existence
+existences
+existent
+existential
+existentially
+existing
+exists
+exit
+exited
+exiting
+exits
+exodus
+exoduses
+exonerate
+exonerated
+exonerates
+exonerating
+exoneration
+exorbitant
+exorcism
+exorcisms
+exorcist
+exorcists
+exotic
+exotics
+expand
+expandable
+expanded
+expanding
+expands
+expanse
+expanses
+expansion
+expansionist
+expansionists
+expansions
+expansive
+expatriate
+expatriated
+expatriates
+expatriating
+expect
+expectancy
+expectant
+expectantly
+expectation
+expectations
+expected
+expecting
+expects
+expediencies
+expediency
+expedient
+expedients
+expedite
+expedited
+expedites
+expediting
+expedition
+expeditions
+expel
+expelled
+expelling
+expels
+expend
+expendable
+expendables
+expended
+expending
+expenditure
+expenditures
+expends
+expense
+expenses
+expensive
+expensively
+experience
+experienced
+experiences
+experiencing
+experiment
+experimental
+experimentally
+experimentation
+experimented
+experimenting
+experiments
+expert
+expertise
+expertly
+experts
+expiration
+expire
+expired
+expires
+expiring
+expiry
+explain
+explained
+explaining
+explains
+explanation
+explanations
+explanatory
+expletive
+expletives
+explicable
+explicit
+explicitly
+explode
+exploded
+explodes
+exploding
+exploit
+exploitation
+exploited
+exploiting
+exploits
+exploration
+explorations
+exploratory
+explore
+explored
+explorer
+explorers
+explores
+exploring
+explosion
+explosions
+explosive
+explosives
+expo
+exponent
+exponential
+exponentially
+exponents
+export
+exportation
+exported
+exporter
+exporters
+exporting
+exports
+expos
+expose
+exposed
+exposes
+exposing
+exposition
+expositions
+exposure
+exposures
+expound
+expounded
+expounding
+expounds
+express
+expressed
+expresses
+expressing
+expression
+expressions
+expressive
+expressively
+expressly
+expressway
+expressways
+expropriate
+expropriated
+expropriates
+expropriating
+expropriation
+expropriations
+expulsion
+expulsions
+exquisite
+exquisitely
+extant
+extemporaneous
+extend
+extended
+extending
+extends
+extension
+extensions
+extensive
+extensively
+extent
+extents
+exterior
+exteriors
+exterminate
+exterminated
+exterminates
+exterminating
+extermination
+exterminations
+exterminator
+exterminators
+external
+externally
+externals
+extinct
+extincted
+extincting
+extinction
+extinctions
+extincts
+extinguish
+extinguished
+extinguisher
+extinguishers
+extinguishes
+extinguishing
+extol
+extolled
+extolling
+extols
+extort
+extorted
+extorting
+extortion
+extortionate
+extorts
+extra
+extract
+extracted
+extracting
+extraction
+extractions
+extracts
+extracurricular
+extradite
+extradited
+extradites
+extraditing
+extradition
+extraditions
+extraneous
+extraordinarily
+extraordinary
+extrapolate
+extrapolated
+extrapolates
+extrapolating
+extrapolation
+extrapolations
+extras
+extraterrestrial
+extraterrestrials
+extravagance
+extravagances
+extravagant
+extravagantly
+extreme
+extremely
+extremer
+extremes
+extremest
+extremism
+extremist
+extremists
+extremities
+extremity
+extricate
+extricated
+extricates
+extricating
+extrovert
+extroverted
+extroverts
+exuberance
+exuberant
+exude
+exuded
+exudes
+exuding
+exult
+exultant
+exultation
+exulted
+exulting
+exults
+eye
+eyeball
+eyeballed
+eyeballing
+eyeballs
+eyebrow
+eyebrows
+eyed
+eyeglass
+eyeglasses
+eyeing
+eyelash
+eyelashes
+eyelid
+eyelids
+eyeliner
+eyeliners
+eyes
+eyesight
+eyesore
+eyesores
+eyewitness
+eyewitnesses
+fable
+fables
+fabric
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabrications
+fabrics
+fabulous
+facade
+facades
+face
+faced
+faceless
+faces
+facet
+faceted
+faceting
+facetious
+facetiously
+facets
+facial
+facials
+facile
+facilitate
+facilitated
+facilitates
+facilitating
+facilities
+facility
+facing
+facsimile
+facsimiled
+facsimileing
+facsimiles
+fact
+faction
+factions
+factor
+factored
+factorial
+factories
+factoring
+factorization
+factors
+factory
+facts
+factual
+factually
+faculties
+faculty
+fad
+fade
+faded
+fades
+fading
+fads
+fag
+fagged
+fagging
+faggot
+faggots
+fagot
+fagots
+fags
+fail
+failed
+failing
+failings
+fails
+failure
+failures
+faint
+fainted
+fainter
+faintest
+fainting
+faintly
+faints
+fair
+fairer
+fairest
+fairground
+fairgrounds
+fairies
+fairly
+fairness
+fairs
+fairy
+faith
+faithful
+faithfully
+faithfulness
+faithfuls
+faithless
+faiths
+fake
+faked
+fakes
+faking
+falcon
+falcons
+fall
+fallacies
+fallacious
+fallacy
+fallen
+fallible
+falling
+fallout
+falls
+false
+falsehood
+falsehoods
+falsely
+falser
+falsest
+falsetto
+falsettos
+falsification
+falsifications
+falsified
+falsifies
+falsify
+falsifying
+falsities
+falsity
+falter
+faltered
+faltering
+falterings
+falters
+fame
+famed
+familiar
+familiarity
+familiarize
+familiarized
+familiarizes
+familiarizing
+familiarly
+familiars
+families
+family
+famine
+famines
+famish
+famished
+famishes
+famishing
+famous
+famously
+fan
+fanatic
+fanatical
+fanatically
+fanaticism
+fanatics
+fancied
+fancier
+fancies
+fanciest
+fanciful
+fancy
+fancying
+fanfare
+fanfares
+fang
+fangs
+fanned
+fannies
+fanning
+fanny
+fans
+fantasied
+fantasies
+fantasize
+fantasized
+fantasizes
+fantasizing
+fantastic
+fantastically
+fantasy
+fantasying
+far
+faraway
+farce
+farces
+farcical
+fare
+fared
+fares
+farewell
+farewells
+faring
+farm
+farmed
+farmer
+farmers
+farmhouse
+farmhouses
+farming
+farmland
+farms
+farmyard
+farmyards
+farsighted
+fart
+farted
+farther
+farthest
+farting
+farts
+fascinate
+fascinated
+fascinates
+fascinating
+fascination
+fascinations
+fascism
+fascist
+fascists
+fashion
+fashionable
+fashionably
+fashioned
+fashioning
+fashions
+fast
+fasted
+fasten
+fastened
+fastener
+fasteners
+fastening
+fastenings
+fastens
+faster
+fastest
+fastidious
+fasting
+fasts
+fat
+fatal
+fatalism
+fatalistic
+fatalities
+fatality
+fatally
+fate
+fated
+fateful
+fates
+father
+fathered
+fatherhood
+fathering
+fatherland
+fatherlands
+fatherly
+fathers
+fathom
+fathomed
+fathoming
+fathoms
+fatigue
+fatigued
+fatigues
+fatiguing
+fating
+fats
+fatten
+fattened
+fattening
+fattens
+fatter
+fattest
+fattier
+fatties
+fattiest
+fatty
+fatuous
+faucet
+faucets
+fault
+faulted
+faultier
+faultiest
+faulting
+faultless
+faults
+faulty
+fauna
+faunas
+favor
+favorable
+favorably
+favored
+favoring
+favorite
+favorites
+favoritism
+favors
+fawn
+fawned
+fawning
+fawns
+fax
+faxed
+faxes
+faxing
+faze
+fazed
+fazes
+fazing
+fear
+feared
+fearful
+fearfully
+fearing
+fearless
+fearlessly
+fearlessness
+fears
+fearsome
+feasibility
+feasible
+feast
+feasted
+feasting
+feasts
+feat
+feather
+feathered
+featherier
+featheriest
+feathering
+feathers
+feathery
+feats
+feature
+featured
+features
+featuring
+fecal
+feces
+fed
+federal
+federalism
+federalist
+federalists
+federals
+federate
+federated
+federates
+federating
+federation
+federations
+feds
+fee
+feeble
+feebler
+feeblest
+feed
+feedback
+feedbag
+feedbags
+feeder
+feeders
+feeding
+feedings
+feeds
+feel
+feeler
+feelers
+feeling
+feelings
+feels
+fees
+feet
+feign
+feigned
+feigning
+feigns
+feint
+feinted
+feinting
+feints
+feistier
+feistiest
+feisty
+feline
+felines
+fell
+felled
+feller
+fellest
+felling
+fellow
+fellows
+fellowship
+fellowships
+fells
+felon
+felonies
+felons
+felony
+felt
+felted
+felting
+felts
+female
+females
+feminine
+feminines
+femininity
+feminism
+feminist
+feminists
+fen
+fence
+fenced
+fences
+fencing
+fend
+fended
+fender
+fenders
+fending
+fends
+fer
+ferment
+fermentation
+fermented
+fermenting
+ferments
+fern
+ferns
+ferocious
+ferociously
+ferocity
+ferret
+ferreted
+ferreting
+ferrets
+ferried
+ferries
+ferry
+ferrying
+fertile
+fertility
+fertilization
+fertilize
+fertilized
+fertilizer
+fertilizers
+fertilizes
+fertilizing
+fervent
+fervently
+fervor
+fest
+fester
+festered
+festering
+festers
+festival
+festivals
+festive
+festivities
+festivity
+festoon
+festooned
+festooning
+festoons
+fests
+fetal
+fetch
+fetched
+fetches
+fetching
+fete
+feted
+fetes
+fetid
+feting
+fetish
+fetishes
+fetter
+fettered
+fettering
+fetters
+fetus
+fetuses
+feud
+feudal
+feudalism
+feuded
+feuding
+feuds
+fever
+feverish
+feverishly
+fevers
+few
+fewer
+fewest
+fez
+fezzes
+fiance
+fiancee
+fiancees
+fiances
+fiasco
+fiascoes
+fiat
+fiats
+fib
+fibbed
+fibber
+fibbers
+fibbing
+fiber
+fiberglass
+fibers
+fibrous
+fibs
+fiche
+fickle
+fickler
+ficklest
+fiction
+fictional
+fictions
+fictitious
+fiddle
+fiddled
+fiddler
+fiddlers
+fiddles
+fiddling
+fiddly
+fidelity
+fidget
+fidgeted
+fidgeting
+fidgets
+fidgety
+field
+fielded
+fielding
+fields
+fieldwork
+fiend
+fiendish
+fiendishly
+fiends
+fierce
+fiercely
+fierceness
+fiercer
+fiercest
+fierier
+fieriest
+fiery
+fiesta
+fiestas
+fifteen
+fifteens
+fifteenth
+fifteenths
+fifth
+fifths
+fifties
+fiftieth
+fiftieths
+fifty
+fig
+fight
+fighter
+fighters
+fighting
+fights
+figment
+figments
+figs
+figurative
+figuratively
+figure
+figured
+figurehead
+figureheads
+figures
+figuring
+filament
+filaments
+filch
+filched
+filches
+filching
+file
+filed
+files
+filet
+filibuster
+filibustered
+filibustering
+filibusters
+filigree
+filigreed
+filigreeing
+filigrees
+filing
+fill
+filled
+filler
+fillet
+filleted
+filleting
+fillets
+fillies
+filling
+fillings
+fills
+filly
+film
+filmed
+filmier
+filmiest
+filming
+filmmaker
+filmmakers
+films
+filmy
+filter
+filtered
+filtering
+filters
+filth
+filthier
+filthiest
+filthy
+fin
+finagle
+finagled
+finagles
+finagling
+final
+finale
+finales
+finalist
+finalists
+finality
+finalize
+finalized
+finalizes
+finalizing
+finally
+finals
+finance
+financed
+finances
+financial
+financially
+financier
+financiers
+financing
+finch
+finches
+find
+finder
+finders
+finding
+findings
+finds
+fine
+fined
+finely
+finer
+fines
+finesse
+finessed
+finesses
+finessing
+finest
+finger
+fingered
+fingering
+fingernail
+fingernails
+fingerprint
+fingerprinted
+fingerprinting
+fingerprints
+fingers
+fingertip
+fingertips
+finickier
+finickiest
+finicky
+fining
+finish
+finished
+finishes
+finishing
+finite
+fins
+fir
+fire
+firearm
+firearms
+firebrand
+firebrands
+firecracker
+firecrackers
+fired
+firefighter
+firefighters
+fireflies
+firefly
+fireman
+firemen
+fireplace
+fireplaces
+fireproof
+fireproofed
+fireproofing
+fireproofs
+fires
+fireside
+firesides
+firewall
+firewalls
+firewood
+firework
+fireworks
+firing
+firm
+firmed
+firmer
+firmest
+firming
+firmly
+firmness
+firms
+firmware
+firs
+first
+firsthand
+firstly
+firsts
+fiscal
+fiscals
+fish
+fishbowl
+fishbowls
+fished
+fisher
+fisheries
+fisherman
+fishermen
+fishery
+fishes
+fishier
+fishiest
+fishing
+fishnet
+fishnets
+fishtail
+fishtailed
+fishtailing
+fishtails
+fishy
+fission
+fissure
+fissures
+fist
+fists
+fit
+fitful
+fitness
+fits
+fitted
+fitter
+fittest
+fitting
+fittings
+five
+fiver
+fives
+fix
+fixable
+fixation
+fixations
+fixed
+fixes
+fixing
+fixture
+fixtures
+fizz
+fizzed
+fizzes
+fizzier
+fizziest
+fizzing
+fizzle
+fizzled
+fizzles
+fizzling
+fizzy
+fjord
+fjords
+flab
+flabbergast
+flabbergasted
+flabbergasting
+flabbergasts
+flabbier
+flabbiest
+flabby
+flaccid
+flag
+flagged
+flagging
+flagpole
+flagpoles
+flagrant
+flagrantly
+flags
+flagship
+flagships
+flagstone
+flagstones
+flail
+flailed
+flailing
+flails
+flair
+flairs
+flak
+flake
+flaked
+flakes
+flakier
+flakiest
+flaking
+flaky
+flamboyance
+flamboyant
+flamboyantly
+flame
+flamed
+flamenco
+flamencos
+flames
+flaming
+flamingo
+flamingos
+flamings
+flammable
+flammables
+flank
+flanked
+flanking
+flanks
+flannel
+flanneled
+flanneling
+flannels
+flap
+flapjack
+flapjacks
+flapped
+flapping
+flaps
+flare
+flared
+flares
+flaring
+flash
+flashback
+flashbacks
+flashed
+flasher
+flashers
+flashes
+flashest
+flashier
+flashiest
+flashing
+flashlight
+flashlights
+flashy
+flask
+flasks
+flat
+flatly
+flatness
+flats
+flatted
+flatten
+flattened
+flattening
+flattens
+flatter
+flattered
+flatterer
+flatterers
+flattering
+flatters
+flattery
+flattest
+flatting
+flatulence
+flaunt
+flaunted
+flaunting
+flaunts
+flavor
+flavored
+flavoring
+flavorings
+flavors
+flaw
+flawed
+flawing
+flawless
+flawlessly
+flaws
+flea
+fleas
+fleck
+flecked
+flecking
+flecks
+fled
+fledged
+fledgling
+fledglings
+flee
+fleece
+fleeced
+fleeces
+fleecier
+fleeciest
+fleecing
+fleecy
+fleeing
+flees
+fleet
+fleeted
+fleeter
+fleetest
+fleeting
+fleets
+flesh
+fleshed
+fleshes
+fleshier
+fleshiest
+fleshing
+fleshy
+flew
+flex
+flexed
+flexes
+flexibility
+flexible
+flexibly
+flexing
+flextime
+flick
+flicked
+flicker
+flickered
+flickering
+flickers
+flicking
+flicks
+flied
+flier
+fliers
+flies
+fliest
+flight
+flightier
+flightiest
+flightless
+flights
+flighty
+flimsier
+flimsiest
+flimsiness
+flimsy
+flinch
+flinched
+flinches
+flinching
+fling
+flinging
+flings
+flint
+flints
+flip
+flippant
+flipped
+flipper
+flippers
+flippest
+flipping
+flips
+flirt
+flirtation
+flirtations
+flirtatious
+flirted
+flirting
+flirts
+flit
+flits
+flitted
+flitting
+float
+floated
+floating
+floats
+flock
+flocked
+flocking
+flocks
+flog
+flogged
+flogging
+floggings
+flogs
+flood
+flooded
+flooder
+floodgate
+floodgates
+flooding
+floodlight
+floodlighted
+floodlighting
+floodlights
+floodlit
+floods
+floor
+floored
+flooring
+floors
+floozies
+floozy
+flop
+flophouse
+flophouses
+flopped
+floppier
+floppies
+floppiest
+flopping
+floppy
+flops
+flora
+floral
+floras
+florid
+florist
+florists
+floss
+flossed
+flosses
+flossing
+flotilla
+flotillas
+flounce
+flounced
+flounces
+flouncing
+flounder
+floundered
+floundering
+flounders
+flour
+floured
+flouring
+flourish
+flourished
+flourishes
+flourishing
+flours
+flout
+flouted
+flouting
+flouts
+flow
+flowed
+flower
+flowerbed
+flowerbeds
+flowered
+flowerier
+floweriest
+flowering
+flowerpot
+flowerpots
+flowers
+flowery
+flowing
+flown
+flows
+flu
+flub
+flubbed
+flubbing
+flubs
+fluctuate
+fluctuated
+fluctuates
+fluctuating
+fluctuation
+fluctuations
+flue
+fluency
+fluent
+fluently
+flues
+fluff
+fluffed
+fluffier
+fluffiest
+fluffing
+fluffs
+fluffy
+fluid
+fluidity
+fluids
+fluke
+flukes
+flung
+flunk
+flunked
+flunkies
+flunking
+flunks
+flunky
+fluorescent
+fluoride
+fluorides
+flurried
+flurries
+flurry
+flurrying
+flush
+flushed
+flusher
+flushes
+flushest
+flushing
+fluster
+flustered
+flustering
+flusters
+flute
+fluted
+flutes
+fluting
+flutist
+flutists
+flutter
+fluttered
+fluttering
+flutters
+flux
+fluxed
+fluxes
+fluxing
+fly
+flying
+flyover
+flyovers
+flyswatter
+flyswatters
+foal
+foaled
+foaling
+foals
+foam
+foamed
+foamier
+foamiest
+foaming
+foams
+foamy
+focal
+focus
+focused
+focuses
+focusing
+fodder
+fodders
+foe
+foes
+fog
+fogbound
+fogged
+foggier
+foggiest
+fogging
+foggy
+foghorn
+foghorns
+fogies
+fogs
+fogy
+foible
+foibles
+foil
+foiled
+foiling
+foils
+foist
+foisted
+foisting
+foists
+fold
+folded
+folder
+folders
+folding
+folds
+foliage
+folk
+folklore
+folks
+folksier
+folksiest
+folksy
+follicle
+follicles
+follies
+follow
+followed
+follower
+followers
+following
+followings
+follows
+folly
+foment
+fomented
+fomenting
+foments
+fond
+fonder
+fondest
+fondle
+fondled
+fondles
+fondling
+fondly
+fondness
+font
+fonts
+food
+foods
+foodstuff
+foodstuffs
+fool
+fooled
+foolhardier
+foolhardiest
+foolhardy
+fooling
+foolish
+foolishly
+foolishness
+foolproof
+fools
+foot
+footage
+football
+footballs
+footbridge
+footbridges
+footed
+foothill
+foothills
+foothold
+footholds
+footing
+footings
+footlights
+footlocker
+footlockers
+footloose
+footnote
+footnoted
+footnotes
+footnoting
+footpath
+footpaths
+footprint
+footprints
+foots
+footsie
+footsies
+footstep
+footsteps
+footstool
+footstools
+footwear
+footwork
+for
+forage
+foraged
+forages
+foraging
+foray
+forayed
+foraying
+forays
+forbade
+forbear
+forbearance
+forbearing
+forbears
+forbid
+forbidden
+forbidding
+forbiddings
+forbids
+forbore
+forborne
+force
+forced
+forceful
+forcefully
+forceps
+forces
+forcible
+forcibly
+forcing
+ford
+forded
+fording
+fords
+fore
+forearm
+forearmed
+forearming
+forearms
+forebode
+foreboded
+forebodes
+foreboding
+forebodings
+forecast
+forecasting
+forecasts
+foreclose
+foreclosed
+forecloses
+foreclosing
+foreclosure
+foreclosures
+forefather
+forefathers
+forefinger
+forefingers
+forefront
+forefronts
+forego
+foregoes
+foregoing
+foregone
+foreground
+foregrounded
+foregrounding
+foregrounds
+forehand
+forehands
+forehead
+foreheads
+foreign
+foreigner
+foreigners
+foreleg
+forelegs
+foreman
+foremen
+foremost
+forensic
+forensics
+foreplay
+forerunner
+forerunners
+fores
+foresaw
+foresee
+foreseeable
+foreseeing
+foreseen
+foresees
+foreshadow
+foreshadowed
+foreshadowing
+foreshadows
+foresight
+foreskin
+foreskins
+forest
+forestall
+forestalled
+forestalling
+forestalls
+forested
+foresting
+forestry
+forests
+foretaste
+foretasted
+foretastes
+foretasting
+foretell
+foretelling
+foretells
+forethought
+foretold
+forever
+forewarn
+forewarned
+forewarning
+forewarns
+forewent
+foreword
+forewords
+forfeit
+forfeited
+forfeiting
+forfeits
+forgave
+forge
+forged
+forger
+forgeries
+forgers
+forgery
+forges
+forget
+forgetful
+forgetfulness
+forgets
+forgetting
+forging
+forgivable
+forgive
+forgiven
+forgiveness
+forgives
+forgiving
+forgo
+forgoes
+forgoing
+forgone
+forgot
+forgotten
+fork
+forked
+forking
+forklift
+forklifts
+forks
+forlorn
+form
+formal
+formaldehyde
+formalities
+formality
+formalize
+formalized
+formalizes
+formalizing
+formally
+formals
+format
+formation
+formations
+formative
+formats
+formatted
+formatting
+formed
+former
+formerly
+formidable
+formidably
+forming
+formless
+forms
+formula
+formulae
+formulas
+formulate
+formulated
+formulates
+formulating
+formulation
+formulations
+fornicate
+fornicated
+fornicates
+fornicating
+fornication
+forsake
+forsaken
+forsakes
+forsaking
+forsook
+forswear
+forswearing
+forswears
+forswore
+forsworn
+fort
+forte
+fortes
+forth
+forthcoming
+forthright
+forthwith
+forties
+fortieth
+fortieths
+fortification
+fortifications
+fortified
+fortifies
+fortify
+fortifying
+fortitude
+fortnight
+fortnightly
+fortress
+fortresses
+forts
+fortuitous
+fortunate
+fortunately
+fortune
+fortunes
+forty
+forum
+forums
+forward
+forwarded
+forwarder
+forwardest
+forwarding
+forwards
+forwent
+fossil
+fossilize
+fossilized
+fossilizes
+fossilizing
+fossils
+foster
+fostered
+fostering
+fosters
+fought
+foul
+fouled
+fouler
+foulest
+fouling
+fouls
+found
+foundation
+foundations
+founded
+founder
+foundered
+foundering
+founders
+founding
+foundling
+foundlings
+foundries
+foundry
+founds
+fount
+fountain
+fountains
+founts
+four
+fours
+fourteen
+fourteens
+fourteenth
+fourteenths
+fourth
+fourthly
+fourths
+fowl
+fowled
+fowling
+fowls
+fox
+foxed
+foxes
+foxhole
+foxholes
+foxier
+foxiest
+foxing
+foxtrot
+foxtrots
+foxtrotted
+foxtrotting
+foxy
+foyer
+foyers
+fracas
+fracases
+fractal
+fraction
+fractional
+fractionally
+fractions
+fractious
+fracture
+fractured
+fractures
+fracturing
+fragile
+fragility
+fragment
+fragmentary
+fragmentation
+fragmented
+fragmenting
+fragments
+fragrance
+fragrances
+fragrant
+frail
+frailer
+frailest
+frailties
+frailty
+frame
+framed
+frames
+framework
+frameworks
+framing
+franc
+franchise
+franchised
+franchises
+franchising
+francs
+frank
+franked
+franker
+frankest
+frankfurter
+frankfurters
+franking
+frankly
+frankness
+franks
+frantic
+frantically
+frat
+fraternal
+fraternities
+fraternity
+fraternize
+fraternized
+fraternizes
+fraternizing
+frats
+fraud
+frauds
+fraudulent
+fraudulently
+fraught
+fray
+frayed
+fraying
+frays
+freak
+freaked
+freaking
+freaks
+freckle
+freckled
+freckles
+freckling
+free
+freebie
+freebies
+freed
+freedom
+freedoms
+freehand
+freeing
+freelance
+freelanced
+freelancer
+freelancers
+freelances
+freelancing
+freeload
+freeloaded
+freeloader
+freeloaders
+freeloading
+freeloads
+freely
+freer
+frees
+freest
+freethinker
+freethinkers
+freethinking
+freeway
+freeways
+freewheel
+freewheeled
+freewheeling
+freewheels
+freeze
+freezer
+freezers
+freezes
+freezing
+freight
+freighted
+freighter
+freighters
+freighting
+freights
+french
+frenetic
+frenzied
+frenzies
+frenzy
+frequencies
+frequency
+frequent
+frequented
+frequenter
+frequentest
+frequenting
+frequently
+frequents
+fresh
+freshen
+freshened
+freshening
+freshens
+fresher
+freshest
+freshly
+freshman
+freshmen
+freshness
+freshwater
+fret
+fretful
+fretfully
+frets
+fretted
+fretting
+friar
+friars
+friction
+fridge
+fridges
+fried
+friend
+friended
+friending
+friendless
+friendlier
+friendlies
+friendliest
+friendliness
+friendly
+friends
+friendship
+friendships
+fries
+frieze
+friezes
+frigate
+frigates
+fright
+frighted
+frighten
+frightened
+frightening
+frighteningly
+frightens
+frightful
+frightfully
+frighting
+frights
+frigid
+frigidity
+frill
+frillier
+frilliest
+frills
+frilly
+fringe
+fringed
+fringes
+fringing
+frisk
+frisked
+friskier
+friskiest
+frisking
+frisks
+frisky
+fritter
+frittered
+frittering
+fritters
+frivolities
+frivolity
+frivolous
+frivolously
+frizz
+frizzed
+frizzes
+frizzier
+frizziest
+frizzing
+frizzy
+fro
+frock
+frocks
+frog
+frogs
+frolic
+frolicked
+frolicking
+frolics
+from
+frond
+fronds
+front
+frontage
+frontages
+frontal
+fronted
+frontier
+frontiers
+fronting
+fronts
+frost
+frostbit
+frostbite
+frostbites
+frostbiting
+frostbitten
+frosted
+frostier
+frostiest
+frosting
+frostings
+frosts
+frosty
+froth
+frothed
+frothier
+frothiest
+frothing
+froths
+frothy
+frown
+frowned
+frowning
+frowns
+froze
+frozen
+frugal
+frugality
+frugally
+fruit
+fruitcake
+fruitcakes
+fruited
+fruitful
+fruitier
+fruitiest
+fruiting
+fruition
+fruitless
+fruitlessly
+fruits
+fruity
+frumpier
+frumpiest
+frumpy
+frustrate
+frustrated
+frustrates
+frustrating
+frustration
+frustrations
+fry
+frying
+fudge
+fudged
+fudges
+fudging
+fuel
+fueled
+fueling
+fuels
+fugitive
+fugitives
+fulcrum
+fulcrums
+fulfill
+fulfilled
+fulfilling
+fulfillment
+fulfills
+full
+fulled
+fuller
+fullest
+fulling
+fullness
+fulls
+fully
+fumble
+fumbled
+fumbles
+fumbling
+fume
+fumed
+fumes
+fumigate
+fumigated
+fumigates
+fumigating
+fumigation
+fuming
+fun
+function
+functional
+functionality
+functionally
+functioned
+functioning
+functions
+fund
+fundamental
+fundamentalism
+fundamentalist
+fundamentalists
+fundamentally
+fundamentals
+funded
+funding
+funds
+funeral
+funerals
+fungal
+fungi
+fungicide
+fungicides
+fungus
+funk
+funked
+funkier
+funkiest
+funking
+funks
+funky
+funnel
+funneled
+funneling
+funnels
+funner
+funnest
+funnier
+funnies
+funniest
+funnily
+funny
+fur
+furies
+furious
+furiously
+furl
+furled
+furling
+furlong
+furlongs
+furlough
+furloughed
+furloughing
+furloughs
+furls
+furnace
+furnaces
+furnish
+furnished
+furnishes
+furnishing
+furnishings
+furniture
+furor
+furors
+furred
+furrier
+furriest
+furring
+furrow
+furrowed
+furrowing
+furrows
+furry
+furs
+further
+furthered
+furthering
+furthermore
+furthers
+furthest
+furtive
+furtively
+furtiveness
+fury
+fuse
+fused
+fuselage
+fuselages
+fuses
+fusing
+fusion
+fuss
+fussed
+fusses
+fussier
+fussiest
+fussing
+fussy
+futile
+futilely
+futility
+future
+futures
+futuristic
+fuzz
+fuzzed
+fuzzes
+fuzzier
+fuzziest
+fuzzing
+fuzzy
+gab
+gabbed
+gabbier
+gabbiest
+gabbing
+gabby
+gable
+gables
+gabs
+gadget
+gadgets
+gaffe
+gaffes
+gag
+gagged
+gagging
+gaggle
+gaggles
+gags
+gaiety
+gaily
+gain
+gained
+gainful
+gaining
+gains
+gait
+gaits
+gal
+gala
+galactic
+galas
+galaxies
+galaxy
+gale
+gales
+gall
+gallant
+gallantly
+gallantry
+gallants
+gallbladder
+gallbladders
+galled
+galleries
+gallery
+galley
+galleys
+galling
+gallivant
+gallivanted
+gallivanting
+gallivants
+gallon
+gallons
+gallop
+galloped
+galloping
+gallops
+gallows
+galls
+galore
+galosh
+galoshes
+gals
+galvanize
+galvanized
+galvanizes
+galvanizing
+gambit
+gambits
+gamble
+gambled
+gambler
+gamblers
+gambles
+gambling
+game
+gamed
+gamer
+games
+gamest
+gaming
+gamma
+gamut
+gamuts
+gander
+ganders
+gang
+ganged
+ganging
+gangland
+gangling
+gangplank
+gangplanks
+gangrene
+gangrened
+gangrenes
+gangrening
+gangs
+gangster
+gangsters
+gangway
+gangways
+gap
+gape
+gaped
+gapes
+gaping
+gaps
+garage
+garaged
+garages
+garaging
+garb
+garbage
+garbed
+garbing
+garble
+garbled
+garbles
+garbling
+garbs
+garden
+gardened
+gardener
+gardeners
+gardenia
+gardenias
+gardening
+gardens
+gargantuan
+gargle
+gargled
+gargles
+gargling
+gargoyle
+gargoyles
+garish
+garland
+garlanded
+garlanding
+garlands
+garlic
+garment
+garments
+garnet
+garnets
+garnish
+garnished
+garnishes
+garnishing
+garret
+garrets
+garrison
+garrisoned
+garrisoning
+garrisons
+garrulous
+garter
+garters
+gas
+gaseous
+gases
+gash
+gashed
+gashes
+gashing
+gasket
+gaskets
+gasoline
+gasp
+gasped
+gasping
+gasps
+gassed
+gassier
+gassiest
+gassing
+gassy
+gastric
+gastronomic
+gasworks
+gate
+gatecrasher
+gatecrashers
+gated
+gates
+gateway
+gateways
+gather
+gathered
+gathering
+gatherings
+gathers
+gating
+gauche
+gaucher
+gauchest
+gaudier
+gaudiest
+gaudy
+gauge
+gauged
+gauges
+gauging
+gaunt
+gaunter
+gauntest
+gauntlet
+gauntlets
+gauze
+gave
+gavel
+gavels
+gawk
+gawked
+gawkier
+gawkiest
+gawking
+gawks
+gawky
+gay
+gayer
+gayest
+gays
+gaze
+gazebo
+gazebos
+gazed
+gazelle
+gazelles
+gazes
+gazette
+gazetted
+gazettes
+gazetting
+gazing
+gear
+geared
+gearing
+gears
+gearshift
+gearshifts
+gee
+geed
+geeing
+geek
+geekier
+geekiest
+geeks
+geeky
+gees
+geese
+geezer
+geezers
+geisha
+gel
+gelatin
+geld
+gelded
+gelding
+geldings
+gelds
+gelled
+gelling
+gels
+gem
+gems
+gender
+genders
+gene
+genealogical
+genealogies
+genealogist
+genealogists
+genealogy
+genera
+general
+generality
+generalization
+generalizations
+generalize
+generalized
+generalizes
+generalizing
+generally
+generals
+generate
+generated
+generates
+generating
+generation
+generations
+generator
+generators
+generic
+generically
+generics
+generosities
+generosity
+generous
+generously
+genes
+geneses
+genesis
+genetic
+genetically
+geneticist
+geneticists
+genetics
+genial
+genially
+genie
+genies
+genii
+genital
+genitalia
+genitals
+genius
+geniuses
+genocide
+genre
+genres
+gent
+genteel
+gentile
+gentiles
+gentility
+gentle
+gentled
+gentleman
+gentlemen
+gentleness
+gentler
+gentles
+gentlest
+gentling
+gently
+gentries
+gentrification
+gentry
+gents
+genuflect
+genuflected
+genuflecting
+genuflects
+genuine
+genuinely
+genuineness
+genus
+geographer
+geographers
+geographic
+geographical
+geographically
+geographies
+geography
+geologic
+geological
+geologies
+geologist
+geologists
+geology
+geometric
+geometrically
+geometries
+geometry
+geranium
+geraniums
+gerbil
+gerbils
+geriatric
+geriatrics
+germ
+germicide
+germicides
+germinate
+germinated
+germinates
+germinating
+germination
+germs
+gerrymander
+gerrymandered
+gerrymandering
+gerrymanders
+gerund
+gerunds
+gestation
+gesticulate
+gesticulated
+gesticulates
+gesticulating
+gesture
+gestured
+gestures
+gesturing
+get
+getaway
+getaways
+gets
+getting
+getup
+geyser
+geysers
+ghastlier
+ghastliest
+ghastly
+ghetto
+ghettos
+ghost
+ghosted
+ghosting
+ghostlier
+ghostliest
+ghostly
+ghosts
+ghostwriter
+ghostwriters
+ghoul
+ghoulish
+ghouls
+giant
+giants
+gibber
+gibbered
+gibbering
+gibberish
+gibbers
+gibe
+gibed
+gibes
+gibing
+giblet
+giblets
+giddier
+giddiest
+giddiness
+giddy
+gift
+gifted
+gifting
+gifts
+gig
+gigabyte
+gigabytes
+gigantic
+gigged
+gigging
+giggle
+giggled
+giggles
+giggling
+gigs
+gild
+gilded
+gilding
+gilds
+gill
+gills
+gilt
+gilts
+gimme
+gimmick
+gimmicks
+gimmicky
+gin
+ginger
+gingerbread
+gingerly
+gingham
+ginned
+ginning
+gins
+giraffe
+giraffes
+girder
+girders
+girdle
+girdled
+girdles
+girdling
+girl
+girlfriend
+girlfriends
+girlhood
+girlhoods
+girlish
+girls
+girth
+girths
+gist
+give
+giveaway
+giveaways
+given
+givens
+gives
+giving
+gizmo
+gizmos
+gizzard
+gizzards
+glacial
+glacier
+glaciers
+glad
+gladden
+gladdened
+gladdening
+gladdens
+gladder
+gladdest
+glade
+glades
+gladiator
+gladiators
+gladly
+glads
+glamorize
+glamorized
+glamorizes
+glamorizing
+glamorous
+glamorously
+glamour
+glamoured
+glamouring
+glamours
+glance
+glanced
+glances
+glancing
+gland
+glands
+glandular
+glare
+glared
+glares
+glaring
+glass
+glassed
+glasses
+glassier
+glassiest
+glassing
+glassware
+glassy
+glaze
+glazed
+glazes
+glazing
+gleam
+gleamed
+gleaming
+gleamings
+gleams
+glean
+gleaned
+gleaning
+gleans
+glee
+gleeful
+gleefully
+glen
+glens
+glib
+glibber
+glibbest
+glibly
+glide
+glided
+glider
+gliders
+glides
+gliding
+glimmer
+glimmered
+glimmering
+glimmers
+glimpse
+glimpsed
+glimpses
+glimpsing
+glint
+glinted
+glinting
+glints
+glisten
+glistened
+glistening
+glistens
+glitch
+glitches
+glitter
+glittered
+glittering
+glitters
+glitz
+glitzier
+glitziest
+glitzy
+gloat
+gloated
+gloating
+gloats
+glob
+global
+globally
+globe
+globes
+globetrotter
+globetrotters
+globs
+globular
+globule
+globules
+gloom
+gloomier
+gloomiest
+gloomily
+gloominess
+gloomy
+gloried
+glories
+glorification
+glorified
+glorifies
+glorify
+glorifying
+glorious
+gloriously
+glory
+glorying
+gloss
+glossaries
+glossary
+glossed
+glosses
+glossier
+glossies
+glossiest
+glossing
+glossy
+glove
+gloved
+gloves
+gloving
+glow
+glowed
+glower
+glowered
+glowering
+glowers
+glowing
+glowingly
+glows
+glowworm
+glowworms
+glucose
+glue
+glued
+glues
+gluing
+glum
+glumly
+glummer
+glummest
+glut
+gluts
+glutted
+glutting
+glutton
+gluttons
+gluttony
+glycerin
+gnarl
+gnarled
+gnarlier
+gnarliest
+gnarling
+gnarls
+gnarly
+gnash
+gnashed
+gnashes
+gnashing
+gnat
+gnats
+gnaw
+gnawed
+gnawing
+gnaws
+gnome
+gnomes
+gnu
+gnus
+go
+goad
+goaded
+goading
+goads
+goal
+goalie
+goalies
+goalkeeper
+goalkeepers
+goalpost
+goalposts
+goals
+goat
+goatee
+goatees
+goats
+gob
+gobbed
+gobbing
+gobble
+gobbled
+gobbledygook
+gobbles
+gobbling
+goblet
+goblets
+goblin
+goblins
+gobs
+god
+godchild
+godchildren
+goddamn
+goddamned
+goddess
+goddesses
+godfather
+godfathers
+godforsaken
+godless
+godlier
+godliest
+godlike
+godly
+godmother
+godmothers
+godparent
+godparents
+gods
+godsend
+godsends
+goes
+gofer
+gofers
+goggle
+goggles
+going
+goings
+gold
+golden
+goldener
+goldenest
+goldfish
+goldfishes
+golds
+goldsmith
+goldsmiths
+golf
+golfed
+golfer
+golfers
+golfing
+golfs
+gollies
+golly
+gondola
+gondolas
+gone
+goner
+goners
+gong
+gonged
+gonging
+gongs
+gonna
+gonorrhea
+goo
+good
+goodbye
+goodies
+goodness
+goodnight
+goods
+goodwill
+goody
+gooey
+goof
+goofed
+goofier
+goofiest
+goofing
+goofs
+goofy
+gooier
+gooiest
+goon
+goons
+goose
+goosed
+gooses
+goosing
+gopher
+gophers
+gore
+gored
+gores
+gorge
+gorged
+gorgeous
+gorgeously
+gorges
+gorging
+gorier
+goriest
+gorilla
+gorillas
+goring
+gory
+gosh
+gosling
+goslings
+gospel
+gospels
+gossamer
+gossip
+gossiped
+gossiping
+gossips
+got
+gotta
+gotten
+gouge
+gouged
+gouges
+gouging
+goulash
+goulashes
+gourd
+gourds
+gourmet
+gourmets
+gout
+govern
+governed
+governess
+governesses
+governing
+government
+governmental
+governments
+governor
+governors
+governorship
+governs
+gown
+gowned
+gowning
+gowns
+grab
+grabbed
+grabber
+grabbing
+grabs
+grace
+graced
+graceful
+gracefully
+gracefulness
+graceless
+graces
+gracing
+gracious
+graciously
+graciousness
+grad
+gradation
+gradations
+grade
+graded
+grader
+graders
+grades
+gradient
+gradients
+grading
+grads
+gradual
+gradually
+graduate
+graduated
+graduates
+graduating
+graduation
+graduations
+graffiti
+graffito
+graft
+grafted
+grafting
+grafts
+grain
+grainier
+grainiest
+grains
+grainy
+gram
+grammar
+grammars
+grammatical
+grammatically
+gramophone
+grams
+grand
+grandchild
+grandchildren
+granddad
+granddads
+granddaughter
+granddaughters
+grander
+grandest
+grandeur
+grandfather
+grandfathered
+grandfathering
+grandfathers
+grandiose
+grandly
+grandma
+grandmas
+grandmother
+grandmothers
+grandpa
+grandparent
+grandparents
+grandpas
+grands
+grandson
+grandsons
+grandstand
+grandstanded
+grandstanding
+grandstands
+granite
+grannies
+granny
+granola
+grant
+granted
+granting
+grants
+granular
+granulate
+granulated
+granulates
+granulating
+granule
+granules
+grape
+grapefruit
+grapefruits
+grapes
+grapevine
+grapevines
+graph
+graphed
+graphic
+graphical
+graphically
+graphics
+graphing
+graphite
+graphs
+grapple
+grappled
+grapples
+grappling
+grasp
+grasped
+grasping
+grasps
+grass
+grassed
+grasses
+grasshopper
+grasshoppers
+grassier
+grassiest
+grassing
+grassland
+grassy
+grate
+grated
+grateful
+gratefully
+grater
+graters
+grates
+gratification
+gratifications
+gratified
+gratifies
+gratify
+gratifying
+grating
+gratings
+gratis
+gratitude
+gratuities
+gratuitous
+gratuitously
+gratuity
+grave
+graved
+gravel
+graveled
+graveling
+gravels
+gravely
+graven
+graver
+graves
+gravest
+gravestone
+gravestones
+graveyard
+graveyards
+gravies
+graving
+gravitate
+gravitated
+gravitates
+gravitating
+gravitation
+gravitational
+gravity
+gravy
+gray
+grayed
+grayer
+grayest
+graying
+grayish
+grays
+graze
+grazed
+grazes
+grazing
+grease
+greased
+greases
+greasier
+greasiest
+greasing
+greasy
+great
+greater
+greatest
+greatly
+greatness
+greats
+greed
+greedier
+greediest
+greedily
+greediness
+greedy
+green
+greenback
+greenbacks
+greened
+greener
+greenery
+greenest
+greenhorn
+greenhorns
+greenhouse
+greenhouses
+greening
+greenish
+greens
+greet
+greeted
+greeting
+greetings
+greets
+gregarious
+gremlin
+gremlins
+grenade
+grenades
+grew
+greyhound
+greyhounds
+grid
+griddle
+griddles
+gridiron
+gridirons
+gridlock
+gridlocks
+grids
+grief
+griefs
+grievance
+grievances
+grieve
+grieved
+grieves
+grieving
+grievous
+grill
+grille
+grilled
+grilles
+grilling
+grills
+grim
+grimace
+grimaced
+grimaces
+grimacing
+grime
+grimed
+grimes
+grimier
+grimiest
+griming
+grimly
+grimmer
+grimmest
+grimy
+grin
+grind
+grinder
+grinders
+grinding
+grinds
+grindstone
+grindstones
+gringo
+gringos
+grinned
+grinning
+grins
+grip
+gripe
+griped
+gripes
+griping
+gripped
+gripping
+grips
+grislier
+grisliest
+grisly
+gristle
+grit
+grits
+gritted
+grittier
+grittiest
+gritting
+gritty
+grizzled
+grizzlier
+grizzlies
+grizzliest
+grizzly
+groan
+groaned
+groaning
+groans
+grocer
+groceries
+grocers
+grocery
+groggier
+groggiest
+groggy
+groin
+groins
+groom
+groomed
+grooming
+grooms
+groove
+grooved
+grooves
+groovier
+grooviest
+grooving
+groovy
+grope
+groped
+gropes
+groping
+gross
+grossed
+grosser
+grosses
+grossest
+grossing
+grossly
+grotesque
+grotesques
+grotto
+grottoes
+grouch
+grouched
+grouches
+grouchier
+grouchiest
+grouching
+grouchy
+ground
+grounded
+groundhog
+groundhogs
+grounding
+groundings
+groundless
+groundlessly
+grounds
+groundswell
+groundswells
+groundwork
+group
+grouped
+grouper
+groupers
+groupie
+groupies
+grouping
+groupings
+groups
+grouse
+groused
+grouses
+grousing
+grove
+grovel
+groveled
+groveling
+grovels
+groves
+grow
+grower
+growers
+growing
+growl
+growled
+growling
+growls
+grown
+grows
+growth
+growths
+grub
+grubbed
+grubbier
+grubbiest
+grubbing
+grubby
+grubs
+grudge
+grudged
+grudges
+grudging
+gruel
+grueling
+gruesome
+gruesomer
+gruesomest
+gruff
+gruffer
+gruffest
+gruffly
+grumble
+grumbled
+grumbles
+grumbling
+grumpier
+grumpiest
+grumpy
+grunge
+grungier
+grungiest
+grungy
+grunt
+grunted
+grunting
+grunts
+gs
+guacamole
+guarantee
+guaranteed
+guaranteeing
+guarantees
+guarantied
+guaranties
+guarantor
+guarantors
+guaranty
+guarantying
+guard
+guarded
+guardedly
+guardian
+guardians
+guarding
+guardrail
+guardrails
+guards
+gubernatorial
+guerrilla
+guerrillas
+guess
+guessable
+guessed
+guesses
+guessing
+guesstimate
+guesstimated
+guesstimates
+guesstimating
+guesswork
+guest
+guested
+guesting
+guests
+guff
+guffaw
+guffawed
+guffawing
+guffaws
+guidance
+guide
+guidebook
+guidebooks
+guided
+guideline
+guidelines
+guides
+guiding
+guild
+guilds
+guile
+guileless
+guillotine
+guillotined
+guillotines
+guillotining
+guilt
+guiltier
+guiltiest
+guiltily
+guiltless
+guilty
+guinea
+guise
+guises
+guitar
+guitarist
+guitarists
+guitars
+gulch
+gulches
+gulf
+gulfs
+gull
+gulled
+gullet
+gullets
+gullibility
+gullible
+gullies
+gulling
+gulls
+gully
+gulp
+gulped
+gulping
+gulps
+gum
+gumbo
+gumbos
+gumdrop
+gumdrops
+gummed
+gummier
+gummiest
+gumming
+gummy
+gumption
+gums
+gun
+gunboat
+gunboats
+gunfire
+gunk
+gunman
+gunmen
+gunned
+gunner
+gunners
+gunning
+gunnysack
+gunnysacks
+gunpoint
+gunpowder
+gunrunner
+gunrunners
+gunrunning
+guns
+gunshot
+gunshots
+guppies
+guppy
+gurgle
+gurgled
+gurgles
+gurgling
+guru
+gurus
+gush
+gushed
+gusher
+gushers
+gushes
+gushier
+gushiest
+gushing
+gushy
+gust
+gusted
+gustier
+gustiest
+gusting
+gusto
+gusts
+gusty
+gut
+guts
+gutsier
+gutsiest
+gutsy
+gutted
+gutter
+guttered
+guttering
+gutters
+gutting
+guttural
+gutturals
+guy
+guyed
+guying
+guys
+guzzle
+guzzled
+guzzler
+guzzlers
+guzzles
+guzzling
+gym
+gymnasium
+gymnasiums
+gymnast
+gymnastics
+gymnasts
+gyms
+gynecological
+gynecologist
+gynecologists
+gynecology
+gyp
+gypped
+gypping
+gyps
+gypsies
+gypsy
+gyrate
+gyrated
+gyrates
+gyrating
+gyration
+gyrations
+gyroscope
+gyroscopes
+ha
+haberdasheries
+haberdashery
+habit
+habitable
+habitat
+habitation
+habitations
+habitats
+habits
+habitual
+habitually
+hack
+hacked
+hacker
+hackers
+hacking
+hackney
+hackneyed
+hackneying
+hackneys
+hacks
+hacksaw
+hacksaws
+had
+haddock
+haddocks
+hag
+haggard
+haggle
+haggled
+haggles
+haggling
+hags
+hail
+hailed
+hailing
+hails
+hailstone
+hailstones
+hair
+hairbrush
+hairbrushes
+haircut
+haircuts
+hairdo
+hairdos
+hairdresser
+hairdressers
+haired
+hairier
+hairiest
+hairline
+hairlines
+hairnet
+hairnets
+hairpiece
+hairpieces
+hairs
+hairsplitting
+hairstyle
+hairstyles
+hairstylist
+hairstylists
+hairy
+hale
+haled
+haler
+hales
+halest
+half
+halfhearted
+halfheartedly
+halftime
+halftimes
+halfway
+halibut
+halibuts
+haling
+hall
+hallelujah
+hallelujahs
+hallmark
+hallmarked
+hallmarking
+hallmarks
+hallow
+hallowed
+hallowing
+hallows
+halls
+hallucinate
+hallucinated
+hallucinates
+hallucinating
+hallucination
+hallucinations
+hallucinogenic
+hallucinogenics
+hallway
+hallways
+halo
+haloed
+haloing
+halon
+halos
+halt
+halted
+halter
+haltered
+haltering
+halters
+halting
+halts
+halve
+halved
+halves
+halving
+ham
+hamburger
+hamburgers
+hamlet
+hamlets
+hammed
+hammer
+hammered
+hammering
+hammerings
+hammers
+hamming
+hammock
+hammocks
+hamper
+hampered
+hampering
+hampers
+hams
+hamster
+hamsters
+hamstring
+hamstringing
+hamstrings
+hamstrung
+hand
+handbag
+handbags
+handbook
+handbooks
+handcuff
+handcuffed
+handcuffing
+handcuffs
+handed
+handedness
+handful
+handfuls
+handgun
+handguns
+handicap
+handicapped
+handicapping
+handicaps
+handicraft
+handicrafts
+handier
+handiest
+handing
+handiwork
+handkerchief
+handkerchiefs
+handle
+handlebar
+handlebars
+handled
+handler
+handlers
+handles
+handling
+handmade
+handout
+handouts
+handpick
+handpicked
+handpicking
+handpicks
+handrail
+handrails
+hands
+handshake
+handshakes
+handsome
+handsomely
+handsomer
+handsomest
+handstand
+handstands
+handwriting
+handwritten
+handy
+handyman
+handymen
+hang
+hangar
+hangars
+hanged
+hanger
+hangers
+hanging
+hangings
+hangout
+hangouts
+hangover
+hangovers
+hangs
+hanker
+hankered
+hankering
+hankerings
+hankers
+hankie
+hankies
+haphazard
+haphazardly
+hapless
+happen
+happened
+happening
+happenings
+happens
+happier
+happiest
+happily
+happiness
+happy
+harangue
+harangued
+harangues
+haranguing
+harass
+harassed
+harasses
+harassing
+harassment
+harbor
+harbored
+harboring
+harbors
+hard
+hardback
+hardball
+hardcover
+hardcovers
+harden
+hardened
+hardening
+hardens
+harder
+hardest
+hardheaded
+hardhearted
+hardier
+hardiest
+hardliner
+hardliners
+hardly
+hardship
+hardships
+hardware
+hardwood
+hardwoods
+hardy
+hare
+harebrained
+hared
+harelip
+harelips
+harem
+harems
+hares
+haring
+hark
+harked
+harking
+harks
+harlot
+harlots
+harm
+harmed
+harmful
+harmfully
+harming
+harmless
+harmlessly
+harmonic
+harmonica
+harmonicas
+harmonies
+harmonious
+harmoniously
+harmonization
+harmonize
+harmonized
+harmonizes
+harmonizing
+harmony
+harms
+harness
+harnessed
+harnesses
+harnessing
+harp
+harped
+harping
+harpist
+harpists
+harpoon
+harpooned
+harpooning
+harpoons
+harps
+harpsichord
+harpsichords
+harried
+harries
+harrow
+harrowed
+harrowing
+harrows
+harry
+harrying
+harsh
+harsher
+harshest
+harshly
+harshness
+hart
+harts
+harvest
+harvested
+harvester
+harvesters
+harvesting
+harvests
+has
+hash
+hashed
+hashes
+hashing
+hashish
+hassle
+hassled
+hassles
+hassling
+haste
+hasted
+hasten
+hastened
+hastening
+hastens
+hastes
+hastier
+hastiest
+hastily
+hasting
+hasty
+hat
+hatch
+hatchback
+hatchbacks
+hatched
+hatches
+hatchet
+hatchets
+hatching
+hate
+hated
+hateful
+hatefully
+hates
+hating
+hatred
+hatreds
+hats
+hatted
+hatting
+haughtier
+haughtiest
+haughtily
+haughtiness
+haughty
+haul
+hauled
+hauling
+hauls
+haunch
+haunches
+haunt
+haunted
+haunting
+haunts
+have
+haven
+havens
+haves
+having
+havoc
+hawk
+hawked
+hawking
+hawks
+hay
+hayed
+haying
+hays
+haystack
+haystacks
+haywire
+hazard
+hazarded
+hazarding
+hazardous
+hazards
+haze
+hazed
+hazel
+hazelnut
+hazelnuts
+hazels
+hazes
+hazier
+haziest
+hazing
+hazings
+hazy
+he
+head
+headache
+headaches
+headband
+headbands
+headed
+header
+headers
+headfirst
+headgear
+headhunter
+headhunters
+headier
+headiest
+heading
+headings
+headland
+headlands
+headlight
+headlights
+headline
+headlined
+headlines
+headlining
+headlong
+headmaster
+headmasters
+headmistress
+headmistresses
+headphone
+headphones
+headquarter
+headquarters
+headrest
+headrests
+headroom
+heads
+headstone
+headstones
+headstrong
+headway
+headwind
+headwinds
+heady
+heal
+healed
+healer
+healers
+healing
+heals
+health
+healthcare
+healthful
+healthier
+healthiest
+healthily
+healthy
+heap
+heaped
+heaping
+heaps
+hear
+heard
+hearing
+hearings
+hears
+hearsay
+hearse
+hearses
+heart
+heartache
+heartaches
+heartbeat
+heartbeats
+heartbreak
+heartbreaking
+heartbreaks
+heartbroken
+heartburn
+hearten
+heartened
+heartening
+heartens
+heartfelt
+hearth
+hearths
+heartier
+hearties
+heartiest
+heartily
+heartland
+heartlands
+heartless
+hearts
+heartthrob
+heartthrobs
+heartwarming
+hearty
+heat
+heated
+heatedly
+heater
+heaters
+heath
+heathen
+heathens
+heather
+heating
+heats
+heave
+heaved
+heaven
+heavenlier
+heavenliest
+heavenly
+heavens
+heaves
+heavier
+heavies
+heaviest
+heavily
+heaviness
+heaving
+heavy
+heavyweight
+heavyweights
+heck
+heckle
+heckled
+heckler
+hecklers
+heckles
+heckling
+hectic
+hedge
+hedged
+hedgehog
+hedgehogs
+hedges
+hedging
+hedonism
+hedonist
+hedonistic
+hedonists
+heed
+heeded
+heeding
+heedless
+heeds
+heel
+heeled
+heeling
+heels
+heftier
+heftiest
+hefty
+heifer
+heifers
+height
+heighten
+heightened
+heightening
+heightens
+heights
+heinous
+heir
+heiress
+heiresses
+heirloom
+heirlooms
+heirs
+heist
+heisted
+heisting
+heists
+held
+helicopter
+helicoptered
+helicoptering
+helicopters
+heliport
+heliports
+helium
+hell
+hellish
+hello
+hellos
+helm
+helmet
+helmets
+helms
+help
+helped
+helper
+helpers
+helpful
+helpfully
+helpfulness
+helping
+helpings
+helpless
+helplessly
+helplessness
+helps
+hem
+hemisphere
+hemispheres
+hemline
+hemlines
+hemlock
+hemlocks
+hemmed
+hemming
+hemoglobin
+hemophilia
+hemophiliac
+hemophiliacs
+hemorrhage
+hemorrhaged
+hemorrhages
+hemorrhaging
+hemorrhoid
+hemorrhoids
+hemp
+hems
+hen
+hence
+henceforth
+henchman
+henchmen
+hens
+hepatitis
+her
+herald
+heralded
+heralding
+heralds
+herb
+herbal
+herbivore
+herbivores
+herbivorous
+herbs
+herd
+herded
+herding
+herds
+here
+hereabouts
+hereafter
+hereafters
+hereby
+hereditary
+heredity
+herein
+heresies
+heresy
+heretic
+heretical
+heretics
+herewith
+heritage
+heritages
+hermaphrodite
+hermetic
+hermit
+hermits
+hernia
+hernias
+hero
+heroes
+heroic
+heroically
+heroin
+heroine
+heroins
+heroism
+heron
+herons
+herpes
+herring
+herrings
+hers
+herself
+hertz
+hes
+hesitancy
+hesitant
+hesitantly
+hesitate
+hesitated
+hesitates
+hesitating
+hesitation
+hesitations
+heterogeneous
+heterosexual
+heterosexuality
+heterosexuals
+heuristic
+hew
+hewed
+hewing
+hews
+hexadecimal
+hexagon
+hexagonal
+hexagons
+hey
+heyday
+heydays
+hi
+hiatus
+hiatuses
+hibernate
+hibernated
+hibernates
+hibernating
+hibernation
+hiccup
+hiccuped
+hiccuping
+hiccups
+hick
+hickey
+hickeys
+hickories
+hickory
+hicks
+hid
+hidden
+hide
+hideaway
+hideaways
+hided
+hideous
+hideously
+hideout
+hideouts
+hides
+hiding
+hierarchical
+hierarchies
+hierarchy
+hieroglyphic
+hieroglyphics
+high
+highbrow
+highbrows
+higher
+highest
+highland
+highlands
+highlight
+highlighted
+highlighter
+highlighters
+highlighting
+highlights
+highly
+highs
+highway
+highways
+hijack
+hijacked
+hijacker
+hijackers
+hijacking
+hijackings
+hijacks
+hike
+hiked
+hiker
+hikers
+hikes
+hiking
+hilarious
+hilariously
+hilarity
+hill
+hillbillies
+hillbilly
+hillier
+hilliest
+hills
+hillside
+hillsides
+hilltop
+hilltops
+hilly
+hilt
+hilts
+him
+hims
+himself
+hind
+hinder
+hindered
+hindering
+hinders
+hindquarter
+hindquarters
+hindrance
+hindrances
+hinds
+hindsight
+hinge
+hinged
+hinges
+hinging
+hint
+hinted
+hinterland
+hinterlands
+hinting
+hints
+hip
+hipped
+hipper
+hippest
+hippie
+hippies
+hipping
+hippo
+hippopotamus
+hippopotamuses
+hippos
+hippy
+hips
+hire
+hired
+hires
+hiring
+his
+hiss
+hissed
+hisses
+hissing
+histogram
+historian
+historians
+historic
+historical
+historically
+histories
+history
+histrionic
+histrionics
+hit
+hitch
+hitched
+hitches
+hitchhike
+hitchhiked
+hitchhiker
+hitchhikers
+hitchhikes
+hitchhiking
+hitching
+hither
+hitherto
+hits
+hitting
+hive
+hived
+hives
+hiving
+ho
+hoard
+hoarded
+hoarder
+hoarders
+hoarding
+hoards
+hoarse
+hoarsely
+hoarseness
+hoarser
+hoarsest
+hoax
+hoaxed
+hoaxes
+hoaxing
+hobbies
+hobbit
+hobble
+hobbled
+hobbles
+hobbling
+hobby
+hobbyhorse
+hobbyhorses
+hobgoblin
+hobgoblins
+hobnob
+hobnobbed
+hobnobbing
+hobnobs
+hobo
+hobos
+hock
+hocked
+hockey
+hocking
+hocks
+hodgepodge
+hodgepodges
+hoe
+hoed
+hoeing
+hoes
+hog
+hogged
+hogging
+hogs
+hoist
+hoisted
+hoisting
+hoists
+hokey
+hokier
+hokiest
+hold
+holder
+holders
+holding
+holdings
+holdover
+holdovers
+holds
+holdup
+holdups
+hole
+holed
+holes
+holiday
+holidayed
+holidaying
+holidays
+holier
+holiest
+holiness
+holing
+holistic
+holler
+hollered
+hollering
+hollers
+hollies
+hollow
+hollowed
+hollower
+hollowest
+hollowing
+hollows
+holly
+holocaust
+holocausts
+hologram
+holograms
+holster
+holstered
+holstering
+holsters
+holy
+homage
+homages
+home
+homecoming
+homecomings
+homed
+homeland
+homelands
+homeless
+homelessness
+homelier
+homeliest
+homely
+homemade
+homemaker
+homemakers
+homeopathic
+homeopathy
+homeowner
+homeowners
+homer
+homered
+homering
+homeroom
+homerooms
+homers
+homes
+homesick
+homesickness
+homespun
+homestead
+homesteaded
+homesteading
+homesteads
+hometown
+hometowns
+homeward
+homework
+homey
+homeys
+homicidal
+homicide
+homicides
+homier
+homiest
+homing
+homogeneity
+homogeneous
+homogenize
+homogenized
+homogenizes
+homogenizing
+homonym
+homonyms
+homophobic
+homosexual
+homosexuality
+homosexuals
+honcho
+honchos
+hone
+honed
+hones
+honest
+honester
+honestest
+honestly
+honesty
+honey
+honeycomb
+honeycombed
+honeycombing
+honeycombs
+honeyed
+honeying
+honeymoon
+honeymooned
+honeymooning
+honeymoons
+honeys
+honeysuckle
+honeysuckles
+honing
+honk
+honked
+honking
+honks
+honor
+honorable
+honorably
+honorary
+honored
+honoring
+honors
+hood
+hooded
+hooding
+hoodlum
+hoodlums
+hoods
+hoodwink
+hoodwinked
+hoodwinking
+hoodwinks
+hoof
+hoofed
+hoofing
+hoofs
+hook
+hooked
+hooker
+hookers
+hooking
+hooks
+hooligan
+hooligans
+hoop
+hooped
+hooping
+hoops
+hooray
+hoot
+hooted
+hooter
+hooting
+hoots
+hooves
+hop
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopefuls
+hopeless
+hopelessly
+hopelessness
+hopes
+hoping
+hopped
+hopper
+hopping
+hops
+hopscotch
+hopscotched
+hopscotches
+hopscotching
+horde
+horded
+hordes
+hording
+horizon
+horizons
+horizontal
+horizontally
+horizontals
+hormone
+hormones
+horn
+horned
+hornet
+hornets
+hornier
+horniest
+horns
+horny
+horoscope
+horoscopes
+horrendous
+horrendously
+horrible
+horribly
+horrid
+horrific
+horrified
+horrifies
+horrify
+horrifying
+horror
+horrors
+horse
+horseback
+horsed
+horseman
+horseplay
+horsepower
+horseradish
+horseradishes
+horses
+horseshoe
+horseshoed
+horseshoeing
+horseshoes
+horsing
+horticultural
+horticulture
+hose
+hosed
+hoses
+hosiery
+hosing
+hospice
+hospices
+hospitable
+hospital
+hospitality
+hospitalization
+hospitalizations
+hospitalize
+hospitalized
+hospitalizes
+hospitalizing
+hospitals
+host
+hostage
+hostages
+hosted
+hostel
+hosteled
+hosteling
+hostels
+hostess
+hostessed
+hostesses
+hostessing
+hostile
+hostiles
+hostilities
+hostility
+hosting
+hosts
+hot
+hotbed
+hotbeds
+hotcake
+hotcakes
+hotel
+hotels
+hothead
+hotheaded
+hotheads
+hotly
+hotshot
+hotshots
+hotter
+hottest
+hound
+hounded
+hounding
+hounds
+hour
+hourglass
+hourglasses
+hourly
+hours
+house
+houseboat
+houseboats
+housebound
+housebreak
+housebreaking
+housebreaks
+housebroke
+housebroken
+housed
+household
+households
+househusband
+househusbands
+housekeeper
+housekeepers
+housekeeping
+houses
+housewares
+housewarming
+housewarmings
+housewife
+housewives
+housework
+housing
+housings
+hove
+hovel
+hovels
+hover
+hovered
+hovering
+hovers
+how
+howdy
+however
+howl
+howled
+howling
+howls
+hows
+hub
+hubbub
+hubbubs
+hubcap
+hubcaps
+hubs
+huddle
+huddled
+huddles
+huddling
+hue
+hued
+hues
+huff
+huffed
+huffier
+huffiest
+huffing
+huffs
+huffy
+hug
+huge
+hugely
+huger
+hugest
+hugged
+hugging
+hugs
+huh
+hulk
+hulking
+hulks
+hull
+hullabaloo
+hullabaloos
+hulled
+hulling
+hulls
+hum
+human
+humane
+humanely
+humaner
+humanest
+humanism
+humanist
+humanists
+humanitarian
+humanitarianism
+humanitarians
+humanities
+humanity
+humanize
+humanized
+humanizes
+humanizing
+humankind
+humanly
+humans
+humble
+humbled
+humbler
+humbles
+humblest
+humbling
+humblings
+humbly
+humbug
+humdrum
+humid
+humidified
+humidifies
+humidify
+humidifying
+humidity
+humiliate
+humiliated
+humiliates
+humiliating
+humiliation
+humiliations
+humility
+hummed
+humming
+hummingbird
+hummingbirds
+humor
+humored
+humoring
+humorist
+humorists
+humorous
+humorously
+humors
+hump
+humped
+humping
+humps
+hums
+hunch
+hunchback
+hunchbacks
+hunched
+hunches
+hunching
+hundred
+hundreds
+hundredth
+hundredths
+hung
+hunger
+hungered
+hungering
+hungers
+hungrier
+hungriest
+hungrily
+hungry
+hunk
+hunker
+hunkered
+hunkering
+hunkers
+hunks
+hunt
+hunted
+hunter
+hunters
+hunting
+hunts
+hurdle
+hurdled
+hurdler
+hurdlers
+hurdles
+hurdling
+hurl
+hurled
+hurling
+hurls
+hurrah
+hurrahed
+hurrahing
+hurrahs
+hurricane
+hurricanes
+hurried
+hurriedly
+hurries
+hurry
+hurrying
+hurt
+hurtful
+hurting
+hurtle
+hurtled
+hurtles
+hurtling
+hurts
+husband
+husbanded
+husbanding
+husbands
+hush
+hushed
+hushes
+hushing
+husk
+husked
+huskier
+huskies
+huskiest
+huskily
+huskiness
+husking
+husks
+husky
+hustle
+hustled
+hustler
+hustlers
+hustles
+hustling
+hut
+hutch
+hutches
+huts
+hyacinth
+hyacinths
+hybrid
+hybrids
+hydrant
+hydrants
+hydraulic
+hydraulics
+hydroelectric
+hydrogen
+hydroplane
+hydroplaned
+hydroplanes
+hydroplaning
+hyena
+hyenas
+hygiene
+hygienic
+hygienically
+hymn
+hymnal
+hymnals
+hymned
+hymning
+hymns
+hype
+hyped
+hyper
+hyperactive
+hyperactivity
+hyperbole
+hypersensitive
+hypertension
+hyperventilate
+hyperventilated
+hyperventilates
+hyperventilating
+hypes
+hyphen
+hyphenate
+hyphenated
+hyphenates
+hyphenating
+hyphenation
+hyphened
+hyphening
+hyphens
+hyping
+hypnosis
+hypnotic
+hypnotics
+hypnotism
+hypnotist
+hypnotists
+hypnotize
+hypnotized
+hypnotizes
+hypnotizing
+hypochondria
+hypochondriac
+hypochondriacs
+hypocrisies
+hypocrisy
+hypocrite
+hypocrites
+hypocritical
+hypocritically
+hypodermic
+hypodermics
+hypotenuse
+hypotenuses
+hypothermia
+hypotheses
+hypothesis
+hypothesize
+hypothesized
+hypothesizes
+hypothesizing
+hypothetical
+hypothetically
+hysterectomies
+hysterectomy
+hysteria
+hysteric
+hysterical
+hysterically
+hysterics
+i
+ice
+iceberg
+icebergs
+icebox
+iceboxes
+icebreaker
+icebreakers
+iced
+ices
+icicle
+icicles
+icier
+iciest
+icing
+icings
+ickier
+ickiest
+icky
+icon
+icons
+icy
+id
+idea
+ideal
+idealism
+idealist
+idealistic
+idealists
+idealize
+idealized
+idealizes
+idealizing
+ideally
+ideals
+ideas
+identical
+identically
+identifiable
+identification
+identified
+identifier
+identifiers
+identifies
+identify
+identifying
+identities
+identity
+ideological
+ideologically
+ideologies
+ideology
+idiocies
+idiocy
+idiom
+idiomatic
+idioms
+idiosyncrasies
+idiosyncrasy
+idiosyncratic
+idiot
+idiotic
+idiotically
+idiots
+idle
+idled
+idleness
+idler
+idles
+idlest
+idling
+idly
+idol
+idolatrous
+idolatry
+idolize
+idolized
+idolizes
+idolizing
+idols
+idyllic
+if
+iffier
+iffiest
+iffy
+ifs
+igloo
+igloos
+ignite
+ignited
+ignites
+igniting
+ignition
+ignitions
+ignorance
+ignorant
+ignore
+ignored
+ignores
+ignoring
+iguana
+iguanas
+ilk
+ill
+illegal
+illegally
+illegals
+illegible
+illegibly
+illegitimacy
+illegitimate
+illicit
+illiteracy
+illiterate
+illiterates
+illness
+illnesses
+illogical
+illogically
+ills
+illuminate
+illuminated
+illuminates
+illuminating
+illumination
+illuminations
+illusion
+illusions
+illusory
+illustrate
+illustrated
+illustrates
+illustrating
+illustration
+illustrations
+illustrative
+illustrator
+illustrators
+illustrious
+image
+imaged
+imagery
+images
+imaginable
+imaginary
+imagination
+imaginations
+imaginative
+imaginatively
+imagine
+imagined
+imagines
+imaging
+imagining
+imbalance
+imbalanced
+imbalances
+imbecile
+imbeciles
+imbibe
+imbibed
+imbibes
+imbibing
+imbue
+imbued
+imbues
+imbuing
+imitate
+imitated
+imitates
+imitating
+imitation
+imitations
+imitative
+imitator
+imitators
+immaculate
+immaculately
+immaterial
+immature
+immaturity
+immeasurable
+immeasurably
+immediacy
+immediate
+immediately
+immense
+immensely
+immensities
+immensity
+immerse
+immersed
+immerses
+immersing
+immersion
+immersions
+immigrant
+immigrants
+immigrate
+immigrated
+immigrates
+immigrating
+immigration
+imminent
+imminently
+immobile
+immobility
+immobilize
+immobilized
+immobilizes
+immobilizing
+immoral
+immoralities
+immorality
+immorally
+immortal
+immortality
+immortalize
+immortalized
+immortalizes
+immortalizing
+immortals
+immovable
+immune
+immunity
+immunization
+immunizations
+immunize
+immunized
+immunizes
+immunizing
+immutable
+imp
+impact
+impacted
+impacting
+impacts
+impair
+impaired
+impairing
+impairment
+impairments
+impairs
+impale
+impaled
+impales
+impaling
+impart
+imparted
+impartial
+impartiality
+impartially
+imparting
+imparts
+impassable
+impasse
+impasses
+impassioned
+impassive
+impatience
+impatiences
+impatient
+impatiently
+impeach
+impeached
+impeaches
+impeaching
+impeachment
+impeachments
+impeccable
+impeccably
+impedance
+impede
+impeded
+impedes
+impediment
+impediments
+impeding
+impel
+impelled
+impelling
+impels
+impend
+impended
+impending
+impends
+impenetrable
+imperative
+imperatives
+imperceptible
+imperceptibly
+imperfect
+imperfection
+imperfections
+imperfectly
+imperfects
+imperial
+imperialism
+imperialist
+imperialists
+imperials
+imperil
+imperiled
+imperiling
+imperils
+impersonal
+impersonally
+impersonate
+impersonated
+impersonates
+impersonating
+impersonation
+impersonations
+impersonator
+impersonators
+impertinence
+impertinent
+impervious
+impetuous
+impetuously
+impetus
+impetuses
+impinge
+impinged
+impinges
+impinging
+impish
+implacable
+implant
+implanted
+implanting
+implants
+implausible
+implement
+implementable
+implementation
+implementations
+implemented
+implementer
+implementing
+implements
+implicate
+implicated
+implicates
+implicating
+implication
+implications
+implicit
+implicitly
+implied
+implies
+implode
+imploded
+implodes
+imploding
+implore
+implored
+implores
+imploring
+imply
+implying
+impolite
+impolitely
+import
+importance
+important
+importantly
+importation
+importations
+imported
+importer
+importers
+importing
+imports
+impose
+imposed
+imposes
+imposing
+imposition
+impositions
+impossibilities
+impossibility
+impossible
+impossibles
+impossibly
+impostor
+impostors
+impotence
+impotent
+impound
+impounded
+impounding
+impounds
+impoverish
+impoverished
+impoverishes
+impoverishing
+impractical
+imprecise
+impregnable
+impregnate
+impregnated
+impregnates
+impregnating
+impress
+impressed
+impresses
+impressing
+impression
+impressionable
+impressionistic
+impressions
+impressive
+impressively
+imprint
+imprinted
+imprinting
+imprints
+imprison
+imprisoned
+imprisoning
+imprisonment
+imprisonments
+imprisons
+improbabilities
+improbability
+improbable
+improbably
+impromptu
+impromptus
+improper
+improperly
+improprieties
+impropriety
+improve
+improved
+improvement
+improvements
+improves
+improving
+improvisation
+improvisations
+improvise
+improvised
+improvises
+improvising
+imps
+impudence
+impudent
+impulse
+impulsed
+impulses
+impulsing
+impulsive
+impulsively
+impulsiveness
+impunity
+impure
+impurer
+impurest
+impurities
+impurity
+in
+inabilities
+inability
+inaccessibility
+inaccessible
+inaccuracies
+inaccuracy
+inaccurate
+inaction
+inactive
+inactivity
+inadequacies
+inadequacy
+inadequate
+inadequately
+inadmissible
+inadvertent
+inadvertently
+inadvisable
+inalienable
+inane
+inaner
+inanest
+inanimate
+inapplicable
+inappropriate
+inarticulate
+inasmuch
+inattention
+inattentive
+inaudible
+inaudibly
+inaugural
+inaugurals
+inaugurate
+inaugurated
+inaugurates
+inaugurating
+inauguration
+inaugurations
+inauspicious
+inborn
+inbred
+inbreed
+inbreeding
+inbreeds
+inbuilt
+incalculable
+incandescence
+incandescent
+incantation
+incantations
+incapable
+incapacitate
+incapacitated
+incapacitates
+incapacitating
+incapacity
+incarcerate
+incarcerated
+incarcerates
+incarcerating
+incarceration
+incarcerations
+incarnate
+incarnated
+incarnates
+incarnating
+incarnation
+incarnations
+incendiaries
+incendiary
+incense
+incensed
+incenses
+incensing
+incentive
+incentives
+inception
+inceptions
+incessant
+incessantly
+incest
+incestuous
+inch
+inched
+inches
+inching
+incidence
+incidences
+incident
+incidental
+incidentally
+incidentals
+incidents
+incinerate
+incinerated
+incinerates
+incinerating
+incineration
+incinerator
+incinerators
+incision
+incisions
+incisive
+incisor
+incisors
+incite
+incited
+incitement
+incitements
+incites
+inciting
+inclination
+inclinations
+incline
+inclined
+inclines
+inclining
+include
+included
+includes
+including
+inclusion
+inclusions
+inclusive
+incognito
+incognitos
+incoherence
+incoherent
+incoherently
+income
+incomes
+incoming
+incomparable
+incompatibilities
+incompatibility
+incompatible
+incompatibles
+incompatibly
+incompetence
+incompetent
+incompetently
+incompetents
+incomplete
+incompletely
+incomprehensible
+inconceivable
+inconclusive
+inconclusively
+incongruities
+incongruity
+incongruous
+inconsequential
+inconsiderable
+inconsiderate
+inconsistencies
+inconsistency
+inconsistent
+inconsistently
+inconsolable
+inconspicuous
+inconspicuously
+incontinence
+incontinent
+inconvenience
+inconvenienced
+inconveniences
+inconveniencing
+inconvenient
+inconveniently
+incorporate
+incorporated
+incorporates
+incorporating
+incorporation
+incorrect
+incorrectly
+incorrigible
+increase
+increased
+increases
+increasing
+increasingly
+incredible
+incredibly
+incredulity
+incredulous
+increment
+incremental
+incremented
+increments
+incriminate
+incriminated
+incriminates
+incriminating
+incrimination
+incubate
+incubated
+incubates
+incubating
+incubation
+incubator
+incubators
+incumbent
+incumbents
+incur
+incurable
+incurables
+incurably
+incurred
+incurring
+incurs
+indebted
+indebtedness
+indecencies
+indecency
+indecent
+indecently
+indecision
+indecisive
+indecisively
+indeed
+indefensible
+indefinable
+indefinably
+indefinite
+indefinitely
+indelible
+indelibly
+indelicate
+indemnified
+indemnifies
+indemnify
+indemnifying
+indemnities
+indemnity
+indent
+indentation
+indentations
+indented
+indenting
+indents
+independence
+independent
+independently
+independents
+indescribable
+indescribably
+indestructible
+indeterminate
+index
+indexed
+indexes
+indexing
+indicate
+indicated
+indicates
+indicating
+indication
+indications
+indicative
+indicatives
+indicator
+indicators
+indices
+indict
+indicted
+indicting
+indictment
+indictments
+indicts
+indifference
+indifferent
+indifferently
+indigenous
+indigent
+indigents
+indigestible
+indigestion
+indignant
+indignantly
+indignation
+indignities
+indignity
+indigo
+indirect
+indirection
+indirectly
+indirectness
+indiscreet
+indiscretion
+indiscretions
+indiscriminate
+indiscriminately
+indispensable
+indispensables
+indisposed
+indisputable
+indistinct
+indistinctly
+indistinguishable
+individual
+individualism
+individualist
+individualistic
+individualists
+individuality
+individually
+individuals
+indivisible
+indoctrinate
+indoctrinated
+indoctrinates
+indoctrinating
+indoctrination
+indolence
+indolent
+indomitable
+indoor
+indoors
+induce
+induced
+inducement
+inducements
+induces
+inducing
+induct
+inducted
+inducting
+induction
+inductions
+inducts
+indulge
+indulged
+indulgence
+indulgences
+indulgent
+indulges
+indulging
+industrial
+industrialist
+industrialists
+industrialization
+industrialize
+industrialized
+industrializes
+industrializing
+industries
+industrious
+industry
+inebriate
+inebriated
+inebriates
+inebriating
+inebriation
+inedible
+ineffective
+ineffectiveness
+ineffectual
+inefficiencies
+inefficiency
+inefficient
+inefficiently
+inelegant
+ineligibility
+ineligible
+ineligibles
+inept
+ineptitude
+inequalities
+inequality
+inequities
+inequity
+inert
+inertia
+inertial
+inescapable
+inessential
+inessentials
+inevitability
+inevitable
+inevitably
+inexact
+inexcusable
+inexhaustible
+inexorable
+inexorably
+inexpensive
+inexpensively
+inexperience
+inexperienced
+inexplicable
+inexplicably
+inextricably
+infallibility
+infallible
+infamies
+infamous
+infamy
+infancy
+infant
+infantile
+infantries
+infantry
+infants
+infatuate
+infatuated
+infatuates
+infatuating
+infatuation
+infatuations
+infeasible
+infect
+infected
+infecting
+infection
+infections
+infectious
+infects
+infelicities
+infelicity
+infer
+inference
+inferences
+inferior
+inferiority
+inferiors
+inferno
+infernos
+inferred
+inferring
+infers
+infertile
+infertility
+infest
+infestation
+infestations
+infested
+infesting
+infests
+infidel
+infidelities
+infidelity
+infidels
+infield
+infielder
+infielders
+infields
+infiltrate
+infiltrated
+infiltrates
+infiltrating
+infiltration
+infiltrator
+infiltrators
+infinite
+infinitely
+infinitesimal
+infinitesimals
+infinities
+infinitive
+infinitives
+infinity
+infirm
+infirmaries
+infirmary
+infirmities
+infirmity
+infix
+inflame
+inflamed
+inflames
+inflaming
+inflammable
+inflammation
+inflammations
+inflammatory
+inflatable
+inflatables
+inflate
+inflated
+inflates
+inflating
+inflation
+inflationary
+inflection
+inflections
+inflexibility
+inflexible
+inflexibly
+inflict
+inflicted
+inflicting
+infliction
+inflicts
+influence
+influenced
+influences
+influencing
+influential
+influenza
+influx
+influxes
+info
+infomercial
+infomercials
+inform
+informal
+informality
+informally
+informant
+informants
+information
+informational
+informative
+informed
+informer
+informers
+informing
+informs
+infraction
+infractions
+infrared
+infrastructure
+infrastructures
+infrequent
+infrequently
+infringe
+infringed
+infringement
+infringements
+infringes
+infringing
+infuriate
+infuriated
+infuriates
+infuriating
+infuriatingly
+infuse
+infused
+infuses
+infusing
+infusion
+infusions
+ingenious
+ingeniously
+ingenuity
+ingest
+ingested
+ingesting
+ingests
+ingrain
+ingrained
+ingraining
+ingrains
+ingratiate
+ingratiated
+ingratiates
+ingratiating
+ingratitude
+ingredient
+ingredients
+inhabit
+inhabitant
+inhabitants
+inhabited
+inhabiting
+inhabits
+inhalation
+inhalations
+inhale
+inhaled
+inhaler
+inhalers
+inhales
+inhaling
+inherent
+inherently
+inherit
+inheritance
+inheritances
+inherited
+inheriting
+inherits
+inhibit
+inhibited
+inhibiting
+inhibition
+inhibitions
+inhibits
+inhospitable
+inhuman
+inhumane
+inhumanities
+inhumanity
+initial
+initialed
+initialing
+initialization
+initialize
+initialized
+initializes
+initializing
+initially
+initials
+initiate
+initiated
+initiates
+initiating
+initiation
+initiations
+initiative
+initiatives
+initiator
+initiators
+inject
+injected
+injecting
+injection
+injections
+injects
+injunction
+injunctions
+injure
+injured
+injures
+injuries
+injuring
+injurious
+injury
+injustice
+injustices
+ink
+inked
+inkier
+inkiest
+inking
+inkling
+inklings
+inks
+inky
+inlaid
+inland
+inlay
+inlaying
+inlays
+inlet
+inlets
+inmate
+inmates
+inn
+innards
+innate
+inner
+innermost
+inning
+innings
+innkeeper
+innkeepers
+innocence
+innocent
+innocently
+innocents
+innocuous
+innovate
+innovated
+innovates
+innovating
+innovation
+innovations
+innovative
+innovator
+innovators
+inns
+innuendo
+innuendos
+innumerable
+inoculate
+inoculated
+inoculates
+inoculating
+inoculation
+inoculations
+inoffensive
+inoperative
+inopportune
+inordinate
+inordinately
+inorganic
+inpatient
+inpatients
+input
+inputs
+inputted
+inputting
+inquest
+inquests
+inquire
+inquired
+inquires
+inquiries
+inquiring
+inquiry
+inquisition
+inquisitions
+inquisitive
+inroad
+inroads
+ins
+insane
+insanely
+insaner
+insanest
+insanity
+insatiable
+inscribe
+inscribed
+inscribes
+inscribing
+inscription
+inscriptions
+inscrutable
+insect
+insecticide
+insecticides
+insects
+insecure
+insecurities
+insecurity
+insemination
+insensitive
+insensitively
+insensitivity
+inseparable
+inseparables
+insert
+inserted
+inserting
+insertion
+insertions
+inserts
+inside
+insider
+insiders
+insides
+insidious
+insight
+insights
+insignia
+insignificance
+insignificant
+insignificantly
+insincere
+insincerely
+insincerity
+insinuate
+insinuated
+insinuates
+insinuating
+insinuation
+insinuations
+insipid
+insist
+insisted
+insistence
+insistent
+insistently
+insisting
+insists
+insofar
+insolence
+insolent
+insoluble
+insolvency
+insolvent
+insolvents
+insomnia
+insomniac
+insomniacs
+inspect
+inspected
+inspecting
+inspection
+inspections
+inspector
+inspectors
+inspects
+inspiration
+inspirational
+inspirations
+inspire
+inspired
+inspires
+inspiring
+instability
+install
+installation
+installations
+installed
+installing
+installment
+installments
+installs
+instance
+instanced
+instances
+instancing
+instant
+instantaneous
+instantaneously
+instantly
+instants
+instead
+instep
+insteps
+instigate
+instigated
+instigates
+instigating
+instigation
+instill
+instilled
+instilling
+instills
+instinct
+instinctive
+instinctively
+instincts
+institute
+instituted
+institutes
+instituting
+institution
+institutional
+institutionalize
+institutionalized
+institutionalizes
+institutionalizing
+institutions
+instruct
+instructed
+instructing
+instruction
+instructions
+instructive
+instructively
+instructor
+instructors
+instructs
+instrument
+instrumental
+instrumentals
+instrumented
+instrumenting
+instruments
+insubordinate
+insubordination
+insubstantial
+insufferable
+insufficiency
+insufficient
+insufficiently
+insular
+insularity
+insulate
+insulated
+insulates
+insulating
+insulation
+insulator
+insulators
+insulin
+insult
+insulted
+insulting
+insults
+insurance
+insurances
+insure
+insured
+insureds
+insurer
+insurers
+insures
+insurgencies
+insurgency
+insurgent
+insurgents
+insuring
+insurmountable
+insurrection
+insurrections
+intact
+intake
+intakes
+intangible
+intangibles
+integer
+integers
+integral
+integrals
+integrate
+integrated
+integrates
+integrating
+integration
+integrity
+intellect
+intellects
+intellectual
+intellectually
+intellectuals
+intelligence
+intelligent
+intelligently
+intelligible
+intelligibly
+intend
+intended
+intendeds
+intending
+intends
+intense
+intensely
+intenser
+intensest
+intensified
+intensifier
+intensifiers
+intensifies
+intensify
+intensifying
+intensities
+intensity
+intensive
+intensively
+intensives
+intent
+intention
+intentional
+intentionally
+intentions
+intently
+intents
+inter
+interact
+interacted
+interacting
+interaction
+interactions
+interactive
+interactively
+interacts
+intercede
+interceded
+intercedes
+interceding
+intercept
+intercepted
+intercepting
+interception
+interceptions
+intercepts
+interchange
+interchangeable
+interchangeably
+interchanged
+interchanges
+interchanging
+intercom
+intercoms
+interconnect
+interconnected
+interconnecting
+interconnects
+intercontinental
+intercourse
+interdependence
+interdependent
+interest
+interested
+interesting
+interestingly
+interests
+interface
+interfaced
+interfaces
+interfacing
+interfere
+interfered
+interference
+interferes
+interfering
+interim
+interior
+interiors
+interject
+interjected
+interjecting
+interjection
+interjections
+interjects
+interlock
+interlocked
+interlocking
+interlocks
+interloper
+interlopers
+interlude
+interluded
+interludes
+interluding
+intermarriage
+intermarriages
+intermarried
+intermarries
+intermarry
+intermarrying
+intermediaries
+intermediary
+intermediate
+intermediates
+interment
+interments
+interminable
+interminably
+intermingle
+intermingled
+intermingles
+intermingling
+intermission
+intermissions
+intermittent
+intermittently
+intern
+internal
+internally
+internals
+international
+internationally
+internationals
+interned
+internet
+interning
+internist
+internists
+internment
+interns
+internship
+internships
+interpersonal
+interplanetary
+interplay
+interpolation
+interpose
+interposed
+interposes
+interposing
+interpret
+interpretation
+interpretations
+interpreted
+interpreter
+interpreters
+interpreting
+interprets
+interracial
+interred
+interrelate
+interrelated
+interrelates
+interrelating
+interring
+interrogate
+interrogated
+interrogates
+interrogating
+interrogation
+interrogations
+interrogator
+interrogators
+interrupt
+interrupted
+interrupting
+interruption
+interruptions
+interrupts
+inters
+intersect
+intersected
+intersecting
+intersection
+intersections
+intersects
+intersperse
+interspersed
+intersperses
+interspersing
+interstate
+interstates
+interstellar
+intertwine
+intertwined
+intertwines
+intertwining
+interval
+intervals
+intervene
+intervened
+intervenes
+intervening
+intervention
+interventions
+interview
+interviewed
+interviewer
+interviewers
+interviewing
+interviews
+interweave
+interweaves
+interweaving
+interwove
+interwoven
+intestate
+intestinal
+intestine
+intestines
+intimacies
+intimacy
+intimate
+intimated
+intimately
+intimates
+intimating
+intimation
+intimations
+intimidate
+intimidated
+intimidates
+intimidating
+intimidation
+into
+intolerable
+intolerably
+intolerance
+intolerant
+intonation
+intonations
+intoxicate
+intoxicated
+intoxicates
+intoxicating
+intoxication
+intractable
+intramural
+intransitive
+intransitively
+intransitives
+intravenous
+intravenouses
+intrepid
+intricacies
+intricacy
+intricate
+intricately
+intrigue
+intrigued
+intrigues
+intriguing
+intrinsic
+intrinsically
+introduce
+introduced
+introduces
+introducing
+introduction
+introductions
+introductory
+introspective
+introvert
+introverted
+introverts
+intrude
+intruded
+intruder
+intruders
+intrudes
+intruding
+intrusion
+intrusions
+intrusive
+intuition
+intuitions
+intuitive
+intuitively
+inundate
+inundated
+inundates
+inundating
+inundation
+inundations
+invade
+invaded
+invader
+invaders
+invades
+invading
+invalid
+invalidate
+invalidated
+invalidates
+invalidating
+invalided
+invaliding
+invalids
+invaluable
+invariable
+invariables
+invariably
+invariant
+invasion
+invasions
+invasive
+invective
+invent
+invented
+inventing
+invention
+inventions
+inventive
+inventor
+inventoried
+inventories
+inventors
+inventory
+inventorying
+invents
+inverse
+inversely
+inverses
+inversion
+inversions
+invert
+invertebrate
+invertebrates
+inverted
+inverting
+inverts
+invest
+invested
+investigate
+investigated
+investigates
+investigating
+investigation
+investigations
+investigative
+investigator
+investigators
+investing
+investment
+investments
+investor
+investors
+invests
+inveterate
+invigorate
+invigorated
+invigorates
+invigorating
+invincible
+invisibility
+invisible
+invisibly
+invitation
+invitations
+invite
+invited
+invites
+inviting
+invocation
+invocations
+invoice
+invoiced
+invoices
+invoicing
+invoke
+invoked
+invokes
+invoking
+involuntarily
+involuntary
+involve
+involved
+involvement
+involvements
+involves
+involving
+invulnerable
+inward
+inwardly
+inwards
+iodine
+ion
+ions
+iota
+iotas
+irascible
+irate
+ire
+iridescence
+iridescent
+iris
+irises
+irk
+irked
+irking
+irks
+iron
+ironed
+ironic
+ironically
+ironies
+ironing
+irons
+irony
+irradiate
+irradiated
+irradiates
+irradiating
+irrational
+irrationality
+irrationally
+irrationals
+irreconcilable
+irrefutable
+irregular
+irregularities
+irregularity
+irregularly
+irregulars
+irrelevance
+irrelevances
+irrelevant
+irreparable
+irreparably
+irreplaceable
+irrepressible
+irreproachable
+irresistible
+irresistibly
+irrespective
+irresponsibility
+irresponsible
+irresponsibly
+irretrievable
+irretrievably
+irreverence
+irreverent
+irreverently
+irreversible
+irrevocable
+irrevocably
+irrigate
+irrigated
+irrigates
+irrigating
+irrigation
+irritability
+irritable
+irritably
+irritant
+irritants
+irritate
+irritated
+irritates
+irritating
+irritation
+irritations
+is
+island
+islander
+islanders
+islands
+isle
+isles
+isolate
+isolated
+isolates
+isolating
+isolation
+issue
+issued
+issues
+issuing
+isthmus
+isthmuses
+it
+italic
+italicize
+italicized
+italicizes
+italicizing
+italics
+itch
+itched
+itches
+itchier
+itchiest
+itchiness
+itching
+itchy
+item
+itemize
+itemized
+itemizes
+itemizing
+items
+iterate
+iteration
+iterations
+iterative
+itinerant
+itinerants
+itineraries
+itinerary
+its
+itself
+ivies
+ivories
+ivory
+ivy
+jab
+jabbed
+jabber
+jabbered
+jabbering
+jabbers
+jabbing
+jabs
+jack
+jackal
+jackals
+jackass
+jackasses
+jackdaw
+jacked
+jacket
+jackets
+jackhammer
+jackhammers
+jacking
+jackknife
+jackknifed
+jackknifes
+jackknifing
+jackknives
+jackpot
+jackpots
+jacks
+jade
+jaded
+jades
+jading
+jagged
+jaggeder
+jaggedest
+jaguar
+jaguars
+jail
+jailed
+jailer
+jailers
+jailing
+jails
+jalopies
+jalopy
+jam
+jamb
+jamboree
+jamborees
+jambs
+jammed
+jamming
+jams
+jangle
+jangled
+jangles
+jangling
+janitor
+janitors
+jar
+jargon
+jarred
+jarring
+jars
+jaundice
+jaundiced
+jaundices
+jaundicing
+jaunt
+jaunted
+jauntier
+jauntiest
+jauntily
+jaunting
+jaunts
+jaunty
+javelin
+javelins
+jaw
+jawbone
+jawboned
+jawbones
+jawboning
+jawed
+jawing
+jaws
+jay
+jays
+jaywalk
+jaywalked
+jaywalker
+jaywalkers
+jaywalking
+jaywalks
+jazz
+jazzed
+jazzes
+jazzier
+jazziest
+jazzing
+jazzy
+jealous
+jealousies
+jealously
+jealousy
+jeans
+jeer
+jeered
+jeering
+jeers
+jeez
+jell
+jelled
+jellied
+jellies
+jelling
+jells
+jelly
+jellyfish
+jellyfishes
+jellying
+jeopardize
+jeopardized
+jeopardizes
+jeopardizing
+jeopardy
+jerk
+jerked
+jerkier
+jerkiest
+jerkily
+jerking
+jerks
+jerky
+jersey
+jerseys
+jest
+jested
+jester
+jesters
+jesting
+jests
+jet
+jets
+jetted
+jetties
+jetting
+jettison
+jettisoned
+jettisoning
+jettisons
+jetty
+jewel
+jeweled
+jeweler
+jewelers
+jeweling
+jewelries
+jewelry
+jewels
+jibe
+jibed
+jibes
+jibing
+jiffies
+jiffy
+jig
+jigged
+jigger
+jiggered
+jiggering
+jiggers
+jigging
+jiggle
+jiggled
+jiggles
+jiggling
+jigs
+jigsaw
+jigsawed
+jigsawing
+jigsaws
+jilt
+jilted
+jilting
+jilts
+jingle
+jingled
+jingles
+jingling
+jinx
+jinxed
+jinxes
+jinxing
+jitterier
+jitteriest
+jitters
+jittery
+jive
+jived
+jives
+jiving
+job
+jobbed
+jobbing
+jobless
+joblessness
+jobs
+jock
+jockey
+jockeyed
+jockeying
+jockeys
+jocks
+jockstrap
+jockstraps
+jocular
+jocularity
+jog
+jogged
+jogger
+joggers
+jogging
+jogs
+john
+johns
+join
+joined
+joining
+joins
+joint
+jointed
+jointing
+jointly
+joints
+joke
+joked
+joker
+jokers
+jokes
+joking
+jollied
+jollier
+jollies
+jolliest
+jolly
+jollying
+jolt
+jolted
+jolting
+jolts
+jostle
+jostled
+jostles
+jostling
+jot
+jots
+jotted
+jotting
+journal
+journalism
+journalist
+journalists
+journals
+journey
+journeyed
+journeying
+journeys
+jovial
+jovially
+jowl
+jowls
+joy
+joyed
+joyful
+joyfuller
+joyfullest
+joyfully
+joyfulness
+joying
+joyous
+joyously
+joyridden
+joyride
+joyrider
+joyriders
+joyrides
+joyriding
+joyrode
+joys
+joystick
+joysticks
+jubilant
+jubilation
+jubilee
+jubilees
+judge
+judged
+judges
+judging
+judgment
+judgmental
+judgments
+judicial
+judicially
+judiciaries
+judiciary
+judicious
+judiciously
+judo
+jug
+jugged
+juggernaut
+jugging
+juggle
+juggled
+juggler
+jugglers
+juggles
+juggling
+jugs
+jugular
+jugulars
+juice
+juiced
+juices
+juicier
+juiciest
+juicing
+juicy
+jukebox
+jukeboxes
+jumble
+jumbled
+jumbles
+jumbling
+jumbo
+jumbos
+jump
+jumped
+jumper
+jumpers
+jumpier
+jumpiest
+jumping
+jumps
+jumpsuit
+jumpsuits
+jumpy
+junction
+junctions
+juncture
+junctures
+jungle
+jungles
+junior
+juniors
+juniper
+junipers
+junk
+junked
+junket
+junketed
+junketing
+junkets
+junkie
+junkies
+junking
+junks
+junkyard
+junkyards
+junta
+juntas
+juries
+jurisdiction
+juror
+jurors
+jury
+just
+juster
+justest
+justice
+justices
+justifiable
+justifiably
+justification
+justifications
+justified
+justifies
+justify
+justifying
+justly
+jut
+jute
+juts
+jutted
+jutting
+juvenile
+juveniles
+juxtapose
+juxtaposed
+juxtaposes
+juxtaposing
+juxtaposition
+juxtapositions
+kW
+kaleidoscope
+kaleidoscopes
+kangaroo
+kangaroos
+kaput
+karat
+karate
+karats
+karma
+kayak
+kayaked
+kayaking
+kayaks
+keel
+keeled
+keeling
+keels
+keen
+keened
+keener
+keenest
+keening
+keenly
+keenness
+keens
+keep
+keeper
+keepers
+keeping
+keeps
+keepsake
+keepsakes
+keg
+kegs
+kelp
+ken
+kennel
+kenneled
+kenneling
+kennels
+kept
+kerchief
+kerchiefs
+kernel
+kernels
+kerosene
+ketchup
+kettle
+kettles
+key
+keyboard
+keyboarded
+keyboarding
+keyboards
+keyed
+keyhole
+keyholes
+keying
+keynote
+keynoted
+keynotes
+keynoting
+keys
+keystone
+keystones
+keystroke
+keystrokes
+keyword
+keywords
+khaki
+khakis
+kick
+kickback
+kickbacks
+kicked
+kicking
+kickoff
+kickoffs
+kicks
+kid
+kidded
+kiddie
+kiddies
+kidding
+kiddo
+kiddos
+kidnap
+kidnapped
+kidnapper
+kidnappers
+kidnapping
+kidnappings
+kidnaps
+kidney
+kidneys
+kids
+kill
+killed
+killer
+killers
+killing
+killings
+kills
+kiln
+kilned
+kilning
+kilns
+kilo
+kilobyte
+kilobytes
+kilogram
+kilograms
+kilometer
+kilometers
+kilos
+kilowatt
+kilowatts
+kilt
+kilts
+kimono
+kimonos
+kin
+kind
+kinda
+kinder
+kindergarten
+kindergartens
+kindergartner
+kindergartners
+kindest
+kindhearted
+kindle
+kindled
+kindles
+kindlier
+kindliest
+kindling
+kindly
+kindness
+kindnesses
+kindred
+kinds
+kinfolk
+king
+kingdom
+kingdoms
+kingfisher
+kingfishers
+kingpin
+kingpins
+kings
+kink
+kinked
+kinkier
+kinkiest
+kinking
+kinks
+kinky
+kinship
+kiosk
+kiosks
+kipper
+kiss
+kissed
+kisses
+kissing
+kit
+kitchen
+kitchenette
+kitchenettes
+kitchens
+kite
+kited
+kites
+kiting
+kits
+kitten
+kittens
+kitties
+kitty
+kiwi
+kiwis
+kleptomaniac
+kleptomaniacs
+klutz
+klutzes
+klutzier
+klutziest
+klutzy
+knack
+knacker
+knacks
+knapsack
+knapsacks
+knead
+kneaded
+kneading
+kneads
+knee
+kneecap
+kneecapped
+kneecapping
+kneecaps
+kneed
+kneeing
+kneel
+kneeling
+kneels
+knees
+knelt
+knew
+knickers
+knickknack
+knickknacks
+knife
+knifed
+knifes
+knifing
+knight
+knighted
+knighthood
+knighthoods
+knighting
+knights
+knit
+knits
+knitted
+knitting
+knives
+knob
+knobbier
+knobbiest
+knobby
+knobs
+knock
+knocked
+knocker
+knockers
+knocking
+knockout
+knockouts
+knocks
+knoll
+knolls
+knot
+knots
+knotted
+knottier
+knottiest
+knotting
+knotty
+know
+knowing
+knowingly
+knowings
+knowledge
+knowledgeable
+knowledgeably
+known
+knows
+knuckle
+knuckled
+knuckles
+knuckling
+koala
+koalas
+kosher
+koshered
+koshering
+koshers
+kowtow
+kowtowed
+kowtowing
+kowtows
+ks
+kudos
+lab
+label
+labeled
+labeling
+labels
+labor
+laboratories
+laboratory
+labored
+laborer
+laborers
+laboring
+laborious
+laboriously
+labors
+labs
+labyrinth
+labyrinths
+lace
+laced
+lacerate
+lacerated
+lacerates
+lacerating
+laceration
+lacerations
+laces
+lacier
+laciest
+lacing
+lack
+lacked
+lacking
+lackluster
+lacks
+lacquer
+lacquered
+lacquering
+lacquers
+lacrosse
+lacy
+lad
+ladder
+laddered
+laddering
+ladders
+lade
+laded
+laden
+lades
+ladies
+lading
+ladle
+ladled
+ladles
+ladling
+lads
+lady
+ladybug
+ladybugs
+ladylike
+lag
+lager
+laggard
+laggards
+lagged
+lagging
+lagoon
+lagoons
+lags
+laid
+lain
+lair
+lairs
+lake
+lakes
+lamb
+lambda
+lambed
+lambing
+lambs
+lame
+lamed
+lament
+lamentable
+lamentation
+lamentations
+lamented
+lamenting
+laments
+lamer
+lames
+lamest
+laminate
+laminated
+laminates
+laminating
+laming
+lamp
+lampoon
+lampooned
+lampooning
+lampoons
+lamps
+lampshade
+lampshades
+lance
+lanced
+lances
+lancing
+land
+landed
+lander
+landfill
+landfills
+landing
+landings
+landladies
+landlady
+landlocked
+landlord
+landlords
+landmark
+landmarks
+landowner
+landowners
+lands
+landscape
+landscaped
+landscapes
+landscaping
+landslid
+landslide
+landslides
+landsliding
+lane
+lanes
+language
+languages
+languid
+languish
+languished
+languishes
+languishing
+languor
+languorous
+languors
+lankier
+lankiest
+lanky
+lantern
+lanterns
+lap
+lapel
+lapels
+lapped
+lapping
+laps
+lapse
+lapsed
+lapses
+lapsing
+laptop
+laptops
+larcenies
+larceny
+lard
+larded
+larding
+lards
+large
+largely
+larger
+larges
+largest
+lark
+larked
+larking
+larks
+larva
+larvae
+larynges
+laryngitis
+larynx
+lascivious
+laser
+lasers
+lash
+lashed
+lashes
+lashing
+lass
+lasses
+lasso
+lassoed
+lassoing
+lassos
+last
+lasted
+lasting
+lastly
+lasts
+latch
+latched
+latches
+latching
+late
+lately
+latent
+later
+lateral
+lateraled
+lateraling
+laterals
+latest
+latex
+lath
+lathe
+lathed
+lather
+lathered
+lathering
+lathers
+lathes
+lathing
+laths
+latitude
+latitudes
+latrine
+latrines
+latter
+lattice
+lattices
+laud
+laudable
+lauded
+lauding
+lauds
+laugh
+laughable
+laughed
+laughing
+laughingstock
+laughingstocks
+laughs
+laughter
+launch
+launched
+launcher
+launchers
+launches
+launching
+launder
+laundered
+laundering
+launders
+laundries
+laundry
+laureate
+laureates
+laurel
+laurels
+lava
+lavatories
+lavatory
+lavender
+lavenders
+lavish
+lavished
+lavisher
+lavishes
+lavishest
+lavishing
+law
+lawful
+lawless
+lawlessness
+lawmaker
+lawmakers
+lawn
+lawns
+laws
+lawsuit
+lawsuits
+lawyer
+lawyers
+lax
+laxative
+laxatives
+laxer
+laxest
+laxity
+lay
+layaway
+layer
+layered
+layering
+layers
+laying
+layman
+laymen
+layoff
+layoffs
+layout
+layouts
+layover
+layovers
+lays
+lazied
+lazier
+lazies
+laziest
+lazily
+laziness
+lazy
+lazying
+leach
+lead
+leaded
+leaden
+leader
+leaders
+leadership
+leading
+leads
+leaf
+leafed
+leafier
+leafiest
+leafing
+leaflet
+leafleted
+leafleting
+leaflets
+leafs
+leafy
+league
+leagued
+leagues
+leaguing
+leak
+leakage
+leakages
+leaked
+leakier
+leakiest
+leaking
+leaks
+leaky
+lean
+leaned
+leaner
+leanest
+leaning
+leanings
+leans
+leap
+leaped
+leapfrog
+leapfrogged
+leapfrogging
+leapfrogs
+leaping
+leaps
+learn
+learned
+learning
+learns
+lease
+leased
+leases
+leash
+leashed
+leashes
+leashing
+leasing
+least
+leather
+leathery
+leave
+leaved
+leaves
+leaving
+lecherous
+lectern
+lecterns
+lecture
+lectured
+lecturer
+lecturers
+lectures
+lecturing
+led
+ledge
+ledger
+ledgers
+ledges
+lee
+leech
+leeched
+leeches
+leeching
+leek
+leeks
+leer
+leered
+leerier
+leeriest
+leering
+leers
+leery
+leeway
+left
+lefter
+leftest
+leftmost
+leftover
+leftovers
+lefts
+leg
+legacies
+legacy
+legal
+legalistic
+legality
+legalize
+legalized
+legalizes
+legalizing
+legally
+legals
+legend
+legendary
+legends
+legged
+leggier
+leggiest
+legging
+leggings
+leggy
+legibility
+legible
+legibly
+legion
+legions
+legislate
+legislated
+legislates
+legislating
+legislation
+legislative
+legislator
+legislators
+legislature
+legislatures
+legit
+legitimacy
+legitimate
+legitimated
+legitimately
+legitimates
+legitimating
+legs
+legume
+legumes
+leisure
+leisurely
+lemme
+lemon
+lemonade
+lemons
+lend
+lender
+lenders
+lending
+lends
+length
+lengthen
+lengthened
+lengthening
+lengthens
+lengthier
+lengthiest
+lengths
+lengthwise
+lengthy
+leniency
+lenient
+leniently
+lens
+lenses
+lent
+lentil
+lentils
+leopard
+leopards
+leotard
+leotards
+leper
+lepers
+leprosy
+leprous
+lesbian
+lesbianism
+lesbians
+lesion
+lesions
+less
+lessen
+lessened
+lessening
+lessens
+lesser
+lesson
+lessons
+lest
+let
+letdown
+letdowns
+lethal
+lethally
+lethargic
+lethargy
+lets
+letter
+lettered
+letterhead
+letterheads
+lettering
+letters
+letting
+lettuce
+lettuces
+letup
+letups
+leukemia
+levee
+levees
+level
+leveled
+levelheaded
+leveling
+levels
+lever
+leverage
+leveraged
+leverages
+leveraging
+levered
+levering
+levers
+levied
+levies
+levitate
+levitated
+levitates
+levitating
+levitation
+levity
+levy
+levying
+lewd
+lewder
+lewdest
+lexical
+lexicon
+lexicons
+liabilities
+liability
+liable
+liaise
+liaised
+liaises
+liaising
+liaison
+liaisons
+liar
+liars
+lib
+libel
+libeled
+libeling
+libelous
+libels
+liberal
+liberalism
+liberalization
+liberalize
+liberalized
+liberalizes
+liberalizing
+liberally
+liberals
+liberate
+liberated
+liberates
+liberating
+liberation
+libertarian
+liberties
+liberty
+libido
+libidos
+librarian
+librarians
+libraries
+library
+libretto
+lice
+license
+licensed
+licenses
+licensing
+lichen
+lichens
+lick
+licked
+licking
+lickings
+licks
+licorice
+licorices
+lid
+lids
+lie
+lied
+lien
+liens
+lies
+lieu
+lieutenant
+lieutenants
+life
+lifeboat
+lifeboats
+lifeforms
+lifeguard
+lifeguards
+lifeless
+lifelike
+lifeline
+lifelines
+lifelong
+lifesaver
+lifesavers
+lifespan
+lifestyle
+lifestyles
+lifetime
+lifetimes
+lift
+lifted
+lifting
+liftoff
+liftoffs
+lifts
+ligament
+ligaments
+ligature
+ligatures
+light
+lighted
+lighten
+lightened
+lightening
+lightens
+lighter
+lighters
+lightest
+lighthearted
+lighthouse
+lighthouses
+lighting
+lightly
+lightness
+lightning
+lightninged
+lightnings
+lights
+lightweight
+lightweights
+likable
+like
+liked
+likelier
+likeliest
+likelihood
+likelihoods
+likely
+liken
+likened
+likeness
+likenesses
+likening
+likens
+liker
+likes
+likest
+likewise
+liking
+lilac
+lilacs
+lilies
+lilt
+lilted
+lilting
+lilts
+lily
+limb
+limber
+limbered
+limbering
+limbers
+limbo
+limbos
+limbs
+lime
+limed
+limelight
+limerick
+limericks
+limes
+limestone
+liming
+limit
+limitation
+limitations
+limited
+limiting
+limitings
+limitless
+limits
+limo
+limos
+limousine
+limousines
+limp
+limped
+limper
+limpest
+limping
+limps
+linchpin
+linchpins
+line
+lineage
+lineages
+linear
+linearly
+lined
+linefeed
+linen
+linens
+liner
+liners
+lines
+lineup
+lineups
+linger
+lingered
+lingerie
+lingering
+lingers
+lingo
+lingoes
+linguist
+linguistic
+linguistics
+linguists
+liniment
+liniments
+lining
+linings
+link
+linkage
+linkages
+linked
+linker
+linking
+links
+linoleum
+lint
+lion
+lioness
+lionesses
+lions
+lip
+lips
+lipstick
+lipsticked
+lipsticking
+lipsticks
+liquefied
+liquefies
+liquefy
+liquefying
+liqueur
+liqueurs
+liquid
+liquidate
+liquidated
+liquidates
+liquidating
+liquidation
+liquidations
+liquids
+liquor
+liquored
+liquoring
+liquors
+lisp
+lisped
+lisping
+lisps
+list
+listed
+listen
+listened
+listener
+listeners
+listening
+listens
+listing
+listings
+listless
+listlessly
+lists
+lit
+litanies
+litany
+lite
+liter
+literacy
+literal
+literally
+literals
+literary
+literate
+literates
+literature
+liters
+lithe
+lither
+lithest
+lithium
+litigate
+litigated
+litigates
+litigating
+litigation
+litter
+litterbug
+litterbugs
+littered
+littering
+litters
+little
+littler
+littlest
+liturgical
+liturgies
+liturgy
+livable
+live
+lived
+livelier
+liveliest
+livelihood
+livelihoods
+liveliness
+lively
+liven
+livened
+livening
+livens
+liver
+livers
+lives
+livest
+livestock
+livid
+living
+livings
+lizard
+lizards
+llama
+llamas
+load
+loadable
+loaded
+loader
+loading
+loads
+loaf
+loafed
+loafer
+loafers
+loafing
+loafs
+loam
+loan
+loaned
+loaning
+loans
+loath
+loathe
+loathed
+loathes
+loathing
+loathings
+loathsome
+loaves
+lob
+lobbed
+lobbied
+lobbies
+lobbing
+lobby
+lobbying
+lobbyist
+lobbyists
+lobe
+lobes
+lobotomy
+lobs
+lobster
+lobsters
+local
+locale
+locales
+localities
+locality
+localize
+localized
+localizes
+localizing
+locally
+locals
+locate
+located
+locates
+locating
+location
+locations
+lock
+locked
+locker
+lockers
+locket
+lockets
+locking
+locks
+locksmith
+locksmiths
+locomotion
+locomotive
+locomotives
+locust
+locusts
+lodge
+lodged
+lodger
+lodgers
+lodges
+lodging
+lodgings
+loft
+lofted
+loftier
+loftiest
+loftiness
+lofting
+lofts
+lofty
+log
+logarithm
+logarithmic
+logbook
+logbooks
+logged
+logger
+logging
+logic
+logical
+logically
+logician
+logistical
+logistics
+logjam
+logjams
+logo
+logos
+logs
+loin
+loincloth
+loincloths
+loins
+loiter
+loitered
+loiterer
+loiterers
+loitering
+loiters
+loll
+lolled
+lolling
+lollipop
+lollipops
+lolls
+lone
+lonelier
+loneliest
+loneliness
+lonely
+loner
+loners
+lonesome
+long
+longed
+longer
+longest
+longevity
+longhand
+longing
+longingly
+longings
+longish
+longitude
+longitudes
+longitudinal
+longs
+longshoreman
+longshoremen
+longtime
+look
+lookalike
+lookalikes
+looked
+looking
+lookout
+lookouts
+looks
+loom
+loomed
+looming
+looms
+loon
+loonie
+loonier
+loonies
+looniest
+loons
+loony
+loop
+looped
+loophole
+loopholes
+looping
+loops
+loose
+loosed
+loosely
+loosen
+loosened
+loosening
+loosens
+looser
+looses
+loosest
+loosing
+loot
+looted
+looter
+looters
+looting
+loots
+lop
+lope
+loped
+lopes
+loping
+lopped
+lopping
+lops
+lopsided
+lord
+lorded
+lording
+lords
+lore
+lorries
+lorry
+lose
+loser
+losers
+loses
+losing
+loss
+losses
+lost
+lot
+lotion
+lotions
+lots
+lotteries
+lottery
+lotus
+lotuses
+loud
+louder
+loudest
+loudly
+loudmouth
+loudmouthed
+loudmouths
+loudness
+loudspeaker
+loudspeakers
+lounge
+lounged
+lounges
+lounging
+louse
+louses
+lousier
+lousiest
+lousy
+lovable
+love
+loved
+lovelier
+lovelies
+loveliest
+loveliness
+lovely
+lover
+lovers
+loves
+lovesick
+loving
+lovingly
+low
+lowbrow
+lowbrows
+lowdown
+lowed
+lower
+lowercase
+lowered
+lowering
+lowers
+lowest
+lowing
+lowlier
+lowliest
+lowly
+lows
+loyal
+loyaler
+loyalest
+loyally
+loyalties
+loyalty
+lozenge
+lozenges
+ls
+lubricant
+lubricants
+lubricate
+lubricated
+lubricates
+lubricating
+lubrication
+lucid
+lucidity
+lucidly
+luck
+lucked
+luckier
+luckiest
+luckily
+lucking
+lucks
+lucky
+lucrative
+ludicrous
+ludicrously
+lug
+luggage
+lugged
+lugging
+lugs
+lugubrious
+lukewarm
+lull
+lullabies
+lullaby
+lulled
+lulling
+lulls
+lumber
+lumbered
+lumbering
+lumberjack
+lumberjacks
+lumbers
+lumberyard
+lumberyards
+luminaries
+luminary
+luminous
+lump
+lumped
+lumpier
+lumpiest
+lumping
+lumps
+lumpy
+lunacies
+lunacy
+lunar
+lunatic
+lunatics
+lunch
+lunchbox
+lunched
+luncheon
+luncheons
+lunches
+lunching
+lunchtime
+lunchtimes
+lung
+lunge
+lunged
+lunges
+lunging
+lungs
+lupine
+lupines
+lurch
+lurched
+lurches
+lurching
+lure
+lured
+lures
+lurid
+luridly
+luring
+lurk
+lurked
+lurking
+lurks
+luscious
+lush
+lusher
+lushes
+lushest
+lust
+lusted
+luster
+lustier
+lustiest
+lusting
+lustrous
+lusts
+lusty
+lute
+lutes
+luxuriant
+luxuriate
+luxuriated
+luxuriates
+luxuriating
+luxuries
+luxurious
+luxuriously
+luxury
+lye
+lying
+lymph
+lymphatic
+lymphatics
+lynch
+lynched
+lynches
+lynching
+lynchings
+lyre
+lyres
+lyric
+lyrical
+lyricist
+lyricists
+lyrics
+ma
+macabre
+macaroni
+macaronis
+mace
+maced
+maces
+machete
+machetes
+machine
+machined
+machinery
+machines
+machining
+machinist
+machinists
+macho
+macing
+mackerel
+mackerels
+macro
+macrocosm
+macrocosms
+macros
+macroscopic
+mad
+madam
+madame
+madams
+madcap
+madcaps
+madden
+maddened
+maddening
+maddeningly
+maddens
+madder
+maddest
+made
+madhouse
+madhouses
+madly
+madman
+madmen
+madness
+mads
+maelstrom
+maelstroms
+magazine
+magazines
+magenta
+maggot
+maggots
+magic
+magical
+magically
+magician
+magicians
+magistrate
+magistrates
+magnanimity
+magnanimous
+magnanimously
+magnate
+magnates
+magnesium
+magnet
+magnetic
+magnetism
+magnetize
+magnetized
+magnetizes
+magnetizing
+magnets
+magnification
+magnifications
+magnificence
+magnificent
+magnificently
+magnified
+magnifies
+magnify
+magnifying
+magnitude
+magnitudes
+magnolia
+magnolias
+magnum
+magpie
+magpies
+mahoganies
+mahogany
+maid
+maiden
+maidens
+maids
+mail
+mailbox
+mailboxes
+mailed
+mailing
+mailings
+mailman
+mailmen
+mails
+maim
+maimed
+maiming
+maims
+main
+mainframe
+mainframes
+mainland
+mainlands
+mainline
+mainly
+mains
+mainstay
+mainstays
+mainstream
+mainstreamed
+mainstreaming
+mainstreams
+maintain
+maintainability
+maintainable
+maintained
+maintainer
+maintainers
+maintaining
+maintains
+maintenance
+maize
+maizes
+majestic
+majestically
+majesties
+majesty
+major
+majored
+majoring
+majorities
+majority
+majorly
+majors
+make
+maker
+makers
+makes
+makeshift
+makeshifts
+makeup
+makeups
+making
+maladies
+maladjusted
+malady
+malaise
+malaria
+male
+males
+malevolence
+malevolent
+malformed
+malfunction
+malfunctioned
+malfunctioning
+malfunctions
+malice
+malicious
+maliciously
+malign
+malignancies
+malignancy
+malignant
+maligned
+maligning
+maligns
+mall
+mallard
+mallards
+malleable
+mallet
+mallets
+malls
+malnourished
+malnutrition
+malpractice
+malpractices
+malt
+malted
+malting
+maltreat
+maltreated
+maltreating
+maltreats
+malts
+mama
+mamas
+mamma
+mammal
+mammalian
+mammals
+mammoth
+mammoths
+man
+manacle
+manacled
+manacles
+manacling
+manage
+manageable
+managed
+management
+manager
+managerial
+managers
+manages
+managing
+mandarin
+mandarins
+mandate
+mandated
+mandates
+mandating
+mandatory
+mandible
+mandibles
+mandolin
+mandolins
+mane
+manes
+maneuver
+maneuvered
+maneuvering
+maneuvers
+mange
+manger
+mangers
+mangier
+mangiest
+mangle
+mangled
+mangles
+mangling
+mango
+mangoes
+mangrove
+mangroves
+mangy
+manhandle
+manhandled
+manhandles
+manhandling
+manhole
+manholes
+manhood
+manhunt
+manhunts
+mania
+maniac
+maniacal
+maniacs
+manias
+manic
+manics
+manicure
+manicured
+manicures
+manicuring
+manicurist
+manicurists
+manifest
+manifestation
+manifestations
+manifested
+manifesting
+manifestly
+manifesto
+manifestos
+manifests
+manifold
+manifolded
+manifolding
+manifolds
+manipulate
+manipulated
+manipulates
+manipulating
+manipulation
+manipulations
+manipulative
+mankind
+manlier
+manliest
+manliness
+manly
+manned
+mannequin
+mannequins
+manner
+mannerism
+mannerisms
+manners
+manning
+mannish
+manor
+manors
+manpower
+mans
+mansion
+mansions
+manslaughter
+mantel
+mantelpiece
+mantelpieces
+mantels
+mantle
+mantled
+mantles
+mantling
+mantra
+mantras
+manual
+manually
+manuals
+manufacture
+manufactured
+manufacturer
+manufacturers
+manufactures
+manufacturing
+manure
+manured
+manures
+manuring
+manuscript
+manuscripts
+many
+map
+maple
+maples
+mapped
+mapper
+mapping
+mappings
+maps
+mar
+marathon
+marathons
+marble
+marbled
+marbles
+marbling
+march
+marched
+marcher
+marches
+marching
+mare
+mares
+margarine
+margin
+marginal
+marginally
+margins
+maria
+marigold
+marigolds
+marijuana
+marina
+marinade
+marinaded
+marinades
+marinading
+marinas
+marinate
+marinated
+marinates
+marinating
+marine
+mariner
+mariners
+marines
+marionette
+marionettes
+marital
+maritime
+mark
+markdown
+markdowns
+marked
+markedly
+marker
+markers
+market
+marketability
+marketable
+marketed
+marketer
+marketers
+marketing
+marketplace
+marketplaces
+markets
+marking
+markings
+marks
+marksman
+marksmen
+markup
+markups
+marmalade
+maroon
+marooned
+marooning
+maroons
+marquee
+marquees
+marred
+marriage
+marriages
+married
+marrieds
+marries
+marring
+marrow
+marrows
+marry
+marrying
+mars
+marsh
+marshal
+marshaled
+marshaling
+marshals
+marshes
+marshier
+marshiest
+marshmallow
+marshmallows
+marshy
+marsupial
+marsupials
+mart
+martial
+martin
+marts
+martyr
+martyrdom
+martyred
+martyring
+martyrs
+marvel
+marveled
+marveling
+marvelous
+marvels
+mas
+mascara
+mascaraed
+mascaraing
+mascaras
+mascot
+mascots
+masculine
+masculines
+masculinity
+mash
+mashed
+mashes
+mashing
+mask
+masked
+masking
+masks
+masochism
+masochist
+masochistic
+masochists
+mason
+masonry
+masons
+masquerade
+masqueraded
+masquerades
+masquerading
+mass
+massacre
+massacred
+massacres
+massacring
+massage
+massaged
+massages
+massaging
+massed
+masses
+masseur
+masseurs
+masseuse
+masseuses
+massing
+massive
+massively
+mast
+master
+mastered
+masterful
+mastering
+masterly
+mastermind
+masterminded
+masterminding
+masterminds
+masterpiece
+masterpieces
+masters
+mastery
+masticate
+masticated
+masticates
+masticating
+masts
+masturbate
+masturbated
+masturbates
+masturbating
+masturbation
+mat
+matador
+matadors
+match
+matchbook
+matchbooks
+matchbox
+matchboxes
+matched
+matches
+matching
+matchless
+matchmaker
+matchmakers
+matchmaking
+matchstick
+matchsticks
+mate
+mated
+material
+materialism
+materialist
+materialistic
+materialists
+materialize
+materialized
+materializes
+materializing
+materials
+maternal
+maternity
+mates
+math
+mathematical
+mathematically
+mathematician
+mathematicians
+mathematics
+matinee
+matinees
+mating
+matriarch
+matriarchal
+matriarchies
+matriarchs
+matriarchy
+matrices
+matriculate
+matriculated
+matriculates
+matriculating
+matriculation
+matrimonial
+matrimony
+matrix
+matron
+matronly
+matrons
+mats
+matte
+matted
+matter
+mattered
+mattering
+matters
+mattes
+matting
+mattress
+mattresses
+mature
+matured
+maturer
+matures
+maturest
+maturing
+maturities
+maturity
+maudlin
+maul
+mauled
+mauling
+mauls
+mausoleum
+mausoleums
+mauve
+maverick
+mavericks
+mawkish
+maxed
+maxes
+maxim
+maxima
+maximal
+maximize
+maximized
+maximizes
+maximizing
+maxims
+maximum
+maximums
+maxing
+may
+maybe
+maybes
+mayday
+maydays
+mayhem
+mayo
+mayonnaise
+mayor
+mayors
+maze
+mazes
+me
+meadow
+meadows
+meager
+meal
+mealier
+mealiest
+meals
+mealtime
+mealtimes
+mealy
+mean
+meander
+meandered
+meandering
+meanders
+meaner
+meanest
+meaning
+meaningful
+meaningfully
+meaningless
+meanings
+means
+meant
+meantime
+meanwhile
+measles
+measlier
+measliest
+measly
+measurable
+measure
+measured
+measurement
+measurements
+measures
+measuring
+meat
+meatball
+meatballs
+meatier
+meatiest
+meatloaf
+meatloaves
+meats
+meaty
+mecca
+meccas
+mechanic
+mechanical
+mechanically
+mechanics
+mechanism
+mechanisms
+mechanization
+mechanize
+mechanized
+mechanizes
+mechanizing
+medal
+medalist
+medalists
+medallion
+medallions
+medals
+meddle
+meddled
+meddler
+meddlers
+meddles
+meddlesome
+meddling
+media
+median
+medians
+medias
+mediate
+mediated
+mediates
+mediating
+mediation
+mediator
+mediators
+medical
+medically
+medicals
+medicate
+medicated
+medicates
+medicating
+medication
+medications
+medicinal
+medicine
+medicines
+medieval
+mediocre
+mediocrities
+mediocrity
+meditate
+meditated
+meditates
+meditating
+meditation
+meditations
+medium
+mediums
+medley
+medleys
+meek
+meeker
+meekest
+meekly
+meekness
+meet
+meeting
+meetinghouse
+meetinghouses
+meetings
+meets
+meg
+megabyte
+megabytes
+megalomania
+megalomaniac
+megalomaniacs
+megaphone
+megaphoned
+megaphones
+megaphoning
+megaton
+megatons
+megs
+melancholy
+meld
+melded
+melding
+melds
+melee
+melees
+mellow
+mellowed
+mellower
+mellowest
+mellowing
+mellows
+melodic
+melodies
+melodious
+melodrama
+melodramas
+melodramatic
+melody
+melon
+melons
+melt
+meltdown
+meltdowns
+melted
+melting
+melts
+member
+members
+membership
+memberships
+membrane
+membranes
+memento
+mementos
+memo
+memoir
+memoirs
+memorabilia
+memorable
+memorably
+memorandum
+memorandums
+memorial
+memorials
+memories
+memorize
+memorized
+memorizes
+memorizing
+memory
+memos
+men
+menace
+menaced
+menaces
+menacing
+menagerie
+menageries
+mend
+mended
+mending
+mends
+menial
+menials
+meningitis
+menopause
+menorah
+menorahs
+menstrual
+menstruate
+menstruated
+menstruates
+menstruating
+menstruation
+mental
+mentalities
+mentality
+mentally
+menthol
+mention
+mentioned
+mentioning
+mentions
+mentor
+mentored
+mentoring
+mentors
+menu
+menus
+meow
+meowed
+meowing
+meows
+mercantile
+mercenaries
+mercenary
+merchandise
+merchandised
+merchandises
+merchandising
+merchant
+merchants
+mercies
+merciful
+mercifully
+merciless
+mercilessly
+mercury
+mercy
+mere
+merely
+meres
+merest
+merge
+merged
+merger
+mergers
+merges
+merging
+meridian
+meridians
+meringue
+meringues
+merit
+merited
+meriting
+merits
+mermaid
+mermaids
+merrier
+merriest
+merrily
+merriment
+merry
+mes
+mesdames
+mesh
+meshed
+meshes
+meshing
+mesmerize
+mesmerized
+mesmerizes
+mesmerizing
+mess
+message
+messages
+messed
+messenger
+messengers
+messes
+messier
+messiest
+messing
+messy
+met
+metabolic
+metabolism
+metabolisms
+metal
+metallic
+metallurgist
+metallurgists
+metallurgy
+metals
+metamorphose
+metamorphoses
+metamorphosis
+metaphor
+metaphorical
+metaphorically
+metaphors
+metaphysical
+metaphysics
+mete
+meted
+meteor
+meteoric
+meteorite
+meteorites
+meteorological
+meteorologist
+meteorologists
+meteorology
+meteors
+meter
+metered
+metering
+meters
+metes
+methadone
+methane
+method
+methodical
+methodically
+methodological
+methodologies
+methodology
+methods
+meticulous
+meticulously
+meting
+metric
+metro
+metropolis
+metropolises
+metropolitan
+metros
+mettle
+mew
+mewed
+mewing
+mews
+mezzanine
+mezzanines
+mi
+mice
+microbe
+microbes
+microbiology
+microchip
+microchips
+microcode
+microcomputer
+microcomputers
+microcosm
+microcosms
+microfiche
+microfilm
+microfilmed
+microfilming
+microfilms
+micrometer
+micrometers
+microorganism
+microorganisms
+microphone
+microphones
+microprocessor
+microprocessors
+microscope
+microscopes
+microscopic
+microsecond
+microseconds
+microwave
+microwaved
+microwaves
+microwaving
+midair
+midday
+middle
+middleman
+middlemen
+middles
+midget
+midgets
+midnight
+midriff
+midriffs
+midst
+midstream
+midsummer
+midterm
+midterms
+midway
+midways
+midweek
+midweeks
+midwife
+midwifed
+midwifes
+midwifing
+midwinter
+midwives
+mien
+miens
+miff
+miffed
+miffing
+miffs
+might
+mightier
+mightiest
+mighty
+migraine
+migraines
+migrant
+migrants
+migrate
+migrated
+migrates
+migrating
+migration
+migrations
+migratory
+mike
+miked
+mikes
+miking
+mild
+milder
+mildest
+mildew
+mildewed
+mildewing
+mildews
+mildly
+mildness
+mile
+mileage
+mileages
+miles
+milestone
+milestones
+milieu
+milieus
+militancy
+militant
+militants
+militarily
+militarism
+military
+militate
+militated
+militates
+militating
+militia
+militias
+milk
+milked
+milker
+milkier
+milkiest
+milking
+milkman
+milkmen
+milks
+milky
+mill
+milled
+millennia
+millennium
+millenniums
+miller
+millers
+milligram
+milligrams
+milliliter
+milliliters
+millimeter
+millimeters
+milliner
+milliners
+millinery
+milling
+million
+millionaire
+millionaires
+millions
+millionth
+millionths
+millisecond
+milliseconds
+mills
+mime
+mimed
+mimes
+mimic
+mimicked
+mimicking
+mimicries
+mimicry
+mimics
+miming
+mince
+minced
+mincemeat
+minces
+mincing
+mind
+mindbogglingly
+minded
+mindedness
+mindful
+minding
+mindless
+mindlessly
+minds
+mine
+mined
+minefield
+minefields
+miner
+mineral
+minerals
+miners
+mines
+mingle
+mingled
+mingles
+mingling
+mini
+miniature
+miniatures
+minibus
+minibuses
+minicomputer
+minimal
+minimalism
+minimalist
+minimally
+minimize
+minimized
+minimizes
+minimizing
+minimum
+minimums
+mining
+minion
+minions
+minis
+miniseries
+miniskirt
+miniskirts
+minister
+ministered
+ministerial
+ministering
+ministers
+ministries
+ministry
+minivan
+minivans
+mink
+minks
+minnow
+minnows
+minor
+minored
+minoring
+minorities
+minority
+minors
+minstrel
+minstrels
+mint
+minted
+mintier
+mintiest
+minting
+mints
+minty
+minuet
+minuets
+minus
+minuscule
+minuscules
+minuses
+minute
+minuted
+minuter
+minutes
+minutest
+minuting
+miracle
+miracles
+miraculous
+miraculously
+mirage
+mirages
+mire
+mired
+mires
+miring
+mirror
+mirrored
+mirroring
+mirrors
+mirth
+misadventure
+misadventures
+misapprehension
+misappropriate
+misappropriated
+misappropriates
+misappropriating
+misappropriation
+misappropriations
+misbehave
+misbehaved
+misbehaves
+misbehaving
+misbehavior
+miscalculate
+miscalculated
+miscalculates
+miscalculating
+miscalculation
+miscalculations
+miscarriage
+miscarriages
+miscarried
+miscarries
+miscarry
+miscarrying
+miscellaneous
+miscellany
+mischief
+mischievous
+mischievously
+misconception
+misconceptions
+misconduct
+misconducted
+misconducting
+misconducts
+misconstrue
+misconstrued
+misconstrues
+misconstruing
+misdeed
+misdeeds
+misdemeanor
+misdemeanors
+misdirect
+misdirected
+misdirecting
+misdirection
+misdirects
+miser
+miserable
+miserably
+miseries
+miserly
+misers
+misery
+misfit
+misfits
+misfitted
+misfitting
+misfortune
+misfortunes
+misgiving
+misgivings
+misguide
+misguided
+misguides
+misguiding
+mishap
+mishaps
+misinform
+misinformation
+misinformed
+misinforming
+misinforms
+misinterpret
+misinterpretation
+misinterpretations
+misinterpreted
+misinterpreting
+misinterprets
+misjudge
+misjudged
+misjudges
+misjudging
+misjudgment
+misjudgments
+mislaid
+mislay
+mislaying
+mislays
+mislead
+misleading
+misleads
+misled
+mismanage
+mismanaged
+mismanagement
+mismanages
+mismanaging
+mismatch
+mismatched
+mismatches
+mismatching
+misnomer
+misnomers
+misogynist
+misogynists
+misogyny
+misplace
+misplaced
+misplaces
+misplacing
+misprint
+misprinted
+misprinting
+misprints
+mispronounce
+mispronounced
+mispronounces
+mispronouncing
+mispronunciation
+mispronunciations
+misquote
+misquoted
+misquotes
+misquoting
+misread
+misreading
+misreadings
+misreads
+misrepresent
+misrepresentation
+misrepresentations
+misrepresented
+misrepresenting
+misrepresents
+miss
+missed
+misses
+misshapen
+missile
+missiles
+missing
+mission
+missionaries
+missionary
+missions
+missive
+missives
+misspell
+misspelled
+misspelling
+misspellings
+misspells
+misspend
+misspending
+misspends
+misspent
+misstep
+missteps
+mist
+mistake
+mistaken
+mistakenly
+mistakes
+mistaking
+misted
+mister
+misters
+mistier
+mistiest
+misting
+mistletoe
+mistook
+mistreat
+mistreated
+mistreating
+mistreatment
+mistreats
+mistress
+mistresses
+mistrial
+mistrials
+mistrust
+mistrusted
+mistrusting
+mistrusts
+mists
+misty
+mistype
+mistyping
+misunderstand
+misunderstanding
+misunderstandings
+misunderstands
+misunderstood
+misuse
+misused
+misuses
+misusing
+mite
+mites
+mitigate
+mitigated
+mitigates
+mitigating
+mitigation
+mitt
+mitten
+mittens
+mitts
+mix
+mixed
+mixer
+mixers
+mixes
+mixing
+mixture
+mixtures
+mnemonic
+mnemonics
+moan
+moaned
+moaning
+moans
+moat
+moats
+mob
+mobbed
+mobbing
+mobile
+mobiles
+mobility
+mobilization
+mobilizations
+mobilize
+mobilized
+mobilizes
+mobilizing
+mobs
+moccasin
+moccasins
+mock
+mocked
+mockeries
+mockery
+mocking
+mockingbird
+mockingbirds
+mocks
+mod
+modal
+modals
+mode
+model
+modeled
+modeling
+modelings
+models
+modem
+modems
+moderate
+moderated
+moderately
+moderates
+moderating
+moderation
+moderator
+moderators
+modern
+modernity
+modernization
+modernize
+modernized
+modernizes
+modernizing
+moderns
+modes
+modest
+modestly
+modesty
+modicum
+modicums
+modification
+modifications
+modified
+modifier
+modifiers
+modifies
+modify
+modifying
+modular
+modulate
+modulated
+modulates
+modulating
+modulation
+modulations
+module
+modules
+mohair
+moist
+moisten
+moistened
+moistening
+moistens
+moister
+moistest
+moisture
+moisturizer
+moisturizers
+molar
+molars
+molasses
+mold
+molded
+moldier
+moldiest
+molding
+moldings
+molds
+moldy
+mole
+molecular
+molecule
+molecules
+moles
+molest
+molestation
+molested
+molester
+molesters
+molesting
+molests
+mollified
+mollifies
+mollify
+mollifying
+mollusk
+mollusks
+molt
+molted
+molten
+molting
+molts
+mom
+moment
+momentarily
+momentary
+momentous
+moments
+momentum
+mommies
+mommy
+moms
+monarch
+monarchies
+monarchs
+monarchy
+monasteries
+monastery
+monastic
+monastics
+monetarism
+monetary
+money
+mongoose
+mongrel
+mongrels
+monies
+moniker
+monikers
+monitor
+monitored
+monitoring
+monitors
+monk
+monkey
+monkeyed
+monkeying
+monkeys
+monks
+mono
+monochrome
+monochromes
+monogamous
+monogamy
+monogram
+monogrammed
+monogramming
+monograms
+monolingual
+monolinguals
+monolith
+monolithic
+monoliths
+monologue
+monologues
+mononucleosis
+monopolies
+monopolization
+monopolize
+monopolized
+monopolizes
+monopolizing
+monopoly
+monorail
+monorails
+monosyllable
+monosyllables
+monotone
+monotones
+monotonically
+monotonous
+monotonously
+monotony
+monsoon
+monsoons
+monster
+monsters
+monstrosities
+monstrosity
+monstrous
+montage
+montages
+month
+monthlies
+monthly
+months
+monument
+monumental
+monuments
+moo
+mooch
+mooched
+mooches
+mooching
+mood
+moodier
+moodiest
+moodily
+moodiness
+moods
+moody
+mooed
+mooing
+moon
+moonbeam
+moonbeams
+mooned
+mooning
+moonlight
+moonlighted
+moonlighting
+moonlights
+moonlit
+moons
+moor
+moored
+mooring
+moorings
+moors
+moos
+moose
+moot
+mooted
+mooting
+moots
+mop
+mope
+moped
+mopeds
+mopes
+moping
+mopped
+mopping
+mops
+moral
+morale
+moralist
+moralistic
+moralists
+moralities
+morality
+morally
+morals
+morass
+morasses
+moratorium
+moratoriums
+morbid
+more
+moreover
+mores
+morgue
+morgues
+morn
+morning
+mornings
+morns
+moron
+moronic
+morons
+morose
+morphine
+morphology
+morsel
+morsels
+mortal
+mortality
+mortally
+mortals
+mortar
+mortarboard
+mortarboards
+mortared
+mortaring
+mortars
+mortgage
+mortgaged
+mortgages
+mortgaging
+mortician
+morticians
+mortification
+mortified
+mortifies
+mortify
+mortifying
+mortuaries
+mortuary
+mosaic
+mosaics
+mosque
+mosques
+mosquito
+mosquitoes
+moss
+mosses
+mossier
+mossiest
+mossy
+most
+mostly
+motel
+motels
+moth
+mothball
+mothballed
+mothballing
+mothballs
+mother
+motherboard
+motherboards
+mothered
+motherhood
+mothering
+motherly
+mothers
+moths
+motif
+motifs
+motion
+motioned
+motioning
+motionless
+motions
+motivate
+motivated
+motivates
+motivating
+motivation
+motivations
+motive
+motives
+motley
+motleys
+motlier
+motliest
+motor
+motorbike
+motorbiked
+motorbikes
+motorbiking
+motorboat
+motorboats
+motorcade
+motorcades
+motorcycle
+motorcycled
+motorcycles
+motorcycling
+motorcyclist
+motorcyclists
+motored
+motoring
+motorist
+motorists
+motorize
+motorized
+motorizes
+motorizing
+motormouth
+motormouths
+motors
+motorway
+motorways
+mottle
+mottled
+mottles
+mottling
+motto
+mottoes
+mound
+mounded
+mounding
+mounds
+mount
+mountain
+mountaineer
+mountaineered
+mountaineering
+mountaineers
+mountainous
+mountains
+mountainside
+mountainsides
+mounted
+mounting
+mountings
+mounts
+mourn
+mourned
+mourner
+mourners
+mournful
+mournfully
+mourning
+mourns
+mouse
+moused
+mouses
+mousier
+mousiest
+mousing
+mousse
+moussed
+mousses
+moussing
+mousy
+mouth
+mouthed
+mouthful
+mouthfuls
+mouthing
+mouthpiece
+mouthpieces
+mouths
+mouthwash
+mouthwashes
+movable
+movables
+move
+moved
+movement
+movements
+mover
+movers
+moves
+movie
+movies
+moving
+mow
+mowed
+mower
+mowers
+mowing
+mows
+ms
+mu
+much
+muck
+mucked
+mucking
+mucks
+mucous
+mucus
+mud
+muddied
+muddier
+muddies
+muddiest
+muddle
+muddled
+muddles
+muddling
+muddy
+muddying
+mudslide
+mudslides
+mudslinging
+muff
+muffed
+muffin
+muffing
+muffins
+muffle
+muffled
+muffler
+mufflers
+muffles
+muffling
+muffs
+mug
+mugged
+mugger
+muggers
+muggier
+muggiest
+mugginess
+mugging
+muggings
+muggy
+mugs
+mulatto
+mulattoes
+mulch
+mulched
+mulches
+mulching
+mule
+mules
+mull
+mulled
+mulling
+mulls
+multi
+multicultural
+multilateral
+multimedia
+multimillionaire
+multimillionaires
+multinational
+multinationals
+multiple
+multiples
+multiplex
+multiplexed
+multiplexes
+multiplexing
+multiplication
+multiplications
+multiplicative
+multiplicities
+multiplicity
+multiplied
+multiplies
+multiply
+multiplying
+multiprocessing
+multitasking
+multitude
+multitudes
+mum
+mumble
+mumbled
+mumbles
+mumbling
+mummies
+mummified
+mummifies
+mummify
+mummifying
+mummy
+mumps
+munch
+munched
+munches
+munchies
+munching
+mundane
+municipal
+municipalities
+municipality
+municipals
+munition
+munitions
+mural
+murals
+murder
+murdered
+murderer
+murderers
+murdering
+murderous
+murders
+murkier
+murkiest
+murky
+murmur
+murmured
+murmuring
+murmurs
+muscle
+muscled
+muscles
+muscling
+muscular
+muse
+mused
+muses
+museum
+museums
+mush
+mushed
+mushes
+mushier
+mushiest
+mushing
+mushroom
+mushroomed
+mushrooming
+mushrooms
+mushy
+music
+musical
+musically
+musicals
+musician
+musicians
+musing
+musings
+musk
+musket
+muskets
+muss
+mussed
+mussel
+mussels
+musses
+mussing
+must
+mustache
+mustaches
+mustang
+mustangs
+mustard
+muster
+mustered
+mustering
+musters
+mustier
+mustiest
+musts
+musty
+mutability
+mutable
+mutant
+mutants
+mutate
+mutated
+mutates
+mutating
+mutation
+mutations
+mute
+muted
+mutely
+muter
+mutes
+mutest
+mutilate
+mutilated
+mutilates
+mutilating
+mutilation
+mutilations
+muting
+mutinied
+mutinies
+mutinous
+mutiny
+mutinying
+mutt
+mutter
+muttered
+muttering
+mutters
+mutton
+mutts
+mutual
+mutually
+muzzle
+muzzled
+muzzles
+muzzling
+my
+myopic
+myriad
+myriads
+mys
+myself
+mysteries
+mysterious
+mysteriously
+mystery
+mystic
+mystical
+mysticism
+mystics
+mystified
+mystifies
+mystify
+mystifying
+mystique
+myth
+mythical
+mythological
+mythologies
+mythology
+myths
+nab
+nabbed
+nabbing
+nabs
+nag
+nagged
+nagging
+nags
+nail
+nailbrush
+nailbrushes
+nailed
+nailing
+nails
+naive
+naively
+naiver
+naivest
+naivete
+naivety
+naked
+nakedness
+name
+named
+nameless
+namely
+names
+namesake
+namesakes
+naming
+nannies
+nanny
+nap
+napalm
+napalmed
+napalming
+napalms
+nape
+napes
+napkin
+napkins
+napped
+nappier
+nappies
+nappiest
+napping
+nappy
+naps
+narc
+narcissism
+narcissist
+narcissistic
+narcissists
+narcotic
+narcotics
+narcs
+nark
+narrate
+narrated
+narrates
+narrating
+narration
+narrations
+narrative
+narratives
+narrator
+narrators
+narrow
+narrowed
+narrower
+narrowest
+narrowing
+narrowly
+narrowness
+narrows
+nasal
+nasally
+nasals
+nastier
+nastiest
+nastily
+nastiness
+nasty
+nation
+national
+nationalism
+nationalist
+nationalistic
+nationalists
+nationalities
+nationality
+nationalization
+nationalizations
+nationalize
+nationalized
+nationalizes
+nationalizing
+nationally
+nationals
+nations
+nationwide
+native
+natives
+nativities
+nativity
+nattier
+nattiest
+natty
+natural
+naturalist
+naturalists
+naturalization
+naturalize
+naturalized
+naturalizes
+naturalizing
+naturally
+naturalness
+naturals
+nature
+natures
+naught
+naughtier
+naughtiest
+naughtily
+naughtiness
+naughts
+naughty
+nausea
+nauseate
+nauseated
+nauseates
+nauseating
+nauseous
+nautical
+naval
+navel
+navels
+navies
+navigable
+navigate
+navigated
+navigates
+navigating
+navigation
+navigational
+navigator
+navigators
+navy
+nay
+nays
+near
+nearby
+neared
+nearer
+nearest
+nearing
+nearly
+nears
+nearsighted
+nearsightedness
+neat
+neater
+neatest
+neatly
+neatness
+nebula
+nebulae
+nebulous
+necessaries
+necessarily
+necessary
+necessitate
+necessitated
+necessitates
+necessitating
+necessities
+necessity
+neck
+necked
+neckerchief
+neckerchiefs
+necking
+necklace
+necklaces
+neckline
+necklines
+necks
+necktie
+neckties
+necrophilia
+nectar
+nectarine
+nectarines
+nee
+need
+needed
+needier
+neediest
+needing
+needle
+needled
+needles
+needless
+needlessly
+needlework
+needling
+needs
+needy
+negate
+negated
+negates
+negating
+negation
+negations
+negative
+negatived
+negatively
+negatives
+negativing
+neglect
+neglected
+neglectful
+neglecting
+neglects
+negligee
+negligees
+negligence
+negligent
+negligently
+negligible
+negotiable
+negotiate
+negotiated
+negotiates
+negotiating
+negotiation
+negotiations
+negotiator
+negotiators
+neigh
+neighbor
+neighbored
+neighborhood
+neighborhoods
+neighboring
+neighborliness
+neighborly
+neighbors
+neighed
+neighing
+neighs
+neither
+neon
+neophyte
+neophytes
+nephew
+nephews
+nepotism
+nerd
+nerdier
+nerdiest
+nerds
+nerdy
+nerve
+nerved
+nerves
+nerving
+nervous
+nervously
+nervousness
+nest
+nested
+nesting
+nestle
+nestled
+nestles
+nestling
+nests
+net
+nether
+nets
+netted
+netting
+nettle
+nettled
+nettles
+nettling
+network
+networked
+networking
+networks
+neural
+neurological
+neurologist
+neurologists
+neurology
+neuron
+neurons
+neuroses
+neurosis
+neurotic
+neurotics
+neuter
+neutered
+neutering
+neuters
+neutral
+neutrality
+neutralization
+neutralize
+neutralized
+neutralizes
+neutralizing
+neutrals
+neutron
+neutrons
+never
+nevertheless
+new
+newbie
+newbies
+newborn
+newborns
+newcomer
+newcomers
+newer
+newest
+newfangled
+newly
+newlywed
+newlyweds
+newness
+news
+newsagents
+newscast
+newscaster
+newscasters
+newscasts
+newsier
+newsiest
+newsletter
+newsletters
+newspaper
+newspapers
+newsprint
+newsstand
+newsstands
+newsworthy
+newsy
+newt
+newton
+newts
+next
+nibble
+nibbled
+nibbles
+nibbling
+nice
+nicely
+nicer
+nicest
+niceties
+nicety
+niche
+niches
+nick
+nicked
+nickel
+nickels
+nicking
+nickname
+nicknamed
+nicknames
+nicknaming
+nicks
+nicotine
+niece
+nieces
+niftier
+niftiest
+nifty
+niggle
+niggled
+niggles
+niggling
+nigh
+night
+nightclub
+nightclubbed
+nightclubbing
+nightclubs
+nightfall
+nightgown
+nightgowns
+nightie
+nighties
+nightingale
+nightingales
+nightlife
+nightly
+nightmare
+nightmares
+nightmarish
+nights
+nighttime
+nil
+nimble
+nimbler
+nimblest
+nimbly
+nincompoop
+nincompoops
+nine
+nines
+nineteen
+nineteens
+nineteenth
+nineteenths
+nineties
+ninetieth
+ninetieths
+ninety
+ninnies
+ninny
+ninth
+ninths
+nip
+nipped
+nippier
+nippiest
+nipping
+nipple
+nipples
+nippy
+nips
+nit
+nitrate
+nitrated
+nitrates
+nitrating
+nitrogen
+nits
+nitwit
+nitwits
+no
+nobility
+noble
+nobleman
+noblemen
+nobler
+nobles
+noblest
+noblewoman
+noblewomen
+nobly
+nobodies
+nobody
+nocturnal
+nod
+nodded
+nodding
+node
+nodes
+nods
+noes
+noise
+noised
+noiseless
+noiselessly
+noises
+noisier
+noisiest
+noisily
+noisiness
+noising
+noisy
+nomad
+nomadic
+nomads
+nomenclature
+nomenclatures
+nominal
+nominally
+nominate
+nominated
+nominates
+nominating
+nomination
+nominations
+nominative
+nominatives
+nominee
+nominees
+non
+nonchalance
+nonchalant
+nonchalantly
+noncommittal
+noncommittally
+nonconformist
+nonconformists
+nondairy
+nondenominational
+nondescript
+none
+nonentities
+nonentity
+nonetheless
+nonevent
+nonevents
+nonexistent
+nonfat
+nonfiction
+nonflammable
+nonintervention
+nonpartisan
+nonpartisans
+nonplus
+nonplussed
+nonplussing
+nonprofit
+nonprofits
+nonproliferation
+nonrefundable
+nonrenewable
+nonresident
+nonresidents
+nonsense
+nonsensical
+nonsmoker
+nonsmokers
+nonsmoking
+nonstandard
+nonstick
+nonstop
+nontrivial
+nonverbal
+nonviolence
+nonviolent
+noodle
+noodled
+noodles
+noodling
+nook
+nooks
+noon
+noose
+nooses
+nope
+nor
+norm
+normal
+normalcy
+normality
+normalization
+normalize
+normalized
+normalizes
+normalizing
+normally
+norms
+north
+northbound
+northeast
+northeasterly
+northeastern
+northeastward
+northerlies
+northerly
+northern
+northerner
+northerners
+northernmost
+northward
+northwest
+northwesterly
+northwestern
+northwestward
+nose
+nosebleed
+nosebleeds
+nosed
+nosedive
+nosedived
+nosedives
+nosediving
+noses
+nosier
+nosiest
+nosing
+nostalgia
+nostalgic
+nostalgically
+nostril
+nostrils
+nosy
+not
+notable
+notables
+notably
+notation
+notations
+notch
+notched
+notches
+notching
+note
+notebook
+notebooks
+noted
+notes
+noteworthy
+nothing
+nothingness
+nothings
+notice
+noticeable
+noticeably
+noticeboard
+noticeboards
+noticed
+notices
+noticing
+notification
+notifications
+notified
+notifies
+notify
+notifying
+noting
+notion
+notional
+notions
+notoriety
+notorious
+notoriously
+notwithstanding
+nougat
+nougats
+noun
+nouns
+nourish
+nourished
+nourishes
+nourishing
+nourishment
+nova
+novel
+novelist
+novelists
+novels
+novelties
+novelty
+novice
+novices
+now
+nowadays
+nowhere
+noxious
+nozzle
+nozzles
+nuance
+nuances
+nuclear
+nuclei
+nucleus
+nude
+nuder
+nudes
+nudest
+nudge
+nudged
+nudges
+nudging
+nudist
+nudists
+nudity
+nugget
+nuggets
+nuisance
+nuisances
+nuke
+nuked
+nukes
+nuking
+null
+nullified
+nullifies
+nullify
+nullifying
+nulls
+numb
+numbed
+number
+numbered
+numbering
+numbers
+numbest
+numbing
+numbness
+numbs
+numeral
+numerals
+numerate
+numerator
+numerators
+numeric
+numerical
+numerically
+numerous
+nun
+nuns
+nuptial
+nuptials
+nurse
+nursed
+nursemaid
+nursemaids
+nurseries
+nursery
+nurses
+nursing
+nurture
+nurtured
+nurtures
+nurturing
+nut
+nutcracker
+nutcrackers
+nutmeg
+nutmegs
+nutrient
+nutrients
+nutriment
+nutriments
+nutrition
+nutritional
+nutritious
+nuts
+nutshell
+nutshells
+nutted
+nuttier
+nuttiest
+nutting
+nutty
+nuzzle
+nuzzled
+nuzzles
+nuzzling
+nylon
+nylons
+nymph
+nymphomania
+nymphomaniac
+nymphomaniacs
+nymphs
+OK
+OKed
+OKing
+OKs
+o
+oaf
+oafs
+oak
+oaks
+oar
+oared
+oaring
+oars
+oases
+oasis
+oat
+oath
+oaths
+oatmeal
+oats
+obedience
+obedient
+obediently
+obelisk
+obelisks
+obese
+obesity
+obey
+obeyed
+obeying
+obeys
+obfuscation
+obituaries
+obituary
+object
+objected
+objecting
+objection
+objectionable
+objections
+objective
+objectively
+objectives
+objectivity
+objector
+objectors
+objects
+obligate
+obligated
+obligates
+obligating
+obligation
+obligations
+obligatory
+oblige
+obliged
+obliges
+obliging
+obligingly
+oblique
+obliques
+obliterate
+obliterated
+obliterates
+obliterating
+obliteration
+oblivion
+oblivious
+oblong
+oblongs
+obnoxious
+obnoxiously
+oboe
+oboes
+obscene
+obscener
+obscenest
+obscenities
+obscenity
+obscure
+obscured
+obscurer
+obscures
+obscurest
+obscuring
+obscurities
+obscurity
+observable
+observance
+observances
+observant
+observation
+observations
+observatories
+observatory
+observe
+observed
+observer
+observers
+observes
+observing
+obsess
+obsessed
+obsesses
+obsessing
+obsession
+obsessions
+obsessive
+obsessively
+obsessives
+obsolescence
+obsolescent
+obsolete
+obsoleted
+obsoletes
+obsoleting
+obstacle
+obstacles
+obstetrician
+obstetricians
+obstetrics
+obstinacy
+obstinate
+obstinately
+obstruct
+obstructed
+obstructing
+obstruction
+obstructions
+obstructive
+obstructs
+obtain
+obtainable
+obtained
+obtaining
+obtains
+obtrusive
+obtuse
+obtuser
+obtusest
+obvious
+obviously
+occasion
+occasional
+occasionally
+occasioned
+occasioning
+occasions
+occult
+occupancy
+occupant
+occupants
+occupation
+occupational
+occupations
+occupied
+occupies
+occupy
+occupying
+occur
+occurred
+occurrence
+occurrences
+occurring
+occurs
+ocean
+oceanic
+oceanography
+oceans
+octagon
+octagonal
+octagons
+octal
+octave
+octaves
+octopus
+octopuses
+ocular
+oculars
+odd
+odder
+oddest
+oddities
+oddity
+oddly
+oddness
+odds
+ode
+odes
+odious
+odometer
+odometers
+odor
+odors
+odyssey
+odysseys
+of
+off
+offbeat
+offbeats
+offed
+offend
+offended
+offender
+offenders
+offending
+offends
+offense
+offenses
+offensive
+offensively
+offensiveness
+offensives
+offer
+offered
+offering
+offerings
+offers
+offhand
+office
+officer
+officers
+offices
+official
+officially
+officials
+officiate
+officiated
+officiates
+officiating
+officious
+offing
+offings
+offload
+offs
+offset
+offsets
+offsetting
+offshoot
+offshoots
+offshore
+offspring
+offstage
+offstages
+often
+oftener
+oftenest
+ogle
+ogled
+ogles
+ogling
+ogre
+ogres
+oh
+ohm
+ohms
+ohs
+oil
+oiled
+oilfield
+oilfields
+oilier
+oiliest
+oiling
+oils
+oily
+oink
+oinked
+oinking
+oinks
+ointment
+ointments
+okay
+okaying
+okays
+okra
+okras
+old
+olden
+older
+oldest
+oldie
+oldies
+olfactories
+olfactory
+olive
+olives
+ombudsman
+ombudsmen
+omega
+omelet
+omelets
+omen
+omens
+ominous
+ominously
+omission
+omissions
+omit
+omits
+omitted
+omitting
+omnibus
+omnipotence
+omnipotent
+omnipresent
+omniscience
+omniscient
+on
+once
+oncoming
+one
+onerous
+ones
+oneself
+onetime
+ongoing
+onion
+onions
+onlooker
+onlookers
+only
+onomatopoeia
+onrush
+onrushes
+onset
+onsets
+onslaught
+onslaughts
+onto
+onus
+onuses
+onward
+oodles
+oops
+ooze
+oozed
+oozes
+oozing
+opal
+opals
+opaque
+opaqued
+opaquer
+opaques
+opaquest
+opaquing
+open
+opened
+opener
+openers
+openest
+opening
+openings
+openly
+openness
+opens
+opera
+operable
+operand
+operands
+operas
+operate
+operated
+operates
+operatic
+operating
+operation
+operational
+operationally
+operations
+operative
+operatives
+operator
+operators
+ophthalmologist
+ophthalmologists
+ophthalmology
+opinion
+opinionated
+opinions
+opium
+opossum
+opossums
+opponent
+opponents
+opportune
+opportunism
+opportunist
+opportunistic
+opportunists
+opportunities
+opportunity
+oppose
+opposed
+opposes
+opposing
+opposite
+opposites
+opposition
+oppress
+oppressed
+oppresses
+oppressing
+oppression
+oppressive
+oppressor
+oppressors
+opt
+opted
+optic
+optical
+optician
+opticians
+optics
+optima
+optimal
+optimism
+optimist
+optimistic
+optimistically
+optimists
+optimization
+optimize
+optimized
+optimizes
+optimizing
+optimum
+optimums
+opting
+option
+optional
+optionally
+optioned
+optioning
+options
+optometrist
+optometrists
+optometry
+opts
+opulence
+opulent
+opus
+opuses
+or
+oracle
+oracles
+oral
+orally
+orals
+orange
+oranges
+orangutan
+orangutans
+oration
+orations
+orator
+oratories
+orators
+oratory
+orbit
+orbital
+orbitals
+orbited
+orbiting
+orbits
+orchard
+orchards
+orchestra
+orchestral
+orchestras
+orchestrate
+orchestrated
+orchestrates
+orchestrating
+orchestration
+orchestrations
+orchid
+orchids
+ordain
+ordained
+ordaining
+ordains
+ordeal
+ordeals
+order
+ordered
+ordering
+orderlies
+orderly
+orders
+ordinal
+ordinals
+ordinance
+ordinances
+ordinaries
+ordinarily
+ordinary
+ordination
+ordinations
+ore
+ores
+organ
+organic
+organically
+organics
+organism
+organisms
+organist
+organists
+organization
+organizational
+organizations
+organize
+organized
+organizer
+organizers
+organizes
+organizing
+organs
+orgasm
+orgasms
+orgies
+orgy
+orient
+oriental
+orientals
+orientate
+orientated
+orientates
+orientating
+orientation
+orientations
+oriented
+orienting
+orients
+orifice
+origin
+original
+originality
+originally
+originals
+originate
+originated
+originates
+originating
+originator
+originators
+origins
+oriole
+orioles
+ornament
+ornamental
+ornamented
+ornamenting
+ornaments
+ornate
+ornately
+ornithologist
+ornithologists
+ornithology
+orphan
+orphanage
+orphanages
+orphaned
+orphaning
+orphans
+orthodontics
+orthodontist
+orthodontists
+orthodox
+orthodoxies
+orthodoxy
+orthogonal
+orthogonality
+orthography
+orthopedics
+oscillate
+oscillated
+oscillates
+oscillating
+oscillation
+oscillations
+oscilloscope
+osmosis
+ostensible
+ostensibly
+ostentation
+ostentatious
+ostentatiously
+ostracism
+ostracize
+ostracized
+ostracizes
+ostracizing
+ostrich
+ostriches
+other
+others
+otherwise
+otter
+otters
+ouch
+ought
+ounce
+ounces
+our
+ours
+ourselves
+oust
+ousted
+ouster
+ousters
+ousting
+ousts
+out
+outage
+outages
+outback
+outbacks
+outbid
+outbidding
+outbids
+outbound
+outbreak
+outbreaks
+outburst
+outbursts
+outcast
+outcasts
+outclass
+outclassed
+outclasses
+outclassing
+outcome
+outcomes
+outcries
+outcrop
+outcropped
+outcropping
+outcroppings
+outcrops
+outcry
+outdated
+outdid
+outdistance
+outdistanced
+outdistances
+outdistancing
+outdo
+outdoes
+outdoing
+outdone
+outdoor
+outdoors
+outed
+outer
+outermost
+outfield
+outfielder
+outfielders
+outfields
+outfit
+outfits
+outfitted
+outfitting
+outgoing
+outgrew
+outgrow
+outgrowing
+outgrown
+outgrows
+outgrowth
+outgrowths
+outhouse
+outhouses
+outing
+outings
+outlaid
+outlandish
+outlast
+outlasted
+outlasting
+outlasts
+outlaw
+outlawed
+outlawing
+outlaws
+outlay
+outlaying
+outlays
+outlet
+outlets
+outline
+outlined
+outlines
+outlining
+outlive
+outlived
+outlives
+outliving
+outlook
+outlooks
+outlying
+outmaneuver
+outmaneuvered
+outmaneuvering
+outmaneuvers
+outmoded
+outnumber
+outnumbered
+outnumbering
+outnumbers
+outpatient
+outpatients
+outperform
+outperformed
+outperforming
+outperforms
+outplacement
+outpost
+outposts
+outpouring
+outpourings
+output
+outputs
+outputted
+outputting
+outrage
+outraged
+outrageous
+outrageously
+outrages
+outraging
+outran
+outreach
+outreached
+outreaches
+outreaching
+outright
+outrun
+outrunning
+outruns
+outs
+outset
+outsets
+outshine
+outshines
+outshining
+outshone
+outside
+outsider
+outsiders
+outsides
+outskirt
+outskirts
+outsmart
+outsmarted
+outsmarting
+outsmarts
+outsource
+outsourced
+outsources
+outsourcing
+outspoken
+outspokenness
+outstanding
+outstandingly
+outstation
+outstations
+outstretch
+outstretched
+outstretches
+outstretching
+outstrip
+outstripped
+outstripping
+outstrips
+outward
+outwardly
+outwards
+outweigh
+outweighed
+outweighing
+outweighs
+outwit
+outwits
+outwitted
+outwitting
+ova
+oval
+ovals
+ovarian
+ovaries
+ovary
+ovation
+ovations
+oven
+ovens
+over
+overall
+overalls
+overate
+overbear
+overbearing
+overbears
+overblown
+overboard
+overbore
+overborne
+overburden
+overburdened
+overburdening
+overburdens
+overcame
+overcast
+overcasting
+overcasts
+overcharge
+overcharged
+overcharges
+overcharging
+overcoat
+overcoats
+overcome
+overcomes
+overcoming
+overcompensate
+overcompensated
+overcompensates
+overcompensating
+overcompensation
+overcrowd
+overcrowded
+overcrowding
+overcrowds
+overdid
+overdo
+overdoes
+overdoing
+overdone
+overdose
+overdosed
+overdoses
+overdosing
+overdraft
+overdraw
+overdrawing
+overdrawn
+overdraws
+overdrew
+overdue
+overeat
+overeaten
+overeating
+overeats
+overestimate
+overestimated
+overestimates
+overestimating
+overextend
+overextended
+overextending
+overextends
+overflow
+overflowed
+overflowing
+overflows
+overgrew
+overgrow
+overgrowing
+overgrown
+overgrows
+overhand
+overhands
+overhang
+overhanging
+overhangs
+overhaul
+overhauled
+overhauling
+overhauls
+overhead
+overheads
+overhear
+overheard
+overhearing
+overhears
+overheat
+overheated
+overheating
+overheats
+overhung
+overjoy
+overjoyed
+overjoying
+overjoys
+overkill
+overlaid
+overlain
+overland
+overlap
+overlapped
+overlapping
+overlaps
+overlay
+overlaying
+overlays
+overlie
+overlies
+overload
+overloaded
+overloading
+overloads
+overlong
+overlook
+overlooked
+overlooking
+overlooks
+overly
+overlying
+overnight
+overnights
+overpass
+overpasses
+overpopulate
+overpopulated
+overpopulates
+overpopulating
+overpopulation
+overpower
+overpowered
+overpowering
+overpowers
+overprice
+overpriced
+overprices
+overpricing
+overprint
+overprinted
+overprinting
+overprints
+overran
+overrate
+overrated
+overrates
+overrating
+overreact
+overreacted
+overreacting
+overreacts
+overridden
+override
+overrides
+overriding
+overrode
+overrule
+overruled
+overrules
+overruling
+overrun
+overrunning
+overruns
+overs
+oversampling
+oversaw
+overseas
+oversee
+overseeing
+overseen
+overseer
+overseers
+oversees
+overshadow
+overshadowed
+overshadowing
+overshadows
+overshoot
+overshooting
+overshoots
+overshot
+oversight
+oversights
+oversimplification
+oversimplifications
+oversimplified
+oversimplifies
+oversimplify
+oversimplifying
+oversize
+oversleep
+oversleeping
+oversleeps
+overslept
+overstate
+overstated
+overstates
+overstating
+overstep
+overstepped
+overstepping
+oversteps
+overt
+overtake
+overtaken
+overtakes
+overtaking
+overthrew
+overthrow
+overthrowing
+overthrown
+overthrows
+overtime
+overtimes
+overtly
+overtone
+overtones
+overtook
+overture
+overtures
+overturn
+overturned
+overturning
+overturns
+overuse
+overused
+overuses
+overusing
+overview
+overviews
+overweight
+overwhelm
+overwhelmed
+overwhelming
+overwhelmingly
+overwhelms
+overwork
+overworked
+overworking
+overworks
+overwrite
+overwrites
+overwriting
+overwritten
+overwrought
+ovum
+ow
+owe
+owed
+owes
+owing
+owl
+owls
+own
+owned
+owner
+owners
+ownership
+owning
+owns
+ox
+oxen
+oxidation
+oxide
+oxides
+oxidize
+oxidized
+oxidizes
+oxidizing
+oxygen
+oyster
+oysters
+ozone
+pa
+pace
+paced
+pacemaker
+pacemakers
+paces
+pacesetter
+pacesetters
+pacific
+pacified
+pacifier
+pacifiers
+pacifies
+pacifism
+pacifist
+pacifists
+pacify
+pacifying
+pacing
+pack
+package
+packaged
+packages
+packaging
+packed
+packer
+packers
+packet
+packets
+packing
+packs
+pact
+pacts
+pad
+padded
+paddies
+padding
+paddle
+paddled
+paddles
+paddling
+paddock
+paddocked
+paddocking
+paddocks
+paddy
+padlock
+padlocked
+padlocking
+padlocks
+padre
+padres
+pads
+pagan
+pagans
+page
+pageant
+pageantry
+pageants
+paged
+pager
+pagers
+pages
+pagination
+paging
+pagoda
+pagodas
+paid
+pail
+pails
+pain
+pained
+painful
+painfuller
+painfullest
+painfully
+paining
+painkiller
+painkillers
+painless
+painlessly
+pains
+painstaking
+painstakingly
+paint
+paintbrush
+paintbrushes
+painted
+painter
+painters
+painting
+paintings
+paints
+pair
+paired
+pairing
+pairs
+pajamas
+pal
+palace
+palaces
+palatable
+palate
+palates
+palatial
+pale
+paled
+paleontologist
+paleontologists
+paleontology
+paler
+pales
+palest
+palette
+palettes
+paling
+pall
+pallbearer
+pallbearers
+palled
+pallid
+palling
+pallor
+palls
+palm
+palmed
+palming
+palms
+palomino
+palominos
+palpable
+palpably
+pals
+paltrier
+paltriest
+paltry
+pamper
+pampered
+pampering
+pampers
+pamphlet
+pamphlets
+pan
+panacea
+panaceas
+panache
+pancake
+pancaked
+pancakes
+pancaking
+pancreas
+pancreases
+pancreatic
+panda
+pandas
+pandemonium
+pander
+pandered
+pandering
+panders
+pane
+panel
+paneled
+paneling
+panelist
+panelists
+panels
+panes
+pang
+pangs
+panhandle
+panhandled
+panhandler
+panhandlers
+panhandles
+panhandling
+panic
+panicked
+panicking
+panicky
+panics
+panned
+panning
+panorama
+panoramas
+panoramic
+pans
+pansies
+pansy
+pant
+panted
+pantheism
+panther
+panthers
+pantie
+panties
+panting
+pantomime
+pantomimed
+pantomimes
+pantomiming
+pantries
+pantry
+pants
+pantyhose
+pap
+papa
+papacies
+papacy
+papal
+papas
+papaya
+papayas
+paper
+paperback
+paperbacks
+paperboy
+paperboys
+papered
+papergirl
+papergirls
+papering
+papers
+paperweight
+paperweights
+paperwork
+paprika
+papyri
+papyrus
+par
+parable
+parables
+parachute
+parachuted
+parachutes
+parachuting
+parade
+paraded
+parades
+paradigm
+paradigms
+parading
+paradise
+paradises
+paradox
+paradoxes
+paradoxical
+paradoxically
+paraffin
+paragon
+paragons
+paragraph
+paragraphed
+paragraphing
+paragraphs
+parakeet
+parakeets
+paralegal
+paralegals
+parallel
+paralleled
+paralleling
+parallels
+paralyses
+paralysis
+paralytic
+paralytics
+paralyze
+paralyzed
+paralyzes
+paralyzing
+paramedic
+paramedics
+parameter
+parameters
+paramilitaries
+paramilitary
+paramount
+paranoia
+paranoid
+paranoids
+paraphernalia
+paraphrase
+paraphrased
+paraphrases
+paraphrasing
+paraplegic
+paraplegics
+parasite
+parasites
+parasitic
+parasol
+parasols
+paratrooper
+paratroopers
+parcel
+parceled
+parceling
+parcels
+parch
+parched
+parches
+parching
+parchment
+parchments
+pardon
+pardonable
+pardoned
+pardoning
+pardons
+pare
+pared
+parent
+parentage
+parental
+parented
+parentheses
+parenthesis
+parenthetical
+parenthood
+parenting
+parents
+pares
+paring
+parish
+parishes
+parishioner
+parishioners
+parity
+park
+parka
+parkas
+parked
+parking
+parks
+parkway
+parkways
+parliament
+parliamentary
+parliaments
+parlor
+parlors
+parochial
+parodied
+parodies
+parody
+parodying
+parole
+paroled
+paroles
+paroling
+parquet
+parqueted
+parqueting
+parquets
+parred
+parring
+parrot
+parroted
+parroting
+parrots
+pars
+parse
+parsec
+parsecs
+parsed
+parser
+parses
+parsing
+parsley
+parsnip
+parsnips
+parson
+parsonage
+parsonages
+parsons
+part
+partake
+partaken
+partakes
+partaking
+parted
+partial
+partiality
+partially
+partials
+participant
+participants
+participate
+participated
+participates
+participating
+participation
+participle
+participles
+particle
+particles
+particular
+particularly
+particulars
+partied
+parties
+parting
+partings
+partisan
+partisans
+partition
+partitioned
+partitioning
+partitions
+partly
+partner
+partnered
+partnering
+partners
+partnership
+partnerships
+partook
+partridge
+partridges
+parts
+partway
+party
+partying
+pas
+pass
+passable
+passage
+passages
+passageway
+passageways
+passbook
+passbooks
+passe
+passed
+passenger
+passengers
+passer
+passerby
+passersby
+passes
+passing
+passion
+passionate
+passionately
+passions
+passive
+passively
+passives
+passport
+passports
+password
+passwords
+past
+pasta
+pastas
+paste
+pasted
+pastel
+pastels
+pastes
+pasteurization
+pasteurize
+pasteurized
+pasteurizes
+pasteurizing
+pastiche
+pastier
+pasties
+pastiest
+pastime
+pastimes
+pasting
+pastor
+pastoral
+pastorals
+pastors
+pastries
+pastry
+pasts
+pasture
+pastured
+pastures
+pasturing
+pasty
+pat
+patch
+patched
+patches
+patchier
+patchiest
+patching
+patchwork
+patchworks
+patchy
+pate
+patent
+patented
+patenting
+patently
+patents
+paternal
+paternalism
+paternalistic
+paternity
+pates
+path
+pathetic
+pathetically
+pathological
+pathologically
+pathologist
+pathologists
+pathology
+pathos
+paths
+pathway
+pathways
+patience
+patient
+patienter
+patientest
+patiently
+patients
+patio
+patios
+patriarch
+patriarchal
+patriarchies
+patriarchs
+patriarchy
+patricide
+patricides
+patrimonies
+patrimony
+patriot
+patriotic
+patriotically
+patriotism
+patriots
+patrol
+patrolled
+patrolling
+patrolman
+patrolmen
+patrols
+patrolwoman
+patrolwomen
+patron
+patronage
+patronages
+patronize
+patronized
+patronizes
+patronizing
+patronizingly
+patrons
+pats
+patted
+patter
+pattered
+pattering
+pattern
+patterned
+patterning
+patterns
+patters
+patties
+patting
+patty
+paucity
+paunch
+paunches
+paunchier
+paunchiest
+paunchy
+pauper
+paupers
+pause
+paused
+pauses
+pausing
+pave
+paved
+pavement
+pavements
+paves
+pavilion
+pavilions
+paving
+paw
+pawed
+pawing
+pawn
+pawnbroker
+pawnbrokers
+pawned
+pawning
+pawns
+paws
+pay
+payable
+paycheck
+paychecks
+payday
+paydays
+payed
+payee
+payees
+payer
+payers
+paying
+payload
+payloads
+payment
+payments
+payoff
+payoffs
+payroll
+payrolls
+pays
+pea
+peace
+peaceable
+peaceably
+peaceful
+peacefully
+peacefulness
+peacekeeping
+peacemaker
+peacemakers
+peaces
+peacetime
+peach
+peaches
+peacock
+peacocks
+peak
+peaked
+peaking
+peaks
+peal
+pealed
+pealing
+peals
+peanut
+peanuts
+pear
+pearl
+pearled
+pearling
+pearls
+pears
+peas
+peasant
+peasants
+peat
+pebble
+pebbled
+pebbles
+pebbling
+pecan
+pecans
+peck
+pecked
+pecking
+pecks
+peculiar
+peculiarities
+peculiarity
+peculiarly
+pedagogical
+pedagogy
+pedal
+pedaled
+pedaling
+pedals
+pedant
+pedantic
+pedantically
+pedantry
+pedants
+peddle
+peddled
+peddler
+peddlers
+peddles
+peddling
+pedestal
+pedestals
+pedestrian
+pedestrians
+pediatrician
+pediatricians
+pediatrics
+pedigree
+pedigreed
+pedigrees
+pee
+peed
+peeing
+peek
+peekaboo
+peeked
+peeking
+peeks
+peel
+peeled
+peeling
+peels
+peep
+peeped
+peephole
+peepholes
+peeping
+peeps
+peer
+peered
+peering
+peerless
+peers
+pees
+peeve
+peeved
+peeves
+peeving
+peevish
+peg
+pegged
+pegging
+pegs
+pejorative
+pejoratives
+pelican
+pelicans
+pellet
+pelleted
+pelleting
+pellets
+pelt
+pelted
+pelting
+pelts
+pelvic
+pelvis
+pelvises
+pen
+penal
+penalize
+penalized
+penalizes
+penalizing
+penalties
+penalty
+penance
+penances
+pence
+penchant
+penchants
+pencil
+penciled
+penciling
+pencils
+pendant
+pendants
+pended
+pending
+pends
+pendulum
+pendulums
+penetrate
+penetrated
+penetrates
+penetrating
+penetration
+penetrations
+penguin
+penguins
+penicillin
+peninsula
+peninsulas
+penis
+penises
+penitence
+penitent
+penitentiaries
+penitentiary
+penitents
+penknife
+penknives
+penmanship
+pennant
+pennants
+penned
+pennies
+penniless
+penning
+penny
+pens
+pension
+pensioned
+pensioner
+pensioners
+pensioning
+pensions
+pensive
+pensively
+pentagon
+pentagonal
+pentagons
+penthouse
+penthouses
+penultimate
+peon
+peonies
+peons
+peony
+people
+peopled
+peoples
+peopling
+pep
+pepped
+pepper
+peppered
+peppering
+peppermint
+peppermints
+pepperoni
+pepperonis
+peppers
+peppier
+peppiest
+pepping
+peppy
+peps
+per
+perceive
+perceived
+perceives
+perceiving
+percent
+percentage
+percentages
+percentile
+percentiles
+percents
+perceptible
+perceptibly
+perception
+perceptions
+perceptive
+perceptively
+perch
+perchance
+perched
+perches
+perching
+percolate
+percolated
+percolates
+percolating
+percolation
+percolator
+percolators
+percussion
+peremptory
+perennial
+perennials
+perfect
+perfected
+perfecter
+perfectest
+perfecting
+perfection
+perfectionist
+perfectionists
+perfections
+perfectly
+perfects
+perforate
+perforated
+perforates
+perforating
+perforation
+perforations
+perform
+performance
+performances
+performed
+performer
+performers
+performing
+performs
+perfume
+perfumed
+perfumes
+perfuming
+perfunctorily
+perfunctory
+perhaps
+peril
+periled
+periling
+perilous
+perilously
+perils
+perimeter
+perimeters
+period
+periodic
+periodical
+periodically
+periodicals
+periods
+peripheral
+peripherals
+peripheries
+periphery
+periscope
+periscopes
+perish
+perishable
+perishables
+perished
+perishes
+perishing
+perjure
+perjured
+perjures
+perjuries
+perjuring
+perjury
+perk
+perked
+perkier
+perkiest
+perking
+perks
+perky
+perm
+permanence
+permanent
+permanently
+permanents
+permeate
+permeated
+permeates
+permeating
+permed
+perming
+permissible
+permission
+permissions
+permissive
+permit
+permits
+permitted
+permitting
+perms
+permutation
+permutations
+pernicious
+peroxide
+peroxided
+peroxides
+peroxiding
+perpendicular
+perpendiculars
+perpetrate
+perpetrated
+perpetrates
+perpetrating
+perpetrator
+perpetrators
+perpetual
+perpetually
+perpetuals
+perpetuate
+perpetuated
+perpetuates
+perpetuating
+perplex
+perplexed
+perplexes
+perplexing
+perplexities
+perplexity
+perquisite
+perquisites
+persecute
+persecuted
+persecutes
+persecuting
+persecution
+persecutions
+persecutor
+persecutors
+perseverance
+persevere
+persevered
+perseveres
+persevering
+persist
+persisted
+persistence
+persistent
+persistently
+persisting
+persists
+person
+persona
+personable
+personae
+personal
+personalities
+personality
+personalize
+personalized
+personalizes
+personalizing
+personally
+personals
+personification
+personifications
+personified
+personifies
+personify
+personifying
+personnel
+persons
+perspective
+perspectives
+perspiration
+perspire
+perspired
+perspires
+perspiring
+persuade
+persuaded
+persuades
+persuading
+persuasion
+persuasions
+persuasive
+persuasively
+persuasiveness
+pert
+pertain
+pertained
+pertaining
+pertains
+perter
+pertest
+pertinent
+perturb
+perturbed
+perturbing
+perturbs
+perusal
+perusals
+peruse
+perused
+peruses
+perusing
+pervade
+pervaded
+pervades
+pervading
+pervasive
+perverse
+perversely
+perversion
+perversions
+perversity
+pervert
+perverted
+perverting
+perverts
+peskier
+peskiest
+pesky
+pessimism
+pessimist
+pessimistic
+pessimistically
+pessimists
+pest
+pester
+pestered
+pestering
+pesters
+pesticide
+pesticides
+pestilence
+pestilences
+pests
+pet
+petal
+petals
+peter
+petered
+petering
+peters
+petite
+petites
+petition
+petitioned
+petitioning
+petitions
+petrified
+petrifies
+petrify
+petrifying
+petrol
+petroleum
+pets
+petted
+petticoat
+petticoats
+pettier
+pettiest
+pettiness
+petting
+petty
+petulant
+petunia
+petunias
+pew
+pews
+pewter
+pewters
+phalli
+phallic
+phallus
+phantom
+phantoms
+pharmaceutical
+pharmaceuticals
+pharmacies
+pharmacist
+pharmacists
+pharmacologist
+pharmacologists
+pharmacology
+pharmacy
+phase
+phased
+phases
+phasing
+pheasant
+pheasants
+phenomena
+phenomenal
+phenomenally
+phenomenon
+phenomenons
+philanthropic
+philanthropies
+philanthropist
+philanthropists
+philanthropy
+philistine
+philistines
+philosopher
+philosophers
+philosophical
+philosophically
+philosophies
+philosophize
+philosophized
+philosophizes
+philosophizing
+philosophy
+phlegm
+phlegmatic
+phobia
+phobias
+phobic
+phobics
+phoenix
+phoenixes
+phone
+phoned
+phones
+phonetic
+phonetically
+phonetics
+phonics
+phonied
+phonier
+phonies
+phoniest
+phoning
+phonograph
+phonographs
+phony
+phonying
+phooey
+phosphate
+phosphates
+phosphor
+phosphorescence
+phosphorescent
+phosphorus
+photo
+photocopied
+photocopier
+photocopiers
+photocopies
+photocopy
+photocopying
+photoed
+photogenic
+photograph
+photographed
+photographer
+photographers
+photographic
+photographing
+photographs
+photography
+photoing
+photon
+photons
+photos
+photosynthesis
+phototypesetter
+phrase
+phrased
+phraseology
+phrases
+phrasing
+phrasings
+physic
+physical
+physically
+physicals
+physician
+physicians
+physicist
+physicists
+physics
+physiological
+physiology
+physiotherapy
+physique
+physiques
+pi
+pianist
+pianists
+piano
+pianos
+piccolo
+piccolos
+pick
+pickax
+pickaxed
+pickaxes
+pickaxing
+picked
+picker
+pickers
+picket
+picketed
+picketing
+pickets
+pickier
+pickiest
+picking
+pickle
+pickled
+pickles
+pickling
+pickpocket
+pickpockets
+picks
+pickup
+pickups
+picky
+picnic
+picnicked
+picnicking
+picnics
+pictorial
+pictorials
+picture
+pictured
+pictures
+picturesque
+picturing
+piddle
+piddled
+piddles
+piddling
+pidgin
+pidgins
+pie
+piece
+pieced
+piecemeal
+pieces
+piecework
+piecing
+pier
+pierce
+pierced
+pierces
+piercing
+piercings
+piers
+pies
+piety
+pig
+pigeon
+pigeonhole
+pigeonholed
+pigeonholes
+pigeonholing
+pigeons
+pigged
+piggier
+piggies
+piggiest
+pigging
+piggish
+piggy
+piggyback
+piggybacked
+piggybacking
+piggybacks
+pigheaded
+piglet
+piglets
+pigment
+pigmentation
+pigments
+pigpen
+pigpens
+pigs
+pigsties
+pigsty
+pigtail
+pigtails
+pike
+piked
+pikes
+piking
+pile
+piled
+piles
+pileup
+pileups
+pilfer
+pilfered
+pilfering
+pilfers
+pilgrim
+pilgrimage
+pilgrimages
+pilgrims
+piling
+pilings
+pill
+pillage
+pillaged
+pillages
+pillaging
+pillar
+pillars
+pilled
+pilling
+pillow
+pillowcase
+pillowcases
+pillowed
+pillowing
+pillows
+pills
+pilot
+piloted
+piloting
+pilots
+pimp
+pimped
+pimping
+pimple
+pimples
+pimplier
+pimpliest
+pimply
+pimps
+pin
+pincer
+pincers
+pinch
+pinched
+pinches
+pinching
+pincushion
+pincushions
+pine
+pineapple
+pineapples
+pined
+pines
+ping
+pinged
+pinging
+pings
+pining
+pinion
+pinioned
+pinioning
+pinions
+pink
+pinked
+pinker
+pinkest
+pinkie
+pinkies
+pinking
+pinks
+pinnacle
+pinnacles
+pinned
+pinning
+pinpoint
+pinpointed
+pinpointing
+pinpoints
+pinprick
+pinpricks
+pins
+pinstripe
+pinstripes
+pint
+pints
+pinup
+pinups
+pioneer
+pioneered
+pioneering
+pioneers
+pious
+piously
+pipe
+piped
+pipeline
+pipelines
+pipes
+piping
+pipsqueak
+pipsqueaks
+piquancy
+piquant
+pique
+piqued
+piques
+piquing
+piracy
+piranha
+piranhas
+pirate
+pirated
+pirates
+pirating
+pirouette
+pirouetted
+pirouettes
+pirouetting
+pis
+piss
+pissed
+pisses
+pissing
+pistachio
+pistachios
+pistol
+pistols
+piston
+pistons
+pit
+pitch
+pitched
+pitcher
+pitchers
+pitches
+pitchfork
+pitchforked
+pitchforking
+pitchforks
+pitching
+piteous
+piteously
+pitfall
+pitfalls
+pithier
+pithiest
+pithy
+pitied
+pities
+pitiful
+pitifully
+pitiless
+pits
+pittance
+pittances
+pitted
+pitting
+pity
+pitying
+pivot
+pivotal
+pivoted
+pivoting
+pivots
+pixel
+pixels
+pixie
+pixies
+pizza
+pizzas
+pizzazz
+placard
+placarded
+placarding
+placards
+placate
+placated
+placates
+placating
+place
+placebo
+placebos
+placed
+placement
+placenta
+placentas
+places
+placid
+placidly
+placing
+plagiarism
+plagiarisms
+plagiarist
+plagiarists
+plagiarize
+plagiarized
+plagiarizes
+plagiarizing
+plague
+plagued
+plagues
+plaguing
+plaice
+plaid
+plaids
+plain
+plainclothes
+plainer
+plainest
+plainly
+plains
+plaintiff
+plaintiffs
+plaintive
+plan
+planar
+plane
+planed
+planes
+planet
+planetarium
+planetariums
+planetary
+planets
+planing
+plank
+planked
+planking
+planks
+plankton
+planned
+planner
+planners
+planning
+plannings
+plans
+plant
+plantain
+plantains
+plantation
+plantations
+planted
+planter
+planters
+planting
+plantings
+plants
+plaque
+plaques
+plasma
+plaster
+plastered
+plastering
+plasters
+plastic
+plastics
+plate
+plateau
+plateaued
+plateauing
+plateaus
+plated
+plateful
+platefuls
+plates
+platform
+platformed
+platforming
+platforms
+plating
+platinum
+platitude
+platitudes
+platonic
+platoon
+platooned
+platooning
+platoons
+platter
+platters
+plausibility
+plausible
+plausibly
+play
+playable
+playback
+playboy
+playboys
+played
+player
+players
+playful
+playfully
+playfulness
+playground
+playgrounds
+playhouse
+playhouses
+playing
+playmate
+playmates
+playoff
+playoffs
+playpen
+playpens
+playroom
+playrooms
+plays
+plaything
+playthings
+playwright
+playwrights
+plaza
+plazas
+plea
+plead
+pleaded
+pleading
+pleads
+pleas
+pleasant
+pleasanter
+pleasantest
+pleasantly
+pleasantries
+pleasantry
+please
+pleased
+pleases
+pleasing
+pleasings
+pleasurable
+pleasure
+pleasured
+pleasures
+pleasuring
+pleat
+pleated
+pleating
+pleats
+pledge
+pledged
+pledges
+pledging
+plenaries
+plenary
+plentiful
+plentifully
+plenty
+plethora
+pliable
+pliant
+plied
+pliers
+plies
+plight
+plighted
+plighting
+plights
+plod
+plodded
+plodding
+ploddings
+plods
+plop
+plopped
+plopping
+plops
+plot
+plots
+plotted
+plotter
+plotters
+plotting
+plow
+plowed
+plowing
+plows
+ploy
+ploys
+pluck
+plucked
+pluckier
+pluckiest
+plucking
+plucks
+plucky
+plug
+plugged
+plugging
+plugs
+plum
+plumage
+plumb
+plumbed
+plumber
+plumbers
+plumbing
+plumbs
+plume
+plumed
+plumes
+pluming
+plummet
+plummeted
+plummeting
+plummets
+plump
+plumped
+plumper
+plumpest
+plumping
+plumps
+plums
+plunder
+plundered
+plundering
+plunders
+plunge
+plunged
+plunger
+plungers
+plunges
+plunging
+plunk
+plunked
+plunking
+plunks
+plural
+pluralities
+plurality
+plurals
+plus
+pluses
+plush
+plusher
+plushest
+plutocracies
+plutocracy
+plutonium
+ply
+plying
+plywood
+pneumatic
+pneumonia
+poach
+poached
+poacher
+poachers
+poaches
+poaching
+pocket
+pocketbook
+pocketbooks
+pocketed
+pocketful
+pocketfuls
+pocketing
+pocketknife
+pocketknives
+pockets
+pockmark
+pockmarked
+pockmarking
+pockmarks
+pod
+podded
+podding
+podiatrist
+podiatrists
+podiatry
+podium
+podiums
+pods
+poem
+poems
+poet
+poetic
+poetical
+poetically
+poetry
+poets
+pogrom
+pogroms
+poignancy
+poignant
+poignantly
+poinsettia
+poinsettias
+point
+pointed
+pointedly
+pointer
+pointers
+pointier
+pointiest
+pointing
+pointless
+pointlessly
+pointlessness
+points
+pointy
+poise
+poised
+poises
+poising
+poison
+poisoned
+poisoning
+poisonings
+poisonous
+poisons
+poke
+poked
+poker
+pokers
+pokes
+pokey
+pokier
+pokiest
+poking
+poky
+polar
+polarities
+polarity
+polarization
+polarize
+polarized
+polarizes
+polarizing
+pole
+poled
+polemic
+polemical
+polemics
+poles
+police
+policed
+policeman
+policemen
+polices
+policewoman
+policewomen
+policies
+policing
+policy
+poling
+polio
+polios
+polish
+polished
+polishes
+polishing
+polite
+politely
+politeness
+politer
+politest
+political
+politically
+politician
+politicians
+politicize
+politicized
+politicizes
+politicizing
+politics
+polka
+polkaed
+polkaing
+polkas
+poll
+polled
+pollen
+pollinate
+pollinated
+pollinates
+pollinating
+pollination
+polling
+polls
+pollster
+pollsters
+pollutant
+pollutants
+pollute
+polluted
+pollutes
+polluting
+pollution
+polo
+polyester
+polyesters
+polygamist
+polygamists
+polygamous
+polygamy
+polygon
+polygons
+polygraph
+polygraphed
+polygraphing
+polygraphs
+polymer
+polymers
+polynomial
+polynomials
+polyp
+polyps
+polytechnic
+polytechnics
+pomegranate
+pomegranates
+pomp
+pompom
+pompoms
+pomposity
+pompous
+poncho
+ponchos
+pond
+ponder
+pondered
+pondering
+ponderous
+ponders
+ponds
+ponies
+pontiff
+pontiffs
+pontifical
+pontoon
+pontoons
+pony
+ponytail
+ponytails
+pooch
+pooched
+pooches
+pooching
+poodle
+poodles
+pool
+pooled
+pooling
+pools
+poop
+pooped
+pooping
+poops
+poor
+poorer
+poorest
+poorly
+pop
+popcorn
+pope
+poplar
+poplars
+popped
+poppies
+popping
+poppy
+pops
+populace
+populaces
+popular
+popularity
+popularize
+popularized
+popularizes
+popularizing
+popularly
+populate
+populated
+populates
+populating
+population
+populations
+populous
+porcelain
+porch
+porches
+porcupine
+porcupines
+pore
+pored
+pores
+poring
+pork
+porn
+pornographer
+pornographers
+pornographic
+pornography
+porous
+porpoise
+porpoised
+porpoises
+porpoising
+porridge
+port
+portability
+portable
+portables
+portal
+portals
+ported
+portend
+portended
+portending
+portends
+portent
+portents
+porter
+porters
+portfolio
+portfolios
+porthole
+portholes
+portico
+porticoes
+porting
+portion
+portioned
+portioning
+portions
+portlier
+portliest
+portly
+portrait
+portraits
+portray
+portrayal
+portrayals
+portrayed
+portraying
+portrays
+ports
+pose
+posed
+poses
+posh
+posher
+poshest
+posies
+posing
+position
+positional
+positioned
+positioning
+positions
+positive
+positively
+positives
+positivism
+posse
+posses
+possess
+possessed
+possesses
+possessing
+possession
+possessions
+possessive
+possessives
+possessor
+possessors
+possibilities
+possibility
+possible
+possibles
+possibly
+possum
+possums
+post
+postage
+postal
+postbox
+postcard
+postcards
+postcode
+postdate
+postdated
+postdates
+postdating
+postdoc
+postdoctoral
+posted
+poster
+posterior
+posteriors
+posterity
+posters
+postgraduate
+postgraduates
+posthumous
+posthumously
+posting
+postman
+postmark
+postmarked
+postmarking
+postmarks
+postmaster
+postmasters
+postmen
+postmortem
+postmortems
+postpone
+postponed
+postponement
+postponements
+postpones
+postponing
+posts
+postscript
+postscripts
+postulate
+postulated
+postulates
+postulating
+posture
+postured
+postures
+posturing
+postwar
+posy
+pot
+potassium
+potato
+potatoes
+potbellied
+potbellies
+potbelly
+potency
+potent
+potential
+potentially
+pothole
+potholes
+potion
+potions
+potluck
+potlucks
+potpourri
+potpourris
+pots
+potted
+potter
+pottered
+potteries
+pottering
+potters
+pottery
+pottier
+potties
+pottiest
+potting
+potty
+pouch
+pouched
+pouches
+pouching
+poultry
+pounce
+pounced
+pounces
+pouncing
+pound
+pounded
+pounding
+pounds
+pour
+poured
+pouring
+pours
+pout
+pouted
+pouting
+pouts
+poverty
+powder
+powdered
+powdering
+powders
+powdery
+power
+powerboat
+powerboats
+powered
+powerful
+powerfully
+powerhouse
+powerhouses
+powering
+powerless
+powerlessness
+powers
+powwow
+powwowed
+powwowing
+powwows
+practicable
+practical
+practicalities
+practicality
+practically
+practicals
+practice
+practiced
+practices
+practicing
+practitioner
+practitioners
+pragmatic
+pragmatics
+pragmatism
+pragmatist
+pragmatists
+prairie
+prairies
+praise
+praised
+praises
+praiseworthy
+praising
+pram
+prance
+pranced
+prances
+prancing
+prank
+pranks
+prankster
+pranksters
+prattle
+prattled
+prattles
+prattling
+prawn
+prawned
+prawning
+prawns
+pray
+prayed
+prayer
+prayers
+praying
+prays
+preach
+preached
+preacher
+preachers
+preaches
+preaching
+preamble
+preambled
+preambles
+preambling
+precarious
+precariously
+precaution
+precautionary
+precautions
+precede
+preceded
+precedence
+precedent
+precedents
+precedes
+preceding
+precept
+precepts
+precinct
+precincts
+precious
+precipice
+precipices
+precipitate
+precipitated
+precipitates
+precipitating
+precipitation
+precipitations
+precipitous
+precis
+precise
+precisely
+preciser
+precisest
+precision
+preclude
+precluded
+precludes
+precluding
+precocious
+preconceive
+preconceived
+preconceives
+preconceiving
+preconception
+preconceptions
+precondition
+preconditioned
+preconditioning
+preconditions
+precursor
+precursors
+predate
+predated
+predates
+predating
+predator
+predators
+predatory
+predecessor
+predecessors
+predefined
+predestination
+predestine
+predestined
+predestines
+predestining
+predetermine
+predetermined
+predetermines
+predetermining
+predicament
+predicaments
+predicate
+predicated
+predicates
+predicating
+predict
+predictable
+predictably
+predicted
+predicting
+prediction
+predictions
+predictor
+predicts
+predilection
+predilections
+predispose
+predisposed
+predisposes
+predisposing
+predisposition
+predispositions
+predominance
+predominant
+predominantly
+predominate
+predominated
+predominates
+predominating
+preeminence
+preeminent
+preempt
+preempted
+preempting
+preemptive
+preempts
+preen
+preened
+preening
+preens
+preexist
+preexisted
+preexisting
+preexists
+prefab
+prefabbed
+prefabbing
+prefabricate
+prefabricated
+prefabricates
+prefabricating
+prefabs
+preface
+prefaced
+prefaces
+prefacing
+prefect
+prefer
+preferable
+preferably
+preference
+preferences
+preferential
+preferred
+preferring
+prefers
+prefix
+prefixed
+prefixes
+prefixing
+pregnancies
+pregnancy
+pregnant
+prehistoric
+prehistory
+prejudge
+prejudged
+prejudges
+prejudging
+prejudice
+prejudiced
+prejudices
+prejudicial
+prejudicing
+preliminaries
+preliminary
+prelude
+preludes
+premarital
+premature
+prematurely
+premeditate
+premeditated
+premeditates
+premeditating
+premeditation
+premier
+premiere
+premiered
+premieres
+premiering
+premiers
+premise
+premised
+premises
+premising
+premium
+premiums
+premonition
+premonitions
+prenatal
+preoccupation
+preoccupations
+preoccupied
+preoccupies
+preoccupy
+preoccupying
+prep
+prepaid
+preparation
+preparations
+preparatory
+prepare
+prepared
+preparedness
+prepares
+preparing
+prepay
+prepaying
+prepays
+preponderance
+preponderances
+preposition
+prepositional
+prepositions
+preposterous
+prepped
+preppier
+preppies
+preppiest
+prepping
+preppy
+preps
+preregister
+preregistered
+preregistering
+preregisters
+preregistration
+prerequisite
+prerequisites
+prerogative
+prerogatives
+presage
+presaged
+presages
+presaging
+preschool
+preschooler
+preschoolers
+preschools
+prescribe
+prescribed
+prescribes
+prescribing
+prescription
+prescriptions
+prescriptive
+presence
+presences
+present
+presentable
+presentation
+presentations
+presented
+presenter
+presenting
+presently
+presents
+preservation
+preservative
+preservatives
+preserve
+preserved
+preserves
+preserving
+preside
+presided
+presidencies
+presidency
+president
+presidential
+presidents
+presides
+presiding
+press
+pressed
+presses
+pressing
+pressings
+pressure
+pressured
+pressures
+pressuring
+pressurize
+pressurized
+pressurizes
+pressurizing
+prestige
+prestigious
+presto
+presumably
+presume
+presumed
+presumes
+presuming
+presumption
+presumptions
+presumptuous
+presuppose
+presupposed
+presupposes
+presupposing
+presupposition
+presuppositions
+pretend
+pretended
+pretender
+pretenders
+pretending
+pretends
+pretense
+pretenses
+pretension
+pretensions
+pretentious
+pretentiously
+pretentiousness
+pretext
+pretexts
+prettied
+prettier
+pretties
+prettiest
+prettily
+pretty
+prettying
+pretzel
+pretzels
+prevail
+prevailed
+prevailing
+prevails
+prevalence
+prevalent
+prevent
+preventable
+prevented
+preventing
+prevention
+preventive
+preventives
+prevents
+preview
+previewed
+previewer
+previewers
+previewing
+previews
+previous
+previously
+prewar
+prey
+preyed
+preying
+preys
+price
+priced
+priceless
+prices
+pricey
+pricier
+priciest
+pricing
+prick
+pricked
+pricking
+prickle
+prickled
+prickles
+pricklier
+prickliest
+prickling
+prickly
+pricks
+pride
+prided
+prides
+priding
+pried
+pries
+priest
+priestess
+priestesses
+priesthood
+priesthoods
+priests
+prim
+primacy
+primal
+primaries
+primarily
+primary
+primate
+primates
+prime
+primed
+primer
+primers
+primes
+primeval
+priming
+primitive
+primitives
+primly
+primmer
+primmest
+primordial
+primp
+primped
+primping
+primps
+primrose
+primroses
+prince
+princelier
+princeliest
+princely
+princes
+princess
+princesses
+principal
+principalities
+principality
+principally
+principals
+principle
+principled
+principles
+print
+printable
+printed
+printer
+printers
+printing
+printings
+printout
+printouts
+prints
+prior
+priorities
+prioritize
+prioritized
+prioritizes
+prioritizing
+priority
+priors
+prism
+prisms
+prison
+prisoner
+prisoners
+prisons
+prissier
+prissiest
+prissy
+pristine
+privacy
+private
+privately
+privater
+privates
+privatest
+privation
+privations
+privatization
+privatizations
+privatize
+privatized
+privatizes
+privatizing
+privier
+privies
+priviest
+privilege
+privileged
+privileges
+privileging
+privy
+prize
+prized
+prizes
+prizing
+pro
+probabilistic
+probabilities
+probability
+probable
+probables
+probably
+probation
+probe
+probed
+probes
+probing
+problem
+problematic
+problems
+procedural
+procedure
+procedures
+proceed
+proceeded
+proceeding
+proceedings
+proceeds
+process
+processed
+processes
+processing
+procession
+processional
+processionals
+processioned
+processioning
+processions
+processor
+processors
+proclaim
+proclaimed
+proclaiming
+proclaims
+proclamation
+proclamations
+procrastinate
+procrastinated
+procrastinates
+procrastinating
+procrastination
+procreate
+procreated
+procreates
+procreating
+procure
+procured
+procurement
+procures
+procuring
+prod
+prodded
+prodding
+prodigal
+prodigals
+prodigies
+prodigious
+prodigy
+prods
+produce
+produced
+producer
+producers
+produces
+producing
+product
+production
+productions
+productive
+productivity
+products
+prof
+profane
+profaned
+profanes
+profaning
+profanities
+profanity
+profess
+professed
+professes
+professing
+profession
+professional
+professionalism
+professionally
+professionals
+professions
+professor
+professors
+proffer
+proffered
+proffering
+proffers
+proficiency
+proficient
+proficiently
+proficients
+profile
+profiled
+profiles
+profiling
+profit
+profitability
+profitable
+profitably
+profited
+profiteer
+profiteered
+profiteering
+profiteers
+profiting
+profits
+profound
+profounder
+profoundest
+profoundly
+profs
+profundities
+profundity
+profuse
+profusely
+profusion
+profusions
+progeny
+prognoses
+prognosis
+program
+programmable
+programmed
+programmer
+programmers
+programming
+programs
+progress
+progressed
+progresses
+progressing
+progression
+progressions
+progressive
+progressively
+progressives
+prohibit
+prohibited
+prohibiting
+prohibition
+prohibitions
+prohibitive
+prohibitively
+prohibits
+project
+projected
+projectile
+projectiles
+projecting
+projection
+projections
+projector
+projectors
+projects
+proletarian
+proletarians
+proletariat
+proliferate
+proliferated
+proliferates
+proliferating
+proliferation
+prolific
+prologue
+prologues
+prolong
+prolonged
+prolonging
+prolongs
+prom
+promenade
+promenaded
+promenades
+promenading
+prominence
+prominent
+prominently
+promiscuity
+promiscuous
+promise
+promised
+promises
+promising
+promo
+promontories
+promontory
+promos
+promote
+promoted
+promoter
+promoters
+promotes
+promoting
+promotion
+promotional
+promotions
+prompt
+prompted
+prompter
+promptest
+prompting
+promptings
+promptly
+promptness
+prompts
+proms
+promulgate
+promulgated
+promulgates
+promulgating
+prone
+prong
+prongs
+pronoun
+pronounce
+pronounced
+pronouncement
+pronouncements
+pronounces
+pronouncing
+pronouns
+pronto
+pronunciation
+pronunciations
+proof
+proofed
+proofing
+proofread
+proofreading
+proofreads
+proofs
+prop
+propaganda
+propagandize
+propagandized
+propagandizes
+propagandizing
+propagate
+propagated
+propagates
+propagating
+propagation
+propel
+propelled
+propeller
+propellers
+propelling
+propels
+propensities
+propensity
+proper
+properer
+properest
+properly
+properties
+property
+prophecies
+prophecy
+prophesied
+prophesies
+prophesy
+prophesying
+prophet
+prophetic
+prophets
+propitious
+proponent
+proponents
+proportion
+proportional
+proportionality
+proportionally
+proportionals
+proportionate
+proportioned
+proportioning
+proportions
+proposal
+proposals
+propose
+proposed
+proposes
+proposing
+proposition
+propositional
+propositioned
+propositioning
+propositions
+propped
+propping
+proprietaries
+proprietary
+proprietor
+proprietors
+propriety
+props
+propulsion
+pros
+prosaic
+proscribe
+proscribed
+proscribes
+proscribing
+proscription
+proscriptions
+prose
+prosecute
+prosecuted
+prosecutes
+prosecuting
+prosecution
+prosecutions
+prosecutor
+prosecutors
+proselytize
+proselytized
+proselytizes
+proselytizing
+prospect
+prospected
+prospecting
+prospective
+prospector
+prospectors
+prospects
+prospectus
+prospectuses
+prosper
+prospered
+prospering
+prosperity
+prosperous
+prospers
+prostheses
+prosthesis
+prostitute
+prostituted
+prostitutes
+prostituting
+prostitution
+prostrate
+prostrated
+prostrates
+prostrating
+protagonist
+protagonists
+protect
+protected
+protecting
+protection
+protections
+protective
+protector
+protectors
+protects
+protege
+proteges
+protein
+proteins
+protest
+protestant
+protested
+protester
+protesters
+protesting
+protests
+protocol
+protocols
+proton
+protons
+prototype
+prototypes
+protract
+protracted
+protracting
+protraction
+protractor
+protractors
+protracts
+protrude
+protruded
+protrudes
+protruding
+protrusion
+protrusions
+proud
+prouder
+proudest
+proudly
+provable
+provably
+prove
+proved
+proven
+provenance
+proverb
+proverbial
+proverbs
+proves
+provide
+provided
+providence
+provident
+provider
+provides
+providing
+province
+provinces
+provincial
+provincials
+proving
+provision
+provisional
+provisionally
+provisioned
+provisioning
+provisions
+proviso
+provisos
+provocation
+provocations
+provocative
+provoke
+provoked
+provokes
+provoking
+provost
+provosts
+prow
+prowess
+prowl
+prowled
+prowler
+prowlers
+prowling
+prowls
+prows
+proxies
+proximity
+proxy
+prude
+prudence
+prudent
+prudently
+prudes
+prudish
+prune
+pruned
+prunes
+pruning
+prurience
+prurient
+pry
+prying
+psalm
+psalms
+pseudo
+pseudonym
+pseudonyms
+psych
+psyche
+psyched
+psychedelic
+psychedelics
+psyches
+psychiatric
+psychiatrist
+psychiatrists
+psychiatry
+psychic
+psychics
+psyching
+psycho
+psychoanalysis
+psychoanalyst
+psychoanalysts
+psychoanalyze
+psychoanalyzed
+psychoanalyzes
+psychoanalyzing
+psychological
+psychologically
+psychologies
+psychologist
+psychologists
+psychology
+psychopath
+psychopathic
+psychopaths
+psychos
+psychoses
+psychosis
+psychosomatic
+psychotherapies
+psychotherapist
+psychotherapists
+psychotherapy
+psychotic
+psychotics
+psychs
+pub
+puberty
+pubescence
+pubic
+public
+publication
+publications
+publicist
+publicists
+publicity
+publicize
+publicized
+publicizes
+publicizing
+publicly
+publish
+published
+publisher
+publishers
+publishes
+publishing
+pubs
+puck
+pucker
+puckered
+puckering
+puckers
+pucks
+pudding
+puddings
+puddle
+puddled
+puddles
+puddling
+pudgier
+pudgiest
+pudgy
+pueblo
+pueblos
+puerile
+puff
+puffed
+puffer
+puffier
+puffiest
+puffing
+puffs
+puffy
+pugnacious
+puke
+puked
+pukes
+puking
+pull
+pulled
+pulley
+pulleys
+pulling
+pullout
+pullouts
+pullover
+pullovers
+pulls
+pulmonary
+pulp
+pulped
+pulping
+pulpit
+pulpits
+pulps
+pulsate
+pulsated
+pulsates
+pulsating
+pulsation
+pulsations
+pulse
+pulsed
+pulses
+pulsing
+pulverization
+pulverize
+pulverized
+pulverizes
+pulverizing
+puma
+pumas
+pumice
+pumices
+pummel
+pummeled
+pummeling
+pummels
+pump
+pumped
+pumpernickel
+pumping
+pumpkin
+pumpkins
+pumps
+pun
+punch
+punched
+punches
+punching
+punchline
+punctual
+punctuality
+punctuate
+punctuated
+punctuates
+punctuating
+punctuation
+puncture
+punctured
+punctures
+puncturing
+pundit
+pundits
+pungent
+punier
+puniest
+punish
+punishable
+punished
+punishes
+punishing
+punishment
+punishments
+punitive
+punk
+punker
+punkest
+punks
+punned
+punning
+puns
+punt
+punted
+punter
+punters
+punting
+punts
+puny
+pup
+pupil
+pupils
+pupped
+puppet
+puppeteer
+puppeteers
+puppets
+puppies
+pupping
+puppy
+pups
+purchase
+purchased
+purchaser
+purchasers
+purchases
+purchasing
+pure
+puree
+pureed
+pureeing
+purees
+purely
+purer
+purest
+purgatories
+purgatory
+purge
+purged
+purges
+purging
+purification
+purified
+purifies
+purify
+purifying
+purist
+purists
+puritan
+puritanical
+puritans
+purity
+purple
+purpler
+purples
+purplest
+purport
+purported
+purporting
+purports
+purpose
+purposed
+purposeful
+purposely
+purposes
+purposing
+purr
+purred
+purring
+purrs
+purse
+pursed
+purser
+pursers
+purses
+pursing
+pursue
+pursued
+pursues
+pursuing
+pursuit
+pursuits
+purvey
+purveyed
+purveying
+purveyor
+purveyors
+purveys
+pus
+push
+pushed
+pusher
+pushers
+pushes
+pushier
+pushiest
+pushing
+pushover
+pushovers
+pushy
+puss
+pusses
+pussier
+pussies
+pussiest
+pussy
+pussycat
+pussycats
+pussyfoot
+pussyfooted
+pussyfooting
+pussyfoots
+put
+putative
+putrid
+puts
+putt
+putted
+putter
+puttered
+puttering
+putters
+puttied
+putties
+putting
+putts
+putty
+puttying
+puzzle
+puzzled
+puzzles
+puzzling
+pygmies
+pygmy
+pylon
+pylons
+pyramid
+pyramided
+pyramiding
+pyramids
+pyre
+pyres
+python
+pythons
+qua
+quack
+quacked
+quacking
+quacks
+quad
+quadrangle
+quadrangles
+quadrant
+quadrants
+quadratic
+quadrilateral
+quadrilaterals
+quadruped
+quadrupeds
+quadruple
+quadrupled
+quadruples
+quadruplet
+quadruplets
+quadrupling
+quads
+quagmire
+quagmires
+quail
+quailed
+quailing
+quails
+quaint
+quainter
+quaintest
+quake
+quaked
+quakes
+quaking
+qualification
+qualifications
+qualified
+qualifier
+qualifiers
+qualifies
+qualify
+qualifying
+qualitative
+qualities
+quality
+qualm
+qualms
+quandaries
+quandary
+quantified
+quantifier
+quantifiers
+quantifies
+quantify
+quantifying
+quantitative
+quantities
+quantity
+quantum
+quarantine
+quarantined
+quarantines
+quarantining
+quark
+quarks
+quarrel
+quarreled
+quarreling
+quarrels
+quarrelsome
+quarried
+quarries
+quarry
+quarrying
+quart
+quarter
+quarterback
+quarterbacked
+quarterbacking
+quarterbacks
+quartered
+quarterfinal
+quarterfinals
+quartering
+quarterlies
+quarterly
+quarters
+quartet
+quartets
+quarts
+quartz
+quash
+quashed
+quashes
+quashing
+quaver
+quavered
+quavering
+quavers
+quay
+quays
+queasier
+queasiest
+queasiness
+queasy
+queen
+queened
+queening
+queenlier
+queenliest
+queenly
+queens
+queer
+queered
+queerer
+queerest
+queering
+queers
+quell
+quelled
+quelling
+quells
+quench
+quenched
+quenches
+quenching
+queried
+queries
+query
+querying
+quest
+quested
+questing
+question
+questionable
+questioned
+questioning
+questionnaire
+questionnaires
+questions
+quests
+queue
+queued
+queues
+queuing
+quibble
+quibbled
+quibbles
+quibbling
+quiche
+quiches
+quick
+quicken
+quickened
+quickening
+quickens
+quicker
+quickest
+quickie
+quickies
+quickly
+quicksand
+quicksands
+quiet
+quieted
+quieter
+quietest
+quieting
+quietly
+quietness
+quiets
+quill
+quills
+quilt
+quilted
+quilting
+quilts
+quinine
+quintessence
+quintessences
+quintessential
+quintet
+quintets
+quintuplet
+quintuplets
+quip
+quipped
+quipping
+quips
+quirk
+quirked
+quirkier
+quirkiest
+quirking
+quirks
+quirky
+quit
+quite
+quits
+quitter
+quitters
+quitting
+quiver
+quivered
+quivering
+quivers
+quixotic
+quiz
+quizzed
+quizzes
+quizzical
+quizzing
+quorum
+quorums
+quota
+quotable
+quotas
+quotation
+quotations
+quote
+quoted
+quotes
+quotient
+quotients
+quoting
+rabbi
+rabbis
+rabbit
+rabbited
+rabbiting
+rabbits
+rabble
+rabbles
+rabid
+rabies
+raccoon
+race
+raced
+racer
+races
+racetrack
+racetracks
+racial
+racially
+racier
+raciest
+racing
+racism
+racist
+racists
+rack
+racked
+racket
+racketed
+racketeer
+racketeered
+racketeering
+racketeers
+racketing
+rackets
+racking
+racks
+racy
+radar
+radars
+radial
+radials
+radiance
+radiant
+radiate
+radiated
+radiates
+radiating
+radiation
+radiations
+radiator
+radiators
+radical
+radically
+radicals
+radii
+radio
+radioactive
+radioactivity
+radioed
+radioing
+radiologist
+radiologists
+radiology
+radios
+radiotherapy
+radish
+radishes
+radium
+radius
+radon
+raffle
+raffled
+raffles
+raffling
+raft
+rafted
+rafter
+rafters
+rafting
+rafts
+rag
+ragamuffin
+ragamuffins
+rage
+raged
+rages
+ragged
+raggeder
+raggedest
+ragging
+raging
+rags
+ragtag
+ragtags
+ragtime
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+railed
+railing
+railings
+railroad
+railroaded
+railroading
+railroads
+rails
+railway
+railways
+rain
+rainbow
+rainbows
+raincoat
+raincoats
+raindrop
+raindrops
+rained
+rainfall
+rainfalls
+rainier
+rainiest
+raining
+rains
+rainstorm
+rainstorms
+rainwater
+rainy
+raise
+raised
+raises
+raisin
+raising
+raisins
+rake
+raked
+rakes
+raking
+rallied
+rallies
+rally
+rallying
+ram
+ramble
+rambled
+rambler
+ramblers
+rambles
+rambling
+rambunctious
+ramification
+ramifications
+rammed
+ramming
+ramp
+rampage
+rampaged
+rampages
+rampaging
+rampant
+ramps
+ramrod
+ramrodded
+ramrodding
+ramrods
+rams
+ramshackle
+ran
+ranch
+ranched
+rancher
+ranchers
+ranches
+ranching
+rancid
+rancor
+rancorous
+random
+randomly
+randomness
+rang
+range
+ranged
+ranger
+rangers
+ranges
+ranging
+rank
+ranked
+ranker
+rankest
+ranking
+rankings
+rankle
+rankled
+rankles
+rankling
+ranks
+ransack
+ransacked
+ransacking
+ransacks
+ransom
+ransomed
+ransoming
+ransoms
+rant
+ranted
+ranting
+rants
+rap
+rape
+raped
+rapes
+rapid
+rapider
+rapidest
+rapidity
+rapidly
+rapids
+raping
+rapist
+rapists
+rapped
+rapping
+rapport
+rapports
+rapprochement
+rapprochements
+raps
+rapt
+rapture
+raptures
+rapturous
+rare
+rared
+rarely
+rarer
+rares
+rarest
+raring
+rarities
+rarity
+rascal
+rascals
+rash
+rasher
+rashes
+rashest
+rashly
+rasp
+raspberries
+raspberry
+rasped
+raspier
+raspiest
+rasping
+rasps
+raspy
+raster
+rat
+rate
+rated
+rates
+rather
+ratification
+ratified
+ratifies
+ratify
+ratifying
+rating
+ratings
+ratio
+ration
+rational
+rationale
+rationales
+rationality
+rationalization
+rationalizations
+rationalize
+rationalized
+rationalizes
+rationalizing
+rationally
+rationals
+rationed
+rationing
+rations
+ratios
+rats
+ratted
+ratting
+rattle
+rattled
+rattler
+rattlers
+rattles
+rattlesnake
+rattlesnakes
+rattling
+ratty
+raucous
+raucously
+raunchier
+raunchiest
+raunchy
+ravage
+ravaged
+ravages
+ravaging
+rave
+raved
+ravel
+raveled
+raveling
+ravels
+raven
+ravened
+ravening
+ravenous
+ravenously
+ravens
+raves
+ravine
+ravines
+raving
+ravings
+ravish
+ravished
+ravishes
+ravishing
+raw
+rawer
+rawest
+ray
+rayon
+rays
+raze
+razed
+razes
+razing
+razor
+razors
+razz
+razzed
+razzes
+razzing
+re
+reach
+reached
+reaches
+reaching
+react
+reacted
+reacting
+reaction
+reactionaries
+reactionary
+reactions
+reactive
+reactor
+reactors
+reacts
+read
+readability
+readable
+reader
+readers
+readership
+readerships
+readied
+readier
+readies
+readiest
+readily
+readiness
+reading
+readings
+readjust
+readjusted
+readjusting
+readjustment
+readjustments
+readjusts
+reads
+ready
+readying
+real
+realer
+realest
+realism
+realist
+realistic
+realistically
+realists
+realities
+reality
+realization
+realize
+realized
+realizes
+realizing
+reallocate
+reallocated
+reallocates
+reallocating
+really
+realm
+realms
+reals
+realty
+ream
+reamed
+reaming
+reams
+reap
+reaped
+reaper
+reapers
+reaping
+reappear
+reappearance
+reappearances
+reappeared
+reappearing
+reappears
+reaps
+rear
+reared
+rearing
+rearrange
+rearranged
+rearrangement
+rearrangements
+rearranges
+rearranging
+rears
+reason
+reasonable
+reasonableness
+reasonably
+reasoned
+reasoning
+reasons
+reassurance
+reassurances
+reassure
+reassured
+reassures
+reassuring
+reassuringly
+rebate
+rebated
+rebates
+rebating
+rebel
+rebelled
+rebelling
+rebellion
+rebellions
+rebellious
+rebels
+rebind
+rebinding
+rebinds
+rebirth
+rebirths
+reborn
+rebound
+rebounded
+rebounding
+rebounds
+rebuff
+rebuffed
+rebuffing
+rebuffs
+rebuild
+rebuilding
+rebuilds
+rebuilt
+rebuke
+rebuked
+rebukes
+rebuking
+rebut
+rebuts
+rebuttal
+rebuttals
+rebutted
+rebutting
+recalcitrance
+recalcitrant
+recall
+recalled
+recalling
+recalls
+recant
+recanted
+recanting
+recants
+recap
+recapped
+recapping
+recaps
+recapture
+recaptured
+recaptures
+recapturing
+recede
+receded
+recedes
+receding
+receipt
+receipted
+receipting
+receipts
+receive
+received
+receiver
+receivers
+receivership
+receives
+receiving
+recent
+recenter
+recentest
+recently
+receptacle
+receptacles
+reception
+receptionist
+receptionists
+receptions
+receptive
+recess
+recessed
+recesses
+recessing
+recession
+recessions
+recharge
+rechargeable
+recharged
+recharges
+recharging
+recipe
+recipes
+recipient
+recipients
+reciprocal
+reciprocals
+reciprocate
+reciprocated
+reciprocates
+reciprocating
+recital
+recitals
+recitation
+recitations
+recite
+recited
+recites
+reciting
+reckless
+recklessly
+recklessness
+reckon
+reckoned
+reckoning
+reckonings
+reckons
+reclaim
+reclaimed
+reclaiming
+reclaims
+reclamation
+recline
+reclined
+reclines
+reclining
+recluse
+recluses
+recognition
+recognizable
+recognizably
+recognize
+recognized
+recognizes
+recognizing
+recoil
+recoiled
+recoiling
+recoils
+recollect
+recollected
+recollecting
+recollection
+recollections
+recollects
+recommend
+recommendation
+recommendations
+recommended
+recommending
+recommends
+recompense
+recompensed
+recompenses
+recompensing
+recompile
+recompiled
+recompiling
+reconcile
+reconciled
+reconciles
+reconciliation
+reconciliations
+reconciling
+recondition
+reconditioned
+reconditioning
+reconditions
+reconfigure
+reconfigured
+reconnaissance
+reconnaissances
+reconnect
+reconnected
+reconnecting
+reconnects
+reconsider
+reconsidered
+reconsidering
+reconsiders
+reconstitute
+reconstituted
+reconstitutes
+reconstituting
+reconstruct
+reconstructed
+reconstructing
+reconstruction
+reconstructions
+reconstructs
+record
+recorded
+recorder
+recorders
+recording
+recordings
+records
+recount
+recounted
+recounting
+recounts
+recoup
+recouped
+recouping
+recoups
+recourse
+recover
+recoverable
+recovered
+recoveries
+recovering
+recovers
+recovery
+recreate
+recreated
+recreates
+recreating
+recreation
+recreational
+recreations
+recruit
+recruited
+recruiter
+recruiters
+recruiting
+recruitment
+recruits
+rectal
+rectangle
+rectangles
+rectangular
+rectified
+rectifies
+rectify
+rectifying
+rector
+rectors
+rectum
+rectums
+recuperate
+recuperated
+recuperates
+recuperating
+recuperation
+recur
+recurred
+recurrence
+recurrences
+recurrent
+recurring
+recurs
+recursion
+recursive
+recursively
+recyclable
+recyclables
+recycle
+recycled
+recycles
+recycling
+red
+redden
+reddened
+reddening
+reddens
+redder
+reddest
+reddish
+redeem
+redeemable
+redeemed
+redeeming
+redeems
+redefine
+redefined
+redefines
+redefining
+redefinition
+redemption
+redesign
+redesigned
+redesigning
+redesigns
+redevelop
+redeveloped
+redeveloping
+redevelopment
+redevelopments
+redevelops
+redhead
+redheads
+redid
+redirect
+redirected
+redirecting
+redirection
+redirects
+rediscover
+rediscovered
+rediscovering
+rediscovers
+redistribute
+redistributed
+redistributes
+redistributing
+redistribution
+redneck
+rednecks
+redness
+redo
+redoes
+redoing
+redone
+redouble
+redoubled
+redoubles
+redoubling
+redraft
+redraw
+redress
+redressed
+redresses
+redressing
+reds
+redskin
+redskins
+reduce
+reduced
+reduces
+reducing
+reduction
+reductions
+redundancies
+redundancy
+redundant
+redwood
+redwoods
+reed
+reeds
+reeducate
+reeducated
+reeducates
+reeducating
+reeducation
+reef
+reefed
+reefing
+reefs
+reek
+reeked
+reeking
+reeks
+reel
+reelect
+reelected
+reelecting
+reelection
+reelections
+reelects
+reeled
+reeling
+reels
+reenact
+reenacted
+reenacting
+reenactment
+reenactments
+reenacts
+reentries
+reentry
+ref
+refer
+referee
+refereed
+refereeing
+referees
+reference
+referenced
+references
+referencing
+referendum
+referendums
+referred
+referring
+refers
+reffed
+reffing
+refill
+refilled
+refilling
+refills
+refinance
+refinanced
+refinances
+refinancing
+refine
+refined
+refinement
+refinements
+refineries
+refinery
+refines
+refining
+refinish
+refinished
+refinishes
+refinishing
+reflect
+reflected
+reflecting
+reflection
+reflections
+reflective
+reflector
+reflectors
+reflects
+reflex
+reflexes
+reflexive
+reflexives
+reform
+reformat
+reformation
+reformations
+reformatted
+reformatting
+reformed
+reformer
+reformers
+reforming
+reforms
+refraction
+refrain
+refrained
+refraining
+refrains
+refresh
+refreshed
+refreshes
+refreshing
+refreshingly
+refreshment
+refreshments
+refrigerate
+refrigerated
+refrigerates
+refrigerating
+refrigeration
+refrigerator
+refrigerators
+refs
+refuel
+refueled
+refueling
+refuels
+refuge
+refugee
+refugees
+refuges
+refund
+refundable
+refunded
+refunding
+refunds
+refurbish
+refurbished
+refurbishes
+refurbishing
+refurbishment
+refurbishments
+refusal
+refusals
+refuse
+refused
+refuses
+refusing
+refutation
+refute
+refuted
+refutes
+refuting
+regain
+regained
+regaining
+regains
+regal
+regale
+regaled
+regales
+regalia
+regaling
+regard
+regarded
+regarding
+regardless
+regards
+regatta
+regattas
+regenerate
+regenerated
+regenerates
+regenerating
+regeneration
+regent
+regents
+reggae
+regime
+regimen
+regimens
+regiment
+regimental
+regimented
+regimenting
+regiments
+regimes
+region
+regional
+regionally
+regions
+register
+registered
+registering
+registers
+registrar
+registrars
+registration
+registrations
+registries
+registry
+regress
+regressed
+regresses
+regressing
+regression
+regressions
+regret
+regretful
+regretfully
+regrets
+regrettable
+regrettably
+regretted
+regretting
+regroup
+regrouped
+regrouping
+regroups
+regular
+regularity
+regularly
+regulars
+regulate
+regulated
+regulates
+regulating
+regulation
+regulations
+regurgitate
+regurgitated
+regurgitates
+regurgitating
+regurgitation
+rehab
+rehabbed
+rehabbing
+rehabilitate
+rehabilitated
+rehabilitates
+rehabilitating
+rehabilitation
+rehabs
+rehash
+rehashed
+rehashes
+rehashing
+rehearsal
+rehearsals
+rehearse
+rehearsed
+rehearses
+rehearsing
+reign
+reigned
+reigning
+reigns
+reimburse
+reimbursed
+reimbursement
+reimbursements
+reimburses
+reimbursing
+rein
+reincarnate
+reincarnated
+reincarnates
+reincarnating
+reincarnation
+reincarnations
+reindeer
+reined
+reinforce
+reinforced
+reinforcement
+reinforcements
+reinforces
+reinforcing
+reining
+reins
+reinstate
+reinstated
+reinstatement
+reinstates
+reinstating
+reinvent
+reinvented
+reinventing
+reinvents
+reissue
+reissued
+reissues
+reissuing
+reiterate
+reiterated
+reiterates
+reiterating
+reiteration
+reiterations
+reject
+rejected
+rejecting
+rejection
+rejections
+rejects
+rejoice
+rejoiced
+rejoices
+rejoicing
+rejoicings
+rejoin
+rejoinder
+rejoinders
+rejoined
+rejoining
+rejoins
+rejuvenate
+rejuvenated
+rejuvenates
+rejuvenating
+rejuvenation
+rekindle
+rekindled
+rekindles
+rekindling
+relaid
+relapse
+relapsed
+relapses
+relapsing
+relate
+related
+relates
+relating
+relation
+relational
+relations
+relationship
+relationships
+relative
+relatively
+relatives
+relativistic
+relativity
+relax
+relaxation
+relaxations
+relaxed
+relaxes
+relaxing
+relay
+relayed
+relaying
+relays
+releasable
+release
+released
+releases
+releasing
+relegate
+relegated
+relegates
+relegating
+relent
+relented
+relenting
+relentless
+relentlessly
+relents
+relevance
+relevant
+reliability
+reliable
+reliably
+reliance
+reliant
+relic
+relics
+relied
+relief
+reliefs
+relies
+relieve
+relieved
+relieves
+relieving
+religion
+religions
+religious
+religiously
+relinquish
+relinquished
+relinquishes
+relinquishing
+relish
+relished
+relishes
+relishing
+relive
+relived
+relives
+reliving
+reload
+reloaded
+reloading
+reloads
+relocatable
+relocate
+relocated
+relocates
+relocating
+relocation
+reluctance
+reluctant
+reluctantly
+rely
+relying
+remade
+remain
+remainder
+remainders
+remained
+remaining
+remains
+remake
+remakes
+remaking
+remark
+remarkable
+remarkably
+remarked
+remarking
+remarks
+remarriage
+remarriages
+remarried
+remarries
+remarry
+remarrying
+remedial
+remedied
+remedies
+remedy
+remedying
+remember
+remembered
+remembering
+remembers
+remembrance
+remembrances
+remind
+reminded
+reminder
+reminders
+reminding
+reminds
+reminisce
+reminisced
+reminiscence
+reminiscences
+reminiscent
+reminisces
+reminiscing
+remiss
+remission
+remissions
+remit
+remits
+remittance
+remittances
+remitted
+remitting
+remnant
+remnants
+remodel
+remodeled
+remodeling
+remodels
+remorse
+remorseful
+remorseless
+remote
+remotely
+remoteness
+remoter
+remotes
+remotest
+removable
+removal
+removals
+remove
+removed
+remover
+removers
+removes
+removing
+remunerate
+remunerated
+remunerates
+remunerating
+remuneration
+remunerations
+renaissance
+rename
+renamed
+renames
+renaming
+rend
+render
+rendered
+rendering
+renderings
+renders
+rendezvous
+rendezvoused
+rendezvouses
+rendezvousing
+rending
+rendition
+renditions
+rends
+renegade
+renegaded
+renegades
+renegading
+renege
+reneged
+reneges
+reneging
+renew
+renewable
+renewal
+renewals
+renewed
+renewing
+renews
+renounce
+renounced
+renounces
+renouncing
+renovate
+renovated
+renovates
+renovating
+renovation
+renovations
+renown
+renowned
+rent
+rental
+rentals
+rented
+renter
+renters
+renting
+rents
+renunciation
+renunciations
+reopen
+reopened
+reopening
+reopens
+reorganization
+reorganizations
+reorganize
+reorganized
+reorganizes
+reorganizing
+rep
+repaid
+repair
+repaired
+repairing
+repairs
+reparation
+repatriate
+repatriated
+repatriates
+repatriating
+repatriation
+repay
+repaying
+repayment
+repayments
+repays
+repeal
+repealed
+repealing
+repeals
+repeat
+repeatable
+repeated
+repeatedly
+repeating
+repeats
+repel
+repelled
+repellent
+repellents
+repelling
+repels
+repent
+repentance
+repentant
+repented
+repenting
+repents
+repercussion
+repercussions
+repertoire
+repertoires
+repetition
+repetitions
+repetitious
+repetitive
+rephrase
+rephrased
+rephrases
+rephrasing
+replace
+replaceable
+replaced
+replacement
+replacements
+replaces
+replacing
+replay
+replayed
+replaying
+replays
+replenish
+replenished
+replenishes
+replenishing
+replenishment
+replete
+repleted
+repletes
+repleting
+replica
+replicas
+replicate
+replicated
+replicates
+replicating
+replication
+replications
+replied
+replies
+reply
+replying
+report
+reported
+reportedly
+reporter
+reporters
+reporting
+reports
+repose
+reposed
+reposes
+reposing
+repositories
+repository
+repossess
+repossessed
+repossesses
+repossessing
+reprehensible
+represent
+representation
+representations
+representative
+representatives
+represented
+representing
+represents
+repress
+repressed
+represses
+repressing
+repression
+repressions
+repressive
+reprieve
+reprieved
+reprieves
+reprieving
+reprimand
+reprimanded
+reprimanding
+reprimands
+reprint
+reprinted
+reprinting
+reprints
+reprisal
+reprisals
+reprise
+reprises
+reprising
+reprized
+reproach
+reproached
+reproaches
+reproaching
+reproduce
+reproduced
+reproduces
+reproducing
+reproduction
+reproductions
+reproductive
+reprogram
+reprogrammed
+reprogramming
+reprograms
+reprove
+reproved
+reproves
+reproving
+reps
+reptile
+reptiles
+reptilian
+reptilians
+republic
+republican
+republicans
+republics
+repudiate
+repudiated
+repudiates
+repudiating
+repudiation
+repudiations
+repugnance
+repugnant
+repulse
+repulsed
+repulses
+repulsing
+repulsion
+repulsive
+reputable
+reputation
+reputations
+repute
+reputed
+reputedly
+reputes
+reputing
+request
+requested
+requesting
+requests
+requiem
+requiems
+require
+required
+requirement
+requirements
+requires
+requiring
+requisite
+requisites
+requisition
+requisitioned
+requisitioning
+requisitions
+reran
+reread
+rereading
+rereads
+reroute
+rerouted
+reroutes
+rerouting
+rerun
+rerunning
+reruns
+resale
+resales
+reschedule
+rescheduled
+reschedules
+rescheduling
+rescind
+rescinded
+rescinding
+rescinds
+rescue
+rescued
+rescuer
+rescuers
+rescues
+rescuing
+research
+researched
+researcher
+researchers
+researches
+researching
+resemblance
+resemblances
+resemble
+resembled
+resembles
+resembling
+resent
+resented
+resentful
+resenting
+resentment
+resentments
+resents
+reservation
+reservations
+reserve
+reserved
+reserves
+reserving
+reservoir
+reservoirs
+reset
+resets
+resetting
+reshuffle
+reshuffled
+reshuffles
+reshuffling
+reside
+resided
+residence
+residences
+residencies
+residency
+resident
+residential
+residents
+resides
+residing
+residual
+residuals
+residue
+residues
+resign
+resignation
+resignations
+resigned
+resigning
+resigns
+resilience
+resilient
+resin
+resins
+resist
+resistance
+resistances
+resistant
+resisted
+resisting
+resistor
+resistors
+resists
+resolute
+resolutely
+resolution
+resolutions
+resolve
+resolved
+resolver
+resolves
+resolving
+resonance
+resonances
+resonant
+resonate
+resonated
+resonates
+resonating
+resort
+resorted
+resorting
+resorts
+resound
+resounded
+resounding
+resoundingly
+resounds
+resource
+resourceful
+resourcefulness
+resources
+respect
+respectability
+respectable
+respectably
+respected
+respectful
+respectfully
+respecting
+respective
+respectively
+respects
+respiration
+respirator
+respirators
+respiratory
+respite
+respites
+resplendent
+respond
+responded
+responding
+responds
+response
+responses
+responsibilities
+responsibility
+responsible
+responsibly
+responsive
+responsiveness
+rest
+restart
+restarted
+restarting
+restarts
+restate
+restated
+restatement
+restatements
+restates
+restating
+restaurant
+restaurants
+rested
+restful
+restfuller
+restfullest
+resting
+restitution
+restive
+restless
+restlessly
+restlessness
+restoration
+restorations
+restore
+restored
+restores
+restoring
+restrain
+restrained
+restraining
+restrains
+restraint
+restraints
+restrict
+restricted
+restricting
+restriction
+restrictions
+restrictive
+restricts
+restructure
+restructured
+restructures
+restructuring
+restructurings
+rests
+resubmit
+resubmits
+resubmitted
+resubmitting
+result
+resultant
+resultants
+resulted
+resulting
+results
+resume
+resumed
+resumes
+resuming
+resumption
+resumptions
+resurface
+resurfaced
+resurfaces
+resurfacing
+resurgence
+resurgences
+resurgent
+resurrect
+resurrected
+resurrecting
+resurrection
+resurrections
+resurrects
+resuscitate
+resuscitated
+resuscitates
+resuscitating
+resuscitation
+retail
+retailed
+retailer
+retailers
+retailing
+retails
+retain
+retained
+retainer
+retainers
+retaining
+retains
+retake
+retaken
+retakes
+retaking
+retaliate
+retaliated
+retaliates
+retaliating
+retaliation
+retaliations
+retard
+retardation
+retarded
+retarding
+retards
+retch
+retched
+retches
+retching
+retention
+rethink
+rethinking
+rethinks
+rethought
+reticence
+reticent
+retina
+retinas
+retinue
+retinues
+retire
+retired
+retiree
+retirees
+retirement
+retirements
+retires
+retiring
+retook
+retort
+retorted
+retorting
+retorts
+retrace
+retraced
+retraces
+retracing
+retract
+retractable
+retracted
+retracting
+retraction
+retractions
+retracts
+retread
+retreaded
+retreading
+retreads
+retreat
+retreated
+retreating
+retreats
+retrial
+retrials
+retribution
+retributions
+retries
+retrieval
+retrievals
+retrieve
+retrieved
+retriever
+retrievers
+retrieves
+retrieving
+retroactive
+retroactively
+retrod
+retrodden
+retrograde
+retrospect
+retrospected
+retrospecting
+retrospective
+retrospectively
+retrospectives
+retrospects
+retry
+return
+returnable
+returnables
+returned
+returning
+returns
+retype
+reunion
+reunions
+reunite
+reunited
+reunites
+reuniting
+reuse
+reused
+reuses
+reusing
+rev
+revaluation
+revaluations
+revalue
+revalued
+revalues
+revaluing
+revamp
+revamped
+revamping
+revamps
+reveal
+revealed
+revealing
+revealings
+reveals
+revel
+revelation
+revelations
+reveled
+reveler
+revelers
+reveling
+revelries
+revelry
+revels
+revenge
+revenged
+revengeful
+revenges
+revenging
+revenue
+revenues
+reverberate
+reverberated
+reverberates
+reverberating
+reverberation
+reverberations
+revere
+revered
+reverence
+reverenced
+reverences
+reverencing
+reverent
+reverently
+reveres
+reverie
+reveries
+revering
+reversal
+reversals
+reverse
+reversed
+reverses
+reversible
+reversing
+reversion
+revert
+reverted
+reverting
+reverts
+review
+reviewed
+reviewer
+reviewers
+reviewing
+reviews
+revile
+reviled
+reviles
+reviling
+revise
+revised
+revises
+revising
+revision
+revisions
+revisit
+revisited
+revisiting
+revisits
+revitalization
+revitalize
+revitalized
+revitalizes
+revitalizing
+revival
+revivals
+revive
+revived
+revives
+reviving
+revoke
+revoked
+revokes
+revoking
+revolt
+revolted
+revolting
+revolts
+revolution
+revolutionaries
+revolutionary
+revolutionize
+revolutionized
+revolutionizes
+revolutionizing
+revolutions
+revolve
+revolved
+revolver
+revolvers
+revolves
+revolving
+revs
+revue
+revues
+revulsion
+revved
+revving
+reward
+rewarded
+rewarding
+rewards
+rewind
+rewinding
+rewinds
+rework
+reworked
+reworking
+reworks
+rewound
+rewrite
+rewrites
+rewriting
+rewritten
+rewrote
+rhapsodies
+rhapsody
+rhetoric
+rhetorical
+rhetorically
+rheumatism
+rhinestone
+rhinestones
+rhino
+rhinoceros
+rhinoceroses
+rhinos
+rhododendron
+rhododendrons
+rhubarb
+rhubarbs
+rhyme
+rhymed
+rhymes
+rhyming
+rhythm
+rhythmic
+rhythmically
+rhythms
+rib
+ribald
+ribbed
+ribbing
+ribbon
+ribbons
+ribs
+rice
+riced
+rices
+rich
+richer
+riches
+richest
+richly
+richness
+ricing
+ricketier
+ricketiest
+rickety
+rickshaw
+rickshaws
+ricochet
+ricocheted
+ricocheting
+ricochets
+rid
+riddance
+ridden
+ridding
+riddle
+riddled
+riddles
+riddling
+ride
+rider
+riders
+rides
+ridge
+ridged
+ridges
+ridging
+ridicule
+ridiculed
+ridicules
+ridiculing
+ridiculous
+ridiculously
+riding
+rids
+rife
+rifer
+rifest
+rifle
+rifled
+rifles
+rifling
+rift
+rifted
+rifting
+rifts
+rig
+rigged
+rigging
+right
+righted
+righteous
+righteously
+righteousness
+righter
+rightest
+rightful
+rightfully
+righting
+rightly
+rightmost
+rightness
+rights
+rigid
+rigidity
+rigidly
+rigmarole
+rigmaroles
+rigor
+rigorous
+rigorously
+rigors
+rigs
+rile
+riled
+riles
+riling
+rim
+rimmed
+rimming
+rims
+rind
+rinds
+ring
+ringed
+ringing
+ringleader
+ringleaders
+ringlet
+ringlets
+rings
+ringside
+ringworm
+rink
+rinks
+rinse
+rinsed
+rinses
+rinsing
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riots
+rip
+ripe
+ripen
+ripened
+ripeness
+ripening
+ripens
+riper
+ripest
+riposte
+ripped
+ripping
+ripple
+rippled
+ripples
+rippling
+rips
+rise
+risen
+riser
+risers
+rises
+rising
+risk
+risked
+riskier
+riskiest
+risking
+risks
+risky
+risque
+rite
+rites
+ritual
+ritually
+rituals
+ritzier
+ritziest
+ritzy
+rival
+rivaled
+rivaling
+rivalries
+rivalry
+rivals
+river
+riverbed
+riverbeds
+riverfront
+rivers
+riverside
+riversides
+rivet
+riveted
+riveting
+rivets
+roach
+roaches
+road
+roadblock
+roadblocked
+roadblocking
+roadblocks
+roadhouse
+roadhouses
+roadkill
+roadrunner
+roadrunners
+roads
+roadside
+roadsides
+roadway
+roadways
+roadworthy
+roam
+roamed
+roaming
+roams
+roar
+roared
+roaring
+roars
+roast
+roasted
+roasting
+roasts
+rob
+robbed
+robber
+robberies
+robbers
+robbery
+robbing
+robe
+robed
+robes
+robin
+robing
+robins
+robot
+robotics
+robots
+robs
+robust
+robuster
+robustest
+robustness
+rock
+rocked
+rocker
+rockers
+rocket
+rocketed
+rocketing
+rockets
+rockier
+rockiest
+rocking
+rocks
+rocky
+rod
+rode
+rodent
+rodents
+rodeo
+rodeos
+rods
+roe
+roes
+rogue
+rogues
+roguish
+role
+roles
+roll
+rolled
+roller
+rollers
+rollerskating
+rollick
+rollicked
+rollicking
+rollicks
+rolling
+rolls
+roman
+romance
+romanced
+romances
+romancing
+romantic
+romantically
+romanticize
+romanticized
+romanticizes
+romanticizing
+romantics
+romp
+romped
+romping
+romps
+roof
+roofed
+roofing
+roofs
+rooftop
+rooftops
+rook
+rooked
+rookie
+rookies
+rooking
+rooks
+room
+roomed
+roomful
+roomfuls
+roomier
+roomiest
+rooming
+roommate
+roommates
+rooms
+roomy
+roost
+roosted
+rooster
+roosters
+roosting
+roosts
+root
+rooted
+rooter
+rooting
+rootless
+roots
+rope
+roped
+ropes
+roping
+rosaries
+rosary
+rose
+rosemary
+roses
+rosier
+rosiest
+roster
+rosters
+rostrum
+rostrums
+rosy
+rot
+rotaries
+rotary
+rotate
+rotated
+rotates
+rotating
+rotation
+rotations
+rote
+rotisserie
+rotisseries
+rotor
+rotors
+rots
+rotted
+rotten
+rottener
+rottenest
+rotting
+rotund
+rotunda
+rotundas
+rouge
+rouged
+rouges
+rough
+roughage
+roughed
+roughen
+roughened
+roughening
+roughens
+rougher
+roughest
+roughhouse
+roughhoused
+roughhouses
+roughhousing
+roughing
+roughly
+roughness
+roughs
+roughshod
+rouging
+roulette
+round
+roundabout
+roundabouts
+rounded
+rounder
+roundest
+rounding
+roundness
+rounds
+roundup
+roundups
+rouse
+roused
+rouses
+rousing
+rout
+route
+routed
+routeing
+router
+routes
+routine
+routinely
+routines
+routing
+routs
+rove
+roved
+roves
+roving
+row
+rowboat
+rowboats
+rowdier
+rowdies
+rowdiest
+rowdiness
+rowdy
+rowed
+rowing
+rows
+royal
+royally
+royals
+royalties
+royalty
+rs
+rub
+rubbed
+rubber
+rubberneck
+rubbernecked
+rubbernecking
+rubbernecks
+rubbers
+rubbery
+rubbing
+rubbish
+rubbished
+rubbishes
+rubbishing
+rubble
+rubdown
+rubdowns
+rubella
+rubier
+rubies
+rubiest
+rubric
+rubs
+ruby
+rucksack
+ruckus
+ruckuses
+rudder
+rudders
+ruddier
+ruddiest
+ruddy
+rude
+rudely
+rudeness
+ruder
+rudest
+rudiment
+rudimentary
+rudiments
+rue
+rued
+rueful
+rues
+ruff
+ruffed
+ruffian
+ruffians
+ruffing
+ruffle
+ruffled
+ruffles
+ruffling
+ruffs
+rug
+rugby
+rugged
+ruggeder
+ruggedest
+rugs
+ruin
+ruined
+ruing
+ruining
+ruinous
+ruins
+rule
+ruled
+ruler
+rulers
+rules
+ruling
+rulings
+rum
+rumble
+rumbled
+rumbles
+rumbling
+ruminate
+ruminated
+ruminates
+ruminating
+rummage
+rummaged
+rummages
+rummaging
+rummer
+rummest
+rummy
+rumor
+rumored
+rumoring
+rumors
+rump
+rumple
+rumpled
+rumples
+rumpling
+rumps
+rums
+run
+runaround
+runarounds
+runaway
+runaways
+rundown
+rundowns
+rune
+runes
+rung
+rungs
+runner
+runners
+runnier
+runniest
+running
+runny
+runs
+runt
+runts
+runway
+runways
+rupture
+ruptured
+ruptures
+rupturing
+rural
+ruse
+ruses
+rush
+rushed
+rushes
+rushing
+rust
+rusted
+rustic
+rustics
+rustier
+rustiest
+rusting
+rustle
+rustled
+rustler
+rustlers
+rustles
+rustling
+rustproof
+rustproofed
+rustproofing
+rustproofs
+rusts
+rusty
+rut
+ruthless
+ruthlessly
+ruthlessness
+ruts
+rutted
+rutting
+rye
+sabbatical
+sabbaticals
+saber
+sabers
+sabotage
+sabotaged
+sabotages
+sabotaging
+saboteur
+saboteurs
+sac
+saccharin
+sack
+sacked
+sacking
+sacks
+sacrament
+sacraments
+sacred
+sacrifice
+sacrificed
+sacrifices
+sacrificial
+sacrificing
+sacrilege
+sacrileges
+sacrilegious
+sacrosanct
+sacs
+sad
+sadden
+saddened
+saddening
+saddens
+sadder
+saddest
+saddle
+saddled
+saddles
+saddling
+sades
+sadism
+sadist
+sadistic
+sadistically
+sadists
+sadly
+sadness
+safari
+safaried
+safariing
+safaris
+safe
+safeguard
+safeguarded
+safeguarding
+safeguards
+safekeeping
+safely
+safer
+safes
+safest
+safeties
+safety
+saffron
+saffrons
+sag
+saga
+sagas
+sage
+sagebrush
+sager
+sages
+sagest
+sagged
+sagging
+sags
+said
+sail
+sailboard
+sailboards
+sailboat
+sailboats
+sailed
+sailing
+sailings
+sailor
+sailors
+sails
+saint
+saintlier
+saintliest
+saintly
+saints
+sake
+salable
+salad
+salads
+salami
+salamis
+salaried
+salaries
+salary
+sale
+sales
+salesclerk
+salesclerks
+salesman
+salesmen
+salespeople
+salesperson
+salespersons
+saleswoman
+saleswomen
+salient
+salients
+saliva
+salivate
+salivated
+salivates
+salivating
+sallow
+sallower
+sallowest
+sally
+salmon
+salmonella
+salmonellae
+salmons
+salon
+salons
+saloon
+saloons
+salsa
+salsas
+salt
+salted
+salter
+saltest
+saltier
+saltiest
+salting
+salts
+saltwater
+salty
+salutation
+salutations
+salute
+saluted
+salutes
+saluting
+salvage
+salvaged
+salvages
+salvaging
+salvation
+salve
+salved
+salves
+salving
+same
+sameness
+sames
+sample
+sampled
+sampler
+samples
+sampling
+sanatorium
+sanatoriums
+sanctified
+sanctifies
+sanctify
+sanctifying
+sanctimonious
+sanction
+sanctioned
+sanctioning
+sanctions
+sanctity
+sanctuaries
+sanctuary
+sand
+sandal
+sandals
+sandbag
+sandbagged
+sandbagging
+sandbags
+sandblast
+sandblasted
+sandblasting
+sandblasts
+sandcastle
+sandcastles
+sanded
+sandier
+sandiest
+sanding
+sandman
+sandmen
+sandpaper
+sandpapered
+sandpapering
+sandpapers
+sands
+sandstone
+sandstorm
+sandstorms
+sandwich
+sandwiched
+sandwiches
+sandwiching
+sandy
+sane
+saner
+sanest
+sang
+sangs
+sanitarium
+sanitariums
+sanitary
+sanitation
+sanitize
+sanitized
+sanitizes
+sanitizing
+sanity
+sank
+sanserif
+sap
+sapling
+saplings
+sapped
+sapphire
+sapphires
+sapping
+saps
+sarcasm
+sarcasms
+sarcastic
+sarcastically
+sardine
+sardines
+sardonic
+sari
+saris
+sash
+sashes
+sass
+sassed
+sasses
+sassier
+sassiest
+sassing
+sassy
+sat
+satanic
+satanism
+satchel
+satchels
+satellite
+satellited
+satellites
+satelliting
+satin
+satiny
+satire
+satires
+satirical
+satirically
+satirist
+satirists
+satirize
+satirized
+satirizes
+satirizing
+satisfaction
+satisfactions
+satisfactorily
+satisfactory
+satisfied
+satisfies
+satisfy
+satisfying
+saturate
+saturated
+saturates
+saturating
+saturation
+sauce
+sauced
+saucepan
+saucepans
+saucer
+saucers
+sauces
+saucier
+sauciest
+saucing
+saucy
+sauerkraut
+sauna
+saunaed
+saunaing
+saunas
+saunter
+sauntered
+sauntering
+saunters
+sausage
+sausages
+saute
+sauteed
+sauteing
+sautes
+savage
+savaged
+savagely
+savager
+savageries
+savagery
+savages
+savagest
+savaging
+save
+saved
+saver
+savers
+saves
+saving
+savings
+savior
+saviors
+savor
+savored
+savorier
+savories
+savoriest
+savoring
+savors
+savory
+savvied
+savvier
+savvies
+savviest
+savvy
+savvying
+saw
+sawdust
+sawed
+sawing
+saws
+sax
+saxes
+saxophone
+saxophones
+say
+saying
+sayings
+says
+scab
+scabbed
+scabbing
+scabs
+scad
+scads
+scaffold
+scaffolding
+scaffolds
+scalar
+scalars
+scald
+scalded
+scalding
+scalds
+scale
+scaled
+scales
+scalier
+scaliest
+scaling
+scallop
+scalloped
+scalloping
+scallops
+scalp
+scalped
+scalpel
+scalpels
+scalper
+scalpers
+scalping
+scalps
+scaly
+scam
+scammed
+scamming
+scamper
+scampered
+scampering
+scampers
+scams
+scan
+scandal
+scandalize
+scandalized
+scandalizes
+scandalizing
+scandalous
+scandals
+scanned
+scanner
+scanners
+scanning
+scans
+scant
+scanted
+scanter
+scantest
+scantier
+scanties
+scantiest
+scanting
+scants
+scanty
+scapegoat
+scapegoated
+scapegoating
+scapegoats
+scar
+scarce
+scarcely
+scarcer
+scarcest
+scarcity
+scare
+scarecrow
+scarecrows
+scared
+scares
+scarf
+scarfed
+scarfing
+scarfs
+scarier
+scariest
+scaring
+scarlet
+scarred
+scarring
+scars
+scarves
+scary
+scathing
+scatter
+scatterbrain
+scatterbrained
+scatterbrains
+scattered
+scattering
+scatters
+scavenge
+scavenged
+scavenger
+scavengers
+scavenges
+scavenging
+scenario
+scenarios
+scene
+scenery
+scenes
+scenic
+scent
+scented
+scenting
+scents
+scepter
+scepters
+schedule
+scheduled
+scheduler
+schedules
+scheduling
+scheme
+schemed
+schemer
+schemers
+schemes
+scheming
+schism
+schisms
+schizophrenia
+schizophrenic
+schizophrenics
+schlep
+schlepped
+schlepping
+schleps
+schlock
+schmaltz
+schmaltzier
+schmaltziest
+schmaltzy
+schmooze
+schmoozed
+schmoozes
+schmoozing
+schmuck
+schmucks
+scholar
+scholarly
+scholars
+scholarship
+scholarships
+scholastic
+school
+schoolboy
+schoolboys
+schoolchild
+schoolchildren
+schooled
+schoolgirl
+schoolgirls
+schooling
+schools
+schoolteacher
+schoolteachers
+schooner
+schooners
+science
+sciences
+scientific
+scientifically
+scientist
+scientists
+scintillate
+scintillated
+scintillates
+scintillating
+scissor
+scissors
+scoff
+scoffed
+scoffing
+scoffs
+scold
+scolded
+scolding
+scoldings
+scolds
+scoop
+scooped
+scooping
+scoops
+scoot
+scooted
+scooter
+scooters
+scooting
+scoots
+scope
+scoped
+scopes
+scoping
+scorch
+scorched
+scorches
+scorching
+score
+scoreboard
+scoreboards
+scorecard
+scorecards
+scored
+scorer
+scores
+scoring
+scorn
+scorned
+scornful
+scornfully
+scorning
+scorns
+scorpion
+scorpions
+scotch
+scotched
+scotches
+scotching
+scotchs
+scoundrel
+scoundrels
+scour
+scoured
+scourge
+scourged
+scourges
+scourging
+scouring
+scours
+scout
+scouted
+scouting
+scouts
+scowl
+scowled
+scowling
+scowls
+scrabble
+scrabbled
+scrabbles
+scrabbling
+scragglier
+scraggliest
+scraggly
+scram
+scramble
+scrambled
+scrambles
+scrambling
+scrammed
+scramming
+scrams
+scrap
+scrapbook
+scrapbooks
+scrape
+scraped
+scrapes
+scraping
+scrapped
+scrappier
+scrappiest
+scrapping
+scrappy
+scraps
+scratch
+scratched
+scratches
+scratchier
+scratchiest
+scratching
+scratchy
+scrawl
+scrawled
+scrawling
+scrawls
+scrawnier
+scrawniest
+scrawny
+scream
+screamed
+screaming
+screams
+screech
+screeched
+screeches
+screeching
+screen
+screened
+screening
+screenplay
+screenplays
+screens
+screw
+screwball
+screwballs
+screwdriver
+screwdrivers
+screwed
+screwier
+screwiest
+screwing
+screws
+screwy
+scribble
+scribbled
+scribbles
+scribbling
+scribe
+scribes
+scrimp
+scrimped
+scrimping
+scrimps
+script
+scripted
+scripting
+scripts
+scripture
+scriptures
+scriptwriter
+scriptwriters
+scroll
+scrolled
+scrolling
+scrolls
+scrooge
+scrooges
+scrounge
+scrounged
+scrounges
+scrounging
+scrub
+scrubbed
+scrubbing
+scrubs
+scruff
+scruffier
+scruffiest
+scruffs
+scruffy
+scruple
+scrupled
+scruples
+scrupling
+scrupulous
+scrupulously
+scrutinize
+scrutinized
+scrutinizes
+scrutinizing
+scrutiny
+scuff
+scuffed
+scuffing
+scuffle
+scuffled
+scuffles
+scuffling
+scuffs
+sculptor
+sculptors
+sculpture
+sculptured
+sculptures
+sculpturing
+scum
+scummed
+scumming
+scums
+scurried
+scurries
+scurrilous
+scurry
+scurrying
+scuttle
+scuttled
+scuttles
+scuttling
+scythe
+scythed
+scythes
+scything
+sea
+seafaring
+seafood
+seal
+sealed
+sealing
+seals
+seam
+seaman
+seamed
+seamen
+seaming
+seamless
+seams
+seamstress
+seamstresses
+seaport
+seaports
+sear
+search
+searched
+searches
+searching
+searchlight
+searchlights
+seared
+searing
+sears
+seas
+seashell
+seashells
+seashore
+seashores
+seasick
+seasickness
+seaside
+seasides
+season
+seasonable
+seasonal
+seasoned
+seasoning
+seasonings
+seasons
+seat
+seated
+seating
+seats
+seaweed
+secede
+seceded
+secedes
+seceding
+secession
+seclude
+secluded
+secludes
+secluding
+seclusion
+second
+secondaries
+secondarily
+secondary
+seconded
+secondhand
+seconding
+secondly
+seconds
+secrecy
+secret
+secretarial
+secretaries
+secretary
+secrete
+secreted
+secretes
+secreting
+secretion
+secretions
+secretive
+secretively
+secretly
+secrets
+secs
+sect
+section
+sectioned
+sectioning
+sections
+sector
+sectors
+sects
+secular
+secure
+secured
+securely
+securer
+secures
+securest
+securing
+securities
+security
+sedan
+sedans
+sedate
+sedated
+sedater
+sedates
+sedatest
+sedating
+sedation
+sedative
+sedatives
+sedentary
+sediment
+sedimentary
+sediments
+seduce
+seduced
+seduces
+seducing
+seduction
+seductions
+seductive
+see
+seed
+seeded
+seedier
+seediest
+seeding
+seedless
+seedling
+seedlings
+seeds
+seedy
+seeing
+seek
+seeking
+seeks
+seem
+seemed
+seeming
+seemingly
+seems
+seen
+seep
+seepage
+seeped
+seeping
+seeps
+seer
+sees
+seesaw
+seesawed
+seesawing
+seesaws
+seethe
+seethed
+seethes
+seething
+segment
+segmentation
+segmented
+segmenting
+segments
+segregate
+segregated
+segregates
+segregating
+segregation
+seize
+seized
+seizes
+seizing
+seizure
+seizures
+seldom
+select
+selected
+selecting
+selection
+selections
+selective
+selectively
+selector
+selectors
+selects
+self
+selfish
+selfishly
+selfishness
+selfless
+sell
+seller
+sellers
+selling
+sellout
+sellouts
+sells
+selves
+semantic
+semantically
+semantics
+semblance
+semblances
+semen
+semester
+semesters
+semicircle
+semicircles
+semicolon
+semicolons
+semiconductor
+semiconductors
+semifinal
+semifinalist
+semifinalists
+semifinals
+seminal
+seminar
+seminaries
+seminars
+seminary
+semiprecious
+senate
+senates
+senator
+senatorial
+senators
+send
+sender
+sending
+sends
+senile
+senility
+senior
+seniority
+seniors
+sensation
+sensational
+sensationalism
+sensationally
+sensations
+sense
+sensed
+senseless
+senses
+sensibilities
+sensibility
+sensible
+sensibly
+sensing
+sensitive
+sensitively
+sensitives
+sensitivities
+sensitivity
+sensor
+sensors
+sensory
+sensual
+sensuality
+sensuous
+sent
+sentence
+sentenced
+sentences
+sentencing
+sentience
+sentient
+sentiment
+sentimental
+sentimentality
+sentiments
+sentries
+sentry
+separable
+separate
+separated
+separately
+separates
+separating
+separation
+separations
+separator
+separators
+sepulcher
+sepulchered
+sepulchering
+sepulchers
+sequel
+sequels
+sequence
+sequenced
+sequencer
+sequences
+sequencing
+sequential
+sequentially
+sequin
+sequins
+sequoia
+sequoias
+serenade
+serenaded
+serenades
+serenading
+serene
+serenely
+serener
+serenest
+serenity
+sergeant
+sergeants
+serial
+serials
+series
+serious
+seriously
+seriousness
+sermon
+sermons
+serpent
+serpents
+serrated
+serum
+serums
+servant
+servants
+serve
+served
+server
+servers
+serves
+service
+serviceable
+serviced
+serviceman
+servicemen
+services
+servicewoman
+servicewomen
+servicing
+serviette
+serviettes
+servile
+serving
+servings
+servitude
+session
+sessions
+set
+setback
+setbacks
+sets
+settable
+setter
+setters
+setting
+settings
+settle
+settled
+settlement
+settlements
+settler
+settlers
+settles
+settling
+setup
+setups
+seven
+sevens
+seventeen
+seventeens
+seventeenth
+seventeenths
+seventh
+sevenths
+seventies
+seventieth
+seventieths
+seventy
+sever
+several
+severance
+severances
+severe
+severed
+severely
+severer
+severest
+severing
+severity
+severs
+sew
+sewage
+sewed
+sewer
+sewers
+sewing
+sewn
+sews
+sex
+sexed
+sexes
+sexier
+sexiest
+sexing
+sexism
+sexist
+sexists
+sexual
+sexuality
+sexually
+sexy
+sh
+shabbier
+shabbiest
+shabbily
+shabby
+shack
+shackle
+shackled
+shackles
+shackling
+shacks
+shade
+shaded
+shades
+shadier
+shadiest
+shading
+shadings
+shadow
+shadowed
+shadowier
+shadowiest
+shadowing
+shadows
+shadowy
+shady
+shaft
+shafted
+shafting
+shafts
+shaggier
+shaggiest
+shaggy
+shake
+shakedown
+shakedowns
+shaken
+shakes
+shakeup
+shakeups
+shakier
+shakiest
+shakily
+shaking
+shaky
+shall
+shallow
+shallower
+shallowest
+shallowness
+shallows
+sham
+shamble
+shambles
+shame
+shamed
+shameful
+shamefully
+shameless
+shamelessly
+shames
+shaming
+shammed
+shamming
+shampoo
+shampooed
+shampooing
+shampoos
+shamrock
+shamrocks
+shams
+shanties
+shanty
+shantytown
+shantytowns
+shape
+shaped
+shapelier
+shapeliest
+shapely
+shapes
+shaping
+share
+shared
+shareholder
+shareholders
+shares
+sharing
+shark
+sharked
+sharking
+sharks
+sharp
+sharped
+sharpen
+sharpened
+sharpener
+sharpeners
+sharpening
+sharpens
+sharper
+sharpest
+sharping
+sharply
+sharpness
+sharps
+shatter
+shattered
+shattering
+shatters
+shave
+shaved
+shaven
+shaver
+shavers
+shaves
+shaving
+shawl
+shawls
+she
+sheaf
+shear
+sheared
+shearing
+shears
+sheath
+sheathe
+sheathed
+sheathes
+sheathing
+sheaths
+sheave
+sheaves
+shed
+shedding
+sheds
+sheen
+sheep
+sheepish
+sheepishly
+sheer
+sheered
+sheerer
+sheerest
+sheering
+sheers
+sheet
+sheets
+sheikh
+sheikhs
+shelf
+shell
+shelled
+sheller
+shellfish
+shellfishes
+shelling
+shells
+shelter
+sheltered
+sheltering
+shelters
+shelve
+shelved
+shelves
+shelving
+shenanigan
+shenanigans
+shepherd
+shepherded
+shepherding
+shepherds
+sherbet
+sherbets
+sheriff
+sheriffs
+sherries
+sherry
+shes
+shied
+shield
+shielded
+shielding
+shields
+shies
+shift
+shifted
+shiftier
+shiftiest
+shifting
+shiftless
+shifts
+shifty
+shimmer
+shimmered
+shimmering
+shimmers
+shin
+shine
+shined
+shines
+shingle
+shingled
+shingles
+shingling
+shinier
+shiniest
+shining
+shinned
+shinnied
+shinnies
+shinning
+shinny
+shinnying
+shins
+shiny
+ship
+shipload
+shiploads
+shipment
+shipments
+shipped
+shipping
+ships
+shipshape
+shipwreck
+shipwrecked
+shipwrecking
+shipwrecks
+shipyard
+shipyards
+shire
+shirk
+shirked
+shirking
+shirks
+shirt
+shirted
+shirting
+shirts
+shirtsleeve
+shirtsleeves
+shit
+shits
+shittier
+shittiest
+shitting
+shitty
+shiver
+shivered
+shivering
+shivers
+shoal
+shoaled
+shoaling
+shoals
+shock
+shocked
+shocking
+shocks
+shod
+shoddier
+shoddiest
+shoddily
+shoddy
+shoe
+shoeing
+shoelace
+shoelaces
+shoes
+shoestring
+shoestrings
+shone
+shoo
+shooed
+shooing
+shook
+shoos
+shoot
+shooting
+shootings
+shoots
+shop
+shopkeeper
+shopkeepers
+shoplift
+shoplifted
+shoplifter
+shoplifters
+shoplifting
+shoplifts
+shopped
+shopper
+shoppers
+shopping
+shops
+shore
+shored
+shores
+shoring
+short
+shortage
+shortages
+shortchange
+shortchanged
+shortchanges
+shortchanging
+shortcoming
+shortcomings
+shortcut
+shortcuts
+shorted
+shorten
+shortened
+shortening
+shortenings
+shortens
+shorter
+shortest
+shortfall
+shortfalls
+shorthand
+shorting
+shortlist
+shortly
+shortness
+shorts
+shortsighted
+shortwave
+shortwaves
+shot
+shotgun
+shotgunned
+shotgunning
+shotguns
+shots
+should
+shoulder
+shouldered
+shouldering
+shoulders
+shout
+shouted
+shouting
+shouts
+shove
+shoved
+shovel
+shoveled
+shoveling
+shovels
+shoves
+shoving
+show
+showbiz
+showcase
+showcased
+showcases
+showcasing
+showdown
+showdowns
+showed
+shower
+showered
+showering
+showers
+showier
+showiest
+showing
+showings
+showman
+showmanship
+showmen
+shown
+showpiece
+showpieces
+showroom
+showrooms
+shows
+showy
+shrank
+shrapnel
+shred
+shredded
+shredding
+shreds
+shrew
+shrewd
+shrewder
+shrewdest
+shrewdly
+shrewdness
+shrews
+shriek
+shrieked
+shrieking
+shrieks
+shrill
+shrilled
+shriller
+shrillest
+shrilling
+shrills
+shrimp
+shrimped
+shrimping
+shrimps
+shrine
+shrines
+shrink
+shrinkage
+shrinking
+shrinks
+shrivel
+shriveled
+shriveling
+shrivels
+shroud
+shrouded
+shrouding
+shrouds
+shrub
+shrubberies
+shrubbery
+shrubs
+shrug
+shrugged
+shrugging
+shrugs
+shrunk
+shrunken
+shuck
+shucked
+shucking
+shucks
+shuckses
+shudder
+shuddered
+shuddering
+shudders
+shuffle
+shuffled
+shuffles
+shuffling
+shun
+shunned
+shunning
+shuns
+shunt
+shunted
+shunting
+shunts
+shush
+shushed
+shushes
+shushing
+shut
+shutdown
+shutdowns
+shuteye
+shuts
+shutter
+shuttered
+shuttering
+shutters
+shutting
+shuttle
+shuttled
+shuttles
+shuttling
+shy
+shyer
+shyest
+shying
+shyly
+shyness
+shyster
+shysters
+sibling
+siblings
+sic
+sick
+sicked
+sicken
+sickened
+sickening
+sickens
+sicker
+sickest
+sicking
+sickle
+sickles
+sicklier
+sickliest
+sickly
+sickness
+sicknesses
+sicks
+sics
+side
+sideburns
+sided
+sidekick
+sidekicks
+sideline
+sidelined
+sidelines
+sidelining
+sidelong
+sides
+sideshow
+sideshows
+sidestep
+sidestepped
+sidestepping
+sidesteps
+sidetrack
+sidetracked
+sidetracking
+sidetracks
+sidewalk
+sidewalks
+sideways
+siding
+sidings
+sidle
+sidled
+sidles
+sidling
+siege
+sieges
+sierra
+siesta
+siestas
+sieve
+sieved
+sieves
+sieving
+sift
+sifted
+sifting
+sifts
+sigh
+sighed
+sighing
+sighs
+sight
+sighted
+sighting
+sightings
+sightless
+sightread
+sights
+sightseeing
+sightseer
+sightseers
+sigma
+sign
+signal
+signaled
+signaling
+signals
+signatories
+signatory
+signature
+signatures
+signed
+signer
+significance
+significant
+significantly
+signified
+signifies
+signify
+signifying
+signing
+signings
+signpost
+signposted
+signposting
+signposts
+signs
+silence
+silenced
+silencer
+silencers
+silences
+silencing
+silent
+silenter
+silentest
+silently
+silents
+silhouette
+silhouetted
+silhouettes
+silhouetting
+silicon
+silk
+silken
+silkier
+silkiest
+silks
+silky
+sill
+sillier
+sillies
+silliest
+silliness
+sills
+silly
+silo
+silos
+silt
+silted
+silting
+silts
+silver
+silvered
+silvering
+silvers
+silversmith
+silversmiths
+silverware
+silvery
+similar
+similarities
+similarity
+similarly
+simile
+similes
+simmer
+simmered
+simmering
+simmers
+simper
+simpered
+simpering
+simpers
+simple
+simpler
+simplest
+simplex
+simplicity
+simplification
+simplifications
+simplified
+simplifies
+simplify
+simplifying
+simplistic
+simply
+simulate
+simulated
+simulates
+simulating
+simulation
+simulations
+simulator
+simulators
+simultaneous
+simultaneously
+sin
+since
+sincere
+sincerely
+sincerer
+sincerest
+sincerity
+sine
+sinew
+sinews
+sinewy
+sinful
+sing
+singe
+singed
+singeing
+singer
+singers
+singes
+singing
+single
+singled
+singles
+singling
+singly
+sings
+singsong
+singsonged
+singsonging
+singsongs
+singular
+singularity
+singularly
+singulars
+sinister
+sink
+sinking
+sinks
+sinned
+sinner
+sinners
+sinning
+sins
+sinus
+sinuses
+sip
+siphon
+siphoned
+siphoning
+siphons
+sipped
+sipping
+sips
+sir
+sire
+sired
+siren
+sirens
+sires
+siring
+sirloin
+sirloins
+sirs
+sissier
+sissies
+sissiest
+sissy
+sister
+sisterhood
+sisterhoods
+sisterly
+sisters
+sit
+sitcom
+sitcoms
+site
+sited
+sites
+siting
+sits
+sitter
+sitters
+sitting
+sittings
+situate
+situated
+situates
+situating
+situation
+situations
+six
+sixes
+sixpence
+sixpences
+sixteen
+sixteens
+sixteenth
+sixteenths
+sixth
+sixths
+sixties
+sixtieth
+sixtieths
+sixty
+sizable
+size
+sized
+sizer
+sizes
+sizing
+sizzle
+sizzled
+sizzles
+sizzling
+skate
+skateboard
+skateboarded
+skateboarder
+skateboarders
+skateboarding
+skateboards
+skated
+skater
+skaters
+skates
+skating
+skein
+skeins
+skeleton
+skeletons
+skeptic
+skeptical
+skeptically
+skepticism
+skeptics
+sketch
+sketched
+sketches
+sketchier
+sketchiest
+sketching
+sketchy
+skew
+skewed
+skewer
+skewered
+skewering
+skewers
+skewing
+skews
+ski
+skid
+skidded
+skidding
+skids
+skied
+skier
+skiers
+skies
+skiing
+skill
+skilled
+skillet
+skillets
+skillful
+skillfully
+skills
+skim
+skimmed
+skimming
+skimp
+skimped
+skimpier
+skimpiest
+skimping
+skimps
+skimpy
+skims
+skin
+skinflint
+skinflints
+skinhead
+skinheads
+skinned
+skinnier
+skinniest
+skinning
+skinny
+skins
+skintight
+skip
+skipped
+skipper
+skippered
+skippering
+skippers
+skipping
+skips
+skirmish
+skirmished
+skirmishes
+skirmishing
+skirt
+skirted
+skirting
+skirts
+skis
+skit
+skits
+skittish
+skulk
+skulked
+skulking
+skulks
+skull
+skullcap
+skullcaps
+skulls
+skunk
+skunked
+skunking
+skunks
+sky
+skydive
+skydived
+skydiver
+skydivers
+skydives
+skydiving
+skying
+skylight
+skylights
+skyline
+skylines
+skyrocket
+skyrocketed
+skyrocketing
+skyrockets
+skyscraper
+skyscrapers
+slab
+slabbed
+slabbing
+slabs
+slack
+slacked
+slacken
+slackened
+slackening
+slackens
+slacker
+slackers
+slackest
+slacking
+slacks
+slag
+slain
+slake
+slaked
+slakes
+slaking
+slalom
+slalomed
+slaloming
+slaloms
+slam
+slammed
+slamming
+slams
+slander
+slandered
+slandering
+slanders
+slang
+slant
+slanted
+slanting
+slants
+slap
+slapdash
+slapped
+slapping
+slaps
+slapstick
+slash
+slashed
+slashes
+slashing
+slat
+slate
+slated
+slates
+slather
+slathered
+slathering
+slathers
+slating
+slats
+slaughter
+slaughtered
+slaughterhouse
+slaughterhouses
+slaughtering
+slaughters
+slave
+slaved
+slavery
+slaves
+slaving
+slavish
+slay
+slaying
+slayings
+slays
+sleazier
+sleaziest
+sleazy
+sled
+sledded
+sledding
+sledgehammer
+sledgehammered
+sledgehammering
+sledgehammers
+sleds
+sleek
+sleeked
+sleeker
+sleekest
+sleeking
+sleeks
+sleep
+sleeper
+sleepers
+sleepier
+sleepiest
+sleepily
+sleeping
+sleepless
+sleeplessness
+sleeps
+sleepwalk
+sleepwalked
+sleepwalking
+sleepwalks
+sleepy
+sleepyhead
+sleepyheads
+sleet
+sleeted
+sleeting
+sleets
+sleeve
+sleeveless
+sleeves
+sleigh
+sleighed
+sleighing
+sleighs
+slender
+slenderer
+slenderest
+slept
+sleuth
+sleuths
+slew
+slewed
+slewing
+slews
+slice
+sliced
+slices
+slicing
+slick
+slicked
+slicker
+slickest
+slicking
+slicks
+slid
+slide
+slides
+sliding
+slier
+sliest
+slight
+slighted
+slighter
+slightest
+slighting
+slightly
+slights
+slim
+slime
+slimier
+slimiest
+slimmed
+slimmer
+slimmest
+slimming
+slims
+slimy
+sling
+slinging
+slings
+slingshot
+slingshots
+slink
+slinking
+slinks
+slip
+slipped
+slipper
+slipperier
+slipperiest
+slippers
+slippery
+slipping
+slips
+slipshod
+slit
+slither
+slithered
+slithering
+slithers
+slits
+slitter
+slitting
+sliver
+slivered
+slivering
+slivers
+slob
+slobber
+slobbered
+slobbering
+slobbers
+slobs
+slog
+slogan
+slogans
+slogged
+slogging
+slogs
+slop
+slope
+sloped
+slopes
+sloping
+slopped
+sloppier
+sloppiest
+sloppily
+slopping
+sloppy
+slops
+slosh
+sloshed
+sloshes
+sloshing
+slot
+sloth
+slothful
+sloths
+slots
+slotted
+slotting
+slouch
+slouched
+slouches
+slouching
+slovenlier
+slovenliest
+slovenly
+slow
+slowdown
+slowdowns
+slowed
+slower
+slowest
+slowing
+slowly
+slowness
+slowpoke
+slowpokes
+slows
+sludge
+slug
+slugged
+slugging
+sluggish
+slugs
+sluice
+sluiced
+sluices
+sluicing
+slum
+slumber
+slumbered
+slumbering
+slumbers
+slummed
+slummer
+slumming
+slump
+slumped
+slumping
+slumps
+slums
+slung
+slunk
+slur
+slurp
+slurped
+slurping
+slurps
+slurred
+slurring
+slurs
+slush
+slushier
+slushiest
+slushy
+slut
+sluts
+sly
+slyly
+slyness
+smack
+smacked
+smacking
+smacks
+small
+smaller
+smallest
+smallish
+smallpox
+smalls
+smart
+smarted
+smarter
+smartest
+smarting
+smartly
+smarts
+smash
+smashed
+smashes
+smashing
+smattering
+smatterings
+smear
+smeared
+smearing
+smears
+smell
+smelled
+smellier
+smelliest
+smelling
+smells
+smelly
+smelt
+smelted
+smelting
+smelts
+smidgen
+smidgens
+smile
+smiled
+smiles
+smiling
+smirk
+smirked
+smirking
+smirks
+smite
+smites
+smith
+smithereens
+smiths
+smiting
+smitten
+smock
+smocked
+smocking
+smocks
+smog
+smoggier
+smoggiest
+smoggy
+smoke
+smoked
+smoker
+smokers
+smokes
+smokestack
+smokestacks
+smokier
+smokiest
+smoking
+smoky
+smolder
+smoldered
+smoldering
+smolders
+smooch
+smooched
+smooches
+smooching
+smooth
+smoothed
+smoother
+smoothest
+smoothing
+smoothly
+smoothness
+smooths
+smorgasbord
+smorgasbords
+smote
+smother
+smothered
+smothering
+smothers
+smudge
+smudged
+smudges
+smudging
+smug
+smugger
+smuggest
+smuggle
+smuggled
+smuggler
+smugglers
+smuggles
+smuggling
+smugly
+smugness
+smut
+smuts
+smuttier
+smuttiest
+smutty
+snack
+snacked
+snacking
+snacks
+snafu
+snafus
+snag
+snagged
+snagging
+snags
+snail
+snailed
+snailing
+snails
+snake
+snaked
+snakes
+snaking
+snap
+snapped
+snappier
+snappiest
+snapping
+snappy
+snaps
+snapshot
+snapshots
+snare
+snared
+snares
+snaring
+snarl
+snarled
+snarling
+snarls
+snatch
+snatched
+snatches
+snatching
+snazzier
+snazziest
+snazzy
+sneak
+sneaked
+sneaker
+sneakers
+sneakier
+sneakiest
+sneaking
+sneaks
+sneaky
+sneer
+sneered
+sneering
+sneers
+sneeze
+sneezed
+sneezes
+sneezing
+snicker
+snickered
+snickering
+snickers
+snide
+snider
+snidest
+sniff
+sniffed
+sniffing
+sniffle
+sniffled
+sniffles
+sniffling
+sniffs
+snip
+snipe
+sniped
+sniper
+snipers
+snipes
+sniping
+snipped
+snippet
+snippets
+snipping
+snips
+snit
+snitch
+snitched
+snitches
+snitching
+snits
+snob
+snobbery
+snobbier
+snobbiest
+snobbish
+snobby
+snobs
+snooker
+snoop
+snooped
+snooping
+snoops
+snootier
+snootiest
+snooty
+snooze
+snoozed
+snoozes
+snoozing
+snore
+snored
+snores
+snoring
+snorkel
+snorkeled
+snorkeling
+snorkels
+snort
+snorted
+snorting
+snorts
+snot
+snots
+snottier
+snottiest
+snotty
+snout
+snouts
+snow
+snowball
+snowballed
+snowballing
+snowballs
+snowboard
+snowboarded
+snowboarding
+snowboards
+snowbound
+snowdrift
+snowdrifts
+snowed
+snowfall
+snowfalls
+snowflake
+snowflakes
+snowier
+snowiest
+snowing
+snowman
+snowmen
+snowmobile
+snowmobiled
+snowmobiles
+snowmobiling
+snowplow
+snowplowed
+snowplowing
+snowplows
+snows
+snowstorm
+snowstorms
+snowy
+snub
+snubbed
+snubbing
+snubs
+snuff
+snuffed
+snuffer
+snuffing
+snuffs
+snug
+snugged
+snugger
+snuggest
+snugging
+snuggle
+snuggled
+snuggles
+snuggling
+snugly
+snugs
+so
+soak
+soaked
+soaking
+soakings
+soaks
+soap
+soaped
+soapier
+soapiest
+soaping
+soaps
+soapy
+soar
+soared
+soaring
+soars
+sob
+sobbed
+sobbing
+sober
+sobered
+soberer
+soberest
+sobering
+sobers
+sobriety
+sobs
+soccer
+sociable
+sociables
+social
+socialism
+socialist
+socialists
+socialite
+socialites
+socialize
+socialized
+socializes
+socializing
+socially
+socials
+societies
+society
+socioeconomic
+sociological
+sociologist
+sociologists
+sociology
+sociopath
+sociopaths
+sock
+socked
+socket
+sockets
+socking
+socks
+sod
+soda
+sodas
+sodded
+sodden
+sodding
+sodium
+sodomy
+sods
+sofa
+sofas
+soft
+softball
+softballs
+soften
+softened
+softening
+softens
+softer
+softest
+softhearted
+softies
+softly
+softness
+software
+softy
+soggier
+soggiest
+soggy
+soil
+soiled
+soiling
+soils
+sojourn
+sojourned
+sojourning
+sojourns
+solace
+solaced
+solaces
+solacing
+solar
+sold
+solder
+soldered
+soldering
+solders
+soldier
+soldiered
+soldiering
+soldiers
+sole
+soled
+solely
+solemn
+solemner
+solemnest
+solemnity
+solemnly
+soles
+solicit
+solicited
+soliciting
+solicitor
+solicitors
+solicitous
+solicits
+solid
+solidarity
+solider
+solidest
+solidified
+solidifies
+solidify
+solidifying
+solidity
+solidly
+solids
+soliloquies
+soliloquy
+soling
+solitaire
+solitaires
+solitaries
+solitary
+solitude
+solo
+soloed
+soloing
+soloist
+soloists
+solos
+soluble
+solubles
+solution
+solutions
+solvable
+solve
+solved
+solvent
+solvents
+solves
+solving
+somber
+somberly
+some
+somebodies
+somebody
+someday
+somehow
+someone
+someones
+someplace
+somersault
+somersaulted
+somersaulting
+somersaults
+something
+somethings
+sometime
+sometimes
+someway
+somewhat
+somewhats
+somewhere
+son
+sonata
+sonatas
+song
+songs
+songwriter
+songwriters
+sonic
+sonnet
+sonnets
+sonorous
+sons
+soon
+sooner
+soonest
+soot
+soothe
+soothed
+soothes
+soothing
+soothingly
+sootier
+sootiest
+sooty
+sop
+sophisticate
+sophisticated
+sophisticates
+sophisticating
+sophistication
+sophistry
+sophomore
+sophomores
+sophomoric
+soporific
+soporifics
+sopped
+sopping
+soprano
+sopranos
+sops
+sorbet
+sorbets
+sorcerer
+sorcerers
+sorceress
+sorceresses
+sorcery
+sordid
+sore
+sorely
+soreness
+sorer
+sores
+sorest
+sororities
+sorority
+sorrier
+sorriest
+sorrow
+sorrowed
+sorrowful
+sorrowfully
+sorrowing
+sorrows
+sorry
+sort
+sorta
+sorted
+sorting
+sorts
+souffle
+souffles
+sought
+soul
+soulful
+souls
+sound
+sounded
+sounder
+soundest
+sounding
+soundly
+soundness
+soundproof
+soundproofed
+soundproofing
+soundproofs
+sounds
+soundtrack
+soundtracks
+soup
+souped
+souping
+soups
+sour
+source
+sourced
+sources
+sourcing
+sourdough
+sourdoughs
+soured
+sourer
+sourest
+souring
+sourly
+sourness
+sours
+south
+southbound
+southeast
+southeasterly
+southeastern
+southeastward
+southerlies
+southerly
+southern
+southerner
+southerners
+southerns
+southpaw
+southpaws
+southward
+southwest
+southwesterly
+southwestern
+southwestward
+souvenir
+souvenirs
+sovereign
+sovereigns
+sovereignty
+sow
+sowed
+sowing
+sown
+sows
+soybean
+soybeans
+spa
+space
+spacecraft
+spacecrafts
+spaced
+spaces
+spaceship
+spaceships
+spacey
+spacial
+spacier
+spaciest
+spacing
+spacious
+spaciousness
+spade
+spaded
+spades
+spading
+spaghetti
+span
+spangle
+spangled
+spangles
+spangling
+spaniel
+spaniels
+spank
+spanked
+spanking
+spankings
+spanks
+spanned
+spanner
+spanners
+spanning
+spans
+spar
+spare
+spared
+sparer
+spares
+sparest
+sparing
+sparingly
+spark
+sparked
+sparking
+sparkle
+sparkled
+sparkler
+sparklers
+sparkles
+sparkling
+sparks
+sparred
+sparring
+sparrow
+sparrows
+spars
+sparse
+sparsely
+sparseness
+sparser
+sparsest
+spas
+spasm
+spasmodic
+spasms
+spastic
+spastics
+spat
+spate
+spates
+spatial
+spats
+spatted
+spatter
+spattered
+spattering
+spatters
+spatting
+spatula
+spatulas
+spawn
+spawned
+spawning
+spawns
+spay
+spayed
+spaying
+spays
+speak
+speaker
+speakers
+speaking
+speaks
+spear
+speared
+spearhead
+spearheaded
+spearheading
+spearheads
+spearing
+spearmint
+spears
+special
+specialist
+specialists
+specialization
+specializations
+specialize
+specialized
+specializes
+specializing
+specially
+specials
+specialties
+specialty
+species
+specific
+specifically
+specification
+specifications
+specifics
+specified
+specifier
+specifies
+specify
+specifying
+specimen
+specimens
+specious
+speck
+specked
+specking
+speckle
+speckled
+speckles
+speckling
+specks
+spectacle
+spectacles
+spectacular
+spectacularly
+spectaculars
+spectator
+spectators
+specter
+specters
+spectra
+spectrum
+speculate
+speculated
+speculates
+speculating
+speculation
+speculations
+speculative
+speculator
+speculators
+sped
+speech
+speeches
+speechless
+speed
+speedboat
+speedboats
+speedier
+speediest
+speedily
+speeding
+speedometer
+speedometers
+speeds
+speedway
+speedways
+speedy
+spell
+spellbind
+spellbinding
+spellbinds
+spellbound
+spelled
+speller
+spelling
+spellings
+spells
+spend
+spending
+spends
+spendthrift
+spendthrifts
+spent
+sperm
+sperms
+spew
+spewed
+spewing
+spews
+sphere
+spheres
+spherical
+sphinx
+sphinxes
+spice
+spiced
+spices
+spicier
+spiciest
+spicing
+spicy
+spider
+spiders
+spied
+spiel
+spieled
+spieling
+spiels
+spies
+spiffier
+spiffiest
+spiffy
+spigot
+spigots
+spike
+spiked
+spikes
+spiking
+spill
+spilled
+spilling
+spills
+spin
+spinach
+spinal
+spinals
+spindlier
+spindliest
+spindly
+spine
+spineless
+spines
+spinning
+spins
+spinster
+spinsters
+spiral
+spiraled
+spiraling
+spirals
+spire
+spires
+spirit
+spirited
+spiriting
+spirits
+spiritual
+spiritually
+spirituals
+spit
+spite
+spited
+spiteful
+spitefuller
+spitefullest
+spites
+spiting
+spits
+spitted
+spitting
+spittle
+splash
+splashed
+splashes
+splashier
+splashiest
+splashing
+splashy
+splat
+splats
+splatted
+splatter
+splattered
+splattering
+splatters
+splatting
+splay
+splayed
+splaying
+splays
+spleen
+spleens
+splendid
+splendider
+splendidest
+splendidly
+splendor
+splice
+spliced
+splices
+splicing
+splint
+splinted
+splinter
+splintered
+splintering
+splinters
+splinting
+splints
+split
+splits
+splitting
+splittings
+splurge
+splurged
+splurges
+splurging
+spoil
+spoiled
+spoiling
+spoils
+spoilsport
+spoilsports
+spoke
+spoken
+spokes
+spokesman
+spokesmen
+spokespeople
+spokesperson
+spokespersons
+spokeswoman
+spokeswomen
+sponge
+sponged
+sponges
+spongier
+spongiest
+sponging
+spongy
+sponsor
+sponsored
+sponsoring
+sponsors
+sponsorship
+spontaneity
+spontaneous
+spontaneously
+spoof
+spoofed
+spoofing
+spoofs
+spook
+spooked
+spookier
+spookiest
+spooking
+spooks
+spooky
+spool
+spooled
+spooling
+spools
+spoon
+spooned
+spoonful
+spoonfuls
+spooning
+spoons
+sporadic
+sporadically
+spore
+spores
+sporran
+sport
+sported
+sportier
+sportiest
+sporting
+sports
+sportscast
+sportscasting
+sportscasts
+sportsman
+sportsmanship
+sportsmen
+sportswear
+sporty
+spot
+spotless
+spotlight
+spotlighted
+spotlighting
+spotlights
+spots
+spotted
+spottier
+spottiest
+spotting
+spotty
+spouse
+spouses
+spout
+spouted
+spouting
+spouts
+sprain
+sprained
+spraining
+sprains
+sprang
+sprawl
+sprawled
+sprawling
+sprawls
+spray
+sprayed
+spraying
+sprays
+spread
+spreading
+spreads
+spreadsheet
+spreadsheets
+spree
+spreed
+spreeing
+sprees
+sprier
+spriest
+sprig
+sprigs
+spring
+springboard
+springboards
+springier
+springiest
+springing
+springs
+springtime
+springy
+sprinkle
+sprinkled
+sprinkler
+sprinklers
+sprinkles
+sprinkling
+sprinklings
+sprint
+sprinted
+sprinter
+sprinters
+sprinting
+sprints
+sprout
+sprouted
+sprouting
+sprouts
+spruce
+spruced
+sprucer
+spruces
+sprucest
+sprucing
+sprung
+spry
+spud
+spuds
+spun
+spunk
+spunkier
+spunkiest
+spunky
+spur
+spurious
+spurn
+spurned
+spurning
+spurns
+spurred
+spurring
+spurs
+spurt
+spurted
+spurting
+spurts
+sputter
+sputtered
+sputtering
+sputters
+spy
+spying
+squabble
+squabbled
+squabbles
+squabbling
+squad
+squadron
+squadrons
+squads
+squalid
+squalider
+squalidest
+squall
+squalled
+squalling
+squalls
+squalor
+squander
+squandered
+squandering
+squanders
+square
+squared
+squarely
+squarer
+squares
+squarest
+squaring
+squash
+squashed
+squashes
+squashing
+squat
+squats
+squatted
+squatter
+squatters
+squattest
+squatting
+squawk
+squawked
+squawking
+squawks
+squeak
+squeaked
+squeakier
+squeakiest
+squeaking
+squeaks
+squeaky
+squeal
+squealed
+squealing
+squeals
+squeamish
+squeeze
+squeezed
+squeezes
+squeezing
+squelch
+squelched
+squelches
+squelching
+squid
+squids
+squint
+squinted
+squinter
+squintest
+squinting
+squints
+squire
+squired
+squires
+squiring
+squirm
+squirmed
+squirming
+squirms
+squirrel
+squirreled
+squirreling
+squirrels
+squirt
+squirted
+squirting
+squirts
+stab
+stabbed
+stabbing
+stabbings
+stability
+stabilize
+stabilized
+stabilizes
+stabilizing
+stable
+stabled
+stabler
+stables
+stablest
+stabling
+stabs
+stack
+stacked
+stacking
+stacks
+stadium
+stadiums
+staff
+staffed
+staffer
+staffers
+staffing
+staffs
+stag
+stage
+stagecoach
+stagecoaches
+staged
+stages
+stagger
+staggered
+staggering
+staggeringly
+staggers
+staging
+stagings
+stagnant
+stagnate
+stagnated
+stagnates
+stagnating
+stagnation
+stags
+staid
+staider
+staidest
+stain
+stained
+staining
+stains
+stair
+staircase
+staircases
+stairs
+stairway
+stairways
+stake
+staked
+stakeout
+stakeouts
+stakes
+staking
+stale
+staled
+stalemate
+stalemated
+stalemates
+stalemating
+staler
+stales
+stalest
+staling
+stalk
+stalked
+stalker
+stalkers
+stalking
+stalkings
+stalks
+stall
+stalled
+stalling
+stallion
+stallions
+stalls
+stalwart
+stalwarts
+stamina
+stammer
+stammered
+stammering
+stammers
+stamp
+stamped
+stampede
+stampeded
+stampedes
+stampeding
+stamping
+stamps
+stance
+stances
+stanch
+stanched
+stancher
+stanches
+stanchest
+stanching
+stand
+standard
+standardization
+standardize
+standardized
+standardizes
+standardizing
+standards
+standby
+standbys
+standing
+standings
+standoff
+standoffs
+standout
+standouts
+standpoint
+standpoints
+stands
+standstill
+standstills
+stank
+stanza
+stanzas
+staple
+stapled
+stapler
+staplers
+staples
+stapling
+star
+starboard
+starch
+starched
+starches
+starchier
+starchiest
+starching
+starchy
+stardom
+stare
+stared
+stares
+starfish
+starfishes
+staring
+stark
+starker
+starkest
+starlight
+starred
+starrier
+starriest
+starring
+starry
+stars
+start
+started
+starter
+starters
+starting
+startle
+startled
+startles
+startling
+startlingly
+starts
+starvation
+starve
+starved
+starves
+starving
+starvings
+stash
+stashed
+stashes
+stashing
+state
+stated
+statelier
+stateliest
+stately
+statement
+statements
+stater
+states
+statesman
+statesmanlike
+statesmanship
+statesmen
+statewide
+static
+stating
+station
+stationary
+stationed
+stationery
+stationing
+stations
+statistic
+statistical
+statistically
+statistician
+statisticians
+statistics
+stats
+statue
+statues
+stature
+statures
+status
+statuses
+statute
+statutes
+statutory
+staunch
+staunched
+stauncher
+staunches
+staunchest
+staunching
+staunchly
+stave
+staved
+staves
+staving
+stay
+stayed
+staying
+stays
+steadfast
+steadied
+steadier
+steadies
+steadiest
+steadily
+steady
+steadying
+steak
+steaks
+steal
+stealing
+steals
+stealth
+stealthier
+stealthiest
+stealthily
+stealthy
+steam
+steamboat
+steamboats
+steamed
+steamier
+steamiest
+steaming
+steamroll
+steamrolled
+steamroller
+steamrollered
+steamrollering
+steamrollers
+steamrolling
+steamrolls
+steams
+steamy
+steel
+steeled
+steeling
+steels
+steep
+steeped
+steeper
+steepest
+steeping
+steeple
+steeples
+steeply
+steepness
+steeps
+steer
+steered
+steering
+steers
+stellar
+stem
+stemmed
+stemming
+stems
+stench
+stenches
+stencil
+stenciled
+stenciling
+stencils
+stenographer
+stenographers
+stenography
+step
+stepbrother
+stepbrothers
+stepchild
+stepchildren
+stepdaughter
+stepdaughters
+stepfather
+stepfathers
+stepladder
+stepladders
+stepmother
+stepmothers
+stepped
+stepping
+steps
+stepsister
+stepsisters
+stepson
+stepsons
+stereo
+stereos
+stereotype
+stereotyped
+stereotypes
+stereotypical
+stereotyping
+sterile
+sterility
+sterilization
+sterilize
+sterilized
+sterilizes
+sterilizing
+sterling
+stern
+sterner
+sternest
+sternly
+sternness
+sterns
+steroid
+steroids
+stethoscope
+stethoscopes
+stew
+steward
+stewarded
+stewardess
+stewardesses
+stewarding
+stewards
+stewed
+stewing
+stews
+stick
+sticker
+stickers
+stickier
+stickies
+stickiest
+sticking
+stickler
+sticklers
+sticks
+sticky
+stiff
+stiffed
+stiffen
+stiffened
+stiffening
+stiffens
+stiffer
+stiffest
+stiffing
+stiffly
+stiffness
+stiffs
+stifle
+stifled
+stifles
+stifling
+stiflings
+stigma
+stigmas
+stigmata
+stigmatize
+stigmatized
+stigmatizes
+stigmatizing
+still
+stillbirth
+stillbirths
+stillborn
+stilled
+stiller
+stillest
+stilling
+stillness
+stills
+stilt
+stilted
+stilts
+stimulant
+stimulants
+stimulate
+stimulated
+stimulates
+stimulating
+stimulation
+stimuli
+stimulus
+sting
+stinger
+stingers
+stingier
+stingiest
+stinginess
+stinging
+stings
+stingy
+stink
+stinker
+stinkers
+stinking
+stinks
+stint
+stinted
+stinting
+stints
+stipend
+stipends
+stipulate
+stipulated
+stipulates
+stipulating
+stipulation
+stipulations
+stir
+stirred
+stirring
+stirrup
+stirrups
+stirs
+stitch
+stitched
+stitches
+stitching
+stock
+stockade
+stockaded
+stockades
+stockading
+stockbroker
+stockbrokers
+stocked
+stockholder
+stockholders
+stockier
+stockiest
+stocking
+stockings
+stockpile
+stockpiled
+stockpiles
+stockpiling
+stocks
+stocky
+stockyard
+stockyards
+stodgier
+stodgiest
+stodgy
+stoic
+stoical
+stoicism
+stoics
+stoke
+stoked
+stokes
+stoking
+stole
+stolen
+stoles
+stolid
+stolider
+stolidest
+stolidly
+stomach
+stomachache
+stomachaches
+stomached
+stomaching
+stomachs
+stomp
+stomped
+stomping
+stomps
+stone
+stoned
+stones
+stonewall
+stonewalled
+stonewalling
+stonewalls
+stonier
+stoniest
+stoning
+stony
+stood
+stool
+stools
+stoop
+stooped
+stooping
+stoops
+stop
+stopgap
+stopgaps
+stoplight
+stoplights
+stopover
+stopovers
+stoppage
+stoppages
+stopped
+stopper
+stoppered
+stoppering
+stoppers
+stopping
+stops
+stopwatch
+stopwatches
+storage
+store
+stored
+storehouse
+storehouses
+storekeeper
+storekeepers
+storeroom
+storerooms
+stores
+stories
+storing
+stork
+storks
+storm
+stormed
+stormier
+stormiest
+storming
+storms
+stormy
+story
+storyteller
+storytellers
+stout
+stouter
+stoutest
+stove
+stoves
+stow
+stowaway
+stowaways
+stowed
+stowing
+stows
+straddle
+straddled
+straddles
+straddling
+straggle
+straggled
+straggler
+stragglers
+straggles
+straggling
+straight
+straighten
+straightened
+straightening
+straightens
+straighter
+straightest
+straightforward
+straightforwardly
+straights
+strain
+strained
+strainer
+strainers
+straining
+strains
+strait
+straitjacket
+straitjacketed
+straitjacketing
+straitjackets
+straits
+strand
+stranded
+stranding
+strands
+strange
+strangely
+strangeness
+stranger
+strangers
+strangest
+strangle
+strangled
+stranglehold
+strangleholds
+strangles
+strangling
+strangulation
+strap
+strapless
+straplesses
+strapped
+strapping
+straps
+strata
+stratagem
+stratagems
+strategic
+strategically
+strategies
+strategy
+stratified
+stratifies
+stratify
+stratifying
+stratosphere
+stratospheres
+stratum
+straw
+strawberries
+strawberry
+strawed
+strawing
+straws
+stray
+strayed
+straying
+strays
+streak
+streaked
+streakier
+streakiest
+streaking
+streaks
+streaky
+stream
+streamed
+streamer
+streamers
+streaming
+streamline
+streamlined
+streamlines
+streamlining
+streams
+street
+streetcar
+streetcars
+streetlight
+streetlights
+streets
+strength
+strengthen
+strengthened
+strengthening
+strengthens
+strengths
+strenuous
+strenuously
+stress
+stressed
+stresses
+stressful
+stressing
+stretch
+stretched
+stretcher
+stretchers
+stretches
+stretching
+strew
+strewed
+strewing
+strewn
+strews
+stricken
+strict
+stricter
+strictest
+strictly
+strictness
+stridden
+stride
+strident
+strides
+striding
+strife
+strike
+striker
+strikers
+strikes
+striking
+strikingly
+strikings
+string
+stringent
+stringier
+stringiest
+stringing
+strings
+stringy
+strip
+stripe
+striped
+stripes
+striping
+stripped
+stripper
+strippers
+stripping
+strips
+striptease
+stripteased
+stripteases
+stripteasing
+strive
+striven
+strives
+striving
+strode
+stroke
+stroked
+strokes
+stroking
+stroll
+strolled
+stroller
+strollers
+strolling
+strolls
+strong
+stronger
+strongest
+stronghold
+strongholds
+strongly
+strove
+struck
+structural
+structuralist
+structure
+structured
+structures
+structuring
+struggle
+struggled
+struggles
+struggling
+strum
+strummed
+strumming
+strums
+strung
+strut
+struts
+strutted
+strutting
+stub
+stubbed
+stubbier
+stubbiest
+stubbing
+stubble
+stubborn
+stubborner
+stubbornest
+stubbornly
+stubbornness
+stubby
+stubs
+stuck
+stud
+studded
+studding
+student
+students
+studentship
+studied
+studies
+studio
+studios
+studious
+studs
+study
+studying
+stuff
+stuffed
+stuffier
+stuffiest
+stuffing
+stuffings
+stuffs
+stuffy
+stumble
+stumbled
+stumbles
+stumbling
+stump
+stumped
+stumping
+stumps
+stun
+stung
+stunk
+stunned
+stunning
+stuns
+stunt
+stunted
+stunting
+stunts
+stupefied
+stupefies
+stupefy
+stupefying
+stupendous
+stupid
+stupider
+stupidest
+stupidities
+stupidity
+stupidly
+stupids
+stupor
+stupors
+sturdier
+sturdiest
+sturdiness
+sturdy
+stutter
+stuttered
+stuttering
+stutters
+style
+styled
+styles
+styling
+stylish
+stylistic
+stylus
+stymie
+stymied
+stymieing
+stymies
+suave
+suaver
+suavest
+sub
+subbed
+subbing
+subcommittee
+subcommittees
+subconscious
+subconsciously
+subculture
+subcultures
+subdivide
+subdivided
+subdivides
+subdividing
+subdivision
+subdivisions
+subdue
+subdued
+subdues
+subduing
+subgroup
+subject
+subjected
+subjecting
+subjective
+subjectively
+subjects
+subjugate
+subjugated
+subjugates
+subjugating
+subjunctive
+subjunctives
+sublet
+sublets
+subletting
+sublime
+sublimed
+sublimer
+sublimes
+sublimest
+subliminal
+subliming
+submarine
+submarines
+submerge
+submerged
+submerges
+submerging
+submersion
+submission
+submissions
+submissive
+submit
+submits
+submitted
+submitting
+subnormal
+subordinate
+subordinated
+subordinates
+subordinating
+subordination
+subpoena
+subpoenaed
+subpoenaing
+subpoenas
+subprogram
+subroutine
+subroutines
+subs
+subscribe
+subscribed
+subscriber
+subscribers
+subscribes
+subscribing
+subscript
+subscription
+subscriptions
+subscripts
+subsection
+subsections
+subsequent
+subsequently
+subservience
+subservient
+subset
+subsets
+subside
+subsided
+subsides
+subsidiaries
+subsidiary
+subsidies
+subsiding
+subsidize
+subsidized
+subsidizes
+subsidizing
+subsidy
+subsist
+subsisted
+subsistence
+subsisting
+subsists
+substance
+substances
+substandard
+substantial
+substantially
+substantiate
+substantiated
+substantiates
+substantiating
+substitute
+substituted
+substitutes
+substituting
+substitution
+substitutions
+subsystem
+subterfuge
+subterfuges
+subterranean
+subtitle
+subtitles
+subtle
+subtler
+subtlest
+subtleties
+subtlety
+subtly
+subtract
+subtracted
+subtracting
+subtraction
+subtractions
+subtracts
+suburb
+suburban
+suburbans
+suburbia
+suburbs
+subversive
+subversives
+subvert
+subverted
+subverting
+subverts
+subway
+subways
+succeed
+succeeded
+succeeding
+succeeds
+success
+successes
+successful
+successfully
+succession
+successions
+successive
+successively
+successor
+successors
+succinct
+succincter
+succinctest
+succinctly
+succor
+succored
+succoring
+succors
+succulent
+succulents
+succumb
+succumbed
+succumbing
+succumbs
+such
+suck
+sucked
+sucker
+suckered
+suckering
+suckers
+sucking
+suckle
+suckled
+suckles
+suckling
+sucks
+suction
+suctioned
+suctioning
+suctions
+sudden
+suddenly
+suddenness
+suds
+sue
+sued
+suede
+sues
+suffer
+suffered
+sufferer
+sufferers
+suffering
+sufferings
+suffers
+suffice
+sufficed
+suffices
+sufficiency
+sufficient
+sufficiently
+sufficing
+suffix
+suffixed
+suffixes
+suffixing
+suffocate
+suffocated
+suffocates
+suffocating
+suffocation
+suffrage
+sugar
+sugared
+sugarier
+sugariest
+sugaring
+sugars
+sugary
+suggest
+suggested
+suggester
+suggestible
+suggesting
+suggestion
+suggestions
+suggestive
+suggestively
+suggests
+suicidal
+suicide
+suicides
+suing
+suit
+suitability
+suitable
+suitably
+suitcase
+suitcases
+suite
+suited
+suites
+suiting
+suitor
+suitors
+suits
+sulfur
+sulk
+sulked
+sulkier
+sulkies
+sulkiest
+sulking
+sulks
+sulky
+sullen
+sullener
+sullenest
+sullenly
+sultan
+sultans
+sultrier
+sultriest
+sultry
+sum
+summaries
+summarily
+summarize
+summarized
+summarizes
+summarizing
+summary
+summed
+summer
+summered
+summering
+summers
+summertime
+summery
+summing
+summit
+summits
+summon
+summoned
+summoning
+summons
+summonsed
+summonses
+summonsing
+sumptuous
+sums
+sun
+sunbathe
+sunbathed
+sunbathes
+sunbathing
+sunblock
+sunblocks
+sunburn
+sunburned
+sunburning
+sunburns
+sundae
+sundaes
+sundial
+sundials
+sundown
+sundowns
+sundries
+sundry
+sunflower
+sunflowers
+sung
+sunglasses
+sunk
+sunken
+sunlight
+sunlit
+sunned
+sunnier
+sunniest
+sunning
+sunny
+sunrise
+sunrises
+suns
+sunscreen
+sunscreens
+sunset
+sunsets
+sunshine
+suntan
+suntanned
+suntanning
+suntans
+sunup
+sup
+super
+superb
+superber
+superbest
+superbly
+supercomputer
+supercomputers
+superficial
+superficially
+superfluous
+superhighway
+superhighways
+superhuman
+superimpose
+superimposed
+superimposes
+superimposing
+superintendent
+superintendents
+superior
+superiority
+superiors
+superlative
+superlatives
+supermarket
+supermarkets
+supernatural
+supernaturals
+superpower
+superpowers
+supers
+superscript
+superscripts
+supersede
+superseded
+supersedes
+superseding
+supersonic
+superstar
+superstars
+superstition
+superstitions
+superstitious
+superstructure
+superstructures
+supervise
+supervised
+supervises
+supervising
+supervision
+supervisions
+supervisor
+supervisors
+supervisory
+supper
+suppers
+supplant
+supplanted
+supplanting
+supplants
+supple
+supplement
+supplemental
+supplementary
+supplemented
+supplementing
+supplements
+suppler
+supplest
+supplied
+supplier
+suppliers
+supplies
+supply
+supplying
+support
+supported
+supporter
+supporters
+supporting
+supportive
+supports
+suppose
+supposed
+supposedly
+supposes
+supposing
+supposition
+suppositions
+suppress
+suppressed
+suppresses
+suppressing
+suppression
+supremacy
+supreme
+supremely
+surcharge
+surcharged
+surcharges
+surcharging
+sure
+surefire
+surely
+surer
+surest
+surf
+surface
+surfaced
+surfaces
+surfacing
+surfboard
+surfboarded
+surfboarding
+surfboards
+surfed
+surfer
+surfers
+surfing
+surfs
+surge
+surged
+surgeon
+surgeons
+surgeries
+surgery
+surges
+surgical
+surgically
+surging
+surlier
+surliest
+surly
+surmise
+surmised
+surmises
+surmising
+surmount
+surmounted
+surmounting
+surmounts
+surname
+surnames
+surpass
+surpassed
+surpasses
+surpassing
+surplus
+surpluses
+surplussed
+surplussing
+surprise
+surprised
+surprises
+surprising
+surprisingly
+surprisings
+surreal
+surrealistic
+surrender
+surrendered
+surrendering
+surrenders
+surreptitious
+surrogate
+surrogates
+surround
+surrounded
+surrounding
+surroundings
+surrounds
+surveillance
+survey
+surveyed
+surveying
+surveyor
+surveyors
+surveys
+survival
+survivals
+survive
+survived
+survives
+surviving
+survivor
+survivors
+susceptible
+suspect
+suspected
+suspecting
+suspects
+suspend
+suspended
+suspender
+suspenders
+suspending
+suspends
+suspense
+suspension
+suspensions
+suspicion
+suspicions
+suspicious
+suspiciously
+sustain
+sustainable
+sustained
+sustaining
+sustains
+sustenance
+swab
+swabbed
+swabbing
+swabs
+swagger
+swaggered
+swaggerer
+swaggering
+swaggers
+swallow
+swallowed
+swallowing
+swallows
+swam
+swamp
+swamped
+swampier
+swampiest
+swamping
+swamps
+swampy
+swan
+swank
+swanked
+swanker
+swankest
+swanking
+swanks
+swans
+swap
+swapped
+swapping
+swaps
+swarm
+swarmed
+swarming
+swarms
+swarthier
+swarthiest
+swarthy
+swat
+swatch
+swatches
+swathe
+swathed
+swathes
+swathing
+swats
+swatted
+swatting
+sway
+swayed
+swaying
+sways
+swear
+swearing
+swears
+sweat
+sweater
+sweaters
+sweatier
+sweatiest
+sweating
+sweatpants
+sweats
+sweatshirt
+sweatshirts
+sweatshop
+sweatshops
+sweaty
+sweep
+sweeper
+sweepers
+sweeping
+sweepings
+sweeps
+sweepstakes
+sweet
+sweeten
+sweetened
+sweetener
+sweeteners
+sweetening
+sweetens
+sweeter
+sweetest
+sweetheart
+sweethearts
+sweetie
+sweeties
+sweetly
+sweetness
+sweets
+swell
+swelled
+sweller
+swellest
+swelling
+swellings
+swells
+swelter
+sweltered
+sweltering
+swelters
+swept
+swerve
+swerved
+swerves
+swerving
+swift
+swifter
+swiftest
+swiftly
+swifts
+swig
+swigged
+swigging
+swigs
+swill
+swilled
+swilling
+swills
+swim
+swimmer
+swimmers
+swimming
+swims
+swimsuit
+swimsuits
+swindle
+swindled
+swindler
+swindlers
+swindles
+swindling
+swine
+swines
+swing
+swinging
+swings
+swipe
+swiped
+swipes
+swiping
+swirl
+swirled
+swirling
+swirls
+swish
+swished
+swisher
+swishes
+swishest
+swishing
+switch
+switchable
+switchboard
+switchboards
+switched
+switcher
+switches
+switching
+swivel
+swiveled
+swiveling
+swivels
+swollen
+swoon
+swooned
+swooning
+swoons
+swoop
+swooped
+swooping
+swoops
+sword
+swordfish
+swordfishes
+swords
+swore
+sworn
+swum
+swung
+sycamore
+sycamores
+sycophant
+sycophants
+syllable
+syllables
+syllabus
+syllabuses
+symbol
+symbolic
+symbolically
+symbolism
+symbolize
+symbolized
+symbolizes
+symbolizing
+symbols
+symmetric
+symmetrical
+symmetrically
+symmetry
+sympathetic
+sympathetically
+sympathies
+sympathize
+sympathized
+sympathizer
+sympathizers
+sympathizes
+sympathizing
+sympathy
+symphonic
+symphonies
+symphony
+symptom
+symptomatic
+symptoms
+synagogue
+synagogues
+synapse
+synapses
+sync
+synced
+synchronization
+synchronize
+synchronized
+synchronizes
+synchronizing
+synchronous
+syncing
+syncs
+syndicate
+syndicated
+syndicates
+syndicating
+syndication
+syndrome
+syndromes
+synod
+synods
+synonym
+synonymous
+synonyms
+synopses
+synopsis
+syntactic
+syntactically
+syntax
+syntheses
+synthesis
+synthesize
+synthesized
+synthesizer
+synthesizers
+synthesizes
+synthesizing
+synthetic
+synthetically
+synthetics
+syphilis
+syringe
+syringed
+syringes
+syringing
+syrup
+syrups
+system
+systematic
+systematically
+systems
+tab
+tabbed
+tabbies
+tabbing
+tabby
+tabernacle
+tabernacles
+table
+tablecloth
+tablecloths
+tabled
+tables
+tablespoon
+tablespoonful
+tablespoonfuls
+tablespoons
+tablet
+tablets
+tabling
+tabloid
+tabloids
+taboo
+tabooed
+tabooing
+taboos
+tabs
+tabulate
+tabulated
+tabulates
+tabulating
+tabulation
+tacit
+tacitly
+taciturn
+tack
+tacked
+tackier
+tackiest
+tackiness
+tacking
+tackle
+tackled
+tackles
+tackling
+tacks
+tacky
+taco
+tacos
+tact
+tactful
+tactfully
+tactic
+tactical
+tactically
+tactics
+tactless
+tactlessly
+tad
+tadpole
+tadpoles
+tads
+taffies
+taffy
+tag
+tagged
+tagging
+tags
+tail
+tailed
+tailgate
+tailgated
+tailgates
+tailgating
+tailing
+taillight
+taillights
+tailor
+tailored
+tailoring
+tailors
+tailpipe
+tailpipes
+tails
+tailspin
+tailspins
+taint
+tainted
+tainting
+taints
+take
+taken
+takeoff
+takeoffs
+takeout
+takeouts
+takeover
+takeovers
+taker
+takers
+takes
+taking
+takings
+talc
+tale
+talent
+talented
+talents
+tales
+talisman
+talismans
+talk
+talkative
+talked
+talker
+talkers
+talking
+talks
+tall
+taller
+tallest
+tallied
+tallies
+tallow
+tally
+tallying
+talon
+talons
+tambourine
+tambourines
+tame
+tamed
+tamely
+tameness
+tamer
+tames
+tamest
+taming
+tamper
+tampered
+tampering
+tampers
+tampon
+tampons
+tan
+tandem
+tandems
+tang
+tangent
+tangential
+tangents
+tangerine
+tangerines
+tangible
+tangibles
+tangier
+tangiest
+tangle
+tangled
+tangles
+tangling
+tango
+tangoed
+tangoing
+tangos
+tangs
+tangy
+tank
+tankard
+tankards
+tanked
+tanker
+tankers
+tanking
+tanks
+tanned
+tanner
+tannest
+tanning
+tans
+tantalize
+tantalized
+tantalizes
+tantalizing
+tantalizingly
+tantamount
+tantrum
+tantrums
+tap
+tape
+taped
+taper
+tapered
+tapering
+tapers
+tapes
+tapestries
+tapestry
+tapeworm
+tapeworms
+taping
+tapped
+tapping
+taps
+tar
+tarantula
+tarantulas
+tardier
+tardiest
+tardiness
+tardy
+target
+targeted
+targeting
+targets
+tariff
+tariffs
+tarmac
+tarmacked
+tarmacking
+tarmacs
+tarnish
+tarnished
+tarnishes
+tarnishing
+tarot
+tarots
+tarp
+tarpaulin
+tarpaulins
+tarps
+tarred
+tarried
+tarrier
+tarries
+tarriest
+tarring
+tarry
+tarrying
+tars
+tart
+tartan
+tartans
+tartar
+tartars
+tarter
+tartest
+tarts
+task
+tasked
+tasking
+tasks
+tassel
+tasseled
+tasseling
+tassels
+taste
+tasted
+tasteful
+tastefully
+tasteless
+taster
+tasters
+tastes
+tastier
+tastiest
+tasting
+tasty
+tatter
+tattered
+tattering
+tatters
+tattle
+tattled
+tattles
+tattletale
+tattletales
+tattling
+tattoo
+tattooed
+tattooing
+tattoos
+tatty
+taught
+taunt
+taunted
+taunting
+taunts
+taut
+tauter
+tautest
+tautly
+tautology
+tavern
+taverns
+tawdrier
+tawdriest
+tawdry
+tawnier
+tawniest
+tawny
+tax
+taxable
+taxation
+taxed
+taxes
+taxi
+taxicab
+taxicabs
+taxidermy
+taxied
+taxiing
+taxing
+taxis
+taxpayer
+taxpayers
+tea
+teach
+teacher
+teachers
+teaches
+teaching
+teachings
+teacup
+teacups
+teak
+teakettle
+teakettles
+teaks
+team
+teamed
+teaming
+teammate
+teammates
+teams
+teamster
+teamsters
+teamwork
+teapot
+teapots
+tear
+teardrop
+teardrops
+teared
+tearful
+teargas
+teargases
+teargassed
+teargassing
+tearing
+tears
+teas
+tease
+teased
+teases
+teasing
+teaspoon
+teaspoonful
+teaspoonfuls
+teaspoons
+teat
+teats
+technical
+technicalities
+technicality
+technically
+technician
+technicians
+technique
+techniques
+technological
+technologically
+technologies
+technologist
+technologists
+technology
+tedious
+tediously
+tedium
+tee
+teed
+teeing
+teem
+teemed
+teeming
+teems
+teen
+teenage
+teenager
+teenagers
+teens
+tees
+teeter
+teetered
+teetering
+teeters
+teeth
+teethe
+teethed
+teethes
+teething
+teetotal
+teetotaler
+teetotalers
+telecommunications
+telecommute
+telecommuted
+telecommuter
+telecommuters
+telecommutes
+telecommuting
+telegram
+telegrams
+telegraph
+telegraphed
+telegraphing
+telegraphs
+telepathic
+telepathy
+telephone
+telephoned
+telephones
+telephoning
+telescope
+telescoped
+telescopes
+telescopic
+telescoping
+telethon
+telethons
+teletype
+televise
+televised
+televises
+televising
+television
+televisions
+tell
+teller
+tellers
+telling
+tells
+telltale
+telltales
+temp
+temped
+temper
+temperament
+temperamental
+temperaments
+temperance
+temperate
+temperature
+temperatures
+tempered
+tempering
+tempers
+tempest
+tempests
+tempestuous
+temping
+template
+templates
+temple
+temples
+tempo
+temporal
+temporaries
+temporarily
+temporary
+tempos
+temps
+tempt
+temptation
+temptations
+tempted
+tempting
+tempts
+ten
+tenable
+tenacious
+tenacity
+tenancies
+tenancy
+tenant
+tenanted
+tenanting
+tenants
+tend
+tended
+tendencies
+tendency
+tender
+tendered
+tenderer
+tenderest
+tenderhearted
+tendering
+tenderize
+tenderized
+tenderizes
+tenderizing
+tenderly
+tenderness
+tenders
+tending
+tendon
+tendons
+tendril
+tendrils
+tends
+tenement
+tenements
+tenet
+tenets
+tennis
+tenor
+tenors
+tens
+tense
+tensed
+tenser
+tenses
+tensest
+tensing
+tension
+tensions
+tensors
+tent
+tentacle
+tentacles
+tentative
+tentatively
+tented
+tenth
+tenths
+tenting
+tents
+tenuous
+tenure
+tenured
+tenures
+tenuring
+tepee
+tepees
+tepid
+tequila
+tequilas
+term
+termed
+terminal
+terminally
+terminals
+terminate
+terminated
+terminates
+terminating
+termination
+terminations
+terminator
+terminators
+terming
+termini
+terminologies
+terminology
+terminus
+termite
+termites
+termly
+terms
+terrace
+terraced
+terraces
+terracing
+terrain
+terrains
+terrestrial
+terrestrials
+terrible
+terribly
+terrier
+terriers
+terrific
+terrified
+terrifies
+terrify
+terrifying
+territorial
+territorials
+territories
+territory
+terror
+terrorism
+terrorist
+terrorists
+terrorize
+terrorized
+terrorizes
+terrorizing
+terrors
+terse
+tersely
+terseness
+terser
+tersest
+test
+testable
+testament
+testaments
+tested
+tester
+testers
+testes
+testicle
+testicles
+testier
+testiest
+testified
+testifies
+testify
+testifying
+testimonial
+testimonials
+testimonies
+testimony
+testing
+testis
+tests
+testy
+tetanus
+tether
+tethered
+tethering
+tethers
+text
+textbook
+textbooks
+textile
+textiles
+texts
+textual
+textually
+texture
+textured
+textures
+texturing
+than
+thank
+thanked
+thankful
+thankfully
+thanking
+thankless
+thanks
+that
+thatch
+thatched
+thatcher
+thatches
+thatching
+thaw
+thawed
+thawing
+thaws
+the
+theater
+theaters
+theatrical
+thee
+theft
+thefts
+their
+theirs
+theist
+theists
+them
+thematic
+theme
+themes
+themselves
+then
+thence
+theologian
+theologians
+theological
+theologies
+theology
+theorem
+theorems
+theoretic
+theoretical
+theoretically
+theoretician
+theoreticians
+theories
+theorist
+theorists
+theorize
+theorized
+theorizes
+theorizing
+theory
+therapeutic
+therapies
+therapist
+therapists
+therapy
+there
+thereabout
+thereabouts
+thereafter
+thereby
+therefore
+therein
+thereof
+thereon
+thereupon
+thermal
+thermals
+thermodynamics
+thermometer
+thermometers
+thermonuclear
+thermostat
+thermostats
+thesauri
+thesaurus
+thesauruses
+these
+theses
+thesis
+theta
+they
+thick
+thicken
+thickened
+thickening
+thickens
+thicker
+thickest
+thicket
+thickets
+thickly
+thickness
+thicknesses
+thief
+thieve
+thieves
+thigh
+thighs
+thimble
+thimbles
+thin
+thing
+thingamajig
+thingamajigs
+things
+think
+thinker
+thinkers
+thinking
+thinks
+thinly
+thinned
+thinner
+thinnest
+thinning
+thins
+third
+thirds
+thirst
+thirsted
+thirstier
+thirstiest
+thirstily
+thirsting
+thirsts
+thirsty
+thirteen
+thirteens
+thirteenth
+thirteenths
+thirties
+thirtieth
+thirtieths
+thirty
+this
+thistle
+thistles
+thong
+thongs
+thorn
+thornier
+thorniest
+thorns
+thorny
+thorough
+thoroughbred
+thoroughbreds
+thorougher
+thoroughest
+thoroughfare
+thoroughfares
+thoroughly
+thoroughness
+those
+thou
+though
+thought
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughts
+thous
+thousand
+thousands
+thousandth
+thousandths
+thrash
+thrashed
+thrashes
+thrashing
+thrashings
+thread
+threadbare
+threaded
+threading
+threads
+threat
+threaten
+threatened
+threatening
+threateningly
+threatens
+threats
+three
+threes
+thresh
+threshed
+thresher
+threshers
+threshes
+threshing
+threshold
+thresholds
+threw
+thrice
+thrift
+thriftier
+thriftiest
+thrifts
+thrifty
+thrill
+thrilled
+thriller
+thrillers
+thrilling
+thrills
+thrive
+thrived
+thrives
+thriving
+throat
+throatier
+throatiest
+throats
+throaty
+throb
+throbbed
+throbbing
+throbs
+throne
+thrones
+throng
+thronged
+thronging
+throngs
+throttle
+throttled
+throttles
+throttling
+through
+throughout
+throughput
+throw
+throwaway
+throwaways
+throwback
+throwbacks
+throwing
+thrown
+throws
+thrust
+thrusting
+thrusts
+thud
+thudded
+thudding
+thuds
+thug
+thugs
+thumb
+thumbed
+thumbing
+thumbnail
+thumbnails
+thumbs
+thumbtack
+thumbtacks
+thump
+thumped
+thumping
+thumps
+thunder
+thunderbolt
+thunderbolts
+thundered
+thundering
+thunderous
+thunders
+thunderstorm
+thunderstorms
+thunderstruck
+thus
+thwart
+thwarted
+thwarting
+thwarts
+thy
+thyme
+thyroid
+thyroids
+tiara
+tiaras
+tic
+tick
+ticked
+ticket
+ticketed
+ticketing
+tickets
+ticking
+tickle
+tickled
+tickles
+tickling
+ticklish
+ticks
+tics
+tidal
+tidbit
+tidbits
+tide
+tided
+tides
+tidied
+tidier
+tidies
+tidiest
+tiding
+tidy
+tidying
+tie
+tiebreaker
+tiebreakers
+tied
+tier
+tiers
+ties
+tiff
+tiffed
+tiffing
+tiffs
+tiger
+tigers
+tight
+tighten
+tightened
+tightening
+tightens
+tighter
+tightest
+tightfisted
+tightly
+tightness
+tightrope
+tightropes
+tights
+tightwad
+tightwads
+tilde
+tile
+tiled
+tiles
+tiling
+till
+tilled
+tilling
+tills
+tilt
+tilted
+tilting
+tilts
+timber
+timbered
+timbering
+timbers
+time
+timed
+timekeeper
+timekeepers
+timeless
+timelier
+timeliest
+timely
+timer
+timers
+times
+timescale
+timescales
+timetable
+timetables
+timezone
+timid
+timider
+timidest
+timidity
+timidly
+timing
+timings
+tin
+tinder
+tinderbox
+tinderboxes
+tinfoil
+ting
+tinge
+tinged
+tingeing
+tinges
+tinging
+tingle
+tingled
+tingles
+tingling
+tinglings
+tings
+tinier
+tiniest
+tinker
+tinkered
+tinkering
+tinkers
+tinkle
+tinkled
+tinkles
+tinkling
+tinned
+tinnier
+tinniest
+tinning
+tinny
+tins
+tinsel
+tinseled
+tinseling
+tinsels
+tint
+tinted
+tinting
+tints
+tiny
+tip
+tipped
+tipping
+tips
+tipsier
+tipsiest
+tipsy
+tiptoe
+tiptoed
+tiptoeing
+tiptoes
+tirade
+tirades
+tire
+tired
+tireder
+tiredest
+tiredness
+tireless
+tires
+tiresome
+tiring
+tissue
+tissues
+tit
+titillate
+titillated
+titillates
+titillating
+title
+titled
+titles
+titling
+tits
+titter
+tittered
+tittering
+titters
+tizzies
+tizzy
+to
+toad
+toads
+toadstool
+toadstools
+toast
+toasted
+toaster
+toasters
+toastier
+toastiest
+toasting
+toasts
+toasty
+tobacco
+tobacconist
+tobacconists
+tobaccos
+toboggan
+tobogganed
+tobogganing
+toboggans
+today
+toddle
+toddled
+toddler
+toddlers
+toddles
+toddling
+toe
+toed
+toehold
+toeholds
+toeing
+toenail
+toenails
+toes
+toffee
+toffees
+tofu
+tog
+toga
+togas
+together
+togetherness
+toggle
+toggled
+toggles
+toggling
+togs
+toil
+toiled
+toilet
+toileted
+toileting
+toiletries
+toiletry
+toilets
+toiling
+toils
+token
+tokenism
+tokens
+told
+tolerable
+tolerably
+tolerance
+tolerances
+tolerant
+tolerate
+tolerated
+tolerates
+tolerating
+toll
+tollbooth
+tollbooths
+tolled
+tollgate
+tollgates
+tolling
+tolls
+tomahawk
+tomahawked
+tomahawking
+tomahawks
+tomato
+tomatoes
+tomb
+tombed
+tombing
+tomboy
+tomboys
+tombs
+tombstone
+tombstones
+tomcat
+tomcats
+tome
+tomes
+tomfooleries
+tomfoolery
+tomorrow
+tomorrows
+ton
+tonal
+tone
+toned
+tones
+tong
+tongs
+tongue
+tongued
+tongues
+tonguing
+tonic
+tonics
+tonight
+toning
+tonnage
+tonnages
+tonne
+tonnes
+tons
+tonsil
+tonsillitis
+tonsils
+too
+took
+tool
+toolbar
+tooled
+tooling
+toolkit
+tools
+toot
+tooted
+tooth
+toothache
+toothaches
+toothbrush
+toothbrushes
+toothpaste
+toothpastes
+toothpick
+toothpicks
+tooting
+toots
+top
+topaz
+topazes
+topic
+topical
+topics
+topless
+topographer
+topographers
+topographies
+topography
+topology
+topped
+topping
+toppings
+topple
+toppled
+topples
+toppling
+tops
+torch
+torched
+torches
+torching
+tore
+torment
+tormented
+tormenting
+tormentor
+tormentors
+torments
+torn
+tornado
+tornadoes
+torpedo
+torpedoed
+torpedoes
+torpedoing
+torque
+torrent
+torrential
+torrents
+torrid
+torso
+torsos
+tort
+tortilla
+tortillas
+tortoise
+tortoises
+torts
+tortuous
+torture
+tortured
+torturer
+torturers
+tortures
+torturing
+toss
+tossed
+tosses
+tossing
+tot
+total
+totaled
+totaling
+totalitarian
+totalitarianism
+totalitarians
+totalities
+totality
+totally
+totals
+tote
+toted
+totem
+totems
+totes
+toting
+tots
+totted
+totter
+tottered
+tottering
+totters
+totting
+toucan
+toucans
+touch
+touchdown
+touchdowns
+touched
+touches
+touchier
+touchiest
+touching
+touchings
+touchstone
+touchstones
+touchy
+tough
+toughen
+toughened
+toughening
+toughens
+tougher
+toughest
+toughness
+toughs
+toupee
+toupees
+tour
+toured
+touring
+tourism
+tourist
+tourists
+tournament
+tournaments
+tourniquet
+tourniquets
+tours
+tousle
+tousled
+tousles
+tousling
+tout
+touted
+touting
+touts
+tow
+toward
+towards
+towed
+towel
+toweled
+toweling
+towels
+tower
+towered
+towering
+towers
+towing
+town
+townhouse
+townhouses
+towns
+township
+townships
+townspeople
+tows
+toxic
+toxicity
+toxicology
+toxin
+toxins
+toy
+toyed
+toying
+toys
+trace
+traced
+tracer
+tracers
+traces
+tracing
+track
+tracked
+tracking
+tracks
+tract
+traction
+tractor
+tractors
+tracts
+trade
+traded
+trademark
+trademarked
+trademarking
+trademarks
+trader
+traders
+trades
+trading
+tradition
+traditional
+traditionalist
+traditionalists
+traditionally
+traditions
+traffic
+trafficked
+trafficking
+traffics
+tragedies
+tragedy
+tragic
+tragically
+trail
+trailblazer
+trailblazers
+trailed
+trailer
+trailers
+trailing
+trails
+train
+trained
+trainee
+trainees
+trainer
+trainers
+training
+trains
+trait
+traitor
+traitorous
+traitors
+traits
+trajectories
+trajectory
+tramp
+tramped
+tramping
+trample
+trampled
+tramples
+trampling
+trampoline
+trampolines
+tramps
+trance
+trances
+tranquil
+tranquiler
+tranquilest
+tranquility
+tranquilize
+tranquilized
+tranquilizer
+tranquilizers
+tranquilizes
+tranquilizing
+transact
+transacted
+transacting
+transaction
+transactions
+transacts
+transatlantic
+transcend
+transcended
+transcendence
+transcendental
+transcending
+transcends
+transcontinental
+transcribe
+transcribed
+transcribes
+transcribing
+transcript
+transcription
+transcriptions
+transcripts
+transfer
+transferable
+transferred
+transferring
+transfers
+transform
+transformation
+transformations
+transformed
+transformer
+transformers
+transforming
+transforms
+transfusion
+transfusions
+transgress
+transgressed
+transgresses
+transgressing
+transgression
+transgressions
+transient
+transients
+transistor
+transistors
+transit
+transited
+transiting
+transition
+transitional
+transitioned
+transitioning
+transitions
+transitive
+transitives
+transitory
+transits
+translate
+translated
+translates
+translating
+translation
+translations
+translator
+translators
+transliteration
+translucence
+translucent
+transmission
+transmissions
+transmit
+transmits
+transmitted
+transmitter
+transmitters
+transmitting
+transparencies
+transparency
+transparent
+transparently
+transpire
+transpired
+transpires
+transpiring
+transplant
+transplanted
+transplanting
+transplants
+transport
+transportable
+transportation
+transported
+transporting
+transports
+transpose
+transposed
+transposes
+transposing
+transsexual
+transsexuals
+transverse
+transverses
+transvestite
+transvestites
+trap
+trapdoor
+trapeze
+trapezes
+trapezoid
+trapezoids
+trapped
+trapper
+trappers
+trapping
+trappings
+traps
+trash
+trashcan
+trashed
+trashes
+trashier
+trashiest
+trashing
+trashy
+trauma
+traumas
+traumatic
+traumatize
+traumatized
+traumatizes
+traumatizing
+travel
+traveled
+traveler
+travelers
+traveling
+travelings
+travels
+traverse
+traversed
+traverses
+traversing
+travestied
+travesties
+travesty
+travestying
+trawl
+trawled
+trawler
+trawlers
+trawling
+trawls
+tray
+trays
+treacheries
+treacherous
+treachery
+treacle
+tread
+treading
+treadmill
+treadmills
+treads
+treason
+treasure
+treasured
+treasurer
+treasurers
+treasures
+treasuries
+treasuring
+treasury
+treat
+treatable
+treated
+treaties
+treating
+treatise
+treatises
+treatment
+treatments
+treats
+treaty
+treble
+trebled
+trebles
+trebling
+tree
+treed
+treeing
+trees
+treetop
+treetops
+trek
+trekked
+trekking
+treks
+trellis
+trellised
+trellises
+trellising
+tremble
+trembled
+trembles
+trembling
+tremendous
+tremendously
+tremor
+tremors
+trench
+trenchant
+trenched
+trenches
+trenching
+trend
+trended
+trendier
+trendies
+trendiest
+trending
+trends
+trendy
+trepidation
+trespass
+trespassed
+trespasser
+trespassers
+trespasses
+trespassing
+trestle
+trestles
+trial
+trialed
+trialing
+trials
+triangle
+triangles
+triangular
+tribal
+tribe
+tribes
+tribulation
+tribulations
+tribunal
+tribunals
+tributaries
+tributary
+tribute
+tributes
+triceps
+tricepses
+trick
+tricked
+trickery
+trickier
+trickiest
+tricking
+trickle
+trickled
+trickles
+trickling
+tricks
+trickster
+tricksters
+tricky
+tricycle
+tricycles
+trident
+tridents
+tried
+tries
+trifle
+trifled
+trifles
+trifling
+trigger
+triggered
+triggering
+triggers
+trigonometry
+trike
+trikes
+trill
+trilled
+trilling
+trillion
+trillions
+trills
+trilogies
+trilogy
+trim
+trimester
+trimesters
+trimmed
+trimmer
+trimmest
+trimming
+trimmings
+trims
+trinity
+trinket
+trinkets
+trio
+trios
+trip
+tripe
+triple
+tripled
+triples
+triplet
+triplets
+triplicate
+triplicated
+triplicates
+triplicating
+tripling
+tripod
+tripods
+tripos
+tripped
+tripping
+trips
+trite
+triter
+tritest
+triumph
+triumphant
+triumphantly
+triumphed
+triumphing
+triumphs
+trivia
+trivial
+triviality
+trivialize
+trivialized
+trivializes
+trivializing
+trivially
+trod
+trodden
+troll
+trolled
+trolley
+trolleys
+trolling
+trolls
+trombone
+trombones
+tromp
+tromped
+tromping
+tromps
+troop
+trooped
+trooper
+troopers
+trooping
+troops
+trophies
+trophy
+tropic
+tropical
+tropics
+trot
+trots
+trotted
+trotting
+troubadour
+troubadours
+trouble
+troubled
+troublemaker
+troublemakers
+troubles
+troubleshoot
+troubleshooted
+troubleshooter
+troubleshooters
+troubleshooting
+troubleshoots
+troubleshot
+troublesome
+troubling
+trough
+troughs
+trounce
+trounced
+trounces
+trouncing
+troupe
+trouped
+troupes
+trouping
+trouser
+trousers
+trout
+trouts
+trowel
+troweled
+troweling
+trowels
+truancy
+truant
+truanted
+truanting
+truants
+truce
+truces
+truck
+trucked
+trucker
+truckers
+trucking
+truckload
+truckloads
+trucks
+truculent
+trudge
+trudged
+trudges
+trudging
+true
+trued
+truer
+trues
+truest
+truffle
+truffles
+truing
+truism
+truisms
+truly
+trump
+trumped
+trumpet
+trumpeted
+trumpeter
+trumpeters
+trumpeting
+trumpets
+trumping
+trumps
+truncate
+truncated
+truncates
+truncating
+truncation
+trundle
+trundled
+trundles
+trundling
+trunk
+trunking
+trunks
+trust
+trusted
+trustee
+trustees
+trustful
+trustier
+trusties
+trustiest
+trusting
+trusts
+trustworthier
+trustworthiest
+trustworthy
+trusty
+truth
+truthful
+truthfully
+truthfulness
+truths
+try
+trying
+tryout
+tryouts
+ts
+tub
+tuba
+tubas
+tubbier
+tubbiest
+tubby
+tube
+tubed
+tuberculosis
+tubes
+tubing
+tubs
+tubular
+tuck
+tucked
+tucking
+tucks
+tuft
+tufted
+tufting
+tufts
+tug
+tugboat
+tugboats
+tugged
+tugging
+tugs
+tuition
+tulip
+tulips
+tumble
+tumbled
+tumbler
+tumblers
+tumbles
+tumbling
+tummies
+tummy
+tumor
+tumors
+tumult
+tumults
+tumultuous
+tuna
+tunas
+tundra
+tundras
+tune
+tuned
+tuneful
+tuner
+tuners
+tunes
+tunic
+tunics
+tuning
+tunnel
+tunneled
+tunneling
+tunnelings
+tunnels
+turban
+turbans
+turbine
+turbines
+turbulence
+turbulent
+turd
+turds
+tureen
+tureens
+turf
+turfed
+turfing
+turfs
+turgid
+turkey
+turkeys
+turmoil
+turmoils
+turn
+turnaround
+turnarounds
+turncoat
+turncoats
+turned
+turner
+turning
+turnip
+turnips
+turnout
+turnouts
+turnover
+turnovers
+turnpike
+turnpikes
+turns
+turnstile
+turnstiles
+turntable
+turntables
+turpentine
+turquoise
+turquoises
+turret
+turrets
+turtle
+turtleneck
+turtlenecks
+turtles
+tush
+tushes
+tusk
+tusks
+tussle
+tussled
+tussles
+tussling
+tutor
+tutored
+tutorial
+tutorials
+tutoring
+tutors
+tux
+tuxedo
+tuxedos
+tuxes
+twang
+twanged
+twanging
+twangs
+tweak
+tweaked
+tweaking
+tweaks
+twee
+tweed
+tweet
+tweeted
+tweeting
+tweets
+tweezers
+twelfth
+twelfths
+twelve
+twelves
+twenties
+twentieth
+twentieths
+twenty
+twerp
+twerps
+twice
+twiddle
+twiddled
+twiddles
+twiddling
+twig
+twigged
+twigging
+twigs
+twilight
+twin
+twine
+twined
+twines
+twinge
+twinged
+twinges
+twinging
+twining
+twinkle
+twinkled
+twinkles
+twinkling
+twinned
+twinning
+twins
+twirl
+twirled
+twirling
+twirls
+twist
+twisted
+twister
+twisters
+twisting
+twists
+twit
+twitch
+twitched
+twitches
+twitching
+twits
+twitted
+twitter
+twittered
+twittering
+twitters
+twitting
+two
+twos
+tycoon
+tycoons
+tying
+tyke
+tykes
+type
+typecast
+typecasting
+typecasts
+typed
+typeface
+typefaces
+types
+typescript
+typeset
+typesets
+typesetter
+typesetting
+typewrite
+typewriter
+typewriters
+typewrites
+typewriting
+typewritten
+typewrote
+typhoid
+typhoon
+typhoons
+typhus
+typical
+typically
+typified
+typifies
+typify
+typifying
+typing
+typist
+typists
+typo
+typographic
+typographical
+typos
+tyrannical
+tyrannies
+tyrannize
+tyrannized
+tyrannizes
+tyrannizing
+tyranny
+tyrant
+tyrants
+ubiquitous
+ubiquity
+udder
+udders
+ugh
+uglier
+ugliest
+ugliness
+ugly
+uh
+ulcer
+ulcers
+ulterior
+ultimate
+ultimately
+ultimatum
+ultimatums
+ultra
+ultrasonic
+ultrasound
+ultrasounds
+ultraviolet
+um
+umbrella
+umbrellas
+umpire
+umpired
+umpires
+umpiring
+umpteen
+umpteenth
+unabashed
+unabated
+unable
+unabridged
+unabridgeds
+unacceptable
+unacceptably
+unaccepted
+unaccompanied
+unaccountable
+unaccountably
+unadulterated
+unaffected
+unaided
+unaltered
+unambiguous
+unambiguously
+unanimity
+unanimous
+unanimously
+unanswerable
+unanswered
+unarmed
+unassigned
+unassuming
+unattached
+unattainable
+unattended
+unattractive
+unauthorized
+unavailable
+unavoidable
+unavoidably
+unaware
+unawares
+unbalanced
+unbearable
+unbearably
+unbeatable
+unbeaten
+unbecoming
+unbelievable
+unbelievably
+unbeliever
+unbelievers
+unbiased
+unblock
+unblocked
+unblocking
+unblocks
+unborn
+unbounded
+unbreakable
+unbridled
+unbroken
+unburden
+unburdened
+unburdening
+unburdens
+unbutton
+unbuttoned
+unbuttoning
+unbuttons
+uncannier
+uncanniest
+uncannily
+uncanny
+unceasing
+uncertain
+uncertainly
+uncertainties
+uncertainty
+unchallenged
+unchanged
+uncharacteristic
+uncharacteristically
+uncharitable
+uncharted
+unchecked
+unchristian
+uncle
+unclean
+uncleaner
+uncleanest
+unclear
+unclearer
+unclearest
+uncles
+uncomfortable
+uncomfortably
+uncommon
+uncommoner
+uncommonest
+uncommonly
+uncompromising
+unconcerned
+unconditional
+unconditionally
+unconfirmed
+unconnected
+unconscionable
+unconscious
+unconsciously
+unconsciousness
+unconstitutional
+uncontrollable
+uncontrollably
+uncontrolled
+uncontroversial
+unconventional
+unconvinced
+unconvincing
+uncountable
+uncouth
+uncover
+uncovered
+uncovering
+uncovers
+uncultured
+uncut
+undamaged
+undaunted
+undecidable
+undecided
+undecideds
+undefined
+undemocratic
+undeniable
+undeniably
+under
+underage
+underbrush
+underclass
+underclassman
+underclassmen
+undercover
+undercurrent
+undercurrents
+undercut
+undercuts
+undercutting
+underdog
+underdogs
+underestimate
+underestimated
+underestimates
+underestimating
+underflow
+underfoot
+undergarment
+undergarments
+undergo
+undergoes
+undergoing
+undergone
+undergrad
+undergrads
+undergraduate
+undergraduates
+underground
+undergrounds
+undergrowth
+underhanded
+underlain
+underlay
+underlays
+underlie
+underlies
+underline
+underlined
+underlines
+underlining
+underlying
+undermine
+undermined
+undermines
+undermining
+underneath
+underneaths
+undernourished
+underpaid
+underpants
+underpass
+underpasses
+underpay
+underpaying
+underpays
+underprivileged
+underrate
+underrated
+underrates
+underrating
+underscore
+underscored
+underscores
+underscoring
+undershirt
+undershirts
+underside
+undersides
+understaffed
+understand
+understandable
+understandably
+understanding
+understandings
+understands
+understate
+understated
+understatement
+understatements
+understates
+understating
+understood
+understudied
+understudies
+understudy
+understudying
+undertake
+undertaken
+undertaker
+undertakers
+undertakes
+undertaking
+undertakings
+undertone
+undertones
+undertook
+undertow
+undertows
+underwater
+underwear
+underweight
+underwent
+underworld
+underworlds
+underwrite
+underwrites
+underwriting
+underwritten
+underwrote
+undeserved
+undesirable
+undesirables
+undetected
+undetermined
+undeveloped
+undid
+undisclosed
+undisturbed
+undo
+undocumented
+undoes
+undoing
+undoings
+undone
+undoubted
+undoubtedly
+undress
+undressed
+undresses
+undressing
+undue
+unduly
+undying
+unearth
+unearthed
+unearthing
+unearthly
+unearths
+unease
+uneasier
+uneasiest
+uneasily
+uneasiness
+uneasy
+uneconomic
+uneconomical
+uneducated
+unemployable
+unemployed
+unemployment
+unending
+unenlightened
+unequal
+unequaled
+unequally
+unequivocal
+unerring
+unethical
+uneven
+unevenly
+uneventful
+unexpected
+unexpectedly
+unexplained
+unfailing
+unfair
+unfairer
+unfairest
+unfairly
+unfairness
+unfaithful
+unfamiliar
+unfashionable
+unfasten
+unfastened
+unfastening
+unfastens
+unfavorable
+unfeasible
+unfeeling
+unfilled
+unfinished
+unfit
+unfits
+unfitted
+unfitting
+unfold
+unfolded
+unfolding
+unfolds
+unforeseen
+unforgettable
+unforgivable
+unfortunate
+unfortunately
+unfortunates
+unfounded
+unfriendlier
+unfriendliest
+unfriendly
+unfunny
+unfurl
+unfurled
+unfurling
+unfurls
+ungainlier
+ungainliest
+ungainly
+ungodlier
+ungodliest
+ungodly
+ungrammatical
+ungrateful
+ungratefully
+unhappier
+unhappiest
+unhappily
+unhappiness
+unhappy
+unhealthier
+unhealthiest
+unhealthy
+unheard
+unhelpful
+unholier
+unholiest
+unholy
+unhook
+unhooked
+unhooking
+unhooks
+unicorn
+unicorns
+unicycle
+unidentified
+unification
+unified
+unifies
+uniform
+uniformed
+uniforming
+uniformity
+uniformly
+uniforms
+unify
+unifying
+unilateral
+unilaterally
+unimaginative
+unimportant
+unimpressed
+uninformative
+uninformed
+uninhabitable
+uninhibited
+uninitiated
+uninspired
+uninspiring
+uninsured
+unintelligent
+unintelligible
+unintended
+unintentional
+unintentionally
+uninterested
+uninteresting
+union
+unionize
+unionized
+unionizes
+unionizing
+unions
+unique
+uniquely
+uniqueness
+uniquer
+uniquest
+unisex
+unison
+unit
+unite
+united
+unites
+unities
+uniting
+units
+unity
+universal
+universally
+universals
+universe
+universes
+universities
+university
+unjust
+unjustifiable
+unjustified
+unjustly
+unkempt
+unkind
+unkinder
+unkindest
+unkindlier
+unkindliest
+unkindly
+unkindness
+unknowingly
+unknown
+unknowns
+unlabeled
+unlawful
+unleaded
+unleash
+unleashed
+unleashes
+unleashing
+unless
+unlike
+unlikelier
+unlikeliest
+unlikely
+unlimited
+unlisted
+unload
+unloaded
+unloading
+unloads
+unlock
+unlocked
+unlocking
+unlocks
+unluckier
+unluckiest
+unlucky
+unman
+unmanned
+unmanning
+unmans
+unmarked
+unmarried
+unmask
+unmasked
+unmasking
+unmasks
+unmistakable
+unmistakably
+unmitigated
+unmodified
+unmoved
+unnamed
+unnatural
+unnaturally
+unnecessarily
+unnecessary
+unnerve
+unnerved
+unnerves
+unnerving
+unnoticed
+unobtainable
+unobtrusive
+unoccupied
+unofficial
+unofficially
+unoriginal
+unorthodox
+unpack
+unpacked
+unpacking
+unpacks
+unpaid
+unparalleled
+unpick
+unpleasant
+unpleasantly
+unpleasantness
+unplug
+unplugged
+unplugging
+unplugs
+unpopular
+unpopularity
+unprecedented
+unpredictable
+unprepared
+unprincipled
+unprintable
+unprivileged
+unproductive
+unprofessional
+unprofitable
+unprotected
+unproven
+unprovoked
+unpublished
+unqualified
+unquestionable
+unquestionably
+unquestioned
+unravel
+unraveled
+unraveling
+unravels
+unread
+unreadable
+unreal
+unrealistic
+unreasonable
+unreasonably
+unrecognized
+unrelated
+unrelenting
+unreliability
+unreliable
+unremarkable
+unrepeatable
+unrepresentative
+unreserved
+unreservedly
+unresolved
+unresponsive
+unrest
+unrestrained
+unrestricted
+unrivaled
+unroll
+unrolled
+unrolling
+unrolls
+unruffled
+unrulier
+unruliest
+unruliness
+unruly
+unsafe
+unsafer
+unsafest
+unsaid
+unsanitary
+unsatisfactory
+unsatisfied
+unsavory
+unsay
+unsaying
+unsays
+unscathed
+unscheduled
+unscientific
+unscrew
+unscrewed
+unscrewing
+unscrews
+unscrupulous
+unseasonable
+unseat
+unseated
+unseating
+unseats
+unseemlier
+unseemliest
+unseemly
+unseen
+unset
+unsettle
+unsettled
+unsettles
+unsettling
+unsightlier
+unsightliest
+unsightly
+unsigned
+unskilled
+unsolicited
+unsolved
+unsophisticated
+unsound
+unsounder
+unsoundest
+unspeakable
+unspecified
+unspoken
+unsportsmanlike
+unstable
+unsteadier
+unsteadiest
+unsteady
+unstoppable
+unstructured
+unstuck
+unsubstantiated
+unsuccessful
+unsuccessfully
+unsuitable
+unsuited
+unsung
+unsupportable
+unsupported
+unsure
+unsuspecting
+untangle
+untangled
+untangles
+untangling
+untenable
+unthinkable
+unthinking
+unthinkingly
+untidier
+untidiest
+untidy
+untie
+untied
+unties
+until
+untimelier
+untimeliest
+untimely
+untiring
+unto
+untold
+untouchable
+untouchables
+untouched
+untoward
+untrained
+untried
+untrue
+untruer
+untruest
+untrustworthy
+untruthful
+untying
+unusable
+unused
+unusual
+unusually
+unveil
+unveiled
+unveiling
+unveils
+unwanted
+unwarranted
+unwary
+unwashed
+unwelcome
+unwell
+unwieldier
+unwieldiest
+unwieldy
+unwilling
+unwillingness
+unwind
+unwinding
+unwinds
+unwise
+unwiser
+unwisest
+unwitting
+unwittingly
+unworkable
+unworthy
+unwound
+unwrap
+unwrapped
+unwrapping
+unwraps
+unwritten
+unyielding
+unzip
+unzipped
+unzipping
+unzips
+up
+upbeat
+upbeats
+upbringing
+upbringings
+upchuck
+upchucked
+upchucking
+upchucks
+upcoming
+update
+updated
+updates
+updating
+upend
+upended
+upending
+upends
+upfront
+upgrade
+upgraded
+upgrades
+upgrading
+upheaval
+upheavals
+upheld
+uphill
+uphills
+uphold
+upholding
+upholds
+upholster
+upholstered
+upholsterer
+upholsterers
+upholstering
+upholsters
+upholstery
+upkeep
+uplift
+uplifted
+uplifting
+upliftings
+uplifts
+upload
+upon
+upped
+upper
+uppercase
+upperclassman
+upperclassmen
+uppermost
+uppers
+upping
+uppity
+upright
+uprights
+uprising
+uprisings
+uproar
+uproars
+uproot
+uprooted
+uprooting
+uproots
+ups
+upscale
+upset
+upsets
+upsetting
+upshot
+upshots
+upside
+upstage
+upstaged
+upstages
+upstaging
+upstairs
+upstanding
+upstart
+upstarted
+upstarting
+upstarts
+upstate
+upstream
+upsurge
+upsurged
+upsurges
+upsurging
+upswing
+upswings
+uptake
+uptakes
+uptight
+uptown
+upturn
+upturned
+upturning
+upturns
+upward
+upwardly
+upwards
+uranium
+urban
+urbane
+urbaner
+urbanest
+urchin
+urchins
+urge
+urged
+urgency
+urgent
+urgently
+urges
+urging
+urinate
+urinated
+urinates
+urinating
+urine
+urn
+urns
+us
+usable
+usage
+usages
+use
+used
+useful
+usefully
+usefulness
+useless
+uselessly
+uselessness
+user
+users
+uses
+usher
+ushered
+ushering
+ushers
+using
+usual
+usually
+usurp
+usurped
+usurping
+usurps
+utensil
+utensils
+uteri
+uterus
+utilitarian
+utilitarianism
+utilities
+utility
+utilization
+utilize
+utilized
+utilizes
+utilizing
+utmost
+utopia
+utopias
+utter
+utterance
+utterances
+uttered
+uttering
+utterly
+utters
+vacancies
+vacancy
+vacant
+vacantly
+vacate
+vacated
+vacates
+vacating
+vacation
+vacationed
+vacationer
+vacationers
+vacationing
+vacations
+vaccinate
+vaccinated
+vaccinates
+vaccinating
+vaccination
+vaccinations
+vaccine
+vaccines
+vacillate
+vacillated
+vacillates
+vacillating
+vacuous
+vacuum
+vacuumed
+vacuuming
+vacuums
+vagabond
+vagabonded
+vagabonding
+vagabonds
+vagaries
+vagary
+vagina
+vaginae
+vaginal
+vagrant
+vagrants
+vague
+vaguely
+vagueness
+vaguer
+vaguest
+vain
+vainer
+vainest
+vainly
+valedictorian
+valedictorians
+valentine
+valentines
+valet
+valeted
+valeting
+valets
+valiant
+valiantly
+valid
+validate
+validated
+validates
+validating
+validation
+validity
+validly
+valise
+valises
+valley
+valleys
+valor
+valuable
+valuables
+value
+valued
+valueless
+values
+valuing
+valve
+valved
+valves
+valving
+vampire
+vampires
+van
+vandal
+vandalism
+vandalize
+vandalized
+vandalizes
+vandalizing
+vandals
+vane
+vanes
+vanguard
+vanguards
+vanilla
+vanillas
+vanish
+vanished
+vanishes
+vanishing
+vanishings
+vanities
+vanity
+vanned
+vanning
+vanquish
+vanquished
+vanquishes
+vanquishing
+vans
+vapor
+vaporize
+vaporized
+vaporizes
+vaporizing
+vapors
+variability
+variable
+variables
+variance
+variances
+variant
+variants
+variation
+variations
+varied
+varies
+varieties
+variety
+various
+variously
+varnish
+varnished
+varnishes
+varnishing
+varsities
+varsity
+vary
+varying
+vase
+vasectomies
+vasectomy
+vases
+vast
+vaster
+vastest
+vastly
+vastness
+vasts
+vat
+vats
+vatted
+vatting
+vault
+vaulted
+vaulting
+vaults
+veal
+vector
+vectors
+veer
+veered
+veering
+veers
+vegan
+vegans
+vegetable
+vegetables
+vegetarian
+vegetarianism
+vegetarians
+vegetation
+veggie
+veggies
+vehement
+vehemently
+vehicle
+vehicles
+vehicular
+veil
+veiled
+veiling
+veils
+vein
+veined
+veining
+veins
+velocities
+velocity
+velour
+velvet
+velvety
+vend
+vended
+vendetta
+vendettas
+vending
+vendor
+vendors
+vends
+veneer
+veneered
+veneering
+veneers
+venerable
+venerate
+venerated
+venerates
+venerating
+veneration
+vengeance
+vengeful
+venison
+venom
+venomous
+vent
+vented
+ventilate
+ventilated
+ventilates
+ventilating
+ventilation
+ventilator
+ventilators
+venting
+ventricle
+ventricles
+ventriloquism
+ventriloquist
+ventriloquists
+vents
+venture
+ventured
+ventures
+venturing
+venue
+venues
+veracity
+veranda
+verandas
+verb
+verbal
+verbally
+verbals
+verbatim
+verbiage
+verbose
+verbosity
+verbs
+verdict
+verdicts
+verge
+verged
+verges
+verging
+verier
+veriest
+verification
+verified
+verifies
+verify
+verifying
+veritable
+vermin
+vernacular
+vernaculars
+versatile
+versatility
+verse
+versed
+verses
+versing
+version
+versions
+versus
+vertebra
+vertebrae
+vertebrate
+vertebrates
+vertical
+vertically
+verticals
+vertices
+vertigo
+verve
+very
+vessel
+vessels
+vest
+vested
+vestibule
+vestibules
+vestige
+vestiges
+vesting
+vestment
+vestments
+vests
+vet
+veteran
+veterans
+veterinarian
+veterinarians
+veterinaries
+veterinary
+veto
+vetoed
+vetoes
+vetoing
+vets
+vetted
+vetting
+vex
+vexation
+vexations
+vexed
+vexes
+vexing
+via
+viability
+viable
+viaduct
+viaducts
+vial
+vials
+vibe
+vibes
+vibrant
+vibrate
+vibrated
+vibrates
+vibrating
+vibration
+vibrations
+vicar
+vicarious
+vicariously
+vicars
+vice
+viced
+vices
+vicing
+vicinity
+vicious
+viciously
+victim
+victimization
+victimize
+victimized
+victimizes
+victimizing
+victims
+victor
+victories
+victorious
+victors
+victory
+video
+videocassette
+videocassettes
+videos
+videotape
+videotaped
+videotapes
+videotaping
+vie
+vied
+vies
+view
+viewed
+viewer
+viewers
+viewing
+viewings
+viewpoint
+viewpoints
+views
+vigil
+vigilance
+vigilant
+vigilante
+vigilantes
+vigils
+vigor
+vigorous
+vigorously
+vile
+viler
+vilest
+vilified
+vilifies
+vilify
+vilifying
+villa
+village
+villager
+villagers
+villages
+villain
+villainies
+villainous
+villains
+villainy
+villas
+vindicate
+vindicated
+vindicates
+vindicating
+vindication
+vindications
+vindictive
+vine
+vinegar
+vines
+vineyard
+vineyards
+vintage
+vintages
+vinyl
+vinyls
+viola
+violas
+violate
+violated
+violates
+violating
+violation
+violations
+violence
+violent
+violently
+violet
+violets
+violin
+violinist
+violinists
+violins
+viper
+vipers
+viral
+virgin
+virginity
+virgins
+virile
+virility
+virtual
+virtually
+virtue
+virtues
+virtuoso
+virtuous
+virtuously
+virulent
+virus
+viruses
+visa
+visaed
+visage
+visages
+visaing
+visas
+viscosity
+viscous
+vise
+vised
+vises
+visibility
+visible
+visibly
+vising
+vision
+visionaries
+visionary
+visioned
+visioning
+visions
+visit
+visitation
+visitations
+visited
+visiting
+visitor
+visitors
+visits
+visor
+visors
+vista
+vistas
+visual
+visualize
+visualized
+visualizes
+visualizing
+visually
+visuals
+vital
+vitality
+vitally
+vitamin
+vitamins
+vitriolic
+vivacious
+vivaciously
+vivacity
+vivid
+vivider
+vividest
+vividly
+vivisection
+vocabularies
+vocabulary
+vocal
+vocalist
+vocalists
+vocals
+vocation
+vocational
+vocations
+vociferous
+vociferously
+vodka
+vogue
+vogues
+voice
+voiced
+voices
+voicing
+void
+voided
+voiding
+voids
+volatile
+volatility
+volcanic
+volcano
+volcanoes
+volition
+volley
+volleyball
+volleyballs
+volleyed
+volleying
+volleys
+volt
+voltage
+voltages
+volts
+volume
+volumes
+voluminous
+voluntaries
+voluntarily
+voluntary
+volunteer
+volunteered
+volunteering
+volunteers
+voluptuous
+vomit
+vomited
+vomiting
+vomits
+voodoo
+voodooed
+voodooing
+voodoos
+voracious
+voracity
+vortex
+vortexes
+vote
+voted
+voter
+voters
+votes
+voting
+vouch
+vouched
+voucher
+vouchers
+vouches
+vouching
+vow
+vowed
+vowel
+vowels
+vowing
+vows
+voyage
+voyaged
+voyager
+voyagers
+voyages
+voyaging
+voyeur
+voyeurism
+voyeurs
+vulgar
+vulgarer
+vulgarest
+vulgarities
+vulgarity
+vulnerabilities
+vulnerability
+vulnerable
+vulture
+vultures
+vying
+wackier
+wackiest
+wacky
+wad
+wadded
+wadding
+waddle
+waddled
+waddles
+waddling
+wade
+waded
+wades
+wading
+wads
+wafer
+wafers
+waffle
+waffled
+waffles
+waffling
+waft
+wafted
+wafting
+wafts
+wag
+wage
+waged
+wager
+wagered
+wagering
+wagers
+wages
+wagged
+wagging
+waging
+wagon
+wagons
+wags
+waif
+waifs
+wail
+wailed
+wailing
+wails
+waist
+waistband
+waistbands
+waistline
+waistlines
+waists
+wait
+waited
+waiter
+waiters
+waiting
+waitress
+waitresses
+waits
+waive
+waived
+waiver
+waivers
+waives
+waiving
+wake
+waked
+waken
+wakened
+wakening
+wakens
+wakes
+waking
+walk
+walked
+walker
+walkers
+walking
+walkout
+walkouts
+walks
+wall
+walled
+wallet
+wallets
+walling
+wallop
+walloped
+walloping
+wallops
+wallow
+wallowed
+wallowing
+wallows
+wallpaper
+wallpapered
+wallpapering
+wallpapers
+walls
+walnut
+walnuts
+walrus
+walruses
+waltz
+waltzed
+waltzes
+waltzing
+wan
+wand
+wander
+wandered
+wanderer
+wanderers
+wandering
+wanders
+wands
+wane
+waned
+wanes
+waning
+wanna
+wannabe
+wannabes
+wanner
+wannest
+want
+wanted
+wanting
+wanton
+wantoned
+wantoning
+wantons
+wants
+war
+warble
+warbled
+warbles
+warbling
+ward
+warded
+warden
+wardens
+warding
+wardrobe
+wardrobes
+wards
+ware
+warehouse
+warehoused
+warehouses
+warehousing
+wares
+warfare
+warhead
+warheads
+warier
+wariest
+warily
+warlike
+warlock
+warlocks
+warlord
+warlords
+warm
+warmed
+warmer
+warmest
+warming
+warmly
+warmonger
+warmongering
+warmongers
+warms
+warmth
+warn
+warned
+warning
+warnings
+warns
+warp
+warpath
+warpaths
+warped
+warping
+warps
+warrant
+warranted
+warrantied
+warranties
+warranting
+warrants
+warranty
+warrantying
+warred
+warren
+warrens
+warring
+warrior
+warriors
+wars
+warship
+warships
+wart
+wartime
+warts
+wary
+was
+wash
+washable
+washables
+washbasin
+washbasins
+washcloth
+washcloths
+washed
+washer
+washers
+washes
+washing
+washings
+washout
+washouts
+washroom
+washrooms
+wasp
+wasps
+wastage
+waste
+wastebasket
+wastebaskets
+wasted
+wasteful
+wastefully
+wasteland
+wastelands
+wastes
+wasting
+watch
+watchdog
+watchdogs
+watched
+watches
+watchful
+watching
+watchmaker
+watchmakers
+watchman
+watchmen
+watchword
+watchwords
+water
+waterbed
+waterbeds
+watercolor
+watercolors
+watered
+waterfall
+waterfalls
+waterfront
+waterfronts
+waterier
+wateriest
+watering
+waterlogged
+watermark
+watermarked
+watermarking
+watermarks
+watermelon
+watermelons
+waterproof
+waterproofed
+waterproofing
+waterproofs
+waters
+watershed
+watersheds
+watertight
+waterway
+waterways
+waterworks
+watery
+watt
+watts
+wave
+waved
+waveform
+wavelength
+wavelengths
+waver
+wavered
+wavering
+wavers
+waves
+wavier
+waviest
+waving
+wavy
+wax
+waxed
+waxes
+waxier
+waxiest
+waxiness
+waxing
+waxy
+way
+waylaid
+waylay
+waylaying
+waylays
+ways
+wayside
+waysides
+wayward
+we
+weak
+weaken
+weakened
+weakening
+weakens
+weaker
+weakest
+weakling
+weaklings
+weakly
+weakness
+weaknesses
+wealth
+wealthier
+wealthiest
+wealthy
+wean
+weaned
+weaning
+weans
+weapon
+weaponry
+weapons
+wear
+wearied
+wearier
+wearies
+weariest
+wearily
+weariness
+wearing
+wearisome
+wears
+weary
+wearying
+weasel
+weaseled
+weaseling
+weasels
+weather
+weathered
+weathering
+weathers
+weave
+weaved
+weaver
+weavers
+weaves
+weaving
+web
+webbed
+webbing
+webs
+website
+websites
+wed
+wedded
+wedder
+wedding
+weddings
+wedge
+wedged
+wedges
+wedging
+wedlock
+weds
+wee
+weed
+weeded
+weedier
+weediest
+weeding
+weeds
+weedy
+weeing
+week
+weekday
+weekdays
+weekend
+weekended
+weekending
+weekends
+weeklies
+weekly
+weeknight
+weeknights
+weeks
+weep
+weeping
+weeps
+weer
+wees
+weest
+weigh
+weighed
+weighing
+weighs
+weight
+weighted
+weightier
+weightiest
+weighting
+weightless
+weightlessness
+weightlifter
+weightlifters
+weightlifting
+weights
+weighty
+weird
+weirder
+weirdest
+weirdness
+weirdo
+weirdos
+welcome
+welcomed
+welcomes
+welcoming
+weld
+welded
+welder
+welders
+welding
+welds
+welfare
+well
+welled
+welling
+wellington
+wells
+welsh
+welshed
+welshes
+welshing
+welt
+welted
+welter
+weltered
+weltering
+welters
+welting
+welts
+went
+wept
+were
+werewolf
+werewolves
+west
+westbound
+westerlies
+westerly
+western
+westerner
+westerners
+westernize
+westernized
+westernizes
+westernizing
+westerns
+westward
+westwards
+wet
+wetback
+wetbacks
+wets
+wetter
+wettest
+wetting
+whack
+whacked
+whacking
+whacks
+whale
+whaled
+whaler
+whalers
+whales
+whaling
+wham
+whammed
+whamming
+whams
+wharf
+wharves
+what
+whatchamacallit
+whatchamacallits
+whatever
+whats
+whatsoever
+wheat
+wheedle
+wheedled
+wheedles
+wheedling
+wheel
+wheelbarrow
+wheelbarrows
+wheelchair
+wheelchairs
+wheeled
+wheeling
+wheels
+wheeze
+wheezed
+wheezes
+wheezing
+when
+whence
+whenever
+whens
+where
+whereabouts
+whereas
+whereby
+wherein
+wheres
+whereupon
+wherever
+wherewithal
+whet
+whether
+whets
+whetted
+whetting
+whew
+which
+whichever
+whiff
+whiffed
+whiffing
+whiffs
+while
+whiled
+whiles
+whiling
+whilst
+whim
+whimper
+whimpered
+whimpering
+whimpers
+whims
+whimsical
+whine
+whined
+whiner
+whiners
+whines
+whining
+whinnied
+whinnies
+whinny
+whinnying
+whip
+whiplash
+whiplashes
+whipped
+whipping
+whippings
+whips
+whir
+whirl
+whirled
+whirling
+whirlpool
+whirlpools
+whirls
+whirlwind
+whirlwinds
+whirred
+whirring
+whirs
+whisk
+whisked
+whisker
+whiskered
+whiskers
+whiskey
+whiskeys
+whisking
+whisks
+whiskys
+whisper
+whispered
+whispering
+whispers
+whistle
+whistled
+whistles
+whistling
+white
+whiten
+whitened
+whiteness
+whitening
+whitens
+whiter
+whites
+whitest
+whitewash
+whitewashed
+whitewashes
+whitewashing
+whittle
+whittled
+whittles
+whittling
+whiz
+whizzed
+whizzes
+whizzing
+who
+whoa
+whodunit
+whodunits
+whoever
+whole
+wholehearted
+wholeheartedly
+wholes
+wholesale
+wholesaled
+wholesaler
+wholesalers
+wholesales
+wholesaling
+wholesome
+wholly
+whom
+whoop
+whooped
+whooping
+whoops
+whoosh
+whooshed
+whooshes
+whooshing
+whopper
+whoppers
+whore
+whores
+whose
+why
+whys
+wick
+wicked
+wickeder
+wickedest
+wickedly
+wickedness
+wicker
+wickers
+wicket
+wickets
+wicks
+wide
+widely
+widen
+widened
+widening
+widens
+wider
+widespread
+widest
+widow
+widowed
+widower
+widowers
+widowing
+widows
+width
+widths
+wield
+wielded
+wielding
+wields
+wiener
+wieners
+wife
+wig
+wigged
+wigging
+wiggle
+wiggled
+wiggles
+wiggling
+wigs
+wigwam
+wigwams
+wild
+wildcat
+wildcats
+wildcatted
+wildcatting
+wilder
+wilderness
+wildernesses
+wildest
+wildfire
+wildfires
+wildlife
+wildly
+wildness
+wilds
+wile
+wiles
+wilier
+wiliest
+will
+willed
+willful
+willfully
+willing
+willingly
+willingness
+willow
+willows
+willowy
+willpower
+wills
+wilt
+wilted
+wilting
+wilts
+wily
+wimp
+wimpier
+wimpiest
+wimps
+wimpy
+win
+wince
+winced
+winces
+winch
+winched
+winches
+winching
+wincing
+wind
+windbreaker
+windbreakers
+winded
+windfall
+windfalls
+windier
+windiest
+winding
+windmill
+windmilled
+windmilling
+windmills
+window
+windowing
+windowpane
+windowpanes
+windows
+windowsill
+windowsills
+windpipe
+windpipes
+winds
+windscreen
+windscreens
+windshield
+windshields
+windsurf
+windsurfed
+windsurfing
+windsurfs
+windswept
+windy
+wine
+wined
+wineglass
+wineglasses
+wines
+wing
+winged
+wingers
+winging
+wings
+wingspan
+wingspans
+wingtip
+wingtips
+wining
+wink
+winked
+winking
+winks
+winner
+winners
+winning
+winnings
+wino
+winos
+wins
+winsome
+winsomer
+winsomest
+winter
+wintered
+wintering
+winters
+wintertime
+wintrier
+wintriest
+wintry
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+wire
+wired
+wires
+wiretap
+wiretapped
+wiretapping
+wiretaps
+wirier
+wiriest
+wiring
+wiry
+wisdom
+wise
+wisecrack
+wisecracked
+wisecracking
+wisecracks
+wisely
+wiser
+wises
+wisest
+wish
+wishbone
+wishbones
+wished
+wishes
+wishful
+wishing
+wisp
+wispier
+wispiest
+wisps
+wispy
+wist
+wistful
+wistfully
+wit
+witch
+witchcraft
+witched
+witches
+witching
+with
+withdraw
+withdrawal
+withdrawals
+withdrawing
+withdrawn
+withdraws
+withdrew
+wither
+withered
+withering
+withers
+withheld
+withhold
+withholding
+withholds
+within
+without
+withstand
+withstanding
+withstands
+withstood
+witless
+witness
+witnessed
+witnesses
+witnessing
+wits
+witticism
+witticisms
+wittier
+wittiest
+witting
+witty
+wive
+wives
+wiz
+wizard
+wizards
+wizened
+wobble
+wobbled
+wobbles
+wobblier
+wobbliest
+wobbling
+wobbly
+woe
+woebegone
+woes
+wok
+woke
+woken
+woks
+wolf
+wolfed
+wolfing
+wolfs
+wolves
+woman
+womanhood
+womankind
+womb
+wombat
+wombats
+wombs
+women
+won
+wonder
+wondered
+wonderful
+wonderfully
+wondering
+wonderland
+wonderlands
+wonders
+wondrous
+wont
+woo
+wood
+woodchuck
+woodchucks
+wooded
+wooden
+woodener
+woodenest
+woodier
+woodies
+woodiest
+wooding
+woodland
+woodlands
+woodpecker
+woodpeckers
+woods
+woodsman
+woodsmen
+woodwind
+woodwinds
+woodwork
+woody
+wooed
+woof
+woofed
+woofing
+woofs
+wooing
+wool
+woolen
+woolens
+woollier
+woollies
+woolliest
+woolly
+woos
+woozier
+wooziest
+woozy
+word
+worded
+wordier
+wordiest
+wording
+wordings
+words
+wordy
+wore
+work
+workable
+workaholic
+workaholics
+workbench
+workbenches
+workbook
+workbooks
+worked
+worker
+workers
+workfare
+workforce
+working
+workings
+workload
+workloads
+workman
+workmanlike
+workmanship
+workmen
+workout
+workouts
+workplace
+works
+worksheet
+worksheets
+workshop
+workshops
+workstation
+workstations
+world
+worldlier
+worldliest
+worldly
+worlds
+worldwide
+worm
+wormed
+wormhole
+wormholes
+worming
+worms
+worn
+worried
+worries
+worrisome
+worry
+worrying
+worryings
+worse
+worsen
+worsened
+worsening
+worsens
+worship
+worshiped
+worshiper
+worshipers
+worshiping
+worships
+worst
+worsted
+worsting
+worsts
+worth
+worthier
+worthies
+worthiest
+worthless
+worthwhile
+worthy
+wot
+would
+woulds
+wound
+wounded
+wounder
+wounding
+wounds
+wove
+woven
+wow
+wowed
+wowing
+wows
+wrangle
+wrangled
+wrangler
+wranglers
+wrangles
+wrangling
+wrap
+wrapped
+wrapper
+wrappers
+wrapping
+wrappings
+wraps
+wrath
+wreak
+wreaked
+wreaking
+wreaks
+wreath
+wreathe
+wreathed
+wreathes
+wreathing
+wreaths
+wreck
+wreckage
+wrecked
+wrecker
+wrecking
+wrecks
+wren
+wrench
+wrenched
+wrenches
+wrenching
+wrens
+wrest
+wrested
+wresting
+wrestle
+wrestled
+wrestler
+wrestlers
+wrestles
+wrestling
+wrests
+wretch
+wretched
+wretcheder
+wretchedest
+wretches
+wriggle
+wriggled
+wriggles
+wriggling
+wright
+wring
+wringer
+wringers
+wringing
+wrings
+wrinkle
+wrinkled
+wrinkles
+wrinkling
+wrist
+wrists
+wristwatch
+wristwatches
+writ
+writable
+write
+writer
+writers
+writes
+writhe
+writhed
+writhes
+writhing
+writing
+writings
+writs
+written
+wrong
+wrongdoer
+wrongdoers
+wrongdoing
+wrongdoings
+wronged
+wronger
+wrongest
+wrongful
+wrongfully
+wronging
+wrongly
+wrongs
+wrote
+wrought
+wrung
+wry
+wryer
+wryest
+wryly
+xenophobia
+xenophobic
+xylophone
+xylophones
+yacht
+yachted
+yachting
+yachts
+yak
+yakked
+yakking
+yaks
+yam
+yams
+yank
+yanked
+yanking
+yanks
+yap
+yapped
+yapping
+yaps
+yard
+yards
+yardstick
+yardsticks
+yarmulke
+yarmulkes
+yarn
+yarns
+yawn
+yawned
+yawning
+yawns
+yeah
+yeahs
+year
+yearbook
+yearbooks
+yearlies
+yearling
+yearlings
+yearly
+yearn
+yearned
+yearning
+yearnings
+yearns
+years
+yeast
+yeasts
+yell
+yelled
+yelling
+yellow
+yellowed
+yellower
+yellowest
+yellowing
+yellowish
+yellows
+yells
+yelp
+yelped
+yelping
+yelps
+yen
+yens
+yep
+yeps
+yes
+yeses
+yessed
+yessing
+yest
+yesterday
+yesterdays
+yet
+yeti
+yew
+yews
+yield
+yielded
+yielding
+yields
+yippee
+yo
+yodel
+yodeled
+yodeling
+yodels
+yoga
+yogurt
+yogurts
+yoke
+yoked
+yokel
+yokels
+yokes
+yoking
+yolk
+yolks
+yonder
+you
+young
+younger
+youngest
+youngster
+youngsters
+your
+yours
+yourself
+yourselves
+yous
+youth
+youthful
+youths
+yowl
+yowled
+yowling
+yowls
+yuck
+yuckier
+yuckiest
+yucky
+yum
+yummier
+yummiest
+yummy
+yuppie
+yuppies
+zanier
+zanies
+zaniest
+zany
+zap
+zapped
+zapping
+zaps
+zeal
+zealous
+zealously
+zebra
+zebras
+zenith
+zeniths
+zero
+zeroed
+zeroing
+zeros
+zest
+zests
+zeta
+zigzag
+zigzagged
+zigzagging
+zigzags
+zillion
+zillions
+zinc
+zincked
+zincking
+zincs
+zip
+zipped
+zipper
+zippered
+zippering
+zippers
+zipping
+zips
+zit
+zits
+zodiac
+zodiacs
+zombie
+zombies
+zone
+zoned
+zones
+zoning
+zoo
+zoological
+zoologist
+zoologists
+zoology
+zoom
+zoomed
+zooming
+zooms
+zoos
+zucchini
+zucchinis
diff --git a/python_crash_tutorial/Ch3/dna.py b/python_crash_tutorial/Ch3/dna.py
new file mode 100755
index 0000000..c90478c
--- /dev/null
+++ b/python_crash_tutorial/Ch3/dna.py
@@ -0,0 +1,36 @@
+# dna.py
+
+from random import choice
+
+def complementary_base(base):
+ """Return complement of single base."""
+ if base == "A":
+ return "T"
+ elif base == "T":
+ return "A"
+ elif base == "C":
+ return "G"
+ elif base == "G":
+ return "C"
+ return base # leave anything else
+
+def complement(dna):
+ """Return complement of dna strand."""
+ result = ""
+ for base in dna:
+ result += complementary_base(base)
+ return result
+
+def random_dna(length=30):
+ """Return random strand of dna of given length."""
+ fragment = ""
+ for _ in range(length):
+ fragment += choice("ACGT")
+ return fragment
+
+def main():
+ dna = random_dna()
+ print("Sequence :", dna)
+ print("Complement:", complement(dna))
+
+main()
diff --git a/python_crash_tutorial/Ch3/removepunc.py b/python_crash_tutorial/Ch3/removepunc.py
new file mode 100755
index 0000000..c17f651
--- /dev/null
+++ b/python_crash_tutorial/Ch3/removepunc.py
@@ -0,0 +1,11 @@
+# removepunc.py
+
+from string import punctuation
+
+def remove_punctuation(s):
+ """Return copy of s with punctuation removed."""
+ for c in punctuation:
+ if c in s:
+ s = s.replace(c, "")
+ return s
+
diff --git a/python_crash_tutorial/Ch3/speller.py b/python_crash_tutorial/Ch3/speller.py
new file mode 100755
index 0000000..14dce96
--- /dev/null
+++ b/python_crash_tutorial/Ch3/speller.py
@@ -0,0 +1,16 @@
+# speller.py
+
+def contents(filename):
+ """Return contents of text file as string."""
+ with open(filename) as f:
+ return f.read()
+
+def main():
+ validwords = contents("dictionary.txt").split()
+ word = input("Enter a word: ")
+ if word.lower() in validwords:
+ print("Looks ok")
+ else:
+ print("Not in this dictionary")
+
+main()
diff --git a/python_crash_tutorial/Ch3/speller2.py b/python_crash_tutorial/Ch3/speller2.py
new file mode 100755
index 0000000..e982a4a
--- /dev/null
+++ b/python_crash_tutorial/Ch3/speller2.py
@@ -0,0 +1,29 @@
+# speller2.py
+
+def contents(filename):
+ """Return contents of text file as string.
+
+ Args:
+ filename - name of file
+ Returns:
+ contents of file as one string
+ Raises:
+ OSError if error opening or reading file
+ """
+ with open(filename) as f:
+ return f.read()
+
+def main():
+ try:
+ validwords = contents("dictioary.txt").split()
+ except OSError as err:
+ print(err)
+ print("Stopping, unable to read dictionary file.")
+ return
+ word = input("Enter a word: ")
+ if word.lower() in validwords:
+ print("Looks ok")
+ else:
+ print("Not in this dictionary")
+
+main()
diff --git a/python_crash_tutorial/Ch3/wordfreq.py b/python_crash_tutorial/Ch3/wordfreq.py
new file mode 100755
index 0000000..66e5047
--- /dev/null
+++ b/python_crash_tutorial/Ch3/wordfreq.py
@@ -0,0 +1,9 @@
+def frequency(items):
+ """Return count of each item in list of items."""
+ count = {}
+ for item in items:
+ if item in count:
+ count[item] += 1
+ else:
+ count[item] = 1
+ return count
diff --git a/python_crash_tutorial/Ch3/wordlist.py b/python_crash_tutorial/Ch3/wordlist.py
new file mode 100755
index 0000000..6bac943
--- /dev/null
+++ b/python_crash_tutorial/Ch3/wordlist.py
@@ -0,0 +1,23 @@
+# wordlist.py
+
+from string import punctuation
+
+def remove_punctuation(s):
+ """Return copy of s with punctuation removed."""
+ for c in punctuation:
+ if c in s:
+ s = s.replace(c, "")
+ return s
+
+def wordlist(text):
+ """Return list of words in string."""
+ return remove_punctuation(text).split()
+
+def main():
+ examples = ["Is this a good example?",
+ "Yes, of course it is!",
+ "Ok - thanks."]
+ for text in examples:
+ print(wordlist(text))
+
+main()
diff --git a/python_crash_tutorial/Ch4/.DS_Store b/python_crash_tutorial/Ch4/.DS_Store
new file mode 100755
index 0000000..e117c43
Binary files /dev/null and b/python_crash_tutorial/Ch4/.DS_Store differ
diff --git a/python_crash_tutorial/Ch4/blend.py b/python_crash_tutorial/Ch4/blend.py
new file mode 100755
index 0000000..8186376
--- /dev/null
+++ b/python_crash_tutorial/Ch4/blend.py
@@ -0,0 +1,35 @@
+# blend.py
+
+from PIL import Image
+
+def avg(x, y):
+ """Return average of x and y."""
+ return (x + y)/2
+
+def blend(img1, img2):
+ """Return blend of two images of the same size."""
+ if img1.size != img2.size:
+ raise ValueError("Images are not the same size.")
+ width, height = img1.size
+ newimg = Image.new("RGB", (width, height))
+ for j in range(height):
+ for i in range(width):
+ r1, g1, b1 = img1.getpixel((i, j))
+ r2, g2, b2 = img2.getpixel((i, j))
+ newimg.putpixel((i, j),
+ (int(avg(r1, r2)),
+ int(avg(g1, g2)),
+ int(avg(b1, b2))))
+ return newimg
+
+def main():
+ try:
+ img1 = Image.open("lake.jpg")
+ img2 = Image.open("lake2.jpg")
+ newimg = blend(img1, img2)
+ newimg.save("lake_blend.jpg")
+ except (OSError, ValueError) as err:
+ print("Error:", err)
+ print("Unable to process blending.")
+
+main()
diff --git a/python_crash_tutorial/Ch4/double.py b/python_crash_tutorial/Ch4/double.py
new file mode 100755
index 0000000..4a86eb1
--- /dev/null
+++ b/python_crash_tutorial/Ch4/double.py
@@ -0,0 +1,23 @@
+# double.py
+
+from PIL import Image
+
+def double(img):
+ """Return copy of img with doubled width, height."""
+ width, height = img.size
+ newimg = Image.new("RGB", (2*width, 2*height))
+ for j in range(height):
+ for i in range(width):
+ color = img.getpixel((i, j))
+ newimg.putpixel((2*i, 2*j), color)
+ newimg.putpixel((2*i, 2*j + 1), color)
+ newimg.putpixel((2*i + 1, 2*j), color)
+ newimg.putpixel((2*i + 1, 2*j + 1), color)
+ return newimg
+
+def main():
+ img = Image.open("lake.jpg")
+ newimg = double(img)
+ newimg.save("lake_double.jpg")
+
+main()
diff --git a/python_crash_tutorial/Ch4/dutchflag.jpg b/python_crash_tutorial/Ch4/dutchflag.jpg
new file mode 100755
index 0000000..96faeaa
Binary files /dev/null and b/python_crash_tutorial/Ch4/dutchflag.jpg differ
diff --git a/python_crash_tutorial/Ch4/dutchflag.py b/python_crash_tutorial/Ch4/dutchflag.py
new file mode 100755
index 0000000..ef2068f
--- /dev/null
+++ b/python_crash_tutorial/Ch4/dutchflag.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-12
+# dutchflag.py
+
+from PIL import Image
+
+def dutchflag(width, height):
+ """Return new image of Dutch flag."""
+ img = Image.new("RGB", (width, height))
+ for j in range(height):
+ for i in range(width):
+ if j < height/3:
+ img.putpixel((i, j), (255, 0, 0))
+ elif j < 2*height/3:
+ img.putpixel((i, j), (0, 255, 0))
+ else:
+ img.putpixel((i, j), (0, 0, 255))
+ return img
+
+def main():
+ img = dutchflag(600, 400)
+ img.save("dutchflag.jpg")
+
+main()
diff --git a/python_crash_tutorial/Ch4/grayscale.py b/python_crash_tutorial/Ch4/grayscale.py
new file mode 100755
index 0000000..5c0664b
--- /dev/null
+++ b/python_crash_tutorial/Ch4/grayscale.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Author: xurongzhong#126.com wechat:pythontesting qq:37391319
+# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)
+# qq群:144081101 591302926 567351477
+# CreateDate: 2018-6-12
+# grayscale.py
+
+from PIL import Image
+
+def grayscale(img):
+ """Return copy of img in grayscale."""
+ width, height = img.size
+ newimg = Image.new("RGB", (width, height))
+ for j in range(height):
+ for i in range(width):
+ r, g, b = img.getpixel((i, j))
+ avg = (r + g + b) // 3
+ newimg.putpixel((i, j), (avg, avg, avg))
+ return newimg
+
+def main():
+ img = Image.open("lake.jpg")
+ newimg = grayscale(img)
+ newimg.save("lake_gray.jpg")
+
+main()
diff --git a/python_crash_tutorial/Ch4/lake.jpg b/python_crash_tutorial/Ch4/lake.jpg
new file mode 100755
index 0000000..50df70e
Binary files /dev/null and b/python_crash_tutorial/Ch4/lake.jpg differ
diff --git a/python_crash_tutorial/Ch4/lake2.jpg b/python_crash_tutorial/Ch4/lake2.jpg
new file mode 100755
index 0000000..f81f09f
Binary files /dev/null and b/python_crash_tutorial/Ch4/lake2.jpg differ
diff --git a/python_crash_tutorial/Ch4/lake_gray.jpg b/python_crash_tutorial/Ch4/lake_gray.jpg
new file mode 100644
index 0000000..691f9fe
Binary files /dev/null and b/python_crash_tutorial/Ch4/lake_gray.jpg differ
diff --git a/python_crash_tutorial/Ch4/rotate_right.py b/python_crash_tutorial/Ch4/rotate_right.py
new file mode 100755
index 0000000..1cfef24
--- /dev/null
+++ b/python_crash_tutorial/Ch4/rotate_right.py
@@ -0,0 +1,20 @@
+# rotate_right.py
+
+from PIL import Image
+
+def rotate_right(img):
+ """Return copy of img rotated right 90 degrees."""
+ width, height = img.size
+ newimg = Image.new("RGB", (height, width))
+ for j in range(height):
+ for i in range(width):
+ color = img.getpixel((i, j))
+ newimg.putpixel((height - j - 1, i), color)
+ return newimg
+
+def main():
+ img = Image.open("lake.jpg")
+ newimg = rotate_right(img)
+ newimg.save("lake_rotate_right.jpg")
+
+main()
diff --git a/python_crash_tutorial/Ch5/.DS_Store b/python_crash_tutorial/Ch5/.DS_Store
new file mode 100755
index 0000000..5008ddf
Binary files /dev/null and b/python_crash_tutorial/Ch5/.DS_Store differ
diff --git a/python_crash_tutorial/Ch5/ball.py b/python_crash_tutorial/Ch5/ball.py
new file mode 100755
index 0000000..384df33
--- /dev/null
+++ b/python_crash_tutorial/Ch5/ball.py
@@ -0,0 +1,17 @@
+# ball.py
+
+from turtle import Turtle, exitonclick
+
+def main():
+ """Bouncing ball."""
+ ball = Turtle()
+ ball.shape("circle")
+ ball.penup()
+ ball.speed(0)
+ for _ in range(100):
+ ball.forward(5)
+ if ball.xcor() > 340:
+ ball.left(180)
+ exitonclick()
+
+main()
diff --git a/python_crash_tutorial/Ch5/ballclass.py b/python_crash_tutorial/Ch5/ballclass.py
new file mode 100755
index 0000000..439ed16
--- /dev/null
+++ b/python_crash_tutorial/Ch5/ballclass.py
@@ -0,0 +1,26 @@
+# ballclass.py
+
+from turtle import Turtle, exitonclick
+
+class Ball(Turtle):
+ """Round turtle that bounces."""
+ def __init__(self):
+ super().__init__()
+ self.shape("circle")
+ self.penup()
+ self.speed(0)
+
+ def move(self):
+ """Move forward, bouncing against right side."""
+ self.forward(5)
+ if self.xcor() > 340:
+ self.left(180)
+
+def main():
+ ball = Ball()
+ for _ in range(100):
+ ball.move()
+ exitonclick()
+
+if __name__ == "__main__":
+ main()
diff --git a/python_crash_tutorial/Ch5/chuck.py b/python_crash_tutorial/Ch5/chuck.py
new file mode 100755
index 0000000..f27abbe
--- /dev/null
+++ b/python_crash_tutorial/Ch5/chuck.py
@@ -0,0 +1,35 @@
+# chuck.py
+
+from dice import Dice
+
+class ChuckALuck:
+ """Play the game Chuck-a-Luck."""
+ def __init__(self):
+ self.dice = Dice(3)
+ self.score = 0
+
+ def play_once(self, guess):
+ """Roll dice and update score based on guess."""
+ self.dice.rollall()
+ print("The roll:", self.dice)
+ matches = self.dice.values().count(guess)
+ score = matches if matches > 0 else -1
+ print("Score:", score)
+ self.score += score
+
+ def play(self):
+ """Allow user to repeatedly guess."""
+ print("Welcome to Chuck-A-Luck")
+ guess = int(input("Guess 1-6 (0 to stop): "))
+ while guess != 0:
+ self.play_once(guess)
+ print("Current total:", self.score)
+ guess = int(input("Guess 1-6 (0 to stop): "))
+ print("Thanks for playing.")
+
+def main():
+ game = ChuckALuck()
+ game.play()
+
+if __name__ == "__main__":
+ main()
diff --git a/python_crash_tutorial/Ch5/dice.py b/python_crash_tutorial/Ch5/dice.py
new file mode 100755
index 0000000..b15dea8
--- /dev/null
+++ b/python_crash_tutorial/Ch5/dice.py
@@ -0,0 +1,38 @@
+# dice.py
+
+from random import randint
+
+class Dice:
+ def __init__(self, n):
+ self.dice = [Die() for _ in range(n)]
+
+ def rollall(self):
+ for die in self.dice:
+ die.roll()
+
+ def values(self):
+ return [int(die) for die in self.dice]
+
+ def __str__(self):
+ return str(self.values())
+
+class Die:
+ def __init__(self):
+ self.value = randint(1, 6)
+
+ def roll(self):
+ self.value = randint(1, 6)
+
+ def __str__(self):
+ return str(self.value)
+
+ def __int__(self):
+ return self.value
+
+def main():
+ dice = Dice(5)
+ dice.rollall()
+ print(dice)
+
+if __name__ == "__main__":
+ main()
diff --git a/python_crash_tutorial/Ch5/rolldice.py b/python_crash_tutorial/Ch5/rolldice.py
new file mode 100755
index 0000000..cbf6950
--- /dev/null
+++ b/python_crash_tutorial/Ch5/rolldice.py
@@ -0,0 +1,27 @@
+# rolldice.py
+
+from random import randint
+
+class Die:
+ """A single 6-sided die."""
+
+ def __init__(self):
+ """Initialize to a random value."""
+ self.value = randint(1, 6)
+
+ def roll(self):
+ """Simulate rolling the die."""
+ self.value = randint(1, 6)
+
+ def __str__(self):
+ return str(self.value)
+
+def main():
+ die1 = Die()
+ die2 = Die()
+ for _ in range(10):
+ die1.roll()
+ die2.roll()
+ print(die1, die2)
+
+main()
diff --git a/python_crash_tutorial/Ch5/tempgui.py b/python_crash_tutorial/Ch5/tempgui.py
new file mode 100755
index 0000000..7917726
--- /dev/null
+++ b/python_crash_tutorial/Ch5/tempgui.py
@@ -0,0 +1,37 @@
+from tkinter import *
+
+class TempConverter(Frame):
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.parent = parent
+ parent.title("Temperature Converter")
+ self.grid(row=0, column=0, padx=80, pady=60)
+ self.fahr = DoubleVar()
+ self.fahr.set(32)
+ self.cels = StringVar()
+ self.refresh(0)
+ self.create_widgets()
+
+ def create_widgets(self):
+ self.cels_lbl = Label(self, textvariable=self.cels)
+ self.cels_lbl.grid(row=0, column=0, pady=30,
+ columnspan=2)
+ self.f_lbl = Label(self, text="deg F:")
+ self.f_lbl.grid(row=1, column=0, pady=10, sticky=E)
+ self.f_scl = Scale(self, variable=self.fahr, to=500,
+ from_=-100, command=self.refresh,
+ length=400, orient=HORIZONTAL)
+ self.f_scl.grid(row=1, column=1, padx=10, pady=10)
+ self.quit = Button(self, text="Quit", padx=20,
+ pady=5, command=self.parent.quit)
+ self.quit.grid(row=2, column=1, sticky=E, padx=10,
+ pady=30)
+
+ def refresh(self, _):
+ f = self.fahr.get()
+ c = (5/9)*(f - 32)
+ self.cels.set("{:.2f} deg C".format(c))
+
+root = Tk()
+gui = TempConverter(root)
+root.mainloop()
diff --git a/python_crash_tutorial/examples.zip b/python_crash_tutorial/examples.zip
new file mode 100755
index 0000000..075b0f2
Binary files /dev/null and b/python_crash_tutorial/examples.zip differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._circle_at.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._circle_at.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._circle_at.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._face.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._face.py
new file mode 100755
index 0000000..0666abf
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._face.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._polygon.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._polygon.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._polygon.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._square.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._square.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch1/._square.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_accum.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_accum.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_accum.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_table.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_table.py
new file mode 100755
index 0000000..de2914b
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._balance_table.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._factorial.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._factorial.py
new file mode 100755
index 0000000..727157f
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._factorial.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._find.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._find.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._find.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._guess.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._guess.py
new file mode 100755
index 0000000..b38eee1
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._guess.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._loop.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._loop.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._loop.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._mymax2.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._mymax2.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._mymax2.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._savings_goal.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._savings_goal.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch2/._savings_goal.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._balance_table_format.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._balance_table_format.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._balance_table_format.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._conjugator.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._conjugator.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._conjugator.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._converter.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._converter.py
new file mode 100755
index 0000000..3c7d828
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._converter.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._dictionary.txt b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._dictionary.txt
new file mode 100755
index 0000000..7b941be
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._dictionary.txt differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller2.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller2.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch3/._speller2.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake.jpg b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake.jpg
new file mode 100755
index 0000000..2127151
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake.jpg differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake2.jpg b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake2.jpg
new file mode 100755
index 0000000..b4cbbee
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._lake2.jpg differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._rotate_right.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._rotate_right.py
new file mode 100755
index 0000000..b320365
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch4/._rotate_right.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ball.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ball.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ball.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ballclass.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ballclass.py
new file mode 100755
index 0000000..df7c60a
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._ballclass.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._tempgui.py b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._tempgui.py
new file mode 100755
index 0000000..7dfdeed
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/Ch5/._tempgui.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._census.csv b/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._census.csv
new file mode 100755
index 0000000..e27d1e1
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._census.csv differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._csv_ex.py b/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._csv_ex.py
new file mode 100755
index 0000000..c59c24b
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/HowTo/._csv_ex.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._.DS_Store b/python_crash_tutorial/examples/__MACOSX/examples/InText/._.DS_Store
new file mode 100755
index 0000000..09fa6bd
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._.DS_Store differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._accum.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._accum.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._accum.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._dicts.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._dicts.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._dicts.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._list.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._list.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._list.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._listaccum.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._listaccum.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._listaccum.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._mymin2.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._mymin2.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._mymin2.py differ
diff --git a/python_crash_tutorial/examples/__MACOSX/examples/InText/._splitjoin.py b/python_crash_tutorial/examples/__MACOSX/examples/InText/._splitjoin.py
new file mode 100755
index 0000000..0eea21e
Binary files /dev/null and b/python_crash_tutorial/examples/__MACOSX/examples/InText/._splitjoin.py differ
diff --git a/python_crash_tutorial/examples/examples/.DS_Store b/python_crash_tutorial/examples/examples/.DS_Store
new file mode 100755
index 0000000..2937c2e
Binary files /dev/null and b/python_crash_tutorial/examples/examples/.DS_Store differ
diff --git a/python_crash_tutorial/examples/examples/HowTo/census.csv b/python_crash_tutorial/examples/examples/HowTo/census.csv
new file mode 100755
index 0000000..a55b941
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/HowTo/census.csv
@@ -0,0 +1,320 @@
+Zip Code,Total Population,Median Age,Total Males,Total Females,Total Households,Average Household Size
+91371,1,73.5,0,1,1,1
+90001,57110,26.6,28468,28642,12971,4.4
+90002,51223,25.5,24876,26347,11731,4.36
+90003,66266,26.3,32631,33635,15642,4.22
+90004,62180,34.8,31302,30878,22547,2.73
+90005,37681,33.9,19299,18382,15044,2.5
+90006,59185,32.4,30254,28931,18617,3.13
+90007,40920,24,20915,20005,11944,3
+90008,32327,39.7,14477,17850,13841,2.33
+90010,3800,37.8,1874,1926,2014,1.87
+90011,103892,26.2,52794,51098,22168,4.67
+90012,31103,36.3,19493,11610,10327,2.12
+90013,11772,44.6,7629,4143,6416,1.26
+90014,7005,44.8,4471,2534,4109,1.34
+90015,18986,31.3,9833,9153,7420,2.45
+90016,47596,33.9,22778,24818,16145,2.93
+90017,23768,29.4,12818,10950,9338,2.53
+90018,49310,33.2,23770,25540,15493,3.12
+90019,64458,35.8,31442,33016,23344,2.7
+90020,38967,34.6,19381,19586,16514,2.35
+90021,3951,44.3,2790,1161,1561,1.57
+90022,67179,29.8,33216,33963,17023,3.94
+90023,45903,28.4,23037,22866,10727,4.26
+90024,47452,23.6,22248,25204,17903,2.03
+90025,42147,34.7,20859,21288,21228,1.97
+90026,67869,34,34515,33354,24956,2.68
+90027,45151,38.3,22362,22789,21929,1.99
+90028,28714,34,16056,12658,14964,1.78
+90029,38617,34.6,19575,19042,13883,2.7
+90031,39316,33.5,19546,19770,11156,3.49
+90032,45786,32.4,22564,23222,12765,3.52
+90033,48852,29.2,24425,24427,12924,3.66
+90034,57964,32.8,28828,29136,25592,2.23
+90035,28418,37.5,13326,15092,12814,2.19
+90036,36865,33.9,17914,18951,18646,1.96
+90037,62276,28.8,31187,31089,15869,3.85
+90038,28917,33.1,15383,13534,11928,2.41
+90039,28514,38.8,14383,14131,11436,2.47
+90040,12520,31.2,6129,6391,3317,3.75
+90041,27425,39,13212,14213,9513,2.71
+90042,62430,33.6,30836,31594,19892,3.11
+90043,44789,38.7,20561,24228,16075,2.76
+90044,89779,28.6,43128,46651,25144,3.55
+90045,39480,35.6,18958,20522,15224,2.37
+90046,48581,38.5,25854,22727,28534,1.69
+90047,48606,36.2,22129,26477,16168,2.99
+90048,21397,39.2,10132,11265,11821,1.77
+90049,35482,41.3,16359,19123,16657,2.09
+90056,7827,48.4,3436,4391,3371,2.32
+90057,44998,31.2,24300,20698,15658,2.81
+90058,3223,26,1555,1668,892,3.6
+90059,40952,25.7,19623,21329,9596,4.19
+90061,26872,28.4,13049,13823,6892,3.85
+90062,32821,31.8,15720,17101,9155,3.55
+90063,55758,29,27843,27915,13260,4.19
+90064,25403,40,12297,13106,10968,2.29
+90065,45527,36.1,22873,22654,14476,3.12
+90066,55277,37.3,27714,27563,23985,2.29
+90067,2424,65.3,1074,1350,1510,1.61
+90068,22286,39.4,12018,10268,12326,1.8
+90069,20483,41.5,12153,8330,13364,1.53
+90071,15,45.5,13,2,0,0
+90073,539,56.9,506,33,4,1.25
+90077,9377,47.9,4594,4783,3615,2.57
+90079,0,0,0,0,0,0
+90089,3217,19.3,1436,1781,31,1.94
+90090,0,0,0,0,0,0
+90094,5464,33.7,2559,2905,2949,1.85
+90095,3,52.5,2,1,2,1.5
+90201,101279,27.8,50658,50621,24104,4.16
+90210,21741,47.5,10292,11449,8669,2.49
+90211,8434,40.6,3849,4585,3706,2.28
+90212,11555,41.2,5211,6344,5567,2.08
+90220,49328,29.8,23773,25555,12741,3.85
+90221,53704,26.7,26346,27358,11630,4.57
+90222,31869,27.3,15375,16494,7520,4.21
+90230,31766,39.1,14932,16834,12883,2.45
+90232,15149,38.6,7333,7816,6605,2.28
+90240,25876,35.5,12501,13375,7632,3.36
+90241,42399,33.9,20466,21933,13617,3.09
+90242,43497,31.6,21207,22290,12687,3.41
+90245,16654,39.2,8304,8350,7085,2.34
+90247,47487,35.5,23217,24270,15830,2.96
+90248,9947,41.2,4823,5124,3427,2.89
+90249,26669,37.2,12897,13772,8880,2.98
+90250,93193,31.9,45113,48080,31087,2.98
+90254,19506,37,10273,9233,9550,2.04
+90255,75066,29.1,37525,37541,18419,4.06
+90260,34924,32.7,17509,17415,10429,3.33
+90262,69745,27.8,33919,35826,14669,4.57
+90263,1612,19.7,665,947,0,0
+90265,18116,46.5,9159,8957,7174,2.39
+90266,35135,40.9,17605,17530,14038,2.5
+90270,27372,27.9,13992,13380,6554,4.16
+90272,22986,47.3,10952,12034,9212,2.49
+90274,25209,49.4,12199,13010,9479,2.66
+90275,41804,47.8,20283,21521,15618,2.65
+90277,35293,42,17521,17772,16910,2.07
+90278,40071,38.2,19848,20223,16009,2.49
+90280,94396,29.4,46321,48075,23278,4.05
+90290,6368,45,3180,3188,2612,2.44
+90291,28341,37.6,14757,13584,14261,1.95
+90292,21576,41.2,10729,10847,12654,1.7
+90293,12132,40.4,5890,6242,6575,1.83
+90301,36568,32.6,17633,18935,11895,3.01
+90302,29415,32.8,13803,15612,10684,2.74
+90303,26176,30.4,12733,13443,7290,3.58
+90304,28210,28.1,14503,13707,6634,4.22
+90305,14853,43.3,6552,8301,5933,2.46
+90401,6722,37.8,3524,3198,4188,1.49
+90402,12250,47,5809,6441,5301,2.31
+90403,24525,40.8,11426,13099,13970,1.74
+90404,21360,37.4,10292,11068,10089,2.01
+90405,27186,40.8,13364,13822,14376,1.87
+90501,43180,35,21483,21697,14610,2.94
+90502,18010,40.2,8811,9199,5717,2.94
+90503,44383,40.8,21481,22902,17183,2.55
+90504,32102,40.3,15886,16216,11580,2.76
+90505,36678,43,17684,18994,14244,2.55
+90506,0,0,0,0,0,0
+90601,31974,36.6,15312,16662,11027,2.89
+90602,25777,30.9,12720,13057,7980,3.09
+90603,20063,39.4,9694,10369,6788,2.93
+90604,39407,34.1,19270,20137,11932,3.29
+90605,40331,32.6,20033,20298,10527,3.81
+90606,32396,33.5,15936,16460,8633,3.72
+90621,35153,32.1,17377,17776,10304,3.38
+90623,15554,41.2,7516,8038,5072,3.06
+90630,47993,40,23204,24789,15785,3.02
+90631,67619,34.8,33320,34299,21452,3.13
+90638,49012,37.9,23520,25492,14821,3.11
+90640,62549,34.7,30189,32360,19027,3.27
+90650,105549,32.5,52364,53185,27130,3.83
+90660,62928,34,30738,32190,16564,3.77
+90670,14866,36.2,7163,7703,4393,3.34
+90701,16591,38.2,8227,8364,4553,3.51
+90703,49399,43.9,23785,25614,15604,3.16
+90704,4090,37.2,2101,1989,1629,2.5
+90706,76615,31.9,37203,39412,23650,3.21
+90710,25457,36.7,12291,13166,8717,2.91
+90712,31499,38.4,15277,16222,10794,2.91
+90713,27925,39,13574,14351,9447,2.95
+90715,20388,33.9,9935,10453,6105,3.33
+90716,14184,28.3,7078,7106,3515,4.03
+90717,21318,39.5,10317,11001,8520,2.48
+90720,21751,41.7,10423,11328,7789,2.74
+90723,54099,28.6,26315,27784,13882,3.87
+90731,59662,35.6,29951,29711,22044,2.62
+90732,21115,45,9843,11272,8611,2.38
+90740,23729,57.5,10423,13306,12830,1.83
+90744,53815,28.7,27298,26517,13999,3.83
+90745,57251,37.1,27754,29497,15210,3.73
+90746,25990,40.7,11944,14046,8050,3.14
+90747,0,0,0,0,0,0
+90755,11074,36.1,5462,5612,4172,2.64
+90802,39347,34.7,20387,18960,19853,1.93
+90803,32031,42.7,15609,16422,17318,1.84
+90804,40311,29.8,19686,20625,14556,2.7
+90805,93524,29,45229,48295,26056,3.56
+90806,42399,30.3,20717,21682,12184,3.44
+90807,31481,39.7,15153,16328,12452,2.49
+90808,38232,41.6,18408,19824,14167,2.69
+90810,36735,31.8,18067,18668,9289,3.9
+90813,58911,27.3,29425,29486,16425,3.5
+90814,19131,37.2,9356,9775,9170,2.06
+90815,39733,37.9,19124,20609,14836,2.53
+90822,117,63.9,109,8,2,4.5
+90831,0,0,0,0,0,0
+91001,36126,41.6,17421,18705,12663,2.83
+91006,31715,42.7,15283,16432,10652,2.98
+91007,34095,43.8,16039,18056,12033,2.73
+91008,1391,54.6,614,777,562,2.39
+91010,26074,38.1,12461,13613,7972,3.2
+91011,20280,45.9,9863,10417,6859,2.95
+91016,40598,37.9,19434,21164,15029,2.69
+91020,8415,40.2,3966,4449,3385,2.43
+91024,10917,46.6,5165,5752,4837,2.26
+91030,25616,40.1,12160,13456,10466,2.43
+91040,20372,43.3,10120,10252,7359,2.72
+91042,27585,40.7,13734,13851,9987,2.74
+91046,156,74,51,105,114,1.37
+91101,20460,33.7,9926,10534,10869,1.86
+91103,27480,35,13481,13999,8492,3.11
+91104,36751,38.2,17874,18877,12922,2.8
+91105,11254,49,5432,5822,5213,2.07
+91106,24229,34.6,11993,12236,10723,2.17
+91107,32940,41.2,15940,17000,13028,2.51
+91108,13361,45.4,6410,6951,4415,3.01
+91201,22781,40.4,11123,11658,8150,2.78
+91202,22830,41.7,10805,12025,8879,2.56
+91203,13220,38.9,6279,6941,5044,2.62
+91204,16032,38.1,7699,8333,5639,2.76
+91205,37810,39.1,18084,19726,14089,2.67
+91206,33065,42.6,15544,17521,13261,2.48
+91207,10506,45.5,4924,5582,4097,2.56
+91208,16245,43.6,7756,8489,6106,2.66
+91210,328,33.9,162,166,178,1.84
+91214,30356,42.5,14642,15714,10551,2.87
+91301,25488,42.7,12511,12977,9208,2.76
+91302,25709,42.4,12487,13222,9303,2.76
+91303,26855,31.1,13907,12948,8697,3.08
+91304,50231,35.9,24827,25404,16532,3
+91306,45061,35.4,22679,22382,13635,3.28
+91307,24474,43.4,11939,12535,8315,2.91
+91311,36557,42.7,17838,18719,13425,2.66
+91316,26898,42.1,12717,14181,11911,2.26
+91321,34882,33.3,17402,17480,11215,3.04
+91324,27669,36.5,13545,14124,9289,2.95
+91325,32417,35.4,15819,16598,11825,2.72
+91326,33708,42.7,16394,17314,11770,2.86
+91330,2702,19.6,1103,1599,2,2.5
+91331,103689,29.5,52358,51331,22465,4.6
+91335,74363,35.5,36596,37767,22855,3.21
+91340,34188,30.1,17130,17058,8176,4.17
+91342,91725,31.9,45786,45939,23543,3.83
+91343,60254,32.3,30145,30109,16802,3.55
+91344,51747,41,25212,26535,16872,3.03
+91345,18496,35.7,9110,9386,5192,3.52
+91350,33348,36.4,16270,17078,10991,3.01
+91351,32362,33.9,16086,16276,10036,3.22
+91352,47807,32.1,23980,23827,11985,3.95
+91354,28722,36.4,14046,14676,9522,3.01
+91355,32605,38.8,15773,16832,12772,2.51
+91356,29458,41.7,14216,15242,11686,2.5
+91361,20438,47.6,9854,10584,8374,2.43
+91362,36045,42.6,17562,18483,13563,2.65
+91364,25851,44,12739,13112,10409,2.47
+91367,39499,41,19171,20328,16697,2.35
+91377,13811,41.7,6641,7170,5158,2.68
+91381,20158,36,9852,10306,6636,3.04
+91384,29855,32.5,18503,11352,6925,3.3
+91387,40328,33,20106,20222,12871,3.13
+91390,19786,40.1,9911,9875,6369,3.07
+91401,39285,36,19613,19672,14380,2.7
+91402,69817,30.1,35095,34722,18194,3.81
+91403,23484,39.4,11277,12207,11358,2.06
+91405,51145,32.6,25498,25647,16256,3.11
+91406,51558,33.6,25956,25602,17042,3.02
+91411,24628,33.8,12495,12133,9177,2.63
+91423,30991,39.2,14789,16202,14876,2.07
+91436,14372,46.5,6890,7482,5552,2.57
+91501,20849,38.3,10040,10809,8235,2.53
+91502,11371,36.4,5402,5969,5001,2.26
+91504,24939,38.6,12006,12933,9180,2.69
+91505,30778,38.9,15121,15657,13180,2.33
+91506,18904,40.9,9115,9789,7555,2.45
+91601,37180,32.9,18932,18248,15970,2.32
+91602,17473,38,8722,8751,9277,1.88
+91604,29034,40.2,14271,14763,14292,2.01
+91605,56343,31.9,28417,27926,15357,3.61
+91606,44958,34.3,22376,22582,14903,3
+91607,27927,38.2,13635,14292,12859,2.15
+91608,0,0,0,0,0,0
+91702,59705,29.4,29486,30219,15455,3.67
+91706,76571,30.5,37969,38602,17504,4.35
+91709,74796,36.6,36954,37842,22940,3.25
+91710,80358,33,42283,38075,21952,3.43
+91711,35705,38.6,16777,18928,11868,2.58
+91722,34409,34,16859,17550,10079,3.41
+91723,18275,35,8783,9492,6296,2.86
+91724,26184,37.9,12780,13404,8508,3.05
+91731,29591,32.9,14888,14703,8007,3.66
+91732,61386,31.4,30755,30631,14700,4.13
+91733,43896,30.5,22191,21705,9918,4.4
+91740,25356,38.5,12269,13087,8376,2.94
+91741,25824,41.8,12498,13326,9126,2.82
+91744,85040,30.9,42564,42476,18648,4.55
+91745,54013,40.1,26287,27726,16188,3.33
+91746,30485,32.4,15116,15369,6743,4.5
+91748,45406,39.8,22368,23038,13311,3.4
+91750,33249,42.6,15881,17368,11944,2.71
+91754,32742,42.9,15620,17122,11193,2.92
+91755,27496,43.4,13271,14225,8760,3.12
+91759,476,47.2,239,237,216,2.2
+91763,36375,30.8,18099,18276,9450,3.81
+91765,46457,40.8,22702,23755,15039,3.08
+91766,71599,28.7,36111,35488,17708,4.01
+91767,48068,31.2,23685,24383,13691,3.47
+91768,34537,27.3,17509,17028,7885,3.87
+91770,62097,38.3,30521,31576,16588,3.7
+91773,33119,42.5,15737,17382,11941,2.73
+91775,23988,41.4,11448,12540,8227,2.9
+91776,38475,39,18751,19724,11776,3.24
+91780,34332,41.1,16438,17894,11318,3.03
+91784,25938,44.5,12729,13209,8934,2.9
+91786,51165,33,24516,26649,18087,2.79
+91789,43079,42.8,20988,22091,12891,3.31
+91790,44907,35.2,21721,23186,12751,3.49
+91791,32414,38,15512,16902,10236,3.15
+91792,30854,35.3,14950,15904,9154,3.35
+91801,52735,39.1,24833,27902,19315,2.71
+91803,30322,39.6,14486,15836,9894,3.04
+92301,32725,25.6,16857,15868,8132,3.81
+92371,16763,37.9,8565,8198,5370,3.11
+92372,6220,41.8,3136,3084,2198,2.83
+92397,4894,44.1,2522,2372,1998,2.45
+92821,35533,38.7,17338,18195,13062,2.72
+92823,3613,38.6,1757,1856,1154,3.13
+92833,51767,36,25643,26124,15849,3.23
+93040,2031,29.3,1052,979,522,3.89
+93063,54366,39,26592,27774,18650,2.9
+93225,5077,44,2585,2492,2080,2.44
+93243,1699,40.9,884,815,623,2.73
+93252,4176,38.4,3301,875,647,2.81
+93510,7993,45.2,4086,3907,2729,2.86
+93523,3074,27,1531,1543,1056,2.91
+93532,2932,41.7,1642,1290,1079,2.45
+93534,39341,31.1,18601,20740,14038,2.74
+93535,72046,28.3,34879,37167,20672,3.44
+93536,70918,34.4,37804,33114,20964,3.07
+93543,13033,32.9,6695,6338,3560,3.66
+93544,1259,52.4,689,570,569,2.2
+93550,74929,27.5,36414,38515,20864,3.58
+93551,50798,37,25056,25742,15963,3.18
+93552,38158,28.4,18711,19447,9690,3.93
+93553,2138,43.3,1121,1017,816,2.62
+93560,18910,32.4,9491,9419,6469,2.92
+93563,388,44.5,263,125,103,2.53
+93591,7285,30.9,3653,3632,1982,3.67
diff --git a/python_crash_tutorial/examples/examples/HowTo/csv_ex.py b/python_crash_tutorial/examples/examples/HowTo/csv_ex.py
new file mode 100755
index 0000000..b47837b
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/HowTo/csv_ex.py
@@ -0,0 +1,16 @@
+# csv_ex.py
+
+from csv import reader
+
+def readcsv(filename):
+ with open(filename, newline="") as f:
+ for row in reader(f):
+ process(row)
+
+def process(row):
+ print(row)
+
+def main():
+ readcsv("census.csv")
+
+main()
diff --git a/python_crash_tutorial/examples/examples/InText/.DS_Store b/python_crash_tutorial/examples/examples/InText/.DS_Store
new file mode 100755
index 0000000..5008ddf
Binary files /dev/null and b/python_crash_tutorial/examples/examples/InText/.DS_Store differ
diff --git a/python_crash_tutorial/examples/examples/InText/accum.py b/python_crash_tutorial/examples/examples/InText/accum.py
new file mode 100755
index 0000000..253187e
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/accum.py
@@ -0,0 +1,4 @@
+result = 0
+for i in range(4):
+ result += 1
+ print(i, result)
diff --git a/python_crash_tutorial/examples/examples/InText/dicts.py b/python_crash_tutorial/examples/examples/InText/dicts.py
new file mode 100755
index 0000000..a2ab727
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/dicts.py
@@ -0,0 +1,8 @@
+population = {"Chicago":2.7, "New York":8.17, "Rome":2.87,
+ "Paris":2.24, "London":8.78}
+status = {200:"ok", 404:"not found", 400:"bad request"}
+
+print(status[200])
+print(301 in status)
+population["Rome"] += 0.11
+print(population["Rome"])
diff --git a/python_crash_tutorial/examples/examples/InText/list.py b/python_crash_tutorial/examples/examples/InText/list.py
new file mode 100755
index 0000000..0e797a0
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/list.py
@@ -0,0 +1,16 @@
+# list.py
+# in-text examples
+
+items = [10, 3, -1, 8, 24]
+print(items[1])
+print(items[-1])
+print(items[2:4])
+
+print()
+
+items = [-2, 5, 3, -8, 7]
+items[0] = 10
+print(items)
+items = [-2, 5, 3, -8, 7]
+items[1:3] = [0]
+print(items)
diff --git a/python_crash_tutorial/examples/examples/InText/listaccum.py b/python_crash_tutorial/examples/examples/InText/listaccum.py
new file mode 100755
index 0000000..3903f7b
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/listaccum.py
@@ -0,0 +1,4 @@
+result = []
+for i in range(4):
+ result += [i**2]
+ print(i, result)
diff --git a/python_crash_tutorial/examples/examples/InText/mymin2.py b/python_crash_tutorial/examples/examples/InText/mymin2.py
new file mode 100755
index 0000000..e26601e
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/mymin2.py
@@ -0,0 +1,11 @@
+# mymin2.py using a conditional
+
+def mymin2(x, y):
+ return x if x <= y else y
+
+def main():
+ for i in range(5):
+ for j in range(5):
+ print(i, j, mymin2(i, j), mymin2(i, j) == min(i, j))
+
+main()
diff --git a/python_crash_tutorial/examples/examples/InText/splitjoin.py b/python_crash_tutorial/examples/examples/InText/splitjoin.py
new file mode 100755
index 0000000..15771f1
--- /dev/null
+++ b/python_crash_tutorial/examples/examples/InText/splitjoin.py
@@ -0,0 +1,21 @@
+# splitjoin.py
+
+print('"Hello, world.".split() =', "Hello, world.".split())
+
+print('"123-45---6".split("-") =', "123-45---6".split("-"))
+
+print('" First Last ".split() =', " First Last ".split())
+
+print('"".join(["one", "two", "three"]) =', "".join(["one", "two", "three"]))
+
+print('" ".join(["one", "two", "three"]) =', " ".join(["one", "two", "three"]))
+
+
+print(list("mouse"))
+
+s = "Hello, world?"
+print(s)
+chars = list(s)
+chars[-1] = "!"
+s = "".join(chars)
+print(s)
diff --git a/selenium_examples/ch5/copy_google_dirive_files_firefox.py b/selenium_examples/ch5/copy_google_dirive_files_firefox.py
new file mode 100644
index 0000000..54cff07
--- /dev/null
+++ b/selenium_examples/ch5/copy_google_dirive_files_firefox.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+import time
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+fp = webdriver.FirefoxProfile(r'C:\Users\acer\AppData\Roaming\Mozilla\Firefox\Profiles\ar8m1pr8.default')
+driver = webdriver.Firefox(fp)
+driver.get("https://drive.google.com/")
+driver.implicitly_wait(20)
+driver.maximize_window()
+
+element = driver.find_element_by_class_name("l-u-Ab-zb-Pn-ve")
+ActionChains(driver).context_click(element).send_keys(Keys.DOWN,Keys.DOWN,Keys.DOWN,Keys.DOWN,Keys.DOWN,Keys.DOWN,Keys.ENTER).perform()
+
+input('Press ENTER to close the automated browser')
+driver.quit()
+
diff --git a/selenium_examples/ch5/delete_google_dirive_files.py b/selenium_examples/ch5/delete_google_dirive_files.py
new file mode 100644
index 0000000..7bd0528
--- /dev/null
+++ b/selenium_examples/ch5/delete_google_dirive_files.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+url = "https://drive.google.com"
+fp = webdriver.FirefoxProfile(r'C:\Users\acer\AppData\Local\Mozilla\Firefox\Profiles\ar8m1pr8.default')
+driver = webdriver.Firefox(fp)
+driver.get(url)
+driver.implicitly_wait(30)
+driver.maximize_window()
+element = driver.find_element_by_class_name("a-s-Xc-ag-fa-Te")
+element.click()
+actions = ActionChains(self.driver)
+actions.send_keys(Keys.DELETE)
+actions.perform()
+
+input('Press ENTER to close the automated browser')
+driver.quit()
+
diff --git a/selenium_examples/ch5/delete_google_dirive_files_chrome.py b/selenium_examples/ch5/delete_google_dirive_files_chrome.py
new file mode 100644
index 0000000..7bd0528
--- /dev/null
+++ b/selenium_examples/ch5/delete_google_dirive_files_chrome.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+url = "https://drive.google.com"
+fp = webdriver.FirefoxProfile(r'C:\Users\acer\AppData\Local\Mozilla\Firefox\Profiles\ar8m1pr8.default')
+driver = webdriver.Firefox(fp)
+driver.get(url)
+driver.implicitly_wait(30)
+driver.maximize_window()
+element = driver.find_element_by_class_name("a-s-Xc-ag-fa-Te")
+element.click()
+actions = ActionChains(self.driver)
+actions.send_keys(Keys.DELETE)
+actions.perform()
+
+input('Press ENTER to close the automated browser')
+driver.quit()
+
diff --git a/selenium_examples/ch5/delete_google_dirive_files_firefox.py b/selenium_examples/ch5/delete_google_dirive_files_firefox.py
new file mode 100644
index 0000000..61b051b
--- /dev/null
+++ b/selenium_examples/ch5/delete_google_dirive_files_firefox.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+fp = webdriver.FirefoxProfile(r'C:\Users\acer\AppData\Roaming\Mozilla\Firefox\Profiles\ar8m1pr8.default')
+driver = webdriver.Firefox(fp)
+driver.get("https://drive.google.com")
+driver.implicitly_wait(20)
+driver.maximize_window()
+
+elements = driver.find_elements_by_xpath("//div[3]/span")
+while elements:
+ ActionChains(driver).click(elements[0]).send_keys(Keys.DELETE).perform()
+ elements = driver.find_elements_by_xpath("//div[3]/span")
+
+input('Press ENTER to close the automated browser')
+driver.quit()
+
diff --git a/selenium_examples/ch5/delete_google_drive.py b/selenium_examples/ch5/delete_google_drive.py
new file mode 100755
index 0000000..242c4e6
--- /dev/null
+++ b/selenium_examples/ch5/delete_google_drive.py
@@ -0,0 +1,22 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+fp = webdriver.FirefoxProfile(r'C:\Users\andrew\AppData\Roaming\Mozilla\Firefox\Profiles\0nbcfvc5.default')
+driver = webdriver.Firefox(fp)
+driver.get("https://drive.google.com")
+driver.implicitly_wait(20)
+driver.maximize_window()
+
+elements = driver.find_elements_by_xpath("//div[3]/span")
+while elements:
+ ActionChains(driver).click(elements[0]).send_keys(Keys.DELETE).perform()
+ elements = driver.find_elements_by_xpath("//div[3]/span")
+
+input('Press ENTER to close the automated browser')
+driver.quit()
\ No newline at end of file
diff --git a/selenium_examples/ch5/double_click_test.py b/selenium_examples/ch5/double_click_test.py
new file mode 100755
index 0000000..c8f8427
--- /dev/null
+++ b/selenium_examples/ch5/double_click_test.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-18
+
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+import unittest
+
+
+class DoubleClickTest (unittest.TestCase):
+
+ URL = 'http://api.jquery.com/dblclick/'
+
+ def setUp(self):
+ self.driver = webdriver.Chrome()
+ self.driver.get(self.URL)
+ self.driver.maximize_window()
+
+ def test_double_click(self):
+ driver = self.driver
+ frame = driver.find_element_by_tag_name('iframe')
+ driver.switch_to.frame(frame)
+ box = driver.find_element_by_tag_name('div')
+
+ # verify color is Blue
+ self.assertEqual('rgba(0, 0, 255, 1)',
+ box.value_of_css_property('background-color'))
+
+ ActionChains(driver).move_to_element(
+ driver.find_element_by_tag_name('body')).perform()
+ ActionChains(driver).double_click(box).perform()
+
+ # verify Color is Yellow
+ self.assertEqual('rgba(255, 255, 0, 1)',
+ box.value_of_css_property('background-color'))
+
+ def tearDown(self):
+ self.driver.close()
+
+if __name__ == '__main__':
+ unittest.main(verbosity=2)
diff --git a/selenium_examples/ch5/download_google_dirive_files_firefox.py b/selenium_examples/ch5/download_google_dirive_files_firefox.py
new file mode 100644
index 0000000..3df7796
--- /dev/null
+++ b/selenium_examples/ch5/download_google_dirive_files_firefox.py
@@ -0,0 +1,24 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-20
+import time
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+from selenium.webdriver.common.keys import Keys
+
+fp = webdriver.FirefoxProfile(r'C:\Users\acer\AppData\Roaming\Mozilla\Firefox\Profiles\ar8m1pr8.default')
+driver = webdriver.Firefox(fp)
+driver.get("https://smtebooks.net/book/14870/mastering-python-networking-security-pdf")
+driver.implicitly_wait(20)
+driver.maximize_window()
+
+driver.find_element_by_css_selector(".btn-primary").click()
+time.sleep(18)
+driver.switch_to_window(driver.window_handles[1])
+driver.find_element_by_id("download").click()
+driver.find_element_by_css_selector("i.fa.fa-cloud-download").click()
+
+input('Press ENTER to close the automated browser')
+driver.quit()
+
diff --git a/selenium_examples/ch5/drag_and_drop_test.py b/selenium_examples/ch5/drag_and_drop_test.py
new file mode 100755
index 0000000..9b0455d
--- /dev/null
+++ b/selenium_examples/ch5/drag_and_drop_test.py
@@ -0,0 +1,32 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+# 讨论钉钉免费群21745728 qq群144081101 567351477
+# CreateDate: 2018-10-18
+from selenium import webdriver
+from selenium.webdriver.common.action_chains import ActionChains
+import unittest
+
+
+class DragAndDropTest (unittest.TestCase):
+
+ URL = 'http://jqueryui.com/resources/demos/droppable/default.html'
+
+ def setUp(self) :
+ self.driver = webdriver.Chrome()
+ self.driver.get(self.URL)
+ self.driver.maximize_window()
+
+ def test_drag_and_drop(self):
+ driver = self.driver
+
+ source = driver.find_element_by_id('draggable')
+ target = driver.find_element_by_id('droppable')
+
+ ActionChains(self.driver).drag_and_drop(source, target).perform()
+ self.assertEqual('Dropped!', target.text)
+
+ def tearDown(self):
+ self.driver.close()
+
+if __name__ == '__main__':
+ unittest.main(verbosity=2)
diff --git a/selenium_examples/ch5/geckodriver.log b/selenium_examples/ch5/geckodriver.log
new file mode 100644
index 0000000..a0df779
--- /dev/null
+++ b/selenium_examples/ch5/geckodriver.log
@@ -0,0 +1,2710 @@
+1540006648266 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.yigeY2LcqA3F"
+1540006656672 Marionette INFO Listening on port 50828
+1540006657074 Marionette WARN TLS certificate errors will be ignored for this session
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Parent 6780, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 7756, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 1208, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 1208, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6780, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+[Parent 6780, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 4232, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 4232, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6780, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+1540006746745 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.6hNNg8JmSzwY"
+1540006752599 Marionette INFO Listening on port 50956
+1540006752917 Marionette WARN TLS certificate errors will be ignored for this session
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 7716, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8016, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8016, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Parent 6304, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+[Parent 6304, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 1848, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6304, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540006787194 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.7J7bMETeogBH"
+1540006793080 Marionette INFO Listening on port 51026
+1540006793420 Marionette WARN TLS certificate errors will be ignored for this session
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Parent 8712, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9076, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 6040, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 6040, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8712, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540007044638 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.ufoDt6R3UZbN"
+1540007046852 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007046872 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007046878 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007046878 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007048254 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007048255 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007048257 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007049011 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007050001 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007050364 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007050535 Marionette INFO Listening on port 51200
+1540007050564 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007050567 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007050568 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007050698 Marionette WARN TLS certificate errors will be ignored for this session
+1540007051111 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 5096, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 5096, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7956, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+ion", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007102923 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007102923 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007104350 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007104351 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007104353 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007105089 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007105845 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007106232 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007106367 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007106370 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007106370 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007106655 Marionette INFO Listening on port 51274
+1540007106963 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007107007 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript warning: https://homestatic.ctfile.com/js/jquery.js?v=201807011, line 1: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 3252, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 3252, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+JavaScript error: https://www.ctfile.com//index.php?item=account&action=login&ref=https%3A//home.ctfile.com/%23item-files/action-allfiles, line 173: ReferenceError: $ is not defined
+[Parent 6236, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 6736, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+
+###!!! [Parent][MessageChannel] Error: (msgtype=0x15008D,name=PBrowser::Msg_UpdateNativeWindowHandle) Closed channel: cannot send/recv
+
+
+###!!! [Parent][MessageChannel] Error: (msgtype=0x150080,name=PBrowser::Msg_Destroy) Closed channel: cannot send/recv
+
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150001,name=PBrowser::Msg_AsyncMessage) Channel closing: too late to send/recv, messages will be lost
+
+JavaScript error: chrome://global/content/browser-child.js, line 117: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIMessageSender.sendAsyncMessage]
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x480003,name=PHttpChannel::Msg_UpdateAssociatedContentSecurity) Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x540025,name=PNecko::Msg_RequestContextLoadBegin) Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150031,name=PBrowser::Msg_SetStatus) Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150001,name=PBrowser::Msg_AsyncMessage) Channel closing: too late to send/recv, messages will be lost
+
+JavaScript error: resource://cpmanager-legacy/gesture-dragdrop.js, line 38: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIMessageSender.sendAsyncMessage]
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150001,name=PBrowser::Msg_AsyncMessage) Channel closing: too late to send/recv, messages will be lost
+
+JavaScript error: chrome://global/content/browser-child.js, line 117: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIMessageSender.sendAsyncMessage]
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150001,name=PBrowser::Msg_AsyncMessage) Channel closing: too late to send/recv, messages will be lost
+
+JavaScript error: chrome://global/content/browser-child.js, line 117: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIMessageSender.sendAsyncMessage]
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x150001,name=PBrowser::Msg_AsyncMessage) Closed channel: cannot send/recv
+
+JavaScript error: chrome://global/content/browser-child.js, line 117: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIMessageSender.sendAsyncMessage]
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 7656, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540007253463 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.OwpzWxPHErQZ"
+1540007255623 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007255642 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007255646 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007255647 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007257011 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007257012 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007257014 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007257989 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007258680 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007259025 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007259124 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007259127 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007259127 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007259403 Marionette INFO Listening on port 51395
+1540007259649 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007259703 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript warning: https://homestatic.ctfile.com/js/jquery.js?v=201807011, line 1: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10220, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8396, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8396, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9240, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 3496, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 3496, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540007616156 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.B5w6CUH3NQN2"
+1540007618288 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007618305 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007618310 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007618310 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007619647 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007619648 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007619650 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007620430 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007621124 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007621442 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007621568 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007621570 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007621571 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007621734 Marionette INFO Listening on port 51631
+1540007622046 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007622223 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9796, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 6368, Chrome_ChildThread] WARNING: pipe error: 232: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 513
+[Child 6368, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x48000F,name=PHttpChannel::Msg___delete__) Channel closing: too late to send/recv, messages will be lost
+
+
+###!!! [Child][MessageChannel] Error: (msgtype=0x540027,name=PNecko::Msg_RemoveRequestContext) Channel closing: too late to send/recv, messages will be lost
+
+[Parent 7012, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8384, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8384, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7012, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+1540007707353 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.mCJOvvzAq02V"
+1540007709496 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007709514 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007709520 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007709521 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007710875 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007710876 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007710878 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007711579 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007712282 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007712450 Marionette INFO Listening on port 51718
+1540007712883 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007712907 Marionette WARN TLS certificate errors will be ignored for this session
+1540007713010 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007713013 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007713014 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007713562 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 10088, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9236, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 1188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540007852737 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.FIyceL2JaG1A"
+1540007854866 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007854883 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007854888 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007854888 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007856220 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007856221 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007856223 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540007856956 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540007857819 Marionette INFO Listening on port 51814
+1540007857901 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540007858252 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540007858291 Marionette WARN TLS certificate errors will be ignored for this session
+1540007858371 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540007858375 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540007858375 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540007858933 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/framework/toolbox.js, line 1328: TypeError: currentPanel is undefined
+JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/framework/toolbox.js, line 1328: TypeError: currentPanel is undefined
+JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/framework/toolbox.js, line 1328: TypeError: currentPanel is undefined
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9668, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Handler function NetworkEventActorProxy.addResponseContent threw an exception: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js :: NetworkEventActorProxy.methodFactory/< :: line 1875" data: no]
+Stack: NetworkEventActorProxy.methodFactory/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:1875:5
+exports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14
+_onComplete@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:651:5
+onStreamClose@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:600:7
+onInputStreamReady@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:702:7
+Line: 1875, column: 0
+console.error: "Handler function NetworkEventActorProxy.addResponseContent threw an exception: [Exception... \"Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIMessageSender.sendAsyncMessage]\" nsresult: \"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)\" location: \"JS frame :: resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js :: NetworkEventActorProxy.methodFactory/< :: line 1875\" data: no]\nStack: NetworkEventActorProxy.methodFactory/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:1875:5\nexports.makeInfallible/<@resource://devtools/shared/base-loader.js -> resource://devtools/shared/ThreadSafeDevToolsUtils.js:109:14\n_onComplete@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:651:5\nonStreamClose@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:600:7\nonInputStreamReady@resource://devtools/shared/base-loader.js -> resource://devtools/shared/webconsole/network-monitor.js:702:7\nLine: 1875, column: 0"
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/highlighters/auto-refresh.js, line 201: TypeError: this.win is null
+JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/server/actors/highlighters/auto-refresh.js, line 201: TypeError: this.win is null
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 3304, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 3304, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6496, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9776, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540008189959 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.pXbHDeuCbUMd"
+1540008192116 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008192133 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008192138 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008192138 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008193488 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008193489 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008193491 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008194244 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540008195085 Marionette INFO Listening on port 51954
+1540008195158 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008195521 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540008195553 Marionette WARN TLS certificate errors will be ignored for this session
+1540008195635 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008195638 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008195639 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008196231 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8428, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8428, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8540, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8652, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9652, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9652, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540008315050 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.1V6NCRvhdTV9"
+1540008317183 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008317200 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008317205 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008317205 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008318546 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008318547 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008318549 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008319258 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540008320123 Marionette INFO Listening on port 52052
+1540008320199 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008320560 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540008320584 Marionette WARN TLS certificate errors will be ignored for this session
+1540008320669 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008320673 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008320674 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008321240 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540008373273 Marionette DEBUG Register listener.js for window 6442450957
+1540008373275 Marionette ERROR No reply from Marionette:Register
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: chrome://marionette/content/listener.js, line 464: TypeError: reply[0] is undefined
+[Child 8924, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8924, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 5840, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9184, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9184, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540008719596 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.iiAkmVEdEr4F"
+1540008721775 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008721795 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008721803 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008721803 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008723140 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008723142 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008723143 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008723899 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540008724773 Marionette INFO Listening on port 52241
+1540008724857 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008725230 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540008725256 Marionette WARN TLS certificate errors will be ignored for this session
+1540008725335 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008725339 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008725339 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008725923 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 7016, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: file z:/build/build/src/ipc/chromium/src/base/process_util_win.cc, line 188
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 7068, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9560, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540008847681 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.R3Kn6wYvYh91"
+1540008849834 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008849853 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008849857 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008849857 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008851206 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008851207 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008851209 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008851918 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540008852763 Marionette INFO Listening on port 52334
+1540008852832 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008853181 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540008853210 Marionette WARN TLS certificate errors will be ignored for this session
+1540008853290 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008853293 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008853294 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008853929 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8948, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8948, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 6956, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9048, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9048, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540008987958 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.bZOjje4dyYJg"
+1540008990140 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008990159 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008990164 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008990164 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008991504 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008991505 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008991507 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540008992203 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540008992905 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540008993310 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540008993489 Marionette INFO Listening on port 52424
+1540008993562 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540008993565 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540008993565 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540008993587 Marionette WARN TLS certificate errors will be ignored for this session
+1540008994143 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9700, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 2576, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 2576, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 5380, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540009053369 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.oSfY4XbB8AHB"
+1540009055542 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009055560 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009055565 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009055565 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009056998 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009056999 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009057002 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009057790 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540009058689 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009059027 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540009059214 Marionette INFO Listening on port 52506
+1540009059246 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009059249 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009059249 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009059438 Marionette WARN TLS certificate errors will be ignored for this session
+1540009059719 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8264, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8264, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8960, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8960, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 8768, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 5756, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 5756, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540009442767 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.OSsBGsmYGm33"
+1540009445354 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009445373 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009445377 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009445378 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009446824 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009446825 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009446827 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009447586 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540009448460 Marionette INFO Listening on port 52708
+1540009448576 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009448607 Marionette WARN TLS certificate errors will be ignored for this session
+1540009448932 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540009449068 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009449071 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009449071 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009449615 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9612, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9612, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8436, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8436, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 10232, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9644, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540009532950 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.v7cVGwZowy4S"
+1540009535165 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009535184 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009535189 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009535189 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009536541 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009536542 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009536544 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009537376 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540009538173 Marionette INFO Listening on port 52795
+1540009538263 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009538629 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540009538657 Marionette WARN TLS certificate errors will be ignored for this session
+1540009538743 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009538747 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009538747 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009539305 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9456, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540009598447 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.HQ2zVSltf2l8"
+1540009600674 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009600692 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009600697 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009600697 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009602221 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009602222 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009602224 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540009602959 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540009603649 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540009603810 Marionette INFO Listening on port 52878
+1540009604222 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540009604243 Marionette WARN TLS certificate errors will be ignored for this session
+1540009604355 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540009604358 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540009604359 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540009604953 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9812, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 10096, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9368, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540010852484 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.yAGt4dOx2Zep"
+1540010854647 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540010854668 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540010854673 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540010854674 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540010856125 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540010856126 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540010856128 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540010856948 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540010857658 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540010857821 Marionette INFO Listening on port 53186
+1540010858226 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540010858259 Marionette WARN TLS certificate errors will be ignored for this session
+1540010858343 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540010858346 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540010858347 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540010858949 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9292, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9292, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 7920, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 5164, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 5164, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540011004983 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.KyMxc2JT94DP"
+1540011007191 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011007210 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011007215 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011007216 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011008552 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011008553 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011008555 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011009305 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540011009985 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011010358 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011010466 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011010469 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011010469 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011010752 Marionette INFO Listening on port 53288
+1540011011006 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011011267 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript warning: https://homestatic.ctfile.com/js/jquery.js?v=201807011, line 1: Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8200, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 8200, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9720, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9720, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9500, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9052, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 9052, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+1540011440153 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.GcAF4rE63g9q"
+1540011442290 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011442308 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011442313 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011442313 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011443663 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011443664 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011443666 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011444412 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540011445111 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011445500 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011445688 Marionette INFO Listening on port 53599
+1540011445755 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011445758 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011445758 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011446226 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011446314 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9700, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9576, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 6348, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Child 6348, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540011498439 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.y3UZjPcO0me9"
+1540011500587 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011500604 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011500609 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011500610 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011501979 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011501980 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011501982 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540011502856 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540011503588 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540011503969 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011504198 Marionette INFO Listening on port 53680
+1540011504266 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540011504269 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540011504269 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540011504754 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540011504778 Marionette WARN TLS certificate errors will be ignored for this session
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 9660, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+[Parent 9860, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+[Child 8476, Chrome_ChildThread] WARNING: pipe error: 232: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 513
+[Child 8476, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
+
+###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
+
+*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping
+1540018182398 mozrunner::runner INFO Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\acer\\AppData\\Local\\Temp\\rust_mozprofile.kznqp4nkPn7r"
+1540018186054 addons.webextension.oscoboteam@gmail.com WARN Loading extension 'oscoboteam@gmail.com': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540018186072 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of [""], must either [match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], or match the pattern /^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/]
+1540018186078 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing version_name: An unexpected property was found in the WebExtension manifest.
+1540018186078 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Loading extension '{a6fd85ed-e919-4a43-a5af-8da18bda539f}': Reading manifest: Error processing externally_connectable: An unexpected property was found in the WebExtension manifest.
+1540018188183 addons.webextension.{a6fd85ed-e919-4a43-a5af-8da18bda539f} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540018188184 addons.webextension.foxyproxy-basic@eric.h.jung WARN Please specify whether you want browser_style or not in your browser_action options.
+1540018188186 addons.webextension.{b9db16a4-6edc-47ec-a1f4-b86292ed211d} WARN Please specify whether you want browser_style or not in your browser_action options.
+1540018188978 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+Unable to read VR Path Registry from C:\Users\acer\AppData\Local\openvr\openvrpaths.vrpath
+JavaScript error: jar:file:///C:/Program%20Files/Mozilla%20Firefox/omni.ja!/components/nsSearchService.js, line 233: NS_ERROR_FILE_ALREADY_EXISTS: An engine with that name already exists!
+1540018190084 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing chrome_settings_overrides.search_provider.encoding: An unexpected property was found in the WebExtension manifest.
+1540018190445 addons.xpi WARN Please specify whether you want browser_style or not in your options_ui options.
+1540018190532 addons.webextension. WARN Loading extension 'null': Reading manifest: Error processing permissions.8: Value "debugger" must either: must either [must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], be one of ["bookmarks"], be one of ["find"], be one of ["history"], be one of ["activeTab", "tabs", "tabHide"], be one of ["browserSettings"], be one of ["cookies"], be one of ["downloads", "downloads.open"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "mozillaAddons", "storage", "unlimitedStorage"], be one of ["browsingData"], be one of ["devtools"], be one of ["identity"], be one of ["menus", "contextMenus"], be one of ["pkcs11"], be one of ["geckoProfiler"], be one of ["sessions"], be one of ["contextualIdentities"], be one of ["dns"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/], or must either [be one of ["