��#� �B�o�o�k�s�t�o�r�e� �M�a�n�a�g�e�m�e�n�t� �A�P�I�
�
�
�
�#�#� �I�n�t�r�o�d�u�c�t�i�o�n�
�
�
�
�T�h�e� �B�o�o�k�s�t�o�r�e� �M�a�n�a�g�e�m�e�n�t� �A�P�I� �i�s� �a� �r�o�b�u�s�t� �b�a�c�k�e�n�d� �s�e�r�v�i�c�e� �b�u�i�l�t� �w�i�t�h� �G�o�,� �G�i�n�,� �a�n�d� �P�o�s�t�g�r�e�S�Q�L�.� �I�t� �p�r�o�v�i�d�e�s� �c�o�m�p�r�e�h�e�n�s�i�v�e� �f�u�n�c�t�i�o�n�a�l�i�t�i�e�s� �t�o� �m�a�n�a�g�e� �a� �b�o�o�k�s�t�o�r�e�,� �i�n�c�l�u�d�i�n�g� �c�r�e�a�t�i�n�g�,� �r�e�a�d�i�n�g�,� �u�p�d�a�t�i�n�g�,� �a�n�d� �d�e�l�e�t�i�n�g� �b�o�o�k� �r�e�c�o�r�d�s�.� �T�h�i�s� �p�r�o�j�e�c�t� �i�s� �d�e�s�i�g�n�e�d� �t�o� �b�e� �s�c�a�l�a�b�l�e�,� �m�a�i�n�t�a�i�n�a�b�l�e�,� �a�n�d� �e�a�s�i�l�y� �d�e�p�l�o�y�a�b�l�e� �u�s�i�n�g� �D�o�c�k�e�r�.�
�
�
�
�#�#� �P�r�o�j�e�c�t� �S�t�r�u�c�t�u�r�e�
�
�
�
��
��p�l�a�i�n�t�e�x�t� � � �%�%�% �c�m�d� � � �% �%�%�% �m�a�i�n�.�g�o� � � �% �%�%�% �m�i�g�r�a�t�e�.�g�o� � � �%�%�% �p�k�g� � � �% �%�%�% �c�o�n�f�i�g� � � �% �%�%�% �c�o�n�t�r�o�l�l�e�r�s� � � �% �%�%�% �d�a�t�a�b�a�s�e� � � �% �%�%�% �r�o�u�t�e�s� � � �%�%�% �t�e�s�t�s� � � �%�%�% �D�o�c�k�e�r�f�i�l�e� � � �%�%�% �d�o�c�k�e�r�-�c�o�m�p�o�s�e�.�y�m�l� � � �%�%�% �g�o�.�m�o�d� � � �%�%�% �R�E�A�D�M�E�.�m�d� � �
��
�
�
�
�
�#�#�#� �D�i�r�e�c�t�o�r�y� �B�r�e�a�k�d�o�w�n�
�
�
�
�#�#�#�#� ��c�m�d�
�
�
�
�
�C�o�n�t�a�i�n�s� �t�h�e� �e�n�t�r�y� �p�o�i�n�t�s� �f�o�r� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n�.�
�
�
�
�-� ����m�a�i�n�.�g�o�
���:� �I�n�i�t�i�a�l�i�z�e�s� �c�o�n�f�i�g�u�r�a�t�i�o�n�s�,� �s�e�t�s� �u�p� �t�h�e� �G�i�n� �r�o�u�t�e�r�,� �r�e�g�i�s�t�e�r�s� �r�o�u�t�e�s�,� �a�n�d� �s�t�a�r�t�s� �t�h�e� �s�e�r�v�e�r�.�
�
�-� ����m�i�g�r�a�t�e�.�g�o�
���:� �H�a�n�d�l�e�s� �d�a�t�a�b�a�s�e� �m�i�g�r�a�t�i�o�n�s� �t�o� �e�n�s�u�r�e� �t�h�e� �d�a�t�a�b�a�s�e� �s�c�h�e�m�a� �i�s� �u�p�-�t�o�-�d�a�t�e�.�
�
�
�
�#�#�#�#� ��p�k�g�
�
�
�
�
�H�o�u�s�e�s� �t�h�e� �c�o�r�e� �p�a�c�k�a�g�e�s� �o�f� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n�,� �e�a�c�h� �r�e�s�p�o�n�s�i�b�l�e� �f�o�r� �a� �s�p�e�c�i�f�i�c� �f�u�n�c�t�i�o�n�a�l�i�t�y�.�
�
�
�
�-� ����c�o�n�f�i�g�
���:� �M�a�n�a�g�e�s� �a�p�p�l�i�c�a�t�i�o�n� �a�n�d� �d�a�t�a�b�a�s�e� �c�o�n�f�i�g�u�r�a�t�i�o�n�s�.� �I�t� �i�n�i�t�i�a�l�i�z�e�s� �c�o�n�f�i�g�u�r�a�t�i�o�n�s� �f�r�o�m� �e�n�v�i�r�o�n�m�e�n�t� �v�a�r�i�a�b�l�e�s� �a�n�d� �e�s�t�a�b�l�i�s�h�e�s� �d�a�t�a�b�a�s�e� �c�o�n�n�e�c�t�i�o�n�s�.�
�
� � �
�
�-� ����c�o�n�t�r�o�l�l�e�r�s�
���:� �C�o�n�t�a�i�n�s� �c�o�n�t�r�o�l�l�e�r� �s�t�r�u�c�t�s� �a�n�d� �m�e�t�h�o�d�s� �t�h�a�t� �h�a�n�d�l�e� �H�T�T�P� �r�e�q�u�e�s�t�s� �a�n�d� �r�e�s�p�o�n�s�e�s�.� �C�o�n�t�r�o�l�l�e�r�s� �i�n�t�e�r�a�c�t� �w�i�t�h� �s�e�r�v�i�c�e�s� �t�o� �p�e�r�f�o�r�m� �b�u�s�i�n�e�s�s� �l�o�g�i�c�.�
�
� � �
�
�-� ����d�a�t�a�b�a�s�e�
���:� �I�n�c�l�u�d�e�s� �s�e�r�v�i�c�e�s� �t�h�a�t� �i�n�t�e�r�a�c�t� �d�i�r�e�c�t�l�y� �w�i�t�h� �t�h�e� �d�a�t�a�b�a�s�e�.� �I�t� �c�o�n�t�a�i�n�s� �t�h�e� �b�u�s�i�n�e�s�s� �l�o�g�i�c� �f�o�r� �C�R�U�D� �o�p�e�r�a�t�i�o�n�s� �o�n� �b�o�o�k� �r�e�c�o�r�d�s�.�
�
� � �
�
�-� ����r�o�u�t�e�s�
���:� �D�e�f�i�n�e�s� �a�n�d� �r�e�g�i�s�t�e�r�s� �A�P�I� �r�o�u�t�e�s�.� �I�t� �g�r�o�u�p�s� �r�e�l�a�t�e�d� �e�n�d�p�o�i�n�t�s� �a�n�d� �a�s�s�o�c�i�a�t�e�s� �t�h�e�m� �w�i�t�h� �t�h�e�i�r� �r�e�s�p�e�c�t�i�v�e� �c�o�n�t�r�o�l�l�e�r�s�.�
�
�
�
�#�#�#�#� ��t�e�s�t�s�
�
�
�
�
�I�n�c�l�u�d�e�s� �a�l�l� �t�e�s�t� �f�i�l�e�s� �a�n�d� �t�e�s�t�-�r�e�l�a�t�e�d� �r�e�s�o�u�r�c�e�s�.� �T�h�i�s� �d�i�r�e�c�t�o�r�y� �e�n�s�u�r�e�s� �t�h�a�t� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n� �b�e�h�a�v�e�s� �a�s� �e�x�p�e�c�t�e�d� �t�h�r�o�u�g�h� �u�n�i�t� �a�n�d� �i�n�t�e�g�r�a�t�i�o�n� �t�e�s�t�s�.�
�
�
�
�#�#�#�#� ��D�o�c�k�e�r�f�i�l�e�
�
�
�
�
�D�e�f�i�n�e�s� �t�h�e� �D�o�c�k�e�r� �i�m�a�g�e� �c�o�n�f�i�g�u�r�a�t�i�o�n� �f�o�r� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n�.� �I�t� �s�p�e�c�i�f�i�e�s� �t�h�e� �b�a�s�e� �i�m�a�g�e�,� �c�o�p�i�e�s� �t�h�e� �n�e�c�e�s�s�a�r�y� �f�i�l�e�s�,� �i�n�s�t�a�l�l�s� �d�e�p�e�n�d�e�n�c�i�e�s�,� �a�n�d� �s�e�t�s� �t�h�e� �e�n�t�r�y� �p�o�i�n�t� �f�o�r� �t�h�e� �c�o�n�t�a�i�n�e�r�.�
�
�
�
�#�#�#�#� ��d�o�c�k�e�r�-�c�o�m�p�o�s�e�.�y�m�l�
�
�
�
�
�F�a�c�i�l�i�t�a�t�e�s� �m�u�l�t�i�-�c�o�n�t�a�i�n�e�r� �D�o�c�k�e�r� �a�p�p�l�i�c�a�t�i�o�n�s�.� �I�t� �d�e�f�i�n�e�s� �s�e�r�v�i�c�e�s�,� �n�e�t�w�o�r�k�s�,� �a�n�d� �v�o�l�u�m�e�s�,� �e�n�a�b�l�i�n�g� �e�a�s�y� �s�e�t�u�p� �o�f� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n� �a�l�o�n�g� �w�i�t�h� �i�t�s� �d�e�p�e�n�d�e�n�c�i�e�s� �l�i�k�e� �t�h�e� �P�o�s�t�g�r�e�S�Q�L� �d�a�t�a�b�a�s�e�.�
�
�
�
�#�#�#�#� ��g�o�.�m�o�d�
�
�
�
�
�S�p�e�c�i�f�i�e�s� �t�h�e� �m�o�d�u�l�e� �p�a�t�h� �a�n�d� �l�i�s�t�s� �a�l�l� �d�e�p�e�n�d�e�n�c�i�e�s� �r�e�q�u�i�r�e�d� �f�o�r� �t�h�e� �a�p�p�l�i�c�a�t�i�o�n�.� �I�t� �e�n�s�u�r�e�s� �c�o�n�s�i�s�t�e�n�t� �d�e�p�e�n�d�e�n�c�y� �m�a�n�a�g�e�m�e�n�t� �a�n�d� �v�e�r�s�i�o�n�i�n�g�.�
�
�
�
�#�#�#�#� ��R�E�A�D�M�E�.�m�d�
�
�
�
�
�P�r�o�v�i�d�e�s� �c�o�m�p�r�e�h�e�n�s�i�v�e� �d�o�c�u�m�e�n�t�a�t�i�o�n� �o�f� �t�h�e� �p�r�o�j�e�c�t�,� �i�n�c�l�u�d�i�n�g� �s�e�t�u�p� �i�n�s�t�r�u�c�t�i�o�n�s�,� �A�P�I� �e�n�d�p�o�i�n�t�s�,� �a�n�d� �c�o�n�t�r�i�b�u�t�i�o�n� �g�u�i�d�e�l�i�n�e�s�.�
�
�
�
�#�#� �L�i�b�r�a�r�i�e�s� �U�s�e�d�
�
�
�
�#�#�#� �M�a�i�n� �D�e�p�e�n�d�e�n�c�i�e�s�
�
�
�
�-� �[�g�i�n�-�g�o�n�i�c�/�g�i�n�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�g�i�n�-�g�o�n�i�c�/�g�i�n�)� �-� �W�e�b� �f�r�a�m�e�w�o�r�k�
�
�-� �[�l�i�b�/�p�q�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�l�i�b�/�p�q�)� �-� �P�o�s�t�g�r�e�S�Q�L� �d�r�i�v�e�r�
�
�-� �[�j�o�h�o�/�g�o�d�o�t�e�n�v�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�j�o�h�o�/�g�o�d�o�t�e�n�v�)� �-� �E�n�v�i�r�o�n�m�e�n�t� �c�o�n�f�i�g�u�r�a�t�i�o�n�
�
�-� �[�g�i�n�-�c�o�n�t�r�i�b�/�c�o�r�s�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�g�i�n�-�c�o�n�t�r�i�b�/�c�o�r�s�)� �-� �C�O�R�S� �m�i�d�d�l�e�w�a�r�e�
�
�
�
�#�#�#� �T�e�s�t�i�n�g� �D�e�p�e�n�d�e�n�c�i�e�s�
�
�
�
�-� �[�s�t�r�e�t�c�h�r�/�t�e�s�t�i�f�y�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�s�t�r�e�t�c�h�r�/�t�e�s�t�i�f�y�)� �-� �T�e�s�t�i�n�g� �a�s�s�e�r�t�i�o�n�s�
�
�-� �[�D�A�T�A�-�D�O�G�/�g�o�-�s�q�l�m�o�c�k�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�D�A�T�A�-�D�O�G�/�g�o�-�s�q�l�m�o�c�k�)� �-� �S�Q�L� �m�o�c�k�i�n�g�
�
�-� �[�s�t�r�e�t�c�h�r�/�o�b�j�x�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�s�t�r�e�t�c�h�r�/�o�b�j�x�)� �-� �M�o�c�k� �o�b�j�e�c�t� �g�e�n�e�r�a�t�i�o�n�
�
�
�
�#�#� �S�e�t�u�p�
�
�
�
�1�.� ���C�l�o�n�e� �t�h�e� �r�e�p�o�s�i�t�o�r�y���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�i�t� �c�l�o�n�e� �h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�y�o�u�r�u�s�e�r�n�a�m�e�/�g�i�n�-�g�o�-�P�o�s�t�g�r�e�s�S�Q�L�-�B�o�o�k�s�t�o�r�e�-�M�a�n�a�g�e�m�e�n�t�-�A�p�i�.�g�i�t� � � � � � �c�d� �g�i�n�-�g�o�-�P�o�s�t�g�r�e�s�S�Q�L�-�B�o�o�k�s�t�o�r�e�-�M�a�n�a�g�e�m�e�n�t�-�A�p�i� � � � � � �
��
�
�
�
�
�2�.� ���C�o�p�y� �e�n�v�i�r�o�n�m�e�n�t� �v�a�r�i�a�b�l�e�s���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �c�p� �.�e�n�v�.�e�x�a�m�p�l�e� �.�e�n�v� � � � � � �
��
�
�
�
�
� � � � �-� �E�d�i�t� ��.�e�n�v�
� �w�i�t�h� �y�o�u�r� �d�a�t�a�b�a�s�e� �c�r�e�d�e�n�t�i�a�l�s�.�
�
�
�
�#�#� �M�i�g�r�a�t�i�o�n�s�
�
�
�
�#�#�#� �D�e�v�e�l�o�p�m�e�n�t�
�
�
�
�-� ���R�u�n� �M�i�g�r�a�t�i�o�n�s���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�o� �r�u�n� �c�m�d�/�m�i�g�r�a�t�e�.�g�o� � � � � � �
��
�
�
�
�
�#�#�#� �P�r�o�d�u�c�t�i�o�n�
�
�
�
�-� ���U�s�i�n�g� �D�o�c�k�e�r� �C�o�m�p�o�s�e���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �d�o�c�k�e�r�-�c�o�m�p�o�s�e� �u�p� �-�-�b�u�i�l�d� � � � � � �d�o�c�k�e�r�-�c�o�m�p�o�s�e� �e�x�e�c� �a�p�p� �g�o� �r�u�n� �c�m�d�/�m�i�g�r�a�t�e�.�g�o� � � � � � �
��
�
�
�
�
�#�#� �D�o�c�k�e�r�f�i�l�e� �R�u�n�
�
�
�
�-� ���B�u�i�l�d� �a�n�d� �R�u�n� �D�o�c�k�e�r� �C�o�n�t�a�i�n�e�r���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �d�o�c�k�e�r� �b�u�i�l�d� �-�t� �b�o�o�k�s�t�o�r�e�-�a�p�i� �.� � � � � � �d�o�c�k�e�r� �r�u�n� �-�p� �8�0�8�0�:�8�0�8�0� �b�o�o�k�s�t�o�r�e�-�a�p�i� � � � � � �
��
�
�
�
�
�#�#� �R�u�n�n�i�n�g� �T�e�s�t�s�
�
�
�
�-� ���R�u�n� �A�l�l� �T�e�s�t�s���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�o� �t�e�s�t� �.�/�.�.�.� �-�v� � � � � � �
��
�
�
�
�
�-� ���R�u�n� �T�e�s�t�s� �w�i�t�h� �C�o�v�e�r�a�g�e���
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�o� �t�e�s�t� �.�/�.�.�.� �-�c�o�v�e�r�p�r�o�f�i�l�e�=�c�o�v�e�r�a�g�e�.�o�u�t� � � � � � �g�o� �t�o�o�l� �c�o�v�e�r� �-�h�t�m�l�=�c�o�v�e�r�a�g�e�.�o�u�t� � � � � � �
��
�
�
�
�
�#�#� �A�P�I� �E�n�d�p�o�i�n�t�s�
�
�
�
�#�#�#� �G�E�T� �/�b�o�o�k�s�
�
�
�
�-� ���D�e�s�c�r�i�p�t�i�o�n�:��� �R�e�t�r�i�e�v�e� �a� �l�i�s�t� �o�f� �a�l�l� �b�o�o�k�s�.�
�
�-� ���R�e�s�p�o�n�s�e�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �[� � � � � � � � �{� � � � � � � � � � �"�i�d�"�:� �1�,� � � � � � � � � � �"�n�a�m�e�"�:� �"�T�e�s�t� �B�o�o�k�"�,� � � � � � � � � � �"�a�u�t�h�o�r�"�:� �"�T�e�s�t� �A�u�t�h�o�r�"�,� � � � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�T�e�s�t� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � � � �}� � � � � � �]� � � � � � �
��
�
�
�
�
�#�#�#� �G�E�T� �/�b�o�o�k�s�/�:�b�o�o�k�I�D�
�
�
�
�-� ���D�e�s�c�r�i�p�t�i�o�n�:��� �R�e�t�r�i�e�v�e� �a� �s�i�n�g�l�e� �b�o�o�k� �b�y� �i�t�s� �I�D�.�
�
�-� ���R�e�s�p�o�n�s�e�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�i�d�"�:� �1�,� � � � � � � � �"�n�a�m�e�"�:� �"�T�e�s�t� �B�o�o�k�"�,� � � � � � � � �"�a�u�t�h�o�r�"�:� �"�T�e�s�t� �A�u�t�h�o�r�"�,� � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�T�e�s�t� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � �}� � � � � � �
��
�
�
�
�
�#�#�#� �P�O�S�T� �/�b�o�o�k�s�
�
�
�
�-� ���D�e�s�c�r�i�p�t�i�o�n�:��� �C�r�e�a�t�e� �a� �n�e�w� �b�o�o�k�.�
�
�-� ���R�e�q�u�e�s�t�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�n�a�m�e�"�:� �"�N�e�w� �B�o�o�k�"�,� � � � � � � � �"�a�u�t�h�o�r�"�:� �"�N�e�w� �A�u�t�h�o�r�"�,� � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�N�e�w� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � �}� � � � � � �
��
�
�
�
�
�-� ���R�e�s�p�o�n�s�e�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�i�d�"�:� �2�,� � � � � � � � �"�n�a�m�e�"�:� �"�N�e�w� �B�o�o�k�"�,� � � � � � � � �"�a�u�t�h�o�r�"�:� �"�N�e�w� �A�u�t�h�o�r�"�,� � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�N�e�w� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � �}� � � � � � �
��
�
�
�
�
�#�#�#� �P�U�T� �/�b�o�o�k�s�/�:�b�o�o�k�I�D�
�
�
�
�-� ���D�e�s�c�r�i�p�t�i�o�n�:��� �U�p�d�a�t�e� �a�n� �e�x�i�s�t�i�n�g� �b�o�o�k� �b�y� �i�t�s� �I�D�.�
�
�-� ���R�e�q�u�e�s�t�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�n�a�m�e�"�:� �"�U�p�d�a�t�e�d� �B�o�o�k�"�,� � � � � � � � �"�a�u�t�h�o�r�"�:� �"�U�p�d�a�t�e�d� �A�u�t�h�o�r�"�,� � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�U�p�d�a�t�e�d� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � �}� � � � � � �
��
�
�
�
�
�-� ���R�e�s�p�o�n�s�e�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�i�d�"�:� �1�,� � � � � � � � �"�n�a�m�e�"�:� �"�U�p�d�a�t�e�d� �B�o�o�k�"�,� � � � � � � � �"�a�u�t�h�o�r�"�:� �"�U�p�d�a�t�e�d� �A�u�t�h�o�r�"�,� � � � � � � � �"�p�u�b�l�i�c�a�t�i�o�n�"�:� �"�U�p�d�a�t�e�d� �P�u�b�l�i�c�a�t�i�o�n�"� � � � � � �}� � � � � � �
��
�
�
�
�
�#�#�#� �D�E�L�E�T�E� �/�b�o�o�k�s�/�:�b�o�o�k�I�D�
�
�
�
�-� ���D�e�s�c�r�i�p�t�i�o�n�:��� �D�e�l�e�t�e� �a� �b�o�o�k� �b�y� �i�t�s� �I�D�.�
�
�-� ���R�e�s�p�o�n�s�e�:���
�
�
�
� � � � ��
��j�s�o�n� � � � � � �{� � � � � � � � �"�m�e�s�s�a�g�e�"�:� �"�B�o�o�k� �d�e�l�e�t�e�d� �s�u�c�c�e�s�s�f�u�l�l�y�.�"� � � � � � �}� � � � � � �
��
�
�
�
�
�#�#� �H�o�w� �t�o� �C�o�n�t�r�i�b�u�t�e�
�
�
�
�1�.� �F�o�r�k� �t�h�e� �r�e�p�o�s�i�t�o�r�y�.�
�
�2�.� �C�r�e�a�t�e� �a� �n�e�w� �b�r�a�n�c�h�:�
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�i�t� �c�h�e�c�k�o�u�t� �-�b� �f�e�a�t�u�r�e�/�Y�o�u�r�F�e�a�t�u�r�e� � � � � � �
��
�
�
�
�
�3�.� �C�o�m�m�i�t� �y�o�u�r� �c�h�a�n�g�e�s�:�
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�i�t� �c�o�m�m�i�t� �-�m� �"�A�d�d� �Y�o�u�r� �F�e�a�t�u�r�e�"� � � � � � �
��
�
�
�
�
�4�.� �P�u�s�h� �t�o� �t�h�e� �b�r�a�n�c�h�:�
�
�
�
� � � � ��
��b�a�s�h� � � � � � �g�i�t� �p�u�s�h� �o�r�i�g�i�n� �f�e�a�t�u�r�e�/�Y�o�u�r�F�e�a�t�u�r�e� � � � � � �
��
�
�
�
�
�5�.� �O�p�e�n� �a� �p�u�l�l� �r�e�q�u�e�s�t�.�
�
�
�
�#�#� �L�i�c�e�n�s�e�
�
�
�
�T�h�i�s� �p�r�o�j�e�c�t� �i�s� �l�i�c�e�n�s�e�d� �u�n�d�e�r� �t�h�e� �M�I�T� �L�i�c�e�n�s�e�.� �Y�o�u� �a�r�e� �f�r�e�e� �t�o� �u�s�e�,� �m�o�d�i�f�y�,� �a�n�d� �d�i�s�t�r�i�b�u�t�e� �t�h�i�s� �s�o�f�t�w�a�r�e� �f�o�r� �c�o�m�m�e�r�c�i�a�l� �a�n�d� �p�e�r�s�o�n�a�l� �p�u�r�p�o�s�e�s�.�
�
�