celluloid/celluloid

View on GitHub
documentation/ClassDiagram.drawio

Summary

Maintainability
Test Coverage
<mxfile host="Electron" modified="2020-06-13T11:27:43.183Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/13.2.2 Chrome/83.0.4103.100 Electron/9.0.3 Safari/537.36" etag="qIloPXhPlVqOcsbMDMWD" version="13.2.2" type="device" pages="2"><diagram id="C5RBs43oDa-KdzZeNtuy" name="class_diagram">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</diagram><diagram id="RXd4SlnCjtOEu4EpKMUA" name="exceptions">7Zpdc9o4FIZ/DZfd8Qcy5hJC0jZtkzQw22XvhCWMFmNRIQfor6+EZbAlJyRZEovZnclkpGN94EfvkY5ktfyLxeYjg8vZN4pw0vIctGn5g5bnhUEo/kvDNjcAv5sbYkZQbnIPhiH5hZXRUdaMILyqFOSUJpwsq8aIpimOeMUGGaPrarEpTaq9LmGMDcMwgolp/UEQn6nXAs7B/gmTeFb07DrqyQIWhZVhNYOIrksm/7LlXzBKeZ5abC5wItkVXMJk8/f3gF6jP4ef158uP0S/nOsPeWNXL6myfwWGU37apv286QeYZIqXrJUlVNTygkT01p8wkYplSmHg24KtILKUSTkomIkSU5ryoXruivxqCSOSxiO6lAZHWDicFMPQVvk9fredG+7oinBCU2FK8FT2POOLRDUZM4iI4HBBEyq6HKQ0Fb31YULiUoUHzDgRIugpM5e/oP9Mjoq3bANvSipSXD9iusCcbUUR9bRQyLYq/XVJb0WRWUlrnUKEUGk83rd8GEeRUENZP6x+tzeef/k5vkGdr4sffefqZtxXSigP65DDFEGGLoVLMWMgn883Eo92Q/1WLPf+p2B2TJiuWwPzzVh6BsuzY+gGTUM05xmDH05RT873IjdJaDQXfIRJLShukGeviOx34FTnBLwh/C9p/gOo3FgVkunBppzZFplUvFepksyOi/Zk5lBtlyvqvWzMVjRjET6uLg5ZjPlxj8aostqZCiiPcDHqDCeQk4fqglg3xKq5O0rEu+3V5Lc1NYWaSvKXVLXKK5DWENBlqTeUUzAa2ilu/46vF2FoiPA+SzlZYOsdOvAsmxS7BsrPEgHLlruF+4xQNj83uuZq/YzY6785XXafOV2GzU2XYXCi6dJ1dKm+83zpuoYwR2K2RLcZt9nDO9oy43Ub93Azhhxy4Zq9aKczi1nqkaTX/GxphpI3lNtP0vOtI9l+hCRl1gdEGkzfaxwmMGAOMETnQdPtWIczqNPmCK7m1sPsaizDxll2aqV5FjANR2+eprmLlCRHmC1ICjlGNuMEwLrQyNxJ7nCKOJOeV5jZvDSLWbt8mk9TtDtLt97TXW3b1AaN4zS3P70JZdx6lL51JM39z2jGxBr0FcO5zSS90DqU5vbnCkOeMZHpib97/DMjTH5w3eWyCUmz1S27FqmtzaS1hQl4wADt1X1DA+CtQJu7o+OgbSasa9kCxOae6QnE1kvY1b6TgJrg6p0Bm7soA+C/OUd+5Znwa86fXzZoR8+Riyj+6EGyCk+bOEhuazvJvXZeepAc6FG/3tAj58hCF3BbKraUBVaP/+DAAdV+Aufp39V5srxI5L/gpIfavhkkn9QnzvfbSnHcb7NPGFIG3Vf6hHbktb+0c2Kf6IBz8AkzPv9/nagcTxz1icJ5bLig4Z3qgobR0Ok+OI6+929v1+4/IHJHX+67Iha8m9dcW/sGSTKhG3leaSiypDAjxpsKIRZxYMvzp2GEo0jYV5zROS49mYRAburebWMTvOfVjVrIpq8ryMNZxhFdP3l7w2LQ+keMtyQtsod7v7n6D5en/cvf</diagram></mxfile>